From 28157acd2d622d79329a0cfd0c8fd3a5d7b3baeb Mon Sep 17 00:00:00 2001 From: Chet Ramey Date: Wed, 7 Dec 2011 09:05:27 -0500 Subject: [PATCH] commit bash-20060316 snapshot --- CHANGES | 260 +- COMPAT | 21 +- CWRU/CWRU.chlog | 1235 +- CWRU/misc/open-files.c | 4 - MANIFEST | 13 - Makefile.in | 39 +- NEWS | 35 - NOTES | 7 - POSIX | 34 +- README | 10 +- aclocal.m4 | 87 +- array.c | 40 +- array.h | 1 - arrayfunc.c | 74 +- arrayfunc.h | 3 - autom4te-2.53.cache/output.0 | 625 +- autom4te-2.53.cache/requests | 6 +- autom4te-2.53.cache/traces.0 | 1386 +- autom4te.cache/output.0 | 18186 ++++------ autom4te.cache/requests | 38 +- autom4te.cache/traces.0 | 3027 +- bash-20060316/-i | 0 bash-20060316/.DS_Store | Bin 0 -> 24580 bytes bash-20060316/.gdb_history | 1 + bash-20060316/ABOUT-NLS | 625 + bash-20060316/AUTHORS | 458 + bash-20060316/CHANGES | 5287 +++ bash-20060316/COMPAT | 258 + bash-20060316/COPYING | 347 + bash-20060316/CWRU/-i | 0 bash-20060316/CWRU/CWRU.chlog | 13206 +++++++ bash-20060316/CWRU/CWRU.chlog~ | 13200 +++++++ bash-20060316/CWRU/OS-BUGS/att-yacc-bug | 111 + bash-20060316/CWRU/OS-BUGS/bsd-rshd-bug | 46 + bash-20060316/CWRU/OS-BUGS/bsd-tty-driver | 38 + bash-20060316/CWRU/OS-BUGS/hpux-ulimit-bug | 3 + bash-20060316/CWRU/OS-BUGS/isc-posix-bug | 137 + bash-20060316/CWRU/OS-BUGS/next-rlogind-bug | 63 + bash-20060316/CWRU/OS-BUGS/sco-3.2.4-bug | 57 + .../CWRU/OS-BUGS/sequent-fcntl-dup2-bug | 28 + bash-20060316/CWRU/OS-BUGS/sun-yp-bug | 52 + bash-20060316/CWRU/OS-BUGS/ultrix-bugs | 74 + bash-20060316/CWRU/PLATFORMS | 31 + bash-20060316/CWRU/POSIX.NOTES.old | 82 + bash-20060316/CWRU/README | 20 + bash-20060316/CWRU/changelog | 1 + bash-20060316/CWRU/history-syslog.1 | 47 + bash-20060316/CWRU/mh-folder-comp | 449 + bash-20060316/CWRU/misc/bison | 26 + bash-20060316/CWRU/misc/copyright | 17 + bash-20060316/CWRU/misc/errlist.c | 57 + bash-20060316/CWRU/misc/getwd.bsd44.c | 254 + bash-20060316/CWRU/misc/hpux10-dlfcn.h | 63 + bash-20060316/CWRU/misc/iptrt.c | 12 + bash-20060316/CWRU/misc/nofd0.c | 9 + bash-20060316/CWRU/misc/open-files.c | 35 + bash-20060316/CWRU/misc/pcat.c | 239 + bash-20060316/CWRU/misc/pgrp.c | 13 + bash-20060316/CWRU/misc/pid.c | 7 + bash-20060316/CWRU/misc/sigs.c | 47 + bash-20060316/CWRU/misc/sigstat.c | 226 + bash-20060316/CWRU/misc/stderr.c | 12 + bash-20060316/CWRU/misc/test-strtod.c | 33 + .../CWRU/new/execute_cmd.c.lastpipe-first | 3176 ++ .../CWRU/old-changelogs/CHANGES.051093 | 115 + .../CWRU/old-changelogs/CHANGES.071193 | 63 + .../CWRU/old-changelogs/CHANGES.090393 | 140 + .../CWRU/old-changelogs/CWRU.chlog.v10 | 3177 ++ .../CWRU/old-changelogs/CWRU.chlog.v11 | 8400 +++++ .../CWRU/old-changelogs/CWRU.chlog.v12 | 10049 ++++++ .../CWRU/old-changelogs/CWRU.chlog.v2 | 584 + .../CWRU/old-changelogs/CWRU.chlog.v3 | 1119 + .../CWRU/old-changelogs/CWRU.chlog.v4 | 234 + .../CWRU/old-changelogs/CWRU.chlog.v5 | 1492 + .../CWRU/old-changelogs/CWRU.chlog.v6 | 1010 + .../CWRU/old-changelogs/CWRU.chlog.v7 | 671 + .../CWRU/old-changelogs/CWRU.chlog.v8 | 251 + .../CWRU/old-changelogs/CWRU.chlog.v9 | 5062 +++ bash-20060316/CWRU/old-conf/Makefile | 116 + bash-20060316/CWRU/old-conf/Makefile.builtins | 268 + .../CWRU/old-conf/Makefile.documentation | 119 + bash-20060316/CWRU/old-conf/Makefile.lib.glob | 92 + .../CWRU/old-conf/Makefile.lib.malloc | 33 + .../CWRU/old-conf/Makefile.lib.readline | 154 + .../CWRU/old-conf/Makefile.lib.termcap | 64 + .../CWRU/old-conf/Makefile.lib.tilde | 94 + bash-20060316/CWRU/old-conf/config.h | 178 + bash-20060316/CWRU/old-conf/config.h.mini | 191 + bash-20060316/CWRU/old-conf/configure | 8 + bash-20060316/CWRU/old-conf/cpp-Makefile | 1379 + bash-20060316/CWRU/old-conf/machines.h | 2314 ++ bash-20060316/CWRU/old-conf/support/cat-s | 16 + bash-20060316/CWRU/old-conf/support/cppmagic | 51 + .../CWRU/old-conf/support/getcppsyms.c | 427 + bash-20060316/CWRU/old-conf/support/inpath | 19 + .../CWRU/old-conf/support/mkmachtype | 282 + bash-20060316/CWRU/old-conf/support/mksysdefs | 489 + bash-20060316/CWRU/old-conf/support/srcdir | 13 + bash-20060316/CWRU/old/KSH.README | 136 + bash-20060316/CWRU/old/RELEASE.113 | 140 + bash-20060316/CWRU/old/RSH.README | 54 + bash-20060316/CWRU/old/array.doc | 53 + bash-20060316/CWRU/old/fixlib | 87 + bash-20060316/CWRU/old/histctl.def | 110 + bash-20060316/CWRU/old/longsig.c | 50 + bash-20060316/CWRU/old/mklinks | 41 + bash-20060316/CWRU/old/mktarfile | 74 + bash-20060316/CWRU/old/mkversion.c | 305 + bash-20060316/CWRU/old/pagesize.c | 64 + bash-20060316/CWRU/old/pagesize.sh | 20 + bash-20060316/CWRU/old/parse.y.noctlnul | 3163 ++ bash-20060316/CWRU/old/read.def.stdio | 293 + bash-20060316/CWRU/old/set.def.save | 544 + bash-20060316/CWRU/old/subst.c.noctlnul | 5659 +++ bash-20060316/CWRU/posix-parser/Makefile | 14 + bash-20060316/CWRU/posix-parser/aux.c | 231 + bash-20060316/CWRU/posix-parser/command.h | 179 + bash-20060316/CWRU/posix-parser/copy.c | 279 + bash-20060316/CWRU/posix-parser/endian.h | 9 + bash-20060316/CWRU/posix-parser/main.c | 97 + bash-20060316/CWRU/posix-parser/make.c | 596 + bash-20060316/CWRU/posix-parser/parse.y | 1932 ++ bash-20060316/CWRU/posix-parser/shell.h | 71 + .../CWRU/save/unwind_prot.c.sighandling | 294 + bash-20060316/CWRU/save/unwind_prot.h.save | 50 + bash-20060316/CWRU/sh-redir-hack | 15 + bash-20060316/INSTALL | 393 + bash-20060316/MANIFEST | 990 + bash-20060316/MANIFEST.doc | 24 + bash-20060316/Makefile.in | 1457 + bash-20060316/NEWS | 1179 + bash-20060316/NOTES | 333 + bash-20060316/POSIX | 179 + bash-20060316/RBASH | 49 + bash-20060316/README | 90 + bash-20060316/Y2K | 4 + bash-20060316/aclocal.m4 | 3962 +++ bash-20060316/alias.c | 574 + bash-20060316/alias.h | 70 + bash-20060316/array.c | 932 + bash-20060316/array.h | 111 + bash-20060316/arrayfunc.c | 817 + bash-20060316/arrayfunc.h | 55 + bash-20060316/autom4te-2.53.cache/output.0 | 24653 +++++++++++++ bash-20060316/autom4te-2.53.cache/requests | 94 + bash-20060316/autom4te-2.53.cache/traces.0 | 1194 + bash-20060316/autom4te.cache/output.0 | 28494 ++++++++++++++++ bash-20060316/autom4te.cache/requests | 116 + bash-20060316/autom4te.cache/traces.0 | 1821 + bash-20060316/bashansi.h | 41 + bash-20060316/bashhist.c | 823 + bash-20060316/bashhist.h | 65 + bash-20060316/bashintl.h | 48 + bash-20060316/bashjmp.h | 43 + bash-20060316/bashline.c | 3175 ++ bash-20060316/bashline.h | 49 + bash-20060316/bashtypes.h | 38 + bash-20060316/bracecomp.c | 200 + bash-20060316/braces.c | 618 + bash-20060316/builtins.h | 60 + bash-20060316/builtins/-i | 0 bash-20060316/builtins/ChangeLog | 0 bash-20060316/builtins/Makefile.in | 625 + bash-20060316/builtins/alias.def | 229 + bash-20060316/builtins/bashgetopt.c | 175 + bash-20060316/builtins/bashgetopt.h | 39 + bash-20060316/builtins/bind.def | 320 + bash-20060316/builtins/break.def | 132 + bash-20060316/builtins/builtin.def | 80 + bash-20060316/builtins/caller.def | 152 + bash-20060316/builtins/cd.def | 525 + bash-20060316/builtins/colon.def | 57 + bash-20060316/builtins/command.def | 207 + bash-20060316/builtins/common.c | 811 + bash-20060316/builtins/common.h | 163 + bash-20060316/builtins/complete.def | 622 + bash-20060316/builtins/declare.def | 475 + bash-20060316/builtins/echo.def | 183 + bash-20060316/builtins/enable.def | 474 + bash-20060316/builtins/eval.def | 53 + bash-20060316/builtins/evalfile.c | 320 + bash-20060316/builtins/evalstring.c | 353 + bash-20060316/builtins/exec.def | 229 + bash-20060316/builtins/exit.def | 152 + bash-20060316/builtins/fc.def | 631 + bash-20060316/builtins/fg_bg.def | 177 + bash-20060316/builtins/getopt.c | 308 + bash-20060316/builtins/getopt.h | 62 + bash-20060316/builtins/getopts.def | 323 + bash-20060316/builtins/hash.def | 273 + bash-20060316/builtins/help.def | 207 + bash-20060316/builtins/history.def | 415 + bash-20060316/builtins/inlib.def | 76 + bash-20060316/builtins/jobs.def | 280 + bash-20060316/builtins/kill.def | 252 + bash-20060316/builtins/let.def | 128 + bash-20060316/builtins/mkbuiltins.c | 1575 + bash-20060316/builtins/printf.def | 997 + bash-20060316/builtins/psize-posix.c | 15 + bash-20060316/builtins/psize.c | 79 + bash-20060316/builtins/psize.sh | 45 + bash-20060316/builtins/pushd.def | 754 + bash-20060316/builtins/read.def | 779 + bash-20060316/builtins/reserved.def | 203 + bash-20060316/builtins/return.def | 66 + bash-20060316/builtins/set.def | 831 + bash-20060316/builtins/setattr.def | 441 + bash-20060316/builtins/shift.def | 96 + bash-20060316/builtins/shopt.def | 540 + bash-20060316/builtins/source.def | 174 + bash-20060316/builtins/suspend.def | 119 + bash-20060316/builtins/test.def | 146 + bash-20060316/builtins/times.def | 115 + bash-20060316/builtins/trap.def | 268 + bash-20060316/builtins/type.def | 405 + bash-20060316/builtins/ulimit.def | 750 + bash-20060316/builtins/umask.def | 311 + bash-20060316/builtins/wait.def | 177 + bash-20060316/builtins/xkill.def | 249 + bash-20060316/command.h | 346 + bash-20060316/config-bot.h | 181 + bash-20060316/config-top.h | 87 + bash-20060316/config.h.in | 1016 + bash-20060316/configure | 28494 ++++++++++++++++ bash-20060316/configure.debug | 28094 +++++++++++++++ bash-20060316/configure.in | 1109 + bash-20060316/configure.mk | 3 + bash-20060316/conftypes.h | 58 + bash-20060316/copy_cmd.c | 422 + bash-20060316/cross-build/beos-sig.h | 37 + bash-20060316/cross-build/cygwin32.cache | 251 + bash-20060316/cross-build/cygwin32.cache.old | 42 + bash-20060316/cross-build/opennt.cache | 169 + bash-20060316/cross-build/win32sig.h | 256 + bash-20060316/cross-build/x86-beos.cache | 45 + bash-20060316/dispose_cmd.c | 329 + bash-20060316/dispose_cmd.h | 40 + bash-20060316/doc/-i | 0 bash-20060316/doc/.DS_Store | Bin 0 -> 15364 bytes bash-20060316/doc/FAQ | 1806 + bash-20060316/doc/FAQ-2.05a | 1676 + bash-20060316/doc/FAQ-2.05b | 1771 + bash-20060316/doc/FAQ-3.0 | 1788 + bash-20060316/doc/FAQ.orig | 1745 + bash-20060316/doc/FAQ.save | 1745 + bash-20060316/doc/INTRO | 187 + bash-20060316/doc/Makefile | 1 + bash-20060316/doc/Makefile.in | 291 + bash-20060316/doc/README | 36 + bash-20060316/doc/article.ms | 1114 + bash-20060316/doc/article.pdf | Bin 0 -> 131900 bytes bash-20060316/doc/article.ps | 1418 + bash-20060316/doc/article.pt.ps | 1331 + bash-20060316/doc/article.txt | 1111 + bash-20060316/doc/bash.0 | 4885 +++ bash-20060316/doc/bash.1 | 8887 +++++ bash-20060316/doc/bash.1.orig | 8583 +++++ bash-20060316/doc/bash.html | 11544 +++++++ bash-20060316/doc/bash.pdf | Bin 0 -> 657635 bytes bash-20060316/doc/bash.ps | 7463 ++++ bash-20060316/doc/bashbug.0 | 66 + bash-20060316/doc/bashbug.1 | 41 + bash-20060316/doc/bashbug.ps | 251 + bash-20060316/doc/bashman.html | 1 + bash-20060316/doc/bashref.aux | 369 + bash-20060316/doc/bashref.bt | 56 + bash-20060316/doc/bashref.bts | 76 + bash-20060316/doc/bashref.cp | 118 + bash-20060316/doc/bashref.cps | 136 + bash-20060316/doc/bashref.dvi | Bin 0 -> 590960 bytes bash-20060316/doc/bashref.fn | 96 + bash-20060316/doc/bashref.fns | 116 + bash-20060316/doc/bashref.html | 15302 +++++++++ bash-20060316/doc/bashref.info | 9651 ++++++ bash-20060316/doc/bashref.ky | 0 bash-20060316/doc/bashref.log | 385 + bash-20060316/doc/bashref.pdf | Bin 0 -> 540354 bytes bash-20060316/doc/bashref.pg | 0 bash-20060316/doc/bashref.ps | 15278 +++++++++ bash-20060316/doc/bashref.rw | 21 + bash-20060316/doc/bashref.rws | 35 + bash-20060316/doc/bashref.texi | 7422 ++++ bash-20060316/doc/bashref.texi.orig | 7105 ++++ bash-20060316/doc/bashref.toc | 134 + bash-20060316/doc/bashref.tp | 0 bash-20060316/doc/bashref.vr | 116 + bash-20060316/doc/bashref.vrs | 143 + bash-20060316/doc/builtins.0 | 1409 + bash-20060316/doc/builtins.1 | 15 + bash-20060316/doc/builtins.ps | 2383 ++ bash-20060316/doc/faq.headers.mail | 5 + bash-20060316/doc/faq.headers.news | 9 + bash-20060316/doc/faq.headers.news2 | 9 + bash-20060316/doc/faq.mail | 1802 + bash-20060316/doc/faq.news | 1806 + bash-20060316/doc/faq.news2 | 1806 + bash-20060316/doc/faq.version | 9 + bash-20060316/doc/fdl.texi | 452 + bash-20060316/doc/fdl.txt | 397 + bash-20060316/doc/htmlpost.sh | 19 + bash-20060316/doc/infopost.sh | 8 + bash-20060316/doc/mkfaqvers | 8 + bash-20060316/doc/mkinstall | 43 + bash-20060316/doc/mkinstall-tmp | 44 + bash-20060316/doc/mkposix | 25 + bash-20060316/doc/mkrbash | 25 + bash-20060316/doc/newbash.texi | 127 + bash-20060316/doc/old-faq.html | 778 + bash-20060316/doc/oldbash.texi | 9291 +++++ bash-20060316/doc/rbash.0 | 59 + bash-20060316/doc/rbash.1 | 8 + bash-20060316/doc/rbash.ps | 280 + bash-20060316/doc/rose94.pdf | Bin 0 -> 228533 bytes bash-20060316/doc/rose94.ps | 1581 + bash-20060316/doc/texinfo.tex | 1 + bash-20060316/doc/texinfo.tex.20030205 | 6688 ++++ bash-20060316/doc/version.texi | 10 + bash-20060316/error.c | 454 + bash-20060316/error.h | 68 + bash-20060316/eval.c | 275 + bash-20060316/eval.c~ | 275 + bash-20060316/examples/INDEX.html | 822 + bash-20060316/examples/INDEX.txt | 198 + bash-20060316/examples/bashdb/PERMISSION | 27 + bash-20060316/examples/bashdb/README | 3 + bash-20060316/examples/bashdb/bashdb | 581 + bash-20060316/examples/bashdb/bashdb.el | 177 + bash-20060316/examples/bashdb/bashdb.vaughan | 561 + .../examples/complete/bashcc-1.0.1.tar.gz | Bin 0 -> 4609 bytes .../examples/complete/complete-examples | 495 + .../examples/complete/complete-tests | 50 + .../examples/complete/complete.freebsd | 31 + .../examples/complete/complete.gnu-longopt | 43 + .../examples/complete/complete.ianmac | 433 + .../examples/complete/complete2.ianmac | 271 + bash-20060316/examples/functions/array-stuff | 103 + .../examples/functions/array-to-string | 15 + bash-20060316/examples/functions/autoload | 111 + bash-20060316/examples/functions/autoload.v2 | 192 + bash-20060316/examples/functions/autoload.v3 | 125 + bash-20060316/examples/functions/basename | 23 + bash-20060316/examples/functions/basename2 | 43 + bash-20060316/examples/functions/coproc.bash | 108 + .../examples/functions/coshell.README | 53 + bash-20060316/examples/functions/coshell.bash | 127 + bash-20060316/examples/functions/csh-compat | 48 + bash-20060316/examples/functions/dirfuncs | 142 + bash-20060316/examples/functions/dirname | 21 + bash-20060316/examples/functions/emptydir | 28 + bash-20060316/examples/functions/exitstat | 22 + bash-20060316/examples/functions/external | 50 + bash-20060316/examples/functions/fact | 13 + bash-20060316/examples/functions/fstty | 59 + bash-20060316/examples/functions/func | 27 + bash-20060316/examples/functions/gethtml | 35 + bash-20060316/examples/functions/getoptx.bash | 301 + bash-20060316/examples/functions/inetaddr | 60 + bash-20060316/examples/functions/inpath | 14 + bash-20060316/examples/functions/isnum.bash | 52 + bash-20060316/examples/functions/isnum2 | 22 + bash-20060316/examples/functions/isvalidip | 14 + bash-20060316/examples/functions/jdate.bash | 78 + bash-20060316/examples/functions/jj.bash | 12 + bash-20060316/examples/functions/keep | 62 + bash-20060316/examples/functions/ksh-cd | 35 + .../examples/functions/ksh-compat-test | 40 + bash-20060316/examples/functions/kshenv | 228 + bash-20060316/examples/functions/login | 11 + bash-20060316/examples/functions/lowercase | 27 + bash-20060316/examples/functions/manpage | 129 + bash-20060316/examples/functions/mhfold | 16 + bash-20060316/examples/functions/notify.bash | 58 + bash-20060316/examples/functions/pathfuncs | 45 + bash-20060316/examples/functions/recurse | 63 + bash-20060316/examples/functions/repeat2 | 43 + bash-20060316/examples/functions/repeat3 | 12 + bash-20060316/examples/functions/seq | 29 + bash-20060316/examples/functions/seq2 | 37 + bash-20060316/examples/functions/shcat | 7 + bash-20060316/examples/functions/shcat2 | 19 + .../examples/functions/sort-pos-params | 50 + bash-20060316/examples/functions/sqroot | 21 + bash-20060316/examples/functions/substr | 79 + bash-20060316/examples/functions/substr2 | 81 + bash-20060316/examples/functions/term | 35 + bash-20060316/examples/functions/whatis | 52 + bash-20060316/examples/functions/whence | 59 + bash-20060316/examples/functions/which | 44 + bash-20060316/examples/functions/xalias.bash | 22 + bash-20060316/examples/functions/xfind.bash | 52 + bash-20060316/examples/loadables/Makefile.in | 238 + bash-20060316/examples/loadables/README | 66 + bash-20060316/examples/loadables/TODO | 4 + bash-20060316/examples/loadables/basename.c | 108 + bash-20060316/examples/loadables/bsdos.glue.c | 191 + bash-20060316/examples/loadables/cat.c | 100 + bash-20060316/examples/loadables/cut.c | 376 + bash-20060316/examples/loadables/dirname.c | 95 + bash-20060316/examples/loadables/finfo.c | 596 + bash-20060316/examples/loadables/getconf.c | 1488 + bash-20060316/examples/loadables/getconf.h | 214 + bash-20060316/examples/loadables/head.c | 143 + bash-20060316/examples/loadables/hello.c | 61 + bash-20060316/examples/loadables/id.c | 308 + bash-20060316/examples/loadables/ln.c | 205 + bash-20060316/examples/loadables/logname.c | 52 + bash-20060316/examples/loadables/mkdir.c | 216 + bash-20060316/examples/loadables/necho.c | 33 + bash-20060316/examples/loadables/pathchk.c | 358 + .../examples/loadables/perl/Makefile | 1 + .../examples/loadables/perl/Makefile.in | 97 + bash-20060316/examples/loadables/perl/README | 6 + bash-20060316/examples/loadables/perl/bperl.c | 46 + bash-20060316/examples/loadables/perl/iperl.c | 24 + bash-20060316/examples/loadables/print.c | 169 + bash-20060316/examples/loadables/printenv.c | 71 + bash-20060316/examples/loadables/push.c | 95 + bash-20060316/examples/loadables/pushd.def | 611 + bash-20060316/examples/loadables/pushd.inc | 90 + bash-20060316/examples/loadables/realpath.c | 119 + bash-20060316/examples/loadables/rmdir.c | 50 + bash-20060316/examples/loadables/sleep.c | 146 + bash-20060316/examples/loadables/sprintf.c | 514 + bash-20060316/examples/loadables/strftime.c | 105 + bash-20060316/examples/loadables/sync.c | 32 + bash-20060316/examples/loadables/tee.c | 157 + bash-20060316/examples/loadables/template.c | 56 + bash-20060316/examples/loadables/truefalse.c | 45 + bash-20060316/examples/loadables/tty.c | 59 + bash-20060316/examples/loadables/uname.c | 139 + bash-20060316/examples/loadables/unlink.c | 52 + bash-20060316/examples/loadables/whoami.c | 52 + bash-20060316/examples/loadables/xtitle.c | 183 + bash-20060316/examples/misc/aliasconv.bash | 42 + bash-20060316/examples/misc/aliasconv.sh | 42 + bash-20060316/examples/misc/cshtobash | 130 + bash-20060316/examples/misc/suncmd.termcap | 30 + bash-20060316/examples/obashdb/PERMISSION | 27 + bash-20060316/examples/obashdb/README | 12 + bash-20060316/examples/obashdb/bashdb | 33 + bash-20060316/examples/obashdb/bashdb.fns | 237 + bash-20060316/examples/obashdb/bashdb.pre | 37 + bash-20060316/examples/obashdb/bashdb.x | 29 + .../examples/scripts.noah/PERMISSION | 29 + bash-20060316/examples/scripts.noah/README | 26 + bash-20060316/examples/scripts.noah/aref.bash | 44 + .../examples/scripts.noah/bash.sub.bash | 28 + .../examples/scripts.noah/bash_version.bash | 42 + bash-20060316/examples/scripts.noah/meta.bash | 37 + .../examples/scripts.noah/mktmp.bash | 66 + .../examples/scripts.noah/number.bash | 185 + .../examples/scripts.noah/prompt.bash | 40 + .../examples/scripts.noah/remap_keys.bash | 71 + .../examples/scripts.noah/require.bash | 182 + .../examples/scripts.noah/send_mail.bash | 140 + .../examples/scripts.noah/shcat.bash | 49 + .../examples/scripts.noah/source.bash | 63 + .../examples/scripts.noah/string.bash | 226 + bash-20060316/examples/scripts.noah/stty.bash | 64 + .../examples/scripts.noah/y_or_n_p.bash | 78 + bash-20060316/examples/scripts.v2/PERMISSION | 59 + bash-20060316/examples/scripts.v2/README | 37 + bash-20060316/examples/scripts.v2/arc2tarz | 85 + bash-20060316/examples/scripts.v2/bashrand | 76 + .../examples/scripts.v2/cal2day.bash | 49 + bash-20060316/examples/scripts.v2/cdhist.bash | 176 + bash-20060316/examples/scripts.v2/corename | 43 + bash-20060316/examples/scripts.v2/fman | 281 + bash-20060316/examples/scripts.v2/frcp | 288 + bash-20060316/examples/scripts.v2/lowercase | 44 + bash-20060316/examples/scripts.v2/ncp | 187 + bash-20060316/examples/scripts.v2/newext | 64 + bash-20060316/examples/scripts.v2/nmv | 187 + bash-20060316/examples/scripts.v2/pages | 187 + bash-20060316/examples/scripts.v2/pf | 127 + bash-20060316/examples/scripts.v2/pmtop | 25 + bash-20060316/examples/scripts.v2/ren | 585 + bash-20060316/examples/scripts.v2/rename | 122 + bash-20060316/examples/scripts.v2/repeat | 121 + bash-20060316/examples/scripts.v2/shprof | 66 + bash-20060316/examples/scripts.v2/untar | 80 + bash-20060316/examples/scripts.v2/uudec | 45 + bash-20060316/examples/scripts.v2/uuenc | 69 + bash-20060316/examples/scripts.v2/vtree | 137 + bash-20060316/examples/scripts.v2/where | 111 + bash-20060316/examples/scripts/adventure.sh | 553 + .../examples/scripts/adventure.sh.save1 | 549 + bash-20060316/examples/scripts/bcsh.sh | 1254 + bash-20060316/examples/scripts/cat.sh | 12 + bash-20060316/examples/scripts/center | 24 + bash-20060316/examples/scripts/dd-ex.sh | 476 + bash-20060316/examples/scripts/fixfiles.bash | 92 + bash-20060316/examples/scripts/hanoi.bash | 21 + bash-20060316/examples/scripts/inpath | 19 + bash-20060316/examples/scripts/krand.bash | 74 + .../examples/scripts/line-input.bash | 184 + bash-20060316/examples/scripts/nohup.bash | 51 + bash-20060316/examples/scripts/precedence | 75 + .../examples/scripts/randomcard.bash | 18 + bash-20060316/examples/scripts/scrollbar | 25 + bash-20060316/examples/scripts/scrollbar2 | 24 + bash-20060316/examples/scripts/self-repro | 9 + bash-20060316/examples/scripts/showperm.bash | 53 + bash-20060316/examples/scripts/shprompt | 137 + bash-20060316/examples/scripts/spin.bash | 21 + bash-20060316/examples/scripts/timeout | 53 + bash-20060316/examples/scripts/vtree2 | 43 + bash-20060316/examples/scripts/vtree3 | 99 + bash-20060316/examples/scripts/vtree3a | 100 + bash-20060316/examples/scripts/websrv.sh | 230 + bash-20060316/examples/scripts/xterm_title | 27 + bash-20060316/examples/scripts/zprintf | 26 + .../examples/startup-files/Bash_aliases | 63 + .../examples/startup-files/Bash_profile | 18 + .../examples/startup-files/Bashrc.bfox | 70 + bash-20060316/examples/startup-files/README | 21 + .../examples/startup-files/apple/README | 33 + .../examples/startup-files/apple/aliases | 34 + .../startup-files/apple/bash.defaults | 22 + .../examples/startup-files/apple/environment | 24 + .../examples/startup-files/apple/login | 15 + .../examples/startup-files/apple/logout | 10 + bash-20060316/examples/startup-files/apple/rc | 63 + .../examples/startup-files/bash-profile | 39 + bash-20060316/examples/startup-files/bashrc | 132 + bash-20060316/execute_cmd.c | 4091 +++ bash-20060316/execute_cmd.h | 42 + bash-20060316/expr.c | 1348 + bash-20060316/externs.h | 395 + bash-20060316/findcmd.c | 598 + bash-20060316/findcmd.h | 35 + bash-20060316/flags.c | 355 + bash-20060316/flags.h | 79 + bash-20060316/general.c | 1030 + bash-20060316/general.h | 320 + bash-20060316/hashcmd.c | 196 + bash-20060316/hashcmd.h | 43 + bash-20060316/hashlib.c | 442 + bash-20060316/hashlib.h | 92 + bash-20060316/include/ansi_stdlib.h | 54 + bash-20060316/include/chartypes.h | 113 + bash-20060316/include/filecntl.h | 45 + bash-20060316/include/gettext.h | 69 + bash-20060316/include/maxpath.h | 75 + bash-20060316/include/memalloc.h | 62 + bash-20060316/include/memalloc.h.save | 58 + bash-20060316/include/ocache.h | 133 + bash-20060316/include/posixdir.h | 61 + bash-20060316/include/posixjmp.h | 40 + bash-20060316/include/posixstat.h | 142 + bash-20060316/include/posixtime.h | 49 + bash-20060316/include/posixwait.h | 103 + bash-20060316/include/shmbutil.h | 445 + bash-20060316/include/shtty.h | 101 + bash-20060316/include/stdc.h | 88 + bash-20060316/include/systimes.h | 55 + bash-20060316/include/typemax.h | 80 + bash-20060316/include/unionwait.h | 98 + bash-20060316/input.c | 625 + bash-20060316/input.h | 131 + bash-20060316/input.h~ | 131 + bash-20060316/jobs.c | 4068 +++ bash-20060316/jobs.c.diff | 521 + bash-20060316/jobs.h | 236 + bash-20060316/lib/doc-support/Makefile.in | 54 + bash-20060316/lib/doc-support/getopt.c | 731 + bash-20060316/lib/doc-support/getopt.h | 129 + bash-20060316/lib/doc-support/getopt1.c | 176 + bash-20060316/lib/doc-support/texindex.c | 1666 + bash-20060316/lib/glob/ChangeLog | 13 + bash-20060316/lib/glob/Makefile.in | 159 + bash-20060316/lib/glob/collsyms.h | 140 + bash-20060316/lib/glob/doc/Makefile | 5 + bash-20060316/lib/glob/doc/glob.texi | 1 + bash-20060316/lib/glob/glob.c | 891 + bash-20060316/lib/glob/glob.h | 35 + bash-20060316/lib/glob/glob_loop.c | 67 + bash-20060316/lib/glob/ndir.h | 50 + bash-20060316/lib/glob/sm_loop.c | 768 + bash-20060316/lib/glob/smatch.c | 393 + bash-20060316/lib/glob/strmatch.c | 79 + bash-20060316/lib/glob/strmatch.h | 62 + bash-20060316/lib/glob/xmbsrtowcs.c | 250 + bash-20060316/lib/intl/ChangeLog | 4 + bash-20060316/lib/intl/Makefile.in | 465 + bash-20060316/lib/intl/VERSION | 1 + bash-20060316/lib/intl/bindtextdom.c | 374 + bash-20060316/lib/intl/config.charset | 467 + bash-20060316/lib/intl/dcgettext.c | 59 + bash-20060316/lib/intl/dcigettext.c | 1246 + bash-20060316/lib/intl/dcngettext.c | 60 + bash-20060316/lib/intl/dgettext.c | 59 + bash-20060316/lib/intl/dngettext.c | 61 + bash-20060316/lib/intl/eval-plural.h | 114 + bash-20060316/lib/intl/explodename.c | 192 + bash-20060316/lib/intl/finddomain.c | 195 + bash-20060316/lib/intl/gettext.c | 64 + bash-20060316/lib/intl/gettextP.h | 224 + bash-20060316/lib/intl/gmo.h | 148 + bash-20060316/lib/intl/hash-string.h | 59 + bash-20060316/lib/intl/intl-compat.c | 151 + bash-20060316/lib/intl/l10nflist.c | 453 + bash-20060316/lib/intl/libgnuintl.h.in | 309 + bash-20060316/lib/intl/loadinfo.h | 156 + bash-20060316/lib/intl/loadmsgcat.c | 1322 + bash-20060316/lib/intl/localcharset.c | 398 + bash-20060316/lib/intl/localcharset.h | 42 + bash-20060316/lib/intl/locale.alias | 78 + bash-20060316/lib/intl/localealias.c | 419 + bash-20060316/lib/intl/localename.c | 772 + bash-20060316/lib/intl/log.c | 104 + bash-20060316/lib/intl/ngettext.c | 68 + bash-20060316/lib/intl/os2compat.c | 98 + bash-20060316/lib/intl/os2compat.h | 46 + bash-20060316/lib/intl/osdep.c | 24 + bash-20060316/lib/intl/plural-exp.c | 156 + bash-20060316/lib/intl/plural-exp.h | 126 + bash-20060316/lib/intl/plural.c | 1518 + bash-20060316/lib/intl/plural.y | 409 + bash-20060316/lib/intl/ref-add.sin | 31 + bash-20060316/lib/intl/ref-del.sin | 26 + bash-20060316/lib/intl/relocatable.c | 439 + bash-20060316/lib/intl/relocatable.h | 67 + bash-20060316/lib/intl/textdomain.c | 142 + bash-20060316/lib/malloc/Makefile.in | 139 + bash-20060316/lib/malloc/OLD/gmalloc.c | 1486 + bash-20060316/lib/malloc/OLD/ogmalloc.c | 1579 + bash-20060316/lib/malloc/OLD/old-nmalloc.c | 890 + bash-20060316/lib/malloc/OLD/omalloc.c | 759 + bash-20060316/lib/malloc/alloca.c | 482 + bash-20060316/lib/malloc/getpagesize.h | 58 + bash-20060316/lib/malloc/i386-alloca.s | 16 + bash-20060316/lib/malloc/imalloc.h | 168 + bash-20060316/lib/malloc/malloc.c | 1305 + bash-20060316/lib/malloc/memtest.c | 151 + bash-20060316/lib/malloc/mstats.h | 108 + bash-20060316/lib/malloc/shmalloc.h | 68 + bash-20060316/lib/malloc/stats.c | 202 + bash-20060316/lib/malloc/stub.c | 22 + bash-20060316/lib/malloc/table.c | 290 + bash-20060316/lib/malloc/table.h | 103 + bash-20060316/lib/malloc/trace.c | 125 + bash-20060316/lib/malloc/watch.c | 150 + bash-20060316/lib/malloc/watch.h | 39 + bash-20060316/lib/malloc/x386-alloca.s | 63 + bash-20060316/lib/malloc/xleaktrace | 43 + bash-20060316/lib/malloc/xmalloc.c | 94 + .../lib/posixheaders.old/ansi_stdlib.h | 41 + bash-20060316/lib/posixheaders.old/filecntl.h | 45 + bash-20060316/lib/posixheaders.old/memalloc.h | 58 + bash-20060316/lib/posixheaders.old/posixdir.h | 49 + bash-20060316/lib/posixheaders.old/posixjmp.h | 22 + .../lib/posixheaders.old/posixstat.h | 142 + bash-20060316/lib/posixheaders.old/stdc.h | 79 + bash-20060316/lib/readline/-i | 0 bash-20060316/lib/readline/COPYING | 339 + bash-20060316/lib/readline/ChangeLog | 403 + bash-20060316/lib/readline/Makefile.in | 366 + .../lib/readline/NEW/xxx-autocomplete | 39 + bash-20060316/lib/readline/README | 6 + bash-20060316/lib/readline/STANDALONE | 2 + bash-20060316/lib/readline/ansi_stdlib.h | 1 + bash-20060316/lib/readline/bind.c | 2309 ++ bash-20060316/lib/readline/callback.c | 261 + bash-20060316/lib/readline/chardefs.h | 165 + bash-20060316/lib/readline/compat.c | 113 + bash-20060316/lib/readline/complete.c | 2217 ++ bash-20060316/lib/readline/display.c | 2396 ++ bash-20060316/lib/readline/doc/Makefile | 144 + bash-20060316/lib/readline/doc/Makefile.in | 144 + bash-20060316/lib/readline/doc/Makefile.old | 76 + bash-20060316/lib/readline/doc/fdl.texi | 1 + bash-20060316/lib/readline/doc/history.3 | 663 + bash-20060316/lib/readline/doc/history.aux | 66 + bash-20060316/lib/readline/doc/history.bt | 0 bash-20060316/lib/readline/doc/history.cp | 6 + bash-20060316/lib/readline/doc/history.cps | 10 + bash-20060316/lib/readline/doc/history.dvi | Bin 0 -> 79860 bytes bash-20060316/lib/readline/doc/history.fn | 0 bash-20060316/lib/readline/doc/history.html | 2270 ++ bash-20060316/lib/readline/doc/history.info | 1352 + bash-20060316/lib/readline/doc/history.ky | 0 bash-20060316/lib/readline/doc/history.log | 169 + bash-20060316/lib/readline/doc/history.pg | 0 bash-20060316/lib/readline/doc/history.ps | 4746 +++ bash-20060316/lib/readline/doc/history.texi | 104 + bash-20060316/lib/readline/doc/history.toc | 23 + bash-20060316/lib/readline/doc/history.tp | 0 bash-20060316/lib/readline/doc/history.vr | 45 + bash-20060316/lib/readline/doc/history.vrs | 56 + bash-20060316/lib/readline/doc/hstech.texi | 573 + bash-20060316/lib/readline/doc/hsuser.texi | 457 + bash-20060316/lib/readline/doc/readline.3 | 1302 + bash-20060316/lib/readline/doc/readline.dvi | Bin 0 -> 278124 bytes bash-20060316/lib/readline/doc/readline.html | 6720 ++++ bash-20060316/lib/readline/doc/readline.info | 4403 +++ bash-20060316/lib/readline/doc/readline.ps | 9027 +++++ bash-20060316/lib/readline/doc/rlman.aux | 156 + bash-20060316/lib/readline/doc/rlman.bt | 0 bash-20060316/lib/readline/doc/rlman.cp | 12 + bash-20060316/lib/readline/doc/rlman.cps | 22 + bash-20060316/lib/readline/doc/rlman.fn | 272 + bash-20060316/lib/readline/doc/rlman.fns | 291 + bash-20060316/lib/readline/doc/rlman.ky | 0 bash-20060316/lib/readline/doc/rlman.log | 210 + bash-20060316/lib/readline/doc/rlman.pg | 0 bash-20060316/lib/readline/doc/rlman.texi | 101 + bash-20060316/lib/readline/doc/rlman.toc | 53 + bash-20060316/lib/readline/doc/rlman.tp | 0 bash-20060316/lib/readline/doc/rlman.vr | 0 bash-20060316/lib/readline/doc/rltech.texi | 2290 ++ bash-20060316/lib/readline/doc/rluser.texi | 1848 + bash-20060316/lib/readline/doc/rluserman.aux | 72 + bash-20060316/lib/readline/doc/rluserman.bt | 0 bash-20060316/lib/readline/doc/rluserman.cp | 10 + bash-20060316/lib/readline/doc/rluserman.cps | 18 + bash-20060316/lib/readline/doc/rluserman.dvi | Bin 0 -> 92940 bytes bash-20060316/lib/readline/doc/rluserman.fn | 75 + bash-20060316/lib/readline/doc/rluserman.fns | 95 + bash-20060316/lib/readline/doc/rluserman.html | 2798 ++ bash-20060316/lib/readline/doc/rluserman.info | 1747 + bash-20060316/lib/readline/doc/rluserman.ky | 0 bash-20060316/lib/readline/doc/rluserman.log | 195 + bash-20060316/lib/readline/doc/rluserman.pg | 0 bash-20060316/lib/readline/doc/rluserman.ps | 4866 +++ bash-20060316/lib/readline/doc/rluserman.texi | 88 + bash-20060316/lib/readline/doc/rluserman.toc | 25 + bash-20060316/lib/readline/doc/rluserman.tp | 0 bash-20060316/lib/readline/doc/rluserman.vr | 23 + bash-20060316/lib/readline/doc/rluserman.vrs | 35 + bash-20060316/lib/readline/doc/texi2dvi | 1 + bash-20060316/lib/readline/doc/texi2html | 1 + bash-20060316/lib/readline/doc/texinfo.tex | 1 + bash-20060316/lib/readline/doc/version.texi | 10 + bash-20060316/lib/readline/emacs_keymap.c | 873 + bash-20060316/lib/readline/examples/Inputrc | 81 + bash-20060316/lib/readline/examples/Makefile | 44 + .../lib/readline/examples/excallback.c | 188 + bash-20060316/lib/readline/examples/fileman.c | 485 + .../lib/readline/examples/histexamp.c | 124 + .../lib/readline/examples/manexamp.c | 112 + bash-20060316/lib/readline/examples/rl.c | 158 + bash-20060316/lib/readline/examples/rlcat.c | 180 + .../lib/readline/examples/rlptytest.c | 337 + bash-20060316/lib/readline/examples/rltest.c | 93 + bash-20060316/lib/readline/funmap.c | 255 + bash-20060316/lib/readline/histexpand.c | 1593 + bash-20060316/lib/readline/histfile.c | 542 + bash-20060316/lib/readline/histlib.h | 82 + bash-20060316/lib/readline/history.c | 441 + bash-20060316/lib/readline/history.h | 266 + bash-20060316/lib/readline/histsearch.c | 195 + bash-20060316/lib/readline/input.c | 570 + bash-20060316/lib/readline/isearch.c | 666 + bash-20060316/lib/readline/isearch.c.orig | 560 + bash-20060316/lib/readline/keymaps.c | 149 + bash-20060316/lib/readline/keymaps.h | 103 + bash-20060316/lib/readline/kill.c | 693 + bash-20060316/lib/readline/macro.c | 271 + bash-20060316/lib/readline/mbutil.c | 373 + bash-20060316/lib/readline/misc.c | 603 + bash-20060316/lib/readline/nls.c | 252 + bash-20060316/lib/readline/parens.c | 183 + bash-20060316/lib/readline/posixdir.h | 1 + bash-20060316/lib/readline/posixjmp.h | 1 + bash-20060316/lib/readline/posixstat.h | 1 + bash-20060316/lib/readline/readline.c | 1195 + bash-20060316/lib/readline/readline.h | 849 + bash-20060316/lib/readline/rlconf.h | 63 + bash-20060316/lib/readline/rldefs.h | 160 + bash-20060316/lib/readline/rlmbutil.h | 146 + bash-20060316/lib/readline/rlprivate.h | 420 + bash-20060316/lib/readline/rlshell.h | 34 + bash-20060316/lib/readline/rlstdc.h | 45 + bash-20060316/lib/readline/rltty.c | 1034 + bash-20060316/lib/readline/rltty.h | 82 + bash-20060316/lib/readline/rltypedefs.h | 94 + bash-20060316/lib/readline/rlwinsize.h | 57 + bash-20060316/lib/readline/savestring.c | 37 + bash-20060316/lib/readline/search.c | 571 + bash-20060316/lib/readline/shell.c | 208 + bash-20060316/lib/readline/signals.c | 466 + bash-20060316/lib/readline/tcap.h | 60 + bash-20060316/lib/readline/terminal.c | 734 + bash-20060316/lib/readline/text.c | 1637 + bash-20060316/lib/readline/tilde.c | 1 + bash-20060316/lib/readline/tilde.h | 1 + bash-20060316/lib/readline/undo.c | 268 + bash-20060316/lib/readline/util.c | 355 + bash-20060316/lib/readline/vi_keymap.c | 877 + bash-20060316/lib/readline/vi_mode.c | 1748 + bash-20060316/lib/readline/xmalloc.c | 88 + bash-20060316/lib/readline/xmalloc.h | 46 + bash-20060316/lib/sh/Makefile.in | 470 + bash-20060316/lib/sh/clktck.c | 59 + bash-20060316/lib/sh/clock.c | 81 + bash-20060316/lib/sh/eaccess.c | 222 + bash-20060316/lib/sh/fmtullong.c | 29 + bash-20060316/lib/sh/fmtulong.c | 190 + bash-20060316/lib/sh/fmtumax.c | 25 + bash-20060316/lib/sh/getcwd.c | 313 + bash-20060316/lib/sh/getenv.c | 233 + bash-20060316/lib/sh/inet_aton.c | 210 + bash-20060316/lib/sh/itos.c | 72 + bash-20060316/lib/sh/mailstat.c | 159 + bash-20060316/lib/sh/makepath.c | 118 + bash-20060316/lib/sh/memset.c | 26 + bash-20060316/lib/sh/mktime.c | 425 + bash-20060316/lib/sh/netconn.c | 83 + bash-20060316/lib/sh/netopen.c | 340 + bash-20060316/lib/sh/oslib.c | 296 + bash-20060316/lib/sh/pathcanon.c | 234 + bash-20060316/lib/sh/pathphys.c | 296 + bash-20060316/lib/sh/rename.c | 76 + bash-20060316/lib/sh/setlinebuf.c | 63 + bash-20060316/lib/sh/shmatch.c | 121 + bash-20060316/lib/sh/shquote.c | 276 + bash-20060316/lib/sh/shtty.c | 284 + bash-20060316/lib/sh/snprintf.c | 2107 ++ bash-20060316/lib/sh/spell.c | 188 + bash-20060316/lib/sh/strcasecmp.c | 84 + bash-20060316/lib/sh/strerror.c | 74 + bash-20060316/lib/sh/strftime.c | 874 + bash-20060316/lib/sh/strindex.c | 47 + bash-20060316/lib/sh/stringlist.c | 297 + bash-20060316/lib/sh/stringvec.c | 232 + bash-20060316/lib/sh/strnlen.c | 45 + bash-20060316/lib/sh/strpbrk.c | 44 + bash-20060316/lib/sh/strstr.c | 122 + bash-20060316/lib/sh/strtod.c | 197 + bash-20060316/lib/sh/strtoimax.c | 106 + bash-20060316/lib/sh/strtol.c | 258 + bash-20060316/lib/sh/strtoll.c | 26 + bash-20060316/lib/sh/strtoul.c | 26 + bash-20060316/lib/sh/strtoull.c | 27 + bash-20060316/lib/sh/strtoumax.c | 106 + bash-20060316/lib/sh/strtrans.c | 274 + bash-20060316/lib/sh/times.c | 77 + bash-20060316/lib/sh/timeval.c | 145 + bash-20060316/lib/sh/tmpfile.c | 216 + bash-20060316/lib/sh/vprint.c | 85 + bash-20060316/lib/sh/winsize.c | 82 + bash-20060316/lib/sh/xstrchr.c | 78 + bash-20060316/lib/sh/zcatfd.c | 68 + bash-20060316/lib/sh/zread.c | 136 + bash-20060316/lib/sh/zwrite.c | 62 + bash-20060316/lib/termcap/Makefile.in | 91 + bash-20060316/lib/termcap/grot/COPYING | 347 + bash-20060316/lib/termcap/grot/ChangeLog | 137 + bash-20060316/lib/termcap/grot/INSTALL | 176 + bash-20060316/lib/termcap/grot/Makefile.in | 138 + bash-20060316/lib/termcap/grot/NEWS | 20 + bash-20060316/lib/termcap/grot/README | 34 + bash-20060316/lib/termcap/grot/configure | 998 + bash-20060316/lib/termcap/grot/configure.in | 23 + bash-20060316/lib/termcap/grot/termcap.info | 80 + bash-20060316/lib/termcap/grot/termcap.info-1 | 1114 + bash-20060316/lib/termcap/grot/termcap.info-2 | 974 + bash-20060316/lib/termcap/grot/termcap.info-3 | 1480 + bash-20060316/lib/termcap/grot/termcap.info-4 | 220 + bash-20060316/lib/termcap/grot/termcap.src | 9888 ++++++ bash-20060316/lib/termcap/grot/termcap.texi | 3617 ++ bash-20060316/lib/termcap/grot/texinfo.tex | 4422 +++ bash-20060316/lib/termcap/ltcap.h | 29 + bash-20060316/lib/termcap/termcap.c | 800 + bash-20060316/lib/termcap/termcap.h | 62 + bash-20060316/lib/termcap/tparam.c | 334 + bash-20060316/lib/termcap/version.c | 18 + bash-20060316/lib/tilde/ChangeLog | 6 + bash-20060316/lib/tilde/Makefile.in | 127 + bash-20060316/lib/tilde/README | 5 + bash-20060316/lib/tilde/doc/Makefile | 5 + bash-20060316/lib/tilde/doc/tilde.texi | 0 bash-20060316/lib/tilde/shell.c | 70 + bash-20060316/lib/tilde/tilde.c | 502 + bash-20060316/lib/tilde/tilde.h | 81 + bash-20060316/list.c | 137 + bash-20060316/locale.c | 496 + bash-20060316/mailcheck.c | 438 + bash-20060316/mailcheck.h | 33 + bash-20060316/make_cmd.c | 852 + bash-20060316/make_cmd.h | 69 + bash-20060316/mksyntax.c | 396 + bash-20060316/nojobs.c | 928 + bash-20060316/parse.y | 4947 +++ bash-20060316/parse.y.save26 | 4927 +++ bash-20060316/parse.y~ | 4947 +++ bash-20060316/parser.h | 41 + bash-20060316/patchlevel.h | 30 + bash-20060316/pathexp.c | 438 + bash-20060316/pathexp.h | 99 + bash-20060316/pathnames.h.in | 33 + bash-20060316/pcomplete.c | 1394 + bash-20060316/pcomplete.h | 153 + bash-20060316/pcomplib.c | 225 + bash-20060316/po/LINGUAS | 2 + bash-20060316/po/Makefile.in.in | 356 + bash-20060316/po/Makevars | 41 + bash-20060316/po/Makevars.template | 41 + bash-20060316/po/POTFILES.in | 76 + bash-20060316/po/README | 1 + bash-20060316/po/Rules-builtins | 19 + bash-20060316/po/Rules-quot | 42 + bash-20060316/po/bash.pot | 2568 ++ bash-20060316/po/boldquot.sed | 10 + bash-20060316/po/en@boldquot.gmo | Bin 0 -> 118280 bytes bash-20060316/po/en@boldquot.header | 25 + bash-20060316/po/en@boldquot.po | 3460 ++ bash-20060316/po/en@quot.gmo | Bin 0 -> 116592 bytes bash-20060316/po/en@quot.header | 22 + bash-20060316/po/en@quot.po | 3406 ++ bash-20060316/po/insert-header.sin | 23 + bash-20060316/po/quot.sed | 6 + bash-20060316/po/readline.po | 177 + bash-20060316/po/remove-potcdate.sin | 19 + bash-20060316/po/ru.po | 2560 ++ bash-20060316/print_cmd.c | 1307 + bash-20060316/quit.h | 53 + bash-20060316/redir.c | 1085 + bash-20060316/redir.h | 38 + bash-20060316/shell.c | 1794 + bash-20060316/shell.h | 163 + bash-20060316/sig.c | 595 + bash-20060316/sig.h | 136 + bash-20060316/siglist.c | 228 + bash-20060316/siglist.h | 44 + bash-20060316/stringlib.c | 284 + bash-20060316/subst.c | 8095 +++++ bash-20060316/subst.h | 263 + bash-20060316/support/Makefile.in | 89 + bash-20060316/support/SYMLINKS | 17 + bash-20060316/support/bash.icon.ps | 93 + bash-20060316/support/bash.install | 32 + bash-20060316/support/bash.xbm | 59 + bash-20060316/support/bash.xv | 35 + bash-20060316/support/bashbug.sh | 272 + bash-20060316/support/bashversion.c | 145 + bash-20060316/support/config.guess | 1403 + bash-20060316/support/config.rpath | 548 + bash-20060316/support/config.sub | 1470 + bash-20060316/support/deblank.sh | 2 + bash-20060316/support/endian.c | 150 + bash-20060316/support/fixlinks | 89 + bash-20060316/support/install.sh | 247 + bash-20060316/support/mail-shell | 126 + bash-20060316/support/man2html.c | 4073 +++ bash-20060316/support/memtest.c | 151 + bash-20060316/support/missing | 188 + bash-20060316/support/mk-takehome | 31 + bash-20060316/support/mkclone | 123 + bash-20060316/support/mkconffiles | 80 + bash-20060316/support/mkdep | 102 + bash-20060316/support/mkdirs | 48 + bash-20060316/support/mkdist | 120 + bash-20060316/support/mkdocdist | 101 + bash-20060316/support/mkinstalldirs | 111 + bash-20060316/support/mknewvers.sh | 113 + bash-20060316/support/mksignames.c | 111 + bash-20060316/support/mksnap | 59 + bash-20060316/support/mkversion.sh | 164 + bash-20060316/support/printenv.c | 71 + bash-20060316/support/printenv.sh | 27 + bash-20060316/support/recho.c | 66 + bash-20060316/support/rlvers.sh | 113 + bash-20060316/support/shobj-conf | 547 + bash-20060316/support/signames.c | 393 + bash-20060316/support/texi2dvi | 660 + bash-20060316/support/texi2dvi-0.43 | 568 + bash-20060316/support/texi2dvi-0.46 | 604 + bash-20060316/support/texi2dvi-1.14 | 660 + bash-20060316/support/texi2html | 5429 +++ bash-20060316/support/texi2html-1.64 | 5429 +++ bash-20060316/support/xenix-link.sh | 84 + bash-20060316/support/zecho.c | 42 + bash-20060316/syntax.h | 102 + bash-20060316/test.c | 825 + bash-20060316/test.h | 38 + bash-20060316/tests/-i | 0 bash-20060316/tests/README | 1 + bash-20060316/tests/RUN-ONE-TEST | 9 + bash-20060316/tests/RUN-TEST-SCRIPT | 7 + bash-20060316/tests/alias.right | 4 + bash-20060316/tests/alias.tests | 37 + bash-20060316/tests/appendop.right | 18 + bash-20060316/tests/appendop.tests | 83 + bash-20060316/tests/arith-for.right | 74 + bash-20060316/tests/arith-for.tests | 94 + bash-20060316/tests/arith.right | 203 + bash-20060316/tests/arith.tests | 284 + bash-20060316/tests/arith1.sub | 38 + bash-20060316/tests/arith2.sub | 45 + bash-20060316/tests/array-at-star | 120 + bash-20060316/tests/array.right | 201 + bash-20060316/tests/array.tests | 401 + bash-20060316/tests/array1.sub | 1 + bash-20060316/tests/array2.right | 74 + bash-20060316/tests/array2.sub | 1 + bash-20060316/tests/array3.sub | 9 + bash-20060316/tests/array4.sub | 20 + bash-20060316/tests/braces.right | 43 + bash-20060316/tests/braces.tests | 70 + bash-20060316/tests/builtins.right | 132 + bash-20060316/tests/builtins.tests | 250 + bash-20060316/tests/builtins1.sub | 14 + bash-20060316/tests/builtins2.sub | 10 + bash-20060316/tests/cond.right | 37 + bash-20060316/tests/cond.tests | 159 + bash-20060316/tests/cprint.right | 72 + bash-20060316/tests/cprint.right.save1 | 72 + bash-20060316/tests/cprint.tests | 67 + bash-20060316/tests/cracauer-testsuite/DOC | 13 + .../tests/cracauer-testsuite/Makefile | 12 + .../tests/cracauer-testsuite/OBSERVATIONS | 84 + .../tests/cracauer-testsuite/QUESTIONS | 1 + .../tests/cracauer-testsuite/catcher.c | 142 + .../tests/cracauer-testsuite/lib.csh | 7 + bash-20060316/tests/cracauer-testsuite/lib.sh | 14 + .../tests/cracauer-testsuite/test01.csh | 12 + .../tests/cracauer-testsuite/test01.sh | 15 + .../tests/cracauer-testsuite/test02.csh | 13 + .../tests/cracauer-testsuite/test02.sh | 10 + .../tests/cracauer-testsuite/test03.sh | 18 + .../tests/cracauer-testsuite/test04.sh | 18 + .../tests/cracauer-testsuite/test05.sh | 23 + .../tests/cracauer-testsuite/test06.sh | 10 + .../tests/cracauer-testsuite/test07.csh | 19 + .../tests/cracauer-testsuite/test07.sh | 23 + .../tests/cracauer-testsuite/test08.sh | 19 + .../tests/cracauer-testsuite/test09.sh | 14 + .../tests/cracauer-testsuite/test10.sh | 4 + .../tests/cracauer-testsuite/test11.sh | 13 + .../tests/cracauer-testsuite/test12.sh | 5 + .../tests/cracauer-testsuite/test13.sh | 9 + bash-20060316/tests/dbg-support.right | 353 + bash-20060316/tests/dbg-support.sub | 26 + bash-20060316/tests/dbg-support.tests | 139 + bash-20060316/tests/dbg-support2.right | 7 + bash-20060316/tests/dbg-support2.tests | 26 + bash-20060316/tests/dollar-at-star | 226 + bash-20060316/tests/dollar-at1.sub | 29 + bash-20060316/tests/dollar-at2.sub | 19 + bash-20060316/tests/dollar-star1.sub | 31 + bash-20060316/tests/dollar-star2.sub | 26 + bash-20060316/tests/dollar.right | 136 + bash-20060316/tests/dstack.right | 55 + bash-20060316/tests/dstack.tests | 87 + bash-20060316/tests/dstack2.right | 24 + bash-20060316/tests/dstack2.tests | 33 + bash-20060316/tests/errors.right | 100 + bash-20060316/tests/errors.tests | 265 + bash-20060316/tests/exec.right | 54 + bash-20060316/tests/exec1.sub | 1 + bash-20060316/tests/exec2.sub | 5 + bash-20060316/tests/exec3.sub | 6 + bash-20060316/tests/exec4.sub | 8 + bash-20060316/tests/exec5.sub | 9 + bash-20060316/tests/exec6.sub | 54 + bash-20060316/tests/exec7.sub | 20 + bash-20060316/tests/execscript | 110 + bash-20060316/tests/exp-tests | 380 + bash-20060316/tests/exp.right | 147 + bash-20060316/tests/extglob.right | 89 + bash-20060316/tests/extglob.tests | 365 + bash-20060316/tests/extglob1.sub | 37 + bash-20060316/tests/extglob2.right | 70 + bash-20060316/tests/extglob2.tests | 90 + bash-20060316/tests/extglob3.right | 27 + bash-20060316/tests/extglob3.tests | 56 + bash-20060316/tests/func.right | 150 + bash-20060316/tests/func.tests | 168 + bash-20060316/tests/func1.sub | 55 + bash-20060316/tests/func2.sub | 17 + bash-20060316/tests/func3.sub | 54 + bash-20060316/tests/getopts.right | 56 + bash-20060316/tests/getopts.tests | 38 + bash-20060316/tests/getopts1.sub | 26 + bash-20060316/tests/getopts2.sub | 26 + bash-20060316/tests/getopts3.sub | 27 + bash-20060316/tests/getopts4.sub | 30 + bash-20060316/tests/getopts5.sub | 50 + bash-20060316/tests/getopts6.sub | 27 + bash-20060316/tests/getopts7.sub | 30 + bash-20060316/tests/glob-test | 388 + bash-20060316/tests/glob.right | 135 + bash-20060316/tests/glob1.sub | 14 + bash-20060316/tests/heredoc.right | 43 + bash-20060316/tests/heredoc.tests | 94 + bash-20060316/tests/herestr.right | 28 + bash-20060316/tests/herestr.tests | 39 + bash-20060316/tests/histexp.right | 129 + bash-20060316/tests/histexp.tests | 124 + bash-20060316/tests/history.list | 4 + bash-20060316/tests/history.right | 111 + bash-20060316/tests/history.tests | 98 + bash-20060316/tests/history.tests.save | 97 + bash-20060316/tests/ifs-posix.right | 1 + bash-20060316/tests/ifs-posix.tests | 257 + bash-20060316/tests/ifs.right | 10 + bash-20060316/tests/ifs.tests | 61 + bash-20060316/tests/input-line.sh | 4 + bash-20060316/tests/input-line.sub | 2 + bash-20060316/tests/input.right | 3 + bash-20060316/tests/intl.right | 10 + bash-20060316/tests/intl.tests | 38 + bash-20060316/tests/invert.right | 10 + bash-20060316/tests/invert.tests | 19 + bash-20060316/tests/iquote.right | 61 + bash-20060316/tests/iquote.tests | 143 + bash-20060316/tests/jobs.right | 105 + bash-20060316/tests/jobs.tests | 183 + bash-20060316/tests/jobs1.sub | 17 + bash-20060316/tests/jobs2.sub | 13 + bash-20060316/tests/jobs3.sub | 26 + bash-20060316/tests/jobs4.sub | 24 + bash-20060316/tests/misc/dev-tcp.tests | 16 + bash-20060316/tests/misc/input-line-2.sh | 4 + bash-20060316/tests/misc/minus-e | 6 + bash-20060316/tests/misc/minus-e.right | 1 + bash-20060316/tests/misc/perf-script | 81 + bash-20060316/tests/misc/perftest | 10 + .../tests/misc/read-nchars-int.tests | 11 + bash-20060316/tests/misc/read-nchars.tests | 11 + bash-20060316/tests/misc/redir-t2.sh | 17 + bash-20060316/tests/misc/regress/README | 12 + bash-20060316/tests/misc/regress/geoff.post | 152 + bash-20060316/tests/misc/regress/getdate.mk | 9 + bash-20060316/tests/misc/regress/getdate.y | 553 + bash-20060316/tests/misc/regress/log.orig | 50 + bash-20060316/tests/misc/regress/shx | 15 + bash-20060316/tests/misc/regress/shx.orig | 10 + bash-20060316/tests/misc/regress/shx1 | 4 + bash-20060316/tests/misc/regress/shx2 | 5 + bash-20060316/tests/misc/regress/shx3 | 4 + bash-20060316/tests/misc/regress/shx4 | 5 + bash-20060316/tests/misc/regress/shx5 | 5 + bash-20060316/tests/misc/regress/shx7 | 9 + bash-20060316/tests/misc/regress/shx8 | 3 + bash-20060316/tests/misc/run-input-test-2 | 2 + bash-20060316/tests/misc/run-minus-e | 2 + bash-20060316/tests/misc/run-r2.sh | 1 + bash-20060316/tests/misc/sigint-1.sh | 9 + bash-20060316/tests/misc/sigint-2.sh | 7 + bash-20060316/tests/misc/sigint-3.sh | 11 + bash-20060316/tests/misc/sigint-4.sh | 13 + bash-20060316/tests/misc/test-minus-e.1 | 9 + bash-20060316/tests/misc/test-minus-e.2 | 11 + bash-20060316/tests/misc/test.patmatch | 15 + bash-20060316/tests/misc/wait-bg.tests | 25 + bash-20060316/tests/more-exp.right | 214 + bash-20060316/tests/more-exp.tests | 504 + bash-20060316/tests/new-exp.right | 505 + bash-20060316/tests/new-exp.tests | 558 + bash-20060316/tests/new-exp1.sub | 11 + bash-20060316/tests/new-exp2.sub | 36 + bash-20060316/tests/new-exp3.sub | 26 + bash-20060316/tests/new-exp4.sub | 31 + bash-20060316/tests/new-exp5.sub | 30 + bash-20060316/tests/nquote.right | 37 + bash-20060316/tests/nquote.tests | 116 + bash-20060316/tests/nquote1.right | 121 + bash-20060316/tests/nquote1.tests | 97 + bash-20060316/tests/nquote2.right | 76 + bash-20060316/tests/nquote2.tests | 82 + bash-20060316/tests/nquote3.right | 60 + bash-20060316/tests/nquote3.tests | 85 + bash-20060316/tests/nquote4.right | 18 + bash-20060316/tests/nquote4.tests | 24 + bash-20060316/tests/posix-ifs.sh | 257 + bash-20060316/tests/posix2.right | 2 + bash-20060316/tests/posix2.tests | 179 + bash-20060316/tests/posixpat.right | 42 + bash-20060316/tests/posixpat.tests | 233 + bash-20060316/tests/prec.right | 28 + bash-20060316/tests/precedence | 75 + bash-20060316/tests/printf.right | Bin 0 -> 1287 bytes bash-20060316/tests/printf.tests | 248 + bash-20060316/tests/printf1.sub | 338 + bash-20060316/tests/quote.right | 68 + bash-20060316/tests/quote.tests | 111 + bash-20060316/tests/read.right | 62 + bash-20060316/tests/read.tests | 95 + bash-20060316/tests/read1.sub | 23 + bash-20060316/tests/read2.sub | 22 + bash-20060316/tests/read3.sub | 19 + bash-20060316/tests/read4.sub | 4 + bash-20060316/tests/read5.sub | 36 + bash-20060316/tests/redir.right | 102 + bash-20060316/tests/redir.tests | 174 + bash-20060316/tests/redir1.sub | 8 + bash-20060316/tests/redir2.sub | 1 + bash-20060316/tests/redir3.in1 | 2 + bash-20060316/tests/redir3.in2 | 2 + bash-20060316/tests/redir3.sub | 26 + bash-20060316/tests/redir4.in1 | 1 + bash-20060316/tests/redir4.sub | 56 + bash-20060316/tests/redir5.sub | 31 + bash-20060316/tests/redir6.sub | 8 + bash-20060316/tests/redir7.sub | 69 + bash-20060316/tests/rhs-exp.right | 74 + bash-20060316/tests/rhs-exp.tests | 49 + bash-20060316/tests/rsh.right | 13 + bash-20060316/tests/rsh.tests | 33 + bash-20060316/tests/run-alias | 2 + bash-20060316/tests/run-all | 29 + bash-20060316/tests/run-appendop | 2 + bash-20060316/tests/run-arith | 2 + bash-20060316/tests/run-arith-for | 2 + bash-20060316/tests/run-array | 4 + bash-20060316/tests/run-array2 | 4 + bash-20060316/tests/run-braces | 2 + bash-20060316/tests/run-builtins | 2 + bash-20060316/tests/run-cond | 7 + bash-20060316/tests/run-cprint | 2 + bash-20060316/tests/run-dbg-support | 11 + bash-20060316/tests/run-dbg-support2 | 16 + bash-20060316/tests/run-dirstack | 5 + bash-20060316/tests/run-dollars | 2 + bash-20060316/tests/run-errors | 2 + bash-20060316/tests/run-execscript | 9 + bash-20060316/tests/run-exp-tests | 2 + bash-20060316/tests/run-extglob | 4 + bash-20060316/tests/run-extglob2 | 4 + bash-20060316/tests/run-extglob3 | 4 + bash-20060316/tests/run-func | 5 + bash-20060316/tests/run-getopts | 2 + bash-20060316/tests/run-glob-test | 4 + bash-20060316/tests/run-gprof | 53 + bash-20060316/tests/run-heredoc | 2 + bash-20060316/tests/run-herestr | 2 + bash-20060316/tests/run-histexpand | 4 + bash-20060316/tests/run-history | 4 + bash-20060316/tests/run-ifs | 2 + bash-20060316/tests/run-ifs-posix | 2 + bash-20060316/tests/run-input-test | 2 + bash-20060316/tests/run-intl | 8 + bash-20060316/tests/run-invert | 2 + bash-20060316/tests/run-iquote | 2 + bash-20060316/tests/run-jobs | 7 + bash-20060316/tests/run-minimal | 36 + bash-20060316/tests/run-more-exp | 2 + bash-20060316/tests/run-new-exp | 10 + bash-20060316/tests/run-nquote | 2 + bash-20060316/tests/run-nquote1 | 4 + bash-20060316/tests/run-nquote2 | 4 + bash-20060316/tests/run-nquote3 | 4 + bash-20060316/tests/run-nquote4 | 4 + bash-20060316/tests/run-posix2 | 2 + bash-20060316/tests/run-posixpat | 2 + bash-20060316/tests/run-precedence | 2 + bash-20060316/tests/run-printf | 5 + bash-20060316/tests/run-quote | 2 + bash-20060316/tests/run-read | 4 + bash-20060316/tests/run-redir | 7 + bash-20060316/tests/run-rhs-exp | 2 + bash-20060316/tests/run-rsh | 2 + bash-20060316/tests/run-set-e | 2 + bash-20060316/tests/run-set-x | 11 + bash-20060316/tests/run-shopt | 2 + bash-20060316/tests/run-strip | 2 + bash-20060316/tests/run-test | 4 + bash-20060316/tests/run-tilde | 2 + bash-20060316/tests/run-tilde2 | 2 + bash-20060316/tests/run-trap | 6 + bash-20060316/tests/run-type | 2 + bash-20060316/tests/run-varenv | 2 + bash-20060316/tests/set-e-test | 84 + bash-20060316/tests/set-e.right | 28 + bash-20060316/tests/set-x.right | 28 + bash-20060316/tests/set-x.tests | 21 + bash-20060316/tests/shopt.right | 238 + bash-20060316/tests/shopt.tests | 94 + bash-20060316/tests/source1.sub | 1 + bash-20060316/tests/source2.sub | 5 + bash-20060316/tests/source3.sub | 1 + bash-20060316/tests/source4.sub | 1 + bash-20060316/tests/source5.sub | 19 + bash-20060316/tests/strip.right | 12 + bash-20060316/tests/strip.tests | 22 + bash-20060316/tests/test.right | 284 + bash-20060316/tests/test.tests | 423 + bash-20060316/tests/tilde.right | 25 + bash-20060316/tests/tilde.tests | 69 + bash-20060316/tests/tilde2.right | 24 + bash-20060316/tests/tilde2.tests | 70 + bash-20060316/tests/time.tests | 22 + bash-20060316/tests/trap.right | 74 + bash-20060316/tests/trap.tests | 86 + bash-20060316/tests/trap1.sub | 4 + bash-20060316/tests/trap2.sub | 25 + bash-20060316/tests/trap2a.sub | 3 + bash-20060316/tests/type.right | 48 + bash-20060316/tests/type.tests | 82 + bash-20060316/tests/varenv.right | 56 + bash-20060316/tests/varenv.sh | 206 + bash-20060316/tests/varenv1.sub | 28 + bash-20060316/tests/varenv2.sub | 44 + bash-20060316/tests/version | 8 + bash-20060316/tests/version.mini | 8 + bash-20060316/trap.c | 984 + bash-20060316/trap.h | 98 + bash-20060316/unwind_prot.c | 320 + bash-20060316/unwind_prot.h | 48 + bash-20060316/variables.c | 4282 +++ bash-20060316/variables.h | 366 + bash-20060316/version.c | 83 + bash-20060316/xmalloc.c | 193 + bash-20060316/xmalloc.h | 58 + bashline.c | 34 +- braces.c | 14 +- builtins/Makefile.in | 15 +- builtins/bind.def | 26 +- builtins/break.def | 6 +- builtins/builtin.def | 9 +- builtins/caller.def | 23 +- builtins/cd.def | 13 +- builtins/common.c | 23 +- builtins/complete.def | 16 +- builtins/declare.def | 32 +- builtins/echo.def | 9 +- builtins/enable.def | 6 +- builtins/evalfile.c | 25 +- builtins/evalstring.c | 5 +- builtins/exec.def | 4 +- builtins/exit.def | 42 +- builtins/fc.def | 7 +- builtins/fg_bg.def | 4 +- builtins/hash.def | 4 +- builtins/help.def | 46 +- builtins/history.def | 6 +- builtins/inlib.def | 2 +- builtins/jobs.def | 4 +- builtins/mkbuiltins.c | 2 +- builtins/printf.def | 40 +- builtins/pushd.def | 146 +- builtins/read.def | 9 +- builtins/reserved.def | 10 +- builtins/set.def | 12 +- builtins/setattr.def | 4 +- builtins/shopt.def | 12 +- builtins/source.def | 5 +- builtins/suspend.def | 4 +- builtins/test.def | 5 +- builtins/times.def | 4 +- builtins/trap.def | 6 +- builtins/type.def | 2 +- builtins/ulimit.def | 14 +- builtins/wait.def | 6 +- command.h | 1 - config-bot.h | 26 +- config.h.in | 49 +- configure | 18178 ++++------ configure.in | 20 +- doc/FAQ | 93 +- doc/Makefile.in | 2 - doc/bash.0 | 2622 +- doc/bash.1 | 207 +- doc/bash.html | 228 +- doc/bash.pdf | Bin 589851 -> 657635 bytes doc/bash.ps | 9728 +++--- doc/bashref.aux | 171 +- doc/bashref.bt | 42 +- doc/bashref.bts | 42 +- doc/bashref.cp | 100 +- doc/bashref.cps | 100 +- doc/bashref.dvi | Bin 611796 -> 590960 bytes doc/bashref.fn | 192 +- doc/bashref.fns | 192 +- doc/bashref.html | 4931 ++- doc/bashref.info | 1502 +- doc/bashref.log | 120 +- doc/bashref.pdf | Bin 540558 -> 540354 bytes doc/bashref.ps | 9345 +++-- doc/bashref.texi | 1207 +- doc/bashref.toc | 155 +- doc/bashref.vr | 211 +- doc/bashref.vrs | 211 +- doc/builtins.0 | 789 +- doc/builtins.ps | 2374 +- doc/faq.headers.mail | 8 +- doc/faq.headers.news | 2 +- doc/faq.headers.news2 | 2 +- doc/faq.mail | 181 +- doc/faq.news | 175 +- doc/faq.news2 | 175 +- doc/faq.version | 6 +- doc/rbash.ps | 2 +- doc/version.texi | 8 +- error.c | 18 +- eval.c | 2 +- examples/loadables/Makefile.in | 8 +- examples/loadables/perl/Makefile.in | 4 +- execute_cmd.c | 112 +- expr.c | 12 +- externs.h | 6 +- findcmd.c | 2 +- flags.c | 2 +- flags.h | 2 +- general.c | 5 +- general.h | 2 +- include/typemax.h | 4 - input.c | 2 - input.h | 2 +- jobs.c | 72 +- jobs.c.diff | 521 + jobs.h | 2 +- lib/glob/glob.c | 2 +- lib/glob/glob.h | 8 +- lib/glob/smatch.c | 1 + lib/glob/xmbsrtowcs.c | 3 +- lib/intl/Makefile.in | 10 +- lib/malloc/malloc.c | 4 +- lib/malloc/stats.c | 1 - lib/malloc/table.c | 1 - lib/malloc/watch.c | 12 +- lib/malloc/xleaktrace | 4 - lib/readline/Makefile.in | 2 - lib/readline/bind.c | 40 +- lib/readline/callback.c | 124 +- lib/readline/complete.c | 41 +- lib/readline/display.c | 339 +- lib/readline/doc/history.dvi | Bin 81828 -> 79860 bytes lib/readline/doc/history.html | 8 +- lib/readline/doc/history.info | 58 +- lib/readline/doc/history.log | 36 +- lib/readline/doc/history.ps | 789 +- lib/readline/doc/history.texi | 4 +- lib/readline/doc/hstech.texi | 2 +- lib/readline/doc/hsuser.texi | 17 +- lib/readline/doc/readline.3 | 4 +- lib/readline/doc/readline.dvi | Bin 286376 -> 278124 bytes lib/readline/doc/readline.html | 719 +- lib/readline/doc/readline.info | 267 +- lib/readline/doc/readline.ps | 5618 ++- lib/readline/doc/rlman.aux | 20 +- lib/readline/doc/rlman.cp | 2 +- lib/readline/doc/rlman.cps | 2 +- lib/readline/doc/rlman.fn | 98 +- lib/readline/doc/rlman.fns | 98 +- lib/readline/doc/rlman.log | 37 +- lib/readline/doc/rlman.texi | 4 +- lib/readline/doc/rlman.toc | 22 +- lib/readline/doc/rltech.texi | 32 +- lib/readline/doc/rluser.texi | 21 +- lib/readline/doc/rluserman.dvi | Bin 96244 -> 92940 bytes lib/readline/doc/rluserman.html | 17 +- lib/readline/doc/rluserman.info | 72 +- lib/readline/doc/rluserman.log | 34 +- lib/readline/doc/rluserman.ps | 1813 +- lib/readline/doc/rluserman.texi | 4 +- lib/readline/doc/version.texi | 8 +- lib/readline/examples/excallback.c | 3 - lib/readline/funmap.c | 2 +- lib/readline/histexpand.c | 12 +- lib/readline/histfile.c | 12 +- lib/readline/history.c | 89 +- lib/readline/input.c | 39 +- lib/readline/isearch.c | 17 +- lib/readline/kill.c | 7 +- lib/readline/macro.c | 6 +- lib/readline/mbutil.c | 7 +- lib/readline/misc.c | 54 +- lib/readline/readline.c | 49 +- lib/readline/readline.h | 19 +- lib/readline/rldefs.h | 4 - lib/readline/rlmbutil.h | 13 +- lib/readline/rlprivate.h | 33 +- lib/readline/rltty.c | 8 +- lib/readline/rlwinsize.h | 5 +- lib/readline/terminal.c | 21 +- lib/readline/text.c | 35 +- lib/readline/undo.c | 82 +- lib/readline/util.c | 152 +- lib/readline/vi_mode.c | 88 +- lib/sh/Makefile.in | 16 +- lib/sh/netopen.c | 10 - lib/sh/shmatch.c | 3 +- lib/sh/snprintf.c | 86 +- lib/sh/strtrans.c | 16 +- lib/sh/tmpfile.c | 8 +- lib/sh/winsize.c | 1 - lib/termcap/termcap.c | 12 - lib/termcap/tparam.c | 8 - lib/tilde/tilde.c | 18 +- locale.c | 51 +- make_cmd.c | 6 +- mksyntax.c | 19 - nojobs.c | 4 +- parse.y | 102 +- parse.y.save26 | 4927 +++ patchlevel.h | 4 +- pathexp.c | 31 +- pathexp.h | 3 +- pcomplete.c | 19 +- po/LINGUAS | 2 +- po/Makefile.in.in | 5 +- po/bash.pot | 762 +- po/en@boldquot.gmo | Bin 31838 -> 118280 bytes po/en@boldquot.po | 837 +- po/en@quot.gmo | Bin 31182 -> 116592 bytes po/en@quot.po | 837 +- po/ru.po | 1006 +- print_cmd.c | 8 +- redir.c | 23 +- shell.c | 26 +- sig.c | 21 +- sig.h | 1 - siglist.c | 86 +- subst.c | 392 +- subst.h | 10 +- support/bash.xbm | 1 - support/mkversion.sh | 2 +- support/shobj-conf | 8 +- support/texi2html | 2 +- syntax.h | 4 +- tests/README | 2 - tests/array.right | 7 - tests/array.tests | 4 - tests/array4.sub | 12 - tests/braces.right | 2 - tests/braces.tests | 5 - tests/builtins.right | 15 +- tests/builtins.tests | 3 - tests/cond.right | 23 - tests/cond.tests | 20 - tests/cprint.right | 20 +- tests/dbg-support.right | 8 +- tests/dstack.right | 4 +- tests/errors.right | 4 +- tests/func.right | 3 +- tests/func.tests | 10 +- tests/heredoc.right | 4 +- tests/history.right | 4 +- tests/intl.tests | 2 +- tests/new-exp.right | 20 +- tests/new-exp.tests | 2 - tests/printf.right | Bin 1504 -> 1287 bytes tests/printf.tests | 56 +- tests/redir.right | 2 +- tests/rsh.right | 2 +- tests/run-builtins | 3 - tests/shopt.right | 7 +- trap.c | 1 + unwind_prot.c | 2 + variables.c | 94 +- variables.h | 1 + version.c | 16 +- 1546 files changed, 713855 insertions(+), 55509 deletions(-) create mode 100644 bash-20060316/-i create mode 100644 bash-20060316/.DS_Store create mode 100644 bash-20060316/.gdb_history create mode 100644 bash-20060316/ABOUT-NLS create mode 100644 bash-20060316/AUTHORS create mode 100644 bash-20060316/CHANGES create mode 100644 bash-20060316/COMPAT create mode 100644 bash-20060316/COPYING create mode 100644 bash-20060316/CWRU/-i create mode 100644 bash-20060316/CWRU/CWRU.chlog create mode 100644 bash-20060316/CWRU/CWRU.chlog~ create mode 100644 bash-20060316/CWRU/OS-BUGS/att-yacc-bug create mode 100644 bash-20060316/CWRU/OS-BUGS/bsd-rshd-bug create mode 100644 bash-20060316/CWRU/OS-BUGS/bsd-tty-driver create mode 100644 bash-20060316/CWRU/OS-BUGS/hpux-ulimit-bug create mode 100644 bash-20060316/CWRU/OS-BUGS/isc-posix-bug create mode 100644 bash-20060316/CWRU/OS-BUGS/next-rlogind-bug create mode 100644 bash-20060316/CWRU/OS-BUGS/sco-3.2.4-bug create mode 100644 bash-20060316/CWRU/OS-BUGS/sequent-fcntl-dup2-bug create mode 100644 bash-20060316/CWRU/OS-BUGS/sun-yp-bug create mode 100644 bash-20060316/CWRU/OS-BUGS/ultrix-bugs create mode 100644 bash-20060316/CWRU/PLATFORMS create mode 100644 bash-20060316/CWRU/POSIX.NOTES.old create mode 100644 bash-20060316/CWRU/README create mode 120000 bash-20060316/CWRU/changelog create mode 100644 bash-20060316/CWRU/history-syslog.1 create mode 100644 bash-20060316/CWRU/mh-folder-comp create mode 100755 bash-20060316/CWRU/misc/bison create mode 100644 bash-20060316/CWRU/misc/copyright create mode 100644 bash-20060316/CWRU/misc/errlist.c create mode 100644 bash-20060316/CWRU/misc/getwd.bsd44.c create mode 100644 bash-20060316/CWRU/misc/hpux10-dlfcn.h create mode 100644 bash-20060316/CWRU/misc/iptrt.c create mode 100644 bash-20060316/CWRU/misc/nofd0.c create mode 100644 bash-20060316/CWRU/misc/open-files.c create mode 100644 bash-20060316/CWRU/misc/pcat.c create mode 100644 bash-20060316/CWRU/misc/pgrp.c create mode 100644 bash-20060316/CWRU/misc/pid.c create mode 100644 bash-20060316/CWRU/misc/sigs.c create mode 100644 bash-20060316/CWRU/misc/sigstat.c create mode 100644 bash-20060316/CWRU/misc/stderr.c create mode 100644 bash-20060316/CWRU/misc/test-strtod.c create mode 100644 bash-20060316/CWRU/new/execute_cmd.c.lastpipe-first create mode 100644 bash-20060316/CWRU/old-changelogs/CHANGES.051093 create mode 100644 bash-20060316/CWRU/old-changelogs/CHANGES.071193 create mode 100644 bash-20060316/CWRU/old-changelogs/CHANGES.090393 create mode 100644 bash-20060316/CWRU/old-changelogs/CWRU.chlog.v10 create mode 100644 bash-20060316/CWRU/old-changelogs/CWRU.chlog.v11 create mode 100644 bash-20060316/CWRU/old-changelogs/CWRU.chlog.v12 create mode 100644 bash-20060316/CWRU/old-changelogs/CWRU.chlog.v2 create mode 100644 bash-20060316/CWRU/old-changelogs/CWRU.chlog.v3 create mode 100644 bash-20060316/CWRU/old-changelogs/CWRU.chlog.v4 create mode 100644 bash-20060316/CWRU/old-changelogs/CWRU.chlog.v5 create mode 100644 bash-20060316/CWRU/old-changelogs/CWRU.chlog.v6 create mode 100644 bash-20060316/CWRU/old-changelogs/CWRU.chlog.v7 create mode 100644 bash-20060316/CWRU/old-changelogs/CWRU.chlog.v8 create mode 100644 bash-20060316/CWRU/old-changelogs/CWRU.chlog.v9 create mode 100644 bash-20060316/CWRU/old-conf/Makefile create mode 100644 bash-20060316/CWRU/old-conf/Makefile.builtins create mode 100644 bash-20060316/CWRU/old-conf/Makefile.documentation create mode 100644 bash-20060316/CWRU/old-conf/Makefile.lib.glob create mode 100644 bash-20060316/CWRU/old-conf/Makefile.lib.malloc create mode 100644 bash-20060316/CWRU/old-conf/Makefile.lib.readline create mode 100644 bash-20060316/CWRU/old-conf/Makefile.lib.termcap create mode 100644 bash-20060316/CWRU/old-conf/Makefile.lib.tilde create mode 100644 bash-20060316/CWRU/old-conf/config.h create mode 100644 bash-20060316/CWRU/old-conf/config.h.mini create mode 100755 bash-20060316/CWRU/old-conf/configure create mode 100644 bash-20060316/CWRU/old-conf/cpp-Makefile create mode 100644 bash-20060316/CWRU/old-conf/machines.h create mode 100644 bash-20060316/CWRU/old-conf/support/cat-s create mode 100755 bash-20060316/CWRU/old-conf/support/cppmagic create mode 100644 bash-20060316/CWRU/old-conf/support/getcppsyms.c create mode 100755 bash-20060316/CWRU/old-conf/support/inpath create mode 100755 bash-20060316/CWRU/old-conf/support/mkmachtype create mode 100755 bash-20060316/CWRU/old-conf/support/mksysdefs create mode 100755 bash-20060316/CWRU/old-conf/support/srcdir create mode 100644 bash-20060316/CWRU/old/KSH.README create mode 100644 bash-20060316/CWRU/old/RELEASE.113 create mode 100644 bash-20060316/CWRU/old/RSH.README create mode 100644 bash-20060316/CWRU/old/array.doc create mode 100755 bash-20060316/CWRU/old/fixlib create mode 100644 bash-20060316/CWRU/old/histctl.def create mode 100644 bash-20060316/CWRU/old/longsig.c create mode 100755 bash-20060316/CWRU/old/mklinks create mode 100755 bash-20060316/CWRU/old/mktarfile create mode 100644 bash-20060316/CWRU/old/mkversion.c create mode 100644 bash-20060316/CWRU/old/pagesize.c create mode 100755 bash-20060316/CWRU/old/pagesize.sh create mode 100644 bash-20060316/CWRU/old/parse.y.noctlnul create mode 100644 bash-20060316/CWRU/old/read.def.stdio create mode 100644 bash-20060316/CWRU/old/set.def.save create mode 100644 bash-20060316/CWRU/old/subst.c.noctlnul create mode 100644 bash-20060316/CWRU/posix-parser/Makefile create mode 100644 bash-20060316/CWRU/posix-parser/aux.c create mode 100644 bash-20060316/CWRU/posix-parser/command.h create mode 100644 bash-20060316/CWRU/posix-parser/copy.c create mode 100644 bash-20060316/CWRU/posix-parser/endian.h create mode 100644 bash-20060316/CWRU/posix-parser/main.c create mode 100644 bash-20060316/CWRU/posix-parser/make.c create mode 100644 bash-20060316/CWRU/posix-parser/parse.y create mode 100644 bash-20060316/CWRU/posix-parser/shell.h create mode 100644 bash-20060316/CWRU/save/unwind_prot.c.sighandling create mode 100644 bash-20060316/CWRU/save/unwind_prot.h.save create mode 100644 bash-20060316/CWRU/sh-redir-hack create mode 100644 bash-20060316/INSTALL create mode 100644 bash-20060316/MANIFEST create mode 100644 bash-20060316/MANIFEST.doc create mode 100644 bash-20060316/Makefile.in create mode 100644 bash-20060316/NEWS create mode 100644 bash-20060316/NOTES create mode 100644 bash-20060316/POSIX create mode 100644 bash-20060316/RBASH create mode 100644 bash-20060316/README create mode 100644 bash-20060316/Y2K create mode 100644 bash-20060316/aclocal.m4 create mode 100644 bash-20060316/alias.c create mode 100644 bash-20060316/alias.h create mode 100644 bash-20060316/array.c create mode 100644 bash-20060316/array.h create mode 100644 bash-20060316/arrayfunc.c create mode 100644 bash-20060316/arrayfunc.h create mode 100644 bash-20060316/autom4te-2.53.cache/output.0 create mode 100644 bash-20060316/autom4te-2.53.cache/requests create mode 100644 bash-20060316/autom4te-2.53.cache/traces.0 create mode 100644 bash-20060316/autom4te.cache/output.0 create mode 100644 bash-20060316/autom4te.cache/requests create mode 100644 bash-20060316/autom4te.cache/traces.0 create mode 100644 bash-20060316/bashansi.h create mode 100644 bash-20060316/bashhist.c create mode 100644 bash-20060316/bashhist.h create mode 100644 bash-20060316/bashintl.h create mode 100644 bash-20060316/bashjmp.h create mode 100644 bash-20060316/bashline.c create mode 100644 bash-20060316/bashline.h create mode 100644 bash-20060316/bashtypes.h create mode 100644 bash-20060316/bracecomp.c create mode 100644 bash-20060316/braces.c create mode 100644 bash-20060316/builtins.h create mode 100644 bash-20060316/builtins/-i create mode 100644 bash-20060316/builtins/ChangeLog create mode 100644 bash-20060316/builtins/Makefile.in create mode 100644 bash-20060316/builtins/alias.def create mode 100644 bash-20060316/builtins/bashgetopt.c create mode 100644 bash-20060316/builtins/bashgetopt.h create mode 100644 bash-20060316/builtins/bind.def create mode 100644 bash-20060316/builtins/break.def create mode 100644 bash-20060316/builtins/builtin.def create mode 100644 bash-20060316/builtins/caller.def create mode 100644 bash-20060316/builtins/cd.def create mode 100644 bash-20060316/builtins/colon.def create mode 100644 bash-20060316/builtins/command.def create mode 100644 bash-20060316/builtins/common.c create mode 100644 bash-20060316/builtins/common.h create mode 100644 bash-20060316/builtins/complete.def create mode 100644 bash-20060316/builtins/declare.def create mode 100644 bash-20060316/builtins/echo.def create mode 100644 bash-20060316/builtins/enable.def create mode 100644 bash-20060316/builtins/eval.def create mode 100644 bash-20060316/builtins/evalfile.c create mode 100644 bash-20060316/builtins/evalstring.c create mode 100644 bash-20060316/builtins/exec.def create mode 100644 bash-20060316/builtins/exit.def create mode 100644 bash-20060316/builtins/fc.def create mode 100644 bash-20060316/builtins/fg_bg.def create mode 100644 bash-20060316/builtins/getopt.c create mode 100644 bash-20060316/builtins/getopt.h create mode 100644 bash-20060316/builtins/getopts.def create mode 100644 bash-20060316/builtins/hash.def create mode 100644 bash-20060316/builtins/help.def create mode 100644 bash-20060316/builtins/history.def create mode 100644 bash-20060316/builtins/inlib.def create mode 100644 bash-20060316/builtins/jobs.def create mode 100644 bash-20060316/builtins/kill.def create mode 100644 bash-20060316/builtins/let.def create mode 100644 bash-20060316/builtins/mkbuiltins.c create mode 100644 bash-20060316/builtins/printf.def create mode 100644 bash-20060316/builtins/psize-posix.c create mode 100644 bash-20060316/builtins/psize.c create mode 100644 bash-20060316/builtins/psize.sh create mode 100644 bash-20060316/builtins/pushd.def create mode 100644 bash-20060316/builtins/read.def create mode 100644 bash-20060316/builtins/reserved.def create mode 100644 bash-20060316/builtins/return.def create mode 100644 bash-20060316/builtins/set.def create mode 100644 bash-20060316/builtins/setattr.def create mode 100644 bash-20060316/builtins/shift.def create mode 100644 bash-20060316/builtins/shopt.def create mode 100644 bash-20060316/builtins/source.def create mode 100644 bash-20060316/builtins/suspend.def create mode 100644 bash-20060316/builtins/test.def create mode 100644 bash-20060316/builtins/times.def create mode 100644 bash-20060316/builtins/trap.def create mode 100644 bash-20060316/builtins/type.def create mode 100644 bash-20060316/builtins/ulimit.def create mode 100644 bash-20060316/builtins/umask.def create mode 100644 bash-20060316/builtins/wait.def create mode 100644 bash-20060316/builtins/xkill.def create mode 100644 bash-20060316/command.h create mode 100644 bash-20060316/config-bot.h create mode 100644 bash-20060316/config-top.h create mode 100644 bash-20060316/config.h.in create mode 100755 bash-20060316/configure create mode 100755 bash-20060316/configure.debug create mode 100644 bash-20060316/configure.in create mode 100644 bash-20060316/configure.mk create mode 100644 bash-20060316/conftypes.h create mode 100644 bash-20060316/copy_cmd.c create mode 100644 bash-20060316/cross-build/beos-sig.h create mode 100644 bash-20060316/cross-build/cygwin32.cache create mode 100644 bash-20060316/cross-build/cygwin32.cache.old create mode 100644 bash-20060316/cross-build/opennt.cache create mode 100644 bash-20060316/cross-build/win32sig.h create mode 100644 bash-20060316/cross-build/x86-beos.cache create mode 100644 bash-20060316/dispose_cmd.c create mode 100644 bash-20060316/dispose_cmd.h create mode 100644 bash-20060316/doc/-i create mode 100644 bash-20060316/doc/.DS_Store create mode 100644 bash-20060316/doc/FAQ create mode 100644 bash-20060316/doc/FAQ-2.05a create mode 100644 bash-20060316/doc/FAQ-2.05b create mode 100644 bash-20060316/doc/FAQ-3.0 create mode 100644 bash-20060316/doc/FAQ.orig create mode 100644 bash-20060316/doc/FAQ.save create mode 100644 bash-20060316/doc/INTRO create mode 120000 bash-20060316/doc/Makefile create mode 100644 bash-20060316/doc/Makefile.in create mode 100644 bash-20060316/doc/README create mode 100644 bash-20060316/doc/article.ms create mode 100644 bash-20060316/doc/article.pdf create mode 100644 bash-20060316/doc/article.ps create mode 100644 bash-20060316/doc/article.pt.ps create mode 100644 bash-20060316/doc/article.txt create mode 100644 bash-20060316/doc/bash.0 create mode 100644 bash-20060316/doc/bash.1 create mode 100644 bash-20060316/doc/bash.1.orig create mode 100644 bash-20060316/doc/bash.html create mode 100644 bash-20060316/doc/bash.pdf create mode 100644 bash-20060316/doc/bash.ps create mode 100644 bash-20060316/doc/bashbug.0 create mode 100644 bash-20060316/doc/bashbug.1 create mode 100644 bash-20060316/doc/bashbug.ps create mode 120000 bash-20060316/doc/bashman.html create mode 100644 bash-20060316/doc/bashref.aux create mode 100644 bash-20060316/doc/bashref.bt create mode 100644 bash-20060316/doc/bashref.bts create mode 100644 bash-20060316/doc/bashref.cp create mode 100644 bash-20060316/doc/bashref.cps create mode 100644 bash-20060316/doc/bashref.dvi create mode 100644 bash-20060316/doc/bashref.fn create mode 100644 bash-20060316/doc/bashref.fns create mode 100644 bash-20060316/doc/bashref.html create mode 100644 bash-20060316/doc/bashref.info create mode 100644 bash-20060316/doc/bashref.ky create mode 100644 bash-20060316/doc/bashref.log create mode 100644 bash-20060316/doc/bashref.pdf create mode 100644 bash-20060316/doc/bashref.pg create mode 100644 bash-20060316/doc/bashref.ps create mode 100644 bash-20060316/doc/bashref.rw create mode 100644 bash-20060316/doc/bashref.rws create mode 100644 bash-20060316/doc/bashref.texi create mode 100644 bash-20060316/doc/bashref.texi.orig create mode 100644 bash-20060316/doc/bashref.toc create mode 100644 bash-20060316/doc/bashref.tp create mode 100644 bash-20060316/doc/bashref.vr create mode 100644 bash-20060316/doc/bashref.vrs create mode 100644 bash-20060316/doc/builtins.0 create mode 100644 bash-20060316/doc/builtins.1 create mode 100644 bash-20060316/doc/builtins.ps create mode 100644 bash-20060316/doc/faq.headers.mail create mode 100644 bash-20060316/doc/faq.headers.news create mode 100644 bash-20060316/doc/faq.headers.news2 create mode 100644 bash-20060316/doc/faq.mail create mode 100644 bash-20060316/doc/faq.news create mode 100644 bash-20060316/doc/faq.news2 create mode 100644 bash-20060316/doc/faq.version create mode 100644 bash-20060316/doc/fdl.texi create mode 100644 bash-20060316/doc/fdl.txt create mode 100755 bash-20060316/doc/htmlpost.sh create mode 100755 bash-20060316/doc/infopost.sh create mode 100755 bash-20060316/doc/mkfaqvers create mode 100755 bash-20060316/doc/mkinstall create mode 100755 bash-20060316/doc/mkinstall-tmp create mode 100755 bash-20060316/doc/mkposix create mode 100755 bash-20060316/doc/mkrbash create mode 100644 bash-20060316/doc/newbash.texi create mode 100644 bash-20060316/doc/old-faq.html create mode 100644 bash-20060316/doc/oldbash.texi create mode 100644 bash-20060316/doc/rbash.0 create mode 100644 bash-20060316/doc/rbash.1 create mode 100644 bash-20060316/doc/rbash.ps create mode 100644 bash-20060316/doc/rose94.pdf create mode 100644 bash-20060316/doc/rose94.ps create mode 120000 bash-20060316/doc/texinfo.tex create mode 100644 bash-20060316/doc/texinfo.tex.20030205 create mode 100644 bash-20060316/doc/version.texi create mode 100644 bash-20060316/error.c create mode 100644 bash-20060316/error.h create mode 100644 bash-20060316/eval.c create mode 100644 bash-20060316/eval.c~ create mode 100644 bash-20060316/examples/INDEX.html create mode 100644 bash-20060316/examples/INDEX.txt create mode 100644 bash-20060316/examples/bashdb/PERMISSION create mode 100644 bash-20060316/examples/bashdb/README create mode 100755 bash-20060316/examples/bashdb/bashdb create mode 100644 bash-20060316/examples/bashdb/bashdb.el create mode 100644 bash-20060316/examples/bashdb/bashdb.vaughan create mode 100644 bash-20060316/examples/complete/bashcc-1.0.1.tar.gz create mode 100644 bash-20060316/examples/complete/complete-examples create mode 100644 bash-20060316/examples/complete/complete-tests create mode 100644 bash-20060316/examples/complete/complete.freebsd create mode 100644 bash-20060316/examples/complete/complete.gnu-longopt create mode 100644 bash-20060316/examples/complete/complete.ianmac create mode 100644 bash-20060316/examples/complete/complete2.ianmac create mode 100644 bash-20060316/examples/functions/array-stuff create mode 100644 bash-20060316/examples/functions/array-to-string create mode 100644 bash-20060316/examples/functions/autoload create mode 100644 bash-20060316/examples/functions/autoload.v2 create mode 100644 bash-20060316/examples/functions/autoload.v3 create mode 100644 bash-20060316/examples/functions/basename create mode 100644 bash-20060316/examples/functions/basename2 create mode 100644 bash-20060316/examples/functions/coproc.bash create mode 100644 bash-20060316/examples/functions/coshell.README create mode 100644 bash-20060316/examples/functions/coshell.bash create mode 100644 bash-20060316/examples/functions/csh-compat create mode 100644 bash-20060316/examples/functions/dirfuncs create mode 100644 bash-20060316/examples/functions/dirname create mode 100644 bash-20060316/examples/functions/emptydir create mode 100644 bash-20060316/examples/functions/exitstat create mode 100644 bash-20060316/examples/functions/external create mode 100644 bash-20060316/examples/functions/fact create mode 100644 bash-20060316/examples/functions/fstty create mode 100644 bash-20060316/examples/functions/func create mode 100644 bash-20060316/examples/functions/gethtml create mode 100644 bash-20060316/examples/functions/getoptx.bash create mode 100644 bash-20060316/examples/functions/inetaddr create mode 100644 bash-20060316/examples/functions/inpath create mode 100644 bash-20060316/examples/functions/isnum.bash create mode 100644 bash-20060316/examples/functions/isnum2 create mode 100644 bash-20060316/examples/functions/isvalidip create mode 100644 bash-20060316/examples/functions/jdate.bash create mode 100644 bash-20060316/examples/functions/jj.bash create mode 100644 bash-20060316/examples/functions/keep create mode 100644 bash-20060316/examples/functions/ksh-cd create mode 100644 bash-20060316/examples/functions/ksh-compat-test create mode 100644 bash-20060316/examples/functions/kshenv create mode 100644 bash-20060316/examples/functions/login create mode 100644 bash-20060316/examples/functions/lowercase create mode 100644 bash-20060316/examples/functions/manpage create mode 100644 bash-20060316/examples/functions/mhfold create mode 100644 bash-20060316/examples/functions/notify.bash create mode 100644 bash-20060316/examples/functions/pathfuncs create mode 100644 bash-20060316/examples/functions/recurse create mode 100644 bash-20060316/examples/functions/repeat2 create mode 100644 bash-20060316/examples/functions/repeat3 create mode 100644 bash-20060316/examples/functions/seq create mode 100644 bash-20060316/examples/functions/seq2 create mode 100644 bash-20060316/examples/functions/shcat create mode 100644 bash-20060316/examples/functions/shcat2 create mode 100644 bash-20060316/examples/functions/sort-pos-params create mode 100644 bash-20060316/examples/functions/sqroot create mode 100644 bash-20060316/examples/functions/substr create mode 100644 bash-20060316/examples/functions/substr2 create mode 100644 bash-20060316/examples/functions/term create mode 100644 bash-20060316/examples/functions/whatis create mode 100644 bash-20060316/examples/functions/whence create mode 100644 bash-20060316/examples/functions/which create mode 100644 bash-20060316/examples/functions/xalias.bash create mode 100644 bash-20060316/examples/functions/xfind.bash create mode 100644 bash-20060316/examples/loadables/Makefile.in create mode 100644 bash-20060316/examples/loadables/README create mode 100644 bash-20060316/examples/loadables/TODO create mode 100644 bash-20060316/examples/loadables/basename.c create mode 100644 bash-20060316/examples/loadables/bsdos.glue.c create mode 100644 bash-20060316/examples/loadables/cat.c create mode 100644 bash-20060316/examples/loadables/cut.c create mode 100644 bash-20060316/examples/loadables/dirname.c create mode 100644 bash-20060316/examples/loadables/finfo.c create mode 100644 bash-20060316/examples/loadables/getconf.c create mode 100644 bash-20060316/examples/loadables/getconf.h create mode 100644 bash-20060316/examples/loadables/head.c create mode 100644 bash-20060316/examples/loadables/hello.c create mode 100644 bash-20060316/examples/loadables/id.c create mode 100644 bash-20060316/examples/loadables/ln.c create mode 100644 bash-20060316/examples/loadables/logname.c create mode 100644 bash-20060316/examples/loadables/mkdir.c create mode 100644 bash-20060316/examples/loadables/necho.c create mode 100644 bash-20060316/examples/loadables/pathchk.c create mode 120000 bash-20060316/examples/loadables/perl/Makefile create mode 100644 bash-20060316/examples/loadables/perl/Makefile.in create mode 100644 bash-20060316/examples/loadables/perl/README create mode 100644 bash-20060316/examples/loadables/perl/bperl.c create mode 100644 bash-20060316/examples/loadables/perl/iperl.c create mode 100644 bash-20060316/examples/loadables/print.c create mode 100644 bash-20060316/examples/loadables/printenv.c create mode 100644 bash-20060316/examples/loadables/push.c create mode 100644 bash-20060316/examples/loadables/pushd.def create mode 100644 bash-20060316/examples/loadables/pushd.inc create mode 100644 bash-20060316/examples/loadables/realpath.c create mode 100644 bash-20060316/examples/loadables/rmdir.c create mode 100644 bash-20060316/examples/loadables/sleep.c create mode 100644 bash-20060316/examples/loadables/sprintf.c create mode 100644 bash-20060316/examples/loadables/strftime.c create mode 100644 bash-20060316/examples/loadables/sync.c create mode 100644 bash-20060316/examples/loadables/tee.c create mode 100644 bash-20060316/examples/loadables/template.c create mode 100644 bash-20060316/examples/loadables/truefalse.c create mode 100644 bash-20060316/examples/loadables/tty.c create mode 100644 bash-20060316/examples/loadables/uname.c create mode 100644 bash-20060316/examples/loadables/unlink.c create mode 100644 bash-20060316/examples/loadables/whoami.c create mode 100644 bash-20060316/examples/loadables/xtitle.c create mode 100755 bash-20060316/examples/misc/aliasconv.bash create mode 100755 bash-20060316/examples/misc/aliasconv.sh create mode 100755 bash-20060316/examples/misc/cshtobash create mode 100644 bash-20060316/examples/misc/suncmd.termcap create mode 100644 bash-20060316/examples/obashdb/PERMISSION create mode 100644 bash-20060316/examples/obashdb/README create mode 100644 bash-20060316/examples/obashdb/bashdb create mode 100644 bash-20060316/examples/obashdb/bashdb.fns create mode 100644 bash-20060316/examples/obashdb/bashdb.pre create mode 100644 bash-20060316/examples/obashdb/bashdb.x create mode 100644 bash-20060316/examples/scripts.noah/PERMISSION create mode 100644 bash-20060316/examples/scripts.noah/README create mode 100644 bash-20060316/examples/scripts.noah/aref.bash create mode 100644 bash-20060316/examples/scripts.noah/bash.sub.bash create mode 100644 bash-20060316/examples/scripts.noah/bash_version.bash create mode 100644 bash-20060316/examples/scripts.noah/meta.bash create mode 100644 bash-20060316/examples/scripts.noah/mktmp.bash create mode 100644 bash-20060316/examples/scripts.noah/number.bash create mode 100644 bash-20060316/examples/scripts.noah/prompt.bash create mode 100644 bash-20060316/examples/scripts.noah/remap_keys.bash create mode 100644 bash-20060316/examples/scripts.noah/require.bash create mode 100644 bash-20060316/examples/scripts.noah/send_mail.bash create mode 100644 bash-20060316/examples/scripts.noah/shcat.bash create mode 100644 bash-20060316/examples/scripts.noah/source.bash create mode 100644 bash-20060316/examples/scripts.noah/string.bash create mode 100644 bash-20060316/examples/scripts.noah/stty.bash create mode 100644 bash-20060316/examples/scripts.noah/y_or_n_p.bash create mode 100644 bash-20060316/examples/scripts.v2/PERMISSION create mode 100644 bash-20060316/examples/scripts.v2/README create mode 100644 bash-20060316/examples/scripts.v2/arc2tarz create mode 100644 bash-20060316/examples/scripts.v2/bashrand create mode 100644 bash-20060316/examples/scripts.v2/cal2day.bash create mode 100644 bash-20060316/examples/scripts.v2/cdhist.bash create mode 100644 bash-20060316/examples/scripts.v2/corename create mode 100644 bash-20060316/examples/scripts.v2/fman create mode 100755 bash-20060316/examples/scripts.v2/frcp create mode 100644 bash-20060316/examples/scripts.v2/lowercase create mode 100644 bash-20060316/examples/scripts.v2/ncp create mode 100644 bash-20060316/examples/scripts.v2/newext create mode 100644 bash-20060316/examples/scripts.v2/nmv create mode 100644 bash-20060316/examples/scripts.v2/pages create mode 100644 bash-20060316/examples/scripts.v2/pf create mode 100644 bash-20060316/examples/scripts.v2/pmtop create mode 100644 bash-20060316/examples/scripts.v2/ren create mode 100644 bash-20060316/examples/scripts.v2/rename create mode 100644 bash-20060316/examples/scripts.v2/repeat create mode 100644 bash-20060316/examples/scripts.v2/shprof create mode 100644 bash-20060316/examples/scripts.v2/untar create mode 100644 bash-20060316/examples/scripts.v2/uudec create mode 100644 bash-20060316/examples/scripts.v2/uuenc create mode 100644 bash-20060316/examples/scripts.v2/vtree create mode 100644 bash-20060316/examples/scripts.v2/where create mode 100755 bash-20060316/examples/scripts/adventure.sh create mode 100755 bash-20060316/examples/scripts/adventure.sh.save1 create mode 100755 bash-20060316/examples/scripts/bcsh.sh create mode 100644 bash-20060316/examples/scripts/cat.sh create mode 100644 bash-20060316/examples/scripts/center create mode 100644 bash-20060316/examples/scripts/dd-ex.sh create mode 100644 bash-20060316/examples/scripts/fixfiles.bash create mode 100644 bash-20060316/examples/scripts/hanoi.bash create mode 100755 bash-20060316/examples/scripts/inpath create mode 100755 bash-20060316/examples/scripts/krand.bash create mode 100644 bash-20060316/examples/scripts/line-input.bash create mode 100644 bash-20060316/examples/scripts/nohup.bash create mode 100755 bash-20060316/examples/scripts/precedence create mode 100644 bash-20060316/examples/scripts/randomcard.bash create mode 100755 bash-20060316/examples/scripts/scrollbar create mode 100755 bash-20060316/examples/scripts/scrollbar2 create mode 100644 bash-20060316/examples/scripts/self-repro create mode 100644 bash-20060316/examples/scripts/showperm.bash create mode 100755 bash-20060316/examples/scripts/shprompt create mode 100644 bash-20060316/examples/scripts/spin.bash create mode 100644 bash-20060316/examples/scripts/timeout create mode 100755 bash-20060316/examples/scripts/vtree2 create mode 100644 bash-20060316/examples/scripts/vtree3 create mode 100644 bash-20060316/examples/scripts/vtree3a create mode 100644 bash-20060316/examples/scripts/websrv.sh create mode 100755 bash-20060316/examples/scripts/xterm_title create mode 100755 bash-20060316/examples/scripts/zprintf create mode 100644 bash-20060316/examples/startup-files/Bash_aliases create mode 100644 bash-20060316/examples/startup-files/Bash_profile create mode 100644 bash-20060316/examples/startup-files/Bashrc.bfox create mode 100644 bash-20060316/examples/startup-files/README create mode 100644 bash-20060316/examples/startup-files/apple/README create mode 100644 bash-20060316/examples/startup-files/apple/aliases create mode 100644 bash-20060316/examples/startup-files/apple/bash.defaults create mode 100644 bash-20060316/examples/startup-files/apple/environment create mode 100644 bash-20060316/examples/startup-files/apple/login create mode 100644 bash-20060316/examples/startup-files/apple/logout create mode 100644 bash-20060316/examples/startup-files/apple/rc create mode 100644 bash-20060316/examples/startup-files/bash-profile create mode 100644 bash-20060316/examples/startup-files/bashrc create mode 100644 bash-20060316/execute_cmd.c create mode 100644 bash-20060316/execute_cmd.h create mode 100644 bash-20060316/expr.c create mode 100644 bash-20060316/externs.h create mode 100644 bash-20060316/findcmd.c create mode 100644 bash-20060316/findcmd.h create mode 100644 bash-20060316/flags.c create mode 100644 bash-20060316/flags.h create mode 100644 bash-20060316/general.c create mode 100644 bash-20060316/general.h create mode 100644 bash-20060316/hashcmd.c create mode 100644 bash-20060316/hashcmd.h create mode 100644 bash-20060316/hashlib.c create mode 100644 bash-20060316/hashlib.h create mode 100644 bash-20060316/include/ansi_stdlib.h create mode 100644 bash-20060316/include/chartypes.h create mode 100644 bash-20060316/include/filecntl.h create mode 100644 bash-20060316/include/gettext.h create mode 100644 bash-20060316/include/maxpath.h create mode 100644 bash-20060316/include/memalloc.h create mode 100644 bash-20060316/include/memalloc.h.save create mode 100644 bash-20060316/include/ocache.h create mode 100644 bash-20060316/include/posixdir.h create mode 100644 bash-20060316/include/posixjmp.h create mode 100644 bash-20060316/include/posixstat.h create mode 100644 bash-20060316/include/posixtime.h create mode 100644 bash-20060316/include/posixwait.h create mode 100644 bash-20060316/include/shmbutil.h create mode 100644 bash-20060316/include/shtty.h create mode 100644 bash-20060316/include/stdc.h create mode 100644 bash-20060316/include/systimes.h create mode 100644 bash-20060316/include/typemax.h create mode 100644 bash-20060316/include/unionwait.h create mode 100644 bash-20060316/input.c create mode 100644 bash-20060316/input.h create mode 100644 bash-20060316/input.h~ create mode 100644 bash-20060316/jobs.c create mode 100644 bash-20060316/jobs.c.diff create mode 100644 bash-20060316/jobs.h create mode 100644 bash-20060316/lib/doc-support/Makefile.in create mode 100644 bash-20060316/lib/doc-support/getopt.c create mode 100644 bash-20060316/lib/doc-support/getopt.h create mode 100644 bash-20060316/lib/doc-support/getopt1.c create mode 100644 bash-20060316/lib/doc-support/texindex.c create mode 100644 bash-20060316/lib/glob/ChangeLog create mode 100644 bash-20060316/lib/glob/Makefile.in create mode 100644 bash-20060316/lib/glob/collsyms.h create mode 100644 bash-20060316/lib/glob/doc/Makefile create mode 100644 bash-20060316/lib/glob/doc/glob.texi create mode 100644 bash-20060316/lib/glob/glob.c create mode 100644 bash-20060316/lib/glob/glob.h create mode 100644 bash-20060316/lib/glob/glob_loop.c create mode 100644 bash-20060316/lib/glob/ndir.h create mode 100644 bash-20060316/lib/glob/sm_loop.c create mode 100644 bash-20060316/lib/glob/smatch.c create mode 100644 bash-20060316/lib/glob/strmatch.c create mode 100644 bash-20060316/lib/glob/strmatch.h create mode 100644 bash-20060316/lib/glob/xmbsrtowcs.c create mode 100644 bash-20060316/lib/intl/ChangeLog create mode 100644 bash-20060316/lib/intl/Makefile.in create mode 100644 bash-20060316/lib/intl/VERSION create mode 100644 bash-20060316/lib/intl/bindtextdom.c create mode 100755 bash-20060316/lib/intl/config.charset create mode 100644 bash-20060316/lib/intl/dcgettext.c create mode 100644 bash-20060316/lib/intl/dcigettext.c create mode 100644 bash-20060316/lib/intl/dcngettext.c create mode 100644 bash-20060316/lib/intl/dgettext.c create mode 100644 bash-20060316/lib/intl/dngettext.c create mode 100644 bash-20060316/lib/intl/eval-plural.h create mode 100644 bash-20060316/lib/intl/explodename.c create mode 100644 bash-20060316/lib/intl/finddomain.c create mode 100644 bash-20060316/lib/intl/gettext.c create mode 100644 bash-20060316/lib/intl/gettextP.h create mode 100644 bash-20060316/lib/intl/gmo.h create mode 100644 bash-20060316/lib/intl/hash-string.h create mode 100644 bash-20060316/lib/intl/intl-compat.c create mode 100644 bash-20060316/lib/intl/l10nflist.c create mode 100644 bash-20060316/lib/intl/libgnuintl.h.in create mode 100644 bash-20060316/lib/intl/loadinfo.h create mode 100644 bash-20060316/lib/intl/loadmsgcat.c create mode 100644 bash-20060316/lib/intl/localcharset.c create mode 100644 bash-20060316/lib/intl/localcharset.h create mode 100644 bash-20060316/lib/intl/locale.alias create mode 100644 bash-20060316/lib/intl/localealias.c create mode 100644 bash-20060316/lib/intl/localename.c create mode 100644 bash-20060316/lib/intl/log.c create mode 100644 bash-20060316/lib/intl/ngettext.c create mode 100644 bash-20060316/lib/intl/os2compat.c create mode 100644 bash-20060316/lib/intl/os2compat.h create mode 100644 bash-20060316/lib/intl/osdep.c create mode 100644 bash-20060316/lib/intl/plural-exp.c create mode 100644 bash-20060316/lib/intl/plural-exp.h create mode 100644 bash-20060316/lib/intl/plural.c create mode 100644 bash-20060316/lib/intl/plural.y create mode 100644 bash-20060316/lib/intl/ref-add.sin create mode 100644 bash-20060316/lib/intl/ref-del.sin create mode 100644 bash-20060316/lib/intl/relocatable.c create mode 100644 bash-20060316/lib/intl/relocatable.h create mode 100644 bash-20060316/lib/intl/textdomain.c create mode 100644 bash-20060316/lib/malloc/Makefile.in create mode 100644 bash-20060316/lib/malloc/OLD/gmalloc.c create mode 100644 bash-20060316/lib/malloc/OLD/ogmalloc.c create mode 100644 bash-20060316/lib/malloc/OLD/old-nmalloc.c create mode 100644 bash-20060316/lib/malloc/OLD/omalloc.c create mode 100644 bash-20060316/lib/malloc/alloca.c create mode 100644 bash-20060316/lib/malloc/getpagesize.h create mode 100644 bash-20060316/lib/malloc/i386-alloca.s create mode 100644 bash-20060316/lib/malloc/imalloc.h create mode 100644 bash-20060316/lib/malloc/malloc.c create mode 100644 bash-20060316/lib/malloc/memtest.c create mode 100644 bash-20060316/lib/malloc/mstats.h create mode 100644 bash-20060316/lib/malloc/shmalloc.h create mode 100644 bash-20060316/lib/malloc/stats.c create mode 100644 bash-20060316/lib/malloc/stub.c create mode 100644 bash-20060316/lib/malloc/table.c create mode 100644 bash-20060316/lib/malloc/table.h create mode 100644 bash-20060316/lib/malloc/trace.c create mode 100644 bash-20060316/lib/malloc/watch.c create mode 100644 bash-20060316/lib/malloc/watch.h create mode 100644 bash-20060316/lib/malloc/x386-alloca.s create mode 100755 bash-20060316/lib/malloc/xleaktrace create mode 100644 bash-20060316/lib/malloc/xmalloc.c create mode 100644 bash-20060316/lib/posixheaders.old/ansi_stdlib.h create mode 100644 bash-20060316/lib/posixheaders.old/filecntl.h create mode 100644 bash-20060316/lib/posixheaders.old/memalloc.h create mode 100644 bash-20060316/lib/posixheaders.old/posixdir.h create mode 100644 bash-20060316/lib/posixheaders.old/posixjmp.h create mode 100644 bash-20060316/lib/posixheaders.old/posixstat.h create mode 100644 bash-20060316/lib/posixheaders.old/stdc.h create mode 100644 bash-20060316/lib/readline/-i create mode 100644 bash-20060316/lib/readline/COPYING create mode 100644 bash-20060316/lib/readline/ChangeLog create mode 100644 bash-20060316/lib/readline/Makefile.in create mode 100644 bash-20060316/lib/readline/NEW/xxx-autocomplete create mode 100644 bash-20060316/lib/readline/README create mode 100644 bash-20060316/lib/readline/STANDALONE create mode 120000 bash-20060316/lib/readline/ansi_stdlib.h create mode 100644 bash-20060316/lib/readline/bind.c create mode 100644 bash-20060316/lib/readline/callback.c create mode 100644 bash-20060316/lib/readline/chardefs.h create mode 100644 bash-20060316/lib/readline/compat.c create mode 100644 bash-20060316/lib/readline/complete.c create mode 100644 bash-20060316/lib/readline/display.c create mode 100644 bash-20060316/lib/readline/doc/Makefile create mode 100644 bash-20060316/lib/readline/doc/Makefile.in create mode 100644 bash-20060316/lib/readline/doc/Makefile.old create mode 120000 bash-20060316/lib/readline/doc/fdl.texi create mode 100644 bash-20060316/lib/readline/doc/history.3 create mode 100644 bash-20060316/lib/readline/doc/history.aux create mode 100644 bash-20060316/lib/readline/doc/history.bt create mode 100644 bash-20060316/lib/readline/doc/history.cp create mode 100644 bash-20060316/lib/readline/doc/history.cps create mode 100644 bash-20060316/lib/readline/doc/history.dvi create mode 100644 bash-20060316/lib/readline/doc/history.fn create mode 100644 bash-20060316/lib/readline/doc/history.html create mode 100644 bash-20060316/lib/readline/doc/history.info create mode 100644 bash-20060316/lib/readline/doc/history.ky create mode 100644 bash-20060316/lib/readline/doc/history.log create mode 100644 bash-20060316/lib/readline/doc/history.pg create mode 100644 bash-20060316/lib/readline/doc/history.ps create mode 100644 bash-20060316/lib/readline/doc/history.texi create mode 100644 bash-20060316/lib/readline/doc/history.toc create mode 100644 bash-20060316/lib/readline/doc/history.tp create mode 100644 bash-20060316/lib/readline/doc/history.vr create mode 100644 bash-20060316/lib/readline/doc/history.vrs create mode 100644 bash-20060316/lib/readline/doc/hstech.texi create mode 100644 bash-20060316/lib/readline/doc/hsuser.texi create mode 100644 bash-20060316/lib/readline/doc/readline.3 create mode 100644 bash-20060316/lib/readline/doc/readline.dvi create mode 100644 bash-20060316/lib/readline/doc/readline.html create mode 100644 bash-20060316/lib/readline/doc/readline.info create mode 100644 bash-20060316/lib/readline/doc/readline.ps create mode 100644 bash-20060316/lib/readline/doc/rlman.aux create mode 100644 bash-20060316/lib/readline/doc/rlman.bt create mode 100644 bash-20060316/lib/readline/doc/rlman.cp create mode 100644 bash-20060316/lib/readline/doc/rlman.cps create mode 100644 bash-20060316/lib/readline/doc/rlman.fn create mode 100644 bash-20060316/lib/readline/doc/rlman.fns create mode 100644 bash-20060316/lib/readline/doc/rlman.ky create mode 100644 bash-20060316/lib/readline/doc/rlman.log create mode 100644 bash-20060316/lib/readline/doc/rlman.pg create mode 100644 bash-20060316/lib/readline/doc/rlman.texi create mode 100644 bash-20060316/lib/readline/doc/rlman.toc create mode 100644 bash-20060316/lib/readline/doc/rlman.tp create mode 100644 bash-20060316/lib/readline/doc/rlman.vr create mode 100644 bash-20060316/lib/readline/doc/rltech.texi create mode 100644 bash-20060316/lib/readline/doc/rluser.texi create mode 100644 bash-20060316/lib/readline/doc/rluserman.aux create mode 100644 bash-20060316/lib/readline/doc/rluserman.bt create mode 100644 bash-20060316/lib/readline/doc/rluserman.cp create mode 100644 bash-20060316/lib/readline/doc/rluserman.cps create mode 100644 bash-20060316/lib/readline/doc/rluserman.dvi create mode 100644 bash-20060316/lib/readline/doc/rluserman.fn create mode 100644 bash-20060316/lib/readline/doc/rluserman.fns create mode 100644 bash-20060316/lib/readline/doc/rluserman.html create mode 100644 bash-20060316/lib/readline/doc/rluserman.info create mode 100644 bash-20060316/lib/readline/doc/rluserman.ky create mode 100644 bash-20060316/lib/readline/doc/rluserman.log create mode 100644 bash-20060316/lib/readline/doc/rluserman.pg create mode 100644 bash-20060316/lib/readline/doc/rluserman.ps create mode 100644 bash-20060316/lib/readline/doc/rluserman.texi create mode 100644 bash-20060316/lib/readline/doc/rluserman.toc create mode 100644 bash-20060316/lib/readline/doc/rluserman.tp create mode 100644 bash-20060316/lib/readline/doc/rluserman.vr create mode 100644 bash-20060316/lib/readline/doc/rluserman.vrs create mode 120000 bash-20060316/lib/readline/doc/texi2dvi create mode 120000 bash-20060316/lib/readline/doc/texi2html create mode 120000 bash-20060316/lib/readline/doc/texinfo.tex create mode 100644 bash-20060316/lib/readline/doc/version.texi create mode 100644 bash-20060316/lib/readline/emacs_keymap.c create mode 100644 bash-20060316/lib/readline/examples/Inputrc create mode 100644 bash-20060316/lib/readline/examples/Makefile create mode 100644 bash-20060316/lib/readline/examples/excallback.c create mode 100644 bash-20060316/lib/readline/examples/fileman.c create mode 100644 bash-20060316/lib/readline/examples/histexamp.c create mode 100644 bash-20060316/lib/readline/examples/manexamp.c create mode 100644 bash-20060316/lib/readline/examples/rl.c create mode 100644 bash-20060316/lib/readline/examples/rlcat.c create mode 100644 bash-20060316/lib/readline/examples/rlptytest.c create mode 100644 bash-20060316/lib/readline/examples/rltest.c create mode 100644 bash-20060316/lib/readline/funmap.c create mode 100644 bash-20060316/lib/readline/histexpand.c create mode 100644 bash-20060316/lib/readline/histfile.c create mode 100644 bash-20060316/lib/readline/histlib.h create mode 100644 bash-20060316/lib/readline/history.c create mode 100644 bash-20060316/lib/readline/history.h create mode 100644 bash-20060316/lib/readline/histsearch.c create mode 100644 bash-20060316/lib/readline/input.c create mode 100644 bash-20060316/lib/readline/isearch.c create mode 100644 bash-20060316/lib/readline/isearch.c.orig create mode 100644 bash-20060316/lib/readline/keymaps.c create mode 100644 bash-20060316/lib/readline/keymaps.h create mode 100644 bash-20060316/lib/readline/kill.c create mode 100644 bash-20060316/lib/readline/macro.c create mode 100644 bash-20060316/lib/readline/mbutil.c create mode 100644 bash-20060316/lib/readline/misc.c create mode 100644 bash-20060316/lib/readline/nls.c create mode 100644 bash-20060316/lib/readline/parens.c create mode 120000 bash-20060316/lib/readline/posixdir.h create mode 120000 bash-20060316/lib/readline/posixjmp.h create mode 120000 bash-20060316/lib/readline/posixstat.h create mode 100644 bash-20060316/lib/readline/readline.c create mode 100644 bash-20060316/lib/readline/readline.h create mode 100644 bash-20060316/lib/readline/rlconf.h create mode 100644 bash-20060316/lib/readline/rldefs.h create mode 100644 bash-20060316/lib/readline/rlmbutil.h create mode 100644 bash-20060316/lib/readline/rlprivate.h create mode 100644 bash-20060316/lib/readline/rlshell.h create mode 100644 bash-20060316/lib/readline/rlstdc.h create mode 100644 bash-20060316/lib/readline/rltty.c create mode 100644 bash-20060316/lib/readline/rltty.h create mode 100644 bash-20060316/lib/readline/rltypedefs.h create mode 100644 bash-20060316/lib/readline/rlwinsize.h create mode 100644 bash-20060316/lib/readline/savestring.c create mode 100644 bash-20060316/lib/readline/search.c create mode 100644 bash-20060316/lib/readline/shell.c create mode 100644 bash-20060316/lib/readline/signals.c create mode 100644 bash-20060316/lib/readline/tcap.h create mode 100644 bash-20060316/lib/readline/terminal.c create mode 100644 bash-20060316/lib/readline/text.c create mode 120000 bash-20060316/lib/readline/tilde.c create mode 120000 bash-20060316/lib/readline/tilde.h create mode 100644 bash-20060316/lib/readline/undo.c create mode 100644 bash-20060316/lib/readline/util.c create mode 100644 bash-20060316/lib/readline/vi_keymap.c create mode 100644 bash-20060316/lib/readline/vi_mode.c create mode 100644 bash-20060316/lib/readline/xmalloc.c create mode 100644 bash-20060316/lib/readline/xmalloc.h create mode 100644 bash-20060316/lib/sh/Makefile.in create mode 100644 bash-20060316/lib/sh/clktck.c create mode 100644 bash-20060316/lib/sh/clock.c create mode 100644 bash-20060316/lib/sh/eaccess.c create mode 100644 bash-20060316/lib/sh/fmtullong.c create mode 100644 bash-20060316/lib/sh/fmtulong.c create mode 100644 bash-20060316/lib/sh/fmtumax.c create mode 100644 bash-20060316/lib/sh/getcwd.c create mode 100644 bash-20060316/lib/sh/getenv.c create mode 100644 bash-20060316/lib/sh/inet_aton.c create mode 100644 bash-20060316/lib/sh/itos.c create mode 100644 bash-20060316/lib/sh/mailstat.c create mode 100644 bash-20060316/lib/sh/makepath.c create mode 100644 bash-20060316/lib/sh/memset.c create mode 100644 bash-20060316/lib/sh/mktime.c create mode 100644 bash-20060316/lib/sh/netconn.c create mode 100644 bash-20060316/lib/sh/netopen.c create mode 100644 bash-20060316/lib/sh/oslib.c create mode 100644 bash-20060316/lib/sh/pathcanon.c create mode 100644 bash-20060316/lib/sh/pathphys.c create mode 100644 bash-20060316/lib/sh/rename.c create mode 100644 bash-20060316/lib/sh/setlinebuf.c create mode 100644 bash-20060316/lib/sh/shmatch.c create mode 100644 bash-20060316/lib/sh/shquote.c create mode 100644 bash-20060316/lib/sh/shtty.c create mode 100644 bash-20060316/lib/sh/snprintf.c create mode 100644 bash-20060316/lib/sh/spell.c create mode 100644 bash-20060316/lib/sh/strcasecmp.c create mode 100644 bash-20060316/lib/sh/strerror.c create mode 100644 bash-20060316/lib/sh/strftime.c create mode 100644 bash-20060316/lib/sh/strindex.c create mode 100644 bash-20060316/lib/sh/stringlist.c create mode 100644 bash-20060316/lib/sh/stringvec.c create mode 100644 bash-20060316/lib/sh/strnlen.c create mode 100644 bash-20060316/lib/sh/strpbrk.c create mode 100644 bash-20060316/lib/sh/strstr.c create mode 100644 bash-20060316/lib/sh/strtod.c create mode 100644 bash-20060316/lib/sh/strtoimax.c create mode 100644 bash-20060316/lib/sh/strtol.c create mode 100644 bash-20060316/lib/sh/strtoll.c create mode 100644 bash-20060316/lib/sh/strtoul.c create mode 100644 bash-20060316/lib/sh/strtoull.c create mode 100644 bash-20060316/lib/sh/strtoumax.c create mode 100644 bash-20060316/lib/sh/strtrans.c create mode 100644 bash-20060316/lib/sh/times.c create mode 100644 bash-20060316/lib/sh/timeval.c create mode 100644 bash-20060316/lib/sh/tmpfile.c create mode 100644 bash-20060316/lib/sh/vprint.c create mode 100644 bash-20060316/lib/sh/winsize.c create mode 100644 bash-20060316/lib/sh/xstrchr.c create mode 100644 bash-20060316/lib/sh/zcatfd.c create mode 100644 bash-20060316/lib/sh/zread.c create mode 100644 bash-20060316/lib/sh/zwrite.c create mode 100644 bash-20060316/lib/termcap/Makefile.in create mode 100644 bash-20060316/lib/termcap/grot/COPYING create mode 100644 bash-20060316/lib/termcap/grot/ChangeLog create mode 100644 bash-20060316/lib/termcap/grot/INSTALL create mode 100644 bash-20060316/lib/termcap/grot/Makefile.in create mode 100644 bash-20060316/lib/termcap/grot/NEWS create mode 100644 bash-20060316/lib/termcap/grot/README create mode 100755 bash-20060316/lib/termcap/grot/configure create mode 100644 bash-20060316/lib/termcap/grot/configure.in create mode 100644 bash-20060316/lib/termcap/grot/termcap.info create mode 100644 bash-20060316/lib/termcap/grot/termcap.info-1 create mode 100644 bash-20060316/lib/termcap/grot/termcap.info-2 create mode 100644 bash-20060316/lib/termcap/grot/termcap.info-3 create mode 100644 bash-20060316/lib/termcap/grot/termcap.info-4 create mode 100644 bash-20060316/lib/termcap/grot/termcap.src create mode 100644 bash-20060316/lib/termcap/grot/termcap.texi create mode 100644 bash-20060316/lib/termcap/grot/texinfo.tex create mode 100644 bash-20060316/lib/termcap/ltcap.h create mode 100644 bash-20060316/lib/termcap/termcap.c create mode 100644 bash-20060316/lib/termcap/termcap.h create mode 100644 bash-20060316/lib/termcap/tparam.c create mode 100644 bash-20060316/lib/termcap/version.c create mode 100644 bash-20060316/lib/tilde/ChangeLog create mode 100644 bash-20060316/lib/tilde/Makefile.in create mode 100644 bash-20060316/lib/tilde/README create mode 100644 bash-20060316/lib/tilde/doc/Makefile create mode 100644 bash-20060316/lib/tilde/doc/tilde.texi create mode 100644 bash-20060316/lib/tilde/shell.c create mode 100644 bash-20060316/lib/tilde/tilde.c create mode 100644 bash-20060316/lib/tilde/tilde.h create mode 100644 bash-20060316/list.c create mode 100644 bash-20060316/locale.c create mode 100644 bash-20060316/mailcheck.c create mode 100644 bash-20060316/mailcheck.h create mode 100644 bash-20060316/make_cmd.c create mode 100644 bash-20060316/make_cmd.h create mode 100644 bash-20060316/mksyntax.c create mode 100644 bash-20060316/nojobs.c create mode 100644 bash-20060316/parse.y create mode 100644 bash-20060316/parse.y.save26 create mode 100644 bash-20060316/parse.y~ create mode 100644 bash-20060316/parser.h create mode 100644 bash-20060316/patchlevel.h create mode 100644 bash-20060316/pathexp.c create mode 100644 bash-20060316/pathexp.h create mode 100644 bash-20060316/pathnames.h.in create mode 100644 bash-20060316/pcomplete.c create mode 100644 bash-20060316/pcomplete.h create mode 100644 bash-20060316/pcomplib.c create mode 100644 bash-20060316/po/LINGUAS create mode 100644 bash-20060316/po/Makefile.in.in create mode 100644 bash-20060316/po/Makevars create mode 100644 bash-20060316/po/Makevars.template create mode 100644 bash-20060316/po/POTFILES.in create mode 100644 bash-20060316/po/README create mode 100644 bash-20060316/po/Rules-builtins create mode 100644 bash-20060316/po/Rules-quot create mode 100644 bash-20060316/po/bash.pot create mode 100644 bash-20060316/po/boldquot.sed create mode 100644 bash-20060316/po/en@boldquot.gmo create mode 100644 bash-20060316/po/en@boldquot.header create mode 100644 bash-20060316/po/en@boldquot.po create mode 100644 bash-20060316/po/en@quot.gmo create mode 100644 bash-20060316/po/en@quot.header create mode 100644 bash-20060316/po/en@quot.po create mode 100644 bash-20060316/po/insert-header.sin create mode 100644 bash-20060316/po/quot.sed create mode 100644 bash-20060316/po/readline.po create mode 100644 bash-20060316/po/remove-potcdate.sin create mode 100644 bash-20060316/po/ru.po create mode 100644 bash-20060316/print_cmd.c create mode 100644 bash-20060316/quit.h create mode 100644 bash-20060316/redir.c create mode 100644 bash-20060316/redir.h create mode 100644 bash-20060316/shell.c create mode 100644 bash-20060316/shell.h create mode 100644 bash-20060316/sig.c create mode 100644 bash-20060316/sig.h create mode 100644 bash-20060316/siglist.c create mode 100644 bash-20060316/siglist.h create mode 100644 bash-20060316/stringlib.c create mode 100644 bash-20060316/subst.c create mode 100644 bash-20060316/subst.h create mode 100644 bash-20060316/support/Makefile.in create mode 100644 bash-20060316/support/SYMLINKS create mode 100644 bash-20060316/support/bash.icon.ps create mode 100644 bash-20060316/support/bash.install create mode 100644 bash-20060316/support/bash.xbm create mode 100644 bash-20060316/support/bash.xv create mode 100644 bash-20060316/support/bashbug.sh create mode 100644 bash-20060316/support/bashversion.c create mode 100755 bash-20060316/support/config.guess create mode 100755 bash-20060316/support/config.rpath create mode 100755 bash-20060316/support/config.sub create mode 100644 bash-20060316/support/deblank.sh create mode 100644 bash-20060316/support/endian.c create mode 100755 bash-20060316/support/fixlinks create mode 100755 bash-20060316/support/install.sh create mode 100755 bash-20060316/support/mail-shell create mode 100644 bash-20060316/support/man2html.c create mode 100644 bash-20060316/support/memtest.c create mode 100755 bash-20060316/support/missing create mode 100755 bash-20060316/support/mk-takehome create mode 100755 bash-20060316/support/mkclone create mode 100644 bash-20060316/support/mkconffiles create mode 100755 bash-20060316/support/mkdep create mode 100755 bash-20060316/support/mkdirs create mode 100755 bash-20060316/support/mkdist create mode 100755 bash-20060316/support/mkdocdist create mode 100755 bash-20060316/support/mkinstalldirs create mode 100644 bash-20060316/support/mknewvers.sh create mode 100644 bash-20060316/support/mksignames.c create mode 100755 bash-20060316/support/mksnap create mode 100644 bash-20060316/support/mkversion.sh create mode 100644 bash-20060316/support/printenv.c create mode 100755 bash-20060316/support/printenv.sh create mode 100644 bash-20060316/support/recho.c create mode 100644 bash-20060316/support/rlvers.sh create mode 100755 bash-20060316/support/shobj-conf create mode 100644 bash-20060316/support/signames.c create mode 100755 bash-20060316/support/texi2dvi create mode 100755 bash-20060316/support/texi2dvi-0.43 create mode 100755 bash-20060316/support/texi2dvi-0.46 create mode 100755 bash-20060316/support/texi2dvi-1.14 create mode 100755 bash-20060316/support/texi2html create mode 100755 bash-20060316/support/texi2html-1.64 create mode 100755 bash-20060316/support/xenix-link.sh create mode 100644 bash-20060316/support/zecho.c create mode 100644 bash-20060316/syntax.h create mode 100644 bash-20060316/test.c create mode 100644 bash-20060316/test.h create mode 100644 bash-20060316/tests/-i create mode 100644 bash-20060316/tests/README create mode 100755 bash-20060316/tests/RUN-ONE-TEST create mode 100755 bash-20060316/tests/RUN-TEST-SCRIPT create mode 100644 bash-20060316/tests/alias.right create mode 100644 bash-20060316/tests/alias.tests create mode 100644 bash-20060316/tests/appendop.right create mode 100644 bash-20060316/tests/appendop.tests create mode 100644 bash-20060316/tests/arith-for.right create mode 100644 bash-20060316/tests/arith-for.tests create mode 100644 bash-20060316/tests/arith.right create mode 100644 bash-20060316/tests/arith.tests create mode 100644 bash-20060316/tests/arith1.sub create mode 100644 bash-20060316/tests/arith2.sub create mode 100755 bash-20060316/tests/array-at-star create mode 100644 bash-20060316/tests/array.right create mode 100644 bash-20060316/tests/array.tests create mode 100644 bash-20060316/tests/array1.sub create mode 100644 bash-20060316/tests/array2.right create mode 100644 bash-20060316/tests/array2.sub create mode 100644 bash-20060316/tests/array3.sub create mode 100644 bash-20060316/tests/array4.sub create mode 100644 bash-20060316/tests/braces.right create mode 100644 bash-20060316/tests/braces.tests create mode 100644 bash-20060316/tests/builtins.right create mode 100644 bash-20060316/tests/builtins.tests create mode 100644 bash-20060316/tests/builtins1.sub create mode 100644 bash-20060316/tests/builtins2.sub create mode 100644 bash-20060316/tests/cond.right create mode 100755 bash-20060316/tests/cond.tests create mode 100644 bash-20060316/tests/cprint.right create mode 100644 bash-20060316/tests/cprint.right.save1 create mode 100644 bash-20060316/tests/cprint.tests create mode 100644 bash-20060316/tests/cracauer-testsuite/DOC create mode 100644 bash-20060316/tests/cracauer-testsuite/Makefile create mode 100644 bash-20060316/tests/cracauer-testsuite/OBSERVATIONS create mode 100644 bash-20060316/tests/cracauer-testsuite/QUESTIONS create mode 100644 bash-20060316/tests/cracauer-testsuite/catcher.c create mode 100644 bash-20060316/tests/cracauer-testsuite/lib.csh create mode 100644 bash-20060316/tests/cracauer-testsuite/lib.sh create mode 100644 bash-20060316/tests/cracauer-testsuite/test01.csh create mode 100644 bash-20060316/tests/cracauer-testsuite/test01.sh create mode 100644 bash-20060316/tests/cracauer-testsuite/test02.csh create mode 100644 bash-20060316/tests/cracauer-testsuite/test02.sh create mode 100644 bash-20060316/tests/cracauer-testsuite/test03.sh create mode 100644 bash-20060316/tests/cracauer-testsuite/test04.sh create mode 100644 bash-20060316/tests/cracauer-testsuite/test05.sh create mode 100644 bash-20060316/tests/cracauer-testsuite/test06.sh create mode 100644 bash-20060316/tests/cracauer-testsuite/test07.csh create mode 100644 bash-20060316/tests/cracauer-testsuite/test07.sh create mode 100644 bash-20060316/tests/cracauer-testsuite/test08.sh create mode 100644 bash-20060316/tests/cracauer-testsuite/test09.sh create mode 100644 bash-20060316/tests/cracauer-testsuite/test10.sh create mode 100644 bash-20060316/tests/cracauer-testsuite/test11.sh create mode 100644 bash-20060316/tests/cracauer-testsuite/test12.sh create mode 100644 bash-20060316/tests/cracauer-testsuite/test13.sh create mode 100644 bash-20060316/tests/dbg-support.right create mode 100644 bash-20060316/tests/dbg-support.sub create mode 100755 bash-20060316/tests/dbg-support.tests create mode 100644 bash-20060316/tests/dbg-support2.right create mode 100755 bash-20060316/tests/dbg-support2.tests create mode 100755 bash-20060316/tests/dollar-at-star create mode 100644 bash-20060316/tests/dollar-at1.sub create mode 100644 bash-20060316/tests/dollar-at2.sub create mode 100644 bash-20060316/tests/dollar-star1.sub create mode 100644 bash-20060316/tests/dollar-star2.sub create mode 100644 bash-20060316/tests/dollar.right create mode 100644 bash-20060316/tests/dstack.right create mode 100644 bash-20060316/tests/dstack.tests create mode 100644 bash-20060316/tests/dstack2.right create mode 100644 bash-20060316/tests/dstack2.tests create mode 100644 bash-20060316/tests/errors.right create mode 100644 bash-20060316/tests/errors.tests create mode 100644 bash-20060316/tests/exec.right create mode 100755 bash-20060316/tests/exec1.sub create mode 100644 bash-20060316/tests/exec2.sub create mode 100644 bash-20060316/tests/exec3.sub create mode 100644 bash-20060316/tests/exec4.sub create mode 100644 bash-20060316/tests/exec5.sub create mode 100644 bash-20060316/tests/exec6.sub create mode 100644 bash-20060316/tests/exec7.sub create mode 100644 bash-20060316/tests/execscript create mode 100644 bash-20060316/tests/exp-tests create mode 100644 bash-20060316/tests/exp.right create mode 100644 bash-20060316/tests/extglob.right create mode 100644 bash-20060316/tests/extglob.tests create mode 100644 bash-20060316/tests/extglob1.sub create mode 100644 bash-20060316/tests/extglob2.right create mode 100755 bash-20060316/tests/extglob2.tests create mode 100644 bash-20060316/tests/extglob3.right create mode 100644 bash-20060316/tests/extglob3.tests create mode 100644 bash-20060316/tests/func.right create mode 100644 bash-20060316/tests/func.tests create mode 100644 bash-20060316/tests/func1.sub create mode 100644 bash-20060316/tests/func2.sub create mode 100644 bash-20060316/tests/func3.sub create mode 100644 bash-20060316/tests/getopts.right create mode 100644 bash-20060316/tests/getopts.tests create mode 100644 bash-20060316/tests/getopts1.sub create mode 100644 bash-20060316/tests/getopts2.sub create mode 100644 bash-20060316/tests/getopts3.sub create mode 100644 bash-20060316/tests/getopts4.sub create mode 100644 bash-20060316/tests/getopts5.sub create mode 100644 bash-20060316/tests/getopts6.sub create mode 100644 bash-20060316/tests/getopts7.sub create mode 100644 bash-20060316/tests/glob-test create mode 100644 bash-20060316/tests/glob.right create mode 100644 bash-20060316/tests/glob1.sub create mode 100644 bash-20060316/tests/heredoc.right create mode 100644 bash-20060316/tests/heredoc.tests create mode 100644 bash-20060316/tests/herestr.right create mode 100644 bash-20060316/tests/herestr.tests create mode 100644 bash-20060316/tests/histexp.right create mode 100644 bash-20060316/tests/histexp.tests create mode 100644 bash-20060316/tests/history.list create mode 100644 bash-20060316/tests/history.right create mode 100644 bash-20060316/tests/history.tests create mode 100644 bash-20060316/tests/history.tests.save create mode 100644 bash-20060316/tests/ifs-posix.right create mode 100644 bash-20060316/tests/ifs-posix.tests create mode 100644 bash-20060316/tests/ifs.right create mode 100644 bash-20060316/tests/ifs.tests create mode 100644 bash-20060316/tests/input-line.sh create mode 100644 bash-20060316/tests/input-line.sub create mode 100644 bash-20060316/tests/input.right create mode 100644 bash-20060316/tests/intl.right create mode 100644 bash-20060316/tests/intl.tests create mode 100644 bash-20060316/tests/invert.right create mode 100644 bash-20060316/tests/invert.tests create mode 100644 bash-20060316/tests/iquote.right create mode 100644 bash-20060316/tests/iquote.tests create mode 100644 bash-20060316/tests/jobs.right create mode 100644 bash-20060316/tests/jobs.tests create mode 100644 bash-20060316/tests/jobs1.sub create mode 100644 bash-20060316/tests/jobs2.sub create mode 100644 bash-20060316/tests/jobs3.sub create mode 100644 bash-20060316/tests/jobs4.sub create mode 100644 bash-20060316/tests/misc/dev-tcp.tests create mode 100644 bash-20060316/tests/misc/input-line-2.sh create mode 100644 bash-20060316/tests/misc/minus-e create mode 100644 bash-20060316/tests/misc/minus-e.right create mode 100644 bash-20060316/tests/misc/perf-script create mode 100644 bash-20060316/tests/misc/perftest create mode 100644 bash-20060316/tests/misc/read-nchars-int.tests create mode 100644 bash-20060316/tests/misc/read-nchars.tests create mode 100644 bash-20060316/tests/misc/redir-t2.sh create mode 100644 bash-20060316/tests/misc/regress/README create mode 100644 bash-20060316/tests/misc/regress/geoff.post create mode 100644 bash-20060316/tests/misc/regress/getdate.mk create mode 100644 bash-20060316/tests/misc/regress/getdate.y create mode 100644 bash-20060316/tests/misc/regress/log.orig create mode 100644 bash-20060316/tests/misc/regress/shx create mode 100644 bash-20060316/tests/misc/regress/shx.orig create mode 100644 bash-20060316/tests/misc/regress/shx1 create mode 100644 bash-20060316/tests/misc/regress/shx2 create mode 100644 bash-20060316/tests/misc/regress/shx3 create mode 100644 bash-20060316/tests/misc/regress/shx4 create mode 100644 bash-20060316/tests/misc/regress/shx5 create mode 100644 bash-20060316/tests/misc/regress/shx7 create mode 100644 bash-20060316/tests/misc/regress/shx8 create mode 100644 bash-20060316/tests/misc/run-input-test-2 create mode 100644 bash-20060316/tests/misc/run-minus-e create mode 100755 bash-20060316/tests/misc/run-r2.sh create mode 100755 bash-20060316/tests/misc/sigint-1.sh create mode 100755 bash-20060316/tests/misc/sigint-2.sh create mode 100755 bash-20060316/tests/misc/sigint-3.sh create mode 100755 bash-20060316/tests/misc/sigint-4.sh create mode 100644 bash-20060316/tests/misc/test-minus-e.1 create mode 100644 bash-20060316/tests/misc/test-minus-e.2 create mode 100644 bash-20060316/tests/misc/test.patmatch create mode 100644 bash-20060316/tests/misc/wait-bg.tests create mode 100644 bash-20060316/tests/more-exp.right create mode 100644 bash-20060316/tests/more-exp.tests create mode 100644 bash-20060316/tests/new-exp.right create mode 100644 bash-20060316/tests/new-exp.tests create mode 100644 bash-20060316/tests/new-exp1.sub create mode 100644 bash-20060316/tests/new-exp2.sub create mode 100644 bash-20060316/tests/new-exp3.sub create mode 100644 bash-20060316/tests/new-exp4.sub create mode 100644 bash-20060316/tests/new-exp5.sub create mode 100644 bash-20060316/tests/nquote.right create mode 100644 bash-20060316/tests/nquote.tests create mode 100644 bash-20060316/tests/nquote1.right create mode 100644 bash-20060316/tests/nquote1.tests create mode 100644 bash-20060316/tests/nquote2.right create mode 100644 bash-20060316/tests/nquote2.tests create mode 100644 bash-20060316/tests/nquote3.right create mode 100644 bash-20060316/tests/nquote3.tests create mode 100644 bash-20060316/tests/nquote4.right create mode 100644 bash-20060316/tests/nquote4.tests create mode 100644 bash-20060316/tests/posix-ifs.sh create mode 100644 bash-20060316/tests/posix2.right create mode 100644 bash-20060316/tests/posix2.tests create mode 100644 bash-20060316/tests/posixpat.right create mode 100644 bash-20060316/tests/posixpat.tests create mode 100644 bash-20060316/tests/prec.right create mode 100755 bash-20060316/tests/precedence create mode 100644 bash-20060316/tests/printf.right create mode 100644 bash-20060316/tests/printf.tests create mode 100644 bash-20060316/tests/printf1.sub create mode 100644 bash-20060316/tests/quote.right create mode 100644 bash-20060316/tests/quote.tests create mode 100644 bash-20060316/tests/read.right create mode 100644 bash-20060316/tests/read.tests create mode 100644 bash-20060316/tests/read1.sub create mode 100644 bash-20060316/tests/read2.sub create mode 100644 bash-20060316/tests/read3.sub create mode 100644 bash-20060316/tests/read4.sub create mode 100644 bash-20060316/tests/read5.sub create mode 100644 bash-20060316/tests/redir.right create mode 100644 bash-20060316/tests/redir.tests create mode 100644 bash-20060316/tests/redir1.sub create mode 100644 bash-20060316/tests/redir2.sub create mode 100644 bash-20060316/tests/redir3.in1 create mode 100644 bash-20060316/tests/redir3.in2 create mode 100644 bash-20060316/tests/redir3.sub create mode 100644 bash-20060316/tests/redir4.in1 create mode 100644 bash-20060316/tests/redir4.sub create mode 100644 bash-20060316/tests/redir5.sub create mode 100644 bash-20060316/tests/redir6.sub create mode 100644 bash-20060316/tests/redir7.sub create mode 100644 bash-20060316/tests/rhs-exp.right create mode 100644 bash-20060316/tests/rhs-exp.tests create mode 100644 bash-20060316/tests/rsh.right create mode 100644 bash-20060316/tests/rsh.tests create mode 100644 bash-20060316/tests/run-alias create mode 100644 bash-20060316/tests/run-all create mode 100644 bash-20060316/tests/run-appendop create mode 100644 bash-20060316/tests/run-arith create mode 100644 bash-20060316/tests/run-arith-for create mode 100644 bash-20060316/tests/run-array create mode 100644 bash-20060316/tests/run-array2 create mode 100644 bash-20060316/tests/run-braces create mode 100644 bash-20060316/tests/run-builtins create mode 100644 bash-20060316/tests/run-cond create mode 100644 bash-20060316/tests/run-cprint create mode 100755 bash-20060316/tests/run-dbg-support create mode 100755 bash-20060316/tests/run-dbg-support2 create mode 100644 bash-20060316/tests/run-dirstack create mode 100644 bash-20060316/tests/run-dollars create mode 100644 bash-20060316/tests/run-errors create mode 100644 bash-20060316/tests/run-execscript create mode 100644 bash-20060316/tests/run-exp-tests create mode 100644 bash-20060316/tests/run-extglob create mode 100644 bash-20060316/tests/run-extglob2 create mode 100644 bash-20060316/tests/run-extglob3 create mode 100644 bash-20060316/tests/run-func create mode 100644 bash-20060316/tests/run-getopts create mode 100644 bash-20060316/tests/run-glob-test create mode 100644 bash-20060316/tests/run-gprof create mode 100644 bash-20060316/tests/run-heredoc create mode 100644 bash-20060316/tests/run-herestr create mode 100644 bash-20060316/tests/run-histexpand create mode 100644 bash-20060316/tests/run-history create mode 100644 bash-20060316/tests/run-ifs create mode 100644 bash-20060316/tests/run-ifs-posix create mode 100644 bash-20060316/tests/run-input-test create mode 100644 bash-20060316/tests/run-intl create mode 100644 bash-20060316/tests/run-invert create mode 100644 bash-20060316/tests/run-iquote create mode 100644 bash-20060316/tests/run-jobs create mode 100644 bash-20060316/tests/run-minimal create mode 100644 bash-20060316/tests/run-more-exp create mode 100644 bash-20060316/tests/run-new-exp create mode 100644 bash-20060316/tests/run-nquote create mode 100644 bash-20060316/tests/run-nquote1 create mode 100644 bash-20060316/tests/run-nquote2 create mode 100644 bash-20060316/tests/run-nquote3 create mode 100644 bash-20060316/tests/run-nquote4 create mode 100644 bash-20060316/tests/run-posix2 create mode 100644 bash-20060316/tests/run-posixpat create mode 100644 bash-20060316/tests/run-precedence create mode 100644 bash-20060316/tests/run-printf create mode 100644 bash-20060316/tests/run-quote create mode 100644 bash-20060316/tests/run-read create mode 100644 bash-20060316/tests/run-redir create mode 100644 bash-20060316/tests/run-rhs-exp create mode 100644 bash-20060316/tests/run-rsh create mode 100644 bash-20060316/tests/run-set-e create mode 100755 bash-20060316/tests/run-set-x create mode 100644 bash-20060316/tests/run-shopt create mode 100644 bash-20060316/tests/run-strip create mode 100644 bash-20060316/tests/run-test create mode 100644 bash-20060316/tests/run-tilde create mode 100644 bash-20060316/tests/run-tilde2 create mode 100644 bash-20060316/tests/run-trap create mode 100644 bash-20060316/tests/run-type create mode 100644 bash-20060316/tests/run-varenv create mode 100644 bash-20060316/tests/set-e-test create mode 100644 bash-20060316/tests/set-e.right create mode 100644 bash-20060316/tests/set-x.right create mode 100755 bash-20060316/tests/set-x.tests create mode 100644 bash-20060316/tests/shopt.right create mode 100644 bash-20060316/tests/shopt.tests create mode 100644 bash-20060316/tests/source1.sub create mode 100644 bash-20060316/tests/source2.sub create mode 100644 bash-20060316/tests/source3.sub create mode 100644 bash-20060316/tests/source4.sub create mode 100644 bash-20060316/tests/source5.sub create mode 100644 bash-20060316/tests/strip.right create mode 100644 bash-20060316/tests/strip.tests create mode 100644 bash-20060316/tests/test.right create mode 100644 bash-20060316/tests/test.tests create mode 100644 bash-20060316/tests/tilde.right create mode 100644 bash-20060316/tests/tilde.tests create mode 100644 bash-20060316/tests/tilde2.right create mode 100644 bash-20060316/tests/tilde2.tests create mode 100644 bash-20060316/tests/time.tests create mode 100644 bash-20060316/tests/trap.right create mode 100644 bash-20060316/tests/trap.tests create mode 100755 bash-20060316/tests/trap1.sub create mode 100755 bash-20060316/tests/trap2.sub create mode 100755 bash-20060316/tests/trap2a.sub create mode 100644 bash-20060316/tests/type.right create mode 100644 bash-20060316/tests/type.tests create mode 100644 bash-20060316/tests/varenv.right create mode 100644 bash-20060316/tests/varenv.sh create mode 100644 bash-20060316/tests/varenv1.sub create mode 100644 bash-20060316/tests/varenv2.sub create mode 100644 bash-20060316/tests/version create mode 100644 bash-20060316/tests/version.mini create mode 100644 bash-20060316/trap.c create mode 100644 bash-20060316/trap.h create mode 100644 bash-20060316/unwind_prot.c create mode 100644 bash-20060316/unwind_prot.h create mode 100644 bash-20060316/variables.c create mode 100644 bash-20060316/variables.h create mode 100644 bash-20060316/version.c create mode 100644 bash-20060316/xmalloc.c create mode 100644 bash-20060316/xmalloc.h create mode 100644 jobs.c.diff create mode 100644 parse.y.save26 diff --git a/CHANGES b/CHANGES index d8a64fbd8..178a55fec 100644 --- a/CHANGES +++ b/CHANGES @@ -1,261 +1,3 @@ -This document details the changes between this version, bash-3.2-release, -and the previous version, bash-3.2-beta. - -1. Changes to Bash - -a. Fixed a bug that caused the temporary environment passed to a command to - affect the shell's environment under certain circumstances. - -b. Fixed a bug in the printf builtin that caused the %q format specifier to - ignore empty string arguments. - -c. Improved multibyte character environment detection at configuration time. - -d. Fixed a bug in the read builtin that left spurious escape characters in the - input after processing backslashes when assigning to an array variable. - -2. Changes to Readline - -a. Fixed a redisplay bug that occurred in multibyte-capable locales when the - prompt was one character longer than the screen width. ------------------------------------------------------------------------------- -This document details the changes between this version, bash-3.2-beta, -and the previous version, bash-3.2-alpha. - -1. Changes to Bash - -a. Changed the lexical analyzer to treat locale-specific blank characters as - white space. - -b. Fixed a bug in command printing to avoid confusion between redirections and - process substitution. - -c. Fixed problems with cross-compiling originating from inherited environment - variables. - -d. Added write error reporting to printf builtin. - -e. Fixed a bug in the variable expansion code that could cause a core dump in - a multi-byte locale. - -f. Fixed a bug that caused substring expansion of a null string to return - incorrect results. - -g. BASH_COMMAND now retains its previous value while executing commands as the - result of a trap, as the documentation states. - -2. Changes to Readline - -a. Fixed a bug with prompt redisplay in a multi-byte locale to avoid redrawing - the prompt and input line multiple times. - -b. Fixed history expansion to not be confused by here-string redirection. - -c. Readline no longer treats read errors by converting them to newlines, as - it does with EOF. This caused partial lines to be returned from readline(). - ------------------------------------------------------------------------------- -This document details the changes between this version, bash-3.2-alpha, -and the previous version, bash-3.1-release. - -1. Changes to Bash - -a. Fixed a source bug that caused the minimal configuration to not compile. - -b. Fixed memory leaks in error handling for the `read' builtin. - -c. Changed the [[ and (( compound commands to set PIPESTATUS with their exit - status. - -d. Fixed some parsing problems with compound array assignments. - -e. Added additional configuration changes for: NetBSD (incomplete multibyte - character support) - -f. Fixed two bugs with local array variable creation when shadowing a variable - of the same name from a previous context. - -g. Fixed the `read' builtin to restore the correct set of completion functions - if a timeout occurs. - -h. Added code to defer the initialization of HISTSIZE (and its stifling of the - history list) until the history file is loaded, allowing a startup file to - override the default value. - -i. Tightened up the arithmetic expression parsing to produce better error - messages when presented with invalid operators. - -j. Fixed the cross-compilation support to build the signal list at shell - invocation rather than compile time if cross-compiling. - -k. Fixed multibyte support for non-gcc compilers (or compilers that do not - allow automatic array variable sizing based on a non-constant value). - -l. Several fixes to the code that manages the list of terminated jobs and - their exit statuses, and the list of active and recently-terminated jobs - to avoid pid aliasing/wraparound and allocation errors. - -m. Fixed a problem that allowed scripts to die due to SIGINT while waiting - for children, even when started in the background or otherwise ignoring - SIGINT. - -n. Fixed a bug that caused shells invoked as -/bin/bash from not being - recognized as login shells. - -o. Fixed a problem that caused shells in the background to give the terminal - to a process group other than the foreground shell process group. - -p. Fixed a problem with extracting the `varname' in ${#varname}. - -q. Fixed the code that handles SIGQUIT to not exit immediately -- thereby - calling functions that may not be called in a signal handler context -- - but set a flag and exit afterward (like SIGINT). - -r. Changed the brace expansion code to skip over braces that don't begin a - valid matched brace expansion construct. - -s. Fixed `typeset' and `declare' to not require that their shell function - operands to be valid shell identifiers. - -t. Changed `test' to use access(2) with a temporary uid/euid swap when testing - file attributes and running setuid, and access(2) in most other cases. - -u. Changed completion code to not attempt command name completion on a line - consisting solely of whitespace when no_empty_command_completion is set. - -v. The `hash' builtin now prints nothing in posix mode when the hash table is - empty, and prints a message to that effect to stdout instead of stderr - when not in posix mode. - -w. Fixed a bug in the extended pattern matching code that caused it to fail to - match periods with certain patterns. - -x. Fixed a bug that caused the shell to dump core when performing filename - generation in directories with thousands of files. - -y. Returned to the original Bourne shell rules for parsing ``: no recursive - parsing of embedded quoted strings or ${...} constructs. - -z. The inheritence of the DEBUG, RETURN, and ERR traps is now dependent only - on the settings of the `functrace' and `errtrace' shell options, rather - than whether or not the shell is in debugging mode. - -aa. Fixed a problem with $HOME being converted to ~ in the expansion of - members of the DIRSTACK array. - -bb. Fixed a problem with quoted arguments to arithmetic expansions in certain - constructs. - -cc. The command word completion code now no longer returns matching directories - while searching $PATH. - -dd. Fixed a bug with zero-padding and precision handling in snprintf() - replacement. - -ee. Fixed a bug that caused the command substitution code not to take embedded - shell comments into account. - -ff. Fixed a bug that caused $((...);(...)) to be misinterpreted as an - arithmetic substitution. - -gg. Fixed a bug in the prompt expansion code that inappropriately added a - \001 before a \002 under certain circumstances. - -hh. Fixed a bug that caused `unset LANG' to not properly reset the locale - (previous versions would set the locale back to what it was when bash - was started rather than the system's "native" locale). - -ii. Fixed a bug that could cause file descriptors > 10 to not be closed even - when closed explicitly by a script. - -jj. Fixed a bug that caused single quotes to be stripped from ANSI-C quoting - inside double-quoted command substitutions. - -kk. Fixed a bug that could cause core dumps when `return' was executed as the - last element of a pipeline inside a shell function. - -ll. Fixed a bug that caused DEBUG trap strings to overwrite commands stored in - the jobs list. - -2. Changes to Readline - -a. Fixed a problem that caused segmentation faults when using readline in - callback mode and typing consecutive DEL characters on an empty line. - -b. Fixed several redisplay problems with multibyte characters, all having to - do with the different code paths and variable meanings between single-byte - and multibyte character redisplay. - -c. Fixed a problem with key sequence translation when presented with the - sequence \M-\C-x. - -d. Fixed a problem that prevented the `a' command in vi mode from being - undone and redone properly. - -e. Fixed a problem that prevented empty inserts in vi mode from being undone - properly. - -f. Fixed a problem that caused readline to initialize with an incorrect idea - of whether or not the terminal can autowrap. - -g. Fixed output of key bindings (like bash `bind -p') to honor the setting of - convert-meta and use \e where appropriate. - -h. Changed the default filename completion function to call the filename - dequoting function if the directory completion hook isn't set. This means - that any directory completion hooks need to dequote the directory name, - since application-specific hooks need to know how the word was quoted, - even if no other changes are made. - -i. Fixed a bug with creating the prompt for a non-interactive search string - when there are non-printing characters in the primary prompt. - -j. Fixed a bug that caused prompts with invisible characters to be redrawn - multiple times in a multibyte locale. - -k. Fixed a bug that could cause the key sequence scanning code to return the - wrong function. - -l. Fixed a problem with the callback interface that caused it to fail when - using multi-character keyboard macros. - -m. Fixed a bug that could cause a core dump when an edited history entry was - re-executed under certain conditions. - -n. Fixed a bug that caused readline to reference freed memory when attmpting - to display a portion of the prompt. - -3. New Features in Bash - -a. Changed the parameter pattern replacement functions to not anchor the - pattern at the beginning of the string if doing global replacement - that - combination doesn't make any sense. - -b. When running in `word expansion only' mode (--wordexp option), inhibit - process substitution. - -c. Loadable builtins now work on MacOS X 10.[34]. - -d. Shells running in posix mode no longer set $HOME, as POSIX requires. - -e. The code that checks for binary files being executed as shell scripts now - checks only for NUL rather than any non-printing character. - -f. Quoting the string argument to the [[ command's =~ operator now forces - string matching, as with the other pattern-matching operators. - -4. New Features in Readline - -a. Calling applications can now set the keyboard timeout to 0, allowing - poll-like behavior. - -b. The value of SYS_INPUTRC (configurable at compilation time) is now used as - the default last-ditch startup file. - -c. The history file reading functions now allow windows-like \r\n line - terminators. - ------------------------------------------------------------------------------- This document details the changes between this version, bash-3.1-release, and the previous version, bash-3.1-rc2. @@ -306,7 +48,7 @@ and the previous version, bash-3.1-beta1. 1. Changes to Bash -a. Fixed a bug that could cause core dumps due to accessing the current +a. Fixed a bug that could cause core dumps due of accessing the current pipeline while in the middle of modifying it. b. Fixed a bug that caused pathnames with backslashes still quoting characters diff --git a/COMPAT b/COMPAT index c591ede5f..df64c03da 100644 --- a/COMPAT +++ b/COMPAT @@ -1,5 +1,5 @@ This document details the incompatibilities between this version of bash, -bash-3.2, and the previous widely-available versions, bash-1.14 (which is +bash-3.1, and the previous widely-available versions, bash-1.14 (which is still the `standard' version for a few Linux distributions) and bash-2.x. These were discovered by users of bash-2.x and 3.x, so this list is not comprehensive. Some of these incompatibilities occur between the current @@ -201,9 +201,7 @@ bash-2.0 were significant.) Bash-2.x does not support it. 15. Bash no longer auto-exports the HOME, PATH, SHELL, TERM, HOSTNAME, - HOSTTYPE, MACHTYPE, or OSTYPE variables. If they appear in the initial - environment, the export attribute will be set, but if bash provides a - default value, they will remain local to the current shell. + HOSTTYPE, MACHTYPE, or OSTYPE variables. 16. Bash no longer initializes the FUNCNAME, GROUPS, or DIRSTACK variables to have special behavior if they appear in the initial environment. @@ -258,18 +256,3 @@ bash-2.0 were significant.) 30. Beginning with bash-3.1, the combination of posix mode and enabling the `xpg_echo' option causes echo to ignore all options, not looking for `-n' - -31. Beginning with bash-3.2, bash follows the Bourne-shell-style (and POSIX- - style) rules for parsing the contents of old-style backquoted command - substitutions. Previous versions of bash attempted to recursively parse - embedded quoted strings and shell constructs; bash-3.2 uses strict POSIX - rules to find the closing backquote and simply passes the contents of the - command substitution to a subshell for parsing and execution. - -32. Beginning with bash-3.2, bash uses access(2) when executing primaries for - the test builtin and the [[ compound command, rather than looking at the - file permission bits obtained with stat(2). This obeys restrictions of - the file system (e.g., read-only or noexec mounts) not available via stat. - -33. Beginning with bash-3.1/readline-5.1, the readline key binding code obeys - the current setting of the `convert-meta' variable. diff --git a/CWRU/CWRU.chlog b/CWRU/CWRU.chlog index f7a50ba4e..ba886933c 100644 --- a/CWRU/CWRU.chlog +++ b/CWRU/CWRU.chlog @@ -8889,8 +8889,8 @@ Makefile.in - descend into `po' and run make recursively for the various clean targets - 1/4/2004 - -------- + 1/4 + --- include/shmbutil.h - two new macros: BACKUP_CHAR(str, strsize, i), which backs up one multibyte character in STR starting at index I, and @@ -12718,8 +12718,8 @@ jobs.c - in delete_job, if find_last_proc returns NULL, don't try to call bgp_delete - 1/7/2006 - -------- + 1/7 + --- doc/bash.1 - patch from Tim Waugh to replace some literal single quotes with \(aq, the groff special character for it @@ -13198,1230 +13198,3 @@ 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 - rom 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 - - 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 diff --git a/CWRU/misc/open-files.c b/CWRU/misc/open-files.c index ca3d26ed4..aa4ab0741 100644 --- a/CWRU/misc/open-files.c +++ b/CWRU/misc/open-files.c @@ -21,10 +21,6 @@ #include #include #include - -#include -#include - #include main() diff --git a/MANIFEST b/MANIFEST index 024c1c2d9..989dbe265 100644 --- a/MANIFEST +++ b/MANIFEST @@ -422,11 +422,9 @@ lib/sh/times.c f lib/sh/timeval.c f lib/sh/tmpfile.c f lib/sh/vprint.c f -lib/sh/wcsdup.c f lib/sh/winsize.c f lib/sh/xstrchr.c f lib/sh/zcatfd.c f -lib/sh/zmapfd.c f lib/sh/zread.c f lib/sh/zwrite.c f lib/termcap/Makefile.in f @@ -471,8 +469,6 @@ po/en@quot.gmo f po/en@boldquot.gmo f po/ru.po f po/ru.gmo f -po/sv.po f -po/sv.gmo f po/insert-header.sin f po/quot.sed f po/remove-potcdate.sin f @@ -484,7 +480,6 @@ CWRU/misc/errlist.c f CWRU/misc/hpux10-dlfcn.h f CWRU/PLATFORMS f CWRU/README f -CWRU/audit-patch f CWRU/changelog f CWRU/sh-redir-hack f CWRU/mh-folder-comp f @@ -660,7 +655,6 @@ examples/scripts/showperm.bash f examples/scripts/shprompt f examples/scripts/spin.bash f examples/scripts/timeout f -examples/scripts/timeout2 f examples/scripts/vtree2 f examples/scripts/vtree3 f examples/scripts/vtree3a f @@ -685,7 +679,6 @@ examples/misc/aliasconv.sh f examples/misc/aliasconv.bash f examples/misc/cshtobash f tests/README f -tests/COPYRIGHT f tests/alias.tests f tests/alias.right f tests/appendop.tests f @@ -715,12 +708,8 @@ tests/source2.sub f tests/source3.sub f tests/source4.sub f tests/source5.sub f -tests/source6.sub f -tests/comsub.tests f -tests/comsub.right f tests/cond.tests f tests/cond.right f -tests/cond-regexp.sub f tests/cprint.tests f tests/cprint.right f tests/dbg-support.right f @@ -811,7 +800,6 @@ tests/new-exp2.sub f tests/new-exp3.sub f tests/new-exp4.sub f tests/new-exp5.sub f -tests/new-exp6.sub f tests/new-exp.right f tests/nquote.tests f tests/nquote.right f @@ -866,7 +854,6 @@ tests/run-array f tests/run-array2 f tests/run-braces f tests/run-builtins f -tests/run-comsub f tests/run-cond f tests/run-cprint f tests/run-dbg-support f diff --git a/Makefile.in b/Makefile.in index a90fb00f0..4882c5267 100644 --- a/Makefile.in +++ b/Makefile.in @@ -31,15 +31,12 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ prefix = @prefix@ exec_prefix = @exec_prefix@ - -datarootdir = @datarootdir@ - bindir = @bindir@ libdir = @libdir@ infodir = @infodir@ includedir = @includedir@ datadir = @datadir@ -localedir = @localedir@ +localedir = $(datadir)/locale mandir = @mandir@ manpfx = man @@ -81,8 +78,6 @@ INSTALLMODE2 = -m 0555 TESTSCRIPT = @TESTSCRIPT@ -DEBUGGER_START_FILE = @DEBUGGER_START_FILE@ - #If you have purify, and want to use it, uncomment this definition or # run the make as `make PURIFY=purify' # or run configure with the --with-purify argument. @@ -152,11 +147,8 @@ LDFLAGS_FOR_BUILD = $(LDFLAGS) INCLUDES = -I. @RL_INCLUDE@ -I$(srcdir) -I$(BASHINCDIR) -I$(LIBSRC) $(INTL_INC) -# Maybe add: -Wextra -GCC_LINT_FLAGS = -O -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wno-parentheses \ - -Wcast-align -Wstrict-prototypes -Wconversion -Wformat \ - -Wformat-nonliteral -Wmissing-braces -Wuninitialized \ - -Wmissing-declarations -Winline \ +GCC_LINT_FLAGS = -Wall -Wshadow -Wpointer-arith -Wcast-qual \ + -Wcast-align -Wstrict-prototypes -Wconversion \ -Wmissing-prototypes -Wtraditional -Wredundant-decls -pedantic GCC_LINT_CFLAGS = $(BASE_CCFLAGS) $(CPPFLAGS) $(GCC_LINT_FLAGS) @@ -209,8 +201,7 @@ SHLIB_SOURCE = ${SH_LIBSRC}/clktck.c ${SH_LIBSRC}/getcwd.c \ ${SH_LIBSRC}/memset.c ${SH_LIBSRC}/xstrchr.c \ ${SH_LIBSRC}/zcatfd.c ${SH_LIBSRC}/shmatch.c \ ${SH_LIBSRC}/strnlen.c ${SH_LIBSRC}/winsize.c \ - ${SH_LIBSRC}/eaccess.c ${SH_LIBSRC}/wcsdup.c \ - ${SH_LIBSRC}/zmapfd.c + ${SH_LIBSRC}/eaccess.c SHLIB_LIB = -lsh SHLIB_LIBNAME = libsh.a @@ -508,7 +499,7 @@ CREATED_SUPPORT = signames.h recho$(EXEEXT) zecho$(EXEEXT) printenv$(EXEEXT) \ tests/recho$(EXEEXT) tests/zecho$(EXEEXT) \ tests/printenv$(EXEEXT) mksignames$(EXEEXT) lsignames.h \ mksyntax${EXEEXT} syntax.c $(VERSPROG) $(VERSOBJ) \ - buildversion.o mksignames.o signames.o buildsignames.o + buildversion.o mksignames.o signames.o CREATED_CONFIGURE = config.h config.cache config.status config.log \ stamp-h po/POTFILES CREATED_MAKEFILES = Makefile builtins/Makefile doc/Makefile \ @@ -620,7 +611,7 @@ ${INTL_LIBRARY}: config.h ${INTL_LIBDIR}/Makefile @(cd ${INTL_LIBDIR} && \ $(MAKE) $(MFLAGS) all) || exit 1 -${LIBINTL_H}: ${INTL_DEP} +${LIBINTL_H}: ${INTL_LIBRARY} signames.o: $(SUPPORT_SRC)signames.c $(RM) $@ @@ -675,6 +666,9 @@ ${DEFDIR}/builtext.h: $(BUILTIN_DEFS) Makefile makefile: config.status $(srcdir)/Makefile.in CONFIG_FILES=Makefile CONFIG_HEADERS= $(SHELL) ./config.status +pathnames.h: config.status $(srcdir)/Makefile.in + CONFIG_HEADERS= $(SHELL) ./config.status + Makefiles makefiles: config.status $(srcdir)/Makefile.in @for mf in $(CREATED_MAKEFILES); do \ CONFIG_FILES=$$mf CONFIG_HEADERS= $(SHELL) ./config.status ; \ @@ -688,15 +682,6 @@ stamp-h: config.status $(srcdir)/config.h.in $(srcdir)/config-top.h $(srcdir)/co config.status: $(srcdir)/configure $(SHELL) ./config.status --recheck -pathnames.h: Makefile $(srcdir)/pathnames.h.in - @sed -e 's|@DEBUGGER_START_FILE\@|${DEBUGGER_START_FILE}|g' $(srcdir)/pathnames.h.in > pathnames.tmp - @if test -f $@; then \ - cmp -s pathnames.tmp $@ || mv pathnames.tmp $@; \ - else \ - mv pathnames.tmp $@; \ - fi - @${RM} pathnames.tmp - # comment out for distribution $(srcdir)/configure: $(srcdir)/configure.in $(srcdir)/aclocal.m4 $(srcdir)/config.h.in cd $(srcdir) && autoconf @@ -719,10 +704,10 @@ info dvi ps: force force: -TAGS: $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) +tags: $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) etags $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) -tags: $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) +TAGS: $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) ctags -x $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) > $@ # Targets that actually do things not part of the build @@ -1402,7 +1387,7 @@ builtins/inlib.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h builtins/jobs.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h builtins/kill.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h builtins/let.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h -builtins/mkbuiltins.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/mkbuiltins.c: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h builtins/printf.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h builtins/pushd.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h builtins/read.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h diff --git a/NEWS b/NEWS index 3fa504ed8..977d9a335 100644 --- a/NEWS +++ b/NEWS @@ -1,38 +1,3 @@ -This is a terse description of the new features added to bash-3.2 since -the release of bash-3.1. As always, the manual page (doc/bash.1) is -the place to look for complete descriptions. - -1. New Features in Bash - -a. Changed the parameter pattern replacement functions to not anchor the - pattern at the beginning of the string if doing global replacement - that - combination doesn't make any sense. - -b. When running in `word expansion only' mode (--wordexp option), inhibit - process substitution. - -c. Loadable builtins now work on MacOS X 10.[34]. - -d. Shells running in posix mode no longer set $HOME, as POSIX requires. - -e. The code that checks for binary files being executed as shell scripts now - checks only for NUL rather than any non-printing character. - -f. Quoting the string argument to the [[ command's =~ operator now forces - string matching, as with the other pattern-matching operators. - -2. New Features in Readline - -a. Calling applications can now set the keyboard timeout to 0, allowing - poll-like behavior. - -b. The value of SYS_INPUTRC (configurable at compilation time) is now used as - the default last-ditch startup file. - -c. The history file reading functions now allow windows-like \r\n line - terminators. - -------------------------------------------------------------------------------- This is a terse description of the new features added to bash-3.1 since the release of bash-3.0. As always, the manual page (doc/bash.1) is the place to look for complete descriptions. diff --git a/NOTES b/NOTES index 31a7eebca..c523752fe 100644 --- a/NOTES +++ b/NOTES @@ -261,10 +261,6 @@ Platform-Specific Configuration and Operation Notes I have received word that adding -L/etc/lib (or the equivalent -Wl,-L/etc/lib) might also be necessary, in addition to the -R/etc/lib. - On later versions of Solaris, it may be necessary to add -lnsl before - -ldl; statically-linked versions of bash using libnsl are not guaranteed - to work correctly on future versions of Solaris. - 12. Configuring bash to build it in a cross environment. Currently only two native versions can be compiled this way, cygwin32 and x86 BeOS. For BeOS, you would configure it like this: @@ -335,6 +331,3 @@ Platform-Specific Configuration and Operation Notes 17. Do NOT use bison-1.75. It builds a non-working parser. The most obvious effect is that constructs like "for i; do echo $i; done" don't loop over the positional parameters. - -18. I have received reports that using -O2 with the MIPSpro results in a - binary that fails in strange ways. Using -O1 seems to work. diff --git a/POSIX b/POSIX index 992981467..f8c983ea2 100644 --- a/POSIX +++ b/POSIX @@ -3,8 +3,8 @@ Starting Bash with the `--posix' command-line option or executing `set -o posix' while Bash is running will cause Bash to conform more closely -to the POSIX standard by changing the behavior to match that specified -by POSIX in areas where the Bash default differs. +to the POSIX 1003.2 standard by changing the behavior to match that +specified by POSIX in areas where the Bash default differs. When invoked as `sh', Bash enters POSIX mode after reading the startup files. @@ -29,13 +29,13 @@ The following list is what's changed when `POSIX mode' is in effect: 5. Reserved words appearing in a context where reserved words are recognized do not undergo alias expansion. - 6. The POSIX `PS1' and `PS2' expansions of `!' to the history number - and `!!' to `!' are enabled, and parameter expansion is performed - on the values of `PS1' and `PS2' regardless of the setting of the - `promptvars' option. + 6. The POSIX 1003.2 `PS1' and `PS2' expansions of `!' to the history + number and `!!' to `!' are enabled, and parameter expansion is + performed on the values of `PS1' and `PS2' regardless of the + setting of the `promptvars' option. - 7. The POSIX startup files are executed (`$ENV') rather than the - normal Bash files. + 7. The POSIX 1003.2 startup files are executed (`$ENV') rather than + the normal Bash files. 8. Tilde expansion is only performed on assignments preceding a command name, rather than on all assignment statements on the line. @@ -66,12 +66,12 @@ The following list is what's changed when `POSIX mode' is in effect: may not start with a digit. Declaring a function with an invalid name causes a fatal syntax error in non-interactive shells. - 17. POSIX special builtins are found before shell functions during - command lookup. + 17. POSIX 1003.2 special builtins are found before shell functions + during command lookup. - 18. If a POSIX special builtin returns an error status, a + 18. If a POSIX 1003.2 special builtin returns an error status, a non-interactive shell exits. The fatal errors are those listed in - the POSIX standard, and include things like passing incorrect + the POSIX.2 standard, and include things like passing incorrect options, redirection errors, variable assignment errors for assignments preceding the command name, and so on. @@ -92,15 +92,15 @@ The following list is what's changed when `POSIX mode' is in effect: 22. Process substitution is not available. - 23. Assignment statements preceding POSIX special builtins persist in - the shell environment after the builtin completes. + 23. Assignment statements preceding POSIX 1003.2 special builtins + persist in the shell environment after the builtin completes. 24. Assignment statements preceding shell function calls persist in the shell environment after the function returns, as if a POSIX special builtin command had been executed. 25. The `export' and `readonly' builtin commands display their output - in the format required by POSIX. + in the format required by POSIX 1003.2. 26. The `trap' builtin displays signal names without the leading `SIG'. @@ -162,8 +162,8 @@ The following list is what's changed when `POSIX mode' is in effect: displayed, after escape characters are converted. -There is other POSIX behavior that Bash does not implement by default -even when in POSIX mode. Specifically: +There is other POSIX 1003.2 behavior that Bash does not implement by +default even when in POSIX mode. Specifically: 1. The `fc' builtin checks `$EDITOR' as a program to edit history entries if `FCEDIT' is unset, rather than defaulting directly to diff --git a/README b/README index 4a4f27048..3f6a09246 100644 --- a/README +++ b/README @@ -1,7 +1,7 @@ Introduction ============ -This is GNU Bash, version 3.2. Bash is the GNU Project's Bourne +This is GNU Bash, version 3.1. Bash is the GNU Project's Bourne Again SHell, a complete implementation of the POSIX.2 shell spec, but also with interactive command line editing, job control on architectures that support it, csh-like features such as history @@ -15,9 +15,9 @@ See the file POSIX for a discussion of how the Bash defaults differ from the POSIX.2 spec and a description of the Bash `posix mode'. There are some user-visible incompatibilities between this version -of Bash and previous widely-distributed versions, bash-1.14 and -bash-2.05b. For details, see the file COMPAT. The NEWS file tersely -lists features that are new in this release. +of Bash and a previous widely-distributed version, bash-1.14. +For details, see the file COMPAT. The NEWS file tersely lists +features that are new in this release. Bash is free software, distributed under the terms of the [GNU] General Public License, version 2. For more information, see the @@ -87,4 +87,4 @@ like this shell to be the best that we can make it. Enjoy! Chet Ramey -chet.ramey@case.edu +chet@po.cwru.edu diff --git a/aclocal.m4 b/aclocal.m4 index 64e674ace..b9539591e 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -215,7 +215,7 @@ AC_CACHE_VAL(bash_cv_sys_siglist, #ifdef HAVE_UNISTD_H #include #endif -#if !HAVE_DECL_SYS_SIGLIST +#ifndef SYS_SIGLIST_DECLARED extern char *sys_siglist[]; #endif main() @@ -685,7 +685,7 @@ fi ]) AC_DEFUN(BASH_FUNC_GETCWD, -[AC_MSG_CHECKING([if getcwd() will dynamically allocate memory with 0 size]) +[AC_MSG_CHECKING([if getcwd() will dynamically allocate memory]) AC_CACHE_VAL(bash_cv_getcwd_malloc, [AC_TRY_RUN([ #include @@ -1540,22 +1540,20 @@ fi AC_DEFUN(BASH_CHECK_DEV_FD, [AC_MSG_CHECKING(whether /dev/fd is available) AC_CACHE_VAL(bash_cv_dev_fd, -[bash_cv_dev_fd="" -if test -d /dev/fd && (exec test -r /dev/fd/0 < /dev/null) ; then +[if test -d /dev/fd && test -r /dev/fd/0 < /dev/null; then # check for systems like FreeBSD 5 that only provide /dev/fd/[012] - if (exec test -r /dev/fd/3 3], [ + mbstate_t ps; + mbstate_t *psp; + psp = (mbstate_t *)0; +], bash_cv_have_mbstate_t=yes, bash_cv_have_mbstate_t=no)]) +if test $bash_cv_have_mbstate_t = yes; then AC_DEFINE(HAVE_MBSTATE_T) fi -AC_CHECK_FUNCS(iswlower iswupper towlower towupper iswctype) - AC_CACHE_CHECK([for nl_langinfo and CODESET], bash_cv_langinfo_codeset, [AC_TRY_LINK( [#include ], @@ -1703,43 +1703,6 @@ if test $bash_cv_langinfo_codeset = yes; then AC_DEFINE(HAVE_LANGINFO_CODESET) fi -dnl check for wchar_t in -AC_CACHE_CHECK([for wchar_t in wchar.h], bash_cv_type_wchar_t, -[AC_TRY_COMPILE( -[#include -], -[ - wchar_t foo; - foo = 0; -], bash_cv_type_wchar_t=yes, bash_cv_type_wchar_t=no)]) -if test $bash_cv_type_wchar_t = yes; then - AC_DEFINE(HAVE_WCHAR_T, 1, [systems should define this type here]) -fi - -dnl check for wctype_t in -AC_CACHE_CHECK([for wctype_t in wctype.h], bash_cv_type_wctype_t, -[AC_TRY_COMPILE( -[#include ], -[ - wctype_t foo; - foo = 0; -], bash_cv_type_wctype_t=yes, bash_cv_type_wctype_t=no)]) -if test $bash_cv_type_wctype_t = yes; then - AC_DEFINE(HAVE_WCTYPE_T, 1, [systems should define this type here]) -fi - -dnl check for wint_t in -AC_CACHE_CHECK([for wint_t in wctype.h], bash_cv_type_wint_t, -[AC_TRY_COMPILE( -[#include ], -[ - wint_t foo; - foo = 0; -], bash_cv_type_wint_t=yes, bash_cv_type_wint_t=no)]) -if test $bash_cv_type_wint_t = yes; then - AC_DEFINE(HAVE_WINT_T, 1, [systems should define this type here]) -fi - ]) dnl need: prefix exec_prefix libdir includedir CC TERMCAP_LIB @@ -2364,7 +2327,7 @@ AC_DEFUN([AM_INTL_SUBDIR], AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ stdlib.h string.h unistd.h sys/param.h]) AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ -geteuid getgid getuid mempcpy munmap putenv setenv setlocale localeconv stpcpy \ +geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next \ __fsetlocking]) diff --git a/array.c b/array.c index 4cfa51169..c32b61344 100644 --- a/array.c +++ b/array.c @@ -120,6 +120,7 @@ ARRAY *a; return(a1); } +#ifdef INCLUDE_UNUSED /* * Make and return a new array composed of the elements in array A from * S to E, inclusive. @@ -140,12 +141,13 @@ ARRAY_ELEMENT *s, *e; for (p = s, i = 0; p != e; p = element_forw(p), i++) { n = array_create_element (element_index(p), element_value(p)); ADD_BEFORE(a->head, n); - mi = element_index(n); + mi = element_index(ae); } a->num_elements = i; a->max_index = mi; return a; } +#endif /* * Walk the array, calling FUNC once for each element, with the array @@ -298,23 +300,6 @@ ARRAY *array; return array; } -ARRAY * -array_quote_escapes(array) -ARRAY *array; -{ - ARRAY_ELEMENT *a; - char *t; - - if (array == 0 || array_head(array) == 0 || array_empty(array)) - return (ARRAY *)NULL; - for (a = element_forw(array->head); a != array->head; a = element_forw(a)) { - t = quote_escapes (a->value); - FREE(a->value); - a->value = t; - } - return array; -} - /* * Return a string whose elements are the members of array A beginning at * index START and spanning NELEM members. Null elements are counted. @@ -326,10 +311,9 @@ ARRAY *a; arrayind_t start, nelem; int starsub, quoted; { - ARRAY *a2; ARRAY_ELEMENT *h, *p; arrayind_t i; - char *ifs, sep[2], *t; + char *ifs, sep[2]; p = a ? array_head (a) : 0; if (p == 0 || array_empty (a) || start > array_max_index(a)) @@ -352,13 +336,6 @@ int starsub, quoted; for (i = 0, h = p; p != a->head && i < nelem; i++, p = element_forw(p)) ; - a2 = array_slice(a, h, p); - - if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) - array_quote(a2); - else - array_quote_escapes(a2); - if (starsub && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) { ifs = getifs(); sep[0] = ifs ? *ifs : '\0'; @@ -366,10 +343,7 @@ int starsub, quoted; sep[0] = ' '; sep[1] = '\0'; - t = array_to_string (a2, sep, 0); - array_dispose(a2); - - return t; + return (array_to_string_internal (h, p, sep, quoted)); } char * @@ -393,9 +367,7 @@ int mflags; } if (mflags & MATCH_QUOTED) - array_quote(a2); - else - array_quote_escapes(a2); + array_quote (a2); if (mflags & MATCH_STARSUB) { ifs = getifs(); sifs[0] = ifs ? *ifs : '\0'; diff --git a/array.h b/array.h index b9632b42e..8c671b79e 100644 --- a/array.h +++ b/array.h @@ -55,7 +55,6 @@ extern int array_rshift __P((ARRAY *, int, char *)); extern ARRAY_ELEMENT *array_unshift_element __P((ARRAY *)); extern int array_shift_element __P((ARRAY *, char *)); extern ARRAY *array_quote __P((ARRAY *)); -extern ARRAY *array_quote_escapes __P((ARRAY *)); extern char *array_subrange __P((ARRAY *, arrayind_t, arrayind_t, int, int)); extern char *array_patsub __P((ARRAY *, char *, char *, int)); diff --git a/arrayfunc.c b/arrayfunc.c index 7a6904d99..1353b2d94 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-2006 Free Software Foundation, Inc. +/* Copyright (C) 2001-2005 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -45,7 +45,7 @@ static void quote_array_assignment_chars __P((WORD_LIST *)); static char *array_value_internal __P((char *, int, int, int *)); /* Standard error message to use when encountering an invalid array subscript */ -const char * const bash_badsub_errmsg = N_("bad array subscript"); +char *bash_badsub_errmsg = N_("bad array subscript"); /* **************************************************************** */ /* */ @@ -265,22 +265,32 @@ assign_array_var_from_word_list (var, list, flags) return var; } -WORD_LIST * -expand_compound_array_assignment (value, flags) +/* Perform a compound array assignment: VAR->name=( VALUE ). The + VALUE has already had the parentheses stripped. */ +SHELL_VAR * +assign_array_var_from_string (var, value, flags) + SHELL_VAR *var; char *value; int flags; { + ARRAY *a; WORD_LIST *list, *nlist; - char *val; - int ni; + char *w, *val, *nval; + int ni, len; + arrayind_t ind, last_ind; - /* I don't believe this condition is ever true any more. */ + if (value == 0) + return var; + + /* If this is called from declare_builtin, value[0] == '(' and + xstrchr(value, ')') != 0. In this case, we need to extract + the value from between the parens before going on. */ if (*value == '(') /*)*/ { ni = 1; val = extract_array_assignment_list (value, &ni); if (val == 0) - return (WORD_LIST *)NULL; + return var; } else val = value; @@ -305,21 +315,6 @@ expand_compound_array_assignment (value, flags) if (val != value) free (val); - return nlist; -} - -void -assign_compound_array_list (var, nlist, flags) - SHELL_VAR *var; - WORD_LIST *nlist; - int flags; -{ - ARRAY *a; - WORD_LIST *list; - char *w, *val, *nval; - int len, iflags; - arrayind_t ind, last_ind; - a = array_cell (var); /* Now that we are ready to assign values to the array, kill the existing @@ -330,7 +325,6 @@ assign_compound_array_list (var, nlist, flags) for (list = nlist; list; list = list->next) { - iflags = flags; w = list->word->word; /* We have a word of the form [ind]=value */ @@ -338,8 +332,12 @@ assign_compound_array_list (var, nlist, flags) { len = skipsubscript (w, 0); +#if 1 /* XXX - changes for `+=' */ if (w[len] != ']' || (w[len+1] != '=' && (w[len+1] != '+' || w[len+2] != '='))) +#else + if (w[len] != ']' || w[len+1] != '=') +#endif { nval = make_variable_value (var, w, flags); if (var->assign_func) @@ -370,10 +368,10 @@ assign_compound_array_list (var, nlist, flags) continue; } last_ind = ind; - /* XXX - changes for `+=' -- just accept the syntax. ksh93 doesn't do this */ + /* XXX - changes for `+=' */ if (w[len + 1] == '+' && w[len + 2] == '=') { - iflags |= ASS_APPEND; + flags |= ASS_APPEND; val = w + len + 3; } else @@ -387,29 +385,11 @@ assign_compound_array_list (var, nlist, flags) if (integer_p (var)) this_command_name = (char *)NULL; /* no command name for errors */ - bind_array_var_internal (var, ind, val, iflags); + bind_array_var_internal (var, ind, val, flags); last_ind++; } -} - -/* Perform a compound array assignment: VAR->name=( VALUE ). The - VALUE has already had the parentheses stripped. */ -SHELL_VAR * -assign_array_var_from_string (var, value, flags) - SHELL_VAR *var; - char *value; - int flags; -{ - WORD_LIST *nlist; - - if (value == 0) - return var; - - nlist = expand_compound_array_assignment (value, flags); - assign_compound_array_list (var, nlist, flags); - if (nlist) - dispose_words (nlist); + dispose_words (nlist); return (var); } @@ -610,7 +590,7 @@ array_expand_index (s, len) exp = (char *)xmalloc (len); strncpy (exp, s, len - 1); exp[len - 1] = '\0'; - t = expand_arith_string (exp, 0); + t = expand_arith_string (exp); this_command_name = (char *)NULL; val = evalexp (t, &expok); free (t); diff --git a/arrayfunc.h b/arrayfunc.h index 5c3f94477..3c4f9a074 100644 --- a/arrayfunc.h +++ b/arrayfunc.h @@ -34,9 +34,6 @@ extern SHELL_VAR *find_or_make_array_variable __P((char *, int)); extern SHELL_VAR *assign_array_from_string __P((char *, char *, int)); extern SHELL_VAR *assign_array_var_from_word_list __P((SHELL_VAR *, WORD_LIST *, int)); - -extern WORD_LIST *expand_compound_array_assignment __P((char *, int)); -extern void assign_compound_array_list __P((SHELL_VAR *, WORD_LIST *, int)); extern SHELL_VAR *assign_array_var_from_string __P((SHELL_VAR *, char *, int)); extern int unbind_array_element __P((SHELL_VAR *, char *)); diff --git a/autom4te-2.53.cache/output.0 b/autom4te-2.53.cache/output.0 index 0ecb0bad6..4b7ad7610 100644 --- a/autom4te-2.53.cache/output.0 +++ b/autom4te-2.53.cache/output.0 @@ -1,7 +1,7 @@ @%:@! /bin/sh -@%:@ From configure.in for Bash 3.2, version 3.192. +@%:@ From configure.in for Bash 3.1, version 3.183. @%:@ Guess values for system-dependent variables and create Makefiles. -@%:@ Generated by GNU Autoconf 2.53 for bash 3.2-maint. +@%:@ Generated by GNU Autoconf 2.53 for bash 3.1-release. @%:@ @%:@ Report bugs to . @%:@ @@ -257,8 +257,8 @@ SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='bash' PACKAGE_TARNAME='bash' -PACKAGE_VERSION='3.2-maint' -PACKAGE_STRING='bash 3.2-maint' +PACKAGE_VERSION='3.1-release' +PACKAGE_STRING='bash 3.1-release' PACKAGE_BUGREPORT='bug-bash@gnu.org' ac_unique_file="shell.h" @@ -767,7 +767,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 3.2-maint to adapt to many kinds of systems. +\`configure' configures bash 3.1-release to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -828,7 +828,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of bash 3.2-maint:";; + short | recursive ) echo "Configuration of bash 3.1-release:";; esac cat <<\_ACEOF @@ -988,7 +988,7 @@ fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF -bash configure 3.2-maint +bash configure 3.1-release generated by GNU Autoconf 2.53 Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 @@ -1003,7 +1003,7 @@ cat >&5 <<_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 3.2-maint, which was +It was created by bash $as_me 3.1-release, which was generated by GNU Autoconf 2.53. Invocation command line was $ $0 $@ @@ -1313,11 +1313,11 @@ ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. ac_config_headers="$ac_config_headers config.h" -BASHVERS=3.2 -RELSTATUS=maint +BASHVERS=3.1 +RELSTATUS=release case "$RELSTATUS" in -alp*|bet*|dev*|rc*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; +alp*|bet*|dev*|rc*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; *) DEBUG= MALLOC_DEBUG= ;; esac @@ -1585,7 +1585,7 @@ if test "$opt_curses" = yes; then fi if test -z "${DEBUGGER_START_FILE}"; then - DEBUGGER_START_FILE=${ac_default_prefix}/share/bashdb/bashdb-main.inc + DEBUGGER_START_FILE=${ac_default_prefix}/lib/bashdb/bashdb-main.inc fi opt_minimal_config=no @@ -3647,22 +3647,22 @@ fi -SIGNAMES_O= SIGNAMES_H=lsignames.h -CROSS_COMPILE= if test "x$cross_compiling" = "xyes"; then case "${host}" in *-cygwin*) cross_cache=${srcdir}/cross-build/cygwin32.cache + SIGNAMES_H='$(srcdir)/cross-build/win32sig.h' ;; *-mingw*) cross_cache=${srcdir}/cross-build/cygwin32.cache ;; i[3456]86-*-beos*) cross_cache=${srcdir}/cross-build/x86-beos.cache + SIGNAMES_H='${srcdir}/cross-build/beos-sig.h' ;; *) echo "configure: cross-compiling for $host is not supported" >&2 ;; @@ -3672,13 +3672,11 @@ if test "x$cross_compiling" = "xyes"; then . ${cross_cache} fi unset cross_cache - SIGNAMES_O='signames.o' CROSS_COMPILE='-DCROSS_COMPILING' fi - if test -z "$CC_FOR_BUILD"; then if test "x$cross_compiling" = "xno"; then CC_FOR_BUILD='$(CC)' @@ -7523,11 +7521,10 @@ done - for ac_func in feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ -geteuid getgid getuid mempcpy munmap putenv setenv setlocale localeconv stpcpy \ +geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next \ __fsetlocking do @@ -10568,77 +10565,6 @@ _ACEOF fi -echo "$as_me:$LINENO: checking for isnan" >&5 -echo $ECHO_N "checking for isnan... $ECHO_C" >&6 -if test "${ac_cv_func_isnan+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char isnan (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char isnan (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* 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 -#else -f = isnan; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_isnan=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_isnan=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_isnan" >&5 -echo "${ECHO_T}$ac_cv_func_isnan" >&6 -if test $ac_cv_func_isnan = yes; then - cat >>confdefs.h <<\_ACEOF -@%:@define HAVE_ISNAN_IN_LIBC 1 -_ACEOF - -fi - echo "$as_me:$LINENO: checking for mkfifo" >&5 echo $ECHO_N "checking for mkfifo... $ECHO_C" >&6 @@ -10738,11 +10664,10 @@ fi - -for ac_func in dup2 eaccess fcntl getdtablesize getgroups gethostname \ - getpagesize getpeername getrlimit getrusage gettimeofday \ - kill killpg lstat readlink sbrk select setdtablesize \ - tcgetpgrp uname ulimit waitpid +for ac_func in dup2 fcntl getdtablesize getgroups gethostname getpagesize \ + getpeername getrlimit getrusage gettimeofday kill killpg \ + lstat readlink sbrk select setdtablesize tcgetpgrp uname \ + ulimit waitpid do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -11606,70 +11531,6 @@ _ACEOF fi -echo "$as_me:$LINENO: checking whether setregid is declared" >&5 -echo $ECHO_N "checking whether setregid is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_setregid+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -$ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -#ifndef setregid - char *p = (char *) setregid; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_have_decl_setregid=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_have_decl_setregid=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_setregid" >&5 -echo "${ECHO_T}$ac_cv_have_decl_setregid" >&6 -if test $ac_cv_have_decl_setregid = yes; then - -cat >>confdefs.h <<_ACEOF -@%:@define HAVE_DECL_SETREGID 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -@%:@define HAVE_DECL_SETREGID 0 -_ACEOF - - -fi - - echo "$as_me:$LINENO: checking whether strcpy is declared" >&5 echo $ECHO_N "checking whether strcpy is declared... $ECHO_C" >&6 if test "${ac_cv_have_decl_strcpy+set}" = set; then @@ -13700,88 +13561,16 @@ _ACEOF fi -echo "$as_me:$LINENO: checking for mbrlen" >&5 -echo $ECHO_N "checking for mbrlen... $ECHO_C" >&6 -if test "${ac_cv_func_mbrlen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char mbrlen (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char mbrlen (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -/* 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 -#else -f = mbrlen; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_mbrlen=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_mbrlen=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_mbrlen" >&5 -echo "${ECHO_T}$ac_cv_func_mbrlen" >&6 -if test $ac_cv_func_mbrlen = yes; then - cat >>confdefs.h <<\_ACEOF -@%:@define HAVE_MBRLEN 1 -_ACEOF - -fi - - -echo "$as_me:$LINENO: checking for wcrtomb" >&5 -echo $ECHO_N "checking for wcrtomb... $ECHO_C" >&6 -if test "${ac_cv_func_wcrtomb+set}" = set; then +echo "$as_me:$LINENO: checking for mbrtowc" >&5 +echo $ECHO_N "checking for mbrtowc... $ECHO_C" >&6 +if test "${ac_cv_func_mbrtowc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char wcrtomb (); below. */ + which can conflict with char mbrtowc (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus @@ -13789,7 +13578,7 @@ extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char wcrtomb (); +char mbrtowc (); char (*f) (); #ifdef F77_DUMMY_MAIN @@ -13804,10 +13593,10 @@ main () /* 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) +#if defined (__stub_mbrtowc) || defined (__stub___mbrtowc) choke me #else -f = wcrtomb; +f = mbrtowc; #endif ; @@ -13826,33 +13615,33 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_func_wcrtomb=yes + ac_cv_func_mbrtowc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 -ac_cv_func_wcrtomb=no +ac_cv_func_mbrtowc=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_func_wcrtomb" >&5 -echo "${ECHO_T}$ac_cv_func_wcrtomb" >&6 -if test $ac_cv_func_wcrtomb = yes; then +echo "$as_me:$LINENO: result: $ac_cv_func_mbrtowc" >&5 +echo "${ECHO_T}$ac_cv_func_mbrtowc" >&6 +if test $ac_cv_func_mbrtowc = yes; then cat >>confdefs.h <<\_ACEOF -@%:@define HAVE_WCRTOMB 1 +@%:@define HAVE_MBRTOWC 1 _ACEOF fi -echo "$as_me:$LINENO: checking for wcscoll" >&5 -echo $ECHO_N "checking for wcscoll... $ECHO_C" >&6 -if test "${ac_cv_func_wcscoll+set}" = set; then +echo "$as_me:$LINENO: checking for mbrlen" >&5 +echo $ECHO_N "checking for mbrlen... $ECHO_C" >&6 +if test "${ac_cv_func_mbrlen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char wcscoll (); below. */ + which can conflict with char mbrlen (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus @@ -13860,7 +13649,7 @@ extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char wcscoll (); +char mbrlen (); char (*f) (); #ifdef F77_DUMMY_MAIN @@ -13875,10 +13664,10 @@ main () /* 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) +#if defined (__stub_mbrlen) || defined (__stub___mbrlen) choke me #else -f = wcscoll; +f = mbrlen; #endif ; @@ -13897,33 +13686,33 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_func_wcscoll=yes + ac_cv_func_mbrlen=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 -ac_cv_func_wcscoll=no +ac_cv_func_mbrlen=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_func_wcscoll" >&5 -echo "${ECHO_T}$ac_cv_func_wcscoll" >&6 -if test $ac_cv_func_wcscoll = yes; then +echo "$as_me:$LINENO: result: $ac_cv_func_mbrlen" >&5 +echo "${ECHO_T}$ac_cv_func_mbrlen" >&6 +if test $ac_cv_func_mbrlen = yes; then cat >>confdefs.h <<\_ACEOF -@%:@define HAVE_WCSCOLL 1 +@%:@define HAVE_MBRLEN 1 _ACEOF fi -echo "$as_me:$LINENO: checking for wcsdup" >&5 -echo $ECHO_N "checking for wcsdup... $ECHO_C" >&6 -if test "${ac_cv_func_wcsdup+set}" = set; then +echo "$as_me:$LINENO: checking for wctomb" >&5 +echo $ECHO_N "checking for wctomb... $ECHO_C" >&6 +if test "${ac_cv_func_wctomb+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char wcsdup (); below. */ + which can conflict with char wctomb (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus @@ -13931,7 +13720,7 @@ extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char wcsdup (); +char wctomb (); char (*f) (); #ifdef F77_DUMMY_MAIN @@ -13946,10 +13735,10 @@ main () /* 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) +#if defined (__stub_wctomb) || defined (__stub___wctomb) choke me #else -f = wcsdup; +f = wctomb; #endif ; @@ -13968,19 +13757,19 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_func_wcsdup=yes + ac_cv_func_wctomb=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 -ac_cv_func_wcsdup=no +ac_cv_func_wctomb=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_func_wcsdup" >&5 -echo "${ECHO_T}$ac_cv_func_wcsdup" >&6 -if test $ac_cv_func_wcsdup = yes; then +echo "$as_me:$LINENO: result: $ac_cv_func_wctomb" >&5 +echo "${ECHO_T}$ac_cv_func_wctomb" >&6 +if test $ac_cv_func_wctomb = yes; then cat >>confdefs.h <<\_ACEOF -@%:@define HAVE_WCSDUP 1 +@%:@define HAVE_WCTOMB 1 _ACEOF fi @@ -14056,16 +13845,16 @@ _ACEOF fi -echo "$as_me:$LINENO: checking for wctype" >&5 -echo $ECHO_N "checking for wctype... $ECHO_C" >&6 -if test "${ac_cv_func_wctype+set}" = set; then +echo "$as_me:$LINENO: checking for wcsdup" >&5 +echo $ECHO_N "checking for wcsdup... $ECHO_C" >&6 +if test "${ac_cv_func_wcsdup+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char wctype (); below. */ + which can conflict with char wcsdup (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus @@ -14073,7 +13862,7 @@ extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char wctype (); +char wcsdup (); char (*f) (); #ifdef F77_DUMMY_MAIN @@ -14088,10 +13877,10 @@ main () /* 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) +#if defined (__stub_wcsdup) || defined (__stub___wcsdup) choke me #else -f = wctype; +f = wcsdup; #endif ; @@ -14110,60 +13899,34 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_func_wctype=yes + ac_cv_func_wcsdup=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 -ac_cv_func_wctype=no +ac_cv_func_wcsdup=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_func_wctype" >&5 -echo "${ECHO_T}$ac_cv_func_wctype" >&6 -if test $ac_cv_func_wctype = yes; then +echo "$as_me:$LINENO: result: $ac_cv_func_wcsdup" >&5 +echo "${ECHO_T}$ac_cv_func_wcsdup" >&6 +if test $ac_cv_func_wcsdup = yes; then cat >>confdefs.h <<\_ACEOF -@%:@define HAVE_WCTYPE 1 -_ACEOF - -fi - - -AC_FUNC_MBRTOWC -if test $ac_cv_func_mbrtowc = yes; then - cat >>confdefs.h <<\_ACEOF -@%:@define HAVE_MBSTATE_T 1 +@%:@define HAVE_WCSDUP 1 _ACEOF fi - - - - -for ac_func in iswlower iswupper towlower towupper iswctype -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then +echo "$as_me:$LINENO: checking for mbstate_t" >&5 +echo $ECHO_N "checking for mbstate_t... $ECHO_C" >&6 +if test "${bash_cv_have_mbstate_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -char (*f) (); +#include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" @@ -14173,49 +13936,43 @@ char (*f) (); int main () { -/* 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 -#else -f = $ac_func; -#endif + + mbstate_t ps; + mbstate_t *psp; + psp = (mbstate_t *)0; ; return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' + { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - eval "$as_ac_var=yes" + bash_cv_have_mbstate_t=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" +bash_cv_have_mbstate_t=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +rm -f conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +echo "$as_me:$LINENO: result: $bash_cv_have_mbstate_t" >&5 +echo "${ECHO_T}$bash_cv_have_mbstate_t" >&6 +if test $bash_cv_have_mbstate_t = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_MBSTATE_T 1 _ACEOF - -fi -done +fi echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6 @@ -14269,175 +14026,6 @@ _ACEOF fi -echo "$as_me:$LINENO: checking for wchar_t in wchar.h" >&5 -echo $ECHO_N "checking for wchar_t in wchar.h... $ECHO_C" >&6 -if test "${bash_cv_type_wchar_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ - - wchar_t foo; - foo = 0; - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - bash_cv_type_wchar_t=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_type_wchar_t=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $bash_cv_type_wchar_t" >&5 -echo "${ECHO_T}$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 - -echo "$as_me:$LINENO: checking for wctype_t in wctype.h" >&5 -echo $ECHO_N "checking for wctype_t in wctype.h... $ECHO_C" >&6 -if test "${bash_cv_type_wctype_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ - - wctype_t foo; - foo = 0; - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - bash_cv_type_wctype_t=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_type_wctype_t=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $bash_cv_type_wctype_t" >&5 -echo "${ECHO_T}$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 - -echo "$as_me:$LINENO: checking for wint_t in wctype.h" >&5 -echo $ECHO_N "checking for wint_t in wctype.h... $ECHO_C" >&6 -if test "${bash_cv_type_wint_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ - - wint_t foo; - foo = 0; - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - bash_cv_type_wint_t=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -bash_cv_type_wint_t=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $bash_cv_type_wint_t" >&5 -echo "${ECHO_T}$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 "$opt_static_link" != yes; then @@ -23507,22 +23095,20 @@ echo $ECHO_N "checking whether /dev/fd is available... $ECHO_C" >&6 if test "${bash_cv_dev_fd+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - bash_cv_dev_fd="" -if test -d /dev/fd && (exec test -r /dev/fd/0 < /dev/null) ; then + if test -d /dev/fd && test -r /dev/fd/0 < /dev/null; then # check for systems like FreeBSD 5 that only provide /dev/fd/[012] - if (exec test -r /dev/fd/3 3&6 else - if test -d /dev/fd && (exec test -r /dev/stdin < /dev/null) ; then + if test -d /dev/fd && test -r /dev/stdin < /dev/null; then bash_cv_dev_stdin=present - elif test -d /proc/self/fd && (exec test -r /dev/stdin < /dev/null) ; then + elif test -d /proc/self/fd && test -r /dev/stdin < /dev/null; then bash_cv_dev_stdin=present else bash_cv_dev_stdin=absent @@ -24084,7 +23670,7 @@ _ASBOX } >&5 cat >&5 <<_CSEOF -This file was extended by bash $as_me 3.2-maint, which was +This file was extended by bash $as_me 3.1-release, which was generated by GNU Autoconf 2.53. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -24146,7 +23732,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -bash config.status 3.2-maint +bash config.status 3.1-release configured by $0, generated by GNU Autoconf 2.53, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" @@ -24380,7 +23966,6 @@ s,@OBJEXT@,$OBJEXT,;t t s,@CPP@,$CPP,;t t s,@CROSS_COMPILE@,$CROSS_COMPILE,;t t s,@SIGNAMES_H@,$SIGNAMES_H,;t t -s,@SIGNAMES_O@,$SIGNAMES_O,;t t s,@CC_FOR_BUILD@,$CC_FOR_BUILD,;t t s,@STATIC_LD@,$STATIC_LD,;t t s,@CFLAGS_FOR_BUILD@,$CFLAGS_FOR_BUILD,;t t diff --git a/autom4te-2.53.cache/requests b/autom4te-2.53.cache/requests index 1cb5bb82d..2a56e70d9 100644 --- a/autom4te-2.53.cache/requests +++ b/autom4te-2.53.cache/requests @@ -5,7 +5,7 @@ @request = ( bless( [ '0', - 0, + 1, [ '/usr/share/autoconf' ], @@ -79,12 +79,12 @@ 'AC_FUNC_GETLOADAVG' => 1, 'AH_OUTPUT' => 1, 'AC_FUNC_FSEEKO' => 1, - 'AC_FUNC_MKTIME' => 1, 'AM_CONDITIONAL' => 1, + 'AC_FUNC_MKTIME' => 1, 'AC_CONFIG_HEADERS' => 1, 'AC_HEADER_SYS_WAIT' => 1, - 'AC_PROG_LN_S' => 1, 'AC_FUNC_MEMCMP' => 1, + 'AC_PROG_LN_S' => 1, 'm4_include' => 1, 'AC_HEADER_DIRENT' => 1, 'AC_CHECK_FUNCS' => 1 diff --git a/autom4te-2.53.cache/traces.0 b/autom4te-2.53.cache/traces.0 index ce4d16592..ccb4ebc5c 100644 --- a/autom4te-2.53.cache/traces.0 +++ b/autom4te-2.53.cache/traces.0 @@ -160,1065 +160,1033 @@ m4trace:configure.in:371: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits m4trace:configure.in:371: -1- AC_DEFINE_TRACE_LITERAL([_LARGE_FILES]) m4trace:configure.in:371: -1- AH_OUTPUT([_LARGE_FILES], [/* Define for large files, on AIX-style hosts. */ #undef _LARGE_FILES]) -m4trace:configure.in:408: -1- AC_SUBST([CROSS_COMPILE]) -m4trace:configure.in:410: -1- AC_SUBST([SIGNAMES_H]) -m4trace:configure.in:411: -1- AC_SUBST([SIGNAMES_O]) -m4trace:configure.in:420: -1- AC_SUBST([CC_FOR_BUILD]) -m4trace:configure.in:462: -1- AC_SUBST([CFLAGS]) -m4trace:configure.in:463: -1- AC_SUBST([CPPFLAGS]) -m4trace:configure.in:464: -1- AC_SUBST([LDFLAGS]) -m4trace:configure.in:465: -1- AC_SUBST([STATIC_LD]) -m4trace:configure.in:467: -1- AC_SUBST([CFLAGS_FOR_BUILD]) -m4trace:configure.in:468: -1- AC_SUBST([CPPFLAGS_FOR_BUILD]) -m4trace:configure.in:469: -1- AC_SUBST([LDFLAGS_FOR_BUILD]) -m4trace:configure.in:471: -1- AC_PROG_GCC_TRADITIONAL -m4trace:configure.in:483: -1- AC_CHECK_LIB([termcap], [tgetent], [bash_cv_termcap_lib=libtermcap], [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo, +m4trace:configure.in:407: -1- AC_SUBST([CROSS_COMPILE]) +m4trace:configure.in:409: -1- AC_SUBST([SIGNAMES_H]) +m4trace:configure.in:418: -1- AC_SUBST([CC_FOR_BUILD]) +m4trace:configure.in:460: -1- AC_SUBST([CFLAGS]) +m4trace:configure.in:461: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.in:462: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.in:463: -1- AC_SUBST([STATIC_LD]) +m4trace:configure.in:465: -1- AC_SUBST([CFLAGS_FOR_BUILD]) +m4trace:configure.in:466: -1- AC_SUBST([CPPFLAGS_FOR_BUILD]) +m4trace:configure.in:467: -1- AC_SUBST([LDFLAGS_FOR_BUILD]) +m4trace:configure.in:469: -1- AC_PROG_GCC_TRADITIONAL +m4trace:configure.in:481: -1- AC_CHECK_LIB([termcap], [tgetent], [bash_cv_termcap_lib=libtermcap], [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo, [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, bash_cv_termcap_lib=gnutermcap)])])]) -m4trace:configure.in:483: -1- AC_CHECK_LIB([tinfo], [tgetent], [bash_cv_termcap_lib=libtinfo], [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, +m4trace:configure.in:481: -1- AC_CHECK_LIB([tinfo], [tgetent], [bash_cv_termcap_lib=libtinfo], [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, bash_cv_termcap_lib=gnutermcap)])]) -m4trace:configure.in:483: -1- AC_CHECK_LIB([curses], [tgetent], [bash_cv_termcap_lib=libcurses], [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, +m4trace:configure.in:481: -1- AC_CHECK_LIB([curses], [tgetent], [bash_cv_termcap_lib=libcurses], [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, bash_cv_termcap_lib=gnutermcap)]) -m4trace:configure.in:483: -1- AC_CHECK_LIB([ncurses], [tgetent], [bash_cv_termcap_lib=libncurses], [bash_cv_termcap_lib=gnutermcap]) -m4trace:configure.in:483: -1- AC_DEFINE_TRACE_LITERAL([RL_READLINE_VERSION]) -m4trace:configure.in:483: -1- AH_OUTPUT([RL_READLINE_VERSION], [/* encoded version of the installed readline library */ +m4trace:configure.in:481: -1- AC_CHECK_LIB([ncurses], [tgetent], [bash_cv_termcap_lib=libncurses], [bash_cv_termcap_lib=gnutermcap]) +m4trace:configure.in:481: -1- AC_DEFINE_TRACE_LITERAL([RL_READLINE_VERSION]) +m4trace:configure.in:481: -1- AH_OUTPUT([RL_READLINE_VERSION], [/* encoded version of the installed readline library */ #undef RL_READLINE_VERSION]) -m4trace:configure.in:483: -1- AC_DEFINE_TRACE_LITERAL([RL_VERSION_MAJOR]) -m4trace:configure.in:483: -1- AH_OUTPUT([RL_VERSION_MAJOR], [/* major version of installed readline library */ +m4trace:configure.in:481: -1- AC_DEFINE_TRACE_LITERAL([RL_VERSION_MAJOR]) +m4trace:configure.in:481: -1- AH_OUTPUT([RL_VERSION_MAJOR], [/* major version of installed readline library */ #undef RL_VERSION_MAJOR]) -m4trace:configure.in:483: -1- AC_DEFINE_TRACE_LITERAL([RL_VERSION_MINOR]) -m4trace:configure.in:483: -1- AH_OUTPUT([RL_VERSION_MINOR], [/* minor version of installed readline library */ +m4trace:configure.in:481: -1- AC_DEFINE_TRACE_LITERAL([RL_VERSION_MINOR]) +m4trace:configure.in:481: -1- AH_OUTPUT([RL_VERSION_MINOR], [/* minor version of installed readline library */ #undef RL_VERSION_MINOR]) -m4trace:configure.in:483: -1- AC_SUBST([RL_VERSION]) -m4trace:configure.in:483: -1- AC_SUBST([RL_MAJOR]) -m4trace:configure.in:483: -1- AC_SUBST([RL_MINOR]) -m4trace:configure.in:496: -1- AC_DEFINE_TRACE_LITERAL([READLINE]) -m4trace:configure.in:531: -1- AC_DEFINE_TRACE_LITERAL([HISTORY]) -m4trace:configure.in:534: -1- AC_DEFINE_TRACE_LITERAL([BANG_HISTORY]) -m4trace:configure.in:564: -1- AC_SUBST([READLINE_LIB]) -m4trace:configure.in:565: -1- AC_SUBST([READLINE_DEP]) -m4trace:configure.in:566: -1- AC_SUBST([RL_LIBDIR]) -m4trace:configure.in:567: -1- AC_SUBST([RL_INCLUDEDIR]) -m4trace:configure.in:568: -1- AC_SUBST([RL_INCLUDE]) -m4trace:configure.in:569: -1- AC_SUBST([HISTORY_LIB]) -m4trace:configure.in:570: -1- AC_SUBST([HISTORY_DEP]) -m4trace:configure.in:571: -1- AC_SUBST([HIST_LIBDIR]) -m4trace:configure.in:572: -1- AC_SUBST([TILDE_LIB]) -m4trace:configure.in:577: -1- AC_PROG_INSTALL -m4trace:configure.in:577: -1- AC_SUBST([INSTALL_PROGRAM]) -m4trace:configure.in:577: -1- AC_SUBST([INSTALL_SCRIPT]) -m4trace:configure.in:577: -1- AC_SUBST([INSTALL_DATA]) -m4trace:configure.in:578: -1- AC_SUBST([AR]) -m4trace:configure.in:582: -1- AC_PROG_RANLIB -m4trace:configure.in:582: -1- AC_SUBST([RANLIB]) -m4trace:configure.in:582: -1- AC_SUBST([ac_ct_RANLIB]) -m4trace:configure.in:583: -1- AC_PROG_YACC -m4trace:configure.in:583: -1- AC_SUBST([YACC]) -m4trace:configure.in:584: -1- AC_PROG_MAKE_SET -m4trace:configure.in:584: -1- AC_SUBST([SET_MAKE]) -m4trace:configure.in:590: -1- AC_SUBST([MAKE_SHELL]) -m4trace:configure.in:612: -1- AC_SUBST([SIZE]) -m4trace:configure.in:615: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE]) -m4trace:configure.in:618: -1- AC_C_CONST -m4trace:configure.in:618: -1- AC_DEFINE_TRACE_LITERAL([const]) -m4trace:configure.in:618: -1- AH_OUTPUT([const], [/* Define to empty if \`const' does not conform to ANSI C. */ +m4trace:configure.in:481: -1- AC_SUBST([RL_VERSION]) +m4trace:configure.in:481: -1- AC_SUBST([RL_MAJOR]) +m4trace:configure.in:481: -1- AC_SUBST([RL_MINOR]) +m4trace:configure.in:494: -1- AC_DEFINE_TRACE_LITERAL([READLINE]) +m4trace:configure.in:529: -1- AC_DEFINE_TRACE_LITERAL([HISTORY]) +m4trace:configure.in:532: -1- AC_DEFINE_TRACE_LITERAL([BANG_HISTORY]) +m4trace:configure.in:562: -1- AC_SUBST([READLINE_LIB]) +m4trace:configure.in:563: -1- AC_SUBST([READLINE_DEP]) +m4trace:configure.in:564: -1- AC_SUBST([RL_LIBDIR]) +m4trace:configure.in:565: -1- AC_SUBST([RL_INCLUDEDIR]) +m4trace:configure.in:566: -1- AC_SUBST([RL_INCLUDE]) +m4trace:configure.in:567: -1- AC_SUBST([HISTORY_LIB]) +m4trace:configure.in:568: -1- AC_SUBST([HISTORY_DEP]) +m4trace:configure.in:569: -1- AC_SUBST([HIST_LIBDIR]) +m4trace:configure.in:570: -1- AC_SUBST([TILDE_LIB]) +m4trace:configure.in:575: -1- AC_PROG_INSTALL +m4trace:configure.in:575: -1- AC_SUBST([INSTALL_PROGRAM]) +m4trace:configure.in:575: -1- AC_SUBST([INSTALL_SCRIPT]) +m4trace:configure.in:575: -1- AC_SUBST([INSTALL_DATA]) +m4trace:configure.in:576: -1- AC_SUBST([AR]) +m4trace:configure.in:580: -1- AC_PROG_RANLIB +m4trace:configure.in:580: -1- AC_SUBST([RANLIB]) +m4trace:configure.in:580: -1- AC_SUBST([ac_ct_RANLIB]) +m4trace:configure.in:581: -1- AC_PROG_YACC +m4trace:configure.in:581: -1- AC_SUBST([YACC]) +m4trace:configure.in:582: -1- AC_PROG_MAKE_SET +m4trace:configure.in:582: -1- AC_SUBST([SET_MAKE]) +m4trace:configure.in:588: -1- AC_SUBST([MAKE_SHELL]) +m4trace:configure.in:610: -1- AC_SUBST([SIZE]) +m4trace:configure.in:613: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE]) +m4trace:configure.in:616: -1- AC_C_CONST +m4trace:configure.in:616: -1- AC_DEFINE_TRACE_LITERAL([const]) +m4trace:configure.in:616: -1- AH_OUTPUT([const], [/* Define to empty if \`const' does not conform to ANSI C. */ #undef const]) -m4trace:configure.in:619: -1- AC_C_INLINE -m4trace:configure.in:619: -1- AC_DEFINE_TRACE_LITERAL([inline]) -m4trace:configure.in:619: -1- AH_OUTPUT([inline], [/* Define as \`__inline' if that's what the C compiler calls it, or to nothing +m4trace:configure.in:617: -1- AC_C_INLINE +m4trace:configure.in:617: -1- AC_DEFINE_TRACE_LITERAL([inline]) +m4trace:configure.in:617: -1- AH_OUTPUT([inline], [/* Define as \`__inline' if that's what the C compiler calls it, or to nothing if it is not supported. */ #undef inline]) -m4trace:configure.in:619: -1- AC_DEFINE_TRACE_LITERAL([inline]) -m4trace:configure.in:620: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN]) -m4trace:configure.in:620: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define to 1 if your processor stores words with the most significant byte +m4trace:configure.in:617: -1- AC_DEFINE_TRACE_LITERAL([inline]) +m4trace:configure.in:618: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN]) +m4trace:configure.in:618: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel and VAX). */ #undef WORDS_BIGENDIAN]) -m4trace:configure.in:621: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRINGIZE]) -m4trace:configure.in:621: -1- AH_OUTPUT([HAVE_STRINGIZE], [/* Define to 1 if cpp supports the ANSI @%:@ stringizing operator. */ +m4trace:configure.in:619: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRINGIZE]) +m4trace:configure.in:619: -1- AH_OUTPUT([HAVE_STRINGIZE], [/* Define to 1 if cpp supports the ANSI @%:@ stringizing operator. */ #undef HAVE_STRINGIZE]) -m4trace:configure.in:622: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_DOUBLE]) -m4trace:configure.in:622: -1- AH_OUTPUT([HAVE_LONG_DOUBLE], [/* Define to 1 if long double works and has more range or precision than +m4trace:configure.in:620: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_DOUBLE]) +m4trace:configure.in:620: -1- AH_OUTPUT([HAVE_LONG_DOUBLE], [/* Define to 1 if long double works and has more range or precision than double. */ #undef HAVE_LONG_DOUBLE]) -m4trace:configure.in:623: -1- AC_DEFINE_TRACE_LITERAL([PROTOTYPES]) -m4trace:configure.in:623: -1- AH_OUTPUT([PROTOTYPES], [/* Define to 1 if the C compiler supports function prototypes. */ +m4trace:configure.in:621: -1- AC_DEFINE_TRACE_LITERAL([PROTOTYPES]) +m4trace:configure.in:621: -1- AH_OUTPUT([PROTOTYPES], [/* Define to 1 if the C compiler supports function prototypes. */ #undef PROTOTYPES]) -m4trace:configure.in:623: -1- AC_DEFINE_TRACE_LITERAL([__PROTOTYPES]) -m4trace:configure.in:623: -1- AH_OUTPUT([__PROTOTYPES], [/* Define like PROTOTYPES; this can be used by system headers. */ +m4trace:configure.in:621: -1- AC_DEFINE_TRACE_LITERAL([__PROTOTYPES]) +m4trace:configure.in:621: -1- AH_OUTPUT([__PROTOTYPES], [/* Define like PROTOTYPES; this can be used by system headers. */ #undef __PROTOTYPES]) -m4trace:configure.in:624: -1- AH_OUTPUT([__CHAR_UNSIGNED__], [/* Define to 1 if type \`char' is unsigned and you are not using gcc. */ +m4trace:configure.in:622: -1- AH_OUTPUT([__CHAR_UNSIGNED__], [/* Define to 1 if type \`char' is unsigned and you are not using gcc. */ #ifndef __CHAR_UNSIGNED__ # undef __CHAR_UNSIGNED__ #endif]) -m4trace:configure.in:624: -1- AC_DEFINE_TRACE_LITERAL([__CHAR_UNSIGNED__]) -m4trace:configure.in:627: -1- AM_GNU_GETTEXT([no-libtool], [need-ngettext], [lib/intl]) -m4trace:configure.in:627: -1- AC_SUBST([MKINSTALLDIRS]) -m4trace:configure.in:627: -1- AC_SUBST([USE_NLS]) -m4trace:configure.in:627: -1- AC_SUBST([MSGFMT]) -m4trace:configure.in:627: -1- AC_SUBST([GMSGFMT], [$ac_cv_path_GMSGFMT]) -m4trace:configure.in:627: -1- AC_SUBST([XGETTEXT]) -m4trace:configure.in:627: -1- AC_SUBST([MSGMERGE]) -m4trace:configure.in:627: -1- AC_TYPE_OFF_T -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([off_t]) -m4trace:configure.in:627: -1- AH_OUTPUT([off_t], [/* Define to \`long' if does not define. */ +m4trace:configure.in:622: -1- AC_DEFINE_TRACE_LITERAL([__CHAR_UNSIGNED__]) +m4trace:configure.in:625: -1- AM_GNU_GETTEXT([no-libtool], [need-ngettext], [lib/intl]) +m4trace:configure.in:625: -1- AC_SUBST([MKINSTALLDIRS]) +m4trace:configure.in:625: -1- AC_SUBST([USE_NLS]) +m4trace:configure.in:625: -1- AC_SUBST([MSGFMT]) +m4trace:configure.in:625: -1- AC_SUBST([GMSGFMT], [$ac_cv_path_GMSGFMT]) +m4trace:configure.in:625: -1- AC_SUBST([XGETTEXT]) +m4trace:configure.in:625: -1- AC_SUBST([MSGMERGE]) +m4trace:configure.in:625: -1- AC_TYPE_OFF_T +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([off_t]) +m4trace:configure.in:625: -1- AH_OUTPUT([off_t], [/* Define to \`long' if does not define. */ #undef off_t]) -m4trace:configure.in:627: -1- AC_TYPE_SIZE_T -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([size_t]) -m4trace:configure.in:627: -1- AH_OUTPUT([size_t], [/* Define to \`unsigned' if does not define. */ +m4trace:configure.in:625: -1- AC_TYPE_SIZE_T +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([size_t]) +m4trace:configure.in:625: -1- AH_OUTPUT([size_t], [/* Define to \`unsigned' if does not define. */ #undef size_t]) -m4trace:configure.in:627: -1- AC_FUNC_ALLOCA -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have and it should be used (not on Ultrix). +m4trace:configure.in:625: -1- AC_FUNC_ALLOCA +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have and it should be used (not on Ultrix). */ #undef HAVE_ALLOCA_H]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have \`alloca', as a function or macro. */ +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have \`alloca', as a function or macro. */ #undef HAVE_ALLOCA]) -m4trace:configure.in:627: -1- AC_LIBSOURCE([alloca.c]) -m4trace:configure.in:627: -1- AC_SUBST([ALLOCA], [alloca.$ac_objext]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA]) -m4trace:configure.in:627: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using \`alloca.c'. */ +m4trace:configure.in:625: -1- AC_LIBSOURCE([alloca.c]) +m4trace:configure.in:625: -1- AC_SUBST([ALLOCA], [alloca.$ac_objext]) +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA]) +m4trace:configure.in:625: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using \`alloca.c'. */ #undef C_ALLOCA]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([CRAY_STACKSEG_END]) -m4trace:configure.in:627: -1- AH_OUTPUT([CRAY_STACKSEG_END], [/* Define to one of \`_getb67', \`GETB67', \`getb67' for Cray-2 and Cray-YMP +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([CRAY_STACKSEG_END]) +m4trace:configure.in:625: -1- AH_OUTPUT([CRAY_STACKSEG_END], [/* Define to one of \`_getb67', \`GETB67', \`getb67' for Cray-2 and Cray-YMP systems. This function is required for \`alloca.c' support on those systems. */ #undef CRAY_STACKSEG_END]) -m4trace:configure.in:627: -1- AH_OUTPUT([STACK_DIRECTION], [/* If using the C implementation of alloca, define if you know the +m4trace:configure.in:625: -1- AH_OUTPUT([STACK_DIRECTION], [/* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at run-time. STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ @%:@undef STACK_DIRECTION]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION]) -m4trace:configure.in:627: -1- AC_FUNC_MMAP -m4trace:configure.in:627: -1- AC_CHECK_HEADERS([stdlib.h unistd.h]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION]) +m4trace:configure.in:625: -1- AC_FUNC_MMAP +m4trace:configure.in:625: -1- AC_CHECK_HEADERS([stdlib.h unistd.h]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H]) -m4trace:configure.in:627: -1- AC_CHECK_FUNCS([getpagesize]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the \`getpagesize' function. */ +m4trace:configure.in:625: -1- AC_CHECK_FUNCS([getpagesize]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the \`getpagesize' function. */ #undef HAVE_GETPAGESIZE]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have a working \`mmap' system call. */ +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have a working \`mmap' system call. */ #undef HAVE_MMAP]) -m4trace:configure.in:627: -1- AC_SUBST([GLIBC21]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([INTDIV0_RAISES_SIGFPE]) -m4trace:configure.in:627: -1- AH_OUTPUT([INTDIV0_RAISES_SIGFPE], [/* Define if integer division by zero raises signal SIGFPE. */ +m4trace:configure.in:625: -1- AC_SUBST([GLIBC21]) +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([INTDIV0_RAISES_SIGFPE]) +m4trace:configure.in:625: -1- AH_OUTPUT([INTDIV0_RAISES_SIGFPE], [/* Define if integer division by zero raises signal SIGFPE. */ #undef INTDIV0_RAISES_SIGFPE]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H_WITH_UINTMAX]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_INTTYPES_H_WITH_UINTMAX], [/* Define if exists, doesn't clash with , and +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H_WITH_UINTMAX]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_INTTYPES_H_WITH_UINTMAX], [/* Define if exists, doesn't clash with , and declares uintmax_t. */ #undef HAVE_INTTYPES_H_WITH_UINTMAX]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDINT_H_WITH_UINTMAX]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_STDINT_H_WITH_UINTMAX], [/* Define if exists, doesn't clash with , and declares +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDINT_H_WITH_UINTMAX]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_STDINT_H_WITH_UINTMAX], [/* Define if exists, doesn't clash with , and declares uintmax_t. */ #undef HAVE_STDINT_H_WITH_UINTMAX]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_UNSIGNED_LONG_LONG], [/* Define if you have the unsigned long long type. */ +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_UNSIGNED_LONG_LONG], [/* Define if you have the unsigned long long type. */ #undef HAVE_UNSIGNED_LONG_LONG]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t]) -m4trace:configure.in:627: -1- AH_OUTPUT([uintmax_t], [/* Define to unsigned long or unsigned long long if and +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t]) +m4trace:configure.in:625: -1- AH_OUTPUT([uintmax_t], [/* Define to unsigned long or unsigned long long if and don't define. */ #undef uintmax_t]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UINTMAX_T]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_UINTMAX_T], [/* Define if you have the 'uintmax_t' type in or . */ +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UINTMAX_T]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_UINTMAX_T], [/* Define if you have the 'uintmax_t' type in or . */ #undef HAVE_UINTMAX_T]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define if exists and doesn't clash with . */ +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define if exists and doesn't clash with . */ #undef HAVE_INTTYPES_H]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([PRI_MACROS_BROKEN]) -m4trace:configure.in:627: -1- AH_OUTPUT([PRI_MACROS_BROKEN], [/* Define if exists and defines unusable PRI* macros. */ +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([PRI_MACROS_BROKEN]) +m4trace:configure.in:625: -1- AH_OUTPUT([PRI_MACROS_BROKEN], [/* Define if exists and defines unusable PRI* macros. */ #undef PRI_MACROS_BROKEN]) -m4trace:configure.in:627: -1- AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ +m4trace:configure.in:625: -1- AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ stdlib.h string.h unistd.h sys/param.h]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_ARGZ_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_ARGZ_H], [/* Define to 1 if you have the header file. */ #undef HAVE_ARGZ_H]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_NL_TYPES_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_NL_TYPES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_NL_TYPES_H]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the header file. */ #undef HAVE_MALLOC_H]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDDEF_H]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STRING_H]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H]) -m4trace:configure.in:627: -1- AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ -geteuid getgid getuid mempcpy munmap putenv setenv setlocale localeconv stpcpy \ +m4trace:configure.in:625: -1- AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ +geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next \ __fsetlocking]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_FEOF_UNLOCKED], [/* Define to 1 if you have the \`feof_unlocked' function. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_FEOF_UNLOCKED], [/* Define to 1 if you have the \`feof_unlocked' function. */ #undef HAVE_FEOF_UNLOCKED]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_FGETS_UNLOCKED], [/* Define to 1 if you have the \`fgets_unlocked' function. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_FGETS_UNLOCKED], [/* Define to 1 if you have the \`fgets_unlocked' function. */ #undef HAVE_FGETS_UNLOCKED]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_GETC_UNLOCKED], [/* Define to 1 if you have the \`getc_unlocked' function. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_GETC_UNLOCKED], [/* Define to 1 if you have the \`getc_unlocked' function. */ #undef HAVE_GETC_UNLOCKED]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the \`getcwd' function. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the \`getcwd' function. */ #undef HAVE_GETCWD]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_GETEGID], [/* Define to 1 if you have the \`getegid' function. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_GETEGID], [/* Define to 1 if you have the \`getegid' function. */ #undef HAVE_GETEGID]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_GETEUID], [/* Define to 1 if you have the \`geteuid' function. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_GETEUID], [/* Define to 1 if you have the \`geteuid' function. */ #undef HAVE_GETEUID]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_GETGID], [/* Define to 1 if you have the \`getgid' function. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_GETGID], [/* Define to 1 if you have the \`getgid' function. */ #undef HAVE_GETGID]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_GETUID], [/* Define to 1 if you have the \`getuid' function. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_GETUID], [/* Define to 1 if you have the \`getuid' function. */ #undef HAVE_GETUID]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the \`mempcpy' function. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the \`mempcpy' function. */ #undef HAVE_MEMPCPY]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_MUNMAP], [/* Define to 1 if you have the \`munmap' function. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_MUNMAP], [/* Define to 1 if you have the \`munmap' function. */ #undef HAVE_MUNMAP]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_PUTENV], [/* Define to 1 if you have the \`putenv' function. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_PUTENV], [/* Define to 1 if you have the \`putenv' function. */ #undef HAVE_PUTENV]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_SETENV], [/* Define to 1 if you have the \`setenv' function. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_SETENV], [/* Define to 1 if you have the \`setenv' function. */ #undef HAVE_SETENV]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the \`setlocale' function. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the \`setlocale' function. */ #undef HAVE_SETLOCALE]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_LOCALECONV], [/* Define to 1 if you have the \`localeconv' function. */ -#undef HAVE_LOCALECONV]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the \`stpcpy' function. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the \`stpcpy' function. */ #undef HAVE_STPCPY]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the \`strcasecmp' function. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the \`strcasecmp' function. */ #undef HAVE_STRCASECMP]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the \`strdup' function. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the \`strdup' function. */ #undef HAVE_STRDUP]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the \`strtoul' function. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the \`strtoul' function. */ #undef HAVE_STRTOUL]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_TSEARCH], [/* Define to 1 if you have the \`tsearch' function. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_TSEARCH], [/* Define to 1 if you have the \`tsearch' function. */ #undef HAVE_TSEARCH]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE___ARGZ_COUNT], [/* Define to 1 if you have the \`__argz_count' function. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE___ARGZ_COUNT], [/* Define to 1 if you have the \`__argz_count' function. */ #undef HAVE___ARGZ_COUNT]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE___ARGZ_STRINGIFY], [/* Define to 1 if you have the \`__argz_stringify' function. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE___ARGZ_STRINGIFY], [/* Define to 1 if you have the \`__argz_stringify' function. */ #undef HAVE___ARGZ_STRINGIFY]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE___ARGZ_NEXT], [/* Define to 1 if you have the \`__argz_next' function. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE___ARGZ_NEXT], [/* Define to 1 if you have the \`__argz_next' function. */ #undef HAVE___ARGZ_NEXT]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE___FSETLOCKING], [/* Define to 1 if you have the \`__fsetlocking' function. */ +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE___FSETLOCKING], [/* Define to 1 if you have the \`__fsetlocking' function. */ #undef HAVE___FSETLOCKING]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ICONV]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_ICONV], [/* Define if you have the iconv() function. */ +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ICONV]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_ICONV], [/* Define if you have the iconv() function. */ #undef HAVE_ICONV]) -m4trace:configure.in:627: -1- AC_SUBST([LIBICONV]) -m4trace:configure.in:627: -1- AC_SUBST([LTLIBICONV]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([ICONV_CONST]) -m4trace:configure.in:627: -1- AH_OUTPUT([ICONV_CONST], [/* Define as const if the declaration of iconv() needs const. */ +m4trace:configure.in:625: -1- AC_SUBST([LIBICONV]) +m4trace:configure.in:625: -1- AC_SUBST([LTLIBICONV]) +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([ICONV_CONST]) +m4trace:configure.in:625: -1- AH_OUTPUT([ICONV_CONST], [/* Define as const if the declaration of iconv() needs const. */ #undef ICONV_CONST]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_CODESET]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_LANGINFO_CODESET], [/* Define if you have and nl_langinfo(CODESET). */ +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_CODESET]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_LANGINFO_CODESET], [/* Define if you have and nl_langinfo(CODESET). */ #undef HAVE_LANGINFO_CODESET]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LC_MESSAGES]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_LC_MESSAGES], [/* Define if your file defines LC_MESSAGES. */ +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LC_MESSAGES]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_LC_MESSAGES], [/* Define if your file defines LC_MESSAGES. */ #undef HAVE_LC_MESSAGES]) -m4trace:configure.in:627: -1- AC_SUBST([INTLBISON]) -m4trace:configure.in:627: -1- AC_SUBST([USE_NLS]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_NLS]) -m4trace:configure.in:627: -1- AH_OUTPUT([ENABLE_NLS], [/* Define to 1 if translation of program messages to the user's native +m4trace:configure.in:625: -1- AC_SUBST([INTLBISON]) +m4trace:configure.in:625: -1- AC_SUBST([USE_NLS]) +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_NLS]) +m4trace:configure.in:625: -1- AH_OUTPUT([ENABLE_NLS], [/* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTEXT]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_GETTEXT], [/* Define if the GNU gettext() function is already present or preinstalled. */ +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTEXT]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_GETTEXT], [/* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DCGETTEXT]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define if the GNU dcgettext() function is already present or preinstalled. +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DCGETTEXT]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define if the GNU dcgettext() function is already present or preinstalled. */ #undef HAVE_DCGETTEXT]) -m4trace:configure.in:627: -1- AC_SUBST([BUILD_INCLUDED_LIBINTL]) -m4trace:configure.in:627: -1- AC_SUBST([USE_INCLUDED_LIBINTL]) -m4trace:configure.in:627: -1- AC_SUBST([CATOBJEXT]) -m4trace:configure.in:627: -1- AC_SUBST([DATADIRNAME]) -m4trace:configure.in:627: -1- AC_SUBST([INSTOBJEXT]) -m4trace:configure.in:627: -1- AC_SUBST([GENCAT]) -m4trace:configure.in:627: -1- AC_SUBST([INTLOBJS]) -m4trace:configure.in:627: -1- AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX]) -m4trace:configure.in:627: -1- AC_SUBST([INTLLIBS]) -m4trace:configure.in:627: -1- AC_SUBST([LIBINTL]) -m4trace:configure.in:627: -1- AC_SUBST([LTLIBINTL]) -m4trace:configure.in:627: -1- AC_SUBST([POSUB]) -m4trace:configure.in:630: -1- AC_HEADER_DIRENT -m4trace:configure.in:630: -1- AH_OUTPUT([HAVE_DIRENT_H], [/* Define to 1 if you have the header file, and it defines \`DIR'. +m4trace:configure.in:625: -1- AC_SUBST([BUILD_INCLUDED_LIBINTL]) +m4trace:configure.in:625: -1- AC_SUBST([USE_INCLUDED_LIBINTL]) +m4trace:configure.in:625: -1- AC_SUBST([CATOBJEXT]) +m4trace:configure.in:625: -1- AC_SUBST([DATADIRNAME]) +m4trace:configure.in:625: -1- AC_SUBST([INSTOBJEXT]) +m4trace:configure.in:625: -1- AC_SUBST([GENCAT]) +m4trace:configure.in:625: -1- AC_SUBST([INTLOBJS]) +m4trace:configure.in:625: -1- AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX]) +m4trace:configure.in:625: -1- AC_SUBST([INTLLIBS]) +m4trace:configure.in:625: -1- AC_SUBST([LIBINTL]) +m4trace:configure.in:625: -1- AC_SUBST([LTLIBINTL]) +m4trace:configure.in:625: -1- AC_SUBST([POSUB]) +m4trace:configure.in:628: -1- AC_HEADER_DIRENT +m4trace:configure.in:628: -1- AH_OUTPUT([HAVE_DIRENT_H], [/* Define to 1 if you have the header file, and it defines \`DIR'. */ #undef HAVE_DIRENT_H]) -m4trace:configure.in:630: -1- AH_OUTPUT([HAVE_SYS_NDIR_H], [/* Define to 1 if you have the header file, and it defines \`DIR'. +m4trace:configure.in:628: -1- AH_OUTPUT([HAVE_SYS_NDIR_H], [/* Define to 1 if you have the header file, and it defines \`DIR'. */ #undef HAVE_SYS_NDIR_H]) -m4trace:configure.in:630: -1- AH_OUTPUT([HAVE_SYS_DIR_H], [/* Define to 1 if you have the header file, and it defines \`DIR'. +m4trace:configure.in:628: -1- AH_OUTPUT([HAVE_SYS_DIR_H], [/* Define to 1 if you have the header file, and it defines \`DIR'. */ #undef HAVE_SYS_DIR_H]) -m4trace:configure.in:630: -1- AH_OUTPUT([HAVE_NDIR_H], [/* Define to 1 if you have the header file, and it defines \`DIR'. */ +m4trace:configure.in:628: -1- AH_OUTPUT([HAVE_NDIR_H], [/* Define to 1 if you have the header file, and it defines \`DIR'. */ #undef HAVE_NDIR_H]) -m4trace:configure.in:631: -1- AC_HEADER_TIME -m4trace:configure.in:631: -1- AC_DEFINE_TRACE_LITERAL([TIME_WITH_SYS_TIME]) -m4trace:configure.in:631: -1- AH_OUTPUT([TIME_WITH_SYS_TIME], [/* Define to 1 if you can safely include both and . */ +m4trace:configure.in:629: -1- AC_HEADER_TIME +m4trace:configure.in:629: -1- AC_DEFINE_TRACE_LITERAL([TIME_WITH_SYS_TIME]) +m4trace:configure.in:629: -1- AH_OUTPUT([TIME_WITH_SYS_TIME], [/* Define to 1 if you can safely include both and . */ #undef TIME_WITH_SYS_TIME]) -m4trace:configure.in:633: -1- AC_CHECK_HEADERS([inttypes.h]) -m4trace:configure.in:633: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:631: -1- AC_CHECK_HEADERS([inttypes.h]) +m4trace:configure.in:631: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H]) -m4trace:configure.in:637: -1- AC_CHECK_HEADERS([unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \ +m4trace:configure.in:635: -1- 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 \ stddef.h stdint.h netdb.h pwd.h grp.h strings.h regex.h]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_STDARG_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_STDARG_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDARG_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_VARARGS_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_VARARGS_H], [/* Define to 1 if you have the header file. */ #undef HAVE_VARARGS_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STRING_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_TERMCAP_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_TERMCAP_H], [/* Define to 1 if you have the header file. */ #undef HAVE_TERMCAP_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_TERMIO_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_TERMIO_H], [/* Define to 1 if you have the header file. */ #undef HAVE_TERMIO_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_TERMIOS_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_TERMIOS_H], [/* Define to 1 if you have the header file. */ #undef HAVE_TERMIOS_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDDEF_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_NETDB_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_NETDB_H], [/* Define to 1 if you have the header file. */ #undef HAVE_NETDB_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_PWD_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_PWD_H], [/* Define to 1 if you have the header file. */ #undef HAVE_PWD_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_GRP_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_GRP_H], [/* Define to 1 if you have the header file. */ #undef HAVE_GRP_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_REGEX_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_REGEX_H], [/* Define to 1 if you have the header file. */ #undef HAVE_REGEX_H]) -m4trace:configure.in:640: -1- AC_CHECK_HEADERS([sys/pte.h sys/stream.h sys/select.h sys/file.h \ +m4trace:configure.in:638: -1- 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]) -m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_PTE_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:638: -1- AH_OUTPUT([HAVE_SYS_PTE_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_PTE_H]) -m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_STREAM_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:638: -1- AH_OUTPUT([HAVE_SYS_STREAM_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_STREAM_H]) -m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_SELECT_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:638: -1- AH_OUTPUT([HAVE_SYS_SELECT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_SELECT_H]) -m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_FILE_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:638: -1- AH_OUTPUT([HAVE_SYS_FILE_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_FILE_H]) -m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_RESOURCE_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:638: -1- AH_OUTPUT([HAVE_SYS_RESOURCE_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_RESOURCE_H]) -m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:638: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H]) -m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_SOCKET_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:638: -1- AH_OUTPUT([HAVE_SYS_SOCKET_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOCKET_H]) -m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:638: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H]) -m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:638: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H]) -m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_TIMES_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:638: -1- AH_OUTPUT([HAVE_SYS_TIMES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIMES_H]) -m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:638: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H]) -m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_WAIT_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:638: -1- AH_OUTPUT([HAVE_SYS_WAIT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_WAIT_H]) -m4trace:configure.in:641: -1- AC_CHECK_HEADERS([netinet/in.h arpa/inet.h]) -m4trace:configure.in:641: -1- AH_OUTPUT([HAVE_NETINET_IN_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:639: -1- AC_CHECK_HEADERS([netinet/in.h arpa/inet.h]) +m4trace:configure.in:639: -1- AH_OUTPUT([HAVE_NETINET_IN_H], [/* Define to 1 if you have the header file. */ #undef HAVE_NETINET_IN_H]) -m4trace:configure.in:641: -1- AH_OUTPUT([HAVE_ARPA_INET_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:639: -1- AH_OUTPUT([HAVE_ARPA_INET_H], [/* Define to 1 if you have the header file. */ #undef HAVE_ARPA_INET_H]) -m4trace:configure.in:652: -1- AC_FUNC_ALLOCA -m4trace:configure.in:652: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H]) -m4trace:configure.in:652: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have and it should be used (not on Ultrix). +m4trace:configure.in:650: -1- AC_FUNC_ALLOCA +m4trace:configure.in:650: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H]) +m4trace:configure.in:650: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have and it should be used (not on Ultrix). */ #undef HAVE_ALLOCA_H]) -m4trace:configure.in:652: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA]) -m4trace:configure.in:652: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have \`alloca', as a function or macro. */ +m4trace:configure.in:650: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA]) +m4trace:configure.in:650: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have \`alloca', as a function or macro. */ #undef HAVE_ALLOCA]) -m4trace:configure.in:652: -1- AC_LIBSOURCE([alloca.c]) -m4trace:configure.in:652: -1- AC_SUBST([ALLOCA], [alloca.$ac_objext]) -m4trace:configure.in:652: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA]) -m4trace:configure.in:652: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using \`alloca.c'. */ +m4trace:configure.in:650: -1- AC_LIBSOURCE([alloca.c]) +m4trace:configure.in:650: -1- AC_SUBST([ALLOCA], [alloca.$ac_objext]) +m4trace:configure.in:650: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA]) +m4trace:configure.in:650: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using \`alloca.c'. */ #undef C_ALLOCA]) -m4trace:configure.in:652: -1- AC_DEFINE_TRACE_LITERAL([CRAY_STACKSEG_END]) -m4trace:configure.in:652: -1- AH_OUTPUT([CRAY_STACKSEG_END], [/* Define to one of \`_getb67', \`GETB67', \`getb67' for Cray-2 and Cray-YMP +m4trace:configure.in:650: -1- AC_DEFINE_TRACE_LITERAL([CRAY_STACKSEG_END]) +m4trace:configure.in:650: -1- AH_OUTPUT([CRAY_STACKSEG_END], [/* Define to one of \`_getb67', \`GETB67', \`getb67' for Cray-2 and Cray-YMP systems. This function is required for \`alloca.c' support on those systems. */ #undef CRAY_STACKSEG_END]) -m4trace:configure.in:652: -1- AH_OUTPUT([STACK_DIRECTION], [/* If using the C implementation of alloca, define if you know the +m4trace:configure.in:650: -1- AH_OUTPUT([STACK_DIRECTION], [/* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at run-time. STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ @%:@undef STACK_DIRECTION]) -m4trace:configure.in:652: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION]) -m4trace:configure.in:653: -1- AC_FUNC_GETPGRP -m4trace:configure.in:653: -1- AC_DEFINE_TRACE_LITERAL([GETPGRP_VOID]) -m4trace:configure.in:653: -1- AH_OUTPUT([GETPGRP_VOID], [/* Define to 1 if the \`getpgrp' function requires zero arguments. */ +m4trace:configure.in:650: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION]) +m4trace:configure.in:651: -1- AC_FUNC_GETPGRP +m4trace:configure.in:651: -1- AC_DEFINE_TRACE_LITERAL([GETPGRP_VOID]) +m4trace:configure.in:651: -1- AH_OUTPUT([GETPGRP_VOID], [/* Define to 1 if the \`getpgrp' function requires zero arguments. */ #undef GETPGRP_VOID]) -m4trace:configure.in:654: -1- AC_FUNC_SETVBUF_REVERSED -m4trace:configure.in:654: -1- AC_DEFINE_TRACE_LITERAL([SETVBUF_REVERSED]) -m4trace:configure.in:654: -1- AH_OUTPUT([SETVBUF_REVERSED], [/* Define to 1 if the \`setvbuf' function takes the buffering type as its +m4trace:configure.in:652: -1- AC_FUNC_SETVBUF_REVERSED +m4trace:configure.in:652: -1- AC_DEFINE_TRACE_LITERAL([SETVBUF_REVERSED]) +m4trace:configure.in:652: -1- AH_OUTPUT([SETVBUF_REVERSED], [/* Define to 1 if the \`setvbuf' function takes the buffering type as its second argument and the buffer pointer as the third, as on System V before release 3. */ #undef SETVBUF_REVERSED]) -m4trace:configure.in:655: -1- AC_FUNC_VPRINTF -m4trace:configure.in:655: -1- AC_CHECK_FUNCS([vprintf], [ +m4trace:configure.in:653: -1- AC_FUNC_VPRINTF +m4trace:configure.in:653: -1- AC_CHECK_FUNCS([vprintf], [ AC_CHECK_FUNC(_doprnt, [AC_DEFINE(HAVE_DOPRNT, 1, [Define to 1 if you don't have `vprintf' but do have `_doprnt.'])])]) -m4trace:configure.in:655: -1- AH_OUTPUT([HAVE_VPRINTF], [/* Define to 1 if you have the \`vprintf' function. */ +m4trace:configure.in:653: -1- AH_OUTPUT([HAVE_VPRINTF], [/* Define to 1 if you have the \`vprintf' function. */ #undef HAVE_VPRINTF]) -m4trace:configure.in:655: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOPRNT]) -m4trace:configure.in:655: -1- AH_OUTPUT([HAVE_DOPRNT], [/* Define to 1 if you don't have \`vprintf' but do have \`_doprnt.' */ +m4trace:configure.in:653: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOPRNT]) +m4trace:configure.in:653: -1- AH_OUTPUT([HAVE_DOPRNT], [/* Define to 1 if you don't have \`vprintf' but do have \`_doprnt.' */ #undef HAVE_DOPRNT]) -m4trace:configure.in:656: -1- AC_FUNC_STRCOLL -m4trace:configure.in:656: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCOLL]) -m4trace:configure.in:656: -1- AH_OUTPUT([HAVE_STRCOLL], [/* Define to 1 if you have the \`strcoll' function and it is properly defined. +m4trace:configure.in:654: -1- AC_FUNC_STRCOLL +m4trace:configure.in:654: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCOLL]) +m4trace:configure.in:654: -1- AH_OUTPUT([HAVE_STRCOLL], [/* Define to 1 if you have the \`strcoll' function and it is properly defined. */ #undef HAVE_STRCOLL]) -m4trace:configure.in:677: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VPRINTF]) -m4trace:configure.in:682: -1- AC_LIBSOURCE([vprint.c]) -m4trace:configure.in:682: -1- AC_SUBST([LIB@&t@OBJS]) -m4trace:configure.in:686: -1- AC_TYPE_SIGNAL -m4trace:configure.in:686: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE]) -m4trace:configure.in:686: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (\`int' or \`void'). */ +m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VPRINTF]) +m4trace:configure.in:680: -1- AC_LIBSOURCE([vprint.c]) +m4trace:configure.in:680: -1- AC_SUBST([LIB@&t@OBJS]) +m4trace:configure.in:684: -1- AC_TYPE_SIGNAL +m4trace:configure.in:684: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE]) +m4trace:configure.in:684: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (\`int' or \`void'). */ #undef RETSIGTYPE]) -m4trace:configure.in:689: -2- AC_DEFINE_TRACE_LITERAL([HAVE_SETOSTYPE]) -m4trace:configure.in:690: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WAIT3]) -m4trace:configure.in:691: -2- AC_DEFINE_TRACE_LITERAL([HAVE_ISINF_IN_LIBC]) -m4trace:configure.in:692: -2- AC_DEFINE_TRACE_LITERAL([HAVE_ISNAN_IN_LIBC]) -m4trace:configure.in:695: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MKFIFO]) -m4trace:configure.in:695: -2- AC_DEFINE_TRACE_LITERAL([MKFIFO_MISSING]) -m4trace:configure.in:701: -1- AC_CHECK_FUNCS([dup2 eaccess fcntl getdtablesize getgroups gethostname \ - getpagesize getpeername getrlimit getrusage gettimeofday \ - kill killpg lstat readlink sbrk select setdtablesize \ - tcgetpgrp uname ulimit waitpid]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_DUP2], [/* Define to 1 if you have the \`dup2' function. */ +m4trace:configure.in:687: -2- AC_DEFINE_TRACE_LITERAL([HAVE_SETOSTYPE]) +m4trace:configure.in:688: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WAIT3]) +m4trace:configure.in:689: -2- AC_DEFINE_TRACE_LITERAL([HAVE_ISINF_IN_LIBC]) +m4trace:configure.in:692: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MKFIFO]) +m4trace:configure.in:692: -2- AC_DEFINE_TRACE_LITERAL([MKFIFO_MISSING]) +m4trace:configure.in:698: -1- AC_CHECK_FUNCS([dup2 fcntl getdtablesize getgroups gethostname getpagesize \ + getpeername getrlimit getrusage gettimeofday kill killpg \ + lstat readlink sbrk select setdtablesize tcgetpgrp uname \ + ulimit waitpid]) +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_DUP2], [/* Define to 1 if you have the \`dup2' function. */ #undef HAVE_DUP2]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_EACCESS], [/* Define to 1 if you have the \`eaccess' function. */ -#undef HAVE_EACCESS]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_FCNTL], [/* Define to 1 if you have the \`fcntl' function. */ +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_FCNTL], [/* Define to 1 if you have the \`fcntl' function. */ #undef HAVE_FCNTL]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_GETDTABLESIZE], [/* Define to 1 if you have the \`getdtablesize' function. */ +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_GETDTABLESIZE], [/* Define to 1 if you have the \`getdtablesize' function. */ #undef HAVE_GETDTABLESIZE]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_GETGROUPS], [/* Define to 1 if you have the \`getgroups' function. */ +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_GETGROUPS], [/* Define to 1 if you have the \`getgroups' function. */ #undef HAVE_GETGROUPS]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_GETHOSTNAME], [/* Define to 1 if you have the \`gethostname' function. */ +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_GETHOSTNAME], [/* Define to 1 if you have the \`gethostname' function. */ #undef HAVE_GETHOSTNAME]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the \`getpagesize' function. */ +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the \`getpagesize' function. */ #undef HAVE_GETPAGESIZE]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_GETPEERNAME], [/* Define to 1 if you have the \`getpeername' function. */ +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_GETPEERNAME], [/* Define to 1 if you have the \`getpeername' function. */ #undef HAVE_GETPEERNAME]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_GETRLIMIT], [/* Define to 1 if you have the \`getrlimit' function. */ +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_GETRLIMIT], [/* Define to 1 if you have the \`getrlimit' function. */ #undef HAVE_GETRLIMIT]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_GETRUSAGE], [/* Define to 1 if you have the \`getrusage' function. */ +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_GETRUSAGE], [/* Define to 1 if you have the \`getrusage' function. */ #undef HAVE_GETRUSAGE]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have the \`gettimeofday' function. */ +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have the \`gettimeofday' function. */ #undef HAVE_GETTIMEOFDAY]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_KILL], [/* Define to 1 if you have the \`kill' function. */ +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_KILL], [/* Define to 1 if you have the \`kill' function. */ #undef HAVE_KILL]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_KILLPG], [/* Define to 1 if you have the \`killpg' function. */ +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_KILLPG], [/* Define to 1 if you have the \`killpg' function. */ #undef HAVE_KILLPG]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_LSTAT], [/* Define to 1 if you have the \`lstat' function. */ +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_LSTAT], [/* Define to 1 if you have the \`lstat' function. */ #undef HAVE_LSTAT]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_READLINK], [/* Define to 1 if you have the \`readlink' function. */ +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_READLINK], [/* Define to 1 if you have the \`readlink' function. */ #undef HAVE_READLINK]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_SBRK], [/* Define to 1 if you have the \`sbrk' function. */ +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_SBRK], [/* Define to 1 if you have the \`sbrk' function. */ #undef HAVE_SBRK]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_SELECT], [/* Define to 1 if you have the \`select' function. */ +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_SELECT], [/* Define to 1 if you have the \`select' function. */ #undef HAVE_SELECT]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_SETDTABLESIZE], [/* Define to 1 if you have the \`setdtablesize' function. */ +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_SETDTABLESIZE], [/* Define to 1 if you have the \`setdtablesize' function. */ #undef HAVE_SETDTABLESIZE]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_TCGETPGRP], [/* Define to 1 if you have the \`tcgetpgrp' function. */ +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_TCGETPGRP], [/* Define to 1 if you have the \`tcgetpgrp' function. */ #undef HAVE_TCGETPGRP]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_UNAME], [/* Define to 1 if you have the \`uname' function. */ +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_UNAME], [/* Define to 1 if you have the \`uname' function. */ #undef HAVE_UNAME]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_ULIMIT], [/* Define to 1 if you have the \`ulimit' function. */ +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_ULIMIT], [/* Define to 1 if you have the \`ulimit' function. */ #undef HAVE_ULIMIT]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_WAITPID], [/* Define to 1 if you have the \`waitpid' function. */ +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_WAITPID], [/* Define to 1 if you have the \`waitpid' function. */ #undef HAVE_WAITPID]) -m4trace:configure.in:702: -1- AC_LIBSOURCE([rename.c]) -m4trace:configure.in:702: -1- AC_CHECK_FUNCS([rename], [], [_AC_LIBOBJ($ac_func)]) -m4trace:configure.in:702: -1- AH_OUTPUT([HAVE_RENAME], [/* Define to 1 if you have the \`rename' function. */ +m4trace:configure.in:699: -1- AC_LIBSOURCE([rename.c]) +m4trace:configure.in:699: -1- AC_CHECK_FUNCS([rename], [], [_AC_LIBOBJ($ac_func)]) +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_RENAME], [/* Define to 1 if you have the \`rename' function. */ #undef HAVE_RENAME]) -m4trace:configure.in:702: -1- AC_SUBST([LIB@&t@OBJS]) -m4trace:configure.in:709: -1- AC_CHECK_FUNCS([bcopy bzero confstr fnmatch \ +m4trace:configure.in:699: -1- AC_SUBST([LIB@&t@OBJS]) +m4trace:configure.in:706: -1- AC_CHECK_FUNCS([bcopy bzero confstr fnmatch \ getaddrinfo gethostbyname getservbyname getservent inet_aton \ memmove pathconf putenv raise regcomp regexec \ setenv setlinebuf setlocale setvbuf siginterrupt strchr \ sysconf tcgetattr times ttyname tzset unsetenv]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_BCOPY], [/* Define to 1 if you have the \`bcopy' function. */ +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_BCOPY], [/* Define to 1 if you have the \`bcopy' function. */ #undef HAVE_BCOPY]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_BZERO], [/* Define to 1 if you have the \`bzero' function. */ +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_BZERO], [/* Define to 1 if you have the \`bzero' function. */ #undef HAVE_BZERO]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_CONFSTR], [/* Define to 1 if you have the \`confstr' function. */ +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_CONFSTR], [/* Define to 1 if you have the \`confstr' function. */ #undef HAVE_CONFSTR]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_FNMATCH], [/* Define to 1 if you have the \`fnmatch' function. */ +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_FNMATCH], [/* Define to 1 if you have the \`fnmatch' function. */ #undef HAVE_FNMATCH]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_GETADDRINFO], [/* Define to 1 if you have the \`getaddrinfo' function. */ +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_GETADDRINFO], [/* Define to 1 if you have the \`getaddrinfo' function. */ #undef HAVE_GETADDRINFO]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_GETHOSTBYNAME], [/* Define to 1 if you have the \`gethostbyname' function. */ +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_GETHOSTBYNAME], [/* Define to 1 if you have the \`gethostbyname' function. */ #undef HAVE_GETHOSTBYNAME]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_GETSERVBYNAME], [/* Define to 1 if you have the \`getservbyname' function. */ +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_GETSERVBYNAME], [/* Define to 1 if you have the \`getservbyname' function. */ #undef HAVE_GETSERVBYNAME]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_GETSERVENT], [/* Define to 1 if you have the \`getservent' function. */ +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_GETSERVENT], [/* Define to 1 if you have the \`getservent' function. */ #undef HAVE_GETSERVENT]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_INET_ATON], [/* Define to 1 if you have the \`inet_aton' function. */ +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_INET_ATON], [/* Define to 1 if you have the \`inet_aton' function. */ #undef HAVE_INET_ATON]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_MEMMOVE], [/* Define to 1 if you have the \`memmove' function. */ +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_MEMMOVE], [/* Define to 1 if you have the \`memmove' function. */ #undef HAVE_MEMMOVE]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_PATHCONF], [/* Define to 1 if you have the \`pathconf' function. */ +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_PATHCONF], [/* Define to 1 if you have the \`pathconf' function. */ #undef HAVE_PATHCONF]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_PUTENV], [/* Define to 1 if you have the \`putenv' function. */ +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_PUTENV], [/* Define to 1 if you have the \`putenv' function. */ #undef HAVE_PUTENV]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_RAISE], [/* Define to 1 if you have the \`raise' function. */ +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_RAISE], [/* Define to 1 if you have the \`raise' function. */ #undef HAVE_RAISE]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_REGCOMP], [/* Define to 1 if you have the \`regcomp' function. */ +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_REGCOMP], [/* Define to 1 if you have the \`regcomp' function. */ #undef HAVE_REGCOMP]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_REGEXEC], [/* Define to 1 if you have the \`regexec' function. */ +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_REGEXEC], [/* Define to 1 if you have the \`regexec' function. */ #undef HAVE_REGEXEC]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_SETENV], [/* Define to 1 if you have the \`setenv' function. */ +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_SETENV], [/* Define to 1 if you have the \`setenv' function. */ #undef HAVE_SETENV]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_SETLINEBUF], [/* Define to 1 if you have the \`setlinebuf' function. */ +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_SETLINEBUF], [/* Define to 1 if you have the \`setlinebuf' function. */ #undef HAVE_SETLINEBUF]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the \`setlocale' function. */ +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the \`setlocale' function. */ #undef HAVE_SETLOCALE]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_SETVBUF], [/* Define to 1 if you have the \`setvbuf' function. */ +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_SETVBUF], [/* Define to 1 if you have the \`setvbuf' function. */ #undef HAVE_SETVBUF]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_SIGINTERRUPT], [/* Define to 1 if you have the \`siginterrupt' function. */ +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_SIGINTERRUPT], [/* Define to 1 if you have the \`siginterrupt' function. */ #undef HAVE_SIGINTERRUPT]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_STRCHR], [/* Define to 1 if you have the \`strchr' function. */ +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_STRCHR], [/* Define to 1 if you have the \`strchr' function. */ #undef HAVE_STRCHR]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_SYSCONF], [/* Define to 1 if you have the \`sysconf' function. */ +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_SYSCONF], [/* Define to 1 if you have the \`sysconf' function. */ #undef HAVE_SYSCONF]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_TCGETATTR], [/* Define to 1 if you have the \`tcgetattr' function. */ +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_TCGETATTR], [/* Define to 1 if you have the \`tcgetattr' function. */ #undef HAVE_TCGETATTR]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_TIMES], [/* Define to 1 if you have the \`times' function. */ +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_TIMES], [/* Define to 1 if you have the \`times' function. */ #undef HAVE_TIMES]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_TTYNAME], [/* Define to 1 if you have the \`ttyname' function. */ +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_TTYNAME], [/* Define to 1 if you have the \`ttyname' function. */ #undef HAVE_TTYNAME]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_TZSET], [/* Define to 1 if you have the \`tzset' function. */ +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_TZSET], [/* Define to 1 if you have the \`tzset' function. */ #undef HAVE_TZSET]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_UNSETENV], [/* Define to 1 if you have the \`unsetenv' function. */ +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_UNSETENV], [/* Define to 1 if you have the \`unsetenv' function. */ #undef HAVE_UNSETENV]) -m4trace:configure.in:711: -1- AC_CHECK_FUNCS([vsnprintf snprintf vasprintf asprintf]) -m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* Define to 1 if you have the \`vsnprintf' function. */ +m4trace:configure.in:708: -1- AC_CHECK_FUNCS([vsnprintf snprintf vasprintf asprintf]) +m4trace:configure.in:708: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* Define to 1 if you have the \`vsnprintf' function. */ #undef HAVE_VSNPRINTF]) -m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define to 1 if you have the \`snprintf' function. */ +m4trace:configure.in:708: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define to 1 if you have the \`snprintf' function. */ #undef HAVE_SNPRINTF]) -m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_VASPRINTF], [/* Define to 1 if you have the \`vasprintf' function. */ +m4trace:configure.in:708: -1- AH_OUTPUT([HAVE_VASPRINTF], [/* Define to 1 if you have the \`vasprintf' function. */ #undef HAVE_VASPRINTF]) -m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_ASPRINTF], [/* Define to 1 if you have the \`asprintf' function. */ +m4trace:configure.in:708: -1- AH_OUTPUT([HAVE_ASPRINTF], [/* Define to 1 if you have the \`asprintf' function. */ #undef HAVE_ASPRINTF]) -m4trace:configure.in:712: -1- AC_CHECK_FUNCS([isascii isblank isgraph isprint isspace isxdigit]) -m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_ISASCII], [/* Define to 1 if you have the \`isascii' function. */ +m4trace:configure.in:709: -1- AC_CHECK_FUNCS([isascii isblank isgraph isprint isspace isxdigit]) +m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_ISASCII], [/* Define to 1 if you have the \`isascii' function. */ #undef HAVE_ISASCII]) -m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_ISBLANK], [/* Define to 1 if you have the \`isblank' function. */ +m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_ISBLANK], [/* Define to 1 if you have the \`isblank' function. */ #undef HAVE_ISBLANK]) -m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_ISGRAPH], [/* Define to 1 if you have the \`isgraph' function. */ +m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_ISGRAPH], [/* Define to 1 if you have the \`isgraph' function. */ #undef HAVE_ISGRAPH]) -m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_ISPRINT], [/* Define to 1 if you have the \`isprint' function. */ +m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_ISPRINT], [/* Define to 1 if you have the \`isprint' function. */ #undef HAVE_ISPRINT]) -m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_ISSPACE], [/* Define to 1 if you have the \`isspace' function. */ +m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_ISSPACE], [/* Define to 1 if you have the \`isspace' function. */ #undef HAVE_ISSPACE]) -m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_ISXDIGIT], [/* Define to 1 if you have the \`isxdigit' function. */ +m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_ISXDIGIT], [/* Define to 1 if you have the \`isxdigit' function. */ #undef HAVE_ISXDIGIT]) -m4trace:configure.in:713: -1- AC_CHECK_FUNCS([getpwent getpwnam getpwuid]) -m4trace:configure.in:713: -1- AH_OUTPUT([HAVE_GETPWENT], [/* Define to 1 if you have the \`getpwent' function. */ +m4trace:configure.in:710: -1- AC_CHECK_FUNCS([getpwent getpwnam getpwuid]) +m4trace:configure.in:710: -1- AH_OUTPUT([HAVE_GETPWENT], [/* Define to 1 if you have the \`getpwent' function. */ #undef HAVE_GETPWENT]) -m4trace:configure.in:713: -1- AH_OUTPUT([HAVE_GETPWNAM], [/* Define to 1 if you have the \`getpwnam' function. */ +m4trace:configure.in:710: -1- AH_OUTPUT([HAVE_GETPWNAM], [/* Define to 1 if you have the \`getpwnam' function. */ #undef HAVE_GETPWNAM]) -m4trace:configure.in:713: -1- AH_OUTPUT([HAVE_GETPWUID], [/* Define to 1 if you have the \`getpwuid' function. */ +m4trace:configure.in:710: -1- AH_OUTPUT([HAVE_GETPWUID], [/* Define to 1 if you have the \`getpwuid' function. */ #undef HAVE_GETPWUID]) -m4trace:configure.in:714: -1- AC_LIBSOURCE([getcwd.c]) -m4trace:configure.in:714: -1- AC_LIBSOURCE([memset.c]) -m4trace:configure.in:714: -1- AC_LIBSOURCE([strcasecmp.c]) -m4trace:configure.in:714: -1- AC_LIBSOURCE([strerror.c]) -m4trace:configure.in:714: -1- AC_LIBSOURCE([strftime.c]) -m4trace:configure.in:714: -1- AC_LIBSOURCE([strnlen.c]) -m4trace:configure.in:714: -1- AC_LIBSOURCE([strpbrk.c]) -m4trace:configure.in:714: -1- AC_LIBSOURCE([strstr.c]) -m4trace:configure.in:714: -1- AC_CHECK_FUNCS([getcwd memset strcasecmp strerror strftime strnlen strpbrk strstr], [], [_AC_LIBOBJ($ac_func)]) -m4trace:configure.in:714: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the \`getcwd' function. */ +m4trace:configure.in:711: -1- AC_LIBSOURCE([getcwd.c]) +m4trace:configure.in:711: -1- AC_LIBSOURCE([memset.c]) +m4trace:configure.in:711: -1- AC_LIBSOURCE([strcasecmp.c]) +m4trace:configure.in:711: -1- AC_LIBSOURCE([strerror.c]) +m4trace:configure.in:711: -1- AC_LIBSOURCE([strftime.c]) +m4trace:configure.in:711: -1- AC_LIBSOURCE([strnlen.c]) +m4trace:configure.in:711: -1- AC_LIBSOURCE([strpbrk.c]) +m4trace:configure.in:711: -1- AC_LIBSOURCE([strstr.c]) +m4trace:configure.in:711: -1- AC_CHECK_FUNCS([getcwd memset strcasecmp strerror strftime strnlen strpbrk strstr], [], [_AC_LIBOBJ($ac_func)]) +m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the \`getcwd' function. */ #undef HAVE_GETCWD]) -m4trace:configure.in:714: -1- AH_OUTPUT([HAVE_MEMSET], [/* Define to 1 if you have the \`memset' function. */ +m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_MEMSET], [/* Define to 1 if you have the \`memset' function. */ #undef HAVE_MEMSET]) -m4trace:configure.in:714: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the \`strcasecmp' function. */ +m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the \`strcasecmp' function. */ #undef HAVE_STRCASECMP]) -m4trace:configure.in:714: -1- AH_OUTPUT([HAVE_STRERROR], [/* Define to 1 if you have the \`strerror' function. */ +m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_STRERROR], [/* Define to 1 if you have the \`strerror' function. */ #undef HAVE_STRERROR]) -m4trace:configure.in:714: -1- AH_OUTPUT([HAVE_STRFTIME], [/* Define to 1 if you have the \`strftime' function. */ +m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_STRFTIME], [/* Define to 1 if you have the \`strftime' function. */ #undef HAVE_STRFTIME]) -m4trace:configure.in:714: -1- AH_OUTPUT([HAVE_STRNLEN], [/* Define to 1 if you have the \`strnlen' function. */ +m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_STRNLEN], [/* Define to 1 if you have the \`strnlen' function. */ #undef HAVE_STRNLEN]) -m4trace:configure.in:714: -1- AH_OUTPUT([HAVE_STRPBRK], [/* Define to 1 if you have the \`strpbrk' function. */ +m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_STRPBRK], [/* Define to 1 if you have the \`strpbrk' function. */ #undef HAVE_STRPBRK]) -m4trace:configure.in:714: -1- AH_OUTPUT([HAVE_STRSTR], [/* Define to 1 if you have the \`strstr' function. */ +m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_STRSTR], [/* Define to 1 if you have the \`strstr' function. */ #undef HAVE_STRSTR]) -m4trace:configure.in:714: -1- AC_SUBST([LIB@&t@OBJS]) -m4trace:configure.in:715: -1- AC_LIBSOURCE([strtod.c]) -m4trace:configure.in:715: -1- AC_LIBSOURCE([strtol.c]) -m4trace:configure.in:715: -1- AC_LIBSOURCE([strtoul.c]) -m4trace:configure.in:715: -1- AC_LIBSOURCE([strtoll.c]) -m4trace:configure.in:715: -1- AC_LIBSOURCE([strtoull.c]) -m4trace:configure.in:715: -1- AC_LIBSOURCE([strtoimax.c]) -m4trace:configure.in:715: -1- AC_LIBSOURCE([strtoumax.c]) -m4trace:configure.in:715: -1- AC_CHECK_FUNCS([strtod strtol strtoul strtoll strtoull strtoimax strtoumax], [], [_AC_LIBOBJ($ac_func)]) -m4trace:configure.in:715: -1- AH_OUTPUT([HAVE_STRTOD], [/* Define to 1 if you have the \`strtod' function. */ +m4trace:configure.in:711: -1- AC_SUBST([LIB@&t@OBJS]) +m4trace:configure.in:712: -1- AC_LIBSOURCE([strtod.c]) +m4trace:configure.in:712: -1- AC_LIBSOURCE([strtol.c]) +m4trace:configure.in:712: -1- AC_LIBSOURCE([strtoul.c]) +m4trace:configure.in:712: -1- AC_LIBSOURCE([strtoll.c]) +m4trace:configure.in:712: -1- AC_LIBSOURCE([strtoull.c]) +m4trace:configure.in:712: -1- AC_LIBSOURCE([strtoimax.c]) +m4trace:configure.in:712: -1- AC_LIBSOURCE([strtoumax.c]) +m4trace:configure.in:712: -1- AC_CHECK_FUNCS([strtod strtol strtoul strtoll strtoull strtoimax strtoumax], [], [_AC_LIBOBJ($ac_func)]) +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_STRTOD], [/* Define to 1 if you have the \`strtod' function. */ #undef HAVE_STRTOD]) -m4trace:configure.in:715: -1- AH_OUTPUT([HAVE_STRTOL], [/* Define to 1 if you have the \`strtol' function. */ +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_STRTOL], [/* Define to 1 if you have the \`strtol' function. */ #undef HAVE_STRTOL]) -m4trace:configure.in:715: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the \`strtoul' function. */ +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the \`strtoul' function. */ #undef HAVE_STRTOUL]) -m4trace:configure.in:715: -1- AH_OUTPUT([HAVE_STRTOLL], [/* Define to 1 if you have the \`strtoll' function. */ +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_STRTOLL], [/* Define to 1 if you have the \`strtoll' function. */ #undef HAVE_STRTOLL]) -m4trace:configure.in:715: -1- AH_OUTPUT([HAVE_STRTOULL], [/* Define to 1 if you have the \`strtoull' function. */ +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_STRTOULL], [/* Define to 1 if you have the \`strtoull' function. */ #undef HAVE_STRTOULL]) -m4trace:configure.in:715: -1- AH_OUTPUT([HAVE_STRTOIMAX], [/* Define to 1 if you have the \`strtoimax' function. */ +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_STRTOIMAX], [/* Define to 1 if you have the \`strtoimax' function. */ #undef HAVE_STRTOIMAX]) -m4trace:configure.in:715: -1- AH_OUTPUT([HAVE_STRTOUMAX], [/* Define to 1 if you have the \`strtoumax' function. */ +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_STRTOUMAX], [/* Define to 1 if you have the \`strtoumax' function. */ #undef HAVE_STRTOUMAX]) -m4trace:configure.in:715: -1- AC_SUBST([LIB@&t@OBJS]) -m4trace:configure.in:717: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_CONFSTR]) -m4trace:configure.in:717: -1- AH_OUTPUT([HAVE_DECL_CONFSTR], [/* Define to 1 if you have the declaration of \`confstr', and to 0 if you +m4trace:configure.in:712: -1- AC_SUBST([LIB@&t@OBJS]) +m4trace:configure.in:714: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_CONFSTR]) +m4trace:configure.in:714: -1- AH_OUTPUT([HAVE_DECL_CONFSTR], [/* Define to 1 if you have the declaration of \`confstr', and to 0 if you don't. */ #undef HAVE_DECL_CONFSTR]) -m4trace:configure.in:717: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_CONFSTR]) -m4trace:configure.in:718: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_PRINTF]) -m4trace:configure.in:718: -1- AH_OUTPUT([HAVE_DECL_PRINTF], [/* Define to 1 if you have the declaration of \`printf', and to 0 if you don't. +m4trace:configure.in:714: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_CONFSTR]) +m4trace:configure.in:715: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_PRINTF]) +m4trace:configure.in:715: -1- AH_OUTPUT([HAVE_DECL_PRINTF], [/* Define to 1 if you have the declaration of \`printf', and to 0 if you don't. */ #undef HAVE_DECL_PRINTF]) -m4trace:configure.in:718: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_PRINTF]) -m4trace:configure.in:719: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SBRK]) -m4trace:configure.in:719: -1- AH_OUTPUT([HAVE_DECL_SBRK], [/* Define to 1 if you have the declaration of \`sbrk', and to 0 if you don't. +m4trace:configure.in:715: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_PRINTF]) +m4trace:configure.in:716: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SBRK]) +m4trace:configure.in:716: -1- AH_OUTPUT([HAVE_DECL_SBRK], [/* Define to 1 if you have the declaration of \`sbrk', and to 0 if you don't. */ #undef HAVE_DECL_SBRK]) -m4trace:configure.in:719: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SBRK]) -m4trace:configure.in:720: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SETREGID]) -m4trace:configure.in:720: -1- AH_OUTPUT([HAVE_DECL_SETREGID], [/* Define to 1 if you have the declaration of \`setregid', and to 0 if you - don't. */ -#undef HAVE_DECL_SETREGID]) -m4trace:configure.in:720: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SETREGID]) -m4trace:configure.in:721: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRCPY]) -m4trace:configure.in:721: -1- AH_OUTPUT([HAVE_DECL_STRCPY], [/* Define to 1 if you have the declaration of \`strcpy', and to 0 if you don't. +m4trace:configure.in:716: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SBRK]) +m4trace:configure.in:717: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRCPY]) +m4trace:configure.in:717: -1- AH_OUTPUT([HAVE_DECL_STRCPY], [/* Define to 1 if you have the declaration of \`strcpy', and to 0 if you don't. */ #undef HAVE_DECL_STRCPY]) -m4trace:configure.in:721: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRCPY]) -m4trace:configure.in:722: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRSIGNAL]) -m4trace:configure.in:722: -1- AH_OUTPUT([HAVE_DECL_STRSIGNAL], [/* Define to 1 if you have the declaration of \`strsignal', and to 0 if you +m4trace:configure.in:717: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRCPY]) +m4trace:configure.in:718: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRSIGNAL]) +m4trace:configure.in:718: -1- AH_OUTPUT([HAVE_DECL_STRSIGNAL], [/* Define to 1 if you have the declaration of \`strsignal', and to 0 if you don't. */ #undef HAVE_DECL_STRSIGNAL]) -m4trace:configure.in:722: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRSIGNAL]) -m4trace:configure.in:739: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRTOLD]) -m4trace:configure.in:739: -1- AH_OUTPUT([HAVE_DECL_STRTOLD], [/* Define to 1 if you have the declaration of \`strtold', and to 0 if you +m4trace:configure.in:718: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRSIGNAL]) +m4trace:configure.in:735: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRTOLD]) +m4trace:configure.in:735: -1- AH_OUTPUT([HAVE_DECL_STRTOLD], [/* Define to 1 if you have the declaration of \`strtold', and to 0 if you don't. */ #undef HAVE_DECL_STRTOLD]) -m4trace:configure.in:739: -1- AC_DEFINE_TRACE_LITERAL([STRTOLD_BROKEN]) -m4trace:configure.in:739: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRTOLD]) -m4trace:configure.in:749: -1- AC_FUNC_MKTIME -m4trace:configure.in:749: -1- AC_CHECK_HEADERS([sys/time.h unistd.h]) -m4trace:configure.in:749: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:735: -1- AC_DEFINE_TRACE_LITERAL([STRTOLD_BROKEN]) +m4trace:configure.in:735: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRTOLD]) +m4trace:configure.in:745: -1- AC_FUNC_MKTIME +m4trace:configure.in:745: -1- AC_CHECK_HEADERS([sys/time.h unistd.h]) +m4trace:configure.in:745: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H]) -m4trace:configure.in:749: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:745: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H]) -m4trace:configure.in:749: -1- AC_CHECK_FUNCS([alarm]) -m4trace:configure.in:749: -1- AH_OUTPUT([HAVE_ALARM], [/* Define to 1 if you have the \`alarm' function. */ +m4trace:configure.in:745: -1- AC_CHECK_FUNCS([alarm]) +m4trace:configure.in:745: -1- AH_OUTPUT([HAVE_ALARM], [/* Define to 1 if you have the \`alarm' function. */ #undef HAVE_ALARM]) -m4trace:configure.in:749: -1- AC_LIBSOURCE([mktime.c]) -m4trace:configure.in:749: -1- AC_SUBST([LIB@&t@OBJS]) -m4trace:configure.in:756: -1- AC_CHECK_HEADERS([argz.h errno.h fcntl.h malloc.h stdio_ext.h]) -m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_ARGZ_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:745: -1- AC_LIBSOURCE([mktime.c]) +m4trace:configure.in:745: -1- AC_SUBST([LIB@&t@OBJS]) +m4trace:configure.in:752: -1- AC_CHECK_HEADERS([argz.h errno.h fcntl.h malloc.h stdio_ext.h]) +m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_ARGZ_H], [/* Define to 1 if you have the header file. */ #undef HAVE_ARGZ_H]) -m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_ERRNO_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_ERRNO_H], [/* Define to 1 if you have the header file. */ #undef HAVE_ERRNO_H]) -m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H]) -m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the header file. */ #undef HAVE_MALLOC_H]) -m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_STDIO_EXT_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_STDIO_EXT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDIO_EXT_H]) -m4trace:configure.in:759: -1- AC_FUNC_MMAP -m4trace:configure.in:759: -1- AC_CHECK_HEADERS([stdlib.h unistd.h]) -m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:755: -1- AC_FUNC_MMAP +m4trace:configure.in:755: -1- AC_CHECK_HEADERS([stdlib.h unistd.h]) +m4trace:configure.in:755: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H]) -m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:755: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H]) -m4trace:configure.in:759: -1- AC_CHECK_FUNCS([getpagesize]) -m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the \`getpagesize' function. */ +m4trace:configure.in:755: -1- AC_CHECK_FUNCS([getpagesize]) +m4trace:configure.in:755: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the \`getpagesize' function. */ #undef HAVE_GETPAGESIZE]) -m4trace:configure.in:759: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP]) -m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have a working \`mmap' system call. */ +m4trace:configure.in:755: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP]) +m4trace:configure.in:755: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have a working \`mmap' system call. */ #undef HAVE_MMAP]) -m4trace:configure.in:761: -1- AC_CHECK_FUNCS([__argz_count __argz_next __argz_stringify dcgettext mempcpy \ +m4trace:configure.in:757: -1- AC_CHECK_FUNCS([__argz_count __argz_next __argz_stringify dcgettext mempcpy \ munmap stpcpy strcspn strdup]) -m4trace:configure.in:761: -1- AH_OUTPUT([HAVE___ARGZ_COUNT], [/* Define to 1 if you have the \`__argz_count' function. */ +m4trace:configure.in:757: -1- AH_OUTPUT([HAVE___ARGZ_COUNT], [/* Define to 1 if you have the \`__argz_count' function. */ #undef HAVE___ARGZ_COUNT]) -m4trace:configure.in:761: -1- AH_OUTPUT([HAVE___ARGZ_NEXT], [/* Define to 1 if you have the \`__argz_next' function. */ +m4trace:configure.in:757: -1- AH_OUTPUT([HAVE___ARGZ_NEXT], [/* Define to 1 if you have the \`__argz_next' function. */ #undef HAVE___ARGZ_NEXT]) -m4trace:configure.in:761: -1- AH_OUTPUT([HAVE___ARGZ_STRINGIFY], [/* Define to 1 if you have the \`__argz_stringify' function. */ +m4trace:configure.in:757: -1- AH_OUTPUT([HAVE___ARGZ_STRINGIFY], [/* Define to 1 if you have the \`__argz_stringify' function. */ #undef HAVE___ARGZ_STRINGIFY]) -m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define to 1 if you have the \`dcgettext' function. */ +m4trace:configure.in:757: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define to 1 if you have the \`dcgettext' function. */ #undef HAVE_DCGETTEXT]) -m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the \`mempcpy' function. */ +m4trace:configure.in:757: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the \`mempcpy' function. */ #undef HAVE_MEMPCPY]) -m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_MUNMAP], [/* Define to 1 if you have the \`munmap' function. */ +m4trace:configure.in:757: -1- AH_OUTPUT([HAVE_MUNMAP], [/* Define to 1 if you have the \`munmap' function. */ #undef HAVE_MUNMAP]) -m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the \`stpcpy' function. */ +m4trace:configure.in:757: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the \`stpcpy' function. */ #undef HAVE_STPCPY]) -m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_STRCSPN], [/* Define to 1 if you have the \`strcspn' function. */ +m4trace:configure.in:757: -1- AH_OUTPUT([HAVE_STRCSPN], [/* Define to 1 if you have the \`strcspn' function. */ #undef HAVE_STRCSPN]) -m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the \`strdup' function. */ +m4trace:configure.in:757: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the \`strdup' function. */ #undef HAVE_STRDUP]) -m4trace:configure.in:769: -1- AC_SUBST([INTL_DEP]) -m4trace:configure.in:770: -1- AC_SUBST([INTL_INC]) -m4trace:configure.in:771: -1- AC_SUBST([LIBINTL_H]) -m4trace:configure.in:777: -1- AC_CHECK_HEADERS([wctype.h]) -m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_WCTYPE_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:765: -1- AC_SUBST([INTL_DEP]) +m4trace:configure.in:766: -1- AC_SUBST([INTL_INC]) +m4trace:configure.in:767: -1- AC_SUBST([LIBINTL_H]) +m4trace:configure.in:773: -1- AC_CHECK_HEADERS([wctype.h]) +m4trace:configure.in:773: -1- AH_OUTPUT([HAVE_WCTYPE_H], [/* Define to 1 if you have the header file. */ #undef HAVE_WCTYPE_H]) -m4trace:configure.in:777: -1- AC_CHECK_HEADERS([wchar.h]) -m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_WCHAR_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:773: -1- AC_CHECK_HEADERS([wchar.h]) +m4trace:configure.in:773: -1- AH_OUTPUT([HAVE_WCHAR_H], [/* Define to 1 if you have the header file. */ #undef HAVE_WCHAR_H]) -m4trace:configure.in:777: -1- AC_CHECK_HEADERS([langinfo.h]) -m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_LANGINFO_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:773: -1- AC_CHECK_HEADERS([langinfo.h]) +m4trace:configure.in:773: -1- AH_OUTPUT([HAVE_LANGINFO_H], [/* Define to 1 if you have the header file. */ #undef HAVE_LANGINFO_H]) -m4trace:configure.in:777: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBSRTOWCS]) -m4trace:configure.in:777: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBRLEN]) -m4trace:configure.in:777: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCRTOMB]) -m4trace:configure.in:777: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCSCOLL]) -m4trace:configure.in:777: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCSDUP]) -m4trace:configure.in:777: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCWIDTH]) -m4trace:configure.in:777: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCTYPE]) -m4trace:configure.in:777: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MBSTATE_T]) -m4trace:configure.in:777: -1- AC_CHECK_FUNCS([iswlower iswupper towlower towupper iswctype]) -m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_ISWLOWER], [/* Define to 1 if you have the \`iswlower' function. */ -#undef HAVE_ISWLOWER]) -m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_ISWUPPER], [/* Define to 1 if you have the \`iswupper' function. */ -#undef HAVE_ISWUPPER]) -m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_TOWLOWER], [/* Define to 1 if you have the \`towlower' function. */ -#undef HAVE_TOWLOWER]) -m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_TOWUPPER], [/* Define to 1 if you have the \`towupper' function. */ -#undef HAVE_TOWUPPER]) -m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_ISWCTYPE], [/* Define to 1 if you have the \`iswctype' function. */ -#undef HAVE_ISWCTYPE]) -m4trace:configure.in:777: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_CODESET]) -m4trace:configure.in:777: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCHAR_T]) -m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_WCHAR_T], [/* systems should define this type here */ -#undef HAVE_WCHAR_T]) -m4trace:configure.in:777: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCTYPE_T]) -m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_WCTYPE_T], [/* systems should define this type here */ -#undef HAVE_WCTYPE_T]) -m4trace:configure.in:777: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WINT_T]) -m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_WINT_T], [/* systems should define this type here */ -#undef HAVE_WINT_T]) -m4trace:configure.in:781: -1- AC_CHECK_LIB([dl], [dlopen]) -m4trace:configure.in:781: -1- AH_OUTPUT([HAVE_LIBDL], [/* Define to 1 if you have the \`dl' library (-ldl). */ +m4trace:configure.in:773: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBSRTOWCS]) +m4trace:configure.in:773: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBRTOWC]) +m4trace:configure.in:773: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBRLEN]) +m4trace:configure.in:773: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCTOMB]) +m4trace:configure.in:773: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCWIDTH]) +m4trace:configure.in:773: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCSDUP]) +m4trace:configure.in:773: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MBSTATE_T]) +m4trace:configure.in:773: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_CODESET]) +m4trace:configure.in:777: -1- AC_CHECK_LIB([dl], [dlopen]) +m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_LIBDL], [/* Define to 1 if you have the \`dl' library (-ldl). */ #undef HAVE_LIBDL]) -m4trace:configure.in:781: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBDL]) -m4trace:configure.in:782: -1- AC_CHECK_FUNCS([dlopen dlclose dlsym]) -m4trace:configure.in:782: -1- AH_OUTPUT([HAVE_DLOPEN], [/* Define to 1 if you have the \`dlopen' function. */ +m4trace:configure.in:777: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBDL]) +m4trace:configure.in:778: -1- AC_CHECK_FUNCS([dlopen dlclose dlsym]) +m4trace:configure.in:778: -1- AH_OUTPUT([HAVE_DLOPEN], [/* Define to 1 if you have the \`dlopen' function. */ #undef HAVE_DLOPEN]) -m4trace:configure.in:782: -1- AH_OUTPUT([HAVE_DLCLOSE], [/* Define to 1 if you have the \`dlclose' function. */ +m4trace:configure.in:778: -1- AH_OUTPUT([HAVE_DLCLOSE], [/* Define to 1 if you have the \`dlclose' function. */ #undef HAVE_DLCLOSE]) -m4trace:configure.in:782: -1- AH_OUTPUT([HAVE_DLSYM], [/* Define to 1 if you have the \`dlsym' function. */ +m4trace:configure.in:778: -1- AH_OUTPUT([HAVE_DLSYM], [/* Define to 1 if you have the \`dlsym' function. */ #undef HAVE_DLSYM]) -m4trace:configure.in:786: -1- AC_DECL_SYS_SIGLIST -m4trace:configure.in:786: -1- AC_DEFINE_TRACE_LITERAL([SYS_SIGLIST_DECLARED]) -m4trace:configure.in:786: -1- AH_OUTPUT([SYS_SIGLIST_DECLARED], [/* Define to 1 if \`sys_siglist' is declared by or . */ +m4trace:configure.in:782: -1- AC_DECL_SYS_SIGLIST +m4trace:configure.in:782: -1- AC_DEFINE_TRACE_LITERAL([SYS_SIGLIST_DECLARED]) +m4trace:configure.in:782: -1- AH_OUTPUT([SYS_SIGLIST_DECLARED], [/* Define to 1 if \`sys_siglist' is declared by or . */ #undef SYS_SIGLIST_DECLARED]) -m4trace:configure.in:790: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INET_ATON]) -m4trace:configure.in:790: -1- AC_LIBSOURCE([inet_aton.c]) -m4trace:configure.in:790: -1- AC_SUBST([LIB@&t@OBJS]) -m4trace:configure.in:796: -1- AC_CHECK_LIB([sun], [getpwent]) -m4trace:configure.in:796: -1- AH_OUTPUT([HAVE_LIBSUN], [/* Define to 1 if you have the \`sun' library (-lsun). */ +m4trace:configure.in:786: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INET_ATON]) +m4trace:configure.in:786: -1- AC_LIBSOURCE([inet_aton.c]) +m4trace:configure.in:786: -1- AC_SUBST([LIB@&t@OBJS]) +m4trace:configure.in:792: -1- AC_CHECK_LIB([sun], [getpwent]) +m4trace:configure.in:792: -1- AH_OUTPUT([HAVE_LIBSUN], [/* Define to 1 if you have the \`sun' library (-lsun). */ #undef HAVE_LIBSUN]) -m4trace:configure.in:796: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSUN]) -m4trace:configure.in:801: -1- AC_CHECK_LIB([socket], [getpeername], [bash_cv_have_socklib=yes], [bash_cv_have_socklib=no], [-lnsl]) -m4trace:configure.in:801: -1- AC_CHECK_LIB([nsl], [t_open], [bash_cv_have_libnsl=yes], [bash_cv_have_libnsl=no]) -m4trace:configure.in:801: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSOCKET]) -m4trace:configure.in:801: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPEERNAME]) -m4trace:configure.in:805: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETHOSTBYNAME]) -m4trace:configure.in:809: -1- AC_TYPE_UID_T -m4trace:configure.in:809: -1- AC_DEFINE_TRACE_LITERAL([uid_t]) -m4trace:configure.in:809: -1- AH_OUTPUT([uid_t], [/* Define to \`int' if doesn't define. */ +m4trace:configure.in:792: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSUN]) +m4trace:configure.in:797: -1- AC_CHECK_LIB([socket], [getpeername], [bash_cv_have_socklib=yes], [bash_cv_have_socklib=no], [-lnsl]) +m4trace:configure.in:797: -1- AC_CHECK_LIB([nsl], [t_open], [bash_cv_have_libnsl=yes], [bash_cv_have_libnsl=no]) +m4trace:configure.in:797: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSOCKET]) +m4trace:configure.in:797: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPEERNAME]) +m4trace:configure.in:801: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETHOSTBYNAME]) +m4trace:configure.in:805: -1- AC_TYPE_UID_T +m4trace:configure.in:805: -1- AC_DEFINE_TRACE_LITERAL([uid_t]) +m4trace:configure.in:805: -1- AH_OUTPUT([uid_t], [/* Define to \`int' if doesn't define. */ #undef uid_t]) -m4trace:configure.in:809: -1- AC_DEFINE_TRACE_LITERAL([gid_t]) -m4trace:configure.in:809: -1- AH_OUTPUT([gid_t], [/* Define to \`int' if doesn't define. */ +m4trace:configure.in:805: -1- AC_DEFINE_TRACE_LITERAL([gid_t]) +m4trace:configure.in:805: -1- AH_OUTPUT([gid_t], [/* Define to \`int' if doesn't define. */ #undef gid_t]) -m4trace:configure.in:809: -1- AC_DEFINE_TRACE_LITERAL([GETGROUPS_T]) -m4trace:configure.in:809: -1- AH_OUTPUT([GETGROUPS_T], [/* Define to the type of elements in the array set by \`getgroups'. Usually +m4trace:configure.in:805: -1- AC_DEFINE_TRACE_LITERAL([GETGROUPS_T]) +m4trace:configure.in:805: -1- AH_OUTPUT([GETGROUPS_T], [/* Define to the type of elements in the array set by \`getgroups'. Usually this is either \`int' or \`gid_t'. */ #undef GETGROUPS_T]) -m4trace:configure.in:810: -1- AC_TYPE_OFF_T -m4trace:configure.in:810: -1- AC_DEFINE_TRACE_LITERAL([off_t]) -m4trace:configure.in:810: -1- AH_OUTPUT([off_t], [/* Define to \`long' if does not define. */ +m4trace:configure.in:806: -1- AC_TYPE_OFF_T +m4trace:configure.in:806: -1- AC_DEFINE_TRACE_LITERAL([off_t]) +m4trace:configure.in:806: -1- AH_OUTPUT([off_t], [/* Define to \`long' if does not define. */ #undef off_t]) -m4trace:configure.in:811: -1- AC_TYPE_MODE_T -m4trace:configure.in:811: -1- AC_DEFINE_TRACE_LITERAL([mode_t]) -m4trace:configure.in:811: -1- AH_OUTPUT([mode_t], [/* Define to \`int' if does not define. */ +m4trace:configure.in:807: -1- AC_TYPE_MODE_T +m4trace:configure.in:807: -1- AC_DEFINE_TRACE_LITERAL([mode_t]) +m4trace:configure.in:807: -1- AH_OUTPUT([mode_t], [/* Define to \`int' if does not define. */ #undef mode_t]) -m4trace:configure.in:812: -1- AC_TYPE_UID_T -m4trace:configure.in:812: -1- AC_DEFINE_TRACE_LITERAL([uid_t]) -m4trace:configure.in:812: -1- AH_OUTPUT([uid_t], [/* Define to \`int' if doesn't define. */ +m4trace:configure.in:808: -1- AC_TYPE_UID_T +m4trace:configure.in:808: -1- AC_DEFINE_TRACE_LITERAL([uid_t]) +m4trace:configure.in:808: -1- AH_OUTPUT([uid_t], [/* Define to \`int' if doesn't define. */ #undef uid_t]) -m4trace:configure.in:812: -1- AC_DEFINE_TRACE_LITERAL([gid_t]) -m4trace:configure.in:812: -1- AH_OUTPUT([gid_t], [/* Define to \`int' if doesn't define. */ +m4trace:configure.in:808: -1- AC_DEFINE_TRACE_LITERAL([gid_t]) +m4trace:configure.in:808: -1- AH_OUTPUT([gid_t], [/* Define to \`int' if doesn't define. */ #undef gid_t]) -m4trace:configure.in:813: -1- AC_TYPE_PID_T -m4trace:configure.in:813: -1- AC_DEFINE_TRACE_LITERAL([pid_t]) -m4trace:configure.in:813: -1- AH_OUTPUT([pid_t], [/* Define to \`int' if does not define. */ +m4trace:configure.in:809: -1- AC_TYPE_PID_T +m4trace:configure.in:809: -1- AC_DEFINE_TRACE_LITERAL([pid_t]) +m4trace:configure.in:809: -1- AH_OUTPUT([pid_t], [/* Define to \`int' if does not define. */ #undef pid_t]) -m4trace:configure.in:814: -1- AC_TYPE_SIZE_T -m4trace:configure.in:814: -1- AC_DEFINE_TRACE_LITERAL([size_t]) -m4trace:configure.in:814: -1- AH_OUTPUT([size_t], [/* Define to \`unsigned' if does not define. */ +m4trace:configure.in:810: -1- AC_TYPE_SIZE_T +m4trace:configure.in:810: -1- AC_DEFINE_TRACE_LITERAL([size_t]) +m4trace:configure.in:810: -1- AH_OUTPUT([size_t], [/* Define to \`unsigned' if does not define. */ #undef size_t]) -m4trace:configure.in:815: -1- AC_DEFINE_TRACE_LITERAL([ssize_t]) -m4trace:configure.in:815: -1- AH_OUTPUT([ssize_t], [/* Define to \`int' if does not define. */ +m4trace:configure.in:811: -1- AC_DEFINE_TRACE_LITERAL([ssize_t]) +m4trace:configure.in:811: -1- AH_OUTPUT([ssize_t], [/* Define to \`int' if does not define. */ #undef ssize_t]) -m4trace:configure.in:816: -1- AC_DEFINE_TRACE_LITERAL([time_t]) -m4trace:configure.in:816: -1- AH_OUTPUT([time_t], [/* Define to \`long' if does not define. */ +m4trace:configure.in:812: -1- AC_DEFINE_TRACE_LITERAL([time_t]) +m4trace:configure.in:812: -1- AH_OUTPUT([time_t], [/* Define to \`long' if does not define. */ #undef time_t]) -m4trace:configure.in:818: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_LONG]) -m4trace:configure.in:819: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG]) -m4trace:configure.in:821: -1- AC_TYPE_SIGNAL -m4trace:configure.in:821: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE]) -m4trace:configure.in:821: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (\`int' or \`void'). */ +m4trace:configure.in:814: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_LONG]) +m4trace:configure.in:815: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG]) +m4trace:configure.in:817: -1- AC_TYPE_SIGNAL +m4trace:configure.in:817: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE]) +m4trace:configure.in:817: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (\`int' or \`void'). */ #undef RETSIGTYPE]) -m4trace:configure.in:823: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_CHAR]) -m4trace:configure.in:823: -1- AH_OUTPUT([SIZEOF_CHAR], [/* The size of a \`char', as computed by sizeof. */ +m4trace:configure.in:819: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_CHAR]) +m4trace:configure.in:819: -1- AH_OUTPUT([SIZEOF_CHAR], [/* The size of a \`char', as computed by sizeof. */ #undef SIZEOF_CHAR]) -m4trace:configure.in:824: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_SHORT]) -m4trace:configure.in:824: -1- AH_OUTPUT([SIZEOF_SHORT], [/* The size of a \`short', as computed by sizeof. */ +m4trace:configure.in:820: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_SHORT]) +m4trace:configure.in:820: -1- AH_OUTPUT([SIZEOF_SHORT], [/* The size of a \`short', as computed by sizeof. */ #undef SIZEOF_SHORT]) -m4trace:configure.in:825: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_INT]) -m4trace:configure.in:825: -1- AH_OUTPUT([SIZEOF_INT], [/* The size of a \`int', as computed by sizeof. */ +m4trace:configure.in:821: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_INT]) +m4trace:configure.in:821: -1- AH_OUTPUT([SIZEOF_INT], [/* The size of a \`int', as computed by sizeof. */ #undef SIZEOF_INT]) -m4trace:configure.in:826: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG]) -m4trace:configure.in:826: -1- AH_OUTPUT([SIZEOF_LONG], [/* The size of a \`long', as computed by sizeof. */ +m4trace:configure.in:822: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG]) +m4trace:configure.in:822: -1- AH_OUTPUT([SIZEOF_LONG], [/* The size of a \`long', as computed by sizeof. */ #undef SIZEOF_LONG]) -m4trace:configure.in:827: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_CHAR_P]) -m4trace:configure.in:827: -1- AH_OUTPUT([SIZEOF_CHAR_P], [/* The size of a \`char *', as computed by sizeof. */ +m4trace:configure.in:823: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_CHAR_P]) +m4trace:configure.in:823: -1- AH_OUTPUT([SIZEOF_CHAR_P], [/* The size of a \`char *', as computed by sizeof. */ #undef SIZEOF_CHAR_P]) -m4trace:configure.in:828: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_DOUBLE]) -m4trace:configure.in:828: -1- AH_OUTPUT([SIZEOF_DOUBLE], [/* The size of a \`double', as computed by sizeof. */ +m4trace:configure.in:824: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_DOUBLE]) +m4trace:configure.in:824: -1- AH_OUTPUT([SIZEOF_DOUBLE], [/* The size of a \`double', as computed by sizeof. */ #undef SIZEOF_DOUBLE]) -m4trace:configure.in:829: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG_LONG]) -m4trace:configure.in:829: -1- AH_OUTPUT([SIZEOF_LONG_LONG], [/* The size of a \`long long', as computed by sizeof. */ +m4trace:configure.in:825: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG_LONG]) +m4trace:configure.in:825: -1- AH_OUTPUT([SIZEOF_LONG_LONG], [/* The size of a \`long long', as computed by sizeof. */ #undef SIZEOF_LONG_LONG]) -m4trace:configure.in:831: -1- AC_DEFINE_TRACE_LITERAL([u_int]) -m4trace:configure.in:831: -1- AH_OUTPUT([u_int], [/* Define to \`unsigned int' if does not define. */ +m4trace:configure.in:827: -1- AC_DEFINE_TRACE_LITERAL([u_int]) +m4trace:configure.in:827: -1- AH_OUTPUT([u_int], [/* Define to \`unsigned int' if does not define. */ #undef u_int]) -m4trace:configure.in:832: -1- AC_DEFINE_TRACE_LITERAL([u_long]) -m4trace:configure.in:832: -1- AH_OUTPUT([u_long], [/* Define to \`unsigned long' if does not define. */ +m4trace:configure.in:828: -1- AC_DEFINE_TRACE_LITERAL([u_long]) +m4trace:configure.in:828: -1- AH_OUTPUT([u_long], [/* Define to \`unsigned long' if does not define. */ #undef u_long]) -m4trace:configure.in:834: -1- AC_DEFINE_TRACE_LITERAL([bits16_t]) -m4trace:configure.in:834: -1- AH_OUTPUT([bits16_t], [/* Define to \`short' if does not define. */ +m4trace:configure.in:830: -1- AC_DEFINE_TRACE_LITERAL([bits16_t]) +m4trace:configure.in:830: -1- AH_OUTPUT([bits16_t], [/* Define to \`short' if does not define. */ #undef bits16_t]) -m4trace:configure.in:834: -1- AC_DEFINE_TRACE_LITERAL([bits16_t]) -m4trace:configure.in:834: -1- AH_OUTPUT([bits16_t], [/* Define to \`char' if does not define. */ +m4trace:configure.in:830: -1- AC_DEFINE_TRACE_LITERAL([bits16_t]) +m4trace:configure.in:830: -1- AH_OUTPUT([bits16_t], [/* Define to \`char' if does not define. */ #undef bits16_t]) -m4trace:configure.in:834: -1- AC_DEFINE_TRACE_LITERAL([bits16_t]) -m4trace:configure.in:834: -1- AH_OUTPUT([bits16_t], [/* Define to \`short' if does not define. */ +m4trace:configure.in:830: -1- AC_DEFINE_TRACE_LITERAL([bits16_t]) +m4trace:configure.in:830: -1- AH_OUTPUT([bits16_t], [/* Define to \`short' if does not define. */ #undef bits16_t]) -m4trace:configure.in:835: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t]) -m4trace:configure.in:835: -1- AH_OUTPUT([u_bits16_t], [/* Define to \`unsigned short' if does not define. */ +m4trace:configure.in:831: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t]) +m4trace:configure.in:831: -1- AH_OUTPUT([u_bits16_t], [/* Define to \`unsigned short' if does not define. */ #undef u_bits16_t]) -m4trace:configure.in:835: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t]) -m4trace:configure.in:835: -1- AH_OUTPUT([u_bits16_t], [/* Define to \`unsigned char' if does not define. */ +m4trace:configure.in:831: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t]) +m4trace:configure.in:831: -1- AH_OUTPUT([u_bits16_t], [/* Define to \`unsigned char' if does not define. */ #undef u_bits16_t]) -m4trace:configure.in:835: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t]) -m4trace:configure.in:835: -1- AH_OUTPUT([u_bits16_t], [/* Define to \`unsigned short' if does not define. */ +m4trace:configure.in:831: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t]) +m4trace:configure.in:831: -1- AH_OUTPUT([u_bits16_t], [/* Define to \`unsigned short' if does not define. */ #undef u_bits16_t]) -m4trace:configure.in:836: -1- AC_DEFINE_TRACE_LITERAL([bits32_t]) -m4trace:configure.in:836: -1- AH_OUTPUT([bits32_t], [/* Define to \`int' if does not define. */ +m4trace:configure.in:832: -1- AC_DEFINE_TRACE_LITERAL([bits32_t]) +m4trace:configure.in:832: -1- AH_OUTPUT([bits32_t], [/* Define to \`int' if does not define. */ #undef bits32_t]) -m4trace:configure.in:836: -1- AC_DEFINE_TRACE_LITERAL([bits32_t]) -m4trace:configure.in:836: -1- AH_OUTPUT([bits32_t], [/* Define to \`long' if does not define. */ +m4trace:configure.in:832: -1- AC_DEFINE_TRACE_LITERAL([bits32_t]) +m4trace:configure.in:832: -1- AH_OUTPUT([bits32_t], [/* Define to \`long' if does not define. */ #undef bits32_t]) -m4trace:configure.in:836: -1- AC_DEFINE_TRACE_LITERAL([bits32_t]) -m4trace:configure.in:836: -1- AH_OUTPUT([bits32_t], [/* Define to \`int' if does not define. */ +m4trace:configure.in:832: -1- AC_DEFINE_TRACE_LITERAL([bits32_t]) +m4trace:configure.in:832: -1- AH_OUTPUT([bits32_t], [/* Define to \`int' if does not define. */ #undef bits32_t]) -m4trace:configure.in:837: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t]) -m4trace:configure.in:837: -1- AH_OUTPUT([u_bits32_t], [/* Define to \`unsigned int' if does not define. */ +m4trace:configure.in:833: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t]) +m4trace:configure.in:833: -1- AH_OUTPUT([u_bits32_t], [/* Define to \`unsigned int' if does not define. */ #undef u_bits32_t]) -m4trace:configure.in:837: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t]) -m4trace:configure.in:837: -1- AH_OUTPUT([u_bits32_t], [/* Define to \`unsigned long' if does not define. */ +m4trace:configure.in:833: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t]) +m4trace:configure.in:833: -1- AH_OUTPUT([u_bits32_t], [/* Define to \`unsigned long' if does not define. */ #undef u_bits32_t]) -m4trace:configure.in:837: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t]) -m4trace:configure.in:837: -1- AH_OUTPUT([u_bits32_t], [/* Define to \`unsigned int' if does not define. */ +m4trace:configure.in:833: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t]) +m4trace:configure.in:833: -1- AH_OUTPUT([u_bits32_t], [/* Define to \`unsigned int' if does not define. */ #undef u_bits32_t]) -m4trace:configure.in:838: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) -m4trace:configure.in:838: -1- AH_OUTPUT([bits64_t], [/* Define to \`char *' if does not define. */ +m4trace:configure.in:834: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) +m4trace:configure.in:834: -1- AH_OUTPUT([bits64_t], [/* Define to \`char *' if does not define. */ #undef bits64_t]) -m4trace:configure.in:838: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) -m4trace:configure.in:838: -1- AH_OUTPUT([bits64_t], [/* Define to \`double' if does not define. */ +m4trace:configure.in:834: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) +m4trace:configure.in:834: -1- AH_OUTPUT([bits64_t], [/* Define to \`double' if does not define. */ #undef bits64_t]) -m4trace:configure.in:838: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) -m4trace:configure.in:838: -1- AH_OUTPUT([bits64_t], [/* Define to \`long long' if does not define. */ +m4trace:configure.in:834: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) +m4trace:configure.in:834: -1- AH_OUTPUT([bits64_t], [/* Define to \`long long' if does not define. */ #undef bits64_t]) -m4trace:configure.in:838: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) -m4trace:configure.in:838: -1- AH_OUTPUT([bits64_t], [/* Define to \`long' if does not define. */ +m4trace:configure.in:834: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) +m4trace:configure.in:834: -1- AH_OUTPUT([bits64_t], [/* Define to \`long' if does not define. */ #undef bits64_t]) -m4trace:configure.in:838: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) -m4trace:configure.in:838: -1- AH_OUTPUT([bits64_t], [/* Define to \`double' if does not define. */ +m4trace:configure.in:834: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) +m4trace:configure.in:834: -1- AH_OUTPUT([bits64_t], [/* Define to \`double' if does not define. */ #undef bits64_t]) -m4trace:configure.in:840: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t]) -m4trace:configure.in:840: -1- AH_OUTPUT([ptrdiff_t], [/* Define to \`int' if does not define. */ +m4trace:configure.in:836: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t]) +m4trace:configure.in:836: -1- AH_OUTPUT([ptrdiff_t], [/* Define to \`int' if does not define. */ #undef ptrdiff_t]) -m4trace:configure.in:840: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t]) -m4trace:configure.in:840: -1- AH_OUTPUT([ptrdiff_t], [/* Define to \`long' if does not define. */ +m4trace:configure.in:836: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t]) +m4trace:configure.in:836: -1- AH_OUTPUT([ptrdiff_t], [/* Define to \`long' if does not define. */ #undef ptrdiff_t]) -m4trace:configure.in:840: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t]) -m4trace:configure.in:840: -1- AH_OUTPUT([ptrdiff_t], [/* Define to \`long long' if does not define. */ +m4trace:configure.in:836: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t]) +m4trace:configure.in:836: -1- AH_OUTPUT([ptrdiff_t], [/* Define to \`long long' if does not define. */ #undef ptrdiff_t]) -m4trace:configure.in:840: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t]) -m4trace:configure.in:840: -1- AH_OUTPUT([ptrdiff_t], [/* Define to \`int' if does not define. */ +m4trace:configure.in:836: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t]) +m4trace:configure.in:836: -1- AH_OUTPUT([ptrdiff_t], [/* Define to \`int' if does not define. */ #undef ptrdiff_t]) -m4trace:configure.in:843: -1- AC_HEADER_STAT -m4trace:configure.in:843: -1- AC_DEFINE_TRACE_LITERAL([STAT_MACROS_BROKEN]) -m4trace:configure.in:843: -1- AH_OUTPUT([STAT_MACROS_BROKEN], [/* Define to 1 if the \`S_IS*' macros in do not work properly. */ +m4trace:configure.in:839: -1- AC_HEADER_STAT +m4trace:configure.in:839: -1- AC_DEFINE_TRACE_LITERAL([STAT_MACROS_BROKEN]) +m4trace:configure.in:839: -1- AH_OUTPUT([STAT_MACROS_BROKEN], [/* Define to 1 if the \`S_IS*' macros in do not work properly. */ #undef STAT_MACROS_BROKEN]) -m4trace:configure.in:848: -1- AC_DEFINE_TRACE_LITERAL([HAVE_HASH_BANG_EXEC]) -m4trace:configure.in:853: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LSTAT]) -m4trace:configure.in:857: -1- AC_DEFINE_TRACE_LITERAL([CTYPE_NON_ASCII]) -m4trace:configure.in:858: -1- AC_DEFINE_TRACE_LITERAL([DUP2_BROKEN]) -m4trace:configure.in:859: -1- AC_DEFINE_TRACE_LITERAL([PGRP_PIPE]) -m4trace:configure.in:860: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SIGNALS]) -m4trace:configure.in:860: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BSD_SIGNALS]) -m4trace:configure.in:860: -1- AC_DEFINE_TRACE_LITERAL([HAVE_USG_SIGHOLD]) -m4trace:configure.in:863: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_ERRLIST]) -m4trace:configure.in:864: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_SIGLIST]) -m4trace:configure.in:865: -1- AC_DEFINE_TRACE_LITERAL([UNDER_SYS_SIGLIST_DECLARED]) -m4trace:configure.in:865: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNDER_SYS_SIGLIST]) -m4trace:configure.in:868: -1- AC_DEFINE_TRACE_LITERAL([VOID_SIGHANDLER]) -m4trace:configure.in:869: -1- AC_DEFINE_TRACE_LITERAL([clock_t]) -m4trace:configure.in:870: -1- AC_DEFINE_TRACE_LITERAL([sigset_t]) -m4trace:configure.in:871: -1- AC_DEFINE_TRACE_LITERAL([HAVE_QUAD_T]) -m4trace:configure.in:871: -1- AC_DEFINE_TRACE_LITERAL([quad_t]) -m4trace:configure.in:872: -1- AC_DEFINE_TRACE_LITERAL([intmax_t]) -m4trace:configure.in:873: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t]) -m4trace:configure.in:875: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SOCKLEN_T]) -m4trace:configure.in:875: -1- AC_DEFINE_TRACE_LITERAL([socklen_t]) -m4trace:configure.in:877: -1- AC_DEFINE_TRACE_LITERAL([RLIMTYPE]) -m4trace:configure.in:877: -1- AC_DEFINE_TRACE_LITERAL([RLIMTYPE]) -m4trace:configure.in:880: -2- AC_DEFINE_TRACE_LITERAL([TERMIOS_LDISC]) -m4trace:configure.in:881: -2- AC_DEFINE_TRACE_LITERAL([TERMIO_LDISC]) -m4trace:configure.in:882: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_INO]) -m4trace:configure.in:883: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_FILENO]) -m4trace:configure.in:884: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_NAMLEN]) -m4trace:configure.in:885: -1- AC_DEFINE_TRACE_LITERAL([STRUCT_WINSIZE_IN_SYS_IOCTL]) -m4trace:configure.in:885: -1- AC_DEFINE_TRACE_LITERAL([STRUCT_WINSIZE_IN_TERMIOS]) -m4trace:configure.in:886: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TIMEVAL]) -m4trace:configure.in:887: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_BLOCKS]) -m4trace:configure.in:887: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_BLOCKS], [/* Define to 1 if \`st_blocks' is member of \`struct stat'. */ +m4trace:configure.in:844: -1- AC_DEFINE_TRACE_LITERAL([HAVE_HASH_BANG_EXEC]) +m4trace:configure.in:849: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LSTAT]) +m4trace:configure.in:853: -1- AC_DEFINE_TRACE_LITERAL([CTYPE_NON_ASCII]) +m4trace:configure.in:854: -1- AC_DEFINE_TRACE_LITERAL([DUP2_BROKEN]) +m4trace:configure.in:855: -1- AC_DEFINE_TRACE_LITERAL([PGRP_PIPE]) +m4trace:configure.in:856: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SIGNALS]) +m4trace:configure.in:856: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BSD_SIGNALS]) +m4trace:configure.in:856: -1- AC_DEFINE_TRACE_LITERAL([HAVE_USG_SIGHOLD]) +m4trace:configure.in:859: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_ERRLIST]) +m4trace:configure.in:860: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_SIGLIST]) +m4trace:configure.in:861: -1- AC_DEFINE_TRACE_LITERAL([UNDER_SYS_SIGLIST_DECLARED]) +m4trace:configure.in:861: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNDER_SYS_SIGLIST]) +m4trace:configure.in:864: -1- AC_DEFINE_TRACE_LITERAL([VOID_SIGHANDLER]) +m4trace:configure.in:865: -1- AC_DEFINE_TRACE_LITERAL([clock_t]) +m4trace:configure.in:866: -1- AC_DEFINE_TRACE_LITERAL([sigset_t]) +m4trace:configure.in:867: -1- AC_DEFINE_TRACE_LITERAL([HAVE_QUAD_T]) +m4trace:configure.in:867: -1- AC_DEFINE_TRACE_LITERAL([quad_t]) +m4trace:configure.in:868: -1- AC_DEFINE_TRACE_LITERAL([intmax_t]) +m4trace:configure.in:869: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t]) +m4trace:configure.in:871: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SOCKLEN_T]) +m4trace:configure.in:871: -1- AC_DEFINE_TRACE_LITERAL([socklen_t]) +m4trace:configure.in:873: -1- AC_DEFINE_TRACE_LITERAL([RLIMTYPE]) +m4trace:configure.in:873: -1- AC_DEFINE_TRACE_LITERAL([RLIMTYPE]) +m4trace:configure.in:876: -2- AC_DEFINE_TRACE_LITERAL([TERMIOS_LDISC]) +m4trace:configure.in:877: -2- AC_DEFINE_TRACE_LITERAL([TERMIO_LDISC]) +m4trace:configure.in:878: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_INO]) +m4trace:configure.in:879: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_FILENO]) +m4trace:configure.in:880: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_NAMLEN]) +m4trace:configure.in:881: -1- AC_DEFINE_TRACE_LITERAL([STRUCT_WINSIZE_IN_SYS_IOCTL]) +m4trace:configure.in:881: -1- AC_DEFINE_TRACE_LITERAL([STRUCT_WINSIZE_IN_TERMIOS]) +m4trace:configure.in:882: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TIMEVAL]) +m4trace:configure.in:883: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_BLOCKS]) +m4trace:configure.in:883: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_BLOCKS], [/* Define to 1 if \`st_blocks' is member of \`struct stat'. */ #undef HAVE_STRUCT_STAT_ST_BLOCKS]) -m4trace:configure.in:888: -1- AC_STRUCT_TM -m4trace:configure.in:888: -1- AC_DEFINE_TRACE_LITERAL([TM_IN_SYS_TIME]) -m4trace:configure.in:888: -1- AH_OUTPUT([TM_IN_SYS_TIME], [/* Define to 1 if your declares \`struct tm'. */ +m4trace:configure.in:884: -1- AC_STRUCT_TM +m4trace:configure.in:884: -1- AC_DEFINE_TRACE_LITERAL([TM_IN_SYS_TIME]) +m4trace:configure.in:884: -1- AH_OUTPUT([TM_IN_SYS_TIME], [/* Define to 1 if your declares \`struct tm'. */ #undef TM_IN_SYS_TIME]) -m4trace:configure.in:889: -1- AC_STRUCT_TIMEZONE -m4trace:configure.in:889: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TM_TM_ZONE]) -m4trace:configure.in:889: -1- AH_OUTPUT([HAVE_STRUCT_TM_TM_ZONE], [/* Define to 1 if \`tm_zone' is member of \`struct tm'. */ +m4trace:configure.in:885: -1- AC_STRUCT_TIMEZONE +m4trace:configure.in:885: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TM_TM_ZONE]) +m4trace:configure.in:885: -1- AH_OUTPUT([HAVE_STRUCT_TM_TM_ZONE], [/* Define to 1 if \`tm_zone' is member of \`struct tm'. */ #undef HAVE_STRUCT_TM_TM_ZONE]) -m4trace:configure.in:889: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TM_ZONE]) -m4trace:configure.in:889: -1- AH_OUTPUT([HAVE_TM_ZONE], [/* Define to 1 if your \`struct tm' has \`tm_zone'. Deprecated, use +m4trace:configure.in:885: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TM_ZONE]) +m4trace:configure.in:885: -1- AH_OUTPUT([HAVE_TM_ZONE], [/* Define to 1 if your \`struct tm' has \`tm_zone'. Deprecated, use \`HAVE_STRUCT_TM_TM_ZONE' instead. */ #undef HAVE_TM_ZONE]) -m4trace:configure.in:889: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TZNAME]) -m4trace:configure.in:889: -1- AH_OUTPUT([HAVE_TZNAME], [/* Define to 1 if you don't have \`tm_zone' but do have the external array +m4trace:configure.in:885: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TZNAME]) +m4trace:configure.in:885: -1- AH_OUTPUT([HAVE_TZNAME], [/* Define to 1 if you don't have \`tm_zone' but do have the external array \`tzname'. */ #undef HAVE_TZNAME]) -m4trace:configure.in:890: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMEZONE]) -m4trace:configure.in:893: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRSIGNAL]) -m4trace:configure.in:894: -1- AC_DEFINE_TRACE_LITERAL([OPENDIR_NOT_ROBUST]) -m4trace:configure.in:895: -1- AC_DEFINE_TRACE_LITERAL([ULIMIT_MAXFDS]) -m4trace:configure.in:896: -1- AC_DEFINE_TRACE_LITERAL([CAN_REDEFINE_GETENV]) -m4trace:configure.in:898: -1- AC_DEFINE_TRACE_LITERAL([GETCWD_BROKEN]) -m4trace:configure.in:898: -1- AC_LIBSOURCE([getcwd.c]) -m4trace:configure.in:898: -1- AC_SUBST([LIB@&t@OBJS]) -m4trace:configure.in:900: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SIGSETJMP]) -m4trace:configure.in:901: -1- AC_DEFINE_TRACE_LITERAL([STRCOLL_BROKEN]) -m4trace:configure.in:907: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_PUTENV]) -m4trace:configure.in:909: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_PUTENV]) -m4trace:configure.in:912: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_UNSETENV]) -m4trace:configure.in:914: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_UNSETENV]) -m4trace:configure.in:917: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PRINTF_A_FORMAT]) -m4trace:configure.in:920: -1- AC_DEFINE_TRACE_LITERAL([MUST_REINSTALL_SIGHANDLERS]) -m4trace:configure.in:921: -1- AC_DEFINE_TRACE_LITERAL([JOB_CONTROL_MISSING]) -m4trace:configure.in:922: -1- AC_DEFINE_TRACE_LITERAL([NAMED_PIPES_MISSING]) -m4trace:configure.in:925: -1- AC_DEFINE_TRACE_LITERAL([GWINSZ_IN_SYS_IOCTL]) -m4trace:configure.in:925: -1- AH_OUTPUT([GWINSZ_IN_SYS_IOCTL], [/* Define to 1 if \`TIOCGWINSZ' requires . */ +m4trace:configure.in:886: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMEZONE]) +m4trace:configure.in:889: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRSIGNAL]) +m4trace:configure.in:890: -1- AC_DEFINE_TRACE_LITERAL([OPENDIR_NOT_ROBUST]) +m4trace:configure.in:891: -1- AC_DEFINE_TRACE_LITERAL([ULIMIT_MAXFDS]) +m4trace:configure.in:892: -1- AC_DEFINE_TRACE_LITERAL([CAN_REDEFINE_GETENV]) +m4trace:configure.in:894: -1- AC_DEFINE_TRACE_LITERAL([GETCWD_BROKEN]) +m4trace:configure.in:894: -1- AC_LIBSOURCE([getcwd.c]) +m4trace:configure.in:894: -1- AC_SUBST([LIB@&t@OBJS]) +m4trace:configure.in:896: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SIGSETJMP]) +m4trace:configure.in:897: -1- AC_DEFINE_TRACE_LITERAL([STRCOLL_BROKEN]) +m4trace:configure.in:903: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_PUTENV]) +m4trace:configure.in:905: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_PUTENV]) +m4trace:configure.in:908: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_UNSETENV]) +m4trace:configure.in:910: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_UNSETENV]) +m4trace:configure.in:913: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PRINTF_A_FORMAT]) +m4trace:configure.in:916: -1- AC_DEFINE_TRACE_LITERAL([MUST_REINSTALL_SIGHANDLERS]) +m4trace:configure.in:917: -1- AC_DEFINE_TRACE_LITERAL([JOB_CONTROL_MISSING]) +m4trace:configure.in:918: -1- AC_DEFINE_TRACE_LITERAL([NAMED_PIPES_MISSING]) +m4trace:configure.in:921: -1- AC_DEFINE_TRACE_LITERAL([GWINSZ_IN_SYS_IOCTL]) +m4trace:configure.in:921: -1- AH_OUTPUT([GWINSZ_IN_SYS_IOCTL], [/* Define to 1 if \`TIOCGWINSZ' requires . */ #undef GWINSZ_IN_SYS_IOCTL]) -m4trace:configure.in:926: -1- AC_DEFINE_TRACE_LITERAL([TIOCSTAT_IN_SYS_IOCTL]) -m4trace:configure.in:927: -1- AC_DEFINE_TRACE_LITERAL([FIONREAD_IN_SYS_IOCTL]) -m4trace:configure.in:929: -1- AC_DEFINE_TRACE_LITERAL([WCONTINUED_BROKEN]) -m4trace:configure.in:932: -1- AC_DEFINE_TRACE_LITERAL([SPEED_T_IN_SYS_TYPES]) -m4trace:configure.in:933: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPW_DECLS]) -m4trace:configure.in:934: -1- AC_DEFINE_TRACE_LITERAL([UNUSABLE_RT_SIGNALS]) -m4trace:configure.in:935: -1- AC_SUBST([SIGLIST_O]) -m4trace:configure.in:939: -1- AC_DEFINE_TRACE_LITERAL([RLIMIT_NEEDS_KERNEL]) -m4trace:configure.in:947: -1- AC_CHECK_LIB([termcap], [tgetent], [bash_cv_termcap_lib=libtermcap], [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo, +m4trace:configure.in:922: -1- AC_DEFINE_TRACE_LITERAL([TIOCSTAT_IN_SYS_IOCTL]) +m4trace:configure.in:923: -1- AC_DEFINE_TRACE_LITERAL([FIONREAD_IN_SYS_IOCTL]) +m4trace:configure.in:925: -1- AC_DEFINE_TRACE_LITERAL([WCONTINUED_BROKEN]) +m4trace:configure.in:928: -1- AC_DEFINE_TRACE_LITERAL([SPEED_T_IN_SYS_TYPES]) +m4trace:configure.in:929: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPW_DECLS]) +m4trace:configure.in:930: -1- AC_DEFINE_TRACE_LITERAL([UNUSABLE_RT_SIGNALS]) +m4trace:configure.in:931: -1- AC_SUBST([SIGLIST_O]) +m4trace:configure.in:935: -1- AC_DEFINE_TRACE_LITERAL([RLIMIT_NEEDS_KERNEL]) +m4trace:configure.in:943: -1- AC_CHECK_LIB([termcap], [tgetent], [bash_cv_termcap_lib=libtermcap], [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo, [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, bash_cv_termcap_lib=gnutermcap)])])]) -m4trace:configure.in:947: -1- AC_CHECK_LIB([tinfo], [tgetent], [bash_cv_termcap_lib=libtinfo], [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, +m4trace:configure.in:943: -1- AC_CHECK_LIB([tinfo], [tgetent], [bash_cv_termcap_lib=libtinfo], [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, bash_cv_termcap_lib=gnutermcap)])]) -m4trace:configure.in:947: -1- AC_CHECK_LIB([curses], [tgetent], [bash_cv_termcap_lib=libcurses], [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, +m4trace:configure.in:943: -1- AC_CHECK_LIB([curses], [tgetent], [bash_cv_termcap_lib=libcurses], [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, bash_cv_termcap_lib=gnutermcap)]) -m4trace:configure.in:947: -1- AC_CHECK_LIB([ncurses], [tgetent], [bash_cv_termcap_lib=libncurses], [bash_cv_termcap_lib=gnutermcap]) -m4trace:configure.in:949: -1- AC_SUBST([TERMCAP_LIB]) -m4trace:configure.in:950: -1- AC_SUBST([TERMCAP_DEP]) -m4trace:configure.in:952: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_FD]) -m4trace:configure.in:952: -1- AC_DEFINE_TRACE_LITERAL([DEV_FD_PREFIX]) -m4trace:configure.in:952: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_FD]) -m4trace:configure.in:952: -1- AC_DEFINE_TRACE_LITERAL([DEV_FD_PREFIX]) -m4trace:configure.in:953: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_STDIN]) -m4trace:configure.in:954: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_MAIL_DIRECTORY]) -m4trace:configure.in:961: -1- AC_DEFINE_TRACE_LITERAL([JOB_CONTROL]) -m4trace:configure.in:967: -1- AC_SUBST([JOBS_O]) -m4trace:configure.in:980: -1- AC_DEFINE_TRACE_LITERAL([SVR4_2]) -m4trace:configure.in:981: -1- AC_DEFINE_TRACE_LITERAL([SVR4]) -m4trace:configure.in:982: -1- AC_DEFINE_TRACE_LITERAL([SVR4]) -m4trace:configure.in:983: -1- AC_DEFINE_TRACE_LITERAL([SVR5]) -m4trace:configure.in:998: -1- AC_DEFINE_TRACE_LITERAL([PGRP_PIPE]) -m4trace:configure.in:1045: -1- AC_SUBST([SHOBJ_CC]) -m4trace:configure.in:1046: -1- AC_SUBST([SHOBJ_CFLAGS]) -m4trace:configure.in:1047: -1- AC_SUBST([SHOBJ_LD]) -m4trace:configure.in:1048: -1- AC_SUBST([SHOBJ_LDFLAGS]) -m4trace:configure.in:1049: -1- AC_SUBST([SHOBJ_XLDFLAGS]) -m4trace:configure.in:1050: -1- AC_SUBST([SHOBJ_LIBS]) -m4trace:configure.in:1051: -1- AC_SUBST([SHOBJ_STATUS]) -m4trace:configure.in:1076: -1- AC_SUBST([PROFILE_FLAGS]) -m4trace:configure.in:1078: -1- AC_SUBST([incdir]) -m4trace:configure.in:1079: -1- AC_SUBST([BUILD_DIR]) -m4trace:configure.in:1081: -1- AC_SUBST([YACC]) -m4trace:configure.in:1082: -1- AC_SUBST([AR]) -m4trace:configure.in:1083: -1- AC_SUBST([ARFLAGS]) -m4trace:configure.in:1085: -1- AC_SUBST([BASHVERS]) -m4trace:configure.in:1086: -1- AC_SUBST([RELSTATUS]) -m4trace:configure.in:1087: -1- AC_SUBST([DEBUG]) -m4trace:configure.in:1088: -1- AC_SUBST([MALLOC_DEBUG]) -m4trace:configure.in:1090: -1- AC_SUBST([host_cpu]) -m4trace:configure.in:1091: -1- AC_SUBST([host_vendor]) -m4trace:configure.in:1092: -1- AC_SUBST([host_os]) -m4trace:configure.in:1094: -1- AC_SUBST([LOCAL_LIBS]) -m4trace:configure.in:1095: -1- AC_SUBST([LOCAL_CFLAGS]) -m4trace:configure.in:1096: -1- AC_SUBST([LOCAL_LDFLAGS]) -m4trace:configure.in:1097: -1- AC_SUBST([LOCAL_DEFS]) -m4trace:configure.in:1111: -1- AC_CONFIG_FILES([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \ +m4trace:configure.in:943: -1- AC_CHECK_LIB([ncurses], [tgetent], [bash_cv_termcap_lib=libncurses], [bash_cv_termcap_lib=gnutermcap]) +m4trace:configure.in:945: -1- AC_SUBST([TERMCAP_LIB]) +m4trace:configure.in:946: -1- AC_SUBST([TERMCAP_DEP]) +m4trace:configure.in:948: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_FD]) +m4trace:configure.in:948: -1- AC_DEFINE_TRACE_LITERAL([DEV_FD_PREFIX]) +m4trace:configure.in:948: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_FD]) +m4trace:configure.in:948: -1- AC_DEFINE_TRACE_LITERAL([DEV_FD_PREFIX]) +m4trace:configure.in:949: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_STDIN]) +m4trace:configure.in:950: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_MAIL_DIRECTORY]) +m4trace:configure.in:957: -1- AC_DEFINE_TRACE_LITERAL([JOB_CONTROL]) +m4trace:configure.in:963: -1- AC_SUBST([JOBS_O]) +m4trace:configure.in:976: -1- AC_DEFINE_TRACE_LITERAL([SVR4_2]) +m4trace:configure.in:977: -1- AC_DEFINE_TRACE_LITERAL([SVR4]) +m4trace:configure.in:978: -1- AC_DEFINE_TRACE_LITERAL([SVR4]) +m4trace:configure.in:979: -1- AC_DEFINE_TRACE_LITERAL([SVR5]) +m4trace:configure.in:994: -1- AC_DEFINE_TRACE_LITERAL([PGRP_PIPE]) +m4trace:configure.in:1041: -1- AC_SUBST([SHOBJ_CC]) +m4trace:configure.in:1042: -1- AC_SUBST([SHOBJ_CFLAGS]) +m4trace:configure.in:1043: -1- AC_SUBST([SHOBJ_LD]) +m4trace:configure.in:1044: -1- AC_SUBST([SHOBJ_LDFLAGS]) +m4trace:configure.in:1045: -1- AC_SUBST([SHOBJ_XLDFLAGS]) +m4trace:configure.in:1046: -1- AC_SUBST([SHOBJ_LIBS]) +m4trace:configure.in:1047: -1- AC_SUBST([SHOBJ_STATUS]) +m4trace:configure.in:1072: -1- AC_SUBST([PROFILE_FLAGS]) +m4trace:configure.in:1074: -1- AC_SUBST([incdir]) +m4trace:configure.in:1075: -1- AC_SUBST([BUILD_DIR]) +m4trace:configure.in:1077: -1- AC_SUBST([YACC]) +m4trace:configure.in:1078: -1- AC_SUBST([AR]) +m4trace:configure.in:1079: -1- AC_SUBST([ARFLAGS]) +m4trace:configure.in:1081: -1- AC_SUBST([BASHVERS]) +m4trace:configure.in:1082: -1- AC_SUBST([RELSTATUS]) +m4trace:configure.in:1083: -1- AC_SUBST([DEBUG]) +m4trace:configure.in:1084: -1- AC_SUBST([MALLOC_DEBUG]) +m4trace:configure.in:1086: -1- AC_SUBST([host_cpu]) +m4trace:configure.in:1087: -1- AC_SUBST([host_vendor]) +m4trace:configure.in:1088: -1- AC_SUBST([host_os]) +m4trace:configure.in:1090: -1- AC_SUBST([LOCAL_LIBS]) +m4trace:configure.in:1091: -1- AC_SUBST([LOCAL_CFLAGS]) +m4trace:configure.in:1092: -1- AC_SUBST([LOCAL_LDFLAGS]) +m4trace:configure.in:1093: -1- AC_SUBST([LOCAL_DEFS]) +m4trace:configure.in:1107: -1- AC_CONFIG_FILES([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \ lib/intl/Makefile \ lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile \ lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in \ diff --git a/autom4te.cache/output.0 b/autom4te.cache/output.0 index 71373dbcb..d721800e8 100644 --- a/autom4te.cache/output.0 +++ b/autom4te.cache/output.0 @@ -1,12 +1,11 @@ @%:@! /bin/sh -@%:@ From configure.in for Bash 3.2, version 3.194. +@%:@ From configure.in for Bash 3.2, version 3.187. @%:@ Guess values for system-dependent variables and create Makefiles. -@%:@ Generated by GNU Autoconf 2.60 for bash 3.2-maint. +@%:@ Generated by GNU Autoconf 2.59 for bash 3.2-devel. @%:@ @%:@ Report bugs to . @%:@ -@%:@ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -@%:@ 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +@%:@ Copyright (C) 2003 Free Software Foundation, Inc. @%:@ This configure script is free software; the Free Software Foundation @%:@ gives unlimited permission to copy, distribute and modify it. ## --------------------- ## @@ -20,35 +19,11 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then # Zsh 3.x and 4.x performs 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 +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix fi -BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh - -# 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 - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset @@ -57,43 +32,8 @@ else fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -as_nl=' -' -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -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 -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (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 -done +$as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' @@ -107,19 +47,18 @@ do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + $as_unset $as_var fi done # Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then +if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false @@ -127,386 +66,157 @@ fi # Name of the executable. -as_me=`$as_basename -- "$0" || +as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# CDPATH. -$as_unset CDPATH - - -if test "x$CONFIG_SHELL" = x; then - if (eval ":") 2>/dev/null; then - as_have_required=yes -else - as_have_required=no -fi - - 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 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` -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 +# PATH needs CR, and LINENO needs CR and PATH. +# 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 as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh 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 + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + 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 -( - 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= + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /usr/bin/posix$PATH_SEPARATOR/bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +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 + 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 - - - 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 -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs 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 -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -: -_ASEOF -}; then - CONFIG_SHELL=$as_shell - as_have_required=yes - if { "$as_shell" 2> /dev/null <<\_ASEOF -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs 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 -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -: -(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 autoconf@gnu.org about your system, - echo including any error possibly output before this - echo message -} - - - + if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac # 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. + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, 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 | + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop - s/-\n.*// + s,-$,, + s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && - chmod +x "$as_me.lineno" || + chmod +x $as_me.lineno || { 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" + # original and so on. Autoconf is especially sensible 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';; +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then +if expr a : '\(a\)' >/dev/null 2>&1; 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 -fi echo >conf$$.file 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 || + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null +rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: @@ -515,19 +225,7 @@ else as_mkdir_p=false fi -# Find out whether ``test -x'' works. Don't use a zero-byte file, as -# systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - as_executable_p="test -x" -else - as_executable_p=: -fi -rm -f conf$$.file +as_executable_p="test -f" # 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'" @@ -536,32 +234,44 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH -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` +exec 6>&1 + # # Initializations. # ac_default_prefix=/usr/local -ac_clean_files= ac_config_libobj_dir=. -LIB@&t@OBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + # Identity of this package. PACKAGE_NAME='bash' PACKAGE_TARNAME='bash' -PACKAGE_VERSION='3.2-maint' -PACKAGE_STRING='bash 3.2-maint' +PACKAGE_VERSION='3.2-devel' +PACKAGE_STRING='bash 3.2-devel' PACKAGE_BUGREPORT='bug-bash@gnu.org' ac_unique_file="shell.h" @@ -593,178 +303,17 @@ ac_includes_default="\ #endif #if HAVE_INTTYPES_H # include -#endif -#if HAVE_STDINT_H -# include +#else +# if HAVE_STDINT_H +# include +# endif #endif #if HAVE_UNISTD_H # include #endif" -ac_subst_vars='SHELL -PATH_SEPARATOR -PACKAGE_NAME -PACKAGE_TARNAME -PACKAGE_VERSION -PACKAGE_STRING -PACKAGE_BUGREPORT -exec_prefix -prefix -program_transform_name -bindir -sbindir -libexecdir -datarootdir -datadir -sysconfdir -sharedstatedir -localstatedir -includedir -oldincludedir -docdir -infodir -htmldir -dvidir -pdfdir -psdir -libdir -localedir -mandir -DEFS -ECHO_C -ECHO_N -ECHO_T -LIBS -build_alias -host_alias -target_alias -build -build_cpu -build_vendor -build_os -host -host_cpu -host_vendor -host_os -EMACS -lispdir -DEBUGGER_START_FILE -TESTSCRIPT -PURIFY -MALLOC_TARGET -MALLOC_SRC -MALLOC_LIB -MALLOC_LIBRARY -MALLOC_LDFLAGS -MALLOC_DEP -HELPDIR -HELPDIRDEFINE -HELPINSTALL -HELPSTRINGS -CC -CFLAGS -LDFLAGS -CPPFLAGS -ac_ct_CC -EXEEXT -OBJEXT -CPP -GREP -EGREP -CROSS_COMPILE -SIGNAMES_H -SIGNAMES_O -CC_FOR_BUILD -STATIC_LD -CFLAGS_FOR_BUILD -CPPFLAGS_FOR_BUILD -LDFLAGS_FOR_BUILD -RL_VERSION -RL_MAJOR -RL_MINOR -READLINE_LIB -READLINE_DEP -RL_LIBDIR -RL_INCLUDEDIR -RL_INCLUDE -HISTORY_LIB -HISTORY_DEP -HIST_LIBDIR -TILDE_LIB -INSTALL_PROGRAM -INSTALL_SCRIPT -INSTALL_DATA -AR -RANLIB -YACC -YFLAGS -SET_MAKE -MAKE_SHELL -SIZE -MKINSTALLDIRS -USE_NLS -MSGFMT -GMSGFMT -XGETTEXT -MSGMERGE -ALLOCA -GLIBC21 -LIBICONV -LTLIBICONV -INTLBISON -BUILD_INCLUDED_LIBINTL -USE_INCLUDED_LIBINTL -CATOBJEXT -DATADIRNAME -INSTOBJEXT -GENCAT -INTLOBJS -INTL_LIBTOOL_SUFFIX_PREFIX -INTLLIBS -LIBINTL -LTLIBINTL -POSUB -LIB@&t@OBJS -INTL_DEP -INTL_INC -LIBINTL_H -SIGLIST_O -TERMCAP_LIB -TERMCAP_DEP -JOBS_O -SHOBJ_CC -SHOBJ_CFLAGS -SHOBJ_LD -SHOBJ_LDFLAGS -SHOBJ_XLDFLAGS -SHOBJ_LIBS -SHOBJ_STATUS -PROFILE_FLAGS -incdir -BUILD_DIR -ARFLAGS -BASHVERS -RELSTATUS -DEBUG -MALLOC_DEBUG -LOCAL_LIBS -LOCAL_CFLAGS -LOCAL_LDFLAGS -LOCAL_DEFS -LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os EMACS lispdir DEBUGGER_START_FILE TESTSCRIPT PURIFY MALLOC_TARGET MALLOC_SRC MALLOC_LIB MALLOC_LIBRARY MALLOC_LDFLAGS MALLOC_DEP htmldir HELPDIR HELPDIRDEFINE HELPINSTALL HELPSTRINGS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP CROSS_COMPILE SIGNAMES_H SIGNAMES_O CC_FOR_BUILD STATIC_LD CFLAGS_FOR_BUILD CPPFLAGS_FOR_BUILD LDFLAGS_FOR_BUILD RL_VERSION RL_MAJOR RL_MINOR READLINE_LIB READLINE_DEP RL_LIBDIR RL_INCLUDEDIR RL_INCLUDE HISTORY_LIB HISTORY_DEP HIST_LIBDIR TILDE_LIB INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA AR RANLIB ac_ct_RANLIB YACC SET_MAKE MAKE_SHELL SIZE MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE ALLOCA GLIBC21 LIBICONV LTLIBICONV INTLBISON BUILD_INCLUDED_LIBINTL USE_INCLUDED_LIBINTL CATOBJEXT DATADIRNAME INSTOBJEXT GENCAT INTLOBJS INTL_LIBTOOL_SUFFIX_PREFIX INTLLIBS LIBINTL LTLIBINTL POSUB LIB@&t@OBJS INTL_DEP INTL_INC LIBINTL_H SIGLIST_O TERMCAP_LIB TERMCAP_DEP JOBS_O SHOBJ_CC SHOBJ_CFLAGS SHOBJ_LD SHOBJ_LDFLAGS SHOBJ_XLDFLAGS SHOBJ_LIBS SHOBJ_STATUS PROFILE_FLAGS incdir BUILD_DIR ARFLAGS BASHVERS RELSTATUS DEBUG MALLOC_DEBUG LOCAL_LIBS LOCAL_CFLAGS LOCAL_LDFLAGS LOCAL_DEFS LTLIBOBJS' ac_subst_files='' - ac_precious_vars='build_alias -host_alias -target_alias -DEBUGGER_START_FILE -CC -CFLAGS -LDFLAGS -CPPFLAGS -CPP -YACC -YFLAGS' - # Initialize some variables set by options. ac_init_help= @@ -791,48 +340,34 @@ x_libraries=NONE # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' +datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' +infodir='${prefix}/info' +mandir='${prefix}/man' ac_prev= -ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option + eval "$ac_prev=\$ac_option" ac_prev= continue fi - case $ac_option in - *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *) ac_optarg=yes ;; - esac + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` # Accept the important Cygnus configure options, so we can diagnose typos. - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; + case $ac_option in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; @@ -854,18 +389,12 @@ do --config-cache | -C) cache_file=config.cache ;; - -datadir | --datadir | --datadi | --datad) + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) datadir=$ac_optarg ;; - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. @@ -873,17 +402,7 @@ do { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval enable_$ac_feature=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; + eval "enable_$ac_feature=no" ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` @@ -892,7 +411,11 @@ do { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval enable_$ac_feature=\$ac_optarg ;; + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ @@ -919,12 +442,6 @@ do -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; @@ -949,16 +466,13 @@ do | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) @@ -1023,16 +537,6 @@ do | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; @@ -1089,7 +593,11 @@ do { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package| sed 's/-/_/g'` - eval with_$ac_package=\$ac_optarg ;; + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` @@ -1098,7 +606,7 @@ do { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/-/_/g'` - eval with_$ac_package=no ;; + eval "with_$ac_package=no" ;; --x) # Obsolete; use --with-x. @@ -1129,7 +637,8 @@ Try \`$0 --help' for more information." >&2 expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } - eval $ac_envvar=\$ac_optarg + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" export $ac_envvar ;; *) @@ -1149,19 +658,27 @@ if test -n "$ac_prev"; then { (exit 1); exit 1; }; } fi -# Be sure to have absolute directory names. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix do - eval ac_val=\$$ac_var + eval ac_val=$`echo $ac_var` case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; esac - { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; } done # There might be people who depend on the old broken behavior: `$host' @@ -1188,76 +705,78 @@ test -n "$host_alias" && ac_tool_prefix=$host_alias- 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 .` || - { echo "$as_me: error: Working directory cannot be determined" >&2 - { (exit 1); exit 1; }; } -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - { echo "$as_me: error: pwd does not report name of working directory" >&2 - { (exit 1); exit 1; }; } - - # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$0" || + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then + if test ! -r $srcdir/$ac_unique_file; then srcdir=.. fi else ac_srcdir_defaulted=no fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 { (exit 1); exit 1; }; } -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_DEBUGGER_START_FILE_set=${DEBUGGER_START_FILE+set} +ac_env_DEBUGGER_START_FILE_value=$DEBUGGER_START_FILE +ac_cv_env_DEBUGGER_START_FILE_set=${DEBUGGER_START_FILE+set} +ac_cv_env_DEBUGGER_START_FILE_value=$DEBUGGER_START_FILE +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP # # Report the --help message. @@ -1266,7 +785,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 3.2-maint to adapt to many kinds of systems. +\`configure' configures bash 3.2-devel to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1286,6 +805,9 @@ Configuration: -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] +_ACEOF + + cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] @@ -1303,22 +825,15 @@ Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root @<:@DATAROOTDIR/doc/bash@:>@ - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] _ACEOF cat <<\_ACEOF @@ -1331,7 +846,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of bash 3.2-maint:";; + short | recursive ) echo "Configuration of bash 3.2-devel:";; esac cat <<\_ACEOF @@ -1421,100 +936,129 @@ Some influential environment variables: CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory - CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if - you have headers in a nonstandard directory + CPPFLAGS 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'. - 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. Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF -ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. + ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || continue + test -d $ac_dir || continue ac_builddir=. -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) +if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi case $srcdir in - .) # We are building in place. + .) # No --srcdir option. We are building in place. ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } + fi + cd $ac_popdir done fi -test -n "$ac_init_help" && exit $ac_status +test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF -bash configure 3.2-maint -generated by GNU Autoconf 2.60 +bash configure 3.2-devel +generated by GNU Autoconf 2.59 -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +Copyright (C) 2003 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 + exit 0 fi -cat >config.log <<_ACEOF +exec 5>config.log +cat >&5 <<_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 3.2-maint, which was -generated by GNU Autoconf 2.60. Invocation command line was +It was created by bash $as_me 3.2-devel, which was +generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ _ACEOF -exec 5>>config.log { cat <<_ASUNAME @%:@@%:@ --------- @%:@@%:@ @@ -1533,7 +1077,7 @@ uname -v = `(uname -v) 2>/dev/null || echo unknown` /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` +hostinfo = `(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` @@ -1547,7 +1091,6 @@ do test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done -IFS=$as_save_IFS } >&5 @@ -1569,6 +1112,7 @@ _ACEOF ac_configure_args= ac_configure_args0= ac_configure_args1= +ac_sep= ac_must_keep_next=false for ac_pass in 1 2 do @@ -1579,7 +1123,7 @@ do -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; - *\'*) + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in @@ -1601,7 +1145,9 @@ do -* ) ac_must_keep_next=true ;; esac fi - ac_configure_args="$ac_configure_args '$ac_arg'" + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " ;; esac done @@ -1612,8 +1158,8 @@ $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_ # 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. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { @@ -1626,34 +1172,20 @@ trap 'exit_status=$? _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_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - *) $as_unset $ac_var ;; - esac ;; - esac - done +{ (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; - esac | - sort -) + esac; +} echo cat <<\_ASBOX @@ -1664,28 +1196,22 @@ _ASBOX echo for ac_var in $ac_subst_vars do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - echo "$ac_var='\''$ac_val'\''" + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX -@%:@@%:@ ------------------- @%:@@%:@ -@%:@@%:@ File substitutions. @%:@@%:@ -@%:@@%:@ ------------------- @%:@@%:@ +@%:@@%:@ ------------- @%:@@%:@ +@%:@@%:@ Output files. @%:@@%:@ +@%:@@%:@ ------------- @%:@@%:@ _ASBOX echo for ac_var in $ac_subst_files do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - echo "$ac_var='\''$ac_val'\''" + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo fi @@ -1697,24 +1223,26 @@ _ASBOX @%:@@%:@ ----------- @%:@@%:@ _ASBOX echo - cat confdefs.h + sed "/^$/d" confdefs.h | sort echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + rm -f core *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status -' 0 + ' 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 # confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h # Predefined preprocessor variables. @@ -1745,17 +1273,14 @@ _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. -if test -n "$CONFIG_SITE"; then - set x "$CONFIG_SITE" -elif test "x$prefix" != xNONE; then - set x "$prefix/share/config.site" "$prefix/etc/config.site" -else - set x "$ac_default_prefix/share/config.site" \ - "$ac_default_prefix/etc/config.site" +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi fi -shift -for ac_site_file -do +for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} @@ -1771,8 +1296,8 @@ if test -r "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; esac fi else @@ -1784,11 +1309,12 @@ fi # 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 +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; 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 + 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,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 @@ -1813,7 +1339,8 @@ echo "$as_me: current value: $ac_new_val" >&2;} # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in - *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in @@ -1830,6 +1357,12 @@ echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start ov { (exit 1); exit 1; }; } 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 + @@ -1854,11 +1387,6 @@ 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 @@ -1866,128 +1394,93 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_aux_dir= -for ac_dir in ./support "$srcdir"/./support; do - if test -f "$ac_dir/install-sh"; then +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 + 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 + 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 - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in ./support \"$srcdir\"/./support" >&5 -echo "$as_me: error: cannot find install-sh or install.sh in ./support \"$srcdir\"/./support" >&2;} + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in ./support $srcdir/./support" >&5 +echo "$as_me: error: cannot find install-sh or install.sh in ./support $srcdir/./support" >&2;} { (exit 1); exit 1; }; } fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. -# 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" + ac_config_headers="$ac_config_headers config.h" BASHVERS=3.2 -RELSTATUS=maint +RELSTATUS=devel case "$RELSTATUS" in -alp*|bet*|dev*|rc*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; +alp*|bet*|dev*|rc*) 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 || - { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 -echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} { (exit 1); exit 1; }; } -{ echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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 && + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 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` || - { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 -echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi -{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 -echo "$as_me: error: invalid value of canonical build" >&2;} - { (exit 1); exit 1; }; };; -esac +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 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 - - -{ echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6; } +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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` || - { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 -echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} { (exit 1); exit 1; }; } -fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 -echo "$as_me: error: invalid value of canonical host" >&2;} - { (exit 1); exit 1; }; };; -esac +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 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 +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` @@ -2033,13 +1526,14 @@ sco3.2v5*|sco3.2v4*) opt_memscramble=no ;; esac -# Check whether --with-lispdir was given. +# Check whether --with-lispdir or --without-lispdir was given. if test "${with_lispdir+set}" = set; then - withval=$with_lispdir; lispdir="$withval" - { echo "$as_me:$LINENO: checking where .elc files should go" >&5 -echo $ECHO_N "checking where .elc files should go... $ECHO_C" >&6; } - { echo "$as_me:$LINENO: result: $lispdir" >&5 -echo "${ECHO_T}$lispdir" >&6; } + withval="$with_lispdir" + lispdir="$withval" + echo "$as_me:$LINENO: checking where .elc files should go" >&5 +echo $ECHO_N "checking where .elc files should go... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $lispdir" >&5 +echo "${ECHO_T}$lispdir" >&6 else # If set to t, that means we are running in a shell under Emacs. @@ -2049,8 +1543,8 @@ else do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_EMACS+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2063,35 +1557,33 @@ 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_EMACS="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi EMACS=$ac_cv_prog_EMACS if test -n "$EMACS"; then - { echo "$as_me:$LINENO: result: $EMACS" >&5 -echo "${ECHO_T}$EMACS" >&6; } + echo "$as_me:$LINENO: result: $EMACS" >&5 +echo "${ECHO_T}$EMACS" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - test -n "$EMACS" && break done test -n "$EMACS" || EMACS="no" if test $EMACS != "no"; then if test x${lispdir+set} != xset; then - { echo "$as_me:$LINENO: checking where .elc files should go" >&5 -echo $ECHO_N "checking where .elc files should go... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking where .elc files should go" >&5 +echo $ECHO_N "checking where .elc files should go... $ECHO_C" >&6 if test "${am_cv_lispdir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2101,60 +1593,59 @@ else fi fi -{ echo "$as_me:$LINENO: result: $am_cv_lispdir" >&5 -echo "${ECHO_T}$am_cv_lispdir" >&6; } +echo "$as_me:$LINENO: result: $am_cv_lispdir" >&5 +echo "${ECHO_T}$am_cv_lispdir" >&6 lispdir="$am_cv_lispdir" fi fi -fi - +fi; -# Check whether --with-afs was given. +# Check whether --with-afs or --without-afs was given. if test "${with_afs+set}" = set; then - withval=$with_afs; opt_afs=$withval -fi + withval="$with_afs" + opt_afs=$withval +fi; - -# Check whether --with-bash-malloc was given. +# Check whether --with-bash-malloc or --without-bash-malloc was given. if test "${with_bash_malloc+set}" = set; then - withval=$with_bash_malloc; opt_bash_malloc=$withval -fi + withval="$with_bash_malloc" + opt_bash_malloc=$withval +fi; - -# Check whether --with-curses was given. +# Check whether --with-curses or --without-curses was given. if test "${with_curses+set}" = set; then - withval=$with_curses; opt_curses=$withval -fi + withval="$with_curses" + opt_curses=$withval +fi; - -# Check whether --with-gnu-malloc was given. +# Check whether --with-gnu-malloc or --without-gnu-malloc was given. if test "${with_gnu_malloc+set}" = set; then - withval=$with_gnu_malloc; opt_bash_malloc=$withval -fi + withval="$with_gnu_malloc" + opt_bash_malloc=$withval +fi; - -# Check whether --with-installed-readline was given. +# Check whether --with-installed-readline or --without-installed-readline was given. if test "${with_installed_readline+set}" = set; then - withval=$with_installed_readline; opt_with_installed_readline=$withval -fi + withval="$with_installed_readline" + opt_with_installed_readline=$withval +fi; - -# Check whether --with-purecov was given. +# Check whether --with-purecov or --without-purecov was given. if test "${with_purecov+set}" = set; then - withval=$with_purecov; opt_purecov=$withval -fi + withval="$with_purecov" + opt_purecov=$withval +fi; - -# Check whether --with-purify was given. +# Check whether --with-purify or --without-purify was given. if test "${with_purify+set}" = set; then - withval=$with_purify; opt_purify=$withval -fi - + withval="$with_purify" + opt_purify=$withval +fi; if test "$opt_bash_malloc" = yes; then MALLOC_TARGET=malloc @@ -2202,7 +1693,7 @@ if test "$opt_curses" = yes; then fi if test -z "${DEBUGGER_START_FILE}"; then - DEBUGGER_START_FILE='${datadir}/bashdb/bashdb-main.inc' + DEBUGGER_START_FILE=${ac_default_prefix}/lib/bashdb/bashdb-main.inc fi opt_minimal_config=no @@ -2239,11 +1730,11 @@ opt_single_longdoc_strings=yes opt_static_link=no opt_profiling=no -# Check whether --enable-minimal-config was given. +# Check whether --enable-minimal-config or --disable-minimal-config was given. if test "${enable_minimal_config+set}" = set; then - enableval=$enable_minimal_config; opt_minimal_config=$enableval -fi - + enableval="$enable_minimal_config" + opt_minimal_config=$enableval +fi; if test $opt_minimal_config = yes; then opt_job_control=no opt_alias=no opt_readline=no @@ -2256,167 +1747,167 @@ if test $opt_minimal_config = yes; then opt_multibyte=yes opt_cond_regexp=no fi -# Check whether --enable-alias was given. +# Check whether --enable-alias or --disable-alias was given. if test "${enable_alias+set}" = set; then - enableval=$enable_alias; opt_alias=$enableval -fi - -# Check whether --enable-arith-for-command was given. + enableval="$enable_alias" + opt_alias=$enableval +fi; +# Check whether --enable-arith-for-command or --disable-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 - -# Check whether --enable-array-variables was given. + enableval="$enable_arith_for_command" + opt_arith_for_command=$enableval +fi; +# Check whether --enable-array-variables or --disable-array-variables was given. if test "${enable_array_variables+set}" = set; then - enableval=$enable_array_variables; opt_array_variables=$enableval -fi - -# Check whether --enable-bang-history was given. + enableval="$enable_array_variables" + opt_array_variables=$enableval +fi; +# Check whether --enable-bang-history or --disable-bang-history was given. if test "${enable_bang_history+set}" = set; then - enableval=$enable_bang_history; opt_bang_history=$enableval -fi - -# Check whether --enable-brace-expansion was given. + enableval="$enable_bang_history" + opt_bang_history=$enableval +fi; +# Check whether --enable-brace-expansion or --disable-brace-expansion was given. if test "${enable_brace_expansion+set}" = set; then - enableval=$enable_brace_expansion; opt_brace_expansion=$enableval -fi - -# Check whether --enable-command-timing was given. + enableval="$enable_brace_expansion" + opt_brace_expansion=$enableval +fi; +# Check whether --enable-command-timing or --disable-command-timing was given. if test "${enable_command_timing+set}" = set; then - enableval=$enable_command_timing; opt_command_timing=$enableval -fi - -# Check whether --enable-cond-command was given. + enableval="$enable_command_timing" + opt_command_timing=$enableval +fi; +# Check whether --enable-cond-command or --disable-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. + enableval="$enable_cond_command" + opt_cond_command=$enableval +fi; +# Check whether --enable-cond-regexp or --disable-cond-regexp was given. if test "${enable_cond_regexp+set}" = set; then - enableval=$enable_cond_regexp; opt_cond_regexp=$enableval -fi - -# Check whether --enable-debugger was given. + enableval="$enable_cond_regexp" + opt_cond_regexp=$enableval +fi; +# Check whether --enable-debugger or --disable-debugger was given. if test "${enable_debugger+set}" = set; then - enableval=$enable_debugger; opt_debugger=$enableval -fi - -# Check whether --enable-directory-stack was given. + enableval="$enable_debugger" + opt_debugger=$enableval +fi; +# Check whether --enable-directory-stack or --disable-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. + enableval="$enable_directory_stack" + opt_dirstack=$enableval +fi; +# Check whether --enable-disabled-builtins or --disable-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. + enableval="$enable_disabled_builtins" + opt_disabled_builtins=$enableval +fi; +# Check whether --enable-dparen-arithmetic or --disable-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. + enableval="$enable_dparen_arithmetic" + opt_dparen_arith=$enableval +fi; +# Check whether --enable-extended-glob or --disable-extended-glob was given. if test "${enable_extended_glob+set}" = set; then - enableval=$enable_extended_glob; opt_extended_glob=$enableval -fi - -# Check whether --enable-help-builtin was given. + enableval="$enable_extended_glob" + opt_extended_glob=$enableval +fi; +# Check whether --enable-help-builtin or --disable-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. + enableval="$enable_help_builtin" + opt_help=$enableval +fi; +# Check whether --enable-history or --disable-history was given. if test "${enable_history+set}" = set; then - enableval=$enable_history; opt_history=$enableval -fi - -# Check whether --enable-job-control was given. + enableval="$enable_history" + opt_history=$enableval +fi; +# Check whether --enable-job-control or --disable-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. + enableval="$enable_job_control" + opt_job_control=$enableval +fi; +# Check whether --enable-multibyte or --disable-multibyte was given. if test "${enable_multibyte+set}" = set; then - enableval=$enable_multibyte; opt_multibyte=$enableval -fi - -# Check whether --enable-net-redirections was given. + enableval="$enable_multibyte" + opt_multibyte=$enableval +fi; +# Check whether --enable-net-redirections or --disable-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. + enableval="$enable_net_redirections" + opt_net_redirs=$enableval +fi; +# Check whether --enable-process-substitution or --disable-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. + enableval="$enable_process_substitution" + opt_process_subst=$enableval +fi; +# Check whether --enable-progcomp or --disable-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. + enableval="$enable_progcomp" + opt_progcomp=$enableval +fi; +# Check whether --enable-prompt-string-decoding or --disable-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. + enableval="$enable_prompt_string_decoding" + opt_prompt_decoding=$enableval +fi; +# Check whether --enable-readline or --disable-readline was given. if test "${enable_readline+set}" = set; then - enableval=$enable_readline; opt_readline=$enableval -fi - -# Check whether --enable-restricted was given. + enableval="$enable_readline" + opt_readline=$enableval +fi; +# Check whether --enable-restricted or --disable-restricted was given. if test "${enable_restricted+set}" = set; then - enableval=$enable_restricted; opt_restricted=$enableval -fi - -# Check whether --enable-select was given. + enableval="$enable_restricted" + opt_restricted=$enableval +fi; +# Check whether --enable-select or --disable-select was given. if test "${enable_select+set}" = set; then - enableval=$enable_select; opt_select=$enableval -fi - -# Check whether --enable-separate-helpfiles was given. + enableval="$enable_select" + opt_select=$enableval +fi; +# Check whether --enable-separate-helpfiles or --disable-separate-helpfiles was given. if test "${enable_separate_helpfiles+set}" = set; then - enableval=$enable_separate_helpfiles; opt_separate_help=$enableval -fi - -# Check whether --enable-single-help-strings was given. + enableval="$enable_separate_helpfiles" + opt_separate_help=$enableval +fi; +# Check whether --enable-single-help-strings or --disable-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. + enableval="$enable_single_help_strings" + opt_single_longdoc_strings=$enableval +fi; +# Check whether --enable-strict-posix-default or --disable-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. + enableval="$enable_strict_posix_default" + opt_strict_posix=$enableval +fi; +# Check whether --enable-usg-echo-default or --disable-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. + enableval="$enable_usg_echo_default" + opt_xpg_echo=$enableval +fi; +# Check whether --enable-xpg-echo-default or --disable-xpg-echo-default was given. if test "${enable_xpg_echo_default+set}" = set; then - enableval=$enable_xpg_echo_default; opt_xpg_echo=$enableval -fi + enableval="$enable_xpg_echo_default" + opt_xpg_echo=$enableval +fi; - -# Check whether --enable-mem-scramble was given. +# Check whether --enable-mem-scramble or --disable-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. + enableval="$enable_mem_scramble" + opt_memscramble=$enableval +fi; +# Check whether --enable-profiling or --disable-profiling was given. if test "${enable_profiling+set}" = set; then - enableval=$enable_profiling; opt_profiling=$enableval -fi - -# Check whether --enable-static-link was given. + enableval="$enable_profiling" + opt_profiling=$enableval +fi; +# Check whether --enable-static-link or --disable-static-link was given. if test "${enable_static_link+set}" = set; then - enableval=$enable_static_link; opt_static_link=$enableval -fi - + enableval="$enable_static_link" + opt_static_link=$enableval +fi; @@ -2610,8 +2101,8 @@ 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 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2624,34 +2115,32 @@ 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - fi 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 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2664,51 +2153,36 @@ 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6; } + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi + CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi 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. + 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 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2721,34 +2195,74 @@ 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + 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 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2762,7 +2276,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_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 @@ -2773,7 +2287,6 @@ do fi done done -IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. @@ -2791,23 +2304,22 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe + for ac_prog in cl 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 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2820,38 +2332,36 @@ 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC - for ac_prog in cl.exe + for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2864,45 +2374,29 @@ 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6; } + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - test -n "$ac_ct_CC" && break done - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi + CC=$ac_ct_CC fi fi @@ -2915,35 +2409,21 @@ See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. -echo "$as_me:$LINENO: checking for C compiler version" >&5 +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` -{ (ac_try="$ac_compiler --version >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler --version >&5") 2>&5 +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -v >&5") 2>&5 +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -V >&5") 2>&5 +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } @@ -2968,70 +2448,46 @@ ac_clean_files="$ac_clean_files a.out 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. -{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -# -# List of possible output files, starting from the most likely. -# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) -# only as a last resort. b.out is created by i960 compilers. -ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' -# -# The IRIX 6 linker writes into existing files which may not be -# executable, retaining their permissions. Remove them first so a -# subsequent execution test works. -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { (ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link_default") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; 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, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext break;; * ) break;; esac done -test "$ac_cv_exeext" = no && ac_cv_exeext= - else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 @@ -3044,23 +2500,19 @@ See \`config.log' for more details." >&2;} fi ac_exeext=$ac_cv_exeext -{ echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6; } +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 -# Check that the compiler produces executables we can run. If not, either +# Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&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 - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3079,27 +2531,22 @@ See \`config.log' for more details." >&2;} fi fi fi -{ echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 rm -f a.out 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 +# Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } -{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6; } - -{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then @@ -3110,8 +2557,9 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext break;; * ) break;; esac @@ -3125,14 +2573,14 @@ See \`config.log' for more details." >&2;} fi rm -f conftest$ac_cv_exeext -{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT -{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3152,20 +2600,14 @@ main () } _ACEOF rm -f conftest.o conftest.obj -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac @@ -3183,12 +2625,12 @@ fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3211,36 +2653,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3249,28 +2679,24 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS -{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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 + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -3286,36 +2712,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3324,278 +2738,285 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - CFLAGS="" - cat >conftest.$ac_ext <<_ACEOF +ac_cv_prog_cc_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ - -int -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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +#include +#include +#include +#include +/* 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); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std1 is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std1. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - : + ac_cv_prog_cc_stdc=$ac_arg +break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF +fi +rm -f conftest.err conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +@%:@ifndef __cplusplus + choke me +@%:@endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ - +$ac_declaration +@%:@include int main () { - +exit (42); ; 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_prog_cc_g=yes + : else 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 -{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi +continue fi -{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 -echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } -if test "${ac_cv_prog_cc_c89+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF +rm -f 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 /* end confdefs.h. */ -#include -#include -#include -#include -/* 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); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; +$ac_declaration int main () { -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; +exit (42); ; return 0; } _ACEOF -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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_prog_cc_c89=$ac_arg + break else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done -rm -f conftest.$ac_ext -CC=$ac_save_CC - +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6; } ;; - xno) - { echo "$as_me:$LINENO: result: unsupported" >&5 -echo "${ECHO_T}unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; -esac +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -3605,8 +3026,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu - { echo "$as_me:$LINENO: checking for strerror in -lcposix" >&5 -echo $ECHO_N "checking for strerror in -lcposix... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for strerror in -lcposix" >&5 +echo $ECHO_N "checking for strerror in -lcposix... $ECHO_C" >&6 if test "${ac_cv_lib_cposix_strerror+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3619,52 +3040,40 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char strerror (); int main () { -return strerror (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3673,15 +3082,14 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_cposix_strerror" >&5 -echo "${ECHO_T}$ac_cv_lib_cposix_strerror" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_cposix_strerror" >&5 +echo "${ECHO_T}$ac_cv_lib_cposix_strerror" >&6 if test $ac_cv_lib_cposix_strerror = yes; then LIBS="$LIBS -lcposix" fi @@ -3693,8 +3101,8 @@ 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 -{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -3728,13 +3136,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -3759,10 +3162,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi - rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether nonexistent headers + # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -3772,13 +3174,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -3805,7 +3202,6 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_preproc_ok=: break fi - rm -f conftest.err conftest.$ac_ext done @@ -3823,8 +3219,8 @@ fi else ac_cv_prog_CPP=$CPP fi -{ echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6; } +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do @@ -3847,13 +3243,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -3878,10 +3269,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi - rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether nonexistent headers + # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -3891,13 +3281,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -3924,7 +3309,6 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_preproc_ok=: break fi - rm -f conftest.err conftest.$ac_ext done @@ -3947,170 +3331,23 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 -echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } -if test "${ac_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Extract the first word of "grep ggrep" to use in msg output -if test -z "$GREP"; then -set dummy grep ggrep; ac_prog_name=$2 -if test "${ac_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_path_GREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -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_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_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 -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - 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` - 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" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - - $ac_path_GREP_found && break 3 - done -done - -done -IFS=$as_save_IFS - - -fi - -GREP="$ac_cv_path_GREP" -if test -z "$GREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } -fi - -else - ac_cv_path_GREP=$GREP -fi - - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 -echo "${ECHO_T}$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } -if test "${ac_cv_path_EGREP+set}" = set; then +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - # Extract the first word of "egrep" to use in msg output -if test -z "$EGREP"; then -set dummy egrep; ac_prog_name=$2 -if test "${ac_cv_path_EGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_path_EGREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -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_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_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 -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - 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` - 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" - ac_path_EGREP_max=$ac_count + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - - $ac_path_EGREP_found && break 3 - done -done - -done -IFS=$as_save_IFS - - -fi - -EGREP="$ac_cv_path_EGREP" -if test -z "$EGREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } -fi - -else - ac_cv_path_EGREP=$EGREP -fi - - - fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 -echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep -{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4134,36 +3371,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4172,10 +3397,9 @@ else 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 +rm -f 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. @@ -4231,7 +3455,6 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include -#include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) @@ -4251,27 +3474,18 @@ main () for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) - return 2; - return 0; + exit(2); + 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4284,14 +3498,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @@ -4314,9 +3526,9 @@ 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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -4330,36 +3542,24 @@ $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4368,14 +3568,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_Header=no" +eval "$as_ac_Header=no" fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 @@ -4387,17 +3585,17 @@ done if test "${ac_cv_header_minix_config_h+set}" = set; then - { echo "$as_me:$LINENO: checking for minix/config.h" >&5 -echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for minix/config.h" >&5 +echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6 if test "${ac_cv_header_minix_config_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 -echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 +echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking minix/config.h usability" >&5 -echo $ECHO_N "checking minix/config.h usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking minix/config.h usability" >&5 +echo $ECHO_N "checking minix/config.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -4408,36 +3606,24 @@ $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4446,16 +3632,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking minix/config.h presence" >&5 -echo $ECHO_N "checking minix/config.h presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking minix/config.h presence" >&5 +echo $ECHO_N "checking minix/config.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -4464,13 +3649,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -4494,10 +3674,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -4521,23 +3700,25 @@ echo "$as_me: WARNING: minix/config.h: section \"Present But Cannot Be Compi echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: minix/config.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: minix/config.h: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX @%:@@%:@ ------------------------------- @%:@@%:@ @%:@@%:@ Report this to bug-bash@gnu.org @%:@@%:@ @%:@@%:@ ------------------------------- @%:@@%:@ _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for minix/config.h" >&5 -echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for minix/config.h" >&5 +echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6 if test "${ac_cv_header_minix_config_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_minix_config_h=$ac_header_preproc fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 -echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 +echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6 fi if test $ac_cv_header_minix_config_h = yes; then @@ -4566,15 +3747,15 @@ _ACEOF fi -# Check whether --enable-largefile was given. +# Check whether --enable-largefile or --disable-largefile was given. if test "${enable_largefile+set}" = set; then - enableval=$enable_largefile; -fi - + enableval="$enable_largefile" + +fi; if test "$enable_largefile" != no; then - { echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5 -echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5 +echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6 if test "${ac_cv_sys_largefile_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4582,8 +3763,8 @@ else if test "$GCC" != yes; then ac_save_CC=$CC 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. + # 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 @@ -4607,37 +3788,25 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4646,42 +3815,28 @@ else 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +rm -f conftest.err conftest.$ac_objext + CC="$CC -n32" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4690,24 +3845,22 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - fi - -rm -f core conftest.err conftest.$ac_objext +rm -f conftest.err conftest.$ac_objext break done CC=$ac_save_CC rm -f conftest.$ac_ext fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5 -echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5 +echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6 if test "$ac_cv_sys_largefile_CC" != no; then CC=$CC$ac_cv_sys_largefile_CC fi - { echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5 -echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6 if test "${ac_cv_sys_file_offset_bits+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4737,36 +3890,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4775,10 +3916,8 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -4804,36 +3943,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4842,15 +3969,13 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext break done fi -{ echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5 -echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5 +echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6 if test "$ac_cv_sys_file_offset_bits" != no; then cat >>confdefs.h <<_ACEOF @@ -4859,8 +3984,8 @@ _ACEOF fi rm -f conftest* - { echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5 -echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5 +echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6 if test "${ac_cv_sys_large_files+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4890,36 +4015,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4928,10 +4041,8 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -4957,36 +4068,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4995,15 +4094,13 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext break done fi -{ echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5 -echo "${ECHO_T}$ac_cv_sys_large_files" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5 +echo "${ECHO_T}$ac_cv_sys_large_files" >&6 if test "$ac_cv_sys_large_files" != no; then cat >>confdefs.h <<_ACEOF @@ -5021,7 +4118,6 @@ SIGNAMES_H=lsignames.h -CROSS_COMPILE= if test "x$cross_compiling" = "xyes"; then case "${host}" in *-cygwin*) @@ -5102,8 +4198,8 @@ test -z "$CFLAGS_FOR_BUILD" && CFLAGS_FOR_BUILD="-g" if test $ac_cv_c_compiler_gnu = yes; then - { echo "$as_me:$LINENO: checking whether $CC needs -traditional" >&5 -echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking whether $CC needs -traditional" >&5 +echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6 if test "${ac_cv_prog_gcc_traditional+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5144,8 +4240,8 @@ rm -f conftest* fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_prog_gcc_traditional" >&5 -echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_prog_gcc_traditional" >&5 +echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6 if test $ac_cv_prog_gcc_traditional = yes; then CC="$CC -traditional" fi @@ -5163,15 +4259,15 @@ then if test "X$bash_cv_termcap_lib" = "X"; then _bash_needmsg=yes else -{ echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 -echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 _bash_needmsg= fi if test "${bash_cv_termcap_lib+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - { echo "$as_me:$LINENO: checking for tgetent" >&5 -echo $ECHO_N "checking for tgetent... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for tgetent" >&5 +echo $ECHO_N "checking for tgetent... $ECHO_C" >&6 if test "${ac_cv_func_tgetent+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5198,59 +4294,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_tgetent) || defined (__stub___tgetent) choke me +#else +char (*f) () = tgetent; +#endif +#ifdef __cplusplus +} #endif int main () { -return tgetent (); +return f != 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -5259,19 +4349,18 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func_tgetent=no +ac_cv_func_tgetent=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_tgetent" >&5 -echo "${ECHO_T}$ac_cv_func_tgetent" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func_tgetent" >&5 +echo "${ECHO_T}$ac_cv_func_tgetent" >&6 if test $ac_cv_func_tgetent = yes; then bash_cv_termcap_lib=libc else - { echo "$as_me:$LINENO: checking for tgetent in -ltermcap" >&5 -echo $ECHO_N "checking for tgetent in -ltermcap... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for tgetent in -ltermcap" >&5 +echo $ECHO_N "checking for tgetent in -ltermcap... $ECHO_C" >&6 if test "${ac_cv_lib_termcap_tgetent+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5284,52 +4373,40 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char tgetent (); int main () { -return tgetent (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -5338,20 +4415,19 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_termcap_tgetent" >&5 -echo "${ECHO_T}$ac_cv_lib_termcap_tgetent" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_termcap_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_termcap_tgetent" >&6 if test $ac_cv_lib_termcap_tgetent = yes; then bash_cv_termcap_lib=libtermcap else - { echo "$as_me:$LINENO: checking for tgetent in -ltinfo" >&5 -echo $ECHO_N "checking for tgetent in -ltinfo... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for tgetent in -ltinfo" >&5 +echo $ECHO_N "checking for tgetent in -ltinfo... $ECHO_C" >&6 if test "${ac_cv_lib_tinfo_tgetent+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5364,52 +4440,40 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char tgetent (); int main () { -return tgetent (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -5418,20 +4482,19 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_tinfo_tgetent" >&5 -echo "${ECHO_T}$ac_cv_lib_tinfo_tgetent" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_tinfo_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_tinfo_tgetent" >&6 if test $ac_cv_lib_tinfo_tgetent = yes; then bash_cv_termcap_lib=libtinfo else - { echo "$as_me:$LINENO: checking for tgetent in -lcurses" >&5 -echo $ECHO_N "checking for tgetent in -lcurses... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for tgetent in -lcurses" >&5 +echo $ECHO_N "checking for tgetent in -lcurses... $ECHO_C" >&6 if test "${ac_cv_lib_curses_tgetent+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5444,52 +4507,40 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char tgetent (); int main () { -return tgetent (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -5498,20 +4549,19 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_curses_tgetent" >&5 -echo "${ECHO_T}$ac_cv_lib_curses_tgetent" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_curses_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_curses_tgetent" >&6 if test $ac_cv_lib_curses_tgetent = yes; then bash_cv_termcap_lib=libcurses else - { echo "$as_me:$LINENO: checking for tgetent in -lncurses" >&5 -echo $ECHO_N "checking for tgetent in -lncurses... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for tgetent in -lncurses" >&5 +echo $ECHO_N "checking for tgetent in -lncurses... $ECHO_C" >&6 if test "${ac_cv_lib_ncurses_tgetent+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5524,52 +4574,40 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char tgetent (); int main () { -return tgetent (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -5578,15 +4616,14 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_ncurses_tgetent" >&5 -echo "${ECHO_T}$ac_cv_lib_ncurses_tgetent" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_ncurses_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_ncurses_tgetent" >&6 if test $ac_cv_lib_ncurses_tgetent = yes; then bash_cv_termcap_lib=libncurses else @@ -5604,11 +4641,11 @@ fi fi if test "X$_bash_needmsg" = "Xyes"; then -{ echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 -echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 fi -{ echo "$as_me:$LINENO: result: using $bash_cv_termcap_lib" >&5 -echo "${ECHO_T}using $bash_cv_termcap_lib" >&6; } +echo "$as_me:$LINENO: result: using $bash_cv_termcap_lib" >&5 +echo "${ECHO_T}using $bash_cv_termcap_lib" >&6 if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then LDFLAGS="$LDFLAGS -L./lib/termcap" TERMCAP_LIB="./lib/termcap/libtermcap.a" @@ -5633,8 +4670,8 @@ fi -{ echo "$as_me:$LINENO: checking version of installed readline library" >&5 -echo $ECHO_N "checking version of installed readline library... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking version of installed readline library" >&5 +echo $ECHO_N "checking version of installed readline library... $ECHO_C" >&6 # What a pain in the ass this is. @@ -5692,22 +4729,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -5720,10 +4748,8 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_rl_version='0.0' fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi @@ -5768,8 +4794,8 @@ elif test $RL_MAJOR -gt 4 || { test $RL_MAJOR = 4 && test $RL_MINOR -gt 2 ; } ; RL_PREFIX=$ac_cv_rl_prefix RL_LIBDIR=$ac_cv_rl_libdir RL_INCLUDEDIR=$ac_cv_rl_includedir - { echo "$as_me:$LINENO: result: $ac_cv_rl_version" >&5 -echo "${ECHO_T}$ac_cv_rl_version" >&6; } + echo "$as_me:$LINENO: result: $ac_cv_rl_version" >&5 +echo "${ECHO_T}$ac_cv_rl_version" >&6 else @@ -5797,8 +4823,8 @@ RL_PREFIX=$ac_cv_rl_prefix RL_LIBDIR=$ac_cv_rl_libdir RL_INCLUDEDIR=$ac_cv_rl_includedir -{ echo "$as_me:$LINENO: result: $ac_cv_rl_version" >&5 -echo "${ECHO_T}$ac_cv_rl_version" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_rl_version" >&5 +echo "${ECHO_T}$ac_cv_rl_version" >&6 fi @@ -5917,8 +4943,8 @@ fi # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. -{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -5940,7 +4966,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_executable_p "$as_dir/$ac_prog$ac_exec_ext"; }; then + if $as_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. @@ -5959,22 +4985,21 @@ case $as_dir/ in ;; esac done -IFS=$as_save_IFS fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is - # removed, or if the value is a relative name. + # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi -{ echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6; } +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. @@ -5986,8 +5011,8 @@ 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 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6000,34 +5025,32 @@ 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi 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 - { echo "$as_me:$LINENO: result: $AR" >&5 -echo "${ECHO_T}$AR" >&6; } + echo "$as_me:$LINENO: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 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 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6040,34 +5063,32 @@ 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then - { echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6; } + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - fi 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 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6080,41 +5101,27 @@ 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then - { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6; } + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi + RANLIB=$ac_ct_RANLIB else RANLIB="$ac_cv_prog_RANLIB" fi @@ -6123,8 +5130,8 @@ 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 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_YACC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6137,58 +5144,55 @@ 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_YACC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi YACC=$ac_cv_prog_YACC if test -n "$YACC"; then - { echo "$as_me:$LINENO: result: $YACC" >&5 -echo "${ECHO_T}$YACC" >&6; } + echo "$as_me:$LINENO: result: $YACC" >&5 +echo "${ECHO_T}$YACC" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - test -n "$YACC" && break done test -n "$YACC" || YACC="yacc" -{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } -set x ${MAKE-make}; ac_make=`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 +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF -SHELL = /bin/sh all: - @echo '@@@%%%=$(MAKE)=@@@%%%' + @echo 'ac_maketemp="$(MAKE)"' _ACEOF # 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;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi rm -f conftest.make fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 SET_MAKE= else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 SET_MAKE="MAKE=${MAKE-make}" fi @@ -6225,8 +5229,8 @@ cat >>confdefs.h <<\_ACEOF _ACEOF -{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 -echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 if test "${ac_cv_c_const+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6266,7 +5270,6 @@ main () char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; - if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; @@ -6285,9 +5288,7 @@ main () } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; - if (!foo) return 0; } - return !x[0] && !zero.x; #endif ; @@ -6295,36 +5296,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -6333,13 +5322,12 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 -echo "${ECHO_T}$ac_cv_c_const" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +echo "${ECHO_T}$ac_cv_c_const" >&6 if test $ac_cv_c_const = no; then cat >>confdefs.h <<\_ACEOF @@ -6348,8 +5336,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for inline" >&5 -echo $ECHO_N "checking for inline... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for inline" >&5 +echo $ECHO_N "checking for inline... $ECHO_C" >&6 if test "${ac_cv_c_inline+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6369,54 +5357,39 @@ $ac_kw foo_t 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_c_inline=$ac_kw + ac_cv_c_inline=$ac_kw; break else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 -echo "${ECHO_T}$ac_cv_c_inline" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 +echo "${ECHO_T}$ac_cv_c_inline" >&6 case $ac_cv_c_inline in @@ -6434,8 +5407,8 @@ _ACEOF ;; esac -{ echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 -echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 +echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 if test "${ac_cv_c_bigendian+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6461,36 +5434,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -6516,36 +5477,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -6554,15 +5503,14 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - # It does not; compile a test program. +# It does not; compile a test program. if test "$cross_compiling" = yes; then # try to guess the endianness by grepping values into an object file ac_cv_c_bigendian=unknown @@ -6572,11 +5520,11 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; -short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; +short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; +short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } -short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; -short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; +short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; +short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } int main () @@ -6587,36 +5535,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -6635,10 +5571,8 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -6646,41 +5580,27 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_includes_default int main () { - /* Are we little or big endian? From Harbison&Steele. */ union { - long int l; - char c[sizeof (long int)]; + long l; + char c[sizeof (long)]; } u; u.l = 1; - return u.c[sizeof (long int) - 1] == 1; - - ; - return 0; + exit (u.c[sizeof (long) - 1] == 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -6693,16 +5613,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_c_bigendian=yes fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 -echo "${ECHO_T}$ac_cv_c_bigendian" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 +echo "${ECHO_T}$ac_cv_c_bigendian" >&6 case $ac_cv_c_bigendian in yes) @@ -6720,8 +5637,8 @@ presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} { (exit 1); exit 1; }; } ;; esac -{ echo "$as_me:$LINENO: checking for preprocessor stringizing operator" >&5 -echo $ECHO_N "checking for preprocessor stringizing operator... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for preprocessor stringizing operator" >&5 +echo $ECHO_N "checking for preprocessor stringizing operator... $ECHO_C" >&6 if test "${ac_cv_c_stringize+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6744,8 +5661,8 @@ fi rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_stringize" >&5 -echo "${ECHO_T}$ac_cv_c_stringize" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_c_stringize" >&5 +echo "${ECHO_T}$ac_cv_c_stringize" >&6 if test $ac_cv_c_stringize = yes; then cat >>confdefs.h <<\_ACEOF @@ -6754,11 +5671,9 @@ _ACEOF fi - - - { echo "$as_me:$LINENO: checking for long double with more range or precision than double" >&5 -echo $ECHO_N "checking for long double with more range or precision than double... $ECHO_C" >&6; } -if test "${ac_cv_type_long_double_wider+set}" = set; then +echo "$as_me:$LINENO: checking for working long double with more range or precision than double" >&5 +echo $ECHO_N "checking for working long double with more range or precision than double... $ECHO_C" >&6 +if test "${ac_cv_c_long_double+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -6768,27 +5683,13 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include - long double const a[] = - { - 0.0L, DBL_MIN, DBL_MAX, DBL_EPSILON, - LDBL_MIN, LDBL_MAX, LDBL_EPSILON - }; - long double - f (long double x) - { - return ((x + (unsigned long int) 10) * (-1 / x) + a[0] - + (x ? f (x) : 'c')); - } - + long double foo = 0.0; int main () { -static int test_array @<:@1 - 2 * !((0 < ((DBL_MAX_EXP < LDBL_MAX_EXP) - + (DBL_MANT_DIG < LDBL_MANT_DIG) - - (LDBL_MAX_EXP < DBL_MAX_EXP) - - (LDBL_MANT_DIG < DBL_MANT_DIG))) - && (int) LDBL_EPSILON == 0 - )@:>@; +static int test_array @<:@1 - 2 * !(/* Using '|' rather than '||' catches a GCC 2.95.2 x86 bug. */ + (DBL_MAX < LDBL_MAX) | (LDBL_EPSILON < DBL_EPSILON) + | (DBL_MAX_EXP < LDBL_MAX_EXP) | (DBL_MANT_DIG < LDBL_MANT_DIG))@:>@; test_array @<:@0@:>@ = 0 ; @@ -6796,73 +5697,51 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_type_long_double_wider=yes + ac_cv_c_long_double=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_long_double_wider=no +ac_cv_c_long_double=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_long_double_wider" >&5 -echo "${ECHO_T}$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 - - fi - - ac_cv_c_long_double=$ac_cv_type_long_double_wider - if test $ac_cv_c_long_double = yes; then - +echo "$as_me:$LINENO: result: $ac_cv_c_long_double" >&5 +echo "${ECHO_T}$ac_cv_c_long_double" >&6 +if test $ac_cv_c_long_double = yes; then + cat >>confdefs.h <<\_ACEOF @%:@define HAVE_LONG_DOUBLE 1 _ACEOF - fi - -{ echo "$as_me:$LINENO: checking for function prototypes" >&5 -echo $ECHO_N "checking for function prototypes... $ECHO_C" >&6; } -if test "$ac_cv_prog_cc_c89" != no; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } +fi + +echo "$as_me:$LINENO: checking for function prototypes" >&5 +echo $ECHO_N "checking for function prototypes... $ECHO_C" >&6 +if test "$ac_cv_prog_cc_stdc" != no; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 cat >>confdefs.h <<\_ACEOF @%:@define PROTOTYPES 1 @@ -6874,13 +5753,13 @@ cat >>confdefs.h <<\_ACEOF _ACEOF else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi -{ echo "$as_me:$LINENO: checking whether char is unsigned" >&5 -echo $ECHO_N "checking whether char is unsigned... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether char is unsigned" >&5 +echo $ECHO_N "checking whether char is unsigned... $ECHO_C" >&6 if test "${ac_cv_c_char_unsigned+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6902,36 +5781,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -6940,13 +5807,12 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_char_unsigned" >&5 -echo "${ECHO_T}$ac_cv_c_char_unsigned" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_c_char_unsigned" >&5 +echo "${ECHO_T}$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 @@ -6969,17 +5835,17 @@ fi - { echo "$as_me:$LINENO: checking whether NLS is requested" >&5 -echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6; } - # Check whether --enable-nls was given. + echo "$as_me:$LINENO: checking whether NLS is requested" >&5 +echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 + # Check whether --enable-nls or --disable-nls was given. if test "${enable_nls+set}" = set; then - enableval=$enable_nls; USE_NLS=$enableval + enableval="$enable_nls" + USE_NLS=$enableval else USE_NLS=yes -fi - - { echo "$as_me:$LINENO: result: $USE_NLS" >&5 -echo "${ECHO_T}$USE_NLS" >&6; } +fi; + echo "$as_me:$LINENO: result: $USE_NLS" >&5 +echo "${ECHO_T}$USE_NLS" >&6 @@ -7016,8 +5882,8 @@ 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 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_MSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7047,17 +5913,17 @@ esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then - { echo "$as_me:$LINENO: result: $MSGFMT" >&5 -echo "${ECHO_T}$MSGFMT" >&6; } + echo "$as_me:$LINENO: result: $MSGFMT" >&5 +echo "${ECHO_T}$MSGFMT" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_GMSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7072,30 +5938,29 @@ 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT + if test -n "$GMSGFMT"; then - { echo "$as_me:$LINENO: result: $GMSGFMT" >&5 -echo "${ECHO_T}$GMSGFMT" >&6; } + echo "$as_me:$LINENO: result: $GMSGFMT" >&5 +echo "${ECHO_T}$GMSGFMT" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - # Prepare PATH_SEPARATOR. # The user is always right. @@ -7127,8 +5992,8 @@ 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 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_XGETTEXT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7158,11 +6023,11 @@ esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then - { echo "$as_me:$LINENO: result: $XGETTEXT" >&5 -echo "${ECHO_T}$XGETTEXT" >&6; } + echo "$as_me:$LINENO: result: $XGETTEXT" >&5 +echo "${ECHO_T}$XGETTEXT" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi rm -f messages.po @@ -7198,8 +6063,8 @@ 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 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_MSGMERGE+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7228,11 +6093,11 @@ esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then - { echo "$as_me:$LINENO: result: $MSGMERGE" >&5 -echo "${ECHO_T}$MSGMERGE" >&6; } + echo "$as_me:$LINENO: result: $MSGMERGE" >&5 +echo "${ECHO_T}$MSGMERGE" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi @@ -7242,8 +6107,8 @@ fi : ; else GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` - { echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 -echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6; } + echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 +echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6 GMSGFMT=":" fi fi @@ -7253,18 +6118,18 @@ echo "${ECHO_T}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 - { echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 -echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6; } + echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 +echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 XGETTEXT=":" fi rm -f messages.po fi - ac_config_commands="$ac_config_commands default-1" + ac_config_commands="$ac_config_commands default-1" -{ echo "$as_me:$LINENO: checking for off_t" >&5 -echo $ECHO_N "checking for off_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for off_t" >&5 +echo $ECHO_N "checking for off_t... $ECHO_C" >&6 if test "${ac_cv_type_off_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7275,49 +6140,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef off_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((off_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -7326,25 +6178,24 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_off_t=no +ac_cv_type_off_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 -echo "${ECHO_T}$ac_cv_type_off_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 +echo "${ECHO_T}$ac_cv_type_off_t" >&6 if test $ac_cv_type_off_t = yes; then : else cat >>confdefs.h <<_ACEOF -@%:@define off_t long int +@%:@define off_t long _ACEOF fi -{ echo "$as_me:$LINENO: checking for size_t" >&5 -echo $ECHO_N "checking for size_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for size_t" >&5 +echo $ECHO_N "checking for size_t... $ECHO_C" >&6 if test "${ac_cv_type_size_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7355,49 +6206,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef size_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((size_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -7406,27 +6244,26 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_size_t=no +ac_cv_type_size_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 -echo "${ECHO_T}$ac_cv_type_size_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +echo "${ECHO_T}$ac_cv_type_size_t" >&6 if test $ac_cv_type_size_t = yes; then : else cat >>confdefs.h <<_ACEOF -@%:@define size_t unsigned int +@%:@define size_t unsigned _ACEOF fi # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! -{ echo "$as_me:$LINENO: checking for working alloca.h" >&5 -echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for working alloca.h" >&5 +echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 if test "${ac_cv_working_alloca_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7441,42 +6278,29 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -7485,14 +6309,13 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 -echo "${ECHO_T}$ac_cv_working_alloca_h" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 if test $ac_cv_working_alloca_h = yes; then cat >>confdefs.h <<\_ACEOF @@ -7501,8 +6324,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for alloca" >&5 -echo $ECHO_N "checking for alloca... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for alloca" >&5 +echo $ECHO_N "checking for alloca... $ECHO_C" >&6 if test "${ac_cv_func_alloca_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7537,42 +6360,29 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -7581,14 +6391,13 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 -echo "${ECHO_T}$ac_cv_func_alloca_works" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 if test $ac_cv_func_alloca_works = yes; then @@ -7602,15 +6411,15 @@ else # 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 +ALLOCA=alloca.$ac_objext cat >>confdefs.h <<\_ACEOF @%:@define C_ALLOCA 1 _ACEOF -{ echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 -echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 if test "${ac_cv_os_cray+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7620,7 +6429,7 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#if defined CRAY && ! defined CRAY2 +#if defined(CRAY) && ! defined(CRAY2) webecray #else wenotbecray @@ -7636,14 +6445,14 @@ fi rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 -echo "${ECHO_T}$ac_cv_os_cray" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +echo "${ECHO_T}$ac_cv_os_cray" >&6 if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -7669,59 +6478,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -7730,15 +6533,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @@ -7751,8 +6552,8 @@ fi done fi -{ echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 -echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 if test "${ac_cv_c_stack_direction+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7765,7 +6566,6 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_includes_default int find_stack_direction () { @@ -7783,26 +6583,17 @@ find_stack_direction () int main () { - return find_stack_direction () < 0; + exit (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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -7815,13 +6606,11 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_c_stack_direction=-1 fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 -echo "${ECHO_T}$ac_cv_c_stack_direction" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 cat >>confdefs.h <<_ACEOF @%:@define STACK_DIRECTION $ac_cv_c_stack_direction @@ -7835,19 +6624,18 @@ fi for ac_header in stdlib.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -7858,36 +6646,24 @@ $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -7896,16 +6672,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -7914,13 +6689,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -7944,10 +6714,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -7971,24 +6740,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX @%:@@%:@ ------------------------------- @%:@@%:@ @%:@@%:@ Report this to bug-bash@gnu.org @%:@@%:@ @%:@@%:@ ------------------------------- @%:@@%:@ _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -8004,9 +6774,9 @@ done for ac_func in getpagesize do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -8032,59 +6802,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -8093,15 +6857,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -8110,8 +6872,8 @@ _ACEOF fi done -{ echo "$as_me:$LINENO: checking for working mmap" >&5 -echo $ECHO_N "checking for working mmap... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for working mmap" >&5 +echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8206,15 +6968,15 @@ main () /* First, make a file with some known garbage in it. */ data = (char *) malloc (pagesize); if (!data) - return 1; + exit (1); for (i = 0; i < pagesize; ++i) *(data + i) = rand (); umask (0); fd = creat ("conftest.mmap", 0600); if (fd < 0) - return 1; + exit (1); if (write (fd, data, pagesize) != pagesize) - return 1; + exit (1); close (fd); /* Next, try to mmap the file at a fixed address which already has @@ -8222,17 +6984,17 @@ main () we see the same garbage. */ fd = open ("conftest.mmap", O_RDWR); if (fd < 0) - return 1; + exit (1); data2 = (char *) malloc (2 * pagesize); if (!data2) - return 1; - data2 += (pagesize - ((long int) data2 & (pagesize - 1))) & (pagesize - 1); + exit (1); + data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1); if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FIXED, fd, 0L)) - return 1; + exit (1); for (i = 0; i < pagesize; ++i) if (*(data + i) != *(data2 + i)) - return 1; + exit (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 @@ -8241,33 +7003,24 @@ main () *(data2 + i) = *(data2 + i) + 1; data3 = (char *) malloc (pagesize); if (!data3) - return 1; + exit (1); if (read (fd, data3, pagesize) != pagesize) - return 1; + exit (1); for (i = 0; i < pagesize; ++i) if (*(data + i) != *(data3 + i)) - return 1; + exit (1); close (fd); - return 0; + 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -8280,13 +7033,11 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_mmap_fixed_mapped=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 -echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 +echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6 if test $ac_cv_func_mmap_fixed_mapped = yes; then cat >>confdefs.h <<\_ACEOF @@ -8297,8 +7048,8 @@ fi rm -f conftest.mmap - { echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5 -echo $ECHO_N "checking whether we are using the GNU C Library 2.1 or newer... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5 +echo $ECHO_N "checking whether we are using the GNU C Library 2.1 or newer... $ECHO_C" >&6 if test "${ac_cv_gnu_library_2_1+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8328,16 +7079,16 @@ rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2_1" >&5 -echo "${ECHO_T}$ac_cv_gnu_library_2_1" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2_1" >&5 +echo "${ECHO_T}$ac_cv_gnu_library_2_1" >&6 GLIBC21="$ac_cv_gnu_library_2_1" - { echo "$as_me:$LINENO: checking whether integer division by zero raises SIGFPE" >&5 -echo $ECHO_N "checking whether integer division by zero raises SIGFPE... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking whether integer division by zero raises SIGFPE" >&5 +echo $ECHO_N "checking whether integer division by zero raises SIGFPE... $ECHO_C" >&6 if test "${gt_cv_int_divbyzero_sigfpe+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8398,22 +7149,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -8426,14 +7168,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) gt_cv_int_divbyzero_sigfpe=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $gt_cv_int_divbyzero_sigfpe" >&5 -echo "${ECHO_T}$gt_cv_int_divbyzero_sigfpe" >&6; } +echo "$as_me:$LINENO: result: $gt_cv_int_divbyzero_sigfpe" >&5 +echo "${ECHO_T}$gt_cv_int_divbyzero_sigfpe" >&6 case "$gt_cv_int_divbyzero_sigfpe" in *yes) value=1;; *) value=0;; @@ -8445,8 +7185,8 @@ _ACEOF - { echo "$as_me:$LINENO: checking for inttypes.h" >&5 -echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for inttypes.h" >&5 +echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 if test "${jm_ac_cv_header_inttypes_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8467,36 +7207,24 @@ uintmax_t i = (uintmax_t) -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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -8505,13 +7233,12 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $jm_ac_cv_header_inttypes_h" >&5 -echo "${ECHO_T}$jm_ac_cv_header_inttypes_h" >&6; } +echo "$as_me:$LINENO: result: $jm_ac_cv_header_inttypes_h" >&5 +echo "${ECHO_T}$jm_ac_cv_header_inttypes_h" >&6 if test $jm_ac_cv_header_inttypes_h = yes; then cat >>confdefs.h <<_ACEOF @@ -8521,8 +7248,8 @@ _ACEOF fi - { echo "$as_me:$LINENO: checking for stdint.h" >&5 -echo $ECHO_N "checking for stdint.h... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for stdint.h" >&5 +echo $ECHO_N "checking for stdint.h... $ECHO_C" >&6 if test "${jm_ac_cv_header_stdint_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8543,36 +7270,24 @@ uintmax_t i = (uintmax_t) -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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -8581,13 +7296,12 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $jm_ac_cv_header_stdint_h" >&5 -echo "${ECHO_T}$jm_ac_cv_header_stdint_h" >&6; } +echo "$as_me:$LINENO: result: $jm_ac_cv_header_stdint_h" >&5 +echo "${ECHO_T}$jm_ac_cv_header_stdint_h" >&6 if test $jm_ac_cv_header_stdint_h = yes; then cat >>confdefs.h <<_ACEOF @@ -8597,8 +7311,8 @@ _ACEOF fi - { echo "$as_me:$LINENO: checking for unsigned long long" >&5 -echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for unsigned long long" >&5 +echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6 if test "${ac_cv_type_unsigned_long_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8619,36 +7333,24 @@ unsigned long long ullmax = (unsigned long long) -1; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -8657,14 +7359,13 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long" >&5 -echo "${ECHO_T}$ac_cv_type_unsigned_long_long" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long" >&5 +echo "${ECHO_T}$ac_cv_type_unsigned_long_long" >&6 if test $ac_cv_type_unsigned_long_long = yes; then cat >>confdefs.h <<\_ACEOF @@ -8695,8 +7396,8 @@ _ACEOF fi - { echo "$as_me:$LINENO: checking for inttypes.h" >&5 -echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for inttypes.h" >&5 +echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 if test "${gt_cv_header_inttypes_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8718,36 +7419,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -8756,14 +7445,13 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $gt_cv_header_inttypes_h" >&5 -echo "${ECHO_T}$gt_cv_header_inttypes_h" >&6; } +echo "$as_me:$LINENO: result: $gt_cv_header_inttypes_h" >&5 +echo "${ECHO_T}$gt_cv_header_inttypes_h" >&6 if test $gt_cv_header_inttypes_h = yes; then cat >>confdefs.h <<_ACEOF @@ -8775,8 +7463,8 @@ _ACEOF if test $gt_cv_header_inttypes_h = yes; then - { echo "$as_me:$LINENO: checking whether the inttypes.h PRIxNN macros are broken" >&5 -echo $ECHO_N "checking whether the inttypes.h PRIxNN macros are broken... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking whether the inttypes.h PRIxNN macros are broken" >&5 +echo $ECHO_N "checking whether the inttypes.h PRIxNN macros are broken... $ECHO_C" >&6 if test "${gt_cv_inttypes_pri_broken+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8801,36 +7489,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -8839,14 +7515,13 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $gt_cv_inttypes_pri_broken" >&5 -echo "${ECHO_T}$gt_cv_inttypes_pri_broken" >&6; } +echo "$as_me:$LINENO: result: $gt_cv_inttypes_pri_broken" >&5 +echo "${ECHO_T}$gt_cv_inttypes_pri_broken" >&6 fi if test "$gt_cv_inttypes_pri_broken" = yes; then @@ -8873,13 +7548,13 @@ _ACEOF prefix="$acl_save_prefix" -# Check whether --with-gnu-ld was given. +# Check whether --with-gnu-ld or --without-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no -fi - +fi; # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then @@ -8896,8 +7571,8 @@ fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. - { echo "$as_me:$LINENO: checking for ld used by GCC" >&5 -echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for ld used by GCC" >&5 +echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw @@ -8926,11 +7601,11 @@ echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6; } ;; esac elif test "$with_gnu_ld" = yes; then - { echo "$as_me:$LINENO: checking for GNU ld" >&5 -echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 else - { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 -echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 fi if test "${acl_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -8959,17 +7634,17 @@ fi LD="$acl_cv_path_LD" if test -n "$LD"; then - { echo "$as_me:$LINENO: result: $LD" >&5 -echo "${ECHO_T}$LD" >&6; } + echo "$as_me:$LINENO: result: $LD" >&5 +echo "${ECHO_T}$LD" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } -{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 -echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 if test "${acl_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8980,14 +7655,14 @@ else acl_cv_prog_gnu_ld=no fi fi -{ echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5 -echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6; } +echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5 +echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6 with_gnu_ld=$acl_cv_prog_gnu_ld - { echo "$as_me:$LINENO: checking for shared library run path origin" >&5 -echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for shared library run path origin" >&5 +echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6 if test "${acl_cv_rpath+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8999,8 +7674,8 @@ else acl_cv_rpath=done fi -{ echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5 -echo "${ECHO_T}$acl_cv_rpath" >&6; } +echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5 +echo "${ECHO_T}$acl_cv_rpath" >&6 wl="$acl_cv_wl" libext="$acl_cv_libext" shlibext="$acl_cv_shlibext" @@ -9008,13 +7683,13 @@ echo "${ECHO_T}$acl_cv_rpath" >&6; } hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" hardcode_direct="$acl_cv_hardcode_direct" hardcode_minus_L="$acl_cv_hardcode_minus_L" - # Check whether --enable-rpath was given. + # Check whether --enable-rpath or --disable-rpath was given. if test "${enable_rpath+set}" = set; then - enableval=$enable_rpath; : + enableval="$enable_rpath" + : else enable_rpath=yes -fi - +fi; @@ -9036,9 +7711,10 @@ fi prefix="$acl_save_prefix" -# Check whether --with-libiconv-prefix was given. +# Check whether --with-libiconv-prefix or --without-libiconv-prefix was given. if test "${with_libiconv_prefix+set}" = set; then - withval=$with_libiconv_prefix; + withval="$with_libiconv_prefix" + if test "X$withval" = "Xno"; then use_additional=no else @@ -9061,8 +7737,7 @@ if test "${with_libiconv_prefix+set}" = set; then fi fi -fi - +fi; LIBICONV= LTLIBICONV= INCICONV= @@ -9415,19 +8090,18 @@ 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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -9438,36 +8112,24 @@ $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -9476,16 +8138,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -9494,13 +8155,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -9524,10 +8180,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -9551,24 +8206,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX @%:@@%:@ ------------------------------- @%:@@%:@ @%:@@%:@ Report this to bug-bash@gnu.org @%:@@%:@ @%:@@%:@ ------------------------------- @%:@@%:@ _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -9600,18 +8256,17 @@ done - for ac_func in feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ -geteuid getgid getuid mempcpy munmap putenv setenv setlocale localeconv stpcpy \ +geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next \ __fsetlocking do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -9637,59 +8292,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -9698,15 +8347,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -9746,8 +8393,8 @@ done done - { echo "$as_me:$LINENO: checking for iconv" >&5 -echo $ECHO_N "checking for iconv... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for iconv" >&5 +echo $ECHO_N "checking for iconv... $ECHO_C" >&6 if test "${am_cv_func_iconv+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -9773,36 +8420,24 @@ iconv_t cd = iconv_open("",""); } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -9811,10 +8446,8 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" @@ -9838,36 +8471,24 @@ iconv_t cd = iconv_open("",""); } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -9877,17 +8498,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi -{ echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 -echo "${ECHO_T}$am_cv_func_iconv" >&6; } +echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 +echo "${ECHO_T}$am_cv_func_iconv" >&6 if test "$am_cv_func_iconv" = yes; then cat >>confdefs.h <<\_ACEOF @@ -9896,10 +8515,10 @@ _ACEOF fi if test "$am_cv_lib_iconv" = yes; then - { echo "$as_me:$LINENO: checking how to link with libiconv" >&5 -echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6; } - { echo "$as_me:$LINENO: result: $LIBICONV" >&5 -echo "${ECHO_T}$LIBICONV" >&6; } + echo "$as_me:$LINENO: checking how to link with libiconv" >&5 +echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $LIBICONV" >&5 +echo "${ECHO_T}$LIBICONV" >&6 else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= @@ -9909,8 +8528,8 @@ echo "${ECHO_T}$LIBICONV" >&6; } if test "$am_cv_func_iconv" = yes; then - { echo "$as_me:$LINENO: checking for iconv declaration" >&5 -echo $ECHO_N "checking for iconv declaration... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for iconv declaration" >&5 +echo $ECHO_N "checking for iconv declaration... $ECHO_C" >&6 if test "${am_cv_proto_iconv+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -9943,36 +8562,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -9981,18 +8588,17 @@ else 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 +rm -f 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/( /(/'` - { echo "$as_me:$LINENO: result: ${ac_t:- + echo "$as_me:$LINENO: result: ${ac_t:- }$am_cv_proto_iconv" >&5 echo "${ECHO_T}${ac_t:- - }$am_cv_proto_iconv" >&6; } + }$am_cv_proto_iconv" >&6 cat >>confdefs.h <<_ACEOF @%:@define ICONV_CONST $am_cv_proto_iconv_arg1 @@ -10001,8 +8607,8 @@ _ACEOF fi - { echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 -echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 +echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6 if test "${am_cv_langinfo_codeset+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -10022,36 +8628,24 @@ char* cs = nl_langinfo(CODESET); } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -10060,15 +8654,14 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $am_cv_langinfo_codeset" >&5 -echo "${ECHO_T}$am_cv_langinfo_codeset" >&6; } +echo "$as_me:$LINENO: result: $am_cv_langinfo_codeset" >&5 +echo "${ECHO_T}$am_cv_langinfo_codeset" >&6 if test $am_cv_langinfo_codeset = yes; then cat >>confdefs.h <<\_ACEOF @@ -10079,8 +8672,8 @@ _ACEOF if test $ac_cv_header_locale_h = yes; then - { echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 -echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 +echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6 if test "${am_cv_val_LC_MESSAGES+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -10100,36 +8693,24 @@ return LC_MESSAGES } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -10138,14 +8719,13 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 -echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6; } +echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 +echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6 if test $am_cv_val_LC_MESSAGES = yes; then cat >>confdefs.h <<\_ACEOF @@ -10160,8 +8740,8 @@ _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 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_INTLBISON+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -10174,35 +8754,33 @@ 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_INTLBISON="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi INTLBISON=$ac_cv_prog_INTLBISON if test -n "$INTLBISON"; then - { echo "$as_me:$LINENO: result: $INTLBISON" >&5 -echo "${ECHO_T}$INTLBISON" >&6; } + echo "$as_me:$LINENO: result: $INTLBISON" >&5 +echo "${ECHO_T}$INTLBISON" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - test -n "$INTLBISON" && break done if test -z "$INTLBISON"; then ac_verc_fail=yes else - { echo "$as_me:$LINENO: checking version of bison" >&5 -echo $ECHO_N "checking version of bison... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking version of bison" >&5 +echo $ECHO_N "checking version of bison... $ECHO_C" >&6 ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` case $ac_prog_version in '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; @@ -10210,8 +8788,8 @@ echo $ECHO_N "checking version of bison... $ECHO_C" >&6; } ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; esac - { echo "$as_me:$LINENO: result: $ac_prog_version" >&5 -echo "${ECHO_T}$ac_prog_version" >&6; } + echo "$as_me:$LINENO: result: $ac_prog_version" >&5 +echo "${ECHO_T}$ac_prog_version" >&6 fi if test $ac_verc_fail = yes; then INTLBISON=: @@ -10232,17 +8810,17 @@ echo "${ECHO_T}$ac_prog_version" >&6; } - { echo "$as_me:$LINENO: checking whether NLS is requested" >&5 -echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6; } - # Check whether --enable-nls was given. + echo "$as_me:$LINENO: checking whether NLS is requested" >&5 +echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 + # Check whether --enable-nls or --disable-nls was given. if test "${enable_nls+set}" = set; then - enableval=$enable_nls; USE_NLS=$enableval + enableval="$enable_nls" + USE_NLS=$enableval else USE_NLS=yes -fi - - { echo "$as_me:$LINENO: result: $USE_NLS" >&5 -echo "${ECHO_T}$USE_NLS" >&6; } +fi; + echo "$as_me:$LINENO: result: $USE_NLS" >&5 +echo "${ECHO_T}$USE_NLS" >&6 @@ -10257,18 +8835,18 @@ echo "${ECHO_T}$USE_NLS" >&6; } if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no - { echo "$as_me:$LINENO: checking whether included gettext is requested" >&5 -echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking whether included gettext is requested" >&5 +echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6 -# Check whether --with-included-gettext was given. +# Check whether --with-included-gettext or --without-included-gettext was given. if test "${with_included_gettext+set}" = set; then - withval=$with_included_gettext; nls_cv_force_use_gnu_gettext=$withval + withval="$with_included_gettext" + nls_cv_force_use_gnu_gettext=$withval else nls_cv_force_use_gnu_gettext=no -fi - - { echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5 -echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6; } +fi; + echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5 +echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6 nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then @@ -10278,8 +8856,8 @@ echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6; } - { echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 -echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 +echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6 if test "${gt_cv_func_gnugettext2_libc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -10302,36 +8880,24 @@ return (int) gettext ("") + (int) ngettext ("", "", 0) + _nl_msg_cat_cntr + *_nl } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -10340,14 +8906,13 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext2_libc" >&5 -echo "${ECHO_T}$gt_cv_func_gnugettext2_libc" >&6; } +echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext2_libc" >&5 +echo "${ECHO_T}$gt_cv_func_gnugettext2_libc" >&6 if test "$gt_cv_func_gnugettext2_libc" != "yes"; then @@ -10367,9 +8932,10 @@ echo "${ECHO_T}$gt_cv_func_gnugettext2_libc" >&6; } prefix="$acl_save_prefix" -# Check whether --with-libintl-prefix was given. +# Check whether --with-libintl-prefix or --without-libintl-prefix was given. if test "${with_libintl_prefix+set}" = set; then - withval=$with_libintl_prefix; + withval="$with_libintl_prefix" + if test "X$withval" = "Xno"; then use_additional=no else @@ -10392,8 +8958,7 @@ if test "${with_libintl_prefix+set}" = set; then fi fi -fi - +fi; LIBINTL= LTLIBINTL= INCINTL= @@ -10729,8 +9294,8 @@ fi done fi - { echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5 -echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5 +echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6 if test "${gt_cv_func_gnugettext2_libintl+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -10761,36 +9326,24 @@ return (int) gettext ("") + (int) ngettext ("", "", 0) + _nl_msg_cat_cntr + *_nl } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -10799,10 +9352,9 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - gt_cv_func_gnugettext2_libintl=no +gt_cv_func_gnugettext2_libintl=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f 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" @@ -10829,36 +9381,24 @@ return (int) gettext ("") + (int) ngettext ("", "", 0) + _nl_msg_cat_cntr + *_nl } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -10870,17 +9410,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" fi -{ echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext2_libintl" >&5 -echo "${ECHO_T}$gt_cv_func_gnugettext2_libintl" >&6; } +echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext2_libintl" >&5 +echo "${ECHO_T}$gt_cv_func_gnugettext2_libintl" >&6 fi if test "$gt_cv_func_gnugettext2_libc" = "yes" \ @@ -10926,13 +9464,13 @@ _ACEOF fi fi - { echo "$as_me:$LINENO: checking whether to use NLS" >&5 -echo $ECHO_N "checking whether to use NLS... $ECHO_C" >&6; } - { echo "$as_me:$LINENO: result: $USE_NLS" >&5 -echo "${ECHO_T}$USE_NLS" >&6; } + echo "$as_me:$LINENO: checking whether to use NLS" >&5 +echo $ECHO_N "checking whether to use NLS... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $USE_NLS" >&5 +echo "${ECHO_T}$USE_NLS" >&6 if test "$USE_NLS" = "yes"; then - { echo "$as_me:$LINENO: checking where the gettext function comes from" >&5 -echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking where the gettext function comes from" >&5 +echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&6 if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext2_libintl" = "yes"; then gt_source="external libintl" @@ -10942,18 +9480,18 @@ echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&6; } else gt_source="included intl directory" fi - { echo "$as_me:$LINENO: result: $gt_source" >&5 -echo "${ECHO_T}$gt_source" >&6; } + echo "$as_me:$LINENO: result: $gt_source" >&5 +echo "${ECHO_T}$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 - { echo "$as_me:$LINENO: checking how to link with libintl" >&5 -echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6; } - { echo "$as_me:$LINENO: result: $LIBINTL" >&5 -echo "${ECHO_T}$LIBINTL" >&6; } + echo "$as_me:$LINENO: checking how to link with libintl" >&5 +echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $LIBINTL" >&5 +echo "${ECHO_T}$LIBINTL" >&6 for element in $INCINTL; do haveit= @@ -11040,9 +9578,9 @@ _ACEOF ac_header_dirent=no for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 -echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 +echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -11064,36 +9602,24 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -11102,14 +9628,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_Header=no" +eval "$as_ac_Header=no" fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 @@ -11121,12 +9645,13 @@ fi done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then - { echo "$as_me:$LINENO: checking for library containing opendir" >&5 -echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for library containing opendir" >&5 +echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 if test "${ac_cv_search_opendir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS +ac_cv_search_opendir=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -11134,99 +9659,126 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char opendir (); int main () { -return opendir (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_search_opendir=$ac_res + ac_cv_search_opendir="none required" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search_opendir" = no; then + for ac_lib in dir; do + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if test "${ac_cv_search_opendir+set}" = set; then - break -fi -done -if test "${ac_cv_search_opendir+set}" = set; then - : +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +int +main () +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_opendir="-l$ac_lib" +break else - ac_cv_search_opendir=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done fi -rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 -echo "${ECHO_T}$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" +echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 +echo "${ECHO_T}$ac_cv_search_opendir" >&6 +if test "$ac_cv_search_opendir" != no; then + test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" fi else - { echo "$as_me:$LINENO: checking for library containing opendir" >&5 -echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for library containing opendir" >&5 +echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 if test "${ac_cv_search_opendir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS +ac_cv_search_opendir=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -11234,96 +9786,122 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char opendir (); int main () { -return opendir (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_search_opendir=$ac_res + ac_cv_search_opendir="none required" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search_opendir" = no; then + for ac_lib in x; do + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if test "${ac_cv_search_opendir+set}" = set; then - break -fi -done -if test "${ac_cv_search_opendir+set}" = set; then - : +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +int +main () +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_opendir="-l$ac_lib" +break else - ac_cv_search_opendir=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done fi -rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 -echo "${ECHO_T}$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" +echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 +echo "${ECHO_T}$ac_cv_search_opendir" >&6 +if test "$ac_cv_search_opendir" != no; then + test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" fi fi -{ echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 -echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 +echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6 if test "${ac_cv_header_time+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -11347,36 +9925,24 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -11385,13 +9951,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_header_time=no +ac_cv_header_time=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 -echo "${ECHO_T}$ac_cv_header_time" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 +echo "${ECHO_T}$ac_cv_header_time" >&6 if test $ac_cv_header_time = yes; then cat >>confdefs.h <<\_ACEOF @@ -11406,19 +9971,18 @@ fi for ac_header in inttypes.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -11429,36 +9993,24 @@ $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -11467,16 +10019,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -11485,13 +10036,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -11515,10 +10061,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -11542,24 +10087,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX @%:@@%:@ ------------------------------- @%:@@%:@ @%:@@%:@ Report this to bug-bash@gnu.org @%:@@%:@ @%:@@%:@ ------------------------------- @%:@@%:@ _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -11597,19 +10143,18 @@ for ac_header in unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \ stddef.h stdint.h netdb.h pwd.h grp.h strings.h regex.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -11620,36 +10165,24 @@ $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -11658,16 +10191,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -11676,13 +10208,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -11706,10 +10233,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -11733,24 +10259,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX @%:@@%:@ ------------------------------- @%:@@%:@ @%:@@%:@ Report this to bug-bash@gnu.org @%:@@%:@ @%:@@%:@ ------------------------------- @%:@@%:@ _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -11779,19 +10306,18 @@ for ac_header in sys/pte.h sys/stream.h sys/select.h sys/file.h \ sys/time.h sys/times.h sys/types.h sys/wait.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -11802,36 +10328,24 @@ $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -11840,16 +10354,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -11858,13 +10371,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -11888,10 +10396,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -11915,24 +10422,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX @%:@@%:@ ------------------------------- @%:@@%:@ @%:@@%:@ Report this to bug-bash@gnu.org @%:@@%:@ @%:@@%:@ ------------------------------- @%:@@%:@ _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -11949,19 +10457,18 @@ done for ac_header in netinet/in.h arpa/inet.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -11972,36 +10479,24 @@ $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -12010,16 +10505,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -12028,13 +10522,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -12058,10 +10547,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -12085,24 +10573,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX @%:@@%:@ ------------------------------- @%:@@%:@ @%:@@%:@ Report this to bug-bash@gnu.org @%:@@%:@ @%:@@%:@ ------------------------------- @%:@@%:@ _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -12115,8 +10604,8 @@ fi done -{ echo "$as_me:$LINENO: checking for sys/ptem.h" >&5 -echo $ECHO_N "checking for sys/ptem.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for sys/ptem.h" >&5 +echo $ECHO_N "checking for sys/ptem.h... $ECHO_C" >&6 if test "${ac_cv_header_sys_ptem_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -12135,36 +10624,24 @@ cat >>conftest.$ac_ext <<_ACEOF @%:@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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -12173,20 +10650,19 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_header_sys_ptem_h=no +ac_cv_header_sys_ptem_h=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_sys_ptem_h" >&5 -echo "${ECHO_T}$ac_cv_header_sys_ptem_h" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_header_sys_ptem_h" >&5 +echo "${ECHO_T}$ac_cv_header_sys_ptem_h" >&6 # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! -{ echo "$as_me:$LINENO: checking for working alloca.h" >&5 -echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for working alloca.h" >&5 +echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 if test "${ac_cv_working_alloca_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -12201,42 +10677,29 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -12245,14 +10708,13 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 -echo "${ECHO_T}$ac_cv_working_alloca_h" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 if test $ac_cv_working_alloca_h = yes; then cat >>confdefs.h <<\_ACEOF @@ -12261,8 +10723,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for alloca" >&5 -echo $ECHO_N "checking for alloca... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for alloca" >&5 +echo $ECHO_N "checking for alloca... $ECHO_C" >&6 if test "${ac_cv_func_alloca_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -12297,42 +10759,29 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -12341,14 +10790,13 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 -echo "${ECHO_T}$ac_cv_func_alloca_works" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 if test $ac_cv_func_alloca_works = yes; then @@ -12362,15 +10810,15 @@ else # 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 +ALLOCA=alloca.$ac_objext cat >>confdefs.h <<\_ACEOF @%:@define C_ALLOCA 1 _ACEOF -{ echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 -echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 if test "${ac_cv_os_cray+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -12380,7 +10828,7 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#if defined CRAY && ! defined CRAY2 +#if defined(CRAY) && ! defined(CRAY2) webecray #else wenotbecray @@ -12396,14 +10844,14 @@ fi rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 -echo "${ECHO_T}$ac_cv_os_cray" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +echo "${ECHO_T}$ac_cv_os_cray" >&6 if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -12429,59 +10877,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -12490,15 +10932,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @@ -12511,8 +10951,8 @@ fi done fi -{ echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 -echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 if test "${ac_cv_c_stack_direction+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -12525,7 +10965,6 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_includes_default int find_stack_direction () { @@ -12543,26 +10982,17 @@ find_stack_direction () int main () { - return find_stack_direction () < 0; + exit (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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -12575,13 +11005,11 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_c_stack_direction=-1 fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 -echo "${ECHO_T}$ac_cv_c_stack_direction" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 cat >>confdefs.h <<_ACEOF @%:@define STACK_DIRECTION $ac_cv_c_stack_direction @@ -12590,8 +11018,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether getpgrp requires zero arguments" >&5 -echo $ECHO_N "checking whether getpgrp requires zero arguments... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether getpgrp requires zero arguments" >&5 +echo $ECHO_N "checking whether getpgrp requires zero arguments... $ECHO_C" >&6 if test "${ac_cv_func_getpgrp_void+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -12612,36 +11040,24 @@ getpgrp (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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -12650,14 +11066,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func_getpgrp_void=yes +ac_cv_func_getpgrp_void=yes fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_getpgrp_void" >&5 -echo "${ECHO_T}$ac_cv_func_getpgrp_void" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func_getpgrp_void" >&5 +echo "${ECHO_T}$ac_cv_func_getpgrp_void" >&6 if test $ac_cv_func_getpgrp_void = yes; then cat >>confdefs.h <<\_ACEOF @@ -12666,8 +11081,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether setvbuf arguments are reversed" >&5 -echo $ECHO_N "checking whether setvbuf arguments are reversed... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether setvbuf arguments are reversed" >&5 +echo $ECHO_N "checking whether setvbuf arguments are reversed... $ECHO_C" >&6 if test "${ac_cv_func_setvbuf_reversed+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -12691,36 +11106,24 @@ char buf; return setvbuf (stdout, _IOLBF, &buf, 1); } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -12743,36 +11146,24 @@ char buf; return setvbuf (stdout, &buf, _IOLBF, 1); } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -12788,7 +11179,7 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_includes_default +#include int main () { @@ -12797,30 +11188,21 @@ main () is not _IOLBF, _IONBF, or _IOFBF, and return nonzero. */ char buf; if (setvbuf (stdout, _IOLBF, &buf, 1) != 0) - return 1; + exit (1); putchar ('\r'); - return 0; /* Non-reversed systems SEGV here. */ + exit (0); /* Non-reversed systems SEGV here. */ ; 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -12830,33 +11212,29 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 +( exit $ac_status ) +rm -f core *.core fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - ac_cv_func_setvbuf_reversed=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_setvbuf_reversed" >&5 -echo "${ECHO_T}$ac_cv_func_setvbuf_reversed" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func_setvbuf_reversed" >&5 +echo "${ECHO_T}$ac_cv_func_setvbuf_reversed" >&6 if test $ac_cv_func_setvbuf_reversed = yes; then cat >>confdefs.h <<\_ACEOF @@ -12869,9 +11247,9 @@ fi for ac_func in vprintf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -12897,59 +11275,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -12958,22 +11330,20 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF -{ echo "$as_me:$LINENO: checking for _doprnt" >&5 -echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for _doprnt" >&5 +echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6 if test "${ac_cv_func__doprnt+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -13000,59 +11370,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub__doprnt) || defined (__stub____doprnt) choke me +#else +char (*f) () = _doprnt; +#endif +#ifdef __cplusplus +} #endif int main () { -return _doprnt (); +return f != _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -13061,14 +11425,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func__doprnt=no +ac_cv_func__doprnt=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5 -echo "${ECHO_T}$ac_cv_func__doprnt" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5 +echo "${ECHO_T}$ac_cv_func__doprnt" >&6 if test $ac_cv_func__doprnt = yes; then cat >>confdefs.h <<\_ACEOF @@ -13081,8 +11444,8 @@ fi done -{ echo "$as_me:$LINENO: checking for working strcoll" >&5 -echo $ECHO_N "checking for working strcoll... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for working strcoll" >&5 +echo $ECHO_N "checking for working strcoll... $ECHO_C" >&6 if test "${ac_cv_func_strcoll_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -13099,7 +11462,7 @@ $ac_includes_default int main () { -return (strcoll ("abc", "def") >= 0 || +exit (strcoll ("abc", "def") >= 0 || strcoll ("ABC", "DEF") >= 0 || strcoll ("123", "456") >= 0) ; @@ -13107,22 +11470,13 @@ return (strcoll ("abc", "def") >= 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -13135,13 +11489,11 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_strcoll_works=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_strcoll_works" >&5 -echo "${ECHO_T}$ac_cv_func_strcoll_works" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func_strcoll_works" >&5 +echo "${ECHO_T}$ac_cv_func_strcoll_works" >&6 if test $ac_cv_func_strcoll_works = yes; then cat >>confdefs.h <<\_ACEOF @@ -13163,8 +11515,8 @@ if test "$ac_cv_func_alloca_works" = "no" && test "$opt_bash_malloc" = "no"; the fi if test "$ac_cv_func_vprintf" = no; then - { echo "$as_me:$LINENO: checking for declaration of vprintf in stdio.h" >&5 -echo $ECHO_N "checking for declaration of vprintf in stdio.h... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for declaration of vprintf in stdio.h" >&5 +echo $ECHO_N "checking for declaration of vprintf in stdio.h... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -13180,8 +11532,8 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | fi rm -f conftest* - { echo "$as_me:$LINENO: result: $ac_cv_func_vprintf" >&5 -echo "${ECHO_T}$ac_cv_func_vprintf" >&6; } + echo "$as_me:$LINENO: result: $ac_cv_func_vprintf" >&5 +echo "${ECHO_T}$ac_cv_func_vprintf" >&6 if test $ac_cv_func_vprintf = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_VPRINTF 1 @@ -13191,16 +11543,18 @@ _ACEOF fi if test "$ac_cv_func_vprintf" = no && test "$ac_cv_func__doprnt" = "yes"; then - case " $LIB@&t@OBJS " in + case $LIB@&t@OBJS in + "vprint.$ac_objext" | \ + *" vprint.$ac_objext" | \ + "vprint.$ac_objext "* | \ *" vprint.$ac_objext "* ) ;; - *) LIB@&t@OBJS="$LIB@&t@OBJS vprint.$ac_objext" - ;; + *) LIB@&t@OBJS="$LIB@&t@OBJS vprint.$ac_objext" ;; esac fi -{ echo "$as_me:$LINENO: checking return type of signal handlers" >&5 -echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking return type of signal handlers" >&5 +echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 if test "${ac_cv_type_signal+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -13212,61 +11566,56 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include +#ifdef signal +# undef signal +#endif +#ifdef __cplusplus +extern "C" void (*signal (int, void (*)(int)))(int); +#else +void (*signal ()) (); +#endif int main () { -return *(signal (0, 0)) (0) == 1; +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_type_signal=int + ac_cv_type_signal=void else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_signal=void +ac_cv_type_signal=int fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 -echo "${ECHO_T}$ac_cv_type_signal" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 +echo "${ECHO_T}$ac_cv_type_signal" >&6 cat >>confdefs.h <<_ACEOF @%:@define RETSIGTYPE $ac_cv_type_signal @@ -13274,8 +11623,8 @@ _ACEOF -{ echo "$as_me:$LINENO: checking for __setostype" >&5 -echo $ECHO_N "checking for __setostype... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for __setostype" >&5 +echo $ECHO_N "checking for __setostype... $ECHO_C" >&6 if test "${ac_cv_func___setostype+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -13302,59 +11651,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub___setostype) || defined (__stub_____setostype) choke me +#else +char (*f) () = __setostype; +#endif +#ifdef __cplusplus +} #endif int main () { -return __setostype (); +return f != __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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -13363,14 +11706,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func___setostype=no +ac_cv_func___setostype=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func___setostype" >&5 -echo "${ECHO_T}$ac_cv_func___setostype" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func___setostype" >&5 +echo "${ECHO_T}$ac_cv_func___setostype" >&6 if test $ac_cv_func___setostype = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_SETOSTYPE 1 @@ -13378,8 +11720,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for wait3" >&5 -echo $ECHO_N "checking for wait3... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for wait3" >&5 +echo $ECHO_N "checking for wait3... $ECHO_C" >&6 if test "${ac_cv_func_wait3+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -13406,59 +11748,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_wait3) || defined (__stub___wait3) choke me +#else +char (*f) () = wait3; +#endif +#ifdef __cplusplus +} #endif int main () { -return wait3 (); +return f != 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -13467,14 +11803,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func_wait3=no +ac_cv_func_wait3=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_wait3" >&5 -echo "${ECHO_T}$ac_cv_func_wait3" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func_wait3" >&5 +echo "${ECHO_T}$ac_cv_func_wait3" >&6 if test $ac_cv_func_wait3 = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_WAIT3 1 @@ -13482,8 +11817,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for isinf" >&5 -echo $ECHO_N "checking for isinf... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for isinf" >&5 +echo $ECHO_N "checking for isinf... $ECHO_C" >&6 if test "${ac_cv_func_isinf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -13510,189 +11845,78 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#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 "echo \"\$as_me:$LINENO: $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 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_isinf=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_isinf=no -fi - -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_isinf" >&5 -echo "${ECHO_T}$ac_cv_func_isinf" >&6; } -if test $ac_cv_func_isinf = yes; then - cat >>confdefs.h <<\_ACEOF -@%:@define HAVE_ISINF_IN_LIBC 1 -_ACEOF - -fi - -{ echo "$as_me:$LINENO: checking for isnan" >&5 -echo $ECHO_N "checking for isnan... $ECHO_C" >&6; } -if test "${ac_cv_func_isnan+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&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 +char (*f) () = isinf; #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 f != 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_func_isnan=yes + ac_cv_func_isinf=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func_isnan=no +ac_cv_func_isinf=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_isnan" >&5 -echo "${ECHO_T}$ac_cv_func_isnan" >&6; } -if test $ac_cv_func_isnan = yes; then +echo "$as_me:$LINENO: result: $ac_cv_func_isinf" >&5 +echo "${ECHO_T}$ac_cv_func_isinf" >&6 +if test $ac_cv_func_isinf = yes; then cat >>confdefs.h <<\_ACEOF -@%:@define HAVE_ISNAN_IN_LIBC 1 +@%:@define HAVE_ISINF_IN_LIBC 1 _ACEOF fi -{ echo "$as_me:$LINENO: checking for mkfifo" >&5 -echo $ECHO_N "checking for mkfifo... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for mkfifo" >&5 +echo $ECHO_N "checking for mkfifo... $ECHO_C" >&6 if test "${ac_cv_func_mkfifo+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -13719,59 +11943,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_mkfifo) || defined (__stub___mkfifo) choke me +#else +char (*f) () = mkfifo; +#endif +#ifdef __cplusplus +} #endif int main () { -return mkfifo (); +return f != 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -13780,14 +11998,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func_mkfifo=no +ac_cv_func_mkfifo=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_mkfifo" >&5 -echo "${ECHO_T}$ac_cv_func_mkfifo" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func_mkfifo" >&5 +echo "${ECHO_T}$ac_cv_func_mkfifo" >&6 if test $ac_cv_func_mkfifo = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_MKFIFO 1 @@ -13829,9 +12046,9 @@ for ac_func in dup2 eaccess fcntl getdtablesize getgroups gethostname \ tcgetpgrp uname ulimit waitpid do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -13857,59 +12074,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -13918,15 +12129,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -13939,9 +12148,9 @@ done for ac_func in rename do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -13967,59 +12176,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -14028,25 +12231,25 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else - case " $LIB@&t@OBJS " in + case $LIB@&t@OBJS in + "$ac_func.$ac_objext" | \ + *" $ac_func.$ac_objext" | \ + "$ac_func.$ac_objext "* | \ *" $ac_func.$ac_objext "* ) ;; - *) LIB@&t@OBJS="$LIB@&t@OBJS $ac_func.$ac_objext" - ;; + *) LIB@&t@OBJS="$LIB@&t@OBJS $ac_func.$ac_objext" ;; esac fi @@ -14088,9 +12291,9 @@ for ac_func in bcopy bzero confstr fnmatch \ sysconf tcgetattr times ttyname tzset unsetenv do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -14116,59 +12319,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -14177,15 +12374,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -14202,9 +12397,9 @@ done for ac_func in vsnprintf snprintf vasprintf asprintf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -14230,59 +12425,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -14291,15 +12480,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -14317,9 +12504,9 @@ done for ac_func in isascii isblank isgraph isprint isspace isxdigit do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -14345,59 +12532,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -14406,15 +12587,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -14429,9 +12608,9 @@ done for ac_func in getpwent getpwnam getpwuid do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -14457,59 +12636,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -14518,15 +12691,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -14546,9 +12717,9 @@ done for ac_func in getcwd memset strcasecmp strerror strftime strnlen strpbrk strstr do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -14574,59 +12745,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -14635,25 +12800,25 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else - case " $LIB@&t@OBJS " in + case $LIB@&t@OBJS in + "$ac_func.$ac_objext" | \ + *" $ac_func.$ac_objext" | \ + "$ac_func.$ac_objext "* | \ *" $ac_func.$ac_objext "* ) ;; - *) LIB@&t@OBJS="$LIB@&t@OBJS $ac_func.$ac_objext" - ;; + *) LIB@&t@OBJS="$LIB@&t@OBJS $ac_func.$ac_objext" ;; esac fi @@ -14670,9 +12835,9 @@ done for ac_func in strtod strtol strtoul strtoll strtoull strtoimax strtoumax do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -14698,59 +12863,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -14759,25 +12918,25 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else - case " $LIB@&t@OBJS " in + case $LIB@&t@OBJS in + "$ac_func.$ac_objext" | \ + *" $ac_func.$ac_objext" | \ + "$ac_func.$ac_objext "* | \ *" $ac_func.$ac_objext "* ) ;; - *) LIB@&t@OBJS="$LIB@&t@OBJS $ac_func.$ac_objext" - ;; + *) LIB@&t@OBJS="$LIB@&t@OBJS $ac_func.$ac_objext" ;; esac fi @@ -14785,8 +12944,8 @@ done -{ echo "$as_me:$LINENO: checking whether confstr is declared" >&5 -echo $ECHO_N "checking whether confstr is declared... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether confstr is declared" >&5 +echo $ECHO_N "checking whether confstr is declared... $ECHO_C" >&6 if test "${ac_cv_have_decl_confstr+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -14802,7 +12961,6 @@ main () { #ifndef confstr char *p = (char *) confstr; - return !p; #endif ; @@ -14810,36 +12968,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -14848,13 +12994,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_have_decl_confstr=no +ac_cv_have_decl_confstr=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_confstr" >&5 -echo "${ECHO_T}$ac_cv_have_decl_confstr" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_have_decl_confstr" >&5 +echo "${ECHO_T}$ac_cv_have_decl_confstr" >&6 if test $ac_cv_have_decl_confstr = yes; then cat >>confdefs.h <<_ACEOF @@ -14871,8 +13016,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether printf is declared" >&5 -echo $ECHO_N "checking whether printf is declared... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether printf is declared" >&5 +echo $ECHO_N "checking whether printf is declared... $ECHO_C" >&6 if test "${ac_cv_have_decl_printf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -14888,7 +13033,6 @@ main () { #ifndef printf char *p = (char *) printf; - return !p; #endif ; @@ -14896,36 +13040,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -14934,13 +13066,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_have_decl_printf=no +ac_cv_have_decl_printf=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_printf" >&5 -echo "${ECHO_T}$ac_cv_have_decl_printf" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_have_decl_printf" >&5 +echo "${ECHO_T}$ac_cv_have_decl_printf" >&6 if test $ac_cv_have_decl_printf = yes; then cat >>confdefs.h <<_ACEOF @@ -14957,8 +13088,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether sbrk is declared" >&5 -echo $ECHO_N "checking whether sbrk is declared... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether sbrk is declared" >&5 +echo $ECHO_N "checking whether sbrk is declared... $ECHO_C" >&6 if test "${ac_cv_have_decl_sbrk+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -14974,7 +13105,6 @@ main () { #ifndef sbrk char *p = (char *) sbrk; - return !p; #endif ; @@ -14982,36 +13112,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -15020,13 +13138,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_have_decl_sbrk=no +ac_cv_have_decl_sbrk=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_sbrk" >&5 -echo "${ECHO_T}$ac_cv_have_decl_sbrk" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_have_decl_sbrk" >&5 +echo "${ECHO_T}$ac_cv_have_decl_sbrk" >&6 if test $ac_cv_have_decl_sbrk = yes; then cat >>confdefs.h <<_ACEOF @@ -15043,8 +13160,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether setregid is declared" >&5 -echo $ECHO_N "checking whether setregid is declared... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether setregid is declared" >&5 +echo $ECHO_N "checking whether setregid is declared... $ECHO_C" >&6 if test "${ac_cv_have_decl_setregid+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15060,7 +13177,6 @@ main () { #ifndef setregid char *p = (char *) setregid; - return !p; #endif ; @@ -15068,36 +13184,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -15106,13 +13210,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_have_decl_setregid=no +ac_cv_have_decl_setregid=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_setregid" >&5 -echo "${ECHO_T}$ac_cv_have_decl_setregid" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_have_decl_setregid" >&5 +echo "${ECHO_T}$ac_cv_have_decl_setregid" >&6 if test $ac_cv_have_decl_setregid = yes; then cat >>confdefs.h <<_ACEOF @@ -15129,8 +13232,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether strcpy is declared" >&5 -echo $ECHO_N "checking whether strcpy is declared... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether strcpy is declared" >&5 +echo $ECHO_N "checking whether strcpy is declared... $ECHO_C" >&6 if test "${ac_cv_have_decl_strcpy+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15146,7 +13249,6 @@ main () { #ifndef strcpy char *p = (char *) strcpy; - return !p; #endif ; @@ -15154,36 +13256,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -15192,13 +13282,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_have_decl_strcpy=no +ac_cv_have_decl_strcpy=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_strcpy" >&5 -echo "${ECHO_T}$ac_cv_have_decl_strcpy" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_have_decl_strcpy" >&5 +echo "${ECHO_T}$ac_cv_have_decl_strcpy" >&6 if test $ac_cv_have_decl_strcpy = yes; then cat >>confdefs.h <<_ACEOF @@ -15215,8 +13304,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether strsignal is declared" >&5 -echo $ECHO_N "checking whether strsignal is declared... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether strsignal is declared" >&5 +echo $ECHO_N "checking whether strsignal is declared... $ECHO_C" >&6 if test "${ac_cv_have_decl_strsignal+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15232,7 +13321,6 @@ main () { #ifndef strsignal char *p = (char *) strsignal; - return !p; #endif ; @@ -15240,36 +13328,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -15278,13 +13354,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_have_decl_strsignal=no +ac_cv_have_decl_strsignal=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_strsignal" >&5 -echo "${ECHO_T}$ac_cv_have_decl_strsignal" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_have_decl_strsignal" >&5 +echo "${ECHO_T}$ac_cv_have_decl_strsignal" >&6 if test $ac_cv_have_decl_strsignal = yes; then cat >>confdefs.h <<_ACEOF @@ -15302,8 +13377,8 @@ fi -{ echo "$as_me:$LINENO: checking whether strtold is declared" >&5 -echo $ECHO_N "checking whether strtold is declared... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether strtold is declared" >&5 +echo $ECHO_N "checking whether strtold is declared... $ECHO_C" >&6 if test "${ac_cv_have_decl_strtold+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15319,7 +13394,6 @@ main () { #ifndef strtold char *p = (char *) strtold; - return !p; #endif ; @@ -15327,36 +13401,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -15365,13 +13427,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_have_decl_strtold=no +ac_cv_have_decl_strtold=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_strtold" >&5 -echo "${ECHO_T}$ac_cv_have_decl_strtold" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_have_decl_strtold" >&5 +echo "${ECHO_T}$ac_cv_have_decl_strtold" >&6 if test $ac_cv_have_decl_strtold = yes; then cat >>confdefs.h <<_ACEOF @@ -15379,8 +13440,8 @@ cat >>confdefs.h <<_ACEOF _ACEOF - { echo "$as_me:$LINENO: checking for broken strtold" >&5 -echo $ECHO_N "checking for broken strtold... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for broken strtold" >&5 +echo $ECHO_N "checking for broken strtold... $ECHO_C" >&6 if test "${bash_cv_strtold_broken+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15400,36 +13461,24 @@ int main() { long double r; char *foo, bar; r = strtold(foo, &bar);} } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -15438,16 +13487,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - bash_cv_strtold_broken=yes +bash_cv_strtold_broken=yes fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - { echo "$as_me:$LINENO: result: $bash_cv_strtold_broken" >&5 -echo "${ECHO_T}$bash_cv_strtold_broken" >&6; } + echo "$as_me:$LINENO: result: $bash_cv_strtold_broken" >&5 +echo "${ECHO_T}$bash_cv_strtold_broken" >&6 if test "$bash_cv_strtold_broken" = "yes" ; then cat >>confdefs.h <<\_ACEOF @%:@define STRTOLD_BROKEN 1 @@ -15469,8 +13517,8 @@ fi -{ echo "$as_me:$LINENO: checking for declaration of strtoimax" >&5 -echo $ECHO_N "checking for declaration of strtoimax... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for declaration of strtoimax" >&5 +echo $ECHO_N "checking for declaration of strtoimax... $ECHO_C" >&6 if test "${bash_cv_decl_strtoimax+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15497,36 +13545,24 @@ return !strtoimax; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -15535,14 +13571,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - bash_cv_decl_strtoimax=no +bash_cv_decl_strtoimax=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_decl_strtoimax" >&5 -echo "${ECHO_T}$bash_cv_decl_strtoimax" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoimax" >&5 +echo "${ECHO_T}$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 @@ -15559,8 +13594,8 @@ fi -{ echo "$as_me:$LINENO: checking for declaration of strtol" >&5 -echo $ECHO_N "checking for declaration of strtol... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for declaration of strtol" >&5 +echo $ECHO_N "checking for declaration of strtol... $ECHO_C" >&6 if test "${bash_cv_decl_strtol+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15587,36 +13622,24 @@ return !strtol; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -15625,14 +13648,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - bash_cv_decl_strtol=no +bash_cv_decl_strtol=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_decl_strtol" >&5 -echo "${ECHO_T}$bash_cv_decl_strtol" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_decl_strtol" >&5 +echo "${ECHO_T}$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 @@ -15649,8 +13671,8 @@ fi -{ echo "$as_me:$LINENO: checking for declaration of strtoll" >&5 -echo $ECHO_N "checking for declaration of strtoll... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for declaration of strtoll" >&5 +echo $ECHO_N "checking for declaration of strtoll... $ECHO_C" >&6 if test "${bash_cv_decl_strtoll+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15677,36 +13699,24 @@ return !strtoll; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -15715,14 +13725,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - bash_cv_decl_strtoll=no +bash_cv_decl_strtoll=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_decl_strtoll" >&5 -echo "${ECHO_T}$bash_cv_decl_strtoll" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoll" >&5 +echo "${ECHO_T}$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 @@ -15739,8 +13748,8 @@ fi -{ echo "$as_me:$LINENO: checking for declaration of strtoul" >&5 -echo $ECHO_N "checking for declaration of strtoul... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for declaration of strtoul" >&5 +echo $ECHO_N "checking for declaration of strtoul... $ECHO_C" >&6 if test "${bash_cv_decl_strtoul+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15767,36 +13776,24 @@ return !strtoul; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -15805,14 +13802,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - bash_cv_decl_strtoul=no +bash_cv_decl_strtoul=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_decl_strtoul" >&5 -echo "${ECHO_T}$bash_cv_decl_strtoul" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoul" >&5 +echo "${ECHO_T}$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 @@ -15829,8 +13825,8 @@ fi -{ echo "$as_me:$LINENO: checking for declaration of strtoull" >&5 -echo $ECHO_N "checking for declaration of strtoull... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for declaration of strtoull" >&5 +echo $ECHO_N "checking for declaration of strtoull... $ECHO_C" >&6 if test "${bash_cv_decl_strtoull+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15857,36 +13853,24 @@ return !strtoull; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -15895,14 +13879,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - bash_cv_decl_strtoull=no +bash_cv_decl_strtoull=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_decl_strtoull" >&5 -echo "${ECHO_T}$bash_cv_decl_strtoull" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoull" >&5 +echo "${ECHO_T}$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 @@ -15919,8 +13902,8 @@ fi -{ echo "$as_me:$LINENO: checking for declaration of strtoumax" >&5 -echo $ECHO_N "checking for declaration of strtoumax... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for declaration of strtoumax" >&5 +echo $ECHO_N "checking for declaration of strtoumax... $ECHO_C" >&6 if test "${bash_cv_decl_strtoumax+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15947,36 +13930,24 @@ return !strtoumax; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -15985,14 +13956,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - bash_cv_decl_strtoumax=no +bash_cv_decl_strtoumax=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_decl_strtoumax" >&5 -echo "${ECHO_T}$bash_cv_decl_strtoumax" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoumax" >&5 +echo "${ECHO_T}$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 @@ -16013,19 +13983,18 @@ fi for ac_header in stdlib.h sys/time.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -16036,36 +14005,24 @@ $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -16074,16 +14031,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -16092,13 +14048,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -16122,10 +14073,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -16149,24 +14099,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX @%:@@%:@ ------------------------------- @%:@@%:@ @%:@@%:@ Report this to bug-bash@gnu.org @%:@@%:@ @%:@@%:@ ------------------------------- @%:@@%:@ _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -16182,9 +14133,9 @@ done for ac_func in alarm do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -16210,59 +14161,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -16271,15 +14216,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -16288,8 +14231,8 @@ _ACEOF fi done -{ echo "$as_me:$LINENO: checking for working mktime" >&5 -echo $ECHO_N "checking for working mktime... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for working mktime" >&5 +echo $ECHO_N "checking for working mktime... $ECHO_C" >&6 if test "${ac_cv_func_working_mktime+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -16339,9 +14282,9 @@ static char *tz_strings[] = { }; #define N_STRINGS (sizeof (tz_strings) / sizeof (tz_strings[0])) -/* Return 0 if mktime fails to convert a date in the spring-forward gap. +/* Fail if mktime fails to convert a date in the spring-forward gap. Based on a problem report from Andreas Jaeger. */ -static int +static void spring_forward_gap () { /* glibc (up to about 1998-10-07) failed this test. */ @@ -16360,27 +14303,29 @@ spring_forward_gap () tm.tm_min = 0; tm.tm_sec = 0; tm.tm_isdst = -1; - return mktime (&tm) != (time_t) -1; + if (mktime (&tm) == (time_t)-1) + exit (1); } -static int +static void mktime_test1 (now) time_t now; { struct tm *lt; - return ! (lt = localtime (&now)) || mktime (lt) == now; + if ((lt = localtime (&now)) && mktime (lt) != now) + exit (1); } -static int +static void 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))); + mktime_test1 (now); + mktime_test1 ((time_t) (time_t_max - now)); + mktime_test1 ((time_t) (time_t_min + now)); } -static int +static void irix_6_4_bug () { /* Based on code from Ariel Faigon. */ @@ -16393,10 +14338,11 @@ irix_6_4_bug () tm.tm_sec = 0; tm.tm_isdst = -1; mktime (&tm); - return tm.tm_mon == 2 && tm.tm_mday == 31; + if (tm.tm_mon != 2 || tm.tm_mday != 31) + exit (1); } -static int +static void bigtime_test (j) int j; { @@ -16418,9 +14364,8 @@ bigtime_test (j) && 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; + exit (1); } - return 1; } int @@ -16447,39 +14392,28 @@ main () 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; + mktime_test (t); + mktime_test ((time_t) 1); + mktime_test ((time_t) (60 * 60)); + mktime_test ((time_t) (60 * 60 * 24)); for (j = 1; 0 < j; j *= 2) - if (! bigtime_test (j)) - return 1; - if (! bigtime_test (j - 1)) - return 1; + bigtime_test (j); + bigtime_test (j - 1); } - return ! (irix_6_4_bug () && spring_forward_gap ()); + irix_6_4_bug (); + spring_forward_gap (); + 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -16492,18 +14426,18 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_working_mktime=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_working_mktime" >&5 -echo "${ECHO_T}$ac_cv_func_working_mktime" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func_working_mktime" >&5 +echo "${ECHO_T}$ac_cv_func_working_mktime" >&6 if test $ac_cv_func_working_mktime = no; then - case " $LIB@&t@OBJS " in + case $LIB@&t@OBJS in + "mktime.$ac_objext" | \ + *" mktime.$ac_objext" | \ + "mktime.$ac_objext "* | \ *" mktime.$ac_objext "* ) ;; - *) LIB@&t@OBJS="$LIB@&t@OBJS mktime.$ac_objext" - ;; + *) LIB@&t@OBJS="$LIB@&t@OBJS mktime.$ac_objext" ;; esac fi @@ -16518,19 +14452,18 @@ fi for ac_header in argz.h errno.h fcntl.h malloc.h stdio_ext.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -16541,36 +14474,24 @@ $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -16579,16 +14500,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -16597,13 +14517,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -16627,10 +14542,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -16654,24 +14568,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX @%:@@%:@ ------------------------------- @%:@@%:@ @%:@@%:@ Report this to bug-bash@gnu.org @%:@@%:@ @%:@@%:@ ------------------------------- @%:@@%:@ _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -16689,19 +14604,18 @@ done for ac_header in stdlib.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -16712,36 +14626,24 @@ $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -16750,16 +14652,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -16768,13 +14669,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -16798,10 +14694,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -16825,24 +14720,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX @%:@@%:@ ------------------------------- @%:@@%:@ @%:@@%:@ Report this to bug-bash@gnu.org @%:@@%:@ @%:@@%:@ ------------------------------- @%:@@%:@ _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -16858,9 +14754,9 @@ done for ac_func in getpagesize do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -16886,59 +14782,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -16947,15 +14837,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -16964,8 +14852,8 @@ _ACEOF fi done -{ echo "$as_me:$LINENO: checking for working mmap" >&5 -echo $ECHO_N "checking for working mmap... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for working mmap" >&5 +echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -17060,15 +14948,15 @@ main () /* First, make a file with some known garbage in it. */ data = (char *) malloc (pagesize); if (!data) - return 1; + exit (1); for (i = 0; i < pagesize; ++i) *(data + i) = rand (); umask (0); fd = creat ("conftest.mmap", 0600); if (fd < 0) - return 1; + exit (1); if (write (fd, data, pagesize) != pagesize) - return 1; + exit (1); close (fd); /* Next, try to mmap the file at a fixed address which already has @@ -17076,17 +14964,17 @@ main () we see the same garbage. */ fd = open ("conftest.mmap", O_RDWR); if (fd < 0) - return 1; + exit (1); data2 = (char *) malloc (2 * pagesize); if (!data2) - return 1; - data2 += (pagesize - ((long int) data2 & (pagesize - 1))) & (pagesize - 1); + exit (1); + data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1); if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FIXED, fd, 0L)) - return 1; + exit (1); for (i = 0; i < pagesize; ++i) if (*(data + i) != *(data2 + i)) - return 1; + exit (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 @@ -17095,33 +14983,24 @@ main () *(data2 + i) = *(data2 + i) + 1; data3 = (char *) malloc (pagesize); if (!data3) - return 1; + exit (1); if (read (fd, data3, pagesize) != pagesize) - return 1; + exit (1); for (i = 0; i < pagesize; ++i) if (*(data + i) != *(data3 + i)) - return 1; + exit (1); close (fd); - return 0; + 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -17134,13 +15013,11 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_mmap_fixed_mapped=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 -echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 +echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6 if test $ac_cv_func_mmap_fixed_mapped = yes; then cat >>confdefs.h <<\_ACEOF @@ -17163,9 +15040,9 @@ for ac_func in __argz_count __argz_next __argz_stringify dcgettext mempcpy \ munmap stpcpy strcspn strdup do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -17191,59 +15068,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -17252,15 +15123,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -17286,19 +15155,18 @@ fi for ac_header in wctype.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -17309,36 +15177,24 @@ $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -17347,16 +15203,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -17365,13 +15220,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -17395,10 +15245,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -17422,24 +15271,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX @%:@@%:@ ------------------------------- @%:@@%:@ @%:@@%:@ Report this to bug-bash@gnu.org @%:@@%:@ @%:@@%:@ ------------------------------- @%:@@%:@ _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -17455,19 +15305,18 @@ done for ac_header in wchar.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -17478,36 +15327,24 @@ $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -17516,16 +15353,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -17534,13 +15370,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -17564,10 +15395,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -17591,24 +15421,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX @%:@@%:@ ------------------------------- @%:@@%:@ @%:@@%:@ Report this to bug-bash@gnu.org @%:@@%:@ @%:@@%:@ ------------------------------- @%:@@%:@ _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -17624,19 +15455,18 @@ done for ac_header in langinfo.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -17647,36 +15477,24 @@ $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -17685,16 +15503,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -17703,13 +15520,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -17733,10 +15545,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -17760,24 +15571,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX @%:@@%:@ ------------------------------- @%:@@%:@ @%:@@%:@ Report this to bug-bash@gnu.org @%:@@%:@ @%:@@%:@ ------------------------------- @%:@@%:@ _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -17790,8 +15602,8 @@ fi done -{ echo "$as_me:$LINENO: checking for mbsrtowcs" >&5 -echo $ECHO_N "checking for mbsrtowcs... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for mbsrtowcs" >&5 +echo $ECHO_N "checking for mbsrtowcs... $ECHO_C" >&6 if test "${ac_cv_func_mbsrtowcs+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -17818,59 +15630,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_mbsrtowcs) || defined (__stub___mbsrtowcs) choke me +#else +char (*f) () = mbsrtowcs; +#endif +#ifdef __cplusplus +} #endif int main () { -return mbsrtowcs (); +return f != 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -17879,14 +15685,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func_mbsrtowcs=no +ac_cv_func_mbsrtowcs=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_mbsrtowcs" >&5 -echo "${ECHO_T}$ac_cv_func_mbsrtowcs" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func_mbsrtowcs" >&5 +echo "${ECHO_T}$ac_cv_func_mbsrtowcs" >&6 if test $ac_cv_func_mbsrtowcs = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_MBSRTOWCS 1 @@ -17894,9 +15699,9 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for mbrlen" >&5 -echo $ECHO_N "checking for mbrlen... $ECHO_C" >&6; } -if test "${ac_cv_func_mbrlen+set}" = set; then +echo "$as_me:$LINENO: checking for mbrtowc" >&5 +echo $ECHO_N "checking for mbrtowc... $ECHO_C" >&6 +if test "${ac_cv_func_mbrtowc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -17905,12 +15710,12 @@ _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. +/* Define mbrtowc to an innocuous variant, in case declares mbrtowc. For example, HP-UX 11i declares gettimeofday. */ -#define mbrlen innocuous_mbrlen +#define mbrtowc innocuous_mbrtowc /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char mbrlen (); below. + which can conflict with char mbrtowc (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ @@ -17920,88 +15725,80 @@ cat >>conftest.$ac_ext <<_ACEOF # include #endif -#undef mbrlen +#undef mbrtowc -/* 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif -char mbrlen (); +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char mbrtowc (); /* 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 +#if defined (__stub_mbrtowc) || defined (__stub___mbrtowc) choke me +#else +char (*f) () = mbrtowc; +#endif +#ifdef __cplusplus +} #endif int main () { -return mbrlen (); +return f != mbrtowc; ; 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_func_mbrlen=yes + ac_cv_func_mbrtowc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func_mbrlen=no +ac_cv_func_mbrtowc=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_mbrlen" >&5 -echo "${ECHO_T}$ac_cv_func_mbrlen" >&6; } -if test $ac_cv_func_mbrlen = yes; then +echo "$as_me:$LINENO: result: $ac_cv_func_mbrtowc" >&5 +echo "${ECHO_T}$ac_cv_func_mbrtowc" >&6 +if test $ac_cv_func_mbrtowc = yes; then cat >>confdefs.h <<\_ACEOF -@%:@define HAVE_MBRLEN 1 +@%:@define HAVE_MBRTOWC 1 _ACEOF fi - -{ echo "$as_me:$LINENO: checking for wcrtomb" >&5 -echo $ECHO_N "checking for wcrtomb... $ECHO_C" >&6; } -if test "${ac_cv_func_wcrtomb+set}" = set; then +echo "$as_me:$LINENO: checking for mbrlen" >&5 +echo $ECHO_N "checking for mbrlen... $ECHO_C" >&6 +if test "${ac_cv_func_mbrlen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -18010,12 +15807,12 @@ _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. +/* Define mbrlen to an innocuous variant, in case declares mbrlen. For example, HP-UX 11i declares gettimeofday. */ -#define wcrtomb innocuous_wcrtomb +#define mbrlen innocuous_mbrlen /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char wcrtomb (); below. + which can conflict with char mbrlen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ @@ -18025,87 +15822,80 @@ cat >>conftest.$ac_ext <<_ACEOF # include #endif -#undef wcrtomb +#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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif -char wcrtomb (); +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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_wcrtomb || defined __stub___wcrtomb +#if defined (__stub_mbrlen) || defined (__stub___mbrlen) choke me +#else +char (*f) () = mbrlen; +#endif +#ifdef __cplusplus +} #endif int main () { -return wcrtomb (); +return f != 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_func_wcrtomb=yes + ac_cv_func_mbrlen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func_wcrtomb=no +ac_cv_func_mbrlen=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_wcrtomb" >&5 -echo "${ECHO_T}$ac_cv_func_wcrtomb" >&6; } -if test $ac_cv_func_wcrtomb = yes; then +echo "$as_me:$LINENO: result: $ac_cv_func_mbrlen" >&5 +echo "${ECHO_T}$ac_cv_func_mbrlen" >&6 +if test $ac_cv_func_mbrlen = yes; then cat >>confdefs.h <<\_ACEOF -@%:@define HAVE_WCRTOMB 1 +@%:@define HAVE_MBRLEN 1 _ACEOF fi -{ echo "$as_me:$LINENO: checking for wcscoll" >&5 -echo $ECHO_N "checking for wcscoll... $ECHO_C" >&6; } -if test "${ac_cv_func_wcscoll+set}" = set; then +echo "$as_me:$LINENO: checking for wctomb" >&5 +echo $ECHO_N "checking for wctomb... $ECHO_C" >&6 +if test "${ac_cv_func_wctomb+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -18114,12 +15904,12 @@ _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. +/* Define wctomb to an innocuous variant, in case declares wctomb. For example, HP-UX 11i declares gettimeofday. */ -#define wcscoll innocuous_wcscoll +#define wctomb innocuous_wctomb /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char wcscoll (); below. + which can conflict with char wctomb (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ @@ -18129,87 +15919,80 @@ cat >>conftest.$ac_ext <<_ACEOF # include #endif -#undef wcscoll +#undef wctomb -/* 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif -char wcscoll (); +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char wctomb (); /* 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 +#if defined (__stub_wctomb) || defined (__stub___wctomb) choke me +#else +char (*f) () = wctomb; +#endif +#ifdef __cplusplus +} #endif int main () { -return wcscoll (); +return f != wctomb; ; 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_func_wcscoll=yes + ac_cv_func_wctomb=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func_wcscoll=no +ac_cv_func_wctomb=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_wcscoll" >&5 -echo "${ECHO_T}$ac_cv_func_wcscoll" >&6; } -if test $ac_cv_func_wcscoll = yes; then +echo "$as_me:$LINENO: result: $ac_cv_func_wctomb" >&5 +echo "${ECHO_T}$ac_cv_func_wctomb" >&6 +if test $ac_cv_func_wctomb = yes; then cat >>confdefs.h <<\_ACEOF -@%:@define HAVE_WCSCOLL 1 +@%:@define HAVE_WCTOMB 1 _ACEOF fi -{ echo "$as_me:$LINENO: checking for wcsdup" >&5 -echo $ECHO_N "checking for wcsdup... $ECHO_C" >&6; } -if test "${ac_cv_func_wcsdup+set}" = set; then +echo "$as_me:$LINENO: checking for wcwidth" >&5 +echo $ECHO_N "checking for wcwidth... $ECHO_C" >&6 +if test "${ac_cv_func_wcwidth+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -18218,12 +16001,12 @@ _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. +/* Define wcwidth to an innocuous variant, in case declares wcwidth. For example, HP-UX 11i declares gettimeofday. */ -#define wcsdup innocuous_wcsdup +#define wcwidth innocuous_wcwidth /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char wcsdup (); below. + which can conflict with char wcwidth (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ @@ -18233,87 +16016,80 @@ cat >>conftest.$ac_ext <<_ACEOF # include #endif -#undef wcsdup +#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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif -char wcsdup (); +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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_wcsdup || defined __stub___wcsdup +#if defined (__stub_wcwidth) || defined (__stub___wcwidth) choke me +#else +char (*f) () = wcwidth; +#endif +#ifdef __cplusplus +} #endif int main () { -return wcsdup (); +return f != 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_func_wcsdup=yes + ac_cv_func_wcwidth=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func_wcsdup=no +ac_cv_func_wcwidth=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_wcsdup" >&5 -echo "${ECHO_T}$ac_cv_func_wcsdup" >&6; } -if test $ac_cv_func_wcsdup = yes; then +echo "$as_me:$LINENO: result: $ac_cv_func_wcwidth" >&5 +echo "${ECHO_T}$ac_cv_func_wcwidth" >&6 +if test $ac_cv_func_wcwidth = yes; then cat >>confdefs.h <<\_ACEOF -@%:@define HAVE_WCSDUP 1 +@%:@define HAVE_WCWIDTH 1 _ACEOF fi -{ echo "$as_me:$LINENO: checking for wcwidth" >&5 -echo $ECHO_N "checking for wcwidth... $ECHO_C" >&6; } -if test "${ac_cv_func_wcwidth+set}" = set; then +echo "$as_me:$LINENO: checking for wcsdup" >&5 +echo $ECHO_N "checking for wcsdup... $ECHO_C" >&6 +if test "${ac_cv_func_wcsdup+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -18322,12 +16098,12 @@ _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. +/* Define wcsdup to an innocuous variant, in case declares wcsdup. For example, HP-UX 11i declares gettimeofday. */ -#define wcwidth innocuous_wcwidth +#define wcsdup innocuous_wcsdup /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char wcwidth (); below. + which can conflict with char wcsdup (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ @@ -18337,86 +16113,79 @@ cat >>conftest.$ac_ext <<_ACEOF # include #endif -#undef wcwidth +#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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif -char wcwidth (); +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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_wcwidth || defined __stub___wcwidth +#if defined (__stub_wcsdup) || defined (__stub___wcsdup) choke me +#else +char (*f) () = wcsdup; +#endif +#ifdef __cplusplus +} #endif int main () { -return wcwidth (); +return f != 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_func_wcwidth=yes + ac_cv_func_wcsdup=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func_wcwidth=no +ac_cv_func_wcsdup=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_wcwidth" >&5 -echo "${ECHO_T}$ac_cv_func_wcwidth" >&6; } -if test $ac_cv_func_wcwidth = yes; then +echo "$as_me:$LINENO: result: $ac_cv_func_wcsdup" >&5 +echo "${ECHO_T}$ac_cv_func_wcsdup" >&6 +if test $ac_cv_func_wcsdup = yes; then cat >>confdefs.h <<\_ACEOF -@%:@define HAVE_WCWIDTH 1 +@%:@define HAVE_WCSDUP 1 _ACEOF fi -{ echo "$as_me:$LINENO: checking for wctype" >&5 -echo $ECHO_N "checking for wctype... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for wctype" >&5 +echo $ECHO_N "checking for wctype... $ECHO_C" >&6 if test "${ac_cv_func_wctype+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -18443,59 +16212,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_wctype) || defined (__stub___wctype) choke me +#else +char (*f) () = wctype; +#endif +#ifdef __cplusplus +} #endif int main () { -return wctype (); +return f != 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -18504,14 +16267,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func_wctype=no +ac_cv_func_wctype=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_wctype" >&5 -echo "${ECHO_T}$ac_cv_func_wctype" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func_wctype" >&5 +echo "${ECHO_T}$ac_cv_func_wctype" >&6 if test $ac_cv_func_wctype = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_WCTYPE 1 @@ -18520,10 +16282,9 @@ _ACEOF fi - - { echo "$as_me:$LINENO: checking whether mbrtowc and mbstate_t are properly declared" >&5 -echo $ECHO_N "checking whether mbrtowc and mbstate_t are properly declared... $ECHO_C" >&6; } -if test "${ac_cv_func_mbrtowc+set}" = set; then +echo "$as_me:$LINENO: checking for mbstate_t" >&5 +echo $ECHO_N "checking for mbstate_t... $ECHO_C" >&6 +if test "${bash_cv_have_mbstate_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -18532,198 +16293,62 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -@%:@include + +#include int main () { -wchar_t wc; - char const s[] = ""; - size_t n = 1; - mbstate_t state; - return ! (sizeof state && (mbrtowc) (&wc, s, n, &state)); + + mbstate_t ps; + mbstate_t *psp; + psp = (mbstate_t *)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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_func_mbrtowc=yes + bash_cv_have_mbstate_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func_mbrtowc=no +bash_cv_have_mbstate_t=no fi - -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_mbrtowc" >&5 -echo "${ECHO_T}$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 +echo "$as_me:$LINENO: result: $bash_cv_have_mbstate_t" >&5 +echo "${ECHO_T}$bash_cv_have_mbstate_t" >&6 +if test $bash_cv_have_mbstate_t = 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=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&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 "echo \"\$as_me:$LINENO: $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 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - -{ echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 -echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 +echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6 if test "${bash_cv_langinfo_codeset+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -18743,36 +16368,24 @@ char* cs = nl_langinfo(CODESET); } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -18781,14 +16394,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - bash_cv_langinfo_codeset=no +bash_cv_langinfo_codeset=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_langinfo_codeset" >&5 -echo "${ECHO_T}$bash_cv_langinfo_codeset" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_langinfo_codeset" >&5 +echo "${ECHO_T}$bash_cv_langinfo_codeset" >&6 if test $bash_cv_langinfo_codeset = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_LANGINFO_CODESET 1 @@ -18796,244 +16408,12 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for wchar_t in wchar.h" >&5 -echo $ECHO_N "checking for wchar_t in wchar.h... $ECHO_C" >&6; } -if test "${bash_cv_type_wchar_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&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 "echo \"\$as_me:$LINENO: $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 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - bash_cv_type_wchar_t=yes -else - 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 -{ echo "$as_me:$LINENO: result: $bash_cv_type_wchar_t" >&5 -echo "${ECHO_T}$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 - -{ echo "$as_me:$LINENO: checking for wctype_t in wctype.h" >&5 -echo $ECHO_N "checking for wctype_t in wctype.h... $ECHO_C" >&6; } -if test "${bash_cv_type_wctype_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&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 "echo \"\$as_me:$LINENO: $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 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - bash_cv_type_wctype_t=yes -else - 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 -{ echo "$as_me:$LINENO: result: $bash_cv_type_wctype_t" >&5 -echo "${ECHO_T}$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 - -{ echo "$as_me:$LINENO: checking for wint_t in wctype.h" >&5 -echo $ECHO_N "checking for wint_t in wctype.h... $ECHO_C" >&6; } -if test "${bash_cv_type_wint_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&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 "echo \"\$as_me:$LINENO: $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 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - bash_cv_type_wint_t=yes -else - 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 -{ echo "$as_me:$LINENO: result: $bash_cv_type_wint_t" >&5 -echo "${ECHO_T}$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 "$opt_static_link" != yes; then -{ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -19046,52 +16426,40 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char dlopen (); int main () { -return dlopen (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -19100,15 +16468,14 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_dl_dlopen=no +ac_cv_lib_dl_dlopen=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then cat >>confdefs.h <<_ACEOF @%:@define HAVE_LIBDL 1 @@ -19124,9 +16491,9 @@ fi for ac_func in dlopen dlclose dlsym do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -19152,59 +16519,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -19213,15 +16574,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -19232,8 +16591,8 @@ done fi -{ echo "$as_me:$LINENO: checking whether sys_siglist is declared" >&5 -echo $ECHO_N "checking whether sys_siglist is declared... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether sys_siglist is declared" >&5 +echo $ECHO_N "checking whether sys_siglist is declared... $ECHO_C" >&6 if test "${ac_cv_have_decl_sys_siglist+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -19255,7 +16614,6 @@ main () { #ifndef sys_siglist char *p = (char *) sys_siglist; - return !p; #endif ; @@ -19263,36 +16621,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -19301,13 +16647,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_have_decl_sys_siglist=no +ac_cv_have_decl_sys_siglist=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_sys_siglist" >&5 -echo "${ECHO_T}$ac_cv_have_decl_sys_siglist" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_have_decl_sys_siglist" >&5 +echo "${ECHO_T}$ac_cv_have_decl_sys_siglist" >&6 if test $ac_cv_have_decl_sys_siglist = yes; then cat >>confdefs.h <<_ACEOF @@ -19328,8 +16673,8 @@ fi if test "$ac_cv_func_inet_aton" != 'yes'; then -{ echo "$as_me:$LINENO: checking for inet_aton" >&5 -echo $ECHO_N "checking for inet_aton... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for inet_aton" >&5 +echo $ECHO_N "checking for inet_aton... $ECHO_C" >&6 if test "${bash_cv_func_inet_aton+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -19353,36 +16698,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -19391,24 +16724,25 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - bash_cv_func_inet_aton=no +bash_cv_func_inet_aton=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_func_inet_aton" >&5 -echo "${ECHO_T}$bash_cv_func_inet_aton" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_func_inet_aton" >&5 +echo "${ECHO_T}$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 " $LIB@&t@OBJS " in + case $LIB@&t@OBJS in + "inet_aton.$ac_objext" | \ + *" inet_aton.$ac_objext" | \ + "inet_aton.$ac_objext "* | \ *" inet_aton.$ac_objext "* ) ;; - *) LIB@&t@OBJS="$LIB@&t@OBJS inet_aton.$ac_objext" - ;; + *) LIB@&t@OBJS="$LIB@&t@OBJS inet_aton.$ac_objext" ;; esac fi @@ -19417,8 +16751,8 @@ fi case "$host_os" in irix4*) -{ echo "$as_me:$LINENO: checking for getpwent in -lsun" >&5 -echo $ECHO_N "checking for getpwent in -lsun... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for getpwent in -lsun" >&5 +echo $ECHO_N "checking for getpwent in -lsun... $ECHO_C" >&6 if test "${ac_cv_lib_sun_getpwent+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -19431,52 +16765,40 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char getpwent (); int main () { -return getpwent (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -19485,15 +16807,14 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_sun_getpwent=no +ac_cv_lib_sun_getpwent=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_sun_getpwent" >&5 -echo "${ECHO_T}$ac_cv_lib_sun_getpwent" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_sun_getpwent" >&5 +echo "${ECHO_T}$ac_cv_lib_sun_getpwent" >&6 if test $ac_cv_lib_sun_getpwent = yes; then cat >>confdefs.h <<_ACEOF @%:@define HAVE_LIBSUN 1 @@ -19510,15 +16831,15 @@ if test "$ac_cv_func_getpeername" = no; then if test "X$bash_cv_have_socklib" = "X"; then _bash_needmsg= else -{ echo "$as_me:$LINENO: checking for socket library" >&5 -echo $ECHO_N "checking for socket library... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for socket library" >&5 +echo $ECHO_N "checking for socket library... $ECHO_C" >&6 _bash_needmsg=yes fi if test "${bash_cv_have_socklib+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - { echo "$as_me:$LINENO: checking for getpeername in -lsocket" >&5 -echo $ECHO_N "checking for getpeername in -lsocket... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for getpeername in -lsocket" >&5 +echo $ECHO_N "checking for getpeername in -lsocket... $ECHO_C" >&6 if test "${ac_cv_lib_socket_getpeername+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -19531,52 +16852,40 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char getpeername (); int main () { -return getpeername (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -19585,15 +16894,14 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_socket_getpeername=no +ac_cv_lib_socket_getpeername=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_getpeername" >&5 -echo "${ECHO_T}$ac_cv_lib_socket_getpeername" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_socket_getpeername" >&5 +echo "${ECHO_T}$ac_cv_lib_socket_getpeername" >&6 if test $ac_cv_lib_socket_getpeername = yes; then bash_cv_have_socklib=yes else @@ -19603,8 +16911,8 @@ fi fi if test "X$_bash_needmsg" = Xyes; then - { echo "$as_me:$LINENO: result: $bash_cv_have_socklib" >&5 -echo "${ECHO_T}$bash_cv_have_socklib" >&6; } + echo "$as_me:$LINENO: result: $bash_cv_have_socklib" >&5 +echo "${ECHO_T}$bash_cv_have_socklib" >&6 _bash_needmsg= fi if test $bash_cv_have_socklib = yes; then @@ -19612,15 +16920,15 @@ if test $bash_cv_have_socklib = yes; then if test "X$bash_cv_have_libnsl" = "X"; then _bash_needmsg= else - { echo "$as_me:$LINENO: checking for libnsl" >&5 -echo $ECHO_N "checking for libnsl... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for libnsl" >&5 +echo $ECHO_N "checking for libnsl... $ECHO_C" >&6 _bash_needmsg=yes fi if test "${bash_cv_have_libnsl+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - { echo "$as_me:$LINENO: checking for t_open in -lnsl" >&5 -echo $ECHO_N "checking for t_open in -lnsl... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for t_open in -lnsl" >&5 +echo $ECHO_N "checking for t_open in -lnsl... $ECHO_C" >&6 if test "${ac_cv_lib_nsl_t_open+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -19633,52 +16941,40 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char t_open (); int main () { -return t_open (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -19687,15 +16983,14 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_nsl_t_open=no +ac_cv_lib_nsl_t_open=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_t_open" >&5 -echo "${ECHO_T}$ac_cv_lib_nsl_t_open" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_t_open" >&5 +echo "${ECHO_T}$ac_cv_lib_nsl_t_open" >&6 if test $ac_cv_lib_nsl_t_open = yes; then bash_cv_have_libnsl=yes else @@ -19705,8 +17000,8 @@ fi fi if test "X$_bash_needmsg" = Xyes; then - { echo "$as_me:$LINENO: result: $bash_cv_have_libnsl" >&5 -echo "${ECHO_T}$bash_cv_have_libnsl" >&6; } + echo "$as_me:$LINENO: result: $bash_cv_have_libnsl" >&5 +echo "${ECHO_T}$bash_cv_have_libnsl" >&6 _bash_needmsg= fi if test $bash_cv_have_libnsl = yes; then @@ -19729,8 +17024,8 @@ if test "$ac_cv_func_gethostbyname" = no; then if test "X$bash_cv_have_gethostbyname" = "X"; then _bash_needmsg=yes else -{ echo "$as_me:$LINENO: checking for gethostbyname in socket library" >&5 -echo $ECHO_N "checking for gethostbyname in socket library... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for gethostbyname in socket library" >&5 +echo $ECHO_N "checking for gethostbyname in socket library... $ECHO_C" >&6 _bash_needmsg= fi if test "${bash_cv_have_gethostbyname+set}" = set; then @@ -19754,36 +17049,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -19792,20 +17075,19 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - bash_cv_have_gethostbyname=no +bash_cv_have_gethostbyname=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi if test "X$_bash_needmsg" = Xyes; then - { echo "$as_me:$LINENO: checking for gethostbyname in socket library" >&5 -echo $ECHO_N "checking for gethostbyname in socket library... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for gethostbyname in socket library" >&5 +echo $ECHO_N "checking for gethostbyname in socket library... $ECHO_C" >&6 fi -{ echo "$as_me:$LINENO: result: $bash_cv_have_gethostbyname" >&5 -echo "${ECHO_T}$bash_cv_have_gethostbyname" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_have_gethostbyname" >&5 +echo "${ECHO_T}$bash_cv_have_gethostbyname" >&6 if test "$bash_cv_have_gethostbyname" = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_GETHOSTBYNAME 1 @@ -19815,8 +17097,8 @@ fi fi -{ echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5 -echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5 +echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6 if test "${ac_cv_type_uid_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -19838,8 +17120,8 @@ fi rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 -echo "${ECHO_T}$ac_cv_type_uid_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 +echo "${ECHO_T}$ac_cv_type_uid_t" >&6 if test $ac_cv_type_uid_t = no; then cat >>confdefs.h <<\_ACEOF @@ -19853,8 +17135,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking type of array argument to getgroups" >&5 -echo $ECHO_N "checking type of array argument to getgroups... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking type of array argument to getgroups" >&5 +echo $ECHO_N "checking type of array argument to getgroups... $ECHO_C" >&6 if test "${ac_cv_type_getgroups+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -19868,7 +17150,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Thanks to Mike Rendell for this test. */ -$ac_includes_default +#include #define NGID 256 #undef MAX #define MAX(x, y) ((x) > (y) ? (x) : (y)) @@ -19878,7 +17160,7 @@ main () { gid_t gidset[NGID]; int i, n; - union { gid_t gval; long int lval; } val; + union { gid_t gval; long lval; } val; val.lval = -1; for (i = 0; i < NGID; i++) @@ -19886,28 +17168,18 @@ main () 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; + happens when gid_t is short but getgroups modifies an array of ints. */ + exit ((n > 0 && gidset[n] != val.gval) ? 1 : 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -19920,10 +17192,8 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_type_getgroups=int fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core 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. */ @@ -19944,16 +17214,16 @@ rm -f conftest* fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_getgroups" >&5 -echo "${ECHO_T}$ac_cv_type_getgroups" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_getgroups" >&5 +echo "${ECHO_T}$ac_cv_type_getgroups" >&6 cat >>confdefs.h <<_ACEOF @%:@define GETGROUPS_T $ac_cv_type_getgroups _ACEOF -{ echo "$as_me:$LINENO: checking for off_t" >&5 -echo $ECHO_N "checking for off_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for off_t" >&5 +echo $ECHO_N "checking for off_t... $ECHO_C" >&6 if test "${ac_cv_type_off_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -19964,49 +17234,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef off_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((off_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -20015,25 +17272,24 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_off_t=no +ac_cv_type_off_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 -echo "${ECHO_T}$ac_cv_type_off_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 +echo "${ECHO_T}$ac_cv_type_off_t" >&6 if test $ac_cv_type_off_t = yes; then : else cat >>confdefs.h <<_ACEOF -@%:@define off_t long int +@%:@define off_t long _ACEOF fi -{ echo "$as_me:$LINENO: checking for mode_t" >&5 -echo $ECHO_N "checking for mode_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for mode_t" >&5 +echo $ECHO_N "checking for mode_t... $ECHO_C" >&6 if test "${ac_cv_type_mode_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -20044,49 +17300,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef mode_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((mode_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -20095,13 +17338,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_mode_t=no +ac_cv_type_mode_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5 -echo "${ECHO_T}$ac_cv_type_mode_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5 +echo "${ECHO_T}$ac_cv_type_mode_t" >&6 if test $ac_cv_type_mode_t = yes; then : else @@ -20112,8 +17354,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5 -echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5 +echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6 if test "${ac_cv_type_uid_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -20135,8 +17377,8 @@ fi rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 -echo "${ECHO_T}$ac_cv_type_uid_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 +echo "${ECHO_T}$ac_cv_type_uid_t" >&6 if test $ac_cv_type_uid_t = no; then cat >>confdefs.h <<\_ACEOF @@ -20150,8 +17392,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for pid_t" >&5 -echo $ECHO_N "checking for pid_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for pid_t" >&5 +echo $ECHO_N "checking for pid_t... $ECHO_C" >&6 if test "${ac_cv_type_pid_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -20162,49 +17404,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef pid_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((pid_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -20213,13 +17442,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_pid_t=no +ac_cv_type_pid_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 -echo "${ECHO_T}$ac_cv_type_pid_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 +echo "${ECHO_T}$ac_cv_type_pid_t" >&6 if test $ac_cv_type_pid_t = yes; then : else @@ -20230,8 +17458,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for size_t" >&5 -echo $ECHO_N "checking for size_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for size_t" >&5 +echo $ECHO_N "checking for size_t... $ECHO_C" >&6 if test "${ac_cv_type_size_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -20242,49 +17470,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef size_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((size_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -20293,25 +17508,24 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_size_t=no +ac_cv_type_size_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 -echo "${ECHO_T}$ac_cv_type_size_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +echo "${ECHO_T}$ac_cv_type_size_t" >&6 if test $ac_cv_type_size_t = yes; then : else cat >>confdefs.h <<_ACEOF -@%:@define size_t unsigned int +@%:@define size_t unsigned _ACEOF fi -{ echo "$as_me:$LINENO: checking for ssize_t" >&5 -echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for ssize_t" >&5 +echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6 if test "${ac_cv_type_ssize_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -20322,49 +17536,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef ssize_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((ssize_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -20373,13 +17574,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_ssize_t=no +ac_cv_type_ssize_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5 -echo "${ECHO_T}$ac_cv_type_ssize_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5 +echo "${ECHO_T}$ac_cv_type_ssize_t" >&6 if test $ac_cv_type_ssize_t = yes; then : else @@ -20390,8 +17590,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for time_t" >&5 -echo $ECHO_N "checking for time_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for time_t" >&5 +echo $ECHO_N "checking for time_t... $ECHO_C" >&6 if test "${ac_cv_type_time_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -20402,49 +17602,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef time_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((time_t *) 0) return 0; -if (sizeof (ac__type_new_)) +if (sizeof (time_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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -20453,13 +17640,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_time_t=no +ac_cv_type_time_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_time_t" >&5 -echo "${ECHO_T}$ac_cv_type_time_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_time_t" >&5 +echo "${ECHO_T}$ac_cv_type_time_t" >&6 if test $ac_cv_type_time_t = yes; then : else @@ -20472,8 +17658,8 @@ fi -{ echo "$as_me:$LINENO: checking for long long" >&5 -echo $ECHO_N "checking for long long... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for long long" >&5 +echo $ECHO_N "checking for long long... $ECHO_C" >&6 if test "${bash_cv_type_long_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -20497,36 +17683,24 @@ return ll << i | ll >> i | llm / ll | llm % ll; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -20535,14 +17709,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - bash_cv_type_long_long='long' +bash_cv_type_long_long='long' fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_type_long_long" >&5 -echo "${ECHO_T}$bash_cv_type_long_long" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_type_long_long" >&5 +echo "${ECHO_T}$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 @@ -20551,8 +17724,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for unsigned long long" >&5 -echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for unsigned long long" >&5 +echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6 if test "${bash_cv_type_unsigned_long_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -20576,36 +17749,24 @@ return ull << i | ull >> i | ullmax / ull | ullmax % ull; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -20614,14 +17775,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - bash_cv_type_unsigned_long_long='unsigned long' +bash_cv_type_unsigned_long_long='unsigned long' fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_type_unsigned_long_long" >&5 -echo "${ECHO_T}$bash_cv_type_unsigned_long_long" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_type_unsigned_long_long" >&5 +echo "${ECHO_T}$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 @@ -20630,8 +17790,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking return type of signal handlers" >&5 -echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking return type of signal handlers" >&5 +echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 if test "${ac_cv_type_signal+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -20643,61 +17803,56 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include +#ifdef signal +# undef signal +#endif +#ifdef __cplusplus +extern "C" void (*signal (int, void (*)(int)))(int); +#else +void (*signal ()) (); +#endif int main () { -return *(signal (0, 0)) (0) == 1; +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_type_signal=int + ac_cv_type_signal=void else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_signal=void +ac_cv_type_signal=int fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 -echo "${ECHO_T}$ac_cv_type_signal" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 +echo "${ECHO_T}$ac_cv_type_signal" >&6 cat >>confdefs.h <<_ACEOF @%:@define RETSIGTYPE $ac_cv_type_signal @@ -20705,8 +17860,8 @@ _ACEOF -{ echo "$as_me:$LINENO: checking for char" >&5 -echo $ECHO_N "checking for char... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for char" >&5 +echo $ECHO_N "checking for char... $ECHO_C" >&6 if test "${ac_cv_type_char+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -20717,49 +17872,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef char ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((char *) 0) return 0; -if (sizeof (ac__type_new_)) +if (sizeof (char)) 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -20768,21 +17910,20 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_char=no +ac_cv_type_char=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_char" >&5 -echo "${ECHO_T}$ac_cv_type_char" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_char" >&5 +echo "${ECHO_T}$ac_cv_type_char" >&6 -{ echo "$as_me:$LINENO: checking size of char" >&5 -echo $ECHO_N "checking size of char... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking size of char" >&5 +echo $ECHO_N "checking size of char... $ECHO_C" >&6 if test "${ac_cv_sizeof_char+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$ac_cv_type_char" = yes; then - # The cast to long int works around a bug in the HP C Compiler + # The cast to unsigned long 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. @@ -20795,11 +17936,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef char ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (char))) >= 0)@:>@; test_array @<:@0@:>@ = 0 ; @@ -20807,36 +17947,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -20849,11 +17977,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef char ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (char))) <= $ac_mid)@:>@; test_array @<:@0@:>@ = 0 ; @@ -20861,36 +17988,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -20899,32 +18014,30 @@ else 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` +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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF +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 - typedef char ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (char))) < 0)@:>@; test_array @<:@0@:>@ = 0 ; @@ -20932,36 +18045,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -20974,11 +18075,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef char ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (char))) >= $ac_mid)@:>@; test_array @<:@0@:>@ = 0 ; @@ -20986,36 +18086,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21024,27 +18112,24 @@ else 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_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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo= ac_hi= +ac_lo= ac_hi= fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f 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` @@ -21055,11 +18140,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef char ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (char))) <= $ac_mid)@:>@; test_array @<:@0@:>@ = 0 ; @@ -21067,36 +18151,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21105,19 +18177,25 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo=`expr '(' $ac_mid ')' + 1` +ac_lo=`expr '(' $ac_mid ')' + 1` fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_char=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (char) +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (char), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (char) +echo "$as_me: error: cannot compute sizeof (char), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } ;; + { (exit 1); exit 1; }; } ;; esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -21126,9 +18204,8 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef char ac__type_sizeof_; -static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } -static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } +long longval () { return (long) (sizeof (char)); } +unsigned long ulongval () { return (long) (sizeof (char)); } @%:@include @%:@include int @@ -21137,44 +18214,35 @@ main () FILE *f = fopen ("conftest.val", "w"); if (! f) - return 1; - if (((long int) (sizeof (ac__type_sizeof_))) < 0) + exit (1); + if (((long) (sizeof (char))) < 0) { - long int i = longval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + long i = longval (); + if (i != ((long) (sizeof (char)))) + exit (1); fprintf (f, "%ld\n", i); } else { - unsigned long int i = ulongval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + unsigned long i = ulongval (); + if (i != ((long) (sizeof (char)))) + exit (1); fprintf (f, "%lu\n", i); } - return ferror (f) || fclose (f) != 0; + exit (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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21185,28 +18253,29 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (char) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (char), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (char) +echo "$as_me: error: cannot compute sizeof (char), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val else ac_cv_sizeof_char=0 fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_char" >&5 -echo "${ECHO_T}$ac_cv_sizeof_char" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_sizeof_char" >&5 +echo "${ECHO_T}$ac_cv_sizeof_char" >&6 cat >>confdefs.h <<_ACEOF @%:@define SIZEOF_CHAR $ac_cv_sizeof_char _ACEOF -{ echo "$as_me:$LINENO: checking for short" >&5 -echo $ECHO_N "checking for short... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for short" >&5 +echo $ECHO_N "checking for short... $ECHO_C" >&6 if test "${ac_cv_type_short+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -21217,49 +18286,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef short ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((short *) 0) return 0; -if (sizeof (ac__type_new_)) +if (sizeof (short)) 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21268,21 +18324,20 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_short=no +ac_cv_type_short=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_short" >&5 -echo "${ECHO_T}$ac_cv_type_short" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_short" >&5 +echo "${ECHO_T}$ac_cv_type_short" >&6 -{ echo "$as_me:$LINENO: checking size of short" >&5 -echo $ECHO_N "checking size of short... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking size of short" >&5 +echo $ECHO_N "checking size of short... $ECHO_C" >&6 if test "${ac_cv_sizeof_short+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$ac_cv_type_short" = yes; then - # The cast to long int works around a bug in the HP C Compiler + # The cast to unsigned long 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. @@ -21295,11 +18350,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef short ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (short))) >= 0)@:>@; test_array @<:@0@:>@ = 0 ; @@ -21307,36 +18361,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21349,11 +18391,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef short ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)@:>@; test_array @<:@0@:>@ = 0 ; @@ -21361,36 +18402,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21399,32 +18428,30 @@ else 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` +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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF +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 - typedef short ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (short))) < 0)@:>@; test_array @<:@0@:>@ = 0 ; @@ -21432,36 +18459,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21474,11 +18489,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef short ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (short))) >= $ac_mid)@:>@; test_array @<:@0@:>@ = 0 ; @@ -21486,36 +18500,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21524,27 +18526,24 @@ else 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_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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo= ac_hi= +ac_lo= ac_hi= fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f 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` @@ -21555,11 +18554,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef short ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)@:>@; test_array @<:@0@:>@ = 0 ; @@ -21567,36 +18565,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21605,19 +18591,25 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo=`expr '(' $ac_mid ')' + 1` +ac_lo=`expr '(' $ac_mid ')' + 1` fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_short=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (short) +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (short) +echo "$as_me: error: cannot compute sizeof (short), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } ;; + { (exit 1); exit 1; }; } ;; esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -21626,9 +18618,8 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef short ac__type_sizeof_; -static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } -static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } +long longval () { return (long) (sizeof (short)); } +unsigned long ulongval () { return (long) (sizeof (short)); } @%:@include @%:@include int @@ -21637,44 +18628,35 @@ main () FILE *f = fopen ("conftest.val", "w"); if (! f) - return 1; - if (((long int) (sizeof (ac__type_sizeof_))) < 0) + exit (1); + if (((long) (sizeof (short))) < 0) { - long int i = longval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + long i = longval (); + if (i != ((long) (sizeof (short)))) + exit (1); fprintf (f, "%ld\n", i); } else { - unsigned long int i = ulongval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + unsigned long i = ulongval (); + if (i != ((long) (sizeof (short)))) + exit (1); fprintf (f, "%lu\n", i); } - return ferror (f) || fclose (f) != 0; + exit (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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21685,28 +18667,29 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (short) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (short) +echo "$as_me: error: cannot compute sizeof (short), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val else ac_cv_sizeof_short=0 fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5 -echo "${ECHO_T}$ac_cv_sizeof_short" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5 +echo "${ECHO_T}$ac_cv_sizeof_short" >&6 cat >>confdefs.h <<_ACEOF @%:@define SIZEOF_SHORT $ac_cv_sizeof_short _ACEOF -{ echo "$as_me:$LINENO: checking for int" >&5 -echo $ECHO_N "checking for int... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for int" >&5 +echo $ECHO_N "checking for int... $ECHO_C" >&6 if test "${ac_cv_type_int+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -21717,49 +18700,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef int ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((int *) 0) return 0; -if (sizeof (ac__type_new_)) +if (sizeof (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;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21768,21 +18738,20 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_int=no +ac_cv_type_int=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5 -echo "${ECHO_T}$ac_cv_type_int" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5 +echo "${ECHO_T}$ac_cv_type_int" >&6 -{ echo "$as_me:$LINENO: checking size of int" >&5 -echo $ECHO_N "checking size of int... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking size of int" >&5 +echo $ECHO_N "checking size of int... $ECHO_C" >&6 if test "${ac_cv_sizeof_int+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$ac_cv_type_int" = yes; then - # The cast to long int works around a bug in the HP C Compiler + # The cast to unsigned long 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. @@ -21795,11 +18764,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef int ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (int))) >= 0)@:>@; test_array @<:@0@:>@ = 0 ; @@ -21807,36 +18775,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21849,11 +18805,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef int ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)@:>@; test_array @<:@0@:>@ = 0 ; @@ -21861,36 +18816,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21899,32 +18842,30 @@ else 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` +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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF +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 - typedef int ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (int))) < 0)@:>@; test_array @<:@0@:>@ = 0 ; @@ -21932,36 +18873,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21974,11 +18903,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef int ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (int))) >= $ac_mid)@:>@; test_array @<:@0@:>@ = 0 ; @@ -21986,36 +18914,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -22024,27 +18940,24 @@ else 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_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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo= ac_hi= +ac_lo= ac_hi= fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f 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` @@ -22055,11 +18968,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef int ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)@:>@; test_array @<:@0@:>@ = 0 ; @@ -22067,36 +18979,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -22105,19 +19005,25 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo=`expr '(' $ac_mid ')' + 1` +ac_lo=`expr '(' $ac_mid ')' + 1` fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_int=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int) +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (int) +echo "$as_me: error: cannot compute sizeof (int), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } ;; + { (exit 1); exit 1; }; } ;; esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -22126,9 +19032,8 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef int ac__type_sizeof_; -static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } -static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } +long longval () { return (long) (sizeof (int)); } +unsigned long ulongval () { return (long) (sizeof (int)); } @%:@include @%:@include int @@ -22137,44 +19042,35 @@ main () FILE *f = fopen ("conftest.val", "w"); if (! f) - return 1; - if (((long int) (sizeof (ac__type_sizeof_))) < 0) + exit (1); + if (((long) (sizeof (int))) < 0) { - long int i = longval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + long i = longval (); + if (i != ((long) (sizeof (int)))) + exit (1); fprintf (f, "%ld\n", i); } else { - unsigned long int i = ulongval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + unsigned long i = ulongval (); + if (i != ((long) (sizeof (int)))) + exit (1); fprintf (f, "%lu\n", i); } - return ferror (f) || fclose (f) != 0; + exit (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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -22185,28 +19081,29 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (int) +echo "$as_me: error: cannot compute sizeof (int), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val else ac_cv_sizeof_int=0 fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 -echo "${ECHO_T}$ac_cv_sizeof_int" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 +echo "${ECHO_T}$ac_cv_sizeof_int" >&6 cat >>confdefs.h <<_ACEOF @%:@define SIZEOF_INT $ac_cv_sizeof_int _ACEOF -{ echo "$as_me:$LINENO: checking for long" >&5 -echo $ECHO_N "checking for long... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for long" >&5 +echo $ECHO_N "checking for long... $ECHO_C" >&6 if test "${ac_cv_type_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -22217,49 +19114,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef long ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((long *) 0) return 0; -if (sizeof (ac__type_new_)) +if (sizeof (long)) 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -22268,21 +19152,20 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_long=no +ac_cv_type_long=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5 -echo "${ECHO_T}$ac_cv_type_long" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5 +echo "${ECHO_T}$ac_cv_type_long" >&6 -{ echo "$as_me:$LINENO: checking size of long" >&5 -echo $ECHO_N "checking size of long... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking size of long" >&5 +echo $ECHO_N "checking size of long... $ECHO_C" >&6 if test "${ac_cv_sizeof_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$ac_cv_type_long" = yes; then - # The cast to long int works around a bug in the HP C Compiler + # The cast to unsigned long 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. @@ -22295,11 +19178,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef long ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (long))) >= 0)@:>@; test_array @<:@0@:>@ = 0 ; @@ -22307,36 +19189,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -22349,11 +19219,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef long ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)@:>@; test_array @<:@0@:>@ = 0 ; @@ -22361,36 +19230,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -22399,32 +19256,30 @@ else 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` +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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF +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 - typedef long ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (long))) < 0)@:>@; test_array @<:@0@:>@ = 0 ; @@ -22432,36 +19287,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -22474,11 +19317,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef long ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (long))) >= $ac_mid)@:>@; test_array @<:@0@:>@ = 0 ; @@ -22486,36 +19328,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -22524,27 +19354,24 @@ else 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_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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo= ac_hi= +ac_lo= ac_hi= fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f 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` @@ -22555,11 +19382,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef long ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)@:>@; test_array @<:@0@:>@ = 0 ; @@ -22567,36 +19393,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -22605,19 +19419,25 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo=`expr '(' $ac_mid ')' + 1` +ac_lo=`expr '(' $ac_mid ')' + 1` fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_long=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long) +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long) +echo "$as_me: error: cannot compute sizeof (long), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } ;; + { (exit 1); exit 1; }; } ;; esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -22626,9 +19446,8 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef long ac__type_sizeof_; -static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } -static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } +long longval () { return (long) (sizeof (long)); } +unsigned long ulongval () { return (long) (sizeof (long)); } @%:@include @%:@include int @@ -22637,44 +19456,35 @@ main () FILE *f = fopen ("conftest.val", "w"); if (! f) - return 1; - if (((long int) (sizeof (ac__type_sizeof_))) < 0) + exit (1); + if (((long) (sizeof (long))) < 0) { - long int i = longval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + long i = longval (); + if (i != ((long) (sizeof (long)))) + exit (1); fprintf (f, "%ld\n", i); } else { - unsigned long int i = ulongval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + unsigned long i = ulongval (); + if (i != ((long) (sizeof (long)))) + exit (1); fprintf (f, "%lu\n", i); } - return ferror (f) || fclose (f) != 0; + exit (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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -22685,28 +19495,29 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long) +echo "$as_me: error: cannot compute sizeof (long), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val else ac_cv_sizeof_long=0 fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 -echo "${ECHO_T}$ac_cv_sizeof_long" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long" >&6 cat >>confdefs.h <<_ACEOF @%:@define SIZEOF_LONG $ac_cv_sizeof_long _ACEOF -{ echo "$as_me:$LINENO: checking for char *" >&5 -echo $ECHO_N "checking for char *... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for char *" >&5 +echo $ECHO_N "checking for char *... $ECHO_C" >&6 if test "${ac_cv_type_char_p+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -22717,49 +19528,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef char * ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((char * *) 0) return 0; -if (sizeof (ac__type_new_)) +if (sizeof (char *)) 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -22768,21 +19566,20 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_char_p=no +ac_cv_type_char_p=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_char_p" >&5 -echo "${ECHO_T}$ac_cv_type_char_p" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_char_p" >&5 +echo "${ECHO_T}$ac_cv_type_char_p" >&6 -{ echo "$as_me:$LINENO: checking size of char *" >&5 -echo $ECHO_N "checking size of char *... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking size of char *" >&5 +echo $ECHO_N "checking size of char *... $ECHO_C" >&6 if test "${ac_cv_sizeof_char_p+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$ac_cv_type_char_p" = yes; then - # The cast to long int works around a bug in the HP C Compiler + # The cast to unsigned long 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. @@ -22795,11 +19592,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef char * ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (char *))) >= 0)@:>@; test_array @<:@0@:>@ = 0 ; @@ -22807,36 +19603,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -22849,11 +19633,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef char * ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (char *))) <= $ac_mid)@:>@; test_array @<:@0@:>@ = 0 ; @@ -22861,36 +19644,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -22899,32 +19670,30 @@ else 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` +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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF +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 - typedef char * ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (char *))) < 0)@:>@; test_array @<:@0@:>@ = 0 ; @@ -22932,36 +19701,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -22974,11 +19731,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef char * ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (char *))) >= $ac_mid)@:>@; test_array @<:@0@:>@ = 0 ; @@ -22986,36 +19742,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -23024,27 +19768,24 @@ else 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_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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo= ac_hi= +ac_lo= ac_hi= fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f 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` @@ -23055,11 +19796,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef char * ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (char *))) <= $ac_mid)@:>@; test_array @<:@0@:>@ = 0 ; @@ -23067,36 +19807,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -23105,19 +19833,25 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo=`expr '(' $ac_mid ')' + 1` +ac_lo=`expr '(' $ac_mid ')' + 1` fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_char_p=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (char *) +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (char *), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (char *) +echo "$as_me: error: cannot compute sizeof (char *), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } ;; + { (exit 1); exit 1; }; } ;; esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -23126,9 +19860,8 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef char * ac__type_sizeof_; -static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } -static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } +long longval () { return (long) (sizeof (char *)); } +unsigned long ulongval () { return (long) (sizeof (char *)); } @%:@include @%:@include int @@ -23137,44 +19870,35 @@ main () FILE *f = fopen ("conftest.val", "w"); if (! f) - return 1; - if (((long int) (sizeof (ac__type_sizeof_))) < 0) + exit (1); + if (((long) (sizeof (char *))) < 0) { - long int i = longval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + long i = longval (); + if (i != ((long) (sizeof (char *)))) + exit (1); fprintf (f, "%ld\n", i); } else { - unsigned long int i = ulongval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + unsigned long i = ulongval (); + if (i != ((long) (sizeof (char *)))) + exit (1); fprintf (f, "%lu\n", i); } - return ferror (f) || fclose (f) != 0; + exit (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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -23185,28 +19909,29 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (char *) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (char *), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (char *) +echo "$as_me: error: cannot compute sizeof (char *), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val else ac_cv_sizeof_char_p=0 fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_char_p" >&5 -echo "${ECHO_T}$ac_cv_sizeof_char_p" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_sizeof_char_p" >&5 +echo "${ECHO_T}$ac_cv_sizeof_char_p" >&6 cat >>confdefs.h <<_ACEOF @%:@define SIZEOF_CHAR_P $ac_cv_sizeof_char_p _ACEOF -{ echo "$as_me:$LINENO: checking for double" >&5 -echo $ECHO_N "checking for double... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for double" >&5 +echo $ECHO_N "checking for double... $ECHO_C" >&6 if test "${ac_cv_type_double+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -23217,49 +19942,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef double ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((double *) 0) return 0; -if (sizeof (ac__type_new_)) +if (sizeof (double)) 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -23268,21 +19980,20 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_double=no +ac_cv_type_double=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_double" >&5 -echo "${ECHO_T}$ac_cv_type_double" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_double" >&5 +echo "${ECHO_T}$ac_cv_type_double" >&6 -{ echo "$as_me:$LINENO: checking size of double" >&5 -echo $ECHO_N "checking size of double... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking size of double" >&5 +echo $ECHO_N "checking size of double... $ECHO_C" >&6 if test "${ac_cv_sizeof_double+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$ac_cv_type_double" = yes; then - # The cast to long int works around a bug in the HP C Compiler + # The cast to unsigned long 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. @@ -23295,11 +20006,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef double ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (double))) >= 0)@:>@; test_array @<:@0@:>@ = 0 ; @@ -23307,36 +20017,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -23349,11 +20047,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef double ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (double))) <= $ac_mid)@:>@; test_array @<:@0@:>@ = 0 ; @@ -23361,36 +20058,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -23399,32 +20084,30 @@ else 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` +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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF +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 - typedef double ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (double))) < 0)@:>@; test_array @<:@0@:>@ = 0 ; @@ -23432,36 +20115,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -23474,11 +20145,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef double ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (double))) >= $ac_mid)@:>@; test_array @<:@0@:>@ = 0 ; @@ -23486,36 +20156,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -23524,27 +20182,24 @@ else 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_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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo= ac_hi= +ac_lo= ac_hi= fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f 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` @@ -23555,11 +20210,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef double ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (double))) <= $ac_mid)@:>@; test_array @<:@0@:>@ = 0 ; @@ -23567,36 +20221,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -23605,19 +20247,25 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo=`expr '(' $ac_mid ')' + 1` +ac_lo=`expr '(' $ac_mid ')' + 1` fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_double=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (double) +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (double) +echo "$as_me: error: cannot compute sizeof (double), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } ;; + { (exit 1); exit 1; }; } ;; esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -23626,9 +20274,8 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef double ac__type_sizeof_; -static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } -static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } +long longval () { return (long) (sizeof (double)); } +unsigned long ulongval () { return (long) (sizeof (double)); } @%:@include @%:@include int @@ -23637,44 +20284,35 @@ main () FILE *f = fopen ("conftest.val", "w"); if (! f) - return 1; - if (((long int) (sizeof (ac__type_sizeof_))) < 0) + exit (1); + if (((long) (sizeof (double))) < 0) { - long int i = longval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + long i = longval (); + if (i != ((long) (sizeof (double)))) + exit (1); fprintf (f, "%ld\n", i); } else { - unsigned long int i = ulongval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + unsigned long i = ulongval (); + if (i != ((long) (sizeof (double)))) + exit (1); fprintf (f, "%lu\n", i); } - return ferror (f) || fclose (f) != 0; + exit (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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -23685,28 +20323,29 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (double) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (double) +echo "$as_me: error: cannot compute sizeof (double), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val else ac_cv_sizeof_double=0 fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_double" >&5 -echo "${ECHO_T}$ac_cv_sizeof_double" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_sizeof_double" >&5 +echo "${ECHO_T}$ac_cv_sizeof_double" >&6 cat >>confdefs.h <<_ACEOF @%:@define SIZEOF_DOUBLE $ac_cv_sizeof_double _ACEOF -{ echo "$as_me:$LINENO: checking for long long" >&5 -echo $ECHO_N "checking for long long... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for long long" >&5 +echo $ECHO_N "checking for long long... $ECHO_C" >&6 if test "${ac_cv_type_long_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -23717,49 +20356,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef long long ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((long long *) 0) return 0; -if (sizeof (ac__type_new_)) +if (sizeof (long long)) 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -23768,21 +20394,20 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_long_long=no +ac_cv_type_long_long=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 -echo "${ECHO_T}$ac_cv_type_long_long" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 +echo "${ECHO_T}$ac_cv_type_long_long" >&6 -{ echo "$as_me:$LINENO: checking size of long long" >&5 -echo $ECHO_N "checking size of long long... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking size of long long" >&5 +echo $ECHO_N "checking size of long long... $ECHO_C" >&6 if test "${ac_cv_sizeof_long_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$ac_cv_type_long_long" = yes; then - # The cast to long int works around a bug in the HP C Compiler + # The cast to unsigned long 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. @@ -23795,11 +20420,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef long long ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (long long))) >= 0)@:>@; test_array @<:@0@:>@ = 0 ; @@ -23807,36 +20431,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -23849,11 +20461,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef long long ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)@:>@; test_array @<:@0@:>@ = 0 ; @@ -23861,36 +20472,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -23899,32 +20498,30 @@ else 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` +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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF +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 - typedef long long ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (long long))) < 0)@:>@; test_array @<:@0@:>@ = 0 ; @@ -23932,36 +20529,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -23974,11 +20559,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef long long ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (long long))) >= $ac_mid)@:>@; test_array @<:@0@:>@ = 0 ; @@ -23986,36 +20570,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -24024,27 +20596,24 @@ else 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_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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo= ac_hi= +ac_lo= ac_hi= fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f 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` @@ -24055,11 +20624,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef long long ac__type_sizeof_; int main () { -static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@; +static int test_array @<:@1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)@:>@; test_array @<:@0@:>@ = 0 ; @@ -24067,36 +20635,24 @@ test_array @<:@0@:>@ = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -24105,19 +20661,25 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo=`expr '(' $ac_mid ')' + 1` +ac_lo=`expr '(' $ac_mid ')' + 1` fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_long_long=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long) +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long long) +echo "$as_me: error: cannot compute sizeof (long long), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } ;; + { (exit 1); exit 1; }; } ;; esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -24126,9 +20688,8 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef long long ac__type_sizeof_; -static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } -static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } +long longval () { return (long) (sizeof (long long)); } +unsigned long ulongval () { return (long) (sizeof (long long)); } @%:@include @%:@include int @@ -24137,44 +20698,35 @@ main () FILE *f = fopen ("conftest.val", "w"); if (! f) - return 1; - if (((long int) (sizeof (ac__type_sizeof_))) < 0) + exit (1); + if (((long) (sizeof (long long))) < 0) { - long int i = longval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + long i = longval (); + if (i != ((long) (sizeof (long long)))) + exit (1); fprintf (f, "%ld\n", i); } else { - unsigned long int i = ulongval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + unsigned long i = ulongval (); + if (i != ((long) (sizeof (long long)))) + exit (1); fprintf (f, "%lu\n", i); } - return ferror (f) || fclose (f) != 0; + exit (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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -24185,29 +20737,30 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long long) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long long) +echo "$as_me: error: cannot compute sizeof (long long), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val else ac_cv_sizeof_long_long=0 fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5 -echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6 cat >>confdefs.h <<_ACEOF @%:@define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long _ACEOF -{ echo "$as_me:$LINENO: checking for u_int" >&5 -echo $ECHO_N "checking for u_int... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for u_int" >&5 +echo $ECHO_N "checking for u_int... $ECHO_C" >&6 if test "${ac_cv_type_u_int+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -24218,49 +20771,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef u_int ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((u_int *) 0) return 0; -if (sizeof (ac__type_new_)) +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;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -24269,13 +20809,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_u_int=no +ac_cv_type_u_int=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_u_int" >&5 -echo "${ECHO_T}$ac_cv_type_u_int" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_u_int" >&5 +echo "${ECHO_T}$ac_cv_type_u_int" >&6 if test $ac_cv_type_u_int = yes; then : else @@ -24286,8 +20825,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for u_long" >&5 -echo $ECHO_N "checking for u_long... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for u_long" >&5 +echo $ECHO_N "checking for u_long... $ECHO_C" >&6 if test "${ac_cv_type_u_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -24298,49 +20837,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef u_long ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((u_long *) 0) return 0; -if (sizeof (ac__type_new_)) +if (sizeof (u_long)) 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -24349,13 +20875,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_u_long=no +ac_cv_type_u_long=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_u_long" >&5 -echo "${ECHO_T}$ac_cv_type_u_long" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_u_long" >&5 +echo "${ECHO_T}$ac_cv_type_u_long" >&6 if test $ac_cv_type_u_long = yes; then : else @@ -24369,8 +20894,8 @@ fi if test "$ac_cv_sizeof_short" = 2; then - { echo "$as_me:$LINENO: checking for bits16_t" >&5 -echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for bits16_t" >&5 +echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6 if test "${ac_cv_type_bits16_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -24381,49 +20906,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef bits16_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((bits16_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -24432,13 +20944,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_bits16_t=no +ac_cv_type_bits16_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits16_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits16_t" >&6 if test $ac_cv_type_bits16_t = yes; then : else @@ -24450,8 +20961,8 @@ _ACEOF fi elif test "$ac_cv_sizeof_char" = 2; then - { echo "$as_me:$LINENO: checking for bits16_t" >&5 -echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for bits16_t" >&5 +echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6 if test "${ac_cv_type_bits16_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -24462,49 +20973,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef bits16_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((bits16_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -24513,13 +21011,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_bits16_t=no +ac_cv_type_bits16_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits16_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits16_t" >&6 if test $ac_cv_type_bits16_t = yes; then : else @@ -24531,8 +21028,8 @@ _ACEOF fi else - { echo "$as_me:$LINENO: checking for bits16_t" >&5 -echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for bits16_t" >&5 +echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6 if test "${ac_cv_type_bits16_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -24543,49 +21040,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef bits16_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((bits16_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -24594,13 +21078,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_bits16_t=no +ac_cv_type_bits16_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits16_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits16_t" >&6 if test $ac_cv_type_bits16_t = yes; then : else @@ -24615,8 +21098,8 @@ fi if test "$ac_cv_sizeof_short" = 2; then - { echo "$as_me:$LINENO: checking for u_bits16_t" >&5 -echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for u_bits16_t" >&5 +echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6 if test "${ac_cv_type_u_bits16_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -24627,49 +21110,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef u_bits16_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((u_bits16_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -24678,13 +21148,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_u_bits16_t=no +ac_cv_type_u_bits16_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 -echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6 if test $ac_cv_type_u_bits16_t = yes; then : else @@ -24696,8 +21165,8 @@ _ACEOF fi elif test "$ac_cv_sizeof_char" = 2; then - { echo "$as_me:$LINENO: checking for u_bits16_t" >&5 -echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for u_bits16_t" >&5 +echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6 if test "${ac_cv_type_u_bits16_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -24708,49 +21177,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef u_bits16_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((u_bits16_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -24759,13 +21215,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_u_bits16_t=no +ac_cv_type_u_bits16_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 -echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6 if test $ac_cv_type_u_bits16_t = yes; then : else @@ -24777,8 +21232,8 @@ _ACEOF fi else - { echo "$as_me:$LINENO: checking for u_bits16_t" >&5 -echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for u_bits16_t" >&5 +echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6 if test "${ac_cv_type_u_bits16_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -24789,49 +21244,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef u_bits16_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((u_bits16_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -24840,13 +21282,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_u_bits16_t=no +ac_cv_type_u_bits16_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 -echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6 if test $ac_cv_type_u_bits16_t = yes; then : else @@ -24861,8 +21302,8 @@ fi if test "$ac_cv_sizeof_int" = 4; then - { echo "$as_me:$LINENO: checking for bits32_t" >&5 -echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for bits32_t" >&5 +echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6 if test "${ac_cv_type_bits32_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -24873,49 +21314,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef bits32_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((bits32_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -24924,13 +21352,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_bits32_t=no +ac_cv_type_bits32_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits32_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits32_t" >&6 if test $ac_cv_type_bits32_t = yes; then : else @@ -24942,8 +21369,8 @@ _ACEOF fi elif test "$ac_cv_sizeof_long" = 4; then - { echo "$as_me:$LINENO: checking for bits32_t" >&5 -echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for bits32_t" >&5 +echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6 if test "${ac_cv_type_bits32_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -24954,49 +21381,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef bits32_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((bits32_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -25005,13 +21419,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_bits32_t=no +ac_cv_type_bits32_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits32_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits32_t" >&6 if test $ac_cv_type_bits32_t = yes; then : else @@ -25023,8 +21436,8 @@ _ACEOF fi else - { echo "$as_me:$LINENO: checking for bits32_t" >&5 -echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for bits32_t" >&5 +echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6 if test "${ac_cv_type_bits32_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -25035,49 +21448,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef bits32_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((bits32_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -25086,13 +21486,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_bits32_t=no +ac_cv_type_bits32_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits32_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits32_t" >&6 if test $ac_cv_type_bits32_t = yes; then : else @@ -25107,8 +21506,8 @@ fi if test "$ac_cv_sizeof_int" = 4; then - { echo "$as_me:$LINENO: checking for u_bits32_t" >&5 -echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for u_bits32_t" >&5 +echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6 if test "${ac_cv_type_u_bits32_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -25119,49 +21518,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef u_bits32_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((u_bits32_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -25170,13 +21556,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_u_bits32_t=no +ac_cv_type_u_bits32_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 -echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6 if test $ac_cv_type_u_bits32_t = yes; then : else @@ -25188,8 +21573,8 @@ _ACEOF fi elif test "$ac_cv_sizeof_long" = 4; then - { echo "$as_me:$LINENO: checking for u_bits32_t" >&5 -echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for u_bits32_t" >&5 +echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6 if test "${ac_cv_type_u_bits32_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -25200,49 +21585,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef u_bits32_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((u_bits32_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -25251,13 +21623,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_u_bits32_t=no +ac_cv_type_u_bits32_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 -echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6 if test $ac_cv_type_u_bits32_t = yes; then : else @@ -25269,8 +21640,8 @@ _ACEOF fi else - { echo "$as_me:$LINENO: checking for u_bits32_t" >&5 -echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for u_bits32_t" >&5 +echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6 if test "${ac_cv_type_u_bits32_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -25281,49 +21652,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef u_bits32_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((u_bits32_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -25332,13 +21690,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_u_bits32_t=no +ac_cv_type_u_bits32_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 -echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6 if test $ac_cv_type_u_bits32_t = yes; then : else @@ -25353,8 +21710,8 @@ fi if test "$ac_cv_sizeof_char_p" = 8; then - { echo "$as_me:$LINENO: checking for bits64_t" >&5 -echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 if test "${ac_cv_type_bits64_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -25365,49 +21722,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef bits64_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((bits64_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -25416,13 +21760,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_bits64_t=no +ac_cv_type_bits64_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits64_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 if test $ac_cv_type_bits64_t = yes; then : else @@ -25434,8 +21777,8 @@ _ACEOF fi elif test "$ac_cv_sizeof_double" = 8; then - { echo "$as_me:$LINENO: checking for bits64_t" >&5 -echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 if test "${ac_cv_type_bits64_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -25446,49 +21789,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef bits64_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((bits64_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -25497,13 +21827,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_bits64_t=no +ac_cv_type_bits64_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits64_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 if test $ac_cv_type_bits64_t = yes; then : else @@ -25515,8 +21844,8 @@ _ACEOF fi elif test -n "$ac_cv_type_long_long" && test "$ac_cv_sizeof_long_long" = 8; then - { echo "$as_me:$LINENO: checking for bits64_t" >&5 -echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 if test "${ac_cv_type_bits64_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -25527,49 +21856,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef bits64_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((bits64_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -25578,13 +21894,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_bits64_t=no +ac_cv_type_bits64_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits64_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 if test $ac_cv_type_bits64_t = yes; then : else @@ -25596,8 +21911,8 @@ _ACEOF fi elif test "$ac_cv_sizeof_long" = 8; then - { echo "$as_me:$LINENO: checking for bits64_t" >&5 -echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 if test "${ac_cv_type_bits64_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -25608,49 +21923,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef bits64_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((bits64_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -25659,13 +21961,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_bits64_t=no +ac_cv_type_bits64_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits64_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 if test $ac_cv_type_bits64_t = yes; then : else @@ -25677,8 +21978,8 @@ _ACEOF fi else - { echo "$as_me:$LINENO: checking for bits64_t" >&5 -echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 if test "${ac_cv_type_bits64_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -25689,49 +21990,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef bits64_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((bits64_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -25740,13 +22028,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_bits64_t=no +ac_cv_type_bits64_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits64_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 if test $ac_cv_type_bits64_t = yes; then : else @@ -25762,8 +22049,8 @@ fi if test "$ac_cv_sizeof_int" = "$ac_cv_sizeof_char_p"; then - { echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 -echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 if test "${ac_cv_type_ptrdiff_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -25774,49 +22061,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef ptrdiff_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((ptrdiff_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -25825,13 +22099,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_ptrdiff_t=no +ac_cv_type_ptrdiff_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 -echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 if test $ac_cv_type_ptrdiff_t = yes; then : else @@ -25843,8 +22116,8 @@ _ACEOF fi elif test "$ac_cv_sizeof_long" = "$ac_cv_sizeof_char_p"; then - { echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 -echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 if test "${ac_cv_type_ptrdiff_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -25855,49 +22128,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef ptrdiff_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((ptrdiff_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -25906,13 +22166,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_ptrdiff_t=no +ac_cv_type_ptrdiff_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 -echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 if test $ac_cv_type_ptrdiff_t = yes; then : else @@ -25924,8 +22183,8 @@ _ACEOF fi elif test "$ac_cv_type_long_long" = yes && test "$ac_cv_sizeof_long_long" = "$ac_cv_sizeof_char_p"; then - { echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 -echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 if test "${ac_cv_type_ptrdiff_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -25936,49 +22195,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef ptrdiff_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((ptrdiff_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -25987,13 +22233,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_ptrdiff_t=no +ac_cv_type_ptrdiff_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 -echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 if test $ac_cv_type_ptrdiff_t = yes; then : else @@ -26005,8 +22250,8 @@ _ACEOF fi else - { echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 -echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 if test "${ac_cv_type_ptrdiff_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -26017,49 +22262,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef ptrdiff_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((ptrdiff_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -26068,13 +22300,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_ptrdiff_t=no +ac_cv_type_ptrdiff_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 -echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 if test $ac_cv_type_ptrdiff_t = yes; then : else @@ -26088,8 +22319,8 @@ fi fi -{ echo "$as_me:$LINENO: checking whether stat file-mode macros are broken" >&5 -echo $ECHO_N "checking whether stat file-mode macros are broken... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether stat file-mode macros are broken" >&5 +echo $ECHO_N "checking whether stat file-mode macros are broken... $ECHO_C" >&6 if test "${ac_cv_header_stat_broken+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -26102,25 +22333,25 @@ cat >>conftest.$ac_ext <<_ACEOF #include #include -#if defined S_ISBLK && defined S_IFDIR +#if defined(S_ISBLK) && defined(S_IFDIR) # if S_ISBLK (S_IFDIR) You lose. # endif #endif -#if defined S_ISBLK && defined S_IFCHR +#if defined(S_ISBLK) && defined(S_IFCHR) # if S_ISBLK (S_IFCHR) You lose. # endif #endif -#if defined S_ISLNK && defined S_IFREG +#if defined(S_ISLNK) && defined(S_IFREG) # if S_ISLNK (S_IFREG) You lose. # endif #endif -#if defined S_ISSOCK && defined S_IFREG +#if defined(S_ISSOCK) && defined(S_IFREG) # if S_ISSOCK (S_IFREG) You lose. # endif @@ -26136,8 +22367,8 @@ fi rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_stat_broken" >&5 -echo "${ECHO_T}$ac_cv_header_stat_broken" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_header_stat_broken" >&5 +echo "${ECHO_T}$ac_cv_header_stat_broken" >&6 if test $ac_cv_header_stat_broken = yes; then cat >>confdefs.h <<\_ACEOF @@ -26147,8 +22378,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether @%:@! works in shell scripts" >&5 -echo $ECHO_N "checking whether @%:@! works in shell scripts... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether @%:@! works in shell scripts" >&5 +echo $ECHO_N "checking whether @%:@! works in shell scripts... $ECHO_C" >&6 if test "${ac_cv_sys_interpreter+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -26164,8 +22395,8 @@ else fi rm -f conftest fi -{ echo "$as_me:$LINENO: result: $ac_cv_sys_interpreter" >&5 -echo "${ECHO_T}$ac_cv_sys_interpreter" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_sys_interpreter" >&5 +echo "${ECHO_T}$ac_cv_sys_interpreter" >&6 interpval=$ac_cv_sys_interpreter if test $ac_cv_sys_interpreter = yes; then @@ -26176,8 +22407,8 @@ _ACEOF fi if test "$ac_cv_func_lstat" = "no"; then -{ echo "$as_me:$LINENO: checking for lstat" >&5 -echo $ECHO_N "checking for lstat... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for lstat" >&5 +echo $ECHO_N "checking for lstat... $ECHO_C" >&6 if test "${bash_cv_func_lstat+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -26200,36 +22431,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -26238,14 +22457,13 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_func_lstat" >&5 -echo "${ECHO_T}$bash_cv_func_lstat" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_func_lstat" >&5 +echo "${ECHO_T}$bash_cv_func_lstat" >&6 if test $bash_cv_func_lstat = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_LSTAT 1 @@ -26256,8 +22474,8 @@ fi fi -{ echo "$as_me:$LINENO: checking whether the ctype macros accept non-ascii characters" >&5 -echo $ECHO_N "checking whether the ctype macros accept non-ascii characters... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether the ctype macros accept non-ascii characters" >&5 +echo $ECHO_N "checking whether the ctype macros accept non-ascii characters... $ECHO_C" >&6 if test "${bash_cv_func_ctype_nonascii+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -26306,22 +22524,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -26334,14 +22543,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_func_ctype_nonascii=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_func_ctype_nonascii" >&5 -echo "${ECHO_T}$bash_cv_func_ctype_nonascii" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_func_ctype_nonascii" >&5 +echo "${ECHO_T}$bash_cv_func_ctype_nonascii" >&6 if test $bash_cv_func_ctype_nonascii = yes; then cat >>confdefs.h <<\_ACEOF @%:@define CTYPE_NON_ASCII 1 @@ -26349,8 +22556,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking if dup2 fails to clear the close-on-exec flag" >&5 -echo $ECHO_N "checking if dup2 fails to clear the close-on-exec flag... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking if dup2 fails to clear the close-on-exec flag" >&5 +echo $ECHO_N "checking if dup2 fails to clear the close-on-exec flag... $ECHO_C" >&6 if test "${bash_cv_dup2_broken+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -26384,22 +22591,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -26412,15 +22610,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_dup2_broken=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_dup2_broken" >&5 -echo "${ECHO_T}$bash_cv_dup2_broken" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_dup2_broken" >&5 +echo "${ECHO_T}$bash_cv_dup2_broken" >&6 if test $bash_cv_dup2_broken = yes; then cat >>confdefs.h <<\_ACEOF @%:@define DUP2_BROKEN 1 @@ -26429,8 +22625,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether pgrps need synchronization" >&5 -echo $ECHO_N "checking whether pgrps need synchronization... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether pgrps need synchronization" >&5 +echo $ECHO_N "checking whether pgrps need synchronization... $ECHO_C" >&6 if test "${bash_cv_pgrp_pipe+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -26496,22 +22692,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -26524,15 +22711,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_pgrp_pipe=yes fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_pgrp_pipe" >&5 -echo "${ECHO_T}$bash_cv_pgrp_pipe" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_pgrp_pipe" >&5 +echo "${ECHO_T}$bash_cv_pgrp_pipe" >&6 if test $bash_cv_pgrp_pipe = yes; then cat >>confdefs.h <<\_ACEOF @%:@define PGRP_PIPE 1 @@ -26541,8 +22726,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for type of signal functions" >&5 -echo $ECHO_N "checking for type of signal functions... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for type of signal functions" >&5 +echo $ECHO_N "checking for type of signal functions... $ECHO_C" >&6 if test "${bash_cv_signal_vintage+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -26569,36 +22754,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -26607,7 +22780,7 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -26627,36 +22800,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -26665,7 +22826,7 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -26688,36 +22849,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -26726,27 +22875,24 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_signal_vintage" >&5 -echo "${ECHO_T}$bash_cv_signal_vintage" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_signal_vintage" >&5 +echo "${ECHO_T}$bash_cv_signal_vintage" >&6 if test "$bash_cv_signal_vintage" = posix; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_POSIX_SIGNALS 1 @@ -26765,8 +22911,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for sys_errlist and sys_nerr" >&5 -echo $ECHO_N "checking for sys_errlist and sys_nerr... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for sys_errlist and sys_nerr" >&5 +echo $ECHO_N "checking for sys_errlist and sys_nerr... $ECHO_C" >&6 if test "${bash_cv_sys_errlist+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -26788,36 +22934,24 @@ extern char *sys_errlist[]; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -26826,14 +22960,13 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_sys_errlist" >&5 -echo "${ECHO_T}$bash_cv_sys_errlist" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_sys_errlist" >&5 +echo "${ECHO_T}$bash_cv_sys_errlist" >&6 if test $bash_cv_sys_errlist = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_SYS_ERRLIST 1 @@ -26842,8 +22975,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for sys_siglist in system C library" >&5 -echo $ECHO_N "checking for sys_siglist in system C library... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for sys_siglist in system C library" >&5 +echo $ECHO_N "checking for sys_siglist in system C library... $ECHO_C" >&6 if test "${bash_cv_sys_siglist+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -26864,7 +22997,7 @@ cat >>conftest.$ac_ext <<_ACEOF #ifdef HAVE_UNISTD_H #include #endif -#if !HAVE_DECL_SYS_SIGLIST +#ifndef SYS_SIGLIST_DECLARED extern char *sys_siglist[]; #endif main() @@ -26874,22 +23007,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -26902,14 +23026,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_sys_siglist=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_sys_siglist" >&5 -echo "${ECHO_T}$bash_cv_sys_siglist" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_sys_siglist" >&5 +echo "${ECHO_T}$bash_cv_sys_siglist" >&6 if test $bash_cv_sys_siglist = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_SYS_SIGLIST 1 @@ -26917,8 +23039,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for _sys_siglist in signal.h or unistd.h" >&5 -echo $ECHO_N "checking for _sys_siglist in signal.h or unistd.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for _sys_siglist in signal.h or unistd.h" >&5 +echo $ECHO_N "checking for _sys_siglist in signal.h or unistd.h... $ECHO_C" >&6 if test "${bash_cv_decl_under_sys_siglist+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -26943,36 +23065,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -26981,13 +23091,12 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_decl_under_sys_siglist" >&5 -echo "${ECHO_T}$bash_cv_decl_under_sys_siglist" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_decl_under_sys_siglist" >&5 +echo "${ECHO_T}$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 @@ -26996,8 +23105,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for _sys_siglist in system C library" >&5 -echo $ECHO_N "checking for _sys_siglist in system C library... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for _sys_siglist in system C library" >&5 +echo $ECHO_N "checking for _sys_siglist in system C library... $ECHO_C" >&6 if test "${bash_cv_under_sys_siglist+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -27028,22 +23137,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -27056,14 +23156,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_under_sys_siglist=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_under_sys_siglist" >&5 -echo "${ECHO_T}$bash_cv_under_sys_siglist" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_under_sys_siglist" >&5 +echo "${ECHO_T}$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 @@ -27072,8 +23170,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether signal handlers are of type void" >&5 -echo $ECHO_N "checking whether signal handlers are of type void... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether signal handlers are of type void" >&5 +echo $ECHO_N "checking whether signal handlers are of type void... $ECHO_C" >&6 if test "${bash_cv_void_sighandler+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -27101,36 +23199,24 @@ int i; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -27139,13 +23225,12 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_void_sighandler" >&5 -echo "${ECHO_T}$bash_cv_void_sighandler" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_void_sighandler" >&5 +echo "${ECHO_T}$bash_cv_void_sighandler" >&6 if test $bash_cv_void_sighandler = yes; then cat >>confdefs.h <<\_ACEOF @%:@define VOID_SIGHANDLER 1 @@ -27155,8 +23240,8 @@ fi -{ echo "$as_me:$LINENO: checking for clock_t" >&5 -echo $ECHO_N "checking for clock_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for clock_t" >&5 +echo $ECHO_N "checking for clock_t... $ECHO_C" >&6 if test "${bash_cv_type_clock_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -27187,8 +23272,8 @@ rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $bash_cv_type_clock_t" >&5 -echo "${ECHO_T}$bash_cv_type_clock_t" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_type_clock_t" >&5 +echo "${ECHO_T}$bash_cv_type_clock_t" >&6 if test $bash_cv_type_clock_t = no; then cat >>confdefs.h <<_ACEOF @@ -27199,8 +23284,8 @@ fi -{ echo "$as_me:$LINENO: checking for sigset_t" >&5 -echo $ECHO_N "checking for sigset_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for sigset_t" >&5 +echo $ECHO_N "checking for sigset_t... $ECHO_C" >&6 if test "${bash_cv_type_sigset_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -27231,8 +23316,8 @@ rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $bash_cv_type_sigset_t" >&5 -echo "${ECHO_T}$bash_cv_type_sigset_t" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_type_sigset_t" >&5 +echo "${ECHO_T}$bash_cv_type_sigset_t" >&6 if test $bash_cv_type_sigset_t = no; then cat >>confdefs.h <<_ACEOF @@ -27243,8 +23328,8 @@ fi -{ echo "$as_me:$LINENO: checking for quad_t" >&5 -echo $ECHO_N "checking for quad_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for quad_t" >&5 +echo $ECHO_N "checking for quad_t... $ECHO_C" >&6 if test "${bash_cv_type_quad_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -27275,8 +23360,8 @@ rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $bash_cv_type_quad_t" >&5 -echo "${ECHO_T}$bash_cv_type_quad_t" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_type_quad_t" >&5 +echo "${ECHO_T}$bash_cv_type_quad_t" >&6 if test $bash_cv_type_quad_t = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_QUAD_T 1 @@ -27292,8 +23377,8 @@ fi -{ echo "$as_me:$LINENO: checking for intmax_t" >&5 -echo $ECHO_N "checking for intmax_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for intmax_t" >&5 +echo $ECHO_N "checking for intmax_t... $ECHO_C" >&6 if test "${bash_cv_type_intmax_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -27324,8 +23409,8 @@ rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $bash_cv_type_intmax_t" >&5 -echo "${ECHO_T}$bash_cv_type_intmax_t" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_type_intmax_t" >&5 +echo "${ECHO_T}$bash_cv_type_intmax_t" >&6 if test $bash_cv_type_intmax_t = no; then cat >>confdefs.h <<_ACEOF @@ -27336,8 +23421,8 @@ fi -{ echo "$as_me:$LINENO: checking for uintmax_t" >&5 -echo $ECHO_N "checking for uintmax_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for uintmax_t" >&5 +echo $ECHO_N "checking for uintmax_t... $ECHO_C" >&6 if test "${bash_cv_type_uintmax_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -27368,8 +23453,8 @@ rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $bash_cv_type_uintmax_t" >&5 -echo "${ECHO_T}$bash_cv_type_uintmax_t" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_type_uintmax_t" >&5 +echo "${ECHO_T}$bash_cv_type_uintmax_t" >&6 if test $bash_cv_type_uintmax_t = no; then cat >>confdefs.h <<_ACEOF @@ -27381,8 +23466,8 @@ fi if test "$ac_cv_header_sys_socket_h" = "yes"; then -{ echo "$as_me:$LINENO: checking for socklen_t" >&5 -echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for socklen_t" >&5 +echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6 if test "${bash_cv_type_socklen_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -27413,8 +23498,8 @@ rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $bash_cv_type_socklen_t" >&5 -echo "${ECHO_T}$bash_cv_type_socklen_t" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_type_socklen_t" >&5 +echo "${ECHO_T}$bash_cv_type_socklen_t" >&6 if test $bash_cv_type_socklen_t = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_SOCKLEN_T 1 @@ -27429,8 +23514,8 @@ _ACEOF fi fi -{ echo "$as_me:$LINENO: checking for size and type of struct rlimit fields" >&5 -echo $ECHO_N "checking for size and type of struct rlimit fields... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for size and type of struct rlimit fields" >&5 +echo $ECHO_N "checking for size and type of struct rlimit fields... $ECHO_C" >&6 if test "${bash_cv_type_rlimit+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -27451,36 +23536,24 @@ rlim_t xxx; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -27489,7 +23562,7 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - + if test "$cross_compiling" = yes; then { echo "$as_me:$LINENO: WARNING: cannot check quad_t if cross compiling -- defaulting to long" >&5 echo "$as_me: WARNING: cannot check quad_t if cross compiling -- defaulting to long" >&2;} @@ -27516,22 +23589,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -27544,18 +23608,15 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_type_rlimit=long fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_type_rlimit" >&5 -echo "${ECHO_T}$bash_cv_type_rlimit" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_type_rlimit" >&5 +echo "${ECHO_T}$bash_cv_type_rlimit" >&6 if test $bash_cv_type_rlimit = quad_t; then cat >>confdefs.h <<\_ACEOF @%:@define RLIMTYPE quad_t @@ -27570,8 +23631,8 @@ fi -{ echo "$as_me:$LINENO: checking for struct termios.c_line" >&5 -echo $ECHO_N "checking for struct termios.c_line... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for struct termios.c_line" >&5 +echo $ECHO_N "checking for struct termios.c_line... $ECHO_C" >&6 if test "${ac_cv_member_struct_termios_c_line+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -27597,36 +23658,24 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -27635,7 +23684,7 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -27657,36 +23706,24 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -27695,16 +23732,14 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_member_struct_termios_c_line=no +ac_cv_member_struct_termios_c_line=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_termios_c_line" >&5 -echo "${ECHO_T}$ac_cv_member_struct_termios_c_line" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_member_struct_termios_c_line" >&5 +echo "${ECHO_T}$ac_cv_member_struct_termios_c_line" >&6 if test $ac_cv_member_struct_termios_c_line = yes; then cat >>confdefs.h <<\_ACEOF @%:@define TERMIOS_LDISC 1 @@ -27714,8 +23749,8 @@ fi -{ echo "$as_me:$LINENO: checking for struct termio.c_line" >&5 -echo $ECHO_N "checking for struct termio.c_line... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for struct termio.c_line" >&5 +echo $ECHO_N "checking for struct termio.c_line... $ECHO_C" >&6 if test "${ac_cv_member_struct_termio_c_line+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -27741,36 +23776,24 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -27779,7 +23802,7 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -27801,36 +23824,24 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -27839,16 +23850,14 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_member_struct_termio_c_line=no +ac_cv_member_struct_termio_c_line=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_termio_c_line" >&5 -echo "${ECHO_T}$ac_cv_member_struct_termio_c_line" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_member_struct_termio_c_line" >&5 +echo "${ECHO_T}$ac_cv_member_struct_termio_c_line" >&6 if test $ac_cv_member_struct_termio_c_line = yes; then cat >>confdefs.h <<\_ACEOF @%:@define TERMIO_LDISC 1 @@ -27858,8 +23867,8 @@ fi -{ echo "$as_me:$LINENO: checking for struct dirent.d_ino" >&5 -echo $ECHO_N "checking for struct dirent.d_ino... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for struct dirent.d_ino" >&5 +echo $ECHO_N "checking for struct dirent.d_ino... $ECHO_C" >&6 if test "${bash_cv_dirent_has_dino+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -27901,36 +23910,24 @@ struct dirent d; int z; z = d.d_ino; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -27939,14 +23936,13 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_dirent_has_dino" >&5 -echo "${ECHO_T}$bash_cv_dirent_has_dino" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_dirent_has_dino" >&5 +echo "${ECHO_T}$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 @@ -27955,8 +23951,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for struct dirent.d_fileno" >&5 -echo $ECHO_N "checking for struct dirent.d_fileno... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for struct dirent.d_fileno" >&5 +echo $ECHO_N "checking for struct dirent.d_fileno... $ECHO_C" >&6 if test "${bash_cv_dirent_has_d_fileno+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -27998,36 +23994,24 @@ struct dirent d; int z; z = d.d_fileno; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -28036,14 +24020,13 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_dirent_has_d_fileno" >&5 -echo "${ECHO_T}$bash_cv_dirent_has_d_fileno" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_dirent_has_d_fileno" >&5 +echo "${ECHO_T}$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 @@ -28052,8 +24035,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for struct dirent.d_namlen" >&5 -echo $ECHO_N "checking for struct dirent.d_namlen... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for struct dirent.d_namlen" >&5 +echo $ECHO_N "checking for struct dirent.d_namlen... $ECHO_C" >&6 if test "${bash_cv_dirent_has_d_namlen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -28095,36 +24078,24 @@ struct dirent d; int z; z = d.d_namlen; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -28133,14 +24104,13 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_dirent_has_d_namlen" >&5 -echo "${ECHO_T}$bash_cv_dirent_has_d_namlen" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_dirent_has_d_namlen" >&5 +echo "${ECHO_T}$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 @@ -28148,8 +24118,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for struct winsize in sys/ioctl.h and termios.h" >&5 -echo $ECHO_N "checking for struct winsize in sys/ioctl.h and termios.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for struct winsize in sys/ioctl.h and termios.h" >&5 +echo $ECHO_N "checking for struct winsize in sys/ioctl.h and termios.h... $ECHO_C" >&6 if test "${bash_cv_struct_winsize_header+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -28170,36 +24140,24 @@ struct winsize x; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -28208,7 +24166,7 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -28225,36 +24183,24 @@ struct winsize x; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -28263,37 +24209,35 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $bash_cv_struct_winsize_header = ioctl_h; then - { echo "$as_me:$LINENO: result: sys/ioctl.h" >&5 -echo "${ECHO_T}sys/ioctl.h" >&6; } + echo "$as_me:$LINENO: result: sys/ioctl.h" >&5 +echo "${ECHO_T}sys/ioctl.h" >&6 cat >>confdefs.h <<\_ACEOF @%:@define STRUCT_WINSIZE_IN_SYS_IOCTL 1 _ACEOF elif test $bash_cv_struct_winsize_header = termios_h; then - { echo "$as_me:$LINENO: result: termios.h" >&5 -echo "${ECHO_T}termios.h" >&6; } + echo "$as_me:$LINENO: result: termios.h" >&5 +echo "${ECHO_T}termios.h" >&6 cat >>confdefs.h <<\_ACEOF @%:@define STRUCT_WINSIZE_IN_TERMIOS 1 _ACEOF else - { echo "$as_me:$LINENO: result: not found" >&5 -echo "${ECHO_T}not found" >&6; } + echo "$as_me:$LINENO: result: not found" >&5 +echo "${ECHO_T}not found" >&6 fi -{ echo "$as_me:$LINENO: checking for struct timeval in sys/time.h and time.h" >&5 -echo $ECHO_N "checking for struct timeval in sys/time.h and time.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for struct timeval in sys/time.h and time.h" >&5 +echo $ECHO_N "checking for struct timeval in sys/time.h and time.h... $ECHO_C" >&6 if test "${bash_cv_struct_timeval+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -28334,8 +24278,8 @@ rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $bash_cv_struct_timeval" >&5 -echo "${ECHO_T}$bash_cv_struct_timeval" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_struct_timeval" >&5 +echo "${ECHO_T}$bash_cv_struct_timeval" >&6 if test $bash_cv_struct_timeval = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_TIMEVAL 1 @@ -28343,8 +24287,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for struct stat.st_blocks" >&5 -echo $ECHO_N "checking for struct stat.st_blocks... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for struct stat.st_blocks" >&5 +echo $ECHO_N "checking for struct stat.st_blocks... $ECHO_C" >&6 if test "${ac_cv_member_struct_stat_st_blocks+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -28366,36 +24310,24 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -28404,7 +24336,7 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -28422,36 +24354,24 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -28460,16 +24380,14 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_member_struct_stat_st_blocks=no +ac_cv_member_struct_stat_st_blocks=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_blocks" >&5 -echo "${ECHO_T}$ac_cv_member_struct_stat_st_blocks" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_blocks" >&5 +echo "${ECHO_T}$ac_cv_member_struct_stat_st_blocks" >&6 if test $ac_cv_member_struct_stat_st_blocks = yes; then cat >>confdefs.h <<_ACEOF @@ -28479,8 +24397,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5 -echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5 +echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6 if test "${ac_cv_struct_tm+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -28502,36 +24420,24 @@ struct tm *tp; tp->tm_sec; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -28540,13 +24446,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_struct_tm=sys/time.h +ac_cv_struct_tm=sys/time.h fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5 -echo "${ECHO_T}$ac_cv_struct_tm" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5 +echo "${ECHO_T}$ac_cv_struct_tm" >&6 if test $ac_cv_struct_tm = sys/time.h; then cat >>confdefs.h <<\_ACEOF @@ -28555,8 +24460,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for struct tm.tm_zone" >&5 -echo $ECHO_N "checking for struct tm.tm_zone... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for struct tm.tm_zone" >&5 +echo $ECHO_N "checking for struct tm.tm_zone... $ECHO_C" >&6 if test "${ac_cv_member_struct_tm_tm_zone+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -28581,36 +24486,24 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -28619,7 +24512,7 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -28634,165 +24527,64 @@ 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 "echo \"\$as_me:$LINENO: $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 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_member_struct_tm_tm_zone=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_member_struct_tm_tm_zone=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 -{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_zone" >&5 -echo "${ECHO_T}$ac_cv_member_struct_tm_tm_zone" >&6; } -if test $ac_cv_member_struct_tm_tm_zone = yes; then - -cat >>confdefs.h <<_ACEOF -@%:@define HAVE_STRUCT_TM_TM_ZONE 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 - { echo "$as_me:$LINENO: checking whether tzname is declared" >&5 -echo $ECHO_N "checking whether tzname is declared... $ECHO_C" >&6; } -if test "${ac_cv_have_decl_tzname+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&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 tzname - char *p = (char *) tzname; - return !p; -#endif - +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_have_decl_tzname=yes + ac_cv_member_struct_tm_tm_zone=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_have_decl_tzname=no +ac_cv_member_struct_tm_tm_zone=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_tzname" >&5 -echo "${ECHO_T}$ac_cv_have_decl_tzname" >&6; } -if test $ac_cv_have_decl_tzname = yes; then +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_zone" >&5 +echo "${ECHO_T}$ac_cv_member_struct_tm_tm_zone" >&6 +if test $ac_cv_member_struct_tm_tm_zone = yes; then cat >>confdefs.h <<_ACEOF -@%:@define HAVE_DECL_TZNAME 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -@%:@define HAVE_DECL_TZNAME 0 +@%:@define HAVE_STRUCT_TM_TM_ZONE 1 _ACEOF fi +if test "$ac_cv_member_struct_tm_tm_zone" = yes; then + +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_TM_ZONE 1 +_ACEOF - { echo "$as_me:$LINENO: checking for tzname" >&5 -echo $ECHO_N "checking for tzname... $ECHO_C" >&6; } +else + echo "$as_me:$LINENO: checking for tzname" >&5 +echo $ECHO_N "checking for tzname... $ECHO_C" >&6 if test "${ac_cv_var_tzname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -28803,49 +24595,37 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include -#if !HAVE_DECL_TZNAME -extern char *tzname[]; +#ifndef tzname /* For SGI. */ +extern char *tzname[]; /* RS6000 and others reject char **tzname. */ #endif int main () { -return tzname[0][0]; +atoi(*tzname); ; 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -28854,14 +24634,13 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_var_tzname" >&5 -echo "${ECHO_T}$ac_cv_var_tzname" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_var_tzname" >&5 +echo "${ECHO_T}$ac_cv_var_tzname" >&6 if test $ac_cv_var_tzname = yes; then cat >>confdefs.h <<\_ACEOF @@ -28871,8 +24650,8 @@ _ACEOF fi fi -{ echo "$as_me:$LINENO: checking for struct timezone in sys/time.h and time.h" >&5 -echo $ECHO_N "checking for struct timezone in sys/time.h and time.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for struct timezone in sys/time.h and time.h" >&5 +echo $ECHO_N "checking for struct timezone in sys/time.h and time.h... $ECHO_C" >&6 if test "${bash_cv_struct_timezone+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -28913,8 +24692,8 @@ rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $bash_cv_struct_timezone" >&5 -echo "${ECHO_T}$bash_cv_struct_timezone" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_struct_timezone" >&5 +echo "${ECHO_T}$bash_cv_struct_timezone" >&6 if test $bash_cv_struct_timezone = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_STRUCT_TIMEZONE 1 @@ -28923,8 +24702,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for the existence of strsignal" >&5 -echo $ECHO_N "checking for the existence of strsignal... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for the existence of strsignal" >&5 +echo $ECHO_N "checking for the existence of strsignal... $ECHO_C" >&6 if test "${bash_cv_have_strsignal+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -28945,36 +24724,24 @@ char *s = (char *)strsignal(2); } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -28983,15 +24750,14 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_have_strsignal" >&5 -echo "${ECHO_T}$bash_cv_have_strsignal" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_have_strsignal" >&5 +echo "${ECHO_T}$bash_cv_have_strsignal" >&6 if test $bash_cv_have_strsignal = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_STRSIGNAL 1 @@ -28999,8 +24765,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking if opendir() opens non-directories" >&5 -echo $ECHO_N "checking if opendir() opens non-directories... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking if opendir() opens non-directories" >&5 +echo $ECHO_N "checking if opendir() opens non-directories... $ECHO_C" >&6 if test "${bash_cv_opendir_not_robust+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -29057,22 +24823,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -29085,14 +24842,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_opendir_not_robust=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_opendir_not_robust" >&5 -echo "${ECHO_T}$bash_cv_opendir_not_robust" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_opendir_not_robust" >&5 +echo "${ECHO_T}$bash_cv_opendir_not_robust" >&6 if test $bash_cv_opendir_not_robust = yes; then cat >>confdefs.h <<\_ACEOF @%:@define OPENDIR_NOT_ROBUST 1 @@ -29100,8 +24855,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether ulimit can substitute for getdtablesize" >&5 -echo $ECHO_N "checking whether ulimit can substitute for getdtablesize... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether ulimit can substitute for getdtablesize" >&5 +echo $ECHO_N "checking whether ulimit can substitute for getdtablesize... $ECHO_C" >&6 if test "${bash_cv_ulimit_maxfds+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -29126,22 +24881,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -29154,14 +24900,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_ulimit_maxfds=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_ulimit_maxfds" >&5 -echo "${ECHO_T}$bash_cv_ulimit_maxfds" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_ulimit_maxfds" >&5 +echo "${ECHO_T}$bash_cv_ulimit_maxfds" >&6 if test $bash_cv_ulimit_maxfds = yes; then cat >>confdefs.h <<\_ACEOF @%:@define ULIMIT_MAXFDS 1 @@ -29169,8 +24913,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking to see if getenv can be redefined" >&5 -echo $ECHO_N "checking to see if getenv can be redefined... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking to see if getenv can be redefined" >&5 +echo $ECHO_N "checking to see if getenv can be redefined... $ECHO_C" >&6 if test "${bash_cv_getenv_redef+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -29220,22 +24964,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -29248,14 +24983,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_getenv_redef=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_getenv_redef" >&5 -echo "${ECHO_T}$bash_cv_getenv_redef" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_getenv_redef" >&5 +echo "${ECHO_T}$bash_cv_getenv_redef" >&6 if test $bash_cv_getenv_redef = yes; then cat >>confdefs.h <<\_ACEOF @%:@define CAN_REDEFINE_GETENV 1 @@ -29264,8 +24997,8 @@ _ACEOF fi if test "$ac_cv_func_getcwd" = "yes"; then -{ echo "$as_me:$LINENO: checking if getcwd() will dynamically allocate memory with 0 size" >&5 -echo $ECHO_N "checking if getcwd() will dynamically allocate memory with 0 size... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking if getcwd() will dynamically allocate memory" >&5 +echo $ECHO_N "checking if getcwd() will dynamically allocate memory... $ECHO_C" >&6 if test "${bash_cv_getcwd_malloc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -29296,22 +25029,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -29324,31 +25048,31 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_getcwd_malloc=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_getcwd_malloc" >&5 -echo "${ECHO_T}$bash_cv_getcwd_malloc" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_getcwd_malloc" >&5 +echo "${ECHO_T}$bash_cv_getcwd_malloc" >&6 if test $bash_cv_getcwd_malloc = no; then cat >>confdefs.h <<\_ACEOF @%:@define GETCWD_BROKEN 1 _ACEOF -case " $LIB@&t@OBJS " in +case $LIB@&t@OBJS in + "getcwd.$ac_objext" | \ + *" getcwd.$ac_objext" | \ + "getcwd.$ac_objext "* | \ *" getcwd.$ac_objext "* ) ;; - *) LIB@&t@OBJS="$LIB@&t@OBJS getcwd.$ac_objext" - ;; + *) LIB@&t@OBJS="$LIB@&t@OBJS getcwd.$ac_objext" ;; esac fi fi -{ echo "$as_me:$LINENO: checking for presence of POSIX-style sigsetjmp/siglongjmp" >&5 -echo $ECHO_N "checking for presence of POSIX-style sigsetjmp/siglongjmp... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for presence of POSIX-style sigsetjmp/siglongjmp" >&5 +echo $ECHO_N "checking for presence of POSIX-style sigsetjmp/siglongjmp... $ECHO_C" >&6 if test "${bash_cv_func_sigsetjmp+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -29404,22 +25128,13 @@ exit(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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -29432,14 +25147,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_func_sigsetjmp=missing fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_func_sigsetjmp" >&5 -echo "${ECHO_T}$bash_cv_func_sigsetjmp" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_func_sigsetjmp" >&5 +echo "${ECHO_T}$bash_cv_func_sigsetjmp" >&6 if test $bash_cv_func_sigsetjmp = present; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_POSIX_SIGSETJMP 1 @@ -29448,8 +25161,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether or not strcoll and strcmp differ" >&5 -echo $ECHO_N "checking whether or not strcoll and strcmp differ... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether or not strcoll and strcmp differ" >&5 +echo $ECHO_N "checking whether or not strcoll and strcmp differ... $ECHO_C" >&6 if test "${bash_cv_func_strcoll_broken+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -29503,22 +25216,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -29531,14 +25235,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_func_strcoll_broken=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_func_strcoll_broken" >&5 -echo "${ECHO_T}$bash_cv_func_strcoll_broken" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_func_strcoll_broken" >&5 +echo "${ECHO_T}$bash_cv_func_strcoll_broken" >&6 if test $bash_cv_func_strcoll_broken = yes; then cat >>confdefs.h <<\_ACEOF @%:@define STRCOLL_BROKEN 1 @@ -29552,8 +25254,8 @@ if test "$ac_cv_func_putenv" = "yes"; then -{ echo "$as_me:$LINENO: checking for standard-conformant putenv declaration" >&5 -echo $ECHO_N "checking for standard-conformant putenv declaration... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for standard-conformant putenv declaration" >&5 +echo $ECHO_N "checking for standard-conformant putenv declaration... $ECHO_C" >&6 if test "${bash_cv_std_putenv+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -29588,36 +25290,24 @@ return (putenv == 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -29626,15 +25316,14 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_std_putenv" >&5 -echo "${ECHO_T}$bash_cv_std_putenv" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_std_putenv" >&5 +echo "${ECHO_T}$bash_cv_std_putenv" >&6 if test $bash_cv_std_putenv = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_STD_PUTENV 1 @@ -29652,8 +25341,8 @@ if test "$ac_cv_func_unsetenv" = "yes"; then -{ echo "$as_me:$LINENO: checking for standard-conformant unsetenv declaration" >&5 -echo $ECHO_N "checking for standard-conformant unsetenv declaration... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for standard-conformant unsetenv declaration" >&5 +echo $ECHO_N "checking for standard-conformant unsetenv declaration... $ECHO_C" >&6 if test "${bash_cv_std_unsetenv+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -29688,36 +25377,24 @@ return (unsetenv == 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -29726,15 +25403,14 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_std_unsetenv" >&5 -echo "${ECHO_T}$bash_cv_std_unsetenv" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_std_unsetenv" >&5 +echo "${ECHO_T}$bash_cv_std_unsetenv" >&6 if test $bash_cv_std_unsetenv = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_STD_UNSETENV 1 @@ -29749,8 +25425,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for printf floating point output in hex notation" >&5 -echo $ECHO_N "checking for printf floating point output in hex notation... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for printf floating point output in hex notation" >&5 +echo $ECHO_N "checking for printf floating point output in hex notation... $ECHO_C" >&6 if test "${bash_cv_printf_a_format+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -29782,22 +25458,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -29810,14 +25477,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_printf_a_format=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_printf_a_format" >&5 -echo "${ECHO_T}$bash_cv_printf_a_format" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_printf_a_format" >&5 +echo "${ECHO_T}$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 @@ -29828,8 +25493,8 @@ fi -{ echo "$as_me:$LINENO: checking if signal handlers must be reinstalled when invoked" >&5 -echo $ECHO_N "checking if signal handlers must be reinstalled when invoked... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking if signal handlers must be reinstalled when invoked" >&5 +echo $ECHO_N "checking if signal handlers must be reinstalled when invoked... $ECHO_C" >&6 if test "${bash_cv_must_reinstall_sighandlers+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -29891,22 +25556,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -29919,14 +25575,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_must_reinstall_sighandlers=yes fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_must_reinstall_sighandlers" >&5 -echo "${ECHO_T}$bash_cv_must_reinstall_sighandlers" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_must_reinstall_sighandlers" >&5 +echo "${ECHO_T}$bash_cv_must_reinstall_sighandlers" >&6 if test $bash_cv_must_reinstall_sighandlers = yes; then cat >>confdefs.h <<\_ACEOF @%:@define MUST_REINSTALL_SIGHANDLERS 1 @@ -29935,8 +25589,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for presence of necessary job control definitions" >&5 -echo $ECHO_N "checking for presence of necessary job control definitions... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for presence of necessary job control definitions" >&5 +echo $ECHO_N "checking for presence of necessary job control definitions... $ECHO_C" >&6 if test "${bash_cv_job_control_missing+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -29998,22 +25652,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -30026,14 +25671,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_job_control_missing=missing fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_job_control_missing" >&5 -echo "${ECHO_T}$bash_cv_job_control_missing" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_job_control_missing" >&5 +echo "${ECHO_T}$bash_cv_job_control_missing" >&6 if test $bash_cv_job_control_missing = missing; then cat >>confdefs.h <<\_ACEOF @%:@define JOB_CONTROL_MISSING 1 @@ -30041,8 +25684,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for presence of named pipes" >&5 -echo $ECHO_N "checking for presence of named pipes... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for presence of named pipes" >&5 +echo $ECHO_N "checking for presence of named pipes... $ECHO_C" >&6 if test "${bash_cv_sys_named_pipes+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -30098,22 +25741,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -30126,14 +25760,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_sys_named_pipes=missing fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_sys_named_pipes" >&5 -echo "${ECHO_T}$bash_cv_sys_named_pipes" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_sys_named_pipes" >&5 +echo "${ECHO_T}$bash_cv_sys_named_pipes" >&6 if test $bash_cv_sys_named_pipes = missing; then cat >>confdefs.h <<\_ACEOF @%:@define NAMED_PIPES_MISSING 1 @@ -30142,8 +25774,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether termios.h defines TIOCGWINSZ" >&5 -echo $ECHO_N "checking whether termios.h defines TIOCGWINSZ... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether termios.h defines TIOCGWINSZ" >&5 +echo $ECHO_N "checking whether termios.h defines TIOCGWINSZ... $ECHO_C" >&6 if test "${ac_cv_sys_tiocgwinsz_in_termios_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -30169,12 +25801,12 @@ fi rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $ac_cv_sys_tiocgwinsz_in_termios_h" >&5 -echo "${ECHO_T}$ac_cv_sys_tiocgwinsz_in_termios_h" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_sys_tiocgwinsz_in_termios_h" >&5 +echo "${ECHO_T}$ac_cv_sys_tiocgwinsz_in_termios_h" >&6 if test $ac_cv_sys_tiocgwinsz_in_termios_h != yes; then - { echo "$as_me:$LINENO: checking whether sys/ioctl.h defines TIOCGWINSZ" >&5 -echo $ECHO_N "checking whether sys/ioctl.h defines TIOCGWINSZ... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking whether sys/ioctl.h defines TIOCGWINSZ" >&5 +echo $ECHO_N "checking whether sys/ioctl.h defines TIOCGWINSZ... $ECHO_C" >&6 if test "${ac_cv_sys_tiocgwinsz_in_sys_ioctl_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -30200,8 +25832,8 @@ fi rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&5 -echo "${ECHO_T}$ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&5 +echo "${ECHO_T}$ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&6 if test $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h = yes; then @@ -30212,8 +25844,8 @@ _ACEOF fi fi -{ echo "$as_me:$LINENO: checking for TIOCSTAT in sys/ioctl.h" >&5 -echo $ECHO_N "checking for TIOCSTAT in sys/ioctl.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for TIOCSTAT in sys/ioctl.h" >&5 +echo $ECHO_N "checking for TIOCSTAT in sys/ioctl.h... $ECHO_C" >&6 if test "${bash_cv_tiocstat_in_ioctl+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -30234,36 +25866,24 @@ int x = TIOCSTAT; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -30272,14 +25892,13 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_tiocstat_in_ioctl" >&5 -echo "${ECHO_T}$bash_cv_tiocstat_in_ioctl" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_tiocstat_in_ioctl" >&5 +echo "${ECHO_T}$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 @@ -30287,8 +25906,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for FIONREAD in sys/ioctl.h" >&5 -echo $ECHO_N "checking for FIONREAD in sys/ioctl.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for FIONREAD in sys/ioctl.h" >&5 +echo $ECHO_N "checking for FIONREAD in sys/ioctl.h... $ECHO_C" >&6 if test "${bash_cv_fionread_in_ioctl+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -30309,36 +25928,24 @@ int x = FIONREAD; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -30347,14 +25954,13 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_fionread_in_ioctl" >&5 -echo "${ECHO_T}$bash_cv_fionread_in_ioctl" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_fionread_in_ioctl" >&5 +echo "${ECHO_T}$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 @@ -30364,8 +25970,8 @@ fi -{ echo "$as_me:$LINENO: checking whether WCONTINUED flag to waitpid is unavailable or available but broken" >&5 -echo $ECHO_N "checking whether WCONTINUED flag to waitpid is unavailable or available but broken... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether WCONTINUED flag to waitpid is unavailable or available but broken" >&5 +echo $ECHO_N "checking whether WCONTINUED flag to waitpid is unavailable or available but broken... $ECHO_C" >&6 if test "${bash_cv_wcontinued_broken+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -30403,22 +26009,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -30431,14 +26028,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_wcontinued_broken=yes fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_wcontinued_broken" >&5 -echo "${ECHO_T}$bash_cv_wcontinued_broken" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_wcontinued_broken" >&5 +echo "${ECHO_T}$bash_cv_wcontinued_broken" >&6 if test $bash_cv_wcontinued_broken = yes; then cat >>confdefs.h <<\_ACEOF @%:@define WCONTINUED_BROKEN 1 @@ -30447,8 +26042,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for speed_t in sys/types.h" >&5 -echo $ECHO_N "checking for speed_t in sys/types.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for speed_t in sys/types.h" >&5 +echo $ECHO_N "checking for speed_t in sys/types.h... $ECHO_C" >&6 if test "${bash_cv_speed_t_in_sys_types+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -30468,36 +26063,24 @@ speed_t x; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -30506,14 +26089,13 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_speed_t_in_sys_types" >&5 -echo "${ECHO_T}$bash_cv_speed_t_in_sys_types" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_speed_t_in_sys_types" >&5 +echo "${ECHO_T}$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 @@ -30521,8 +26103,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether getpw functions are declared in pwd.h" >&5 -echo $ECHO_N "checking whether getpw functions are declared in pwd.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether getpw functions are declared in pwd.h" >&5 +echo $ECHO_N "checking whether getpw functions are declared in pwd.h... $ECHO_C" >&6 if test "${bash_cv_getpw_declared+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -30550,8 +26132,8 @@ rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $bash_cv_getpw_declared" >&5 -echo "${ECHO_T}$bash_cv_getpw_declared" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_getpw_declared" >&5 +echo "${ECHO_T}$bash_cv_getpw_declared" >&6 if test $bash_cv_getpw_declared = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_GETPW_DECLS 1 @@ -30559,8 +26141,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for unusable real-time signals due to large values" >&5 -echo $ECHO_N "checking for unusable real-time signals due to large values... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for unusable real-time signals due to large values" >&5 +echo $ECHO_N "checking for unusable real-time signals due to large values... $ECHO_C" >&6 if test "${bash_cv_unusable_rtsigs+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -30597,22 +26179,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -30625,14 +26198,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_unusable_rtsigs=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_unusable_rtsigs" >&5 -echo "${ECHO_T}$bash_cv_unusable_rtsigs" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_unusable_rtsigs" >&5 +echo "${ECHO_T}$bash_cv_unusable_rtsigs" >&6 if test $bash_cv_unusable_rtsigs = yes; then cat >>confdefs.h <<\_ACEOF @%:@define UNUSABLE_RT_SIGNALS 1 @@ -30653,8 +26224,8 @@ fi case "$host_os" in -hpux*) { echo "$as_me:$LINENO: checking whether $host_os needs _KERNEL for RLIMIT defines" >&5 -echo $ECHO_N "checking whether $host_os needs _KERNEL for RLIMIT defines... $ECHO_C" >&6; } +hpux*) echo "$as_me:$LINENO: checking whether $host_os needs _KERNEL for RLIMIT defines" >&5 +echo $ECHO_N "checking whether $host_os needs _KERNEL for RLIMIT defines... $ECHO_C" >&6 if test "${bash_cv_kernel_rlimit+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -30680,36 +26251,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -30718,7 +26277,7 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -30742,36 +26301,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -30780,18 +26327,16 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_kernel_rlimit" >&5 -echo "${ECHO_T}$bash_cv_kernel_rlimit" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_kernel_rlimit" >&5 +echo "${ECHO_T}$bash_cv_kernel_rlimit" >&6 if test $bash_cv_kernel_rlimit = yes; then cat >>confdefs.h <<\_ACEOF @%:@define RLIMIT_NEEDS_KERNEL 1 @@ -30809,15 +26354,15 @@ esac if test "X$bash_cv_termcap_lib" = "X"; then _bash_needmsg=yes else -{ echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 -echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 _bash_needmsg= fi if test "${bash_cv_termcap_lib+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - { echo "$as_me:$LINENO: checking for tgetent" >&5 -echo $ECHO_N "checking for tgetent... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for tgetent" >&5 +echo $ECHO_N "checking for tgetent... $ECHO_C" >&6 if test "${ac_cv_func_tgetent+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -30844,59 +26389,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_tgetent) || defined (__stub___tgetent) choke me +#else +char (*f) () = tgetent; +#endif +#ifdef __cplusplus +} #endif int main () { -return tgetent (); +return f != 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -30905,19 +26444,18 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func_tgetent=no +ac_cv_func_tgetent=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_tgetent" >&5 -echo "${ECHO_T}$ac_cv_func_tgetent" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func_tgetent" >&5 +echo "${ECHO_T}$ac_cv_func_tgetent" >&6 if test $ac_cv_func_tgetent = yes; then bash_cv_termcap_lib=libc else - { echo "$as_me:$LINENO: checking for tgetent in -ltermcap" >&5 -echo $ECHO_N "checking for tgetent in -ltermcap... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for tgetent in -ltermcap" >&5 +echo $ECHO_N "checking for tgetent in -ltermcap... $ECHO_C" >&6 if test "${ac_cv_lib_termcap_tgetent+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -30930,52 +26468,40 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char tgetent (); int main () { -return tgetent (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -30984,20 +26510,19 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_termcap_tgetent" >&5 -echo "${ECHO_T}$ac_cv_lib_termcap_tgetent" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_termcap_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_termcap_tgetent" >&6 if test $ac_cv_lib_termcap_tgetent = yes; then bash_cv_termcap_lib=libtermcap else - { echo "$as_me:$LINENO: checking for tgetent in -ltinfo" >&5 -echo $ECHO_N "checking for tgetent in -ltinfo... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for tgetent in -ltinfo" >&5 +echo $ECHO_N "checking for tgetent in -ltinfo... $ECHO_C" >&6 if test "${ac_cv_lib_tinfo_tgetent+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -31010,52 +26535,40 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char tgetent (); int main () { -return tgetent (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -31064,20 +26577,19 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_tinfo_tgetent" >&5 -echo "${ECHO_T}$ac_cv_lib_tinfo_tgetent" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_tinfo_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_tinfo_tgetent" >&6 if test $ac_cv_lib_tinfo_tgetent = yes; then bash_cv_termcap_lib=libtinfo else - { echo "$as_me:$LINENO: checking for tgetent in -lcurses" >&5 -echo $ECHO_N "checking for tgetent in -lcurses... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for tgetent in -lcurses" >&5 +echo $ECHO_N "checking for tgetent in -lcurses... $ECHO_C" >&6 if test "${ac_cv_lib_curses_tgetent+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -31090,52 +26602,40 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char tgetent (); int main () { -return tgetent (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -31144,20 +26644,19 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_curses_tgetent" >&5 -echo "${ECHO_T}$ac_cv_lib_curses_tgetent" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_curses_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_curses_tgetent" >&6 if test $ac_cv_lib_curses_tgetent = yes; then bash_cv_termcap_lib=libcurses else - { echo "$as_me:$LINENO: checking for tgetent in -lncurses" >&5 -echo $ECHO_N "checking for tgetent in -lncurses... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for tgetent in -lncurses" >&5 +echo $ECHO_N "checking for tgetent in -lncurses... $ECHO_C" >&6 if test "${ac_cv_lib_ncurses_tgetent+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -31170,52 +26669,40 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char tgetent (); int main () { -return tgetent (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -31224,15 +26711,14 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_ncurses_tgetent" >&5 -echo "${ECHO_T}$ac_cv_lib_ncurses_tgetent" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_ncurses_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_ncurses_tgetent" >&6 if test $ac_cv_lib_ncurses_tgetent = yes; then bash_cv_termcap_lib=libncurses else @@ -31250,11 +26736,11 @@ fi fi if test "X$_bash_needmsg" = "Xyes"; then -{ echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 -echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 fi -{ echo "$as_me:$LINENO: result: using $bash_cv_termcap_lib" >&5 -echo "${ECHO_T}using $bash_cv_termcap_lib" >&6; } +echo "$as_me:$LINENO: result: using $bash_cv_termcap_lib" >&5 +echo "${ECHO_T}using $bash_cv_termcap_lib" >&6 if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then LDFLAGS="$LDFLAGS -L./lib/termcap" TERMCAP_LIB="./lib/termcap/libtermcap.a" @@ -31280,32 +26766,30 @@ fi -{ echo "$as_me:$LINENO: checking whether /dev/fd is available" >&5 -echo $ECHO_N "checking whether /dev/fd is available... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether /dev/fd is available" >&5 +echo $ECHO_N "checking whether /dev/fd is available... $ECHO_C" >&6 if test "${bash_cv_dev_fd+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - bash_cv_dev_fd="" -if test -d /dev/fd && (exec test -r /dev/fd/0 < /dev/null) ; then + if test -d /dev/fd && test -r /dev/fd/0 < /dev/null; then # check for systems like FreeBSD 5 that only provide /dev/fd/[012] - if (exec test -r /dev/fd/3 3&5 -echo "${ECHO_T}$bash_cv_dev_fd" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_dev_fd" >&5 +echo "${ECHO_T}$bash_cv_dev_fd" >&6 if test $bash_cv_dev_fd = "standard"; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_DEV_FD 1 @@ -31326,14 +26810,14 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether /dev/stdin stdout stderr are available" >&5 -echo $ECHO_N "checking whether /dev/stdin stdout stderr are available... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether /dev/stdin stdout stderr are available" >&5 +echo $ECHO_N "checking whether /dev/stdin stdout stderr are available... $ECHO_C" >&6 if test "${bash_cv_dev_stdin+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test -d /dev/fd && (exec test -r /dev/stdin < /dev/null) ; then + if test -d /dev/fd && test -r /dev/stdin < /dev/null; then bash_cv_dev_stdin=present - elif test -d /proc/self/fd && (exec test -r /dev/stdin < /dev/null) ; then + elif test -d /proc/self/fd && test -r /dev/stdin < /dev/null; then bash_cv_dev_stdin=present else bash_cv_dev_stdin=absent @@ -31341,8 +26825,8 @@ else fi -{ echo "$as_me:$LINENO: result: $bash_cv_dev_stdin" >&5 -echo "${ECHO_T}$bash_cv_dev_stdin" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_dev_stdin" >&5 +echo "${ECHO_T}$bash_cv_dev_stdin" >&6 if test $bash_cv_dev_stdin = "present"; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_DEV_STDIN 1 @@ -31350,8 +26834,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for default mail directory" >&5 -echo $ECHO_N "checking for default mail directory... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for default mail directory" >&5 +echo $ECHO_N "checking for default mail directory... $ECHO_C" >&6 if test "${bash_cv_mail_dir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -31369,8 +26853,8 @@ else fi -{ echo "$as_me:$LINENO: result: $bash_cv_mail_dir" >&5 -echo "${ECHO_T}$bash_cv_mail_dir" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_mail_dir" >&5 +echo "${ECHO_T}$bash_cv_mail_dir" >&6 cat >>confdefs.h <<_ACEOF @%:@define DEFAULT_MAIL_DIRECTORY "$bash_cv_mail_dir" _ACEOF @@ -31424,8 +26908,7 @@ 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*) LOCAL_CFLAGS=-DSOLARIS ;; +solaris2.5*) LOCAL_CFLAGS=-DSunOS5 ;; lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading case "`uname -r`" in @@ -31475,8 +26958,8 @@ esac # if test "$ac_cv_func_dlopen" = "yes" && test -f ${srcdir}/support/shobj-conf then - { echo "$as_me:$LINENO: checking shared object configuration for loadable builtins" >&5 -echo $ECHO_N "checking shared object configuration for loadable builtins... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking shared object configuration for loadable builtins" >&5 +echo $ECHO_N "checking shared object configuration for loadable builtins... $ECHO_C" >&6 eval `${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c "${host_cpu}" -o "${host_os}" -v "${host_vendor}"` @@ -31485,8 +26968,8 @@ echo $ECHO_N "checking shared object configuration for loadable builtins... $ECH - { echo "$as_me:$LINENO: result: $SHOBJ_STATUS" >&5 -echo "${ECHO_T}$SHOBJ_STATUS" >&6; } + echo "$as_me:$LINENO: result: $SHOBJ_STATUS" >&5 +echo "${ECHO_T}$SHOBJ_STATUS" >&6 fi # try to create a directory tree if the source is elsewhere @@ -31536,10 +27019,8 @@ esac #AC_SUBST(ALLOCA_SOURCE) #AC_SUBST(ALLOCA_OBJECT) -ac_config_files="$ac_config_files Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile lib/intl/Makefile lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in examples/loadables/Makefile examples/loadables/perl/Makefile" - -ac_config_commands="$ac_config_commands default" - + ac_config_files="$ac_config_files Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile lib/intl/Makefile lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in examples/loadables/Makefile examples/loadables/perl/Makefile pathnames.h" + ac_config_commands="$ac_config_commands default" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure @@ -31558,58 +27039,39 @@ _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. +# So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. -( - 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_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - *) $as_unset $ac_var ;; - esac ;; - esac - done - +{ (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) # `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" - ;; #( + ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; - esac | - sort -) | + esac; +} | sed ' - /^ac_cv_env_/b end t clear - :clear + : clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\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" && - { echo "$as_me:$LINENO: updating cache $cache_file" >&5 -echo "$as_me: updating cache $cache_file" >&6;} + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\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" && echo "updating cache $cache_file" cat confcache >$cache_file else - { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 -echo "$as_me: not updating unwritable cache $cache_file" >&6;} + echo "not updating unwritable cache $cache_file" fi fi rm -f confcache @@ -31618,18 +27080,32 @@ test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ 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/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIB@&t@OBJS; 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=`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' + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' done LIB@&t@OBJS=$ac_libobjs @@ -31667,35 +27143,11 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then # Zsh 3.x and 4.x performs 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 +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix fi -BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh - -# 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 - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset @@ -31704,43 +27156,8 @@ else fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -as_nl=' -' -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -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 -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (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 -done +$as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' @@ -31754,19 +27171,18 @@ do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + $as_unset $as_var fi done # Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then +if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false @@ -31774,120 +27190,159 @@ fi # Name of the executable. -as_me=`$as_basename -- "$0" || +as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` -# CDPATH. -$as_unset CDPATH + +# PATH needs CR, and LINENO needs CR and PATH. +# 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 + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + 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 + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + 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=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac # 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. + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, 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 | + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop - s/-\n.*// + s,-$,, + s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +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" + # original and so on. Autoconf is especially sensible 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';; +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then +if expr a : '\(a\)' >/dev/null 2>&1; 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 -fi +rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file 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 || + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null +rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: @@ -31896,19 +27351,7 @@ else as_mkdir_p=false fi -# Find out whether ``test -x'' works. Don't use a zero-byte file, as -# systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - as_executable_p="test -x" -else - as_executable_p=: -fi -rm -f conf$$.file +as_executable_p="test -f" # 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'" @@ -31917,14 +27360,31 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + exec 6>&1 -# Save the log message, to keep $[0] and so on meaningful, and to +# Open the log real soon, 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 3.2-maint, which was -generated by GNU Autoconf 2.60. Invocation command line was +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX +@%:@@%:@ Running $as_me. @%:@@%:@ +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by bash $as_me 3.2-devel, which was +generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -31932,20 +27392,30 @@ generated by GNU Autoconf 2.60. Invocation command line was CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF # Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" -config_commands="$ac_config_commands" +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi -_ACEOF +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi cat >>$CONFIG_STATUS <<\_ACEOF + ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. @@ -31972,21 +27442,19 @@ Configuration commands: $config_commands Report bugs to ." - _ACEOF + cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -bash config.status 3.2-maint -configured by $0, generated by GNU Autoconf 2.60, - with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" +bash config.status 3.2-devel +configured by $0, generated by GNU Autoconf 2.59, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" -Copyright (C) 2006 Free Software Foundation, Inc. +Copyright (C) 2003 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' +srcdir=$srcdir +INSTALL="$INSTALL" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF @@ -31997,24 +27465,39 @@ while test $# != 0 do case $1 in --*=*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` ac_shift=: ;; - *) + -*) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; esac case $ac_option in # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - echo "$ac_cs_version"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift @@ -32024,24 +27507,18 @@ do $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - { echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. - -*) { echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2 + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; } ;; - *) ac_config_targets="$ac_config_targets $1" - ac_need_defaults=false ;; + *) ac_config_targets="$ac_config_targets $1" ;; esac shift @@ -32057,28 +27534,17 @@ fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then - echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - CONFIG_SHELL=$SHELL - export CONFIG_SHELL - exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX -@%:@@%:@ Running $as_me. @%:@@%:@ -_ASBOX - echo "$ac_log" -} >&5 -_ACEOF cat >>$CONFIG_STATUS <<_ACEOF # -# INIT-COMMANDS +# INIT-COMMANDS section. # + # Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it # from automake. @@ -32089,37 +27555,37 @@ cat >>$CONFIG_STATUS <<_ACEOF _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -# Handling of arguments. + +cat >>$CONFIG_STATUS <<\_ACEOF for ac_config_target in $ac_config_targets do - case $ac_config_target in - "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "builtins/Makefile") CONFIG_FILES="$CONFIG_FILES builtins/Makefile" ;; - "lib/readline/Makefile") CONFIG_FILES="$CONFIG_FILES lib/readline/Makefile" ;; - "lib/glob/Makefile") CONFIG_FILES="$CONFIG_FILES lib/glob/Makefile" ;; - "lib/intl/Makefile") CONFIG_FILES="$CONFIG_FILES lib/intl/Makefile" ;; - "lib/malloc/Makefile") CONFIG_FILES="$CONFIG_FILES lib/malloc/Makefile" ;; - "lib/sh/Makefile") CONFIG_FILES="$CONFIG_FILES lib/sh/Makefile" ;; - "lib/termcap/Makefile") CONFIG_FILES="$CONFIG_FILES lib/termcap/Makefile" ;; - "lib/tilde/Makefile") CONFIG_FILES="$CONFIG_FILES lib/tilde/Makefile" ;; - "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; - "support/Makefile") CONFIG_FILES="$CONFIG_FILES support/Makefile" ;; - "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; - "examples/loadables/Makefile") CONFIG_FILES="$CONFIG_FILES examples/loadables/Makefile" ;; - "examples/loadables/perl/Makefile") CONFIG_FILES="$CONFIG_FILES examples/loadables/perl/Makefile" ;; - "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; - + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "builtins/Makefile" ) CONFIG_FILES="$CONFIG_FILES builtins/Makefile" ;; + "lib/readline/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/readline/Makefile" ;; + "lib/glob/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/glob/Makefile" ;; + "lib/intl/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/intl/Makefile" ;; + "lib/malloc/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/malloc/Makefile" ;; + "lib/sh/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/sh/Makefile" ;; + "lib/termcap/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/termcap/Makefile" ;; + "lib/tilde/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/tilde/Makefile" ;; + "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "support/Makefile" ) CONFIG_FILES="$CONFIG_FILES support/Makefile" ;; + "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "examples/loadables/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/loadables/Makefile" ;; + "examples/loadables/perl/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/loadables/perl/Makefile" ;; + "pathnames.h" ) CONFIG_FILES="$CONFIG_FILES pathnames.h" ;; + "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done - # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely @@ -32131,506 +27597,398 @@ if $ac_need_defaults; then fi # Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, +# simply because there is no reason to put it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. +# Create a temporary directory, and hook for its removal unless debugging. $debug || { - tmp= - trap 'exit_status=$? - { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status -' 0 + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } + # Create a (secure) tmp directory for tmp files. { - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + # -# Set up the sed scripts for CONFIG_FILES section. +# CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h -if test -n "$CONFIG_FILES"; then - -_ACEOF - - - -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF -SHELL!$SHELL$ac_delim -PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim -PACKAGE_NAME!$PACKAGE_NAME$ac_delim -PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim -PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim -PACKAGE_STRING!$PACKAGE_STRING$ac_delim -PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim -exec_prefix!$exec_prefix$ac_delim -prefix!$prefix$ac_delim -program_transform_name!$program_transform_name$ac_delim -bindir!$bindir$ac_delim -sbindir!$sbindir$ac_delim -libexecdir!$libexecdir$ac_delim -datarootdir!$datarootdir$ac_delim -datadir!$datadir$ac_delim -sysconfdir!$sysconfdir$ac_delim -sharedstatedir!$sharedstatedir$ac_delim -localstatedir!$localstatedir$ac_delim -includedir!$includedir$ac_delim -oldincludedir!$oldincludedir$ac_delim -docdir!$docdir$ac_delim -infodir!$infodir$ac_delim -htmldir!$htmldir$ac_delim -dvidir!$dvidir$ac_delim -pdfdir!$pdfdir$ac_delim -psdir!$psdir$ac_delim -libdir!$libdir$ac_delim -localedir!$localedir$ac_delim -mandir!$mandir$ac_delim -DEFS!$DEFS$ac_delim -ECHO_C!$ECHO_C$ac_delim -ECHO_N!$ECHO_N$ac_delim -ECHO_T!$ECHO_T$ac_delim -LIBS!$LIBS$ac_delim -build_alias!$build_alias$ac_delim -host_alias!$host_alias$ac_delim -target_alias!$target_alias$ac_delim -build!$build$ac_delim -build_cpu!$build_cpu$ac_delim -build_vendor!$build_vendor$ac_delim -build_os!$build_os$ac_delim -host!$host$ac_delim -host_cpu!$host_cpu$ac_delim -host_vendor!$host_vendor$ac_delim -host_os!$host_os$ac_delim -EMACS!$EMACS$ac_delim -lispdir!$lispdir$ac_delim -DEBUGGER_START_FILE!$DEBUGGER_START_FILE$ac_delim -TESTSCRIPT!$TESTSCRIPT$ac_delim -PURIFY!$PURIFY$ac_delim -MALLOC_TARGET!$MALLOC_TARGET$ac_delim -MALLOC_SRC!$MALLOC_SRC$ac_delim -MALLOC_LIB!$MALLOC_LIB$ac_delim -MALLOC_LIBRARY!$MALLOC_LIBRARY$ac_delim -MALLOC_LDFLAGS!$MALLOC_LDFLAGS$ac_delim -MALLOC_DEP!$MALLOC_DEP$ac_delim -HELPDIR!$HELPDIR$ac_delim -HELPDIRDEFINE!$HELPDIRDEFINE$ac_delim -HELPINSTALL!$HELPINSTALL$ac_delim -HELPSTRINGS!$HELPSTRINGS$ac_delim -CC!$CC$ac_delim -CFLAGS!$CFLAGS$ac_delim -LDFLAGS!$LDFLAGS$ac_delim -CPPFLAGS!$CPPFLAGS$ac_delim -ac_ct_CC!$ac_ct_CC$ac_delim -EXEEXT!$EXEEXT$ac_delim -OBJEXT!$OBJEXT$ac_delim -CPP!$CPP$ac_delim -GREP!$GREP$ac_delim -EGREP!$EGREP$ac_delim -CROSS_COMPILE!$CROSS_COMPILE$ac_delim -SIGNAMES_H!$SIGNAMES_H$ac_delim -SIGNAMES_O!$SIGNAMES_O$ac_delim -CC_FOR_BUILD!$CC_FOR_BUILD$ac_delim -STATIC_LD!$STATIC_LD$ac_delim -CFLAGS_FOR_BUILD!$CFLAGS_FOR_BUILD$ac_delim -CPPFLAGS_FOR_BUILD!$CPPFLAGS_FOR_BUILD$ac_delim -LDFLAGS_FOR_BUILD!$LDFLAGS_FOR_BUILD$ac_delim -RL_VERSION!$RL_VERSION$ac_delim -RL_MAJOR!$RL_MAJOR$ac_delim -RL_MINOR!$RL_MINOR$ac_delim -READLINE_LIB!$READLINE_LIB$ac_delim -READLINE_DEP!$READLINE_DEP$ac_delim -RL_LIBDIR!$RL_LIBDIR$ac_delim -RL_INCLUDEDIR!$RL_INCLUDEDIR$ac_delim -RL_INCLUDE!$RL_INCLUDE$ac_delim -HISTORY_LIB!$HISTORY_LIB$ac_delim -HISTORY_DEP!$HISTORY_DEP$ac_delim -HIST_LIBDIR!$HIST_LIBDIR$ac_delim -TILDE_LIB!$TILDE_LIB$ac_delim -INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim -INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim -INSTALL_DATA!$INSTALL_DATA$ac_delim -AR!$AR$ac_delim -RANLIB!$RANLIB$ac_delim -YACC!$YACC$ac_delim -YFLAGS!$YFLAGS$ac_delim -_ACEOF - - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then - break - elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -if test -n "$ac_eof"; then - ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` - ac_eof=`expr $ac_eof + 1` -fi - -cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -_ACEOF -sed ' -s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -s/^/s,@/; s/!/@,|#_!!_#|/ -:n -t n -s/'"$ac_delim"'$/,g/; t -s/$/\\/; p -N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF -CEOF$ac_eof -_ACEOF - - -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF -SET_MAKE!$SET_MAKE$ac_delim -MAKE_SHELL!$MAKE_SHELL$ac_delim -SIZE!$SIZE$ac_delim -MKINSTALLDIRS!$MKINSTALLDIRS$ac_delim -USE_NLS!$USE_NLS$ac_delim -MSGFMT!$MSGFMT$ac_delim -GMSGFMT!$GMSGFMT$ac_delim -XGETTEXT!$XGETTEXT$ac_delim -MSGMERGE!$MSGMERGE$ac_delim -ALLOCA!$ALLOCA$ac_delim -GLIBC21!$GLIBC21$ac_delim -LIBICONV!$LIBICONV$ac_delim -LTLIBICONV!$LTLIBICONV$ac_delim -INTLBISON!$INTLBISON$ac_delim -BUILD_INCLUDED_LIBINTL!$BUILD_INCLUDED_LIBINTL$ac_delim -USE_INCLUDED_LIBINTL!$USE_INCLUDED_LIBINTL$ac_delim -CATOBJEXT!$CATOBJEXT$ac_delim -DATADIRNAME!$DATADIRNAME$ac_delim -INSTOBJEXT!$INSTOBJEXT$ac_delim -GENCAT!$GENCAT$ac_delim -INTLOBJS!$INTLOBJS$ac_delim -INTL_LIBTOOL_SUFFIX_PREFIX!$INTL_LIBTOOL_SUFFIX_PREFIX$ac_delim -INTLLIBS!$INTLLIBS$ac_delim -LIBINTL!$LIBINTL$ac_delim -LTLIBINTL!$LTLIBINTL$ac_delim -POSUB!$POSUB$ac_delim -LIB@&t@OBJS!$LIB@&t@OBJS$ac_delim -INTL_DEP!$INTL_DEP$ac_delim -INTL_INC!$INTL_INC$ac_delim -LIBINTL_H!$LIBINTL_H$ac_delim -SIGLIST_O!$SIGLIST_O$ac_delim -TERMCAP_LIB!$TERMCAP_LIB$ac_delim -TERMCAP_DEP!$TERMCAP_DEP$ac_delim -JOBS_O!$JOBS_O$ac_delim -SHOBJ_CC!$SHOBJ_CC$ac_delim -SHOBJ_CFLAGS!$SHOBJ_CFLAGS$ac_delim -SHOBJ_LD!$SHOBJ_LD$ac_delim -SHOBJ_LDFLAGS!$SHOBJ_LDFLAGS$ac_delim -SHOBJ_XLDFLAGS!$SHOBJ_XLDFLAGS$ac_delim -SHOBJ_LIBS!$SHOBJ_LIBS$ac_delim -SHOBJ_STATUS!$SHOBJ_STATUS$ac_delim -PROFILE_FLAGS!$PROFILE_FLAGS$ac_delim -incdir!$incdir$ac_delim -BUILD_DIR!$BUILD_DIR$ac_delim -ARFLAGS!$ARFLAGS$ac_delim -BASHVERS!$BASHVERS$ac_delim -RELSTATUS!$RELSTATUS$ac_delim -DEBUG!$DEBUG$ac_delim -MALLOC_DEBUG!$MALLOC_DEBUG$ac_delim -LOCAL_LIBS!$LOCAL_LIBS$ac_delim -LOCAL_CFLAGS!$LOCAL_CFLAGS$ac_delim -LOCAL_LDFLAGS!$LOCAL_LDFLAGS$ac_delim -LOCAL_DEFS!$LOCAL_DEFS$ac_delim -LTLIBOBJS!$LTLIBOBJS$ac_delim -_ACEOF - - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 54; then - break - elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@EMACS@,$EMACS,;t t +s,@lispdir@,$lispdir,;t t +s,@DEBUGGER_START_FILE@,$DEBUGGER_START_FILE,;t t +s,@TESTSCRIPT@,$TESTSCRIPT,;t t +s,@PURIFY@,$PURIFY,;t t +s,@MALLOC_TARGET@,$MALLOC_TARGET,;t t +s,@MALLOC_SRC@,$MALLOC_SRC,;t t +s,@MALLOC_LIB@,$MALLOC_LIB,;t t +s,@MALLOC_LIBRARY@,$MALLOC_LIBRARY,;t t +s,@MALLOC_LDFLAGS@,$MALLOC_LDFLAGS,;t t +s,@MALLOC_DEP@,$MALLOC_DEP,;t t +s,@htmldir@,$htmldir,;t t +s,@HELPDIR@,$HELPDIR,;t t +s,@HELPDIRDEFINE@,$HELPDIRDEFINE,;t t +s,@HELPINSTALL@,$HELPINSTALL,;t t +s,@HELPSTRINGS@,$HELPSTRINGS,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@CPP@,$CPP,;t t +s,@EGREP@,$EGREP,;t t +s,@CROSS_COMPILE@,$CROSS_COMPILE,;t t +s,@SIGNAMES_H@,$SIGNAMES_H,;t t +s,@SIGNAMES_O@,$SIGNAMES_O,;t t +s,@CC_FOR_BUILD@,$CC_FOR_BUILD,;t t +s,@STATIC_LD@,$STATIC_LD,;t t +s,@CFLAGS_FOR_BUILD@,$CFLAGS_FOR_BUILD,;t t +s,@CPPFLAGS_FOR_BUILD@,$CPPFLAGS_FOR_BUILD,;t t +s,@LDFLAGS_FOR_BUILD@,$LDFLAGS_FOR_BUILD,;t t +s,@RL_VERSION@,$RL_VERSION,;t t +s,@RL_MAJOR@,$RL_MAJOR,;t t +s,@RL_MINOR@,$RL_MINOR,;t t +s,@READLINE_LIB@,$READLINE_LIB,;t t +s,@READLINE_DEP@,$READLINE_DEP,;t t +s,@RL_LIBDIR@,$RL_LIBDIR,;t t +s,@RL_INCLUDEDIR@,$RL_INCLUDEDIR,;t t +s,@RL_INCLUDE@,$RL_INCLUDE,;t t +s,@HISTORY_LIB@,$HISTORY_LIB,;t t +s,@HISTORY_DEP@,$HISTORY_DEP,;t t +s,@HIST_LIBDIR@,$HIST_LIBDIR,;t t +s,@TILDE_LIB@,$TILDE_LIB,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@AR@,$AR,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@YACC@,$YACC,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@MAKE_SHELL@,$MAKE_SHELL,;t t +s,@SIZE@,$SIZE,;t t +s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t +s,@USE_NLS@,$USE_NLS,;t t +s,@MSGFMT@,$MSGFMT,;t t +s,@GMSGFMT@,$GMSGFMT,;t t +s,@XGETTEXT@,$XGETTEXT,;t t +s,@MSGMERGE@,$MSGMERGE,;t t +s,@ALLOCA@,$ALLOCA,;t t +s,@GLIBC21@,$GLIBC21,;t t +s,@LIBICONV@,$LIBICONV,;t t +s,@LTLIBICONV@,$LTLIBICONV,;t t +s,@INTLBISON@,$INTLBISON,;t t +s,@BUILD_INCLUDED_LIBINTL@,$BUILD_INCLUDED_LIBINTL,;t t +s,@USE_INCLUDED_LIBINTL@,$USE_INCLUDED_LIBINTL,;t t +s,@CATOBJEXT@,$CATOBJEXT,;t t +s,@DATADIRNAME@,$DATADIRNAME,;t t +s,@INSTOBJEXT@,$INSTOBJEXT,;t t +s,@GENCAT@,$GENCAT,;t t +s,@INTLOBJS@,$INTLOBJS,;t t +s,@INTL_LIBTOOL_SUFFIX_PREFIX@,$INTL_LIBTOOL_SUFFIX_PREFIX,;t t +s,@INTLLIBS@,$INTLLIBS,;t t +s,@LIBINTL@,$LIBINTL,;t t +s,@LTLIBINTL@,$LTLIBINTL,;t t +s,@POSUB@,$POSUB,;t t +s,@LIB@&t@OBJS@,$LIB@&t@OBJS,;t t +s,@INTL_DEP@,$INTL_DEP,;t t +s,@INTL_INC@,$INTL_INC,;t t +s,@LIBINTL_H@,$LIBINTL_H,;t t +s,@SIGLIST_O@,$SIGLIST_O,;t t +s,@TERMCAP_LIB@,$TERMCAP_LIB,;t t +s,@TERMCAP_DEP@,$TERMCAP_DEP,;t t +s,@JOBS_O@,$JOBS_O,;t t +s,@SHOBJ_CC@,$SHOBJ_CC,;t t +s,@SHOBJ_CFLAGS@,$SHOBJ_CFLAGS,;t t +s,@SHOBJ_LD@,$SHOBJ_LD,;t t +s,@SHOBJ_LDFLAGS@,$SHOBJ_LDFLAGS,;t t +s,@SHOBJ_XLDFLAGS@,$SHOBJ_XLDFLAGS,;t t +s,@SHOBJ_LIBS@,$SHOBJ_LIBS,;t t +s,@SHOBJ_STATUS@,$SHOBJ_STATUS,;t t +s,@PROFILE_FLAGS@,$PROFILE_FLAGS,;t t +s,@incdir@,$incdir,;t t +s,@BUILD_DIR@,$BUILD_DIR,;t t +s,@ARFLAGS@,$ARFLAGS,;t t +s,@BASHVERS@,$BASHVERS,;t t +s,@RELSTATUS@,$RELSTATUS,;t t +s,@DEBUG@,$DEBUG,;t t +s,@MALLOC_DEBUG@,$MALLOC_DEBUG,;t t +s,@LOCAL_LIBS@,$LOCAL_LIBS,;t t +s,@LOCAL_CFLAGS@,$LOCAL_CFLAGS,;t t +s,@LOCAL_LDFLAGS@,$LOCAL_LDFLAGS,;t t +s,@LOCAL_DEFS@,$LOCAL_DEFS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat fi -done - -ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -if test -n "$ac_eof"; then - ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` - ac_eof=`expr $ac_eof + 1` -fi +fi # test -n "$CONFIG_FILES" -cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end -_ACEOF -sed ' -s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -s/^/s,@/; s/!/@,|#_!!_#|/ -:n -t n -s/'"$ac_delim"'$/,g/; t -s/$/\\/; p -N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF -:end -s/|#_!!_#|//g -CEOF$ac_eof _ACEOF - - -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ 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/ -s/:*$// -s/^[^=]*=[ ]*$// -}' -fi - cat >>$CONFIG_STATUS <<\_ACEOF -fi # test -n "$CONFIG_FILES" - - -for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 -echo "$as_me: error: Invalid tag $ac_tag." >&2;} - { (exit 1); exit 1; }; };; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$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 `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 -echo "$as_me: error: cannot find input file: $ac_f" >&2;} - { (exit 1); exit 1; }; };; - esac - ac_file_inputs="$ac_file_inputs $ac_f" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input="Generated from "`IFS=: - echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - fi - - case $ac_tag in - *:-:* | *:-) cat >"$tmp/stdin";; - esac - ;; +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; esac - ac_dir=`$as_dirname -- "$ac_file" || + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - 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"; } || { + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || 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 + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -echo "$as_me: error: cannot create directory $as_dir" >&2;} + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } + ac_builddir=. -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) +if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi case $srcdir in - .) # We are building in place. + .) # No --srcdir option. We are building in place. ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac - case $ac_mode in - :F) - # - # CONFIG_FILE - # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -# 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= - -case `sed -n '/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p -' $ac_file_inputs` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } _ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub @@ -32638,140 +27996,365 @@ _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s&@configure_input@&$configure_input&;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -$ac_datarootdir_hack -" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out - -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"; } && - { 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 -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;} - - rm -f "$tmp/stdin" +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - -) cat "$tmp/out"; rm -f "$tmp/out";; - *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; esac - ;; - :H) - # - # CONFIG_HEADER - # -_ACEOF - -# Transform confdefs.h into a sed script `conftest.defines', that -# substitutes the proper values into config.h.in to produce config.h. -rm -f conftest.defines conftest.tail -# First, append a space to every undef/define line, to ease matching. -echo 's/$/ /' >conftest.defines -# Then, protect against being on the right side of a sed subst, or in -# an unquoted here document, in config.status. If some macros were -# called several times there might be several #defines for the same -# symbol, which is useless. But do not sort them, since the last -# AC_DEFINE must be honored. -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where -# NAME is the cpp macro being defined, VALUE is the value it is being given. -# PARAMS is the parameter list in the macro definition--in most cases, it's -# just an empty string. -ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' -ac_dB='\\)[ (].*,\\1define\\2' -ac_dC=' ' -ac_dD=' ,' - -uniq confdefs.h | - sed -n ' - t rset - :rset - s/^[ ]*#[ ]*define[ ][ ]*// - t ok - d - :ok - s/[\\&,]/\\&/g - s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p - s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p - ' >>conftest.defines - -# Remove the space that was appended to ease matching. -# Then replace #undef with comments. This is necessary, for + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + # Do quote $f, to prevent DOS paths from being IFS'd. + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. -# (The regexp can be short, since the line contains either #define or #undef.) -echo 's/ $// -s,^[ #]*u.*,/* & */,' >>conftest.defines - -# Break up conftest.defines: -ac_max_sed_lines=50 - -# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" -# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" -# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" -# et cetera. -ac_in='$ac_file_inputs' -ac_out='"$tmp/out1"' -ac_nxt='"$tmp/out2"' - -while : +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null do - # Write a here document: - cat >>$CONFIG_STATUS <<_ACEOF - # First, check the format of the line: - cat >"\$tmp/defines.sed" <<\\CEOF -/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def -/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def -b -:def -_ACEOF - sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF - sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS - ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in - sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail - grep . conftest.tail >/dev/null || break + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail rm -f conftest.defines mv conftest.tail conftest.defines done -rm -f conftest.defines conftest.tail +rm -f conftest.defines +echo ' fi # grep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs -echo "ac_result=$ac_in" >>$CONFIG_STATUS cat >>$CONFIG_STATUS <<\_ACEOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in if test x"$ac_file" != x-; then - echo "/* $configure_input */" >"$tmp/config.h" - cat "$ac_result" >>"$tmp/config.h" - if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + rm -f $ac_file - mv "$tmp/config.h" $ac_file + mv $tmp/config.h $ac_file fi else - echo "/* $configure_input */" - cat "$ac_result" + cat $tmp/config.h + rm -f $tmp/config.h fi - rm -f "$tmp/out12" - ;; - - :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 -echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac - case $ac_file$ac_mode in - "default-1":C) + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + default-1 ) for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in @@ -32872,14 +28455,15 @@ echo "$as_me: executing $ac_file commands" >&6;} ;; esac done ;; - "default":C) + default ) # Makefile uses this timestamp file to record whether config.h is up to date. echo timestamp > stamp-h ;; - esac -done # for ac_tag +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF diff --git a/autom4te.cache/requests b/autom4te.cache/requests index 498e0d35e..84e4075e3 100644 --- a/autom4te.cache/requests +++ b/autom4te.cache/requests @@ -15,10 +15,7 @@ 'configure.in' ], { - 'AM_PROG_F77_C_O' => 1, - '_LT_AC_TAGCONFIG' => 1, 'm4_pattern_forbid' => 1, - 'AC_CANONICAL_TARGET' => 1, 'AC_CONFIG_LIBOBJ_DIR' => 1, 'AC_C_VOLATILE' => 1, 'AC_TYPE_OFF_T' => 1, @@ -26,16 +23,15 @@ 'AC_REPLACE_FNMATCH' => 1, 'AC_PROG_LIBTOOL' => 1, 'AC_FUNC_STAT' => 1, - 'AC_FUNC_WAIT3' => 1, 'AC_HEADER_TIME' => 1, + 'AC_FUNC_WAIT3' => 1, 'AC_FUNC_LSTAT' => 1, 'AC_STRUCT_TM' => 1, 'AM_AUTOMAKE_VERSION' => 1, - 'AC_FUNC_GETMNTENT' => 1, 'AC_TYPE_MODE_T' => 1, - 'AC_CHECK_HEADERS' => 1, + 'AC_FUNC_GETMNTENT' => 1, 'AC_FUNC_STRTOD' => 1, - 'LT_CONFIG_LTDL_DIR' => 1, + 'AC_CHECK_HEADERS' => 1, 'AC_FUNC_STRNLEN' => 1, 'm4_sinclude' => 1, 'AC_PROG_CXX' => 1, @@ -45,61 +41,52 @@ '_m4_warn' => 1, 'AC_HEADER_STDC' => 1, 'AC_HEADER_MAJOR' => 1, - 'AM_PROG_CXX_C_O' => 1, - 'LT_INIT' => 1, 'AC_FUNC_ERROR_AT_LINE' => 1, 'AC_PROG_GCC_TRADITIONAL' => 1, 'AC_LIBSOURCE' => 1, 'AC_FUNC_MBRTOWC' => 1, 'AC_STRUCT_ST_BLOCKS' => 1, 'AC_TYPE_SIGNAL' => 1, - 'AC_CANONICAL_BUILD' => 1, - 'AM_PROG_FC_C_O' => 1, 'AC_TYPE_UID_T' => 1, - 'AC_PROG_MAKE_SET' => 1, 'AC_CONFIG_AUX_DIR' => 1, - '_AM_SUBST_NOTMAKE' => 1, - 'm4_pattern_allow' => 1, + 'AC_PROG_MAKE_SET' => 1, 'sinclude' => 1, + 'm4_pattern_allow' => 1, 'AC_DEFINE_TRACE_LITERAL' => 1, 'AC_FUNC_STRERROR_R' => 1, 'AC_PROG_CC' => 1, - 'AC_DECL_SYS_SIGLIST' => 1, 'AC_FUNC_FORK' => 1, - 'AC_FUNC_STRCOLL' => 1, + 'AC_DECL_SYS_SIGLIST' => 1, 'AC_FUNC_VPRINTF' => 1, + 'AC_FUNC_STRCOLL' => 1, 'AC_PROG_YACC' => 1, - 'AC_SUBST_TRACE' => 1, 'AC_INIT' => 1, 'AC_STRUCT_TIMEZONE' => 1, 'AC_FUNC_CHOWN' => 1, 'AC_SUBST' => 1, 'AC_FUNC_ALLOCA' => 1, - 'AC_FC_SRCEXT' => 1, - 'AC_CANONICAL_HOST' => 1, 'AC_FUNC_GETPGRP' => 1, + 'AC_CANONICAL_HOST' => 1, 'AC_PROG_RANLIB' => 1, - 'AC_FUNC_SETPGRP' => 1, 'AM_INIT_AUTOMAKE' => 1, + 'AC_FUNC_SETPGRP' => 1, 'AC_CONFIG_SUBDIRS' => 1, 'AC_FUNC_MMAP' => 1, 'AC_FUNC_REALLOC' => 1, 'AC_TYPE_SIZE_T' => 1, 'AC_CHECK_TYPES' => 1, 'AC_CONFIG_LINKS' => 1, - 'AC_REQUIRE_AUX_FILE' => 1, - 'LT_SUPPORTED_TAG' => 1, 'AC_CHECK_MEMBERS' => 1, 'AM_MAINTAINER_MODE' => 1, 'AC_FUNC_UTIME_NULL' => 1, 'AC_FUNC_SELECT_ARGTYPES' => 1, - 'AC_HEADER_STAT' => 1, 'AC_FUNC_STRFTIME' => 1, + 'AC_HEADER_STAT' => 1, 'AC_PROG_CPP' => 1, 'AC_C_INLINE' => 1, + 'AC_TYPE_PID_T' => 1, 'AC_PROG_LEX' => 1, 'AC_C_CONST' => 1, - 'AC_TYPE_PID_T' => 1, 'AC_CONFIG_FILES' => 1, 'include' => 1, 'AC_FUNC_SETVBUF_REVERSED' => 1, @@ -110,7 +97,6 @@ 'AC_FUNC_MALLOC' => 1, 'AC_FUNC_GETGROUPS' => 1, 'AC_FUNC_GETLOADAVG' => 1, - 'AC_FC_FREEFORM' => 1, 'AH_OUTPUT' => 1, 'AC_FUNC_FSEEKO' => 1, 'AM_PROG_CC_C_O' => 1, @@ -119,8 +105,8 @@ 'AM_CONDITIONAL' => 1, 'AC_CONFIG_HEADERS' => 1, 'AC_HEADER_SYS_WAIT' => 1, - 'AC_PROG_LN_S' => 1, 'AC_FUNC_MEMCMP' => 1, + 'AC_PROG_LN_S' => 1, 'm4_include' => 1, 'AC_HEADER_DIRENT' => 1, 'AC_CHECK_FUNCS' => 1 diff --git a/autom4te.cache/traces.0 b/autom4te.cache/traces.0 index da94d38f6..eb2242f1d 100644 --- a/autom4te.cache/traces.0 +++ b/autom4te.cache/traces.0 @@ -1,4 +1,4 @@ -m4trace:configure.in:30: -1- AC_INIT([bash], [3.2-maint], [bug-bash@gnu.org]) +m4trace:configure.in:30: -1- AC_INIT([bash], [3.2-devel], [bug-bash@gnu.org]) m4trace:configure.in:30: -1- m4_pattern_forbid([^_?A[CHUM]_]) m4trace:configure.in:30: -1- m4_pattern_forbid([_AC_]) m4trace:configure.in:30: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) @@ -7,452 +7,249 @@ m4trace:configure.in:30: -1- m4_pattern_forbid([^_?m4_]) m4trace:configure.in:30: -1- m4_pattern_forbid([^dnl$]) m4trace:configure.in:30: -1- m4_pattern_forbid([^_?AS_]) m4trace:configure.in:30: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}]) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([SHELL]) -m4trace:configure.in:30: -1- m4_pattern_allow([^SHELL$]) m4trace:configure.in:30: -1- AC_SUBST([PATH_SEPARATOR]) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([PATH_SEPARATOR]) -m4trace:configure.in:30: -1- m4_pattern_allow([^PATH_SEPARATOR$]) m4trace:configure.in:30: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([PACKAGE_NAME]) -m4trace:configure.in:30: -1- m4_pattern_allow([^PACKAGE_NAME$]) m4trace:configure.in:30: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([PACKAGE_TARNAME]) -m4trace:configure.in:30: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) m4trace:configure.in:30: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([PACKAGE_VERSION]) -m4trace:configure.in:30: -1- m4_pattern_allow([^PACKAGE_VERSION$]) m4trace:configure.in:30: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([PACKAGE_STRING]) -m4trace:configure.in:30: -1- m4_pattern_allow([^PACKAGE_STRING$]) m4trace:configure.in:30: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT]) -m4trace:configure.in:30: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) m4trace:configure.in:30: -1- AC_SUBST([exec_prefix], [NONE]) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([exec_prefix]) -m4trace:configure.in:30: -1- m4_pattern_allow([^exec_prefix$]) m4trace:configure.in:30: -1- AC_SUBST([prefix], [NONE]) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([prefix]) -m4trace:configure.in:30: -1- m4_pattern_allow([^prefix$]) m4trace:configure.in:30: -1- AC_SUBST([program_transform_name], [s,x,x,]) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([program_transform_name]) -m4trace:configure.in:30: -1- m4_pattern_allow([^program_transform_name$]) m4trace:configure.in:30: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([bindir]) -m4trace:configure.in:30: -1- m4_pattern_allow([^bindir$]) m4trace:configure.in:30: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([sbindir]) -m4trace:configure.in:30: -1- m4_pattern_allow([^sbindir$]) m4trace:configure.in:30: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([libexecdir]) -m4trace:configure.in:30: -1- m4_pattern_allow([^libexecdir$]) -m4trace:configure.in:30: -1- AC_SUBST([datarootdir], ['${prefix}/share']) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([datarootdir]) -m4trace:configure.in:30: -1- m4_pattern_allow([^datarootdir$]) -m4trace:configure.in:30: -1- AC_SUBST([datadir], ['${datarootdir}']) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([datadir]) -m4trace:configure.in:30: -1- m4_pattern_allow([^datadir$]) +m4trace:configure.in:30: -1- AC_SUBST([datadir], ['${prefix}/share']) m4trace:configure.in:30: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([sysconfdir]) -m4trace:configure.in:30: -1- m4_pattern_allow([^sysconfdir$]) m4trace:configure.in:30: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([sharedstatedir]) -m4trace:configure.in:30: -1- m4_pattern_allow([^sharedstatedir$]) m4trace:configure.in:30: -1- AC_SUBST([localstatedir], ['${prefix}/var']) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([localstatedir]) -m4trace:configure.in:30: -1- m4_pattern_allow([^localstatedir$]) +m4trace:configure.in:30: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) m4trace:configure.in:30: -1- AC_SUBST([includedir], ['${prefix}/include']) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([includedir]) -m4trace:configure.in:30: -1- m4_pattern_allow([^includedir$]) m4trace:configure.in:30: -1- AC_SUBST([oldincludedir], ['/usr/include']) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([oldincludedir]) -m4trace:configure.in:30: -1- m4_pattern_allow([^oldincludedir$]) -m4trace:configure.in:30: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME], - ['${datarootdir}/doc/${PACKAGE_TARNAME}'], - ['${datarootdir}/doc/${PACKAGE}'])]) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([docdir]) -m4trace:configure.in:30: -1- m4_pattern_allow([^docdir$]) -m4trace:configure.in:30: -1- AC_SUBST([infodir], ['${datarootdir}/info']) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([infodir]) -m4trace:configure.in:30: -1- m4_pattern_allow([^infodir$]) -m4trace:configure.in:30: -1- AC_SUBST([htmldir], ['${docdir}']) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([htmldir]) -m4trace:configure.in:30: -1- m4_pattern_allow([^htmldir$]) -m4trace:configure.in:30: -1- AC_SUBST([dvidir], ['${docdir}']) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([dvidir]) -m4trace:configure.in:30: -1- m4_pattern_allow([^dvidir$]) -m4trace:configure.in:30: -1- AC_SUBST([pdfdir], ['${docdir}']) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([pdfdir]) -m4trace:configure.in:30: -1- m4_pattern_allow([^pdfdir$]) -m4trace:configure.in:30: -1- AC_SUBST([psdir], ['${docdir}']) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([psdir]) -m4trace:configure.in:30: -1- m4_pattern_allow([^psdir$]) -m4trace:configure.in:30: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([libdir]) -m4trace:configure.in:30: -1- m4_pattern_allow([^libdir$]) -m4trace:configure.in:30: -1- AC_SUBST([localedir], ['${datarootdir}/locale']) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([localedir]) -m4trace:configure.in:30: -1- m4_pattern_allow([^localedir$]) -m4trace:configure.in:30: -1- AC_SUBST([mandir], ['${datarootdir}/man']) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([mandir]) -m4trace:configure.in:30: -1- m4_pattern_allow([^mandir$]) +m4trace:configure.in:30: -1- AC_SUBST([infodir], ['${prefix}/info']) +m4trace:configure.in:30: -1- AC_SUBST([mandir], ['${prefix}/man']) m4trace:configure.in:30: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) -m4trace:configure.in:30: -1- m4_pattern_allow([^PACKAGE_NAME$]) m4trace:configure.in:30: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ #undef PACKAGE_NAME]) m4trace:configure.in:30: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) -m4trace:configure.in:30: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) m4trace:configure.in:30: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME]) m4trace:configure.in:30: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) -m4trace:configure.in:30: -1- m4_pattern_allow([^PACKAGE_VERSION$]) m4trace:configure.in:30: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ #undef PACKAGE_VERSION]) m4trace:configure.in:30: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) -m4trace:configure.in:30: -1- m4_pattern_allow([^PACKAGE_STRING$]) m4trace:configure.in:30: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ #undef PACKAGE_STRING]) m4trace:configure.in:30: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) -m4trace:configure.in:30: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) m4trace:configure.in:30: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT]) +m4trace:configure.in:30: -1- AC_SUBST([build_alias]) +m4trace:configure.in:30: -1- AC_SUBST([host_alias]) +m4trace:configure.in:30: -1- AC_SUBST([target_alias]) m4trace:configure.in:30: -1- AC_SUBST([DEFS]) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([DEFS]) -m4trace:configure.in:30: -1- m4_pattern_allow([^DEFS$]) m4trace:configure.in:30: -1- AC_SUBST([ECHO_C]) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([ECHO_C]) -m4trace:configure.in:30: -1- m4_pattern_allow([^ECHO_C$]) m4trace:configure.in:30: -1- AC_SUBST([ECHO_N]) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([ECHO_N]) -m4trace:configure.in:30: -1- m4_pattern_allow([^ECHO_N$]) m4trace:configure.in:30: -1- AC_SUBST([ECHO_T]) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([ECHO_T]) -m4trace:configure.in:30: -1- m4_pattern_allow([^ECHO_T$]) m4trace:configure.in:30: -1- AC_SUBST([LIBS]) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([LIBS]) -m4trace:configure.in:30: -1- m4_pattern_allow([^LIBS$]) -m4trace:configure.in:30: -1- AC_SUBST([build_alias]) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([build_alias]) -m4trace:configure.in:30: -1- m4_pattern_allow([^build_alias$]) -m4trace:configure.in:30: -1- AC_SUBST([host_alias]) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([host_alias]) -m4trace:configure.in:30: -1- m4_pattern_allow([^host_alias$]) -m4trace:configure.in:30: -1- AC_SUBST([target_alias]) -m4trace:configure.in:30: -1- AC_SUBST_TRACE([target_alias]) -m4trace:configure.in:30: -1- m4_pattern_allow([^target_alias$]) m4trace:configure.in:37: -1- AC_CONFIG_AUX_DIR([./support]) m4trace:configure.in:38: -1- AC_CONFIG_HEADERS([config.h]) m4trace:configure.in:52: -1- AC_CANONICAL_HOST -m4trace:configure.in:52: -1- AC_CANONICAL_BUILD -m4trace:configure.in:52: -1- AC_REQUIRE_AUX_FILE([config.sub]) -m4trace:configure.in:52: -1- AC_REQUIRE_AUX_FILE([config.guess]) m4trace:configure.in:52: -1- AC_SUBST([build], [$ac_cv_build]) -m4trace:configure.in:52: -1- AC_SUBST_TRACE([build]) -m4trace:configure.in:52: -1- m4_pattern_allow([^build$]) -m4trace:configure.in:52: -1- AC_SUBST([build_cpu], [$[1]]) -m4trace:configure.in:52: -1- AC_SUBST_TRACE([build_cpu]) -m4trace:configure.in:52: -1- m4_pattern_allow([^build_cpu$]) -m4trace:configure.in:52: -1- AC_SUBST([build_vendor], [$[2]]) -m4trace:configure.in:52: -1- AC_SUBST_TRACE([build_vendor]) -m4trace:configure.in:52: -1- m4_pattern_allow([^build_vendor$]) -m4trace:configure.in:52: -1- AC_SUBST([build_os]) -m4trace:configure.in:52: -1- AC_SUBST_TRACE([build_os]) -m4trace:configure.in:52: -1- m4_pattern_allow([^build_os$]) +m4trace:configure.in:52: -1- AC_SUBST([build_cpu], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`]) +m4trace:configure.in:52: -1- AC_SUBST([build_vendor], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`]) +m4trace:configure.in:52: -1- AC_SUBST([build_os], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`]) m4trace:configure.in:52: -1- AC_SUBST([host], [$ac_cv_host]) -m4trace:configure.in:52: -1- AC_SUBST_TRACE([host]) -m4trace:configure.in:52: -1- m4_pattern_allow([^host$]) -m4trace:configure.in:52: -1- AC_SUBST([host_cpu], [$[1]]) -m4trace:configure.in:52: -1- AC_SUBST_TRACE([host_cpu]) -m4trace:configure.in:52: -1- m4_pattern_allow([^host_cpu$]) -m4trace:configure.in:52: -1- AC_SUBST([host_vendor], [$[2]]) -m4trace:configure.in:52: -1- AC_SUBST_TRACE([host_vendor]) -m4trace:configure.in:52: -1- m4_pattern_allow([^host_vendor$]) -m4trace:configure.in:52: -1- AC_SUBST([host_os]) -m4trace:configure.in:52: -1- AC_SUBST_TRACE([host_os]) -m4trace:configure.in:52: -1- m4_pattern_allow([^host_os$]) +m4trace:configure.in:52: -1- AC_SUBST([host_cpu], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`]) +m4trace:configure.in:52: -1- AC_SUBST([host_vendor], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`]) +m4trace:configure.in:52: -1- AC_SUBST([host_os], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`]) m4trace:configure.in:102: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... -aclocal.m4:1969: AM_PATH_LISPDIR is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +aclocal.m4:1932: AM_PATH_LISPDIR is expanded from... configure.in:102: the top level]) m4trace:configure.in:102: -1- AC_SUBST([EMACS]) -m4trace:configure.in:102: -1- AC_SUBST_TRACE([EMACS]) -m4trace:configure.in:102: -1- m4_pattern_allow([^EMACS$]) m4trace:configure.in:102: -1- AC_SUBST([lispdir]) -m4trace:configure.in:102: -1- AC_SUBST_TRACE([lispdir]) -m4trace:configure.in:102: -1- m4_pattern_allow([^lispdir$]) m4trace:configure.in:103: -1- AC_SUBST([DEBUGGER_START_FILE]) -m4trace:configure.in:103: -1- AC_SUBST_TRACE([DEBUGGER_START_FILE]) -m4trace:configure.in:103: -1- m4_pattern_allow([^DEBUGGER_START_FILE$]) m4trace:configure.in:107: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:107: the top level]) m4trace:configure.in:108: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:108: the top level]) m4trace:configure.in:109: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:109: the top level]) m4trace:configure.in:110: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:110: the top level]) m4trace:configure.in:111: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:111: the top level]) m4trace:configure.in:112: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:112: the top level]) m4trace:configure.in:113: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:113: the top level]) m4trace:configure.in:124: -1- AC_DEFINE_TRACE_LITERAL([USING_BASH_MALLOC]) -m4trace:configure.in:124: -1- m4_pattern_allow([^USING_BASH_MALLOC$]) m4trace:configure.in:134: -1- AC_DEFINE_TRACE_LITERAL([DISABLE_MALLOC_WRAPPERS]) -m4trace:configure.in:134: -1- m4_pattern_allow([^DISABLE_MALLOC_WRAPPERS$]) m4trace:configure.in:144: -1- AC_DEFINE_TRACE_LITERAL([AFS]) -m4trace:configure.in:144: -1- m4_pattern_allow([^AFS$]) m4trace:configure.in:192: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:192: the top level]) m4trace:configure.in:207: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:207: the top level]) m4trace:configure.in:208: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:208: the top level]) m4trace:configure.in:209: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:209: the top level]) m4trace:configure.in:210: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:210: the top level]) m4trace:configure.in:211: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:211: the top level]) m4trace:configure.in:212: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:212: the top level]) m4trace:configure.in:213: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:213: the top level]) m4trace:configure.in:214: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:214: the top level]) m4trace:configure.in:215: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:215: the top level]) m4trace:configure.in:216: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:216: the top level]) m4trace:configure.in:217: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:217: the top level]) m4trace:configure.in:218: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:218: the top level]) m4trace:configure.in:219: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:219: the top level]) m4trace:configure.in:220: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:220: the top level]) m4trace:configure.in:221: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:221: the top level]) m4trace:configure.in:222: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:222: the top level]) m4trace:configure.in:223: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:223: the top level]) m4trace:configure.in:224: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:224: the top level]) m4trace:configure.in:225: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:225: the top level]) m4trace:configure.in:226: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:226: the top level]) m4trace:configure.in:227: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:227: the top level]) m4trace:configure.in:228: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:228: the top level]) m4trace:configure.in:229: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:229: the top level]) m4trace:configure.in:230: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:230: the top level]) m4trace:configure.in:231: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:231: the top level]) m4trace:configure.in:232: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:232: the top level]) m4trace:configure.in:233: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:233: the top level]) m4trace:configure.in:234: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:234: the top level]) m4trace:configure.in:235: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:235: the top level]) m4trace:configure.in:238: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:238: the top level]) m4trace:configure.in:239: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:239: the top level]) m4trace:configure.in:240: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:209: AC_HELP_STRING is expanded from... +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:240: the top level]) m4trace:configure.in:249: -1- AC_DEFINE_TRACE_LITERAL([ALIAS]) -m4trace:configure.in:249: -1- m4_pattern_allow([^ALIAS$]) m4trace:configure.in:252: -1- AC_DEFINE_TRACE_LITERAL([PUSHD_AND_POPD]) -m4trace:configure.in:252: -1- m4_pattern_allow([^PUSHD_AND_POPD$]) m4trace:configure.in:255: -1- AC_DEFINE_TRACE_LITERAL([RESTRICTED_SHELL]) -m4trace:configure.in:255: -1- m4_pattern_allow([^RESTRICTED_SHELL$]) m4trace:configure.in:258: -1- AC_DEFINE_TRACE_LITERAL([PROCESS_SUBSTITUTION]) -m4trace:configure.in:258: -1- m4_pattern_allow([^PROCESS_SUBSTITUTION$]) m4trace:configure.in:261: -1- AC_DEFINE_TRACE_LITERAL([PROMPT_STRING_DECODE]) -m4trace:configure.in:261: -1- m4_pattern_allow([^PROMPT_STRING_DECODE$]) m4trace:configure.in:264: -1- AC_DEFINE_TRACE_LITERAL([SELECT_COMMAND]) -m4trace:configure.in:264: -1- m4_pattern_allow([^SELECT_COMMAND$]) m4trace:configure.in:267: -1- AC_DEFINE_TRACE_LITERAL([HELP_BUILTIN]) -m4trace:configure.in:267: -1- m4_pattern_allow([^HELP_BUILTIN$]) m4trace:configure.in:270: -1- AC_DEFINE_TRACE_LITERAL([ARRAY_VARS]) -m4trace:configure.in:270: -1- m4_pattern_allow([^ARRAY_VARS$]) m4trace:configure.in:273: -1- AC_DEFINE_TRACE_LITERAL([DPAREN_ARITHMETIC]) -m4trace:configure.in:273: -1- m4_pattern_allow([^DPAREN_ARITHMETIC$]) m4trace:configure.in:276: -1- AC_DEFINE_TRACE_LITERAL([BRACE_EXPANSION]) -m4trace:configure.in:276: -1- m4_pattern_allow([^BRACE_EXPANSION$]) m4trace:configure.in:279: -1- AC_DEFINE_TRACE_LITERAL([DISABLED_BUILTINS]) -m4trace:configure.in:279: -1- m4_pattern_allow([^DISABLED_BUILTINS$]) m4trace:configure.in:282: -1- AC_DEFINE_TRACE_LITERAL([COMMAND_TIMING]) -m4trace:configure.in:282: -1- m4_pattern_allow([^COMMAND_TIMING$]) m4trace:configure.in:285: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_ECHO_TO_XPG]) -m4trace:configure.in:285: -1- m4_pattern_allow([^DEFAULT_ECHO_TO_XPG$]) m4trace:configure.in:288: -1- AC_DEFINE_TRACE_LITERAL([STRICT_POSIX]) -m4trace:configure.in:288: -1- m4_pattern_allow([^STRICT_POSIX$]) m4trace:configure.in:291: -1- AC_DEFINE_TRACE_LITERAL([EXTENDED_GLOB]) -m4trace:configure.in:291: -1- m4_pattern_allow([^EXTENDED_GLOB$]) m4trace:configure.in:294: -1- AC_DEFINE_TRACE_LITERAL([COND_COMMAND]) -m4trace:configure.in:294: -1- m4_pattern_allow([^COND_COMMAND$]) m4trace:configure.in:297: -1- AC_DEFINE_TRACE_LITERAL([COND_REGEXP]) -m4trace:configure.in:297: -1- m4_pattern_allow([^COND_REGEXP$]) m4trace:configure.in:300: -1- AC_DEFINE_TRACE_LITERAL([ARITH_FOR_COMMAND]) -m4trace:configure.in:300: -1- m4_pattern_allow([^ARITH_FOR_COMMAND$]) m4trace:configure.in:303: -1- AC_DEFINE_TRACE_LITERAL([NETWORK_REDIRECTIONS]) -m4trace:configure.in:303: -1- m4_pattern_allow([^NETWORK_REDIRECTIONS$]) m4trace:configure.in:306: -1- AC_DEFINE_TRACE_LITERAL([PROGRAMMABLE_COMPLETION]) -m4trace:configure.in:306: -1- m4_pattern_allow([^PROGRAMMABLE_COMPLETION$]) m4trace:configure.in:309: -1- AC_DEFINE_TRACE_LITERAL([NO_MULTIBYTE_SUPPORT]) -m4trace:configure.in:309: -1- m4_pattern_allow([^NO_MULTIBYTE_SUPPORT$]) m4trace:configure.in:312: -1- AC_DEFINE_TRACE_LITERAL([DEBUGGER]) -m4trace:configure.in:312: -1- m4_pattern_allow([^DEBUGGER$]) m4trace:configure.in:316: -1- AC_DEFINE_TRACE_LITERAL([MEMSCRAMBLE]) -m4trace:configure.in:316: -1- m4_pattern_allow([^MEMSCRAMBLE$]) m4trace:configure.in:341: -1- AC_SUBST([TESTSCRIPT]) -m4trace:configure.in:341: -1- AC_SUBST_TRACE([TESTSCRIPT]) -m4trace:configure.in:341: -1- m4_pattern_allow([^TESTSCRIPT$]) m4trace:configure.in:342: -1- AC_SUBST([PURIFY]) -m4trace:configure.in:342: -1- AC_SUBST_TRACE([PURIFY]) -m4trace:configure.in:342: -1- m4_pattern_allow([^PURIFY$]) m4trace:configure.in:343: -1- AC_SUBST([MALLOC_TARGET]) -m4trace:configure.in:343: -1- AC_SUBST_TRACE([MALLOC_TARGET]) -m4trace:configure.in:343: -1- m4_pattern_allow([^MALLOC_TARGET$]) m4trace:configure.in:344: -1- AC_SUBST([MALLOC_SRC]) -m4trace:configure.in:344: -1- AC_SUBST_TRACE([MALLOC_SRC]) -m4trace:configure.in:344: -1- m4_pattern_allow([^MALLOC_SRC$]) m4trace:configure.in:346: -1- AC_SUBST([MALLOC_LIB]) -m4trace:configure.in:346: -1- AC_SUBST_TRACE([MALLOC_LIB]) -m4trace:configure.in:346: -1- m4_pattern_allow([^MALLOC_LIB$]) m4trace:configure.in:347: -1- AC_SUBST([MALLOC_LIBRARY]) -m4trace:configure.in:347: -1- AC_SUBST_TRACE([MALLOC_LIBRARY]) -m4trace:configure.in:347: -1- m4_pattern_allow([^MALLOC_LIBRARY$]) m4trace:configure.in:348: -1- AC_SUBST([MALLOC_LDFLAGS]) -m4trace:configure.in:348: -1- AC_SUBST_TRACE([MALLOC_LDFLAGS]) -m4trace:configure.in:348: -1- m4_pattern_allow([^MALLOC_LDFLAGS$]) m4trace:configure.in:349: -1- AC_SUBST([MALLOC_DEP]) -m4trace:configure.in:349: -1- AC_SUBST_TRACE([MALLOC_DEP]) -m4trace:configure.in:349: -1- m4_pattern_allow([^MALLOC_DEP$]) m4trace:configure.in:351: -1- AC_SUBST([htmldir]) -m4trace:configure.in:351: -1- AC_SUBST_TRACE([htmldir]) -m4trace:configure.in:351: -1- m4_pattern_allow([^htmldir$]) m4trace:configure.in:353: -1- AC_SUBST([HELPDIR]) -m4trace:configure.in:353: -1- AC_SUBST_TRACE([HELPDIR]) -m4trace:configure.in:353: -1- m4_pattern_allow([^HELPDIR$]) m4trace:configure.in:354: -1- AC_SUBST([HELPDIRDEFINE]) -m4trace:configure.in:354: -1- AC_SUBST_TRACE([HELPDIRDEFINE]) -m4trace:configure.in:354: -1- m4_pattern_allow([^HELPDIRDEFINE$]) m4trace:configure.in:355: -1- AC_SUBST([HELPINSTALL]) -m4trace:configure.in:355: -1- AC_SUBST_TRACE([HELPINSTALL]) -m4trace:configure.in:355: -1- m4_pattern_allow([^HELPINSTALL$]) m4trace:configure.in:356: -1- AC_SUBST([HELPSTRINGS]) -m4trace:configure.in:356: -1- AC_SUBST_TRACE([HELPSTRINGS]) -m4trace:configure.in:356: -1- m4_pattern_allow([^HELPSTRINGS$]) m4trace:configure.in:365: -1- AC_PROG_CC m4trace:configure.in:365: -1- AC_SUBST([CC]) -m4trace:configure.in:365: -1- AC_SUBST_TRACE([CC]) -m4trace:configure.in:365: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:365: -1- AC_SUBST([CFLAGS]) -m4trace:configure.in:365: -1- AC_SUBST_TRACE([CFLAGS]) -m4trace:configure.in:365: -1- m4_pattern_allow([^CFLAGS$]) m4trace:configure.in:365: -1- AC_SUBST([LDFLAGS]) -m4trace:configure.in:365: -1- AC_SUBST_TRACE([LDFLAGS]) -m4trace:configure.in:365: -1- m4_pattern_allow([^LDFLAGS$]) m4trace:configure.in:365: -1- AC_SUBST([CPPFLAGS]) -m4trace:configure.in:365: -1- AC_SUBST_TRACE([CPPFLAGS]) -m4trace:configure.in:365: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.in:365: -1- AC_SUBST([CC]) -m4trace:configure.in:365: -1- AC_SUBST_TRACE([CC]) -m4trace:configure.in:365: -1- m4_pattern_allow([^CC$]) +m4trace:configure.in:365: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.in:365: -1- AC_SUBST([CC]) -m4trace:configure.in:365: -1- AC_SUBST_TRACE([CC]) -m4trace:configure.in:365: -1- m4_pattern_allow([^CC$]) +m4trace:configure.in:365: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.in:365: -1- AC_SUBST([CC]) -m4trace:configure.in:365: -1- AC_SUBST_TRACE([CC]) -m4trace:configure.in:365: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:365: -1- AC_SUBST([CC]) -m4trace:configure.in:365: -1- AC_SUBST_TRACE([CC]) -m4trace:configure.in:365: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:365: -1- AC_SUBST([ac_ct_CC]) -m4trace:configure.in:365: -1- AC_SUBST_TRACE([ac_ct_CC]) -m4trace:configure.in:365: -1- m4_pattern_allow([^ac_ct_CC$]) m4trace:configure.in:365: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) -m4trace:configure.in:365: -1- AC_SUBST_TRACE([EXEEXT]) -m4trace:configure.in:365: -1- m4_pattern_allow([^EXEEXT$]) m4trace:configure.in:365: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) -m4trace:configure.in:365: -1- AC_SUBST_TRACE([OBJEXT]) -m4trace:configure.in:365: -1- m4_pattern_allow([^OBJEXT$]) m4trace:configure.in:368: -1- AC_CHECK_LIB([cposix], [strerror], [LIBS="$LIBS -lcposix"]) m4trace:configure.in:369: -1- AC_HEADER_STDC m4trace:configure.in:369: -1- AC_PROG_CPP m4trace:configure.in:369: -1- AC_SUBST([CPP]) -m4trace:configure.in:369: -1- AC_SUBST_TRACE([CPP]) -m4trace:configure.in:369: -1- m4_pattern_allow([^CPP$]) m4trace:configure.in:369: -1- AC_SUBST([CPPFLAGS]) -m4trace:configure.in:369: -1- AC_SUBST_TRACE([CPPFLAGS]) -m4trace:configure.in:369: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.in:369: -1- AC_SUBST([CPP]) -m4trace:configure.in:369: -1- AC_SUBST_TRACE([CPP]) -m4trace:configure.in:369: -1- m4_pattern_allow([^CPP$]) -m4trace:configure.in:369: -1- AC_SUBST([GREP]) -m4trace:configure.in:369: -1- AC_SUBST_TRACE([GREP]) -m4trace:configure.in:369: -1- m4_pattern_allow([^GREP$]) -m4trace:configure.in:369: -1- AC_SUBST([GREP]) -m4trace:configure.in:369: -1- AC_SUBST_TRACE([GREP]) -m4trace:configure.in:369: -1- m4_pattern_allow([^GREP$]) m4trace:configure.in:369: -1- AC_SUBST([EGREP]) -m4trace:configure.in:369: -1- AC_SUBST_TRACE([EGREP]) -m4trace:configure.in:369: -1- m4_pattern_allow([^EGREP$]) -m4trace:configure.in:369: -1- AC_SUBST([EGREP]) -m4trace:configure.in:369: -1- AC_SUBST_TRACE([EGREP]) -m4trace:configure.in:369: -1- m4_pattern_allow([^EGREP$]) m4trace:configure.in:369: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) -m4trace:configure.in:369: -1- m4_pattern_allow([^STDC_HEADERS$]) m4trace:configure.in:369: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS]) m4trace:configure.in:369: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ @@ -476,2037 +273,1549 @@ m4trace:configure.in:369: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you m4trace:configure.in:369: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H]) m4trace:configure.in:369: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_SOURCE]) -m4trace:configure.in:369: -1- m4_pattern_allow([^_POSIX_SOURCE$]) m4trace:configure.in:369: -1- AH_OUTPUT([_POSIX_SOURCE], [/* Define to 1 if you need to in order for `stat\' and other things to work. */ #undef _POSIX_SOURCE]) m4trace:configure.in:369: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_1_SOURCE]) -m4trace:configure.in:369: -1- m4_pattern_allow([^_POSIX_1_SOURCE$]) m4trace:configure.in:369: -1- AH_OUTPUT([_POSIX_1_SOURCE], [/* Define to 2 if the system does not provide POSIX.1 features except with this defined. */ #undef _POSIX_1_SOURCE]) m4trace:configure.in:369: -1- AC_DEFINE_TRACE_LITERAL([_MINIX]) -m4trace:configure.in:369: -1- m4_pattern_allow([^_MINIX$]) m4trace:configure.in:369: -1- AH_OUTPUT([_MINIX], [/* Define to 1 if on MINIX. */ #undef _MINIX]) m4trace:configure.in:371: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS]) -m4trace:configure.in:371: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$]) m4trace:configure.in:371: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */ #undef _FILE_OFFSET_BITS]) m4trace:configure.in:371: -1- AC_DEFINE_TRACE_LITERAL([_LARGE_FILES]) -m4trace:configure.in:371: -1- m4_pattern_allow([^_LARGE_FILES$]) m4trace:configure.in:371: -1- AH_OUTPUT([_LARGE_FILES], [/* Define for large files, on AIX-style hosts. */ #undef _LARGE_FILES]) -m4trace:configure.in:408: -1- AC_SUBST([CROSS_COMPILE]) -m4trace:configure.in:408: -1- AC_SUBST_TRACE([CROSS_COMPILE]) -m4trace:configure.in:408: -1- m4_pattern_allow([^CROSS_COMPILE$]) -m4trace:configure.in:410: -1- AC_SUBST([SIGNAMES_H]) -m4trace:configure.in:410: -1- AC_SUBST_TRACE([SIGNAMES_H]) -m4trace:configure.in:410: -1- m4_pattern_allow([^SIGNAMES_H$]) -m4trace:configure.in:411: -1- AC_SUBST([SIGNAMES_O]) -m4trace:configure.in:411: -1- AC_SUBST_TRACE([SIGNAMES_O]) -m4trace:configure.in:411: -1- m4_pattern_allow([^SIGNAMES_O$]) -m4trace:configure.in:420: -1- AC_SUBST([CC_FOR_BUILD]) -m4trace:configure.in:420: -1- AC_SUBST_TRACE([CC_FOR_BUILD]) -m4trace:configure.in:420: -1- m4_pattern_allow([^CC_FOR_BUILD$]) -m4trace:configure.in:443: -1- _m4_warn([obsolete], [The macro `ac_cv_prog_gcc' is obsolete. -You should run autoupdate.], [autoconf/c.m4:504: ac_cv_prog_gcc is expanded from... -configure.in:443: the top level]) -m4trace:configure.in:462: -1- AC_SUBST([CFLAGS]) -m4trace:configure.in:462: -1- AC_SUBST_TRACE([CFLAGS]) -m4trace:configure.in:462: -1- m4_pattern_allow([^CFLAGS$]) -m4trace:configure.in:463: -1- AC_SUBST([CPPFLAGS]) -m4trace:configure.in:463: -1- AC_SUBST_TRACE([CPPFLAGS]) -m4trace:configure.in:463: -1- m4_pattern_allow([^CPPFLAGS$]) -m4trace:configure.in:464: -1- AC_SUBST([LDFLAGS]) -m4trace:configure.in:464: -1- AC_SUBST_TRACE([LDFLAGS]) -m4trace:configure.in:464: -1- m4_pattern_allow([^LDFLAGS$]) -m4trace:configure.in:465: -1- AC_SUBST([STATIC_LD]) -m4trace:configure.in:465: -1- AC_SUBST_TRACE([STATIC_LD]) -m4trace:configure.in:465: -1- m4_pattern_allow([^STATIC_LD$]) -m4trace:configure.in:467: -1- AC_SUBST([CFLAGS_FOR_BUILD]) -m4trace:configure.in:467: -1- AC_SUBST_TRACE([CFLAGS_FOR_BUILD]) -m4trace:configure.in:467: -1- m4_pattern_allow([^CFLAGS_FOR_BUILD$]) -m4trace:configure.in:468: -1- AC_SUBST([CPPFLAGS_FOR_BUILD]) -m4trace:configure.in:468: -1- AC_SUBST_TRACE([CPPFLAGS_FOR_BUILD]) -m4trace:configure.in:468: -1- m4_pattern_allow([^CPPFLAGS_FOR_BUILD$]) -m4trace:configure.in:469: -1- AC_SUBST([LDFLAGS_FOR_BUILD]) -m4trace:configure.in:469: -1- AC_SUBST_TRACE([LDFLAGS_FOR_BUILD]) -m4trace:configure.in:469: -1- m4_pattern_allow([^LDFLAGS_FOR_BUILD$]) -m4trace:configure.in:471: -1- AC_PROG_GCC_TRADITIONAL -m4trace:configure.in:483: -1- AC_CHECK_LIB([termcap], [tgetent], [bash_cv_termcap_lib=libtermcap], [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo, +m4trace:configure.in:407: -1- AC_SUBST([CROSS_COMPILE]) +m4trace:configure.in:409: -1- AC_SUBST([SIGNAMES_H]) +m4trace:configure.in:410: -1- AC_SUBST([SIGNAMES_O]) +m4trace:configure.in:419: -1- AC_SUBST([CC_FOR_BUILD]) +m4trace:configure.in:442: -1- _m4_warn([obsolete], [The macro `ac_cv_prog_gcc' is obsolete. +You should run autoupdate.], [autoconf/c.m4:440: ac_cv_prog_gcc is expanded from... +configure.in:442: the top level]) +m4trace:configure.in:461: -1- AC_SUBST([CFLAGS]) +m4trace:configure.in:462: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.in:463: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.in:464: -1- AC_SUBST([STATIC_LD]) +m4trace:configure.in:466: -1- AC_SUBST([CFLAGS_FOR_BUILD]) +m4trace:configure.in:467: -1- AC_SUBST([CPPFLAGS_FOR_BUILD]) +m4trace:configure.in:468: -1- AC_SUBST([LDFLAGS_FOR_BUILD]) +m4trace:configure.in:470: -1- AC_PROG_GCC_TRADITIONAL +m4trace:configure.in:482: -1- AC_CHECK_LIB([termcap], [tgetent], [bash_cv_termcap_lib=libtermcap], [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo, [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, bash_cv_termcap_lib=gnutermcap)])])]) -m4trace:configure.in:483: -1- AC_CHECK_LIB([tinfo], [tgetent], [bash_cv_termcap_lib=libtinfo], [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, +m4trace:configure.in:482: -1- AC_CHECK_LIB([tinfo], [tgetent], [bash_cv_termcap_lib=libtinfo], [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, bash_cv_termcap_lib=gnutermcap)])]) -m4trace:configure.in:483: -1- AC_CHECK_LIB([curses], [tgetent], [bash_cv_termcap_lib=libcurses], [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, +m4trace:configure.in:482: -1- AC_CHECK_LIB([curses], [tgetent], [bash_cv_termcap_lib=libcurses], [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, bash_cv_termcap_lib=gnutermcap)]) -m4trace:configure.in:483: -1- AC_CHECK_LIB([ncurses], [tgetent], [bash_cv_termcap_lib=libncurses], [bash_cv_termcap_lib=gnutermcap]) -m4trace:configure.in:483: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2490: AC_TRY_RUN is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -aclocal.m4:1862: RL_LIB_READLINE_VERSION is expanded from... -configure.in:483: the top level]) -m4trace:configure.in:483: -1- AC_DEFINE_TRACE_LITERAL([RL_READLINE_VERSION]) -m4trace:configure.in:483: -1- m4_pattern_allow([^RL_READLINE_VERSION$]) -m4trace:configure.in:483: -1- AH_OUTPUT([RL_READLINE_VERSION], [/* encoded version of the installed readline library */ +m4trace:configure.in:482: -1- AC_CHECK_LIB([ncurses], [tgetent], [bash_cv_termcap_lib=libncurses], [bash_cv_termcap_lib=gnutermcap]) +m4trace:configure.in:482: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:1825: RL_LIB_READLINE_VERSION is expanded from... +configure.in:482: the top level]) +m4trace:configure.in:482: -1- AC_DEFINE_TRACE_LITERAL([RL_READLINE_VERSION]) +m4trace:configure.in:482: -1- AH_OUTPUT([RL_READLINE_VERSION], [/* encoded version of the installed readline library */ #undef RL_READLINE_VERSION]) -m4trace:configure.in:483: -1- AC_DEFINE_TRACE_LITERAL([RL_VERSION_MAJOR]) -m4trace:configure.in:483: -1- m4_pattern_allow([^RL_VERSION_MAJOR$]) -m4trace:configure.in:483: -1- AH_OUTPUT([RL_VERSION_MAJOR], [/* major version of installed readline library */ +m4trace:configure.in:482: -1- AC_DEFINE_TRACE_LITERAL([RL_VERSION_MAJOR]) +m4trace:configure.in:482: -1- AH_OUTPUT([RL_VERSION_MAJOR], [/* major version of installed readline library */ #undef RL_VERSION_MAJOR]) -m4trace:configure.in:483: -1- AC_DEFINE_TRACE_LITERAL([RL_VERSION_MINOR]) -m4trace:configure.in:483: -1- m4_pattern_allow([^RL_VERSION_MINOR$]) -m4trace:configure.in:483: -1- AH_OUTPUT([RL_VERSION_MINOR], [/* minor version of installed readline library */ +m4trace:configure.in:482: -1- AC_DEFINE_TRACE_LITERAL([RL_VERSION_MINOR]) +m4trace:configure.in:482: -1- AH_OUTPUT([RL_VERSION_MINOR], [/* minor version of installed readline library */ #undef RL_VERSION_MINOR]) -m4trace:configure.in:483: -1- AC_SUBST([RL_VERSION]) -m4trace:configure.in:483: -1- AC_SUBST_TRACE([RL_VERSION]) -m4trace:configure.in:483: -1- m4_pattern_allow([^RL_VERSION$]) -m4trace:configure.in:483: -1- AC_SUBST([RL_MAJOR]) -m4trace:configure.in:483: -1- AC_SUBST_TRACE([RL_MAJOR]) -m4trace:configure.in:483: -1- m4_pattern_allow([^RL_MAJOR$]) -m4trace:configure.in:483: -1- AC_SUBST([RL_MINOR]) -m4trace:configure.in:483: -1- AC_SUBST_TRACE([RL_MINOR]) -m4trace:configure.in:483: -1- m4_pattern_allow([^RL_MINOR$]) -m4trace:configure.in:496: -1- AC_DEFINE_TRACE_LITERAL([READLINE]) -m4trace:configure.in:496: -1- m4_pattern_allow([^READLINE$]) -m4trace:configure.in:531: -1- AC_DEFINE_TRACE_LITERAL([HISTORY]) -m4trace:configure.in:531: -1- m4_pattern_allow([^HISTORY$]) -m4trace:configure.in:534: -1- AC_DEFINE_TRACE_LITERAL([BANG_HISTORY]) -m4trace:configure.in:534: -1- m4_pattern_allow([^BANG_HISTORY$]) -m4trace:configure.in:564: -1- AC_SUBST([READLINE_LIB]) -m4trace:configure.in:564: -1- AC_SUBST_TRACE([READLINE_LIB]) -m4trace:configure.in:564: -1- m4_pattern_allow([^READLINE_LIB$]) -m4trace:configure.in:565: -1- AC_SUBST([READLINE_DEP]) -m4trace:configure.in:565: -1- AC_SUBST_TRACE([READLINE_DEP]) -m4trace:configure.in:565: -1- m4_pattern_allow([^READLINE_DEP$]) -m4trace:configure.in:566: -1- AC_SUBST([RL_LIBDIR]) -m4trace:configure.in:566: -1- AC_SUBST_TRACE([RL_LIBDIR]) -m4trace:configure.in:566: -1- m4_pattern_allow([^RL_LIBDIR$]) -m4trace:configure.in:567: -1- AC_SUBST([RL_INCLUDEDIR]) -m4trace:configure.in:567: -1- AC_SUBST_TRACE([RL_INCLUDEDIR]) -m4trace:configure.in:567: -1- m4_pattern_allow([^RL_INCLUDEDIR$]) -m4trace:configure.in:568: -1- AC_SUBST([RL_INCLUDE]) -m4trace:configure.in:568: -1- AC_SUBST_TRACE([RL_INCLUDE]) -m4trace:configure.in:568: -1- m4_pattern_allow([^RL_INCLUDE$]) -m4trace:configure.in:569: -1- AC_SUBST([HISTORY_LIB]) -m4trace:configure.in:569: -1- AC_SUBST_TRACE([HISTORY_LIB]) -m4trace:configure.in:569: -1- m4_pattern_allow([^HISTORY_LIB$]) -m4trace:configure.in:570: -1- AC_SUBST([HISTORY_DEP]) -m4trace:configure.in:570: -1- AC_SUBST_TRACE([HISTORY_DEP]) -m4trace:configure.in:570: -1- m4_pattern_allow([^HISTORY_DEP$]) -m4trace:configure.in:571: -1- AC_SUBST([HIST_LIBDIR]) -m4trace:configure.in:571: -1- AC_SUBST_TRACE([HIST_LIBDIR]) -m4trace:configure.in:571: -1- m4_pattern_allow([^HIST_LIBDIR$]) -m4trace:configure.in:572: -1- AC_SUBST([TILDE_LIB]) -m4trace:configure.in:572: -1- AC_SUBST_TRACE([TILDE_LIB]) -m4trace:configure.in:572: -1- m4_pattern_allow([^TILDE_LIB$]) -m4trace:configure.in:577: -1- AC_PROG_INSTALL -m4trace:configure.in:577: -1- AC_REQUIRE_AUX_FILE([install-sh]) -m4trace:configure.in:577: -1- AC_SUBST([INSTALL_PROGRAM]) -m4trace:configure.in:577: -1- AC_SUBST_TRACE([INSTALL_PROGRAM]) -m4trace:configure.in:577: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) -m4trace:configure.in:577: -1- AC_SUBST([INSTALL_SCRIPT]) -m4trace:configure.in:577: -1- AC_SUBST_TRACE([INSTALL_SCRIPT]) -m4trace:configure.in:577: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) -m4trace:configure.in:577: -1- AC_SUBST([INSTALL_DATA]) -m4trace:configure.in:577: -1- AC_SUBST_TRACE([INSTALL_DATA]) -m4trace:configure.in:577: -1- m4_pattern_allow([^INSTALL_DATA$]) -m4trace:configure.in:578: -1- AC_SUBST([AR]) -m4trace:configure.in:578: -1- AC_SUBST_TRACE([AR]) -m4trace:configure.in:578: -1- m4_pattern_allow([^AR$]) -m4trace:configure.in:582: -1- AC_PROG_RANLIB -m4trace:configure.in:582: -1- AC_SUBST([RANLIB]) -m4trace:configure.in:582: -1- AC_SUBST_TRACE([RANLIB]) -m4trace:configure.in:582: -1- m4_pattern_allow([^RANLIB$]) -m4trace:configure.in:583: -1- AC_PROG_YACC -m4trace:configure.in:583: -1- AC_SUBST([YACC]) -m4trace:configure.in:583: -1- AC_SUBST_TRACE([YACC]) -m4trace:configure.in:583: -1- m4_pattern_allow([^YACC$]) -m4trace:configure.in:583: -1- AC_SUBST([YACC]) -m4trace:configure.in:583: -1- AC_SUBST_TRACE([YACC]) -m4trace:configure.in:583: -1- m4_pattern_allow([^YACC$]) -m4trace:configure.in:583: -1- AC_SUBST([YFLAGS]) -m4trace:configure.in:583: -1- AC_SUBST_TRACE([YFLAGS]) -m4trace:configure.in:583: -1- m4_pattern_allow([^YFLAGS$]) -m4trace:configure.in:584: -1- AC_PROG_MAKE_SET -m4trace:configure.in:584: -1- AC_SUBST([SET_MAKE]) -m4trace:configure.in:584: -1- AC_SUBST_TRACE([SET_MAKE]) -m4trace:configure.in:584: -1- m4_pattern_allow([^SET_MAKE$]) -m4trace:configure.in:590: -1- AC_SUBST([MAKE_SHELL]) -m4trace:configure.in:590: -1- AC_SUBST_TRACE([MAKE_SHELL]) -m4trace:configure.in:590: -1- m4_pattern_allow([^MAKE_SHELL$]) -m4trace:configure.in:612: -1- AC_SUBST([SIZE]) -m4trace:configure.in:612: -1- AC_SUBST_TRACE([SIZE]) -m4trace:configure.in:612: -1- m4_pattern_allow([^SIZE$]) -m4trace:configure.in:615: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE]) -m4trace:configure.in:615: -1- m4_pattern_allow([^_GNU_SOURCE$]) -m4trace:configure.in:618: -1- AC_C_CONST -m4trace:configure.in:618: -1- AC_DEFINE_TRACE_LITERAL([const]) -m4trace:configure.in:618: -1- m4_pattern_allow([^const$]) -m4trace:configure.in:618: -1- AH_OUTPUT([const], [/* Define to empty if `const\' does not conform to ANSI C. */ +m4trace:configure.in:482: -1- AC_SUBST([RL_VERSION]) +m4trace:configure.in:482: -1- AC_SUBST([RL_MAJOR]) +m4trace:configure.in:482: -1- AC_SUBST([RL_MINOR]) +m4trace:configure.in:495: -1- AC_DEFINE_TRACE_LITERAL([READLINE]) +m4trace:configure.in:530: -1- AC_DEFINE_TRACE_LITERAL([HISTORY]) +m4trace:configure.in:533: -1- AC_DEFINE_TRACE_LITERAL([BANG_HISTORY]) +m4trace:configure.in:563: -1- AC_SUBST([READLINE_LIB]) +m4trace:configure.in:564: -1- AC_SUBST([READLINE_DEP]) +m4trace:configure.in:565: -1- AC_SUBST([RL_LIBDIR]) +m4trace:configure.in:566: -1- AC_SUBST([RL_INCLUDEDIR]) +m4trace:configure.in:567: -1- AC_SUBST([RL_INCLUDE]) +m4trace:configure.in:568: -1- AC_SUBST([HISTORY_LIB]) +m4trace:configure.in:569: -1- AC_SUBST([HISTORY_DEP]) +m4trace:configure.in:570: -1- AC_SUBST([HIST_LIBDIR]) +m4trace:configure.in:571: -1- AC_SUBST([TILDE_LIB]) +m4trace:configure.in:576: -1- AC_PROG_INSTALL +m4trace:configure.in:576: -1- AC_SUBST([INSTALL_PROGRAM]) +m4trace:configure.in:576: -1- AC_SUBST([INSTALL_SCRIPT]) +m4trace:configure.in:576: -1- AC_SUBST([INSTALL_DATA]) +m4trace:configure.in:577: -1- AC_SUBST([AR]) +m4trace:configure.in:581: -1- AC_PROG_RANLIB +m4trace:configure.in:581: -1- AC_SUBST([RANLIB]) +m4trace:configure.in:581: -1- AC_SUBST([ac_ct_RANLIB]) +m4trace:configure.in:582: -1- AC_PROG_YACC +m4trace:configure.in:582: -1- AC_SUBST([YACC]) +m4trace:configure.in:583: -1- AC_PROG_MAKE_SET +m4trace:configure.in:583: -1- AC_SUBST([SET_MAKE]) +m4trace:configure.in:589: -1- AC_SUBST([MAKE_SHELL]) +m4trace:configure.in:611: -1- AC_SUBST([SIZE]) +m4trace:configure.in:614: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE]) +m4trace:configure.in:617: -1- AC_C_CONST +m4trace:configure.in:617: -1- AC_DEFINE_TRACE_LITERAL([const]) +m4trace:configure.in:617: -1- AH_OUTPUT([const], [/* Define to empty if `const\' does not conform to ANSI C. */ #undef const]) -m4trace:configure.in:619: -1- AC_C_INLINE -m4trace:configure.in:619: -1- AH_OUTPUT([inline], [/* Define to `__inline__\' or `__inline\' if that\'s what the C compiler +m4trace:configure.in:618: -1- AC_C_INLINE +m4trace:configure.in:618: -1- AH_OUTPUT([inline], [/* Define to `__inline__\' or `__inline\' if that\'s what the C compiler calls it, or to nothing if \'inline\' is not supported under any name. */ #ifndef __cplusplus #undef inline #endif]) -m4trace:configure.in:620: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN]) -m4trace:configure.in:620: -1- m4_pattern_allow([^WORDS_BIGENDIAN$]) -m4trace:configure.in:620: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define to 1 if your processor stores words with the most significant byte +m4trace:configure.in:619: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN]) +m4trace:configure.in:619: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel and VAX). */ #undef WORDS_BIGENDIAN]) -m4trace:configure.in:621: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRINGIZE]) -m4trace:configure.in:621: -1- m4_pattern_allow([^HAVE_STRINGIZE$]) -m4trace:configure.in:621: -1- AH_OUTPUT([HAVE_STRINGIZE], [/* Define to 1 if cpp supports the ANSI @%:@ stringizing operator. */ +m4trace:configure.in:620: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRINGIZE]) +m4trace:configure.in:620: -1- AH_OUTPUT([HAVE_STRINGIZE], [/* Define to 1 if cpp supports the ANSI @%:@ stringizing operator. */ #undef HAVE_STRINGIZE]) -m4trace:configure.in:622: -1- _m4_warn([obsolete], [The macro `AC_C_LONG_DOUBLE' is obsolete. -You should run autoupdate.], [autoconf/types.m4:465: AC_C_LONG_DOUBLE is expanded from... -configure.in:622: the top level]) -m4trace:configure.in:622: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_DOUBLE_WIDER]) -m4trace:configure.in:622: -1- m4_pattern_allow([^HAVE_LONG_DOUBLE_WIDER$]) -m4trace:configure.in:622: -1- AH_OUTPUT([HAVE_LONG_DOUBLE_WIDER], [/* Define to 1 if the type `long double\' works and has more range or precision - than `double\'. */ -#undef HAVE_LONG_DOUBLE_WIDER]) -m4trace:configure.in:622: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_DOUBLE]) -m4trace:configure.in:622: -1- m4_pattern_allow([^HAVE_LONG_DOUBLE$]) -m4trace:configure.in:622: -1- AH_OUTPUT([HAVE_LONG_DOUBLE], [/* Define to 1 if the type `long double\' works and has more range or precision - than `double\'. */ +m4trace:configure.in:621: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_DOUBLE]) +m4trace:configure.in:621: -1- AH_OUTPUT([HAVE_LONG_DOUBLE], [/* Define to 1 if long double works and has more range or precision than + double. */ #undef HAVE_LONG_DOUBLE]) -m4trace:configure.in:623: -1- AC_DEFINE_TRACE_LITERAL([PROTOTYPES]) -m4trace:configure.in:623: -1- m4_pattern_allow([^PROTOTYPES$]) -m4trace:configure.in:623: -1- AH_OUTPUT([PROTOTYPES], [/* Define to 1 if the C compiler supports function prototypes. */ +m4trace:configure.in:622: -1- AC_DEFINE_TRACE_LITERAL([PROTOTYPES]) +m4trace:configure.in:622: -1- AH_OUTPUT([PROTOTYPES], [/* Define to 1 if the C compiler supports function prototypes. */ #undef PROTOTYPES]) -m4trace:configure.in:623: -1- AC_DEFINE_TRACE_LITERAL([__PROTOTYPES]) -m4trace:configure.in:623: -1- m4_pattern_allow([^__PROTOTYPES$]) -m4trace:configure.in:623: -1- AH_OUTPUT([__PROTOTYPES], [/* Define like PROTOTYPES; this can be used by system headers. */ +m4trace:configure.in:622: -1- AC_DEFINE_TRACE_LITERAL([__PROTOTYPES]) +m4trace:configure.in:622: -1- AH_OUTPUT([__PROTOTYPES], [/* Define like PROTOTYPES; this can be used by system headers. */ #undef __PROTOTYPES]) -m4trace:configure.in:624: -1- AH_OUTPUT([__CHAR_UNSIGNED__], [/* Define to 1 if type `char\' is unsigned and you are not using gcc. */ +m4trace:configure.in:623: -1- AH_OUTPUT([__CHAR_UNSIGNED__], [/* Define to 1 if type `char\' is unsigned and you are not using gcc. */ #ifndef __CHAR_UNSIGNED__ # undef __CHAR_UNSIGNED__ #endif]) -m4trace:configure.in:624: -1- AC_DEFINE_TRACE_LITERAL([__CHAR_UNSIGNED__]) -m4trace:configure.in:624: -1- m4_pattern_allow([^__CHAR_UNSIGNED__$]) -m4trace:configure.in:627: -1- AM_GNU_GETTEXT([no-libtool], [need-ngettext], [lib/intl]) -m4trace:configure.in:627: -1- AC_SUBST([MKINSTALLDIRS]) -m4trace:configure.in:627: -1- AC_SUBST_TRACE([MKINSTALLDIRS]) -m4trace:configure.in:627: -1- m4_pattern_allow([^MKINSTALLDIRS$]) -m4trace:configure.in:627: -1- AC_SUBST([USE_NLS]) -m4trace:configure.in:627: -1- AC_SUBST_TRACE([USE_NLS]) -m4trace:configure.in:627: -1- m4_pattern_allow([^USE_NLS$]) -m4trace:configure.in:627: -1- AC_SUBST([MSGFMT]) -m4trace:configure.in:627: -1- AC_SUBST_TRACE([MSGFMT]) -m4trace:configure.in:627: -1- m4_pattern_allow([^MSGFMT$]) -m4trace:configure.in:627: -1- AC_SUBST([GMSGFMT]) -m4trace:configure.in:627: -1- AC_SUBST_TRACE([GMSGFMT]) -m4trace:configure.in:627: -1- m4_pattern_allow([^GMSGFMT$]) -m4trace:configure.in:627: -1- AC_SUBST([XGETTEXT]) -m4trace:configure.in:627: -1- AC_SUBST_TRACE([XGETTEXT]) -m4trace:configure.in:627: -1- m4_pattern_allow([^XGETTEXT$]) -m4trace:configure.in:627: -1- AC_SUBST([MSGMERGE]) -m4trace:configure.in:627: -1- AC_SUBST_TRACE([MSGMERGE]) -m4trace:configure.in:627: -1- m4_pattern_allow([^MSGMERGE$]) -m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_OUTPUT_COMMANDS' is obsolete. -You should run autoupdate.], [autoconf/status.m4:853: AC_OUTPUT_COMMANDS is expanded from... -aclocal.m4:3825: AM_PO_SUBDIRS is expanded from... -aclocal.m4:2337: AM_GNU_GETTEXT is expanded from... -configure.in:627: the top level]) -m4trace:configure.in:627: -1- AC_TYPE_OFF_T -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([off_t]) -m4trace:configure.in:627: -1- m4_pattern_allow([^off_t$]) -m4trace:configure.in:627: -1- AH_OUTPUT([off_t], [/* Define to `long int\' if does not define. */ +m4trace:configure.in:623: -1- AC_DEFINE_TRACE_LITERAL([__CHAR_UNSIGNED__]) +m4trace:configure.in:626: -1- AM_GNU_GETTEXT([no-libtool], [need-ngettext], [lib/intl]) +m4trace:configure.in:626: -1- AC_SUBST([MKINSTALLDIRS]) +m4trace:configure.in:626: -1- AC_SUBST([USE_NLS]) +m4trace:configure.in:626: -1- AC_SUBST([MSGFMT]) +m4trace:configure.in:626: -1- AC_SUBST([GMSGFMT], [$ac_cv_path_GMSGFMT]) +m4trace:configure.in:626: -1- AC_SUBST([XGETTEXT]) +m4trace:configure.in:626: -1- AC_SUBST([MSGMERGE]) +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_OUTPUT_COMMANDS' is obsolete. +You should run autoupdate.], [autoconf/status.m4:318: AC_OUTPUT_COMMANDS is expanded from... +aclocal.m4:3788: AM_PO_SUBDIRS is expanded from... +configure.in:626: AM_PO_SUBDIRS is required by... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -3- _m4_warn([obsolete], [The macro `_AC_OUTPUT_COMMANDS_CNT' is obsolete. +You should run autoupdate.], [autoconf/status.m4:321: _AC_OUTPUT_COMMANDS_CNT is expanded from... +autoconf/status.m4:318: AC_OUTPUT_COMMANDS is expanded from... +aclocal.m4:3788: AM_PO_SUBDIRS is expanded from... +configure.in:626: AM_PO_SUBDIRS is required by... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- AC_TYPE_OFF_T +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([off_t]) +m4trace:configure.in:626: -1- AH_OUTPUT([off_t], [/* Define to `long\' if does not define. */ #undef off_t]) -m4trace:configure.in:627: -1- AC_TYPE_SIZE_T -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([size_t]) -m4trace:configure.in:627: -1- m4_pattern_allow([^size_t$]) -m4trace:configure.in:627: -1- AH_OUTPUT([size_t], [/* Define to `unsigned int\' if does not define. */ +m4trace:configure.in:626: -1- AC_TYPE_SIZE_T +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([size_t]) +m4trace:configure.in:626: -1- AH_OUTPUT([size_t], [/* Define to `unsigned\' if does not define. */ #undef size_t]) -m4trace:configure.in:627: -1- AC_FUNC_ALLOCA -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H]) -m4trace:configure.in:627: -1- m4_pattern_allow([^HAVE_ALLOCA_H$]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have and it should be used (not on Ultrix). +m4trace:configure.in:626: -1- AC_FUNC_ALLOCA +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have and it should be used (not on Ultrix). */ #undef HAVE_ALLOCA_H]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA]) -m4trace:configure.in:627: -1- m4_pattern_allow([^HAVE_ALLOCA$]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have `alloca\', as a function or macro. */ +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have `alloca\', as a function or macro. */ #undef HAVE_ALLOCA]) -m4trace:configure.in:627: -1- AC_LIBSOURCE([alloca.c]) -m4trace:configure.in:627: -1- AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext]) -m4trace:configure.in:627: -1- AC_SUBST_TRACE([ALLOCA]) -m4trace:configure.in:627: -1- m4_pattern_allow([^ALLOCA$]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA]) -m4trace:configure.in:627: -1- m4_pattern_allow([^C_ALLOCA$]) -m4trace:configure.in:627: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using `alloca.c\'. */ +m4trace:configure.in:626: -1- AC_LIBSOURCE([alloca.c]) +m4trace:configure.in:626: -1- AC_SUBST([ALLOCA], [alloca.$ac_objext]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA]) +m4trace:configure.in:626: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using `alloca.c\'. */ #undef C_ALLOCA]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([CRAY_STACKSEG_END]) -m4trace:configure.in:627: -1- m4_pattern_allow([^CRAY_STACKSEG_END$]) -m4trace:configure.in:627: -1- AH_OUTPUT([CRAY_STACKSEG_END], [/* Define to one of `_getb67\', `GETB67\', `getb67\' for Cray-2 and Cray-YMP +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([CRAY_STACKSEG_END]) +m4trace:configure.in:626: -1- AH_OUTPUT([CRAY_STACKSEG_END], [/* Define to one of `_getb67\', `GETB67\', `getb67\' for Cray-2 and Cray-YMP systems. This function is required for `alloca.c\' support on those systems. */ #undef CRAY_STACKSEG_END]) -m4trace:configure.in:627: -1- AH_OUTPUT([STACK_DIRECTION], [/* If using the C implementation of alloca, define if you know the +m4trace:configure.in:626: -1- AH_OUTPUT([STACK_DIRECTION], [/* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be - automatically deduced at runtime. + automatically deduced at run-time. STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ @%:@undef STACK_DIRECTION]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION]) -m4trace:configure.in:627: -1- m4_pattern_allow([^STACK_DIRECTION$]) -m4trace:configure.in:627: -1- AC_FUNC_MMAP -m4trace:configure.in:627: -1- AC_CHECK_HEADERS([stdlib.h unistd.h]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION]) +m4trace:configure.in:626: -1- AC_FUNC_MMAP +m4trace:configure.in:626: -1- AC_CHECK_HEADERS([stdlib.h unistd.h]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H]) -m4trace:configure.in:627: -1- AC_CHECK_FUNCS([getpagesize]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */ +m4trace:configure.in:626: -1- AC_CHECK_FUNCS([getpagesize]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */ #undef HAVE_GETPAGESIZE]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP]) -m4trace:configure.in:627: -1- m4_pattern_allow([^HAVE_MMAP$]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have a working `mmap\' system call. */ +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have a working `mmap\' system call. */ #undef HAVE_MMAP]) -m4trace:configure.in:627: -1- AC_SUBST([GLIBC21]) -m4trace:configure.in:627: -1- AC_SUBST_TRACE([GLIBC21]) -m4trace:configure.in:627: -1- m4_pattern_allow([^GLIBC21$]) -m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2490: AC_TRY_RUN is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1935: AC_CACHE_CHECK is expanded from... -aclocal.m4:2618: gt_INTDIV0 is expanded from... -aclocal.m4:2407: AM_INTL_SUBDIR is expanded from... -aclocal.m4:2337: AM_GNU_GETTEXT is expanded from... -configure.in:627: the top level]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([INTDIV0_RAISES_SIGFPE]) -m4trace:configure.in:627: -1- m4_pattern_allow([^INTDIV0_RAISES_SIGFPE$]) -m4trace:configure.in:627: -1- AH_OUTPUT([INTDIV0_RAISES_SIGFPE], [/* Define if integer division by zero raises signal SIGFPE. */ +m4trace:configure.in:626: -1- AC_SUBST([GLIBC21]) +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:2581: gt_INTDIV0 is expanded from... +configure.in:626: gt_INTDIV0 is required by... +aclocal.m4:2370: AM_INTL_SUBDIR is expanded from... +configure.in:626: AM_INTL_SUBDIR is required by... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([INTDIV0_RAISES_SIGFPE]) +m4trace:configure.in:626: -1- AH_OUTPUT([INTDIV0_RAISES_SIGFPE], [/* Define if integer division by zero raises signal SIGFPE. */ #undef INTDIV0_RAISES_SIGFPE]) -m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2384: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1935: AC_CACHE_CHECK is expanded from... -aclocal.m4:2673: jm_AC_HEADER_INTTYPES_H is expanded from... -aclocal.m4:3976: jm_AC_TYPE_UINTMAX_T is expanded from... -aclocal.m4:2407: AM_INTL_SUBDIR is expanded from... -aclocal.m4:2337: AM_GNU_GETTEXT is expanded from... -configure.in:627: the top level]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H_WITH_UINTMAX]) -m4trace:configure.in:627: -1- m4_pattern_allow([^HAVE_INTTYPES_H_WITH_UINTMAX$]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_INTTYPES_H_WITH_UINTMAX], [/* Define if exists, doesn\'t clash with , and +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:2636: jm_AC_HEADER_INTTYPES_H is expanded from... +configure.in:626: jm_AC_HEADER_INTTYPES_H is required by... +aclocal.m4:3939: jm_AC_TYPE_UINTMAX_T is expanded from... +configure.in:626: jm_AC_TYPE_UINTMAX_T is required by... +aclocal.m4:2370: AM_INTL_SUBDIR is expanded from... +configure.in:626: AM_INTL_SUBDIR is required by... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H_WITH_UINTMAX]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_INTTYPES_H_WITH_UINTMAX], [/* Define if exists, doesn\'t clash with , and declares uintmax_t. */ #undef HAVE_INTTYPES_H_WITH_UINTMAX]) -m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2384: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1935: AC_CACHE_CHECK is expanded from... -aclocal.m4:3944: jm_AC_HEADER_STDINT_H is expanded from... -aclocal.m4:3976: jm_AC_TYPE_UINTMAX_T is expanded from... -aclocal.m4:2407: AM_INTL_SUBDIR is expanded from... -aclocal.m4:2337: AM_GNU_GETTEXT is expanded from... -configure.in:627: the top level]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDINT_H_WITH_UINTMAX]) -m4trace:configure.in:627: -1- m4_pattern_allow([^HAVE_STDINT_H_WITH_UINTMAX$]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_STDINT_H_WITH_UINTMAX], [/* Define if exists, doesn\'t clash with , and declares +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:3907: jm_AC_HEADER_STDINT_H is expanded from... +configure.in:626: jm_AC_HEADER_STDINT_H is required by... +aclocal.m4:3939: jm_AC_TYPE_UINTMAX_T is expanded from... +configure.in:626: jm_AC_TYPE_UINTMAX_T is required by... +aclocal.m4:2370: AM_INTL_SUBDIR is expanded from... +configure.in:626: AM_INTL_SUBDIR is required by... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDINT_H_WITH_UINTMAX]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_STDINT_H_WITH_UINTMAX], [/* Define if exists, doesn\'t clash with , and declares uintmax_t. */ #undef HAVE_STDINT_H_WITH_UINTMAX]) -m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1935: AC_CACHE_CHECK is expanded from... -aclocal.m4:3999: jm_AC_TYPE_UNSIGNED_LONG_LONG is expanded from... -aclocal.m4:3976: jm_AC_TYPE_UINTMAX_T is expanded from... -aclocal.m4:2407: AM_INTL_SUBDIR is expanded from... -aclocal.m4:2337: AM_GNU_GETTEXT is expanded from... -configure.in:627: the top level]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG]) -m4trace:configure.in:627: -1- m4_pattern_allow([^HAVE_UNSIGNED_LONG_LONG$]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_UNSIGNED_LONG_LONG], [/* Define if you have the unsigned long long type. */ +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:3962: jm_AC_TYPE_UNSIGNED_LONG_LONG is expanded from... +configure.in:626: jm_AC_TYPE_UNSIGNED_LONG_LONG is required by... +aclocal.m4:3939: jm_AC_TYPE_UINTMAX_T is expanded from... +configure.in:626: jm_AC_TYPE_UINTMAX_T is required by... +aclocal.m4:2370: AM_INTL_SUBDIR is expanded from... +configure.in:626: AM_INTL_SUBDIR is required by... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_UNSIGNED_LONG_LONG], [/* Define if you have the unsigned long long type. */ #undef HAVE_UNSIGNED_LONG_LONG]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t]) -m4trace:configure.in:627: -1- m4_pattern_allow([^uintmax_t$]) -m4trace:configure.in:627: -1- AH_OUTPUT([uintmax_t], [/* Define to unsigned long or unsigned long long if and +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t]) +m4trace:configure.in:626: -1- AH_OUTPUT([uintmax_t], [/* Define to unsigned long or unsigned long long if and don\'t define. */ #undef uintmax_t]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UINTMAX_T]) -m4trace:configure.in:627: -1- m4_pattern_allow([^HAVE_UINTMAX_T$]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_UINTMAX_T], [/* Define if you have the \'uintmax_t\' type in or . */ +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UINTMAX_T]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_UINTMAX_T], [/* Define if you have the \'uintmax_t\' type in or . */ #undef HAVE_UINTMAX_T]) -m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2384: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1935: AC_CACHE_CHECK is expanded from... -aclocal.m4:2645: gt_HEADER_INTTYPES_H is expanded from... -aclocal.m4:2407: AM_INTL_SUBDIR is expanded from... -aclocal.m4:2337: AM_GNU_GETTEXT is expanded from... -configure.in:627: the top level]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H]) -m4trace:configure.in:627: -1- m4_pattern_allow([^HAVE_INTTYPES_H$]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define if exists and doesn\'t clash with . */ +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:2608: gt_HEADER_INTTYPES_H is expanded from... +configure.in:626: gt_HEADER_INTTYPES_H is required by... +aclocal.m4:2370: AM_INTL_SUBDIR is expanded from... +configure.in:626: AM_INTL_SUBDIR is required by... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define if exists and doesn\'t clash with . */ #undef HAVE_INTTYPES_H]) -m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2384: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1935: AC_CACHE_CHECK is expanded from... -aclocal.m4:2705: gt_INTTYPES_PRI is expanded from... -aclocal.m4:2407: AM_INTL_SUBDIR is expanded from... -aclocal.m4:2337: AM_GNU_GETTEXT is expanded from... -configure.in:627: the top level]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([PRI_MACROS_BROKEN]) -m4trace:configure.in:627: -1- m4_pattern_allow([^PRI_MACROS_BROKEN$]) -m4trace:configure.in:627: -1- AH_OUTPUT([PRI_MACROS_BROKEN], [/* Define if exists and defines unusable PRI* macros. */ +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:2668: gt_INTTYPES_PRI is expanded from... +configure.in:626: gt_INTTYPES_PRI is required by... +aclocal.m4:2370: AM_INTL_SUBDIR is expanded from... +configure.in:626: AM_INTL_SUBDIR is required by... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([PRI_MACROS_BROKEN]) +m4trace:configure.in:626: -1- AH_OUTPUT([PRI_MACROS_BROKEN], [/* Define if exists and defines unusable PRI* macros. */ #undef PRI_MACROS_BROKEN]) -m4trace:configure.in:627: -1- AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ +m4trace:configure.in:626: -1- AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ stdlib.h string.h unistd.h sys/param.h]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_ARGZ_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_ARGZ_H], [/* Define to 1 if you have the header file. */ #undef HAVE_ARGZ_H]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_NL_TYPES_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_NL_TYPES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_NL_TYPES_H]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the header file. */ #undef HAVE_MALLOC_H]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDDEF_H]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STRING_H]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H]) -m4trace:configure.in:627: -1- AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ -geteuid getgid getuid mempcpy munmap putenv setenv setlocale localeconv stpcpy \ +m4trace:configure.in:626: -1- AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ +geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next \ __fsetlocking]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_FEOF_UNLOCKED], [/* Define to 1 if you have the `feof_unlocked\' function. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_FEOF_UNLOCKED], [/* Define to 1 if you have the `feof_unlocked\' function. */ #undef HAVE_FEOF_UNLOCKED]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_FGETS_UNLOCKED], [/* Define to 1 if you have the `fgets_unlocked\' function. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_FGETS_UNLOCKED], [/* Define to 1 if you have the `fgets_unlocked\' function. */ #undef HAVE_FGETS_UNLOCKED]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_GETC_UNLOCKED], [/* Define to 1 if you have the `getc_unlocked\' function. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_GETC_UNLOCKED], [/* Define to 1 if you have the `getc_unlocked\' function. */ #undef HAVE_GETC_UNLOCKED]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the `getcwd\' function. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the `getcwd\' function. */ #undef HAVE_GETCWD]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_GETEGID], [/* Define to 1 if you have the `getegid\' function. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_GETEGID], [/* Define to 1 if you have the `getegid\' function. */ #undef HAVE_GETEGID]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_GETEUID], [/* Define to 1 if you have the `geteuid\' function. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_GETEUID], [/* Define to 1 if you have the `geteuid\' function. */ #undef HAVE_GETEUID]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_GETGID], [/* Define to 1 if you have the `getgid\' function. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_GETGID], [/* Define to 1 if you have the `getgid\' function. */ #undef HAVE_GETGID]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_GETUID], [/* Define to 1 if you have the `getuid\' function. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_GETUID], [/* Define to 1 if you have the `getuid\' function. */ #undef HAVE_GETUID]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the `mempcpy\' function. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the `mempcpy\' function. */ #undef HAVE_MEMPCPY]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_MUNMAP], [/* Define to 1 if you have the `munmap\' function. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_MUNMAP], [/* Define to 1 if you have the `munmap\' function. */ #undef HAVE_MUNMAP]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_PUTENV], [/* Define to 1 if you have the `putenv\' function. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_PUTENV], [/* Define to 1 if you have the `putenv\' function. */ #undef HAVE_PUTENV]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_SETENV], [/* Define to 1 if you have the `setenv\' function. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_SETENV], [/* Define to 1 if you have the `setenv\' function. */ #undef HAVE_SETENV]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the `setlocale\' function. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the `setlocale\' function. */ #undef HAVE_SETLOCALE]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_LOCALECONV], [/* Define to 1 if you have the `localeconv\' function. */ -#undef HAVE_LOCALECONV]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the `stpcpy\' function. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the `stpcpy\' function. */ #undef HAVE_STPCPY]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the `strcasecmp\' function. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the `strcasecmp\' function. */ #undef HAVE_STRCASECMP]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the `strdup\' function. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the `strdup\' function. */ #undef HAVE_STRDUP]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the `strtoul\' function. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the `strtoul\' function. */ #undef HAVE_STRTOUL]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_TSEARCH], [/* Define to 1 if you have the `tsearch\' function. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_TSEARCH], [/* Define to 1 if you have the `tsearch\' function. */ #undef HAVE_TSEARCH]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE___ARGZ_COUNT], [/* Define to 1 if you have the `__argz_count\' function. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE___ARGZ_COUNT], [/* Define to 1 if you have the `__argz_count\' function. */ #undef HAVE___ARGZ_COUNT]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE___ARGZ_STRINGIFY], [/* Define to 1 if you have the `__argz_stringify\' function. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE___ARGZ_STRINGIFY], [/* Define to 1 if you have the `__argz_stringify\' function. */ #undef HAVE___ARGZ_STRINGIFY]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE___ARGZ_NEXT], [/* Define to 1 if you have the `__argz_next\' function. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE___ARGZ_NEXT], [/* Define to 1 if you have the `__argz_next\' function. */ #undef HAVE___ARGZ_NEXT]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE___FSETLOCKING], [/* Define to 1 if you have the `__fsetlocking\' function. */ +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE___FSETLOCKING], [/* Define to 1 if you have the `__fsetlocking\' function. */ #undef HAVE___FSETLOCKING]) -m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1935: AC_CACHE_CHECK is expanded from... -aclocal.m4:2518: AM_ICONV_LINK is expanded from... -aclocal.m4:2546: AM_ICONV is expanded from... -aclocal.m4:2407: AM_INTL_SUBDIR is expanded from... -aclocal.m4:2337: AM_GNU_GETTEXT is expanded from... -configure.in:627: the top level]) -m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1935: AC_CACHE_CHECK is expanded from... -aclocal.m4:2518: AM_ICONV_LINK is expanded from... -aclocal.m4:2546: AM_ICONV is expanded from... -aclocal.m4:2407: AM_INTL_SUBDIR is expanded from... -aclocal.m4:2337: AM_GNU_GETTEXT is expanded from... -configure.in:627: the top level]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ICONV]) -m4trace:configure.in:627: -1- m4_pattern_allow([^HAVE_ICONV$]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_ICONV], [/* Define if you have the iconv() function. */ +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:2481: AM_ICONV_LINK is expanded from... +aclocal.m4:2509: AM_ICONV is expanded from... +aclocal.m4:2370: AM_INTL_SUBDIR is expanded from... +configure.in:626: AM_INTL_SUBDIR is required by... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:2481: AM_ICONV_LINK is expanded from... +aclocal.m4:2509: AM_ICONV is expanded from... +aclocal.m4:2370: AM_INTL_SUBDIR is expanded from... +configure.in:626: AM_INTL_SUBDIR is required by... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ICONV]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_ICONV], [/* Define if you have the iconv() function. */ #undef HAVE_ICONV]) -m4trace:configure.in:627: -1- AC_SUBST([LIBICONV]) -m4trace:configure.in:627: -1- AC_SUBST_TRACE([LIBICONV]) -m4trace:configure.in:627: -1- m4_pattern_allow([^LIBICONV$]) -m4trace:configure.in:627: -1- AC_SUBST([LTLIBICONV]) -m4trace:configure.in:627: -1- AC_SUBST_TRACE([LTLIBICONV]) -m4trace:configure.in:627: -1- m4_pattern_allow([^LTLIBICONV$]) -m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2384: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -aclocal.m4:2546: AM_ICONV is expanded from... -aclocal.m4:2407: AM_INTL_SUBDIR is expanded from... -aclocal.m4:2337: AM_GNU_GETTEXT is expanded from... -configure.in:627: the top level]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([ICONV_CONST]) -m4trace:configure.in:627: -1- m4_pattern_allow([^ICONV_CONST$]) -m4trace:configure.in:627: -1- AH_OUTPUT([ICONV_CONST], [/* Define as const if the declaration of iconv() needs const. */ +m4trace:configure.in:626: -1- AC_SUBST([LIBICONV]) +m4trace:configure.in:626: -1- AC_SUBST([LTLIBICONV]) +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:2509: AM_ICONV is expanded from... +aclocal.m4:2370: AM_INTL_SUBDIR is expanded from... +configure.in:626: AM_INTL_SUBDIR is required by... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([ICONV_CONST]) +m4trace:configure.in:626: -1- AH_OUTPUT([ICONV_CONST], [/* Define as const if the declaration of iconv() needs const. */ #undef ICONV_CONST]) -m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1935: AC_CACHE_CHECK is expanded from... -aclocal.m4:1996: AM_LANGINFO_CODESET is expanded from... -aclocal.m4:2407: AM_INTL_SUBDIR is expanded from... -aclocal.m4:2337: AM_GNU_GETTEXT is expanded from... -configure.in:627: the top level]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_CODESET]) -m4trace:configure.in:627: -1- m4_pattern_allow([^HAVE_LANGINFO_CODESET$]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_LANGINFO_CODESET], [/* Define if you have and nl_langinfo(CODESET). */ +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:1959: AM_LANGINFO_CODESET is expanded from... +aclocal.m4:2370: AM_INTL_SUBDIR is expanded from... +configure.in:626: AM_INTL_SUBDIR is required by... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_CODESET]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_LANGINFO_CODESET], [/* Define if you have and nl_langinfo(CODESET). */ #undef HAVE_LANGINFO_CODESET]) -m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1935: AC_CACHE_CHECK is expanded from... -aclocal.m4:2763: AM_LC_MESSAGES is expanded from... -aclocal.m4:2407: AM_INTL_SUBDIR is expanded from... -aclocal.m4:2337: AM_GNU_GETTEXT is expanded from... -configure.in:627: the top level]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LC_MESSAGES]) -m4trace:configure.in:627: -1- m4_pattern_allow([^HAVE_LC_MESSAGES$]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_LC_MESSAGES], [/* Define if your file defines LC_MESSAGES. */ +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:2726: AM_LC_MESSAGES is expanded from... +aclocal.m4:2370: AM_INTL_SUBDIR is expanded from... +configure.in:626: AM_INTL_SUBDIR is required by... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LC_MESSAGES]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_LC_MESSAGES], [/* Define if your file defines LC_MESSAGES. */ #undef HAVE_LC_MESSAGES]) -m4trace:configure.in:627: -1- AC_SUBST([INTLBISON]) -m4trace:configure.in:627: -1- AC_SUBST_TRACE([INTLBISON]) -m4trace:configure.in:627: -1- m4_pattern_allow([^INTLBISON$]) -m4trace:configure.in:627: -1- AC_SUBST([USE_NLS]) -m4trace:configure.in:627: -1- AC_SUBST_TRACE([USE_NLS]) -m4trace:configure.in:627: -1- m4_pattern_allow([^USE_NLS$]) -m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1935: AC_CACHE_CHECK is expanded from... -aclocal.m4:2337: AM_GNU_GETTEXT is expanded from... -configure.in:627: the top level]) -m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1935: AC_CACHE_CHECK is expanded from... -aclocal.m4:2337: AM_GNU_GETTEXT is expanded from... -configure.in:627: the top level]) -m4trace:configure.in:627: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1935: AC_CACHE_CHECK is expanded from... -aclocal.m4:2337: AM_GNU_GETTEXT is expanded from... -configure.in:627: the top level]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_NLS]) -m4trace:configure.in:627: -1- m4_pattern_allow([^ENABLE_NLS$]) -m4trace:configure.in:627: -1- AH_OUTPUT([ENABLE_NLS], [/* Define to 1 if translation of program messages to the user\'s native +m4trace:configure.in:626: -1- AC_SUBST([INTLBISON]) +m4trace:configure.in:626: -1- AC_SUBST([USE_NLS]) +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_NLS]) +m4trace:configure.in:626: -1- AH_OUTPUT([ENABLE_NLS], [/* Define to 1 if translation of program messages to the user\'s native language is requested. */ #undef ENABLE_NLS]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTEXT]) -m4trace:configure.in:627: -1- m4_pattern_allow([^HAVE_GETTEXT$]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_GETTEXT], [/* Define if the GNU gettext() function is already present or preinstalled. */ +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTEXT]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_GETTEXT], [/* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT]) -m4trace:configure.in:627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DCGETTEXT]) -m4trace:configure.in:627: -1- m4_pattern_allow([^HAVE_DCGETTEXT$]) -m4trace:configure.in:627: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define if the GNU dcgettext() function is already present or preinstalled. +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DCGETTEXT]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define if the GNU dcgettext() function is already present or preinstalled. */ #undef HAVE_DCGETTEXT]) -m4trace:configure.in:627: -1- AC_SUBST([BUILD_INCLUDED_LIBINTL]) -m4trace:configure.in:627: -1- AC_SUBST_TRACE([BUILD_INCLUDED_LIBINTL]) -m4trace:configure.in:627: -1- m4_pattern_allow([^BUILD_INCLUDED_LIBINTL$]) -m4trace:configure.in:627: -1- AC_SUBST([USE_INCLUDED_LIBINTL]) -m4trace:configure.in:627: -1- AC_SUBST_TRACE([USE_INCLUDED_LIBINTL]) -m4trace:configure.in:627: -1- m4_pattern_allow([^USE_INCLUDED_LIBINTL$]) -m4trace:configure.in:627: -1- AC_SUBST([CATOBJEXT]) -m4trace:configure.in:627: -1- AC_SUBST_TRACE([CATOBJEXT]) -m4trace:configure.in:627: -1- m4_pattern_allow([^CATOBJEXT$]) -m4trace:configure.in:627: -1- AC_SUBST([DATADIRNAME]) -m4trace:configure.in:627: -1- AC_SUBST_TRACE([DATADIRNAME]) -m4trace:configure.in:627: -1- m4_pattern_allow([^DATADIRNAME$]) -m4trace:configure.in:627: -1- AC_SUBST([INSTOBJEXT]) -m4trace:configure.in:627: -1- AC_SUBST_TRACE([INSTOBJEXT]) -m4trace:configure.in:627: -1- m4_pattern_allow([^INSTOBJEXT$]) -m4trace:configure.in:627: -1- AC_SUBST([GENCAT]) -m4trace:configure.in:627: -1- AC_SUBST_TRACE([GENCAT]) -m4trace:configure.in:627: -1- m4_pattern_allow([^GENCAT$]) -m4trace:configure.in:627: -1- AC_SUBST([INTLOBJS]) -m4trace:configure.in:627: -1- AC_SUBST_TRACE([INTLOBJS]) -m4trace:configure.in:627: -1- m4_pattern_allow([^INTLOBJS$]) -m4trace:configure.in:627: -1- AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX]) -m4trace:configure.in:627: -1- AC_SUBST_TRACE([INTL_LIBTOOL_SUFFIX_PREFIX]) -m4trace:configure.in:627: -1- m4_pattern_allow([^INTL_LIBTOOL_SUFFIX_PREFIX$]) -m4trace:configure.in:627: -1- AC_SUBST([INTLLIBS]) -m4trace:configure.in:627: -1- AC_SUBST_TRACE([INTLLIBS]) -m4trace:configure.in:627: -1- m4_pattern_allow([^INTLLIBS$]) -m4trace:configure.in:627: -1- AC_SUBST([LIBINTL]) -m4trace:configure.in:627: -1- AC_SUBST_TRACE([LIBINTL]) -m4trace:configure.in:627: -1- m4_pattern_allow([^LIBINTL$]) -m4trace:configure.in:627: -1- AC_SUBST([LTLIBINTL]) -m4trace:configure.in:627: -1- AC_SUBST_TRACE([LTLIBINTL]) -m4trace:configure.in:627: -1- m4_pattern_allow([^LTLIBINTL$]) -m4trace:configure.in:627: -1- AC_SUBST([POSUB]) -m4trace:configure.in:627: -1- AC_SUBST_TRACE([POSUB]) -m4trace:configure.in:627: -1- m4_pattern_allow([^POSUB$]) -m4trace:configure.in:630: -1- AC_HEADER_DIRENT -m4trace:configure.in:630: -1- AH_OUTPUT([HAVE_DIRENT_H], [/* Define to 1 if you have the header file, and it defines `DIR\'. +m4trace:configure.in:626: -1- AC_SUBST([BUILD_INCLUDED_LIBINTL]) +m4trace:configure.in:626: -1- AC_SUBST([USE_INCLUDED_LIBINTL]) +m4trace:configure.in:626: -1- AC_SUBST([CATOBJEXT]) +m4trace:configure.in:626: -1- AC_SUBST([DATADIRNAME]) +m4trace:configure.in:626: -1- AC_SUBST([INSTOBJEXT]) +m4trace:configure.in:626: -1- AC_SUBST([GENCAT]) +m4trace:configure.in:626: -1- AC_SUBST([INTLOBJS]) +m4trace:configure.in:626: -1- AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX]) +m4trace:configure.in:626: -1- AC_SUBST([INTLLIBS]) +m4trace:configure.in:626: -1- AC_SUBST([LIBINTL]) +m4trace:configure.in:626: -1- AC_SUBST([LTLIBINTL]) +m4trace:configure.in:626: -1- AC_SUBST([POSUB]) +m4trace:configure.in:629: -1- AC_HEADER_DIRENT +m4trace:configure.in:629: -1- AH_OUTPUT([HAVE_DIRENT_H], [/* Define to 1 if you have the header file, and it defines `DIR\'. */ #undef HAVE_DIRENT_H]) -m4trace:configure.in:630: -1- AH_OUTPUT([HAVE_SYS_NDIR_H], [/* Define to 1 if you have the header file, and it defines `DIR\'. +m4trace:configure.in:629: -1- AH_OUTPUT([HAVE_SYS_NDIR_H], [/* Define to 1 if you have the header file, and it defines `DIR\'. */ #undef HAVE_SYS_NDIR_H]) -m4trace:configure.in:630: -1- AH_OUTPUT([HAVE_SYS_DIR_H], [/* Define to 1 if you have the header file, and it defines `DIR\'. +m4trace:configure.in:629: -1- AH_OUTPUT([HAVE_SYS_DIR_H], [/* Define to 1 if you have the header file, and it defines `DIR\'. */ #undef HAVE_SYS_DIR_H]) -m4trace:configure.in:630: -1- AH_OUTPUT([HAVE_NDIR_H], [/* Define to 1 if you have the header file, and it defines `DIR\'. */ +m4trace:configure.in:629: -1- AH_OUTPUT([HAVE_NDIR_H], [/* Define to 1 if you have the header file, and it defines `DIR\'. */ #undef HAVE_NDIR_H]) -m4trace:configure.in:631: -1- AC_HEADER_TIME -m4trace:configure.in:631: -1- AC_DEFINE_TRACE_LITERAL([TIME_WITH_SYS_TIME]) -m4trace:configure.in:631: -1- m4_pattern_allow([^TIME_WITH_SYS_TIME$]) -m4trace:configure.in:631: -1- AH_OUTPUT([TIME_WITH_SYS_TIME], [/* Define to 1 if you can safely include both and . */ +m4trace:configure.in:630: -1- AC_HEADER_TIME +m4trace:configure.in:630: -1- AC_DEFINE_TRACE_LITERAL([TIME_WITH_SYS_TIME]) +m4trace:configure.in:630: -1- AH_OUTPUT([TIME_WITH_SYS_TIME], [/* Define to 1 if you can safely include both and . */ #undef TIME_WITH_SYS_TIME]) -m4trace:configure.in:633: -1- AC_CHECK_HEADERS([inttypes.h]) -m4trace:configure.in:633: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:632: -1- AC_CHECK_HEADERS([inttypes.h]) +m4trace:configure.in:632: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H]) -m4trace:configure.in:637: -1- AC_CHECK_HEADERS([unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \ +m4trace:configure.in:636: -1- 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 \ stddef.h stdint.h netdb.h pwd.h grp.h strings.h regex.h]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_STDARG_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_STDARG_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDARG_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_VARARGS_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_VARARGS_H], [/* Define to 1 if you have the header file. */ #undef HAVE_VARARGS_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STRING_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_TERMCAP_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_TERMCAP_H], [/* Define to 1 if you have the header file. */ #undef HAVE_TERMCAP_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_TERMIO_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_TERMIO_H], [/* Define to 1 if you have the header file. */ #undef HAVE_TERMIO_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_TERMIOS_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_TERMIOS_H], [/* Define to 1 if you have the header file. */ #undef HAVE_TERMIOS_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDDEF_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_NETDB_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_NETDB_H], [/* Define to 1 if you have the header file. */ #undef HAVE_NETDB_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_PWD_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_PWD_H], [/* Define to 1 if you have the header file. */ #undef HAVE_PWD_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_GRP_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_GRP_H], [/* Define to 1 if you have the header file. */ #undef HAVE_GRP_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H]) -m4trace:configure.in:637: -1- AH_OUTPUT([HAVE_REGEX_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_REGEX_H], [/* Define to 1 if you have the header file. */ #undef HAVE_REGEX_H]) -m4trace:configure.in:640: -1- AC_CHECK_HEADERS([sys/pte.h sys/stream.h sys/select.h sys/file.h \ +m4trace:configure.in:639: -1- 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]) -m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_PTE_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:639: -1- AH_OUTPUT([HAVE_SYS_PTE_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_PTE_H]) -m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_STREAM_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:639: -1- AH_OUTPUT([HAVE_SYS_STREAM_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_STREAM_H]) -m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_SELECT_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:639: -1- AH_OUTPUT([HAVE_SYS_SELECT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_SELECT_H]) -m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_FILE_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:639: -1- AH_OUTPUT([HAVE_SYS_FILE_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_FILE_H]) -m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_RESOURCE_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:639: -1- AH_OUTPUT([HAVE_SYS_RESOURCE_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_RESOURCE_H]) -m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:639: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H]) -m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_SOCKET_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:639: -1- AH_OUTPUT([HAVE_SYS_SOCKET_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOCKET_H]) -m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:639: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H]) -m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:639: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H]) -m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_TIMES_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:639: -1- AH_OUTPUT([HAVE_SYS_TIMES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIMES_H]) -m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:639: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H]) -m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_SYS_WAIT_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:639: -1- AH_OUTPUT([HAVE_SYS_WAIT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_WAIT_H]) -m4trace:configure.in:641: -1- AC_CHECK_HEADERS([netinet/in.h arpa/inet.h]) -m4trace:configure.in:641: -1- AH_OUTPUT([HAVE_NETINET_IN_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:640: -1- AC_CHECK_HEADERS([netinet/in.h arpa/inet.h]) +m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_NETINET_IN_H], [/* Define to 1 if you have the header file. */ #undef HAVE_NETINET_IN_H]) -m4trace:configure.in:641: -1- AH_OUTPUT([HAVE_ARPA_INET_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_ARPA_INET_H], [/* Define to 1 if you have the header file. */ #undef HAVE_ARPA_INET_H]) -m4trace:configure.in:652: -1- AC_FUNC_ALLOCA -m4trace:configure.in:652: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H]) -m4trace:configure.in:652: -1- m4_pattern_allow([^HAVE_ALLOCA_H$]) -m4trace:configure.in:652: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have and it should be used (not on Ultrix). +m4trace:configure.in:651: -1- AC_FUNC_ALLOCA +m4trace:configure.in:651: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H]) +m4trace:configure.in:651: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have and it should be used (not on Ultrix). */ #undef HAVE_ALLOCA_H]) -m4trace:configure.in:652: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA]) -m4trace:configure.in:652: -1- m4_pattern_allow([^HAVE_ALLOCA$]) -m4trace:configure.in:652: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have `alloca\', as a function or macro. */ +m4trace:configure.in:651: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA]) +m4trace:configure.in:651: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have `alloca\', as a function or macro. */ #undef HAVE_ALLOCA]) -m4trace:configure.in:652: -1- AC_LIBSOURCE([alloca.c]) -m4trace:configure.in:652: -1- AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext]) -m4trace:configure.in:652: -1- AC_SUBST_TRACE([ALLOCA]) -m4trace:configure.in:652: -1- m4_pattern_allow([^ALLOCA$]) -m4trace:configure.in:652: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA]) -m4trace:configure.in:652: -1- m4_pattern_allow([^C_ALLOCA$]) -m4trace:configure.in:652: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using `alloca.c\'. */ +m4trace:configure.in:651: -1- AC_LIBSOURCE([alloca.c]) +m4trace:configure.in:651: -1- AC_SUBST([ALLOCA], [alloca.$ac_objext]) +m4trace:configure.in:651: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA]) +m4trace:configure.in:651: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using `alloca.c\'. */ #undef C_ALLOCA]) -m4trace:configure.in:652: -1- AC_DEFINE_TRACE_LITERAL([CRAY_STACKSEG_END]) -m4trace:configure.in:652: -1- m4_pattern_allow([^CRAY_STACKSEG_END$]) -m4trace:configure.in:652: -1- AH_OUTPUT([CRAY_STACKSEG_END], [/* Define to one of `_getb67\', `GETB67\', `getb67\' for Cray-2 and Cray-YMP +m4trace:configure.in:651: -1- AC_DEFINE_TRACE_LITERAL([CRAY_STACKSEG_END]) +m4trace:configure.in:651: -1- AH_OUTPUT([CRAY_STACKSEG_END], [/* Define to one of `_getb67\', `GETB67\', `getb67\' for Cray-2 and Cray-YMP systems. This function is required for `alloca.c\' support on those systems. */ #undef CRAY_STACKSEG_END]) -m4trace:configure.in:652: -1- AH_OUTPUT([STACK_DIRECTION], [/* If using the C implementation of alloca, define if you know the +m4trace:configure.in:651: -1- AH_OUTPUT([STACK_DIRECTION], [/* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be - automatically deduced at runtime. + automatically deduced at run-time. STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ @%:@undef STACK_DIRECTION]) -m4trace:configure.in:652: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION]) -m4trace:configure.in:652: -1- m4_pattern_allow([^STACK_DIRECTION$]) -m4trace:configure.in:653: -1- AC_FUNC_GETPGRP -m4trace:configure.in:653: -1- AC_DEFINE_TRACE_LITERAL([GETPGRP_VOID]) -m4trace:configure.in:653: -1- m4_pattern_allow([^GETPGRP_VOID$]) -m4trace:configure.in:653: -1- AH_OUTPUT([GETPGRP_VOID], [/* Define to 1 if the `getpgrp\' function requires zero arguments. */ +m4trace:configure.in:651: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION]) +m4trace:configure.in:652: -1- AC_FUNC_GETPGRP +m4trace:configure.in:652: -1- AC_DEFINE_TRACE_LITERAL([GETPGRP_VOID]) +m4trace:configure.in:652: -1- AH_OUTPUT([GETPGRP_VOID], [/* Define to 1 if the `getpgrp\' function requires zero arguments. */ #undef GETPGRP_VOID]) -m4trace:configure.in:654: -1- AC_FUNC_SETVBUF_REVERSED -m4trace:configure.in:654: -1- AC_DEFINE_TRACE_LITERAL([SETVBUF_REVERSED]) -m4trace:configure.in:654: -1- m4_pattern_allow([^SETVBUF_REVERSED$]) -m4trace:configure.in:654: -1- AH_OUTPUT([SETVBUF_REVERSED], [/* Define to 1 if the `setvbuf\' function takes the buffering type as its +m4trace:configure.in:653: -1- AC_FUNC_SETVBUF_REVERSED +m4trace:configure.in:653: -1- AC_DEFINE_TRACE_LITERAL([SETVBUF_REVERSED]) +m4trace:configure.in:653: -1- AH_OUTPUT([SETVBUF_REVERSED], [/* Define to 1 if the `setvbuf\' function takes the buffering type as its second argument and the buffer pointer as the third, as on System V before release 3. */ #undef SETVBUF_REVERSED]) -m4trace:configure.in:655: -1- AC_FUNC_VPRINTF -m4trace:configure.in:655: -1- AC_CHECK_FUNCS([vprintf], [ +m4trace:configure.in:654: -1- AC_FUNC_VPRINTF +m4trace:configure.in:654: -1- AC_CHECK_FUNCS([vprintf], [ AC_CHECK_FUNC(_doprnt, [AC_DEFINE(HAVE_DOPRNT, 1, [Define to 1 if you don't have `vprintf' but do have `_doprnt.'])])]) -m4trace:configure.in:655: -1- AH_OUTPUT([HAVE_VPRINTF], [/* Define to 1 if you have the `vprintf\' function. */ +m4trace:configure.in:654: -1- AH_OUTPUT([HAVE_VPRINTF], [/* Define to 1 if you have the `vprintf\' function. */ #undef HAVE_VPRINTF]) -m4trace:configure.in:655: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOPRNT]) -m4trace:configure.in:655: -1- m4_pattern_allow([^HAVE_DOPRNT$]) -m4trace:configure.in:655: -1- AH_OUTPUT([HAVE_DOPRNT], [/* Define to 1 if you don\'t have `vprintf\' but do have `_doprnt.\' */ +m4trace:configure.in:654: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOPRNT]) +m4trace:configure.in:654: -1- AH_OUTPUT([HAVE_DOPRNT], [/* Define to 1 if you don\'t have `vprintf\' but do have `_doprnt.\' */ #undef HAVE_DOPRNT]) -m4trace:configure.in:656: -1- AC_FUNC_STRCOLL -m4trace:configure.in:656: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCOLL]) -m4trace:configure.in:656: -1- m4_pattern_allow([^HAVE_STRCOLL$]) -m4trace:configure.in:656: -1- AH_OUTPUT([HAVE_STRCOLL], [/* Define to 1 if you have the `strcoll\' function and it is properly defined. +m4trace:configure.in:655: -1- AC_FUNC_STRCOLL +m4trace:configure.in:655: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCOLL]) +m4trace:configure.in:655: -1- AH_OUTPUT([HAVE_STRCOLL], [/* Define to 1 if you have the `strcoll\' function and it is properly defined. */ #undef HAVE_STRCOLL]) -m4trace:configure.in:677: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VPRINTF]) -m4trace:configure.in:677: -1- m4_pattern_allow([^HAVE_VPRINTF$]) -m4trace:configure.in:682: -1- AC_LIBSOURCE([vprint.c]) -m4trace:configure.in:682: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS vprint.$ac_objext"]) -m4trace:configure.in:682: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) -m4trace:configure.in:682: -1- m4_pattern_allow([^LIB@&t@OBJS$]) -m4trace:configure.in:686: -1- AC_TYPE_SIGNAL -m4trace:configure.in:686: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE]) -m4trace:configure.in:686: -1- m4_pattern_allow([^RETSIGTYPE$]) -m4trace:configure.in:686: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (`int\' or `void\'). */ +m4trace:configure.in:676: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VPRINTF]) +m4trace:configure.in:681: -1- AC_LIBSOURCE([vprint.c]) +m4trace:configure.in:681: -1- AC_SUBST([LIB@&t@OBJS]) +m4trace:configure.in:685: -1- AC_TYPE_SIGNAL +m4trace:configure.in:685: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE]) +m4trace:configure.in:685: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (`int\' or `void\'). */ #undef RETSIGTYPE]) -m4trace:configure.in:689: -2- AC_DEFINE_TRACE_LITERAL([HAVE_SETOSTYPE]) -m4trace:configure.in:689: -2- m4_pattern_allow([^HAVE_SETOSTYPE$]) -m4trace:configure.in:690: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WAIT3]) -m4trace:configure.in:690: -2- m4_pattern_allow([^HAVE_WAIT3$]) -m4trace:configure.in:691: -2- AC_DEFINE_TRACE_LITERAL([HAVE_ISINF_IN_LIBC]) -m4trace:configure.in:691: -2- m4_pattern_allow([^HAVE_ISINF_IN_LIBC$]) -m4trace:configure.in:692: -2- AC_DEFINE_TRACE_LITERAL([HAVE_ISNAN_IN_LIBC]) -m4trace:configure.in:692: -2- m4_pattern_allow([^HAVE_ISNAN_IN_LIBC$]) -m4trace:configure.in:695: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MKFIFO]) -m4trace:configure.in:695: -2- m4_pattern_allow([^HAVE_MKFIFO$]) -m4trace:configure.in:695: -2- AC_DEFINE_TRACE_LITERAL([MKFIFO_MISSING]) -m4trace:configure.in:695: -2- m4_pattern_allow([^MKFIFO_MISSING$]) -m4trace:configure.in:701: -1- AC_CHECK_FUNCS([dup2 eaccess fcntl getdtablesize getgroups gethostname \ +m4trace:configure.in:688: -2- AC_DEFINE_TRACE_LITERAL([HAVE_SETOSTYPE]) +m4trace:configure.in:689: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WAIT3]) +m4trace:configure.in:690: -2- AC_DEFINE_TRACE_LITERAL([HAVE_ISINF_IN_LIBC]) +m4trace:configure.in:693: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MKFIFO]) +m4trace:configure.in:693: -2- AC_DEFINE_TRACE_LITERAL([MKFIFO_MISSING]) +m4trace:configure.in:699: -1- AC_CHECK_FUNCS([dup2 eaccess fcntl getdtablesize getgroups gethostname \ getpagesize getpeername getrlimit getrusage gettimeofday \ kill killpg lstat readlink sbrk select setdtablesize \ tcgetpgrp uname ulimit waitpid]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_DUP2], [/* Define to 1 if you have the `dup2\' function. */ +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_DUP2], [/* Define to 1 if you have the `dup2\' function. */ #undef HAVE_DUP2]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_EACCESS], [/* Define to 1 if you have the `eaccess\' function. */ +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_EACCESS], [/* Define to 1 if you have the `eaccess\' function. */ #undef HAVE_EACCESS]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_FCNTL], [/* Define to 1 if you have the `fcntl\' function. */ +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_FCNTL], [/* Define to 1 if you have the `fcntl\' function. */ #undef HAVE_FCNTL]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_GETDTABLESIZE], [/* Define to 1 if you have the `getdtablesize\' function. */ +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_GETDTABLESIZE], [/* Define to 1 if you have the `getdtablesize\' function. */ #undef HAVE_GETDTABLESIZE]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_GETGROUPS], [/* Define to 1 if you have the `getgroups\' function. */ +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_GETGROUPS], [/* Define to 1 if you have the `getgroups\' function. */ #undef HAVE_GETGROUPS]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_GETHOSTNAME], [/* Define to 1 if you have the `gethostname\' function. */ +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_GETHOSTNAME], [/* Define to 1 if you have the `gethostname\' function. */ #undef HAVE_GETHOSTNAME]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */ +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */ #undef HAVE_GETPAGESIZE]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_GETPEERNAME], [/* Define to 1 if you have the `getpeername\' function. */ +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_GETPEERNAME], [/* Define to 1 if you have the `getpeername\' function. */ #undef HAVE_GETPEERNAME]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_GETRLIMIT], [/* Define to 1 if you have the `getrlimit\' function. */ +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_GETRLIMIT], [/* Define to 1 if you have the `getrlimit\' function. */ #undef HAVE_GETRLIMIT]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_GETRUSAGE], [/* Define to 1 if you have the `getrusage\' function. */ +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_GETRUSAGE], [/* Define to 1 if you have the `getrusage\' function. */ #undef HAVE_GETRUSAGE]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have the `gettimeofday\' function. */ +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have the `gettimeofday\' function. */ #undef HAVE_GETTIMEOFDAY]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_KILL], [/* Define to 1 if you have the `kill\' function. */ +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_KILL], [/* Define to 1 if you have the `kill\' function. */ #undef HAVE_KILL]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_KILLPG], [/* Define to 1 if you have the `killpg\' function. */ +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_KILLPG], [/* Define to 1 if you have the `killpg\' function. */ #undef HAVE_KILLPG]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_LSTAT], [/* Define to 1 if you have the `lstat\' function. */ +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_LSTAT], [/* Define to 1 if you have the `lstat\' function. */ #undef HAVE_LSTAT]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_READLINK], [/* Define to 1 if you have the `readlink\' function. */ +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_READLINK], [/* Define to 1 if you have the `readlink\' function. */ #undef HAVE_READLINK]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_SBRK], [/* Define to 1 if you have the `sbrk\' function. */ +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_SBRK], [/* Define to 1 if you have the `sbrk\' function. */ #undef HAVE_SBRK]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_SELECT], [/* Define to 1 if you have the `select\' function. */ +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_SELECT], [/* Define to 1 if you have the `select\' function. */ #undef HAVE_SELECT]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_SETDTABLESIZE], [/* Define to 1 if you have the `setdtablesize\' function. */ +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_SETDTABLESIZE], [/* Define to 1 if you have the `setdtablesize\' function. */ #undef HAVE_SETDTABLESIZE]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_TCGETPGRP], [/* Define to 1 if you have the `tcgetpgrp\' function. */ +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_TCGETPGRP], [/* Define to 1 if you have the `tcgetpgrp\' function. */ #undef HAVE_TCGETPGRP]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_UNAME], [/* Define to 1 if you have the `uname\' function. */ +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_UNAME], [/* Define to 1 if you have the `uname\' function. */ #undef HAVE_UNAME]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_ULIMIT], [/* Define to 1 if you have the `ulimit\' function. */ +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_ULIMIT], [/* Define to 1 if you have the `ulimit\' function. */ #undef HAVE_ULIMIT]) -m4trace:configure.in:701: -1- AH_OUTPUT([HAVE_WAITPID], [/* Define to 1 if you have the `waitpid\' function. */ +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_WAITPID], [/* Define to 1 if you have the `waitpid\' function. */ #undef HAVE_WAITPID]) -m4trace:configure.in:702: -1- AC_LIBSOURCE([rename.c]) -m4trace:configure.in:702: -1- AC_CHECK_FUNCS([rename], [], [_AC_LIBOBJ($ac_func)]) -m4trace:configure.in:702: -1- AH_OUTPUT([HAVE_RENAME], [/* Define to 1 if you have the `rename\' function. */ +m4trace:configure.in:700: -1- AC_LIBSOURCE([rename.c]) +m4trace:configure.in:700: -1- AC_CHECK_FUNCS([rename], [], [_AC_LIBOBJ($ac_func)]) +m4trace:configure.in:700: -1- AH_OUTPUT([HAVE_RENAME], [/* Define to 1 if you have the `rename\' function. */ #undef HAVE_RENAME]) -m4trace:configure.in:702: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS $ac_func.$ac_objext"]) -m4trace:configure.in:702: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) -m4trace:configure.in:702: -1- m4_pattern_allow([^LIB@&t@OBJS$]) -m4trace:configure.in:709: -1- AC_CHECK_FUNCS([bcopy bzero confstr fnmatch \ +m4trace:configure.in:700: -1- AC_SUBST([LIB@&t@OBJS]) +m4trace:configure.in:707: -1- AC_CHECK_FUNCS([bcopy bzero confstr fnmatch \ getaddrinfo gethostbyname getservbyname getservent inet_aton \ memmove pathconf putenv raise regcomp regexec \ setenv setlinebuf setlocale setvbuf siginterrupt strchr \ sysconf tcgetattr times ttyname tzset unsetenv]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_BCOPY], [/* Define to 1 if you have the `bcopy\' function. */ +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_BCOPY], [/* Define to 1 if you have the `bcopy\' function. */ #undef HAVE_BCOPY]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_BZERO], [/* Define to 1 if you have the `bzero\' function. */ +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_BZERO], [/* Define to 1 if you have the `bzero\' function. */ #undef HAVE_BZERO]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_CONFSTR], [/* Define to 1 if you have the `confstr\' function. */ +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_CONFSTR], [/* Define to 1 if you have the `confstr\' function. */ #undef HAVE_CONFSTR]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_FNMATCH], [/* Define to 1 if you have the `fnmatch\' function. */ +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_FNMATCH], [/* Define to 1 if you have the `fnmatch\' function. */ #undef HAVE_FNMATCH]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_GETADDRINFO], [/* Define to 1 if you have the `getaddrinfo\' function. */ +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_GETADDRINFO], [/* Define to 1 if you have the `getaddrinfo\' function. */ #undef HAVE_GETADDRINFO]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_GETHOSTBYNAME], [/* Define to 1 if you have the `gethostbyname\' function. */ +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_GETHOSTBYNAME], [/* Define to 1 if you have the `gethostbyname\' function. */ #undef HAVE_GETHOSTBYNAME]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_GETSERVBYNAME], [/* Define to 1 if you have the `getservbyname\' function. */ +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_GETSERVBYNAME], [/* Define to 1 if you have the `getservbyname\' function. */ #undef HAVE_GETSERVBYNAME]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_GETSERVENT], [/* Define to 1 if you have the `getservent\' function. */ +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_GETSERVENT], [/* Define to 1 if you have the `getservent\' function. */ #undef HAVE_GETSERVENT]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_INET_ATON], [/* Define to 1 if you have the `inet_aton\' function. */ +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_INET_ATON], [/* Define to 1 if you have the `inet_aton\' function. */ #undef HAVE_INET_ATON]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_MEMMOVE], [/* Define to 1 if you have the `memmove\' function. */ +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_MEMMOVE], [/* Define to 1 if you have the `memmove\' function. */ #undef HAVE_MEMMOVE]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_PATHCONF], [/* Define to 1 if you have the `pathconf\' function. */ +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_PATHCONF], [/* Define to 1 if you have the `pathconf\' function. */ #undef HAVE_PATHCONF]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_PUTENV], [/* Define to 1 if you have the `putenv\' function. */ +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_PUTENV], [/* Define to 1 if you have the `putenv\' function. */ #undef HAVE_PUTENV]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_RAISE], [/* Define to 1 if you have the `raise\' function. */ +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_RAISE], [/* Define to 1 if you have the `raise\' function. */ #undef HAVE_RAISE]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_REGCOMP], [/* Define to 1 if you have the `regcomp\' function. */ +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_REGCOMP], [/* Define to 1 if you have the `regcomp\' function. */ #undef HAVE_REGCOMP]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_REGEXEC], [/* Define to 1 if you have the `regexec\' function. */ +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_REGEXEC], [/* Define to 1 if you have the `regexec\' function. */ #undef HAVE_REGEXEC]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_SETENV], [/* Define to 1 if you have the `setenv\' function. */ +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_SETENV], [/* Define to 1 if you have the `setenv\' function. */ #undef HAVE_SETENV]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_SETLINEBUF], [/* Define to 1 if you have the `setlinebuf\' function. */ +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_SETLINEBUF], [/* Define to 1 if you have the `setlinebuf\' function. */ #undef HAVE_SETLINEBUF]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the `setlocale\' function. */ +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the `setlocale\' function. */ #undef HAVE_SETLOCALE]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_SETVBUF], [/* Define to 1 if you have the `setvbuf\' function. */ +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_SETVBUF], [/* Define to 1 if you have the `setvbuf\' function. */ #undef HAVE_SETVBUF]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_SIGINTERRUPT], [/* Define to 1 if you have the `siginterrupt\' function. */ +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_SIGINTERRUPT], [/* Define to 1 if you have the `siginterrupt\' function. */ #undef HAVE_SIGINTERRUPT]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_STRCHR], [/* Define to 1 if you have the `strchr\' function. */ +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_STRCHR], [/* Define to 1 if you have the `strchr\' function. */ #undef HAVE_STRCHR]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_SYSCONF], [/* Define to 1 if you have the `sysconf\' function. */ +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_SYSCONF], [/* Define to 1 if you have the `sysconf\' function. */ #undef HAVE_SYSCONF]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_TCGETATTR], [/* Define to 1 if you have the `tcgetattr\' function. */ +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_TCGETATTR], [/* Define to 1 if you have the `tcgetattr\' function. */ #undef HAVE_TCGETATTR]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_TIMES], [/* Define to 1 if you have the `times\' function. */ +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_TIMES], [/* Define to 1 if you have the `times\' function. */ #undef HAVE_TIMES]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_TTYNAME], [/* Define to 1 if you have the `ttyname\' function. */ +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_TTYNAME], [/* Define to 1 if you have the `ttyname\' function. */ #undef HAVE_TTYNAME]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_TZSET], [/* Define to 1 if you have the `tzset\' function. */ +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_TZSET], [/* Define to 1 if you have the `tzset\' function. */ #undef HAVE_TZSET]) -m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_UNSETENV], [/* Define to 1 if you have the `unsetenv\' function. */ +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_UNSETENV], [/* Define to 1 if you have the `unsetenv\' function. */ #undef HAVE_UNSETENV]) -m4trace:configure.in:711: -1- AC_CHECK_FUNCS([vsnprintf snprintf vasprintf asprintf]) -m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* Define to 1 if you have the `vsnprintf\' function. */ +m4trace:configure.in:709: -1- AC_CHECK_FUNCS([vsnprintf snprintf vasprintf asprintf]) +m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* Define to 1 if you have the `vsnprintf\' function. */ #undef HAVE_VSNPRINTF]) -m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define to 1 if you have the `snprintf\' function. */ +m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define to 1 if you have the `snprintf\' function. */ #undef HAVE_SNPRINTF]) -m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_VASPRINTF], [/* Define to 1 if you have the `vasprintf\' function. */ +m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_VASPRINTF], [/* Define to 1 if you have the `vasprintf\' function. */ #undef HAVE_VASPRINTF]) -m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_ASPRINTF], [/* Define to 1 if you have the `asprintf\' function. */ +m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_ASPRINTF], [/* Define to 1 if you have the `asprintf\' function. */ #undef HAVE_ASPRINTF]) -m4trace:configure.in:712: -1- AC_CHECK_FUNCS([isascii isblank isgraph isprint isspace isxdigit]) -m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_ISASCII], [/* Define to 1 if you have the `isascii\' function. */ +m4trace:configure.in:710: -1- AC_CHECK_FUNCS([isascii isblank isgraph isprint isspace isxdigit]) +m4trace:configure.in:710: -1- AH_OUTPUT([HAVE_ISASCII], [/* Define to 1 if you have the `isascii\' function. */ #undef HAVE_ISASCII]) -m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_ISBLANK], [/* Define to 1 if you have the `isblank\' function. */ +m4trace:configure.in:710: -1- AH_OUTPUT([HAVE_ISBLANK], [/* Define to 1 if you have the `isblank\' function. */ #undef HAVE_ISBLANK]) -m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_ISGRAPH], [/* Define to 1 if you have the `isgraph\' function. */ +m4trace:configure.in:710: -1- AH_OUTPUT([HAVE_ISGRAPH], [/* Define to 1 if you have the `isgraph\' function. */ #undef HAVE_ISGRAPH]) -m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_ISPRINT], [/* Define to 1 if you have the `isprint\' function. */ +m4trace:configure.in:710: -1- AH_OUTPUT([HAVE_ISPRINT], [/* Define to 1 if you have the `isprint\' function. */ #undef HAVE_ISPRINT]) -m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_ISSPACE], [/* Define to 1 if you have the `isspace\' function. */ +m4trace:configure.in:710: -1- AH_OUTPUT([HAVE_ISSPACE], [/* Define to 1 if you have the `isspace\' function. */ #undef HAVE_ISSPACE]) -m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_ISXDIGIT], [/* Define to 1 if you have the `isxdigit\' function. */ +m4trace:configure.in:710: -1- AH_OUTPUT([HAVE_ISXDIGIT], [/* Define to 1 if you have the `isxdigit\' function. */ #undef HAVE_ISXDIGIT]) -m4trace:configure.in:713: -1- AC_CHECK_FUNCS([getpwent getpwnam getpwuid]) -m4trace:configure.in:713: -1- AH_OUTPUT([HAVE_GETPWENT], [/* Define to 1 if you have the `getpwent\' function. */ +m4trace:configure.in:711: -1- AC_CHECK_FUNCS([getpwent getpwnam getpwuid]) +m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_GETPWENT], [/* Define to 1 if you have the `getpwent\' function. */ #undef HAVE_GETPWENT]) -m4trace:configure.in:713: -1- AH_OUTPUT([HAVE_GETPWNAM], [/* Define to 1 if you have the `getpwnam\' function. */ +m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_GETPWNAM], [/* Define to 1 if you have the `getpwnam\' function. */ #undef HAVE_GETPWNAM]) -m4trace:configure.in:713: -1- AH_OUTPUT([HAVE_GETPWUID], [/* Define to 1 if you have the `getpwuid\' function. */ +m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_GETPWUID], [/* Define to 1 if you have the `getpwuid\' function. */ #undef HAVE_GETPWUID]) -m4trace:configure.in:714: -1- AC_LIBSOURCE([getcwd.c]) -m4trace:configure.in:714: -1- AC_LIBSOURCE([memset.c]) -m4trace:configure.in:714: -1- AC_LIBSOURCE([strcasecmp.c]) -m4trace:configure.in:714: -1- AC_LIBSOURCE([strerror.c]) -m4trace:configure.in:714: -1- AC_LIBSOURCE([strftime.c]) -m4trace:configure.in:714: -1- AC_LIBSOURCE([strnlen.c]) -m4trace:configure.in:714: -1- AC_LIBSOURCE([strpbrk.c]) -m4trace:configure.in:714: -1- AC_LIBSOURCE([strstr.c]) -m4trace:configure.in:714: -1- AC_CHECK_FUNCS([getcwd memset strcasecmp strerror strftime strnlen strpbrk strstr], [], [_AC_LIBOBJ($ac_func)]) -m4trace:configure.in:714: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the `getcwd\' function. */ +m4trace:configure.in:712: -1- AC_LIBSOURCE([getcwd.c]) +m4trace:configure.in:712: -1- AC_LIBSOURCE([memset.c]) +m4trace:configure.in:712: -1- AC_LIBSOURCE([strcasecmp.c]) +m4trace:configure.in:712: -1- AC_LIBSOURCE([strerror.c]) +m4trace:configure.in:712: -1- AC_LIBSOURCE([strftime.c]) +m4trace:configure.in:712: -1- AC_LIBSOURCE([strnlen.c]) +m4trace:configure.in:712: -1- AC_LIBSOURCE([strpbrk.c]) +m4trace:configure.in:712: -1- AC_LIBSOURCE([strstr.c]) +m4trace:configure.in:712: -1- AC_CHECK_FUNCS([getcwd memset strcasecmp strerror strftime strnlen strpbrk strstr], [], [_AC_LIBOBJ($ac_func)]) +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the `getcwd\' function. */ #undef HAVE_GETCWD]) -m4trace:configure.in:714: -1- AH_OUTPUT([HAVE_MEMSET], [/* Define to 1 if you have the `memset\' function. */ +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_MEMSET], [/* Define to 1 if you have the `memset\' function. */ #undef HAVE_MEMSET]) -m4trace:configure.in:714: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the `strcasecmp\' function. */ +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the `strcasecmp\' function. */ #undef HAVE_STRCASECMP]) -m4trace:configure.in:714: -1- AH_OUTPUT([HAVE_STRERROR], [/* Define to 1 if you have the `strerror\' function. */ +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_STRERROR], [/* Define to 1 if you have the `strerror\' function. */ #undef HAVE_STRERROR]) -m4trace:configure.in:714: -1- AH_OUTPUT([HAVE_STRFTIME], [/* Define to 1 if you have the `strftime\' function. */ +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_STRFTIME], [/* Define to 1 if you have the `strftime\' function. */ #undef HAVE_STRFTIME]) -m4trace:configure.in:714: -1- AH_OUTPUT([HAVE_STRNLEN], [/* Define to 1 if you have the `strnlen\' function. */ +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_STRNLEN], [/* Define to 1 if you have the `strnlen\' function. */ #undef HAVE_STRNLEN]) -m4trace:configure.in:714: -1- AH_OUTPUT([HAVE_STRPBRK], [/* Define to 1 if you have the `strpbrk\' function. */ +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_STRPBRK], [/* Define to 1 if you have the `strpbrk\' function. */ #undef HAVE_STRPBRK]) -m4trace:configure.in:714: -1- AH_OUTPUT([HAVE_STRSTR], [/* Define to 1 if you have the `strstr\' function. */ +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_STRSTR], [/* Define to 1 if you have the `strstr\' function. */ #undef HAVE_STRSTR]) -m4trace:configure.in:714: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS $ac_func.$ac_objext"]) -m4trace:configure.in:714: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) -m4trace:configure.in:714: -1- m4_pattern_allow([^LIB@&t@OBJS$]) -m4trace:configure.in:715: -1- AC_LIBSOURCE([strtod.c]) -m4trace:configure.in:715: -1- AC_LIBSOURCE([strtol.c]) -m4trace:configure.in:715: -1- AC_LIBSOURCE([strtoul.c]) -m4trace:configure.in:715: -1- AC_LIBSOURCE([strtoll.c]) -m4trace:configure.in:715: -1- AC_LIBSOURCE([strtoull.c]) -m4trace:configure.in:715: -1- AC_LIBSOURCE([strtoimax.c]) -m4trace:configure.in:715: -1- AC_LIBSOURCE([strtoumax.c]) -m4trace:configure.in:715: -1- AC_CHECK_FUNCS([strtod strtol strtoul strtoll strtoull strtoimax strtoumax], [], [_AC_LIBOBJ($ac_func)]) -m4trace:configure.in:715: -1- AH_OUTPUT([HAVE_STRTOD], [/* Define to 1 if you have the `strtod\' function. */ +m4trace:configure.in:712: -1- AC_SUBST([LIB@&t@OBJS]) +m4trace:configure.in:713: -1- AC_LIBSOURCE([strtod.c]) +m4trace:configure.in:713: -1- AC_LIBSOURCE([strtol.c]) +m4trace:configure.in:713: -1- AC_LIBSOURCE([strtoul.c]) +m4trace:configure.in:713: -1- AC_LIBSOURCE([strtoll.c]) +m4trace:configure.in:713: -1- AC_LIBSOURCE([strtoull.c]) +m4trace:configure.in:713: -1- AC_LIBSOURCE([strtoimax.c]) +m4trace:configure.in:713: -1- AC_LIBSOURCE([strtoumax.c]) +m4trace:configure.in:713: -1- AC_CHECK_FUNCS([strtod strtol strtoul strtoll strtoull strtoimax strtoumax], [], [_AC_LIBOBJ($ac_func)]) +m4trace:configure.in:713: -1- AH_OUTPUT([HAVE_STRTOD], [/* Define to 1 if you have the `strtod\' function. */ #undef HAVE_STRTOD]) -m4trace:configure.in:715: -1- AH_OUTPUT([HAVE_STRTOL], [/* Define to 1 if you have the `strtol\' function. */ +m4trace:configure.in:713: -1- AH_OUTPUT([HAVE_STRTOL], [/* Define to 1 if you have the `strtol\' function. */ #undef HAVE_STRTOL]) -m4trace:configure.in:715: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the `strtoul\' function. */ +m4trace:configure.in:713: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the `strtoul\' function. */ #undef HAVE_STRTOUL]) -m4trace:configure.in:715: -1- AH_OUTPUT([HAVE_STRTOLL], [/* Define to 1 if you have the `strtoll\' function. */ +m4trace:configure.in:713: -1- AH_OUTPUT([HAVE_STRTOLL], [/* Define to 1 if you have the `strtoll\' function. */ #undef HAVE_STRTOLL]) -m4trace:configure.in:715: -1- AH_OUTPUT([HAVE_STRTOULL], [/* Define to 1 if you have the `strtoull\' function. */ +m4trace:configure.in:713: -1- AH_OUTPUT([HAVE_STRTOULL], [/* Define to 1 if you have the `strtoull\' function. */ #undef HAVE_STRTOULL]) -m4trace:configure.in:715: -1- AH_OUTPUT([HAVE_STRTOIMAX], [/* Define to 1 if you have the `strtoimax\' function. */ +m4trace:configure.in:713: -1- AH_OUTPUT([HAVE_STRTOIMAX], [/* Define to 1 if you have the `strtoimax\' function. */ #undef HAVE_STRTOIMAX]) -m4trace:configure.in:715: -1- AH_OUTPUT([HAVE_STRTOUMAX], [/* Define to 1 if you have the `strtoumax\' function. */ +m4trace:configure.in:713: -1- AH_OUTPUT([HAVE_STRTOUMAX], [/* Define to 1 if you have the `strtoumax\' function. */ #undef HAVE_STRTOUMAX]) -m4trace:configure.in:715: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS $ac_func.$ac_objext"]) -m4trace:configure.in:715: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) -m4trace:configure.in:715: -1- m4_pattern_allow([^LIB@&t@OBJS$]) -m4trace:configure.in:717: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_CONFSTR]) -m4trace:configure.in:717: -1- m4_pattern_allow([^HAVE_DECL_CONFSTR$]) -m4trace:configure.in:717: -1- AH_OUTPUT([HAVE_DECL_CONFSTR], [/* Define to 1 if you have the declaration of `confstr\', and to 0 if you +m4trace:configure.in:713: -1- AC_SUBST([LIB@&t@OBJS]) +m4trace:configure.in:715: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_CONFSTR]) +m4trace:configure.in:715: -1- AH_OUTPUT([HAVE_DECL_CONFSTR], [/* Define to 1 if you have the declaration of `confstr\', and to 0 if you don\'t. */ #undef HAVE_DECL_CONFSTR]) -m4trace:configure.in:717: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_CONFSTR]) -m4trace:configure.in:717: -1- m4_pattern_allow([^HAVE_DECL_CONFSTR$]) -m4trace:configure.in:718: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_PRINTF]) -m4trace:configure.in:718: -1- m4_pattern_allow([^HAVE_DECL_PRINTF$]) -m4trace:configure.in:718: -1- AH_OUTPUT([HAVE_DECL_PRINTF], [/* Define to 1 if you have the declaration of `printf\', and to 0 if you don\'t. +m4trace:configure.in:715: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_CONFSTR]) +m4trace:configure.in:716: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_PRINTF]) +m4trace:configure.in:716: -1- AH_OUTPUT([HAVE_DECL_PRINTF], [/* Define to 1 if you have the declaration of `printf\', and to 0 if you don\'t. */ #undef HAVE_DECL_PRINTF]) -m4trace:configure.in:718: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_PRINTF]) -m4trace:configure.in:718: -1- m4_pattern_allow([^HAVE_DECL_PRINTF$]) -m4trace:configure.in:719: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SBRK]) -m4trace:configure.in:719: -1- m4_pattern_allow([^HAVE_DECL_SBRK$]) -m4trace:configure.in:719: -1- AH_OUTPUT([HAVE_DECL_SBRK], [/* Define to 1 if you have the declaration of `sbrk\', and to 0 if you don\'t. +m4trace:configure.in:716: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_PRINTF]) +m4trace:configure.in:717: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SBRK]) +m4trace:configure.in:717: -1- AH_OUTPUT([HAVE_DECL_SBRK], [/* Define to 1 if you have the declaration of `sbrk\', and to 0 if you don\'t. */ #undef HAVE_DECL_SBRK]) -m4trace:configure.in:719: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SBRK]) -m4trace:configure.in:719: -1- m4_pattern_allow([^HAVE_DECL_SBRK$]) -m4trace:configure.in:720: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SETREGID]) -m4trace:configure.in:720: -1- m4_pattern_allow([^HAVE_DECL_SETREGID$]) -m4trace:configure.in:720: -1- AH_OUTPUT([HAVE_DECL_SETREGID], [/* Define to 1 if you have the declaration of `setregid\', and to 0 if you +m4trace:configure.in:717: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SBRK]) +m4trace:configure.in:718: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SETREGID]) +m4trace:configure.in:718: -1- AH_OUTPUT([HAVE_DECL_SETREGID], [/* Define to 1 if you have the declaration of `setregid\', and to 0 if you don\'t. */ #undef HAVE_DECL_SETREGID]) -m4trace:configure.in:720: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SETREGID]) -m4trace:configure.in:720: -1- m4_pattern_allow([^HAVE_DECL_SETREGID$]) -m4trace:configure.in:721: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRCPY]) -m4trace:configure.in:721: -1- m4_pattern_allow([^HAVE_DECL_STRCPY$]) -m4trace:configure.in:721: -1- AH_OUTPUT([HAVE_DECL_STRCPY], [/* Define to 1 if you have the declaration of `strcpy\', and to 0 if you don\'t. +m4trace:configure.in:718: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SETREGID]) +m4trace:configure.in:719: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRCPY]) +m4trace:configure.in:719: -1- AH_OUTPUT([HAVE_DECL_STRCPY], [/* Define to 1 if you have the declaration of `strcpy\', and to 0 if you don\'t. */ #undef HAVE_DECL_STRCPY]) -m4trace:configure.in:721: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRCPY]) -m4trace:configure.in:721: -1- m4_pattern_allow([^HAVE_DECL_STRCPY$]) -m4trace:configure.in:722: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRSIGNAL]) -m4trace:configure.in:722: -1- m4_pattern_allow([^HAVE_DECL_STRSIGNAL$]) -m4trace:configure.in:722: -1- AH_OUTPUT([HAVE_DECL_STRSIGNAL], [/* Define to 1 if you have the declaration of `strsignal\', and to 0 if you +m4trace:configure.in:719: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRCPY]) +m4trace:configure.in:720: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRSIGNAL]) +m4trace:configure.in:720: -1- AH_OUTPUT([HAVE_DECL_STRSIGNAL], [/* Define to 1 if you have the declaration of `strsignal\', and to 0 if you don\'t. */ #undef HAVE_DECL_STRSIGNAL]) -m4trace:configure.in:722: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRSIGNAL]) -m4trace:configure.in:722: -1- m4_pattern_allow([^HAVE_DECL_STRSIGNAL$]) -m4trace:configure.in:739: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRTOLD]) -m4trace:configure.in:739: -1- m4_pattern_allow([^HAVE_DECL_STRTOLD$]) -m4trace:configure.in:739: -1- AH_OUTPUT([HAVE_DECL_STRTOLD], [/* Define to 1 if you have the declaration of `strtold\', and to 0 if you +m4trace:configure.in:720: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRSIGNAL]) +m4trace:configure.in:737: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRTOLD]) +m4trace:configure.in:737: -1- AH_OUTPUT([HAVE_DECL_STRTOLD], [/* Define to 1 if you have the declaration of `strtold\', and to 0 if you don\'t. */ #undef HAVE_DECL_STRTOLD]) -m4trace:configure.in:739: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2384: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:2554: AC_CHECK_DECL is expanded from... -autoconf/general.m4:2574: AC_CHECK_DECLS is expanded from... -configure.in:739: the top level]) -m4trace:configure.in:739: -1- AC_DEFINE_TRACE_LITERAL([STRTOLD_BROKEN]) -m4trace:configure.in:739: -1- m4_pattern_allow([^STRTOLD_BROKEN$]) -m4trace:configure.in:739: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRTOLD]) -m4trace:configure.in:739: -1- m4_pattern_allow([^HAVE_DECL_STRTOLD$]) +m4trace:configure.in:737: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:2352: AC_CHECK_DECL is expanded from... +autoconf/general.m4:2372: AC_CHECK_DECLS is expanded from... +configure.in:737: the top level]) +m4trace:configure.in:737: -1- AC_DEFINE_TRACE_LITERAL([STRTOLD_BROKEN]) +m4trace:configure.in:737: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRTOLD]) +m4trace:configure.in:740: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:122: BASH_CHECK_DECL is expanded from... +configure.in:740: the top level]) +m4trace:configure.in:741: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:122: BASH_CHECK_DECL is expanded from... +configure.in:741: the top level]) m4trace:configure.in:742: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1935: AC_CACHE_CHECK is expanded from... +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... aclocal.m4:122: BASH_CHECK_DECL is expanded from... configure.in:742: the top level]) m4trace:configure.in:743: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1935: AC_CACHE_CHECK is expanded from... +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... aclocal.m4:122: BASH_CHECK_DECL is expanded from... configure.in:743: the top level]) m4trace:configure.in:744: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1935: AC_CACHE_CHECK is expanded from... +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... aclocal.m4:122: BASH_CHECK_DECL is expanded from... configure.in:744: the top level]) m4trace:configure.in:745: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1935: AC_CACHE_CHECK is expanded from... +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... aclocal.m4:122: BASH_CHECK_DECL is expanded from... configure.in:745: the top level]) -m4trace:configure.in:746: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1935: AC_CACHE_CHECK is expanded from... -aclocal.m4:122: BASH_CHECK_DECL is expanded from... -configure.in:746: the top level]) -m4trace:configure.in:747: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1935: AC_CACHE_CHECK is expanded from... -aclocal.m4:122: BASH_CHECK_DECL is expanded from... -configure.in:747: the top level]) -m4trace:configure.in:749: -1- AC_FUNC_MKTIME -m4trace:configure.in:749: -1- AC_CHECK_HEADERS([stdlib.h sys/time.h unistd.h]) -m4trace:configure.in:749: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:747: -1- AC_FUNC_MKTIME +m4trace:configure.in:747: -1- AC_CHECK_HEADERS([stdlib.h sys/time.h unistd.h]) +m4trace:configure.in:747: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H]) -m4trace:configure.in:749: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:747: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H]) -m4trace:configure.in:749: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:747: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H]) -m4trace:configure.in:749: -1- AC_CHECK_FUNCS([alarm]) -m4trace:configure.in:749: -1- AH_OUTPUT([HAVE_ALARM], [/* Define to 1 if you have the `alarm\' function. */ +m4trace:configure.in:747: -1- AC_CHECK_FUNCS([alarm]) +m4trace:configure.in:747: -1- AH_OUTPUT([HAVE_ALARM], [/* Define to 1 if you have the `alarm\' function. */ #undef HAVE_ALARM]) -m4trace:configure.in:749: -1- AC_LIBSOURCE([mktime.c]) -m4trace:configure.in:749: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS mktime.$ac_objext"]) -m4trace:configure.in:749: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) -m4trace:configure.in:749: -1- m4_pattern_allow([^LIB@&t@OBJS$]) -m4trace:configure.in:756: -1- AC_CHECK_HEADERS([argz.h errno.h fcntl.h malloc.h stdio_ext.h]) -m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_ARGZ_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:747: -1- AC_LIBSOURCE([mktime.c]) +m4trace:configure.in:747: -1- AC_SUBST([LIB@&t@OBJS]) +m4trace:configure.in:754: -1- AC_CHECK_HEADERS([argz.h errno.h fcntl.h malloc.h stdio_ext.h]) +m4trace:configure.in:754: -1- AH_OUTPUT([HAVE_ARGZ_H], [/* Define to 1 if you have the header file. */ #undef HAVE_ARGZ_H]) -m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_ERRNO_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:754: -1- AH_OUTPUT([HAVE_ERRNO_H], [/* Define to 1 if you have the header file. */ #undef HAVE_ERRNO_H]) -m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:754: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H]) -m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:754: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the header file. */ #undef HAVE_MALLOC_H]) -m4trace:configure.in:756: -1- AH_OUTPUT([HAVE_STDIO_EXT_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:754: -1- AH_OUTPUT([HAVE_STDIO_EXT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDIO_EXT_H]) -m4trace:configure.in:759: -1- AC_FUNC_MMAP -m4trace:configure.in:759: -1- AC_CHECK_HEADERS([stdlib.h unistd.h]) -m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:757: -1- AC_FUNC_MMAP +m4trace:configure.in:757: -1- AC_CHECK_HEADERS([stdlib.h unistd.h]) +m4trace:configure.in:757: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H]) -m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:757: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H]) -m4trace:configure.in:759: -1- AC_CHECK_FUNCS([getpagesize]) -m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */ +m4trace:configure.in:757: -1- AC_CHECK_FUNCS([getpagesize]) +m4trace:configure.in:757: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */ #undef HAVE_GETPAGESIZE]) -m4trace:configure.in:759: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP]) -m4trace:configure.in:759: -1- m4_pattern_allow([^HAVE_MMAP$]) -m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have a working `mmap\' system call. */ +m4trace:configure.in:757: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP]) +m4trace:configure.in:757: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have a working `mmap\' system call. */ #undef HAVE_MMAP]) -m4trace:configure.in:761: -1- AC_CHECK_FUNCS([__argz_count __argz_next __argz_stringify dcgettext mempcpy \ +m4trace:configure.in:759: -1- AC_CHECK_FUNCS([__argz_count __argz_next __argz_stringify dcgettext mempcpy \ munmap stpcpy strcspn strdup]) -m4trace:configure.in:761: -1- AH_OUTPUT([HAVE___ARGZ_COUNT], [/* Define to 1 if you have the `__argz_count\' function. */ +m4trace:configure.in:759: -1- AH_OUTPUT([HAVE___ARGZ_COUNT], [/* Define to 1 if you have the `__argz_count\' function. */ #undef HAVE___ARGZ_COUNT]) -m4trace:configure.in:761: -1- AH_OUTPUT([HAVE___ARGZ_NEXT], [/* Define to 1 if you have the `__argz_next\' function. */ +m4trace:configure.in:759: -1- AH_OUTPUT([HAVE___ARGZ_NEXT], [/* Define to 1 if you have the `__argz_next\' function. */ #undef HAVE___ARGZ_NEXT]) -m4trace:configure.in:761: -1- AH_OUTPUT([HAVE___ARGZ_STRINGIFY], [/* Define to 1 if you have the `__argz_stringify\' function. */ +m4trace:configure.in:759: -1- AH_OUTPUT([HAVE___ARGZ_STRINGIFY], [/* Define to 1 if you have the `__argz_stringify\' function. */ #undef HAVE___ARGZ_STRINGIFY]) -m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define to 1 if you have the `dcgettext\' function. */ +m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define to 1 if you have the `dcgettext\' function. */ #undef HAVE_DCGETTEXT]) -m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the `mempcpy\' function. */ +m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the `mempcpy\' function. */ #undef HAVE_MEMPCPY]) -m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_MUNMAP], [/* Define to 1 if you have the `munmap\' function. */ +m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_MUNMAP], [/* Define to 1 if you have the `munmap\' function. */ #undef HAVE_MUNMAP]) -m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the `stpcpy\' function. */ +m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the `stpcpy\' function. */ #undef HAVE_STPCPY]) -m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_STRCSPN], [/* Define to 1 if you have the `strcspn\' function. */ +m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_STRCSPN], [/* Define to 1 if you have the `strcspn\' function. */ #undef HAVE_STRCSPN]) -m4trace:configure.in:761: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the `strdup\' function. */ +m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the `strdup\' function. */ #undef HAVE_STRDUP]) -m4trace:configure.in:769: -1- AC_SUBST([INTL_DEP]) -m4trace:configure.in:769: -1- AC_SUBST_TRACE([INTL_DEP]) -m4trace:configure.in:769: -1- m4_pattern_allow([^INTL_DEP$]) -m4trace:configure.in:770: -1- AC_SUBST([INTL_INC]) -m4trace:configure.in:770: -1- AC_SUBST_TRACE([INTL_INC]) -m4trace:configure.in:770: -1- m4_pattern_allow([^INTL_INC$]) -m4trace:configure.in:771: -1- AC_SUBST([LIBINTL_H]) -m4trace:configure.in:771: -1- AC_SUBST_TRACE([LIBINTL_H]) -m4trace:configure.in:771: -1- m4_pattern_allow([^LIBINTL_H$]) -m4trace:configure.in:777: -1- AC_CHECK_HEADERS([wctype.h]) -m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_WCTYPE_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:767: -1- AC_SUBST([INTL_DEP]) +m4trace:configure.in:768: -1- AC_SUBST([INTL_INC]) +m4trace:configure.in:769: -1- AC_SUBST([LIBINTL_H]) +m4trace:configure.in:775: -1- AC_CHECK_HEADERS([wctype.h]) +m4trace:configure.in:775: -1- AH_OUTPUT([HAVE_WCTYPE_H], [/* Define to 1 if you have the header file. */ #undef HAVE_WCTYPE_H]) -m4trace:configure.in:777: -1- AC_CHECK_HEADERS([wchar.h]) -m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_WCHAR_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:775: -1- AC_CHECK_HEADERS([wchar.h]) +m4trace:configure.in:775: -1- AH_OUTPUT([HAVE_WCHAR_H], [/* Define to 1 if you have the header file. */ #undef HAVE_WCHAR_H]) -m4trace:configure.in:777: -1- AC_CHECK_HEADERS([langinfo.h]) -m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_LANGINFO_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.in:775: -1- AC_CHECK_HEADERS([langinfo.h]) +m4trace:configure.in:775: -1- AH_OUTPUT([HAVE_LANGINFO_H], [/* Define to 1 if you have the header file. */ #undef HAVE_LANGINFO_H]) -m4trace:configure.in:777: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBSRTOWCS]) -m4trace:configure.in:777: -2- m4_pattern_allow([^HAVE_MBSRTOWCS$]) -m4trace:configure.in:777: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBRLEN]) -m4trace:configure.in:777: -2- m4_pattern_allow([^HAVE_MBRLEN$]) -m4trace:configure.in:777: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCRTOMB]) -m4trace:configure.in:777: -2- m4_pattern_allow([^HAVE_WCRTOMB$]) -m4trace:configure.in:777: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCSCOLL]) -m4trace:configure.in:777: -2- m4_pattern_allow([^HAVE_WCSCOLL$]) -m4trace:configure.in:777: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCSDUP]) -m4trace:configure.in:777: -2- m4_pattern_allow([^HAVE_WCSDUP$]) -m4trace:configure.in:777: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCWIDTH]) -m4trace:configure.in:777: -2- m4_pattern_allow([^HAVE_WCWIDTH$]) -m4trace:configure.in:777: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCTYPE]) -m4trace:configure.in:777: -2- m4_pattern_allow([^HAVE_WCTYPE$]) -m4trace:configure.in:777: -1- AC_FUNC_MBRTOWC -m4trace:configure.in:777: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MBRTOWC]) -m4trace:configure.in:777: -1- m4_pattern_allow([^HAVE_MBRTOWC$]) -m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_MBRTOWC], [/* Define to 1 if mbrtowc and mbstate_t are properly declared. */ -#undef HAVE_MBRTOWC]) -m4trace:configure.in:777: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MBSTATE_T]) -m4trace:configure.in:777: -1- m4_pattern_allow([^HAVE_MBSTATE_T$]) -m4trace:configure.in:777: -1- AC_CHECK_FUNCS([iswlower iswupper towlower towupper iswctype]) -m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_ISWLOWER], [/* Define to 1 if you have the `iswlower\' function. */ -#undef HAVE_ISWLOWER]) -m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_ISWUPPER], [/* Define to 1 if you have the `iswupper\' function. */ -#undef HAVE_ISWUPPER]) -m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_TOWLOWER], [/* Define to 1 if you have the `towlower\' function. */ -#undef HAVE_TOWLOWER]) -m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_TOWUPPER], [/* Define to 1 if you have the `towupper\' function. */ -#undef HAVE_TOWUPPER]) -m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_ISWCTYPE], [/* Define to 1 if you have the `iswctype\' function. */ -#undef HAVE_ISWCTYPE]) -m4trace:configure.in:777: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1935: AC_CACHE_CHECK is expanded from... -aclocal.m4:1743: BASH_CHECK_MULTIBYTE is expanded from... -configure.in:777: the top level]) -m4trace:configure.in:777: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_CODESET]) -m4trace:configure.in:777: -1- m4_pattern_allow([^HAVE_LANGINFO_CODESET$]) -m4trace:configure.in:777: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2384: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1935: AC_CACHE_CHECK is expanded from... -aclocal.m4:1743: BASH_CHECK_MULTIBYTE is expanded from... -configure.in:777: the top level]) -m4trace:configure.in:777: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCHAR_T]) -m4trace:configure.in:777: -1- m4_pattern_allow([^HAVE_WCHAR_T$]) -m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_WCHAR_T], [/* systems should define this type here */ -#undef HAVE_WCHAR_T]) -m4trace:configure.in:777: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2384: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1935: AC_CACHE_CHECK is expanded from... -aclocal.m4:1743: BASH_CHECK_MULTIBYTE is expanded from... -configure.in:777: the top level]) -m4trace:configure.in:777: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCTYPE_T]) -m4trace:configure.in:777: -1- m4_pattern_allow([^HAVE_WCTYPE_T$]) -m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_WCTYPE_T], [/* systems should define this type here */ -#undef HAVE_WCTYPE_T]) -m4trace:configure.in:777: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2384: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1935: AC_CACHE_CHECK is expanded from... -aclocal.m4:1743: BASH_CHECK_MULTIBYTE is expanded from... -configure.in:777: the top level]) -m4trace:configure.in:777: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WINT_T]) -m4trace:configure.in:777: -1- m4_pattern_allow([^HAVE_WINT_T$]) -m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_WINT_T], [/* systems should define this type here */ -#undef HAVE_WINT_T]) -m4trace:configure.in:781: -1- AC_CHECK_LIB([dl], [dlopen]) -m4trace:configure.in:781: -1- AH_OUTPUT([HAVE_LIBDL], [/* Define to 1 if you have the `dl\' library (-ldl). */ +m4trace:configure.in:775: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBSRTOWCS]) +m4trace:configure.in:775: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBRTOWC]) +m4trace:configure.in:775: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBRLEN]) +m4trace:configure.in:775: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCTOMB]) +m4trace:configure.in:775: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCWIDTH]) +m4trace:configure.in:775: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCSDUP]) +m4trace:configure.in:775: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCTYPE]) +m4trace:configure.in:775: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:1706: BASH_CHECK_MULTIBYTE is expanded from... +configure.in:775: the top level]) +m4trace:configure.in:775: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MBSTATE_T]) +m4trace:configure.in:775: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:1706: BASH_CHECK_MULTIBYTE is expanded from... +configure.in:775: the top level]) +m4trace:configure.in:775: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_CODESET]) +m4trace:configure.in:779: -1- AC_CHECK_LIB([dl], [dlopen]) +m4trace:configure.in:779: -1- AH_OUTPUT([HAVE_LIBDL], [/* Define to 1 if you have the `dl\' library (-ldl). */ #undef HAVE_LIBDL]) -m4trace:configure.in:781: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBDL]) -m4trace:configure.in:781: -1- m4_pattern_allow([^HAVE_LIBDL$]) -m4trace:configure.in:782: -1- AC_CHECK_FUNCS([dlopen dlclose dlsym]) -m4trace:configure.in:782: -1- AH_OUTPUT([HAVE_DLOPEN], [/* Define to 1 if you have the `dlopen\' function. */ +m4trace:configure.in:779: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBDL]) +m4trace:configure.in:780: -1- AC_CHECK_FUNCS([dlopen dlclose dlsym]) +m4trace:configure.in:780: -1- AH_OUTPUT([HAVE_DLOPEN], [/* Define to 1 if you have the `dlopen\' function. */ #undef HAVE_DLOPEN]) -m4trace:configure.in:782: -1- AH_OUTPUT([HAVE_DLCLOSE], [/* Define to 1 if you have the `dlclose\' function. */ +m4trace:configure.in:780: -1- AH_OUTPUT([HAVE_DLCLOSE], [/* Define to 1 if you have the `dlclose\' function. */ #undef HAVE_DLCLOSE]) -m4trace:configure.in:782: -1- AH_OUTPUT([HAVE_DLSYM], [/* Define to 1 if you have the `dlsym\' function. */ +m4trace:configure.in:780: -1- AH_OUTPUT([HAVE_DLSYM], [/* Define to 1 if you have the `dlsym\' function. */ #undef HAVE_DLSYM]) -m4trace:configure.in:786: -1- AC_DECL_SYS_SIGLIST -m4trace:configure.in:786: -1- _m4_warn([obsolete], [The macro `AC_DECL_SYS_SIGLIST' is obsolete. +m4trace:configure.in:784: -1- AC_DECL_SYS_SIGLIST +m4trace:configure.in:784: -1- _m4_warn([obsolete], [The macro `AC_DECL_SYS_SIGLIST' is obsolete. You should run autoupdate.], [autoconf/specific.m4:70: AC_DECL_SYS_SIGLIST is expanded from... -configure.in:786: the top level]) -m4trace:configure.in:786: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SYS_SIGLIST]) -m4trace:configure.in:786: -1- m4_pattern_allow([^HAVE_DECL_SYS_SIGLIST$]) -m4trace:configure.in:786: -1- AH_OUTPUT([HAVE_DECL_SYS_SIGLIST], [/* Define to 1 if you have the declaration of `sys_siglist\', and to 0 if you +configure.in:784: the top level]) +m4trace:configure.in:784: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SYS_SIGLIST]) +m4trace:configure.in:784: -1- AH_OUTPUT([HAVE_DECL_SYS_SIGLIST], [/* Define to 1 if you have the declaration of `sys_siglist\', and to 0 if you don\'t. */ #undef HAVE_DECL_SYS_SIGLIST]) -m4trace:configure.in:786: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SYS_SIGLIST]) -m4trace:configure.in:786: -1- m4_pattern_allow([^HAVE_DECL_SYS_SIGLIST$]) -m4trace:configure.in:790: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1935: AC_CACHE_CHECK is expanded from... +m4trace:configure.in:784: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SYS_SIGLIST]) +m4trace:configure.in:788: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... aclocal.m4:562: BASH_FUNC_INET_ATON is expanded from... -configure.in:790: the top level]) -m4trace:configure.in:790: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INET_ATON]) -m4trace:configure.in:790: -1- m4_pattern_allow([^HAVE_INET_ATON$]) -m4trace:configure.in:790: -1- AC_LIBSOURCE([inet_aton.c]) -m4trace:configure.in:790: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS inet_aton.$ac_objext"]) -m4trace:configure.in:790: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) -m4trace:configure.in:790: -1- m4_pattern_allow([^LIB@&t@OBJS$]) -m4trace:configure.in:796: -1- AC_CHECK_LIB([sun], [getpwent]) -m4trace:configure.in:796: -1- AH_OUTPUT([HAVE_LIBSUN], [/* Define to 1 if you have the `sun\' library (-lsun). */ +configure.in:788: the top level]) +m4trace:configure.in:788: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INET_ATON]) +m4trace:configure.in:788: -1- AC_LIBSOURCE([inet_aton.c]) +m4trace:configure.in:788: -1- AC_SUBST([LIB@&t@OBJS]) +m4trace:configure.in:794: -1- AC_CHECK_LIB([sun], [getpwent]) +m4trace:configure.in:794: -1- AH_OUTPUT([HAVE_LIBSUN], [/* Define to 1 if you have the `sun\' library (-lsun). */ #undef HAVE_LIBSUN]) -m4trace:configure.in:796: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSUN]) -m4trace:configure.in:796: -1- m4_pattern_allow([^HAVE_LIBSUN$]) -m4trace:configure.in:801: -1- AC_CHECK_LIB([socket], [getpeername], [bash_cv_have_socklib=yes], [bash_cv_have_socklib=no], [-lnsl]) -m4trace:configure.in:801: -1- AC_CHECK_LIB([nsl], [t_open], [bash_cv_have_libnsl=yes], [bash_cv_have_libnsl=no]) -m4trace:configure.in:801: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSOCKET]) -m4trace:configure.in:801: -1- m4_pattern_allow([^HAVE_LIBSOCKET$]) -m4trace:configure.in:801: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPEERNAME]) -m4trace:configure.in:801: -1- m4_pattern_allow([^HAVE_GETPEERNAME$]) -m4trace:configure.in:805: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... +m4trace:configure.in:794: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSUN]) +m4trace:configure.in:799: -1- AC_CHECK_LIB([socket], [getpeername], [bash_cv_have_socklib=yes], [bash_cv_have_socklib=no], [-lnsl]) +m4trace:configure.in:799: -1- AC_CHECK_LIB([nsl], [t_open], [bash_cv_have_libnsl=yes], [bash_cv_have_libnsl=no]) +m4trace:configure.in:799: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSOCKET]) +m4trace:configure.in:799: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPEERNAME]) +m4trace:configure.in:803: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:737: BASH_FUNC_GETHOSTBYNAME is expanded from... -configure.in:805: the top level]) -m4trace:configure.in:805: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETHOSTBYNAME]) -m4trace:configure.in:805: -1- m4_pattern_allow([^HAVE_GETHOSTBYNAME$]) -m4trace:configure.in:809: -1- AC_TYPE_UID_T -m4trace:configure.in:809: -1- AC_DEFINE_TRACE_LITERAL([uid_t]) -m4trace:configure.in:809: -1- m4_pattern_allow([^uid_t$]) -m4trace:configure.in:809: -1- AH_OUTPUT([uid_t], [/* Define to `int\' if doesn\'t define. */ +configure.in:803: the top level]) +m4trace:configure.in:803: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETHOSTBYNAME]) +m4trace:configure.in:807: -1- AC_TYPE_UID_T +m4trace:configure.in:807: -1- AC_DEFINE_TRACE_LITERAL([uid_t]) +m4trace:configure.in:807: -1- AH_OUTPUT([uid_t], [/* Define to `int\' if doesn\'t define. */ #undef uid_t]) -m4trace:configure.in:809: -1- AC_DEFINE_TRACE_LITERAL([gid_t]) -m4trace:configure.in:809: -1- m4_pattern_allow([^gid_t$]) -m4trace:configure.in:809: -1- AH_OUTPUT([gid_t], [/* Define to `int\' if doesn\'t define. */ +m4trace:configure.in:807: -1- AC_DEFINE_TRACE_LITERAL([gid_t]) +m4trace:configure.in:807: -1- AH_OUTPUT([gid_t], [/* Define to `int\' if doesn\'t define. */ #undef gid_t]) -m4trace:configure.in:809: -1- AC_DEFINE_TRACE_LITERAL([GETGROUPS_T]) -m4trace:configure.in:809: -1- m4_pattern_allow([^GETGROUPS_T$]) -m4trace:configure.in:809: -1- AH_OUTPUT([GETGROUPS_T], [/* Define to the type of elements in the array set by `getgroups\'. Usually +m4trace:configure.in:807: -1- AC_DEFINE_TRACE_LITERAL([GETGROUPS_T]) +m4trace:configure.in:807: -1- AH_OUTPUT([GETGROUPS_T], [/* Define to the type of elements in the array set by `getgroups\'. Usually this is either `int\' or `gid_t\'. */ #undef GETGROUPS_T]) -m4trace:configure.in:810: -1- AC_TYPE_OFF_T -m4trace:configure.in:810: -1- AC_DEFINE_TRACE_LITERAL([off_t]) -m4trace:configure.in:810: -1- m4_pattern_allow([^off_t$]) -m4trace:configure.in:810: -1- AH_OUTPUT([off_t], [/* Define to `long int\' if does not define. */ +m4trace:configure.in:808: -1- AC_TYPE_OFF_T +m4trace:configure.in:808: -1- AC_DEFINE_TRACE_LITERAL([off_t]) +m4trace:configure.in:808: -1- AH_OUTPUT([off_t], [/* Define to `long\' if does not define. */ #undef off_t]) -m4trace:configure.in:811: -1- AC_TYPE_MODE_T -m4trace:configure.in:811: -1- AC_DEFINE_TRACE_LITERAL([mode_t]) -m4trace:configure.in:811: -1- m4_pattern_allow([^mode_t$]) -m4trace:configure.in:811: -1- AH_OUTPUT([mode_t], [/* Define to `int\' if does not define. */ +m4trace:configure.in:809: -1- AC_TYPE_MODE_T +m4trace:configure.in:809: -1- AC_DEFINE_TRACE_LITERAL([mode_t]) +m4trace:configure.in:809: -1- AH_OUTPUT([mode_t], [/* Define to `int\' if does not define. */ #undef mode_t]) -m4trace:configure.in:812: -1- AC_TYPE_UID_T -m4trace:configure.in:812: -1- AC_DEFINE_TRACE_LITERAL([uid_t]) -m4trace:configure.in:812: -1- m4_pattern_allow([^uid_t$]) -m4trace:configure.in:812: -1- AH_OUTPUT([uid_t], [/* Define to `int\' if doesn\'t define. */ +m4trace:configure.in:810: -1- AC_TYPE_UID_T +m4trace:configure.in:810: -1- AC_DEFINE_TRACE_LITERAL([uid_t]) +m4trace:configure.in:810: -1- AH_OUTPUT([uid_t], [/* Define to `int\' if doesn\'t define. */ #undef uid_t]) -m4trace:configure.in:812: -1- AC_DEFINE_TRACE_LITERAL([gid_t]) -m4trace:configure.in:812: -1- m4_pattern_allow([^gid_t$]) -m4trace:configure.in:812: -1- AH_OUTPUT([gid_t], [/* Define to `int\' if doesn\'t define. */ +m4trace:configure.in:810: -1- AC_DEFINE_TRACE_LITERAL([gid_t]) +m4trace:configure.in:810: -1- AH_OUTPUT([gid_t], [/* Define to `int\' if doesn\'t define. */ #undef gid_t]) -m4trace:configure.in:813: -1- AC_TYPE_PID_T -m4trace:configure.in:813: -1- AC_DEFINE_TRACE_LITERAL([pid_t]) -m4trace:configure.in:813: -1- m4_pattern_allow([^pid_t$]) -m4trace:configure.in:813: -1- AH_OUTPUT([pid_t], [/* Define to `int\' if does not define. */ +m4trace:configure.in:811: -1- AC_TYPE_PID_T +m4trace:configure.in:811: -1- AC_DEFINE_TRACE_LITERAL([pid_t]) +m4trace:configure.in:811: -1- AH_OUTPUT([pid_t], [/* Define to `int\' if does not define. */ #undef pid_t]) -m4trace:configure.in:814: -1- AC_TYPE_SIZE_T -m4trace:configure.in:814: -1- AC_DEFINE_TRACE_LITERAL([size_t]) -m4trace:configure.in:814: -1- m4_pattern_allow([^size_t$]) -m4trace:configure.in:814: -1- AH_OUTPUT([size_t], [/* Define to `unsigned int\' if does not define. */ +m4trace:configure.in:812: -1- AC_TYPE_SIZE_T +m4trace:configure.in:812: -1- AC_DEFINE_TRACE_LITERAL([size_t]) +m4trace:configure.in:812: -1- AH_OUTPUT([size_t], [/* Define to `unsigned\' if does not define. */ #undef size_t]) -m4trace:configure.in:815: -1- AC_DEFINE_TRACE_LITERAL([ssize_t]) -m4trace:configure.in:815: -1- m4_pattern_allow([^ssize_t$]) -m4trace:configure.in:815: -1- AH_OUTPUT([ssize_t], [/* Define to `int\' if does not define. */ +m4trace:configure.in:813: -1- AC_DEFINE_TRACE_LITERAL([ssize_t]) +m4trace:configure.in:813: -1- AH_OUTPUT([ssize_t], [/* Define to `int\' if does not define. */ #undef ssize_t]) -m4trace:configure.in:816: -1- AC_DEFINE_TRACE_LITERAL([time_t]) -m4trace:configure.in:816: -1- m4_pattern_allow([^time_t$]) -m4trace:configure.in:816: -1- AH_OUTPUT([time_t], [/* Define to `long\' if does not define. */ +m4trace:configure.in:814: -1- AC_DEFINE_TRACE_LITERAL([time_t]) +m4trace:configure.in:814: -1- AH_OUTPUT([time_t], [/* Define to `long\' if does not define. */ #undef time_t]) -m4trace:configure.in:818: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1935: AC_CACHE_CHECK is expanded from... +m4trace:configure.in:816: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... aclocal.m4:481: BASH_TYPE_LONG_LONG is expanded from... -configure.in:818: the top level]) -m4trace:configure.in:818: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_LONG]) -m4trace:configure.in:818: -1- m4_pattern_allow([^HAVE_LONG_LONG$]) -m4trace:configure.in:819: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1935: AC_CACHE_CHECK is expanded from... +configure.in:816: the top level]) +m4trace:configure.in:816: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_LONG]) +m4trace:configure.in:817: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... aclocal.m4:496: BASH_TYPE_UNSIGNED_LONG_LONG is expanded from... -configure.in:819: the top level]) -m4trace:configure.in:819: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG]) -m4trace:configure.in:819: -1- m4_pattern_allow([^HAVE_UNSIGNED_LONG_LONG$]) -m4trace:configure.in:821: -1- AC_TYPE_SIGNAL -m4trace:configure.in:821: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE]) -m4trace:configure.in:821: -1- m4_pattern_allow([^RETSIGTYPE$]) -m4trace:configure.in:821: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (`int\' or `void\'). */ +configure.in:817: the top level]) +m4trace:configure.in:817: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG]) +m4trace:configure.in:819: -1- AC_TYPE_SIGNAL +m4trace:configure.in:819: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE]) +m4trace:configure.in:819: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (`int\' or `void\'). */ #undef RETSIGTYPE]) -m4trace:configure.in:823: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_CHAR]) -m4trace:configure.in:823: -1- m4_pattern_allow([^SIZEOF_CHAR$]) -m4trace:configure.in:823: -1- AH_OUTPUT([SIZEOF_CHAR], [/* The size of `char\', as computed by sizeof. */ +m4trace:configure.in:821: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +autoconf/types.m4:405: AC_CHECK_SIZEOF is expanded from... +configure.in:821: the top level]) +m4trace:configure.in:821: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_CHAR]) +m4trace:configure.in:821: -1- AH_OUTPUT([SIZEOF_CHAR], [/* The size of a `char\', as computed by sizeof. */ #undef SIZEOF_CHAR]) -m4trace:configure.in:824: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_SHORT]) -m4trace:configure.in:824: -1- m4_pattern_allow([^SIZEOF_SHORT$]) -m4trace:configure.in:824: -1- AH_OUTPUT([SIZEOF_SHORT], [/* The size of `short\', as computed by sizeof. */ +m4trace:configure.in:822: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +autoconf/types.m4:405: AC_CHECK_SIZEOF is expanded from... +configure.in:822: the top level]) +m4trace:configure.in:822: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_SHORT]) +m4trace:configure.in:822: -1- AH_OUTPUT([SIZEOF_SHORT], [/* The size of a `short\', as computed by sizeof. */ #undef SIZEOF_SHORT]) -m4trace:configure.in:825: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_INT]) -m4trace:configure.in:825: -1- m4_pattern_allow([^SIZEOF_INT$]) -m4trace:configure.in:825: -1- AH_OUTPUT([SIZEOF_INT], [/* The size of `int\', as computed by sizeof. */ +m4trace:configure.in:823: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +autoconf/types.m4:405: AC_CHECK_SIZEOF is expanded from... +configure.in:823: the top level]) +m4trace:configure.in:823: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_INT]) +m4trace:configure.in:823: -1- AH_OUTPUT([SIZEOF_INT], [/* The size of a `int\', as computed by sizeof. */ #undef SIZEOF_INT]) -m4trace:configure.in:826: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG]) -m4trace:configure.in:826: -1- m4_pattern_allow([^SIZEOF_LONG$]) -m4trace:configure.in:826: -1- AH_OUTPUT([SIZEOF_LONG], [/* The size of `long\', as computed by sizeof. */ +m4trace:configure.in:824: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +autoconf/types.m4:405: AC_CHECK_SIZEOF is expanded from... +configure.in:824: the top level]) +m4trace:configure.in:824: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG]) +m4trace:configure.in:824: -1- AH_OUTPUT([SIZEOF_LONG], [/* The size of a `long\', as computed by sizeof. */ #undef SIZEOF_LONG]) -m4trace:configure.in:827: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_CHAR_P]) -m4trace:configure.in:827: -1- m4_pattern_allow([^SIZEOF_CHAR_P$]) -m4trace:configure.in:827: -1- AH_OUTPUT([SIZEOF_CHAR_P], [/* The size of `char *\', as computed by sizeof. */ +m4trace:configure.in:825: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +autoconf/types.m4:405: AC_CHECK_SIZEOF is expanded from... +configure.in:825: the top level]) +m4trace:configure.in:825: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_CHAR_P]) +m4trace:configure.in:825: -1- AH_OUTPUT([SIZEOF_CHAR_P], [/* The size of a `char *\', as computed by sizeof. */ #undef SIZEOF_CHAR_P]) -m4trace:configure.in:828: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_DOUBLE]) -m4trace:configure.in:828: -1- m4_pattern_allow([^SIZEOF_DOUBLE$]) -m4trace:configure.in:828: -1- AH_OUTPUT([SIZEOF_DOUBLE], [/* The size of `double\', as computed by sizeof. */ +m4trace:configure.in:826: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +autoconf/types.m4:405: AC_CHECK_SIZEOF is expanded from... +configure.in:826: the top level]) +m4trace:configure.in:826: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_DOUBLE]) +m4trace:configure.in:826: -1- AH_OUTPUT([SIZEOF_DOUBLE], [/* The size of a `double\', as computed by sizeof. */ #undef SIZEOF_DOUBLE]) -m4trace:configure.in:829: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG_LONG]) -m4trace:configure.in:829: -1- m4_pattern_allow([^SIZEOF_LONG_LONG$]) -m4trace:configure.in:829: -1- AH_OUTPUT([SIZEOF_LONG_LONG], [/* The size of `long long\', as computed by sizeof. */ +m4trace:configure.in:827: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +autoconf/types.m4:405: AC_CHECK_SIZEOF is expanded from... +configure.in:827: the top level]) +m4trace:configure.in:827: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG_LONG]) +m4trace:configure.in:827: -1- AH_OUTPUT([SIZEOF_LONG_LONG], [/* The size of a `long long\', as computed by sizeof. */ #undef SIZEOF_LONG_LONG]) -m4trace:configure.in:831: -1- AC_DEFINE_TRACE_LITERAL([u_int]) -m4trace:configure.in:831: -1- m4_pattern_allow([^u_int$]) -m4trace:configure.in:831: -1- AH_OUTPUT([u_int], [/* Define to `unsigned int\' if does not define. */ +m4trace:configure.in:829: -1- AC_DEFINE_TRACE_LITERAL([u_int]) +m4trace:configure.in:829: -1- AH_OUTPUT([u_int], [/* Define to `unsigned int\' if does not define. */ #undef u_int]) -m4trace:configure.in:832: -1- AC_DEFINE_TRACE_LITERAL([u_long]) -m4trace:configure.in:832: -1- m4_pattern_allow([^u_long$]) -m4trace:configure.in:832: -1- AH_OUTPUT([u_long], [/* Define to `unsigned long\' if does not define. */ +m4trace:configure.in:830: -1- AC_DEFINE_TRACE_LITERAL([u_long]) +m4trace:configure.in:830: -1- AH_OUTPUT([u_long], [/* Define to `unsigned long\' if does not define. */ #undef u_long]) -m4trace:configure.in:834: -1- AC_DEFINE_TRACE_LITERAL([bits16_t]) -m4trace:configure.in:834: -1- m4_pattern_allow([^bits16_t$]) -m4trace:configure.in:834: -1- AH_OUTPUT([bits16_t], [/* Define to `short\' if does not define. */ +m4trace:configure.in:832: -1- AC_DEFINE_TRACE_LITERAL([bits16_t]) +m4trace:configure.in:832: -1- AH_OUTPUT([bits16_t], [/* Define to `short\' if does not define. */ #undef bits16_t]) -m4trace:configure.in:834: -1- AC_DEFINE_TRACE_LITERAL([bits16_t]) -m4trace:configure.in:834: -1- m4_pattern_allow([^bits16_t$]) -m4trace:configure.in:834: -1- AH_OUTPUT([bits16_t], [/* Define to `char\' if does not define. */ +m4trace:configure.in:832: -1- AC_DEFINE_TRACE_LITERAL([bits16_t]) +m4trace:configure.in:832: -1- AH_OUTPUT([bits16_t], [/* Define to `char\' if does not define. */ #undef bits16_t]) -m4trace:configure.in:834: -1- AC_DEFINE_TRACE_LITERAL([bits16_t]) -m4trace:configure.in:834: -1- m4_pattern_allow([^bits16_t$]) -m4trace:configure.in:834: -1- AH_OUTPUT([bits16_t], [/* Define to `short\' if does not define. */ +m4trace:configure.in:832: -1- AC_DEFINE_TRACE_LITERAL([bits16_t]) +m4trace:configure.in:832: -1- AH_OUTPUT([bits16_t], [/* Define to `short\' if does not define. */ #undef bits16_t]) -m4trace:configure.in:835: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t]) -m4trace:configure.in:835: -1- m4_pattern_allow([^u_bits16_t$]) -m4trace:configure.in:835: -1- AH_OUTPUT([u_bits16_t], [/* Define to `unsigned short\' if does not define. */ +m4trace:configure.in:833: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t]) +m4trace:configure.in:833: -1- AH_OUTPUT([u_bits16_t], [/* Define to `unsigned short\' if does not define. */ #undef u_bits16_t]) -m4trace:configure.in:835: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t]) -m4trace:configure.in:835: -1- m4_pattern_allow([^u_bits16_t$]) -m4trace:configure.in:835: -1- AH_OUTPUT([u_bits16_t], [/* Define to `unsigned char\' if does not define. */ +m4trace:configure.in:833: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t]) +m4trace:configure.in:833: -1- AH_OUTPUT([u_bits16_t], [/* Define to `unsigned char\' if does not define. */ #undef u_bits16_t]) -m4trace:configure.in:835: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t]) -m4trace:configure.in:835: -1- m4_pattern_allow([^u_bits16_t$]) -m4trace:configure.in:835: -1- AH_OUTPUT([u_bits16_t], [/* Define to `unsigned short\' if does not define. */ +m4trace:configure.in:833: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t]) +m4trace:configure.in:833: -1- AH_OUTPUT([u_bits16_t], [/* Define to `unsigned short\' if does not define. */ #undef u_bits16_t]) -m4trace:configure.in:836: -1- AC_DEFINE_TRACE_LITERAL([bits32_t]) -m4trace:configure.in:836: -1- m4_pattern_allow([^bits32_t$]) -m4trace:configure.in:836: -1- AH_OUTPUT([bits32_t], [/* Define to `int\' if does not define. */ +m4trace:configure.in:834: -1- AC_DEFINE_TRACE_LITERAL([bits32_t]) +m4trace:configure.in:834: -1- AH_OUTPUT([bits32_t], [/* Define to `int\' if does not define. */ #undef bits32_t]) -m4trace:configure.in:836: -1- AC_DEFINE_TRACE_LITERAL([bits32_t]) -m4trace:configure.in:836: -1- m4_pattern_allow([^bits32_t$]) -m4trace:configure.in:836: -1- AH_OUTPUT([bits32_t], [/* Define to `long\' if does not define. */ +m4trace:configure.in:834: -1- AC_DEFINE_TRACE_LITERAL([bits32_t]) +m4trace:configure.in:834: -1- AH_OUTPUT([bits32_t], [/* Define to `long\' if does not define. */ #undef bits32_t]) -m4trace:configure.in:836: -1- AC_DEFINE_TRACE_LITERAL([bits32_t]) -m4trace:configure.in:836: -1- m4_pattern_allow([^bits32_t$]) -m4trace:configure.in:836: -1- AH_OUTPUT([bits32_t], [/* Define to `int\' if does not define. */ +m4trace:configure.in:834: -1- AC_DEFINE_TRACE_LITERAL([bits32_t]) +m4trace:configure.in:834: -1- AH_OUTPUT([bits32_t], [/* Define to `int\' if does not define. */ #undef bits32_t]) -m4trace:configure.in:837: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t]) -m4trace:configure.in:837: -1- m4_pattern_allow([^u_bits32_t$]) -m4trace:configure.in:837: -1- AH_OUTPUT([u_bits32_t], [/* Define to `unsigned int\' if does not define. */ +m4trace:configure.in:835: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t]) +m4trace:configure.in:835: -1- AH_OUTPUT([u_bits32_t], [/* Define to `unsigned int\' if does not define. */ #undef u_bits32_t]) -m4trace:configure.in:837: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t]) -m4trace:configure.in:837: -1- m4_pattern_allow([^u_bits32_t$]) -m4trace:configure.in:837: -1- AH_OUTPUT([u_bits32_t], [/* Define to `unsigned long\' if does not define. */ +m4trace:configure.in:835: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t]) +m4trace:configure.in:835: -1- AH_OUTPUT([u_bits32_t], [/* Define to `unsigned long\' if does not define. */ #undef u_bits32_t]) -m4trace:configure.in:837: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t]) -m4trace:configure.in:837: -1- m4_pattern_allow([^u_bits32_t$]) -m4trace:configure.in:837: -1- AH_OUTPUT([u_bits32_t], [/* Define to `unsigned int\' if does not define. */ +m4trace:configure.in:835: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t]) +m4trace:configure.in:835: -1- AH_OUTPUT([u_bits32_t], [/* Define to `unsigned int\' if does not define. */ #undef u_bits32_t]) -m4trace:configure.in:838: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) -m4trace:configure.in:838: -1- m4_pattern_allow([^bits64_t$]) -m4trace:configure.in:838: -1- AH_OUTPUT([bits64_t], [/* Define to `char *\' if does not define. */ +m4trace:configure.in:836: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) +m4trace:configure.in:836: -1- AH_OUTPUT([bits64_t], [/* Define to `char *\' if does not define. */ #undef bits64_t]) -m4trace:configure.in:838: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) -m4trace:configure.in:838: -1- m4_pattern_allow([^bits64_t$]) -m4trace:configure.in:838: -1- AH_OUTPUT([bits64_t], [/* Define to `double\' if does not define. */ +m4trace:configure.in:836: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) +m4trace:configure.in:836: -1- AH_OUTPUT([bits64_t], [/* Define to `double\' if does not define. */ #undef bits64_t]) -m4trace:configure.in:838: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) -m4trace:configure.in:838: -1- m4_pattern_allow([^bits64_t$]) -m4trace:configure.in:838: -1- AH_OUTPUT([bits64_t], [/* Define to `long long\' if does not define. */ +m4trace:configure.in:836: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) +m4trace:configure.in:836: -1- AH_OUTPUT([bits64_t], [/* Define to `long long\' if does not define. */ #undef bits64_t]) -m4trace:configure.in:838: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) -m4trace:configure.in:838: -1- m4_pattern_allow([^bits64_t$]) -m4trace:configure.in:838: -1- AH_OUTPUT([bits64_t], [/* Define to `long\' if does not define. */ +m4trace:configure.in:836: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) +m4trace:configure.in:836: -1- AH_OUTPUT([bits64_t], [/* Define to `long\' if does not define. */ #undef bits64_t]) -m4trace:configure.in:838: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) -m4trace:configure.in:838: -1- m4_pattern_allow([^bits64_t$]) -m4trace:configure.in:838: -1- AH_OUTPUT([bits64_t], [/* Define to `double\' if does not define. */ +m4trace:configure.in:836: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) +m4trace:configure.in:836: -1- AH_OUTPUT([bits64_t], [/* Define to `double\' if does not define. */ #undef bits64_t]) -m4trace:configure.in:840: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t]) -m4trace:configure.in:840: -1- m4_pattern_allow([^ptrdiff_t$]) -m4trace:configure.in:840: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `int\' if does not define. */ +m4trace:configure.in:838: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t]) +m4trace:configure.in:838: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `int\' if does not define. */ #undef ptrdiff_t]) -m4trace:configure.in:840: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t]) -m4trace:configure.in:840: -1- m4_pattern_allow([^ptrdiff_t$]) -m4trace:configure.in:840: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `long\' if does not define. */ +m4trace:configure.in:838: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t]) +m4trace:configure.in:838: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `long\' if does not define. */ #undef ptrdiff_t]) -m4trace:configure.in:840: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t]) -m4trace:configure.in:840: -1- m4_pattern_allow([^ptrdiff_t$]) -m4trace:configure.in:840: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `long long\' if does not define. */ +m4trace:configure.in:838: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t]) +m4trace:configure.in:838: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `long long\' if does not define. */ #undef ptrdiff_t]) -m4trace:configure.in:840: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t]) -m4trace:configure.in:840: -1- m4_pattern_allow([^ptrdiff_t$]) -m4trace:configure.in:840: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `int\' if does not define. */ +m4trace:configure.in:838: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t]) +m4trace:configure.in:838: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `int\' if does not define. */ #undef ptrdiff_t]) -m4trace:configure.in:843: -1- AC_HEADER_STAT -m4trace:configure.in:843: -1- AC_DEFINE_TRACE_LITERAL([STAT_MACROS_BROKEN]) -m4trace:configure.in:843: -1- m4_pattern_allow([^STAT_MACROS_BROKEN$]) -m4trace:configure.in:843: -1- AH_OUTPUT([STAT_MACROS_BROKEN], [/* Define to 1 if the `S_IS*\' macros in do not work properly. */ +m4trace:configure.in:841: -1- AC_HEADER_STAT +m4trace:configure.in:841: -1- AC_DEFINE_TRACE_LITERAL([STAT_MACROS_BROKEN]) +m4trace:configure.in:841: -1- AH_OUTPUT([STAT_MACROS_BROKEN], [/* Define to 1 if the `S_IS*\' macros in do not work properly. */ #undef STAT_MACROS_BROKEN]) -m4trace:configure.in:848: -1- AC_DEFINE_TRACE_LITERAL([HAVE_HASH_BANG_EXEC]) -m4trace:configure.in:848: -1- m4_pattern_allow([^HAVE_HASH_BANG_EXEC$]) -m4trace:configure.in:853: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1935: AC_CACHE_CHECK is expanded from... +m4trace:configure.in:846: -1- AC_DEFINE_TRACE_LITERAL([HAVE_HASH_BANG_EXEC]) +m4trace:configure.in:851: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... aclocal.m4:546: BASH_FUNC_LSTAT is expanded from... -configure.in:853: the top level]) -m4trace:configure.in:853: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LSTAT]) -m4trace:configure.in:853: -1- m4_pattern_allow([^HAVE_LSTAT$]) -m4trace:configure.in:857: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2490: AC_TRY_RUN is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -aclocal.m4:1906: BASH_FUNC_CTYPE_NONASCII is expanded from... -configure.in:857: the top level]) -m4trace:configure.in:857: -1- AC_DEFINE_TRACE_LITERAL([CTYPE_NON_ASCII]) -m4trace:configure.in:857: -1- m4_pattern_allow([^CTYPE_NON_ASCII$]) -m4trace:configure.in:858: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2490: AC_TRY_RUN is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... +configure.in:851: the top level]) +m4trace:configure.in:851: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LSTAT]) +m4trace:configure.in:855: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:1869: BASH_FUNC_CTYPE_NONASCII is expanded from... +configure.in:855: the top level]) +m4trace:configure.in:855: -1- AC_DEFINE_TRACE_LITERAL([CTYPE_NON_ASCII]) +m4trace:configure.in:856: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:294: BASH_FUNC_DUP2_CLOEXEC_CHECK is expanded from... -configure.in:858: the top level]) -m4trace:configure.in:858: -1- AC_DEFINE_TRACE_LITERAL([DUP2_BROKEN]) -m4trace:configure.in:858: -1- m4_pattern_allow([^DUP2_BROKEN$]) -m4trace:configure.in:859: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2490: AC_TRY_RUN is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... +configure.in:856: the top level]) +m4trace:configure.in:856: -1- AC_DEFINE_TRACE_LITERAL([DUP2_BROKEN]) +m4trace:configure.in:857: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:1280: BASH_SYS_PGRP_SYNC is expanded from... -configure.in:859: the top level]) -m4trace:configure.in:859: -1- AC_DEFINE_TRACE_LITERAL([PGRP_PIPE]) -m4trace:configure.in:859: -1- m4_pattern_allow([^PGRP_PIPE$]) -m4trace:configure.in:860: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... +configure.in:857: the top level]) +m4trace:configure.in:857: -1- AC_DEFINE_TRACE_LITERAL([PGRP_PIPE]) +m4trace:configure.in:858: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:1217: BASH_SYS_SIGNAL_VINTAGE is expanded from... -configure.in:860: the top level]) -m4trace:configure.in:860: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:2418: AC_LINK_IFELSE is expanded from... -autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... +configure.in:858: the top level]) +m4trace:configure.in:858: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:2215: AC_LINK_IFELSE is expanded from... +autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:1217: BASH_SYS_SIGNAL_VINTAGE is expanded from... -configure.in:860: the top level]) -m4trace:configure.in:860: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:2418: AC_LINK_IFELSE is expanded from... -autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:2418: AC_LINK_IFELSE is expanded from... -autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... +configure.in:858: the top level]) +m4trace:configure.in:858: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:2215: AC_LINK_IFELSE is expanded from... +autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:2215: AC_LINK_IFELSE is expanded from... +autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:1217: BASH_SYS_SIGNAL_VINTAGE is expanded from... -configure.in:860: the top level]) -m4trace:configure.in:860: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SIGNALS]) -m4trace:configure.in:860: -1- m4_pattern_allow([^HAVE_POSIX_SIGNALS$]) -m4trace:configure.in:860: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BSD_SIGNALS]) -m4trace:configure.in:860: -1- m4_pattern_allow([^HAVE_BSD_SIGNALS$]) -m4trace:configure.in:860: -1- AC_DEFINE_TRACE_LITERAL([HAVE_USG_SIGHOLD]) -m4trace:configure.in:860: -1- m4_pattern_allow([^HAVE_USG_SIGHOLD$]) -m4trace:configure.in:863: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... +configure.in:858: the top level]) +m4trace:configure.in:858: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SIGNALS]) +m4trace:configure.in:858: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BSD_SIGNALS]) +m4trace:configure.in:858: -1- AC_DEFINE_TRACE_LITERAL([HAVE_USG_SIGHOLD]) +m4trace:configure.in:861: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:262: BASH_SYS_ERRLIST is expanded from... -configure.in:863: the top level]) -m4trace:configure.in:863: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_ERRLIST]) -m4trace:configure.in:863: -1- m4_pattern_allow([^HAVE_SYS_ERRLIST$]) -m4trace:configure.in:864: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2490: AC_TRY_RUN is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... +configure.in:861: the top level]) +m4trace:configure.in:861: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_ERRLIST]) +m4trace:configure.in:862: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:233: BASH_SYS_SIGLIST is expanded from... -configure.in:864: the top level]) -m4trace:configure.in:864: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_SIGLIST]) -m4trace:configure.in:864: -1- m4_pattern_allow([^HAVE_SYS_SIGLIST$]) -m4trace:configure.in:865: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2384: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... +configure.in:862: the top level]) +m4trace:configure.in:862: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_SIGLIST]) +m4trace:configure.in:863: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:179: BASH_DECL_UNDER_SYS_SIGLIST is expanded from... +configure.in:863: BASH_DECL_UNDER_SYS_SIGLIST is required by... aclocal.m4:206: BASH_UNDER_SYS_SIGLIST is expanded from... -configure.in:865: the top level]) -m4trace:configure.in:865: -1- AC_DEFINE_TRACE_LITERAL([UNDER_SYS_SIGLIST_DECLARED]) -m4trace:configure.in:865: -1- m4_pattern_allow([^UNDER_SYS_SIGLIST_DECLARED$]) -m4trace:configure.in:865: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2490: AC_TRY_RUN is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... +configure.in:863: the top level]) +m4trace:configure.in:863: -1- AC_DEFINE_TRACE_LITERAL([UNDER_SYS_SIGLIST_DECLARED]) +m4trace:configure.in:863: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:206: BASH_UNDER_SYS_SIGLIST is expanded from... -configure.in:865: the top level]) -m4trace:configure.in:865: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNDER_SYS_SIGLIST]) -m4trace:configure.in:865: -1- m4_pattern_allow([^HAVE_UNDER_SYS_SIGLIST$]) -m4trace:configure.in:868: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2384: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... +configure.in:863: the top level]) +m4trace:configure.in:863: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNDER_SYS_SIGLIST]) +m4trace:configure.in:866: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:380: BASH_TYPE_SIGHANDLER is expanded from... -configure.in:868: the top level]) -m4trace:configure.in:868: -1- AC_DEFINE_TRACE_LITERAL([VOID_SIGHANDLER]) -m4trace:configure.in:868: -1- m4_pattern_allow([^VOID_SIGHANDLER$]) -m4trace:configure.in:869: -1- AC_DEFINE_TRACE_LITERAL([clock_t]) -m4trace:configure.in:869: -1- m4_pattern_allow([^clock_t$]) -m4trace:configure.in:870: -1- AC_DEFINE_TRACE_LITERAL([sigset_t]) -m4trace:configure.in:870: -1- m4_pattern_allow([^sigset_t$]) -m4trace:configure.in:871: -1- AC_DEFINE_TRACE_LITERAL([HAVE_QUAD_T]) -m4trace:configure.in:871: -1- m4_pattern_allow([^HAVE_QUAD_T$]) -m4trace:configure.in:871: -1- AC_DEFINE_TRACE_LITERAL([quad_t]) -m4trace:configure.in:871: -1- m4_pattern_allow([^quad_t$]) -m4trace:configure.in:872: -1- AC_DEFINE_TRACE_LITERAL([intmax_t]) -m4trace:configure.in:872: -1- m4_pattern_allow([^intmax_t$]) -m4trace:configure.in:873: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t]) -m4trace:configure.in:873: -1- m4_pattern_allow([^uintmax_t$]) -m4trace:configure.in:875: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SOCKLEN_T]) -m4trace:configure.in:875: -1- m4_pattern_allow([^HAVE_SOCKLEN_T$]) -m4trace:configure.in:875: -1- AC_DEFINE_TRACE_LITERAL([socklen_t]) -m4trace:configure.in:875: -1- m4_pattern_allow([^socklen_t$]) -m4trace:configure.in:877: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2384: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... +configure.in:866: the top level]) +m4trace:configure.in:866: -1- AC_DEFINE_TRACE_LITERAL([VOID_SIGHANDLER]) +m4trace:configure.in:867: -1- AC_DEFINE_TRACE_LITERAL([clock_t]) +m4trace:configure.in:868: -1- AC_DEFINE_TRACE_LITERAL([sigset_t]) +m4trace:configure.in:869: -1- AC_DEFINE_TRACE_LITERAL([HAVE_QUAD_T]) +m4trace:configure.in:869: -1- AC_DEFINE_TRACE_LITERAL([quad_t]) +m4trace:configure.in:870: -1- AC_DEFINE_TRACE_LITERAL([intmax_t]) +m4trace:configure.in:871: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t]) +m4trace:configure.in:873: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SOCKLEN_T]) +m4trace:configure.in:873: -1- AC_DEFINE_TRACE_LITERAL([socklen_t]) +m4trace:configure.in:875: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:532: BASH_TYPE_RLIMIT is expanded from... -configure.in:877: the top level]) -m4trace:configure.in:877: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2490: AC_TRY_RUN is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:2377: AC_COMPILE_IFELSE is expanded from... -autoconf/general.m4:2384: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... +configure.in:875: the top level]) +m4trace:configure.in:875: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:2173: AC_COMPILE_IFELSE is expanded from... +autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:532: BASH_TYPE_RLIMIT is expanded from... -configure.in:877: the top level]) -m4trace:configure.in:877: -1- AC_DEFINE_TRACE_LITERAL([RLIMTYPE]) -m4trace:configure.in:877: -1- m4_pattern_allow([^RLIMTYPE$]) -m4trace:configure.in:877: -1- AC_DEFINE_TRACE_LITERAL([RLIMTYPE]) -m4trace:configure.in:877: -1- m4_pattern_allow([^RLIMTYPE$]) -m4trace:configure.in:880: -2- AC_DEFINE_TRACE_LITERAL([TERMIOS_LDISC]) -m4trace:configure.in:880: -2- m4_pattern_allow([^TERMIOS_LDISC$]) -m4trace:configure.in:881: -2- AC_DEFINE_TRACE_LITERAL([TERMIO_LDISC]) -m4trace:configure.in:881: -2- m4_pattern_allow([^TERMIO_LDISC$]) -m4trace:configure.in:882: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2384: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... +configure.in:875: the top level]) +m4trace:configure.in:875: -1- AC_DEFINE_TRACE_LITERAL([RLIMTYPE]) +m4trace:configure.in:875: -1- AC_DEFINE_TRACE_LITERAL([RLIMTYPE]) +m4trace:configure.in:878: -2- AC_DEFINE_TRACE_LITERAL([TERMIOS_LDISC]) +m4trace:configure.in:879: -2- AC_DEFINE_TRACE_LITERAL([TERMIO_LDISC]) +m4trace:configure.in:880: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:1058: BASH_STRUCT_DIRENT_D_INO is expanded from... -configure.in:882: the top level]) -m4trace:configure.in:882: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_INO]) -m4trace:configure.in:882: -1- m4_pattern_allow([^HAVE_STRUCT_DIRENT_D_INO$]) -m4trace:configure.in:883: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2384: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... +configure.in:880: the top level]) +m4trace:configure.in:880: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_INO]) +m4trace:configure.in:881: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:1091: BASH_STRUCT_DIRENT_D_FILENO is expanded from... -configure.in:883: the top level]) -m4trace:configure.in:883: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_FILENO]) -m4trace:configure.in:883: -1- m4_pattern_allow([^HAVE_STRUCT_DIRENT_D_FILENO$]) -m4trace:configure.in:884: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2384: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... +configure.in:881: the top level]) +m4trace:configure.in:881: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_FILENO]) +m4trace:configure.in:882: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:1124: BASH_STRUCT_DIRENT_D_NAMLEN is expanded from... -configure.in:884: the top level]) -m4trace:configure.in:884: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_NAMLEN]) -m4trace:configure.in:884: -1- m4_pattern_allow([^HAVE_STRUCT_DIRENT_D_NAMLEN$]) -m4trace:configure.in:885: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2384: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... +configure.in:882: the top level]) +m4trace:configure.in:882: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_NAMLEN]) +m4trace:configure.in:883: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:1177: BASH_STRUCT_WINSIZE is expanded from... -configure.in:885: the top level]) -m4trace:configure.in:885: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2384: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:2377: AC_COMPILE_IFELSE is expanded from... -autoconf/general.m4:2384: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... +configure.in:883: the top level]) +m4trace:configure.in:883: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:2173: AC_COMPILE_IFELSE is expanded from... +autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:1177: BASH_STRUCT_WINSIZE is expanded from... -configure.in:885: the top level]) -m4trace:configure.in:885: -1- AC_DEFINE_TRACE_LITERAL([STRUCT_WINSIZE_IN_SYS_IOCTL]) -m4trace:configure.in:885: -1- m4_pattern_allow([^STRUCT_WINSIZE_IN_SYS_IOCTL$]) -m4trace:configure.in:885: -1- AC_DEFINE_TRACE_LITERAL([STRUCT_WINSIZE_IN_TERMIOS]) -m4trace:configure.in:885: -1- m4_pattern_allow([^STRUCT_WINSIZE_IN_TERMIOS$]) -m4trace:configure.in:886: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TIMEVAL]) -m4trace:configure.in:886: -1- m4_pattern_allow([^HAVE_TIMEVAL$]) -m4trace:configure.in:887: -1- AC_CHECK_MEMBERS([struct stat.st_blocks]) -m4trace:configure.in:887: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_BLOCKS]) -m4trace:configure.in:887: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_BLOCKS$]) -m4trace:configure.in:887: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_BLOCKS], [/* Define to 1 if `st_blocks\' is member of `struct stat\'. */ +configure.in:883: the top level]) +m4trace:configure.in:883: -1- AC_DEFINE_TRACE_LITERAL([STRUCT_WINSIZE_IN_SYS_IOCTL]) +m4trace:configure.in:883: -1- AC_DEFINE_TRACE_LITERAL([STRUCT_WINSIZE_IN_TERMIOS]) +m4trace:configure.in:884: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TIMEVAL]) +m4trace:configure.in:885: -1- AC_CHECK_MEMBERS([struct stat.st_blocks]) +m4trace:configure.in:885: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_BLOCKS]) +m4trace:configure.in:885: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_BLOCKS], [/* Define to 1 if `st_blocks\' is member of `struct stat\'. */ #undef HAVE_STRUCT_STAT_ST_BLOCKS]) -m4trace:configure.in:888: -1- AC_STRUCT_TM -m4trace:configure.in:888: -1- AC_DEFINE_TRACE_LITERAL([TM_IN_SYS_TIME]) -m4trace:configure.in:888: -1- m4_pattern_allow([^TM_IN_SYS_TIME$]) -m4trace:configure.in:888: -1- AH_OUTPUT([TM_IN_SYS_TIME], [/* Define to 1 if your declares `struct tm\'. */ +m4trace:configure.in:886: -1- AC_STRUCT_TM +m4trace:configure.in:886: -1- AC_DEFINE_TRACE_LITERAL([TM_IN_SYS_TIME]) +m4trace:configure.in:886: -1- AH_OUTPUT([TM_IN_SYS_TIME], [/* Define to 1 if your declares `struct tm\'. */ #undef TM_IN_SYS_TIME]) -m4trace:configure.in:889: -1- AC_STRUCT_TIMEZONE -m4trace:configure.in:889: -1- AC_CHECK_MEMBERS([struct tm.tm_zone], [], [], [#include +m4trace:configure.in:887: -1- AC_STRUCT_TIMEZONE +m4trace:configure.in:887: -1- AC_CHECK_MEMBERS([struct tm.tm_zone], [], [], [#include #include <$ac_cv_struct_tm> ]) -m4trace:configure.in:889: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TM_TM_ZONE]) -m4trace:configure.in:889: -1- m4_pattern_allow([^HAVE_STRUCT_TM_TM_ZONE$]) -m4trace:configure.in:889: -1- AH_OUTPUT([HAVE_STRUCT_TM_TM_ZONE], [/* Define to 1 if `tm_zone\' is member of `struct tm\'. */ +m4trace:configure.in:887: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TM_TM_ZONE]) +m4trace:configure.in:887: -1- AH_OUTPUT([HAVE_STRUCT_TM_TM_ZONE], [/* Define to 1 if `tm_zone\' is member of `struct tm\'. */ #undef HAVE_STRUCT_TM_TM_ZONE]) -m4trace:configure.in:889: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TM_ZONE]) -m4trace:configure.in:889: -1- m4_pattern_allow([^HAVE_TM_ZONE$]) -m4trace:configure.in:889: -1- AH_OUTPUT([HAVE_TM_ZONE], [/* Define to 1 if your `struct tm\' has `tm_zone\'. Deprecated, use +m4trace:configure.in:887: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TM_ZONE]) +m4trace:configure.in:887: -1- AH_OUTPUT([HAVE_TM_ZONE], [/* Define to 1 if your `struct tm\' has `tm_zone\'. Deprecated, use `HAVE_STRUCT_TM_TM_ZONE\' instead. */ #undef HAVE_TM_ZONE]) -m4trace:configure.in:889: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_TZNAME]) -m4trace:configure.in:889: -1- m4_pattern_allow([^HAVE_DECL_TZNAME$]) -m4trace:configure.in:889: -1- AH_OUTPUT([HAVE_DECL_TZNAME], [/* Define to 1 if you have the declaration of `tzname\', and to 0 if you don\'t. - */ -#undef HAVE_DECL_TZNAME]) -m4trace:configure.in:889: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_TZNAME]) -m4trace:configure.in:889: -1- m4_pattern_allow([^HAVE_DECL_TZNAME$]) -m4trace:configure.in:889: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TZNAME]) -m4trace:configure.in:889: -1- m4_pattern_allow([^HAVE_TZNAME$]) -m4trace:configure.in:889: -1- AH_OUTPUT([HAVE_TZNAME], [/* Define to 1 if you don\'t have `tm_zone\' but do have the external array +m4trace:configure.in:887: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TZNAME]) +m4trace:configure.in:887: -1- AH_OUTPUT([HAVE_TZNAME], [/* Define to 1 if you don\'t have `tm_zone\' but do have the external array `tzname\'. */ #undef HAVE_TZNAME]) -m4trace:configure.in:890: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMEZONE]) -m4trace:configure.in:890: -1- m4_pattern_allow([^HAVE_STRUCT_TIMEZONE$]) -m4trace:configure.in:893: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... +m4trace:configure.in:888: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMEZONE]) +m4trace:configure.in:891: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:307: BASH_FUNC_STRSIGNAL is expanded from... +configure.in:891: the top level]) +m4trace:configure.in:891: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRSIGNAL]) +m4trace:configure.in:892: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:360: BASH_FUNC_OPENDIR_CHECK is expanded from... +configure.in:892: the top level]) +m4trace:configure.in:892: -1- AC_DEFINE_TRACE_LITERAL([OPENDIR_NOT_ROBUST]) +m4trace:configure.in:893: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:685: BASH_FUNC_ULIMIT_MAXFDS is expanded from... configure.in:893: the top level]) -m4trace:configure.in:893: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRSIGNAL]) -m4trace:configure.in:893: -1- m4_pattern_allow([^HAVE_STRSIGNAL$]) +m4trace:configure.in:893: -1- AC_DEFINE_TRACE_LITERAL([ULIMIT_MAXFDS]) m4trace:configure.in:894: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2490: AC_TRY_RUN is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -aclocal.m4:360: BASH_FUNC_OPENDIR_CHECK is expanded from... +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:606: BASH_FUNC_GETENV is expanded from... configure.in:894: the top level]) -m4trace:configure.in:894: -1- AC_DEFINE_TRACE_LITERAL([OPENDIR_NOT_ROBUST]) -m4trace:configure.in:894: -1- m4_pattern_allow([^OPENDIR_NOT_ROBUST$]) -m4trace:configure.in:895: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2490: AC_TRY_RUN is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -aclocal.m4:685: BASH_FUNC_ULIMIT_MAXFDS is expanded from... -configure.in:895: the top level]) -m4trace:configure.in:895: -1- AC_DEFINE_TRACE_LITERAL([ULIMIT_MAXFDS]) -m4trace:configure.in:895: -1- m4_pattern_allow([^ULIMIT_MAXFDS$]) +m4trace:configure.in:894: -1- AC_DEFINE_TRACE_LITERAL([CAN_REDEFINE_GETENV]) m4trace:configure.in:896: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2490: AC_TRY_RUN is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -aclocal.m4:606: BASH_FUNC_GETENV is expanded from... +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:711: BASH_FUNC_GETCWD is expanded from... configure.in:896: the top level]) -m4trace:configure.in:896: -1- AC_DEFINE_TRACE_LITERAL([CAN_REDEFINE_GETENV]) -m4trace:configure.in:896: -1- m4_pattern_allow([^CAN_REDEFINE_GETENV$]) +m4trace:configure.in:896: -1- AC_DEFINE_TRACE_LITERAL([GETCWD_BROKEN]) +m4trace:configure.in:896: -1- AC_LIBSOURCE([getcwd.c]) +m4trace:configure.in:896: -1- AC_SUBST([LIB@&t@OBJS]) m4trace:configure.in:898: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2490: AC_TRY_RUN is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -aclocal.m4:711: BASH_FUNC_GETCWD is expanded from... -configure.in:898: the top level]) -m4trace:configure.in:898: -1- AC_DEFINE_TRACE_LITERAL([GETCWD_BROKEN]) -m4trace:configure.in:898: -1- m4_pattern_allow([^GETCWD_BROKEN$]) -m4trace:configure.in:898: -1- AC_LIBSOURCE([getcwd.c]) -m4trace:configure.in:898: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS getcwd.$ac_objext"]) -m4trace:configure.in:898: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) -m4trace:configure.in:898: -1- m4_pattern_allow([^LIB@&t@OBJS$]) -m4trace:configure.in:900: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2490: AC_TRY_RUN is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:812: BASH_FUNC_POSIX_SETJMP is expanded from... -configure.in:900: the top level]) -m4trace:configure.in:900: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SIGSETJMP]) -m4trace:configure.in:900: -1- m4_pattern_allow([^HAVE_POSIX_SIGSETJMP$]) -m4trace:configure.in:901: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2490: AC_TRY_RUN is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... +configure.in:898: the top level]) +m4trace:configure.in:898: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SIGSETJMP]) +m4trace:configure.in:899: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:861: BASH_FUNC_STRCOLL is expanded from... -configure.in:901: the top level]) -m4trace:configure.in:901: -1- AC_DEFINE_TRACE_LITERAL([STRCOLL_BROKEN]) -m4trace:configure.in:901: -1- m4_pattern_allow([^STRCOLL_BROKEN$]) -m4trace:configure.in:907: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1935: AC_CACHE_CHECK is expanded from... +configure.in:899: the top level]) +m4trace:configure.in:899: -1- AC_DEFINE_TRACE_LITERAL([STRCOLL_BROKEN]) +m4trace:configure.in:905: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... aclocal.m4:636: BASH_FUNC_STD_PUTENV is expanded from... -configure.in:907: the top level]) +configure.in:905: the top level]) +m4trace:configure.in:905: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_PUTENV]) m4trace:configure.in:907: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_PUTENV]) -m4trace:configure.in:907: -1- m4_pattern_allow([^HAVE_STD_PUTENV$]) -m4trace:configure.in:909: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_PUTENV]) -m4trace:configure.in:909: -1- m4_pattern_allow([^HAVE_STD_PUTENV$]) -m4trace:configure.in:912: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2426: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1935: AC_CACHE_CHECK is expanded from... +m4trace:configure.in:910: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... aclocal.m4:666: BASH_FUNC_STD_UNSETENV is expanded from... -configure.in:912: the top level]) +configure.in:910: the top level]) +m4trace:configure.in:910: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_UNSETENV]) m4trace:configure.in:912: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_UNSETENV]) -m4trace:configure.in:912: -1- m4_pattern_allow([^HAVE_STD_UNSETENV$]) -m4trace:configure.in:914: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_UNSETENV]) -m4trace:configure.in:914: -1- m4_pattern_allow([^HAVE_STD_UNSETENV$]) -m4trace:configure.in:917: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2490: AC_TRY_RUN is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... +m4trace:configure.in:915: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:887: BASH_FUNC_PRINTF_A_FORMAT is expanded from... -configure.in:917: the top level]) -m4trace:configure.in:917: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PRINTF_A_FORMAT]) -m4trace:configure.in:917: -1- m4_pattern_allow([^HAVE_PRINTF_A_FORMAT$]) -m4trace:configure.in:920: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2490: AC_TRY_RUN is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... +configure.in:915: the top level]) +m4trace:configure.in:915: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PRINTF_A_FORMAT]) +m4trace:configure.in:918: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:1338: BASH_SYS_REINSTALL_SIGHANDLERS is expanded from... -configure.in:920: the top level]) -m4trace:configure.in:920: -1- AC_DEFINE_TRACE_LITERAL([MUST_REINSTALL_SIGHANDLERS]) -m4trace:configure.in:920: -1- m4_pattern_allow([^MUST_REINSTALL_SIGHANDLERS$]) -m4trace:configure.in:921: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2490: AC_TRY_RUN is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... +configure.in:918: the top level]) +m4trace:configure.in:918: -1- AC_DEFINE_TRACE_LITERAL([MUST_REINSTALL_SIGHANDLERS]) +m4trace:configure.in:919: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:1396: BASH_SYS_JOB_CONTROL_MISSING is expanded from... -configure.in:921: the top level]) -m4trace:configure.in:921: -1- AC_DEFINE_TRACE_LITERAL([JOB_CONTROL_MISSING]) -m4trace:configure.in:921: -1- m4_pattern_allow([^JOB_CONTROL_MISSING$]) -m4trace:configure.in:922: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2490: AC_TRY_RUN is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... +configure.in:919: the top level]) +m4trace:configure.in:919: -1- AC_DEFINE_TRACE_LITERAL([JOB_CONTROL_MISSING]) +m4trace:configure.in:920: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:1448: BASH_SYS_NAMED_PIPES is expanded from... -configure.in:922: the top level]) -m4trace:configure.in:922: -1- AC_DEFINE_TRACE_LITERAL([NAMED_PIPES_MISSING]) -m4trace:configure.in:922: -1- m4_pattern_allow([^NAMED_PIPES_MISSING$]) -m4trace:configure.in:925: -1- AC_DEFINE_TRACE_LITERAL([GWINSZ_IN_SYS_IOCTL]) -m4trace:configure.in:925: -1- m4_pattern_allow([^GWINSZ_IN_SYS_IOCTL$]) -m4trace:configure.in:925: -1- AH_OUTPUT([GWINSZ_IN_SYS_IOCTL], [/* Define to 1 if `TIOCGWINSZ\' requires . */ +configure.in:920: the top level]) +m4trace:configure.in:920: -1- AC_DEFINE_TRACE_LITERAL([NAMED_PIPES_MISSING]) +m4trace:configure.in:923: -1- AC_DEFINE_TRACE_LITERAL([GWINSZ_IN_SYS_IOCTL]) +m4trace:configure.in:923: -1- AH_OUTPUT([GWINSZ_IN_SYS_IOCTL], [/* Define to 1 if `TIOCGWINSZ\' requires . */ #undef GWINSZ_IN_SYS_IOCTL]) -m4trace:configure.in:926: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2384: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... +m4trace:configure.in:924: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:1491: BASH_HAVE_TIOCSTAT is expanded from... -configure.in:926: the top level]) -m4trace:configure.in:926: -1- AC_DEFINE_TRACE_LITERAL([TIOCSTAT_IN_SYS_IOCTL]) -m4trace:configure.in:926: -1- m4_pattern_allow([^TIOCSTAT_IN_SYS_IOCTL$]) -m4trace:configure.in:927: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2384: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... +configure.in:924: the top level]) +m4trace:configure.in:924: -1- AC_DEFINE_TRACE_LITERAL([TIOCSTAT_IN_SYS_IOCTL]) +m4trace:configure.in:925: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:1503: BASH_HAVE_FIONREAD is expanded from... +configure.in:925: the top level]) +m4trace:configure.in:925: -1- AC_DEFINE_TRACE_LITERAL([FIONREAD_IN_SYS_IOCTL]) +m4trace:configure.in:927: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:1902: BASH_CHECK_WCONTINUED is expanded from... configure.in:927: the top level]) -m4trace:configure.in:927: -1- AC_DEFINE_TRACE_LITERAL([FIONREAD_IN_SYS_IOCTL]) -m4trace:configure.in:927: -1- m4_pattern_allow([^FIONREAD_IN_SYS_IOCTL$]) -m4trace:configure.in:929: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2490: AC_TRY_RUN is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -aclocal.m4:1939: BASH_CHECK_WCONTINUED is expanded from... -configure.in:929: the top level]) -m4trace:configure.in:929: -1- AC_DEFINE_TRACE_LITERAL([WCONTINUED_BROKEN]) -m4trace:configure.in:929: -1- m4_pattern_allow([^WCONTINUED_BROKEN$]) -m4trace:configure.in:932: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2384: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... +m4trace:configure.in:927: -1- AC_DEFINE_TRACE_LITERAL([WCONTINUED_BROKEN]) +m4trace:configure.in:930: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... aclocal.m4:1520: BASH_CHECK_SPEED_T is expanded from... +configure.in:930: the top level]) +m4trace:configure.in:930: -1- AC_DEFINE_TRACE_LITERAL([SPEED_T_IN_SYS_TYPES]) +m4trace:configure.in:931: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPW_DECLS]) +m4trace:configure.in:932: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:1665: BASH_CHECK_RTSIGS is expanded from... configure.in:932: the top level]) -m4trace:configure.in:932: -1- AC_DEFINE_TRACE_LITERAL([SPEED_T_IN_SYS_TYPES]) -m4trace:configure.in:932: -1- m4_pattern_allow([^SPEED_T_IN_SYS_TYPES$]) -m4trace:configure.in:933: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPW_DECLS]) -m4trace:configure.in:933: -1- m4_pattern_allow([^HAVE_GETPW_DECLS$]) -m4trace:configure.in:934: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2490: AC_TRY_RUN is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -aclocal.m4:1667: BASH_CHECK_RTSIGS is expanded from... -configure.in:934: the top level]) -m4trace:configure.in:934: -1- AC_DEFINE_TRACE_LITERAL([UNUSABLE_RT_SIGNALS]) -m4trace:configure.in:934: -1- m4_pattern_allow([^UNUSABLE_RT_SIGNALS$]) -m4trace:configure.in:935: -1- AC_SUBST([SIGLIST_O]) -m4trace:configure.in:935: -1- AC_SUBST_TRACE([SIGLIST_O]) -m4trace:configure.in:935: -1- m4_pattern_allow([^SIGLIST_O$]) -m4trace:configure.in:939: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2384: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -aclocal.m4:1616: BASH_CHECK_KERNEL_RLIMIT is expanded from... -configure.in:939: the top level]) -m4trace:configure.in:939: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2384: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:2377: AC_COMPILE_IFELSE is expanded from... -autoconf/general.m4:2384: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:519: AS_IF is expanded from... -autoconf/general.m4:1922: AC_CACHE_VAL is expanded from... -aclocal.m4:1616: BASH_CHECK_KERNEL_RLIMIT is expanded from... -configure.in:939: the top level]) -m4trace:configure.in:939: -1- AC_DEFINE_TRACE_LITERAL([RLIMIT_NEEDS_KERNEL]) -m4trace:configure.in:939: -1- m4_pattern_allow([^RLIMIT_NEEDS_KERNEL$]) -m4trace:configure.in:947: -1- AC_CHECK_LIB([termcap], [tgetent], [bash_cv_termcap_lib=libtermcap], [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo, +m4trace:configure.in:932: -1- AC_DEFINE_TRACE_LITERAL([UNUSABLE_RT_SIGNALS]) +m4trace:configure.in:933: -1- AC_SUBST([SIGLIST_O]) +m4trace:configure.in:937: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:1614: BASH_CHECK_KERNEL_RLIMIT is expanded from... +configure.in:937: the top level]) +m4trace:configure.in:937: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:2173: AC_COMPILE_IFELSE is expanded from... +autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:1614: BASH_CHECK_KERNEL_RLIMIT is expanded from... +configure.in:937: the top level]) +m4trace:configure.in:937: -1- AC_DEFINE_TRACE_LITERAL([RLIMIT_NEEDS_KERNEL]) +m4trace:configure.in:945: -1- AC_CHECK_LIB([termcap], [tgetent], [bash_cv_termcap_lib=libtermcap], [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo, [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, bash_cv_termcap_lib=gnutermcap)])])]) -m4trace:configure.in:947: -1- AC_CHECK_LIB([tinfo], [tgetent], [bash_cv_termcap_lib=libtinfo], [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, +m4trace:configure.in:945: -1- AC_CHECK_LIB([tinfo], [tgetent], [bash_cv_termcap_lib=libtinfo], [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, bash_cv_termcap_lib=gnutermcap)])]) -m4trace:configure.in:947: -1- AC_CHECK_LIB([curses], [tgetent], [bash_cv_termcap_lib=libcurses], [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, +m4trace:configure.in:945: -1- AC_CHECK_LIB([curses], [tgetent], [bash_cv_termcap_lib=libcurses], [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, bash_cv_termcap_lib=gnutermcap)]) -m4trace:configure.in:947: -1- AC_CHECK_LIB([ncurses], [tgetent], [bash_cv_termcap_lib=libncurses], [bash_cv_termcap_lib=gnutermcap]) -m4trace:configure.in:949: -1- AC_SUBST([TERMCAP_LIB]) -m4trace:configure.in:949: -1- AC_SUBST_TRACE([TERMCAP_LIB]) -m4trace:configure.in:949: -1- m4_pattern_allow([^TERMCAP_LIB$]) -m4trace:configure.in:950: -1- AC_SUBST([TERMCAP_DEP]) -m4trace:configure.in:950: -1- AC_SUBST_TRACE([TERMCAP_DEP]) -m4trace:configure.in:950: -1- m4_pattern_allow([^TERMCAP_DEP$]) -m4trace:configure.in:952: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_FD]) -m4trace:configure.in:952: -1- m4_pattern_allow([^HAVE_DEV_FD$]) -m4trace:configure.in:952: -1- AC_DEFINE_TRACE_LITERAL([DEV_FD_PREFIX]) -m4trace:configure.in:952: -1- m4_pattern_allow([^DEV_FD_PREFIX$]) -m4trace:configure.in:952: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_FD]) -m4trace:configure.in:952: -1- m4_pattern_allow([^HAVE_DEV_FD$]) -m4trace:configure.in:952: -1- AC_DEFINE_TRACE_LITERAL([DEV_FD_PREFIX]) -m4trace:configure.in:952: -1- m4_pattern_allow([^DEV_FD_PREFIX$]) -m4trace:configure.in:953: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_STDIN]) -m4trace:configure.in:953: -1- m4_pattern_allow([^HAVE_DEV_STDIN$]) -m4trace:configure.in:954: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_MAIL_DIRECTORY]) -m4trace:configure.in:954: -1- m4_pattern_allow([^DEFAULT_MAIL_DIRECTORY$]) -m4trace:configure.in:961: -1- AC_DEFINE_TRACE_LITERAL([JOB_CONTROL]) -m4trace:configure.in:961: -1- m4_pattern_allow([^JOB_CONTROL$]) -m4trace:configure.in:967: -1- AC_SUBST([JOBS_O]) -m4trace:configure.in:967: -1- AC_SUBST_TRACE([JOBS_O]) -m4trace:configure.in:967: -1- m4_pattern_allow([^JOBS_O$]) -m4trace:configure.in:980: -1- AC_DEFINE_TRACE_LITERAL([SVR4_2]) -m4trace:configure.in:980: -1- m4_pattern_allow([^SVR4_2$]) -m4trace:configure.in:981: -1- AC_DEFINE_TRACE_LITERAL([SVR4]) -m4trace:configure.in:981: -1- m4_pattern_allow([^SVR4$]) -m4trace:configure.in:982: -1- AC_DEFINE_TRACE_LITERAL([SVR4]) -m4trace:configure.in:982: -1- m4_pattern_allow([^SVR4$]) -m4trace:configure.in:983: -1- AC_DEFINE_TRACE_LITERAL([SVR5]) -m4trace:configure.in:983: -1- m4_pattern_allow([^SVR5$]) -m4trace:configure.in:999: -1- AC_DEFINE_TRACE_LITERAL([PGRP_PIPE]) -m4trace:configure.in:999: -1- m4_pattern_allow([^PGRP_PIPE$]) -m4trace:configure.in:1046: -1- AC_SUBST([SHOBJ_CC]) -m4trace:configure.in:1046: -1- AC_SUBST_TRACE([SHOBJ_CC]) -m4trace:configure.in:1046: -1- m4_pattern_allow([^SHOBJ_CC$]) -m4trace:configure.in:1047: -1- AC_SUBST([SHOBJ_CFLAGS]) -m4trace:configure.in:1047: -1- AC_SUBST_TRACE([SHOBJ_CFLAGS]) -m4trace:configure.in:1047: -1- m4_pattern_allow([^SHOBJ_CFLAGS$]) -m4trace:configure.in:1048: -1- AC_SUBST([SHOBJ_LD]) -m4trace:configure.in:1048: -1- AC_SUBST_TRACE([SHOBJ_LD]) -m4trace:configure.in:1048: -1- m4_pattern_allow([^SHOBJ_LD$]) -m4trace:configure.in:1049: -1- AC_SUBST([SHOBJ_LDFLAGS]) -m4trace:configure.in:1049: -1- AC_SUBST_TRACE([SHOBJ_LDFLAGS]) -m4trace:configure.in:1049: -1- m4_pattern_allow([^SHOBJ_LDFLAGS$]) -m4trace:configure.in:1050: -1- AC_SUBST([SHOBJ_XLDFLAGS]) -m4trace:configure.in:1050: -1- AC_SUBST_TRACE([SHOBJ_XLDFLAGS]) -m4trace:configure.in:1050: -1- m4_pattern_allow([^SHOBJ_XLDFLAGS$]) -m4trace:configure.in:1051: -1- AC_SUBST([SHOBJ_LIBS]) -m4trace:configure.in:1051: -1- AC_SUBST_TRACE([SHOBJ_LIBS]) -m4trace:configure.in:1051: -1- m4_pattern_allow([^SHOBJ_LIBS$]) -m4trace:configure.in:1052: -1- AC_SUBST([SHOBJ_STATUS]) -m4trace:configure.in:1052: -1- AC_SUBST_TRACE([SHOBJ_STATUS]) -m4trace:configure.in:1052: -1- m4_pattern_allow([^SHOBJ_STATUS$]) -m4trace:configure.in:1077: -1- AC_SUBST([PROFILE_FLAGS]) -m4trace:configure.in:1077: -1- AC_SUBST_TRACE([PROFILE_FLAGS]) -m4trace:configure.in:1077: -1- m4_pattern_allow([^PROFILE_FLAGS$]) -m4trace:configure.in:1079: -1- AC_SUBST([incdir]) -m4trace:configure.in:1079: -1- AC_SUBST_TRACE([incdir]) -m4trace:configure.in:1079: -1- m4_pattern_allow([^incdir$]) -m4trace:configure.in:1080: -1- AC_SUBST([BUILD_DIR]) -m4trace:configure.in:1080: -1- AC_SUBST_TRACE([BUILD_DIR]) -m4trace:configure.in:1080: -1- m4_pattern_allow([^BUILD_DIR$]) -m4trace:configure.in:1082: -1- AC_SUBST([YACC]) -m4trace:configure.in:1082: -1- AC_SUBST_TRACE([YACC]) -m4trace:configure.in:1082: -1- m4_pattern_allow([^YACC$]) -m4trace:configure.in:1083: -1- AC_SUBST([AR]) -m4trace:configure.in:1083: -1- AC_SUBST_TRACE([AR]) -m4trace:configure.in:1083: -1- m4_pattern_allow([^AR$]) -m4trace:configure.in:1084: -1- AC_SUBST([ARFLAGS]) -m4trace:configure.in:1084: -1- AC_SUBST_TRACE([ARFLAGS]) -m4trace:configure.in:1084: -1- m4_pattern_allow([^ARFLAGS$]) -m4trace:configure.in:1086: -1- AC_SUBST([BASHVERS]) -m4trace:configure.in:1086: -1- AC_SUBST_TRACE([BASHVERS]) -m4trace:configure.in:1086: -1- m4_pattern_allow([^BASHVERS$]) -m4trace:configure.in:1087: -1- AC_SUBST([RELSTATUS]) -m4trace:configure.in:1087: -1- AC_SUBST_TRACE([RELSTATUS]) -m4trace:configure.in:1087: -1- m4_pattern_allow([^RELSTATUS$]) -m4trace:configure.in:1088: -1- AC_SUBST([DEBUG]) -m4trace:configure.in:1088: -1- AC_SUBST_TRACE([DEBUG]) -m4trace:configure.in:1088: -1- m4_pattern_allow([^DEBUG$]) -m4trace:configure.in:1089: -1- AC_SUBST([MALLOC_DEBUG]) -m4trace:configure.in:1089: -1- AC_SUBST_TRACE([MALLOC_DEBUG]) -m4trace:configure.in:1089: -1- m4_pattern_allow([^MALLOC_DEBUG$]) -m4trace:configure.in:1091: -1- AC_SUBST([host_cpu]) -m4trace:configure.in:1091: -1- AC_SUBST_TRACE([host_cpu]) -m4trace:configure.in:1091: -1- m4_pattern_allow([^host_cpu$]) -m4trace:configure.in:1092: -1- AC_SUBST([host_vendor]) -m4trace:configure.in:1092: -1- AC_SUBST_TRACE([host_vendor]) -m4trace:configure.in:1092: -1- m4_pattern_allow([^host_vendor$]) -m4trace:configure.in:1093: -1- AC_SUBST([host_os]) -m4trace:configure.in:1093: -1- AC_SUBST_TRACE([host_os]) -m4trace:configure.in:1093: -1- m4_pattern_allow([^host_os$]) -m4trace:configure.in:1095: -1- AC_SUBST([LOCAL_LIBS]) -m4trace:configure.in:1095: -1- AC_SUBST_TRACE([LOCAL_LIBS]) -m4trace:configure.in:1095: -1- m4_pattern_allow([^LOCAL_LIBS$]) -m4trace:configure.in:1096: -1- AC_SUBST([LOCAL_CFLAGS]) -m4trace:configure.in:1096: -1- AC_SUBST_TRACE([LOCAL_CFLAGS]) -m4trace:configure.in:1096: -1- m4_pattern_allow([^LOCAL_CFLAGS$]) -m4trace:configure.in:1097: -1- AC_SUBST([LOCAL_LDFLAGS]) -m4trace:configure.in:1097: -1- AC_SUBST_TRACE([LOCAL_LDFLAGS]) -m4trace:configure.in:1097: -1- m4_pattern_allow([^LOCAL_LDFLAGS$]) -m4trace:configure.in:1098: -1- AC_SUBST([LOCAL_DEFS]) -m4trace:configure.in:1098: -1- AC_SUBST_TRACE([LOCAL_DEFS]) -m4trace:configure.in:1098: -1- m4_pattern_allow([^LOCAL_DEFS$]) -m4trace:configure.in:1111: -1- AC_CONFIG_FILES([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \ +m4trace:configure.in:945: -1- AC_CHECK_LIB([ncurses], [tgetent], [bash_cv_termcap_lib=libncurses], [bash_cv_termcap_lib=gnutermcap]) +m4trace:configure.in:947: -1- AC_SUBST([TERMCAP_LIB]) +m4trace:configure.in:948: -1- AC_SUBST([TERMCAP_DEP]) +m4trace:configure.in:950: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_FD]) +m4trace:configure.in:950: -1- AC_DEFINE_TRACE_LITERAL([DEV_FD_PREFIX]) +m4trace:configure.in:950: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_FD]) +m4trace:configure.in:950: -1- AC_DEFINE_TRACE_LITERAL([DEV_FD_PREFIX]) +m4trace:configure.in:951: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_STDIN]) +m4trace:configure.in:952: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_MAIL_DIRECTORY]) +m4trace:configure.in:959: -1- AC_DEFINE_TRACE_LITERAL([JOB_CONTROL]) +m4trace:configure.in:965: -1- AC_SUBST([JOBS_O]) +m4trace:configure.in:978: -1- AC_DEFINE_TRACE_LITERAL([SVR4_2]) +m4trace:configure.in:979: -1- AC_DEFINE_TRACE_LITERAL([SVR4]) +m4trace:configure.in:980: -1- AC_DEFINE_TRACE_LITERAL([SVR4]) +m4trace:configure.in:981: -1- AC_DEFINE_TRACE_LITERAL([SVR5]) +m4trace:configure.in:996: -1- AC_DEFINE_TRACE_LITERAL([PGRP_PIPE]) +m4trace:configure.in:1043: -1- AC_SUBST([SHOBJ_CC]) +m4trace:configure.in:1044: -1- AC_SUBST([SHOBJ_CFLAGS]) +m4trace:configure.in:1045: -1- AC_SUBST([SHOBJ_LD]) +m4trace:configure.in:1046: -1- AC_SUBST([SHOBJ_LDFLAGS]) +m4trace:configure.in:1047: -1- AC_SUBST([SHOBJ_XLDFLAGS]) +m4trace:configure.in:1048: -1- AC_SUBST([SHOBJ_LIBS]) +m4trace:configure.in:1049: -1- AC_SUBST([SHOBJ_STATUS]) +m4trace:configure.in:1074: -1- AC_SUBST([PROFILE_FLAGS]) +m4trace:configure.in:1076: -1- AC_SUBST([incdir]) +m4trace:configure.in:1077: -1- AC_SUBST([BUILD_DIR]) +m4trace:configure.in:1079: -1- AC_SUBST([YACC]) +m4trace:configure.in:1080: -1- AC_SUBST([AR]) +m4trace:configure.in:1081: -1- AC_SUBST([ARFLAGS]) +m4trace:configure.in:1083: -1- AC_SUBST([BASHVERS]) +m4trace:configure.in:1084: -1- AC_SUBST([RELSTATUS]) +m4trace:configure.in:1085: -1- AC_SUBST([DEBUG]) +m4trace:configure.in:1086: -1- AC_SUBST([MALLOC_DEBUG]) +m4trace:configure.in:1088: -1- AC_SUBST([host_cpu]) +m4trace:configure.in:1089: -1- AC_SUBST([host_vendor]) +m4trace:configure.in:1090: -1- AC_SUBST([host_os]) +m4trace:configure.in:1092: -1- AC_SUBST([LOCAL_LIBS]) +m4trace:configure.in:1093: -1- AC_SUBST([LOCAL_CFLAGS]) +m4trace:configure.in:1094: -1- AC_SUBST([LOCAL_LDFLAGS]) +m4trace:configure.in:1095: -1- AC_SUBST([LOCAL_DEFS]) +m4trace:configure.in:1109: -1- AC_CONFIG_FILES([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \ lib/intl/Makefile \ lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile \ lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in \ - examples/loadables/Makefile examples/loadables/perl/Makefile]) -m4trace:configure.in:1111: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments. + examples/loadables/Makefile examples/loadables/perl/Makefile \ + pathnames.h]) +m4trace:configure.in:1109: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments. You should run autoupdate.], []) -m4trace:configure.in:1111: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) -m4trace:configure.in:1111: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) -m4trace:configure.in:1111: -1- m4_pattern_allow([^LIB@&t@OBJS$]) -m4trace:configure.in:1111: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) -m4trace:configure.in:1111: -1- AC_SUBST_TRACE([LTLIBOBJS]) -m4trace:configure.in:1111: -1- m4_pattern_allow([^LTLIBOBJS$]) -m4trace:configure.in:1111: -1- AC_SUBST_TRACE([top_builddir]) -m4trace:configure.in:1111: -1- AC_SUBST_TRACE([srcdir]) -m4trace:configure.in:1111: -1- AC_SUBST_TRACE([abs_srcdir]) -m4trace:configure.in:1111: -1- AC_SUBST_TRACE([top_srcdir]) -m4trace:configure.in:1111: -1- AC_SUBST_TRACE([abs_top_srcdir]) -m4trace:configure.in:1111: -1- AC_SUBST_TRACE([builddir]) -m4trace:configure.in:1111: -1- AC_SUBST_TRACE([abs_builddir]) -m4trace:configure.in:1111: -1- AC_SUBST_TRACE([abs_top_builddir]) -m4trace:configure.in:1111: -1- AC_SUBST_TRACE([INSTALL]) +m4trace:configure.in:1109: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) +m4trace:configure.in:1109: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) diff --git a/bash-20060316/-i b/bash-20060316/-i new file mode 100644 index 000000000..e69de29bb diff --git a/bash-20060316/.DS_Store b/bash-20060316/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..88f4b3bc519ffc2876901595a5c9fe2eac3a824b GIT binary patch literal 24580 zc-rk-J#1T56h3yG*p3}HZDC+Q3IhX3soFx37?6_EKqDHGHm#sYh&qlNr}1CoI86pn z7!c~f(4hk(149Sc7#JAH)}aFf14D-n9Xc>DbVP9O@wM~LyWf4zh7|6po^KU@-@V^E z=l-4ho{1=RzPoycXoiS#)GH^8{P8u>6ql#X|E=Zh<=6;cDZYN>E5m%ECRJ&Z%2cOQ zG~CkmVlL%rjk!^NZNA>Btkhd8Bvq&O8T9f$V!|Hft3+)^Z&8hzWoj_HW0-ucQ&aQl z6NY~|;IC4!V8Ma~3- znXcjBQ?{J3Cd4sVFrS^_tH4=wg<70H zw>k5!az0(<47w7_ze_5ACMseUec|TqiicaPfo%P8gf*^M>$Kug80DlH+X8AHt5bv} zTBK!~r;l9)$KH{sP8Jg zt{wDUfNq<)i0@;|)pFvcn3i3cEy}cm{iE<>GJnGRG)lZ!FsGd8svgtFc7TFztX6Yo z+x95vDqlpfsMntO%~Lb-Llir~K5o(-=_ji^)0$bg<@L(pn7~ITr&ZtFW_6}-mbo|7 z?ddaE5frP4S!lE!qBW%Pt{QRMa;9#^U5oD!>$|H~T89C(=~i}lWh=`Z*J3;zb0?oB zGC+hCBg^CBl#C0{43K~ZUV33Rf*zskbe2AF6)04&V8Ma~3wBiOvgFCrwC=8u^om-q zXF11Qq-%7Q(I3(!T6R}U#Te(cw_;cK-V^->z3Hynic>%wv`?hZ)mmSc%%JSseUAp;*&2T~We*Eu z?BUdsGTGFhLpaEnnA1BC^1S7uIQaqRmYjXTy=;0OwlZL#jMl@ci?%B6hl*1`9MlWb z-w$aC_)T#RTH4~i+s2uX=!>&9rPovkCxLiGw%ibamEd?x*9bQuy&W z9!GTK)7YIj928T<%F??$YG-+_exK&h$W`c^Mx!{6{H*$A&!-I;XRA1hiZSjoP+qAx zW2|bC7HEl;U3C>@UX0!E0E@h%&_z+xHGPId=v6qKsoMgWFo=Pt$AHfX+u=oqaZZdvEkLZyX{# z6nVwOEjDPwRjPR7fCs!e`W1{_(#%zgv5J_5MvLP06ty@>Z<@R6m%|yTLv}4~sm3~u|-DC?r9TGo0SF4Lc!+U?OdSw(3*2nB+wMtawY_yJ* zC~P*0MLHDP=-!bxi+j&1J3z?~s;3yd*>7}Z-CRBO2R)Obo`IzT+13i!>>8UeH?-NAE5tS5>o@!$5Pn;^bvEHoJ+0c_7w`!$9Ld_iJJ+VB9N4mKk;K zH*0VYxu1vzep2tfyKl;a$SFpWy)Hg+-n~aY$?qx^HM=KI=;1>c=na3&@I3buRlg@P zK%^8SE0Hy44qdZn0g7C7TgDkwGk!+R9tw?mv%>4zfp=nPvtlpvUU!x*(Iuee8#U5z z@oc){%V`ug8^xlL?yVX0-SKChn&IeH=#gF&LHo~C`-#t=3v((W2WLy3cU%;{AlZu9 z%V}AcP=l}hGuwcQCu%$8= zmM@&A!4HBRGrzT);_F6~Hhf&~i}ELgB$!GZ+~7VPNRzc)G#AOHXW literal 0 Hc-jL100001 diff --git a/bash-20060316/.gdb_history b/bash-20060316/.gdb_history new file mode 100644 index 000000000..ff604669b --- /dev/null +++ b/bash-20060316/.gdb_history @@ -0,0 +1 @@ +quit diff --git a/bash-20060316/ABOUT-NLS b/bash-20060316/ABOUT-NLS new file mode 100644 index 000000000..47d5e39f0 --- /dev/null +++ b/bash-20060316/ABOUT-NLS @@ -0,0 +1,625 @@ +Notes on the Free Translation Project +************************************* + + Free software is going international! The Free Translation Project +is a way to get maintainers of free software, translators, and users all +together, so that will gradually become able to speak many languages. +A few packages already provide translations for their messages. + + If you found this `ABOUT-NLS' file inside a distribution, you may +assume that the distributed package does use GNU `gettext' internally, +itself available at your nearest GNU archive site. But you do _not_ +need to install GNU `gettext' prior to configuring, installing or using +this package with messages translated. + + Installers will find here some useful hints. These notes also +explain how users should proceed for getting the programs to use the +available translations. They tell how people wanting to contribute and +work at translations should contact the appropriate team. + + When reporting bugs in the `intl/' directory or bugs which may be +related to internationalization, you should tell about the version of +`gettext' which is used. The information can be found in the +`intl/VERSION' file, in internationalized packages. + +Quick configuration advice +========================== + + If you want to exploit the full power of internationalization, you +should configure it using + + ./configure --with-included-gettext + +to force usage of internationalizing routines provided within this +package, despite the existence of internationalizing capabilities in the +operating system where this package is being installed. So far, only +the `gettext' implementation in the GNU C library version 2 provides as +many features (such as locale alias, message inheritance, automatic +charset conversion or plural form handling) as the implementation here. +It is also not possible to offer this additional functionality on top +of a `catgets' implementation. Future versions of GNU `gettext' will +very likely convey even more functionality. So it might be a good idea +to change to GNU `gettext' as soon as possible. + + So you need _not_ provide this option if you are using GNU libc 2 or +you have installed a recent copy of the GNU gettext package with the +included `libintl'. + +INSTALL Matters +=============== + + Some packages are "localizable" when properly installed; the +programs they contain can be made to speak your own native language. +Most such packages use GNU `gettext'. Other packages have their own +ways to internationalization, predating GNU `gettext'. + + By default, this package will be installed to allow translation of +messages. It will automatically detect whether the system already +provides the GNU `gettext' functions. If not, the GNU `gettext' own +library will be used. This library is wholly contained within this +package, usually in the `intl/' subdirectory, so prior installation of +the GNU `gettext' package is _not_ required. Installers may use +special options at configuration time for changing the default +behaviour. The commands: + + ./configure --with-included-gettext + ./configure --disable-nls + +will respectively bypass any pre-existing `gettext' to use the +internationalizing routines provided within this package, or else, +_totally_ disable translation of messages. + + When you already have GNU `gettext' installed on your system and run +configure without an option for your new package, `configure' will +probably detect the previously built and installed `libintl.a' file and +will decide to use this. This might be not what is desirable. You +should use the more recent version of the GNU `gettext' library. I.e. +if the file `intl/VERSION' shows that the library which comes with this +package is more recent, you should use + + ./configure --with-included-gettext + +to prevent auto-detection. + + The configuration process will not test for the `catgets' function +and therefore it will not be used. The reason is that even an +emulation of `gettext' on top of `catgets' could not provide all the +extensions of the GNU `gettext' library. + + Internationalized packages have usually many `po/LL.po' files, where +LL gives an ISO 639 two-letter code identifying the language. Unless +translations have been forbidden at `configure' time by using the +`--disable-nls' switch, all available translations are installed +together with the package. However, the environment variable `LINGUAS' +may be set, prior to configuration, to limit the installed set. +`LINGUAS' should then contain a space separated list of two-letter +codes, stating which languages are allowed. + +Using This Package +================== + + As a user, if your language has been installed for this package, you +only have to set the `LANG' environment variable to the appropriate +`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code, +and `CC' is an ISO 3166 two-letter country code. For example, let's +suppose that you speak German and live in Germany. At the shell +prompt, merely execute `setenv LANG de_DE' (in `csh'), +`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). +This can be done from your `.login' or `.profile' file, once and for +all. + + You might think that the country code specification is redundant. +But in fact, some languages have dialects in different countries. For +example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The +country code serves to distinguish the dialects. + + The locale naming convention of `LL_CC', with `LL' denoting the +language and `CC' denoting the country, is the one use on systems based +on GNU libc. On other systems, some variations of this scheme are +used, such as `LL' or `LL_CC.ENCODING'. You can get the list of +locales supported by your system for your country by running the command +`locale -a | grep '^LL''. + + Not all programs have translations for all languages. By default, an +English message is shown in place of a nonexistent translation. If you +understand other languages, you can set up a priority list of languages. +This is done through a different environment variable, called +`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' +for the purpose of message handling, but you still need to have `LANG' +set to the primary language; this is required by other parts of the +system libraries. For example, some Swedish users who would rather +read translations in German than English for when Swedish is not +available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. + + In the `LANGUAGE' environment variable, but not in the `LANG' +environment variable, `LL_CC' combinations can be abbreviated as `LL' +to denote the language's main dialect. For example, `de' is equivalent +to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' +(Portuguese as spoken in Portugal) in this context. + +Translating Teams +================= + + For the Free Translation Project to be a success, we need interested +people who like their own language and write it well, and who are also +able to synergize with other translators speaking the same language. +Each translation team has its own mailing list. The up-to-date list of +teams can be found at the Free Translation Project's homepage, +`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams" +area. + + If you'd like to volunteer to _work_ at translating messages, you +should become a member of the translating team for your own language. +The subscribing address is _not_ the same as the list itself, it has +`-request' appended. For example, speakers of Swedish can send a +message to `sv-request@li.org', having this message body: + + subscribe + + Keep in mind that team members are expected to participate +_actively_ in translations, or at solving translational difficulties, +rather than merely lurking around. If your team does not exist yet and +you want to start one, or if you are unsure about what to do or how to +get started, please write to `translation@iro.umontreal.ca' to reach the +coordinator for all translator teams. + + The English team is special. It works at improving and uniformizing +the terminology in use. Proven linguistic skill are praised more than +programming skill, here. + +Available Packages +================== + + Languages are not equally supported in all packages. The following +matrix shows the current state of internationalization, as of May 2003. +The matrix shows, in regard of each package, for which languages PO +files have been submitted to translation coordination, with a +translation percentage of at least 50%. + + Ready PO files am az be bg ca cs da de el en en_GB eo es + +-------------------------------------------+ + a2ps | [] [] [] [] | + aegis | () | + anubis | | + ap-utils | | + bash | [] [] [] | + batchelor | | + bfd | [] [] | + binutils | [] [] | + bison | [] [] [] | + bluez-pin | [] [] | + clisp | | + clisp | [] [] [] | + coreutils | [] [] [] [] | + cpio | [] [] [] | + darkstat | () [] | + diffutils | [] [] [] [] [] [] [] | + e2fsprogs | [] [] | + enscript | [] [] [] [] | + error | [] [] [] [] [] | + fetchmail | [] () [] [] [] [] | + fileutils | [] [] [] | + findutils | [] [] [] [] [] [] | + flex | [] [] [] [] | + gas | [] | + gawk | [] [] [] [] | + gcal | [] | + gcc | [] [] | + gettext | [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] | + gettext-tools | [] [] | + gimp-print | [] [] [] [] [] | + gliv | | + glunarclock | [] [] [] | + gnucash | () [] | + gnucash-glossary | [] () [] | + gnupg | [] () [] [] [] [] | + gpe-calendar | [] | + gpe-conf | [] | + gpe-contacts | [] | + gpe-edit | | + gpe-login | [] | + gpe-ownerinfo | [] | + gpe-sketchbook | [] | + gpe-timesheet | | + gpe-today | [] | + gpe-todo | [] | + gphoto2 | [] [] [] [] | + gprof | [] [] | + gpsdrive | () () () | + grep | [] [] [] [] [] | + gretl | [] | + hello | [] [] [] [] [] [] | + id-utils | [] [] | + indent | [] [] [] [] | + jpilot | [] [] [] [] | + jwhois | [] | + kbd | [] [] [] [] [] | + ld | [] [] | + libc | [] [] [] [] [] [] | + libgpewidget | [] | + libiconv | [] [] [] [] [] | + lifelines | [] () | + lilypond | [] | + lingoteach | | + lingoteach_lessons | () () | + lynx | [] [] [] [] | + m4 | [] [] [] [] | + mailutils | [] [] | + make | [] [] [] | + man-db | [] () [] [] () | + mysecretdiary | [] [] [] | + nano | [] () [] [] [] | + nano_1_0 | [] () [] [] [] | + opcodes | [] [] | + parted | [] [] [] [] [] | + ptx | [] [] [] [] [] | + python | | + radius | | + recode | [] [] [] [] [] [] | + screem | | + sed | [] [] [] [] [] | + sh-utils | [] [] [] | + sharutils | [] [] [] [] [] [] | + sketch | [] () [] | + soundtracker | [] [] [] | + sp | [] | + tar | [] [] [] [] | + texinfo | [] [] [] [] | + textutils | [] [] [] [] | + tin | () () | + util-linux | [] [] [] [] [] | + vorbis-tools | [] [] [] | + wastesedge | () | + wdiff | [] [] [] [] | + wget | [] [] [] [] [] [] [] | + xchat | [] [] [] | + xpad | | + +-------------------------------------------+ + am az be bg ca cs da de el en en_GB eo es + 0 1 4 2 31 17 54 60 14 1 4 12 56 + + et fa fi fr ga gl he hr hu id it ja ko + +----------------------------------------+ + a2ps | [] [] [] () () | + aegis | | + anubis | [] | + ap-utils | [] | + bash | [] [] | + batchelor | [] | + bfd | [] [] | + binutils | [] [] | + bison | [] [] [] [] | + bluez-pin | [] [] [] [] | + clisp | | + clisp | [] | + coreutils | [] [] [] [] | + cpio | [] [] [] [] | + darkstat | () [] [] [] | + diffutils | [] [] [] [] [] [] [] | + e2fsprogs | | + enscript | [] [] | + error | [] [] [] [] | + fetchmail | [] | + fileutils | [] [] [] [] [] | + findutils | [] [] [] [] [] [] [] [] [] [] [] | + flex | [] [] | + gas | [] | + gawk | [] [] | + gcal | [] | + gcc | [] | + gettext | [] [] [] | + gettext-runtime | [] [] [] [] | + gettext-tools | [] | + gimp-print | [] [] | + gliv | () | + glunarclock | [] [] [] [] | + gnucash | [] | + gnucash-glossary | [] | + gnupg | [] [] [] [] [] [] [] | + gpe-calendar | [] | + gpe-conf | | + gpe-contacts | [] | + gpe-edit | [] [] | + gpe-login | [] | + gpe-ownerinfo | [] [] [] | + gpe-sketchbook | [] | + gpe-timesheet | [] [] [] | + gpe-today | [] [] | + gpe-todo | [] [] | + gphoto2 | [] [] [] | + gprof | [] [] | + gpsdrive | () [] () () | + grep | [] [] [] [] [] [] [] [] [] [] [] | + gretl | [] | + hello | [] [] [] [] [] [] [] [] [] [] [] [] [] | + id-utils | [] [] [] | + indent | [] [] [] [] [] [] [] [] | + jpilot | [] () | + jwhois | [] [] [] [] | + kbd | [] | + ld | [] | + libc | [] [] [] [] [] [] | + libgpewidget | [] [] [] | + libiconv | [] [] [] [] [] [] [] [] | + lifelines | () | + lilypond | [] | + lingoteach | [] [] | + lingoteach_lessons | | + lynx | [] [] [] [] | + m4 | [] [] [] [] | + mailutils | | + make | [] [] [] [] [] [] | + man-db | [] () () | + mysecretdiary | [] [] | + nano | [] [] [] [] | + nano_1_0 | [] [] [] [] | + opcodes | [] [] | + parted | [] [] [] | + ptx | [] [] [] [] [] [] [] | + python | | + radius | | + recode | [] [] [] [] [] [] | + screem | | + sed | [] [] [] [] [] [] [] [] | + sh-utils | [] [] [] [] [] [] | + sharutils | [] [] [] [] [] | + sketch | [] | + soundtracker | [] [] [] | + sp | [] () | + tar | [] [] [] [] [] [] [] [] [] | + texinfo | [] [] [] [] | + textutils | [] [] [] [] [] | + tin | [] () | + util-linux | [] [] [] [] () [] | + vorbis-tools | [] | + wastesedge | () | + wdiff | [] [] [] [] [] | + wget | [] [] [] [] [] [] [] [] | + xchat | [] [] [] | + xpad | | + +----------------------------------------+ + et fa fi fr ga gl he hr hu id it ja ko + 20 1 15 73 14 24 8 10 30 31 19 31 9 + + lg lt lv ms nb nl nn no pl pt pt_BR ro + +----------------------------------------+ + a2ps | [] [] () () () [] [] | + aegis | () | + anubis | [] [] | + ap-utils | () | + bash | [] | + batchelor | | + bfd | | + binutils | | + bison | [] [] [] [] | + bluez-pin | [] | + clisp | | + clisp | [] | + coreutils | [] | + cpio | [] [] [] | + darkstat | [] [] [] [] | + diffutils | [] [] [] | + e2fsprogs | | + enscript | [] [] | + error | [] [] | + fetchmail | () () | + fileutils | [] | + findutils | [] [] [] [] | + flex | [] | + gas | | + gawk | [] | + gcal | | + gcc | | + gettext | [] | + gettext-runtime | [] | + gettext-tools | | + gimp-print | [] | + gliv | [] | + glunarclock | [] | + gnucash | | + gnucash-glossary | [] [] | + gnupg | | + gpe-calendar | [] [] | + gpe-conf | [] [] | + gpe-contacts | [] | + gpe-edit | [] [] | + gpe-login | [] [] | + gpe-ownerinfo | [] [] | + gpe-sketchbook | [] [] | + gpe-timesheet | [] [] | + gpe-today | [] [] | + gpe-todo | [] [] | + gphoto2 | | + gprof | [] | + gpsdrive | () () () | + grep | [] [] [] [] | + gretl | | + hello | [] [] [] [] [] [] [] [] [] | + id-utils | [] [] [] | + indent | [] [] [] | + jpilot | () () | + jwhois | [] [] [] | + kbd | | + ld | | + libc | [] [] [] [] | + libgpewidget | [] [] | + libiconv | [] [] | + lifelines | | + lilypond | [] | + lingoteach | | + lingoteach_lessons | | + lynx | [] [] | + m4 | [] [] [] [] | + mailutils | | + make | [] [] | + man-db | [] | + mysecretdiary | [] | + nano | [] [] [] [] | + nano_1_0 | [] [] [] [] | + opcodes | [] [] [] | + parted | [] [] [] | + ptx | [] [] [] [] [] [] [] | + python | | + radius | | + recode | [] [] [] | + screem | | + sed | [] [] | + sh-utils | [] | + sharutils | [] | + sketch | [] | + soundtracker | | + sp | | + tar | [] [] [] [] [] [] | + texinfo | [] | + textutils | [] | + tin | | + util-linux | [] [] | + vorbis-tools | [] [] | + wastesedge | | + wdiff | [] [] [] [] | + wget | [] [] [] | + xchat | [] [] | + xpad | [] | + +----------------------------------------+ + lg lt lv ms nb nl nn no pl pt pt_BR ro + 0 0 2 11 7 26 3 4 18 15 34 34 + + ru sk sl sr sv ta tr uk vi wa zh_CN zh_TW + +-------------------------------------------+ + a2ps | [] [] [] [] [] | 16 + aegis | () | 0 + anubis | [] [] | 5 + ap-utils | () | 1 + bash | [] | 7 + batchelor | | 1 + bfd | [] [] [] | 7 + binutils | [] [] [] | 7 + bison | [] [] | 13 + bluez-pin | | 7 + clisp | | 0 + clisp | | 5 + coreutils | [] [] [] [] [] | 14 + cpio | [] [] [] | 13 + darkstat | [] () () | 9 + diffutils | [] [] [] [] | 21 + e2fsprogs | [] | 3 + enscript | [] [] [] | 11 + error | [] [] [] | 14 + fetchmail | [] | 7 + fileutils | [] [] [] [] [] [] | 15 + findutils | [] [] [] [] [] [] | 27 + flex | [] [] [] | 10 + gas | [] | 3 + gawk | [] [] | 9 + gcal | [] [] | 4 + gcc | [] | 4 + gettext | [] [] [] [] [] [] | 15 + gettext-runtime | [] [] [] [] [] [] | 16 + gettext-tools | [] [] | 5 + gimp-print | [] [] | 10 + gliv | | 1 + glunarclock | [] [] [] | 11 + gnucash | [] [] | 4 + gnucash-glossary | [] [] [] | 8 + gnupg | [] [] [] [] | 16 + gpe-calendar | [] | 5 + gpe-conf | | 3 + gpe-contacts | [] | 4 + gpe-edit | [] | 5 + gpe-login | [] | 5 + gpe-ownerinfo | [] | 7 + gpe-sketchbook | [] | 5 + gpe-timesheet | [] | 6 + gpe-today | [] | 6 + gpe-todo | [] | 6 + gphoto2 | [] [] | 9 + gprof | [] [] | 7 + gpsdrive | [] [] | 3 + grep | [] [] [] [] | 24 + gretl | | 2 + hello | [] [] [] [] [] | 33 + id-utils | [] [] [] | 11 + indent | [] [] [] [] | 19 + jpilot | [] [] [] [] [] | 10 + jwhois | () () [] [] | 10 + kbd | [] [] | 8 + ld | [] [] | 5 + libc | [] [] [] [] | 20 + libgpewidget | | 6 + libiconv | [] [] [] [] [] [] | 21 + lifelines | [] | 2 + lilypond | [] | 4 + lingoteach | | 2 + lingoteach_lessons | () | 0 + lynx | [] [] [] [] | 14 + m4 | [] [] [] | 15 + mailutils | | 2 + make | [] [] [] [] | 15 + man-db | [] | 6 + mysecretdiary | [] [] | 8 + nano | [] [] [] | 15 + nano_1_0 | [] [] [] | 15 + opcodes | [] [] | 9 + parted | [] [] | 13 + ptx | [] [] [] | 22 + python | | 0 + radius | | 0 + recode | [] [] [] [] | 19 + screem | [] | 1 + sed | [] [] [] [] [] | 20 + sh-utils | [] [] [] | 13 + sharutils | [] [] [] [] | 16 + sketch | [] | 5 + soundtracker | [] | 7 + sp | [] | 3 + tar | [] [] [] [] [] | 24 + texinfo | [] [] [] [] | 13 + textutils | [] [] [] [] [] | 15 + tin | | 1 + util-linux | [] [] | 14 + vorbis-tools | [] | 7 + wastesedge | | 0 + wdiff | [] [] [] [] | 17 + wget | [] [] [] [] [] [] [] | 25 + xchat | [] [] [] | 11 + xpad | | 1 + +-------------------------------------------+ + 50 teams ru sk sl sr sv ta tr uk vi wa zh_CN zh_TW + 97 domains 32 19 16 0 56 0 48 10 1 1 12 23 913 + + Some counters in the preceding matrix are higher than the number of +visible blocks let us expect. This is because a few extra PO files are +used for implementing regional variants of languages, or language +dialects. + + For a PO file in the matrix above to be effective, the package to +which it applies should also have been internationalized and +distributed as such by its maintainer. There might be an observable +lag between the mere existence a PO file and its wide availability in a +distribution. + + If May 2003 seems to be old, you may fetch a more recent copy of +this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date +matrix with full percentage details can be found at +`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'. + +Using `gettext' in new packages +=============================== + + If you are writing a freely available program and want to +internationalize it you are welcome to use GNU `gettext' in your +package. Of course you have to respect the GNU Library General Public +License which covers the use of the GNU `gettext' library. This means +in particular that even non-free programs can use `libintl' as a shared +library, whereas only free software can use `libintl' as a static +library or use modified versions of `libintl'. + + Once the sources are changed appropriately and the setup can handle +the use of `gettext' the only thing missing are the translations. The +Free Translation Project is also available for packages which are not +developed inside the GNU project. Therefore the information given above +applies also for every other Free Software Project. Contact +`translation@iro.umontreal.ca' to make the `.pot' files available to +the translation teams. + diff --git a/bash-20060316/AUTHORS b/bash-20060316/AUTHORS new file mode 100644 index 000000000..a44e906e4 --- /dev/null +++ b/bash-20060316/AUTHORS @@ -0,0 +1,458 @@ +# +# Master author manifest for bash +# +# The files in lib/intl were taken from the GNU gettext distribution. +# +# Any files appearing in the bash distribution not listed in this file +# were created by Chet Ramey. +# +# Filename authors (first is original author) +# +README Brian Fox, Chet Ramey +INSTALL Brian Fox, Chet Ramey +COPYING Brian Fox, Chet Ramey +MANIFEST Brian Fox, Chet Ramey +configure Chet Ramey +Makefile.in Brian Fox, Chet Ramey +configure.in Chet Ramey +aclocal.m4 Chet Ramey +config.h.top Chet Ramey +config.h.bot Chet Ramey +config.h.in Chet Ramey +array.c Chet Ramey +print_cmd.c Brian Fox, Chet Ramey +general.c Brian Fox, Chet Ramey +variables.c Brian Fox, Chet Ramey +make_cmd.c Brian Fox, Chet Ramey +copy_cmd.c Brian Fox, Chet Ramey +unwind_prot.c Brian Fox, Chet Ramey +dispose_cmd.c Brian Fox, Chet Ramey +getcwd.c Roland McGrath, Brian Fox, Chet Ramey +bashhist.c Chet Ramey +hash.c Brian Fox, Chet Ramey +parse.y Brian Fox, Chet Ramey +subst.c Brian Fox, Chet Ramey +shell.c Brian Fox, Chet Ramey +sig.c Chet Ramey +trap.c Brian Fox, Chet Ramey +siglist.c Brian Fox, Chet Ramey +version.c Brian Fox, Chet Ramey +flags.c Brian Fox, Chet Ramey +jobs.c Brian Fox, Chet Ramey +input.c Chet Ramey +mailcheck.c Brian Fox, Chet Ramey +pathexp.c Chet Ramey +test.c Brian Fox, Chet Ramey +expr.c Chet Ramey, Brian Fox +alias.c Brian Fox, Chet Ramey +execute_cmd.c Brian Fox, Chet Ramey +bashline.c Brian Fox, Chet Ramey +braces.c Brian Fox, Chet Ramey +bracecomp.c Brian Fox, Chet Ramey, Tom Tromey +nojobs.c Brian Fox, Chet Ramey +vprint.c Chet Ramey +oslib.c Chet Ramey +error.c Brian Fox, Chet Ramey +xmalloc.c Brian Fox, Chet Ramey +alias.h Brian Fox, Chet Ramey +array.h Chet Ramey +builtins.h Brian Fox, Chet Ramey +parser.h Brian Fox, Chet Ramey +variables.h Brian Fox, Chet Ramey +machines.h Brian Fox, Chet Ramey +jobs.h Brian Fox, Chet Ramey +maxpath.h Brian Fox, Chet Ramey +pathexp.h Chet Ramey +mailcheck.h Chet Ramey +filecntl.h Brian Fox, Chet Ramey +hash.h Brian Fox, Chet Ramey +quit.h Brian Fox, Chet Ramey +flags.h Brian Fox, Chet Ramey +shell.h Brian Fox, Chet Ramey +bashjmp.h Chet Ramey +sig.h Chet Ramey +trap.h Brian Fox, Chet Ramey +general.h Brian Fox, Chet Ramey +unwind_prot.h Brian Fox, Chet Ramey +input.h Brian Fox, Chet Ramey +error.h Brian Fox, Chet Ramey +command.h Brian Fox, Chet Ramey +externs.h Chet Ramey +siglist.h Chet Ramey +subst.h Brian Fox, Chet Ramey +dispose_cmd.h Brian Fox, Chet Ramey +bashansi.h Brian Fox, Chet Ramey +make_cmd.h Brian Fox, Chet Ramey +bashhist.h Chet Ramey +bashline.h Chet Ramey +execute_cmd.h Chet Ramey +bashtypes.h Chet Ramey +bashtty.h Chet Ramey +pathnames.h Chet Ramey +y.tab.c Brian Fox, Chet Ramey +y.tab.h Brian Fox, Chet Ramey +parser-built Brian Fox, Chet Ramey +posixstat.h Brian Fox, Chet Ramey +stdc.h Chet Ramey +ansi_stdlib.h Brian Fox, Chet Ramey +memalloc.h Chet Ramey +builtins/ChangeLog Brian Fox, Chet Ramey +builtins/Makefile.in Brian Fox, Chet Ramey +builtins/alias.def Brian Fox, Chet Ramey +builtins/bind.def Brian Fox, Chet Ramey +builtins/break.def Brian Fox, Chet Ramey +builtins/builtin.def Brian Fox, Chet Ramey +builtins/caller.def Rocky Bernstein, Chet Ramey +builtins/cd.def Brian Fox, Chet Ramey +builtins/colon.def Brian Fox, Chet Ramey +builtins/command.def Brian Fox, Chet Ramey +builtins/common.c Brian Fox, Chet Ramey +builtins/declare.def Brian Fox, Chet Ramey +builtins/echo.def Brian Fox, Chet Ramey +builtins/enable.def Brian Fox, Chet Ramey +builtins/eval.def Brian Fox, Chet Ramey +builtins/exec.def Brian Fox, Chet Ramey +builtins/exit.def Brian Fox, Chet Ramey +builtins/fc.def Brian Fox, Chet Ramey +builtins/fg_bg.def Brian Fox, Chet Ramey +builtins/getopt.c Roland McGrath, Brian Fox, Chet Ramey +builtins/getopt.h Roland McGrath, Brian Fox, Chet Ramey +builtins/getopts.def Brian Fox, Chet Ramey +builtins/hash.def Brian Fox, Chet Ramey +builtins/hashcom.h Brian Fox, Chet Ramey +builtins/help.def Brian Fox, Chet Ramey +builtins/let.def Chet Ramey, Brian Fox +builtins/history.def Brian Fox, Chet Ramey +builtins/jobs.def Brian Fox, Chet Ramey +builtins/kill.def Brian Fox, Chet Ramey +builtins/mkbuiltins.c Brian Fox, Chet Ramey +builtins/pushd.def Brian Fox, Chet Ramey +builtins/read.def Brian Fox, Chet Ramey +builtins/reserved.def Brian Fox, Chet Ramey +builtins/return.def Brian Fox, Chet Ramey +builtins/set.def Brian Fox, Chet Ramey +builtins/setattr.def Brian Fox, Chet Ramey +builtins/shift.def Brian Fox, Chet Ramey +builtins/shopt.def Chet Ramey +builtins/source.def Brian Fox, Chet Ramey +builtins/suspend.def Brian Fox, Chet Ramey +builtins/test.def Brian Fox, Chet Ramey +builtins/times.def Brian Fox, Chet Ramey +builtins/trap.def Brian Fox, Chet Ramey +builtins/type.def Brian Fox, Chet Ramey +builtins/ulimit.def Chet Ramey, Brian Fox +builtins/umask.def Brian Fox, Chet Ramey +builtins/wait.def Brian Fox, Chet Ramey +builtins/psize.c Chet Ramey, Brian Fox +builtins/psize.sh Chet Ramey, Brian Fox +builtins/inlib.def Chet Ramey +builtins/bashgetopt.c Chet Ramey +builtins/common.h Chet Ramey +builtins/bashgetopt.h Chet Ramey +lib/doc-support/texindex.c bug-texinfo@prep.ai.mit.edu, Chet Ramey +lib/doc-support/Makefile.in Chet Ramey +lib/doc-support/getopt.h Roland McGrath +lib/doc-support/getopt.c Roland McGrath +lib/doc-support/getopt1.c Roland McGrath +lib/glob/ChangeLog Brian Fox, Chet Ramey +lib/glob/Makefile.in Brian Fox, Chet Ramey +lib/glob/strmatch.c Roland McGrath, Brian Fox, Chet Ramey +lib/glob/strmatch.h Roland McGrath, Brian Fox, Chet Ramey +lib/glob/glob.c Richard Stallman, Roland McGrath, Brian Fox, Chet Ramey +lib/glob/glob.h Chet Ramey +lib/glob/ndir.h Doug Gwyn, Richard Stallman +lib/glob/doc/Makefile.in Brian Fox, Chet Ramey +lib/glob/doc/glob.texi Brian Fox, Chet Ramey +lib/malloc/Makefile.in Chet Ramey +lib/malloc/alloca.c Doug Gwyn, Richard Stallman, Brian Fox, Chet Ramey +lib/malloc/getpagesize.h Brian Fox, Chet Ramey +lib/malloc/malloc.c Chris Kingsley, Mike Muuss, Richard Stallman, Brian Fox, Chet Ramey +lib/malloc/gmalloc.c Mike Haertel, Roland McGrath +lib/malloc/stub.c Chet Ramey +lib/malloc/i386-alloca.s Richard Stallman +lib/malloc/x386-alloca.s Chip Salzenberg, Richard Stallman +lib/malloc/xmalloc.c Brian Fox, Chet Ramey +lib/posixheaders/posixstat.h Brian Fox, Chet Ramey +lib/posixheaders/ansi_stdlib.h Brian Fox, Chet Ramey +lib/posixheaders/stdc.h Chet Ramey +lib/posixheaders/memalloc.h Chet Ramey +lib/posixheaders/filecntl.h Brian Fox, Chet Ramey +lib/readline/Makefile.in Brian Fox, Chet Ramey +lib/readline/COPYING Brian Fox, Chet Ramey +lib/readline/ChangeLog Brian Fox, Chet Ramey +lib/readline/readline.c Brian Fox, Chet Ramey +lib/readline/vi_mode.c Brian Fox, Chet Ramey +lib/readline/emacs_keymap.c Brian Fox, Chet Ramey +lib/readline/vi_keymap.c Brian Fox, Chet Ramey +lib/readline/funmap.c Brian Fox, Chet Ramey +lib/readline/keymaps.c Brian Fox, Chet Ramey +lib/readline/xmalloc.c Brian Fox, Chet Ramey +lib/readline/search.c Brian Fox, Chet Ramey +lib/readline/isearch.c Brian Fox, Chet Ramey +lib/readline/parens.c Brian Fox, Chet Ramey +lib/readline/rltty.c Brian Fox, Chet Ramey +lib/readline/complete.c Brian Fox, Chet Ramey +lib/readline/bind.c Brian Fox, Chet Ramey +lib/readline/display.c Brian Fox, Chet Ramey +lib/readline/signals.c Brian Fox, Chet Ramey +lib/readline/kill.c Brian Fox, Chet Ramey +lib/readline/undo.c Brian Fox, Chet Ramey +lib/readline/input.c Brian Fox, Chet Ramey +lib/readline/macro.c Brian Fox, Chet Ramey +lib/readline/util.c Brian Fox, Chet Ramey +lib/readline/callback.c Chet Ramey +lib/readline/readline.h Brian Fox, Chet Ramey +lib/readline/chardefs.h Brian Fox, Chet Ramey +lib/readline/keymaps.h Brian Fox, Chet Ramey +lib/readline/rldefs.h Brian Fox, Chet Ramey +lib/readline/posixstat.h Brian Fox, Chet Ramey +lib/readline/ansi_stdlib.h Brian Fox, Chet Ramey +lib/readline/memalloc.h Chet Ramey +lib/readline/rlconf.h Chet Ramey +lib/readline/rltty.h Chet Ramey +lib/readline/history.c Brian Fox, Chet Ramey +lib/readline/histexpand.c Brian Fox, Chet Ramey +lib/readline/histfile.c Brian Fox, Chet Ramey +lib/readline/histsearch.c Brian Fox, Chet Ramey +lib/readline/history.h Brian Fox, Chet Ramey +lib/readline/histlib.h Brian Fox, Chet Ramey +lib/readline/tilde.c Brian Fox, Chet Ramey +lib/readline/tilde.h Brian Fox, Chet Ramey +lib/readline/doc/texindex.c bug-texinfo@prep.ai.mit.edu, Chet Ramey +lib/readline/doc/Makefile Brian Fox, Chet Ramey +lib/readline/doc/rlman.texinfo Brian Fox, Chet Ramey +lib/readline/doc/rltech.texinfo Brian Fox, Chet Ramey +lib/readline/doc/rluser.texinfo Brian Fox, Chet Ramey +lib/readline/doc/hist.texinfo Brian Fox, Chet Ramey +lib/readline/doc/hstech.texinfo Brian Fox, Chet Ramey +lib/readline/doc/hsuser.texinfo Brian Fox, Chet Ramey +lib/readline/examples/Makefile Brian Fox +lib/readline/examples/fileman.c Brian Fox +lib/readline/examples/manexamp.c Brian Fox +lib/readline/examples/histexamp.c Brian Fox, Chet Ramey +lib/readline/examples/rltest.c Brian Fox, Chet Ramey +lib/readline/examples/Inputrc Brian Fox, Chet Ramey +lib/termcap/Makefile.in David MacKenzie, Chet Ramey +lib/termcap/termcap.c David MacKenzie +lib/termcap/termcap.h David MacKenzie +lib/termcap/tparam.c David MacKenzie +lib/termcap/version.c David MacKenzie +lib/termcap/grot/termcap.info David MacKenzie +lib/termcap/grot/termcap.info-1 David MacKenzie +lib/termcap/grot/termcap.info-2 David MacKenzie +lib/termcap/grot/termcap.info-3 David MacKenzie +lib/termcap/grot/termcap.info-4 David MacKenzie +lib/termcap/grot/NEWS David MacKenzie +lib/termcap/grot/INSTALL David MacKenzie +lib/termcap/grot/ChangeLog David MacKenzie +lib/termcap/grot/texinfo.tex David MacKenzie +lib/termcap/grot/termcap.texi David MacKenzie +lib/termcap/grot/Makefile.in David MacKenzie +lib/termcap/grot/configure David MacKenzie +lib/termcap/grot/configure.in David MacKenzie +lib/termcap/grot/COPYING David MacKenzie +lib/termcap/grot/README David MacKenzie +lib/tilde/ChangeLog Brian Fox, Chet Ramey +lib/tilde/Makefile.in Brian Fox, Chet Ramey +lib/tilde/doc/tilde.texi Brian Fox, Chet Ramey +lib/tilde/doc/Makefile Brian Fox, Chet Ramey +lib/tilde/tilde.c Brian Fox, Chet Ramey +lib/tilde/tilde.h Brian Fox, Chet Ramey +lib/tilde/memalloc.h Brian Fox, Chet Ramey +CWRU/misc/open-files.c Chet Ramey +CWRU/misc/sigs.c Chet Ramey +CWRU/misc/pid.c Chet Ramey +CWRU/misc/sigstat.c Chet Ramey +CWRU/misc/bison Chet Ramey +CWRU/misc/aux-machine-desc Chet Ramey +CWRU/PLATFORMS Chet Ramey +CWRU/README Chet Ramey +CWRU/CWRU.CHANGES.051093 Chet Ramey +CWRU/POSIX.NOTES Chet Ramey +CWRU/CWRU.CHANGES.071193 Chet Ramey +CWRU/CWRU.CHANGES.090393 Chet Ramey +doc/Makefile.in Brian Fox, Chet Ramey +doc/bash.1 Chet Ramey +doc/builtins.1 Chet Ramey +doc/bash.ps Chet Ramey +doc/bash.txt Chet Ramey +doc/readline.3 Chet Ramey +doc/readline.ps Chet Ramey +doc/readline.txt Chet Ramey +doc/texinfo.tex Richard Stallman +doc/features.texi Brian Fox, Chet Ramey +doc/features.ps Brian Fox, Chet Ramey +doc/features.info Brian Fox, Chet Ramey +doc/features.dvi Brian Fox, Chet Ramey +doc/bash_builtins.1 Chet Ramey +doc/bash_builtins.ps Chet Ramey +doc/bash_builtins.txt Chet Ramey +doc/bash_builtins.readme Chet Ramey +doc/article.ms Chet Ramey +doc/FAQ Chet Ramey +support/cat-s Brian Fox, Chet Ramey +support/mksysdefs Brian Fox, Chet Ramey +support/mkversion.c Brian Fox, Chet Ramey +support/mksignames.c Brian Fox, Chet Ramey +support/getcppsyms.c Brian Fox, Chet Ramey +support/cppmagic Brian Fox, Chet Ramey +support/pagesize.sh Chet Ramey, Brian Fox +support/pagesize.c Chet Ramey, Brian Fox +support/bash.xbm Brian Fox +support/FAQ Brian Fox +support/PORTING Brian Fox +support/mklinks Brian Fox +support/fixlinks Chet Ramey +support/mkdirs Chet Ramey +support/clone-bash Chet Ramey +support/bashbug.sh Chet Ramey +support/mkmachtype Chet Ramey +support/recho.c Chet Ramey +support/config.guess Per Bothner, Chet Ramey +support/config.sub Richard Stallman, Chet Ramey +support/install.sh MIT X Consortium (X11R5) +support/endian.c Chet Ramey +support/printenv Chet Ramey +examples/precedence-tester Brian Fox, Chet Ramey +examples/functions/substr Brian Fox, Chet Ramey +examples/functions/kshenv Chet Ramey +examples/functions/autoload Chet Ramey +examples/functions/csh-compat Brian Fox, Chet Ramey +examples/functions/shcat Chet Ramey +examples/functions/substr2 Chet Ramey +examples/functions/term Chet Ramey +examples/functions/whatis Chet Ramey +examples/functions/whence Chet Ramey +examples/functions/func Chet Ramey +examples/functions/dirname Brian Fox, Noah Friedman +examples/functions/basename Brian Fox, Noah Friedman +examples/functions/exitstat Noah Friedman, Roland McGrath +examples/functions/external Noah Friedman +examples/functions/fact Brian Fox +examples/functions/manpage Tom Tromey +examples/functions/fstty Chet Ramey +examples/functions/jj.bash Chet Ramey +examples/functions/notify.bash Chet Ramey +examples/scripts/shprompt Chet Ramey +examples/scripts/adventure.sh Chet Ramey, Doug Gwyn +examples/scripts/bcsh.sh Chris Robertson, Chet Ramey +examples/startup-files/Bashrc Brian Fox +examples/startup-files/Bash_aliases Brian Fox +examples/startup-files/Bash_profile Brian Fox +examples/startup-files/bash-profile Brian Fox +examples/startup-files/bashrc Chet Ramey +examples/suncmd.termcap Brian Fox, Chet Ramey +examples/alias-conv.sh Brian Fox, Chet Ramey +tests/README Chet Ramey +tests/arith.tests Chet Ramey +tests/arith.right Chet Ramey +tests/array.tests Chet Ramey +tests/array.right Chet Ramey +tests/dollar-at.sh Chet Ramey +tests/dollar-star.sh Chet Ramey +tests/dollar.right Chet Ramey +tests/exp-tests Chet Ramey +tests/exp.right Chet Ramey +tests/glob-test Chet Ramey +tests/glob.right Chet Ramey +tests/ifs-test-1.sh Chet Ramey +tests/ifs-test-2.sh Chet Ramey +tests/ifs-test-3.sh Chet Ramey +tests/ifs.1.right Chet Ramey +tests/ifs.2.right Chet Ramey +tests/ifs.3.right Chet Ramey +tests/input-line.sh Chet Ramey +tests/input-line.sub Chet Ramey +tests/input.right Chet Ramey +tests/minus-e Chet Ramey +tests/minus-e.right Chet Ramey +tests/new-exp.tests Chet Ramey +tests/new-exp.right Chet Ramey +tests/prec.right Chet Ramey +tests/precedence Chet Ramey +tests/run-all Chet Ramey +tests/run-dollars Chet Ramey +tests/run-exp-tests Chet Ramey +tests/run-glob-test Chet Ramey +tests/run-ifs-tests Chet Ramey +tests/run-input-test Chet Ramey +tests/run-minus-e Chet Ramey +tests/run-new-exp Chet Ramey +tests/run-precedence Chet Ramey +tests/run-set-e-test Chet Ramey +tests/run-strip Chet Ramey +tests/run-varenv Chet Ramey +tests/set-e-test Chet Ramey +tests/set-e.right Chet Ramey +tests/strip.tests Chet Ramey +tests/strip.right Chet Ramey +tests/tilde-tests Chet Ramey +tests/tilde.right Chet Ramey +tests/varenv.right Chet Ramey +tests/varenv.sh Chet Ramey +tests/misc/chld-trap.sh Chet Ramey +tests/misc/dot-test-1.sh Chet Ramey +tests/misc/dot-test-1.sub Chet Ramey +tests/misc/gotest Chet Ramey +tests/misc/perf-script Chet Ramey +tests/misc/redir.t1.sh Chet Ramey +tests/misc/redir.t2.sh Chet Ramey +tests/misc/redir.t3.sh Chet Ramey +tests/misc/redir.t3.sub Chet Ramey +tests/misc/redir.t4.sh Chet Ramey +tests/misc/run.r1.sh Chet Ramey +tests/misc/run.r2.sh Chet Ramey +tests/misc/run.r3.sh Chet Ramey +tests/misc/sigint.t1.sh Chet Ramey +tests/misc/sigint.t2.sh Chet Ramey +tests/misc/sigint.t3.sh Chet Ramey +tests/misc/sigint.t4.sh Chet Ramey +tests/misc/test-minus-e.1 Chet Ramey +tests/misc/test-minus-e.2 Chet Ramey +lib/sh/Makefile.in Chet Ramey +lib/sh/clktck.c Chet Ramey +lib/sh/clock.c Chet Ramey +lib/sh/fmtullong.c Chet Ramey +lib/sh/fmtulong.c Chet Ramey +lib/sh/getcwd.c Chet Ramey, Roland McGrath +lib/sh/getenv.c Chet Ramey, Brian Fox +lib/sh/inet_aton.c Chet Ramey, Ulrich Drepper, Paul Vixie +lib/sh/itos.c Chet Ramey +lib/sh/mailstat.c Chet Ramey +lib/sh/makepath.c Chet Ramey +lib/sh/mktime.c Chet Ramey, Paul Eggert +lib/sh/netconn.c Chet Ramey +lib/sh/netopen.c Chet Ramey +lib/sh/oslib.c Chet Ramey, Brian Fox +lib/sh/pathcanon.c Chet Ramey +lib/sh/pathphys.c Chet Ramey +lib/sh/rename.c Chet Ramey +lib/sh/setlinebuf.c Chet Ramey, Brian Fox +lib/sh/shquote.c Chet Ramey +lib/sh/shtty.c Chet Ramey +lib/sh/snprintf.c Chet Ramey, Unknown +lib/sh/spell.c Chet Ramey +lib/sh/strcasecmp.c Chet Ramey, Brian Fox +lib/sh/strerror.c Chet Ramey, Brian Fox +lib/sh/strftime.c Arnold Robbins +lib/sh/strindex.c Chet Ramey +lib/sh/stringlist.c Chet Ramey +lib/sh/stringvec.c Chet Ramey +lib/sh/strpbrk.c Roland McGrath +lib/sh/strtod.c Chet Ramey, Roland McGrath +lib/sh/strtoimax.c Chet Ramey, Paul Eggert +lib/sh/strtol.c Chet Ramey, Paul Eggert +lib/sh/strtoll.c Chet Ramey, Paul Eggert +lib/sh/strtoul.c Chet Ramey, Paul Eggert +lib/sh/strtoull.c Chet Ramey, Paul Eggert +lib/sh/strtoumax.c Chet Ramey, Paul Eggert +lib/sh/strtrans.c Chet Ramey +lib/sh/times.c Chet Ramey, Brian Fox +lib/sh/timeval.c Chet Ramey +lib/sh/tmpfile.c Chet Ramey +lib/sh/vprint.c Chet Ramey, Brian Fox +lib/sh/xstrchr.c Chet Ramey, Mitsuru Chinen +lib/sh/zread.c Chet Ramey +lib/sh/zwrite.c Chet Ramey + +tests/posix-ifs.sh Glenn Fowler diff --git a/bash-20060316/CHANGES b/bash-20060316/CHANGES new file mode 100644 index 000000000..178a55fec --- /dev/null +++ b/bash-20060316/CHANGES @@ -0,0 +1,5287 @@ +This document details the changes between this version, bash-3.1-release, +and the previous version, bash-3.1-rc2. + +1. Changes to Readline + +a. Several changes to the multibyte redisplay code to fix problems with + prompts containing invisible characters. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.1-rc2, +and the previous version, bash-3.1-rc1. + +1. Changes to Bash + +a. Fixed a bug that caused a DEBUG trap to overwrite a command string that's + eventually attached to a background job. + +b. Changed some code so that filenames with leading tildes with spaces in the + name aren't tilde-expanded by the bash completion code. + +c. Fixed a bug that caused the pushd builtin to fail to change to + directories with leading `-'. + +d. Fixed a small memory leak in the programmable completion code. + +2. Changes to Readline + +a. Fixed a redisplay bug caused by moving the cursor vertically to a line + with invisible characters in the prompt in a multibyte locale. + +b. Fixed a bug that could cause the terminal special chars to be bound in the + wrong keymap in vi mode. + +3. New Features in Bash + +a. If compiled for strict POSIX conformance, LINES and COLUMNS may now + override the true terminal size. + +4. New Features in Readline + +a. A new external application-controllable variable that allows the LINES + and COLUMNS environment variables to set the window size regardless of + what the kernel returns. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.1-rc1, +and the previous version, bash-3.1-beta1. + +1. Changes to Bash + +a. Fixed a bug that could cause core dumps due of accessing the current + pipeline while in the middle of modifying it. + +b. Fixed a bug that caused pathnames with backslashes still quoting characters + to be passed to opendir(). + +c. Command word completion now obeys the setting of completion-ignore-case. + +d. Fixed a problem with redirection that caused file descriptors greater than + 2 to be inappropriately marked as close-on-exec. + +e. In Posix mode, after `wait' is called to wait for a particular process + explicitly, that process is removed from the list of processes known to + the shell, and subsequent attempts to wait for it return errors. + +f. Fixed a bug that caused extended pattern matching to incorrectly scan + backslash-escaped pattern characters. + +g. Fixed a synchronization problem that could cause core dumps when handling + a SIGWINCH. + +h. Fixed a bug that caused an unmatched backquote to be accepted without an + error when processing here documents. + +i. Fixed a small memory leak in the `cd' builtin. + +j. Fix for MacOS X so it gets the values for the HOSTTYPE, MACHTYPE, and + OSTYPE variables at build time, to support universal binaries. + +k. Fixed a bug that could cause an exit trap to return the exit status of + the trap command rather than the status as it was before the trap was + run as the shell's exit status. + +2. New Features in Bash + +3. Changes to Readline + +a. Fixed a bug that caused reversing the incremental search direction to + not work correctly. + +b. Fixed the vi-mode `U' command to only undo up to the first time insert mode + was entered, as Posix specifies. + +c. Fixed a bug in the vi-mode `r' command that left the cursor in the wrong + place. + +4. New Features in Readline + +a. New application-callable auxiliary function, rl_variable_value, returns + a string corresponding to a readline variable's value. + +b. When parsing inputrc files and variable binding commands, the parser + strips trailing whitespace from values assigned to boolean variables + before checking them. + + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.1-beta1, +and the previous version, bash-3.1-alpha1. + +1. Changes to Bash + +a. Added some system-specific signal names. + +b. Fixed a typo in the ulimit builtin to make `x' the right option to + maniuplate the limit on file locks. + +c. Fixed a problem with using += to append to index 0 of an array variable + when not using subscript syntax. + +d. A few changes to configure.in to remove calls to obsolete or outdated + macros. + +e. Make sure changes to variables bash handles specially (e.g., LC_ALL) are + made when the variable is set in the temporary environment to a command. + +f. Make sure changes to variables bash handles specially (e.g., LC_ALL) are + made when the variable is modified using `printf -v'. + +g. The export environment is now remade on cygwin when HOME is changed, so + DLLs bash is linked against pick up the new value. This fixes problems + with tilde expansion when linking against and already-installed readline. + +h. Small fix to the logic for performing tilde expansion in posix mode, so + expansion on the right-hand side of an assignment statement takes place. + +i. Fixed a bug that prevented redirections associated with a shell function + from being executed when in a subshell. + +j. Fixed `source' and `.' builtins to not require an executable file when + searching $PATH for a file to source. + +k. Fixed a bug that caused incorrect word splitting in a function when IFS + was declared local, then unset. + +l. Fixed a problem with the `kill' builtin that prevented sending signals + to a process group under certain circumstances when providing a pid < 0. + +m. When in POSIX mode, `pwd' now checks that the value it prints is the same + directory as `.', even when displaying $PWD. + +n. Fixed a problem with the `read' builtin when reading a script from standard + input and reading data from the same file. + +o. Fixed a problem with the `type' and `command' builtins that caused absolute + pathnames to be displayed incorrectly. + +p. Some changes to the `bg' builtin for POSIX conformance. + +q. The `fc' builtin now removes the `fc' command that caused it to invoke an + editor on specified history entries from the history entirely, rather than + simply ignoring it. + +r. When in POSIX mode, the `v' command in vi editing mode simply invokes vi + on the current command, rather than checking $FCEDIT and $EDITOR. + +s. Fixed a small memory leak in the pathname canonicalization code. + +t. Fixed a bug that caused the expanded value of a $'...' string to be + incorrectly re-quoted if it occurred within a double-quoted ${...} + parameter expansion. + +u. Restored default emacs-mode key binding of M-TAB to dynamic-complete-history. + +v. Fixed a bug that caused core dumps when interrupting loops running builtins + on some systems. + +w. Make sure that some of the functions bash provides replacements for are + not cpp defines. + +x. The code that scans embedded commands for the parser (`...` and $(...)) is + now more aware of embedded comments and their effect on quoted strings. + +y. Changed the `-n' option to the `history' builtin to not reset the number of + history lines read in the current session after reading the new lines from + the history file if the history is being appended when it is written to + the file, since the appending takes care of the problem that the adjustment + was intended to solve. + +z. Improved the error message displayed when a shell script fails to execute + because the environment and size of command line arguments are too large. + +aa. A small fix to make sure that $HISTCMD is evaluated whenever the shell is + saving commands to the history list, not just when HISTSIZE is defined. + +2. Changes to Readline + +a. The `change-case' command now correctly changes the case of multibyte + characters. + +b. Changes to the shared library construction scripts to deal with Windows + DLL naming conventions for Cygwin. + +c. Fixed the redisplay code to avoid core dumps resulting from a poorly-timed + SIGWINCH. + +d. Fixed the non-incremental search code in vi mode to dispose of any current + undo list when copying a line from the history into the current editing + buffer. + +e. The variable assignment code now ignores whitespace at the end of lines + when assigning to boolean variables. + +f. The `C-w' binding in incremental search now understands multibyte + characters. + +3. New Features in Bash + +a. A new configuration option, `--enable-strict-posix-default', which will + build bash to be POSIX conforming by default. + +4. New Features in Readline + +a. If the rl_completion_query_items is set to a value < 0, readline never + asks the user whether or not to view the possible completions. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.1-alpha1, +and the previous version, bash-3.0-release. + +1. Changes to Bash + +a. Fixed a bug that caused bash to crash if referencing an unset local array. + +b. Fixed a problem that caused tilde expansion to not be performed before + attempting globbing word completion. + +c. Fixed an incompatibility so that a first argument to trap that's a valid + signal number will be trated as a signal rather than a command to execute. + +d. Fixed ${#word} expansion to correctly compute the length of a string + containing multibyte characters. + +e. Fixed a bug that caused bash to not pass the correct flags for signal + disposition to child processes. + +f. Fixed a bug that caused `fc -l' to list one too many history entries. + +g. Some fixes to `fc' for POSIX conformance. + +h. Some fixes to job status display for POSIX conformance. + +i. Fixed a bug that caused `command -v' to display output if a command was not + found -- it should be silent. + +j. In POSIX mode, `type' and `command -[vV]' do not report non-executable + files, even if the shell will attempt to execute them. + +k. Fixed a bug that caused the `==' operator to the [[ command to not attempt + extended pattern matching. + +l. Fixed the brace expansion code to handle characters whose value exceeds 128. + +m. Fixed `printf' to handle strings with a leading `\0' whose length is + non-zero. + +n. Fixed a couple of problems with brace expansion where `${' was handled + incorrectly. + +o. Fixed off-by-one error when calculating the upper bound of `offset' when + processing the ${array[@]:offset:length} expansion. + +p. System-specific configuration changes for: FreeBSD 5.x, Interix, MacOS X + 10.4, Linux 2.4+ kernels, Linux 3.x kernels, Dragonfly BSD, QNX 6.x, + Cygwin + +q. Fixed a bug that caused the shell to ignore the status of the rightmost + command in a pipeline when the `pipefail' option was enabled. + +r. Fixed a completion bug that caused core dumps when expanding a directory + name. + +s. Fixed a bug that prevented `hash -d' from removing commands from the hash + table. + +t. Fixed word splitting to avoid really bad quadratic performance when + expanding long lists. + +u. Fixed a bug that caused negative offsets in substring expansion to use the + wrong values. + +v. Fixed a bug in printf that caused it to not return failure on write errors. + +w. Fixed a bug that caused commands in subshells to not be properly timed. + +x. The shell parser no longer attempts to parse a compound assignment specially + unless in a position where an assignment statement is acceptable or parsing + arguments to a builtin that accepts assignment statements. + +y. Fixed a problem that caused a `case' statement to be added to the history + incorrectly as a single command if the `case word' was on one line and the + `in' on another. + +z. Fixed a problem that caused internal shell quoting characters to be + incorrectly quoted with backslashes under some circumstances. + +aa. The shell now performs correct word splitting when IFS contains multibyte + characters. + +bb. The mail checking code now resets the cached file information if the size + drops to 0, even if the times don't change. + +cc. A completed command name that is found in $PATH as well as the name of a + directory in the current directory no longer has a slash appended in certain + circumstances: a single instance found in $PATH when `.' is not in $PATH, + and multiple instances found in $PATH, even when `.' is in $PATH. + +dd. Incorporated tilde expansion into the word expansion code rather than as a + separately-called function, fixing some cases where it was performed + inappropriately (e.g., after the second `=' in an assignment statement or + in a double-quoted parameter expansion). + +ee. Fixed several bugs encountered when parsing compound assignment statements, + so that compound assignments appearing as arguments to builtins are no + longer double-expanded. + +ff. Fixed a bug in the command execution code that caused asynchronous commands + containing command substitutions to not put the terminal in the wrong + process group. + +gg. Bash now handles the case where the WCONTINUED flag causes waitpid() to + return -1/EINVAL at runtime as well as configuration time. + +hh. Fixed parser to generate an error when the pipeline `argument' to `!' or + `time' is NULL. + +ii. The shell now takes a little more care when manipulating file descriptors + greater than 9 with the `exec' builtin. + +jj. Fixed a bug that caused variable assignments preceding the `command' builtin + preceding a special builtin to be preserved after the command completed in + POSIX mode. + +kk. Fixed a bug that allowed variables beginning with a digit to be created. + +ll. Fixed a bug that caused a \ to be removed when parsing a $'...' + construct. + +mm. A shell whose name begins with `-' will now be a restricted shell if the + remainder of the name indicates it should be restricted. + +nn. Fixed a bug that could cause a core dump if FUNCNAME were changed or unset + during a function's execution. + +oo. Fixed a bug that caused executing a `return' in a function to not execute + a RETURN trap. The RETURN trap is inherited by shell functions only if + function tracing is globally enabled or has been enabled for that function. + +pp. Fixed cases where var[@] was not handled exactly like var, when var is a + scalar variable. + +qq. Fixed a bug that caused the first character after a SIGINT to be discarded + under certain circumstances. + +rr. Fixed exit status code so that a suspended job returns 128+signal as its + exit status (preventing commands after it in `&&' lists from being + executed). + +ss. Fixed a bug that caused the shell parser state to be changed by executing + a shell function as a result of word completion. + +tt. Fixed a long-standing bug that caused '\177' characters in variable + values to be discarded when expanded in double-quoted strings. + +uu. Fixed a bug that caused $RANDOM to be re-seeded multiple times in a + subshell environment. + +vv. Extensive changes to the job management code to avoid the pid-reuse and + pid-aliasing problems caused by retaining the exit status of too many jobs, + but still retain as many background job statuses as POSIX requires. + +ww. Fixed a parser bug in processing \ that caused things like + + ((echo 5) \ + (echo 6)) + + to not work correctly. + +xx. `pwd -P' now sets $PWD to a directory name containing no symbolic links + when in posix mode, as POSIX requires. + +yy. In posix mode, bash no longer sets $PWD to a name containing no symbolic + links if a directory is chosen from $CDPATH. + +zz. The word splitting code now treats an IFS character that is not space, + tab, or newline and any adjacent IFS white space as a single delimiter, as + SUSv3/XPG6 require. + +aaa. The `read' builtin now checks whether or not the number of fields read 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 is what POSIX/SUS/XPG all require. + +bbb. Fixed a bug that caused `read' to always check whether or not fd 0 was a + pipe, even when reading from another file descriptor. + +ccc. Fixed a bug that caused short-circuiting of execution even if the return + value was being inverted. + +ddd. Fixed a bug that caused a core dump while decoding \W escapes in PS1 if + PWD was unset. + +eee. Fixed a bug in `read' that counted internal quoting characters for the + purposes of `read -n'. + +fff. Fixed a bug so that a function definition in a pipeline causes a child + process to be forked at the right time. + +ggg. Bash will not attempt to link against a readline library that doesn't + have rl_gnu_readline_p == 1. + +hhh. Fixed a bug that caused `read' to consume one too many characters when + reading a fixed number of characters and the Nth character is a backslash. + +iii. Fixed a bug that caused `unset' on variables in the temporary environment + to leave them set when `unset' completed. + +jjj. Fixed a bug that caused bash to close fd 2 if an `exec' failed and the + shell didn't exit. + +kkk. The completion code is more careful to not turn `/' or `///' into `//', + for those systems on which `//' has special meaning. + +lll. Fixed a bug that caused command substitution in asynchronous commands to + close the wrong file descriptors. + +mmm. The shell no longer prints status messages about terminated background + processes unless job control is active. + +nnn. Fixed a bug that prevented multiple consecutive invocations of `history -s' + from adding all the commands to the history list. + +ooo. Added a couple of changes to make arithmetic expansion more consistent in + all its contexts (still not perfect). + +ppp. Fixed a bug that caused the parser to occasionally not find the right + terminating "`" in an old-style command substitution. + +qqq. Fixed a bug that caused core dumps when the shell was reading its non- + interactive input from fd 0 and fd 0 was duplicated and restored using a + combination of `exec' (to save) and redirection (to restore). + +rrr. Fixed a problem that caused loops in sourced scripts to not be cleaned + up properly when a `return' is executed. + +sss. Change internal command substitution completion function to append a slash + to directory names in the command. + +2. Changes to Readline + +a. Fixed a bug that caused multiliine prompts to be wrapped and displayed + incorrectly. + +b. Fixed a bug that caused ^P/^N in emacs mode to fail to display the current + line correctly. + +c. Fixed a problem in computing the number of invisible characters on the first + line of a prompt whose length exceeds the screen width. + +d. Fixed vi-mode searching so that failure preserves the current line rather + than the last line in the history list. + +e. Fixed the vi-mode `~' command (change-case) to have the correct behavior at + end-of-line when manipulating multibyte characters. + +f. Fixed the vi-mode `r' command (change-char) to have the correct behavior at + end-of-line when manipulating multibyte characters. + +g. Fixed multiple bugs in the redisplay of multibyte characters: displaying + prompts longer than the screen width containing multibyte characters, + +h. Fix the calculation of the number of physical characters in the prompt + string when it contains multibyte characters. + +i. A non-zero value for the `rl_complete_suppress_append' variable now causes + no `/' to be appended to a directory name. + +j. Fixed forward-word and backward-word to work when words contained + multibyte characters. + +k. Fixed a bug in finding the delimiter of a `?' substring when performing + history expansion in a locale that supports multibyte characters. + +l. Fixed a memory leak caused by not freeing the timestamp in a history entry. + +m. Fixed a bug that caused "\M-x" style key bindings to not obey the setting + of the `convert-meta' variable. + +n. Fixed saving and restoring primary prompt when prompting for incremental + and non-incremental searches; search prompts now display multibyte + characters correctly. + +o. Fixed a bug that caused keys originally bound to self-insert but shadowed + by a multi-character key sequence to not be inserted. + +p. Fixed code so rl_prep_term_function and rl_deprep_term_function aren't + dereferenced if NULL (matching the documentation). + +q. Extensive changes to readline to add enough state so that commands + requiring additional characters (searches, multi-key sequences, numeric + arguments, commands requiring an additional specifier character like + vi-mode change-char, etc.) work without synchronously waiting for + additional input. + +r. Lots of changes so readline builds and runs on MinGW. + +s. Readline no longer tries to modify the terminal settings when running in + callback mode. + +t. The Readline display code no longer sets the location of the last invisible + character in the prompt if the \[\] sequence is empty. + +3. New Features in Bash + +a. Bash now understands LC_TIME as a special variable so that time display + tracks the current locale. + +b. BASH_ARGC, BASH_ARGV, BASH_SOURCE, and BASH_LINENO are no longer created + as `invisible' variables and may not be unset. + +c. In POSIX mode, if `xpg_echo' option is enabled, the `echo' builtin doesn't + try to interpret any options at all, as POSIX requires. + +d. The `bg' builtin now accepts multiple arguments, as POSIX seems to specify. + +e. Fixed vi-mode word completion and glob expansion to perform tilde + expansion. + +f. The `**' mathematic exponentiation operator is now right-associative. + +g. The `ulimit' builtin has new options: -i (max number of pending signals), + -q (max size of POSIX message queues), and -x (max number of file locks). + +h. A bare `%' once again expands to the current job when used as a job + specifier. + +i. The `+=' assignment operator (append to the value of a string or array) is + now supported for assignment statements and arguments to builtin commands + that accept assignment statements. + +j. BASH_COMMAND now preserves its value when a DEBUG trap is executed. + +k. The `gnu_errfmt' option is enabled automatically if the shell is running + in an emacs terminal window. + +l. New configuration option: --single-help-strings. Causes long help text + to be written as a single string; intended to ease translation. + +m. The COMP_WORDBREAKS variable now causes the list of word break characters + to be emptied when the variable is unset. + +n. An unquoted expansion of $* when $IFS is empty now causes the positional + parameters to be concatenated if the expansion doesn't undergo word + splitting. + +o. Bash now inherits $_ from the environment if it appears there at startup. + +p. New shell option: nocasematch. If non-zero, shell pattern matching ignores + case when used by `case' and `[[' commands. + +q. The `printf' builtin takes a new option: -v var. That causes the output + to be placed into var instead of on stdout. + +r. By default, the shell no longer reports processes dying from SIGPIPE. + +s. Bash now sets the extern variable `environ' to the export environment it + creates, so C library functions that call getenv() (and can't use the + shell-provided replacement) get current values of environment variables. + +4. New Features in Readline + +a. The key sequence sent by the keypad `delete' key is now automatically + bound to delete-char. + +b. A negative argument to menu-complete now cycles backward through the + completion list. + +c. A new bindable readline variable: bind-tty-special-chars. If non-zero, + readline will bind the terminal special characters to their readline + equivalents when it's called (on by default). + +d. New bindable command: vi-rubout. Saves deleted text for possible + reinsertion, as with any vi-mode `text modification' command; `X' is bound + to this in vi command mode. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.0-release, +and the previous version, bash-3.0-rc1. + +1. Changes to Bash + +a. Fixed a boundary overrun that could cause segmentation faults when the + completion code hands an incomplete construct to the word expansion + functions. + +b. Changed posix mode behavior so that an error in a variable assignment + preceding a special builtin causes a non-interactive shell to exit. + +c. Change the directory expansion portion of the completion code to not + expand embedded command substitutions if the directory name appears in + the file system. + +d. Fixed a problem that caused `bash -r' to turn on restrictions before + reading the startup files. + +e. Fixed a problem with the default operation of the `umask' builtin. + +2. Changes to Readline + +a. Fixed a problem with readline saving the contents of the current line + before beginning a non-interactive search. + +b. Fixed a problem with EOF detection when using rl_event_hook. + +c. Fixed a problem with the vi mode `p' and `P' commands ignoring numeric + arguments. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.0-rc1, +and the previous version, bash-3.0-beta1. + +1. Changes to Bash + +a. Fixed a bug that caused incorrect behavior when referecing element 0 of + an array using $array, element 0 was unset, and `set -u' was enabled. + +b. System-specific changes for: SCO Unix 3.2, Tandem. + +c. Fixed a bug that caused inappropriate word splitting when a variable was + expanded within a double-quoted string that also included $@. + +d. Fixed a bug that caused `pwd' to not display anything in physical mode + when the file system had changed underneath the shell. + +e. Fixed a bug in the pre- and post- increment and decrement parsing in the + expression evaluator that caused errors when the operands and corresponding + operators were separated by whitespace. + +f. Fixed a bug that caused `history -p' to add an entry to the history list, + counter to the documentation. (Keeps the history expansions invoked by + emacs-mode command line editing from doing that as well.) + +g. Fixed a bug that could cause a core dump if `cd' is asked to print out a + pathname longer than PATH_MAX characters. + +h. Fixed a bug that caused jobs to be put into the wrong process group under + some circumstances after enabling job control with `set -m'. + +i. `unalias' now returns failure if no alias name arguments are supplied. + +j. Documented the characters not allowed to appear in an alias name. + +k. $* is no longer expanded as if in double quotes when it appears in the + body of a here document, as the SUS seems to require. + +l. The `bashbug' script now uses a directory in $TMPDIR for exclusive + access rather than trying to guess how the underlying OS provides for + secure temporary file creation. + +m. Fixed a few problems with `cd' and `pwd' when asked to operate on pathnames + longer than PATH_MAX characters. + +n. Fixed a memory leak caused when creating multiple local array variables + with identical names. + +o. Fixed a problem with calls to getcwd() so that bash now operates better + when the full pathname to the current directory is longer than PATH_MAX + bytes. + +p. The `trap' builtin now reports an error if a single non-signal argument + is specified. + +q. Fixed a bug that caused `umask' to not work correctly when presented + with a mask of all 0s. + +r. When `getopts' reaches the end of options, OPTARG is unset, as POSIX + appears to specify. + +s. Interactive mode now depends on whether or not stdin and stderr are + connected to a tty; formerly it was stdin and stdout. POSIX requires + this. + +t. Fixed vi-mode completion to work more as POSIX specifies (e.g., doing the + right kind of filename generation). + +2. Changes to Readline + +a. Fixed a problem that could cause readline to refer to freed memory when + moving between history lines while doing searches. + +b. Improvements to the code that expands and displays prompt strings + containing multibyte characters. + +c. Fixed a problem with vi-mode not correctly remembering the numeric argument + to the last `c'hange command for later use with `.'. + +d. Fixed a bug in vi-mode that caused multi-digit count arguments to work + incorrectly. + +e. Fixed a problem in vi-mode that caused the last text modification command + to not be remembered across different command lines. + +f. Fixed problems with changing characters and changing case at the end of + the line. + +3. New Features in Bash + +a. The `jobs', `kill', and `wait' builtins now accept job control notation + even if job control is not enabled. + +b. The historical behavior of `trap' that allows a missing `action' argument + to cause each specified signal's handling to be reset to its default is + now only supported when `trap' is given a single non-option argument. + +4. New Features in Readline + +a. When listing completions, directories have a `/' appended if the + `mark-directories' option has been enabled. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.0-beta1, +and the previous version, bash-3.0-alpha. + +1. Changes to Bash + +a. Fixes to build correctly when arrays are not compiled into the shell. + +b. Fixed command substitution to run any exit trap defined in the command + substitution before returning; the exit trap is not inherited from the + calling shell. + +c. Fixes to process group synchronization code so that every child process + attempts to set the terminal's process group; fixes some synchronization + problems on Linux kernels that schedule the child to always run before + the parent. + +d. Fixed processing of octal and hex constants in printf builtin for POSIX.2 + compliance. + +e. Fixed a couple of core dumps in the pattern removal code. + +f. Fixes to the array subrange extraction code to deal better with sparse + arrays. + +g. Parser errors and other errors that result in the shell exiting now cause + the exit trap to be run. + +h. Change the command substitution completion functions to not append any + closing quote, because it would be inserted a closing "`" or ")". + +i. Fix history initialization so assignments to $histchars made in startup + files are honored. + +j. If an exit trap does not contain a call to `exit', the shell now uses + the exit status of the last command executed before the trap as the exit + status of the shell. + +k. The parser now prompts with $PS2 if it reads a newline while parsing a + compound array assignment statement. + +l. When performing a compound array assignment, the parser doesn't treat + words of the form [index]=value as assignments if they're the result of + expansions. + +m. Fixed a bug that caused `return' executed in a trap command to make the + shell think it was still running the trap. + +n. Fixed the value of errno set by the pathname canonicalization functions. + +o. Changed the grammar so that `time' alone on a line times a null command + rather than being a syntax error. + +p. The pattern substitution code no longer performs quote removal on the + pattern before trying to match it, as the pattern removal functions do. + +q. Fixed a bug that could cause core dumps when checking whether a quoted + command name was being completed. + +r. Fixes to the pattern removal and pattern replacement expansions to deal + with multibyte characters better (and faster). + +s. Fix to the substring expansion (${param:off[:len]}) to deal with (possibly + multibyte) characters instead of raw bytes. + +t. Fixed a bug that caused some key bindings set in an inputrc to be ignored + at shell startup. + +u. Fixed a bug that caused unsetting a local variable within a function to + not work correctly. + +v. Fixed a bug that caused invalid variables to be created when using + `read -a'. + +w. Fixed a bug that caused "$@" to expand incorrectly when used as the right + hand side of a parameter expansion such as ${word:="$@"} if the first + character of $IFS was not a space. + +x. Fixed a slight cosmetic problem when printing commands containing a + `>&word' redirection. + +y. Fixed a problem that could cause here documents to not be created correctly + if the system temporary directory did not allow writing. + +2. Changes to Readline + +a. Change to history expansion functions to treat `^' as equivalent to word + one, as the documention states. + +b. Some changes to the display code to improve display and redisplay of + multibyte characters. + +c. Changes to speed up the multibyte character redisplay code. + +d. Fixed a bug in the vi-mode `E' command that caused it to skip over the + last character of a word if invoked while point was on the word's + next-to-last character. + +e. Fixed a bug that could cause incorrect filename quoting when + case-insensitive completion was enabled and the word being completed + contained backslashes quoting word break characters. + +f. Fixed a bug in redisplay triggered when the prompt string contains + invisible characters. + +g. Fixed some display (and other) bugs encountered in multibyte locales + when a non-ascii character was the last character on a line. + +h. Fixed some display bugs caused by multibyte characters in prompt strings. + +i. Fixed a problem with history expansion caused by non-whitespace characters + used as history word delimiters. + +3. New Features in Bash + +a. printf builtin understands two new escape sequences: \" and \?. + +b. `echo -e' understands two new escape sequences: \" and \?. + +c. The GNU `gettext' package and libintl have been integrated; the shell's + messages can be translated into different languages. + +d. The `\W' prompt expansion now abbreviates $HOME as `~', like `\w'. + +e. The error message printed when bash cannot open a shell script supplied + as argument 1 now includes the name of the shell, to better identify + the error as coming from bash. + +4. New Features in Readline + +a. New application variable, rl_completion_quote_character, set to any + quote character readline finds before it calls the application completion + function. + +b. New application variable, rl_completion_suppress_quote, settable by an + application completion function. If set to non-zero, readline does not + attempt to append a closing quote to a completed word. + +c. New application variable, rl_completion_found_quote, set to a non-zero + value if readline determines that the word to be completed is quoted. + Set before readline calls any application completion function. + +d. New function hook, rl_completion_word_break_hook, called when readline + needs to break a line into words when completion is attempted. Allows + the word break characters to vary based on position in the line. + +e. New bindable command: unix-filename-rubout. Does the same thing as + unix-word-rubout, but adds `/' to the set of word delimiters. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.0-alpha, +and the previous version, bash-2.05b-release. + +1. Changes to Bash + +a. Fixes so that the shell will compile without some of the default options + defined. + +b. Fixed an error message that did not pass enough arguments to printf. + +c. Fixed a bug that caused input redirection to a builtin inside a script + being read from standard input to result in the rest of the already- + read and buffered script to be discarded. + +d. Fixed a bug that caused subshell initialization to close the file + descriptor from which the shell was reading a script under certain + circumstances. + +e. Fixed a bug that caused the shell to not advance a string pointer over + a null wide character when doing string operations. + +f. Fixed the internal logout code so that shells that time out waiting for + input (using $TMOUT) run ~/.bash_logout. + +g. Portability and configuration changes for: cygwin, HP/UX, GNU/FreeBSD. + +h. The parser no longer adds implicit double quotes to ((...)) arithmetic + commands. + +i. The ((...)) arithmetic command evaluation code was fixed to not dump core + when the expanded string is null. + +j. The ((...)) arithmetic command evaluation code was fixed to not perform + variable assignments while expanding the expression. + +k. Fixed a bug that caused word splitting to be performed incorrectly when + IFS is set, but null. + +l. Fixed a bug in brace expansion that caused a quoted `$' preceding an + open brace to inhibit brace expansion. + +m. Fixed a bug that caused a leading `-' in the shell's name to cause it to + not be recognized as a restricted shell. + +n. Fixed a bug in the arithmetic evaluation code that could cause longjmps + to an invalid location and result in a core dump. + +o. Fixed a bug in the calculation of how many history lines are new in a + single shell session when reading new history lines from a file with + `history -n'. + +p. Fixed a bug in pathname canonicalization that caused the shell to dump + core when presented with a pathname longer than PATH_MAX. + +q. Fixed the parser so that it doesn't try to compare a char variable to + EOF, which fails when chars are unsigned. + +r. Fixed a bug in the simple command execution code that caused occasional + core dumps. + +s. The shell does a better job of saving any partial parsing state during + operations which cause a command to be executed while a line is being + entered and parsed. + +t. The completion code now splits words more like the expansion code when + $IFS is used to split. + +u. The locale code does a better job of recomputing the various locale + variable values when LC_ALL is unset. + +v. The programmable completion code does a better job of dequoting expanded + word lists before comparing them against the word to be matched. + +w. The shell no longer seg faults if the expanded value of $PS4 is null + and `set -x' is enabled. + +x. Fixed a bug that caused core dumps when a here string expanded to NULL. + +y. The mail checking code now makes sure the mailbox is bigger before + reporting the existence of new mail. + +z. The parser does not try to expand $'...' and $"..." when the appear + within double quotes unless the `extquote' option has been enabled with + `shopt'. For backwards compatibility, it is enabled by default. + +aa. Fixed a bug that caused `for x; do ...' and `select x; do ... to use + $@ instead of "$@" for the implicit list of arguments. + +bb. Fixed a bug that caused a subshell of a restricted shell (e.g., one + spawned to execute a pipeline) to not exit immediately if attempting + to use a command containing a slash. + +cc. Fixed a problem with empty replacements for a pattern that doesn't match + when performing ${param/word/} expansion. + +dd. Word expansions performed while expanding redirections no longer search + a command's temporary environment to expand variable values. + +ee. Improvements to the alias expansion code when expanding subsequent words + because an aliase's value ends with a space. + +ff. `cd -' now prints the current working directory after a successful chdir + even when the shell is not interactive, as the standard requires. + +gg. The shell does a better job of ensuring a child process dies of SIGINT + before resending SIGINT to itself. + +hh. The arithmetic expansion variable assignment code now does the right + thing when assigning to `special' variables like OPTIND. + +ii. When history expansion verification is enabled, the bash readline helper + functions that do history expansion on the current line don't print + the results. + +jj. Fixed bugs with multiple consecutive alias expansion when one of the + expansions ends with a space. + +kk. Fixed a problem in the programmable completion code that could cause core + dumps when trying to initialize a set of possible completions from a + list of variables. + +ll. The \[ and \] escape characters are now ignored when decoding the prompt + string if the shell is started with editing disabled. + +mm. Fixed a bug that could leave extra characters in a string when doing + quoted null character removal. + +nn. Command substitution and other subshell operations no longer reset the + line number (aids the bash debugger). + +oo. Better line number management when executing simple commands, conditional + commands, for commands, and select commands. + +pp. The globbing code now uses malloc, with its better failure properties, + rather than alloca(). + +qq. Fixed a bug that caused expansions like #{a[2]:=value} to create the + appropriate array element instead of a variable named `a[2]'. + +rr. Fixed a bug in the handling of a `?(...)' pattern immediately following + a `*' when extglob is enabled. + +ss. Fixed a bug that caused a `return' invoked in an exit trap when exit is + invoked in a function to misbehave. + +tt. Fixed a bug that caused CTLESC and CTLNUL characters to not be escaped + by the internal shell string quoting functions. + +uu. Fixed a bug that caused quoted null characters in an expanded word list + to be inappropriately assigned to an array variable when using `read -a'. + +vv. Fixed a bug that caused redirections accompanying a null command to persist + in the current shell. + +ww. Fixed a bug that caused the prompt to be printed when the shell was + expanding a multiline alias. + +xx. Fixed a bug that resulted in core dumps when the completion for a command + changed the compspec. + +yy. Fixed a bug that caused evaluation of programmable completions to print + notifications of completed jobs. + +zz. Bash now disables line editing when $EMACS == `t' and $TERM == `dumb' + (which is what emacs shell windows do). + +aaa. In posix mode, `kill -l' causes signal names to be displayed without + a leading `SIG'. + +bbb. Clear error flag on standard output so it doesn't persist across multiple + builtin commands. + +ccc. In posix mode, `alias' displays alias values without the leading `alias', + so the output cannot be used as subsequent input. + +ddd. In posix mode, the `trap' builtin doesn't check whether or not its + first argument is a signal specification and revert the signal handling + to its original disposition if it is. + +eee. Fixed several bugs in the handling of "$*" and "${array[*]}" by the + pattern substitution and removal expansions. + +fff. Fixed several problems with the handling of ${array[@]}, ${array[*]}, + $@, and $* by the indirect variable expansion code. + +ggg. Fixed a bug that did not allow `time' to be aliased. + +hhh. Improved the mail checking code so it won't check (and possibly cause an + NFS file system mount) until MAILPATH or MAIL is given a value -- there + is no default if DEFAULT_MAIL_DIRECTORY is not defined at compile time. + (It is computed by configure, but can be #undef'd in config-bot.h.) + +iii. If the `chkwinsize' option is enabled, the shell checks for window size + changes if a child process exits due to a signal. + +jjj. Removed the attempts to avoid adding a slash at the end of a completed + executable name if there was a directory with the same name in the + current directory. + +kkk. Fixed PATH lookup code so it treats the permission bits separately for + owner, group, and other, rather than checking them all. + +lll. Fixed the locale code to reset the parser's idea of the character class + , which controls how it splits tokens, when the locale changes. + +mmm. The shell now binds its special readline functions and key bindings only + if the user's inputrc file has not already bound them. + +nnn. The shell now reports on processes that dump core due to signals when + invoked as `-c command'. + +2. Changes to Readline + +a. Fixes to avoid core dumps because of null pointer references in the + multibyte character code. + +b. Fix to avoid infinite recursion caused by certain key combinations. + +c. Fixed a bug that caused the vi-mode `last command' to be set incorrectly. + +d. Readline no longer tries to read ahead more than one line of input, even + when more is available. + +e. Fixed the code that adjusts the point to not mishandle null wide + characters. + +f. Fixed a bug in the history expansion `g' modifier that caused it to skip + every other match. + +g. Fixed a bug that caused the prompt to overwrite previous output when the + output doesn't contain a newline and the locale supports multibyte + characters. This same change fixes the problem of readline redisplay + slowing down dramatically as the line gets longer in multibyte locales. + +h. History traversal with arrow keys in vi insertion mode causes the cursor + to be placed at the end of the new line, like in emacs mode. + +i. The locale initialization code does a better job of using the right + precedence and defaulting when checking the appropriate environment + variables. + +j. Fixed the history word tokenizer to handle <( and >( better when used as + part of bash. + +k. The overwrite mode code received several bug fixes to improve undo. + +l. Many speedups to the multibyte character redisplay code. + +m. The callback character reading interface should not hang waiting to read + keyboard input. + +n. Fixed a bug with redoing vi-mode `s' command. + +o. The code that initializes the terminal tracks changes made to the terminal + special characters with stty(1) (or equivalent), so that these changes + are reflected in the readline bindings. New application-callable function + to make it work: rl_tty_unset_default_bindings(). + +p. Fixed a bug that could cause garbage to be inserted in the buffer when + changing character case in vi mode when using a multibyte locale. + +q. Fixed a bug in the redisplay code that caused problems on systems + supporting multibyte characters when moving between history lines when the + new line has more glyphs but fewer bytes. + +r. Undo and redo now work better after exiting vi insertion mode. + +s. Make sure system calls are restarted after a SIGWINCH is received using + SA_RESTART. + +t. Improvements to the code that displays possible completions when using + multibyte characters. + +u. Fixed a problem when parsing nested if statements in inputrc files. + +v. The completer now takes multibyte characters into account when looking for + quoted substrings on which to perform completion. + +w. The history search functions now perform better bounds checking on the + history list. + +3. New Features in Bash + +a. ANSI string expansion now implements the \x{hexdigits} escape. + +b. There is a new loadable `strftime' builtin. + +c. New variable, COMP_WORDBREAKS, which controls the readline completer's + idea of word break characters. + +d. The `type' builtin no longer reports on aliases unless alias expansion + will actually be performed. + +e. HISTCONTROL is now a colon-separated list of values, which permits + more extensibility and backwards compatibility. + +f. HISTCONTROL may now include the `erasedups' option, which causes all lines + matching a line being added to be removed from the history list. + +g. `configure' has a new `--enable-multibyte' argument that permits multibyte + character support to be disabled even on systems that support it. + +h. New variables to support the bash debugger: BASH_ARGC, BASH_ARGV, + BASH_SOURCE, BASH_LINENO, BASH_SUBSHELL, BASH_EXECUTION_STRING, + BASH_COMMAND + +i. FUNCNAME has been changed to support the debugger: it's now an array + variable. + +j. for, case, select, arithmetic commands now keep line number information + for the debugger. + +k. There is a new `RETURN' trap executed when a function or sourced script + returns (not inherited child processes; inherited by command substitution + if function tracing is enabled and the debugger is active). + +l. New invocation option: --debugger. Enables debugging and turns on new + `extdebug' shell option. + +m. New `functrace' and `errtrace' options to `set -o' cause DEBUG and ERR + traps, respectively, to be inherited by shell functions. Equivalent to + `set -T' and `set -E' respectively. The `functrace' option also controls + whether or not the DEBUG trap is inherited by sourced scripts. + +n. The DEBUG trap is run before binding the variable and running the action + list in a `for' command, binding the selection variable and running the + query in a `select' command, and before attempting a match in a `case' + command. + +o. New `--enable-debugger' option to `configure' to compile in the debugger + support code. + +p. `declare -F' now prints out extra line number and source file information + if the `extdebug' option is set. + +q. If `extdebug' is enabled, a non-zero return value from a DEBUG trap causes + the next command to be skipped, and a return value of 2 while in a + function or sourced script forces a `return'. + +r. New `caller' builtin to provide a call stack for the bash debugger. + +s. The DEBUG trap is run just before the first command in a function body is + executed, for the debugger. + +t. `for', `select', and `case' command heads are printed when `set -x' is + enabled. + +u. There is a new {x..y} brace expansion, which is shorthand for {x.x+1, + x+2,...,y}. x and y can be integers or single characters; the sequence + may ascend or descend; the increment is always 1. + +v. New ksh93-like ${!array[@]} expansion, expands to all the keys (indices) + of array. + +w. New `force_fignore' shopt option; if enabled, suffixes specified by + FIGNORE cause words to be ignored when performing word completion even + if they're the only possibilities. + +x. New `gnu_errfmt' shopt option; if enabled, error messages follow the `gnu + style' (filename:lineno:message) format. + +y. New `-o bashdefault' option to complete and compgen; if set, causes the + whole set of bash completions to be performed if the compspec doesn't + result in a match. + +z. New `-o plusdirs' option to complete and compgen; if set, causes directory + name completion to be performed and the results added to the rest of the + possible completions. + +aa. `kill' is available as a builtin even when the shell is built without + job control. + +bb. New HISTTIMEFORMAT variable; value is a format string to pass to + strftime(3). If set and not null, the `history' builtin prints out + timestamp information according to the specified format when displaying + history entries. If set, bash tells the history library to write out + timestamp information when the history file is written. + +cc. The [[ ... ]] command has a new binary `=~' operator that performs + extended regular expression (egrep-like) matching. + +dd. `configure' has a new `--enable-cond-regexp' option (enabled by default) + to enable the =~ operator and regexp matching in [[ ... ]]. + +ee. Subexpressions matched by the =~ operator are placed in the new + BASH_REMATCH array variable. + +ff. New `failglob' option that causes an expansion error when pathname + expansion fails to produce a match. + +gg. New `set -o pipefail' option that causes a pipeline to return a failure + status if any of the processes in the pipeline fail, not just the last + one. + +4. New Features in Readline + +a. History expansion has a new `a' modifier equivalent to the `g' modifier + for compatibility with the BSD csh. + +b. History expansion has a new `G' modifier equivalent to the BSD csh `g' + modifier, which performs a substitution once per word. + +c. All non-incremental search operations may now undo the operation of + replacing the current line with the history line. + +d. The text inserted by an `a' command in vi mode can be reinserted with + `.'. + +e. New bindable variable, `show-all-if-unmodified'. If set, the readline + completer will list possible completions immediately if there is more + than one completion and partial completion cannot be performed. + +f. There is a new application-callable `free_history_entry()' function. + +g. History list entries now contain timestamp information; the history file + functions know how to read and write timestamp information associated + with each entry. + +h. Four new key binding functions have been added: + + rl_bind_key_if_unbound() + rl_bind_key_if_unbound_in_map() + rl_bind_keyseq_if_unbound() + rl_bind_keyseq_if_unbound_in_map() + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05b-release, +and the previous version, bash-2.05b-beta2. + +1. Changes to Bash + +a. Fixed an off-by-one error in the function that translates job + specifications. + +b. Note that we're running under Emacs and disable line editing if + $EMACS == `t'. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05b-beta2, +and the previous version, bash-2.05b-beta1. + +1. Changes to Bash + +a. Fixed the /= and %= arithmetic operators to catch division by zero. + +b. Added putenv, setenv, unsetenv to getenv replacement for completeness. + +c. Fixed a bug that could cause the -O expand_aliases invocation option + to not take effect. + +d. Fixed a problem with process substitution that resulted in incorrect + behavior when the number of process substitutions in an individual + command approached 64. + +2. Changes to Readline + +a. Fixed a problem with backward-char-search when on a system with support + for multibyte characters when running in a locale without any multibyte + characters. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05b-beta1, +and the previous version, bash-2.05b-alpha1. + +1. Changes to Bash + +a. Fixed a problem when parsing a POSIX.2 character class name while + evaluating a bracket expression containing multibyte characters. + +b. Changed the help text for `bind' to make it clear that any command + that may be placed in ~/.inputrc is a valid argument to `bind'. + +c. Added `help' builtin entries for `((', `[[', and arithmetic for. + +d. malloc updated again: + o slightly better overflow and underflow detection by putting the + chunk size at the beginning and end of the chunk and making + sure they match in free/realloc + o partial page allocated to make things page-aligned no longer + completely wasted + o block coalescing now enabled by default + o splitting and coalescing enabled for 32-byte chunks, the most + common size requested + o fixed a problem that resulted in spurious underflow messages and + aborts + o bin sizes are precomputed and stored in an array rather than + being computed at run time + o malloc will return memory blocks back to the system if the block + being freed is at the top of the heap and of sufficient size to + make it worthwhile + o malloc/free/realloc now inline memset instead of calling the + libc function; uses Duff's device for good performance + +e. Check for getservent(); make the service name completion code dependent + on its presence. + +f. Changed the readline callback that executes a command bound to a key + sequence to not save the executed command on the history list and to + save and restore the parsing state. + +g. Changes to lib/sh/snprintf.c: fixed some bugs in the `g' and `G' + floating point format display; implemented the "'" flag character + that turns on thousands' grouping; fixed behavior on systems where + MB_CUR_MAX does not evaluate to a constant. + +h. The `unset' builtin no longer returns a failure status when asked to + unset a previously-unset variable or function. + +i. Changes to the build system to make it easier to cross-compile bash + for different systems. + +j. Added `,' to the characters that are backslash-escaped during filename + completion, to avoid problems with complete-into-braces and RCS filenames + containing commas. + +k. Some changes to the multibyte character support code to avoid many calls + to strlen(). + +l. Bash now correctly honors setting LANG to some value when LC_ALL does not + already have a value. + +m. Fixed a bug that could cause SIGSEGV when processing nested traps with + trap handlers. + +n. The `source/.' builtin now restores the positional parameters when it + returns unless they were changed using the `set' builtin during the file's + execution. + +o. Fixed a bug that caused a syntax error when a command was terminated by + EOF. + +2. New Features in Bash + +a. There is now support for placing the long help text into separate files + installed into ${datadir}/bash. Not enabled by default; can be turned + on with `--enable-separate-helpfiles' option to configure. + +b. All builtins that take operands accept a `--' pseudo-option, except + `echo'. + +c. The `echo' builtin now accepts \0xxx (zero to three octal digits following + the `0') in addition to \xxx (one to three octal digits) for SUSv3/XPG6/ + POSIX.1-2001 compliance. + +3. Changes to Readline + +a. Fixed a small problem in _rl_insert_char with multibyte characters. + +b. Fixes from IBM for line wrapping problems when using multibyte characters. + +c. Fixed a problem which caused the display to be messed up when the last + line of a multi-line prompt (possibly containing invisible characters) + was longer than the screen width. + +d. Fixed a problem with the vi-mode `r' command that ocurred on systems with + support for multibyte characters when running in a locale without any + multibyte characters. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05b-alpha1, +and the previous version, bash-2.05a-release. + +1. Changes to Bash + +a. Some changes to work around inlining differences between compilers. + +b. Added more prototypes for internal shell typedefs, to catch argument + passing errors when using pointers to functions. + +c. The `cd' builtin now fails in posix mode when a valid directory cannot be + constructed from a relative pathname argument and the $PWD using pathname + canonicalization, and the -P option has not been supplied. Previously, + the shell would attempt to use what the user typed, leading to weird + values for $PWD and discrepancies between the value of $PWD and the + actual working directory. + +d. The `cd' builtin now resets $PWD when canonicalization fails but a chdir + to the pathname passed as an argument succeeds (when not in posix mode). + +e. The `fc' builtin has been fixed, as POSIX requires, to use the closest + history position in range when given an out-of-range argument. + +f. The history file loading code was changed to allow lines to be saved in + the history list from the shell startup files. + +g. `history -s args' now works better in compound commands. + +h. The tilde expansion code was fixed to better recognize when it's being + invoked in an assignment context, which enables expansion after `=' + and `:'. + +i. Fixed the command name completion code so a slash is no longer appended + to a single match if there happens to be a directory with that name in + $PWD. + +j. Fixed compound array assignment to no longer perform alias expansion, to + allow reserved words as array members, and to not produce extra output + when the `-v' option had been enabled. + +k. Fixed the programmable completion code to better handle newlines in lists + of possible completions (e.g., `complete -W'). + +l. Removed the reserved words from the `bash-builtins' manual page. + +m. Parser error reporting now attempts to do a better job of identifying the + token in error rather than doing straight textual analysis. + +n. Fixes for Inf/NaN, locales, wide/multibyte characters and zero-length + arguments in the library snprintf(3) replacement. + +o. `read -e' no longer does command name completion on the first word on + the line being read. + +p. `select' now returns failure if the read of the user's selection fails. + +q. Fixed a bug that could cause a core dump when setting $PIPESTATUS. + +r. Fixes to not allocate so many job slots when the shell is running a loop + with job control enabled in a subshell of an interactive shell. + +s. Fixed a bug in the trap code that caused traps to be inherited by + command substitutions in some cases. + +t. Fixed a bug that could cause alias expansion to inappropriately expand + the word following the alias. + +u. Fixed a bug in the `kill' builtin that mishandled negative pid arguments. + +v. The parser is less lenient when parsing assignment statements where the + characters before the `=' don't comprise a valid identifier. + +w. The arithmetic expression evaluation code now honors the setting of the + `-u' option when expanding variable names. + +x. Fixed the arithmetic evaluation code to allow array subscripts to be + assigned (`let b[7]=42') and auto-incremented and auto-decremented + (e.g., b[7]++). + +y. Reimplemented the existing prompt string date and time expansions using + strftime(3), which changed the output of \@ in some locales. + +z. Fixed a bug that could cause a core dump when a special shell variable + (like RANDOM) was converted to an array with a variable assignment. + +aa. Fixed a bug that would reset the handler for a signal the user had + trapped to a function that would exit the shell when setting the exit + trap in a non-interactive shell. + +bb. Changed the execve(2) wrapper code to check whether or not a failing + command is a directory before looking at whether a `#!' interpreter + failed for some reason. + +cc. Fixed a bug in the command printing code so it no longer inserts a `;' + after a newline, which produces a syntax error when reused as input. + +dd. The code that expands $PS4 no longer inherits the `-x' flag. + +ee. The bash-specific completion functions may now take advantage of the + double-TAB and M-? features of the standard readline completion + functions. + +ff. The mail checking code no longer prints a message if the checked file's + size has not increased, even if the access time is less than the modification time. + +gg. Rewrote the variable symbol table code: there is now a stack of + contexts, each possibly including a separate symbol table; there can + be more than one temporary environment supplied to nested invocations + of `./source'; the temporary environments no longer require so much + special-case code; shell functions now handle the temporary environment + and local variables more consistently; function scope exit is faster now + that the entire symbol table does not have to be traversed to dispose of + local variables; it is now easier to push vars from the temporary + environment to the shell's variable table in posix mode; some duplicated + code has been removed. + +hh. Regularized the error message printing code; builtin_error is now called + more consistently, and common error message strings are handled by small + functions. This should make eventual message translation easier. + +ii. Error messages now include the line number in a script when the shell + is not interactive. + +jj. Array subscript expansion now takes place even when the array variable is + unset, so side effects will take place. + +kk. Fixed a bug in the SICGHLD child-reaping code so that it won't find + jobs already marked as terminated if the OS reuses pids quickly enough. + +ll. Fixed a bug that could cause a signal to not interrupt the `wait' + builtin while it was waiting for a background process to terminate. + +mm. A couple of changes to make it easier for multiple shells to share history + files using `history -n', `history -r', and `history -w'. + +nn. The `getopts' builtin always increments OPTIND to point to the next + option to be handled when an option is returned, whether it's valid + or not, as POSIX 1003.x-2001 requires. + +oo. Changed some parts of the expansion code to avoid allocating and + immediately freeing memory without using the results for anything. + +pp. The shell now keeps track of $IFS internally, updating its internal map + each time the variable is assigned a new value (or at local scope exit). + This saves thousands of hash lookups for IFS, which, while individually + cheap, add up. + +qq. Rewrote the hash table code: searching and insertion are much faster now, + and it uses a better string hashing function; augmented the function + interface to simplify other parts of the code and remove duplicated code + +rr. The shell now uses a simple, generic `object cache' for allocating and + caching words and word lists, which were the major users of + malloc/free. + +ss. Fixed the assignment statement parsing code to allow whitespace and + newlines in subscripts when performing array element assignment. + +tt. The shell now issues many fewer calls to sigprocmask and other signal + masking system calls. + +uu. Fixed the `test' and conditional command file comparison operators to + work right when one file has a non-positive timestamp and the other + does not exist. + +vv. Fixed some cases where the special characters '\001' and '\177' in the + values of variables or positional parameters caused incorrect expansion + results. + +2. Changes to Readline + +a. Fixed output of comment-begin character when listing variable values. + +b. Added some default key bindings for common escape sequences produced by + HOME and END keys. + +c. Fixed the mark handling code to be more emacs-compatible. + +d. A bug was fixed in the code that prints possible completions to keep it + from printing empty strings in certain circumstances. + +e. Change the key sequence printing code to print ESC as M\- if ESC is a + meta-prefix character -- it's easier for users to understand than \e. + +f. Fixed unstifle_history() to return values that match the documentation. + +g. Fixed the event loop (rl_event_hook) to handle the case where the input + file descriptor is invalidated. + +h. Fixed the prompt display code to work better when the application has a + custom redisplay function. + +i. Changes to make reading and writing the history file a little faster, and + to cope with huge history files without calling abort(3) from xmalloc. + +j. The vi-mode `S' and `s' commands are now undone correctly. + +3. New Features in Bash + +a. If set, TMOUT is the default timeout for the `read' builtin. + +b. `type' has two new options: `-f' suppresses shell function lookup, and + `-P' forces a $PATH search. + +c. New code to handle multibyte characters. + +d. `select' was changed to be more ksh-compatible, in that the menu is + reprinted each time through the loop only if REPLY is set to NULL. + The previous behavior is available as a compile-time option. + +e. `complete -d' and `complete -o dirnames' now force a slash to be + appended to names which are symlinks to directories. + +f. There is now a bindable edit-and-execute-command readline command, + like the vi-mode `v' command, bound to C-xC-e in emacs mode. + +g. Added support for ksh93-like [:word:] character class in pattern matching. + +h. The $'...' quoting construct now expands \cX to Control-X. + +i. A new \D{...} prompt expansion; passes the `...' to strftime and inserts + the result into the expanded prompt. + +j. The shell now performs arithmetic in the largest integer size the + machine supports (intmax_t), instead of long. + +k. If a numeric argument is supplied to one of the bash globbing completion + functions, a `*' is appended to the word before expansion is attempted. + +l. The bash globbing completion functions now allow completions to be listed + with double tabs or if `show-all-if-ambiguous' is set. + +m. New `-o nospace' option for `complete' and `compgen' builtins; suppresses + readline's appending a space to the completed word. + +n. New `here-string' redirection operator: <<< word. + +o. When displaying variables, function attributes and definitions are shown + separately, allowing them to be re-used as input (attempting to re-use + the old output would result in syntax errors). + +p. There is a new configuration option `--enable-mem-scramble', controls + bash malloc behavior of writing garbage characters into memory at + allocation and free time. + +q. The `complete' and `compgen' builtins now have a new `-s/-A service' + option to complete on names from /etc/services. + +r. `read' has a new `-u fd' option to read from a specified file descriptor. + +s. Fix the completion code so that expansion errors in a directory name + don't cause a longjmp back to the command loop. + +t. Fixed word completion inside command substitution to work a little more + intuitively. + +u. The `printf' %q format specifier now uses $'...' quoting to print the + argument if it contains non-printing characters. + +v. The `declare' and `typeset' builtins have a new `-t' option. When applied + to functions, it causes the DEBUG trap to be inherited by the named + function. Currently has no effect on variables. + +w. The DEBUG trap is now run *before* simple commands, ((...)) commands, + [[...]] conditional commands, and for ((...)) loops. + +x. The expansion of $LINENO inside a shell function is only relative to the + function start if the shell is interactive -- if the shell is running a + script, $LINENO expands to the line number in the script. This is as + POSIX-2001 requires. + +y. The bash debugger in examples/bashdb has been modified to work with the + new DEBUG trap semantics, the command set has been made more gdb-like, + and the changes to $LINENO make debugging functions work better. Code + from Gary Vaughan. + +z. New [n]<&word- and [n]>&word- redirections from ksh93 -- move fds (dup + and close). + +aa. There is a new `-l' invocation option, equivalent to `--login'. + +bb. The `hash' builtin has a new `-l' option to list contents in a reusable + format, and a `-d' option to remove a name from the hash table. + +4. New Features in Readline + +a. Support for key `subsequences': allows, e.g., ESC and ESC-a to both + be bound to readline functions. Now the arrow keys may be used in vi + insert mode. + +b. When listing completions, and the number of lines displayed is more than + the screen length, readline uses an internal pager to display the results. + This is controlled by the `page-completions' variable (default on). + +c. New code to handle editing and displaying multibyte characters. + +d. The behavior introduced in bash-2.05a of deciding whether or not to + append a slash to a completed name that is a symlink to a directory has + been made optional, controlled by the `mark-symlinked-directories' + variable (default is the 2.05a behavior). + +e. The `insert-comment' command now acts as a toggle if given a numeric + argument: if the first characters on the line don't specify a + comment, insert one; if they do, delete the comment text + +f. New application-settable completion variable: + rl_completion_mark_symlink_dirs, allows an application's completion + function to temporarily override the user's preference for appending + slashes to names which are symlinks to directories. + +g. New function available to application completion functions: + rl_completion_mode, to tell how the completion function was invoked + and decide which argument to supply to rl_complete_internal (to list + completions, etc.). + +h. Readline now has an overwrite mode, toggled by the `overwrite-mode' + bindable command, which could be bound to `Insert'. + +i. New application-settable completion variable: + rl_completion_suppress_append, inhibits appending of + rl_completion_append_character to completed words. + +j. New key bindings when reading an incremental search string: ^W yanks + the currently-matched word out of the current line into the search + string; ^Y yanks the rest of the current line into the search string, + DEL or ^H deletes characters from the search string. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05a-release, +and the previous version, bash-2.05a-rc1. + +1. Changes to Bash + +a. Fixed the `printf' builtin so that the variable name supplied as an + argument to a %n conversion must be a valid shell identifier. + +b. Improved the random number generator slightly. + +c. Changes to configuration to not put -I/usr/include into $CFLAGS, since + it messes up some includes. + +d. Corrected description of POSIXLY_CORRECT in man page and info manual. + +e. Fixed a couple of cases of incorrect function prototypes that sneaked + through and caused compilation problems. + +f. A few changes to avoid potential core dumps in the programmable completion + code. + +g. Fixed a configure problem that could cause a non-existent file to show + up in LIBOBJS. + +h. Fixed a configure problem that could cause siglist.o to not be built when + required. + +i. Changes to the strtoimax and strtoumax replacement functions to work + around buggy compilers. + +j. Fixed a problem with the snprintf replacement function that could + potentially cause a core dump. + +2. Changes to Readline + +a. Fixed a locale-specific problem in the vi-mode `goto mark' command. + +b. Fixed Makefile to not put -I/usr/include into CFLAGS, since it can cause + include file problems. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05a-rc1, +and the previous version, bash-2.05a-beta1. + +1. Changes to Bash + +a. Fixed the snprintf replacement to correctly implement the `alternate form' + of the %g and %G conversions. + +b. Fixed snprintf to correctly handle the optional precision with the %g and + %G conversions. + +c. Fixed the arithmetic evaluation code to correct the values of `@' and `_' + when translating base-64 constants (they were backwards). + +d. New library functions for formatting long and long long ints. + +e. Fixed a few places where negative array subscripts could have occurred, + mostly as the result of systems using signed characters. + +f. Fixed a few places that assumed a pid_t was no wider than an int. + +g. Fixed the `maildir' mail checking code to work on systems where a + `struct stat' doesn't include an `st_blocks' member. + +h. Fixed snprintf to make `unsigned long long' conversion formats (%llu) + work better. + +i. Fixed snprintf to not print a sign when asked to do an unsigned conversion. + +j. Made configure changes to avoid compiling empty source files in lib/sh. + +k. New replacement functions (if necessary) for strtoull, strtoll, strtoimax, + strtoumax. + +l. The `printf' builtin now handles the `ll' and `j' length modifiers + directly, since they can affect the type and width of the argument + passed to printf(3). + +m. Renamed a number of the bash-specific autoconf macros in aclocal.m4 to + have more sytematic naming, with accompanying changes to configure.in. + +n. Fixed snprintf to handle long doubles and the %a/%A conversions by + falling back to sprintf, as long as sprintf supports them. + +o. Fixed return value from vsnprintf/snprintf to be the number of characters + that would have been printed, even if that number exceeds the buffer + size passed as an argument. + +p. Bash no longer attempts to define its own versions of some ctype macros + if they are implemented as functions in libc but not as macros in + . + +q. Changed the variable printing code (used by `set', `export', etc.) to + not use the $'...' syntax when in posix mode, since that caused + interoperability problems with other shells (most notably with autoconf). + When not in posix mode, it uses $'...' if the string to be printed + contains non-printing characters and regular single quotes otherwise. + +r. snprintf now recognizes the %F conversion. + +s. Fixed a bug that could cause the wrong status to be returned by a shell + function when the shell is compiled without job control and a null + command containing a command substutition was executed in the function. + +t. When in posix mode, the default value for MAILCHECK is 600. + +u. Bash only initializes FUNCNAME, GROUPS, and DIRSTACK as special variables + if they're not in the initial environment. + +v. If SECONDS appears in the initial environment with a valid integer value, + bash uses that as the starting value, as if an assignment had been + performed. + +w. Bash no longer auto-exports HOME, PATH, SHELL, or TERM, even though it + gives them default values if they don't appear in the initial environment. + +x. Bash no longer auto-exports HOSTNAME, HOSTTYPE, MACHTYPE, or OSTYPE, + even if it assigns them default values. + +y. Bash no longer removes the export attribute from SSH_CLIENT or SSH2_CLIENT + if they appear in the initial environment. + +z. Bash no longer attempts to discover if it's being run by sshd in order to + run the startup files. If the SSH_SOURCE_BASHRC is uncommented in + config-top.h it will attempt to do so as previously, but that's commented + out in the distributed version. + +aa. Fixed a typo in the code that tests for LC_NUMERIC. + +bb. The POSIXLY_CORRECT shell variable and its effects are now documented. + +cc. Some changes to several of the support shell scripts included in the + definitions to try to avoid race conditions and attacks. + +dd. Several changes to avoid warnings from `gcc -Wall'. + +ee. Fixed a problem with the `unset' builtin that could cause incorrect + results if asked to unset a variable and an array subscript in the + same command. + +ff. A few changes to the shell's temporary file creation code to avoid + potential file descriptor leaks and to prefer the system's idea of + the temporary directory to use. + +gg. Fixes to build with the C alloca in lib/malloc/alloca.c if the system + requires it but the shell has been configured --without-bash-malloc. + +hh. Updated the documentation to note that only interactive shells resend + SIGHUP to all jobs before exiting. + +ii. Fixes to only pass unquoted tilde words to tilde_expand, rather than + rely on tilde_expand or getpwnam(3) to handle the quotes (MacOS 10.x + will remove backslashes in any login name passed to getpwnam(3)). + +jj. Small change from Paul Eggert to make LINENO right in commands run with + `bash -c'. + +2. New Features in Bash + +a. The `printf' builtin now handles the %a and %A conversions if they're + implemented by printf(3). + +b. The `printf' builtin now handles the %F conversion (just about like %f). + +c. The `printf' builtin now handles the %n conversion like printf(3). The + corresponding argument is the name of a shell variable to which the + value is assigned. + +3. Changes to Readline + +a. Fixed a few places where negative array subscripts could have occurred. + +b. Fixed the vi-mode code to use a better method to determine the bounds of + the array used to hold the marks. + +c. Fixed the defines in chardefs.h to work better when chars are signed. + +d. Fixed configure.in to use the new names for bash autoconf macros. + +e. Readline no longer attempts to define its own versions of some ctype + macros if they are implemented as functions in libc but not as macros in + . + +f. Fixed a problem where rl_backward could possibly set point to before + the beginning of the line. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05a-beta1, +and the previous version, bash-2.05a-alpha1. + +1. Changes to Bash + +a. Fixed a bug in the evalution of arithmetic `for' statements when the + expanded expression is NULL. + +b. Fixed an unassigned variable problem in the redirection printing code. + +c. Added more prototypes to extern function declarations in the header + files and to static function declarations in C source files. + +d. Make sure called functions have a prototype in scope, to get the arguments + and return values right instead of casting. Removed extern function + declarations from C source files that were already included in header + files. + +e. Changed some function arguments to use function typedefs in general.h so + the prototypes can be checked. The only use of Function and VFunction + now is for unwind-protects. + +f. More const changes to function arguments and appropriate variables. + +g. Changed the mail checking support to handle `maildir'-style mail + directories. + +h. Augmented the bash malloc to pass in the file and line number information + for each malloc, realloc, and free. This should result in better error + messages. + +i. The `old' gnu malloc is no longer a configuration option. + +j. Augmented the bash malloc with optional tracing and registering allocated + and freed memory. + +k. Prompt string decoding now saves and restores the value of $? when it + expands the prompt string, so command substitutions don't change $?. + +i. Array indices are now `long', since shell arithmetic is performed as long, + and the internal arrayind_t type is used consistently. + +j. Some more `unsigned char *' fixes from Paul Eggert. + +k. Fixed a bad call to builtin_error that could cause core dumps when making + local variables. + +l. `return' may no longer be used to terminate a `select' command, for + compatibility with ksh. + +m. Changed code that reads octal numbers to do a better job of detecting + overflows. + +n. The time formatting code no longer uses absolute indices into a buffer, + because the buffer size changes depending on the size of a `time_t'. + +o. `umask' now prints four digits when printing in octal mode, for + compatibility with other shells. + +p. Lots of changes to the `printf' builtin from Paul Eggert: it handles `L' + formats and long doubles better, and internal functions have been + simpified where appropriate. + +q. Some `time_t' fixes for machines were a time_t is bigger than a long. + +r. Replaced some bash-specific autoconf macros with standard equivalents. + +s. Improvmed the code that constructs temporary filenames to make the + generated names a bit more random. + +t. Added code that checks for ascii before calling any of the is* ctype + functions. + +u. Changed some places where a `char' was used as an array subscript to use + `unsigned char', since a `char' can be negative if it's signed by default. + +v. Lots of changes to the `ulimit' builtin from Paul Eggert to add support + for the new POSIX-200x RLIM_SAVED_CUR and RLIM_SAVED_MAX values and + simplify the code. + +w. `ulimit' now prints the description of a resource in any error message + relating to fetching or setting that resource's limits. + +x. The `snprintf' replacement now computes maximum values at compile + time rather than using huge constants for things like long long. + +y. Interactive shells now ignore `set -n'. + +z. Changed the malloc bookkeeping information so that it's now 8 bytes + instead of 12 on most 32-bit machines (saving 4 bytes per allocation), + restoring 8-byte alignment. + +aa. The malloc error reporting code now attempts to print the file and line + number of the call that caused the error. + +bb. Changed the redirection error reporting code to catch EBADF errors and + report the file descriptor number rather than the file being redirected + to or from (e.g., things like `exec 4242&word' redirection now works in POSIX mode as it does by default, + since POSIX.2 leaves it unspecified. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05-beta2, +and the previous version, bash-2.05-beta1. + +1. Changes to Bash + +a. Fixed a bug in the arithmetic evaluation code so that a^=b is supported. + +b. Fixed startup so posixly_correct is retained across subshells begun to + execute scripts without a leading `#!'. + +c. Fixed a bug that caused $(< file) to not work in a (...) subshell. + +d. Added config support for Linux running on the IBM S390. + +e. Fixed a bug that caused bash to get its input pointer out of sync when + reading commands through a pipe and running a command with standard + input redirected from a file. + +f. Made a change so that command completion now makes about half as many + stat(2) calls when searching the $PATH. + +g. Fixed a bug that caused variable assignments preceding `return' to not + be propagated to the shell environment in POSIX mode. + +h. Fixed a bug with ${parameter[:]?word} -- tilde expansion was not performed + on `word'. + +i. In POSIX mode, `break' and `continue' do not complain and return success + if called when the shell is not executing a loop. + +j. Fixed `bash -o posix' to work the same as `bash --posix'. + +k. Fixed a bug where variable assignments preceding `eval' or `source/.' + would not show up in the environment exported to subshells run by the + commands. + +l. In POSIX mode, shells started to execute command substitutions inherit + the value of the `-e' option from their parent shell. + +m. In POSIX mode, aliases are expanded even in non-interactive shells. + +n. Changed some of the job control messages to display the text required by + POSIX.2 when the shell is in POSIX mode. + +o. Fixed a bug in `test' that caused it to occasionally return incorrect + results when non-numeric arguments were supplied to `-t'. + +2. Changes to Readline + +a. Some changes were made to avoid gcc warnings with -Wall. + +b. rl_get_keymap_by_name now finds keymaps case-insensitively, so + `set keymap EMACS' works. + +c. The history file writing and truncation functions now return a useful + status on error. + +d. Fixed a bug that could cause applications to dereference a NULL pointer + if a NULL second argument was passed to history_expand(). + +3. New Features in Bash + +a. doc/readline.3 has been moved to the readline distribution. + +4. New Features in Readline + +a. New function, rl_get_screen_size (int *rows, int *columns), returns + readline's idea of the screen dimensions. + +b. The timeout in rl_gather_tyi (readline keyboard input polling function) + is now settable via a function (rl_set_keyboard_input_timeout()). + +c. Renamed the max_input_history variable to history_max_entries; the old + variable is maintained for backwards compatibility. + +d. The list of characters that separate words for the history tokenizer is + now settable with a variable: history_word_delimiters. The default + value is as before. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05-beta1, +and the previous version, bash-2.05-alpha1. + +1. Changes to Bash + +a. Changes to allow shared library and object building on the GNU Hurd. + +b. Fixes to the way exported functions are placed into the environment and + cached. + +c. The globbing library once again respects locales when processing ranges + in bracket expressions while doing pattern matching. + +d. System-specific configuration changes for: Tru 64, Interix + +e. Bashbug now uses /usr/bin/editor as one of the editing alternatives, and + will use mktemp(1) or tempfile(1), if present, for temporary file creation. + +f. Bash no longer performs a binary file check on a script argument that's + really a tty (like /dev/fd/0 or /dev/stdin). + +g. Fixed a bug in the execution of shell scripts that caused the effects of + $BASH_ENV to be undone in some cases. + +h. Fixed several bugs that made `bash [-i] /dev/stdin' not work correctly. + +i. Several changes to the job control code to avoid some signal state + manipulation. + +j. The Bash malloc no longer blocks signals as often, which should make it + faster. + +k. Fixed a parsing bug that did not allow backslash to escape a single quote + inside a $'...' construct. + +l. Fixed a bug that caused things like ${var:=$'value'} to be parsed + incorrectly. This showed up in newer versions of autoconf. + +m. Fixed a bug in the bash-specific readline initialization that caused + key bindings to bash-specific function names appearing in .inputrc to + not be honored. + +n. Bash now sets the file descriptor it uses to save the file descriptor + opened on a shell script to close on exec. + +o. Fixed a bug in the prompt string decoding that caused it to misbehave + when presented an octal sequence of fewer than three characters. + +p. Fixed the `test' builtin to return an error if `[' is supplied a single + argument that is not `]'. + +q. Fixed a bug that caused subshells started to run executable shell scripts + without a leading `#!' to incorrectly inherit an argument list preceding + a shell builtin (like such a script called from a script sourced with `.', + where there were variable assignments preceding the `.' command) + +r. Fixed a bug that caused changes to variables supplied in an assignment + statement preceding a shell builtin to not be honored (like a script + run with `.'). + +s. HOSTTYPE, OSTYPE, and MACHTYPE are set only if they do not have values + when the shell is started. + +t. Fixed a bug that caused SIGINT to kill shell scripts after the script + called `wait'. + +u. The `fc' builtin now tries to create its temporary files in the directory + named by $TMPDIR. + +v. Bash no longer calls any Readline functions or uses any Readline variables + not declared in readline.h. + +w. Fixed a bug that caused some substitutions involving $@ to not be split + correctly, especially expansions of the form ${paramterOPword}. + +x. SSH2_CLIENT is now treated like SSH_CLIENT and not auto-exported if it + appears in the initial environment. + +y. Fixed a couple of problems with shell scripts without a leading `#!' + being executed out of shell functions that could cause core dumps if + such a script attempted to execute `return'. + +z. Fixed a problem with the `-nt' and `-ot' binary operators for the + `test/[' builtin and the `[[' conditional command that caused wrong + return values if one of the file arguments did not exist. + +aa. Fixed a bug that caused non-interactive shells which had previously + executed `shopt -s expand_aliases' to fail to expand aliases in a + command like `(command) &'. + +2. Changes to Readline + +a. Changes to make most (but not yet all -- there is still crlf()) of the + exported readline functions declared in readline.h have an rl_ prefix. + +b. More `const' changes in function arguments, mostly for completion + functions. + +c. Fixed a bug in rl_forward that could cause the point to be set to before + the beginning of the line in vi mode. + +d. Fixed a bug in the callback read-char interface to make it work when a + readline function pushes some input onto the input stream with + rl_execute_next (like the incremental search functions). + +e. Fixed a file descriptor leak in the history file manipulation code that + was tripped when attempting to truncate a non-regular file (like + /dev/null). + +f. Some existing variables are now documented and part of the public + interface (declared in readline.h): rl_explict_arg, rl_numeric_arg, + rl_editing_mode, rl_last_func. + +g. Renamed rltty_set_default_bindings to rl_tty_set_default_bindings and + crlf to rl_crlf, so there are no public functions declared in readline.h + without an `rl_' prefix. The old functions still exist for backwards + compatibility. + +3. New Features in Bash + +a. A new loadable builtin, realpath, which canonicalizes and expands symlinks + in pathname arguments. + +b. When `set' is called without options, it prints function defintions in a + way that allows them to be reused as input. This affects `declare' and + `declare -p' as well. + +4. New Features in Readline + +a. New application-callable function rl_set_prompt(const char *prompt): + expands its prompt string argument and sets rl_prompt to the result. + +b. New application-callable function rl_set_screen_size(int rows, int cols): + public method for applications to set readline's idea of the screen + dimensions. + +c. The history example program (examples/histexamp.c) is now built as one + of the examples. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05-alpha1, +and the previous version, bash-2.04-release. + +1. Changes to Bash + +a. A fix was made to allow newlines in compond array assignments. + +b. configure now checks for real-time signals with unusable values. + +c. Interactive shells no longer exit if a substitution fails because of an + unset variable within a sourced file. + +d. Fixed a problem with incorrect matching of extended glob patterns when + doing pattern substitution. + +e. `{' is now quoted by the completion code when it appears in a filename. + +f. Fixed an error in pattern matching that caused the matcher to not + correctly skip the rest of a bracket expression after a character + matched. + +g. Fixed a bug in the IFS word splitting code to make a non-whitespace IFS + character preceded by IFS whitespace part of the current delimiter rather + than generating a separate field. + +h. The {!prefix@} expansion now generates separate words, analogous to $@, + when double-quoted. + +i. Command substitution now ignores NUL bytes in the command output, and the + parser ignores them on input. + +j. A fix was made to the job control code to prevent hanging processes when + the shell thinks background processes are running but the kernel returns + -1/ECHILD from waitpid(). + +k. `pwd' now prints an error message if the write fails when displaying the + current directory. + +l. When in POSIX mode, the shell prints trap dispostions without a leading + `SIG' in the signal specification. + +m. Fixed a parser bug that caused the current command's line count to be + messed up by a compound array assignment. + +n. Fixed a bug in the unwind-protect code that caused bad behavior on machines + where ints and pointers are not the same size. + +o. System-specific configure changes for: MacOS X. + +p. Changes for Cygwin to translate \r\n and \r to \n and to set file + descriptors used for reading input to text mode in various places. + +q. Fixed a bug that caused `!' to occasionally not be honored when in + a (...) subshell. + +r. Bash no longer assumes that getcwd() will return any useful error message + in the buffer passed as an argument if the call fails. + +s. The `source', `.', and `fc' builtins no longer check whether a file is + binary before reading commands from it. + +t. Subshells no longer turn off job control when they exit, since that + sometimes resulted in the terminal being reset to the wrong process + group. + +u. The history code no longer tries to save the second and subsequent lines + of a multi-line command if the first line was not saved. + +v. The history saving code now does a better job of saving blank lines in a + multi-line command. + +w. Removed a `feature' that made `ulimit' silently translate `unlimited' to + the current hard limit, which obscured some kernel error returns. + +x. Fixed the grammar so that `}' is recognized as a reserved word after + another reserved word, rather than requiring a `;' or newline. This + means that constructs like + + { { echo a b c ; } } + + work as expected. + +y. Conditional commands ([[...]]) now perform tilde expansion on their + arguments. + +z. Noted in the documentation that `set -a' will cause functions to be + exported if they are defined after `set -a' is executed. + +aa. When an interactive login shell starts, if $PWD and $HOME refer to the + same directory but are not the same string, $PWD is set to $HOME. + +bb. Fixed `printf' to handle invalid floating point numbers better. + +cc. Temporary files are now created with random filenames, to improve security. + +dd. The readline initialization code now binds the custom bash functions and + key bindings after the readline defaults are set up. + +ee. Fixed the `source' builtin to no longer overwrite a shell function's + argument list, even if the sourced file changes the positional parameters. + +ff. A bug fix was made in the expansion of `$*' in contexts where it should + not be split, like assignment statements. + +gg. Fixed a bug in the parameter substring expansion to handle conditional + arithmetic expressions ( exp ? val1 : val2 ) without cutting the expression + off at the wrong `:'. + +hh. The `<>' redirection is no longer subject to the current setting of + `noclobber', as POSIX.2 specifies. + +ii. Fixed a bug in the conditional command parsing code that caused expressions + in parentheses to occasionally be parsed incorrectly. + +jj. Fixed a bug in the ((...)) arithmetic command to allow do...done or + {...} to follow the )) without an intervening list terminator. + +kk. `printf' now treats `\E' the same as `\e' when performing backslash escape + expansion for the `%b' format specifier. + +ll. When in POSIX mode, the shell no longer searches the current directory for + a file to be sourced with `.' or `source' if `.' is not in $PATH. + +mm. Interactive comments are no longer turned off when POSIX mode is disabled. + +nn. The UID, EUID, HOSTNAME variables are not set if they are in the shell's + environment when it starts up. + +oo. Fixed a bug in the `command' builtin so the effect of a command like + `command exec 4(...) + expansions to defer removal until after any current shell function has + finished executing. + +f. Fixed a bug in `select' which caused it to not handle the `continue' + builtin correctly. + +g. Autoconf tests added for cygwin32 and mingw32. + +2. New Features in Bash + +a. The `--with-bash-malloc' configure option replaces `--with-gnu-malloc' + (which is still there for backwards compatibility). + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.04-beta1, +and the previous version, bash-2.04-alpha1. + +1. Changes to Bash + +a. Fixed a bug in the programmable completion code that occurred when + trying to complete command lines containing a `;' or `@'. + +b. The file descriptor from which the shell is reading a script is now + moved to a file descriptor above the user-addressible range. + +c. Changes to `printf' so that it can handle integers beginning with 0 + or 0x as octal and hex, respectively. + +d. Fixes to the programmable completion code so it handles nonsense like + `compgen -C xyz' gracefully. + +e. The shell no longer modifies the signal handler for SIGPROF, allowing + profiling again on certain systems. + +f. The shell checks for a new window size, if the user has requested it, + after a process exits due to a signal. + +g. Fixed a bug with variables with null values in a program's temporary + environment and the bash getenv() replacement. + +h. `declare' and the other builtins that take variable assignments as + arguments now honor `set -a' and mark modified variables for export. + +i. Some changes were made for --dump-po-strings mode when writing strings + with embedded newlines. + +j. The code that caches export strings from the initial environment now + duplicates the string rather than just pointing into the environment. + +k. The filename completion quoting code now uses single quotes by default + if the filename being completed contains newlines, since \ + has a special meaning to the parser. + +l. Bash now uses typedefs bits32_t and u_bits32_t instead of int32_t and + u_int32_t, respectively to avoid conflicts on certain Unix versions. + +m. Configuration changes were made for: Rhapsody, Mac OS, FreeBSD-3.x. + +n. Fixed a problem with hostname-to-ip-address translation in the + /dev/(tcp|udp)/hostname/port redirection code. + +o. The texinfo manual has been reorganized slightly. + +p. Filename generation (globbing) range comparisons in bracket expressions + no longer use strcoll(3) even if it is available, since it has unwanted + effects in certain locales. + +q. Fixed a cosmetic problem in the source that caused the shell to not + compile if DPAREN_ARITHMETIC was not defined but ARITH_FOR_COMMAND was. + +r. Fixed a bug in the here-document code tripped when the file descriptor + opened to the file containing the text of the here document was the + same as a redirector specified by the user. + +s. Fixed a bug where the INVERT_RETURN flag was not being set for `pipeline' + in `time ! pipeline'. + +t. Fixed a bug with the `wait' builtin which manifested itself when an + interrupt was received while the shell was waiting for asynchronous + processes in a shell script. + +u. Fixed the DEBUG trap code so that it has the correct value of $?. + +v. Fixed a bug in the parameter pattern substitution code that could cause + the shell to attempt to free unallocated memory if the pattern started + with `/' and an expansion error occurs. + +w. Fixed a bug in the positional parameter substring code that could + cause the shell to loop freeing freed memory. + +x. Fixed a bug in the positional parameter pattern substitution code so + that it correctly handles null replacement strings with a pattern + string prefixed with `%' or `#'. + +y. The shell no longer attempts to import functions from the environment if + started with `-n'. + +z. Fixed a bug that caused `return' in a command substitution executed in + a shell function to return from the function in a subshell and continue + execution. + +aa. `hash -p /pathname/with/slashes name' is no longer allowed when the shell + is restricted. + +bb. The wait* job control functions now behave better if called when there + are no unwaited-for children. + +cc. Command substitution no longer unconditionally disables job control in + the subshell started to run the command. + +dd. A bug was fixed that occasionally caused traps to mess up the parser + state. + +ee. `bashbug' now honors user headers in the mail message it sends. + +ff. A bug was fixed that caused the `:p' history modifier to not print the + history expansion if the `histverify' option was set. + +2. Changes to Readline + +a. Fixed a bug in the redisplay code for lines with more than 256 line + breaks. + +b. A bug was fixed which caused invisible character markers to not be + stripped from the prompt string if the terminal was in no-echo mode. + +c. Readline no longer tries to get the variables it needs for redisplay + from the termcap entry if the calling application has specified its + own redisplay function. Readline treats the terminal as `dumb' in + this case. + +d. Fixes to the SIGWINCH code so that a multiple-line prompt with escape + sequences is redrawn correctly. + +3. New Features in Bash + +a. `bashbug' now accepts `--help' and `--version' options. + +b. There is a new `xpg_echo' option to `shopt' that controls the behavior + of echo with respect to backslash-escaped characters at runtime. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.04-alpha1, +and the previous version, bash-2.04-devel. + +1. Changes to Bash + +a. Fixed a bug that could cause core dumps when performing substring + expansion. + +b. Shared object configuration changes for: Solaris, OSF/1 + +c. The POSIX_GLOB_LIBRARY code that uses the POSIX.2 globbing facilities + for pathname expansion now understands GLOBIGNORE. + +d. The code that implements `eval' was changed to save the value of the + current prompt, so an eval in a shell function called by the programmable + completion code will not change the prompt to $PS2. + +e. Restored the undocumented NON_INTERACTIVE_LOGIN_SHELLS #define to + config-top.h. If this is defined, all login shells will read the + startup files, not just interactive and non-interactive started with + the `--login' option. + +f. Fixed a bug that caused the expansion code to occasionally dump core if + IFS contained characters > 128. + +g. Fixed a problem with the grammar so that a newline is not required + after the `))' in the new-style arithmetic for statement; a semicolon + may be used as expected. + +h. Variable indirection may now reference the shell's special variables. + +i. The $'...' and $"..." constructs are now added to the history correctly + if they contain newlines and command-oriented history is enabled. + +j. It is now an error to try to assign a value to a function-local copy + of a readonly shell variable (declared with the `local' builtin). + +2. Changes to Readline + +a. The history file code now uses O_BINARY mode when reading and writing + the history file on cygwin32. + +3. New Features in Bash + +a. A new programmable completion facility, with two new builtin commands: + complete and compgen. + +b. configure has a new option, `--enable-progcomp', to compile in the + programmable completion features (enabled by default). + +c. `shopt' has a new option, `progcomp', to enable and disable programmable + completion at runtime. + +d. Unsetting HOSTFILE now clears the list of hostnames used for completion. + +4. New Features in Readline + +a. A new variable, rl_gnu_readline_p, always 1. The intent is that an + application can verify whether or not it is linked with the `real' + readline library or some substitute. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.04-devel, +and the previous version, bash-2.03-release. + +1. Changes to Bash + +a. System-specific configuration and source changes for: Interix, Rhapsody + +b. Fixed a bug in execute_cmd.c that resulted in a compile-time error if + JOB_CONTROL was not defined. + +c. An obscure race condition in the trap code was fixed. + +d. The string resulting from $'...' is now requoted to avoid any further + expansion. + +e. The $'...' quoting syntax now allows backslash to escape a single quote, + for ksh-93 compatibility. + +f. The $"..." quoting syntax now escapes backslashes and double quotes in + the translated string when displaying them with the --dump-po-strings + option. + +g. `echo -e' no longer converts \' to '. + +h. Fixes were made to the extended globbing code to handle embedded (...) + patterns better. + +i. Some improvements were made to the code that unsets `nodelay' mode on + the file descriptor from which bash is reading input. + +j. Some changes were made to the replacement termcap library for better + operation on MS-DOS. + +k. Some changes were made to the tilde expansion code to handle backslash + as a pathname separator on MS-DOS. + +l. The source has been reorganized a little bit -- there is now an `include' + subdirectory, and lib/posixheaders has been removed. + +m. Improvements were made to the `read' builtin so that it makes many + fewer read(2) system calls. + +n. The expansion of $- will include `c' and `s' when those options are + supplied at shell invocation. + +o. Several improvments were made to the completion code: variable completion + now works better when there are unterminated expansions, command + completion understands quotes better, and completion now works in certain + unclosed $(... constructs. + +p. The arithmetic expansion code was fixed to not need the value of a + variable being assigned a value (fixes the "ss=09; let ss=10" bug). + +q. Some changes were made to make exported environment creation faster. + +r. The html documentation will be installed into $(htmldir) if that variable + has a value when `make install' is run. + +s. Fixed a bug that would cause the bashrc file to be sourced inappropriately + when bash is started by sshd. + +t. The SSH_CLIENT environment variable is no longer auto-exported. + +u. A bug that caused redirections with (...) subshells to be performed in + the wrong order was fixed. + +v. A bug that occasionally caused inappropriate expansion of assignment + statements in compound array assignments was fixed. + +w. The code that parses the words in a compound array assignment was + simplified considerably and should work better now. + +x. Fixes to the non-job-control code in nojobs.c to make it POSIX.2-compliant + when a user attempts to retrieve the status of a terminated background + process. + +y. Fixes to the `printf' builtin so that it doesn't try to expand all + backslash escape sequences in the format string before parsing it for + % format specifiers. + +2. Changes to Readline + +a. The history library tries to truncate the history file only if it is a + regular file. + +b. A bug that caused _rl_dispatch to address negative array indices on + systems with signed chars was fixed. + +c. rl-yank-nth-arg now leaves the history position the same as when it was + called. + +d. Changes to the completion code to handle MS-DOS drive-letter:pathname + filenames. + +e. Completion is now case-insensitive by default on MS-DOS. + +f. Fixes to the history file manipulation code for MS-DOS. + +g. Readline attempts to bind the arrow keys to appropriate defaults on MS-DOS. + +h. Some fixes were made to the redisplay code for better operation on MS-DOS. + +i. The quoted-insert code will now insert tty special chars like ^C. + +j. A bug was fixed that caused the display code to reference memory before + the start of the prompt string. + +k. More support for __EMX__ (OS/2). + +l. A bug was fixed in readline's signal handling that could cause infinite + recursion in signal handlers. + +m. A bug was fixed that caused the point to be less than zero when rl_forward + was given a very large numeric argument. + +n. The vi-mode code now gets characters via the application-settable value + of rl_getc_function rather than calling rl_getc directly. + +3. New Features in Bash + +a. The history builtin has a `-d offset' option to delete the history entry + at position `offset'. + +b. The prompt expansion code has two new escape sequences: \j, the number of + active jobs; and \l, the basename of the shell's tty device name. + +c. The `bind' builtin has a new `-x' option to bind key sequences to shell + commands. + +d. There is a new shell option, no_empty_command_completion, which, when + enabled, disables command completion when TAB is typed on an empty line. + +e. The `help' builtin has a `-s' option to just print a builtin's usage + synopsys. + +f. There are several new arithmetic operators: id++, id-- (variable + post-increment/decrement), ++id, --id (variabl pre-increment/decrement), + expr1 , expr2 (comma operator). + +g. There is a new ksh-93 style arithmetic for command: + for ((expr1 ; expr2; expr3 )); do list; done + +h. The `read' builtin has a number of new options: + -t timeout only wait timeout seconds for input + -n nchars only read nchars from input instead of a full line + -d delim read until delim rather than newline + -s don't echo input chars as they are read + +i. The redirection code now handles several filenames specially: + /dev/fd/N, /dev/stdin, /dev/stdout, and /dev/stderr, whether or + not they are present in the file system. + +j. The redirection code now recognizes pathnames of the form + /dev/tcp/host/port and /dev/udp/host/port, and tries to open a socket + of the appropriate type to the specified port on the specified host. + +k. The ksh-93 ${!prefix*} expansion, which expands to the names of all + shell variables whose names start with prefix, has been implemented. + +l. There is a new dynamic variable, FUNCNAME, which expands to the name of + a currently-executing function. Assignments to FUNCNAME have no effect. + +m. The GROUPS variable is no longer readonly; assignments to it are silently + discarded. This means it can be unset. + +4. New Features in Readline + +a. Parentheses matching is now always compiled into readline, and enabled + or disabled when the value of the `blink-matching-paren' variable is + changed. + +b. MS-DOS systems now use ~/_inputrc as the last-ditch inputrc filename. + +c. MS-DOS systems now use ~/_history as the default history file. + +d. history-search-{forward,backward} now leave the point at the end of the + line when the string to search for is empty, like + {reverse,forward}-search-history. + +e. history-search-{forward,backward} now leave the last history line found + in the readline buffer if the second or subsequent search fails. + +f. New function for use by applications: rl_on_new_line_with_prompt, used + when an application displays the prompt itself before calling readline(). + +g. New variable for use by applications: rl_already_prompted. An application + that displays the prompt itself before calling readline() must set this to + a non-zero value. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.03-release, +and the previous version, bash-2.03-beta2. + +1. Changes to Bash + +a. A file descriptor leak in the `fc' builtin was fixed. + +b. A bug was fixed in the `read' builtin that caused occasional spurious + failures when using `read -e'. + +c. The version code needed to use the value of the cpp variable + CONF_MACHTYPE rather than MACHTYPE. + +d. A new test was added to exercise the command printing and copying code. + +e. A bug was fixed that caused `time' to be recognized as a reserved word + if it was the first pattern in a `case' statement pattern list. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.03-beta2, +and the previous version, bash-2.03-beta1. + +1. Changes to Bash + +a. Slight additions to support/shobj-conf, mostly for the benefit of AIX 4.2. + +b. config.{guess,sub} support added for the NEC SX4. + +c. Changed some of the cross-compiling sections of the configure macros in + aclocal.m4 so that configure won't abort. + +d. Slight changes to how the HTML versions of the bash and readline manuals + are generated. + +e. Fixed conditional command printing to avoid interpreting printf `%'-escapes + in arguments to [[. + +f. Don't include the bash malloc on all variants of the alpha processor. + +g. Changes to configure to make --enable-profiling work on Solaris 2.x. + +h. Fixed a bug that manifested itself when shell functions were called + between calls to `getopts'. + +i. Fixed pattern substitution so that a bare `#'as a pattern causes the + replacement string to be prefixed to the search string, and a bare + `%' causes the replacement string to be appended to the search string. + +j. Fixed a bug in the command execution code that caused child processes + to occasionally have the wrong value for $!. + +2. Changes to Readline + +a. Added code to the history library to catch history substitutions using + `&' without a previous history substitution or search having been + performed. + +3. New Features in Bash + +4. New Features in Readline + +a. New bindable variable: `isearch-terminators'. + +b. New bindable function: `forward-backward-delete-char' (unbound by default). + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.03-beta1, +and the previous version, bash-2.03-alpha. + +1. Changes to Bash + +a. A change was made to the help text for `{...}' to make it clear that a + semicolon is required before the closing brace. + +b. A fix was made to the `test' builtin so that syntax errors cause test + to return an exit status > 1. + +c. Globbing is no longer performed on assignment statements that appear as + arguments to `assignment builtins' such as `export'. + +d. System-specific configuration changes were made for: Rhapsody, + AIX 4.2/gcc, BSD/OS 4.0. + +e. New loadable builtins: ln, unlink. + +f. Some fixes were made to the globbing code to handle extended glob patterns + which immediately follow a `*'. + +g. A fix was made to the command printing code to ensure that redirections + following compound commands have a space separating them from the rest + of the command. + +h. The pathname canonicalization code was changed to produce fewer leading + `//' sequences, since those are interpreted as network file system + pathnames on some systems. + +i. A fix was made so that loops containing `eval' commands in commands passed + to `bash -c' would not exit prematurely. + +j. Some changes were made to the job reaping code when the shell is not + interactive, so the shell will retain exit statuses longer for examination + by `wait'. + +k. A fix was made so that `jobs | command' works again. + +l. The erroneous compound array assignment var=((...)) is now a syntax error. + +m. A change was made to the dynamic loading code in `enable' to support + Tenon's MachTen. + +n. A fix was made to the globbing code so that extended globbing patterns + will correctly match `.' in a bracket expression. + +2. Changes to Readline + +a. A fix was made to the completion code in which a typo caused the wrong + value to be passed to the function that computed the longest common + prefix of the list of matches. + +b. The completion code now checks the value of rl_filename_completion_desired, + which is set by application-supplied completion functions to indicate + that filename completion is being performed, to decide whether or not to + call an application-supplied `ignore completions' function. + +3. New Features in Bash + +a. A change was made to the startup file code so that any shell begun with + the `--login' option, even non-interactive shells, will source the login + shell startup files. + +4. New Features in Readline + +a. A new variable, rl_erase_empty_line, which, if set by an application using + readline, will cause readline to erase, prompt and all, lines on which the + only thing typed was a newline. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.03-alpha, +and the previous version, bash-2.02.1-release. + +1. Changes to Bash + +a. System-specific configuration changes were made for: Irix 6.x, Unixware 7. + +b. The texi2dvi and texi2html scripts were updated to the latest versions + from the net. + +c. The configure tests that determine which native type is 32 bits were + changed to not require a compiled program. + +d. Fixed a bug in shell_execve that could cause memory to be freed twice + after a failed exec. + +e. The `printf' test uses `diff -a' if it's available to prevent confusion + due to the non-ascii output. + +f. Shared object configuration is now performed by a shell script, + support/shobj-conf, which generates values to be substituted into + makefiles by configure. + +g. Some changes were made to `ulimit' to avoid the use of RLIM_INVALID as a + return value. + +h. Changes were made to `ulimit' to work around HPUX 9.x's peculiar + handling of RLIMIT_FILESIZE. + +i. Some new loadable builtins were added: id, printenv, sync, whoami, push, + mkdir. `pushd', `popd', and `dirs' can now be built as regular or + loadable builtins from the same source file. + +j. Changes were made to `printf' to handle NUL bytes in the expanded format + string. + +k. The various `make clean' Makefile targets now descend into lib/sh. + +l. The `type' builtin was changed to use the internal `getopt' so that things + like `type -ap' work as expected. + +m. There is a new configuration option, --with-installed-readline, to link + bash with a locally-installed version of readline. Only readline version + 4.0 and later releases can support this. Shared and static libraries + are supported. The installed include files are used. + +n. There is a new autoconf macro used to find which basic type is 64 bits. + +o. Dynamic linking and loadable builtins should now work on SCO 3.2v5*, + AIX 4.2 with gcc, Unixware 7, and many other systems using gcc, where + the `-shared' options works correctly. + +p. A bug was fixed in the bash filename completion code that caused memory to + be freed twice if a directory name containing an unset variable was + completed and the -u option was set. + +q. The prompt expansion code now quotes the `$' in the `\$' expansion so it + is not processed by subsequent parameter expansion. + +r. Fixed a parsing bug that caused a single or double quote after a `$$' to + trigger ANSI C expansion or locale translation. + +s. Fixed a bug in the globbing code that caused quoted filenames containing + no globbing characters to sometimes be incorrectly expanded. + +t. Changes to the default prompt strings if prompt string decoding is not + compiled into the shell. + +u. Added `do', `then', `else', `{', and `(' to the list of keywords that may + precede the `time' reserved word. + +v. The shell may now be cross-built for BeOS as well as cygwin32. + +w. The conditional command execution code now treats `=' the same as `==' + for deciding when to perform pattern matching. + +x. The `-e' option no longer causes the shell to exit if a command exits + with a non-zero status while running the startup files. + +y. The `printf' builtin no longer dumps core if a modifier is supplied in + the format string without a conversion character (e.g. `%h'). + +z. Array assignments of the form a=(...) no longer show up in the history + list. + +aa. The parser was fixed to obey the POSIX.2 rules for finding the closing + `}' in a ${...} expression. + +bb. The history file is now opened with mode 0600 rather than 0666, so bash + no longer relies on the user's umask being set appropriately. + +cc. Setting LANG no longer causes LC_ALL to be assigned a value; bash now + relies on proper behavior from the C library. + +dd. Minor changes were made to allow quoted variable expansions using + ${...} to be completed correctly if there is no closing `"'. + +ee. Changes were made to builtins/Makefile.in so that configuring the shell + with `--enable-profiling' works right and builtins/mkbuiltins is + generated. + +2. Changes to Readline + +a. The version number is now 4.0. + +b. There is no longer any #ifdef SHELL code in the source files. + +c. Some changes were made to the key binding code to fix memory leaks and + better support Win32 systems. + +d. Fixed a silly typo in the paren matching code -- it's microseconds, not + milliseconds. + +e. The readline library should be compilable by C++ compilers. + +f. The readline.h public header file now includes function prototypes for + all readline functions, and some changes were made to fix errors in the + source files uncovered by the use of prototypes. + +g. The maximum numeric argument is now clamped at 1000000. + +h. Fixes to rl_yank_last_arg to make it behave better. + +i. Fixed a bug in the display code that caused core dumps if the prompt + string length exceeded 1024 characters. + +j. The menu completion code was fixed to properly insert a single completion + if there is only one match. + +k. A bug was fixed that caused the display code to improperly display tabs + after newlines. + +3. New Features in Bash + +a. New `shopt' option, `restricted_shell', indicating whether or not the + shell was started in restricted mode, for use in startup files. + +b. Filename generation is now performed on the words between ( and ) in + array assignments (which it probably should have done all along). + +c. OLDPWD is now auto-exported, as POSIX.2 seems to require. + +d. ENV and BASH_ENV are read-only variables in a restricted shell. + +4. New Features in Readline + +a. Many changes to the signal handling: + o Readline now catches SIGQUIT and cleans up the tty before returning; + o A new variable, rl_catch_signals, is available to application writers + to indicate to readline whether or not it should install its own + signal handlers for SIGINT, SIGTERM, SIGQUIT, SIGALRM, SIGTSTP, + SIGTTIN, and SIGTTOU; + o A new variable, rl_catch_sigwinch, is available to application + writers to indicate to readline whether or not it should install its + own signal handler for SIGWINCH, which will chain to the calling + applications's SIGWINCH handler, if one is installed; + o There is a new function, rl_free_line_state, for application signal + handlers to call to free up the state associated with the current + line after receiving a signal; + o There is a new function, rl_cleanup_after_signal, to clean up the + display and terminal state after receiving a signal; + o There is a new function, rl_reset_after_signal, to reinitialize the + terminal and display state after an application signal handler + returns and readline continues + +b. There is a new function, rl_resize_terminal, to reset readline's idea of + the screen size after a SIGWINCH. + +c. New public functions: rl_save_prompt and rl_restore_prompt. These were + previously private functions with a `_' prefix. + +d. New function hook: rl_pre_input_hook, called just before readline starts + reading input, after initialization. + +e. New function hook: rl_display_matches_hook, called when readline would + display the list of completion matches. The new function + rl_display_match_list is what readline uses internally, and is available + for use by application functions called via this hook. + +f. New bindable function, delete-char-or-list, like tcsh. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.02.1-release, +and the previous version, bash-2.02-release. + +1. Changes to Bash + +a. A bug that caused the bash readline support to not compile unless aliases + and csh-style history were configured into the shell was fixed. + +b. Fixed a bug that could cause a core dump when here documents contained + more than 1000 characters. + +c. Fixed a bug that caused a CDPATH entry of "" to not be treated the same + as the current directory when in POSIX mode. + +d. Fixed an alignment problem with the memory returned by the bash malloc, + so returned memory is now 64-bit aligned. + +e. Fixed a bug that caused command substitutions executed within pipelines + to put the terminal in the wrong process group. + +f. Fixes to support/config.sub for: alphas, SCO Open Server and Open Desktop, + Unixware 2, and Unixware 7. + +g. Fixes to the pattern matching code to make it work correctly for eight-bit + characters. + +h. Fixed a problem that occasionally caused the shell to display the wrong + value for the new working directory when changing to a directory found + in $CDPATH when in physical mode. + +i. Fixed a bug that caused core dumps when using conditional commands in + shell functions. + +j. Fixed a bug that caused the printf builtin to loop forever if the format + string did not consume any of the arguments. + +k. Fixed a bug in the parameter expansion code that caused "$@" to be + incorrectly split if $IFS did not contain a space character. + +l. Fixed a bug that could cause a core dump when completing hostnames if + the number of matching hostnames was an exact multiple of 16. + +m. Fixed a bug that caused the shell to fork too early when a command + such as `%2 &' was given. + +2. Changes to Readline + +a. Fixed a problem with redisplay that showed up when the prompt string was + longer than the screen width and the prompt contained invisible characters. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.02-release, +and the previous version, bash-2.02-beta2. + +1. Changes to Bash + +a. A bug was fixed that caused the terminal process group to be set + incorrectly when performing command substitution of builtins in a + pipeline. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.02-beta2, +and the previous version, bash-2.02-beta1. + +1. Changes to Bash + +a. Attempting to `wait' for stopped jobs now generates a warning message. + +b. Pipelines which exit due to SIGPIPE in non-interactive shells are now + not reported if the shell is compiled -DDONT_REPORT_SIGPIPE. + +c. Some changes were made to builtins/psize.sh and support/bashbug.sh to + attempt to avoid some /tmp file races and surreptitious file + substitutions. + +d. Fixed a bug that caused the shell not to compile if configured with + dparen arithmetic but without aliases. + +e. Fixed a bug that caused the input stream to be switched when assigning + empty arrays with `bash -c'. + +f. A bug was fixed in the readline expansion glue code that caused bash to + dump core when expanding lines with an unclosed single quote. + +g. A fix was made to the `cd' builtin so that using a non-empty directory + from $CDPATH results in an absolute pathname of the new current working + directory to be displayed after the current directory is changed. + +h. Fixed a bug in the variable assignment code that caused the shell to + dump core when referencing an unset variable with `set -u' enabled in + an assignment statement preceding a command. + +i. Fixed a bug in the exit trap code that caused reserved words to not be + recognized under certain circumstances. + +j. Fixed a bug in the parameter pattern substitution code so that quote + removal is performed. + +k. The shell should now configure correctly on Apple Rhapsody systems. + +l. The `kill' builtin now prints a usage message if it is not passed any + arguments. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.02-beta1, +and the previous version, bash-2.02-alpha1. + +1. Changes to Bash + +a. A few compilation bugs were fixed in the new extended globbing code. + +b. Executing arithmetic commands now sets the command name to `((' so + error messages look right. + +c. Fixed some build problems with various configuration options. + +d. The `printf' builtin now aborts immediately if an illegal format + character is encountered. + +e. The code that creates here-documents now behaves better if the file it's + trying to create already exists for some reason. + +f. Fixed a problem with the extended globbing code that made patterns like + `x+*' expand incorrectly. + +g. The prompt string expansion code no longer quotes tildes with backslashes. + +h. The bash getcwd() implementation in lib/sh/getcwd.c now behaves better in + the presence of lstat(2) failures. + +i. Fixed a bug with strsub() that caused core dumps when executing `fc -s'. + +j. The mail checking code now ensures that it has a valid default mailpath. + +k. A bug was fixed that caused local variables to be unset inappropriately + when sourcing a script from within another sourced script. + +l. A bug was fixed in the history saving code so that functions are saved + in the history list correctly if `cmdhist' is enabled, but `lithist' + is not. + +m. A bug was fixed that caused printf overflows when displaying error + messages. + +n. It should be easier to build the loadble builtins in examples/loadables, + though some manual editing of the generated Makefile is still required. + +o. The user's primary group is now always ${GROUPS[0]}. + +p. Some updates were made to support/config.guess from the GNU master copy. + +q. Some changes were made to the autoconf support for Solaris 2.6 large + files. + +r. The `command' builtins now does the right thing when confstr(3) cannot + find a value for _CS_PATH. + +s. Extended globbing expressions like `*.!(c)' are not history expanded if + `extglob' is enabled. + +t. Using the `-P' option to `cd' will force the value that is assigned to + PWD to not contain any symbolic links. + +2. Changes to Readline + +a. The code that prints completion listings now behaves better if one or + more of the filenames contains non-printable characters. + +b. The time delay when showing matching parentheses is now 0.5 seconds. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.02-alpha1, +and the previous version, bash-2.01.1-release. + +1. Changes to Bash + +a. OS-specific configuration changes for: BSD/OS 3.x, Minix 2.x, + Solaris 2.6, SINIX SVR4. + +b. Changes were made to the generated `info' files so that `install-info' + works correctly. + +c. PWD is now auto-exported. + +d. A fix was made to the pipeline code to make sure that the shell forks + to execute simple commands consisting solely of assignment statements. + +e. Changes to the test suite for systems with 14-character filenames. + +f. The default sizes of some internal hash tables have been made smaller + to reduce the shell's memory footprint. + +g. The `((...))' arithmetic command is now executed directly instead of + being translated into `let "..."'. + +h. Fixes were made to the expansion code so that "$*", "$@", "${array[@]}", + and "${array[@]}" expand correctly when IFS does not contain a space + character, is unset, or is set to NULL. + +i. The indirect expansion code (${!var}) was changed so that the only + valid values of `var' are variable names, positional parameters, `#', + `@', and `*'. + +j. An arithmetic expression error in a $((...)) expansion now causes a + non-interactive shell running in posix mode to exit. + +k. Compound array assignment now splits the words within the parentheses + on shell metacharacters like the parser would before expansing them + and performing the assignment. This is for compatibility with ksh-93. + +l. The internal shell backslash-quoting code (used in the output of `set' + and completion) now quotes tildes if they appear at the start of the + string or after a `=' or `:'. + +m. A couple of bugs with `shopt -o' were fixed. + +n. `bash +o' now displays the same output as `set +o' before starting an + interactive shell. + +o. A bug that caused command substitution and the `eval' builtin to + occasionally free memory twice when an error was encountered was fixed. + +p. The filename globbing code no longer requires read permission for a + directory when the filename to be matched does not contain any globbing + characters, as POSIX.2 specifies. + +q. A bug was fixed so that the job containing the last asynchronous + process is not removed from the job table until a `wait' is executed + for that process or another asynchronous process is started. This + satisfies a POSIX.2 requirement. + +r. A `select' bug was fixed so that a non-numeric user response is treated + the same as a numeric response that is out of range. + +s. The shell no longer parses the value of SHELLOPTS from the environment + if it is restricted, running setuid, or running in `privileged mode'. + +t. Fixes were made to enable large file support on systems such as + Solaris 2.6, where the size of a file may be larger than can be held + in an `int'. + +u. The filename hashing code was fixed to not add `./' to the beginning of + filenames which already begin with `./'. + +v. The configure script was changed so that the GNU termcap library is not + compiled in if `prefer-curses' has been specified. + +w. HISTCONTROL and HISTIGNORE are no longer applied to the second and + subsequent lines of a multi-line command. + +x. A fix was made to `disown' so that it does a better job of catching + out-of-range jobs. + +y. Non-interactive shells no longer report the status of processes terminated + due to SIGINT, even if the standard output is a terminal. + +z. A bug that caused the output of `jobs' to have extra carriage returns + was fixed. + +aa. A bug that caused PIPESTATUS to not be set when builtins or shell + functions were executed in the foreground was fixed. + +bb. Bash now attempts to detect when it is being run by sshd, and treats + that case identically to being run by rshd. + +cc. A bug that caused `set -a' to export SHELLOPTS when one of the shell + options was changed was fixed. + +dd. The `kill' builtin now disallows empty or missing process id arguments + instead of treating them as identical to `0', which means the current + process. + +ee. `var=value declare -x var' now behaves identically to + `var=value export var'. Similarly for `var=value declare -r var' and + `var=value readonly var'. + +ff. A few memory leaks were fixed. + +gg. `alias' and `unalias' now print error messages when passed an argument + that is not an alias for printing or deletion, even when the shell is + not interactive, as POSIX.2 specifies. + +hh. `alias' and `alias -p' now return a status of 0 when no aliases are + defined, as POSIX.2 specifes. + +ii. `cd -' now prints the pathname of the new working directory if the shell + is interactive. + +jj. A fix was made so that the code that binds $PWD now copes with getcwd() + returning NULL. + +kk. `unset' now checks whether or not a function name it's trying to unset + is a valid shell identifier only when the shell is running in posix mode. + +ll. A change was made to the code that generates filenames for here documents + to make them less prone to name collisions. + +mm. The parser was changed so that `time' is recognized as a reserved word + only at the beginning of a pipeline. + +nn. The pathname canonicalization code was changed so that `//' is converted + into `/', but all other pathnames beginning with `//' are left alone, as + POSIX.2 specifies. + +oo. The `logout' builtin will no longer exit a non-interactive non-login + shell. + +2. Changes to Readline + +a. Fixed a problem in the readline test program rltest.c that caused a core + dump. + +b. The code that handles parser directives in inputrc files now displays + more error messages. + +c. The history expansion code was fixed so that the appearance of the + history comment character at the beginning of a word inhibits history + expansion for that word and the rest of the input line. + +3. New Features in Bash + +a. A new version of malloc, based on the older GNU malloc, that has many + changes, is more page-based, is more conservative with memory usage, + and does not `orphan' large blocks when they are freed. + +b. A new version of gmalloc, based on the old GLIBC malloc, with many + changes and range checking included by default. + +c. A new implementation of fnmatch(3) that includes full POSIX.2 Basic + Regular Expression matching, including character classes, collating + symbols, equivalence classes, and support for case-insensitive pattern + matching. + +d. ksh-88 egrep-style extended pattern matching ([@+*?!](patlist)) has been + implemented, controlled by a new `shopt' option, `extglob'. + +e. There is a new ksh-like `[[' compound command, which implements + extended `test' functionality. + +f. There is a new `printf' builtin, implemented according to the POSIX.2 + specification. + +g. There is a new feature for command substitution: $(< filename) now expands + to the contents of `filename', with any trailing newlines removed + (equivalent to $(cat filename)). + +h. There are new tilde prefixes which expand to directories from the + directory stack. + +i. There is a new `**' arithmetic operator to do exponentiation. + +j. There are new configuration options to control how bash is linked: + `--enable-profiling', to allow bash to be profiled with gprof, and + `--enable-static-link', to allow bash to be linked statically. + +k. There is a new configuration option, `--enable-cond-command', which + controls whether or not the `[[' command is included. It is on by + default. + +l. There is a new configuration option, `--enable-extended-glob', which + controls whether or not the ksh extended globbing feature is included. + It is enabled by default. + +m. There is a new configuration #define in config.h.top that, when enabled, + will cause all login shells to source /etc/profile and one of the user- + specific login shell startup files, whether or not the shell is + interactive. + +n. There is a new invocation option, `--dump-po-strings', to dump + a shell script's translatable strings ($"...") in GNU `po' format. + +o. There is a new `shopt' option, `nocaseglob', to enable case-insensitive + pattern matching when globbing filenames and using the `case' construct. + +p. There is a new `shopt' option, `huponexit', which, when enabled, causes + the shell to send SIGHUP to all jobs when an interactive login shell + exits. + +q. `bind' has a new `-u' option, which takes a readline function name as an + argument and unbinds all key sequences bound to that function in a + specified keymap. + +r. `disown' now has `-a' and `-r' options, to limit operation to all jobs + and running jobs, respectively. + +s. The `shopt' `-p' option now causes output to be displayed in a reusable + format. + +t. `test' has a new `-N' option, which returns true if the filename argument + has been modified since it was last accessed. + +u. `umask' now has a `-p' option to print output in a reusable format. + +v. A new escape sequence, `\xNNN', has been added to the `echo -e' and $'...' + translation code. It expands to the character whose ascii code is NNN + in hexadecimal. + +w. The prompt string expansion code has a new `\r' escape sequence. + +x. The shell may now be cross-compiled for the CYGWIN32 environment on + a Unix machine. + +4. New Features in Readline + +a. There is now an option for `iterative' yank-last-arg handline, so a user + can keep entering `M-.', yanking the last argument of successive history + lines. + +b. New variable, `print-completions-horizontally', which causes completion + matches to be displayed across the screen (like `ls -x') rather than up + and down the screen (like `ls'). + +c. New variable, `completion-ignore-case', which causes filename completion + and matching to be performed case-insensitively. + +d. There is a new bindable command, `magic-space', which causes history + expansion to be performed on the current readline buffer and a space to + be inserted into the result. + +e. There is a new bindable command, `menu-complete', which enables tcsh-like + menu completion (successive executions of menu-complete insert a single + completion match, cycling through the list of possible completions). + +f. There is a new bindable command, `paste-from-clipboard', for use on Win32 + systems, to insert the text from the Win32 clipboard into the editing + buffer. + +g. The key sequence translation code now understands printf-style backslash + escape sequences, including \NNN octal escapes. These escape sequences + may be used in key sequence definitions or macro values. + +h. An `$include' inputrc file parser directive has been added. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.01.1-release, +and the previous version, bash-2.01-release. + +1. Changes to Bash + +a. The select command was fixed to check the validity of the user's + input more strenuously. + +b. A bug was fixed that prevented `time' from timing commands correctly + when supplied as an argument to `bash -c'. + +c. A fix was made to the mail checking code to keep from adding the same + mail file to the list of files to check multiple times when parsing + $MAILPATH. + +d. Fixed an off-by-one error in the tilde expansion library. + +e. When using the compound array assignment syntax, the old value of + the array is cleared before assigning the new value. + +f. Fixed a bug that could cause a core dump when a trap handler was reset + to the default in the trap command associated with that signal. + +g. Fixed a bug in the locale code that occurred when assigning a value + to LC_ALL. + +h. A change was made to the parser so that words of the form xxx=(...) + are not considered compound assignment statements unless there are + characters before the `='. + +i. A fix was made to the command tracing code to correctly quote each + word of output. + +j. Some changes were made to the bash-specific autoconf tests to make them + more portable. + +k. Completion of words with globbing characters now correctly quotes the + result. + +l. The directory /var/spool/mail is now preferred to /usr/spool/mail when + configure is deciding on the default mail directory. + +m. The brace completion code was fixed to not quote the `{' and `}'. + +n. Some fixes were made to make $RANDOM more random in subshells. + +o. System-specific changes were made to configure for: SVR4.2 + +p. Changes were made so that completion of words containing globbing chars + substitutes the result only if a single filename was matched. + +q. The window size is now recomputed after a job is stopped with SIGTSTP if + the user has set `checkwinsize' with `shopt'. + +r. When doing substring expansion, out-of-range substring specifiers now + cause nothing to be substituted rather than an expansion error. + +s. A fix was made so that you can no longer trap `SIGEXIT' or `SIGDEBUG' -- + only `EXIT' and `DEBUG' are accepted. + +t. The display of trapped signals now uses the signal number if signals + for which bash does not know the name are trapped. + +u. A fix was made so that `bash -r' does not turn on restricted mode until + after the startup files are executed. + +v. A bug was fixed that occasionally caused a core dump when a variable + found in the temporary environment of export/declare/readonly had a + null value. + +w. A bug that occasionally caused unallocated memory to be passed to free() + when doing arithmetic substitution was fixed. + +x. A bug that caused a buffer overrun when expanding a prompt string + containing `\w' and ${#PWD} exceeded PATH_MAX was fixed. + +y. A problem with the completion code that occasionally caused it to + refer to a character before the beginning of the readline line buffer + was fixed. + +z. A bug was fixed so that the `read' builtin restarts reads when + interrupted by signals other than SIGINT. + +aa. Fixed a bug that caused a command to be freed twice when there was + an evaluation error in the `eval' command. + +2. Changes to Readline + +a. Added a missing `extern' to a declaration in readline.h that kept + readline from compiling cleanly on some systems. + +b. The history file is now opened with mode 0600 when it is written for + better security. + +c. Changes were made to the SIGWINCH handling code so that prompt redisplay + is done better. + +d. ^G now interrupts incremental searches correctly. + +e. A bug that caused a core dump when the set of characters to be quoted + when completing words was empty was fixed. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.01-release, +and the previous version, bash-2.01-beta2. + +1. Changes to Bash + +a. The `distclean' target should remove the `printenv' executable if it + has been created. + +b. The test suite was changed slightly to ensure that the error messages + are printed in English. + +c. A bug that caused the shell to dump core when a filename containing a + `/' was passed to `hash' was fixed. + +d. Pathname canonicalization now leaves a leading `//' intact, as POSIX.1 + requires. + +e. A memory leak when completing commands was fixed. + +f. A memory leak that occurred when checking the hash table for commands + with relative paths was fixed. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.01-beta2, +and the previous version, bash-2.01-beta1. + +1. Changes to Bash + +a. The `ulimit' builtin translates RLIM_INFINITY to the hard limit only if + the current (soft) limit is less than or equal to the hard limit. + +b. Fixed a bug that caused the bash emulation of strcasecmp to produce + incorrect results. + +c. A bug that caused memory to be freed twice when a trap handler resets + the trap more than once was fixed. + +d. A bug that caused machines where sizeof (pointer) > sizeof (int) to + fail (and possibly dump core) when trying to unwind-protect a null + pointer was fixed. + +e. The startup files should not be run with job control enabled. This fix + allows SIGINT to once again interrupt startup file execution. + +f. Bash should not change the SIGPROF handler if it is set to something + other than SIG_DFL. + +g. The completion code that provides bash-specific completions for readline + now quotes characters that the readline code would treat as word break + characters if they appear in a file name. + +h. The completion code now correctly quotes filenames containing a `!', + even if the user attempted to use double quotes when attempting + completion. + +i. A bug that caused the shell to dump core when `disown' was called without + arguments and there was no current job was fixed. + +j. A construct like $((foo);bar) is now processed as a command substitution + rather than as a bad arithmetic substitution. + +k. A couple of bugs that caused `fc' to not obey the `cmdhist' and `lithist' + shell options when editing and re-executing a series of commands were + fixed. + +l. A fix was made to the grammar -- the list of commands between `do' and + `done' in the body of a `for' command should be treated the same as a + while loop. + +2. Changes to Readline + +a. A couple of bugs that caused the history search functions to attempt to + free a NULL pointer were fixed. + +b. If the C library provides setlocale(3), readline does not need to look + at various environment variables to decide whether or not to go into + eight-bit mode automatically -- just check whether the current locale + is not `C' or `POSIX'. + +c. If the filename completion function finds that a directory was not closed + by a previous (interrupted) completion, it closes the directory with + closedir(). + +3. New Features in Bash + +a. New bindable readline commands: history-and-alias-expand-line and + alias-expand-line. The code was always in there, there was just no + way to execute it. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.01-beta1, +and the previous version, bash-2.01-alpha1. + +1. Changes to Bash + +a. Fixed a problem that could cause file descriptors used for process + substitution to conflict with those used explicitly in redirections. + +b. Made it easier to regenerate configure if the user changes configure.in. + +c. ${GROUPS[0]} should always be the primary group, even on systems without + multiple groups. + +d. Spelling correction is no longer enabled by default. + +e. Fixes to quoting problems in `bashbug'. + +f. OS-specific configuration changes were made for: Irix 6. + +g. OS-specific code changes were made for: QNX. + +h. A more meaningful message is now printed when the file in /tmp for a + here document cannot be created. + +i. Many changes to the shell's variable initialization code to speed + non-interactive startup. + +j. Changes to the non-job-control code so that it does not try to open + /dev/tty. + +k. The output of `set' and `export' is once again sorted, as POSIX wants. + +l. Fixed a problem caused by a recursive call reparsing the value of + $SHELLOPTS. + +m. The tilde code no longer calls getenv() when it's compiled as part of + the shell, which should eliminate problems on systems that cannot + redefine getenv(), like the NeXT OS. + +n. Fixed a problem that caused `bash -o' or `bash +o' to not list all + the shell options. + +o. Fixed `ulimit' to convert RLIM_INFINITY to the appropriate hard limit + only if the hard limit is greater than the current (soft) limit. + +p. Fixed a problem that arose when building bash in a different directory + than the source and y.tab.[ch] were remade with something other than + bison. This came up most often on NetBSD. + +q. Fixed a problem with completion -- it thought that `pwd`/[TAB] indicated + an unfinished command completion (`/), which generated errors. + +r. The bash special tilde expansions (~-, ~+) are now attempted before + calling the standard tilde expansion code, which should eliminate the + problems people have been seeing with this on Solaris 2.5.1. + +s. Added support for to places where it was missing. + +t. Changed the code that reads the output of a command substitution to not + go through stdio. This reduces the memory requirements and is faster. + +u. A number of changes to speed up export environment creation were made. + +v. A number of memory leaks were fixed as the result of running the test + scripts through Purify. + +w. Fixed a bug that caused subshells forked to interpret executable + scripts without a leading `#!' to not reinitialize the values of + the shell options. + +2. Changes to Readline + +a. History library has less `#ifdef SHELL' code -- abstracted stuff out + into application-specific function hooks. + +b. Readline no longer calls getenv() if it's compiled as part of the shell, + which should eliminate problems on systems that cannot redefine getenv(), + like the NeXT OS. + +c. Fixed translation of ESC when `untranslating' macro values. + +d. The region kill operation now fixes the mark if it ends up beyond the + boundaries of the line after the region is deleted. + +3. New Features in Bash + +a. New argument for `configure': `--with-curses'. This can be used to + override the selection of the termcap library on systems where it is + deficient. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.01-alpha1, +and the previous version, bash-2.0-release. + +1. Changes to Bash + +a. System-specific configuration changes for: FreeBSD, SunOS4, Irix, + MachTen, QNX 4.2, Harris Night Hawk, SunOS5. + +b. System-specific code changes were made for: Linux, 4.4 BSD, QNX 4.2, + HP-UX, AIX 4.2. + +c. A bug that caused the exec builtin to fail because the full pathname of + the command could not be found was fixed. + +d. The code that performs output redirections is now more resistant to + race conditions and possible security exploits. + +e. A bug that caused the shell to dump core when performing pattern + substitutions on variable values was fixed. + +f. More hosts are now recognized by the auto-configuration mechanism + (OpenBSD, QNX, others). + +g. Assignments to read-only variables that attempt to convert them to + arrays are now errors. + +h. A bug that caused shell scripts using array assignments in POSIX mode + to exit after the assignment was performed was fixed. + +i. The substring expansion code is now more careful about running off the + ends of the expanded variable value. + +j. A bug that caused completion to fail if a backquoted command substitution + appeared anywhere on the line was fixed. + +k. The `source' builtin no longer turns off history if it has been enabled + in a non-interactive shell. + +l. A bug that caused the shell to crash when `disown' was given a pid + instead of a job number was fixed. + +m. The `cd' spelling correction code will not try to change to `.' if no + directory entries match a single-character argument. + +n. A bad variable name supplied to `declare', `export', or `readonly' no + longer causes a non-interactive shell in POSIX mode to exit. + +o. Some fixes were made to the test suite to handle peculiarities of + various Unix versions. + +p. The bash completion code now quotes characters that readline would + treat as word breaks for completion but are not shell metacharacters. + +q. Bad options supplied at invocation now cause a usage message to be + displayed. + +r. Fixes were made to the code that handles DEBUG traps so that the trap + string is not freed inappropriately. + +s. Some changes were made to the bash debugger in examples/bashdb -- it + should be closer to working now. + +t. A problem that caused the default filename used for mail checking to be + wrong was fixed. + +u. A fix was made to the `echo' builtin so that NUL characters printed with + `echo -e' do not cause the output to be truncated. + +v. A fix was made to the job control code so that the shell behaves better + when monitor mode is enabled in a non-interactive shell. + +w. Bash no longer catches all of the terminating signals in a non- + interactive shell until a trap is set on EXIT, which should result in + quicker startup. + +x. A fix was made to the command timing code so that `time' can be used in + a loop. + +y. A fix was made to the parser so that `((cmd); cmd2)' is now parsed as + a nested subshell rather than strictly as an (erroneous) arithmetic + command. + +z. A fix was made to the globbing code so that it correctly matches quoted + filenames beginning with a `.'. + +aa. A bug in `fc' that caused some multi-line commands to not be stored as + one command in the history when they were re-executed after editing + (with `fc -e') was fixed. + +bb. The `ulimit' builtin now attempts to catch some classes of integer + overflows. + +cc. The command-oriented-history code no longer attempts to add `;' + inappropriately when a newline appears while reading a $(...) command + substitution. + +dd. A bug that caused the shell to dump core when `help --' was executed + was fixed. + +ee. A bug that caused the shell to crash when an unset variable appeared + in the body of a here document after `set -u' had been executed was + fixed. + +ff. Implicit input redirections from /dev/null for asynchronous commands + are now handled better. + +gg. A bug that caused the shell to fail to compile when configured with + `--disable-readline' was fixed. + +hh. The globbing code should now be interruptible. + +ii. Bash now notices when the `kill' builtin is used to send SIGCONT to a + stopped job and adjusts the data structures accordingly, as if `bg' had + been executed instead. + +jj. A bug that caused the shell to crash when mixing calls to `getopts' + and `shift' on the same set of positional parameters was fixed. + +kk. The command printing code now preserves the `-p' flag to `time'. + +ll. The command printing code now handles here documents better when there + are other redirections associated with the command. + +mm. The special glibc environment variable (NNN_GNU_nonoption_argv_flags_) + is no longer placed into the environment of executed commands -- users + of glibc had too many problems with it. + +nn. Reorganized the code that generates signames.h. The signal_names list + is now more complete but may be slightly different (SIGABRT is favored + over SIGIOT, for example). The preferred signal names are those + listed in the POSIX.2 standard. + +oo. `bashbug' now uses a filename shorter than 14 characters for its + temporary file, and asks for confirmation before sending the bug + report. + +pp. A bug that caused TAB completion in vi editing mode to not be turned + off when `set -o posix' was executed or back on when `set +o posix' + was executed was fixed. + +qq. A bug in the brace expansion code that caused brace expansions appearing + in new-style $(...) command substitutions to be inappropriately expanded + was fixed. + +rr. A bug in the readline hook shell-expand-line that could cause memory to + be inappropriately freed was fixed. + +ss. A bug that caused some arithmetic expressions containing `&&' and `||' + to be parsed with the wrong precedence has been fixed. + +tt. References to unbound variables after `set -u' has been executed now + cause the shell to exit immediately, as they should. + +uu. A bug that caused the shell to exit inappropriately when `set -e' had + been executed and a command's return status was being inverted with the + `!' reserved word was fixed. + +vv. A bug that could occasionally cause the shell to crash with a + divide-by-zero error when timing a command was fixed. + +ww. A bug that caused parameter pattern substitution to leave stray + backslashes in the replacement string when the expression is in + double quotes was fixed. + +xx. The `break' and `continue' builtins now break out of all loops when an + invalid count argument is supplied. + +yy. Fixed a bug that caused PATH to be set to the empty string if + `command -p' is executed with PATH unset. + +zz. Fixed `kill -l signum' to print the signal name without the `SIG' prefix, + as POSIX specifies. + +aaa. Fixed a bug that caused the shell to crash while setting $SHELLOPTS + if there were no shell options set. + +bbb. Fixed `export -p' and `readonly -p' so that when the shell is in POSIX + mode, their output is as POSIX.2 specifies. + +ccc. Fixed a bug in `readonly' so that `readonly -a avar=(...)' actually + creates an array variable. + +ddd. Fixed a bug that prevented `time' from correctly timing background + pipelines. + +2. Changes to Readline + +a. A bug that caused an extra newline to be printed when the cursor was on + an otherwise empty line was fixed. + +b. An instance of memory being used after it was freed was corrected. + +c. The redisplay code now works when the prompt is longer than the screen + width. + +d. `dump-macros' is now a bindable name, as it should have been all along. + +e. Non-printable characters are now expanded when displaying macros and + their values. + +f. The `dump-variables' and `dump-macros' commands now output a leading + newline if they're called as the result of a key sequence, rather + than directly by an application. + +3. New Features in Bash + +a. There is a new builtin array variable: GROUPS, the set of groups to which + the user belongs. This is used by the test suite. + +4. New Features in Readline + +a. If a key sequence bound to `universal-argument' is read while reading a + numeric argument started with `universal-argument', it terminates the + argument but is otherwise ignored. This provides a way to insert multiple + instances of a digit string, and is how GNU emacs does it. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.0-release, +and the previous version, bash-2.0-beta3. + +1. Changes to Bash + +a. Fix to the `getopts' builtin so that it does the right thing when a + required option argument is not present. + +b. The completion code now updates the common prefix of matched names + after FIGNORE processing is done, since any names that were removed + may have changed the common prefix. + +c. Fixed a bug that made messages in MAILPATH entries not work correctly. + +d. Fixed a serious documentation error in the description of the new + ${parameter:offset[:length]} expansion. + +e. Fixes to make parameter substring expansion ({$param:offset[:length]}) + work when within double quotes. + +f. Fixes to make ^A (CTLESC) survive an unquoted expansion of positional + parameters. + +g. Corrected a misspelling of `unlimited' in the output of `ulimit'. + +h. Fixed a bug that caused executable scripts without a leading `#!' to + occasionally pick up the wrong set of positional parameters. + +i. Linux systems now have a working `ulimit -v', using RLIMIT_AS. + +j. Updated config.guess so that many more machine types are recognized. + +k. Fixed a bug with backslash-quoted slashes in the ${param/pat[/sub]} + expansion. + +l. If the shell is named `-su', and `-c command' is supplied, read and + execute the login shell startup files even though the shell is not + interactive. This is to support the `-' option to `su'. + +m. Fixed a bug that caused core dumps when the DEBUG trap was ignored + with `trap "" DEBUG' and a shell function was subsequently executed. + +n. Fixed a bug that caused core dumps in the read builtin when IFS was + set to the null string and the input had leading whitespace. + +2. Changes to Readline + +a. Fixed a bug that caused a numeric argument of 1024 to be ignored when + inserting text. + +b. Fixed the display code so that the numeric argument is displayed as it's + being entered. + +c. Fixed the numeric argument reading code so that `M-- command' is + equivalent to `M--1 command', as the prompt implies. + +3. New Features in Bash + +a. `ulimit' now sets both hard and soft limits and reports the soft limit + by default (when neither -H nor -S is specified). This is compatible + with versions of sh and ksh that implement `ulimit'. + +b. Integer constants have been extended to base 64. + +4. New Features in Readline + +a. The `home' and `end' keys are now bound to beginning-of-line and + end-of-line, respectively, if the corresponding termcap capabilities + are present. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.0-beta3, +and the previous version, bash-2.0-beta2. + +1. Changes to Bash + +a. System-specific changes for: AIX 4.2, SCO 3.2v[45], HP-UX. + +b. When in POSIX mode, variable assignments preceding a special builtin + persist in the shell environment after the builtin completes. + +c. Changed all calls to getwd() to getcwd(). Improved check for systems + where the libc getcwd() calls popen(), since that breaks on some + systems when job control is being used. + +d. Fixed a bug that caused seg faults when executing scripts with the + execute bit set but without a leading `#!'. + +e. The environment passed to executed commands is never sorted. + +f. A bug was fixed in the code that expands ${name[@]} to the number of + elements in an array variable. + +g. A bug was fixed in the array compound assignment code ( A=( ... ) ). + +h. Window size changes now correctly propagate down to readline if + the shopt `checkwinsize' option is enabled. + +i. A fix was made in the code that expands to the length of a variable + value (${#var}). + +j. A fix was made to the command builtin so that it did not turn on the + `no fork' flag inappropriately. + +k. A fix was made to make `set -n' work more reliably. + +l. A fix was made to the job control initialization code so that the + terminal process group is set to the shell's process group if the + shell changes its own process group. + +2. Changes to Readline + +a. System-specific changes for: SCO 3.2v[45]. + +b. The behavior of the vi-mode `.' when redoing an `i' command was changed + to insert the text previously inserted by the `i' command rather than + simply entering insert mode. + +3. New features in Bash + +a. There is a new version of the autoload function package, in + examples/functions/autoload.v2, that uses arrays and provides more + functionality. + +b. Support for LC_COLLATE and locale-specific sorting of the results of + pathname expansion if strcoll() is available. + +4. New Features in Readline + +a. Support for locale-specific sorting of completion possibilities if + strcoll() is available. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.0-beta2, +and the previous version, bash-2.0-beta1. + +1. Changes to Bash + +a. `pushd -' is once again equivalent to `pushd $OLDPWD'. + +b. OS-specific changes for: SCO 3.2v[45]. + +c. A change was made to the fix for the recently-reported security hole + when reading characters with octal value 255 to make it work better on + systems with restartable system calls when not using readline. + +d. Some changes were made to the test suite so that it works if you + configure bash with --enable-usg-echo-default. + +e. A fix was made to the parsing of conditional arithmetic expressions. + +f. Illegal arithmetic bases now cause an arithmetic evaluation error rather + than being silently reset. + +g. Multiple arithmetic bases now cause an arithmetic evaluation error + instead of being ignored. + +h. A fix was made to the evaluation of ${param?word} to conform to POSIX.2. + +i. A bug that sometimes caused array indices to be evaluated twice (which + would cause errors when they contained assignment statements) was fixed. + +j. `ulimit' was rewritten to avoid problems with getrlimit(2) returning + unsigned values and to simplify the code. + +k. A bug in the command-oriented-history code that caused it to sometimes + put semicolons after right parens inappropriately was fixed. + +l. The values inserted into the prompt by the \w and \W escape sequences + are now quoted to prevent further expansion. + +m. An interactive shell invoked as `sh' now reads and executes commands + from the file named by $ENV when it starts up. If it's a login shell, + it does this after reading /etc/profile and ~/.profile. + +n. The file named by $ENV is never read by non-interactive shells. + +2. Changes to Readline + +a. A few changes were made to hide some macros and functions that should not + be public. + +b. An off-by-one error that caused seg faults in the history expansion code + was fixed. + +3. New Features in Bash + +a. The ksh-style ((...)) arithmetic command was implemented. It is exactly + identical to let "...". This is controlled by a new option to configure, + `--enable-dparen-arithmetic', which is on by default. + +b. There is a new #define available in config.h.top: SYS_BASH_LOGOUT. If + defined to a filename, bash reads and executes commands from that file + when a login shell exits. It's commented out by default. + +c. `ulimit' has a `-l' option that reports the maximum amount of data that + may be locked into memory on 4.4BSD-based systems. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.0-beta1, +and the previous version, bash-2.0-alpha4. + +1. Changes to Bash + +a. A bug that sometimes caused traps to be ignored on signals the + shell treats specially was fixed. + +b. The internationalization code was changed to track the values of + LC_* variables and call setlocale() as appropriate. The TEXTDOMAIN + and TEXTDOMAINDIR variables are also tracked; changes cause calls + to textdomain() and bindtextdomain(), if available. + +c. A bug was fixed that sometimes caused double-quoted strings to be + parsed incorrectly. + +d. Changes were made so that the siglist code compiles correctly on + Solaris 2.5. + +e. Added `:' to the set of characters that cause word breaks for the + completion code so that pathnames in assignments to $PATH can be + completed. + +f. The `select' command was fixed to print $PS3 to stderr. + +g. Fixed an error in the manual page section describing the effect that + setting and unsetting GLOBIGNORE has on the setting of the `dotglob' + option. + +h. The time conversion code now uses CLK_TCK rather than CLOCKS_PER_SEC + on systems without gettimeofday() and resources. + +i. The getopt static variables are now initialized each time a subshell + is started, so subshells using `getopts' work right. + +j. A sign-extension bug that caused a possible security hole was fixed. + +k. The parser now reads characters between backquotes within a double- + quoted string as a single word, so double quotes in the backquoted + string don't terminate the enclosing double-quoted string. + +l. A bug that caused `^O' to work incorrectly when typed as the first + thing to an interactive shell was fixed. + +m. A rarely-exercised off-by-one error in the code that quotes variable + values was fixed. + +n. Some memory and file descriptor leaks encountered when running a + shell script that is executable but does not have a leading `#!' + were plugged. + +2. Changes to Readline + +a. A bug that sometimes caused incorrect results when trying to read + typeahead on systems without FIONREAD was fixed. + +3. New Features in Bash + +a. The command timing code now uses the value of the TIMEFORMAT variable + to format and display timing statistics. + +b. The `time' reserved word now accepts a `-p' option to force the + POSIX.2 output format. + +c. There are a couple of new and updated scripts to convert csh startup + files to bash format. + +d. There is a new builtin array variable: BASH_VERSINFO. The various + members hold the parts of the version information in BASH_VERSION, + plus the value of MACHTYPE. + +4. New Features in Readline + +a. Setting LANG to `en_US.ISO8859-1' now causes readline to enter + eight-bit mode. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.0-alpha4, +and the previous version, bash-2.0-alpha3. + +1. Changes to Bash + +a. There is better detection of rsh connections on Solaris 2. + +b. Assignments to read-only variables preceding a command name are now + variable assignment errors. Variable assignment errors cause + non-interactive shells running in posix mode to exit. + +c. The word tokenizer was rewritten to handle nested quotes and pairs + ('', "", ``, ${...}, $(...), $[...], $'...', $"...", <(...), >(...)) + correctly. Some of the parameter expansion code was updated as a + consequence. + +d. A fix was made to `test' when given three arguments so that a binary + operator is checked for first, before checking that the first argument + is `!'. + +e. 2''>/dev/null is no longer equivalent to 2>/dev/null. + +f. Parser error messages were regularized, and in most cases the name of + the shell script being read by a non-interactive shell is not printed + twice. + +g. A fix was made to the completion code so that it no longer removes the + text the user typed in some cases. + +h. The special glibc `getopt' environment variable is no longer put into + the environment on machines with small values of ARG_MAX. + +i. The expansion of ${...} now follows the POSIX.2 rules for finding the + closing `}'. + +j. The shell no longer displays spurious status messages for background + jobs in shell scripts that complete successfully when the script is + run from a terminal. + +k. `shopt -o' now correctly updates $SHELLOPTS. + +l. A bug that caused the $PATH searching code to return a non-executable + file even when an executable file with the same name appeared later in + $PATH was fixed. + +m. The shell now does tilde expansions on unquoted `:~' in assignment + statements when not in posix mode. + +n. Variable assignment errors when a command consists only of assignments + now cause non-interactive shells to exit when in posix mode. + +o. If the variable in a `for' or `select' command is read-only, or not a + legal shell identifier, a variable assignment error occurs. + +p. `test' now handles `-a' and `-o' as binary operators when three arguments + are supplied, and correctly parses `( word )' as equivalent to `word'. + +q. `test' was fixed so that file names of the form /dev/fd/NN mean the same + thing on all systems, even Linux. + +r. Fixed a bug in the globbing code that caused patterns with multiple + consecutive `*'s to not be matched correctly. + +s. Fixed a bug that caused $PS2 to not be printed when an interactive shell + not using readline is reading a here document. + +t. Fixed a bug that caused history expansion to be performed inappropriately + when a single-quoted string spanned more than one line. + +u. `getopts' now checks that the variable name passed by the user as the + second argument is a legal shell identifier and that the variable is + not read-only. + +v. Fixed `getopts' to obey POSIX.2 rules for setting $OPTIND when it + encounters an error. + +w. Fixed `set' to display variable values in a form that can be re-read. + +x. Fixed a bug in the code that keeps track of whether or not local variables + have been declared at the current level of function nesting. + +y. Non-interactive shells in posix mode now exit if the name in a function + declaration is not a legal identifier. + +z. The job control code now ignores stopped children when the shell is not + interactive. + +aa. The `cd' builtin no longer attempts spelling correction on the directory + name if the shell is not interactive, regardless of the setting of the + `cdspell' option. + +bb. Some OS-specific changes were made for SCO 3.2v[45] and AIX 4.2. + +cc. `time' now prints its output to stderr, as POSIX.2 specifies. + +2. Fixes to Readline + +a. After printing possible completions, all lines of a multi-line prompt + are redisplayed. + +b. Some changes were made to the terminal handling code in rltty.c to + work around AIX 4.2 bugs. + +3. New Features in Bash + +a. There is a new loadable builtin: sprintf, with calling syntax + sprintf var format [args] + This provides an easy way to simulate ksh left- and right-justified + variable values. + +b. The expansions of \h and \H in prompt strings were swapped. \h now + expands to the hostname up to the first `.', as in bash-1.14. + +4. New Features in Readline + +a. The bash-1.14 behavior when ^M is typed while doing an incremental + search was restored. ^J may now be used to terminate the search without + accepting the line. + +b. There is a new bindable variable: disable-completion. This inhibits + word completion and causes the completion character to be inserted as + if it had been bound to self-insert. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.0-alpha3, +and the previous version, bash-2.0-alpha2. + +There is now a file `COMPAT' included in the distribution that lists the +user-visible incompatibilities between 1.14 and 2.0. + +1. Changes to Bash + +a. Some work was done so that word splitting of the rhs of assignment + statements conforms more closely to historical practice. + +b. A couple of errant memory frees were fixed. + +c. A fix was made to the test builtin so it recognizes `<' and `>' as + binary operators. + +d. The GNU malloc in lib/malloc/malloc.c now scrambles memory as it's + allocated and freed. This is to catch callers that refer to freed + memory or assume something about newly-allocated memory. + +e. Fixed a problem with conversion to 12-hour time in the prompt + expansion code. + +f. Fixed a problem with configure's argument parsing order. Now you can + correctly turn on specific options after using --enable-minimal-config. + +g. The configure script now automatically disables the use of GNU malloc + on systems where it's appropriate (better than having people read the + NOTES file and do it manually). + +h. There are new prompt expansions (\v and \V) to insert version information + into the prompt strings. + +i. The default prompt string now includes the version number. + +j. Most of the builtins that take no options were changed to use the + internal getopt so they can produce proper error messages for -? + and incorrect options. + +k. Some system-specific changes were made for SVR4.2 and Solaris 2.5. + +l. Bash now uses PATH_MAX instead of MAXPATHLEN and NAME_MAX instead of + MAXNAMLEN. + +m. A couple of problems caused by uninitialized variables were fixed. + +n. There are a number of new loadable builtin examples: logname, basename, + dirname, tty, pathchk, tee, head, and rmdir. All of these conform to + POSIX.2. + +o. Bash now notices changes in TZ and calls tzset() if present, so + changing TZ will alter the time printed by prompt expansions. + +p. The source was reorganized a bit so I don't have to wait so long for + some files to compile, and to facilitate the creation of a `shell + library' at some future point. + +q. Bash no longer turns off job control if called as `sh', since the + POSIX.2 spec includes job control as a standard feature. + +r. `bash -o posix' now works as intended. + +s. Fixed a problem with the completion code: when completing a filename + that contained globbing characters, if show-all-if-ambiguous was set, + the completion code would remove the user's text. + +t. Fixed ulimit so that (hopefully) the full range of limits is available + on HPUX systems. + +u. A new `shopt' option (`hostcomplete') enables and disables hostname + completion. + +v. The shell no longer attempts to save the history on an abort(), + which is usually called by programming_error(). + +w. The `-s' option to `fc' was changed to echo the command to be executed + to stderr instead of stdout. + +x. If the editor invoked by `fc -e' exits with a non-zero status, no + commands are executed. + +y. Fixed a bug that made the shopt `histverify' option work incorrectly. + +z. There is a new variable `MACHTYPE' whose value is the GNU-style + `cpu-company-system' system description as set by configure. (The + values of MACHTYPE and HOSTTYPE should really be swapped.) + +aa. The `ulimit' builtin now allows the maximum virtual memory size to be + set via setrlimit(2) if RLIMIT_VMEM is defined. + +bb. `bash -nc 'command'' no longer runs `command'. + +2. Changes to Readline + +a. Fixed a typo in the code that checked for FIONREAD in input.c. + +b. Fixed a bug in the code that outputs keybindings, so things like C-\ + are quoted properly. + +c. Fixed a bug in the inputrc file parsing code to handle the problems + caused by inputrc files created from the output of `bind -p' in + previous versions of bash. The problem was due to the bug fixed + in item b above. + +d. Readline no longer turns off the terminal's meta key, and turns it on + once the first time it's called. + +------------------------------------------------------------------------------ +This file documents the changes between this version, bash-2.0-alpha2, +and the previous version, bash-2.0-alpha. + +1. Changes to Bash + +a. The shell no longer thinks directories are executable. + +b. `disown' has a new option, `h', which inhibits the resending of SIGHUP + but does not remove the job from the jobs table. + +c. The varargs functions in error.c now use ANSI-C `stdarg' if available. + +d. The build process now treats the `build version' in .build as local to + the build directory, so different versions built from the same source + tree have different `build versions'. + +e. Some problems with the grammar have been fixed. (It used `list' in a few + productions where `compound_list' was needed. A `list' must be terminated + with a newline or semicolon; a `compound_list' need not be.) + +f. A fix was made to keep `wait' from hanging when waiting for all background + jobs. + +g. `bash --help' now writes its output to stdout, like the GNU Coding Standards + specify, and includes the machine type (the value of MACHTYPE). + +h. `bash --version' now prints more information and exits successfully, like + the GNU Coding Standards specify. + +i. The output of `time' and `times' now prints fractional seconds with three + places after the decimal point. + +j. A bug that caused process substitutions to screw up the pipeline printed + by `jobs' was fixed. + +k. Fixes were made to the code that implements $'...' and $"..." so they + work as documented. + +l. The process substitution code now opens named pipes for reading with + O_NONBLOCK to avoid hanging. + +m. Fixes were made to the trap code so the shell cleans up correctly if the + trap command contains a `return' and we're executing a function or + sourcing a script with `.'. + +n. Fixes to doc/Makefile.in so that it doesn't try to remake all of the + documentation (ps, dvi, etc.) on a `make install'. + +o. Fixed an auto-increment error that caused bash -c args to sometimes dump + core. + +p. Fixed a bug that caused $HISTIGNORE to fail when the history line + contained globbing characters. + +2. Changes to Readline + +a. There is a new string variable, rl_library_version, available for use by + applications. The current value is "2.1". + +b. A bug encountered when expand-tilde was enabled and file completion was + attempted on a word beginning with `~/' was fixed. + +c. A slight change was made to the incremental search termination behavior. + ESC still terminates the search, but if input is pending or arrives + within 0.1 seconds (on systems with select(2)), it is used as a prefix + character. This is intented to allow users to terminate searches with + the arrow keys and get the behavior they expect. diff --git a/bash-20060316/COMPAT b/bash-20060316/COMPAT new file mode 100644 index 000000000..df64c03da --- /dev/null +++ b/bash-20060316/COMPAT @@ -0,0 +1,258 @@ +This document details the incompatibilities between this version of bash, +bash-3.1, and the previous widely-available versions, bash-1.14 (which is +still the `standard' version for a few Linux distributions) and bash-2.x. +These were discovered by users of bash-2.x and 3.x, so this list is not +comprehensive. Some of these incompatibilities occur between the current +version and versions 2.0 and above. (The differences between bash-1.14 and +bash-2.0 were significant.) + +1. Bash uses a new quoting syntax, $"...", to do locale-specific + string translation. Users who have relied on the (undocumented) + behavior of bash-1.14 will have to change their scripts. For + instance, if you are doing something like this to get the value of + a variable whose name is the value of a second variable: + + eval var2=$"$var1" + + you will have to change to a different syntax. + + This capability is directly supported by bash-2.0: + + var2=${!var1} + + This alternate syntax will work portably between bash-1.14 and bash-2.0: + + eval var2=\$${var1} + +2. One of the bugs fixed in the YACC grammar tightens up the rules + concerning group commands ( {...} ). The `list' that composes the + body of the group command must be terminated by a newline or + semicolon. That's because the braces are reserved words, and are + recognized as such only when a reserved word is legal. This means + that while bash-1.14 accepted shell function definitions like this: + + foo() { : } + + bash-2.0 requires this: + + foo() { :; } + + This is also an issue for commands like this: + + mkdir dir || { echo 'could not mkdir' ; exit 1; } + + The syntax required by bash-2.0 is also accepted by bash-1.14. + +3. The options to `bind' have changed to make them more consistent with + the rest of the bash builtins. If you are using `bind -d' to list + the readline key bindings in a form that can be re-read, use `bind -p' + instead. If you were using `bind -v' to list the key bindings, use + `bind -P' instead. + +4. The `long' invocation options must now be prefixed by `--' instead + of `-'. (The old form is still accepted, for the time being.) + +5. There was a bug in the version of readline distributed with bash-1.14 + that caused it to write badly-formatted key bindings when using + `bind -d'. The only key sequences that were affected are C-\ (which + should appear as \C-\\ in a key binding) and C-" (which should appear + as \C-\"). If these key sequences appear in your inputrc, as, for + example, + + "\C-\": self-insert + + they will need to be changed to something like the following: + + "\C-\\": self-insert + +6. A number of people complained about having to use ESC to terminate an + incremental search, and asked for an alternate mechanism. Bash-2.03 + uses the value of the settable readline variable `isearch-terminators' + to decide which characters should terminate an incremental search. If + that variable has not been set, ESC and Control-J will terminate a + search. + +7. Some variables have been removed: MAIL_WARNING, notify, history_control, + command_oriented_history, glob_dot_filenames, allow_null_glob_expansion, + nolinks, hostname_completion_file, noclobber, no_exit_on_failed_exec, and + cdable_vars. Most of them are now implemented with the new `shopt' + builtin; others were already implemented by `set'. Here is a list of + correspondences: + + MAIL_WARNING shopt mailwarn + notify set -o notify + history_control HISTCONTROL + command_oriented_history shopt cmdhist + glob_dot_filenames shopt dotglob + allow_null_glob_expansion shopt nullglob + nolinks set -o physical + hostname_completion_file HOSTFILE + noclobber set -o noclobber + no_exit_on_failed_exec shopt execfail + cdable_vars shopt cdable_vars + +8. `ulimit' now sets both hard and soft limits and reports the soft limit + by default (when neither -H nor -S is specified). This is compatible + with versions of sh and ksh that implement `ulimit'. The bash-1.14 + behavior of, for example, + + ulimit -c 0 + + can be obtained with + + ulimit -S -c 0 + + It may be useful to define an alias: + + alias ulimit="ulimit -S" + +9. Bash-2.01 uses a new quoting syntax, $'...' to do ANSI-C string + translation. Backslash-escaped characters in ... are expanded and + replaced as specified by the ANSI C standard. + +10. The sourcing of startup files has changed somewhat. This is explained + more completely in the INVOCATION section of the manual page. + + A non-interactive shell not named `sh' and not in posix mode reads + and executes commands from the file named by $BASH_ENV. A + non-interactive shell started by `su' and not in posix mode will read + startup files. No other non-interactive shells read any startup files. + + An interactive shell started in posix mode reads and executes commands + from the file named by $ENV. + +11. The <> redirection operator was changed to conform to the POSIX.2 spec. + In the absence of any file descriptor specification preceding the `<>', + file descriptor 0 is used. In bash-1.14, this was the behavior only + when in POSIX mode. The bash-1.14 behavior may be obtained with + + <>filename 1>&0 + +12. The `alias' builtin now checks for invalid options and takes a `-p' + option to display output in POSIX mode. If you have old aliases beginning + with `-' or `+', you will have to add the `--' to the alias command + that declares them: + + alias -x='chmod a-x' --> alias -- -x='chmod a-x' + +13. The behavior of range specificiers within bracket matching expressions + in the pattern matcher (e.g., [A-Z]) depends on the current locale, + specifically the value of the LC_COLLATE environment variable. Setting + this variable to C or POSIX will result in the traditional ASCII behavior + for range comparisons. If the locale is set to something else, e.g., + en_US (specified by the LANG or LC_ALL variables), collation order is + locale-dependent. For example, the en_US locale sorts the upper and + lower case letters like this: + + AaBb...Zz + + so a range specification like [A-Z] will match every letter except `z'. + Other locales collate like + + aAbBcC...zZ + + which means that [A-Z] matches every letter except `a'. + + The portable way to specify upper case letters is [:upper:] instead of + A-Z; lower case may be specified as [:lower:] instead of a-z. + + Look at the manual pages for setlocale(3), strcoll(3), and, if it is + present, locale(1). + + You can find your current locale information by running locale(1): + + caleb.ins.cwru.edu(2)$ locale + LANG=en_US + LC_CTYPE="en_US" + LC_NUMERIC="en_US" + LC_TIME="en_US" + LC_COLLATE="en_US" + LC_MONETARY="en_US" + LC_MESSAGES="en_US" + LC_ALL=en_US + + My advice is to put + + export LC_COLLATE=C + + into /etc/profile and inspect any shell scripts run from cron for + constructs like [A-Z]. This will prevent things like + + rm [A-Z]* + + from removing every file in the current directory except those beginning + with `z' and still allow individual users to change the collation order. + Users may put the above command into their own profiles as well, of course. + +14. Bash versions up to 1.14.7 included an undocumented `-l' operator to + the `test/[' builtin. It was a unary operator that expanded to the + length of its string argument. This let you do things like + + test -l $variable -lt 20 + + for example. + + This was included for backwards compatibility with old versions of the + Bourne shell, which did not provide an easy way to obtain the length of + the value of a shell variable. + + This operator is not part of the POSIX standard, because one can (and + should) use ${#variable} to get the length of a variable's value. + Bash-2.x does not support it. + +15. Bash no longer auto-exports the HOME, PATH, SHELL, TERM, HOSTNAME, + HOSTTYPE, MACHTYPE, or OSTYPE variables. + +16. Bash no longer initializes the FUNCNAME, GROUPS, or DIRSTACK variables + to have special behavior if they appear in the initial environment. + +17. Bash no longer removes the export attribute from the SSH_CLIENT or + SSH2_CLIENT variables, and no longer attempts to discover whether or + not it has been invoked by sshd in order to run the startup files. + +18. Bash no longer requires that the body of a function be a group command; + any compound command is accepted. + +19. As of bash-3.0, the pattern substitution operators no longer perform + quote removal on the pattern before attempting the match. This is the + way the pattern removal functions behave, and is more consistent. + +20. After bash-3.0 was released, I reimplemented tilde expansion, incorporating + it into the mainline word expansion code. This fixes the bug that caused + the results of tilde expansion to be re-expanded. There is one + incompatibility: a ${paramOPword} expansion within double quotes will not + perform tilde expansion on WORD. This is consistent with the other + expansions, and what POSIX specifies. + +21. A number of variables have the integer attribute by default, so the += + assignment operator returns expected results: RANDOM, LINENO, MAILCHECK, + HISTCMD, OPTIND. + +22. Bash-3.x is much stricter about $LINENO correctly reflecting the line + number in a script; assignments to LINENO have little effect. + +23. By default, readline binds the terminal special characters to their + readline equivalents. As of bash-3.1/readline-5.1, this is optional and + controlled by the bind-tty-special-chars readline variable. + +24. The \W prompt string expansion abbreviates $HOME as `~'. The previous + behavior is available with ${PWD##/*/}. + +25. The arithmetic exponentiation operator is right-associative as of bash-3.1. + +26. The rules concerning valid alias names are stricter, as per POSIX.2. + +27. The Readline key binding functions now obey the convert-meta setting active + when the binding takes place, as the dispatch code does when characters + are read and processed. + +28. The historical behavior of `trap' reverting signal disposition to the + original handling in the absence of a valid first argument is implemented + only if the first argument is a valid signal number. + +29. In versions of bash after 3.1, the ${parameter//pattern/replacement} + expansion does not interpret `%' or `#' specially. Those anchors don't + have any real meaning when replacing every match. + +30. Beginning with bash-3.1, the combination of posix mode and enabling the + `xpg_echo' option causes echo to ignore all options, not looking for `-n' diff --git a/bash-20060316/COPYING b/bash-20060316/COPYING new file mode 100644 index 000000000..2b940a412 --- /dev/null +++ b/bash-20060316/COPYING @@ -0,0 +1,347 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +The Free Software Foundation has exempted Bash from the requirement of +Paragraph 2c of the General Public License. This is to say, there is +no requirement for Bash to print a notice when it is started +interactively in the usual way. We made this exception because users +and standards expect shells not to print such messages. This +exception applies to any program that serves as a shell and that is +based primarily on Bash as opposed to other GNU software. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + 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 2 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, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/bash-20060316/CWRU/-i b/bash-20060316/CWRU/-i new file mode 100644 index 000000000..e69de29bb diff --git a/bash-20060316/CWRU/CWRU.chlog b/bash-20060316/CWRU/CWRU.chlog new file mode 100644 index 000000000..ab7090f57 --- /dev/null +++ b/bash-20060316/CWRU/CWRU.chlog @@ -0,0 +1,13206 @@ + 4/9/2001 + -------- +[bash-2.05 released] + + 4/10 + ---- +redir.c + - check return value of fclose() in write_here_document() for error + returns; don't just rely on fwrite() failing + +support/bashbug.sh + - set TMPDIR to /tmp if it's null or unset + - use $TMPDIR in the TEMP tempfile name template + - fixed the call to `mktemp', if it exists, to make it more portable + +jobs.c + - if WCONTINUED is not defined, define it to 0 and add a define for + WIFCONTINUED(wstatus) which expands to 0 + - add WCONTINUED to the flags passed to waitpid(2) in waitchld() + - don't increment children_exited if waitpid's status is WIFCONTINUED, + since we don't want to call a SIGCHLD trap handler in this case + - in waitchld(), we set child->running to 1 if WIFCONTINUED(status) + is non-zero + - make sure pretty_print_job doesn't check for the core dump bit if + the process has been continued; it's only valid if the job is dead + - in set_job_status_and_cleanup, set the job to JRUNNING if job_state + is non-zero and the job was previously marked as JSTOPPED + +configure.in + - add -DBROKEN_DIRENT_D_INO to interix LOCAL_CFLAGS + +lib/glob/glob.c + - if BROKEN_DIRENT_D_INO is defined, define REAL_DIR_ENTRY to 1 + +jobs.c + - in kill_pid, we only need to block and unblock SIGCHLD if the + `group' argument is non-zero, since otherwise we just call `kill' + on the pid argument + +version.c + - update copyright date to 2001 + +bashline.c + - prog_complete_return needs to take a `const char *' as its first + argument + - history_completion_generator needs to take a `const char *' as + its first argument, and `text' needs to be a `const char *' + + 4/11 + ---- +redir.c + - fixed a weird typo in redir_special_open, case RF_DEVFD, added + call to all_digits before call to legal_number + - fixed do_redirection_internal to call legal_number instead of atol(3) + when translating r_duplicating_{in,out}put_word, so it handles + overflow better + - produce an error message in redirection_error for out-of-range + file descriptors + - change allocation strategy in redirection_error so we don't have to + malloc scratch memory if redirection_expand() fails + +jobs.h + - added defines for `running' member of a struct process + +general.c + - fix legal_number to return 0 when strtol(3) reports overflow or + underflow + +parse.y + - changed read_token_word to call legal_number instead of atoi(3) + +input.c + - return -1/EBADF from close_buffered_fd if fd is < 0 + +command.h + - fixed bogus comment about IS_DESCRIPTOR in description of the + REDIRECTEE struct + +print_cmd.c + - change cprintf's 'd' modifier code to display negative numbers as + an out-of-range value. We can do this only because the only use + of %d is to output file descriptor numbers in redirections + +support/mksignames.c + - need to include config.h to get a possible value for + UNUSABLE_RT_SIGNALS + + 4/16 + ---- +lib/readline/doc/rluser.texinfo + - corrected a small error in one description of M-DEL + + 4/17 + ---- +stringlib.c + - need to initialize `ind' before calls to RESIZE_MALLOCED_BUFFER + in strcreplace() + +support/bashversion.c + - new file, prints bash version information + +Makefile.in + - rules for building bashversion and linking it to version.o + + 4/24 + ---- +conftypes.h + - new file with HOSTTYPE, OSTYPE, MACHTYPE, etc. defines from + variables.h + +variables.h, version.c + - include conftypes.h + +patchlevel.h + - new file, contains define for PATCHLEVEL. Doing away with the old + scheme of having the information in configure.in + +version.c + - include patchlevel.h + +Makefile.in + - run bashversion -p to find patch level rather than have configure + substitute in a value + - pass -S ${top_srcdir} to support/mkversion.sh + +support/mkversion.sh + - don't put PATCHLEVEL define into version.h, but accept and ignore + a -p option + - take a new -S srcdir option + - find the patch level by parsing it out of patchlevel.h + +configure.in + - hard-code BASHVERS assignment instead of reading it from a file + - remove BASHPATCH; don't substitute it + +_distribution,_patchlevel + - removed + + 4/26 + ---- +shell.c + - call init_noninteractive() in open_shell_script if forced_interactive + is non-zero (the shell was started with -i) and fd_is_tty is 0 + (the script file is a real file, not something like /dev/stdin), + since it wasn't done earlier + +builtins/printf.def + - change for POSIX.2 compliance when conversion errors are encountered + when processing %d, %u, and floating point conversion operators + (print a warning message, return the value accumulated at the time + of the error -- which is always 0 -- and exit with a non-zero status) + +command.h + - added CMD_COMMAND_BUILTIN for use by the `command' builtin and the + code in execute_cmd.c + +builtins/command.def + - add CMD_COMMAND_BUILTIN to the created command's flags + + 5/1 + --- +configure.in + - add call to AC_C_CONST to test `const' compiler behavior + - add call to AC_C_INLINE to test `inline' compiler behavior + - add call to AC_C_STRINGIZE to test cpp #x stringizing operator + +config.h.in + - add `#undef const' for configure to substitute + - add `#undef inline' for configure to substitute + - add `#undef HAVE_STRINGIZE' for configure to substitute + +include/stdc.h + - remove code that defines or undefines `const' and `inline' + - change the __STRING macro to be defined depending on the value + of HAVE_STRINGIZE + +lib/malloc/malloc.c + - change the __STRING macro to be defined depending on the value + of HAVE_STRINGIZE + +lib/readline/{readline,rlprivate}.h + - moved rl_get_termcap to readline.h, making it a public function + +lib/readline/readline.h + - new #define, RL_READLINE_VERSION, hex-encoded library version + number, currently set to 0x0402 + - new public int variable, rl_readline_version + +lib/readline/readline.c + - #define RL_READLINE_VERSION if it is not already defined (which it + should be in readline.h) + - initialize rl_readline_version to RL_READLINE_VERSION + +lib/readline/doc/rltech.texinfo + - documented rl_get_termcap + - documented rl_readline_version + +jobs.c + - job_exit_status should return an int, not a WAIT (undetected + before because on most POSIX-like systems a WAIT is really an int) + +builtins/evalfile.c + - added FEVAL_REGFILE (file must be a regular file) to accepted + _evalfile flags + - fc_execute_file() adds FEVAL_REGFILE to _evalfile flags. This + means that startup files and files read with `.' no longer need + to be regular files + + 5/2 + --- + +lib/termcap/Makefile.in + - fix target for installed termcap library (normally unused) + +lib/tilde/Makefile.in + - fix install target to install in $(libdir) (normally unused) + +Makefile.in + - don't make $(man3dir) since there's nothing installed there + +Makefile.in,doc/Makefile.in + - change `man1ext' to `.1', `man3ext' to `.3' + - change appropriate install targets to use new values of man[13]ext + - use `test ...' instead of `[...]' + - add support for DESTDIR root installation prefix, for package + building (installdirs, install, install-strip, uninstall targets) + +builtins/common.c + - new function int get_exitstat(WORD_LIST *list) returns an eight-bit + exit status value for use in return, exit, logout builtins + +builtins/common.h + - extern declaration for get_exitstat() + +builtins/{exit,return}.def + - call get_exitstat where appropriate + +builtins/printf.def + - add support for "'" flag character as posix 1003.2-200x d6 says + - fix core dump when user-supplied field width or precision is 0 + - fix to printstr() to handle zero-length precision with `%b' format + specifier (printf '%.0b-%.0s\n' foo bar) + - fix to printstr() to treat a negative field width as a positive + field width with left-justification + - fix to mklong to avoid static buffers, which can always be overrun + by someone sufficiently motivated + +bashline.c + - change var in add_host_name to type `size_t' for passing to xrealloc + + 5/3 + --- +execute_cmd.c + - change restore_signal_mask to accept a sigset_t *, since a sigset_t + may not fit into a pointer, change call + +unwind_prot.c + - use a union UWP in restore_variable when restoring a variable whose + size is the same as sizeof(int), the reverse of the method used to + store it in unwind_protect_int + +builtins/printf.def + - use a #define LENMODS containing the length modifiers instead of + testing against each possible modifier character, save any mod + character found + - add support for ISO C99 length specifiers `j', `t', and `z' + - if `L' modifier is supplied with a floating point conversion char, + pass a `long double' to printf if HAVE_LONG_DOUBLE is defined + +configure.in,config.h.in + - call AC_C_LONG_DOUBLE to check for `long double'; define + HAVE_LONG_DOUBLE if supported + +bashline.c + - fix an inadvertantly-unclosed comment in attempt_shell_completion + - make set_saved_history return a value + - make dynamic_complete_history return a useful value + +{make_cmd,execute_cmd,shell,subst,trap,variables,input,unwind_prot,test, +pcomplete}.c + - removed some declared-but-unused variables + +builtins/{cd,enable,fc,set,setattr,type,umask,printf,complete}.def + - removed some declared-but-unused variables + +lib/sh/{zread,netopen}.c + - removed some declared-but-unused variables + +execute_cmd.c + - in execute_arith_command, use a long variable to hold the result + of evalexp(), since that's what it returns + +builtins/evalstring.c + - make cat_file return -1 on a read or write error + +lib/sh/stringlib.c + - make merge_stringlists() return the right value + + 5/7 + --- +pcomplete.c + - remove typo that caused empty declaration (;;) + +parse.y + - fix yyerror() to accept a single string argument; fix callers + +trap.c + - cast pointer to long instead of int when printing message with + internal_warning() in run_pending_traps() + +subst.c + - fix process_substitute to handle stdin being closed + +test.c + - change `while' to `if' in and() and or(), since the loop isn't + actually performed -- there's an unconditional `return' in the + loop body + - check for integer overflow of arguments to `-t' + +lib/sh/netopen.c + - change _getserv() to reject negative port/service numbers + +expr.c + - fix strlong() to not convert the base specification from long to + int before checking for overflow, since truncation on machines + where sizeof(int) != sizeof(long) may mask errors + +builtins/{jobs,kill,wait}.def + - use legal_number instead of atoi when converting strings to pid_t; + check for numeric overflow + +input.c + - fix for cygwin in b_fill_buffer -- off-by-one error when checking + buffer for \r\n termination + +general.h + - new #define INT_STRLEN_BOUND(t), computes max length of string + representing integer value of type T, possibly including a sign + character + - include if it's present + +{execute_cmd,findcmd,test}.c + - don't include , since general.h does it now + +{execute_cmd,lib/sh/itos,pcomplete,print_cmd,subst,variables}.c + - use INT_STRLEN_BOUND instead of static array sizes when converting + various strings to integer values + +shell.h + - struct fd_bitmap now uses an `int' size, since it's bounded by + the number of file descriptors, which must fit into an `int' + +execute_cmd.c + - FD_BITMAP_DEFAULT_SIZE is now 32, not 32L + - new_fd_bitmap takes an `int' size parameter, not a `long' + +execute_cmd.h + - change prototype for new_fd_bitmap() + +test.c + - fix test_stat to check for overflow when parsing the integer file + descriptor number; return ENOENT instead of EBADF for files that + are not open + +hashlib.c + - don't discard the upper 32 bits of the random value, if present + +lib/readline/shell.c + - use the same INT_STRLEN_BOUND mechanism to decide how much space to + allocated in sh_set_lines_and_columns + + 5/8 + --- +aclocal.m4 + - add check for libtinfo (termcap-specific portion of ncurses-5.2) to + BASH_CHECK_LIB_TERMCAP + - new macro, RL_LIB_READLINE_VERSION, checks version of installed + readline library and (optionally) writes version #defines to + config.h. Bash doesn't use the version defines + +configure.in + - call RL_LIB_READLINE_VERSION instead of support/rlvers.sh + +execute_cmd.c + - fix execute_shell_script and the WHITECHAR and STRINGCHAR macros + to check array bounds before indexing into the sample string + +unwind_prot.[ch] + - import new versions submitted by Paul Eggert + with a couple of changes for backwards compatibility, so the rest + of the source doesn't need to be changed yet + +jobs.c + - use unwind_protect_var on last_made_pid in run_sigchld_trap + +builtins/bind.def + - use unwind_protect_var on rl_outstream + +general.c + - rework print_rlimtype to use INT_STRLEN_BOUND and handle the + most negative number correctly + +expr.c + - `tokval' should have been a `long', since all arithmetic is done + as longs + +builtins/history.def + - consolidate tests for valid history position in one block to + avoid duplicate code and strings + +builtins/ulimit.def + - fix check for overflow when setting limit to work when int is 32 + bits and RLIMTYPE is 64 + +lib/sh/tmpfile.c + - don't truncate the result of time(3) to int; just use time_t, + since it's being assigned to an `unsigned long' + +mailcheck.c + - use legal_number instead of atoi in time_to_check_mail() to catch + more numeric errors; consolidate error checking in one block + - last_time_mail_checked should be a time_t + + 5/9 + --- +builtins/set.def + - recognize `set [-+]o nolog' if HISTORY is defined + +bashline.c + - new variable `dont_save_function_defs', set by `set -o nolog'; + currently ignored + +command.h + - the `dest' member of a REDIRECTEE is now an `int' + +parse.y,redir.c + - changed uses of `redir.test' (where redir is a REDIRECTEE) since + it's now an int + +lib/readline/rlstdc.h + - don't mess around with `const', rely on configure to supply a + proper definition if the compiler doesn't support it + +lib/tilde/tilde.h + - include if HAVE_CONFIG_H is defined + - don't mess around with `const', rely on configure + +builtins/shopt.def + - new read-only `shopt' option, login_shell, non-zero if shell is a + login shell (as decided by shell.c) + - new function set_login_shell(), sets shopt private value of + login_shell + +builtins/common.h + - new extern declaration for set_login_shell + +shell.c + - call set_login_shell after setting value of login_shell (in + main() and set_shell_name()) + +parse.y + - added new `\A' prompt string escape sequence: time in 24-hour + HH:MM format + +configure.in, config.h.in + - check for , define HAVE_GRP_H if found + +builtins/complete.def + - add new `-A group/-g' option to complete group names + +pcomplete.h + - new define for CA_GROUP, used with group name completion + +pcomplete.c + - add code to support CA_GROUP group name completion + +bashline.c + - new function, bash_groupname_completion_function(), supports + programmable completion of group names + +bashline.h + - extern declaration for bash_groupname_completion_function + +lib/readline/bind.c + - new inputrc variable, `match-hidden-files', controls completion + matching files beginning with a `.' (on Unix) + +lib/readline/complete.c + - new variable, _rl_match_hidden_files, mirrors `match-hidden-files' + inputrc variable + +lib/readline/rlprivate.h + - extern declaration for _rl_match_hidden_files + +builtins/hash.def + - new `-t' option to list hash values for each filename argument + +builtins/read.def + - alarm(3) takes an `unsigned int' argument, not int + - check for arithmetic overflow with -t and -n options + +input.c + - check for read error before doing \r\n translation on cygwin in + b_fill_buffer + - reset bp->b_used to 0 instead of leaving it at -1 on read error + in b_fill_buffer + +builtins/shopt.def + - new functions, shopt_setopt(name, mode) and + shopt_listopt(name, mode) to give the rest of the shell an easy + interface + +builtins/common.h + - extern declarations for shopt_setopt and shopt_listopt + +shell.c + - new invocation options -O and +O, to list or set/unset shopt + options like +o/-o sets and unsets `set -o' options + +doc/{bash.1,bashref.texi} + - document `set -o nolog' + - document `login_shell' shopt option + - document new `\A' prompt string escape sequence + - document new `-t' option to `hash' + - document new `[+-]O' invocation option + +doc/bashref.texi + - add text to `Invoking Bash' section defining a login shell; text + taken from man page + +doc/bash.1, lib/readline/doc/rluser.texinfo + - documented new complete/compgen `-A group/-g' option + +lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1 + - documented new `match-hidden-files' inputrc variable + + 5/10 + ---- +configure.in + - fix AC_CHECK_PROG(ar, ...) + - add AC_CHECK_TYPE for ssize_t + +config.h.in + - new #undef for ssize_t + +lib/sh/zread.c + - int -> ssize_t fixes to mirror modern declarations of read and write + - the `off' variable in zsyncfd should be an off_t since it computes + a file offset + - the local buffer `lbuf' is now char, since it's not nice to pass + unsigned char * to read(2), and the values from it are assigned to + a char anyway + - lind and lused are now size_t, since they index into a buffer + - set lused to 0 on read error + +lib/sh/zwrite.c + - change second argument to type `char *', since ISO C says you have + to pass a `char *' to `write' + +externs.h + - fix extern declarations of zread, zread1, zreadc, and zwrite + - prototype extern declaration of qsort_string_compare + - add extern declaration for history_delimiting_chars() from parse.y + +input.h + - b_used and b_inputp members ofr struct BSTREAM are now size_t + +builtins/evalstring.c + - the number of chars read with zread in cat_file should be assigned + to a variable of type ssize_t + +input.c + - the number of chars read with zread in b_fill_buffer should be + assigned to a variable of type ssize_t + - `localbuf' is now type char[], since POSIX says you shouldn't pass + unsigned char * to read(2) + - in getc_with_restart(), use a variable of type unsigned char to + get a value from the local buffer and return it + - in ungetc_with_restart, explicitly return the character arg passed + to avoid relying on localbuf being unsigned char + +subst.c + - the number of chars read with zread in read_comsub should be + assigned to a variable of type ssize_t + +mksyntax.c + - instead of casting to unsigned char * in addcstr, use a variable + of type unsigned char and let the compiler do the work + +parse.y + - instead of casting to unsigned char * in yy_readline_get, use a + variable of type unsigned char and let the compiler do the work + - ditto for yy_string_get and shell_getc (cast to unsigned char) + +subst.c + - instead of casting to unsigned char when assigning to ifscmap in + expand_word_internal, use a variable of type unsigned char and + let the compiler do the work + +lib/sh/strtrans.c + - instead of casting to unsigned char in ansic_quote, use a variable + of type unsigned char and let the compiler do the work + +builtins/evalstring.c + - remove extern declarations for zwrite and run_trap_cleanup; they're + in externs.h + - prototype cat_file forward declaration + +Makefile.in + - remove -I$(includedir) from INCLUDES and SUBDIR_INCLUDES + +aclocal.m4 + - change RL_LIB_READLINE_VERSION to set RL_PREFIX, RL_LIBDIR, + and RL_INCLUDEDIR to what it used to test the installed readline + library version for use by the caller + - change RL_LIB_READLINE_VERSION to not compute ac_cv_rl_prefix if + the caller has already assigned it a value + - rename _rl_prefix -> ac_cv_rl_prefix, _rl_libdir -> ac_cv_rl_libdir, + _rl_includedir -> ac_cv_rl_includedir + +configure.in + - change testing of whether to use the value of + $opt_with_installed_readline to be != no, to allow the user to + specify a prefix where the installed readline library may be found + - if --with-installed-readline=PREFIX is supplied, set ac_cv_rl_prefix + to PREFIX before calling RL_LIB_READLINE_VERSION + - if --with-installed-readline[=PREFIX] is supplied, don't set + RL_LIBDIR and RL_INCLUDEDIR; let RL_LIB_READLINE_VERSION take care + of it, set RL_INCLUDE=-I${RL_INCLUDEDIR} + - if --with-installed-readline[=PREFIX] is supplied, and we're + linking with the history library, assign $RL_LIBDIR to HIST_LIBDIR + so we use the same version of the installed readline and history + libraries + +Makefile.in, builtins/Makefile.in + - have configure substitute RL_INCLUDEDIR, set RL_INCLUDEDIR variable + +doc/bashref.texi + - updated description of --with-installed-readline configure option + +general.c + - moved QSFUNC typedef here from builtins/common.c + +{alias,bashline,variables,lib/sh/stringvec}.c + - cast fourth argument to qsort to (QSFUNC *) + +alias.c + - prototype forward declaration of qsort_alias_compare + +bashhist.c + - include for extern declaration of glob_pattern_p + - remove extern declaration of history_delimiting_chars; it's now + in externs.h + - prototype forward declarations of histignore_item_func, + maybe_add_history, and bash_add_history + +bracecomp.c + - remove extern declaration for sh_backslash_quote; it's in externs.h + +braces.c + - remove extern declaration for extract_command_subst; it's in subst.h + - prototype forward declarations for expand_amble, array_concat, and + brace_gobbler + +error.c + - prototype extern declaration of give_terminal_to, fix bad call + +{execute_cmd,expr,findcmd,jobs,mailcheck,nojobs,pcomplete,print_cmd,redir, +shell}.c + - prototype all static forward function declarations + +pcomplete.c + - changed some function parameters to `const char *' to avoid discarding + const qualifier + +make_cmd.c + - make_bare_word, make_word_flags, and make_word now take a + `const char *' string argument + +make_cmd.h + - changed extern declarations for make_bare_word and make_word + +print_cmd.c + - cprintf now takes a `const char *' as its first argument, like + xprintf and printf + - the conditional define for xprintf should have been HAVE_VPRINTF, + not HAVE_VFPRINTF + +shell.c + - in isnetconn(), the return value of sizeof() is size_t + +aclocal.m4 + - add inclusion of stddef.h if STDC_HEADERS is defined to 1 in + BASH_CHECK_TYPE + +configure.in + - add a call to BASH_CHECK_TYPE for socklen_t (type of third argument + to getpeername(2)) + + 5/11 + ---- +lib/readline/bind.c + - make `useq' a char array to pass to rl_macro_bind in + rl_parse_and_bind + +lib/readline/{{bind,isearch}.c,rlprivate.h} + - _rl_isearch_terminators is now a char *, not unsigned char * + +{subst,variables,lib/sh/tmpfile}.c + - dollar_dollar_pid is now a `pid_t' instead of `int' + +variables.c + - sbrand() now takes an `unsigned long' to set the seed value + - changed last_random_value to type int, since it's always between + 0 and 32767 + - use strtoul to convert the value in assign_random instead of atoi + - take out casts in any arguments to sbrand() + - take out cast to int in call to inttostr in set_ppid() + +subst.c + - don't cast last_asynchronous_pid when passing to itos() + +{sig,subst}.c + - prototype all static forward function declarations + + 5/14 + ---- +{test,trap,variables}.c + - prototype all static forward function declarations + +variables.c + - free_variable_hash_data() now takes a PTR_T, a `generic pointer' + +builtins/{alias,bind,break,cd,complete,declare,enable,exit,fc,fg_bg,help, +history,jobs,pushd,read,set,trap,umask, + - prototype all static forward function declarations + +builtins/read.def + - reset_eol_delim now takes a `char *' arg, since that's what the + unwind_protect functions pass it, and it ignores its arguments + anyway + +lib/readline/{histsearch,input,kill,rltty,search,vi_mode}.c + - prototype all static forward function declarations + +lib/tilde/tilde.c + - prototype all static forward function declarations + - tilde_find_prefix, tilde_find_suffix, isolate_tilde_prefix, and + glue_prefix_and_suffix now take `const char *' arguments where + appropriate + +configure.in,config.h.in + - check for vsnprintf, define HAVE_VSNPRINTF if found + +lib/readline/display.c + - use vsnprintf() in rl_message if it's available; if we don't, at + least set the last character in msg_buf to 0 to avoid overrun -- + we really can't do anything about overflow at this point. if it's + available, this fixes buffer overflow problems in rl_message + + 5/15 + ---- +lib/readline/histexpand.c + - in get_history_word_specifier, allow any character to terminate + a `:first-' modifier, not just `:' and null. This is what csh + appears to do. This allows things like `!:0- xyzzy' to replace the + last argument with xyzzy + + 5/18 + ---- +configure.in, config.h.in + - check for , define HAVE_STDINT_H if found + - check for intmax_t in , define intmax_t as long if not + found + + 5/21 + ---- +builtins/kill.def + - change to use strerror() for error message when kill(2) fails + +aclocal.m4 + - new macro, BASH_C_LONG_LONG, check for `long long' + +configure.in, config.h.in + - call BASH_C_LONG_LONG, define HAVE_LONG_LONG if found + +lib/sh/snprintf.c + - new file, with implementations of snprintf, vsnprintf, asprintf, + and vasprintf, derived from inetutils version + +Makefile.in, lib/sh/Makefile.in + - add snprintf.c/snprintf.o + +configure.in, config.h.in + - add checks for snprintf, asprintf, vasprintf, with appropriate + cpp defines + +lib/readline/{rldefs,xmalloc}.h, lib/readline/xmalloc.c + - xmalloc and xrealloc now take `size_t' arguments, like their bash + counterparts + +externs.h,lib/sh/itos.c + - inttostr and itos now take `long' arguments + - inttostr takes a `size_t' argument for the buffer size + +{expr,lib/malloc/malloc,variables,general}.c + - fixed calls to itos() by removing casts, etc. + +subst.[ch] + - get_dollar_var_value now takes a long, not an int + - sub_append_number now takes a long, not an int + +subst.c + - in parameter_brace_expand_word, use a long and legal_number to + translate ${N}, to avoid overflow + - in parameter_brace_expand_length, use a long and legal_number to + translate ${#N}, to avoid overflow + - in do_array_element_assignment, array_expand_index, + array_value_internal, use arrayind_t instead of int + - let verify_substring_values take long * arguments for the return + value of evalexp() + - pass long * arguments to verify_substring_values in + parameter_brace_substring + - parameter_brace_expand_length now returns `long' + - parameter_brace_expand now uses a long variable for the return + value of parameter_brace_expand_length + - param_expand now uses a long variable for the return value from + evalexp + - array_length reference now returns an `arrayind_t', since it can + return the num_elements member of an array, which is of type + arrayind_t + +subst.h + - array_expand_index now returns an `arrayind_t' + +array.[ch] + - array_subrange now takes arrayind_t arguments, not `int' + - dup_array_subrange now uses arrayind_t local variable to do + array indexing + - use long to print array indices in print_element + +variables.c + - null_array_assign, assign_dirstack, bind_array_variable + now take arrayind_t arguments as array indices + - assign_array_var_from_word_list, assign_array_var_from_string, + unbind_array_element now use arrayind_t local variables for + array indexing + +variables.h + - change extern declaration of bind_array_variable + +builtins/common.[ch] + - get_numeric_arg now returns a `long', since it usually returns + the value of legal_number() + +builtins/{shift,break}.def + - use long variables for the return value of get_numeric_arg + +builtins/history.def + - convert string argument to int only if it's in range + +builtins/pushd.def + - set_dirstack_element and get_dirstack_element now take `long' + index arguments + - get_dirstack_index now takes a `long' index argument, since it's + passed the converted value from legal_number + +lib/sh/timeval.c + - in print_timeval, don't assume that the number of minutes fits into + an int, since it's just seconds/60. + +lib/sh/clock.c + - ditto for print_clock_t + + 5/22 + ---- +shell.c + - since the -O option settings may possibly be overridden by the + normal shell initialization or posix initialization, save the + invocation options on an alist (with add_shopt_to_alist) and + process them after basic initialization (with run_shopt_alist) + + 5/23 + ---- +trap.h + - new define, BASH_NSIG, all system signals plus special bash traps + +trap.c, builtins/trap.def + - use BASH_NSIG for array bounds and loops where appropriate + +trap.c + - change decode_signal to disallow numeric signal numbers above + NSIG -- this means you can only reference special traps like + DEBUG by name + - new SPECIAL_TRAP(s) macro to test whether s is one of the special + bash traps (currently DEBUG and EXIT) + - change reset_or_restore_signal_handlers so command substitution + doesn't inherit the debug trap (like ksh93), and child processes + don't have to rely on initialize_traps being run to get rid of + any debug trap + +support/mksignames.c + - add extra "ERR" signal name, value NSIG+1, allocate space for it + and write it out in signal_names[] + +trap.h + - new define: ERROR_TRAP == NSIG+1, change BASH_NSIG to NSIG+2 + - extern declarations for set_error_trap, run_error_trap + - new define: TRAP_STRING(s), expands to trap_list[s] if signal S + is trapped and not ignored, NULL otherwise + +trap.c + - add ERROR_TRAP to SPECIAL_TRAPS define + - initialize ERROR_TRAP stuff in initialize_traps + - new function: set_error_trap(command), sets the ERR trap string + - new function: run_error_trap(command), runs the ERR trap string + - set trap string for ERROR_TRAP to NULL in free_trap_strings + - change reset_or_restore_signal_handlers so child processes don't + inherit the ERR trap + - add case to call run_error_trap in maybe_call_trap_handler + +execute_cmd.c + - in execute_command_internal, keep track of ERR trap and call it if + necessary + - use TRAP_STRING to get the value of debug and error traps + - in execute_function, arrange things so the ERR trap is not inherited + by shell functions, and is saved and restored like the DEBUG trap + +doc/{bash.1,bashref.texi} + - documented new ERR trap + +tests/{trap.{tests,right},trap2.sub,trap2a.sub} + - added ERR trap tests + +subst.c + - on machines without /dev/fd, change the named pipe fifo list to a + list of structs containing pathname and proc information + - change unlink_fifo_list to kill the proc in the fifo list with + signal 0 and not remove the fifo if the proc is still alive. This + should fix the problem on those backward systems without /dev/fd + where fifos were removed when a job using process substitution was + suspended + + 5/24 + ---- +examples/loadables/getconf.h + - new file, with basic defines needed to make getconf work minimally + on POSIX systems without the necessary definitions + +examples/loadables/getconf.c + - replacement functions for confstr, sysconf, pathconf for systems + that lack them, providing a minimal posix interface + - heavily augmented getconf, now supports all POSIX.1-200x, + POSIX.2-200x, Solaris 7, AIX 4.2 getconf variables + + 5/29 + ---- +builtins/setattr.def + - make `readonly', `export', and `declare' print `invisible' variables + as just a command and variable name, without a value, when listing + all variables (as POSIX.2-200x d6 requires) + + 5/30 + ---- + +configure.in + - upgraded to autoconf-2.50 on main development machine, so require + autoconf-2.50 in preparation for using some if its new features + - call AC_C_PROTOTYPES + - remove call to AC_EXEEXT, which now does the wrong thing + - changed AC_INIT to new flavor + - added call to AC_CONFIG_SRCDIR + - AC_CONFIG_HEADER -> AC_CONFIG_HEADERS + - AC_RETSIGTYPE -> AC_TYPE_SIGNAL + +configure.in, aclocal.m4, config.h.in + - removed call to BASH_LARGE_FILE_SUPPORT, use AC_SYS_LARGEFILE + standard support, with new macros _FILE_OFFSET_BITS and + _LARGE_FILES + - removed definition of BASH_LARGE_FILE_SUPPORT + +doc/bashref.texi + - document new `--enable-largefile' configure option + +lib/readline/readline.c + - change rl_set_prompt to call rl_expand_prompt unconditionally, so + local_prompt and local_prompt_prefix get set correctly + + 6/6 + --- +lib/readline/complete.c + - don't append `/' or ` ' to a match when completing a symlink that + resolves to a directory, unless the match doesn't add anything + to the word. This means that a tab will complete the word up to + the full name, but not add anything, and a subsequent tab will add + a slash. Change to append_to_match; callers changed + +hashlib.c + - new function, hash_table_nentries (table), returns the number of + items in TABLE + +hashlib.h + - extern declaration for hash_table_nentries + +configure.in + - configure without bash malloc on openbsd; they claim it needs + eight-bit alignment (which the bash malloc provides, but...) + + 7/2 + --- +stringlib.c + - only call RESIZE_MALLOCED_BUFFER from strsub() if the replacement + string length is > 0, avoid possible hangs if replacement is null + +subst.c + - don't include input.h; no longer needed + +configure.in + - remove calls to AC_SYS_RESTARTABLE_SYSCALLS and + BASH_SYS_RESTARTABLE_SYSCALLS; the results are no longer used + +config.h.in + - remove define for HAVE_RESTARTABLE_SYSCALLS + +aclocal.m4 + - removed definition of BASH_SYS_RESTARTABLE_SYSCALLS; no longer used + +execute_cmd.c + - changed select command so `return' no longer terminates the select + command, so it can be used to return from an enclosing function. + This is as ksh (88 and 93) does it + +lib/readline/vi_mode.c + - fix trivial typo in declaration of vi_motion; `t' appears twice; + the second instance should be `T' + + 7/3 + --- +configure.in + - don't add -static to LDFLAGS on Solaris 2.x. This means that the + auxiliary programs will be built as dynamic executables, but that + should do no harm + + 7/5 + --- +lib/glob/fnmatch.c + - fix the code that processes **(pattern) to short-circuit if the + pattern is ill-formed or lacks a trailing `)' -- this fixes the + segfault on **(/*) + +Makefile.in, builtins/Makefile.in + - split CCFLAGS into CCFLAGS_FOR_BUILD and CFLAGS, to aid in + cross-compilation + - build programs that use $(CC_FOR_BUILD) using $(CCFLAGS_FOR_BUILD) + +configure.in, config.h.in + - check for getaddrinfo(3), define HAVE_GETADDRINFO if found + +lib/sh/netopen.c + - implemented a version of _netopen (_netopen6) that uses + getaddrinfo(3) if available, use if HAVE_GETADDRINFO is defined. + old _netopen is _netopen4; _netopen now calls either _netopen6 + or _netopen4 as appropriate + + 7/9 + --- +builtins/exit.def + - don't source ~/.bash_logout if subshell_environment is non-zero + +execute_command.c + - in execute_until_or_while, handle the case where `breaking' is + set in the loop test (e.g., by the job control code when a job + is stopped with SIGTSTP), but the return value from the test is + something that would cause the loop to break. Need to decrement + `breaking' in this case + + 7/10 + ---- +execute_cmd.c + - in execute_in_subshell, make sure a command of type cm_subshell + inherits its `enclosing' command's CMD_IGNORE_RETURN flag + +variables.c + - in maybe_make_export_env, don't allow restricted shells to put + exported functions in the export environment + + 7/11 + ---- +lib/glob/strmatch.h + - renamed old fnmatch.h + - changed guard #ifdef to _STRMATCH_H + - include system if HAVE_LIBC_FNM_EXTMATCH is defined + +lib/glob/strmatch.c + - renamed old fnmatch.c + - include "strmatch.h" + - if HAVE_LIBC_FNM_EXTMATCH is defined, define a dummy version of + strmatch() that just calls fnmatch(3) + +lib/glob/glob.c + - include "strmatch.h" + - fnmatch -> strmatch + +Makefile.in, lib/glob/Makefile.in + - fnmatch -> strmatch + +{bashhist,execute_cmd,pathexp,pcomplete,shell,stringlib,subst,test}.c, +pathexp.h,builtins/help.def + - include + - fnmatch -> strmatch + +execute_cmd.c + - broke the code that parses the interpreter name from a #! line + out from execute_shell_script to a new function, getinterp() + - call getinterp from execute_shell_script + - use return value from getinterp in error message about bad + #! interpreter in shell_execve + + 7/12 + ---- +lib/readline/isearch.c + - the last isearch string is now remembered in a new static variable, + last_isearch_string + - if ^R^R is typed, readline now searches for the remembered isearch + string, if one exists + + 7/24 + ---- +pcomplete.h + - extern declaration for completions_to_stringlist() + + 7/25 + ---- +builtins/complete.def + - make compgen handle -o default option + - make compgen return success only if sl->list_len is non-zero, + indicating that there are items on the list + + 7/31 + ---- +execute_cmd.c + - in execute_connection, force stdin to /dev/null for asynchronous + commands if job control is not active, not just if the shell is + running a shell script (since you can run `set -m' in a script) + +lib/readline/rltty.c + - make sure _rl_tty_restore_signals resets `tty_sigs_disabled' on + successful restoration of the terminal modes + - make sure _rl_tty_disable_signals turns off IXON so that ^S and + ^Q can be read by rl_quoted_insert + + 8/1 + --- +aclocal.m4 + - new check for FNM_EXTMATCH being defined in , as Ullrich + Drepper intends to do for new versions of GNU libc + +config.h.in + - new definition for HAVE_LIBC_FNM_EXTMATCH + +configure.in + - check for fnmatch, but don't define anything in config.h + - call BASH_FUNC_FNMATCH_EXTMATCH to check for FNM_EXTMATCH + + 8/2 + --- +alias.h + - remove bogus extern declaration for xmalloc() + - include "stdc.h" + - add prototype declarations for all extern function declarations + +xmalloc.c,lib/readline/xmalloc.c + - fix xmalloc to return a PTR_T + - fix xrealloc to return a PTR_T and take a PTR_T as first argument + +include/ansi_stdlib.h + - extern declarations for malloc and realloc have them return PTR_T + +xmalloc.h + - new file, with extern declarations for functions in xmalloc.c + +general.h + - removed extern declarations for functions in xmalloc.c + - include xmalloc.h + +Makefile.in,builtins/Makefile.in + - update dependencies to include xmalloc.h + +parse.y,{alias,array,bashline,bracecomp,execute_cmd,findcmd,flags,general, +hashcmd,locale,mailcheck,make_cmd,pathexp,pcomplete,print_cmd,stringlib, +subst,unwind_prot,variables}.c +builtins/{common,evalfile}.c +builtins/{cd,command,enable,exec,printf,read,set}.def +lib/sh/{makepath,netopen,pathphys,setlinebuf,shquote,snprintf,stringlist, +strtrans,tmpfile}.c +lib/readline/{util,terminal,shell,readline,macro,kill,isearch,input, +histfile,histexpand,display,complete,bind}.c + - make sure all calls to xmalloc are cast to the right return value + +siglist.c + - include xmalloc.h + +parse.y,{alias,bashline,bracecomp,expr,make_cmd,nojobs,print_cmd,subst}.c +builtins/{fc,printf,read}.def +lib/sh/snprintf.c, lib/tilde/tilde.c +lib/readline/{bind,display,histexpand,isearch,macro,util,vi_mode}.c + - make sure all calls to xrealloc are cast to the right return value + +lib/sh/{netopen,setlinebuf,shquote,snprintf}.c, lib/tilde/tilde.c + - include xmalloc.h, remove extern declaration of xmalloc + +lib/readline/xmalloc.h + - xmalloc and xrealloc should return PTR_T + +lib/readline/rldefs.h + - don't include an extern declaration for xmalloc + + 8/7 + --- +support/shobj-conf + - fixed up commented-out stanzas for HP's unbundled C compiler on + HP/UX + +support/bashbug.sh + - force the subject to be changed from the default + +lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1 + - document that transpose-words swaps the last two words on the line + if point is at the end of the line + + 8/9 + --- +stringlib.c + - fix possible infinite recursion problem with null pattern in + strsub() + +hashlib.c + - new function copy_hash_table to copy a hash table using a caller- + supplied function to copy item data (defaults to savestring()) + +hashlib.h + - new extern declaration for copy_hash_table + +builtins/declare.def + - changes so that declare [-a] var=value assigns `value' to element 0 + of array variable `var' like ksh93 + - change so that declare [-a] var[N]=value assigns `value' to element + N of array variable `var' like ksh93 + + 8/13 + ---- +arrayfunc.c + - new file, for miscellaneous array functions + +arrayfunc.h + - new file, extern declarations for functions in arrayfunc.c + +variables.c + - move convert_var_to_array, bind_array_variable, + assign_array_from_string, assign_array_var_from_word_list, + assign_array_var_from_string, quote_array_assignment_chars, + skipsubscript, unbind_array_element, print_array_assignment + to arrayfunc.c + +shell.h + - include arrayfunc.h after variables.h + +variables.h + - remove above extern function declarations moved to arrayfunc.h + - add extern declaration for var_lookup + +Makefile.in + - add arrayfunc.c, arrayfunc.h in appropriate places + - add arrayfunc.h to dependencies + +subst.c + - move valid_array_reference, array_expand_index, array_variable_part, + array_value_internal, array_value (now global), get_array_value, + do_array_element_assignment to arrayfunc.c + +subst.h + - extern declarations for functions above moved to arrayfunc.h + +arrayfunc.h + - extern declarations for above functions from subst.c + +subst.[ch] + - string_list_dollar_star and string_list_dollar_at are now global + functions + - quote_escapes is now a global function + +subst.c + - maybe_expand_string -> expand_string_if_necessary + - expand_string_to_string -> expand_string_to_string_internal + - new functions: expand_string_to_string and + expand_string_unsplit_to_string, which call + expand_string_to_string_internal with expand_string and + expand_string_unsplit as the FUNC arguments, respectively + +arrayfunc.c + - change array_expand_index to call expand_string_to_string instead + of maybe_expand_string + + 8/14 + ---- +shell.c + - in execute_env_file, call expand_string_unsplit_to_string + +mailcheck.c + - in check_mail, call expand_string_to_string + +variables.c + - in assign_in_env, call expand_string_unsplit_to_string + +arrayfunc.c + - new function, array_variable_name, splits an array reference into + a name (which is returned as a new string) and subscript + - change array_variable_part to just call array_variable_name and + look up the string returned with find_variable + - new function, find_or_make_array_variable (name, flags) which will + look up an array variable and convert a string variable to an + array if necessary. The FLAGS argument, if non-zero, says to + check the readonly and noassign attributes and fail if either is set + +builtins/read.def + - make `read -a aname' honor any readonly status of `aname' + - read -a now calls find_or_make_array_variable with FLAGS value 1 + +arrayfunc.[ch], subst.c, builtins/{declare,read}.def + - do_array_element_assignment -> assign_array_element + + 8/20 + ---- +parse.y + - changed `for' command grammar to allow missing word list after `IN' + token, like latest POSIX drafts require + +lib/sh/tmpfile.c + - in sh_mktmpname(), check for filenum == 0 and init to non-zero number + in this case. it can happen on arithmetic overflow + +support/mkversion.sh + - added `[0-9].[0-9][0-9][a-z]' as an acceptable value for a + distribution to allow for intermediate versions, like 2.05a + +support/config.guess + - removed the addition of the output of `/usr/bin/objformat' when + creating the canonical name on FreeBSD machines, so the canonical + name is once again `freebsd4.2' instead of `freebsdelf4.2' + + 8/22 + ---- +lib/readline/{rlstdc,history,keymaps,readline,rldefs,rlprivate,rlshell, +rltypedefs,xmalloc}.h +lib/readline/{bind,compat,complete,display,funmap,histexpand,histsearch, +input,isearch,kill,nls,parens,readline,rltty,search,shell,signals,vi_mode + - changed __P to PARAMS + +lib/tilde/tilde.[ch] + - changed __P to PARAMS + +{Makefile,configure}.in + - changed the version number to 2.05a + - changed the release status to `alpha1' + + 8/23 + ---- +support/shobj-conf + - support for building shared libraries on Darwin/MacOS X + +siglist.h + - extern declaration for strsignal() to compensate for lack of + a definition in some system include files + +jobs.c + - remove casts from strsignal() calls + +[bash-2.05a-alpha1 frozen] + + 8/27 + ---- +[bash-2.05a-alpha1 released] + + 8/27 + ---- +execute_cmd.c + - fix eval_arith_for_expr to handle the case where the expanded + word list is NULL, returning 0 in this case + +print_cmd.c + - in print_function_def, make sure that func_redirects is assigned + a value before being used + + 8/28 + ---- +alias.c + - include for definition of isalpha() + +bashhist.h + - add prototypes for extern function declarations + +flags.c + - include bashhist.h for extern function declarations + +mksyntax.c + - include if HAVE_UNISTD_H is defined in config.h + +parse.y + - include test.h for extern function declarations + +externs.h + - change extern declaration for setlinebuf to sh_setlinebuf + +stringlib.c + - include for extern function declarations + +variables.h + - add function prototypes for all of the sv_* functions + +builtins/common.h + - add extern declarations for set_shellopts() and parse_shellopts() + from builtins/set.def + +variables.c + - include "hashcmd.h" for extern declaration for flush_hashed_filenames + - include "pathexp.h" for extern declaration for setup_glob_ignore + +lib/malloc/malloc.c + - cast to `long' instead of `int' in memalign for 64-bit machines + +{pcomplete,trap}.c + - changed printf escape sequences used to print pointers to %p + +lib/readline/undo.c + - include "xmalloc.h" for extern function declaration + +input.h + - add function prototypes to extern declarations for getc_with_restart + and ungetc_with_restart + +variables.[ch] + - changed type of `function' member of `struct name_and_function' to + `sv_func_t', which is defined and prototyped in variables.h + - map_over now takes an `sh_var_map_func_t *' + +shell.h + - start of a set of function pointer typedefs like those in + lib/readline/rltypedefs.h + +hashlib.[ch] + - second paramter to flush_hash_table is now an `sh_free_func_t *' + +trap.c + - parameter to reset_or_restore_signal_handlers is now an + `sh_resetsig_func_t *' + +pcomplete.h, pcomplib.c + - function pointer argument to print_all_compspecs is now an + `sh_csprint_func_t *' + - function pointer `list_getter' element of an `ITEMLIST' is now + prototyped with __P((...)) instead of using `Function *' + +jobs.[ch] + - `j_cleanup' member of a JOB is now an `sh_vptrfunc_t *' + +alias.c + - map_over_aliases now takes an `sh_alias_map_func_t *' + - free_alias_data now takes a `PTR_T' + +pathexp.c + - function pointer argument to ignore_globbed_names is now an + `sh_ignore_func_t *' + +bashline.c + - function pointer argument to _ignore_completion_names is now an + `sh_ignore_func_t *' + +pathexp.h,{bashhist,bashline.c + - `item_func' member of a `struct ignorevar' is now an + `sh_iv_item_func_t *' + +builtins/evalfile.c + - `errfunc' is now an `sh_vmsg_func_t *' + +jobs.c + - map_over_job now takes an `sh_job_map_func_t *' as its first argument + +array.[ch] + - function pointer argument to array_walk is now an + `sh_ae_map_func_t *' + +general.c + - tilde_expansion_preexpansion_hook has type `tilde_hook_func_t *', + and so the assignment in tilde_initialize doesn't need a cast + +list.c + - map_over_words now takes an `sh_icpfunc_t *' as its second argument + +input.h + - the `getter' and `ungetter' function pointer members of a + BASH_INPUT are now of types `sh_cget_func_t *' and + `sh_cunget_func_t *' respectively + - init_yy_io now takes an `sh_cget_func_t *' as its first argument and + an `sh_cunget_func_t *' as its second + +parse.y + - init_yy_io now takes an `sh_cget_func_t *' as its first argument and + an `sh_cunget_func_t *' as its second + - initialize_bash_input casts bash_input.getter and bash_input.ungetter + appropriately + +builtins/mkbuiltins.c + - make the extern function definitions written to builtext.h have + prototypes with __P((...)) + - include "stdc.h" + - change Function to mk_handler_func_t + - fixed comment_handler to take the right number of args + - prototyped all the handler functions with __P((...)) + +builtins.h + - the `function' member of a struct builtin is now of type + `sh_builtin_func_t *' + +builtins/common.[ch] + - last_shell_builtin, this_shell_builtin are now of type + `sh_builtin_func_t *' + - find_shell_builtin, builtin_address, find_special_builtin now return + `sh_builtin_func_t *' + +builtins/exit.def, {execute_cmd,jobs,nojobs,variables}.c, parse.y + - changed all declarations of last_shell_builtin and this_shell_builtin + +execute_cmd.c + - execute_builtin, execute_builtin_or_function, + execute_subshell_builtin_or_function now take an + `sh_builtin_func_t *' instead of a `Function *' for argument + - changed appropriate variables from `Function *' to + `sh_builtin_func_t *' + +builtins/{bind,builtin,enable,read,setattr}.def + - replaced uses of `Function *' in variable declarations with + appropriate types (sh_builtin_func_t * or rl_command_func_t *) + +builtins/set.def + - set_func and get_func members of binary_o_options are now of types + `setopt_set_func_t *' and `setopt_get_func_t *', which are + prototyped + +builtins/shopt.def + - set_func member of shopt_vars is now of type `shopt_set_func_t *' + +bashline.c + - enable_hostname_completion now returns `int' (the old value of + perform_hostname_completion) + +[The only use of Function and VFunction now is for unwind-protects] + + 9/4 + --- +lib/sh/getcwd.c + - use const define from config.h rather than `CONST' + - use PTR_T define from xmalloc.h rather than `PTR' + - include xmalloc.h for PTR_T + - remove PATH_MAX define, rely on value from maxpath.h + +{general,mailcheck}.c, lib/sh/{pathcanon,pathphys}.c + - don't include maxpath.h directly; it's already included by shell.h + +lib/sh/mailstat.c + - new `mailstat()' implementation, to stat a mailbox file for + mail checking. handles maildir-style mail directories with one + file per message and creates a dummy stat struct from them + +lib/sh/Makefile.in + - add mailstat.c and mailstat.o in the appropriate places + +lib/malloc/malloc.c + - augmented implementation with wrapper functions that pass in file + and line number information from cpp. currently unused, but a + placeholder for future debugging and use tracking + +lib/malloc/shmalloc.h + - new file, extern declarations for allocation wrapper functions for + use by the shell (and others, I guess) + +xmalloc.[ch] + - wrapper functions for xmalloc, xfree, xrealloc (sh_ prefixed) that + pass cpp line number information through to the malloc functions, + if USING_BASH_MALLOC is defined + + 9/5 + --- +lib/malloc/gmalloc.c + - removed; no longer part of distribution + +lib/malloc/Makefile.in + - removed references to gmalloc.[co] + +configure.in, doc/bashref.texi + - removed references to `--with-glibc-malloc' configure option + +{configure,Makefile}.in + - changed the way bash malloc is configured into the Makefile, making + it more like how readline is configured. If the bash malloc is + not configured in, nothing in lib/malloc will be built + + 9/6 + --- +lib/malloc/imalloc.h + - new file, some internal malloc definitions + +lib/malloc/mstats.h + - new file, definitions for malloc statistics structs and functions + +lib/malloc/trace.c + - new file, malloc tracing functions (currently just print messages + to stderr), code is #ifdef MALLOC_TRACE + +lib/malloc/stats.c + - new file, moved malloc stats code from malloc.c to here + +lib/malloc/malloc.c + - moved some definitions to imalloc.h + - moved stats code to stats.c + - malloc tracing calls added to internal_{malloc,realloc,free}, all + #ifdef MALLOC_TRACE + +lib/malloc/Makefile.in, Makefile.in + - added {imalloc,mstats}.h, {trace,stats}.c + +parse.y + - changed decode_prompt_string to save and restore $? + (last_command_exit_value) around calls to expand_prompt_string(), + so command substitutions in PS1, etc. don't change $? + +{array,subst}.c + - a couple more arrayind_t fixes from Paul Eggert + +configure.in + - remove redundant check for wait3(2) + +redir.h + - fixed a typo (stdin_redirs -> stdin_redirects) + + 9/10 + ---- +execute_cmd.c + - remove check for \n and \r from WHITESPACE macro, since those + chars are not whitespace as returned by the whitespace(c) macro + - getinterp now takes a `char *' as first arg, not unsigned char * + - execute_shell_script now takes a `char *' as first arg, not + unsigned char * + - fix typo in forward declaration for `initialize_subshell' + +general.[ch] + - check_binary_file now takes a (char *) argument, not unsigned char * + - pass unsigned char to isspace and isprint because of ISO C fuckup + - bash_tilde_expand now takes a `const char *' as its argument + +builtins/evalfile.c, shell.c + - buffer passed to check_binary_file is char, not unsigned char + +parse.y + - fix extern declaration for yyerror() + - yyerror now takes a `const char *' as first arg + +{error,jobs}.c + - fixes to printf-style functions to handle pids wider than an int + +lib/readline/{isearch,vi_mode}.c + - fix call to rl_message in rl_display_search (remove extra arg) + +variables.c + - fix missing argument to builtin_error in make_local_variable + +builtins/getopts.def + - since getopts takes no options, change while loop calling + internal_getopts to a simple `if' check + +builtins/printf.def + - since printf takes no options, change while loop calling + internal_getopts to a simple `if' check + +lib/readline/bind.c + - remove _SET_BELL macro, expand code inline + +lib/readline/input.c + - change _rl_input_available to use either select or FIONREAD, + but not both + +lib/readline/readline.c + - fix rl_digit_loop to remove unreachable code at end of loop + +{bashhist,bashline,expr,jobs,redir,shell}.c, builtins/fc.def, lib/sh/snprintf.c + - bracket unused functions with #ifdef INCLUDE_UNUSED/#endif + - remove some unused variables + +execute_cmd.c + - remove #ifdef'd code that allowed `return' to terminate a select + statement + +expr.c + - remove some extraneous tests from strlong() + +array.h + - arrayind_t is now a long, since shell arithmetic is performed as + longs + - remove second declaration of new_array_element + +builtins/printf.def + - in mklong, xrealloc cannot return NULL, so don't check for it + - remove some #if 0 code + - fix core dump triggered by a format specification with more than + one `*' + - remove `foundmod', since its value mirrors `modchar != 0' + - include "common.h" for builtin_{error,usage} declarations + +Makefile.in,builtins/Makefile.in + - updated some dependencies due to new include files + +pcomplete.c + - include "execute_cmd.h" for declaration of execute_shell_function + +arrayfunc.c + - include for printf + - include "builtins/common.h" for builtin_error declaration + +builtins/evalstring.c + - include "../trap.h" for run_trap_cleanup declaration + +builtins/help.def + - include "common.h" instead of locally declaring builtin_error + and builtin_usage + +error.h + - add extern declaration for itrace() + - add prototype to extern declaration of get_name_for_error + - file_error now takes a `const char *' as first argument + +externs.h + - added prototype for sh_setlinebuf declaration, bracketed with + NEED_SH_SETLINEBUF_DECL so we don't need stdio.h everywhere + - add extern declaration for parse.y:return_EOF() + +shell.c + - add NEED_SH_SETLINEBUF_DECL before including shell.h + +lib/readline/callback.c + - include or "ansi_stdlib.h" for abort declaration + +quit.h + - remove declaration of throw_to_top_level + +subst.c + - remove unused extern declaration for getopts_reset + +lib/sh/netopen.c + - include for legal_number, etc. + - add prototype for inet_aton extern declaration + +lib/sh/clock.c + - include for __P declaration + - add extern declaration for get_clk_tck + +support/mkversion.sh + - changed so that extern function declarations for functions in + version.c (moved from externs.h) are in the generated version.h + +shell.h + - include version.h + +version.c + - various `char *' version variables are now `const char *' + +general.h + - add prototype for same_file, bracketed with _POSIXSTAT_H + #ifdef, since that's what include/posixstat.h defines + +builtins/common.[ch] + - _evalfile, maybe_execute_file, source_file, and fc_execute_file + now take a `const char *' as their first argument + +eval.c + - removed extern declaration of yyparse; it's in externs.h + +parse.y + - added prototypes to static forward function declarations + - changed local `all_digits' variable in read_token_word () to + all_digit_token to avoid clash with all_digits() function in + general.c + +{bashhist,copy_cmd,make_cmd,hashlib,mailcheck}.c + - added prototypes for static function declarations + +shell.h + - add extern declarations for interactive, interactive_shell, + changed c files with extern declarations + +pcomplete.c + - changed it_init_aliases to avoid shadowing global variable + `aliases' + +bashline.c,pathexp.c,general.h + - sh_ignore_func_t is now a pointer to a function taking a + `const char *'; users changed + +configure.in + - test for + +config.h.in + - add #undef HAVE_STRINGS_H + +bashansi.h + - change like recommended in autoconf manual + + 9/11 + ---- +[a date which will live in infamy. prayers for the victims.] + +execute_cmd.c + - don't use an absolute index into abuf in mkfmt, use + sizeof(abuf) to compute last index + +builtins/common.c + - fix read_octal to do a better job of detecting overflow while + iterating through the string + +builtins/umask.def + - change octal-print mode to print 4 digits, like other shells + - cast umask to unsigned long to avoid problems on systems where + it's wider than an int (POSIX doesn't guarantee that mode_t is + no wider than an int, but real-world systems use int) + +builtins/printf.def + - mklong can never return NULL (it uses xrealloc), so the mainline + doesn't need to check for NULL returns + - new function, getldouble (long double *), to get long doubles + - mklong now takes a `char *' as its second argument, the modifier(s) + to use + - changed use of `modchar' to handle more than a single modifier + character + - changed to handle `long double' and `L' formats better, rather + than discarding long double information + - since printf now follows the POSIX.2 rules for conversion errors, + we can dispense with the status returns from the get* functions + - make the get* functions as similar in structure as possible, + removing type casts, etc. + +lib/sh/timeval.c,execute_cmd.c + - change some instances of `long' to `time_t', for systems where + a time_t is bigger than a long + +jobs.c + - include "posixtime.h" instead of + +config.h.in + - add defines for HAVE_DECL_CONFSTR, HAVE_DECL_STRTOLD, + HAVE_DECL_SBRK, HAVE_DECL_PRINTF + - remove defines for SBRK_DECLARED and PRINTF_DECLARED + - add _GNU_SOURCE define + +configure.in + - add AC_CHECK_DECLS for strtold, confstr, sbrk, printf + - remove call to BASH_FUNC_SBRK_DECLARED + - remove call to BASH_FUNC_PRINTF + +xmalloc.c, lib/malloc/malloc.c + - change check of SBRK_DECLARED to HAVE_SBRK_DECL + +print_cmd.c + - change PRINTF_DECLARED to HAVE_DECL_PRINTF + +builtins/evalstring.c, builtins/common.h + - parse_and_execute now takes a `const char *' as its second argument + +input.h,parse.y + - with_input_from_* functions now take a `const char *' as their + second argument + - init_yy_io now takes a `const char *' as its fourth argument + +parse.y,externs.h + - parse_string_to_word_list now takes a `const char *' as its second + argument + +tests/builtins.right + - change output to account for extra digit in umask output + +pcomplib.c + - free_progcomp now takes a PTR_T argument + +builtins/bashgetopt.h + - include + - add prototypes to extern declarations + +builtins/shopt.def + - add prototypes to static function declarations + +builtins/{fc,umask,wait}.def, builtins/{bashgetopt,common}.c + - include for isdigit macro (referenced by `digit(x)') + +lib/readline/complete.c + - added more static function declarations with prototypes + + 9/12 + ---- +lib/sh/tmpfile.c + - use `^' instead of `*' in sh_mktmpname to make filenames a bit + more random + +include/stdc.h,lib/readline/rldstdc.h + - add __attribute__ definition + +builtins/common.h + - add printf __attribute__ to declaration of builtin_error + +error.h + - add printf __attribute__ to declaration of programming_error, + report_error, parser_error, fatal_error, sys_error, internal_error, + internal_warning + +lib/readline/readline.h + - add printf __attribute__ to declaration of rl_message + +pcomplete.c + - add printf __attribute__ to declaration of debug_printf + +print_cmd.c + - add printf __attribute__ to declarations of cprintf, xprintf + +include/chartypes.h + - new file, includes and defines macros that check for + safe (ascii) arguments before calling the regular ctype macros + +{alias,bashline,execute_cmd,expr,findcmd,general,locale,mksyntax,stringlib,subst,variables}.c +parse.y +builtins/{bashgetopt,common}.c +builtins/{fc,printf,umask,wait}.def +lib/glob/strmatch.c +lib/sh/{oslib,pathcanon,pathphys,snprintf,strcasecmp,strindex,stringvec,strtod,strtol,strtrans}.c +examples/loadables/{head,sleep}.c + - include "chartypes.h" or instead of + +Makefile.in,{builtins,lib/{glob,sh}}/Makefile.in + - update dependencies to include chartypes.h + +lib/sh/inet_aton.c + - use `unsigned char' instead of `char' to pass to ctype.h functions + +lib/sh/netopen.c + - check for '0' <= host[0] <= '9' in _getaddr instead of using + isdigit + +subst.c,lib/sh/shquote.c + - change array subscripts into sh_syntaxtab from `char' to + `unsigned char' + +{alias,bashline,execute_cmd,expr,general,subst}.c, parse.y +builtins/{fc,printf,umask,wait}.def builtins/{bashgetopt,common}.c +lib/sh/{pathcanon,pathphys,snprintf,strcasecmp,strindex,strtod,strtol,strtrans}.c +examples/loadables/{head,sleep}.c + - change to use some of the new macros in chartypes.h + - remove old local macro definitions now provided by chartypes.h + +general.h + - remove definition of isletter, ISOCTAL, digit, digit_value + - change legal_variable_starter and legal_variable_char to use + chartypes.h macros + - change ABSPATH to use chartypes.h macros + +lib/readline/util.c + - change to use Paul Eggert's FUNCTION_FOR_MACRO define to define + function replacements for macros in chardefs.h + +lib/readline/chardefs.h + - added some of the same macros as in chartypes.h + - change _rl_lowercase_p, _rl_uppercase_p, _rl_digit_p, + _rl_to_upper, _rl_to_lower to use new IS* macros + - added _rl_isident macro from vi_mode.c:isident + +lib/readline/{bind,complete,nls}.c + - change to use some of the new macros from chardefs.h + +lib/readline/vi_mode.c + - isident -> _rl_isident + - remove local defines of macros in chardefs.h + +lib/sh/strtol.c + - updated to new version, modified from glibc 2.2.4 and sh-utils-2.0. + This one can do strtoll and strtoull, if necessary + + 9/13 + ---- +builtins/ulimit.def + - changed get_limit so it retrieves both hard and soft limits + instead of one or the other + - changed callers of get_limit + - changed getmaxvm to take soft limit, hard limit as arguments + - changed getmaxuprc to just take a single argument, the value + - changed calls to printone() to pass soft limit or hard limit + depending on `mode' instead of using old current_limit variable + - moved check for out-of-range limits in ulimit_internal into the + block that converts a string argument to a value of type rlim_t + - changed RESOURCE_LIMITS struct to break the description into a + description string and separate scale factor string + - changed print_all_limits to print a single error message if + get_limit fails, including limits[i].description now that the + scale factor has been removed from the description string + - removed DESCFMT define, since it's now used only in printone() + - changed printone to print the option character associated with a + particular limit if we're printing multiple limits + - changed calls to builtin_error to print the description associated + with a limit if setting or getting the limit fails + - added support for new POSIX 1003.1-200x rlim_t values: + RLIM_SAVED_CUR and RLIM_SAVED_MAX, which expand to the current + soft and hard limits, whatever they are + - changed printone to print `hard' or `soft' if the current limit is + RLIM_SAVED_MAX or RLIM_SAVED_CUR, respectively + - changed ulimit_internal to handle new `hard' and `soft' arguments + - changed help text do describe the special limit arguments `hard', + `soft', and `unlimited' + +doc/{bash.1,bashref.texi} + - documented new `hard' and `soft' limit arguments to `ulimit' + +hashlib.[ch] + - find_hash_item now takes a `const char *' is its first argument + - hash_string now takes a `const char *' is its first argument + - remove_hash_item now takes a `const char *' as its first argument + +pcomplib.c + - removed cast from first argument to find_hash_item in find_compspec + +general.[ch] + - absolute_program now takes a `const char *' as its argument + - absolute_pathname now takes a `const char *' as its argument + +lib/glob/glob.[ch] + - glob_pattern_p now takes a `const char *' as its argument + +bashline.c + - removed cast from first argument to absolute_program in + command_word_completion_function + - removed cast from first argument to glob_pattern_p in + attempt_shell_completion + +findcmd.[ch] + - find_absolute_program, find_user_command, find_path_file, + search_for_command, user_command_matches now take a + `const char *' as their first argument + - file_status, executable_file, is_directory, executable_or_directory + now take a `const char *' as their argument + - _find_user_command_internal, find_user_command_internal, + find_user_command_in_path + +lib/sh/makepath.c, externs.h + - changed sh_makepath so it takes `const char *' for its first + two arguments + +hashcmd.[ch] + - find_hashed_filename now takes a `const char *' as its first arg + - remove_hashed_filename now takes a `const char *' as its first arg + +variables.[ch] + - new_shell_variable, var_lookup, shell_var_from_env_string, + find_name_in_env_array, bind_function, makunbound, + bind_name_in_env_array, bind_tempenv_variable, bind_variable + now take a `const char *' as their first arg + - find_function, make_new_variable, find_tempenv_variable, + find_variable_internal, find_variable, set_func_read_only, + set_func_auto_export, all_variables_matching_prefix, assign_in_env, + assignment, kill_local_variable, make_local_variable, unbind_variable + now take a `const char *' as their arg + - mk_env_string now takes `const char *' arguments + +arrayfunc.[ch] + - skipsubscript now takes a `const char *' as its argument + + 9/17 + ---- +lib/readline/complete.c + - attempt to preserve case of what the user typed in + compute_lcd_of_matches if we're ignoring case in completion + +builtins/{let,pushd}.def,{execute_cmd,expr}.c + - change some 0L constants to 0 and let the compiler sort it out + + 9/18 + ---- +lib/malloc/alloca.c + - alloca now takes a `size_t' argument + +include/memalloc.h + - if we're providing an extern function declaration for alloca, + use `void *' and prototype if __STDC__ is defined + - if HAVE_ALLOCA_H is defined, but C_ALLOCA is defined, don't + define HAVE_ALLOCA + + 9/19 + ---- +subst.c + - do_assignment_internal, do_assignment, and do_assignment_no_expand + now take a `const char *' as their first argument + +general.h + - a `sh_assign_func_t' is now a function taking a `const char *' and + returning int + +hashcmd.c + - free_filename_data now takes a `PTR_T' argument to agree with the + typedef for `sh_free_func_t' + +lib/sh/snprintf.c + - use TYPE_MAXIMUM define like strtol.c instead of huge constants + + 9/20 + ---- +lib/sh/snprintf.c + - don't bother to compile the bulk of the body unless HAVE_SNPRINTF + or HAVE_ASPRINTF is not defined + + 9/24 + ---- +flags.c + - ignore `set -n' if the shell was started interactively + +lib/readline/readline.c + - initialize readline_echoing_p to 0; let the terminal-specific code + in rltty.c set it appropriately + +lib/malloc/malloc.c + - changed internal_memalign() slightly to avoid compiler warnings about + negating an unsigned variable (-alignment -> (~alignment + 1)) + + 9/27 + ---- +lib/readline/readline.c + - changed rl_newline to set _rl_history_saved_point appropriately + for the {previous,next}_history code + +lib/readline/rlprivate.h + - extern declaration for _rl_history_preserve_point + +lib/readline/bind.c + - new bindable variable, `history-preserve-point', sets value of + _rl_history_preserve_point + + 10/1 + ---- +lib/malloc/table.c + - new file, with a map of allocated (and freed) memory for debugging + multiple frees, etc. Indexed by hash on values returned by + malloc(); holds size, file and line number info for last alloc or + free and a couple of statistics pointers + +lib/malloc/malloc.c + - a few cleanups; added calls for registering allocations and frees + if MALLOC_REGISTER is defined + - replaced MALLOC_RETURN with explicit MALLOC_NOTRACE define + - reordered fields in `struct...minfo' in `union mhead' to restore + eight-byte alignment + - added explicit checks for underflow in free and realloc since + checking mh_magic2 is not sufficient to detect everything (it's + no longer the last field in the struct, and thus not the bytes + immediately preceding what's returned to the user) + - new function, xbotch, for printing file and line number info for + the failed assertion before calling botch() (programming_error()) + +configure.in + - replaced call to BASH_C_LONG_LONG with call to + AC_CHECK_TYPES([long long]) + - moved the C compiler tests before the tests for various + system types, so we can know whether we have `long long' + before testing for 64-bit types + - if we have `long long', check for sizeof(long long) and save value + +aclocal.m4 + - changed BASH_TYPE_BITS64_T to check `long long' before `long', but + after `double' + + 10/2 + ---- +lib/malloc/malloc.c + - made malloc and realloc both agree on the rounding for a request of + size N (round up to nearest multiple of 8 after adjusting for + malloc overhead); uses new ALLOCATED_BYTES macro + - realloc and free now use new IN_BUCKET macro for underflow checks + +execute_cmd.c + - fixed time_command() to use `time_t' instead of `long' to hold + time stamps + +lib/sh/clock.c + - clock_t_to_secs now takes a `time_t *' second argument + - fixed print_clock_t to call clock_t_to_secs with right arguments + +lib/sh/timeval.c + - fixed print_timeval to make `minutes' a `long' and make its + structure identical to print_clock_t + +redir.c + - changed redirection_error to check for EBADF and use the file + descriptor being redirected from in the error message if it + is >= 0 + +Makefile.in + - changed release status to `beta1' + +lib/glob/collsyms.h + - added a few ASCII symbols to the posix_collsyms array + + 10/3 + ---- +aclocal.m4 + - fixed typo in BASH_TYPE_BITS64_T + +configure.in + - added check for unsigned chars with AC_C_CHAR_UNSIGNED + +config.h.in + - added PROTOTYPES and __CHAR_UNSIGNED__ #defines + +general.h + - if CHAR_MAX is not define by , provide a definition + +builtins/printf.def + - change tescape() to mask \0 and \x escape sequences with 0xFF + - change tescape() to process at most two hex digits after a `\x' + +lib/sh/strtrans.c + - change strtrans() to mask \0 and \x escape sequences with 0xFF + - change strtrans() to process at most two hex digits after a `\x'. + This affects `echo -e' and $'...' processing + +lib/readline/bind.c + - changed rl_translate_keyseq() to process at most two hex digits + after a `\x' + +lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1 + - changed documentation for key binding escape sequences to specify + that at most two hex digits after \x are translated + - changed documentation for key binding to specify that the result + of \nnn or \xhh escapes is an eight-bit value, not just ASCII + +doc/{bash.1,bashref.texi} + - changed documentation of $'...' to specify that at most two hex + digits after \x are translated + - changed `echo' documentation to specify that at most two hex + digits after \x are translated + - changed documentation for `echo' and $'...' to specify that the + result of \nnn or \xhh escapes is an eight-bit value, not just ASCII + + 10/4 + ---- +lib/malloc/malloc.c + - changed interface for xbotch to pass memory address and error code + as two additional arguments + - call mregister_describe_mem from xbotch to get the last allocation + or free before the botch + +configure.in + - call AC_CHECK_DECLS([strsignal]) + +config.h.in + - add HAVE_DECL_STRSIGNAL + +siglist.h + - make declaration of strsignal() dependent on !HAVE_DECL_STRSIGNAL + + 10/5 + ---- +support/texi2html + - upgraded to version 1.64 + + 10/9 + ---- +aclocal.m4 + - added check for `long long' to BASH_TYPE_PTRDIFF_T + +configure.in + - replaced call to BASH_HAVE_TIOCGWINSZ with AC_HEADER_TIOCGWINSZ + +aclocal.m4 + - replaced body of BASH_STRUCT_TERMIOS_LDISC with call to + AC_CHECK_MEMBER(struct termios.c_line, ...) + - replaced body of BASH_STRUCT_TERMIO_LDISC with call to + AC_CHECK_MEMBER(struct termios.c_line, ...) + +[bash-2.05a-beta1 frozen] + + 10/10 + ----- +lib/sh/snprintf.c + - fixed exponent() to not smash the trailing zeros in the fraction + when using %g or %G with an `alternate form' + - fixed exponent() to handle the optional precision with %g and %G + correctly (number of significant digits before the exponent) + + 10/11 + ----- +expr.c + - fixed strlong() to correct the values of `@' and `_' when + translating base-64 constants (64#@ == 62 and 64#_ == 64), for + compatibility with ksh + +lib/sh/itos.c + - added a slightly more flexible fmtlong() function that takes a + base argument and flags (for future use) + - rewrote itos and inttostr in terms of fmtlong + +lib/sh/fmtulong.c + - new file, converts unsigned long to string. hooks for `unsigned + long long' in the future. unused as yet + + 10/15 + ----- +lib/readline/rltty.c + - change the SET_SPECIAL macro to avoid possible (but highly + unlikely) negative array subscripts + +error.h + - add __attribute__ to extern declaration of itrace (even though the + function isn't defined in released versions of bash) + +bashansi.h + - include if HAVE_STRINGS_H is defined, to get any extra + function declarations provided therein + +copy_cmd.c + - fix typo in forward declaration for copy_arith_for_command + +lib/malloc/stats.c + - make the accumulators in _print_malloc_stats be `unsigned long' + instead of `int' + +externs.h, sig.h + - add `__noreturn__' gcc attribute to exit_shell and jump_to_top_level + declarations + +lib/sh/mailstat.c, support/bashversion.c + - include for some string function declarations + +lib/malloc/shmalloc.h + - added extern declarations of functions that do malloc debugging + +lib/readline/{isearch,readline,vi_mode}.c + - make sure we index into _rl_keymap with a non-negative index + +parse.y + - make sure we index into sh_syntaxtab with a non-negative index + +lib/readline/vi_mode.c + - bound the vi_mark_chars array with the number of characters between + 'a' and 'z' rather than using a fixed amount + - don't use _rl_lowercase_p when deciding whether the char read by + rl_vi_set_mark is a valid mark; just use 'a' <= char <= 'z' + +lib/readline/chardefs.h + - conditionally include memory.h and strings.h as in general.h + - replace ISASCII with IN_CTYPE_DOMAIN like other GNU software + - add defines for ISPRINT(c), ISLOWER(c) and ISUPPER(c) + - fix defines for _rl_lowercase_p, _rl_uppercase_p, _rl_digit_p, + _rl_pure_alphabetic, ALPHABETIC, _rl_to_upper, _rl_to_lower, + and _rl_isident to work on systems with signed chars + +include/chartypes.h + - replace ISASCII with IN_CTYPE_DOMAIN like other GNU software + +lib/sh/{strcasecmp,strtod,strtol}.c + - don't pass possibly-negative characters to tolower() or toupper() + +lib/glob/strmatch.c + - don't bother testing for isupper in FOLD; rely on TOLOWER macro + from to do it + - don't use local definitions of isblank, et al.; rely on macros + from + +lib/readline/{display,readline}.c, mksyntax.c + - use new ISPRINT macro instead of isprint() + +builtins/{kill.def,mkbuiltins.c},{error,execute_cmd,jobs,nojobs,subst}.c + - don't assume that a pid_t fits into an int for printing and other + uses + +variables.[ch] + - the unused put_gnu_argv_flags_into_env now takes a `long' pid + argument + +configure.in, config.h.in + - call AC_STRUCT_ST_BLOCKS, define HAVE_STRUCT_STAT_ST_BLOCKS if found + - check for strtoull(), define HAVE_STRTOULL if found + - check for uintmax_t, define to `unsigned long' if not found + +lib/sh/mailstat.c + - don't use st_blocks member of struct stat unless + HAVE_STRUCT_STAT_ST_BLOCKS is defined; otherwise use the st_nlink + field to return the total number of messages in a maildir-style + mail directory + +general.h,{alias,expr,general,subst,variables}.c +builtins/{printf,read}.def +lib/readline/{bind,complete,nls}.c +lib/sh/{pathcanon,pathphys,shquote,snprintf,strindex,strtod,strtol,strtrans}.c + - cast args to ctype macros to unsigned char for systems with signed + chars; other fixes for signed chars + +lib/sh/{fmtullong,strtoull.c} + - new files, more support for `long long' + +Makefile.in, lib/sh/Makefile.in + - make fmtullong.o and strtoull.o part of libsh + +lib/sh/itos.c + - remove local copy of fmtlong; use fmtulong instead + - new functions: uitos, uinttostr work on `unsigned long' + +lib/sh/snprintf.c + - fixes to make `unsigned long long' work (%llu) + - fixes to make unsigned formats not print the sign when given + an unsigned long that is greater than LONG_MAX + +externs.h + - extern declarations for fmtulong, fmtulloing, strtoull + - extern declarations for uitos, uinttostr + + 10/16 + ----- +configure.in + - move header checks before function checks + - move c compiler tests before header checks + - check for with BASH_HEADER_INTTYPES + - change type checks for intmax_t, uintmax_t to not attempt to + include + - check for strtoimax, strtoumax, strtoll, strtol, strtoull, strtoul + with BASH_CHECK_DECL (for declarations in header files) and + AC_REPLACE_FUNCS (for availability and LIBOBJS substitution) + - remove check for have_long_long around sizeof check for long long + (since autoconf will give it a size of 0 if the type isn't found) + +config.h.in + - add a define for HAVE_INTTYPES_H + - add a define for HAVE_UNSIGNED_LONG_LONG + - add defines for HAVE_STRTOIMAX, HAVE_STRTOUMAX, HAVE_STRTOLL + +aclocal.m4 + - new func, BASH_HEADER_INTTYPES, which just calls AC_CHECK_HEADERS + on ; separate so it can be AC_REQUIREd + - AC_REQUIRE([BASH_HEADER_INTTYPES]) in BASH_CHECK_TYPE + - include in BASH_CHECK_TYPE if HAVE_INTTYPES_H is + defined + - change AC_DEFINE to AC_DEFINE_UNQUOTED in BASH_CHECK_TYPE + - new `long long' checking macros: BASH_TYPE_LONG_LONG and + BASH_TYPE_UNSIGNED_LONG_LONG + - new BASH_CHECK_DECL + +lib/sh/{strto[iu]max,strtoll}.c, lib/sh/Makefile.in, Makefile.in + - new files + +externs.h + - extern declarations for strtoll, strtoimax, strtoumax + +lib/malloc/alloca.c + - include for size_t + +builtins/printf.def + - new functions: getllong, getullong, getintmax, getuintmax; return + long long, unsigned long long, intmax_t, uintmax_t respectively + - builtin printf now handles `ll' and `j' length modifiers directly + +lib/sh/Makefile.in + - use LIBOBJS to decide whether or not the strto* functions are + needed + + 10/17 + ----- +configure.in + - call AC_REPLACE_FUNCS(rename) + - move getcwd, strpbrk, strcasecmp, strerror, strtod + from AC_CHECK_FUNCS to AC_REPLACE_FUNCS + - only call BASH_FUNC_GETCWD if $ac_func_getcwd == "yes" + - call BASH_CHECK_SYS_SIGLIST + - if we don't have vprintf but have _doprnt, call AC_LIBOBJ(vprint) + +lib/sh/Makefile.in + - remove rename, getcwd, inet_aton, strpbrk, strcasecmp, strerror, + strtod, vprint from OBJECTS; picked up from LIBOBJS + +aclocal.m4 + - change BASH_FUNC_GETCWD to call AC_LIBOBJ(getcwd) if the libc + getcwd(3) calls popen(3) + - change BASH_FUNC_INET_ATON to call AC_LIBOBJ(inet_aton) if it's + not found in libc or as a #define even with the special includes + - BASH_KERNEL_RLIMIT_CHECK -> BASH_CHECK_KERNEL_RLIMIT + - BASH_DEFAULT_MAILDIR -> BASH_SYS_DEFAULT_MAILDIR + - BASH_JOB_CONTROL_MISSING -> BASH_SYS_JOB_CONTROL_MISSING + - BASH_REINSTALL_SIGHANDLERS -> BASH_SYS_REINSTALL_SIGHANDLERS + - BASH_SIGNAL_CHECK -> BASH_SYS_SIGNAL_VINTAGE + - BASH_DUP2_CLOEXEC_CHECK -> BASH_FUNC_DUP2_CLOEXEC_CHECK + - BASH_PGRP_SYNC -> BASH_SYS_PGRP_SYNC + - BASH_RLIMIT_TYPE -> BASH_TYPE_RLIMIT + - BASH_FUNC_PRINTF -> BASH_DECL_PRINTF + - BASH_FUNC_SBRK_DECLARED -> BASH_DECL_SBRK + - BASH_MISC_SPEED_T -> BASH_CHECK_SPEED_T + - BASH_CHECK_SOCKLIB -> BASH_CHECK_LIB_SOCKET + - new macro, BASH_CHECK_SYS_SIGLIST, encapsulates all the checks for + sys_siglist, _sys_siglist, and strsignal(), sets SIGLIST_O to + siglist.o if appropriate + +Makefile.in + - use SIGLIST_O variable to decide whether or not we need siglist.o + +{execute_cmd,subst}.c + - change a couple of instances of ISDIGIT to DIGIT, where we really, + really only want ascii digits + +ansi_stdlib.h + - don't need a declaration for atol() + + 10/18 + ----- + +aclocal.m4 + - new macro, BASH_FUNC_PRINTF_A_FORMAT, checks for printf support + for %a, %A conversion specifiers, defines HAVE_PRINTF_A_FORMAT + if successful + +configure.in + - call AC_CHECK_FUNCS for isascii + - call BASH_FUNC_PRINTF_A_FORMAT + +config.h.in + - add a define for HAVE_ISASCII + - add a define for HAVE_PRINTF_A_FORMAT + +lib/sh/snprintf.c + - for long double output, fall back to sprintf using ldfallback() + function for floating point formats + - support %a, %A using dfallback() or ldfallback() if + HAVE_PRINTF_A_FORMAT is defined + - fix bug in vasprintf that returned wrong value in its first + argument if the buffer holding the result string got reallocated + - fixed PUT_CHAR macro to increment the counter even if we've + exceeded the buffer size, for the return value from + vsnprintf/snprintf + - fix vsnprintf_internal to not use counter < length as a loop + condition, but always process the entire format string (for + the return value from vsnprintf/snprintf) + +builtins/printf.def + - support %a, %A if HAVE_PRINTF_A_FORMAT is defined + +include/typemax.h + - new file, with the TYPE_MAXIMUM stuff that's duplicated in several + files in lib/sh + +lib/sh/{fmtulong,strtol,snprintf}.c + - include instead of having the definitions in each file + +lib/sh/Makefile.in + - updated dependencies for typemax.h + + 10/22 + ----- +configure.in + - call AC_CHECK_FUNCS on ctype.h functions/macros that bash redefines + in chartypes.h + +config.h.in + - defines for HAVE_IS{ASCII,BLANK,GRAPH,PRINT,SPACE,XDIGIT} + +include/chartypes.h, lib/glob/strmatch.c, lib/readline/chardefs.h + - don't redefine some is* ctype macros/functions if HAVE_ISXXX is + defined (meaning that an appropriate function, but not a macro, + exists) + +lib/sh/strtrans.c + - new function, ansic_shouldquote, returns 1 if argument string + contains non-printing chars that should be quoted with $'...' + +externs.h + - new declaration for ansic_shouldquote() + +variables.c + - change print_var_value to ansi C quote the string if we're not in + posix mode and the variable's value contains non-printing chars, + to use the regular shell single quoting if the value contains + shell meta-characters, and to just output the string otherwise + +lib/sh/shquote.c + - add `break' to `case '~':' to avoid fallthrough and extra test + +doc/bashref.texi + - note that in POSIX mode, `set' displays variable values that + include nonprinting characters without quoting, unless they + contain shell metacharacters + +builtins/printf.def, lib/sh/snprintf.c + - handle `F' conversion specifier as equivalent to 'f' + +parse.y, {nojobs,variables}.c + - a couple of cleanups for when building a minimal configuration + +nojobs.c + - new function: stop_making_children(), just sets + already_making_children to 0 (like stop_pipeline) + +subst.c + - call stop_making_children from subst.c:command_substitute if + JOB_CONTROL is not defined. This fixes the bug where the wrong + process is waited for (and its status returned) when using + command substitution in a null command in a shell function + +builtins/printf.def + - new variable `tw' used to keep track of the total number of + characters written by a single call to `printf' -- to be + used for the `%n' conversion, which will be added later. It + gets reset each time we reuse the format string, which is what + ksh93 seems to do + + 10/23 + ----- +variables.c + - new function, bind_var_to_int (char *var, long val) + +variables.h + - extern declaration for bind_var_to_int + +lib/sh/netopen.c + - use gai_strerror() for error messages when getaddrinfo() fails + - use PF_INET if DEBUG is defined, since IPv6 doesn't work for me + +Makefile.in + - pass DEBUG=${DEBUG} down to makes in some subdirectories + +{builtins,lib/{glob,sh}}/Makefile.in + - append ${DEBUG} to LOCAL_CFLAGS value, passed by top-level Makefile + +builtins/printf.def + - added support for %n format conversion char (number of chars printed + so far from current format string) + + 10/24 + ----- +variables.c + - if posixly_correct is set, the default value of $MAILCHECK is 600 + - use legal_number instead of atoi in adjust_shell_level + - treat non-numeric assignments to SECONDS as 0 in assign_seconds + - new function, init_funcname_var; sets FUNCNAME as a dynamic variable + if it's not set in the initial environment + - new function, init_groups_var; sets GROUPS as a dynamic array + variable if it's not set in the initial environment + - new function, init_dirstack_var; sets DIRSTACK as a dynamic array + variable if it's not set in the initial environment + - new function, init_seconds_var; sets SECONDS as a dynamic + variable using any valid integer value in the initial environment + as the initial value, as if an assignment had been performed + - call init_funcname_var, init_groups_var, init_dirstack_var, + init_seconds_var from initialize_dynamic_variables + - non-numeric values assigned to LINENO are treated as 0 + - change initialize_shell_variables to not auto-export PATH or TERM + - change set_home_var to not auto-export HOME + - change set_shell_var to not auto-export SHELL + - broke the code that sets HOSTNAME, HOSTTYPE, MACHTYPE, OSTYPE + out into a separate function, set_machine_vars; none of those + variables are auto-exported + - bash no longer un-exports SSH_CLIENT or SSH2_CLIENT + +shell.c + - changed isnetconn() to check SSH_CLIENT and SSH2_CLIENT only if + SSH_SOURCE_BASHRC is defined in config-top.h + +config-top.h + - added a commented-out definition for SSH_SOURCE_BASHRC + + 10/25 + ----- + +Makefile.in + - changed RELSTATUS to `rc1' (release candidate 1) + + 10/29 + ----- +locale.c + - fixed an `=' vs. `==' typo in set_locale_var when parsing + LC_NUMERIC + +doc/{bash.1,bashref.texi} + - document what bash does with $POSIXLY_CORRECT + +doc/builtins.1 + - some updates + +builtins/psize.sh + - some mktemp(1) changes + +lib/readline/readline.c + - change rl_backward to check for rl_point < 0 and reset to 0 if so + +lib/readline/util.c + - don't compile in _rl_strpbrk if HAVE_STRPBRK is defined + +lib/readline/rlprivate.h + - remove extern declaration of _rl_strpbrk + +lib/readline/rldefs.h + - #define _rl_strpbrk as strpbrk if HAVE_STRPBRK is define, otherwise + add extern declaration of _rl_strpbrk from rlprivate.h + +{mailcheck,shell,variables}.c + - make sure to include posixtime.h to get any prototype for time(3) + in scope + +{array,eval,execute_cmd,mksyntax,subst}.c, parse.y +builtins/common.c +lib/sh/pathcanon.c + - a few changes as the result of `gcc -Wall' patches from solar + designer + +builtins/read.def, parse.y + - change some calls to free() to xfree() + +builtins/set.def + - make sure unset_builtin() resets unset_array to 0 each time through + the loop, because it's set (and used) depending on the current + argument + +shell.h + - new define, USE_VAR, to force the compiler to not put a particular + variable in a register -- helpful if registers are not restored + by setjmp/longjmp + +builtins/{evalfile.c,{read,wait}.def}, {eval,execute_cmd,shell,test}.c + - use USE_VAR for some variables + +subst.c + - fixed a case in expand_word_internal where a NULL pointer could + have been passed to free() (though free() should ignore it) + - fixed a case at the end of expand_word_internal where LIST could + have been used uninitialized (it makes gcc happy, though it + doesn't happen in practice) + +test.c + - give test_syntax_error(), beyond(), and integer_expected_error() + the `__noreturn__' attribute for gcc + +unwind_prot.c + - in clear_unwind_protect_list(), convert `flags' to `long' (via + assignment to a `long' variable) before casting to `char *', in + case pointers and longs are 64 bits and ints are 32 (makes no + difference on 32-bit machines) + + 10/30 + ----- +print_cmd.c + - fixed cprintf to avoid gcc warning about assigning const pointer + to non-const (discarding type qualifier) + +{make_cmd,pcomplete,test}.c,parse.y + - some minor changes to shut up gcc warnings + +lib/sh/tmpfile.c + - fixed sh_mktmpfp to avoid file descriptor leaks in the case that + sh_mktmpfd succeeds but fdopen fails for some reason + - change sh_mktmpfd to use the same scheme for computing `filenum' + as sh_mktmpname + - change get_sys_tmpdir to prefer P_tmpdir if P_tmpdir is defined + - changed sh_mktmpname and sh_mktmpfd to avoid trying to assign to + `nameroot' if `nameroot == 0' (duh) + - add code to sh_mktmpfd to use mkstemp(3) if USE_MKSTEMP is defined + - add code to sh_mktmpname to use mktemp(3) if USE_MKTEMP is defined + +support/{fixlinks,mkclone} + - use mktemp if it's available for the symlink test + - use $TMPDIR instead of hardcoding /tmp; default to /tmp + - use a better filename for the symlink test instead of `z' + +support/bashbug.sh + - more changes inspired by a patch from solar designer + +lib/malloc/Makefile.in + - new target `alloca', which builds libmalloc.a with alloca.o only + (for systems without alloca that are configured --without-bash-malloc) + +configure.in + - if we don't have a working alloca and are not configured to build + the bash malloc library, make a malloc library containing only + alloca.o + +aclocal.m4 + - slight change to RL_LIB_READLINE_VERSION to deal with minor version + numbers with a letter appended (like 4.2a) + + 10/31 + ----- +doc/{bash.1,bashref.texi} + - slight change to note that only interactive shells resend a SIGHUP + to all jobs before exiting + +externs.h + - declare strto[ui]max only if NEED_STRTOIMAX_DECL is defined. This + keeps picky compilers from choking because intmax_t is not defined + (MacOS X 10.1) + +builtins/printf.def + - #define NEED_STRTOIMAX_DECL before including shell.h + + 11/1 + ---- +general.c + - check in bash_tilde_expand() for an unquoted tilde-prefix; don't + bother passing the string to tilde_expand unless the prefix is + unquoted + +shell.c + - fix a problem with $LINENO when executing commands supplied with + the -c invocation option when ONESHOT is defined + +[bash-2.05a-rc1 frozen] + +builtins/printf.def + - fix the %n conversion to require that the variable name supplied + be a valid shell identifier + +variables.c + - improve random number generator slightly by using the upper 16 + bits of the running random number instead of the lower 16, which + are incrementally more random + + 11/2 + ---- +configure.in + - if RL_INCLUDEDIR ends up being /usr/include, don't put + -I$(RL_INCLUDEDIR) into CFLAGS + + 11/5 + ---- +doc/{bash.1,bashref.texi} + - correct description of POSIXLY_CORRECT to note that the shell enters + posix mode *before* the startup files are read if POSIXLY_CORRECT + is in the initial environment + +variables.c + - fix function prologues for init_dirstack_var and init_groups_var + to agree with caller (no arguments) + +jobs.c + - fix forward function declarations for pipe_read and pipe_close + +subst.c + - removed `inline' attribute from skip_double_quoted because it can + potentially be called recursively + +bashline.c + - quick fix to bashline.c:attempt_shell_completion programmable + completion code to just punt if the end of the command word found + by find_cmd_end is <= the start found by find_cmd_start (the bug + is probably in find_cmd_start -- fix later) + +pcomplete.c + - fix gen_matches_from_itemlist to return if the stringlist is null + after any cleaning or initialization, before trying to use it + - fix GEN_COMPS to only bother to try to append the STRINGLIST + returned by gen_matches_from_itemlist to `glist' if it's non-NULL + +lib/sh/stringlist.c + - make copy_stringlist return NULL if the STRINGLIST * passed as an + argument is NULL + - make append_stringlist call copy_stringlist only if M2 is non-NULL; + otherwise just return NULL if m1 is NULL + - make word_list_to_stringlist return 0 immediately if the passed + LIST argument is NULL + - make realloc_stringlist call alloc_stringlist if the passed + STRINGLIST argument (`sl') is 0, just like realloc calls malloc + +subst.c + - in skip_to_delim(), if we have an unclosed ${, and it's at the end + of the string (string[i] == '{', string[i+1] == '{' and + string[i+2] == 0, return si (i + 2) immediately without bothering + to call extract_dollar_brace_string or extract_delimited_string + - in skip_to_delim(), if string[i] is 0 after a call to + extract_dollar_brace_string or extract_delimited_string (meaning we + have an unclosed ${ or other expansion, return i immediately without + doing a `continue' (which will increment i past the end of string) + - in split_at_delims, don't increment te by 1 if it's pointing to a + delimiter. this has the effect of skipping the first delimiter + char in a possibly multi-character delimiter, and ignoring + single-char delimiters like `>' + +configure.in + - use AC_CHECK_MEMBERS([struct stat.st_blocks]) instead of a call to + AC_STRUCT_ST_BLOCKS to avoid configure changing LIBOBJS if the test + fails + +general.c + - introduce two new variables: bash_tilde_{prefixes,suffixes}, set + to the additional prefixes and suffixes bash wants to pass to the + tilde expansion code (reserved for post-bash-2.05a fix) + +aclocal.m4 + - add missing `test' in BASH_CHECK_SYS_SIGLIST + + 11/7 + ---- +lib/readline/vi_mode.c + - fix rl_vi_goto_mark to explicitly check that the desired mark is + between 'a' and 'z', since some locales have lowercase letters + outside that range, which could cause a negative subscript + +include/chartypes.h + - remove superfluous `#undef ISASCII' + +lib/sh/strto[iu]max.c + - changes from Paul Eggert to work around buggy compilers and catch + configuration errors at compile time + +aclocal.m4 + - new macro, BASH_C_LONG_DOUBLE, identical to AC_C_LONG_DOUBLE but + with a fix for Irix 5.3 (not called, since I'm not sure it's the + right thing to do -- the C standard allows double and long double + to be the same size) + +lib/sh/snprintf.c + - only try to write the trailing NUL in vsnprintf_internal if + data->length is >= 0, since if it's not, we probably don't have + a buffer + +Makefile.in + - changed RELSTATUS to `release' + + 11/8 + ---- +lib/sh/strtol.c + - make sure chars passed to toupper are cast to unsigned + +unwind_prot.c + - change clear_unwind_protect_list to not require a cast from `int' + to `char *' + +lib/readline/chardefs.h + - make _rl_digit_p succeed only for ascii digits, since that's what + most callers assume + + 11/13 + ----- +doc/bashref.texi + - added `ERR' trap and [-+]O invocation option to section listing + differences from the Bourne shell + + 11/15 + ----- +[bash-2.05a released] + + 11/19 + ----- +include/stdc.h + - new define, INLINE, defined as `inline' for gcc and empty otherwise + +subst.c + - make skip_double_quoted, sub_append_string have INLINE attribute + +trap.c + - use BASH_NSIG as upper limit for signal names in signal_name() + +lib/readline/bind.c + - use RL_COMMENT_BEGIN_DEFAULT in output for rl-comment-begin value + +error.c + - fix sys_error to save value of errno around calls to fprintf + +doc/Makefile.in + - added rules to create PDF files from postscript and dvi input + +MANIFEST.doc + - added {article,bash,bashref,rose94}.pdf + +doc/bash.1 + - rearranged some `.PD 0' and `.TP' directives so man2html will + handle them better (shouldn't affect groff output) + +support/man2html.c + - small fix to handle quoted string arguments to directives like + `.BR' without mangling the output + + 11/20 + ----- +{arrayfunc,variables}.c + - changed calling sequence for dynamic array variable `assign' + functions to (SHELL_VAR *self, char *value, arrayind_t ind) + - changed calling sequence for dynamic variable assign functions + to the same as array variable assign_func. Now this can be + prototyped + +variables.h + - the assign_func member of a `struct variable' is now of type + `sh_var_assign_func_t', which is prototyped + - the dynamic_value member of a `struct variable' is now of type + `sh_var_value_func_t', which is prototyped + +variables.c + - changed to use `sh_var_assign_func_t' and `sh_var_value_func_t' + +builtins/cd.def + - when in posix mode, if the new directory name formed by PWD and + the argument passed by the user cannot be canonicalized, and the + -P option has not been supplied, return failure immediately + - if canonicalization failed, but the fallback to the directory + name specified by the user succeeds, reset the current working + directory + +lib/readline/{input.c,rlprivate.h} + - renamed rl_unget_char to _rl_unget_char; made library global + +lib/readline/{{bind,readline}.c,{keymaps,rlprivate}.h} + - support for `key subsequences'; allows a key sequence and a function + mapped to a subsequence of that key sequence. Primarily to allow + arrow keys to be bound in readline vi insert mode, while preserving + the ESC function to switch to command mode. + +lib/readline/{input.c,rlprivate.h} + - new function, _rl_input_queued(T), does a check with select or + FIONREAD with a timeout of `T' (which is generally 0) + +lib/readline/readline.c + - change _rl_dispatch_subseq to test for input in the queue if we + get ESC while in vi insertion mode if the keymap entry type for + ESC is ISKMAP. If _rl_input_queued returns non-zero, we assume + that an arrow key sequence has been pressed and go ahead with the + subsequence. If it returns zero, we assume that the user pressed + ESC to switch into command mode, and dispatch to that right away. + This avoids forcing the user to press another key before switching + into command mode + + 11/21 + ----- +lib/readline/readline.c + - bind common arrow key sequences in vi insertion keymap + +lib/readline/terminal.c + - bind termcap definition's arrow keys in vi insertion keymap + +lib/readline/bind.c + - check for rl_vi_movement_mode in _rl_bind_if_unbound, so + binding the arrow keys can work + +lib/readline/readline.c + - since _rl_bind_if_unbound does the check of what's currently + bound to the key sequence, the check in bind_arrow_keys_internal + was redundant + - bind_arrow_keys_internal now takes a Keymap argument and handles + saving and restoring _rl_keymap; changed bind_arrow_keys + accordingly + +builtins/fc.def + - fix from Paul Eggert to substitute the nearest history number in + range if an out-of-range value is supplied. POSIX requires this + +lib/sh/pathcanon.c + - fix from Corrina Vinschen for the special `cygdrive' prefix on + Cygwin + +bashhist.c + - split the history adding code into more pieces: + check_history_control (char *line) checks LINE against the value + of HISTCONTROL, returning 1 if LINE should be saved and 0 if not + + check_add_history (char *line) calls check_history_control and + history_should_ignore (line) and saves the line with + bash_add_history if the checks indicate that it should be saved + + maybe_add_history just calls check_add_history to set the value + of first_line_saved + +bashhist.h + - extern declaration for check_add_history() + +shell.c + - don't call load_history() from the interactive shell startup + code if history_lines_this_session is > 0, indicating that we've + already saved some lines in the history and that we probably + don't want to overwrite them + +builtins/history.def + - call check_add_history from push_history, so `history -s xx' + works even when in a compound command whose first line has not + been saved. (Caveat: in a compound command when the first + line has been saved, the line supplied to history -s will become + part of the compound command's history entry. Of course, the + delete_history call could remove the compound command from the + history entirely) + +bashline.c + - use sh_makepath instead of xmalloc/sprintf in + command_word_completion_function + +lib/readline/complete.c + - get_y_or_n now takes an int FOR_PAGER argument; caller changed + If FOR_PAGER is non-zero, get_y_or_n returns appropriate values + for a more-like pager: `newline' or `return' return 2; `q' or + `Q' return 0 + - there is now a mini internal more-like pager for displaying a + list of completions that exceeds the screen height (new function + _rl_internal_pager, called from rl_display_match_list) + + 11/24 + ----- +command.h + - new flag, W_TILDEEXP, says to do tilde expansion on an + assignment word + +execute_cmd.c + - fix_assignment_words now sets W_TILDEEXP for assignment word + arguments to `assignment builtins' + +general.c + - bash_tilde_expand now takes a second argument indicating whether + or not it's being invoked in an `assignment context' + +general.h + - change extern declaration for bash_tilde_expand + +{bashline,execute_cmd,findcmd,general,variables}.c +builtins/evalfile.c +lib/sh/makepath.c + - fix callers of bash_tilde_expand appropriately + +subst.c + - fix callers of bash_tilde_expansion appropriately + - add (currently commented-out) code that would tilde expand assignment + statement arguments to assignment builtins (W_TILDEEXP flag set) + even when the shell is in posix mode + +bashline.c + - fix attempt_shell_completion to turn off + rl_filename_completion_desired when doing command name completion, + so no slash gets appended to the name if there happens to be a + directory with the same name in the current directory + + 11/26 + ----- +lib/readline/rltech.texinfo + - a couple of additions to the rl_stuff_char description + +parse.y + - turn off echo_input_at_read in parse_string_to_word_list, so `set -v' + doesn't give extra lines of output when doing compound array + assignment + +subst.c + - fix split_at_delims to handle skipping over a `\n' if it's a + delimiter (use spctabnl(c) instead of whitespace(c)) + + 11/27 + ----- +support/config.{guess,sub} + - updated (with bash changes) to latest version from gnu.org + +sig.h + - add prototype for set_signal_handler declaration + +builtins/setattr.def + - add prototype to extern declaration of declare_builtin + +builtins/times.def + - add no_options call, since times takes no options + +lib/sh/spell.c + - add prototypes to forward declarations for midist and spdist + +lib/sh/strtrans.c + - add explicit int return type to ansic_shouldquote declaration + +lib/readline/rldefs.h, lib/readline/{macro,readline,util,undo}.c + - move define for SWAP to rldefs.h, removed from various C files + +lib/readline/vi_mode.c + - removed define for exchange(), changed to use SWAP instead + +lib/readline/bind.c + - added some static forward function declarations + - find_boolean_var, find_string_var now take a `const char *' argument + +lib/readline/signals.c + - added static forward declaration for rl_maybe_set_sighandler + +lib/readline/readline.c + - add some common key bindings for the HOME and END keys in + bind_arrow_keys_internal + +lib/readline/terminal.c + - fetch the `@7' termcap string; it's sent by the END key + - attempt to bind the terminal's END key to rl_end_of_line in + bind_termcap_arrow_keys; I don't know why I was using `kH' + instead of `@7' + +doc/builtins.1 + - remove `case', `for', `if', `until', `while' from NAME section; + those are not shell builtins + + 11/28 + ----- +stringlib.c + - new function, find_token_in_alist, takes a token value and an + ALIST argument, and returns the string correspoinding to the + token if found in the alist + +externs.h + - new extern declaration for find_token_in_alist() + +subst.c + - string_list_internal is no longer static + +subst.h + - new extern declaration for string_list_internal() + +parse.y + - new alist array of other tokens returned by read_token which are + not reserved words in word_token_alist[] + - reworked error reporting: new functions print_offending_line, + which prints the line containing the syntax error, + error_token_from_token, which takes the current token and tries to + figure out its textual representation, and error_token_from_text, + which does the old job of finding the bad token by analyzing the + text of shell_input_line at the current index + - report_syntax_error now tries to figure out the token that caused + the syntax error by first looking at current_token and falling + back to the old method of textual analysis if that fails + - report_syntax_error doesn't say the token resulting from the textual + analysis of the input line is an `unexpected token'; it just + says there is a `syntax error near xxx' + - changed conditional command error reporting to use the value + returned by error_token_from_token if it's not null instead of + just using the token value in the message, since current_token + ends up being set to -1, and the text of the message from + report_syntax_error might not be exactly right + - change parse_string_to_word_list to set current_token to the + offending token returned by read_token before calling yyerror() + to make the error reporting do the right thing + +aclocal.m4 + - fixed typo in BASH_CHECK_LIB_TERMCAP + +configure.in + - add check for isinf(3); define HAVE_ISINF_IN_LIBC if found + +config.h.in + - add define for HAVE_ISINF_IN_LIBC + +lib/sh/snprintf.c + - check for Inf and NaN, using isinf and isnan if they're found in + libc + - use the current locale for thousands separator and decimal point + - recognize "'" flag; not implemented yet + - fix for snprintf/vsnprintf with length of 0 and string argument of + 0 with non-zero length + +builtins/read.def + - TMOUT is now the default timeout for `read' (and select) if set, + like ksh93 when reading from the terminal + - edit_line (called by read -e) now just does readline's filename + completion by setting rl_attempted_completion_function to NULL, + since e.g., doing command completion for the first word on the + line wasn't really useful + +execute_cmd.c + - changed select_command to return failure status if select_query + returns NULL, indicating that read_builtin returned + EXECUTION_FAILURE + +doc/{bash.1,bashref.texi} + - documented new TMOUT behavior + - slight change to the description of the test `-ef' option + +doc/bashref.texi + - added item to posix mode section describing failure behavior of + cd when invoked in logical mode and the pathname formed by + combining $PWD and the directory argument does not refer to an + existing directory + + 11/29 + ----- +execute_cmd.c + - fix execute_function to call dispose_function_env after + merge_function_env if the shell is in posix mode (fixes debian + bash bug #117673) + +lib/readline/readline.c + - rl_forward -> rl_forward_char; rl_forward function for compatibility + - rl_backward -> rl_backward_char; rl_forward function for + compatibility + - new functions, rl_forward_byte, rl_backward_byte, for future use + +lib/readline/readline.h + - extern declarations for rl_forward_char, rl_backward_char, + rl_forward_byte, rl_backward_byte + +lib/readline/{emacs_keymap,funmap,vi_keymap,vi_mode + - rl_forward -> rl_forward_char + - rl_backward -> rl_backward_char + +lib/readline/funmap.c + - new bindable names, `backward-byte' and `forward-byte' + +aclocal.m4 + - new function, BASH_CHECK_MULTIBYTE, encapsulates checks for + multibyte code + +config.h.in + - add necessary defines for multibyte include files and functions + +configure.in + - add call to BASH_CHECK_MULTIBYTE + +config-bot.h + - add code to define HANDLE_MULTIBYTE if prerequisites are met + +lib/sh/xstrchr.c + - new file, xstrchr() is strchr(3) that handles multibyte characters + +bashhist.c + - first_line_saved -> current_command_first_line_saved; variable is + now global + +bashhist.h + - extern declaration for current_command_first_line_saved + + 11/30 + ----- +bashhist.c + - break the code that actually calls add_history out of + bash_add_history into a new function, really_add_history; + bash_add_history now calls really_add_history + - check_add_history takes a second `force' argument telling it + whether to call bash_add_history (force == 0) or really_add_history + (force != 0) + +builtins/history.def + - in push_history, call delete_last_history if the current command + has more than one line, the first line was saved, and + command-oriented history is active. This takes care of deleting + the right history element if `history -s' is used within a + compound or multiline command + - in push_history, call check_add_history with second argument of 1 + to skip check of current_command_line_count and add the arguments + to history -s as a single separate history entry + + 12/3 + ---- +lib/readline/complete.c + - append a slash to completed names which are symlinks to directories + if the new variable _rl_complete_mark_symlink_dirs is non-zero + +lib/readline/rlprivate.h + - extern declaration for _rl_complete_mark_symlink_dirs + +lib/readline/bind.c + - new bindable variable, `mark-symlinked-directories', mirrors the + value of _rl_complete_mark_symlink_dirs + +doc/bash.1, lib/readline/doc/{readline.3,rluser.texinfo} + - documented new `mark-symlinked-directories' variable + + 12/4 + ---- +variables.[ch] + - set_pipestatus_array now takes a second argument with the number + of processes in the array + - changed set_pipestatus_array to just modify the value in place if + the existing array has one element and the new array has one + element, and to modify existing values in place if new array has + more elements than existing array + +variables.c, jobs.c + - changed set_pipestatus_array callers + +jobs.c + - moved call to setjstatus() from set_job_status_and_cleanup to + wait_for, since set_job_status_and_cleanup is part of the SIGCHLD + signal handler call path, and race conditions accessing the + PIPESTATUS array will result for things like + + while true; do date; done | cat > /dev/null + + 12/5 + ---- +xmalloc.h + - don't redefine xmalloc, xrealloc, and xfree if DISABLE_MALLOC_WRAPPERS + is #defined + +config.h.in + - #undef for DISABLE_MALLOC_WRAPPERS + +configure.in + - define DISABLE_MALLOC_WRAPPERS if the --with-purify option is + supplied + +lib/malloc/trace.c + - new function, malloc_trace_bin(N), traces allocations and frees + to bucket N (uses the same type of bitmap as `busy') + +lib/malloc/table.c + - fix wraparound search problem in find_entry when searching for a + free entry when the table is full + + 12/6 + ---- +lib/malloc/table.c + - keep an `overflow bucket' around to use when the table is full, + so find_entry always returns a valid pointer when FIND_ALLOC + is set + - new static variable to keep a count of the number of MT_ALLOC + entries in the mem_table + +lib/sh/{oslib,clktck}.c + - if HAVE_LIMITS_H is defined, include + +lib/sh/oslib.c + - new function, getmaxgroups() returns max number of simultaneous + groups + - new function, getmaxchild(), returns max number of simultaneous + user processes + +general.c + - removed forest of #defines for getmaxgroups() + +externs.h + - new extern declaration for getmaxgroups() + - new extern declaration for getmaxchild() + - new extern declaration for isnetconn() + +lib/sh/netconn.c,shell.c + - new file, isnetconn() from shell.c moved here + +Makefile.in, lib/sh/Makefile.in + - necessary changes for netconn.c + +builtins/ulimit.def + - changed getmaxuprc() to just call getmaxchild() and massage the + return value appropriately + +{jobs,nojobs}.c + - use the value returned by getmaxchild() in + mark_dead_jobs_as_notified instead of static CHILD_MAX + +jobs.c + - new function, compact_jobs_list, removes some number of jobs from + the jobs table and reallocates the table, copying the jobs that + are left from the old table to the new. Compaction happens from + the beginning of the list and removes dead jobs, and we make sure + to keep the last CHILD_MAX jobs as POSIX.2 requires + - call compact_jobs_list from stop_pipeline if we're in a subshell, + there are no free jobs in the jobs table, and the jobs table is + at or above some maximum limit + +execute_cmd.c + - change eval_arith_for_expr to set this_command_name to `((' before + calling evalexp, since it might be changed by evaluating the + loop body between evalexp calls + +trap.c + - change reset_signal to turn off the SIG_TRAPPED flag for the + given signal, so shell builtins and functions running in command + substitutions don't run the signal handlers (traps are not supposed + to be inherited by command substitutions) + +parse.y + - changed parse_string_to_word_list to turn off alias expansion + while parsing the array assignment + + 12/9 + ---- +alias.c + - fix add_alias so that redefining an alias's value also resets the + EXPANDNEXT flag + + 12/10 + ----- +parse.y + - new function, token_is_assignment, called to check whether the text + before `=' makes up a valid assignment token before trying to parse + a compound assignment statement + - new function, parse_compound_assignment, to parse a compound + assignment statement instead of using parse_matched_pair; handles + comments and error reporting in the parser instead of waiting until + expansion time + - changed parse_compound_assignment and parse_string_to_word_list to + allow reserved words in compound array assignments + +lib/readline/doc/rltech.texinfo + - changed the documentation for rl_callback_read_char and + rl_callback_handler_remove to say what happens to the terminal + settings and what needs to be done to reset them + + 12/11 + ----- +bashline.c + - add emacs_edit_and_execute_command, bound to C-xC-e, like vi-mode + `v' command + - add bindable command name `edit-and-execute-command', bound to + run emacs_edit_and_execute_command() + +lib/glob/strmatch.c + - add support for ksh93-like [:word:] character class (isalnum + `_') + +doc/{bash.1,bashref.texi} + - add note to section describing lists to clarify that a sequence of + one or more newlines may be used to delimit a command, equivalent + to a semicolon + - document new [:word:] pattern matching character class + +doc/bash.1, lib/readline/doc/rluser.texinfo + - document `edit-and-execute-command' and its default emacs-mode + binding + +include/chartypes.h + - add defines for TOCTRL and UNCTRL if they're not already defined + +lib/readline/chardefs.h + - #undef UNCTRL if it's defined to avoid cpp redefinition warnings + +lib/sh/strtrans.c + - add \cX (Control-X) escape for $'...' to ansicstr() + - change ansic_quote() to allocate at least four chars for each char + in the string argument, to account for \0xx octal values + - change ansic_quote() to no longer call sprintf for non-printable + characters; just translate the string to octal directly + +print_cmd.c + - change xtrace_print_word_list to call ansic_quote() if + ansic_shouldquote() indicates that there are nonprinting characters + in a word + +builtins/type.def + - changed deprecated long option parsing to just replace the word + in the list with the equivalent short option (-type -> -t) instead + of removing words from the list + - changed describe_command to take a single flags argument instead + of two int args; changed caller + - type now has two new options: -f suppresses function lookup (like + command), and -P forces a PATH search for the name(s) + +builtins/common.h + - flags for describe_command are here + - changed extern declaration of describe_command + +builtins/command.def + - changed call to describe_command to use flags from common.h, and + the right number of arguments + +doc/{bash.1,bashref.texi} + - documented new -f and -P options to `type' + + 12/12 + ----- +lib/readline/rldefs.h + - fixed prototype for _rl_strnicmp + +execute_cmd.c + - select_query now takes a new argument, an int flag saying whether + or not to print the menu the first time through the loop. An + empty line in response to the prompt will always cause the menu + to be reprinted + - changed execute_select_command to cause select_query to reprint + the menu only if REPLY is set to NULL, if KSH_COMPATIBLE_SELECT + is defined + +config-top.h + - define KSH_COMPATIBLE_SELECT, with a comment about its meaning + +lib/readline/readline.c + - change rl_insert_comment to toggle if given an explicit numeric + argument: if the first characters on the line don't specify a + comment, insert one; if they do, delete the comment text + +doc/bash.1, lib/readline/doc/{readline.3,rluser.texinfo} + - documented new behavior of insert-comment with a numeric argument + + 12/13 + ----- +lib/malloc/watch.c + - new file, implements watchpoint functions + +lib/malloc/watch.h + - new file, define some `events' for watchpoints and extern function + and variable declarations for watchpoint code + +lib/malloc/imalloc.h + - #define MALLOC_WATCH if MALLOC_DEBUG is defined + - add __P define as in include/stdc.h if not already defined + +lib/malloc/malloc.c + - remove __P define, now in imalloc.h + - include watch.h if MALLOC_WATCH is defined + - added calls to _malloc_ckwatch in internal_malloc, internal_free, + and internal_realloc + +include/stdc.h + - augment __P define to allow prototypes if PROTOTYPES is defined + +lib/readline/rlstdc.h + - augment PARAMS define to allow prototypes if PROTOTYPES is defined + +lib/malloc/Makefile.in, Makefile.in + necessary changes to include watch.c in libmalloc + +lib/readline/readline.c + - fix rl_delete_text to make sure that the starting position is >= 0 + - _rl_init_line_state (called by readline via readline_initialize) + now sets rl_mark to 0 + - rl_get_{next,previous}_history set rl_mark to 0 if rl_point is at + the end of the line and rl_end otherwise in emacs mode + +lib/readline/kill.c + - rl_yank_nth_arg_internal and rl_paste_clipboard now set the mark + at point before calling rl_insert_text, like rl_yank + - rl_kill_full_line now resets rl_mark to 0 + - rl_kill_line and rl_backward_kill_line now set rl_mark to the + point after the kill in emacs mode + - rl_kill_word and rl_backward_kill_word now set rl_mark to the + point after the kill in emacs mode + - rl_unix_word_rubout and rl_unix_line_discard now set rl_mark to + the point after the kill in emacs mode + +lib/readline/search.c + - noninc_search saves and restores the mark, since it can be changed + while reading the search string + - noninc_dosearch sets the mark at the end of the line, making the + region bound the `inserted' text since rl_point is set to 0 + - rl_history_search_internal sets the mark at the end of the line, + for the same reason + +lib/readline/isearch.c + - rl_search_history now saves and restores the mark + - if no matching lines are found at all when doing an isearch, leave + point where it was instead of moving it to the end of the line + + 12/17 + ----- +lib/readline/rlmbutil.h + - new file, place for multi-byte character defines and extern + declarations + +lib/readline/{bind.c,readline.c,rlprivate.h} + - new bindable variable, `byte-oriented', tracks value of + rl_byte_oriented variable + +lib/readline/mbutil.c + - new file, with multibyte char utility functions + +lib/readline/{complete,display,readline,util,vi_mode}.c + - new code for multibyte characters, derived from IBM patch + + 12/18 + ----- +lib/sh/tmpfile.c + - include posixtime.h for time() extern declaration + +support/bashversion.c + - include if it's available + +lib/readline/{histexpand,input,isearch,search}.c + - new code for multibyte characters, derived from IBM patch + +lib/readline/readline.h + - include rltypedefs.h + + 12/19 + ----- +lib/readline/complete.c + - slight change to mark-directories code to avoid adding a slash if + point is at the end of the line (rl_line_buffer[rl_point] == '\0') + and the previous character was a slash + - change printable_part to not return empty pathnames, which could + happen when completing filenames and a filename with a trailing + slash was passed as the argument. If the portion following the + trailing slash is NULL, ignore it and look for a previous slash. + If there's no previous slash, just return the filename argument + - new variable, rl_completion_mark_symlink_dirs, mirrors the value + of (user-settable with a variable) _rl_complete_mark_symlink_dirs + but may be modified by application-specific completion functions + when appropriate (set in rl_complete_internal and rl_menu_complete) + +lib/readline/readline.h + - extern declaration for rl_completion_mark_symlink_dirs + +pcomplete.c + - if one of the actions is CA_DIRECTORY, set + rl_completion_mark_symlink_dirs to indicate that we want the + trailing slash (might have to relax this) + +lib/readline/doc/rltech.texinfo + - documented rl_completion_mark_symlink_dirs variable + +lib/readline/doc/rluser.texinfo, doc/bash.1 + - documented the fact that `complete -d' and `complete -o dirnames' + force readline to append a slash to symlinks to directories + +builtins/enable.def + - changed enable_shell_builtin to disallow enabling disabled + builtins in a restricted shell + +doc/{bash.1,bashref.texi} + - documented new enable behavior in restricted shells + +doc/Makefile.in + - new rule to make an `RBASH' file documenting the restrictions + imposed by a restricted shell + +expr.c + - broke the code that evaluates variables and returns results out + of readtok() into a new function: expr_streval() + - expr_streval() now performs the standard unset variable error + behavior if `set -u' has been executed and it's asked to look + up an unset variable + - broke the code that frees up the expression context stack into + a new function: expr_unwind() + +variables.c + - fixed bind_int_variable so it handles array element assignment, + so expressions like `b[7]++' and `b[0] = 42' work right + - new function, get_variable_value, returns the string value of + the SHELL_VAR * passed as an argument + - get_string_value now calls get_variable_value with a non-null + result from find_variable + + 12/20 + ----- +lib/readline/rlmbutil.h, mbutil.c + - combined _rl_find_next_mbchar and _rl_find_next_nonzero_mbchar into + a single function + - combined _rl_find_prev_mbchar and _rl_find_prev_nonzero_mbchar into + a single function + +lib/readline/{display,readline,vi_mode}.c + - changed callers of _rl_find_next_mbchar and + _rl_find_next_nonzero_mbchar + +lib/readline/{complete,display,histexpand,readline,vi_mode}.c + - changed callers of _rl_find_prev_mbchar and + _rl_find_prev_nonzero_mbchar + + 12/20 + ----- +lib/sh/mktime.c + - new file, from glibc/gawk, compiled in if system doesn't have a + working mktime(3) + +lib/sh/strftime.c + - new file, from gawk, compiled in if system doesn't have a + working strftime(3) + +lib/sh/Makefile.in, Makefile.in + - changes for mktime.c, strftime.c + +configure.in + - call AC_FUNC_MKTIME, AC_STRUCT_TM, AC_STRUCT_TIMEZONE + - call AC_REPLACE_FUNC(strftime) + +config.h.in + - add defines for TM_IN_SYS_TIME, HAVE_TZSET, HAVE_TM_ZONE, + HAVE_STRUCT_TM_TM_ZONE, HAVE_STRFTIME + +externs.h + - provide an extern declaration for strftime if HAVE_STRFTIME is + not defined and NEED_STRFTIME_DECL is + +lib/tilde/tilde.h + - header files should not include + +parse.y + - replace code in decode_prompt_string that chops up value returned + by ctime(3) with calls to strftime -- as a result, the expansion + of \@ has changed slightly (since it depends on the locale) + - added new \D{format} prompt string escape; `format' is passed to + strftime(3). Empty format is the same as `%X' (locale-specific + representation of the current time) + - combined cases for '\\', '\a', '\e', and '\r' in same case branch + in decode_prompt_string + +doc/{bash.1,bashref.texi} + - documented new \D{format} prompt string expansion + +builtins/printf.def + - use ISO C PRIdMAX instead of INTMAX_CONV + - pass length of format modifiers to mklong instead of computing it + with strlen() + +lib/sh/{fmtulong,fmtullong}.c + - changes from Paul Eggert to make more general + +arrayfunc.c + - when converting a variable to an array, make sure to unset the + dynamic_value and assign_func members of the struct variable, + since they're not valid anymore + + 12/27 + ----- +configure.in + - use AC_HELP_STRING in AC_ARG_WITH and AC_ARG_ENABLE + - remove AC_ARG_ENABLE for largefile, since AC_SYS_LARGEFILE adds + one + + 1/2/2002 + -------- +{alias,bashline,execute_cmd,general,shell,subst,variables,arrayfunc}.c,general.h + - changed some calls to strchr to calls to xstrchr for multibyte + characters + +include/shmbutil.h + - add extern declaration for xstrchr to avoid including externs.h + where it's not appropriate + +{braces,make_cmd,pathexp,subst,arrayfunc}.c, lib/sh/xstrchr.c + - include shmbutil.h + +{stringlib,subst}.c, {externs,subst}.h + - moved substring() from subst.c to stringlib.c, moved declaration + from subst.h to externs.h + +lib/sh/xmbsrtowcs.c + - new file, replacement function for mbsrtowcs + +lib/sh/Makefile.in + - add entries for xmbsrtowcs.c + +Makefile.in + - add dependencies on shmbutil.h to appropriate object files + +lib/glob/strmatch.c + - break character-class testing out into separate function: + is_cclass, in prep for multibyte changes + +{braces,make_cmd}.c + - changes for multibyte characters + +builtins/printf.def + - changes from Paul Eggert to just use intmax_t everywhere an + int/long/quad is needed and print with "%ld" if the number + fits in a long and %PRIdMAX otherwise + - remove getlong, getulong, getllong, getullong, since they're + no longer needed + - use a new type `floatmax_t' to print floating point numbers, the + widest-available floating point type (like `intmax_t'); new + function `getfloatmax' that calls strtold or strtod as appropriate + - remove getdouble, getldouble, since they're no longer needed + +lib/sh/fmtumax.c + - new file, string-to-[u]intmax_t conversion, just includes + fmtulong.c with the right defines + +Makefile.in, lib/sh/Makefile.in + - additions for fmtumax.c + +bashtypes.h + - include if it's available + +expr.c + - arithmetic is now in intmax_t instead of long + +externs.h + - extern declaration for fmtumax + - change extern declarations for evalexp, itos, inttostr, + uitos, uinttostr since they now return or use intmax_t instead + of long + +{execute_cmd,general,mailcheck,subst,variables}.c, parse.y +{array,general,subst,test,variables}.h +lib/sh/{itos,netopen}.c +builtins/{bashgetopt,common}.c, builtins/common.h +builtins/{break,fc,history,jobs,let,printf,pushd,read,shift,wait}.def + - changes for intmax_t shell arithmetic conversion + +doc/{bashref.texi,bash.1} + - documented long->intmax_t shell arithmetic conversion + +sig.c + - in initialize_terminating_signals, if we've already trapped a + terminating signal, don't reset the signal handler for it + + 1/3 + --- +{arrayfunc,pathexp}.c, parse.y + - changes for multibyte chars + +parse.y, lib/sh/strtrans.c + - moved ansiexpand from parse.y to lib/sh/strtrans.c + +parse.y, locale.c + - moved mk_msgstr and localeexpand from parse.y to locale.c + +parse.y + - new function, yy_input_name, returns name of input file from + bash_input.name + - broke the code that parses ((...)) constructs out of read_token + into a new function, parse_dparen() + +externs.h + - new extern declaration for ansiexpand(), mk_msgstr(), and + localeexpand() + +input.h + - new extern declaration for yy_input_name() + +{error,locale}.c + - use yy_input_name for error and other messages + +execute_cmd.c + - change shell_execve to make sure that the file is executable + before looking at the interpreter to find out why the execve() + failed (avoids misleading error message) + +lib/glob/glob.c + - move code that matches leading `.' and skips those filenames into + a separate function: skipname(), so there can be unibyte and + multibyte versions of that function + + 1/7 + --- +subst.c + - more changes for multibyte characters + +print_cmd.c + - change semicolon() so it doesn't output a `;' immediately after a + newline, since that results in a null command, which is a syntax + error + +variables.c + - fix indirection_level_string to turn off set -x while evaluating + PS4 + + 1/8 + --- +builtins/set.def + - make -o options into one struct, instead of separate structs for + option names corresponding to flags and non-flag option names. + This has the side effect of sorting the option names in output + +lib/glob/glob.c + - new function, mbskipname(), multibyte char version of skipname() + - removed all #ifndef SHELL code, this will never be used outside + the shell + +include/posixdir.h + - move REAL_DIR_ENTRY define here from lib/glob/glob.c + +lib/glob/glob_loop.c + - new file, included in glob.c for unibyte and multibyte versions of + glob_pattern_p + - added some forward static function declarations with prototypes + - more changes for multibyte character handling + +lib/glob/Makefile.in + - make glob.c depend on glob_loop.c + - changes for xmbsrtowcs.[co] + +lib/glob/xmbsrtowcs.c + - moved here from lib/sh, since the matching functions use it, and + libglob.a is linked after libsh.a + + 1/9 + --- +lib/glob/smatch.c + - new file, with strmatch (now xstrmatch) and associated functions, + with changes for multibyte chars + +lib/glob/sm_loop.c + - new file, included by smatch.c, with `generic' versions of matching + functions that are compiled twice: once each for single-byte and + multibyte characters + +lib/glob/strmatch.c + - strip out everything except strmatch(), which either calls fnmatch + (if HAVE_LIBC_FNM_EXTMATCH is defined) or xstrmatch + +lib/glob/collsyms.c + - changes for multibyte chars + +lib/glob/Makefile.in, Makefile.in + - changes for new source files + + 1/10 + ---- +lib/readline/complete.c + - new function, rl_completion_mode (rl_command_func_t *func), returns + the appropriate value to pass to rl_complete_internal depending on + FUNC and the value of `show-all-if-ambiguous'. This allows + application completion functions to present the same interface as + rl_complete + +lib/readline/readline.h + - new extern declaration for rl_completion_mode() + +lib/readline/doc/rltech.texinfo + - documented rl_completion_mode + +lib/readline/readline.[ch] + - bumped the version number to 4.3, changing the relevant cpp defines + +configure.in + - require that an installed readline version be at least readline-4.3 + +bashline.c + - converted bash-specific completion functions to use + rl_completion_mode instead of passing TAB unconditionally + +builtins/bashgetopt.c + - the `#' option specifier now means a required numeric argument, + not an optional one + +builtins/type.def + - when converting [-]-{path,type,all} to -[pta], don't bother + freeing and reallocating the option string; just change opt[1] + and null opt[2] + +lib/sh/snprintf.c + - support %ls/%S and %lc/%C for wide strings and characters, + respectively, if HANDLE_MULTIBYTE is defined + +mailcheck.c + - don't print a message about new mail if the file has not grown, + even if the access time is less than the modification time + + 1/14 + ---- +lib/readline/readline.c + - new function, rl_replace_line, to replace the readline line buffer + with the text supplied as an argument + - new function, rl_replace_from_history, replaces readline line + buffer with text from history entry passed as argument (undocumented, + not in readline.h because it requires a definition of + HIST_ENTRY for the prototype) + +lib/readline/readlne.h + - new extern declaration for rl_replace_line + +lib/readline/doc/rltech.texinfo + - documented rl_replace_line + +lib/readline/{isearch,readline,search}.c + - use rl_replace_line and rl_replace_from_history where appropriate + +lib/readline/readline.c + - broke the code that sets point after moving through the history + (_rl_history_preserve_point and _rl_history_saved_point) out + into a separate function, _rl_history_set_point() + +lib/readline/{complete.c,rlprivate.h} + - find_completion_word -> _rl_find_completion_word + - free_match_list -> _rl_free_match_list + +lib/readline/complete.c + - postprocess_matches and _rl_free_match_list now return immediately + if passed a null match list + +variables.c + - new function, find_local_variable, finds a local variable by name + at the current variable context + - in find_variable_internal, call find_local_variable before searching + any of the temporary environments if variable_context > 0 (meaning + we're in a shell function). This lets a local variable + override a variable whose value was passed in the `function + environment' + + 1/15 + ---- +variables.h, execute_cmd.c + - declare variables describing the temporary environments in + variables.h instead of in C files + +findcmd.c, builtins/setattr.def + - instead of calling find_tempenv_variable, use find_variable_internal + and check whether the returned SHELL_VAR * has the tempvar + attribute + +variables.c + - tentative change to lookup order in find_variable_internal so that + function local variables are found before variables in + function_env when executing a shell function + - change make_local_variable to handle making a local variable when + a variable with the same name already appears in one of the + temporary environments + - broke the body of make_var_array out into a new function: + static char **make_env_array_from_var_list (SHELL_VAR **vars) + - new function, make_var_array_internal, takes a hash table to look + in and a pointer to a mapping function and returns a char ** + environment-style list + - make_var_array now just calls make_var_array_internal + - new mapping function, local_and_exported, returns all local variables + in the current variable context with the export attribute set + - new function, make_local_export_array, returns an environment-style + char ** array of exported local variables in current context + - change environment creation order in maybe_make_export_env to + add variables to the environment in opposite order that + find_variable_internal uses. This means that local variables in + shell functions override variables with the same name in the + function_env + - change make_local_variable to set the initial value of the + variable it creates to NULL to make the `is set' and `is null' + tests that the expansion code does work right + - change make_local_variable to inherit the value of a variable with + the same name from the temporary enviroment + + 1/16 + ---- +Makefile.in + - link bashversion with buildversion.o instead of version.o, for + cross-compiling. version.o is for the target system; + buildversion.o is for the build system + +error.c + - add line numbers to internal_error() messages if the shell is + not interactive and running a shell script or a -c command + - report_error now prints non-zero line numbers for non-interactive + shells + +test.c + - test_syntax_error now calls builtin_error() instead of printing + its own messages + +builtins/common.c + - builtin_error now prints line numbers if a non-interactive shell + is running a shell script or a -c command + +print_cmd.c + - in cprintf, remove free_argp, since it's not used + +builtins/history.def + - make `history -n' increment the number of history lines in this + session by the number of lines read from the history file + +arrayfunc.c + - fix array_value_internal to expand the subscript even if the + variable is unset, so side effects produced by the arithmetic + evaluation will take place + +lib/readline/doc/{rluser,rltech}.texinfo + - some fixes for printing in @smallbook format from Brian + Youmans + + 1/17 + ---- +jobs.h + - new PRUNNING, PSTOPPED, PDEADPROC defines for PROCESSes, analogous + to RUNNING, STOPPED, and DEADJOB defines for jobs + +jobs.c + - use PS_RUNNING, PS_DONE, PS_STOPPED values for `running' field + of a PROCESS + - find_pipeline and find_job now take an additional flags argument + that, if non-zero, means to find only running processes; changed + all callers + - changed calls to find_pipeline and find_job made from waitchld + to find only running processes + - find_pipeline takes a third argument: an int *. If it looks in + the jobs list to find the pid, and the arg is non-null, it passes + the job index back to the caller. Used to avoid calls to + find_pipeline immediately followed by find_job with the same PID + +nojobs.c + - a couple of changes to make sure that set_pid_status is never + called with a pid argument of 0 or -1 + +trap.c + - change trap_handler to longjmp to wait_intr_buf (set by wait_builtin) + if a signal is received for which a trap has been set during + execution of the wait builtin (need to include builtins.h and + builtins/builtext.h and declare some extern variables for the + right things to check) + - new variable to keep track of which signal caused the longjmp to + wait_intr_buf, set by trap_handler (wait_signal_received) + +builtins/wait.def + - set the return value of wait when a longjmp(wait_intr_buf, 1) is + done to 128 + wait_signal_received + +{jobs,nojobs}.c + - set wait_signal_received to SIGINT in wait_sigint_handler before + the longjmp(wait_intr_buf, 1) + + 1/18 + ---- +bashline.c + - turn off rl_filename_completion_desired when completing a command + name with a single match only if the first char of that match is + not a `/' + - if there are multiple identical matches for a command name in + attempt_shell_completion, turn off rl_filename_completion_desired + if the first char is not a `/' to avoid readline appending a + slash if there's a directory with the same name in the current + directory + + 1/22 + ---- +lib/readline/complete.c + - new variable, _rl_page_completions, to control whether we want to + run the internal pager when listing completions (defaults to 1) + +lib/readline/rlprivate.h + - extern declaration for _rl_page_completions + +lib/readline/bind.c + - new bindable variable, `page-completions', controls value of + _rl_page_completions + +lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1 + - documented `page-completions' variable + +Makefile.in + - use $(INSTALL_SCRIPT) instead of $(INSTALL_PROGRAM) to install + `bashbug' + +aclocal.m4 + - fix small quoting problem in RL_LIB_READLINE_VERSION macro + +lib/readline/terminal.c + - fetch and save terminal's `vs' and `ve' cursor control attributes + - fetch and save terminal's `kI' attribute (string sent by Insert) + - new function, _rl_set_cursor, sets cursor to normal (insert mode) + or very visible (overwrite mode) + +lib/readline/readline.c + - new global variable, rl_insert_mode + - new function to toggle overwrite mode, rl_overwrite_mode + - each new line starts in insert mode + - switching to vi mode or emacs mode resets to insert mode + - reset cursor to normal before returning line + - _rl_replace_text now returns the number of characters inserted, + the return value from rl_insert_text + - new function, _rl_insert_or_replace_text (const char *string, int insert), + either inserts STRING or replaces the number of chars in STRING + with STRING starting at rl_point, depending on value of INSERT + - renamed rl_insert to _rl_insert_char, rl_insert just calls + _rl_insert_char with the same arguments when in insert mode + - new function, _rl_overwrite_char, handles self-insert in overwrite + mode. Does multibyte chars by reading an entire multibyte character + before entering overwrite loop + - new function, _rl_overwrite_rubout, handles RUBOUT when in + overwrite mode, called from rl_rubout + - new function, _rl_rubout_char, old body of rl_rubout; rl_rubout + calls this when not in overwrite mode + +lib/readline/readline.h + - extern declarations for rl_insert_mode and rl_overwrite_mode() + +lib/readline/rldefs.h + - define constants for values of rl_insert_mode + +lib/readline/rlprivate.h + - extern declarations for _rl_set_cursor and _rl_set_insert_mode + - change type of _rl_replace_text to return int + - extern declarations for _rl_insert_char, _rl_rubout_char + +lib/readline/funmap.c + - new bindable name `overwrite-mode', bound to rl_overwrite_mode + +lib/readline/rlconf.h + - define CURSOR_MODE if you want the cursor to show insert or + overwrite mode (only available if both `vs' and `ve' capabilities + are present) + +lib/readline/{complete,parens,readline,search,vi_mode}.c + - change calls to rl_insert to _rl_insert_char + +lib/readline/{readline,search}.c + - change calls to rl_rubout to _rl_rubout_char to avoid overwrite + mode problems + +lib/readline/vi_mode.c + - fix rl_vi_overstrike to just call _rl_overwrite_char, which + handles multibyte chars + +lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1 + - document new `overwrite-mode' command + + 1/23 + ---- +lib/readline/readline.c + - return 0 immediately from rl_insert_text if the string to insert + is NULL or "" + +bashline.c + - if a numeric argument is given to one of the bash-specific glob + pattern completion functions (including TAB), append a `*' to + the word before generating matches + - in attempt_shell_completion, when doing glob completion, only + set the match list to NULL if rl_completion_type == TAB and + there is more than one completion. This permits listing completions + with double tabs and displaying ambiguous completions + - new function, bash_glob_complete_word, appends a `*' to the word + to be completed and then globs it. It uses a new filename + quoting function (bash_glob_quote_filename) to avoid quoting + globbing characters in the filename if there are no matches or + multiple matches + +lib/readline/complete.c + - set completion_changed_buffer to 0 in rl_complete_internal if + no matches were produced by the completion generator function + - new variable, rl_completion_suppress_append, suppresses appending + of rl_completion_append_character. Settable by application + completion functions, always 0 when application completion + functions are called (set to 0 by rl_complete_internal and + rl_menu_complete) + - broke the code that assigns default values to readline completion + variables out of rl_complete_internal and rl_menu_complete into + a new function, set_completion_defaults (int what_to_do) + +lib/readline/readline.h + - extern declaration for rl_completion_suppress_append + +lib/readline/doc/rluser.texinfo, doc/bash.1 + - documented behavior of glob-expand-word and glob-list-expansions + when supplied a numeric argument + - documented glob-complete-word + +lib/readline/doc/rltech.texinfo + - documented rl_completion_suppress_append + + 1/24 + ---- +lib/readline/text.c + - new file, text and character handling functions from readline.c + +lib/readline/misc.c + - new file, miscellanous bindable functions and their supporting + code from readline.c + +Makefile.in, lib/readline/Makefile.in + - changes for text.c, misc.c + +lib/readline/bind.c + - change ISKMAP case of rl_invoking_keyseqs_in_map to output + ESC as "\M-" instead of "\e" -- it's closer to the documentation + - change _rl_get_keyname to output ESC as \e instead of \C-[ + (it's easier to understand) + +pcomplete.h + - new flag, COPT_NOSPACE + +builtins/complete.def + - new `-o nospace' option for complete and compgen (though it doesn't + really do anything for compgen, since that doesn't hand anything + off to readline) + +bashline.c + - if a programmable completion specifies COPT_NOSPACE, set + rl_completion_suppress_append = 1 + +lib/readline/doc/rluser.texinfo + - documented new `-o nospace' option to complete and compgen + +doc/{bash.1,bashref.texi} + - documented $'\cX' escape sequence (forgot to before) + + 1/28 + ---- +variables.c + - make_new_variable now takes the HASH_TABLE * as its second + argument; changed callers + - new function, bind_variable_in_table, takes the HASH_TABLE * as + its third paramter; bind_variable calls bind_variable_in_table + with shell_variables as third argument + +variables.h + - new struct var_context, variable context (per-scope -- global, + function local, etc.) + +variables.[ch],builtins/common.[ch] + - moved functions that push and pop a variable context from + builtins/common.c to variables.c; move extern function + declarations to variables.h + - new function, all_local_variables + - variable_in_context is now static, used only by all_local_variables + +variables.[ch],execute_cmd.c + - push_context now takes the function name as an argument for + future use + - push_context takes an indication of whether or not the function is + executing in a subshell and saves the positional parameters only + if not in a subshell + - new functions for managing a stack of variable contexts and + scopes: new_var_context, dispose_var_context, push_var_context, + pop_var_context, push_scope, pop_scope + +builtins/declare.def + - call all_local_variables instead of map_over (...) in declare_internal + - don't call make_local_variable if we're looking at functions + ((flags_on & att_function) != 0), since it's wasted + - make sure VAR is set to NULL if check for variable_context fails + and we didn't just create or fetch a local variable in + declare_internal + - in non-function branch of declare_internal, only call find_variable + if VAR is NULL -- if it's not null, we just created or fetched a + local variable and don't need to do it again + + 1/29 + ---- +variables.[ch] + - the temporary environments (temporary_env, builtin_env, function_env) + are now HASH_TABLEs instead of argv-style arrays of strings (this + is an intermediate step on the way to the new lcc-inspired symbol + table scope structure) + - new internal attribute for variables: att_propagate. This means + to propagate the value out of the temporary environment up the + (for now implicit) chain of variable scopes when the containing + temporary environment is deleted + +variables.c + - assign_in_env now adds to the HASH_TABLE temporary_env instead + of making environment-style strings in an array of strings + - changed the way the temporary environments are merged into the + shell variable table to account for the new HASH_TABLE temp + environments + - changed the way the export environment is created due to the new + structure of the temporary environments + - new function, bind_variable_internal (name, value, table), binds + NAME to have VALUE in TABLE without searching the temporary + environments + - removed: shell_var_from_env_string, bind_name_in_env_array + - variable_in_context now checks the att_local attribute and makes + sure the variable is not invisible + - local_and_exported now makes sure the variable is not invisible + +execute_cmd.c + - we no longer need to copy the temporary environment to function_env + or builtin_env, we can simply use variable assignments + +{findcmd,subst,variables}.c, builtins/{declare,setattr}.def + - since variables from the temporary environments are no longer turned + into SHELL_VARs on the fly, don't dispose the SHELL_VAR returned + by find_variable or find_variable_internal + - need to savestring() the value returned by find_variable if it has + the tempvar attribute before calling bind_variable on it, because + bind_variable will search and bind into the temporary environments + and will free the old value before binding the new. For temporary + environments, these two pointers will be the same, and + bind_tempenv_variable will end up using freed memory + +builtins/{declare,setattr}.def + - set the att_propagate attribute when exporting or making readonly + variables from the temp environment (i.e., `var=value declare -x var' + or `var=value export var' sets the propagate attribute on the entry + for `var' in the temporary environment HASH_TABLE) + +lib/readline/isearch.c + - ^W when reading isearch string yanks the current word out of the + current line into the search string, skipping the portion already + matched + - ^Y when reading isearch string yanks the rest of the current line + into the search string, skipping the portion already matched + + 1/30 + ---- +{print_cmd,variables}.c + - moved indirection_level_string() from variables.c to print_cmd.c + +{externs,variables}.h + - moved extern declaration of indirection_level_string to externs.h + +{general,variables}.c + - moved assignment() from variables.c to general.c + +{general,variables}.h + - moved extern declaration of assignment() to general.h + +{externs,input}.h + - moved extern declaration of decode_prompt_string to externs.h + +print_cmd.c + - include flags.h, don't include stdc.h + +variables.c + - moved some functions around to group functions better + - changed new_shell_variable to explicitly initialize each member + of the created struct variable instead of calling bzero() + - make_new_variable now just calls new_shell_variable instead + of duplicating what it does + - removed some code in bind_function that duplicated what + new_variable does on the newly-created SHELL_VAR + - since there are no local function variables (functions are always + made at the global scope), kill_all_local_variables() doesn't + need to consider functions + + 1/31 + ---- +variables.c + - sort the array of special variables + - short-circuit the search in stupidly_hack_special_variables if + the passed name can't be found in the rest of the array + (that is, if name[0] < special_vars[i].name[0]) + +lib/readline/history.c + - unstifle_history() was returning values exactly opposite of + the documentation + +lib/readline/doc/{hsuser.texinfo,history.3} + - clarified the unstifle_history() documentation a little + + 2/4 + --- +variables.c + - in bind_variable, don't call bind_tempenv_variable after a + find_tempenv_variable succeeds -- just change the value inline. + There's no reason to look it up twice + - change makunbound to only call stupidly_hack_special_variables + if we're not unsetting a function + +variables.[ch] + - new function, unbind_function, like makunbound but doesn't mess + with previous contexts or calling stupidly_hack_special_variables + +builtins/set.def + - change unset_builtin to call either unbind_func or unbind_variable + +builtins/getopts.def + - call unbind_variable(name) instead of makunbound(name, shell_variables) + + 2/5 + --- +lib/glob/sm_loop.c + - use malloc instead of xmalloc in BRACKMATCH and handle failures + +error.c + - add extern declaration of executing_line_number with prototype, + since execute_cmd.h can't be included without including other + files + +lib/readline/parens.c + - include + +lib/malloc/stats.c + - include + - add extern declaration of malloc_free_blocks() with prototype + +pathexp.c + - added some forward declarations with prototypes for static functions + +lib/readline/rlprivate.h + - removed declarations of rl_untranslate_keyseq, rl_discard_argument, + rl_stop_output, rl_alphabetic since they appear in readline.h + + 2/6 + --- +{arrayfunc,execute_cmd,pcomplete,shell}.c + - change calls to makunbound(name, shell_variables) to + unbind_variable (name) + + 2/7 + --- +builtins/getopt.c + - don't defer incrementing of OPTIND when an invalid option is + encountered until the next call to sh_getopt() -- what if OPTIND + is reset before that next call? This means that OPTIND is always + incremented to the next option to be handled when an option is + returned, whether it's valid or not. This is what POSIX-2002 + says to do. + +syntax.h + - new #define, CSUBSTOP + +mksyntax.c + - add "-=?+" with value CSUBSTOP to the syntax table. These are the + valid expansion operators OP in ${param[:]OPword} + +subst.c + - use table lookup for CSUBSTOP in VALID_PARAM_EXPAND_CHAR + - new flags for the string extraction functions: EX_NOALLOC. This + indicates that the functions are being used only to skip over + strings and the result won't be used, so the substring shouldn't + be allocated, copied, and freed + - new flag for string_extract: EX_VARNAME. This serves the same + purpose as the old `varname' parameter. parameter_brace_expand() + changed appropriately + - extract_delimited_string and extract_dollar_brace_string now take + an additional `flags' argument, which may include EX_NOALLOC + - changed callers of extract_delimited_string and + extract_dollar_brace_string appropriately + - string_extract now understands EX_NOALLOC; callers changed + - some smaller code cleanups + - converted char_is_quoted(), unclosed_pair(), and skip_to_delim() + to understand multibyte characters + + 2/11 + ---- +variables.[ch] + - moved to a symbol organization inspired by lcc. The basic structure + is no longer a HASH_TABLE, but a VAR_CONTEXT, which includes a hash + table as one of its members. VAR_CONTEXTs are linked together to do + variable scoping. One nice thing about this is that the entire + symbol table doesn't need to be searched at function scope exit to + remove local variables. Fixes problems with only one instance of + builtin_env and function_env, even though it really is a stack + - shell_variables is now a VAR_CONTEXT *, with a global_variables + variable that points to the bottom of the stack for fast access + - function-scope local variables (assignments specified on the command + line before a function call) and function-local variables (declared + with the `local' builtin) have been unified in the same variable + context, replacing function_env + - assignment statements preceding the `.' and `eval' builtins are now + a separate variable scope VAR_CONTEXT, replacing builtin_env + - temporary_env (a HASH_TABLE) is now the only separate environment + - changes to export environment creation, variable binding, variable + lookup, local variable propagation all changed to work with the + new symbol table/scope structure + - a SHELL_VAR no longer has a `prev_context' member; it's not needed + +execute_cmd.c + - changes to push_context calls to include any temporary variables in + temporary_env; pop_context takes care of propagating any temporary + variables if necessary + - calls to push_scope if `eval' or `.' is called with a list of + preceding variable assignments, and pop_scope called at end of + builtin's execution. pop_scope takes care of merging temporary + variables into the shell environment when appropriate + +builtins/{setattr,declare}.def + - changes to account for variable assignments preceding `local', + `export', `readonly', `declare', etc. to work with the new + variable scoping implementation + +shell.c + - since shell_variables is now a VAR_CONTEXT, call + delete_all_contexts() when the shell is reinitializing instead of + delete_all_variables() + +builtins/common.c + - new function, get_job_by_name(), used by execute_simple_command() + for the `auto_resume' stuff and get_job_spec() + +builtins/common.h + - new set of #defined constants for flags argument to + get_job_by_name() + + 2/12 + ---- +command.h + - new redirection operator: r_reading_string for `here strings' + +parse.y + - new token, LESS_LESS_LESS, for new redirection `here string' + operator: [N]<<< word + - recognize LESS_LESS_LESS and create the appropriate redirection + +{dispose_cmd,copy_cmd,make_cmd,print_cmd}.c + - recognize r_reading_string and do the right thing (dispose_redirects, + copy_redirect, print_redirection, and make_redirection, respectively) + +redir.c + - here_document_to_fd now takes the redirection operator as its + second argument + - new function, write_here_string, expands a here string and writes it + to the here document file descriptor + - here_document_to_fd calls write_here_string for r_reading_string + operator + - handle r_reading_string in do_redirection_internal() and + stdin_redirection() + + 2/18 + ---- +doc/{bash.1,bashref.texi} + - documented here strings + +{configure,Makefile}.in + - bumped version number up to bash-2.05b and the release status + to alpha1 + +expr.c + - make expr_streval understand that variables with the `invisible' + attribute are really unset, and accessing such a variable when + `set -u' is set should be an error + +variables.h + - new accessor macros: var_isset(var) and var_isnull(var), test + whether var->value is NULL + +{eval,subst,variables}.c, builtins/{declare,setattr}.def + - be more consistent about using value_cell(var) instead of + directly referencing var->value + - use var_isset and var_isnull where appropriate + +builtins/help.def + - augmented a couple of help strings with pointers to `info' and + `man -k' + + 2/14 + ---- +variables.h + - new macros to use when setting variable values directly instead of + through bind_variable and its siblings + +{arrayfunc,variables}.c + - use var_setarray and other lvalue macros instead of assigning to + var->value directly + +builtins/setattr.def + - change show_var_attributes to show function definitions separately + from function attributes. This allows the output of `declare -f' + (with other flags), `export -f', and `readonly -f' to be reused as + shell input, instead of the old + + declare -f[flags] func() + { + foo + } + + which has syntax errors. When in posix mode, `export -fp' and + `readonly -fp' still don't print function definitions + + 2/16 + ---- +parse.y + - comment out calls to discard_parser_constructs; no need to call + empty functions + + 2/18 + ---- +lib/sh/memset.c + - replacement function for memset(3) + +lib/sh/Makefile.in, Makefile.in + - additions for memset.c + +configure.in,config.h.in + - check for memset, define HAVE_MEMSET if found, add memset.o to + LIBOBJS if not + +lib/malloc/malloc.c + - removed zmemset(), replaced with calls to memset(3) + +{subst,execute_cmd,lib/sh/netopen}.c + - replaced calls to bzero with calls to memset + +subst.c + - word_split() now takes a second argument: the value of $IFS, so + it doesn't have to look up IFS every time + - word_list_split() now calls getifs() and passes the result to + each call to word_split() as its second arg + - do a quick scan for CTLNUL in remove_quoted_nulls before allocating + new string, copying old string to it, copying over original string + and freeing new string + +eval.c + - don't bother calling dispose_used_env_vars if temporary_env is NULL + +execute_cmd.c + - fix fix_assignment_words to only look up the builtin corresponding + to the first word if one of the words in the list is marked as + W_ASSIGNMENT + +hashlib.c + - renamed hash_string to hash_bucket, which better reflects what it + does + - extracted the portion of hash_bucket that computes the hash out + into a new hash_string() + - made new body of hash_bucket into a macro HASH_BUCKET; function + just calls the macro + - calls to hash_bucket in this file now call HASH_BUCKET macro + - in add_hash_item, just add a new item at the front of the appropriate + bucket list instead of at the end + +hashcmd.h + - reduced FILENAME_HASH_BUCKETS to 53 from 107 + + 2/19 + ---- +hashlib.[ch] + - find_hash_item, remove_hash_item, add_hash_item all take a new + third `flags' argument + - add_hash_item doesn't call find_hash_item if HASH_NOSRCH passed in + flags arg + - find_hash_item will create a new hash table entry if HASH_CREATE is + passed in flags arg + - new function, hash_walk, takes a pointer to a function and a table + and calls the function for each item in the table. If the function + returns < 0, the walk is terminated + - fixed flush_hash_table to set table->nentries to 0 after freeing + all entries + - BUCKET_CONTENTS now has a new `khash' member, what key hashes to; + set by HASH_BUCKET macro (which calls hash_string), assigned in + find_hash_item (HASH_CREATE) and add_hash_item + - find_hash_item and remove_hash_item check `khash' against the + hash of the string argument before calling strcmp + +{alias,hashlib,hashcmd,pcomplib,variables}.c + - changed all calls to {find,remove,add}_hash_item + +builtins/hash.def + - return immediately from print_hashed_commands if there are no + entries in the hash table (this eliminates need for `any_printed' + variable) + - change print_hashed_commands to use hash_walk + +alias.c + - short-circuit all_aliases and map_over_aliases if + HASH_ENTRIES(aliases) == 0 + - simplify map_over_aliases by just allocating enough room in the + returned list for all entries in the aliases hash table, instead + of doing the check and xrealloc + - add_alias now calls add_hash_item with HASH_NOSRCH argument + +pcomplete.h + - sh_csprint_func_t is no more; use hash_wfunc instead + +pcomplib.c + - short-circuit print_all_compspecs if HASH_ENTRIES(prog_completes) + is 0 + - print_all_compspecs now takes a `hash_wfunc *' argument + - print_all_compspecs now just calls hash_walk + +builtins/complete.def + - new function, print_compitem, takes a BUCKET_CONTENTS *, extracts + the right info, and calls print_one_completion + +variables.c + - short-circuit map_over_funcs if HASH_ENTRIES(shell_functions) == 0 + - short-circuit flatten if the passed table has no entries + - bind_variable_internal takes a new fourth argument: `hflags', + to pass to hash table functions + - make_new_variable now passes HASH_NOSRCH flag to add_hash_item + - set_if_not now calls bind_variable_internal and passes + HASH_NOSRCH as flags argument + - bind_function now calls add_hash_item with HASH_NOSRCH argument + - fixed make_local_variable: old_var == 0 && was_tmpvar can never + be true + - if we didn't find an old variable in make_local_variable, call + bind_variable_internal with HASH_NOSRCH argument + - fix push_temp_var to reset variable context to 0 if binding into + global_variables->table + +parse.y + - fix to parse_compound_assignment to avoid core dumps on empty + compound array assignments + +subst.c + - getifs() is now global so read_builtin can call it + +subst.h + - extern declaration for getifs() + + 2/20 + ---- +hashlib.c + - changed hash_string to use a better hash function + - changed HASH_BUCKET to use masking rather than modulus to hash a + string to a bucket -- HASH TABLES MUST NOW BE SIZED BY POWERS + OF TWO + +hashlib.h + - DEFAULT_HASH_BUCKETS is now 64 + +hashcmd.h + - FILENAME_HASH_BUCKETS is now 64 + +pcomplib.c + - COMPLETE_HASH_BUCKETS is now 32 + +variables.c + - TEMPENV_HASH_BUCKETS is now 4 + +alias.c + - new define, ALIAS_HASH_BUCKETS, set to 16, used to size alias table + +hashlib.c + - removed initialize_hash_table; folded code into make_hash_table + - fixed copy_bucket_array to copy the `khash' member of an item + - renamed functions to be more systematic and easier for me: + make_hash_table -> hash_create + hash_table_nentries -> hash_size + copy_hash_table -> hash_copy + find_hash_item -> hash_search + remove_hash_item -> hash_remove + add_hash_item -> hash_insert + flush_hash_table -> hash_flush + dispose_hash_table -> hash_dispose + print_table_stats -> hash_pstats + get_hash_bucket -> hash_items + - changed hash_search to short-circuit if table->nentries == 0 and + HASH_CREATE has not been passed in the flags argument + +{alias,variables,hashcmd,pcomplib}.c + - renamed calls to all renamed functions from hashlib.c + +builtins/kill.def + - don't drop a leading `-' in a pid argument + - call kill_pid with an explicit third argument of 1 if the pid + argument to kill is < -1, rather than rely on the behavior of + kill(2) + + 2/21 + ---- +subst.c + - quoted_strchr is no longer declared `inline' + - skip_double_quoted is no longer declared `inline' + - string_extract_double_quoted is no longer declared `inline' + +lib/readline/input.c + - rl_gather_tyi is now an `int' valued function; returns the number + of characters read (0 or 1) or -1 on error + - if rl_gather_tyi() returns -1 to rl_read_key(), set rl_done to 1 + and return a newline; something is wrong with the input fd + + 2/25 + ---- +variables.[ch] + - IFS is now a special variable + - new special var function, sv_ifs(), called when IFS is set or unset + - call setifs() when IFS is first set in initialize_shell_variables + - call setifs() from make_local_variable and assign_in_env if + appropriate + - if assign_in_env() is called with a var assignment like `VAR=', + make the value in the new SHELL_VAR created be "" like + do_assignment_internal does, since certain parts of the shell use + a NULL value as evidence that the variable is unset (though + attributes may have been assigned) + - if push_temp_var pushes something up to the global_variables table, + make sure that the context is set to 0 + - new function dispose_temporary_env, called by both + dispose_used_env_vars and merge_temporary_env with different `free + func' function pointers; calls sv_ifs after disposing the temporary + environment + - push_exported_var now calls bind_variable_internal instead of + bind_variable + - pop_scope and pop_context now call sv_ifs + +subst.[ch] + - new global variables used to keep track of IFS state, to avoid + having to call find_variable("IFS") all the time: + + ifs_var the SHELL_VAR for IFS + ifs_value ifs_var ? value_cell (ifs_var) : " \t\n" + ifs_cmap bitmap of characters in ifs_value + ifs_firstc first character in ifs_value + + - new function setifs(), sets the aforementioned ifs variables each + time IFS is set or unset, and at nested scope exit + - instead of calling getifs() from inside subst.c, use ifs_value + - getifs() now just returns ifs_value + - use ifs_firstc in string_list_dollar_star() + - only call member() in issep() if separators is more than one char + - don't cache a bitmap every time expand_word_internal() is called; + use ifs_cmap instead + - new macro, isifs(c), checks whether C is in ifs_cmap + +builtins/read.def + - use issep() and isifs() macros instead of looking at $IFS directly + +syntax.h + - make sure macros that access sh_syntaxtab cast the argument to + `unsigned char' before array access + - new macros: issyntype(c, type) and notsyntype(c, type), check + sh_syntaxtab[c] for a particular flag value `type' + + 2/26 + ---- +hashlib.h + - the `data' member of a `BUCKET_CONTENTS' is now a PTR_T + +{hashlib,alias,variables,hashcmd,pcomplib}.c + - removed some casts when assigning to and using `data' member of a + `BUCKET_CONTENTS' + +subst.c + - in split_at_delims, call make_word_list instead of allocating and + initializing a WORD_LIST * directly + +make_cmd.[ch] + - add_string_to_list is now just a macro that calls make_word_list + - make_simple_command now calls make_word_list instead of allocating + a WORD_LIST * directly + + 2/27 + ---- +copy_cmd.c + - copy_word now calls make_bare_word to allocate the copy + - copy_word_list now calls make_word_list to allocate the copy + +shell.h + - include `ocache.h' for simple object caching + - call cmd_init() to initialize the WORD_DESC and WORD_LIST object + caches + +{make,dispose}_cmd.c + - allocate WORD_DESC * and WORD_LIST * vars from their respective + ocaches, and return them to the cache when disposing + +jobs.c + - renamed old `waiting_for_job' variable to `queue_sigchld', which + better reflects its intent: sigchld_handler does not call waitchld + if `queue_sigchld' is non-zero, it simply increments the count of + waiting children + - cleanup_dead_jobs now just sets and clears queue_sigchld instead of + blocking and unblocking SIGCHLD; it calls waitchld at the end if + `sigchld' is non-zero, but that's not really necessary + - in setjstatus, only call xrealloc if `statsize' is less than the + number of processes passed -- no reason to do it if they're the + same + + 2/28 + ---- +sig.[ch] + - reinitialize_signals is no more; initialize_signals takes an + argument saying whether or not we are reinitializing + +builtins/exec.def + - reinitialize_signals() -> initialize_signals(1) + +test.c + - fix filecomp() to work right when one file has a non-positive + timestamp and the other file does not exist + +doc/{bash.1,bashref.texi} + - document what happens for test's -nt and -ot operators when one + file operand exists and the other does not + +jobs.c + - if we haven't messed with SIGTTOU, just manipulate queue_sigchld + in notify_of_job_status instead of calling sigprocmask() + - list_one_job now calls pretty_print_job directly instead of going + through print_job + - pretty_print_job now must be called with SIGCHLD blocked or held + instead of blocking SIGCHLD itself + - changed start_job so that it doesn't call UNBLOCK_CHILD and then + immediately call BLOCK_CHILD again (explicitly or via last_pid()), + call find_last_pid instead of last_pid and then UNBLOCK_CHILD + - changed wait_for_job the same way + - find_last_pid now takes a second argument: block; uses BLOCK_CHILD + if `block' is 1, not otherwise. Changed existing calls: + find_last_pid(j) -> find_last_pid(j, 0) + last_pid(j) -> find_last_pid(j, 1) + `last_pid()' is now gone + - rewrote wait_for_background_pids(); it was a little strange + +copy_cmd.c + - copy_if_command: don't copy null false_case commands + - copy_simple_command: don't copy a null redirection list + +subst.c + - in get_word_from_string and list_string, just check for " \t\n" + directly rather than calling strcmp + - in get_word_from_string and strip_trailing_ifs_whitespace, use + isifs() instead of issep(), since they're never called with + separators != $IFS + - change issep() to call isifs if separators is longer than one + character, since it's never called with anything but "", " ", + or $IFS + + 3/1 + --- +sig.h + - enclose the BLOCK_SIGNAL macro in a do {...} while (0) loop, at it + should have been all along + +lib/readline/doc/rltech.texinfo + - document that readline defaults to stdin/stdout if rl_instream/ + rl_outstream are NULL + +lib/readline/terminal.c + - if an application is using a custom redisplay function, + rl_resize_terminal just calls rl_forced_update_display to tell + (*rl_redisplay_func) to update the display, otherwise call + _rl_redisplay_after_sigwinch + +lib/readline/readline.c + - change readline_internal_setup() so the change to vi insertion mode + happens even if readline_echoing_p is 0 + - don't print the prompt to rl_outstream in readline_internal_setup + if we're not echoing and the caller has defined a custom redisplay + function -- let the redisplay function deal with it + +configure.in + - new option: --enable-mem-scramble, controls memory scrambling on + free() (on by default; only affects use of bash malloc) + +config.h.in + - new option MEMSCRAMBLE, controlled by --enable-mem-scramble + + 3/5 + --- +parse.y + - added ksh-like behavior of [...] to read_token_word: if a `[' is + seen in an assignment context and the previous characters in the + token form a valid identifier, parse the [...] with + parse_matched_pair to allow spaces (and newlines) in the subscript + +bashline.c + - new function bash_servicename_completion_function, for completing + service names from /etc/services + +bashline.h + - new extern declaration for bash_servicename_completion_function + +builtins/complete.def + - allow new `-s/-A service' option to complete and compgen builtins + +pcomplete.h + - new CA_SERVICE define, new ITEMLIST variable it_services + +pcomplete.c + - add callback to bash_servicename_completion_function to generate + list of matching service names for completion + +doc/bash.1,lib/readline/doc/rluser.texinfo + - documented new `-s/-A service' option to complete and compgen + + 3/6 + --- +builtins/read.def + - change hard-coded `0' to new variable `fd' (initially 0) in + preparation for adding `-u fd' option + +bashline.c + - bash_directory_completion_hook calls expand_prompt_string instead + of expand_string (it does the right thing). This keeps expansion + errors from causing a longjmp, which shouldn't happen because of + completion + - command_subst_completion_function was augmented very slightly to + do filename completion on a non-command-word in a command + substitution + - command_subst_completion_function now skips over the lcd that + rl_completion_matches puts in matches[0] if there is more than + one possible completion + + 3/7 + --- +builtins/read.def + - only add the unwind_protect to free `rlbuf' if `edit' is non-zero, + since we won't be using readline otherwise + +lib/sh/zread.c + - renamed zread1 -> zreadintr + +redir.c + - small change to redirection_error() to make a slightly better + guess about the invalid file descriptor if the redirection op is + r_duplicating_input or r_duplicating_output + +include/stdc.h + - new macro, SH_VA_START, to encapsulate the difference between + stdarg va_start and varargs va_start + +{error,pcomplete,print_cmd}.c,builtins/common.c,lib/sh/snprintf.c + - use SH_VA_START + + 3/8 + --- +builtins/read.def + - support for the ksh-like `-u fd' option + +general.c + - new function sh_validfd(fd), returns 1 if fd is a valid open file + descriptor + +general.h + - extern decl for sh_validfd + +bashline.c + - don't call posix_readline_initialize() from initialize_readline(); + sv_strict_posix() should already have taken care of it + + 3/11 + ---- +{error,pcomplete,print_cmd}.c, builtins/common.c + - removed non-varargs versions of functions + +builtins/printf.def + - if the string argument to %q has non-printing characters, call + ansic_quote to quote it rather than sh_backslash_quote + +variables.h + - new attribute: att_trace (and corresponding trace_p() macro). + Functions with this attribute will inherit the DEBUG trap. + Currently ignored for variables + +builtins/declare.def + - new `-t' option to declare/typeset toggle the `att_trace' attribute + +builtins/setattr.def + - check for att_trace and output `-t' flag in show_var_attributes + +execute_cmd.c + - if a function is being traced (it has the `-t' attribute set), + don't turn off the DEBUG trap when it executes + +doc/{bash.1,bashref.texi} + - document the new `-t' option to declare/typeset + + 3/12 + ---- +execute_cmd.c + - don't execute the debug trap in the `cm_simple:' case of + execute_command_internal; run it in execute_simple_command so we + get the line number information right when executing in a shell + function + - run a DEBUG trap before executing ((...)) arithmetic commands, + like ksh93 + - run a DEBUG trap before executing [[...]] conditional commands, + like ksh93 + +eval.c + - add a static forward declaration for alrm_catcher() + +general.c + - add static forward declarations for bash_special_tilde_expansions, + unquoted_tilde_word, initialize_group_array + +variables.h + - add extern declarations for sh_get_env_value, map_over_funcs, + local_exported_variables + +variables.c + - add static forward declarations for dispose_temporary_env, + make_func_export_array + +bashhist.c + - add static forward declaration for check_history_control + +configure.in + - add a call to AC_CHECK_DECLS for strcpy + +config.h.in + - add placeholder for HAVE_DECL_STRCPY define, set by configure + +general.h + - don't declare strcpy if HAVE_DECL_STRCPY is defined with a non-zero + value + +sig.h + - add prototype to typedef of SigHandler + +lib/readline/histlib.h + - removed extern declaration of strcpy() + - include string.h/strings.h directly in histlib.h instead of source + files + +lib/readline/{histexpand,histfile,history,histsearch}.c + - don't include string.h/strings.h now that histlib.h includes it + +lib/tilde/tilde.c + - removed extern declaration of strcpy(), rely on string.h/strings.h + +command.h + - four new redirection types: r_move_input, r_move_output, + r_move_input_word, r_move_output_word, for + [N]<&word- and [N]>&word- from ksh93 + +print_cmd.c + - changes to print r_move_input[_word] and r_move_output[_word] + +copy_cmd.c + - changes to copy r_move_input[_word] and r_move_output[_word] + +dispose_cmd.c + - changes to dispose r_move_input_word and r_move_output_word + +make_cmd.c + - changes to make r_move_input[_word] and r_move_output[_word] from + r_duplicating_{input,output}_word, which is how the new redirs + are passed by the parser + +redir.c + - changes to make r_move_input[_word] and r_move_output[_word] do + the right thing when executed + +builtins/read.def + - print an error message and return failure immediately if zread/zreadc + return < 0 + +doc/{bash.1,bashref.texi} + - documented new [n]<&word- and [n]>&word- redirections + + 3/13 + ---- +lib/readline/isearch.c + - enabled code to allow chars bound to rl_rubout to delete characters + from the incremental search string + +shell.c + - add `-l' invocation option to parse_shell_options; equivalent to + `--login' + - fixed set_login_shell to check first char of base pathname of argv0 + for `-', like other shells + - move the check for make_login_shell after the call to + parse_shell_options because the `-l' option might set it + +doc/{bash.1,bashref.texi} + - documented new `-l' invocation option + +array.c + - new function, array_shift, shifts an array left by a specified + number of elements + - array_walk is now compiled in by default + - array_to_assignment_string now takes a second argument: int quoted. + If non-zero, the result is single-quoted before being returned + - quoted_array_assignment_string has been removed + +array.[ch] + - renamed most of the array functions so that all have an array_ + prefix and are more systematically named + - array_slice now preserves the indicies from the original array + - change array_to_assign to use a static buffer for expanding the + array indices, instead of malloc/free + +{arrayfunc,subst,variables}.c, builtins/read.def + - changed calls to various array functions to use new names + +lib/sh/stringvec.c, externs.h + - renamed all of the functions to have a strvec_ prefix and to have + a more sensible name scheme + - strvec_search's arguments are now supplied in reverse order, so + the char **array is first, like the other functions + - new function, strvec_resize, xrealloc for strvecs + +{alias,array,bracecomp,braces,bashline,execute_cmd,findcmd,general,pathexp, +pcomplete,variables}.c +lib/sh/stringlist.c +builtins/{bind,complete,exec,getopts,pushd,set}.def + - change calls to all functions from lib/sh/stringvec.c + - use strvec_resize where appropriate + +externs.h + - only declare dup2() if HAVE_DUP2 is undefined or DUP2_BROKEN is + defined + +lib/readline/{macro,readline,util}.c, lib/readline/rlprivate.h + - _rl_defining_kbd_macro is gone, use RL_ISSTATE(RL_STATE_MACRODEF) + +lib/readline/readline.h + - new struct readline_state, encapsulates most of readline's internal + state in case you need reentrancy or nested calls to readline() + - extern declarations for rl_save_state, rl_restore_state + +lib/readline/readline.c + - add (undocumented) int rl_save_state (struct readline_state *), + int rl_restore_state (struct readline_state *) + + 3/14 + ---- +array.[ch] + - new function, array_rshift, shifts an array right by a specified + number of elements, optionally inserting a new element 0 + +examples/bashdb/bashdb + - new single-file version of bash debugger, originally modified from + version in bash-2.04 by Gary Vaughan (the old debugger still + appears in examples/obashdb). This version has a more gdb-like + command set + +examples/bashdb/bashdb.el + - new emacs bashdb debugger mode from Masatake YAMATO + +execute_cmd.c + - don't make $LINENO relative to function start unless the shell is + currently interactive -- this is what ksh93 does and what I + believe to be the intent of POSIX.2 (this required changing some + of the test checks because the output has changed) + - run the debug trap for each command in an arithmetic for expression, + like ksh93 does + +lib/readline/vi_mode.c + - redid rl_vi_subst (binding func for `s' and `S') in terms of + rl_vi_change_to: `S' == `cc' and `s' == `c '. This makes undo + work right + + 3/18 + ---- +hashlib.c + - fixed hash_walk to return if the item function returns < 0, instead + of breaking out of the current hash chain + +array.c + - fixed array_walk to return if the item function returns < 0, like + hash_walk + +lib/sh/stringlist.c, externs.h + - new function: strlist_walk, takes a stringlist and a pointer to an + item func. Like other _walk funcs, if item func returns < 0 the + walk is cancelled + - new function: strlist_flush, frees items in the contained list + with strvec_flush + - renamed functions to have a strlist_ prefix and be more systematic + +pcomplib.c,pcomplete.h + - removed redundant `progcomp_initialized' variable + - renamed functions to have `progcomp_' or `compspec_' prefixes + like the hash library + +{bashline,pcomplete}.c,builtins/complete.def + - fixed calls to stringlist functions to use new names + - fixed calls to functions in pcomplib.c to use new names + +pcomplete.c + - made the debugging code #ifdef DEBUG -- it should be mature enough + +builtins/hash.def,parse.y + - use REVERSE_LIST(x, t) instead of (t)reverse_list(x) + +list.c,{externs,general}.h + - renamed the list functions to have a list_ prefix, changed callers + +externs.h,{execute_cmd,stringlib,subst}.c,builtins/common.c,lib/sh/stringvec.c + - word_list_to_argv -> strvec_from_word_list + - argv_to_word_list -> strvec_to_word_list + - moved functions to lib/sh/stringvec.c + +lib/sh/stringvec.c + - changed name of second argument to strvec_from_word_list from `copy' + to `alloc' so the use of `copy' between strvec_from_word_list and + strvec_to_word_list isn't as confusing + - changed name and sense of second argument to + strvec_to_word_list from `copy' to `alloc' for the same reason -- + now both functions agree on semantics of second argument + +lib/sh/stringlist.c + - ditto for strlist_from_word_list and strlist_to_word_list + +subst.c + - changed callers of strvec_to_word_list + + 3/19 + ---- +builtins/hash.def + - added `-l' option to list table or individual targets in reusable + format + - added `-d' option to remove one or more names from the table of + hashed commands (provides `unhash' or `unalias -t' functionality) + +doc/{bash.1,bashref.texi} + - documented new `-l' and `-d' options to `hash' + +hashcmd.[ch] + - renamed functions to have a `phash_' prefix and follow new naming + convention + - phash_remove now returns an int: 1 if command not in hash table, + 0 if filename removed OK + +{findcmd,variables}.c, builtins/{hash,type}.def + - changed callers to use new names from hashcmd.c + +builtins/common.[ch] + - new function, sh_notfound(s), prints standard `not found' message + - new function, sh_invalidid(s), prints standard `invalid identifier' + message + - new function, sh_restricted(s), prints standard `restricted' message + for restricted shells + - new function, sh_invalidnum(s), prints standard `invalid number' + message + - renamed bad_option to sh_invalidopt, changed to print + `invalid option' instead of `unknown option' + - new function, sh_invalidoptname, prints standard `invalid option + name' for long options + - new function, sh_badjob (s), prints standard `no such job' message + - new function, sh_invalidsig (s), prints standard `invalid signal + specification' message + - new function, sh_nojobs (s), prints standard `no job control' message + - new function, sh_needarg (s), prints standard `option requires an + argument' message + - new function, sh_neednumarg (s), prints standard `numeric + argument required' message + - new function, sh_badpid(s), prints standard `not a pid...' message + - new function, sh_erange (s, desc) prints standard `out of range' + message, optionally using `desc' to say what the argument is + +builtins/{alias,command,declare,exec,hash,type}.def + - call sh_notfound() instead of calling builtin_error directly + +builtins/{declare,getopts,read,set,setattr}.def + - call sh_invalidid() instead of calling builtin_error directly + +builtins/{cd,command,enable,exec,hash,source}.def + - call sh_restricted() instead of calling builtin_error directly + +builtins/{printf,read,ulimit}.def, builtins/common.c + - call sh_invalidnum instead of calling builtin_error directly + +builtins/{complete,declare,pushd,set}.def, builtins/bashgetopt.c + - call sh_invalidopt instead of bad_option or builtin_error directly + +builtins/{complete,set,shopt}.def + - call sh_invalidoptname instead of builtin_error directly + +builtins/{fg_bg,jobs,kill,wait}.def + - call sh_badjob instead of calling builtin_error directly + +builtins/common.c, builtins/{kill,signal}.def + - call sh_invalidsig instead of calling builtin_error directly + +builtins/{fg_bg,suspend,wait}.def + - call sh_nojobs instead of calling builtin_error directly + +builtins/{common,bashgetopt}.c, builtins/{hash,kill}.def + - call sh_neednumarg and sh_needarg where required + +builtins/{kill,wait}.def + - call sh_badpid where required + +builtins/{break,fc,history,pushd,shift,ulimit,umask}.def + - call sh_erange where appropriate + +builtins/printf.def + - new static function, printf_erange, prints standard out-of-range + warning message + +builtins/set.def + - changed so that calls to sh_invalidopt always include the leading + `+' or `-' + +builtins/shopt.def + - changed SHOPT_ERROR macro to shopt_error function + +builtins/bind.def + - regularized error messages to `bind: object: error string' like + other error messages + +builtins.h + - the `short_doc' member of a `struct builtin' is now of type + `const char *' + - the strings in `long_doc' array of a struct builtin are now const + +builtins/mkbuiltins.c + - changes for new `const' members of struct builtin + + 3/20 + ---- +lib/readline/histfile.c + - use pointers instead of indexing into buffer when reading the + contents of the history file in read_history_range and + history_truncate_file + + 3/21 + ---- +lib/readline/histfile.c + - new file, with code to mmap the history file for reading and + writing (depends on HAVE_MMAP, currently nothing checks for that) + + 3/25 + ---- +error.[ch] + - new function, err_badarraysub(s), calls report_error with standard + `bad array subscript' message + - new function, err_unboundvar(s), calls report_error with standard + `unbound variable' message + - new function, err_readonly(s), calls report_error with standard + `readonly variable' message + +{arrayfunc,subst}.c + - call err_badarraysub where appropriate + +{expr,subst}.c + - call err_unboundvar where appropriate + +{arrayfunc,variables}.c + - call err_readonly where appropriate + +shell.c + - changed text of bad option error messages to be the same as that + printed for builtin errors + +builtins/common.c + - changed sh_invalidopt to print the invalid option before the rest + of the error message (required some tests to be modified) + - new function, sh_readonly, calls builtin_error with standard + `readonly variable' message + +variables.c,builtins/declare.def + - call sh_readonly where appropriate + +lib/sh/stringvec.c + - added strvec_remove (sv, s), removes S from SV and shuffles rest of + elements down 1 + +lib/sh/stringlist.c + - added strlist_remove(sl, s), just calls strvec_remove on the + component list + +externs.h + - new extern declarations for strvec_remove and strlist_remove + - fixed extern declaration for strvec_search; the arguments were + reversed (unimportant, it's not compiled into the shell) + +subst.c + - change param_expand to call quote_escapes on values retrieved when + expanding the positional parameters + - change parameter_brace_expand_word to quote escapes on values + retrieved when expanding the positional parameters + - fix parameter_brace_substring to quote escape characters on unquoted + substrings extracted from variable values (needed to separate case + VT_VARIABLE from VT_ARRAYMEMBER for this, since, because + get_var_and_type calls array_value for VT_ARRAYMEMBER, we need to + skip over quoted characters in an already-appropriately-quoted + string to find the substring we want) + - fix parameter_brace_substring to quote escape characters in the + value returned by pos_params when expanding subsets of the + positional parameters and not within double quotes (in which case + pos_params() quotes the string for us) + - fix parameter_brace_substring to quote escape characters in the + value returned by array_subrange when expanding subsets of an + array and not within double quotes (in which case + array_subrange() quotes the string for us) + - new function, quoted_strlen(s), does strlen(s) while skipping over + characters quoted with CTLESC (#ifdef INCLUDE_UNUSED, since it's + not used yet) + - changed pos_params() so it always returns a list whose members are + quoted strings if (quoted&(Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) != 0 + +arrayfunc.c + - fix array_value to consistently call quote_escapes, even when a + non-array variable is being subscripted with element 0, in which + case we return the variable value + +lib/sh/strtrans.c + - make the for_echo parameter to ansicstr a `flags' parameter that + has its old `for echo' meaning if flags&1 is non-zero (which is + consistent with the old code) + - Added code to the `flags' parameter to ansicstr so that if flags&2 + is non-zero, CTLESC and CTLNUL are escaped with CTLESC in the + expanded string + - change ansiexpand() to call ansicstr with a `flags' parameter of 2 + + 3/26 + ---- +lib/readline/histfile.c + - when reading and writing the history file, use malloc instead of + xmalloc and handle failures gracefully, so the application doesn't + abort if the history file or history list is too big + + 3/27 + ---- +arrayfunc.c + - changed array_value_internal to take an additional `int *' + parameter, in which is returned the type of array indexing + performed (array[@] vs. array or array[index]) + - changed array_value and get_array_value to take a corresponding + extra parameter and pass it to array_value_internal + - changed array_value_internal to no longer return newly-allocated + memory or quote CTLESC and CTLNUL in the returned string if + `simple' array indexing (subscript not `@' or `*') is being + performed. This makes it more like a variable lookup + +arrayfunc.h + - changed prototypes for array_value and get_array_value + +expr.c + - added new parameter to call to get_array_value in expr_streval + - don't need to free memory returned by get_array_value any more + +subst.c + - quote_escapes now works with multibyte characters + - dequote_string now works with multibyte characters + - dequote_escapes is now needed, so it's compiled in, and it + now works with multibyte characters + - remove_quoted_escapes now just calls dequote_escapes and copies the + result over the argument string + - remove_quoted_nulls now returns its char * argument, parallels + remove_quoted_escapes + - parameter_brace_expand_word now passes the new argument to + array_value and quotes CTLESC and CTLNUL in the result if it's a + `simple' array expansion by calling quote_escapes + - get_var_and_type now returns VT_ARRAYMEMBER for references like + ${array} where `array' is an array variable (just like ${array[0]}). + Documented (in comment) that a VT_VARIABLE return value means that + quote_escapes has been called at some point + - changed callers of get_var_and_type to no longer free value if + VT_ARRAYMEMBER is returned as type + - changed parameter_brace_substring and parameter_brace_patsub to + call dequote_escapes on the value from get_var_and_type if the + type is VT_VARIABLE, since the substring and pattern substitution + code doesn't understand CTLESC quoting + - parameter_brace_substring no longer needs to call quoted_substring + for the VT_ARRAYMEMBER case + - changed parameter_brace_patsub to call quote_escapes on the result + of pat_subst for the VT_VARIABLE and VT_ARRAYMEMBER cases, and to + quote the returned string in the VT_ARRAYVAR and VT_POSPARAMS cases + if the `MATCH_QUOTED' flag isn't set (if it is, the pattern + substitution functions perform any necessary quoting) + - quoted_substring is no longer used; it's now #ifdef INCLUDE_UNUSED + +lib/malloc/mstats.h + - new member in _malstats: u_bits32_t bytesreq, the total number of + bytes requested by the caller via calls to malloc() and realloc() + +lib/malloc/stats.c + - print bytesreq member in _print_malloc_stats + - don't print statistics for buckets for which nmal == 0 (no mallocs) + +lib/malloc/malloc.c + - modified internal_malloc, internal_realloc to keep running total of + number of bytes requested by calling application + +shell.c + - sh_exit is now compiled in; exit_shell calls sh_exit + +error.c + - changed fatal_error, report_error, parser_error to call sh_exit + + 3/28 + ---- +subst.[ch] + - changed Q_NOQUOTE to Q_PATQUOTE; it makes the intent more clear + +subst.c + - moved code from parameter_brace_expand into a new function that + dispatches for pattern substitution: parameter_brace_remove_pattern + - changed structure of parameter_brace_remove_pattern to be like + parameter_brace_patsub and its ilk: call get_var_and_type to + isolate the variable name, move the pattern isolation code out of + the various *_remove_pattern functions into + parameter_brace_remove_pattern and pass the results to the various + functions, use a switch on the return value from get_var_and_type + to decide which function to call, regularized the arguments to the + separate pattern removal functions + - parameter_brace_remove_pattern now properly quotes escape chars in + the returned value + - changed get_var_and_type to call dequote_escapes on the `value' + parameter for case VT_VARIABLE and return the result in *valp, + so the calling functions don't have to do it themselves; changed + callers appropriately + - fixed getpattern() where it broke posix compliance: if you enclose + a pattern removal spec in double quotes, the outer double quotes + have no effect on the pattern (POSIX.1-200x 2.6.2). This uncovered + a bug in the test suite (!) + +pathexp.c + - fixed a problem with quote_string_for_globbing where it would change + consecutive CTLESC chars all to \ instead of changing every other + quoted char + + 3/31 + ---- +lib/malloc/{malloc,stats}.c + - moved declaration of _mstats to malloc.c so stats.o doesn't get + linked into the shell if the stats functions aren't called + + 4/2 + --- +lib/glob/smatch.c + - introduce `XCHAR' define, which is the type of arguments passed to + strcoll/strcmp/strlen and their wide-character equivalents, added + appropriate casts + - static arrays in single-byte version of rangecmp() are `char', not + `unsigned char', so compilers don't complain about calls to strcoll + +lib/glob/sm_loop.c + - casts for `XCHAR' and `XCHAR *' arguments to libc functions + - use prototype declaration for BRACKMATCH if `PROTOTYPES' is defined + to avoid problems with type promotion (unsigned char -> int) + +lib/glob/collsyms.h + - `name' member of struct _COLLSYM is now of type `XCHAR *', since + some compilers don't like `unsigned char *' initializers from + constant strings + +[bash-2.05b-alpha1 released] + + 4/3 + --- +builtins/{evalstring.c,common.h} + - new flag for parse_and_execute, SEVAL_NOFREE, means to not free + the argument string when finished + +lib/readline/text.c + - fixed a trivial typo in _rl_insert_char when reading multibyte + char sequences + - replace calls to ding() with rl_ding() + +include/chartypes.h + - remove SIGN_EXTEND_CHAR and TOASCII macros; they're unused + +make_cmd.c + - include dispose_cmd.h for extern function declarations + +lib/glob/glob.c + - include `shmbutil.h' and `xmalloc.h' for extern function declarations + +lib/glob/smatch.c + - include `xmalloc.h' for extern function declarations + +shell.c + - fix maybe_make_restricted to use its argument instead of global + `shell_name' + +version.c + - update copyright message to include this year + +lib/readline/display.c + - fixes from Jiro SEKIBA to fix autowrapping + when using multibyte characters + +lib/glob/sm_loop.c + - fixed a problem in BRACKMATCH where not enough memory was allocated + to hold a multibyte character when parsing POSIX.2 char class names + +support/config.{guess,sub} + - updated via patch from Paul Eggert with latest GNU additions + +variables.c + - var_lookup should use its `vcontext' argument instead of + unconditionally using `shell_variables' + + 4/4 + --- +builtins/bind.def,doc/{bash.1,bashref.texi} + - changed the usage summary and help text to make it clear that any + readline command that may appear in ~/.inputrc may be supplied as + one of the non-option arguments to `bind' + +builtins/mkbuiltins.c + - added support for `-H' option, which means to write long documentation + for each builtin to a separate file in the `helpfiles' directory + +builtins/Makefile.in + - new target `helpdoc', just creates long doc files in helpfiles + directory + +lib/sh/zcatfd.c + - new file, with zcatfd(int fd, int ofd, char *fn); dumps data from + FD to OFD + +Makefile.in,lib/sh/Makefile.in + - added zcatfd.c, zcatfd.o member of libsh.a + +builtins/evalstring.c + - changed cat_file to call zcatfd(fd, 1, fn) + +builtins/{shopt,colon}.def + - removed the $DOCNAME directive for `shopt', `true', and `false'; + just use the names + - changed $DOCNAME for `:' to just be `colon' instead of + `colon_builtin' + +builtins/reserved.def + - added help entries for ((, [[, `for ((' + +builtins/let.def + - add id++, id--, ++id, --id, ** to help text + + 4/8 + --- +builtins/bashgetopt.[ch] + - changed to allow options beginning with `+', enabled by a leading + `+' in the option string + - new variable, list_opttype, set to `-' or `+' + +builtins/{common.c,{builtin,eval,exit,fg_bg,let,printf,pushd,return,source,wait}.def + - changes to allow a `--' option for every builtin that accepts + operands but not options, as per posix.1-2001 + +builtins/{declare,setattr}.def + - use internal_getopt for parsing options, now that it supports `+' + +builtins/set.def + - use internal_getopt for initial option parse, now that it supports + a leading `+' + + +{configure,Makefile}.in, builtins/{Makefile.in,help.def,mkbuiltins.c} + - support for a new configure option, ``--enable-separate-helpfiles'', + moves the `long' help text to separate help files, installed by + default into ${datadir}/bash, one file per builtin. Off by + default -- it saves 47K, but it's only 47K, and it's in the text + segment + +flags.c + - build internal_getopt() option string argument from flags array at + runtime in shell.c + +shell.c + - new variable to control writing malloc stats at exit: + malloc_trace_at_exit, 0 by default + +lib/malloc/malloc.c + - heavily updated: + o partial page allocated on first call to malloc to make + subsequent sbrks page-aligned no longer wasted + o begin and end range guards are now the same value: the chunk + requested + o coalescing code was changed to attempt to coalesce first two + adjacent blocks on the free list; enabled by default + o blocks of size 32 are now candidates for larger block + splitting, since 32 is the most popular size + o blocks of size 32 are now candidates for smaller block + coalescing + o the IN_BUCKET check was changed to just make sure that the + size isn't too big for the bucket, since the `busy block' + checking code may increase the bucket by one or more, + meaning that the old check would fail and cause a panic when + a chunk allocated in such a way was freed + o bin sizes are now precomputed and looked up in an array + rather than being computed at runtime + o moved the _mstats declaration here to avoid the stats code + being linked in even when no stats functions were called + (only matters if MALLOC_DEBUG is defined) + o malloc now keeps track of the address of the top of the heap + and will return large chunks to the system with calls to + sbrk with a negative argument when freeing the top chunk. + Two thresholds: LESSCORE_FRC means to unconditionally return + memory to the system; LESSCORE_MIN means to return memory if + there's at least one block already on the free list + +lib/malloc/mstats.h + - stats struct now keeps track of number of block coalesces by bin, + and the number of times memory was returned to the system by bin + +lib/malloc/stats.c + - trace_malloc_stats now takes a second argument: the name of the file + to write to. The first `%p' in the template file name is replaced + by the pid + + 4/9 + --- +lib/malloc/imalloc.h + - added some macros derived from dlmalloc and glibc malloc to inline + memcpy and memset if the requested size is <= 32 bytes + +lib/malloc/malloc.c + - use MALLOC_MEMSET instead of memset in internal_{malloc,free} + +include/ocache.h + - use OC_MEMSET (variant of MALLOC_MEMSET) in ocache_free + +configure.in, config.h.in + - check for getservent(), define HAVE_GETSERVENT if found + +bashline.c + - punt immediately from bash_servicename_completion_function if + HAVE_GETSERVENT is not defined (cygwin seems to not define it) + - include "input.h" for extern save_token_state() and + restore_token_state() declarations + - change bash_execute_unix_command to call parse_and_execute with + SEVAL_NOHIST flag so the command doesn't get saved on the history + list + - change bash_execute_unix_command to save and restore the current + command line count and the token state (last_read_token, etc.). + Everything else is saved by either parse_and_execute directly or + the call it makes to push_stream(). The shell_input_line stuff + doesn't need to be saved and restored; it's not computed until + readline() returns + + 4/10 + ---- +lib/glob/glob.[ch] + - glob_filename and glob_vector now take an additional `flags' arg + - define GX_MARKDIRS as possible flag value for glob_filename and + glob_vector + +lib/sh/snprintf.c + - fixed some bugs with handling of `g' and `G' formats + - make sure numtoa returns the fractional part correctly when passed 0 + - implemented thousands grouping for `'' flag character + +lib/sh/rename.c + - a few changes to make it more bulletproof + + 4/11 + ---- +lib/glob/glob.c + - added the couple of dozen lines of code to glob_dir_to_array to + finish implementing GX_MARKDIRS + +builtins/set.def + - changed unset builtin so that it no longer considers unsetting an + unset variable or function to be an error + +lib/readline/display.c + - fix to rl_redisplay for a problem which caused display to be messed + up when the last line of a multi-line prompt (possibly containing + invisible characters) was longer than the screen width + + 4/15 + ---- +aclocal.m4 + - use AC_DEFINE_UNQUOTED in BASH_SYS_DEFAULT_MAIL_DIR instead of + enumerating all of the possible values and using AC_DEFINE + + 4/16 + ---- +Makefile.in, {builtins,support}/Makefile.in + - new variables, CFLAGS_FOR_BUILD and CPPFLAGS_FOR_BUILD, substituted + by `configure' + - changed CCFLAGS_FOR_BUILD to BASE_CCFLAGS, removing $(CPPFLAGS); + CCFLAGS and CCFLAGS_FOR_BUILD now include $(BASE_CCFLAGS) with + (possibly) different values for CPPFLAGS and CFLAGS + - GCC_LINT_CFLAGS now includes $(BASE_CCFLAGS) and $(CPPFLAGS) + instead of CCFLAGS_FOR_BUILD + - new variable, LDFLAGS_FOR_BUILD, right now equivalent to LDFLAGS + - remove $(CPPFLAGS) from recipes for buildversion, mksignames, and + mksyntax + +configure.in + - compute and substitute CFLAGS_FOR_BUILD, CPPFLAGS_FOR_BUILD, and + LDFLAGS_FOR_BUILD + - changed qnx to use LOCAL_LDFLAGS and LOCAL_LIBS instead of putting + everything in LOCAL_LDFLAGS + +builtins/Makefile.in + - remove $(PROFILE_FLAGS) from recipe for building `mkbuiltins' + - use LDFLAGS_FOR_BUILD instead of LDFLAGS in recipe for building + `mkbuiltins' + +Makefile.in + - use $(CC_FOR_BUILD) and $(CCFLAGS_FOR_BUILD) to build auxiliary + test programs (printenv, recho, zecho) + +support/Makefile.in + - use CC_FOR_BUILD and CCFLAGS_FOR_BUILD in recipe for building + `man2html' + +lib/tilde/Makefile.in + - substitute PROFILE_FLAGS, use PROFILE_FLAGS in $(CCFLAGS) + + 4/25 + ---- +Makefile.in, configure.in + - moved RELSTATUS to configure.in; configure substitutes it into + the generated Makefile + +lib/sh/snprintf.c + - fix wchars() to deal with systems where MB_CUR_MAX is not a + constant expression + + 5/2 + --- +lib/sh/shquote.c + - add `,' to list of chars that are backslash-quoted. It doesn't + hurt normal usage and prevents filenames with commas from being + inappropriately split by brace expansion after using + complete-into-braces + + 5/6 + --- +lib/sh/xstrchr.c + - we only need the check of MB_CUR_MAX and the slow code for a + few encodings, and even then only for a subset of the charset + +arrayfunc.c + - some speedups for skipsubscript and multibyte chars from Bruno Haible + +locale.c + - changed set_lang to call setlocale(LC_ALL, ...) if LC_ALL doesn't + already have a value, but doesn't change any shell variables + +include/shmbutil.h + - major speedups from Bruno Haible, mostly concerned with reducing + the number of strlen(3) calls + +subst.c + - change callers of macros in shmbutil.h to add extra argument as + necessary + - skip_single_quoted and skip_double_quoted take another argument: + the length of the string; mostly useful when using multibyte chars + - many speedups from precomputing string lengths at function start + - fixed a small bug in de_backslash in the midst of rewriting for + better efficiency + +{braces,make_cmd,pathexp}.c + - change callers of macros in shmbutil.h to add extra argument as + necessary + +pathexp.c + - fix a one-too-far problem with multibyte chars in + unquoted_glob_pattern_p + +braces.c + - brace_gobbler takes a new argument, the length of the passed string + - expand_amble takes a new argument, the length of the passed string + + 5/7 + --- +subst.c + - modified remove_quoted_nulls to eliminate the memory allocation and + do the copy in place using the same strategy as de_backslash + +lib/readline/{rldefs.h,complete.c} + - new define RL_QF_OTHER_QUOTE, so _rl_find_completion_word can note + that it found a quoting character other than \'" that appears in + rl_completer_quote_characters + + 5/9 + --- +jobs.c + - save and restore old value of jobs_list_frozen when calling trap + handlers from set_job_status_and_cleanup to avoid seg faults when + running recursive trap handlers + + 5/10 + ---- +builtins/common.h + - new #defines to use for value of changed_dollar_vars (provides + information about the caller who wants to blow away the old dollar + variables) + +builtins/common.c + - changed set_dollar_vars_changed to set changed_dollar_vars to one + of the ARGS_* values depending on the caller and environment + +builtins/source.def + - source restores the positional parameters unless the `set' builtin + was called to specify a new set while not executing a shell function + + 5/13 + ---- +POSIX + - new file, was in CWRU/POSIX.NOTES + +doc/{Makefile.in,Makefile} + - changed `posix' rule to modify ../POSIX + +doc/mkposix + - write to `POSIX' by default + +lib/sh/strtrans.c + - when ansicstr is parsing a format string for `echo -e' (or the + equivalent xpg_echo option is enabled), obey the POSIX-2001/SUSv3 + standard and accept 0-3 octal digits after a leading `0' + +doc/{bash.1,bashref.texi} + - updated `echo' description to note that up to three octal digits + are now accepted following `\0' + + 5/16 + ---- +doc/Makefile.in + - remove the generated documentation on `make distclean' if the + build directory and source directory are not the same + +Makefile.in + - descend into `support' subdirectory on a `make clean' and + `make distclean' + - remove parser-built, y.tab[ch] on a `make distclean' if the build + directory and source directory are not the same + +support/Makefile.in + - support various `clean' targets and remove man2html.o and man2html + +{configure,Makefile}.in + - move values for DEBUG and MALLOC_DEBUG into configure.in; on by + default for development versions; off by default for releases + (off for profiling, too) + + 5/21 + ---- +parse.y + - modified the grammar to allow a simple_list followed by yacc_EOF + to terminate a command. This fixes problems with things like + a backslash-newline at the end of an `eval'd string + - change handle_eof_input_unit() to reset the token state before + calling prompt_again(), in case the prompt to be evaluated contains + a command substitution + + 5/23 + ---- +lib/readline/vi_mode.c + - fix `r' command (rl_vi_change_char) when HANDLE_MULTIBYTE is defined + but MB_CUR_MAX == 1 + + 5/24 + ---- +lib/malloc/watch.c + - don't try to print `file' argument to _watch_warn if it's null + +lib/malloc/malloc.c + - changed guard checking code in internal_{malloc,free,realloc} to + access memory as (char *) and copy into a union instead of + casting and dereferencing a pointer to u_bits32_t, since that + results in unaligned accesses which will cause Sparcs to upchuck + + 5/30 + ---- +[bash-2.05b-beta1 released] + +lib/readline/text.c + - fixed a problem with rl_transpose_chars on systems supporting + multibyte characters with a locale that doesn't have any multibyte + chars + + 6/4 + --- +expr.c + - fix a/=0 and a%=0 to throw evaluation errors rather than core dumps + +lib/readline/display.c + - fix core dump when line wrapping a multibyte character (line + accidentally dropped from the original patch) + +lib/readline/mbutil.c + - fix reversed return value from _rl_is_mbchar_matched; fixes problem + with backward-char-search + + 6/10 + ---- +lib/sh/getenv.c + - fix getenv to not free value returned by find_tempenv_variable + - add setenv, putenv, unsetenv for completeness + + 6/12 + ---- +shell.c + - change init_noninteractive to init expand_aliases to the value of + posixly_correct + - don't initialize expand_aliases to posixly_correct anywhere else. + This allows the -O expand_aliases invocation option to work correctly + +general.c + - fix move_to_high_fd to not try the dup2 unless the fd loop results + in an fd > 3; just return the passed file descriptor otherwise + - use HIGH_FD_MAX, defined in general.h, instead of hard-coded 256 + as highest file descriptor to try + +subst.c + - in process_substitute, call move_to_high_fd with `maxfd' parameter + of -1 instead of 64, so move_to_high_fd will use its maximum + + 6/21 + ---- +lib/malloc/malloc.c + - don't bother calling MALLOC_MEMSET if the requested size is 0 + +builtins/setattr.def + - note in short doc that export and readonly can take assignment + statements as arguments + +error.c + - new function, error_prolog(), to capture common error message + prefix code (except for parser errors) + + 6/25 + ---- +aclocal.m4 + - add tests for standard-conforming declarations for putenv and + unsetenv in system header files + +{configure,config.h}.in + - call BASH_FUNC_STD_PUTENV and BASH_FUNC_STD_UNSETENV, define + HAVE_STD_GETENV and HAVE_STD_UNSETENV, respectively, if they + succeed + +lib/sh/getenv.c + - change putenv and unsetenv to take differing prototypes in + stdlib.h into account + + 6/27 + ---- +[bash-2.05b-beta2 released] + + 6/28 + ---- +builtins/common.c + - fix get_job_spec so that %N works when N is the size of the jobs + list (%8 means job 8, but the 7th member of the jobs array, so + it's OK if N == job_slots because the function returns N-1) + + 7/1 + --- +shell.c + - turn off line editing if $EMACS is set to `t' + + 7/10 + ---- +builtins/set.def + - remove mention of `-i' from long help doc, since it has no effect + + 7/17 + ---- +[bash-2.05b released] + + 7/18 + ---- + +lib/malloc/malloc.c + - make sure that the `free_return' label has a non-empty statement + to branch to + + 7/19 + ---- +locale.c + - only call setlocale() from set_lang() if HAVE_SETLOCALE is defined; + otherwise just return 0 + +lib/readline/mbutil.c + - only try to memset `ps' in _rl_get_char_len if it's non-NULL. Ditto + for _rl_adjust_point + + 7/23 + ---- +execute_cmd.c + - fix for executing_line_number() when compiling without conditional + commands, dparen arithmetic or the arithmetic for command + + + 7/24 + ---- +support/Makefile.in + - fix maintainer-clean, distclean, mostlyclean targets + +builtins/common.c + - fix bug in sh_nojobs where it doesn't pass the right number of args + to builtin_error + +bashline.c + - when using command completion and trying to avoid appending a slash + if there's a directory with the same name in the current directory, + use absolute_pathname() instead of just checking whether the first + char of the match is a slash to catch things like ./ and ../ + +examples/complete/bashcc-1.0.1.tar.gz + - a package of completions for Clear Case, from Richard S. Smith + (http://www.rssnet.org/bashcc.html) + +input.c + - fix check_bash_input to call sync_buffered_stream if the passed fd + is 0 and the shell is currently reading input from fd 0 -- all it + should cost is maybe an additional read system call, and it fixes + the bug where an input redirection to a builtin inside a script + which is being read from stdin causes the already-read-and-buffered + part of the script to be thrown away, e.g.: + + bash < x1 + + where x1 is + + hostname + read Input < t.in + echo $Input + echo xxx + +execute_cmd.c + - in initialize_subshell(), call unset_bash_input (0) to not mess with + fd 0 if that's where bash thinks it's reading input from. Fixes + bug reported by jg@cs.tu-berlin.de on 17 July 2002. Should be a way + to check whether or not the current fd 0 at the time of the call has + not been redirected, like in the bug report. Also might eventually + want to throw in a sync_buffered_stream if bash is reading input + from fd 0 in a non-interactive shell into a buffered stream, so the + stream is sync'd -- might be necessary for some uses + + 7/25 + ---- +lib/readline/signals.c + - make sure rl_catch_sigwinch is declared even if SIGWINCH is not + defined, so the readline state saving and restoring functions in + readline.c are always the same size even if SIGWINCH is not defined, + and undefined references don't occur when SIGWINCH is not defined + + 7/30 + ---- +bashline.c + - augment patch from 7/24 to not disable rl_filename_completion_desired + if the first char of the match is `~' + +lib/readline/bind.c + - when creating `shadow' keymaps `bound' to ANYOTHERKEY, don't bind + a key whose type is ISFUNC but whose function is the `fake' + rl_do_lowercase_version (fixes debian bash bug #154123) + +lib/readline/readline.c + - don't call _rl_vi_set_last from _rl_dispatch_subseq if + key == ANYOTHERKEY (when truncated to `sizeof(char)', it will be 0, + which strchr will find in `vi_textmod') + + 7/31 + ---- +lib/readline/input.c + - fix rl_gather_tyi to only slurp up one line of available input, even + if more than one line is available (fixes debian bash bug #144585) + + 8/3 + --- +bashline.c + - better fix for command completion problem -- test for directory + explicitly with test_for_directory before turning off + rl_filename_completion_desired, since that's the case we're trying + to protect against + + 8/5 + --- +include/shmbutil.h + - fix ADVANCE_CHAR macro to advance the string pointer if mbrlen + returns 0, indicating that the null wide character (wide string + terminator) was found (debian bash bug #155436) + +lib/readline/mbutil.c + - fix _rl_adjust_point to increment the string pointer if mbrlen + returns 0 + +support/shobj-conf + - fix for the `-install_name' value in SHLIB_XLDFLAGS assignment for + Darwin from the fink folks + + 8/6 + --- +builtins/exit.def + - broke code that runs ~/.bash_logout out into a separate function: + bash_logout() + +builtins/common.h + - extern declaration for bash_logout() + +eval.c + - call bash_logout() from alrm_catcher(), so timed-out login shells + run ~/.bash_logout before processing the exit trap + +lib/sh/strtrans.c + - implemented $'\x{hexdigits}' expansion from ksh93 + +configure.in + - define RECYCLES_PIDS in LOCAL_CFLAGS for cygwin; don't bother to + link with -luser32 + +examples/loadables/strftime.c + - new loadable builtin, interface to strftime(3) + + 8/7 + --- +parse.y + - parse_arith_cmd now takes a second argument, a flag saying whether + or not to add double quotes to a parsed arithmetic command; changed + callers + - changed parse_dparen so it tells parse_arith_cmd to not add the + double quotes and therefore doesn't need to remove them + - change parse_dparen to add W_NOGLOB|W_NOSPLIT|W_QUOTED flags to word + created when parsing (( ... )) arithmetic command, since the double + quotes are no longer added + +make_cmd.c + - in make_arith_for_expr, set the flags on the created word to + W_NOGLOB|W_NOSPLIT|W_QUOTED + +execute_cmd.c + - change execute_arith_command to expand the expression with + expand_words_no_vars, like the arithmetic for command code does + - fix execute_arith_command to handle the case where the expanded + expression results in a NULL word without crashing + +tests/{arith-for,cprint}.tests + - change expected output to account for no longer adding quotes to + ((...)) commands + + 8/8 + --- +print_cmd.c + - take out the space after printing the `((' and before printing the + `))' in print_arith_command, print_arith_for_command, and + xtrace_print_arith_cmd + +tests/{arith-for,cprint}.tests + - change expected output to account for no longer adding leading and + trailing spaces when printing ((...)) and arithmetic for commands + + 8/17 + ---- +subst.c + - fix issep() define to handle case where separators[0] == '\0', in + which case it always returns false + +lib/readline/histexpand.c + - fix off-by-one error in history_expand_internal when using the `g' + modifier that causes it to skip every other match when matching a + single character (reported by gjyun90@resl.auto.inha.ac.kr) + +doc/{bash.1,bashref.texi} + - make sure that the name=word form of argument to declare/typeset, + export, and readonly is documented in the description + + 8/30 + ---- +lib/readline/histexpand.c + - make history_expand_internal understand double quotes, because + single quotes are not special inside double quotes, according to + our shell-like quoting conventions. We don't want unmatched + single quotes inside double-quoted strings inhibiting history + expansion + - make `a' modifier equivalent to `g' modifier for compatibility with + the BSD csh + - add a `G' modifier that performs a given substitution once per word + (tokenized as the shell would do it) like the BSD csh `g' modifier + + 8/31 + ---- +braces.c + - when compiling for the shell, treat ${...} like \{...} instead of + trying to peek backward when we see a `{'. This makes it easier + to handle things like \${, which should be brace expanded because + the $ is quoted + + 9/7 + --- +aclocal.m4 + - redirect stdin from /dev/null in BASH_CHECK_DEV_FD before testing + the readability of /dev/fd/0, so we're dealing with a known quantity + + 9/11 + ---- +[prayers for the victims of 9/11/01] + +shell.c + - fix maybe_make_restricted to handle a restricted login shell with a + base pathname of `-rbash' and skip over any leading `-' + + 9/13 + ---- +builtins/evalstring.c + - in parse_and_execute, make sure we don't try to run unwind-protects + back to `pe_dispose' after a longjmp back to top_level if the + pe_dispose frame hasn't been initialized + +lib/readline/display.c + - fix problem with prompt overwriting previous output when the output + doesn't contain a newline in a multi-byte locale. This also should + fix the problem of bash slowing down drastically on long lines when + using a multi-byte locale, because it no longer tries to rewrite the + entire line each time. Patch from Jiro SEKIBA + +parse.y + - move the typedef for alias_t that is compiled in if ALIAS is not + defined up before the prototype for push_string, since that takes + an alias_t * parameter + +lib/readline/terminal.c + - bind the termcap description's left and right arrow keys to + rl_backward_char and rl_forward_char, respectively, instead of + rl_forward and rl_backward (which are just there for backwards + compatibility) + +aclocal.m4 + - when testing readability of /dev/stdin, redirect stdin from /dev/null + to make sure it's a readable file + + 9/17 + ---- +config-bot.h + - don't test __STDC__ when deciding whether or not to use stdarg.h; + just use it if it's present + +tests/read2.sub + - redirect from /dev/tty when using `read -t' + + 9/20 + ---- +builtins/history.def + - when reading `new' entries from the history file with `history -n', + fix increment of history_lines_this_session by taking any change + in history_base into account + +lib/sh/pathphys.c + - changes to sh_physpath to deal with pathnames that end up being + longer than PATH_MAX without dumping core + +lib/readline/doc/{history.3,hsuser.texinfo},doc/ bash.1 + - documented new `a' and `G' history modifiers + + 9/25 + ---- +lib/readline/misc.c + - when traversing the history list with arrow keys in vi insertion + mode, put the cursor at the end of the line (like in emacs mode) + +mksyntax.c + - don't try to use \a and \v unless __STDC__ is defined; use the + ascii integer equivalents otherwise + - include "config.h" in the generated syntax.c file for a possible + definition of `const' + +doc/{bash.1,bashref.texi} + - document the meaning of a null directory in $PATH + + 9/26 + ---- +parse.y + - fix set_line_mbstate to handle case where mbrlen() returns 0, + indicating the null wide character + - fix set_line_mbstate so we don't directly compare a char variable + to EOF, since char can (and is) unsigned on some machines + +bashline.c + - change bash_execute_unix_command to save a little bit more state: + last_shell_builtin, this_shell_builtin, last_command_exit_value + + 9/27 + ---- +execute_cmd.c + - tentative change to execute_simple_command to avoid freeing freed + memory in the case where bash forks early but still ends up calling + execute_disk_command, without passing newly-allocated memory to + make_child. This may fix the core dumps with the linux-from-scratch + folks + + 9/28 + ---- +Makefile.in,{builtins,lib/sh}/Makefile.in + - fix up dependencies, mostly on ${BUILD_DIR}/version.h, so that + parallel makes work with GNU and BSD makes + +shell.h + - new struct to save partial parsing state when doing things like + bash_execute_unix_command and other operations that execute + commands while a line is being entered and parsed + +parse.y + - new functions, save_parser_state() and restore_parser_state(), to + save and restore partial parsing state + +bashline.c + - change bash_execute_unix_command to call {save,restore}_parser_state + +builtins/jobs.def + - change execute_list_with_replacements to eliminate a run_unwind_frame + in favor of calling the cleanup explicitly and discarding the frame + +execute_cmd.c + - change execute_for_command to avoid a run_unwind_frame in the case + where the loop variable is readonly or otherwise not assignable + - change execute_select_command and execute_simple_command to use + discard_unwind_frame by running the cleanup code explicitly, instead + of using run_unwind_frame + - make sure execute_select_command decreases loop_level even on error + + 9/30 + ---- +doc/{bash.1,bashref.texi} + - fixed description of `unset' now that unsetting a previously-unset + variable is no longer an error + + 10/3 + ---- +{configure,config.h}.in + - augment check for strtold with additional check to detect the + horribly broken hp/ux 11.x implementation that returns `long_double'; + defines STRTOLD_BROKEN if so + +builtins/printf.def + - define floatmax_t as `double' if STRTOLD_BROKEN is defined + + 10/5 + ---- +lib/readline/keymaps.c + - don't automatically bind uppercase keys to rl_do_lowercase_version + in rl_make_bare_keymap + +lib/readline/readline.c + - explicitly check for ANYOTHERKEY binding to rl_do_lowercase_version + and dispatch to lowercase of key when a prefix is not matched + + 10/12 + ----- +bashline.c + - set COMP_WORDBREAKS in enable_hostname_completion to the value + of rl_completer_word_break_characters + +variables.c + - new special variable COMP_WORDBREAKS, controls the value of + rl_completer_word_break_characters + +variables.h + - new extern declaration for sv_comp_wordbreaks() + +subst.c + - change split_at_delims to behave more like shell word splitting if + the passed value for the delimiters is NULL, indicating that the + function is to use $IFS to split + +{execute_cmd,jobs,test,findcmd,input,make_cmd,redir,shell}.c +builtins/mkbuiltins.c,builtins/{fc,history,source,umask}.def +lib/sh/netconn.c +lib/termcap/termcap.c +lib/readline/histfile.c + - make sure all inclusions of are protected by + HAVE_SYS_FILE_H + +bashline.c + - don't turn off rl_filename_completion_desired in + attempt_shell_completion if the partial pathname contains a slash. + This still doesn't solve the problem of partial pathname completion + starting with a directory in the current directory without a + leading `./'. There's no way to tell the difference between that + and a file found in $PATH (which may contain `.') at the point that + attempt_shell_completion acts + + 10/18 + ----- +locale.c + - don't set lc_all to the default locale when LC_ALL is being unset + - new function, reset_locale_vars(), called to recompute the correct + locale variable values when LC_ALL is unset + - changed set_lang to not set LC_ALL, which it never should have been + doing in the first place, and to maintain a local variable `lang' + corresponding to $LANG + - change get_locale_var to use the precedence posix.2 specifies: + LC_ALL overrides individual variables; LANG, if set, is the default + - change set_locale_var to call get_locale_var to get the appropriate + value for the variable being set or unset + - call get_locale_var instead of using passed value in set_locale_var + to get the defaulting and precedence right + +lib/readline/nls.c + - new function, _rl_get_locale_var(), which does the same thing as + locale.c:get_locale_var(), with the right precedence and defaulting, + using sh_get_env_value to get the right bash variable values + - if HAVE_SETLOCALE is defined, _rl_init_eightbit first calls + _rl_get_locale_var to get the right value for LC_CTYPE, and uses + that in the call to setlocale. If _rl_get_locale_var returns NULL, + call setlocale() to get the current international environment, and, + finally, if that returns null, call setlocale with a second argument + of "" to force the implementation's `native' environment + +pcomplete.c + - change gen_wordlist_completions to dequote the text before comparing + it against the expanded word list + - changed gen_matches_from_itemlist to do the same thing + +bashline.c + - new global function, bash_dequote_word, calls bash_dequote_filename + on the text passed. Used by the programmable completion code + +lib/readline/histfile.c + - make sure that whenever read_history_range returns a non-zero value + that it sets errno to some useful value + + 10/19 + ----- +variables.c + - COMP_WORDBREAKS is now a dynamic variable, mirroring value of + rl_completer_word_break_characters. Makes sure that the variable + always points to dynamic memory if it's not null or the readline + default + +bashline.c + - change enable_hostname_completion to manage a dynamic value of + rl_completer_word_break_characters, since assignments to + COMP_WORDBREAKS can change its value unpredictably + +lib/readline/{complete.c,readline.h} + - rl_completer_word_break_characters no longer has `const' attribute + +bashline.c + - clean up necessary places due to rl_completer_word_break_characters + no longer being `const' + +doc/{bash.1,bashref.texi} + - document new COMP_WORDBREAKS variable + + 10/21 + ----- +print_cmd.c + - fix indirection_level_string to handle the case where the decoded + $PS4 is null without seg faulting + + 10/22 + ----- +builtins/shift.def + - make sure that there is actually an argument when reporting a shift + count that exceeds the number of positional paramters and + shift_verbose is enabled + +lib/readline/rltty.c + - change SET_SPECIAL to call a new function, set_special_char, since + it contains a block. It's called infrequently, so the performance + impact of making it a function should be negligible, and it helps + debugging + + 10/29 + ----- +bashline.c + - make sure the editor in VI_EDIT_COMMAND and EMACS_EDIT_COMMAND is + quoted; it might contain spaces (e.g., `emacs -nw') + +aclocal.m4 + - cache ac_cv_rl_version in RL_LIB_READLINE_VERSION macro + +configure.in + - change logic that sets RL_INCLUDEDIR so that it doesn't try to set + a bogus include path if the argument to --with-installed-readline + is `yes' -- helps with cross-compiling + +lib/readline/histexpand.c + - fix history_tokenize_word so that it handles <( and >( better + + 10/30 + ----- +redir.c + - fix write_here_string so it handles the case where `herestr' expands + to NULL without seg faulting + + 10/31 + ----- +mailcheck.c + - reverse logic flip from bash-2.05 that handled systems that don't + change the atime when the mailbox is accessed; make sure the file + is bigger before we report new mail. This is the case in the vast + majority of cases. Reported by jim@jtan.com + + 11/5 + ---- +parse.y + - change action for `for x; { list; }' and corresponding `select' + production to use \"$@\" instead of just $@, as it is with all the + other actions + + 11/9 + ---- +parse.y + - new flag for parse_matched_pair: P_DQUOTE, indicating that the + pair of characters being matched is between double quotes + - parse_matched_pair now passes P_DQUOTE down to recursive calls: + if the open char to be matched is a `"' or the passed-in flags + include P_DQUOTE, set the local `rflags' variable to P_DQUOTE and + pass `rflags' down to recursive calls + - if `rflags' includes P_DQUOTE, don't try to ansiexpand $'...' or + locale expand $"..."; consistent with other quoting constructs + + 11/11 + ----- +doc/{bash.1,bashref.texi} + - explicitly note that variables referenced in arithmetic expressions + without using `$' evaluate to 0 if they are null or unset + - note that a null variable value evaluates to 0 when used in an + arithmetic context, like when a variable with the `-i' attribute is + assigned a null value + - document the ${!prefix@} expansion as equivalent to ${!prefix*} + + 11/12 + ----- +doc/{bash.1,bashref.texi} + - note that the value of an arithmetic expression is as in C + - change the wording to note that `arithmetic evaluation' (not + arithmetic expansion, which has a different meaning) is performed + on the value assigned to a variable whose integer attribute is set + + 11/13 + ----- +execute_cmd.c + - fix execute_disk_command so it calls exit() after printing the error + message in a restricted shell context if the shell has already forked + (nofork != 0 && there are no pipes) + + 11/19 + ----- +builtins/type.def + - don't report on aliases unless expand_aliases is set and the parser + is performing alias expansion; changed tests/type.tests and + tests/type.right accordingly + + 11/25 + ----- +general.c + - fix for full pathnames including drive letters on cygwin from + Corinna (convert to posix-style paths, which the rest of the + code handles much better) + +lib/readline/text.c + - fixes to overwrite mode from jimmy@is-vn.bg: + o in _rl_overwrite_char, do the overwrite mode self-insert + as one group, even when overwriting more than 1 char + o in _rl_overwrite_char, do the insert before the delete so + that an undo positions the cursor on the character restored, + not to the right of it + o in _rl_overwrite_rubout, don't do rl_insert_char(' ') unless + rl_point < rl_end. Since overwrite-mode self-insert acts as + in insert-mode when at eol, make rubout behave like + insert-mode rubout + + 11/30 + ----- +lib/readline/misc.c + - call rl_replace_line with `1' as second parameter if we're going to + immediately overwrite the undo list + +lib/readline/search.c + - in make_history_line_current, use _rl_replace_text to make the line + replacement an undoable operation. Affects all non-incremental + search functions. + +parse.y + - make behavior introduced on 11/9 dependent on extended_quote + variable, controllable by extquote shopt option. Default setting is + on for backwards compatibility + +builtins/shopt.def + - new `extquote' option to control extended_quote variable + + 12/3 + ---- +jobs.c + - change message printed when attempting to put a background job in + the background with `bg' to include the job id and make the + statement declarative + + 12/10 + ----- +bashhist.h + - define explicit flag values for history_control + +variables.c + - change sv_history_control to use new flag values + - change sv_history_control to parse $HISTCONTROL as a colon-separated + list of values for the history_control variable + +bashhist.c + - change check_history_control to use new flag values and restructure + to remove case statement + - new function hc_erasedups(line); removes all entries matching LINE + from the history list + - call hc_erasedups() from check_add_history after we've determined + that we're saving the line + +doc/{bash.1,bashref.texi} + - documented new options available for $HISTCONTROL and that it can + be a colon-separated list of history control options + + 12/11 + ----- +subst.c + - fix pat_subst() to not increment `e' (pointer to the end of the + matched portion of the string) until after we're sure we're going + around the loop again; fixes problem with empty replacements for + a pattern that doesn't match (bug reported by Don Coleman + ) + + 12/17 + ----- +lib/readline/display.c + - fixes to multibyte redisplay from jir@yamato.ibm.com (Jiro SEKIBA): + o speed up calculation of first difference between old and new + lines in the common case + o don't try to see if we're in the middle of a multbyte char + in update_line (we'll see how this one works out) + + 12/18 + ----- +doc/bashref.texi + - make it clear that the `command-list' function definition may be + terminated by an ampersand before the closing brace + + 12/28 + ----- +redir.c + - set `expanding_redir' flag when expanding words in a redirection + +subst.c + - new function, exp_jump_to_top_level(), to do any word expansion + cleanup before a call to jump_to_top_level from within that file; + sets expanding_redir back to 0 before jump_to_top_level + +variables.c + - in find_variable(), don't call find_variable_internal with a second + parameter of 1 if expanding_redir is non-zero + - in find_variable_internal(), don't search the temporary env if + subshell_environment includes SUBSHELL_FORK (indicating a simple + command) and expanding_redir is non-zero + +parse.y + - increment line_number when we read a \ pair + +array.c + - added array_unshift_element and array_shift_element (which just call + array_shift and array_rshift, respectively), for bash debugger + support + + 1/4/2003 + -------- +doc/{bash.1,bashref.texi} + - note in the section describing the execution environment passed to + children that subshells inherit shell functions marked for export + - note in the section describing shell functions the possibility + that exported functions may result in two entries in the environment + with the same name + +parse.y + - when pushing an alias expansion onto the pushed_string list, append + a space to the expanded definition to make the parser's lookahead + work without using the `mustpop' hack in shell_getc + + 1/8 + --- +shell.c + - change calls to exit() with EX_USAGE as a parameter to use + EX_BADUSAGE instead, since EX_USAGE is defined as 258 and is + technically out of range + + 1/14 + ---- +aclocal.m4 + - check for the termcap functions in libc first: if we don't have + to link in another library, let's not do it + - change the test for mbstate_t to use AC_TRY_COMPILE instead of + AC_TRY_RUN + +doc/{bash.1,bashref.texi} + - document that bash turns line editing off if environment variable + EMACS is set to `t' when it starts up + +doc/bash.1 + - minor change to give the ftp url for the latest version of bash in + the bug reports section + +lib/readline/histexpand.c + - in get_history_event, cast a couple of `const char *' variables to + `char *' in function call parameter lists to avoid compiler warnings + + 1/21 + ---- +builtins/cd.def + - change `cd -' so it prints the current working directory after a + successful chdir even when the shell is not interactive + + 1/31 + ---- +lib/readline/doc/rltech.texinfo + - clarified exactly what is meant by the term `application-specific + completion function', made its use consistent, and documented + what variables are changed before such a function is called + +lib/readline/input.c + - new function, _rl_pushed_input_available(), returns non-zero if + there are characters in the input queue managed by rl_get_char + and _rl_unget_char + +lib/readline/rlprivate.h + - new extern declaration for _rl_pushed_input_available + +lib/readline/callback.c + - change rl_callback_read_char to check _rl_pushed_input_available + and loop if there's something there, so characters don't languish + until more keyboard input is read + +execute_cmd.c + - new variable, last_command_exit_signal, non-zero if + last_command_exit_value result from wait_for was result of a signal + +nojobs.c + - keep track of whether or not a given pid was killed by a signal with + a new flag in the pid_list array + - new function int find_termsig_by_pid(pid_t pid) to get the + terminating signal, if any, for a particular pid + - new function int get_termsig(WAIT status) returns the terminating + signal corresponding to status + - set last_command_exit_signal in wait_for and the various wait_for_xx + functions + +jobs.c + - new functions, process_exit_signal and job_exit_signal, return the + signal that killed a given process or job, if a signal caused its + death + - set last_command_exit_signal in wait_for by calling job_exit_signal + or process_exit_signal appropriately + +subst.c + - don't resend SIGINT to ourselves unless last_command_exit_signal is + SIGINT and last_command_exit_value == 128 + SIGINT. This fixes the + $(exit 130) bug reported by Paul Jarc + +expr.c + - new function, expr_bind_variable, calls bind_int_variable and + then stupidly_hack_special_variables. This fixes the + `let OPTIND=1' bug + +bashline.c + - change history_and_alias_expand_line and shell_expand_line to call + history_expand_line_internal so calls to pre_process_line are + localized + - change history_expand_line_internal and cleanup_expansion_error to + temporarily turn off hist_verify before calling pre_process_line + to avoid the effects described by teirllm@dms.auburn.edu + +parse.y + - don't unconditionally turn off PST_ALEXPNEXT in push_string. This + fixes the multiple alias expansion bug reported by Paul Jarc. + +lib/readline/vi_mode.c + - change rl_vi_subst to push `l' instead of ` ' -- it should be + equivalent, but this has been reported to fix a problem in multibyte + locales + +lib/readline/readline.h + - new state flag value RL_STATE_TTYCSAVED, indicates that save_tty_chars + has been called. Since it's only used and visible internally, it's + undocumented + +lib/readline/rltty.h + - changed all of the members of _rl_tty_chars struct to `unsigned char' + +lib/readline/rltty.c + - set the RL_STATE_TTYCSAVED after save_tty_chars is called + - new function, rl_tty_unset_default_bindings(), resets bindings for + everything rl_tty_set_default_bindings() messes with back to + rl_insert, so rl_tty_set_default_bindings can be called again with + possible changes + - new function that does the bulk of the work for + rltty_set_default_bindings: _rl_bind_tty_special_chars() + - change prepare_terminal_settings so that it can track changes to the + terminal special chars made by stty(1): unset the bindings with + rl_tty_unset_default_bindings before calling save_tty_chars, and + _rl_tty_set_default_bindings after, with the new values from + get_tty_settings(). This implements a long-standing request, most + recently made by Tim Waugh of Red Hat. + +lib/readline/readline.h + - extern declaration for rl_tty_unset_default_bindings() + +lib/readline/readline.c + - new function, reset_default_bindings, calls + rl_tty_unset_default_bindings() to reset the terminal special chars + back to rl_insert and then read the new ones + +lib/readline/doc/rltech.texinfo + - documented rl_tty_unset_default_bindings() + + 2/1 + --- +[prayers and condolences to the families of the space shuttle crew members] + +aclocal.m4 + - add checks for mbrtowc and mbrlen in BASH_CHECK_MULTIBYTE + - new check, BASH_FUNC_CTYPE_NONASCII, checks whether or not the ctype + functions handle non-ascii characters correctly + +config.h.in + - add HAVE_MBRTOWC and HAVE_MBRLEN + - add NO_MULTIBYTE_SUPPORT for new configure argument + - add CTYPE_NON_ASCII + +config-bot.h, lib/readline/rlmbutil.h + - make sure that mbrtowc, mbrlen, and wcwidth are all present before + turning on HANDLE_MULTIBYTE + - turn off multibyte chars if NO_MULTIBYTE_SUPPORT is defined + +configure.in + - new argument --enable-multibyte (enabled by default), allows + multibyte support to be turned off even on systems that support it + +lib/readline/chardefs.h + - define NON_NEGATIVE as 1 if CTYPE_NON_ASCII is defined + + 2/3 + --- +config.h.in + - add HAVE_WCTOMB + +aclocal.m4 + - check for wctomb in BASH_CHECK_MULTIBYTE + + 2/4 + --- +lib/readline/vi_mode.c + - in _rl_vi_change_mbchar_case, make sure the result from wctomb() + is NULL-terminated before trying to insert it with rl_insert_text() + + 2/5 + --- +lib/readline/display.c + - fix to update_line to avoid problems on systems with multibyte + characters when moving between history lines when the new line + has more glyphs but fewer bytes (twaugh@redhat.com) + +lib/readline/vi_mode.c + - use wcrtomb() instead of wctomb() in _rl_vi_change_mbchar_case + +pcomplete.c + - fix init_itemlist_from_varlist to handle the case where the + `varlist' is NULL + +doc/{bash.1,bashref.texi} + - clarified when a simple command may fail without the shell exiting + when -e is set + + 2/13 + ---- +parse.y + - when bash is started with --nolineediting, ignore \[ and \] when + decoding the prompt string + +subst.c + - fix remove_quoted_nulls so that a string with a CTLESC appearing + after a CTLNUL (which was removed) does not leave characters in + the string inappropriately + + 2/14 + ---- +builtins/common.h + - new flag value for parse_and_execute(): SEVAL_RESETLINE, which + allows the caller to specify whether or not the internal idea + of the line number should be reset to 1 + +builtins/evalstring.c + - parse_and_execute() now tells push_string to reset the line + number only if the SEVAL_RESETLINE flag is set by the caller + + 2/15 + ---- +builtins/evalfile.c + - pass SEVAL_RESETLINE from _evalfile() to parse_and_execute() + +subst.c + - if the shell is currently interactive, pass SEVAL_RESETLINE to + parse_and_execute() when doing command substitution + +jobs.c + - add SEVAL_RESETLINE to parse_and_execute while running SIGCHLD trap + +command.h + - add `line' members to case_com, for_com, select_com + - rearranged order of members in some of the command structs, so + `flags' and `line' are first + - added a `source_file' member to the function_def struct; keeps + track of where the function was defined + +doc/Makefile.in + - add some new suffix rules: .dvi.ps + +doc/{bash.1,bashref.texi} + - added text to the description of the `trap' builtin tightening up + the language describing when the ERR trap will be run + +error.c + - if $BASH_SOURCE (internally-maintained) exists, use BASH_SOURCE[0] + in get_name_for_error if the shell is not interactive + +array.h + - new convenience defines: array_push and array_pop + +variables.c + - change get_funcname to return this_shell_function->name only if + arrays have not been compiled into the shell + - change init_funcname_var to initialize FUNCNAME as an array variable + if we have arrays + - new function: get_self(SHELL_VAR *self), a degenerate `dynamic_value' + function for dynamic variables + - new function: init_dynamic_array_var(), a generic dynamic array + variable initializer to handle the common case + - use init_dynamic_array_var() instead of explicit init_dirstack_var() + - use init_dynamic_array_var() instead of explicit init_groups_var() + - new dynamic array variables: BASH_ARGC, BASH_ARGV, BASH_SOURCE, + BASH_LINENO, initialized with init_dynamic_array_var + +shell.c + - initialize BASH_LINENO, BASH_SOURCE, FUNCNAME in open_shell_script + +{execute_cmd,trap}.c + - take out trap_line_number, since parse_and_execute doesn't reset the + line number any more when running the trap commands + +make_cmd.c + - augment make_function_def to get source file name and call + bind_function_def to save the entire FUNCTION_DEF + +variables.c + - new hash table: shell_function_defs, keeps table of shell function + definitions including source file and line number info corresponding + to shell_functions table + - new functions: find_function_def and bind_function_def to manage + the shell_function_defs hash table + - new function: unbind_function_def to remove a function definition + from the shell_function_defs table (right now uncalled) + +variables.h + - extern declaration for bind_function_def, find_function_def + - new extern declaration for unbind_function_def + +execute_cmd.c + - in function prologue and epilogue, push and pop FUNCNAME, + BASH_SOURCE, and BASH_LINENO information + +dispose_cmd.c + - broke the code that disposes a FUNCTION_DEF out into two new + functions: dispose_function_def and dispose_function_def_contents + +dispose_cmd.h + - new extern declarations for dispose_function_def_contents and + dispose_function_def + +copy_cmd.c + - move body of copy_function_def (other than allocating a new + FUNCTION_DEF) to copy_function_def_contents + - make sure to copy the new source_file member of a function_def in + copy_function_def_contents + - copy_function_def is no longer static, copy_function_def_contents + is not either + +command.h + - new extern declaration for copy_function_def_contents and + copy_function_def + +parse.y + - keep a stack of line numbers where case, select, and for commands + start, with a maximum nesting level of 128; increment when reading + word after `for', `select' or `case' in read_token_word; decrement + in grammar actions after parsing a complete for, arith_for, select, + or case command + - create for, case, arith_for, and select commands with an extra + line number (word_lineno[word_top]) argument + +make_cmd.c + - make_for_or_select, make_for_command, make_case_command, and + make_select_command all take an extra `line_number' argument + +make_cmd.h + - corresponding changes to extern declarations for those functions + + 2/16 + ---- +{execute_cmd,shell,variables}.c + - follow each call to remember_args with a call to push_args or + pop_args to manage the BASH_ARGV and BASH_ARGC arrays. Only set + when the shell is started to run shell script or runs a shell + function. Doesn't handle `set' or `shift' yet, nor `source'. + +execute_cmd.c + - keep track of the level of subshells with a new variable, manipulated + in execute_in_subshell + - set currently_executing_command in execute_command_internal(), + even if we're running a trap + - better line number management when executing simple commands, + conditional commands, for commands in execute_command_internal() + and the various functions that implement the commands + (execute_cond_command, execute_for_command, execute_etc.) + +variables.c + - new dynamic variable BASH_SUBSHELL, with new get_subshell and + assign_subshell functions to manipulate it + - new functions push_args (WORD_LIST *list) and pop_args (void) to + manage the BASH_ARGC and BASH_ARGV dynamic array variables + +variables.h + - new extern declarations for push_args and pop_args + +builtins/evalfile.c + - in _evalfile, do appropriate things to the FUNCNAME, BASH_ARGV, + BASH_ARGC, BASH_SOURCE, and BASH_LINENO variables + +support/mksignames.c + - add another fake signal for `trap'; make NSIG+2 == `RETURN' + +trap.c + - _run_trap_internal now returns an int: the exit value of the command + run as the result of the trap + - run_debug_trap now returns an int: the exit value of the command + run as the result of the trap + - RETURN is a new special trap + - new function: set_return_trap(char *command) interface for the rest + of the shell, like set_{debug,error}_trap + - new function: run_return_trap() + - command substitution and other child processes don't inherit the + return trap + +trap.h + - new extern declaration for set_return_trap() and run_return_trap + - new defines for RETURN_TRAP; increment BASH_NSIG + - change extern declaration for run_debug_trap() since it now returns + an int + +shell.c + - new invocation long option: --debugger, turns on debugging and + sets internal `debugging_mode' variable + +execute_cmd.c + - new code to save return trap when executing a shell function, so + shell functions don't inherit it + - run debug trap before binding the variable and running the action + list in a `for' command + - run debug trap before binding the selection variable and running + the query in a `select' command + - run debug trap before running matcher in a `case' command + +builtins/set.def + - new `set -o functrace' (set -T), causes DEBUG trap to be inherited + by shell functions + - new `set -o errtrace' (set -E), causes ERR trap to be inherited + by shell functions + +flags.c + - new flags -E and -T, control error_trace_mode and + function_trace_mode respectively + +flags.h + - new extern declarations for error_trace_mode and function_trace_mode + + 2/17 + ---- +doc/bashref.texi + - changed the `dircategory' as per Karl Berry's suggestion + +doc/texinfo.tex + - update to version of 2003/02/04 from texinfo.org + +support/texi2dvi + - update to version 1.14 from texinfo-4.5 distribution + + 2/20 + ---- +support/config.{guess,sub} + - update to versions of 2002/11/30 + +lib/readline/doc/manvers.texinfo + - renamed to version.texi to match other GNU software + - UPDATE-MONTH variable is now `UPDATED-MONTH' + +lib/readline/doc/{hist,rlman,rluserman}.texinfo + - include version.texi + +doc/version.texi + - new file, with standard stuff matching other GNU distributions + +{doc,lib/readline/doc}/Makefile.in + - include right stuff for `version.texi' + +lib/readline/doc/{rluserman,rlman,hist}.texinfo + - use @copying and @insertcopying and @ifnottex instead of @ifinfo + - add FDL as an appendix entitled `Copying This Manual' + +lib/readline/doc/{rltech,rluser,hstech,hsuser}.texi + - changed the suffix from `texinfo' to `texi' + +lib/readline/doc/{rlman,rluserman}.texinfo, doc/bashref.texi + - include rltech.texi,rluser.texi,hstech.texi, and hsuser.texi + +lib/readline/doc/Makefile.in,doc/Makefile.in + - made appropriate changes for {{rl,hs}tech,{rl,hs}user}.texi + +lib/readline/doc/{rlman,rluserman}.texinfo + - changed the suffix from `texinfo' to `texi' + +lib/readline/doc/hist.texinfo + - renamed to history.texi + + 2/25 + ---- +pathnames.h.in + - moved pathnames.h here so value of DEBUGGER_START_FILE can be + substituted by configure + +aclocal.m4 + - added AM_PATH_LISPDIR for debugger + +configure.in + - added some variables: `bashvers', `relstatus' to use info in more + than one place + - call AM_PATH_LISPDIR + - new option: --enable-debugger, sets DEBUGGER cpp option + - new option with AC_ARG_VAR: DEBUGGER_START_FILE + - make `pathnames.h' a file generated by configure + +Makefile.in + - add rule to create pathnames.h + +builtins/declare.def + - added extra line number and source file name to `declare -F' output + if `--debugger' is used at startup + +builtins/evalfile.c + - call run_return_trap from source_file before returning the result + from _evalfile() + +execute_cmd.c + - call run_return_trap in execute_function before restoring the old + context + +builtins/source.def + - arrange to save and restore DEBUG traps when sourcing files if + function_trace_mode (set -o functrace) is not set + +print_cmd.c + - broke print_for_command, print_select_command, print_case_command + into two functions each: one to print the `header' and one for + the body + - print_cond_command is no longer static + - print_arith_command now takes a WORD_LIST *, since it doesn't + actually do anything with the ARITH_COM it's passed except print + the enclosed WORD_LIST + - print_arith_command is no longer static + +externs.h + - extern declarations for print_{for,select,case}_command_head, + print_cond_command, print_arith_command + +{.,builtins,lib/sh}/Makefile.in + - corrected dependencies on pathnames.h, since it's now created in + the build directory + + 3/5 + --- +lib/glob/glob.c + - handle alloca() failing (it's supposed to return NULL) + - use malloc() (with its attendent bookkeeping) instead of alloca() + in glob_filename() + +subst.c + - check whether shell_glob_filename returns NULL in + glob_expand_word_list + - change parameter_brace_expand_rhs to handle cases like + ${a[2]:=value} by properly creating the array element instead of a + variable named `a[2]' (reported by ) + +variables.c + - change bind_int_variable to use valid_array_reference instead + of looking for `[' + +lib/readline/vi_mode.c + - check for `a' in _rl_vi_done_inserting so the text inserted by an + `a' command can be reinserted with a `.' + +lib/readline/readline.c + - when entering vi insertion mode in readline_internal_setup(), make + sure that _rl_vi_last_key_before_insert is set to `i' so that undo + groups and redo work better (reported by ) + +lib/glob/sm_loop.c + - handle ?(...) in a pattern immediately following a `*', instead of + ignoring the `(' and treating the `?' as a single-char match, as + long as FNM_EXTFLAG is set (reported by ) + +aclocal.m4 + - new test for presence of struct timezone, BASH_STRUCT_TIMEZONE + +config.h.in + - add HAVE_STRUCT_TIMEZONE + +configure.in + - call BASH_STRUCT_TIMEZONE + +execute_cmd.c + - don't try to use `struct timezone' in calls to gettimeofday unless + HAVE_STRUCT_TIMEZONE is defined; use (void *)NULL otherwise + + 3/20 + ---- +execute_cmd.c + - new variable, the_printed_command_except_trap, saves the command + being executed before a trap is executed, for the debugger + +trap.c + - if in debugging mode, let command substitutions and other child + processes inherit the DEBUG and ERR traps if the `functrace' + (which is really a bad name, given this semantic) or `errtrace' + options, respectively, have been set + +shell.c + - local_pending_command renamed to command_execution_string; no longer + static + +variables.c + - new dynamic variable, BASH_COMMAND, set to the command string + currently executing, or the one that caused a trap to execute + (mapped to the_printed_command_except_trap) + - new variable, BASH_EXECUTION_STRING, set to the argument to the + -c invocation option, if the shell was started that way + + 3/22 + ---- +execute_cmd.c + - changed execute_for_command, eval_arith_for_expr, + execute_select_command, execute_arith_command, execute_cond_command, + execute_simple_command to implement new DEBUG trap semantics + for the debugger: if the DEBUG trap commands return a non-zero + status and debugging_mode is non-zero, we skip the command to be + executed + +trap.c + - change run_debug_trap for the debugger: if we're in the debugger + and the DEBUG trap returns 2 while we're in a function or sourced + script, we force a `return' + +shell.c + - new function, start_debugger(), that sources the debugger start file + and turns the debugger on + +builtins/shopt.def + - new settable option, `extdebug', turns on debugging_mode, as if + --debugger had been supplied at invocation (but does not source + debugger startup file) + +trap.c + - make sure that run_exit_trap arranges for `returns' to come back + there, too, so a `return' executed by an `exit' invoked within a + shell function behaves correctly + +support/shobj-conf + - change darwin/MacOS X stanza based on advice from mac os x developers + +lib/sh/mailstat.c + - set the atime member of the synthesized stat struct to 0 if `cur/' + is empty, rather than leaving it undefined + + 3/24 + ---- +builtins/caller.def + - new builtin to provide a call stack for the debugger + +builtins/evalfile.c + - added a second `flags' argument to source_file() + - new flag value for flags argument to _evalfile(): FEVAL_NOPUSHARGS. + If included in flags arg, it means to not manipulate the BASH_ARGV + and BASH_ARGC arrays + +builtins/common.h + - change prototype for source_file() + +builtins/source.def + - add flag value to call to source_file(): set to 1 if we replaced + the positional parameters + - add call to push_args if additional arguments supplied to the + source builtin + - add call to pop_args in maybe_pop_dollar_vars + +execute_cmd.c + - run the debug trap in execute_function so the debugger can stop + before the first command in a function body is executed + - modify subshell_level before executing a builtin or function in a + subshell + - print `for', `select', `case' command heads when set -x is enabled + +print_cmd.c + - `xtrace_print_word_list' now takes an additional flags argument, + which, if non-zero, says to print indirection_level_string() + - new functions to print for, select, and case command heads when + set -x is enabled + - add spaces after `((' and before `))' in xtrace_print_arith_command + +externs.h + - changed extern declaration for xtrace_print_word_list + - new declarations for xtrace_print_{for,case,select}_command_head() + +subst.c + - modify subshell_level when executing a command substitution + + 3/25 + ---- +execute_cmd.c + - use `line_number' in executing_line_number instead of looking into + the current command if it's a simple command; rearrange code to + make this simpler to compile in and out + - need to save and restore value of currently_executing_command around + calls to debug trap and return trap in execute_function + +make_cmd.c + - make sure make_arith_for_command() disposes the WORD_LIST * it is + passed, since nothing else does and it's not used directly + + 3/28 + ---- +Makefile.in + - fixed dependencies for `error.o' on shell.h and version.h -- makes + parallel makes (gmake -j 4) work correctly + +doc/{bash.1,bashref.texi} + - documented all new features added to support the debugger + + 4/1 + --- +lib/sh/shquote.c + - make sure CTLESC and CTLNUL characters are escaped with CTLESC + by sh_double_quote, sh_backslash_quote and + sh_backslash_quote_for_double_quotes + Fixes vulnerability reported by svdb@stack.nl + +shell.h + - new `pipestatus' member of sh_parser_state_t, to save and restore + $PIPESTATUS + +parse.y + - changes to save_parser_state and restore_parser_state to save and + restore $PIPESTATUS + +builtins/read.def + - add a call to word_list_remove_quoted_nulls before assigning the + word list read from standard input to an array variable. Fixes + bug reported by holzhey@ppprs1.phy.tu-dresden.de + + 4/3 + --- +execute_cmd.c + - in execute_null_command, if redirections are supplied, make sure + things like 3 for possible definitions of intmax_t, uintmax_t + (reported by ro@techfak.uni-bielefeld.de) + + 7/30 + ---- +parse.y + - remove checking for `time' reserved word from special_case_tokens(); + use regular mechanism in CHECK_FOR_RESERVED_WORD. This allows `time' + to be aliased. (Reported by Glenn Morris + ) + + 7/31 + ---- +lib/readline/history.h + - extern declaration for history_write_timestamps + +lib/readline/histfile.c + - don't write timestamps to the history file in history_do_write + unless history_write_timestamps is set to non-zero by the application + (set to 0 by default) + +lib/readline/doc/{hstech.texi,history.3} + - document history_write_timestamps + +variables.[ch] + - new special variable function, HISTTIMEFORMAT; special function + sets history_write_timestamps to 1 if HISTTIMEFORMAT is set + + 8/4 + --- +builtins/history.def + - added support for printing time stamps based on the value of the + HISTTIMEFORMAT variable when displaying history entries + +doc/{bash.1,bashref.texi} + - added description of new HISTTIMEFORMAT variable + + 8/5 + --- +config-top.h + - remove /usr/ucb from any default paths + +mailcheck.c + - make_default_mailpath now returns NULL if DEFAULT_MAIL_DIRECTORY + is not defined + - remember_mail_dates now returns if make_default_mailpath returns + NULL + +config-bot.h + - reorganized the sections; provide an explicit placeholder for + builders to #undef any feature defines they don't want that + configure creates for them, like the default mail path + + 8/9 + --- +config.h.in + - add HAVE_REGEX_H, HAVE_REGCOMP, HAVE_REGEXEC for detection of POSIX.2 + regular expression functions + - add COND_REGEXP define to enable and disable the =~ operator for + matching extended regular expressions in [[...]] commands + +configure.in + - new option, --enable-cond-regexp, enables =~ and code to perform + regular expression matching in [[...]] + +config-bot.h + - undef COND_REGEXP if the OS doesn't provide posix regexp support + +doc/bashref.texi + - documnent new --enable-cond-regexp option to configure + + 8/18 + ---- +support/shobj-conf + - support for shared objects on FreeBSD-gnu (from Robert Millan) + + 8/25 + ---- +lib/sh/shmatch.c + - new file, shell interface to posix extended regular expression + matching + +externs.h + - new extern declarations for functions in shmatch.c + +execute_cmd.c + - incorporate code into execute_cond_node that does extended regular + expression matching for the =~ operator + +parse.y + - add `=~' to the list of binary operators accepted by the conditional + command parser + +doc/{bash.1,bashref.texi} + - documented =~ conditional binary operator and the BASH_REMATCH + variable + + 8/27 + ---- +lib/readline/display.c + - take multibyte characters into account when looking for quoted + substrings on which to do completion (fix from jir@yamato.ibm.com) + +lib/readline/util.c + - fix typo in _rl_strpbrk + +lib/readline/rldefs.h + - use function version of _rl_strpbrk in multibyte locales, because + it understands to skip over special characters in multibyte + character sequences + + 8/28 + ---- +jobs.c + - in wait_for, check for window size changes if a job that exits due + to a signal or is stopped was in the foreground, not just if it's + the current job + + 9/10 + ---- +support/config.{guess,sub} + - add support to recognize FreeBSD running on the amd64 + +subst.c + - if the new `fail_glob_expansion' variable is non-zero, globbing that + fails to match anything causes an expansion error + +builtins/shopt.def + - new `failglob' expansion: if enabled, failed globs cause an error + +test/shopt.right + - take `failglob' into account + +doc/{bash.1,bashref.texi} + - documented new `failglob' option and its effects + + 9/12 + ---- +findcmd.c + - fix file_status to treat the mode bits and uid right -- in particular, + don't assume the `other' bits always apply. Bug reported by + ; fix inspired by + +command.h + - new word flag: W_NOCOMSUB, meaning to not perform command + substitution on a word + +subst.c + - new flag for param_expand: PF_NOCOMSUB. If non-zero, $(...) + command substitutions are not expanded, but returned unchanged + - change expand_word_internal to pass through `` command substitutions + unchanged if (word->flags & W_NOCOMSUB) != 0 + - change expand_word_internal to pass PF_NOCOMSUB to param_expand + if (word->flags & W_NOCOMSUB) != 0 + +builtins/shopt.def + - rename set_interactive_comments to set_shellopts_after_change, which + more accurately reflects its purpose + +syntax.h + - add a define for isblank() in case the system doesn't provide one + +jobs.c + - change raw_job_exit_status to understand `pipefail', using the new + `pipefail_opt' variable + +flags.[ch] + - declare pipefail_opt + - reset pipefail_opt to 0 in reset_shell_flags + +builtins/set.def + - add `set -o pipefail' and document it in help output + +doc/{bash.1,bashref.texi} + - document `set -o pipefail' and the effect of the pipefail option + +mksyntax.c,syntax.h + - sh_syntaxtab is no longer `const' + - new generated variable, sh_syntabsiz, set to number of entries in + sh_syntaxtab, written to generated syntax.c + +locale.c + - new function, locale_setblanks(), sets each member of the current + locale's class to have the CSHBRK flag in sh_syntaxtab + + 9/17 + ---- +arrayfunc.c + - change convert_var_to_array to not set array[0] to a NULL value + (if the scalar variable had no value; e.g., after being created + with `local arrayvar') + +lib/readline/display.c + - save and restore the value of prompt_invis_chars_first_line in + rl_{save,restore}_prompt, and reinitialize it to 0 before printing + something in the message area + +lib/readline/bind.c + - new functions: rl_bind_keyseq_if_unbound_in_map(ks, func, kmap); + binds key sequence KS to function FUNC in keymap KMAP, and + rl_bind_keyseq_if_unbound (ks, func); binds key sequence KS to + function FUNC in the current keymap + +lib/readline/readline.h + - extern function declarations for rl_bind_keyseq_if_unbound_in_map and + rl_bind_keyseq_if_unbound + +lib/readline/{readline,terminal}.c + - _rl_bind_if_unbound -> rl_bind_keyseq_if_unbound + +lib/readline/{bind.c,rlprivate.h} + - remove _rl_bind_if_unbound + + 9/18 + ---- +lib/readline/doc/rltech.texi + - document rl_bind_keyseq_if_unbound and + rl_bind_keyseq_if_unbound_in_map + + 9/19 + ---- +lib/readline/bind.c + - new functions rl_bind_key_if_unbound_in_map and + rl_bind_key_if_unbound; analogous to (and implemented in terms of) + keyseq functions + - rl_bind_keyseq_in_map: a new function, equivalent to rl_set_key + (which remains for backwards compatibility); changed callers to + use it + - new function, rl_bind_keyseq, equivalent to rl_bind_keyseq_in_map + with a third argument of _rl_keymap + +lib/readline/readline.h + - extern declarations for rl_bind_key_if_unbound_in_map and + rl_bind_key_if_unbound + - extern declarations for rl_bind_keyseq_in_map and rl_bind_keyseq + +lib/readline/doc/rltech.texi + - document rl_bind_keyseq and rl_bind_keyseq_in_map + +configure.in + - require at least readline-5.0 + +config-bot.h + - define SYS_SIGLIST_DECLARED if it's not defined, but + HAVE_DECL_SYS_SIGLIST is, to deal with differences between + autoconf versions + +bashline.c + - use rl_bind_key_if_unbound_in_map when binding bash keybindings in + initialize_readline(), so inputrc files can override them + + 9/22 + ---- +lib/readline/histsearch.c + - do better bounds checking for history_offset and history_length in + history_search_internal + +builtins/history.def + - in delete_last_history(), make sure we don't leave the history + offset longer than the history length after calling delete_histent + + 9/23 + ---- +jobs.c + - small change to notify_of_job_status so job status messages get + printed even if the shell was started to run `-c command'. The + old behavior was intentional, but I cannot remember why, so we'll + try it the other way for a while (debian bash bug #211693) + + 9/24 + ---- +jobs.c + - slightly modify change from 9/23 so that jobs started to run + command substitutions don't print job status messages + + 9/25 + ---- +lib/readline/search.c + - when reading a non-incremental search string from the terminal, + use a separate undo list rather than chaining it to the undo list + from the rest of the line, since the whole undo list will get + freed when the search string is complete + +lib/readline/readline.h + - changed the defines guarding the stdarg prototype for rl_message to + match what's actually used in display.c, where it's defined + + 9/26 + ---- +[bash-3.0-alpha released] + + 9/29 + ---- +lib/sh/shmatch.c + - fix to build correctly when arrays are not compiled into the shell + +subst.c + - fix command substitution to run any exit trap defined in the + command substitution before returning; the exit trap is not inherited + from the calling shell + +lib/readline/shell.c + - change sh_set_lines_and_columns to free the memory allocated and + passed to setenv(), since setenv is specified by POSIX to allocate + new memory and copy its arguments + +jobs.c + - change logic in make_child so that every child process attempts to + set the terminal's process group to the pipeline's process group + when PGRP_PIPE is defined, just like when it's undefined. This is + reported to fix some tricky synchronization problems on Red Hat + Enterprise Linux 3. Fix from Ernie Petrides . + + 9/30 + ---- +builtins/printf.def + - tescape no longer needs a `trans_squote' argument, since it's the + same as the `sawc' argument. The `sawc' argument now means to do + the %b argument processing if non-null + - fix processing of octal constants for %b arguments (\0 followed by + up to three octal digits) and other escape sequences (\ followed by + up to three octal digits) + - hex constants `\xHHH' are now allowed to contain any positive + number of digits; previously they were restricted to two [removed] + - allow two new escape sequences: \" and \?, for compatibility with + ksh93 and ANSI C + +doc/{bash.1,bashref.texi} + - documented processing that printf performs for arguments to %b + escape sequences + +lib/sh/strtrans.c + - add \" and \? to escape sequences recognized by `echo -e' + + 10/1 + ---- +version.c + - use snprintf instead of sprintf if configure tells us we have it + + 10/3 + ---- +subst.c + - in list_remove_pattern, take into account the fact that one of the + list elements may be NULL, and don't free the result of + remove_pattern() without checking + - in remove_pattern, return savestring(param) if *param == '\0', + since callers expect to free() non-null return values + + 10/4 + ---- +subst.c + - change verify_substring_values to make it clearer that the first + offset deals with array indices and the second deals with numbers + of elements, when doing array subranges with ${a[@]:e1:e2} + +array.c + - change array_subrange to make it explicit that the second offset + argument is a count of the desired number of elements, not an + ending index. This deals with sparse arrays correctly. + + 10/6 + ---- +variables.c + - fix memory leak in assign_in_env + + 10/8 + ---- +subst.c + - in parameter_brace_expand, check that the last characters are `]}' + before checking for ${!array[@]} + +execute_cmd.c,builtins/source.def + - push and pop the args (BASH_ARGV and BASH_ARGC) when executing a + shell function or sourcing a script only when in debugging mode + + 10/11 + ----- +arrayfunc.c + - make sure array_variable_name returns values for the SUBP and LENP + arguments if they're non-null, since callers expect to use them + even if the array subscript is bad + +error.c + - call exit_shell instead of sh_exit from parser_error and + report_error so the right things happen (running exit trap, doing + the right interactive cleanup, etc.) + +lib/readline/complete.c + - new variable, rl_completion_quote_character, set to any quote char + readline thinks it finds before any application completion + function is called + - new variable, rl_completion_suppress_quote, settable by an + application-specific completion function. If set to non-zero, the + completion code does not append a closing quote in append_to_match + +lib/readline/readline.h + - extern declarations for rl_completion_quote_character and + rl_completion_suppress_quote + +bashline.c + - set rl_completion_suppress_quote in command_subst_completion_function + because that would be inserted before any closing "`" or ")", which + is somewhat disconcerting + +lib/readline/doc/rltech.texi + - documented rl_completion_suppress_quote and + rl_completion_quote_character + + 10/13 + ----- +bashhist.c + - use sv_histchars instead of setting history_comment_char directly in + bash_initialize_history so assignments to $histchars made in + ~/.bashrc are honored + + 10/21 + ----- +trap.c + - make sure run_exit_trap sets `running_trap' appropriately + - new variable, trap_saved_exit_value, set to last_command_exit_value + before running any trap commands; available to the rest of the + shell; use trap_saved_exit_value to replace some function-local + variables + +builtins/exit.def + - if the shell is running the exit trap, and no argument is given + to `exit', use trap_saved_exit_value as the exit status instead + of the last command exit value (which could be the previous command + run in the exit trap), as required by POSIX.2 + + 10/25 + ----- +doc/{bash.1,bashref.texi} + - add `alias' to the list of documented `assignment statement' builtins + + 11/1 + ---- +doc/bash.1 + - remove the `.' from the sample $PATH value + +parse.y + - make sure parse_compound_assignment prompts with $PS2 if it reads + a newline while parsing the compound assignment statement. Bug + reported by Stephane Chazelas + - parse_string_to_word_list now takes a new second argument: `int flags' + - new parser state flag: PST_COMPASSIGN; indicates that the shell is + parsing a compound assignment statement + - parse_string_to_word_list turns on PST_COMPASSIGN if `flags' arg + has low bit set + - turn PST_COMPASSIGN on and off in parse_compound_assignment + +externs.h + - change prototype declaration for parse_string_to_word_list + +arrayfunc.c + - change call to parse_string_to_word_list to add new flags arg + +general.c + - assignment() takes a new `flags' second argument + - if `flags' is non-zero, accept `[' as a legal assignment statement + starter character (for parsing compound array assignments) + +general.h + - add new argument to prototype declaration for assignment() + +parse.y,{subst,variables}.c, builtins/{setattr,declare}.def + - change calls to assignment() (parse.y calls with flags == 1 when + parser_state inlcudes PST_COMPASSIGN) + +arrayfunc.c + - in assign_array_var_from_string(), don't treat an expanded word + of the form [ind]=value specially unless the W_ASSIGNMENT flag is + set. This means that words that are the result of expansions but + happen to have the same format as compound assignment statement + words will not be treated as such. For instance + + v='[12]=foobar' + a=( $v ) + + will result in a[0]='[12]=foobar' instead of a[12]=foobar. This + is closer to how `regular' assignment statements are treated and + compatible with ksh93. Bug reported by Stephane Chazelas + +shell.c + - new --protected argument, disables command substitution when used + with --wordexp (like --wordexp, it remains undocumented) + - change run_wordexp to turn on the W_NOCOMSUB flag in each word + to be expanded if protected_mode is set + + 11/7 + ---- +doc/{bash.1,bashref.texi} + - clarified the language concerning inherited signal dispositions and + when traps are run + +support/shobj-conf + - slight changes to the darwin (Mac OS X) stanza for MacOS X 10.3 + (for the readline shared library builds, which shares this script) + +lib/readline/histexpand.c + - change to make `^' behave as equivalent to word one, as csh does, + and as the documentation states + +lib/readline/display.c + - in update_line, make sure to use col_lendiff in all calculations + where the cursor position is concerned (like when calculating + the value of _rl_last_c_pos). Fixes bug reported by Andreas + Schwab + + 11/12 + ----- +trap.c + - make _run_trap_internal catch `return' builtin longjmps and clean + up before longjmping on to where the return was intended to go + (fixes bug with not turning off SIG_INPROGRESS flag when `return' + executed in trap command) + + 11/18 + ----- +builtins/cd.def + - in posix mode, set errno to ENOTDIR if canonicalization fails, + unless the canonicalization functions leave it set to ENOENT + + 11/25 + ----- +make_cmd.c + - in make_simple_command, don't blindly dereference element.redirect + +parse.y + - the list_terminator production now has an `int' value so it can be + used in other grammar productions + - add a rule that makes `time' on a line by itself time a null + command (this is iffy) + + 11/28 + ----- +subst.c + - change the pattern substitution code (${var//pat/rep}) to use the + same pattern expansion function (getpattern()) as the pattern + removal expansions. This has the effect of no longer performing + quote removal on the pattern before trying to match it. This + fixes an incompatibility with ksh93 reported on comp.unix.shell + +nojobs.c + - add replacement function for siginterrupt on the off chance that a + system has posix signals but lacks siginterrrupt + +lib/readline/display.c + - fix from Tim Waugh at Red Hat to speed up inserting characters into + long lines in a UTF-8 environment by optimizing the calculation of + the first difference between old and new lines by checking to see + whether the old line is a subset of the new + + 11/29 + ----- +lib/malloc/stats.c + - break code that opens file (and interprets %p) into separate function + _imalloc_fopen(char *s, char *fn, char *def, char *defbuf, size_t defsiz) + for use by rest of library + - default stats file is now `stats.PID' + +lib/malloc/trace.c + - new function, malloc_set_tracefn (char *s, char *fn), sets tracing + to the file named by FN (with %p interpolated as the pid), using + some default if FN is NULL + +lib/malloc/shmalloc.h + - new extern declaration for malloc_set_tracefn + + 12/4 + ---- +execute_cmd.c + - combined several common strings from do_piping() into one + dup_error() function + +builtins/common.[ch] + - new function, `sh_notbuiltin(s)' prints error message about s not + being a shell builtin + +builtins/{builtin,enable}.def + - call sh_notbuiltin instead of using literal string + +{arrayfunc,expr,error}.c + - use one string variable for `bad array subscript' error message; use + in calls to various error reporting functions + +Makefile.in + - add variables for localedir and the PACKAGE_* variables, auto-set + by configure + +configure.in + - un-cache values for gettext, textdomain, and bindtextdomain if they're + not in libc but in libintl so the right variables get set + +bashintl.h + - add necessary defines for marking strings to be translated using + gettext + +locale.c + - set textdomain and directory in set_default_locale + - don't call textdomain with the value of $TEXTDOMAIN, since we don't + want to override the default domain ("bash") + - don't call bindtextdomain unless default_domain already has a value + - when translating $"..." strings, use dgettext with the script's + default domain (value of $TEXTDOMAIN) + + 12/9 + ---- +builtins/mkbuiltins.c + - include "bashintl.h" in the generated "builtins.c" + +support/{config.rpath,mkinstalldirs} + - new files to support gettext i18n + +ABOUT-NLS + - new readme file for gettext internationalization + +po/{Makefile.in.in,Rules-quot,boldquot.sed,en@boldquot.header,en@quot.header,insert-header.sin,quot.sed,remove-potcdate.sin} +po/{POTFILES.in,bash.pot} + - new files for gettext + +lib/intl + - new directory, with libintl stuff from gettext + +aclocal.m4 + - add m4 files from gettext distribution needed by libintl + +configure.in + - create po/Makefile.in and lib/intl/Makefile in AC_OUTPUT + - add call to AM_GNU_GETTEXT to initialize gettext stuff + +Makefile.in + - use mkinstalldirs instead of mkdirs in the `installdirs' target + - changes for intl/ and po/ subdirectories in build and install + - changes to have libintl linked in, as determined by configure + - changes to have libintl built, just in case it's used (though I'd + rather not) + + 12/10 + ----- +config.h.in + - additional #defines required by the libintl library + - add ENABLE_NLS define for AM_GNU_GETTEXT + - take out defines for HAVE_{BINDTEXTDOMAIN,GETTEXT,TEXTDOMAIN} + +configure.in + - removed old tests for libintl and gettext/textdomain/bindtextdomain + +locale.c + - remove HAVE_GETTEXT code; we have gettext unconditionally now + +bashintl.h + - change to include "gettext.h" and remove the conditional code based + on whether or not gettext is present + + 12/16 + ----- +lib/readline/vi_mode.c + - fix problem with rl_vi_eWord that caused it to skip over the last + character of a word if invoked while point was on the next-to-last + character + + 12/18 + ----- +{arrayfunc,bashhist,bashline,error,eval,execute_cmd,expr,general,input,jobs}.c +{mailcheck,make_cmd,nojobs,pcomplete,pcomplib,print_cmd,redir,shell,sig}.c +{subst,test,trap,variables,version,xmalloc}.c +parse.y +builtins/{common,evalfile,getopt}.c +builtins/{bind,break,caller,cd,complete,declare,enable,exec,exit,fc,fg_bg}.def +builtins/{hash,help,history,jobs,kill,printf,pushd,read,return,set,setattr}.def +builtins/{shift,shopt,source,suspend,type,ulimit,umask}.def +lib/sh/{fmtulong,netopen}.c + - include "bashintl.h" for gettext defines + +Makefile.in + - add `-DBUILDTOOL' to CFLAGS for buildversion.o + +bashintl.h + - if `BUILDTOOL' is defined, define ENABLE_NLS to 0 so we don't have + to compile and link in the gettext stuff + +Makefile.in,lib/sh/Makefile.in,builtins/Makefile.in + - update dependencies on bashintl.h and include/gettext.h + + 12/19 + ----- +{arrayfunc,bashhist,bashline,error,eval,execute_cmd,expr,general,input,jobs}.c +{mailcheck,make_cmd,nojobs,pcomplete,pcomplib,print_cmd,redir,shell,sig}.c +{subst,test,trap,variables,version,xmalloc}.c +builtins/{common,evalfile,getopt}.c +builtins/{bind,break,caller,cd,complete,declare,enable,exec,exit,fc,fg_bg}.def +builtins/{hash,help,history,jobs,kill,let,printf,pushd,read,return,set}.def +builtins/{setattr,shift,shopt,source,suspend,type,ulimit,umask}.def +lib/sh/{fmtulong,netopen}.c +lib/malloc/{malloc,stats,table,watch}.c + - mark up strings in source files for gettext processing + +lib/malloc/imalloc.h + - include "bashintl.h" if SHELL is defined, otherwise make _(x) an + identity define + +lib/malloc/Makefile.in + - add dependencies on ${topdir}/bashintl.h and ${BASHINCDIR}/gettext.h + + 12/21 + ----- +bashline.c + - make sure we index into rl_line_buffer with indexes > 0 in + attempt_shell_completion + + 12/31 + ----- +Makefile.in + - descend into `po' and run make recursively for the various clean + targets + + 1/4 + --- +include/shmbutil.h + - two new macros: BACKUP_CHAR(str, strsize, i), which backs up one + multibyte character in STR starting at index I, and + BACKUP_CHAR_P(str, strsize, p), which backs up one multibyte + character in STR starting at P, which is a char * + + 1/6 + --- +pcomplete.c + - in pcomp_filename_completion_function, use the quote character + readline found (and assigned to rl_complete_quote_character) when + dequoting the filename by a completion call from readline (when + rl_dispatching != 0) + +bashline.c + - ditto for bash_directory_completion_matches + + 1/7 + --- +lib/readline/complete.c + - new variable, rl_completion_found_quote, set to non-zero value if + readline finds what it thinks is quoting in the word to be completed + +lib/readline/readline.h + - extern declaration for rl_completion_found_quote + + 1/8 + --- +lib/readline/doc/rltech.texi + - documented rl_completion_found_quote + +lib/readline/complete.c + - in compute_lcd_of_matches, if it looks like what the user typed was + dequoted before generating filename matches, dequote the user's + text again before figuring out the case-insensitive lcd + + 1/9 + --- +lib/readline/display.c + - fix from Edward Catmur to logic that handles + invisible characters in prompt string. Original code was wrong + about local_prompt_prefix; it gave incorrect results when prompt + contained invisible characters after a line break + + 1/10 + ---- +subst.c + - new function, mb_substring(), does character (possibly multibyte) + oriented rather than strictly byte-oriented substring extraction. + The passed indices, rather than strictly indexing into the string, + indicate character positions that need to be calculated. From + Tim Waugh + - change parameter_brace_substring to use mb_substring if necessary + +included/shmbutil.h + - new define SADD_MBQCHAR_BODY, common code for adding a quoted + (preceded by CTLESC) multibyte character to an accumulating string + in the subst.c expansion code + +subst.c + - use SADD_MBQCHAR_BODY in expand_word_internal + - new static function, mb_getcharlens, allocates and returns an array + of character lengths for (possibly multibyte) characters in the + argument string + - change pattern matching operations to use while loops instead of + for loops to handle multibyte characters better (no more simple + increment or decrement) + - change pattern matching operations to use multibyte character + operations instead of simple increments and decrements. Don't + use BACKUP_CHAR_P -- use the mblen array instead, because that + avoids the N**2 behavior of having to count from the beginning + of the string each time you want to back up one character. Changes + to remove_pattern and match_pattern + + 1/12 + ---- +lib/readline/display.c + - make expand_prompt count multbyte characters in the prompt string + by using _rl_find_next_mbchar (and copying possibly more than one + byte) instead of a simple increment and single byte copy + + 1/13 + ---- +lib/readline/display.c + - expand_prompt takes a new reference argument -- it returns + the actual count of (possibly multibyte) characters displayed + on the screen + - don't short-circuit in expand_prompt unless we're not going to + be using any multibyte characters + - change calls to expand_prompt to pass an argument for the + number of physical characters the prompt occupies + (prompt_physical_chars) + - initialize `lpos' (the physical cursor position) from + prompt_physical_chars in rl_redisplay + +lib/readline/mbutil.c + - in _rl_find_prev_mbchar_internal, if mbrtowc returns -1 or -2, and + we assume that the character is a single-byte char, make sure we + update `prev' so it doesn't get lost. Fixes problems encountered + when a non-ascii char is the last char on the line and we're moving + back past it with ^B, and other display problems caused by the same + situation + + 1/15 + ---- +lib/readline/doc/rltech.texi + - document RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE in the + description of rl_expand_prompt() + + 1/20 + ---- +bashline.c + - in initialize_readline, make sure M-C-j and M-C-m are still bound to + vi-editing-mode before unbinding them -- they may have been rebound + in an inputrc + +variables.c + - in unbind_variable, unset attributes other than `local' and exported + (if the variable came from a temporary environment) when unsetting a + local variable inside a function + + 1/21 + ---- +configure.in + - add libintl build directory to the list of include directories if + it's being built (using INTL_BUILDDIR) + +Makefile.in,{builtins,lib/{sh,malloc}}/Makefile.in + - substitute LIBBUILD as ${BUILD_DIR}/${LIBSUBDIR} + - define INTL_BUILDDIR as ${LIBBUILD}/intl + +{builtins,lib/sh}/Makefile.in + - make sure INTL_INC is added to the list of include directories + - make sure INTL_LIBSRC is defined with the correct value + +{configure,Makefile,{builtins,lib/sh}/Makefile}.in + - substitute LIBINTL_H as ${INTL_BUILDDIR}/libintl.h + +Makefile.in,builtins/Makefile.iin + - all files depending on bashintl.h also depend on ${LIBINTL_H} + (which may be empty) + +Makefile.in + - make a rule telling how to build lib/intl/libintl.h if necessary + + 1/24 + ---- +builtins/read.def + - make sure that the array name supplied as an argument to -a is a + valid identifier + +parse.y + - make the \W expansion abbreviate $HOME with a ~ (seems to be more + useful) + +doc/{bash.1,bashref.texi} + - document new behavior of \W + +subst.c + - make sure parameter_brace_expand_rhs uses the first character of + $IFS when making the string to return from the expanded word + (which, in the case of "$@" or $@, contains multiple words that + need to be separated) + + 1/25 + ---- +builtins/common.c + - change get_job_spec to make `%' by itself or an empty argument + return NO_JOB + +jobs.h + - new possible value for a job spec return value: BAD_JOBSPEC + (for syntactically invalid specs, like the empty string) + +shell.c + - in open_shell_script, check to see whether or not we can find and + open the filename argument before setting dollar_vars[0] or + manipulating BASH_SOURCE, so the error messages come out better + +subst.c + - in string_list_internal, short-circuit right away to savestring() + if the list only has a single element + + 1/28 + ---- +lib/readline/rltypedefs.h + - new set of typedefs for functions returning char * with various + arguments (standard set) + +lib/readline/complete.c + - new function pointer, rl_completion_word_break_hook, called by + _rl_find_completion_word, used to set word break characters at + completion time, allowing them to be position-based + +lib/readline/doc/rltech.texi + - documented rl_completion_word_break_hook + +lib/readline/kill.c + - added new rl_unix_filename_rubout, which deletes one filename + component in a Unix pathname backward (delimiters are whitespace + and `/') + +lib/readline/readline.h + - extern declaration for rl_unix_filename_rubout + +lib/readline/funmap.c + - new bindable readline command `unix-filename-rubout' + +lib/readline/doc/{readline.3,rluser.texi},doc/bash.1 + - documented `unix-filename-rubout' + + 1/29 + ---- +lib/readline/histexpand.c + - change history_tokenize_internal to handle non-whitespace delimiter + characters by creating separate fields (like the shell does when + splitting on $IFS) + + 1/30 + ---- +lib/glob/xmbsrtowcs.c + - new function, xdupmbstowcs, for convenience: calls xmbsrtowcs + while allocating memory for the new wide character string + - some small efficiency improvments to xmbsrtowcs + +include/shmbutil.h + - extern declaration for xdupmbstowcs + +lib/glob/strmatch.h + - include config.h for definition of HANDLE_MULTIBYTE + - remove the HAVE_LIBC_FNM_EXTMATCH tests + - new extern declaration for wcsmatch(whchar_t *, wchar_t *, int) + +configure.in + - remove call to BASH_FUNC_FNMATCH_EXTMATCH; it's no longer used + +lib/glob/smatch.c + - simplify xstrmatch() by using xdupmbstowcs() instead of inline code + +lib/glob/glob.c + - modify mbskipname() to avoid the use of alloca + - simplify mbskipname() by using xdupmbstowcs() instead of inline code + - simplify glob_pattern_p() by using xdupmbstowcs() instead of + inline code + - fix memory leak in wdequote_pathname + - simplify wdequote_pathname() by using xdupmbstowcs() instead of + inline code + +lib/glob/strmatch.c + - new function, wcsmatch(), `exported' wide-character equivalent of + strmatch() + +subst.c + - old match_pattern is now match_upattern + - match_pattern now either calls match_upattern or converts + mbstrings to wide chars and calls match_wpattern + - match_upattern reverted to old non-multibyte code + - new function: match_pattern_wchar, wide character version of + match_pattern_char + + 2/1 + --- +subst.c + - old remove_pattern is now remove_upattern + - remove_upattern reverted to old non-multibyte code (pre-Waugh patch) + - new multibyte version of remove_pattern: remove_wpattern + - remove_pattern now calls either remove_upattern or converts a + multibyte string to a wide character string and calls + remove_wpattern + - new function, wcsdup, wide-character version of strdup(3) + + 2/4 + --- +print_cmd.c + - temporarily translate a >&filename redirection from + r_duplicating_output_word to r_err_and_out (as the expansion code + in redir.c does) so it prints without a leading `1' (file + descriptor) + + 2/5 + --- +aclocal.m4 + - add a check for wcsdup to BASH_CHECK_MULTIBYTE + +config.h.in + - add HAVE_WCSDUP define + + 2/9 + --- +builtins/shift.def + - fix a call to sh_erange that possibly dereferences a NULL pointer + + 2/12 + ---- +general.c + - start at a general set of file property checking functions: + file_isdir(), file_iswdir() (is writable directory) + +general.h + - extern declarations for new functions + +lib/sh/tmpfile.c + - use file_iswdir() to make sure the temporary directory used for + here documents and other temp files is writable in get_sys_tmpdir() + + 2/17 + ---- +bashline.c + - fix conditional binding of emacs-mode M-~ -- there is a default + binding for it (rl_tilde_expand), so a straight call to + rl_bind_key_if_unbound_in_map doesn't do the right thing + + 2/27 + ---- +[bash-3.0-beta1 released] + + 2/29 + ---- +subst.c + - fixed expansion so referencing $a, when a is an array variable + without an element assigned to index 0, exits the shell when + `-u' is enabled + +expr.c + - make the exponentiation operator (**) associative, so things like + 2**3**4 work right (change `if' to `while') + + 3/3 + --- +lib/sh/strftime.c + - SCO Unix 3.2, like Solaris, requires that the system's `timezone' + variable be declared as long + +lib/readline/{bind,histfile,input,parens}.c + - changes for Tandem (including `floss.h' (?)) + + 3/4 + --- +subst.c + - change param_expand to quote the entire expanded string instead + of just the escape characters if the expansion appears between + double quotes or in a here-document (for simple variable expansions + or expansions of positional parameters) + + 3/8 + --- +subst.c + - analogous changes to parameter_brace_expand_word to fix the same + quoting problem as on 3/4; fix callers to understand that the + value returned might be quoted now and should be dequoted if + necessary + - add a `quoted' argument to get_var_and_type, change callers + - change today's fix and fix from 3/4 to not call quote_string if the + value is "" (because quote_string turns that into CTLNUL\0) + + 3/9 + --- +builtins/cd.def + - resetpwd() now takes a `caller' argument so it can be used by pwd + as well as cd + - change pwd_builtin to call resetpwd() if sh_physpath() fails to + return a valid pathname + + 3/14 + ---- +expr.c + - reworked exp0 and readtok() to make post-increment and post-decrement + into real tokens, which may be separated from their accompanying + variables by whitesapce + - made analogous changes to readtok() to make pre-increment and + pre-decrement work when separated from their accompanying identifier + by whitespace + + 3/18 + ---- +lib/readline/misc.c + - in rl_maybe_unsave_line, don't force rl_replace_line to clear + the undo_list, since it might point directly at an undo list + from a history entry (to which we have no handle) + + 3/19 + ---- +lib/readline/display.c + - rl_save_prompt and rl_restore_prompt now save and restore the value + of prompt_physical_chars + - set prompt_physical_chars in rl_redisplay when expand_prompt has + not been called (e.g., when rl_display_prompt is set and is not + equal to rl_prompt, like when searching) + +lib/readline/histexpand.c + - don't call add_history in history_expand if the `:p' modifier is + supplied; leave that to the calling application. This means that + `history -p', for example, will not add anything to the history + list (as documented), nor will history expansions invoked by + emacs-mode M-C-e line editing + +config-bot.h + - check whether HAVE_DECL_SYS_SIGLIST is defined to 1 rather than just + defined, to work around newer versions of autoconf defining it to 0 + +config.h.in + - change default status of HAVE_MALLOC to #undef instead of #define + +bashhist.c + - extern declarations for rl_done and rl_dispatching + - don't call re_edit from pre_process_line unless rl_dispatcing is zero, + so we don't call it from something like shell-expand-line + - change pre_process_line to add an expanded history specification + that returned `print only' to the history list, since history_expand + no longer does it (and, when using readline, do it only when + rl_dispatching is zero) + + 3/22 + ---- +config.h.in,aclocal.m4 + - change bash-specific functions that look in struct dirent to define + HAVE_STRUCT_DIRENT_xxx, like AC_CHECK_MEMBERS does (though the + functions are otherwise the same) + - new function, BASH_STRUCT_DIRENT_D_NAMLEN, define + HAVE_STRUCT_DIRENT_D_NAMLEN if struct dirent has a `d_namlen' member + +configure.in + - call BASH_STRUCT_DIRENT_D_NAMLEN + +include/posixdir.h + - use new and renamed HAVE_STRUCT_DIRENT_D_xxx defines + + 4/7 + --- +builtins/cd.def + - ensure that we print out a non-null pathname after getting a + directory from CDPATH and canonicalizing it (e.g., if the result + exceeds PATH_MAX in length and the_current_working_directory is + set to NULL) + + 4/12 + ---- +print_cmd.c + - new function to print out assignment statements when `set -x' has + been enabled: xtrace_print_assignment + +externs.h + - extern declaration for xtrace_print_assignment + + 4/13 + ---- +{subst,variables}.c + - call xtrace_print_assignment instead of using inline code + +jobs.c + - if turning on job control when it was previously off, set + pipeline_pgrp to 0 in set_job_control so make_child puts + subsequent children in their own process group + + 4/14 + ---- +general.c + - new function, legal_alias_name, called to decide whether an + argument to add_alias is a valid alias name -- essentially any + character except one which must be quoted to the shell parser + and `/' + +general.h + - new extern declaration for legal_alias_name + +builtins/alias.def + - `unalias' now returns failure status if no NAME arguments are + supplied and -a is not given + - call legal_alias_name to make sure alias name is valid before + calling add_alias from alias_builtin + + 4/19 + ---- +include/shmbutil.h + - include for definition of HANDLE_MULTIBYTE rather than + duplicating logic + + 4/20 + ---- + +doc/{bash.1,bashref.texi} + - make sure $0 is consistently referred to as a `special parameter' + - document which characters are now not allowed in alias names + + 4/23 + ---- + +builtins/{jobs,kill,wait}.def + - removed requirement that job control be enabled to use job control + notation, as SUSv3 implies + +subst.c + - based on a message from David Korn, change param_expand to not call + string_list_dollar_star if the only quoting is Q_HERE_DOCUMENT -- + quoted here documents are like double quoting, but not exactly + - analogous changes to list_remove_pattern and pos_params + + 4/24 + ---- +lib/readline/doc/rluser.texi + - fix error in description of emacs-mode C-xC-e command (uses $VISUAL + instead of $FCEDIT) + + 4/28 + ---- +support/bashbug.sh + - integrate a patch from Stefan Nordhausen + that reduces race conditions + by using a temporary directory inside $TMPDIR and creating the + temp files in that + + 4/30 + ---- +builtins/common.c + - use pathconf(".", _PC_PATH_MAX) where available to size the argument + to getcwd() rather than using a straight PATH_MAX + +builtins/cd.def + - if get_working_directory fails and returns null (causing resetpwd + to return NULL), use set_working_directory to set $PWD to the + absolute pathname for which chdir just succeeded + + 5/1 + --- +lib/readline/vi_mode.c + - in rl_vi_change_to, call _rl_vi_set_last with rl_numeric_arg instead + of `last', since they're equal at call time and rl_vi_domove can + change rl_numeric_arg (which vi apparently updates). Fixes redo bug + of `c2....' reported by Marion Berryman + + 5/4 + --- +parse.y + - fix decode_prompt_string to properly deal with strftime() returning 0 + + 5/6 + --- +variables.c + - in make_local_array_variable, return an already-existing local array + variable immediately rather than creating a new array (causing a + memory leak) + + 5/8 + --- +lib/readline/vi_mode.c + - change rl_vi_domove to set rl_explicit_arg before calling + rl_digit_loop1 so that multi-digit numeric arguments work right + - _rl_vi_last_command is no longer static + +lib/readline/rlprivate.h + - new extern declaration for _rl_vi_last_command + +lib/readline/text.c + - change rl_newline to only call _rl_vi_reset_last if the last command + (_rl_vi_last_command) is not a text modification command. This lets + the last-command and last-argument work across command lines + + 5/13 + ---- +builtins/common.c + - use getcwd(0,0) rather than providing a fixed pathname with a fixed + length (PATH_MAX) so getcwd() will allocate sufficient memory + +aclocal.m4 + - change BASH_FUNC_GETCWD to check whether or not getcwd(0,0) will + allocate memory for the returned value -- nobody implements that + and getcwd-via-popen, so it should capture the old test as well + + 5/27 + ---- + +builtins/trap.def + - the historical behavior of assuming that a signal's handling should + be set to its original disposition is only in effect if a single + argument is given, otherwise the first argument is assumed to be a + command to execute + - when in posix mode, if trap gets a single argument, display an + error message and return EX_USAGE + - change the help message and usage string to better explain trap's + behavior + +doc/{bash.1,bashref.texi} + - describe the new default behavior when the first argument is a + signal spec + - note that signal names are case insensitive and the SIG prefix is + optional in arguments to `trap' + - note that signal name arguments to `kill' are case-insensitive + +lib/readline/display.c + - make sure rl_on_new_line_with_prompt sets rl_display_prompt to + rl_prompt (just to make sure it's set) + - have rl_on_new_line_with_prompt use local_prompt if it's set + + 6/2 + --- +subst.c + - in string_extract_double_quoted, cope with extract_delimited_string + returning NULL, as it can when attempting completion on an unclosed + command substitution + + 6/24 + ---- +lib/readline/complete.c + - change print_filename to add a `/' to listed directory names if + `mark-directories' has been enabled + +builtins/umask.def + - make sure that the mask passed to parse_symbolic_mode has all but + the operative low eight bits masked off, to avoid complementing + all 0s to -1, which is the error return code. This makes things + like `a=rwx' and `ugo=rwx' work and turn off the umask + + 6/26 + ---- +builtins/getopts.def + - when `getopts' reaches the end of options, unset OPTARG before + returning EOF. In response to a bug report from Apple + +configure.in + - when cross-compiling, don't set CPPFLAGS_FOR_BUILD and + LDFLAGS_FOR_BUILD from CPPFLAGS and LDFLAGS, respectively, since + those are for the target instead of the build platform (report + from robert@schwebel.de) + +shell.c + - a shell whose standard error (but not standard output) is directed + to a terminal should be interactive, according to POSIX/SUS. This + means that sh > sh.out will start an interactive shell. Bug report + from llattanzi@apple.com + +doc/{bash.1,bashref.texi} + - change mention of standard output to standard error in definition + of interactive shell + +lib/readline/vi_mode.c + - new convenience function, rl_vi_start_inserting, calls + _rl_vi_set_last to save the last textmod command state and then calls + rl_vi_insertion_mode to enter insert mode + - change functions to use rl_vi_start_inserting + +lib/readline/readline.h + - extern declaration for rl_vi_start_inserting + +bashline.c + - new function for vi-mode completion, bash_vi_complete. Does + filename expansion as POSIX specifies, unlike the default readline + bindings (which don't know about globbing). Bound to `\', `*', + and `=' in vi command keymap. Internals very similar to + rl_vi_complete; just calls bash glob expansion functions + +lib/readline/vi_mode.c + - change rl_vi_change_char so that an entire change is a single + undoable event, rather than each individual change in a [count]r + command + - fix rl_vi_change_char so that replacing characters up to EOL works + rather than generating rl_ding + - fix rl_vi_change_case so that replacing characters up to EOL works + rather than generating rl_ding + + 6/28 + ---- +builtins/echo.def + - call clearerr(stdout) before writing anything and testing its + failure or success + + 6/29 + ---- +bashline.c + - only set rl_explicit_arg in bash_glob_complete_word if readline is + in emacs mode; let bash_vi_complete take care of setting it in vi + mode + - fix bash_vi_complete to only set rl_explicit_arg unless the posix + conditions are met: no globbing characters in the vi `bigword' + being completed + + 6/30 + ---- +[bash-3.0-rc1 released] + + 7/1 + --- +lib/readline/complete.c + - make sure `extension_char' is initialized before deciding whether + or not the append a `/' to a possible completion when visible-stats + is not enabled + + 7/2 + --- +subst.c + - fix a boundary overrun in string_extract_double_quoted that could + occur when the word completion code attempts to expand an incomplete + construct (like a quoted unclosed command substitution) + + 7/4 + --- +subst.c + - set tempenv_assign_error to non-zero if an assignment to the + temporary environment fails for some reason (e.g., attempted + assignment to a readonly variable) + +execute_cmd.c + - fix execute_simple_command to force a non-interactive shell in + POSIX mode to exit if an assignment to the temporary environment + preceding a special builtin fails (bug report from + llattanzi@apple.com) + + 7/5 + --- +bashline.c + - in bash_directory_completion_hook, don't perform word expansions + if the filename appears to have been completed from the file + system rather than typed in by the user. Bug reported by Tim + Waugh + + 7/7 + --- +lib/readline/misc.c + - if _rl_maybe_save_line is being asked to save a line other than + what's already saved, free up the current saved line and save the + current contents of rl_line_buffer. Bug reported by + llattanzi@apple.com + + 7/12 + ---- +lib/readline/input.c + - do better EOF detection in rl_gather_tyi -- if a read returns 0 when + the fd is in non-blocking mode, stuff an EOF into the input stream + (reported by mattias@virtutech.se) + + 7/13 + ---- +lib/readline/vi_mode.c + - make sure rl_vi_put honors `count' arguments and yanks things + multiple times if requested + + 7/16 + ---- +builtins/umask.def + - make sure that the `who' part of the umask symbolic mode argument + defaults to `a' if it's missing + +flags.c + - make sure that maybe_make_restricted only gets called after the + shell is initialized, so `bash -r' doesn't result in inappropriate + error messages + +[bash-3.0 frozen] + + 7/27 + ---- +doc/Makefile.in + - small fixes + +[bash-3.0-released] + + 7/28 + ---- +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 + + 7/30 + ---- +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 + + 7/31 + ---- +subst.c + - new function, mbstrlen(s), returns length of a multibyte character + string + +include/shmbutil.h + - new macro, MB_STRLEN(s), calls mbstrlen or STRLEN as appropriate + +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 + +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 + + 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) + +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 + +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) + +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 + +builtins/command.def + - fixed bug: `command -v' is supposed to be silent if a command is not + found + +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 + +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 + +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 + +{locale,variables}.c + - support LC_TIME as a special locale variable so HISTTIMEFORMAT tracks + the current locale + + 8/2 + --- +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 + + 8/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 + +variables.c + - BASH_ARGC, BASH_ARGV, BASH_SOURCE, BASH_LINENO no longer created as + invisible vars + +pcomplete.c + - make sure COMP_WORDS is not invisible when bind_comp_words returns + - ditto for COMPREPLY in gen_shell_function_matches + + 8/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 + + 8/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) + + 8/7 + --- +configure.in + - kfreebsd-gnu has had its sbrk() problems fixed, and no longer needs + to be configured --without-gnu-malloc + +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 + + 8/9 + --- +support/Makefile.in + - renamed `mostly-clean' target to `mostlyclean' + + 8/11 + ---- +lib/readline/vi_mode.c + - make same change for EOL in multibyte character case of + rl_vi_change_char + + 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) + + 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/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' + +lib/malloc/malloc.c + - internal_memalign and memalign now take a `size_t' as their first + argument, which seems to be the prevailing standard + +lib/malloc/{malloc.c,shmalloc.h} + - change sh_memalign to take a `size_t' as its first argument + +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) + +doc/bashref.texi + - amend description of bash posix mode to include new echo behavior + +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' + +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 + + 8/18 + ---- +array.c + - check for an empty array in array_rshift before shifting elements + and adjusting max_index + - check for null array in array_subrange + +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 + + 8/19 + ---- +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 + + 8/26 + ---- +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) + + 8/27 + ---- +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 + + 8/30 + ---- +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 + +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 + +execute_cmd.c + - change execute_in_subshell so the subshell command inherits the + command timing flags from the enclosing COMMAND * + + 9/11 + ---- +[prayers for the victims of 9/11/2001] + +lib/sh/strnlen.c + - new file, implementation of GNU libc extension function strnlen + +lib/sh/Makefile.in, {config.h,configure,Makefile}.in, MANIFEST + - changes for strnlen + +configure.in + - version changed to 3.1-devel + +doc/bash.1, lib/readline/doc/rluser.texi + - added description of `-o plusdirs' to complete/compgen (thanks, + Arnold) + +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 + + 9/13 + ---- +variables.c + - make BASH_ARGC, BASH_ARGV, BASH_LINENO, and BASH_SOURCE + non-unsettable, since the shell uses those values internally + +expr.c + - make exponentiation right-associative, as is apparently correct + + 9/16 + ---- +arrayfunc.c + - make sure convert_var_to_array marks the environment as needing + recreation if the converted variable was exported + + 9/17 + ---- +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 + +lib/readline/display.c + - in compute_lcd_of_matches, explicitly cast `text' to `char *' before + passing it to rl_filename_dequoting_function + +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 + + 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 + +externs.h + - add extern declarations for strnlen and strpbkrk from lib/sh + +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 + + 9/19 + ---- +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 + +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 + + 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 + +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 + +general.[ch] + - new function bash_tilde_find_word, drop-in replacement for + tilde_find_word + +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 + +execute_cmd.c + - take out calls to bash_tilde_expand before calling word expansion + functions + + 9/26 + ---- +execute_cmd.c + - make sure to call UNBLOCK_CHILD before returning on a pipe creation + failure in execute_pipeline + + 9/27 + ---- +variables.c + - change get_bash_command to deal with the_printed_command_except_trap + being NULL + +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() + +parse.y + - change the parser so that the closing `)' in a compound variable + assignment delimits a token -- ksh93 does it this way + +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 + + 9/28 + ---- +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 + +parse.y + - set W_COMPASSIGN on words that appear to be compound assignments + +subst.c + - pass W_NOXPAND and W_COMPASSIGN through end of expand_word_internal + +subst.[ch] + - new function, expand_assignment_string_to_string, calls + expand_string_assignment and then string_list on the result + +variables.c + - assign_in_env now calls expand_assignment_string_to_string + + 9/30 + ---- +builtins/common.c + - change get_job_spec so the null job `%' once again means the current + job + + 10/1 + ---- +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 + + 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 + +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 + +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 + +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 + +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 + + 10/3 + ---- +subst.c + - use W_COMPASSIGN flag in do_assignment_internal instead of deciding + lexically which assignments are compound array assignments + + 10/6 + ---- +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 + + 10/7 + ---- +config.h.in + - add a placeholder definition for WCONTINUED_BROKEN + + 10/9 + ---- +aclocal.m4 + - add BASH_CHECK_WCONTINUED, checks for glibc bug where WCONTINUED is + defined but rejected as invalid by waitpid(2) + +configure.in + - add call to BASH_CHECK_WCONTINUED, defines WCONTINUED_BROKEN + +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 + +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 + + 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) + + 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 + +lib/readline/rlprivate.h + - new extern declaration for _rl_bind_stty_chars + +lib/readline/rltty.c + - change rl_prep_terminal to add support for _rl_bind_stty_chars + + 10/15 + ----- +lib/readline/bind.c + - new bindable variable, `bind-tty-special-chars', bound to value of + _rl_bind_stty_chars + +doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} + - documented new readline variable `bind-tty-special-chars' + +builtins/pushd.def + - make the first check for option `--' skip the rest of option + checking + + 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 + + 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 + +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) + + 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 + +externs.h + - new extern declaration for sh_mkdoublequoted + +parse.y + - use sh_mkdoublequoted after calling localeexpand() + +lib/sh/strtrans.c + - change ansicstr to understand that (flags & 4) != 0 means to remove + backslash from unrecognized escape sequences + +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 + + 10/21 + ----- +bashline.c + - don't call programmable_completions with an assignment statement + argument + + 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 + + 10/24 + ----- +lib/readline/util.c + - include rlmbutil.h for multibyte definitions + - new function, _rl_walphabetic, wide char version of rl_alphabetic + +lib/readline/mbutil.c + - new function, _rl_char_value(buf, ind), returns value of (possibly + multibyte) character at buf[ind] + +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/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 + + 10/26 + ----- +parse.y + - fix parse_matched_pair so that it doesn't swallow \ when + parsing a $'...' construct (call shell_getc with different arg) + + 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 + +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 + + 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) + +shell.c + - make sure shell_is_restricted skips over a single leading `-' in + the shell name (from SUSE, but not sent in) + +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) + +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 + ---- +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 + + 11/5 + ---- +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 + +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 + +arrayfunc.c + - change callers of make_variable_value to add flags arg + +builtins/declare.def + - change callers of bind_variable_value to add flags arg + +{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 + +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' + +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 + + 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 + +builtins/setattr.def + - add support for `+=' assignment for rest of `assignment builtins': + export, readonly + + 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 + + 11/14 + ----- +{configure,config.h}.in + - check for `raise', define HAVE_RAISE if available + +lib/intl/dcigettext.c + - make sure `raise' is defined if HAVE_RAISE is not before + eval-plurah.h is included + +lib/malloc/trace.c + - put extern declaration for imalloc_fopen inside the MALLOC_TRACE + #ifdef + + 11/16 + ----- +lib/intl/Makefile.in + - make sure SHELL is defined to cpp + +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 + + 11/18 + ----- +trap.[ch] + - new function, int signal_in_progress(int sig), returns TRUE if the + trap handler for signal SIG is currently executing + + 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 + + 11/20 + ----- +doc/{bash.1,bashref.texi} + - correct some minor typos, forwarded from doko@debian.org + + 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) + + 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 + + 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' + +lib/sh/strftime.c + - don't try to redefine `inline' if it's already defined + + 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 + + 11/27 + ----- +builtins/evalfile.c + - make same changes as 11/26, this time to _evalfile + +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 + +trap.c + - change reset_or_restore_signal_handlers so that the RETURN trap is + not inherited by command substitution when DEBUGGER is not defined + + 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 + + 12/1 + ---- +execute_cmd.c + - fix execute_function so a function calling `return' will run the + RETURN trap, if one's defined + +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 + +execute_cmd.c + - a function does not inherit the RETURN trap if a DEBUG trap is + currently running + + 12/2 + ---- +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 + + 12/9 + ---- +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 + + 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 + --- +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_completion_hook + and bash_directory_expansion + +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 diff --git a/bash-20060316/CWRU/CWRU.chlog~ b/bash-20060316/CWRU/CWRU.chlog~ new file mode 100644 index 000000000..ba886933c --- /dev/null +++ b/bash-20060316/CWRU/CWRU.chlog~ @@ -0,0 +1,13200 @@ + 4/9/2001 + -------- +[bash-2.05 released] + + 4/10 + ---- +redir.c + - check return value of fclose() in write_here_document() for error + returns; don't just rely on fwrite() failing + +support/bashbug.sh + - set TMPDIR to /tmp if it's null or unset + - use $TMPDIR in the TEMP tempfile name template + - fixed the call to `mktemp', if it exists, to make it more portable + +jobs.c + - if WCONTINUED is not defined, define it to 0 and add a define for + WIFCONTINUED(wstatus) which expands to 0 + - add WCONTINUED to the flags passed to waitpid(2) in waitchld() + - don't increment children_exited if waitpid's status is WIFCONTINUED, + since we don't want to call a SIGCHLD trap handler in this case + - in waitchld(), we set child->running to 1 if WIFCONTINUED(status) + is non-zero + - make sure pretty_print_job doesn't check for the core dump bit if + the process has been continued; it's only valid if the job is dead + - in set_job_status_and_cleanup, set the job to JRUNNING if job_state + is non-zero and the job was previously marked as JSTOPPED + +configure.in + - add -DBROKEN_DIRENT_D_INO to interix LOCAL_CFLAGS + +lib/glob/glob.c + - if BROKEN_DIRENT_D_INO is defined, define REAL_DIR_ENTRY to 1 + +jobs.c + - in kill_pid, we only need to block and unblock SIGCHLD if the + `group' argument is non-zero, since otherwise we just call `kill' + on the pid argument + +version.c + - update copyright date to 2001 + +bashline.c + - prog_complete_return needs to take a `const char *' as its first + argument + - history_completion_generator needs to take a `const char *' as + its first argument, and `text' needs to be a `const char *' + + 4/11 + ---- +redir.c + - fixed a weird typo in redir_special_open, case RF_DEVFD, added + call to all_digits before call to legal_number + - fixed do_redirection_internal to call legal_number instead of atol(3) + when translating r_duplicating_{in,out}put_word, so it handles + overflow better + - produce an error message in redirection_error for out-of-range + file descriptors + - change allocation strategy in redirection_error so we don't have to + malloc scratch memory if redirection_expand() fails + +jobs.h + - added defines for `running' member of a struct process + +general.c + - fix legal_number to return 0 when strtol(3) reports overflow or + underflow + +parse.y + - changed read_token_word to call legal_number instead of atoi(3) + +input.c + - return -1/EBADF from close_buffered_fd if fd is < 0 + +command.h + - fixed bogus comment about IS_DESCRIPTOR in description of the + REDIRECTEE struct + +print_cmd.c + - change cprintf's 'd' modifier code to display negative numbers as + an out-of-range value. We can do this only because the only use + of %d is to output file descriptor numbers in redirections + +support/mksignames.c + - need to include config.h to get a possible value for + UNUSABLE_RT_SIGNALS + + 4/16 + ---- +lib/readline/doc/rluser.texinfo + - corrected a small error in one description of M-DEL + + 4/17 + ---- +stringlib.c + - need to initialize `ind' before calls to RESIZE_MALLOCED_BUFFER + in strcreplace() + +support/bashversion.c + - new file, prints bash version information + +Makefile.in + - rules for building bashversion and linking it to version.o + + 4/24 + ---- +conftypes.h + - new file with HOSTTYPE, OSTYPE, MACHTYPE, etc. defines from + variables.h + +variables.h, version.c + - include conftypes.h + +patchlevel.h + - new file, contains define for PATCHLEVEL. Doing away with the old + scheme of having the information in configure.in + +version.c + - include patchlevel.h + +Makefile.in + - run bashversion -p to find patch level rather than have configure + substitute in a value + - pass -S ${top_srcdir} to support/mkversion.sh + +support/mkversion.sh + - don't put PATCHLEVEL define into version.h, but accept and ignore + a -p option + - take a new -S srcdir option + - find the patch level by parsing it out of patchlevel.h + +configure.in + - hard-code BASHVERS assignment instead of reading it from a file + - remove BASHPATCH; don't substitute it + +_distribution,_patchlevel + - removed + + 4/26 + ---- +shell.c + - call init_noninteractive() in open_shell_script if forced_interactive + is non-zero (the shell was started with -i) and fd_is_tty is 0 + (the script file is a real file, not something like /dev/stdin), + since it wasn't done earlier + +builtins/printf.def + - change for POSIX.2 compliance when conversion errors are encountered + when processing %d, %u, and floating point conversion operators + (print a warning message, return the value accumulated at the time + of the error -- which is always 0 -- and exit with a non-zero status) + +command.h + - added CMD_COMMAND_BUILTIN for use by the `command' builtin and the + code in execute_cmd.c + +builtins/command.def + - add CMD_COMMAND_BUILTIN to the created command's flags + + 5/1 + --- +configure.in + - add call to AC_C_CONST to test `const' compiler behavior + - add call to AC_C_INLINE to test `inline' compiler behavior + - add call to AC_C_STRINGIZE to test cpp #x stringizing operator + +config.h.in + - add `#undef const' for configure to substitute + - add `#undef inline' for configure to substitute + - add `#undef HAVE_STRINGIZE' for configure to substitute + +include/stdc.h + - remove code that defines or undefines `const' and `inline' + - change the __STRING macro to be defined depending on the value + of HAVE_STRINGIZE + +lib/malloc/malloc.c + - change the __STRING macro to be defined depending on the value + of HAVE_STRINGIZE + +lib/readline/{readline,rlprivate}.h + - moved rl_get_termcap to readline.h, making it a public function + +lib/readline/readline.h + - new #define, RL_READLINE_VERSION, hex-encoded library version + number, currently set to 0x0402 + - new public int variable, rl_readline_version + +lib/readline/readline.c + - #define RL_READLINE_VERSION if it is not already defined (which it + should be in readline.h) + - initialize rl_readline_version to RL_READLINE_VERSION + +lib/readline/doc/rltech.texinfo + - documented rl_get_termcap + - documented rl_readline_version + +jobs.c + - job_exit_status should return an int, not a WAIT (undetected + before because on most POSIX-like systems a WAIT is really an int) + +builtins/evalfile.c + - added FEVAL_REGFILE (file must be a regular file) to accepted + _evalfile flags + - fc_execute_file() adds FEVAL_REGFILE to _evalfile flags. This + means that startup files and files read with `.' no longer need + to be regular files + + 5/2 + --- + +lib/termcap/Makefile.in + - fix target for installed termcap library (normally unused) + +lib/tilde/Makefile.in + - fix install target to install in $(libdir) (normally unused) + +Makefile.in + - don't make $(man3dir) since there's nothing installed there + +Makefile.in,doc/Makefile.in + - change `man1ext' to `.1', `man3ext' to `.3' + - change appropriate install targets to use new values of man[13]ext + - use `test ...' instead of `[...]' + - add support for DESTDIR root installation prefix, for package + building (installdirs, install, install-strip, uninstall targets) + +builtins/common.c + - new function int get_exitstat(WORD_LIST *list) returns an eight-bit + exit status value for use in return, exit, logout builtins + +builtins/common.h + - extern declaration for get_exitstat() + +builtins/{exit,return}.def + - call get_exitstat where appropriate + +builtins/printf.def + - add support for "'" flag character as posix 1003.2-200x d6 says + - fix core dump when user-supplied field width or precision is 0 + - fix to printstr() to handle zero-length precision with `%b' format + specifier (printf '%.0b-%.0s\n' foo bar) + - fix to printstr() to treat a negative field width as a positive + field width with left-justification + - fix to mklong to avoid static buffers, which can always be overrun + by someone sufficiently motivated + +bashline.c + - change var in add_host_name to type `size_t' for passing to xrealloc + + 5/3 + --- +execute_cmd.c + - change restore_signal_mask to accept a sigset_t *, since a sigset_t + may not fit into a pointer, change call + +unwind_prot.c + - use a union UWP in restore_variable when restoring a variable whose + size is the same as sizeof(int), the reverse of the method used to + store it in unwind_protect_int + +builtins/printf.def + - use a #define LENMODS containing the length modifiers instead of + testing against each possible modifier character, save any mod + character found + - add support for ISO C99 length specifiers `j', `t', and `z' + - if `L' modifier is supplied with a floating point conversion char, + pass a `long double' to printf if HAVE_LONG_DOUBLE is defined + +configure.in,config.h.in + - call AC_C_LONG_DOUBLE to check for `long double'; define + HAVE_LONG_DOUBLE if supported + +bashline.c + - fix an inadvertantly-unclosed comment in attempt_shell_completion + - make set_saved_history return a value + - make dynamic_complete_history return a useful value + +{make_cmd,execute_cmd,shell,subst,trap,variables,input,unwind_prot,test, +pcomplete}.c + - removed some declared-but-unused variables + +builtins/{cd,enable,fc,set,setattr,type,umask,printf,complete}.def + - removed some declared-but-unused variables + +lib/sh/{zread,netopen}.c + - removed some declared-but-unused variables + +execute_cmd.c + - in execute_arith_command, use a long variable to hold the result + of evalexp(), since that's what it returns + +builtins/evalstring.c + - make cat_file return -1 on a read or write error + +lib/sh/stringlib.c + - make merge_stringlists() return the right value + + 5/7 + --- +pcomplete.c + - remove typo that caused empty declaration (;;) + +parse.y + - fix yyerror() to accept a single string argument; fix callers + +trap.c + - cast pointer to long instead of int when printing message with + internal_warning() in run_pending_traps() + +subst.c + - fix process_substitute to handle stdin being closed + +test.c + - change `while' to `if' in and() and or(), since the loop isn't + actually performed -- there's an unconditional `return' in the + loop body + - check for integer overflow of arguments to `-t' + +lib/sh/netopen.c + - change _getserv() to reject negative port/service numbers + +expr.c + - fix strlong() to not convert the base specification from long to + int before checking for overflow, since truncation on machines + where sizeof(int) != sizeof(long) may mask errors + +builtins/{jobs,kill,wait}.def + - use legal_number instead of atoi when converting strings to pid_t; + check for numeric overflow + +input.c + - fix for cygwin in b_fill_buffer -- off-by-one error when checking + buffer for \r\n termination + +general.h + - new #define INT_STRLEN_BOUND(t), computes max length of string + representing integer value of type T, possibly including a sign + character + - include if it's present + +{execute_cmd,findcmd,test}.c + - don't include , since general.h does it now + +{execute_cmd,lib/sh/itos,pcomplete,print_cmd,subst,variables}.c + - use INT_STRLEN_BOUND instead of static array sizes when converting + various strings to integer values + +shell.h + - struct fd_bitmap now uses an `int' size, since it's bounded by + the number of file descriptors, which must fit into an `int' + +execute_cmd.c + - FD_BITMAP_DEFAULT_SIZE is now 32, not 32L + - new_fd_bitmap takes an `int' size parameter, not a `long' + +execute_cmd.h + - change prototype for new_fd_bitmap() + +test.c + - fix test_stat to check for overflow when parsing the integer file + descriptor number; return ENOENT instead of EBADF for files that + are not open + +hashlib.c + - don't discard the upper 32 bits of the random value, if present + +lib/readline/shell.c + - use the same INT_STRLEN_BOUND mechanism to decide how much space to + allocated in sh_set_lines_and_columns + + 5/8 + --- +aclocal.m4 + - add check for libtinfo (termcap-specific portion of ncurses-5.2) to + BASH_CHECK_LIB_TERMCAP + - new macro, RL_LIB_READLINE_VERSION, checks version of installed + readline library and (optionally) writes version #defines to + config.h. Bash doesn't use the version defines + +configure.in + - call RL_LIB_READLINE_VERSION instead of support/rlvers.sh + +execute_cmd.c + - fix execute_shell_script and the WHITECHAR and STRINGCHAR macros + to check array bounds before indexing into the sample string + +unwind_prot.[ch] + - import new versions submitted by Paul Eggert + with a couple of changes for backwards compatibility, so the rest + of the source doesn't need to be changed yet + +jobs.c + - use unwind_protect_var on last_made_pid in run_sigchld_trap + +builtins/bind.def + - use unwind_protect_var on rl_outstream + +general.c + - rework print_rlimtype to use INT_STRLEN_BOUND and handle the + most negative number correctly + +expr.c + - `tokval' should have been a `long', since all arithmetic is done + as longs + +builtins/history.def + - consolidate tests for valid history position in one block to + avoid duplicate code and strings + +builtins/ulimit.def + - fix check for overflow when setting limit to work when int is 32 + bits and RLIMTYPE is 64 + +lib/sh/tmpfile.c + - don't truncate the result of time(3) to int; just use time_t, + since it's being assigned to an `unsigned long' + +mailcheck.c + - use legal_number instead of atoi in time_to_check_mail() to catch + more numeric errors; consolidate error checking in one block + - last_time_mail_checked should be a time_t + + 5/9 + --- +builtins/set.def + - recognize `set [-+]o nolog' if HISTORY is defined + +bashline.c + - new variable `dont_save_function_defs', set by `set -o nolog'; + currently ignored + +command.h + - the `dest' member of a REDIRECTEE is now an `int' + +parse.y,redir.c + - changed uses of `redir.test' (where redir is a REDIRECTEE) since + it's now an int + +lib/readline/rlstdc.h + - don't mess around with `const', rely on configure to supply a + proper definition if the compiler doesn't support it + +lib/tilde/tilde.h + - include if HAVE_CONFIG_H is defined + - don't mess around with `const', rely on configure + +builtins/shopt.def + - new read-only `shopt' option, login_shell, non-zero if shell is a + login shell (as decided by shell.c) + - new function set_login_shell(), sets shopt private value of + login_shell + +builtins/common.h + - new extern declaration for set_login_shell + +shell.c + - call set_login_shell after setting value of login_shell (in + main() and set_shell_name()) + +parse.y + - added new `\A' prompt string escape sequence: time in 24-hour + HH:MM format + +configure.in, config.h.in + - check for , define HAVE_GRP_H if found + +builtins/complete.def + - add new `-A group/-g' option to complete group names + +pcomplete.h + - new define for CA_GROUP, used with group name completion + +pcomplete.c + - add code to support CA_GROUP group name completion + +bashline.c + - new function, bash_groupname_completion_function(), supports + programmable completion of group names + +bashline.h + - extern declaration for bash_groupname_completion_function + +lib/readline/bind.c + - new inputrc variable, `match-hidden-files', controls completion + matching files beginning with a `.' (on Unix) + +lib/readline/complete.c + - new variable, _rl_match_hidden_files, mirrors `match-hidden-files' + inputrc variable + +lib/readline/rlprivate.h + - extern declaration for _rl_match_hidden_files + +builtins/hash.def + - new `-t' option to list hash values for each filename argument + +builtins/read.def + - alarm(3) takes an `unsigned int' argument, not int + - check for arithmetic overflow with -t and -n options + +input.c + - check for read error before doing \r\n translation on cygwin in + b_fill_buffer + - reset bp->b_used to 0 instead of leaving it at -1 on read error + in b_fill_buffer + +builtins/shopt.def + - new functions, shopt_setopt(name, mode) and + shopt_listopt(name, mode) to give the rest of the shell an easy + interface + +builtins/common.h + - extern declarations for shopt_setopt and shopt_listopt + +shell.c + - new invocation options -O and +O, to list or set/unset shopt + options like +o/-o sets and unsets `set -o' options + +doc/{bash.1,bashref.texi} + - document `set -o nolog' + - document `login_shell' shopt option + - document new `\A' prompt string escape sequence + - document new `-t' option to `hash' + - document new `[+-]O' invocation option + +doc/bashref.texi + - add text to `Invoking Bash' section defining a login shell; text + taken from man page + +doc/bash.1, lib/readline/doc/rluser.texinfo + - documented new complete/compgen `-A group/-g' option + +lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1 + - documented new `match-hidden-files' inputrc variable + + 5/10 + ---- +configure.in + - fix AC_CHECK_PROG(ar, ...) + - add AC_CHECK_TYPE for ssize_t + +config.h.in + - new #undef for ssize_t + +lib/sh/zread.c + - int -> ssize_t fixes to mirror modern declarations of read and write + - the `off' variable in zsyncfd should be an off_t since it computes + a file offset + - the local buffer `lbuf' is now char, since it's not nice to pass + unsigned char * to read(2), and the values from it are assigned to + a char anyway + - lind and lused are now size_t, since they index into a buffer + - set lused to 0 on read error + +lib/sh/zwrite.c + - change second argument to type `char *', since ISO C says you have + to pass a `char *' to `write' + +externs.h + - fix extern declarations of zread, zread1, zreadc, and zwrite + - prototype extern declaration of qsort_string_compare + - add extern declaration for history_delimiting_chars() from parse.y + +input.h + - b_used and b_inputp members ofr struct BSTREAM are now size_t + +builtins/evalstring.c + - the number of chars read with zread in cat_file should be assigned + to a variable of type ssize_t + +input.c + - the number of chars read with zread in b_fill_buffer should be + assigned to a variable of type ssize_t + - `localbuf' is now type char[], since POSIX says you shouldn't pass + unsigned char * to read(2) + - in getc_with_restart(), use a variable of type unsigned char to + get a value from the local buffer and return it + - in ungetc_with_restart, explicitly return the character arg passed + to avoid relying on localbuf being unsigned char + +subst.c + - the number of chars read with zread in read_comsub should be + assigned to a variable of type ssize_t + +mksyntax.c + - instead of casting to unsigned char * in addcstr, use a variable + of type unsigned char and let the compiler do the work + +parse.y + - instead of casting to unsigned char * in yy_readline_get, use a + variable of type unsigned char and let the compiler do the work + - ditto for yy_string_get and shell_getc (cast to unsigned char) + +subst.c + - instead of casting to unsigned char when assigning to ifscmap in + expand_word_internal, use a variable of type unsigned char and + let the compiler do the work + +lib/sh/strtrans.c + - instead of casting to unsigned char in ansic_quote, use a variable + of type unsigned char and let the compiler do the work + +builtins/evalstring.c + - remove extern declarations for zwrite and run_trap_cleanup; they're + in externs.h + - prototype cat_file forward declaration + +Makefile.in + - remove -I$(includedir) from INCLUDES and SUBDIR_INCLUDES + +aclocal.m4 + - change RL_LIB_READLINE_VERSION to set RL_PREFIX, RL_LIBDIR, + and RL_INCLUDEDIR to what it used to test the installed readline + library version for use by the caller + - change RL_LIB_READLINE_VERSION to not compute ac_cv_rl_prefix if + the caller has already assigned it a value + - rename _rl_prefix -> ac_cv_rl_prefix, _rl_libdir -> ac_cv_rl_libdir, + _rl_includedir -> ac_cv_rl_includedir + +configure.in + - change testing of whether to use the value of + $opt_with_installed_readline to be != no, to allow the user to + specify a prefix where the installed readline library may be found + - if --with-installed-readline=PREFIX is supplied, set ac_cv_rl_prefix + to PREFIX before calling RL_LIB_READLINE_VERSION + - if --with-installed-readline[=PREFIX] is supplied, don't set + RL_LIBDIR and RL_INCLUDEDIR; let RL_LIB_READLINE_VERSION take care + of it, set RL_INCLUDE=-I${RL_INCLUDEDIR} + - if --with-installed-readline[=PREFIX] is supplied, and we're + linking with the history library, assign $RL_LIBDIR to HIST_LIBDIR + so we use the same version of the installed readline and history + libraries + +Makefile.in, builtins/Makefile.in + - have configure substitute RL_INCLUDEDIR, set RL_INCLUDEDIR variable + +doc/bashref.texi + - updated description of --with-installed-readline configure option + +general.c + - moved QSFUNC typedef here from builtins/common.c + +{alias,bashline,variables,lib/sh/stringvec}.c + - cast fourth argument to qsort to (QSFUNC *) + +alias.c + - prototype forward declaration of qsort_alias_compare + +bashhist.c + - include for extern declaration of glob_pattern_p + - remove extern declaration of history_delimiting_chars; it's now + in externs.h + - prototype forward declarations of histignore_item_func, + maybe_add_history, and bash_add_history + +bracecomp.c + - remove extern declaration for sh_backslash_quote; it's in externs.h + +braces.c + - remove extern declaration for extract_command_subst; it's in subst.h + - prototype forward declarations for expand_amble, array_concat, and + brace_gobbler + +error.c + - prototype extern declaration of give_terminal_to, fix bad call + +{execute_cmd,expr,findcmd,jobs,mailcheck,nojobs,pcomplete,print_cmd,redir, +shell}.c + - prototype all static forward function declarations + +pcomplete.c + - changed some function parameters to `const char *' to avoid discarding + const qualifier + +make_cmd.c + - make_bare_word, make_word_flags, and make_word now take a + `const char *' string argument + +make_cmd.h + - changed extern declarations for make_bare_word and make_word + +print_cmd.c + - cprintf now takes a `const char *' as its first argument, like + xprintf and printf + - the conditional define for xprintf should have been HAVE_VPRINTF, + not HAVE_VFPRINTF + +shell.c + - in isnetconn(), the return value of sizeof() is size_t + +aclocal.m4 + - add inclusion of stddef.h if STDC_HEADERS is defined to 1 in + BASH_CHECK_TYPE + +configure.in + - add a call to BASH_CHECK_TYPE for socklen_t (type of third argument + to getpeername(2)) + + 5/11 + ---- +lib/readline/bind.c + - make `useq' a char array to pass to rl_macro_bind in + rl_parse_and_bind + +lib/readline/{{bind,isearch}.c,rlprivate.h} + - _rl_isearch_terminators is now a char *, not unsigned char * + +{subst,variables,lib/sh/tmpfile}.c + - dollar_dollar_pid is now a `pid_t' instead of `int' + +variables.c + - sbrand() now takes an `unsigned long' to set the seed value + - changed last_random_value to type int, since it's always between + 0 and 32767 + - use strtoul to convert the value in assign_random instead of atoi + - take out casts in any arguments to sbrand() + - take out cast to int in call to inttostr in set_ppid() + +subst.c + - don't cast last_asynchronous_pid when passing to itos() + +{sig,subst}.c + - prototype all static forward function declarations + + 5/14 + ---- +{test,trap,variables}.c + - prototype all static forward function declarations + +variables.c + - free_variable_hash_data() now takes a PTR_T, a `generic pointer' + +builtins/{alias,bind,break,cd,complete,declare,enable,exit,fc,fg_bg,help, +history,jobs,pushd,read,set,trap,umask, + - prototype all static forward function declarations + +builtins/read.def + - reset_eol_delim now takes a `char *' arg, since that's what the + unwind_protect functions pass it, and it ignores its arguments + anyway + +lib/readline/{histsearch,input,kill,rltty,search,vi_mode}.c + - prototype all static forward function declarations + +lib/tilde/tilde.c + - prototype all static forward function declarations + - tilde_find_prefix, tilde_find_suffix, isolate_tilde_prefix, and + glue_prefix_and_suffix now take `const char *' arguments where + appropriate + +configure.in,config.h.in + - check for vsnprintf, define HAVE_VSNPRINTF if found + +lib/readline/display.c + - use vsnprintf() in rl_message if it's available; if we don't, at + least set the last character in msg_buf to 0 to avoid overrun -- + we really can't do anything about overflow at this point. if it's + available, this fixes buffer overflow problems in rl_message + + 5/15 + ---- +lib/readline/histexpand.c + - in get_history_word_specifier, allow any character to terminate + a `:first-' modifier, not just `:' and null. This is what csh + appears to do. This allows things like `!:0- xyzzy' to replace the + last argument with xyzzy + + 5/18 + ---- +configure.in, config.h.in + - check for , define HAVE_STDINT_H if found + - check for intmax_t in , define intmax_t as long if not + found + + 5/21 + ---- +builtins/kill.def + - change to use strerror() for error message when kill(2) fails + +aclocal.m4 + - new macro, BASH_C_LONG_LONG, check for `long long' + +configure.in, config.h.in + - call BASH_C_LONG_LONG, define HAVE_LONG_LONG if found + +lib/sh/snprintf.c + - new file, with implementations of snprintf, vsnprintf, asprintf, + and vasprintf, derived from inetutils version + +Makefile.in, lib/sh/Makefile.in + - add snprintf.c/snprintf.o + +configure.in, config.h.in + - add checks for snprintf, asprintf, vasprintf, with appropriate + cpp defines + +lib/readline/{rldefs,xmalloc}.h, lib/readline/xmalloc.c + - xmalloc and xrealloc now take `size_t' arguments, like their bash + counterparts + +externs.h,lib/sh/itos.c + - inttostr and itos now take `long' arguments + - inttostr takes a `size_t' argument for the buffer size + +{expr,lib/malloc/malloc,variables,general}.c + - fixed calls to itos() by removing casts, etc. + +subst.[ch] + - get_dollar_var_value now takes a long, not an int + - sub_append_number now takes a long, not an int + +subst.c + - in parameter_brace_expand_word, use a long and legal_number to + translate ${N}, to avoid overflow + - in parameter_brace_expand_length, use a long and legal_number to + translate ${#N}, to avoid overflow + - in do_array_element_assignment, array_expand_index, + array_value_internal, use arrayind_t instead of int + - let verify_substring_values take long * arguments for the return + value of evalexp() + - pass long * arguments to verify_substring_values in + parameter_brace_substring + - parameter_brace_expand_length now returns `long' + - parameter_brace_expand now uses a long variable for the return + value of parameter_brace_expand_length + - param_expand now uses a long variable for the return value from + evalexp + - array_length reference now returns an `arrayind_t', since it can + return the num_elements member of an array, which is of type + arrayind_t + +subst.h + - array_expand_index now returns an `arrayind_t' + +array.[ch] + - array_subrange now takes arrayind_t arguments, not `int' + - dup_array_subrange now uses arrayind_t local variable to do + array indexing + - use long to print array indices in print_element + +variables.c + - null_array_assign, assign_dirstack, bind_array_variable + now take arrayind_t arguments as array indices + - assign_array_var_from_word_list, assign_array_var_from_string, + unbind_array_element now use arrayind_t local variables for + array indexing + +variables.h + - change extern declaration of bind_array_variable + +builtins/common.[ch] + - get_numeric_arg now returns a `long', since it usually returns + the value of legal_number() + +builtins/{shift,break}.def + - use long variables for the return value of get_numeric_arg + +builtins/history.def + - convert string argument to int only if it's in range + +builtins/pushd.def + - set_dirstack_element and get_dirstack_element now take `long' + index arguments + - get_dirstack_index now takes a `long' index argument, since it's + passed the converted value from legal_number + +lib/sh/timeval.c + - in print_timeval, don't assume that the number of minutes fits into + an int, since it's just seconds/60. + +lib/sh/clock.c + - ditto for print_clock_t + + 5/22 + ---- +shell.c + - since the -O option settings may possibly be overridden by the + normal shell initialization or posix initialization, save the + invocation options on an alist (with add_shopt_to_alist) and + process them after basic initialization (with run_shopt_alist) + + 5/23 + ---- +trap.h + - new define, BASH_NSIG, all system signals plus special bash traps + +trap.c, builtins/trap.def + - use BASH_NSIG for array bounds and loops where appropriate + +trap.c + - change decode_signal to disallow numeric signal numbers above + NSIG -- this means you can only reference special traps like + DEBUG by name + - new SPECIAL_TRAP(s) macro to test whether s is one of the special + bash traps (currently DEBUG and EXIT) + - change reset_or_restore_signal_handlers so command substitution + doesn't inherit the debug trap (like ksh93), and child processes + don't have to rely on initialize_traps being run to get rid of + any debug trap + +support/mksignames.c + - add extra "ERR" signal name, value NSIG+1, allocate space for it + and write it out in signal_names[] + +trap.h + - new define: ERROR_TRAP == NSIG+1, change BASH_NSIG to NSIG+2 + - extern declarations for set_error_trap, run_error_trap + - new define: TRAP_STRING(s), expands to trap_list[s] if signal S + is trapped and not ignored, NULL otherwise + +trap.c + - add ERROR_TRAP to SPECIAL_TRAPS define + - initialize ERROR_TRAP stuff in initialize_traps + - new function: set_error_trap(command), sets the ERR trap string + - new function: run_error_trap(command), runs the ERR trap string + - set trap string for ERROR_TRAP to NULL in free_trap_strings + - change reset_or_restore_signal_handlers so child processes don't + inherit the ERR trap + - add case to call run_error_trap in maybe_call_trap_handler + +execute_cmd.c + - in execute_command_internal, keep track of ERR trap and call it if + necessary + - use TRAP_STRING to get the value of debug and error traps + - in execute_function, arrange things so the ERR trap is not inherited + by shell functions, and is saved and restored like the DEBUG trap + +doc/{bash.1,bashref.texi} + - documented new ERR trap + +tests/{trap.{tests,right},trap2.sub,trap2a.sub} + - added ERR trap tests + +subst.c + - on machines without /dev/fd, change the named pipe fifo list to a + list of structs containing pathname and proc information + - change unlink_fifo_list to kill the proc in the fifo list with + signal 0 and not remove the fifo if the proc is still alive. This + should fix the problem on those backward systems without /dev/fd + where fifos were removed when a job using process substitution was + suspended + + 5/24 + ---- +examples/loadables/getconf.h + - new file, with basic defines needed to make getconf work minimally + on POSIX systems without the necessary definitions + +examples/loadables/getconf.c + - replacement functions for confstr, sysconf, pathconf for systems + that lack them, providing a minimal posix interface + - heavily augmented getconf, now supports all POSIX.1-200x, + POSIX.2-200x, Solaris 7, AIX 4.2 getconf variables + + 5/29 + ---- +builtins/setattr.def + - make `readonly', `export', and `declare' print `invisible' variables + as just a command and variable name, without a value, when listing + all variables (as POSIX.2-200x d6 requires) + + 5/30 + ---- + +configure.in + - upgraded to autoconf-2.50 on main development machine, so require + autoconf-2.50 in preparation for using some if its new features + - call AC_C_PROTOTYPES + - remove call to AC_EXEEXT, which now does the wrong thing + - changed AC_INIT to new flavor + - added call to AC_CONFIG_SRCDIR + - AC_CONFIG_HEADER -> AC_CONFIG_HEADERS + - AC_RETSIGTYPE -> AC_TYPE_SIGNAL + +configure.in, aclocal.m4, config.h.in + - removed call to BASH_LARGE_FILE_SUPPORT, use AC_SYS_LARGEFILE + standard support, with new macros _FILE_OFFSET_BITS and + _LARGE_FILES + - removed definition of BASH_LARGE_FILE_SUPPORT + +doc/bashref.texi + - document new `--enable-largefile' configure option + +lib/readline/readline.c + - change rl_set_prompt to call rl_expand_prompt unconditionally, so + local_prompt and local_prompt_prefix get set correctly + + 6/6 + --- +lib/readline/complete.c + - don't append `/' or ` ' to a match when completing a symlink that + resolves to a directory, unless the match doesn't add anything + to the word. This means that a tab will complete the word up to + the full name, but not add anything, and a subsequent tab will add + a slash. Change to append_to_match; callers changed + +hashlib.c + - new function, hash_table_nentries (table), returns the number of + items in TABLE + +hashlib.h + - extern declaration for hash_table_nentries + +configure.in + - configure without bash malloc on openbsd; they claim it needs + eight-bit alignment (which the bash malloc provides, but...) + + 7/2 + --- +stringlib.c + - only call RESIZE_MALLOCED_BUFFER from strsub() if the replacement + string length is > 0, avoid possible hangs if replacement is null + +subst.c + - don't include input.h; no longer needed + +configure.in + - remove calls to AC_SYS_RESTARTABLE_SYSCALLS and + BASH_SYS_RESTARTABLE_SYSCALLS; the results are no longer used + +config.h.in + - remove define for HAVE_RESTARTABLE_SYSCALLS + +aclocal.m4 + - removed definition of BASH_SYS_RESTARTABLE_SYSCALLS; no longer used + +execute_cmd.c + - changed select command so `return' no longer terminates the select + command, so it can be used to return from an enclosing function. + This is as ksh (88 and 93) does it + +lib/readline/vi_mode.c + - fix trivial typo in declaration of vi_motion; `t' appears twice; + the second instance should be `T' + + 7/3 + --- +configure.in + - don't add -static to LDFLAGS on Solaris 2.x. This means that the + auxiliary programs will be built as dynamic executables, but that + should do no harm + + 7/5 + --- +lib/glob/fnmatch.c + - fix the code that processes **(pattern) to short-circuit if the + pattern is ill-formed or lacks a trailing `)' -- this fixes the + segfault on **(/*) + +Makefile.in, builtins/Makefile.in + - split CCFLAGS into CCFLAGS_FOR_BUILD and CFLAGS, to aid in + cross-compilation + - build programs that use $(CC_FOR_BUILD) using $(CCFLAGS_FOR_BUILD) + +configure.in, config.h.in + - check for getaddrinfo(3), define HAVE_GETADDRINFO if found + +lib/sh/netopen.c + - implemented a version of _netopen (_netopen6) that uses + getaddrinfo(3) if available, use if HAVE_GETADDRINFO is defined. + old _netopen is _netopen4; _netopen now calls either _netopen6 + or _netopen4 as appropriate + + 7/9 + --- +builtins/exit.def + - don't source ~/.bash_logout if subshell_environment is non-zero + +execute_command.c + - in execute_until_or_while, handle the case where `breaking' is + set in the loop test (e.g., by the job control code when a job + is stopped with SIGTSTP), but the return value from the test is + something that would cause the loop to break. Need to decrement + `breaking' in this case + + 7/10 + ---- +execute_cmd.c + - in execute_in_subshell, make sure a command of type cm_subshell + inherits its `enclosing' command's CMD_IGNORE_RETURN flag + +variables.c + - in maybe_make_export_env, don't allow restricted shells to put + exported functions in the export environment + + 7/11 + ---- +lib/glob/strmatch.h + - renamed old fnmatch.h + - changed guard #ifdef to _STRMATCH_H + - include system if HAVE_LIBC_FNM_EXTMATCH is defined + +lib/glob/strmatch.c + - renamed old fnmatch.c + - include "strmatch.h" + - if HAVE_LIBC_FNM_EXTMATCH is defined, define a dummy version of + strmatch() that just calls fnmatch(3) + +lib/glob/glob.c + - include "strmatch.h" + - fnmatch -> strmatch + +Makefile.in, lib/glob/Makefile.in + - fnmatch -> strmatch + +{bashhist,execute_cmd,pathexp,pcomplete,shell,stringlib,subst,test}.c, +pathexp.h,builtins/help.def + - include + - fnmatch -> strmatch + +execute_cmd.c + - broke the code that parses the interpreter name from a #! line + out from execute_shell_script to a new function, getinterp() + - call getinterp from execute_shell_script + - use return value from getinterp in error message about bad + #! interpreter in shell_execve + + 7/12 + ---- +lib/readline/isearch.c + - the last isearch string is now remembered in a new static variable, + last_isearch_string + - if ^R^R is typed, readline now searches for the remembered isearch + string, if one exists + + 7/24 + ---- +pcomplete.h + - extern declaration for completions_to_stringlist() + + 7/25 + ---- +builtins/complete.def + - make compgen handle -o default option + - make compgen return success only if sl->list_len is non-zero, + indicating that there are items on the list + + 7/31 + ---- +execute_cmd.c + - in execute_connection, force stdin to /dev/null for asynchronous + commands if job control is not active, not just if the shell is + running a shell script (since you can run `set -m' in a script) + +lib/readline/rltty.c + - make sure _rl_tty_restore_signals resets `tty_sigs_disabled' on + successful restoration of the terminal modes + - make sure _rl_tty_disable_signals turns off IXON so that ^S and + ^Q can be read by rl_quoted_insert + + 8/1 + --- +aclocal.m4 + - new check for FNM_EXTMATCH being defined in , as Ullrich + Drepper intends to do for new versions of GNU libc + +config.h.in + - new definition for HAVE_LIBC_FNM_EXTMATCH + +configure.in + - check for fnmatch, but don't define anything in config.h + - call BASH_FUNC_FNMATCH_EXTMATCH to check for FNM_EXTMATCH + + 8/2 + --- +alias.h + - remove bogus extern declaration for xmalloc() + - include "stdc.h" + - add prototype declarations for all extern function declarations + +xmalloc.c,lib/readline/xmalloc.c + - fix xmalloc to return a PTR_T + - fix xrealloc to return a PTR_T and take a PTR_T as first argument + +include/ansi_stdlib.h + - extern declarations for malloc and realloc have them return PTR_T + +xmalloc.h + - new file, with extern declarations for functions in xmalloc.c + +general.h + - removed extern declarations for functions in xmalloc.c + - include xmalloc.h + +Makefile.in,builtins/Makefile.in + - update dependencies to include xmalloc.h + +parse.y,{alias,array,bashline,bracecomp,execute_cmd,findcmd,flags,general, +hashcmd,locale,mailcheck,make_cmd,pathexp,pcomplete,print_cmd,stringlib, +subst,unwind_prot,variables}.c +builtins/{common,evalfile}.c +builtins/{cd,command,enable,exec,printf,read,set}.def +lib/sh/{makepath,netopen,pathphys,setlinebuf,shquote,snprintf,stringlist, +strtrans,tmpfile}.c +lib/readline/{util,terminal,shell,readline,macro,kill,isearch,input, +histfile,histexpand,display,complete,bind}.c + - make sure all calls to xmalloc are cast to the right return value + +siglist.c + - include xmalloc.h + +parse.y,{alias,bashline,bracecomp,expr,make_cmd,nojobs,print_cmd,subst}.c +builtins/{fc,printf,read}.def +lib/sh/snprintf.c, lib/tilde/tilde.c +lib/readline/{bind,display,histexpand,isearch,macro,util,vi_mode}.c + - make sure all calls to xrealloc are cast to the right return value + +lib/sh/{netopen,setlinebuf,shquote,snprintf}.c, lib/tilde/tilde.c + - include xmalloc.h, remove extern declaration of xmalloc + +lib/readline/xmalloc.h + - xmalloc and xrealloc should return PTR_T + +lib/readline/rldefs.h + - don't include an extern declaration for xmalloc + + 8/7 + --- +support/shobj-conf + - fixed up commented-out stanzas for HP's unbundled C compiler on + HP/UX + +support/bashbug.sh + - force the subject to be changed from the default + +lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1 + - document that transpose-words swaps the last two words on the line + if point is at the end of the line + + 8/9 + --- +stringlib.c + - fix possible infinite recursion problem with null pattern in + strsub() + +hashlib.c + - new function copy_hash_table to copy a hash table using a caller- + supplied function to copy item data (defaults to savestring()) + +hashlib.h + - new extern declaration for copy_hash_table + +builtins/declare.def + - changes so that declare [-a] var=value assigns `value' to element 0 + of array variable `var' like ksh93 + - change so that declare [-a] var[N]=value assigns `value' to element + N of array variable `var' like ksh93 + + 8/13 + ---- +arrayfunc.c + - new file, for miscellaneous array functions + +arrayfunc.h + - new file, extern declarations for functions in arrayfunc.c + +variables.c + - move convert_var_to_array, bind_array_variable, + assign_array_from_string, assign_array_var_from_word_list, + assign_array_var_from_string, quote_array_assignment_chars, + skipsubscript, unbind_array_element, print_array_assignment + to arrayfunc.c + +shell.h + - include arrayfunc.h after variables.h + +variables.h + - remove above extern function declarations moved to arrayfunc.h + - add extern declaration for var_lookup + +Makefile.in + - add arrayfunc.c, arrayfunc.h in appropriate places + - add arrayfunc.h to dependencies + +subst.c + - move valid_array_reference, array_expand_index, array_variable_part, + array_value_internal, array_value (now global), get_array_value, + do_array_element_assignment to arrayfunc.c + +subst.h + - extern declarations for functions above moved to arrayfunc.h + +arrayfunc.h + - extern declarations for above functions from subst.c + +subst.[ch] + - string_list_dollar_star and string_list_dollar_at are now global + functions + - quote_escapes is now a global function + +subst.c + - maybe_expand_string -> expand_string_if_necessary + - expand_string_to_string -> expand_string_to_string_internal + - new functions: expand_string_to_string and + expand_string_unsplit_to_string, which call + expand_string_to_string_internal with expand_string and + expand_string_unsplit as the FUNC arguments, respectively + +arrayfunc.c + - change array_expand_index to call expand_string_to_string instead + of maybe_expand_string + + 8/14 + ---- +shell.c + - in execute_env_file, call expand_string_unsplit_to_string + +mailcheck.c + - in check_mail, call expand_string_to_string + +variables.c + - in assign_in_env, call expand_string_unsplit_to_string + +arrayfunc.c + - new function, array_variable_name, splits an array reference into + a name (which is returned as a new string) and subscript + - change array_variable_part to just call array_variable_name and + look up the string returned with find_variable + - new function, find_or_make_array_variable (name, flags) which will + look up an array variable and convert a string variable to an + array if necessary. The FLAGS argument, if non-zero, says to + check the readonly and noassign attributes and fail if either is set + +builtins/read.def + - make `read -a aname' honor any readonly status of `aname' + - read -a now calls find_or_make_array_variable with FLAGS value 1 + +arrayfunc.[ch], subst.c, builtins/{declare,read}.def + - do_array_element_assignment -> assign_array_element + + 8/20 + ---- +parse.y + - changed `for' command grammar to allow missing word list after `IN' + token, like latest POSIX drafts require + +lib/sh/tmpfile.c + - in sh_mktmpname(), check for filenum == 0 and init to non-zero number + in this case. it can happen on arithmetic overflow + +support/mkversion.sh + - added `[0-9].[0-9][0-9][a-z]' as an acceptable value for a + distribution to allow for intermediate versions, like 2.05a + +support/config.guess + - removed the addition of the output of `/usr/bin/objformat' when + creating the canonical name on FreeBSD machines, so the canonical + name is once again `freebsd4.2' instead of `freebsdelf4.2' + + 8/22 + ---- +lib/readline/{rlstdc,history,keymaps,readline,rldefs,rlprivate,rlshell, +rltypedefs,xmalloc}.h +lib/readline/{bind,compat,complete,display,funmap,histexpand,histsearch, +input,isearch,kill,nls,parens,readline,rltty,search,shell,signals,vi_mode + - changed __P to PARAMS + +lib/tilde/tilde.[ch] + - changed __P to PARAMS + +{Makefile,configure}.in + - changed the version number to 2.05a + - changed the release status to `alpha1' + + 8/23 + ---- +support/shobj-conf + - support for building shared libraries on Darwin/MacOS X + +siglist.h + - extern declaration for strsignal() to compensate for lack of + a definition in some system include files + +jobs.c + - remove casts from strsignal() calls + +[bash-2.05a-alpha1 frozen] + + 8/27 + ---- +[bash-2.05a-alpha1 released] + + 8/27 + ---- +execute_cmd.c + - fix eval_arith_for_expr to handle the case where the expanded + word list is NULL, returning 0 in this case + +print_cmd.c + - in print_function_def, make sure that func_redirects is assigned + a value before being used + + 8/28 + ---- +alias.c + - include for definition of isalpha() + +bashhist.h + - add prototypes for extern function declarations + +flags.c + - include bashhist.h for extern function declarations + +mksyntax.c + - include if HAVE_UNISTD_H is defined in config.h + +parse.y + - include test.h for extern function declarations + +externs.h + - change extern declaration for setlinebuf to sh_setlinebuf + +stringlib.c + - include for extern function declarations + +variables.h + - add function prototypes for all of the sv_* functions + +builtins/common.h + - add extern declarations for set_shellopts() and parse_shellopts() + from builtins/set.def + +variables.c + - include "hashcmd.h" for extern declaration for flush_hashed_filenames + - include "pathexp.h" for extern declaration for setup_glob_ignore + +lib/malloc/malloc.c + - cast to `long' instead of `int' in memalign for 64-bit machines + +{pcomplete,trap}.c + - changed printf escape sequences used to print pointers to %p + +lib/readline/undo.c + - include "xmalloc.h" for extern function declaration + +input.h + - add function prototypes to extern declarations for getc_with_restart + and ungetc_with_restart + +variables.[ch] + - changed type of `function' member of `struct name_and_function' to + `sv_func_t', which is defined and prototyped in variables.h + - map_over now takes an `sh_var_map_func_t *' + +shell.h + - start of a set of function pointer typedefs like those in + lib/readline/rltypedefs.h + +hashlib.[ch] + - second paramter to flush_hash_table is now an `sh_free_func_t *' + +trap.c + - parameter to reset_or_restore_signal_handlers is now an + `sh_resetsig_func_t *' + +pcomplete.h, pcomplib.c + - function pointer argument to print_all_compspecs is now an + `sh_csprint_func_t *' + - function pointer `list_getter' element of an `ITEMLIST' is now + prototyped with __P((...)) instead of using `Function *' + +jobs.[ch] + - `j_cleanup' member of a JOB is now an `sh_vptrfunc_t *' + +alias.c + - map_over_aliases now takes an `sh_alias_map_func_t *' + - free_alias_data now takes a `PTR_T' + +pathexp.c + - function pointer argument to ignore_globbed_names is now an + `sh_ignore_func_t *' + +bashline.c + - function pointer argument to _ignore_completion_names is now an + `sh_ignore_func_t *' + +pathexp.h,{bashhist,bashline.c + - `item_func' member of a `struct ignorevar' is now an + `sh_iv_item_func_t *' + +builtins/evalfile.c + - `errfunc' is now an `sh_vmsg_func_t *' + +jobs.c + - map_over_job now takes an `sh_job_map_func_t *' as its first argument + +array.[ch] + - function pointer argument to array_walk is now an + `sh_ae_map_func_t *' + +general.c + - tilde_expansion_preexpansion_hook has type `tilde_hook_func_t *', + and so the assignment in tilde_initialize doesn't need a cast + +list.c + - map_over_words now takes an `sh_icpfunc_t *' as its second argument + +input.h + - the `getter' and `ungetter' function pointer members of a + BASH_INPUT are now of types `sh_cget_func_t *' and + `sh_cunget_func_t *' respectively + - init_yy_io now takes an `sh_cget_func_t *' as its first argument and + an `sh_cunget_func_t *' as its second + +parse.y + - init_yy_io now takes an `sh_cget_func_t *' as its first argument and + an `sh_cunget_func_t *' as its second + - initialize_bash_input casts bash_input.getter and bash_input.ungetter + appropriately + +builtins/mkbuiltins.c + - make the extern function definitions written to builtext.h have + prototypes with __P((...)) + - include "stdc.h" + - change Function to mk_handler_func_t + - fixed comment_handler to take the right number of args + - prototyped all the handler functions with __P((...)) + +builtins.h + - the `function' member of a struct builtin is now of type + `sh_builtin_func_t *' + +builtins/common.[ch] + - last_shell_builtin, this_shell_builtin are now of type + `sh_builtin_func_t *' + - find_shell_builtin, builtin_address, find_special_builtin now return + `sh_builtin_func_t *' + +builtins/exit.def, {execute_cmd,jobs,nojobs,variables}.c, parse.y + - changed all declarations of last_shell_builtin and this_shell_builtin + +execute_cmd.c + - execute_builtin, execute_builtin_or_function, + execute_subshell_builtin_or_function now take an + `sh_builtin_func_t *' instead of a `Function *' for argument + - changed appropriate variables from `Function *' to + `sh_builtin_func_t *' + +builtins/{bind,builtin,enable,read,setattr}.def + - replaced uses of `Function *' in variable declarations with + appropriate types (sh_builtin_func_t * or rl_command_func_t *) + +builtins/set.def + - set_func and get_func members of binary_o_options are now of types + `setopt_set_func_t *' and `setopt_get_func_t *', which are + prototyped + +builtins/shopt.def + - set_func member of shopt_vars is now of type `shopt_set_func_t *' + +bashline.c + - enable_hostname_completion now returns `int' (the old value of + perform_hostname_completion) + +[The only use of Function and VFunction now is for unwind-protects] + + 9/4 + --- +lib/sh/getcwd.c + - use const define from config.h rather than `CONST' + - use PTR_T define from xmalloc.h rather than `PTR' + - include xmalloc.h for PTR_T + - remove PATH_MAX define, rely on value from maxpath.h + +{general,mailcheck}.c, lib/sh/{pathcanon,pathphys}.c + - don't include maxpath.h directly; it's already included by shell.h + +lib/sh/mailstat.c + - new `mailstat()' implementation, to stat a mailbox file for + mail checking. handles maildir-style mail directories with one + file per message and creates a dummy stat struct from them + +lib/sh/Makefile.in + - add mailstat.c and mailstat.o in the appropriate places + +lib/malloc/malloc.c + - augmented implementation with wrapper functions that pass in file + and line number information from cpp. currently unused, but a + placeholder for future debugging and use tracking + +lib/malloc/shmalloc.h + - new file, extern declarations for allocation wrapper functions for + use by the shell (and others, I guess) + +xmalloc.[ch] + - wrapper functions for xmalloc, xfree, xrealloc (sh_ prefixed) that + pass cpp line number information through to the malloc functions, + if USING_BASH_MALLOC is defined + + 9/5 + --- +lib/malloc/gmalloc.c + - removed; no longer part of distribution + +lib/malloc/Makefile.in + - removed references to gmalloc.[co] + +configure.in, doc/bashref.texi + - removed references to `--with-glibc-malloc' configure option + +{configure,Makefile}.in + - changed the way bash malloc is configured into the Makefile, making + it more like how readline is configured. If the bash malloc is + not configured in, nothing in lib/malloc will be built + + 9/6 + --- +lib/malloc/imalloc.h + - new file, some internal malloc definitions + +lib/malloc/mstats.h + - new file, definitions for malloc statistics structs and functions + +lib/malloc/trace.c + - new file, malloc tracing functions (currently just print messages + to stderr), code is #ifdef MALLOC_TRACE + +lib/malloc/stats.c + - new file, moved malloc stats code from malloc.c to here + +lib/malloc/malloc.c + - moved some definitions to imalloc.h + - moved stats code to stats.c + - malloc tracing calls added to internal_{malloc,realloc,free}, all + #ifdef MALLOC_TRACE + +lib/malloc/Makefile.in, Makefile.in + - added {imalloc,mstats}.h, {trace,stats}.c + +parse.y + - changed decode_prompt_string to save and restore $? + (last_command_exit_value) around calls to expand_prompt_string(), + so command substitutions in PS1, etc. don't change $? + +{array,subst}.c + - a couple more arrayind_t fixes from Paul Eggert + +configure.in + - remove redundant check for wait3(2) + +redir.h + - fixed a typo (stdin_redirs -> stdin_redirects) + + 9/10 + ---- +execute_cmd.c + - remove check for \n and \r from WHITESPACE macro, since those + chars are not whitespace as returned by the whitespace(c) macro + - getinterp now takes a `char *' as first arg, not unsigned char * + - execute_shell_script now takes a `char *' as first arg, not + unsigned char * + - fix typo in forward declaration for `initialize_subshell' + +general.[ch] + - check_binary_file now takes a (char *) argument, not unsigned char * + - pass unsigned char to isspace and isprint because of ISO C fuckup + - bash_tilde_expand now takes a `const char *' as its argument + +builtins/evalfile.c, shell.c + - buffer passed to check_binary_file is char, not unsigned char + +parse.y + - fix extern declaration for yyerror() + - yyerror now takes a `const char *' as first arg + +{error,jobs}.c + - fixes to printf-style functions to handle pids wider than an int + +lib/readline/{isearch,vi_mode}.c + - fix call to rl_message in rl_display_search (remove extra arg) + +variables.c + - fix missing argument to builtin_error in make_local_variable + +builtins/getopts.def + - since getopts takes no options, change while loop calling + internal_getopts to a simple `if' check + +builtins/printf.def + - since printf takes no options, change while loop calling + internal_getopts to a simple `if' check + +lib/readline/bind.c + - remove _SET_BELL macro, expand code inline + +lib/readline/input.c + - change _rl_input_available to use either select or FIONREAD, + but not both + +lib/readline/readline.c + - fix rl_digit_loop to remove unreachable code at end of loop + +{bashhist,bashline,expr,jobs,redir,shell}.c, builtins/fc.def, lib/sh/snprintf.c + - bracket unused functions with #ifdef INCLUDE_UNUSED/#endif + - remove some unused variables + +execute_cmd.c + - remove #ifdef'd code that allowed `return' to terminate a select + statement + +expr.c + - remove some extraneous tests from strlong() + +array.h + - arrayind_t is now a long, since shell arithmetic is performed as + longs + - remove second declaration of new_array_element + +builtins/printf.def + - in mklong, xrealloc cannot return NULL, so don't check for it + - remove some #if 0 code + - fix core dump triggered by a format specification with more than + one `*' + - remove `foundmod', since its value mirrors `modchar != 0' + - include "common.h" for builtin_{error,usage} declarations + +Makefile.in,builtins/Makefile.in + - updated some dependencies due to new include files + +pcomplete.c + - include "execute_cmd.h" for declaration of execute_shell_function + +arrayfunc.c + - include for printf + - include "builtins/common.h" for builtin_error declaration + +builtins/evalstring.c + - include "../trap.h" for run_trap_cleanup declaration + +builtins/help.def + - include "common.h" instead of locally declaring builtin_error + and builtin_usage + +error.h + - add extern declaration for itrace() + - add prototype to extern declaration of get_name_for_error + - file_error now takes a `const char *' as first argument + +externs.h + - added prototype for sh_setlinebuf declaration, bracketed with + NEED_SH_SETLINEBUF_DECL so we don't need stdio.h everywhere + - add extern declaration for parse.y:return_EOF() + +shell.c + - add NEED_SH_SETLINEBUF_DECL before including shell.h + +lib/readline/callback.c + - include or "ansi_stdlib.h" for abort declaration + +quit.h + - remove declaration of throw_to_top_level + +subst.c + - remove unused extern declaration for getopts_reset + +lib/sh/netopen.c + - include for legal_number, etc. + - add prototype for inet_aton extern declaration + +lib/sh/clock.c + - include for __P declaration + - add extern declaration for get_clk_tck + +support/mkversion.sh + - changed so that extern function declarations for functions in + version.c (moved from externs.h) are in the generated version.h + +shell.h + - include version.h + +version.c + - various `char *' version variables are now `const char *' + +general.h + - add prototype for same_file, bracketed with _POSIXSTAT_H + #ifdef, since that's what include/posixstat.h defines + +builtins/common.[ch] + - _evalfile, maybe_execute_file, source_file, and fc_execute_file + now take a `const char *' as their first argument + +eval.c + - removed extern declaration of yyparse; it's in externs.h + +parse.y + - added prototypes to static forward function declarations + - changed local `all_digits' variable in read_token_word () to + all_digit_token to avoid clash with all_digits() function in + general.c + +{bashhist,copy_cmd,make_cmd,hashlib,mailcheck}.c + - added prototypes for static function declarations + +shell.h + - add extern declarations for interactive, interactive_shell, + changed c files with extern declarations + +pcomplete.c + - changed it_init_aliases to avoid shadowing global variable + `aliases' + +bashline.c,pathexp.c,general.h + - sh_ignore_func_t is now a pointer to a function taking a + `const char *'; users changed + +configure.in + - test for + +config.h.in + - add #undef HAVE_STRINGS_H + +bashansi.h + - change like recommended in autoconf manual + + 9/11 + ---- +[a date which will live in infamy. prayers for the victims.] + +execute_cmd.c + - don't use an absolute index into abuf in mkfmt, use + sizeof(abuf) to compute last index + +builtins/common.c + - fix read_octal to do a better job of detecting overflow while + iterating through the string + +builtins/umask.def + - change octal-print mode to print 4 digits, like other shells + - cast umask to unsigned long to avoid problems on systems where + it's wider than an int (POSIX doesn't guarantee that mode_t is + no wider than an int, but real-world systems use int) + +builtins/printf.def + - mklong can never return NULL (it uses xrealloc), so the mainline + doesn't need to check for NULL returns + - new function, getldouble (long double *), to get long doubles + - mklong now takes a `char *' as its second argument, the modifier(s) + to use + - changed use of `modchar' to handle more than a single modifier + character + - changed to handle `long double' and `L' formats better, rather + than discarding long double information + - since printf now follows the POSIX.2 rules for conversion errors, + we can dispense with the status returns from the get* functions + - make the get* functions as similar in structure as possible, + removing type casts, etc. + +lib/sh/timeval.c,execute_cmd.c + - change some instances of `long' to `time_t', for systems where + a time_t is bigger than a long + +jobs.c + - include "posixtime.h" instead of + +config.h.in + - add defines for HAVE_DECL_CONFSTR, HAVE_DECL_STRTOLD, + HAVE_DECL_SBRK, HAVE_DECL_PRINTF + - remove defines for SBRK_DECLARED and PRINTF_DECLARED + - add _GNU_SOURCE define + +configure.in + - add AC_CHECK_DECLS for strtold, confstr, sbrk, printf + - remove call to BASH_FUNC_SBRK_DECLARED + - remove call to BASH_FUNC_PRINTF + +xmalloc.c, lib/malloc/malloc.c + - change check of SBRK_DECLARED to HAVE_SBRK_DECL + +print_cmd.c + - change PRINTF_DECLARED to HAVE_DECL_PRINTF + +builtins/evalstring.c, builtins/common.h + - parse_and_execute now takes a `const char *' as its second argument + +input.h,parse.y + - with_input_from_* functions now take a `const char *' as their + second argument + - init_yy_io now takes a `const char *' as its fourth argument + +parse.y,externs.h + - parse_string_to_word_list now takes a `const char *' as its second + argument + +tests/builtins.right + - change output to account for extra digit in umask output + +pcomplib.c + - free_progcomp now takes a PTR_T argument + +builtins/bashgetopt.h + - include + - add prototypes to extern declarations + +builtins/shopt.def + - add prototypes to static function declarations + +builtins/{fc,umask,wait}.def, builtins/{bashgetopt,common}.c + - include for isdigit macro (referenced by `digit(x)') + +lib/readline/complete.c + - added more static function declarations with prototypes + + 9/12 + ---- +lib/sh/tmpfile.c + - use `^' instead of `*' in sh_mktmpname to make filenames a bit + more random + +include/stdc.h,lib/readline/rldstdc.h + - add __attribute__ definition + +builtins/common.h + - add printf __attribute__ to declaration of builtin_error + +error.h + - add printf __attribute__ to declaration of programming_error, + report_error, parser_error, fatal_error, sys_error, internal_error, + internal_warning + +lib/readline/readline.h + - add printf __attribute__ to declaration of rl_message + +pcomplete.c + - add printf __attribute__ to declaration of debug_printf + +print_cmd.c + - add printf __attribute__ to declarations of cprintf, xprintf + +include/chartypes.h + - new file, includes and defines macros that check for + safe (ascii) arguments before calling the regular ctype macros + +{alias,bashline,execute_cmd,expr,findcmd,general,locale,mksyntax,stringlib,subst,variables}.c +parse.y +builtins/{bashgetopt,common}.c +builtins/{fc,printf,umask,wait}.def +lib/glob/strmatch.c +lib/sh/{oslib,pathcanon,pathphys,snprintf,strcasecmp,strindex,stringvec,strtod,strtol,strtrans}.c +examples/loadables/{head,sleep}.c + - include "chartypes.h" or instead of + +Makefile.in,{builtins,lib/{glob,sh}}/Makefile.in + - update dependencies to include chartypes.h + +lib/sh/inet_aton.c + - use `unsigned char' instead of `char' to pass to ctype.h functions + +lib/sh/netopen.c + - check for '0' <= host[0] <= '9' in _getaddr instead of using + isdigit + +subst.c,lib/sh/shquote.c + - change array subscripts into sh_syntaxtab from `char' to + `unsigned char' + +{alias,bashline,execute_cmd,expr,general,subst}.c, parse.y +builtins/{fc,printf,umask,wait}.def builtins/{bashgetopt,common}.c +lib/sh/{pathcanon,pathphys,snprintf,strcasecmp,strindex,strtod,strtol,strtrans}.c +examples/loadables/{head,sleep}.c + - change to use some of the new macros in chartypes.h + - remove old local macro definitions now provided by chartypes.h + +general.h + - remove definition of isletter, ISOCTAL, digit, digit_value + - change legal_variable_starter and legal_variable_char to use + chartypes.h macros + - change ABSPATH to use chartypes.h macros + +lib/readline/util.c + - change to use Paul Eggert's FUNCTION_FOR_MACRO define to define + function replacements for macros in chardefs.h + +lib/readline/chardefs.h + - added some of the same macros as in chartypes.h + - change _rl_lowercase_p, _rl_uppercase_p, _rl_digit_p, + _rl_to_upper, _rl_to_lower to use new IS* macros + - added _rl_isident macro from vi_mode.c:isident + +lib/readline/{bind,complete,nls}.c + - change to use some of the new macros from chardefs.h + +lib/readline/vi_mode.c + - isident -> _rl_isident + - remove local defines of macros in chardefs.h + +lib/sh/strtol.c + - updated to new version, modified from glibc 2.2.4 and sh-utils-2.0. + This one can do strtoll and strtoull, if necessary + + 9/13 + ---- +builtins/ulimit.def + - changed get_limit so it retrieves both hard and soft limits + instead of one or the other + - changed callers of get_limit + - changed getmaxvm to take soft limit, hard limit as arguments + - changed getmaxuprc to just take a single argument, the value + - changed calls to printone() to pass soft limit or hard limit + depending on `mode' instead of using old current_limit variable + - moved check for out-of-range limits in ulimit_internal into the + block that converts a string argument to a value of type rlim_t + - changed RESOURCE_LIMITS struct to break the description into a + description string and separate scale factor string + - changed print_all_limits to print a single error message if + get_limit fails, including limits[i].description now that the + scale factor has been removed from the description string + - removed DESCFMT define, since it's now used only in printone() + - changed printone to print the option character associated with a + particular limit if we're printing multiple limits + - changed calls to builtin_error to print the description associated + with a limit if setting or getting the limit fails + - added support for new POSIX 1003.1-200x rlim_t values: + RLIM_SAVED_CUR and RLIM_SAVED_MAX, which expand to the current + soft and hard limits, whatever they are + - changed printone to print `hard' or `soft' if the current limit is + RLIM_SAVED_MAX or RLIM_SAVED_CUR, respectively + - changed ulimit_internal to handle new `hard' and `soft' arguments + - changed help text do describe the special limit arguments `hard', + `soft', and `unlimited' + +doc/{bash.1,bashref.texi} + - documented new `hard' and `soft' limit arguments to `ulimit' + +hashlib.[ch] + - find_hash_item now takes a `const char *' is its first argument + - hash_string now takes a `const char *' is its first argument + - remove_hash_item now takes a `const char *' as its first argument + +pcomplib.c + - removed cast from first argument to find_hash_item in find_compspec + +general.[ch] + - absolute_program now takes a `const char *' as its argument + - absolute_pathname now takes a `const char *' as its argument + +lib/glob/glob.[ch] + - glob_pattern_p now takes a `const char *' as its argument + +bashline.c + - removed cast from first argument to absolute_program in + command_word_completion_function + - removed cast from first argument to glob_pattern_p in + attempt_shell_completion + +findcmd.[ch] + - find_absolute_program, find_user_command, find_path_file, + search_for_command, user_command_matches now take a + `const char *' as their first argument + - file_status, executable_file, is_directory, executable_or_directory + now take a `const char *' as their argument + - _find_user_command_internal, find_user_command_internal, + find_user_command_in_path + +lib/sh/makepath.c, externs.h + - changed sh_makepath so it takes `const char *' for its first + two arguments + +hashcmd.[ch] + - find_hashed_filename now takes a `const char *' as its first arg + - remove_hashed_filename now takes a `const char *' as its first arg + +variables.[ch] + - new_shell_variable, var_lookup, shell_var_from_env_string, + find_name_in_env_array, bind_function, makunbound, + bind_name_in_env_array, bind_tempenv_variable, bind_variable + now take a `const char *' as their first arg + - find_function, make_new_variable, find_tempenv_variable, + find_variable_internal, find_variable, set_func_read_only, + set_func_auto_export, all_variables_matching_prefix, assign_in_env, + assignment, kill_local_variable, make_local_variable, unbind_variable + now take a `const char *' as their arg + - mk_env_string now takes `const char *' arguments + +arrayfunc.[ch] + - skipsubscript now takes a `const char *' as its argument + + 9/17 + ---- +lib/readline/complete.c + - attempt to preserve case of what the user typed in + compute_lcd_of_matches if we're ignoring case in completion + +builtins/{let,pushd}.def,{execute_cmd,expr}.c + - change some 0L constants to 0 and let the compiler sort it out + + 9/18 + ---- +lib/malloc/alloca.c + - alloca now takes a `size_t' argument + +include/memalloc.h + - if we're providing an extern function declaration for alloca, + use `void *' and prototype if __STDC__ is defined + - if HAVE_ALLOCA_H is defined, but C_ALLOCA is defined, don't + define HAVE_ALLOCA + + 9/19 + ---- +subst.c + - do_assignment_internal, do_assignment, and do_assignment_no_expand + now take a `const char *' as their first argument + +general.h + - a `sh_assign_func_t' is now a function taking a `const char *' and + returning int + +hashcmd.c + - free_filename_data now takes a `PTR_T' argument to agree with the + typedef for `sh_free_func_t' + +lib/sh/snprintf.c + - use TYPE_MAXIMUM define like strtol.c instead of huge constants + + 9/20 + ---- +lib/sh/snprintf.c + - don't bother to compile the bulk of the body unless HAVE_SNPRINTF + or HAVE_ASPRINTF is not defined + + 9/24 + ---- +flags.c + - ignore `set -n' if the shell was started interactively + +lib/readline/readline.c + - initialize readline_echoing_p to 0; let the terminal-specific code + in rltty.c set it appropriately + +lib/malloc/malloc.c + - changed internal_memalign() slightly to avoid compiler warnings about + negating an unsigned variable (-alignment -> (~alignment + 1)) + + 9/27 + ---- +lib/readline/readline.c + - changed rl_newline to set _rl_history_saved_point appropriately + for the {previous,next}_history code + +lib/readline/rlprivate.h + - extern declaration for _rl_history_preserve_point + +lib/readline/bind.c + - new bindable variable, `history-preserve-point', sets value of + _rl_history_preserve_point + + 10/1 + ---- +lib/malloc/table.c + - new file, with a map of allocated (and freed) memory for debugging + multiple frees, etc. Indexed by hash on values returned by + malloc(); holds size, file and line number info for last alloc or + free and a couple of statistics pointers + +lib/malloc/malloc.c + - a few cleanups; added calls for registering allocations and frees + if MALLOC_REGISTER is defined + - replaced MALLOC_RETURN with explicit MALLOC_NOTRACE define + - reordered fields in `struct...minfo' in `union mhead' to restore + eight-byte alignment + - added explicit checks for underflow in free and realloc since + checking mh_magic2 is not sufficient to detect everything (it's + no longer the last field in the struct, and thus not the bytes + immediately preceding what's returned to the user) + - new function, xbotch, for printing file and line number info for + the failed assertion before calling botch() (programming_error()) + +configure.in + - replaced call to BASH_C_LONG_LONG with call to + AC_CHECK_TYPES([long long]) + - moved the C compiler tests before the tests for various + system types, so we can know whether we have `long long' + before testing for 64-bit types + - if we have `long long', check for sizeof(long long) and save value + +aclocal.m4 + - changed BASH_TYPE_BITS64_T to check `long long' before `long', but + after `double' + + 10/2 + ---- +lib/malloc/malloc.c + - made malloc and realloc both agree on the rounding for a request of + size N (round up to nearest multiple of 8 after adjusting for + malloc overhead); uses new ALLOCATED_BYTES macro + - realloc and free now use new IN_BUCKET macro for underflow checks + +execute_cmd.c + - fixed time_command() to use `time_t' instead of `long' to hold + time stamps + +lib/sh/clock.c + - clock_t_to_secs now takes a `time_t *' second argument + - fixed print_clock_t to call clock_t_to_secs with right arguments + +lib/sh/timeval.c + - fixed print_timeval to make `minutes' a `long' and make its + structure identical to print_clock_t + +redir.c + - changed redirection_error to check for EBADF and use the file + descriptor being redirected from in the error message if it + is >= 0 + +Makefile.in + - changed release status to `beta1' + +lib/glob/collsyms.h + - added a few ASCII symbols to the posix_collsyms array + + 10/3 + ---- +aclocal.m4 + - fixed typo in BASH_TYPE_BITS64_T + +configure.in + - added check for unsigned chars with AC_C_CHAR_UNSIGNED + +config.h.in + - added PROTOTYPES and __CHAR_UNSIGNED__ #defines + +general.h + - if CHAR_MAX is not define by , provide a definition + +builtins/printf.def + - change tescape() to mask \0 and \x escape sequences with 0xFF + - change tescape() to process at most two hex digits after a `\x' + +lib/sh/strtrans.c + - change strtrans() to mask \0 and \x escape sequences with 0xFF + - change strtrans() to process at most two hex digits after a `\x'. + This affects `echo -e' and $'...' processing + +lib/readline/bind.c + - changed rl_translate_keyseq() to process at most two hex digits + after a `\x' + +lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1 + - changed documentation for key binding escape sequences to specify + that at most two hex digits after \x are translated + - changed documentation for key binding to specify that the result + of \nnn or \xhh escapes is an eight-bit value, not just ASCII + +doc/{bash.1,bashref.texi} + - changed documentation of $'...' to specify that at most two hex + digits after \x are translated + - changed `echo' documentation to specify that at most two hex + digits after \x are translated + - changed documentation for `echo' and $'...' to specify that the + result of \nnn or \xhh escapes is an eight-bit value, not just ASCII + + 10/4 + ---- +lib/malloc/malloc.c + - changed interface for xbotch to pass memory address and error code + as two additional arguments + - call mregister_describe_mem from xbotch to get the last allocation + or free before the botch + +configure.in + - call AC_CHECK_DECLS([strsignal]) + +config.h.in + - add HAVE_DECL_STRSIGNAL + +siglist.h + - make declaration of strsignal() dependent on !HAVE_DECL_STRSIGNAL + + 10/5 + ---- +support/texi2html + - upgraded to version 1.64 + + 10/9 + ---- +aclocal.m4 + - added check for `long long' to BASH_TYPE_PTRDIFF_T + +configure.in + - replaced call to BASH_HAVE_TIOCGWINSZ with AC_HEADER_TIOCGWINSZ + +aclocal.m4 + - replaced body of BASH_STRUCT_TERMIOS_LDISC with call to + AC_CHECK_MEMBER(struct termios.c_line, ...) + - replaced body of BASH_STRUCT_TERMIO_LDISC with call to + AC_CHECK_MEMBER(struct termios.c_line, ...) + +[bash-2.05a-beta1 frozen] + + 10/10 + ----- +lib/sh/snprintf.c + - fixed exponent() to not smash the trailing zeros in the fraction + when using %g or %G with an `alternate form' + - fixed exponent() to handle the optional precision with %g and %G + correctly (number of significant digits before the exponent) + + 10/11 + ----- +expr.c + - fixed strlong() to correct the values of `@' and `_' when + translating base-64 constants (64#@ == 62 and 64#_ == 64), for + compatibility with ksh + +lib/sh/itos.c + - added a slightly more flexible fmtlong() function that takes a + base argument and flags (for future use) + - rewrote itos and inttostr in terms of fmtlong + +lib/sh/fmtulong.c + - new file, converts unsigned long to string. hooks for `unsigned + long long' in the future. unused as yet + + 10/15 + ----- +lib/readline/rltty.c + - change the SET_SPECIAL macro to avoid possible (but highly + unlikely) negative array subscripts + +error.h + - add __attribute__ to extern declaration of itrace (even though the + function isn't defined in released versions of bash) + +bashansi.h + - include if HAVE_STRINGS_H is defined, to get any extra + function declarations provided therein + +copy_cmd.c + - fix typo in forward declaration for copy_arith_for_command + +lib/malloc/stats.c + - make the accumulators in _print_malloc_stats be `unsigned long' + instead of `int' + +externs.h, sig.h + - add `__noreturn__' gcc attribute to exit_shell and jump_to_top_level + declarations + +lib/sh/mailstat.c, support/bashversion.c + - include for some string function declarations + +lib/malloc/shmalloc.h + - added extern declarations of functions that do malloc debugging + +lib/readline/{isearch,readline,vi_mode}.c + - make sure we index into _rl_keymap with a non-negative index + +parse.y + - make sure we index into sh_syntaxtab with a non-negative index + +lib/readline/vi_mode.c + - bound the vi_mark_chars array with the number of characters between + 'a' and 'z' rather than using a fixed amount + - don't use _rl_lowercase_p when deciding whether the char read by + rl_vi_set_mark is a valid mark; just use 'a' <= char <= 'z' + +lib/readline/chardefs.h + - conditionally include memory.h and strings.h as in general.h + - replace ISASCII with IN_CTYPE_DOMAIN like other GNU software + - add defines for ISPRINT(c), ISLOWER(c) and ISUPPER(c) + - fix defines for _rl_lowercase_p, _rl_uppercase_p, _rl_digit_p, + _rl_pure_alphabetic, ALPHABETIC, _rl_to_upper, _rl_to_lower, + and _rl_isident to work on systems with signed chars + +include/chartypes.h + - replace ISASCII with IN_CTYPE_DOMAIN like other GNU software + +lib/sh/{strcasecmp,strtod,strtol}.c + - don't pass possibly-negative characters to tolower() or toupper() + +lib/glob/strmatch.c + - don't bother testing for isupper in FOLD; rely on TOLOWER macro + from to do it + - don't use local definitions of isblank, et al.; rely on macros + from + +lib/readline/{display,readline}.c, mksyntax.c + - use new ISPRINT macro instead of isprint() + +builtins/{kill.def,mkbuiltins.c},{error,execute_cmd,jobs,nojobs,subst}.c + - don't assume that a pid_t fits into an int for printing and other + uses + +variables.[ch] + - the unused put_gnu_argv_flags_into_env now takes a `long' pid + argument + +configure.in, config.h.in + - call AC_STRUCT_ST_BLOCKS, define HAVE_STRUCT_STAT_ST_BLOCKS if found + - check for strtoull(), define HAVE_STRTOULL if found + - check for uintmax_t, define to `unsigned long' if not found + +lib/sh/mailstat.c + - don't use st_blocks member of struct stat unless + HAVE_STRUCT_STAT_ST_BLOCKS is defined; otherwise use the st_nlink + field to return the total number of messages in a maildir-style + mail directory + +general.h,{alias,expr,general,subst,variables}.c +builtins/{printf,read}.def +lib/readline/{bind,complete,nls}.c +lib/sh/{pathcanon,pathphys,shquote,snprintf,strindex,strtod,strtol,strtrans}.c + - cast args to ctype macros to unsigned char for systems with signed + chars; other fixes for signed chars + +lib/sh/{fmtullong,strtoull.c} + - new files, more support for `long long' + +Makefile.in, lib/sh/Makefile.in + - make fmtullong.o and strtoull.o part of libsh + +lib/sh/itos.c + - remove local copy of fmtlong; use fmtulong instead + - new functions: uitos, uinttostr work on `unsigned long' + +lib/sh/snprintf.c + - fixes to make `unsigned long long' work (%llu) + - fixes to make unsigned formats not print the sign when given + an unsigned long that is greater than LONG_MAX + +externs.h + - extern declarations for fmtulong, fmtulloing, strtoull + - extern declarations for uitos, uinttostr + + 10/16 + ----- +configure.in + - move header checks before function checks + - move c compiler tests before header checks + - check for with BASH_HEADER_INTTYPES + - change type checks for intmax_t, uintmax_t to not attempt to + include + - check for strtoimax, strtoumax, strtoll, strtol, strtoull, strtoul + with BASH_CHECK_DECL (for declarations in header files) and + AC_REPLACE_FUNCS (for availability and LIBOBJS substitution) + - remove check for have_long_long around sizeof check for long long + (since autoconf will give it a size of 0 if the type isn't found) + +config.h.in + - add a define for HAVE_INTTYPES_H + - add a define for HAVE_UNSIGNED_LONG_LONG + - add defines for HAVE_STRTOIMAX, HAVE_STRTOUMAX, HAVE_STRTOLL + +aclocal.m4 + - new func, BASH_HEADER_INTTYPES, which just calls AC_CHECK_HEADERS + on ; separate so it can be AC_REQUIREd + - AC_REQUIRE([BASH_HEADER_INTTYPES]) in BASH_CHECK_TYPE + - include in BASH_CHECK_TYPE if HAVE_INTTYPES_H is + defined + - change AC_DEFINE to AC_DEFINE_UNQUOTED in BASH_CHECK_TYPE + - new `long long' checking macros: BASH_TYPE_LONG_LONG and + BASH_TYPE_UNSIGNED_LONG_LONG + - new BASH_CHECK_DECL + +lib/sh/{strto[iu]max,strtoll}.c, lib/sh/Makefile.in, Makefile.in + - new files + +externs.h + - extern declarations for strtoll, strtoimax, strtoumax + +lib/malloc/alloca.c + - include for size_t + +builtins/printf.def + - new functions: getllong, getullong, getintmax, getuintmax; return + long long, unsigned long long, intmax_t, uintmax_t respectively + - builtin printf now handles `ll' and `j' length modifiers directly + +lib/sh/Makefile.in + - use LIBOBJS to decide whether or not the strto* functions are + needed + + 10/17 + ----- +configure.in + - call AC_REPLACE_FUNCS(rename) + - move getcwd, strpbrk, strcasecmp, strerror, strtod + from AC_CHECK_FUNCS to AC_REPLACE_FUNCS + - only call BASH_FUNC_GETCWD if $ac_func_getcwd == "yes" + - call BASH_CHECK_SYS_SIGLIST + - if we don't have vprintf but have _doprnt, call AC_LIBOBJ(vprint) + +lib/sh/Makefile.in + - remove rename, getcwd, inet_aton, strpbrk, strcasecmp, strerror, + strtod, vprint from OBJECTS; picked up from LIBOBJS + +aclocal.m4 + - change BASH_FUNC_GETCWD to call AC_LIBOBJ(getcwd) if the libc + getcwd(3) calls popen(3) + - change BASH_FUNC_INET_ATON to call AC_LIBOBJ(inet_aton) if it's + not found in libc or as a #define even with the special includes + - BASH_KERNEL_RLIMIT_CHECK -> BASH_CHECK_KERNEL_RLIMIT + - BASH_DEFAULT_MAILDIR -> BASH_SYS_DEFAULT_MAILDIR + - BASH_JOB_CONTROL_MISSING -> BASH_SYS_JOB_CONTROL_MISSING + - BASH_REINSTALL_SIGHANDLERS -> BASH_SYS_REINSTALL_SIGHANDLERS + - BASH_SIGNAL_CHECK -> BASH_SYS_SIGNAL_VINTAGE + - BASH_DUP2_CLOEXEC_CHECK -> BASH_FUNC_DUP2_CLOEXEC_CHECK + - BASH_PGRP_SYNC -> BASH_SYS_PGRP_SYNC + - BASH_RLIMIT_TYPE -> BASH_TYPE_RLIMIT + - BASH_FUNC_PRINTF -> BASH_DECL_PRINTF + - BASH_FUNC_SBRK_DECLARED -> BASH_DECL_SBRK + - BASH_MISC_SPEED_T -> BASH_CHECK_SPEED_T + - BASH_CHECK_SOCKLIB -> BASH_CHECK_LIB_SOCKET + - new macro, BASH_CHECK_SYS_SIGLIST, encapsulates all the checks for + sys_siglist, _sys_siglist, and strsignal(), sets SIGLIST_O to + siglist.o if appropriate + +Makefile.in + - use SIGLIST_O variable to decide whether or not we need siglist.o + +{execute_cmd,subst}.c + - change a couple of instances of ISDIGIT to DIGIT, where we really, + really only want ascii digits + +ansi_stdlib.h + - don't need a declaration for atol() + + 10/18 + ----- + +aclocal.m4 + - new macro, BASH_FUNC_PRINTF_A_FORMAT, checks for printf support + for %a, %A conversion specifiers, defines HAVE_PRINTF_A_FORMAT + if successful + +configure.in + - call AC_CHECK_FUNCS for isascii + - call BASH_FUNC_PRINTF_A_FORMAT + +config.h.in + - add a define for HAVE_ISASCII + - add a define for HAVE_PRINTF_A_FORMAT + +lib/sh/snprintf.c + - for long double output, fall back to sprintf using ldfallback() + function for floating point formats + - support %a, %A using dfallback() or ldfallback() if + HAVE_PRINTF_A_FORMAT is defined + - fix bug in vasprintf that returned wrong value in its first + argument if the buffer holding the result string got reallocated + - fixed PUT_CHAR macro to increment the counter even if we've + exceeded the buffer size, for the return value from + vsnprintf/snprintf + - fix vsnprintf_internal to not use counter < length as a loop + condition, but always process the entire format string (for + the return value from vsnprintf/snprintf) + +builtins/printf.def + - support %a, %A if HAVE_PRINTF_A_FORMAT is defined + +include/typemax.h + - new file, with the TYPE_MAXIMUM stuff that's duplicated in several + files in lib/sh + +lib/sh/{fmtulong,strtol,snprintf}.c + - include instead of having the definitions in each file + +lib/sh/Makefile.in + - updated dependencies for typemax.h + + 10/22 + ----- +configure.in + - call AC_CHECK_FUNCS on ctype.h functions/macros that bash redefines + in chartypes.h + +config.h.in + - defines for HAVE_IS{ASCII,BLANK,GRAPH,PRINT,SPACE,XDIGIT} + +include/chartypes.h, lib/glob/strmatch.c, lib/readline/chardefs.h + - don't redefine some is* ctype macros/functions if HAVE_ISXXX is + defined (meaning that an appropriate function, but not a macro, + exists) + +lib/sh/strtrans.c + - new function, ansic_shouldquote, returns 1 if argument string + contains non-printing chars that should be quoted with $'...' + +externs.h + - new declaration for ansic_shouldquote() + +variables.c + - change print_var_value to ansi C quote the string if we're not in + posix mode and the variable's value contains non-printing chars, + to use the regular shell single quoting if the value contains + shell meta-characters, and to just output the string otherwise + +lib/sh/shquote.c + - add `break' to `case '~':' to avoid fallthrough and extra test + +doc/bashref.texi + - note that in POSIX mode, `set' displays variable values that + include nonprinting characters without quoting, unless they + contain shell metacharacters + +builtins/printf.def, lib/sh/snprintf.c + - handle `F' conversion specifier as equivalent to 'f' + +parse.y, {nojobs,variables}.c + - a couple of cleanups for when building a minimal configuration + +nojobs.c + - new function: stop_making_children(), just sets + already_making_children to 0 (like stop_pipeline) + +subst.c + - call stop_making_children from subst.c:command_substitute if + JOB_CONTROL is not defined. This fixes the bug where the wrong + process is waited for (and its status returned) when using + command substitution in a null command in a shell function + +builtins/printf.def + - new variable `tw' used to keep track of the total number of + characters written by a single call to `printf' -- to be + used for the `%n' conversion, which will be added later. It + gets reset each time we reuse the format string, which is what + ksh93 seems to do + + 10/23 + ----- +variables.c + - new function, bind_var_to_int (char *var, long val) + +variables.h + - extern declaration for bind_var_to_int + +lib/sh/netopen.c + - use gai_strerror() for error messages when getaddrinfo() fails + - use PF_INET if DEBUG is defined, since IPv6 doesn't work for me + +Makefile.in + - pass DEBUG=${DEBUG} down to makes in some subdirectories + +{builtins,lib/{glob,sh}}/Makefile.in + - append ${DEBUG} to LOCAL_CFLAGS value, passed by top-level Makefile + +builtins/printf.def + - added support for %n format conversion char (number of chars printed + so far from current format string) + + 10/24 + ----- +variables.c + - if posixly_correct is set, the default value of $MAILCHECK is 600 + - use legal_number instead of atoi in adjust_shell_level + - treat non-numeric assignments to SECONDS as 0 in assign_seconds + - new function, init_funcname_var; sets FUNCNAME as a dynamic variable + if it's not set in the initial environment + - new function, init_groups_var; sets GROUPS as a dynamic array + variable if it's not set in the initial environment + - new function, init_dirstack_var; sets DIRSTACK as a dynamic array + variable if it's not set in the initial environment + - new function, init_seconds_var; sets SECONDS as a dynamic + variable using any valid integer value in the initial environment + as the initial value, as if an assignment had been performed + - call init_funcname_var, init_groups_var, init_dirstack_var, + init_seconds_var from initialize_dynamic_variables + - non-numeric values assigned to LINENO are treated as 0 + - change initialize_shell_variables to not auto-export PATH or TERM + - change set_home_var to not auto-export HOME + - change set_shell_var to not auto-export SHELL + - broke the code that sets HOSTNAME, HOSTTYPE, MACHTYPE, OSTYPE + out into a separate function, set_machine_vars; none of those + variables are auto-exported + - bash no longer un-exports SSH_CLIENT or SSH2_CLIENT + +shell.c + - changed isnetconn() to check SSH_CLIENT and SSH2_CLIENT only if + SSH_SOURCE_BASHRC is defined in config-top.h + +config-top.h + - added a commented-out definition for SSH_SOURCE_BASHRC + + 10/25 + ----- + +Makefile.in + - changed RELSTATUS to `rc1' (release candidate 1) + + 10/29 + ----- +locale.c + - fixed an `=' vs. `==' typo in set_locale_var when parsing + LC_NUMERIC + +doc/{bash.1,bashref.texi} + - document what bash does with $POSIXLY_CORRECT + +doc/builtins.1 + - some updates + +builtins/psize.sh + - some mktemp(1) changes + +lib/readline/readline.c + - change rl_backward to check for rl_point < 0 and reset to 0 if so + +lib/readline/util.c + - don't compile in _rl_strpbrk if HAVE_STRPBRK is defined + +lib/readline/rlprivate.h + - remove extern declaration of _rl_strpbrk + +lib/readline/rldefs.h + - #define _rl_strpbrk as strpbrk if HAVE_STRPBRK is define, otherwise + add extern declaration of _rl_strpbrk from rlprivate.h + +{mailcheck,shell,variables}.c + - make sure to include posixtime.h to get any prototype for time(3) + in scope + +{array,eval,execute_cmd,mksyntax,subst}.c, parse.y +builtins/common.c +lib/sh/pathcanon.c + - a few changes as the result of `gcc -Wall' patches from solar + designer + +builtins/read.def, parse.y + - change some calls to free() to xfree() + +builtins/set.def + - make sure unset_builtin() resets unset_array to 0 each time through + the loop, because it's set (and used) depending on the current + argument + +shell.h + - new define, USE_VAR, to force the compiler to not put a particular + variable in a register -- helpful if registers are not restored + by setjmp/longjmp + +builtins/{evalfile.c,{read,wait}.def}, {eval,execute_cmd,shell,test}.c + - use USE_VAR for some variables + +subst.c + - fixed a case in expand_word_internal where a NULL pointer could + have been passed to free() (though free() should ignore it) + - fixed a case at the end of expand_word_internal where LIST could + have been used uninitialized (it makes gcc happy, though it + doesn't happen in practice) + +test.c + - give test_syntax_error(), beyond(), and integer_expected_error() + the `__noreturn__' attribute for gcc + +unwind_prot.c + - in clear_unwind_protect_list(), convert `flags' to `long' (via + assignment to a `long' variable) before casting to `char *', in + case pointers and longs are 64 bits and ints are 32 (makes no + difference on 32-bit machines) + + 10/30 + ----- +print_cmd.c + - fixed cprintf to avoid gcc warning about assigning const pointer + to non-const (discarding type qualifier) + +{make_cmd,pcomplete,test}.c,parse.y + - some minor changes to shut up gcc warnings + +lib/sh/tmpfile.c + - fixed sh_mktmpfp to avoid file descriptor leaks in the case that + sh_mktmpfd succeeds but fdopen fails for some reason + - change sh_mktmpfd to use the same scheme for computing `filenum' + as sh_mktmpname + - change get_sys_tmpdir to prefer P_tmpdir if P_tmpdir is defined + - changed sh_mktmpname and sh_mktmpfd to avoid trying to assign to + `nameroot' if `nameroot == 0' (duh) + - add code to sh_mktmpfd to use mkstemp(3) if USE_MKSTEMP is defined + - add code to sh_mktmpname to use mktemp(3) if USE_MKTEMP is defined + +support/{fixlinks,mkclone} + - use mktemp if it's available for the symlink test + - use $TMPDIR instead of hardcoding /tmp; default to /tmp + - use a better filename for the symlink test instead of `z' + +support/bashbug.sh + - more changes inspired by a patch from solar designer + +lib/malloc/Makefile.in + - new target `alloca', which builds libmalloc.a with alloca.o only + (for systems without alloca that are configured --without-bash-malloc) + +configure.in + - if we don't have a working alloca and are not configured to build + the bash malloc library, make a malloc library containing only + alloca.o + +aclocal.m4 + - slight change to RL_LIB_READLINE_VERSION to deal with minor version + numbers with a letter appended (like 4.2a) + + 10/31 + ----- +doc/{bash.1,bashref.texi} + - slight change to note that only interactive shells resend a SIGHUP + to all jobs before exiting + +externs.h + - declare strto[ui]max only if NEED_STRTOIMAX_DECL is defined. This + keeps picky compilers from choking because intmax_t is not defined + (MacOS X 10.1) + +builtins/printf.def + - #define NEED_STRTOIMAX_DECL before including shell.h + + 11/1 + ---- +general.c + - check in bash_tilde_expand() for an unquoted tilde-prefix; don't + bother passing the string to tilde_expand unless the prefix is + unquoted + +shell.c + - fix a problem with $LINENO when executing commands supplied with + the -c invocation option when ONESHOT is defined + +[bash-2.05a-rc1 frozen] + +builtins/printf.def + - fix the %n conversion to require that the variable name supplied + be a valid shell identifier + +variables.c + - improve random number generator slightly by using the upper 16 + bits of the running random number instead of the lower 16, which + are incrementally more random + + 11/2 + ---- +configure.in + - if RL_INCLUDEDIR ends up being /usr/include, don't put + -I$(RL_INCLUDEDIR) into CFLAGS + + 11/5 + ---- +doc/{bash.1,bashref.texi} + - correct description of POSIXLY_CORRECT to note that the shell enters + posix mode *before* the startup files are read if POSIXLY_CORRECT + is in the initial environment + +variables.c + - fix function prologues for init_dirstack_var and init_groups_var + to agree with caller (no arguments) + +jobs.c + - fix forward function declarations for pipe_read and pipe_close + +subst.c + - removed `inline' attribute from skip_double_quoted because it can + potentially be called recursively + +bashline.c + - quick fix to bashline.c:attempt_shell_completion programmable + completion code to just punt if the end of the command word found + by find_cmd_end is <= the start found by find_cmd_start (the bug + is probably in find_cmd_start -- fix later) + +pcomplete.c + - fix gen_matches_from_itemlist to return if the stringlist is null + after any cleaning or initialization, before trying to use it + - fix GEN_COMPS to only bother to try to append the STRINGLIST + returned by gen_matches_from_itemlist to `glist' if it's non-NULL + +lib/sh/stringlist.c + - make copy_stringlist return NULL if the STRINGLIST * passed as an + argument is NULL + - make append_stringlist call copy_stringlist only if M2 is non-NULL; + otherwise just return NULL if m1 is NULL + - make word_list_to_stringlist return 0 immediately if the passed + LIST argument is NULL + - make realloc_stringlist call alloc_stringlist if the passed + STRINGLIST argument (`sl') is 0, just like realloc calls malloc + +subst.c + - in skip_to_delim(), if we have an unclosed ${, and it's at the end + of the string (string[i] == '{', string[i+1] == '{' and + string[i+2] == 0, return si (i + 2) immediately without bothering + to call extract_dollar_brace_string or extract_delimited_string + - in skip_to_delim(), if string[i] is 0 after a call to + extract_dollar_brace_string or extract_delimited_string (meaning we + have an unclosed ${ or other expansion, return i immediately without + doing a `continue' (which will increment i past the end of string) + - in split_at_delims, don't increment te by 1 if it's pointing to a + delimiter. this has the effect of skipping the first delimiter + char in a possibly multi-character delimiter, and ignoring + single-char delimiters like `>' + +configure.in + - use AC_CHECK_MEMBERS([struct stat.st_blocks]) instead of a call to + AC_STRUCT_ST_BLOCKS to avoid configure changing LIBOBJS if the test + fails + +general.c + - introduce two new variables: bash_tilde_{prefixes,suffixes}, set + to the additional prefixes and suffixes bash wants to pass to the + tilde expansion code (reserved for post-bash-2.05a fix) + +aclocal.m4 + - add missing `test' in BASH_CHECK_SYS_SIGLIST + + 11/7 + ---- +lib/readline/vi_mode.c + - fix rl_vi_goto_mark to explicitly check that the desired mark is + between 'a' and 'z', since some locales have lowercase letters + outside that range, which could cause a negative subscript + +include/chartypes.h + - remove superfluous `#undef ISASCII' + +lib/sh/strto[iu]max.c + - changes from Paul Eggert to work around buggy compilers and catch + configuration errors at compile time + +aclocal.m4 + - new macro, BASH_C_LONG_DOUBLE, identical to AC_C_LONG_DOUBLE but + with a fix for Irix 5.3 (not called, since I'm not sure it's the + right thing to do -- the C standard allows double and long double + to be the same size) + +lib/sh/snprintf.c + - only try to write the trailing NUL in vsnprintf_internal if + data->length is >= 0, since if it's not, we probably don't have + a buffer + +Makefile.in + - changed RELSTATUS to `release' + + 11/8 + ---- +lib/sh/strtol.c + - make sure chars passed to toupper are cast to unsigned + +unwind_prot.c + - change clear_unwind_protect_list to not require a cast from `int' + to `char *' + +lib/readline/chardefs.h + - make _rl_digit_p succeed only for ascii digits, since that's what + most callers assume + + 11/13 + ----- +doc/bashref.texi + - added `ERR' trap and [-+]O invocation option to section listing + differences from the Bourne shell + + 11/15 + ----- +[bash-2.05a released] + + 11/19 + ----- +include/stdc.h + - new define, INLINE, defined as `inline' for gcc and empty otherwise + +subst.c + - make skip_double_quoted, sub_append_string have INLINE attribute + +trap.c + - use BASH_NSIG as upper limit for signal names in signal_name() + +lib/readline/bind.c + - use RL_COMMENT_BEGIN_DEFAULT in output for rl-comment-begin value + +error.c + - fix sys_error to save value of errno around calls to fprintf + +doc/Makefile.in + - added rules to create PDF files from postscript and dvi input + +MANIFEST.doc + - added {article,bash,bashref,rose94}.pdf + +doc/bash.1 + - rearranged some `.PD 0' and `.TP' directives so man2html will + handle them better (shouldn't affect groff output) + +support/man2html.c + - small fix to handle quoted string arguments to directives like + `.BR' without mangling the output + + 11/20 + ----- +{arrayfunc,variables}.c + - changed calling sequence for dynamic array variable `assign' + functions to (SHELL_VAR *self, char *value, arrayind_t ind) + - changed calling sequence for dynamic variable assign functions + to the same as array variable assign_func. Now this can be + prototyped + +variables.h + - the assign_func member of a `struct variable' is now of type + `sh_var_assign_func_t', which is prototyped + - the dynamic_value member of a `struct variable' is now of type + `sh_var_value_func_t', which is prototyped + +variables.c + - changed to use `sh_var_assign_func_t' and `sh_var_value_func_t' + +builtins/cd.def + - when in posix mode, if the new directory name formed by PWD and + the argument passed by the user cannot be canonicalized, and the + -P option has not been supplied, return failure immediately + - if canonicalization failed, but the fallback to the directory + name specified by the user succeeds, reset the current working + directory + +lib/readline/{input.c,rlprivate.h} + - renamed rl_unget_char to _rl_unget_char; made library global + +lib/readline/{{bind,readline}.c,{keymaps,rlprivate}.h} + - support for `key subsequences'; allows a key sequence and a function + mapped to a subsequence of that key sequence. Primarily to allow + arrow keys to be bound in readline vi insert mode, while preserving + the ESC function to switch to command mode. + +lib/readline/{input.c,rlprivate.h} + - new function, _rl_input_queued(T), does a check with select or + FIONREAD with a timeout of `T' (which is generally 0) + +lib/readline/readline.c + - change _rl_dispatch_subseq to test for input in the queue if we + get ESC while in vi insertion mode if the keymap entry type for + ESC is ISKMAP. If _rl_input_queued returns non-zero, we assume + that an arrow key sequence has been pressed and go ahead with the + subsequence. If it returns zero, we assume that the user pressed + ESC to switch into command mode, and dispatch to that right away. + This avoids forcing the user to press another key before switching + into command mode + + 11/21 + ----- +lib/readline/readline.c + - bind common arrow key sequences in vi insertion keymap + +lib/readline/terminal.c + - bind termcap definition's arrow keys in vi insertion keymap + +lib/readline/bind.c + - check for rl_vi_movement_mode in _rl_bind_if_unbound, so + binding the arrow keys can work + +lib/readline/readline.c + - since _rl_bind_if_unbound does the check of what's currently + bound to the key sequence, the check in bind_arrow_keys_internal + was redundant + - bind_arrow_keys_internal now takes a Keymap argument and handles + saving and restoring _rl_keymap; changed bind_arrow_keys + accordingly + +builtins/fc.def + - fix from Paul Eggert to substitute the nearest history number in + range if an out-of-range value is supplied. POSIX requires this + +lib/sh/pathcanon.c + - fix from Corrina Vinschen for the special `cygdrive' prefix on + Cygwin + +bashhist.c + - split the history adding code into more pieces: + check_history_control (char *line) checks LINE against the value + of HISTCONTROL, returning 1 if LINE should be saved and 0 if not + + check_add_history (char *line) calls check_history_control and + history_should_ignore (line) and saves the line with + bash_add_history if the checks indicate that it should be saved + + maybe_add_history just calls check_add_history to set the value + of first_line_saved + +bashhist.h + - extern declaration for check_add_history() + +shell.c + - don't call load_history() from the interactive shell startup + code if history_lines_this_session is > 0, indicating that we've + already saved some lines in the history and that we probably + don't want to overwrite them + +builtins/history.def + - call check_add_history from push_history, so `history -s xx' + works even when in a compound command whose first line has not + been saved. (Caveat: in a compound command when the first + line has been saved, the line supplied to history -s will become + part of the compound command's history entry. Of course, the + delete_history call could remove the compound command from the + history entirely) + +bashline.c + - use sh_makepath instead of xmalloc/sprintf in + command_word_completion_function + +lib/readline/complete.c + - get_y_or_n now takes an int FOR_PAGER argument; caller changed + If FOR_PAGER is non-zero, get_y_or_n returns appropriate values + for a more-like pager: `newline' or `return' return 2; `q' or + `Q' return 0 + - there is now a mini internal more-like pager for displaying a + list of completions that exceeds the screen height (new function + _rl_internal_pager, called from rl_display_match_list) + + 11/24 + ----- +command.h + - new flag, W_TILDEEXP, says to do tilde expansion on an + assignment word + +execute_cmd.c + - fix_assignment_words now sets W_TILDEEXP for assignment word + arguments to `assignment builtins' + +general.c + - bash_tilde_expand now takes a second argument indicating whether + or not it's being invoked in an `assignment context' + +general.h + - change extern declaration for bash_tilde_expand + +{bashline,execute_cmd,findcmd,general,variables}.c +builtins/evalfile.c +lib/sh/makepath.c + - fix callers of bash_tilde_expand appropriately + +subst.c + - fix callers of bash_tilde_expansion appropriately + - add (currently commented-out) code that would tilde expand assignment + statement arguments to assignment builtins (W_TILDEEXP flag set) + even when the shell is in posix mode + +bashline.c + - fix attempt_shell_completion to turn off + rl_filename_completion_desired when doing command name completion, + so no slash gets appended to the name if there happens to be a + directory with the same name in the current directory + + 11/26 + ----- +lib/readline/rltech.texinfo + - a couple of additions to the rl_stuff_char description + +parse.y + - turn off echo_input_at_read in parse_string_to_word_list, so `set -v' + doesn't give extra lines of output when doing compound array + assignment + +subst.c + - fix split_at_delims to handle skipping over a `\n' if it's a + delimiter (use spctabnl(c) instead of whitespace(c)) + + 11/27 + ----- +support/config.{guess,sub} + - updated (with bash changes) to latest version from gnu.org + +sig.h + - add prototype for set_signal_handler declaration + +builtins/setattr.def + - add prototype to extern declaration of declare_builtin + +builtins/times.def + - add no_options call, since times takes no options + +lib/sh/spell.c + - add prototypes to forward declarations for midist and spdist + +lib/sh/strtrans.c + - add explicit int return type to ansic_shouldquote declaration + +lib/readline/rldefs.h, lib/readline/{macro,readline,util,undo}.c + - move define for SWAP to rldefs.h, removed from various C files + +lib/readline/vi_mode.c + - removed define for exchange(), changed to use SWAP instead + +lib/readline/bind.c + - added some static forward function declarations + - find_boolean_var, find_string_var now take a `const char *' argument + +lib/readline/signals.c + - added static forward declaration for rl_maybe_set_sighandler + +lib/readline/readline.c + - add some common key bindings for the HOME and END keys in + bind_arrow_keys_internal + +lib/readline/terminal.c + - fetch the `@7' termcap string; it's sent by the END key + - attempt to bind the terminal's END key to rl_end_of_line in + bind_termcap_arrow_keys; I don't know why I was using `kH' + instead of `@7' + +doc/builtins.1 + - remove `case', `for', `if', `until', `while' from NAME section; + those are not shell builtins + + 11/28 + ----- +stringlib.c + - new function, find_token_in_alist, takes a token value and an + ALIST argument, and returns the string correspoinding to the + token if found in the alist + +externs.h + - new extern declaration for find_token_in_alist() + +subst.c + - string_list_internal is no longer static + +subst.h + - new extern declaration for string_list_internal() + +parse.y + - new alist array of other tokens returned by read_token which are + not reserved words in word_token_alist[] + - reworked error reporting: new functions print_offending_line, + which prints the line containing the syntax error, + error_token_from_token, which takes the current token and tries to + figure out its textual representation, and error_token_from_text, + which does the old job of finding the bad token by analyzing the + text of shell_input_line at the current index + - report_syntax_error now tries to figure out the token that caused + the syntax error by first looking at current_token and falling + back to the old method of textual analysis if that fails + - report_syntax_error doesn't say the token resulting from the textual + analysis of the input line is an `unexpected token'; it just + says there is a `syntax error near xxx' + - changed conditional command error reporting to use the value + returned by error_token_from_token if it's not null instead of + just using the token value in the message, since current_token + ends up being set to -1, and the text of the message from + report_syntax_error might not be exactly right + - change parse_string_to_word_list to set current_token to the + offending token returned by read_token before calling yyerror() + to make the error reporting do the right thing + +aclocal.m4 + - fixed typo in BASH_CHECK_LIB_TERMCAP + +configure.in + - add check for isinf(3); define HAVE_ISINF_IN_LIBC if found + +config.h.in + - add define for HAVE_ISINF_IN_LIBC + +lib/sh/snprintf.c + - check for Inf and NaN, using isinf and isnan if they're found in + libc + - use the current locale for thousands separator and decimal point + - recognize "'" flag; not implemented yet + - fix for snprintf/vsnprintf with length of 0 and string argument of + 0 with non-zero length + +builtins/read.def + - TMOUT is now the default timeout for `read' (and select) if set, + like ksh93 when reading from the terminal + - edit_line (called by read -e) now just does readline's filename + completion by setting rl_attempted_completion_function to NULL, + since e.g., doing command completion for the first word on the + line wasn't really useful + +execute_cmd.c + - changed select_command to return failure status if select_query + returns NULL, indicating that read_builtin returned + EXECUTION_FAILURE + +doc/{bash.1,bashref.texi} + - documented new TMOUT behavior + - slight change to the description of the test `-ef' option + +doc/bashref.texi + - added item to posix mode section describing failure behavior of + cd when invoked in logical mode and the pathname formed by + combining $PWD and the directory argument does not refer to an + existing directory + + 11/29 + ----- +execute_cmd.c + - fix execute_function to call dispose_function_env after + merge_function_env if the shell is in posix mode (fixes debian + bash bug #117673) + +lib/readline/readline.c + - rl_forward -> rl_forward_char; rl_forward function for compatibility + - rl_backward -> rl_backward_char; rl_forward function for + compatibility + - new functions, rl_forward_byte, rl_backward_byte, for future use + +lib/readline/readline.h + - extern declarations for rl_forward_char, rl_backward_char, + rl_forward_byte, rl_backward_byte + +lib/readline/{emacs_keymap,funmap,vi_keymap,vi_mode + - rl_forward -> rl_forward_char + - rl_backward -> rl_backward_char + +lib/readline/funmap.c + - new bindable names, `backward-byte' and `forward-byte' + +aclocal.m4 + - new function, BASH_CHECK_MULTIBYTE, encapsulates checks for + multibyte code + +config.h.in + - add necessary defines for multibyte include files and functions + +configure.in + - add call to BASH_CHECK_MULTIBYTE + +config-bot.h + - add code to define HANDLE_MULTIBYTE if prerequisites are met + +lib/sh/xstrchr.c + - new file, xstrchr() is strchr(3) that handles multibyte characters + +bashhist.c + - first_line_saved -> current_command_first_line_saved; variable is + now global + +bashhist.h + - extern declaration for current_command_first_line_saved + + 11/30 + ----- +bashhist.c + - break the code that actually calls add_history out of + bash_add_history into a new function, really_add_history; + bash_add_history now calls really_add_history + - check_add_history takes a second `force' argument telling it + whether to call bash_add_history (force == 0) or really_add_history + (force != 0) + +builtins/history.def + - in push_history, call delete_last_history if the current command + has more than one line, the first line was saved, and + command-oriented history is active. This takes care of deleting + the right history element if `history -s' is used within a + compound or multiline command + - in push_history, call check_add_history with second argument of 1 + to skip check of current_command_line_count and add the arguments + to history -s as a single separate history entry + + 12/3 + ---- +lib/readline/complete.c + - append a slash to completed names which are symlinks to directories + if the new variable _rl_complete_mark_symlink_dirs is non-zero + +lib/readline/rlprivate.h + - extern declaration for _rl_complete_mark_symlink_dirs + +lib/readline/bind.c + - new bindable variable, `mark-symlinked-directories', mirrors the + value of _rl_complete_mark_symlink_dirs + +doc/bash.1, lib/readline/doc/{readline.3,rluser.texinfo} + - documented new `mark-symlinked-directories' variable + + 12/4 + ---- +variables.[ch] + - set_pipestatus_array now takes a second argument with the number + of processes in the array + - changed set_pipestatus_array to just modify the value in place if + the existing array has one element and the new array has one + element, and to modify existing values in place if new array has + more elements than existing array + +variables.c, jobs.c + - changed set_pipestatus_array callers + +jobs.c + - moved call to setjstatus() from set_job_status_and_cleanup to + wait_for, since set_job_status_and_cleanup is part of the SIGCHLD + signal handler call path, and race conditions accessing the + PIPESTATUS array will result for things like + + while true; do date; done | cat > /dev/null + + 12/5 + ---- +xmalloc.h + - don't redefine xmalloc, xrealloc, and xfree if DISABLE_MALLOC_WRAPPERS + is #defined + +config.h.in + - #undef for DISABLE_MALLOC_WRAPPERS + +configure.in + - define DISABLE_MALLOC_WRAPPERS if the --with-purify option is + supplied + +lib/malloc/trace.c + - new function, malloc_trace_bin(N), traces allocations and frees + to bucket N (uses the same type of bitmap as `busy') + +lib/malloc/table.c + - fix wraparound search problem in find_entry when searching for a + free entry when the table is full + + 12/6 + ---- +lib/malloc/table.c + - keep an `overflow bucket' around to use when the table is full, + so find_entry always returns a valid pointer when FIND_ALLOC + is set + - new static variable to keep a count of the number of MT_ALLOC + entries in the mem_table + +lib/sh/{oslib,clktck}.c + - if HAVE_LIMITS_H is defined, include + +lib/sh/oslib.c + - new function, getmaxgroups() returns max number of simultaneous + groups + - new function, getmaxchild(), returns max number of simultaneous + user processes + +general.c + - removed forest of #defines for getmaxgroups() + +externs.h + - new extern declaration for getmaxgroups() + - new extern declaration for getmaxchild() + - new extern declaration for isnetconn() + +lib/sh/netconn.c,shell.c + - new file, isnetconn() from shell.c moved here + +Makefile.in, lib/sh/Makefile.in + - necessary changes for netconn.c + +builtins/ulimit.def + - changed getmaxuprc() to just call getmaxchild() and massage the + return value appropriately + +{jobs,nojobs}.c + - use the value returned by getmaxchild() in + mark_dead_jobs_as_notified instead of static CHILD_MAX + +jobs.c + - new function, compact_jobs_list, removes some number of jobs from + the jobs table and reallocates the table, copying the jobs that + are left from the old table to the new. Compaction happens from + the beginning of the list and removes dead jobs, and we make sure + to keep the last CHILD_MAX jobs as POSIX.2 requires + - call compact_jobs_list from stop_pipeline if we're in a subshell, + there are no free jobs in the jobs table, and the jobs table is + at or above some maximum limit + +execute_cmd.c + - change eval_arith_for_expr to set this_command_name to `((' before + calling evalexp, since it might be changed by evaluating the + loop body between evalexp calls + +trap.c + - change reset_signal to turn off the SIG_TRAPPED flag for the + given signal, so shell builtins and functions running in command + substitutions don't run the signal handlers (traps are not supposed + to be inherited by command substitutions) + +parse.y + - changed parse_string_to_word_list to turn off alias expansion + while parsing the array assignment + + 12/9 + ---- +alias.c + - fix add_alias so that redefining an alias's value also resets the + EXPANDNEXT flag + + 12/10 + ----- +parse.y + - new function, token_is_assignment, called to check whether the text + before `=' makes up a valid assignment token before trying to parse + a compound assignment statement + - new function, parse_compound_assignment, to parse a compound + assignment statement instead of using parse_matched_pair; handles + comments and error reporting in the parser instead of waiting until + expansion time + - changed parse_compound_assignment and parse_string_to_word_list to + allow reserved words in compound array assignments + +lib/readline/doc/rltech.texinfo + - changed the documentation for rl_callback_read_char and + rl_callback_handler_remove to say what happens to the terminal + settings and what needs to be done to reset them + + 12/11 + ----- +bashline.c + - add emacs_edit_and_execute_command, bound to C-xC-e, like vi-mode + `v' command + - add bindable command name `edit-and-execute-command', bound to + run emacs_edit_and_execute_command() + +lib/glob/strmatch.c + - add support for ksh93-like [:word:] character class (isalnum + `_') + +doc/{bash.1,bashref.texi} + - add note to section describing lists to clarify that a sequence of + one or more newlines may be used to delimit a command, equivalent + to a semicolon + - document new [:word:] pattern matching character class + +doc/bash.1, lib/readline/doc/rluser.texinfo + - document `edit-and-execute-command' and its default emacs-mode + binding + +include/chartypes.h + - add defines for TOCTRL and UNCTRL if they're not already defined + +lib/readline/chardefs.h + - #undef UNCTRL if it's defined to avoid cpp redefinition warnings + +lib/sh/strtrans.c + - add \cX (Control-X) escape for $'...' to ansicstr() + - change ansic_quote() to allocate at least four chars for each char + in the string argument, to account for \0xx octal values + - change ansic_quote() to no longer call sprintf for non-printable + characters; just translate the string to octal directly + +print_cmd.c + - change xtrace_print_word_list to call ansic_quote() if + ansic_shouldquote() indicates that there are nonprinting characters + in a word + +builtins/type.def + - changed deprecated long option parsing to just replace the word + in the list with the equivalent short option (-type -> -t) instead + of removing words from the list + - changed describe_command to take a single flags argument instead + of two int args; changed caller + - type now has two new options: -f suppresses function lookup (like + command), and -P forces a PATH search for the name(s) + +builtins/common.h + - flags for describe_command are here + - changed extern declaration of describe_command + +builtins/command.def + - changed call to describe_command to use flags from common.h, and + the right number of arguments + +doc/{bash.1,bashref.texi} + - documented new -f and -P options to `type' + + 12/12 + ----- +lib/readline/rldefs.h + - fixed prototype for _rl_strnicmp + +execute_cmd.c + - select_query now takes a new argument, an int flag saying whether + or not to print the menu the first time through the loop. An + empty line in response to the prompt will always cause the menu + to be reprinted + - changed execute_select_command to cause select_query to reprint + the menu only if REPLY is set to NULL, if KSH_COMPATIBLE_SELECT + is defined + +config-top.h + - define KSH_COMPATIBLE_SELECT, with a comment about its meaning + +lib/readline/readline.c + - change rl_insert_comment to toggle if given an explicit numeric + argument: if the first characters on the line don't specify a + comment, insert one; if they do, delete the comment text + +doc/bash.1, lib/readline/doc/{readline.3,rluser.texinfo} + - documented new behavior of insert-comment with a numeric argument + + 12/13 + ----- +lib/malloc/watch.c + - new file, implements watchpoint functions + +lib/malloc/watch.h + - new file, define some `events' for watchpoints and extern function + and variable declarations for watchpoint code + +lib/malloc/imalloc.h + - #define MALLOC_WATCH if MALLOC_DEBUG is defined + - add __P define as in include/stdc.h if not already defined + +lib/malloc/malloc.c + - remove __P define, now in imalloc.h + - include watch.h if MALLOC_WATCH is defined + - added calls to _malloc_ckwatch in internal_malloc, internal_free, + and internal_realloc + +include/stdc.h + - augment __P define to allow prototypes if PROTOTYPES is defined + +lib/readline/rlstdc.h + - augment PARAMS define to allow prototypes if PROTOTYPES is defined + +lib/malloc/Makefile.in, Makefile.in + necessary changes to include watch.c in libmalloc + +lib/readline/readline.c + - fix rl_delete_text to make sure that the starting position is >= 0 + - _rl_init_line_state (called by readline via readline_initialize) + now sets rl_mark to 0 + - rl_get_{next,previous}_history set rl_mark to 0 if rl_point is at + the end of the line and rl_end otherwise in emacs mode + +lib/readline/kill.c + - rl_yank_nth_arg_internal and rl_paste_clipboard now set the mark + at point before calling rl_insert_text, like rl_yank + - rl_kill_full_line now resets rl_mark to 0 + - rl_kill_line and rl_backward_kill_line now set rl_mark to the + point after the kill in emacs mode + - rl_kill_word and rl_backward_kill_word now set rl_mark to the + point after the kill in emacs mode + - rl_unix_word_rubout and rl_unix_line_discard now set rl_mark to + the point after the kill in emacs mode + +lib/readline/search.c + - noninc_search saves and restores the mark, since it can be changed + while reading the search string + - noninc_dosearch sets the mark at the end of the line, making the + region bound the `inserted' text since rl_point is set to 0 + - rl_history_search_internal sets the mark at the end of the line, + for the same reason + +lib/readline/isearch.c + - rl_search_history now saves and restores the mark + - if no matching lines are found at all when doing an isearch, leave + point where it was instead of moving it to the end of the line + + 12/17 + ----- +lib/readline/rlmbutil.h + - new file, place for multi-byte character defines and extern + declarations + +lib/readline/{bind.c,readline.c,rlprivate.h} + - new bindable variable, `byte-oriented', tracks value of + rl_byte_oriented variable + +lib/readline/mbutil.c + - new file, with multibyte char utility functions + +lib/readline/{complete,display,readline,util,vi_mode}.c + - new code for multibyte characters, derived from IBM patch + + 12/18 + ----- +lib/sh/tmpfile.c + - include posixtime.h for time() extern declaration + +support/bashversion.c + - include if it's available + +lib/readline/{histexpand,input,isearch,search}.c + - new code for multibyte characters, derived from IBM patch + +lib/readline/readline.h + - include rltypedefs.h + + 12/19 + ----- +lib/readline/complete.c + - slight change to mark-directories code to avoid adding a slash if + point is at the end of the line (rl_line_buffer[rl_point] == '\0') + and the previous character was a slash + - change printable_part to not return empty pathnames, which could + happen when completing filenames and a filename with a trailing + slash was passed as the argument. If the portion following the + trailing slash is NULL, ignore it and look for a previous slash. + If there's no previous slash, just return the filename argument + - new variable, rl_completion_mark_symlink_dirs, mirrors the value + of (user-settable with a variable) _rl_complete_mark_symlink_dirs + but may be modified by application-specific completion functions + when appropriate (set in rl_complete_internal and rl_menu_complete) + +lib/readline/readline.h + - extern declaration for rl_completion_mark_symlink_dirs + +pcomplete.c + - if one of the actions is CA_DIRECTORY, set + rl_completion_mark_symlink_dirs to indicate that we want the + trailing slash (might have to relax this) + +lib/readline/doc/rltech.texinfo + - documented rl_completion_mark_symlink_dirs variable + +lib/readline/doc/rluser.texinfo, doc/bash.1 + - documented the fact that `complete -d' and `complete -o dirnames' + force readline to append a slash to symlinks to directories + +builtins/enable.def + - changed enable_shell_builtin to disallow enabling disabled + builtins in a restricted shell + +doc/{bash.1,bashref.texi} + - documented new enable behavior in restricted shells + +doc/Makefile.in + - new rule to make an `RBASH' file documenting the restrictions + imposed by a restricted shell + +expr.c + - broke the code that evaluates variables and returns results out + of readtok() into a new function: expr_streval() + - expr_streval() now performs the standard unset variable error + behavior if `set -u' has been executed and it's asked to look + up an unset variable + - broke the code that frees up the expression context stack into + a new function: expr_unwind() + +variables.c + - fixed bind_int_variable so it handles array element assignment, + so expressions like `b[7]++' and `b[0] = 42' work right + - new function, get_variable_value, returns the string value of + the SHELL_VAR * passed as an argument + - get_string_value now calls get_variable_value with a non-null + result from find_variable + + 12/20 + ----- +lib/readline/rlmbutil.h, mbutil.c + - combined _rl_find_next_mbchar and _rl_find_next_nonzero_mbchar into + a single function + - combined _rl_find_prev_mbchar and _rl_find_prev_nonzero_mbchar into + a single function + +lib/readline/{display,readline,vi_mode}.c + - changed callers of _rl_find_next_mbchar and + _rl_find_next_nonzero_mbchar + +lib/readline/{complete,display,histexpand,readline,vi_mode}.c + - changed callers of _rl_find_prev_mbchar and + _rl_find_prev_nonzero_mbchar + + 12/20 + ----- +lib/sh/mktime.c + - new file, from glibc/gawk, compiled in if system doesn't have a + working mktime(3) + +lib/sh/strftime.c + - new file, from gawk, compiled in if system doesn't have a + working strftime(3) + +lib/sh/Makefile.in, Makefile.in + - changes for mktime.c, strftime.c + +configure.in + - call AC_FUNC_MKTIME, AC_STRUCT_TM, AC_STRUCT_TIMEZONE + - call AC_REPLACE_FUNC(strftime) + +config.h.in + - add defines for TM_IN_SYS_TIME, HAVE_TZSET, HAVE_TM_ZONE, + HAVE_STRUCT_TM_TM_ZONE, HAVE_STRFTIME + +externs.h + - provide an extern declaration for strftime if HAVE_STRFTIME is + not defined and NEED_STRFTIME_DECL is + +lib/tilde/tilde.h + - header files should not include + +parse.y + - replace code in decode_prompt_string that chops up value returned + by ctime(3) with calls to strftime -- as a result, the expansion + of \@ has changed slightly (since it depends on the locale) + - added new \D{format} prompt string escape; `format' is passed to + strftime(3). Empty format is the same as `%X' (locale-specific + representation of the current time) + - combined cases for '\\', '\a', '\e', and '\r' in same case branch + in decode_prompt_string + +doc/{bash.1,bashref.texi} + - documented new \D{format} prompt string expansion + +builtins/printf.def + - use ISO C PRIdMAX instead of INTMAX_CONV + - pass length of format modifiers to mklong instead of computing it + with strlen() + +lib/sh/{fmtulong,fmtullong}.c + - changes from Paul Eggert to make more general + +arrayfunc.c + - when converting a variable to an array, make sure to unset the + dynamic_value and assign_func members of the struct variable, + since they're not valid anymore + + 12/27 + ----- +configure.in + - use AC_HELP_STRING in AC_ARG_WITH and AC_ARG_ENABLE + - remove AC_ARG_ENABLE for largefile, since AC_SYS_LARGEFILE adds + one + + 1/2/2002 + -------- +{alias,bashline,execute_cmd,general,shell,subst,variables,arrayfunc}.c,general.h + - changed some calls to strchr to calls to xstrchr for multibyte + characters + +include/shmbutil.h + - add extern declaration for xstrchr to avoid including externs.h + where it's not appropriate + +{braces,make_cmd,pathexp,subst,arrayfunc}.c, lib/sh/xstrchr.c + - include shmbutil.h + +{stringlib,subst}.c, {externs,subst}.h + - moved substring() from subst.c to stringlib.c, moved declaration + from subst.h to externs.h + +lib/sh/xmbsrtowcs.c + - new file, replacement function for mbsrtowcs + +lib/sh/Makefile.in + - add entries for xmbsrtowcs.c + +Makefile.in + - add dependencies on shmbutil.h to appropriate object files + +lib/glob/strmatch.c + - break character-class testing out into separate function: + is_cclass, in prep for multibyte changes + +{braces,make_cmd}.c + - changes for multibyte characters + +builtins/printf.def + - changes from Paul Eggert to just use intmax_t everywhere an + int/long/quad is needed and print with "%ld" if the number + fits in a long and %PRIdMAX otherwise + - remove getlong, getulong, getllong, getullong, since they're + no longer needed + - use a new type `floatmax_t' to print floating point numbers, the + widest-available floating point type (like `intmax_t'); new + function `getfloatmax' that calls strtold or strtod as appropriate + - remove getdouble, getldouble, since they're no longer needed + +lib/sh/fmtumax.c + - new file, string-to-[u]intmax_t conversion, just includes + fmtulong.c with the right defines + +Makefile.in, lib/sh/Makefile.in + - additions for fmtumax.c + +bashtypes.h + - include if it's available + +expr.c + - arithmetic is now in intmax_t instead of long + +externs.h + - extern declaration for fmtumax + - change extern declarations for evalexp, itos, inttostr, + uitos, uinttostr since they now return or use intmax_t instead + of long + +{execute_cmd,general,mailcheck,subst,variables}.c, parse.y +{array,general,subst,test,variables}.h +lib/sh/{itos,netopen}.c +builtins/{bashgetopt,common}.c, builtins/common.h +builtins/{break,fc,history,jobs,let,printf,pushd,read,shift,wait}.def + - changes for intmax_t shell arithmetic conversion + +doc/{bashref.texi,bash.1} + - documented long->intmax_t shell arithmetic conversion + +sig.c + - in initialize_terminating_signals, if we've already trapped a + terminating signal, don't reset the signal handler for it + + 1/3 + --- +{arrayfunc,pathexp}.c, parse.y + - changes for multibyte chars + +parse.y, lib/sh/strtrans.c + - moved ansiexpand from parse.y to lib/sh/strtrans.c + +parse.y, locale.c + - moved mk_msgstr and localeexpand from parse.y to locale.c + +parse.y + - new function, yy_input_name, returns name of input file from + bash_input.name + - broke the code that parses ((...)) constructs out of read_token + into a new function, parse_dparen() + +externs.h + - new extern declaration for ansiexpand(), mk_msgstr(), and + localeexpand() + +input.h + - new extern declaration for yy_input_name() + +{error,locale}.c + - use yy_input_name for error and other messages + +execute_cmd.c + - change shell_execve to make sure that the file is executable + before looking at the interpreter to find out why the execve() + failed (avoids misleading error message) + +lib/glob/glob.c + - move code that matches leading `.' and skips those filenames into + a separate function: skipname(), so there can be unibyte and + multibyte versions of that function + + 1/7 + --- +subst.c + - more changes for multibyte characters + +print_cmd.c + - change semicolon() so it doesn't output a `;' immediately after a + newline, since that results in a null command, which is a syntax + error + +variables.c + - fix indirection_level_string to turn off set -x while evaluating + PS4 + + 1/8 + --- +builtins/set.def + - make -o options into one struct, instead of separate structs for + option names corresponding to flags and non-flag option names. + This has the side effect of sorting the option names in output + +lib/glob/glob.c + - new function, mbskipname(), multibyte char version of skipname() + - removed all #ifndef SHELL code, this will never be used outside + the shell + +include/posixdir.h + - move REAL_DIR_ENTRY define here from lib/glob/glob.c + +lib/glob/glob_loop.c + - new file, included in glob.c for unibyte and multibyte versions of + glob_pattern_p + - added some forward static function declarations with prototypes + - more changes for multibyte character handling + +lib/glob/Makefile.in + - make glob.c depend on glob_loop.c + - changes for xmbsrtowcs.[co] + +lib/glob/xmbsrtowcs.c + - moved here from lib/sh, since the matching functions use it, and + libglob.a is linked after libsh.a + + 1/9 + --- +lib/glob/smatch.c + - new file, with strmatch (now xstrmatch) and associated functions, + with changes for multibyte chars + +lib/glob/sm_loop.c + - new file, included by smatch.c, with `generic' versions of matching + functions that are compiled twice: once each for single-byte and + multibyte characters + +lib/glob/strmatch.c + - strip out everything except strmatch(), which either calls fnmatch + (if HAVE_LIBC_FNM_EXTMATCH is defined) or xstrmatch + +lib/glob/collsyms.c + - changes for multibyte chars + +lib/glob/Makefile.in, Makefile.in + - changes for new source files + + 1/10 + ---- +lib/readline/complete.c + - new function, rl_completion_mode (rl_command_func_t *func), returns + the appropriate value to pass to rl_complete_internal depending on + FUNC and the value of `show-all-if-ambiguous'. This allows + application completion functions to present the same interface as + rl_complete + +lib/readline/readline.h + - new extern declaration for rl_completion_mode() + +lib/readline/doc/rltech.texinfo + - documented rl_completion_mode + +lib/readline/readline.[ch] + - bumped the version number to 4.3, changing the relevant cpp defines + +configure.in + - require that an installed readline version be at least readline-4.3 + +bashline.c + - converted bash-specific completion functions to use + rl_completion_mode instead of passing TAB unconditionally + +builtins/bashgetopt.c + - the `#' option specifier now means a required numeric argument, + not an optional one + +builtins/type.def + - when converting [-]-{path,type,all} to -[pta], don't bother + freeing and reallocating the option string; just change opt[1] + and null opt[2] + +lib/sh/snprintf.c + - support %ls/%S and %lc/%C for wide strings and characters, + respectively, if HANDLE_MULTIBYTE is defined + +mailcheck.c + - don't print a message about new mail if the file has not grown, + even if the access time is less than the modification time + + 1/14 + ---- +lib/readline/readline.c + - new function, rl_replace_line, to replace the readline line buffer + with the text supplied as an argument + - new function, rl_replace_from_history, replaces readline line + buffer with text from history entry passed as argument (undocumented, + not in readline.h because it requires a definition of + HIST_ENTRY for the prototype) + +lib/readline/readlne.h + - new extern declaration for rl_replace_line + +lib/readline/doc/rltech.texinfo + - documented rl_replace_line + +lib/readline/{isearch,readline,search}.c + - use rl_replace_line and rl_replace_from_history where appropriate + +lib/readline/readline.c + - broke the code that sets point after moving through the history + (_rl_history_preserve_point and _rl_history_saved_point) out + into a separate function, _rl_history_set_point() + +lib/readline/{complete.c,rlprivate.h} + - find_completion_word -> _rl_find_completion_word + - free_match_list -> _rl_free_match_list + +lib/readline/complete.c + - postprocess_matches and _rl_free_match_list now return immediately + if passed a null match list + +variables.c + - new function, find_local_variable, finds a local variable by name + at the current variable context + - in find_variable_internal, call find_local_variable before searching + any of the temporary environments if variable_context > 0 (meaning + we're in a shell function). This lets a local variable + override a variable whose value was passed in the `function + environment' + + 1/15 + ---- +variables.h, execute_cmd.c + - declare variables describing the temporary environments in + variables.h instead of in C files + +findcmd.c, builtins/setattr.def + - instead of calling find_tempenv_variable, use find_variable_internal + and check whether the returned SHELL_VAR * has the tempvar + attribute + +variables.c + - tentative change to lookup order in find_variable_internal so that + function local variables are found before variables in + function_env when executing a shell function + - change make_local_variable to handle making a local variable when + a variable with the same name already appears in one of the + temporary environments + - broke the body of make_var_array out into a new function: + static char **make_env_array_from_var_list (SHELL_VAR **vars) + - new function, make_var_array_internal, takes a hash table to look + in and a pointer to a mapping function and returns a char ** + environment-style list + - make_var_array now just calls make_var_array_internal + - new mapping function, local_and_exported, returns all local variables + in the current variable context with the export attribute set + - new function, make_local_export_array, returns an environment-style + char ** array of exported local variables in current context + - change environment creation order in maybe_make_export_env to + add variables to the environment in opposite order that + find_variable_internal uses. This means that local variables in + shell functions override variables with the same name in the + function_env + - change make_local_variable to set the initial value of the + variable it creates to NULL to make the `is set' and `is null' + tests that the expansion code does work right + - change make_local_variable to inherit the value of a variable with + the same name from the temporary enviroment + + 1/16 + ---- +Makefile.in + - link bashversion with buildversion.o instead of version.o, for + cross-compiling. version.o is for the target system; + buildversion.o is for the build system + +error.c + - add line numbers to internal_error() messages if the shell is + not interactive and running a shell script or a -c command + - report_error now prints non-zero line numbers for non-interactive + shells + +test.c + - test_syntax_error now calls builtin_error() instead of printing + its own messages + +builtins/common.c + - builtin_error now prints line numbers if a non-interactive shell + is running a shell script or a -c command + +print_cmd.c + - in cprintf, remove free_argp, since it's not used + +builtins/history.def + - make `history -n' increment the number of history lines in this + session by the number of lines read from the history file + +arrayfunc.c + - fix array_value_internal to expand the subscript even if the + variable is unset, so side effects produced by the arithmetic + evaluation will take place + +lib/readline/doc/{rluser,rltech}.texinfo + - some fixes for printing in @smallbook format from Brian + Youmans + + 1/17 + ---- +jobs.h + - new PRUNNING, PSTOPPED, PDEADPROC defines for PROCESSes, analogous + to RUNNING, STOPPED, and DEADJOB defines for jobs + +jobs.c + - use PS_RUNNING, PS_DONE, PS_STOPPED values for `running' field + of a PROCESS + - find_pipeline and find_job now take an additional flags argument + that, if non-zero, means to find only running processes; changed + all callers + - changed calls to find_pipeline and find_job made from waitchld + to find only running processes + - find_pipeline takes a third argument: an int *. If it looks in + the jobs list to find the pid, and the arg is non-null, it passes + the job index back to the caller. Used to avoid calls to + find_pipeline immediately followed by find_job with the same PID + +nojobs.c + - a couple of changes to make sure that set_pid_status is never + called with a pid argument of 0 or -1 + +trap.c + - change trap_handler to longjmp to wait_intr_buf (set by wait_builtin) + if a signal is received for which a trap has been set during + execution of the wait builtin (need to include builtins.h and + builtins/builtext.h and declare some extern variables for the + right things to check) + - new variable to keep track of which signal caused the longjmp to + wait_intr_buf, set by trap_handler (wait_signal_received) + +builtins/wait.def + - set the return value of wait when a longjmp(wait_intr_buf, 1) is + done to 128 + wait_signal_received + +{jobs,nojobs}.c + - set wait_signal_received to SIGINT in wait_sigint_handler before + the longjmp(wait_intr_buf, 1) + + 1/18 + ---- +bashline.c + - turn off rl_filename_completion_desired when completing a command + name with a single match only if the first char of that match is + not a `/' + - if there are multiple identical matches for a command name in + attempt_shell_completion, turn off rl_filename_completion_desired + if the first char is not a `/' to avoid readline appending a + slash if there's a directory with the same name in the current + directory + + 1/22 + ---- +lib/readline/complete.c + - new variable, _rl_page_completions, to control whether we want to + run the internal pager when listing completions (defaults to 1) + +lib/readline/rlprivate.h + - extern declaration for _rl_page_completions + +lib/readline/bind.c + - new bindable variable, `page-completions', controls value of + _rl_page_completions + +lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1 + - documented `page-completions' variable + +Makefile.in + - use $(INSTALL_SCRIPT) instead of $(INSTALL_PROGRAM) to install + `bashbug' + +aclocal.m4 + - fix small quoting problem in RL_LIB_READLINE_VERSION macro + +lib/readline/terminal.c + - fetch and save terminal's `vs' and `ve' cursor control attributes + - fetch and save terminal's `kI' attribute (string sent by Insert) + - new function, _rl_set_cursor, sets cursor to normal (insert mode) + or very visible (overwrite mode) + +lib/readline/readline.c + - new global variable, rl_insert_mode + - new function to toggle overwrite mode, rl_overwrite_mode + - each new line starts in insert mode + - switching to vi mode or emacs mode resets to insert mode + - reset cursor to normal before returning line + - _rl_replace_text now returns the number of characters inserted, + the return value from rl_insert_text + - new function, _rl_insert_or_replace_text (const char *string, int insert), + either inserts STRING or replaces the number of chars in STRING + with STRING starting at rl_point, depending on value of INSERT + - renamed rl_insert to _rl_insert_char, rl_insert just calls + _rl_insert_char with the same arguments when in insert mode + - new function, _rl_overwrite_char, handles self-insert in overwrite + mode. Does multibyte chars by reading an entire multibyte character + before entering overwrite loop + - new function, _rl_overwrite_rubout, handles RUBOUT when in + overwrite mode, called from rl_rubout + - new function, _rl_rubout_char, old body of rl_rubout; rl_rubout + calls this when not in overwrite mode + +lib/readline/readline.h + - extern declarations for rl_insert_mode and rl_overwrite_mode() + +lib/readline/rldefs.h + - define constants for values of rl_insert_mode + +lib/readline/rlprivate.h + - extern declarations for _rl_set_cursor and _rl_set_insert_mode + - change type of _rl_replace_text to return int + - extern declarations for _rl_insert_char, _rl_rubout_char + +lib/readline/funmap.c + - new bindable name `overwrite-mode', bound to rl_overwrite_mode + +lib/readline/rlconf.h + - define CURSOR_MODE if you want the cursor to show insert or + overwrite mode (only available if both `vs' and `ve' capabilities + are present) + +lib/readline/{complete,parens,readline,search,vi_mode}.c + - change calls to rl_insert to _rl_insert_char + +lib/readline/{readline,search}.c + - change calls to rl_rubout to _rl_rubout_char to avoid overwrite + mode problems + +lib/readline/vi_mode.c + - fix rl_vi_overstrike to just call _rl_overwrite_char, which + handles multibyte chars + +lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1 + - document new `overwrite-mode' command + + 1/23 + ---- +lib/readline/readline.c + - return 0 immediately from rl_insert_text if the string to insert + is NULL or "" + +bashline.c + - if a numeric argument is given to one of the bash-specific glob + pattern completion functions (including TAB), append a `*' to + the word before generating matches + - in attempt_shell_completion, when doing glob completion, only + set the match list to NULL if rl_completion_type == TAB and + there is more than one completion. This permits listing completions + with double tabs and displaying ambiguous completions + - new function, bash_glob_complete_word, appends a `*' to the word + to be completed and then globs it. It uses a new filename + quoting function (bash_glob_quote_filename) to avoid quoting + globbing characters in the filename if there are no matches or + multiple matches + +lib/readline/complete.c + - set completion_changed_buffer to 0 in rl_complete_internal if + no matches were produced by the completion generator function + - new variable, rl_completion_suppress_append, suppresses appending + of rl_completion_append_character. Settable by application + completion functions, always 0 when application completion + functions are called (set to 0 by rl_complete_internal and + rl_menu_complete) + - broke the code that assigns default values to readline completion + variables out of rl_complete_internal and rl_menu_complete into + a new function, set_completion_defaults (int what_to_do) + +lib/readline/readline.h + - extern declaration for rl_completion_suppress_append + +lib/readline/doc/rluser.texinfo, doc/bash.1 + - documented behavior of glob-expand-word and glob-list-expansions + when supplied a numeric argument + - documented glob-complete-word + +lib/readline/doc/rltech.texinfo + - documented rl_completion_suppress_append + + 1/24 + ---- +lib/readline/text.c + - new file, text and character handling functions from readline.c + +lib/readline/misc.c + - new file, miscellanous bindable functions and their supporting + code from readline.c + +Makefile.in, lib/readline/Makefile.in + - changes for text.c, misc.c + +lib/readline/bind.c + - change ISKMAP case of rl_invoking_keyseqs_in_map to output + ESC as "\M-" instead of "\e" -- it's closer to the documentation + - change _rl_get_keyname to output ESC as \e instead of \C-[ + (it's easier to understand) + +pcomplete.h + - new flag, COPT_NOSPACE + +builtins/complete.def + - new `-o nospace' option for complete and compgen (though it doesn't + really do anything for compgen, since that doesn't hand anything + off to readline) + +bashline.c + - if a programmable completion specifies COPT_NOSPACE, set + rl_completion_suppress_append = 1 + +lib/readline/doc/rluser.texinfo + - documented new `-o nospace' option to complete and compgen + +doc/{bash.1,bashref.texi} + - documented $'\cX' escape sequence (forgot to before) + + 1/28 + ---- +variables.c + - make_new_variable now takes the HASH_TABLE * as its second + argument; changed callers + - new function, bind_variable_in_table, takes the HASH_TABLE * as + its third paramter; bind_variable calls bind_variable_in_table + with shell_variables as third argument + +variables.h + - new struct var_context, variable context (per-scope -- global, + function local, etc.) + +variables.[ch],builtins/common.[ch] + - moved functions that push and pop a variable context from + builtins/common.c to variables.c; move extern function + declarations to variables.h + - new function, all_local_variables + - variable_in_context is now static, used only by all_local_variables + +variables.[ch],execute_cmd.c + - push_context now takes the function name as an argument for + future use + - push_context takes an indication of whether or not the function is + executing in a subshell and saves the positional parameters only + if not in a subshell + - new functions for managing a stack of variable contexts and + scopes: new_var_context, dispose_var_context, push_var_context, + pop_var_context, push_scope, pop_scope + +builtins/declare.def + - call all_local_variables instead of map_over (...) in declare_internal + - don't call make_local_variable if we're looking at functions + ((flags_on & att_function) != 0), since it's wasted + - make sure VAR is set to NULL if check for variable_context fails + and we didn't just create or fetch a local variable in + declare_internal + - in non-function branch of declare_internal, only call find_variable + if VAR is NULL -- if it's not null, we just created or fetched a + local variable and don't need to do it again + + 1/29 + ---- +variables.[ch] + - the temporary environments (temporary_env, builtin_env, function_env) + are now HASH_TABLEs instead of argv-style arrays of strings (this + is an intermediate step on the way to the new lcc-inspired symbol + table scope structure) + - new internal attribute for variables: att_propagate. This means + to propagate the value out of the temporary environment up the + (for now implicit) chain of variable scopes when the containing + temporary environment is deleted + +variables.c + - assign_in_env now adds to the HASH_TABLE temporary_env instead + of making environment-style strings in an array of strings + - changed the way the temporary environments are merged into the + shell variable table to account for the new HASH_TABLE temp + environments + - changed the way the export environment is created due to the new + structure of the temporary environments + - new function, bind_variable_internal (name, value, table), binds + NAME to have VALUE in TABLE without searching the temporary + environments + - removed: shell_var_from_env_string, bind_name_in_env_array + - variable_in_context now checks the att_local attribute and makes + sure the variable is not invisible + - local_and_exported now makes sure the variable is not invisible + +execute_cmd.c + - we no longer need to copy the temporary environment to function_env + or builtin_env, we can simply use variable assignments + +{findcmd,subst,variables}.c, builtins/{declare,setattr}.def + - since variables from the temporary environments are no longer turned + into SHELL_VARs on the fly, don't dispose the SHELL_VAR returned + by find_variable or find_variable_internal + - need to savestring() the value returned by find_variable if it has + the tempvar attribute before calling bind_variable on it, because + bind_variable will search and bind into the temporary environments + and will free the old value before binding the new. For temporary + environments, these two pointers will be the same, and + bind_tempenv_variable will end up using freed memory + +builtins/{declare,setattr}.def + - set the att_propagate attribute when exporting or making readonly + variables from the temp environment (i.e., `var=value declare -x var' + or `var=value export var' sets the propagate attribute on the entry + for `var' in the temporary environment HASH_TABLE) + +lib/readline/isearch.c + - ^W when reading isearch string yanks the current word out of the + current line into the search string, skipping the portion already + matched + - ^Y when reading isearch string yanks the rest of the current line + into the search string, skipping the portion already matched + + 1/30 + ---- +{print_cmd,variables}.c + - moved indirection_level_string() from variables.c to print_cmd.c + +{externs,variables}.h + - moved extern declaration of indirection_level_string to externs.h + +{general,variables}.c + - moved assignment() from variables.c to general.c + +{general,variables}.h + - moved extern declaration of assignment() to general.h + +{externs,input}.h + - moved extern declaration of decode_prompt_string to externs.h + +print_cmd.c + - include flags.h, don't include stdc.h + +variables.c + - moved some functions around to group functions better + - changed new_shell_variable to explicitly initialize each member + of the created struct variable instead of calling bzero() + - make_new_variable now just calls new_shell_variable instead + of duplicating what it does + - removed some code in bind_function that duplicated what + new_variable does on the newly-created SHELL_VAR + - since there are no local function variables (functions are always + made at the global scope), kill_all_local_variables() doesn't + need to consider functions + + 1/31 + ---- +variables.c + - sort the array of special variables + - short-circuit the search in stupidly_hack_special_variables if + the passed name can't be found in the rest of the array + (that is, if name[0] < special_vars[i].name[0]) + +lib/readline/history.c + - unstifle_history() was returning values exactly opposite of + the documentation + +lib/readline/doc/{hsuser.texinfo,history.3} + - clarified the unstifle_history() documentation a little + + 2/4 + --- +variables.c + - in bind_variable, don't call bind_tempenv_variable after a + find_tempenv_variable succeeds -- just change the value inline. + There's no reason to look it up twice + - change makunbound to only call stupidly_hack_special_variables + if we're not unsetting a function + +variables.[ch] + - new function, unbind_function, like makunbound but doesn't mess + with previous contexts or calling stupidly_hack_special_variables + +builtins/set.def + - change unset_builtin to call either unbind_func or unbind_variable + +builtins/getopts.def + - call unbind_variable(name) instead of makunbound(name, shell_variables) + + 2/5 + --- +lib/glob/sm_loop.c + - use malloc instead of xmalloc in BRACKMATCH and handle failures + +error.c + - add extern declaration of executing_line_number with prototype, + since execute_cmd.h can't be included without including other + files + +lib/readline/parens.c + - include + +lib/malloc/stats.c + - include + - add extern declaration of malloc_free_blocks() with prototype + +pathexp.c + - added some forward declarations with prototypes for static functions + +lib/readline/rlprivate.h + - removed declarations of rl_untranslate_keyseq, rl_discard_argument, + rl_stop_output, rl_alphabetic since they appear in readline.h + + 2/6 + --- +{arrayfunc,execute_cmd,pcomplete,shell}.c + - change calls to makunbound(name, shell_variables) to + unbind_variable (name) + + 2/7 + --- +builtins/getopt.c + - don't defer incrementing of OPTIND when an invalid option is + encountered until the next call to sh_getopt() -- what if OPTIND + is reset before that next call? This means that OPTIND is always + incremented to the next option to be handled when an option is + returned, whether it's valid or not. This is what POSIX-2002 + says to do. + +syntax.h + - new #define, CSUBSTOP + +mksyntax.c + - add "-=?+" with value CSUBSTOP to the syntax table. These are the + valid expansion operators OP in ${param[:]OPword} + +subst.c + - use table lookup for CSUBSTOP in VALID_PARAM_EXPAND_CHAR + - new flags for the string extraction functions: EX_NOALLOC. This + indicates that the functions are being used only to skip over + strings and the result won't be used, so the substring shouldn't + be allocated, copied, and freed + - new flag for string_extract: EX_VARNAME. This serves the same + purpose as the old `varname' parameter. parameter_brace_expand() + changed appropriately + - extract_delimited_string and extract_dollar_brace_string now take + an additional `flags' argument, which may include EX_NOALLOC + - changed callers of extract_delimited_string and + extract_dollar_brace_string appropriately + - string_extract now understands EX_NOALLOC; callers changed + - some smaller code cleanups + - converted char_is_quoted(), unclosed_pair(), and skip_to_delim() + to understand multibyte characters + + 2/11 + ---- +variables.[ch] + - moved to a symbol organization inspired by lcc. The basic structure + is no longer a HASH_TABLE, but a VAR_CONTEXT, which includes a hash + table as one of its members. VAR_CONTEXTs are linked together to do + variable scoping. One nice thing about this is that the entire + symbol table doesn't need to be searched at function scope exit to + remove local variables. Fixes problems with only one instance of + builtin_env and function_env, even though it really is a stack + - shell_variables is now a VAR_CONTEXT *, with a global_variables + variable that points to the bottom of the stack for fast access + - function-scope local variables (assignments specified on the command + line before a function call) and function-local variables (declared + with the `local' builtin) have been unified in the same variable + context, replacing function_env + - assignment statements preceding the `.' and `eval' builtins are now + a separate variable scope VAR_CONTEXT, replacing builtin_env + - temporary_env (a HASH_TABLE) is now the only separate environment + - changes to export environment creation, variable binding, variable + lookup, local variable propagation all changed to work with the + new symbol table/scope structure + - a SHELL_VAR no longer has a `prev_context' member; it's not needed + +execute_cmd.c + - changes to push_context calls to include any temporary variables in + temporary_env; pop_context takes care of propagating any temporary + variables if necessary + - calls to push_scope if `eval' or `.' is called with a list of + preceding variable assignments, and pop_scope called at end of + builtin's execution. pop_scope takes care of merging temporary + variables into the shell environment when appropriate + +builtins/{setattr,declare}.def + - changes to account for variable assignments preceding `local', + `export', `readonly', `declare', etc. to work with the new + variable scoping implementation + +shell.c + - since shell_variables is now a VAR_CONTEXT, call + delete_all_contexts() when the shell is reinitializing instead of + delete_all_variables() + +builtins/common.c + - new function, get_job_by_name(), used by execute_simple_command() + for the `auto_resume' stuff and get_job_spec() + +builtins/common.h + - new set of #defined constants for flags argument to + get_job_by_name() + + 2/12 + ---- +command.h + - new redirection operator: r_reading_string for `here strings' + +parse.y + - new token, LESS_LESS_LESS, for new redirection `here string' + operator: [N]<<< word + - recognize LESS_LESS_LESS and create the appropriate redirection + +{dispose_cmd,copy_cmd,make_cmd,print_cmd}.c + - recognize r_reading_string and do the right thing (dispose_redirects, + copy_redirect, print_redirection, and make_redirection, respectively) + +redir.c + - here_document_to_fd now takes the redirection operator as its + second argument + - new function, write_here_string, expands a here string and writes it + to the here document file descriptor + - here_document_to_fd calls write_here_string for r_reading_string + operator + - handle r_reading_string in do_redirection_internal() and + stdin_redirection() + + 2/18 + ---- +doc/{bash.1,bashref.texi} + - documented here strings + +{configure,Makefile}.in + - bumped version number up to bash-2.05b and the release status + to alpha1 + +expr.c + - make expr_streval understand that variables with the `invisible' + attribute are really unset, and accessing such a variable when + `set -u' is set should be an error + +variables.h + - new accessor macros: var_isset(var) and var_isnull(var), test + whether var->value is NULL + +{eval,subst,variables}.c, builtins/{declare,setattr}.def + - be more consistent about using value_cell(var) instead of + directly referencing var->value + - use var_isset and var_isnull where appropriate + +builtins/help.def + - augmented a couple of help strings with pointers to `info' and + `man -k' + + 2/14 + ---- +variables.h + - new macros to use when setting variable values directly instead of + through bind_variable and its siblings + +{arrayfunc,variables}.c + - use var_setarray and other lvalue macros instead of assigning to + var->value directly + +builtins/setattr.def + - change show_var_attributes to show function definitions separately + from function attributes. This allows the output of `declare -f' + (with other flags), `export -f', and `readonly -f' to be reused as + shell input, instead of the old + + declare -f[flags] func() + { + foo + } + + which has syntax errors. When in posix mode, `export -fp' and + `readonly -fp' still don't print function definitions + + 2/16 + ---- +parse.y + - comment out calls to discard_parser_constructs; no need to call + empty functions + + 2/18 + ---- +lib/sh/memset.c + - replacement function for memset(3) + +lib/sh/Makefile.in, Makefile.in + - additions for memset.c + +configure.in,config.h.in + - check for memset, define HAVE_MEMSET if found, add memset.o to + LIBOBJS if not + +lib/malloc/malloc.c + - removed zmemset(), replaced with calls to memset(3) + +{subst,execute_cmd,lib/sh/netopen}.c + - replaced calls to bzero with calls to memset + +subst.c + - word_split() now takes a second argument: the value of $IFS, so + it doesn't have to look up IFS every time + - word_list_split() now calls getifs() and passes the result to + each call to word_split() as its second arg + - do a quick scan for CTLNUL in remove_quoted_nulls before allocating + new string, copying old string to it, copying over original string + and freeing new string + +eval.c + - don't bother calling dispose_used_env_vars if temporary_env is NULL + +execute_cmd.c + - fix fix_assignment_words to only look up the builtin corresponding + to the first word if one of the words in the list is marked as + W_ASSIGNMENT + +hashlib.c + - renamed hash_string to hash_bucket, which better reflects what it + does + - extracted the portion of hash_bucket that computes the hash out + into a new hash_string() + - made new body of hash_bucket into a macro HASH_BUCKET; function + just calls the macro + - calls to hash_bucket in this file now call HASH_BUCKET macro + - in add_hash_item, just add a new item at the front of the appropriate + bucket list instead of at the end + +hashcmd.h + - reduced FILENAME_HASH_BUCKETS to 53 from 107 + + 2/19 + ---- +hashlib.[ch] + - find_hash_item, remove_hash_item, add_hash_item all take a new + third `flags' argument + - add_hash_item doesn't call find_hash_item if HASH_NOSRCH passed in + flags arg + - find_hash_item will create a new hash table entry if HASH_CREATE is + passed in flags arg + - new function, hash_walk, takes a pointer to a function and a table + and calls the function for each item in the table. If the function + returns < 0, the walk is terminated + - fixed flush_hash_table to set table->nentries to 0 after freeing + all entries + - BUCKET_CONTENTS now has a new `khash' member, what key hashes to; + set by HASH_BUCKET macro (which calls hash_string), assigned in + find_hash_item (HASH_CREATE) and add_hash_item + - find_hash_item and remove_hash_item check `khash' against the + hash of the string argument before calling strcmp + +{alias,hashlib,hashcmd,pcomplib,variables}.c + - changed all calls to {find,remove,add}_hash_item + +builtins/hash.def + - return immediately from print_hashed_commands if there are no + entries in the hash table (this eliminates need for `any_printed' + variable) + - change print_hashed_commands to use hash_walk + +alias.c + - short-circuit all_aliases and map_over_aliases if + HASH_ENTRIES(aliases) == 0 + - simplify map_over_aliases by just allocating enough room in the + returned list for all entries in the aliases hash table, instead + of doing the check and xrealloc + - add_alias now calls add_hash_item with HASH_NOSRCH argument + +pcomplete.h + - sh_csprint_func_t is no more; use hash_wfunc instead + +pcomplib.c + - short-circuit print_all_compspecs if HASH_ENTRIES(prog_completes) + is 0 + - print_all_compspecs now takes a `hash_wfunc *' argument + - print_all_compspecs now just calls hash_walk + +builtins/complete.def + - new function, print_compitem, takes a BUCKET_CONTENTS *, extracts + the right info, and calls print_one_completion + +variables.c + - short-circuit map_over_funcs if HASH_ENTRIES(shell_functions) == 0 + - short-circuit flatten if the passed table has no entries + - bind_variable_internal takes a new fourth argument: `hflags', + to pass to hash table functions + - make_new_variable now passes HASH_NOSRCH flag to add_hash_item + - set_if_not now calls bind_variable_internal and passes + HASH_NOSRCH as flags argument + - bind_function now calls add_hash_item with HASH_NOSRCH argument + - fixed make_local_variable: old_var == 0 && was_tmpvar can never + be true + - if we didn't find an old variable in make_local_variable, call + bind_variable_internal with HASH_NOSRCH argument + - fix push_temp_var to reset variable context to 0 if binding into + global_variables->table + +parse.y + - fix to parse_compound_assignment to avoid core dumps on empty + compound array assignments + +subst.c + - getifs() is now global so read_builtin can call it + +subst.h + - extern declaration for getifs() + + 2/20 + ---- +hashlib.c + - changed hash_string to use a better hash function + - changed HASH_BUCKET to use masking rather than modulus to hash a + string to a bucket -- HASH TABLES MUST NOW BE SIZED BY POWERS + OF TWO + +hashlib.h + - DEFAULT_HASH_BUCKETS is now 64 + +hashcmd.h + - FILENAME_HASH_BUCKETS is now 64 + +pcomplib.c + - COMPLETE_HASH_BUCKETS is now 32 + +variables.c + - TEMPENV_HASH_BUCKETS is now 4 + +alias.c + - new define, ALIAS_HASH_BUCKETS, set to 16, used to size alias table + +hashlib.c + - removed initialize_hash_table; folded code into make_hash_table + - fixed copy_bucket_array to copy the `khash' member of an item + - renamed functions to be more systematic and easier for me: + make_hash_table -> hash_create + hash_table_nentries -> hash_size + copy_hash_table -> hash_copy + find_hash_item -> hash_search + remove_hash_item -> hash_remove + add_hash_item -> hash_insert + flush_hash_table -> hash_flush + dispose_hash_table -> hash_dispose + print_table_stats -> hash_pstats + get_hash_bucket -> hash_items + - changed hash_search to short-circuit if table->nentries == 0 and + HASH_CREATE has not been passed in the flags argument + +{alias,variables,hashcmd,pcomplib}.c + - renamed calls to all renamed functions from hashlib.c + +builtins/kill.def + - don't drop a leading `-' in a pid argument + - call kill_pid with an explicit third argument of 1 if the pid + argument to kill is < -1, rather than rely on the behavior of + kill(2) + + 2/21 + ---- +subst.c + - quoted_strchr is no longer declared `inline' + - skip_double_quoted is no longer declared `inline' + - string_extract_double_quoted is no longer declared `inline' + +lib/readline/input.c + - rl_gather_tyi is now an `int' valued function; returns the number + of characters read (0 or 1) or -1 on error + - if rl_gather_tyi() returns -1 to rl_read_key(), set rl_done to 1 + and return a newline; something is wrong with the input fd + + 2/25 + ---- +variables.[ch] + - IFS is now a special variable + - new special var function, sv_ifs(), called when IFS is set or unset + - call setifs() when IFS is first set in initialize_shell_variables + - call setifs() from make_local_variable and assign_in_env if + appropriate + - if assign_in_env() is called with a var assignment like `VAR=', + make the value in the new SHELL_VAR created be "" like + do_assignment_internal does, since certain parts of the shell use + a NULL value as evidence that the variable is unset (though + attributes may have been assigned) + - if push_temp_var pushes something up to the global_variables table, + make sure that the context is set to 0 + - new function dispose_temporary_env, called by both + dispose_used_env_vars and merge_temporary_env with different `free + func' function pointers; calls sv_ifs after disposing the temporary + environment + - push_exported_var now calls bind_variable_internal instead of + bind_variable + - pop_scope and pop_context now call sv_ifs + +subst.[ch] + - new global variables used to keep track of IFS state, to avoid + having to call find_variable("IFS") all the time: + + ifs_var the SHELL_VAR for IFS + ifs_value ifs_var ? value_cell (ifs_var) : " \t\n" + ifs_cmap bitmap of characters in ifs_value + ifs_firstc first character in ifs_value + + - new function setifs(), sets the aforementioned ifs variables each + time IFS is set or unset, and at nested scope exit + - instead of calling getifs() from inside subst.c, use ifs_value + - getifs() now just returns ifs_value + - use ifs_firstc in string_list_dollar_star() + - only call member() in issep() if separators is more than one char + - don't cache a bitmap every time expand_word_internal() is called; + use ifs_cmap instead + - new macro, isifs(c), checks whether C is in ifs_cmap + +builtins/read.def + - use issep() and isifs() macros instead of looking at $IFS directly + +syntax.h + - make sure macros that access sh_syntaxtab cast the argument to + `unsigned char' before array access + - new macros: issyntype(c, type) and notsyntype(c, type), check + sh_syntaxtab[c] for a particular flag value `type' + + 2/26 + ---- +hashlib.h + - the `data' member of a `BUCKET_CONTENTS' is now a PTR_T + +{hashlib,alias,variables,hashcmd,pcomplib}.c + - removed some casts when assigning to and using `data' member of a + `BUCKET_CONTENTS' + +subst.c + - in split_at_delims, call make_word_list instead of allocating and + initializing a WORD_LIST * directly + +make_cmd.[ch] + - add_string_to_list is now just a macro that calls make_word_list + - make_simple_command now calls make_word_list instead of allocating + a WORD_LIST * directly + + 2/27 + ---- +copy_cmd.c + - copy_word now calls make_bare_word to allocate the copy + - copy_word_list now calls make_word_list to allocate the copy + +shell.h + - include `ocache.h' for simple object caching + - call cmd_init() to initialize the WORD_DESC and WORD_LIST object + caches + +{make,dispose}_cmd.c + - allocate WORD_DESC * and WORD_LIST * vars from their respective + ocaches, and return them to the cache when disposing + +jobs.c + - renamed old `waiting_for_job' variable to `queue_sigchld', which + better reflects its intent: sigchld_handler does not call waitchld + if `queue_sigchld' is non-zero, it simply increments the count of + waiting children + - cleanup_dead_jobs now just sets and clears queue_sigchld instead of + blocking and unblocking SIGCHLD; it calls waitchld at the end if + `sigchld' is non-zero, but that's not really necessary + - in setjstatus, only call xrealloc if `statsize' is less than the + number of processes passed -- no reason to do it if they're the + same + + 2/28 + ---- +sig.[ch] + - reinitialize_signals is no more; initialize_signals takes an + argument saying whether or not we are reinitializing + +builtins/exec.def + - reinitialize_signals() -> initialize_signals(1) + +test.c + - fix filecomp() to work right when one file has a non-positive + timestamp and the other file does not exist + +doc/{bash.1,bashref.texi} + - document what happens for test's -nt and -ot operators when one + file operand exists and the other does not + +jobs.c + - if we haven't messed with SIGTTOU, just manipulate queue_sigchld + in notify_of_job_status instead of calling sigprocmask() + - list_one_job now calls pretty_print_job directly instead of going + through print_job + - pretty_print_job now must be called with SIGCHLD blocked or held + instead of blocking SIGCHLD itself + - changed start_job so that it doesn't call UNBLOCK_CHILD and then + immediately call BLOCK_CHILD again (explicitly or via last_pid()), + call find_last_pid instead of last_pid and then UNBLOCK_CHILD + - changed wait_for_job the same way + - find_last_pid now takes a second argument: block; uses BLOCK_CHILD + if `block' is 1, not otherwise. Changed existing calls: + find_last_pid(j) -> find_last_pid(j, 0) + last_pid(j) -> find_last_pid(j, 1) + `last_pid()' is now gone + - rewrote wait_for_background_pids(); it was a little strange + +copy_cmd.c + - copy_if_command: don't copy null false_case commands + - copy_simple_command: don't copy a null redirection list + +subst.c + - in get_word_from_string and list_string, just check for " \t\n" + directly rather than calling strcmp + - in get_word_from_string and strip_trailing_ifs_whitespace, use + isifs() instead of issep(), since they're never called with + separators != $IFS + - change issep() to call isifs if separators is longer than one + character, since it's never called with anything but "", " ", + or $IFS + + 3/1 + --- +sig.h + - enclose the BLOCK_SIGNAL macro in a do {...} while (0) loop, at it + should have been all along + +lib/readline/doc/rltech.texinfo + - document that readline defaults to stdin/stdout if rl_instream/ + rl_outstream are NULL + +lib/readline/terminal.c + - if an application is using a custom redisplay function, + rl_resize_terminal just calls rl_forced_update_display to tell + (*rl_redisplay_func) to update the display, otherwise call + _rl_redisplay_after_sigwinch + +lib/readline/readline.c + - change readline_internal_setup() so the change to vi insertion mode + happens even if readline_echoing_p is 0 + - don't print the prompt to rl_outstream in readline_internal_setup + if we're not echoing and the caller has defined a custom redisplay + function -- let the redisplay function deal with it + +configure.in + - new option: --enable-mem-scramble, controls memory scrambling on + free() (on by default; only affects use of bash malloc) + +config.h.in + - new option MEMSCRAMBLE, controlled by --enable-mem-scramble + + 3/5 + --- +parse.y + - added ksh-like behavior of [...] to read_token_word: if a `[' is + seen in an assignment context and the previous characters in the + token form a valid identifier, parse the [...] with + parse_matched_pair to allow spaces (and newlines) in the subscript + +bashline.c + - new function bash_servicename_completion_function, for completing + service names from /etc/services + +bashline.h + - new extern declaration for bash_servicename_completion_function + +builtins/complete.def + - allow new `-s/-A service' option to complete and compgen builtins + +pcomplete.h + - new CA_SERVICE define, new ITEMLIST variable it_services + +pcomplete.c + - add callback to bash_servicename_completion_function to generate + list of matching service names for completion + +doc/bash.1,lib/readline/doc/rluser.texinfo + - documented new `-s/-A service' option to complete and compgen + + 3/6 + --- +builtins/read.def + - change hard-coded `0' to new variable `fd' (initially 0) in + preparation for adding `-u fd' option + +bashline.c + - bash_directory_completion_hook calls expand_prompt_string instead + of expand_string (it does the right thing). This keeps expansion + errors from causing a longjmp, which shouldn't happen because of + completion + - command_subst_completion_function was augmented very slightly to + do filename completion on a non-command-word in a command + substitution + - command_subst_completion_function now skips over the lcd that + rl_completion_matches puts in matches[0] if there is more than + one possible completion + + 3/7 + --- +builtins/read.def + - only add the unwind_protect to free `rlbuf' if `edit' is non-zero, + since we won't be using readline otherwise + +lib/sh/zread.c + - renamed zread1 -> zreadintr + +redir.c + - small change to redirection_error() to make a slightly better + guess about the invalid file descriptor if the redirection op is + r_duplicating_input or r_duplicating_output + +include/stdc.h + - new macro, SH_VA_START, to encapsulate the difference between + stdarg va_start and varargs va_start + +{error,pcomplete,print_cmd}.c,builtins/common.c,lib/sh/snprintf.c + - use SH_VA_START + + 3/8 + --- +builtins/read.def + - support for the ksh-like `-u fd' option + +general.c + - new function sh_validfd(fd), returns 1 if fd is a valid open file + descriptor + +general.h + - extern decl for sh_validfd + +bashline.c + - don't call posix_readline_initialize() from initialize_readline(); + sv_strict_posix() should already have taken care of it + + 3/11 + ---- +{error,pcomplete,print_cmd}.c, builtins/common.c + - removed non-varargs versions of functions + +builtins/printf.def + - if the string argument to %q has non-printing characters, call + ansic_quote to quote it rather than sh_backslash_quote + +variables.h + - new attribute: att_trace (and corresponding trace_p() macro). + Functions with this attribute will inherit the DEBUG trap. + Currently ignored for variables + +builtins/declare.def + - new `-t' option to declare/typeset toggle the `att_trace' attribute + +builtins/setattr.def + - check for att_trace and output `-t' flag in show_var_attributes + +execute_cmd.c + - if a function is being traced (it has the `-t' attribute set), + don't turn off the DEBUG trap when it executes + +doc/{bash.1,bashref.texi} + - document the new `-t' option to declare/typeset + + 3/12 + ---- +execute_cmd.c + - don't execute the debug trap in the `cm_simple:' case of + execute_command_internal; run it in execute_simple_command so we + get the line number information right when executing in a shell + function + - run a DEBUG trap before executing ((...)) arithmetic commands, + like ksh93 + - run a DEBUG trap before executing [[...]] conditional commands, + like ksh93 + +eval.c + - add a static forward declaration for alrm_catcher() + +general.c + - add static forward declarations for bash_special_tilde_expansions, + unquoted_tilde_word, initialize_group_array + +variables.h + - add extern declarations for sh_get_env_value, map_over_funcs, + local_exported_variables + +variables.c + - add static forward declarations for dispose_temporary_env, + make_func_export_array + +bashhist.c + - add static forward declaration for check_history_control + +configure.in + - add a call to AC_CHECK_DECLS for strcpy + +config.h.in + - add placeholder for HAVE_DECL_STRCPY define, set by configure + +general.h + - don't declare strcpy if HAVE_DECL_STRCPY is defined with a non-zero + value + +sig.h + - add prototype to typedef of SigHandler + +lib/readline/histlib.h + - removed extern declaration of strcpy() + - include string.h/strings.h directly in histlib.h instead of source + files + +lib/readline/{histexpand,histfile,history,histsearch}.c + - don't include string.h/strings.h now that histlib.h includes it + +lib/tilde/tilde.c + - removed extern declaration of strcpy(), rely on string.h/strings.h + +command.h + - four new redirection types: r_move_input, r_move_output, + r_move_input_word, r_move_output_word, for + [N]<&word- and [N]>&word- from ksh93 + +print_cmd.c + - changes to print r_move_input[_word] and r_move_output[_word] + +copy_cmd.c + - changes to copy r_move_input[_word] and r_move_output[_word] + +dispose_cmd.c + - changes to dispose r_move_input_word and r_move_output_word + +make_cmd.c + - changes to make r_move_input[_word] and r_move_output[_word] from + r_duplicating_{input,output}_word, which is how the new redirs + are passed by the parser + +redir.c + - changes to make r_move_input[_word] and r_move_output[_word] do + the right thing when executed + +builtins/read.def + - print an error message and return failure immediately if zread/zreadc + return < 0 + +doc/{bash.1,bashref.texi} + - documented new [n]<&word- and [n]>&word- redirections + + 3/13 + ---- +lib/readline/isearch.c + - enabled code to allow chars bound to rl_rubout to delete characters + from the incremental search string + +shell.c + - add `-l' invocation option to parse_shell_options; equivalent to + `--login' + - fixed set_login_shell to check first char of base pathname of argv0 + for `-', like other shells + - move the check for make_login_shell after the call to + parse_shell_options because the `-l' option might set it + +doc/{bash.1,bashref.texi} + - documented new `-l' invocation option + +array.c + - new function, array_shift, shifts an array left by a specified + number of elements + - array_walk is now compiled in by default + - array_to_assignment_string now takes a second argument: int quoted. + If non-zero, the result is single-quoted before being returned + - quoted_array_assignment_string has been removed + +array.[ch] + - renamed most of the array functions so that all have an array_ + prefix and are more systematically named + - array_slice now preserves the indicies from the original array + - change array_to_assign to use a static buffer for expanding the + array indices, instead of malloc/free + +{arrayfunc,subst,variables}.c, builtins/read.def + - changed calls to various array functions to use new names + +lib/sh/stringvec.c, externs.h + - renamed all of the functions to have a strvec_ prefix and to have + a more sensible name scheme + - strvec_search's arguments are now supplied in reverse order, so + the char **array is first, like the other functions + - new function, strvec_resize, xrealloc for strvecs + +{alias,array,bracecomp,braces,bashline,execute_cmd,findcmd,general,pathexp, +pcomplete,variables}.c +lib/sh/stringlist.c +builtins/{bind,complete,exec,getopts,pushd,set}.def + - change calls to all functions from lib/sh/stringvec.c + - use strvec_resize where appropriate + +externs.h + - only declare dup2() if HAVE_DUP2 is undefined or DUP2_BROKEN is + defined + +lib/readline/{macro,readline,util}.c, lib/readline/rlprivate.h + - _rl_defining_kbd_macro is gone, use RL_ISSTATE(RL_STATE_MACRODEF) + +lib/readline/readline.h + - new struct readline_state, encapsulates most of readline's internal + state in case you need reentrancy or nested calls to readline() + - extern declarations for rl_save_state, rl_restore_state + +lib/readline/readline.c + - add (undocumented) int rl_save_state (struct readline_state *), + int rl_restore_state (struct readline_state *) + + 3/14 + ---- +array.[ch] + - new function, array_rshift, shifts an array right by a specified + number of elements, optionally inserting a new element 0 + +examples/bashdb/bashdb + - new single-file version of bash debugger, originally modified from + version in bash-2.04 by Gary Vaughan (the old debugger still + appears in examples/obashdb). This version has a more gdb-like + command set + +examples/bashdb/bashdb.el + - new emacs bashdb debugger mode from Masatake YAMATO + +execute_cmd.c + - don't make $LINENO relative to function start unless the shell is + currently interactive -- this is what ksh93 does and what I + believe to be the intent of POSIX.2 (this required changing some + of the test checks because the output has changed) + - run the debug trap for each command in an arithmetic for expression, + like ksh93 does + +lib/readline/vi_mode.c + - redid rl_vi_subst (binding func for `s' and `S') in terms of + rl_vi_change_to: `S' == `cc' and `s' == `c '. This makes undo + work right + + 3/18 + ---- +hashlib.c + - fixed hash_walk to return if the item function returns < 0, instead + of breaking out of the current hash chain + +array.c + - fixed array_walk to return if the item function returns < 0, like + hash_walk + +lib/sh/stringlist.c, externs.h + - new function: strlist_walk, takes a stringlist and a pointer to an + item func. Like other _walk funcs, if item func returns < 0 the + walk is cancelled + - new function: strlist_flush, frees items in the contained list + with strvec_flush + - renamed functions to have a strlist_ prefix and be more systematic + +pcomplib.c,pcomplete.h + - removed redundant `progcomp_initialized' variable + - renamed functions to have `progcomp_' or `compspec_' prefixes + like the hash library + +{bashline,pcomplete}.c,builtins/complete.def + - fixed calls to stringlist functions to use new names + - fixed calls to functions in pcomplib.c to use new names + +pcomplete.c + - made the debugging code #ifdef DEBUG -- it should be mature enough + +builtins/hash.def,parse.y + - use REVERSE_LIST(x, t) instead of (t)reverse_list(x) + +list.c,{externs,general}.h + - renamed the list functions to have a list_ prefix, changed callers + +externs.h,{execute_cmd,stringlib,subst}.c,builtins/common.c,lib/sh/stringvec.c + - word_list_to_argv -> strvec_from_word_list + - argv_to_word_list -> strvec_to_word_list + - moved functions to lib/sh/stringvec.c + +lib/sh/stringvec.c + - changed name of second argument to strvec_from_word_list from `copy' + to `alloc' so the use of `copy' between strvec_from_word_list and + strvec_to_word_list isn't as confusing + - changed name and sense of second argument to + strvec_to_word_list from `copy' to `alloc' for the same reason -- + now both functions agree on semantics of second argument + +lib/sh/stringlist.c + - ditto for strlist_from_word_list and strlist_to_word_list + +subst.c + - changed callers of strvec_to_word_list + + 3/19 + ---- +builtins/hash.def + - added `-l' option to list table or individual targets in reusable + format + - added `-d' option to remove one or more names from the table of + hashed commands (provides `unhash' or `unalias -t' functionality) + +doc/{bash.1,bashref.texi} + - documented new `-l' and `-d' options to `hash' + +hashcmd.[ch] + - renamed functions to have a `phash_' prefix and follow new naming + convention + - phash_remove now returns an int: 1 if command not in hash table, + 0 if filename removed OK + +{findcmd,variables}.c, builtins/{hash,type}.def + - changed callers to use new names from hashcmd.c + +builtins/common.[ch] + - new function, sh_notfound(s), prints standard `not found' message + - new function, sh_invalidid(s), prints standard `invalid identifier' + message + - new function, sh_restricted(s), prints standard `restricted' message + for restricted shells + - new function, sh_invalidnum(s), prints standard `invalid number' + message + - renamed bad_option to sh_invalidopt, changed to print + `invalid option' instead of `unknown option' + - new function, sh_invalidoptname, prints standard `invalid option + name' for long options + - new function, sh_badjob (s), prints standard `no such job' message + - new function, sh_invalidsig (s), prints standard `invalid signal + specification' message + - new function, sh_nojobs (s), prints standard `no job control' message + - new function, sh_needarg (s), prints standard `option requires an + argument' message + - new function, sh_neednumarg (s), prints standard `numeric + argument required' message + - new function, sh_badpid(s), prints standard `not a pid...' message + - new function, sh_erange (s, desc) prints standard `out of range' + message, optionally using `desc' to say what the argument is + +builtins/{alias,command,declare,exec,hash,type}.def + - call sh_notfound() instead of calling builtin_error directly + +builtins/{declare,getopts,read,set,setattr}.def + - call sh_invalidid() instead of calling builtin_error directly + +builtins/{cd,command,enable,exec,hash,source}.def + - call sh_restricted() instead of calling builtin_error directly + +builtins/{printf,read,ulimit}.def, builtins/common.c + - call sh_invalidnum instead of calling builtin_error directly + +builtins/{complete,declare,pushd,set}.def, builtins/bashgetopt.c + - call sh_invalidopt instead of bad_option or builtin_error directly + +builtins/{complete,set,shopt}.def + - call sh_invalidoptname instead of builtin_error directly + +builtins/{fg_bg,jobs,kill,wait}.def + - call sh_badjob instead of calling builtin_error directly + +builtins/common.c, builtins/{kill,signal}.def + - call sh_invalidsig instead of calling builtin_error directly + +builtins/{fg_bg,suspend,wait}.def + - call sh_nojobs instead of calling builtin_error directly + +builtins/{common,bashgetopt}.c, builtins/{hash,kill}.def + - call sh_neednumarg and sh_needarg where required + +builtins/{kill,wait}.def + - call sh_badpid where required + +builtins/{break,fc,history,pushd,shift,ulimit,umask}.def + - call sh_erange where appropriate + +builtins/printf.def + - new static function, printf_erange, prints standard out-of-range + warning message + +builtins/set.def + - changed so that calls to sh_invalidopt always include the leading + `+' or `-' + +builtins/shopt.def + - changed SHOPT_ERROR macro to shopt_error function + +builtins/bind.def + - regularized error messages to `bind: object: error string' like + other error messages + +builtins.h + - the `short_doc' member of a `struct builtin' is now of type + `const char *' + - the strings in `long_doc' array of a struct builtin are now const + +builtins/mkbuiltins.c + - changes for new `const' members of struct builtin + + 3/20 + ---- +lib/readline/histfile.c + - use pointers instead of indexing into buffer when reading the + contents of the history file in read_history_range and + history_truncate_file + + 3/21 + ---- +lib/readline/histfile.c + - new file, with code to mmap the history file for reading and + writing (depends on HAVE_MMAP, currently nothing checks for that) + + 3/25 + ---- +error.[ch] + - new function, err_badarraysub(s), calls report_error with standard + `bad array subscript' message + - new function, err_unboundvar(s), calls report_error with standard + `unbound variable' message + - new function, err_readonly(s), calls report_error with standard + `readonly variable' message + +{arrayfunc,subst}.c + - call err_badarraysub where appropriate + +{expr,subst}.c + - call err_unboundvar where appropriate + +{arrayfunc,variables}.c + - call err_readonly where appropriate + +shell.c + - changed text of bad option error messages to be the same as that + printed for builtin errors + +builtins/common.c + - changed sh_invalidopt to print the invalid option before the rest + of the error message (required some tests to be modified) + - new function, sh_readonly, calls builtin_error with standard + `readonly variable' message + +variables.c,builtins/declare.def + - call sh_readonly where appropriate + +lib/sh/stringvec.c + - added strvec_remove (sv, s), removes S from SV and shuffles rest of + elements down 1 + +lib/sh/stringlist.c + - added strlist_remove(sl, s), just calls strvec_remove on the + component list + +externs.h + - new extern declarations for strvec_remove and strlist_remove + - fixed extern declaration for strvec_search; the arguments were + reversed (unimportant, it's not compiled into the shell) + +subst.c + - change param_expand to call quote_escapes on values retrieved when + expanding the positional parameters + - change parameter_brace_expand_word to quote escapes on values + retrieved when expanding the positional parameters + - fix parameter_brace_substring to quote escape characters on unquoted + substrings extracted from variable values (needed to separate case + VT_VARIABLE from VT_ARRAYMEMBER for this, since, because + get_var_and_type calls array_value for VT_ARRAYMEMBER, we need to + skip over quoted characters in an already-appropriately-quoted + string to find the substring we want) + - fix parameter_brace_substring to quote escape characters in the + value returned by pos_params when expanding subsets of the + positional parameters and not within double quotes (in which case + pos_params() quotes the string for us) + - fix parameter_brace_substring to quote escape characters in the + value returned by array_subrange when expanding subsets of an + array and not within double quotes (in which case + array_subrange() quotes the string for us) + - new function, quoted_strlen(s), does strlen(s) while skipping over + characters quoted with CTLESC (#ifdef INCLUDE_UNUSED, since it's + not used yet) + - changed pos_params() so it always returns a list whose members are + quoted strings if (quoted&(Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) != 0 + +arrayfunc.c + - fix array_value to consistently call quote_escapes, even when a + non-array variable is being subscripted with element 0, in which + case we return the variable value + +lib/sh/strtrans.c + - make the for_echo parameter to ansicstr a `flags' parameter that + has its old `for echo' meaning if flags&1 is non-zero (which is + consistent with the old code) + - Added code to the `flags' parameter to ansicstr so that if flags&2 + is non-zero, CTLESC and CTLNUL are escaped with CTLESC in the + expanded string + - change ansiexpand() to call ansicstr with a `flags' parameter of 2 + + 3/26 + ---- +lib/readline/histfile.c + - when reading and writing the history file, use malloc instead of + xmalloc and handle failures gracefully, so the application doesn't + abort if the history file or history list is too big + + 3/27 + ---- +arrayfunc.c + - changed array_value_internal to take an additional `int *' + parameter, in which is returned the type of array indexing + performed (array[@] vs. array or array[index]) + - changed array_value and get_array_value to take a corresponding + extra parameter and pass it to array_value_internal + - changed array_value_internal to no longer return newly-allocated + memory or quote CTLESC and CTLNUL in the returned string if + `simple' array indexing (subscript not `@' or `*') is being + performed. This makes it more like a variable lookup + +arrayfunc.h + - changed prototypes for array_value and get_array_value + +expr.c + - added new parameter to call to get_array_value in expr_streval + - don't need to free memory returned by get_array_value any more + +subst.c + - quote_escapes now works with multibyte characters + - dequote_string now works with multibyte characters + - dequote_escapes is now needed, so it's compiled in, and it + now works with multibyte characters + - remove_quoted_escapes now just calls dequote_escapes and copies the + result over the argument string + - remove_quoted_nulls now returns its char * argument, parallels + remove_quoted_escapes + - parameter_brace_expand_word now passes the new argument to + array_value and quotes CTLESC and CTLNUL in the result if it's a + `simple' array expansion by calling quote_escapes + - get_var_and_type now returns VT_ARRAYMEMBER for references like + ${array} where `array' is an array variable (just like ${array[0]}). + Documented (in comment) that a VT_VARIABLE return value means that + quote_escapes has been called at some point + - changed callers of get_var_and_type to no longer free value if + VT_ARRAYMEMBER is returned as type + - changed parameter_brace_substring and parameter_brace_patsub to + call dequote_escapes on the value from get_var_and_type if the + type is VT_VARIABLE, since the substring and pattern substitution + code doesn't understand CTLESC quoting + - parameter_brace_substring no longer needs to call quoted_substring + for the VT_ARRAYMEMBER case + - changed parameter_brace_patsub to call quote_escapes on the result + of pat_subst for the VT_VARIABLE and VT_ARRAYMEMBER cases, and to + quote the returned string in the VT_ARRAYVAR and VT_POSPARAMS cases + if the `MATCH_QUOTED' flag isn't set (if it is, the pattern + substitution functions perform any necessary quoting) + - quoted_substring is no longer used; it's now #ifdef INCLUDE_UNUSED + +lib/malloc/mstats.h + - new member in _malstats: u_bits32_t bytesreq, the total number of + bytes requested by the caller via calls to malloc() and realloc() + +lib/malloc/stats.c + - print bytesreq member in _print_malloc_stats + - don't print statistics for buckets for which nmal == 0 (no mallocs) + +lib/malloc/malloc.c + - modified internal_malloc, internal_realloc to keep running total of + number of bytes requested by calling application + +shell.c + - sh_exit is now compiled in; exit_shell calls sh_exit + +error.c + - changed fatal_error, report_error, parser_error to call sh_exit + + 3/28 + ---- +subst.[ch] + - changed Q_NOQUOTE to Q_PATQUOTE; it makes the intent more clear + +subst.c + - moved code from parameter_brace_expand into a new function that + dispatches for pattern substitution: parameter_brace_remove_pattern + - changed structure of parameter_brace_remove_pattern to be like + parameter_brace_patsub and its ilk: call get_var_and_type to + isolate the variable name, move the pattern isolation code out of + the various *_remove_pattern functions into + parameter_brace_remove_pattern and pass the results to the various + functions, use a switch on the return value from get_var_and_type + to decide which function to call, regularized the arguments to the + separate pattern removal functions + - parameter_brace_remove_pattern now properly quotes escape chars in + the returned value + - changed get_var_and_type to call dequote_escapes on the `value' + parameter for case VT_VARIABLE and return the result in *valp, + so the calling functions don't have to do it themselves; changed + callers appropriately + - fixed getpattern() where it broke posix compliance: if you enclose + a pattern removal spec in double quotes, the outer double quotes + have no effect on the pattern (POSIX.1-200x 2.6.2). This uncovered + a bug in the test suite (!) + +pathexp.c + - fixed a problem with quote_string_for_globbing where it would change + consecutive CTLESC chars all to \ instead of changing every other + quoted char + + 3/31 + ---- +lib/malloc/{malloc,stats}.c + - moved declaration of _mstats to malloc.c so stats.o doesn't get + linked into the shell if the stats functions aren't called + + 4/2 + --- +lib/glob/smatch.c + - introduce `XCHAR' define, which is the type of arguments passed to + strcoll/strcmp/strlen and their wide-character equivalents, added + appropriate casts + - static arrays in single-byte version of rangecmp() are `char', not + `unsigned char', so compilers don't complain about calls to strcoll + +lib/glob/sm_loop.c + - casts for `XCHAR' and `XCHAR *' arguments to libc functions + - use prototype declaration for BRACKMATCH if `PROTOTYPES' is defined + to avoid problems with type promotion (unsigned char -> int) + +lib/glob/collsyms.h + - `name' member of struct _COLLSYM is now of type `XCHAR *', since + some compilers don't like `unsigned char *' initializers from + constant strings + +[bash-2.05b-alpha1 released] + + 4/3 + --- +builtins/{evalstring.c,common.h} + - new flag for parse_and_execute, SEVAL_NOFREE, means to not free + the argument string when finished + +lib/readline/text.c + - fixed a trivial typo in _rl_insert_char when reading multibyte + char sequences + - replace calls to ding() with rl_ding() + +include/chartypes.h + - remove SIGN_EXTEND_CHAR and TOASCII macros; they're unused + +make_cmd.c + - include dispose_cmd.h for extern function declarations + +lib/glob/glob.c + - include `shmbutil.h' and `xmalloc.h' for extern function declarations + +lib/glob/smatch.c + - include `xmalloc.h' for extern function declarations + +shell.c + - fix maybe_make_restricted to use its argument instead of global + `shell_name' + +version.c + - update copyright message to include this year + +lib/readline/display.c + - fixes from Jiro SEKIBA to fix autowrapping + when using multibyte characters + +lib/glob/sm_loop.c + - fixed a problem in BRACKMATCH where not enough memory was allocated + to hold a multibyte character when parsing POSIX.2 char class names + +support/config.{guess,sub} + - updated via patch from Paul Eggert with latest GNU additions + +variables.c + - var_lookup should use its `vcontext' argument instead of + unconditionally using `shell_variables' + + 4/4 + --- +builtins/bind.def,doc/{bash.1,bashref.texi} + - changed the usage summary and help text to make it clear that any + readline command that may appear in ~/.inputrc may be supplied as + one of the non-option arguments to `bind' + +builtins/mkbuiltins.c + - added support for `-H' option, which means to write long documentation + for each builtin to a separate file in the `helpfiles' directory + +builtins/Makefile.in + - new target `helpdoc', just creates long doc files in helpfiles + directory + +lib/sh/zcatfd.c + - new file, with zcatfd(int fd, int ofd, char *fn); dumps data from + FD to OFD + +Makefile.in,lib/sh/Makefile.in + - added zcatfd.c, zcatfd.o member of libsh.a + +builtins/evalstring.c + - changed cat_file to call zcatfd(fd, 1, fn) + +builtins/{shopt,colon}.def + - removed the $DOCNAME directive for `shopt', `true', and `false'; + just use the names + - changed $DOCNAME for `:' to just be `colon' instead of + `colon_builtin' + +builtins/reserved.def + - added help entries for ((, [[, `for ((' + +builtins/let.def + - add id++, id--, ++id, --id, ** to help text + + 4/8 + --- +builtins/bashgetopt.[ch] + - changed to allow options beginning with `+', enabled by a leading + `+' in the option string + - new variable, list_opttype, set to `-' or `+' + +builtins/{common.c,{builtin,eval,exit,fg_bg,let,printf,pushd,return,source,wait}.def + - changes to allow a `--' option for every builtin that accepts + operands but not options, as per posix.1-2001 + +builtins/{declare,setattr}.def + - use internal_getopt for parsing options, now that it supports `+' + +builtins/set.def + - use internal_getopt for initial option parse, now that it supports + a leading `+' + + +{configure,Makefile}.in, builtins/{Makefile.in,help.def,mkbuiltins.c} + - support for a new configure option, ``--enable-separate-helpfiles'', + moves the `long' help text to separate help files, installed by + default into ${datadir}/bash, one file per builtin. Off by + default -- it saves 47K, but it's only 47K, and it's in the text + segment + +flags.c + - build internal_getopt() option string argument from flags array at + runtime in shell.c + +shell.c + - new variable to control writing malloc stats at exit: + malloc_trace_at_exit, 0 by default + +lib/malloc/malloc.c + - heavily updated: + o partial page allocated on first call to malloc to make + subsequent sbrks page-aligned no longer wasted + o begin and end range guards are now the same value: the chunk + requested + o coalescing code was changed to attempt to coalesce first two + adjacent blocks on the free list; enabled by default + o blocks of size 32 are now candidates for larger block + splitting, since 32 is the most popular size + o blocks of size 32 are now candidates for smaller block + coalescing + o the IN_BUCKET check was changed to just make sure that the + size isn't too big for the bucket, since the `busy block' + checking code may increase the bucket by one or more, + meaning that the old check would fail and cause a panic when + a chunk allocated in such a way was freed + o bin sizes are now precomputed and looked up in an array + rather than being computed at runtime + o moved the _mstats declaration here to avoid the stats code + being linked in even when no stats functions were called + (only matters if MALLOC_DEBUG is defined) + o malloc now keeps track of the address of the top of the heap + and will return large chunks to the system with calls to + sbrk with a negative argument when freeing the top chunk. + Two thresholds: LESSCORE_FRC means to unconditionally return + memory to the system; LESSCORE_MIN means to return memory if + there's at least one block already on the free list + +lib/malloc/mstats.h + - stats struct now keeps track of number of block coalesces by bin, + and the number of times memory was returned to the system by bin + +lib/malloc/stats.c + - trace_malloc_stats now takes a second argument: the name of the file + to write to. The first `%p' in the template file name is replaced + by the pid + + 4/9 + --- +lib/malloc/imalloc.h + - added some macros derived from dlmalloc and glibc malloc to inline + memcpy and memset if the requested size is <= 32 bytes + +lib/malloc/malloc.c + - use MALLOC_MEMSET instead of memset in internal_{malloc,free} + +include/ocache.h + - use OC_MEMSET (variant of MALLOC_MEMSET) in ocache_free + +configure.in, config.h.in + - check for getservent(), define HAVE_GETSERVENT if found + +bashline.c + - punt immediately from bash_servicename_completion_function if + HAVE_GETSERVENT is not defined (cygwin seems to not define it) + - include "input.h" for extern save_token_state() and + restore_token_state() declarations + - change bash_execute_unix_command to call parse_and_execute with + SEVAL_NOHIST flag so the command doesn't get saved on the history + list + - change bash_execute_unix_command to save and restore the current + command line count and the token state (last_read_token, etc.). + Everything else is saved by either parse_and_execute directly or + the call it makes to push_stream(). The shell_input_line stuff + doesn't need to be saved and restored; it's not computed until + readline() returns + + 4/10 + ---- +lib/glob/glob.[ch] + - glob_filename and glob_vector now take an additional `flags' arg + - define GX_MARKDIRS as possible flag value for glob_filename and + glob_vector + +lib/sh/snprintf.c + - fixed some bugs with handling of `g' and `G' formats + - make sure numtoa returns the fractional part correctly when passed 0 + - implemented thousands grouping for `'' flag character + +lib/sh/rename.c + - a few changes to make it more bulletproof + + 4/11 + ---- +lib/glob/glob.c + - added the couple of dozen lines of code to glob_dir_to_array to + finish implementing GX_MARKDIRS + +builtins/set.def + - changed unset builtin so that it no longer considers unsetting an + unset variable or function to be an error + +lib/readline/display.c + - fix to rl_redisplay for a problem which caused display to be messed + up when the last line of a multi-line prompt (possibly containing + invisible characters) was longer than the screen width + + 4/15 + ---- +aclocal.m4 + - use AC_DEFINE_UNQUOTED in BASH_SYS_DEFAULT_MAIL_DIR instead of + enumerating all of the possible values and using AC_DEFINE + + 4/16 + ---- +Makefile.in, {builtins,support}/Makefile.in + - new variables, CFLAGS_FOR_BUILD and CPPFLAGS_FOR_BUILD, substituted + by `configure' + - changed CCFLAGS_FOR_BUILD to BASE_CCFLAGS, removing $(CPPFLAGS); + CCFLAGS and CCFLAGS_FOR_BUILD now include $(BASE_CCFLAGS) with + (possibly) different values for CPPFLAGS and CFLAGS + - GCC_LINT_CFLAGS now includes $(BASE_CCFLAGS) and $(CPPFLAGS) + instead of CCFLAGS_FOR_BUILD + - new variable, LDFLAGS_FOR_BUILD, right now equivalent to LDFLAGS + - remove $(CPPFLAGS) from recipes for buildversion, mksignames, and + mksyntax + +configure.in + - compute and substitute CFLAGS_FOR_BUILD, CPPFLAGS_FOR_BUILD, and + LDFLAGS_FOR_BUILD + - changed qnx to use LOCAL_LDFLAGS and LOCAL_LIBS instead of putting + everything in LOCAL_LDFLAGS + +builtins/Makefile.in + - remove $(PROFILE_FLAGS) from recipe for building `mkbuiltins' + - use LDFLAGS_FOR_BUILD instead of LDFLAGS in recipe for building + `mkbuiltins' + +Makefile.in + - use $(CC_FOR_BUILD) and $(CCFLAGS_FOR_BUILD) to build auxiliary + test programs (printenv, recho, zecho) + +support/Makefile.in + - use CC_FOR_BUILD and CCFLAGS_FOR_BUILD in recipe for building + `man2html' + +lib/tilde/Makefile.in + - substitute PROFILE_FLAGS, use PROFILE_FLAGS in $(CCFLAGS) + + 4/25 + ---- +Makefile.in, configure.in + - moved RELSTATUS to configure.in; configure substitutes it into + the generated Makefile + +lib/sh/snprintf.c + - fix wchars() to deal with systems where MB_CUR_MAX is not a + constant expression + + 5/2 + --- +lib/sh/shquote.c + - add `,' to list of chars that are backslash-quoted. It doesn't + hurt normal usage and prevents filenames with commas from being + inappropriately split by brace expansion after using + complete-into-braces + + 5/6 + --- +lib/sh/xstrchr.c + - we only need the check of MB_CUR_MAX and the slow code for a + few encodings, and even then only for a subset of the charset + +arrayfunc.c + - some speedups for skipsubscript and multibyte chars from Bruno Haible + +locale.c + - changed set_lang to call setlocale(LC_ALL, ...) if LC_ALL doesn't + already have a value, but doesn't change any shell variables + +include/shmbutil.h + - major speedups from Bruno Haible, mostly concerned with reducing + the number of strlen(3) calls + +subst.c + - change callers of macros in shmbutil.h to add extra argument as + necessary + - skip_single_quoted and skip_double_quoted take another argument: + the length of the string; mostly useful when using multibyte chars + - many speedups from precomputing string lengths at function start + - fixed a small bug in de_backslash in the midst of rewriting for + better efficiency + +{braces,make_cmd,pathexp}.c + - change callers of macros in shmbutil.h to add extra argument as + necessary + +pathexp.c + - fix a one-too-far problem with multibyte chars in + unquoted_glob_pattern_p + +braces.c + - brace_gobbler takes a new argument, the length of the passed string + - expand_amble takes a new argument, the length of the passed string + + 5/7 + --- +subst.c + - modified remove_quoted_nulls to eliminate the memory allocation and + do the copy in place using the same strategy as de_backslash + +lib/readline/{rldefs.h,complete.c} + - new define RL_QF_OTHER_QUOTE, so _rl_find_completion_word can note + that it found a quoting character other than \'" that appears in + rl_completer_quote_characters + + 5/9 + --- +jobs.c + - save and restore old value of jobs_list_frozen when calling trap + handlers from set_job_status_and_cleanup to avoid seg faults when + running recursive trap handlers + + 5/10 + ---- +builtins/common.h + - new #defines to use for value of changed_dollar_vars (provides + information about the caller who wants to blow away the old dollar + variables) + +builtins/common.c + - changed set_dollar_vars_changed to set changed_dollar_vars to one + of the ARGS_* values depending on the caller and environment + +builtins/source.def + - source restores the positional parameters unless the `set' builtin + was called to specify a new set while not executing a shell function + + 5/13 + ---- +POSIX + - new file, was in CWRU/POSIX.NOTES + +doc/{Makefile.in,Makefile} + - changed `posix' rule to modify ../POSIX + +doc/mkposix + - write to `POSIX' by default + +lib/sh/strtrans.c + - when ansicstr is parsing a format string for `echo -e' (or the + equivalent xpg_echo option is enabled), obey the POSIX-2001/SUSv3 + standard and accept 0-3 octal digits after a leading `0' + +doc/{bash.1,bashref.texi} + - updated `echo' description to note that up to three octal digits + are now accepted following `\0' + + 5/16 + ---- +doc/Makefile.in + - remove the generated documentation on `make distclean' if the + build directory and source directory are not the same + +Makefile.in + - descend into `support' subdirectory on a `make clean' and + `make distclean' + - remove parser-built, y.tab[ch] on a `make distclean' if the build + directory and source directory are not the same + +support/Makefile.in + - support various `clean' targets and remove man2html.o and man2html + +{configure,Makefile}.in + - move values for DEBUG and MALLOC_DEBUG into configure.in; on by + default for development versions; off by default for releases + (off for profiling, too) + + 5/21 + ---- +parse.y + - modified the grammar to allow a simple_list followed by yacc_EOF + to terminate a command. This fixes problems with things like + a backslash-newline at the end of an `eval'd string + - change handle_eof_input_unit() to reset the token state before + calling prompt_again(), in case the prompt to be evaluated contains + a command substitution + + 5/23 + ---- +lib/readline/vi_mode.c + - fix `r' command (rl_vi_change_char) when HANDLE_MULTIBYTE is defined + but MB_CUR_MAX == 1 + + 5/24 + ---- +lib/malloc/watch.c + - don't try to print `file' argument to _watch_warn if it's null + +lib/malloc/malloc.c + - changed guard checking code in internal_{malloc,free,realloc} to + access memory as (char *) and copy into a union instead of + casting and dereferencing a pointer to u_bits32_t, since that + results in unaligned accesses which will cause Sparcs to upchuck + + 5/30 + ---- +[bash-2.05b-beta1 released] + +lib/readline/text.c + - fixed a problem with rl_transpose_chars on systems supporting + multibyte characters with a locale that doesn't have any multibyte + chars + + 6/4 + --- +expr.c + - fix a/=0 and a%=0 to throw evaluation errors rather than core dumps + +lib/readline/display.c + - fix core dump when line wrapping a multibyte character (line + accidentally dropped from the original patch) + +lib/readline/mbutil.c + - fix reversed return value from _rl_is_mbchar_matched; fixes problem + with backward-char-search + + 6/10 + ---- +lib/sh/getenv.c + - fix getenv to not free value returned by find_tempenv_variable + - add setenv, putenv, unsetenv for completeness + + 6/12 + ---- +shell.c + - change init_noninteractive to init expand_aliases to the value of + posixly_correct + - don't initialize expand_aliases to posixly_correct anywhere else. + This allows the -O expand_aliases invocation option to work correctly + +general.c + - fix move_to_high_fd to not try the dup2 unless the fd loop results + in an fd > 3; just return the passed file descriptor otherwise + - use HIGH_FD_MAX, defined in general.h, instead of hard-coded 256 + as highest file descriptor to try + +subst.c + - in process_substitute, call move_to_high_fd with `maxfd' parameter + of -1 instead of 64, so move_to_high_fd will use its maximum + + 6/21 + ---- +lib/malloc/malloc.c + - don't bother calling MALLOC_MEMSET if the requested size is 0 + +builtins/setattr.def + - note in short doc that export and readonly can take assignment + statements as arguments + +error.c + - new function, error_prolog(), to capture common error message + prefix code (except for parser errors) + + 6/25 + ---- +aclocal.m4 + - add tests for standard-conforming declarations for putenv and + unsetenv in system header files + +{configure,config.h}.in + - call BASH_FUNC_STD_PUTENV and BASH_FUNC_STD_UNSETENV, define + HAVE_STD_GETENV and HAVE_STD_UNSETENV, respectively, if they + succeed + +lib/sh/getenv.c + - change putenv and unsetenv to take differing prototypes in + stdlib.h into account + + 6/27 + ---- +[bash-2.05b-beta2 released] + + 6/28 + ---- +builtins/common.c + - fix get_job_spec so that %N works when N is the size of the jobs + list (%8 means job 8, but the 7th member of the jobs array, so + it's OK if N == job_slots because the function returns N-1) + + 7/1 + --- +shell.c + - turn off line editing if $EMACS is set to `t' + + 7/10 + ---- +builtins/set.def + - remove mention of `-i' from long help doc, since it has no effect + + 7/17 + ---- +[bash-2.05b released] + + 7/18 + ---- + +lib/malloc/malloc.c + - make sure that the `free_return' label has a non-empty statement + to branch to + + 7/19 + ---- +locale.c + - only call setlocale() from set_lang() if HAVE_SETLOCALE is defined; + otherwise just return 0 + +lib/readline/mbutil.c + - only try to memset `ps' in _rl_get_char_len if it's non-NULL. Ditto + for _rl_adjust_point + + 7/23 + ---- +execute_cmd.c + - fix for executing_line_number() when compiling without conditional + commands, dparen arithmetic or the arithmetic for command + + + 7/24 + ---- +support/Makefile.in + - fix maintainer-clean, distclean, mostlyclean targets + +builtins/common.c + - fix bug in sh_nojobs where it doesn't pass the right number of args + to builtin_error + +bashline.c + - when using command completion and trying to avoid appending a slash + if there's a directory with the same name in the current directory, + use absolute_pathname() instead of just checking whether the first + char of the match is a slash to catch things like ./ and ../ + +examples/complete/bashcc-1.0.1.tar.gz + - a package of completions for Clear Case, from Richard S. Smith + (http://www.rssnet.org/bashcc.html) + +input.c + - fix check_bash_input to call sync_buffered_stream if the passed fd + is 0 and the shell is currently reading input from fd 0 -- all it + should cost is maybe an additional read system call, and it fixes + the bug where an input redirection to a builtin inside a script + which is being read from stdin causes the already-read-and-buffered + part of the script to be thrown away, e.g.: + + bash < x1 + + where x1 is + + hostname + read Input < t.in + echo $Input + echo xxx + +execute_cmd.c + - in initialize_subshell(), call unset_bash_input (0) to not mess with + fd 0 if that's where bash thinks it's reading input from. Fixes + bug reported by jg@cs.tu-berlin.de on 17 July 2002. Should be a way + to check whether or not the current fd 0 at the time of the call has + not been redirected, like in the bug report. Also might eventually + want to throw in a sync_buffered_stream if bash is reading input + from fd 0 in a non-interactive shell into a buffered stream, so the + stream is sync'd -- might be necessary for some uses + + 7/25 + ---- +lib/readline/signals.c + - make sure rl_catch_sigwinch is declared even if SIGWINCH is not + defined, so the readline state saving and restoring functions in + readline.c are always the same size even if SIGWINCH is not defined, + and undefined references don't occur when SIGWINCH is not defined + + 7/30 + ---- +bashline.c + - augment patch from 7/24 to not disable rl_filename_completion_desired + if the first char of the match is `~' + +lib/readline/bind.c + - when creating `shadow' keymaps `bound' to ANYOTHERKEY, don't bind + a key whose type is ISFUNC but whose function is the `fake' + rl_do_lowercase_version (fixes debian bash bug #154123) + +lib/readline/readline.c + - don't call _rl_vi_set_last from _rl_dispatch_subseq if + key == ANYOTHERKEY (when truncated to `sizeof(char)', it will be 0, + which strchr will find in `vi_textmod') + + 7/31 + ---- +lib/readline/input.c + - fix rl_gather_tyi to only slurp up one line of available input, even + if more than one line is available (fixes debian bash bug #144585) + + 8/3 + --- +bashline.c + - better fix for command completion problem -- test for directory + explicitly with test_for_directory before turning off + rl_filename_completion_desired, since that's the case we're trying + to protect against + + 8/5 + --- +include/shmbutil.h + - fix ADVANCE_CHAR macro to advance the string pointer if mbrlen + returns 0, indicating that the null wide character (wide string + terminator) was found (debian bash bug #155436) + +lib/readline/mbutil.c + - fix _rl_adjust_point to increment the string pointer if mbrlen + returns 0 + +support/shobj-conf + - fix for the `-install_name' value in SHLIB_XLDFLAGS assignment for + Darwin from the fink folks + + 8/6 + --- +builtins/exit.def + - broke code that runs ~/.bash_logout out into a separate function: + bash_logout() + +builtins/common.h + - extern declaration for bash_logout() + +eval.c + - call bash_logout() from alrm_catcher(), so timed-out login shells + run ~/.bash_logout before processing the exit trap + +lib/sh/strtrans.c + - implemented $'\x{hexdigits}' expansion from ksh93 + +configure.in + - define RECYCLES_PIDS in LOCAL_CFLAGS for cygwin; don't bother to + link with -luser32 + +examples/loadables/strftime.c + - new loadable builtin, interface to strftime(3) + + 8/7 + --- +parse.y + - parse_arith_cmd now takes a second argument, a flag saying whether + or not to add double quotes to a parsed arithmetic command; changed + callers + - changed parse_dparen so it tells parse_arith_cmd to not add the + double quotes and therefore doesn't need to remove them + - change parse_dparen to add W_NOGLOB|W_NOSPLIT|W_QUOTED flags to word + created when parsing (( ... )) arithmetic command, since the double + quotes are no longer added + +make_cmd.c + - in make_arith_for_expr, set the flags on the created word to + W_NOGLOB|W_NOSPLIT|W_QUOTED + +execute_cmd.c + - change execute_arith_command to expand the expression with + expand_words_no_vars, like the arithmetic for command code does + - fix execute_arith_command to handle the case where the expanded + expression results in a NULL word without crashing + +tests/{arith-for,cprint}.tests + - change expected output to account for no longer adding quotes to + ((...)) commands + + 8/8 + --- +print_cmd.c + - take out the space after printing the `((' and before printing the + `))' in print_arith_command, print_arith_for_command, and + xtrace_print_arith_cmd + +tests/{arith-for,cprint}.tests + - change expected output to account for no longer adding leading and + trailing spaces when printing ((...)) and arithmetic for commands + + 8/17 + ---- +subst.c + - fix issep() define to handle case where separators[0] == '\0', in + which case it always returns false + +lib/readline/histexpand.c + - fix off-by-one error in history_expand_internal when using the `g' + modifier that causes it to skip every other match when matching a + single character (reported by gjyun90@resl.auto.inha.ac.kr) + +doc/{bash.1,bashref.texi} + - make sure that the name=word form of argument to declare/typeset, + export, and readonly is documented in the description + + 8/30 + ---- +lib/readline/histexpand.c + - make history_expand_internal understand double quotes, because + single quotes are not special inside double quotes, according to + our shell-like quoting conventions. We don't want unmatched + single quotes inside double-quoted strings inhibiting history + expansion + - make `a' modifier equivalent to `g' modifier for compatibility with + the BSD csh + - add a `G' modifier that performs a given substitution once per word + (tokenized as the shell would do it) like the BSD csh `g' modifier + + 8/31 + ---- +braces.c + - when compiling for the shell, treat ${...} like \{...} instead of + trying to peek backward when we see a `{'. This makes it easier + to handle things like \${, which should be brace expanded because + the $ is quoted + + 9/7 + --- +aclocal.m4 + - redirect stdin from /dev/null in BASH_CHECK_DEV_FD before testing + the readability of /dev/fd/0, so we're dealing with a known quantity + + 9/11 + ---- +[prayers for the victims of 9/11/01] + +shell.c + - fix maybe_make_restricted to handle a restricted login shell with a + base pathname of `-rbash' and skip over any leading `-' + + 9/13 + ---- +builtins/evalstring.c + - in parse_and_execute, make sure we don't try to run unwind-protects + back to `pe_dispose' after a longjmp back to top_level if the + pe_dispose frame hasn't been initialized + +lib/readline/display.c + - fix problem with prompt overwriting previous output when the output + doesn't contain a newline in a multi-byte locale. This also should + fix the problem of bash slowing down drastically on long lines when + using a multi-byte locale, because it no longer tries to rewrite the + entire line each time. Patch from Jiro SEKIBA + +parse.y + - move the typedef for alias_t that is compiled in if ALIAS is not + defined up before the prototype for push_string, since that takes + an alias_t * parameter + +lib/readline/terminal.c + - bind the termcap description's left and right arrow keys to + rl_backward_char and rl_forward_char, respectively, instead of + rl_forward and rl_backward (which are just there for backwards + compatibility) + +aclocal.m4 + - when testing readability of /dev/stdin, redirect stdin from /dev/null + to make sure it's a readable file + + 9/17 + ---- +config-bot.h + - don't test __STDC__ when deciding whether or not to use stdarg.h; + just use it if it's present + +tests/read2.sub + - redirect from /dev/tty when using `read -t' + + 9/20 + ---- +builtins/history.def + - when reading `new' entries from the history file with `history -n', + fix increment of history_lines_this_session by taking any change + in history_base into account + +lib/sh/pathphys.c + - changes to sh_physpath to deal with pathnames that end up being + longer than PATH_MAX without dumping core + +lib/readline/doc/{history.3,hsuser.texinfo},doc/ bash.1 + - documented new `a' and `G' history modifiers + + 9/25 + ---- +lib/readline/misc.c + - when traversing the history list with arrow keys in vi insertion + mode, put the cursor at the end of the line (like in emacs mode) + +mksyntax.c + - don't try to use \a and \v unless __STDC__ is defined; use the + ascii integer equivalents otherwise + - include "config.h" in the generated syntax.c file for a possible + definition of `const' + +doc/{bash.1,bashref.texi} + - document the meaning of a null directory in $PATH + + 9/26 + ---- +parse.y + - fix set_line_mbstate to handle case where mbrlen() returns 0, + indicating the null wide character + - fix set_line_mbstate so we don't directly compare a char variable + to EOF, since char can (and is) unsigned on some machines + +bashline.c + - change bash_execute_unix_command to save a little bit more state: + last_shell_builtin, this_shell_builtin, last_command_exit_value + + 9/27 + ---- +execute_cmd.c + - tentative change to execute_simple_command to avoid freeing freed + memory in the case where bash forks early but still ends up calling + execute_disk_command, without passing newly-allocated memory to + make_child. This may fix the core dumps with the linux-from-scratch + folks + + 9/28 + ---- +Makefile.in,{builtins,lib/sh}/Makefile.in + - fix up dependencies, mostly on ${BUILD_DIR}/version.h, so that + parallel makes work with GNU and BSD makes + +shell.h + - new struct to save partial parsing state when doing things like + bash_execute_unix_command and other operations that execute + commands while a line is being entered and parsed + +parse.y + - new functions, save_parser_state() and restore_parser_state(), to + save and restore partial parsing state + +bashline.c + - change bash_execute_unix_command to call {save,restore}_parser_state + +builtins/jobs.def + - change execute_list_with_replacements to eliminate a run_unwind_frame + in favor of calling the cleanup explicitly and discarding the frame + +execute_cmd.c + - change execute_for_command to avoid a run_unwind_frame in the case + where the loop variable is readonly or otherwise not assignable + - change execute_select_command and execute_simple_command to use + discard_unwind_frame by running the cleanup code explicitly, instead + of using run_unwind_frame + - make sure execute_select_command decreases loop_level even on error + + 9/30 + ---- +doc/{bash.1,bashref.texi} + - fixed description of `unset' now that unsetting a previously-unset + variable is no longer an error + + 10/3 + ---- +{configure,config.h}.in + - augment check for strtold with additional check to detect the + horribly broken hp/ux 11.x implementation that returns `long_double'; + defines STRTOLD_BROKEN if so + +builtins/printf.def + - define floatmax_t as `double' if STRTOLD_BROKEN is defined + + 10/5 + ---- +lib/readline/keymaps.c + - don't automatically bind uppercase keys to rl_do_lowercase_version + in rl_make_bare_keymap + +lib/readline/readline.c + - explicitly check for ANYOTHERKEY binding to rl_do_lowercase_version + and dispatch to lowercase of key when a prefix is not matched + + 10/12 + ----- +bashline.c + - set COMP_WORDBREAKS in enable_hostname_completion to the value + of rl_completer_word_break_characters + +variables.c + - new special variable COMP_WORDBREAKS, controls the value of + rl_completer_word_break_characters + +variables.h + - new extern declaration for sv_comp_wordbreaks() + +subst.c + - change split_at_delims to behave more like shell word splitting if + the passed value for the delimiters is NULL, indicating that the + function is to use $IFS to split + +{execute_cmd,jobs,test,findcmd,input,make_cmd,redir,shell}.c +builtins/mkbuiltins.c,builtins/{fc,history,source,umask}.def +lib/sh/netconn.c +lib/termcap/termcap.c +lib/readline/histfile.c + - make sure all inclusions of are protected by + HAVE_SYS_FILE_H + +bashline.c + - don't turn off rl_filename_completion_desired in + attempt_shell_completion if the partial pathname contains a slash. + This still doesn't solve the problem of partial pathname completion + starting with a directory in the current directory without a + leading `./'. There's no way to tell the difference between that + and a file found in $PATH (which may contain `.') at the point that + attempt_shell_completion acts + + 10/18 + ----- +locale.c + - don't set lc_all to the default locale when LC_ALL is being unset + - new function, reset_locale_vars(), called to recompute the correct + locale variable values when LC_ALL is unset + - changed set_lang to not set LC_ALL, which it never should have been + doing in the first place, and to maintain a local variable `lang' + corresponding to $LANG + - change get_locale_var to use the precedence posix.2 specifies: + LC_ALL overrides individual variables; LANG, if set, is the default + - change set_locale_var to call get_locale_var to get the appropriate + value for the variable being set or unset + - call get_locale_var instead of using passed value in set_locale_var + to get the defaulting and precedence right + +lib/readline/nls.c + - new function, _rl_get_locale_var(), which does the same thing as + locale.c:get_locale_var(), with the right precedence and defaulting, + using sh_get_env_value to get the right bash variable values + - if HAVE_SETLOCALE is defined, _rl_init_eightbit first calls + _rl_get_locale_var to get the right value for LC_CTYPE, and uses + that in the call to setlocale. If _rl_get_locale_var returns NULL, + call setlocale() to get the current international environment, and, + finally, if that returns null, call setlocale with a second argument + of "" to force the implementation's `native' environment + +pcomplete.c + - change gen_wordlist_completions to dequote the text before comparing + it against the expanded word list + - changed gen_matches_from_itemlist to do the same thing + +bashline.c + - new global function, bash_dequote_word, calls bash_dequote_filename + on the text passed. Used by the programmable completion code + +lib/readline/histfile.c + - make sure that whenever read_history_range returns a non-zero value + that it sets errno to some useful value + + 10/19 + ----- +variables.c + - COMP_WORDBREAKS is now a dynamic variable, mirroring value of + rl_completer_word_break_characters. Makes sure that the variable + always points to dynamic memory if it's not null or the readline + default + +bashline.c + - change enable_hostname_completion to manage a dynamic value of + rl_completer_word_break_characters, since assignments to + COMP_WORDBREAKS can change its value unpredictably + +lib/readline/{complete.c,readline.h} + - rl_completer_word_break_characters no longer has `const' attribute + +bashline.c + - clean up necessary places due to rl_completer_word_break_characters + no longer being `const' + +doc/{bash.1,bashref.texi} + - document new COMP_WORDBREAKS variable + + 10/21 + ----- +print_cmd.c + - fix indirection_level_string to handle the case where the decoded + $PS4 is null without seg faulting + + 10/22 + ----- +builtins/shift.def + - make sure that there is actually an argument when reporting a shift + count that exceeds the number of positional paramters and + shift_verbose is enabled + +lib/readline/rltty.c + - change SET_SPECIAL to call a new function, set_special_char, since + it contains a block. It's called infrequently, so the performance + impact of making it a function should be negligible, and it helps + debugging + + 10/29 + ----- +bashline.c + - make sure the editor in VI_EDIT_COMMAND and EMACS_EDIT_COMMAND is + quoted; it might contain spaces (e.g., `emacs -nw') + +aclocal.m4 + - cache ac_cv_rl_version in RL_LIB_READLINE_VERSION macro + +configure.in + - change logic that sets RL_INCLUDEDIR so that it doesn't try to set + a bogus include path if the argument to --with-installed-readline + is `yes' -- helps with cross-compiling + +lib/readline/histexpand.c + - fix history_tokenize_word so that it handles <( and >( better + + 10/30 + ----- +redir.c + - fix write_here_string so it handles the case where `herestr' expands + to NULL without seg faulting + + 10/31 + ----- +mailcheck.c + - reverse logic flip from bash-2.05 that handled systems that don't + change the atime when the mailbox is accessed; make sure the file + is bigger before we report new mail. This is the case in the vast + majority of cases. Reported by jim@jtan.com + + 11/5 + ---- +parse.y + - change action for `for x; { list; }' and corresponding `select' + production to use \"$@\" instead of just $@, as it is with all the + other actions + + 11/9 + ---- +parse.y + - new flag for parse_matched_pair: P_DQUOTE, indicating that the + pair of characters being matched is between double quotes + - parse_matched_pair now passes P_DQUOTE down to recursive calls: + if the open char to be matched is a `"' or the passed-in flags + include P_DQUOTE, set the local `rflags' variable to P_DQUOTE and + pass `rflags' down to recursive calls + - if `rflags' includes P_DQUOTE, don't try to ansiexpand $'...' or + locale expand $"..."; consistent with other quoting constructs + + 11/11 + ----- +doc/{bash.1,bashref.texi} + - explicitly note that variables referenced in arithmetic expressions + without using `$' evaluate to 0 if they are null or unset + - note that a null variable value evaluates to 0 when used in an + arithmetic context, like when a variable with the `-i' attribute is + assigned a null value + - document the ${!prefix@} expansion as equivalent to ${!prefix*} + + 11/12 + ----- +doc/{bash.1,bashref.texi} + - note that the value of an arithmetic expression is as in C + - change the wording to note that `arithmetic evaluation' (not + arithmetic expansion, which has a different meaning) is performed + on the value assigned to a variable whose integer attribute is set + + 11/13 + ----- +execute_cmd.c + - fix execute_disk_command so it calls exit() after printing the error + message in a restricted shell context if the shell has already forked + (nofork != 0 && there are no pipes) + + 11/19 + ----- +builtins/type.def + - don't report on aliases unless expand_aliases is set and the parser + is performing alias expansion; changed tests/type.tests and + tests/type.right accordingly + + 11/25 + ----- +general.c + - fix for full pathnames including drive letters on cygwin from + Corinna (convert to posix-style paths, which the rest of the + code handles much better) + +lib/readline/text.c + - fixes to overwrite mode from jimmy@is-vn.bg: + o in _rl_overwrite_char, do the overwrite mode self-insert + as one group, even when overwriting more than 1 char + o in _rl_overwrite_char, do the insert before the delete so + that an undo positions the cursor on the character restored, + not to the right of it + o in _rl_overwrite_rubout, don't do rl_insert_char(' ') unless + rl_point < rl_end. Since overwrite-mode self-insert acts as + in insert-mode when at eol, make rubout behave like + insert-mode rubout + + 11/30 + ----- +lib/readline/misc.c + - call rl_replace_line with `1' as second parameter if we're going to + immediately overwrite the undo list + +lib/readline/search.c + - in make_history_line_current, use _rl_replace_text to make the line + replacement an undoable operation. Affects all non-incremental + search functions. + +parse.y + - make behavior introduced on 11/9 dependent on extended_quote + variable, controllable by extquote shopt option. Default setting is + on for backwards compatibility + +builtins/shopt.def + - new `extquote' option to control extended_quote variable + + 12/3 + ---- +jobs.c + - change message printed when attempting to put a background job in + the background with `bg' to include the job id and make the + statement declarative + + 12/10 + ----- +bashhist.h + - define explicit flag values for history_control + +variables.c + - change sv_history_control to use new flag values + - change sv_history_control to parse $HISTCONTROL as a colon-separated + list of values for the history_control variable + +bashhist.c + - change check_history_control to use new flag values and restructure + to remove case statement + - new function hc_erasedups(line); removes all entries matching LINE + from the history list + - call hc_erasedups() from check_add_history after we've determined + that we're saving the line + +doc/{bash.1,bashref.texi} + - documented new options available for $HISTCONTROL and that it can + be a colon-separated list of history control options + + 12/11 + ----- +subst.c + - fix pat_subst() to not increment `e' (pointer to the end of the + matched portion of the string) until after we're sure we're going + around the loop again; fixes problem with empty replacements for + a pattern that doesn't match (bug reported by Don Coleman + ) + + 12/17 + ----- +lib/readline/display.c + - fixes to multibyte redisplay from jir@yamato.ibm.com (Jiro SEKIBA): + o speed up calculation of first difference between old and new + lines in the common case + o don't try to see if we're in the middle of a multbyte char + in update_line (we'll see how this one works out) + + 12/18 + ----- +doc/bashref.texi + - make it clear that the `command-list' function definition may be + terminated by an ampersand before the closing brace + + 12/28 + ----- +redir.c + - set `expanding_redir' flag when expanding words in a redirection + +subst.c + - new function, exp_jump_to_top_level(), to do any word expansion + cleanup before a call to jump_to_top_level from within that file; + sets expanding_redir back to 0 before jump_to_top_level + +variables.c + - in find_variable(), don't call find_variable_internal with a second + parameter of 1 if expanding_redir is non-zero + - in find_variable_internal(), don't search the temporary env if + subshell_environment includes SUBSHELL_FORK (indicating a simple + command) and expanding_redir is non-zero + +parse.y + - increment line_number when we read a \ pair + +array.c + - added array_unshift_element and array_shift_element (which just call + array_shift and array_rshift, respectively), for bash debugger + support + + 1/4/2003 + -------- +doc/{bash.1,bashref.texi} + - note in the section describing the execution environment passed to + children that subshells inherit shell functions marked for export + - note in the section describing shell functions the possibility + that exported functions may result in two entries in the environment + with the same name + +parse.y + - when pushing an alias expansion onto the pushed_string list, append + a space to the expanded definition to make the parser's lookahead + work without using the `mustpop' hack in shell_getc + + 1/8 + --- +shell.c + - change calls to exit() with EX_USAGE as a parameter to use + EX_BADUSAGE instead, since EX_USAGE is defined as 258 and is + technically out of range + + 1/14 + ---- +aclocal.m4 + - check for the termcap functions in libc first: if we don't have + to link in another library, let's not do it + - change the test for mbstate_t to use AC_TRY_COMPILE instead of + AC_TRY_RUN + +doc/{bash.1,bashref.texi} + - document that bash turns line editing off if environment variable + EMACS is set to `t' when it starts up + +doc/bash.1 + - minor change to give the ftp url for the latest version of bash in + the bug reports section + +lib/readline/histexpand.c + - in get_history_event, cast a couple of `const char *' variables to + `char *' in function call parameter lists to avoid compiler warnings + + 1/21 + ---- +builtins/cd.def + - change `cd -' so it prints the current working directory after a + successful chdir even when the shell is not interactive + + 1/31 + ---- +lib/readline/doc/rltech.texinfo + - clarified exactly what is meant by the term `application-specific + completion function', made its use consistent, and documented + what variables are changed before such a function is called + +lib/readline/input.c + - new function, _rl_pushed_input_available(), returns non-zero if + there are characters in the input queue managed by rl_get_char + and _rl_unget_char + +lib/readline/rlprivate.h + - new extern declaration for _rl_pushed_input_available + +lib/readline/callback.c + - change rl_callback_read_char to check _rl_pushed_input_available + and loop if there's something there, so characters don't languish + until more keyboard input is read + +execute_cmd.c + - new variable, last_command_exit_signal, non-zero if + last_command_exit_value result from wait_for was result of a signal + +nojobs.c + - keep track of whether or not a given pid was killed by a signal with + a new flag in the pid_list array + - new function int find_termsig_by_pid(pid_t pid) to get the + terminating signal, if any, for a particular pid + - new function int get_termsig(WAIT status) returns the terminating + signal corresponding to status + - set last_command_exit_signal in wait_for and the various wait_for_xx + functions + +jobs.c + - new functions, process_exit_signal and job_exit_signal, return the + signal that killed a given process or job, if a signal caused its + death + - set last_command_exit_signal in wait_for by calling job_exit_signal + or process_exit_signal appropriately + +subst.c + - don't resend SIGINT to ourselves unless last_command_exit_signal is + SIGINT and last_command_exit_value == 128 + SIGINT. This fixes the + $(exit 130) bug reported by Paul Jarc + +expr.c + - new function, expr_bind_variable, calls bind_int_variable and + then stupidly_hack_special_variables. This fixes the + `let OPTIND=1' bug + +bashline.c + - change history_and_alias_expand_line and shell_expand_line to call + history_expand_line_internal so calls to pre_process_line are + localized + - change history_expand_line_internal and cleanup_expansion_error to + temporarily turn off hist_verify before calling pre_process_line + to avoid the effects described by teirllm@dms.auburn.edu + +parse.y + - don't unconditionally turn off PST_ALEXPNEXT in push_string. This + fixes the multiple alias expansion bug reported by Paul Jarc. + +lib/readline/vi_mode.c + - change rl_vi_subst to push `l' instead of ` ' -- it should be + equivalent, but this has been reported to fix a problem in multibyte + locales + +lib/readline/readline.h + - new state flag value RL_STATE_TTYCSAVED, indicates that save_tty_chars + has been called. Since it's only used and visible internally, it's + undocumented + +lib/readline/rltty.h + - changed all of the members of _rl_tty_chars struct to `unsigned char' + +lib/readline/rltty.c + - set the RL_STATE_TTYCSAVED after save_tty_chars is called + - new function, rl_tty_unset_default_bindings(), resets bindings for + everything rl_tty_set_default_bindings() messes with back to + rl_insert, so rl_tty_set_default_bindings can be called again with + possible changes + - new function that does the bulk of the work for + rltty_set_default_bindings: _rl_bind_tty_special_chars() + - change prepare_terminal_settings so that it can track changes to the + terminal special chars made by stty(1): unset the bindings with + rl_tty_unset_default_bindings before calling save_tty_chars, and + _rl_tty_set_default_bindings after, with the new values from + get_tty_settings(). This implements a long-standing request, most + recently made by Tim Waugh of Red Hat. + +lib/readline/readline.h + - extern declaration for rl_tty_unset_default_bindings() + +lib/readline/readline.c + - new function, reset_default_bindings, calls + rl_tty_unset_default_bindings() to reset the terminal special chars + back to rl_insert and then read the new ones + +lib/readline/doc/rltech.texinfo + - documented rl_tty_unset_default_bindings() + + 2/1 + --- +[prayers and condolences to the families of the space shuttle crew members] + +aclocal.m4 + - add checks for mbrtowc and mbrlen in BASH_CHECK_MULTIBYTE + - new check, BASH_FUNC_CTYPE_NONASCII, checks whether or not the ctype + functions handle non-ascii characters correctly + +config.h.in + - add HAVE_MBRTOWC and HAVE_MBRLEN + - add NO_MULTIBYTE_SUPPORT for new configure argument + - add CTYPE_NON_ASCII + +config-bot.h, lib/readline/rlmbutil.h + - make sure that mbrtowc, mbrlen, and wcwidth are all present before + turning on HANDLE_MULTIBYTE + - turn off multibyte chars if NO_MULTIBYTE_SUPPORT is defined + +configure.in + - new argument --enable-multibyte (enabled by default), allows + multibyte support to be turned off even on systems that support it + +lib/readline/chardefs.h + - define NON_NEGATIVE as 1 if CTYPE_NON_ASCII is defined + + 2/3 + --- +config.h.in + - add HAVE_WCTOMB + +aclocal.m4 + - check for wctomb in BASH_CHECK_MULTIBYTE + + 2/4 + --- +lib/readline/vi_mode.c + - in _rl_vi_change_mbchar_case, make sure the result from wctomb() + is NULL-terminated before trying to insert it with rl_insert_text() + + 2/5 + --- +lib/readline/display.c + - fix to update_line to avoid problems on systems with multibyte + characters when moving between history lines when the new line + has more glyphs but fewer bytes (twaugh@redhat.com) + +lib/readline/vi_mode.c + - use wcrtomb() instead of wctomb() in _rl_vi_change_mbchar_case + +pcomplete.c + - fix init_itemlist_from_varlist to handle the case where the + `varlist' is NULL + +doc/{bash.1,bashref.texi} + - clarified when a simple command may fail without the shell exiting + when -e is set + + 2/13 + ---- +parse.y + - when bash is started with --nolineediting, ignore \[ and \] when + decoding the prompt string + +subst.c + - fix remove_quoted_nulls so that a string with a CTLESC appearing + after a CTLNUL (which was removed) does not leave characters in + the string inappropriately + + 2/14 + ---- +builtins/common.h + - new flag value for parse_and_execute(): SEVAL_RESETLINE, which + allows the caller to specify whether or not the internal idea + of the line number should be reset to 1 + +builtins/evalstring.c + - parse_and_execute() now tells push_string to reset the line + number only if the SEVAL_RESETLINE flag is set by the caller + + 2/15 + ---- +builtins/evalfile.c + - pass SEVAL_RESETLINE from _evalfile() to parse_and_execute() + +subst.c + - if the shell is currently interactive, pass SEVAL_RESETLINE to + parse_and_execute() when doing command substitution + +jobs.c + - add SEVAL_RESETLINE to parse_and_execute while running SIGCHLD trap + +command.h + - add `line' members to case_com, for_com, select_com + - rearranged order of members in some of the command structs, so + `flags' and `line' are first + - added a `source_file' member to the function_def struct; keeps + track of where the function was defined + +doc/Makefile.in + - add some new suffix rules: .dvi.ps + +doc/{bash.1,bashref.texi} + - added text to the description of the `trap' builtin tightening up + the language describing when the ERR trap will be run + +error.c + - if $BASH_SOURCE (internally-maintained) exists, use BASH_SOURCE[0] + in get_name_for_error if the shell is not interactive + +array.h + - new convenience defines: array_push and array_pop + +variables.c + - change get_funcname to return this_shell_function->name only if + arrays have not been compiled into the shell + - change init_funcname_var to initialize FUNCNAME as an array variable + if we have arrays + - new function: get_self(SHELL_VAR *self), a degenerate `dynamic_value' + function for dynamic variables + - new function: init_dynamic_array_var(), a generic dynamic array + variable initializer to handle the common case + - use init_dynamic_array_var() instead of explicit init_dirstack_var() + - use init_dynamic_array_var() instead of explicit init_groups_var() + - new dynamic array variables: BASH_ARGC, BASH_ARGV, BASH_SOURCE, + BASH_LINENO, initialized with init_dynamic_array_var + +shell.c + - initialize BASH_LINENO, BASH_SOURCE, FUNCNAME in open_shell_script + +{execute_cmd,trap}.c + - take out trap_line_number, since parse_and_execute doesn't reset the + line number any more when running the trap commands + +make_cmd.c + - augment make_function_def to get source file name and call + bind_function_def to save the entire FUNCTION_DEF + +variables.c + - new hash table: shell_function_defs, keeps table of shell function + definitions including source file and line number info corresponding + to shell_functions table + - new functions: find_function_def and bind_function_def to manage + the shell_function_defs hash table + - new function: unbind_function_def to remove a function definition + from the shell_function_defs table (right now uncalled) + +variables.h + - extern declaration for bind_function_def, find_function_def + - new extern declaration for unbind_function_def + +execute_cmd.c + - in function prologue and epilogue, push and pop FUNCNAME, + BASH_SOURCE, and BASH_LINENO information + +dispose_cmd.c + - broke the code that disposes a FUNCTION_DEF out into two new + functions: dispose_function_def and dispose_function_def_contents + +dispose_cmd.h + - new extern declarations for dispose_function_def_contents and + dispose_function_def + +copy_cmd.c + - move body of copy_function_def (other than allocating a new + FUNCTION_DEF) to copy_function_def_contents + - make sure to copy the new source_file member of a function_def in + copy_function_def_contents + - copy_function_def is no longer static, copy_function_def_contents + is not either + +command.h + - new extern declaration for copy_function_def_contents and + copy_function_def + +parse.y + - keep a stack of line numbers where case, select, and for commands + start, with a maximum nesting level of 128; increment when reading + word after `for', `select' or `case' in read_token_word; decrement + in grammar actions after parsing a complete for, arith_for, select, + or case command + - create for, case, arith_for, and select commands with an extra + line number (word_lineno[word_top]) argument + +make_cmd.c + - make_for_or_select, make_for_command, make_case_command, and + make_select_command all take an extra `line_number' argument + +make_cmd.h + - corresponding changes to extern declarations for those functions + + 2/16 + ---- +{execute_cmd,shell,variables}.c + - follow each call to remember_args with a call to push_args or + pop_args to manage the BASH_ARGV and BASH_ARGC arrays. Only set + when the shell is started to run shell script or runs a shell + function. Doesn't handle `set' or `shift' yet, nor `source'. + +execute_cmd.c + - keep track of the level of subshells with a new variable, manipulated + in execute_in_subshell + - set currently_executing_command in execute_command_internal(), + even if we're running a trap + - better line number management when executing simple commands, + conditional commands, for commands in execute_command_internal() + and the various functions that implement the commands + (execute_cond_command, execute_for_command, execute_etc.) + +variables.c + - new dynamic variable BASH_SUBSHELL, with new get_subshell and + assign_subshell functions to manipulate it + - new functions push_args (WORD_LIST *list) and pop_args (void) to + manage the BASH_ARGC and BASH_ARGV dynamic array variables + +variables.h + - new extern declarations for push_args and pop_args + +builtins/evalfile.c + - in _evalfile, do appropriate things to the FUNCNAME, BASH_ARGV, + BASH_ARGC, BASH_SOURCE, and BASH_LINENO variables + +support/mksignames.c + - add another fake signal for `trap'; make NSIG+2 == `RETURN' + +trap.c + - _run_trap_internal now returns an int: the exit value of the command + run as the result of the trap + - run_debug_trap now returns an int: the exit value of the command + run as the result of the trap + - RETURN is a new special trap + - new function: set_return_trap(char *command) interface for the rest + of the shell, like set_{debug,error}_trap + - new function: run_return_trap() + - command substitution and other child processes don't inherit the + return trap + +trap.h + - new extern declaration for set_return_trap() and run_return_trap + - new defines for RETURN_TRAP; increment BASH_NSIG + - change extern declaration for run_debug_trap() since it now returns + an int + +shell.c + - new invocation long option: --debugger, turns on debugging and + sets internal `debugging_mode' variable + +execute_cmd.c + - new code to save return trap when executing a shell function, so + shell functions don't inherit it + - run debug trap before binding the variable and running the action + list in a `for' command + - run debug trap before binding the selection variable and running + the query in a `select' command + - run debug trap before running matcher in a `case' command + +builtins/set.def + - new `set -o functrace' (set -T), causes DEBUG trap to be inherited + by shell functions + - new `set -o errtrace' (set -E), causes ERR trap to be inherited + by shell functions + +flags.c + - new flags -E and -T, control error_trace_mode and + function_trace_mode respectively + +flags.h + - new extern declarations for error_trace_mode and function_trace_mode + + 2/17 + ---- +doc/bashref.texi + - changed the `dircategory' as per Karl Berry's suggestion + +doc/texinfo.tex + - update to version of 2003/02/04 from texinfo.org + +support/texi2dvi + - update to version 1.14 from texinfo-4.5 distribution + + 2/20 + ---- +support/config.{guess,sub} + - update to versions of 2002/11/30 + +lib/readline/doc/manvers.texinfo + - renamed to version.texi to match other GNU software + - UPDATE-MONTH variable is now `UPDATED-MONTH' + +lib/readline/doc/{hist,rlman,rluserman}.texinfo + - include version.texi + +doc/version.texi + - new file, with standard stuff matching other GNU distributions + +{doc,lib/readline/doc}/Makefile.in + - include right stuff for `version.texi' + +lib/readline/doc/{rluserman,rlman,hist}.texinfo + - use @copying and @insertcopying and @ifnottex instead of @ifinfo + - add FDL as an appendix entitled `Copying This Manual' + +lib/readline/doc/{rltech,rluser,hstech,hsuser}.texi + - changed the suffix from `texinfo' to `texi' + +lib/readline/doc/{rlman,rluserman}.texinfo, doc/bashref.texi + - include rltech.texi,rluser.texi,hstech.texi, and hsuser.texi + +lib/readline/doc/Makefile.in,doc/Makefile.in + - made appropriate changes for {{rl,hs}tech,{rl,hs}user}.texi + +lib/readline/doc/{rlman,rluserman}.texinfo + - changed the suffix from `texinfo' to `texi' + +lib/readline/doc/hist.texinfo + - renamed to history.texi + + 2/25 + ---- +pathnames.h.in + - moved pathnames.h here so value of DEBUGGER_START_FILE can be + substituted by configure + +aclocal.m4 + - added AM_PATH_LISPDIR for debugger + +configure.in + - added some variables: `bashvers', `relstatus' to use info in more + than one place + - call AM_PATH_LISPDIR + - new option: --enable-debugger, sets DEBUGGER cpp option + - new option with AC_ARG_VAR: DEBUGGER_START_FILE + - make `pathnames.h' a file generated by configure + +Makefile.in + - add rule to create pathnames.h + +builtins/declare.def + - added extra line number and source file name to `declare -F' output + if `--debugger' is used at startup + +builtins/evalfile.c + - call run_return_trap from source_file before returning the result + from _evalfile() + +execute_cmd.c + - call run_return_trap in execute_function before restoring the old + context + +builtins/source.def + - arrange to save and restore DEBUG traps when sourcing files if + function_trace_mode (set -o functrace) is not set + +print_cmd.c + - broke print_for_command, print_select_command, print_case_command + into two functions each: one to print the `header' and one for + the body + - print_cond_command is no longer static + - print_arith_command now takes a WORD_LIST *, since it doesn't + actually do anything with the ARITH_COM it's passed except print + the enclosed WORD_LIST + - print_arith_command is no longer static + +externs.h + - extern declarations for print_{for,select,case}_command_head, + print_cond_command, print_arith_command + +{.,builtins,lib/sh}/Makefile.in + - corrected dependencies on pathnames.h, since it's now created in + the build directory + + 3/5 + --- +lib/glob/glob.c + - handle alloca() failing (it's supposed to return NULL) + - use malloc() (with its attendent bookkeeping) instead of alloca() + in glob_filename() + +subst.c + - check whether shell_glob_filename returns NULL in + glob_expand_word_list + - change parameter_brace_expand_rhs to handle cases like + ${a[2]:=value} by properly creating the array element instead of a + variable named `a[2]' (reported by ) + +variables.c + - change bind_int_variable to use valid_array_reference instead + of looking for `[' + +lib/readline/vi_mode.c + - check for `a' in _rl_vi_done_inserting so the text inserted by an + `a' command can be reinserted with a `.' + +lib/readline/readline.c + - when entering vi insertion mode in readline_internal_setup(), make + sure that _rl_vi_last_key_before_insert is set to `i' so that undo + groups and redo work better (reported by ) + +lib/glob/sm_loop.c + - handle ?(...) in a pattern immediately following a `*', instead of + ignoring the `(' and treating the `?' as a single-char match, as + long as FNM_EXTFLAG is set (reported by ) + +aclocal.m4 + - new test for presence of struct timezone, BASH_STRUCT_TIMEZONE + +config.h.in + - add HAVE_STRUCT_TIMEZONE + +configure.in + - call BASH_STRUCT_TIMEZONE + +execute_cmd.c + - don't try to use `struct timezone' in calls to gettimeofday unless + HAVE_STRUCT_TIMEZONE is defined; use (void *)NULL otherwise + + 3/20 + ---- +execute_cmd.c + - new variable, the_printed_command_except_trap, saves the command + being executed before a trap is executed, for the debugger + +trap.c + - if in debugging mode, let command substitutions and other child + processes inherit the DEBUG and ERR traps if the `functrace' + (which is really a bad name, given this semantic) or `errtrace' + options, respectively, have been set + +shell.c + - local_pending_command renamed to command_execution_string; no longer + static + +variables.c + - new dynamic variable, BASH_COMMAND, set to the command string + currently executing, or the one that caused a trap to execute + (mapped to the_printed_command_except_trap) + - new variable, BASH_EXECUTION_STRING, set to the argument to the + -c invocation option, if the shell was started that way + + 3/22 + ---- +execute_cmd.c + - changed execute_for_command, eval_arith_for_expr, + execute_select_command, execute_arith_command, execute_cond_command, + execute_simple_command to implement new DEBUG trap semantics + for the debugger: if the DEBUG trap commands return a non-zero + status and debugging_mode is non-zero, we skip the command to be + executed + +trap.c + - change run_debug_trap for the debugger: if we're in the debugger + and the DEBUG trap returns 2 while we're in a function or sourced + script, we force a `return' + +shell.c + - new function, start_debugger(), that sources the debugger start file + and turns the debugger on + +builtins/shopt.def + - new settable option, `extdebug', turns on debugging_mode, as if + --debugger had been supplied at invocation (but does not source + debugger startup file) + +trap.c + - make sure that run_exit_trap arranges for `returns' to come back + there, too, so a `return' executed by an `exit' invoked within a + shell function behaves correctly + +support/shobj-conf + - change darwin/MacOS X stanza based on advice from mac os x developers + +lib/sh/mailstat.c + - set the atime member of the synthesized stat struct to 0 if `cur/' + is empty, rather than leaving it undefined + + 3/24 + ---- +builtins/caller.def + - new builtin to provide a call stack for the debugger + +builtins/evalfile.c + - added a second `flags' argument to source_file() + - new flag value for flags argument to _evalfile(): FEVAL_NOPUSHARGS. + If included in flags arg, it means to not manipulate the BASH_ARGV + and BASH_ARGC arrays + +builtins/common.h + - change prototype for source_file() + +builtins/source.def + - add flag value to call to source_file(): set to 1 if we replaced + the positional parameters + - add call to push_args if additional arguments supplied to the + source builtin + - add call to pop_args in maybe_pop_dollar_vars + +execute_cmd.c + - run the debug trap in execute_function so the debugger can stop + before the first command in a function body is executed + - modify subshell_level before executing a builtin or function in a + subshell + - print `for', `select', `case' command heads when set -x is enabled + +print_cmd.c + - `xtrace_print_word_list' now takes an additional flags argument, + which, if non-zero, says to print indirection_level_string() + - new functions to print for, select, and case command heads when + set -x is enabled + - add spaces after `((' and before `))' in xtrace_print_arith_command + +externs.h + - changed extern declaration for xtrace_print_word_list + - new declarations for xtrace_print_{for,case,select}_command_head() + +subst.c + - modify subshell_level when executing a command substitution + + 3/25 + ---- +execute_cmd.c + - use `line_number' in executing_line_number instead of looking into + the current command if it's a simple command; rearrange code to + make this simpler to compile in and out + - need to save and restore value of currently_executing_command around + calls to debug trap and return trap in execute_function + +make_cmd.c + - make sure make_arith_for_command() disposes the WORD_LIST * it is + passed, since nothing else does and it's not used directly + + 3/28 + ---- +Makefile.in + - fixed dependencies for `error.o' on shell.h and version.h -- makes + parallel makes (gmake -j 4) work correctly + +doc/{bash.1,bashref.texi} + - documented all new features added to support the debugger + + 4/1 + --- +lib/sh/shquote.c + - make sure CTLESC and CTLNUL characters are escaped with CTLESC + by sh_double_quote, sh_backslash_quote and + sh_backslash_quote_for_double_quotes + Fixes vulnerability reported by svdb@stack.nl + +shell.h + - new `pipestatus' member of sh_parser_state_t, to save and restore + $PIPESTATUS + +parse.y + - changes to save_parser_state and restore_parser_state to save and + restore $PIPESTATUS + +builtins/read.def + - add a call to word_list_remove_quoted_nulls before assigning the + word list read from standard input to an array variable. Fixes + bug reported by holzhey@ppprs1.phy.tu-dresden.de + + 4/3 + --- +execute_cmd.c + - in execute_null_command, if redirections are supplied, make sure + things like 3 for possible definitions of intmax_t, uintmax_t + (reported by ro@techfak.uni-bielefeld.de) + + 7/30 + ---- +parse.y + - remove checking for `time' reserved word from special_case_tokens(); + use regular mechanism in CHECK_FOR_RESERVED_WORD. This allows `time' + to be aliased. (Reported by Glenn Morris + ) + + 7/31 + ---- +lib/readline/history.h + - extern declaration for history_write_timestamps + +lib/readline/histfile.c + - don't write timestamps to the history file in history_do_write + unless history_write_timestamps is set to non-zero by the application + (set to 0 by default) + +lib/readline/doc/{hstech.texi,history.3} + - document history_write_timestamps + +variables.[ch] + - new special variable function, HISTTIMEFORMAT; special function + sets history_write_timestamps to 1 if HISTTIMEFORMAT is set + + 8/4 + --- +builtins/history.def + - added support for printing time stamps based on the value of the + HISTTIMEFORMAT variable when displaying history entries + +doc/{bash.1,bashref.texi} + - added description of new HISTTIMEFORMAT variable + + 8/5 + --- +config-top.h + - remove /usr/ucb from any default paths + +mailcheck.c + - make_default_mailpath now returns NULL if DEFAULT_MAIL_DIRECTORY + is not defined + - remember_mail_dates now returns if make_default_mailpath returns + NULL + +config-bot.h + - reorganized the sections; provide an explicit placeholder for + builders to #undef any feature defines they don't want that + configure creates for them, like the default mail path + + 8/9 + --- +config.h.in + - add HAVE_REGEX_H, HAVE_REGCOMP, HAVE_REGEXEC for detection of POSIX.2 + regular expression functions + - add COND_REGEXP define to enable and disable the =~ operator for + matching extended regular expressions in [[...]] commands + +configure.in + - new option, --enable-cond-regexp, enables =~ and code to perform + regular expression matching in [[...]] + +config-bot.h + - undef COND_REGEXP if the OS doesn't provide posix regexp support + +doc/bashref.texi + - documnent new --enable-cond-regexp option to configure + + 8/18 + ---- +support/shobj-conf + - support for shared objects on FreeBSD-gnu (from Robert Millan) + + 8/25 + ---- +lib/sh/shmatch.c + - new file, shell interface to posix extended regular expression + matching + +externs.h + - new extern declarations for functions in shmatch.c + +execute_cmd.c + - incorporate code into execute_cond_node that does extended regular + expression matching for the =~ operator + +parse.y + - add `=~' to the list of binary operators accepted by the conditional + command parser + +doc/{bash.1,bashref.texi} + - documented =~ conditional binary operator and the BASH_REMATCH + variable + + 8/27 + ---- +lib/readline/display.c + - take multibyte characters into account when looking for quoted + substrings on which to do completion (fix from jir@yamato.ibm.com) + +lib/readline/util.c + - fix typo in _rl_strpbrk + +lib/readline/rldefs.h + - use function version of _rl_strpbrk in multibyte locales, because + it understands to skip over special characters in multibyte + character sequences + + 8/28 + ---- +jobs.c + - in wait_for, check for window size changes if a job that exits due + to a signal or is stopped was in the foreground, not just if it's + the current job + + 9/10 + ---- +support/config.{guess,sub} + - add support to recognize FreeBSD running on the amd64 + +subst.c + - if the new `fail_glob_expansion' variable is non-zero, globbing that + fails to match anything causes an expansion error + +builtins/shopt.def + - new `failglob' expansion: if enabled, failed globs cause an error + +test/shopt.right + - take `failglob' into account + +doc/{bash.1,bashref.texi} + - documented new `failglob' option and its effects + + 9/12 + ---- +findcmd.c + - fix file_status to treat the mode bits and uid right -- in particular, + don't assume the `other' bits always apply. Bug reported by + ; fix inspired by + +command.h + - new word flag: W_NOCOMSUB, meaning to not perform command + substitution on a word + +subst.c + - new flag for param_expand: PF_NOCOMSUB. If non-zero, $(...) + command substitutions are not expanded, but returned unchanged + - change expand_word_internal to pass through `` command substitutions + unchanged if (word->flags & W_NOCOMSUB) != 0 + - change expand_word_internal to pass PF_NOCOMSUB to param_expand + if (word->flags & W_NOCOMSUB) != 0 + +builtins/shopt.def + - rename set_interactive_comments to set_shellopts_after_change, which + more accurately reflects its purpose + +syntax.h + - add a define for isblank() in case the system doesn't provide one + +jobs.c + - change raw_job_exit_status to understand `pipefail', using the new + `pipefail_opt' variable + +flags.[ch] + - declare pipefail_opt + - reset pipefail_opt to 0 in reset_shell_flags + +builtins/set.def + - add `set -o pipefail' and document it in help output + +doc/{bash.1,bashref.texi} + - document `set -o pipefail' and the effect of the pipefail option + +mksyntax.c,syntax.h + - sh_syntaxtab is no longer `const' + - new generated variable, sh_syntabsiz, set to number of entries in + sh_syntaxtab, written to generated syntax.c + +locale.c + - new function, locale_setblanks(), sets each member of the current + locale's class to have the CSHBRK flag in sh_syntaxtab + + 9/17 + ---- +arrayfunc.c + - change convert_var_to_array to not set array[0] to a NULL value + (if the scalar variable had no value; e.g., after being created + with `local arrayvar') + +lib/readline/display.c + - save and restore the value of prompt_invis_chars_first_line in + rl_{save,restore}_prompt, and reinitialize it to 0 before printing + something in the message area + +lib/readline/bind.c + - new functions: rl_bind_keyseq_if_unbound_in_map(ks, func, kmap); + binds key sequence KS to function FUNC in keymap KMAP, and + rl_bind_keyseq_if_unbound (ks, func); binds key sequence KS to + function FUNC in the current keymap + +lib/readline/readline.h + - extern function declarations for rl_bind_keyseq_if_unbound_in_map and + rl_bind_keyseq_if_unbound + +lib/readline/{readline,terminal}.c + - _rl_bind_if_unbound -> rl_bind_keyseq_if_unbound + +lib/readline/{bind.c,rlprivate.h} + - remove _rl_bind_if_unbound + + 9/18 + ---- +lib/readline/doc/rltech.texi + - document rl_bind_keyseq_if_unbound and + rl_bind_keyseq_if_unbound_in_map + + 9/19 + ---- +lib/readline/bind.c + - new functions rl_bind_key_if_unbound_in_map and + rl_bind_key_if_unbound; analogous to (and implemented in terms of) + keyseq functions + - rl_bind_keyseq_in_map: a new function, equivalent to rl_set_key + (which remains for backwards compatibility); changed callers to + use it + - new function, rl_bind_keyseq, equivalent to rl_bind_keyseq_in_map + with a third argument of _rl_keymap + +lib/readline/readline.h + - extern declarations for rl_bind_key_if_unbound_in_map and + rl_bind_key_if_unbound + - extern declarations for rl_bind_keyseq_in_map and rl_bind_keyseq + +lib/readline/doc/rltech.texi + - document rl_bind_keyseq and rl_bind_keyseq_in_map + +configure.in + - require at least readline-5.0 + +config-bot.h + - define SYS_SIGLIST_DECLARED if it's not defined, but + HAVE_DECL_SYS_SIGLIST is, to deal with differences between + autoconf versions + +bashline.c + - use rl_bind_key_if_unbound_in_map when binding bash keybindings in + initialize_readline(), so inputrc files can override them + + 9/22 + ---- +lib/readline/histsearch.c + - do better bounds checking for history_offset and history_length in + history_search_internal + +builtins/history.def + - in delete_last_history(), make sure we don't leave the history + offset longer than the history length after calling delete_histent + + 9/23 + ---- +jobs.c + - small change to notify_of_job_status so job status messages get + printed even if the shell was started to run `-c command'. The + old behavior was intentional, but I cannot remember why, so we'll + try it the other way for a while (debian bash bug #211693) + + 9/24 + ---- +jobs.c + - slightly modify change from 9/23 so that jobs started to run + command substitutions don't print job status messages + + 9/25 + ---- +lib/readline/search.c + - when reading a non-incremental search string from the terminal, + use a separate undo list rather than chaining it to the undo list + from the rest of the line, since the whole undo list will get + freed when the search string is complete + +lib/readline/readline.h + - changed the defines guarding the stdarg prototype for rl_message to + match what's actually used in display.c, where it's defined + + 9/26 + ---- +[bash-3.0-alpha released] + + 9/29 + ---- +lib/sh/shmatch.c + - fix to build correctly when arrays are not compiled into the shell + +subst.c + - fix command substitution to run any exit trap defined in the + command substitution before returning; the exit trap is not inherited + from the calling shell + +lib/readline/shell.c + - change sh_set_lines_and_columns to free the memory allocated and + passed to setenv(), since setenv is specified by POSIX to allocate + new memory and copy its arguments + +jobs.c + - change logic in make_child so that every child process attempts to + set the terminal's process group to the pipeline's process group + when PGRP_PIPE is defined, just like when it's undefined. This is + reported to fix some tricky synchronization problems on Red Hat + Enterprise Linux 3. Fix from Ernie Petrides . + + 9/30 + ---- +builtins/printf.def + - tescape no longer needs a `trans_squote' argument, since it's the + same as the `sawc' argument. The `sawc' argument now means to do + the %b argument processing if non-null + - fix processing of octal constants for %b arguments (\0 followed by + up to three octal digits) and other escape sequences (\ followed by + up to three octal digits) + - hex constants `\xHHH' are now allowed to contain any positive + number of digits; previously they were restricted to two [removed] + - allow two new escape sequences: \" and \?, for compatibility with + ksh93 and ANSI C + +doc/{bash.1,bashref.texi} + - documented processing that printf performs for arguments to %b + escape sequences + +lib/sh/strtrans.c + - add \" and \? to escape sequences recognized by `echo -e' + + 10/1 + ---- +version.c + - use snprintf instead of sprintf if configure tells us we have it + + 10/3 + ---- +subst.c + - in list_remove_pattern, take into account the fact that one of the + list elements may be NULL, and don't free the result of + remove_pattern() without checking + - in remove_pattern, return savestring(param) if *param == '\0', + since callers expect to free() non-null return values + + 10/4 + ---- +subst.c + - change verify_substring_values to make it clearer that the first + offset deals with array indices and the second deals with numbers + of elements, when doing array subranges with ${a[@]:e1:e2} + +array.c + - change array_subrange to make it explicit that the second offset + argument is a count of the desired number of elements, not an + ending index. This deals with sparse arrays correctly. + + 10/6 + ---- +variables.c + - fix memory leak in assign_in_env + + 10/8 + ---- +subst.c + - in parameter_brace_expand, check that the last characters are `]}' + before checking for ${!array[@]} + +execute_cmd.c,builtins/source.def + - push and pop the args (BASH_ARGV and BASH_ARGC) when executing a + shell function or sourcing a script only when in debugging mode + + 10/11 + ----- +arrayfunc.c + - make sure array_variable_name returns values for the SUBP and LENP + arguments if they're non-null, since callers expect to use them + even if the array subscript is bad + +error.c + - call exit_shell instead of sh_exit from parser_error and + report_error so the right things happen (running exit trap, doing + the right interactive cleanup, etc.) + +lib/readline/complete.c + - new variable, rl_completion_quote_character, set to any quote char + readline thinks it finds before any application completion + function is called + - new variable, rl_completion_suppress_quote, settable by an + application-specific completion function. If set to non-zero, the + completion code does not append a closing quote in append_to_match + +lib/readline/readline.h + - extern declarations for rl_completion_quote_character and + rl_completion_suppress_quote + +bashline.c + - set rl_completion_suppress_quote in command_subst_completion_function + because that would be inserted before any closing "`" or ")", which + is somewhat disconcerting + +lib/readline/doc/rltech.texi + - documented rl_completion_suppress_quote and + rl_completion_quote_character + + 10/13 + ----- +bashhist.c + - use sv_histchars instead of setting history_comment_char directly in + bash_initialize_history so assignments to $histchars made in + ~/.bashrc are honored + + 10/21 + ----- +trap.c + - make sure run_exit_trap sets `running_trap' appropriately + - new variable, trap_saved_exit_value, set to last_command_exit_value + before running any trap commands; available to the rest of the + shell; use trap_saved_exit_value to replace some function-local + variables + +builtins/exit.def + - if the shell is running the exit trap, and no argument is given + to `exit', use trap_saved_exit_value as the exit status instead + of the last command exit value (which could be the previous command + run in the exit trap), as required by POSIX.2 + + 10/25 + ----- +doc/{bash.1,bashref.texi} + - add `alias' to the list of documented `assignment statement' builtins + + 11/1 + ---- +doc/bash.1 + - remove the `.' from the sample $PATH value + +parse.y + - make sure parse_compound_assignment prompts with $PS2 if it reads + a newline while parsing the compound assignment statement. Bug + reported by Stephane Chazelas + - parse_string_to_word_list now takes a new second argument: `int flags' + - new parser state flag: PST_COMPASSIGN; indicates that the shell is + parsing a compound assignment statement + - parse_string_to_word_list turns on PST_COMPASSIGN if `flags' arg + has low bit set + - turn PST_COMPASSIGN on and off in parse_compound_assignment + +externs.h + - change prototype declaration for parse_string_to_word_list + +arrayfunc.c + - change call to parse_string_to_word_list to add new flags arg + +general.c + - assignment() takes a new `flags' second argument + - if `flags' is non-zero, accept `[' as a legal assignment statement + starter character (for parsing compound array assignments) + +general.h + - add new argument to prototype declaration for assignment() + +parse.y,{subst,variables}.c, builtins/{setattr,declare}.def + - change calls to assignment() (parse.y calls with flags == 1 when + parser_state inlcudes PST_COMPASSIGN) + +arrayfunc.c + - in assign_array_var_from_string(), don't treat an expanded word + of the form [ind]=value specially unless the W_ASSIGNMENT flag is + set. This means that words that are the result of expansions but + happen to have the same format as compound assignment statement + words will not be treated as such. For instance + + v='[12]=foobar' + a=( $v ) + + will result in a[0]='[12]=foobar' instead of a[12]=foobar. This + is closer to how `regular' assignment statements are treated and + compatible with ksh93. Bug reported by Stephane Chazelas + +shell.c + - new --protected argument, disables command substitution when used + with --wordexp (like --wordexp, it remains undocumented) + - change run_wordexp to turn on the W_NOCOMSUB flag in each word + to be expanded if protected_mode is set + + 11/7 + ---- +doc/{bash.1,bashref.texi} + - clarified the language concerning inherited signal dispositions and + when traps are run + +support/shobj-conf + - slight changes to the darwin (Mac OS X) stanza for MacOS X 10.3 + (for the readline shared library builds, which shares this script) + +lib/readline/histexpand.c + - change to make `^' behave as equivalent to word one, as csh does, + and as the documentation states + +lib/readline/display.c + - in update_line, make sure to use col_lendiff in all calculations + where the cursor position is concerned (like when calculating + the value of _rl_last_c_pos). Fixes bug reported by Andreas + Schwab + + 11/12 + ----- +trap.c + - make _run_trap_internal catch `return' builtin longjmps and clean + up before longjmping on to where the return was intended to go + (fixes bug with not turning off SIG_INPROGRESS flag when `return' + executed in trap command) + + 11/18 + ----- +builtins/cd.def + - in posix mode, set errno to ENOTDIR if canonicalization fails, + unless the canonicalization functions leave it set to ENOENT + + 11/25 + ----- +make_cmd.c + - in make_simple_command, don't blindly dereference element.redirect + +parse.y + - the list_terminator production now has an `int' value so it can be + used in other grammar productions + - add a rule that makes `time' on a line by itself time a null + command (this is iffy) + + 11/28 + ----- +subst.c + - change the pattern substitution code (${var//pat/rep}) to use the + same pattern expansion function (getpattern()) as the pattern + removal expansions. This has the effect of no longer performing + quote removal on the pattern before trying to match it. This + fixes an incompatibility with ksh93 reported on comp.unix.shell + +nojobs.c + - add replacement function for siginterrupt on the off chance that a + system has posix signals but lacks siginterrrupt + +lib/readline/display.c + - fix from Tim Waugh at Red Hat to speed up inserting characters into + long lines in a UTF-8 environment by optimizing the calculation of + the first difference between old and new lines by checking to see + whether the old line is a subset of the new + + 11/29 + ----- +lib/malloc/stats.c + - break code that opens file (and interprets %p) into separate function + _imalloc_fopen(char *s, char *fn, char *def, char *defbuf, size_t defsiz) + for use by rest of library + - default stats file is now `stats.PID' + +lib/malloc/trace.c + - new function, malloc_set_tracefn (char *s, char *fn), sets tracing + to the file named by FN (with %p interpolated as the pid), using + some default if FN is NULL + +lib/malloc/shmalloc.h + - new extern declaration for malloc_set_tracefn + + 12/4 + ---- +execute_cmd.c + - combined several common strings from do_piping() into one + dup_error() function + +builtins/common.[ch] + - new function, `sh_notbuiltin(s)' prints error message about s not + being a shell builtin + +builtins/{builtin,enable}.def + - call sh_notbuiltin instead of using literal string + +{arrayfunc,expr,error}.c + - use one string variable for `bad array subscript' error message; use + in calls to various error reporting functions + +Makefile.in + - add variables for localedir and the PACKAGE_* variables, auto-set + by configure + +configure.in + - un-cache values for gettext, textdomain, and bindtextdomain if they're + not in libc but in libintl so the right variables get set + +bashintl.h + - add necessary defines for marking strings to be translated using + gettext + +locale.c + - set textdomain and directory in set_default_locale + - don't call textdomain with the value of $TEXTDOMAIN, since we don't + want to override the default domain ("bash") + - don't call bindtextdomain unless default_domain already has a value + - when translating $"..." strings, use dgettext with the script's + default domain (value of $TEXTDOMAIN) + + 12/9 + ---- +builtins/mkbuiltins.c + - include "bashintl.h" in the generated "builtins.c" + +support/{config.rpath,mkinstalldirs} + - new files to support gettext i18n + +ABOUT-NLS + - new readme file for gettext internationalization + +po/{Makefile.in.in,Rules-quot,boldquot.sed,en@boldquot.header,en@quot.header,insert-header.sin,quot.sed,remove-potcdate.sin} +po/{POTFILES.in,bash.pot} + - new files for gettext + +lib/intl + - new directory, with libintl stuff from gettext + +aclocal.m4 + - add m4 files from gettext distribution needed by libintl + +configure.in + - create po/Makefile.in and lib/intl/Makefile in AC_OUTPUT + - add call to AM_GNU_GETTEXT to initialize gettext stuff + +Makefile.in + - use mkinstalldirs instead of mkdirs in the `installdirs' target + - changes for intl/ and po/ subdirectories in build and install + - changes to have libintl linked in, as determined by configure + - changes to have libintl built, just in case it's used (though I'd + rather not) + + 12/10 + ----- +config.h.in + - additional #defines required by the libintl library + - add ENABLE_NLS define for AM_GNU_GETTEXT + - take out defines for HAVE_{BINDTEXTDOMAIN,GETTEXT,TEXTDOMAIN} + +configure.in + - removed old tests for libintl and gettext/textdomain/bindtextdomain + +locale.c + - remove HAVE_GETTEXT code; we have gettext unconditionally now + +bashintl.h + - change to include "gettext.h" and remove the conditional code based + on whether or not gettext is present + + 12/16 + ----- +lib/readline/vi_mode.c + - fix problem with rl_vi_eWord that caused it to skip over the last + character of a word if invoked while point was on the next-to-last + character + + 12/18 + ----- +{arrayfunc,bashhist,bashline,error,eval,execute_cmd,expr,general,input,jobs}.c +{mailcheck,make_cmd,nojobs,pcomplete,pcomplib,print_cmd,redir,shell,sig}.c +{subst,test,trap,variables,version,xmalloc}.c +parse.y +builtins/{common,evalfile,getopt}.c +builtins/{bind,break,caller,cd,complete,declare,enable,exec,exit,fc,fg_bg}.def +builtins/{hash,help,history,jobs,kill,printf,pushd,read,return,set,setattr}.def +builtins/{shift,shopt,source,suspend,type,ulimit,umask}.def +lib/sh/{fmtulong,netopen}.c + - include "bashintl.h" for gettext defines + +Makefile.in + - add `-DBUILDTOOL' to CFLAGS for buildversion.o + +bashintl.h + - if `BUILDTOOL' is defined, define ENABLE_NLS to 0 so we don't have + to compile and link in the gettext stuff + +Makefile.in,lib/sh/Makefile.in,builtins/Makefile.in + - update dependencies on bashintl.h and include/gettext.h + + 12/19 + ----- +{arrayfunc,bashhist,bashline,error,eval,execute_cmd,expr,general,input,jobs}.c +{mailcheck,make_cmd,nojobs,pcomplete,pcomplib,print_cmd,redir,shell,sig}.c +{subst,test,trap,variables,version,xmalloc}.c +builtins/{common,evalfile,getopt}.c +builtins/{bind,break,caller,cd,complete,declare,enable,exec,exit,fc,fg_bg}.def +builtins/{hash,help,history,jobs,kill,let,printf,pushd,read,return,set}.def +builtins/{setattr,shift,shopt,source,suspend,type,ulimit,umask}.def +lib/sh/{fmtulong,netopen}.c +lib/malloc/{malloc,stats,table,watch}.c + - mark up strings in source files for gettext processing + +lib/malloc/imalloc.h + - include "bashintl.h" if SHELL is defined, otherwise make _(x) an + identity define + +lib/malloc/Makefile.in + - add dependencies on ${topdir}/bashintl.h and ${BASHINCDIR}/gettext.h + + 12/21 + ----- +bashline.c + - make sure we index into rl_line_buffer with indexes > 0 in + attempt_shell_completion + + 12/31 + ----- +Makefile.in + - descend into `po' and run make recursively for the various clean + targets + + 1/4 + --- +include/shmbutil.h + - two new macros: BACKUP_CHAR(str, strsize, i), which backs up one + multibyte character in STR starting at index I, and + BACKUP_CHAR_P(str, strsize, p), which backs up one multibyte + character in STR starting at P, which is a char * + + 1/6 + --- +pcomplete.c + - in pcomp_filename_completion_function, use the quote character + readline found (and assigned to rl_complete_quote_character) when + dequoting the filename by a completion call from readline (when + rl_dispatching != 0) + +bashline.c + - ditto for bash_directory_completion_matches + + 1/7 + --- +lib/readline/complete.c + - new variable, rl_completion_found_quote, set to non-zero value if + readline finds what it thinks is quoting in the word to be completed + +lib/readline/readline.h + - extern declaration for rl_completion_found_quote + + 1/8 + --- +lib/readline/doc/rltech.texi + - documented rl_completion_found_quote + +lib/readline/complete.c + - in compute_lcd_of_matches, if it looks like what the user typed was + dequoted before generating filename matches, dequote the user's + text again before figuring out the case-insensitive lcd + + 1/9 + --- +lib/readline/display.c + - fix from Edward Catmur to logic that handles + invisible characters in prompt string. Original code was wrong + about local_prompt_prefix; it gave incorrect results when prompt + contained invisible characters after a line break + + 1/10 + ---- +subst.c + - new function, mb_substring(), does character (possibly multibyte) + oriented rather than strictly byte-oriented substring extraction. + The passed indices, rather than strictly indexing into the string, + indicate character positions that need to be calculated. From + Tim Waugh + - change parameter_brace_substring to use mb_substring if necessary + +included/shmbutil.h + - new define SADD_MBQCHAR_BODY, common code for adding a quoted + (preceded by CTLESC) multibyte character to an accumulating string + in the subst.c expansion code + +subst.c + - use SADD_MBQCHAR_BODY in expand_word_internal + - new static function, mb_getcharlens, allocates and returns an array + of character lengths for (possibly multibyte) characters in the + argument string + - change pattern matching operations to use while loops instead of + for loops to handle multibyte characters better (no more simple + increment or decrement) + - change pattern matching operations to use multibyte character + operations instead of simple increments and decrements. Don't + use BACKUP_CHAR_P -- use the mblen array instead, because that + avoids the N**2 behavior of having to count from the beginning + of the string each time you want to back up one character. Changes + to remove_pattern and match_pattern + + 1/12 + ---- +lib/readline/display.c + - make expand_prompt count multbyte characters in the prompt string + by using _rl_find_next_mbchar (and copying possibly more than one + byte) instead of a simple increment and single byte copy + + 1/13 + ---- +lib/readline/display.c + - expand_prompt takes a new reference argument -- it returns + the actual count of (possibly multibyte) characters displayed + on the screen + - don't short-circuit in expand_prompt unless we're not going to + be using any multibyte characters + - change calls to expand_prompt to pass an argument for the + number of physical characters the prompt occupies + (prompt_physical_chars) + - initialize `lpos' (the physical cursor position) from + prompt_physical_chars in rl_redisplay + +lib/readline/mbutil.c + - in _rl_find_prev_mbchar_internal, if mbrtowc returns -1 or -2, and + we assume that the character is a single-byte char, make sure we + update `prev' so it doesn't get lost. Fixes problems encountered + when a non-ascii char is the last char on the line and we're moving + back past it with ^B, and other display problems caused by the same + situation + + 1/15 + ---- +lib/readline/doc/rltech.texi + - document RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE in the + description of rl_expand_prompt() + + 1/20 + ---- +bashline.c + - in initialize_readline, make sure M-C-j and M-C-m are still bound to + vi-editing-mode before unbinding them -- they may have been rebound + in an inputrc + +variables.c + - in unbind_variable, unset attributes other than `local' and exported + (if the variable came from a temporary environment) when unsetting a + local variable inside a function + + 1/21 + ---- +configure.in + - add libintl build directory to the list of include directories if + it's being built (using INTL_BUILDDIR) + +Makefile.in,{builtins,lib/{sh,malloc}}/Makefile.in + - substitute LIBBUILD as ${BUILD_DIR}/${LIBSUBDIR} + - define INTL_BUILDDIR as ${LIBBUILD}/intl + +{builtins,lib/sh}/Makefile.in + - make sure INTL_INC is added to the list of include directories + - make sure INTL_LIBSRC is defined with the correct value + +{configure,Makefile,{builtins,lib/sh}/Makefile}.in + - substitute LIBINTL_H as ${INTL_BUILDDIR}/libintl.h + +Makefile.in,builtins/Makefile.iin + - all files depending on bashintl.h also depend on ${LIBINTL_H} + (which may be empty) + +Makefile.in + - make a rule telling how to build lib/intl/libintl.h if necessary + + 1/24 + ---- +builtins/read.def + - make sure that the array name supplied as an argument to -a is a + valid identifier + +parse.y + - make the \W expansion abbreviate $HOME with a ~ (seems to be more + useful) + +doc/{bash.1,bashref.texi} + - document new behavior of \W + +subst.c + - make sure parameter_brace_expand_rhs uses the first character of + $IFS when making the string to return from the expanded word + (which, in the case of "$@" or $@, contains multiple words that + need to be separated) + + 1/25 + ---- +builtins/common.c + - change get_job_spec to make `%' by itself or an empty argument + return NO_JOB + +jobs.h + - new possible value for a job spec return value: BAD_JOBSPEC + (for syntactically invalid specs, like the empty string) + +shell.c + - in open_shell_script, check to see whether or not we can find and + open the filename argument before setting dollar_vars[0] or + manipulating BASH_SOURCE, so the error messages come out better + +subst.c + - in string_list_internal, short-circuit right away to savestring() + if the list only has a single element + + 1/28 + ---- +lib/readline/rltypedefs.h + - new set of typedefs for functions returning char * with various + arguments (standard set) + +lib/readline/complete.c + - new function pointer, rl_completion_word_break_hook, called by + _rl_find_completion_word, used to set word break characters at + completion time, allowing them to be position-based + +lib/readline/doc/rltech.texi + - documented rl_completion_word_break_hook + +lib/readline/kill.c + - added new rl_unix_filename_rubout, which deletes one filename + component in a Unix pathname backward (delimiters are whitespace + and `/') + +lib/readline/readline.h + - extern declaration for rl_unix_filename_rubout + +lib/readline/funmap.c + - new bindable readline command `unix-filename-rubout' + +lib/readline/doc/{readline.3,rluser.texi},doc/bash.1 + - documented `unix-filename-rubout' + + 1/29 + ---- +lib/readline/histexpand.c + - change history_tokenize_internal to handle non-whitespace delimiter + characters by creating separate fields (like the shell does when + splitting on $IFS) + + 1/30 + ---- +lib/glob/xmbsrtowcs.c + - new function, xdupmbstowcs, for convenience: calls xmbsrtowcs + while allocating memory for the new wide character string + - some small efficiency improvments to xmbsrtowcs + +include/shmbutil.h + - extern declaration for xdupmbstowcs + +lib/glob/strmatch.h + - include config.h for definition of HANDLE_MULTIBYTE + - remove the HAVE_LIBC_FNM_EXTMATCH tests + - new extern declaration for wcsmatch(whchar_t *, wchar_t *, int) + +configure.in + - remove call to BASH_FUNC_FNMATCH_EXTMATCH; it's no longer used + +lib/glob/smatch.c + - simplify xstrmatch() by using xdupmbstowcs() instead of inline code + +lib/glob/glob.c + - modify mbskipname() to avoid the use of alloca + - simplify mbskipname() by using xdupmbstowcs() instead of inline code + - simplify glob_pattern_p() by using xdupmbstowcs() instead of + inline code + - fix memory leak in wdequote_pathname + - simplify wdequote_pathname() by using xdupmbstowcs() instead of + inline code + +lib/glob/strmatch.c + - new function, wcsmatch(), `exported' wide-character equivalent of + strmatch() + +subst.c + - old match_pattern is now match_upattern + - match_pattern now either calls match_upattern or converts + mbstrings to wide chars and calls match_wpattern + - match_upattern reverted to old non-multibyte code + - new function: match_pattern_wchar, wide character version of + match_pattern_char + + 2/1 + --- +subst.c + - old remove_pattern is now remove_upattern + - remove_upattern reverted to old non-multibyte code (pre-Waugh patch) + - new multibyte version of remove_pattern: remove_wpattern + - remove_pattern now calls either remove_upattern or converts a + multibyte string to a wide character string and calls + remove_wpattern + - new function, wcsdup, wide-character version of strdup(3) + + 2/4 + --- +print_cmd.c + - temporarily translate a >&filename redirection from + r_duplicating_output_word to r_err_and_out (as the expansion code + in redir.c does) so it prints without a leading `1' (file + descriptor) + + 2/5 + --- +aclocal.m4 + - add a check for wcsdup to BASH_CHECK_MULTIBYTE + +config.h.in + - add HAVE_WCSDUP define + + 2/9 + --- +builtins/shift.def + - fix a call to sh_erange that possibly dereferences a NULL pointer + + 2/12 + ---- +general.c + - start at a general set of file property checking functions: + file_isdir(), file_iswdir() (is writable directory) + +general.h + - extern declarations for new functions + +lib/sh/tmpfile.c + - use file_iswdir() to make sure the temporary directory used for + here documents and other temp files is writable in get_sys_tmpdir() + + 2/17 + ---- +bashline.c + - fix conditional binding of emacs-mode M-~ -- there is a default + binding for it (rl_tilde_expand), so a straight call to + rl_bind_key_if_unbound_in_map doesn't do the right thing + + 2/27 + ---- +[bash-3.0-beta1 released] + + 2/29 + ---- +subst.c + - fixed expansion so referencing $a, when a is an array variable + without an element assigned to index 0, exits the shell when + `-u' is enabled + +expr.c + - make the exponentiation operator (**) associative, so things like + 2**3**4 work right (change `if' to `while') + + 3/3 + --- +lib/sh/strftime.c + - SCO Unix 3.2, like Solaris, requires that the system's `timezone' + variable be declared as long + +lib/readline/{bind,histfile,input,parens}.c + - changes for Tandem (including `floss.h' (?)) + + 3/4 + --- +subst.c + - change param_expand to quote the entire expanded string instead + of just the escape characters if the expansion appears between + double quotes or in a here-document (for simple variable expansions + or expansions of positional parameters) + + 3/8 + --- +subst.c + - analogous changes to parameter_brace_expand_word to fix the same + quoting problem as on 3/4; fix callers to understand that the + value returned might be quoted now and should be dequoted if + necessary + - add a `quoted' argument to get_var_and_type, change callers + - change today's fix and fix from 3/4 to not call quote_string if the + value is "" (because quote_string turns that into CTLNUL\0) + + 3/9 + --- +builtins/cd.def + - resetpwd() now takes a `caller' argument so it can be used by pwd + as well as cd + - change pwd_builtin to call resetpwd() if sh_physpath() fails to + return a valid pathname + + 3/14 + ---- +expr.c + - reworked exp0 and readtok() to make post-increment and post-decrement + into real tokens, which may be separated from their accompanying + variables by whitesapce + - made analogous changes to readtok() to make pre-increment and + pre-decrement work when separated from their accompanying identifier + by whitespace + + 3/18 + ---- +lib/readline/misc.c + - in rl_maybe_unsave_line, don't force rl_replace_line to clear + the undo_list, since it might point directly at an undo list + from a history entry (to which we have no handle) + + 3/19 + ---- +lib/readline/display.c + - rl_save_prompt and rl_restore_prompt now save and restore the value + of prompt_physical_chars + - set prompt_physical_chars in rl_redisplay when expand_prompt has + not been called (e.g., when rl_display_prompt is set and is not + equal to rl_prompt, like when searching) + +lib/readline/histexpand.c + - don't call add_history in history_expand if the `:p' modifier is + supplied; leave that to the calling application. This means that + `history -p', for example, will not add anything to the history + list (as documented), nor will history expansions invoked by + emacs-mode M-C-e line editing + +config-bot.h + - check whether HAVE_DECL_SYS_SIGLIST is defined to 1 rather than just + defined, to work around newer versions of autoconf defining it to 0 + +config.h.in + - change default status of HAVE_MALLOC to #undef instead of #define + +bashhist.c + - extern declarations for rl_done and rl_dispatching + - don't call re_edit from pre_process_line unless rl_dispatcing is zero, + so we don't call it from something like shell-expand-line + - change pre_process_line to add an expanded history specification + that returned `print only' to the history list, since history_expand + no longer does it (and, when using readline, do it only when + rl_dispatching is zero) + + 3/22 + ---- +config.h.in,aclocal.m4 + - change bash-specific functions that look in struct dirent to define + HAVE_STRUCT_DIRENT_xxx, like AC_CHECK_MEMBERS does (though the + functions are otherwise the same) + - new function, BASH_STRUCT_DIRENT_D_NAMLEN, define + HAVE_STRUCT_DIRENT_D_NAMLEN if struct dirent has a `d_namlen' member + +configure.in + - call BASH_STRUCT_DIRENT_D_NAMLEN + +include/posixdir.h + - use new and renamed HAVE_STRUCT_DIRENT_D_xxx defines + + 4/7 + --- +builtins/cd.def + - ensure that we print out a non-null pathname after getting a + directory from CDPATH and canonicalizing it (e.g., if the result + exceeds PATH_MAX in length and the_current_working_directory is + set to NULL) + + 4/12 + ---- +print_cmd.c + - new function to print out assignment statements when `set -x' has + been enabled: xtrace_print_assignment + +externs.h + - extern declaration for xtrace_print_assignment + + 4/13 + ---- +{subst,variables}.c + - call xtrace_print_assignment instead of using inline code + +jobs.c + - if turning on job control when it was previously off, set + pipeline_pgrp to 0 in set_job_control so make_child puts + subsequent children in their own process group + + 4/14 + ---- +general.c + - new function, legal_alias_name, called to decide whether an + argument to add_alias is a valid alias name -- essentially any + character except one which must be quoted to the shell parser + and `/' + +general.h + - new extern declaration for legal_alias_name + +builtins/alias.def + - `unalias' now returns failure status if no NAME arguments are + supplied and -a is not given + - call legal_alias_name to make sure alias name is valid before + calling add_alias from alias_builtin + + 4/19 + ---- +include/shmbutil.h + - include for definition of HANDLE_MULTIBYTE rather than + duplicating logic + + 4/20 + ---- + +doc/{bash.1,bashref.texi} + - make sure $0 is consistently referred to as a `special parameter' + - document which characters are now not allowed in alias names + + 4/23 + ---- + +builtins/{jobs,kill,wait}.def + - removed requirement that job control be enabled to use job control + notation, as SUSv3 implies + +subst.c + - based on a message from David Korn, change param_expand to not call + string_list_dollar_star if the only quoting is Q_HERE_DOCUMENT -- + quoted here documents are like double quoting, but not exactly + - analogous changes to list_remove_pattern and pos_params + + 4/24 + ---- +lib/readline/doc/rluser.texi + - fix error in description of emacs-mode C-xC-e command (uses $VISUAL + instead of $FCEDIT) + + 4/28 + ---- +support/bashbug.sh + - integrate a patch from Stefan Nordhausen + that reduces race conditions + by using a temporary directory inside $TMPDIR and creating the + temp files in that + + 4/30 + ---- +builtins/common.c + - use pathconf(".", _PC_PATH_MAX) where available to size the argument + to getcwd() rather than using a straight PATH_MAX + +builtins/cd.def + - if get_working_directory fails and returns null (causing resetpwd + to return NULL), use set_working_directory to set $PWD to the + absolute pathname for which chdir just succeeded + + 5/1 + --- +lib/readline/vi_mode.c + - in rl_vi_change_to, call _rl_vi_set_last with rl_numeric_arg instead + of `last', since they're equal at call time and rl_vi_domove can + change rl_numeric_arg (which vi apparently updates). Fixes redo bug + of `c2....' reported by Marion Berryman + + 5/4 + --- +parse.y + - fix decode_prompt_string to properly deal with strftime() returning 0 + + 5/6 + --- +variables.c + - in make_local_array_variable, return an already-existing local array + variable immediately rather than creating a new array (causing a + memory leak) + + 5/8 + --- +lib/readline/vi_mode.c + - change rl_vi_domove to set rl_explicit_arg before calling + rl_digit_loop1 so that multi-digit numeric arguments work right + - _rl_vi_last_command is no longer static + +lib/readline/rlprivate.h + - new extern declaration for _rl_vi_last_command + +lib/readline/text.c + - change rl_newline to only call _rl_vi_reset_last if the last command + (_rl_vi_last_command) is not a text modification command. This lets + the last-command and last-argument work across command lines + + 5/13 + ---- +builtins/common.c + - use getcwd(0,0) rather than providing a fixed pathname with a fixed + length (PATH_MAX) so getcwd() will allocate sufficient memory + +aclocal.m4 + - change BASH_FUNC_GETCWD to check whether or not getcwd(0,0) will + allocate memory for the returned value -- nobody implements that + and getcwd-via-popen, so it should capture the old test as well + + 5/27 + ---- + +builtins/trap.def + - the historical behavior of assuming that a signal's handling should + be set to its original disposition is only in effect if a single + argument is given, otherwise the first argument is assumed to be a + command to execute + - when in posix mode, if trap gets a single argument, display an + error message and return EX_USAGE + - change the help message and usage string to better explain trap's + behavior + +doc/{bash.1,bashref.texi} + - describe the new default behavior when the first argument is a + signal spec + - note that signal names are case insensitive and the SIG prefix is + optional in arguments to `trap' + - note that signal name arguments to `kill' are case-insensitive + +lib/readline/display.c + - make sure rl_on_new_line_with_prompt sets rl_display_prompt to + rl_prompt (just to make sure it's set) + - have rl_on_new_line_with_prompt use local_prompt if it's set + + 6/2 + --- +subst.c + - in string_extract_double_quoted, cope with extract_delimited_string + returning NULL, as it can when attempting completion on an unclosed + command substitution + + 6/24 + ---- +lib/readline/complete.c + - change print_filename to add a `/' to listed directory names if + `mark-directories' has been enabled + +builtins/umask.def + - make sure that the mask passed to parse_symbolic_mode has all but + the operative low eight bits masked off, to avoid complementing + all 0s to -1, which is the error return code. This makes things + like `a=rwx' and `ugo=rwx' work and turn off the umask + + 6/26 + ---- +builtins/getopts.def + - when `getopts' reaches the end of options, unset OPTARG before + returning EOF. In response to a bug report from Apple + +configure.in + - when cross-compiling, don't set CPPFLAGS_FOR_BUILD and + LDFLAGS_FOR_BUILD from CPPFLAGS and LDFLAGS, respectively, since + those are for the target instead of the build platform (report + from robert@schwebel.de) + +shell.c + - a shell whose standard error (but not standard output) is directed + to a terminal should be interactive, according to POSIX/SUS. This + means that sh > sh.out will start an interactive shell. Bug report + from llattanzi@apple.com + +doc/{bash.1,bashref.texi} + - change mention of standard output to standard error in definition + of interactive shell + +lib/readline/vi_mode.c + - new convenience function, rl_vi_start_inserting, calls + _rl_vi_set_last to save the last textmod command state and then calls + rl_vi_insertion_mode to enter insert mode + - change functions to use rl_vi_start_inserting + +lib/readline/readline.h + - extern declaration for rl_vi_start_inserting + +bashline.c + - new function for vi-mode completion, bash_vi_complete. Does + filename expansion as POSIX specifies, unlike the default readline + bindings (which don't know about globbing). Bound to `\', `*', + and `=' in vi command keymap. Internals very similar to + rl_vi_complete; just calls bash glob expansion functions + +lib/readline/vi_mode.c + - change rl_vi_change_char so that an entire change is a single + undoable event, rather than each individual change in a [count]r + command + - fix rl_vi_change_char so that replacing characters up to EOL works + rather than generating rl_ding + - fix rl_vi_change_case so that replacing characters up to EOL works + rather than generating rl_ding + + 6/28 + ---- +builtins/echo.def + - call clearerr(stdout) before writing anything and testing its + failure or success + + 6/29 + ---- +bashline.c + - only set rl_explicit_arg in bash_glob_complete_word if readline is + in emacs mode; let bash_vi_complete take care of setting it in vi + mode + - fix bash_vi_complete to only set rl_explicit_arg unless the posix + conditions are met: no globbing characters in the vi `bigword' + being completed + + 6/30 + ---- +[bash-3.0-rc1 released] + + 7/1 + --- +lib/readline/complete.c + - make sure `extension_char' is initialized before deciding whether + or not the append a `/' to a possible completion when visible-stats + is not enabled + + 7/2 + --- +subst.c + - fix a boundary overrun in string_extract_double_quoted that could + occur when the word completion code attempts to expand an incomplete + construct (like a quoted unclosed command substitution) + + 7/4 + --- +subst.c + - set tempenv_assign_error to non-zero if an assignment to the + temporary environment fails for some reason (e.g., attempted + assignment to a readonly variable) + +execute_cmd.c + - fix execute_simple_command to force a non-interactive shell in + POSIX mode to exit if an assignment to the temporary environment + preceding a special builtin fails (bug report from + llattanzi@apple.com) + + 7/5 + --- +bashline.c + - in bash_directory_completion_hook, don't perform word expansions + if the filename appears to have been completed from the file + system rather than typed in by the user. Bug reported by Tim + Waugh + + 7/7 + --- +lib/readline/misc.c + - if _rl_maybe_save_line is being asked to save a line other than + what's already saved, free up the current saved line and save the + current contents of rl_line_buffer. Bug reported by + llattanzi@apple.com + + 7/12 + ---- +lib/readline/input.c + - do better EOF detection in rl_gather_tyi -- if a read returns 0 when + the fd is in non-blocking mode, stuff an EOF into the input stream + (reported by mattias@virtutech.se) + + 7/13 + ---- +lib/readline/vi_mode.c + - make sure rl_vi_put honors `count' arguments and yanks things + multiple times if requested + + 7/16 + ---- +builtins/umask.def + - make sure that the `who' part of the umask symbolic mode argument + defaults to `a' if it's missing + +flags.c + - make sure that maybe_make_restricted only gets called after the + shell is initialized, so `bash -r' doesn't result in inappropriate + error messages + +[bash-3.0 frozen] + + 7/27 + ---- +doc/Makefile.in + - small fixes + +[bash-3.0-released] + + 7/28 + ---- +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 + + 7/30 + ---- +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 + + 7/31 + ---- +subst.c + - new function, mbstrlen(s), returns length of a multibyte character + string + +include/shmbutil.h + - new macro, MB_STRLEN(s), calls mbstrlen or STRLEN as appropriate + +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 + +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 + + 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) + +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 + +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) + +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 + +builtins/command.def + - fixed bug: `command -v' is supposed to be silent if a command is not + found + +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 + +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 + +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 + +{locale,variables}.c + - support LC_TIME as a special locale variable so HISTTIMEFORMAT tracks + the current locale + + 8/2 + --- +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 + + 8/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 + +variables.c + - BASH_ARGC, BASH_ARGV, BASH_SOURCE, BASH_LINENO no longer created as + invisible vars + +pcomplete.c + - make sure COMP_WORDS is not invisible when bind_comp_words returns + - ditto for COMPREPLY in gen_shell_function_matches + + 8/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 + + 8/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) + + 8/7 + --- +configure.in + - kfreebsd-gnu has had its sbrk() problems fixed, and no longer needs + to be configured --without-gnu-malloc + +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 + + 8/9 + --- +support/Makefile.in + - renamed `mostly-clean' target to `mostlyclean' + + 8/11 + ---- +lib/readline/vi_mode.c + - make same change for EOL in multibyte character case of + rl_vi_change_char + + 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) + + 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/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' + +lib/malloc/malloc.c + - internal_memalign and memalign now take a `size_t' as their first + argument, which seems to be the prevailing standard + +lib/malloc/{malloc.c,shmalloc.h} + - change sh_memalign to take a `size_t' as its first argument + +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) + +doc/bashref.texi + - amend description of bash posix mode to include new echo behavior + +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' + +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 + + 8/18 + ---- +array.c + - check for an empty array in array_rshift before shifting elements + and adjusting max_index + - check for null array in array_subrange + +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 + + 8/19 + ---- +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 + + 8/26 + ---- +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) + + 8/27 + ---- +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 + + 8/30 + ---- +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 + +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 + +execute_cmd.c + - change execute_in_subshell so the subshell command inherits the + command timing flags from the enclosing COMMAND * + + 9/11 + ---- +[prayers for the victims of 9/11/2001] + +lib/sh/strnlen.c + - new file, implementation of GNU libc extension function strnlen + +lib/sh/Makefile.in, {config.h,configure,Makefile}.in, MANIFEST + - changes for strnlen + +configure.in + - version changed to 3.1-devel + +doc/bash.1, lib/readline/doc/rluser.texi + - added description of `-o plusdirs' to complete/compgen (thanks, + Arnold) + +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 + + 9/13 + ---- +variables.c + - make BASH_ARGC, BASH_ARGV, BASH_LINENO, and BASH_SOURCE + non-unsettable, since the shell uses those values internally + +expr.c + - make exponentiation right-associative, as is apparently correct + + 9/16 + ---- +arrayfunc.c + - make sure convert_var_to_array marks the environment as needing + recreation if the converted variable was exported + + 9/17 + ---- +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 + +lib/readline/display.c + - in compute_lcd_of_matches, explicitly cast `text' to `char *' before + passing it to rl_filename_dequoting_function + +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 + + 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 + +externs.h + - add extern declarations for strnlen and strpbkrk from lib/sh + +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 + + 9/19 + ---- +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 + +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 + + 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 + +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 + +general.[ch] + - new function bash_tilde_find_word, drop-in replacement for + tilde_find_word + +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 + +execute_cmd.c + - take out calls to bash_tilde_expand before calling word expansion + functions + + 9/26 + ---- +execute_cmd.c + - make sure to call UNBLOCK_CHILD before returning on a pipe creation + failure in execute_pipeline + + 9/27 + ---- +variables.c + - change get_bash_command to deal with the_printed_command_except_trap + being NULL + +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() + +parse.y + - change the parser so that the closing `)' in a compound variable + assignment delimits a token -- ksh93 does it this way + +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 + + 9/28 + ---- +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 + +parse.y + - set W_COMPASSIGN on words that appear to be compound assignments + +subst.c + - pass W_NOXPAND and W_COMPASSIGN through end of expand_word_internal + +subst.[ch] + - new function, expand_assignment_string_to_string, calls + expand_string_assignment and then string_list on the result + +variables.c + - assign_in_env now calls expand_assignment_string_to_string + + 9/30 + ---- +builtins/common.c + - change get_job_spec so the null job `%' once again means the current + job + + 10/1 + ---- +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 + + 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 + +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 + +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 + +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 + +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 + + 10/3 + ---- +subst.c + - use W_COMPASSIGN flag in do_assignment_internal instead of deciding + lexically which assignments are compound array assignments + + 10/6 + ---- +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 + + 10/7 + ---- +config.h.in + - add a placeholder definition for WCONTINUED_BROKEN + + 10/9 + ---- +aclocal.m4 + - add BASH_CHECK_WCONTINUED, checks for glibc bug where WCONTINUED is + defined but rejected as invalid by waitpid(2) + +configure.in + - add call to BASH_CHECK_WCONTINUED, defines WCONTINUED_BROKEN + +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 + +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 + + 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) + + 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 + +lib/readline/rlprivate.h + - new extern declaration for _rl_bind_stty_chars + +lib/readline/rltty.c + - change rl_prep_terminal to add support for _rl_bind_stty_chars + + 10/15 + ----- +lib/readline/bind.c + - new bindable variable, `bind-tty-special-chars', bound to value of + _rl_bind_stty_chars + +doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} + - documented new readline variable `bind-tty-special-chars' + +builtins/pushd.def + - make the first check for option `--' skip the rest of option + checking + + 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 + + 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 + +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) + + 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 + +externs.h + - new extern declaration for sh_mkdoublequoted + +parse.y + - use sh_mkdoublequoted after calling localeexpand() + +lib/sh/strtrans.c + - change ansicstr to understand that (flags & 4) != 0 means to remove + backslash from unrecognized escape sequences + +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 + + 10/21 + ----- +bashline.c + - don't call programmable_completions with an assignment statement + argument + + 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 + + 10/24 + ----- +lib/readline/util.c + - include rlmbutil.h for multibyte definitions + - new function, _rl_walphabetic, wide char version of rl_alphabetic + +lib/readline/mbutil.c + - new function, _rl_char_value(buf, ind), returns value of (possibly + multibyte) character at buf[ind] + +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/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 + + 10/26 + ----- +parse.y + - fix parse_matched_pair so that it doesn't swallow \ when + parsing a $'...' construct (call shell_getc with different arg) + + 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 + +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 + + 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) + +shell.c + - make sure shell_is_restricted skips over a single leading `-' in + the shell name (from SUSE, but not sent in) + +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) + +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 + ---- +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 + + 11/5 + ---- +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 + +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 + +arrayfunc.c + - change callers of make_variable_value to add flags arg + +builtins/declare.def + - change callers of bind_variable_value to add flags arg + +{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 + +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' + +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 + + 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 + +builtins/setattr.def + - add support for `+=' assignment for rest of `assignment builtins': + export, readonly + + 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 + + 11/14 + ----- +{configure,config.h}.in + - check for `raise', define HAVE_RAISE if available + +lib/intl/dcigettext.c + - make sure `raise' is defined if HAVE_RAISE is not before + eval-plurah.h is included + +lib/malloc/trace.c + - put extern declaration for imalloc_fopen inside the MALLOC_TRACE + #ifdef + + 11/16 + ----- +lib/intl/Makefile.in + - make sure SHELL is defined to cpp + +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 + + 11/18 + ----- +trap.[ch] + - new function, int signal_in_progress(int sig), returns TRUE if the + trap handler for signal SIG is currently executing + + 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 + + 11/20 + ----- +doc/{bash.1,bashref.texi} + - correct some minor typos, forwarded from doko@debian.org + + 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) + + 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 + + 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' + +lib/sh/strftime.c + - don't try to redefine `inline' if it's already defined + + 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 + + 11/27 + ----- +builtins/evalfile.c + - make same changes as 11/26, this time to _evalfile + +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 + +trap.c + - change reset_or_restore_signal_handlers so that the RETURN trap is + not inherited by command substitution when DEBUGGER is not defined + + 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 + + 12/1 + ---- +execute_cmd.c + - fix execute_function so a function calling `return' will run the + RETURN trap, if one's defined + +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 + +execute_cmd.c + - a function does not inherit the RETURN trap if a DEBUG trap is + currently running + + 12/2 + ---- +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 + + 12/9 + ---- +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 + + 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 + --- +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_completion_hook + and bash_directory_expansion + +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 diff --git a/bash-20060316/CWRU/OS-BUGS/att-yacc-bug b/bash-20060316/CWRU/OS-BUGS/att-yacc-bug new file mode 100644 index 000000000..4c1370b0f --- /dev/null +++ b/bash-20060316/CWRU/OS-BUGS/att-yacc-bug @@ -0,0 +1,111 @@ +From chet@cwns1.INS.CWRU.Edu Sun Aug 26 17:46:14 1990 +Flags: 50 +Received: from cwns1.INS.CWRU.Edu by cwjcc.INS.CWRU.Edu with SMTP (5.61+ida+/CWRU-1.3-decnet) + id AA17813; Sun, 26 Aug 90 17:46:14 -0400 (from chet@cwns1.INS.CWRU.Edu for /usr/local/bin/m2mbox /usr/homes/chet/mbox) +Received: by cwns1.INS.CWRU.Edu (5.61+ida+/CWRU-1.3-client) + id AA00962; Sun, 26 Aug 90 17:46:31 -0400 (from chet for chet@cwjcc.INS.CWRU.Edu) +Date: Sun, 26 Aug 90 17:01:56 -0400 +From: Chet Ramey +To: trent@jove.cs.pdx.edu +Subject: Re: bash on triton +Cc: chet@cwns1.INS.CWRU.Edu +Reply-To: chet@po.CWRU.Edu +In-Reply-To: Message from trent@jove.cs.pdx.edu of Fri, 24 Aug 90 16:07:19 PDT +Message-Id: <9008262101.AA00902.SM@cwns1.INS.CWRU.Edu> +Read-Receipt-To: chet@po.CWRU.Edu + +> Actually, it just that PSU gets the short end of the stick compared to +> the other state universities because we don't have a division I +> football team (no :-). + +Yeah, but didn't you guys produce Neil Lomax (lo these many years ago)? What +have the other schools given the NFL lately? + +> First thing I noticed is that this alias fails: +> alias .root=/usr/local/.root +> The error is: +> alias: .root: not a valid shell identifier + +This is correct according to Posix 1003.2a draft 5. An alias must obey this +pseudo-regexp: + [a-zA-Z_][a-zA-Z0-9_]* + +(That is, only letters, digits, and underscores, and it may not begin with an +underscore). This is in the latest version of the manual page, the one in +the documentation directory. + +> Also it crashes when PROMPT_COMMAND is set, thus: +> bash$ PROMPT_COMMAND="A=`pwd`" +> bash$ # just hit return +> bash: free: Called with already freed block argument + +I am sorting through this problem right now, and I've discovered a few things +(none complimentary to Sun). + +First of all, this crash happens because Sun's programmers are lazy. The Sun +malloc allows you to free things multiple times, instead of doing the old + + if (x) + free(x); + x = NULL; + +trick. The Gnu malloc disallows that. + +The root of this set of problems is that the Sun yyparse() is not reentrant +(`impure'). First of all, /usr/lib/yaccpar has changed a number of things +to be dynamically allocated that were once static arrays (the state stack +and the value stack are the two major ones). Second, some things that used +to be automatic variables to yyparse (like the state stack) are now +globally static variables in /usr/lib/yaccpar. This means no more +indirectly recursive calls to yyparse(). This is pure bogusness, and +breaks backwards compatibility in a major way. + +The first indirect call to yyparse() occurs when PROMPT_COMMAND is run +through parse_and_execute() (parse.y, around line 1200). The next call to +yyparse() in your example (hitting return) returns quickly, putting nothing +onto the state stack. Of course, YYACCEPT doesn't check whether anything +was put into the stack; it just goes ahead and frees it anyway. + +The next problem arises when PROMPT_COMMAND contains a backquoted command, +which is run through parse_and_execute() again. It doesn't matter that +this parse_and_execute is in a subshell; the data structures being built by +Sun's yacc come along for free when bash forks. The state stack gets all +screwed up and a segmentation fault is the inevitable result. If Sun (and, +I assume, AT&T, since the SCCS line at the top of /usr/lib/yaccpar +indicates that it is derived from S5R3.1) wants to do this kind of shit, +they should at least provide a convenience function to clear out the state +stack. + +Both of these problems are avoided by using bison. I have put bison on +triton (you'll have to redo it if you want it; it looks for the parser +skeletons in /home/chet/lib), and a bash compiled with a bison-generated +parser does not crash given the above setting of PROMPT_COMMAND. That bash +is in /home/chet/bin. I don't know how to solve these problems in a +simple way by using the Sun yacc. + +`Byacc' (Berkeley Yacc), the 4.4 BSD rewrite of Yacc by Bob Corbett (who +wrote the original version of bison), should also be OK, though I haven't +looked at it. + +> That brings up something else: Triton is set up as a mail-less +> machine (all mail is forwarded elsewhere). Do you want your mail +> forwarded to CWSU?? Right now the bug reports Bash generates are +> vanishing. (I don't touch sendmail, and, from what I'm told, I'm +> better off that way :-) + +(It's CWRU, by the way.) + +Don't worry, I get them all. Look at the end of shell.c (make_bug_report) +where it opens a pipe to `/bin/rmail chet@ins.cwru.edu'. + +Let me know of any more problems you encounter. + +Chet + + +-- +Chet Ramey ``Levi Stubbs' tears run down +Network Services Group his face...'' +Case Western Reserve University +chet@ins.CWRU.Edu + diff --git a/bash-20060316/CWRU/OS-BUGS/bsd-rshd-bug b/bash-20060316/CWRU/OS-BUGS/bsd-rshd-bug new file mode 100644 index 000000000..54712d466 --- /dev/null +++ b/bash-20060316/CWRU/OS-BUGS/bsd-rshd-bug @@ -0,0 +1,46 @@ +From chet@odin.INS.CWRU.Edu Sat Apr 27 19:54:13 1991 +Flags: 50 +Received: from odin.INS.CWRU.Edu by usenet.INS.CWRU.Edu with SMTP (5.65b+ida+/CWRU-1.5-UUCPGW) + id AA05700; Sat, 27 Apr 91 19:54:13 -0400 (from chet@odin.INS.CWRU.Edu for /usr/local/bin/m2mbox /usr/homes/chet/mbox) +Received: by odin.INS.CWRU.Edu (5.65b+ida+/CWRU-1.4-ins) + id AA17732; Sat, 27 Apr 91 19:54:06 -0400 (from chet for chet@usenet.INS.CWRU.Edu) +Date: Sat, 27 Apr 91 19:31:16 -0400 +From: Chet Ramey +To: bfox@ai.mit.edu +Subject: Re: [pedz@aixwiz.austin.ibm.com: fd 9 left open bug] +Cc: chet@odin.INS.CWRU.Edu, pedz@aixwiz.austin.ibm.com +Reply-To: chet@po.CWRU.Edu +In-Reply-To: Message from bfox@bears.ece.ucsb.edu of Wed, 24 Apr 91 12:49:33 PDT +Message-Id: <9104272331.AA17706.SM@odin.INS.CWRU.Edu> +Read-Receipt-To: chet@po.CWRU.Edu + +> Below is something I call Xemacs which goes across the net, sets up the +> display variable and then kicks off emacs in such a way that rshd +> terminates. The trick is that the shell must die and all file +> descriptors going back to rshd must be closed. The same basic script +> works with csh but I had to add in the "9>&-" part at the end to make +> it work with bash. This is because somehow, file descriptor 9 is left +> open and I guess it must be a dup of stdin, stdout, or stderr. + +This is a bug alright, but it's a bug with rshd that's not fixed until +4.3-reno. + +rshd sets up a pipe (int pv[2]; if you have the source to the tahoe rshd) +to the process it executes and uses it to manage error and control output +from over the net. In the child process, it does a dup2(pv[1], 2), but +never calls close(pv[1]). Adding that code to the 4.3-tahoe rshd makes it +(and the Xemacs script) work right. + +I don't know how to solve this cleanly in bash. Doing a blanket close of +all open file descriptors < 2, < 20 is a no-no, especially when we're not +interactive. csh `works' because it does the blanket close on startup, but +csh can get away with doing that because it doesn't let you manipulate +arbitrary file descriptors. + +Chet + +-- +Chet Ramey Internet: chet@po.CWRU.Edu +Case Western Reserve University NeXT Mail: chet@macbeth.INS.CWRU.Edu + +``Now, somehow we've brought our sins back physically -- and they're pissed.'' diff --git a/bash-20060316/CWRU/OS-BUGS/bsd-tty-driver b/bash-20060316/CWRU/OS-BUGS/bsd-tty-driver new file mode 100644 index 000000000..2083e7c62 --- /dev/null +++ b/bash-20060316/CWRU/OS-BUGS/bsd-tty-driver @@ -0,0 +1,38 @@ +From chet Thu Aug 13 10:42:35 1992 +Flags: 50 +Received: by odin.INS.CWRU.Edu (5.65b+ida+/CWRU-1.5-ins) + id AA07004; Thu, 13 Aug 92 10:42:35 -0400 (from chet for /usr/homes/chet/bin/mailfilter.sh /usr/homes/chet/mbox) +Date: Thu, 13 Aug 1992 10:34:47 -0400 +From: Chet Ramey +To: przemek@rrdstrad.nist.gov +Subject: Re: output of background jobs in BASH +Cc: bug-bash@prep.ai.mit.edu, chet +Reply-To: chet@po.CWRU.Edu +In-Reply-To: Message from przemek@rrdstrad.nist.gov of 12 Aug 92 18:15:53 GMT +Message-Id: <9208131434.AA00639.SM@odin.INS.CWRU.Edu> +Read-Receipt-To: chet@po.CWRU.Edu + +> I believe that this changed when I installed bash 1.12: when I put a job that +> prints on stdout in background (^Z/bg or directly by &), the output comes out +> staggered, as if the CR wasn't being added to the LF at the end of the lines. + +This is a result of bash using the BSD-style tty driver on Ultrix. The BSD +driver ties input and output carriage return translation together with the +CRMOD bit. (The CRMOD bit causes CR->LF translation on input and LF->CRLF +translation on output.) Unless the CRMOD bit is cleared, it is impossible +to get a literal ^M in an input line. Unfortunately, one of the effects of +clearing it is the loss of output processing you've observed. + +The Ultrix Posix-style tty driver can't be used because it has serious +problems with losing typeahead when ICANON is switched on and off. These +characters seem to reappear later without warning, usually when a +program that uses the BSD-style ioctls turns on CBREAK (e.g., `more'). + +Chet + +-- +``The use of history as therapy means the corruption of history as history.'' + -- Arthur Schlesinger + +Chet Ramey, Case Western Reserve University Internet: chet@po.CWRU.Edu + diff --git a/bash-20060316/CWRU/OS-BUGS/hpux-ulimit-bug b/bash-20060316/CWRU/OS-BUGS/hpux-ulimit-bug new file mode 100644 index 000000000..7c9a34153 --- /dev/null +++ b/bash-20060316/CWRU/OS-BUGS/hpux-ulimit-bug @@ -0,0 +1,3 @@ +The HP/UX manual page for ulimit(2) reports that ulimit(1, 0L) will return +the maximum file size in terms of 512-byte blocks. It lies, at least on +HP/UX 6.5; the number of bytes is returned. diff --git a/bash-20060316/CWRU/OS-BUGS/isc-posix-bug b/bash-20060316/CWRU/OS-BUGS/isc-posix-bug new file mode 100644 index 000000000..5acf4165b --- /dev/null +++ b/bash-20060316/CWRU/OS-BUGS/isc-posix-bug @@ -0,0 +1,137 @@ +Article 7946 of comp.unix.sysv386: +Newsgroups: comp.unix.sysv386 +Path: usenet.ins.cwru.edu!agate!stanford.edu!snorkelwacker.mit.edu!think.com!zaphod.mps.ohio-state.edu!rpi!batcomputer!cornell!rochester!lubkin +From: lubkin@cs.rochester.edu (Saul Lubkin) +Subject: Binary patch to os.o fixes POSIX panics using VP/ix with job controlled bash +Message-ID: <1991Apr30.034006.24056@cs.rochester.edu> +Organization: Computer Science Department University of Rochester +Date: Tue, 30 Apr 1991 03:40:06 GMT + + +Recently, Uwe Doering posted the following article: + + Article 6891 of comp.unix.sysv386: + Path: nancy!uunet!math.fu-berlin.de!fub!geminix.in-berlin.de!gemini + From: gemini@geminix.in-berlin.de (Uwe Doering) + Newsgroups: comp.unix.sysv386 + Subject: Re: NAMEI panic - trap "E", address and info follows (+ patch) + Message-ID: + Date: 13 Apr 91 00:55:41 GMT + References: <1991Apr10.040146.645@ddsw1.MCS.COM> + Organization: Private UNIX Site + Lines: 92 + + karl@ddsw1.MCS.COM (Karl Denninger) writes: + + >Is anyone else having problems with a "namei" panic in ISC 2.2 (with NFS, + >the NFS/lockd patches, and POSIX patches applied)? + > + >I have been getting these nearly daily. Trap type "E", address is d007962f. + >That's right near the end of "namei"; here's the relavent line from a "nm" + >on the kernel: + > + >namei |0xd007919c|extern| *struct( )|0x0608| |.text + > + >Needless to say, I am most displeased with the crashes! + > + >Near as I can determine, the hardware is fine. + > + >All pointers or ideas appreciated... + + I found this bug a few days ago and was about to send a bug report + to ISC. The problem is "simply" a NULL pointer reference in the + namei() function. The machine I found this on runs ISC 2.21 with + the security fix installed. I fixed this bug with a binary patch. It + is for the module /etc/conf/pack.d/kernel/os.o. I disassembled the + original and then the fixed version of os.o and ran a context diff + over the output. Depending on what version of the kernel config kit + you have the addresses might be off some bytes. You can apply this + patch with every binary file editor. + + *************** + *** 35349,35364 **** + [%al,%al] + cf71: 74 1e je 0x1e + [0xcf91] + ! cf73: 0f b7 07 movzwl (%edi),%eax + [%edi,%eax] + ! cf76: 3d 11 00 00 00 cmpl $0x11,%eax + [$0x11,%eax] + ! cf7b: 74 14 je 0x14 + [0xcf91] + ! cf7d: c7 45 e8 00 00 00 00 movl $0x0,0xe8(%ebp) + ! [$0x0,-24+%ebp] + ! cf84: eb 19 jmp 0x19 + ! [0xcf9f] + cf86: 90 nop + [] + cf87: 90 nop + --- 35349,35372 ---- + [%al,%al] + cf71: 74 1e je 0x1e + [0xcf91] + ! cf73: 85 ff testl %edi,%edi + ! [%edi,%edi] + ! cf75: 74 1a je 0x1a + ! [0xcf91] + ! cf77: 0f b7 07 movzwl (%edi),%eax + [%edi,%eax] + ! cf7a: 3d 11 00 00 00 cmpl $0x11,%eax + [$0x11,%eax] + ! cf7f: 74 10 je 0x10 + [0xcf91] + ! cf81: eb 15 jmp 0x15 + ! [0xcf98] + ! cf83: 90 nop + ! [] + ! cf84: 90 nop + ! [] + ! cf85: 90 nop + ! [] + cf86: 90 nop + [] + cf87: 90 nop + + I'm not absolutely sure whether the action that is now taken in case of + a NULL pointer is the right one, but I haven't noticed any problems, + and most important, there are no more kernel panics! At least not from + that spot. :-) The action that is taken if the pointer in _not_ NULL + hasn't changed (this is not very obvious from the patch, but look + in the disassembler listing of your own kernel for more details). + I use this modified kernel for over a week now and it works for + me. Of course, as always, I can't give you any guaranty that this + patch does something useful on your machine. :-) + + Hope this helps you. + + Uwe + + PS: ISC, if you see this posting, could you drop me a note on whether + you have put this on your to-do list? This would save me the time + needed to file an official bug report. + -- + Uwe Doering | INET : gemini@geminix.in-berlin.de + Berlin |---------------------------------------------------------------- + Germany | UUCP : ...!unido!fub!geminix.in-berlin.de!gemini + ======================================================================= + + +Here is a copy of my recent note to Uwe: + + + I've applied the binary patch that you recently poosted to comp.unix.sysv386 + for os.o. + + It works beautifully. Previously, I had compiled bash1.07CWRU, and it worked + well (using POSIX job control), job control and all -- but running VP/ix under + this bash caused a system panic. This evidently is the (now infamous) "POSIX + namei bug". After rebuilding the kernel with a patched os.o, the problem + simply disappeared. VP/ix, like everything else, now works fine under + bash1.07CWRU. + + + Yours sincerely, + + Saul Lubkin + + diff --git a/bash-20060316/CWRU/OS-BUGS/next-rlogind-bug b/bash-20060316/CWRU/OS-BUGS/next-rlogind-bug new file mode 100644 index 000000000..09d0c3131 --- /dev/null +++ b/bash-20060316/CWRU/OS-BUGS/next-rlogind-bug @@ -0,0 +1,63 @@ +From chet@odin.INS.CWRU.Edu Thu Mar 7 19:16:25 1991 +Flags: 50 +Received: from odin.INS.CWRU.Edu by usenet.INS.CWRU.Edu with SMTP (5.61+ida+/CWRU-1.4-UUCPGW) + id AA00967; Thu, 7 Mar 91 19:16:25 -0500 (from chet@odin.INS.CWRU.Edu for /usr/local/bin/m2mbox /usr/homes/chet/mbox) +Received: by odin.INS.CWRU.Edu (5.65+ida+/CWRU-1.4-ins) + id AA04437; Thu, 7 Mar 91 19:15:31 -0500 (from chet for chet@usenet.INS.CWRU.Edu) +Date: Thu, 7 Mar 91 19:10:00 -0500 +From: Chet Ramey +To: jacob@blackbox.gore.com +Subject: Re: Library function redefinition +Cc: chet@odin.INS.CWRU.Edu, bfox@ai.mit.edu +Reply-To: chet@po.CWRU.Edu +In-Reply-To: Message from jacob@blackbox.gore.com of Sun, 3 Mar 91 19:18:54 MST +Message-Id: <9103080010.AA04427.SM@odin.INS.CWRU.Edu> +Read-Receipt-To: chet@po.CWRU.Edu + +> Now that you're working on bash for NeXT, let me ask you if you've run into +> this bug under 2.0: bash, as a login shell, hangs on rlogin into the NeXT. +> But it works fine on telnet. On rlogin, I even get no output to stdout +> from the 'tset' (or debugging 'echo's) in my startup files. + +It's getting stuck in initialize_jobs (). There is a bug in the NeXT +/usr/etc/rlogind that causes bash to be started with the terminal still +belonging to the rlogind process, and its process group set to 0 (so +that getpgrp() returns 0 (!)). It looks like there's a stray setpgrp(0, 0) +in the rlogind code that NeXT is not handling like 4.3 BSD. + +(Another bug that I've found with NeXT 2.0 is that Terminal starts up the +shell underneath it with argc == 0 and argv[0] = "-". Not polite. +`mount -vat nfs' seems to be broken too. Any more good ones I should look +for?) + +Here's a diff to jobs.c to work around it. Your line numbers will certainly +vary (for all I know, the code might, too). + +Chet + +*** jobs.c~ Tue Mar 5 17:41:00 1991 +--- jobs.c Thu Mar 7 18:50:12 1991 +*************** +*** 1839,1842 **** +--- 1839,1852 ---- + } + ++ #if defined (NeXT) ++ /* This is to compensate for a bug in the NeXT 2.0 /usr/etc/rlogind. */ ++ if (shell_pgrp == 0) ++ { ++ shell_pgrp = getpid (); ++ setpgid (0, shell_pgrp); ++ tcsetpgrp (shell_tty, shell_pgrp); ++ } ++ #endif /* NeXT */ ++ + while ((terminal_pgrp = tcgetpgrp (shell_tty)) != -1) + { + +-- +Chet Ramey ``Now, somehow we've brought our sins +Network Services Group back physically -- and they're +Case Western Reserve University pissed.'' +chet@ins.CWRU.Edu My opinions are just those, and mine alone. + diff --git a/bash-20060316/CWRU/OS-BUGS/sco-3.2.4-bug b/bash-20060316/CWRU/OS-BUGS/sco-3.2.4-bug new file mode 100644 index 000000000..7378d3c2c --- /dev/null +++ b/bash-20060316/CWRU/OS-BUGS/sco-3.2.4-bug @@ -0,0 +1,57 @@ +From gnulists@ai.mit.edu Mon Feb 22 20:41:24 1993 +Flags: 50 +Received: from po.CWRU.Edu by odin.INS.CWRU.Edu with SMTP (5.65b+ida+/CWRU-1.5.4-ins) + id AA17713; Mon, 22 Feb 93 20:41:24 -0500 (from gnulists@ai.mit.edu for /usr/homes/chet/bin/mailfilter.sh /usr/homes/chet/mbox) +Return-Path: +Received: from life.ai.mit.edu by po.CWRU.Edu with SMTP (5.65b+ida+/CWRU-1.9) + id AA29616; Mon, 22 Feb 93 20:41:17 -0500 (from gnulists@ai.mit.edu for chet@odin.INS.CWRU.Edu) +Received: from raisin-nut (raisin-nut.ai.mit.edu) by life.ai.mit.edu (4.1/AI-4.10) id AA01858; Mon, 22 Feb 93 20:40:47 EST +Received: by raisin-nut (4.1/AI-4.10) id AA06708; Mon, 22 Feb 93 20:40:46 EST +Resent-Date: Mon, 22 Feb 1993 13:29:57 -0500 +Resent-Message-Id: <9302230140.AA06708@raisin-nut> +Received: from odin.INS.CWRU.Edu by life.ai.mit.edu (4.1/AI-4.10) id AA19283; Mon, 22 Feb 93 13:36:48 EST +Received: by odin.INS.CWRU.Edu (5.65b+ida+/CWRU-1.5.4-ins) + id AA27765; Mon, 22 Feb 93 13:36:44 -0500 (from chet for bug-bash@prep.ai.mit.edu) +Date: Mon, 22 Feb 1993 13:29:57 -0500 +From: Chet Ramey +Sender: gnulists@ai.mit.edu +To: pat@bcserv.wustl.edu +Subject: Re: bash for SCO Unix 3.2.2/4 +Cc: bug-bash@prep.ai.mit.edu, chet@odin.ins.cwru.edu +Reply-To: chet@po.cwru.edu +In-Reply-To: Message from pat@bcserv.wustl.edu of 22 Feb 93 06:23:34 GMT (id ) +Message-Id: <9302221829.AA27553.SM@odin.INS.CWRU.Edu> +Read-Receipt-To: chet@po.CWRU.Edu +Mime-Version: 1.0 +Content-Type: text/plain; charset=us-ascii +Resent-From: bug-bash-request@prep.ai.mit.edu + +> I've had no luck making either bash-1.11 or bash-1.12 for +> SCO Unix v 3.2.2 or 3.2.4... +> +> bash-1.12 says (specifically) that it's making for 3.2.2, but +> still has problems. +> +> It locks up after a few commnds... +> +> I don't have GCC right now, so I did have to tell it that I don't +> have 'alloca' by undefining it in machines.h - if that could be a problem. + +You can't run bash-1.12 on a 3.2.4 system if it's been compiled on a +3.2.2 system. Bash contains a fix for the broken sigsuspend in 3.2.2 +that breaks bash on 3.2.4, because 3.2.4 has the bug fixed. + +Bash 1.12 should build and run OK out of the box on 3.2.2. For 3.2.4 +you need to locate the code at around line 1250 of jobs.c and change +#if !defined (SCO) to #if 1 so that sigsuspend is used. Then take out +the SCO defines in flush_child(). + +Chet + +-- +``The use of history as therapy means the corruption of history as history.'' + -- Arthur Schlesinger + +Chet Ramey, Case Western Reserve University Internet: chet@po.CWRU.Edu + + diff --git a/bash-20060316/CWRU/OS-BUGS/sequent-fcntl-dup2-bug b/bash-20060316/CWRU/OS-BUGS/sequent-fcntl-dup2-bug new file mode 100644 index 000000000..7676d495b --- /dev/null +++ b/bash-20060316/CWRU/OS-BUGS/sequent-fcntl-dup2-bug @@ -0,0 +1,28 @@ +From chet@odin.INS.CWRU.Edu Fri May 3 17:22:41 1991 +Flags: 50 +Received: from odin.INS.CWRU.Edu by usenet.INS.CWRU.Edu with SMTP (5.65b+ida+/CWRU-1.5-UUCPGW) + id AA22515; Fri, 3 May 91 17:22:41 -0400 (from chet@odin.INS.CWRU.Edu for /usr/local/bin/m2mbox /usr/homes/chet/mbox) +Received: by odin.INS.CWRU.Edu (5.65b+ida+/CWRU-1.4-ins) + id AA07171; Fri, 3 May 91 17:22:21 -0400 (from chet for chet@usenet.INS.CWRU.Edu) +Date: Fri, 3 May 91 17:18:03 -0400 +From: Chet Ramey +To: jp@lysator.liu.se +Subject: fixed sequent bug +Cc: chet@odin.INS.CWRU.Edu +Reply-To: chet@po.CWRU.Edu +Message-Id: <9105032118.AA07167.SM@odin.INS.CWRU.Edu> +Read-Receipt-To: chet@po.CWRU.Edu + + +I fixed it. Sequent's fcntl and dup2 are both messed up. They do not set +the new descriptor to be open-on-exec. For dup2 it's OK; that's the way +4.2 BSD did it. fcntl doing it is a bug, and a bad one. + +Chet + +-- +Chet Ramey Internet: chet@po.CWRU.Edu +Case Western Reserve University NeXT Mail: chet@macbeth.INS.CWRU.Edu + +``Now, somehow we've brought our sins back physically -- and they're pissed.'' + diff --git a/bash-20060316/CWRU/OS-BUGS/sun-yp-bug b/bash-20060316/CWRU/OS-BUGS/sun-yp-bug new file mode 100644 index 000000000..5b84ec007 --- /dev/null +++ b/bash-20060316/CWRU/OS-BUGS/sun-yp-bug @@ -0,0 +1,52 @@ +From chet Mon Jul 27 14:54:45 1992 +Flags: 50 +Received: by odin.INS.CWRU.Edu (5.65b+ida+/CWRU-1.5-ins) + id AA15494; Mon, 27 Jul 92 14:54:45 -0400 (from chet for /usr/homes/chet/bin/mailfilter.sh /usr/homes/chet/mbox) +Date: Mon, 27 Jul 1992 14:29:55 -0400 +From: Chet Ramey +To: stud7b43@x400gate.bnr.ca +Subject: Re: Bug in Bash 1.12.1 +Cc: bug-bash@ai.mit.edu, chet +Reply-To: chet@po.CWRU.Edu +In-Reply-To: Message from stud7b43@x400gate.bnr.ca of Mon, 27 Jul 1992 12:30:00 +0000 +Message-Id: <9207271829.AA14484.SM@odin.INS.CWRU.Edu> +Read-Receipt-To: chet@po.CWRU.Edu + +> I seem to have found a bug in Bash. +> +> How to cause the bug to appear: +> 1) Start a long username-completion, e.g. +> cat ~user +> Let it run for a while (don't know exactly how long...) +> Before it's finished, hit ^C (or whatever the break character +> is set to) +> 2) As the next command, run a filename completion with a username in it, eg. +> cat ~username/.log +> +> Error message: "free: Called with already freed block argument + +This is a bug in the Sun YP code that everyone seems to have picked up. + +Sun keeps static state in the YP library code -- a pointer into the +data returned from the server. When YP initializes itself (setpwent), +it looks at this pointer and calls free on it if it's non-null. So far, +so good. + +If one of the YP functions is interrupted during getpwent (the exact function +is interpretwithsave()), and returns NULL, the pointer is freed without being +reset to NULL, and the function returns. The next time getpwent is called, +it sees that this pointer is non-null, calls free, and the Gnu free() +blows up because it's being asked to free freed memory. + +The traditional Unix mallocs allow memory to be freed multiple times; that's +probably why this has never been fixed. You can probably stop it by adding +an #undef USE_GNU_MALLOC to the appropriate machine description in machines.h. + +Chet + +-- +``The use of history as therapy means the corruption of history as history.'' + -- Arthur Schlesinger + +Chet Ramey, Case Western Reserve University Internet: chet@po.CWRU.Edu + diff --git a/bash-20060316/CWRU/OS-BUGS/ultrix-bugs b/bash-20060316/CWRU/OS-BUGS/ultrix-bugs new file mode 100644 index 000000000..f9fb82c6c --- /dev/null +++ b/bash-20060316/CWRU/OS-BUGS/ultrix-bugs @@ -0,0 +1,74 @@ +From chet@odin.INS.CWRU.Edu Fri Dec 21 10:56:27 1990 +Flags: 50 +Received: from odin.INS.CWRU.Edu by usenet.INS.CWRU.Edu with SMTP (5.61+ida+/CWRU-1.3-UUCPGW) + id AA27089; Fri, 21 Dec 90 10:56:27 -0500 (from chet@odin.INS.CWRU.Edu for /usr/local/bin/m2mbox.test /usr/homes/chet/mbox) +Received: by odin.INS.CWRU.Edu (5.61+ida+/CWRU-1.4-ins) + id AA17558; Fri, 21 Dec 90 10:56:18 -0500 (from chet for chet@usenet.INS.CWRU.Edu) +Date: Fri, 21 Dec 90 10:36:58 -0500 +From: Chet Ramey +To: dbrooks@osf.org +Subject: Re: bash and OSF/1 +Cc: chet@odin.INS.CWRU.Edu +Reply-To: chet@po.CWRU.Edu +In-Reply-To: Message from dbrooks@osf.org of Fri, 21 Dec 90 10:28:26 EST +Message-Id: <9012211536.AA17531.SM@odin.ins.cwru.edu> +Read-Receipt-To: chet@po.CWRU.Edu + +> Michael Meissner has been suddenly asked to do Real Work (TM) so it's +> unlikely he'll get to do anything with OSF/1 until the new year. We +> talked about it, however, and there are a few issues. + +Not (gasp) Real Work! + +> The upshot of the above is: expect a block of #defines based on +> __OSF1__, and expect it possibly not to work under all +> implementations. + +Works for me. + +> I have two new bugs for you in 1.06. +> +> - Typeahead is very weird. Often, I will be in a state where a +> command is busy, and I type a new one. The shell prompts and +> nothing happens; I have to type the line again. Later, if I enter +> an interactive command (such as "mail") the missing keystrokes get +> delivered to it instead. This is on a pmax, Ultrix 3.1, with some +> patches of my own and Michael's fignore patch (that may have caused +> it; I haven't investigated yet. Just wanted to see if this rang a bell.) + +Typeahead under Ultrix is wierd. This doesn't happen anywhere else. Here's +what it does for me: + +cwjcc$ sleep 4 +echo hi ; echo hi <----- typeahead while sleeping +cwjcc$ <----- nothing comes out +cwjcc$ more readline.c +readline.c: No such file or directory +cwjcc$ echo hi ; echo hi <----- now it does... +hi +hi + +I'll look at it today. + +> - The sequence +> echo foo > /dev/tty +> cat bar +> produces: +> cat: write error: Bad file number + +This only happens under Ultrix, too. It's another consequence of Dec's +dup2 fuckup (I am *really*pissed*off* about it; it's caused me to waste a +lot of time already). File descriptor 1 is getting set to close-on-exec. +I haven't decided whether to hack around it in the code or to just make +Ultrix use the dup2 emulation in general.c. + +Cheers, + +Chet + +-- +Chet Ramey ``I die, Horatio'' +Network Services Group, Case Western Reserve University +chet@ins.CWRU.Edu + My opinions are just those, and mine alone. + diff --git a/bash-20060316/CWRU/PLATFORMS b/bash-20060316/CWRU/PLATFORMS new file mode 100644 index 000000000..f05caff56 --- /dev/null +++ b/bash-20060316/CWRU/PLATFORMS @@ -0,0 +1,31 @@ +The version of bash in this directory has been compiled on the +following systems: + +By chet: + +SunOS 4.1.4 +SunOS 5.5 +BSDI BSD/OS 2.1 +FreeBSD 2.2 +NetBSD 1.2 +AIX 4.2 +AIX 4.1.4 +HP/UX 9.05, 10.01, 10.10, 10.20 +Linux 2.0.29 (libc 5.3.12) +Linux 2.0.4 (libc 5.3.12) + +By other testers: + +SCO ODT 2.0 +SCO 3.2v5.0, 3.2v4.2 +SunOS 5.3 +SunOS 5.5 +BSD/OS 2.1 +FreeBSD 2.2 +SunOS 4.1.3 +Irix 5.3 +Irix 6.2 +Linux 2.0 (unknown distribution) +Digital OSF/1 3.2 +GNU Hurd 0.1 +SVR4.2 diff --git a/bash-20060316/CWRU/POSIX.NOTES.old b/bash-20060316/CWRU/POSIX.NOTES.old new file mode 100644 index 000000000..1707ab10c --- /dev/null +++ b/bash-20060316/CWRU/POSIX.NOTES.old @@ -0,0 +1,82 @@ +Starting bash with the `--posix' command-line option or executing +`set -o posix' while bash is running will cause bash to conform more +closely to the Posix.2 standard by changing the behavior to match that +specified by Posix.2 in areas where the bash default differs. + +The following list is what's changed when `posix mode' is in effect: + +1. When a command in the hash table no longer exists, bash will re-search + $PATH to find the new location. This is also available with + `shopt -s checkhash'. + +2. The >& redirection does not redirect stdout and stderr. + +3. The message printed by the job control code and builtins when a job + exits with a non-zero status is `Done(status)'. + +4. Reserved words may not be aliased. + +5. The Posix.2 PS1 and PS2 expansions of `!' -> history number and + `!!' -> `!' are enabled, and parameter expansion is performed on + the value regardless of the setting of the `promptvars' option. + +6. Interactive comments are enabled by default. (Note that bash has + them on by default anyway.) + +7. The Posix.2 startup files are executed ($ENV) rather than the normal + bash files. + +8. Tilde expansion is only performed on assignments preceding a command + name, rather than on all assignment statements on the line. + +9. The default history file is ~/.sh_history (default value of $HISTFILE). + +10. The output of `kill -l' prints all the signal names on a single line, + separated by spaces. + +11. Non-interactive shells exit if `file' in `. file' is not found. + +12. Redirection operators do not perform pathname expansion on the word + in the redirection unless the shell is interactive + +13. Function names must be valid shell identifiers. That is, they may not + contain characters other than letters, digits, and underscores, and + may not start with a digit. Declaring a function with an illegal name + causes a fatal syntax error in non-interactive shells. + +14. Posix.2 `special' builtins are found before shell functions during command + lookup. + +15. If a Posix.2 special builtin returns an error status, a non-interactive + shell exits. The fatal errors are those listed in the POSIX.2 standard, + and include things like passing incorrect options, redirection errors, + variable assignment errors for assignments preceding the command name, + and so on. + +16. The environment passed to executed commands is not sorted. Neither is + the output of `set'. This is not strictly Posix.2 behavior, but sh + does it this way. Ksh does not. It's not necessary to sort the + environment; no program should rely on it being sorted. + +17. If the `cd' builtin finds a directory to change to using $CDPATH, the + value it assigns to $PWD does not contain any symbolic links, as if + `cd -P' had been executed. + +18. A non-interactive shell exits with an error status if a variable + assignment error occurs when no command name follows the assignment + statements. A variable assignment error occurs, for example, when + trying to assign a value to a read-only variable. + +19. A non-interactive shell exits with an error status if the iteration + variable in a for statement or the selection variable in a select + statement is a read-only variable. + +20. Process substitution is not available. + +21. Assignment statements preceding POSIX.2 `special' builtins persist in + the shell environment after the builtin completes. + +There is other Posix.2 behavior that bash does not implement. Specifically: + +1. Assignment statements affect the execution environment of all builtins, + not just special ones. diff --git a/bash-20060316/CWRU/README b/bash-20060316/CWRU/README new file mode 100644 index 000000000..7d7ca1ab3 --- /dev/null +++ b/bash-20060316/CWRU/README @@ -0,0 +1,20 @@ +Contents of this directory: + +changelog - my change log since the last release + +POSIX.NOTES - list of what changes for `posix mode' + +README - this file + +misc - directory with some useful tools + +The following are distributed `as-is'. They will not apply without some +modification. + +sh-redir-hack - diff to parse.y to get redirections before + compound commands + +empty-for-wordlist - diff to parse.y to allow an empty wordlist after + the `in' keyword in a `for' statement + +mh-folder-comp - diffs that reportedly add MH folder completion diff --git a/bash-20060316/CWRU/changelog b/bash-20060316/CWRU/changelog new file mode 120000 index 000000000..d2d81b302 --- /dev/null +++ b/bash-20060316/CWRU/changelog @@ -0,0 +1 @@ +CWRU.chlog \ No newline at end of file diff --git a/bash-20060316/CWRU/history-syslog.1 b/bash-20060316/CWRU/history-syslog.1 new file mode 100644 index 000000000..d5240d371 --- /dev/null +++ b/bash-20060316/CWRU/history-syslog.1 @@ -0,0 +1,47 @@ +#Date: Mon, 14 Dec 1998 23:10:43 -0800 +#From: John Kinsella +#To: chet@po.cwru.edu +#Subject: Re: bash patch + +diff -c bash-2.02.1-old/bashhist.c bash-2.02.1/bashhist.c +*** bash-2.02.1-old/bashhist.c Fri Feb 27 09:34:33 1998 +--- bash-2.02.1/bashhist.c Mon Dec 14 22:39:23 1998 +*************** +*** 50,55 **** +--- 50,65 ---- + # include "bashline.h" + #endif + ++ /* SYSLOG_HISTORY - define this if you want all commands entered into ++ * the shell to be echoed to syslog. ++ * (feature added by John Kinsella) ++ */ ++ #define SYSLOG_HISTORY 1 ++ ++ #if defined (SYSLOG_HISTORY) ++ # include ++ #endif ++ + #if !defined (errno) + extern int errno; + #endif +*************** +*** 566,571 **** +--- 576,587 ---- + { + hist_last_line_added = 1; + add_history (line); ++ /* next 3 lines added by John Kinsella ++ * Sends history line to syslog. ++ */ ++ #if defined( SYSLOG_HISTORY ) ++ syslog( LOG_INFO, "%d - %s", current_user.euid, line ); ++ #endif + history_lines_this_session++; + } + using_history (); +# +#-- +#John Kinsella UNIX ISA +#jlk@digex.net DIGEX West Coast Facility +#voice 408-873-4278 pager 888-751-7595 diff --git a/bash-20060316/CWRU/mh-folder-comp b/bash-20060316/CWRU/mh-folder-comp new file mode 100644 index 000000000..905000c7a --- /dev/null +++ b/bash-20060316/CWRU/mh-folder-comp @@ -0,0 +1,449 @@ +From jwe@che.utexas.edu Wed Sep 21 17:23:40 1994 +Flags: 10 +Return-Path: jwe@che.utexas.edu +Received: from po.CWRU.Edu (root@po.CWRU.Edu [129.22.4.2]) by odin.INS.CWRU.Edu with ESMTP (8.6.8.1+cwru/CWRU-2.1-ins) + id RAA04010; Wed, 21 Sep 1994 17:23:39 -0400 (from jwe@che.utexas.edu for ) +Received: from life.ai.mit.edu (life.ai.mit.edu [128.52.32.80]) by po.CWRU.Edu with SMTP (8.6.8.1+cwru/CWRU-2.2) + id RAA02121; Wed, 21 Sep 1994 17:23:28 -0400 (from jwe@che.utexas.edu for ) +Received: from schoch.che.utexas.edu by life.ai.mit.edu (4.1/AI-4.10) for chet@po.cwru.edu id AA09989; Wed, 21 Sep 94 17:23:17 EDT +Received: from localhost (jwe@localhost) by schoch.che.utexas.edu (8.6.8.1/8.6) with SMTP id QAA05737; Wed, 21 Sep 1994 16:22:01 -0500 +Message-Id: <199409212122.QAA05737@schoch.che.utexas.edu> +To: march@tudor.com +Cc: bug-bash@prep.ai.mit.edu +Subject: Re: Completion feature possible? +In-Reply-To: Your message of 21 Sep 94 13:30:22 EDT +Date: Wed, 21 Sep 94 16:22:00 EDT +From: John Eaton + +Gregory F. March wrote: + +: I was having a discussion about MH with one of my friends the other +: day and I got to thinking that the +folder/subfolder scheme for naming +: mail folders is a real pain because completion doesn't work on +: them. Someone then mentioned that zsh (I think) has the ability to +: specify how to complete (I guess where to look for the files) for +: different prefixes. Bash right now knows about '@', '~', and '$' (any +: others?). It would be really helpful if one could define something +: like: +: +: completion '+' "$HOME/Mail" +: +: in a config file someplace. Would this be easy? Is there a list of +: TODO item that someone might want to add this to? + +It would be nice to have a general completion feature like this. + +Until that happens, maybe you will find the following patch useful. +It makes MH folder name completion work with bash. The diffs are +relative to version 1.14.2. + +I realize that changes to readline.c and and complete.c are not good +since they add some MH-specific stuff to the readline code and not to +bash, but when I first wrote this, I had no idea what else to do. + +Chet, would you consider adding this if it were cleaned up a bit? +Made optional with cpp conditionals? + +This feature has been very useful to me for the last several years +(since about 1.05 or 1.06, I think). + +Thanks, + +-- +John W. Eaton | 4.3BSD is not perfect. -- Leffler, et al. (1989). +jwe@che.utexas.edu | + + +-------------------------------cut here------------------------------- +diff -rc bash-1.14.2/bashline.c bash-1.14.2.local/bashline.c +*** bash-1.14.2/bashline.c Wed Aug 3 09:32:45 1994 +--- bash-1.14.2.local/bashline.c Wed Sep 21 15:39:04 1994 +*************** +*** 58,63 **** +--- 58,64 ---- + static char *hostname_completion_function (); + static char *command_word_completion_function (); + static char *command_subst_completion_function (); ++ static char *mh_folder_completion_function (); + + static void snarf_hosts_from_file (), add_host_name (); + static void sort_hostname_list (); +*************** +*** 90,95 **** +--- 91,98 ---- + bash_complete_username_internal (), + bash_complete_hostname (), bash_possible_hostname_completions (), + bash_complete_hostname_internal (), ++ bash_complete_mh_folder (), bash_possible_mh_folder_completions (), ++ bash_complete_mh_folder_internal (), + bash_complete_variable (), bash_possible_variable_completions (), + bash_complete_variable_internal (), + bash_complete_command (), bash_possible_command_completions (), +*************** +*** 134,140 **** + rl_terminal_name = get_string_value ("TERM"); + rl_instream = stdin; + rl_outstream = stderr; +! rl_special_prefixes = "$@"; + + /* Allow conditional parsing of the ~/.inputrc file. */ + rl_readline_name = "Bash"; +--- 137,143 ---- + rl_terminal_name = get_string_value ("TERM"); + rl_instream = stdin; + rl_outstream = stderr; +! rl_special_prefixes = "$@+"; + + /* Allow conditional parsing of the ~/.inputrc file. */ + rl_readline_name = "Bash"; +*************** +*** 193,198 **** +--- 196,207 ---- + rl_bind_key_in_map ('@', bash_possible_hostname_completions, + emacs_ctlx_keymap); + ++ rl_add_defun ("complete-mh-folder", bash_complete_mh_folder, META('+')); ++ rl_add_defun ("possible-mh-folder-completions", ++ bash_possible_mh_folder_completions, -1); ++ rl_bind_key_in_map ('+', bash_possible_mh_folder_completions, ++ emacs_ctlx_keymap); ++ + rl_add_defun ("complete-variable", bash_complete_variable, -1); + rl_bind_key_in_map ('$', bash_complete_variable, emacs_meta_keymap); + rl_add_defun ("possible-variable-completions", +*************** +*** 656,661 **** +--- 665,677 ---- + if (!matches && *text == '@') + matches = completion_matches (text, hostname_completion_function); + ++ /* Another one. Why not? If the word starts in '+', then look for ++ matching mh folders for completion first. */ ++ if (!matches && *text == '+') ++ { ++ matches = completion_matches (text, mh_folder_completion_function); ++ } ++ + /* And last, (but not least) if this word is in a command position, then + complete over possible command names, including aliases, functions, + and command names. */ +*************** +*** 1077,1082 **** +--- 1093,1185 ---- + return ((char *)NULL); + } + ++ /* How about a completion function for mh folders? */ ++ static char * ++ mh_folder_completion_function (text, state) ++ int state; ++ char *text; ++ { ++ extern int rl_filename_completion_desired; ++ ++ extern char *get_mh_path (); ++ ++ static char *mh_path = (char *)NULL; ++ static int len; ++ static int istate; ++ static char *val; ++ char *hint; ++ ++ static char *mh_folder_hint = (char *)NULL; ++ ++ /* If we don't have any state, make some. */ ++ if (!state) ++ { ++ val = (char *)NULL; ++ ++ if (mh_path) ++ free (mh_path); ++ ++ mh_path = get_mh_path (); ++ if (!mh_path && !(hint[1] == '/' || hint[1] == '.')) ++ return ((char *)NULL); ++ ++ len = strlen (mh_path); ++ } ++ ++ if (mh_folder_hint) ++ free (mh_folder_hint); ++ ++ hint = text; ++ if (*hint == '+') ++ hint++; ++ ++ mh_folder_hint = (char *)xmalloc (2 + len + strlen (hint)); ++ if (*hint == '/' || *hint == '.') { ++ len = -1; ++ sprintf (mh_folder_hint, "%s", hint); ++ } else ++ sprintf (mh_folder_hint, "%s/%s", mh_path, hint); ++ ++ istate = (val != (char *)NULL); ++ ++ again: ++ val = filename_completion_function (mh_folder_hint, istate); ++ istate = 1; ++ ++ if (!val) ++ { ++ return ((char *)NULL); ++ } ++ else ++ { ++ char *ptr = val + len + 1, *temp; ++ struct stat sb; ++ int status = stat (val, &sb); ++ ++ if (status != 0) ++ return ((char *)NULL); ++ ++ if ((sb.st_mode & S_IFDIR) == S_IFDIR) ++ { ++ temp = (char *)xmalloc (2 + strlen (ptr)); ++ *temp = '+'; ++ strcpy (temp + 1, ptr); ++ ++ free (val); ++ val = ""; ++ ++ rl_filename_completion_desired = 1; ++ ++ return (temp); ++ } ++ else ++ { ++ free (val); ++ } ++ goto again; ++ } ++ } ++ + /* History and alias expand the line. */ + static char * + history_expand_line_internal (line) +*************** +*** 1628,1633 **** +--- 1731,1773 ---- + { + bash_specific_completion + (what_to_do, (Function *)username_completion_function); ++ } ++ ++ static void ++ bash_complete_mh_folder (ignore, ignore2) ++ int ignore, ignore2; ++ { ++ bash_complete_mh_folder_internal (TAB); ++ } ++ ++ static void ++ bash_possible_mh_folder_completions (ignore, ignore2) ++ int ignore, ignore2; ++ { ++ bash_complete_mh_folder_internal ('?'); ++ } ++ ++ static void ++ bash_complete_mh_folder_internal (what_to_do) ++ int what_to_do; ++ { ++ Function *orig_func; ++ CPPFunction *orig_attempt_func; ++ char *orig_rl_completer_word_break_characters; ++ extern char *rl_completer_word_break_characters; ++ ++ orig_func = rl_completion_entry_function; ++ orig_attempt_func = rl_attempted_completion_function; ++ orig_rl_completer_word_break_characters = rl_completer_word_break_characters; ++ rl_completion_entry_function = (Function *)mh_folder_completion_function; ++ rl_attempted_completion_function = (CPPFunction *)NULL; ++ rl_completer_word_break_characters = " \t\n\"\'"; ++ ++ rl_complete_internal (what_to_do); ++ ++ rl_completion_entry_function = orig_func; ++ rl_attempted_completion_function = orig_attempt_func; ++ rl_completer_word_break_characters = orig_rl_completer_word_break_characters; + } + + static void +Only in bash-1.14.2.local: bashline.c.orig +diff -rc bash-1.14.2/lib/readline/complete.c bash-1.14.2.local/lib/readline/complete.c +*** bash-1.14.2/lib/readline/complete.c Tue Jul 26 12:59:57 1994 +--- bash-1.14.2.local/lib/readline/complete.c Wed Sep 21 15:41:19 1994 +*************** +*** 733,751 **** + if (rl_filename_completion_desired) + { + struct stat finfo; +! char *filename = tilde_expand (matches[0]); + +! if ((stat (filename, &finfo) == 0) && S_ISDIR (finfo.st_mode)) + { +! if (rl_line_buffer[rl_point] != '/') +! rl_insert_text ("/"); + } +! else + { +! if (rl_point == rl_end) +! rl_insert_text (temp_string); + } +- free (filename); + } + else + { +--- 733,768 ---- + if (rl_filename_completion_desired) + { + struct stat finfo; +! char *tilde_expand (); +! char *plus_expand (); +! char *filename = (char *) NULL; + +! switch (*matches[0]) + { +! case '+': +! filename = plus_expand (matches[0]); +! break; +! case '~': +! default: +! filename = tilde_expand (matches[0]); +! break; + } +! +! if (filename) + { +! if ((stat (filename, &finfo) == 0) +! && S_ISDIR (finfo.st_mode)) +! { +! if (rl_line_buffer[rl_point] != '/') +! rl_insert_text ("/"); +! } +! else +! { +! if (rl_point == rl_end) +! rl_insert_text (temp_string); +! } +! free (filename); + } + } + else + { +Only in bash-1.14.2.local/lib/readline: diffs +diff -rc bash-1.14.2/lib/readline/readline.c bash-1.14.2.local/lib/readline/readline.c +*** bash-1.14.2/lib/readline/readline.c Fri Aug 12 12:47:46 1994 +--- bash-1.14.2.local/lib/readline/readline.c Wed Sep 21 15:36:07 1994 +*************** +*** 23,28 **** +--- 23,29 ---- + #define READLINE_LIBRARY + + #include ++ #include + #include + #include + #if !defined (NO_SYS_FILE) +*************** +*** 3518,3523 **** +--- 3519,3616 ---- + } + + #endif /* TEST */ ++ ++ #define cr_whitespace(c) ((c) == '\r' || (c) == '\n' || whitespace(c)) ++ ++ char * ++ get_mh_path () ++ { ++ static FILE *fp = (FILE *)NULL; ++ char buf[512]; /* XXX */ ++ char profile[512]; /* XXX */ ++ char *bp; ++ char *temp_home; ++ char *temp_path; ++ ++ temp_home = (char *)getenv ("HOME"); ++ if (!temp_home) ++ return ((char *)NULL); ++ ++ strcpy (profile, temp_home); ++ strcat (profile, "/.mh_profile"); ++ ++ if (fp) ++ fclose (fp); ++ ++ fp = fopen (profile, "r"); ++ if (fp == (FILE *)NULL) ++ return ((char *)NULL); ++ ++ while (fgets (buf, 512, fp) != (char *)NULL) /* XXX */ ++ { ++ if ((bp = strstr (buf, "Path:")) != (char *)NULL) ++ { ++ bp += 5; ++ while (whitespace (*bp)) ++ bp++; ++ ++ if (*bp == '\0') ++ return ((char *)NULL); ++ ++ temp_path = (char *)xmalloc (3 + strlen (bp) + strlen (temp_home)); ++ ++ strcpy (temp_path, temp_home); ++ strcat (temp_path, "/"); ++ strcat (temp_path, bp); ++ ++ bp = temp_path; ++ ++ while (!(cr_whitespace (*bp))) ++ bp++; ++ ++ *bp = '\0'; ++ ++ return temp_path; ++ } ++ } ++ ++ return ((char *)NULL); ++ } ++ ++ /* Expand FILENAME if it begins with a plus. This always returns ++ a new string. */ ++ char * ++ plus_expand (filename) ++ char *filename; ++ { ++ static char *dirname = (char *)NULL; ++ ++ if (filename && *filename == '+') ++ { ++ char *mh_path = get_mh_path (); ++ ++ if (filename[1] == '/' || filename[1] == '.') ++ { ++ dirname = (char *)xmalloc (1 + strlen (filename)); ++ ++ strcpy(dirname, filename+1); ++ ++ return dirname; ++ } ++ ++ if (mh_path) ++ { ++ dirname = (char *)xmalloc (1 + strlen (filename) + strlen (mh_path)); ++ ++ strcpy (dirname, mh_path); ++ strcat (dirname, "/"); ++ strcat (dirname, filename+1); ++ ++ return dirname; ++ } ++ } ++ return (char *)NULL; ++ } + + + /* + diff --git a/bash-20060316/CWRU/misc/bison b/bash-20060316/CWRU/misc/bison new file mode 100755 index 000000000..5dcd3a89d --- /dev/null +++ b/bash-20060316/CWRU/misc/bison @@ -0,0 +1,26 @@ +#! /bin/sh +# +# bison -- just call yacc +# + +# Copyright (C) 1996-2002 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 2, 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, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +if [ "$1" = '-y' ]; then + shift +fi + +exec /usr/bin/yacc ${1+"$@"} diff --git a/bash-20060316/CWRU/misc/copyright b/bash-20060316/CWRU/misc/copyright new file mode 100644 index 000000000..3780dec3d --- /dev/null +++ b/bash-20060316/CWRU/misc/copyright @@ -0,0 +1,17 @@ +/* Copyright (C) 1999 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ diff --git a/bash-20060316/CWRU/misc/errlist.c b/bash-20060316/CWRU/misc/errlist.c new file mode 100644 index 000000000..3970ba193 --- /dev/null +++ b/bash-20060316/CWRU/misc/errlist.c @@ -0,0 +1,57 @@ +/* + * If necessary, link with lib/sh/libsh.a + */ + +/* Copyright (C) 1998-2002 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#include +#include + +extern char *strerror(); + +extern int sys_nerr; + +int +main(c, v) +int c; +char **v; +{ + int i, n; + + if (c == 1) { + for (i = 1; i < sys_nerr; i++) + printf("%d --> %s\n", i, strerror(i)); + } else { + for (i = 1; i < c; i++) { + n = atoi(v[i]); + printf("%d --> %s\n", n, strerror(n)); + } + } + exit (0); +} + +programming_error(a, b) +char *a; +int b; +{ +} + +fatal_error() +{ +} diff --git a/bash-20060316/CWRU/misc/getwd.bsd44.c b/bash-20060316/CWRU/misc/getwd.bsd44.c new file mode 100644 index 000000000..f5dd39bba --- /dev/null +++ b/bash-20060316/CWRU/misc/getwd.bsd44.c @@ -0,0 +1,254 @@ +/* + * Copyright (c) 1989, 1991 The Regents of the University of California. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#if defined(LIBC_SCCS) && !defined(lint) +static char sccsid[] = "@(#)getcwd.c 5.11 (Berkeley) 2/24/91"; +#endif /* LIBC_SCCS and not lint */ + +#include +#include +#include +#if defined (HAVE_DIRENT_H) +#include +#else +#include +#endif +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif + +#ifndef HAVE_DIRENT_H +# define dirent direct +#endif + +#define ISDOT(dp) \ + (dp->d_name[0] == '.' && (dp->d_name[1] == '\0' || \ + dp->d_name[1] == '.' && dp->d_name[2] == '\0')) + +#ifndef dirfd +# define dirfd(d) ((d)->dd_fd) +#endif + +char * +getcwd(pt, size) + char *pt; + size_t size; +{ + register struct dirent *dp; + register DIR *dir; + register dev_t dev; + register ino_t ino; + register int first; + register char *bpt, *bup; + struct stat s; + dev_t root_dev; + ino_t root_ino; + size_t ptsize, upsize; + int save_errno; + char *ept, *eup, *up; + + /* + * If no buffer specified by the user, allocate one as necessary. + * If a buffer is specified, the size has to be non-zero. The path + * is built from the end of the buffer backwards. + */ + if (pt) { + ptsize = 0; + if (!size) { + errno = EINVAL; + return((char *)NULL); + } + ept = pt + size; + } else { + if (!(pt = (char *)malloc(ptsize = 1024 - 4))) + return((char *)NULL); + ept = pt + ptsize; + } + bpt = ept - 1; + *bpt = '\0'; + + /* + * Allocate bytes (1024 - malloc space) for the string of "../"'s. + * Should always be enough (it's 340 levels). If it's not, allocate + * as necessary. Special * case the first stat, it's ".", not "..". + */ + if (!(up = (char *)malloc(upsize = 1024 - 4))) + goto err; + eup = up + MAXPATHLEN; + bup = up; + up[0] = '.'; + up[1] = '\0'; + + /* Save root values, so know when to stop. */ + if (stat("/", &s)) + goto err; + root_dev = s.st_dev; + root_ino = s.st_ino; + + errno = 0; /* XXX readdir has no error return. */ + + for (first = 1;; first = 0) { + /* Stat the current level. */ + if (lstat(up, &s)) + goto err; + + /* Save current node values. */ + ino = s.st_ino; + dev = s.st_dev; + + /* Check for reaching root. */ + if (root_dev == dev && root_ino == ino) { + *--bpt = '/'; + /* + * It's unclear that it's a requirement to copy the + * path to the beginning of the buffer, but it's always + * been that way and stuff would probably break. + */ + (void)bcopy(bpt, pt, ept - bpt); + free(up); + return(pt); + } + + /* + * Build pointer to the parent directory, allocating memory + * as necessary. Max length is 3 for "../", the largest + * possible component name, plus a trailing NULL. + */ + if (bup + 3 + MAXNAMLEN + 1 >= eup) { + if (!(up = (char *)realloc(up, upsize *= 2))) + goto err; + eup = up + upsize; + } + *bup++ = '.'; + *bup++ = '.'; + *bup = '\0'; + + /* Open and stat parent directory. */ + if (!(dir = opendir(up)) || fstat(dirfd(dir), &s)) + goto err; + + /* Add trailing slash for next directory. */ + *bup++ = '/'; + + /* + * If it's a mount point, have to stat each element because + * the inode number in the directory is for the entry in the + * parent directory, not the inode number of the mounted file. + */ + save_errno = 0; + if (s.st_dev == dev) { + for (;;) { + if (!(dp = readdir(dir))) + goto notfound; + if (dp->d_fileno == ino) + break; + } + } else + for (;;) { + if (!(dp = readdir(dir))) + goto notfound; + if (ISDOT(dp)) + continue; + bcopy(dp->d_name, bup, dp->d_namlen + 1); + + /* Save the first error for later. */ + if (lstat(up, &s)) { + if (!save_errno) + save_errno = errno; + errno = 0; + continue; + } + if (s.st_dev == dev && s.st_ino == ino) + break; + } + + /* + * Check for length of the current name, preceding slash, + * leading slash. + */ + if (bpt - pt <= dp->d_namlen + (first ? 1 : 2)) { + size_t len, off; + + if (!ptsize) { + errno = ERANGE; + goto err; + } + off = bpt - pt; + len = ept - bpt; + if (!(pt = (char *)realloc(pt, ptsize *= 2))) + goto err; + bpt = pt + off; + ept = pt + ptsize; + (void)bcopy(bpt, ept - len, len); + bpt = ept - len; + } + if (!first) + *--bpt = '/'; + bpt -= dp->d_namlen; + bcopy(dp->d_name, bpt, dp->d_namlen); + (void)closedir(dir); + + /* Truncate any file name. */ + *bup = '\0'; + } + +notfound: + /* + * If readdir set errno, use it, not any saved error; otherwise, + * didn't find the current directory in its parent directory, set + * errno to ENOENT. + */ + if (!errno) + errno = save_errno ? save_errno : ENOENT; + /* FALLTHROUGH */ +err: + if (ptsize) + free(pt); + free(up); + return((char *)NULL); +} + +char * +getwd(buf) + char *buf; +{ + char *p; + + if (p = getcwd(buf, MAXPATHLEN)) + return(p); + (void)strcpy(buf, strerror(errno)); + return((char *)NULL); +} diff --git a/bash-20060316/CWRU/misc/hpux10-dlfcn.h b/bash-20060316/CWRU/misc/hpux10-dlfcn.h new file mode 100644 index 000000000..69b626ede --- /dev/null +++ b/bash-20060316/CWRU/misc/hpux10-dlfcn.h @@ -0,0 +1,63 @@ +/* + * HPUX 10.x stubs to implement dl* in terms of shl* + * + * Not needed for later versions; HPUX 11.x has dlopen() and friends. + * + * configure also needs to be faked out. You can create a dummy libdl.a + * with stub entries for dlopen, dlclose, dlsym, and dlerror: + * + * int dlopen() { return(0);} + * int dlclose() { return(0);} + * int dlsym() { return(0);} + * int dlerror() { return(0);} + * + * This has not been tested; I just read the manual page and coded this up. + * + * According to the ld manual page, you need to link bash with -dld and add + * the -E flag to LOCAL_LDFLAGS. + */ + +/* Copyright (C) 1998-2002 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#if !defined (__HPUX10_DLFCN_H__) + +#define __HPUX10_DLFCN_H__ + +#include +#include + +#ifndef errno +extern int errno; +#endif + +#define RTLD_LAZY BIND_DEFERRED +#define RTLD_NOW BIND_IMMEDIATE +#define RTLD_GLOBAL DYNAMIC_PATH + +char *bash_global_sym_addr; + +#define dlopen(file,mode) (void *)shl_load((file), (mode), 0L) + +#define dlclose(handle) shl_unload((shl_t)(handle)) + +#define dlsym(handle,name) (bash_global_sym_addr=0,shl_findsym((shl_t *)&(handle),name,TYPE_UNDEFINED,&bash_global_sym_addr), (void *)bash_global_sym_addr) + +#define dlerror() strerror(errno) + +#endif /* __HPUX10_DLFCN_H__ */ diff --git a/bash-20060316/CWRU/misc/iptrt.c b/bash-20060316/CWRU/misc/iptrt.c new file mode 100644 index 000000000..b9d1e2acb --- /dev/null +++ b/bash-20060316/CWRU/misc/iptrt.c @@ -0,0 +1,12 @@ +#include + +main() +{ + if (sizeof(char *) == sizeof(long)) + printf("long\n"); + else if (sizeof(char *) == sizeof(short)) + printf("short\n"); + else + printf("int\n"); + exit(0); +} diff --git a/bash-20060316/CWRU/misc/nofd0.c b/bash-20060316/CWRU/misc/nofd0.c new file mode 100644 index 000000000..88cae1a8b --- /dev/null +++ b/bash-20060316/CWRU/misc/nofd0.c @@ -0,0 +1,9 @@ +main(c, v, e) +int c; +char **v, **e; +{ + close(0); + execv(v[1], v+1); +} + + diff --git a/bash-20060316/CWRU/misc/open-files.c b/bash-20060316/CWRU/misc/open-files.c new file mode 100644 index 000000000..aa4ab0741 --- /dev/null +++ b/bash-20060316/CWRU/misc/open-files.c @@ -0,0 +1,35 @@ +/* open-files -- report files a process has open */ + +/* Copyright (C) 1989-2002 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#include +#include +#include +#include + +main() +{ + register int i; + + for (i = 0; i < getdtablesize(); i++) { + if (fcntl(i, F_GETFD, 0) != -1) + fprintf(stderr, "fd %d: open\n", i); + } + exit(0); +} diff --git a/bash-20060316/CWRU/misc/pcat.c b/bash-20060316/CWRU/misc/pcat.c new file mode 100644 index 000000000..f5201280d --- /dev/null +++ b/bash-20060316/CWRU/misc/pcat.c @@ -0,0 +1,239 @@ +/* $Header:cat.c 12.0$ */ +/* $ACIS:cat.c 12.0$ */ +/* $Source: /ibm/acis/usr/src/bin/RCS/cat.c,v $ */ + +#ifndef lint +static char *rcsid = "$Header:cat.c 12.0$"; +#endif + +/* + * Copyright (c) 1980 Regents of the University of California. + * All rights reserved. The Berkeley software License Agreement + * specifies the terms and conditions for redistribution. + */ + +#ifndef lint +static char sccsid[] = "@(#)cat.c 5.2 (Berkeley) 12/6/85"; +#endif not lint + +/* + * Concatenate files. + */ + +#include +#include +#include + +/* #define OPTSIZE BUFSIZ /* define this only if not 4.2 BSD or beyond */ + +int bflg, eflg, nflg, sflg, tflg, uflg, vflg; +int spaced, col, lno, inline, ibsize, obsize; + +#include + +sigpipe() +{ + write(2, "pcat: caught SIGPIPE\n", 21); + exit(1); +} + +main(argc, argv) +char **argv; +{ + int fflg = 0; + register FILE *fi; + register c; + int dev, ino = -1; + struct stat statb; + int retval = 0; + + signal(SIGPIPE, sigpipe); + lno = 1; + for( ; argc>1 && argv[1][0]=='-'; argc--,argv++) { + switch(argv[1][1]) { + case 0: + break; + case 'u': + setbuf(stdout, (char *)NULL); + uflg++; + continue; + case 'n': + nflg++; + continue; + case 'b': + bflg++; + nflg++; + continue; + case 'v': + vflg++; + continue; + case 's': + sflg++; + continue; + case 'e': + eflg++; + vflg++; + continue; + case 't': + tflg++; + vflg++; + continue; + } + break; + } + if (fstat(fileno(stdout), &statb) == 0) { + statb.st_mode &= S_IFMT; + if (statb.st_mode!=S_IFCHR && statb.st_mode!=S_IFBLK) { + dev = statb.st_dev; + ino = statb.st_ino; + } +#ifndef OPTSIZE + obsize = statb.st_blksize; +#endif + } + else + obsize = 0; + if (argc < 2) { + argc = 2; + fflg++; + } + while (--argc > 0) { + if (fflg || (*++argv)[0]=='-' && (*argv)[1]=='\0') + fi = stdin; + else { + if ((fi = fopen(*argv, "r")) == NULL) { + perror(*argv); + retval = 1; + continue; + } + } + if (fstat(fileno(fi), &statb) == 0) { + if ((statb.st_mode & S_IFMT) == S_IFREG && + statb.st_dev==dev && statb.st_ino==ino) { + fprintf(stderr, "cat: input %s is output\n", + fflg?"-": *argv); + fclose(fi); + retval = 1; + continue; + } +#ifndef OPTSIZE + ibsize = statb.st_blksize; +#endif + } + else + ibsize = 0; + if (nflg||sflg||vflg) + copyopt(fi); + else if (uflg) { + while ((c = getc(fi)) != EOF) + putchar(c); + } else + retval |= fastcat(fileno(fi)); /* no flags specified */ + if (fi!=stdin) + fclose(fi); + else + clearerr(fi); /* reset sticky eof */ + if (ferror(stdout)) { + fprintf(stderr, "cat: output write error\n"); + retval = 1; + break; + } + } + exit(retval); +} + +copyopt(f) + register FILE *f; +{ + register int c; + +top: + c = getc(f); + if (c == EOF) + return; + if (c == '\n') { + if (inline == 0) { + if (sflg && spaced) + goto top; + spaced = 1; + } + if (nflg && bflg==0 && inline == 0) + printf("%6d\t", lno++); + if (eflg) + putchar('$'); + putchar('\n'); + inline = 0; + goto top; + } + if (nflg && inline == 0) + printf("%6d\t", lno++); + inline = 1; + if (vflg) { + if (tflg==0 && c == '\t') + putchar(c); + else { + if (c > 0177) { + printf("M-"); + c &= 0177; + } + if (c < ' ') + printf("^%c", c+'@'); + else if (c == 0177) + printf("^?"); + else + putchar(c); + } + } else + putchar(c); + spaced = 0; + goto top; +} + +fastcat(fd) +register int fd; +{ + register int buffsize, n, nwritten, offset; + register char *buff; + struct stat statbuff; + char *malloc(); + +#ifndef OPTSIZE + if (obsize) + buffsize = obsize; /* common case, use output blksize */ + else if (ibsize) + buffsize = ibsize; + else + buffsize = BUFSIZ; +#else + buffsize = OPTSIZE; +#endif + + if ((buff = malloc(buffsize)) == NULL) { + perror("cat: no memory"); + return (1); + } + + /* + * Note that on some systems (V7), very large writes to a pipe + * return less than the requested size of the write. + * In this case, multiple writes are required. + */ + while ((n = read(fd, buff, buffsize)) > 0) { + offset = 0; + do { + nwritten = write(fileno(stdout), &buff[offset], n); + if (nwritten <= 0) { + perror("cat: write error"); + exit(2); + } + offset += nwritten; + } while ((n -= nwritten) > 0); + } + + free(buff); + if (n < 0) { + perror("cat: read error"); + return (1); + } + return (0); +} diff --git a/bash-20060316/CWRU/misc/pgrp.c b/bash-20060316/CWRU/misc/pgrp.c new file mode 100644 index 000000000..507da56bb --- /dev/null +++ b/bash-20060316/CWRU/misc/pgrp.c @@ -0,0 +1,13 @@ +#include +#include + +int pid; +int pg1; + +main() +{ + pid = getpid(); + pg1 = getpgrp(0); + + printf("pid = %d, pgrp = %d\n", pid, pg1); +} diff --git a/bash-20060316/CWRU/misc/pid.c b/bash-20060316/CWRU/misc/pid.c new file mode 100644 index 000000000..458fde435 --- /dev/null +++ b/bash-20060316/CWRU/misc/pid.c @@ -0,0 +1,7 @@ +#include + +main() +{ + fprintf(stderr, "%d\n", getpid()); + exit(0); +} diff --git a/bash-20060316/CWRU/misc/sigs.c b/bash-20060316/CWRU/misc/sigs.c new file mode 100644 index 000000000..2c16935f8 --- /dev/null +++ b/bash-20060316/CWRU/misc/sigs.c @@ -0,0 +1,47 @@ +/* sigs - print signal dispositions for a process */ + +/* Copyright (C) 1990-2002 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#include +#include + +extern char *sys_siglist[]; + +typedef void sighandler(); + +main(argc, argv) +int argc; +char **argv; +{ + register int i; + sighandler *h; + + for (i = 1; i < NSIG; i++) { + h = signal(i, SIG_DFL); + if (h != SIG_DFL) { + if (h == SIG_IGN) + fprintf(stderr, "%d: ignored (%s)\n", i, sys_siglist[i]); + else + fprintf(stderr, "%d: caught (%s)\n", i, sys_siglist[i]); + } + } + exit(0); +} + + diff --git a/bash-20060316/CWRU/misc/sigstat.c b/bash-20060316/CWRU/misc/sigstat.c new file mode 100644 index 000000000..2252a8573 --- /dev/null +++ b/bash-20060316/CWRU/misc/sigstat.c @@ -0,0 +1,226 @@ +/* + * sigstat - print out useful information about signal arguments + * + * Chet Ramey + * chet@po.cwru.edu + */ + +/* Copyright (C) 1991-2002 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#include +#include +#include + +extern char *strrchr(); +static char *signames[NSIG]; + +char *progname; + +void sigstat(); + +main(argc, argv) +int argc; +char **argv; +{ + register int i; + char *t; + + if (t = strrchr(argv[0], '/')) + progname = ++t; + else + progname = argv[0]; + init_signames(); + if (argc == 1) { + for (i = 1; i < NSIG; i++) + sigstat(i); + exit(0); + } + for (i = 1; i < argc; i++) + sigstat(atoi(argv[i])); + exit(0); +} + +void +sigstat(sig) +int sig; +{ + struct sigaction oact; + char *signame; + sigset_t set, oset; + int blocked; + + if (sig < 0 || sig >= NSIG) { + fprintf(stderr, "%s: %d: signal out of range\n", progname, sig); + return; + } + signame = signames[sig]; + sigemptyset(&oset); + sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset); + if (sigismember(&oset, sig)) + printf("%s: signal is blocked\n", signame); + sigaction(sig, (struct sigaction *)NULL, &oact); + if (oact.sa_handler == SIG_IGN) + printf("%s: signal is ignored\n", signame); + else if (oact.sa_handler == SIG_DFL) + printf("%s: signal is defaulted\n", signame); + else + printf("%s: signal is trapped (?)\n", signame); +} + +init_signames() +{ + register int i; + bzero(signames, sizeof(signames)); + +#if defined (SIGHUP) /* hangup */ + signames[SIGHUP] = "SIGHUP"; +#endif +#if defined (SIGINT) /* interrupt */ + signames[SIGINT] = "SIGINT"; +#endif +#if defined (SIGQUIT) /* quit */ + signames[SIGQUIT] = "SIGQUIT"; +#endif +#if defined (SIGILL) /* illegal instruction (not reset when caught) */ + signames[SIGILL] = "SIGILL"; +#endif +#if defined (SIGTRAP) /* trace trap (not reset when caught) */ + signames[SIGTRAP] = "SIGTRAP"; +#endif +#if defined (SIGABRT) /* */ + signames[SIGABRT] = "SIGABRT"; +#endif +#if defined (SIGIOT) /* IOT instruction */ + signames[SIGIOT] = "SIGIOT"; +#endif +#if defined (SIGEMT) /* EMT instruction */ + signames[SIGEMT] = "SIGEMT"; +#endif +#if defined (SIGFPE) /* floating point exception */ + signames[SIGFPE] = "SIGFPE"; +#endif +#if defined (SIGKILL) /* kill (cannot be caught or ignored) */ + signames[SIGKILL] = "SIGKILL"; +#endif +#if defined (SIGBUS) /* bus error */ + signames[SIGBUS] = "SIGBUS"; +#endif +#if defined (SIGSEGV) /* segmentation violation */ + signames[SIGSEGV] = "SIGSEGV"; +#endif +#if defined (SIGSYS) /* bad argument to system call */ + signames[SIGSYS] = "SIGSYS"; +#endif +#if defined (SIGPIPE) /* write on a pipe with no one to read it */ + signames[SIGPIPE] = "SIGPIPE"; +#endif +#if defined (SIGALRM) /* alarm clock */ + signames[SIGALRM] = "SIGALRM"; +#endif +#if defined (SIGTERM) /* software termination signal from kill */ + signames[SIGTERM] = "SIGTERM"; +#endif +#if defined (SIGCLD) /* Like SIGCHLD. */ + signames[SIGCLD] = "SIGCLD"; +#endif +#if defined (SIGPWR) /* Magic thing for some machines. */ + signames[SIGPWR] = "SIGPWR"; +#endif +#if defined (SIGPOLL) /* For keyboard input? */ + signames[SIGPOLL] = "SIGPOLL"; +#endif +#if defined (SIGURG) /* urgent condition on IO channel */ + signames[SIGURG] = "SIGURG"; +#endif +#if defined (SIGSTOP) /* sendable stop signal not from tty */ + signames[SIGSTOP] = "SIGSTOP"; +#endif +#if defined (SIGTSTP) /* stop signal from tty */ + signames[SIGTSTP] = "SIGTSTP"; +#endif +#if defined (SIGCONT) /* continue a stopped process */ + signames[SIGCONT] = "SIGCONT"; +#endif +#if defined (SIGCHLD) /* to parent on child stop or exit */ + signames[SIGCHLD] = "SIGCHLD"; +#endif +#if defined (SIGTTIN) /* to readers pgrp upon background tty read */ + signames[SIGTTIN] = "SIGTTIN"; +#endif +#if defined (SIGTTOU) /* like TTIN for output if (tp->t_local<OSTOP) */ + signames[SIGTTOU] = "SIGTTOU"; +#endif +#if defined (SIGIO) /* input/output possible signal */ + signames[SIGIO] = "SIGIO"; +#endif +#if defined (SIGXCPU) /* exceeded CPU time limit */ + signames[SIGXCPU] = "SIGXCPU"; +#endif +#if defined (SIGXFSZ) /* exceeded file size limit */ + signames[SIGXFSZ] = "SIGXFSZ"; +#endif +#if defined (SIGVTALRM) /* virtual time alarm */ + signames[SIGVTALRM] = "SIGVTALRM"; +#endif +#if defined (SIGPROF) /* profiling time alarm */ + signames[SIGPROF] = "SIGPROF"; +#endif +#if defined (SIGWINCH) /* window changed */ + signames[SIGWINCH] = "SIGWINCH"; +#endif +#if defined (SIGLOST) /* resource lost (eg, record-lock lost) */ + signames[SIGLOST] = "SIGLOST"; +#endif +#if defined (SIGUSR1) /* user defined signal 1 */ + signames[SIGUSR1] = "SIGUSR1"; +#endif +#if defined (SIGUSR2) /* user defined signal 2 */ + signames[SIGUSR2] = "SIGUSR2"; +#endif +#if defined (SIGMSG) /* HFT input data pending */ + signames[SIGMSG] = "SIGMSG"; +#endif +#if defined (SIGPWR) /* power failure imminent (save your data) */ + signames[SIGPWR] = "SIGPWR"; +#endif +#if defined (SIGDANGER) /* system crash imminent */ + signames[SIGDANGER] = "SIGDANGER"; +#endif +#if defined (SIGMIGRATE) /* migrate process to another CPU */ + signames[SIGMIGRATE] = "SIGMIGRATE"; +#endif +#if defined (SIGPRE) /* programming error */ + signames[SIGPRE] = "SIGPRE"; +#endif +#if defined (SIGGRANT) /* HFT monitor mode granted */ + signames[SIGGRANT] = "SIGGRANT"; +#endif +#if defined (SIGRETRACT) /* HFT monitor mode retracted */ + signames[SIGRETRACT] = "SIGRETRACT"; +#endif +#if defined (SIGSOUND) /* HFT sound sequence has completed */ + signames[SIGSOUND] = "SIGSOUND"; +#endif + + for (i = 0; i < NSIG; i++) + if (signames[i] == (char *)NULL) { + signames[i] = (char *)malloc (16);; + sprintf (signames[i], "signal %d", i); + } +} diff --git a/bash-20060316/CWRU/misc/stderr.c b/bash-20060316/CWRU/misc/stderr.c new file mode 100644 index 000000000..f1ec1dc47 --- /dev/null +++ b/bash-20060316/CWRU/misc/stderr.c @@ -0,0 +1,12 @@ +#include + +main() +{ + fprintf(stdout, "to stdout\n"); + fprintf(stderr, "to stderr\n"); + fprintf(stdout, "to stdout\n"); + fprintf(stderr, "to stderr\n"); + exit(0); +} + + diff --git a/bash-20060316/CWRU/misc/test-strtod.c b/bash-20060316/CWRU/misc/test-strtod.c new file mode 100644 index 000000000..e76f93a53 --- /dev/null +++ b/bash-20060316/CWRU/misc/test-strtod.c @@ -0,0 +1,33 @@ +#include +#include +#include + + +#ifndef errno +extern int errno; +#endif + +main(c, v) +int c; +char **v; +{ + double dv, dv2; + char *sv, *ep; + int r; + + sv = "4.2"; + dv = 4.2; + + errno = 0; + dv2 = strtod(sv, &ep); + if (*ep) + exit(1); + else if (errno == ERANGE) + exit(1); + if (dv != dv2) + exit(1); + exit(0); +} + + + diff --git a/bash-20060316/CWRU/new/execute_cmd.c.lastpipe-first b/bash-20060316/CWRU/new/execute_cmd.c.lastpipe-first new file mode 100644 index 000000000..6b7b53355 --- /dev/null +++ b/bash-20060316/CWRU/new/execute_cmd.c.lastpipe-first @@ -0,0 +1,3176 @@ +/* execute_command.c -- Execute a COMMAND structure. */ + +/* Copyright (C) 1987,1991 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 1, or (at your option) + any later version. + + Bash is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with Bash; see the file COPYING. If not, write to the Free + Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#include +#include +#include +#include +#include "posixstat.h" +#include "filecntl.h" +#include + +#if !defined (SIGABRT) +#define SIGABRT SIGIOT +#endif + +#include +#include + +#include "shell.h" +#include "y.tab.h" +#include "flags.h" +#include "hash.h" +#include "jobs.h" + +#include "sysdefs.h" +#include + +#if defined (BUFFERED_INPUT) +# include "input.h" +#endif + +#define CMD_NO_WAIT 0x40 /* XXX move to command.h */ +#define CMD_LAST_PIPE 0x80 /* XXX ditto */ + +#if !defined (errno) +extern int errno; +#endif + +extern int breaking, continuing, loop_level; +extern int interactive, login_shell; + +#if defined (JOB_CONTROL) +extern int job_control; +extern int set_job_control (); +#endif /* JOB_CONTROL */ + +extern int getdtablesize (); +extern int close (); +extern char *strerror (); +extern char *string_list (); + +#if defined (USG) +extern pid_t last_made_pid; +#endif + +struct stat SB; + +extern WORD_LIST *expand_words (), *expand_word (); +extern WORD_LIST *expand_word_leave_quoted (); +extern char *make_command_string (); + +extern Function *find_shell_builtin (), *builtin_address (); +extern SigHandler *set_sigint_handler (); + +#if defined (PROCESS_SUBSTITUTION) +void close_all_files (); +#endif /* PROCESS_SUBSTITUTION */ + +/* Static functions defined and used in this file. */ +static void close_pipes (), do_piping (), execute_disk_command (); +static void execute_subshell_builtin_or_function (); +static void cleanup_redirects (), cleanup_func_redirects (), bind_lastarg (); +static void add_undo_close_redirect (); +static int do_redirection_internal (), do_redirections (); +static int expandable_redirection_filename (), execute_shell_script (); +static int execute_builtin_or_function (), add_undo_redirect (); +static char *find_user_command_internal (), *find_user_command_in_path (); + +/* The value returned by the last synchronous command. */ +int last_command_exit_value = 0; + +/* The list of redirections to preform which will undo the redirections + that I made in the shell. */ +REDIRECT *redirection_undo_list = (REDIRECT *)NULL; + +/* Have we just forked, and are we now running in a subshell environment? */ +int subshell_environment = 0; + +/* Use this as the function to call when adding unwind protects so we + don't need to know what free() returns. */ +void +vfree (string) + char *string; +{ + free (string); +} + +#define FD_BITMAP_DEFAULT_SIZE 32 +/* Functions to allocate and deallocate the structures used to pass + information from the shell to its children about file descriptors + to close. */ +struct fd_bitmap * +new_fd_bitmap (size) + long size; +{ + struct fd_bitmap *ret; + + ret = (struct fd_bitmap *)xmalloc (sizeof (struct fd_bitmap)); + + ret->size = size; + + if (size) + { + ret->bitmap = (char *)xmalloc (size); + bzero (ret->bitmap, size); + } + else + ret->bitmap = (char *)NULL; + return (ret); +} + +void +dispose_fd_bitmap (fdbp) + struct fd_bitmap *fdbp; +{ + if (fdbp->bitmap) + free (fdbp->bitmap); + + free (fdbp); +} + +void +close_fd_bitmap (fdbp) + struct fd_bitmap *fdbp; +{ + register int i; + + if (fdbp) + { + for (i = 0; i < fdbp->size; i++) + if (fdbp->bitmap[i]) + { + close (i); + fdbp->bitmap[i] = 0; + } + } +} + +/* Execute the command passed in COMMAND. COMMAND is exactly what + read_command () places into GLOBAL_COMMAND. See "command.h" for the + details of the command structure. + + EXECUTION_SUCCESS or EXECUTION_FAILURE are the only possible + return values. Executing a command with nothing in it returns + EXECUTION_SUCCESS. */ +execute_command (command) + COMMAND *command; +{ + struct fd_bitmap *bitmap; + int result; + + bitmap = new_fd_bitmap (FD_BITMAP_DEFAULT_SIZE); + + /* Just do the command, but not asynchronously. */ + result = execute_command_internal (command, 0, NO_PIPE, NO_PIPE, bitmap); + + dispose_fd_bitmap (bitmap); + +#if defined (PROCESS_SUBSTITUTION) + unlink_fifo_list (); +#endif /* PROCESS_SUBSTITUTION */ + + return (result); +} + +/* Return 1 if TYPE is a shell control structure type. */ +int +shell_control_structure (type) + enum command_type type; +{ + switch (type) + { + case cm_for: + case cm_case: + case cm_while: + case cm_until: + case cm_if: + case cm_group: + return (1); + + default: + return (0); + } +} + +/* A function to use to unwind_protect the redirection undo list + for loops. */ +static void +cleanup_redirects (list) + REDIRECT *list; +{ + do_redirections (list, 1, 0, 0); + dispose_redirects (list); +} + +/* Function to unwind_protect the redirections for functions and builtins. */ +static void +cleanup_func_redirects (list) + REDIRECT *list; +{ + do_redirections (list, 1, 0, 0); +} + +#if defined (JOB_CONTROL) +/* A function to restore the signal mask to its proper value when the shell + is interrupted or errors occur while creating a pipeline. */ +static int +restore_signal_mask (set) + sigset_t set; +{ + return (sigprocmask (SIG_SETMASK, &set, (sigset_t *)NULL)); +} +#endif /* JOB_CONTROL */ + +/* A debugging function that can be called from gdb, for instance. */ +open_files () +{ + register int i; + int f, fd_table_size; + + fd_table_size = getdtablesize (); + + fprintf (stderr, "pid %d open files:", getpid ()); + for (i = 3; i < fd_table_size; i++) + { + if ((f = fcntl (i, F_GETFD, 0)) != -1) + fprintf (stderr, " %d (%s)", i, f ? "close" : "open"); + } + fprintf (stderr, "\n"); +} + +execute_command_internal (command, asynchronous, pipe_in, pipe_out, + fds_to_close) + COMMAND *command; + int asynchronous; + int pipe_in, pipe_out; + struct fd_bitmap *fds_to_close; +{ + int exec_result = EXECUTION_SUCCESS; + int invert, ignore_return; + REDIRECT *my_undo_list; + + if (!command || breaking || continuing) + return (EXECUTION_SUCCESS); + + run_pending_traps (); + + invert = (command->flags & CMD_INVERT_RETURN) != 0; + + /* If a command was being explicitly run in a subshell, or if it is + a shell control-structure, and it has a pipe, then we do the command + in a subshell. */ + + if ((command->flags & CMD_WANT_SUBSHELL) || + (command->flags & CMD_FORCE_SUBSHELL) || + (shell_control_structure (command->type) && + (pipe_out != NO_PIPE || pipe_in != NO_PIPE || asynchronous))) + { + pid_t paren_pid; + + /* Fork a subshell, turn off the subshell bit, turn off job + control and call execute_command () on the command again. */ + paren_pid = make_child (savestring (make_command_string (command)), + asynchronous); + if (paren_pid == 0) + { + int user_subshell, return_code; + +#if defined (JOB_CONTROL) + set_sigchld_handler (); +#endif /* JOB_CONTROL */ + + set_sigint_handler (); + + user_subshell = (command->flags & CMD_WANT_SUBSHELL) != 0; + command->flags &= ~(CMD_FORCE_SUBSHELL | CMD_WANT_SUBSHELL); + + /* If a command is asynchronous in a subshell (like ( foo ) & or + the special case of an asynchronous GROUP command where the + the subshell bit is turned on down in case cm_group: below), + turn off `asynchronous', so that two subshells aren't spawned. + + This seems semantically correct to me. For example, + ( foo ) & seems to say ``do the command `foo' in a subshell + environment, but don't wait for that subshell to finish'', + and "{ foo ; bar } &" seems to me to be like functions or + builtins in the background, which executed in a subshell + environment. I just don't see the need to fork two subshells. */ + + /* Don't fork again, we are already in a subshell. */ + asynchronous = 0; + + /* Subshells are neither login nor interactive. */ + login_shell = interactive = 0; + + subshell_environment = 1; + +#if defined (JOB_CONTROL) + /* Delete all traces that there were any jobs running. This is + only for subshells. */ + without_job_control (); +#endif /* JOB_CONTROL */ + do_piping (pipe_in, pipe_out); + + if (fds_to_close) + close_fd_bitmap (fds_to_close); + + /* Do redirections, then dispose of them before recursive call. */ + if (command->redirects) + { + if (do_redirections (command->redirects, 1, 0, 0) != 0) + exit (EXECUTION_FAILURE); + + dispose_redirects (command->redirects); + command->redirects = (REDIRECT *)NULL; + } + + return_code = execute_command_internal + (command, asynchronous, NO_PIPE, NO_PIPE, fds_to_close); + + /* If we were explicitly placed in a subshell with (), we need + to do the `shell cleanup' things, such as running traps[0]. */ + if (user_subshell) + run_exit_trap (); + + exit (return_code); + } + else + { + close_pipes (pipe_in, pipe_out); + + /* If we are part of a pipeline, and not the end of the pipeline, + then we should simply return and let the last command in the + pipe be waited for. If we are not in a pipeline, or are the + last command in the pipeline, then we wait for the subshell + and return its exit status as usual. */ + if (pipe_out != NO_PIPE) + return (EXECUTION_SUCCESS); + + if (command->flags & CMD_NO_WAIT) + return (EXECUTION_SUCCESS); + + stop_pipeline (asynchronous, (COMMAND *)NULL); + + if (!asynchronous) + { + last_command_exit_value = wait_for (paren_pid); + + /* If we have to, invert the return value. */ + if (invert) + { + if (last_command_exit_value == EXECUTION_SUCCESS) + return (EXECUTION_FAILURE); + else + return (EXECUTION_SUCCESS); + } + else + return (last_command_exit_value); + } + else + { + if (interactive) + describe_pid (paren_pid); + + run_pending_traps (); + + return (EXECUTION_SUCCESS); + } + } + } + + /* Handle WHILE FOR CASE etc. with redirections. (Also '&' input + redirection.) */ + if (do_redirections (command->redirects, 1, 1, 0) != 0) + return (EXECUTION_FAILURE); + + my_undo_list = (REDIRECT *)copy_redirects (redirection_undo_list); + + begin_unwind_frame ("loop_redirections"); + + if (my_undo_list) + add_unwind_protect ((Function *)cleanup_redirects, my_undo_list); + + ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0; + + switch (command->type) + { + case cm_for: + if (ignore_return) + command->value.For->flags |= CMD_IGNORE_RETURN; + exec_result = execute_for_command (command->value.For); + break; + + case cm_case: + if (ignore_return) + command->value.Case->flags |= CMD_IGNORE_RETURN; + exec_result = execute_case_command (command->value.Case); + break; + + case cm_while: + if (ignore_return) + command->value.While->flags |= CMD_IGNORE_RETURN; + exec_result = execute_while_command (command->value.While); + break; + + case cm_until: + if (ignore_return) + command->value.While->flags |= CMD_IGNORE_RETURN; + exec_result = execute_until_command (command->value.While); + break; + + case cm_if: + if (ignore_return) + command->value.If->flags |= CMD_IGNORE_RETURN; + exec_result = execute_if_command (command->value.If); + break; + + case cm_group: + + /* This code can be executed from either of two paths: an explicit + '{}' command, or via a function call. If we are executed via a + function call, we have already taken care of the function being + executed in the background (down there in execute_simple_command ()), + and this command should *not* be marked as asynchronous. If we + are executing a regular '{}' group command, and asynchronous == 1, + we must want to execute the whole command in the background, so we + need a subshell, and we want the stuff executed in that subshell + (this group command) to be executed in the foreground of that + subshell (i.e. there will not be *another* subshell forked). + + What we do is to force a subshell if asynchronous, and then call + execute_command_internal again with asynchronous still set to 1, + but with the original group command, so the printed command will + look right. + + The code above that handles forking off subshells will note that + both subshell and async are on, and turn off async in the child + after forking the subshell (but leave async set in the parent, so + the normal call to describe_pid is made). This turning off + async is *crucial*; if it is not done, this will fall into an + infinite loop of executions through this spot in subshell after + subshell until the process limit is exhausted. */ + + if (asynchronous) + { + command->flags |= CMD_FORCE_SUBSHELL; + exec_result = + execute_command_internal (command, 1, pipe_in, pipe_out, + fds_to_close); + } + else + { + if (ignore_return && command->value.Group->command) + command->value.Group->command->flags |= CMD_IGNORE_RETURN; + exec_result = + execute_command_internal (command->value.Group->command, + asynchronous, pipe_in, pipe_out, + fds_to_close); + } + break; + + case cm_simple: + { + pid_t last_pid = last_made_pid; + +#if defined (JOB_CONTROL) + extern int already_making_children; +#endif /* JOB_CONTROL */ + if (ignore_return && command->value.Simple) + command->value.Simple->flags |= CMD_IGNORE_RETURN; + exec_result = + execute_simple_command (command->value.Simple, pipe_in, pipe_out, + asynchronous, fds_to_close); + + /* The temporary environment should be used for only the simple + command immediately following its definition. */ + dispose_used_env_vars (); + +#if (defined (Ultrix) && defined (mips)) || !defined (HAVE_ALLOCA) + /* Reclaim memory allocated with alloca () on machines which + may be using the alloca emulation code. */ + (void) alloca (0); +#endif /* (Ultrix && mips) || !HAVE_ALLOCA */ + + if (command->flags & CMD_NO_WAIT) + break; + + /* If we forked to do the command, then we must wait_for () + the child. */ +#if defined (JOB_CONTROL) + if (already_making_children && pipe_out == NO_PIPE) +#else + if (pipe_out == NO_PIPE) +#endif /* JOB_CONTROL */ + { + if (last_pid != last_made_pid) + { + stop_pipeline (asynchronous, (COMMAND *)NULL); + + if (asynchronous) + { + if (interactive) + describe_pid (last_made_pid); + } + else +#if !defined (JOB_CONTROL) + /* Do not wait for asynchronous processes started from + startup files. */ + if (last_made_pid != last_asynchronous_pid) +#endif + /* When executing a shell function that executes other + commands, this causes the last simple command in + the function to be waited for twice. */ + exec_result = wait_for (last_made_pid); + } + } + } + if (!ignore_return && exit_immediately_on_error && !invert && + (exec_result != EXECUTION_SUCCESS)) + { + last_command_exit_value = exec_result; + run_pending_traps (); + longjmp (top_level, EXITPROG); + } + + break; + + case cm_connection: + switch (command->value.Connection->connector) + { + /* Do the first command asynchronously. */ + case '&': + { + COMMAND *tc = command->value.Connection->first; + REDIRECT *rp = tc->redirects; + + if (ignore_return && tc) + tc->flags |= CMD_IGNORE_RETURN; + + /* If this shell was compiled without job control, or if job + control is not active (e.g., if the shell is not interactive), + the standard input for an asynchronous command is /dev/null. */ +#if defined (JOB_CONTROL) + if (!interactive || !job_control) +#endif /* JOB_CONTROL */ + { + REDIRECT *tr = + make_redirection (0, r_inputa_direction, + make_word ("/dev/null")); + tr->next = tc->redirects; + tc->redirects = tr; + } + + exec_result = execute_command_internal (tc, 1, pipe_in, pipe_out, + fds_to_close); + +#if defined (JOB_CONTROL) + if (!interactive || !job_control) +#endif /* JOB_CONTROL */ + { + /* Remove the redirection we added above. It matters, + especially for loops, which call execute_command () + multiple times with the same command. */ + REDIRECT *tr, *tl; + + tr = tc->redirects; + do + { + tl = tc->redirects; + tc->redirects = tc->redirects->next; + } + while (tc->redirects && tc->redirects != rp); + + tl->next = (REDIRECT *)NULL; + dispose_redirects (tr); + } + + { + register COMMAND *second; + + second = command->value.Connection->second; + + if (second) + { + if (ignore_return) + second->flags |= CMD_IGNORE_RETURN; + + exec_result = execute_command_internal + (second, asynchronous, pipe_in, pipe_out, fds_to_close); + } + } + } + break; + + case ';': + /* Just call execute command on both of them. */ + if (ignore_return) + { + if (command->value.Connection->first) + command->value.Connection->first->flags |= CMD_IGNORE_RETURN; + QUIT; + if (command->value.Connection->second) + command->value.Connection->second->flags |= CMD_IGNORE_RETURN; + } + execute_command (command->value.Connection->first); + QUIT; + exec_result = + execute_command_internal (command->value.Connection->second, + asynchronous, pipe_in, pipe_out, + fds_to_close); + break; + + case '|': + { + int prev, fildes[2], new_bitmap_size, dummyfd; + COMMAND *cmd; + int outpipe; + struct fd_bitmap *fd_bitmap; + +#if defined (JOB_CONTROL) + COMMAND *lastcmd; + int lastpipe[2]; + pid_t lastpipe_pid; + + sigset_t set, oset; + BLOCK_CHILD (set, oset); +#endif /* JOB_CONTROL */ + +#if defined (JOB_CONTROL) + /* Fork the last command in the pipeline first, then the rest of + the commands, to avoid synchronization problems. */ + /* Find the last pipeline element */ + lastcmd = command; + while (lastcmd && lastcmd->type == cm_connection && + lastcmd->value.Connection && + lastcmd->value.Connection->connector == '|') + lastcmd = lastcmd->value.Connection->second; + + if (pipe (lastpipe) < 0) + { + report_error ("pipe error: %s", strerror (errno)); + terminate_current_pipeline (); + kill_current_pipeline (); + last_command_exit_value = EXECUTION_FAILURE; + throw_to_top_level (); + } + + /* Now execute the rightmost command in the pipeline, but do + not wait for it. */ + if (ignore_return && lastcmd) + lastcmd->flags |= CMD_IGNORE_RETURN; + lastcmd->flags |= (CMD_NO_WAIT | CMD_LAST_PIPE); + fds_to_close->bitmap[lastpipe[1]] = 1; + (void) execute_command_internal + (lastcmd, asynchronous, lastpipe[0], pipe_out, fds_to_close); + lastpipe_pid = last_made_pid; +#endif /* JOB_CONTROL */ + + prev = pipe_in; + cmd = command; + + while (cmd && + cmd->type == cm_connection && + cmd->value.Connection && + cmd->value.Connection->connector == '|') + { + /* Make a pipeline between the two commands. */ + if (pipe (fildes) < 0) + { + report_error ("pipe error: %s", strerror (errno)); +#if defined (JOB_CONTROL) + terminate_current_pipeline (); + kill_current_pipeline (); +#endif /* JOB_CONTROL */ + last_command_exit_value = EXECUTION_FAILURE; + /* The unwind-protects installed below will take care + of closing all of the open file descriptors. */ + throw_to_top_level (); + } + else + { + /* Here is a problem: with the new file close-on-exec + code, the read end of the pipe (fildes[0]) stays open + in the first process, so that process will never get a + SIGPIPE. There is no way to signal the first process + that it should close fildes[0] after forking, so it + remains open. No SIGPIPE is ever sent because there + is still a file descriptor open for reading connected + to the pipe. We take care of that here. This passes + around a bitmap of file descriptors that must be + closed after making a child process in + execute_simple_command. */ + + /* We need fd_bitmap to be at least as big as fildes[0]. + If fildes[0] is less than fds_to_close->size, then + use fds_to_close->size. */ + + if (fildes[0] < fds_to_close->size) + new_bitmap_size = fds_to_close->size; + else + new_bitmap_size = fildes[0] + 8; + + fd_bitmap = new_fd_bitmap (new_bitmap_size); + + /* Now copy the old information into the new bitmap. */ + bcopy (fds_to_close->bitmap, fd_bitmap->bitmap, + fds_to_close->size); + + /* And mark the pipe file descriptors to be closed. */ + fd_bitmap->bitmap[fildes[0]] = 1; + + /* In case there are pipe or out-of-processes errors, we + want all these file descriptors to be closed when + unwind-protects are run, and the storage used for the + bitmaps freed up. */ + begin_unwind_frame ("pipe-file-descriptors"); + add_unwind_protect (dispose_fd_bitmap, fd_bitmap); + add_unwind_protect (close_fd_bitmap, fd_bitmap); + if (prev >= 0) + add_unwind_protect (close, prev); + dummyfd = fildes[1]; + add_unwind_protect (close, dummyfd); + +#if defined (JOB_CONTROL) + add_unwind_protect (restore_signal_mask, oset); +#endif /* JOB_CONTROL */ + + if (ignore_return && cmd->value.Connection->first) + cmd->value.Connection->first->flags |= + CMD_IGNORE_RETURN; + +#if defined (JOB_CONTROL) + if (cmd->value.Connection->second == lastcmd) + { + outpipe = lastpipe[1]; + close (fildes[1]); + } + else +#endif /* JOB_CONTROL */ + outpipe = fildes[1]; + + execute_command_internal + (cmd->value.Connection->first, asynchronous, prev, + outpipe, fd_bitmap); + + if (prev >= 0) + close (prev); + + prev = fildes[0]; + close (outpipe); + + dispose_fd_bitmap (fd_bitmap); + discard_unwind_frame ("pipe-file-descriptors"); + } + cmd = cmd->value.Connection->second; +#if defined (JOB_CONTROL) + if (cmd == lastcmd) + break; +#endif + } + +#if !defined (JOB_CONTROL) + /* Now execute the rightmost command in the pipeline. */ + if (ignore_return && cmd) + cmd->flags |= CMD_IGNORE_RETURN; + exec_result = + execute_command_internal + (cmd, asynchronous, prev, pipe_out, fds_to_close); +#endif /* !JOB_CONTROL */ + + if (prev >= 0) + close (prev); + +#if defined (JOB_CONTROL) + UNBLOCK_CHILD (oset); +#endif + +#if defined (JOB_CONTROL) + /* Because we created the processes out of order, we have to + reorder the pipeline slightly. */ + rotate_the_pipeline (); + stop_pipeline (asynchronous, (COMMAND *)NULL); + if (asynchronous && interactive) + describe_pid (lastpipe_pid); + exec_result = wait_for (lastpipe_pid); + if (!ignore_return && exit_immediately_on_error && !invert && + (exec_result != EXECUTION_SUCCESS)) + { + last_command_exit_value = exec_result; + run_pending_traps (); + longjmp (top_level, EXITPROG); + } +#endif /* JOB_CONTROL */ + } + break; + + case AND_AND: + if (asynchronous) + { + /* If we have something like `a && b &', run the && stuff in a + subshell. Force a subshell and just call + execute_command_internal again. Leave asynchronous on + so that we get a report from the parent shell about the + background job. */ + command->flags |= CMD_FORCE_SUBSHELL; + exec_result = execute_command_internal (command, 1, pipe_in, + pipe_out, fds_to_close); + break; + } + + /* Execute the first command. If the result of that is successful, + then execute the second command, otherwise return. */ + + if (command->value.Connection->first) + command->value.Connection->first->flags |= CMD_IGNORE_RETURN; + + exec_result = execute_command (command->value.Connection->first); + QUIT; + if (exec_result == EXECUTION_SUCCESS) + { + if (ignore_return && command->value.Connection->second) + command->value.Connection->second->flags |= + CMD_IGNORE_RETURN; + + exec_result = + execute_command (command->value.Connection->second); + } + break; + + case OR_OR: + if (asynchronous) + { + /* If we have something like `a || b &', run the || stuff in a + subshell. Force a subshell and just call + execute_command_internal again. Leave asynchronous on + so that we get a report from the parent shell about the + background job. */ + command->flags |= CMD_FORCE_SUBSHELL; + exec_result = execute_command_internal (command, 1, pipe_in, + pipe_out, fds_to_close); + break; + } + + /* Execute the first command. If the result of that is successful, + then return, otherwise execute the second command. */ + + if (command->value.Connection->first) + command->value.Connection->first->flags |= CMD_IGNORE_RETURN; + + exec_result = execute_command (command->value.Connection->first); + QUIT; + if (exec_result != EXECUTION_SUCCESS) + { + if (ignore_return && command->value.Connection->second) + command->value.Connection->second->flags |= + CMD_IGNORE_RETURN; + + exec_result = + execute_command (command->value.Connection->second); + } + + break; + + default: + programming_error ("Bad connector `%d'!", + command->value.Connection->connector); + longjmp (top_level, DISCARD); + break; + } + break; + + case cm_function_def: + exec_result = intern_function (command->value.Function_def->name, + command->value.Function_def->command); + break; + + default: + programming_error + ("execute_command: Bad command type `%d'!", command->type); + } + + if (my_undo_list) + { + do_redirections (my_undo_list, 1, 0, 0); + dispose_redirects (my_undo_list); + } + + discard_unwind_frame ("loop_redirections"); + + /* Invert the return value if we have to */ + if (invert) + { + if (exec_result == EXECUTION_SUCCESS) + exec_result = EXECUTION_FAILURE; + else + exec_result = EXECUTION_SUCCESS; + } + + last_command_exit_value = exec_result; + run_pending_traps (); + return (last_command_exit_value); +} + +/* Execute a FOR command. The syntax is: FOR word_desc IN word_list; + DO command; DONE */ +execute_for_command (for_command) + FOR_COM *for_command; +{ + /* I just noticed that the Bourne shell leaves word_desc bound to the + last name in word_list after the FOR statement is done. This seems + wrong to me; I thought that the variable binding should be lexically + scoped, i.e., only would last the duration of the FOR command. This + behaviour can be gotten by turning on the lexical_scoping switch. */ + + register WORD_LIST *releaser, *list; + WORD_DESC *temp = for_command->name; + char *identifier; + SHELL_VAR *old_value = (SHELL_VAR *)NULL; /* Remember the old value of x. */ + int retval = EXECUTION_SUCCESS; + extern int dispose_words (); + extern int dispose_variable (); + + if (!check_identifier (temp)) + return (EXECUTION_FAILURE); + + loop_level++; + identifier = temp->word; + + list = releaser = expand_words (for_command->map_list, 0); + + begin_unwind_frame ("for"); + add_unwind_protect (dispose_words, releaser); + + if (lexical_scoping) + { + old_value = copy_variable (find_variable (identifier)); + if (old_value) + add_unwind_protect (dispose_variable, old_value); + } + + while (list) + { + QUIT; + bind_variable (identifier, list->word->word); + if (for_command->flags & CMD_IGNORE_RETURN) + for_command->action->flags |= CMD_IGNORE_RETURN; + execute_command (for_command->action); + retval = last_command_exit_value; + QUIT; + + if (breaking) + { + breaking--; + break; + } + + if (continuing) + { + continuing--; + if (continuing) + break; + } + + list = list->next; + } + + loop_level--; + + if (lexical_scoping) + { + if (!old_value) + makunbound (identifier, shell_variables); + else + { + SHELL_VAR *new_value; + + new_value = bind_variable (identifier, value_cell(old_value)); + new_value->attributes = old_value->attributes; + } + } + + run_unwind_frame ("for"); + return (retval); +} + +/* Execute a CASE command. The syntax is: CASE word_desc IN pattern_list ESAC. + The pattern_list is a linked list of pattern clauses; each clause contains + some patterns to compare word_desc against, and an associated command to + execute. */ +execute_case_command (case_command) + CASE_COM *case_command; +{ + extern int dispose_words (); + extern char *tilde_expand (); + register WORD_LIST *list; + WORD_LIST *wlist; + PATTERN_LIST *clauses; + char *word; + int retval; + + /* Posix.2 Draft 11.2 says that the word is tilde expanded. */ + if (member ('~', case_command->word->word)) + { + word = tilde_expand (case_command->word->word); + free (case_command->word->word); + case_command->word->word = word; + } + wlist = expand_word (case_command->word, 0); + clauses = case_command->clauses; + word = (wlist) ? string_list (wlist) : savestring (""); + retval = EXECUTION_SUCCESS; + + begin_unwind_frame ("case"); + add_unwind_protect (dispose_words, wlist); + add_unwind_protect ((Function *)vfree, word); + + while (clauses) + { + QUIT; + list = clauses->patterns; + while (list) + { + extern char *quote_string_for_globbing (); + char *t, *pattern; + WORD_LIST *es; + int match, freepat; + + /* Posix.2 draft 11.3 says to do tilde expansion on each member + of the pattern list. */ + if (member ('~', list->word->word)) + { + t = tilde_expand (list->word->word); + free (list->word->word); + list->word->word = t; + } + + es = expand_word_leave_quoted (list->word, 0); + if (es && es->word && es->word->word && *(es->word->word)) + { + pattern = quote_string_for_globbing (es->word->word, 1); + freepat = 1; + } + else + { + pattern = ""; + freepat = 0; + } + + /* Since the pattern does not undergo quote removal according to + Posix.2 section 3.9.4.3, the fnmatch() call must be able to + recognize backslashes as escape characters. */ + match = fnmatch (pattern, word, 0) != FNM_NOMATCH; + if (freepat) + free (pattern); + dispose_words (es); + + if (match) + { + if (clauses->action && + (case_command->flags & CMD_IGNORE_RETURN)) + clauses->action->flags |= CMD_IGNORE_RETURN; + execute_command (clauses->action); + retval = last_command_exit_value; + goto exit_command; + } + + list = list->next; + QUIT; + } + clauses = clauses->next; + } + exit_command: + run_unwind_frame ("case"); + return (retval); +} + +#define CMD_WHILE 0 +#define CMD_UNTIL 1 + +/* The WHILE command. Syntax: WHILE test DO action; DONE. + Repeatedly execute action while executing test produces + EXECUTION_SUCCESS. */ +execute_while_command (while_command) + WHILE_COM *while_command; +{ + return (execute_while_or_until (while_command, CMD_WHILE)); +} + +/* UNTIL is just like WHILE except that the test result is negated. */ +execute_until_command (while_command) + WHILE_COM *while_command; +{ + return (execute_while_or_until (while_command, CMD_UNTIL)); +} + +/* The body for both while and until. The only difference between the + two is that the test value is treated differently. TYPE is + CMD_WHILE or CMD_UNTIL. The return value for both commands should + be EXECUTION_SUCCESS if no commands in the body are executed, and + the status of the last command executed in the body otherwise. */ +execute_while_or_until (while_command, type) + WHILE_COM *while_command; + int type; +{ + extern int breaking; + extern int continuing; + int commands_executed = 0; + int return_value, body_status = EXECUTION_SUCCESS; + + loop_level++; + while_command->test->flags |= CMD_IGNORE_RETURN; + + while (1) + { + return_value = execute_command (while_command->test); + + if (type == CMD_WHILE && return_value != EXECUTION_SUCCESS) + break; + if (type == CMD_UNTIL && return_value == EXECUTION_SUCCESS) + break; + + QUIT; + commands_executed = 1; + + if (while_command->flags & CMD_IGNORE_RETURN) + while_command->action->flags |= CMD_IGNORE_RETURN; + body_status = execute_command (while_command->action); + + QUIT; + + if (breaking) + { + breaking--; + break; + } + + if (continuing) + { + continuing--; + if (continuing) + break; + } + } + loop_level--; + + return (body_status); +} + +/* IF test THEN command [ELSE command]. + IF also allows ELIF in the place of ELSE IF, but + the parser makes *that* stupidity transparent. */ +execute_if_command (if_command) + IF_COM *if_command; +{ + int return_value; + + if_command->test->flags |= CMD_IGNORE_RETURN; + return_value = execute_command (if_command->test); + + if (return_value == EXECUTION_SUCCESS) + { + QUIT; + if (if_command->true_case && (if_command->flags & CMD_IGNORE_RETURN)) + if_command->true_case->flags |= CMD_IGNORE_RETURN; + return (execute_command (if_command->true_case)); + } + else + { + QUIT; + + if (if_command->false_case && + (if_command->flags & CMD_IGNORE_RETURN)) + { + if_command->false_case->flags |= CMD_IGNORE_RETURN; + } + + return (execute_command (if_command->false_case)); + } +} + +/* The name of the command that is currently being executed. + `test' needs this, for example. */ +char *this_command_name; + +static void +bind_lastarg (arg) + char *arg; +{ + SHELL_VAR *var; + + if (!arg) + arg = ""; + var = bind_variable ("_", arg); + var->attributes &= ~att_exported; +} + +/* For catching RETURN in a function. */ +int return_catch_flag = 0; +int return_catch_value; +jmp_buf return_catch; + +/* The meaty part of all the executions. We have to start hacking the + real execution of commands here. Fork a process, set things up, + execute the command. */ +execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) + SIMPLE_COM *simple_command; + int pipe_in, pipe_out; + struct fd_bitmap *fds_to_close; +{ + extern int command_string_index, variable_context, line_number; + extern char *the_printed_command; + extern pid_t last_command_subst_pid; + WORD_LIST *expand_words (), *copy_word_list (); + WORD_LIST *words, *lastword; + char *command_line, *lastarg; + int first_word_quoted, result; + pid_t old_last_command_subst_pid; + + result = EXECUTION_SUCCESS; + + /* If we're in a function, update the pseudo-line-number information. */ + if (variable_context) + line_number++; + + /* Remember what this command line looks like at invocation. */ + command_string_index = 0; + print_simple_command (simple_command); + command_line = (char *)alloca (1 + strlen (the_printed_command)); + strcpy (command_line, the_printed_command); + + first_word_quoted = + simple_command->words ? simple_command->words->word->quoted : 0; + + old_last_command_subst_pid = last_command_subst_pid; + + /* If we are re-running this as the result of executing the `command' + builtin, do not expand the command words a second time. */ + if ((simple_command->flags & CMD_INHIBIT_EXPANSION) == 0) + words = expand_words (simple_command->words); + else + words = copy_word_list (simple_command->words); + + lastarg = (char *)NULL; + begin_unwind_frame ("simple-command"); + + /* It is possible for WORDS not to have anything left in it. + Perhaps all the words consisted of `$foo', and there was + no variable `$foo'. */ + if (words) + { + extern int dispose_words (); + extern Function *last_shell_builtin, *this_shell_builtin; + Function *builtin; + SHELL_VAR *func; + + if (echo_command_at_execute) + { + extern char *indirection_level_string (); + char *line = string_list (words); + + if (line && *line) + fprintf (stderr, "%s%s\n", indirection_level_string (), line); + + if (line) + free (line); + } + + if (simple_command->flags & CMD_NO_FUNCTIONS) + func = (SHELL_VAR *)NULL; + else + func = find_function (words->word->word); + + add_unwind_protect (dispose_words, words); + + QUIT; + + /* Bind the last word in this command to "$_" after execution. */ + for (lastword = words; lastword->next; lastword = lastword->next); + lastarg = lastword->word->word; + +#if defined (JOB_CONTROL) + /* Is this command a job control related thing? */ + if (words->word->word[0] == '%') + { + int result; + + if (async) + this_command_name = "bg"; + else + this_command_name = "fg"; + + last_shell_builtin = this_shell_builtin; + this_shell_builtin = builtin_address (this_command_name); + result = (*this_shell_builtin) (words); + goto return_result; + } + + /* One other possiblilty. The user may want to resume an existing job. + If they do, find out whether this word is a candidate for a running + job. */ + { + char *auto_resume_value; + + if ((auto_resume_value = get_string_value ("auto_resume")) && + !first_word_quoted && + !words->next && + words->word->word[0] && + !simple_command->redirects && + pipe_in == NO_PIPE && + pipe_out == NO_PIPE && + !async) + { + char *word = words->word->word; + register int i, wl = strlen (word), exact; + + exact = strcmp (auto_resume_value, "exact") == 0; + for (i = job_slots - 1; i > -1; i--) + { + if (jobs[i]) + { + register PROCESS *p = jobs[i]->pipe; + do + { + if ((JOBSTATE (i) == JSTOPPED) && + (strncmp (p->command, word, + exact ? strlen (p->command) : wl) == 0)) + { + int started_status; + + run_unwind_frame ("simple-command"); + last_shell_builtin = this_shell_builtin; + this_shell_builtin = builtin_address ("fg"); + + started_status = start_job (i, 1); + + if (started_status < 0) + return (EXECUTION_FAILURE); + else + return (started_status); + } + p = p->next; + } + while (p != jobs[i]->pipe); + } + } + } + } +#endif /* JOB_CONTROL */ + + /* Remember the name of this command globally. */ + this_command_name = words->word->word; + + QUIT; + + /* Not a running job. Do normal command processing. */ + maybe_make_export_env (); + + /* This command could be a shell builtin or a user-defined function. + If so, and we have pipes, then fork a subshell in here. Else, just + do the command. */ + + if (func) + builtin = (Function *)NULL; + else + builtin = find_shell_builtin (this_command_name); + + last_shell_builtin = this_shell_builtin; + this_shell_builtin = builtin; + + if (builtin || func) + { + put_command_name_into_env (this_command_name); + if ((pipe_in != NO_PIPE) || (pipe_out != NO_PIPE) || async) + { + if (make_child (savestring (command_line), async) == 0) + { + execute_subshell_builtin_or_function + (words, simple_command->redirects, builtin, func, + pipe_in, pipe_out, async, fds_to_close, + simple_command->flags); + } + else + { + close_pipes (pipe_in, pipe_out); + goto return_result; + } + } + else + { + result = execute_builtin_or_function + (words, builtin, func, simple_command->redirects, fds_to_close, + simple_command->flags); + + goto return_result; + } + } + + execute_disk_command (words, simple_command->redirects, command_line, + pipe_in, pipe_out, async, fds_to_close); + + goto return_result; + } + else if (pipe_in != NO_PIPE || pipe_out != NO_PIPE || async) + { + /* We have a null command, but we really want a subshell to take + care of it. Just fork, do piping and redirections, and exit. */ + if (make_child (savestring (""), async) == 0) + { + do_piping (pipe_in, pipe_out); + + subshell_environment = 1; + + if (do_redirections (simple_command->redirects, 1, 0, 0) == 0) + exit (EXECUTION_SUCCESS); + else + exit (EXECUTION_FAILURE); + } + else + { + close_pipes (pipe_in, pipe_out); + result = EXECUTION_SUCCESS; + goto return_result; + } + } + else + { + /* Even if there aren't any command names, pretend to do the + redirections that are specified. The user expects the side + effects to take place. If the redirections fail, then return + failure. Otherwise, if a command substitution took place while + expanding the command or a redirection, return the value of that + substitution. Otherwise, return EXECUTION_SUCCESS. */ + + if (do_redirections (simple_command->redirects, 0, 0, 0) != 0) + result = EXECUTION_FAILURE; + else if (old_last_command_subst_pid != last_command_subst_pid) + result = last_command_exit_value; + else + result = EXECUTION_SUCCESS; + } + + return_result: + bind_lastarg (lastarg); + run_unwind_frame ("simple-command"); + return (result); +} + +/* Execute a shell builtin or function in a subshell environment. This + routine does not return; it only calls exit(). If BUILTIN is non-null, + it points to a function to call to execute a shell builtin; otherwise + VAR points at the body of a function to execute. WORDS is the arguments + to the command, REDIRECTS specifies redirections to perform before the + command is executed. */ +static void +execute_subshell_builtin_or_function (words, redirects, builtin, var, + pipe_in, pipe_out, async, fds_to_close, + flags) + WORD_LIST *words; + REDIRECT *redirects; + Function *builtin; + SHELL_VAR *var; + int pipe_in, pipe_out, async; + struct fd_bitmap *fds_to_close; + int flags; +{ + extern char **temporary_env, **function_env, **copy_array (); + extern int login_shell, interactive; +#if defined (JOB_CONTROL) + extern int jobs_builtin (); +#endif /* JOB_CONTROL */ + + /* A subshell is neither a login shell nor interactive. */ + login_shell = interactive = 0; + + subshell_environment = 1; + +#if defined (JOB_CONTROL) + /* Eradicate all traces of job control after we fork the subshell, so + all jobs begun by this subshell are in the same process group as + the shell itself. */ + + /* Allow the output of `jobs' to be piped. */ + if (builtin == jobs_builtin && !async && + (pipe_out != NO_PIPE || pipe_in != NO_PIPE)) + kill_current_pipeline (); + else + without_job_control (); + + set_sigchld_handler (); +#endif /* JOB_CONTROL */ + + set_sigint_handler (); + + do_piping (pipe_in, pipe_out); + + if (fds_to_close) + close_fd_bitmap (fds_to_close); + + if (do_redirections (redirects, 1, 0, 0) != 0) + exit (EXECUTION_FAILURE); + + if (builtin) + { + extern jmp_buf top_level; + int result; + + /* Give builtins a place to jump back to on failure, + so we don't go back up to main(). */ + result = setjmp (top_level); + + if (result == EXITPROG) + exit (last_command_exit_value); + else if (result) + exit (EXECUTION_FAILURE); + else + exit ((*builtin) (words->next)); + } + else + { + extern int variable_context, line_number; + extern void dispose_command (), dispose_function_env (); + COMMAND *fc, *tc; + int result, return_val; + + tc = (COMMAND *)function_cell (var); + fc = (COMMAND *)NULL; + + remember_args (words->next, 1); + line_number = 0; +#if defined (JOB_CONTROL) + stop_pipeline (async, (COMMAND *)NULL); +#endif + + begin_unwind_frame ("subshell_function_calling"); + unwind_protect_int (variable_context); + unwind_protect_int (return_catch_flag); + unwind_protect_jmp_buf (return_catch); + add_unwind_protect (dispose_command, fc); + + /* The temporary environment for a function is supposed to apply to + all commands executed in the function. If we have a temporary + environment, copy it to the special `function environment' and + get rid of the temporary environment. */ + if (temporary_env) + { + function_env = copy_array (temporary_env); + add_unwind_protect (dispose_function_env, (char *)NULL); + dispose_used_env_vars (); + } + else + function_env = (char **)NULL; + + /* We can do this because function bodies are always guaranteed to + be group commands, according to the grammar in parse.y. If we + don't do this now, execute_command_internal will graciously fork + another subshell for us, and we'll lose contact with the rest of + the pipeline and fail to get any SIGPIPE that might be sent. */ + + if (tc->type == cm_group) + fc = (COMMAND *)copy_command (tc->value.Group->command); + else + fc = (COMMAND *)copy_command (tc); + + if (fc && (flags & CMD_IGNORE_RETURN)) + fc->flags |= CMD_IGNORE_RETURN; + + /* result = execute_command (fc); doesn't work. + We need to explicitly specify the pipes in and out so that they + are closed in all the processes that rely on their being closed. + If they are not, it is possible to not get the SIGPIPE that we + need to kill all the processes sharing the pipe. */ + + variable_context++; + return_catch_flag++; + return_val = setjmp (return_catch); + + if (return_val) + result = return_catch_value; + else + result = + execute_command_internal (fc, 0, NO_PIPE, NO_PIPE, fds_to_close); + + run_unwind_frame ("subshell_function_calling"); + + exit (result); + } +} + +/* Execute a builtin or function in the current shell context. If BUILTIN + is non-null, it is the builtin command to execute, otherwise VAR points + to the body of a function. WORDS are the command's arguments, REDIRECTS + are the redirections to perform. FDS_TO_CLOSE is the usual bitmap of + file descriptors to close. + + If BUILTIN is exec_builtin, the redirections specified in REDIRECTS are + not undone before this function returns. */ +static int +execute_builtin_or_function (words, builtin, var, redirects, + fds_to_close, flags) + WORD_LIST *words; + Function *builtin; + SHELL_VAR *var; + REDIRECT *redirects; + struct fd_bitmap *fds_to_close; + int flags; +{ + extern int exec_builtin (), eval_builtin (); + extern char **temporary_env, **function_env, **copy_array (); + int result = EXECUTION_FAILURE; + REDIRECT *saved_undo_list; + + if (do_redirections (redirects, 1, 1, 0) != 0) + return (EXECUTION_FAILURE); + + saved_undo_list = redirection_undo_list; + + /* Calling the "exec" builtin changes redirections forever. */ + if (builtin == exec_builtin) + { + dispose_redirects (saved_undo_list); + saved_undo_list = (REDIRECT *)NULL; + } + else + { + begin_unwind_frame ("saved redirects"); + add_unwind_protect (cleanup_func_redirects, (char *)saved_undo_list); + } + + redirection_undo_list = (REDIRECT *)NULL; + + if (builtin) + { + int old_e_flag = exit_immediately_on_error; + + /* The eval builtin calls parse_and_execute, which does not know about + the setting of flags, and always calls the execution functions with + flags that will exit the shell on an error if -e is set. If the + eval builtin is being called, and we're supposed to ignore the exit + value of the command, we turn the -e flag off ourselves, then + restore it when the command completes. */ + if ((builtin == eval_builtin) && (flags & CMD_IGNORE_RETURN)) + { + begin_unwind_frame ("eval_builtin"); + unwind_protect_int (exit_immediately_on_error); + exit_immediately_on_error = 0; + } + + result = ((*builtin) (words->next)); + + if ((builtin == eval_builtin) && (flags & CMD_IGNORE_RETURN)) + { + exit_immediately_on_error += old_e_flag; + discard_unwind_frame ("eval_builtin"); + } + } + else + { + extern void dispose_command (), dispose_function_env (); + extern int pop_context (); + extern int line_number; + int return_val; + COMMAND *tc; + + tc = (COMMAND *)copy_command (function_cell (var)); + if (tc && (flags & CMD_IGNORE_RETURN)) + tc->flags |= CMD_IGNORE_RETURN; + + begin_unwind_frame ("function_calling"); + push_context (); + add_unwind_protect (pop_context, (char *)NULL); + add_unwind_protect (dispose_command, (char *)tc); + unwind_protect_int (return_catch_flag); + unwind_protect_int (line_number); + unwind_protect_jmp_buf (return_catch); + + /* The temporary environment for a function is supposed to apply to + all commands executed in the function. If we have a temporary + environment, copy it to the special `function environment' and + get rid of the temporary environment. */ + if (temporary_env) + { + function_env = copy_array (temporary_env); + add_unwind_protect (dispose_function_env, (char *)NULL); + dispose_used_env_vars (); + } + else + function_env = (char **)NULL; + + /* Note the second argument of "1", meaning that we discard + the current value of "$*"! This is apparently the right thing. */ + remember_args (words->next, 1); + + line_number = 0; + return_catch_flag++; + return_val = setjmp (return_catch); + + if (return_val) + result = return_catch_value; + else + result = + execute_command_internal (tc, 0, NO_PIPE, NO_PIPE, fds_to_close); + + run_unwind_frame ("function_calling"); + } + + redirection_undo_list = saved_undo_list; + if (builtin != exec_builtin) + discard_unwind_frame ("saved redirects"); + do_redirections (redirection_undo_list, 1, 0, 0); + + return (result); +} + +/* Execute a simple command that is hopefully defined in a disk file + somewhere. + + 1) fork () + 2) connect pipes + 3) look up the command + 4) do redirections + 5) execve () + 6) If the execve failed, see if the file has executable mode set. + If so, and it isn't a directory, then execute its contents as + a shell script. + + Note that the filename hashing stuff has to take place up here, + in the parent. This is probably why the Bourne style shells + don't handle it, since that would require them to go through + this gnarly hair, for no good reason. */ +static void +execute_disk_command (words, redirects, command_line, pipe_in, pipe_out, + async, fds_to_close) + WORD_LIST *words; + REDIRECT *redirects; + char *command_line; + int pipe_in, pipe_out, async; + struct fd_bitmap *fds_to_close; +{ + char **make_word_array (), *find_user_command (), *find_hashed_filename (); + char *hashed_file, *command, **args; + +#if defined (RESTRICTED_SHELL) + extern int restricted; + + if (restricted && strchr (words->word->word, '/')) + { + report_error ("%s: restricted: cannot specify `/' in command names", + words->word->word); + last_command_exit_value = EXECUTION_FAILURE; + return; + } +#endif /* RESTRICTED_SHELL */ + + hashed_file = command = (char *)NULL; + + /* Don't waste time trying to find hashed data for a pathname + that is already completely specified. */ + + if (!absolute_program (words->word->word)) + hashed_file = find_hashed_filename (words->word->word); + + /* XXX - this could be a big performance hit... */ + /* If a command found in the hash table no longer exists, we need to + look for it in $PATH. */ + if (hashed_file) + { + int st; + + st = file_status (hashed_file); + if ((st & (FS_EXISTS | FS_EXECABLE)) != (FS_EXISTS | FS_EXECABLE)) + { + remove_hashed_filename (words->word->word); + hashed_file = (char *) NULL; + } + } + + if (hashed_file) + command = savestring (hashed_file); + else + { + /* A command containing a slash is not looked up in PATH. */ + if (absolute_program (words->word->word)) + command = savestring (words->word->word); + else + { + command = find_user_command (words->word->word); + + /* A command name containing a slash is not saved in the + hash table. */ + if (command && !hashing_disabled) + { + extern int dot_found_in_search; + + remember_filename + (words->word->word, command, dot_found_in_search); + + /* Increase the number of hits to 1. */ + find_hashed_filename (words->word->word); + } + } + } + + if (command) + put_command_name_into_env (command); + + /* We have to make the child before we check for the non-existance + of COMMAND, since we want the error messages to be redirected. */ + if (make_child (savestring (command_line), async) == 0) + { + do_piping (pipe_in, pipe_out); + + /* Execve expects the command name to be in args[0]. So we + leave it there, in the same format that the user used to + type it in. */ + args = make_word_array (words); + + if (async) + { + begin_unwind_frame ("async_redirections"); + unwind_protect_int (interactive); + interactive = 0; + } + + subshell_environment = 1; + + if (do_redirections (redirects, 1, 0, 0) != 0) + { +#if defined (PROCESS_SUBSTITUTION) + /* Try to remove named pipes that may have been created as the + result of redirections. */ + unlink_fifo_list (); +#endif /* PROCESS_SUBSTITUTION */ + exit (EXECUTION_FAILURE); + } + + if (async) + run_unwind_frame ("async_redirections"); + + if (!command) + { + report_error ("%s: command not found", args[0]); + exit (EXECUTION_FAILURE); + } + + /* This functionality is now provided by close-on-exec of the + file descriptors manipulated by redirection and piping. + Some file descriptors still need to be closed in all children + because of the way bash does pipes; fds_to_close is a + bitmap of all such file descriptors. */ + if (fds_to_close) + close_fd_bitmap (fds_to_close); + + exit (shell_execve (command, args, export_env)); + } + else + { + /* Make sure that the pipes are closed in the parent. */ + close_pipes (pipe_in, pipe_out); + if (command) + free (command); + } +} + +/* If the operating system on which we're running does not handle + the #! executable format, then help out. SAMPLE is the text read + from the file, SAMPLE_LEN characters. COMMAND is the name of + the script; it and ARGS, the arguments given by the user, will + become arguments to the specified interpreter. ENV is the environment + to pass to the interpreter. + + The word immediately following the #! is the interpreter to execute. + A single argument to the interpreter is allowed. */ +static int +execute_shell_script (sample, sample_len, command, args, env) + unsigned char *sample; + int sample_len; + char *command; + char **args, **env; +{ + extern char *shell_name; + register int i; + char *execname, *firstarg; + int start, size_increment, larry; + + /* Find the name of the interpreter to exec. */ + for (i = 2; whitespace (sample[i]) && i < sample_len; i++) + ; + + for (start = i; + !whitespace (sample[i]) && sample[i] != '\n' && i < sample_len; + i++) + ; + + execname = (char *)xmalloc (1 + (i - start)); + strncpy (execname, sample + start, i - start); + execname[i - start] = '\0'; + size_increment = 1; + + /* Now the argument, if any. */ + firstarg = (char *)NULL; + for (start = i; + whitespace (sample[i]) && sample[i] != '\n' && i < sample_len; + i++) + ; + + /* If there is more text on the line, then it is an argument for the + interpreter. */ + if (i < sample_len && sample[i] != '\n' && !whitespace (sample[i])) + { + for (start = i; + !whitespace (sample[i]) && sample[i] != '\n' && i < sample_len; + i++) + ; + firstarg = (char *)xmalloc (1 + (i - start)); + strncpy (firstarg, sample + start, i - start); + firstarg[i - start] = '\0'; + + size_increment = 2; + } + + larry = array_len (args) + size_increment; + + args = (char **)xrealloc (args, (1 + larry) * sizeof (char *)); + + for (i = larry - 1; i; i--) + args[i] = args[i - size_increment]; + + args[0] = execname; + if (firstarg) + { + args[1] = firstarg; + args[2] = command; + } + else + args[1] = command; + + args[larry] = (char *)NULL; + + return (shell_execve (execname, args, env)); +} + +/* Call execve (), handling interpreting shell scripts, and handling + exec failures. */ +int +shell_execve (command, args, env) + char *command; + char **args, **env; +{ +#if defined (isc386) && defined (_POSIX_SOURCE) + __setostype (0); /* Turn on USGr3 semantics. */ + execve (command, args, env); + __setostype (1); /* Turn the POSIX semantics back on. */ +#else + execve (command, args, env); +#endif /* !(isc386 && _POSIX_SOURCE) */ + + /* If we get to this point, then start checking out the file. + Maybe it is something we can hack ourselves. */ + { + struct stat finfo; + + if (errno != ENOEXEC) + { + if ((stat (command, &finfo) == 0) && + (S_ISDIR (finfo.st_mode))) + report_error ("%s: is a directory", args[0]); + else + file_error (command); + + return (EXECUTION_FAILURE); + } + else + { + /* This file is executable. + If it begins with #!, then help out people with losing operating + systems. Otherwise, check to see if it is a binary file by seeing + if the first line (or up to 30 characters) are in the ASCII set. + Execute the contents as shell commands. */ + extern char *shell_name; + int larray = array_len (args) + 1; + int i, should_exec = 0; + + { + int fd = open (command, O_RDONLY); + if (fd != -1) + { + unsigned char sample[80]; + int sample_len = read (fd, &sample[0], 80); + + close (fd); + + if (sample_len == 0) + return (EXECUTION_SUCCESS); + + /* Is this supposed to be an executable script? */ + /* If so, the format of the line is "#! interpreter [argument]". + A single argument is allowed. The BSD kernel restricts + the length of the entire line to 32 characters (32 bytes + being the size of the BSD exec header), but we allow 80 + characters. */ + + if (sample_len > 0 && sample[0] == '#' && sample[1] == '!') + return (execute_shell_script (sample, sample_len, command, + args, env)); +#if defined (NOTDEF) +#if defined (HAVE_CSH) && ( defined (Bsd) || defined (Ultrix) ) + /* If this system has Csh, then keep the old + BSD semantics. */ + else if (sample_len > 0 && sample[0] == '#') + { + /* Scripts starting with a # are for Csh. */ + shell_name = savestring ("/bin/csh"); + should_exec = 1; + } +#endif /* HAVE_CSH */ +#endif /* NOTDEF */ + else if ((sample_len != -1) && + check_binary_file (sample, sample_len)) + { + report_error ("%s: cannot execute binary file", command); + return (EX_BINARY_FILE); + } + } + } +#if defined (JOB_CONTROL) + /* Forget about the way that job control was working. We are + in a subshell. */ + without_job_control (); +#endif /* JOB_CONTROL */ +#if defined (ALIAS) + /* Forget about any aliases that we knew of. We are in a subshell. */ + delete_all_aliases (); +#endif /* ALIAS */ + +#if defined (JOB_CONTROL) + set_sigchld_handler (); +#endif /* JOB_CONTROL */ + set_sigint_handler (); + + /* Insert the name of this shell into the argument list. */ + args = (char **)xrealloc (args, (1 + larray) * sizeof (char *)); + + for (i = larray - 1; i; i--) + args[i] = args[i - 1]; + + args[0] = shell_name; + args[1] = command; + args[larray] = (char *)NULL; + + if (args[0][0] == '-') + args[0]++; + + if (should_exec) + { + struct stat finfo; + +#if defined (isc386) && defined (_POSIX_SOURCE) + __setostype (0); /* Turn on USGr3 semantics. */ + execve (shell_name, args, env); + __setostype (1); /* Turn the POSIX semantics back on. */ +#else + execve (shell_name, args, env); +#endif /* isc386 && _POSIX_SOURCE */ + + /* Oh, no! We couldn't even exec this! */ + if ((stat (args[0], &finfo) == 0) && (S_ISDIR (finfo.st_mode))) + report_error ("%s: is a directory", args[0]); + else + file_error (args[0]); + + return (EXECUTION_FAILURE); + } + else + { + extern jmp_buf subshell_top_level; + extern int subshell_argc; + extern char **subshell_argv; + extern char **subshell_envp; + + subshell_argc = larray; + subshell_argv = args; + subshell_envp = env; + longjmp (subshell_top_level, 1); + } + } + } +} + +#if defined (PROCESS_SUBSTITUTION) +void +close_all_files () +{ + register int i, fd_table_size; + + fd_table_size = getdtablesize (); + + for (i = 3; i < fd_table_size; i++) + close (i); +} +#endif /* PROCESS_SUBSTITUTION */ + +static void +close_pipes (in, out) + int in, out; +{ + if (in >= 0) close (in); + if (out >= 0) close (out); +} + +/* Redirect input and output to be from and to the specified pipes. + NO_PIPE and REDIRECT_BOTH are handled correctly. */ +static void +do_piping (pipe_in, pipe_out) + int pipe_in, pipe_out; +{ + if (pipe_in != NO_PIPE) + { + dup2 (pipe_in, 0); + close (pipe_in); + } + if (pipe_out != NO_PIPE) + { + dup2 (pipe_out, 1); + close (pipe_out); + + if (pipe_out == REDIRECT_BOTH) + dup2 (1, 2); + } +} + +/* Defined in flags.c. Non-zero means don't overwrite existing files. */ +extern int noclobber; + +#define AMBIGUOUS_REDIRECT -1 +#define NOCLOBBER_REDIRECT -2 +#define RESTRICTED_REDIRECT -3 /* Only can happen in restricted shells. */ + +/* Perform the redirections on LIST. If FOR_REAL, then actually make + input and output file descriptors, otherwise just do whatever is + neccessary for side effecting. INTERNAL says to remember how to + undo the redirections later, if non-zero. If SET_CLEXEC is non-zero, + file descriptors opened in do_redirection () have their close-on-exec + flag set. */ +static int +do_redirections (list, for_real, internal, set_clexec) + REDIRECT *list; + int for_real, internal; +{ + register int error; + register REDIRECT *temp = list; + + if (internal && redirection_undo_list) + { + dispose_redirects (redirection_undo_list); + redirection_undo_list = (REDIRECT *)NULL; + } + + while (temp) + { + extern char *strerror (); + + error = do_redirection_internal (temp, for_real, internal, set_clexec); + + if (error) + { + char *redirection_expand (), *itos (); + char *filename; + + if (expandable_redirection_filename (temp)) + { + filename = redirection_expand (temp->redirectee.filename); + if (!filename) + filename = savestring (""); + } + else + filename = itos (temp->redirectee.dest); + + switch (error) + { + case AMBIGUOUS_REDIRECT: + report_error ("%s: Ambiguous redirect", filename); + break; + + case NOCLOBBER_REDIRECT: + report_error ("%s: Cannot clobber existing file", filename); + break; + +#if defined (RESTRICTED_SHELL) + case RESTRICTED_REDIRECT: + report_error ("%s: output redirection restricted", filename); + break; +#endif /* RESTRICTED_SHELL */ + + default: + report_error ("%s: %s", filename, strerror (error)); + break; + } + + free (filename); + return (error); + } + + temp = temp->next; + } + return (0); +} + +/* Return non-zero if the redirection pointed to by REDIRECT has a + redirectee.filename that can be expanded. */ +static int +expandable_redirection_filename (redirect) + REDIRECT *redirect; +{ + int result; + + switch (redirect->instruction) + { + case r_output_direction: + case r_appending_to: + case r_input_direction: + case r_inputa_direction: + case r_err_and_out: + case r_input_output: + case r_output_force: + case r_duplicating_input_word: + case r_duplicating_output_word: + result = 1; + break; + + default: + result = 0; + } + return (result); +} + +/* Expand the word in WORD returning a string. If WORD expands to + multiple words (or no words), then return NULL. */ +char * +redirection_expand (word) + WORD_DESC *word; +{ + char *result; + WORD_LIST *make_word_list (), *expand_words_no_vars (); + WORD_LIST *tlist1, *tlist2; + + tlist1 = make_word_list (copy_word (word), (WORD_LIST *)NULL); + tlist2 = expand_words_no_vars (tlist1); + dispose_words (tlist1); + + if (!tlist2 || tlist2->next) + { + /* We expanded to no words, or to more than a single word. + Dispose of the word list and return NULL. */ + if (tlist2) + dispose_words (tlist2); + return ((char *)NULL); + } + result = string_list (tlist2); + dispose_words (tlist2); + + return (result); +} + +/* Do the specific redirection requested. Returns errno in case of error. + If FOR_REAL is zero, then just do whatever is neccessary to produce the + appropriate side effects. REMEMBERING, if non-zero, says to remember + how to undo each redirection. If SET_CLEXEC is non-zero, then + we set all file descriptors > 2 that we open to be close-on-exec. */ +static int +do_redirection_internal (redirect, for_real, remembering, set_clexec) + REDIRECT *redirect; + int for_real, remembering; +{ + WORD_DESC *redirectee = redirect->redirectee.filename; + int fd, redirector = redirect->redirector; + char *redirectee_word; + enum r_instruction ri = redirect->instruction; + REDIRECT *new_redirect; + + if (ri == r_duplicating_input_word || ri == r_duplicating_output_word) + { + /* We have [N]>&WORD or [N]<&WORD. Expand WORD, then translate + the redirection into a new one and continue. */ + redirectee_word = redirection_expand (redirectee); + + if (redirectee_word[0] == '-' && redirectee_word[1] == '\0') + { + new_redirect = make_redirection (redirector, r_close_this, 0); + } + else if (all_digits (redirectee_word)) + { + if (ri == r_duplicating_input_word) + { + new_redirect = make_redirection + (redirector, r_duplicating_input, atoi (redirectee_word)); + } + else + { + new_redirect = make_redirection + (redirector, r_duplicating_output, atoi (redirectee_word)); + } + } + else if (ri == r_duplicating_output_word && redirector == 1) + { + new_redirect = make_redirection + (1, r_err_and_out, make_word (redirectee_word)); + } + else + { + free (redirectee_word); + return (AMBIGUOUS_REDIRECT); + } + + free (redirectee_word); + + /* Set up the variables needed by the rest of the function from the + new redirection. */ + if (new_redirect->instruction == r_err_and_out) + { + char *alloca_hack; + + /* Copy the word without allocating any memory that must be + explicitly freed. */ + redirectee = (WORD_DESC *)alloca (sizeof (WORD_DESC)); + bcopy (new_redirect->redirectee.filename, + redirectee, sizeof (WORD_DESC)); + + alloca_hack = (char *) + alloca (1 + strlen (new_redirect->redirectee.filename->word)); + redirectee->word = alloca_hack; + strcpy (redirectee->word, new_redirect->redirectee.filename->word); + } + else + /* It's guaranteed to be an integer, and shouldn't be freed. */ + redirectee = new_redirect->redirectee.filename; + + redirector = new_redirect->redirector; + ri = new_redirect->instruction; + + /* Overwrite the flags element of the old redirect with the new value. */ + redirect->flags = new_redirect->flags; + dispose_redirects (new_redirect); + } + + switch (ri) + { + case r_output_direction: + case r_appending_to: + case r_input_direction: + case r_inputa_direction: + case r_err_and_out: /* command &>filename */ + case r_input_output: + case r_output_force: + + if (!(redirectee_word = redirection_expand (redirectee))) + return (AMBIGUOUS_REDIRECT); + +#if defined (RESTRICTED_SHELL) + if (restricted && (ri == r_output_direction || + ri == r_input_output || + ri == r_err_and_out || + ri == r_appending_to || + ri == r_output_force)) + { + free(redirectee_word); + return (RESTRICTED_REDIRECT); + } +#endif /* RESTRICTED_SHELL */ + + /* If we are in noclobber mode, you are not allowed to overwrite + existing files. Check first. */ + if (noclobber && (ri == r_output_direction || + ri == r_input_output || + ri == r_err_and_out)) + { + struct stat buf; + int stat_result; + + stat_result = stat (redirectee_word, &buf); + if ((stat_result == 0) && (S_ISREG (buf.st_mode))) + { + free (redirectee_word); + return (NOCLOBBER_REDIRECT); + } + /* If the file was not there, make sure we use exclusive open so + that if it's created before we open it, our open will fail. */ + if (stat_result != 0) + redirect->flags |= O_EXCL; + fd = open (redirectee_word, redirect->flags, 0666); + if (fd < 0 && errno == EEXIST) + { + free (redirectee_word); + return (NOCLOBBER_REDIRECT); + } + } + else + { + fd = open (redirectee_word, redirect->flags, 0666); +#if defined (AFS_CREATE_BUG) + if (fd < 0 && errno == EACCES) + fd = open (redirectee_word, (redirect->flags & ~O_CREAT), 0666); +#endif /* AFS_CREATE_BUG */ + } + + free (redirectee_word); + + if (fd < 0 ) + return (errno); + + if (for_real) + { + if (remembering) + /* Only setup to undo it if the thing to undo is active. */ + if ((fd != redirector) && (fcntl (redirector, F_GETFD, 0) != -1)) + add_undo_redirect (redirector); + else + add_undo_close_redirect (redirector); + + if ((fd != redirector) && (dup2 (fd, redirector) < 0)) + return (errno); + +#if defined (BUFFERED_INPUT) + if (ri == r_input_direction || ri == r_inputa_direction || + ri == r_input_output) + duplicate_buffered_stream (fd, redirector); +#endif /* BUFFERED_INPUT */ + + /* + * If we're remembering, then this is the result of a while, for + * or until loop with a loop redirection, or a function/builtin + * executing in the parent shell with a redirection. In the + * function/builtin case, we want to set all file descriptors > 2 + * to be close-on-exec to duplicate the effect of the old + * for i = 3 to NOFILE close(i) loop. In the case of the loops, + * both sh and ksh leave the file descriptors open across execs. + * The Posix standard mentions only the exec builtin. + */ + if (set_clexec && (redirector > 2)) + SET_CLOSE_ON_EXEC (redirector); + } + + if (fd != redirector) + { +#if defined (BUFFERED_INPUT) + if (ri == r_input_direction || ri == r_inputa_direction || + ri == r_input_output) + close_buffered_fd (fd); + else +#endif /* !BUFFERED_INPUT */ + close (fd); /* Don't close what we just opened! */ + } + + /* If we are hacking both stdout and stderr, do the stderr + redirection here. */ + if (ri == r_err_and_out) + { + if (for_real) + { + if (remembering) + add_undo_redirect (2); + if (dup2 (1, 2) < 0) + return (errno); + } + } + break; + + case r_reading_until: + case r_deblank_reading_until: + { + /* REDIRECTEE is a pointer to a WORD_DESC containing the text of + the new input. Place it in a temporary file. */ + int document_index = 0; + char *document = (char *)NULL; + + /* Expand the text if the word that was specified had no quoting. + Note that the text that we expand is treated exactly as if it + were surrounded by double-quotes. */ + + if (!redirectee) + document = savestring (""); + else + { + if (!redirectee->quoted) + { + WORD_LIST *temp_word_list = + (WORD_LIST *)expand_string (redirectee->word, + Q_HERE_DOCUMENT); + + document = string_list (temp_word_list); + if (!document) + document = savestring (""); + dispose_words (temp_word_list); + } + else + { + document = redirectee->word; + } + document_index = strlen (document); + + { + char filename[40]; + pid_t pid = getpid (); + + /* Make the filename for the temp file. */ + sprintf (filename, "/tmp/t%d-sh", pid); + + fd = open (filename, O_TRUNC | O_WRONLY | O_CREAT, 0666); + if (fd < 0) + { + if (!redirectee->quoted) + free (document); + return (errno); + } + + write (fd, document, document_index); + close (fd); + + if (!redirectee->quoted) + free (document); + + /* Make the document really temporary. Also make it the + input. */ + fd = open (filename, O_RDONLY, 0666); + + if (unlink (filename) < 0 || fd < 0) + return (errno); + + if (for_real) + { + if (remembering) + /* Only setup to undo it if the thing to undo is active. */ + if ((fd != redirector) && + (fcntl (redirector, F_GETFD, 0) != -1)) + add_undo_redirect (redirector); + else + add_undo_close_redirect (redirector); + + if (dup2 (fd, redirector) < 0) + return (errno); + +#if defined (BUFFERED_INPUT) + duplicate_buffered_stream (fd, redirector); +#endif + + if (set_clexec && (redirector > 2)) + SET_CLOSE_ON_EXEC (redirector); + } + +#if defined (BUFFERED_INPUT) + close_buffered_fd (fd); +#else + close (fd); +#endif + } + } + } + break; + + case r_duplicating_input: + case r_duplicating_output: + if (for_real && ((int)redirectee != redirector)) + { + if (remembering) + /* Only setup to undo it if the thing to undo is active. */ + if (fcntl (redirector, F_GETFD, 0) != -1) + add_undo_redirect (redirector); + else + add_undo_close_redirect (redirector); + + /* This is correct. 2>&1 means dup2 (1, 2); */ + if (dup2 ((int)redirectee, redirector) < 0) + return (errno); + +#if defined (BUFFERED_INPUT) + if (ri == r_duplicating_input) + duplicate_buffered_stream ((int)redirectee, redirector); +#endif /* BUFFERED_INPUT */ + + /* First duplicate the close-on-exec state of redirectee. dup2 + leaves the flag unset on the new descriptor, which means it + stays open. Only set the close-on-exec bit for file descriptors + greater than 2 in any case, since 0-2 should always be open + unless closed by something like `exec 2<&-'. */ + /* if ((already_set || set_unconditionally) && (ok_to_set)) + set_it () */ + if (((fcntl ((int)redirectee, F_GETFD, 0) == 1) || set_clexec) && + (redirector > 2)) + SET_CLOSE_ON_EXEC (redirector); + } + break; + + case r_close_this: + if (for_real) + { + if (remembering && (fcntl (redirector, F_GETFD, 0) != -1)) + add_undo_redirect (redirector); + +#if defined (BUFFERED_INPUT) + close_buffered_fd (redirector); +#else /* !BUFFERED_INPUT */ + close (redirector); +#endif /* !BUFFERED_INPUT */ + } + break; + } + return (0); +} + +#define SHELL_FD_BASE 10 + +/* Remember the file descriptor associated with the slot FD, + on REDIRECTION_UNDO_LIST. Note that the list will be reversed + before it is executed. */ +static int +add_undo_redirect (fd) + int fd; +{ + int new_fd, clexec_flag; + REDIRECT *new_redirect, *closer; + + new_fd = fcntl (fd, F_DUPFD, SHELL_FD_BASE); + + if (new_fd < 0) + { + file_error ("redirection error"); + return (-1); + } + else + { + clexec_flag = fcntl (fd, F_GETFD, 0); + closer = make_redirection (new_fd, r_close_this, 0); + new_redirect = make_redirection (fd, r_duplicating_input, new_fd); + new_redirect->next = closer; + closer->next = redirection_undo_list; + redirection_undo_list = new_redirect; + /* + * File descriptors used only for saving others should always be + * marked close-on-exec. Unfortunately, we have to preserve the + * close-on-exec state of the file descriptor we are saving, since + * fcntl (F_DUPFD) sets the new file descriptor to remain open + * across execs. If, however, the file descriptor whose state we + * are saving is <= 2, we can just set the close-on-exec flag, + * because file descriptors 0-2 should always be open-on-exec, + * and the restore above in do_redirection() will take care of it. + */ + if (clexec_flag || fd < 3) + SET_CLOSE_ON_EXEC (new_fd); + } + return (0); +} + +/* Set up to close FD when we are finished with the current command + and its redirections. */ +static void +add_undo_close_redirect (fd) + int fd; +{ + REDIRECT *closer; + + closer = make_redirection (fd, r_close_this, 0); + closer->next = redirection_undo_list; + redirection_undo_list = closer; +} + +intern_function (name, function) + WORD_DESC *name; + COMMAND *function; +{ + SHELL_VAR *var; + + if (!check_identifier (name)) + return (EXECUTION_FAILURE); + + var = find_function (name->word); + if (var && readonly_p (var)) + { + report_error ("%s: readonly function", var->name); + return (EXECUTION_FAILURE); + } + + bind_function (name->word, function); + return (EXECUTION_SUCCESS); +} + +/* Make sure that identifier is a valid shell identifier, i.e. + does not contain a dollar sign, nor is quoted in any way. Nor + does it consist of all digits. */ +check_identifier (word) + WORD_DESC *word; +{ + if (word->dollar_present || word->quoted || all_digits (word->word)) + { + report_error ("`%s' is not a valid identifier", word->word); + return (0); + } + else + return (1); +} + +#define u_mode_bits(x) (((x) & 0000700) >> 6) +#define g_mode_bits(x) (((x) & 0000070) >> 3) +#define o_mode_bits(x) (((x) & 0000007) >> 0) +#define X_BIT(x) (x & 1) + +/* Return some flags based on information about this file. + The EXISTS bit is non-zero if the file is found. + The EXECABLE bit is non-zero the file is executble. + Zero is returned if the file is not found. */ +int +file_status (name) + char *name; +{ + struct stat finfo; + static int user_id = -1; + + /* Determine whether this file exists or not. */ + if (stat (name, &finfo) < 0) + return (0); + + /* If the file is a directory, then it is not "executable" in the + sense of the shell. */ + if (S_ISDIR (finfo.st_mode)) + return (FS_EXISTS); + + /* Find out if the file is actually executable. By definition, the + only other criteria is that the file has an execute bit set that + we can use. */ + if (user_id == -1) + user_id = geteuid (); + + /* Root only requires execute permission for any of owner, group or + others to be able to exec a file. */ + if (user_id == 0) + { + int bits; + + bits = (u_mode_bits (finfo.st_mode) | + g_mode_bits (finfo.st_mode) | + o_mode_bits (finfo.st_mode)); + + if (X_BIT (bits)) + return (FS_EXISTS | FS_EXECABLE); + } + + /* If we are the owner of the file, the owner execute bit applies. */ + if (user_id == finfo.st_uid && X_BIT (u_mode_bits (finfo.st_mode))) + return (FS_EXISTS | FS_EXECABLE); + + /* If we are in the owning group, the group permissions apply. */ + if (group_member (finfo.st_gid) && X_BIT (g_mode_bits (finfo.st_mode))) + return (FS_EXISTS | FS_EXECABLE); + + /* If `others' have execute permission to the file, then so do we, + since we are also `others'. */ + if (X_BIT (o_mode_bits (finfo.st_mode))) + return (FS_EXISTS | FS_EXECABLE); + else + return (FS_EXISTS); +} + +/* Return non-zero if FILE exists and is executable. + Note that this function is the definition of what an + executable file is; do not change this unless YOU know + what an executable file is. */ +int +executable_file (file) + char *file; +{ + if (file_status (file) & FS_EXECABLE) + return (1); + else + return (0); +} + +/* DOT_FOUND_IN_SEARCH becomes non-zero when find_user_command () + encounters a `.' as the directory pathname while scanning the + list of possible pathnames; i.e., if `.' comes before the directory + containing the file of interest. */ +int dot_found_in_search = 0; + +/* Locate the executable file referenced by NAME, searching along + the contents of the shell PATH variable. Return a new string + which is the full pathname to the file, or NULL if the file + couldn't be found. If a file is found that isn't executable, + and that is the only match, then return that. */ +char * +find_user_command (name) + char *name; +{ + return (find_user_command_internal (name, FS_EXEC_PREFERRED)); +} + +/* Locate the file referenced by NAME, searching along the contents + of the shell PATH variable. Return a new string which is the full + pathname to the file, or NULL if the file couldn't be found. This + returns the first file found. */ +char * +find_path_file (name) + char *name; +{ + return (find_user_command_internal (name, FS_EXISTS)); +} + +static char * +find_user_command_internal (name, flags) + char *name; + int flags; +{ + char *path_list = (char *)NULL; + SHELL_VAR *var; + + /* Search for the value of PATH in both the temporary environment, and + in the regular list of variables. */ + if (var = find_variable_internal ("PATH", 1)) + path_list = value_cell (var); + + if (!path_list) + return (savestring (name)); + + return (find_user_command_in_path (name, path_list, flags)); +} + +/* Return the next element from PATH_LIST, a colon separated list of + paths. PATH_INDEX_POINTER is the address of an index into PATH_LIST; + the index is modified by this function. + Return the next element of PATH_LIST or NULL if there are no more. */ +static char * +get_next_path_element (path_list, path_index_pointer) + char *path_list; + int *path_index_pointer; +{ + extern char *extract_colon_unit (); + char *path; + + path = extract_colon_unit (path_list, path_index_pointer); + + if (!path) + return (path); + + if (!*path) + { + free (path); + path = savestring ("."); + } + + return (path); +} + +char * +user_command_matches (name, flags, state) + char *name; + int flags, state; +{ + register int i; + char *path_list; + int path_index; + char *path_element; + char *match; + static char **match_list = NULL; + static int match_list_size = 0; + static int match_index = 0; + + if (!state) + { + /* Create the list of matches. */ + if (!match_list) + { + match_list = + (char **) xmalloc ((match_list_size = 5) * sizeof(char *)); + + for (i = 0; i < match_list_size; i++) + match_list[i] = 0; + } + + /* Clear out the old match list. */ + for (i = 0; i < match_list_size; i++) + match_list[i] = NULL; + + /* We haven't found any files yet. */ + match_index = 0; + + path_list = get_string_value ("PATH"); + path_index = 0; + + while (path_list && path_list[path_index]) + { + char *find_user_command_in_path (); + + path_element = get_next_path_element (path_list, &path_index); + + if (!path_element) + break; + + match = find_user_command_in_path (name, path_element, flags); + + free (path_element); + + if (!match) + continue; + + if (match_index + 1 == match_list_size) + match_list = (char **)xrealloc + (match_list, ((match_list_size += 10) + 1) * sizeof (char *)); + match_list[match_index++] = match; + match_list[match_index] = (char *)NULL; + } + + /* We haven't returned any strings yet. */ + match_index = 0; + } + + match = match_list[match_index]; + + if (match) + match_index++; + + return (match); +} + +/* Return 1 if PATH1 and PATH2 are the same file. This is kind of + expensive. If non-NULL STP1 and STP2 point to stat structures + corresponding to PATH1 and PATH2, respectively. */ +int +same_file (path1, path2, stp1, stp2) + char *path1, *path2; + struct stat *stp1, *stp2; +{ + struct stat st1, st2; + + if (stp1 == NULL) + { + if (stat (path1, &st1) != 0) + return (0); + stp1 = &st1; + } + + if (stp2 == NULL) + { + if (stat (path2, &st2) != 0) + return (0); + stp2 = &st2; + } + + return ((stp1->st_dev == stp2->st_dev) && (stp1->st_ino == stp2->st_ino)); +} + +/* This does the dirty work for find_path_file () and find_user_command (). + NAME is the name of the file to search for. + PATH_LIST is a colon separated list of directories to search. + FLAGS contains bit fields which control the files which are eligible. + Some values are: + FS_EXEC_ONLY: The file must be an executable to be found. + FS_EXEC_PREFERRED: If we can't find an executable, then the + the first file matching NAME will do. + FS_EXISTS: The first file found will do. +*/ +static char * +find_user_command_in_path (name, path_list, flags) + char *name; + char *path_list; + int flags; +{ + char *full_path, *path, *file_to_lose_on; + int status, path_index, name_len; + struct stat finfo; + + name_len = strlen (name); + + /* The file name which we would try to execute, except that it isn't + possible to execute it. This is the first file that matches the + name that we are looking for while we are searching $PATH for a + suitable one to execute. If we cannot find a suitable executable + file, then we use this one. */ + file_to_lose_on = (char *)NULL; + + /* We haven't started looking, so we certainly haven't seen + a `.' as the directory path yet. */ + dot_found_in_search = 0; + + if (absolute_program (name)) + { + full_path = (char *)xmalloc (1 + name_len); + strcpy (full_path, name); + + status = file_status (full_path); + + if (!(status & FS_EXISTS)) + return (0); + + if ((flags & FS_EXEC_ONLY) && (status & FS_EXECABLE)) + return (full_path); + else + { + free (full_path); + return ((char *)NULL); + } + } + + /* Find out the location of the current working directory. */ + stat (".", &finfo); + + path_index = 0; + while (path_list && path_list[path_index]) + { + /* Allow the user to interrupt out of a lengthy path search. */ + QUIT; + + path = get_next_path_element (path_list, &path_index); + + if (!path) + break; + + if (*path == '~') + { + char *tilde_expand (); + char *t = tilde_expand (path); + free (path); + path = t; + } + + /* Remember the location of "." in the path, in all its forms + (as long as they begin with a `.', e.g. `./.') */ + if ((*path == '.') && + same_file (".", path, &finfo, (struct stat *)NULL)) + dot_found_in_search = 1; + + full_path = (char *)xmalloc (2 + strlen (path) + name_len); + sprintf (full_path, "%s/%s", path, name); + free (path); + + status = file_status (full_path); + + if (!(status & FS_EXISTS)) + goto next_file; + + /* The file exists. If the caller simply wants the first file, + here it is. */ + if (flags & FS_EXISTS) + return (full_path); + + /* If the file is executable, then it satisfies the cases of + EXEC_ONLY and EXEC_PREFERRED. Return this file unconditionally. */ + if (status & FS_EXECABLE) + { + if (file_to_lose_on) + free (file_to_lose_on); + + return (full_path); + } + + /* The file is not executable, but it does exist. If we prefer + an executable, then remember this one if it is the first one + we have found. */ + if (flags & FS_EXEC_PREFERRED) + { + if (!file_to_lose_on) + file_to_lose_on = savestring (full_path); + } + + next_file: + free (full_path); + } + + /* We didn't find exactly what the user was looking for. Return + the contents of FILE_TO_LOSE_ON which is NULL when the search + required an executable, or non-NULL if a file was found and the + search would accept a non-executable as a last resort. */ + return (file_to_lose_on); +} + +/* Given a string containing units of information separated by colons, + return the next one pointed to by INDX, or NULL if there are no more. + Advance INDX to the character after the colon. */ +char * +extract_colon_unit (string, indx) + char *string; + int *indx; +{ + int i, start; + + i = *indx; + + if (!string || (i >= strlen (string))) + return ((char *)NULL); + + /* Each call to this routine leaves the index pointing at a colon if + there is more to the path. If I is > 0, then increment past the + `:'. If I is 0, then the path has a leading colon. Trailing colons + are handled OK by the `else' part of the if statement; an empty + string is returned in that case. */ + if (i && string[i] == ':') + i++; + + start = i; + + while (string[i] && string[i] != ':') i++; + + *indx = i; + + if (i == start) + { + if (string[i]) + (*indx)++; + + /* Return "" in the case of a trailing `:'. */ + return (savestring ("")); + } + else + { + char *value; + + value = (char *)xmalloc (1 + (i - start)); + strncpy (value, &string[start], (i - start)); + value [i - start] = '\0'; + + return (value); + } +} + +/* Return non-zero if the characters from SAMPLE are not all valid + characters to be found in the first line of a shell script. We + check up to the first newline, or SAMPLE_LEN, whichever comes first. + All of the characters must be printable or whitespace. */ + +#if !defined (isspace) +#define isspace(c) ((c) == ' ' || (c) == '\t' || (c) == '\n' || (c) == '\f') +#endif + +#if !defined (isprint) +#define isprint(c) (isletter(c) || digit(c) || ispunct(c)) +#endif + +int +check_binary_file (sample, sample_len) + unsigned char *sample; + int sample_len; +{ + register int i; + + for (i = 0; i < sample_len; i++) + { + if (sample[i] == '\n') + break; + + if (!isspace (sample[i]) && !isprint (sample[i])) + return (1); + } + return (0); +} diff --git a/bash-20060316/CWRU/old-changelogs/CHANGES.051093 b/bash-20060316/CWRU/old-changelogs/CHANGES.051093 new file mode 100644 index 000000000..c7637b59b --- /dev/null +++ b/bash-20060316/CWRU/old-changelogs/CHANGES.051093 @@ -0,0 +1,115 @@ +This file details the changes between the previous release of CWRU bash +(3/10/93) and this release. + +1. Bugs Fixed + +New version of endian.c that handles 64-bit machines better + +added code to make readline reset itself when $TERMINFO changes + +fixed memory leaks in: + builtins/exec.def + lib/readline/history.c + lib/readline/readline.c + parse.y + subst.c + variables.c + dispose_cmd.c + mailcheck.c + bashline.c + execute_cmd.c + shell.c + +make sure that bash_symbolic_link_hook calls get_working_directory with a +non-empty string argument + +check the return value of getdtablesize() for bad values + +make the job control tty handlers print error message only if the shell is +currently interactive + +process substitution no longer tries to close every file descriptor + +fixed up the source to contain more extern function declarations rather than +casting the return values + +fixed up handling of embedded quoted strings by the parser so that $ is not +a special character while parsing one + +added escape handling to the read builtin so backslashes can escape $IFS +characters + +fixed the brace expansion code so that backslash can act as a delimiter and +can escape `"' in a double-quoted string + +the `<>' redirection needs to open the file O_RDWR|O_CREAT for Posix.2 +compatibility + +fixed up the here document reading code so that it will remove backslash- +quoted newlines if the document delimiter is not quoted + +fixed up the unwind_protect_var code so that the same strategy is used +for both saving and restoring variables + +completion functions may now tell readline not to attempt filename completion +by returning (char **) -1 + +improved the error message printed by get_working_directory + +Compile for solaris if either USGr4 or __svr4__ is defined + +bash does not perform a getwd() on startup unless the inherited value of +$PWD is wrong or $PWD was not in the environment + +fixed up the trap saving and restoring code so that savetrap=$(trap) works +like Posix.2 says it should + +non-interactive shells are now much better about cleaning up dead processes +and jobs on both job control and non job control systems + +fixed the code that saves and restores the dollar variables around a `.' +script so that if the script changes the positional parameters, the old +values are not restored + +fixed the tokenizer so that it will not return ASSIGNMENT_WORD while +parsing a case statement pattern list + +redid the implementation of cprintf for systems without varargs + +fixed up the variable expansion code so that illegal variable names in ${ } +expansion now generate errors rather than produce incorrect results + +fixed up some problems with default_buffered_input and the implicit redirection +of fd 0 to /dev/null for asynchronous commands without job control + +new function internal_error for shell internal error messages + +changed the sigint signal handler in nojobs.c to do nothing when it's called, +not even run a signal handler + +made the command substitution code more careful about file descriptors when +errors occur + +2. New Features + +SIGWINCH causes bash to reset the values of $LINES and $COLUMNS for both +readline and non-readline systems + +changed the code in readline that handled conditional parsing of `$if term=' +to test the terminal name given to $if against both the `long' and `short' +(portion up to the first `-') forms of the terminal name + +the completion code now single-quotes a match that contains a shell word +break character + +the readline code does not define USE_XON_XOFF. This causes output to be +swallowed when using bash over a relatively slow line (like a modem line). + +there is now a bindable readline function to do only history expansion; +bound to M-^ (M-! was already taken) + +ulimit now has a -u option to set and get the limit for the maximum number +of user processes + +config.h.mini is a `minimal' configuration file that compiles out just about +everything diff --git a/bash-20060316/CWRU/old-changelogs/CHANGES.071193 b/bash-20060316/CWRU/old-changelogs/CHANGES.071193 new file mode 100644 index 000000000..6d24c8f77 --- /dev/null +++ b/bash-20060316/CWRU/old-changelogs/CHANGES.071193 @@ -0,0 +1,63 @@ +This file details the changes between the previous release of CWRU bash +(5/10/93) and this release. + +1. Bugs Fixed + +commas within backquotes inside matching braces are now treated as +quoted (e.g., echo {`echo foo:bar | sed s/:/,/`}) + +don't create the export env unless we are running a command with +shell_execve (in execute_disk_command), and don't create it anew +each time a child is forked + +make execute_disk_command look in the temp environment for an +assignment to PATH, and disable hash lookup for the command if +such an assignment is present + +fixed here documents so that backslash-quoted newlines are treated as +Posix.2 specifies + +removed a number of extraneous unwind-protects or moved them inside +if statements + +only call rl_reset_terminal in sv_term if we're actually using readline + +only run traps on SIGCHLD if job_control != 0 + +fixed readline so it won't try to pass memory allocated with alloca() to +a separate function + +cleaned up the readline global function and variable namespace, and split +some more code out from readline.c into separate files + +added header files that declare extern functions rather than having those +extern declarations littered throughout the code + +readline now allows ^T to be undone + +fixed readline so that characters whose screen representation is > 1 +character (e.g., \354) are erased correctly + +the read builtin no longer attempts to split its input into words if +$IFS is unset + +changed the terminating signals that bash catches so they're reset to +their original handlers when a child is forked + +the Gnu malloc library code was upgraded to Gnu libc version 1.06 + +the Gnu termcap library code was upgraded to Gnu termcap version 1.02 + +the man page was updated to cover the bind -m option + +2. New Features + +Bash now notices if it's running setuid or setgid and disables $ENV +processing and importing shell functions from the environment + +New flag: -p/-o privileged, set if the shell is running setuid or setgid. +Turning this off causes the effective uid and gid to be set to the +real uid and gid + +New machine descriptions for the Intel Paragon, Symmetric 375, NeXT 486, +and HP running 4.4 BSD diff --git a/bash-20060316/CWRU/old-changelogs/CHANGES.090393 b/bash-20060316/CWRU/old-changelogs/CHANGES.090393 new file mode 100644 index 000000000..f38e5f219 --- /dev/null +++ b/bash-20060316/CWRU/old-changelogs/CHANGES.090393 @@ -0,0 +1,140 @@ +This file details the changes between the previous release of CWRU bash +(07/11/93) and this release. + +1. Bugs Fixed + +Readline's vi-mode once again has TAB bound to completion; entering `posix +mode' changes it to self-insert + +Bash now binds its special emacs-mode functions directly into +emacs_meta_keymap so that eight-bit character handling does not interfere + +Some source restructuring: more extern functions are defined in header files +and not in C source files + +The handling of `line number' inside functions is now more correct and +closer to reality + +Some functions of `general use' were moved to general.c (vfree, +full_pathname) + +A bug that caused some redirections to be applied twice was fixed in +execute_command_internal (dispose of redirection_undo_list after copying it; +ditto for exec_redirection_undo_list) + +The exit status of a command that is not found is 126, as Posix.2 specifies + +More speed improvements -- bash now runs as fast as the SunOS sh on +Haertel's `shell benchmark' + +Instead of returning pointers to -1, bash and the readline, history, and +glob libraries now return pointers to special `error pointers', which the +calling code checks for in place of -1 + +Fixed a problem with canonicalize_pathname which made it get +confused with xxx/./yyy if yyy was `.' or `..' + +Fixes to make bash recognize SVR4.2 and set USGr4_2 for SVR4.2 systems + +Fixes to the HP/UX machine descriptions to make alloca work on HPUX_9 +and to avoid `M_MACHINE redefined' warnings + +Fixes to the CRAY machine description + +Fixes to the mailpath code to make it Posix.2-compliant -- backslash +may now quote `%' and `?' + +The namespace was further cleaned up, and more functions and variables +were made static + +On systems with S_IFSOCK or S_ISSOCK defined in sys/stat.h, bash checks +whether fd 0 is a socket to decide whether or not it's being started by +rshd and to run the startup files + +Bash now gives the signal mask it inherits to its children -- previously, +login shells cleared the signal mask + +cpp-Makefile and subst.c both used the `USE_GLOB_LIBRARY' define, but +with different meanings; subst.c now uses `USE_POSIX_GLOB_LIBRARY' + +Fixed pattern substitution so that ${a%%$b}, where b was unset, no longer +causes a core dump + +Changed the `test_exit' define in test.c to no longer use `longjmp' as +the rhs or a comma-ized expression; this causes core dumps on some +optimizer/machine combinations + +A speed hack in variables.c: if no local variables are defined for a level +of shell context, kill_all_local_variables does not need to search the +whole variable hash table when popping a context + +Fixed the `bind' builtin so that -m now changes the keymap for all of the +subsequent operations + +Changed some more builtins to use internal_getopt: bind, command, export, +readonly, declare, typeset + +Fixed fc to use the Posix.2 format for listing commands in the +history list + +Changed bg to set `!', as Posix.2 specifies + +Fixed ulimit.def to compile if RLIMIT_RSS is not defined, +as some systems seem to have it + +Replaced lib/malloc/alloca.c with the version from emacs 19. The old one +lives in alloca.c.old + +malloc.c now uses the ANSI C features to `stringize' macro arguments if +__STDC__ is defined + +Fixes to the GNU malloc library from glibc 1.06 and Mike Haertel + +Fixes to readline key binding and lookup for Cray systems, which don't +like the casting that readline does + +Fixes to all readline library source files to clean up the code: make sure +`int'-returning functions use `return x;' rather than `return;', declare all +arguments, even the `int' ones, and make some functions void. Cleaned up +the code formatting a little, too. + +The readline completer now double-quotes filenames with special word-break +characters, so that tilde expansion still works + +^C now breaks out of keyboard macros + +If being compiled as part of the shell, readline no longer attempts to +handle SIGTTIN, SIGTTOU, or SIGTSTP + +tilde_expansion_failure_hook is now a CPFunction rather than a Function, +since that's how it's used + +Readline vi-mode `change case' function now skips over characters which +are neither upper nor lower case + +Readline vi-mode now allows replacement to be redoable with `.' + +2. New Features + +A `strict Posix.2' mode, enabled with the -posix startup option or +setting the POSIXLY_CORRECT variable (see CWRU/POSIX.NOTES for a +description of the changed behavior) + +`ONESHOT' is now an option in config.h + +cpp-Makefile assumes that fixed header files are present if gcc is being +used + +The redirections attached to a function declaration are now part of that +function, applied when the function is executed, as specified by Posix.2. +This caused a change to parse.y that resulted in 66 shift/reduce +conflicts(!) + +All of the OP= functions that Posix.2 specifies are now implemented for +both `let' and arithmetic substitution + +The `command' builtin has acquired the Posix.2 `-v' and `-V' options +(this shares code with the `type' builtin) + +A new `bash_builtins' man page, like the `csh_builtins' page on some +systems diff --git a/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v10 b/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v10 new file mode 100644 index 000000000..9fe2a7ae5 --- /dev/null +++ b/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v10 @@ -0,0 +1,3177 @@ + +[code made available via ftp -- first redistributable version] + + 9/3 + --- +lib/readline/history.c + - removed stray extern declaration of strrchr() + - made get_history_word_specifier a static function + +lib/readline/readline.c + - removed redundant declaration of rl_visible_stats + +execute_cmd.c + - make sure that the subshell forked to execute ( xxx yyy ) & + sets original_pgrp to -1 so that ( exec xxx yyy ) & does not + make the exec builtin restore the original process group + + 9/4 + --- + +builtins/read.def + - free `t' *only if* it was assigned the value from + string_list_dollar_star when more words are read than variables + supplied + +variables.c + - moved some external function declarations to file scope + +test.c + - changed the unary_advance and advance macros to use the + do { ... } while (0) idiom rather than the comma operator + + 9/5 + --- +builtins/getopts.def + - if __GNU_LIBRARY__ is defined, change getopt_set_posix_option_order + to a macro, because getopt.c will not be compiled in + + 9/7 + --- +subst.c + - support $POSIX_PEDANTIC as a synonym for $POSIXLY_CORRRECT + +builtins/set.def + - added support for `set -o posix' + - changed list_long_opts to use a define (`MINUS_O_FORMAT') for + the format argument to printf + +bashline.c, execute_cmd.c, jobs.c, nojobs.c, print_cmd.c, subst.c, test.c, +variables.c + - moved extern declarations from function scope to file scope, or + removed extern function declarations already appearing in bash + header files + +bashline.c + - include alias.h if ALIAS defined + +lib/readline/history.h + - added extern declaration for history_tokenize + +shell.c + - changed run_startup_files to use the global value of + posixly_correct instead of the posix_env argument, which was + eliminated + +lib/readline/readline.c + - changed alphabetic() so we're not casting the return value + from strchr() to an int + + 9/8 + --- +builtins/ulimit.def + - disable the getrlimit stuff if GETRLIMIT_MISSING is defined + +machines.h + - define GETRLIMIT_MISSING for the Sequent Symmetry + - change the M_OS define to `Dynix_ptx' for the Sequent Symmetry + - take HAVE_ALLOCA out of the Symmetry definition + - removed extra HAVE_ALLOCA define from linux machine description + +cpp-Makefile + - add $OSTYPE to HOSTTYPE_DECL, defining it as ${OS_NAME} + +variables.c + - make a variable $OSTYPE analogous to $HOSTTYPE, set from the + OSTYPE define from cpp-Makefile + +documentation/bash.1 + - added description of $OSTYPE + +parse.y + - changed report_syntax_error so that syntax errors set $? to 2 + like sh and ksh do + +lib/readline/funmap.c + - added bindings for the non-incremental `search again' functions + like those that vi uses + +expr.c, general.c, builtins/trap.def, builtins/common.c + - removed some extraneous extern function declarations + + 9/9 + --- +jobs.h + - added some more extern function declarations exported by jobs.c + +parse.y, bashline.c, shell.c, builtins/common.c + - removed some extraneous extern function declarations + +builtins/common.h + - fixed the extern declaration of parse_and_execute_cleanup + +lib/readline/readline.h + - added more extern function declarations for functions in bind.c + and complete.c + - include tilde.h instead of redeclaring the tilde variables and + functions + +parse.y + - made with_input_from_stream and with_input_from_stdin void + functions + - made the yy_*_get and yy_*_unget functions static + +shell.c + - made all the initialize functions static void + +trap.h + - added extern declarations for the rest of the functions defined + in trap.c + +trap.c + - made initialize_traps a void function, since it has no return + value + +externs.h + - new file, with function declarations not mentioned in other header + files. Included by shell.h. + +cpp-Makefile, builtins/Makefile + - updated the dependencies to include new header files + +bashline.c, execute_cmd.c, jobs.c, general.c, mailcheck.c, make_cmd.c, +nojobs.c, parse.y, print_cmd.c, shell.c, subst.c, test.c, trap.c, +variables.c, builtins/common.c, builtins/bind.def, builtins/declare.def, +builtins/exec.def, builtins/hash.def, builtins/let.def, builtins/source.def, +builtins/trap.def, builtins/type.def, error.c + - removed extern function declarations already in externs.h + +lib/tilde/tilde.h, jobs.h + - protect against multiple inclusion with #ifdef __XXX_H__ + +jobs.h + - added extern declaration of job_control + +general.c + - include and remove all of the extern declarations + for the tilde variables + +lib/readline/history.h + - added extern declarations for variables exported by history.c + +execute_cmd.c + - don't bother trying to free the string passed to make_child in + the child if the command is not found + +bashhist.c, bashhist.h + - new files with bash interface to the history library. Moved code + from parse.y, shell.c, subst.c to here. + +parse.y, bashline.c, shell.c, subst.c, variables.c + - include bashhist.h + +error.c, bashhist.c, bracecomp.c + - added copyright comment + +machines.h + - changed hpux_8 and hpux_9 entries to #undef USE_GNU_MALLOC + because they have the same YP bug as SunOS + + 9/10 + ---- +print_cmd.c + - fixed the printing of functions declared within functions by + making print_function_def and named_function_string responsible + for printing the open and close braces and printing the `inside' + command rather than overloading print_group_command + +builtins/fc.def, builtins/history.def + - fixed up to use bashhist.h and removed extra declarations of + history stuff + +nojobs.c + - restore the top-level signal mask on Posix.1 systems after + forking in make_child + - make all children set the job control signals to SIG_DFL in + make_child + + 9/12 + ---- +documentation/texi2roff-2.0.shar + - removed from the source tree + + 9/13 + ---- +lib/doc-support + - new directory for building texindex + +lib/doc-support/texindex.c + - upgraded to version 1.45 from the texinfo-3.1 distribution + +documentation/Makefile + - fixed so that features.dvi would build correctly + +variables.c, subst.c, braces.c, flags.c, jobs.c, mailcheck.c, parse.y, +builtins/cd.def, builtins/common.c, lib/readline/history.c, +lib/readline/isearch.c, lib/readline/readline.c + - removed instances of `index' being used as a variable or + structure member + +cpp-Makefile + - pass HAVE_LIMITS_H through to the rest of the build in + SYSTEM_FLAGS and LIBRARY_CFLAGS + +maxpath.h + - removed inclusion of `sysdefs.h', since the only reason it was + included was to pick up HAVE_LIMITS_H + + 9/14 + ---- +bashhist.h + - add extern declaration of history_expansion_inhibited, dependent + on BANG_HISTORY + +execute_cmd.c, builtins/common.c, subst.c, variables.c, parse.y, jobs.c, +error.c, bashline.c + - moved all extern variable declarations to beginning of file, + giving them file scope + +execute_cmd.c + - changed the code so that /dev/null is used as fd 0 for async + jobs if the shell itself is not interactive (!interactive_shell) + rather than currently interactive (!interactive) + +builtins/break.def, builtins/cd.def, builtins/declare.def +builtins/exit.def, builtins/fc.def, builtins/fg_bg.def builtins/hash.def, +builtins/kill.def builtins/read.def, builtins/return.def, +builtins/setattr.def builtins/source.def, builtins/type.def, +builtins/wait.def + - moved all extern variable declarations to beginning of file, + giving them file scope + + 9/15 + ---- +support/mksysdefs + - change the test to set SCOREL so that it handles SCO v4.2 and + above (everything above and including 4.0) + +machines.h + - changed M_OS define of `Solaris' to `SunOS5'; added -DSolaris to + SYSDEP_CFLAGS for Solaris 2 systems + + 9/16 + ---- +print_cmd.c + - make sure cprintf() null-terminates the_printed_command correctly + +test.c + - changed the last two stray stat() calls to test_stat() + - made test_stat handle emulation of /dev/fd for systems that + don't have it: /dev/fd/x returns the result of fstat(x, finfo) + +documentation/bash.1 + - added -b to the usage line for the `set' builtin + - added description of `set -o posix' + - added -u, -v to the usage line for the `ulimit' builtin + - added text describing key bindings in ~/.inputrc to the + READLINE section + +documentation/texinfo.tex + - upgraded to the latest version from the texinfo-3.1 distribution + +documentation/features.texi, lib/readline/doc/rluser.texinfo, +lib/readline/doc/hsuser.texinfo + - a major overhaul and expansion + + 9/17 + ---- +bashline.c + - set rl_vi_comment_begin to "#" when in Posix.2 mode + +lib/readline/vi_mode.c + - set vi mode comment begin character string to "#" by default + + 9/18 + ---- +lib/readline/bind.c + - added `set keymap' command to the init file variable setting code + +documentation/bash.1, documentation/features.texi + - added description of `set keymap' command + +lib/readline/doc/rluser.texinfo + - completed description of init file and keybinding syntax + + 9/20 + ---- +variables.c + - if POSIXLY_CORRECT or POSIX_PEDANTIC are in the initial shell + environment, enter `Posix.2 mode' + +machines.h + - define SCO REQUIRED_LIBRARIES as `-lc_s -lc -lPW' to pick up + the functions in libc and libPW from libc (e.g. rename) + + + 9/21 + ---- +execute_cmd.c + - fixed X_BIT macro to protect its argument with parens in the + macro body + +maxpath.h + - include sys/param.h on Dynix machines if MAXPATHLEN is not + defined after including limits.h + +general.c + - moved the inclusion of on Posix.1 systems up with the + rest of the includes + +shell.c, lib/readline/complete.c, lib/tilde/tilde.c + - don't extern declare getpwuid on Dynix machines + +lib/readline/history.c + - make sure strlen() is cast to int whenever used in a comparison + + 9/23 + ---- +lib/readline/readline.c + - changed rl_call_last_kbd_macro to disallow recursive macro + execution + + 9/26 + ---- +bashline.c + - free rl_vi_comment_begin before assigning to it; make sure to + savestring() what we assign to it + + 9/28 + ---- +lib/readline/search.c + - in noninc_search, make the ^W and ^U bindings closer to what + Posix.2 specifies. (The ^W binding still uses unix_word_rubout, + which uses whitespace as the word boundary. This is what + ksh-88 does, too. Posix.2 says to use punctuation characters + as word boundaries also.) + +lib/readline/vi_mode.c + - fixed a bug in rl_vi_delete_to which caused c[wW] to delete one + extra character when there were multiple spaces between words. + Made the same change to rl_vi_change_to() and rl_vi_yank_to(). + +lib/readline/complete.c + - fixed quoted substring completion so that `\' can quote the + quote character + - fixed the quoted string completion mechanism by doing the + following: + o quoted word break characters do not break words for the + completer, so `"abcde"/xhy' no longer sends `/xhy' to + the rest of the completion code + o quotes are stripped after the application-specific + completion function is attempted if filename completion + is about to be performed. If needed, they are added + back later. This has the benefit of removing unneeded + quotes. + + 9/29 + ---- +siglist.h + - ICL DRS6000s need sys_siglist to be defined as _sys_siglist + +machines.h + - take the define of sys_siglist out of the DRS6000 entry + - added summary of available definitions for SYSDEP_CFLAGS + - added new SYSDEP_CFLAGS variable: HAVE_GETPW_DECLS to isc386, sgi, + Linux, Dynix descriptions + - changed isc386 description: added ISC_SYSDEPS to make the + SYSDEP_CFLAGS lines a little cleaner + +shell.c, lib/tilde/tilde.c, lib/readline/complete.c + - now uses HAVE_GETPW_DECLS define + +lib/tilde/tilde.c + - removed references to getpwent(), since it's not called + - add extern declaration for getpwnam() + +lib/readline/complete.c + - add a __STDC__ definition for getpwnam() for isc386 machines + +cpp-Makefile + - updated the dependencies: bashhist.h, bashansi.h, dependencies + on the library include files + + 9/30 + ---- +mailcheck.c + - cleaned up the name space by making functions not used by other + files static + - took out redundant test in check_mail after the goto next_mail_file + +variables.c + - cleaned up the code a bit by removing unnecessary { ... } pairs + enclosing some code blocks + - check for $IGNOREEOF at startup, call sv_ignoreeof if imported + +parse.y + - new variable `ignoreeof', non-zero if we are ignoring EOF, used + in handle_eof_input_unit -- keeps us from looking up $IGNOREEOF + and $ignoreeof on every EOF character + +subst.c + - sv_ignoreeof now sets or clears `ignoreeof' + +flags.h + - changed flags_alist `name' member to be a char, since we only + ever use one character + - added FLAG_UNKNOWN to be returned by find_flag, since (int *)-1 + is not portable, and (int *)0 is just as good a value + +flags.c + - changed find_flag, change_flag_char, change_flag, to take a + char as a parameter rather than a char * because we only use + one char and this is faster + +builtins/set.def + - changed calls to find_flag to pass a char instead of a char * + +shell.c, jobs.c, builtins/set.def + - changed instances of change_flag_char to change_flag, since the + two are now equivalent + +cpp-Makefile + - added BUILTIN_OBJS, made BUILTINS_LIB depend on them + - added dependencies for builtin objects on builtin .def files + - otherwise tightened up the dependencies + + 10/1 + ---- +support/mksysdefs + - handle SGI Irix 5.x by making SYSDEF="Irix5" + +parse.y + - made init_yy_io a void function + +input.h + - moved extern function declarations for parse.y and input.c to + this file from externs.h + +shell.c + - include input.h unconditionally, now that it has extern function + declarations + - check for $POSIX_PEDANTIC at shell startup, set posixly_correct + if found + +make_cmd.c + - include input.h for the extern function declarations + +execute_cmd.h + - new file, with extern declarations from execute_cmd.c + +subst.c, builtins/type.def, variables.h, builtins/exec.def, builtins/hash.def, +shell.c, buitlins/common.c, execute_cmd.c, mailcheck.c + - include execute_cmd.h + +cpp-Makefile, builtins/Makefile + - updated the dependencies as a result of the new and changed + include files + +execute_cmd.h, externs.h, input.h + - changed to use the __P(()) method of using prototypes for extern + functions + +nojobs.c + - include command.h + + 10/5 + ---- +bashline.c + - make sure test_for_directory frees the filename if stat(2) + fails + +lib/readline/vi_mode.c + - fixed the `c' command when used with the following motion + commands: `^', `0', `%', `b', `B'. The cursor was being + moved one position too far, resulting in too much erasure + +parse.y + - changed redirection_needing_here_document into a stack of + such redirections (redir_stack), indexed by need_here_doc, + to handle command lines with >1 redirection, e.g. + cat <word being non-null in dispose_word before trying + to free it + + 10/8 + ---- +variables.c + - made new_shell_variable static + - made set_var_read_only, set_func_read_only, set_var_auto_export, + set_func_auto_export, sort_char_array, maybe_make_export_env, + put_command_name_into_env void functions + +variables.h + - added declarations for all the missing extern functions + +builtins/hash.def + - include posixstat.h for definition of struct stat to use in + function prototype declarations + +expr.c + - renamed local function `assignment' to `expassign' to avoid + clashing with the global `assignment' defined in variables.c + +builtins/source.def + - include `execute_cmd.h' to pick up extern function declarations + +trap.h + - protected against multiple inclusion with __TRAP_H__ define + - added prototypes with __P + + 10/11 + ----- +support/mksysdefs + - check in /usr/include/ansi and /usr/include/bsd for NeXT 3.x + machines + +lib/readline/vi_mode.c + - include rldefs.h + + 10/12 + ----- +test.c + - changed the `-x' test to call access(2) when AFS is defined, + since `stat' doesn't work with AFS + +builtins/cd.def + - added code to dirs_builtin to implement dirs -n and dirs +n + +documentation/bash.1, documentation/features.texi + - updated description of `dirs' builtin + + 10/14 + ----- +lib/readline/bind.c + - new function _rl_bind_if_unbound, which binds a key sequence to a + readline function if that key sequence is unbound + +lib/readline/readline.c + - use _rl_bind_if_unbound to try to bind the arrow keys in + init_terminal_io + + + 10/15 + ----- + +lib/readline/display.c + - laid the groundwork for expanding special characters in + readline prompt strings: new function expand_prompt + - rl_redisplay now has static local prompt variables: + local_prompt: expanded prompt string after last newline + local_prompt_prefix: expanded prompt string before last newline + visible_length: number of visible chars in local_prompt + prefix_length: number of visible chars in local_prompt_prefix + changed when rl_display_prompt changes + + 10/18 + ----- +lib/readline/display.c + - new function: rl_expand_prompt, expands the prompt and sets the + local display variables to the right values for redisplay. + - changed rl_redisplay to use the values computed by rl_expand_prompt + if rl_display_prompt == rl_prompt and the old expansion code if + otherwise (for instance, if rl_display_prompt is set by rl_message) + +lib/readline/readline.c + - new function: rl_get_termcap to retrieve the value of any termcap + attribute that readline retrieves + - made readline_internal static, added appropriate declarations + - new global library variable: rl_visible_prompt_length + - added call to rl_expand_prompt in readline() before call to + rl_initialize + +lib/readline/search.c + - use rl_visible_prompt_length instead of strlen(rl_prompt) in + noninc_search () + + 10/19 + ----- +execute_cmd.c + - in execute_command_internal, mark an async job with a forced + subshell `( xxx ) &' as no longer an interactive shell, no + matter whether or not the original shell was interactive. This + allows jobs to be reaped without notification and fixes a mem + `leak' (not really a leak, but the shell keeps increasing the + size of the jobs table) + + 10/21 + ----- +machines.h + - updated the NEC EWS description with hints from Jim Blandy + + 10/23 + ----- + +lib/readline/display.c + - changed expand_prompt so that it understands `escape' characters + to mark the beginning and end of a sequence of non-visible + characters, and takes these into account when returning the + length of the prompt string + +lib/readline/readline.h + - new defines: RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE + + 10/24 + ----- + +parse.y + - removed check for $NO_PROMPT_VARS from decode_prompt_string() + +documentation/bash.1 + - removed reference to $NO_PROMPT_VARS + + 10/25 + ----- +machines.h + - add -lc_s to the AIX/PS2 REQUIRED_LIBRARIES definition + +lib/readline/readline.c + - removed the extra space that rl_yank_nth_arg adds before the + yanked string + + 10/26 + ----- +trap.c + - set_sigint_handler now sets the SIGINT handler to sigint_sighandler + only if `interactive' is set, rather than interactive_shell. This + fixes the `". x", then sigint' bug reported by Vasco Pedro. + +general.c + - removed `register' from variable declarations in function prologues + - some functions now take slightly different arguments: + delete_element takes a `char *' as the third argument + find_name_in_list takes a `char **' as the second argument + +general.h + - changed definition of REVERSE_LIST to cast the argument of the + call to reverse_list() + - added prototypes for all extern functions defined in general.c + - definition of BCOPY for use in general.c and elsewhere + +shell.c + - changed some calls to reverse_list to REVERSE_LIST + +shell.h, make_cmd.c, unwind_prot.c, input.c, builtins.h, error.c + - include command.h before general.h for declaration of WORD_LIST + +execute_cmd.c, expr.c, general.c, input.c, shell.c, unwind_prot.c, parse.y + - changed calls to bcopy to call xbcopy instead, and cast the + first two arguments to char * + +copy_cmd.c + - changed calls to bcopy to call BCOPY instead + +machines.h + - new machine definition for IBM AIX/ESA (OSF/1) from Sergio + Gelato + +support/mksysdefs + - If `uname -m' returns `ESA', the machine is an IBM ESA + +lib/posixheaders/memalloc.h + - new file, to unify the code to include if necessary + and declare alloca() + +config.h, config.h.mini, lib/readline/rldefs.h, lib/readline/history.c, +lib/readline/isearch.c, lib/readline/search.c, lib/tilde/tilde.c + - changed to include "memalloc.h" + +builtins/getopt.c + - don't include #pragma alloca line on IBM ESA systems + - include malloc.h rather than alloca.h for AIX/ESA + +support/getcppsyms.c + - new defines to support AIX/ESA + +cpp-Makefile, builtins/Makefile, lib/readline/Makefile + - updated dependency information to include memalloc.h + +lib/readline/vi_keymap.c + - `\' in vi insertion mode should be mapped to self-insert rather + than quoted-insert + + 10/27 + ----- +nojobs.c + - added variable `already_making_children', made a function + start_pipeline called from make_child to set it, value cleared + in stop_pipeline. This is how jobs.c treats it. + +execute_cmd.c + - in the `subshell' code in execute_command_internal, we need to + handle a possible `return' if in a function: + f() + { + echo x | ( read b ; return 1 ) + return 0 + } + and treat it like an `exit' + - already_making_children is no longer a job-control only variable + - made the code that decides whether or not to wait for a child + process in the simple_command case of execute_command_internal + be the same for job control and non-job control shells, since + already_making_children has been put into nojobs.c + +lib/readline/display.c + - changed the display code to handle invisible characters in the + prompt and still wrap lines at the correct column. wrap_offset + is the variable used to keep track of the number of invisible + characters in the buffer + - changed rl_redisplay to use `screenchars' from readline.c so we + don't have to compute (screenwidth * screenheight) on each + redisplay + +lib/readline/readline.c + - new variable `screenchars', set to the total number of characters + on the screen we can use (screenwidth * screenheight) + - changed rl_refresh_line so that it computes the line that the + cursor is on correctly, taking invisible characters into account + + 10/28 + ----- +general.h + - changed declaration of vfree to xfree + +general.c + - renamed vfree to xfree, since some systems already have a vfree() + in libc + +execute_cmd.c, jobs.c, builtins/read.def, builtins/common.c + - changed vfree to xfree + +shell.c + - for systems that don't define USG and define ENOTSOCK, try to + use getpeername() in issock() to find out whether or not an + fd is a socket + +documentation/bash.1, documentation/features.texi + - documented the new \[ and \] prompt string escape sequences + +documentation/bash.1, lib/readline/doc/rluser.texinfo + - documented the new `show-all-if-ambiguous' readline variable + +lib/readline/complete.c + - changed rl_complete to call rl_complete_internal with `!' if + the variable `_rl_complete_show_all' is non-zero + - changed rl_complete_internal to show all matches if there is + more than one and what_to_do is `!' + +lib/readline/bind.c + - new variable `show-all-if-ambiguous' to control the value of + _rl_complete_show_all + - changed a call to alloca() in rl_parse_and_bind to a + malloc/free pair (`seq' variable), since some systems do not + allow alloca'd memory to be passed to a function + - did the same alloca -> xmalloc/free in rl_generic_bind + (`keys' variable) + + 10/29 + ----- +dispose_cmd.h, make_cmd.h, command.h + - added prototypes for the extern function declarations + +variables.c + - BSD/386 needs getenv to have a `const char *' argument + +make_cmd.c + - changed make_until_or_while to a static function + +command.h + - removed extern declarations for functions in make_cmd.c; those + are in make_cmd.h + + 11/1 + ---- +input.c + - make sure that sync_buffered_stream returns a value + +test.c + - make sure that binary_operator returns a value + + 11/2 + ---- +cpp-Makefile + - added a definition of GCC_LINT_FLAGS and GCC_LINT_CFLAGS to + generate lint-like warnings from gcc + +siglist.h + - cast references to sys_siglist[] in the `strsignal' macro + for the benefit of Linux + +jobs.c, nojobs.c + - changed all absolute references to sys_siglist to call the + strsignal macro instead + +lib/readline/{readline.c,display.c,signals.c} + - _rl_output_character_function is an int + +lib/readline/rltty.c + - outchar should return an int + +general.c + - use %ld to printf longs + +builtins/trap.def + - reordered code and eliminated some brace groups + +builtins/ulimit.def + - open_files() should return a long + +shell.h + - include if HAVE_VARARGS_H is defined, not simply if + HAVE_VFPRINTF is defined + +parse.y, execute_cmd.c, subst.c, trap.c, jobs.c + - make sure that all function parameters are declared explicitly + and not defaulted to int + +builtins/fg_bg.def + - fixed a bug where last_asynchronous_pid could be set to a random + value if an unknown job or a non-job-control job was selected + +test.c + - added a missing `%s' to a call to test_syntax_error + +cpp-Makefile + - renamed `endian.h' to `bash-endian.h'; it seems that linux and + gnu libc use it in /usr/include. What a pain in the ass. + + 11/4 + ---- +machines.h + - add `#define HAVE_VARARGS_H' to the Linux machine description; + the auto-configuration process is unable to find it in the gcc + private include directories + + 11/5 + ---- +cpp-Makefile + - COMPRESS_EXT should be `.gz' + +general.h + - have the BCOPY define for USG machines use `memmove' rather than + `memcpy', since that handles overlapping objects correctly + +lib/readline/display.c + - fixed the line updating code that checked whether a new line was + shorter or had fewer invisible characters that the visible line, + and called clear_to_eol with the right value and only in the + right cases + +machines.h + - added separate machine descriptions for NetBSD and FreeBSD + +builtins/command.def + - don't try to call confstr() on NetBSD + + 11/6 + ---- +machines.h + - define HAVE_BCOPY for sgi + - define HAVE_GETHOSTNAME for Linux and HPUX machines later than + hpux 6.2 + +general.h + - remove the `if defined (sgi) from the clause that defines BCOPY + +general.c + - use new HAVE_BCOPY and HAVE_GETHOSTNAME defines instead of the + OS-specific symbols used before + + 11/8 + ---- +machines.h + - for i386 machines running aix/ps2, use USE_TERMCAP_EMULATION, + since the terminfo database is more up-to-date than termcap + +lib/readline/complete.c + - make sure that X_OK is defined for the VISIBLE_STATS code + +config.h, builtins/echo.def + - added a DEFAULT_ECHO_TO_USG option for the echo builtin + +lib/readline/rldefs.h + - Xenix 2.2 systems, while mostly USGr3, do not have `sighold' + and related functions + +lib/readline/isearch.c + - added a variable `prev_line_found' to keep the incremental + searches from finding the same line two or more times in a + row + +support/getcppsyms.c + - recognize `_M_XENIX' and `mc68k32' symbols from cpp + +tests/run-dollar-at-star-test + - use `../bash' to point at the bash executable rather than + `../../sun4/bash' + +general.h + - some systems have a `strerror' define, so we need to protect + the extern function declaration + +trap.h + - use SIG_DFL rather than NSIG as the test of whether or not to + include , since Posix.1 does not require NSIG + + 11/9 + ---- +subst.c + - new function get_word_from_string to slice a field off the front + of a string and skip trailing separators according to $IFS + +builtins/read.def + - changed read_builtin to use get_word_from_string to `incrementally' + do word splitting on the line read so that if fewer variable names + are given than words read, the separators in the original line are + preserved. This makes `read' Posix.2 compliant. + + 11/10 + ----- +cpp-Makefile + - add a sentinel file `parser-built' for y.tab.c and y.tab.h to + depend on, since there's no rule for telling make how to build + y.tab.h + +shell.c + - removed the #ifdef AUX code that sets up a 4.2 compatible + environment in favor of using the -ZP option to cc to create + a Posix executable (AUX 3.0) + +jobs.c + - changed sigwinch_sighandler so that it saves the window size + struct with the new values in shell_tty_info.c_winsize on AIX PS/2 + Since readline calls the old sigwinch handler, this code should + be called no matter when the signal is received + +support/mksysdefs + - add code to define AIX_13 on AIX PS/2 version 1.3 machines + +machines.h + - there are different SYSDEP_CFLAGS and REQUIRED_LIBRARIES for + AIX PS/2 1.2 and 1.3, so use the AIX_13 define to differentiate + + 11/11 + ----- +execute_cmd.c + - speedups and fixes for here document processing in + do_redirection_internal: don't do string processing we can + avoid, use stdio to help with write buffering if we're + expanding the document, close some file descriptor leaks + +make_cmd.c + - speed up gathering here documents: avoid expensive calls to + strncmp when possible, avoid a stupid strcpy when stripping + leading tabs, use BCOPY instead of strcpy + +print_cmd.c + - made varargs and non-varargs versions of cprintf() as similar + as possible + - redid the_printed_command_resize() to be a little smarter about + allocating memory + +subst.c + - sped up string_list_internal by allocating all the necessary + space before copying rather than using xrealloc, using BCOPY + and an `end ptr' instead of strcat, trying not to call strlen + to get the separator length + - sped up sub_append_string by using BCOPY instead of strcat, + being smarter about memory allocation, and cutting down calls + to strcpy + - sped up expand_string_internal by not calling the + make_word/dispose_word pair, but by filling in a local + WORD_DESC, short-circuiting if the string is null or empty + - don't bother trying to split words in expand_string_leave_quoted + if expand_string_internal returns a null list + - ditto for dequoting in expand_string_unsplit + +lib/readline/vi_mode.c + - removed `w' and `W' from the list of characters that do not + require the point to be moved after a call to rl_vi_domove + in rl_vi_delete_to (`d') and rl_vi_yank_to (`y'). Only the + `c' command (rl_vi_change_to) requires this behavior + + 11/12 + ----- +subst.c + - make sure all places which call expand_word_internal are + prepared to deal with error returns (expand_word_error + and expand_word_fatal) by adding a convenience function + call_expand_word_internal that performs the call and deals + with the possible error returns. This keeps the shell + from dumping core on some errors + +lib/readline/vi_mode.c + - make sure is included before rldefs.h + +parse.y + - changed read_a_line to use and re-use a static line buffer + +make_cmd.c + - no longer need to free full_line, since read_a_line (called + from read_secondary_line), does not allocate a new one on + each call + +builtins/psize.c, alias.c + - need to include command.h before general.h + + 11/15 + ----- +documentation/features.texi, lib/readline/doc/{hsuser,rluser}.texi + - fixed some spelling errors and typos + +endian.c + - include for size_t + +Makefile.inc + - new file, included in cpp-Makefile, providing biolerplate Gnu + make definitions + +cpp-Makefile + - include Makefile.inc + - added `distclean', `realclean' targets as per Gnu coding + standards + + 11/17 + ----- +cpp-Makefile + - `make install' now installs the documentation in $(mandir) and + $(infodir) + - `make documentation' now passes $(MFLAGS) to the sub-make + +documentation/Makefile + - now has an `install' target + +config.h + - RESTRICTED_SHELL is no longer automatically defined + +support/mksysdefs + - Intel paragons (uname -m = paragon) need MAKE_ANSI set to true + +lib/readline/history.c + - create the history file with mode 0600, since it's supposed to + be private information + +builtins/fc.def + - make sure we put in the tab and `*' only if the line is actually + being listed to stdout rather than to a file for reexecution + + 11/17 + ----- +machines.h + - fixed a typo in the hpux machine description + - added some SYSDEP_CFLAGS to the __BSD_4_4__ description + +README + - corrected mail address for bash-maintainers + +jobs.h + - don't declare fork (), getpid (), and getpgrp () on __BSD_4_4__ + + 11/18 + ----- +subst.c + - fix to string_list_internal to make it return a null string if + handed a null list + +parse.y + - fix to find_reserved_word: `word' is declared as the argument, but + `token' is what's used in the body + +lib/malloc/alloca.c + - Crays need to define _getb67() as CRAY_STACKSEG_END + +machines.h + - ISC machines should be using USE_TERMCAP_EMULATION + + 11/19 + ----- +lib/readline/Makefile, lib/tilde/Makefile, lib/glob/Makefile, cpp-Makefile + - change instances of `make' in recipes to `$(MAKE) $(MFLAGS)' + +machines.h + - SunOS4 needs `OPENDIR_NOT_ROBUST' + - recognize a Motorola M88100 if m88k and USGr4 are defined, since + support/mksysdefs sets SYSDEF to USGr4 rather than M88100 for + the Motorola V.4 + - changes to the ISC entry to handle ISC version 4 as well as + version 3 using cc and gcc to compile + +shell.c + - fixed a typo (__POSIX_VERSION -> _POSIX_VERSION) + - fixed a problem with reset_terminating_signals which caused the + wrong signal numbers to be checked for being trapped or + handled specially + +lib/readline/vi_keymap.c + - ^H in movement mode should by default be mapped to rl_backward + - delete (^?) should be unbound in the default movement mode keymap + +lib/readline/vi_mode.c + - rl_vi_last_arg should insert a space before inserting the last + argument, according to Posix.2 + +getcwd.c + - correctly declare the second argument as a size_t if __STDC__ + is defined + + 11/20 + ----- +builtins/fc.def + - go back to the ad-hoc option parsing style, because the builtin + getopt does not handle things like `fc -l -10' correctly + +support/mksysdefs + - fixed a typo problem defining $UnicosMachine that left a comment + unclosed + +lib/malloc/alloca.c + - bug fix from Bill Jones for CRAY_STACKSEG_END define + +config.h, execute_cmd.c + - fix for CRAY and defining `word' + +machines.h + - Crays need to define OPENDIR_NOT_ROBUST + +bashtypes.h + - sys/types.h with handling for multiple inclusion and Cray + peculiarities + +execute_cmd.c, make_cmd.c, parse.y, subst.c + - include `bashtypes.h' rather than + + 11/22 + ----- +machines.h + - add definitions of CRAY_STACKSEG_END for Cray XMP and YMP + - removed OLD_CRAY_DESCRIPTION stuff + +lib/readline/rldefs.h + - encapsulate CRAY peculiarities with casting pointers to ints + inside two defines: FUNCTION_TO_KEYMAP and KEYMAP_TO_FUNCTION + +lib/readline/bind.c, lib/readline/readline.c + - change code to use FUNCTION_TO_KEYMAP and KEYMAP_TO_FUNCTION + +maxpath.h + - include on the convex, but not on bsdi + +newversion.c + - overhauled and cleaned up + - added the `-patch' argument to set the patch level of the shell + - look in `.patchlevel' for the patch level and write it out as + PATCHLEVEL + +version.c + - new variable patch_level + +shell.c + - the version string is now `dist.patch(build)' + - new function shell_version_string returns a pointer to the + version string, show_shell_version changed to use it + +variables.c + - bind $BASH_VERSION to the value of shell_version_string () + + 11/23 + ----- +machines.h + - SCO machines now include -DPGRP_PIPE in the SYSDEP_CFLAGS define + - HPUX_9 needs an #undef HAVE_RESOURCE; it appears that they've + finally removed getrusage + +trap.c + - signal_name should return an error when passed NSIG + +parse.y + - add AND_AND and OR_OR to the list of tokens which are not followed + by a semicolon + - decrement current_command_line_count if pre_process_line returns + a null or empty string, otherwise the next input line may be + combined with the previous line inappropriately + + 11/24 + ----- +machines.h + - the KSR/1 section should be delimited by `__ksr1__', added some + SYSDEP_CFLAGS to that description + +support/mksysdefs + - quote all the arguments to expr + +support/getcppsyms.c + - recognize and pass on `__ksr1__' + +lib/readline/bind.c + - new inputrc variable `output-meta', which means output meta + chars without converting them to M- sequences + +lib/readline/readline.c + - new variable `_rl_output_meta_chars' to hold value of + `output-meta', initially off + - slight efficiency improvement to rl_insert_text, rl_forward, + rl_backward + - changed the order of args to rl_kill_text in rl_unix_word_rubout + so that multiple words can be killed and yanked out in the + `right' order + +lib/readline/display.c + - changes to use the value of `_rl_output_meta_chars' to decide how + to output characters with the eighth bit set + +documentation/bash.1, lib/readline/doc/rluser.texinfo + - documented new readline `output-meta' variable + +lib/readline/complete.c + - make the replacement of typed text by a completion match be a + single undoable event + +builtins/type.def + - call user_command_matches specifying FS_EXEC_ONLY as the search + criteria. This keeps test from finding directories + +bashhist.c + - changed maybe_save_shell_history so that if the history has + been stifled then the history file is replaced with the current + history list + + 11/29 + ----- +builtins/exec.def + - if the shell is restricted, exec is not allowed + +cpp-Makefile + - more changes for GNU standards: VPATH, libdir, srcdir + +jobs.h + - remove machine-specific undefining of HAVE_WAIT_H + +machines.h + - cadmus systems need to #undef HAVE_WAIT_H + - hpux_usg and hpux_6 systems need to #undef HAVE_WAIT_H + - added a section for `Irix5' to the sgi section + +documentation/Makefile + - fixed up the install for bash_builtins.1 so that it sets the .so + path correctly + +shell.c + - renamed issock to isnetconn and made its inclusion unconditional + - added a check for S_ISCHR for SVR4 and SVR4.2 systems to isnetconn + +subst.c + - added code so that `history_control=ignoreboth' works + +documentation/bash.1, documentation/features.texi + - added a description of `ignoreboth' to the text describing + `history_control' + + 11/30 + ----- +input.c + - don't print an error message in check_bash_input if the fnctl + to dup the file descriptor fails unless the file descriptor + is already active + +jobs.c, nojobs.c + - set bash_input.location.buffered_fd to -1 when setting + default_buffered_input to -1 in make_child. This fixes + the `( echo hi 1>&3 ) 3>&1 >/dev/null' spurious error message + +shell.c, error.c + - removed the automated bug report code + +support/bashbug.c + - is no more + +Makefile + - added GNU boilerplate definitions + +support/bashbug.sh, support/mkbashbug + - new files for a BSD sendbug-like bug reporting shell script + +cpp-Makefile + - changes to use $(SUPPORT_SRC) instead of $(SDIR) under some + circumstances + - removed references to support/bashbug.c + - new target to make bashbug from $(SUPPORT_SRC)/bashbug.sh using + $(SUPPORT_SRC)/mkbashbug + - bashbug is now created by default + - don't build endian.aux or create bash-endian.h if HAVE_WAIT_H + is defined, because it will end up being unused anyway + +machines.h + - add OPENDIR_NOT_ROBUST to the isc386 description + +signames.c + - make the signal_names array 2 * NSIG long to hack around HP/UX + misfeature + +builtins/test.def + - fixed the help text for -t to note the the fd argument is not + optional + + 12/1 + ---- +builtins/common.c + - changed parse_and_execute so that it no longer unconditionally + sets `interactive' to 0. It is now the responsibility of callers + of parse_and_execute to set it how they want, and reset it if + necessary + +shell.c, subst.c, builtins/source.def + - changed the functions that call parse_and_execute to manage the + value of `interactive' + +shell.c + - changed maybe_execute_file so that it takes a second argument + saying whether or not to force the value of `interactive' to 0 + - changed all calls to maybe_execute_file to add a second arg + +builtins/fc.def, builtins/exit.def + - changed all calls to maybe_execute_file to add the second arg + Now background jobs re-run with `fc -s' echo the job number + +externs.h + - changed the function prototype for maybe_execute_file + + 12/2 + ---- +execute_cmd.c + - rewrote the auto-resume code in execute_simple_command for clarity + - added the `substring' value for auto_resume to cause a command that + matches a substring of a stopped job to restart that job + +documentation/bash.1, documentation/features.texi + - added a description of the possible values for `auto_resume' and + their effects on the shell's behavior + +machines.h + - added a generic desription for SVR4 running on the sparc from + Ian Stewartson + +Makefile + - added a command to the bash-Makefile target that will remove + bash-Makefile and (hopefully) stop the make if something happens + and bash-Makefile is created with zero length + + 12/3 + ---- +machines.h + - add -DOPENDIR_NOT_ROBUST to the SYSDEP_CFLAGS for SCO + - if compiling with gcc on SCO, link with -lc_s and -lc in + REQUIRED_LIBRARIES + + 12/6 + ---- +builtins/source.def + - new variable `sourcelevel' which is incremented each time `.' + is called and decremented before source_builtin returns + +variables.c + - find_variable should call find_variable with a second parameter + of 1 if `builtin_env' is non-null, so it will search it. This + ensures that all builtins inside a script read with `.' with a + temporary environment will get the right values + +subst.c + - fix for get_word_from_string: white space should be removed from + the beginning of the string if $IFS is " \t\n" + +execute_cmd.c + - in `Posix.2 mode', redirections should not perform filename + expansion when the shell is not interactive + + 12/7 + ---- +support/getcppsyms.c + - recognize `__i386__' + +lib/readline/bind.c + - only free and reassign `last_readline_init_file' if it has + changed (`filename' points to something different) in + rl_read_init_file + +builtins/ulimit.def + - add a `$DEPENDS_ON !MINIX' line so that this won't be built + under MINIX + +config.h + - Minix machines need JOB_CONTROL undefined + +cpp-Makefile + - don't define libraries with absolute pathnames; use -llibname + instead + - make sure MALLOC_LIBRARY is defined even if the Gnu malloc is + not being used for the benefit of `LD_HAS_NO_DASH_L' + +general.c + - use a `TIMEVAL_MISSING' define to decide whether or not to + try to print a struct timeval * rather than simply `USG' + +lib/readline/parens.c + - don't try to include unless FD_SET is defined + +lib/readline/vi_keymap.c + - fix incorrect cast of rl_abort in vi_movement_keymap + +signames.c + - make sure NSIG is defined + +siglist.c + - include `trap.h' to pick up definition of NSIG if it's undefined + +siglist.h + - minix uses _sys_siglist and does not need an external declaration + for it + + 12/8 + ---- +lib/readline/readline.c + - add `ks' and `ke' to the termcap attributes that readline retrieves + +lib/readline/rltty.c + - new function `control_keypad' to enable and disable keypad keys. + Some systems need this before the arrow keys will work + - call control_keypad to enable and disable the keypad from the + terminal prep and deprep code + + 12/9 + ---- +support/mksysdefs + - added code a la trn `Configure' to search a list of include + directories for each .h file of interest. Done by defining a + variable containing the code fragement we want to execute and + calling `eval' on this string for each file + +lib/readline/bind.c + - slightly changed the filenames used by rl_read_init_file. Now + the filename used is the first non-null file from this list: + 1. the filename used for the previous call + 2. the value of the shell variable `INPUTRC' + 3. ~/.inputrc + +documentation/bash.1 + - added descriptions of INPUTRC to the shell variables and + readline sections + +documentation/features.texi + - added a description of INPUTRC to the shell variables section + +lib/readline/doc/rluser.texi + - added description of the INPUTRC environment variable + - changed instances of ~/.inputrc to the more generic `init file' + or `inputrc file' + +lib/readline/complete.c + - added #defines for the possible values of `do_replace' rather + than relying on magic numbers + - if a completion that needs double quotes starts with a tilde, + rl_complete_internal now performs tilde expansion before + quoting the string, since the shell allows double quotes to + inhibit tilde expansion + + 12/10 + ----- +lib/readline/readline.c + - new function to kill the whole line no matter what point is: + rl_kill_full_line () + +lib/readline/readline.h + - extern declaration for rl_kill_full_line () + +lib/readline/funmap.c + - rl_kill_full_line is available as `kill-entire-line' + +cpp-Makefile + - remove `.machine' when `make clean' run + +subst.c, subst.h + - made expand_string_leave_quoted static again + + 12/14 + ----- +shell.c + - use HAVE_SOCKETS define to decide whether to include + and call getsockname(); defined automatically for non-USG systems + if ENOTSOCK is defined + + 12/15 + ----- +bashline.c, flags.c, flags.h, jobs.c, subst.c, builtins/common.c, +builtins/cd.def + - changed `follow_symbolic_links' to `no_symbolic_links', with an + opposite meaning + +flags.c, flags.h + - new shell option, -P/-o physical set if no_symbolic_links is set + - changed a sequence of `if' statements into a switch statement in + change_flag + +documentation/bash.1, documentation/features.texi + - added documentation for the -P/-o physical option + +builtins/cd.def + - follow_symbolic_links is now declared in flags.c and declared + extern here + +builtins/set.def + - code to set and get the value of -P/-o physical + - fixed up the help text and short documentation string + - made `set -?' print a usage message + +subst.c + - made sv_nolinks set the new variable `no_symbolic_links' + + 12/17 + ----- +machines.h + - add -DUSG to HPUX_CFLAGS + - hpux 9 does not need -lPW and can use the gnu malloc if gcc + is being used + +config.h + - remove the code that defines USG for HPUX, Xenix, and UNIXPC + in favor of putting it into the machines.h entry + + 12/19 + ----- +flags.h + - added prototypes for the extern function declarations from flags.c + +*.h + - added copyrights to the include files which were missing them + +lib/readline/vi_mode.c + - rl_vi_yank_nth arg inserted the space in the wrong spot before + yanking the last argument + - removed the call to rl_vi_insertion_mode because of changes to + rl_yank_nth_arg + +lib/readline/readline.c + - changed rl_yank_nth_arg so that vi mode inserts a space in the + right spot + - fixed rl_yank_nth_arg so that yanking into an empty line does + not corrupt the buffer + +lib/readline/search.c + - fixed noninc_search so that ^H and RUBOUT call rl_rubout + explicitly + +bashline.c + - fix for operate_and_get_next to make ^O work on the most + recent line even if the history is unstifled. From Seth + Robertson. XXX - may not be right + +parse.y + - set interactive to 0 before calling parse_and_execute in + execute_prompt_command to stop infinite recursion through + this function + +shell.c + - moved the code that executes PROMPT_COMMAND to parse_command + +parse.y + - removed the code that executes PROMPT_COMMAND from read_token + to avoid confusing non-reentrant versions of yacc + - made execute_prompt_command global, not static + +input.h + - new declaration for execute_prompt_command + +jobs.c + - made give_terminal_to return -1 if tcsetpgrp fails + - initialize_jobs now prints a message if job_control ends up being + set to 0 + +support/mkmachtype + - shell script stolen from emacs 19 that attempts to output the + `GNU-style' machine type, e.g. sparc-sun-sunos4.1.2. Named + `mkmachtype' because I envision people assigning its output to + a MACHTYPE variable + + + 12/20 + ----- +execute_cmd.c + - if a command is found in the temporary $PATH, don't add it to + the hash table + +error.c + - changed report_error so that the script name is echoed instead + of the shell name if the shell is not interactive + + 12/22 + ----- +machines.h + - made the Sun description unconditionally #undef USE_GNU_MALLOC + because memory access bugs are legion in libc in SunOS 4.x and 5.x + +jobs.c + - disabled printing an error message when the tcgetattr in + get_tty_state() fails + + 12/27 + ----- +cpp-Makefile, jobs.h + - renamed bash-endian.h to bash_endian.h + +machines.h + - NeXT machines need to #undef HAVE_DIRENT_H, since it requires + ANSI/POSIX defines that make the rest of the compilation fail + - SGI irix 5.x machines need -DNO_SBRK_DECL in SYSDEP_CFLAGS + - machine descriptions for OSF/1 running on i386 and MIPS machines + from Michael Meissner + + 12/28 + ----- +expr.c + - fixed so that blank expressions evaluate to 0 rather than an + error ($[ ] or $(( ))) + +lib/readline/readline.c + - new variable `_rl_bell_preference' replacing _rl_prefer_visible_bell + - changed ding() to use _rl_bell_preference + +lib/readline/rldefs.h + - definitions for NO_BELL, AUDIBLE_BELL, and VISIBLE_BELL + +lib/readline/bind.c + - changed rl_variable_bind to parse the `bell-style' variable and its + possible values (`none', `audible', or `visible'), keeping + `prefer-visible-bell' for backwards compatibility + +documentation/bash.1, lib/readline/doc/rluser.texinfo + - added descriptions of the `bell-style' and `expand-tilde' + readline variables + +general.c + - changed set_signal_handler for posix systems to attempt to + restart all interrupted system calls execept for SIGALRM + +trap.c + - changed restore_signal to use set_signal_handler() instead of + signal() + - added a new function set_signal_ignored to set the SIG_HARD_IGNORE + flag for a particular signal + +execute_cmd.c + - call set_signal_ignored for SIGINT and SIGQUIT in the child if + the command is asynchronous after calling restore_original_signals, + since restore_original_signals will undo work done by make_child + done in a new function setup_async_signals + +execute_cmd.h + - extern declaration for setup_async_signals + +subst.c + - call setup_async_signals when making the child for process + substitution + +jobs.c, nojobs.c + - removed code from make_child that sets SIGINT and SIGQUIT to + SIG_IGN, since setup_async_signals now does that + +shell.c + - let throw_to_top_level call longjmp with DISCARD if the shell + is an interactive shell, but not yet initialized + + 12/29 + ----- +config.h + - define PROCESS_SUBSTITUTION if HAVE_DEV_FD is defined, even if + MKFIFO_MISSING is also defined + +execute_cmd.c + - close pipes created using /dev/fd for process substitution at + the same time as the pipes for conventional piping are closed + +subst.c + - when the /dev/fd list is initialized, clamp the total number of + file descriptors at 256, but make sure there is room enough to + store a bit for the fd passed to add_fifo_list + + 12/30 + ----- +lib/readline/readline.c + - change a strncpy() in rl_delete_text to a for loop, since some + versions of strncpy can't handle overlapping arguments + +lib/readline/chardefs.h + - definition for digit_value(x) + +lib/readline/history.c + - changed calls to sscanf followed by an empty for loop that consumes + the digits to a for loop that computes the value as it goes along + in get_history_word_specifier() + - added `x*' and `x-' history word designators from csh + - added new `&' modifier to repeat previous substitution + - experimental implementation of `q' modifier to quote substituted + words by calling single_quote on the substituted string + +lib/readline/history.c, builtins/fc.def + - changed a loop using strncmp() to find one string in another for + substitution to test the current character against the first + character of the pattern before calling strncmp() + +documentation/bash.1, lib/readline/doc/hsuser.texinfo + - documented the new history word designators + - documented new `&' and `q' history modifiers + + 1/1 + --- +parse.y + - broke the code that parses `( ... )' subshells out into its + own grammar production + +lib/readline/history.c + - rearranged some code to get rid of gotos and make the intent + clearer + - fixed a bug in history_truncate_file that tried to write to + a file opened O_RDONLY + - changed a stat-open in history_truncate_file into an open-fstat + pair + - removed gotos in history_search_internal + - changed straight strncmp() calls trying to find history line + matches to check the first character before calling strncmp in + history_search_internal + - changed a call to stat after an open (!) to fstat on the + returned file descriptor + - cleaned up the code in get_history_event + - cleaned up some code in get_history_word_specifier + - cleaned up some code and removed extra function calls in + history_arg_extract + - changed history_arg_extract to malloc enough space for the + entire string at one time, instead of doing xrealloc in a + loop + - cleaned up the code in history_tokenize, removing gotos and + other spaghetti constructs + - replaced a call to sprintf with assignment statements and a call + to strcpy in history_expand + +cpp-Makefile + - changed the `INDEX' target to a `TAGS' target + +lib/readline/emacs_keymap.c + - added a default binding for ESC-ESC to rl_complete, like ksh emacs + mode editing + + 1/3 + --- +machines.h + - make sure ISC_POSIX is defined as nothing when using gcc on isc386 + +parse.y + - made token_to_read, current_token, last_read_token, + token_before_that, EOF_reached, shell_input_line, + shell_input_line_*, token, token_buffer_size all static vars + - made prompt_again return immediately if the shell is not + currently interactive + - made yylex call prompt_again only if there is no token_to_read + and the shell is currently interactive + +jobs.c + - changed the NeXT || alliant define to use RLOGIN_PGRP_BUG + - use TERMIOS_LDISC define for systems with line discipline field + in struct termios + +shell.c + - use RLOGIN_PGRP_BUG instead of NeXT to fix machines that get + started without a controlling terminal + +machines.h + - added -DRLOGIN_PGRP_BUG to SYSDEP_CFLAGS for NeXT and alliant + - added -DTERMIOS_LDISC to SYSDEP_CFLAGS for Ultrix, Sun OS 4, + and aixpc + +support/mksysdefs + - look for sys/param.h, define HAVE_SYS_PARAM if found + +cpp-Makefile + - pass -DHAVE_SYS_PARAM via SYSTEM_FLAGS if it's found by mksysdefs + +maxpath.h + - include if HAVE_SYS_PARAM is defined + +lib/readline/history.c + - got rid of the get_which label in get_history_event + - got rid of the event_not_found label in history_expand + - new function hist_error, which takes care of printing history + expansion errors + + 1/4 + --- +lib/readline/history.c + - split the actual history expansion code out of history_expand into + history_expand_internal + - got rid of the do_add and add_char labels in history_expand + - history_expand now returns 2 if the `p' modifier was given and the + caller should just print the results + - new function `quote_breaks' to implement the `x' modifier + +bashhist.c + - if history expansion fails, make sure the error message is + printed in a standard way by calling internal_error + - print the results of history_expand and return NULL if + history_expand returns 2 + + 1/5 + --- +lib/readline/history.c + - rearranged some code in the `s' and `&' cases of the switch in + history_expand_internal, added the GET_SUBST_PATTERN macro + + 1/6 + --- +tests/* + - cleaned up the directory, made a runnable regression test suite + +cpp-Makefile + - added a `tests' target that runs all of the tests with a newly- + built bash + +subst.c + - made process substitution work only when unquoted + +bashhist.c + - new function history_number to return the history number of a + command + +bashhist.h + - extern declaration for history_number + +parse.y + - changed the `!' and `\!' code in decode_prompt_string to use + history_number + - replaced calls to sprintf/savestring with calls to itos() + +variables.c + - new dynamic variable $HISTCMD is current history number (what + you get with \! in a prompt string) + +documentation/bash.1 + - description of $HISTCMD + + 1/7 + --- + +execute_cmd.c + - new variable stdin_redir, incremented for subshells if stdin has + been redirected, saved for children so we don't redirect /dev/null + to fd 0 if it has already been the subject of a redirection. Makes + bash more sh-compatible, but I'm not sure it's the right thing. + - more changes to file_status for systems with AFS + +test.c + - changed calls to eaccess to EACCESS (not to be confused with the + EACCES error). EACCESS is defined as access on AFS machines, + eaccess on all others + +siglist.h + - don't declare sys_siglist on NetBSD + + 1/11 + ---- +lib/readline/history.c + - if `&' appears in the rhs of a history substitution, it is + replaced with the matched lhs. A single backslash protects + the `&' from lhs interpolation + - fixed ADD_CHAR macro to properly terminate the target string + - changed GET_SUBST_PATTERN so that a single backslash can + quote the substitution delimiter + - changed GET_SUBST_PATTERN so that subst_lhs is not changed if + the lhs pattern is empty + - if the lhs is empty and there is no previous substitution, the + last string used in a !?string? search is used + - turned the GET_SUBST_PATTERN macro into a real function, + get_subst_pattern() + - changed get_subst_pattern() so that backslashes quoting the + search delimiter are removed + - fixed get_history_word_specifier so that x- returns x-$ without + the last word + +documentation/bash.1, lib/readline/doc/hsuser.texinfo + - changes for the new history substitution features + + 1/13 + ---- +make_cmd.c + - new function fixup_async_list() which traverses a command list and + makes the last command asynchronous (`&'). This is to fix up a + problem with the yacc grammar productions + +parse.y + - call fixup_async_list if a list is followed by a bare `&' without + a second list + +builtins/fc.def + - fixed a bug in fc_gethnum that caused negative history + specifications (< 0) to be off by 1 when indexing against the + current history index + +lib/readline/funmap.c + - kill-entire-line -> kill-whole-line + - tilde-expand is now a bindable command that calls rl_tilde_expand + - added emacs-editing-mode as a bindable command + - added more bindable vi-mode readline commands: vi-redo, + vi-tilde-expand + +lib/readline/emacs_keymap.c + - M-C-H is now bound to backward-kill-word + +lib/readline/vi_keymap.c + - `0' is now bound to beginning-of-line in vi-movement-mode + +documentation/bash.1, lib/readline/doc/rluser.texinfo + - added documentation for some of the new readline functions + +test.c + - added definitions for whitespace, digit, and digit_value when + compiling -DSTANDALONE + + 1/14 + ---- +make_cmd.c, make_cmd.h, parse.y + - fixup_async_list -> connect_async_list + +parse.y + - have the productions for all async lists call connect_async_list, + even when followed by another async list + - don't save and restore the buffered stream in buffers[] in + push_stream and pop_stream if the default input fd is -1 + (like command substitution sets it to, for instance) + +cpp-Makefile + - added $(PURIFY) the final cc line, make PURIFY=purify to build + a `purified' bash + +builtins/read.def + - fixed a memory leak -- `input_string' was not being freed + +variables.c + - fixed a memory leak in assign_in_env -- free value + +subst.c + - process substitution and command substitution now call make_child + with a null first argument -- no need to save a string for the + call; it's never used + + 1/17 + ---- +lib/readline/{readline.h,complete.c} + - renamed rl_symbolic_link_hook to rl_directory_completion_hook, + which much more accurately reflects its purpose. Left a define + of the old name there is readline.h + +bashline.c + - use rl_directory_completion_hook instead of rl_symbolic_link_hook + - bash_symbolic_link_hook -> bash_directory_completion_hook + - bash_directory_completion_hook is now an `int' returning function + - bash_directory_completion_hook now tries to to variable expansion + and command and arithmetic substitution if the directory name + contains `$' or ``' + - fixed a bug in bash_directory_completion_hook which made it + remove the trailing slash on a directory name + - bash_directory_completion returns 1 if variable expansion is + performed, 0 otherwise + - when doing bash filename-specific completion, don't do any kind + of directory name expansion + - removed ``' and `$' from the completer word break characters; + they're not word break chars + +lib/readline/complete.c + - changed semantics for rl_directory_completion_hook -- if a non-zero + value is returned, the return value is put into the expanded + filename, replacing the directory name that the user typed + - changed filename_completion_function to quote a replacement if + it contains `$' or ``' in addition to characters appearing in + rl_completer_word_break_characters (#ifdef SHELL) + + 1/18 + ---- +shell.c + - take out different code for USG and BSD and mail checking. The + shell always calls remember_mail_dates on startup. + + 1/19 + ---- +execute_cmd.c + - changed executable_file into a simple return statement + +support/mksysdefs + - look for bison, define HAVE_BISON if found + +cpp-Makefile + - do not unconditionally define HAVE_BISON, let mksysdefs do + the work + + 1/20 + ---- +machines.h + - added -DNO_SBRK_DECL to hpux_8, hpux_9, and Solaris descriptions + +lib/malloc/malloc.c + - removed the code that defines NO_SBRK_DECL for some machines + +cpp-Makefile + - removed the definitions of PPROMPT and SPROMPT and their inclusion + as defines in CFG_FLAGS + - added definitions for man3dir and man3ext and passed them to + make install in the documentation directory + +config.h + - PPROMPT and SPROMPT are now defined here + +builtins/mkbuiltins.c + - plugged up a number of memory leaks (~35K worth) + +documentation/Makefile + - made readline.3 and readline.ps standard targets + - make install now installs readline.3 + +documentation/readline.3 + - new manual page documenting the readline library + +general.c + - don't define TIMEVAL_MISSING on USG systems if HAVE_TIMEVAL is + defined + + 1/21 + ---- +machines.h + - define HAVE_SOCKETS in HPUX_SYSDEP_CFLAGS for hpux_8 and hpux_9 + +Makefile + - add a `tests' target that just runs `make -f bash-Makefile tests' + +general.c + - include config.h before any other include files so + gets included if present + + 1/24 + ---- +cpp-Makefile + - make `bashbug' by using sed with multiple -e options rather than + a separate `mkbashbug' program + + 1/25 + ---- +machines.h + - sgi machines need HAVE_SOCKETS defined to make isnetconn() work + +lib/readline/isearch.c + - rewrote lots of rl_search_history to eliminate spaghetti and + increase speed + +lib/readline/history.c + - added defines for STREQ and STREQN to clean up the search code + +lib/readline/complete.c + - compare the first characters of the name and returned value from + getpwent when attempting username completion to avoid all those + calls to strncmp + + 1/26 + ---- +lib/readline/readline.h + - move definition of VISIBLE_STATS here so all files can see it + - extern definitions of rl_history_search_forward() and + rl_history_search_backward () + +lib/readline/search.c + - implementations of rl_history_search_forward() and + rl_history_search_backward (), which search through the history + list for lines beginning with the string of characters between + the beginning of the line and rl_point (history lines with a + common prefix) + - added definitions of STREQ and STREQN + +lib/readline/funmap.c + - added `history-search-forward' and `history-search-backward' as + bindable commands (names compatible with tcsh) + +lib/readline/complete.c + - make stat_char use lstat if S_ISLNK is defined to pick up symbolic + links + - split some common code out into auxiliary functions: printable_part + and print_filename + - expand filenames before calling stat_char if visible-stats is + active + +documentation/bash.1, documentation/readline.3, lib/readline/doc/rluser.texinfo + - documented new `history-search-forward' and `history-search-backward' + readline commands, by default unbound + +error.c + - changed get_name to get_name_for_error and made it externally + visible + +error.h + - extern declaration for get_name_for_error + +test.c + - call get_name_for_error in test_syntax_error if the shell is + not interactive + + 1/27 + ---- +lib/readline/emacs_keymap.c + - add M-~ as a binding for rl_tilde_expand, it's more intuitive + +lib/readline/bind.c, lib/readline/readline.h + - exported rl_invoking_keyseqs_in_map as a public interface + +lib/readline/rldefs.h + - don't include memalloc.h if PRAGMA_ALLOCA is defined + +lib/readline/readline.c, lib/readline/isearch.c, lib/tilde/tilde.c, +lib/readline/complete.c, lib/readline/search.c + - replaced all calls to alloca with xmalloc/free pairs or array + declarations + +lib/readline/history.c + - replaced some calls to alloca + +variables.c, subst.c, mailcheck.c, alias.c, parse.y, builtins/cd.def + - replaced all calls to alloca with xmalloc/free pairs or array + declarations + +builtins/source.def + - replaced call to alloca with xmalloc/free/unwind_protect + - replaced stat/open sequence with open/fstat + + 1/28 + ---- +lib/readline/history.c + - print an error message for an unrecognized history modifier + instead of just ignoring it + - replaced remaining calls to alloca() + +execute_cmd.c + - added a #pragma alloca at the head of the file if AIX and + RISC6000 are defined and __GNUC__ is not + + 1/31 + ---- +support/recho.c + - now a standard part of the distribution, needed for `make tests' + +cpp-Makefile + - make sure recho is built before the tests are run + + 2/1 + --- +builtins/command.def + - If subshell_environment is 1, we've already forked and are in + a subshell, so add CMD_NO_FORK to the flags of the command + to be executed and see if we can get away without forking + + 2/9 + --- +support/mksysdefs + - write the name of the maintainer to sysdefs.h surrounded by + double quotes + +cpp-Makefile + - removed the now-unnecessary double quotes around the MAINTAIN_DEFINE + variable value + +lib/readline/readline.h + - new variable rl_attempted_completion_over, set in the completion + attempt function to suppress the normal filename completion + +lib/readline/complete.c + - if rl_attempted_completion_over is set after the program-specific + completion function is called, don't do filename completion + +general.h + - new FREE and STRLEN convenience defines + +subst.c + - code cleanups, use of FREE and STRLEN + + 2/10 + ---- +execute_cmd.c, parse.y, jobs.c, variables.c, test.c + - changed code to use FREE, STRLEN, other code cleanups + - removed, wherever possible, calls to strncmp and strcmp + +builtins/set.def + - changed the `unset' builtin to use internal_getopt + +builtins/set.def, builtins/test.def, builtins/fg_bg.def, builtins/type.def, +builtins/enable.def, builtins/exec.def, builtins/declare.def, +builtins/ulimit.def, builtins/cd.def, builtins/fc.def + - removed calls to strcmp, strncmp wherever possible, replacing + them with incline + +builtins/common.h + - new define ISOPTION, to test whether a string s is setting + a specific option + +builtins/kill.def, builtins/read.def, builtins/trap.def, builtins/umask.def, +builtins/enable.def, builtins/alias.def, builtins/hash.def + - changed to use ISOPTION + +builtins/read.def + - moved option processing before all of the code that sets up + the input stream + + 2/11 + ---- +Makefile + - added `distclean' target to mirror one in cpp-Makefile + + 2/14 + ---- +documentation/bash.1, documentation/features.texi + - noted that `=' was not a valid character for an alias name + + 2/17 + ---- +builtins/common.c + - if parse_and_execute gets an interrupt during execution, make + sure that `interactive' is restored to the correct value (the + same value as `interactive_shell' before throwing control back + to the top level with throw_to_top_level so the shell does + not exit in throw_to_top_level + +builtins/reserved.def + - cleaned up the variables section, removing some and correcting + the descriptions + + 2/18 + ---- +cpp-Makefile + - provide alternate defintions for build_builtins_in_dir depending + on whether __STDC__ is defined and > 0. The `stdc' version uses + `##' to concatenate tokens + +machines.h + - new machine description for QNX 4.2 from pt@flard.ocunix.on.ca + +jobs.c, nojobs.c + - changed some calls to report_error to calls to internal_error + +test.c + - some systems may not define S_IFMT, so use an #ifdef to work around + +print_cmd.c + - combined the code for print_word_list and command_print_word_list + into an internal function that takes a pointer to a function to + use to print the words + +variables.c + - don't call savestring in bind_variable on the value if it's an + empty string + +nojobs.c + - changed wait_for to call waitpid with -1 for pid value on Posix + systems so all processes in a pipeline get reaped at the same + time (or at least most of them) + + 2/21 + ---- +lib/readline/{complete.c,display.c,readline.c,rltty.c,signals.c} + - changed _GO32_ to __GO32__ + +machines.h + - SunOS5 needs to add /usr/ccs/lib to the library search path + for the right termcap library + + 2/22 + ---- +shell.c + - make sure that a subshell sets sourced_env to 0 after longjmp + so that $ENV is sourced by subshells forked to execute scripts + without a leading `#!' line + +bashhist.c, bashhist.h + - make maybe_add_history a global interface -- new function + to add a line to the history file depending on the value + of history_control + +builtins/fc.def + - call maybe_add_history in fc_addhist rather than add_history + +machines.h + - new entry for concurrent machines in att universe from + geoffl@vallista.ca.boeing.com (Geoffrey A. Lowney) + + 2/23 + ---- +general.c, general.h + - new function string_to_long, which basically does the same + thing as atol(), which I don't believe is universal + +builtins/ulimit.def + - replaced a call to sscanf with calls to all_digits and + string_to_long + - non-root users can only raise a resource up to the hard limit, + even if they specify `unlimited', so shell_ulimit translates + RLIM_INFINITY into limit.rlim_max if euid != 0 + + 2/25 + ---- +shell.c + - make the default behavior of bash when invoked with -c command + to make the first argument after the command string $0 and the + rest $1...$N + +documentation/bash.1 + - document the change in -c behavior + + 3/2 + --- +mailcheck.c + - made add_mail_file return the index in the list of mail files, + so an immediate call to find_mail_file need not be made and + we are guaranteed that the index returned is never -1 + - added the check back in that changes the message to note that + *new* mail has arrived -- the test was not redundant after all + - fixed an off-by-one error in free_mail_files + - replaced an sprintf() in get_mailpaths with two calls to strcpy + +general.c + - changed getc_with_restart to do local buffering to reduce the + number of read(2) system calls + +subst.c + - changed do_assignment_internal to check for expansion and quoting + characters and only call expand_string when something needs + expansion, string_quote_removal when quotes appear, and savestring + for simple assignment statements + + 3/3 + --- +builtins/exit.def, documentation/bash.1 + - removed `bye' as a synonym for `exit' + +shell.h + - new exit value: EX_USAGE + +builtins/{bind,command,declare,fc,getopts,histctl,history,inlib,jobs,read, +setattr,trap,ulimit}.def + - changed to return EX_USAGE when a usage message is printed + +builtins/declare.def + - removed the `no_modifiers' code, changed argument name to local_var + +command.h, make_cmd.h + - declarations for the select command, inside #ifdef SELECT_COMMAND + +copy_cmd.c + - declarations for copying select commands + +dispose_cmd.c + - code to dispose of select command structures + +execute_cmd.c + - code to execute select commands + +make_cmd.c + - code to construct select command structures + - removed `coerce_to_word()' + +parse.y + - code to parse select commands in the grammar. The SELECT token is + returned by read_token only if SELECT_COMMAND is defined + +print_cmd.c + - code to print select commands + +config.h, config.h.mini + - make SELECT_COMMAND the #define that controls whether or not the + `select' command is compiled in + +documentation.bash,1, documentation/features.texi + - documented the `select' command and $PS3 + + 3/4 + --- +builtins/getopts.def + - removed a call to sprintf() in favor of expanding a number manually + +builtins/getopt.c + - make sure that we set nextchar to NULL when incrementing optind + so that it does not end up pointing to stale memory (freed, then + later reallocated) + + 3/7 + --- +builtins/common.c + - fixed parse_and_execute not to be overzealous in marking a command + as NO_FORK -- make sure there's nothing left in the string to be + executed before doing so + +machines.h + - change the string check for BSD/386 to __bsdi__ + - add INT_GROUPS_ARRAY to BSDI, SunOS4, 386bsd, FreeBSD, and NetBSD + descriptions + +test.c + - change to use INT_GROUPS_ARRAY + +execute_cmd.c + - tightened up the execution loop in execute_for_command and + removed a couple of unneeded variables + +lib/posixheaders/memalloc.h + - make sure to check for sun being defined when checking for sparc; + there are ICL DRS6000 machines running SVR4.2 out there that do + not have the file + + 3/8 + --- +execute_cmd.c + - make sure close_fd_bitmap is called before do_redirections, lest + the bitmap override some of the redirections + +cpp-Makefile + - supply an explicit suffix list, so make understands the .def.o + suffix rule as such + + 3/9 + --- +jobs.h + - added extern declarations for rest of global functions in jobs.c + - added prototypes + +jobs.c + - made delete_job, terminate_current_pipeline, kill_current_pipeline, + describe_pid, notify_and_cleanup, reap_dead_jobs, + initialize_job_signals , without_job_control void functions + + 3/10 + ---- +execute_cmd.c, execute_cmd.h + - moved check_identifier to general.c, general.h + +general.c + - check_identifier has acquired a second parameter; when set to 1 + this causes the word to be checked by legal_identifier + - for and select commands call check_identifier with a second arg + of 1, function names are checked with legal_identifier when in + Posix.2 mode + +general.h + - add second argument to extern declaration of check_identifier + +CWRU/POSIX.NOTES + - added description of new function name behavior + +lib/readline/readline.h + - include sys/ioctl.h on FreeBSD and NetBSD + +lib/readline/rlconf.h + - new file, with readline configuration variables + - included in rldefs.h + +lib/readline/{readline.c,readline.h,complete.c,display.c} + - took configuration defines out and put them into rlconf.h + +lib/readline/Makefile + - updated dependencies to include rlconf.h + + 3/14 + ---- +lib/readline/Makefile + - remove VI_MODE from the CFLAGS + +lib/readline/rlconf.h + - made VI_MODE a definable configuration option + +lib/readline/vi_mode.c + - include rlconf.h before testing whether or not VI_MODE is defined + +lib/readline./funmap.c + - include `rlconf.h' before `readline.h' + +lib/readline/keymaps.c + - include `rlconf.h' before `vi_keymap.c' and `keymaps.h' + +lib/readline/readline.c, lib/readline/vi_mode.c + - rl_vi_set_last -> _rl_vi_reset_last + - new function _rl_vi_set_last to set the vi-mode last command + information + - renamed vi_done_inserting to _rl_vi_done_inserting + +lib/readline/vi_mode.c + - _rl_vi_last_command, _rl_vi_last_repeat, _rl_vi_last_arg_sign, + and _rl_vi_doing_insert are now static + + 3/15 + ---- +bashline.c + - unbind C-M-m in emacs_meta_keymap so people don't accidentally + switch into vi editing mode + + 3/21 + ---- +builtins/cd.def + - `pwd' now follows the setting of nolinks/set -o physical; there + is an undocumented -P option to get the `real' working directory + + 3/28 + ---- +make_cmd.c + - only follow the command chain to the end of a list in + connect_async_list if the list is not being executed in the + background as a unit with CMD_WANT_SUBSHELL + +support/mksysdefs + - removed the define of HAVE_CSH + - added an additional check for SVR4 on i[34]86 machines from + mkmachtype + +lib/readline/vi_mode.c + - fix up rl_vi_delete_to so that cw deletes the character under + the cursor no matter what, as per Posix.2 + - any text modifying command that calls rl_vi_insertion_mode needs + to explicitly set the `last command' info for `.' + - rl_vi_movement_mode() no longer resets the `last command' info + so that things like `cw' can be redone with `.' + + 3/29 + ---- +general.h + - a new define MEMMOVE_MISSING to specify to use memcpy in the + define for BCOPY + - the defines for BCOPY don't need a trailing `;' + +machines.h + - isc386 needs -DMEMMOVE_MISSING in SYSDEP_CFLAGS + + 3/30 + ---- +bashline.c + - fix to set_saved_history to simplify the code by using + rl_get_previous_history + + 3/31 + ---- +error.c + - change the bug report message + +support/mksysdefs + - removed `WHOAMI' junk for setting the `maintainer' + +cpp-Makefile + - hardcode the maintainer to `bug-bash@prep.ai.mit.edu' + +subst.c + - call rl_reset_terminal in sv_terminal if interactive_shell + is nonzero + - split the code that checks whether or not expand_string_unsplit + needs to be called from do_assignment_internal into a separate + function that takes a function pointer to call as an additional + parameter + +trap.c + - make sure that set_signal_ignored also sets original_signals[sig] + to SIG_IGN + +bashline.c + - `{' is not a word break character for the completion functions + + 4/2 + --- +[first beta distribution of bash-1.14.0] + + 4/5 + --- +builtins/cd.def + - fixed a problem with CDPATH processing (used `dirlen' instead of + `pathlen') + +subst.c + - make sure that get_word_from_string updates `stringp' even if + it's nothing but separators + +builtins/read.def + - after the call to get_word_from_string, set *e to 0 only if t + is not null and a word was actually returned + +machines.h + - remove the NO_SBRK_DECL declaration for sgi machines from all + but Irix 5.x machines + - sgi needs __STDC__ defined if __EXTENSIONS__ is defined + +lib/posixheaders/stdc.h + - moved the #if defined (__P) inside the check for __STDC__, so + the other things get defined even if __P is already defined + - don't redefine const, inline, etc. if `const' is already defined + +cpp-Makefile + - add dependencies on stdc.h + - pass -DHAVE_SYS_STREAM_H through to builds in subdirs + +support/mksysdefs + - redirect error messages from subshell attempting to find and invoke + bison + - look for , define HAVE_SYS_STREAM_H if found + +lib/readline/rldefs.h + - include only of HAVE_SYS_STREAM_H is defined + +externs.h, print_cmd.c + - made print_command and print_simple_command void functions + +builtins/common.c, builtins/common.h + - builtin_error now a void function + - dispose_saved_dollar_vars now a void function + - bad_option now a void function + - initialize_shell_builtins now a void function + +variables.c + - initialize_shell_variables now a void function + - adjust_shell_level now a void function + - delete_all_variables now a void function + +jobs.c + - inserted some returns into `int'-valued functions lacking them + +hash.c + - initialize_hash_table now static void + +externs.h + - added declarations for functions from mailcheck.c + + 4/6 + --- +lib/readline/readline.c + - added missing function arguments + + +lib/readline/complete.c + - get_y_or_n now accepts space for `y' and rubout/del for `n' to + be more emacs-like + +lib/readline/history.c + - fixed an off-by-one error in history_expand_internal: checking + the wrong character for the history event or word specifier + + 4/7 + --- +lib/readline/complete.c + - make sure `max' is intialized to 0 when displaying the possible + completions, even if we've done `goto display_matches' + +lib/posixheaders/stdc.h + - if __STDC__ is defined but we're not using gcc (__GNUC__ not + defined), make `inline' expand to nothing + +lib/readline/isearch.c + - use STREQN to match the search string against the history line, + since we're not interested in exact matches, only matches of + the search string + + 4/8 + --- +machines.h + - description for a sparc running netbsd + + 4/11 + ---- +lib/readline/vi_mode.c + - make sure we're starting an undo group when we implicitly + enter insertion mode after a command like c[motion], so + we can get to the characters that were inserted + - new variable: vi_continued_command, set to 1 if we enter + insert mode implicitly + + 4/12 + ---- +machines.h + - generic entry for MIPS machines running SVR4, SVR4.2 + - changed sony entry to handle M_MACHINE already being + defined + +lib/malloclib/malloc.c + - fixes for malloc stats, from kboyce@bnr.ca + + 4/13 + ---- +machines.h + - changed the u370/USGr4 description: added -DNO_SBRK_DECL to + SYSDEP_CFLAGS + +lib/readline/readline.c + - add a call to rl_set_keymap_from_edit_mode after reading the + inputrc file in readline_initialize_everything to override + the effect of any `set keymap' assignments in the inputrc + file + +support/mksysdefs + - added a check for MIPS RISCos machines + - set the value of `dirlist' to /bsd43/usr/include if we're + building on a RISCos machine + +lib/readline/bind.c + - skip leading whitespace in lines read from the inputrc file + in rl_read_init_file + - call rl_set_keymap_from_edit mode after reading the inputrc + file in rl_re_read_init_file + + 4/14 + ---- +documentation/Makefile + - change bash_builtins.1 to builtins.1 in the recipe for `install' + - remove the dependency on texindex from features.dvi + +builtins/kill.def + - remove explicit inclusion of + +machines.h + - Xenix requires -DMEMMOVE_MISSING + - Xenix 2.3 requires -DLD_HAS_NO_DASH_L + - added #undef HAVE_RESOURCE to xenix descriptions just to be sure + +cpp-Makefile + - make sure texindex is built before trying to build the documentation + +lib/doc-support/texindex.c + - fixes for portability and to fit into the bash configuration + scheme + +support/mksysdefs + - fixed the Xenix section to make sure that sysdefs.h defines `i386' + for machines.h -- apparently the default xenix cc does not + predefine it + + 4/16 + ---- +shell.c + - regularized parsing of `-c' option so it can be bundled with other + options + - if bash is started with a `-o' without an argument, list the long + options with list_minus_o_opts + +builtins/set.def + - renamed `list_long_opts' to `list_minus_o_opts', made it global + +builtins/common.c + - builtin_error now calls get_name_for_error if this_command_name + is null or empty + +hash.c, hash.h + - made hash utility functions able to cope with being passed a + null hash table + + 4/18 + ---- +lib/readline/history.c + - changes to history_expand, history_expand_internal to allow + modifiers to be used with `!#' + - changes to get_history_event so that only `?' or newline can + terminate a substring search string. This is more csh-like. + +builtins/common.c + - get_working_directory now uses get_name_for_error when for_whom + is null and it needs to print an error message + +shell.c + - set no_rc and no_profile in shell_reinitialize to clarify our + intent about not running the .bashrc for shell scripts + + 4/19 + ---- +lib/readline/vi_mode.c + - change rl_vi_possible_completions to fix an inadvertent infinite + loop in code that attempts to move to the end of the current word + + 4/21 + ---- +lib/readline/vi_mode.c + - comment out rl_vi_possible_completions -- it's unused + +lib/readline/vi_keymap.c + - comment out vi_escape_keymap declaration -- it's unused + +parse.y, subst.c + - shells running in `posix mode' do not perform process substitution + + 4/22 + ---- +support/getcppsyms + - don't process and define __GNUC__ at all + - only test for and possibly define __STDC__ if __GNUC__ is not + defined (not using gcc) + + 4/25 + ---- +machines.h + - Make sure SunOS 4.x has INT_GROUPS_ARRAY defined + + 4/26 + ---- +lib/readline/readline.c + - make sure screenwidth is not set to 0 + + 4/27 + ---- +Makefile + - changed the text printed by the `.notified' target to refer to + `bashbug' + +[1.14.1 announced and made available for anonymous FTP] + + 4/28 + ---- +builtins/read.def + - unset the variables passed to `read' as arguments when EOF is + read from stdin (sh, Posix.2 compatibility) + +machines.h + - add HAVE_STRERROR to the solaris machine description + +print_cmd.c + - made declaration of printf depend on __GNUC__ being defined, since + only gcc seems to need it + +cpp-Makefile + - renamed DEBUG_FLAGS to CDEBUGFLAGS + + 4/29 + ---- +builtins/getopt.c + - fix for core dump problems + +parse.y, make_cmd.c, make_cmd.h, execute_cmd.c + - changed make_redirection to take a `REDIRECTEE', which is a union, + as its second argument, to avoid int/long/pointer problems + - changed all calls to make_redirction to pass a correctuly- + initialized REDIRECTEE argument + + 5/1 + --- +general.h + - Linux needs a slightly different declaration for gethostname() + +nojobs.c + - fix to arguments to stop_pipeline + + 5/3 + --- +alias.c, bashline.c, variables.c + - added casts to eliminate compiler warnings + +general.h + - removed __P type information from functions taking a GENERIC_LIST *, + since that is never what is passed + - changed prototype to show that xrealloc takes a `void *' + +general.c + - xrealloc takes a `void *' as its first argument + + 5/4 + --- +support/mksysdefs + - changed test -r to test -f when looking for ranlib + +lib/readline/readline.c + - cleaned up some casts before xmalloc/xrealloc calls + - make sure the arrow keys are bound into the vi movement keymap in + init_terminal_io + - set the keymap explicitly in init_terminal_io before trying to + bind the arrow keys + +lib/readline/vi_keymap.c + - bind ESC in vi_movement_keymap to 0 rather than rl_abort, since + the rl_abort binding keeps _rl_bind_if_unbound from working + +shell.c + - look in $PATH for an input file given on the command line only + if that file is not an `absolute program' (contains no slashes) + + 5/5 + --- +machines.h + - changed HPUX_SYSDEP_CFLAGS to HPUX_CFLAGS + +general.h, general.c, copy_cmd.c, make_cmd.c, print_cmd.c, parse.y, subst.c + - BCOPY -> FASTCOPY because some machines define or undef BCOPY in + system header files + +longest_sig.c, support/pagesize.{c,sh} + - removed from distribution, moved to CWRU/misc + +lib/readline/parens.c, lib/readline/bind.c + - don't compile in all of the paren-matching code if PAREN_MATCHING + is not defined in rlconf.h + + 5/9 + --- +lib/readline/rldefs.h + - new #define WINSIZE_IN_IOCTL_H, set for machines that need + to include to get TIOCGWINSZ and related definitions + - use `dirent' instead of `direct', define `dirent' as `direct' if + HAVE_DIRENT_H is not defined + +lib/readline/signals.c, lib/readline/readline.c + - changed to include if WINSIZE_IN_IOCTL_H defined + +lib/readline/readline.c + - strip high bit in rl_getc if __GO32__ is defined + +lib/readline/complete.c + - use `struct dirent' rather than `struct direct' in + filename_completion_function + +lib/readline/bind.c + - make sure that "" is not passed to open as the name of the inputrc + file + +general.c + - hpux_9 needs #undef HAVE_GETDTABLESIZE, just like hpux_8, on hppa + +builtins/times.def + - Posix.1 systems need to default to using `struct tms' and the + output of `times' + +jobs.c + - don't redefine _POSIX_SOURCE on sun systems if already defined + +parse.y + - changed a couple of calls to reverse_list to use the REVERSE_LIST + macro instead + +newversion.c + - now adds the `build version' as part of `SCCSVERSION' in the same + format as the shell prints the version string + + 5/12 + ---- +builtins/psize.sh + - if /tmp/pipesize is an empty file, default by defining PIPESIZE + to be 512. An empty file indicates that `psize.aux' did not + succeed for some reason + + 5/13 + ---- +machines.h + - dynix/ptx needs -DHAVE_SOCKETS added to SYSDEP_CFLAGS + +bashline.c + - changed some calls to strncmp to use STREQN + + 5/15 + ---- +print_cmd.c + - if the delimiter to a here document is supposed to be quoted, + print it single-quoted + - make if statements and while/until statements print similarly, + with the then/do on the same line as the first word, separated + from the command list by a semicolon + +make_cmd.c + - reverse the order of patterns in the case statement pattern + list in make_pattern_list, so it's printed in the same way + it was defined + +Makefile + - make sure that references to cpp-Makefile and ansi-Makefile + are prefixed with $(srcdir) or use CPP_MAKEFILE or ANSI_MAKEFILE + respectively + - make sure that srcdir is passed from Makefile to bash-Makefile + when making `all' + +support/mkdirs + - new program, clone of `mkdir -p' + +cpp-Makefile + - before running a make in a subdirectory, call `mkdirs' to ensure + that that subdirectory exists + + 5/16 + ---- +newversion.c + - added a `-dir' option to specify a directory prefix, like $(srcdir) + + 5/17 + ---- +builtins/mkbuiltins.c + - if the .def filename begins with a slash, don't prepend the name + of the `error directory' when printing error messages or writing + line number information to a generated c source file + +config.h + - don't include memalloc.h if BUILDING_MAKEFILE is defined + +lib/malloc/Makefile + - skeleton Makefile to make this directory more like other + library directories + +Makefile, cpp-Makefile, builtins/Makefile, lib/*/Makefile + - changes to make bash buildable in a directory without the source + present by running `make srcdir=xxx' + +support/srcdir + - new program, used to print the full path of the source directory; + it echoes the output of `pwd' if $1 is `.' + + 5/18 + ---- +cpp-Makefile + - CFLAGS -> CCFLAGS, CDEBUGFLAGS -> CFLAGS to obey the GNU standard + (which does not consider the possibility that other information + besides debugging could conceivably be passed to cc) + +general.h + - don't prototype gethostname() unless we're defining our own version + in general.c + +lib/readline/history.c + - fix hist_error to allocate and return a new string with the + error message; removed the `ret' argument + + 5/19 + ---- +subst.c + - new function char_is_quoted(s, i) returns 1 if character at + position i in s is quoted + +bashline.c + - removed `\' from rl_completer_word_break_characters + - make sure that a command separator character is not quoted in + attempt_shell_completion by calling char_is_quoted before calling + command_word_completion_function + - fixed a problem with detection of command separator characters + in attempt_shell_completion + +lib/readline/complete.c + - set found_quote if a backslash is found in the string in + rl_complete_internal + - if compiled for the shell, call char_is_quoted to find out + whether a character in rl_line_buffer is quoted when deciding + where to break a word for the completer + + 5/23 + ---- +machines.h + - made sure all definitions of M_OS were quoted + +lib/doc-support/Makefile + - more surgery to use ${topdir} and ${srcdir} + +documentation/bash.1 + - clarify that redirections may precede only simple commands + +support/fixlinks + - new script to make multiple copies of files links or symlinks + to a single master copy + +support/SYMLINKS + - name -> target symlink map for support/fixlinks + +support/fixlib + - modification of fixdist to move lib to ../lib and clone the files + in there like using lndir + +filecntl.h + - moved to lib/posixheaders, replaced with symlink + +support/getcppsyms.c + - removed support for outputting -D__STDC__; it's rarely right + +cpp-Makefile + - build_builtins_in_dir(directory, makefile) --> build_builtins(target) + to get rid of the need to know how cpp does token concatenation + +nojobs.c + - changed the printing of the pid for asynchronous jobs to be the + same as sh (no brackets) + - took a useless loop out of wait_for_background_pids + + 5/24 + ---- + +cpp-Makefile + - major surgery to replace #define with make variable assignments -- + now cpp is used only for inclusion and conditionals (and shorthand) + +machines.h + - new entry for Lynx 2.1 + +builtins/declare.def + - make sure that the name in command name=value is a legal variable + name (affects typeset/declare, export, readonly) + + 5/26 + ---- +machines.h + - make sure a 386/486 running Solaris2 is not misidentified as a + Sun 386i + - make sure a 486 running NeXT OS is identified as a `NeXT-i386' + + 5/27 + ---- +builtins/enable.def + - fixed an off-by-one error in option parsing + - improved option parsing to be Posix compliant (`--'), bad options + +Makefile + - call /bin/sh to run support/mksysdefs and create sysdefs.h, since + it's a shell script + - ditto for $(CPPMAGIC) + +cpp-Makefile + - newversion.aux does not need to be linked against the math + library + + 5/30 + ---- +machines.h + - set M_OS to `NeXTstep' for NeXT and i386 machines running NeXT OS + +[1.14.2 beta release made available for FTP] + + 5/31 + ---- +siglist.h + - don't define `strsignal' on SunOS5; it has its own + +builtins/setattr.def + - change set_or_show_attributes to check for legal variable names diff --git a/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v11 b/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v11 new file mode 100644 index 000000000..163247e06 --- /dev/null +++ b/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v11 @@ -0,0 +1,8400 @@ + 6/2 + --- +lib/readline/readline.c + - fixed an off-by-one error in the kill ring reallocation code + in rl_kill_text + +Makefile + - replaced instances of /bin/sh with $(SHELL) + +Makefile, cpp-Makefile, documentation/Makefile + - added a working `uninstall' target + +[1.14.0 FCS release made available for FTP] + + 6/3 + --- +README + - added note about building with gcc, same as in Makefile + +documentation/Makefile + - some versions of make don't understand `$*' in a regular recipe; + replace with features.dvi in the recipe for features.ps + + 6/4 + --- +subst.c + - fix up the calls to string_extract_double_quoted and + string_extract_single_quoted in char_is_quoted so the initial + value of the index is *after* the opening quote character + - make sure we only return 1 from char_is_quoted if the index + into the string after a call to string_extract_double_quoted or + string_extract_single_quoted is *greater than* `eindex' + +lib/readline/complete.c + - change the order and sense of the quoting tests in + rl_complete_internal so that the expensive char_is_quoted + is only called if `scan' actually is a word break character + +shell.c + - fixed a typo in the test for a restricted shell + +builtins/exec.def + - need to include flags.h + + 6/6 + --- +make_cmd.c + - make sure that we don't try to walk down a null command tree + in connect_async_list (tickled by `(command &) &') + - if a command has the CMD_WANT_SUBSHELL bit set in its flags, + don't even try to walk the command tree and move the `&'; + just connect the command with a null command using `&' + +execute_cmd.c + - make sure we don't try to reference a command struct without + first checking it (case '&') + + 6/7 + --- +machines.h + - fix a typo in the NeXT/i386 description; change the NeXT description + to #define HAVE_RESOURCE if not already defined rather than putting + -DHAVE_RESOURCE into the SYSDEP_CFLAGS + + 6/9 + --- +Makefile + - make sure all of the rules that reinvoke `make' have the + `-f bash-Makefile' before the assignment statements; some + versions of make like it that way + +variables.c + - make sure that `interactive' is set to 0 before evaluating the + string containing an exported function obtained from the + environment, so that it does not try to execute PROMPT_COMMAND + (this may not be the best fix) + + 6/13 + ---- +documentation/Makefile + - make sure all of the directories exist before trying to install + doc files into them + +lib/readline/history.c + - add a missing O_TRUNC to the open call for writing in + history_truncate_file + +trap.c + - run_interrupt_trap should only try to run the trap command if + the value is not IMPOSSIBLE_TRAP_HANDLER + +Makefile + - add `realclean' + +lib/readline/complete.c + - do the same kind of double-quoting a replacement string if the + user supplies the opening double quote as we would if we were + adding both quotes ourselves + +variables.c + - fixed the variable initialization so that history_control/HISTCONTROL + can be inherited from a parent shell + +INSTALL, README, cpp-Makefile, documentation/bash.1, documentation/readline.3 + - ai.mit.edu -> prep.ai.mit.edu + +shell.c + - fixed a problem with setting no_line_editing to the result of the + check for running inside emacs, thereby losing any value + initialized by the `-nolineediting' flag + +cpp-Makefile + - `make distclean' will now remove the `installed-bash' link + +print_cmd.c + - fixed a problem with undefined variables when HAVE_VARARGS_H is + not defined + + 6/14 + ---- +lib/readline/history.c + - fixed an error in the csh history expansion code so that the + `-y' word designator now expands to `0-y' rather than `1-y' + +lib/readline/isearch.c + - changed an absolute check for a character falling within the + ASCII 32-126 range (printable chars) with checks for CTRL_P + and META_CHAR and a check against the value RUBOUT + - changed a `break' to a `continue' so that the first non-matching + character in the search string does not cause the search to + end abruptly + - initialize prev_line_found to 0 at the top of rl_search_history + to avoid duplicate history lines being saved across searches + +lib/readline/rltty.c + - consolidated repeated code for setting special characters into + `SET_SPECIAL' defines + +lib/readline/readline.c + - include if VSTATUS is defined + - add bindable command rl_tty_status (unbound by default) + +lib/readline/funmap.c + - assign bindable command name `tty-status' to rl_tty_status + +INSTALL + - add note about compiling with gcc, same text as README + +lib/readline/display.c + - many changes and tweaks to make redisplay work better when the + prompt has invisible characters. These changes are non-optimal + in that the prompt is redrawn more than it needs to be, but + things are a hell of a lot better than they were + + 6/15 + ---- +documentation/Makefile + - make a variable NROFF that people can set to `groff -Tascii' if + they don't have real nroff + - changed the suffix rules to use $< + +support/bashbug.sh + - if rmail doesn't exist or fails, save the bug report in + ~/dead.bashbug + +execute_cmd.c + - in setup_async_signals, only ignore SIGINT and SIGQUIT if job + control is not active. If it is active and the job is restarted, + SIGINT remains ignored, and the now-foregrounded job is not + interruptible + +subst.c + - fixed up a problem with char_is_quoted that caused backslash- + escaped characters to cause incorrect results + +tests/run-dollars, tests/dollar-at.sh, tests/dollar-star.sh + - since the error messages produced by `cat' vary, changed `cat' + to `recho' and updated the correct answers file + +machines.h + - fixes to CRAY_STACKSEG_END definitions for different versions of + Unicos on the YMP (from Bill Jones) + - Motorola SVR4 machines have getcwd() and should not undef + HAVE_GETCWD + - on hpux 9.x, don't try to link with -lPW if compiling with gcc + (for alloca) + +parse.y + - an ugly fix for a compiler problem with structure assignment on + the cray + + 6/16 + ---- +builtins/wait.def + - replaced a call to sscanf with a validity check using all_digits() + and a call to atoi, since a pid_t is not necessarily an int, and + the sscanf clobbered the stack frame on systems where it is shorter + than an int (e.g., SCO) + +lib/readline/display.c + - since META_CHAR and the other macros only work with unsigned + chars, make rl_character_len convert its argument to an unsigned + char before testing it + +documentation/Makefile + - use $(INSTALL_DATA) instead of $(CP) to install the man pages and + info files + +cpp-Makefile + - use INSTALL_PROGRAM and INSTALL_DATA to install binaries and + documentation; pass both values to installs in subdirectories + + 6/18 + ---- +builtins/ulimit.def + - compensate for systems which define RLIMIT_OFILE instead of + RLIMIT_NOFILE, or don't provide such a compatibility define + themselves + +shell.c + - make maybe_execute_file check for directories and print an + appropriate error message, since it's doing an fstat anyway + +support/mksysdefs + - added support for a `-s srcdir' option so it can find + cpp-Makefile if ansi-Makefile is to be created + +Makefile + - call mksysdefs with -s $(srcdir) + +jobs.c + - add the magic #undef lines to avoid redefinition warnings on + SunOS 4 only + + 6/20 + ---- +cpp-Makefile + - install `bashbug' with `make install' + +trap.c + - make sure that `interactive' is set to 0 when running trap + commands + +builtins/umask.c + - fixed typo in usage error message + +subst.c + - fix process_substitute to set subshell_environment + +jobs.c, nojobs.c + - only mess with the terminal settings for an interactive shell + that is not in a subshell environment + + 6/21 + ---- +lib/readline/history.h + - add extern declaration of history_get + +builtins/fc.def + - make history replacement when using `r' or `fc -s' obey the + setting of HISTCONTROL + +general.c + - in canonicalize_pathname, preserve a double // at the start + of an absolute pathname, since that means something special + for the network directory system + +README, INSTALL + - updated information about submitting bug reports + +lib/readline/vi_mode.c, lib/readline/isearch.c + - make sure unistd.h is included before rldefs.h, if + HAVE_UNISTD_H is defined + + 6/24 + ---- +lib/readline/complete.c + - add `#' to the list of characters which cause a completed filename + to be quoted + +execute_cmd.c + - be more careful about closing pipe file descriptors in do_piping; + don't want to have `dup2(i, i); close(i);' problem + +lib/readline/{keymaps,readline}.h + - include local copies of include files if READLINE_LIBRARY is + defined, otherwise include the `official, installed' versions + using #include + +lib/readline/*.c + - define READLINE_LIBRARY before including any files + - include only `local' copies of include files using #include "xxx.h" + rather than #include + + 6/26 + ---- +execute_cmd.c + - check for clobbering the bash input stream before closing a file + descriptor due to an r_close_this redirection + +lib/readline/history.c + - made history_expand inhibit history expansion if the history + expansion char is set to 0 + +lib/readline/chardefs.h + - moved savestring() definition to rldefs.h + - changed lowercase_p, uppercase_p, to_lower, to_upper defines to + use macros rather than assume ASCII + +lib/readline/bind.c, general.c, general.h + - use strcasecmp, strncasecmp instead of str[n]icmp if + HAVE_STRCASECMP is defined + +cpp-Makefile + - pass -DHAVE_STRCASECMP to builds in the libraries, primarily + readline + +machines.h + - add HAVE_STRCASECMP to the entries for BSD/386, NetBSD, FreeBSD, + and 4.4 BSD + +builtins/hash.def + - add a fourth parameter to remember_filename, the initial value + of times_found (0 if we're just looking it up for `hash', 1 + for the command execution code) + +execute_cmd.c + - call remember_filename with an initial value of 1 for times_found + +builtins/wait.def + - handle a null argument with an error message + +builtins/common.c + - parse_and_execute now takes a third parameter: the value for + `interactive' while it is executing commands + +bashline.c, jobs.c, parse.y, shell.c, subst.c, trap.c, variables.c + - set the new third argument to parse_and_execute appropriately + +builtins/eval.def, builtins/fc.def, builtins/source.def + - set the new third argument to parse_and_execute appropriately + +builtins/help.def + - changed a call to strnicmp to strncmp when trying to find what + to give help on; it seems more correct + + 6/27 + ---- +machines.h + - cleaned up the SunOS section so it no longer relies on + HAVE_SHARED_LIBS being defined; it uses SunOS4 and SunOS5 + instead + +support/mksysdefs + - define SYSDEF to be SunOS4 or SunOS5 depending on the output + of uname rather than looking for ld.so + + 6/29 + ---- +machines.h + - minor change to the ardent titan machine description + - move the ardent and stardent descriptions before the + mips riscos description + +print_cmd.c + - ardent machines also need the extern declaration for printf + +make_cmd.c + - connect_async_list should do its work only if the lists to be + backgrounded are connected with `;'. This makes `;' bind tighter + than `&', so only the last job in the list is backgrounded. All + other lists should have the entire thing put in the background + +parse.y + - added a function `print_prompt' to take care of displaying the + prompt string if readline is not being used. This fixes problems + with the prompt being displayed before the status of completed + jobs is printed + + 6/30 + ---- +builtins/fg_bg.def + - `fg' and `bg' now print error messages if invoked when job control + is disabled + +lib/readline/rltty.c + - if not compiled into the shell, make get_tty_settings get and set + the window size. This noop stops the process if it is started in + the background + +lib/readline/readline.c + - provide a function version of savestring, if not being compiled + into the shell, since the macro has been removed from the + `public' header files + +lib/readline/readline.h + - provide all extern function declarations without checking whether + VI_MODE or PAREN_MATCHING are defined. It does not hurt to define + them if they are not used and not in the library, and other + applications using readline can't tell whether or not VI_MODE was + defined when the library was compiled anyway + + 7/1 + --- +machines.h + - add #undef HAVE_DIRENT_H to the ardent titan description + + 7/2 + --- +lib/readline/chardefs.h + - removed META_P define, renamed CTRL_P to CTRL_CHAR + +lib/readline/bind.c, lib/readline/isearch.c + - changed instances of CTRL_P to CTRL_CHAR + +lib/readline/search.c + - include before rldefs.h, if HAVE_UNISTD_H is defined + +lib/readline/readline.c + - declare PC, UP, and BC as extern rather than `local' to the + readline library + + 7/5 + --- +bashline.c + - implement command word completion inside of command substitution + with a new function: `command_subst_completion_function' + +subst.c + - new function to help with command subst completion: unclosed_pair + +lib/readline/complete.c + - new variable rl_filename_quoting_desired, which can be set to 0 + to inhibit the quoting of filenames after completion + +lib/readline/readline.h + - declare rl_filename_completion_desired and + rl_filename_quoting_desired + +builtins/bind.def + - don't save the old value of rl_outstream before initializing + readline -- it saves garbage values and screws up readline + +parse.y + - don't have private state telling whether or not readline has + been initialized -- use bash_readline_initialized like other + functions in bashline.c + +lib/readline/readline.c + - make the default 8-bit behavior be based on whether LC_CTYPE is + defined and its value (accept iso-8859-1 or iso_8859_1) + + 7/6 + --- +variables.c + - fix up the declaration of getenv() for convex machines + + 7/7 + --- +lib/readline/readline.c + - fixed up typos in the declaration of `savestring' + +lib/readline/history.c + - fixed an off-by-one error in the ADD_CHAR macro which caused one + extra character to be overwritten, causing the gnu malloc to abort + when that one character was at the end of an allocated block + - changed the ADD_STRING macro to avoid some unnecessary xreallocs + +lib/readline/display.c + - fixed a problem with move_cursor_relative -- function now returns + immediately if it has nothing to do + - fixed another problem with displaying prompts with invisible chars + +lib/readline/chardefs.h + - fixed the CTRL macro to be right (agree with the BSD kernel, for + example) + +cpp-Makefile + - fixed typo in the `install' recipe + + 7/8 + --- +support/srcdir + - fixed to handle srcdir when it begins with ./ or ../ to handle + $(srcdir) being a relative path better + +cpp-Makefile + - changed some include paths to $(BUILTIN_ABSSRC) when building in + `builtins' to handle $(srcdir) being a relative path + - change the `chmod' on bashbug to turn on read and execute for all + - added a couple of definitions to make it easier for a later + `configure' program + +support/mksysdefs + - added a -i option to specify an alternate set of directories to + search for include files + +lib/readline/bind.c + - in rl_read_init_file, when skipping whitespace at the start of + the line, decrement `i' so that we don't jump past the start + of the next line + +machines.h + - SCOv4 has a `robust' opendir that checks that you're actually + opening a directory + + 7/11 + ---- +lib/readline/complete.c + - make sure a word break character is unquoted before using it to + separate out the current word for completing + +machines.h + - new machine description: NetBSD on motorola m68k machines like + the hp300 + - undef HAVE_GETWD in the generic svr4 machine description, like + other svr4 descriptions + +lib/readline/rltty.c + - make sure to fflush (rl_outstream) after toggling the setting + of the keypad and meta key + +portbash/libc.sh + - add a test for OPENDIR_NOT_ROBUST + +support/getcppsyms.c + - output __svr4__ if we find __uxps__ (this makes the Fujitsu port of + SVR4 to the sparc build OK) + + 7/12 + ---- +lib/readline/display.c + - more display-related fixes when the prompt has invisible chars; + this time for screen updates when moving between screen lines + +lib/readline/readline.c, lib/readline/display.c + - changes to make readline work with terminals that have auto-wrap + from Per Bothner (new function _rl_update_final, term_xn changes, + some efficiency speedups, new function space_to_eol) + + 7/13 + ---- +lib/readline/display.c + - after moving up screen lines using term_up in _rl_move_vert, if + the new screen line is 0, _rl_last_c_pos needs to be adjusted + to take invisible characters into account. This was the source + of many bugs + + + 7/14 + ---- +documentation/Makefile + - change instances of `groff' to `${GROFF}', GROFF is set to + `groff' by default + +general.c, variables.c + - moved `qsort_string_compare' from variables.c to general.c + +general.h, variables.h + - moved declaration of `qsort_string_compare' from variables.h + to general.h + +alias.c, lib/readline/funmap.c + - moved qsort auxiliary functions after their use and added + forward declarations to avoid warnings from ANSI C compilers + +memalloc.h + - hpux_9 needs alloca declared as `extern void *' if __STDC__ + is defined + +support/mksysdefs + - removed HAVE_SHARED_LIBS entirely + - make a call to /bin/uname -X for SCO machines to avoid running + a different uname from the $PATH + +machines.h + - new descriptions: Intel i860 running SVR4, Tahoe running 4.3 BSD + - changed descriptions: Mips/RiscOS, DG AViiON, unknown machine + +jobs.c + - changes to how the shell handles foreground jobs dying of SIGINT: + an interactive shell using job control will no longer + act as if it received a SIGINT if the foreground job + dies from a SIGINT + + a non-interactive shell or shell without job control tries + to differentiate between SIGINTs it has seen (in + wait_sigint_handler) and a foreground job dying of a SIGINT + not sent from the keyboard, and runs the normal SIGINT code + only in the former case + + 7/15 + ---- +support/mksysdefs + - check for ${UNAME}${RELEASE} expanding to `SunOS4*' or `SunOS5*' + to set SYSDEF to SunOS4 or SunOS5, respectively. Apparently + this does not work for Solbourne + + 7/18 + ---- + +lib/readline/rltty.c + - if output is being flushed on termios systems, loop until the + FLUSHO bit is no longer set in the termios struct + +support/mksysdefs + - added a -A flag to force creation of ansi-Makefile + +machines.h + - new entry for Tandem machines running SVR3 + + 7/19 + ---- +lib/readline/rldefs.h + - include if HAVE_TERMCAP_H is defined + - use stuff if HAVE_TERMIO_H is defined and _POSIX_VERSION + is not defined + +lib/readline/rldefs.h, lib/readline/history.c + - include "config.h" if HAVE_CONFIG_H is defined + +lib/readline/{rldefs.h,signals.c,readline.c} + - WINSIZE_IN_IOCTL_H -> GWINSZ_IN_SYS_IOCTL for compatibility with + other GNU programs + +lib/readline/doc/Makefile + - fixed up to create the readline and history manuals in dvi and + ps format + +lib/readline/Makefile + - changes inspired by the standalone readline-2.0 distribution + + 7/20 + ---- +lib/readline/history.c + - new function, history_is_stifled (), returns history_stifled + - set history_state flags member in the history state functions + +lib/readline/history.h + - reorganized the function declarations, added missing declarations + - history_stifled is no longer exported by the library + - added a `flags' member to the HISTORY_STATE structure + +bashline.c + - use history_is_stifled () instead of history_stifled + +lib/readline/readline.c, lib/readline/vi_mode.c + - filled in correct argument declarations for functions called via + keymaps (count, key) + +lib/readline/complete.c + - efficiency improvement for compare_strings + + 7/21 + ---- +examples/dirfuncs + - new directory functions from ksh book, contributed by + Ken Konecki (kenk@wfg.com) + +machines.h + - hpux_8 and hpux_9 should both #undef HAVE_ALLOCA unless gcc is + being used + + 7/22 + ---- +bashline.c + - fixed up command_word_completion_function so that filenames with + leading tildes are completed correctly + + 7/26 + ---- +builtins/read.def + - if -r not given, make sure CTLESC is removed from input string + when reading \ + +lib/readline/readline.c + - new function bind_arrow_keys, which binds vt100/ansi arrow key + escape sequences after reading the termcap definition and the + inputrc file + - new function rl_yank_last_arg, which does what insert-last-arg + does in bash + +lib/readline/emacs_keymap.c + - remove default bindings to rl_arrow_keys for M-[ and M-O + - rl_yank_last_arg is now bound to `M-.' and `M-_' in + emacs_meta_keymap + +subst.c + - when performing process substitution on systems with /dev/fd, + make sure the child clears the slot in dev_fd_list it gets + from its parent so the file descriptor does not get closed + inappropriately if reallocated by, e.g., pipe(2) + +bashline.c + - removed insert_last_arg and the calls to bind in to `M-.' and `M-_'. + `insert-last-argument' is now bound to rl_yank_last_arg for + backwards compatibility + +lib/readline/funmap.c + - `yank-last-arg' is now a named command for rl_yank_last_arg + + +documentation/bash.1, documentation/readline.3 + - add description of yank-last-arg as one of the readline user + commands + +lib/readline/doc/rluser.texinfo + - added description of yank-last-arg + +builtins/getopts.def + - fixed a typo in the int-to-string code computing the value to set + OPTIND to: had '\0' instead of '0' + - made getopts handle the case where there are more than 9 dollar + variables (where rest_of_args is non-null) correctly + + 7/28 + ---- +lib/readline/display.c + - fixes to the display code for single-line-display in the presence + of prompts containing invisible characters + +lib/readline/readline.c + - if we are using horizontal scrolling and we have term_xn, decrement + the screenwidth by 1, since we won't be doing any line wrapping + + 7/31 + ---- +jobs.c + - new variable `freeze_jobs_list' to set when changes to the jobs + list or status of jobs in the list (other than calling something + like `jobs -n') are undesirable. This is set when execuing traps + on SIGCHLD + + 8/1 + --- +subst.c + - check that `~' is unquoted before performing tilde expansion in + an assignment statement + + 8/3 + --- +bracecomp.c + - keep brace completion from dumping core if there is only one + match + +lib/readline/chardefs.h + - add a define for digit_p, which returns the value of isdigit() + +lib/readline/readline.c + - added function equivalents for uppercase_p, lowercase_p, to_upper, + to_lower, pure_alphabetic, digit_p, and digit_value + - replaced calls to numeric () with calls to digit_p, removed + definition of numeric () + +lib/readline/history.c + - digit -> digit_p + +lib/readline/vi_mode.c + - replaced uses of the `isletter' define to use pure_alphabetic + from chartypes.h + - replaced uses of `numeric' with calls to digit_p + - added do...while(0) to `exchange' define + + + 8/4 + --- +execute_cmd.c + - make sure execute_function saves and restores the current loop + count with unwind_protect_int + +documentation/features.texi + - change the `Shell Command Line Options' section to `Invoking + Bash' to be closer to the GNU coding standards + + 8/5 + --- +builtins/read.def + - fixed up a memory leak and made behavior correct when no + variables given and backslash escaped at least one input char + - if we added CTLESC anywhere while reading the input string, + make sure we call dequote_string on each word of the input + before calling bind_variable with that string + + 8/6 + --- +lib/readline/readline.h + - removed definition of rl_show_star -- the variable no longer + exists + +lib/readline/readline.h, lib/readline/history.h + - reorganized to follow texinfo manual structure + +lib/readline/bind.c + - rl_function_dumper is now static + - rl_list_funmap names does not take any arguments + +builtins/bind.def + - rl_list_funmap names does not take any arguments + +lib/readline/readline.c, lib/readline/signals.c + - rl_init_argument ->_rl_init_argument + +lib/readline/rltty.c + - remove declaration and references to output_was_flushed + +support/getcppsyms.c + - if __uxps__ is defined, define __uxps__ and __svr4__ + + 8/9 + --- +support/mkdist + - added a -r option to set the `root name' of the distribution + (e.g., `bash' or `readline') + + 8/10 + ---- +input.c + - if check_bash_input sees that default_buffered_input is about + to be the target of a redirection, but the buffered input stream + is not the current input stream (e.g. as the result of an + `eval' while in a script, change default_buffered_input to a + new fd and use a new variable `bash_input_fd_changed' to note + the change + +parse.y + - if pop_stream sees that default_buffered_input has changed while + a buffered stream was on the save stack (because + bash_input_fd_changed is non-zero), then make the popped stream + and the corresponding buffer use the new fd + +test.c + - fixed an off-by-one error in test_stat when testing /dev/fd/n. + +cpp-Makefile + - add -I$(incdir) to CPPFLAGS + - add `incdir = $(prefix)/include' assignment + + 8/11 + ---- +lib/readline/signals.c + - changed some calls to signal () to call rl_set_sighandler() + - call _rl_redisplay_after_sigwinch from the sigwinch handler + to do better redisplay of wrapped command lines and multi-line + prompts + +builtins/suspend.def + - changed some calls to signal () to call set_signal_handler() + +lib/readline/*.c + - include config.h before anything else if HAVE_CONFIG_H is defined + +lib/readline/readline.c + - renamed rl_set_mark to _rl_set_mark_at_pos + - call _rl_vi_initialize_line from rl_initialize if the current + editing mode is vi mode + - only output a term_cr in crlf if term_cr is non-null + +lib/readline/readline.h + - added declarations for rl_vi_set_mark and rl_vi_goto_mark + +lib/readline/readline.c, lib/readline/readline.h + - added a new bindable command to set the mark, rl_set_mark + +lib/readline/funmap.c + - new bindable function with name `set-mark', bound to rl_set_mark + - new bindable vi-mode functions with names `vi-set-mark' and + `vi-goto-mark' + +documentation/{bash.1,readline.3}, lib/readline/doc/rluser.texinfo + - added documentation for `set-mark' (unbound) + +lib/readline/vi_mode.c + - new vi-command mode commands to save marks (the vi `m' command) + and go to saved marks (the ``' command) + - new function _rl_vi_initialize_line called from rl_initialize + to set up the line state in vi mode. Right now this just resets + all the marks + +lib/readline/vi_keymap.c + - new vi command-mode bindings to set the mark (`m') and to go to + a saved mark (``') + +documentation/readline.3 + - added vi-set-mark and vi-goto-mark to list of key bindings for + vi command mode + +lib/readline/{readline.c,display.c} + - renamed term_xn to _rl_term_autowrap + +lib/readline/display.c + - new function _rl_redisplay_after_sigwinch to encapsulate the + necessary redisplay code after a SIGWINCH is received + +variables.c + - only call find_user_command on the shell name in shell_initialize + if shell_name is not an absolute program name + - call canonicalize_pathname on the full shell pathname after + calling make_absolute on it if the shell name starts with a `.' + +siglist.h + - FreeBSD does not need a definition of sys_siglist[] + + 8/12 + ---- +lib/readline/rltty.c + - don't try to use FLUSHO unless FLUSHO is defined + +cpp-Makefile + - make sure to pass $(CC) to the make in the lib/malloc subdirectory + +lib/readline/readline.c + - don't declare PC, UP, and BC as extern; it causes too many problems + + 8/13 + ---- +machines.h + - add -DNO_SBRK_DECL to SYSDEP_CFLAGS for SVR4.2 on i386 + +support/mksysdefs + - new variable UNAME_S for the output of `uname -s' + - if uname -s does not output the same thing as uname, and uname -s + outputs UNIX_SV, then set UNAME to UNIX_SV. Some versions of i386 + SVR4.2 make `uname' equivalent to `uname -n' + +lib/readline/memalloc.h + - removed from the library; not needed since readline does not use + alloca + +lib/readline/{history.c,isearch.c,search.c,rldefs.h}, lib/tilde/tilde.c + - no longer include memalloc.h + +lib/readline/Makefile + - remove dependencies on memalloc.h + +lib/readline/signals.c + - overhauled signal handling based on ideas from Bruno Haible + (haible@ma2s2.mathematik.uni-karlsruhe.de) so that readline + saves and restores the signal mask and flags on Posix systems + - don't include fcntl.h, sys/file.h, errno.h, or stdlib.h + - ignore SIGALRM during rl_signal_handler like SIGINT until the + old handler is installed, on non-Posix or non-BSD systems + - new define SIGHANDLER_RETURN, dependent on the value of + VOID_SIGHANDLER + - use RETSIGTYPE instead of `sighandler' as the signal handler + return type; it's the name autoconf uses. If not defined, + set up from VOID_SIGHANDLER + +lib/readline/rltty.c + - call control_meta_key and control_keypad from rl_deprep_terminal + before putting the terminal back into ICANON mode to avoid + messing up the tty driver + + 8/15 + ---- +cpp-Makefile + - changes so that fewer -Idir arguments are passed to the make + in ./builtins + + 8/16 + ---- +lib/readline/bind.c + - use KEYMAP_SIZE instead of 128 in rl_invoking_keyseqs_in_map + +lib/readline/complete.c + - qsort the array of matches omitting matches[0], which must stay + in place no matter what, even if strcmp doesn't compare unsigned + chars correctly + - some fixes to the loop that prints the list of completions + +lib/readline/keymaps.c + - run the loop up to 127 when creating a new keymap in rl_make_keymap + +input.h, general.h, lib/readline/keymaps.h, lib/readline/tilde.h + - use _FUNCTION_DEF instead of __FUNCTION_DEF + +lib/readline/parens.c + - include "config.h" if HAVE_CONFIG_H is defined + - include if HAVE_SYS_SELECT_H is defined + - use HAVE_SELECT instead of FD_SET as the `configuring define'; + define HAVE_SELECT if it is not already defined but FD_SET is + +lib/readline/readline.c, lib/readline/rltty.c + - the __GO32__ include file is + +lib/tilde/tilde.c + - rewrote tilde_expand_word, eliminated static u_name array in + favor of using xmalloc + +lib/tilde/tilde.h + - use single leading underscore for file inclusion guard + +lib/readline/vi_mode.c + - use KEYMAP_SIZE rather than a literal 127 as the loop limit when + creating the overstrike keymap + +support/install.sh + - new file, from the make-3.71 distribution + + 8/17 + ---- +lib/readline/complete.c, lib/readline/readline.h + - new variable, rl_basic_quote_characters, used to see + if a word break character was a quoting character, so we can + do appropriate quoting after the completion + +lib/readline/parens.c + - use rl_basic_quote_characters when trying to find a matching + open paren + +lib/readline/doc/rltech.texinfo + - description of rl_basic_quote_characters + + 8/18 + ---- +newversion.c + - renamed to support/mkversion.c, which builds to mkversion + +cpp-Makefile + - changed to use support/mkversion + - removed instances of $< except in suffix rules -- some makes don't + handle those right + +lib/readline/rldefs.h + - make sure to #undef HAVE_DIRENT_H on NeXT machines + + + 8/19 + ---- +lib/readline/readline.h + - removed some duplicate function declarations + +trap.h + - define DEBUG_TRAP as NSIG for the last slot in trap_list + - define EXIT_TRAP as 0 + - declare trap_list as array of unknown size, since this is just a + header file + +trap.c + - extend trap_list and sigmodes to NSIG+1 + - initialize DEBUG_TRAP to do nothing; changes to functions to handle + DEBUG_TRAP + - let decode_signal return OK if NSIG is given, even though this will + vary between systems, for DEBUG_TRAP + - make reset_signal_handlers and restore_original_signals loop from + 1 to NSIG, not 0 to NSIG + - change GET_ORIGINAL_SIGNAL to try to get the original signal handler + only if `sig' is less than NSIG + - restore_default_signal just frees the trap string for both EXIT_TRAP + and DEBUG_TRAP + - run_debug_trap: new function to run traps on DEBUG + - free_trap_command: new function to free a trap string if it is + really a command and not one of the special trap values + - if a SIGINT trap resets the SIGINT trap string, free the old string + - new function: set_debug_trap(char *), which will reset the DEBUG + trap string, suitable for calling from an unwind-protect handler + +signames.c + - arrange things so that signal_names[NSIG] == "DEBUG" + +builtins/trap.def + - make sure traps on DEBUG are printed + +execute_cmd.c + - call run_debug_trap at the end of the `cm_simple' case in + execute_command_internal + - change execute_function so that traps on DEBUG do not propagate + into the function + +documentation/bash.1, documentation/features.texi + - documented the new DEBUG trap + + 8/20 + ---- +shell.c, config.h + - made the name of the restricted shell configurable in config.h; + the option is RESTRICTED_SHELL_NAME + +shell.c + - if the shell is invoked as `sh', enter Posix.2 mode after running + /etc/profile and ~/.profile + +builtins/read.def + - added a -p option for a prompt string, which is displayed before + trying to read anything + +documentation/bash.1 + - description of `read -p' + - description of new -r and -s options to `jobs' + +documentation/features.texi + - description of new -r and -s options to `jobs' + +jobs.c + - new functions: list_running_jobs, list_stopped_jobs + - list_jobs -> list_all_jobs + - new function `print_job' to do the work for all of the list*jobs + functions + - list_one_job type now void, calls print_job to do the work + +jobs.h + - new declarations for list_running_jobs, list_stopped_jobs + - list_one_job now void + - list_jobs -> list_all_jobs + +builtins/jobs.def + - new options: -r to print only running jobs, -s to print only + stopped jobs + + 8/22 + ---- +lib/readline/readline.c + - don't try to expand a null prompt string + +subst.c + - remove special handling of hostname_completion_file and + history_control; HOSTFILE and HISTCONTROL are the acceptable + names + - new function sv_histignore; call if HISTIGNORE variable is + assigned to + +bashhist.c + - new functions and declarations for handling HISTIGNORE variable + and its specifications for command lines to ignore + - change maybe_add_history to call history_should_ignore if the + HISTCONTROL tests are passed + +documentation/bash.1, documentation/features.texi + - removed mention of history_control and hostname_completion_file + - added description of HISTIGNORE + + 8/23 + ---- +array.c, array.h + - promoted to the shell mainline code; the `array' subdir is now + gone + +variables.h + - include `array.h' for the ARRAY typedef + +variables.c + - changes to assignment() to handle array assignments a[x]=b + - split off the creation of new variables into a new function: + make_new_variable + - split off the construction of variable values for assignments and + bindings into a new function: make_variable_value + - new function: bind_array_variable, to handle the addition of + new array variables and indices + +subst.c + - changes to do_assignment_internal to handle a[x]=b: + parse the subscript out of the name and call evalexp() on it + call bind_array_variable to do the value assignment + - change the printing of assignment statements when -x is in effect + to before the variable binding is attempted, so any error messages + look better + - new functions for referencing indexed arrays and to find the length + of arrays or array indices + + 8/24 + ---- +expr.c + - fixed up error reporting to use get_name_for_error if not executing + a builtin + +subst.c + - everywhere evalexp() is called, use maybe_expand_string to expand + the expression (calls expand_string if necessary) + +subst.h + - extern declarations for array convenience functions exported to the + rest of the shell + +variables.c + - more new convenience array functions: make_new_array_variable and + convert_var_to_array + +builtins/declare.def + - additions to declare_internal to add a -a flag which makes array + variables, and the requisite semantics (declare +a does not work, + declare -a name=value does not work, etc.) + - code to support the ksh-like declare a[] syntax to make array + variables + +builtins/setattr.def + - made set_or_show_attributes understand array variables and `-a' + +builtins/set.def + - changes to make `unset name' work, where name is an array variable + - changes to make `unset name[xxx]' work + + 8/25 + ---- + +lib/readline/readline.c + - make sure meta characters are added to a keyboard macro as + ESC-char if we are converting meta chars to ascii + - change rl_unix_word_rubout to handle repeat counts + - move the check of LC_CTYPE from rl_initialize to + readline_initialize_everything, where it should have been + all along + +error.c + - make sure is included before + +machines.h + - new entry for Bull DPX2 + +lib/tilde/tilde.c + - include before + +variables.c + - PS1 and PS2 are no longer non-unsettable + + 8/26 + ---- +variables.c + - PPID, UID, and EUID, since they are read-only, need not appear on + the `non-unsettable' list + - PATH and IFS now have the `nounset' attribute set rather than use + a separate `non-unsettable' list + - the non-unsettable list and non_unsettable() are gone + +variables.h + - new define `non_unsettable_p' to test nounset attribute + +builtins/set.def + - `unset' now uses non_unsettable_p to tell whether a variable can + be unset even if it's not readonly + +builtins/read.def + - read -a arrayname will read a list of values from stdin and assign + them to the array `arrayname', splitting on " \t\n" (honoring + backslash quoting if -r is not supplied) + +builtins/declare.def + - print values of arrays when `display -a' is invoked + +builtins/exit.def + - remove references to `bye' + + 8/28 + ---- +lib/readline/rltty.c + - removed calls to control_keypad; they cause problems on some + machines and should not really be performed by an application + +cpp-Makefile + - support for optionally linking array.o into the shell + +lib/glob/glob.c + - when returning an error after glob_filename on the directory name + returns an error result, make sure to free `result'. This fixes + a memory leak for names passed to glob_filename which contain + globbing characters before the first `/' but do not match any + existing files + + 8/29 + ---- +execute_cmd.c + - the `for' and `select' commands should expand their word lists + using expand_words_no_vars + +command.h, execute_cmd.c, general.c, make_cmd.c, print_cmd.c, subst.c,parse.y + - changed the `dollar_present', `quoted', and `assignment' members + of WORD_DESC to a single flags word + + 8/30 + ---- +variables.c + - make get_string_value return array[0] if called with a variable + that is an array + + 8/31 + ---- +lib/readline/display.c + - don't take the value of _rl_term_autowrap into account when + computing which screen line the cursor should be on; it screws + up wrapping on terminals without the `xn' capability + +lib/readline/examples/rltest.c + - new file, test code moved here from readline.c + +documentation/features.texi, lib/readline/doc/hsuser.texinfo + - fixed up printing of some of the shell options and the history + commands and modifiers + +subst.c + - make sure $name, where `name' is an array variable, returns + ${name[0]} + +variables.c + - convert a variable to an array even if index 0 is being assigned to, + instead of leaving it a `normal' variable + + 9/1 + --- + +builtins/setattr.def + - make sure that array variables printed by `declare' single-quote + the value after the `=' so the statement can be reused as input + +variables.c + - make sure array variables can be exported (name=(assignments)), and + that the export code works. The code is commented out because of + the possible confusion between an array and a regular string that + looks like an array assignment string. + + 9/2 + --- +variables.c + - make sure there is an executable file with the same name as + `shell' name in the current directory before assigning it to + $BASH at startup. If there is not, just make $BASH the login + shell name + + 9/3 + --- +parse.y + - removed a reduction from the `list0' production that could cause + statements which require semicolons to be allowed without error + (like before a `}' in a group command) + +lib/readline/display.c + - new functions: _rl_save_prompt and _rl_restore_prompt to save and + restore prompt invisible character info + - if the redisplay code encounters a line shorter than the old one + and containing invisible characters, make sure that the cursor is + at the end of the new text before calling clear_to_eol + - new variable last_invisible containing the index in the prompt + string of the last invisible character. We only have to redraw + the prompt string of _rl_last_c_pos is < last_invisible + - new function _rl_make_prompt_for_search to take care of setting + up the prompt string for a non-incremental search when the prompt + contains invisible characters + - fix so that a prompt string with invisible characters is not + redrawn each time through update_line (don't tputs term_cr unless + the cursor is before the last invisible character in the prompt + and will be moving past the last invisible char of the prompt + +lib/readline/isearch.c + - call _rl_save_prompt and _rl_restore_prompt when changing the prompt + to do i-search + + 9/4 + --- +lib/readline/readline.c + - doing_an_undo -> _rl_doing_an_undo for use by the vi-mode code + - rewrote rl_do_undo to reformat and eliminate a clumsy goto + - new split the add-to-kill-ring code off into a separate function, + _rl_copy_to_kill_ring + - added a new bindable function rl_copy_region_as_kill + - added a new bindable function rl_kill_region + - moved _rl_char_search_internal to here from vi_mode.c + - new bindable function rl_char_search + +lib/readline/vi_mode.c + - made `.' work for the `cw' and `[Ss]' commands, which implicitly + put the editor into insertion mode after they run + - split rl_vi_char_search code that actually searches for a character + into a new function, _rl_char_search_internal + +lib/readline/emacs_keymap.c + - bind M-= to possible-completions for ksh compatibility + - bind M-* to insert-completions + - bind C-x C-x to exchange-point-and-mark + - bind C-] to character-search + - bind C-@ to set-mark + +lib/readline/funmap.c + - new bindable function names: exchange-point-and-mark, kill-region, + copy-region-as-kill, character-search + +lib/readline/readline.h + - declare rl_exchange_point_and_mark, rl_copy_region_to_kill, + rl_kill_region, and rl_char_search externally + +documentation/{bash.1,readline.3}, lib/readline/doc/rluser.texinfo + - document new exchange-point-and-mark bindable command + - documented M-* default emacs-mode binding to insert-completions + - documented new copy-region-as-kill and kill-region commands + - documented new character search emacs-mode command + - documented new binding for set-mark + +lib/readline/rldefs.h + - moved values for `dir' when searching for characters in the line + from vi_mode.c to here + + 9/6 + --- +general.c + - new function ansicstr, which decodes ANSI-C backslash-escaped + characters (with the addition of \e and \E to mean escape) and + returns a new string + +subst.c + - new expansion $'...' which translates ANSI-C backslash escapes + in `...' and expands to the result + +builtins/echo.def + - ifdefs for ANSI-C for \a and \v rather than just expanding to + literal ASCII values + +documentation/bash.1 + - documented new $'...' expansion + + 9/7 + --- +builtins/enable.def + - fixed up the help text + - added a -s flag to restrict operation to Posix.2 `special' builtins + - removed -all option; -a is the way to do it now + - converted to use the builtin getopt + +builtins/common.c + - changed builtin_address_internal to return a pointer to a + struct builtin, which makes it much more useful. Changed + find_shell_builtin and builtin_address accordingly + - new function find_special_builtin, which returns special builtins + ((flags & SPECIAL_BUILTIN) != 0) + +execute_cmd.c + - in Posix.2 mode, find special builtins before shell functions + when performing command lookup + - in find_user_command_internal, return NULL if there is no $PATH + - in Posix.2 mode, failure of a special builtin causes a non- + interactive shell to exit + +variables.c + - allow $PATH to be unset + + 9/8 + --- +input.h + - added a new `input type': st_stdin, for use when using readline, + since readline is not properly a string + +parse.y + - surgery on the grammar: + o added new `compound_list' production: a list that can end + without a newline, `;' or `&' (used in subshell commands + and case clause commands) + o removed shell_command_1, folded rules into command + o eliminated pattern_list_1; changed case_clause_sequence to + directly incorporate the SEMI_SEMI token (a pattern_list_1 + was just a pattern_list with a trailing SEMI_SEMI) + o new `for_command' and `case_command' productions + o redirections -> redirection_list + o newlines -> newline_list + o redid the code that attaches redirections to the function + command rather than the function definition and eliminated + all of the shift/reduce conflicts + - changed with_input_from_stdin in the readline case to set + bash_input.type to st_stdin + +print_cmd.c + - a couple of changes to the way functions are printed + +shell.c + - only execute the PROMPT_COMMAND if input is not coming from a + string (bash_input.type != st_string). This fixes the problem + of PROMPT_COMMAND being executed by `eval' commands in an + interactive shell + + 9/12 + ---- +shell.c + - all interactive shells SIGHUP running jobs when exiting due to + a SIGHUP, not just login shells + + 9/13 + ---- +config.h, config.h.mini + - changed the default primary prompt (PPROMPT) to "\s\$ " + - removed the INTERACTIVE_COMMENTS define + +flags.c + - interactive comments are now enabled by default, regardless of the + INTERACTIVE_COMMENTS define + +input.h + - a new enum: stream_type, used in the BASH_INPUT struct + +parse.y + - bash_input.type is now initialized to st_none + +bashhist.c + - command_oriented_history is now the default + +documentation/bash.1 + - removed description of `nolinks' variable, updated set -P + description + - removed description of `notify' variable, updated set -b + description + - removed description of `noclobber' variable, updated set -C + description + +variables.c + - IFS may now be unset + +builtins/read.def + - now does the right thing if IFS is unset (acts as if it is + set to " \t\n") + +builtins/cd.def + - added a new parameter to change_to_directory () which says + whether or not to follow symlinks, instead of using the + global no_symbolic_links + - changed cd_builtin to accept a -P option to disable symlink + following temporarily + +builtins/ulimit.def + - instead of using a hardcoded `long' for the return type of the + rlimit functions, use RLIMTYPE, which defaults to long + - new defines string_to_rlimtype -> string_to_long and + print_rlimtype for systems which do not need `RLIMTYPE' defined + to something other than long + +general.c + - function replacements for string_to_rlimtype and print_rlimtype + for machines which have RLIMTYPE defined in the machine description + +general.h + - extern declarations for string_to_rlimtype and print_rlimtype + +shell.c + - don't source file named by $ENV at script startup if act_like_sh + is turned on + +machines.h + - new entry for amiga/netbsd + - change all the netbsd entries to add -DRLIMTYPE=quad_t to + SYSDEP_CFLAGS + +siglist.h + - define sys_siglist as _sys_siglist on the amiga only if USGr4 is + defined + +print_cmd.c + - change so that printf is not prototyped on LynxOS with gcc + +lib/readline/Makefile + - changed the `installdirs' target to not fail if the directories + do not need creating + +lib/readline/history.c + - fixed a bug in history_arg_extract which manifested itself when + !* was used after a command without arguments (e.g., pwd ; echo !*) + + 9/15 + ---- +subst.c + - expand_word_internal should preserve the flags (other than + W_QUOTED) from the word passed as a parameter on the word it returns + - expand_words_internal renamed to expand_word_list_internal + - expand_word_list_internal does not perform word splitting or + globbing on words with the W_ASSIGNMENT bit set + - removed special treatment of `notify', `command_oriented_history', + `history_control', and `nolinks' + - rewrote some of the sv_* functions to remove or avoid calls to + sscanf, one of the most expensive C library functions + +variables.c + - don't look for $command_oriented_history at startup, since it now + defaults to `on' + +general.h, general.c + - new function posix_initialize to do whatever is necessary to enable + `Posix mode' + +shell.c, subst.c + - call posix_initialize + +general.c + - rewrote replacements for strchr, strrchr to make them faster + +builtins/enable.def + - new -f option and necessary support to load builtins from a shared + object file on systems supporting both dlopen() and dlsym(). New + builtins loaded this way can replace existing shell builtins or + add completely new functionality + +builtins.h + - mkbuiltins.c creates `static_shell_builtins', which is a fixed + array, `shell_builtins' points to this array initially + - extern declaration for current_builtin + +builtins/mkbuiltins.c + - change to creat static_shell_builtins[] and declare shell_builtins + as a pointer to it + - change to declare `current_builtin' in created builtins.c + +builtins/source.def + - print an error message and return failure if no filename argument + is supplied + +builtins/common.c + - current_builtin is set by find_shell_builtin, find_special_builtin, + and builtin_address_internal + - new function builtin_usage, which prints the contents of + current_builtin->short_doc + +builtins/{bind,declare,enable,fc,getopts,hash,history,jobs,kill,read,set, + setattr,trap,ulimit,umask}.def + - changed the builtins in these files to use builtin_usage() to + print usage messages + +cpp-Makefile + - support for the HAVE_DLOPEN and HAVE_DLSYM defines + +machines.h + - added -ldl and -Bdynamic to the SunOS4 entry + +documentation/{bash.1,features.texi} + - documented new enable -f option to dynamically load builtins + + 9/16 + ---- +test.c + - added `==' as a synonym for `=' + + 9/18 + ---- +bashline.c + - include readline/rlconf.h so that VI_MODE is defined if + appropriate + +shell.c + - removed `-nobraceexpansion' option + +flags.c, flags.h + - added new -B flag; enabled if brace expansion is turned on + +subst.c + - use brace_expand instead of !no_brace_expand + +builtins/set.def + - change set -o braceexpand to be equivalent to set -B + +parse.y + - in with_input_from_stdin, do nothing if bash_input.type already + is st_stdin or if there is already a stream with type st_stdin + on the saved stream stack + - new function stream_on_stack to find out if there is a saved + stream of a specified type + +documentation/bash.1, documentation/features.texi + - doeumented new set -B option + - removed -nobraceexpansion shell startup option + + 9/19 + ---- +builtins/reserved.def + - made `help select' work + +cpp-Makefile + - removed references to the nonexistant `load.def' + - removed conditionals based on GETOPTS_BUILTIN + +builtins/getopts.def + - no longer $DEPENDS_ON GETOPTS_BUILTIN + +config.h, config.h.mini, builtins/help.def + - made the `help' builtin dependent on the HELP_BUILTIN define + - removed GETOPTS_BUILTIN + +builtins/mkbuiltins.c + - made the `$DEPENDS_ON' clause work for reserved words and + shell control structures in reserved.def by writing out + dependencies to builtext.h even if there is no `function' + - made the long_doc for each builtin and reserved word get + written out to builtins.c with #ifdef HELP_BUILTIN surrounding + the doc strings -- this makes the minimal shell much smaller + +shell.c, documentation/bash.1 + - removed `-quiet' long option + +parse.y + - make sure that word splitting is not performed on the prompt + string after expanding in prompt_string_decode by calling + expand_string_unsplit instead of expand_string + +lib/readline/bind.c + - new readline variable `mark-directories': if set, completed + directory names have a slash appended + +lib/readline/complete.c + - support for `mark-directories' + +documentation/{bash.1,readline.3}, lib/readline/doc/rluser.texinfo + - documented the new `mark-directories' variable + +builtins/bind.def + - new option `-r' to remove a binding for a specified key sequence + - make sure that a failure return from bind resets the keymap + correctly if a -m option was supplied + +documentation/{bash.1,features.texi} + - documented new bind -r option + + 9/20 + ---- +builtins/jobs.def + - new `disown' builtin + +documentation/{bash.1,features.texi} + - documented new `disown' builtin + +cpp-Makefile + - removed support for `MAKE_SHELL' cpp variable + - renamed endian.aux to mkendian, look for endian.c in support dir + - link in array.o, alias.o, braces.o, bracecomp.o + unconditionally, rely on cpp defines in the files to exclude code + - pass -DHAVE_SYS_SIGLIST if sys_siglist is defined + - pass -DHAVE_GETCWD if HAVE_GETCWD is defined in machines.h + - pass -DHAVE_VFPRINTF_EMUALTION through from machines.h to + compilation + +array.c + - don't compile in body of file unless ARRAY_VARS is defined + +braces.c + - don't compile in body of file unless BRACE_EXPANSION is defined + +alias.c + - don't compile in body of file unless ALIAS is defined + +bracecomp.c + - don't compile in body of file unless BRACE_EXPANSION and READLINE + are defined + +bashline.c + - don't compile in body of file unless READLINE is defined + +bashhist.c + - don't compile in body of file unless HISTORY is defined + +siglist.c + - don't compile in body of file unless HAVE_SYS_SIGLIST is not + defined + +getcwd.c + - don't compile in body of file unless HAVE_GETCWD is not defined + +vprint.c + - don't compile in body of file unless USE_VFPRINTF_EMULATION + is defined + +support/mksysdefs + - for SCO machines, define SYSDEF as SCO or SCOv4 + +lib/readline/readline.[ch] + - new function rl_push_macro_input (s), which makes s the current + macro input string + +endian.c + - renamed to support/endian.c + + 9/21 + ---- +lib/readline/complete.c + - more file types for the VISIBLE_STATS code: + | FIFOs + % character special devices + # block special devices + +lib/readline/isearch.c + - made RETURN an alternate search string terminator + +builtins/read.def + - removed use of stdio -- unbuffered stdio on a dup of fd 0 is + a big loss + +builtins/set.def + - new function: minus_o_option_value, returns 1, 0, or -1 given + a -o option name (-1 means a bad name) + - reorganized list_minus_o_options to be more efficient + +execute_cmd.c + - when expanding a here document, use maybe_expand_string rather + than a simple expand_string to try a speed things up a bit + +input.c + - don't compile in the body of the file unless BUFFERED_INPUT + is defined in config.h + + 9/22 + ---- +jobs.h, siglist.h + - replaced instances of Solaris with SunOS5 + +shell.c + - changed long option parsing code so that --arg is equivalent + to -arg, when `arg' is one of the recognized multichar options + +builtins/history.def + - rewrote to regularize the option parsing and use internal_getopt + - now allows only one of -awrn to be specified + - added a new -p option that adds each of its arguments to the + end of the history list, and deletes the `history -p' history + entry + +builtins/trap.def + - added new -p option to display specified trap values, or all + trap values if no other arguments supplied + +documentation/{bash.1,features.texi} + - documented new history -p option + - documented new trap -p option + + 9/25 + ---- +lib/readline/display.c + - fixed up the calcluation of the correct cursor line number (a `+' + and `-' were transposed in the calculation of `nleft') + + 9/26 + ---- +general.c + - moved isint() here from test.c, renamed to legal_number + +general.h + - extern declaration of legal_number + +test.c + - only compile isint() if SHELL is not defined, define it as + legal_number otherwise + +trap.c + - use legal_number in decode_signal instead of sscanf() + +builtins/common.c + - moved list_sigs to here from trap.def, renamed to + display_signal_list + - changed get_numeric_arg to use legal_number instead of doing + the parsing and calculation itself + +builtins/common.h + - extern declaration for display_signal_list + +builtins/{trap.def + - changed to use display_signal_list for trap -l + +builtins/kill.def + - changed to use display_signal_list for kill -l + - added new kill -n signum option + +documentation/bash.1 + - added description of new kill -l signame functionality + - added description of new kill -n signum feature + - added description of new enable -d option + +builtins.h + - added a char *handle member to `struct builtin' for later use + - new flags value: BUILTIN_DELETED + +builtins/mkbuiltins.c + - added code to inintialize the `handle' member to null in the + static builtin array definition + +builtins/common.c + - don't `find' a builtin if the BUILTIN_DELETED flag is set in the + flags word of the struct builtins array + +builtins/enable.def + - new option -d to remove a builtin loaded with -f, depends on + HAVE_DLCLOSE + +cpp-Makefile + - pass -DHAVE_DLCLOSE through from machines.h to compilation + +machines.h + - change SunOS4 machine description to define HAVE_DLCLOSE + + 9/27 + ---- +shell.c + - split shell exit code off into a separate function: exit_shell(status) + +builtins/exec.def + - rewrote for clarity and speed and to use the builtin getopt() + - added new -a, -c, and -l options + - now calls exit_shell if shell_execve fails and the shell is not + interactive + +documentation/bash.1 + - documented the new options to `exec' + + 9/28 + ---- +builtins/exec.def + - if the execve fails and the shell is not going to exit, reinitialize + traps and signals + - only call end_job_control if subshell_environment != 0 + - exec should exit unconditionally if the execve fails and + subshell_environment != 0 + +subst.c + - if valid_brace_expansion_word fails, make sure `temp' is set to + NULL before trying to free it after the `goto bad_substitution' + +cpp-Makefile + - add $(CPPFLAGS) to the compilation flags when making `mksignames' + +documentation/features.texi + - fixed a typo in the tilde expansion section + + 9/29 + ---- +machines.h + - DEC OSF/1 has the dlopen/dlsym/dlclose set of library functions + +shell.c + - don't execute /etc/profile if -noprofile given + +builtins/pushd.def + - new file, pushd/popd/dirs split off from cd.def + - replaced calls to sscanf with calls to legal_number + +builtins/Makefile, cpp-Makefile + - changes for pushd.def + +config.h, config.h.mini + - ALLOW_RIGID_POSIX_COMPLIANCE is no longer used + +subst.c, variables.c + - GETOPTS_BUILTIN is no longer used + +variables.c + - if the first character of argv[0] is not a `/', search the path + and canonicalize the result to find out how to set $BASH + + 10/2 + ---- +builtins/enable.def + - changed enable_shell_builtin to use builtin_address_internal to find + the builtin rather than searching the list itself + - list_some_builtins skips a builtin if flags & BUILTIN_DISABLED != 0 + - rewrote dyn_load_builtin to take a list of names to load from a + single filename + - don't dlclose the shared object in dyn_unload_builtin unless its + reference count drops to 0 + +builtins/test.def + - don't bother making new copies of everything in the argument list + when constructing the argc and argv for test_command; just make + sure not to free anything but ARGV + + 10/3 + ---- +bashline.c + - remove C-e binding in vi movement mode which switches into emacs + mode + +general.c + - make xfree only try to call free on non-null strings + + 10/4 + ---- +builtins/read.def + - new `-e' option that uses readline to read the line + - if one of the arguments is not a legal variable name, print an + error message and return failure + +builtins/reserved.def + - changed the `Variables' to `variables' so `help variables' works + +subst.c + - set startup_state to 2 in child of command substitution to try to + avoid some unneeded forks + +trap.c + - removed call to reset_terminating_signals in restore_original + signals; callers are now required to take care of that themselves, + if necessary + +execute_cmd.c, subst.c + - added necessary calls to reset_terminating_signals before calls + to restore_original_signals + +execute_cmd.c + - when executing a null command in a subshell, don't bother passing + a string to make_child; just pass NULL + - in execute_builtin_or_function, don't add so many unwind-protects + if `subshell' == 1 + - in command_substitute, call cleanup_the_pipeline to discard the + old pipeline, so pipeline_pgrp does not get set to 0 in + start_pipeline, which is called by make_child via making_children + +jobs.c, nojobs.c + - new function, ignore_tty_job_signals, to set SIGTTIN, SIGTTOU, and + SIGTSTP to SIG_IGN + - new function, default_tty_job_signals, to set those signals + to SIG_DFL + - new function, cleanup_the_pipeline to free up the_pipeline and + set it to NULL + + 10/5 + ---- +builtins/history.def + - the history -p option is now -s (to sort of parallel the ksh + print -s option) + - the -s option now combines all of its arguments into a single + string and appends the string to the history list + - new history -p option to history expand each argument and print + the result without modifying the history list + +documentation/bash.1, documentation/features.texi + - documented the new -e option to read + - documented the new history -s and -p options + - documented the new cd and pwd -L options + +builtins/cd.def + - changed cd and pwd to use internal_getopt + - added the -L option to cd and pwd to follow symlinks (like if + set +P were issued) + +builtins/pushd.def + - added text for dirs +N and dirs -N to the dirs builtin long doc + - added -v option to dirs to print dirstack one dir per line with + stack index prepended + + 10/6 + ---- +execute_cmd.c + - split the command searching code into a new function: + search_for_command + - removed a bunch of dead code from shell_execve + - removed call to reset_terminating_signals when executing a function + or builtin in a subshell (either via (xxx) or xxx &) + - don't add unwind protects at all in execute_function if subshell == 1 + +lib/readline/chardefs.h + - new macro ALPHABETIC(c), returns 1 if c is a letter or digit + +lib/readline/readline.c + - don't call abort() in rl_change_case(); it's impolite in a + library function + - new macro, SWAP, used to swap values of two integers + - changed alphabetic to use ALPHABETIC, made it slightly faster + - modified rl_change_case() so that word capitalization is the + same as GNU Emacs + +lib/readline/search.c + - in noninc_dosearch, don't reset the history positition to what + it was if we're currently in vi editing mode (as per Posix.2 + `/' and `?' vi-mode editing commands) + + 10/7 + ---- +builtins/common.c + - changed single_quote and double_quote to use char pointers + rather than string indexing + - new function backslash_quote(string), which quotes special + characters in STRING using backslashes + + 10/8 + ---- +alias.h + - added an extern declaration for alias_expand_word + +parse.y + - broke the alias expansion code off into a function + alias_expand_token; its return value says whether to re-read + a token or go on + - changed the alias expansion code to handle aliases that expand + to nothing better + - broke the code that does special-case token recognition off into + a function: special_case_tokens + - used the new functions to make sure that the special-case tokens + can be the expansion of an alias + - made sure that if in `posix mode' that reserved words cannot be + aliased and that all reserved words can be the values of aliases + and be recognized after expansion + + 10/10 + ----- +lib/readline/complete.c + - replaced #ifdef SHELL code with two new exported readline interfaces: + rl_filename_quoting_function and rl_filename_dequoting_function. + Both return a pointer to char. + - new extern variable rl_filename_quote_characters, containing a list + of characters that cause a word to be quoted by the completer if + they appear in a file name + +bashline.c + - new functions for rl_filename_quoting_function and + rl_filename_dequoting_function. + - initialize rl_filename_quoting_function and rl_filename_dequoting_function + in initialize_readline + - initialize rl_filename_quote_characters + +lib/readline/readline.h + - extern declarations for new public interfaces + rl_filename_quoting_function and rl_filename_dequoting_function + - added declarations for NO_MATCH, SINGLE_MATCH, and MULT_MATCH for + use by the filename quoting functions + - new extern declaration for rl_filename_quote_characters + +lib/readline/history.c + - made a version of single_quote be compiled in if SHELL is not + defined + - the `q' and `x' modifiers are now compiled in by default, not + just if SHELL is defined + + 10/11 + ----- +subst.c + - string_quote_removal was being a little overzealous in stripping + things within embedded quoted strings when `quoted' was == 1. + Only remove one level of quotes each time through the function + This fixes the problem of quotes being stripped incorrectly in + var="The text \"hello\" should show up inside double quotes." + +lib/readline/history.c + - made the behavior of single quotes inhibiting history expansion + configurable with a variable: history_quotes_inhibit_expansion, + not just shell-specific + - added a new variable: history_search_delimiter_chars, which is a + list of characters that can also delimit a history search string + +lib/readline/history.h + - extern declaration of history_quotes_inhibit_expansion + - extern declaration of history_search_delimiter_chars + +bashhist.c + - set history_quotes_inhibit_expansion to 1 in bash_initialize_history + - initialize history_search_delimiter_chars to ";&()|<>" + +lib/readline/doc/{rltech,hstech}.texinfo + - documented new readline and history library interfaces + +parse.y + - split the part of read_token that reads a single word off into + a new function: read_token_word + +lib/readline/chardefs.h + - include by default; only check HAVE_STRING_H if + HAVE_CONFIG_H is defined + + 10/12 + ----- +parse.y + - moved the `RESET' code out of read_token into reset_parser + - rewrote some of decode_prompt_string to make it more efficient + - rewrote more of read_token_word to make it more efficient + - make shell_getc cast its result to `unsigned char' before + returning it. This fixes the problem of \255 appearing in a + line + +machines.h + - new entry for m68k machines running Linux + + 10/13 + ----- +builtins/exec.def + - use search_for_command rather than find_user_command to look up + the path to exec, so the hash table and temp environment are used + +variables.c + - don't rebuild the export environment after binding a shell + function unless that function is exported + - make sure that copy_variable copies arrays correctly, using + dup_array() + - in assign_in_env, only call tilde_expand if a `~' appears somewhere + in the value + +execute_cmd.c + - if we found $PATH in the temp environment in search_for_command, + call find_user_command_in_path instead of find_user_command, so + we don't try to search the temporary env again. Call + find_user_command as normal if PATH is not in the temp environment + +subst.c + - char_is_quoted should not be compiled in if READLINE is not + defined + +lib/readline/complete.c + - add a new external interface: Function *rl_char_is_quoted_p, + which is called to find out whether a word break character is + quoted and should be skipped over when breaking words for + the completer + +lib/readline/readline.h + - extern declaration for rl_char_is_quoted_p + +bashline.c + - initialize rl_char_is_quoted_p to char_is_quoted + +lib/readline/doc/rltech.texinfo + - documented rl_char_is_quoted_p + +lib/readline/readline.c + - extend the undo records so that a `start' or `end' value of -1 + means rl_point and a value of -2 means rl_end. This is a start + to better support for undoing vi-mode commands like `C' + +lib/readline/vi_mode.c + - don't save what's entered in insert mode after a `C' command + for later insertion when doing a `redo' + + 10/16 + ----- +test.c + - rewrote unop() to use a switch statement instead of a call to + strchr + - remove #ifdef SHELL blocks by defining getuid, geteuid, getgid + and getegid as references to current_user.{uid,euid,gid,egid} + respectively + - change group_member to only fetch the group list once and to use + NGROUPS_MAX or NGROUPS to find the maximum number of groups + +documentation/bash.1 + - fixed description of ${#@} expansion + + 10/17 + ----- +support/bashbug.sh + - add a `From:' line to the mail message handed to rmail + + 10/18 + ----- +test.c + - rewrote binary_operator for speed and clarity + - removed age_of, added arithcomp(), filecomp() to support new + binary_operator + - removed support for `-l string' + +documentation/bash.1 + - removed mention of `-l string' from `test' description + + 10/19 + ----- +cpp-Makefile + - pass PROGRAM as the double-quoted shell name to compilation of + shell.c and error.c + + 10/20 + ----- +support/bashbug.sh + - don't try to use ${word:-expansion}; ultrix sh doesn't understand it + +hash.c + - new function: flush_hash_table (table, free_data) to delete the + contents of a given hash table. *free_data is called to free + each item's data, if free() is inappropriate + +builtins/hash.def + - new functions free_hashed_filenames and free_filename_data to + flush the table of hashed filenames + +subst.c + - change sv_path to call flush_hashed_filenames directly + +variables.c + - only sort arrays of variables or functions for the environment or + `set' output if `posixly_correct' is set. sh does it; ksh does + not, and there's no real requirement to do so + - rewrote delete_all_variables so it looks like flush_hash_table + +trap.c + - two new flag values for the `sigmodes' array: SIG_INPROGRESS, + which is set for sigmodes[sig] while a trap handler for sig + is executing, and SIG_CHANGED, which is set if a new trap + value is set when SIG_INPROGRESS is set. This should obviate + the need to set the trap value to IMPOSSIBLE_TRAP_HANDLER while + the trap handler is executing + +alias.c + - rewrote delete_all_aliases so it looks like flush_hash_table + + 10/21 + ----- +alias.c + - changed delete_all_aliases to call flush_hash_table directly + and use free_alias_data as the `free function' argument + +variables.c + - changed delete_all_variables to call flush_hash_table directly + +tests/run-test, tests/test-tests + - new scripts to run tests of the `test' builtin as part of the + regression test + + 10/24 + ----- +bashline.c + - initialize_hostname_list needs to look for HOSTFILE first + - hostname list is no longer sorted + - replaced binary search in hostnames_matching with a simple + linear search + - made the code that reads hostnames skip over the first word on + a line only if its first character is a digit, assuming it's + an Internet address + +copy_cmd.c + - removed copy_select_command; overload copy_for_command, since the + select and for command structs are exactly the same + +make_cmd.c + - combined make_for_command and make_select_command into a new + function, make_for_or_select + - rewrote make_here_document to remove the unneeded `switch' statement + +builtins/common.c, builtins/hash.def + - moved remove_hashed_filename from common.c to hash.def + +builtins/common.c + - remove the \r from error message printed by get_working_directory + - change parse_and_execute to call dispose_fd_bitmap directly then + discard the `pe_dispose' unwind-protect frame rather than running + the frame + +builtins/set.def + - changed how set -o options are set and retrieved, using set and get + functions to avoid all that special-case inline code + + 10/26 + ----- +test.c + - added unary operator `-o', which returns true of the shell option + name given as an argument is set + +lib/readline/readline.c + - added a definition of set_lines_and_columns to be called if the + library is not compiled -DSHELL + +shell.c + - added a --verbose startup long option + - renamed `--nolineediting' to `--noediting' + + 10/27 + ----- +lib/readline/util.c + - new file, for readline utility functions + +lib/readline/readline.c + - moved a bunch of functions to util.c + +subst.c + - make sure set_sigint_handler is called only by the subshells doing + command and process substitution + +builtins/read.def + - make sure that rlbuf is initialized to null + +trap.c + - new flag for sigmodes[] members: SIG_IGNORED, set when signal is + ignored, even if it's special or untrappable + - new function: signal_is_ignored (sig), which returns 1 if SIG + has been ignored with trap '' + +builtins/trap.def + - changed to use the builtin getopt + +shell.c + - added a check to sigint_sighandler for whether or not SIGINT has + been ignored with trap '' in an interactive shell. This fixes + the problem with `read' being interruptible in an interactive + shell even if SIGINT is being ignored + + 11/8 + ---- +lib/readline/Makefile + - added definition of INSTALLED_HEADERS, just in case + + 11/11 + ----- +variables.c + - change assign_in_env so that it doesn't use savestring ("") to + set `value' to a dummy value; don't call strcpy if there's + nothing to copy + + 11/15 + ----- +general.h + - new defines, legal_variable_starter and legal_variable_char + - new define SIGRETURN(n) which encapsulates the VOID_SIGHANDLER + differences when returning from a signal handler + +general.c, variables.c, subst.c, expr.c + - use legal_variable_starter and legal_variable_char + +shell.c, nojobs.c, trap.c, jobs.c, builtins/suspend.def + - change to use SIGRETURN macro + +subst.c + - massive changes to clean up the code and remove unused code and + variables + - expanded the ${#param} code so that all of the shell special + variables may have their length taken + +tests/run-tilde + - new test for tilde expansion + +bashline.c + - fix a bug in command_subst_completion_matches: make sure that + `matches' is static + +parse.y + - don't print a prompt when not using readline if the current + input type is st_string + +machines.h + - add -DINT_GROUPS_ARRAY to SYSDEP_CFLAGS on ultrix + - fixes to the cray machine description from Bill Jones + +braces.c + - fixed a bug in brace_gobbler that prevented a backslash from + escaping an open brace + + 11/16 + ----- +tests/braces-tests, tests/run-braces + - new regression tests for brace expansion + +builtins/pushd.def + - new -p option for `dirs' that prints dirstack on per line + without numbers + + 11/17 + ----- +command.h + - move redirection error values here from execute_cmd.c + - new defines INPUT_REDIRECT and OUTPUT_REDIRECT + +shell.c + - make the default MAINTAINER `bash-maintainers@prep.ai.mit.edu' + +execute_cmd.c + - many changes to clean up the code and remove unused variables and + functions + - new functions: redirection_error, find_in_path_element, + find_absolute_program + - fixes to redirection error reporting, so things like exec 4<&y* + and exec 4<&$FOO are displayed correctly + - removed the `lexical_scoping' code + +flags.c, flags.h + - removed the lexical_scoping code and variable + +documentation/{bash.1,features.texi} + - removed the description of the `-l' option to `set' + +jobs.c + - don't try to open /dev/tty to get the controlling tty, use + fd 2 like other job control shells + +lib/readline/vi_mode.c + - when using `d%', make sure the matching character found by + the `%' is deleted by the `d'. Ditto for `c%'. + - stub function for vi undo: rl_vi_undo. Right now it just + calls rl_undo_command + +lib/readline/vi_keymap.c + - change to call rl_vi_undo instead of rl_undo_command + +lib/readline/readline.h + - extern declaration for rl_vi_undo + + 11/21 + ----- +execute_cmd.c + - fix to print_select_list to avoid a possible divide-by-zero error + and subsequent core dump + - fix to execute_select_command to just return 0 if there is no + select list + +parse.y + - remove `in' from the list of tokens that cannot take trailing + semicolons + +builtins/read.def + - make sure that leading IFS whitespace is removed before calling + get_word_from_string the first time. This matters when IFS is + not " \t\n" but non-null + - make sure the array code uses IFS to split the input string + before assigning it to the array + + 11/22 + ----- +parse.y + - make sure that if \nnn expands to CTLESC or CTLNUL, the char + is protected by a CTLESC + - new variable `promptvars', which, if non-zero, causes all the + variable expansions to be performed in decode_prompt_string. + If zero, only quote removal is performed. + +builtins/source.def + - new variable: `source_uses_path', set to 1 by default. If + non-zero, the `.' builtin uses $PATH to find the script to + source + +builtins/getopt.h + - cut out everything not needed by bash + +builtins/getopt.c + - cut out everything not needed by bash + +builtins/getopts.def + - removed the call to getopt_set_posix_option_order, which is no + longer necessary + +execute_cmd.c + - split the code that writes out here documents to files out into + a separate function + + 11/23 + ----- +builtins/getopt.c, builtins/getopt.h, builtins/getopts.def, subst.c + - prefix all of the getopt variables and functions with `sh_' + (that is, optind becomes sh_optind and getopt becomes sh_getopt) + to avoid confusion with a system's getopt(3) implementation + +subst.c + - new functions: parameter_brace_substring and verify_substring_values + and changes to expand_word_internal to support the ksh-93 + ${var:exp1:exp2} substring syntax + +documentation/bash.1 + - documented the new ${var:exp1[:exp2]} syntax + + 11/25 + ----- +builtins/setattr.def + - don't allow readonly -n at all + +array.c + - split array_to_string into two parts; a new function + array_to_string_internal does the real work + - new function array_subrange () to return a subset of the elements + in an array + +subst.c + - augmented the substring code to handle the positional parameters + and array variables + - made quote_list and dequote_list return their WORD_LIST * + arguments so they can be used like + + z = string_list ((quoted ? quote_list (l) : l), xxx); + + - augmented the ${xxx} expansion code to do indirect variable + references if the first character of the variable name is `!' + +tests/new-exp.tests + - added regression tests for substring expansion + - added regression tests for indirect variable references + + 11/28 + ----- +builtins/set.def + - added set -o hashfunc and set -o onecmd, synonyms for set -h + and set -t, respectively + +builtins/shift.def + - changed shift so that the positional parameters are not changed + if the argument is > $# (this is ksh and Posix.2, unlike sh) + +documentation/bash.1 + - documented true behavior of `shift' + +lib/readline/kill.c + - split the kill ring management code and the kill commands out + from readline.c into this file + +lib/readline/undo.c + - split the code that does undoing out of readline.c into this file + +shell.c + - force the shell to exit with status 127 if a longjmp back to + run_one_command occurs with bash -c + - force the last command exit status to 1 if a + longjmp (top_level, DISCARD) is performed + +builtins/read.def + - don't throw away partial lines after reading EOF + +subst.c + - command substitution should not inherit the -e flag + +builtins/source.def + - make sure to set the exit status correctly when in posix mode + and the filename argument to `.' does not exist + + 11/29 + ----- +lib/readline/input.c + - split the input buffering and character input code out of + readline.c to here + +lib/readline/macro.c + - moved the keyboard macro management code to here from readline.c + +lib/readline/readline.c + - removed the STATIC_MALLOC code + +lib/readline/rltty.c + - return -1 in POSIX get_tty_settings if tcgetattr returns -1 and + errno != EINTR, even if output is being flushed + + 12/1 + ---- +machines.h + - fixes to the hpux_8 and hpux_9 machine descriptions + +trap.c + - make run_exit_trap return the right exit status + (last_command_exit_value) + - run_exit_trap no longer preserves the value of last_command_exit_value + around the execution of the trap commands + - run_exit_trap now turns off SIG_TRAPPED and sets SIG_INPROGRESS + and will not try to run anything if SIG_INPROGRESS is set + +trap.h + - change definition for run_exit_trap + +shell.c + - call run_exit_trap only if trap[0] is set and not ignored + +builtins/exit.def + - make sure we only source the .bash_logout file once, even if it + contains a call to `exit' + +execute_cmd.c + - if we run an exit trap in a (...) user subshell, allow it to + override the exit status of the subshell + +lib/readline/readline.c + - made rl_delete_text bounds check its `to' argument, and limit + it at rl_end + +lib/readline/vi_mode.c + - make rl_vi_subst call `rl_delete_text' directly for the `s' + command + +support/mksysdefs + - define a new variable for the sysdefs.h file for ISC machines: + ISC_release, which can be ISC_2, ISC_3, or ISC_4 + +machines.h + - don't `#undef' HAVE_GETCWD on ISC 4.x machines + - `#undef' HAVE_RESOURCE on ISC 4.x machines + +support/mkversion.c + - include "posixstat.h" rather than for the benefit + of ISC machines + + 12/5 + ---- +lib/readline/complete.c + - changed username_completion_function so that a null username + generates a list of all users as possible completions + +lib/readline/readline.h + - added definitions for STREQ, STREQN + +lib/readline/{search.c,isearch.c,kill.c} + - removed private definitions of STREQ, STREQN + +execute_cmd.c + - in find_user_command_internal, just return a copy of the pathname + passed as an argument if there is no PATH + + 12/6 + ---- +siglist.h + - NetBSD 1.0 does not need a define for strsignal() + + 12/8 + ---- +subst.c + - removed assignment_name, word_list_quote_removal, word_quote_removal, + and sub_append_number -- unused functions + - removed some unexecuted code from expand_word_internal + + 12/9 + ---- +execute_cmd.c + - if PATH is set to the empty string, find executables in the + current directory + +shell.c, parse.y, trap.c + - before setting the SIGINT sighandler unconditionally to one of + sigint_sighandler or termination_unwind_protect, check that it + is not ignored. Now trap '' 2 really sets the SIGINT signal + handler to SIG_IGN. [In 1.14.3] + +trap.c + - rewrote set_sigint_handler to use SIG_IGNORED rather than checking + against IGNORE_SIG + - changed ignore_signal, run_exit_trap, maybe_call_trap_handler, and + run_trap_internal to check SIG_IGNORED + +shell.c + - removed the check for signal_is_ignored(SIGINT) in sigint_sighandler + + 12/11 + ----- +sig.c, sig.h + - new files, moved signal-related definitions and code here from + shell.c, general.h, general.c, jobs.c, jobs.h, externs.h + +unwind_prot.c, shell.h, nojobs.c + - include sig.h + + 12/12 + ----- +jobs.c + - only break out of loops if SIGTSTP was used to stop a job in the + loop, the shell is currently interactive, and job control is on. + SIGSTOP does not break loops. [In 1.14.3] + + 12/13 + ----- +expr.c + - bases < 2 or > 36 are now accepted without silently being reset + to 10 + +braces.c + - make sure array_concat copies the array it returns if one of + the arguments is null [In 1.14.3] + + 12/14 + ----- +subst.c + - split the ${...} expansion code out into a separate function, + static char *parameter_brace_expand() + - changes to array_value so that any variable can be referred to + as an array with an integer subscript. The value will be + returned if a non-array variable is referred to as ${var[0]}; + if the subscript is > 0 a null string is returned + + 12/15 + ----- +machines.h + - fixes to freebsd description for FreeBSD 2 [In 1.14.3] + +support/bashbug.sh + - changed to use /usr/lib/sendmail if present or /usr/sbin/sendmail + if present, defaulting to rmail [In 1.14.3] + +bashhist.c + - HISTFILESIZE now controls how large the history file is after + it is written. After saving the shell history, sv_histfilesize + will truncate it if necessary. history -w can override this. + +documentation/bash.1 + - documented change to treatment of HISTSIZE when saving history + +lib/malloc/malloc.c + - removed the calls to sigsetmask() in malloc(). This should + result in a speed improvement + + 12/19 + ----- +builtins/enable.def + - don't allow -f or -d in a restricted shell + +builtins/alias.def + - rewrote alias and unalias to use the internal getopt + - added -p option to print the alias list to alias + - fixed up the documentation for `alias' + +documentation/{bash.1,features.texi} + - updated the documentation for `alias' + - updated the documentation for $_ + +array.c,array.h + - new function `empty_array (ARRAY *a)' removes all of the + elements in a without destroying the array variable in + preparation for overwriting it. Used by read -a. + +builtins/read.def + - call empty_array() before assigning list of values with read -a + - changed dispose_array to use empty_array to destroy the + array elements + +variables.c + - set $_ to argv[0] at variable initialization time + + 12/20 + ----- +subst.c + - broke the pattern removal code into a few separate functions: + getpatspec to get the pattern specifier, getpattern to do the + necessary word expansions and return the pattern to be matched + - new function: parameter_list_remove_pattern(), which implements + the ${param[#%][[%#]]pattern} where param is `@' or `*' + +documentation/bash.1 + - documented new pattern removal functionality for the positional + paramters + +general.c + - new function strsub (s, pat, rep, gflag) replaces PAT with REP + in S. All occurrences are replaced if GFLAG != 0; the first is + replaced otherwise + - changed strindex() to avoid multiple calls to strnicmp by + checking first character of the string + +builtins/fc.def + - changed to use builtin_getopt with a check for fc numbers as + arguments + - some code rearranging for efficiency and clarity + - fc_dosubs now just calls strsub(); fc_replace is gone + + 12/21 + ----- +subst.c + - new function, match_pattern, which matches a shell globbing + pattern anywhere in a string and returns the boundaries of the + match + +lib/readline/readline.h + - declarations for rl_insert_command and rl_backward_char_search + +lib/readline/readline.c + - new function rl_insert_comment, no longer vi-mode-specific + - new function rl_backward_char_search + +lib/readline/bind.c + - comment-begin now sets the comment char for emacs and vi modes + - variable holding the value is now _rl_comment_begin + +lib/readline/vi_mode.c + - move the `comment-begin' stuff to readline.c and bind.c + +lib/readline/funmap.c + - vi-comment is now insert-comment + - new bindable command character-search-backward + +lib/readline/vi_mode.c + - command mode `#' now invokes rl_insert_comment + +lib/readline/emacs_keymap.c + - M-# now bound to insert-comment + - M-space now bound to set-mark + - M-^] now bound to character-search-backward + +bashline.c + - posix_readline_initialize now calls rl_variable_bind to set the + value of comment-begin rather than directly modifying + _rl_comment_begin + +documentation/{bash.1,readline.3}, lib/readline/doc/rluser.texinfo + - added description of new bindable `insert-comment' command + - documented new M-space emacs mode binding + - documented new character-search-backward command and default + emacs mode binding to M-C-] + +shell.c + - only call posix_initialize if posixly_correct is set + + 12/22 + ----- +cpp-Makefile + - make $(Program) depend on $(srcdir)/.distribution, for the + benefit of systems where `make' does not have VPATH support + [In 1.14.3] + +jobs.c + - if a foreground job is killed by SIGINT while job control is + active, print a newline to compensate for the kernel printing + ^C without one [in 1.14.3] + +bashline.c + - make sure bashline_reinitialize resets rl_completion_entry_function + to NULL, as the comment says it should [In 1.14.3] + + 12/23 + ----- +test.c + - fix a problem that caused core dumps if a `)' was missing in a + parenthesized expression [In 1.14.3] + +jobs.c + - broke the code the manages the manipulation of the job table and + process status out of flush_child into a new function waitchld() + - flush_child now just calls waitchld() with a parameter that tells + it not to block + - wait_for calls waitchld() with the pid it's looking for and tells + it to block (don't call it with WNOHANG) + - cleaned up wait_for considerably -- turned the wait_loop: label + stuff into a do-while loop and removed the setting of job status + (that's now done only by waitchld). wait_for now calls + waitchld continuously until the job it is interested in is + marked JDEAD. + + 12/28 + ----- +subst.c + - fixed expand_word_internal so that any word that expands into + nothing and contains a double-quoted $@ is removed, like sh + and ksh + - new function: expand_string_for_rhs, which calls expand_word_internal + with a variable that lets it find out whether or not a $@ appeared + in the WORD in ${paramOPword} when expanding it, so that "$@" + and various other things are handled correctly on the rhs + - added params for parameter_brace_expand to tell expand_word_internal + if a quoted $@ was processed as part of the rhs (or even the lhs); + these new params are passed along to parameter_brace_expand_rhs + - pass the right value of quoted to parameter_brace_expand_rhs from + parameter_brace_expand. expand_string_for_rhs doesn't need to know + whether the brace expression is quoted + + 12/31 + ----- +support/printenv + - now an official part of the distribution, moved from CWRU/misc + [in 1.14.3] + +cpp-Makefile + - copy support/printenv into the `tests' directory when making tests + [in 1.14.3] + - change to understand GCC_STANDARD [in 1.14.3] + +support/bashbug.sh + - fixed a typo that caused it to not parse correctly [in 1.14.3] + +machines.h + - define GCC_STANDARD if the standard `cc' is gcc and you don't want + to use the compiler named `gcc' for some reason [in 1.14.3] + + 1/2 + --- +general.h + - added FS_DIRECTORY to the list of flags that file_status returns + +execute_cmd.c + - changed find_in_path_element to return null if the flags argument + specifies FS_EXEC_ONLY and the file is not executable + - return FS_DIRECTORY from file_status if the argument specifies a + directory + - new function, is_directory (char *), which returns non-zero if the + filename argument is a directory + +execute_cmd.h + - extern declaration for is_directory + +flags.c, flags.h + - hashing_disabled and locate_commands_in_functions were removed, + hashing_enabled added + +execute_cmd.c, builtins/common.c. builtins/hash.def + - use hashing_enabled instead of hashing_disabled, and reverse + the sense of tests of it + +documentation/bash.1, documentation/features.texi + - changed description of `set -h/set -o hashcmds', removed + set -d/set -o nohash + +bashline.c + - changed command_word_completion_function to return matches if names + are directories as well as if they are executable files + +support/mksysdefs + - look for `ranlib' in $PATH before searching the file system; + look in /usr/gnu/bin for it; default to `:' if not found + +general.c + - change ansicstr to accept a second argument telling it whether to + recognize \c and to pass back a non-zero value in it if \c is + seen + +general.h + - changed extern declaration of ansicstr + +subst.c + - call ansicstr with an extra argument + + 1/3 + --- +builtins/echo.def + - rewrote to use ansicstr() with the new argument + + 1/4 + --- +trap.c + - changed instances of signal() to set_signal_handler() [in 1.14.4] + - combined reset_signals and restore_signals into a single function, + since they were essentially identical + +subst.c + - if set -u is set, references to the positional parameters now + generate errors if that parameter is not set [in 1.14.4] + +lib/*/Makefile, builtins/Makefile + - since RANLIB can be just `ranlib', just try to run it without + checking that the file exists [in 1.14.4] + +builtins/set.def + - changed `hashcmds' to `hashall' + +documentation/{bash.1,features.texi} + - changed `hashcmds' to `hashall' + + 1/5 + --- +trap.c + - make the loop that restores signal handlers run from signal 0 to + make sure user subshells don't inherit traps on `exit' (to fix + for 1.14.3, change restore_original_signals so that the loop + starts from 0) [in 1.14.4] + +variables.c + - don't import exported function definitions at startup if the + shell is restricted + +builtins/source.def + - don't allow use of pathname arguments containing `/' in a + restricted shell + +execute_cmd.c + - when a shell is spawned to execute a shell script without a + #! line, turn off the -r flag if the shell is restricted + +shell.c + - added a new long option `--restricted' + +documentation/bash.1 + - added a section on the restricted shell, and documented the + new `--restricted' long invocation option + + 1/7 + --- +shell.c + - when using bash -c command, make run_one_command return + last_command_exit_value if a throw_to_top_level with value + EXITPROG occurs [in 1.14.4] + +print_cmd.c + - make sure to initialize arg_index in the non-varargs implementation + of cprintf [in 1.14.4] + +jobs.c + - don't try to change the state of the SIGCHLD handler before + calling waitchld() from wait_for, since SIGCHLD is blocked + while this code is executing [in 1.14.4] + + 1/11 + ---- +lib/readline/rltty.c + - call control_keypad iff the value of a new variable, + _rl_enable_keypad, is non-zero + +lib/readline/bind.c + - new readline variable `enable-keypad' to control whether readline + tries to manipulate the application keypad + +documentation/{bash.1,readline.3}, lib/readline/doc/rluser.texinfo + - documented new `enable-keypad' variable + + 1/12 + ---- +lib/readline/search.c + - make sure to call rl_unix_word_rubout and rl_unix_line_discard + with the correct arguments [in 1.14.4] + +make_cmd.h + - make sure make_select_command is declared even if SELECT_COMMAND + is not defined + +parse.y + - make sure the \[ and \] escape sequences are not recognized if + READLINE is not defined [in 1.14.4] + +config.h + - make sure HISTORY is defined if READLINE is; code moved here + from bashhist.c [in 1.14.4] + +bashhist.c + - removed check for READLINE being defined without HISTORY; now + in config.h + - new function, bash_history_reinit + +flags.h, flags.c, builtins/set.def + - the -H/-o histexpand flag should be compiled into the shell + only if BANG_HISTORY is defined [in 1.14.4] + +subst.c + - don't include sv_histchars unless BANG_HISTORY is defined + [in 1.14.4] + - if QUOTED is true in parameter_brace_expand_rhs, pre-process the + word on the rhs of the parameter expansion by a call to + string_extract_double_quoted with the STRIPDQ parameter set to 1 + - new arg for string_extract_double_quoted; causes it to strip + double quotes and alter its backslash handling behavior; designed + to be called from parameter_brace_expand_rhs + - changed all other instances of string_extract_double_quoted to + call it with STRIPDQ set to 0, to get old behavior + +shell.c + - call bash_history_reinit rather than manipulating history + variables directly + +variables.c + - don't auto-export $BASH [in 1.14.4] + +tests/rhs-exp.tests + - new test script to check for behavior fixed by changes to + string_extract_double_quoted and parameter_brace_expand_rhs + +parse.y + - `for' and `select' must now take non-empty lists between + `in' and `;' + + 1/16 + ---- +subst.c + - fixed string_quote_removal to do double-quoted string processing + itself rather than call string_extract_double_quoted, which + assumes that a call to expand_word_internal or the equivalent + will follow immediately and leaves some backslashes in place, + inappropriately for quote removal + + 1/23 + ---- +subst.c + - make sure to set `temp' to NULL after it's freed by sub_append_string + in expand_word_internal to keep it from pointing to newly-allocated + memory that will be subsequently freed, causing a `memory freed + twice' error [in 1.14.4] + +trap.c + - handle the EXIT_TRAP specially in reset_or_restore_signal_handlers, + since in both cases we simply want to free up the trap string and + mark the signal as not trapped + +shell.h + - added \n to the list of characters in slashify_in_double_quotes + + 1/26 + ---- +subst.c + - make string_extract_single_quoted and string_extract_double_quoted + `inline' + - new function skip_single_quoted, used when we used to call + string_extract_single_quoted and just throw the returned string + away + - new function skip_double_quoted for the same purpose + + 1/28 + ---- +subst.c + - fixed expand_word_internal so that if an assignment word + is expanded, no word splitting is performed [in 1.14.4] + +builtins/ulimit.def + - some systems lack RLIMIT_CPU; so `#ifdef' its use [in 1.14.4] + - some versions of cpp expand parameters like \n if `n' is an + argument to the macro; change `n' to `num' in the definition + of print_rlimtype to compensate [in 1.14.4] + +builtins/read.def + - make sure the read loop sets `saw_escape' to note that an + escape character was read if CTLESC or CTLNUL is read [in 1.14.4] + +shell.c, sig.c + - only test interactive_shell before calling maybe_save_shell_history + [in 1.14.4] +shell.c + - include if HAVE_LOCALE_H is defined + - call setlocale(LC_ALL, "") at the beginning of main() if + either _POSIX_VERSION or HAVE_SETLOCALE is defined + +support/mksysdefs + - look for , define HAVE_LOCALE_H if found + +cpp-Makefile + - pass HAVE_LOCALE_H through from sysdefs.h to the build process + +bashhist.c + - remove test against interactive_shell in maybe_save_shell_history + [in 1.14.4] + +variables.c + - moved definition of DEFAULT_MAIL_PATH to config.h + +config.h, config.h.mini + - now has definition of DEFAULT_MAIL_PATH [in 1.14.4] + - changed default value of PATH to + `/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin:.' + [in 1.14.4] + +documentation/bash.1 + - updated the example of the default path in the description of + the PATH variable + +lib/readline/readline.c + - set up a table of `legal' LC_CTYPE values and match the value of + $LC_CTYPE against it when deciding whether or not to default to + eight-bit input and output + - check for LC_ALL, LC_CTYPE, and LANG, in that order, for names to + check against the legal_lc_ctype_values table + +lib/readline/bind.c + - moved strindex, stricmp, and strnicmp to lib/readline/util.c, + added _rl_ prefix to names + - some miscellaneous code cleanups and speedups + +lib/readline/rldefs.h + - define _POSIX_VDISABLE as _SVR4_VDISABLE if there is a define + for the latter and not the former [in 1.14.4] + - moved defining _rl_stricmp and _rl_strnicmp as strcasecmp and + strncasecmp, respectively, here from bind.c, since the functions + are now defined in util.c and used in two files + +builtins/common.c + - removed the \n case in double_quote, so a backslash is not added + before an existing newline. The \ pair is removed by + the parser before anything else in the shell gets hold of it + except within single quotes [in 1.14.4] + + 1/30 + ---- +general.c + - make sure the string index in canonicalize_pathname never goes + < 0 (it can, in some cases, result in `start' being -1, and `i' + being set to that) [in 1.14.4] + + 2/1 + --- +execute_cmd.c + - fix a typo in a call to `access' in AFS-specific code [in 1.14.4] + + 2/3 + --- +builtins/shopt.def + - finally added new `shopt' builtin + +builtins/umask.def + - converted to use builtin_getopt + +bashhist.c + - support for storing literal newlines in the history list when + command_oriented_history is enabled, rather than using semicolons + +builtins/Makefile + - changed rule to make a .o file from a .def file to remove the + .c file if the compilation fails + + 2/6 + --- +bashhist.c + - added new variable `force_append_history' that will force the + history list to be appended to the history file at shell exit + - new function, maybe_append_history, to append any history lines + from the current session to the history file. Used by history -a + +builtins/bind.def + - changed the `-d' option to -p + +builtins/set.def + - added `allenv' as a -o synonym for `set -k'. Now all of the + single-letter shell options have -o equivalents + +builtins/shopt.def + - added -p option to display shell options, like other builtins + - added `interactive_comments' as a shell option, like set -o + +builtins/bind.def, builtins/history.def, builtins/enable.def + - changed use of multiple variables to hold option flag settings to + one variable with bits representing flag values + +documentation/bash.1, documentation/features.texi + - changed the description of the `bind' builtin for the new -p option + - changed the description of the `set' builtin for the new + `-o allenv' option + - updated the description of the `shopt' builtin + +builtins/history.def + - changed -a option to use maybe_append_history + +subst.c + - changed the substring/subarray code to make negative offsets + count backwards from the end of the string or array + +builtins/bashgetopt.c + - added option modifiers `;' (argument is optional) and `#' + (argument is optional, but if present must be numeric) + +builtins/hash.def + - converted to use builtin_getopt + - broke code out into a new function: add_hashed_command + + 2/7 + --- +builtins/getopt.c + - changed to save state to avoid relying on `nextchar' staying the + same across calls to sh_getopt [in 1.14.4] + - added a function to restore `nextchar' from this saved state + [in 1.14.4] + - removed some dead code + +builtins/getopts.def + - call function to restore sh_getopt state when parsing explicitly + supplied arguments rather than the positional parameters [in 1.14.4] + +lib/readline/vi_mode.c + - fixed an off-by-one error in _rl_vi_done_inserting that put the + \0 in vi_insert_buf at offset `len' instead of `len - 1' + +lib/readline/complete.c + - print_filename now filters out control characters and displays + them in printable format, rather than relying on the tty driver + to do the right thing [in 1.14.4] + + 2/8 + --- +lib/posixheaders/stdc.h + - test for each special keyword being defined individually, rather + than just testing on `const' [in 1.14.4] + +lib/readline/util.c + - new function _rl_abort_internal; rl_abort just calls this + +nojobs.c + - include error.h for extern function definitions [in 1.14.4] + +builtins/ulimit.def + - include if HAVE_UNISTD_H is defined + - use HAVE_LIMITS_H to decide whether or not to include + +variables.c, subst.c, builtins/set.def + - removed special handling of `noclobber' variable + +builtins/set.def + - new function set_shellopts to set up the $SHELLOPTS variable + based on the values of the set -o options; `set' calls this + function whenever one of the options is changed + - new function parse_shellopts to take the value of SHELLOPTS and + turn on each option found therein + - new function initialize_shell_options to parse any inherited + value of $SHELLOPTS and set up $SHELLOPTS + +shell.c + - call initialize_shell_options at the end of shell_initialize() + +execute_cmd.c, general.c + - moved extract_colon_unit from execute_cmd.c to general.c + +execute_cmd.h, general.h + - moved extern declaration of extract_colon_unit from + execute_cmd.h to general.h + +documentation/{bash.1,features.texi} + - documented SHELLOPTS + + 2/18 + ---- +builtins/{shopt,pushd,jobs,umask}.def + - removed the `longjobs', `longdirs', `pushd_home' and `symbolic_umask' + options + +lib/readline/{histexpand,histsearch,histfile}.c, lib/readline/histlib.h + - new files, split off from old history library history.c + +lib/readline/history.c, lib/readline/history.h + - new function clear_history() to clear the history list + +lib/readline/doc/hstech.texinfo + - documented clear_history () + +builtins/pushd.def + - new function clear_directory_stack() to delete all elements of + the dir stack + - new -c option for `dirs' to clear directory stack + - new function get_dirstack_index for dirs -N and dirs +N to use + - new function get_dirstack_element(i, dir) for use by other parts of + the shell that want the functionality of dirs -N and dirs +N + (dir is 1 for dirs +N, -1 for dirs -N) + - new function set_dirstack_element(i, dir, val) for use by other + parts of the shell to change values in the dirstack (dir is -1 + for dirs -N, +1 for dirs +N). Used when assigning to $DIRSTACK. + +builtins/history.def + - new -c option to clear the history list + +documentation/bash.1, documentation/features.texi + - removed no-longer-valid shopt options + - documented new dirs -c option + - documented new history -c option + - documented new \T and \H prompt escape sequences + - documented new $DIRSTACK dynamic array variable + - documented the new expand-glob and list-glob readline commands + +variables.c + - set PS4 to its default value of `+ ', so that unsetting it will + disable the tracing characters [in 1.14.4] + - new framework for dynamic array variables -- each place an + array index is assigned to, a test is made. if a dynamic + assignment function exists, it is called with args `self', + the index being assigned to, and the new value + - new variable `$DIRSTACK', a dynamic array variable that holds + the current contents of the directory stack. You can even + change the stack by assigning to thie variable + +shell.c + - changed indirection_level_string to return the null string if + $PS4 is unset or null [in 1.14.4] + +parse.y + - new \H prompt escape for hostname up to first `.'; changed \h + to return full hostname (like \w/\W) + - new \T prompt escape for 12-hour time + +bashline.c + - new readline functions to expand glob patterns and insert or + list the expansions (special completion functions) + + + 2/20 + ---- +builtins/pushd.def + - new code for `pushd -n' and `popd -n' to inhibit cd when + adding or removing directories from the stack + - broke functionality off into separate functions for use by the + $DIRSTACK manipulation functions + + 2/21 + ---- +lib/readline/kill.c + - new functions to copy words to the kill ring, backward or + forward + +lib/readline/readline.h + - extern declarations for rl_copy_{backward,forward}_word + + +lib/readline/funmap.c + - new bindable readline commands: copy-backward-word and + copy-forward-word to copy portions of the line to the kill + ring without deleting them + +documentation/{bash.1,readline.3}, lib/readline/doc/hsuser.texinfo + - documented the new copy-backward-word and copy-forward-word + readline commands + +mailcheck.c, config.h + - the declaration of DEFAULT_MAIL_PATH is now only in config.h + and used by mailcheck.c and variables.c. There is no need to + use DEFAULT_MAIL_PATH_LEN; `sizeof' does the job [in 1.14.4] + + 2/22 + ---- +support/mksysdefs + - changes to fix `RELEASE' if it ends up being set to the empty string + [in 1.14.4] + - check for amdahl UTS [in 1.14.4] + - check for SGI Irix version 6.x [in 1.14.4] + +machines.h + - new entry for Amdahl UTS [in 1.14.4] + - changes to the SGI entry for Irix 6.x [in 1.14.4] + + 2/23 + ---- +machines.h + - changes for BSD/OS 2.0 (M_OS now set to `BSD_OS') [in 1.14.4] + +support/mksysdefs + - change to recognize BSD/OS 2.0 and set SYSDEF to BSDI2 [in 1.14.4] + +siglist.h + - don't declare sys_siglist on BSD/OS 2.0 [in 1.14.4] + + 2/24 + ---- +parse.y + - if reset_parser is called while the prompt command is being + executed because of a syntax error in $PROMPT_COMMAND, an + infinite loop results. set token_to_read back to 0 at the + end of execute_prompt_command to stop the looping [in 1.14.4] + + 2/25 + ---- +mailcheck.h + - new header file for mail-checking and related definitions + - declaration of DEFAULT_MAIL_PATH is now here + +mailcheck.c + - new function, make_default_mailpath, which constructs a default + $MAILPATH string from DEFAULT_MAIL_PATH [in 1.14.4] + - change remember_mail_dates to call make_default_mailpath + [in 1.14.4] + +externs.h + - moved function declarations for functions in mailcheck.c to + mailcheck.h + +variables.c + - change initialize_shell_variables to call make_default_mailpath + [in 1.14.4] + - removed some unneeded variables in initialize_shell_variables + + 2/26 + ---- +lib/readline/callback.c + - new file with readline callback function interface + +lib/readline/rlconf.h + - new READLINE_CALLBACKS define for the readline callback code to + be compiled in and available + +lib/readline/readline.c + - broke readline_internal into three functions: readline_internal_setup, + readline_internal_charloop, and readline_internal_teardown + - changes for READLINE_CALLBACKS + +lib/readline/readline.h + - extern declarations for the readline callback code + +cpp-Makefile + - added lib/readline/callback.c to the list of readline files + +lib/readline/input.c + - added a layer of indirection to allow the user to specify the + function that reads a character from rl_instream. The variable + name is rl_getc_function, set by default to rl_getc + + 2/27 + ---- +lib/readline/display.c + - added a variable rl_redisplay_function to allow an application- + specified redisplay function, for those apps that want to control + redisplay + +lib/readline/readline.c + - extern declarations for rl_getc_function and rl_redisplay_function + +lib/readline/{readline,display,isearch,search,parens}.c + - changed to call through rl_redisplay_function rather than + rl_redisplay directly + +parse.y + - try to avoid some work in reset_readline_prompt and prompt_again + if the prompt is the empty or null string [in 1.14.4] + +lib/readline/readline.c + - call rl_expand_prompt unconditionally [in 1.14.4] + +lib/readline/display.c + - short-circuit out of rl_expand_prompt if the prompt string is null + after clearing out the saved local prompt values. This allows + $PS2 to be set to "" [in 1.14.4] + +lib/readline/doc/rltech.texinfo + - documented the callback code and functions + - documented rl_getc_function and rl_redisplay_function + +lib/readline/{callback,readline,rltty,signals}.c + - added layer of indirction for terminal prep and deprep, with + rl_term_prep_function and rl_term_deprep_function. These are + set by default to rl_prep_terminal and rl_deprep_terminal, + respectively + +lib/readline/readline.h + - make rl_term_prep_function and rl_term_deprep_function available + to callers + + 3/1 + --- +lib/readline/complete.c + - broke the (long, complicated) rl_complete_internal code into a + number of separate functions: + + find_completion_word + gen_completion_matches + remove_duplicate_matches + display_matches + insert_text + insert_match + append_to_match + insert_all_matches + + - made some efficiency improvments to filename_completion_function + - the completion ignore function is now called no matter what type + of completion is being performed (as it should have been all along) + +lib/readline/rldefs.h + - use #defines for the possible values ORed into `found_quote' by + the completion code + + 3/2 + --- +make_cmd.c, general.c + - moved make_word_array from make_cmd.c to general.c, renamed to + word_list_to_argv, extended it to optionally not malloc all of + the strings and to reserve space at the start of the array + +execute_cmd.c + - changed to use word_list_to_argv, not mallocing space for the + strings + +builtins/common.c, builtins/common.h + - new function make_builtin_argv, which uses word_list_to_argv + and reserves 1 slot at the beginning for the command name + +builtins/exec.def + - changed to use word_list_to_argv + +builtins/{getopts,test}.def + - changed to use make_builtin_argv + +subst.c + - new function match_pattern_char, to see if the first char of + a string has a chance to match a given pattern (test against + the first char of the pattern); used by match_pattern in the + MATCH_ANY case + + 3/3 + --- +jobs.c + - renamed flush_child to sigchld to capture the functionality better + +array.c + - new function array_pat_subst, to do pattern substitution on each + element in an array + +array.h + - extern declaration for array_pat_subst + +subst.c + - new function pat_subst to do pattern matching and substitution on + a string + - new function parameter_brace_pat_subst to implement + ${v/[/]pat[/sub]}; calls pat_subst for simple vars, + pos_params_pat_subst to do substitution on the positional params, + and array_pat_subst for things like ${v[@]/p/r} + +subst.h + - extern declaration for pat_subst so array.c can find it + + 3/6 + --- +parse.y + - <>filename now dups filename to file descriptor 0 for both input + and output even when not in posix.2 mode + +bashline.c + - add the globbing characters to the list of characters that need + to be quoted by filename completion + +jobs.h + - new convenience macros: + RUNNING, STOPPED, DEADJOB - to test a job's state + IS_FOREGROUND, IS_NOTIFIED, IS_JOBCONTROL - flags + +jobs.c, builtins/{kill,fg_bg}.def + - changed to use new jobs.h macros + + 3/7 + --- +array.c, array.h + - new function dup_array_subrange(a, s, e) to make a new array + out of the elements of array A between S and E, inclusive + - add `quoted' parameters to array_subrange and array_pat_subst + to preserve proper quoting of elements when expanding things + like "${av[@]/xx/yy}" + - new function array_quote to quote the members of an array like + the functions in subst.c + +subst.c + - pass the quoted flag to array_subrange and array_pat_subst + - quote_string is no longer static + +subst.h + - extern declaration for quote_string + +builtins/hash.def + - added a -p pathname option to specify a pathname for the command + name to be hashed. With -p, no path search is performed. + +lib/readline/histexpand.c + - broke history_tokenize off into history_tokenize_internal and + added two arguments: a character index and a word index. If + the char index is >= 0, the word index will be modified to point + into the returned array of strings to the word surrounding that + particular character index + - new function history_find_word(line, ind) to return the word + containing the character at index IND in LINE + - new variable search_match, found by history_find_word, to hold the + word last matched by a !?string? search + - corrected a problem with the `%' modifier: it should insert the + word last matched, not the last search string + + 3/8 + --- +cpp-Makefile + - changed INSTALL_PROGRAM and INSTALL_DATA to use support/install.sh + - changed `install' target to not explicitly save the old version of + bash in `bash.old'; let install take care of it + +shell.c + - new static variable `running_under_emacs', set to 1 if the + variable `EMACS' is in the startup environment, and to 2 if + we're running under the `eterm' terminal emulator + - send an escape sequence to eterm if running_under_emacs is 2 + after executing any $PROMPT_COMMAND to tell it the current + directory + + 3/9 + --- +builtins/ulimit.def + - made getting -u work for systems that have a MAXUPRC define. + it still cannot be set without RLIMIT_NPROC + +shell.c + - include trap.h for sig definitions + +builtins/common.h, subst.h, general.h, externs.h + - more extern function declarations + +bashhist.c + - new function, bash_history_disable(), to turn off history and + history expansion + - bash_history_disable now sets history_expansion_inhibited + +bashline.h + - new file with extern declarations from bashline.c + +parse.y, bashhist.c, builtins/bind.def, subst.c, sig.c + - include bashline.h + + 3/10 + ---- +lib/glob/glob.h + - new file with extern declarations for local glob library + +shell.c + - include glob.h, mailcheck.h + +cpp-Makefile + - changes to dependencies due to mailcheck.h, bashline.h, glob.h + + 3/13 + ---- +execute_cmd.c + - new function execute_connection to execute commands of type + cm_connection + - new function execute_pipeline, to execute pipelines + +lib/readline/rltty.c + - add a `tty' argument to the set_winsize function/macro, the + non-shell version needs it + + 3/14 + ---- +parse.y + - added \a (bell) and \e (escape) prompt string escape sequences + + 3/16 + ---- +lib/readline/display.c + - fixed bug in update_line that caused stray characters to be left on + lines after the first if characters are deleted so that the first + line becomes exactly as long as the screen width [in 1.14.4] + +lib/readline/doc-support + - brought in the GNU getopt because texindex needs it + +documentation/Makefile + - adopted the BSD convention of a suffix of `.0' for formatted + manual pages + + 3/17 + ---- +support/inpath + - a script to find out if a particular command name appears in + a directory in $PATH [in 1.14.4] + +support/mksysdefs + - changed to use inpath to find `ranlib' [in 1.14.4] + + 3/18 + ---- +bashline.c + - include bashline.h + - removed the DYNAMIC_HISTORY_COMPLETION define; that code is now + included unconditionally + - renamed ETCHOSTS to DEFAULT_HOSTS_FILE; moved definition to + bashline.h + - moved definition of BRACE_COMPLETION to config.h + +config.h + - conditional definition of BRACE_COMPLETION is now here + +pathnames.h + - new file with defines that are absolute pathnames + +shell.h + - include pathnames.h + +mailcheck.h + - def of DEFAULT_MAIL_PATH now moved to pathnames.h + +shell.c + - def of SYS_PROFILE moved to pathnames.h + +alias.h + - removed a bunch of extra definitions + +lib/readline/{vi_mode.c,bind.c} + - removed superfluous STATIC_MALLOC code + +variables.c + - removed SHADOWED_ENV code + + 3/20 + ---- +machines.h + - don't define USG or USGr3 for linux machines [in 1.14.4] + - change REVERSED_SETVBUF_ARGS to SETVBUF_REVERSED for autoconf + compatibility + +shell.c + - change REVERSED_SETVBUF_ARGS to SETVBUF_REVERSED for autoconf + compatibility + +support/mksysdefs, maxpath.h + - change HAVE_SYS_PARAM to HAVE_SYS_PARAM_H for autoconf + compatibility + +support/mksysdefs, jobs.h + - use HAVE_SYS_WAIT_H + +machines.h, error.c + - change HAVE_VFPRINTF to HAVE_VPRINTF for autoconf compatibility + +test.c + - replace UID_T and GID_T with GETGROUPS_T, the size of the elements + of the array returned by getgroups + +general.c + - define HAVE_KILLPG if killpg() is present; compile in a replacement + killpg if not + +machines.h, jobs.c + - change BSD_GETPGRP to HAVE_BSD_PGRP + +sig.c + - don't call initialize_siglist if HAVE_SYS_SIGLIST is defined, no + longer use INITIALIZE_SIGLIST + +machines.h, lib/malloc/malloc.c + - change NO_SBRK_DECL to SBRK_DECLARED + + 3/22 + ---- +machines.h + - BSD/OS 2.0 does not need INT_GROUPS_ARRAY in SYSDEP_CFLAGS + +lib/readline/rldefs.h + - don't check `Linux'; just include if HAVE_TERMCAP_H + is defined + +builtins/command.def + - changed get_standard_path to use HAVE_CONFSTR + +execute_cmd.c + - execute_simple_command no longer uses alloca + - don't check RISC6000 anymore when deciding whether to use + #pragma alloca + +execute_cmd.c, shell.c + - check for ultrix instead of Ultrix when calling alloca(0) + +jobs.h + - check HAVE_UNISTD_H to see whether to declare fork, getpid, + and getpgrp + +builtins/common.c + - include for NSIG + +sig.h + - don't define SIGABRT as SIGIOT unless SIGIOT is defined + +jobs.c + - check for ultrix instead of Ultrix + + 3/23 + ---- +general.c, general.h + - new function check_dev_tty, which makes sure we can open + /dev/tty + +shell.c + - call check_dev_tty instead of having the code inline + +posixstat.h + - removed references to isc386 + +general.h + - code to define one of TERMIOS_TTY_DRIVER, TERMIO_TTY_DRIVER, + or NEW_TTY_DRIVER + +jobs.c, nojobs.c + - use the general.h code to define the tty driver types + + 3/24 + ---- +builtins/declare.def + - new -p option to display variables and their values and attributes + `declare -p xxx' displays attribs and value of var `xxx' + +builtins/setattr.def + - new function to display the attributes and value of a particular + variable; used by set_or_show_attributes + - new function to look up a variable by name and show that name's + attributes and value + +builtins/common.c + - declarations for new functions in setattr.def + +variables.c + - don't set a default value for MAILPATH in initialize_shell_variables; + let remember_mail_dates take care of it [in 1.14.4] + +mailcheck.c + - fixed an off-by-one bug in make_default_mailpath [in 1.14.4] + + 3/28 + ---- +[changes for autoconf-generated config files] + +lib/malloc/malloc.c + - use HAVE_GETPAGESIZE, HAVE_BSD_SIGNALS, HAVE_POSIX_SIGNALS + +trap.c + - remove tests for USG and USGr4 + - test on HAVE_POSIX_SIGNALS rather than _POSIX_VERSION + - use MUST_REINSTALL_SIGHANDLERS define to decide whether trap_handler + should call signal again + +getcwd.c + - redid the directory includes for autoconf compatibility + - use HAVE_LSTAT instead of testing for S_ISLNK + - use STRUCT_DIRENT_HAS_D_INO + - include memalloc.h for alloca define + +general.h + - cleaned up strchr, strrchr definitions + - removed tests against USG + - use HAVE_MEMMOVE instead of MEMMOVE_MISSING + +jobs.c + - use HAVE_WAIT3, MUST_REINSTALL_SIGHANDLERS, GETPGRP_VOID + +mailcheck.h + - removed definition of DEFAULT_MAIL_DIRECTORY; now set by + autoconf in config.h + +shell.c + - remove checks on USG, just check for HAVE_GETPW_DECLS + - use C_ALLOCA define + - redid the isnetconn() code using HAVE_SYS_SOCKET_H, + HAVE_GETPEERNAME, SVR4 and SVR4_2 + +general.c + - use HAVE_KILLPG, HAVE_RESTARTABLE_SYSCALLS, HAVE_UNAME, + ULIMIT_MAXFDS, HAVE_TIMEVAL, HAVE_TIMES + +lib/readline/rldefs.h + - redid the tty driver definitions using HAVE_TERMIOS_H, etc. + - don't define anything having to do with signal type + +lib/glob/glob.c + - redid the DIRENT defines and includes + - redid other includes to remove dependencies on USG and system + type (e.g., NeXT) + +builtins/times.def + - changed to use HAVE_GETRUSAGE, HAVE_TIMEVAL, HAVE_TIMES, and + the autoconf way to include and + +builtins/ulimit.def + - changed to use HAVE_GETRLIMIT + - removed test of USG being defined + +siglist.h + - changed to use SYS_SIGLIST_DECLARED, HAVE_UNDER_SYS_SIGLIST, and + HAVE_STRSIGNAL + +print_cmd.c + - use PRINTF_DECLARED + +builtins/command.def + - use HAVE_CONFSTR along with _CS_PATH to get the standard path + +execute_cmd.c + - only compile in execute_shell_script if HAVE_HASH_BANG_EXEC is not + defined + +nojobs.c + - use HAVE_SIGINTERRUPT, HAVE_KILLPG, HAVE_POSIX_SIGNALS, + MUST_REINSTALL_SIGHANDLERS, HAVE_WAITPID, *_TTY_DRIVER defines + +test.c + - set up a new `getmaxgroups' define, moving the code out of inline + - eliminate use of GETGROUPS_T + +variables.c + - use CAN_REDEFINE_GETENV + +sig.c, sig.h + - use HAVE_POSIX_SIGNALS, MUST_REINSTALL_SIGHANDLERS + +pathnames.h + - removed the default mail directory defines; now set by autoconf + +oslib.c + - new file, functions from general.c that are unix-version variable + +general.h + - slightly changed function declarations for use by oslib.c + +support/bashbug.sh + - changed @xxx@ to !xxx! for sed substitutions to avoid conflicts + with autoconf substitutions in the Makefile + - added MACHTYPE variable + +mailcheck.c + - changed DEFAULT_MAIL_PATH to DEFAULT_MAIL_DIRECTORY, since that + more clearly defines its function + +lib/readline/rltty.h + - new file, to include the correct tty driver #include file + +lib/readline/rltty.c + - include rltty.h + +lib/malloc/malloc.c + - make systems with Posix signals block all signals while malloc + is executing + + 3/29 + ---- +input.c + - use off_t as the type of a seek offset, rather that int or long + +variables.c, oslib.c + - moved `getenv' from variables.c to oslib.c + + 3/31 + ---- +sig.c, sig.h + - new function, jump_to_top_level, which just calls longjmp with + top_level as an argument -- here to isolate calls to longjmp + +subst.c + - replaced calls to longjmp with jump_to_top_level + +bashjmp.h + - new file with setjmp/longjmp defines and declarations + +shell.h, nojobs.c + - include bashjmp.h in place of setjmp.h + +shell.c, sig.c, execute_cmd.c, unwind_prot.h, expr.c, +builtins/{return,source}.def + - change to use new defs in bashjmp.h + +subst.c + - make sure PAT and REP in pattern substitution are run through + expand_string_unsplit + +builtins/set.def + - don't try to blindly dereference the value returned by + find_flags in set_shellopts + + 4/2 + --- +aclocal.m4, config.h.in, config.h.top, config.h.bot, configure.in, +support/install.sh, support/config.guess, support/config.sub + - new files for (now official) autoconf-based configuration + +Makefile.in, builtins/Makefile.in, +lib/{doc-support,malloc,glob,termcap,tilde,readline}/Makefile.in + - new Makefiles for autoconf + +[additionally, all source files now include config.h] + + 4/3 + --- +array.c, array.h + - index_t --> arrayind_t, because some systems define index_t in + + + 4/4 + --- +aclocal.m4 + - fix test for broken dup2 + +lib/*/Makefile.in + - make all object files depend on $(BUILD_DIR)/config.h + + 4/5 + --- +array.c + - fixed problems in empty_array: need to reset max_index + and max_size, and remove the links in the element chain + after freeing them + +jobs.c + - new functions to save an array of status values for each + foreground job that exits (degenerate case is to have a + single-process job exit and have a 1-element array) + - new function to set a shell array variable `PIPESTATUS' + which holds the status values from each member of the + last-executed pipeline that spawned children + +documentation/bash.1 + - documented $PIPESTATUS + + 4/6 + --- +configure.in + - added new --with-afs argument to #define AFS for execute_cmd.c + + 4/10 + ---- +builtins/ulimit.def + - use sysconf(_SC_CHILD_MAX) to find the maximum number of child + proceeses per user if HAVE_SYSCONF and _SC_CHILD_MAX are both + defined and RLIMIT_NPROC is not + + 4/12 + ---- +lib/readline/undo.c + - new variable, local to library, to keep track of the number of + `open' undo groups (UNDO_BEGIN without corresponding UNDO_END) + - new function _rl_fix_last_undo_of_type to modify start and end + bounds of last undo record of a specified type + +lib/readline/vi_mode.c + - _rl_vi_done_inserting now calls rl_end_undo_group if the count + of unclosed groups is > 0 + - fixed rl_vi_change_to to save an undo record when redoing and + to fix the buffer corruption when doing `u' undo after a `.' + redo of `C' + + 4/13 + ---- +unwind_prot.h + - changed to use a union { char *s; int i; } when unwind-protecting + integers to force correct alignment on machines where ints and + pointers differ in size + +lib/readline/readline.c + - new variable Keymap rl_executing_keymap, which is set to the + keymap the last function was invoked out of + +lib/readline/bind.c + - new variable Keymap rl_binding_keymap, which is set to the last + keymap a function and key sequence were bound in + + 4/17 + ---- +general.c + - removed xmalloc, xrealloc, xfree to xmalloc.c + +lib/malloc/Makefile.in + - MALLOC and ALLOCA are both set by autoconf + - need to provide some empty stub file to make up the library + in case neither malloc.c and alloca.c are compiled into the + shell + +lib/malloc/gmalloc.c + - new file, GNU libc malloc code + +Makefile.in + - new source file, xmalloc.c, new object file, xmalloc.o + +general.h + - changed type of size argument to xmalloc, xrealloc to `size_t' + +configure.in + - changes for new argument `--with-glibc-malloc' that includes + gmalloc.o in libmalloc.a + + 4/18 + ---- +xmalloc.c + - if malloc or realloc return null, report in the error message + how many bytes have been allocated + +lib/readline/display.c + - changed redisplay code to use an array of positions in the visible + and invisible lines at which to break lines instead of simply + calculating based on the screenwidth and number of invisible + characters. In the future, this will allow newlines embedded in + the lines to display to be handled better + +[Bash-1.14.4 released to net] + + 4/19 + ---- +lib/readline/signals.c + - changed last call to signal() to call rl_set_sighandler() + + 4/20 + ---- +lib/readline/display.c + - changed some ascii-specific code to use CTRL_CHAR and UNCTRL + - finished up the changes that keep an array of line breaks + +shell.h + - moved #define constants for parameter pattern substitution here + from subst.c + +subst.c + - changed the pattern substitution functions to take a `flags' + parameter, which subsumes the match type, global replacement + flag, and quoted variables + - changed the pattern substitution functions to handle the `#' + and `%' match qualifiers, which anchor the match at the + beginning and end of the string, respectively + +shell.c + - moved the code that turns off privileged mode into a function + named `disable_priv_mode' + - if the shell is running setuid or setgid and `-p' is not + supplied, turn off privileged mode and reset the effective + uid/gid + + 4/21 + ---- +subst.c + - added a `quoted' paramter to parameter_brace_remove_pattern; + Posix.2 says that the pattern is parsed differently if the + entire expression is double-quoted + - `getpattern' now takes a second argument, `quoted' + - fixed `getpattern' to correctly handles a pattern spec when + the whole expression is double-quoted. Posix.2 says that + quote characters inside the pattern spec don't quote any + special pattern chars if the whole thing is double-quoted. + For example, the `*' in "${foo#'*'}" is not quoted, and the + single quotes must appear literally. + +Makefile.in + - add `documentation' as a dependency of `.made' + + 4/24 + ---- +Makefile.in + - added `installdirs' target that makes bindir, infodir, mandir, + and man3dir [in 1.14.5 cpp-Makefile] + + 4/25 + ---- +builtins/fc.def + - fixed problem with `fc -l' that occurred when fewer than 16 lines + were in the history list [in 1.14.5] + + 5/1 + --- +Makefile.in, {builtins,documentation}/Makefile.in, lib/*/Makefile.in + - fixed up the various `clean' targets to agree with Gnu coding + standards + + 5/2 + --- +lib/readline/complete.c + - made insert_all_matches correctly quote each of the filenames + inserted into the line, if necessary + +config.h.top + - surround definitions of DEFAULT_PATH_VALUE and STANDARD_UTILS_PATH + with #ifndef/#endif to allow them to be overridden from the command + line + +builtins/set.def + - changed set -o allenv to set -o keyword for ksh88 compatibility + +documentation/{bash.1,features.texi} + - changed set -o allenv to set -o keyword + +builtins/setattr.def + - added a `nodefs' attribute to set_or_show_attributes, + show_var_attributes, and show_name_attributes to inhibit printing + of definition as well as name + +builtins/declare.def + - changed calls to set_or_show_attributes, and show_var_attributes + accordingly + + 5/3 + --- +Makefile.in + - LIBPATH -> LIBSUBDIR + + 5/4 + --- +lib/readline/bind.c + - renamed readline variable meta-flag to be input-meta + +documentation/bash.1, lib/readline/doc/rluser.texinfo + - changed meta-flag to input-meta + +documentation/Makefile.in + - use groff -Tascii to convert .1 -> .0 + +subst.c + - new function, strip_trailing_ifs_whitespace, does the obvious + +builtins/read.def + - call strip_trailing_ifs_whitespace before assigning last + variable to remainder of input string [in 1.14.5] + + 5/5 + --- +builtins/hashcom.h + - changed check_dot member of the PATH_DATA struct to flags, and + added a HASH_CHKDOT define to replace the check_dot semantics + - add HASH_RELPATH define for flags value + +builtins/hash.def, builtins/common.c + - instead of xxx->check_dot, use (xxx->flags & HASH_CHKDOT) + +builtins/hash.def + - if the full pathname to which a command is being hashed does + not begin with a `/', set the HASH_RELPATH flag for it + +builtins/common.c + - if a hashed filename as HASH_RELPATH set, check ./filename, + returning null if that filename is not executable + +execute_cmd.c, general.c, execute_cmd.h, general.h + - moved same_file and check_binary_file from execute_cmd.c to + general.c + +hashlib.c, Makefile.in + - renamed hash.c to hashlib.c + +hashlib.h, Makefile.in, builtins/Makefile.in, alias.h, variables.h, +execute_cmd.c, hashlib.c, builtins/hashcom.h + - renamed hash.h to hashlib.h + +variables.c, alias.c + - removed inclusion of `hash.h'; header files already include + correct file + +Makefile.in + - new rule to remake all the Makefiles (`make Makefiles') + - more changes to adhere to GNU coding standards for the various + flavors of `clean' targets + + 5/8 + --- +documentation/Makefile.in + - use `texi2dvi' to make dvi files rather than tex and texindex + [in 1.14.5] + - don't install `bash_builtins.1' [in 1.14.5] + +Makefile.in + - removed instances of doc-support/texindex + + 5/9 + --- +make_cmd.c + - new function make_bare_word, to make a WORD_DESC from a string but + not to set any of its flags + - broke make_word into make_bare_word and make_word_flags + - fixed a bug in make_word_flags to make backslash-quoting a quoting + character work right to not set the W_QUOTED flags + +subst.c, array.c, execute_cmd.c + - call make_bare_word instead of make_word in situations where we + don't want the flags set inadvertently + + 5/11 + ---- +subst.c + - removed special handling of $POSIX_PEDANTIC + + 5/12 + ---- +shell.c + - broke the code that fetches the uids and gids into a new + function, uidget() + +subst.c + - EUID and UID are no longer handled specially, since they're + readonly + - removed sv_uids function + - merge sv_histfilesize into sv_histsize + +variables.c + - instead of calling sv_uids from initialize_shell_variables, + call uidset() instead + - sv_uids -> uidset with mods to make it faster and avoid an + extra call to free, malloc, and itos + +bashhist.c + - call sv_histsize instead of sv_histfilesize + + 5/13 + ---- +pathexp.c + - moved setup_ignore_patterns here from bashline.c, so GLOBIGNORE + works even when readline is compiled out of the shell + - changed the ignore data structure to a `struct ignorevar', + defined in pathexp.h + - added functions to implement GLOBIGNORE + +bashline.c + - setup_ignore_patterns now in pathexp.c + - renamed _ignore_names to ignore_completion_names + +subst.c + - new function sv_globignore to be called when GLOBIGNORE changes + value + +documentation/{bash.1,features.texi} + - documented GLOBIGNORE + + 5/15 + ---- +documentation/texinfo.tex + - upgraded to version 2.145 from autoconf-2.3 distribution + + 5/16 + ---- +lib/readline/display.c + - delicate surgery on rl_redisplay, update_line, and _rl_update_final + to convert to using the line breaks array instead of assuming that + lines wrap because they're too long and using absolute buffer + positioning calculated from the screen width. Now the `lithist' + shopt option works right + +lib/readline/complete.c + - make sure insert_match doesn't double an opening quote character + after make_quoted_replacement adds an opening quote [in 1.14.5] + - make sure append_match doesn't double a closing quote character + [in 1.14.5] + +quit.h + - new macros: SETINTERRUPT, CLRINTERRUPT, ADDINTERRUPT, DELINTERRUPT + to manipulate the value of interrupt_state + +trap.c, sig.c, jobs.c + - changes to use the new macros from quit.h + +jobs.c + - make an a job that exits due to SIGINT make the shell act as if + it received the interrupt itself, but only if SIGINT is not + trapped [in 1.14.5] + + 5/18 + ---- +builtins/common.c + - fix up find_hashed_filename and the HASH_RELPATH code. still need + to use `shopt -s checkhash' to check the hashed pathnames. could + fix this up more to make that unnecessary in the HASH_RELPATH case + +subst.c + - new function get_array_value that does array subscripting for + things like aa[1], for use by other parts of the shell like the + expression evaluator + +expr.c + - changes to make things like $(( aa[1] + aa[2])) work without + using ${aa[1]} + +bashhist.c + - converted the HISTIGNORE code to use the `struct ignorevar' + framework, with a callback function histignore_item_func to + set the HIGN_EXPAND flag if needed + +pathexp.c + - made the `globignore' variable static + - redid the code that removes ignored names from the `names' array + in ignore_globbed_names to make it more efficient + +bashline.c + - made the `fignore' variable static + + 5/20 + ---- +Makefile.in + - made the `distclean' target remove the Makefiles in subdirectories + created by autoconf + + 5/22 + ---- +builtins/command.def + - don't allow `command -p' if the shell is restricted + +documentation/bash.1 + - documented the restriction on command -p for rbash + + 5/23 + ---- +aclocal.m4 + - add a new macro BASH_CHECK_TYPE, based on AC_CHECK_TYPE, that + allows the caller to specify the header files to be included + in the test program and provides for a default value to be + defined if the type is found in the system files + +configure.in + - check for getrusage and gettimeofday functions/syscalls + - use BASH_CHECK_TYPE to check for clock_t in sys/types.h and + sys/times.h + - use BASH_CHECK_TYPE to check for sigset_t instead of a special + BASH_TYPE_SIGSET_T + - use BASH_CHECK_TYPE to check for quad_t instead of BASH_QUAD_T + - new argument --enable-command-timing to compile in the `time' + reserved word and command timing + +general.c + - print_time_in_hz takes a `clock_t', not a `time_t' + +execute_cmd.c + - support for timing pipelines with a new function time_command + - execute_command_internal calls time_command if it is passed a + command with the CMD_TIME_PIPELINE bit set in command->flags + - new functions difftimeval and addtimeval to do arithmetic on + timeval structs with overflow + +parse.y + - new production: pipeline_command, used by list1 and simple_list1 + - pipeline_command includes rules to handle `!' and time + - code to recognize `time' as a reserved word + +print_cmd.c + - new code to print `time ' before a command if the CMD_TIME_PIPELINE + flag bit is turned on + +builtins/test.def + - added description of string1 < string2 and string1 > string2 to + the long doc + +test.c + - added `<' and `>' string binary operators + +documentation/bash.1 + - documented the `time' reserved word and command timing + - documented the new test `<' and `>' binary operators + +documentation/features.texi + - documented the `time' reserved word and command timing + - added more to the section detailing the differences between bash + and sh + - added descriptions of LINENO and ENV to the Ksh variables section + - added description of echo to bash builtins section + - added PPID, BASH, SHLVL to the Bash variables section + +subst.c + - added a `quoted' parameter to extract_dollar_brace_string; changed + all calls to it + + 5/24 + ---- +builtins/let.def + - wrote code for an `exp' builtin that treats all of its arguments + as an expression, concatenates them like `eval', and runs the + expression evaluator + +expr.c + - added code to do the Posix.2 conditional operator: expr?expr:expr + - added a `noeval' flag to suppress evaluation. currently it only + suppresses assignment + - added code to the && and || functions so that evaluation is + suppressed in the part of the statement that is not supposed to + be executed (a && b: set noeval if a is false; a || b; set + noeval if a is true) + + 5/25 + ---- +documentation/{bash.1,features.texi} + - documented new `expr?expr:expr' conditional expression syntax + now arithmetic evaluation is Posix.2-conformant + +lib/readline/readline.c + - added several more locale names to the list of legal $LANG + values + +subst.c + - fixed a bug in parameter_brace_patsub: when replacing a string + with nothing, rep was set to "", and the code attempted to + free "", which the GNU malloc upchucked on + +bashhist.c + - just add a line to the history if command_oriented_history is + set to 1 and the current line in the command is > 1; don't + even bother checking history_ignore + +parse.y + - new variable `two_tokens_ago' to remember the token read before + `token_before_that' + - fix to history_delimiting_chars to make sure that no semicolon + is added after `()' (assume its a function definition), but that + a semicolon is added after other `)' (assume its a parenthesized + command) + + 5/31 + ---- +tests/run-all + - put `.' first in $PATH and don't export ENV + - set THIS_SH to ../bash if it's unset + +lib/readline/complete.c + - only try to find a word break character in rl_complete_internal + if we hit the end of the input string and found_quote == 0 + (the opening quote could have been the last character in the + string) + + 6/2 + --- +subst.c + - changed make_quoted_char to return CTLNUL\0 if passed a \0 + (this is what quote_string does, too) [in 1.14.5] + - changed list_string to use make_quoted_char when adding a quoted + null argument due to a null field when ifs != ' \t\n' + - added an `expandpat' argument to getpattern, which tells it to + call string_extract_double_quoted if the pattern expression is + double-quoted, and changed all calls to initially pass `1' as + its value + +jobs.c + - changed start_job so that an attempt to start a job marked as + JDEAD elicits an error message [in 1.14.5] + +Makefile.in + - fixed `distclean' target so that it removes Makefiles in subdirs + *after* descending into them to do submakes (!) + - fixed `realclean' target to remove everything that distclean does + + 6/5 + --- +builtins/declare.def + - fixed a typo that made `declare +r var' turn off read-only status + for a variable [in 1.14.5] + - added -p option to short doc and long doc + - added code to allow `declare -f -options name' to set and unset + attributes for the named functions. Only when no other options + are supplied will the named and value of the function be displayed + [in 1.14.5] + +variables.h + - new SETVARATTR macro to set or unset attributes for a specific + SHELL_VAR * + +builtins/setattr.def + - use SETVARATTR + + 6/7 + --- +execute_cmd.c + - moved the retrieval of $PS3 inside the loop in execute_select_command + so that PS3 can be modified in the select command's body + [in 1.14.5] + +execute_cmd.c + - changed execute_builtin and execute_function to not set + builtin_env and function_env, respectively, to NULL if there is + no temporary env. This makes the temp env persist across calls + to functions from other functions [in 1.14.5] + +configure.in + - Linux needs LOCAL_LDFLAGS set to -rdynamic + + 6/8 + --- +general.c + - canonicalize_pathname should not attempt to interpret backslash + quoting `/', since Unix doesn't really allow it [in 1.14.5] + +bashline.c + - added `\', `!', and `)' to the list of characters which + cause filenames to be quoted + - changed bash_quote_filename to use any of the three shell + quoting styles based on the value of a variable, + completion_quoting_style + - if *qcp is not 0 when passed to bash_quote_filename, adjust the + type of completion we're doing based on its value (i.e., + *qcp == '"' forces double quoting, *qcp == '\'' forces single) + - bash_quote_filename now leaves the quotes intact in the filename + it returns. The readline completion code takes care of avoiding + doubled open quotes + - if a filename containing a `!' is passed to bash_quote_filename + without an opening quote character, and we are performing history + expansion, use single quoting as the quoting style + +bashhist.c + - changed bash_history_disable to not call bash_history_reinit(0), + but do what it needs to directly + - new function bash_history_enable + - make history_expansion_inhibited exist only if BANG_HISTORY + is defined + +bashhist.h + - extern declaration for bash_history_enable + +lib/readline/complete.c + - make make_quoted_replacement set should_quote to 1 if the quote + character is `'' as well as if it's `"' + +test.c + - added the csh-like `=~' and `!~' pattern-matching binary operators + which match the string on the lhs against the shell pattern on + the rhs. PATTERN_MATCHING must be defined for this to work; it is + undefined and undocumented by default + +jobs.c + - broke the code that gets the new window size and sets $LINES and + $COLUMNS out of sigwinch_sighandler into a new function, + get_window_size, which sigwinch_sighandler calls + + 6/12 + ---- +parse.y + - new function, pop_expansion, to remove the top string on the + expanded token stack + - renamed save_expansion to push_expansion + +lib/readline/complete.c + - fixed a bug in find_completion_word that tested found_quote + instead of quote_char when trying to decide if we have an unclosed + quoted string [in 1.14.6] + + 6/26 + ---- +subst.c + - fixed expand_word_internal to remove all traces of $*, even if + it's quoted, if there are no positional parameters and there are + other characters in the expansion + +bashline.c + - don't attempt hostname completion if multiple consecutive `@' + characters appear + + 6/27 + ---- +shell.c + - initialize top_level early, and exit if a longjmp sends us there + before we reinitialize + +subst.c + - more fixes to expansion of quoted $* when no positional parameters + - broke the code that assigns a value to an array element (and parses + the array element reference) into a new function, + do_array_element_assignment + +builtins/read.def + - new function, bind_read_variable, to allow binding simple variables + and array elements to strings read (uses do_array_element_assignment) + - changed occurrences of bind_variable to bind_read_variable where + it matters + +variables.c + - tentative change to bind_variable to make x=y the same as x[0]=y + if x is already an array variable. This works for `read' as well. + This is what ksh does. + + 6/28 + ---- +alias.h + - added a `flags' member to the ASSOC struct and renamed it to + `alias_t' + +alias.c, bashline.c, builtins/alias.def, builtins/type.def + - changed ASSOC to alias_t + +alias.c + - changed add_alias to set the AL_EXPANDNEXT flag when the alias is + inserted into the hash table + +parse.y + - added a third parameter to push_string: a pointer to the alias_t + that is being expanded + - push_string marks the alias it's passed as being expanded + (AL_BEINGEXPANDED) + - pop_string marks the alias being popped as no longer being + expanded + - changed shell_getc to defer popping an alias expansion until + the parser has had a chance to catch up, since the parser reads + ahead and would cause the expansion to be popped before it + fully parsed the expanded string + - changed alias_expand_word to check the AL_BEINGEXPANDED flag + instead of the expanded_token_stack when checking whether an + alias is already being expanded + +oslib.c + - make the definition of bzero be surrounded by #ifdef HAVE_BZERO + rather than lumping it in with bcopy + +configure.in + - add a test for bzero + +config.h.in + - add a template for HAVE_BZERO + + 7/3 + --- +builtins/set.def + - added new meaning for `set +o' without options, as per the latest + draft of Posix.2. It means to list -o options as a series of set + commands to recreate the current settings + +documentation/bash.1 + - augmented description of the `set' builtin + + 7/6 + --- +jobs.c + - make sure that temp_handler is not set to SIG_DFL before calling + it from waitchld + +builtins/cd.def + - rewrote cd_builtin to make the code flow clearer + - broke full directory name construction out into a separate + function: mkpath + - cd_builtin now tests that a directory constructed from a $CDPATH + entry is actually a directory before trying to chdir to it + - added an error message if $HOME is not set + - added a descriptive error message if `cd -' used and OLDPWD unset + - changed the error messages to use builtin_error, not file_error + - moved the code at the bind_and_exit label into a function, + bindpwd (no_symlinks) + - Posix.2 says that when using $CDPATH, the resultant value of PWD + should have no symlinks + + 7/7 + --- +input.c + - if fd_to_buffered_stream fails in some way and returns a NULL + buffered stream, with_input_from_buffered_stream uses a function + that does nothing but return EOF as the `getter'. This keeps + the shell from crashing if invoked with fd 0 closed + +subst.c + - made the `quoted' parameter to expand_word_internal into a flags + word with flag values defined in shell.h. Each place where + `quoted' is tested for a non-zero value was changed to test + (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) != 0 instead + +mailcheck.c, shell.c, parse.y + - change calls to the expand_string* functions to pass an explicit + Q_DOUBLE_QUOTES where appropriate + + 7/9 + --- +subst.c + - getpattern now passes Q_NOQUOTE to expand_word_internal, indicating + that quotes in the pattern spec are not to be treated specially + + 7/12 + ---- +jobs.c + - fixed up the MUST_UNBLOCK_CHILD code in wait_for so that it now + unblocks all signals and sets the signal handler for SIGCHLD to + SIG_DFL. pre-v4 SCO machines seem to require this [in 1.14.5] + +[Bash-1.14.5 released to net 7/16] + + 7/17 + ---- +documentation/features.texi + - changed the Bourne Shell builtins section to have the same format + as the bash builtins section, with usage synopses + - added a section on the restricted shell + + 7/18 + ---- +documentation/features.texi + - changed the name of this document to the Bash Reference Manual + - added sections on POSIX mode and restricted shell + +lib/readline/doc/hsuser.texinfo + - added the text from the bash manual page about the bash history + facilities if BashFeatures is set + + 7/19 + ---- +documentation/features.texi + - added more stuff to the bash basics section + +lib/readline/doc/rluser.texinfo + - added a sample inputrc file + + 7/20 + ---- +documentation/features.texi + - added section on shell expansions to bash basics section + +builtins/Makefile.in, lib/glob/Makefile.in, lib/malloc/Makefile.in, +lib/readline/Makefile.in, lib/termcap/Makefile.in, lib/tilde/Makefile.in + - ar is now called with flags `cr' when building libraries + + 7/21 + ---- +lib/readline/complete.c + - fixed a bug in find_completion_word that resulted in the found_quote + flag and the delimiter character not being passed back to the + caller (tested (*fp) instead of (fp) before assigning found_quote; + similarly for dp). With this fix, the filename dequoting function + is properly called + + 7/25 + ---- +general.c + - renamed bash_tilde_expand to bash_tilde_expansion_failure_hook + - new function, bash_tilde_expand, that just sets interrupt_immediately + and calls tilde_expand, returning what tilde_expand returns + +subst.c, general.c, shell.c, execute_cmd.c, variables.c, bashline.c, +builtins/cd.def + - changed calls to tilde_expand to calls to bash_tilde_expand instead + + 7/27 + ---- +builtins/set.def + - added a -o history option to enable and disable command history + saving. This uses bash_history_enable() and bash_history_disable() + It's keyed off of remember_on_history. With this, shell scripts + can use the command history + +bashhist.c + - bash_history_enable now calls sv_history_control and sv_histignore + +builtins/fc.def + - if history_list() returns a null pointer, immediately return + [in 1.14.6] + +documentation/{bash.1,features.texi}, lib/readline/doc/hsuser.texinfo + - added a description of the `set -o history' option and changed + text to refer to it rather than strictly interactive shells + + 8/1 + --- +variables.c + - new builtin variable $HOSTNAME, initialized to current_host_name + as set in shell.c + +documentation/bash.1, documentation/features.texi + - documented $HOSTNAME + + 8/3 + --- +support/texi2html + - new program, a texinfo-html converter + +documentation/Makefile.in + - added directives to produce features.html from features.texi + +MANIFEST.doc + - added features.html and features_toc.html to the doc distribution + + 8/10 + ---- +lib/readline/bind.c + - new functions rl_variable_dumper and rl_dump_variables to print + readline variables and their values to rl_outstream + - new functions rl_get_keymap_name and rl_get_keymap_name_from_edit_mode + to get the name of the current keymap for the variable dumper + +lib/readline/readline.h + - extern declarations for rl_variable_dumper, rl_dump_variables, and + rl_get_keymap_name + +builtins/bind.def + - added -V flag to print variable names and bindings + - added -P flag to print variable names and bindings in the syntax + of the inputrc file + +lib/readline/funmap.c + - added new bindable `dump-variables' readline command + +documentation/{bash.{1,html},readline.3,features.html}, +lib/readline/doc/rluser.texinfo + - documented new `dump-variables' readline command + +documentation/{bash.{1,html},features.{texi,html} + - documented new bind -P and -V options + +documentation/bashbug.1 + - new manual page + +documentation/Makefile.in + - changes to build and install bashbug.1 + + 8/15 + ---- +print_cmd.c + - new function `xprintf' that just calls vfprintf(stdout, ...) + to avoid having to declare printf + +parse.y + - slight change in how read_token_word computes `all_digits' + + 8/21 + ---- + +subst.c + - new function dequote_escapes to remove CTLESC escaping + CTLESC and CTLNUL in a string, returning a new string + + 8/25 + ---- +shell.c + - execute the file SYS_BASHRC for interactive shells if SYS_BASHRC + is defined, before executing ~/.bashrc + +config.h.top + - add a dummy commented definition for SYS_BASHRC, defaulting to + /etc/bash.bashrc + +lib/readline/input.c + - added code to call select() in rl_gather_tyi() and return + immediately if it indicates that there is nothing to read on + the readline input fd (#ifdef HAVE_SELECT) + +lib/posixheaders/posixdir.h + - new file to localize the / and dirent/direct + mess + +posixdir.h, lib/readline/posixdir.h + - symlinks to lib/posixheaders/posixdir.h + +lib/readline/rldefs.h + - removed the posix dir includes and defines + +lib/readline/complete.c, getcwd.c + - include posixdir.h rather than having the code inline + +builtins/cd.def + - new code to do spelling correction on the directory name + modified from patch sent by Neil Russell (caret@c-side.com) + + 8/29 + ---- +builtins/shopt.def + - new option `cdspell' to toggle cd directory name spelling + correction + +documentation/{bash.{1,html},features.texi} + - documented new shopt `cdspell' option + + 9/5 + --- +subst.c + - $'' should expand to the same thing as '' (a quoted null string) + +shell.h + - changed CTLNUL to '\177'; some scripts use ^B for things like IFS + [in 1.14.6] + + 9/7 + --- +support/config.guess + - added code to identify a PPC running Solaris 2 + +doc + - new directory replacing documentation + +Makefile.in, MANIFEST, MANIFEST.doc, configure.in + - replaced `documentation' with `doc' + + 9/8 + --- +lib/readline/display.c + - fixed the code in _rl_update_final that decides whether or not the + cursor is at character position 0 on an otherwise-empty line and + adjusts _rl_vis_botlin accordingly + + 9/13 + ---- +general.c + - fixed canonicalize_pathname to make sure that intermediate + results correspond to directories before blindly chopping + off the last component when we see a `..'. This fixes the + `cd ../.../..' being equivalent to `cd ..' problem + +subst.c + - fixed make_named_pipe so that mkfifo is called with mode 0600 + for security reasons [in 1.14.6] + - changed the /dev/fd version of add_fifo_list to zero out new + entries to the fifo_list when it resizes it larger [in 1.14.6] + - changed make_dev_fd_filename to use DEV_FD_PREFIX + +aclocal.m4 + - changed BASH_HAVE_DEV_FD to check for /proc/self/fd and define + DEV_FD_PREFIX to either "/dev/fd/" or "/proc/self/fd/" as + appropriate + + 9/14 + ---- +lib/readline/display.c + - when displaying the first line of a multiline prompt, make sure + that the final \n is followed by a \r (outputting one if necessary) + so that we know we are starting at column 0 + +variables.h + - new attribute: att_local + +variables.c + - changed make_local_variable to set the att_local attribute + - changed makunbound to just make variables marked as `local' in + the current context invisible. This makes the local variable + persist throughout the function even if it is unset, so a + subsequent assignment preserves the `local' attribute + - changed kill_all_local_variables to unset the att_local attribute + before calling makunbound + + 9/18 + ---- +lib/readline/complete.c + - make sure the cursor is on the last line of a possibly-multiple- + line command line before listing the completions in + display_matches + + 9/19 + ---- +braces.c + - fixed the non-SHELL case in brace_gobbler so the loop exits when + it should + +lib/readline/bind.c, lib/readline/readline.h + - added functions to dump key sequences bound to macros and their + values + +builtins/bind.def + - added -S and -s options to dump the readline macros and their values + - changed the options so that -p and -P dump functions, -v and -V + dump variables, and -s and -S dump macros (s for string) + +doc/{bash.{1,html},readline.3,features.texi}, lib/readline/doc/rluser.texinfo + - added documentation for the new `bind' options + - added documentation for the new readline functions to dump macros + and the key sequences that output them + + 9/22 + ---- +print_cmd.c + - new function xtrace_print_word_list (WORD_LIST *) to print the + words of a simple command when set -x is on. This prints '' + when it encounters an empty string + +externs.h + - new extern declaration for xtrace_print_word_list + +execute_cmd.c + - call xtrace_print_word_list in execute_simple_command + + 9/25 + ---- +builtins/getopts.def + - make sure that the loop counter stops at 10 when stepping through + the dollar_vars array to count the number of positional parameters + [in 1.14.6] + + 9/30 + ---- +lib/readline/histsearch.c + - fixed history_search_internal to bail immediately if it gets a + null or empty search string. This fixes the !? core dumps. + [in 1.14.6] + + 10/3 + ---- +lib/readline/histexpand.c + - if there is a null string given with a !? search specifier, use + a previous search string if one exists, else fail immediately + +trap.c + - made run_exit_trap preserve $? around the call to execute the + trap string, unless the trap string contains an `exit' + command, in which case it can set the shell's exit status + [in 1.14.6] + + In other words: + + touch /tmp/z + trap 'rm /tmp/z ; exit 5' 0 + exit 1 + + exits with status 5; while + + touch /tmp/z + trap 'rm /tmp/z' 0 + exit 1 + + exits with status 1 + +subst.c, parse.y + - moved the $'...' code from subst.c to parse.y, more like ksh + does it + +doc/bash.1, doc/bash.html, doc/features.texi + - moved the description of $'...' from the expansion section to + the quoting section + + 10/4 + ---- +command.h + - added a `line' member to the function struct for the source line + the function definition starts on + +make_cmd.c + - initialize the `line' member in Function_def to 0 + - make_function_def takes a third parameter telling which line the + function definition started on and a fourth telling which line + the function body started on + +make_cmd.h + - changed prototype for make_function_def + +parse.y + - new variable `function_dstart', set by read_token and read_token_word + to keep track of where a function definition begins + - new variable `function_bstart' to keep track of where function + body begins + - pass function_dstart and function_bstart to make_function_def + - new function strtrans to do the $"..." locale-specific translation + of `...' + - call strtrans() to translate $"string". The translated string is + double-quoted + +doc/bash.{1,html} + - updated the description of LINENO now that line numbers within + functions are correct + +configure.in + - look for the `gettext' library function + +config.h.in + - define HAVE_GETTEXT if gettext(3) exists in a findable library + + 10/5 + ---- +builtins/common.c + - changed backslash_quote so that `#' is only quoted at the start + of a word + - new function contains_shell_metas returns 1 if the argument + string contains one or more shell meta-characters that require + quoting + +builtins/common.h + - extern declaration for contains_shell_metas + +print_cmd.c + - changed xtrace_print_word_list to print words containing + shell metacharacters within single quotes + +lib/termcap + - upgraded to GNU termcap version 1.3 + + 10/9 + ---- +lib/readline/readline.c + - call setlocale(LC_CTYPE, ...) after finding a legal value for + one of LC_ALL, LC_CTYPE, or LANG + + 10/11 + ----- +lib/readline/search.c + - make rl_history_search_internal just do previous-history or + next-history as appropriate when given a null search string + (rl_point == 0) + + 10/24 + ----- +subst.c + - fixed an off-by-one error in char_is_quoted that skipped a + characters after calling skip_single_quoted or skip_double_quoted + [in 1.14.6] + - fixed an off-by-one error in string_extract_verbatim so it + leaves *sindex at the separator character if the separator + character is "'" [in 1.14.6] + + 10/27 + ----- +parse.y + - in CHECK_FOR_RESERVED_WORD, make sure that reading a `}' + decrements open_brace_awaiting_satisfaction if it is non-zero + [in 1.14.6] + +shell.c + - don't run the shell startup files if the shell is running + setuid + - don't source $ENV if the shell is running setuid + +variables.c + - new parameter to initialize_shell_variables: no_functions. If + non-zero, don't import functions from the environment + +variables.h + - change to function prototype for initialize_shell_variables + +lib/readline/complete.c + - fix for the code that decides whether or not a char is quoted for + applications that don't supply a value for rl_char_is_quoted_p + - fixed insert_match to not remove a user-supplied opening quote + character if make_quoted_replacement does not return a string + beginning with that quote character + + 11/2 + ---- +general.c + - new function ungetc_with_restart that handles the local buffering + [in 1.14.6] + +parse.y + - changed yy_stream_unget to call ungetc_with_restart if the OS + does not have restartable syscalls [in 1.14.6] + + 11/3 + ---- +bashline.c + - rewrote _ignore_completion_names to actually free and remove + names from the array if more than one names in the array + passed is acceptable, instead of just bailing [in 1.14.6] + + 11/7 + ---- +bashline.c + - if no matches are acceptable to _ignore_completion_names, + free the entries in NAMES, set NAMES[0] == 0, and let the + caller clean up [in 1.14.6] + - fixed a problem with backslash-quoted characters in + bash_dequote_filename that caused the character after the + backslash to be interpreted + - bash_dequote_filename now takes a quote_char parameter that, + if non-zero, gives the quote character (`'' or `"') that + delimits the filename. Used to initialize the quoting state + +lib/readline/complete.c + - if the completion ignore function returns with MATCHES == 0 + or MATCHES[0] == 0, ring the bell and quit the completion + attempt [in 1.14.6] + - pass quote_char to gen_completion_matches so it can pass it + along to the app-specific filename dequoting function + - have gen_completion_matches pass quote_char to whatever function + is pointed to by rl_filename_dequoting_function + +pathexp.c + - rewrote ignore_globbed_names to be more like _ignore_completion_names + +lib/readline/doc/rltech.texinfo + - updated documentation for rl_filename_dequoting_function + + 11/10 + ----- +subst.c + - fixed remove_quoted_nulls so that it is now a full function that + removes unquoted CTLNUL chars from the string it is passed + [in 1.14.6] + - fixed expand_word_internal to avoid generating some unneeded + quoted nulls (if the string is partially quoted, note that we + have seen a quoted null and add one if the rest of the string + doesn't expand to anything) + + 11/13 + ----- +variables.c + - bind HOSTTYPE, OSTYPE, and HOSTNAME unconditionally + +pathexp.c + - new function quote_globbing_chars, adds `\' before globbing + chars in its string argument, returns new string + +pathexp.h + - extern declaration for quote_globbing_chars + +bashhist.c + - if the previous line contains globbing chars, run it through + quote_globbing_chars before trying to match. This affects + only HISTIGNORE patterns containing `&' + + 11/14 + ----- +bashhist.c + - if the history line to be added contains globbing chars, quote + them with backslashes by calling quote_globbing_chars in + history_should_ignore before comparing them against the + patterns in HISTIGNORE + +bashline.c + - make sure that we erase the current readline line after running + fc on it and executing the resultant commands in + vi_edit_and_execute_command, so the original readline line + doesn't get returned [in 1.14.6] + +jobs.h + - added a new job listing format: JLIST_NONINTERACTIVE -- like + JLIST_LONG, but does not print the job number + +jobs.c + - added code to pretty_print_job to handle JLIST_NONINTERACTIVE + - call notify_and_cleanup() from wait_for even if the shell is + running a script (interactive_shell == 0) + - changed notify_and_cleanup to call notify_of_job_status if + interactive or interactive_shell == 0, so scripts report + about jobs they run + - changed notify_of_job_status to call pretty_print_job with a + JLIST_NONINTERACTIVE format if interactive_shell is 0 and a + job is marked JDEAD, after printing the script name and line + number. This message is printed only if the job dies due to + a fatal signal + +support/mkversion.c + - added support for a `-status status' argument to set the + `release status' of the shell (alpha, beta, or release). It + defines `RELSTATUS' in version.h and changes the definition + of SCCSVERSION, if present + +Makefile.in + - set a RELSTATUS variable that is included when printing the build + message and passed to mkversion with the -status option + - make RELSTATUS one of the variables sed sets when it creates + bashbug from support/bashbug.sh + +version.c + - added a `release_status' variable that's set to RELSTATUS if + it's defined + +support/bashbug.sh + - added the `RELSTATUS' variable to the report with heading + `Release Status' + - set the bug address to chet@po.cwru.edu if the release status + is `alpha' or `beta' + + 11/15 + ----- + +shell.c, execute_cmd.c + - new variable expand_aliases to control alias expansion. For now, + this is set to the same value as interactive_shell when that is + set + +parse.y + - perform alias expansion if expand_aliases is non-zero rather than + checking the value of interactive_shell + + 11/16 + ----- +builtins/shopt.def + - new option `expand_aliases' to control the value of expand_aliases + +doc/bash.1, doc/bash.html + - updated the description of `shopt' with the `expand_aliases' option + + 11/28 + ----- +bashline.c + - if there is only one completion in _ignore_completion_names, see + if it is acceptable and return right away [in 1.14.6] + +configure.in + - change to define WAITPID_BROKEN on SCO 3.2v5 + + 12/6 + ---- +parse.y + - call prompt_again in read_token_word if a newline is read in an + interactive shell and bash_input.type is either st_stdin or + st_stream + - remove superfluous call to reset_readline_prompt in yy_readline_get + + 12/7 + ---- +parse.y + - combine delimiters, delimiter_depth, and delimiter_space into a + single structure of type `struct dstack' + - replace all references to delimiter* with dstack.delimiter* + - include parser.h for struct dstack + - new define pop_delimiter(), analogous to push_delimiter + - current_delimiter, push_delimiter, and pop_delimiter defines now + include the delimiter stack struct as the first parameter + +parser.h + - now includes definition of struct dstack + +bashline.c + - include parser.h for struct dstack + - refer to dstack.delimiter_depth instead of delimiter_depth + + 12/12 + ----- +execute_cmd.c + - before doing a longjmp(subshell_top_level,...) when executing a + shell script without a leading #!, set history_lines_this_session + to 0 to forget about the history and not save it on an exec + (we don't free the memory with clear_history(), though -- that + would slow bash down) + + 12/14 + ----- +jobs.c, nojobs.c + - cause the sigwinch handling code to be compiled into the shell + even if READLINE is defined + - new functions: set_sigwinch_handler and unset_sigwith_handler + to enable and disable catching of SIGWINCH and adjusting $LINES + and $COLUMNS + - changed initialize_job_signals to install a signal handler for + SIGWINCH with set_sigwinch_handler + +jobs.h + - extern declarations for set_sigwinch_handler and + unset_sigwinch_handler + + 12/20 + ----- +doc/bash.{1,html}, doc/readline.3, lib/readline/doc/rluser.texinfo + - documented the readline `visible-stats' variable + + 12/21 + ----- +trap.c + - new global variable `running_trap' incremented and decremented + around running a trap command in _run_trap_internal + +execute_cmd.c + - new variable currently_executing_command, set to the COMMAND * + currently being processed by execute_command_internal, unless a + trap command is being run (running_trap != 0) + - new function executing_line_number, which returns the line number + of the currently executing command (which may not be the same as + line_number) + - don't run the debug trap if it was not set before the current + simple command was executed, since we don't want to run it after + the trap command that sets the DEBUG trap + +variables.c + - new function assign_lineno, to assign a value to line_number + when LINENO is set + - changed get_lineno to call executing_line_number() rather than + returning line_number + +parse.y + - new argument for push_stream telling it whether or not to reset + line_number to 0 + +builtins/common.c + - change to parse_and_execute to call push_stream with an argument + + 12/29 + ----- +subst.c + - set subshell_environment in command_substitute and process_substitute + for the child process + + 1/2 + --- +trap.c + - made decode_signal recognize signal names case insensitively + +shell.c + - make the shell exit on a longjmp (DISCARD, ...) if + subshell_environment is non-zero + + 1/16 + ---- +lib/readline/histexpand.c + - let the `!' in ${!xxx} pass through without error + +shell.c + - new --help long option + - new function show_shell_usage() for use by --help + + 1/19 + ---- +parse.y + - changes to shell_getc to make sure that lines consisting of only a + newline get added to the history correctly when they are part of + a quoted string + + 1/24 + ---- +aclocal.m4, configure.in + - added a check for -lsocket (and -lnsl) to fix solaris problems + with isnetconn() + +shell.c + - rearranged the code in isnetconn to check for a socket using + getpeername() first, before any SVR4 or SVR4.2-specific checks + - added checks for ttys (isatty) and FIFOs (S_ISFIFO) to the + SVR4/SVR4.2 case of isnetconn() + +general.h + - new macro RESIZE_MALLOCED_BUFFER to check and see whether there + is enough room in a string to add a given number of characters + and to resize it if there is not + + 1/25 + ---- +parse.y, general.c, subst.c, bashhist.c, alias.c, array.c, variables.c + - use RESIZE_MALLOCED_BUFFER where appropriate + + 1/26 + ---- +support/config.{guess,sub} + - merged in latest changes from GNU master copies + + 1/30 + ---- + +jobs.c + - make sure to freeze the jobs list when calling a trap handler + for SIGINT + - added code to waitchld() so that a SIGINT trap handler is called + if the shell is running a shell script and a SIGINT is received + while waiting for a foreground job, even if that job does not + die from the SIGINT + +jobs.c, nojobs.c + - make get_tty_state reset $LINES and $COLUMNS after each process + exits if the variable `check_window_size' is non-zero + +builtins/shopt.def + - new variable `checkwinsize', which controls the value of + check_window_size + +doc/{bash.{1,html},features.texi} + - updated description of `shopt' to include `checkwinsize' + +execute_cmd.c, lib/readline,complete.c + - some changes from the GNU WIN32 project for the bash port to + Windows NT and Windows 95 + +bashwait.h + - new file, with `union wait' defines from jobs.h + +jobs.h + - include `bashwait.h' if is not present and + _POSIX_VERSION is not defined + - removed define of pid_t for non-Posix systems; now provided by + autoconf in config.h + + 1/31 + ---- +parse.y + - new temporary delimiter stack, used when decoding prompt strings. + This is needed so command substitutions in the prompt strings + (especially PS2) don't screw up the parser's quoting state + +lib/readline/complete.c + - new variable for readline library users: + rl_completion_append_character. The value of this variable is + the character appended to a completion when it occurs at the + end of a line. Setting it to '\0' causes nothing to be + appended. + +lib/readline/readline.h + - declaration for rl_completion_append_character + +lib/readline/doc/rltech.texinfo + - documented rl_completion_append_character as int variable available + to library users + +subst.c + - new code for maintaining a string array saying which words in the + output of expand_word_list_internal are the result of globbing + +variables.c + - new function put_gnu_argv_flags_into_env (pid, flags_string) + to put Roland's GNU getopt helper variable into the export_env + +execute_cmd.c + - in execute_disk_command, after forking the child, put the GNU + getopt helper environment variable into the child's export_env + +unwind_prot.c + - changed unwind_protect_var and restore_variable to do the + bcopy of the variable's value if it's shorter than the size of + an int, as well as if it's longer. This keeps stray data + from being copied if a short is being unwind-protected + +unwind_prot.h + - new define, unwind_protect_short, to protect variables smaller + than an int + +jobs.c + - in the code that handles SIGCHLD traps, call unwind_protect_short + if that is the size of a pid_t (for last_made_pid) + + 2/5 + --- +Makefile.in + - only try make distclean in HIST_LIBDIR if Makefile exists -- could + have already been removed if HIST_LIBDIR is the same as RL_LIBDIR + +general.c + - make canonicalize_pathname be more careful about what it checks + for being a directory name when processing a full pathname + +Makefile.in, configure.in, doc/Makefile.in + - small changes to get bash to build better in a directory not the + source directory + + 2/12 + ---- +Makefile.in + - added `install-strip' target + + 2/14 + ---- +doc/bash.{1,html}, doc/features.texi + - documented the `--verbose' startup option + +lib/readline/complete.c + - fix to gen_completion_matches to fix a memory leak + - fix to rl_complete_internal to fix a memory leak + + 2/15 + ---- +bashwait.h + - changed to use WORDS_BIGENDIAN instead of LITTLE_ENDIAN or + BIG_ENDIAN + +configure.in, config.h.in + - call AC_C_BIGENDIAN, define WORDS_BIGENDIAN + +Makefile.in + - remove all references to mkendian.c, mkendian, and bash_endian.h + - added a `symlinks' target that just runs support/fixlinks + +MANIFEST + - mkendian.c is no longer in the distribution + + 2/16 + ---- +execute_cmd.c + - include if HAVE_SYS_TIMES_H and HAVE_TIMES are + defined + +bashline.c + - fix to bash_directory_completion_hook to compensate for + canonicalize_pathname returning NULL + +variables.c + - fix to initialize_shell_variables to compensate for + canonicalize_pathname returning NULL + + 2/22 + ---- +tests/test-tests, tests/test.right + - changes to avoid writing in the source directory -- all temp files + are created in /tmp + +[First alpha release at Thu Feb 22 15:59:51 EST 1996] + + 2/23 + ---- +lib/readline/rldefs.h + - work around SVR4.2 bug including and + +lib/readline/chardefs.h + - fix to CTRL_CHAR macro for chars > 128 on systems with signed + characters + +builtins/ulimit.def + - protect more of the RLIMIT_* defines with checks + - new macro RETINVALID() to set errno and return the correct + value for an invalid request + +doc/Makefile.in + - add a definition for INSTALL, set by autoconf + + 2/26 + ---- +support/bashbug.sh + - if USER is unset, assign it the value of $LOGNAME or `whoami` + +Makefile.in,{lib/*,doc,builtins}/Makefile.in + - use `test' instead of `[' to conform to GNU coding standards + - `incdir' -> `includedir' as per latest GNU coding standards + +lib/readline/Makefile.in, lib/glob/Makefile.in + - use $(srcdir)/ instead of $(srcdir) in the CSOURCES variable + +general.h + - new define, FS_NODIRS, to not find directory names when searching + $PATH + +execute_cmd.c + - fix to find_in_path_element so it does not return directories + - executable_file() no longer returns directories as executable + + 2/27 + ---- +jobs.h + - new flag value: J_NOHUP + +jobs.c + - new function: nohup_job(job). Sets J_NOHUP flag for specified + job + - change hangup_all_jobs so that jobs marked J_NOHUP are not + sent SIGHUP. If stopped, the job still gets SIGCONT. + - changed calls to report_error to call internal_error, which will + not exit the shell + - changed FIND_CHILD define to call internal_error, restore the + SIGINT handler, set termination_state to 127 and return, rather + than aborting the shell + +builtins/jobs.def + - new option for disown: `-h'. Marks the specified jobs J_NOHUP. + +doc/{bash.{1,html},features.texi} + - added description of `disown -h' + +jobs.c, nojobs.c + - include some files needed for struct winsize by SCO + +lib/readline/input.c + - added some #ifdefs to avoid including on systems + with select but without + +configure.in + - check for , define HAVE_STDARG_H in config.h if found + +config.h.bot + - define USE_VARARGS and either PREFER_STDARG or PREFER_VARARGS + if one of or is present + +aclocal.m4 + - moved default mail directory check here from configure.in, macro + name is BASH_DEFAULT_MAIL_DIR + - rewrote BASH_CHECK_DEV_FD to cache the value + - minor fixes from Bruno Haible + +shell.c + - no longer includes + +builtins/Makefile.in + - add -I$(topdir)/builtins to list of includes + +execute_cmd.c, lib/glob/glob.c + - include memalloc.h for correct alloca definitions + +error.[ch], print_cmd.c, builtins/common.[ch] + - changes to include new ANSI-C stdargs code if PREFER_STDARG is + defined + + 2/28 + ---- +aclocal.m4 + - more minor fixes from Andreas Schwab + +doc/Makefile.in + - change TEXINPUTS makefile variables to TEXINPUTDIR to avoid + conflict with shell variable of the same name + +builtins/pushd.def + - fix to avoid a bad call to free after a call to + polite_directory_format does not change its argument string + +lib/readline/bind.c + - fixes to _rl_macro_dumper_internal so that it prints whatever + prefix it's passed, if any + + 2/29 + ---- +Makefile.in + - slight change to the rule for `stamp-h': it should be created by + running `config.status', not explicitly by the makefile rule + +builtins/Makefile.in + - replace `..' in the dependencies with `$(topdir)' + - replace `.' in the dependencies with `$(srcdir)' + + 3/1 + --- +Makefile.in + - add a rule to build builtins/builtext.h for the benefit of + deficient makes like the SunOS one + +variables.c + - fix to assign_in_env so that values in the environment are + properly null-terminated + +builtins/Makefile.in + - added dependencies for object files made from .c files in this + directory: common.o, getopt.o, bashgetopt.o. SunOS /bin/make + doesn't seem to be able to handle anything else + +support/mkclone + - new script to replace clone-bash that works from MANIFEST to link + only those files contained in a distribution + +support/mkversion.c + - change so that it doesn't try to get `.build' from the source + directory when that's different from the build directory + + 3/4 + --- +bashjmp.h + - #undef setjmp and longjmp before redefining them as sigsetjmp and + siglongjmp, respectively + +bashhist.c + - fixed an uninitialized variable problem in expand_histignore_pattern + +builtins/set.def + - used `on_or_off' where `value' was needed in minus_o_option_commands + +builtins/common.h + - added extern declaration for set_var_attribute + +print_cmd.c + - include `bashansi.h' instead of just string.h or strings.h + +builtins/*.def, builtins/common.c + - include `../bashansi.h' where appropriate + +parse.y + - fixed a parenthesization problem in alias_expand_token + +general.h + - added extern declaration for `ungetc_with_restart' + +lib/readline/readline.c + - renamed LibraryVersion to rl_library_version, made it extern, + assigned `2.1' to it + +lib/readline/readline.h + - extern declaration for `rl_library_version' + +lib/readline/doc/rltech.texinfo + - added description of `rl_library_version' + +lib/glob/glob.c + - changed call to sprintf in glob_dir_to_array to a couple of + calls to strcpy, since we keep the length of the first string + we copy + + 3/7 + --- +aclocal.m4 + - added new macro `BASH_FUNC_LSTAT' to check for lstat on Linux, + which defines it as an inline function in + +configure.in + - call BASH_FUNC_LSTAT if $ac_cv_func_lstat has value `no' + + 3/8 + --- +parse.y + - changed the occurrences of `list' in the if command productions + to use `compound_list' instead + + 3/11 + ---- +parse.y + - changed the occurrences of `list' in the while and until command + productions to use `compound_list' + +lib/readline/complete.c + - fix to filename_completion_function -- off-by-one error when + expand-tilde is enabled and a filename to be completed begins + with `~/' + + 3/12 + ---- +builtins/cd.def + - made the POSIX.2 behavior of PWD not containing symlinks after + using $CDPATH part of `posix mode', not default shell behavior + +lib/readline/display.c + - fix to update_line to handle update problems when using + horizontal scroll mode. This is a dumb update solution -- it + should use a better one + + 3/14 + ---- +examples/functions/csh-compat + - replaced the defintion for `alias' with a better one posted to + usenet by Mohit Aron + + 3/15 + ---- +jobs.c + - fix to wait_for_background_pids to keep `wait' from hanging + + 3/19 + ---- +lib/readline/input.c + - new function `_rl_input_available()' returns > 0 if there is + input available on the readline input file descriptor. Only + works if select(2) or FIONREAD are available + +lib/readline/isearch.c + - slight change to the isearch termination behavior -- ESC still + terminates the search, but if there is pending input or if input + arrives within 0.1 seconds (on systems with select(2)) it is + used as a prefix character with rl_execute_next + +shell.c + - the GNU coding standards say to write the output generated by + the --help command line option to stdout, not stderr + - show_shell_version now takes an `extended' option that displays + copyright information if non-zero + - show_shell_version now prints the value of `MACHTYPE' by default + - the `--version' option now causes the shell to exit successfully + after printing the extended version information + +externs.h + - changed prototype for show_shell_version + +shell.c, bashline.c, builtins/help.def + - changed calls to show_shell_version to add appropriate argument + +Makefile.in + - pass a `MACHTYPE' define to the compiler + + 3/22 + ---- +general.c + - changed print_timeval() and print_time_in_hz() to output three + fractional digits after the decimal point + +examples/loadables/sleep.c + - changed to an implementation that will sleep fractional portions + of seconds if select() is available + + 3/25 + ---- +builtins/shopt.def + - fixes to shopt -o from Andreas Schwab. Use FLAG_ON/FLAG_OFF + instead of SETOPT/UNSETOPT + + 3/26 + ---- +Makefile.in, builtins/Makefile.in + - use `@includedir@' instead of `@incdir' for autoconf 2.9 + +Makefile.in + - the `info', `dvi', and `ps' targets do not depend on `texindex' + - add a `dist' target that just prints a message describing how + distributions are constructed + +support/mkdirs + - replace uses of [...] with `test' + + 3/28 + ---- +parse.y + - fix for a problem with \@ prompt expansion from Tim Mooney + +jobs.c + - broke the code that prints a pipeline out into a separate + function: print_pipeline(). This gets called by + pretty_print_job and can be used for debugging + - two new functions to save and restore the_pipeline around calls + to make_child that you don't want to disturb the current pipeline, + for example in process substitution + +subst.c + - changed process_substitute to call save_pipeline and + restore_pipeline in the appropriate places + + 3/29 + ---- +general.c + - ansicstr now takes an additional parameter, the length of the + string to be translated. It's the second paramter. + +builtins/echo.def + - changed call to ansicstr to pass strlen(list->word->word) + +parse.y + - redid the $'...' expansion so it works like it's supposed to: + the quoted strings may appear anywhere in a token, and multiple + ansi-c quoted strings may appear in a token + - redid the $"..." expansion so it works like it's supposed to + +tests/nquote.{tests,right}, tests/run-nquote + - tests for the $'...' and $"..." quoting stuff -- simple-minded + +subst.c + - on systems without /dev/fd, open the named pipe for a `reading + in child' process substitution (>(...)) with O_NONBLOCK + +lib/posixheaders/filecntl.h + - add code to make sure the O_NONBLOCK is defined to O_NDELAY if + it is present and O_NONBLOCK is not defined by + +general.c + - don't bother handling both O_NONBLOCK and O_NDELAY in + unset_nodelay_mode, since filecntl.h defines O_NONBLOCK as + O_NDELAY for non-Posix systems + + 4/1 + --- +lib/readline/funmap.c + - made `vi-fetch-history' a bindable command name + +doc/readline.3 + - many cleanups, updated the list of default bindings + + 4/4 + --- +doc/bash.1, doc/readline.3 + - fixed up use of \-; now it is not used unless the text is being + printed in bold or italic + +configure.in, config.h.in + - add a configuration option, --enable-usg-echo-default, to turn + on DEFAULT_ECHO_TO_USG and make `echo' expand backslash-escaped + characters by default + + 4/8 + --- +parse.y + - another small change to localeexpand to handle backslash-escaped + double quotes in the double-quoted string + + 4/9 + --- +shell.c + - add the value of MACHTYPE to the text output by `--help' + + 4/11 + ---- +parse.y + - more changes to the $"..." and $'...' code to move it into + read_token + - don't try to check token[token_index - 1] unless token_index + is greater than 0 + + 4/12 + ---- +trap.c + - new function run_trap_cleanup to clean up after _run_trap_internal + in the event that parse_and_execute does not return normally + (e.g., if a `return' is executed in the trap command) + - set running_trap to the number of the signal whose trap is being + run plus one in _run_trap_internal + +trap.h + - extern declaration for run_trap_cleanup + +jobs.c + - new function `unfreeze_jobs_list' to set freeze_jobs_list back to 0. + called from parse_and_execute_cleanup so a `return' while running + an interrupt trap does not leave the jobs list frozen + +jobs.h + - new extern declaration for unfreeze_jobs_list + +builtins/common.c + - if running_trap is non-zero in parse_and_execute_cleanup, indicating + that parse_and_execute was running a trap command when it got a + `return', call run_trap_cleanup (running_trap - 1) + - parse_and_execute_cleanup now calls unfreeze_jobs_list + + 4/16 + ---- +Makefile.in + - don't try to make `doc' as a dependency of `install' + +doc/Makefile.in + - make `info' a dependency of `install' to make sure the info + document is present and up to date before installing it + - make the `install' target install the documents with a $(srcdir)/ + prefix in case we're building in another directory + +lib/glob/glob.c + - fixed an off-by-one error in glob_dir_to_array + +shell.c + - removed an extra increment of arg_index when setting up the + arguments for -c command + + 4/17 + ---- +pathexp.c + - made quote_globbing_chars backslash-quote backslashes as well as + `?*[]'; changed it to be a little faster + +bashhist.c + - call quote_globbing_chars to quote backslashes in the previous + history line even if no other globbing chars are present. This + is done only if we're matching against a HISTIGNORE pattern of `&' + - don't bother quoting globbing characters in the current history + line in history_should_ignore -- fnmatch ignores special chars in + its `string' argument + +[bash-2.0-alpha2 frozen] + + 4/18 + ---- +command.h + - new flag value for a word: W_NOSPLIT. A word with this bit set + in its flags will not have word splitting performed + +parse.y + - turn on the W_NOSPLIT flags for assignment statements appearing + where an assignment statement is acceptable (words that would + return ASSIGNMENT_WORD rather than WORD). This means that, for + the time being, assignment statement arguments to builtins like + `declare' or `alias' will be split unless they are quoted + +subst.c + - don't split a word in expand_word_internal if the W_NOSPLIT flag + is set, rather than checking W_ASSIGNMENT; do the same thing in + expand_word_list_internal + +builtins.h + - a new flag, ASSIGNMENT_BUILTIN, indicating that this builtin takes + assignment statements as arguments + - rearranged the values of the builtin flags, so the BUILTIN_* flags + come first, then the *_BUILTIN flags + +builtins/makebuiltins.c + - added code for an array of `assignment builtins' -- builtins that + take assignment statements as arguments -- and to add the + ASSIGNMENT_BUILTIN flag for those builtins + +execute_cmd.c + - added a hack function `fix_assignment_words', which checks the + first word of a builtin command to see if it is a builtin that + has the ASSIGNMENT_BUILTIN flag set, and adds W_NOSPLIT to the + flags for all words with the W_ASSIGNMENT bit set. This means + that word splitting is not done for any of the assignment + statements in commands like `declare z=$a' + + 4/19 + ---- +execute_cmd.c + - fixed a memory-freed-twice error in find_in_path_element + +lib/readline/rltty.c + - include if GWINSZ_IN_SYS_IOCTL is defined and + SHELL is not defined + +lib/readline/input.c + - changed a stray HAVE_FIONREAD to FIONREAD + - include if FIONREAD_IN_SYS_IOCTL is defined + +aclocal.m4 + - new macro, BASH_HAVE_FIONREAD, to check for a #define of + FIONREAD in or one of the files it includes; + defines FIONREAD_IN_SYS_IOCTL if present + +config.h.in + - new line for FIONREAD_IN_SYS_IOCTL + +configure.in + - call BASH_HAVE_FIONREAD + + 4/22 + ---- +builtins/cd.def + - fixed a memory-freed-twice error in mkpath() + +jobs.c + - don't print a job termination message for a non-interactive shell + with startup_state == 2 (those shells are started to run commands + when bash is invoked with `-c command') + + 4/23 + ---- +general.h + - definition for a `generic pointer' type PTR_T -- `void *' on ANSI + C systems, `char *' otherwise + +jobs.h + - new members of job struct: `j_cleanup', a function to call when the + job is marked JDEAD, and `cleanarg', argument to pass to j_cleanup + +jobs.c + - initialize j_cleanup and cleanarg to NULL in stop_pipeline + - call j_cleanup from waitchld() when a job is marked JDEAD + +test.c + - fixed binop() so it recognizes `<' and `>' as binary operators + - fixed a bug in binary_operator so `<' works correctly + +tests/test-tests + - fixed the tests so they no longer rely on the modes of files in + the file system to test -u, -g, -r, -x, -w, and so on, except + for a few `standard' files like /dev/tty and /dev/null + - added tests for string < string and string > string + +xmalloc.c + - include if HAVE_UNISTD_H is defined for a prototype + for sbrk + - add an extern declaration for sbrk if SBRK_DECLARED is not defined + - use PTR_T to cast the return value of sbrk() when finding out where + the break is and how many bytes of memory have been allocated + +lib/malloc/malloc.c + - added code to write 0xcf into memory as it's freed, to uncover + callers that try to refer to freed memory, and writes 0xdf into + newly-allocated memory, to uncover callers that assume something + about new allocations (e.g., that newmem[0] == 0) + +lib/malloc/gmalloc.c + - latest version from GNU sources + + 4/25 + ---- +doc/bash.1 + - changed the description of `unset' to include a description of + the `-v' option + +parse.y + - fixed a problem with conversion to 12-hour time in + decode_prompt_string that made 12:00pm show up as 00:00pm + + 4/26 + ---- +builtins/common.c, subst.c + - a couple of fixes from Andreas Schwab + +configure.in + - set up the minimal configuration after checking for + --enable-minimal-config with AC_ARG_ENABLE, before checking any + of the other options, instead of after checking all options. + This makes `--enable-minimal-config --enable-prompt-string-decoding' + work as documented + - changed AC_PREREQ to require autoconf version 2.8 or higher + - added some code to disable gnu malloc by default on the systems + listed in NOTES + - set MALLOC_SRC to have the $(ALLOC_LIBSRC)/ prefix to avoid having + a directory in the dependencies when making without the gnu + malloc + +lib/malloc/Makefile.in + - make gmalloc.o depend on $(BUILD_DIR)/config.h + + 4/30 + ---- +COMPAT + - new file listing user-visible incompatibilites between bash-1.14 + and bash-2.0 + +parse.y + - new prompt expansions, \v (version) and \V (version + patchlevel) + +config.h.top + - the default value of PS1 is now '\s-\v\$ ' + +doc/{bash.{1,html},features.texi} + - added descriptions of \v and \V prompt expansions + - changed default value of PS1 + +Makefile.in + - added dependencies on config.h.top for files that use definitions + included there + +builtins/exec.def + - removed reference to `no_exit_on_failed_exec' from the help text + + 5/3 + --- +builtins/cd.def + - fixed a typo in fix from 4/22 + + 5/7 + --- +builtins/common.c + - new function `no_options (WORD_LIST *)' to be called by builtins + that do not take options to check for options and -?. It returns + 0 on success, non-zero if an unwanted option is supplied + +builtins/common.h + - extern declaration for no_options + +builtins/return.def + - corrected the error message to include returning from a sourced + script + +builtins/{getopts,eval,wait,source,fg_bg,help}.def + - changed the following builtins to either call no_options or test + explicitly for options and return EX_USAGE if any are found: + + getopts eval wait source . fg bg help + +builtins/help.def + - error messages are now printed using builtin_error + + 5/8 + --- +builtins/jobs.def + - fixed an unitialized variable problem + +tests/more-exp.tests + - added additional tests for IFS problem uncovered by `iffe' + + 5/9 + --- +lib/malloc/Makefile.in + - use $(ALLOCA_SOURCE) instead of $< in rule that builds alloca.o. + Some makes don't expand the $< in non-suffix rules + +lib/readline/rldefs.h + - fix workaround for SVR4.2 bug + +shell.c + - even though SVR4.2 has getpeername(), isnetconn() should not use it + +maxpath.h + - rework to make sure PATH_MAX and NAME_MAX are defined, and remove + the BUILDING_MAKEFILE code + +general.c, parse.y, oslib.c, jobs.c, builtins/common.c, builtins/cd.def + - change uses of MAXPATHLEN to PATH_MAX + +examples/loadables/{{log,base,dir}name,tty,pathchk,tee}.c + - new loadable builtins: + + logname basename dirname tty pathchk tee + +configuure.in, config.h.in + - look for tzset(3), define HAVE_TZSET if found + +subst.c + - new special variable function, sv_tz, which calls tzset when + TZ is changed, if tzset(3) exists and the shell is compiled + to do prompt string decoding + +subst.h + - extern declaration for sv_tz + + 5/10 + ---- +builtins/echo.def + - only call printf if the string to print is non-null + - add an fflush(stdout) after the printf call to work around a + bug in SunOS 5.5 + + 5/16 + ---- +shell.c + - moved some variable declarations out of this file to more + logical places + +support/config.guess + - small fixes from rfg@monkeys.com + +version.c + - moved functions for getting, setting, and displaying shell version + information here from shell.c + +general.c + - moved set_lines_and_columns to variables.c + - moved getc_with_restart and ungetc_with_restart to input.c + - new function argv_to_word_list(), converts an array of strings + into a WORD_LIST + - renamed find_name_in_list to find_name_in_array to match rest + of functions that operate on arrays of strings + +configure.in, Makefile.in, jobs.c, nojobs.c + - changes so that jobs.c no longer includes nojobs.c, and the correct + object file (jobs.o or nojobs.o) is selected by configure + and substituted into the Makefile + +list.c + - new file, list manipulation functions from general.c + +externs.h, general.h + - moved extern declarations for functions defined in oslib.c and + list.c to externs.h from general.h + + 5/17 + ---- +locale.c + - new file, with locale code from parse.y and shell.c + +shell.c + - don't turn off job control if act_like_sh is set + - if an unknown option is supplied at startup or if -c is + supplied without an argument, exit with EX_USAGE + - call posix_initialize after parsing all the options, to + catch `bash -o posix' + - new functions: init_interactive(), init_noninteractive() + - exit with EX_NOTFOUND if a script argument is not found + - exit with EX_NOINPUT if a script file cannot be opened for + some reason + +shell.h + - new define for EX_NOINPUT exit status (126) + + 5/18 + ---- +lib/readline/bind.c + - fixed _rl_get_keyname() so that it properly handles C-\ and outputs + it as \C-\\ and C-" as \C-\". This fixes the improper binding + commands written by `bind -p' that caused weird things to happen + when people used the output of `bind -p' as a start for their + own inputrc files + - new function _rl_init_file_error to print error messages encountered + while parsing the inputrc file + - print out an error message if parsing an inputrc line and no closing + double quote is found for a key binding + +lib/readline/complete.c + - in rl_complete_internal, if the completion function results in + multiple matches, but none match up to even the first character, + use what the user typed in (which is presumably a glob pattern + that expanded into multiple files) as matches[0]. This makes + things like show-all-if-ambiguous work right, too + +oslib.c + - if we are providing our own version of getenv(), provide a function + _getenv() as well, which just calls getenv() + +builtins/ulimit.def + - #define _KERNEL before including if HPUX is + defined. This makes the full set of limits available on hpux + version 8 and above + +bashline.c + - new function, enable_hostname_completion, sets up readline to + perform or not perform hostname completion. Hostname completion + is on by default. + - don't attempt hostname completion in attempt_shell_completion() + unless perform_hostname_completion is set + +builtins/shopt.def + - add a `set_func' member to the shopt options structure, to provide + a hook for those variables that require a little more than just + toggling a variable on or off + - new shopt variable `hostcomplete', turns hostname completion on and + off + +doc/{bash.{1,html},features.texi} + - added description of new shopt `hostcomplete' variable + + 5/21 + ---- +sig.c + - don't try to save the shell history in termination_unwind_protect + if we're dying due to SIGABRT + +bashhist.c + - new functions: last_history_entry (static), last_history_line + +bashhist.h + - extern declarations for new functions in bashhist.c + +error.c + - have programming_error() report the last command in the history + before aborting + +builtins/fc.def + - if the editor returns a non-zero exit status when using `fc -e', + return immediately without trying to execute the commands, as + per Posix.2, 5.12.2 + - when using `fc -s', echo the command to be executed to stderr, + not stdout + +lib/readline/terminal.c + - new file, with all code related to termcap/terminfo + +lib/readline/{readline,rltty,display,util}.c + - moved functions dealing with termcap to terminal.c + +lib/readline/readline.c + - readline_initialize_everything now calls _rl_enable_meta_key() + to turn on the meta key, based on the value of _rl_enable_meta + (on by default) + +lib/readline/rltty.c + - do not enable and disable the meta key each time readline is + called; do it once at initialization + + 5/23 + ---- +bashhist.c + - when `hist_verify' is set, call re_edit with the expanded line, + not the original one, and do not print the results of the + expansion before re-editing + + 5/24 + ---- +support/config.guess + - recognize linux/sparc + +configure.in + - don't use GNU malloc on linux/sparc + +variables.c + - initialize a new $MACHTYPE variable to the value of MACHTYPE as + set by autoconf + +doc/{bash.{1,html},features.texi} + - documented $MACHTYPE + + 5/30 + ---- +builtins/ulimit.def + - allow the max vm size to be set via setrlimit() if RLIMIT_VMEM + is defined + + 5/31 + ---- +shell.h + - changed EX_USAGE to 258, EX_BADUSAGE is now 2 + - added a number of execution failure statuses, so that builtins + can indicate various failures. All are greater than 256, so + they cannot be returned by other utilities + +execute_cmd.c + - new function, builtin_status(), to translate the new return + status codes to something the shell can export + - changed execute_simple_command to call builtin_status after + execute_builtin_or_function to translate error codes if a + builtin is invoked. If a function or regular builtin is + invoked, all return values greater than EX_SHERRBASE get + translated to EXECUTION_FAILURE, with the exception that + EX_USAGE gets translated to EX_BADUSAGE. If a special + builtin failed with a status > EX_SHERRBASE, special_builtin_failed + is set to cause the shell to exit in POSIX mode + - changed execute_builtin_or_function to return EX_REDIRFAIL if + redirections fail + - changed execute_subshell_builtin_or_function to translate + EX_USAGE to EX_BADUSAGE if a builtin is executed + - set this_command_name to NULL in execute_for_command before binding + each member of the word list to the loop variable, to avoid + garbled error messages if the variable has the integer attribute + +builtins/{set,unset}.def + - return EX_USAGE instead of EXECUTION_FAILURE if a bad option is + supplied + +builtins/source.def + - return EX_USAGE instead of EXECUTION_FAILURE if the required + filename argument is missing + +builtins/setattr.def + - return EX_BADASSIGN if any assignment statements given as arguments + to readonly, export, etc. return failures (assignment to + non-identifier, assignment to readonly variable) + +builtins/declare.def + - don't allow `declare var=value' to assign value to a readonly + variable + +lib/readline/rldefs.h + - include if we're going to be using stdarg instead of + varargs + +lib/readline/display.c + - added `stdarg' version of rl_message + +lib/readline/readline.h + - changed extern declaration for rl_message to be in ANSI-C format + if __STDC__ is defined and we're using stdarg + +variables.c + - make sure this_command_name is set to null before calling + make_variable_value in assign_array_var_from_string so any + error messages are not garbled + + 6/2 + --- +builtins/common.c + - don't execute the command in parse_and_execute if -n has been + enabled and the shell is not interactive + - include flags.h for read_but_dont_execute + +[bash-2.0-alpha3 released] + + 6/5 + --- +subst.c + - array_length_reference and parameter_brace_expand_length now + return -1 on errors + - parameter_brace_expand now returns &expand_param_error if + paramter_brace_expand_length returns something < 0 + +variables.c + - assign_in_env now checks for assignments to readonly shell + variables and disallows them + + 6/6 + --- +xmalloc.c + - only do pointer arithmetic on pointers cast to (char *), since + it's not required that compilers support arithmetic on void * + +shell.c + - make sure is included with the same conditions + used to call getpeername(2) in isnetconn() + +parse.y + - added a new function, paren_match, to parse the contents of $(...) + constructs. This function correctly handles embedded quoted + strings, embedded command substitutions, embedded command + substitutions with embedded quoted strings, etc. The implementation + is much closer to that described in POSIX.2, section 3.6.3. + - changed read_token_word to call paren_match where appropriate + +subst.c + - rewrote extract_delimited_string so that it correctly understands + quoted strings inside command substitutions, a la paren_match + in parse.y. Corrected the description of the function's output + in the code. extract_delimited_string is now very recursive, and + does not try to do everything in one pass without recursion + + 6/7 + --- +test.c + - fixed three_arguments() to test the second argument for a valid + binary operator before checking whether or not the first argument + is `!'. This is what POSIX.2 says to do. + +lib/malloc/malloc.c + - don't compile in the memory scrambling code (#define MEMSCRAMBLE) + if NO_MEMSCRAMBLE is defined. + +configure.in + - define NO_MEMSCRAMBLE in LOCAL_CFLAGS for SCO 3.2v[45] + + 6/9 + --- +parse.y + - renamed paren_match to parse_matched_pair + - call parse_matched_pair to parse <(...) and >(...) constructs, + since those should be treated the same as $(...) for the purposes + of matching parens and skipping embedded quoted strings + + 6/13 + ---- +parse.y + - augmented parse_matched_pair + o fixed up backslash quoting and CTLESC handling after + backslashes + o match pairs of ${...} and $[...] inside double-quoted + strings or `` strings + o keep track of line number quoted string starts on for + better error messages + o push and pop delimiters when parsing quoted strings + inside $(...), ${...}, and $[...] for use by the + history code + o set EOF_Reached to 1 if we get an EOF before finding the + match closer + - rewrote read_token_word from scratch to use parse_matched_pair: + o shell quote characters use parse_matched_pair to find + the matching quote + o fixed up backslash parsing code + o compound array assignments use parse_matched_pair + o corrected all_digits and dollar_present computations, so, + for instance, 2''>/dev/null is no longer accepted as + identical to 2>/dev/null + o converted ${...} parsing to use parse_matched_pair + o removed printing of error messages about unmatched quotes; + now handled by parse_matched_pair + o converted $'...' and $"..." to use parse_matched_pair + o removed all of the delimited_xxx and dollar_xxx variables + and embedded_quoted_string + - modified report_syntax_error to regularize error messages: + o non-interactive shells and interactive shells running + scripts with `.' now always report line numbers + o unexpected EOF is always reported when EOF_Reached is true + o non-interactive shells no longer duplicate the script name + in error messages (e.g., `./z3: ./z3: line 3: syntax error') + +bashline.c + - make sure `newnames' is freed in _ignore_completion_names + +lib/readline/complete.c + - don't insert the first match on TAB completion in + rl_complete_internal() if matches[0] is the empty string -- + that will overwrite whatever the user has typed, if dequoting + what the user typed results in the empty string + +execute_cmd.c + - include if HAVE_LIMITS_H is defined for ARG_MAX + - only put the special environment variable for GNU getopt into + the environment if ARG_MAX exceeds 10240 + +subst.c + - rewrote extract_dollar_brace_string so that it fully obeys + the POSIX.2 rules for finding the closing `}' and uses + skip_{single,double}_quoted rather than trying to do it with + inline delimiters + - removed the INC_NEST and DEC_NEST defines + + 6/14 + ---- +jobs.c + - don't print status messages for background jobs that complete + successfully when running shell scripts + +builtins/shopt.def + - when using shopt -o as a synonym for set -o, make sure $SHELLOPTS + is updated + - make sure to update $SHELLOPTS when using shopt to set or unset + interactive comments + +execute_cmd.c + - fixed find_in_path_element to not return non-executable files + when FS_EXEC_PREFERRED is one of the flags, after saving such + a file as file_to_lose_on (fix from william@nscs.fast.net) + + 6/17 + ---- +lib/readline/complete.c + - after printing possible completions, all lines of a multi-line + prompt are redisplayed using rl_forced_update_display() + +subst.c + - in expand_word_internal, only do tilde expansion on words where + (flags & (W_ASSIGNMENT|W_QUOTED)) == W_ASSIGNMENT (unquoted + assignment statements) and contain unquoted `=~' or `:~', and + only if posixly_correct is off. POSIX.2 says that only the + assignments preceding the command name should be tilde-expanded. + + 6/18 + ---- +support/config.guess + - recognize the new Pyramid DC-OSx as `mips-pyramid-sysv4' + +configure.in + - set LOCAL_CFLAGS to -Xa for mips-pyramid-sysv4 as per + Peter Chubb + +subst.c + - variable assignment errors when there is not a command name + after the assignments now causes a non-interactive shell to + exit in POSIX.2 mode + +execute_cmd.c + - if the iteration variable in a for statement is a read-only + variable, a variable assignment error occurs. This causes + non-interactive shells to exit in posix mode, and a failure + status to be returned for other non-interactive shells and + interactive shells + - if the selection variable in a select statement is a read-only + variable, a variable assignment error occurs, with the same + consequences as a for statement variable assignment error + +doc/bashref.* + - renamed features.* to bashref.*, since that more accurately + reflects the current contents + + 6/19 + ---- +test.c + - changed three_arguments() to do one-argument tests on $1 and + $3 and return the appropriate values if -a or -o is given as + the second argument + - changed three_arguments() to perform a one-argument test on + $2 if $1 == '(' and $3 == ')' and return that result + - make sure test_stat translates /dev/fd/xx to DEV_FD_PREFIX/xx + so /dev/fd/0 always means the same thing, even on linux, + which uses /proc/self/fd + +aclocal.m4 + - added a check for libncurses in BASH_CHECK_LIB_TERMCAP + +configure.in + - added an initial message saying we're configuring for bash-2.0 + +lib/glob/fnmatch.c + - made a small change to fnmatch() to fix a bug matching patterns + with multiple consecutive `*'s + + 6/20 + ---- +parse.y + - inhibit history expansion when calling pre_process_line() from + shell_getc() if the current delimiter is a single quote, even + if we're on a different line than the opening quote + - make sure read_a_line prints a prompt if we're interactive and + not using readline, and make sure we call clearerr() if we + get EOF when interactive and not using readline + +bashhist.c + - new function history_expansion_p(char *) returns 1 if the string + passed contains the history expansion or history substitution + characters + - pre_process_line() now calls history_expansion_p and calls + the history expansion code only if that returns 1 + + 6/26 + ---- +lib/readline/isearch.c + - swap the behavior of ^J and ^M when i-searching. ^J now terminates + the search without accepting the line. ^M terminates the search + and accepts the line, executing the command + +examples/loadables/sprintf.c + - new `sprintf' builtin: sprintf var format [args...] + +lib/readline/readline.c + - added a line in _rl_dispatch that sets _rl_suppress_redisplay if + the function is rl_insert and there is input available + + 6/27 + ---- +builtins/getopts.def + - new function, getopts_bind_variable(), used when assigning a value + to the user-supplied variable passed to getopts(). It makes sure + that that variable name is legal and prints an error message if it + is not + +builtins/getopt.c + - don't increment sh_optind until after we've checked whether or not + the current option character appears in the list of options passed + to getopts by the user + + 6/28 + ---- +variables.c + - added a new parameter to print_var_value: QUOTE. If it's non-zero + and the variable's value contains shell metacharacters, quote the + value so it can be read back in + +variables.h + - changed extern declaration for print_var_value + +siglist.h + - if SYS_SIGLIST_DECLARED is not defined, but HAVE_UNDER_SYS_SIGLIST + is, only declare sys_siglist as extern char *sys_siglist[] if + sys_siglist is not `#define'd + +parse.y + - make sure a reserved word is acceptable before returning `}' as + a token from special_case_tokens, even if the token read so far + is "}" + - make reset_parser set allow_open_brace to 0 + + 7/1 + --- +test.c + - fixed binop to not try to read s[3] if s[2] == '\0'. There are + no one-character binary operators that begin with `-' + +variables.c + - fixed kill_all_local_variables to do nothing if variable_context + is >= local_variable_stack_size (indicating that we do have some + local variables, but not at this level of function nesting, and + we are beyond the end of the array allocated the last time we + had local variables) + + 7/2 + --- +execute_cmd.c + - non-interactive shells in posix mode should exit if the variable + in a for command is not a valid identifier. This should really + be caught by the parser + - non-interactive shells in posix mode should exit if a function + name is not a valid identifier. This should also be caught by + the parser + + 7/3 + --- +jobs.c + - non-interactive shells should ignore stopped children, so + waitchld() should set waitpid_flags to WUNTRACED only if the + shell is interactive and it's not a subshell environment + +lib/readline/signals.c + - if not being compiled as part of the shell, readline should + catch SIGTERM and clean up + +shell.c + - change to isnetconn: on Solaris 2.5, getpeername() can return + EINVAL rather than ENOTSOCK if the fd passed as the first + argument is not a socket + + 7/5 + --- +lib/readline/complete.c + - new variable, available to library users, to inhibit completion + and cause the completion character to be inserted into the + line with self-insert: rl_inhibit_completion. Set to 0 by default. + +lib/readline/readline.h + - extern declaration for rl_inhibit_completion + +lib/readline/doc/rltech.texinfo + - documented rl_inhibit_completion + +lib/readline/bind.c + - new readline user variable: disable-completion. This provides + users a way to toggle the value of rl_inhibit_completion + +doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo + - documented disable-completion variable + +lib/readline/doc/Makefile + - added `html' target to create html from rlman.texinfo and + hist.texinfo + + 7/8 + --- +builtins/cd.def + - only try cd spelling correction if the shell is currently + interactive, regardless of value of `cdspell' option + +lib/posixheaders/alloca.h + - AIX 4.2 needs `#pragma alloca' if gcc is not being used + + 7/9 + --- +builtins/getopts.def + - return EXECUTION_FAILURE from getopts if it's trying to assign + to a read-only variable + - reset sh_badopt to zero in getopts_reset() + +builtins/getopt.c + - new variable, sh_badopt, set to 1 if we find an illegal option + - do the increment of sh_optind if sh_badopt is non-zero and we're + at the end of the option string at the beginning of sh_getopt(). + The increment is deferred until the next call so $OPTIND is + correct + +builtins/getopt.h + - extern declaration of sh_badopt + + 7/10 + ---- +Makefile.in + - don't pass ALLOCA_SOURCE or ALLOCA_OBJECT to the make in lib/malloc + - don't make libmalloc.a depend on ALLOCA_DEP -- it causes some + compilers to build alloca.o in the top directory, and if ALLOCA + is not defined, makes the malloc library depend on a directory + +aclocal.m4 + - some small changes to make the output look better + +memalloc.h + - made some small changes suggested by the autoconf documentation + + 7/11 + ---- +parse.y + - swapped meanings of \h and \H in prompt_string_decode for + bash-1.14.6 compatibility + +doc/{bash.{1,html},bashref.texi} + - updated prompt string decoding section with swap of \h and \H + +general.c + - print_timeval and print_time_in_hz now accept a FILE * as the + first argument, so `times' can print to stdout while `time' + prints to stderr + +execute_cmd.c + - changed time_command to print the timing statistics to stderr + +builtins/times.def + - added the FILE * argument to the calls to print_timeval and + print_time_in_hz + +support/texi2html + - upgraded to version 1.50 + +error.c + - include bashhist.h if HISTORY is defined for declarations of + last_history_line() and remember_on_history + +lib/glob/glob.c + - add a `#pragma alloca' as the first thing in the file if we're + not using gcc and _AIX is defined + +lib/posixheaders/memalloc.h + - remove the `#pragma alloca' stuff; it is done in the C source + files now, to avoid problems with other AIX header file + declarations + + 7/12 + ---- +lib/readline/rltty.c + - some changes to work around AIX 4.2 bugs (sometimes OPOST is unset + in termios, sometimes FLUSHO is inexplicably set in termios, etc.) + + 7/15 + ---- +lib/readline/rltty.c + - make SETATTR use TCSADRAIN on POSIX machines. This setting is + supposed to be used for changes that affect output + +[bash-2.0-alpha4 released] + + 7/16 + ---- +trap.c + - changed reset_or_restore_signal_handlers to honor traps before + special signals, so that `trap "" 2' works right and causes + children to ignore SIGINT + +locale.c + - added lc_all variable to track the value of LC_ALL + - added new functions: set_default_locale_vars, set_locale_var, + set_lang, get_locale_var, removed get_current_messages_locale + +subst.h + - added extern declaration for sv_locale + +subst.c + - LC_ALL, LC_CTYPE, LC_MESSAGES, and LANG are now special variables; + sv_locale() is called when they are assigned a value + +shell.c + - call set_default_locale_vars after initializing the shell variables + in main(), so LC_CTYPE and LC_MESSAGES (if present) have values + - shell.c does not need to include + +general.c + - changed print_timeval and print_time_in_hz to format their output + as Posix.2 specifies for `time -p' if the new POSIX_TIME argument + is non-zero + +parse.y + - new grammar production: timespec, to handle `time' and `time -p' + - change to special_case_tokens so that -p after `time' returns + TIMEOPT + +execute_cmd.c + - set posix_time in time_command if the command's flags include + CMD_TIME_POSIX + - call print_timeval and print_time_in_hz with posix_time as + the new third argument + - use a space to separate the word (`real') and the time if we're + in posix mode. This is what POSIX.2 defines for `time -p' + +builtins/times.def + - call print_timeval and print_time_in_hz with 0 as the new third + argument + +command.h + - new flag: CMD_TIME_POSIX, used to handle `time -p' + +doc/{bash.{1,html},bashref.texi} + - documented `time -p' + + 7/17 + ---- +support/mkversion.c + - include `config.h' before any other include files + +parse.y + - initialize was_dollar to 0 in parse_matched_pair + +configure.in + - removed duplicate check for from call to + AC_HAVE_HEADERS + +sig.c + - include siglist.h so we can find out if it defines HAVE_SYS_SIGLIST + +siglist.h + - define HAVE_SYS_SIGLIST if we end up defining sys_siglist as + _sys_siglist (Solaris 2.[45]) + +siglist.c + - include "siglist.h" before testing whether or not HAVE_SYS_SIGLIST + is defined; it may be defined in there (Solaris 2.[45]) + + 7/19 + ---- +examples/misc/alias-conv.sh + - updated, now uses code from examples/functions/csh-compat to do + the alias conversion, uses `command' builtin in functions it + creates, does some substitution of csh special variables to + bash equivalents + +examples/misc/cshtobash + - a more ambitious script that attempts to convert csh aliases, + environment variables, and local variables to bash equivalents + + 7/22 + ---- +bashline.c + - added `:' to the set of completion word break characters so that + individual directories in $PATH assignments can be completed + +aclocal.m4 + - added a new macro, BASH_CC_WORKS, that aborts configuration if + ${CC} can't compile a simple program successfully + +configure.in + - call BASH_CC_WORKS before doing anything else + + 7/23 + ---- +execute_cmd.c + - fixed select_query to print the prompt ($PS3) to stderr + +support/bashbug.sh + - workaround for bug in SunOS 5.x /bin/sh that causes it to + not ignore interrupts while waiting for a foreground process + to exit + + 7/24 + ---- +general.c + - added new functions to decompose `timeval's and `clock_t's into + seconds and thousandths of seconds: timeval_to_secs and + clock_t_to_secs + - changed print_timeval and print_time_in_hz to call timeval_to_secs + and clock_t_to_secs, respectively + - removed no-longer-used third argument for print_timeval and + print_time_in_hz -- `time' output is now done in execute_cmd.c + +general.h + - new extern declarations for timeval_to_secs and clock_t_to_secs + +builtins/times.def + - changed calls to print_timeval and print_time_in_hz, removing the + no-longer-used third argument + +execute_cmd.c + - changed the way time_command prints its output: it now interprets + a format string, replacing several escape sequences prefixed with + a `%' with the real, user, and system times. There are options in + the format string to ask for the `long' format that `times' uses + as well as to specify the number of places after the decimal point, + and whether to output fractional seconds at all + - time_command now uses the value of the `TIMEFORMAT' variable, if + present, to format the timing output. This is flexible enough to + encompass the bash default, posix `time -p', BSD, and SV time + formats + + 7/25 + ---- +Makefile.in + - `make clean' should delete the files listed in $(CREATED_SUPPORT); + `make mostlyclean' should not + +doc/{bash.{1,html},bashref.texi} + - fixed an error in the description of the effect that setting and + unsetting GLOBIGNORE has on the setting of the `dotglob' option + +doc/bashref.texi + - updated the section listing the major differences between bash + and the SVR4.2 shell + +lib/readline/readline.c + - removed the setting of _rl_suppress_redisplay, since it doesn't + really do anything yet + +oslib.c + - new function get_clk_tck (void), returns the value of _SC_CLK_TCK + if sysconf(3) is available, otherwise returns the value of + CLOCKS_PER_SEC (default 60) + +general.c + - moved CLOCKS_PER_SEC defines to oslib.c + - changed clock_t_to_secs to call get_clk_tck once to get the + right value to use + +externs.h + - extern declaration for get_clk_tck + +execute_cmd.c + - changed print_formatted_time so that a `%' at the end of the string + is output literally + - changed print_formatted_time to output a newline after the + translated format string, so it does not need to be included in + the format + - changed BASH_TIMEFORMAT (the default time format) to have a leading + newline to match ksh93 + +configure.in + - use `shlicc2' on BSD/OS machines + + 7/26 + ---- +doc/bash.html + - major overhaul, cleaned up text, corrected some minor HTML errors + +variables.c + - call sv_optind and sv_opterr to initialize the getopts stuff in + initialize_shell_variables + + 7/29 + ---- +shell.c + - don't let maybe_execute_file try to read files that are not + `regular files' + + 7/30 + ---- +parse.y + - cast `string' in yy_string_get() to unsigned char * to avoid + sign extension bugs. For example, bash -c $'ls\377who' + + +builtins/reserved.def + - add help text for the `time' reserved word + - deleted description of `HISTCONTROL' + - added descriptions for HISTIGNORE, PWD, HOSTNAME, GLOBIGNORE, + MACHTYPE + + 7/31 + ---- +builtins/common.c + - parse_and_execute saves and restores the line number around + calls, and resets it to 0 when pushing the string onto the + input stack + +parse.y + - added code that parses `` within a double-quoted string as a + single word + + 8/6 + --- +configure.in, config.h.in + - look for `textdomain' as well as `gettext' for internationalization + +locale.c + - when LC_MESSAGES is set, call textdomain as well as setlocale + - new variable `default_domain', used to track the value of + $TEXTDOMAIN + +subst.c + - call sv_locale when TEXTDOMAIN changes + + 8/7 + --- +error.c + - new function, sys_error(), which prints a formatted string followed + by a colon and strerror(errno) to stderr + +error.h + - extern declaration for sys_error + +jobs.c, nojobs.c, input.c, execute_cmd.c, subst.c + - changes to use sys_error() + +[many files] + - changes to many of the literal strings in the code for consistency + and easier potential translation + + 8/8 + --- +parse.y + - new function debug_parser(int) to toggle the value of yydebug + if YYDEBUG != 0 + + 8/9 + --- +oslib.c + - don't use CLOCKS_PER_SEC, just try to get CLK_TCK (60 by default) + +bashline.c + - set saved_history_line_to_use to -1 when it's not going to be used + rather than 0. A value of 0 can be confused with the first + history line + +builtins/evalstring.c + - moved parse_and_execute and auxiliary functions here from + builtins/common.c + +builtins/evalfile.c + - moved maybe_execute_file here from shell.c + +Makefile.in, builtins/Makefile.in + - changes necessitated by the new files + + 8/12 + ---- +builtins/common.c + - fixed an off-by-one bug in single_quote that could make bash + run off the end of a string if it consisted entirely of single + quotes + + 8/13 + ---- +shell.c + - moved code from main() to a new function: open_shell_script + - don't try to fclose(default_input) if BUFFERED_INPUT is defined + - moved argument binding code out of two places in main() and + open_shell_script() to a new function: bind_args(). This takes + an additional argument telling whether to bind starting at $0 + or $1 + - moved the code that calls the with_input_from_* functions into + a new function: set_bash_input + - moved the normal shell command-line option parsing code out of + main() into a new function: parse_shell_options + - moved the long option parsing code out of main() into a new + function: parse_long_options() + +general.c + - new function: move_to_high_fd(fd), which tries to move FD to a + file descriptor close to the allowed maximum, returning the new + fd and closing the old one (or returning the old one if something + goes wrong) + +general.h + - new extern declaration for move_to_high_fd + +variables.c + - moved indirection_level_string() here from shell.c + +jobs.c + - change initialize_jobs to use move_to_high_fd() instead of the + inline code to do the same thing + + 8/14 + ---- +lib/readline/readline.c + - add `en_US.ISO8859-1' to the list of legal LANG values that turns + on readline's 8-bit mode + + 8/15 + ---- +builtins/evalfile.c + - combined source_file and maybe_execute_file into a new function + _evalfile(fname, flags), where the flags select the appropriate + behavior + +eval.c + - moved the functions that perform the read-eval loop here from + shell.c + +execute_cmd.c + - changed CPU calculation for printing timing statistics using + ideas and code from Deven Corzine (deven@ties.org) + +eval.c, builtins/evalstring.c + - make sure we dispose of global_command if set -n is on and the + shell is not interactive + + 8/16 + ---- +variables.c + - make a new array variable, BASH_VERSINFO, with version information: + + BASH_VERSINFO[0] = release (2) + BASH_VERSINFO[1] = version (00) + BASH_VERSINFO[2] = patch level (0) + BASH_VERSINFO[3] = build version (1058) + BASH_VERSINFO[4] = release status (beta1) + BASH_VERSINFO[5] = $MACHTYPE (sparc-sun-sunos4.1.4) + +doc/{bash.{1,html},bashref.texi} + - Documented BASH_VERSINFO + +configure.in, config.h.in + - look for bindtextdomain(), set HAVE_BINDTEXTDOMAIN if found + +subst.c + - call sv_locale if TEXTDOMAINDIR is set or changes + +locale.c + - handle TEXTDOMAINDIR in set_locale_var; call bindtextdomain if + it is present + +tests/array.tests + - added calls to egrep to filter out BASH_VERSINFO and PIPESTATUS, + which can vary from system to system + + 8/19 + ---- +shell.c + - moved line_buffer_stream from here to oslib.c, made it into a + replacement for setlinebuf() if that is not available + +externs.h + - extern declaration for setlinebuf() + +lib/readline/input.c + - in rl_gather_tyi, punt if chars_avail < 0 after checking input fd + + 8/20 + ---- +builtins/suspend.def + - send SIGSTOP instead of SIGTSTP + + 8/21 + ---- +builtins/colon.def + - added true and false as builtins (undocumented) + +CWRU/POSIX.NOTES, doc/bashref.texi + - note that process substitution is not available in posix mode + +bashintl.h + - new header file for internationalization, included by locale.c + + 8/22 + ---- +subst.c + - in command_substitute, set istring to NULL before trying to + make the pipe, so if that fails, the code at error_exit: + doesn't try to free it + +execute_cmd.c + - when executing a shell script without a leading `#!' internally, + and the shell is not interactive, close the fd to the script + we're reading. If this is called by the exec builtin, the shell + will not have forked, and the fd will not have been closed, even + though it's marked close-on-exec + - if subshell_argv is non-null, free its members (except 0) and + subshell_argv in shell_execve before reassigning it + - dispose of currently_executing_command before jumping back to + subshell_top_level + +builtins/hash.def + - use a sentinel variable so we only initialize the hash table + once in initialize_filename_hashing + +shell.c + - don't flush the filename hash table in shell_reinitialize + - free dollar_vars[0] in set_shell_name before assigning it + - don't fetch the current hostname more than once + - don't fetch the current user information more than once unless + the uid changes + +parse.y + - initialize_bash_input should free bash_input.name if it is + non-null before zeroing it + + 8/23 + ---- +aclocal.m4 + - changed BASH_CHECK_SOCKLIB: if -lsocket is present, check for + and cache the existence of -lnsl. Define LIBS appropriately + based on the values of the cache variables rather than relying + on the autoconf tests to do it + + 8/26 + ---- +parse.y + - fix up yy_readline_get and yy_stream_get to fix the sign + extension problem + +shell.c + - move the setjmp(top_level) that catches early SIGINTs to the + first statement in main() + +Makefile.in + - added a `strip' target to strip the binary + +[bash-2.0-beta1 frozen] + + 8/27 + ---- +parse.y + - replaced several static state variables with a single flags word: + parser_state + + 8/28 + ---- +parse.y + - in read_token_word, combined the ${...} case with the other + expansion cases -- the code was identical + - added code to handle ksh-style ((...)) -- equivalent to + `let "..."'. In fact, the above construct is translated internally + into `let "..."', so error messages output by the evaluator + will contain `let' + +expr.c + - changed evalerror to call internal_error so the name of the + shell script is prefixed to the message, if necessary + +Makefile.in + - changed RELSTATUS to `beta2' + +tests/{arith,new-exp}.{tests,right} + - changed the expected error message because of the change in format + of the arithmetic evaluation error messages in expr.c + +builtins/pushd.def + - changed pushd_builtin so `pushd -' is equivalent to `pushd $OLDPWD' + +externs.h + - changed the extern declaration for setlinebuf() to avoid having + to include stdio.h before externs.h everywhere + + 8/29 + ---- +error.c + - new function, parser_error, for use by parts of the parser that + don't want to call report_syntax_error + +error.h + - extern declaration for parser_error + +parse.y + - changed some parts of the parser to use parser_error + - made the ((...)) code #ifdef'd on DPAREN_ARITHMETIC + +shell.c + - added a line to the --help output saying to use `bashbug' to + report bugs + +configure.in + - added new option: --enable-dparen-arithmetic; it controls + the DPAREN_ARITHMETIC define in config.h + - changed $host_os check for SCO to only enable -DWAITPID_BROKEN + for sco3.2v5; all other SCO versions enable -DMUST_UNBLOCK_CHILD + +config.h.in + - added line for DPAREN_ARITHMETIC, modified by configure + +doc/{bash.{1,html},bashref.texi} + - documented new ((...)) command and new configuration option + +execute_cmd.c + - shell_execve should not try to close default_buffered_input unless + it is >= 0. Other code that closes it and deallocates the buffer + should set default_buffered_input to -1 + + 8/30 + ---- +configure.in + - more changes to LOCAL_CFLAGS for sco machines + +error.c + - changed parser_error to handle all cases of the shell being + interactive, not interactive, reading from a script, and reading + from some other file + +parse.y + - changed report_syntax_error to call parser_error for consistent + messages + +dispose_cmd.c + - change dispose_command to use programming_error instead of + report_error + +execute_cmd.c, input.c, general.c + - changed calls to report_error to internal_error, since we don't + want to possibly exit in any of those cases + + 9/3 + --- +input.c + - changed the `localbuf' type to `unsigned char' + +parse.y + - changed yy_stream_get to use feof to test for end of file when + not using getc_with_restart + + 9/6 + --- +config.h.top + - added a commented-out define for SYS_BASH_LOGOUT, which is a + system-wide .bash_logout file, run when a login shell exits + - added /sbin to STANDARD_UTILS_PATH + +builtins/exit.def + - added support for SYS_BASH_LOGOUT + + 9/10 + ---- +lib/readline/{{chardefs,histlib}.h,{bind,histexpand,readline,util,vi_mode}.c} + - changed to_upper to _rl_to_upper and to_lower to _rl_to_lower + - changed digit_value to _rl_digit_value + - changed digit_p to _rl_digit_p + - changed uppercase_p and lowercase_p to _rl_uppercase_p and + _rl_lowercase_p respectively + - changed pure_alphabetic to _rl_pure_alphabetic + +support/zecho.c + - new file, implements a bare-bones echo (no -n, no \-escapes), + to be used by tests + +tests/rhs-exp.tests + - changed calls to echo to use recho to avoid errors when bash is + configured with --enable-usg-echo-default + +tests/more-exp.tests + - changed some calls to echo to use zecho to avoid errors when bash + is configured with --enable-usg-echo-default + + 9/11 + ---- +lib/readline/histexpand.c + - fixed a possible off-by-one error in history_expand_internal when + deciding whether or not to reallocate `result' + +expr.c + - fixed expcond() so that an assignment may be supplied as the + token after the `?' + - illegal bases now cause an evaluation error + - multiple base specifications now cause an evaluation error + +tests/arith.tests + - added more tests for conditional operator and associativity + +tests/{run-heredoc,heredoc.{tests,right}} + - new set of tests for here-documents + +builtins/common.c + - print out the name returned by get_name_for_error in + builtin_error() + +subst.c + - set this_command_name to NULL before processing command-line + assignment statements so arithmetic evaluation errors don't + print garbage + - according to POSIX.2, echo ${foo?$x} should print the expanded + value of $x, even when it doesn't expand into anything + + 9/12 + ---- +shell.c + - changed the execution of startup files so that $ENV is never + run by a non-interactive shell and an interactive shell begun + as `sh' reads and executes $ENV, as posix specifies + +doc/{bash.{1,html},bashref.texi} + - updated description of startup file behavior + +doc/Makefile.in + - make sure references to bashref.texi are preceded by $(srcdir)/ + so we can build the documentation in another directory just by + typing `make'; e.g. after giving configure the --srcdir option + +subst.c + - change to array_remove_pattern to avoid evaluating the `param' + part of the ${param#word} spec twice when doing things like + echo ${A[x=(i+=1)]#${A[y=(i+=2)]}} + + 9/13 + ---- +builtins/bashgetopt.c + - fixed a problem with `;' option specifier (optional argument) + +support/config.{sub,guess} + - added cases to recognize CRAY C90 and T90 + +builtins/ulimit.def + - rewritten almost from scratch to use internal_getopt and to not + mask the return value from getrlimit/setrlimit, and to make it + easier to maintain + - added `-l' option for systems with RLIMIT_MEMLOCK (4.4 BSD) + +doc/{bash.{1,html},bashref.texi} + - documented new `-l' option to `ulimit' + + 9/24 + ---- +parse.y + - added `in' to the list of tokens that should not be followed by + a semicolon when combining history lines + - removed the special-case code in history_delimiting_chars that + tried to be smart about `()' + + 9/25 + ---- +print_cmd.c + - fixes to print_group_command from Andreas Schwab + - rewrote indent() to use a single malloced string for the spaces + to print, rather than calling cprintf multiple times + +shell.c + - make sure to set the strings in current_user to NULL after freeing + their contents in uidget(). + +parse.y + - make sure decode_prompt_string quotes the values inserted by the + \w and \W escape sequences using backslashes if the string will be + expanded later because promptvars is set + +support/mkdirs + - removed leading `^' from regular expressions to be matched by + `expr' on the advice of meyering@appaloosa.asic.sc.ti.com + + 9/26 + ---- +parse.y + - added a few more possible flag values for parser_state + - changed history_delimiting_chars to not add a semicolon after a + right paren if we're parsing a case statement + + 9/27 + ---- +builtins/ulimit.def + - a few minor cleanups + + 10/1 + ---- +builtins/trap.def + - make sure first_arg is non-empty before calling signal_object_p() + +[bash-2.0-beta2 frozen] + + 10/2 + ---- +bashintl.h + - if we have setlocale(), but don't have a definition for LC_ALL, + undefine HAVE_SETLOCALE + +configure.in + - set LOCAL_LDFLAGS on AIX 4.2 to allow dynamic loading of builtins + +builtins/enable.def + - use correct flags for AIX 4.2 in dlopen call if _AIX is defined + +examples/loadables/Makefile + - add sample commands for AIX 4.2 + + 10/3 + ---- +variables.c + - new functions: merge_temporary_env(), merge_builtin_env(), to + take temporary_env and builtin_env, respectively, and create + shell variables from them + +variables.h + - new extern declarations for merge_temporary_env() and + merge_builtin_env() + +execute_cmd.c + - if variable assignments preceds a posix special builtin, and the + shell is in posix mode, those assignments should persist in the + shell environment after the builtin completes + +doc/bashref.texi + - modified description of what's changed by posix mode to include + the persistance of assignment statements preceding special builtins + +doc/mkposix + - new script to create CWRU/POSIX.NOTES directly from the `Bash + POSIX Mode' node of bashref.texi, like INSTALL is created + + 10/4 + ---- +lib/{malloc,glob,readline}/Makefile.in, builtins/Makefile.in + - don't have autoconf substitute LOCAL_CFLAGS into the CFLAGS + assignment so people on SCO 3.2v[45] can still build with + NO_MEMSCRAMBLE even when they run `make CFLAGS=...' + +test.c + - renamed eaccess() to test_eaccess() to avoid conflict with SCO + +config.h.bot + - #undef HAVE_GETCWD if GETCWD_BROKEN is defined, so we use the + replacement in getcwd.c + +general.c + - fixed a small memory leak in full_pathname that occurs if + getcwd() returns NULL + +oslib.c + - new constant string variable: bash_getcwd_errstr, to use when + getcwd() returns NULL + +{general,jobs}.c, parse.y, builtins/{cd.def,common.c} + - change calls to getwd() to use getcwd() instead + +general.c, builtins/common.c, builtins/cd.def + - changed error behavior when getcwd() returns NULL to use + bash_getcwd_errstr, sys_error(), and strerror(errno) where + appropriate + +sig.c + - change a couple of calls to signal to set_signal_handler + +aclocal.m4 + - added definitions of _popen and _pclose to the BASH_FUNC_GETCWD + macro + +configure.in + - added -DPATH_MAX=1024 to LOCAL_CFLAGS for sco3.2v[45] on the + advice of + - removed check for getwd(3) + +externs.h + - removed extern declaration for getwd(), added extern declaration + for getcwd() if HAVE_GETCWD is not defined + +oslib.c + - removed definition of getwd(); it is no longer used + +lib/readline/rltty.c + - changed SETATTR macro for SCO POSIX systems to call tcsetattr + with TCSANOW, on advice of + + 10/7 + ---- +support/mkdirs + - slight change to work around a bug in the HP-UX `expr' + + 10/8 + ---- +lib/readline/vi_mode.c + - changes so that the text inserted with an `i' command is available + to be reinserted with `.' + +examples/functions/autoload.v2 + - new implementation: uses arrays, keeps a list of autoloaded + functions, allows autoloaded functions to be removed, allows + autoloaded functions to be listed + +execute_cmd.c + - when freeing the members of subshell_argv in shell_execve(), free + only the members up to subshell_argc + + 10/9 + ---- +configure.in + - replaced calls to AC_HAVE_FUNCS with AC_CHECK_FUNCS + - replaced calls to AC_FUNC_CHECK with AC_CHECK_FUNC + - replaced calls to AC_HAVE_HEADERS with AC_CHECK_HEADERS + - added additional code to check for libintl.{a,so} for the + internationalization functions if bindtextdomain is not found + in libc + - define HAVE_WAIT3 if AC_FUNC_CHECK(wait3,...) succeeds, rather + than HAVE_FUNC_WAIT3, which is not used in the source + - added a call to AC_FUNC_STRCOLL to check for the presence of a + working strcoll(3) + +config.h.in + - removed HAVE_FUNC_WAIT3 + - added HAVE_STRCOLL + +variables.c, stringlib.c + - move sort_char_array from variables.c to stringlib.c + +variables.h, externs.h + - move extern declaration of sort_char_array from variables.h to + externs.h + +variables.c + - don't sort the exported environment, even when we're not in + posix mode + +stringlib.c + - changed qsort_string_compare to use strcoll(3) if it is available + (HAVE_STRCOLL is defined). This means that the results of glob + expansions are now sorted in the per-locale collation order + +locale.c + - track the value of $LC_COLLATE and call setlocale(LC_COLLATE,...) + when it changes. Also, set its default value + +subst.c + - LC_COLLATE is now a special variable; call sv_locale when it is + assigned to or unset + +lib/readline/util.c + - move compare_strings here from complete.c; renamed it + _rl_qsort_string_compare; made it use strcoll(3) if it's + available; made it global so other library files can use it + +lib/readline/complete.c + - use _rl_qsort_string_compare instead of static compare_strings. + This means that completions are now sorted in a locale-specific + collation order + +lib/readline/funmap.c + - removed static declaration of qsort_string_compare; qsort now + uses _rl_qsort_string_compare instead + +oslib.c + - rewrote stricmp, strnicmp; renamed them strcasecmp and + strncasecmp, since they're only compiled in if HAVE_STRCASECMP + is not defined + +externs.h + - removed extern declarations of strnicmp, stricmp, replacing them + with declarations of strcasecmp and strncasecmp if HAVE_STRCASECMP + is not defined; removed #defines of stricmp and strnicmp to + strcasecmp and strncasecmp + +trap.c + - changed calls to stricmp to direct calls to strcasecmp + +Makefile.in + - bumped RELSTATUS to `beta3' + +doc/bash.{1,html} + - added mention of LC_COLLATE + +doc/bashref.texi + - removed item about sorting environment from the section on posix + mode + + 10/16 + ----- +subst.c + - fixed array_length_reference to return 0 for an unbound variable + and 1 for a variable that is not an array + +examples/scripts.v2/cdhist.bash + - package with functions to replace cd and maintain a cd directory + stack + +examples/scripts.v2/pmtop + - a `poor man's top' for SunOS 4.x and BSD + +examples/scripts.v2/bashrand + - a script to return a random number within a specified range, with + an optional seed + +examples/scripts/zprintf + - printf(1) replacement that uses gawk to do the output + +doc/{bash.{1,html},bashref.texi}, lib/readline/doc/hsuser.texinfo + - several small corrections + + 10/17 + ----- +variables.c + - changed the calls to list_string_with_quotes and then + expand_words_no_vars in assign_array_var_from_string to a single + call to expand_string. This behaves more rationally, and closer + to ksh93 + +subst.c + - commented out list_string_with_quotes -- it is no longer used + +lib/readline/terminal.c + - new function, _rl_set_screen_size(int rows, int cols), to set + readline's idea of the screen size + +jobs.c, nojobs.c + - make sure that window size changes are propagated back down to + the readline code, by calling _rl_set_screen_size with the + new sizes. This happens when bash gets a SIGWINCH or if + `checkwinsize' is set with `shopt' + + 10/18 + ----- +support/config.guess + - added code to recognize the various NetBSD ports + +lib/readline/signals.c + - don't install a handler for SIGALRM if the containing application + has installed a handler with SA_RESTART as part of the flags. + This is in effect, obviously, only for systems with POSIX signals. + +subst.c + - make parameter_brace_expand_length expand variables in a double- + quoted environment so it takes spaces in the variable value into + account + + 10/21 + ----- +command.h + - flags for possible values of subshell_environment telling what + caused the subshell + +builtins/command.def + - the `command' builtin should not be setting CMD_NO_FORK at all; + it doesn't know enough about the execution context to do so + +execute_cmd.c, subst.c + - set subshell_environment to one of the values in command.h rather + than to `1', so we know what kind of subshell it is (just for + informational purposes; nothing actually uses this yet) + + + 10/22 + ----- +execute_cmd.c + - just return EXECUTION_SUCCESS immediately in execute_command_internal + if read_but_dont_execute is set + + 10/23 + ----- +general.c + - fixed check_dev_tty to return immediately if ttyname() returns NULL + +builtins/suspend.def + - SIGSTOP cannot be caught, so there's no reason to try to do so + +examples/loadables/{finfo,pathchk,print}.c + - minor fixes + +pathexp.c + - fix to off-by-one error in setup_ignore_patterns + +jobs.c + - try to set the tty pgrp to our pgrp if we change our pgrp to our + pid and become a process group leader. If it doesn't work, + reset our pgrp to what it was originally and disable job control + +aclocal.m4 + - new test, BASH_STRUCT_TERMIO_LDISC, to test for a c_line member + of struct termio + +config.h.in + - add a new preprocessor variable, TERMIO_LDISC, undefined by default + +configure.in + - call BASH_STRUCT_TERMIO_LDISC after BASH_STRUCT_TERMIOS_LDISC + + 10/25 + ----- +lib/readline/terminal.c + - increased the size of the termcap buffers to 4096 + + 10/29 + ----- +parse.y + - include memalloc.h for uses of alloca that the code in the + generated bison parser does not catch (e.g., HP-UX 10.10) + +aclocal.m4 + - new test, BASH_KERNEL_RLIMIT_CHECK, to check whether a given + HP-UX machine needs _KERNEL defined for the RLIMIT_* defines in + (9.05, 10.01 yes, 10.10,10.20 no) + +configure.in + - call BASH_KERNEL_RLIMIT_CHECK if $host_os begins with `hpux' + +config.h.in + - new #undef for RLIMIT_NEEDS_KERNEL + +builtins/ulimit.def + - only define _KERNEL before including if HPUX + and RLIMIT_NEEDS_KERNEL are both defined + +[bash-2.0-beta3 frozen] + + 11/1 + ---- +locale.c + - if setting LC_ALL to a null value (as is done when `unset LC_ALL' + is run), call setlocale() to set LC_ALL back to default_locale + +lib/readline/readline.c + - moved i18n code from here to nls.c + +lib/readline/Makefile.in, Makefile.in + - new readline library member, nls.c + +lib/readline/nls.c + - new file, with internationalization code from readline.c (such as + it is) + - updated legal_lang_values to just contain a list of codesets + - added code modified from a diff sent by Ulrich Drepper + to parse a locale specification and isolate + and normalize the codeset part, for checking against the values + in legal_lang_values + + 11/4 + ---- +builtins/setattr.def, locale.c, aclocal.m4, oslib.c + - minor cleanups + + 11/5 + ---- +lib/readline/complete.c, test.c, trap.c + - more minor cleanups + + 11/6 + ---- +parse.y + - added a `flags' parameter to parse_matched_pair, currently unused + + 11/7 + ---- +configure.in, config.h.in + - add a check for time_t, defaulting to `long' if it's not + defined in + +builtins/fc.def + - use `time_t *' instead of `long *' in call to time() + + 11/8 + ---- +configure.in + - removed check for getpwent in libsun.a; it's not necessary for + recent versions of irix (irix[56].?) + + 11/11 + ----- +test.c + - used `&&' where `||' was needed when testing if HAVE_LSTAT and + S_IFLNK are both defined + +[bash-2.0-beta3 net release version frozen] + + 11/12 + ----- +builtins/getopt.c + - when sh_getopt detects that a required argument is not present, + set sh_optarg to "" so that getopts does the right thing + + 11/15 + ----- +builtins/ulimit.c + - made the default (without -H or -S) report the soft limit and set + both soft and hard limits (like sh and ksh) + +expr.c + - changed the maximum base in base#num constants to 64, implemented + just like ksh93 + +doc/{bash.{1,html},bashref.texi} + - updated description of ulimit builtin to new behavior when + neither -H nor -S is supplied + - updated arithmetic evaluation section with new maximum base and + explanation of how numbers between 10 and 63 are represented + +lib/readline/vi_mode.c + - in rl_vi_done_inserting, don't try to save the text entered while + in insert mode unless rl_undo_list is non-null (indicating that + there was actually some text to be saved) + + 11/19 + ----- +lib/readline/tcap.h + - new file, for termcap library definitions. Uses if + it is available + +lib/readline/rldefs.h + - remove inclusion of termcap.h; now included in tcap.h + +lib/readline/{terminal,display,readline}.c + - include tcap.h + +lib/readline/Makefile.in + - update dependencies to include tcap.h + + 11/21 + ----- +lib/readline/complete.c + - broke the code that computes the lcd of the list of completion + matches out into a separate function, compute_lcd_of_matches() + +lib/readline/complete.c + - call compute_lcd_of_matches after calling the application-specific + completion ignore function, since it may have eliminated some + names from the match list + +builtins/cd.def + - replaced instances of MAXNAMLEN in the spelling correction code + with PATH_MAX + +lib/readline/terminal.c + - new termcap capabilities: kh (sent by Home key) and kH (sent by + End key) automatically bound to beginning-of-line and end-of-line + respectively in emacs_standard and vi_movement maps + +mailcheck.c + - fix to remember_mail_dates so any message following the + filename is saved correctly + + 11/22 + ----- +lib/readline/bind.c + - fixed extern declaration of _rl_parsing_coditionalized_out + to match declaration in readline.c + + 11/25 + ----- +doc/{bash.{1,html},bashref.texi} + - fixed a gross documentation error in the description of + ${parameter:offset:length} (offset and length were transposed) + - slight changes to the description of output redirection + +subst.c + - new function, quoted_substring, to return substrings of variables + when the expression is within double quotes and the value has + CTLESC characters embedded within it. Called by + parameter_brace_substring + - get_var_and_type should return VT_POSPARMS if `*' is passed as + the variable name + - added a new first parameter for pos_params -- the variable name + - changed pos_params to obey the rules for "$*" wrt using the + first character of IFS as the separator in the result + - if an unquoted $* or $@ is expanded, call quote_escapes on the + result to protect any special characters from inadvertently + causing quoting + + 12/3 + ---- +builtins/ulimit.def + - corrected a misspelling of `unlimited' + - added support for linux RLIMIT_AS resource limit for -v option + and changed the block multiplier to 1024 if we have RLIMIT_VMEM + or RLIMIT_AS + + 12/5 + ---- +lib/readline/readline.c + - fix rl_insert to handle a count of exactly 1024 + +shell.c + - new function: unbind_args(), which removes all the positional + parameters. Just calls remember_args(NULL, 1) + +execute_cmd.c + - call unbind_args when executing a subshell, after setting up + subshell_argX + +bashintl.h + - include if HAVE_LIBINTL_H defined + +config.h.in + - add HAVE_LIBINTL_H define + +configure.in + - add call to AC_CHECK_HEADERS for libintl.h + +doc/Makefile.in + - added infodir and various mandir defines for completeness + +Makefile.in + - changed some of the *dir defines to use the autoconf values + (e.g., bindir = @bindir@) + - changed manroot to mandir, removed old mandir and manext variables + - added `manpfx' variable; should be either `man' or `cat' + + 12/6 + ---- +lib/readline/readline.c + - fixed rl_digit_loop so it once again displays the argument count + as it's being entered (added calls to _rl_save_prompt and + _rl_restore_prompt) + + 12/7 + ---- +support/config.guess + - recognize netbsd/vax + - recognize openbsd on all supported platforms + - recognize tenon's machten running on powerpc and macintosh + + 12/9 + ---- +support/config.guess + - added all sorts of systems from config.guess distributed with + autoconf-2.12 + + 12/10 + ----- +subst.c + - new function quoted_strchr(); does the same thing as strchr but + honors shell backslash and CTLESC quoting conventions + - parameter_brace_patsub now calls quoted_strchr + + 12/11 + ----- +shell.c + - if the shell is named `-su', run the normal login shell startup + files, even if the shell is not interactive. This handles the + case of `su - username -c command' compatibly + +lib/readline/readline.c + - minor change to rl_digit_loop so that M-- and M--1 are equivalent, + as the prompt for digit arguments has always implied + +lib/malloc/malloc.c + - added definitions of calloc() and cfree(), compiled in unless + NO_CALLOC is defined to cpp + + + 12/16 + ----- +parse.y + - protect uses of history_expansion_inhibited with #ifdef + BANG_HISTORY + +[bash-2.0-release candidate frozen] + +builtins/common.c + - changed backslash_quote to quote a tilde if it's the first + character in the string + + 12/17 + ----- +aclocal.m4 + - changed BASH_CC_WORKS to provide a cross-compiling default for + better error messages + +configure.in + - generated configure using autoconf-2.12 + - changed the default value of CFLAGS to `-g -O2' + + 12/18 + ----- +aclocal.m4 + - look for /var/spool/mail before /usr/spool/mail when checking + for the default mail directory + +jobs.c, builtins/shopt.def + - fixed a couple of `macro replacement within a string literal' + problems + +Makefile.in + - removed `realclean' target + +shell.c + - changed the first line ouput by bash --version to conform to + the latest GNU coding standards (replace space between version + and machtype with a hyphen) + + 12/19 + ----- +execute_cmd.c + - when looking at the debug trap in execute_function and + execute_command_internal, make sure it's trapped and not + ignored before trying to save the value of the trap string + + 12/20 + ----- +trap.c + - changed set_signal and ignore_signal to handle EXIT_TRAP and + DEBUG_TRAP specially, so we don't try to fetch signal handlers + or do other unnecessary things + + 12/22 + ----- +builtins/ulimit.def + - if the current euid is not 0, and we're trying to set the hard + limit of a resource to RLIM_INFINITY, set it to the current hard + limit to avoid error messages + +builtins/read.def + - fix for bug that caused core dump if line read had leading white + space and IFS was set to '' + +[bash-2.0-release frozen] + diff --git a/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v12 b/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v12 new file mode 100644 index 000000000..dc687d4d9 --- /dev/null +++ b/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v12 @@ -0,0 +1,10049 @@ + 12/23/1996 + ---------- +[bash-2.0 released] + + 12/27 + ----- +configure.in + - don't automatically use GNU malloc on FreeBSD, the builtin one + is supposed to be better (but doesn't have the debugging hooks) + +builtins/exec.def + - check that full_pathname(command) doesn't return NULL because of + inaccessible parent directories + +support/config.sub + - recognize OpenBSD + +execute_cmd.c + - broke the code that opens a file for output redirection when in + noclobber mode out into a separate function: noclobber_open(). + This tries to avoid race conditions and file replacement between + stat(2) and open(2) + +subst.c + - make sure pat_subst does not run off the end of its return + string when copying the unmatched portion of the input string + + 12/30 + ----- +doc/Makefile.in + - don't install readline.3 by default + +lib/tilde/tilde.c + - removed an unnecessary check for string[i] being non-null in + tilde_find_suffix + + 12/31 + ----- +support/config.{sub,guess} + - merged in changes from config.sub in autoconf-2.12 distribution + +lib/readline/readline.c + - in rl_newline, only call _rl_vi_done_inserting and _rl_vi_reset_last + if readline is currently in vi mode + +lib/readline/display.c + - corrected a misuse of inv_lbreaks where vis_lbreaks was wanted in + the code that decides whether the cursor is at the beginning of + an otherwise-empty line + + 1/2/1997 + -------- +support/bashbug.sh + - fixed a typo, thanks to eggert@twinsun.com + +aclocal.m4 + - new test, BASH_STRUCT_DIRENT_D_FILENO, testing for d_fileno member + of struct dirent + +configure.in + - call BASH_STRUCT_DIRENT_D_FILENO + +config.h.in + - new #define for STRUCT_DIRENT_HAS_D_FILENO + +lib/posixheaders/posixdir.h + - only define d_fileno as d_ino if STRUCT_DIRENT_HAS_D_INO is defined + and STRUCT_DIRENT_HAS_D_FILENO is not defined. This fixed the + problem of compiling getcwd.c on SunOS4.1.4 with cc + + 1/3 + --- +lib/readline/complete.c + - fix a memory-used-after-freed bug reported by Andreas Schwab + +configure.in + - call BASH_CHECK_SOCKLIB only if getpeername is not found in libc + (ac_cv_func_getpeername = no) + + 1/13 + ---- + +builtins/getopt.h + - change #define guard to _SH_GETOPT_H to avoid similar guards in + /usr/include/getopt.h (Dec OSF/1 4.x, for example) + +variables.h + - fix assign_array_from_string so that it rejects attempts to assign + to readonly variables + +subst.c + - fix verify_substring_values to handle offsets that are past the + end or before the beginning (in the case of a negative offset) + of the expanded variable value + + 1/14 + ---- +bashline.c + - fix a problem where any completion after a `cmd` command + substitution would inappropriately attempt command completion, + even if the previous command substitution was correctly closed + +builtins/evalstring.c + - unwind_protect remember_on_history even if the shell is not + interactive, since history can now be used in scripts, and + `source' will turn off interactive_shell before calling + parse_and_execute + +jobs.c + - new function get_job_by_pid(pid, block) to translate a pid to + a job number. The block argument says whether or not to block + SIGCHLD + +jobs.h + - new extern declaration for get_job_by_pid + +builtins/jobs.def + - call get_job_by_pid if an argument appears to be a pid rather + than a jobspec + +configure.in + - configure --without-gnu-malloc automatically on MachTen 4.x + +builtins/cd.def + - change to mindist() so that a best guess of `.' returns 3, + which means not reasonable + +lib/posixheaders/memalloc.h + - changed hpux_9 to __hpux, since the new config stuff doesn't + define hpux_9 + +subst.c + - fix parameter_brace_patsub to handle null patterns (doesn't + do anything) + +oslib.c + - slight change to bzero replacement + +support/bashbug.sh + - changed TEMP to be /tmp/bbug.$$ as a sop to systems with 14-char + file names + +doc/bashref.texi + - add note to POSIX Mode section that the output of `set' when + invoked without arguments is sorted when in POSIX mode + + 1/15 + ---- +support/recho.c + - a couple of changes prompted by a `gcc -Wall' + +subst.c + - changed ASSIGN_RETURN macro to use the do...while(0) idiom to + avoid problems with its multiple statements + +builtins/setattr.def + - a bad identifier given to readonly or export without an assignment + statement (e.g. `readonly a[5]') is an error, but not an assignment + error (i.e., return EXECUTION_FAILURE rather than EX_BADASSIGN) + +tests/{{array,new-exp}.,tilde-}tests + - added `set +o posix' at the beginning to disable POSIX mode, which + causes some of the tests to fail. Some systems (e.g. LINUX-FT), + set POSIXLY_CORRECT by default + +tests/test-tests + - added a warning if $UID is 0 to the effect that the test suite + should not be run as root + - worked around the `noread' and `nowrite' tests failing when run + as root + +test.c + - began removing the remains of the STANDALONE code, since test is + included in GNU shellutils + + 1/16 + ---- +lib/readline/{readline,display}.c + - a couple of slight changes to build on Win95 using djgpp (reported + by x-aes@telelogic.se) + +Makefile.in + - changed TERMCAP_LIBDIR to TERM_LIBDIR, so building the termcap + library (if necessary) should work now + +bashline.c + - new function: quote_word_break_characters(), to backslash-quote + characters in a filename that the readline completion code would + treat as word breaks + - change bash_quote_filename to call quote_word_break_characters if + the completion quoting style says to use backslashes + - add `:' to rl_filename_quote_characters, since it's part of + filename_word_break_characters + +lib/posixheaders/posixjmp.h + - new file, with half of bashjmp.h + - posixjmp.h and lib/readline/posixjmp.h are symlinks to this file + +bashjmp.h + - include "posixjmp.h" for possible redefinitions of setjmp/longjmp + and procenv_t + + 1/17 + ---- +shell.c + - bad options now cause the standard shell usage message (a subset + of what `bash --help' prints) to be displayed on stderr + +trap.c + - don't free the trap command for a DEBUG trap in + restore_default_signal if SIG_INPROGRESS is set -- there's already + a pointer saved to the old value in _run_trap_internal. This + makes bashdb run better, too + +examples/bashdb/bashdb.{pre,fns} + - a couple of minor fixes; it actually has a chance of working now + + 1/21 + ---- +config.h.in + - add a define for , HAVE_DLFCN_H + +configure.in + - look for , define HAVE_DLFCN_H if found + +builtins/enable.def + - include only if HAVE_DLFCN_H is defined + +lib/readline/display.c + - renamed clear_to_eol to _rl_clear_to_eol and made it global, so + other library files (readline.c) can use it + - new function _rl_clear_screen, to clear the screen with the right + termcap escape sequence + +lib/readline/readline.c + - call _rl_clear_to_eol and _rl_clear_screen instead of using tputs + - extern declarations for _rl_clear_to_eol and _rl_clear_screen + + 1/22 + ---- +mailcheck.c + - fixed a problem in make_default_mailpath() where a slash was not + added between the default mail directory and the username + + 1/23 + ---- +stringlib.c + - added a fourth parameter to ansicstr: the length of the returned + string + +externs.h + - changed declaration of ansicstr + +parse.y + - changed call to ansicstr -- saves a call to strlen + +builtins/echo.def + - changed call to ansicstr + - if do_v9 is non-zero, use putchar to output the string instead + of printf, since there may be embedded NULL characters + +doc/{bash.1,bashref.texi}, builtins/trap.def + - modified the `trap' documentation to make it clearer that trap + takes multiple signal specs as arguments + +jobs.c, nojobs.c, jobs.h + - renamed initialize_jobs to initialize_job_control, added an + argument (force) + +jobs.c + - set shell_tty to fileno(stderr) in initialize_job_control if + the shell is not interactive. This fixes the problem of bad + tty pgrps when monitor mode is turned on in a non-interactive + shell + +sig.c + - made initialize_terminating_signals do only that; moved the rest + of the code that used to be there into a new function: + initialize_shell_signals, which calls initialize_terminating_signals + if the shell is interactive + - initialize_terminating_signals is now extern + - made reset_terminating_signals return immediately if + termsigs_intitialized is zero, meaning that + initialize_terminating_signals has not been called + +sig.h + - new extern declaration for initialize_terminating_signals + +trap.c + - call initialize_terminating_signals from set_signal if sig is + EXIT_TRAP and the shell is not interactive. Since the terminating + signals do not need to be initialized until a trap on exit is + set, not doing that at startup should result in a speed increase + for scripts + +execute_cmd.c + - save and restore command->flags in time_command, so you can use + `time command' in a loop + + 1/24 + ---- +lib/readline/display.c + - fix redisplay code to wrap correctly if the prompt is longer than + the screen width (reported by bos@Eng.Sun.COM) + +lib/readline/undo.c + - don't include , it's not needed + +lib/readline/{util,readline}.c + - include "posixjmp.h" instead of + - readline_top_level is now a `procenv_t' instead of a `jmp_buf' + (now readline uses the correct posix semantics for preserving + the signal mask and other things across longjmp) + +parse.y + - fixes to push_string/pop_string to make them more general -- they + now can be used generally, instead of having to be associated + with an alias being expanded + - fixes to the parser so that it parses (( ls abc; ls def); ls ghi) + as a nested subshell command for backwards compatibility. Broke + the double-paren expression parsing off into a new function: + parse_arith_cmd, called from read_token when a `((' is seen. If + it looks like an arithmetic command, return `let' and set things + up so that the expression is returned as a double-quoted string + by the next call to read_token. If it's a nested subshell, push + the text we parsed onto the list of strings for later consumption + and return `(' + +lib/glob/glob.c + - fix glob_vector so it doesn't short-circuit checking a filename if + it starts with a `.' and the pattern starts with `\.' (if + noglob_dot_filenames is set). This makes `".junk2"*' match + `.junk2.txt' correctly + + 1/27 + ---- +support/bashbug.sh + - ask for confirmation before sending the bug report + +builtins/fc.def + - when editing and re-executing a multiline command, make sure + current_command_line_count is initialized and then incremented + for each line read from the file so that the lines added to + the history list by fc_replhist and fc_addhist obey the `lithist' + and `cmdhist' shopt options. Reported by tibbitts@pb.seflin.org + + 1/28 + ---- +lib/readline/readline.h + - added a couple of extern declarations for variables described in + the documentation but heretofore undeclared + +builtins/ulimit.def + - try to catch some classes of integer overflows before calling + set_limit + + 1/29 + ---- +parse.y + - push and pop a `(' delimiter while parsing a $(...) construct, so + the history code doesn't try to inappropriately add a `;' when + a newline appears in the `...' + +aclocal.m4 + - new macro, BASH_STRUCT_WINSIZE, which looks for `struct winsize' + in (or one of the files it includes) + +configure.in + - call BASH_STRUCT_WINSIZE + - slightly reorganized the calls to bash-specific macros + +config.h.in + - add an `#undef STRUCT_WINSIZE_IN_SYS_IOCTL' + +jobs.c, nojobs.c + - only look in sys/ptem.h for struct winsize if + STRUCT_WINSIZE_IN_SYS_IOCTL is not defined to cpp + + 1/30 + ---- +.{distribution,patchlevel} + - renamed to _{distribution,patchlevel} + +configure.in + - create a variable BASHVERS, from the contents of _distribution, + and a variable BASHPATCH, from the contents of _patchlevel, + (using m4 magic so we don't have to distribute .distribution + and .patchlevel) and substitute them into Makefile.in + +Makefile.in + - use Version and PatchLevel variables instead of the contents of + .distribution and .patchlevel, respectively. These are set by + configure + - removed `.machine' from targets and dependencies + +support/mkversion.sh + - new shell script to handle updating version.h, replaces mkversion.c + (which is now overkill) + +support/mkdist + - don't bother with writing .distribution and .patchlevel files, + since they're no longer distributed + +support/mknewvers.sh + - simple bash script to make new version files. It can increment + the major or minor version numbers or patchlevel, or take a + completely new version number (e.g., 2.01) as an argument + +doc/Makefile.in + - added support for the `install-info' command to update the info + directory file after installing bash.info + + 1/31 + ---- +builtins/help.def + - fix core dump with `help --' + +susbt.c + - make call_expand_word_internal obey the convention that if + expand_word_internal returns &expand_word_{fatal,error}, then + w->word has already been freed + - return &expand_word_fatal from expand_word_internal if the shell + is not interactive and `set -u' has been executed + +test.c, general.c + - moved group_member from test.c to general.c + +externs.h, general.h + - moved extern declaration of group_member from externs.h to general.h + +general.c + - broke the code that initializes the group array out into a new + function, initialize_group_array() + - initialize_group_array() now initializes an array even if the OS + does not have getgroups(). If it does not, an array with one + element (the real gid) is created + - call sysconf(_SC_NGROUPS_MAX) if sysconf is available and + _SC_NGROUPS_MAX is defined + - new function, char **get_group_list(int *), to return an array + of strings made from the groups list + +variables.c + - new dynamic array variable: GROUPS, expands to the group set as + obtained with getgroups() (or whatever initialize_group_array() + makes) + +doc/{bash.{1,html},bashref.texi} + - added description of GROUPS variable + +test/test-tests + - before modifying the setgid bit on /tmp/setgid, try to change its + group to ${GROUPS[0]} + + 2/3 + --- +aclocal.m4 + - new autconf macro, BASH_MISC_SPEED_T, to see if speed_t is defined + in + +configure.in + - call BASH_MISC_SPEED_T + +config.h.in + - add `#undef SPEED_T_IN_SYS_TYPES' + +lib/readline/tcap.h + - include `rltty.h' if HAVE_TERMCAP_H and __linux__ are defined, but + SPEED_T_IN_SYS_STYPES is not, before including + +support/mksignames.c, siglist.c + - add support for 4.4 BSD SIGLOST + +support/config.guess + - add support for recognizing QNX based on `uname' output + +Makefile.in + - make sure recho and zecho are compiled with the same set of CC + options as the rest of the sources + +lib/readline/bind.c + - change calls to rl_generic_bind to cast the third argument to + (char *) where necessary + +command.h + - two new flags: CMD_AMPERSAND (currently unused), and CMD_STDIN_REDIR, + which means that this command should have its standard input + redirected from /dev/null if there are not any explicit redirections + to stdin + +execute_cmd.c + - a redirection of type r_inputa_direction is no longer added at the + beginning of the redirection chain for an async command; + CMD_STDIN_REDIR is set in the flags instead + - new function: stdin_redirects: returns the number of redirections to + stdin in a chain of redirections + - new functions: async_redirect_stdin() to open /dev/null and make it + file descriptor 0 + - changes to make CMD_STDIN_REDIR propagate to all of the necessary + functions (like execute_simple_command) + - execute_disk command now takes the flags from simple_command rather + than just the CMD_NO_FORK flag as its last argument + - various places after make_child is executed (in the child) check for + CMD_STDIN_REDIRECT (and no stdin redirections or piping) and call + async_redirect_stdin + - stdin_redir is now global + +eval.c + - set stdin_redir to 0 just before calling execute_command so it + gets reset to a known value and doesn't persist across commands + + 2/4 + --- +builtins/ulimit.def + - add a stub function for ulimit(2) on systems without HAVE_RESOURCE + or HAVE_ULIMIT that just sets errno to EINVAL and returns -1 -- + QNX is one such system + +bashhist.c + - pre_process_line needs to protect all occurrences of hist_verify + with #ifdef READLINE + +builtins/shopt.def + - hist_verify needs to be protected with #ifdef READLINE, not + #ifdef HISTORY + + 2/5 + --- +support/config.{guess,sub}, configure.in + - chages to better support the Harris Night Hawk + +[many files] + - changes for things pointed out by gcc -Wall + +lib/glob/Makefile.in + - make sure -DSHELL is included in CCFLAGS so that globbing is + interruptible + +lib/malloc/malloc.c + - extern declaration for botch: if botch is #defined, it should be + the name of a void function + +configure.in,Makefile.in,builtins/Makefile.in, +lib/{glob,malloc,readline,tilde}/Makefile.in + - add a LOCAL_DEFS variable, substituted from configure into the + various Makefiles. It's set to -DSHELL, so that define gets + passed to all sub-makes without doing anything special + +lib/readline/readline.c + - change to rl_digit_loop to make it compatible with GNU emacs: + if a key bound to `universal-argument' is read after reading + some digits, it terminates the argument but is otherwise + ignored. This is how people can insert repeated digits + +doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo + - changed description of `universal-argument' to describe how + to terminate a numeric argument + + 2/6 + --- +jobs.c + - changed kill_pid to diddle the job and process data structures + if we're sending SIGCONT to a stopped job with `kill' so that + the shell knows the job is running again. ksh93 does this + + 2/7 + --- +unwind_prot.c + - changed bcopy to FASTCOPY + +builtins/enable.def + - changed pointer arithmetic in delete_builtin to just subtract + the head of the builtins list (shell_builtins) from a pointer + to the builtin to be deleted (b) to find its index in the list + on ANSI C systems + + 2/10 + ---- +lib/readline/bind.c + - when using old-style keynames to bind to a new-style macro, + pass an array of type (unsigned char *) to rl_macro_bind + +builtins/getopt.c + - change sh_getopt to return EOF if nextchar is empty or NULL + and sh_optind is greater than argc. This can happen if a + script mixes calls to `getopts' with calls to `shift' + + 2/11 + ---- +print_cmd.c + - fixed make_command_string_internal so that commands with the + CMD_TIME_POSIX flag set print `time -p' instead of `time' + - changed print_redirection_list so the here documents are + printed after all the other redirections, and followed by a + newline (rather than a possible semicolon) + - added a new variable, was_heredoc, to avoid adding a semicolon + at the beginning of an empty line after printing the heredoc + ending delimiter + +execute_cmd.c + - don't put the gnu_argv_flags into the environment any more; it's + proven to be a bad idea + +configure.in + - set LOCAL_CFLAGS to `-DSunOS5' on Solaris 5.5[.x] + +builtins/echo.def + - only call fflush() after printing each word on SunOS 5.5, since + that's the system with the bug that prompted its inclusion in + the first place + +support/mksignames.c + - added support for more system-specific signals from AIX 4.2, + changed initialization order so that system-specific signals + are done first, before the common signals + + 2/12 + ---- +execute_cmd.c + - broke the code that creates a file containing the text of a + here document out into a separate function: here_doc_to_fd + - create the temp file used for a here document with mode 600 + - open the temp file used for a here document with O_EXCL + +shell.h + - changed the uid members of struct user_info to be of type uid_t + and the gid members to be of type gid_t + +parse.y + - changed the type of the `type' argument to init_yy_io() to be + `enum stream_type', since that's what's always passed + +input.h + - changed the function prototype for init_yy_io so the third arg is + type `enum stream_type' + +externs.h + - added a prototype for getcwd, if HAVE_GETCWD is not defined + +builtins/umask.def + - changed all variables that are used as arguments to or save the + return value from umask(2) to be of type mode_t + - changed print_symbolic_umask to take an argument of type mode_t + + 2/13 + ---- +jobs.c + - if old_sigint_handler is set to SIG_DFL, as it will be in a script + without a trap on SIGINT installed, call termination_unwind_protect() + directly from waitchld() + + 2/14 + ---- +configure.in + - added a section before the call to BASH_CHECK_LIB_TERMCAP to + set a variable prefer_curses on some systems (AIX, for one) + +aclocal.m4 + - in BASH_CHECK_LIB_TERMCAP, don't return -ltermcap if $prefer_curses + is non-empty + +lib/readline/Makefile.in + - redid the dependencies + + 2/17 + ---- +hashlib.c, getcwd.c + - include `bashansi.h' instead of stdlib.h and string.h + +error.c, siglist.c, xmalloc.c, builtins/{common,evalfile,mkbuiltins,psize}.c, +builtins/{exec,exit,fg_bg,hash,history}.def + - include `bashtypes.h' instead of directly including + +builtins/fc.def + - include ../bashtypes.h and ../posixstat.h instead of bashtypes.h + and posixstat.h + +builtins/mkbuiltins.c + - include ../posixstat.h instead of + +general.h + - include `bashtypes.h' if RLIMTYPE is defined, so we can fetch + a definition of quad_t (or whatever) from before + using it in a function prototype + +Makefile.in, builtins/Makefile.in + - updated dependencies + + 2/18 + ---- +builtins/set.def + - new function, set_posix_mode, called when `set [-+]o posix' + or `shopt -[su] -o posix' is executed. It sets or unsets + $POSIXLY_CORRECT and calls sv_strict_posix + +subst.c + - in sv_strict_posix, call posix_readline_initialize only if + the shell is interactive (interactive_shell != 0) + +shell.c + - if we are acting like `sh', call posix_readline_initialize + if the shell is interactive + - moved the code that does posix.2 mode initialization after + interactive_shell is set, and call posix_readline_initialize + if interactive_shell is non-zero + +bashwait.h + - renamed to unionwait.h, since that is what it defines + +posixwait.h + - moved the POSIX 1003.1 job control defines here from jobs.h + +jobs.h + - include `posixwait.h' + + 2/19 + ---- +braces.c + - if SHELL is defined, pass the contents of new-style command + substitution through without expanding brace constructs between + the parens -- let the subshell do it + +subst.c + - when brace-expanding words, preserve the flags (word->flags) if + brace expansion does not change the word. This fixes the problem + of things like + + local -a avar=( ${PATH//: } ); + +bashline.c + - have shell_expand_line pass a copy of rl_line_buffer to expand_string + in case there are substitution errors and the string gets freed + + 2/20 + ---- +expr.c + - make sure that expland and explor set `lasttok' to LAND and LOR, + respectively, if they parse `&&' or `||'. This makes the + precedence code work right + +subst.c + - changes so that non-interactive shells exit immediately when a + parameter that is unset is referenced after `set -u' has been + executed causes the shell to exit immediately + + 2/21 + ---- +flags.c + - if `set -r' is executed, call maybe_make_restricted so that $PATH + and $SHELL are made read-only + +execute_cmd.c + - if `set -e' has been executed, and we're inverting a pipeline's + return status with `!', set CMD_IGNORE_RETURN so a failing + command does not inadvertently cause the shell to exit before + the exit status can be inverted. This is probably only a problem + with the `eval' builtin. + + 2/24 + ---- +builtins/hash.def + - add a missing argument of 0 to add_hashed_command + +builtins/kill.def + - job identifiers can be used in non-interactive shells as long as + job control has been turned on with `set -m' + +jobs.c + - we want to be notified of stopped jobs if job_control is non-zero, + even if the shell is not interactive + +execute_cmd.c + - make sure shell_execve returns EX_NOTFOUND if execve fails and + errno is set to ENOENT + - makes sure execute_builtin saves the temporary environment to + builtin_env for the `eval' builtin, since it can destroy the + temporary environment when it calls parse_and_execute + +bashhist.c + - new variable: hist_last_line_added, set to 1 if the last command + line was added to the history successfully as a separate entry. + Used by `history' and `fc' + + 2/25 + ---- +trap.c + - save line number before executing trap command, because + parse_and_execute resets it to 1 and the trap command might + want it + +execute_cmd.c + - change to executing_line_number to return trap_line_number if + the shell is currently running a trap + + 2/26 + ---- +execute_cmd.c + - change to time_command so that a `real' value of 0 does not + cause a divide-by-zero error when computing cpu percentage + +lib/readline/signals.c + - if MUST_REINSTALL_SIGHANDLERS is defined, reinstall the SIGWINCH + handler in rl_handle_sigwinch + +builtins/set.def + - `unset' now rejects attempts to unset names that are not valid + shell identifiers as errors + - add a description of `-o history' option to help text + +subst.c + - in parameter_brace_patsub, we want backslash removal done on + the replacement if (mflags & MATCH_QUOTED), since the code + in expand_word_internal will not do it. We need to call + expand_string_unsplit directly, since maybe_expand_string does + not do the right thing + + 2/28 + ---- +execute_cmd.c + - if execute_for_command finds that the iteration variable is readonly, + decrement loop_level before returning + +builtins/break.def + - if the break count is <= 0, display an error message and break out + of all loops + +builtins/command.def + - if PATH is unset, and we're using command -p, we don't want PATH + to be set to the empty string when `command' completes + +builtins/common.c + - POSIX.2 says `kill -l signum' prints the signal name without the + leading `SIG' prefix, so check for this_shell_builtin == kill_builtin + in display_signal_list + +builtins/getopts.def + - when invoked without any arguments, `getopts' now prints a usage + message + + 3/3 + --- +builtins/common.c + - add a second argument to get_numeric_arg: if non-zero, the shell + exits on a bad argument; if not, the shell jumps to top_level + with a DISCARD argument, which aborts the current command + +builtins/{break,exit,history,return,shift}.def + - change calls to get_numeric_argument + +lib/readline/funmap.c + - add `dump-macros' to list of bindable names + +lib/readline/readline.h + - added extern declaration for rl_prompt (it was apparently missing) + +lib/readline/readline.c + - new internal function, _rl_init_line_state, which sets rl_point + and rl_end to 0, sets the_line to point to _rl_line_buffer, and + clears the line + +lib/readline/callback.c + - if a user's callback function does not clear the line, clear it + for him by calling _rl_init_line_state + + 3/4 + --- +alias.c + - made the readline support functions #ifdef READLINE, so they're + not compiled into the shell unless readline is + +lib/readline/bind.c + - new function _rl_untranslate_macro_value, to expand meta-prefixes + and other special characters in a macro value for printing by + _rl_macro_dumper_internal + - call _rl_untranslate_macro_value in _rl_macro_dumper_internal to + get a printable version of the macro value + +lib/readline/readline.c + - new variable, rl_dispatching, set to 1 when we call a function + from _rl_dispatch + +lib/readline/readline.h + - extern declaration for rl_dispatching + +lib/readline/complete.c + - make sure S_ISCHR and S_ISBLK are defined before using them + +lib/readline/terminal.c + - add a new #define NEED_EXTERN_PC. Define this if the termcap + or curses libraries need `extern' before declarations of PC, + BC, and UP + +lib/readline/{readline,terminal,histfile}.c + - changes to compile on OS/2 with OS/2 `EMX' port of gcc, originally + sent by ilya@math.ohio-state.edu + +builtins/set.def + - fixed a bug in set_shellopts that caused the shell to crash if + there were no shell options set + + 3/5 + --- +configure.in,Makefile.in + - choose run-all or run-minimal as the test script based on whether + the --enable-minimal-config option was given to configure + +builtins/setattr.def + - fixed `export -p' and `readonly -p' so that they output `export' + or `readonly' when in POSIX mode, as POSIX.2 specifies + + 3/6 + --- +builtins/setattr.def + - make `readonly -a var=(...)' work just like `declare -ar var=(...)', + since the two logically mean the same + - `readonly -f' and `export -f' don't print the function definition + for each readonly or exported function, respectively, when in + POSIX mode + +jobs.c, nojobs.c + - don't report status for processes killed by SIGPIPE if + DONT_REPORT_SIGPIPE is defined + +config.h.top + - added a commented-out define for DONT_REPORT_SIGPIPE + +execute_cmd.c + - `time' can now be used to time background pipelines, and reports + the timing statistics when the pipeline completes + +[bash-2.01-alpha1 frozen] + + 3/12 + ---- +subst.c + - move the parent end of the pipe file descriptor used for process + substitution to a high, unused file descriptor to avoid clashes + with redirections performed explicitly by a script + +configure.in + - added a `--with-curses' argument so curses can be forcibly chosen + over libtermcap (some Unix versions ship lousy termcap databases) + +support/mkconffiles + - new script to create _distribution and _patchlevel from values + contained in `configure' + +doc/bashref.texi + - updated installation instructions + + 3/13 + ---- +general.c + - if `getgroups' returns 0, make sure we add the primary group id + as GROUPS[0]. + - if we have getgroups, and the primary gid is not in the array + getgroups returns, add it as group_array[0] and shuffle everything + up one element. This ensures that current_user.gid == group_array[0] + all the time + +tests/builtins.tests + - changes to avoid stray variables in environment when the shell + version of printenv is used with bash as /bin/sh, running the + `exec -c' tests. + + 3/14 + ---- +builtins/cd.def + - spelling correction is no longer enabled by default + +support/bashbug.sh + - if the shell's release status is alpha or beta, offer the option + of sending the bug report to the bash-testers mailing list as + well as to chet + + 3/17 + ---- +configure.in + - configure --without-gnu-malloc by default on *-sgi-irix6* because + their code needs 8-byte alignment + +support/bashbug.sh + - ``' needs to be quoted with a backslash in double-quoted strings + +aclocal.m4 + - slight changes to the strcoll test, since AIX 4.2 returns -1, 0, or + 1 from strcmp(3) but a numeric collation order difference from + strcoll(3) + + 3/18 + ---- +command.h + - new redirection error code: HEREDOC_REDIRECT + +execute_cmd.c + - return HEREDOC_REDIRECT from do_redirection_internal when + here_document_to_fd cannot create the temp file for a here document + - changed redirection_error to print a meaningful message when + here document temp file creation fails (HEREDOC_REDIRECT) + + 3/19 + ---- +subst.c + - changes to match_pattern_char: return 1 if the first char of the + pattern is `?' only if the string is non-null; just return 1 if + the first char of the pattern is `[' and the string is non-empty + rather than try to re-implement the brace matching code from fnmatch + +lib/glob/fnmatch.c + - some changes from glibc-2.0.1 posix/fnmatch.c + + 3/21 + ---- +variables.c + - only do the initialization of `ignoreeof' if the shell is + interactive + - reset values of $SHLVL > 1000 to 1 in adjust_shell_level, and + don't call itos, since we don't need its generality + - new function, initialize_shell_level, just calls adjust_shell_level + with argument of 1. If $SHLVL is unset, adjust_shell_level will + deal with it correctly + - change initialize_shell_variables to not malloc a copy of each + environment variable, just keep two pointers into the env string: + one for the name, one for the value + - broke the code that computes the value of $BASH out into a separate + function: get_bash_name + - get_bash_name special-cases shell_name with a `./' prefix when + initializing $BASH + - new function: set_home_var, sets $HOME to current_user.home_dir if + it's not already set, calling get_current_user_info if + current_user.home_dir is NULL + - new function: set_shell_var, sets $SHELL to current_user.shell if + it's not already set, calling get_current_user_info if + current_user.shell is NULL + - changed places that reference information in current_user to check + for NULL values of the member they're interested in and call + get_current_user_info if necessary + +shell.c + - moved the code that sets up the information in current_user that + comes from the password file into a new function, + get_current_user_info + - shell_initialize calls get_current_user_info only if the shell is + interactive + +externs.h + - new extern declaration for get_current_user_info(), so variables.c + can use it + + 3/24 + ---- +lib/tilde/tilde.c + - if SHELL is defined, user the current_user struct info to find + the user's home directory rather than calling getpwuid + + 3/25 + ---- +nojobs.c + - don't try to open /dev/tty when getting or setting the tty state + and window size; use shell_tty instead + - initialize shell_tty to standard error in initialize_job_control + - only fetch the tty state initially if the shell is interactive + +general.c + - open /dev/tty with the O_NONBLOCK flag + +variables.c + - changed all_vars so that it sorts its output all the time, not + just when in POSIX mode. This means that the output of `set' + and `export' will be sorted + +builtins/set.def + - in initialize_shell_options, only call parse_shellopts if we + inherited $SHELLOPTS from the environment + - make sure we call parse_shellopts from initialize_shell_options + with a copy of the value of SHELLOPTS, in case one of the functions + called while setting one of the variables modifies $SHELLOPTS + +lib/readline/readline.c + - make sure that digit arguments don't change the state of + rl_last_func + +support/printenv.c + - new file, printenv(1) clone, used to avoid environment variables + that might be set automatically when using printenv.sh + +lib/tilde/tilde.c + - if SHELL is defined, don't call getenv to get the value of $HOME, + call get_string_value () directly + + 3/26 + ---- +lib/readline/histexpand.c + - abstracted the `#ifdef SHELL' stuff that checked for special cases + that should not be history expanded ([!...], ${!...}) into a call + to a function that is the value of the + new history_inhibit_expansion_function variable + +lib/readline/history.h + - extern declaration for history_inhibit_expansion_function + +bashhist.c + - new function, bash_history_inhibit_expansion, which checks for + the special cases in which history expansion should be inhibited + - changes to the various history initialization functions to + set history_inhibit_expansion_function + +lib/readline/doc/hstech.texinfo + - documented history_inhibit_expansion_function + +lib/readline/shell.c + - new file, containing versions of the functions that are provided + by bash when readline is linked as part of bash + - new function: get_env_value(). If SHELL is defined, this calls + get_string_value(). If SHELL is not defined, this calls getenv() + +lib/readline/histexpand.c + - moved single_quote() to shell.c + +lib/readline/util.c + - moved savestring() to shell.c + +lib/readline/terminal.c + - moved set_lines_and_columns() to shell.c + +lib/readline/Makefile.in, Makefile.in + - added shell.c and shell.o to the appropriate variables that contain + the files comprising the readline and history libraries + +lib/readline/signals.c + - introduced two new cpp defines: HANDLE_JOB_SIGNALS and + HANDLE_SIGTERM. When HANDLE_JOB_SIGNALS is defined, SIGTSTP, + SIGTTIN, and SIGTTOU are caught and handled. When HANDLE_SIGTERM + is defined, SIGTERM is caught and handled. These are both + defined automatically if SHELL is not defined + +lib/readline/{bind,histfile,nls,readline,terminal}.c + - call get_env_value instead of getenv(). This should remove the + dependency on being able to redefine getenv() in oslib.c + +shell.c + - added a missing argument of -1 to the call to list_minus_o_opts. + Now `bash -o' lists all options, not just random ones depending + on what's on the stack + + 3/28 + ---- +builtins/ulimit.def + - change RLIM_INFINITY to the hard limit only if the hard limit is + greater than the current (soft) limit + +hashlib.c + - return immediately from flush_hash_table if the hash table passed + is NULL + + 4/1 + --- +shell.c + - remove call to initialize_filename_hashing -- initialize the hash + table the first time a hashed command has to be remembered + +hashcmd.c + - new file, with functions to perform filename hashing and lookup + taken from builtins/hash.def and builtins/common.c + - change to remember_filename -- call initialize_filename_hashing + if hashing_initialized is 0 + +hashcmd.h + - new file, mostly from builtins/hashcom.h, with extern function + declarations added + +execute_cmd.c, builtins/{hash,type}.def + - include hashcmd.h for hash function and type definitions + +builtins/{common.{c,h},hash.def} + - moved hashing functions and declarations to hashcmd.c/hashcmd.h + +Makefile.in, builtins/Makefile.in + - changed source and object file definitions and dependencies because + of addition of hashcmd.h and hashcmd.c + +builtins/hash.def + - return immediately from print_hashed_commands if hashed_commands + is empty, indicating that the hash table has not been initialized + + 4/2 + --- +lib/readline/bind.c + - fixed translation of ESC in rl_untranslate_keyseq and + rl_untranslate_macro_value + +lib/readline/{readline,kill}.c + - added an argument to _rl_fix_point telling it whether or not to + fix up the mark also; changed calls to _rl_fix_point to add the + appropriate argument + +Makefile.in + - changed the substitution delimiter in the `sed' commands that + create bashbug from `:' to `%' to avoid conflicts with options + containing `:' + + 4/3 + --- +print_cmd.c + - made the initial value and the default growth value for the + printed command somewhat smaller -- we don't really need to + allocate 4096 bytes for the printed command + - added stdarg support to xprintf if PREFER_STDARG is defined + +stringlib.c + - changed strip_trailing to take the index of the last character + as the second argument, saving a (useless) call to strlen, since + the caller already knows where the end of the string is + +subst.c + - change call to strip_trailing in command_substitute to add the + new second argument + +externs.h + - changed extern declaration for strip_trailing + + 4/4 + --- +Makefile.in, configure.in, lib/malloc/Makefile.in + - changed the strategy for picking which `malloc' to include by + having configure define a `malloc target' and the Makefile in + lib/malloc implementing rules for that target + + 4/5 + --- +Makefile.in + - slightly changed the rules for remaking `parser-built': it is + now a copy of y.tab.h, updated only when the contents of y.tab.h + change + - everything that used to depend on y.tab.h now depends on + parser-built + + 4/6 + --- +execute_cmd.c, print_cmd.c + - use #include so we pick up y.tab.h from the build + directory instead of the source directory if it happens to be + recreated in the build directory + + 4/7 + --- +bashline.c + - fixed another problem with `pwd`/[TAB] thinking that the `/ + started an unclosed command substitution, generating errors + + 4/8 + --- +general.c + - renamed bash_tilde_expansion_failure_hook to be + bash_special_tilde_expansions, since that more accurately reflects + its function + - changed tilde_initialize so that there is no failure hook -- the + special expansions are handled first with the preexpansion hook + +lib/tilde/tilde.c + - new variable: tilde_expansion_preexpansion_hook -- if non-null, it + points to a function that is called before standard tilde expansion + is attempted + +lib/tilde/tilde.h + - extern declaration for tilde_expansion_preexpansion_hook + +doc/{bash.{1,html},bashref.texi} + - added optional open paren to description of `case' command syntax + + 4/9 + --- +variables.c + - on qnx, set and export a variable `NODE' which contains the QNX + `node id' + +general.c + - QNX system can now handle pathnames with a leading `//' + +configure.in + - added `-Dqnx' to LOCAL_CFLAGS on QNX machines + +lib/malloc/getpagesize.h + - some systems need sysconf(_SC_PAGE_SIZE) to obtain the page size; + added code to check for it + + 4/10 + ---- +print_cmd.c + - include the prototype for cprintf only if PREFER_STDARG is defined, + otherwise just have a K&R-style forward function declaration + +hashlib.h + - reduced the default number of buckets in a hash table to 53 + +lib/tilde/tilde.c + - prime the result string in tilde_expand by allocating a new string + that's as long as the input string (+16 if a tilde appears in + the string to be expanded). This should reduce the number of + reallocs + +subst.c + - broke the code that reads the output of a command substitution + through the pipe to the subshell out into a separate function: + read_comsub(). This does not use stdio, but rather reads + directly from the pipe into a local 128-character buffer + + 4/11 + ---- +execute_cmd.c + - some systems need both and , so include both + if it's possible, otherwise include (if present) + +lib/readline/rl{tty,defs}.h + - moved includes of , , etc. to rltty.h + +lib/readline/terminal.c + - include rltty.h after rldefs.h + +variables.c + - changes to make environment creation faster and use less memory + (fewer malloc/free calls, too): + + o two new variables: export_env_index (how many environment + strings are in export_env) and export_env_size (the + number of slots for strings allocated in export_env) + o added new function add_to_export_env, since adding the + exported shell variables and shell functions does not + need to search the export_env for a definition to supersede + (we just cleared it out!) + o renamed add_or_supersede to add_or_supersede_exported_var, + since it always works on export_env, and changed the second + argument to a flag saying whether or not to allocate a new + copy of the string placed into the environment + o changed calls to add_or_supersede to the new + add_or_supersede_exported_var with the appropriate flags + o don't free and reallocate export_env in maybe_make_export_env, + just free the strings and start anew + o prime the size of export_env from the total number of shell + variables and shell functions -- this will always be enough + for the exported shell functions and variables, and big + enough most of the time for the entire environment + +builtins/cd.def + - efficiency hack in bindpwd(): if PWD is exported, we will have to + rebuild the entire exported environment after every time we change + directories. What we do is see if array_needs_making changes value + from 0 to 1 after bind_variable ("PWD", dirname) is called, and + that PWD is exported. If that happens, we just replace the value + of PWD in the exported environment with a call to + add_or_supersede_exported_var + +bashline.c, parse.y + - check calls to pre_process_line to make a fresh copy of the line + if pre_process_line returns what it was passed, in preparation + for future changes + +bashhist.c + - pre_process_line now returns its argument if it did not make + any changes to it + +alias.c + - free the bucket entry holding the alias to be removed in + remove_alias, as well as the data + + 4/14 + ---- +unwind_prot.c + - if an unwind-protect frame is being discarded, and its cleanup + function is `restore_variable', the `arg' member points to a + SAVED_VAR that must be freed. This change is made in + remove_unwind_protect_internal and unwind_frame_discard_internal + +parse.y + - need to free memory allocated by parse_arith_cmd if it is an + arithmetic command, after using it to make a new word + +subst.c + - fixed some memory leaks caused by not freeing the argument to + make_bare_word, which duplicates its string argument + - need to dispose list generated by list_rest_of_args in + paramter_list_remove_pattern + - make sure the return value from getpattern() is freed + - make sure array_value_internal always returns newly-allocated + memory + - get_var_and_type returns a new type: VT_ARRAYMEMBER if the + string passed is of the form var[index] + - make sure parameter_brace_substring frees the memory allocated + by get_var_and_type if verify_substring_values returns 0 + +hashlib.c, hashlib.h + - new function, dispose_hash_table (table), which frees the + table's bucket array and the table itself + +alias.c + - call dispose_hash_table from delete_all_aliases instead of just + freeing the table + +pathexp.c + - make sure to free `newnames' (but *not* its contents) before + returning from ignore_globbed_names + +builtins/exec.def + - make sure the argv created to pass to shell_execve is freed if + the execve fails and we're not exiting on failed execs + +expr.c + - broke evalexp into two functions: evalexp, which sets up the + jmp_buf that errors jump to, and subexpr, which does the + evaluation and pushing and popping of contexts + - readtok now calls subexpr to evaluate subexpressions in + parentheses + - evalexp now takes an additional paramter, a pointer to an int. + If the expression contains errors, the location to which this + points gets 0, otherwise it gets 1 to show that the value + returned may be used. This plugs up memory leaks that were + the result of evalexp() longjmping back to top_level + - fixed a memory leak: expr_stack[0] was not being freed + +externs.h + - changed extern declaration for evalexp + +variables.c, subst.c, builtins/let.def + - changed calls to evalexp appropriately. They either cause a + longjmp (top_level, DISCARD) (which is what the old stuff in + expr.c did) or are handled by returning an appropriate error + value (e.g., &expand_word_error in subst.c) + + 4/16 + ---- +shell.c + - make sure to free dollar_vars[0] before assigning it the first + argument following `-c command' + +variables.c + - if unsetting a local variable with a previous context, make sure + to free the hash table element used to store the local variable + +lib/readline/terminal.c + - rearrange the includes so is included before rltty.h, + as it is in rltty.c + + 4/17 + ---- +flags.c + - new function: reset_shell_flags, which resets all of the flags + back to their initial values + +flags.h + - extern declaration for reset_shell_flags + +builtins/set.def + - new function: reset_shell_options, which resets all of the -o + options that are not also shell flags back to their initial values + +builtins/shopt.def + - new function: reset_shopt_options, which resets all of the shopt + options that are not also shell flags or -o options back to their + initial values + +builtins/common.h + - extern declarations for reset_shell_options and reset_shopt_options + +execute_cmd.c + - broke the code that reinitializes things when an executable script + without a leading `#!' is found out into a new function: + initialize_subshell + - initialize_subshell now calls the reset_* functions that reset the + shell flags and options + +general.c, general.h + - move_to_high_fd now takes a third argument: the highest fd at which + to start looking. If that's less than 20, the maximum number of + open files as returned by getdtablesize() is used (which is what + it did before this) + +jobs.c, shell.c, subst.c + - changed calls to move_to_high_fd appropriately + +[bash-2.01-beta1 frozen] + + 4/18 + ---- +general.c + - itos now uses a local char buffer to do its conversion, but still + returns newly-allocated memory + + 4/21 + ---- +variables.c + - be a little more careful when checking for backwards-compatibility + with exported function definitions + + 4/22 + ---- +builtins/ulimit.def + - translate RLIM_INFINITY to limit.rlim_max if the current limit is + less than or equal to the hard limit, not just strictly less than + (the change of 3/28 was too drastic) + + 4/23 + ---- +oslib.c + - fixed definition of to_lower on machines without strcasecmp + +trap.c + - don't free the trap command in change_signal if the SIG_INPROGRESS + is set in the signal's flags -- it will cause memory to be freed + twice if a trap command resets the signal handler more than once, + and _run_trap_internal keeps a pointer to the trap command so it + can free it, so there will be no leaks + + 4/24 + ---- +aclocal.m4,configure.in + - removed BASH_CC_WORKS, since AC_PROG_CC now has the functionality + +shell.c, externs.h + - get_current_user_info is now a void function + +bashline.c + - alias_expand_line_internal was removed + - new function, alias_expand_line, performs alias expansion on + rl_line_buffer and either replaces rl_line_buffer or signals + an error + - new bindable commands: alias-expand-line and + history-and-alias-expand-line, available if ALIAS is defined + + 4/25 + ---- +Makefile.in, lib/malloc/malloc.c + - changed the define that turns on malloc range checking from + `rcheck' to `RCHECK' + +lib/readline/isearch.c + - fixed a couple of places where rl_search_history would try to + free a NULL pointer + + 4/29 + ---- +unwind_prot.c + - fixed a problem with saving a variable that is a null pointer + in unwind_protect_var. It happens only on machines where the + size of a pointer is not the size of an int. The old FASTCOPY + code would copy the eight bytes at memory location zero, which + did not necessarily make a null pointer + + 4/30 + ---- +shell.c + - run_startup_files should turn off job control, since the startup + files should be run without job control enabled -- this makes + SIGINT interrupt startup file execution again + - if we get a SIGINT or other longjmp to top_level while executing + the startup files, re-enable job control for interactive shells + before setting locally_skip_execution + + 5/2 + --- +lib/readline/nls.c + - if we have setlocale(3), don't bother with checking the + environment variables for valid values; just use setlocale() + to set the locale categories from the environment variables + directly and go into eight-bit mode if the current locale is + not C or POSIX + + 5/5 + --- +sig.c + - make sure that the handler for SIGPROF is not changed if it has + been set to something other than SIG_IGN or SIG_DFL -- this makes + profiling work after the terminating signals have been initialized + +bashline.c + - if a filename containing `!' is completed, and the user has started + the string with a `"', change the completion style to backslash- + quoting, since there's no way to use `!' with double quotes (this + requires more changes to readline to really work right) + + 5/6 + --- +lib/readline/complete.c + - changes to make_quoted_replacement, insert_all_matches, and + insert_match and their callers to allow the application-specific + filename quoting function to change the quote character (e.g., for + bash to change a filename containing a `!' and started with a + double quote by the user into a filename with the `!' quoted by + a backslas and no double quote) + + 5/8 + --- +jobs.c + - new function: nohup_all_jobs(), calls nohup_job for each entry in + the jobs list + - delete_all_jobs is now global + +jobs.h + - new extern declarations for delete_all_jobs() and nohup_all_jobs() + +builtins/jobs.def + - `disown' without any jobspec arguments means the current job. Fix + a core dump printing the error message when there is no current job + + 5/12 + ---- +subst.c + - process an expansion like $((foo); bar) as a command substitution, + not as an arithmetic expansion. An arithmetic expansion must have + a closing `))' + + 5/14 + ---- +builtins/evalstring.c + - the third argument to parse_and_execute() is now a flags word. + The caller can control the value of `interactive' and whether + or not history is disabled while parse_and_execute() runs + +builtins/common.h + - new #defines for the flag values for parse_and_execute() + +{bashline,jobs,shell,subst,trap,variables}.c, parse.y, builtins/evalfile.c, +builtins/{eval,fc}.def + - changed calls to parse_and_execute appropriately + +builtins/evalfile.c + - if _evalfile() is passed FEVAL_HISTORY as part of the flags arg, + don't pass SEVAL_NOHIST to parse_and_execute + - new function: fc_execute_file, which sets FEVAL_HISTORY in the + flags argument to _evalfile() + +bashline.c + - call bash_add_history instead of add_history from + vi_edit_and_execute_command so the bash state variables get + updated properly. This keeps the `v' command from operating + on an empty command when the history list is stifled + +bashhist.c + - bash_add_history is now global + +bashhist.h + - extern declaration for bash_add_history + +builtins/fc.def + - call fc_execute_file instead of maybe_execute_file in the + edit-and-re-execute case (fc -e ...) + - don't manually insert the commands from the file created by `fc -e' + into the history list, just set remember_on_history and let + fc_execute_file take care of telling parse_and_execute to do the + right thing. This makes compound commands and the `cmdhist' + and `lithist' settings work better. This supersedes the fix of + 1/27. This was reported again by rchen@fractal.eng.yale.edu. + +parse.y + - the body of a `for' command (the commands between do...done or + {...}) should be a `compound_list' instead of a `list'. Problem + reported by cpg@research.bell-labs.com + + 5/19 + ---- +lib/readline/complete.c + - in filename_completion_function, if we find that the directory + pointer (return value from opendir(3)), is not null when state + is 0 (indicating that this is the first time the completion + function has been called for the current completion), call + closedir on it, assuming that it was left open by a previous + (interrupted) completion + +[bash-2.01-beta2 frozen] + + 5/27 + ---- +Makefile.in + - make sure that `make distclean' (and other clean targets) remove + the `printenv' executable + +tests/execscript, tests/redir.tests + - make sure to set LANG=C and LC_ALL=C so the messages show up in + English + +tests/run-func + - add a warning about exported functions in the environment + + 5/29 + ---- +builtins/hash.def + - if one of the arguments passed to `hash' is an absolute pathname, + just continue the loop, don't do list=list->next first. This + fixes the `hash a/b' -> core dump bug + + 5/30 + ---- +general.c + - change canonicalize_pathname to leave a leading `/' alone, as + POSIX requires + + 6/2 + --- +support/xenix-link.sh + - shell script for linking bash under Xenix + + 6/3 + --- +bashline.c + - fixed a memory leak in command_word_completion_function, courtesy + of a.pfaller@pop.gun.de + +hashcmd.c + - fixed find_hashed_filename to always return a newly-allocated + string + +execute_cmd.c + - since find_hashed_filename returns newly-allocated memory, don't + call savestring() on it, and free it if the data is stale (in + search_for_command()). Another memory leak fixed courtesy of + a.pfaller@pop.gun.de + +builtins/type.def + - free the value returned by find_hashed_filename + +[bash-2.01-release frozen] + + 6/6 + --- +configure.in + - force shlicc2 and libc malloc for BSD/OS 3.0 + + 6/9 + --- +doc/Makefile.in + - don't create ${man3dir}, since we're not installing the readline + manual page + +lib/readline/readline.h + - rl_dispatching should be declared `extern' + [in bash-2.01.1] + + 6/10 + ---- +lib/malloc/Makefile.in + - make sure ${ALLOCA_SOURCE} is preceded by ${srcdir} so that things + work when building in a directory other than the source directory + [in bash-2.01.1] + + 6/30 + ---- +lib/readline/examples/rltest.c + - don't free the value returned by history_list() + +lib/readline/histfile.c + - open the history file for writing with mode 0600 for better + security + [in bash-2.01.1] + +execute_cmd.c + - select_query now uses legal_number to decide whether the user's + selection is a valid number, and just executes the loop again if + invalid input is entered + [in bash-2.01.1] + + 7/1 + --- +builtins/evalstring.c + - fix to parse_and_execute so `bash -c 'time [-p] zzz'' works right + [in bash-2.01.1] + +execute_cmd.c + - fix to execute_command_internal so that `bash -c time [-p] (zzz)'' + works right + [in bash-2.01.1] + - print_formatted_time should pass a long as the fourth parameter + to mkfmt + [in bash-2.01.1] + +externs.h, shell.c + - `exit_shell' is now a void function + +hashlib.c + - print_table_stats is now a void function + +mailcheck.c + - made add_mail_file check for the filename in the mail file list + using the expanded filename, since that is what it puts into + the list + [in bash-2.01.1] + +variables.c + - for the time being, PWD will be auto-exported, since some systems + seem to expect it + +doc/bashref.texi, lib/readline/doc/{hist,rlman}.texinfo + - added necessary `dircategory' and `direntry' commands to make + `install-info' work correctly + +Makefile.in + - move $(LDFLAGS) after $(BUILTINS_LDFLAGS) and $(LIBRARY_LDFLAGS) on + the line that links bash + +doc/texinfo.tex + - upgraded to version 2.185 from the texinfo-3.9 distribution + +lib/tilde/tilde.c + - fixed a bug in tilde_expand so that enough space is allocated for + the string and terminating null byte if a `~' does not appear. + This was masked before by the bash malloc() + [in bash-2.01.1] + + 7/3 + --- +aclocal.m4 + - new test, BASH_TYPE_INT32_T, to check which builtin C type is + 32 bits wide + - new test, BASH_TYPE_PTRDIFF_T, to check which builtin C type is + appropriate for pointer arithmetic + +configure.in + - check sizes of int and long, and for the existence of an int32_t + basic system type. Call BASH_TYPE_INT32_T if int32_t is not + defined anywhere in the system header files + - check size of (char *), and for the existence of a ptrdiff_t + basic system type. Call BASH_TYPE_PTRDIFF_T if ptrdiff_t is not + defined anywhere in the system header files + - added a check for + +config.h.in + - add lines for SIZEOF_INT, SIZEOF_LONG, SIZEOF_CHAR_P, int32_t, + u_int32_t, and ptrdiff_t + - added line for HAVE_STDDEF_H + +lib/malloc/malloc.c + - new version, with many changes and much better memory usage; old + (bash-2.01) version is lib/malloc/omalloc.c + +lib/malloc/gmalloc.c + - new version, with a number of changes and range checking included + by default; old (bash-2.01) version is lib/malloc/ogmalloc.c + +execute_cmd.c + - applied patch from 5/27 to make execute_simple_command fork early + if it's part of a pipeline. This keeps assignment statements or + other commands that don't require a builtin, function, or disk + command to be executed from modifying the shell's environment + +tests/exec?.sub + - renamed from tests/execscript.sub? because those filenames are + too long for System V 14-char filename systems + +tests/source?.sub + - renamed from tests/source.sub? because those filenames are bad + for DOS/Windows + +tests/getopts?.sub + - renamed from tests/getopts.sub? because those filenames are bad + for DOS/Windows + +tests/histexp.{tests,right} + - renamed from histexpand.{tests,right} because those filenames are + too long for System V 14-char filename systems + +tests/trap1.sub + - renamed from trap.sub1 because that filename was bad for DOS/Windows + +tests/ifs-[123].right + - renamed from ifs.[123].right because those filenames were bad for + DOS/Windows + +tests/ifs-[123].test + - renamed from ifs-test-[123].sh because those filenames were bad + for DOS/Windows + +examples/startup-files/Bashrc.bfox + - renamed from examples/startup-files/Bashrc because that filename + conflicts with examples/startup-files/bashrc on case-insensitive + file systems + +tests/exec.right + - renamed from execscript.right because that filename is too long + for System V 14-char filename systems + +tests/run-set-e + - renamed from run-set-e-test + +tests/misc/perftest + - renamed from tests/misc/haertel.perftest because that filename is + too long for System V 14-char filename systems + +lib/glob/fnmatch.c + - new version with full POSIX.2 BRE matching (character classes, + collating symbols, equivalence classes), full support for + strcoll(3), and case-insensitive pattern matching + +lib/glob/fnmatch.h + - new version, with necessary symbols for the new fnmatch.c + +tests/posixpat.{tests,right}, tests/run-posixpat + - test suite for the POSIX.2 BRE pattern matching code + +variables.c + - make sure that array assignment using the compound syntax empties + the array before doing the assignment + [in bash-2.01.1] + +trap.c + - new function, trap_to_sighandler(sig), which returns the correct + trap handler for SIG depending on the information in sigmodes[sig] + [in bash-2.01.1] + +sig.h + - extern declarations for trap_handler and trap_to_sighandler + [in bash-2.01.1] + +jobs.c + - if we get an interrupt while waiting for a command to complete, + and there was a trap set on SIGINT that resets the handler to + SIG_DFL, the value that waitchld uses for old_trap_handler will + be wrong (it will be trap_handler, but trap_handler no longer + knows anything about SIGINT). If old_signal_handler is trap_handler, + but signal_is_trapped(SIGINT) returns 0, we need to call + trap_to_sighandler to decide what to do + [in bash-2.01.1] + + 7/7 + --- +locale.c + - fix to set_locale_var to handle an assignment to LC_ALL (e.g., as + the result of `unset LANG') when default_locale is null + [in bash-2.01.1] + + 7/8 + --- +builtins/umask.def, doc/{bash.{1,html},bashref.texi} + - added `-p' option for umask to print output in a reusable form + + 7/9 + --- +doc/{bash.{1,html},bashref.texi} + - removed descriptions of `-type', `-path', and `-all' options to + the `type' builtin in preparation for removing them in the next + release + +builtins/type.def + - removed mention of `-type', `-path', and `-all' options from the + long help description + +error.c, error.h + - new function: internal_warning, for warning messages + +variables.c + - changed a call to internal_error to use internal_warning + - modified change of 7/3 so that arrays are not emptied until + just before the shell is about to assign the new values, so + the old value can be used to generate the rhs of the assignment, + if necessary. This is how `normal' shell variables work + [in bash-2.01.1] + +jobs.c, jobs.h + - delete_job now takes a second int argument and prints a warning + message when deleting a stopped job if the second argument is + non-zero + +jobs.c, builtins/jobs.def + - changed all calls to delete_job to provide a proper second arg + +lib/readline/bind.c + - broke rl_read_init_file into an `upper' and `lower' half in + preparation for adding file inclusion capability to inputrc + parsing + - handle_parser_directive now displays an error message if an + unknown directive is encountered + - parser_endif now prints an error message if an $endif without + a matching $if is found + - added `$include' parser directive to read bindings and commands + from another file at that point + +lib/readline/doc/rluser.texinfo, doc/{bash.{1,html},readline.3} + - documented new readline `$include' parser directive + +shell.c, parse.y + - added a new invocation option, --dump-po-strings, and code to + make it dump translatable strings ($"...") in GNU gettext + `po' format + +doc/{bash.{1,html},bashref.texi} + - documented new `--dump-po-strings' invocation option + +lib/readline/{{kill,funmap}.c,readline.h} + - added `rl_paste_from_clipboard()', bound to `paste-from-clipboard' + for CYGWIN32 users + +lib/readline/kill.c + - incorporated bfox's patches for `iterative' yank-last-arg handling. + This means that one can keep pressing M-. and move backwards in + the history, yanking the last argument of successive history lines + +lib/readline/rlwinsize.h + - new file, encapsulates various locations of the definition for + `struct winsize' + +aclocal.m4 + - augmented BASH_STRUCT_WINSIZE to look in termios.h as well as + sys/ioctl.h for definition of `struct winsize' + +lib/readline/rltty.h + - include "rlwinsize.h" after including tty-driver-specific header + file + + 7/10 + ---- +support/config.guess + - add better support for SunOS on M68K (old Sun3 machines) + +parse.y + - check for compound array assignment in read_token_word only if + there are characters before the `=' (which would make it a legal + assignment statement). This fixes the problem with defining a + function named `=' with `=() { echo foo; }' + [in bash-2.01.1] + +jobs.c, jobs.h + - nohup_all_jobs and delete_all_jobs now take a parameter which + says whether or not to restrict their operation to only running + jobs + +jobs.c + - changed all calls to delete_all_jobs + +builtins/jobs.def + - added `-a' (all jobs) and `-r' (running jobs only) options to + `disown' + +doc/{bash.{1,html},bashref.texi} + - documented new `-a' and `-r' options to `disown' + +findcmd.c, findcmd.h + - new files with command searching code from execute_cmd.c and + function declarations from execute_cmd.h + +Makefile.in, builtins/Makefile.in + - updated dependencies to account for new findcmd.[ch] + - updated dependencies to account for new redir.[ch] + +redir.c, redir.h + - new files with code that sets up lists and performs redirections + from execute_cmd.c and execute_cmd.h + +execute_cmd.c + - include new findcmd.h, redir.h + + 7/11 + ---- +Makefile.in, configure.in + - PROFILE_FLAGS is now substituted into the Makefile by configure + + 7/14 + ---- +print_cmd.c + - make sure single_quote is called from xtrace_print_word_list + to correctly quote each word of trace output, especially those + with embedded quotes + [in bash-2.01.1] + +aclocal.m4 + - extended BASH_CHECK_GETPW_FUNCS so that it checks that getpwuid + and getpwnam can also be declared, as well as getpwent + [in bash-2.01.1] + - in BASH_FUNC_PRINTF, cast printf to type `_bashfunc' before trying + to assign it to `pf' to avoid any prototype problems in the + declaration + [in bash-2.01.1] + +trap.c + - include before any of the bash-specific header files, + but after config.h + [in bash-2.01.1] + +test.c + - include and declare `extern int errno' before including + any of the bash-specific include files, but after + [in bash-2.01.1] + +builtins/Makefile.in + - PROFILE_FLAGS is now substituted into the Makefile by configure + +configure.in + - new options, --enable-profiling and --enable-static-link, to turn + on profiling with gprof and link bash statically (if using gcc) + for use as a root shell. The former implies the latter. If + we're linking statically, dynamic loading of new builtins is not + available + +doc/bashref.texi + - documented new --enable-profiling and --enable-static-link + options in installation section; regenerated INSTALL + +lib/glob/glob.[ch] + - new global variable, glob_ignore_case, turns on case-insensitive + filename matching in fnmatch() using the FNM_CASEFOLD flag + +doc/{bash.{1,html},bashref.texi} + - documented new shopt `nocaseglob' option + + 7/15 + ---- +bashline.c + - when glob_complete_word is called with state == 0, make sure we + set rl_filename_completion_desired so that proper quoting of + the resultant filenames is performed + [in bash-2.01.1] + + 7/16 + ---- +externs.h, oslib.c + - strcasecmp and strncasecmp replacements should have `const char *' + as the first two arguments, to match OS definitions + [in bash-2.01.1] + + 7/17 + ---- +(many files) + - changes for minix-2.0, mostly just adding #ifndef _MINIX around + include files that minix doesn't provide, like and + + +lib/readline/terminal.c + - removed `outchar' function; use _rl_output_character_function in + its place + +support/config.guess + - changes to recognize HP_ARCH of `hppa2.0' + +test.c + - new `-N' option: `test -N file' returns true if FILE exists and + has been modified since it was last accessed + +doc/{bash.{1,html},bashref.texi} + - documented new `test -N' option + + 7/22 + ---- +aclocal.m4 + - prefer /var/spool/mail to /usr/spool/mail in BASH_DEFAULT_MAIL_DIR + [in bash-2.01.1] + +lib/readline/{complete,bind}.c + - new readline variable, print-completions-horizontally, which causes + matches to be printed across the screen (like `ls -x') rather than + up-and-down (like `ls') + - new readline variable, completion-ignore-case, which causes filename + completion and matching to be performed case-insensitively + +doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo + - documented new print-completions-horizontally variable + - documented new completion-ignore-case variable + +_distribution, Makefile.in + - bumped the version number up to 2.02-alpha1 + +bracecomp.c + - fixes so that the braces are not quoted by the filename quoting + function when complete-into-braces is executed with M-{. The + brace completion functions do filename quoting themselves + [in bash-2.01.1] + +pathexp.c + - changed quote_string_for_globbing so that it takes a flags word + as its second argument + +pathexp.h + - defines for flags passed to quote_string_for_globbing + +subst.c,execute_cmd.c + - changed calls to quote_string_for_globbing to pass the correct + flag arguments + +expr.c + - added a `**' binary operator to do exponentiation (2**16 == 65536). + precedence is lower than arithmetic operators, higher than unary + operators (2**16-1 == 65535) + +doc/{bash.{1,html},bashref.texi} + - documented new `**' arithmetic binary operator + + 7/24 + ---- +shell.c + - added new (currently undocumented) `--wordexp' option to do the + job required by POSIX.2 wordexp(). If -n is supplied along with + --wordexp, command substitution is disallowed and the shell + exits with a status of 125 if one is attempted. If there is an + expansion error, the shell exits with a status of 127. If there + is a shell parsing error, the shell exits with a status of 126. + Otherwise, the exit status is 0. The current output is + + number of words\n + number of bytes\n + expanded words, one per line, separated by newlines + + This will have to be changed when an interface to glibc is coded + + 7/28 + ---- +hashcmd.h + - reduced the default size of the filename hash table from 631 + to 107 + +sig.c + - don't call initialize_siglist if HAVE_UNDER_SYS_SIGLIST is defined + [in bash-2.01.1] + +siglist.c + - don't compile this file if HAVE_UNDER_SYS_SIGLIST is defined + [in bash-2.01.1] + +variables.c + - fix to make $RANDOM work better in subshells + [in bash-2.01.1] + +aclocal.m4 + - new macro, BASH_DECL_UNDER_SYS_SIGLIST, looks for _sys_siglist in + and , defines UNDER_SYS_SIGLIST_DECLARED if + found + [in bash-2.01.1] + - change BASH_UNDER_SYS_SIGLIST to require BASH_DECL_UNDER_SYS_SIGLIST, + like BASH_SYS_SIGLIST requires AC_DECL_SYS_SIGLIST + [in bash-2.01.1] + +config.h.in + - add a line for UNDER_SYS_SIGLIST_DECLARED + [in bash-2.01.1] + +configure.in + - make sure that SVR4_2 is defined for machines that have $host_os + sysv4.2* (e.g., sysv4.2MP) as well as $host == sysv4.2 + [in bash-2.01.1] + + 7/29 + ---- +command.h + - new command type, ARITH_COM, used to create and execute a ((...)) + command without translating it into let "..." + +parse.y + - changes to the grammar and lexer so that ((...)) is parsed as a + command of type ARITH_CMD. An ARITH_CMD is a WORD_LIST, for + future expansion, even though only the first word is used + +make_cmd.c, make_cmd.h + - definition and declaration of a function to build an arithmetic + command + +dispose_cmd.c + - added code to dispose of arithmetic commands + +print_cmd.c + - added code to print arithmetic commands, both `regularly' and + when they're being traced with `set -x' + +externs.h + - extern declaration for xtrace_print_arith_cmd + +copy_cmd.c + - added code to copy arithmetic commands + +execute_cmd.c + - added code to directly execute arithmetic commands -- they are + a shell_control_structure, so just about everything like + redirections and piping is taken care of by the boilerplate code. + All that's needed is to expand the expression (which is within + double quotes -- added by parse.y:parse_arith_cmd()), print it + if tracing is enabled, call the expression evaluator, and return + an appropriate result + + 7/30 + ---- +input.c + - new function, set_buffered_stream(fd, bp), sets the buffered stream + associated with FD to BP and returns the old buffered stream + +input.h + - extern declaration for set_buffered_stream + +parse.y + - call set_buffered_stream rather than manipulating the BUFFERS array + directly + +shell.c + - unset_bash_input now takes an argument, CHECK_ZERO. This tells it + whether to check whether default_buffered_input is >= 0 or just > 0 + +externs.h + - changed extern declaration for unset_bash_input + +execute_cmd.c, jobs.c, nojobs.c + - changed calls to unset_bash_input to add appropriate argument + +input.h + - #undef B_* before defining them as flag values for b_flags. Some + systems, like SVR4, have a B_ERROR define in a file included by + jobs.c and nojobs.c, and it causes a warning + + 7/31 + ---- +fnmatch.c + - rewrote most of fnmatch(), so that it now implements ksh-88 style + pattern matching (`[@+*?!](patlist)') if the FNM_EXTMATCH flag + is set + +fnmatch.h + - added a define for FNM_EXTMATCH + + 8/4 + --- +lib/readline/display.c + - fixed _rl_redisplay_after_sigwinch () so that it really redisplays + only the portion after the final newline of a multi-line prompt + [in bash-2.01.1] + +bashline.c + - attempt_shell_completion no longer returns matches if a glob pattern + matches more than one filename -- it caused too many problems + [in bash-2.01.1] + + 8/5 + --- +lib/glob/glob.c + - updated glob_pattern_p so that the extended matching operators + are recognized + +pathexp.c + - udpated unquoted_glob_pattern_p so that the extended matching + operators are recognized + - udpated quote_globbing_chars so that the extended matching + operators are recognized and quoted appropriately + +subst.c + - updated match_pattern_char so that the extended matching operators + are recognized + +parse.y + - updated read_token_word so that it parses an extended matching + pattern as a single word + +jobs.c + - if a job is suspended with SIGTSTP, and the user has set + checkwinsize with `shopt', update the window size + [in bash-2.01.1] + +pathexp.c, pathexp.h + - new global variable, extended_glob, controls whether the extended + pattern matching features are enabled + +pathexp.h + - new define, FNMATCH_EXTFLAG, to be OR'd with other values for + flags argument to fnmatch to enable the extended pattern matching + features if extended_glob is set + +{pathexp,execute_cmd,bashhist,subst,test}.c, builtins/help.def + - changed calls to fnmatch to add FNMATCH_EXTFLAG to the flags arg if + extended_glob is non-zero + +lib/glob/glob.c + - changed flags arg passed to fnmatch to include FNM_EXTMATCH if + extended_glob is non-zero (#ifdef SHELL) + + 8/6 + --- +builtins/shopt.def + - added a new `extglob' shell option, controls the value of + extended_glob + + 8/7 + --- +doc/{bash.{1,html},bashref.texi} + - documented new extended pattern matching operators and the `extglob' + shell option + +tests/{extglob.{tests,right},run-extglob} + - test suite for the new extended globbing features + + 8/8 + --- +parse.y, pathexp.h, lib/glob/fnmatch.c + - made the extended globbing code #ifdef EXTENDED_GLOB + +config.h.in + - added a line for EXTENDED_GLOB, controlled by configure + +configure.in + - new option, --enable-extended-glob, controls defining of + EXTENDED_GLOB (on by default) + +doc/bashref.texi + - documented new `configure' `--enable-extended-glob' option + + 8/11 + ---- +builtins/printf.def + - new `printf' builtin, implemented according to POSIX.2 spec + for printf(1) + +Makefile.in,builtins/Makefile.in + - added necessary stuff for new printf builtin + + 8/12 + ---- +lib/readline/isearch.c + - change to make ^G interrupt the incremental search correctly + [in bash-2.01.1] + +configure.in, config.h.in + - configure now checks for the availability of strtoul(3) + +builtins/printf.def + - use strtoul for the `%o', `%u', `%x', and `%X' formats if it + is available + + 8/13 + ---- +tests/{printf.{right,tests},run-printf} + - extensive test suite for the new `printf' builtin + +builtins/Makefile.in + - change so that `builtext.h' is not recreated every time the source + file for a builtin is changed if the contents are the same. This + keeps many files from being recompiled + + 8/14 + ---- +subst.c + - changed verify_substring_values so that it returns -1 for substring + range errors, 0 for expression errors, and 1 for success + [in bash-2.01.1] + - changed parameter_brace_substring to return an error if + verify_substring_values returns 0, and a null string if it returns + -1. This matches the ksh93 behavior + [in bash-2.01.1] + +trap.c + - changed decode_signal so that it makes sure the first three + characters of a signal name are `SIG' before allowing the `SIG' + prefix to be omitted. This is so a signal spec of `T' does not + match `EXIT', for instance + [in bash-2.01.1] + +builtins/trap.def + - make sure that showtrap() displays traps for signals with unknown + names using the signal number + [in bash-2.01.1] +shell.c + - make sure that `bash -r' doesn't turn on the restricted mode until + after the startup files are executed + [in bash-2.01.1] + +doc/{bash.{1,html},bashref.texi} + - documented printf builtin + + 8/15 + ---- +general.c + - added \xNNN escape to ansicstr -- NNN are up to three hex digits. + This affects $'...', `echo -e', and printf + +builtins/printf.def + - added \xNNN escape to bexpand -- NNN are up to three hex digits. + This affects printf's `%b' conversion specifier + +doc/{bash.{1,html},bashref.texi} + - documented new \xNNN escape sequence for echo, $'...', and printf + +builtins/setattr.def + - make sure that a variable found in the temp environment does not + cause a null string to be assigned by bind_variable (e.g., + foo="" export foo + ) + [in bash-2.01.1] + + 8/18 + ---- +subst.c + - fixed a bug that sometimes caused bad memory (pointer into an + allocated block) to be passed to free when doing arithmetic + substitution. Bug report from stevet@myofb.org + [in bash-2.01.1] + + 8/19 + ---- +subst.c + - considerable changes: moved the code that expands a single + $... parameter expansion into a separate function: param_expand() + This function returns a string, which may contain characters + quoted with CTLESC or CTLNUL without doing word splitting + - changed expand_word_internal to not remove the expansion of "$*" + if the number of positional parameters is > 0 + - changed the '"' case of expand_word_internal to remove quoted + nulls from the resultant word if the expansion was not "$@", and + the word is not a quoted null string ([] == CTLNUL, [1] == '\0') + +subst.c, variables.c + - moved the code that handles special variables from subst.c to + variables.c + + 8/20 + ---- +subst.c + - rearranged the source a bit to group functions with similar + operation together + - fixed parameter_brace_expand so that it no longer allows + indirect expansion of `special' variables + - fixed parameter_brace_expand so taking the length of some of + the shell's special parameters works again + - moved all of the code that computes the length of a shell + parameter (the ${#xxx} expansion) into parameter_brace_expand_length. + Previously, the code that handled the lengths of the shell's + special parameters was in parameter_brace_expand_word + - valid indirect expansions are now only variable names or positional + parameters + + 8/21 + ---- +subst.c + - fixed param_expand to raise an expansion error if $! is being + expanded and no asynchronous processes have been created + - an expression error in a $((...)) arithmetic expansion now causes + a non-interactive shell running in POSIX mode to exit + - relaxed change of 8/20 to allow indirect references to $#, $@, $* + +builtins/bashref.texi + - documented new posix-mode exit on invalid expressions in $((...)) + +lib/readline/complete.c + - don't call rl_strpbrk unless rl_filename_quote_characters is not + NULL -- strpbrk requires non-NULL arguments + [in bash-2.01.1] + + 8/22 + ---- +bashline.c + - don't make `history-expand-line' a bindable command unless + BANG_HISTORY is defined, and don't compile the code for that + command in unless BANG_HISTORY is defined + - make history_expand_line(), tcsh_magic_space(), alias_expand_line(), + and history_and_alias_expand_line() int-returning functions that + return 0 for success and non-zero on error. This allows + tcsh_magic_space() to just call history_expand_line() and insert + a space if that returns successfully + - `magic-space' is now a bindable readline command + +doc/bash.{1,html}, lib/readline/doc/rluser.texinfo + - documented new `magic-space' bindable readline command + + 8/25 + ---- +parse.y + - fixed decode_prompt_string so that values of $PWD longer than + PATH_MAX don't cause buffer overruns (char t_string[PATH_MAX]) + [in bash-2.01.1] + +general.c + - fixed polite_directory_format so that values of $HOME longer + than PATH_MAX don't cause buffer overruns (char tdir[PATH_MAX]) + [in bash-2.01.1] + +subst.c + - fix to expansion of $* so that the positional parameters are + separated by the first character of $IFS, even when the expansion + is not within double quotes, so the correct split is still + performed even when IFS does not contain a space. Works for + ${*}, too + - fix to expansion of $@ so that the positional parameters are + separated by the first character of $IFS, even when the expansion + is not within double quotes, so the correct split is still + performed even when IFS does not contain a space. Works for + ${@}, too + - new function, string_list_dollar_at(), which is to $@ as + string_list_dollar_star is to $* + - fixed expansion of $@ so that splitting is still done even if + IFS is unset or NULL, as POSIX.2 specifies (section 3.5.2) + - fixed expansion of $* so that it expands to multiple words if there + is more than one positional parameter, just like $@, even if + IFS is unset or NULL + - new function list_quote_escapes, quotes (with CTLESC) all + CTLESC and CTLNUL characters in each member of the list + +tests/dollar-{at,star}.sh + - combined into dollar-at-star, changed run-dollars accordingly + + 8/26 + ---- +Makefile.in + - make the `tests' target use $(SHELL) instead of hardcoding `sh' + + 8/29 + ---- +subst.c + - expand_word_list_internal now takes a flags word as the second + argument, telling which expansions to perform on the WORD_LIST + - broke expand_word_list_internal into several functions: one + each to do brace expansion, glob expansion, and the `normal' + shell expansions + - new extern function: expand_words_shellexp() to perform the + `normal' shell expansions on a WORD_LIST + +subst.h + - extern declaration for expand_words_shellexp + +bashline.c + - fixed a problem with attempt_shell_completion where it attempted + to refer to rl_line_buffer[-1] (completion at the start of the + line, which means that ti == -1, which means that the test for + rl_line_buffer[ti] at line 715 was an array bounds error + [in bash-2.01.1] + +eval.c + - new function, parse_string_to_word_list(), which takes a string + and runs it through the parser, returning the resultant word + list + +externs.h + - new extern declaration for parse_string_to_word_list() + +variables.c + - change assign_array_var_from_string to first split the string + between the parens on whitespace, then expand the resultant + list of words with all the shell expansions before doing the + assignment + + 9/4 + --- +redir.c, redir.h + - redirection_error is no longer a static function + +builtins/evalstring.c + - changes to handle $( < filename ) (equivalent to $(cat filename)) + as in ksh + +lib/readline/bind.c + - added two new functions: rl_unbind_function_in_map(func, map), + which unbinds all keys that execute FUNC in MAP; and + rl_unbind_command_in_map(command, map), which unbinds all keys + bound to COMMAND in MAP + +lib/readline/readline.h + - extern declarations for rl_unbind_{function,command}_in_map + +lib/readline/doc/rltech.texi + - documented rl_unbind_{function,command}_in_map + +builtins/bind.def + - added a new option, -u FUNCNAME, which unbinds all key sequences + bound to FUNCNAME in the specified (or current) keymap + +doc/{bash.{1,html},bashref.texi} + - documented new $( < filename ) command substitution + - documented new bind -u FUNCNAME option + + 9/5 + --- +shell.c + - send SIGHUP to all jobs when an interactive login shell exits if + the variable `hup_on_exit' is non-zero + - modified run_startup_files so that if `NON_INTERACTIVE_LOGIN_SHELLS' + is #define'd (perhaps in config.h.top, though there is nothing there + for it), all login shells (interactive and non-interactive) run + /etc/profile and one of the per-user login shell startup files + +builtins/shopt.def + - new shopt option `huponexit' to control the value of hup_on_exit + +doc/{bash.{1,html},bashref.texi} + - documented new `huponexit' shell option + + 9/8 + --- +builtins/common.c + - changed contains_shell_metas to return 1 if a tilde appears at the + start of a string or after a `=' or `:' + - changed backslash_quote to quote a tilde if it appears at the start + of a string or after a `=' or `:' + +lib/readline/complete.c + - moved rl_tilde_expand to util.c; it doesn't really have anything + to do with completion + - moved insert_text to readline.c, renamed it _rl_replace_text (since + that's really what it does), changed callers + - moved code that postprocesses the list of completion matches into + a new function: postprocess_matches + - new implementation of tcsh-like menu completion in a single new + function: rl_menu_complete + +lib/readline/{funmap.c,readline.h} + - necessary declarations for binding rl_menu_complete to the + new `menu-complete' command + +doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo + - documented new `menu-complete' bindable readline command + + 9/9 + --- +jobs.c + - delete_job should print a warning only if subshell_environment + is 0, so we don't print bogus warnings when shell scripts without + a leading #! are executed + + 9/10 + ---- +builtins/read.def + - fixed the code so that the `read' is automatically restarted when + it returns -1 with errno == EINTR. SIGINT is handled by the + interrupt handler, since interrupt_immediately is set to 1, so + this handles things like SIGCHLD + [in bash-2.01.1] + + 9/11 + ---- +test.c + - reorganized the code slightly to make it easier to add the ksh-like + [[...]] compound command + +test.h + - new file, with extern declarations for functions available in test.c + +externs.h + - moved declaration of test_command to test.h + +builtins/test.def + - include `test.h' + + 9/16 + ---- +{command,make_cmd,dispose_cmd,externs,subst}.h +parse.y, subst.c +{make,dispose,copy,print,execute}_cmd.c + - changes to add the new ksh-93 compatible [[...]] conditional command + +configure.in + - new enable option, --enable-cond-command, to compile in the [[...]] + command code + +config.h.in + - new #define, COND_COMMAND, to compile in the [[...]] command code + +tests/{run-cond,cond.{tests,right}} + - test suite for the new [[...]] command + +{builtins,lib/{readline,glob,tilde}}/Makefile.in + - explicit dependencies for .o files on .c files for losing makes + like Solaris + +doc/{bash.{1,html},bashref.texi} + - documented the new `[[' compound command + - documented the test/[ builtin behavior based on the number of + arguments in the description of the builtin + - made a new section for conditional expressions that just lists + the available primaries -- the connectives and other operators + are listed in the description of the [[ command and the test/[ + builtin + + 9/18 + ---- +builtins/set.def + - minus_o_option_commands is now a global function so the shopt + code can use it + - minus_o_option_commands now takes an argument telling it which + options to print, just like list_minus_o_options + - new function, print_minus_o_option, which prints the value of + a `set -o' option either in the traditional format or in the + format used by `set +o' + - changed list_minus_o_opts and minus_o_option_commands to call + print_minus_o_option + +builtins/shopt.def + - `shopt -p' now causes output to be printed in a format reusable + as input (the format is a series of shopt commands, like the + output of `set +o') + - fixed a bug that made `shopt -so' and `shopt -uo' not work + - fixed list_shopt_o_options so that `shopt -op' acts like `set +o' + - fixed list_shopt_o_options to that `shopt -op optname' prints the + value of optname in a reusable format + - fixed list_some_o_options so that `shopt -ops' and `shopt -opu' + work and display output in a reusable format + + 9/19 + ---- +doc/{bash.{1,html},bashref.texi} + - documented new `shopt -p' behavior + +shell.c + - made `bash +o' display the same output as `set +o' and then + start an interactive shell (previously `bash -o' and `bash +o' + displayed the same thing) + +builtins/common.h + - added prototypes to the extern function declarations + + 9/22 + ---- +builtins/evalstring.c + - fixed the DISCARD case of the jump_to_top_level so that it + doesn't try to call dispose_command(command) after the + `pe_dispose' unwind frame gets run, since that disposes the + command + + 9/23 + ---- +test.[ch] + - test_eaccess is now a global function so that globbing code can + use it + +lib/glob/glob.c + - rewrote glob_vector to be slightly more efficient and to not + read the directory if the filename pattern does not contain + any globbing chars. This satisfies the POSIX requirement that + read permission is not required for a directory when the + pathname component does not contain a pattern character (bug + reported by jsm28@cam.ac.uk) + +subst.c + - fixed parameter_brace_expand so that ${array[@]} and ${array[*]} + behave correctly when IFS is unset or set to something that does + not contain a space (they should result in separate words, just + like $@ and $*) + +tests/{run-array2,array-at-star,array2.right} + - tests for the expansions of ${array[@]} and ${array[*]}, derived + from the tests in dollar-at-star + + 9/24 + ---- +jobs.c + - fixed cleanup_dead_jobs so that it doesn't remove the job + containing last_asynchronous_pid from the job table. This + fixes the POSIX.2 `wait' requirement problem + + 9/25 + ---- +parse.y + - added `\r' escape sequence to the prompt expansion code + +lib/readline/chardefs.h + - added defines for ISOCTAL, OCTVALUE, isxdigit (if not defined), + and HEXVALUE + +lib/readline/bind.c + - added `normal' echo/printf-like backslash escapes to the + key sequence translation code, with the addition that \d + expands to RUBOUT. This means that key sequence definitions + (before the `:') and macro values may contain these special + backslash-escape sequences + - now that we can translate octal escape sequences in key bindings, + change _rl_get_keyname so that it turns characters with values + 128-159 inclusive into octal escape sequences (\200-\237), since + those characters are not ASCII or ISO Latin 1 + +doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo + - documented new backslash escapes for readline key sequence and + macro translation + +builtins/pushd.def + - new function, get_dirstack_from_string(char *string), returns an + element from the directory stack or null, treating the argument + exactly as `dirs string' would, with the exception that if + the first character of `string' is not `+' or `-', a `+' is + assumed + +builtins/common.h + - new extern declaration for get_dirstack_from_string + +general.c + - added code to bash_special_tilde_expansions to get the expansion + using get_dirstack_from_string() if the first character of the + tilde-prefix is a digit or the first character is a `+' or `-' + and the second is a digit + +tests/dstack.{tests,right} + - renamed from dirstack.{tests,right} + +tests/dtack2.{tests,right} + - new tests for the directory stack tilde expansion code + +tests/run-dirstack + - now runs both dstack and dstack2 + + 10/3 + ---- +trap.c + - reordered header file inclusion for irix 4 + +execute_cmd.c + - fixed select_query so that a reply that is not a number is treated + the same as a numeric reply that is out of range + +lib/readline/util.c + - added a backwards-compatibility definition of _rl_savestring() + +builtins/set.def + - initialize_shell_options now takes an argument saying whether or + not we should parse $SHELLOPTS from the environment. The shell + does not parse the value if it's restricted, running setuid, or + running in `privileged mode' + +shell.c + - change call to initialize_shell_options to add the correct argument + +builtins/common.h + - changed extern declaration for initialize_shell_options + +doc/{bash.{1,html},bashref.texi} + - added note that the shell ignores $SHELLOPTS in the environment at + startup if running in privileged mode + - added note that the restricted shell does not parse $SHELLOPTS from + the environment at startup + + 10/6 + ---- +aclocal.m4 + - change BASH_RLIMIT_TYPE so that it looks for rlim_t in + as well as , for Solaris 2.6 + - new macro, BASH_LARGE_FILE_SUPPORT, to enable special compilation + options for large files on Solaris 2.6 (from eggert@twinsun.com) + +mailcheck.c + - the `file_size' member of the FILEINFO struct should be of + type `off_t' + - the `size' variable in file_has_grown should be of type `off_t' + - the RESET_MAIL_FILE macro should initialize file_size to 0, not 0L + +builtins/Makefile.in + - LDFLAGS and LOCAL_LDFLAGS are now set by configure + - `mkbuiltins' is now created from `mkbuiltins.o' instead of directly + from the source to the executable + +builtins/evalfile.c + - fixed _evalfile so that it handles large files correctly on + systems where the st_size member of `struct stat' will not fit + into an `int' + +builtins/mkbuiltins.c + - don't assume that st_size fits into an int + +input.[ch] + - the `b_size' member of a struct BSTREAM is now of type `size_t' + - changed third argument to make_buffered_stream to size_t; changed + caller + - changed `size' variable in fd_to_buffered_stream to type `size_t' + +general.h + - include if HAVE_SYS_RESOURCE_H and RLIMTYPE are + both defined, for possible necessary definition of RLIMTYPE + (e.g., on Solaris 2.6) + +{execute_cmd,jobs}.c, builtins/times.def + - don't include explicitly if RLIMTYPE is defined, + since general.h will include it in that case + +lib/readline/bind.c + - new function, char *_rl_read_file(filename, sizep), which reads + FILENAME into a malloced buffer, returning the buffer and the + size of the buffer in *SIZEP + +lib/readline/histfile.c + - changed read_history_range and history_truncate_file to handle + large files + +hashcmd.c + - find_hashed_filename should not add `./' to the front of a pathname + that already begins with `./' + + 10/8 + ---- +support/config.sub + - recognize `hppa2.0' as a valid machine architecture + +aclocal.m4 + - changed BASH_CHECK_LIB_TERMCAP so that `gnutermcap' is not chosen + if `$prefer_curses' is set to something + +bashhist.c + - don't use HISTCONTROL or HISTIGNORE to remove lines from the + second and subsequent lines of a multi-line command + (current_command_line_count > 1). Old code did this only when + command-oriented-history was enabled + +doc/{bash.{1,html},bashref.texi} + - changed descriptions of HISTCONTROL and HISTIGNORE to state that + these variables are not applied to the second and subsequent + lines of a multi-line command + +builtins/hash.def, {copy,dispose}_cmd.c + - include "bashtypes.h" -- cray machines need it because of their + oddball definition of `word' + +configure.in + - changed check of ${host_cpu} to check for `*cray*' and `*Cray*' + when deciding whether to include the GNU malloc, since it + seems that ${host_cpu} gets set to `CrayYMP' + + 10/9 + ---- +configure.in + - look for strtod and strtol in libc + - make lib/sh directory in build directory if not there + - create lib/sh/Makefile + +config.h.in + - added HAVE_STRTOD and HAVE_STRTOL + +Makefile.in + - changes for lib/sh/libsh.a (shell library) + +builtins/printf.def + - took out the `#ifdef STRTOUL' code, since strtoul is in libsh.a, + and will be resolved from there if it's not in libc + +variables.c + - call strtol() instead of string_to_long() + +general.c, general.h + - removed string_to_long + - changed legal_number to use strtol so it correctly sets errno + to ERANGE on overflow + - moved bash_getcwd_errstr here from lib/sh/oslib.c + +externs.h + - moved extern declarations for functions defined in libsh to a + separate section of the file, added extern declarations for + other functions in libsh + +builtins/ulimit.def + - changed macro definition for string_to_rlimtype to call strtol + directly instead of string_to_long + +lib/sh/clktck.c + - moved get_clock_tck to its own file, since it's compiled in + unconditionally + + 10/10 + ----- +lib/sh/getenv.c + - moved getenv() and __getenv() here from lib/sh/oslib.c + +lib/sh/{setlinebuf,strerror,strcasecmp}.c + - moved {setlinebuf,strerror,strcasecmp}() from oslib.c to + individual files + +lib/sh/Makefile.in, Makefile.in + - changes for new files in lib/sh + +aclocal.m4 + - new macro BASH_SYS_RESTARTABLE_SYSCALLS, which does what + AC_SYS_RESTARTABLE_SYSCALLS does, but using posix sigaction() + +configure.in + - call BASH_SYS_RESTARTABLE_SYSCALLS if ac_cv_sys_restartable_syscalls + is `no' + + 10/13 + ----- +builtins/jobs.def + - catch out-of-range jobs better in disown_builtin + +configure.in + - don't build with GNU malloc on cygwin32 + +trap.c + - change signal_name to handle the case where signal_names[sig] is + NULL, which can happen on cygwin32 + +execute_cmd.c + - changes to do_piping to make pipes text mode (O_TEXT) on cygwin32 + +cross-build + - new directory with cache files and other stuff for cross-compiling + bash (currently only for building for cygwin32 on a Unix machine) + +cross-build/cygwin32.cache + - new file containing configuration variable assignments for + cygwin32 that would otherwise require a default case for AC_TRY_RUN + +configure.in + - source ${srcdir}/cross-build/cygwin32.cache on CYGWIN32 systems + if we're cross-compiling on a unix machine + - set $CC_FOR_BUILD for cygwin32 cross-compiling environment + +Makefile.in + - CC_FOR_BUILD is now a variable set by configure + +builtins/mkbuiltins.c + - only check for read(2) returning <= 0 in extract_info() (error + and exit on < 0, warning and return on == 0) + +builtins/evalfile.c + - only check for read(2) returning <= 0 in _evalfile() (error and + and failure return on < 0, success on == 0 while short-circuting + rest of operation) + + 10/14 + ----- + +vprint.c + - moved to lib/sh/vprint.c + +lib/sh/Makefile.in + - added entries for vprint.[co] in the appropriate places + +cross-build/win32sig.h + - a version of signames.h for cross-compiling for the CYGWIN32 + environment on a Unix machine (from noer@cygnus.com) + +aclocal.m4 + - made all cases of AC_TRY_RUN and AC_TRY_COMPILE have reasonable + default cases for cross-compiling, and tell the user what they are + +Makefile.in + - removed vprint.c from shell sources and vprint.o from shell + objects + - added a level of indirection for signames.h -- the variable + SIGNAMES_H is set by configure to either `lsignames.h' or + a file for a cross-compilation environment (currently only + the cygwin32 stuff is supported). Then that file is copied + to `signames.h'. `lsignames.h' is created by `mksignames' as + was previously used to create signames.h directly + +configure.in + - set SIGNAMES_H to either `$(srcdir)/cross-build/win32sig.h' or + `lsignames.h' as appropriate, substitute into Makefile + + 10/15 + ----- +builtins/Makefile.in + - CC_FOR_BUILD is now set by configure and used to build mkbuiltins + and psize.aux + +variables.h + - new variable attribute `att_tempvar', set if the SHELL_VAR * was + constructed on the fly from the temporary environment + +variables.c + - find_name_in_env_array now sets the `att_tempvar' attribute on + the SHELL_VAR it creates + +findcmd.c + - search_for_command now disposes the SHELL_VAR created by searching + the temporary environment for $PATH, if it is found there + - _find_user_command_internal also disposes of the SHELL_VAR if it + has the `att_tempvar' attribute set + +builtins/setattr.c + - show_name_attributes looks in the temporary environemnt, so it needs + to dispose the SHELL_VAR if it has the att_tempvar attribute set + +subst.c + - parameter_brace_expand_word now disposes of the SHELL_VAR returned + by find_variable if it has the att_tempvar attribute set + - ditto for param_expand and word_split + +builtins/kill.def + - disallow null pid arguments instead of treating them as 0 + - display a usage message and return failure if no pid or job + arguments are supplied + + 10/16 + ----- +builtins/declare.def + - make `var=value declare -x var' behave the same as + `var=value export var' and `var=value declare -r var' behave the + same as `var=value readonly var', now that we have the `tempvar' + attribute + + 10/22 + ----- +jobs.c + - non-interactive shells shouldn't report jobs killed by a SIGINT, + even if the standard output is to a terminal + - pretty_print_job should add a CR at the end of its output if the + shell is interactive and asynchronous notification is being + performed. This fixes the problem with extra CRs in the output + of $(jobs) + +general.c + - changed canonicalize_pathname to change `//' into `/', but leave + other pathnames starting with two consecutive slashes alone + + 10/27 + ----- + +lib/readline/histexpand.c + - fixed history_expand so that the appearance of the history + comment character at the beginning of a word inhibits history + expansion for the rest of the line + + 10/29 + ----- +jobs.c,variables.c + - moved set_pipestatus_array to variables.c + +variables.c + - new function, set_pipestatus_from_exit(int), which sets the + PIPESTATUS variable from a command's exit status + +variables.h + - extern declarations for set_pipestatus_from_exit and + set_pipestatus_array + +execute_cmd.c + - fixed execute_simple_command to call set_pipestatus_from_exit + if a foreground builtin or function, or a foreground null + command is executed + + 10/31 + ----- +shell.c + - fixed run_startup_files to detect being run by sshd, and treat + that case as equivalent to being run by rshd + + 11/3 + ---- +builtins/set.def + - make sure `set -a' doesn't cause SHELLOPTS to be exported when + a change is made to one of the shell options + + 11/4 + ---- +pathexp.c + - fix to shell_glob_filename in the code that uses a POSIX glob + library + + 11/5 + ---- +jobs.c + - fix cleanup_dead_jobs to hang onto the job corresponding to + last_asynchronous_pid only if the shell is not interactive + (this still has the problem that until a new async process + is started, the job will stay in the jobs table) + +configure.in,aclocal.m4 + - added a new macro, BASH_TYPE_U_INT32_T, to check for u_int32_t + separately from int32_t, since there are systems (HP-UX 10.20) + that have a define for the latter but not the former + + 11/6 + ---- +jobs.c + - cleanup_dead_jobs no longer checks whether the job it is deleting + corresponds to last_asynchronous_pid + - notify_of_job_status and mark_dead_jobs_as_notified now will not + mark the job corresponding to last_asynchronous_pid as notified + if the shell is not interactive + - wait_for_single_pid, if told to wait for last_asynchronous_pid, + or the job of which it is a member, will take care of marking + the job as notified after calling wait_for and collecting the + status. This means that two successive `wait' calls for $! will + succeed the first time and fail the second, as POSIX.2 specifies + (take this code out if it causes problems) + + 11/7 + ---- +jobs.c + - wait_for_job, if told to wait for the job corresponding to the + last async pid, will mark the job as notified after waiting for + it and collecting the status + +general.h + - fixed MEMBER macro to avoid reading past end of S (it used to + test s[1] before s[0], which is an error if s == "") + +subst.c + - expand_word_internal should free ISTRING before returning if + param_expand returns an error + - parameter_brace_expand_word should free the memory it allocates + and passes to param_expand + +execute_cmd.c + - execute_arith_command should call dispose_words on the list + returned by expand_words + +parse.y + - after calling parse_arith_command, read_token needs to free the + string value that parse_arith_command fills in, since make_word + makes a copy of the string it's passed + + 11/10 + ----- +subst.c + - cond_expand_word needs to free the value returned by string_list + after it is run through quote_string_for_globbing + +parse.y + - make sure cond_term frees yylval.word if it is just a `!' and + it's parsed as a term negation operator + +variables.c + - assign_array_var_from_string needs to free the word list returned + by parse_string_to_word_list after calling expand_words_shellexp + on it + +execute_cmd.c + - changed execute_simple_command to avoid saving the_printed_command + into command_line until just before it's needed. This should save + time and prevent memory leaks on errors, but it must be watched + closely to make sure that the_printed_command doesn't change out + from under execute_simple_command before we copy it + + 11/12 + ----- +builtins/alias.def + - alias and unalias should print error messages when passed an + argument that is not an alias for printing or deletion, + respectively, even if the shell is not interactive + +builtins/exit.def + - `logout' will no longer exit a non-login non-interactive shell + + 11/17 + ----- +lib/readline/nls.c + - add `koi8-r' as a legal LANG value + +builtins/alias.def + - if `alias' or `alias -p' is executed when no aliases are defined, + the return status should be 0, according to POSIX.2 + + 11/18 + ----- +subst.c + - changed a couple of calls to make_word_list (make_word(z), ...) + to add_string_to_list (z, ...) + +execute_cmd.c + - execute_cond_command now sets this_command_name to `[[' + + 11/21 + ----- +variables.c + - all_visible_{function,variable}s and the functions they call + should be compiled in only if READLINE is defined + + 11/24 + ----- +aclocal.m4 + - remove some leading whitespace before preprocessor statements in + BASH_KERNEL_RLIMIT_CHECK + +general.[ch] + - fix declarations for group_member so the extern declaration in + general.h agrees with the definition in general.c (fix from + Andreas Schwab ) + +builtins/cd.def + - print the new working directory if the shell is interactive + and `cd -' succeeds + - don't print the new working directory if it's found in $CDPATH + if the shell is not interactive + + 11/25 + ----- +builtins/cd.def + - fixes to bindpwd so that it copes with get_working_directory + returning NULL (bug from schwab@issan.informatik.uni-dortmund.de) + + 12/2 + ---- +support/config.guess + - add support for new OS name for SINIX SVR4 systems + + 12/3 + ---- + +builtins/set.def + - `unset' should check that a function it's trying to unset is a + legal identifier only when in POSIX mode + +redir.c + - changed here_document_to_fd to try and make sure the filename + used for the here document is `more unique', since the old + version would fail if two here documents were created in less + than a second + + 12/4 + ---- +builtins/cd.def + - POSIX.2 says that if CDPATH is used to find the new directory, + and it's not relative to the current directory, the new directory + name should be displayed on stdout even if the shell is not + interactive + + 12/5 + ---- +parse.y + - changes so that `time' is recognized as a reserved word only at + the beginning of a pipeline (the last read token is one of 0, + `;', `\n', `&&', `||', or `&'): + + o add clause to special_case_tokens that does the check + and returns TIME if the conditions are met + o take check for `TIME' out of CHECK_FOR_RESERVED_WORD, but + leave it in the word_token_alist so that `type' still + reports it as a `keyword' + o new function, time_command_acceptable(), encapsulates the + necessary conditions for `time' to be returned as a + reserved word + +[bash-2.02-alpha1 frozen] + + 1/6/1998 + -------- +lib/glob/fnmatch.c + - fix define for isgraph so that it does not return success for space + - fix strcompare() so that the call to strcoll is surrounded by + #ifdef HAVE_STRCOLL + + 1/7 + --- +lib/glob/fnmatch.c + - the `test' argument to brackmatch() should be of type `unsigned char' + + 1/11 + ---- +execute_cmd.c + - make sure execute_arith_command sets this_command_name to `((' + + 1/29 + ---- +parse.y + - make sure the code for pushing and popping strings is compiled in + if either ALIAS or DPAREN_ARITHMETIC is defined, because the (( + code uses push_string in the case of a nested subshell + - fix cond_skip_newlines so it resets the prompt to $PS2 while + parsing an unfinished conditional command + +dispose_cmd.c, copy_cmd.c, builtins/hash.def + - fixes to not use `word' as a variable name or the name of a + function parameter to get around stuff in the Cray Unix include + files + +builtins/printf.def + - return failure immediately if an illegal format character is + encountered + +redir.c + - make the code that creates here-documents behave better if the + file it's trying to create already exists for some reason + +lib/readline/complete.c + - changed print_filename to return the number of characters it + outputs; changed callers to use that value. This makes columns + line up when printing completion listings with filenames + containing control characters + +doc/bash.{1,html} + - fixed a typo in the quote removal section + + 1/30 + ---- +parse.y + - free_string_list() needs to check that t->expander is not NULL + before trying to dereference it + - reset_parser() doesn't need to set pushed_string_list to NULL + after calling free_string_list(), since free_string_list does it + +configure.in,cross-build/cygwin32.cache + - fixes from Geoff Noer for better cygwin32 cross-compilation + +tests/printf.{tests,right} + - removed test for integer overflow, since error messages differ + across systems + +pathexp.c + - fixed a problem with unquoted_glob_pattern_p that made things + like `x+*' not expand correctly + +lib/glob/glob.c + - fixed a problem with glob_pattern_p that made things like `x+*' + not expand correctly + +builtins/cd.def + - if `cd -P' is executed, or `set -o physical' has been executed, + the value of $PWD after a successful cd will not contain any + symlinks, regardless of whether or not the shell is in posix mode + + 2/3 + --- +lib/readline/shell.c + - include or as appropriate + + 2/4 + --- +builtins/common.c + - take out the code in backslash_quote() that looks for tildes to + quote, for the time being + - if getcwd() fails, get_working_directory now prints the error + message corresponding to errno in addition to the rest of the + information -- TENTATIVE CHANGE + +lib/sh/getcwd.c + - fix from Paul Smith to make getcwd() behave better in the presence + of lstat(2) failures + +stringlib.c + - when copying the replacement string into the output string being + constructed, strsub() needs to make sure enough space for the + replacement string is allocated, not the length of the pattern + (use REPLEN, not PATLEN) + +mailcheck.c + - make sure make_default_mailpath() has a valid current_user struct + before trying to construct the default mailpath + + 2/5 + --- +execute_cmd.c + - execute_builtin needs to call run_unwind_frame if the builtin is + `source' or `eval' and we're not in a subshell rather than just + calling dispose_builtin_env, because not all invocations copy + the temporary_env to builtin_env, and nested calls to `.' require + that the temporary env given to the first persist until that first + call to `.' finishes + +parse.y + - fix to history_delimiting_chars so that function definitions like + + function xyz + { + echo a + } + + are saved to the history correctly when command_oriented_history + is enabled, but literal_history is not + +bashhist.c + - when calling internal_error from pre_process_line, use "%s" as + the format with history_value as the argument to avoid the + problem with the failed history event containing printf escape + sequences + + 2/13 + ---- +shell.c + - if shell_initialized is non-zero, don't line-buffer stderr and + stdout in shell_initialize on SunOS5 -- see if this fixes the + crashing problems for scripts without a leading `#! /bin/sh' + + 2/17 + ---- +bashline.c + - added diffs to _ignore_completion_names from Andreas Schwab to + complete names that would otherwise be ignored with FIGNORE if + they are the only possible completions. Define NO_FORCE_FIGNORE + if you want this; it is not defined by default + + 2/19 + ---- +support/bashbug.sh + - changed the bug-bash address to bug-bash@gnu.org + +examples/loadables/Makefile.in + - converted from `Makefile' with some boilerplate configure variables + to find the source and build directories -- still requires some + hand-editing to get the right CFLAGS and LDFLAGS for shared object + creation + +Makefile.in + - create examples/loadables/Makefile with `make makefiles' + +configure.in + - create examples/loadables directory so `make makefiles' can write a + makefile there + +general.c + - make sure initialize_groups_array always sets things up so that + ${GROUPS[0]} is the user's primary group (current_user.gid) + + 2/20 + ---- +lib/readline/parens.c + - change the time delay when showing matching parens from 1.5 sec to + 0.5 sec + + 2/23 + ---- +shell.c + - isnetconn() should call getpeername(fd,...) instead of using 0 + (though fileno(stdin) should always be 0) + +support/config.guess + - updates from master FSF copy + + 2/24 + ---- +support/man2html.c + - modified version of man2html to convert bash.1 into bash.html + +support/Makefile.in + - simple Makefile to create man2html + +configure.in + - make sure support/Makefile is created + +Makefile.in + - make sure support/Makefile is created and cleaned + +doc/Makefile.in + - changes to suffix rules to say how to make .html from .1 + - `bash.html' is now a makefile target, created by man2html from + bash.1 rather than being hand-modified + +lib/sh/itos.c, general.c + - new file, itos() from general.c. This is here because the + implementation of strerror in lib/sh/strerror.c uses itos() + +Makefile.in, lib/sh/Makefile.in + - changes to add itos.c in libsh.a + +externs.h, general.h + - moved extern declaration of itos() from general.h to externs.h + +aclocal.m4 + - changes to BASH_LARGE_FILE_SUPPORT for the LFS64_* variables in + Solaris 2.6 + +Makefile.in + - make sure configure sets CPPFLAGS in this file + + 2/27 + ---- + +builtins/command.def + - make sure get_standard_path returns the value of + STANDARD_UTILS_PATH if _CS_PATH is defined, but confstr(3) + returns 0, indicating that _CS_PATH does not have a defined + value + +bashhist.c + - fixed bash_history_inhibit_expansion() so that extended globbing + expressions like *.!(c) are not history expanded if extended_glob + is non-zero (shopt -s extglob has been executed) + + 3/2 + --- +Makefile.in + - changed release status to `beta1' + +[bash-2.02-beta1 frozen] + + 3/17 + ---- +lib/readline/vi_mode.c + - make sure _rl_vi_save_insert() gets a non-null UNDO_LIST pointer + before trying to do anything with it + +jobs.c + - add a call to internal_warning from wait_for_job if the job is + stopped + - changed notify_of_job_status to not report pipelines exiting due to + SIGPIPE in non-interactive shells if the shell is compiled with + -DDONT_REPORT_SIGPIPE + +builtins/psize.sh + - some fixes to try to avoid /tmp file races and surreptitious + substitutions + +version.c + - changed the extended version info to show 1998 as the copyright year + +parse.y + - fixes from Andreas Schwab + for compilation errors when the shell is configured --disable-alias + but with dparen arithmetic enabled + +eval.c + - fixes from Andreas Schwab to + make sure the input stream is popped correctly when performing an + array assignment in the command argument to `bash -c', e.g., + `bash -c 'A=()'' + +builtins/kill.def + - make `kill' with no arguments print a usage message and return a + failure status + +alias.c + - fix so that rd_token doesn't dump core when trying to do alias + expansion on a line containing an unclosed single quote (fix from + Vasco Pedro ) + +builtins/cd.def + - fix so that using a non-empty directory from CDPATH to construct + the name of the directory to change to results in an absolute + pathname of the new current working directory being displayed, + as POSIX.2 specifies + +support/bashbug.sh + - a couple of small fixes to minimize /tmp file races -- the script + is still raceable, the window is just smaller + + 3/24 + ---- +variables.c + - make sure assign_in_env passes a malloc'd string to + expand_string_unsplit, because some of the error code assumes that + it is malloc'd and frees it (bug reported by Marko.Makela@HUT.FI) + + 3/25 + ---- +doc/bashref.texi + - changed the email addresses to use the @email texinfo tag + +trap.c + - call reset_parser from the exit trap code before calling + parse_and_execute, so reserved words are parsed correctly + +subst.c + - make sure parameter_brace_patsub expands the pattern string as if + the expression were not in double quotes, even if the entire + expansion is enclosed in double quotes, so that quote removal + on embedded double quotes is performed correctly (bug report from + schwab@issan.informatik.uni-dortmund.de) + + 3/27 + ---- +support/config.guess + - changes to allow Power PCs running Apple's Rhapsody to configure + + 3/31 + ---- + +Makefile.in + - changed release status to `beta2' + +[bash-2.02-beta2 frozen] + + 4/6 + --- +subst.c + - make sure command_substitute does not try to set the terminal's + process group to a background job + +[bash-2.02 frozen] + + 4/18 + ---- +[bash-2.02 released] + + 4/20 + ---- +bashline.c + - make sure that rl_defun is not called for + history-and-alias-expand-line unless both ALIAS and BANG_HISTORY + are defined + [in bash-2.02.1] + + 4/22 + ---- +make_cmd.c + - make sure that make_here_document allocates enough space for the + first line of the here document, by using the line length +2 + (instead of 1000, which is what the old code did, and breaks if + the first line of the here document is enough longer than 1000 + characters to cause other memory to be scribbled on) + [in bash-2.02.1] + +builtins/cd.def + - when in posix mode, a value of "" for CDPATH should be treated the + same as the current directory, not result in an error + [in bash-2.02.1] + +lib/malloc/malloc.c + - change the mh_align member of `union mhead' to be of type double + rather than a pointer, so that malloc will return (hopefully) + 8-byte aligned memory + [in bash-2.02.1] + + 4/23 + ---- +aclocal.m4 + - add a new macro to check whether or not off_t is 64 bits + + 4/24 + ---- +configure.in + - fixed a typo so the bash malloc is not compiled in on mips-sgi-irix6 + +lib/readline/display.c + - fix for readline redisplay if the prompt string is longer than the + screen width and includes invisible characters + [in bash-2.02.1] + +jobs.c + - make_child should not set the terminal's process group to + pipeline_pgrp if pipeline_pgrp == shell_pgrp (indicating that we + are forking a child for a command substitution) + [in bash-2.02.1] + +subst.c + - in execute_simple_command, in the child forked if there is a pipe + or the command is asynchronous, set subshell_environment to + SUBSHELL_ASYNC only if the command is asynchronous, SUBSHELL_FORK + if there is a pipe in or out + [in bash-2.02.1] + + 4/27 + ---- +support/texi2dvi + - upgraded to version 0.8 (from 0.5) + +support/texi2html + - upgraded to version 1.52 (from 1.51) + +support/config.sub + - config.sub now recognizes all the permutations of the system name + that config.guess produces for alphas + [in bash-2.02.1] + +aclocal.m4 + - changed BASH_TYPE_INT32_T, BASH_TYPE_U_INT32_T, and + BASH_TYPE_PTRDIFF_T to avoid compiling a program; instead use + the values determined by the AC_CHECK_SIZEOF tests to determine + the default values to supply to AC_CHECK_TYPE + +configure.in + - don't call AC_CHECK_TYPE({int32_t,u_int32_t,ptrdiff_t}) from + configure.in; use the updated BASH_TYPE macros instead + +builtins/exec.def + - if shell_execve fails, set ARGS to null because the realloc() call + by shell_execve may have caused it to be reallocated and freed -- + we don't want to free the memory twice + +lib/glob/fnmatch.c + - fixes from ache@nagual.pp.ru to make fnmatch work for eight-bit + characters when `isupper' and `islower' are used -- they were + restricted to ASCII characters before, probably to work around + some ancient, broken C libraries in which is{low,upp}er are valid + only for ASCII characters and return bogus values otherwise + [in bash-2.02.1] + + 4/29 + ---- +builtins/cd.def + - fixed a problem with the shell displaying the old working directory + instead of the new one after changing to a directory found via + $CDPATH when in physical mode (set -o physical) + [in bash-2.02.1] + +make_cmd.c + - make make_cond_command initialize the line number from the cond_node + that's passed as an argument (not that it's used right now) + +copy_cmd.c + - make sure that copy_cond_command copies the type of the cond command, + since execute_cond_command uses that to decide what kind of test + to perform + [in bash-2.02.1] + +builtins/printf.def + - make sure the for loop that processes the format string actually + consumes arguments; otherwise process it only once to avoid + infinite loops (e.g., `printf " " abc def ghi') + [in bash-2.02.1] + - if the format string is empty after preprocessing by ansicstr, + return immediately + [in bash-2.02.1] + +tests/run-printf + - use `diff -a' so the presence of a non-printing character in the + output doesn't confuse diff into thinking the files are binary + (test whether or not `diff' supports `-a' first) + +Makefile.in + - keep $(LOCAL_LIBS) from being specified twice + + 4/30 + ---- +support/shobj-conf + - a script to generate variables to do shared object configuration + for the loadable builtin stuff + +configure.in + - added a section for shared object configuration using an `eval' + of the output of shobj-conf and substituting the generated values + with AC_SUBST + +examples/loadables/Makefile.in + - the system-specific shared object configuration variables are now + substituted by configure + + 5/4 + --- +builtins/ulimit.def + - some changes for HPUX 9.x's peculiar handling of RLIMIT_FILESIZE + - changed the limit retrieval functions to return an error code + and the value in a reference argument to avoid use of RLIM_INVALID + +general.c + - new function, get_group_array(), which returns an array of + gids + +examples/loadables/{id,printenv,sync,uname,whoami,push}.c + - new loadable builtins + +variables.c + - moved code that initializes $PPID into a new function, set_ppid() + +variables.h + - extern declaration for set_ppid() + + 5/6 + --- +subst.c + - make sure that the `"' (double-quoted string) case of + expand_word_internal calls string_list_dollar_at if we've expanded + a double-quoted $@ so correct splitting on $IFS is done when + the expansion is complete. We can't simply call string_list + because that forces a space separator, and $IFS may not contain + a space + [in bash-2.02.1] + + 5/7 + --- +builtins/umask.def + - broke the code that parses a symbolic mode out of symbolic_umask + into a separate function that takes a symbolic mode and an initial + set of bits to modify + +examples/loadables/mkdir.c + - new loadable builtin + + 5/11 + ---- +builtins/printf.def + - use the format string length provided by ansicstr() to process the + format string, rather than testing for nullness, to handle NUL + bytes in the expanded format string + +builtins/pushd.def + - changes so it can be built as both a regular builtin and a loadable + builtin from the same source + +examples/loadables/Makefile.in + - changes to build pushd.c from ${topdir}/builtins/pushd.def and then + compile it with the correct flags to make it a loadable builtin, + even if PUSHD_AND_POPD is not defined in config.h + + 5/12 + ---- +lib/readline/complete.c + - use rl_completer_quote_characters instead of #ifdef SHELL/#endif + code in make_quoted_replacement. This means complete.c no longer + has any #ifdef SHELL code + + 5/13 + ---- +builtins/Makefile.in + - `make clean' should remove mkbuiltins.o + +Makefile.in + - all of the various `clean' targets need to descend into lib/sh + and run the appropriate target there + +builtins/type.def + - changed to use the builtin getopt. The old long options are + handled by prescanning the argument list looking for the long + options, processing them, and taking them out of the list before + passing it to internal_getopt() + +lib/readline/signals.c + - removed #ifdef SHELL code -- job control signals and SIGTERM are + always set in rl_set_signals, but are set to SIG_IGN if the old + handler was SIG_IGN (as bash sets it) + - new function rl_maybe_set_sighandler, which sets the signal + disposition back to SIG_IGN if the old handler was SIG_IGN + - removed #ifdef HANDLE_JOB_SIGNALS and #ifdef HANDLE_SIGTERM code + +lib/readline/rltty.c + - removed #ifdef SHELL code -- set_winsize is always called + to force the application to stop if it's not in the foreground + before getting the tty attributes + + 5/14 + ---- +lib/readline/signals.c + - readline now catches SIGQUIT and cleans up the tty before resending + it to its container application (unless the calling application has + set the disposition of SIGQUIT to be SIG_IGN) + - rl_handle_sigwinch is now called rl_sigwinch_handler + - rl_sigwinch_handler now calls rl_resize_terminal to fetch the + screen size after a SIGWINCH + - the sighandler_cxt struct for non-posix systems now includes + sa_flags and sa_mask variables, for future use + - new variable, rl_catch_signals, indicating that readline should + install its own signal handlers for SIGINT, SIGTERM, SIGQUIT, + SIGALRM, SIGTSTP, SIGTTIN, and SIGTTOU + - new variable, rl_catch_sigwinch, indicating that readline should + install its own SIGWINCH handler, which will chain to a calling + application's SIGWINCH handler + - new function, rl_free_line_state(), to free up variable state + associated with the current line after receiving a signal + - new function, rl_cleanup_after_signal(), to clean up the display + and terminal state after receiving a signal + - new function, rl_reset_after_signal(), to reinitialize the + terminal state after a signal handler returns and readline + continues + - rl_set_signals and rl_clear_signals now look at the values of + rl_catch_signals and rl_catch_sigwinch + +lib/readline/terminal.c + - new function rl_resize_terminal (), to reset readline's idea of + the screen size after a SIGWINCH + +lib/readline/readline.h + - extern declarations for rl_resize_terminal(), rl_free_line_state(), + rl_cleanup_after_signal(), rl_reset_after_signal() + - extern declarations for rl_catch_signals and rl_catch_sigwinch + +variables.c + - new functions, get_env_value(char *) and get_home_dir(void) to + satisfy references from the tilde and readline libraries when + they are compiled as part of bash + +lib/tilde/tilde.c + - rely on extern declarations of get_env_value and get_home_dir; + there is no more #ifdef SHELL code + +lib/readline/shell.c + - implementation of get_home_dir that uses getpwuid() to satisfy + references from tilde.c when not compiled as part of bash + - removed savestring() + - removed #ifdef SHELL/#endif pair -- all of these functions will be + resolved from bash when readline is linked into bash + +lib/readline/savestring.c + - new file, with function definition for savestring() for backwards + compatibility + +Makefile.in, _distribution + - bumped things up to bash-2.03-alpha + + 5/15 + ---- +lib/readline/rlconf.h + - removed #ifdef SHELL/#endif pair, so the callback stuff will be + compiled into libreadline, but never linked into bash (since it's + not referenced) + +configure.in + - added new `--with-installed-readline' option to allow readline to + be linked with an already-installed version -- this will probably + not work with versions of readline prior to 2.3 (libreadline.so.4) + [THIS IS STILL UNDOCUMENTED] + +Makefile.in + - changed necessary variables to allow the `--with-installed-readline' + option to work; shared and static libraries are supported + + 5/18 + ---- +lib/readline/display.c + - _rl_save_prompt is now rl_save_prompt; _rl_restore_prompt is now + rl_restore_prompt + +lib/readline/readline.h + - extern declarations for rl_save_prompt and rl_restore_prompt + +lib/readline/{search,isearch,readline,display}.c + - converted calls to _rl_{save,restore}_prompt () to use new public + versions + +lib/readline/doc/rltech.texinfo + - documented new public functions rl_{save,restore}_prompt + + 5/19 + ---- +lib/readline/readline.c + - new hook function variable, rl_pre_input_hook. If non-zero, it's + called from readline_internal_setup just before it returns and + readline starts reading input + +lib/readline/readline.h + - extern declaration for rl_pre_input_hook + +lib/readline/doc/rltech.texinfo + - documented new variable rl_pre_input_hook + + 5/20 + ---- +lib/readline/complete.c + - new hook function variable, rl_completion_display_matches_hook. + If non-null, this function is called when readline would normally + display the list of completion matches + +lib/readline/readline.h + - extern declaration for rl_completion_display_matches_hook + +lib/readline/doc/rltech.texinfo + - documented rl_completion_display_matches_hook + +lib/readline/readline.c + - if RL_LIBRARY_VERSION is not defined, define it to 4.0 to match + the version number of the shared libraries + +lib/readline/doc/{hist,rlman}.texinfo + - changed the version and edition to 4.0 to match the library version + +support/config.guess + - added case clause for matching UnixWare 7 from SCO (SVR5) -- further + work may be needed + [These fixes were in a usenet posting from hops@sco.com] + +support/config.sub + - added case clauses to recognize various aliases for SCO Open Server + and Open Desktop + [in bash-2.02.1] + - broke the code that canonicalizes unixware into unixware2 and + unixware7 clauses (multiple places) + [in bash-2.02.1] + - added clause to recognize `sysv5' for SVR5 + [These fixes were in a usenet posting from hops@sco.com] + [in bash-2.02.1] + +configure.in + - add `-b elf' to LOCAL_CFLAGS for sco3.2v5* to allow dynamic linking + (and loadable builtins) + - add AC_DEFINE(SVR5) on SVR5 (unixware 7) + +config.h.in + - add #undef SVR5, set by configure + + 5/21 + ---- +shell.c + - line-buffer stdout and stderr in shell_initialize only if + shell_initialized is 0 on all systems, not just SunOS 5 + [in bash-2.02.1] + +support/rlvers.sh + - script to print out the version number of any installed + readline library + +configure.in + - only allow --with-installed-readline if the version of the + installed readline library is 4.0 or greater + + 5/22 + ---- +lib/readline/complete.c + - broke the code that actually displays a list of completion + matches on the output stream into a separate public function, + rl_display_match_list, so it can be called from the hook + function rl_completion_display_matches_hook. + +lib/readline/readline.h + - new extern declaration for rl_display_match_list + +lib/readline/rltech.texinfo + - documented rl_display_match_list + +configure.in,Makefile.in + - --enable-static-link now creates a STATIC_LD variable in Makefile + rather than adding to LDFLAGS directly. LDFLAGS now includes + $(STATIC_LD) + + 6/2 + --- +builtins/cd.def + - OLDPWD is now auto-exported + - broke the code out of bindpwd() that updated the value of PWD in + the export environment in-place and made it general, so it can + be used for OLDPWD, too (this should be made *more* general, and + moved to variables.c) + + 6/3 + --- +variables.c + - moved builtins/cd.def:export_pwd_var to here, renamed it to + update_export_env_inplace + - converted put_command_name_into_env to just call + update_export_env_inplace + - made dummy variable for OLDPWD, marked as invisible and exported, + in initialize_shell_variables + +variables.h + - extern declaration for update_export_env_inplace + +builtins/cd.def + - changed calls to export_pwd_var to update_export_env_inplace + +lib/readline/bind.c + - added missing return in rl_unbind_function_in_map + - changed _rl_read_file to check whether or not `read' returns + < 0 rather than < file_size + - _rl_read_init_file needs to free `openname' after calling + _rl_read_file, since it's not used again + +lib/readline/callback.c + - bogus extern declaration for `readline_internal_startup', should + be readline_internal_setup + +lib/readline/histfile.c + - read_history_range now checks whether read(2) returns < 0 rather + than checking the return value against the file size + +lib/readline/parens.c + - whoops -- timer.tv_usec is *micro* seconds, not milliseconds + +lib/readline/readline.c + - initialize `eof' to 1 in readline_internal_charloop + + 6/5 + --- +configure.in + - if we're configuring with an installed version of readline, set and + have configure substitute RL_INCLUDE to `-I$(includedir)', so the + build process uses the installed readline include files as well as + the libraries + +Makefile.in, builtins/Makefile.in + - add @RL_INCLUDE@ in the appropriate places, substituted by configure + +lib/readline/{history,readline}.h + - add `extern "C"' wrapper if `__cplusplus' is defined + +lib/glob/fnmatch.h + - include stdc.h + - add prototypes to extern declaration for fnmatch() + +lib/readline/rlstdc.h + - link to ../posixheaders/stdc.h (in readline lib with different name + for benefit of standalone readline library installation) + +lib/readline/{history,keymaps}.h + - include rlstdc.h + - add prototypes to all of the extern function declarations + +lib/readline/history.h + - the `data' member of a HIST_ENTRY is now a histdata_t, which is + either a void * (ansi c) or a char * (k&r c) + +lib/readline/readline.c + - changed calls to replace_history_entry to pass a histdata_t as the + third parameter + + 6/8 + --- +copy_cmd.c + - make sure that copy_cond_command doesn't blindly try to copy + com->op, since that will be null for AND and OR nodes, at least + [in bash-2.02.1] + +lib/readline/vi_mode.c + - added missing second argument to rl_vi_[fbe][Ww]ord(), since + they're used as pseudo-bindable commands (they appear in the + default funmap) as well as utility functions + +lib/readline/readline.h + - include rlstdc.h + - added prototypes for functions from vi_mode.c, util.c, terminal.c, + search.c, util.c, undo.c, readline.c, parens.c, macro.c, kill.c, + keymaps.c, isearch.c, input.c, funmap.c, display.c, complete.c, + callback.c, + - added extern declarations for functions from rltty.c + +lib/readline/{readline,util}.c + - rl_refresh_line now takes the standard two arguments for bindable + commands; changed callers + +lib/readline/*.c + - small cleanups for incorrect arguments, etc. uncovered by use of + function prototypes + +bashline.c + - small cleanups for incorrect arguments, etc. uncovered by use of + function prototypes + + 6/11 + ---- +jobs.c + - cast result of strsignal() to (char *) for the benefit of broken + Cray UNICOS machines + [in bash-2.02.1] + +configure.in,aclocal.m4 + - new test, BASH_TYPE_BITS64_T, used to find out what basic type is + 64 bits long; defaults to `double' + - call AC_CHECK_SIZEOF(double) + +config.h.in + - #define for bits64_t, undef by default + + 6/24 + ---- +aclocal.m4 + - changed BASH_TYPE_BITS64_T so that it checks the size of a char * + first, before trying sizeof(double) + +lib/readline/doc/rluser.texinfo,doc/{bash.1,readline.3} + - changed default binding for tilde-expand to M-&, since bash + overrides M-~ to force username completion + +bashline.c + - fixed an off-by-one error in hostnames_matching that exhibited + itself when an exact multiple of 16 hostnames matched (fix + from ) + [in bash-2.02.1] + + 6/30 + ---- +lib/readline/readline.c + - the maximum numeric argument is now 1000000 + +bashline.c + - fixed a bug in bash_directory_completion_hook that caused memory + to be freed twice if a directory name containing an unset + variable was completed and `set -u' had been set + +configure.in + - on LynxOS, add a -DRECYCLES_PIDS to LOCAL_CFLAGS + +execute_cmd.c + - make sure that the changes to make the shell fork early when + run in the background do not cause commands such as `%1 &' + to fork + [in bash-2.02.1] + - if RECYCLES_PIDS is defined, execute_command_internal sets + last_made_pid to NO_PID after waiting for a foreground process, + if the return status is 0 (fix from plai@Lynx.COM (Paul Lai)) + +lib/readline/kill.c + - fixes from Andreas Schwab to rl_yank_last_arg that make it + behave better + +lib/readline/input.c + - fixes from Donald Beaudry to make the input buffering + and rl_stuff_char work right when the input buffer is nearly full + (probably not a problem with keyboard input, but maybe a problem + with programmers attempting to use rl_stuff_char to preload the + input buffer) + + 7/14 + ---- +parse.y + - fix to decode_prompt_string so that the \$ expansion quotes the `$' + so it won't be processed by subsequent parameter expansion + - change read_token_word so a $$ appearing in a token is recognized + and parsed immediately, so a single or double quote after the + second `$' doesn't cause ANSI-C expansion or locale translation + (bug report from haertel@ichips.intel.com) + + 7/16 + ---- +lib/readline/display.c + - fixed a bug that caused core dumps in xrealloc if the prompt was + longer than 1024 characters + + 7/21 + ---- +builtins/mkbuiltins.c + - if the number of characters read from the .def file is less than + the file size reported by `stat', and the read completed without + errors, reset the file size to avoid writing garbage at the end + of the generated .c file (needed on WIN32 systems, doesn't hurt + on Unix) + + 7/22 + ---- +CWRU/empty-for-wordlist + - patch from Brian Fox for parse.y to allow bash to accept an empty + `wordlist' after the `in' keyword in a for statement + + 7/23 + ---- +doc/bash.1 + - corrected the synopsis of the `for' and `select' statements to + indicate that the semicolon (or newline) after the optional + `in words' is required + +[bash-2.02.1 released] + + 7/28 + ---- +lib/readline/display.c + - make sure visible_length is initialized to 0 in rl_expand_prompt. + Fix from Gerhard Niklasch . + +lib/glob/glob.c + - make sure that quotes are removed from the filename being globbed + in glob_vector() before calling the GLOB_TESTNAME macro if there + are no globbing characters in the pattern + +doc/Makefile.in + - make sure that builtins.1 is looked for in $(srcdir) when running + `make install' (it's still commented out, though) + + 7/30 + ---- +config.h.bot + - if PROMPT_STRING_DECODE is not defined, define PPROMPT (the primary + prompt string) as "$ " + +variables.c + - if PROMPT_STRING_DECODE is not defined, and current_user.euid == 0, + PS1 defaults to "# ", otherwise it defaults to `primary_prompt' + +doc/bashbug.1 + - fixed email address prep.ai.mit.edu -> gnu.org + + 8/3 + --- +support/shobj-conf + - add `solaris2' as a possible OS name, treated the same as sunos5 + + 8/4 + --- +shell.c + - changed maybe_make_restricted() so that $ENV and $BASH_ENV are + read-only variables in a restricted shell + +doc/{bash.1,bashref.texi} + - added ENV and BASH_ENV to the list of readonly variables in + restricted mode + +parse.y + - added `do', `then', `else', `{', and `(' to the list of keywords + that may precede the `time' reserved word + +general.c + - added sanity checks to timeval_to_secs and clock_t_to_secs so + that if the fractional part is >= 1000, 1 is added to the + seconds and 1000 is subtracted from the fractional seconds + + 8/6 + --- +Makefile.in + - use $(CC_FOR_BUILD) to build mksignames + +configure.in + - changes to allow cross-building for BeOS as well as cygwin32 + +cross-build/{beos-sig.h,x86-beos.cache} + - new files for cross-compiling for BeOS + + 8/7 + --- +Makefile.in + - changed rule for version.h to use && instead of if-then-else-fi to + make sure the recipe fails if mkversion.sh fails + +configure.in + - beos does not use the GNU malloc + +lib/sh/itos.c + - broke itos into inttostr(i, buf, len) and itos(i), which calls + inttostr and returns a newly-allocated string with the result + +support/mksignames.c + - define `SIGKILLTHR' if system include files define it + +externs.h + - extern declaration for inttostr(int, char *, int) + + 8/13 + ---- +lib/sh/strtol.c + - include stdc.h before bashansi.h + +execute_cmd.c + - make sure that execute_cond_node treats `=' the same as `==' + + 8/25 + ---- +variables.c, print_cmd.c + - changed some calls to itos to use inttostr instead + +cross-build/x86-beos.cache, {execute_cmd,general,shell,trap}.c + - some changes for BeOS (from fnf@ninemoons.com) + +lib/posixheaders/memalloc.h + - changes to handle case where we're using both gcc and the C + version of alloca(), or if we have alloca.h and we're using + the C version of alloca() (from fnf@ninemoons.com) + +lib/sh/oslib.c + - if bcopy or bzero are #defines, #undef them before defining + replacement functions + +support/config.guess + - recognize AmigaOS (from fnf@ninemoons.com) + - recognize BeOS running on various machines + (from fnf@ninemoons.com) + +support/config.sub + - change basic_machine definition for amiga; added amigaos + (from fnf@ninemoons.com) + - changed definitions for MIPS machines running Linux (from + fnf@ninemoons.com) + - recognize `beos' as a valid operating system + (from fnf@ninemoons.com) + - changed OS for *-cbm to `amigaos' rather than `amigados' + (from fnf@ninemoons.com) + +examples/functions/autoload.v3 + - a new version, from Mark Kennedy + +lib/readline/readline.c + - new function, rl_delete_or_show_completions, like tcsh editing + function delete-char-or-list + +lib/readline/readline.h + - new extern declaration for rl_delete_or_show_completions + +lib/readline/funmap.c + - new bindable name `delete-char-or-list', like tcsh + +lib/readline/doc/rluser.texinfo, doc/{bash.1,readline.3} + - documented new delete-char-or-list command + +general.c + - fix full_pathname to keep it from generating things like + //foo when the current directory is / + + 8/27 + ---- +builtins/fc.def + - fixed the help text for the -e option + + 8/28 + ---- +support/shobj-conf + - added a clause for AIX 4.2 systems running gcc -- just the + standard gcc stuff for shared objects, but it has to come + before the other AIX 4.2 clause + + 8/31 + ---- +shell.c + - some changes so that `set -e' is turned off while executing + the startup files + + 9/3 + --- +flags.c + - new variable, `restricted_shell', non-zero if the shell was + started in restricted mode + +flags.h + - extern declaration for restricted_shell + +shell.c + - new function, shell_is_restricted, returns 1 if the shell is + supposed to be restricted based on the basename of $0 or the + -r option + - set restricted_shell to the value returned by shell_is_restricted + before executing the startup files + +externs.h + - extern declaration for shell_is_restricted + +builtins/shopt.def + - new shopt variable, restricted_shell, indicates whether the shell + was restricted at startup -- useful in startup files + +doc/{bash.1,bashref.texi} + - documented new restricted_shell shopt option + + 9/15 + ---- +lib/sh/rename.c + - new file, replacement for rename(2) if the OS doesn't provide it + +configure.in,config.h.in,Makefile.in,lib/sh/Makefile.in + - machinery for including rename.o in libsh.a + +nojobs.c + - make sure that set_tty_state returns a value + +builtins/mkbuiltins.c + - use a call to rename(2) instead of a link/unlink pair + +lib/glob/glob.c + - don't #define bcopy if bcopy is already defined + +lib/readline/histfile.c + - add a call to ftruncate for BeOS, which ignores the O_TRUNC flag + to open + +lib/readline/input.c + - make rl_getc loop if read returns -1/EINTR on BeOS + +configure.in + - set ARFLAGS and substitute it into the Makefiles + +{,builtins,lib/{glob,malloc,readline,sh,termcap,tilde}}/Makefile.in + - ARFLAGS is now substituted by configure + - use ARFLAGS in rules that create libraries using $(AR) + +builtins/printf.def + - fixed bug that caused a core dump when a modifier was supplied + in the format string without a conversion character (e.g. `%h') + + 9/17 + ---- +lib/glob/glob.c + - if filenames starting with a dot don't have to be matched + explicitly (e.g., after a `shopt -s dotglob'), don't match + `.' or `..' in any case + +eval.c + - make sure that array assignments don't show up in the history list + (fix from Andreas Schwab ) + +lib/readline/complete.c + - fix to rl_menu_complete so it inserts a single completion properly + when a word matches only one filename + + 9/24 + ---- +execute_cmd.c + - difftimeval should zero out the tv_usec field if the tv_sec field + is < 0 + - addtimeval should check for tv_usec being == 1000000 and add one + to tv_sec if it is + + 9/25 + ---- +subst.c + - fix to expand_word_internal to prevent non-whitespace IFS characters + from causing word splitting if they are not the results of an + expansion (not exactly right yet, but I think it's the result of a + problem with the ${...} end-brace-matching code in the parser) + + 9/28 + ---- +parse.y + - new flag for parse_matched_pair -- P_FIRSTCLOSE -- which makes it not + count and match additional construct open characters + - change calls to parse_matched_pair when matching braces in + ${...} constructs (both unquoted and within double quotes) to + specify the P_FIRSTCLOSE flag to match POSIX.2 requirements + +subst.c + - changed fix from 9/25, now that the parser problem is fixed + + 9/30 + ---- +variables.c + - change expansion of list of words between (...) in array assignments + to include pathname generation in assign_array_var_from_string + +doc/{bash.1,bashref.texi} + - clarified behavior of the shell at startup if running setuid, with + and without the -p option supplied + + 10/7 + ---- +bashhist.c + - change default open(2) mode to 0600 instead of 0666 for `privacy + concerns' + + 10/13 + ----- +lib/readline/display.c + - fixed a problem with displaying tabs after newlines, from + + - in update_line, if we are printing over existing material, + only call space_to_eol or _rl_clear_to_eol if lendiff is non-zero + - when moving the cursor in _rl_move_cursor_relative, only call + _rl_backspace if the current cursor position is strictly greater + than the desired cursor position + + 10/14 + ----- +locale.c + - LC_ALL is no longer set automatically when LANG is assigned a value + +config.h.{top,bot} + - renamed to config-{top,bot}.h, respectively + +config.h.in + - include config-top.h and config-bot.h + +Makefile.in + - things now depend on config-top.h and config-bot.h + +subst.c + - minor changes to extract_dollar_brace_string and char_is_quoted to + allow things like "${PIP[TAB] to perform correct variable completion + + 10/15 + ----- +builtins/Makefile.in + - add $(PROFILE_FLAGS) to the make recipe that creates `mkbuiltins', + so configuring with --enable-profiling works right + + 10/20 + ----- +doc/bashref.texi + - documented the new --with-installed-readline option + +[bash-2.03-alpha1 frozen] + + 10/21 + ----- +builtins/reserved.def + - fixed help text for { ... } to make it clear that a semicolon is + required before the closing brace + + 10/22 + ----- +trap.c + - in decode_signal, don't bother calling strcasecmp if + signal_names[sig] is null or empty + + 11/2 + ---- +configure.in + - make sure RL_LIBDIR and HIST_LIBDIR are assigned values even if + readline or history is configured out of the shell, so the -L + options have arguments in the link command + +test.c + - make test_syntax_error cause test to return a status > 1, to + conform to POSIX.2 4.62.8 + +doc/readline.3 + - make sure the SYNOPSIS section indicates that programmers should + include before + + 11/9 + ---- +Makefile.in + - install with explicit mode of 0755 + + 11/10 + ----- +builtins/test.def + - make sure that a missing `]' makes `[' exit with status 2, to + conform to POSIX.2 4.62.8 + +command.h + - new word flag: W_NOGLOB, meaning to not perform globbing + +execute_cmd.c + - fix_assignment_statements now turns on the W_NOGLOB flag for + arguments to `assignment builtins' that have W_ASSIGNMENT set + +subst.c + - expand_word_internal needs to preserve the W_NOGLOB flag from + the word being expanded to the word being returned + - glob_expand_word_list does not call shell_glob_filename for a + word with W_NOGLOB set + +builtins/shopt.def + - print_shopt is now void + +configure.in + - machines running Rhapsody don't use the bash malloc + - pass host_vendor to the Makefiles with AC_SUBST + +support/config.guess + - Rhapsody is really rhapsody, not nextstep + +support/config.sub + - add rhapsody to the list of supported configurations + +Makefile.in + - pass CONF_HOSTTYPE, CONF_OSTYPE, and CONF_MACHTYPE as -D options + in SYSTEM_FLAGS, to indicate that they came from the configuration + process + - set VENDOR variable from host_vendor configuration variable + - pass CONF_VENDOR as part of SYSTEM_FLAGS + +variables.c + - define HOSTTYPE, OSTYPE, and MACHTYPE as CONF_HOSTTYPE, CONF_OSTYPE, + and CONF_MACHTYPE, respectively + + 11/11 + ----- +doc/{bashref.texi,bash.1} + - updated description of `read' to clarify the -r option and its + effect on backslash escaping + + 11/13 + ----- +examples/loadables/{ln,unlink}.c + - new loadable builtins + + 11/23 + ----- +lib/glob/fnmatch.c + - some fixes to handle extended glob patterns immediately following + a `*' + +tests/extglob.tests + - updated with cases from bug report fixed today + +support/shobj-conf + - udpated stanza for aix 4.2 with gcc, based on information from + jik@cisco.com + +configure.in + - changes to add the correct linker options to allow dynamic linking + when using gcc on AIX 4.2, instead of insisting on the AIX C + compiler + +examples/misc/aliasconv.{bash,sh} + - changes to handle aliases with embedded single quotes + + 11/25 + ----- +lib/readline/complete.c + - postprocess_matches should call compute_lcd_of_matches with an + argument of `t' instead of `text' + - postprocess_matches should never call ding(); leave that for the + callers + - postprocess_matches no longer needs `text' as the first argument + - rl_complete_internal needs to call ding() if postprocess_matches + returns 0, since postprocess_matches no longer does it + - rl_complete_internal can now free `text' immediately after calling + gen_completion_matches, since it's no longer used + + 11/30 + ----- +print_cmd.c + - make sure redirections following compound commands have a space + separating them from the command + + 12/1 + ---- +general.c + - changed canonicalize_pathname so that if the result path begins + with `//', it will be changed to `/' if and only if the original + path did not begin with `//' (there has to be a non-slash after + the leading `///' in the original path) + + 12/2 + ---- +builtins/evalstring.c + - augment the test for turning on CMD_NO_FORK to make sure that + parse_and_execute_level == 1. That takes care of things like + + bash -c 'for f in 1 2 3; do eval "/bin/echo \"$f\"" ; done' + + only printing one line of output + + 12/8 + ---- +config-top.h + - add commented-out #define for NON_INTERACTIVE_LOGIN_SHELLS so + that users may, if they choose, make things like + + #! /bin/bash --login + + work in shell scripts + + 12/10 + ----- +jobs.c + - changes to the way jobs are reaped when the shell is not + interactive: + + o notify_of_job_status no longer marks dead jobs as + notified if they did not exit due to a signal; + o changed mark_background_jobs_as_notified to take an + argument `force': if zero, we only mark enough + dead jobs as notified to keep CHILD_MAX jobs in the + jobs list, as POSIX.2 specifies. If non-zero, mark + all dead jobs as notified; + o wait_for_background_pids marks all dead jobs as + notified when it has finished waiting for everything, + since the only thing that calls it is the `wait' builtin; + o wait_for_single_pid marks a job as notified after it + has completed, since the only things that call it are + wait_for_background_pids and the `wait' builtin + o wait_for_job marks the job as notified after the last + pid completes + +execute_cmd.c + - change execute_subshell_builtin_or_function to check + subshell_environment and pipe_out to decide whether or not to fork + if builtin == jobs_builtin, since the early-forking code added in + bash-2.02 means that the piping has probably already been done + + 12/15 + ----- +parse.y + - changes to make avar=((...)) a syntax error instead of ignoring + the nested parens and treating it as an array assignment + +shell.c + - changed run_startup_files so that any shell, whether or not it is + interactive, will run the login shell startup files when given the + --login option. This happens only when not in posix mode. + +builtins/enable.def + - changes to handle Tenon's MachTen, whose dlclose() does not return + a value + +lib/glob/fnmatch.c + - changed gmatch so that when it calls extmatch, it removes FNM_PERIOD + from the flags if it's not matching at the start of the string. + This fixes the problem of `@' and `+' extended-glob subpatterns + containing bracket expressions treating `.' specially when matching + a portion of the string starting with `.' + +config-top.h + - removed define for NON_INTERACTIVE_LOGIN_SHELLS, since it's no longer + necessary + + 12/17 + ----- +lib/readline/complete.c + - change rl_complete_internal and rl_menu_complete to check + rl_filename_completion_desired to decide whether or not we're + completing filenames instead of checking whether the attempted + completion function is filename_completion_function. + filename_completion_function sets rl_filename_completion_desired, + so this shouldn't break anything -- just allow postprocessing of + matches for user-supplied filename completion functions that don't + call filename_completion_function + +lib/readline/display.c + - new function, _rl_erase_entire_line, which erases the entire line, + no matter where the cursor is, and puts the cursor at the beginning + of the (newly-empty) line + +lib/readline/readline.c + - new application-level variable, rl_erase_empty_line, which, if + non-zero, tells readline to erase the contents of the current line, + prompt and all, if the only character typed to an otherwise-blank + line is bound to rl_newline. Requested by the Cygnus GDB folks. + - change to rl_newline to suppress the call to _rl_update_final if + rl_erase_empty_line is non-zero, and rl_point == rl_end == 0, since + _rl_update_final calls crlf() + - change to readline_internal_charloop to call _rl_erase_entire_line + if newline was the only thing typed on an otherwise-empty line + +lib/readline/readline.h + - extern declaration for rl_erase_empty_line + +lib/readline/doc/rltech.texinfo + - documented new rl_erase_empty_line variable + + 12/18 + ----- +Makefile.in + - changed RELSTATUS to `beta1' + +[bash-2.03-beta1 frozen] + + 12/21 + ----- +doc/{bash.1,bashref.texi} + - added description of `test -h'; equivalent to `test -L' + + 12/22 + ----- +support/shobj-conf + - SHOBJ_LDFLAGS should be those options to ld which are common + between building dynamically loadable shared objects and shared + libraries + - added two new variables: SHOBJ_XLDFLAGS, which are ld options + specific to building dynamically loaded shared objects, and + SHLIB_LIBS, which are other libraries against which shared libraries + should be linked. These are for the benefit of AIX 4.2; other + stanzas do not need to be changed. + +configure.in + - add call to AC_SUBST for SHOBJ_XLDFLAGS + +examples/loadables/Makefile.in + - SHOBJ_XLDFLAGS is now substituted by configure + - $(SHOBJ_LDFLAGS) -> $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) in all + recipes that build loadable builtins + + 12/29 + ----- +support/config.{guess,sub} + - changes for NEC SX4 machines running SUPER-UX (?). Info from + Nicholas Clark + +lib/readline/bind.c + - new bindable variable, `isearch-terminators', which is the list of + characters that will terminate an incremental search without + subsequently executing the character as a command + +lib/readline/isearch.c + - changes to incorporate the new isearch-terminators bindable variable; + uses new private readline variable _rl_isearch_terminators + (suggested by Brian Fox) + +doc/{bash.1,readline.3}, lib/readline/doc/rluser.texinfo + - documented new `isearch-terminators' settable variable + +lib/readline/complete.c + - new convenience function, free_match_list, called from + rl_complete_internal + + 12/30 + ----- +aclocal.m4 + - changed the calls to AC_MSG_ERROR in the cross-compiling sections + to AC_MSG_WARN, since AC_MSG_ERROR can cause configure to abort + +examples/functions/which + - new function, emulation of `which' as it appears in FreeBSD + + 12/31 + ----- +lib/readline/readline.c + - new bindable function: rl_rubout_or_delete. Does rl_rubout if + rl_point is at the end of the line, or rl_delete if not. This + is intended to mimic the Motif/Netscape/GNOME behavior of the + DEL character, and can be bound to delete to get that behavior + +lib/readline/readline.h + - new extern declaration for rl_rubout_or_delete + +lib/readline/funmap.c + - bound the name `forward-backward-delete-char' to + rl_rubout_or_delete (currently not bound to any keys) + +lib/readline/doc/manvers.texinfo + - new file with readline manual version information, to mantain + consistent numbering between readline and history manuals + +lib/readline/doc/{rlman,hist}.texinfo + - @include manvers.texinfo for version information + - moved the @dircategory and and @direntry directives inside + the @ifinfo block + - changed copyrights to 1988-1999 + +doc/Makefile.in, lib/readline/doc/Makefile.in + - texi2html is now called with -menu (to handle the texinfo menus) + and -monolithic (to include the table of contents in the generated + HTML file instead of putting it in a separate file + - changed recipes to remove references to TOC html files + +lib/glob/fnmatch.c + - include or as appropriate for strchr() + declaration + + 1/4/1999 + -------- +print_cmd.c + - don't print bare words when printing conditional expressions in + print_cond_node, use cprintf("%s", cond->op->word) + +subst.c + - in separate_out_assignments, if VARLIST is non-null on function + entry, free it up to clean up after a previous error longjmp + + 1/5 + --- +configure.in + - make sure the case clause that disables the bash malloc on alpha + machines catches things like `alphaev56' as well as `alpha' + + 1/12 + ---- +lib/readline/histlib.h + - new error message code: NO_PREV_SUBST + +lib/readline/histexpand.c + - handle NO_PREV_SUBST with appropriate error message in hist_error + - in history_expand_internal, if the `s' or `&' case results in a + null or empty LHS, return NO_PREV_SUBST + +error.c + - new interface: command_error(func, code, e, flags); intended to + collect command-related errors in one place + - new interface: command_errstr(code); returns a string describing + command error CODE + +error.h + - extern declarations for command_error and command_errstr + +command.h + - possible values for CODE in calls to command_error and command_errstr + +{shell,print_cmd,make_cmd,execute_cmd,dispose_cmd,eval}.c ,builtins/evalstring.c + - changed some calls to programming_error to use command_error + + 1/13 + ---- +configure.in + - if --enable-profiling is specified on a solaris2 machine, don't + turn on enable-static-link, since it's very hard to build a + static binary on solaris2 and gprof does not (apparently) require it + +builtins/getopts.def + - add calls to sh_getopt_restore_state so the state is restored each + time getopts is called. This protects us against the behavior of + some mallocs, which causes `nextchar' to be set to garbage in + getopt.c when a function is called between calls to getopts + + 1/14 + ---- +lib/readline/complete.c + - if postprocess_matches returns 0 in rl_complete_internal, reset + completion_changed_buffer to 0 before returning, since nothing + has been changed + + 1/20 + ---- +subst.c + - fixed pat_subst so that null patterns with a `#' specifier prefix + the string to be substituted on with the replacement, and null + patterns with a `%' specifier append the replacement to the string + to be substituted on + +doc/{bash.1,bashref.texi} + - corrected a small error in the description of parameter pattern + substitution + +support/mksignames.c + - SIGINFO means something else on sequent systems + + 1/26 + ---- +execute_cmd.c + - fix to execute_simple_command to keep a child process from getting + a bad value of last_asynchronous_pid when the shell forks early + + 2/1 + --- +Makefile.in + - changed RELSTATUS to `beta2' + + 2/2 + --- +[bash-2.03-beta2 released] + + 2/3 + --- +tests/{cprint.{tests,right},run-cprint} + - new test to exercise the command printing and copying code -- + hopefully this will avoid things like the `conditional commands + in functions make the shell abort' problem + + 2/4 + --- +version.c + - if MACHTYPE is not defined, use CONF_MACHTYPE if it's defined + + 2/5 + --- +builtins/read.def + - if READLINE is defined, we need an extra pair of braces around + the `while' loop that reads from fd 0 if the -e option is + supplied, otherwise the code erroneously tests the value of + `retval', which is not set when using readline + + 2/15 + ---- +builtins/fc.def + - make sure that fc closes `stream' before calling fc_execute_file + + 2/17 + ---- +builtins/fc.def + - don't bother opening and closing the file of commands before + calling fc_execute_file, since parse_and_execute will write the + commands to the history file for us + +Makefile.in + - changed release status to `release' + + 2/18 + ---- +parse.y + - change to special_case_tokens so that `time' is not recognized + as a reserved word while the parser is parsing a case statement + pattern list (if `time' is the first pattern, the last read + token will be newline, which time_command_acceptable says is OK + to start a pipeline) + +pathexp.c + - some changes to the POSIX_GLOB_LIBRARY code (often unused) + +shell.c + - a couple of changes for Interix (nee OPENNT) + - added code that handles systems without a third argument to main(); + initializing `env' from `environ', conditionalized on a cpp define + NO_MAIN_ENV_ARG + +configure.in, config.h.in + - check for the presence of sbrk(2); define HAVE_SBRK if found + +xmalloc.c + - don't do the space allocated computation when malloc or realloc + fails if HAVE_SBRK is not defined + +configure.in + - new configure variable, MAKE_SHELL, defaults to /bin/sh + +Makefile.in,{builtins,doc,support,lib/{glob,malloc,readline,sh,termcap,tilde},examples/loadables}/Makefile.in + - set SHELL from @MAKE_SHELL@ + +lib/posixheaders/posixjmp.h + - Don't override defines for setjmp and longjmp in on + Internix (nee OPENNT) + +lib/readline/complete.c + - Interix (OPENNT) doesn't do username completion + +configure.in + - on Interix/OPENNT ($host_os == interix* or opennt*), add + -DNO_MAIN_ENV_ARG to LOCAL_CFLAGS + - on Interix/OPENNT, set MAKE_SHELL to $OPENNT_ROOT/bin/sh rather + than a straight /bin/sh + +cross-build/opennt.cache + - a `configure' cache file for Interix/OPENNT; not necessarily + for cross-compiling, but this is where the other system cache + files are + +[bash-2.03 released] + + 2/19 + ---- +configure.in + - changed OPENNT_ROOT to INTERIX_ROOT for building on Interix + +support/config.guess + - added two stanzas for Interix running on alpha and intel hardware + + 2/22 + ---- +config-bot.h + - if PROMPT_STRING_DECODE is not defined, #undef PPROMPT before + redefining it, to avoid warning messages + +execute_cmd.c + - set jobs_hack in execute_subshell_builtin_or_function only if + JOB_CONTROL is defined + + 2/24 + ---- +trap.c + - fixed an obscure bug caused by a race condition in run_pending_traps. + Read the comments in the source code for a full description of the + problem and solution + + 3/1 + --- +aclocal.m4 + - new test, BASH_STRUCT_TIMEVAL, which tries to compile a code + fragment that includes and as appropriate + and defines HAVE_TIMEVAL if the compile succeeds + +configure.in + - call BASH_STRUCT_TIMEVAL rather than running a pair of + AC_HEADER_EGREPs on sys/time.h and time.h + +lib/readline/histfile.c + - include "posixstat.h" rather than + - in history_truncate_file, only try to truncate if the history file + is a regular file + + 3/2 + --- +aclocal.m4 + - changed BASH_STRUCT_TIMEVAL back to using a pair of + AC_EGREP_HEADERs instead of compiling a program fragment + +lib/readline/readline.c + - readline_internal_charloop should cast the first argument to + _rl_dispatch to `unsigned char' to avoid problems with negative + array indices on systems where signed chars are the default + +lib/readline/kill.c + - instead of doing a sequence of next_history() calls in + rl_yank_nth_arg_internal, save and restore the history + position explicitly after finding the correct entry. This + attempts to ensure that rl_yank_nth_arg leaves the history + pointer set to the same position as when it was called. + Fix from Vasco Pedro + + 3/5 + --- +redir.c + - broke code that opens file for redirection in do_redirection_internal + into a separate function: redir_open(path, flags, mode, ri) + +general.h + - changed STREQN so that it evaluates to 1 (strings are equivalent) + if N == 0, to match the behavior of strncmp + +lib/sh/zwrite.c + - new file, zwrite() from builtins/evalstring.c + +builtins/evalstring.c + - removed private definition of zwrite + +builtins/common.c + - double_quote needs to protect newlines with backslashes as well + - new function, un_double_quote, to remove backslashes proctecting + characters that are special in double quotes + +builtins/common.h + - new extern declaration for un_double_quote + +parse.y + - changed read_token_word to requote the expanded value of $'...' + using single_quote + - added a new flag to parse_matched_pair: P_ALLOWESC. It allows + backslashes to quote embedded single quotes, and is used by + the $'...' translation code for better ksh93-compatibility + - changed localeexpand to call mk_msgstr on the string passed + before displaying it if all we're doing is displaying translatable + strings in `po' format. mk_msgstr quotes backslashes and double + quotes in the string passed with backslashes, and encloses the + result in double quotes. If only -D is supplied, the string is + not changed at all -- this is what ksh93 does + +lib/readline/rlconf.h + - removed PAREN_MATCHING #define, paren matching is always compiled + into readline + +lib/readline/parens.c + - removed code that was active if PAREN_MATCHING was not defined + - added _rl_enable_paren_matching, which is called when the readline + variable `blink-matching-paren' is assigned a value and changes + the appropriate key bindings in emacs_standard_keymap + +lib/readline/bind.c + - no more PAREN_MATCHING defines, `blink-matching-paren' is always + available + - if `blink-matching-paren' is assigned a value, call + _rl_enable_paren_matching (rl_blink_matching_paren) + +lib/readline/emacs_keymap.c + - removed PAREN_MATCHING defines; the default key bindings for + ), ], and } are self-insert + + 3/7 + --- +stringlib.c + - added an extra argument to ansicstr so that `echo -e' will not + convert \' to ' + +externs.h + - changed extern declaration for ansicstr + +parse.y, builtins/{echo,printf}.def + - changed calls to ansicstr() appropriately + +eval.c + - in parse_string_to_word_list, if an unexpected token is encountered + that causes the string to not parse to a simple command, or to + completely consume the string, display an error message and jump + back to the top level after restoring the parsing environment, + returning an error status from the attempted assignment + + 3/8 + --- +lib/glob/fnmatch.c + - fixed patscan and extmatch to handle embedded [...](...) patterns + better + +tests/{extglob2.{tests,right},run-extglob2} + - an additional set of ksh extended globbing tests, cribbed from zsh + + 3/10 + ---- +general.c + - changed unset_nodelay_mode slightly to make sure it handles both + O_NDELAY and O_NONBLOCK if they have different values; it now + returns a value of 0 on success (or no action); -1 on failure + +general.h + - changed extern declaration for unset_nodelay_mode + + +lib/readline/shell.c + - new function: unset_nodelay_mode; identical to definition in + general.c + +lib/readline/input.c + - changed rl_getc to call unset_nodelay_mode if the read fails with + errno == EWOULDBLOCK || errno == EAGAIN + + 3/11 + ---- +lib/termcap/termcap.c + - minor changes from termutils-2.0 + - minor change to MS-DOS version of valid_filename_p so MS-DOS-specific + code from tgetent() can be removed (from Michel@smr.nl) + +lib/readline/bind.c + - in _rl_read_file, null-terminate the buffer at the number of + characters actually read, not what stat() says the file size is + - use ~/_inputrc as a last-ditch inputrc filename on MS-DOS + +lib/readline/complete.c + - change printable_part to handle MS-DOS `drive-letter:' pathname + prefixes + - removed __GO32__ code, since it's for DJGPP 1.x, which is not + supported any more, and they don't work for DJGPP 2.x + - added code to support MS-DOS drive letter prefixes and //X/... + to filename_completion_function + - _rl_completion_case_fold defaults to 1 on MS-DOS + +lib/readline/{display,input,readline,rltty,signals,terminal}.c + - removed __GO32__ code + +lib/readline/histfile.c + - make read_history_range and history_truncate_file work with the + actual number of characters read from the file, not the file size + as reported by stat() + +lib/readline/readline.c + - change bind_arrow_keys_internal to bind MS-DOS arrow keys to the + appropriate functions if __MSDOS__ is defined + +lib/readline/rltty.c + - make sure set_winsize is always defined, with a null body if + TIOCGWINSZ is not defined + +lib/readline/shell.c + - include , since this file uses sprintf + +support/shobj-conf + - MS-DOS does not support shared objects + +lib/tilde/tilde.c + - change tilde_find_suffix and isolate_tilde_prefix to understand + backslash as a pathname separator on MS-DOS + + 3/12 + ---- +lib/readline/{bind,readline,terminal}.c + - no longer need to include + +lib/readline/terminal.c + - don't need to include + +builtins/history.def + - broke the code than handles deleting a particular history entry + from the history list out into a separate function: delete_histent + - added `-d offset' option to delete the history entry at position + OFFSET, as displayed when the history is listed + +jobs.c, nojobs.c + - new function, count_all_jobs(), returns the number of active jobs + in the jobs list + +jobs.h + - extern declaration for count_all_jobs() + +configure.in + - check for C library function ttyname() + +config.h.in + - define HAVE_TTYNAME if configure finds ttyname(3) + +parse.y + - two new escape sequences for decode_prompt_string: + + \j number of active jobs in jobs list + \l basename of shell's tty device name + +doc/{bash.1,bashref.texi}, lib/readline/doc/hsuser.texi + - documented new `history -d' option + - documented new \j and \l prompt string expansion sequences + +lib/readline/bind.c + - new static state variable, currently_reading_init_file, set to + 1 while _rl_read_init_file is operating on a file + - changed _rl_init_file_error to include the name and line number + from the init file only if currently_reading_init_file is non-zero + (this is needed since applications like bash can call + rl_parse_and_bind, and error messages from those calls would be + misleading if they referred to the last inputrc file read + +bashline.c + - support for a `extended command keymap', which will allow + readline key sequences to be bound to unix commands using an + auxiliary keymap and a special function that knows how to execute + commands from it + - bind_keyseq_to_unix_command supports `bind -x' + - bash_execute_unix_command is the readline callback that looks in + an auxiliary keymap to find the shell command to execute for a + particular key sequence + - new variable, no_empty_command_completion, which suppresses $PATH + searching for command completion when TAB is typed on an empty + line + +bashline.h + - extern declaration for new function bind_keyseq_to_unix_command + +builtins/bind.def + - added `-x' option to bind a key sequence to a shell command + +builtins/help.def + - added `-s' option to just print a builtin's short_doc + +builtins/shopt.def + - added new shell option, no_empty_cmd_completion', mirroring value + of no_empty_command_completion + +doc/{bash.1,bashref.texi} + - documented new `bind -x' option + - documented new shopt `no_empty_cmd_completion' option + - documented new `help -s' option + +Makefile.in + - changed RELSTATUS to `devel' + +_distribution + - changed to `2.04' + + 3/15 + ---- +support/shobj-conf + - add `-h $@' to linking options on Solaris 2 with gcc + +expr.c + - changes to add {pre,post}-{inc,dec}rement operators (++id, --id, + id++, id--). These are somewhat more liberal than ksh93, and + may require more strict syntax checking down the line + +tests/arith.{tests,right} + - additional tests for {pre,post}-{inc,dec}rement operators + + 3/16 + ---- +command.h + - structures and types for ksh-93-style arithmetic `for' command + +configure.in + - new `--enable-arith-for-command' option to compile arithmetic for + command code into the shell + +config.h.in + - new define, ARITH_FOR_COMMAND, turned on by configure + +parse.y + - changed read_token_word to parse a set of arithmetic for expressions + between (( and )) as long as the last token read before the `((' + was FOR + - added grammar rules to build arithmetic for commands + +make_cmd.c + - functions to parse (( ... )) into the three sub-expressions needed + for the arithmetic for command and create the command structures + (done this way instead of in the grammar rules to avoid forcing + users to quote special characters between the (( and )) ) + +make_cmd.h + - extern declaration for make_arith_for_command + +copy_cmd.c + - code to copy arithmetic for commands + +dispose_cmd.c + - code to dispose of arithmetic for commands + +print_cmd.c + - code to print arithmetic for commands + +execute_cmd.c + - code to execute arithmetic for commands and note that they are + shell control structures for the piping code + +doc/{bash.1,bashref.texi} + - documented new arithmetic for command + +doc/bashref.texi + - documented new configure --enable-arith-for-command option + + 3/17 + ---- +builtins/read.def + - added `-t timeout' option and code to support it + + 3/18 + ---- +examples/loadables/Makefile.in + - various clean targets need to descend into perl + +examples/loadables/perl/Makefile.in + - added mostlyclean and maintainer-clean targets + +include + - new directory, with files from lib/posixheaders + +lib/posixheaders + - removed + +{posixwait,unionwait,maxpath}.h + - moved from top src directory to include subdir + +Makefile.in,builtins/Makefile.in,lib/{glob,malloc,sh,tilde}/Makefile.in + - updated dependencies and file lists for new include directory + - added BASHINCDIR variable, added -I${BASHINCDIR} to cc's include path + +MANIFEST,support/SYMLINKS + - updated for new include directory + +lib/readline/{ansi_stdlib,posixdir,posixjmp,posixstat,rlstdc}.h + - changed symlinks to point to ../../include rather than + ../posixheaders + +builtins/common.h + - changed `#include "../stdc.h"' to `#include "stdc.h"' + +builtins/{cd,exec,fc,history,pushd,source,type,umask,printf}.def +builtins/{mkbuiltins,common,evalfile,evalstring,getopt}.c + - changed include specifications: + ../posixstat.h -> posixstat.h + ../filecntl.h -> filecntl.h + ../maxpath.h -> maxpath.h + ../memalloc.h -> memalloc.h + +include/shtty.h + - new file, contents of bashtty.h and code from jobs.c that includes + the appropriate terminal file + +lib/sh/shtty.c + - new file with some tty manipulation utility functions + +bashtty.h + - removed + +jobs.c, nojobs.c + - include shtty.h instead of bashty.h and other code that includes + the correct system-dependent tty include file + +lib/sh/Makefile.in + - added shtty.o as part of libsh.a + +MANIFEST + - added include/shtty.h and lib/sh/shtty.c, removed bashtty.h + + 3/19 + ---- +lib/readline/display.c + - some more __MSDOS__ code to make readline work better with DJGPP: + output \r instead of tputs(term_cr, ...) + +lib/readline/terminal.c + - some changes for __DJGPP__ (one is of dubious value -- doesn't + DJGPP have a termcap library?) + + 3/23 + ---- +configure.in + - make sure that the $CC argument to shobj-conf is quoted + +support/shobj-conf + - changes to SGI SHOBJ_LDFLAGS from David Kaelbling + + 3/24 + ---- +lib/sh/zread.c + - interface to read(2) that restarts automatically if errno == EINTR + +externs.h + - new declarations for functions in lib/sh/{zread,zwrite}.c + +lib/sh/Makefile.in, Makefile.in + - add zread.c, zread.o to appropriate file lists + +{subst,input}.c, builtins/{evalstring.c,read.def} + - converted some loops around read() to call zread() instead + +lib/readline/rltty.h + - new struct _rl_tty_chars to save tty special characters + +lib/readline/rltty.c + - new function save_tty_chars to save tty special characters + (currently they're only saved -- nothing looks at them yet) + - two new internal library functions, _rl_disable_tty_signals () + and _rl_restore_tty_signals (), intended to disable tty driver + signal processing for readline's literal-next code, so users + can do stuff like ^V^C and have ^C end up in the readline + buffer even if ^C is the terminal's interrupt character + +lib/readline/readline.c + - changed rl_quoted_insert to disable and restore tty signal + handling around the call to rl_read_key (), so users can put + tty special chars into the readline buffer + + 3/25 + ---- +expr.c + - added `,' operator (expr1 , expr2) -- both expr1 and expr2 are + evaluated and the return value is the value of expr2. Precedence + is higher than assignment (which makes it highest) + - make `lasttp' (pointer to last token) part of the expression + context that is saved and restored by {push,pop}_context. This + is used only in error reporting + +doc/{bash.1,bashref.texi} + - documented new `,' arithmetic operator + - cleaned up some of the language concerning variables referenced + by name within an arithmetic expression + +lib/readline/readline.c + - new application-settable variable, rl_num_chars_to_read, which, if + set to a non-zero value, causes readline to return after reading + that many characters (or at least that many characters, if + rl_startup_hook is used to prime the input buffer) rather than + when reading a character bound to accept-line + +lib/readline/readline.h + - extern declaration for rl_num_chars_to_read + +builtins/read.def + - added new `-n nchars' option to read NCHARS from stdin rather than + a complete line. Works both with and without using readline + +doc/{bash.1,builtins.texi} + - documented new `read -n nchars' option + + 3/26 + ---- +execute_cmd.c + - make sure all uses of PIDs are of type pid_t + +redir.c + - broke stdin_redirects into two functions: stdin_redirection, which + checks a single redirection specification, and a new stdin_redirects, + which does what it did before but calls stdin_redirection for each + redirection in the chain + + 3/29 + ---- +aclocal.m4 + - new test, BASH_CHECK_DEV_STDIN, checks for /dev/stdin. If it's + present HAVE_DEV_STDIN is defined and it's assumed that /dev/stdout + and /dev/stderr are present as well + +configure.in + - call BASH_CHECK_DEV_STDIN + +config.h.in + - add HAVE_DEV_STDIN, initially undefined + +test.c + - add /dev/std{in,out,err} to the special filenames that are handled + by test_stat() if HAVE_DEV_STDIN is not defined + +doc/{bash.1,bashref.texi} + - documented conditional expressions' handling of /dev/std{in,out,err} + +stringlib.c + - new function, find_string_in_alist, to find (or match as an extended + glob pattern) a string in a STRING_INT_ALIST and return the + associated token value + +externs.h + - extern declaration for find_string_in_alist + +redir.c + - new STRING_INT_ALIST list of filenames the redirection code handles + specially (_redir_special_filenames) + - new function, redir_special_open () to handle filenames found in + _redir_special_filenames (framework for /dev/tcp and /dev/udp, but + those are not implemented get) + +doc/{bash.1,bashref.texi} + - documented special filename handling in redirections + + 3/30 + ---- +builtins/read.def + - added `-d delim' option, like ksh93, to read until delim rather + than newline + +doc/{bash.1,bashref.texi} + - documented new read `-d delim' option + +configure.in + - look for gethostbyname(3), inet_aton(3) + - look for and + - call BASH_FUNC_GETHOSTBYNAME if gethostbyname(3) is not in libc + - check for u_int and u_long types, default to `unsigned int' and + `unsigned long' respectively + - new enable option `--enable-net-redirections' to compile in the + /dev/tcp and /dev/udp redirection code + +aclocal.m4 + - new macro, BASH_FUNC_GETHOSTBYNAME, looks for gethostbyname(3) in + the socket libraries if it's not found in libc + +config.h.in + - new defines: HAVE_GETHOSTBYNAME, HAVE_INET_ATON, HAVE_NETDB_H, + HAVE_NETINET_IN_H, NETWORK_REDIRECTIONS + - new defines: u_int, u_long + +lib/sh/inet_aton.c + - new file, from GNU libc, slightly modified to remove inet_addr() + +lib/sh/netopen.c + - new file, functions to create tcp/udp network connections. Exports + a single function: netopen(pathname) + +externs.h + - extern declaration for netopen() + +lib/sh/Makefile.in, Makefile.in, MANIFEST + - added appropriate references to inet_aton.c and netopen.c + +config-bot.h + - if HAVE_SYS_SOCKET_H, HAVE_GETPEERNAME, and HAVE_NETINET_IN_H are + all defined, define HAVE_NETWORK + +redir.c + - call netopen for pathnames of the form /dev/(tcp|udp)/host/port + if HAVE_NETWORK is defined; print a warning message otherwise + - /dev/tcp and /dev/udp code is only compiled in if + NETWORK_REDIRECTIONS is defined + + 3/31 + ---- +lib/sh/zread.c + - new function, zsyncfd(fd) which syncs the kernel's seek pointer on + FD with the last character returned by zreadc() + +externs.h + - extern declaration for zsyncfd + +builtins/read.def + - use zreadc if the input is not unbuffered (this cuts the number + of read(2) calls *way* down) + - if input is not unbuffered, call zsyncfd before returning to make + sure zreadc's buffering doesn't consume too much input + + 4/1 + --- +Makefile.in + - install bashbug with mode 555 + + 4/2 + --- +shell.c + - make want_pending_command and read_from_stdin global rather than + local variables + +flags.c + - change which_set_flags to insert `c' and `s' if the `-c' and `-s' + invocation options, respectively, were supplied at shell startup + +bashline.c + - change bash_directory_completion_hook to change the logic for + deciding whether or not to parameter expand the directory name -- + now we expand only if there's a `$' (still has problems if the + user quoted the `$') or a `` pair. Fixes bug reported by + chuckjr@sinclair.net. To fix the `$' problem, could possibly + check what the user typed with rl_line_buffer and start, end + parameters to gen_completion_matches + - changed attempt_shell_completion to slightly adjust the logic for + deciding whether or not a word is in a command position: if the + word being completed has a single opening single or double quote + before the command separator, treat it as a candidate for (quoted) + command word completion + - now that we understand partially-quoted strings as completion + candidates, we can do command completion on certain unclosed + uses of $(... + +subst.c + - change extract_delimited_string to not return an error for an + unclosed construct if DOING_COMPLETION is non-zero + + 4/5 + --- +expr.c + - fixed `ss=09 ; let ss=10' bug by introducing one-token lookahead + after a string token is parsed. If the next token is `=', we + don't evaluate the variable's value as an expression, since it's + not going to be used + +variables.h + - added new member to struct variable: exportstr -- for the future + caching of strings to be placed into the environment + - extern declaration for bind_variable_value + +variables.c + - make sure that the `exportstr' member of a struct variable is + initialized correctly, and put code in to free it where appropriate + (if non-null) + - new function, bind_variable_value(VAR, VALUE); make shell variable + VAR have value VALUE + - make sure var->exportstr is invalidated when a variable or function + is assigned a value + +builtins/declare.def + - call bind_variable_value instead of duplicating some of bind_variable + inline + + 4/6 + --- +variables.h + - new macros, VSETATTR and VUNSETATTR to set and clear variable + attributes + +builtins{read,set,setattr,declare}.def,{execute_cmd,expr,shell,subst,variables}.c + - change to use VSETATTR and VUNSETATTR + + 4/7 + --- +doc/Makefile.in + - if htmldir is set by configure, install the html files into that + directory with `make install' and remove them with `make uninstall' + +Makefile.in,doc/Makefile.in + - htmldir is set by configure and passed from the Makefile to the + install in the doc subdirectory + +configure.in + - substitute `htmldir' into Makefiles + +support/config.guess + - some small changes for Apple's Rhapsody + +lib/termcap/Makefile.in + - make the `distclean' and `maintainer-clean' targets remove Makefile + +lib/termcap/ltcap.h + - new private library include file, for Rhapsody __private_extern__ + define + +lib/termcap/{termcap,tparam}.c + - include "ltcap.h" + - if HAVE_CONFIG_H is defined, include if HAVE_STDLIB_H is + defined, otherwise declare getenv, malloc, realloc as extern + - add __private_extern__ qualifier for extern data that Rhapsody + requires + +shell.c + - don't run the startup files in the rshd case if shell_level is >= 2 + This should catch the case of + rsh machine bash -c 'echo a' + running the .bashrc twice, once for the shell started by rshd and + one for the shell running -c command + + 4/8 + --- +variables.c + - in initialize_shell_variables, unset the export attribute from + SSH_CLIENT if it exists and we got it from the initial environment + +shell.c + - don't bother unsetting export attribute from SSH_CLIENT, since we + now do it in initialize_shell_variables + +lib/readline/display.c + - don't check prompt_this_line[-2] in rl_redisplay if prompt_this_line + isn't at least 2 characters after the start of rl_display_prompt + +lib/readline/histfile.c + - change the name of the default history file to _history on MS-DOS + +lib/readline/histlib.h + - add an extern declaration for history_offset + +lib/readline/hist{expand,search}.c + - remove extern declaration for history_offset; now in histlib.h + +lib/readline/xmalloc.h + - new file, extern declarations for xmalloc, xrealloc, xfree + +lib/readline/rlprivate.h + - new file, with extern declarations for `readline private' global + variables and functions + +lib/readline/rlshell.h + - new file, with extern function declarations for stuff in shell.c + +lib/readline/Makefile.in + - add dependencies on xmalloc.h, rlshell.h + - add xmalloc.h, rlprivate.h to list of header files + +MANIFEST + - add lib/readline/xmalloc.h, lib/readline/rlprivate.h, + lib/readline/rlshell.h + +Makefile.in + - add $(RL_LIBSRC)/xmalloc, $(RL_LIBSRC)/rlprivate.h, + $(RL_LIBSRC)/rlshell.h to READLINE_SOURCE variable + +lib/readline/{bind,complete,display,funmap,histexpand,histfile,history,input, +isearch,keymaps,kill,macro,readline,search,shell,util,vi_mode}.c + - include "xmalloc.h" rather than extern declarations for xmalloc, + xrealloc, xfree + +lib/readline/terminal.c + - new function, used in two places, _emx_get_screensize for EMX + +lib/readline/readline.c + - EMX apparently no longer needs _emx_build_environ + +lib/readline/signals.c + - support for __EMX__ in rl_signal_handler + - don't set the old handler passed to rl_set_sighandler to + rl_signal_handler, because that would cause infinite recursion if + that signal were generated + +lib/readline/xmalloc.c + - no longer the same as lib/malloc/xmalloc.c, which is no longer + used by anyone + - changes to include xmalloc.h, define READLINE_LIBRARY, change + some of the argument types + +lib/tilde/tilde.c + - add prototypes for extern function declarations if __STDC__ + defined + +lib/readline/{terminal,bind,readline,nls,histexpand}.c + - include "rlshell.h" for function prototypes + + 4/9 + --- +lib/readline/{bind,callback,complete,display,input,isearch,kill,macro,nls, +parens,readline,rltty,search,signals,terminal,util,vi_mode}.c + - include "rlprivate.h" + - remove extern declarations already in rlprivate.h + +xmalloc.c + - xfree should take a PTR_T as its argument + +general.h + - change prototype for xfree to use void * instead of char * + +lib/malloc/malloc.c + - define PTR_T like it is defined in general.h + - malloc() returns a PTR_T + - free() takes a PTR_T as its argument + - realloc() returns a PTR_T and takes a PTR_T as its first argument + - memalign returns a PTR_T + - valloc returns a PTR_T + - calloc returns a PTR_T + - cfree() takes a PTR_T + +variables.c + - new function: char **all_variables_matching_prefix (char *prefix) + +variables.h + - extern declaration for all_variables_matching_prefix + +bashline.c + - converted variable_completion_function to use + all_variables_matching_prefix + +stringlib.c + - new function, char **alloc_array(n), allocates an argv-style + array of strings with room for N members + +externs.h + - extern declaration for alloc_array + + 4/13 + ---- +lib/readline/keymaps.c + - include "readline.h" + - remove extern function declarations + +include/stdc.h + - break the definition of __P out from a strict __STDC__ block, + since __GNUC__ and __cplusplus also indicate that prototypes + are available + +lib/readline/readline.h + - adjust conditional declaration of rl_message, since __cplusplus + indicates that prototypes are available + +lib/readline/rlstdc.h + - private copy, modified, no longer symlinked to ../../include/stdc.h + - __P is defined if __GNUC__ or __cplusplus is defined + - removed defines for __STRING, const, inline, signed, volatile, since + readline does not use them + +lib/readline/{search,readline}.c + - extern declaration for _rl_free_history_entry with prototypes, + since it's not in rlprivate.h + +lib/readline/history.h + - added some missing `extern's in function declarations + +lib/readline/undo.c + - include "rlprivate.h" + +lib/readline/shell.c + - include "rlshell.h" + +lib/readline/Makefile.in + - update dependencies for undo.c, shell.c + +lib/tilde/tilde.h + - add #define for __P if not already defined + - use prototypes in extern function declarations with __P() + +lib/readline/doc/rluserman.texinfo + - new file, derived from rlman.texinfo + +{bashline,findcmd,general,pathexp}.c, builtins/getopts.def + - call alloc_array(N) instead of (char **)xmalloc (N * sizeof (char *)) + +subst.c + - added code to implement ksh-93 ${!prefix*} expansion + +doc/{bash.1,bashref.texi} + - documented new ${!prefix*} expansion + + 4/15 + ---- +execute_cmd.c + - new variable, this_shell_function, points to SHELL_VAR of currently + executing shell function + +variables.c + - new dynamic variable, FUNCNAME -- invisible when not executing shell + function + +doc/{bash.1,bashref.texi} + - documented new FUNCNAME variable + + 4/16 + ---- +support/rlvers.sh + - add -T option to specify correct termcap library + +configure.in + - Irix 4.x still needs to link with -lsun if it contains a replacement + getpwent function that works with NIS + - if we're configuring with an already-installed readline library, + call BASH_CHECK_LIB_TERMCAP and pass the resulting $TERMCAP_LIB to + support/rlvers.sh + +lib/readline/readline.c + - in rl_forward, if rl_point ends up being < 0, set it to 0 + +lib/readline/exammples/excallback.c + - new callback example code, from `Jeff Solomon ' + +lib/sh/getcwd.c + - define NULL as 0 if not defined by one of the standard include files + - cast result of malloc and realloc to (char *) where appropriate + +variables.c + - new functions for use by dynamic variables: null_assign and + null_array_assign. Used as assign_func for a particular variable, + they cause assignments to that variable to be silently ignored + - FUNCNAME and GROUPS are no longer readonly + - FUNCNAME changed to use null_assign + - GROUPS changed to use null_array_assign. This means that the + variable can be unset if desired (like for Oracle startup scripts), + but cannot be assigned to + +doc/{bash.1,bashref.texi} + - added text about assignments being silently discarded to descriptions + of FUNCNAME and GROUPS + - removed text saying that GROUPS is readonly + - added standard text about GROUPS being unset and losing its special + properties, even if reset + +command.h + - new command type, cm_subshell, actually causes the shell to fork + and then executes the command in the SUBSHELL_COM struct + +parse.y + - ( ... ) now creates a command of type cm_subshell, with the same + flag CMD_WANT_SUBSHELL as previous + +make_cmd.c + - new function make_subshell_command + +make_cmd.h + - extern declaration for make_subshell_command + +dispose_cmd.c + - code to destroy a SUBSHELL_COM + +copy_cmd.c + - code to duplicate a SUBSHELL_COM + +print_cmd.c + - code to print a SUBSHELL_COM + +execute_cmd.c + - broke the code that handles executing commands in subshells out of + execute_command_internal into a new function, execute_in_subshell, + with the same arguments + - executing a command of type cm_subshell is just a slightly special + case, handled in execute_in_subshell + + 4/18 + ---- +execute_cmd.c + - changed code in execute_command_internal that executes subshell + commands to check for command->type == cm_subshell in addition to + checking that commmand->flags & CMD_WANT_SUBSHELL is non-zero + - changed execute_in_subshell to set the CMD_NO_FORK flag on the + command to be executed by a command of type cm_subshell + (command->value.Subshell->command), if that command is a simple + command (type == cm_simple) or a nested subshell (type == cm_subshell) + and is not being timed + - changed execute_command_internal to just call and return the value + returned by execute_in_subshell if it gets a command of type + cm_subshell with flags including CMD_NO_FORK + +lib/malloc/malloc.c + - morecore() should always return through morecore_done, not with a + simple `return' + + 4/20 + ---- +variables.c + - new function, quote_array_assignment_chars, backslash quotes all + `[' and `]' before an `=' in a word that's part of the body of a + compound array assignment. Needed because we run the list through + the globbing code now. Don't bother if `=' does not appear in + the string or if the first char is not `[' + - call quote_array_assignment_chars from assign_array_var_from_string + now + +eval.c + - moved parse_string_to_word_list to parse.y + +parse.y + - moved parse_string_to_word_list here. Much simpler -- no longer + tries to parse a command, but just reads tokens using read_token(). + Any token but a WORD or ASSIGNMENT_WORD causes a syntax error. + Don't have to mess around with saving global_command or calling + parse_command, but do need to save and restore the history stuff, + so the array assignment doesn't get saved on the history list + + 4/21 + ---- +nojobs.c + - changed to use functions in lib/sh/shtty.c (tt{get,set}attr) for + the terminal attributes + - added a `flags' field to struct proc_status, flags are PROC_RUNNING + and PROC_NOTIFIED (status has been returned to `wait') + - functions check flags & PROC_RUNNING to check whether or not a + particular process is still alive; PROC_RUNNING is reset by + set_pid_status + - new function, mark_dead_jobs_as_notified, same function as the one + in jobs.c + - cleanup_dead_jobs reaps jobs only if they're dead and not marked + as notified + - wait_for_background pids marks all pids as notified and reaps them + before it returns, since it's called by the `wait' builtin + - wait_for_single_pid marks the pid being waited for as notified so + its slot can be reclaimed -- it's only called by the `wait' builtin + - new function, process_exit_status, to turn what wait(2) takes into + an exit status + + 4/22 + ---- +nojobs.c + - add_pid takes a new second argument, async_p, which is non-zero if + the process is in the background + - new flag, PROC_ASYNC, set by add_pid + - set_pid_status now sets the PROC_NOTIFIED flag if PROC_ASYNC is unset, + so foreground jobs get cleaned up right away + - changed mark_dead_jobs_as_notified to take a `force' argument; if + non-zero, it marks only enough dead jobs to make the number of + un-notified dead jobs < CHILD_MAX + - new function, reap_dead_jobs, same as in jobs.c + +execute_cmd.c + - don't need separate cases for REAP any more + + 4/23 + ---- +builtins/printf.def + - new function, tescape, which processes a single backslash + escape sequence and returns the number of characters consumed by + the argument string (code taken from bexpand) + - changed bexpand to call tescape rather than do backslash-escape + sequence conversion itself + - changed occurrences of `illegal' in error messages to `invalid' + - printf no longer calls ansicstr to translate backslash-escape + sequences; the mainline printf code now calls tescape whenever it + hits a backslash + + 4/26 + ---- +subst.c + - new variable, garglist, set to list of words to be expanded after + leading assignment statements are removed + - command_substitute now calls maybe_make_exported_env before making + the child process if there are no variable assignments preceding + the command currently being expanded, or if the command currently + being expanded consists only of variable assignments + +execute_cmd.c + - the `early fork' code in execute_simple_command now calls + maybe_make_export_env before forking because execute_disk_command + would do that in the vast majority of cases, and this will obviate + the need to do it for subsequent commands if the environment does + not change + + 4/27 + ---- +variables.h + - more macros to manipulate the exportstr member of a SHELL_VAR + - changed initialize_shell_variables to cache the value from the + environment as the initial exportstr for all imported variables + - changed make_var_array to use exportstr if it exists, instead + of computing the value + - changed make_var_array to cache exportstr for exported functions, + so they don't have to be deparsed every time the export env is + remade + + 4/28 + ---- +lib/readline/{histlib,rldefs}.h + - changed STREQN macro to evaluate to 1 if the third argument is 0 + +lib/readline/search.c + - changed rl_history_search_{for,back}ward so they leave point at + the end of the line when the string to search for is empty, like + previous-history and next-history + - broke common code out of rl_history_search_{for,back}ward into + a new function, rl_history_search_reinit + - rewrote rl_history_search_internal to be more like the + non-incremental search functions, use noninc_search_from_pos, + and leave the last history line found in the current line buffer + if the search fails + - new function, make_history_line_current, takes care of making + the current line buffer a copy of the history entry passed as an + argument; used by rl_history_search_internal and noninc_dosearch + +subst.c + - make ${!prefix@} be the same as ${!prefix*} for (undocumented) + ksh93 compatibility + + 4/30 + ---- +lib/readline/doc/rltech.texinfo + - added note about including , and that + should be included before readline.h + +lib/readline/doc/hstech.texinfo + - added note about including + +lib/readline/doc/manvers.texinfo + - updated version to 4.1 + +lib/readline/{bind,complete,display,isearch,nls,parens,readline,signals,tilde, +histexpand}.c + - added prototypes with __P((...)) for forward static function + declarations + +lib/readline/display.c + - broke the code that initializes VISIBLE_LINE and INVISIBLE_LINE out + of rl_redisplay into a new function, init_line_structures, which + takes an argument giving the minimum number of characters that the + line must hold + - new function for use by applications that want to display the + initial prompt themselves rather than having the first call to + readline do it: rl_on_new_line_with_prompt (modified from code in + the CLISP distribution) + +lib/readline/readline.c + - new external variable, rl_already_prompted, to let readline know + that the prompt string has already been displayed on the screen + before the first call to readline + - test rl_already_prompted before displaying the prompt in + readline_internal_setup + - if rl_already_prompted is non-zero, readline_internal_setup calls + rl_on_new_line_with_prompt instead of rl_on_new_line + +lib/readline/readline.h + - extern declaration for rl_on_new_line_with_prompt + - extern declaration for rl_already_prompted + +lib/readline/doc/rltech.texinfo + - documented rl_on_new_line_with_prompt and rl_already_prompted + +builtins/read.def + - new -s option (silent mode). Input from a terminal is not echoed + +doc/{bash.1,bashref.texi} + - documented new `-s' option to read builtin + + 5/3 + --- +lib/readline/vi_mode.c + - replaced references to rl_getc with (*rl_getc_function) + +[bash-2.04-devel frozen] + + 5/5 + --- +subst.c + - make sure that verify_substring_values always passes malloc'd + memory to maybe_expand_string as the string to be expanded, + since it gets freed on errors + +support/shobj-conf + - don't need -R option for shared libraries on Solaris + - new stanza for OSF/1 machines with gcc + +lib/readline/readline.c + - new variable, rl_gnu_readline_p, always 1. Available to allow + readline users to test whether or not they're linking against + the true readline, rather than some bogus replacement (from CLISP) + +lib/readline/readline.h + - extern declaration for rl_gnu_readline_p + +hashlib.h, hashcmd.h + - added prototypes to extern function declarations + +pcomplete.h + - new file, declarations for the programmable completion stuff + +pcomplib.c + - new file, library functions for programmable completion + + 5/6 + --- +builtins/complete.def + - new file, interface to programmable completion management + +configure.in + - new enable argument --enable-progcomp, defines + PROGRAMMABLE_COMPLETION + +config.h.in + - #define for PROGRAMMABLE_COMPLETION + +config-bot.h + - if PROGRAMMABLE_COMPLETION is defined and READLINE is not, + #undef PROGRAMMABLE_COMPLETION + +pcomplete.c + - new file, placeholder for programmable completion generators and + associated functions + +Makefile.in, builtins/Makefile.in + - changes to add pcomplete.c, builtins/complete.def + + 5/7 + --- +subst.c + - new function, #ifdef READLINE, skip_to_delim (s, i, delims). + Starting at s[i], return the index of the first character in s + that is contained in delims. Understands shell quoting. + - added two arguments to list_string_with_quotes: an index to + watch for, and a pointer to int to return the index into the + created word list of the word containing the sentinel. Now + compiled in all the time. The returned index starts at 1. + +subst.h + - extern declarations for char_is_quoted, unclosed_pair, and + skip_to_delim + - changed extern declaration for list_string_with_quotes, moved + it out of the #ifdef ARRAY_VARS section + +bashline.c + - removed extern declarations for char_is_quoted and unclosed_pair + +variables.c + - new function, SHELL_VAR **all_exported_variables() + = new function, SHELL_VAR **all_array_variables(), #ifdef ARRAY_VARS + +variables.h + - extern declaration for all_exported_variables, all_array_variables + +lib/sh/strpbrk.c + - replacement if we don't have strpbrk(3) + +configure.in, config.h.in + - check for strpbrk(3), define HAVE_STRPBRK if found + +builtins/shopt.def + - new function, char **get_shopt_options (), returns an array of + shopt option names + +builtins/set.def + - new function, char **get_minus_o_opts (), returns an array of + `set -o' option names + +builtins/common.h + - extern declarations for get_shopt_options, get_minus_o_opts + + 5/10 + ---- +pathexp.c + - make the POSIX_GLOB_LIBRARY code implement the GLOBIGNORE stuff + + 5/11 + ---- +array.c + - new convenience function, char **array_to_argv (ARRAY *), + converts an array to a list of string values + +array.h + - extern declaration for array_to_argv + +execute_cmd.c + - new convenience function, int execute_shell_function (SHELL_VAR *, + WORD_LIST *) + +execute_cmd.h + - extern declaration for execute_shell_function + +builtins/evalstring.c + - make parse_and_execute unwind_protect current_prompt_string + if the shell is interactive + + 5/12 + ---- +variables.c + - moved bind_int_variable from expr.c to here; it now returns a + SHELL_VAR *, like the other variable binding functions + +variables.h + - extern declaration for bind_int_variable + + 5/14 + ---- +bashline.c, parse.y, general.c, make_cmd.c, subst.c, braces.c, execute_cmd.c + - replaced some common code sequences with calls to substring() + +lib/readline/doc/rltech.texinfo + - fixed small typo in description of rl_completion_entry_function + + 5/18 + ---- +stringlib.c + - new function, strcreplace(char *string, int c, char *text, int do_glob) + replaces all occurrences of C in STRING with TEXT. Backslash may + be used to quote C. If DO_GLOB is non-zero, the replacement TEXT + is quoted to protect globbing characters. + +externs.h + - extern declaration for strcreplace + +bashhist.c + - use strcreplace in expand_histignore_pattern + +pcomplete.c + - finished initial implementation of programmable completion + +alias.c + - code to set the aliases itemlist to dirty when an alias is added + or removed, if PROGRAMMABLE_COMPLETION is defined + +variables.c + - code to set the functions itemlist to dirty when a shell function + is added or removed, if PROGRAMMABLE_COMPLETION is defined + +builtins/enable.def + - code to set the builtins itemlist to dirty when a shell builtin + is added or removed, if PROGRAMMABLE_COMPLETION is defined + - code to set the enabled and disabled itemlists to dirty when a + builtin is enabled or disabled, if PROGRAMMABLE_COMPLETION is + defined + +builtins/shopt.def + - new shell option, `progcomp', on if programmable_completion_enabled + (from pcomplete.c) is non-zero + +doc/{bash.1,bashref.texi} + - note that `${' is not eligible for brace expansion to avoid + conflicts with parameter expansion + + 5/19 + ---- +builtins/complete.def + - added a new `compgen' builtin for use by completion functions + + 5/21 + ---- +bashline.c + - new function, void clear_hostname_list(void), to delete all the + entries in the hostname completion list + +bashline.h + - extern declaration for clear_hostname_list + +variables.c + - changed sv_hostfile to clear the hostname list if $HOSTFILE is + unset + +doc/{bash.1,bashref.texi} + - documented new behavior of HOSTFILE when it's unset + - added some awkwardly-worded text to make it clear that an + interactive shell cannot be started with non-option arguments + or with the -c option + +shell.c + - restored NON_INTERACTIVE_LOGIN_SHELLS test, so that if it is + defined, shells with argv[0][0] == '-' and not in posix mode + run the startup files even if non-interactive + +config-top.h + - added commented-out #define for NON_INTERACTIVE_LOGIN_SHELLS + + 5/24 + ---- +subst.c + - make sure the characters in IFS are cast to unsigned before being + indexed in ifscmap (expand_word_internal) + + 5/25 + ---- +parse.y + - change grammar rule for arithmetic for expressions to handle a + list_terminator after the `))' instead of requiring a newline_list + +subst.c + - fix so that variable indirection can reference the shell's special + variables (like $0...$9, $$, $#, etc.) + +pcomplete.c + - changed gen_wordlist_matches to use split_at_delims to split the + string at $IFS first, then expand each individual word + + 5/27 + ---- +lib/readline/histfile.c + - change things so that O_BINARY mode is used when reading and writing + the history file on cygwin32 as well as OS/2 (__EMX__) + +parse.y + - add calls to push_delimiter and pop_delimiter around the call + to parse_matched_pair when parsing $'...' and $"..." so the + history entry is added correctly + + 5/28 + ---- +doc/{bash.1,bashref.texi}, lib/readline/doc/rluser.texinfo + - documented new programmable completion facilities + +doc/bashref.texi + - documented new configure `--enable-progcomp' option + + 6/1 + --- +variables.c + - if make_local_variable is being asked to make a local shadow + variable of a read-only variable, print an error message and + return NULL + - if make_local_variable returns NULL to make_local_array_variable, + just return it + +builtins/declare.def + - if we're making local variables, and make_local_array_variable or + make_local_variable returns NULL, just flag an error and go on + + 6/2 + --- +Makefile.in + - changed release status to `alpha1' + +[bash-2.04-alpha1 frozen] + + 6/18 + ---- +bashline.c + - fixed find_cmd_start so that it doesn't spin-loop on commands with + a command separator like `;' or `&'. Problem was not incrementing + `os' past the delimiter found + + 6/21 + ---- +variables.c + - cosmetic change: introduced two macros to encapsulate initialization + of dynamic variables + + 6/23 + ---- +pcomplib.c + - new function: num_progcomps(void), returns the number of entries in + the programmable completions hash table + +pcomplete.h + - extern declaration for num_progcomps + +bashline.c + - make sure some programmable completions have been defined before + diving into the programmable completion code + +shell.c + - in open_shell_script, move the fd opened to the script to a high + one with move_to_high_fd in all cases -- the buffered input code + still has problems if fd == 0 and later on fd 0 is closed or + redirected (cf. input.c:check_bash_input()) + +builtins/printf.def + - getlong() now calls strtol directly with a third argument of 0 so + it can handle 0x (hex) and 0 (octal) prefixes, which legal_number + does not -- this has implications for arguments to %d that begin + with `0' + +lib/sh/getenv.c + - make sure that the variable found in the temporary environment has + a non-null value before calling savestring() on it + +subst.c + - make sure split_at_delims returns 0 in *nwp and *cwp if handed a + null or empty string + +pcomplete.c + - make sure build_arg_list handles lwords == 0, as it will be if an + empty command line is handed to the programmable completion code + (like compgen -C xyz) + +execute_cmd.c + - make sure execute_shell_function passes a non-null bitmap of fds to + close to execute_function, allocating and deallocating it locally + +sig.c + - don't mess with SIGPROF in initialize_terminating_signals + +jobs.c, nojobs.c + - if the user has requested it with checkwinsize, check for a new + window size after a job exits due to a signal as well as being + stopped + +lib/readline/kill.c + - changed rl_kill_region to set the point to the beginning of the + region after the kill is performed + + 6/24 + ---- +configure.in + - make sure ranges ([1-9]*) are protected with [...] for m4 quoting + +variables.c + - make sure that bind_variable_value honors `set -a' and that it + marks the environment for recreation if necessary + + 6/25 + ---- +lib/readline/complete.c + - if we're completing at the end of the line, find_completion_word + shouldn't test whether the character is a special word break + char and (possibly) advance rl_point past the end of the buffer + +parse.y + - change mk_msgstr to write embedded newlines as `\n""', as the + PO file format apparently requires + + 6/28 + ---- +lib/readline/display.c + - code to manage the growth of the inv_lbreaks and vis_lbreaks arrays + beyond 256, since there are pathalogical command lines that can + have more than 256 line breaks for redisplay + + 6/30 + ---- +stringlib.c + - include pathexp.h for extern declaration of quote_globbing_chars + +variables.h + - change CACHE_EXPORTSTR to savestring() the value and not set the + att_importstr flag + + 7/6 + --- +support/bashbug.sh + - bashbug now accepts --help and --version options + +bashline.c + - change bash_quote_filename to use single quotes if the user + does not specify an opening quote character and the filename being + completed contains newlines + + 7/8 + --- +configure.in, aclocal.m4, config.h.in + - BASH_TYPE_INT32_T --> BASH_TYPE_BITS32_T; int32_t --> bits32_t + - BASH_TYPE_U_INT32_T --> BASH_TYPE_U_BITS32_T; u_int32_t --> u_bits32_t + +lib/malloc/{malloc,gmalloc}.c, lib/sh/inet_aton.c + - int32_t --> bits32_t; u_int32_t --> u_bits32_t + +aclocal.m4 + - new tests: BASH_TYPE_BITS16_T, BASH_TYPE_U_BITS16_T + +configure.in + - add check for sizeof short, sizeof char + - call BASH_TYPE_BITS16_T, BASH_TYPE_U_BITS16_T + +config.h.in + - new #defines for bits16_t, u_bits16_t + +lib/malloc/malloc.c + - use u_bits16_t for type of mi_magic2 + + + 7/16 + ---- +lib/readline/display.c + - new private library function, _rl_strip_prompt, to remove instances + of RL_PROMPT_{START,END}_IGNORE from the passed prompt string + +lib/readline/rlprivate.h + - extern declaration for _rl_strip_prompt + +lib/readline/readline.c + - call _rl_strip_prompt before outputting the prompt if we're not + doing any echoing of input chars (readline_echoing_p == 0) + +Makefile.in + - tentative change to rule for parser-built: use $< instead of + `y.tab.h' in recipe + + 7/19 + ---- +support/config.{guess,sub} + - add code to handle all versions of Mac OS (e.g., Mac OS X) + + 7/26 + ---- +lib/readline/bind.c + - on cygwin32, treat \r\n as a line terminator when reading the + inputrc file + + 7/29 + ---- +lib/sh/netopen.c + - fixed problem in _getaddr with copying the address returned from + gethostbyname to the `struct in_addr *' argument -- hostnames + now work in /dev/(tcp|udp)/host/port + + 8/2 + --- +configure.in + - on Apple Rhapsody systems, set LOCAL_CFLAGS to -DRHAPSODY + +variables.h + - changes from Apple for building fat binaries on Rhapsody, + setting HOSTYPE, OSTYPE, VENDOR, and MACHTYPE + +lib/readline/terminal.c + - some work on the `dumb terminal' setup code in _rl_init_terminal_io + to make sure it's complete for use by the redisplay code and some + stuff in {readline,complete}.c + +lib/readline/display.c + - new function, _rl_current_display_line, returns the number of + lines down from the first `screen line' of the current readline + line the cursor is + +lib/readline/readline.c + - make rl_refresh_line call _rl_current_display_line + +lib/readline/rlprivate.h + - extern declaration for _rl_current_display_line + + 8/3 + --- +doc/bashref.texi + - reorganized slightly: + o a new shell builtins chapter + o a new shell variables chapter + o a new special builtins section + o bourne shell features chapter removed + o alias builtins moved to the bash builtins section + o bourne shell differences moved to appendix + o order of readline and history chapters swapped + o indices are now unnumbered appendices + o some text cleaned up and some explanatory text added + +lib/readline/terminal.c + - if a calling application is using a custom redisplay function, + don't call tgetent to get the terminal attributes, since those + are used only by the redisplay code. Still get the window + size, though + +lib/glob/fnmatch.c + - range comparisons in bracket expressions no longer use strcoll(3), + since in some locales (de, for example), [A-Z] matches all + characters + +parse.y, print_cmd.c + - some changes to make sure the shell compiles when + DPAREN_ARITHMETIC is not defined but ARITH_FOR_COMMAND is + + 8/5 + --- +redir.c + - in the here document code in do_redirection_internal, check + that the file descriptor returned by here_document_to_fd is not + the same as a file descriptor specified as the redirector + before closing it + + 8/6 + --- +parse.y + - make sure the pipline rule for `timespec BANG pipeline' sets the + CMD_INVERT_RETURN flag for the pipeline command + +builtins/wait.def + - use setjmp with a special jump buffer to take longjmps in the + case that a SIGINT is received while waiting for jobs or processes + it makes wait return with a status > 128, as POSIX.2 specifies + +{jobs,nojobs}.c + - changed wait_sigint_handler to longjmp to wait_intr_buf if it's + executing the wait builtin and SIGINT is trapped. It calls + trap_handler to make sure a pending trap for SIGINT is set also, + so the trap is taken when the wait builtin returns + + 8/9 + --- +jobs.c + - save and restore the value of errno in sigchld_handler + +trap.c + - save and restore the value of errno in trap_handler + + 8/10 + ---- +Makefile.in + - changed release status to beta1 + + 8/13 + ---- +include/posixtime.h + - new file to encapsulate the and mess + +Makefile.in + - add posixtime.h to list of include files in BASHINCFILES + - update dependencies for general.o, execute_cmd.o + +general.c, execute_cmd.c, builtins/times.def + - include posixtime.h instead of , + +general.c + - protect inclusion of with HAVE_SYS_TIMES_H check + +builtins/Makefile.in + - update dependencies for times.o + + 8/16 + ---- +lib/sh/timeval.c + - moved functions dealing with struct timevals here from general.c + and execute_cmd.c + +lib/sh/clock.c + - moved functions dealing with clock_ts here from general.c + (print_time_in_hz renamed to print_clock_t) + +externs.h + - moved extern declarations for timeval_to_secs and print_timeval + here from general.h + - moved extern declarations for clock_t_to_secs and print_clock_t + here from general.h + +builtins/times.def + - calls to print_time_in_hz changed to print_clock_t + +Makefile.in + - added references for lib/sh/timeval.c and lib/sh/clock.c + +lib/sh/Makefile.in + - clock.o and timeval.o are now included in libsh.a + + 8/23 + ---- +execute_cmd.c + - make sure last_command_exit_value is updated before running a + DEBUG trap in the cm_simple case of execute_command_internal + +lib/readline/display.c + - new function, static void redraw_prompt (char *), used to + redraw the last line of a multiline prompt that possibly + contains terminal escape sequences + - call redraw_prompt from _rl_redisplay_after_sigwinch + + 8/24 + ---- +lib/readline/bind.c + - new struct with names of string-valued readline variables and + handler functions to call when the variable is set + - changed rl_variable_bind to use functions to find boolean vars + and string vars in their respective lists + - new function, bool_to_int, to translate a boolean value that may + appear as an argument to `set ' to 1 or 0 + - new function, hack_special_boolean_var, called if the element in + the boolean_vars struct has the V_SPECIAL flag set, to provide + any necessary other action when a boolean variable is set + - new functions to be called when each string variable is set; + called by rl_variable_bind + +execute_cmd.c + - do_piping no longer sets pipes to O_TEXT mode if __CYGWIN32__ + is defined + + 8/25 + ---- +subst.c + - parameter_brace_patsub now mallocs a local copy of `patsub', because + if it starts with a `/' we increment it, and functions down the call + chain will free that on an error (and if we pass the incremented + value, will try to free unallocated memory) + - pos_params now short-circuits and returns a null string immediately + if start == end, meaning we want 0 positional parameters + + 8/26 + ---- +subst.c + - fixed pat_subst to correctly handle a null replacement string with + a null pattern string prefixed with `%' or `#' + + 9/3 + --- +variables.c + - don't import shell functions from the environment if the shell was + started with -n + + 9/8 + --- +subst.c + - if a command substitution is being performed inside a shell function, + catch `return' in command_substitute so that a return inside the + command substitution doesn't jump back to execute_function (or one + of its brethren) and go on with the command + +parse.y + - in history_delimiting_chars, if the first line is `for var' and + command_oriented_history is active, we don't want a semicolon if + the next token to be read is `in', but we do want one otherwise. + All we can do is check shell_input_line and see if the next chars + are `in' -- if so, we return " " + + 9/16 + ---- +builtins/hash.def + - don't allow `hash -p /pathname/with/slashes name' if the shell + is restricted + +doc/{bash.1,bashref.texi} + - updated description of restricted shell mode + +lib/readline/display.c + - fixed a bug in _rl_update_final which used the inv_lbreaks array + to index into visible_line + +jobs.c + - waitchld() need not go through the pain of setting up an environment + to execute traps on SIGCHLD if children_exited == 0 + - waitchld returns -1 if waitpid() returns -1 with errno == ECHILD, + indicating that there are no unwaited-for child processes, and it + has not yet reaped any dead children + - wait_for, wait_for_single_pid return -1 if waitchld() returns -1 + - new function, mark_all_jobs_as_dead + - wait_for_background_pids calls mark_all_jobs_as_dead if + wait_for_single_pid returns -1 with errno == ECHILD, since there are + no unwaited-for child processes + +subst.c + - tentative change: subshells started for command substitution no + longer unconditionally disable job control + + 9/17 + ---- +parse.y + - new function: save_token_state(). Saves the value of last_read_token + and the two previous tokens in an allocated array and returns the + array + - new function: restore_token_state(ts). TS is an array returned by + save_token_state. last_read_token and the two previous tokens are + set from the values in TS + +trap.c + - run_pending_traps calls save_token_state and restore_token_state + around the call to parse_and_execute, which will call the parser + and possibly leave it in a state where reserved words will not be + recognized (_run_trap_internal, too) + + 9/20 + ---- +support/bashbug.sh + - if sendmail is used as $RMAIL, pass `-i -t' as arguments so changes + made by the user to the recipient headers in the message are + honored + + 9/21 + ---- +bashhist.c + - if histverify has been set, make sure a `:p' modifier to a history + expansion prints the result + +builtins/echo.def + - new extern variable, xpg_echo, set to 1 if DEFAULT_ECHO_TO_USG is + defined and 0 otherwise + - echo_builtin now sets the initial value of do_v9 from xpg_echo + +builtins/shopt.def + - new shopt option, `xpg_echo', turns backslash escape expansion by + `echo' on and off at runtime + +builtins/{bash.1,bashref.texi} + - documented new `xpg_echo' shell option + +tests/{builtins.tests,builtins2.sub,shopt.tests} + - changes for new `xpg_echo' shell option + +configure.in + - changes for FreeBSD-3.x ELF to add `-rdynamic' to LOCAL_LDFLAGS. + This allows dynamic loading of builtins + +support/shobj-conf + - changes to handle FreeBSD-3.x elf or a.out object file formats + + 9/23 + ---- +[bash-2.04-beta1 released] + + 9/24 + ---- +jobs.c + - wait_for returns -1 only if the shell is currently executing the + `wait' builtin, since that's the only thing that cares + +execute_cmd.c + - moved cases of close_fd_bitmap to before calls to do_piping to + handle some pathological cases + + 9/29 + ---- +execute_cmd.c + - save the command line in execute_simple_command before making the + export environment, since maybe_make_export_env clobbers + the_printed_command if there are exported functions + + 9/30 + ---- +configure.in,config.h.in + - check explicitly for setvbuf; define HAVE_SETVBUF if found + +configure.in + - change opt_gnu_malloc to opt_bash_malloc, since the bash malloc + is not really the gnu malloc anymore + - new argument, --with-bash-malloc, identical to --with-gnu-malloc + - AC_DEFINE(USING_BASH_MALLOC) if opt_bash_malloc is enabled + +config.h.in + - new #define for USING_BASH_MALLOC + +doc/bashref.texi + - updated installation section to add --with-bash-malloc and + change description of --with-gnu-malloc + +lib/sh/setlinebuf.c + - change name of function to sh_setlinebuf, just returns 0 if + HAVE_SETVBUF and HAVE_SETLINEBUF are undefined + - prefer setvbuf to setlinebuf if we have both + - if we're using setvbuf, use a local buffer for stdin and stdout + local buffer is BUFSIZ unless we're using the bash malloc + (USING_BASH_MALLOC is defined), in which case it's 1008 (which + the bash malloc rounds up to 1024) + + 10/4 + ---- +input.c + - if USING_BASH_MALLOC is defined, set the max buffer size to 8176, + which the bash malloc rounds up to 8192 + + 10/5 + ---- +pcomplete.c + - new function, pcomp_filename_completion_function, a wrapper for + filename_completion_function that dequotes the filename first + +bashline.c + - changed bash_directory_completion_matches to dequote the filename + before passing it (indirectly) to filename_completion_function + +execute_cmd.c + - change execute_command to defer calling unlink_fifo_list until any + shell function has finished executing (variable_context == 0) + +configure.in + - added AC_CYGWIN, AC_MINGW32, AC_EXEEXT + + 10/8 + ---- +subst.c + - expand_word_internal(): changes some things to avoid small (2 or 3 + byte) calls to xmalloc -- added a label and some gotos (BEWARE) + - changed make_dev_fd_filename so it doesn't call sprintf anymore + + 10/27 + ----- +execute_cmd.c + - make execute_select_command handle the effects of the `continue' + builtin correctly + + 11/5 + ---- +Makefile.in + - RELSTATUS changed to `beta2' + + 11/8 + ---- +[bash-2.04-beta2 released] + + 11/9 + ---- +shell.c + - make run_startup_files check for ssh2 as well as ssh1 + + 11/19 + ----- +parse.y + - make sure parsing conditional commands isn't confused by unexpected + tokens (like `[[)]]') + +builtins/common.c + - fix get_job_spec to return NO_JOB for numeric job specs that are + beyond the size of the jobs table + +builtins/type.def + - change describe_command to report `not found' if a path search + returns the same string as the command name and the command name + does not match an executable file. This has implications for + `type' and `command -[vV]'. + - if a command is not found in $PATH, but an executable file with the + name supplied exists in the current directory, make the command + into a full pathname for the `command' builtin. This has + implications for `type' and `command -[vV]' + +subst.c + - new function, expand_prompt_string, expands prompt string and + returns the string passed if an error occurs + +subst.h + - extern declaration for expand_prompt_string + +parse.y + - decode_prompt_string calls expand_prompt_string instead of + expand_string_unsplit + + 11/22 + ----- +builtins/echo.def + - return EXECUTION_FAILURE if ferror(stdout) is true + + 11/23 + ----- +locale.c + - if LC_ALL is unset, call setlocale(LC_ALL, lc_all), because lc_all + holds the default locale + + 11/29 + ----- +lib/readline/shell.c + - define NULL as 0 if it's not defined + - change single_quote to allocate 4 characters in new string for + each character in the old one (like builtins/common.c:single_quote) + +locale.c + - when a locale variable (LC_*) is unset, pass "" to setlocale() + to get the default locale set, since value is NULL + +lib/sh/makepath.c + - new function, sh_makepath(char *path, char *dir, int flags) + +Makefile.in + - changed version to beta3 + +builtins/type.def + - changed describe_command to use sh_makepath() + +builtins/cd.def + - removed private declaration of mkpath(), changed to use sh_makepath + +general.c + - changed make_absolute to use sh_makepath + - changed full_pathname to use sh_makepath + +findcmd.c + - removed private definition of make_full_pathname, changed to use + sh_makepath + +doc/{bashref.texi,bash.1} + - added text to description of `getopts' to make it clear that getopts + may be used to parse option characters other than letters, and + that `:' and `?' may not be used as option characters + +eval.c + - when processing a jump_to_top_level(EXITPROG), make sure the shell + doesn't think it's still in a function by setting variable_context + to 0 + +doc/rbash.1 + - a skeletal man page for rbash, adapted from debian + +support/bashbug.sh + - try to find a default editor if EDITOR is unset, rather than blindly + using `emacs' + + 11/30 + ----- +support/config.{guess,sub} + - many changes from the latest `automake' distribution, from the + Debian folks + + 12/2 + ---- +lib/readline/keymaps.h, lib/tilde/tilde.h + - added support for C++ compilation (`extern "C" {...}') + + 12/3 + ---- +subst.c + - in process_substitute, make sure the child resets the O_NONBLOCK + flag on the file descriptor opened for read to a named pipe + +jobs.c + - new function, raw_job_exit_status, returns exit status of last job + in pipeline + - change job_exit_status to call raw_job_exit_status and pass the + result to process_exit_status + - in notify_of_job_status, get termination status from call to + raw_job_exit_status, rather than the first job in the pipeline + (fixes debian bug #15165) + +bashhist.c + - changed bash_history to not add shell comment lines to the history + file (fixes debian bug #21901). Uses new function shell_comment(L) + which returns 1 if L is a shell comment line. Doesn't handle + comments embedded in lines yet + +redir.c + - when running in POSIX.2 mode, bash no longer performs word splitting + on the expanded value of the word supplied as the filename argument + to a redirection operator (fixes debian bug #30460) + +doc/bashref.texi + - added new redirection stuff to POSIX Mode section (from previous fix) + + 12/6 + ---- +hashlib.h + - removed extra semicolon at end of HASH_ENTRIES define + +redir.c + - replaced toggling of disallow_filename_globbing flag with setting + flags in redirection word to include W_NOGLOB if the shell is in + POSIX mode and not interactive when expanding the filename argument + to a redirection + + 12/7 + ---- +builtins/common.c + - new function, backslash_quote_for_double_quotes(char *), quotes + characters special when in double quotes in the string passed as + an argument. + #ifdef PROMPT_STRING_DECODE; called by decode_prompt_string + +builtins/common.h + - extern declaration for backslash_quote_for_double_quotes + +parse.y + - call backslash_quote_for_double_quotes instead of backslash_quote + in decode_prompt_string + + 12/9 + ---- +parse.y + - before expanding the \u prompt string escape sequence, make sure + current_user.user_name is non-null and call get_current_user_info + if it is + + 12/10 + ----- +support/mkversion.sh + - changes to avoid relying on floating point output format, which + can be locale-specific + + 12/14 + ----- +print_cmd.c + - changes to named_function_string (for normal function printing) + and print_function_def (for printing function definitions embedded + in other commands) to print redirections that should be attached + to the function as a whole after the closing brace + +tests/func1.sub + - tests for printing functions with attached redirections, called by + func.tests + + 12/16 + ----- +lib/readline/complete.c + - if we're completing files in the root directory and executing the + visible-stats code, don't pass an empty pathname to + rl_directory_completion_hook, because, for bash, that will be + expanded to the current directory. Just pass `/' instead. + +lib/tilde/tilde.c + - fix to tilde_expand_word for Cygwin to avoid creating pathnames + beginning with `//' if $HOME == `/' + +variables.c + - don't bother with the exportstr validation on cygwin systems, + or even using exportstr at all, since that system has weird + environment variables + + 12/17 + ----- +configure.in + - new option, --enable-xpg-echo-default, new name for + --enable-usg-echo-default (which is still present for backwards + compatibility) + +configure.in, config.h.in, builtins/echo.def + - DEFAULT_ECHO_TO_USG -> DEFAULT_ECHO_TO_XPG + + 12/29 + ----- +aclocal.m4 + - changed a couple of tests to avoid creating files with known + names in /tmp + +support/rlvers.sh + - changed to create files in /tmp/rlvers + +support/mksignames.c + - now understands the POSIX.1b real-time signal names on systems + that support them + + 12/30 + ----- +[bash-2.04-beta3 released] + + 12/31 + ----- +redir.c + - try some more things to avoid race file replacements in + here_document_to_fd + +parse.y + - two new functions: + get_current_prompt_level: returns 2 if current prompt is $PS2, + 1 otherwise + set_current_prompt_level: sets current prompt to $PS2 if arg + is 2, $PS1 otherwise + +copy_cmd.c + - make sure to copy the `line' member in copy_arith_for_command + +pcomplete.c + - free up `lwords' and `line' after evaluating any command or shell + function in gen_compspec_completions + - after filtering any matches specified by cs->filterpat in + gen_compspec_completions, free ret->list (the members have + already been copied or freed by filter_stringlist) + +bashline.c + - free what find_cmd_name returns after calling the programmable + completion code + + 1/4/2000 + -------- +subst.c + - make call_expand_word_internal set w->word to NULL if either + expand_word_error or expand_word_fatal is returned + + 1/7 + --- +parse.y + - two new functions: set_current_prompt_level(int) and + get_current_prompt_level() to set and get the `level' of + current_prompt_string (1 if $PS1, 2 if $PS2) + +externs.h + - extern declarations for {get,set}_current_prompt_level + +builtins/evalstring.c + - add an unwind_protect to save and restore the current prompt + string pointers using {get,set}_current_prompt_level + + 1/9 + --- +Makefile.in + - changed release status to `beta4' + + 1/18 + ---- +[bash-2.04-beta4 released] + + 1/19 + ---- +configure.in + - moved checks for non-unix variants to beginning of tests + +Makefile.in, {builtins,support}/Makefile.in + - added some $(EXEEXT) suffixes to generated programs for non-Unix + systems + + 1/20 + ---- +parse.y + - make get_current_prompt_level return 1 if current_prompt_string is + NULL (as it would be while sourcing startup files) + +support/rlvers.sh + - rmdir $TDIR in the exit trap + - move the exit trap after we successfully create $TDIR + + 1/21 + ---- +subst.c + - several changes to split_at_delims to make non-whitespace + delimiters create separate fields containing those delimiters, + like the shell parser does with meta characters. This allows + redirection operators, for example, to be treated as separate + words by the programmable completion code + +examples/complete/complete-examples + - added new function: _redir_op, which return true if the word + passed as an argument contains a redirection operator (just + bare-bones for now) + - changed set completion function to use _redir_op as an example + +parse.y + - make parse_string_to_word_list save and restore the value of + shell_input_line_terminator, since an assignment like + COMPREPLY=() inside a shell function called by the programmable + completion code can change shell_input_line_terminator out from + underneath shell_getc(). shell_getc will set the input line + terminator to EOF when it gets EOF from the getter function, and + the string getter function returns EOF at EOS. parse_and_execute + tests for EOS directly and never gets EOF from shell_getc, so it + does not have this problem. + + 1/24 + ---- +lib/readline/funmap.c + - #define QSFUNC like in complete.c + - cast _rl_qsort_string_compare to a QSFUNC * in the call to qsort + +lib/readline/terminal.c + - correct a typo in usage of the __EMX__ preprocessor define + - fix a reversed usage of `#if defined (__DJGPP__)' in + _rl_control_keypad + - remove extern declarations for _rl_in_stream and _rl_out_stream + +lib/readline/rlprivate.h + - add extern declaration for _rl_in_stream, since there's already + one for _rl_out_stream + +builtins/ulimit.def + - if bash is using ulimit(2), make sure that getfilesize() returns + the value multiplied by 512 to convert it from a number of blocks + to a number of bytes + + 1/25 + ---- +execute_cmd.c + - make sure execute_command_internal sets last_command_exit_value + correctly when inverting the return value of a (...) subshell + command + +tests/{run-invert,invert.{tests,right}} + - new tests for return value inversion + +configure.in + - compile without bash malloc on m68k-motorola-sysv due to a file + descriptor leak in closedir(3) -- the motorola implementation + requires that freed memory be readable so it can free the dirent + and then look back at it to find the file descriptor + +expr.c + - fix negative exponents in v**e to return an eval error + + 2/1 + --- +Makefile.in + - changed status to beta5 + +jobs.c + - fixed a problem with checking the wrong process when checking to + see whether or not we need to reset the tty state. The old code + checked the first process in a pipeline; the new code checks all + processes in the pipeline to see whether any of them exited due + to a signal or was stopped. If none were signalled or stopped, + the code uses the exit status of the last process in the job's + pipeline + + 2/4 + --- +[bash-2.04-beta5 released] + +eval.c + - call set_current_prompt_level instead of setting prompt_string_pointer + directly + + 2/10 + ---- +[bash-2.04-beta5 re-released to net] + + 2/11 + ---- +sig.c + - make sure SIGCHLD is defined in initialize_shell_signals before + trying to use it in sigdelset() (DJGPP fix) + + 2/14 + ---- +lib/sh/shtty.c + - include before + - separate tests for ONLCR, ONOCR, ONLRET to cope with systems like + DJGPP that don't implement the full POSIX termios option set + +builtins/psize.sh + - set TMPDIR only if it's not already set + +lib/glob/glob.c + - if a system doesn't define _POSIX_SOURCE but has a `struct dirent' + without a d_ino member, define REAL_DIR_ENTRY to 1 so all entries + are read + +configure.in + - check for header file + +config.h.in + - add HAVE_ARPA_INET_H define + +lib/sh/inet_aton.c + - don't compile unless HAVE_NETWORK, HAVE_NETINET_IN_H, and + HAVE_ARPA_INET_H are all defined in config.h or config-bot.h + + 2/16 + ---- +subst.c + - if we have a construct like "${@:-}", we need to note that we're + not using whatever is in $@ (we're using the rhs), so the special + double-quoting $@ rules do not apply + + 2/21 + ---- +lib/readline/signals.c + - declare SigHandler before using it on non-POSIX systems + +lib/sh/{zread,zwrite}.c + - include unconditionally + +configure.in + - m68k-motorola-sysv should be m68k-sysv in the section that sets + opt_bash_malloc to no for certain systems + +builtins/complete.def + - fixed a typo (stoppped) when printing out completion actions + + 2/22 + ---- +lib/sh/netopen.c + - include if it's present + +aclocal.m4 + - new macro, BASH_FUNC_INET_ATON, checks for inet_aton(3) including + and , which some systems require to + resolve the function + +configure.in + - if autoconf can't fund inet_aton on its own, try BASH_FUNC_INET_ATON + +pcomplete.c + - fixed a memory leak in gen_wordlist_completions + - changed gen_wordlist_completions to do prefix-matching against the + word being completed + +doc/bash.1, lib/readline/doc/rluser.texinfo + - documented the change in behavior of the -W option to complete and + compgen + +builtins/umask.def + - if parse_symbolic_mode() returns -1, symbolic_umask needs to return + -1 as well, otherwise the umask will be changed inappropriately + +input.c + - always compile in getc_with_restart and ungetc_with_restart + +parse.y + - yy_stream_get and yy_stream_unget now call getc_with_restart and + ungetc_with_restart, respectively, to avoid problems with some + systems not restarting the read(2) when signals that bash handles + are received during the read (since bash installs its signal + handlers without the SA_RESTART flag) + +lib/readline/complete.c + - don't default rl_completion_case_fold to 1 if __DJGPP__ is defined + + 2/25 + ---- +subst.c + - renamed `varlist' to `subst_assign_varlist' and made it global + +jobs.c + - when running a SIGCHLD trap, need to unwind-protect + subst_assign_varlist and set it to NULL before running the trap + command (fix from ericw@bestnet.org and doogie@debian.org) + + 2/28 + ---- +lib/readline/doc/rltech.texinfo + - document rl_funmap_names() + + 2/29 + ---- +subst.c + - change split_at_delims to set the current word more appropriately + when the cursor is between two words. Should probably change this + again to set the current word like this only when the cursor is at + whitespace or another delim just before the word start + + 3/1 + --- +lib/sh/shtty.c + - more checks for flag bits being defined before using them + + 3/7 + --- +variables.h + - fix typo in COPY_EXPORTSTR definition + + 3/14 + ---- +subst.c + - changed split_at_delims so that if the cursor is at whitespace + between words, and we're interested in the current word (cwp != NULL), + make a new empty word and set the cwp to that word + +locale.c + - support for setting LC_NUMERIC locale category based on value of + LC_NUMERIC shell variable + +variables.c + - LC_NUMERIC is now treated specially + +doc/{bash.1,bashref.texi} + - LC_NUMERIC updates + + 3/15 + ---- +pcomplete.c + - fix to avoid freeing memory twice + + 3/17 + ---- +[bash-2.04 released] + + 3/20 + ---- +doc/bash.1 + - minor typo fix to description of `xpg_echo' option in `echo' + description + + 3/23 + ---- +parse.y + - minor fix to parse_string_to_word_list to allow newlines in + compound array assignments + + 3/27 + ---- +lib/readline/rltty.c + - fixed a missing-semicolon syntax error in the old 4.3 BSD tty code + +support/mksignames.c + - if SIGRTMAX is >= 2*NSIG, just #undef SIGRTMIN and SIGRTMAX. This + is an issue on AIX 4.3 (only, so far) -- checked by configure, which + #defines UNUSABLE_RT_SIGNALS if this is the case + +aclocal.m4 + - new macro, BASH_CHECK_RTSIGS, checks whether or not real-time + signals are defined with large values and defines UNUSABLE_RT_SIGNALS + if they are + +config.h.in + - place marker for UNDEF_RT_SIGNALS (initially undefined) + +configure.in + - call BASH_CHECK_RTSIGS in the `bash miscellaneous' section + + 3/29 + ---- + +subst.c + - fixed a problem in match_pattern_char, where `string' was checked + for a paren following a [?+!@], rather than `pat' + - the code that checks whether or not to exit after a failed + ${word?msg} substitution needs to check interactive_shell rather + than interactive to avoid exiting if such a construct appears in + a sourced file + + 3/31 + ---- + +bashline.c + - add `{' to the list of characters that need to be quoted by the + completion code when appearing in a filename + + 4/1 + --- +lib/glob/fnmatch.c + - fixed an error in brackmatch() while skipping the rest of a bracket + expression after a character matched. When `c' was a backslash and + *p was a backslash, as in a pattern like [/\\], the old code didn't + take both backslashes into account and ended up skipping the `]' + after erroneously concluding that it was quoted. Report and fix + from akim@epita.fr + + 4/3 + --- +lib/readline/rltty.c + - slight change to the BSD tty interface code, so that if the first + ioctl fails, get_tty_settings returns -1 immediately + - better checking of ioctl return values in BSD tty version of + get_tty_settings + + 4/5 + --- +doc/{bash.1,bashref.texi} + - documented use of LINES and COLUMNS variables + + 4/12 + ---- +lib/readline/rltty.c + - change the SETATTR define for the termio tty driver to use + TCSETAW (the analog of the termios TCSADRAIN) + +lib/glob/fnmatch.c + - fix for posix-style bracket expressions ([:xxx:], [=x=]) broken + by fix of 4/1 for quotes in bracket expressions + + 4/26 + ---- +subst.c + - fix to list_string and get_word_from_string to make a non-whitespace + IFS character preceded by IFS whitespace part of the current field + delimiter, not a separate delimiter that would result in a separate + null field when splitting. cf POSIX.2, 3.6.5, (3)(b). Bug reported + by amc@cs.berkeley.edu + - changed the behavior of the (currently undocumented) ${!prefix@} + expansion to be analogous to the expansion of $@ in other contexts + when double-quoted. ksh93 seems to do this. Bug reported by + Ken Pizzini + - changed read_comsub to ignore NUL bytes in the command substitution + output, printing a warning message for now + +parse.y + - changed shell_getc to ignore NUL bytes in the input, printing a + warning message for now + - changed read_a_line to print a warning when a NUL byte is encountered, + like shell_getc does + + 5/18 + ---- +subst.c + - make sure split_at_delims uses d2 only if it's non-null + - make split_at_delims skip leading newlines in the string to split, + if newline is a delimiter + +jobs.c + - prevent hanging processes by marking a child process as not running + (even if the shell thinks it is) when waitpid() returns -1/ECHILD -- + this indicates that waitpid never returned a reasonable status + for that child though, which may be a symptom of another problem + +builtins/cd.def + - make `pwd' print an error message if the write fails when displaying + the current directory + +lib/readline/histexpand.c + - return NULL from history_find_word if history_tokenize_internal + returns (char **)NULL rather than attempting to dereference a + possibly-NULL pointer + - change history_tokenize_internal to set *indp to -1 before any + processing if indp is non-null + + 5/19 + ---- +builtins/trap.def + - when in POSIX.2 mode and printing trap dispositions, print the + signal name without the leading `SIG', as POSIX.2 requires + + 5/23 + ---- +lib/readline/readline.c + - readline_initialize_everything now assigns $TERM to rl_terminal_name + if the application has left it unset, and calls _rl_init_terminal_io + with the resultant value + +lib/readline/doc/rltech.texinfo + - updated the description of rl_terminal_name to note initialization + +parse.y + - change parse_string_to_word_list to save and restore the value of + current_command_line_count before calling back into the parser -- + it will screw up history if the string extends over one line. Bug + reported by Jan.Djarv@mbox200.swipnet.se + + 6/7 + --- +unwind_prot.h + - change unwind_protect_string to pass the address of the variable to + unwind_protect_var on machines where ints and char *s are not the + same size + +unwind_prot.c + - make sure we save the value of a variable in unwind_protect_var on + machines where sizeof(char *) != sizeof(int), not the contents the + value points to. Fix from Andreas Schwab + + 6/8 + --- +configure.in + - auto-configure MacOS X without bash malloc (like Rhapsody) + + 6/12 + ---- +configure.in + - replace `cygwin32' with `cygwin' + +builtins/evalfile.c + - in _evalfile, change all instances of \r to \n in the file to be + sourced and evaluated if __CYGWIN__ is defined + +input.c + - change \r to \n in the buffer argument to make_buffered_stream and + after calling zread() from b_fill_buffer if __CYGWIN__ is defined + + 6/29 + ---- +lib/sh/Makefile.in + - add rest of dependency rules for makepath.o + + 7/3 + --- +jobs.c + - changed `int' to `WAIT' in a couple of places for non-POSIX + environments + + 7/5 + --- +locale.c + - try to avoid an unnecessary memory allocation in localetrans() in + the case that a translation for the string exists + +lib/readline/doc/rluserman.texinfo + - change the `direntry' information to make it use rluserman instead + of readline + + 7/6 + --- +execute_cmd.c + - changes to execute_in_subshell so it honors a `!' prefixing a command + inside a user subshell (...) + +support/config.{guess,sub} + - add cases for Apple Darwin (Mac OS X) + +configure.in + - Apple Darwin (MacOS X) uses its own malloc + +lib/readline/readline.h + - removed bogus extern declaration of savestring + + 7/7 + --- +builtins/common.c + - in get_working_directory, don't count on getcwd returning anything + useful in the buffer passed as the first argument on failure; just + use bash_getcwd_errstr in the error message + +examples/loadables/cut.c + - loadable version of cut(1), from the FreeBSD source tree + + 7/18 + ---- +lib/readline/vi_mode.c + - changed two instances of (*rl_getc_function) (rl_instream) to calls + to rl_read_key(), which works better when using the readline + callback interface + +builtins/evalfile.c + - added FEVAL_CHECKBINARY flag for _evalfile; controls whether a check + for a binary file is performed + - FEVAL_CHECKBINARY is not set by source_file or maybe_execute_file, + which means that the startup file execution and the `.' builtin will + not check for binary files + - FEVAL_CHECKBINARY is not set by fc_execute_file, so that files + composed of history commands run by the `fc' builtin will not check + for binary files + + 7/21 + ---- +shell.c + - added `--init-file' as a synonym for `--rcfile' + + 7/26 + ---- +support/shobj-conf + - added commented-out stanzas for hpux 10 and hpux 11 when the HP + unbundled ANSI C compiler is being used + + 7/27 + ---- +shell.c + - don't call end_job_control() from exit_shell if subshell_environment + is non-zero, even if the shell is interactive + + 8/1 + --- +bashhist.c + - change maybe_add_history to remember if we saved the first line of + a command and don't save the second and subsequent lines of a + multi-line command if we didn't save the first line + +configure.in, config.h.in + - add autoconf check for getservbyname() + +lib/sh/netopen.c + - add support for named services in /dev/(tcp|udp)/host/service + translation + - make sure _netopen sets errno to something other than 0 if something + goes wrong, so the redirection functions behave + + 8/3 + --- +parse.y + - changes to shell_getc so that history saving of blank lines in + multi-line commands does a better job of syntactic correctness + +bashline.c + - bind ^O to operate-and-get-next in emacs_standard_keymap explicitly, + rather than letting rl_add_defun do it in whatever keymap is current + + 8/4 + --- +builtins/ulimit.def + - removed some of the special handling of RLIM_INFINITY -- the old + code would let people use RLIM_INFINITY as a shorthand for setting + the soft limit to the hard limit. Now, the code just passes + RLIM_INFINITY through if the hard limit is being set, so any kernel + errors will get through + + 8/10 + ---- +parse.y + - change the grammar rule for group_command so that it's composed of + a compound_list instead of a list, which requires a terminator + This means that you can now do (legal) things like + + { { echo a b c ; } } + + since the second close brace will be recognized as such because a + reserved word is legal in that context + + 8/23 + ---- +subst.c + - fix parameter_brace_substring to free all memory allocated by + get_var_and_type in the VT_ARRAYMEMBER case (returned parameter + `val') + + 8/30 + ---- +variables.c + - now that we have dynamic array variables, remove the check for + array_p in bind_variable and let array variables with assignment + functions call the assignment function + +subst.c + - change cond_expand_word to perform tilde expansion (like it should + have done all along) + +lib/readline/complete.c + - don't allow backslash to quote anything inside a single-quoted + string in find_completion_word + +doc/{bash.1,bashref.texi} + - note that `set -a' will cause functions to be exported + +lib/readline/parens.c + - changed the blink timeout so it's settable by the application. A + new function, int rl_set_paren_blink_timeout (int u), (still + undocumented) will set the timeout to U usec + +variables.c + - at startup of an interactive login shell, if the current directory + is $HOME, and $HOME and $PWD are not the same, set the current + directory (and $PWD) to $HOME + - break code that initializes $PWD and $OLDPWD into set_pwd function + +variables.h + - new extern declaration for set_pwd() + + 9/6 + --- +lib/readline/{readline,callback}.c + - allocate memory for rl_prompt instead of simply using what's passed + as the `prompt' argument to readline() or + rl_callback_handler_install(). This will allow constant strings to + be passed to readline(), since the prompt processing code wants to + write to rl_prompt + +lib/sh/pathcanon.c + - new file, does pathname canonicalization + +externs.h + - extern declarations for stuff in lib/sh/pathcanon.c + +general.c + - canonicalize_pathname now simply calls sh_canonpath() + + 9/7 + --- +pcomplete.h + - new member in a `struct compspec': options + - define some flag values for options field + +pcomplib.c + - make sure options field is allocated and copied by compspec utility + functions + +builtins/complete.def + - add struct for completion options. These control the `meta-behavior' + of the compspec. Initially, there are three: + + default - perform bash default completion if programmable + completion produces no matches + dirnames - perform directory name completion if programmable + completion produces no matches + filenames - tell readline that the compspec produces filenames, + so it can do things like append slashes to + directory names and suppress trailing spaces + + - add `-o option' to complete and compgen, setting new options field + in a compspec + - add code to display any -o options when a compspect is printed + with the `-p' option to complete + +pcomplete.c + - programmable_completions now passes back to the caller in the last + argument any options associated with the active compspec (from the + options field) + - change gen_compspec_completions to re-call gen_action_completions + with a CA_DIRECTORY action if the rest of the compspec actions + generate no matches and the COPT_DIRNAMES option is present + +bashline.c + - if a programmable completion was specified to return filenames with + the `-o filenames' option, set rl_filename_completion_desired to 1 + so readline does its special filename-specific things + - if a compspec was defined to fall back to the readline default with + the `-o default' option, suppress setting the + rl_attempted_completion_over variable in attempt_shell_completion + so readline will go on and do filename completion + +include/ansi_stdlib.h + - add extern declarations for atof and strtod + +builtins/printf.def + - change getdouble() to use strtod (since we provide a version in + libsh if the C library doesn't have one), and change the calling + convention to match the other getXXX functions (take value pointer + as argument, return success or failure). This makes printf handle + invalid floating point numbers better + +doc/bash.1, lib/readline/doc/rluser.texinfo + - documented new `-o' option to complete and compgen; described the + arguments and their effects + +lib/readline/{macro,util}.c + - renamed _rl_executing_macro to rl_executing_macro; made it public + +lib/readline/readline.h + - new extern declaration for rl_executing_macro + +lib/readline/rltech.texinfo + - documented rl_executing_macro + + 8/8 + --- +lib/readline/readline.c + - new state variable, rl_readline_state + +lib/readline/readline.h + - extern declaration for rl_readline_state + - define some flag bits for rl_readline_state and macros to test and + set them + +lib/readline/{readline,complete,isearch,macro,rltty,search,signals,undo,vi_mode}.c + - added calls to the macros that set and unset various readline states + +lib/readline/readline.c + - new private function, _rl_free_saved_history_line, to free up the + history entry saved in saved_line_for_history + +lib/readline/search.c + - free any saved history entry in rl_history_search_reinit(), because + rl_get_previous_history makes a call to maybe_save_line without + freeing up the saved line when it returns (so rl_get_next_history + can use it) + - fix up noninc_search_from_pos to deal with invalid history indices + better + + 9/12 + ---- +support/shobj-conf + - HPUX 11.0 needs the `-fpic' flag passed to the linker as well as + the compiler + +execute_cmd.c + - on MS-DOS systems, let the #! checking stuff in execute_shell_script + treat \r as EOL (identical to \n) + +input.c + - on DJGPP systems, allow buffered_getchar to ignore \r. Change + suggested by snowball3@bigfoot.com + + 9/13 + ---- +lib/sh/tmpfile.c + - new file, with functions for creating and (hopefully safely) opening + temporary files for the shell + +externs.h + - extern declarations for functions in tmpfile.c + +variables.c + - new function, get_random_number, returns random values from the + shell's (lame) RNG to the rest of the shell + +variables.h + - new extern declaration for get_random_number() + +subst.c + - changed make_named_pipe to call sh_mktmpname instead of mktemp + +redir.c + - changed here_document_to_fd to call sh_mktmpfd instead of using + inline code + +builtins/fc.def + - changed fc_builtin to call sh_mktmpfp instead of using inline code + +builtins/common.h + - new extern declaration for fc_execute_file() + +bashline.c + - if RL_ISSTATE(RL_STATE_INITIALIZED) is 0 in initialize_readline, + call rl_initialize to bind the defaults before setting up our + custom shell functions and key bindings + +lib/readline/doc/{rluser,hsuser}.texinfo + - some markup changes proposed by dima@chg.ru + +lib/readline/rlstdc.h, lib/tilde/tilde.h + - to get ready for some `const' changes to the source, define const + as either `__const' (gcc -traditional) or nothing if __STDC__ and + __cplusplus are not defined + +lib/readline/readline.c + - upped the default readline version to `4.2-alpha' + +lib/readline/readline.[ch] + - readline now takes a `const char *' as an argument + +lib/readline/history.h + - read_history(), read_history_range(), write_history(), + append_history(), history_truncate_file() now take `const char *' + filename arguments + +lib/readline/histfile.c + - history_filename(), read_history(), read_history_range(), + write_history(), append_history(), history_truncate_file(), + history_do_write() now take `const char *' filename arguments + +lib/readline/readline.h + - rl_read_init_file() now takes a `const char *' filename argument + +lib/readline/bind.c + - current_readline_init_file is now a `const char *' + - _rl_read_init_file(), rl_read_init_file() now take `const char *' + filename arguments + +lib/tilde/tilde.c + - tilde_expand(), tilde_expand_word() now take a `const char *' + as their first argument + +lib/readline/chardefs.h + - fixed CTRL_CHAR macro to be right on systems where chars are unsigned + by default + + 9/14 + ---- +lib/readline/doc/{rl,hs}tech.texinfo + - documented new `const char *' function arguments where appropriate + +lib/readline/vi_mode.c + - clamp the numeric argument in vi mode at 999999, just like in emacs + mode + +lib/readline/doc/rltech.texinfo + - documented rl_readline_state and its possible bit values + +builtins/source.def + - in maybe_pop_dollar_vars, don't overwrite a shell function's + argument list even if the sourced script changes the positional + parameters + +lib/readline/{util.c,rlprivate.h} + - made _rl_strindex() and _rl_savestring() take `const char *' + arguments + + 9/15 + ---- +subst.c + - renamed `doing_completion' to `no_longjmp_on_fatal_error', a more + accurate description of its current behavior + +pcomplete.[ch], externs.h, lib/sh/stringlist.c + - moved the stringlist code from pcomplete.c to lib/sh/stringlist.c + - moved the type declaration and extern function declarations from + pcomplete.h to externs.h + +stringlib.c, externs.h, lib/sh/stringvec.c + - moved the char array code from stringlib.c to lib/sh/stringvec.c + + 9/18 + ---- +subst.c + - new static variable, expand_no_split_dollar_star, to ensure that + $* isn't `split and rejoined' when expanded via a call to + expand_string_unsplit or expand_word_no_split + + 9/19 + ---- +subst.[ch], execute_cmd.c + - renamed expand_word_no_split to expand_word_unsplit + +copy_cmd.c + - in copy_word, just assign w->flags to new_word->flags rather than + bcopying the entire structure + +configure.in, config.h.in + - add autoconf check for pathconf(3) + +lib/sh/tmpfile.c + - test for systems with short filenames using pathconf and + _PC_NAME_MAX, so generated temp file names don't exceed that length + (only do this if the file name length is less than 32, since the + current code doesn't generate filenames longer than about 17 chars) + + 9/20 + ---- +command.h + - added `W_NOSPLIT2' word flag to prepare for supporting weird $@ + expansion on the rhs of assignment statements (inspecting the ksh93 + behavior, it seems like nothing except $@ is split, and $@ is split + on $IFS and rejoined as a single string) + + 9/21 + ---- +subst.c + - since verify_substring_values looks for arithmetic expressions + bounded by `:', do some ad-hoc parsing of the substring passed as + the argument to avoid cutting the expression off at the wrong `:' + (since the inclusion of conditional expressions, expressions may + contain a `:'). Do some paren balancing, too. + + 9/22 + ---- +command.h + - new #define, CLOBBERING_REDIRECT, evaluates to true for any redirect + that will clobber a file and should be subject to `noclobber' + +redir.c + - changed redir_open to use CLOBBERING_REDIRECT instead of + OUTPUT_REDIRECT. This means that <> no longer tests the value of + noclobber, as POSIX.2 specifies + +parse.y + - made a change to cond_term so that expressions like [[ (x) ]] are + parsed correctly + + 9/25 + ---- +parse.y + - small change to grammar for arith_for_command and special_case_tokens + to allow `do...done' or {...} after ((...)) without an intervening + list_terminator (for ksh93 compatibility) + +builtins/printf.def + - `printf' now treats \E and \e the same when performing backslash + escape expansion for the %b format character for compatibility with + $'...' quoting (for ksh93 compatibility) + + 9/26 + ---- +builtins/source.def + - new variable, source_searches_cwd, initially 1. If non-zero, `.' + searches $PWD for the filename argument if it's not found in $PATH + +general.c + - changed posix_initialize to turn off source_searches_cwd if posix + mode is being enabled; turn it on if posix mode is being disabled + - changed things so interactive_comments is not turned off if posix + mode is disabled, since that's rarely what is desired + +variables.c + - changed uidset() to set UID and EUID only if they are not already + set when the shell starts up + - changed things to HOSTNAME is set only if it's not set when the + shell starts up + +execute_cmd.c + - changed execute_builtin_or_function so that if a command like + `command exec 4 as appropriate + +lib/readline/{display.c,readline.h} + - rl_redisplay_func is now of type rl_voidfunc_t * + +lib/readline/{callbacks.c,readline.h} + - the `linefunc' argument to rl_callback_handler_install and the + rl_linefunc variable are now of type rl_vcpfunc_t * + +lib/readline/{complete.c,readline.h} + - rl_completion_display_matches_hook is now of type + rl_compdisplay_func_t * + - rl_directory_completion_hook is now of type rl_icppfunc_t * + +lib/readline/{history.h,histexpand.c} + - history_inhibit_expansion_function is now of type + rl_linebuf_func_t * + +lib/readline/histexpand.c + - new private type, _hist_search_func_t, used to indirect through + the various history search functions + +lib/tilde/tilde.h + - new typedef, tilde_hook_func_t, which takes a char * and returns + a char * + +lib/tilde/tilde.[ch] + - tilde_expansion_preexpansion_hook and tilde_expansion_failure_hook + are now of type tilde_hook_func_t * + +[THERE ARE NO LONGER ANY REFERENCES TO Function *, CPFunction *, or +CPPFunction * IN THE READLINE SOURCE, WHICH INCLUDES THE TILDE LIBRARY] + +{bashline,bracecomp}.c, bashline.h + - changes for changed type of rl_completion_entry_func and other + changed types (rl_compentry_func_t, rl_completion_func_t, + const changes for prototypes, etc.) + +pathexp.[ch] + - shell_glob_filename now takes a `const char *' argument + - quote_string_for_globbing now takes a `const char *' argument + + 10/31 + ----- +lib/sh/zwrite.c + - fix zwrite() to update the buffer pointer in the case of a + partial write, in addition to decreasing the count of bytes to + be written + +support/config.{guess,sub} + - added entries for MIPS-based Compaq machines running NonStopUX + + 11/1 + ---- +lib/readline/undo.c + - renamed free_undo_list to be rl_free_undo_list, made a dummy + replacement function free_undo_list that just calls + rl_free_undo_list + +lib/readline/readline.h + - extern declaration for rl_free_undo_list + +lib/readline/{readline,signals}.c + - changed calls to free_undo_list to rl_free_undo_list + +lib/readline/doc/rltech.texinfo + - changed all function types and arguments for new typedefs + + 11/2 + ---- +lib/readline/{rlprivate.h,terminal.c,display.c} + - term_clreol, term_clrpag, term_cr, term_backspace, term_goto, + term_pc, term_im, term_ei, term_ic, term_ip, term_IC, term_dc, + term_DC, term_forward_char, term_up, term_mm, term_mo, term_ku, + term_kd, term_kr, term_kl, term_ks, term_ke, term_kh, term_kH, + terminal_can_insert variables all now have a _rl_ prefix + +lib/readline/{rlprivate.h,terminal.c,display.c, readline.c} + - screenheight, screenwidth, screenchars now have an _rl_ prefix + +lib/readline/{terminal,complete,isearch,kill,macro,readline,search,undo,util,vi_mode}.c + - changed calls to ding to calls to rl_ding + +lib/readine/{isearch,readline,search}.c + - saved_line_for_history now has an _rl_ prefix + +lib/readline/readline.[ch] + - renamed maybe_{replace,save,unsave} line to have an rl_ prefix + +lib/readline/{readline,search,isearch}.c + - changed calls to maybe_{replace,save,unsave} line to call the + rl_-prefixed equivalents + +lib/readline/{rlprivate.h,readline.c,util.c} + - renamed alphabetic to rl_alphabetic; changed calls + +lib/readline/{bind.c,funmap.c,rlprivate.h} + - possible_control_prefixes -> _rl_possible_control_prefixes + - possible_meta_prefixes -> _rl_possible_meta_prefixes + +lib/readline/compat.c + - new file for entry points for backwards compatibility functions + - moved free_undo_list here from undo.c + - maybe_{replace,save,unsave}_line function that call their rl_ + counterparts + - moved ding() here; it just calls rl_ding() + - moved alphabetic here; it just calls _rl_alphabetic() + +lib/readline/Makefile.in + - make sure compat.o is built and linked appropriately + +bashline.c,pcomplete.c + - changed calls to ding() to call rl_ding() + +support/shobj-conf + - changed linux stanza SHLIB_XLDFLAGS to make the `soname' in a + shared library have only the major version number, rather than + major and minor numbers + - made analogous changes for bsd/os-4 + - changed freebsd 3.x stanza to match `freebsdelf[3-9]*' for + FreeBSD elf systems and `freebsdaout[3-9]*' for FreeBSD + a.out systems (are there any?) + +lib/readline/doc/{rluser,hsuser}.texinfo + - changed uses of @samp to @option where appropriate + +doc/bashref.texi + - changed uses of @samp to @option where appropriate + + 11/3 + ---- +lib/readline/{readline.h,complete.c,compat.c} + - completion_matches, username_completion_function, + filename_completion_function all have an rl_ prefix + +{bashline,bracecomp,pcomplete}.c + - changed calls to completion_matches, username_completion_function, + and filename_completion_function + +lib/sh/shquote.c + - single_quote, double_quote, un_double_quote, backslash_quote, + backslash_quote_for_double_quotes, contains_shell_metas all now + have an sh_ prefix + +externs.h + - changed extern declarations for functions from shquote.c + +{array,bashline,pcomplete,print_cmd,variables}.c, parse.y +builtins/{alias,complete,trap,type}.def + - changed callers of single_quote + +{array,bashline}.c, builtins/setattr.def + - changed callers of double_quote + +{bashline,bracecomp}.c, parse.y, builtins/printf.def + - changed callers of backslash_quote + +parse.y + - changed callers of backslash_quote_for_double_quotes + +{print_cmd,variables}.c + - changed callers of contains_shell_metas + +lib/readline/{rlshell.h,shell.c,histexpand.c} + - single_quote -> sh_single_quote + +lib/readline/{rlshell.h,shell.c,input.c} +general.[ch],shell.c,subst.c + - unset_nodelay_mode -> sh_unset_nodelay_mode + +lib/readline/{rlshell.h,shell.c}, lib/tilde/tilde.c, variables.c + - get_home_dir -> sh_get_home_dir + +lib/readline/rlshell.h,lib/readline/bind,histfile,nls,readline,shell,terminal}.c, lib/tilde/tilde.c, variables.c + - get_env_value -> sh_get_env_value + +lib/readline/rlshell.h,lib/readline/{shell,terminal}.c +variables.h,{jobs,nojobs,variables}.c + - set_lines_and_columns -> sh_set_lines_and_columns + + 11/6 + ---- +configure.in + - bash can only link with an already-installed readline library whose + version is 4.2 or greater + +variables.h + - new variable attribiute, noassign, with its accompanying test macro, + noassign_p. Completely internal, not user-settable + +execute_cmd.c + - treat noassign variables like readonly variables, except an attempt + to assign to them does not cause a non-interactive shell in POSIX + mode to abort + +{subst,variables}.c,builtins/declare.def + - attempts to assign to `noassign' variables return an error status, + but no error messages -- almost identical to readonly variables + +variables.c + - GROUPS and FUNCNAME are `noassign' variables, meaning assignment to + them is disallowed, but that they may be unset (in which case they + lose their special properties) + +doc/{bash.1,bashref.texi} + - documented that assignments to GROUPS and FUNCNAME are disallowed + and return an error status + + 11/8 + ---- +lib/readline/{funmap.c,bind.c,rlprivate.h} + - _rl_possible_{control,meta}_prefixes are now arrays of `const char *' + and are defined in bind.c, since that's where they're used + +lib/readline/rltty.c + - changed prepare_terminal_settings to take an `oldtio' argument + instead of `otio', which shadows the global declaration + +lib/readline/bind.c + - the `name' member of a parser_directive element is now a + `const char *' + - the `name' member of a boolean_varlist element is now a + `const char *' + - the `name' member of a string_varlist element is now a + `const char *' + - the `name' member of an assoc_list element is now a + `const char *' + - the `name' member of an keymap_names element is now a + `const char *' + +lib/readline/display.c + - changed scope-local char * variable `temp' to `vtemp' because + there's already a function local variable named `temp' of a + different type (int) in rl_redisplay + +lib/readline/util.c + - pathname_alphabetic_chars is now `const char *' + +lib/readline/terminal.c + - the `tc_var' member of a _tc_string element is now a + `const char *' + +lib/readline/histexpand.c + - changed history_expand_internal to remove the duplicate local + declaration of `t' in the `s'/`&' case + +lib/readline/histfile.c + - in history_filename, `home' is now a `const char *' + +lib/tilde/tilde.c + - default_prefixes and default_suffixes are now arrays of + `const char *' + +lib/readline/vi_mode.c + - vi_motion and vi_texmod are now `const char *' + +lib/readline/complete.c + - simplified the conditional declaration of getpwent() + +variables.[ch] + - get_string_value now takes a `const char *' argument + + 11/10 + ----- +display.c + - changes to expand_prompt and rl_redisplay to keep track of the number + of invisible characters on the first line of the prompt, in case it + takes up more than one physical line, and not all invisible chars are + on the first line + - the code that determines the index into the line at which to wrap the + first line if the visible prompt length exceeds the screen width was + changed to use the number of invisible chars in the first physical + prompt line rather than the total number of invisible characters + - changed redraw_prompt to save and restore prompt_invis_chars_first_line + +subst.c + - changed expand_string_internal to savestring() the string argument + to avoid possible doubly-freed memory on substitution errors + - fixed expand_word_list_internal so that commands with assignment + statements preceding words that expand to nothing return a failure + status if one of the assignments fails; for example + + readonly TVAR + TVAR=7 $ECHO $ABCDE + - made sure that all cases of jump_to_top_level set + last_command_exit_value to something non-zero before jumping, since + they are by definition errors + +builtins/evalstring.c + - changed parse_and_execute to set last_result to EXECUTION_FAILURE + along with last_command_exit_value in the `DISPOSE' case of a + jump_to_top_level, since we can return this value in most + (interactive) circumstances + + 11/14 + ----- +general.c + - fix legal_number so that it skips any trailing whitespace in its + string argument after strtol returns, since strtol does not + +lib/readline/{complete.c,readline.h} + - new function pointer, rl_directory_rewrite_hook, identical in effect + to rl_directory_completion_hook except that it does not modify what + is displayed when the possible completions are listed or inserted + +bashline.c + - changed tcsh_magic_space to try and insert a space closer to where + the point was originally, rather than always inserting it at the + end of the line + + 11/16 + ----- +jobs.c + - fixed a bug that happened on cygwin systems that caused the jobs + table to fill up if a file sourced from an interactive shell ran + lots of jobs -- notify_and_cleanup() never called notify_of_job_status + +subst.c + - fixed pat_match to avoid infinite recursion on zero-length matches + from match_pattern + + 11/17/2000 + ---------- +[bash-2.05-alpha1 released] + + 11/18 + ----- +support/shobj-conf + - added GNU Hurd support, identical to linux + +variables.c + - cygwin systems don't use the exportstr stuff at all, so call + INVALIDATE_EXPORTSTR before testing var->exportstr, since just + blindly using the value_cell will break exported functions that + already have an exportstr set + - when recomputing the exported value because valid_exportstr fails, + make sure to call named_function_string if the variable is a shell + function + + 11/20 + ----- +variables.c + - removed call to valid_exportstr; the exportstr code has been + adequately debugged + +lib/glob/fnmatch.c + - reverted to the POSIX.2 behavior of using the current locale and + strcoll() to evaluate range expressions in bracket expressions + +doc/{bash.1,bashref.texi} + - added note to Pattern Matching section emphasizing that the current + locale plays a part in evaluating range expressions within [...] + +aclocal.m4 + - added an #include to the test for posix sigaction + restarting interrupted system calls + +support/config.guess + - changes from Tim Mooney to support `letter version' releases of + Tru 64 Unix on the Alpha (e.g., 5.1a) + + 11/21 + ----- +lib/sh/pathphys.c + - make sure MAXSYMLINKS is defined + +aclocal.m4 + - changed BASH_CHECK_PWFUNCS to just use AC_EGREP_CPP on a file + that includes pwd.h and other header files, checking for getpwuid. + It #defines HAVE_GETPW_DECLS if the egrep succeeds + +lib/readline/complete.c + - provide extern declaration of getpwent if _POSIX_SOURCE is defined, + since most systems don't declare it in unless _POSIX_SOURCE + is undefined + + 11/22 + ----- +input.c + - fixed a small typo in the cygwin-specific code + +doc/{bashref.texi,bash.1} + - added some more explanatory text about the effect of the current + locale's collating order on range expressions within bracket + expressions + +doc/bashref.texi, lib/readline/doc/{rltech,rluser,hstech}.texinfo + - changed to use @env instead of @code for the names of environment + and shell variables in text (not in tables yet) + + 11/27 + ----- +configure.in + - configure without the bash malloc on Interix + +lib/readline/doc/rltech.texinfo + - changed completion_matches() to rl_completion_matches() + - changed filename_completion_function() to + rl_filename_completion_function() + - changed username_completion_function() to + rl_username_completion_function() + +lib/readline/rlprivate.h + - changed declaration of _rl_alphabetic to rl_alphabetic, since that's + what's used in the C files + +support/bashbug.sh + - Debian has /usr/bin/editor as a link to the system default editor; + make that one of the alternatives if $EDITOR is not set + - if the OS provides mktemp(1) or tempfile(1), use those to create + the temp file for the bug report + +lib/readline/{readline.[ch], callback.c} + - new function, rl_set_prompt, called with prompt string as argument, + sets and, if necessary, expands rl_prompt + +lib/readline/{complete.c,compat.c,readline.h} + - rl_completion_matches now takes a `const char *' as its first + argument + - compute_lcd_of_matches now takes a `const char *' as its third + argument + +lib/readline/rltypedefs.h + - a rl_completion_func_t now takes a `const char *' as its first + argument + +lib/readline/Makefile.in + - added dependencies on rltypedefs.h + +bashline.c + - attempt_shell_completion now takes a `const char *' as its first + argument + - removed bogus cast when assigning to rl_attempted_completion_function + and rl_completion_entry_function + - bash_directory_completion_matches takes a `const char *' argument + +pcomplete.c + - gen_matches_from_itemlist, pcomp_filename_completion_function, + gen_action_completions, gen_globpat_matches, gen_wordlist_matches, + gen_compspec_completions now take `const char *' arguments as + appropriate + - programmable_completions now takes `const char *' first and + second arguments + +pcomplib.c + - find_compspec now takes a `const char *' argument + + 11/29 + ----- +shell.c + - in open_shell_script, if we have /dev/fd, don't perform the check + for a binary file if isatty(fd) (where fd is opened on the script + name) returns non-zero + - in open_shell_script, don't call init_noninteractive again, since it + can undo changes made by the startup files ($BASH_ENV) + +input.c + - in fd_to_buffered_stream, make sure buffer size (and hence size + arg passed to read(2)) is greater than zero. This makes + bash /dev/stdin work right. + - return -1 from sync_buffered_stream immediately if buffers is NULL + (can happen when running `bash -i /dev/stdin' and executing a + command that requires a fork) + + 11/30 + ----- +jobs.c + - renamed cont_signal_handler to sigcont_sighandler for consistency + - renamed stop_signal_handler to sigstop_sighandler for consistency + - if there is no jobs list or no outstanding jobs, return immediately + from notify_of_job_status, before fussing with the signal state + - change map_over_jobs to not fuss with the signal state unless there + are jobs + +lib/malloc/malloc.c + - encapsulated the code to block and unblock signals during morecore() + execution into two functions: block_signals and unblock_signals + - only block signals in morecore() if interrupt_immediately is non-zero + or SIGINT or SIGCHLD is trapped + + 12/1 + ---- +lib/readline/readline.c + - fix to rl_forward to make sure that lend doesn't get set < 0, since + that will result in rl_point being < 0 + + 12/5 + ---- +parse.y + - fix to parse_matched_pair to allow backslash to escape a ' inside a + $'...' construct inside another grouping construct like ${...} + - translate $'...' and $"..." in parse_matched_pair, because nothing + else will do it if such a construct appears inside a grouping + construct + + 12/6 + ---- +configure.in + - make sure all bracket tests for pattern matching in case statements + are appropriately quoted, so autoconf doesn't swallow the brackets + - add -rdynamic to LOCAL_LDFLAGS for freebsd-4.x + +examples/loadables/realpath.c + - new loadable builtin, canonicalizes pathnames and expands symlinks + +builtins/ulimit.def + - added undocumented -w option for setting RLIMIT_SWAP, if it's defined + + 12/7 + ---- +bashline.c + - reordered code in initialize_readline so all of the rl_add_defun + calls are made before the call to rl_initialize, and all of the + rl_{bind,unbind}_key_in_map calls are made after initializing + readline. This allows the bash-specific function names to be used + in ~/.inputrc + + 12/12 + ----- +lib/readline/callback.c + - in rl_callback_read_char, loop after returning from + readline_internal_char and test rl_pending_input in case some + function (like the incremental search functions and digit argument + functions) pushed input back with rl_execute_next + +lib/readline/readline.h + - new rl_state flag: RL_STATE_INPUTPENDING, indicating that + rl_execute_next has pushed input back for rl_get_key to read + +lib/readline/input.c + - new function to clear rl_pending_input: rl_clear_pending_input() + +lib/readline/{input,readline,signals}.c + - when rl_pending_input is set, set state RL_STATE_INPUTPENDING; + unset that state when rl_read_key returns the pending input + - call rl_clear_pending_input at appropriate points + + 12/15 + ----- +lib/readline/histfile.c + - don't leak file descriptors while attempting to truncate a non-regular + file + +input.c + - make sure check_bash_input sets the close-on-exec flag for the file + descriptor used to save the bash input fd + +parse.y + - if default_buffered_input gets changed while it's on the saved + stream stack, make sure it gets set to close-on-exec when it's + restored by pop_stream() + + 12/18 + ----- +builtins/ulimit.def + - change set_limit to account for Cygwin's setdtablesize() being + declared as a void function + +support/config.{guess,sub} + - change cygwin32 to cygwin + + 12/20 + ----- +nojobs.c + - make wait_sigint_handler handle the case of interrupt_immediately + being non-zero when it's called, and jump out appropriately + +jobs.c + - new function to run sigchld traps: run_sigchld_trap(); called from + waitchld + - broke the code that computes the printable job status messages for + pretty_print_job out into a separate function + - rearranged some code eliminating a useless `else' branch in wait_for + - shell_tty_info is now a TTYSTRUCT, using defines from shtty.h + - broke the code that sets a job's status after waitpid says its state + has changed and cleans up after a received SIGINT out into a separate + function: set_job_status_and_cleanup + - last_stopped_job() -> job_last_stopped() to avoid collision with a + variable name + - last_running_job() -> job_last_running() for consistency + + 12/21 + ----- +variables.c + - new function, print_func_list (SHELL_VAR **list); prints shell + functions from list in a form that may be re-used as input to + redefine the functions + +variables.h + - new extern declaration for print_func_list + +builtins/set.def + - set without options now calls print_func_list to have functions + printed in a way that can be reused as input (this affects + `declare' and `declare -p' also) + + 12/27 + ----- +general.h + - add an ISOCTAL define + +builtins/common.h + - use ISOCTAL in read_octal function + +parse.y + - in decode_prompt_string, don't just skip STRING forward by 3 if an + octal sequence is translated; handle sequences of fewer than three + characters by checking each character + + 12/28 + ----- +doc/{bash.1,bashref.texi} + - make sure `vi-move' is a documented keymap argument to bind's + `-m' option + + 12/29 + ----- +variables.c + - change print_assignment so that functions are printed in a way that + may be reused as input (without the `=') + + 1/2/2001 + -------- +test.c + - fix test_command to print an error message if `[' is supplied a + single argument that is not `]' + +support/shobj-conf + - change test of $SHOBJ_CC from `gcc*' to `*gcc*' to handle full + pathnames + + 1/11 + ---- +execute_cmd.c + - in initialize_subshell, zero out builtin_env, since those aren't + supposed to be exported + +variables.c + - new function: shell_var_from_env_string, creates a SHELL_VAR from + a `name=value' style environment string and returns it + - new function: bind_name_in_env_array(name, value, array), makes + NAME have VALUE in ARRAY, a temporary environment + - new function: bind_tempenv_variable (name, value), makes NAME have + VALUE in one of the temporary environments -- temporary_env, + builtin_env, or function_env + - changed bind_variable to call bind_tempenv_variable if one of the + temporary environments is non-null before modifying the + shell_variables table. This fixes a problem with sourced scripts + modifying variables in a temporary environment, but not seeing the + updated values + + 1/12 + ---- +variables.c + - changed things so OSTYPE, HOSTTYPE, and MACHTYPE are set only if + they don't have a value at shell startup + + 1/17 + ---- +builtins/fc.def + - create temp file with MT_USETMPDIR + +variables.c + - allow function local readonly variables to overwrite (or shadow) + other (calling) function readonly variables, but not global + readonly ones + +builtins/wait.def + - replace unwind_protect of interrupt_immediately, since that's a + variable that you cannot unwind-protect (the unwind-protect code + uses it) + + 1/22 + ---- +Makefile.in + - changed RELSTATUS to `beta1' + +lib/readline/terminal.c + - added rl_set_screen_size function, wrapper around + _rl_set_screen_size so bash doesn't call _rl_ functions + +lib/readline/{rlprivate,readline}.h + - moved rl_explicit_arg to readline.h + - moved rl_numeric_arg to readline.h + - moved rl_editing_mode to readline.h + - moved rl_last_func to readline.h + - added rl_set_screen_size to readline.h + +lib/readline/doc/rltech.texinfo + - documented rl_explicit_arg, rl_editing_mode, rl_numeric_arg, + rl_last_func + - documented rl_set_screen_size + +{jobs,nojobs}.c + - _rl_set_screen_size -> rl_set_screen_size + +{bashline,pcomplete}.c, builtins/set.def + - removed extern declarations of variables defined in readline.h + + 1/23 + ---- +support/rlvers.sh + - use $TMPDIR if it's defined + - use $RL_INCDIR (set by -I option, /usr/local/include by default) + as the directory containing the installed readline header files + - cd to the temp directory before attempting compilation + +configure.in + - pass `-I ${includedir}' to rlvers.sh + + 1/29 + ---- +subst.c + - fixed parameter_brace_expand to only throw away the state of + quoted dollar-at if we're going to be using the rhs of the + brace expansion, since whatever parameter_brace_expand_rhs sets + should be what goes (corrects bad fix of 2/16/2000) + - fixed param_expand to only free temp after calling + parameter_brace_expand if it's a quoted null and we *did not* + have a quoted $@, since in that case we want to keep it and + do the $@ special handling (fixes real problem from 2/16/2000) + + 1/30 + ---- +variables.c + - remove export attribute from SSH2_CLIENT, like SSH_CLIENT + + 2/1 + --- +unwind_prot.c + - added new function, clear_unwind_protect_list, to zero out the + unwind_protect list, optionally freeing the elements + +unwind_prot.h + - new extern declaration for clear_unwind_protect_list + +execute_cmd.c + - call clear_unwind_protect_list in initialize_subshell. This fixes + the problem of core dumps when calling a shell script without a + leading `#!' from a shell function or other context with an + unwind-protect list + - set variable_context and return_catch_flag to 0 in + initialize_subshell, since a new subshell is no longer in a shell + function + + 2/2 + --- +doc/readline.3 + - updated the text; clarified several points + - changed the usage synopsis to include and + + +lib/readline/doc/hstech.texinfo + - made sure all function prototypes are valid ANSI C (mostly + changing () to (void)) + +lib/readline/doc/rluser.texinfo + - a few clarifications + +lib/readline/doc/rltech.texinfo + - a few clarifications + - added two new subsections for character input and terminal + management + - changed all function prototypes to be valid ANSI C (mostly + replacing () with (void)) + - documented some variables in readline.h but previously not in + the reference manual (rl_num_chars_to_read, rl_dispatching, + rl_gnu_readline_p, rl_completion_type) + - documented some functions in readline.h but previously not in + the reference manual (rl_clear_pending_input, rl_prep_terminal, + rl_deprep_terminal, rl_tty_set_default_bindings, rl_alphabetic, + rl_crlf) + +lib/readline/readline.h + - added extern declaration for rl_clear_pending_input() + - added extern declaration for rl_alphabetic + - changed rltty_set_default_bindings to rl_tty_set_default_bindings + - changed crlf() -> rl_crlf() + +lib/readline/rltty.c + - new function, rl_tty_set_default_bindings, just calls + rltty_set_default_bindings (needed `rl_' prefix) + +lib/readline/readline.c + - readline_default_bindings now calls rl_tty_set_default_bindings + +lib/readline/terminal.c + - renamed crlf() to rl_crlf(); crlf() is still defined for backwards + compatibility + +bashline.c, lib/readline/{complete,display}.c + - changed all calls to crlf() to rl_crlf() + +test.c + - fix filecomp() so that `test file1 -nt file2' doesn't fail if file1 + exists but file2 does not + + 2/5 + --- +lib/readline/{terminal,compat}.c + - move crlf() backwards-compatibility definition to compat.c + +execute_cmd.c + - if we're running a command `( command ) &' from a non-interactive + shell, don't unconditionally disable expand_aliases. Only do it + when running such a command from an interactive shell, since then + we're changing to a non-interactive shell + + 2/6 + --- +[bash-2.05-beta1 released] + +lib/readline/compat.c + - add extern declaration for rl_crlf() + +lib/readline/undo.c + - initialize start and end in rl_do_undo to avoid bogus gcc compiler + warning with -Wall + +lib/readline/rlprivate.h + - fix typo in extern declaration of _rl_current_display_line() + - add extern declaration of _rl_free_saved_history_line() + +lib/readline/terminal.c + - return immediately from _rl_set_screen_size if one of the args is 0 + - new function, rl_get_screen_size (int *rows, int *cols) to return + readline's idea of the screen dimensions + +lib/readline/doc/rltech.texinfo + - documented rl_get_screen_size + + 2/7 + --- +pathexp.c + - a couple of fixes for the POSIX_GLOB_LIBRARY version of the globbing + code + +expr.c + - fixed omission of ^= from the special assignment operators + +shell.c + - change logic for setting `posixly_correct' at shell startup: if + $POSIXLY_CORRECT or $POSIX_PEDANTIC is found in the environment, + set it to 1, otherwise retain the previous value (which is + initialized to 0) + + 2/10 + ---- +builtins/evalstring.c + - since subshell_environment is now a flags word, test for the + SUBSHELL_COMSUB bit being set when decided whether or not to + evaluate $(flag: B_WASBASHINPUT + +redir.c + - in add_undo_redirect, if FD is 0, make the undo redirect be of type + r_duplicating_input instead of r_duplicating_output, since that fd + requires special handling in the presence of buffered streams (fixes + problem with scripts reading input through a pipe restoring bash + input buffered stream correctly after a `read' with an input + redirection + + 2/14 + ---- +lib/readline{complete,util}.c + - moved rl_strpbrk to util.c with rest of string utility functions, + renamed to _rl_strpbrk + +lib/readline/rlprivate.h + - extern declaration for _rl_strpbrk + +lib/readline/input.c + - make the timeout in rl_gather_tyi() be a variable + (_keyboard_input_timeout) rather than a constant + - new function, rl_set_keyboard_input_timeout (int u) to set + _keyboard_input_timeout. The argument is in microseconds; returns + the old value of _keyboard_input_timeout + - _rl_input_available uses _keyboard_input_timeout also + +lib/readline/readline.h + - extern declaration for rl_set_keyboard_input_timeout + +lib/readline/doc/rltech.texinfo + - documented rl_variable_bind(), rl_macro_bind(), rl_macro_dumper(), + rl_variable_dumper(), rl_push_macro_input(), rl_show_char() + + 2/20 + ---- +findcmd.c + - new function, executable_or_directory(name), returns 1 if NAME is + an executable file or a directory + +findcmd.h + - extern declaration for executable_or_directory() + +bashline.c + - call executable_or_directory() from command_word_completion_function, + which requires a single stat(2), instead of executable_file() and + is_directory(), each of which requires a stat(2) + + 2/21 + ---- +execute_cmd.c + - changed execute_builtin to handle `return' with a preceding variable + assignment list specially when in POSIX mode. POSIX says that the + variable assignments should persist after the builtin returns, since + `return' is a special builtin. Since `return' does a longjmp and + doesn't go through the normal cleanup path, we need to do special + things + +variables.c + - new function, merge_function_env(), merges the function_env into + the shell_variables table + +variables.h + - extern declaration for merge_function_env() + +execute_cmd.c + - changed execute_function to merge any variable assignments preceding + the function call into shell_variables if the shell is running in + POSIX mode + +subst.c + - changed parameter_brace_expand_error to do tilde expansion on the + rhs of the expansion, if it's not null + - changed command_substitute so that the subshell begun to execute + the command substitution inherits the setting of the `-e' option + when in POSIX mode + +builtins/break.def + - changed check_loop_level to not print a complaining message when + the shell is running in POSIX mode, even if BREAK_COMPLAINS is + defined. This affects `break' and `continue' + - changed `break' and `continue' to return success even if the shell + is not executing a loop, as POSIX specifies + +builtins/set.def + - changed reset_shell_options() to not clear posixly_correct, so + subshells spawned to execute shell scripts without a leading `#!' + inherit posix mode from their parent shell + +variables.c + - changed make_new_variable to create the shell_variables hash table + if it hasn't been done yet. This is needed because bind_variable + may be called before initialize_shell_variables (e.g., when + `bash -o posix' calls bind_variable("POSIXLY_CORRECT", "y") from + parse_shell_options -> set_minus_o_option -> set_posix_mode + This makes `bash --posix' and `bash -o posix' equivalent, as they + should always have been + - changed maybe_make_export_env to merge the contents of `builtin_env' + into export_env after function_env and before temporary_env. This + fixes the problems with variable assignments preceding `eval' or + `source' not making it into the environment passed to executed disk + commands (var=20 eval printenv var) + +doc/bashref.texi + - noted that variable assignments preceding shell function calls + persist in the shell environment after the function returns when + the shell is running in POSIX mode + - noted that when the shell is running in POSIX mode, subshells + spawned to execute command substitutions inherit the value of + the `-e' option from the parent shell + + 2/26 + ---- +doc/bashref.texi + - augmented description of bash non-posix behavior in posix mode + with information from running the vsc-lite test suite + + 2/28 + ---- +general.c + - since POSIX.2 says that aliases should be expanded even in + non-interactive shells, enable alias expansion in + posix_initialize() when posix mode is enabled, and set it to the + value of interactive_shell if posix mode is disabled + +shell.c + - before running the startup scripts, set expand_aliases to + posixly_correct, since we don't want alias expansion in startup + files unless we've been given the --posix invocation option + +doc/bashref.texi + - added item in BASH Posix Mode section noting that alias expansion + is always enabled when in posix mode + +Makefile.in + - changed release level to `beta2' + + 3/1 + --- +jobs.c + - expanded retcode_name_buffer to 64 + - changed printable_job_status to conform to posix.2 for text of + stopped job status: `Stopped(SIGTSTP)' or `Stopped(SIGSTOP)' + +doc/bashref.texi + - Noted above change in posix mode section + + 3/5 + --- +lib/readline/bind.c + - changed rl_get_keymap_by_name to work case-insensitively + + 3/6 + --- +doc/readline.{0,3,ps} + - removed from distribution; moved to readline distribution + +lib/readline/doc/history.3 + - man page for history library; neither built nor installed + (part of the standalone readline distribution) + +lib/readline/histfile.c + - changed history_truncate_file to return 0 on success, errno + on failure + - changed history_do_write to return errno on a write error. This + affects write_history and append_history + +lib/readline/history.c + - max_input_history is now history_max_entries; the old variable is + maintained for backwards compatibility + +lib/readline/histexpand.c + - the list of delimiters that separate words for history_tokenize + is now a variable: history_word_delimiters; default value is as + before + - changed history_expand to return 0 immediately if its second + argument is NULL + +bashline.c + - changed to use history_max_entries + +lib/readline/history.h + - extern declaration for history_max_entries + - extern declaration for history_word_delimiters + + 3/8 + --- +test.c + - changed unary_operator() to return FALSE for non-numeric arguments + to `-t' + + 3/9 + --- +[bash-2.05-beta2 released] + + 3/12 + ---- +lib/readline/doc/rltech.texinfo + - documented rl_set_paren_blink_timeout() + - moved the example function to its own info node + +lib/readline/{hstech.texinfo,history.3} + - `$' is not in the default value of history_word_delimiters + + 3/13 + ---- +bashline.c + - in maybe_add_history, if the tests for HISTCONTROL succeed, but + the HISTIGNORE check fails, set first_line_saved to 0 + + 3/15 + ---- + +lib/glob/fnmatch.c + - fixed a bug in patscan that caused `[' to be treated as special + even inside a nested bracket expression. It's supposed to lose + it's special handling inside [] + - fixed a bug in patscan that caused `]' to end an embedded bracket + expression even if it was the first character after the `[' (or + a leading `!' or `^') + + 3/22 + ---- +execute_cmd.c + - made a small change to shell_execve to report a more user-friendly + error if execve(2) fails because of a `#! interpreter' error with + `interpreter' + - in shell_execve, if HAVE_HASH_BANG_EXEC is not defined, make sure + the file length is > 2 characters before attempting to execute an + interpreter + + 3/26 + ---- +jobs.c, nojobs.c + - give_terminal_to now takes a second argument, FORCE. If that + second argument is non-zero, give the terminal away no matter + what job_control is set to + +jobs.h + - changed extern declaration of give_terminal_to + +{jobs,sig,subst}.c,parse.y + - changed all calls to give_terminal_to to add a second argument + of 0 + +jobs.c + - changed second argument of call to give_terminal_to in + end_job_control to 1, to force this even if job_control is 0. + This fixes the problem of `exec other-job-control-shell' in a + startup file hanging, since run_startup_files sets job_control to 0 + +subst.c + - fixed test of subshell_environment in command_substitute to test the + bit SUBSHELL_ASYNC rather than test equality, since it's now a + bitmask + + 3/27 + ---- +shell.c + - changed posix initialization calls to set POSIXLY_CORRECT=y and + then call sv_strict_posix, so $SHELLOPTS includes `posix' and + POSIXLY_CORRECT is set, for both the posix command line options + and when act_like_sh is non-zero + +redir.c + - the `>& filename' redirection now works in posix mode, redirecting + stdout and stderr, since POSIX.2 leaves it unspecified + +doc/bashref.texi + - removed item about `>& filename' from Bash POSIX Mode section + +parse.y + - fixed a problem in decode_prompt_string with `\W' not printing + anything if PWD == "//" + +lib/readline/input.c + - in rl_read_key, after calling (*rl_event_hook), check for rl_done + being set, and return '\n' if it is + +Makefile.in + - changed RELSTATUS to `release' + + 3/28 + ---- +support/bashbug.sh + - replace use of $(...) with `...` for the benefit of old versions + of sh + +builtins/set.def + - changed print_all_shell_variables to not print shell function names + and definitions when in posix mode + +doc/bashref.texi + - noted change in `set' behavior in posix mode section + + 4/2 + --- +lib/readline/readline.c + - changed default value of RL_LIBRARY_VERSION to `4.2' + + 4/5 + --- +[bash-2.05-release frozen] + + 4/6 + --- +bashline.c + - fix to vi_edit_and_execute_command to keep it from adding an + empty line to the history and not resetting current_command_line_count, + which resulted in each command re-run with `v' having a `;' appended + diff --git a/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v2 b/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v2 new file mode 100644 index 000000000..a494dd396 --- /dev/null +++ b/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v2 @@ -0,0 +1,584 @@ + +This documents the changes between the first `public' release of CWRU bash +and this, its second release. It summarizes, without going into detail, +the changes that have been made. + +NEW FEATURES + + o `getopts' builtin, as specified by Posix.2 + + o new configuration variable HAVE_UNISTD_H, used to include + and test for Posix features + + o `ulimit' has new -p and -n options to report the pipe buffer size + and number of available file descriptors, respectively + + o allow SIGCHLD to be trapped and useful behavior to result if it is + + o Posix termios and signal code for readline and the shell itself + + o can optionally use the GNU termcap library + + o new output for `times' builtin that looks like ksh: + + shell-user shell-sys + child-user child-sys + + o `ulimit' limits now apply to both shell and its children + + o new machines.h entries + + o no longer does the costly `close file descriptors 3-NOFILE' + each time it exec's a program -- now uses the close-on-exec + flag for the files it fiddles with + +NOTABLE BUG FIXES + + o jobs.c only sets and gets the tty state in an interactive shell + + o bash does better process group checking on Posix systems, eliminating + some error messages + + o fix for `infinite login' bug on System V machines when executing a + script from a .bash_profile + + o the `trap' command now behaves as 1003.2 specifies, as of draft 9 + + o restore original terminal process group upon exit, so as to not + confuse a parent Bourne shell + + o `bash file', where `file' is a binary file, now reports an error + + o shells started with `-s' now execute the .bashrc file + + +CHANGES (by date and files affected) + 9/20 - 9/30 + ----------- + +builtins.c, builtins.c.posix + - added getopts help text + - removed extra "let" from `let' error message + - added correct extern definition for list_rest_of_args() to shift + builtin + +jobs.c, jobs.c.posix + - removed bogus call to set_process_resource_limits() from + make_child() as a consequence of redoing `ulimit' + - initialize shell_tty to -1 + - only get or set the tty state after a command completes if the shell + is interactive + - use shell_tty in get_tty_state() and set_tty_state() instead of + reopening /dev/tty every time + +jobs.c.posix + - do better pgrp checking in initialize_jobs() to avoid error message + about not being able to setpgid(2) on startup + - changed tcsetattr() error messages slightly + +expr.c + - avoid advancing beyond the end of the expression when reporting an + error + - NULL expressions now return 0 ($[], for example) + +mailcheck.c + - #ifdef redundant definition of NOW, which is also defined in + general.h + +variables.c + - initialize $OPTIND and $OPTERR to 1 for getopts + - add correct extern definition for itos() + +subst.c + - if $IFS is unset, it defaults to " \t\n" + - add special variable hack functions for $OPTIND, $OPTERR + +builtins.h + - add definition for getopts_builtin() + +getopts.c + - new file, source for `getopts' builtin command + +ulimit.c + - remove the `struct ResourceLimit' stuff; limits now apply to both + the shell and its children + - took out set_process_resource_limits(), let ulimit(2) or + setrlimit(2) do the work + - changed error messages to use builtin_error() instead of + report_error() + - changed the block factor for RLIMIT_CPU from 1000 (milliseconds) + to 1 (seconds) + + + 10/1 + ---- + +builtins.c, builtins.c.posix + - changed `test' help text for -ef option + - made `trap -' reset all signals to their original values + +machines.h + - added a new configuration variable, HAVE_UNISTD_H, which should + be defined if /usr/include/unistd.h exists + +cpp-Makefile + - make HAVE_UNISTD_H show though from machines.h to the bash code + - add an explicit build line for ulimit.o so `psize.sh' is run + each time ulimit.o is remade. This is kind of flaky. +config.h + - include if HAVE_UNISTD_H is defined, use it to test + for various Posix features (job control, signals, termios) + +jobs.c, jobs.c.posix + - restore original signals to child process in make_child() + - keep count of number of children that exit or stop in flush_child(), + and call a trap handler for SIGCHLD that many times. This allows + SIGCHLD to be trapped without disaster occurring. + +shell.c + - If we're on a Posix system, initialize signals the Posix way + - clear signal mask in initialize_signals() if on Posix system + - set login_shell and make_login_shell to 0 upon entry to main(), + solving the System V infinite login bug + +trap.c + - preserve value of $? when running traps + - don't allow a signal ignored upon entry to the shell to be trapped + or reset to the default + - do not allow trapping SIGCHLD to change the signal handler, but + save the commands to be executed. Run these commands from the + SIGCHLD signal handler for each child that exits or stops + - don't allow SIGCHLD signal handler to be overridden or have SIGCHLD + ignored + - new function added to restore all trapped signals to their original + values + +ulimit.c + - add new -p option to report pipe buffer size. This is flaky on + all non-Posix systems (those that do not define PIPE_BUF). + +readline/readline.c + - add Posix termios and signal code + + 10/2 + ---- + +jobs.c, jobs.c.posix + - only fetch terminal state in initialize_jobs() if the shell is + interactive + + 10/3 + ---- + +machines.h + - new entry for Stardent + - new variable USE_TERMCAP_EMULATION, for those systems that have the + termcap(3) functions in the curses library, but have not linked + /usr/lib/libtermcap.a to libcurses.a + +cpp-Makefile + - use USE_TERMCAP_EMULATION to set TERMCAP and TERMLIB + +siglist.c, alias.h, general.c + - declare the return values of xmalloc() and malloc() for the benefit + of machines which cannot cope with simply casting the return value + +shell.c, execute_cmd.c + - change the re-execution of main() when executing a shell script to + use setjmp/longjmp + +builtins.c + - add code to change the shell level in exec_builtin(), decrementing + it before trying the execve(2) and incrementing it again if that + fails + +variables.c + - new function adjust_shell_level() to change shell level by a + specified increment + - initialize `noclobber' in shell_initialize(), if we have inherited + the `noclobber' variable from a parent shell + +ulimit.c + - add new option -n, which reports the max number of available file + descriptors as reported by getdtablesize(). On SunOS 4.1, this + can be set, too, with setrlimit(RLIM_NOFILE, ...). + + 10/4 + ---- + +readline/readline.c + - Ultrix turns off system call restart when executing in `Posix mode' + (when sigaction(3) is used to set signal handling), so make it use + the System V version of shell_getc() + +jobs.c.posix + - fix a bug in start_job() where `oset' was not initialized in the first + call to sigprocmask(), yet was used in subsequent calls + - remove the `shadow' instance of shell_tty_info in the code that sets + the line discipline in initialize_jobs() + +shell.c + - if job control is being used, restore the tty pgrp to its original + value so as to not screw the parent + +builtins.c, builtins.c.posix + - make the output of `times' look more like ksh + + 10/5 + ---- + +jobs.c.posix + - HP/UX no longer needs the signal handler for SIGCHLD reset via a + call to signal() in flush_child() -- this breaks job control + +machines.h + - add HAVE_VPRINTF to HP/UX entry + +siglist.c + - include , sprintf(3) requires it on some systems + + 10/8 + ---- + +execute_cmd.c + - make $LINENO in a function count the number of simple commands + executed + + 10/9 + ---- + +termcap, cpp-Makefile + - new GNU termcap library, cribbed from Emacs. #define + USE_GNU_TERMCAP in machines.h entry to use it. Small changes + required to cpp-Makefile to make it work. This works on + 4.3 BSD, at least. + +machines.h + - add new entry for AIX/370 + +general.c + - sysv_getc() is also needed for Ultrix machines running in Posix + mode, so change the #ifdef accordingly (Ultrix passes the + SV_INTERRUPT flag to sigvec(2) in sigaction(3)). + +subst.c + - use sysv_getc() for Ultrix machines running in Posix mode for + command subsitution pipe reading + + 10/10 + ----- + +shell.c, execute_cmd.c + - if the `file' portion of `bash file' is a binary file, report an + error and do not attempt to execute it + +jobs.c, jobs.c.posix + - the code that does the guts of `kill' now sends the SIGCONT to a + stopped job after it sends the specified signal, not before + + 10/11 + ----- + +parse.y + - set +H also turned off putting commands into the history list + +shell.c + - make shells started with -s read .bashrc + + + 10/14 + ----- + +expr.c + - changed calls to `report_error' to call `builtin_error'. I don't + know if this is exactly right, but it seems to me that an error + in an expression shouldn't kill the shell if -e is set. + +fc.c + - changed `report_error' to `builtin_error' + + 10/16 + ----- + +readline/vi_mode.c + - repeat count to rl_vi_subst() was incorrectly being ignored + - don't call rl_vi_change_case() on an empty line; two calls in + a row can cause a seg fault + + + 10/17 + ----- + +execute_cmd.c + - give builtins run in pipes a useful setting of top_level to + longjmp(2) to on errors + + +builtins.c, builtins.c.posix + - replace some occurrences of longjmp (top_level, ...) with simple + calls to return (EXECUTION_FAILURE) + + 10/18 + ----- + +readline/readline.c + - Make O_NDELAY be the same as O_NONBLOCK on Posix systems + - Don't use IXANY if it's not defined (some strict Posix systems do + not define it) + - Posix systems need NOFLSH for c_lflag to avoid flushing the input + buffer after a SIGINT, SIGQUIT, or SIGSUSP. This is still wrong, + though. + +execute_cmd.c, test.c, general.h + - use the Posix S_IS* macros to test file formats instead of explicitly + masking with S_IFMT and testing the result. Macros are provided + for those systems that do not have them (like 4.3 BSD). + +parse.y + - fix expansion of \W in the prompt string so that it works when + you're in the root directory + +machines.h + - add machine description for concurrent in UCB universe + +Makefile + - make sure $(MFLAGS) is passed to the recursive make of bash-Makefile + + 10/22 + ----- + +jobs.c.posix + - make sure the NOFLSH bit is turned on in the termios c_lflag word + so that typeahead doesn't get flushed on receipt of signals. THIS + HAS BEEN TAKEN OUT. + + 10/23 + ----- + +execute_cmd.c + - change extract_colon_unit() to increment the path index past a + colon when it is called, before it tries to get the next component + from the path. Without doing this, `.' was always found as the + second component in the path, whether it was actually there or not. + +trap.c, shell.c + - made SIGINT trap handling act the same as that of ksh and the BSD + sh. As a side effect (really the reason for doing this in the + first place), `read' is now interruptible. + +Makefile + - made the CPPFLAGS definition useful by passing it to cpp when + making bash-Makefile from cpp-Makefile + - made the `echo' line when creating bash-Makefile really echo by + quoting the redirection to bash-Makefile + +general.c + - make fcntl.h be included only if NO_DUP2 is defined + + 10/24 + ----- +cpp-Makefile + - make libreadline.a depend on the objects, not the sources. Without + this, you could delete on of the .o files to try to force a library + rebuild and have it not happen. + + 10/25 + ----- + +shell.c + - make a flag of `-' signal the end of option arguments, like the + 4.3 BSD sh, and in accordance with the Posix command line syntax + standard + +shell.c, builtins.c, builtins.c.posix + - shuffle some code around so -o option can be given on the command + line -- there's no reason why it shouldn't be allowed. + +variables.c, variables.h, execute_cmd.c, builtins.c, builtins.c.posix, shell.c, +subst.c, bashline.c, hash.h, variables.h + - change the implementation of shell function and variable storage to + a hash table instead of a singly-linked list + +make_cmd.c, shell.c + - bug reports only get mailed out if MAIL_BUG_REPORTS is defined + + 10/29 + ----- + +bashline.c + - some random cleanups from bfox + - make sure alias expansion is attempted in shell_expand_line () only + if ALIAS is defined + +hash.c + - add default case to make_hash_table to force the number of buckets + in the table to be the default if 0 is passed as the number of + buckets + +variables.c + - make initialize_shell_variables () call make_hash_table () with an + argument of 0 again (see previous entry). + + +variables.c, builtins.c, builtins.c.posix + - cleanups because map_over(), all_vars(), all_shell_variables(), and + all_shell_functions () can possibly return NULL lists, and such + lists should not be sorted or freed + +trap.c + - make sure we declare `extern int last_command_exit_value' in + run_interrupt_trap (). + +variables.c + - Don't override a HOSTTYPE variables that comes in from the + environment + + 10/30 + ----- + +variables.c + - Fix a bug in variables.c: make_var_array () where it called + array_len on a NULL list + +builtins.c, builtins.c.posix + - Add a description of `-m' to the help for the `set' builtin + command + + 11/1 + ---- + +general.c + - added a definition of bzero() for USG machines, because + there is a reference to it in the new variable hashing code + + 11/2 + ---- + +shell.c + - set forced_interactive to 0 in shell_reinitialize(), otherwise + shell scripts get marked as interactive + + 11/6 + ---- + +execute_cmd.c + - eliminated the costly loop from 3 to NOFILE closing all file + descriptors each time we exec a command by setting all file + descriptors > 2 opened as the result of a redirection and internal + to the shell to be close-on-exec, as well as all file descriptors + opened to save others in add_undo_redirect(). `internal to the + shell' means that the redirections were attached to shell builtin. + Other `internal' redirections include while, for, and until + loops, and shell functions. I got scared after reading that + s5r4 provides 2048 fd's per process -- 2045 (mostly useless) + close() calls on *each executed program*? No way, no how. + + This caused the other fixes for this file to be discovered. + + Unfortunately (there always seems to be a catch), 4.3 BSD up to + 4.3-tahoe leaves a file descriptor open in setpwent() if you're + using dbm password files. 4.3+NFS does this if you're not using + YP. Arghhhhhhh... I haven't decided yet what to do about this; + probably just set fd 3 to close-on-exec when the shell is + initialized. + +execute_cmd.c + - removed the call to `add_undo_redirect()' when a file is being + closed with the redirection operators [n]<&- and [n]>&-. The + effect was to make those operators useless. Sad to say, I was + probably the dummy who put it in there... + +execute_cmd.c + - when calling fcntl(redirector, F_GETFD, 0) in do_redirection() to + find out if a file descriptor is active, do it only if redirector + is not the same as `fd', which you've just opened. This has + spectacularly bad consequences if you do something like + + exec 3/tmp/foo 5 `command' + + 12/1 + ---- +parse.y, shell.c, builtins.c, builtins.c.posix, make_cmd.c + - changed the way parsing of here documents works in the presence + of continued lines (unquoted backslash-newline pair or via quoting). + Now the shell reads up to an unquoted newline before trying to + read the contents of the here-document (that's the way sh works). + The changes are spread out over multiple files. + + The cases that this fixes are these: + + cat << EOF | sed -n \ + -e 'blah blah...' \ + -e 'more more...' + input + to + cat + for + sed + EOF + + cat << EOF | echo 'a b c + d e f + g h i' + EOF + + Previously, the yacc-generated bash parser would resolve the + `<< EOF' redirection and immediately try to create the here + document, and the rest of the command would become part of + the here document. + + Changes by file: + parse.y: + added two new variables, need_here_doc, and + redirection_needing_here_doc. The yacc actions + associated with the here-document productions + were modified to set these variables appropriately. + Changed read_token to read the text of any pending + here-documents just before it returns an unquoted + newline to the parser. + make_cmd.c: + moved the code that reads the text of the + here-document out of make_redirection into a new + function named make_here_document. The cases in + make_redirection don't do anything now; they just + set the EOF marker and return + shell.c: + added a wrapper function around yyparse called + parse_command that initializes the above variables, + calls parse_command, then makes the here-document + if necessary by calling make_here_document (usually + it doesn't need to; read_token has already done it). + builtins.c.posix: + builtins.c: + changed the call to yyparse to a call to parse_command + (in parse_and_execute) + +subst.c + - for some reason which I have not yet fully divined, a shell whose + standard output (file descriptor 1) is closed cannot perform + backquote substitution if the child closes both sides of the pipe + after dup2(fildes[1], 1). The obvious fix is to not close + fildes[0] in the child, but it's not intuitive. I got the example + from the Dec Ultrix 4.0 release notes: + + exec >&- + echo `echo hi` >&2 + + The 4.3 BSD sh has the same problem. I'm stumped. + + (LATER NOTE: I'm not stumped anymore.) + + 12/2 + ---- +shell.c + - shells started to execute scripts (`bash file') should set + remember_on_history and history_expansion to 0. + - redid maybe_execute_file to eliminate a possibly unnecessary + call to stat. Just open the file immediately and call fstat + to get the size. Return if the open fails. + +execute_cmd.c + - redid same_file to eliminate some calls to stat(). Added two + new parameters, which, if non-null, are pointers to status + information about the pathnames passed. This required changes + to find_user_command_in_path. + - eliminated some calls to strlen in find_user_command_in_path + +builtins.c, builtins.c.posix + - changed calls to same_file to pass the two extra parameters + +parse.y + - only call pre_process_line in shell_getc if the shell is + interactive, because history expansion and remembering lines + on the history are not done for script shells + - make the shell echo comment lines (lines whose first character + is `#') by moving the after_pre_process label to just before + that code + - eliminated several calls to xrealloc in shell_getc when the + shell is non-interactive by correcting confusing uses of + shell_input_line_size -- after pre_process_line is called, it + must be set to strlen(shell_input_line) because we don't know + what the `true' allocated size of that block is, but not if + pre_process_line is never called. This became apparent + as a result of the previous two changes. + +readline/history.c + - make history_do_write abort on write errors instead of ignoring + them. + + 12/3 + ---- +general.c + - defined bcopy in terms of memcpy for USG systems + - changed the USG getwd to return the result of getcwd + + 12/4 + ---- +readline/vi_keymap.c, readline/funmap.c + - changed #ifdef FILE to #ifdef BUFSIZ as the test for a + previous inclusion of stdio.h + +general.c + - changed USG getwd emulation to return an error message in the + buffer if the getcwd fails + +subst.c + - fixed extern declaration of copy_word + +variables.c + - set_var_auto_export does a complete new lookup of the variable + it's setting. Most of the time in initialize_shell_variables + it's called immediately after bind_variable or set_if_not on + the same variable. Made set_if_not return a SHELL_VAR * like + bind_variable, then replaced the calls to set_var_auto_export + with calls to a new function set_auto_export that is passed a + SHELL_VAR * and skips the lookup. + +execute_cmd.c + - don't call print_simple_command in execute_simple_command if the + shell is not interactive, since the only place that's ever used + is pretty_print_job, which is never called if the shell is not + interactive. This might need to be changed. + + 12/5 + ---- +parse.y + - made read_token call atoi(3) instead of using sscanf("%d") when + reading numbers + +variables.c + - changed a call to sprintf in put_command_name_into_env into two + assignment statements and a call to strcpy + +variables.c + - changed a call to sprintf in make_var_array into two calls to + strcpy and an assignment statement + +execute_cmd.c + - only call geteuid() once in executable_file and cache the result + +general.h + - added definitions for STREQ and STREQN, which are replacements for + strcmp(a, b) == 0 and strncmp(a, b, n) == 0 that check the first + character to possibly save a function call. From C News. + +variables.c + - changed add_or_supercede to use STREQN + +parse.y + - changed most instances of strcmp() in read_token to use STREQ. + Rearranged some code to reduce the number of times this is called. + The idea is to rewrite code like + + if ((this token is xx) && (certain conditions hold)) + + to be + + if ((certain conditions hold) && (this token is xx)) + + to take advantage of left-to-right evaluation done by many (most?) + C compilers. + +subst.c + - changed instance of strcmp() in stupidly_hack_special_variables + to STREQ + +alias.c + - changed instance of strcmp() in find_alias to STREQ + +hash.c + - changed instance of strcmp() in find_hash_item to STREQ + +execute_cmd.c + - changed instance of strcmp() in find_shell_builtin to STREQ + +unwind_prot.c + - changed instance of strcmp() in unwind_frame_discard_internal + to STREQ + + 12/6 + ---- +readline/readline.c + - In rl_complete_internal, when listing all completion possibilities, + if the length of the longest item to be listed is greater than the + screen width, a divide-by-0 exception can result. Fix is to always + make sure `limit' is at least 1. + + 12/7 + ---- +readline/readline.c + - Add a new #define, HAVE_BSD_SIGNALS. This is for hybrid systems + like HP-UX (pre-Posix) that have both termio and the BSD reliable + signal mechanism (sigmask, sigblock, sigsetmask, etc.). This + allows better use of `critical sections' when changing the terminal + parameters. + +readline/history.c + - Need to #include for System V.4 + +makeargs.sh + - If we are on System V.4, define USGr4 and make it show through to + the rest of the build process + +machines.h + - changed the i386 entry to add support for recognizing System V.4 + machines + + 12/8 + ---- +shell.c + - made the TMOUT code be executed only for interactive shells + - .bashrc should not be run if the standard input and standard + output are not ttys + +machines.h + - reorganized the `i386' section so that all defines for a single + machine/OS combination are now grouped + + 12/9 + ---- +shell.c + - make the -s flag force interactive use only if all the other + conditions for interactive use are met + - since the same conditions are used to mark the shell as + interactive and to decide whether or not to execute the .bashrc, + only execute the .bashrc if we are interactive, and use the + value of `interactive' in the test + - only test if `file' in `bash file' is a binary file if the file + descriptor obtained by opening it is not a tty. An argument of + /dev/fd/xx is always a tty, and we can't read on it and seek + back to the beginning. + +variables.c + - replaced the random number generator functions with the simple + linear congruential generator from the ANSI C standard + + 12/10 + ----- +machines.h + - added new defines: HAVE_MULTIPLE_GROUPS for systems that allow + multiple simultaneous group membership and support getgroups(2), + and HAVE_RESOURCE for systems that define struct rusage and + have getrlimit(2) and setrlimit(2) + +execute_cmd.c + - changed executable_file and group_member to obey the new + HAVE_MULTIPLE_GROUPS define + +ulimit.c + - allow the full range of options for systems that define + HAVE_RESOURCE + +builtins.c, builtins.c.posix + - make systems that have HAVE_RESOURCE defined use the getrusage + code in times_builtin + + 12/11 + ----- +cpp-Makefile + - make ulimit.o dependent on `psize' so that psize can use + the same #ifdefs and #defines as the rest of the code + +psize.c + - added definition of memset for those machines that don't have + it + +psize.sh + - removed the compilation of psize.c + +shell.c + - save and restore the SIGALRM catcher around the TMOUT code in + read_command, in case it's trapped + +trap.c, execute_cmd.c, shell.c + - redid the way traps were done slightly. Now, instead of calling + parse_and_execute out of a signal handler (!), the signal handler + just sets a flag that the rest of the code checks at appropriate + times. This means traps are kind of like interrupts, but serviced + far fewer times. It also means a bit of a loss of immediacy. + + 12/12 + ----- + +shell.c + - fixed a bug in read_command that caused the handler for SIGALRM + to be reset to garbage each time through. + +variables.c + - change makunbound to call stupidly_hack_special_variables so + that things like `noclobber' and such can be reset properly + on function exit or when a `special' variable is unset. + + 12/14 + ----- +parse.y + - made `<>' without a number specifying the file descriptor open + the named file for both standard input and standard output. + +cpp-Makefile, jobs.h, endian.c, endian.h, endian.sh + - made jobs.h include a file `endian.h' if NO_WAIT_H is defined. + This file defines either BIG_ENDIAN or LITTLE_ENDIAN, and is + automatically generated by `endian' and `endian.sh'. + +execute_cmd.c + - aa && bb & was being executed incorrectly -- the subshell was + not being forced for the `aa && bb' portion. Same for aa || bb &. + Of course, if the sh `grammar' was regular `aa && bb &' would + be treated the same way as `aa ; bb &'. + +cpp-Makefile, psize.sh, ulimit.c + - changed the `psize' stuff so that ulimit.c includes a file + `pipesize.h', which contains a #define for PIPESIZE. + pipesize.h depends on psize, which is still made via the standard + `make' rules. It's exactly like the `endian' stuff. + +parse.y + - pre_process_line can return NULL, so we have to take that into + account in shell_getc + +glob.c + - fixed glob_pattern_p to only return TRUE for a pattern containing + a `[' if there is at least one `]' to match it. It produces wrong + results if allow_null_glob_expansion is set, and is inefficient + otherwise (wasted calls to glob_filename). + + For instance, if some twisted soul sets allow_null_glob_expansion, + the following would produce an error without this fix: + + if [ a = a ] ; then echo hi ; fi + + 12/16 + ----- +execute_cmd.c, parse.y, shell.h + - the `subshell bit' in the command struct is being used for two + purposes: to signal that the user requested that this command be + done in a subshell via `()' and to force some portions of a + command to be executed in a subshell, like `{ xx } &'. We need + to differentiate between the two so that the command printed when + reporting job status is correct and so the code is clearer. + + Define two `states' for that value, if non-zero: WANT_SUBSHELL is + used when the user requests a subshell, and FORCE_SUBSHELL is used + internally by the command execution code. + +parse.y + - clean up some casts, and make sure function arguments are coerced + to the correct type + +subst.c + - comment out some unnecessary `break' statements in case statement + clauses that immediately follow `goto' statements. It makes the + compilation output cleaner on a compiler that complains about such + things, like the IBM/4.3 compiler (High-C). + +make_cmd.c + - move all the error reporting code to the end of the file, so that + picky compilers that like to report about mismatches in the number + of arguments won't complain about the varargs code. + - it's not allows to pass a va_list from one function to another, so + expand the body of fatal_error to be the same as report_error in + the varargs case + + 12/17 + ----- +readline/readline.c + - Use TCXONC in rl_restart_output, if it's defined. + +make_cmd.c, builtins.c, builtins.c.posix, shell.c + - Make all the non-varargs versions of the various error reporting + functions take 5 arguments + + 12/18 + ----- +builtins.c, builtins.c.posix + - made the builtins that accept option arguments report errors when + they get a bad option, and make these error messages consistent. + The builtins affected are: export, hash, history, read, readonly, + dirs, jobs, declare, typeset, local, and type. + +shell.c + - make the function that displays the version number of the shell + indicate that it's the CWRU version. + +readline/readline.c + - On machines without BSD signals, do a signal(SIGINT, SIG_IGN) in + rl_signal_handler if an interrupt is received. This will take + the place of blocking it while in the handler. + +jobs.c, jobs.c.posix + - change the setting of the job control signals SIGTSTP, SIGTTOU, + and SIGTTIN to SIG_DFL in make_child when job control is not + active + + 12/19 + ----- +builtins.c, builtins.c.posix + - corrected some spelling errors and other mistakes in the help + documentation + +readline/readline.c + - Made the inclusion of sys/ptem.h dependent on the definition of + USGr4 + + 12/20 + ----- +machines.h + - Added -DUSGr4 to SYSDEP_CFLAGS in the System V.4 machines.h entry + for the i386 so it will get passed to readline. + - new entry for Ardent Titan + + 12/22 + ----- +general.c + - added two new functions to print time values in a standard way: + print_timeval, which prints the contents of a struct timeval, + and print_time_in_hz, which prints a time_t scaled by the value + of HZ (which is system-dependent). + +builtins.c, builtins.c.posix + - made times_builtin call the new functions for printing time + + 12/30 + ----- +general.h + - made the definition of `sighandler' as `void' or `int' depend + on the definition of VOID_SIGHANDLER; provide the definition + for those systems already using that code + +machines.h + - new entry for AIX/PS2 1.2 + + 12/31 + ----- +mailcheck.c + - When reporting that a mail file has been read, take into account + changes in the file size as well, and only report the change if + the file has gotten larger. This help for systems like USG that + don't change the access time of /usr/mail/$USER to be the same + as the modification time after the mail in the file is manipulated. + + 1/2 + --- +builtins.c, builtins.c.posix + - the `command' builtin should not reparse its arguments; it screws + up quoting (consider "command echo 'foo &'"), so instead of making + a string and calling parse_and_execute, make a new simple command + struct, put the arguments to `command' in it as its words, and + call execute_command recursively. + - added a correct extern declaration for copy_word_list () in + remember_args + +make_cmd.c + - new function: make_bare_simple_command() to support the changes to + the command builtin + + 1/3 + --- +builtins.c.posix, jobs.c.posix, jobs.h.posix + - renamed these to be `.px' to help out systems with short file names + +CWRU.changelog, CWRU.changelog.v2 + - renamed these to CWRU.chlog and CWRU.chlog.v2 for the same reason + +longest_signal_desc.c + - renamed to longest_sig.c + +enable-posix + - changed to recognize and use the `.px' suffix + +termcap/termcap.texinfo + - renamed to termcap.tex + +makeargs.sh + - change instance of `uuname' to `uuname -l' for compatibility with + more systems + - look for uuname in /bin as well as /usr/bin + +cpp-Makefile + - always define HAVE_ALLOCA if HAVE_GCC is defined + +bashline.c + - declare functions referred to in several places at the start of + the file + +jobs.c, jobs.c.px + - signal handlers should take one argument to be portable + +jobs.c.px + - hack around SCO Unix broken sigsuspend() and the fact that it + can't do job control on /dev/tty + +variables.c + - add declaration for sbrand before it is used + +machines.h + - define USGr3 for generic System V.3 entry; it is used in + readline/readline.c to conditionally include sys/ptem.h for the + `struct winsize' definition. I'm about to say screw it and + define one myself. + +readline/readline.c + - include sys/ptem.h for both system V.3 and V.4 (USGr3 and USGr4) + + 1/4 + --- +shell.h + - some USG systems have a definition for MAXPATHLEN, so only define + it if there is no existing definition + +bashline.c + - changed operate_and_get_next to realize when it is at the end of + the stifled history list and to adjust the history pointer to the + `next' line appropriately + +readline/history.c + - made three variables needed by the above change to bashline.c + public: history_stifled, max_input_history, and history_length + +parse.y + - reset last_read_token and current_token in handle_eof_input_unit + so that an alias expansion on the next command entered will be + handled correctly. If these are not reset, last_read_token ends + up being `yacc_EOF', which is not something that that will cause + command_token_position to return TRUE. + + 1/7 + --- +execute_cmd.c + - changed the test for matching jobs when testing for auto-resume + to make `exact' work as documented + +builtins.c, builtins.c.px + - Change exit_builtin so an interactive shell prints a message + when it exits: `logout' if it is a login shell, `exit' otherwise + +general.c + - include and compile in print_timeval if HAVE_RESOURCE + is defined + +readline/readline.c, readline/readline.h, bashline.c + - added a new readline function to call on filename completion, after + the match list has been generated: + rl_filename_completion_ignore_function(). + It gets to munge the list of matches to its satisfaction. It is + used to implement FIGNORE, a colon-separated list of filename + suffixes to ignore when doing filename completion + +jobs.c, jobs.c.px + - rewrote pretty_print_job to fix this bug: + + thor$ { sleep 2 ; exit 1 ;} | sleep 10 & + [1] 11854 + thor$ j + [1]+ Running { sleep 2; exit 1 } | sleep 10 & + thor$ j + [1]+ Exit 1 { sleep 2; exit 1 } | sleep 10 & + thor$ + [1]+ Exit 1 { sleep 2; exit 1 } | sleep 10 + thor$ echo $? + 0 + + (since it's the exit status of the last job in the pipeline that + bash cares about, make it the one whose status is displayed.) Also, + print "Running" if any processes in the job are still running, + instead of the status of the process group leader. The code was + rearranged a bit as well. + + 1/8 + --- +fc.c + - changed fc_replhist to call history_get with a parameter offset by + history_base, like it should have been in the first place + +execute_cmd.c + - call dispose_used_env_vars () after any call to + execute_simple_command, because the temporary environment should be + in force only for the simple command immediately following it. + This fixes the + a=c printenv a | printenv a + bug, which should print nothing, but used to print `c'. + - added form feed ('\f') to the list of acceptable control characters + in check_binary_file + + 1/9 + --- +make_cmd.c + - fix to make_simple_command to make <> work. We need to follow the + chain of redirections passed as element.redirect to the end, since + there might be more than a single redirection there. + + 1/14 + ---- +machines.h + - redid the DEC, Mips, and Sony entries to get rid of the individual + MIPSEL and MIPSEB entries. The goal is to isolate everything into + manufacturer-specific blocks. + + 1/18 + ---- +builtins.c, builtins.c.px + - added call to QUIT to history_builtin, to allow the display of + history entries to be interruptible + +variables.c + - made find_variable return the dynamic value for a variable only + if this variable is in the current context. This is to avoid + an `extra' value of RANDOM, for instance, being `wasted' in the + call to find_variable in make_local_variable + +execute_cmd.c, builtins.c, builtins.c.px, shell.h + - changed the bitmap holding the file descriptors to be closed in + the child to be a structure holding a bitmap and a size, rather + than use a char * bitmap with a fixed size, which will inevitably + be too small. You'd probably run out of processes before you + ran out of file descriptors, though. Pipe errors now call + throw_to_top_level () rather than return an error, because it's + no use continuing with the current pipeline. Not doing so can + cause a call to wait_for () for the remainder of the pipeline, + which is just going to sit there in a stopped state with no user + feedback. + + 1/20 + ---- +subst.c + - increased the amount of memory allocated when adding a number to + the string currently being expanded from 10 to 16. 10 characters + will not hold the result of 32767 * 32767, for instance. 16 + should be plenty, but 32 would be better. + + 1/21 + ---- +bashline.c + - added a new emacs-mode readline command to display the shell version + (kind of like Korn's C-V, but it displays on a separate line). It's + on C-X C-V. + + 1/22 + ---- +shell.c + - make termination_unwind_protect save the history only for an + interactive shell + - consolidated the loading and saving of the history file into + two functions: load_history () and save_history () + - changed the history writing behavior so that interactive shells + will always try to append the history from the current session + to this history file instead of rewriting it every time. + + 1/23 + ---- +general.h + - Posix systems have void signal handlers + +ulimit.c, ulimit.c.new, jobs.c.px, jobs.c, general.c + - moved the getdtablesize() emulation for non-BSD systems to + general.c, removing the private copies held by jobs.c.px, jobs.c, + ulimit.c, and ulimit.c.new + +execute_cmd.c, general.c + - replaced all references to NOFILE with references to + getdtablesize () + +machines.h + - new entries for DG AViiON and Harris Nighthawk + +general.h + - split the replacement Posix stat definitions into their own + header file, `posixstat.h' + +test.c + - removed the Posix S_IS* macro definitions and added an include of + posixstat.h to pick them up + +general.c + - added an inclusion of posixstat.h for the replacement Posix stat + definitions + +posixstat.h + - this file should be included only after + - some Posix-wannabe systems do not define the S_IS* macros, and + do not define the S_IF macros in favor of _S_IF* macros. + +shell.c + - make all signals in the terminating_signals array be conditionally + compiled it -- no signals are assumed to be present + +glob.c + - some Posix systems do not have a member d_ino in struct dirent. + Its use is now compiled out if _POSIX_SOURCE is defined. I don't + think the check is necessary anyway; isn't readdir guaranteed to + return only active directory entries? + +cpp-Makefile + - added various entries for posixstat.h + +subst.c + - changed the code by add_number in expand_word_internal to call + itos() when translating an int to a string + +misc.c + - enlarged MAX_INT_LEN to 32 + + 1/25 + ---- +shell.c + - made bash, when invoked with the -c command option, save the rest + of the arguments as the positional parameters + + 1/29 + ---- + +misc.c + - made itos() handle negative numbers correctly + +posixstat.h + - include , now can be included as a replacement for + stat.h + +builtins.c, builtins.c.px, execute_cmd.c, mailcheck.c, shell.c, test.c + - changed to include posixstat.h instead of + + 1/30 + ---- + +lots of changes to nearly every file as the result of a merge with Brian's +version of this code + + 1/31 + ---- + +parse.y + - correctly cast NULL pointer arguments passed to the command + construction functions in make_cmd.c + +test.c + - change uses of access(2) to call a new function eaccess(), which + performs a stat(2) call and checks the permission bits itself. + This means that root no longer finds that /etc/passwd is an + executable file. + + 2/3 + --- +test.c + - make eaccess() use group_member() from execute_cmd.c to test group + membership against all groups a user is in. Do this if the system + supports multiple groups. + + 2/5 + --- +shell.c + - bash always executes .bashrc unless it's a login shell or acting + like sh. Brian wants it this way. + +parse.y + - build a stack of tokens that have been alias expanded during a + single call to read_token(), and use it to stop alias loops + + 2/6 + --- +make_cmd.c + - if redirection_expand returns NULL, it means that the word being + expanded expanded into multiple words. In this case, abort the + here-document processing. Specifically: + + cat << $(date) + + no longer dumps core calling strlen with a null argument. + + 2/8 + --- +readline/vi_mode.c + - some changes to rl_vi_eWord to make completion on `*' work + right + +builtins.c, builtins.c.px + - made history_builtin add a newline at the end of the history + expansions done when the -s option is specified + + 2/9 + --- + +variables.c + - backed out of 1/18 change to find_variable(). It has the effect + of making this function always return the same value: + + rand() + { + echo $RANDOM + } + + 2/10 + ---- +parse.y + - save the value of eof_encountered around execution of + PROMPT_COMMAND, otherwise ignoreeof will not work + +documentation/bash.1 + - Add descriptions of the keybindings to go from emacs editing mode + to vi and vice versa + + 2/11 + ---- +shell.c + - added tests for running shell scripts and for stdin being a tty + to the test for reading and executing .bashrc. This means that + bash -c command still runs .bashrc (that's next :-). + +parse.y + - added test for interactive to disable alias expansion for + non-interactive shells + +builtins.c, builtins.c.px + - history -s is now gone + + 2/12 + ---- +shell.c + - implemented a better (hopefully the final) test for executing + ~/.bashrc at shell startup + +general.c + - made dup2() emulation better, based on ideas from Usenet + +fc.c + - made fc_gethnum treat 0 the same as a negative number (an offset + from the current command number) so that fc -l -30 0 works + correctly + - make sure history_base is ignored in all calculations, but use it + when reporting the command number with the -l flag + - make `last' default to the current command when the -l flag is + given so that fc -l -20 works as it does in ksh + + 2/20 + ---- + +Many changes from a merge with bfox's version 1.07 + + 2/25 + ---- + +jobs.c.px, jobs.h.px, builtins.c.px + - These files are no more, having been merged with jobs.c, jobs.h + and builtins.c + +jobs.c, jobs.h, builtins.c, shell.c, make_cmd.c, subst.c, execute_cmd.c, +nojobs.c + - Adopted pid_t and WAIT_T as `native' types + - Propagated pid_t definition around to all necessary files + +readline/readline.c + - Some systems need the USG code without being USG (like HPUX and + AIX, for instance) + + 2/27 + ---- + +fc.c + - fixed up a few remaining bugs + - added code that lets options be grouped behind a single `-' + - added fencepost code that prevents overflow errors + +Another merge with Brian's almost-1.07 + + 3/1 + --- + +A final merge with Brian's 1.07 + + 3/2 + --- + +execute_cmd.c + - fixed a problem with asynchronous commands started from `.' + scripts (run with parse_and_execute) being waited for + inappropriately on systems without job control. For example, + `. foo' where foo contains + + . bar + echo bar done + + and bar contains + + sleep 300 & + sleep 300 & + + would not echo `bar done' until 5 minutes had passed and both + `sleep' processes had exited. Badness. + +nojobs.c + - fixed up so that bash can be built without job control on BSD + systems -- God forbid. + + 3/7 + --- + +jobs.c + - Added code to initialize_jobs () to handle the broken NeXT 2.0 + rlogind, which starts bash so that the terminal still belongs + to the rlogind process and getpgrp () returns 0 (?). Looks like + a setpgrp(0, 0) is being done somewhere, and NeXT is not handling + it like 4.3 BSD does. + + 3/11 + ---- +shell.c + - $0 is now initialized to `bash' for interactive shells when there + is no argv[0] + + 3/12 + ---- + +jobs.c + - Make set_new_line_discipline return 0 when on a termio system + without NTTYDISC defined (like HP/UX 6.x) + + 3/13 + ---- + BASELINE FOR NETWORK WIDE RELEASE diff --git a/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v4 b/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v4 new file mode 100644 index 000000000..dade7146b --- /dev/null +++ b/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v4 @@ -0,0 +1,234 @@ +This file documents changes to CWRU bash following its first network-wide +release. + + 3/15 + ---- +Makefile + - change the declaration of $CPP_ARGS so that CPP_CC can have + embedded blanks, by adding quotes + +bashline.c + - some cosmetic changes to the FIGNORE support functions + +glob.c + - don't define USGr3 if it's already defined + +variables.c + - a declaration for the argument to put_command_name_into_env was + missing + +builtins.c + - only print the command name in builtin_error if this_command_name + is non-null + +expr.c + - catch something % 0 as an error + +subst.c + - make sure this_command_name is set to NULL before calling evalexp, + because evalexp uses builtin_error + + 3/18 + ---- + +variables.c + - changed getenv() to search the inherited environment if the hash + table of shell variables does not exist or has not been created + + 3/19 + ---- + +subst.c + - when doing command substitution, strip only the trailing newlines. + This is in accordance with Posix.2. + +general.c + - strip_trailing () has aquired a new flag telling whether to strip + all white space or just trailing newlines. + +variables.c + - since some places in the code rely on bind_variable returning a + valid value, the dynamic variable assignment functions have been + changed to take a pointer to themselves as the first parameter: + + return ((*(entry->assign_func)) (entry, value)); + + and then return that value after doing whatever they need to + + 3/30 + ---- + +bashline.c + - disabled builtin commands should not be returned to the readline + completion functions as legal command alternatives + +flags.c + - do not redefine NULL; check only after including all needed + .h files + +nojobs.c + - fix unconditional reference to status.w_* + - fix typo after call to WIFCORED in wait_for + +readline/readline.c + - make sure all calls to BSD signal mechanism are protected by test + for HAVE_BSD_SIGNALS define + - make sure declaration of struct ltchars variable is protected by + test for definition of TIOCGLTC + - change #include file from sys/errno.h to errno.h + - added a new function rl_stop_output (), the non-emacs version of + ^S, to go with rl_restart_output. Haven't done anything with it + yet. + - added Posix support in the form of tcflow() calls to + rl_restart_output and rl_stop_output + +readline/readline.h + - change the declaration of rl_filename_completion_ignore_function + to extern. It was coming up as multiply defined on some systems + +siglist.c + - change #include file from sys/signal.h to signal.h + - some systems define _NSIG but not NSIG. Define NSIG in terms of + _NSIG on those systems + +ulimit.c + - change #include file from sys/errno.h to errno.h + +subst.c + - string_extract_double_quoted() needs to ignore "" inside `` pair, + but this code should be executed only if the ` is not backslash- + escaped. + - changed sv_uids() to give UID, EUID the integer attribute + automatically + +machines.h + - check for the DG AViiON defining either __DGUX__ or DGUX, make + sure DGUX is defined in any case + +trap.c + - change run_pending_traps to loop from 1 to NSIG instead of 0 to + NSIG + +execute_cmd.c + - For a command run explicitly in a subshell via (), run_exit_trap () + needs to be called after that command has executed for /bin/sh + compatibility + +variables.c + - make $PPID have the integer attribute when it is intialized + + 4/2 + --- + +subst.c + - make string_extract_double_quoted handle backslash-escaped + ` correctly when parsing a `` pair + + 4/3 + --- + +jobs.c + - make sure job_control is set to 1 before the first time + give_terminal_to is called, so that it does its job and the + process groups are correct. + +subst.c + - make string_extract_double_quoted() not turn \\ into \ inside + quoted strings. The translations will be taken care of later. + +nojobs.c + - make sure we get the tty state in initialize_jobs(), and don't + try to set it in set_tty_state until we know we have saved + valid settings. + + 4/6 + --- + +shell.c, execute_cmd.c, shell.h + - shell now exits with status 127 when asked to execute a binary + file as a shell script + +builtins.c + - `local' is once again an error outside a function + - `trap' now formats output differently when given no arguments; + the new format is suitable for feeding back to the shell as + input to `trap' + - cleaned up a contradiction in the help text for the `export' + builtin + - `export' and `readonly' now accept a -p flag for Posix.2 compliance + that acts the same as if no flags had been specified, and take a + `--' option to disable further option processing + - `unset' takes a `--' argument to disable further option + processing + - when given the -f flag, unset will now try to unset a variable + if no function is found for the name supplied + - `kill' now takes a -s signal argument as equivalent to -signal + - `kill' takes a `--' argument to disable further option processing, + since a negative number may be used to denote a process group + - `kill -l' now takes arguments and lists the names for individual + signals by number. If the number given as argument is > 128, it + is assumed to be an exit status, and 128 is subtracted before + further processing + +builtins.c, variables.c + - `set +' is no more; print_vars_no_values() is no longer needed + +flags.c, builtins.c + - `set -C' is now an alias for noclobber + +trap.c + - SIGNULL is no longer a valid name for signal 0 + +getopts.c, subst.c + - resetopts () --> getopts_reset () + - rewrote getopt() per Brian's request + +builtins.c + - `return' is now valid when executing a file with the `.' builtin + and causes the execution to be aborted + +execute_cmd.c + - file descriptors > 2 manipulated via `exec' are no longer set to + close-on-exec + + 4/8 + --- + +cpp-Makefile + - fixed the bad definition of RANLIB if RANLIB_LOCATION was defined + - pass the correct definition of ranlib through to the make of + readline + +readline/readline.c + - make sure some defaults for screen size are defined in the case + of a dumb terminal + +builtins.c + - `return' now works for aborting files executed with the `.' + builtin + +parse.y + - a `"' before a closing ) in a $( ) construct within double + quotes is no longer an error + +subst.c + - string_extract_double_quoted now passes everything between $( + and ) through verbatim, without scanning it for double quotes. + This way, `echo "$(echo "*")"' will echo `*' like it should. + +documentation/bash.1 + - updated to reflect the changes from Posix.2 draft 11. + + 4/10 + ---- + +execute_cmd.c, builtins.c + - changed some instances of absolute_pathname to absolute_program + (like doing PATH, CDPATH searching, the `type' builtin, and + filename hashing) + +readline/readline.c + - made rl_deprep_terminal do a little sanity checking on the + values in otio that it is restoring + + Minor update of tar files available for FTP from CWRU diff --git a/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v5 b/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v5 new file mode 100644 index 000000000..55b994c59 --- /dev/null +++ b/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v5 @@ -0,0 +1,1492 @@ + + 4/11 + ---- + +machines.h, general.c, cpp-Makefile + - wrapped the definition of strerror() inside a new machines.h + variable, HAVE_STRERROR + +machines.h + - new machine definition for the Encore series 91 + - removed definitions of NO_WAIT_H; let makeargs.sh decide for us + +builtins.c + - the test used in cd_builtin () to decide whether or not to use + CDPATH was incorrect. It now uses CDPATH unless the directory + name begins with a slash. + +cpp-Makefile, machines.h + - added SYSDEP_LDFLAGS for flags to ld, analogous to SYSDEP_CFLAGS + + 4/13 + ---- + +machines.h + - more changes to Encore entries from pierson@encore.com + - added -Wf,-XNl3072 to SYSDEP_CFLAGS for all machines that use the + MIPS chip and compilers. This increases the maximum size of a + string constant, which some of the help strings in builtins.c + were exceeding + +jobs.c + - include trap.h only if JOB_CONTROL is defined, since nojobs.c + does not use its facilities + + 4/14 + ---- + +getopts.c + - changed error handling so that it obeys the Posix.2 draft 11 spec + (which is like ksh-88) + + 4/16 + ---- + +execute_cmd.c + - only run the exit trap in a subshell when command_subshell == + USER_SUBSHELL, which means the user forced a subshell with ( ) + +cpp-Makefile + - updated the dependency information + +quit.h + - changed the definition of throw_to_top_level to `extern' -- it + sometimes matters + +readline/vi_mode.c + - fix to make the vi-mode `b' command work when you type it twice + in a row + + 4/17 + ---- + +readline/vi_mode.c + - more fixes for vi `b' and `B' commands + - fixes for vi `w' and `W' commands + - fixed `_' command to yank the correct arg from the previous history + line + +readline/{vi_{mode,keymap}.c,readline.h} + - added a new function, rl_vi_fetch_history(), to implement the `G' + command. It's not totally right, but it's better than having none + at all. + + 4/18 + ---- + +builtins.c + - only call the with_input_from_* functions in set_minus_o_option + if the shell is interactive when doing set -o emacs or set -o vi + (this prevents core dumps when doing a "set -o emacs" from a + startup file, because none of that stuff is initialized when the + startup files are run) + +bashline.c + - make sure all of the bindings are done to explicit keymaps, so + as to not randomly change the keymap the user has chosen with + a set -o in a .bashrc file. The original ones all assumed the + current keymap was the emacs keymap, and this will screw up a + vi keymap seriously. + +readline.c + - .inputrc file parsing now recognizes the `$if mode=emacs' or + `$if mode=vi' construct in parser_if() + +trap.c + - make sure the jmp_buf stored in top_level is valid during the + execution of run_exit_trap, or we may jump off into never-never + land. + + For example, consider a script that runs until it reads eof, and + has an exit trap set that contains a call to `exit'. + parse_and_execute will be called after reader_loop (and hence the + valid definition of top_level) is already off the stack and + invalid, and the longjmp in exit_builtin will seg fault. + +machines.h + - for MIPS machines in the BSD universe (-systype bsd), make sure + HAVE_UNISTD_H is undefined -- the compiler doesn't let us get to + it, even if it is there (wierd) + +config.h + - made the HELP_TEXT define that enables the inclusion of the huge + documentation strings for builtins a configurable parameter defined + here. It's undefined by default, which means the long text is + not compiled in. + +general.c + - rewrote strip_trailing() to make it handle all cases where the + entire string should be stripped (e.g. "\n\n\n\n" when newlines + only are to be stripped) + +subst.c + - quoted results of command substitutions should have trailing + newlines stripped, not just the last newline as it was doing + +builtins.c + - aliases are no longer required to be legal identifiers, as + defined by Posix.2. This originally came from 1003.2a, + draft 5, but I think it's on its way out + + 4/19 + ---- + +shell.c + - fixed a typo in the code that decides whether or not to source + ~/.bashrc, so now it sources it when we expect it to (no more + sourcing .bashrc for `echo ls | bash'). It was a misplaced + paren. + +parse.y, subst.c + - when parsing and evaluating $() and $[] constructs, bash needs + to take into account instances of `(' and `[' respectively + inside the delimiting characters and adjust the number of closing + parens or brackets that need to be read before the construct is + complete. This is so things like $( (pwd) ) or $((pwd)) will + work as expected. + + 4/21 + ---- +parse.y + - consolidated two grammar rules for `function f { echo foo; }' + into one -- there was no real difference between the two + +variables.c + - deleted inclusion of version.h. It was not used. + +cpp-Makefile + - removed dependence of variables.o on version.h. This caused + variables.c to be unnecessarily recompiled each time + version.h changed. + +trap.h + - changed the definition of IGNORE_SIG to be SIG_IGN, because + defining it as 0 made it the same as SIG_DFL, and hence + DEFAULT_SIG + +jobs.c, nojobs.c + - changed the restoration of signals altered by traps to be + after SIGINT, SIGQUIT, and SIGTERM are restored to their + default state so that ignored signals remain ignored in + children + +jobs.c + - SIGINT and SIGQUIT should be ignored by default for asynchronous + children + - changed all calls to signal (s, SIG_DFL) in make_child for SIGINT, + SIGQUIT, and SIGTERM to call restore_default_signal() instead + (which should really be called restore_original_signal()), because + what you really want is for children to have the values for these + signals that the shell started with. + +trap.c + - make sure signals set to be ignored in the shell are set to SIG_IGN + in the child by calling ignore_signal in restore_original_signals() + - make the loop that records the original values of the signals for + the shell in initialize_traps() run from 1 to NSIG-1 + + 4/22 + ---- + +shell.c + - make sure the `i' flag is turned on (so that it appears in $-) + before the startup scripts are run + + 4/23 + ---- + +general.c + - changed pathname_backup to not back up past the start of the + path it is passed looking for a `/'. It causes core dumps on + a lot of systems. + +config.h + - Ultrix does dup2() wrong, so make it use the dup2() emulation + implemented with fcntl() by making sure NO_DUP2 is defined + +jobs.c + - fixed a posix race condition by making the first process in a + pipeline wait for all of the processes to be created and have + their process group set correctly before returning from + make_child(). The synchronization is done around a shared pipe. + - added a function close_pgrp_pipe() that other files can call to + have the pgrp pipe closed for them + +subst.c + - added call to close_pgrp_pipe from the parent half of the command + substitution code, since this code will not call start_pipeline + or stop_pipeline. Otherwise the child waits forever trying to + read the pipe. + +readline/vi_mode.c + - more changes to the vi mode code, this time to rl_vi_eWord for the + `E' command + + 4/24 + ---- + +execute_cmd.c + - only restart an auto-resume job if the job is marked as JSTOPPED. + This fixes the `for i in 1 2 3; do who; done | sort' only running + `who' once bug. + +parse.y + - removed extern declarations of index(), rindex(); they should be + taken care of in general.h + +machines.h + - some changes to the mips and sgi entries + +readline/readline.c + - change rl_redisplay so DEL is echoed as C-? + + 4/25 + ---- + +makeargs.sh + - a new implementation from Brian + +jobs.h + - changed the sense of the test for the presence of sys/wait.h to + test HAVE_WAIT_H rather than NO_WAIT_H. HAVE_WAIT_H is set by + makeargs.sh + +jobs.c + - don't bother calling tcsetpgrp() in give_terminal_to() if the + process group already owns the terminal + +test.c + - change eaccess() so that root requires execute permission for + anyone in order to be able to execute a file + +execute_cmd.c + - change executable_file() so that root can execute a file if any + of the u, g, o x-bits are turned on + +documentation/features.texinfo + - fixed a typo on line 352 ({ -> }) + +documentation/bash.1 + - some cosmetic changes to the manual page + + 4/26 + ---- + +parse.y + - made read_a_line handle a null character being returned from + yy_getc () in a reasonable fashion instead of falling out of + a loop and returning garbage to its caller + + 4/27 + ---- + +shell.c + - make the file descriptor from which we are reading the text of + a script be set to close-on-exec + +execute_cmd.c + - now that Ultrix uses the dup2() emulation in general.c, the code + that sets file descriptors to open-on-exec on Ultrix systems + can be disabled + - fixed up the test for root in executable_file() + +test.c + - fixed up the test for root in eaccess() so that root can read or + write any file, but only execute executable files + + 4/28 + ---- +braces.c + - if the text between braces does not contain a comma, just return + the text with braces intact. This is for greater /bin/sh + compatibility + + 4/29 + ---- + +bashline.c + - some changes from a merge with bfox bash-1.07 + +execute_cmd.c + - added an extern declaration for make_command_string() + +general.c + - made itos() use unsigned arithmetic so that $[ 32768*65536] works + right + + 4/30 + ---- + +readline/readline.c + - fixed typo for sys5 termio version of rl_prep_terminal() that + called ioctl with the wrong number of parameters + - made readline handle SIGALRM and clean up after itself when + it hits + +ulimit.c, ulimit.c.new + - fixed up return value for -f on HP/UX -- the man page for + ulimit(2) lies about its return value + +makeargs.sh + - need to initialize SYSDEF and SHLIB so we don't pick up any + values from the environment + +readline/history.c + - fixed typo in `mode' argument in call to open(): 066 -> 0666 + +builtins.c + - mark HP/UX as not having resources even though it has + /usr/include/sys/resource.h + +cpp-Makefile, Makefile, makeargs.sh, config.h + - changes from bfox bash-1.07 + +machines.h, builtins.c, general.c + - changes for bfox port to cadmus + +posixstat.h + - added definitions for Posix file modes for those systems that do + not have them + + 5/1 + --- + +subst.c + - added a function remove_quoted_nulls to do quote removal when we're + not doing word splitting. It's called from expand_string_unsplit + +fc.c + - removed the code that handled EOF from fc_readline + - fixed possible memory leaks in fc_builtin (line returned from + fc_readline()) and fc_readline() + - fixed calls to builtin_error so they no longer include a literal + "fc" in the error string + +execute_cmd.c + - fixed execute_simple_command so that commands called from the + command builtin do not have arguments re-expanded by another + call to expand_words() + +readline/readline.c + - disable the ONLCR bit in the termio and termios version of + rl_prep_terminal so that pesky extra ^M is no longer sent + +readline/vi_mode.c + - fixed a typo that caused a test to be reversed in rl_vi_bword() + + 5/2 + --- + +shell.c + - preserve leading `-' in argv[0] (and $0) when bash is invoked + this way. Ensure that we do not infinitely recurse executing + .bash_profile if there is a shell script that bash executes or + a command substitution by incrementing shell_name past a leading + `-' when main() is invoked a second time. Initialize $0 to + "bash" if it is null or equal to "-". + +builtins.c + - added symbolic mode printing and arguments (like chmod) to umask. + Now, "umask 002" and "umask a=rx,ug+w" are equivalent + - removed change to unset from Posix.2 draft 11; it is required to + use -f if trying to unset a function and it unsets a variable + otherwise + +bashline.c + - make sure display_shell_version leaves the cursor at column 0 + before calling rl_on_new_line() + + 5/3 + --- + +jobs.c + - defined a `unifying' way to get the process group of an arbitrary + process: getpgid(p). Constructed a bunch of #defines to get it + defined correctly in terms of getpgrp(). Used in initialize_jobs + +execute_cmd.c + - converted a call to statmode & S_IFDIR (which was wrong in the + first place, should have been (statmode & S_IFMT) == S_IFDIR) + into a call to S_ISDIR (statmode) in executable_file + - for systems with broken (4.2 BSD-style) dup2() calls, which do + not set the new descriptor to be open across execs, define + DUP2_BROKEN and do the explicit setting ourselves. Ordinarily, + setting NO_DUP2 and using the fcntl emulation is sufficient, but + on some systems (Sequent Dynix), fcntl(fd, F_DUPFD, fd2) is + broken this way, too. + +expr.c, fc.c + - make sure NULL is defined as 0, redefining it if necessary + + 5/3 + --- + +execute_cmd.c + - in execute_case_command(), make sure we call expand_word on the + case statement pattern with quoting set to Q_KEEP_BACKSLASH, so + backslashes are not treated specially depending on the character + that follows them. Here's the comment from the relevant section + of the code: + + /* expand_word calls expand_word_internal, then performs word + splitting and dequotes the result. This causes parameter + expansion, command substitution, arithmetic expansion, and + quote removal to occur. What we *really* want is only + parameter expansion and " and ' removal. Calling expand_word + with Q_KEEP_BACKSLASH is the way to do part of this. The + command substitution part is still done, but that's OK. */ + +subst.c + - break the command substitution code off into its own function, + command_substitute() + +shell.h, subst.c, execute_cmd.c + - enumerated the possible values for the `quoted' argument to the + expansion functions: Q_DOUBLE_QUOTES, which means expand as if + the string were in double quotes, Q_HERE_DOCUMENT, which means + expand the string according to the rules for expanding here- + documents, and Q_KEEP_BACKSLASH, which means to not treat back- + slashes specially at all. + +readline/vi_keymap.c + - bound `*', `=', and `\' in the vi movement keymap to rl_vi_complete + +readline/vi_mode.c + - If the command is cw or cW, we don't want whitespace after the + end of the word eaten, so change the w or W to e or E, + respectively + - made rl_vi_complete handle all three kinds of vi_mode completion + - changed rl_vi_char_search to check boundary conditions and avoid + going off the end or start of the current line searching for a + character + - changed rl_vi_domove to implement the `yy' command + + 5/6 + --- +subst.c + - check the return value from expand_string_internal in + expand_string_unsplit; make sure we don't try to dereference a + null value + +machines.h + - new entry for NCR tower 32 running System V.3 + - changes to IBM AIX entries + + Changes from a merge with bfox 1.07 sources + + 5/7 + --- + +cpp-Makefile + - take out some explicit `touch' commands that are taken care of + by the dependencies + - added the files created in the build process (endian, psize, + sysdefs) to the `make clean' target + +nojobs.c + - don't print a message if a command was terminated by SIGINT + - removed the call to QUIT from wait_for; the builtin `wait' + command does not go through this function + - added siginterrupt calls so we can run this on a 4.2+ BSD + system without job control and interrupt `wait' + +Makefile + - make the command to run to remove runs of blank lines from the + cpp output configurable (`cat -s' means nothing on System V; + there are some alternatives: ssp on HP/UX, for example) + + 5/8 + --- +test.c + - added a `posixtest()' function that implements a proposal to the + Posix.2 shell working group by David Korn. Broke the code that + handles unary and binary operators out into individual functions. + Added functions that will check whether a string is a valid test + unary or binary operator. + - changed eaccess so that the test for root and X_OK works for + both files and directories + - added a new unary operator, -a, which is true if its argument + simply exists in the file system + +shell.c + - changed the test for whether or not we are running under an emacs + shell buffer to test if TERM = "emacs", rather than for the + presence of the environment variable EMACS + +general.c + - added a function unset_nodelay_mode that will unset either flavor + of no-delay mode (O_NONBLOCK or O_NDELAY) for a given file + descriptor. This is called from shell.c$main() for the standard + input. + +glob.c + - added code to check that a directory is really a directory before + calling opendir on it. Some systems do not check, and core dump + in readdir() (e.g. MIPS) + +expr.c + - allow underscores in the names that the token reader recognizes + as variables + - set a maximum recursion level of 1024 calls to pushexp() + +builtins.c + - parse_and_execute has to setjmp (top_level) (saving the old value, + of course) so that bad substitutions and the like that call + (longjmp (top_level, DISCARD)) don't jump to the `real' top level, + which leaves input still coming from the string passed to + parse_and_execute, and sometimes core dumps + +shell.c + - made an option -- signal the end of the options list, as Posix + specifies + +getopt.c + - a slightly modified version of the GNU getopt(). The changes + are: + o the addition of a variable optopt, which holds the option + character last processed + o The value of optarg is now specified in the case of + return values: if an illegal option is given, optarg + is NULL; if a required option argument is missing, + optarg[0] == 0 + o a function to programmatically set the option order that + getopt will handle to the Posix option order: + set_posix_option_order + o changed the error messages printed to be those that + Posix.2 specifies + +getopts.c + - deleted private version of getopt() + - changes to work with the modified GNU getopt as described above + + 5/9 + --- +builtins.c + - added -v option to `unset'; changed it to comply with Hal + Jesperson's latest Posix.2 draft + +machines.h + - picked up a machine description for a 386 box running ISC 2.2 from + bfox + - add -DDUP2_BROKEN to the entries for Sequents running Dynix because + Dynix does not set the new file descriptor created with dup2() or + fcntl(fd, F_DUPFD, ...) to be open across execs + +make_cmd.c + - Make sure all the arguments to make_command are cast to the correct + values + +general.h, jobs.c, execute_cmd.c + - moved the definition of FD_CLOEXEC to general.h, which should be + included *after* + +shell.c + - timeouts should happen only when the shell is interactive, so just + move all the code in read_command that deals with it inside an + if (interactive) statement. + - changed message printed by show_shell_version to be that same as + that put into the $BASH_VERSION variable + +readline/readline.c + - don't destroy the value of the tty flags when trying to read with + O_NDELAY turned off in rl_gather_tyi() + +Makefile, squish.awk + - For systems that do not have a -s option to cat that compresses + runs of blank lines to a single blank line, there is an awk script + supplied that will do it + +parse.y + - made yy_stream_unget and yy_readline_unget return values, not + garbage + + 5/10 + ---- +variables.c + - don't deallocate the old value in bind_variable until any needed + arithmetic evaluation has been done. If we're performing an + assignment statment like `even=even+2' where even has the integer + attribute, we'll need the old value to evaluate the RHS + +shell.c + - make throw_to_top_level call bashline_reinitialize so all the + function pointers are restored to their correct values on an + interrupt (problem observed on a Sun running SunOS 4.1) + + 5/11 + ---- +jobs.c + - replaced literal `bash:' in error messages with the name of the + shell, as given in shell_name + + 5/13 + ---- +nojobs.c + - make sure the pid passed to wait_for is valid before calling + wait() by doing a kill(pid, 0) + +test.c + - test -e should return true if a file exists in the file system, + according to Posix.2. Make it equivalent to -a, document it in + the man page and help text, and make -a undocumented + - all variables global to test.c should be declared as static + (e.g. test_exit_status, test_exit_buf) + - make test -f behave as Posix.2 mandates (file exists and is a + regular file) instead of trying to please both BSD and System V + +makeargs.sh + - if the file /etc/xlc.cfg exists and contains the string _IBMR2, + assume we're on an RS/6000 and define RISC6000 + +builtins.c + - Print traps in trap_builtin only if trap_list[i] is neither of + DEFAULT_SIG or IGNORE_SIG + +jobs.c + - run trap on SIGCHLD only if it is neither of DEFAULT_SIG or + IGNORE_SIG + +trap.c + - make it an error if trap_handler catches a signal for which the + trap_list holds IGNORE_SIG or DEFAULT_SIG + + 5/14 + ---- + +execute_cmd.c + - make redirection_expand return (char *)NULL in the case where the + word expands to nothing + +jobs.c + - added two functions: terminate_stopped_jobs, which walks the job + list and sends SIGTERM and SIGCONT to each stopped job, and + hangup_all_jobs, which walks the job list and sends SIGHUP and, + if necessary, SIGCONT to all jobs + +shell.c + - added call to terminate_stopped_jobs() after reader_loop exits, + before the shell is about to exit + - added call to hangup_all_jobs if the shell receives a SIGHUP that + causes it to exit + +test.c + - removed remaining vestiges of the special-casing of the -f operator + between System V and BSD + + 5/18 + ---- + +builtins.c + - traps should be printed if trap_list[i] == IGNORE_SIG + - fixed a typo in fg_bg() that would cause a seg fault when + decode_job_spec returned DUP_JOB + +trap.c + - don't run a trap on EXIT if set to IGNORE_SIG + +shell.c + - the initialization of traps must be done before we initialize + signals, because the shell needs to know that values of signals + that it inherited from its parent + +execute_cmd.c + - broke all the stuff bash does after execve into a new function, + bash_execve, called exactly like execve. If it returns, it + returns EXECUTION_FAILURE, so the execute_simple_command code can + just do exit (bash_execve (command, argv, envp)) + +builtins.c + - made the exec builtin call bash_execve so executable shell scripts + can be the target of exec + + 5/19 + ---- +subst.c + - added new functions that will perform quote removal only on + strings, WORD_DESCs, and WORD_LISTs. + +make_cmd.c + - quote removal is the only expansion that should be performed on + the delimiter of a here document, so call the new quote removal + functions in subst.c instead of redirection_expand() + +subst.c, shell.h + - changed expand_word_internal to do the right thing when given + a `quoted' argument of Q_KEEP_BACKSLASH; it means to preserve + backslashes unconditionally. + + This causes a flag to be set inside expand_word_internal that it + passes to recursive invocations (like when expanding "string"). + The values for the `quoted' argument have been changed to be + distinct bit values so that they can be masked and OR'd together. + +execute_cmd.c + execute_cmd.c now calls expand_word with an argument of + Q_KEEP_BACKSLASH, so that only parameter expansions and "" and '' + removal are performed + + 5/22 + ---- + + Another big merge with bfox source + +builtins.c + - restore the original values of signals before calling bash_execve + in exec_builtin + + 5/23 + ---- +test.c + - Brian's change to `unop' broke it -- the function now has an + integer passed to it, not a string of the form -x + - ! with 4 arguments should not fall through to the default case; + a `break' statement was missing + +config.h, machines.h, cpp-Makefile + - change NO_DUP2 to !HAVE_DUP2 + +general.c + - change NO_DUP2 to !HAVE_DUP2 + - add a call to SET_OPEN_ON_EXEC for the new file descriptor in our + dup2() emulation using fcntl + +execute_cmd.c + - removed the calls to SET_OPEN_ON_EXEC that were enabled by defining + DUP2_BROKEN; now undef HAVE_DUP2 and use the dup2 emulation in + general.c for those machines + + 5/24 + ---- +subst.c + - Even if no expansion is performed in expand_word_internal, and + therefore no word splitting is done, the quoted null characters + still need to be removed from the WORD_LIST. Add a new function + word_list_remove_quoted_nulls to do the removal for each element + of the list, and call it from expand_words_1 + +bashline.c + - call tilde_expand on the returned $PATH components in + command_word_completion_function + +More fixes and changes from a merge with bfox's source + + 5/25 + ---- +execute_cmd.c + - changed some `pid' declarations to be pid_t instead of int + +variables.c + - dollar_dollar_pid is still an int, so cast the return value + of getpid() when assigning to it + + 5/28 + ---- +subst.c + - more quoted null character fixes -- {de,}quote_string needs to + handle quoted null strings, and list_string has to do the + right thing with them + +builtins.c, execute_cmd.c + - bash_execve -> shell_execve + +makeargs.sh + - typo fix: elc.cfg -> xlc.cfg + +cat-s + - change the length($0) == 0 to NF == 0 so that lines with only white + space are deleted as well as blank lines + +subst.c + - quote_string and dequote_string now return char * and allocate a + new string for the return value + +expr.c + - have evalexp() save and restore the old value of evalbuf around + possible recursive calls + +cpp-Makefile + - the failure of a `touch' command is no longer a fatal error + +readline/readline.c + - only try to use ONLCR if it is defined + +machines.h + - fixes to the AT&T 3B2 and IBM AIX (RT, 370) descriptions + +readline/vi_mode.c + - now `p' is allowed at the end of a line + - yank-to (yw, ye) yanked one-too-few characters -- fix in + rl_vi_yank_to + - `r' command should not advance the cursor to the right + - `cw' now works like ce (and cW like cE) in that the white space + after the deleted word is not deleted + - cw now deletes the last character on the line, when point is the + last character on the line when it is executed + + 5/29 + ---- +subst.c + - fixed a seg fault when trying to do parameter substitution assignment + (${a=b}) with a null string: ${UnDeFiNeD=`false`} + +machines.h + - new entry for Sequent Symmetry running Dynix/ptx (System V.3.2) + +builtins.c + - parse_and_execute needs to handle longjmp(top_level, EXITPROG) + (FORCE_EOF, too) by restoring the old value of top_level and + doing another longjmp. This is needed so that an exit inside a + `.' script will actually exit the shell + - make `typeset -f foo' print the definition of the function foo, + if one exists. + +jobs.h + - defined NO_PID as -1, a value that cannot possibly be a pid + +jobs.c + - all pid and pgrp variables are initialized to (pid_t) NO_PID + +subst.c + - reorganized the ${} code into several functions + - make the brace-counting code that gathers the RHS of a ${} + parameter substitution use extract_delimited_string + - if no asynchronous commands have been executed, $! should echo + nothing + - make ${#} work like $# + - make ${#-foo} a bad substitution + - test for len_alt_opener == 0 in extract_delimited_string before + comparing the string with alt_opener + - ${special_var?} should echo the standard message ``parameter + null or not set'' + - plugged some memory leaks -- memory was not freed before longjmp + calls after bad substitutions + + 5/30 + ---- + +subst.c + - more radical reorganization + +cpp-Makefile + - redid the dependencies so that it's no longer required to `touch' + a .h file if another .h file changes + +glob.c + - statbuf -> finfo + +readline/tilde.c + - new file that handles the tilde expansion for the shell and readline + +readline/readline.c + - tilde_expand removed from this file; now in tilde.c + +general.c + - new function tilde_initialize to initialize the tilde expansion + code + - bash_tilde_expand is now in general.c, since it should work even + if readline is turned off for some reason + +shell.c + - tilde_initialize called as part of shell initialization + + 5/31 + ---- + +parse.y + - aliases consisting entirely of digits are now allowed; simply + commented out the !all_digits test + +documentation/bash.1 + - the PROMPTING section should make clear the difference between + \w and \W + +machines.h + - small fix to isc386 entry -- we still have alloca if we're using + gcc + - add -D_DGUX_SOURCE to the SYSDEP_CFLAGS for the DG/UX entries + - add -DNLS to the RS6000 SYSDEP_CFLAGS + +cppmagic.sh + - improved the test for gcc-cpp by also looking for the word + `recognized' in the error message + +readline/readline.c + - don't declare getpwuid() and getpwnam() if we're on an ISC 386 + machine + +machines.h, posixstat.h, execute_cmd.c + - changes from Saul Lubkin for Posix bash on ISC 2.2 + + 6/1 + --- + +jobs.c + - make the behavior of jobs started when job control is not active + be the following: + + if the shell is interactive, set SIGTSTP, SIGTTIN, and + SIGTTOU to SIG_IGN. This way, typing ^Z to a running + process will not do anything + + if the shell is non-interactive, set SIGTSTP, SIGTTIN, + and SIGTTOU to SIG_DFL, so jobs started from scripts + will stop when the script shell gets a SIGTSTP + + It might work to simply not change the values of the signals if + job_control == 0, since this is how they *should* be, but that + seems too chancy. + +execute_cmd.c + - make && and || constructs unstoppable, because there's no other + way to prevent the second process from executing immediately + if the first one is stopped (this is what ksh appears to do). + Make sure that we add an unwind_protect call to restore the + value of job_control if the command is interrupted. + + 6/3 + --- + +subst.c + - tilde expansion should be performed if there is an unquoted tilde + anywhere in the word, so we can check for `=~' and `:~' + + 6/4 + --- + +subst.c + - tilde expansion should be performed in do_assignment_internal + only if the `expand' argument is 1 and we do the other expansions + - pass the word to tilde_expand in expand_words_internal even if + its quoted bit (tlist->word->quoted) is set + +jobs.c + - make set_job_control return the old value of job_control, so you + can say `old_job_control = set_job_control (0);' + +unwind_prot.c + - added a structure to save the value of an integer variable. Two + new functions use it: unwind_protect_var (&var) allocates this + structure, fills it in, then calls add_unwind_protect specifying + restore_variable as the function to execute. restore_variable takes + this structure as an argument, restores the specified variable, + and frees the structure it gets + +builtins.c, execute_cmd.c + - changes to use unwind_protect_var to restore variables + + 6/5 + --- + +readline/readline.c + - readline now enables 8-bit input by default for termio, termios + systems (c_iflag &= ~ISTRIP) + +shell.c, builtins.c + - special_source_interrupt was renamed to parse_and_execute_level + +builtins.c + - parse_and_execute now uses unwind-protects to clean up after itself, + allowing these to be run from another place in the code if necessary + - special_buf is no longer used as a cleanup mechanism + - new function parse_and_execute_cleanup that can be called from + anywhere that encapsulates all the necessary unwind protects for + parse_and_execute + - period_builtin now calls parse_and_execute_cleanup to have + parse_and_execute clean up if the `return' builtin is executed + while in the middle of a `.' command and not inside a function + +trap.c + - run_interrupt_trap now prevents recursive calls to itself by + making trap_list[SIGINT] null while it is executing + +shell.c + - reorganized throw_to_top_level: run_interrupt_trap is now called + as the first thing, and throw_to_top_level calls + parse_and_execute_cleanup to make parse_and_execute clean up + after itself + +subst.c + - fixed a bug caused by string_rest_of_args returning NULL, which + caused parameter_brace_expand_length to get a seg fault because + it didn't check the return value when expanding ${#*} with no + dollar variables + +machines.h + - fixed up the HP/UX entry. HP/UX 7.0 and above (the Posix versions) + define __hpux to cpp, giving us a way to automatically tell the + difference between Posix and non-Posix implementations (whether or + not to link with -lBSD) + +trap.c + - save the value of last_command_exit_value while running the exit + trap. This way any exit trap will not change the value of + `exit 5', for instance + +subst.c + - added a function unquoted_member (c, s), which behaves like + member but tests whether or not c occurs in an unquoted portion + of the string + - made the test for calling tilde expansion be + ((first character is a tilde) || + (tilde appears && word not quoted) || + (tilde appears && tilde is unquoted)) + this uses unquoted_member (c, s) + +shell.c + - Xenix has the middle two arguments to setvbuf different from + every other implementation in the world. Add #ifdef'd code + +machines.h + - the Xenix 386 definition has to have M_OS and SYSDEP_CFLAGS + undefined because they might have already been set if i386 + is defined + +cpp-Makefile + - make the gcc line for making malloc.o include a -o $@, since we + know gcc can handle it + +builtins.c + - preserve the value of last_command_exit_value around the + execution of ~/.bash_logout + + 6/6 + --- +subst.c + - generalized unquoted_member to unquoted_substring, and changed + the tilde expansion tests to call unquoted_substring with the + full tilde prefixes as the substrings (:~, =~) + +builtins.c + - `read' now accepts a `--' argument to signal the end of the + options + + 6/7 + --- +documentation/bash.1 + - added description of the `silent' error reporting mechanism of + getopts that is enabled when the first character of the option + string is a `:' + - added description of the new features of tilde expansion (:~ + and =~) + +subst.c + - fixed sv_optind to call getopts_reset with the value of $OPTIND + rather than resetting it to 1 + +getopt.c + - commented out the code executed when optind is reset to 0 that + decides on the option order. We always want REQUIRE_ORDER + +getopts.c + - only call set_posix_option_order once + +builtins.c + - `type' gets a -- option to signal the end of the option arguments + - `typeset/declare' gets a -- option to signal the end of the + option arguments + - `hash' gets a -- option to signal the end of the option arguments, + and gets rewritten to boot + - redid `umask' option processing code to be more regular -- fixed + the bug where `umask --' would print nothing + - added Posix.2 `-p' option to `command' builtin, also added a + `--' argument with the standard meaning + - `trap' gets a -- option to signal the end of the option arguments, + and gets rewritten to structure it like other builtins + - set_or_show_attributes was changed so that you can't just make a + read-only variable read-write by saying `readonly -n var' + + 6/8 + --- +variables.c + - if bash is executing a function (variable_context > 0), then look + in the temporary environment for a variable's value first + +machines.h + - new entry for Honeywell Bull X20 from lele@idea.sublink.org + - for hp/ux versions < 7.0, we still need to link with -lPW to + get alloca + + 6/11 + ---- +subst.c + - include + +machines.h + - change the `catch-all' entries for things like MIPS to use + #if defined (mips) && !defined (M_MACHINE) + +builtins.c + - took out the readonly -n change. Enable it for strict sh + compatibility + +unwind_prot.c + - extended the saved variable code to full generality by adding a + size field to the struct. Variables bigger than a char * will + be copied into a block of memory allocated to hold their value + and restored from there + +builtins.c, trap.c, execute_cmd.c + - changes to unwind_protect_var calls to add value, size arguments + +shell.c, jobs.c + - only catch SIGINT with sigint_sighandler if the shell is + interactive; otherwise let termination_unwind_protect get it + +shell.c + - startup files may now be aborted by using the `return' builtin + - set SIGTERM to SIG_IGN if the shell is interactive, not just if + it's a login shell. Without this, `kill 0' will kill an + interactive shell + + 6/12 + ---- +jobs.c + - replace instances of M_UNIX with the more descriptive SCO + +machines.h + - gather all 386 machines into one block, stop #undef'ing i386 + +builtins.c + - make exec_builtin not completely expand the command name and + stick it in argv[0] if the `-' flag is supplied -- instead, + tack a `-' on the front of whatever the user typed + + 6/13 + ---- +jobs.c + - don't change SIGQUIT's signal handler at all in + initialize_job_signals + +execute_cmd.c + - change execute_case_command to do string_list on the result of + expand_word (word) instead of just taking the first word and + assuming no splitting was done + - in execute_simple_command, make sure the call to bind_lastarg + is done before the dispose_words, because lastarg just points + at the last word, which is invalid after the dispose_words + +machines.h, jobs.c + - new machine-specific variables: BSD_GETPGRP, TERMIOS_MISSING + +glob.c + - make an incomplete character class (e.g. [X-]) behave as if + no class were specified instead of giving an error + +filecntl.h + - new include file that encapsulates fcntl.h and the declarations + for close-on-exec stuff + +execute_cmd.c, builtins.c, shell.c + - new arg for execute*command* functions that tells whether or not + to obey the -e flag and exit when a simple command exits with a + non-zero exit status + - fixed exit status of while to be success if no commands are + executed + - fixed exit status of until to be success if no commands are + executed + + 6/15 + ---- +execute_cmd.c + - since while and until commands are so similar, combined the bodies + into execute_while_or_until (), which takes a type argument to + decide which one it is. execute_{while,until}_command just call + this function + - added unwind protect calls to execute_for_command to free up the + list (for word in list) + - eliminated a possible call to find_function in execute_simple_command + - added unwind protect calls to execute_simple_command + - plugged a couple of memory leaks in execute_simple_command: + o freeing the expanded command words when executing a function + or builtin with a pipe in or out + o the name of the command (`command') when executing from a + disk file + +subst.c + - implemented the Posix.2-style $(( )) arithmetic substitution. I + think we'll let this remain mercifully undocumented + +variables.c + - removed support for old Posix.2-style exported functions, since + Posix.2 no longer specifies exported functions + + 6/17 + ---- +nojobs.c + - make wait_for_single_pid () check the validity of its pid + argument before calling wait(2), returning 127 if the pid is + invalid + +jobs.c + - if wait_for_single_pid () is called with an argument that does + not match a child of the shell, return 127 as Posix.2 specifies + + +builtins.c + - made `set' treat `set -' and `set +xv' as equivalent, like the + Posix.2 spec mandates (though it does mark the construct as + obsolescent) + - made the strings output by `export' and `readonly' when showing + variable definitions match those specified by Posix.2 + - if STRICT_POSIX_COMPATIBILITY is #defined when compiling the + shell, the shell will exit in the event that it cannot find the + file specified as the first argument to `.' + +variables.c + - turned set_auto_export(var) into a two-statement macro, saving a + number of function calls + + 6/19 + ---- +execute_cmd.c + - split the different parts of execute_simple_command into different + functions: execute_builtin_or_function, execute_disk_command, and + execute_subshell_builtin_or_function to make the whole mess + easier to understand + + 6/21 + ---- +builtins.c + - make sure that `type' does not report directories as executable. + Call executable_file to make sure. + - have the `set' builtin check the validity of its flags arguments + before actually doing anything with them. This prevents things + like `set -help' from exiting the shell + +flags.h + - added declarations for the functions exported by flags.c + - added #if defined (_FLAGS_H) protection against multiple inclusion + +shell.c + - don't do the .bashrc if we're a login shell, even if we're not + doing the .profile + +general.c + - uts -> ut, since UTS compilers define uts for the C preprocessor + +makeargs.sh + - better treatment of machines that do not have the `hostname' + command + + 6/22 + ---- +readline/readline.c + - on termio and termios systems, turn off NL -> CR and CR -> NL + input translation so bash will see the two characters distinctly + + 6/23 + ---- +ulimit.c + - cleaned up the shell_ulimit code so there was not so much code + duplication (cut 70K from binary!) + - added -H, -S to use hard, soft BSD resource limits + - ulimit now allows multiple options: -d -t -c or -dtc + - ulimit can print multiple options in the same format it uses for + -a + - USG systems can use -p, -n, -a -- there is no longer a ulimit.c.new + - -n uses RLIMIT_NOFILE for getting as well as setting, and so can + use hard and soft limits + - `ulimit limit' now behaves like `ulimit -f limit' + + 6/25 + ---- +execute_cmd.c + - since do_redirection () is the only place where we have the value + of the expanded redirection word, report open () failures there + + - broke the #! emulation code out into a separate function and made + it handle the single argument that you can give interpreters + +builtins.c + - make `command -p' use the Posix.2 configuration variable _CS_PATH + (with confstr()) or the #define CS_PATH to find the path that will + pick up all the standard utilities before falling back to using + COMMAND_MINUS_P_PATH + + 6/26 + ---- +builtins.c + - make sure we include `-o' in the list of legal flags when checking + for illegal ones in the set builtin + + 6/29 + ---- +fc.c + - parse and execute the entire edited file of commands when doing + `fc -e' so that compound commands work + +readline/readline.c + - allow leading whitespace in lines passed to rl_parse_and_bind() + +machines.h + - MIPS machines cannot handle the inclusion of /usr/include/sys/wait.h, + so #undef HAVE_WAIT_H + +cpp-Makefile + - pass only a subset of the CFLAGS down to the make in readline, + because some make programs and cc's get overloaded + + 6/30 + ---- +ulimit.c + - rewrote to do the 6/23 changes right + - added -- to mean end of options + +execute_cmd.c + - made a number of functions static + - changed do_redirection to do_redirection_internal + +cpp-Makefile, config.h, builtins.h, builtins.c, subst.c + - made the inclusion of the getopts code dependent on the definition + of GETOPTS_BUILTIN + +vprint.c + - new name for misc.c, since all that it contains now are definitions + for v[fs]printf() + +builtins.c + - made help for history_builtin include -s only if HISTORY_DASH_S + is defined, to match the code + - made the help for the ulimit builtin match the code, depending on + HAVE_RESOURCE being defined + - make the help builtin interruptible by adding calls to QUIT in + the loop + - `cd -' now prints the name of the directory it's changing to + - change the help text for the wait builtin to show that job specs + are allowed only on systems which support job control + - changed an fprintf(stdout, ...) to printf(...) in history_builtin + +jobs.c + - make kill_pid kill the correct pid when walking through all the + pids in a job + +test.c + - don't call strlen when we just want to know whether or not a string + is null; it suffices to test the first character + +bashline.c + - fixed a typo in the comment text for the FIGNORE code + +documentation/bash.1 + - some typo fixes + +documentation/features.texi + - fixed some typos + +glob/glob.c + - if we're not globbing dot filenames, and the first character of the + pathname is a `.', make sure the pattern matches it exactly before + we call glob_match in glob_vector() + + 7/1 + --- +fc.c + - use maybe_execute_file instead of calling parse_and_execute + when re-executing the file of commands + +builtins.c + - removed the help text #define; the savings is too small to bother + +ulimit.c + - set `verbose_print' after a group of specific options is given, + so `ulimit -pdt -m' prints everything verbosely + + 7/3 + --- +getopts.c + - made it include the Gnu `getopt.h' instead of declaring its + variables as extern + +getopt.c + - added a function getopt_set_posix_option_order() to set the + default option ordering to that required by Posix.2 + - added a variable default_ordering to hold the default style + of option ordering that getopt() handles. Usually it is + PERMUTE, but it can be set to REQUIRE_ORDER + +cpp-Makefile + - made all of the getopts files depend on GETOPTS_BUILTIN being + defined; changed some variable names for the getopts files + +builtins.c + - made exit_builtin and logout_builtin return the value of + exit_and_logout() instead of expecting exit_and_logout not to + return + - the `type' builtin now prints `keyword' instead of `reserved word' + when given the `-type' option + +jobs.c + - removed the final default #else clause for set_new_tty_driver(); + if none of NEW_TTY_DRIVER, TERMIO_TTY_DRIVER, or TERMIOS_TTY_DRIVER + is defined, the compilation is hopeless anyway + + 7/4 + --- +jobs.c + - added support for another format for pretty_print_job: print the + information only of the job is marked as not having been notified, + then set the job as having been notified so there will not be + multiple lines of information about the same job. flush_child () + resets this flag to 0 when a job's status changes + - made a number of private functions static + +builtins.c + - added a Posix.2a-like `-n' flag to the jobs builtin to print only + those jobs that have changed status since they were last printed + +documentation/bash.1 + - added description of -n option to `jobs' builtin section + + 7/5 + --- +shell.c + - test help file name for nullness and emptyness (hf && *hf) before + trying to read the history from it. Make the same changes when + saving the history. + +shell.c, jobs.c, quit.h + - changed the type of throw_to_top_level from type `sighandler' to + void + +execute_cmd.c, builtins.c + - make sure all int-valued functions return some value + +readline/readline.c + - if S_ISDIR is defined, then use it, otherwise use S_IFDIR + (Posix vs. traditional Unix) + + 7/6 + --- +builtins.c + - made the exit status of the kill builtin agree with the Posix.2 + specification + +documentation/bash.1 + - added specifications of the return values of most of the builtins + likely to be used in scripts + + 7/8 + --- +execute_cmd.c + - set this_shell_builtin and last_shell_builtin each time we + execute a simple command. This means that this_shell_builtin + being non-null will indicate we are running a builtin + +variables.c + - if we're executing a builtin, look in the temp environment first + for a variable before looking in the variable hash table + + 7/11 + ---- +test.c + - fixed precedence bug by making bash adhere to traditional sh + grammar for -a and -o + +readline/readline.c + - fixed a bug that would cause core dumps when trying to use ^P + to get to a line longer than rl_line_buffer_len, then trying + to insert something. + + + +[Radical reorganization of the shell sources, inclusion of builtins/*] diff --git a/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v6 b/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v6 new file mode 100644 index 000000000..3fb0fb178 --- /dev/null +++ b/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v6 @@ -0,0 +1,1010 @@ +[Beginning of work with version 1.10] + + 7/14 + ---- +documentation/bash.1 + - added description of the `bind' builtin + - fixed typo in description of the `command' builtin + +builtins/bind.def + - fixed up the error message printed when rl_read_init_file fails + +builtins/alias.def + - print_alias should be a static function + +builtins/history.def + - added support for `--' + +builtins/break.def + - added the glue for the `continue' builtin, which had been left out + +builtins/common.c + - changed find_shell_builtin to use a binary search. This eliminates + 40 calls to `strcmp' each time `test' is called, for instance + - added a function initialize_shell_builtins () that sorts the array + of shell builtins so the binary search will work + +shell.c + - added call to initialize_shell_variables in shell_initialize() + +builtins/mkbuiltins.c + - added a footer to the text written to builtins.c that initializes + the variable num_shell_builtins to the number of shell builtins in + the shell_builtins array + +builtins.h + - added an extern declaration of num_shell_builtins + +builtins/enable.def, builtins/help.def + - changed to use num_shell_builtins + +cpp-Makefile + - make the copy of builtins/builtext.h happen only if builtext.h + has changed, using `cmp'. This keeps bashline.c from being + recompiled every time something in the builtins directory + changes + + 7/15 + ---- +builtins/history.def + - fixed up the help text to reflect reality + +documentation/bash.1 + - more changes to the `alias' builtin text + + 7/16 + ---- +builtins/Makefile + - added a .SUFFIXES line to define .def as a suffix; old versions of + make require it + +getcppsyms.c + - corrected spelling error: MTPSEL -> MIPSEL + - added more defines: mc68020, m68k, bsd4_2, bsd4_3, ibmrt, ns32000, + hp9000s800, hp9000s500, hp9000s300, hp9000s200 + +readline/readline.c + - fixed a typo on rl_prep_terminal for BSD tty driver systems that + caused ^J and ^M to both be mapped to ^M on input. The net + effect was that it was impossible to get a literal ^M into a line, + like into an `ed' here document + + 7/17 + ---- + +cpp-Makefile + - make sure CPPFLAGS is passed to sub-makes + +machines.h + - Pyramid's don't have alloca(), so #undef HAVE_ALLOCA in the + machines.h entry + +builtins/history.def + - cleaned up the option parsing a little bit; corrected support + for the `--' option + + 7/18 + ---- +variables.c + - don't inherit IFS from the environment anymore + +machines.h + - fix the definition of SYSDEP_CFLAGS for ultrix machines + +cpp-Makefile + - make builtins/libbuiltins.a depend on pipesize.h, because ulimit.def + includes it + - shell.o needs to depend on endian.h + +getcppsyms.c + - more HP symbols for the 9000 series + +subst.c + - if command_substitute is passed a null or empty string, then just + return ((char *)NULL) immediately, without forking a child + +parse.y, subst.c, shell.c, execute_cmd.c + - added ksh-like process substitution using FIFOs (named pipes) + + 7/19 + ---- + +config.h + - made PROCESS_SUBSTITUTION a configurable option + +cpp-Makefile + - made y.tab.c depend on files included by shell.h + + 7/20 + ---- +subst.c + - make sure we call close_pgrp_pipe from the process substitution + code in the parent + + 7/24 + ---- +subst.c + - no longer unconditionally tilde-expand `:~' in words (but still + do it in assignments) + +test.c + - trim trailing blanks from integer expressions so isint() does not + choke on them + + 7/25 + ---- +makeargs.sh + - remove the -D from the SYSDEF definition of USGr4 + +builtins/history.def + - include "../filecntl.h" instead of sys/file.h + +make_cmd.c + - add declaration of reverse_list () + +subst.c + - add cast to return value from strlen() in sub_append_string (); + ANSI C makes the return value a size_t, which can be unsigned + +builtins/suspend.def + - add argument to suspend_continue(), since it's a signal handler + +readline/readline.c + - make rl_handle_sigwinch have only one argument: int sig + - make rl_signal_handler have only one argument: int sig + - add extern char *getenv() declaration at top level + - add extern char *index(), *rindex() declarations at top level, if + these are not already #defines + - add cast to d_namlen area of struct dirent, because it's an + unsigned short + +test.c + - change isint to: + take a string as first argument + accept a NULL second argument, meaning toss the value + work correctly with leading - and + + compute the value on the fly, rather than calling atol + - change age_of to: + take a string as first argument + accept a NULL second argument + - int_expt_err -> integer_expected_error + - changed all calls to stat to call a new function test_stat, which + immediately returns an error when given a null pathname. This is + what Posix.1 says + - changed eaccess, age_of to disallow null pathnames as well + +builtins/ulimit.def + - System V.4 does not define RLIMIT_RSS, so disable the `m' option + +builtins/mkbuiltins.c + - need to include "../filecntl.h" + +builtins/source.def + - need to include "../filecntl.h" + +builtins/times.def + - System V.4 does not define a struct rusage, so use times(2) instead + of getrusage(2) + + 7/26 + ---- +readline/readline.c + - output a \r in crlf() only if we're running under the BSD tty + driver (NEW_TTY_DRIVER) -- the Posix (termios) and System V + (termio) drivers do not disable output nl->crnl mapping + - if read returns 0 in rl_getc, return EOF to the caller + +cpp-Makefile + - make sure we pass -DHAVE_UNISTD_H down to the make in readline + so that the proper tty driver is used (BSD, termio, or termios) + + 7/27 + ---- +config.h, parse.y + - made csh-style `!' history expansion and prompt string decoding + configurable, based on the definition of CSH_HISTORY_EXPANSION + and PROMPT_STRING_DECODE, respectively. Both can be enabled + and disabled in config.h + +readline/readline.c + - reformatted maybe_unsave_line and maybe_replace_line + - if we use ^R to find a history line longer than rl_line_buffer_len, + we can't simply do a strcpy(the_line, line_found). We have to use + xrealloc to increase the length of rl_line_buffer in + rl_search_history + - do the same xrealloc trick in maybe_unsave_line, rl_get_next_history + +execute_cmd.c + - changed the way pipes are created. Now, SIGCHLD is blocked before + anything is done, and pipelines are created in a tight while loop + +parse.y + - changed pipelines to be right associative rather than left. This + way, the process tree is right-heavy rather than left -- there will + never be a command with a pipeline in cmd->value.Connection->first + +jobs.c + - removed all references to the pgrp_pipe process group synchronization + hack, including the functions pipe_read, pipe_close, and + close_pgrp_pipe + +subst.c + - removed calls to close_pgrp_pipe for command and process + substitution + +execute_cmd.c + - obey_minus_e_flag -> check_exit_on_error + + 7/30 + ---- +builtins/command.def + - HP/UX 7.x defines _CS_PATH, but does not have the getconf() function + to support it. Need a special #define to work around. + + 7/31 + ---- + +shell.h, parse.y, make_cmd.c, copy_cmd.c, print_cmd.c, execute_cmd.c + - consolidated the command->subshell and command->invert_pipeline + members into a single command->flags + +execute_cmd.c, shell.c, builtins/common.c, builtins/command.def + - removed the check_exit_on_error parameter to the execute_* + functions; the functionality is now one of the flag bits attached + to each command. + +shell.h, make_cmd.c + - each command type now has a `flags' member associated with it, + initialized to 0 in make_XXX_command + + 8/3 + --- +jobs.c + - wrap the system dependencies for waiting for children inside a + WAIT_FOR_CHILD macro, whose syntax matches the Posix waitpid() + function + +readline/readline.c + - make sure all definitions for XON/XOFF are wrapped inside the + USE_XON_XOFF cpp define + +subst.c + - make string_list and string_list_dollar_star use a common base + function: string_list_internal (list, separator) + + 8/5 + --- +builtins/mkbuiltins.c + - build the new builtins.c as a temp file, then rename it when + it's done + +shell.c + - when on an Apollo, turn off line editing if executing in a pad + + 8/6 + --- +inlib.def + - new builtin for use on Apollo machines + +lib/readline/vi_mode.c + - fixed `blind strcpy into the_line' bug in rl_vi_dosearch + - made ~ vi change case command take a numeric argument, like ksh-88 + - made vi character search commands (t, T, f, F, ;) take arguments + - made vi `_' directive unconditionally append a space before + inserting the last arg + - make rl_vi_replace only create vi_replace_keymap once + + 8/7 + --- +lib/readline/{Makefile, readline.c, vi_mode.c} + - finally made vi_mode.c standalone and not included by readline.c + so I don't have to wait so long for recompiles each time I change + something in either file + +lib/readline/vi_mode.c + - made rl_vi_change_char (vi `r' command) accept an argument count + - if user has bound ^H to erase, make ^H erase when in overstrike + mode (vi `R' command) + - `cl' deletes one too many characters, so don't advance rl_mark an + extra character in rl_vi_change_to if the command is `l' + - readline thinks that the first word on a line is the 0th, while vi + thinks the first word on a line is the 1st. Compensate. This is + for the vi `_' command + - `dl' deletes one too many characters, make fix to rl_vi_delete_to + analogous to that made to rl_vi_change_to to not move mark forward + - fixed handling of numeric args in rl_vi_domove so that the correct + numeric arg was displayed, the digit read was used to initialize + rl_numeric_arg, and the non-digit key stuffed back by rl_digit_loop1 + was re-read, executed, and passed back as the value of the + movement command (makes d5l work right, for instance) + - made rl_vi_fetch_history treat a numeric argument correctly -- an + argument of n means we want the command that `history' would have + labeled as the nth command in its output + - extended the vi search commands `/' and `?' to accept a string + starting with `^' and find only matches that are prefixes of + history lines. Used a new function vi_history_search_pos that + acts like history_search_pos but understands `^' + - use rl_line_buffer instead of the_line so the_line can be static + and private to readline.c + +lib/readline/history.c + - fixed the calculation of how much of the history line to test when + searching forward in the history list for a string. Previously, + the absolute value of the difference in length was not used. + - generalized history_search into history_search_internal, which + takes a third parameter that tells whether or not the string must + match at the beginning of a history line. A new function + history_search_prefix uses it, and get_history_event now uses it. + history_search (string, dir) now simply calls + history_search_internal (string, dir, 0) + +lib/readline/readline.c + - fixed rl_yank_nth_arg to always move point forward and append a + space if in vi mode + +bashline.c + - added a function to implement the vi movement mode `v' command, + which runs `fc -e ${VISUAL:-${EDITOR:-vi}}' on either the + command being entered or a command from the history corresponding + to the numeric argument given to the command. This is commented + out, because currently there's no way for the shell to know + whether or not vi-mode has been compiled into readline + + 8/8 + --- +shell.h, execute_cmd.c, parse.y, print_cmd.c + - CMD_INVERT_PIPELINE -> CMD_INVERT_RETURN + CMD_IGNORE_EXIT_VALUE -> CMD_IGNORE_RETURN + +execute_cmd.c + - changes from bfox + - need to initialize lastarg to NULL at start of + execute_simple_command. For a command that's just an assignment + statement, `words' is nil and lastarg never gets set, binding + garbage and possibly stepping on memory + - lastarg now can be a variable local to execute_simple_command, + and it works better that way (e.g. it gets set to garbage when + executing a `.' command) + +builtins/exec.def + - after testing for `-' as argument, make sure there are more + arguments before doing anything else. Return if no more args + + 8/9 + --- +builtins/trap.def + - make sure the shell always ignores SIGQUIT, especially after a + call to trap that restores the default value of the signal handler. + The same thing needs to happen for SIGTERM if interactive, and + SIGTTIN, SIGTTOU, and SIGTSTP if job control is active + +parse.y + - call run_pending_traps () immediately after calling readline + + 8/10 + ---- +jobs.c + - only declare sys_siglist once, at top of file, rather than have + three or four separate extern declarations + + 8/13 + ---- +subst.c + - rewrote string_extract_double_quoted as a state machine to fix a + quoting bug and implement the Posix.2 draft 11 quoting rules + +lib/readline/vi_mode.c + - don't go back into insertion mode after performing completion in + command mode + + 8/15 + ---- +subst.c + - rewrote list_string to implement the Posix.2 draft 11 field + splitting rules + + 8/16 + ---- +builtins/alias.def + - make sure single_quote() adds terminating alias + +parse.y + - make sure we turn off expand_next_token when returning tokens that + are not words, like `>' + +lib/readline/readline.c + - make the termio and termios versions of rl_prep_terminal and + rl_deprep_terminal use the static flag terminal_prepped to tell + whether or not they should do anything + +test.c + - removed unused definition of test_io_error + + 8/18 + ---- +lib/readline/readline.c + - fixed the BSD/v7 terminal driver versions of rl_prep_terminal and + rl_deprep_terminal to mimic the structure of the sys5/Posix versions + with respect to terminal_prepped + - fixed a possible call to malloc(0) when allocating space for + macro_keys in rl_macro_bind + - made rl_variable_bind ring the bell if asked to set the editing mode + to vi when vi mode has not been compiled into libreadline + +test.c + - fixed term() so that -l string is recognized correctly as the LHS + of a binary operator + - made enough changes so that test.c compiles standalone on the RT + running 4.3 and can be installed as /bin/test + + 8/20 + ---- +parse.y + - fixed turning off alias expansion so aliases are still expanded + after || and &&, for instance + +execute_cmd.c + - should only add an unwind-protect to restore the signal mask if + job control is in effect + +builtins/suspend.def + - should only be compiled in if job control is in effect + +builtins/alias.def + - make sure we free the string allocated and returned by single_quote() + in print_alias() + +builtins/reserved.def + - fix help text for `for' loop to indicate that the semicolon is + required only if the `in words' portion is present + + 8/21 + ---- +documentation/bash.1 + - fixed the description of tilde expansion to indicate that it is + performed on the RHS of assignment statements, and that =~ and + :~ are expanded in such cases + +machines.h + - updated Ultrix MIPS machines entry to undefine HAVE_ALLOCA_H. + Ultrix 4.2 on Decstations has /usr/include/alloca.h, which defines + alloca as __builtin_alloca, but this version of alloca is severely + limited and unusable + +jobs.c, subst.c + - some Posix systems (e.g. SGI) can't even handle a call to setpgid + when the only other member of the process group is a zombie. + Restored the old pgrp_pipe synchronization code, #ifdef'd on + PGRP_PIPE + +machines.h + - added -DPGRP_PIPE to the SGI SYSDEP_CFLAGS + +trap.c + - need to re-install signal handler on USG machines without BSD + signals (in trap_handler). There's still the USG signal race + condition, though + - if interrupt_immediately is set, run a trap handler directly + from trap_handler, instead of just setting the flag + + 8/26 + ---- +subst.c + - changed parameter_brace_expand_rhs to perform tilde expansion on + the value it's expanding + +parse.y + - declared shell_pgrp as extern pid_t, need to include jobs.h on + job control systems to make sure it's defined + +jobs.c + - make a job that is suspended show the signal that caused the + suspension in the exit status (128 + WSTOPSIG(s)) + +jobs.c, execute_cmd.c, builtins/fg_bg.def + - make start_job return -1 on error, 0 when starting a background + job, and the return value from wait_for when starting a fore- + ground job + +lib/readline/vi_mode.c + - there was an off-by-one error in rl_vi_domove. We are not at + the end of the line if rl_point <= rl_end - 1, not just <. + This messed up things like `dw' to the end of the line + + 8/28 + ---- +subst.c + - forgot to malloc space for tresult before trying to use it in + word_list_quote_removal + + 8/29 + ---- +lib/readline/Makefile + - make sure that ../glob/tilde_expand.o is linked into the readline + library + - make sure that xmalloc.o is linked into the readline library + +lib/readline/xmalloc.c + - new file, linked into readline library for those applications that + do not define their own versions + +nojobs.c + - removed redundant call to signal(SIGQUIT, SIG_IGN) + - rearranged code in make_child so signals get the right values + in children of the shell + +jobs.c + - don't call restore_default_signal -- let restore_original_signals + do the work, because signals ignored in the shell with trap '' sig + are supposed to be ignored in children + +trap.c + - make sure restore_original_signals restores the values of SIGINT, + SIGQUIT, and SIGTERM, unless there has been a trap command called + on them + + 9/4 + --- +builtins/exec.def + - make sure that all signals are restored to their original values + before execing the new program + +bashline.c + - make shell_expand_line output an extra \r after pre_process_line + runs + + 9/5 + --- +lib/readline/readline.[ch] + - new function rl_tilde_expand, which attempts to perform + tilde expansion on the word under the cursor + - readline now recognizes a new variable, `expand-tilde', which + controls whether the tilde expansion functions are called + when bash does completion (default is off). The internal + form of this variable is rl_complete_with_tilde_expansion + +lib/readline/vi_mode.c + - new function rl_vi_tilde_expand, which performs tilde expansion + on the word under the cursor when in movement mode, then enters + vi insertion mode. + +lib/readline/{vi,emacs}_keymap.c + - bind rl_tilde_expand to M-& in emacs mode, and rl_vi_tilde_expand + to & in vi command (movement) mode + + 9/6 + --- +subst.c + - fix string_extract_double_quoted to malloc the correct amount of + space for the returned string + +execute_cmd.c + - add an undo redirection to do_redirection_internal for the `close + descriptor' case + + 9/7 + --- +lib/readline/vi_mode.c + - the first character of the string inserted into the command line + when the vi mode `#' command is executed is now controlled by the + internal variable `rl_vi_comment_character' + +lib/readline/readline.c + - the readline user-settable variable `vi-comment-character' now + controls the value of rl_vi_comment_character + + 9/10 + ---- +test.c + - fixed problems in binary_operator() caused by -l. Made sure that + bash always dereferences a valid member of argv. Check that the + (new) operator is a valid binary operator after a leading -l arg + is processed. + +lib/readline/vi_mode.c + - changed rl_vi_comment_character to rl_vi_comment_begin, which is + a character string + +lib/realine/readline.c + - changed the name of the variable controlling the vi comment + string to comment-begin + + 9/11 + ---- +subst.c + - changed ${#@} and ${#*} to return the number of arguments, for + sh and ksh compatibility, since the latest Posix.2 draft has + left it unspecified + +shell.c + - added a workaround for a bug in the NeXT 2.1 rlogind, which causes + the shell to start with no control terminal -- just open(2) the + result of ttyname(3), which causes it to become a controlling + terminal + + 9/13 + ---- +parse.y + - added the reserved words that can precede a list of commands to + the list of command word predecessors in command_token_position + +builtins/kill.def + - added support for negative process specifications to kill + process groups + + 9/17 + ---- +builtins/read.def + - turn off att_invisible when binding a variable to the results of + read + +subst.c + - don't expand invisible variables in the $VAR expansion code + + 9/18 + ---- +lib/readline/readline.c + - changed the use of _POSIX_VERSION to use HAVE_POSIX_SIGNALS and + TERMIOS_TTY_DRIVER + + 9/24 + ---- +shell.h, execute_cmd.c, builtins/command.def + - replaced two global variables, inhibit_command_word_expansion + and ignore_function_references, and replaced them with flags + in the simple command structure + +jobs.c + - make sure current_job and previous_job are reset to NO_JOB in + delete_all_jobs() + - stop_pipeline allocates an extra slot in the jobs array + + 9/27 + ---- +builtins/wait.def + - make the wait builtin use interrupt_immediately to get immediate + trap execution while waiting for commands + +subst.c + - when IFS is set to the null string (IFS=""), "$*" should + concatenate the positional parameters into a single word + +builtins/break.def + - if the argument to `break' or `continue' is not >= 1, Posix.2 + says the builtin should return EXECUTION_FAILURE + +shell.h + - Posix.2 has specified that the shell should exit with status + 126 when asked to execute a file that is not executable. This + changes the definition of EX_BINARY_FILE + +builtins/trap.def + - the format of the command string printed out when trap has + no arguments has changed to "trap -- %s %s" in the latest + version of Posix.2 + + 9/30 + ---- +builtins/alias.def + - make sure single_quote allocates space for the opening and closing + quotes by allocating 3 + (2 * strlen(s)) bytes + +nojobs.c + - Under certain circumstances, when set_tty_state is called + without a successful get_tty_state, the file descriptor + opened on /dev/tty could be left unclosed + + 10/2 + ---- +execute_cmd.c + - with redirections of type r_close_this, we don't need to check + if redirectee != redirector, since redirectee is not being used + there + +parse.y + - in yy_readline_get, we should only worry about shell_pgrp and + job_control if JOB_CONTROL is defined + +builtins/enable.def + - make enable_shell_command skip over entries with null values + for `function' + +subst.c + - fixed a typo: S_ISFIFO -> S_IFIFO + + 10/3 + ---- +builtins/ulimit.def + - some machines have a setdtablesize() system call, the `set' + analog of getdtablesize(). If HAVE_SETDTABLESIZE is defined, + call it when ulimit -n newlim is used. + +machines.h + - Sequent symmetry machines have setdtablesize(), add a + -DHAVE_SETDTABLESIZE to SYSDEP_CFLAGS + +parse.y + - made reserved_word_acceptable() static + - rearranged tests for reserved words so that in_case_pattern_list + test is performed first + - turned command_token_position into a #define, since it was almost + identical to reserved_word_acceptable + + 10/4 + ---- +shell.c + - for Ultrix Decstations or machines using Gwyn's alloca() emulation, + call alloca(0) in reader_loop after executing each command to try + and reclaim outstanding storage + + 10/7 + ---- +bashline.c + - fixed a bug that caused the internal index into the shell builtins + array to be incremented by one too many before returning matches + for command completion + +jobs.c + - if PGRP_PIPE is not defined, have each child process give the + terminal to the pipeline process group + + 10/8 + ---- +support/mksysdefs + - make Xenix machines call /bin/uname instead of the one found in + $PATH + +subst.c + - added a declaration for unquoted_substring at the top of the + file + +maxpath.h + - include rather than , since that is the + Posix-specified include file + +bashline.c + - make ` be a command separator for purposes of command completion + Now `ch[TAB] will attempt command completion + +lib/readline/readline.c + - don't compile in the termios code if TERMIOS_MISSING is defined + +machines.h + - since Ultrix typeahead is broken using the termios code, define + TERMIOS_MISSING in SYSDEP_CFLAGS + + 10/9 + ---- + +general.c + - add a pathname canonicalization routine canonicalize_pathname to + remove sequences of > 1 slash, remove . and ./, munge the + passed pathname to handle .. and ../, and remove trailing / + characters + +builtins/cd.def + - call canonicalize_pathname after making the pathname absolute + with make_absolute + + 10/10 + ----- +builtins/source.def + - check that the file being sourced is not a binary file + +builtins/ulimit.def + - added a new flag -v that reports the current and maximum limits + on the amount of virtual memory allocated to a process. This is + implemented using RLIMIT_VMEM on those machines that have it + (svr4) and as the sum of RLIMIT_DATA and RLIMIT_STACK on other + machines with the BSD resource limits + + 10/11 + ----- +general.c, parse.y + - unified #defines surrounding sysv_getc () declaration and use + +shell.c + - have first setjmp before startup files are executed test the + return code from setjmp to decide whether or not to exit the + shell or to skip the startup files + + 10/13 + ----- +expr.c + - need to initialize tokval and tokstr each time evalexp() is + executed + +execute_cmd.c + - make sure that functions executed in the background set up a + valid place to return to (using return_catch) so that trying + to execute `return' doesn't result in a longjmp botch + + 10/14 + ----- +lib/readline/vi_mode.c + - make rl_vi_ccmment insert a space after inserting `:' as the + comment character + +builtins/getopt.c + - make string.h be included #if defined (USG) || defined (hpux) + + 10/15 + ----- +bashline.c + - fix bug that causes bash to get a seg fault on attempting + completion after FIGNORE= + +test.c + - test -foobar was the same as test -f. Make sure an operator is + only two characters long + + 10/16 + ----- +shell.c + - interactive shells should call get_tty_state after reading the + startup files, so that any stty commands therein are not lost + +support/mksysdefs + - for a machine to be an `isc386', it must have both + /etc/conf/kconfig.d and /usr/include/sys/limits.h + + 10/17 + ----- +subst.c + - re-implemented ${#xx} in parameter_brace_expand_length to + call expand_string on $xx and take the length of the result. + If no result (e.g. if xx is undefined variable), return 0 + +execute_cmd.c + - remove the attempt to put commands on both sides of && and || + in a non-job-control environment + + 10/18 + ----- +lib/readline/history.c + - If we are compiling for the shell, allow quotes to inhibit + history expansion + +test.c + - A new version from djm@eng.umd.edu + +subst.c + - If we don't get all of the name when we go to expand ${#xx}, + where `name' is the stuff inside the braces, it's a bad + expansion error + - the ${xx} code advanced `sindex' one too many, so the character + immediately following the close brace was skipped + + 10/21 + ----- +type.def + - the state variable used in calls to user_command_matches when + looking up disk files was not being reset to 0 for each item + looked up + +nojobs.c + - reversed the sense of the first test for _POSIX_VERSION + vs. USG to determine what time of terminal handling code to + use + + 10/22 + ----- +lib/glob/fnmatch.[ch] + - Roland McGrath's implementation of the Posix.2 pattern matching + function fnmatch() + +subst.c + - removed emulation of fnmatch, declaration of FNM_NOMATCH + - include + +execute_cmd.c + - removed declaration of FNM_NOMATCH, now includes + - case pattern expansion now calls fnmatch(pat, str, FNM_NOESCAPE) + to disable backslash escaping. Still not sure this is the + right thing. + +cpp-Makefile + - changes so that ./lib/glob (actually $(GLIBSRC)) is in the include + file search path + - make sure fnmatch.c gets put into lib/glob/libglob.a + +machines.h + - isc386 needs -DPGRP_PIPE added to SYSDEP_CFLAGS + +make_cmd.c + - <<- means kill leading TAB characters, not all whitespace + + 10/24 + ----- +builtins/type.def + - make sure we note that we found something if a file is found in + the hash table, so a successful exit status is returned + + 10/25 + ----- +machines.h + - for Convex machines, also check for __convex__ and __convexc__ + being defined by cpp + + 10/27 + ----- +lib/glob/glob.c + - Posix systems should always use the `dirent' style of reading + directories, for portability + +lib/readline/readline.c + - restructured the maze of defines and include files for the + directory reading code to default to Posix-style if + _POSIX_VERSION is defined, regardless of whether the system is + BSD or System V + - in readline_internal, lastc should be initialized to -1, because + 0 can be a valid input character (some people use ^@ (NUL) as + the eof character, for instance, because it's easy to type) + - readline should bind eof_char for the termios and termio ttyio + systems + - make sure _POSIX_VDISABLE is defined for termio and termios + systems + - readline should check against _POSIX_VDISABLE rather than -1 to + decide whether a special character is disabled + - if VLNEXT is defined, termios systems should bind c_cc[VLNEXT] to + rl_quoted_insert + - if VWERASE is defined, termios systems should bind c_cc[VWERASE] + to rl_unix_word_rubout + - readline should always call readline_default_bindings each time, + so changes made by `stty' are obeyed. Move the call from + readline_initialize_everything to readline_initialize so any new + settings are recognized each time readline is called. This is + for erase, kill, literal-next, and word erase characters + +lib/readline/funmap.c + - added a funmap entry for rl_call_last_kbd_macro in default_funmap + (as "call-last-kbd-macro") + +execute_cmd.c + - when executing a ()-subshell command with redirections, + execute_command_internal performs the redirections associated with + the entire subshell command itself, but then forgets to dispose of + and clear command->redirects before calling itself recursively + +subst.c + - ${#-} and ${#?} are not illegal, and should expand to the lengths + of $- and $?, respectively + + 10/28 + ----- +variables.c + - fix from bfox: change bind_variable to call var_lookup rather + than find_variable, because find_variable will look in the + temporary environment under some circumstances + +subst.c + - ${#:} should be (and is now) an error + + 10/29 + ----- +lib/readline/readline.c + - readline_default_bindings is again called from + readline_initialize_everything, so it is only called once + + 10/30 + ----- +test.c + - make sure uid_t and gid_t are defined on non-Posix USG systems + (this may be overkill) + +machines.h + - Ardent has a non-functional vfprintf?? + +lib/malloc/gmalloc.c + - new Gnu malloc, written by Mike Haertel, snagged from gdb 4.2 + - define the code that tries to intuit getpagesize + +builtins/ulimit.def + - make sure all calls to getmaxvm are protected by HAVE_RESOURCE + +builtins/times.def + - protect the getrusage calls with #if defined (HAVE_RESOURCE) && + defined (RUSAGE_SELF) rather than some system specific + identifiers + +[end of work with version 1.10] diff --git a/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v7 b/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v7 new file mode 100644 index 000000000..be260f07f --- /dev/null +++ b/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v7 @@ -0,0 +1,671 @@ +[Beginning of work with version 1.11] + + 10/31 + ----- +Makefile + - changed instances of $(AWK) to $(GAWK) -- political correctness from + bfox + +builtins.h, builtins/help.def, builtins/mkbuiltins.c + - changed representation of long_doc from a single string to an + array of strings + +execute_cmd.c + - only call __setostype() if on isc386 and _POSIX_SOURCE is + defined + +general.c + - only define functions for index and rindex if index and rindex + are not already cpp defines + +jobs.c + - #undef some things that clash between and + on Posix suns + +machines.h + - make isc386 machines links with the shared C library explicitly + (-lc_s) + - new entry for a MagicStation (?) from bfox + +variables.c + - use a cpp define _CONST_HACK to determine whether the parameter to + getenv() is a char const * (yes for _STDC_, no otherwise) + +builtins/type.def + - make found_file local to the block that searches for executable + disk files + + 11/4 + ---- +execute_cmd.c + - make execute_function_or_builtin use unwind protects to protect + the `return catch' variables + +support/getcppsyms.c + - added definitions for M_UNIX, M_XENIX, and _AIX + + 11/5 + ---- +bashline.c + - fix a call to savestring in command_word_completion_function with + a post-incremented int parameter, since savestring is a macro that + evaluates its argument twice (builtin completion) + +lib/glob/fnmatch.c + - add `^' as a character that negates a character class ([]) + + 11/6 + ---- +subst.c + - add a new variable last_command_subst_pid to keep track of the + pid of the last child created for command substitution. Used + to determine whether or not command substitution has taken + place. + +execute_cmd.c + - made the exit status of a command that has only assignments and + redirections obey the Posix spec + +unwind_prot.c, trap.c + - make sure all sigset_t variables are initialized with sigemptyset + before use + +lib/glob/fnmatch.c + - fixed a couple of bugs with [] classes in fnmatch: not checking + whether or not we've hit the ']' and not incrementing the string + argument in the right place + + 11/7 + ---- +braces.c + - Make backquotes inhibit brace expansion -- defer it until the + subshell runs + - Ditto for $( ) + +subst.c + - since braces.c now calls unquoted_member and unquoted_substring, + they can no longer be static functions + +config.h + - two new configuration options: ALLOW_RIGID_POSIX_COMPLIANCE and + DISABLED_BUILTINS + +shell.c, jobs.c + - define and use top_level_signal_mask, restored on longjmps to + top_level by throw_to_top_level + +builtins/builtin.def + - use builtin_address to find the function (if so configured) so + that `builtin foo' still works after `enable -n foo' + +builtins/common.c + - have both find_shell_builtin, which never finds disabled builtins, + and builtin_address, which does + + 11/8 + ---- +general.c + - the getdtablesize emulation should ensure that _SC_OPEN_MAX is + defined on Posix systems before trying to use it in a call to + sysconf() + + + 11/10 + ----- +lib/glob/fnmatch.c + - fixes from Roland McGrath for some of the more egregious bugs + - naturally, Roland missed a few + +lib/readline/readline.c + - add missing calls to sigemptyset(), since Posix specifies that + all sigset_t variables be initialized before use using it + - only turn off ISTRIP and INPCK in the termio(s) code if the + character size is 8 bits ((otio.c_cflag & CSIZE) == CS8) + - Sequents running Dynix/ptx should include rather + that + +builtins/type.def + - change a call to printf to builtin_error when printing a + diagnostic that something is not found + +builtins/times.def + - changed file inclusion code to include and + if HAVE_RESOURCE is defined, then to include + if !HAVE_RESOURCE and RUSAGE_SELF is not defined. + This catches systems with deficient files + + 11/11 + ----- +lib/readline/readline.c + - Don't try to dereference funmap in rl_named_function() if it's + null (as it is before rl_initialize_funmap is called) + + 11/12 + ----- +lib/readline/readline.c + - backed out of change of 11/11 to rl_named_function + +bashline.c + - add a state variable bash_readline_initialized to keep track of + whether or not readline has been initialized with a call to + initialize_readline() + +builtins/bind.def + - if readline has not been initialized the first time this is + called, call initialize_readline + + 11/13 + ----- +execute_cmd.c + - execute_subshell_builtin_or_function would only let the output + of `jobs' be piped if pipe_in and pipe_out were both != NO_PIPE + (?). Obviously a typo. + +builtins/command.def + - add an unwind_protect to dispose of the new command created + by the call to make_bare_simple_command + +builtins/jobs.def + - add the `jobs -x command args' form from the System V.4 sh + All job specs in `args' are replaced with the appropriate + job's process group id and `command' is executed + +builtins/getopt.c + - if getopt() finds that optind > argc when it is called, it + sets optind = argc and returns EOF + +builtins/times.def + - backed out of 11/10 change. Some systems, most notably + HP/UX have all the correct includes and defines and simply + do not implement getrusage(). At all. + +subst.c + - if sv_optind finds that OPTIND has been unset or set to an + empty string, call getopts_reset (0). The Gnu getopt + resets its internal state when optind == 0. + - call getopts_reset(0) if OPTIND=1, because that's what the + Posix spec says to use to reset + + 11/14 + ----- +builtins/alias.def + - fixed a typo in the SHORT_DOC for the unalias builtin + +builtins/shift.def + - allowed the shift count to be 0 + + 11/15 + ----- +lib/readline/readline.c + - turn on 8 bit characters if NO_EIGHT_BIT_CHARACTERS is not + defined and the Posix termios code path is being taken + +[The following two entries describe what's needed for an initial +implementation of the vi mode `.' command] + +lib/readline/vi_mode.c + - new variables: + vi_last_command: last command that modified text in + the buffer + vi_last_repeat: the repeat count to vi_last_command + vi_last_arg_sign: arg sign for vi_last_repeat + vi_last_motion: the last motion qualifier for the + text modification commands that use one + vi_redoing: state variable, if 1 we're re-doing a + command + vi_textmod: list of commands that modify text + (initially "_*\\AaIiCcDdPpYyRrSsXx~") + + - new functions: + rl_vi_redo: an initial implementation of the vi mode + `.' command + rl_vi_set_last: initialize the state of the new variables + described above + rl_vi_textmod_command: return true if command passed is + a text modification command + - changed rl_vi_domove to save the movement command information in + vi_last_motion + - changed rl_vi_movement_mode to call rl_vi_set_last to initialize + the `last command' state + +lib/readline/readline.c + - changed rl_dispatch to save vi_last_command, vi_last_repeat, + and vi_last_arg_sign + - changed rl_newline to call vi_set_last + +lib/readline/readline.h + - new function rl_vi_redo + +lib/readline/vi_keymap.c + - bind rl_vi_redo to `.' + + 11/20 + ----- +posixstat.h + - make isc386 defines for S_IFDIR and S_IFMT be used if they + do not already appear, no matter whether or not gcc is being + used for the compile + +machines.h + - new entry for Omron Luna 88k running Mach 2.5 (nice machines) + +lib/readline/vi_mode.c + - fixed a bug with rl_vi_domove and the last word on the line. + If rl_point ended up > rl_end, it was being set to rl_end - 1 + rather than to rl_end. + +cpp-Makefile + - quote the values of RANLIB and AR passed to makes in + subdirectories + +shell.c + - instead of making all Xenix systems swap the second and third + arguments to setvbuf, make that behavior dependent on the + definition of REVERSED_SETVBUF_ARGS + + 11/21 + ----- +lib/readline/readline.c + - fixed an error in rl_forward that caused vi-mode to walk off + the end of the line after executing `l' in command mode on an + empty line + + 11/22 + ----- +support/getcppsyms.c + - added the `luna88k' define + + 11/24 + ----- +execute_cmd.c + - all calls to dup2 in do_redirection_internal should be checked + for errors and the redirection should fail if the dup2 fails + +shell.h, parse.y, execute_cmd.c, print_cmd.c, make_cmd.c + - replaced the single redirection operator `r_duplicating' with + r_duplicating_input and r_duplicating_output to avoid the + read 1<&7 getting printed as read 1>&7 problem: + foo() + { + exec 9&word +parse.y + - eliminated the old yacc production for >& word, meaning put stdout + and stderr into `word' + - added productions for [n]<&word and [n]>&word that use the new + redirection operators +execute_cmd.c + - the first thing done in do_redirection_internal is now a check for + r_duplicating_input_word and r_duplicating_output_word. If the + redirection is one of those two, `word' is expanded and a new + redirection is made +print_cmd.c + - new code to print the [n]<&word and [n]>&word redirections + (r_duplicating_input_word and r_duplicating_output_word) +make_cmd.c + - new code for make_redirection to handle r_duplicating_input_word + and r_duplicating_output_word + +documentation/bash.1 + - added documentation for the -x option to `jobs' + minor cleanups + and corrections + + 11/25 + ----- +cpp-Makefile + - added GCC_EXTRAS for gcc-specific compiler flags + +execute_cmd.c + - removed some unused functions (close_all_files) and variables + (file_exists_p) + +parse.y + - added new command-oriented-style history: all lines of a multiple + line command will be added to the same history line + - new variable current_command_line_count to keep track of the + number of lines in the current command. If > 1, a line is appended + to the current history line to implement command-oriented history + - new function bash_add_history + +shell.c + - added code to reset current_command_line_count to 0 before calling + parse_command and yyparse + +subst.c + - the command-oriented history is controlled by the setting of the + variable command_oriented_history + +builtins/reserved.def + - a new help topic: `variables', giving help on some common shell + variables + + 11/26 + ----- +lib/glob/glob.c + - if the filename portion of the pathname to be matched is null + (e.g. a*/), do not call glob_vector to attempt to match each + file in the expanded directories against the null string. + + 11/27 + ----- +lib/glob/glob.c + - force globbing of directory names even if the metacharacters + contained therein are protected by backslashes. The globbing + strips the quotes correctly + +shell.c + - make sure current_command_line_count is declared everywhere + it's used + +parse.y + - remove declaration of history_lines_this_session from + pre_process_line + - add extern declaration of history_lines_this_session to + bash_add_history + + 12/2 + ---- +trap.h + - removed inclusion of because most files include it + themselves, and this is dangerous on systems that do not protect + against multiple inclusion of header files + +trap.c + - include before "trap.h" since it was the only file + in the distribution not to do so + +shell.c + - Install the SIGINT sighandler the Posix way on machines with + _POSIX_VERSION defined + + 12/3 + ---- +dispose_cmd.c + - make sure dispose_redirects properly handles r_duplicating_input_word + and r_duplicating_output_word by freeing the `filename' + +execute_cmd.c + - fix do_redirection_internal to copy new_redirect->redirectee.filename + using alloca() so no memory has to be freed at function exit + + 12/4 + ---- +parse.y + - expand \n in PS1 or PS2 into \r\n only if line editing is enabled + +shell.c + - define top_level_mask if _POSIX_VERSION defined + +newversion.c + - made it write a definition of SCCSVERSION to version.h -- an SCCS + string so the `what' command will be useful + +version.c + - new variable `sccsversion' set to SCCSVERSION + + 12/5 + ---- +builtins/fc.def + - make fc_gethist check that the history list is non-null before + trying to access its members + + 12/6 + ---- +lib/readline/readline.c + - changed the ISTRIP code (again) to force bash to disable ISTRIP + only if the tty driver guarantees eight bits (cflag & CSIZE == CS8) + + 12/9 + ---- +lib/readline/readline.c + - tgetent returns 0 if it can't find the terminal name in /etc/termcap, + so we failed if it returns <= 0, not < 0. + + 12/11 + ----- +machines.h + - Sony machines running NEWS-OS 4.0 (V.4) should have strerror(), + so define HAVE_STRERROR + - Pyramids running BSD do not all have the vprintf family of functions, + so remove the definition of HAVE_VPRINTF + + 12/12 + ----- +parse.y + - make sure that shell_getc always checks that shell_input_line is + valid before trying to reference shell_input_line[0] + + 12/13 + ----- +mailcheck.c + - Since `dollar_underscore' saves the value of $_ in a local variable, + it's possible that bind_variable can free and reallocate the cell + for $_, leaving dollar_underscore pointing at freed storage. The + fix is to copy it into freshly-allocated memory. + - ensure that when saving and restoring dollar_underscore that we do + not try to call strlen on a null string + + 12/15 + ----- +general.c, execute_cmd.c + - moved the utility function `all_digits' from execute_cmd.c to + general.c + +builtins/kill.def + - remove use of sscanf, used calls to all_digits and atoi instead + +machines.h + - if not using gcc, need to make SYSDEP_LDFLAGS = -Xp for Posix + on isc386 + + 12/16 + ----- +machines.h + - isc386 has multiple groups + +execute_cmd.c + - add a QUIT to the while loop in find_user_command_in_path that + searches the path, so users can interrupt a lengthy path search + + 12/17 + ----- +builtins/alias.def + - added the Posix-specified -a option to unalias, made unalias obey + the getopt argument syntax guidelines + +builtins/jobs.def + - made `jobs' handle the -- option to signal the end of arguments + +flags.c + - Posix.2a has specified that the -b flag stand for asynchronous + notification, so move the definition of asynchronous_notification + here and add a new entry to the `flags' struct if JOB_CONTROL is + defined + +flags.h + - add an extern declaration of asynchronous_notification + +jobs.c + - change the definition of asynchronous_notification to extern, since + it's now declared in flags.c + +builtins/set.def + - change documentation strings to add -b option, note that + set -o notify is now the same as set -b + - change the code to make set -o notify the same as set -b + (list_long_opts(), take the special case out of set_minus_o_option) + + 12/19 + ----- +lib/readline/readline.c + - added support for $LINES, $COLUMNS. The variables are read after + the ioctl(TIOCGWINSZ) and before calls to tgetent + +builtins/fc.def + - made the fc output format correspond to that specified by Posix.2a + ("%d\t%s\n") + + 12/20 + ----- +execute_cmd.c + - user_command_matches did not properly handle a null $PATH element, + which should be the same as ".". Changed the code to mirror + find_user_command_in_path () + + + 12/23 + ----- +execute_cmd.c + - added a new function get_next_path_element, which calls + extract_colon_unit and interprets the result, translating + "" to "." + +builtins/cd.def + - added description of -l option to dirs short_doc + - fixed the bug that caused `dirs' to always print an extra + trailing space + +documentation/bash.1 + - added description of -l option to dirs + +parse.y + - added optional leading ( for case clause, as per Posix.2 + + 12/30 + ----- +lib/readline/vi_mode.c + - removed unused variable `added_blank' + +bashline.c + - added dynamic completion from bfox + +execute_cmd.c + - redirections must be performed in a child before execution of + the command is attempted or aborted (because it's not found + by a hash table or $PATH search), according to Posix.2 + +getcwd.c + - new file, from the Gnu C library, for systems that don't do + this right -- they use popen("/bin/pwd", "r") instead + + 12/31 + ----- +builtins/type.def + - the type builtin would not report a name as not found if any name + had previously been found because the flag variable used to report + this (found_something) was not reset each time through the loop. + Added a variable `found_any' to be global and reset found_something + to 0 each time through the loop + + 1/4 + --- +builtins/jobs.def + - make sure that the call to add_unwind_protect in + execute_list_with_replacements is made after the new command + struct is completely initialized + +support/mksysdefs + - look for /dev/fd, define HAVE_DEV_FD if present + +cpp-Makefile + - pass HAVE_DEV_FD through to make in SYSTEM_FLAGS + +shell.c, execute_cmd.c + - call unlink_fifo_list only if HAVE_DEV_FD is not defined and + PROCESS_SUBSTITUTION is defined + +subst.c + - new function make_dev_fd_filename to return /dev/fd/xx, where + xx corresponds to the parent end of the pipe + - all the named pipe utility functions should be #if !defined + (HAVE_DEV_FD) + - change process_subsitute to do the following on systems with /dev/fd: + 1. Make a pipe in the parent + 2. if (open_for_read_in_child) + parent_pipe_fd = fildes[1] + child_pipe_fd = fildes[0] + else + parent_pipe_fd = fildes[0] + child_pipe_fd = fildes[1] + 3. pathname = make_dev_fd_filename (parent_pipe_fd); + 4. fork + 5. In parent, close child_pipe_fd and return pathname + 6. In child, turn off job control, dup child_pipe_fd to + either fd 0 or 1 depending on OPEN_FOR_READ_IN_CHILD, + close parent_pipe_fd, parse and execute the string, + and exit + +shell.c + - added call to unlink_fifo_list in reader_loop so that all fifos + get closed, even after builtin commands are executed + + 1/6 + --- +machines.h, make_cmd.c, print_cmd.c, shell.c, cpp-Makefile + - HAVE_VPRINTF --> HAVE_VFPRINTF + +cpp-Makefile, machines.h, test.c + - HAVE_MULTIPLE_GROUPS --> HAVE_GETGROUPS + +cpp-Makefile, machines.h + - HAVE_SIGLIST --> HAVE_SYS_SIGLIST + +parse.y + - add if_command production + +builtins/echo.def + - validate all arguments before using them so that -nanything != -n + - document the -E option and its use + +builtins/umask.def + - allow other arguments to be used with -S + +subst.c + - make sure to close all files in the child created to run a + process substutition to avoid holding write file descriptors + to pipes that will cause the shell to hang + + 1/7 + --- +cpp-Makefile + - fixed a typo: SEARCHLIB -> SEARCH_LIB + +machines.h + - new description for Amiga 3000 running System V.4 + +shell.c + - default secondary prompt is now "> " + +builtins/bashgetopt.c + - more internal cleanups and bug fixes + +support/mksysdefs + - detect the amiga by the presence of /usr/amiga + + 1/9 + --- +general.c + - canonicalize_pathname should remove ./ only if it's at the + beginning of the pathname, or immediately preceded by a `/' + + 1/10 + ---- +documentation/bash.1 + - clean up the documentation for test -t, since according to + Posix, it always requires an argument + +general.c + - don't build index and rindex for DG machines + + +machines.h + - description for System V.4 on IBM 370 architecture + - fixed up DG/UX machine description diff --git a/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v8 b/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v8 new file mode 100644 index 000000000..2aa1437a3 --- /dev/null +++ b/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v8 @@ -0,0 +1,251 @@ +[ Work begins after network release of version 1.11 ] + + 1/11 + ---- +nojobs.c + - Posix systems now reap zombie children and retry a fork() once if + it fails + - Posix systems should use waitpid() rather than wait() wherever + possible + - Posix systems do not need to validate a pid before calling waitpid() + in wait_for_single_pid(); waitpid takes a pid argument + + 1/13 + ---- +execute_cmd.c + - get_next_path_element can return NULL, so the code that calls it + must take that possibility into account + +jobs.c + - there was an extra parameter in the select() call + +builtins/type.def + - successful_finds needed to be initialized to 0 + +machines.h + - fixed a typo (_D -> -D) in the DG/UX machine description + + 1/14 + ---- +execute_cmd.c + - fixed extract_colon_unit to return "" in the case of a trailing + colon in the path + +INSTALL + - note that on SCO Xenix 386 one must use cc -E rather than /lib/cpp + to process cpp-Makefile + +cpp-Makefile + - fixed the problem of a single quote in a makefile comment + +machines.h + - Xenix 386 machines need -DUSG in SYSDEP_CFLAGS + +lib/readline/readline.c + - changed the includes around so that the Xenix 386 support is + in the same section as the USGr3 code, and the Xenix 286 + support is in the same section as the plain USG code + +shell.c + - split the `int code = setjmp (top_level)' statement in + reader_loop into two statements -- some compilers don't like + it + +parse.y + - changed the overloaded `yy_input_dev' to a `union STREAM', + where a `union STREAM' is + + typedef union STREAM { + FILE *s_file; + char *s_string; + } STREAM; + + and changed the parameter to init_yy_io and all the functions + that call it to use a STREAM argument instead of casting back + and forth between a (char *) and a (FILE *) + +builtins/times.def + - If hpux or USGr4, #undef HAVE_RESOURCE, rather than try to fit + all the special cases onto a single line deciding whether or + not to include + + 1/15 + ---- +bashline.c + - changed the bindable name for the ksh-style ^O function from + operate_and_get_next to operate-and-get-next + +execute_cmd.c + - some systems (e.g SGI) allow the result of alloca to be assigned + only to a `simple' variable, so I introduced a dummy one instead + of assigning to redirectee->word directly + +shell.c + - fixed a typo: PENDANTIC -> PEDANTIC + +machines.h + - took -DREVERESED_SETVBUF_ARGS out of the entries for Xenix 386 + +cpp-Makefile + - added double quotes around the RHS of the assignment to + SYSTEM_NAME to avoid further cpp processing if the system name + happens to be a cpp define + +bashline.c + - added `search-forward', `search-backward' functions that perform + non-incremental history searches using the vi-mode code + + 1/16 + ---- +builtins/ulimit.def + - fixed a typo in a comment + - added parens around the object in an #if defined preprocessor + statement + +machines.h + - the Xenix 386 machine descriptions need to #undef HAVE_GETWD + +builtins/read.def + - Fixed read to treat backslash as an escape character unless + -r is given, as per Posix.2 + +lib/readline/readline.c + - Fixed up the maze of dire[cn]t includes and defines so that + they're correct for Xenix (finally) + +lib/glob/glob.c + - ditto. Now the defines/includes are correct for Xenix 386 + +execute_cmd.c + - a loop of the form + while : ; do echo -n 1; done + can run a machine using Gwyn's alloca() emulation out of memory + because alloca() keeps getting called at the same stack level + and never frees anything up. Added a call to alloca(0) after + the call to execute_simple_command in execute_command_internal + - added Karl Kleinpaste's workaround for the AFS file creation + bug, dependent on AFS_CREAT_BUG + +parse.y + - \s in a prompt string needs to decode to the shell basename, as + per the documentation, rather than the full shell name + + 1/17 + ---- +nojobs.c + - fixed a typo in one of the WAITPID calls, thanks to Bruce Evans + +[At this point, all of these fixes were sent along to bfox] + +support/getcppsyms.c + - now recognizes cpp symbol __hppa for use on HP precision + architecture machines + +machines.h + - M_MACHINE is now `hppa' for HP Precision Architecture machines, so + to make sure hpux is defined, it's now in SYSDEP_CFLAGS + - Make sure that the RS6000/AIXv3 description defines M_OS as AIX, + not "AIX". The quotes are added in cpp-Makefile + + 1/27 + ---- +parser.h + - new file, contains structures necessary to parse commands + +input.h + - new file, contains definitions and structures used to read input + +bashline.c + - removed the definitions for search-backward, search-forward + +cpp-Makefile + - removed the definition of DESTDIR; now passed down from Makefile + +error.c, error.h + - new files to isolate the error-handling functions + +command.h + - new file including structures used internally to represent + commands + +parse.y + - include input.h, parser.h + - changed all the code that deals with input streams to fit the + new framework defined in input.h + +make_cmd.c + - moved the error reporting code to error.c + - added cpp code to ensure that alloca is defined correctly + +shell.h + - removed the code that was moved to input.h, parser.h, command.h + +builtins/common.c + - moved a call to setjmp out of an if statement + - changed the input code to work with the new input framework + +builtins/getopt.c + -include config.h if compiling for the shell + +lib/readline/readline.c + - change representation of characters > 127 to octal + rather than M-c + - changed representation of characters < ' ' to ^X rather + than C-x + - fixed a memory leak in parser_if () by freeing `tname' + +machines.h + - removed MIPS_CFLAGS from the ultrix Decstation entry, since the + limit no longer needs increasing + +variables.c + - move the initialization of PWD before the environment is read, so + an exported version of PWD takes precedence + +readline.c, funmap.c, emacs_keymap.c + - removed support for rl_arrow_keys -- it should now be done by the + inputrc file + +documentation/bash.1 + - only non-job-control shells start background jobs ignoring SIGINT + and SIGQUIT + +builtins/umask.def + - don't print the octal representation of the umask if the symbolic + representation has already been displayed + - a bad option to umask should return EXECUTION_FAILURE, not -1 + +shell.c + - new function, init_signal_handler (sig), to initialize the SIG + signal hander, call it in main loop + +nojobs.c + - call init_signal_handler (SIGINT, sigint_sighandler) so the correct + thing happens on Posix systems + +general.c + - updated the comment above the fallback implemenation of killpg() + +machines.h + - machine entry for the Unix PC + - new variable HAVE_DIRENT + + 1/28 + ---- +machines.h + - SCO needs to #undef HAVE_GETCWD so that the getcwd() function + supplied with bash is used + +subst.c + - USG machines should include , others + - sub_append_number should use itos() rather than xmalloc and + sprintf + +builtins/ulimit.def + - changed the resource limit struct to one that has no explicit + size to account for systems with differing numbers of resource + limits + +lib/readline/readline.c + - there was an off-by-one error in the code that counts the number + of items to list when doing completion listing diff --git a/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v9 b/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v9 new file mode 100644 index 000000000..d1474fbff --- /dev/null +++ b/bash-20060316/CWRU/old-changelogs/CWRU.chlog.v9 @@ -0,0 +1,5062 @@ +[work begins on post-netwide-1.12 release.] + + 1/30 + ---- +machines.h, general.c, nojobs.c + - changes for AIX/RT 2.2.1 + +lib/readline/vi_mode.c + - fixed a bug with vi mode, `cw' and whitespace that removed the + last character of the previous word + +lib/readline/readline.c + - readline did not correctly save the value of last_readline_init_file + across things like `bind'. Now it does the following: + + last_readline_init_file initialized to NULL + readline_initialize_everything calls rl_read_init_file with + an explicit argument of ~/.inputrc + rl_read_init_file sets last_readline_init_file to + savestring(filename) so it saves a fresh copy + +getcwd.c + - new version from Roland McGrath, with changes for the bash build + environment + +execute_cmd.c, variables.c + - bash was not looking for $PATH in the temp environment when + looking up a command. Now, find_variable looks in the temp + environment if subshell_environment is set. This will be + set when bash is looking a command up in the path (it's set in + find_user_command_internal while looking up the path string to + pass to find_user_command_in_path) + + 1/31 + ---- +make_cmd.c + - removed useless call to alloca, replaced with a static array + definition + + 2/3 + --- +machines.h + - Cray machine description + + 2/4 + --- +builtins/getopt.[ch] + - upgraded to a more recent version from the Gnu C library + +jobs.c + - added a call to init_signal_handler to replace equivalent in-line + code in initialize_jobs + +trap.c + - new function: maybe_call_trap_handler (sig) calls a trap function + for signal SIG if one exists + +jobs.c + - bash now (effectively) ignores SIGINT while waiting for a job run + from a script. We don't want to die if a SIGINT is received while + running another process, only if that job dies due to SIGINT. This + lets interactive processes run from scripts that want to catch + SIGINT and handle it do so without disturbing the shell that's + interpreting the script. All other versions of sh behave this way. + + The implementation is fairly straightforward. In wait_for, the + parent shell sets the SIGINT handler to wait_sigint_handler, which + allows the wait builtin to be interrupted and sloughs off everything + else. flush_child controls the behavior when a `foreground' process + dies due to SIGINT: it calls a trap handler if one exists; + otherwise it calls either sigint_sighandler (interactive) or + termination_unwind_protect (non-interactive). It then resets the + SIGINT signal handler to what it was before wait_for changed it. + wait_for does reset the sighandler before returning if flush_child + does not, so the SIGINT does not stay ignored. + + There is a race condition between the time that make_child creates + a child and sets it to run and the time the parent calls wait_for. + This is handled by having old_sigint_handler, which holds the + value of the `real' SIGINT signal handler, be NULL except when the + shell is in wait_for, and only operate on the SIGINT handler state + if this variable is non-null. + + Should the stuff be unwind-protected? I don't think so; u-p gets + run on interrupts, and we're controlling the interrupt handler. + + 2/5 + --- +trap.c + - new function signal_is_trapped (sig) returns 1 if a trap handler + has been established for SIG + +shell.c + - have throw_to_top_level call longjmp(top_level, DISCARD) if the + shell is non-interactive and a SIGINT occurred and was trapped + +cpp-Makefile, machines.h + - instead of running `basename ...` to discover the name of the + alloca object file, use a new variable $ALLOCA_OBJECT. It's set + to alloca.o if we're using the C emulation, and to ALLOCA_OBJ, + which must be defined in the machines.h entry, for an + architecture defining ALLOCA_ASM + +cpp-Makefile + - BSD make of 4.3-tahoe and later already defines MACHINE and does + not allow it to be overridden, so replace it with Machine. + +endian.c + - added changes from Cray to configure endianness correctly on + machines with 8-byte longs + +parse.y + - added '&' to no_semi_successors in bash_add_history so bash will + not add a semicolon after it appears + + 2/6 + --- +subst.c + - since string_extract_verbatim was overloaded, added a new function + string_extract_single_quoted to call when extracting strings in + '' + +lib/readline/history.c + - changed call to string_extract_verbatim to a call to + string_extract_single_quoted + +lib/readline/vi_mode.c + - rl_vi_subst was not calling rl_end_undo_group properly (i.e. at all) + +execute_cmd.c + - On systems without job control, async commands (`&') have an + extra redirection added before calling execute_command_internal + that redirects /dev/null to standard input. This redirection + must be removed right after execute_command_internal returns, + because the loop functions call execute_command_internal multiple + times with the same command struct. If we keep tacking redirections + onto the front of it, eventually we'll run out of file descriptors + on a big enough loop. + +jobs.c + - some functions were not correctly blocking SIGCHLD while running: + delete_all_jobs, map_over_jobs, start_job when it calls + reset_current + + 2/7 + --- +print_cmd.c + - an extra space was being printed at the end of a redirection list. + This caused exporting of functions with embedded here-documents to + fail, since the end marker would not be matched + + 2/8 + --- +nojobs.c + - change reap_zombie_children to keep calling waitpid while it returns + something > 0 (a valid pid) + - add a call to reap_zombie_children if we get a valid pid after + waiting in wait_for + +variables.c + - include pwd.h after sys/types.h. It matters on some systems. + +shell.c + - added a function to encapsulate the differences between systems + in setting a file pointer to line-buffered: line_buffer_file + + 2/9 + --- +shell.c + - unbuffer stdin when it's not a tty and bash is reading a script + from stdin + + 2/10 + ---- + +machines.h, cpp-Makefile + - a new machine description variable HAVE_DIRENT, passed down to + makes in libraries + +support/mksysdefs + - check for the existance of /usr/include/dirent.h, define + HAVE_DIRENT_H if there + + 2/11 + ---- +machines.h + - add #define USE_TERMCAP_EMULATION to HP-UX machine description + - added #define HAVE_DIRENT to a number of entries + +jobs.h + - added missing definitions for WSTOPSIG, WTERMSIG, WEXITSTATUS + for Posix systems that do not have them and do not have the + `union wait' defined + +builtins/suspend.def, unwind_prot.c, longest_sig.c + - include before -- some systems require + it + +support/mksysdefs + - For HP machines running HPUX, SYSDEF is set to one of hpux8, hpux7, + hpux6, or hpux, corresponding to different releases of HP-UX. + - if `uname -m' returns something starting with XD88, the machine is + a Tektronix XD88 + + 2/12 + ---- +variables.c + - stop core dumping on startup if SHLVL is not set + +lib/glob/glob.c + - make sure we always recurse and glob the entire filename so the + quoting characters added in shell_glob_filename get removed + correctly + +jobs.c + - new function end_job_control to terminate stopped jobs and + give the terminal back to the original pgrp + - new function restart_job_control to re-initialize the job + control state + +builtins/exec.def + - call end_job_control before we try to execve the command so + we're back in the original process group for the new process + and restart_job_control if the shell_execve fails and we're + not exiting + +shell.c + - change the code that resets the pgrp just before exiting to + call end_job_control instead + +lib/readline/chardefs.h + - new define, MACRO_CHAR + +lib/readline/readline.c + - changed rl_generic bind to correctly handle binding keys > 128 + by using the appropriate meta keymap (map[ESC].function as a + keymap) + - changed rl_dispatch, rl_show_char, and rl_bind_key to use + UNMETA instead of substracting 128 and to use META_CHAR to + check for a character's `meta-ness' + + 2/13 + ---- +lib/readline/readline.c, lib/glob/glob.c + - define HAVE_DIRENT if it's not defined but HAVE_DIRENT_H is + +lib/readline/history.c + - instead of calling write(2) twice for each history line, build + a big buffer of all the history data to write, fill it, and + call write(2) once + +subst.c + - wrapped up the eight-bit changes by making the single-quoted + strings and double-quoted strings code in expand_word_internal + simply discard a word if it's "" or '' and that's not the + entire word. This preserves sh semantics. + +parse.y + - If process substitution is compiled into the shell, there was + a mistake by which <[ and >[ were treated the same as $[ + +lib/glob/glob.c, lib/readline/readline.c + - Reorganized the twisty maze of defines for HAVE_DIRENT + + 2/14 + ---- +posixstat.h + - removed lines consisting of only a single #. Some ANSI cpps + don't like lines like that + +execute_cmd.c + - added a call to QUIT between commands in cmd1 ; cmd2 sequence + +test.c + - removed redundant declaration of expr() in test_command() + + 2/16 + ---- +builtins/Makefile + - added dependencies on the header files in the main shell directory + +jobs.c, jobs.h, builtins/fg_bg.def, builtins/kill.def + - replaced the notified, foreground, and job_control members of the + job structure with a flags field and bits J_NOTIFIED, J_FOREGROUND, + and J_JOBCONTROL + +subst.c + - fixed a typo (result[0] == '\0') in EIGHT_BIT version of + dequote_string + +cpp-Makefile + - added dependencies for the builtin object files + +execute_cmd.c + - complete fix from 2/14 -- add QUIT calls to &&, ||, and `;' when + executing a command and ignoring the return value + +jobs.c + - if a job is suspended while running in a loop, break out of the + loop + +nojobs.c + - made the same wait_sigint_handler and wait_for changes as those + made to jobs.c + +shell.c + - moved the code that adds 128 to last_command_exit_value before + any SIGINT trap handler is run + +subst.c + - if a word is enclosed completely in "" or '', set the quoted + flag when the word is returned from expand_word_internal. This + keeps the globbing routines from being called + + 2/17 + ---- +shell.c + - use shell_name instead of (++argv[0]) when testing for a + restricted shell + + 2/18 + ---- +general.c + - redid the defines for index and rindex to define and use + HAVE_INDEX and HAVE_RINDEX, respectively + +machines.h + - added HAVE_DIRENT to the AIXRT machine description + +jobs.c + - define and use INVALID_SIGNAL_HANDLER as something old_sigint_handler + cannot be set to + + 2/19 + ---- + +config.h + - made restricted shell mode configurable, #define RESTRICTED_SHELL + +shell.c, flags.c, execute_cmd.c, builtins/cd.def + - add code to implement ksh/sh restricted shell mode + +shell.c + - new function maybe_make_restricted (name) which turns the shell + into a restricted shell if name == `rbash' + +lib/readline/readline.c + - fixed rl_key_sequence_length problem when meta-ized characters are + read (one too short). This left extra characters in macros when + end-kbd-macro was bound to a meta-ized character + +builtins/common.c + - added set_working_directory (name) as analog of + get_working_directory + +variables.h + - added `imported' variable attribute + + 2/20 + ---- +Makefile + - DESTDIR -> bindir + - aix-Makefile -> ansi-Makefile because an ANSI C compiler like that + in SunOS5 (hah!) need not accept /**/# as a directive + +bashline.c + - added code from bfox to do completion into brace expansions + - use BUILTIN_ENABLED flag + +builtins.h + - added a flags field to struct builtin to replace the `enabled' + structure member + +cpp-Makefile + - set SHELL=MAKE_SHELL if MAKE_SHELL is defined + - added support for the LD_HAS_NO_DASH_L definition from machines.h + - PROGRAM -> Program + - support for the new LD_HAS_NO_DASH_L machine defintion variable + +execute_cmd.c + - removed the subshell_environment variable + - find_user_command_internal now calls find_variable_internal + +general.c + - moved init_signal_handler here, changed name to set_signal_handler + +general.h + - added definition for set_signal_handler for non-Posix systems + +jobs.c + - now print `Done' when a background job exits with status 0 + +machines.h + - combined all of the Sun machine descriptions into one + - new descriptions for SunOS5, Alliant, Motorola Delta 68k + - completely redid the HPUX description, making M_MACHINE much more + specific rather than just `hpux' + +nojobs.c + - change all instances of signal() to set_signal_handler() + +shell.c + - removed definition of init_signal_handler + - changed more instances of signal to set_signal_handler + +subst.c + - monster reformat + +variables.c + - added a function find_variable_internal that can be explictly told + to search the temporary environment, changed find_variable to call + it + - changed all variables and functions from the initial shell + environment to have the `imported' attribute + - made set_func_auto_export return the pointer to the function struct + +builtins/Makefile + - ar clq --> ar cq + +builtins/cd.def + - `pushd_silent' is gone + +builtins/common.c + - there is no more `enabled' member of a builtin struct; + test with BUILTIN_ENABLED instead + +builtins/enable.def, builtins/help.def + - use BUILTIN_ENABLED bitmask + +builtins/mkbuiltins.c + - initialize all builtins to be BUILTIN_ENABLED | STATIC_BUILTIN + +lib/glob/Makefile + - ar clq -> ar cq + +lib/glob/glob.c + - added another shell interruption point + - reorganized the twisty maze of dirent defines to use HAVE_DIRENT_H + +lib/readline/readline.c, lib/readline/funmap.c + - put rl_arrow_keys back in + +lib/readline/Makefile + - ar clq -> ar cq + +lib/readline/readline.c + - reorganized the twisty maze of dirent defines to use HAVE_DIRENT_H + - made the search string for i-searches dynamically allocated and + expandable rather than using alloca + - turned on USE_XON_XOFF again + - RL_DEFAULT_INPUT_FILE -> DEFAULT_INPUTRC + +support/cppmagic + - added `legal' to the list of unknown flags + +support/getcppsyms + - now recognizes _M88KBCS_TARGET + +support/mksysdefs + - code to distinguish SunOS5 from SunOS4 + - aix-Makefile -> ansi-Makefile + +lib/readline/vi_mode.c + - after completing with `*' or `\', Posix.2a says to go into + insertion mode + - for c[wW], don't move back any farther than we started to + emulate c[eE] -- Posix.2 says the cursor position should not + change + +variables.c + - if we get PWD from the environment, and it's the same directory + as `.' (calling same_file) set the_current_working_directory + to that value + +builtins.h + - added a #define for SPECIAL_BUILTIN + +mksysdefs + - Xenix systems now have one of XENIX_22, XENIX_23, or XENIX_32 + defined based on the OS release level + - test for /dev/fd being a directory and /dev/fd/0 being readable + to decide whether or not we have the /dev/fd way of naming open + files + + 2/24 + ---- +builtins/common.c + - set_working_directory is now a void + +general.c + - new implementation of canonicalize_pathname from bfox + (+ bug fixes, of course) + +bashline.c + - make bash_symbolic_link_hook call canonicalize_pathname + +variables.c + - set_func_auto_export no longer returns a SHELL_VAR * + +lib/readline/readine.c + - added code to determine whether or not the terminal has a + meta key and to use it while editing if one is available + +subst.c + - minor bug fix to remove_quoted_escapes (logic bomb :-) + + 2/25 + ---- +machines.h + - cleaned up the hpux section. Cannot define M_OS as HPUX_X, + because HPUX_X is already defined as expanding to nothing; + this results in a blank M_OS + + - attempted to rationalize Xenix support. Depending on the + XENIX_nn define provided by support/mksysdefs, configure in + -DREVERSED_SETVBUF_ARGS, -xenix, -lx, -ldir, and HAVE_DIRENT + + Xenix 2.2: -DREVERSED_SETVBUF_ARGS + cc -lx + + Xenix 2.3: HAVE_DIRENT + cc -ldir + + Xenix 3.2: HAVE_DIRENT + cc -xenix -ldir + + 2/26 + ---- +builtins/source.def + - POSIX_PENDANTIC -> POSIX_PEDANTIC + + 2/27 + ---- +support/getcppsyms.c + - consolidated HP definitions to be of the form + + #if defined (__hp9000s300) || defined (hp9000s300) + printf (" -Dhp9000s300") + #endif /* __hp9000s300 || hp9000s300 */ + +machines.h + - changed the way the hp9000s300 tests for hp9000s200 being defined + +support/mksysdefs + - changed the XENIX_nn defines a little bit + +input.c + - new input buffering package -- like stdio but allows syncing with + the underlying file descriptor when creating child processes, and + provides a fd-stream mapping. + +input.h, shell.c, jobs.c + - changes for the input buffering package, using default_buffered_input + in place of default_input + +general.c + - fix canonicalize_pathname to keep from running off the end of the + result string (check result[i] before assigning start = i++) + +jobs.c + - change some calls to signal to call set_signal_handler instead + + 2/29 + ---- +shell.c + - only initialize default_buffered_input to the input file + descriptor if the shell is not interactive + +builtins/getopt.c + - cast the arguments properly in calls to my_bcopy + +execute_cmd.c + - added code to do_redirection_internal to change buffered streams + if one of the file descriptors corresponding to a buffered input + stream is modified. This lets the shell do proper buffering if + the file descriptor from which the shell is reading input is + modified by a redirection (e.g., exec 0b_size == 1, so that no special- + case code is needed when reads are done. + +input.h + - the member of the BASH_INPUT union in effect if it describes a + buffered stream is now a file descriptor + +jobs.c + - SCO 3.2.4 has fixed the sigsuspend() bug, so don't execute the + hack workaround if SCOv4 is defined + + 3/1 + --- +builtins/common.c + - made shell_builtin_compare perform some tests itself before + calling strcmp to cut down the number of strcmp calls + - did the same thing for builtin_address_internal + +parse.y + - removed calls to strcmp from read_token, just test if token[0] == } + and !token[1] + - only call clearerr if bash_input.type == st_stream in shell_getc + - removed a call to strcpy from shell_getc that only added a newline; + changed it to two assignment statements + - used token_index instead of a call to strlen at the end of + read_token where the word is being constructed and returned + +unwind_prot.c + - changed a strcmp to a STREQ in unwind_frame_run_internal + +variables.c + - removed some dead code that had been #if'd out + - added a variable to avoid a call to strlen in + initialize_shell_variables + - change a call to strncmp to a STREQN in initialize_shell_variables + - changed strcmp to STREQ in non_unsettable + + 3/2 + --- +jobs.c + - rearranged the code that calls flush_child (0) for SCO so it is + easier to do something like SCO && !SCOv4 + - changed flush_child so that the loop is performed in a blocking + fashion only if SCO && !SCOv4 + + 3/3 + --- +signames.c + - new standalone program to create a signames.h file that contains + the initialization code for the signal_names array + +trap.h + - removed the signal_names array initialization code + - include "signames.h" + +cpp-Makefile + - make sure signames.aux builds signames.h correctly + +input.c + - changed fd_is_seekable and bufstream_getc into macros + +mksysdefs + - changes to define SCOv4 if uname returns the right info + +machines.h + - changes to define BROKEN_SIGSUSPEND and NO_DEV_TTY_JOB_CONTROL + for various SCO systems + +jobs.c + - check for BROKEN_SIGSUSPEND and NO_DEV_TTY_JOB_CONTROL instead + of using SCO + + 3/4 + --- +general.c + - make set_signal_handler return the old signal handler again + +shell.c + - set SIGINT handler to sigint_sighandler for non-interactive shells + - remove SIGQUIT from list of terminating signals + + 3/5 + --- +builtins/trap.def + - added special SIGINT handling for the case of reverting a signal + handler to the default + +shell.c + - added SIGINT back to the list of terminating signals for + non-interactive shells + +variables.c + - initialize mail variables in initialize_shell_variables only if + interactive_shell is true + - only check for command_oriented_history if interactive shell + - only initialize the history variables if history expansion is + being performed (remember_on_history == 1) + - only make PS1 and PS2 non-unsettable if the shell is interactive + + 3/6 + --- +variables.c + - set up a new temporary environment, FUNCTION_ENV, which is the + temporary environment provided to a function + - make find_tempenv_variable search both temporary_env and + function_env, searching function_env if variable_context > 0 + - change maybe_make_export_env to add variables from function_env + to the environment + - new function dispose_function_env to deallocate the temporary + function environment and cause a new export_env to be made + - added code to qsort_string_compare to compare the first + characters of the strings passed before calling strcmp + +general.c + - new function copy_array (char **array) returns a newly-allocated + copy of ARRAY + +execute_cmd.c + - added code to execute_builtin_or_function that initializes the + temporary function environment and takes care of disposing of + it on normal or abnormal exit + - dispose of temporary environment after we initialize the function + environment + - added same code to execute_subshell_builtin_or_function + - since the trap code now restores the SIGCHLD handler to the + original, any time make_child is called and the shell needs to + run in the child process, set_sigchld_handler should be called + to reinstall the proper SIGCHLD handler + +jobs.c + - new function set_sigchld_handler to reinstall flush_child as the + SIGCHLD signal handler + + 3/9 + --- +bashline.c + - swapped code around to avoid calling savestring (this_fignore) + when this_fignore is null + + 3/10 + ---- +jobs.c + - make sure the code in flush_child that calls the SIGCHLD trap + handler saves last_made_pid and the_pipeline using unwind-protects + +lib/readline/readline.c + - make sure the code that uses VLNEXT is protected by #ifdef + TERMIOS_TTY_DRIVER + +shell.c + - add a `beenhere' flag to avoid executing $ENV more than once + +parse.y + - added a new token ASSIGNMENT_WORD + - made read_token return ASSIGNMENT_WORD if in a simple command + position, token contains `=', the `=' is not the first character, + and the characters before `=' are a legal identifier (as Posix.2 + specifies) + - a simple_command_element can now also be an ASSIGNMENT_WORD + - alias expansion is attempted if the last token was an + ASSIGNMENT_WORD, as Posix.2a specifies + + 3/11 + ---- +execute_cmd.c + - moved the code that checks command words for `/' down into + execute_disk_command, and made it check only the first command + word, like sh and ksh + - vfree() is no longer static, so other code that needs to add + unwind-protects that use free can use it + +trap.c + - added a function set_sigchld_trap (command) to set the SIGCHLD + trap handler to `command', because unwind-protects cannot take + two arguments + +jobs.c + - changed the code in flush_child to set up and use and unwind-protect + frame to protect the things it needs to while running the SIGCHLD + trap commands + + 3/12 + ---- +nojobs.c + - added the BUFFERED_INPUT code to make_child + +subst.c + - folded the test and increment of the string pointer into + string_extract_double_quoted and string_extract_single_quoted + - made string_extract_verbatim and string_extract static + +lib/readline/history.c + - changed code that calls string_extract_single_quoted to not + increment the string pointer after the call + +variables.c + - added code to qsort_var_comp to compare the first character of + the variable names before calling strcmp + + 3/13 + ---- +parse.y + - include string.h or strings.h + +lib/readline/readline.c, lib/glob/glob.c + - removed the code that defined HAVE_DIRENT_H if _POSIX_VERSION + was defined -- it breaks on apollos, and is a bad idea + anyway + +input.c + - make sure close_buffered_fd closes the fd, whether or not it + was a buffered stream + + 3/16 + ---- +machines.h + - added a #define LD_HAS_NO_DASH_L to the Sequent Dynix entries + +trap.c + - made trap_list[SIGINT] == IMPOSSIBLE_TRAP_HANDLER while running + the interrupt trap, so we can tell if the trap handler sets + another trap and not restore the original handler if so + + 3/17 + ---- +trap.c + - a new function set_sigint_handler, which subshells doing `shellsy' + things like command substitution and ( cmd ) call to make sure + they handle interrupts right + +execute_cmd.c, subst.c + - added calls to set_sigint_handler in the appropriate spots + + 3/18 + ---- +hash.c + - replaced the old hash function with the one from Gnu cpp, which has + a much better distribution + +jobs.c + - make end_job_control call setpgid to reset the pgrp to the original + only if original_pgrp >= 0 + +builtins/exec.c + - remove the calls to restore_default_signal; restore_original_signals + now does all the necessary work + + 3/19 + ---- +jobs.c, nojobs.c + - make sure that make_child resets default_buffered_input to -1 + after closing it with close_buffered_fd + + 3/23 + ---- +lib/glob/tilde.c + - had an extern declaration for malloc rather than xmalloc + +general.h + - added #define for REVERSE_LIST, a macro which calls reverse_list + on a list only if the pointer is valid and there is more than one + element + +parse.y + - removed calls to legal_assignment in read_token; assignment() + already does those checks + +general.c + - reformatted reverse_list + +copy_cmd.c + - changed calls to reverse_list in copy_word_list and copy_redirects + to calls to REVERSE_LIST + +subst.c + - changed a call to reverse_list in expand_word_internal to one to + REVERSE_LIST + + 3/24 + ---- +builtins/common.c + - replaced a call to sscanf with code to skip leading whitespace and + calls to all_digits and atoi + +mailcheck.c + - did the same for a call to sscanf in time_to_check_mail + + 3/26 + ---- +variables.c + - made find_variable_internal call find_tempenv_variable only if + temporary_env or function_env exists +[gprof.int.4] + +alias.c, alias.h + - rewrote the alias code so that it now uses a hash table instead + of looking things up in a linear list + +subst.c + - removed the inclusion of alias.h + +parse.y + - added inclusion of alias.h + +cpp-Makefile + - removed alias.h from subst.o's dependencies + - added alias.h to y.tab.o's dependencies + +bashline.c, builtins/alias.def + - rewrote code that knew about the internal alias data structure + to use an array of alias structures to search, match, and print + + 3/27 + ---- +test.c + - group_member() needs to check against gid and egid regardless + of whether or not the system has getgroups(2); Posix.1 does not + require that the primary group id show up in the group list, + and some systems do not put it there + + 3/30 + ---- +parse.y + - add `|' to the list of tokens that should not have a semicolon + following them when adding a line to the history when command- + oriented history is active + +lib/readline/readline.c + - fixed up the control character display by making the code print + c ^ 0x40 + +support/cppmagic + - add support for recognizing the s5r4 c pre-processor, + /usr/ccs/lib/cpp + +lib/readline/vi_mode.c + - made rl_vi_delete_to pay attention to whether or not we're redoing, + and to use the last motion key if we are + - made rl_vi_char_search use the last char searched for if we're + redoing + + 3/31 + ---- +parse.y + - removed the check for non-interactive-ness when doing shell + comments + + 4/1 + --- +lib/readline/readline.c + - completion with tilde expansion needs to have any `/' present at + the end of the user's directory name re-inserted manually, because + pathname canonicalization strips any trailing `/', before tacking + on the expanded filename + +subst.c + - fixed a bug in dequote_string that caused reading beyond the end + of the string if the last character in the string was an (unquoted) + CTLESC + - made list_string obey the setting of `quoted' and not do the + initial strip of whitespace from the beginning and end of the + word if it was set + - expand_word_internal calls list_string with quoting == 1 if splitting + a word after expanding "$@" + +error.c + - new function itrace for interactive traces + +subst.c + - command_substitute should give the terminal back to pipeline_pgrp + only if the shell is interactive + +execute_cmd.c + - execute_disk_command should turn off interactive while performing + redirections for an asynchronous command. The problem was a race + condition with command_subst. A command like + date > `hostname` & + + would leave the subshell begun to run date and the primary shell + fighting over the terminal. After the subshell did the command + substitution, it wanted to give the terminal back to pipeline_pgrp, + which was its own pid. Since it was in the background, though, + that was wrong, and ended up taking the terminal away from the + primary (interactive) shell, which thought it had the thing. + +lib/readline/readline.c + - if SYSTEM_CALL_RESTART is not defined, declare c as an integer + + 4/3 + --- +bashline.c + - put code into command_word_completion_func to skip all but pathname + completion checks if the hint given is an absolute pathname + - fix strncmp of basename against hint text (??); this always failed + unless there was no pathname given + + 4/7 + --- +bashline.c + - fixed the cases where the simple `last character is a command + separator' test fails for distinguishing between program name + completion and filename completion: the tokens >&, >|, and <&. + - corrected fix of 4/3 to handle command word completion with and + without leading paths + + 4/8 + --- +lib/readline/readline.c + - break the declaration and initialization of a variable with a call + to setjmp into a declaration and separate assignment statement (for + Cray) + + 4/10 + ---- +subst.c + - A word that uses both "" and '' to do quoting will not be marked + as fully quoted by expand_word_internal. Wrote a + fully_quoted_word () predicate function to solve that. + - Quoted patterns with globbing characters are sent to the + globbing functions because glob_pattern_p doesn't understand + shell quoting. Wrote a new function unquoted_glob_pattern_p, + to fix that. + + 4/13 + ---- +shell.c + - make sure default_input is valid and being used for an interactive + shell started without line editing + + 4/15 + ---- +builtins/common.c + - redid part of the new get_numeric_argument code to avoid a call to + atoi and just do everything ourselves + +variables.c + - only call set_if_not on PS1 and PS2 in initialize_shell_variables + if the shell is not interactive + - check the variable returned by looking up PWD to make sure it's + non-null before trying to use it in initialize_shell_variables + +jobs.c + - add a descriptive tag to the call to get_working_directory in + job_working_directory + + 4/17 + ---- +test.c + - fixed a typo in group_member: gid -> pgid in assignment statement + - in the normal Sun compilation environment, getgroups returns an + array of ints, not gid_ts. getgid and getegid also return ints. + stat structures contain a gid_t, though. + + Need to reorder the includes so that stat.h is included first, then + uid_t and gid_t are redefined to int, then the rest of the files + are included. + + Also need to cast the values from a stat structure to gid_t and + uid_t before comparing them to the results of getgid and getuid + when implementing -O and -G + + 4/21 + ---- +lib/readline/readline.c + - added code to rl_getc to handle EWOULDBLOCK/EAGAIN and turning off + no-delay mode + + 4/22 + ---- + +builtins/cd.def + - made change_to_directory canonicalize the pathname before attempting + to chdir(2) if follow_symbolic_links is set + + 4/23 + ---- +builtins/type.def + - made type handle absolute program names by just echoing the name + +builtins/alias.def + - made single_quote correctly handle single quotes in aliases + + 4/28 + ---- +trap.c + - made ignore_sig and restore_default_signal check that the value + of the original signal handler (in original_signals) was valid + before trying to use it. Bug noticed with `trap "" 1 2 3' as + first line in script. + + 4/29 + ---- +lib/readline/readline.c + - made rl_signal_handler only unblock the signal it just received + on BSD and Posix systems + + 5/5 + --- +builtins/type.def + - don't look up the function with find_function until we actually + need the info + +execute_cmd.c + - in do_redirection_internal, don't do unnecessary work. For instance, + >&1 ends up duplicating fd 1 as itself (then adding a close for it, + which is a bug) + + 5/8 + --- +general.h + - don't attempt to declare index and rindex if `index' is defined + (with #define) + +lib/readline/vi_mode.c + - fixed the `c' command so that cl and c are equivalent -- + formerly the c changed two characters instead of one. + The same fix was made to rl_vi_change_to, rl_vi_delete_to, and + rl_vi_yank_to + +parse.y + - bash_add_history did not correctly handle lines that ended with + an escaped newline. It would insert semicolons in the locations + where the line breaks occurred. + + 5/12 + ---- +documentation/bash.1 + - removed references to pushd_silent + - added setion on process substitution + +subst.c + - fixed a bug in expand_word_internal that caused $xxx"" to expand + to nothing when `xxx' was unset. The code now explicitly turns + a partially quoted string that expands to nothing (istring[0] == 0) + into a QUOTED_NULL (istring[0] = CTLNUL) before returning the + word list. + + 5/15 + ---- +documentation/bash.1 + - added a missing .PD in the builtins section after the line + summarizing `:' + - added text describing the effect of additional arguments to the + `.' command + +subst.c, general.c, jobs.c, nojobs.c, error.c, getcwd.c + - only declare errno as `extern int' if it's not #defined + +builtins/{bind,exec,fc,kill,source}.def, lib/readline/{readline,history}.c + - ditto with errno + +lib/glob/fnmatch.c + - ditto with errno + + 5/17 + ---- +execute_cmd.c + - shells compiled with job control active should perform the implicit + ` before defining set_signal_handler + (on Posix systems) + +builtins/command.def + - change HPUX_7 to hpux_7 + + 5/27 + ---- +builtins/times.def + - added USGr3 to the list of systems that should have HAVE_RESOURCE + undefined even though exists + + 5/28 + ---- +machines.h + - added a description for 386/486 boxes running BSDI BSD/386 + +support/mksysdefs + - looks for and writes a define to sysdefs.h if it's + found + +maxpath.h + - rewritten -- now includes limits.h if HAVE_LIMITS_H is defined, + then tries to define MAXPATHLEN as PATH_MAX + + 5/29 + ---- +lib/readline/history.c + - added definition for rl_string_extract_single_quoted so the + code inhibiting history expansion inside quotes does not depend + on the shell + - change to use rl_string_extract_single_quoted + - removed code that would have inhibited history expansion in + double-quoted strings + +subst.c + - make string_extract_{single,double}_quoted static again + + 6/1 + --- +trap.c + - systems with _POSIX_VERSION defined need not reset the signal handler + inside trap_handler + - set_signal should use set_signal_handler() to install the signal + handler rather than signal() + - initialize_traps needs to use set_signal_handler for SIGINT and + SIGQUIT rather than signal() + - restore_default_signal needs to use set_signal_handler + +parse.y + - the readline interface code needs to use set_signal_handler to + install the SIGINT handler + +lib/readline/readline.c + - new function rl_set_sighandler, which is the readline analogue of + the bash set_signal_handler + - rl_set_signals and rl_clear_signals need to use rl_set_sighandler + for SIGINT and SIGALRM + + 6/2 + --- +signames.c + - fixed a typo (signame_names -> signal_names) + + 6/3 + --- +subst.c, general.c + - AIX machines need to use sysv_getc rather than getc when reading + from the command substitution pipe -- read(2) is not restarted + automatically when interrupted by a signal and returns EINTR + + 6/5 + --- +documentation/bash.1 + - removed documentation of M-C-j command in emacs editing mode + - added description of M-{ (complete-into-braces) + - added description of M-! and C-x ! command completion + - added description of M-TAB dynamic history completion + +lib/readline/search.c + - new file containing code to perform non-incremental history + searches. Functions to call are rl_noninc_forward_search + and rl_noninc_backward_search + +lib/readline/emacs_keymap.c + - bound M-^R to non-incremental-search-backward, M-^S to + non-incremental-search-forward + +lib/readline/readline.h + - extern defintions for rl_noninc_{forward,backward}_search + +lib/readline/funmap.c + - added names `non-incremental-forward-search-history' and + `non-incremental-reverse-search-history' + +lib/readline/vi_mode.c + - rl_vi_yank_arg should put readline into insertion mode when + it is done + +lib/readline/vi_keymap.c + - ^I should just insert when in vi insertion mode, rather than + attempt completion + + 6/6 + --- + +lib/readline/funmap.c + - removed the `vi-dosearch' bindable string, since rl_vi_dosearch + is really a private function for vi_mode.c. It does not fit + the calling conventions of the bindable readline functions + (and I've since removed it) + +lib/readline/readline.h + - removed the extern definition for rl_vi_dosearch + +lib/readline/search.c + - added new functions rl_noninc_forward_search_again and + rl_noninc_backward_search_again to search for the last saved + search string from the current `noninc' history position + +lib/readline/vi_mode.c + - removed the vi history search code and changed rl_vi_search + and rl_vi_search_again to call the non-incremental search code + from search.c + + 6/8 + --- + +[changes from bfox version dated 5/10] + +bashline.c + - changed the conditional clause that decides whether a token is + in a command position for command name completion to be a little + simpler + +bracecomp.c + - new version from bfox + +config.h + - moved BUFFERED_INPUT define here + +flags.c + - new flag for interactive comments + - reformatted find_flag + +flags.h + - added interactive_comments and an extern declaration of restricted + +machines.h + - new cray definition from bfox + +maxpath.h + - don't include limits.h if BUILDING_MAKEFILE is defined + +shell.c + - moved the check for restricted to immediately after the sourcing + or .profile + +test.c + - now includes shell.h in the initial block of includes + +trap.c + - new function get_original_signal to take care of the bookkeeping + of correctly setting up original_signals[sig] + +trap.h + - signal_decode -> decode_signal + +builtins/exec.def + - adjusted the help text to make it clear that only non-interactive + shells check the no_exit_on_failed_exec variable and exit if the + execve fails + +builtins/set.def + - added description and code to implement set -o interactive_comments + +lib/glob/glob.c + - if PAT is empty when glob_vector is called, skip the loop and + return one empty filename. This is how to make echo */ echo + only directory names + +lib/readline/parens.c + - new file from bfox implementing parenthesis matching for readline + +lib/readline/emacs_keymap.c + - if PAREN_MATCHING is defined, perform `show-matching' on `)', `}', + and `]' + +lib/readline/history.c + - add `$' to the list of separating characters in history_tokenize + so that two-character `$' tokens ($$, $!, $() are parsed correctly + +lib/readline/readline.c + - Make an argument of 1 to rl_rubout and rl_delete work the same + as if any other argument had been given by saving the text on + the kill ring + - in rl_getc, check that the value returned from read == sizeof + unsigned char + +lib/readline/readline.h + - added declaration of rl_event_hook, which is the address of a + function to call periodically while readline is awaiting + character input + +support/cppmagic + - new implementation from bfox, now returns a full cpp specification, + complete with system dependent flags + +support/mksysdefs + - added a variable MAKE_ANSI which, if set to true, causes the + ansi Makefile to be generated + - added code to recognize various types of cray/unicos machines + +[end of fixes from bfox] + +getcwd.c + - integrated changes that allow getcwd to handle paths longer + than PATH_MAX by shifting to using a dynamically-allocated + buffer + +builtins/set.def + - make the check for emacs or vi check to make sure the shell is + interactive + + 6/10 + ---- +builtins/common.c + - the dollar_arg_stack was never being reallocated in push_dollar_vars + because of a stray `if (!dollar_arg_stack)' before the realloc call + + 6/12 + ---- +cpp-Makefile + - added some missing $(RM) $@ in explicit targets for objects (the + ones that don't go through the default rules) as well as the + targets for the auxiliary programs + +subst.c + - redid the way bash handles assignment statements on command lines + to fix two bugs: + + 1) variable assignments are not supposed to affect expansion + performed on the same line, if a command is to be run + 2) if the words left after removing the variable and environment + assignments don't expand to a command word, the assignments + should affect the shell's environment + + new function: separate_out_assignments + removes variable assignments that precede other words and puts + them on VARLIST + removes environment assignments in the rest of the words, if + set -k is in effect, and puts them on ENVLIST + + just before expand_words_internal returns, it checks varlist and + envlist (if it is doing expansion) and performs the assignments, if + any. If it's returning a null list, these assignments affect the + shell's environment + + 6/13 + ---- +subst.c + - eliminated ENVLIST; VARLIST can serve for both variable and + environment assignments + + - sped up expand_words_internal's section for brace expansion by + eliminating unnecessary copies -- original word is used unless brace + expansion occurred, in which case the original word is linked to + a list of words to dispose when brace expansion is completed + + - sped up the word expansions section of expand_words_internal by + (possibly) eliminating a call to reverse_list on the results of + word expansion and splitting on $IFS, because the most common + case will expand to only a single word + - `expanded' needs to be freed only if expansion and word splitting + took place, no moving the call to dispose_words up after the call + to word_list_split means that the common case no longer needs to + copy the list + + - sped up globbing by eliminating copying as was done for brace + expansion -- keeping a list of `disposable' words and using the + original list contents if expansion failed or was not performed + - in the case that we're not globbing a word because it has no + unquoted globbing characters, eliminated the copy and creation of + a brand new list + - added a define GLOB_FAILED that handles the cases of using and + not using the GNU libc Posix.2 globbing library + - moved the code that dequotes the original word so it's executed + only if the glob fails + - wrapped the code that performs globbing inside an if (new_list) + clause + - call REVERSE_LIST only if we're actually doing globbing; otherwise + dequote the list and go on to performing assignments + + 6/15 + ---- +lib/glob/glob.c + - if the directory portion of a pathname to be globbed contains + quoted globbing characters, the quotes (backslashes) need to be + removed before the code tries to open and read that directory + + 6/17 + ---- +execute_cmd.c + - index -> indx in extract_colon_unit + +nojobs.c + - make wait_for_single_pid return the status of the pid it's waited + for, instead of throwing it away + - added a simple pid-status array to avoid multiple calls to + wait_for and calling wait on dead processes. make_child adds + pids to this array, and the status of a pid is updated when + it's returned from wait(2) or waitpid(2) + - removed the checks for whether or not the pid is valid (using + kill(2)) in favor of using the information in the pid_list + +parse.y + - call cleanup_dead_jobs on non-job-control systems to clean up the + pid_list + + 6/18 + ---- +subst.c + - include config.h before trying to include string.h or strings.h + so USG is properly defined + + 6/19 + ---- +support/mksysdefs + - look for /usr/include/string.h and define HAVE_STRING_H if + found. This is the file mandated by ANSI C. + +cpp-Makefile + - look for the HAVE_STRING_H definition from sysdefs.h and define + it as part of SYSTEM_FLAGS if found + - added the HAVE_STRING_H to LIBRARY_CFLAGS, so readline can + decide what to include + +general.c, parse.y, subst.c + - use the HAVE_STRING_H define in deciding which flavor of the + include file to use + +builtins/common.c + - include strings.h or string.h, depending on the definition of + HAVE_STRING_H + - added extern declaration of rindex and index at file scope + - removed extern declaration of rindex in find_hashed_filename + +lib/readline/rldefs.h + - removed the messy #ifdef clauses and such from readline.c and + moved them to this new file + - added a section on string functions (string.h vs. strings.h, + whether or not index and rindex need to be defined) + +lib/readline/readline.c + - removed the messy #ifdef clauses that attempt to parameterize + things and define constants on a system-specific basis + - removed the definition of the unused variable xoff_state + +flags.c + - corrected a typo in the comment describing jobs_m_flag + +jobs.c + - new function, current_working_directory (), which returns the + cwd without calling malloc to allocate memory, even indirectly. + This can safely be called from a signal handler, like when + flush_child calls notify_of_job_status if async notification is on + - changed call to job_working_directory in pretty_print_job to call + current_working_directory + - moved assignment to DIR in notify_of_job_status after the calls + to sigprocmask to block SIGCHLD and SIGTTOU + - in notify_of_job_status, DIR is now assigned via a call to + current_working_directory and hence does not need to be freed + - notify_of_job_status now initializes DIR to NULL and calls + current_working_directory only if it needs to + - changed a call to reverse_list in stop_pipeline to REVERSE_LIST, + because most pipelines will be only one process long + +builtins/jobs.def + - make an illegal jobspec cause a failure instead of returning 0 all + the time + +builtins/times.def + - times now ignores any arguments for sh and ksh compatibility + + 6/20 + ---- +execute_cmd.c + - fixed execute_until_or_while to actually return the status of the + last command executed in the body rather than + last_command_exit_value, which is the status of the test (which + has just failed) + + 6/23 + ---- +execute_cmd.c + - fixed execute_subshell_builtin_or_function to exit with + last_command_exit_value if a builtin longjmps to top_level + with value EXITPROG, rather than with EXITPROG (3) + + 6/25 + ---- +cpp-Makefile + - added rldefs.h to READLINE_SOURCE + +builtins/type.def + - `type' now returns 0 if no arguments are given + +jobs.c + - make wait_sigint_handler obey interrupt_immediately as well + as whether the wait builtin is the current command (XXX - in + the future remove the check for wait_builtin entirely and + just use interrupt_immediately, because this_shell_builtin + could be changed by the code that runs from a SIGCHLD trap) + - make the code that runs commands from SIGCHLD traps set + interrupt_immediately to 1 each time through the loop + + 6/26 + ---- +builtins/common.c + - declare extern void vfree and use it in the add unwind protect + call, to avoid having to declare what type free returns + +execute_cmd.c, builtins/common.c + - removed all references to builtin_pipe_in_hack, which is no + longer used + +parse.y + - removed all references to current_token_being_expanded and + pending_token_being_expanded, since their function is subsumed + by expanded_token_stack. Also no need to save this on the + pushed string stack, so that element is removed from the + struct. + (current_token_being_expanded == expanded_token_stack->saved_token) + +builtin/jobs.def + - removed immediate return if job_control == 0. This makes it work + in command substitution subshells + + 6/29 + ---- +expr.c + - added unary `+' + - added bitwise not (`~') at same precedence as logical not (`!') + - added left and right shifts (<<, >>) between +,- and the comparisons + - added bitwise and, or, xor (&, |, ^) + - added logical and, or (&&, ||) + - changed exp1 to allow multiple consecutive ! and ~ (in the same way + that exp0 allows multiple consecutive leading - and + + +lib/readline/history.c + - close memory leak -- in history_do_write, free the output filename + before returning + - close same memory leak in read_history_range + +builtins/enable.def + - make `enable' with no arguments print only the enabled builtins, and + `enable -n' with no other arguments print only the disabled builtins + +builtins/setattr.def + - make readonly and export return failure when given -f with an + argument that is not a function name + - added -n to the documentation for readonly + +execute_cmd.c + - cleaned up the code that checks for #! and binary files some: made + sure the file descriptor was always closed, made sure sample_len + was > 0 before checking the first two characters, collapsed two + if statements into one + +jobs.c + - changed call to job_working_directory in start_job to call to + current_working_directory + - changed input_tty to a macro + - changed the call to QUIT in wait_for after the wait_loop + label to depend on whether job_control is enabled; the test + against the terminal process group is superfluous now that + we use wait_sigint_handler + +builtins/fg_bg.def + - Posix.2a specifies that fg and bg should return failure if + run when job control is disabled + + 7/2 + --- +variables.c + - when an existing variable is given a new value by bind_variable, + turn off the invisible attribute + +shell.c + - dup default_buffered_input using fcntl(fd, F_DUPFD, 10) to put + it above the shell's user-manipulatable range + +execute_cmd.c + - in add_undo_redirect, make the redirection added a + r_duplicating_input so buffered streams get duplicated as + necessary. It makes no difference for the non-buffered-stream + code + + 7/3 + --- +subst.c + - command_substitute needs to set interactive = 0 and leave + interactive_shell reflecting the interactive state of the + parent shell + +signames.c + - prevent SIGGRANT and SIGRETRACT from overriding other already-defined + signal names, since, on the RT at least, they override SIGUSR2 + and SIGEMT, respectively, which are much more common + +jobs.c + - in notify_of_job_status, if job control is not enabled, do not + print the status messages. Mark dead jobs as notified so they + get cleaned up properly + +braces.c + - when checking for `,' if a closing brace was not found, make + sure the , is unquoted + - make sure we found an unquoted , before attempting to perform + the expansion -- since brace_gobbler purports to understand + quoting with \, the rest of the code should support it + - disabled the code that caused a failure longjmp if a matching + closing brace was not found -- the pattern should be left + unchanged, as with any other failed expansion + +trap.c + - new function maybe_set_sigchld_trap, which sets the trap on + SIGCHLD if and only if the signal is not currently trapped + +jobs.c + - call maybe_set_sigchld_trap after running SIGCHLD trap commands + on the death of a child to restore the trap handler, so if the + trap handler calls `trap xxx CHLD' it will not be overwritten + +lib/glob/fnmatch.c + - fnmatch must treat [ without a matching ] as a `regular' character + to be matched against the string so that the Posix.2 rules for + case command matching are not broken + +shell.c + - change the call to fcntl that sets default_buffered_input to one + to dup2(fd, getdtablesize() - 1) to hopefully get the highest + file descriptor + + 7/6 + --- +parse.y + - if read_token reads a character that matches the current delimiter + character, it should make sure the character is `"' before + checking delimited_paren_level and blindly accepting it. There + are other values for `delimiter' besides `"'. + +shell.c + - turn on no_line_editing for non-interactive shells + +builtins/set.def + - removed test against interactive_shell when deciding whether or + not emacs or vi is `on' [backed out of fix from 6/8] + + 7/8 + --- +lib/readline/history.c + - changed get_history_event so that shell metacharacters (;&()|<>) + can terminate an event spec + +subst.c + - the TERM and TERMCAP variables need special handling only if + READLINE is defined + - ditto for history_completion_file + +machines.h + - new description for HPs running OSF/1 + + 7/9 + --- +lib/readline/readline.c + - new variable `eight-bit-input'. If this is on, readline disables + ISTRIP for the Posix or sysv tty drivers + +execute_cmd.c, variables.c + - new variable `subshell_environment' set in children right after + forking and reset in shell_reinitialize. It means to look in + the temporary environment first when looking up variables and + functions + + 7/13 + ---- +config.h, parse.y + - changed CSH_HISTORY_EXPANSION to BANG_HISTORY_EXPANSION + +shell.c + - made all the history-related code #ifdef HISTORY + - made maybe_save_shell_history be called only if the shell is + interactive and we're remembering history lines + +parse.y, flags.c, flags.h, subst.c, variables.c + - made all the history-related code #ifdef HISTORY + - assignment_acceptable and command_token_position no longer are + dependent on ALIAS being defined, since they are used to return + ASSIGNMENT_WORD tokens + +builtins/bind.def + - removed inclusion of readline/history.h + +builtins/exec.def, builtins/common.c + - made all the history-related code #ifdef HISTORY + +builtins/fc.def, builtins/history.def + - added a $DEPENDS_ON HISTORY line + +builtins/mkbuitins.c + - line_error should not try to print error_directory without checking + to see whether it is NULL + +builtins/Makefile + - add $(DIRECTDEFINE) to the command line that builds builtins.c + +lib/glob/tilde.c + - use getpwuid(getuid()) to look up the home directory of the user + executing the shell for tilde expansion ~/foo if $HOME unset + +cpp-Makefile, subst.c, config.h + - Fixes to make brace expansion a configuration option, on by default + + 7/14 + ---- +builtins/set.def + - fixed unset so an attempt to unset a readonly variable or function + is an error (as Posix.2 specifies) + +general.h + - removed extern declarations of index, rindex + - added extern declarations for strchr, strrchr + - changed `member' to use strchr + +subst.c, general.c, bashline.c, execute_cmd.c, parse.y, test.c + - changed calls to index to calls to strchr, calls to rindex to calls + to strrchr + +builtins/echo.def, builtins/fc.def, builtins/common.c + - changed calls to index to calls to strchr, calls to rindex to calls + to strrchr + +lib/glob/glob.c + - changed calls to index to calls to strchr, calls to rindex to calls + to strrchr + +lib/readline/history.c, lib/readline/readline.c, lib/readline/vi_mode.c + - changed calls to index to calls to strchr, calls to rindex to calls + to strrchr + +lib/readline/vi_mode.c + - changed calls to strchr to inline checks, since we're only checking + for two characters + + 7/15 + ---- +variables.c + - If PPID is imported, turn off export status + + 7/17 + ---- +general.h + - for USG and Posix systems, define NO_READ_RESTART_ON_SIGNAL + + +general.c + - sysv_getc --> getc_with_restart + - compile in getc_with_restart if NO_READ_RESTART_ON_SIGNAL is + defined + +subst.c + - call getc_with_restart in command_substitute if on a system + with NO_READ_RESTART_ON_SIGNAL defined + +parse.y + - call getc_with_restart in yy_stream_get if NO_READ_RESTART_ON_SIGNAL + is defined + +input.c + - change b_fill_buffer to restart reads on EINTR + +general.h + - wrap the declarations of strchr and strrchr inside an #ifdef strchr + because some ANSI C compilers (e.g., RS/6000) make them defines in + /usr/include/string.h + + 7/20 + ---- +lib/readline/readline.c + - wrap the declarations of strchr and strrchr inside an #ifdef strchr + because some ANSI C compilers (e.g., RS/6000) make them defines in + /usr/include/string.h + + 7/21 + ---- +lib/readline/parens.c + - wrap all parameters and variables associated with the select call + into #ifdef FD_SET + +execute_cmd.c + - added tilde expansion to the pattern list members of case statement + clauses, as specified by Posix.2 d11.3 + +lib/readline/readline.c + - when comparing members of the c_cc array directly against + _POSIX_VDISABLE, cast both sides to unsigned char + +support/getcppsyms.c + - recognized __svr4__ + +machines.h + - for Sun machines, if __svr4__ is defined and USGr4 is not, define + USGr4 + +shell.c + - some machines need sys/types.h included before stdio.h (mostly for + size_t) + +lib/malloc/malloc.c + - add SunOS5 to the list of systems that do no redefine valloc (?) + + 7/22 + ---- +make_cmd.c + - save and restore the value of line_number around reading a + here-document + +lib/glob/glob.c + - change to use HAVE_STRING_H to decide which version of the + header files to include + + 7/25 + ---- +execute_cmd.c + - fixed execute_command_internal so that failure to perform + redirections attached to a shell compound command like if + or while causes the command to return failure right away + - eliminated use of redir_result in execute_builtin_or_function + - changed execute_while_or_until so that body_status is + initialized to EXECUTION_SUCCESS, and then directly returned + without a check for commands_executed, so that the Posix.2 + behavior of returning success when no body commands are + executed is preserved + + 7/27 + ---- +jobs.c + - make sure that trap_list[SIGCHLD] is not set to IGNORE_SIG + before trying to run commands when a SIGCHLD is caught + +test.c + - define and use UID_T and GID_t, which are equivalent to uid_t + and gid_t on all systems but SunOS 4.1.?, because SunOS makes + `int' the return value of all the uid and gid functions (except + stat!) + + 7/28 + ---- +shell.c + - call end_job_control in termination_unwind_protect + +variables.c + - if PWD is imported from the environment and it is wrong (i.e., + not the same as the current directory), rebind it to the current + directory (as obtained by get_working_directory) + + 7/29 + ---- +lib/readline/history.c + - do not history expand ! when immediately preceded by [, assuming + it's the globbing pattern negation character + +execute_cmd.c + - plug some memory leaks -- redirectee_word needs to be freed + before returning from do_redirection_internal + - changed the noclobber code to open the file with O_EXCL after + verifying that it's not there with stat to shorted possible + race conditions (this doesn't help over NFS) + + 7/30 + ---- +lib/readline/history.c + - treat a negative arg to stifle_history as 0 + +lib/readline/readline.c + - #undef PC before declaring it as a variable because some systems + (Solaris2) define it in system header files + - changed type of insert_some_chars, update_line, and delete_chars + to void + - added a check when doing filename completion in + filname_completion_function to see if the first characters of the + filename and directory entry match before calling strncmp + (inline expansion of STREQN) + + 7/31 + ---- +lib/readline/vi_keymap.c + - Make arrow keys work for history in vi command mode by binding + `o' and `[' in vi_escape keymap to rl_arrow_keys + + 8/6 + --- +subst.c + - broke the code that quotes strings for the globbing functions + into a separate function: quote_string_for_globbing (), so + there are not two copies of it + +execute_cmd.c + - rewrote execute_case_command so that quote_string_for_globbing + is called for the patterns in a pattern list and reordered some + other code for clarity + - execute_case_command now turns quoted null strings into empty + strings because quote_string_for_globbing does not do it + + 8/7 + --- +lib/readline/readline.c + - added generic code to init_terminal_io to fetch the termcap + codes for the arrow keys (ku, kd, kl, kr) and bind the right + functions to them + +lib/readline/vi_keymap.c, lib/readline/emacs_keymap.c + - removed bindings to `rl_arrow_keys' from all keymaps + + 8/13 + ---- +subst.c + - command_substitute: only close fildes[1] if it's > 2 + + 8/26 + ---- +lib/readline/readline.c + - rewrote get_y_or_n to get rid of label and goto + - added code to the completion listing function that makes it + skip padding the line out with blanks after writing what will + be the last filename on the line + +machines.h + - added -DHAVE_SETDTABLESIZE to SYSDEP_CFLAGS for Sequents + running Dynix/ptx + + 8/28 + ---- +machines.h + - added a machine description for the BBN Butterfly from + Kaveh Ghazi + +variables.c + - HPOSF1 machines cannot redefine getenv() + +support/getcppsyms.c + - recognize __hp_osf + +parse.y + - allow reserved word recognition after done, fi, and esac + Posix.2 section 3.4 seems to allow this + +lib/readline/readline.c + - include on OSF/1 machines for TIOCGWINSZ + +subst.c + - in command_substitute, when checking to see that we're not + overflowing `istring', allow for the insertion of two characters + in the check to account for possible quoting + + 9/3 + --- +builtins/bashgetopt.c + - force reset_internal_getopt to set loptend to NULL + - force internal_getopt to set loptend to NULL when the list it + gets is NULL, and when it detects that it's been called with + a different word list + + 9/8 + --- +variables.c + - make adjust_shell_level clamp the value of $SHLVL at 1 + +[Fixes from bfox 1.13] + +bashline.c + - remove `%' from list of readline special prefixes + +config.h + - BANG_HISTORY_EXPANSION -> BANG_HISTORY + +cpp-Makefile + - add HAVE_STRCHR + - changes to macros that build libraries + - reorganized library declarations and support + +execute_cmd.c + - indx -> p_index in extract_colon_unit + +general.c + - provide definitions of strchr, strrchr for systems that do not + have them + +machines.h + - define `Solaris' for Suns running Solaris 2.x + - turn all the definitions of M_OS into strings + +parse.y + - replace delimiter and old_delimiter with a stack of delimiters + encountered while parsing the current token + +subst.c + - removed all traces of EIGHT_BIT + +variables.c + - new function dispose_temporary_vars, for both dispose_used_env_vars + and dispose_function_env + +lib/readline/readline.c + - `eight-bit-input' -> `meta-flag' + +lib/tilde + - new directory for the tilde expansion library code + +[end of bfox changes] + +cpp-Makefile + - pass $(RM) down to makes in libraries + + 9/10 + ---- +parse.y + - remove the bfox change that set CMD_FORCE_SUBSHELL for async + commands + + 9/14 + ---- +builtins/bind.def + - surround the code with #ifdef READLINE + +builtins/fg_bg.def + - surround the body of the code with #ifdef JOB_CONTROL + +builtins/getopts.def + - surround the body of the code with #ifdef GETOPTS_BUILTIN + +builtins/alias.def + - surround the body of the code with #ifdef ALIAS + + 9/15 + ---- +lib/readline/emacs_keymap.c + - bind rl_noninc_reverse_search to M-P and rl_noninc_forward_search + to M-N, respectively + +lib/readline/readline.c + - made name_key_alist struct static + - added new functions to manipulate keymaps: + rl_get_keymap_by_name() + rl_get_keymap() + rl_set_keymap() + +lib/readline/keymaps.h + - added declarations for the new keymap functions + +builtins/bind.def + - added -m map option to allow bind commands to specify the keymap + to be used when binding key sequences to readline commands + + 9/16 + ---- +builtins/alias.def + - in single_quote, allocate a new string three times as big as the + old to handle the possible quoting characters + +bashline.c + - set last_fignore to null after freeing it in setup_ignore_patterns + + 9/17 + ---- +parse.y + - added code to handle the functionality of `ignoreboth' as a + value for history_control (ignore both lines beginning with + spaces and duplicates of the last history entry) + - don't use history_control for the second and subsequent lines + of a multi-line command when command_oriented_history is in + effect + + 9/18 + ---- +bashline.c + - fix attempt_shell_completion to call command_word_completion_function + even if the supplied text begins with `/' + - fix command_word_completion_function to make sure that absolute + program names passed are executable before returning them as + possible matches + + 9/20 + ---- +parse.y + - If we read a blank line (shell_input_line[0] == 0) and we have + reached EOF (shell_input_line_terminator == EOF) then don't echo + the line, even if -v has been turned on + + 9/23 + ---- +lib/malloc/malloc.c + - changed to use USG rather than SYSV + - changed BSD42 to BSD4_2 like emacs malloc.c + - removed conditional compilation code dealing with VMS + - include getpagesize.h only if BSD4_2 is not defined + - changed conditionally compiled code dealing with BSD, since + BSD is not defined by bash and malloc.c does not include + sys/param.h, which defines BSD on 4.x BSD systems + +lib/malloc/getpagesize.h + - new implementation, inspired by gdb 4.6 + uses _SC_PAGESIZE, if present + defaults to 4096 + +lib/readline/vi_keymap.c + - when in insert mode, Posix.2a says that \ is quoted-insert + - remove the binding to vi_escape_keymap; Posix.2a says that + ESC in movement mode does nothing (vi description) + + 9/24 + ---- +shell.c + - shell should send SIGHUP to all it's jobs when it receives + SIGHUP only if it is an interactive login shell + +execute_cmd.c + - systems running the Andrew File System don't use the Unix file + mode bits to decide whether or not a file is executable (they're + unused, since AFS as ACLs), so executable_file needs to call + access (file, X_OK) if running on AFS + + 9/25 + ---- +jobs.c + - make sure a non-interactive shell initializes original_pgrp to + NO_PID, so it does not attempt to give the terminal back to that + pgrp when it exits or calls the `exec' builtin + + 10/3 + ---- +machines.h + - add -DHAVE_RESOURCE to the NeXT machine description as SYSDEP_CFLAGS + - add -DHAVE_GETDTABLSIZE and -DHAVE_SETDTABLESIZE to Dynix/ptx + description + +shell.c + - make a non-interactive script shell call dup2 on the fd it has + open to the script file to move the descriptor to one that hopefully + user programs will not attempt to use + +general.c + - make the definition of getdtablesize() depend on HAVE_GETDTABLESIZE + not being defined. Auto-define that for non-USG systems (or HPUX). + This allows a SYSDEP_CFLAGS entry to override it + +builtins/ulimit.def + - new function canraise(cmd, curlim, newlim) to call on systems + without HAVE_RESOURCE to decide whether or not the limit can be + raised. Maybe we should remove the test altogether and let the + system call fail instead + + 10/8 + ---- +execute_cmd.c + - If a command is not found, make the exit status 127 like Posix.2 + says + + 10/14 + ----- +print_cmd.c + - changed cprintf(s) to cnprintf(args_length, s) and made cnprintf + malloc the buffer it uses for vsprintf to avoid overrun of the + 5000-character temp buffer used previously. args_length is the + expected total length of all the arguments + + 10/15 + ----- +jobs.c + - set last_command_exit_value before calling a trap handler for + SIGINT: new function process_exit_status(), changes to use it + + 10/18 + ----- +print_cmd.c + - removed `cnprintf' changes + - re-implemented cprintf as a miniature vsprintf interpreting %s, + %d, and %c and using a dynamically-allocated buffer + +support/mksysdefs + - look for /usr/include/varargs.h and define HAVE_VARARGS_H if + found + +cpp-Makefile + - pass HAVE_VARARGS_H down to the makes in the various libraries + + 10/26 + ----- +lib/glob/glob.c + - free `result' before using temp_results to return the value + of glob_dir_to_array -- plugs a small memory leak + + 11/2 + ---- +[Fixes from bfox version dated 10/18] + +bashline.c + - separated definitions of BRACE_COMPLETION and the extern declaration + of the brace completion functions + +config.h + - make PROCESS_SUBSTITUTION depend on the value of MKFIFO_MISSING + +cpp-Makefile + - add posixstat.h, tilde.[ch], xmalloc.c to the readline library + sources (also the corresponding object files) + - make the definition of HAVE_TILDE_SOURCE depend on the definition + of HAVE_READLINE_SOURCE + +lib/posixheaders + - new directory, for posix support functions and header files + - various cleanups to the library support rules + +execute_cmd.c + - make the practice of checking hashed filenames for executability + dependent on $POSIXLY_CORRECT + +general.c + - The `hppa' running hpux-8 does not have `getdtablesize' + +general.h + - make the extern declaration of strchr and strrchr go away if + __STDC__ is defined +jobs.h + - test for and define all of the W* macros individually + +machines.h + - completely new alliant description from bfox + - add -DMKFIFO_MISSING to NeXT SYSDEP_CFLAGS + - add description for Siemens MX500 running `sinix' + +builtins/common.c + - move code that depends on BANG_HISTORY being defined inside #ifdef + HISTORY blocks, since you can't have BANG_HISTORY without HISTORY + +builtins/echo.def + - make -E work all the time, not just on sys5 systems + +builtins/enable.def + - add -all option (with synonym of -a) + - change `DISABLED' to 2 and make argument to list_some_builtins a + bitmask + +builtins/kill.def + - it is an error if `signum' == NSIG + +documentation/bash.1 + - added -E flag to `echo' + - added description of -all to enable + +lib/readline/tilde.c, lib/readline/xmalloc.c + - links to these files for standalone readline lib + +lib/readline/{funmap.c,history.c,keymaps.c,readline.c} + - make xmalloc and xrealloc static again and dependent on the + definition of STATIC_MALLOC + +lib/readline/readline.c + - include only if NO_SYS_FILE is not defined + - add support for a `stat' char after filenames when listing completion + alternatives if VISIBLE_STATS is defined + - add support for _GO32_ definition (PC) + - add LibraryVersion internal variable + - initialize rl_instream and rl_outstream to NULL, because all of a + sudden stdin and stdout may no longer be constants + - make readline_default_bindings `static void' + - add support for quoting a portion of the input line to make it + immune from completion + +support/getcppsyms.c + - recognize `alliant' + +support/mksysdefs + - presence of /bin/fxc.info indicates that the machine is an alliant + +support/{FAQ,PORTING,mklinks,fixdist} + - new files + +[end of changes from bfox] + +machines.h + - added support for HP-UX 9.0 (hpux_9) + + 11/12 + ----- +machines.h + - added -lsocket to the REQUIRED_LIBRARIES define for ICL RS6000 + - removed the `#undef HAVE_WAIT_H' from the isc386 description + +lib/readline/rltty.c + - split off almost all tty-related code from readline.c to this file + + 11/13 + ----- +lib/readline/rltty.c + - changed the way the bsd tty code works to use a `struct bsdtty' + that encapsulates all of the bsd tty state into a single structure + that can be passed around by reference + - changed the bsd tty setup and teardown code to be more like the + ce version of things +lib/readline/rldefs.h + - added code to define HAVE_USG_SIGHOLD for svr3 machines. The + prepping and deprepping code uses them to block SIGINT while + getting and setting the tty attributes + + 11/14 + ----- +lib/readline/rltty.c + - encapsulated the system-specific code for setting up the terminal + into a function: `prepare_terminal_settings'. This means that the + code for rl_prep_terminal and rl_deprep_terminal is basically + identical between tty driver versions + - changed the BSD version of rltty_set_default_bindings to use a + struct bsdtty and get_tty_settings + - rl_prep_terminal and rl_deprep terminal are now non tty-driver + specific -- there is only one version of each function. The + tty-driver specific code is now in {set,get}_tty_settings and + prepare_terminal_settings + + 11/24 + ----- + +general.c + - make the function definitions for bcopy and bzero depend on a + HAVE_BCOPY define + +machines.h + - define HAVE_BCOPY for RS/6000s, RTs running AIX, and Linux + - new description for Linux + +shell.c, variables.c + - don't declare getpwuid for Linux systems + +support/getcppsyms.c + - recognize `linux' and `__linux__' + +builtins/psize.c + - don't redefine memset() for USG machines + +general.c + - add extern declaration of getdtablesize() to dup2() replacement + - don't compile in bcopy and bzero on Linux machines + +test.c + - don't declare getgid, getegid, or geteuid on Linux + +lib/readline/rldefs.h + - don't try to include on Linux machines + +lib/readline/readline.c + - only call rl_parse_and_bind on non-empty lines when reading + ~/.inputrc + - allow backslash to quote characters in the key sequence to be + bound, which allows you to bind C-x \ for example + - allow delimiter characters in the body of a macro, quoted with + a backslash + - changed rl_function_dumper so that it outputs backslash-quoted + " and \ when called by bind -d + +lib/readline/funmap.c + - fixed a typo in the entry for `vi-replace' + +subst.c + - make sure the $(( xxx )) case sets this_command_name to NULL so + there are no confusing garbled error messages + - fix a memory leak in $[ xxx ] code (free temp) + - make $(( xxx )) case do the same variable expansion that the + $[ xxx ] case does + + 11/25 + ----- +parse.y + - removed CMD_FORCE_SUBSHELL assignments + +command.h + - add a new flag for commands: CMD_NO_FORK + +shell.c + - added a function run_one_command for -c shells that just sets up + the top_level stuff for longjmp and calls parse_and_exec. This + is controlled by the definition of ONESHOT + +execute_cmd.c + - execute_disk_command takes an extra argument: nofork. If non-zero, + this tells it to not fork for a command without pipes in or out + - set NO_FORK for a simple command run in a subshell with + want_subshell ( `( xxx )' ) + +builtins/common.c + - if the from_file argument to parse_and_execute is "-c", then + assume this is a one-shot -c command and set NO_FORK for simple + commands. This is controlled by the definition of ONESHOT + + 12/1 + ---- +support/getcppsyms.c + - add defines for bsdi and __386BSD__ + +machines.h + - add a section for 386bsd + + 12/2 + ---- +input.c + - added a new function check_bash_input (fd) which checks whether + or not file descriptor fd is the buffered fd which bash is using + to read a script, and, if so, swaps the buffered fd to a new + file descriptor and reinits bash_input + - input buffering now solves these problems: + parent-child synchronization + using the script fd in a user redirection + auto-restart of interrupted reads on all systems + speed + +execute_cmd.c + - call check_bash_input from do_redirection_internal before a call + to dup2 and a call to duplicate_buffered_fd + + 12/3 + ---- +builtins/getopt.c + - only redefine `const' if it is not already #defined + +lib/readline/rltty.c + - make sure HANDLE_SIGNALS is defined here as it is in readline.c + + 12/7 + ---- +lib/malloc/malloc.c + - change the conditional around get_lim_data to be HAVE_RESOURCE + (ulimit if not defined, getrlimit if it is) + - removed the 4.1BSD version of get_lim_data + - conditionalize the inclusion of sys/resource.h on the definition + of HAVE_RESOURCE + + 12/11 + ----- +lib/readline/readline.c + - changed the name of strpbrk to rl_strpbrk to avoid any conflicts + with OS include files and libraries + + 12/15 + ----- + +bashline.c + - changed initialize_readline to type void + +execute_cmd.c + - execute_for_command called expand_words with an extra argument + +jobs.c + - changed stop_pipeline to use xrealloc instead of realloc + +lib/readline/readline.c + - changed rl_complete_internal to call xmalloc instead of malloc + +variables.c + - dispose_used_env_vars, non_unsettable declared void + +builtins/common.c + - include because we cast things to struct stat * + +builtins/exit.def + - change exit_or_logout to be declared static + +builtins/psize.c + - removed call to memset and therefore the need to #ifdef it's + definition + +builtins/bind.def, builtins/ulimit.def + - add extern declaration for strerror() + +builtins/exec.def + - add extern declaration for strerror() + - add extern declaration for full_pathname() and remove casts to + char * + - add extern declaration for make_word_array() and remove casts to + char ** + +builtins/fc.def, copy_cmd.c, shell.c, parse.y + - add extern declaration for reverse_list() + +builtins/read.def + - change free to vfree so systems don't complain about the extern + declaration (type clashes, etc.) + +lib/tilde/tilde.c + - include string.h or strings.h as appropriate to get the correct + declaration of strcpy before the savestring macro uses it + +parse.y + - add extern declaration for sub_append_string and remove casts to + char * + - add extern declaration for add_string_to_list and remove casts to + WORD_LIST * + + 12/16 + ----- +lib/malloc/malloc.c + - move the check for RLIMIT_DATA after the inclusion of + (duh!) + +bashline.c + - added extern declaration for get_working_directory + +jobs.c + - added extern declaration for polite_directory_format + +execute_cmd.c + - added extern declaration for copy_redirects + +subst.c + - added extern declaration for reverse_list + +machines.h + - new entry for KSR1 running KSROS (OSF/1) + +support/getcppsyms.c + - recognize `ksr1' + +general.h + - make sure that strcpy is declared before the definition of + savestring + +alias.c, bashline.c, bracecomp.c, braces.c, copy_cmd.c, execute_cmd.c, +expr.c, general.c, hash.c, jobs.c, mailcheck.c, make_cmd.c, print_cmd.c, +trap.c, variables.c, parse.y + - make sure that string.h or strings.h is included before general.h + (which is included by shell.h) + +builtins/mkbuiltins.c + - add extern declaration of strcpy if __STDC__ and strcpy not defined + - include or as needed + +builtins/cd.def, builtins/shift.def, builtins/source.def, builtins/test.def, +builtins/command.def, builtins/declare.def, builtins/fc.def, +builtins/getopts.def, builtins/hash.def + - include or before definition of savestring + +lib/tilde/tilde.c, lib/readline/chardefs.h + - include or before definition of savestring + +lib/readline/readline.c + - made glean_key_from_name cast NAME to unsigned char * before + dereferencing it to better handle 8-bit character sets + + 12/17 + ----- +subst.c + - made command_substitute set up top_level with setjmp so that shells + running command substitution won't longjmp all the way back to + main() if they're interrupted and call throw_to_top_level + + 12/18 + ----- +lib/readline/readline.c + - split the code that handles setting the screen size off into a new + function: set_screen_size + - changed init_terminal_io to call set_screen_size + - changed rl_handle_sigwinch to call set_screen_size instead of + totally reinitializing the world on each SIGWINCH + - added a new function cr() that simply puts the cursor at physical + column 0 + - changed rl_handle_sigwinch to call cr() and + rl_forced_update_display() after resetting its idea of the screen + size + + 12/20 + ----- +lib/readline/history.c + - changed the way history_expand treats `\' to make it a general + quoting character like the shell treats it so that allows single + quotes to be quoted + + 12/23 + ----- +machines.h + - changed M_OS define in BSDI description to BSD386, since cpp + doesn't like BSD/386 + + 12/28 + ----- +execute_cmd.c + - changed execute_case_command so that expand_word_no_split is called + on the `word', as Posix.2 specifies + + 1/5 + --- +machines.h + - new machine description for Dec Alpha running Dec OSF/1 + +support/getcppsyms.c + - recognize alpha, __alpha, osf, and __osf__ + + 1/7 + --- +lib/readline/readline.c + - removed definition of HANDLE_SIGNALS + - changed rl_signal_handler so that systems with HAVE_POSIX_SIGNALS + defined will not set the SIGINT handler to SIG_IGN + - include for _386BSD and BSD386 for TIOCGWINSZ + +lib/readline/rldefs.h + - added definition of HANDLE_SIGNALS + +lib/readline/rltty.c + - added GETATTR and SETATTR macros for termios/termio systems for + use by get_tty_settings and set_tty_settings + + 1/9 + --- +shell.c + - new variable: startup_state. Set to 0 for scripts, 1 for + interactive shells, and 2 for -c command shells. Superset of + the functionality provided by the `interactive_shell' variable + +builtins/common.c + - changed parse_and_execute to use startup_state to detect that + it's being called as a result of -c command, rather than the + ad-hoc method previously employed + + 1/11 + ---- +support/getcppsyms.c + - recognize `m88k' + +machines.h + - new description for Motorola M88K Delta running SVR4 + +support/mksysdefs + - moved the defaulting of `SYSDEF' to `cadmus' until just before + the definition is written out + +shell.c + - changed ambiguous assignment to `login_shell' by introducing a + dummy variable (~line 400: login_shell = -++login_shell) + +lib/malloc/malloc.c + - moved the code that decides whether or not to define USG or + BSD4_2 inside checks for USG and USGr4, since USGr4 passes + the tests for the various signals + +alias.c + - changed a call to index() to strchr() + + 1/12 + ---- +lib/readline/readline.c + - moved inclusion of posixstat.h before inclusion of rldefs.h + (rldefs.h requires that stat.h be included before it) + - don't test whether or not a file is a symlink or a socket + in stat_char unless S_ISLNK and S_ISSOCK are defined, + respectively + + 1/13 + ---- +machines.h + - added -I/usr/ucbinclude to SYSDEP_CFLAGS and a #define + USE_GNU_TERMCAP for the ICL DRS6000 description + +support/bashbug.c + - added definition for gethostname() for systems that do not have + it (USG except for SGI and HP) + + 1/14 + ---- +test.c + - made the #define of uid_t also dependent on HAVE_UID_T being + undefined. That way, hosts which have trouble can add a + -DHAVE_UID_T to SYSDEP_CFLAGS in the machines.h entry + - made the extern declaration of getgid() be conditionalized out + on Sony non-Posix machines + +machines.h + - added -DHAVE_UID_T to SYSDEP_CFLAGS in the Sony/BSD entry + + 1/15 + ---- +parse.y + - made type of `report_syntax_error' be static void + - made type of `handle_eof_input_unit' be static void + - added an error message when EOF is reached unexpectedly + (if EOF_Reached is 1 when report_syntax_error is called) + - added `extern void make_here_document ();' + +make_cmd.c + - made type of make_here_document be void + +execute_cmd.c + - added declarations of set_clexec to function prologues for + do_redirection and do_redirection_internal + +variables.c + - added `extern long atol()' to assign_seconds () + +jobs.c + - changed type of `making_children ()' to void + - removed unused label `wait_exit' in wait_for() + - changed `sigset_t set' to `sigset_t suspend_set' inside the + BROKEN_SIGSUSPEND definition because `set' shadows the + definition used in BLOCK_CHILD and UNBLOCK_CHILD + +mailcheck.c + - changed type of add_mail_file to void + +alias.c + - changed type of delete_all_aliases to void + - changed block-local declaration of `tl' to `tlen', because + `tl' shadows a function-scope variable + +input.c + - made duplicate_buffered_stream return new fd (like dup2) when + it finishes + - made free_buffered_stream() a void-valued function + +bashline.c + - cleaned up the precedence of the expression that checks whether + or not the ignore patterns have changed in setup_ignore_patterns + +lib/readline/readline.c + - made rl_gather_tyi a void-valued function + - made rl_dispatch a void-valued function + - made rl_redisplay a void-valued function + - made free_history_entry a void-valued function + - removed unused label `some_matches' from rl_complete_internal + +lib/readline/vi_mode.c + - removed check of return value from rl_dispatch in rl_vi_redo, + since rl_dispatch never returned one anyway + +lib/readline/history.c + - removed unused label `search_won' in get_history_event + - removed unused label `read_which' in get_history_event + - removed unused label `bad_word_spec' in history_expand + - removed unused label `error_exit' in history_expand + - changed block-local declaration of `len' to `slen' in + history_expand because len shadows a function-local variable + - changed block-local declaration of `l' to `ll' in + history_expand because len shadows a function-local variable + - removed unused label `get_first' in get_history_word_specifier + + 1/18 + ---- +parse.y + - fixed up the support for `unexpected EOF' errors by making + read_token set `EOF_Reached' to 1 before returning yacc_EOF + when it reads EOF while looking for the start of a token + - added better messages for unexpected eof to report_syntax_error + - added better messages for unexpected tokens to report_syntax_error + - made handle_eof_input_unit reset EOF_Reached to 0 if the + shell is interactive + - made report_syntax_error reset EOF_Reached to 0 if the + shell is interactive + - changed the non-interactive error messages to add `line' before + printing the line number rather than simply use filename:digit: + + 1/19 + ---- +builtins/type.def + - changed code so that simple `type' (-all not specified) takes + the same path as a regular command search (find_user_command() + rather than user_command_matches()) + + 1/20 + ---- +shell.c + - new variable `passwd_shell' set from the pw_shell field in the + password file + - new variable `passwd_dir' set from the pw_dir field in the + password file + +variables.c + - used passwd_shell and passwd_dir to eliminate the calls to the + getpw* functions + - if $SHELL is unset at shell startup, it is set to the value of + passwd_shell + + 1/21 + ---- +support/mksysdefs + - look for sys/ptem.h, define HAVE_SYS_PTEM_H if found + - look for sys/pte.h, define HAVE_SYS_PTE_H if found + +cpp-Makefile + - pass HAVE_SYS_PTEM_H and HAVE_SYS_PTE_H to the readline make + +lib/readline/rldefs.h + - include sys/ptem.h and sys/pte.h depending on the above two + definitions + +lib/readline/readline.c + - include if on an AIX system to get TIOCGWINSZ and + struct winsize + +machines.h + - added #undef HAVE_ALLOCA to hpux_6 description. alloca seems + to have problems when passing alloca'd memory to other functions + (esp. in the globbing code, passing directory_name) + + 1/22 + ---- +machines.h + - make the cadmus definition active only of M_MACHINE is not defined + when the code gets there + + 2/1 + --- +builtins/set.def + - changed the reference to $9 in the help string + - added `-' to the help string listing the options + +documentation/bash.1 + - changed the reference to $9 in the set builtin description + - added `-' to the set builtin synopsis listing the options + + 2/2 + --- +machines.h + - added REQUIRED_LIBARIES = -lPW -lc_s to SCO unix description + when not using gcc + +variables.c + - new variable builtin_env; builtin analogue of function_env + - new function dispose_builtin_env to free up all strings in + builtin_env + - find_tempenv_variable now looks in builtin_env after the + temporary environment + +execute_cmd.c + - execute_builtin_or_function and execute_subshell_builtin_or_function + now set up builtin_env for the `source' builtin so that things like + this work: + foo contains: + echo XXX=$XXX + echo XXX=$XXX + and you run + XXX=aaa . foo + which should output + XXX=aaa + XXX=aaa + (bug report by mfg@castle.ed.ac.uk) + + 2/3 + --- +execute_cmd.c + - when a command is forced into a subshell with ( ), turn off its + INVERT_RETURN bit in the flags so the exit status of the subshell + is not inverted. In execute_command_internal + + 2/5 + --- +[work to make readline configurably 8-bit clean] + +lib/readline/readline.c + - added variable convert_meta_chars_to_ascii, which controls + whether meta characters are converted into ESC-prefixed + key sequences. Set to 1 by default + - added a readline variable `convert-meta', settable in a + .inputrc, that controls the value of convert_meta_chars_to_ascii + +lib/readline/keymaps.h + - changed the hard-coded keymap size of 128 to a #define + of KEYMAP_SIZE, which is initially 128 + +lib/readline/keymaps.c + - changed all instances of 128 to KEYMAP_SIZE + - changed rl_make_keymap to initialize positions 128-256 to + rl_insert if KEYMAP_SIZE > 128 + +lib/readline/chardefs.h + - properly define _CHARDEFS_ to protect against multiple inclusion + +documentation/bash.1 + - documented new `convert-meta' readline variable + + 2/7 + --- +lib/readline/keymaps.h + - increased KEYMAP_SIZE to 256 + +lib/readline/emacs_keymap.c + - added entries to make the keymaps 256 entries. The entries in + emacs_standard_keymap are the ISO Latin-1 characters + +lib/readline/vi_keymap.c + - added entries to make the keymaps 256 entries. The entries in + vi_insertion_keymap are the ISO Latin-1 characters + + 2/8 + --- +lib/readline/readline.c + - make sure that rl_display checks that there is room for 8 more + characters when deciding whether or not to realloc the line, + since we might have to insert a tab + - rl_display_search should not use MESSAGE as a printf format + string, since it might contain % + - reversed arguments in calls to rl_kill_text in + rl_unix_word_rubout so that killed text is prepended to the + undo data rather than appended + + 2/9 + --- +builtins/alias.def + - moved single_quote() to builtins/common.c and made it global + +builtins/trap.def + - made sure that the output of `trap' is suitable for re-input + to the shell as a trap definition by using proper single-quoting + of the command + +lib/readline/readline.c + - new readline variable `completion-query-items' to control the + value of rl_completion_query_items (initially and by default + 100) + - new function rl_insert_completions which performs a call to + rl_complete_internal ('*') + +lib/readline/readline.h + - added extern declaration for rl_insert_completions () + +lib/readline/funmap.c + - added bindable command name `insert-completions' that maps to a + call to rl_insert_completions () + +documentation/bash.1 + - added documentation for new `completion-query-items' readline + variable + - added documentation for new `insert-completions' readline + command + + 2/10 + ---- +subst.c + - made ${xxx} behave correctly when the -u option was on and xxx + was not set + - made $xxx with -u enabled and xxx unset set $? to 1 + +lib/malloc/malloc.c + - made free() a void function, like ANSI and Posix say to + +support/mksydefs + - look for /usr/include/stdlib.h and define HAVE_STDLIB_H if found + +cpp-Makefile + - pass HAVE_STDLIB_H to all makes + +ansi_stdlib.h + - new file containing the extern function declarations that ANSI + puts into that bash uses; really a link to + lib/posixheaders/ansi_stdlib.h + +lib/posixheaders/ansi_stdlib.h + - real copy of ansi_stdlib.h + +alias.c, bashline.c, variables.c, shell.c, error.c, hash.c, signames.c, +expr.c, general.c, input.c, builtins/mkbuiltins.c, builtins/fc.def, +lib/glob/glob.c, lib/tilde/tilde.c, lib/malloc/xmalloc.c + - include if HAVE_STDLIB_H is defined, include + ansi_stdlib.h if not + +general.h, alias.h + - removed extern declarations for malloc and realloc + +lib/readline/{readline,history,funmap,keymaps,vi_mode}.c + - include or ansi_stdlib.h + - remove extern char *getenv() declarations + +cpp-Makefile + - added dependencies on ansi_stdlib.h + +support/fixdist + - changes to make things work with ansi_stdlib.h (basically just + dupliating the lines for posixstat.h) + +alias.h, braces.c, expr.c, general.h, hash.h, vprint.c, +builtins/fc.def, builtins/getopts.def, lib/glob/glob.c, +lib/tilde/tilde.c + - define NULL as ((void *)0) if NULL undefined and compiling in an + ANSI C environment (__STDC__) + + 2/11 + ---- +lib/readline/readline.c + - moved declaration of convert_meta_chars_to_ascii into the `forward' + declarations section, before its first use + + 2/13 + ---- +expr.c + - if x is a char *, don't compare *x to NULL, use '\0' instead + + 2/15 + ---- +lib/readline/readline.c + - add a call to rl_initialize_funmap at the beginning of + rl_named_function to make sure all of the function names will + be found + + 2/16 + ---- +parse.y + - handle double-quoted ${...} words like the Posix.2 spec says -- + count braces and skip command substitutions and quoted strings + to find the end of the pattern: new variables delimited_brace_level + and dollar_brace_level + - add new variable embedded_quoted_string so that the parser can + skip embedded quoted strings while parsing $() and ${} + constructs + +subst.c + - new function: extract_dollar_brace_string () which implements + the Posix.2 rules about ${...} extraction: counting braces while + skipping quoted strings and command substitutions. Called from + extract_string_double_quoted and expand_word_internal + - changed the way pattern removal was done: the pattern is now + run through tilde expansion, parameter expansion, command + substitution, and arithmetic substitution, then quoted in a + way acceptable to fnmatch with quote_string_for_globbing + - add code so that expansions like ${HOME:`xxxx`} are errors, as + they should be, and put the full expansion string in the error + message + + 2/17 + ---- + +subst.c + - changed expand_word_internal to call parameter_brace_expand_rhs + with the `quoted' parameter set to 0 except when the separator + between PARAM and WORD is `+'. This makes things like + + echo "${undef-"foo bar"}" + echo `foo bar' without the quotes. I'm still not sure this is + right, but it is compatible with other versions of sh + + 2/18 + ---- +parse.y + - add code to reserved_word_acceptable so that bash will parse a + reserved word after a `}' + +getcwd.c + - make it compilable on machines without dirent.h and struct direct + or unistd.h (like the NeXT) using the proper conditional inclusion + with HAVE_DIRENT_H and HAVE_UNISTD_H + +general.c + - moved the getwd() replacement out from inside #ifdef USG and just + protected it with #ifdef HAVE_GETWD + +machines.h + - added #undef HAVE_GETWD and #undef HAVE_GETCWD to the NeXT + machine description + +subst.c + - added `forward' declarations for tilde_expand and + expand_string_unsplit and removed the function-local extern + declarations + + 2/19 + ---- +getcwd.c + - changed to do conditional inclusion of limits.h, stdlib.h, string.h + + 2/22 + ---- +builtins/cd.def + - if the chdir to the canonicalized form of the pathname in + change_to_directory fails, try what the user passed. If that + succeeds, reinitialize the_current_working_directory to what + getwd() returns, and return success. Fix for pathological + cases like + + mkdir x + cd x + ( cd .. ; mv x y ) + cd . + + 2/24 + ---- +command.h + - added extern declarations for make_word_array, make_command, + make_bare_simple_command, and make_here_document + - added extern declarations for functions in copy_command.c: + copy_command, copy_word, copy_word_list, copy_redirect, + copy_redirects + +copy_cmd.c + - made all functions not used outside this file static + +execute_cmd.c + - removed extern declaration of make_word_array + + 2/25 + ---- +shell.c + - made non-interactive shell look for $BASH_ENV startup file rather + than $ENV (conflict with Posix.2) + +command.h + - broke the `union redirectee' out of the struct redirect, made + the union it's own typedef (REDIRECTEE), then added + REDIRECTEE redirectee to the struct redirect + - made the `dest' member of a REDIRECTEE a long. It matters on + some machines (sizeof(long) == sizeof(pointer) != sizeof(int) + and works on those machines with all those sizes being 32 bits + (this should really be a typedef rather than a long) + +execute_cmd.c, parse.y + - changed all calls to make_redirection to pass a WORD_DESC * or + a long as the third argument to make_redirection +[this should conclude the changes needed for the alpha] + + 3/2 + --- +subst.c, variables.c + - moved some function-scope extern function declarations to file + scope + +subst.c + - changed paramter_brace_expand_pattern to call expand_string_internal + on the removal pattern, since we do not want word splitting + +jobs.c + - call get_tty_state or set_tty_state in wait_for() depending on + a job's exit status when interactive_shell is set, rather + than testing interactive. This makes stty commands in scripts + executed with `.' `stick' + +nojobs.c + - make sure we only call {set,get}_tty_state when interactive_shell + is set + + 3/3 + --- +unwind_prot.c + - make sure there is actually something on unwind_protect_list + before calling without_interrupts to run something on it or + delete something from it + +jobs.c + - make sure job_slots is not empty in cleanup_dead_jobs and + delete_all_jobs before actually doing something + + 3/4 + --- +machines.h + - add #undef HAVE_GETWD to Xenix286 machine description + +lib/readline/history.c + - fixed an off-by-one error in the history expansion code: if + the length of the result string after adding the current piece + is (allocated_len - 1), the strcpy will write over the first + marker placed there by the malloc debugging code. + - changed the history realloc code to work in 256-character chunks + rather than 255-character ones + + 3/8 + --- +execute_cmd.c + - new variable exec_redirection_undo_list that holds redirections + that must be undone even when `exec' throws away + redirection_undo_list. These are copies of open files for + constructs like 7<&1. Set in add_undo_redirect and used in + execute_builtin_or_function. Disposed of otherwise. + + 3/9 + --- +execute_cmd.c + - fixed a memory leak in execute_builtin_or_function by adding an + unwind_protect to dispose of saved_undo_list + - anywhere do_redirections is called with INTERNAL==1 (which means + we make redirection_undo_list), arrange to clean up + exec_redirection_undo_list + +print_cmd.c + - massive namespace cleanups -- made almost all functions static + - new function `colon' to be called in place of `cprintf(";")' + to ensure that we don't print a `;' right after a `&' from + compound command printing functions (if, while, until, for) + +[put code out for FTP on 3/10] + + 3/11 + ---- +documentation/bash.1 + - removed the description of >&word as a way to redirect both + standard output and standard error + +endian.c + - moved new-endian.c to this. This handles 64-bit machines + directly + +lib/readline/readline.c + - rl_copy -> rl_copy_text to avoid clashes with Sun's libraries + - moved the completion code to a new file + +lib/readline/complete.c + - new file with the completion code from readline + +lib/readline/Makefile, cpp-Makefile + - added complete.c and complete.o to the necessary make variables + +subst.c + - added an entry to special_vars to make a change to $TERMINFO + cause readline to reset itself (sv_terminal()) + + 3/12 + ---- +builtins/exec.def + - free `command' if the exec fails + +machines.h + - change sgi machine description to define HAVE_GETWD + +lib/readline/history.c + - fixed a memory leak in read_history_range -- need to free + `buffer' before returning + - if read(2) returns <= 0 in history_truncate_file, then + immediately exit + - start checking at buffer[chars_read - 1] for newlines + +lib/readline/readline.c + - fixed a memory leak in rl_read_init_file -- `buffer' must + be freed before we return + - rearranged code in update_line so that we check for ols and + nls being in bounds before trying to compare their values + +parse.y + - fixed memory leak in read_token -- don't need to save `token' + into a fresh variable before calling push_string because + push_string does its own savestring in save_expansion + +subst.c + - fixed memory leak in expand_words_internal -- the word_list + allocated by the `@' case when expanding $@ needs to + be freed after turning it into a string with string_list + - fixed memory leak in expand_word_internal -- the string + returned by extract_dollar_brace_string needs to be freed + - fixed memory leak in expand_word_internal -- the string + returned by substring() in the `default:' case needs to be + freed + +variables.c + - fixed a free-memory reference in makunbound -- have to save the + value of `name' before calling dispose_variable, because it + might directly reference old_var->name. If so, then + stupidly_hack_special_variables will refer to freed memory + +dispose_cmd.c + - fixed a memory leak in dispose_command: if a group_command is + being disposed, need to free command->value.Group after + calling dispose_command (command->value.Group->command); + - fixed a memory leak in dispose_command: if a case command is + being disposed, need to free command->value.Case after + freeing everything else + +mailcheck.c + - fixed memory leak in remember_mail_dates -- need to + free the value returned by get_mailpaths() + - fixed memory leak in remember_mail_dates -- need to + free the value returned by extract_colon_unit() + + 3/13 + ---- +bashline.c + - fixed memory leak in bash_symbolic_link_hook -- + get_working_directory always returns newly-allocated memory + that must be freed + - fixed memory leak in bash_symbolic_link_hook -- + if `*dirname' is going to be replaced, the current contents + have to be freed (if non-null) + - make bash_symbolic_link_hook call get_working_directory with + a non-empty string for the value of `for_whom' + +execute_cmd.c + - make sure that execute_command cleans up after itself by + disposing the fd_bitmap it allocates + +shell.c + - fixed memory leak in reader_loop -- if throw_to_top_level is + called with DISCARD, the current command needs to be disposed + +lib/readline/complete.c + - when we return NULL to indicate the end of a set of completion + matches, free dirname, filename, and users_dirname -- there's + no reason to let them persist between calls, consuming memory + + 3/16 + ---- +shell.c + - when moving the `script' fd to the highest available fd, check + for getdtablesize returning -1 and default to 20 in that case + +jobs.c + - if getdtablesize returns something < 0, default to 20 + - check that getdtablesize() leaves `nds' set to something valid + before trying to dup2 shell_tty to it + +machines.h + - changed M_OS in KSR/1 description to OSF1 + +maxpath.h + - include sys/param.h if __ksr1__ defined + +parse.y + - changed declaration of the_time from long to time_t + +lib/readline/readline.c + - changed extern declarations for rl_basic_word_break_characters + and rl_completer_word_break_characters to file scope rather + than block scope + - changed declaration of chars_avail (param to FIONREAD ioctl) to + int, which it should have been all along + + 3/17 + ---- +jobs.c + - clamp nfds in initialize_jobs at 256 + +shell.c + - clamp the value returned by getdtablesize() to 256 + + 3/19 + ---- +execute_cmd.c + - make find_user_command_in_path return a pathname if it exists + and the caller wants FS_EXISTS files. This affects the `.' + builtin and files as script arguments to the shell (shell.c) + - clamp the highest-numbered file descriptior at 256 in + close_all_files(). + +jobs.c + - make get_tty_info print error message on tcgetattr failure only + if interactive != 0 (that is, we're really interactive now) + +lib/readline/rltty.c + - changed SETATTR macro to call tcsetattr with TCSANOW flag, since + this call is being used to affect an input file descriptor. + Ditto for the sys5 tty driver code and TCSETA (was TCSADRAIN and + TCSETAW, respectively) + - added a flag for ksr1 machines `ksrflow' which is the state of + suspended output for this process. If 1, this process has called + tcflow (tty, TCOOFF) to suspend output and tcflow(tty, TCOON) + may be called safely + - temporarily (?) disabled the code that simulates at ^Q at the end + of set_tty_settings. Let's see if it makes any difference + + 3/22 + ---- +execute_cmd.c + - new global variable (yucch) `current_fds_to_close' that is set to + the fd_bitmap passed to execute_simple_command while expand_words + is being executed so that this information is available to the + process substitution code + - set current_fds_to_close to NULL at start of execute_command + +subst.c + - change call to close_all_files in process_substitute to call + close_fd_bitmap (current_fds_to_close) + - fixed memory leak in parameter_brace_expand_length() -- need to + free the memory used to expand the PS1 in something like ${#PS1} + - fixed memory leak in expand_word_internal ${3:+posix} did not + free the memory used to expand the $3 + +documentation/bash.1 + - && and || have equal precedence; fixed up man page to reflect + this + + 3/23 + ---- +[fixes from bfox version of 1.13 dated 3/21/93 from eos.ucsb.edu] + +config.h + - #undef alloca before redefining it as __builtin_alloca + +cpp-Makefile + - compile newversion.c with $(CFLAGS) instead of $(DEBUG_FLAGS) + +general.h + - new #define: maybe_free(x) + +jobs.c + - alliant has same problem as NeXT wrt /usr/etc/rlogind and /dev/tty + - make delete_all_jobs be static void + +builtins/cd.def + - use maybe_free define + +builtins/common.c + - HAVE_VPRINTF --> HAVE_VFPRINTF + +builtins/test.def + - document -h as a synonym for -L + +lib/readline/history.c, lib/readline/rldefs.h + - #undef alloca before redefining it as __builtin_alloca + +lib/readline/history.c + - new functions history_get_state and history_set_state + +lib/readline/tilde.c + - put in #pragma alloca if on AIX machine + +support/getcppsyms.c + - recognize __GNUC__ and __STDC__ and pass them along as output + + 3/24 + ---- + +subst.c + - removed fully_quoted_word(), since it was unused + +execute_cmd.c + - added extern declarations for functions in dispose_cmd.c + - removed extern declaration of atol() + +parse.y + - added extern declaration for dispose_words() + +documentation/bash.1 + - re-added the description of >&filename as a way to redirect + both stdout and stderr to filename + +machines.h + - slight changes to the alpha description + +shell.c + - moved all the extern function declarations to have file scope + +print_cmd.c + - colon --> semicolon + +parse.y + - in read_token, if we're parsing an embedded quoted string, don't + bother with special processing of `$' and characters following + + 3/25 + ---- +print_cmd.c + - added a new function the_printed_command_resize to expand the + printed command buffer in cprintf() + +builtins/bind.def + - removed the unwind-protect code, because unwind_protect_pointer + is not guaranteed to work on a FILE * + +lib/readline/readline.c + - assign in_stream and out_stream immediately, because they may + be used before readline_internal is called + + 3/26 + ---- +cpp-Makefile + - allow for use of different compress programs with the use of + $(COMPRESS) and $(COMPRESS_EXT) + + 3/29 + ---- + +general.c + - new function set_lines_and_columns to set $LINES and $COLUMNS in + response to a SIGWINCH + +lib/readline/readline.c + - call set_lines_and_columns() in set_screen_size() to set the + right environment variables on a SIGWINCH (code needed to be + rearranged a bit to make this happen) + +jobs.c + - add a SIGWINCH handler to set $LINES and $COLUMNS if readline is + not being compiled into the shell and TIOCGWINSZ and SIGWINCH + are defined + +subst.c + - made dequote_string extern so `read' can use it + +builtins/read.def + - added CTLESC characters to represent escapes instead of doing + backslash processing internally + +braces.c + - fixed the brace expansion code so that backslash can correctly + act as an escape character, and escape `"' in a double-quoted + string + + 3/31 + ---- +make_cmd.c + - the `<>' redirection needs to open the file O_RDWR|O_CREAT + for Posix.2 compatibility + + 4/1 + --- +parse.y + - the function read_a_line was changed to take a flag telling it + whether or not to remove quoted newlines + - read_secondary_line was changed to call read_a_line with an arg + of 1, telling it to strip \ pairs + + These two changes fix two bugs with here documents: + 1. delimiter check occurs after \ stripping + 2. leading tab deletion occurs after \ stripping + +lib/readline/rldefs.h + - include if on Linux + +lib/readline/readline.c + - don't declare PC, BC, and UP if on Linux (??) + - change the conditional parsing code that handles the `$if term=' + construct to test the name given in the if command against both + the `long' and `short' forms of rl_terminal_name. For instance, + if `rl_terminal_name' were `sun-cmd', it would be tested with + stricmp against both `sun' and `sun-cmd' + +machines.h + - add HAVE_VFPRINTF to the Linux description + +unwind_prot.h + - change the unwind_protect_int macro to cast the second argument to + unwind_protect_var to a (char *), which is what unwind_protect_var + expects + +unwind_prot.c + - change unwind_protect_var to allocate memory and do a bcopy if the + size of the variable passed to save is not sizeof(int). That's + what restore_variable expects + +lib/readline/complete.c + - fixed rl_complete_internal so that it pays attention to the value + of rl_completer_quote_characters and quotes a match if the match + contains a word break character + +bashline.c + - set rl_completer_quote_characters to ' and " + + 4/5 + --- +lib/readline/complete.c + - changed rl_complete_internal so that an `attempted completion + function' may tell readline not to perform filename completion + if it fails by returning (char **) -1 + +bashline.c + - attempt_shell_completion should return (char **) -1 if doing + command word completion and no matches are found. This will + tell readline not to perform filename completion + + 4/6 + --- +builtins/common.c + - fixed the error message printer by get_working_directory: + `for_whom', shell_name, or `bash: ' is printed first; the + first non-empty one being printed. Explanatory text is + added to the error message + + 4/7 + --- +machines.h + - in the Sun section, define Solaris of either `USGr4' or __svr4__ + is defined + - Solaris 2 systems have sys_siglist, so don't #undef HAVE_SYS_SIGLIST + +jobs.c + - don't declare sys_siglist if on Solaris 2 + + 4/8 + --- +lib/readline/rldefs.h + - do not define USE_XON_XOFF. This causes output to be swallowed + when using bash over a relatively slow line (like a modem line). + This means that ^S and ^Q don't work on termio/termios systems; + use ^V to quote characters instead + +variables.c + - don't perform a get_working_directory on startup unless we did + not inherit $PWD or the inherited value of $PWD is wrong + +trap.c + - new functions: free_trap_strings and reset_original_signals. + Together they do the same thing as restore_original_signals() + +jobs.c, nojobs.c + - removed call to restore_original_signals from make_child. Now + callers have to handle this themselves + +execute_cmd.c + - added a call to restore_original_signals after make_child in the + child process everywhere make_child is called + +subst.c + - added call to restore_original_signals after make_child in + process_substitute + - added call to reset_signal_handlers after make_child in + command_substitute for the child process + + [THERE IS A PROBLEM WITH A TRAP on `0' -- it is inherited in the + child process started to run the command substitution] + +[These are fixes to make savetraps="$(trap)" work as Posix.2 specifies] + + 4/11 + ---- +bashline.c + - supply a value for rl_completer_word_break_characters; `$' is + not a shell word break character + + 4/13 + ---- +lib/readline/complete.c + - only look at adding quote characters to completion matches if + we're doing filename completion + +bashline.c + - don't supply a value for rl_completer_word_break_characters + + 4/14 + ---- +documentation/bash.1 + - clarify what the readline function shell-expand-line does + +jobs.c + - clean up dead jobs in wait_for even in non-interactive shells + rather than waiting for the next call to the parser + + 4/15 + ---- +bashline.c + - reorganized the shell_expand_line code; broke it up into several + discrete functions + - added new functions: history_and_alias_expand_line, + history_expand_line + - added a new emacs-mode command, M-!, bound to history-expand-line + + 4/18 + ---- +unwind_prot.c + - more fixes to the save-variable and restore-variable code, + mostly to make things work better on machines like the alpha + where sizeof(int) != sizeof(char *): + + save and restore now use identical logic and nearly + identical code to decide whether or not to use malloc and + bcopy or assignment + +builtins/common.c + - new functions to manage the state of the dollar variables: + + dollar_vars_changed - return 1 if the dollar variables have + been changed + set_dollar_vars_changed - set the state of dollar variable + modification to `changed' + set_dollar_vars_unchanged - set the state of dollar variable + modification to `unchanged' + +builtins/source.def + - new function: maybe_pop_dollar_vars. This is called so that the + `.' command will restore the dollar variables only if the script + run with . has not changed them. If the script changed $@, the + new values should stay in place + - changes to source_builtin to set the state of the dollar + variables to `unchanged' before executing the script, and calling + maybe_pop_dollar_vars() to decide whether or not to restore the + dollar variables and to do so if warranted + +machines.h + - new description for NEC EWS4800, from m-hirano@sra.co.jp via + hikichi@sra.co.jp + + 4/19 + ---- +support/mksysdefs + - check for both /hp-ux and /bin/uname before deciding a machine + should be checked for an HP/UX revision level + + 4/22 + ---- +input.h, general.h, lib/readline/readline.h, lib/tilde/tilde.h + - added typedefs for CPFunction (pointer to function returning + pointer to char) and CPPFunction (pointer to function returning + pointer to pointer to char) + +execute_cmd.c + - replaced all instances of (int)redirectee in do_redirection_internal + with a variable redir_fd, which is set to redirectee.dest + +print_cmd.c + - replaced all instances of (int)redirectee in print_redirection + with a variable redir_fd, which is set to redirectee.dest + +maxpath.h + - #include on OSF/1 systems + +subst.c + - added extern declaration for list_append + - changed sv_allow_null_glob_expansion to compare the return value + from find_variable to NULL to set the value of + allow_null_glob_expansion + +parse.y + - fix the assignment_acceptable macro so we cannot return + ASSIGNMENT_WORD while in the middle of a case statement pattern + list (in_case_pattern_list != 0) + +general.c + - Linux has gethostname() and does not need the emulation + +jobs.c + - Linux has a declaration for sys_siglist that conflicts with the + extern declaration; use the one from the standard include file + - the sigprocmask emulation did not handle NULL arguments in + oldset and newset; check them before using + + 4/23 + ---- +lib/readline/complete.c + - use single_quote() to quote a completion replacement with + embedded occurrences of characters from rl_completer_quote_characters + + 4/26 + ---- +print_cmd.c + - redid cprintf() for systems without varargs to be what bfox has + (using char * where bfox has void *) + +parse.y + - make read_secondary_line take an argument telling it whether or + not to have read_a_line remove quoted newlines + +make_cmd.c + - pass an argument to read_secondary_line saying whether or not to + remove quoted newlines, set to 1 if the delimiter of a here + document is unquoted + + 4/28 + ---- +builtins/ulimit.def + - added -u option to set and get the max number of processes + available to a user; available on systems which define + RLIMIT_NPROC + - added better handling of getrlimit failures to ulimit_builtin + +cpp-Makefile + - made $(HOSTTYPE_DECL) appear on the cc command line before the + $(CPPFLAGS) when making variables.o + + 4/29 + ---- +lib/readline/complete.c + - added an extern declaration for getpwent() for isc386 machines + where __STDC__ is not defined and _POSIX_SOURCE is + + 4/30 + ---- +general.c + - new function legal_identifier, which returns 1 if a string + passed is a legal shell identifier and 0 otherwise. Used + to decide what is and is not a legal variable name for the + expansion functions + +subst.c + - make expand_word_internal check that a ${ } expression + that starts with a digit is composed of all digits before + deciding that a variable starting with a digit is special + (setting var_is_special to 1) + - new function valid_brace_expansion_word (name, var_is_special) + returns 1 if name is a legal lhs of a brace expansion + expression + - make expand_word_internal check an identifier for validity + before passing it off to parameter_brace_expand_word by calling + valid_brace_expansion_word () + - new function valid_length_expression (name) returns 1 if NAME is + something that can be passed to parameter_brace_expand_length(); + called from expand_word_internal before calling + parameter_brace_expand_length() + + + These fix the following: + ${#} was treated as x=$, ${#x} + ${} was treated as ${} + ${} was not flagged as an error + ${#} was not flagged as an error + + 5/2 + --- +input.c + - make check_bash_input change the value of default_buffered_fd + if it moves the input fd to a new fd as the result of a + redirection + +execute_cmd.c + - don't make do_piping try the dup2 and close if pipe_out == + REDIRECT_BOTH (-2) -- it's useless work + - add error checking to do_piping to see if the dup2 calls fail + and why + +error.c + - new function internal_error for shell internal error messages + +jobs.c + - changed some fprintf(stderr, ...) calls to internal_error() + calls + + 5/3 + --- +execute_cmd.c + - do not change the buffered stream associated with a file descriptor + when processing an r_inputa_direction redirection in + do_redirection_internal + +jobs.c, nojobs.c + - don't sync the buffered stream associated with default_buffered_input + in make_child if the shell is reading input from fd 0 and running an + asynchronous command + + 5/4 + --- + +execute_cmd.c + - if the shell is not interactive, clean up the dead jobs each time + we call execute_command () + +jobs.c + - new function, mark_dead_jobs_as_notified + - if the shell is not interactive, mark all dead jobs as notified in + notify_and_cleanup so that cleanup_dead_jobs frees up the slot in + the jobs array + +nojobs.c + - make cleanup_dead_jobs call reap_zombie_children on Posix systems, + so the shell doesn't keep growing in size as more jobs accumulate + before a call to wait_for() + + 5/6 + --- +jobs.c + - take the code that resets the signal handler out of flush_child; + it should be done in wait_for + - new function reap_dead_jobs to be run by non-interactive shells + that marks all dead jobs as notified and cleans up the job list + - removed the code from notify_and_cleanup that marks dead jobs as + notified if the shell is not interactive + +execute_cmd.c + - took the code that cleaned up dead jobs out of execute_command + There is a problem when this is run as the result of a trap on + SIGINT and the trap command is called directly from flush_child -- + a job slot can disappear out from underneath flush_child and + wait_for and cause the shell to abort + - added a new define REAP that causes a non-interactive shell to + clean out the job table by calling reap_dead_jobs or + cleanup_dead_jobs + - added calls to reap to execute_for_command and + execute_until_or_while + +nojobs.c + - changed wait_sigint_handler to not do anything when it is called, + not even run a signal handler + - changed wait_for to call the old sigint handler if a foreground + process exits due to a SIGINT + + [these make nojobs.c behave like jobs.c when waiting for a job in + a non-interactive shell] + +config.h.mini + - new `minimal' configuration file + + 5/7 + --- +subst.c + - make sure that command_substitute closes the pipe file descriptors + if there is a goto error_exit + + 5/10 + ---- +nojobs.c + - add a SIGWINCH handler to set $LINES and $COLUMNS if readline is + not being compiled into the shell and TIOCGWINSZ and SIGWINCH + are defined + +[code put out for FTP on slc2.ins.cwru.edu] + + 5/11 + ---- + +braces.c + - commas within backquotes inside matching braces are now treated as + quoted (e.g., echo {`echo foo:bar | sed s/:/,/`}) + +lib/readline/search.c + - added extern declarations for xmalloc, xrealloc + + 5/12 + ---- +lib/malloc/malloc.c + - added a #define wrapper around the sbrk() declaration so that it's + not declared as char * if hpux_8 or VOID_STAR_SBRK are defined + +subst.c + - changed sense of #ifdef so that unless KSH_INCOMPATIBLE is defined + ${#@} and ${#*} are equivalent to $# + + 5/13 + ---- +execute_cmd.c + - don't create the export env unless we are running a command with + shell_execve (in execute_disk_command) + +jobs.c, nojobs.c + - don't create the export env in make_child (why were we doing this + in the first place?) + +hash.c + - removed declaration of initialize_hashed_filenames, which is unused + +subst.c + - make list_rest_of_args, list_string, and the brace expansion code + in expand_words_internal use the REVERSE_LIST macro rather than a + call to reverse_list() + +make_cmd.c, copy_cmd.c + - change uses of reverse_list to REVERSE_LIST + + 5/17 + ---- +execute_cmd.c + - make execute_disk_command look in the temp environment for an + assignment to PATH, and disable hash lookup for the command if + such an assignment is present + + 5/18 + ---- +parse.y + - changed read_a_line so that a backslash can quote a \ + pair and prevent its removal when remove_quoted_newline is 1 + + 5/19 + ---- +siglist.h + - new file, to encapsulate the declarations of sys_siglist and + provide a `strsignal' macro + +jobs.h, siglist.c, longest_sig.c + - include siglist.h + +jobs.c, nojobs.c + - removed declaration of sys_siglist + + 5/20 + ---- +execute_cmd.c + - don't set up the loop_redirections unwind-protect unless there + are actually some redirections + - combined the AND_AND and OR_OR cases of execute_command_internal + to remove some duplicated code + - folded two tests together in the simple command case of + execute_command_internal to remove a layer of indentation and + braces + - don't set up the unwind_protect in execute_simple_command unless + the command actually expands to something + - broke the code that executes functions and builtins out into new + functions (execute_function and execute_builtin) and changed + execute_builtin_or_function and execute_subshell_builtin_or_function + to call them + - replaced the async_redirections unwind-protect in + execute_disk_command, since there's no reason to do it if we're + already in a subshell and simply going to exit if the redirections + fail + - set up the unwind-protect on saved_undo_list in + execute_builtin_or_function only if there are redirections saved + in saved_undo_list + - only call do_redirections in execute_disk_command if there are + redirections to perform -- no need for the side effects since + we're in a subshell + + 5/21 + ---- +parse.y + - make read_a_line, shell_getc, decode_prompt_string, prompt_again, + bash_add_history, reset_readline_prompt, read_token, discard_until, + shell_ungetc static functions + - eliminated the after_preprocess label in shell_getc + - broke the prompt command execution code out into a separate + function: execute_prompt_command + +subst.c + - combined some common code in extract_string_double_quoted for the + $( ) and ${ } cases + - changed the allocation scheme in string_list_internal to hopefully + reduce the number of allocations + - added a new define SET_INT_VAR and changed all of the sv_* + functions that set a variable depending on whether or not a + variable exists to use it + +variables.c + - declare argument to getenv as `const char *' on Linux + +machines.h + - Linux has the fixed include files if gcc is being used to compile + the shell + + 5/23 + ---- +subst.c + - only call rl_reset_terminal in sv_term if no_line_editing is 0 + (which means we're actually using readline) + + 5/25 + ---- +execute_cmd.c + - changed execute_for_command to explicitly call the functions that + were to be called by the unwind-protect code (e.g., dispose_words), + and changed the run_unwind_frame call to a call to + dispose_unwind_frame. This is to avoid using the kernel to block + interrupts as much as possible + - did the same for execute_case_command and execute_builtin + +jobs.c + - only run traps on SIGCHLD if job_control != 0 + + 6/3 + --- +unwind_prot.c + - have without_interrupts call QUIT only if interrupt_immediately + is set to 1 + + 6/7 + --- +machines.h, jobs.h, lib/readline/chardefs.h, maxpath.h + - changes for Solaris 2 with gcc from Greg Onufer + +lib/malloc/malloc.c + - define NO_SBRK_DECL if hpux_8 or Solaris + - declare sbrk as extern char * unless NO_SBRK_DECL is defined. + VOID_STAR_SBRK has been removed + +lib/readline/readline.c + - changed a call to alloca to a call to xmalloc to avoid problems + on the DEC alpha (can't pass memory allocated with alloca to + another function) + - moved key binding and startup file code to bind.c + +lib/readline/rldefs.h + - created common definitions for emacs_mode and vi_mode + +lib/readline/bind.c + - new file containing the key binding and startup file code. + + 6/8 + --- +lib/readline/readline.c + - changed rl_message to use varargs, if HAVE_VARARGS_H is defined + +lib/readline/rldefs.h + - include if HAVE_VARARGS_H is defined + +lib/readline/{readline.c,bind.c,rltty.c,vi_mode.c,search.c} + - cleaned up the namespace by prefixing all pseudo-global readline + variables (variables private to the library but used in multiple + files) with _rl_ + + 6/10 + ---- +[changes from bfox] + +bashansi.h + - new file, including both string.h and ansi_stdlib.h + +dispose_cmd.h, make_cmd.h, subst.h + - new files containing extern function declarations + +endian.c + - for machines with sizeof(long)==8, shift by 31, then 1 to fake + out gcc 2.4, which complains when you shift by 32 + +general.h + - added an include of string.h or strings.h + - changed the declarations of the savestring() and member() macros + +shell.c + - changed the structure of the long_args struct to be more portable + +subst.c + - made dequote_string and dequote_list static + +[end of changes from bfox] + +general.h + - added extern declarations for all of the non-int functions + defined in general.c + + + - removed extern declarations that appear in one of the bash header + files + + 6/15 + ---- +lib/readline/readline.c + - incorporated a patch to rl_transpose_chars from Tom Tromey + which allows C-t to be undone + - fixed rl_rubout so the fast screen fixup when deleting the + last character on the line handles characters that are more + than one screen position wide by erasing the right number of + physical characters + + 6/16 + ---- +siglist.h + - don't declare sys_siglist on 4.4 BSD + +builtins/mkbuiltins.c, lib/readline/history.c + - include if HAVE_UNISTD_H is defined + + 6/19 + ---- +machines.h + - new description for the Intel Paragon running OSF/1 + +support/getcppsyms.c + - new variables for the paragon (__i860__, __PARAGON__, etc.) + +documentation/bash.1 + - make it clear the the -noprofile switch disables the sourcing + of ~/.bash_login and ~/.profile as well as /etc/profile and + ~/.bash_profile + + 6/23 + ---- +shell.c + - instead of calling maybe_execute_file on "/etc/profile", + use a #define for SYS_PROFILE, which is initially defined + to be "/etc/profile" by default + +lib/readline/isearch.c + - new file, with the isearch code + +lib/readline/display.c + - new file, with the incremental redisplay code + +lib/readline/readline.c + - removed the isearch, display code + + 6/24 + ---- +lib/readline/readline.c + - removed the signal-handling code + +lib/readline/signals.c + - new file with the signal-handling code + + 7/1 + ---- +test.c + - changed the `advance' macro to get around some picky compilers + +machines.h + - machine description for hp9000 running 4.4 BSD + +support/getcppsyms.c + - recognize __BSD_4_4__ for 4.4 BSD machines + +builtins/souirce.def + - cast the st_size stat struct member to int because it's + 64 bits on 4.4 BSD + +lib/readline/signals.c + - include if compiling on a 4.4 BSD machine + + 7/2 + --- +builtins/read.def + - if $IFS is unset it defaults to "" when splitting the line + read into words (so no splitting is performed) + + 7/5 + --- +shell.c + - remove SIGKILL from terminating_signals[] -- it can't be caught + or ignored + - make terminating_signals[] static + - make terminating_signals[] an array of structs that hold the signal + number and the original handler + - change initialize_terminating_signals to use the new struct termsig + and to set the original handlers for all the terminating_signals + - new function reset_terminating_signals to restore original handlers + for all terminating signals in terminating_signals[] + +trap.c + - new function signal_is_special, returns 1 if a signal is one of + the signals the shell treats specially + - call reset_terminating_signals from restore_original_signals + +getcwd.c + - changed call to `stat' to call `lstat' to keep symlinks that + point to non-existant files from causing getcwd to fail + - if S_ISLNK is not defined after inclusing `posixstat.h', use + a cpp #define lstat stat + +machines.h + - new entry for Symmetric 375 running 4.2 BSD + +support/getcppsyms.c + - recognize and pass along `scs' for the Symmetric 375 + +lib/readline/bind.c + - new function: rl_set_keymap_from_edit_mode, which sets the + keymap appropriately depending on the editing mode as if we + were about to edit a command line + + 7/6 + --- +lib/termcap + - new code from the GNU termcap library distribution 1.02 + +endian.c + - include bashansi.h + +shell.c + - fall back to sourcing $ENV if $BASH_ENV is not found + +variables.c + - make add_or_supercede search `array' only if it is non-null + + 7/7 + --- +subst.c + - made do_assignment_internal an int function that returns 1 if + the assignment was made correctly and 0 if it was not + - do_assignment and do_assignment_no_expand now return the value + from do_assignment_internal + +variables.c + - made assign_in_env return 1 if everything appeared to go + successfully (which it always does) + +cpp-Makefile + - add variables.c as an explicit dependency for variables.o; there + appears to be a bug in Gnu make + +braces.c + - removed static version of copy_array since there's already one + in general.c, declared extern in general.h + +lib/malloclib + - updated to sources from Gnu libc 1.06 + + 7/9 + --- +shell.h + - new struct: user_info, containing uid, gid and passwd file info + about the current user + +shell.c + - new variable current_user of type struct user_info + - eliminated passwd_shell, passwd_dir, and current_user_name + +subst.c + - rewrote sv_uids to use the info in current_user.uid and .euid + and to use itos rather than sprintf + +variables.c, mailcheck.c, test.c, execute_cmd.c, parse.y + - changed to use current_user.user_name rather than current_user_name + and to use current_user.shell and current_user.home_dir instead of + passwd_shell and passwd_dir, respectively + +flags.c, flags.h + - new flag, `-p' for `privileged', a la ksh. This is set automatically + if uid != euid || gid != egid + - if +p, set the real and effective uids and gids to the real uid and + gid + +flags.c + - include shell.h for the current_user struct and don't explicitly + include header files included by shell.h + +builtins/set.def + - code to handle -p and -o privileged + +documentation/bash.1 + - added documentation for set -p/set -o privileged + - added documentation for bind -m keymap + - added documentation to readline section for non-inc search bindings + +builtins/bind.def + - documented the -m keymap option + + 7/10 + ---- +machines.h + - new description for NeXTstep running on intel 486 + +lib/tilde/tilde.c + - fixed up definition of savestring macro + +bashline.c + - changed attempt_shell_completion so that when completing command + words and no matches are found, it tells readline to perform + filename completion but sets the completion ignore function + to one that will ignore all filenames matched, leaving only + directories in the list of matches + - generalized the ignore processing, breaking the body of the + existing ignore function into a generic function that takes as an + argument a pointer to a function used to test each filename in the + match list for `acceptability' + - added a new ignore function to support the `ignore filenames' + behavior described above + + 7/12 + ---- + +machines.h + - add #undef HAVE_GETCWD to Motorola M88100 description +[put code out for FTP on slc2.ins.cwru.edu] + + 7/13 + ---- +builtins/type.def + - broke the code that does the work of the type builtin out into a + separate function and added a couple of other display options, + for eventual use by command -v and -V + +builtins/bashgetopt.c + - added a new function `report_bad_option' + +builtins/jobs.def, bultins/histctl.def + - changed to use report_bad_option + +builtins/command.def + - added the Posix.2 -v and -V options + + 7/14 + ---- +execute_cmd.c + - make sure that execute_command_internal sets redirection_undo_list + and exec_redirection_undo_list to NULL after making local copies + so things don't get undone twice. This can happen as the result + of an `fc' redoing a command with redirections: + wc subst.c > xxx & + r + [bug report from Ian Watson] + +builtins/setattr.def + - converted to use internal_getopt, so export and readonly both use + it + +builtins/bashgetopt.c + - changed the default error messages a little bit + +shell.h + - new exit values: EX_NOEXEC, for when a command name is not + executable (126), and EX_NOTFOUND, for when a command is not + found (127) + +execute_cmd.c + - change to use EX_NOEXEC and EX_NOTFOUND + +parse.y + - broke function definitions off into their own production, + function_def + + 7/15 + ---- +builtins/kill.def + - added code so that signals are listed by kill -l in the manner + specified by Posix.2 if the POSIXLY_CORRECT variable exists in + the environment + - Posix.2 UPE says kill can take % job control arguments even if + job control is disabled, so let interactive shells use them + +parse.y + - decode_prompt_string now performs the Posix.2 ! expansion for + $PS1 and $PS2, if POSIXLY_CORRECT is turned on + +builtins/exec.def + - changed exit status to be in line with Posix.2 specification + (127 for not found, 126 for not executable) + +builtins/wait.def + - unknown jobs should cause wait to return 127 + +shell.c + - change the behavior of sh -c so that if POSIXLY_CORRECT is in the + environment, the first argument after -c command is assigned to + $0, and the rest of the arguments, if any, are bound to $1 ... $n + Posix.2 4.56.3 specifies this behavior + - move the code that does -c command out of the !local_skip_execution + block. I can't see why it was there in the first place + - made some of the private variables static to clean up the name + space + - moved the code that runs the startup files into a separate + function: run_startup_files. This is called with an argument + telling it whether or not to use the Posix.2 startup file sequence + ($ENV). This argument is 1 if POSIXLY_CORRECT is found in the + environment at startup + +builtins/fg_bg.def + - bg needs to set last_asynchronous_pid when restarting a job in + the background, as per Posix.2, 5.4.2 + +jobs.c + - make sure the status of exited jobs is printed as Done(n) where + `n' is the exit status, if POSIXLY_CORRECT is specified + + 7/16 + ---- +general.c + - fixed a problem with canonicalize_pathname which made it get + confused with xxx/./yyy if yyy was `.' or `..' + +parse.y + - broke the code in read_token that checked for reserved words + into a macro: CHECK_FOR_RESERVED_WORD + - if posixly_correct is 1, read_token does not allow reserved words + to be aliased (checks for reserved words before doing alias + expansion). See Posix.2 3.3.1 + - changed the function_def production to make redirections + specified with a function definition bind to the function + rather than to the definition. This introduced 66 (!) + bison shift/reduce conflicts. From Posix.2 3.9.5 + - if `posixly_correct' is set, <>word will open word for read/write + on fd 0, rather than fd 0 and fd 1 as normal + +builtins/source.def + - removed the ALLOW_RIGID_POSIX_COMPLIANCE define; the check for + POSIXLY_CORRECT will always be performed + +shell.c + - new long option: -posix, sets posixly_correct to 1 + - posixly_correct set to 1 in main if POSIXLY_CORRECT found in + shell environment + +subst.c + - new function sv_strict_posix, sets value of posixly_correct + depending on $POSIXLY_CORRECT + - if posixly_correct is set, don't do tilde expansion on + =~ in words that are not shell assignment statements + +execute_cmd.c, jobs.c + - removed calls to getenv("POSIXLY_CORRECT") with checks of + posixly_correct + - if posixly_correct is set, don't translate >&x into >x 2>&1 + +expr.c + - implemented the OP= Posix.2 arithmetic assignment operators + (see Posix.2 table 2.15, section 2.9.2.1, and section 3.6.4) + +documentation/bash.1 + - added documentation of new arithmetic evaluation assignment + operators + - documented the new -posix long option + + 7/17 + ---- +builtins/setattr.def + - made set_or_show_attributes correctly quote the values of shell + variables it prints so the output of `export' or `readonly' can + be used as input to the shell + +builtins/fc.def + - made fc write its output as Posix.2 5.12.6.1 specifies: when not + numbering, the command should still be output with a leading tab + +variables.c + - if `posixly_correct' is true, bash uses ~/.sh_history as the + default value of $HISTFILE + +shell.c, subst.c + - if posixly_correct is true, turn on interactive comments, since + that's what Posix.2 says to do + + 7/20 + ---- +lib/malloclib/{malloc.c,free.c,malloc.h} + - bug fix from Mike Haertel + +builtins/mkbuiltins.c + - added code so that the Posix.2 `special' builtins have + SPECIAL_BUILTIN added to the flags in their entry in the + builtins array defined in builtins.c + +shell.c + - declare `restricted' as `extern int', since it's already + declared in flags.c + +lib/readline/bind.c + - only try to set the keymap to vi_insertion_keymap in + rl_set_keymap_from_edit_mode if VI_MODE is #defined + +lib/malloc/malloc.c + - define NO_SBRK_DECL for hpux_9 + +machines.h + - hpux_9 needs to link with libPW.a to pick up alloca(), which + has reportedly been fixed + +lib/tilde/Makefile + - add a definition for RM to the makefile + + 7/21 + ---- +documentation/Makefile + - added info, dvi targets + - changed `squeaky-clean' to `distclean' + - use $(MAKEINFO) in recipes rather than `makeinfo' + +bashline.c + - fixed memory leak in cleanup_expansion_error + - fixed up some extern declarations of pre_process_line + +cpp-Makefile + - define HAVE_FIXED_INCLUDES by default if we're using gcc + + 7/27 + ---- +machines.h + - add -ldgc to the DG/UX description if we're not building an + `M88KBCS_TARGET' + + 7/28 + ---- +shell.c + - always initialize top_level_mask from what the shell inherits, + even for login shells + +lib/tilde/tilde.c + - declare the getpw functions only for USG systems + + 7/30 + ---- +lib/readline/readline.c + - new function: _rl_kill_kbd_macro () to cancel any keyboard + macros being defined on a SIGINT + +lib/readline/signals.c + - call _rl_kill_kbd_macro on a SIGINT + +bashline.c + - don't bind anything with a META via rl_add_defun; change those to + add the definition unbound, then explicitly bind it into + emacs_meta_keymap + + 8/3 + --- +bashline.c + - save and restore the value of rl_startup_hook when using it in + special editing functions + + 8/4 + --- +general.c + - new global variable: global_error_list, returned instead of -1 + from functions returning lists + - changed delete_element to return &global_error_list instead of + (char **)-1 + +braces.c, general.c, expr.c + - removed the conditional definition of NULL; it should be defined + in general.h + +lib/glob/glob.c + - new global variable: glob_error_return, returned instead of + (char **)-1 to signal a glob error + - changed functions to return &glob_error_return instead of + (char **)-1 + +subst.c + - fix the GLOB_FAILED macro to test against &glob_error_return + rather than (char **)-1 + +builtins/ulimit.def + - cleaned up the casts like (long) -1; changed to -1L, which is + equivalent and more correct + +lib/readline/complete.c + - use the address of a new local variable `dead_slot' to mark + dead slots in the list of completion matches rather than + (char *)-1, which doesn't work everywhere + +lib/readline/history.c + - have get_history_word_specifier return the address of a static + variable `error_pointer' in case of error, rather than (char *)-1 + +lib/readline/signals.c + - if SHELL is defined, don't mess with SIGTSTP, SIGTTIN, or SIGTTOU + +lib/readline/vi_mode.c + - make rl_vi_change_case skip over characters that are neither + upper nor lower case + + 8/5 + --- +lib/readline/funmap.c + - made qsort_string_compare compare the first characters of the + two strings before calling strcmp() + +builtins/bind.def + - rewrote to use internal_getopt + - map specifications made with -m now affect all other options + and binding specifications + - no processing is done until all the options have been processed + - the -q option is now limited to a single argument, as the + documentation has always stated + +lib/readline/vi_mode.c + - fixed the `r' command so that the replacement is saved, and it + is redoable + +command.h + - add `line' members to the simple_command and command structs to + keep track of the line number the command appears on for $LINENO + +make_cmd.c + - save line number when making a `bare' simple command to the value + of line_number + - save the first line of a function definition in make_function_def + +copy_cmd.c + - make sure that the line number information is copied with a command + +execute_cmd.c + - use the line number attached to the start of a function definition + and the line number of commands to update line_number while a + function is executing + + 8/6 + --- +config.h, config.h.mini, cpp-Makefile + - made ONESHOT a configuration option rather than a cpp define in + cpp-Makefile + +builtins/fc.def, builtins/getopts.def + - removed the code that defines NULL if undefined -- these files + include general.h, which already does that + +lib/posixheaders/stdc.h + - new file containing macros so that functions can be defined with + prototypes using the __P macro and compile on both ANSI C and + `traditional' C compilers + +lib/malloc/malloc.c + - changed the ASSERT macro to use a new __STRING define when calling + botch(), so that ANSI C systems see the correct error string + rather than `p' (unfortunately, the MAGICx constants are expanded + in the string passed to botch()) + + 8/7 + --- +bashline.c, execute_cmd.c, variables.c, parse.y, make_cmd.c, jobs.c + - removed extern declarations of functions already declared as extern + in bash header files + +execute_cmd.c + - include lib/tilde/tilde.h + - include builtins/common.h + - include builtins/builtext.h for the extern declarations for the + shell builtins + - moved vfree() to general.c + +builtins/common.c + - made dotted_filename static + - made builtin_address_internal static + +builtins/common.h + - new file with extern declarations for all functions defined in + common.c + +variables.h + - added extern declaration of qsort_string_compare, assign_in_env + +mailcheck.c + - removed full_pathname (), since it is a function of general use + +general.c + - moved full_pathname () here from mailcheck.c + - moved vfree() here from execute_cmd.c + +general.h + - added extern declaration for full_pathname + +subst.h + - added extern declaration for dequote_string + +jobs.h + - added external declarations for wait_for_background_pids and + wait_for_single_pid + +parse.y + - new function: find_reserved_word + +builtins/{alias,builtin,cd,exec,exit,hash,read,setattr,shift,trap,wait}.def + - removed extern declarations, replaced with inclusion of common.h + +builtins/type.def + - include common.h, remove extraneous extern declarations + - call find_reserved_word instead of searching word_token_alist + +builtins/bashgetopt.h + - new file, extern declarations for stuff defined in bashgetopt.c + +builtins/{bind,command,fc,histctl,jobs,setattr}.def + - include bashgetopt, removed internal getopt extern declarations + +cpp-Makefile, builtins/Makefile + - add dependencies on bashgetopt.h to builtins + - add dependencies on common.h to builtins + +nojobs.c + - wait_for_background_pids should be void + + 8/9 + --- +builtins/common.c + - new function, double_quote(), to double-quote strings + +documentation/bash.1 + - added text specifying return value of `command -[vV]' + - added description of the -E option to echo + - added text specifying that `enable' accepts -a in place of -all + + 8/10 + ---- +shell.c + - since non-Posix systems with job control use top_level_mask, + it needs to be initialized correctly by + initialize_terminating_signals + +mailcheck.c + - fixed mailpath-parsing code to correctly handle backslash-quoted + `?' and `%' in the $MAILPATH entries by adding a function + parse_mailpath_spec to return a pointer to the first unquoted + `?' or `%' and having remember_mail_dates and check_mail call it + +documentation/bash_builtins.1 + - new man page for bash builtins, from jaws@pangaea.dme.nt.gov.au + (implemented by using number registers as flags and sourcing + bash.1) + + 8/16 + ---- +bashline.c + - have maybe_make_readline_line use rl_delete_text rather than + rl_kill_text because the text need not be saved on the kill + ring + + 8/17 + ---- +jobs.h + - don't include extern declarations for fork(), getpid(), or + getpgrp() if __SVR4_2__ is defined (Unixware, SVR4.2). + __SVR4_2__ used as in siglist.h + +test.c + - don't include extern declarations for getegid(), getgid(), + or geteuid() if __SVR4_2__ is defined (Unixware, SVR4.2) + + 8/18 + ---- +execute_cmd.c + - don't check that the current directory in the path is `.' if + we've already found `.' in the path in find_user_command_internal + - new function make_full_pathname, to glue `path' and `name' + together in find_user_command_internal rather than using sprintf, + which is very slow + + 8/19 + ---- + +support/mksysdefs + - packaged all of the uname calls into one block at the top of the + script; uname sets up some script variables: + + UNAME + UNAME_R + UNAME_M + RELEASE + LEVEL + - make sure machines running SVR4.2 have __SVR4_2__ defined + +machines.h + - for i386 machines running SVR4.2, make sure that __SVR4_2__ is + added to SYSDEP_CFLAGS + +test.c + - changed the test_exit define to use the do { ... } while(0) idiom + - made GID_T and UID_T be int for BSD/386, since that's what + getgroups() returns + - cast both sides of a test to UID_T or GID_T to make sure we're + on the same page when testing + +lib/readline/bind.c, lib/readline/readline.c + - fixes to deal with the Cray's pointers of different sizes -- + pointers to functions are a different size than pointers to + structs + + 8/20 + ---- +machines.h, test.c, jobs.h, siglist.h, support/mksysdefs + - changed __SVR4_2__ to USGr4_2 + +support/getcppsyms.c + - added support for recognizing __SVR4_2__ and USGr4_2 + + 8/23 + ---- + +variables.c + - added a static variable that keeps track of whether or not + function local variables have been created with the `local' + or `typeset' builtins and short-circuits the call to + kill_all_local_variables if none have been created + +lib/readline/vi_mode.c + - extern declaration for rl_vi_check and rl_digit_loop1 + - declare `count' argument to rl_vi_delete + - made rl_vi_set_last a void function + +lib/readline/bind.c + - declare `count' argument to strnicmp + +lib/readline/readline.c + - made rl_add_undo, free_undo_list void functions + +lib/readline/readline.c, lib/readline/bind.c, lib/readline/search.c, +lib/readline/vi_mode.c + - changed return; to return 0; and added explicit returns to many + `int' returning functions that didn't return a value + + 8/24 + ---- +builtins/ulimit.def + - check for RLIMIT_RSS being defined before trying to use it + +machines.h + - fixes to cray machine description from Bill Jones + +builtins/common.c + - make all of the dollar_arg_stack stuff static + +lib/malloc/alloca.c + - new version, from emacs 19 + + 8/26 + ---- +lib/readline/complete.c + - use double quotes to quote replacement text with word breaks + rather than single quotes, which inhibit tilde expansion + +lib/readline/vi_keymap.c + - changed TAB to default to completion for the VI insert keymap + +bashline.c + - new function: posix_readline_initialize to make any changes + to the readline keymaps when switching into and out of Posix.2 + mode + - call posix_readline_initialize from initialize_readline + +subst.c + - call posix_readline_initialize from sv_strict_posix + + 8/27 + ---- +subst.c + - changed USE_GLOB_LIBRARY to USE_POSIX_GLOB_LIBRARY to make the + intent clear + +shell.c + - new function, issock(fd) returns 1 if FD is a socket according + to fstat(2) -- note that this only works if S_ISSOCK is defined + in posixstat.h + - run_startup_files calls issock to see whether or not to run + the .bashrc + +input.c + - include general.h for declarations of xmalloc, xrealloc + +lib/tilde/tilde.c, lib/tilde/tilde.h + - tilde_expansion_failure_hook is now a pointer to a CPFunction, + since that's how it's used + +lib/readline/history.c + - include or as appropriate + + 8/29 + ---- +machines.h + - avoid `M_MACHINE redefined' messages in the hpux description + + 8/30 + ---- +jobs.h + - added #defines for sigfillset, sigdelset, and sigismember to fill + out the Posix.1 signal functions + +general.h + - add an extern declaration for getwd() + +general.c + - NeXT machines already have a vfree() with a declaration in stdlib.h, + so don't define our vfree() on those systems + +cpp-Makefile + - NeXT machines don't have a link to `gcc', so make sure that + HAVE_GCC is not defined on those machines, even if __GNUC__ is + +lib/readline/readline.h, lib/readline/complete.c + - rl_attempted_completion_function is now declared as a pointer to + a CPPFunction, since that's how it is used + +bashline.c, bracecomp.c + - fixed assignments to rl_attempted_completion_function, since it's + now a pointer to a CPPFunction + +lib/readline/keymaps.h + - fleshed out declarations of function types inside __FUNCTION_DEF + macro to match other files + +lib/readline/readline.h + - removed typedefs for function pointer types, since they are now + declared in keymaps.h + + 8/31 + ---- + +lib/readline/complete.c + - if there is more than one match, don't quote the replacement + text unless the matching prefix has a word break character. The + old code quoted the replacement if any of the possible replacements + had a word break character + +builtins/alias.def + - fixed memory leak -- free the array returned by all_aliases when + alias is called without arguments + +builtins/read.def + - fixed memory leak -- need to free return value from + string_list_dollar_star + +builtins/fc.def + - fixed memory leak -- need to free return value from fc_readline + +builtins/hash.def + - fixed memory leak -- need to free return value from + find_user_command + +builtins/alias.def + - fixed memory leak -- remove_alias needs to free the key in the + hash table entry it deletes + +execute_cmd.c + - fixed memory leak in find_user_command_in_path: if we're not + returning full_path, we need to free it + +lib/readline/bind.def + - fixed memory leak -- need to free the returned arrays from + recursive calls to invoking_keyseqs_in_map + + 9/1 + --- +builtins/bind.def + - return failure immediately if no_line_editing is set + +builtins/shift.def + - fixed memory leak -- make sure all of the word list element from + rest_of_args is freed when shifting it into dollar_vars[9] + +builtins/hash.def + - fixed memory leak -- only need to save the key for a particular + hash item once in remember_filename + +expr.c + - fixed memory leak -- free `tokstr' after performing the assignment + statement and before assigning to it with savestring + +execute_cmd.c + - fixed memory leak -- need to free the copy of the command line + passed to make_child in execute_disk_command if the command is + not found + +lib/readline/display.c + - fixed call to tgoto in delete_chars -- caused the delete to fail + when using term_DC on some systems + +[code made available via ftp -- first redistributable version] diff --git a/bash-20060316/CWRU/old-conf/Makefile b/bash-20060316/CWRU/old-conf/Makefile new file mode 100644 index 000000000..533131960 --- /dev/null +++ b/bash-20060316/CWRU/old-conf/Makefile @@ -0,0 +1,116 @@ +# Hey Emacs, this Makefile is in -*- makefile -*- mode! +# +# Makefile for Bash. +# If your cpp doesn't like -P, just get rid of it (the -P, not cpp). +# If you wish to use Gcc, then type `make CC=gcc CPPNAME='$(CC) -E''. +# If you wish to use GNU's Make, then change `MAKE'. +# If you don't like the destination, then change `bindir'. +# The file that you most likely want to look at is cpp-Makefile. +# +# If you haven't read README, now might be a good time. + +# Include some boilerplate Gnu makefile definitions. +prefix = /usr/local +exec_prefix = $(prefix) +bindir = $(exec_prefix)/bin +srcdir = . +VPATH = $(srcdir) + +# MAKE = make +RM = rm -f +SHELL = /bin/sh +GAWK = awk +# GAWK = gawk + +# Force CPPNAME to be the name of your C preprocesor if Bash can't +# find it. For instance, `CPPNAME=/usr/libexec/cpp' on 4.4 BSD. +# If all else fails, set CPPNAME=$(CC) -E +CPPNAME = +CPP = `/bin/sh $(CPPMAGIC) $(GETCPPSYMS) "$(CPPNAME)"` -P + +CPP_MAKEFILE = $(srcdir)/cpp-Makefile +ANSI_MAKEFILE = ansi-Makefile + +# CPPFLAGS = $(SYSTEM) $(CPP_DEFINES) +CPPFLAGS = $(CPP_DEFINES) -I. -I$(srcdir) +CPP_ARGS = -DCPP_CC="$(CC)" + +SUPPORTDIR = ./support/ +SUPPORTSRC = $(srcdir)/support/ + +MKSYSDEFS = $(SUPPORTSRC)mksysdefs +CPPMAGIC = $(SUPPORTSRC)cppmagic +CAT_S = $(SUPPORTSRC)cat-s +GETCPPSYMS = $(SUPPORTDIR)getcppsyms +GETCPPSYMS_SRC = $(SUPPORTSRC)getcppsyms.c + +# Here is a command which compresses runs of multiple blank lines to a +# single blank line. "cat -s" works for BSD systems, but not for USG +# systems. You can use an awk script if you like. If you have too +# much trouble with this, just forget it. It is for making +# bash-Makefile pretty and readable; something that isn't strictly +# necessary. +# SQUASH_BLANKS = cat -s +# +SQUASH_BLANKS = $(GAWK) -f $(CAT_S) + +all: .notified bash-Makefile + $(MAKE) -f bash-Makefile $(MFLAGS) $(MAKEARGS) srcdir=$(srcdir) \ + prefix=$(prefix) + +bash-Makefile: $(CPP_MAKEFILE) Makefile machines.h sysdefs.h config.h + @-if [ -f ansi-Makefile ]; then \ + echo "cp ansi-Makefile tmp-Makefile.c"; \ + cp ansi-Makefile tmp-Makefile.c; else \ + echo "cp $(CPP_MAKEFILE) tmp-Makefile.c"; \ + cp $(CPP_MAKEFILE) tmp-Makefile.c; \ + fi + $(RM) $(GETCPPSYMS) + $(SHELL) $(SUPPORTSRC)mkdirs support + $(CC) -o $(GETCPPSYMS) $(GETCPPSYMS_SRC) + rm -f bash-Makefile + @$(SHELL) -c 'echo $(CPP) $(CPPFLAGS) $(CPP_ARGS) tmp-Makefile.c \| $(SQUASH_BLANKS) \> bash-Makefile' + @$(SHELL) -c '$(CPP) $(CPPFLAGS) $(CPP_ARGS) tmp-Makefile.c | $(SQUASH_BLANKS) >bash-Makefile' + rm -f tmp-Makefile.c + @test -s bash-Makefile || { rm -f bash-Makefile ; exit 1; } + +sysdefs.h: $(MKSYSDEFS) + $(SHELL) $(MKSYSDEFS) -s $(srcdir) + +# This is also performed by support/mksysdefs, but there's no way to change +# it if cpp-Makefile is changed without changing anything else, since there +# are no dependencies. This lets you run `make ansi-Makefile'. +ansi-Makefile: $(CPP_MAKEFILE) + grep -v '/\*\*/' $(CPP_MAKEFILE) > $@ + +# Subsequent lines contain targets that are correctly handled by an +# existing bash-Makefile. + +install uninstall newversion architecture: bash-Makefile + $(MAKE) -f bash-Makefile $(MFLAGS) $(MAKEARGS) bindir=$(bindir) \ + prefix=$(prefix) $@ + +tests DEFINES tags documentation: bash-Makefile directory-frob + $(MAKE) -f bash-Makefile $(MFLAGS) $(MAKEARGS) bindir=$(bindir) $@ + +clean distclean realclean: bash-Makefile directory-frob + rm -f .notified + $(MAKE) -f bash-Makefile $(MFLAGS) $(MAKEARGS) bindir=$(bindir) $@ + +directory-frob: + +.NOEXPORT: + +.notified: + @echo "" + @echo " You are about to make this version of GNU Bash for" + @echo " this architecture for the first time. If you haven't" + @echo " yet read the README file, you may want to do so. If" + @echo " you wish to report a bug in Bash, or in the installation" + @echo " procedure, please run the bashbug script and include:" + @echo "" + @echo " * a description of the bug," + @echo " * a recipe for recreating the bug reliably," + @echo " * a fix for the bug if you have one!" + @echo "" + @touch .notified diff --git a/bash-20060316/CWRU/old-conf/Makefile.builtins b/bash-20060316/CWRU/old-conf/Makefile.builtins new file mode 100644 index 000000000..1d486e945 --- /dev/null +++ b/bash-20060316/CWRU/old-conf/Makefile.builtins @@ -0,0 +1,268 @@ +# This Makefile for building libbuiltins.a is in -*- text -*- for Emacs. +# +MKBUILTINS = mkbuiltins +RANLIB = ranlib +CFLAGS = -g -I.. -I. +SHELL = /bin/sh +# CC = cc +AR = ar +RM = rm -f +CP = cp + +srcdir = . +VPATH = .:$(srcdir) + +.SUFFIXES: +.SUFFIXES: .def .c .o +# How to make a .o file from a .def file. +.def.o: + $(RM) $@ + ./$(MKBUILTINS) $(DIRECTDEFINE) $< + $(CC) -c $(CFLAGS) $(CPPFLAGS) $*.c || ( $(RM) $*.c ; exit 1 ) + $(RM) $*.c + +# How to make a .c file from a .def file. +.def.c: + $(RM) $@ + ./$(MKBUILTINS) $(DIRECTDEFINE) $< + +# Here is a rule for making .o files from .c files that does not +# force the type of the machine (like -M_MACHINE) into the flags. +.c.o: + $(RM) $@ + $(CC) -c $(CFLAGS) $(CPPFLAGS) $< + +DEFS = $(srcdir)/alias.def $(srcdir)/bind.def $(srcdir)/break.def \ + $(srcdir)/builtin.def $(srcdir)/cd.def $(srcdir)/colon.def \ + $(srcdir)/command.def $(srcdir)/declare.def $(srcdir)/echo.def \ + $(srcdir)/enable.def $(srcdir)/eval.def $(srcdir)/getopts.def \ + $(srcdir)/exec.def $(srcdir)/exit.def $(srcdir)/fc.def \ + $(srcdir)/fg_bg.def $(srcdir)/hash.def $(srcdir)/help.def \ + $(srcdir)/history.def $(srcdir)/jobs.def $(srcdir)/kill.def \ + $(srcdir)/let.def $(srcdir)/read.def $(srcdir)/return.def \ + $(srcdir)/set.def $(srcdir)/setattr.def $(srcdir)/shift.def \ + $(srcdir)/source.def $(srcdir)/suspend.def $(srcdir)/test.def \ + $(srcdir)/times.def $(srcdir)/trap.def $(srcdir)/type.def \ + $(srcdir)/ulimit.def $(srcdir)/umask.def $(srcdir)/wait.def \ + $(srcdir)/reserved.def $(srcdir)/pushd.def $(srcdir)/shopt.def + +STATIC_SOURCE = common.c getopt.c bashgetopt.c getopt.h + +OFILES = builtins.o \ + alias.o bind.o break.o builtin.o cd.o colon.o command.o \ + common.o declare.o echo.o enable.o eval.o exec.o exit.o \ + fc.o fg_bg.o hash.o help.o history.o jobs.o kill.o let.o \ + pushd.o read.o return.o set.o setattr.o shift.o source.o \ + suspend.o test.o times.o trap.o type.o ulimit.o umask.o \ + wait.o getopts.o shopt.o getopt.o bashgetopt.o + +THINGS_TO_TAR = $(DEFS) $(STATIC_SOURCE) Makefile ChangeLog + +CREATED_FILES = builtext.h builtins.c psize.aux pipesize.h + +all: $(MKBUILTINS) libbuiltins.a + +libbuiltins.a: $(MKBUILTINS) $(OFILES) + $(RM) $@ + $(AR) cq $@ $(OFILES) + -$(RANLIB) $@ + +builtext.h builtins.c: $(MKBUILTINS) $(DEFS) + $(RM) builtext.h builtins.c + ./$(MKBUILTINS) -externfile builtext.h -structfile builtins.c \ + -noproduction $(DIRECTDEFINE) $(DEFS) + +mkbuiltins: $(srcdir)/mkbuiltins.c ../config.h + $(CC) $(CFLAGS) -o $(MKBUILTINS) $(srcdir)/mkbuiltins.c + +ulimit.o: ulimit.def pipesize.h + +pipesize.h: psize.aux + $(SHELL) $(srcdir)/psize.sh > pipesize.h + +psize.aux: psize.c + $(CC) $(CFLAGS) -o $@ $(srcdir)/psize.c + +documentation: builtins.texi + +$(OFILES): $(MKBUILTINS) ../config.h + +builtins.texi: $(MKBUILTINS) + ./$(MKBUILTINS) -documentonly $(DEFS) + +clean: + $(RM) $(OFILES) $(CREATED_FILES) $(MKBUILTINS) libbuiltins.a + +alias.o: alias.def +bind.o: bind.def +break.o: break.def +builtin.o: builtin.def +cd.o: cd.def +colon.o: colon.def +command.o: command.def +declare.o: declare.def +echo.o: echo.def +enable.o: enable.def +eval.o: eval.def +exec.o: exec.def +exit.o: exit.def +fc.o: fc.def +fg_bg.o: fg_bg.def +hash.o: hash.def +help.o: help.def +history.o: history.def +jobs.o: jobs.def +kill.o: kill.def +let.o: let.def +pushd.o: pushd.def +read.o: read.def +return.o: return.def +set.o: set.def +setattr.o: setattr.def +shift.o: shift.def +source.o: source.def +suspend.o: suspend.def +test.o: test.def +times.o: times.def +trap.o: trap.def +type.o: type.def +umask.o: umask.def +wait.o: wait.def +getopts.o: getopts.def +reserved.o: reserved.def + +common.o: ../shell.h ../command.h ../config.h ../memalloc.h ../general.h +common.o: ../variables.h ../input.h hashcom.h ../bashhist.h +common.o: ../quit.h ../unwind_prot.h ../maxpath.h ../jobs.h ../builtins.h +common.o: ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +common.o: ../execute_cmd.h ../error.h +alias.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +alias.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +alias.o: ../shell.h ../unwind_prot.h ../variables.h common.h ../maxpath.h +bind.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +bind.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +bind.o: ../maxpath.h ../bashline.h +bind.o: ../shell.h ../unwind_prot.h ../variables.h bashgetopt.h +break.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +break.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +break.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h +builtin.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +builtin.o: ../quit.h common.h ../maxpath.h +builtin.o: ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +builtin.o: ../shell.h ../unwind_prot.h ../variables.h +cd.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +cd.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +cd.o: ../shell.h ../unwind_prot.h ../variables.h common.h ../maxpath.h +command.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +command.o: ../quit.h bashgetopt.h ../maxpath.h +command.o: ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +command.o: ../shell.h ../unwind_prot.h ../variables.h +declare.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +declare.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +declare.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h +echo.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +echo.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +echo.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h +enable.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +enable.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +enable.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h +eval.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +eval.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +eval.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h +exec.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +exec.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +exec.o: ../shell.h ../unwind_prot.h ../variables.h common.h ../execute_cmd.h +exec.o: ../maxpath.h ../flags.h +exit.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +exit.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +exit.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h +fc.o: ../builtins.h ../command.h bashgetopt.h ../bashhist.h +fc.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +fc.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +fc.o: ../flags.h ../unwind_prot.h ../variables.h ../shell.h ../maxpath.h +fg_bg.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +fg_bg.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +fg_bg.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h +getopts.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +getopts.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +getopts.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h +hash.o: ../builtins.h ../command.h ../quit.h ../execute_cmd.h +hash.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +hash.o: ../shell.h ../unwind_prot.h ../variables.h common.h ../maxpath.h +help.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +help.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +help.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h +history.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +history.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +history.o: ../filecntl.h ../shell.h ../unwind_prot.h ../variables.h +history.o: ../bashhist.h ../maxpath.h +inlib.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +inlib.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h +inlib.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +jobs.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +jobs.o: ../quit.h bashgetopt.h ../maxpath.h +jobs.o: ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +jobs.o: ../shell.h ../unwind_prot.h ../variables.h +kill.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +kill.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +kill.o: ../shell.h ../trap.h ../unwind_prot.h ../variables.h ../maxpath.h +let.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +let.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +let.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h +pushd.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +pushd.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +pushd.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h common.h +read.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +read.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +read.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h +return.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +return.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +return.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h +set.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +set.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +set.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h +setattr.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +setattr.o: ../quit.h common.h bashgetopt.h ../maxpath.h +setattr.o: ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +setattr.o: ../shell.h ../unwind_prot.h ../variables.h +shift.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +shift.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +shift.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h +source.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +source.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +source.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h +suspend.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +suspend.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +suspend.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h +test.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +test.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +test.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h +times.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +times.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +times.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h +trap.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +trap.o: ../quit.h common.h ../maxpath.h +trap.o: ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +trap.o: ../shell.h ../unwind_prot.h ../variables.h ../execute_cmd.h +type.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +type.o: ../quit.h common.h ../maxpath.h +type.o: ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +type.o: ../shell.h ../unwind_prot.h ../variables.h +ulimit.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +ulimit.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +ulimit.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h +umask.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +umask.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +umask.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h +wait.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +wait.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +wait.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h +shopt.o: ../command.h ../config.h ../memalloc.h ../error.h ../general.h +shopt.o: ../quit.h ../dispose_cmd.h ../make_cmd.h ../subst.h ../externs.h +shopt.o: ../shell.h ../unwind_prot.h ../variables.h ../maxpath.h +shopt.o: common.h bashgetopt.h +bashgetopt.o: ../bashansi.h ../ansi_stdlib.h +mkbuiltins.o: ../bashansi.h ../ansi_stdlib.h +fc.o: ../bashansi.h ../ansi_stdlib.h + +#bind.o: $(RL_LIBSRC)chardefs.h $(RL_LIBSRC)readline.h $(RL_LIBSRC)keymaps.h diff --git a/bash-20060316/CWRU/old-conf/Makefile.documentation b/bash-20060316/CWRU/old-conf/Makefile.documentation new file mode 100644 index 000000000..3096a51bd --- /dev/null +++ b/bash-20060316/CWRU/old-conf/Makefile.documentation @@ -0,0 +1,119 @@ +# This Makefile is for the Bash/documentation directory -*- text -*-. +# +CP = cp +RM = rm -f + +INSTALL_DATA = install -c -m 644 + +DOC_SUPPORT = ../lib/doc-support/ +TEXINDEX = $(DOC_SUPPORT)texindex +TEXINDSRC = $(DOC_SUPPORT)texindex.c +TEX = tex +QUIETPS = #set this to -q to shut up dvips +DVIPS = dvips -D 300 $(QUIETPS) -o $@ # tricky +TEXINPUTS = ./../lib/readline/doc +MAKEINFO = makeinfo + +# Change to groff -Tascii if you don't have nroff +NROFF = nroff + +# This should be a program that converts troff to postscript +GROFF = groff + +HSUSER = ./../lib/readline/doc/hsuser.texinfo +RLUSER = ./../lib/readline/doc/rluser.texinfo + +.SUFFIXES: .0 .1 .3 .ms .ps .txt .dvi + +.1.ps: + $(RM) $@ + -${GROFF} -man $< > $@ + +.1.0: + $(RM) $@ + -${NROFF} -man $< > $@ + +.ms.ps: + $(RM) $@ + -${GROFF} -ms $< > $@ + +.ms.txt: + $(RM) $@ + -${NROFF} -ms $< > $@ + +.3.ps: + $(RM) $@ + -${GROFF} -man $< > $@ + +.3.0: + $(RM) $@ + -${NROFF} -man $< > $@ + +all: ps info dvi text + +ps: bash.ps builtins.ps readline.ps article.ps +dvi: features.dvi features.ps +info: features.info +text: bash.0 builtins.0 readline.0 + +features.dvi: features.texi $(HSUSER) $(RLUSER) + TEXINPUTS=.:$(TEXINPUTS):$$TEXINPUTS $(TEX) features.texi + $(TEXINDEX) features.?? + TEXINPUTS=.:$(TEXINPUTS):$$TEXINPUTS $(TEX) features.texi + +features.ps: features.dvi + $(RM) $@ + $(DVIPS) features.dvi + +features.info: features.texi $(HSUSER) $(RLUSER) + $(MAKEINFO) --no-split -I$(TEXINPUTS) features.texi + +bash.dvi: $(TEXINDEX) bash.texinfo $(HSUSER) $(RLUSER) + TEXINPUTS=.:$(TEXINPUTS):$$TEXINPUTS $(TEX) bash.texinfo + $(TEXINDEX) bash.?? + TEXINPUTS=.:$(TEXINPUTS):$$TEXINPUTS $(TEX) bash.texinfo + +bashman.ps: bash.dvi + rm -f $@ + $(DVIPS) bash.dvi + +bash.txt: bash.1 +bash.ps: bash.1 +builtins.ps: builtins.1 bash.1 +builtins.txt: builtins.1 bash.1 +readline.txt: readline.3 +readline.ps: readline.3 +article.ps: article.ms + +$(TEXINDEX): $(TEXINDSRC) + (cd $(DOC_SUPPORT); $(MAKE) $(MFLAGS) texindex) + +hsuser.texinfo: ../lib/readline/doc/hsuser.texinfo + ln -s ../lib/readline/doc/hsuser.texinfo . + +rluser.texinfo: ../lib/readline/doc/rluser.texinfo + ln -s ../lib/readline/doc/rluser.texinfo . + +clean: + rm -f *.aux *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr *.cps *.pgs \ + *.fns *.kys *.tps *.vrs *.o core texindex rluser.texinfo hsuser.texinfo + +distclean: + rm -f *.aux *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr *.cps *.pgs \ + *.dvi *.info *.info-* *.fns *.kys *.tps *.vrs *.o core texindex \ + rluser.texinfo hsuser.texinfo + +realclean: clean + +install: all + -[ -d $(mandir) ] || mkdir $(mandir) + $(INSTALL_DATA) bash.1 $(mandir) + sed 's:so bash.1:so man1/bash.1:' < builtins.1 > $(mandir)/bash_builtins.1 + -[ -d $(man3dir) ] || mkdir $(man3dir) + $(INSTALL_DATA) readline.3 $(man3dir) + -[ -d $(infodir) ] || mkdir $(infodir) + $(INSTALL_DATA) features.info $(infodir)/bash.info + +uninstall: + $(RM) $(mandir)/bash.1 $(mandir)/bash_builtins.1 + $(RM) $(man3dir)/readline.3 $(infodir)/bash.info diff --git a/bash-20060316/CWRU/old-conf/Makefile.lib.glob b/bash-20060316/CWRU/old-conf/Makefile.lib.glob new file mode 100644 index 000000000..467a510f5 --- /dev/null +++ b/bash-20060316/CWRU/old-conf/Makefile.lib.glob @@ -0,0 +1,92 @@ +## -*- text -*- #################################################### +# # +# Makefile for the GNU Glob Library. # +# # +#################################################################### + +# This Makefile is hand made from a template file, found in +# ../template. Each library must provide several Makefile +# targets: `all', `clean', `documentation', `install', and +# `what-tar'. The `what-tar' target reports the names of the +# files that need to be included in a tarfile to build the full +# code and documentation for this library. + +# Please note that the values for INCLUDES, CC, AR, RM, CP, +# RANLIB, and selfdir are passed in from ../Makefile, and do +# not need to be defined here. +srcdir = . +VPATH = .:$(srcdir) + +# Here is a rule for making .o files from .c files that doesn't force +# the type of the machine (like -sun3) into the flags. +.c.o: + $(CC) -c $(CFLAGS) $(INCLUDES) $(LOCAL_DEFINES) $(CPPFLAGS) $< + +# LOCAL_DEFINES are flags that are specific to this library. +# Define -DUSG if you are using a System V operating system. +LOCAL_DEFINES = $(LOCAL_INCLUDES) #-DUSG + +# For libraries which include headers from other libraries. +LOCAL_INCLUDES = -I.. + +# The name of the library target. +LIBRARY_NAME = libglob.a + +# The C code source files for this library. +CSOURCES = $(srcdir)glob.c $(srcdir)fnmatch.c + +# The header files for this library. +HSOURCES = $(srcdir)fnmatch.h + +OBJECTS = glob.o fnmatch.o + +# The texinfo files which document this library. +DOCSOURCE = doc/glob.texi +DOCOBJECT = doc/glob.dvi +DOCSUPPORT = doc/Makefile +DOCUMENTATION = $(DOCSOURCE) $(DOCOBJECT) $(DOCSUPPORT) + +SUPPORT = Makefile ChangeLog $(DOCSUPPORT) + +SOURCES = $(CSOURCES) $(HSOURCES) $(DOCSOURCE) + +THINGS_TO_TAR = $(SOURCES) $(SUPPORT) + +###################################################################### + +all: $(LIBRARY_NAME) + +$(LIBRARY_NAME): $(OBJECTS) + $(RM) -f $@ + $(AR) cq $@ $(OBJECTS) + -[ -n "$(RANLIB)" ] && $(RANLIB) $@ + +what-tar: + @for file in $(THINGS_TO_TAR); do \ + echo $(selfdir)$$file; \ + done + +documentation: force + -(cd doc; $(MAKE) $(MFLAGS)) +force: + +# The rule for 'includes' is written funny so that the if statement +# always returns TRUE unless there really was an error installing the +# include files. +install: + -$(MV) $(bindir)/$(LIBRARY_NAME) $(bindir)/$(LIBRARY_NAME)-old + $(CP) $(LIBRARY_NAME) $(bindir)/$(LIBRARY_NAME) + -[ -n "$(RANLIB)" ] && $(RANLIB) -t $(bindir)/$(LIBRARY_NAME) + +clean: + rm -f $(OBJECTS) $(LIBRARY_NAME) + -(cd doc; $(MAKE) $(MFLAGS) clean) + + +###################################################################### +# # +# Dependencies for the object files which make up this library. # +# # +###################################################################### + +fnmatch.o: fnmatch.c fnmatch.h diff --git a/bash-20060316/CWRU/old-conf/Makefile.lib.malloc b/bash-20060316/CWRU/old-conf/Makefile.lib.malloc new file mode 100644 index 000000000..c6a7b0eff --- /dev/null +++ b/bash-20060316/CWRU/old-conf/Makefile.lib.malloc @@ -0,0 +1,33 @@ +# Skeleton Makefile for the GNU malloc code +# +# Maybe this should really create a library instead of just compiling +# source files + +srcdir = . +VPATH = .:$(srcdir) + +.c.o: + $(CC) $(CFLAGS) $(CPPFLAGS) -c $< + +.s.o: + $(CC) $(CFLAGS) $(CPPFLAGS) -c $< + +MALLOC_SOURCE = malloc.c + +ALLOCA_SOURCE = alloca.c +ALLOCA_OBJECT = alloca.o + +libmalloc.a: malloc.o $(ALLOCA) + rm -f $@ + ar cq $@ malloc.o $(ALLOCA) + -[ -n "$(RANLIB)" ] && $(RANLIB) $@ + +malloc.o: malloc.c getpagesize.h + +$(ALLOCA_OBJECT): $(ALLOCA_SOURCE) + +alloca.o: $(ALLOCA_SOURCE) + $(CC) $(CFLAGS) $(CPPFLAGS) -c $< + @- if [ "$(ALLOCA_OBJECT)" != alloca.o ]; then \ + mv $(ALLOCA_OBJECT) alloca.o >/dev/null 2>&1 ; \ + fi diff --git a/bash-20060316/CWRU/old-conf/Makefile.lib.readline b/bash-20060316/CWRU/old-conf/Makefile.lib.readline new file mode 100644 index 000000000..7a12a1fd8 --- /dev/null +++ b/bash-20060316/CWRU/old-conf/Makefile.lib.readline @@ -0,0 +1,154 @@ +## -*- text -*- #################################################### +# # +# Makefile for the GNU Readline and History Libraries. # +# # +#################################################################### + +srcdir = . +VPATH = .:$(srcdir) + +INSTALL = install -c +INSTALL_PROGRAM = ${INSTALL} +INSTALL_DATA = ${INSTALL} -m 644 + +RANLIB = ranlib +AR = ar +RM = rm +CP = cp +MV = mv + +# See the file STANDALONE for the -D defines that readline understands +DEFS = +# For libraries which include headers from other libraries. +LOCAL_INCLUDES = -I. -I.. + +CPPFLAGS = $(DEFS) $(LOCAL_INCLUDES) + +# Here is a rule for making .o files from .c files that doesn't force +# the type of the machine (like -sun3) into the flags. +.c.o: + $(CC) -c $(CPPFLAGS) $(CFLAGS) $< + +# The name of the main library target. +LIBRARY_NAME = libreadline.a + +# The C code source files for this library. +CSOURCES = $(srcdir)readline.c $(srcdir)funmap.c $(srcdir)keymaps.c \ + $(srcdir)vi_mode.c $(srcdir)parens.c $(srcdir)rltty.c \ + $(srcdir)complete.c $(srcdir)bind.c $(srcdir)isearch.c \ + $(srcdir)display.c $(srcdir)signals.c $(srcdir)emacs_keymap.c \ + $(srcdir)vi_keymap.c $(srcdir)util.c $(srcdir)kill.c \ + $(srcdir)undo.c $(srcdir)macro.c $(srcdir)input.c \ + $(srcdir)callback.c $(srcdir)xmalloc.c \ + $(srcdir)history.c $(srcdir)histsearch.c $(srcdir)histexpand.c \ + $(srcdir)histfile.c \ + $(srcdir)tilde.c \ + +# The header files for this library. +HSOURCES = readline.h rldefs.h chardefs.h keymaps.h history.h histlib.h \ + posixstat.h tilde.h rlconf.h + +HISTOBJ = history.o histexpand.o histfile.o histsearch.o +TILDEOBJ= tilde.o +OBJECTS = readline.o vi_mode.o funmap.o keymaps.o parens.o search.o \ + rltty.o complete.o bind.o isearch.o display.o signals.o \ + util.o kill.o undo.o macro.o input.o callback.o xmalloc.o \ + $(HISTOBJ) $(TILDEOBJ) + +# The texinfo files which document this library. +DOCSOURCE = doc/rlman.texinfo doc/rltech.texinfo doc/rluser.texinfo +DOCOBJECT = doc/readline.dvi +DOCSUPPORT = doc/Makefile +DOCUMENTATION = $(DOCSOURCE) $(DOCOBJECT) $(DOCSUPPORT) + +SUPPORT = Makefile ChangeLog $(DOCSUPPORT) examples/[-a-z.]* + +SOURCES = $(CSOURCES) $(HSOURCES) $(DOCSOURCE) + +THINGS_TO_TAR = $(SOURCES) $(SUPPORT) + +INSTALLED_HEADERS = readline.h chardefs.h keymaps.h history.h tilde.h + +########################################################################## + +all: libreadline.a libhistory.a + +libreadline.a: $(OBJECTS) + $(RM) -f $@ + $(AR) cq $@ $(OBJECTS) + -[ -n "$(RANLIB)" ] && $(RANLIB) $@ + +libhistory.a: $(HISTOBJ) xmalloc.o + $(RM) -f $@ + $(AR) cq $@ $(HISTOBJ) xmalloc.o + -[ -n "$(RANLIB)" ] && $(RANLIB) $@ + +documentation: force + [ ! -d doc ] && mkdir doc + (if [ -d doc ]; then cd doc; $(MAKE) $(MFLAGS); fi) + +force: + +# The rule for 'includes' is written funny so that the if statement +# always returns TRUE unless there really was an error installing the +# include files. +install: installdirs libreadline.a + for file in $(INSTALLED_HEADERS) ; do \ + $(INSTALL_DATA) $(srcdir)/$$file $(incdir)/readline ; \ + done + ${INSTALL_DATA} readline.h keymaps.h chardefs.h history.h \ + $(incdir)/readline + -${MV} $(libdir)/libreadline.a $(libdir)/libreadline.old + ${INSTALL_DATA} libreadline.a $(bindir)/libreadline.a + -[ -n "$(RANLIB)" ] && $(RANLIB) -t $(bindir)/libreadline.a + +installdirs: + -[ ! -d $(incdir)/readline ] && { \ + mkdir $(incdir)/readline && chmod 755 $(incdir)/readline; } + -[ ! -d $(libdir) ] && mkdir $(libdir) + +uninstall: + cd $(incdir)/readline && ${RM} -f ${INSTALLED_HEADERS} + cd $(libdir) && ${RM} -f libreadline.a libreadline.old + +clean: + rm -f $(OBJECTS) *.a + (if [ -d doc ]; then cd doc; $(MAKE) $(MFLAGS) $@; fi) + +tags: force + etags $(CSOURCES) $(HSOURCES) + +TAGS: force + ctags -x $(CSOURCES) $(HSOURCES) > $@ + +readline: readline.h rldefs.h chardefs.h +readline: $(OBJECTS) + $(CC) $(CFLAGS) $(CPPFLAGS) $(READLINE_DEFINES) \ + $(LOCAL_INCLUDES) -DTEST -o readline readline.c vi_mode.o funmap.o \ + keymaps.o -ltermcap + +realclean distclean mostlyclean: clean + +# Dependencies +readline.o: readline.c readline.h rldefs.h rlconf.h chardefs.h +readline.o: keymaps.h history.h +vi_mode.o: rldefs.h rlconf.h readline.h history.h +funmap.o: funmap.c readline.h rlconf.h +keymaps.o: keymaps.c emacs_keymap.c vi_keymap.c keymaps.h chardefs.h rlconf.h +history.o: history.h histlib.h +histexpand.o: history.h histlib.h +histsearch.o: history.h histlib.h +histfile.o: history.h histlib.h +isearch.o: readline.h history.h +search.o: readline.h history.h +display.o: readline.h history.h rldefs.h rlconf.h +complete.o: readline.h rldefs.h rlconf.h +rltty.o: rldefs.h rlconf.h readline.h +bind.o: rldefs.h rlconf.h readline.h history.h +signals.o: rldefs.h rlconf.h readline.h history.h +parens.o: readline.h +kill.o: rldefs.h rlconf.h readline.h history.h +macro.o: rldefs.h rlconf.h readline.h history.h +undo.o: rldefs.h rlconf.h readline.h history.h +input.o: rldefs.h rlconf.h readline.h history.h +callback.o: rlconf.h rldefs.h readline.h diff --git a/bash-20060316/CWRU/old-conf/Makefile.lib.termcap b/bash-20060316/CWRU/old-conf/Makefile.lib.termcap new file mode 100644 index 000000000..bbdf99f2a --- /dev/null +++ b/bash-20060316/CWRU/old-conf/Makefile.lib.termcap @@ -0,0 +1,64 @@ +## -*- text -*- #################################################### +# # +# Makefile for termcap replacement libbrary. # +# # +#################################################################### + +# Here is a rule for making .o files from .c files that doesn't force +# the type of the machine (like -sun3) into the flags. +.c.o: + $(CC) -c $(CFLAGS) $(LOCAL_INCLUDES) $(CPPFLAGS) $*.c + +# Destination installation directory. The libraries are copied to DESTDIR +# when you do a `make install'. +DESTDIR = /usr/local/lib + +DEBUG_FLAGS = -g +#OPTIMIZE_FLAGS = -O +LDFLAGS = $(DEBUG_FLAGS) +CFLAGS = $(DEBUG_FLAGS) $(OPTIMIZE_FLAGS) + +SHELL = /bin/sh + +# A good alternative is gcc -traditional. +#CC = gcc -traditional +CC = cc +RANLIB = /usr/bin/ranlib +AR = ar +RM = rm +CP = cp + +CSOURCES = termcap.c tparam.c + +SOURCES = $(CSOURCES) + +OBJECTS = termcap.o tparam.o + +DOCUMENTATION = termcap.texinfo + +THINGS_TO_TAR = $(SOURCES) $(DOCUMENTATION) + +########################################################################## + +all: libtermcap.a + +libtermcap.a: $(OBJECTS) + $(RM) -f $@ + $(AR) clq $@ $(OBJECTS) + -[ -n "$(RANLIB)" ] && $(RANLIB) $@ + +termcap.tar: $(THINGS_TO_TAR) + tar -cf $@ $(THINGS_TO_TAR) + +termcap.tar.Z: termcap.tar + compress -f termcap.tar + +install: $(DESTDIR)/libtermcap.a + +clean: + rm -f *.o *.a *.log *.cp *.tp *.vr *.fn *.aux *.pg *.toc + +$(DESTDIR)/libtermcap.a: libtermcap.a + -mv $(DESTDIR)/libtermcap.a $(DESTDIR)/libtermcap.old + cp libtermcap.a $@ + -[ -n "$(RANLIB)" ] && $(RANLIB) -t $@ diff --git a/bash-20060316/CWRU/old-conf/Makefile.lib.tilde b/bash-20060316/CWRU/old-conf/Makefile.lib.tilde new file mode 100644 index 000000000..b3f4c26a9 --- /dev/null +++ b/bash-20060316/CWRU/old-conf/Makefile.lib.tilde @@ -0,0 +1,94 @@ +## -*- text -*- #################################################### +# # +# Makefile for the GNU Tilde Library. # +# # +#################################################################### + +# This Makefile is hand made from a template file, found in +# ../template. Each library must provide several Makefile +# targets: `all', `clean', `documentation', `install', and +# `what-tar'. The `what-tar' target reports the names of the +# files that need to be included in a tarfile to build the full +# code and documentation for this library. + +# Please note that the values for INCLUDES, CC, AR, RM, CP, +# RANLIB, and selfdir are passed in from ../Makefile, and do +# not need to be defined here. +RM = rm + +srcdir = . +VPATH = .:$(srcdir) + +# Here is a rule for making .o files from .c files that doesn't force +# the type of the machine (like -sun3) into the flags. +.c.o: + $(CC) -c $(CFLAGS) $(INCLUDES) $(LOCAL_DEFINES) $(CPPFLAGS) $< + +# LOCAL_DEFINES are flags that are specific to this library. +# Define -DUSG if you are using a System V operating system. +LOCAL_DEFINES = $(LOCAL_INCLUDES) #-DUSG + +# For libraries which include headers from other libraries. +LOCAL_INCLUDES = -I.. + +# The name of the library target. +LIBRARY_NAME = libtilde.a + +# The C code source files for this library. +CSOURCES = $(srcdir)/tilde.c + +# The header files for this library. +HSOURCES = $(srcdir)/tilde.h + +OBJECTS = tilde.o + +# The texinfo files which document this library. +DOCSOURCE = doc/tilde.texi +DOCOBJECT = doc/tilde.dvi +DOCSUPPORT = doc/Makefile +DOCUMENTATION = $(DOCSOURCE) $(DOCOBJECT) $(DOCSUPPORT) + +SUPPORT = Makefile ChangeLog $(DOCSUPPORT) + +SOURCES = $(CSOURCES) $(HSOURCES) $(DOCSOURCE) + +THINGS_TO_TAR = $(SOURCES) $(SUPPORT) + +###################################################################### + +all: $(LIBRARY_NAME) + +$(LIBRARY_NAME): $(OBJECTS) + $(RM) -f $@ + $(AR) cq $@ $(OBJECTS) + -[ -n "$(RANLIB)" ] && $(RANLIB) $@ + +what-tar: + @for file in $(THINGS_TO_TAR); do \ + echo $(selfdir)$$file; \ + done + +documentation: force + -(cd doc; $(MAKE) $(MFLAGS)) +force: + +# The rule for 'includes' is written funny so that the if statement +# always returns TRUE unless there really was an error installing the +# include files. +install: + -$(MV) $(bindir)/$(LIBRARY_NAME) $(bindir)/$(LIBRARY_NAME)-old + $(CP) $(LIBRARY_NAME) $(bindir)/$(LIBRARY_NAME) + -[ -n "$(RANLIB)" ] && $(RANLIB) -t $(bindir)/$(LIBRARY_NAME) + +clean: + $(RM) -f $(OBJECTS) $(LIBRARY_NAME) + -(cd doc; $(MAKE) $(MFLAGS) clean) + + +###################################################################### +# # +# Dependencies for the object files which make up this library. # +# # +###################################################################### + +tilde.o: tilde.h tilde.c diff --git a/bash-20060316/CWRU/old-conf/config.h b/bash-20060316/CWRU/old-conf/config.h new file mode 100644 index 000000000..b805d0d2c --- /dev/null +++ b/bash-20060316/CWRU/old-conf/config.h @@ -0,0 +1,178 @@ +/* config.h -- Configuration file for bash. */ + +/* Copyright (C) 1987,1991 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 1, or (at your option) + any later version. + + Bash is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with Bash; see the file COPYING. If not, write to the Free + Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#if !defined (_CONFIG_H_) +#define _CONFIG_H_ + +#if !defined (BUILDING_MAKEFILE) +#include "memalloc.h" +#endif + +#if defined (HAVE_UNISTD_H) && !defined (BUILDING_MAKEFILE) +# ifdef CRAY +# define word __word +# endif +#include +# ifdef CRAY +# undef word +# endif +#endif + +/* Define JOB_CONTROL if your operating system supports + BSD-like job control. */ +#define JOB_CONTROL + +/* Note that vanilla System V machines don't support BSD job control, + although some do support Posix job control. */ +#if defined (USG) || defined (MINIX) || defined (Minix) +# if !defined (_POSIX_JOB_CONTROL) +# undef JOB_CONTROL +# endif /* !_POSIX_JOB_CONTROL */ +#endif /* USG || Minix || MINIX */ + +/* Define ALIAS if you want the alias features. */ +#define ALIAS + +/* Define PUSHD_AND_POPD if you want those commands to be compiled in. + (Also the `dirs' commands.) */ +#define PUSHD_AND_POPD + +/* Define BRACE_EXPANSION if you want curly brace expansion a la Csh: + foo{a,b} -> fooa foob. Even if this is compiled in (the default) you + can turn it off at shell startup with `-nobraceexpansion', or during + shell execution with `set +o braceexpand'. */ +#define BRACE_EXPANSION + +/* Define READLINE to get the nifty/glitzy editing features. + This is on by default. You can turn it off interactively + with the -nolineediting flag. */ +#define READLINE + +/* Define BANG_HISTORY if you want to have Csh style "!" history expansion. + This is unrelated to READLINE. */ +#define BANG_HISTORY + +/* Define HISTORY if you want to have access to previously typed commands. + + If both HISTORY and READLINE are defined, you can get at the commands + with line editing commands, and you can directly manipulate the history + from the command line. + + If only HISTORY is defined, the `fc' and `history' builtins are + available. */ +#define HISTORY + +#if defined (BANG_HISTORY) && !defined (HISTORY) + /* BANG_HISTORY requires HISTORY. */ +# define HISTORY +#endif /* BANG_HISTORY && !HISTORY */ + +#if defined (READLINE) && !defined (HISTORY) +# define HISTORY +#endif + +/* Define this if you want completion that puts all alternatives into + a brace expansion shell expression. */ +#if defined (BRACE_EXPANSION) && defined (READLINE) +# define BRACE_COMPLETION +#endif /* BRACE_EXPANSION */ + +/* The default value of the PATH variable. */ +#define DEFAULT_PATH_VALUE \ + "/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin:." + +/* The value for PATH when invoking `command -p'. This is only used when + the Posix.2 confstr () function, or CS_PATH define are not present. */ +#define STANDARD_UTILS_PATH \ + "/bin:/usr/bin:/usr/ucb:/usr/sbin:/etc:/usr/etc" + +/* Define V9_ECHO if you want to give the echo builtin backslash-escape + interpretation using the -e option, in the style of the Bell Labs 9th + Edition version of echo. */ +#define V9_ECHO + +/* Define DEFAULT_ECHO_TO_USG if you want the echo builtin to interpret + the backslash-escape characters by default, like the System V echo. + This requires that V9_ECHO be defined. */ +/* #define DEFAULT_ECHO_TO_USG */ +#if !defined (V9_ECHO) +# undef DEFAULT_ECHO_TO_USG +#endif + +/* Define CONTINUE_AFTER_KILL_ERROR if you want the kill command to + continue processing arguments after one of them fails. */ +#define CONTINUE_AFTER_KILL_ERROR + +/* Define BREAK_COMPLAINS if you want the non-standard, but useful + error messages about `break' and `continue' out of context. */ +#define BREAK_COMPLAINS + +/* Define HELP_BUILTIN if you want the `help' shell builtin and the long + documentation strings compiled into the shell. */ +#define HELP_BUILTIN + +/* Define RESTRICTED_SHELL if you want the generated shell to have the + ability to be a restricted one. The shell thus generated can become + restricted by being run with the name "rbash", or by setting the -r + flag. */ +#define RESTRICTED_SHELL + +/* If the shell is called by this name, it will become restricted. */ +#if defined (RESTRICTED_SHELL) +#define RESTRICTED_SHELL_NAME "rbash" +#endif + +/* Define DISABLED_BUILTINS if you want "builtin foo" to always run the + shell builtin "foo", even if it has been disabled with "enable -n foo". */ +/* #define DISABLED_BUILTINS */ + +/* Define PROCESS_SUBSTITUTION if you want the K*rn shell-like process + substitution features "<(file)". */ +/* Right now, you cannot do this on machines without fully operational + FIFO support. This currently include NeXT and Alliant. */ +#if !defined (MKFIFO_MISSING) || defined (HAVE_DEV_FD) +# define PROCESS_SUBSTITUTION +#endif /* !MKFIFO_MISSING */ + +/* Define PROMPT_STRING_DECODE if you want the backslash-escaped special + characters in PS1 and PS2 expanded. Variable expansion will still be + performed. */ +#define PROMPT_STRING_DECODE + +/* Define BUFFERED_INPUT if you want the shell to do its own input + buffering. */ +#define BUFFERED_INPUT + +/* Define ONESHOT if you want sh -c 'command' to avoid forking to execute + `command' whenever possible. */ +#define ONESHOT + +/* Default primary and secondary prompt strings. */ +#define PPROMPT "\\s\\$ " +#define SPROMPT "> " + +/* Define SELECT_COMMAND if you want the Korn-shell style `select' command: + select word in word_list; do command_list; done */ +#define SELECT_COMMAND + +/* Define ARRAY_VARS if you want ksh-style one-dimensional array variables. */ +#define ARRAY_VARS + +#endif /* !_CONFIG_H_ */ diff --git a/bash-20060316/CWRU/old-conf/config.h.mini b/bash-20060316/CWRU/old-conf/config.h.mini new file mode 100644 index 000000000..3c967ac55 --- /dev/null +++ b/bash-20060316/CWRU/old-conf/config.h.mini @@ -0,0 +1,191 @@ +/* config.h -- Configuration file for bash. */ + +/* This is a `minimal' configuration file. It will create a shell without: + job control + aliases + pushd and popd + readline + history + restricted shell mode + `disabled' builtins (builtin xxx finds xxx even after enable -n xxx) + process substitution + prompt string decoding (though variable expansion is still done) + the `select' command + the `help' builtin +*/ + +/* Copyright (C) 1987,1991 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 1, or (at your option) + any later version. + + Bash is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with Bash; see the file COPYING. If not, write to the Free + Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#if !defined (_CONFIG_H_) +#define _CONFIG_H_ + +#include "memalloc.h" + +#if defined (HPUX) || defined (UNIXPC) || defined (Xenix) +# if !defined (USG) +# define USG +# endif +#endif + +#if defined (HAVE_UNISTD_H) && !defined (BUILDING_MAKEFILE) +#include +#endif + +/* Define JOB_CONTROL if your operating system supports + BSD-like job control. */ +/* #define JOB_CONTROL */ + +/* Note that vanilla System V machines don't support BSD job control, + although some do support Posix job control. */ +#if defined (USG) && !defined (_POSIX_JOB_CONTROL) +# undef JOB_CONTROL +#endif /* USG && !_POSIX_JOB_CONTROL */ + +/* Define ALIAS if you want the alias features. */ +/* #define ALIAS */ + +/* Define PUSHD_AND_POPD if you want those commands to be compiled in. + (Also the `dirs' commands.) */ +/* #define PUSHD_AND_POPD */ + +/* Define BRACE_EXPANSION if you want curly brace expansion a la Csh: + foo{a,b} -> fooa foob. Even if this is compiled in (the default) you + can turn it off at shell startup with `-nobraceexpansion', or during + shell execution with `set +o braceexpand'. */ +/* #define BRACE_EXPANSION */ + +/* Define READLINE to get the nifty/glitzy editing features. + This is on by default. You can turn it off interactively + with the -nolineediting flag. */ +/* #define READLINE */ + +/* Define BANG_HISTORY if you want to have Csh style "!" history expansion. + This is unrelated to READLINE. */ +/* #define BANG_HISTORY */ + +/* Define HISTORY if you want to have access to previously typed commands. + + If both HISTORY and READLINE are defined, you can get at the commands + with line editing commands, and you can directly manipulate the history + from the command line. + + If only HISTORY is defined, the `fc' and `history' builtins are + available. */ +/* #define HISTORY */ + +#if defined (BANG_HISTORY) && !defined (HISTORY) + /* BANG_HISTORY requires HISTORY. */ +# define HISTORY +#endif /* BANG_HISTORY && !HISTORY */ + +#if defined (READLINE) && !defined (HISTORY) +# define HISTORY +#endif + +/* Define this if you want completion that puts all alternatives into + a brace expansion shell expression. */ +#if defined (BRACE_EXPANSION) && defined (READLINE) +# define BRACE_COMPLETION +#endif /* BRACE_EXPANSION */ + +/* The default value of the PATH variable. */ +#define DEFAULT_PATH_VALUE \ + "/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin:." + +/* The value for PATH when invoking `command -p'. This is only used when + the Posix.2 confstr () function, or CS_PATH define are not present. */ +#define STANDARD_UTILS_PATH \ + "/bin:/usr/bin:/usr/ucb:/usr/sbin:/etc:/usr/etc" + +/* The default directory in which to look for mail files when + checking mail. The trailing slash is required. */ +#if defined (USG) +# define DEFAULT_MAIL_PATH "/usr/mail/" +#else +# define DEFAULT_MAIL_PATH "/usr/spool/mail/" +#endif + +/* Define V9_ECHO if you want to give the echo builtin backslash-escape + interpretation using the -e option, in the style of the Bell Labs 9th + Edition version of echo. */ +#define V9_ECHO + +/* Define DEFAULT_ECHO_TO_USG if you want the echo builtin to interpret + the backslash-escape characters by default, like the System V echo. + This requires that V9_ECHO be defined. */ +/* #define DEFAULT_ECHO_TO_USG */ +#if !defined (V9_ECHO) +# undef DEFAULT_ECHO_TO_USG +#endif + +/* Define CONTINUE_AFTER_KILL_ERROR if you want the kill command to + continue processing arguments after one of them fails. */ +#define CONTINUE_AFTER_KILL_ERROR + +/* Define BREAK_COMPLAINS if you want the non-standard, but useful + error messages about `break' and `continue' out of context. */ +#define BREAK_COMPLAINS + +/* Define HELP_BUILTIN if you want the `help' shell builtin and the long + documentation strings compiled into the shell. */ +/* #define HELP_BUILTIN */ + +/* Define RESTRICTED_SHELL if you want the generated shell to have the + ability to be a restricted one. The shell thus generated can become + restricted by being run with the name "rbash", or by setting the -r + flag. */ +/* #define RESTRICTED_SHELL */ + +/* Define DISABLED_BUILTINS if you want "builtin foo" to always run the + shell builtin "foo", even if it has been disabled with "enable -n foo". */ +/* #define DISABLED_BUILTINS */ + +/* Define PROCESS_SUBSTITUTION if you want the K*rn shell-like process + substitution features "<(file)". */ +/* Right now, you cannot do this on machines without fully operational + FIFO support. This currently include NeXT and Alliant. */ +#if !defined (MKFIFO_MISSING) +# define PROCESS_SUBSTITUTION +#endif /* !MKFIFO_MISSING */ + +/* Define PROMPT_STRING_DECODE if you want the backslash-escaped special + characters in PS1 and PS2 expanded. Variable expansion will still be + performed. */ +/* #define PROMPT_STRING_DECODE */ + +/* Define BUFFERED_INPUT if you want the shell to do its own input + buffering. */ +#define BUFFERED_INPUT + +/* Define ONESHOT if you want sh -c 'command' to avoid forking to execute + `command' whenever possible. */ +#define ONESHOT + +/* Default primary and secondary prompt strings. */ +#define PPROMPT "\\s\\$ " +#define SPROMPT "> " + +/* Define SELECT_COMMAND if you want the Korn-shell style `select' command: + select word in word_list; do command_list; done */ +/* #define SELECT_COMMAND */ + +/* Define ARRAY if you want ksh-style one-dimensional arrays. */ +/* #define ARRAY_VARS */ + +#endif /* !_CONFIG_H_ */ diff --git a/bash-20060316/CWRU/old-conf/configure b/bash-20060316/CWRU/old-conf/configure new file mode 100755 index 000000000..53e10b6e3 --- /dev/null +++ b/bash-20060316/CWRU/old-conf/configure @@ -0,0 +1,8 @@ +#!/bin/sh +# +# This shell script does nothing since Bash doesn't require +# configuration to be forced on it; it auto-configures. You can +# change the location of the source directory with +srcdir. +# +echo "Bash is configured to auto configure." +exit 0 diff --git a/bash-20060316/CWRU/old-conf/cpp-Makefile b/bash-20060316/CWRU/old-conf/cpp-Makefile new file mode 100644 index 000000000..3e8887a4e --- /dev/null +++ b/bash-20060316/CWRU/old-conf/cpp-Makefile @@ -0,0 +1,1379 @@ +/* This -*- C -*- file (cpp-Makefile) is run through the C preprocessor + to produce bash-Makefile which is machine specific. + + If you have Gcc and/or Bison, you might wish to mention that right + below here. + + Since this is to become a Makefile, blank lines which appear outside + of comments may not contain a TAB character. + + Copyright (C) 1987,1991 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 1, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + +/**/# This Makefile is automagically made from cpp-Makefile. You should +/**/# not be editing this file; edit cpp-Makefile, machines.h, or +/**/# support/mksysdefs instead. Then, assuming the edits were required +/**/# to compile Bash on your system, mail the changes you had to make to +/**/# bash-maintainers@prep.ai.mit.edu. We will do our best to incorporate +/**/# them into the next release. + +/**/# Make sure the first target in the makefile is the right one +all: .made + +/* **************************************************************** */ +/* */ +/* Which compiler are you using? */ +/* */ +/* **************************************************************** */ + +/* Define HAVE_GCC if you have the GNU C compiler. */ +/* #define HAVE_GCC */ + +#if defined (__GNUC__) && !defined (HAVE_GCC) && !defined (GCC_STANDARD) +# define HAVE_GCC +#endif + +/* Undefine HAVE_FIXED_INCLUDES if you are not using GCC with the fixed + header files. */ +#if defined (HAVE_GCC) && !defined (HAVE_FIXED_INCLUDES) +# define HAVE_FIXED_INCLUDES +#endif /* HAVE_GCC && !HAVE_FIXED_INCLUDES */ + +/* Include some boilerplate Gnu makefile definitions. */ +prefix = /usr/local + +/**/#prefix = @prefix@ + +exec_prefix = $(prefix) +bindir = $(exec_prefix)/bin +libdir = $(exec_prefix)/lib + +manroot = $(prefix)/man + +man1ext = 1 +man1dir = $(manroot)/man$(man1ext) +man3ext = 3 +man3dir = $(manroot)/man$(man3ext) +mandir = $(man1dir) +manext = $(man1ext) + +infodir = $(prefix)/info + +srcdir = . +/**/#srcdir = @srcdir@ + +VPATH = .:$(srcdir) + +incdir = $(prefix)/include +/**/#incdir = @incdir@ + +/* If you have purify, and want to use it, uncomment this definition or + run the make as `make -f bash-Makefile bash PURIFY=purify'. */ +PURIFY = # purify + +/* This includes the appropriate description for the machine that you are + using (we hope). If the compilation doesn't work correctly, then you + will have to edit the file `machines.h' to include a description for the + machine that your Cpp uniquely identifies this as. For example, Sun 4's + are recognized by the Cpp identifier `sparc', Vax is recognized with `vax', + etc. The order of these files is very important. Config.h must come last, + since it is capable of undef'ing various things. */ +#define BUILDING_MAKEFILE /* Tell config.h to avoid #including anything. */ +#include "sysdefs.h" +#include "machines.h" +#include "config.h" + +/**/# Here is a rule for making .o files from .c files that does not +/**/# force the type of the machine (like -M_MACHINE) into the flags. +.c.o: + $(RM) $@ + $(CC) $(CCFLAGS) $(CPPFLAGS) -c $< + +YACC = YACC_PROG + +#if defined (HAVE_GCC) +# if defined (GCC_FLAGS) +GCC_EXTRAS = GCC_FLAGS +# endif /* GCC_FLAGS */ +# if !defined (HAVE_FIXED_INCLUDES) +/* This is guaranteed to work, even if you have the fixed includes! + (Unless, of course, you have the fixed include files installed in + /usr/include. Then it will break.) */ +CC = gcc -traditional -I/usr/include $(GCC_EXTRAS) +# else /* HAVE_FIXED_INCLUDES */ +CC = gcc $(GCC_EXTRAS) +# endif /* HAVE_FIXED_INCLUDES */ +#else /* !HAVE_GCC */ +CC = CPP_CC +#endif /* !HAVE_GCC */ + +SHELL=/bin/sh +CP = cp +RM = rm -f +AR = ar +#if defined (RANLIB_LOCATION) +RANLIB = RANLIB_LOCATION +#else +RANLIB = ranlib +#endif /* RANLIB_LOCATION */ + +INSTALL_PROGRAM = $(SUPPORT_SRC)install.sh -c -s +INSTALL_DATA = $(SUPPORT_SRC)install -c -m 644 + +COMPRESS = gzip +COMPRESS_EXT = .gz + +Machine = M_MACHINE +OS = M_OS + +/**/# PROFILE_FLAGS is either -pg, to generate profiling info for use +/**/# with gprof, or nothing (the default). +PROFILE_FLAGS= + +/* These are defined in machines.h or sysdefs.h */ +#if defined (SYSDEP_CFLAGS) +/**/# This system has some peculiar flags that must be passed to the +/**/# the C compiler (or to cpp). +SYSDEP = SYSDEP_CFLAGS +#endif /* SYSDEP_CFLAGS */ + +#if defined (SYSDEP_LDFLAGS) +/**/# This system has some peculiar flags that must be passed to the +/**/# link editor (ld). +SYSDEP_LD = SYSDEP_LDFLAGS +#endif /* SYSDEP_LDFLAGS */ + +#if defined (HAVE_SETLINEBUF) +/**/# This system has the setlinebuf () call. +LINEBUF = -DHAVE_SETLINEBUF +#endif + +#if defined (HAVE_VFPRINTF) +/**/# This system has the vprintf () and vfprintf () calls. +VPRINTF = -DHAVE_VFPRINTF +#endif /* HAVE_VFPRINTF */ + +#if defined (USE_VFPRINTF_EMULATION) +VPRINTF = -DHAVE_VFPRINTF -DUSE_VFPRINTF_EMULATION +#endif /* USE_VFPRINTF_EMULATION */ + +#if defined (VOID_SIGHANDLER) +/**/# The signal () call provided by the system returns a pointer to +/**/# a function returning void. The signal handlers themselves are +/**/# thus void functions. +SIGHANDLER = -DVOID_SIGHANDLER +#endif + +#if defined (HAVE_STRERROR) +/**/# This system has the strerror () function. +STRERROR = -DHAVE_STRERROR +#endif + +#if defined (HAVE_GETGROUPS) +/**/# This system has multiple groups. +GROUPS = -DHAVE_GETGROUPS +#endif + +#if defined (HAVE_GETWD) +/**/# This system has the getwd () call. +GETWD = -DHAVE_GETWD +#endif + +#if defined (HAVE_GETCWD) +/**/# This system has the getcwd () call. +GETCWD = -DHAVE_GETCWD +#endif + +#if defined (HAVE_DUP2) +/**/# This system has a working version of dup2 (). +DUP2 = -DHAVE_DUP2 +#endif /* HAVE_DUP2 */ + +#if defined (HAVE_DIRENT) +/**/# This system uses struct dirent for reading directories with readdir. +DIRENT = -DHAVE_DIRENT +#endif /* HAVE_DIRENT */ + +#if defined (HAVE_STRCHR) +/**/# This system has strchr () and strrchr () string functions. +STRCHR = -DHAVE_STRCHR +#endif /* HAVE_STRCHR */ + +#if defined (HAVE_STRCASECMP) +STRCASE = -DHAVE_STRCASECMP +#endif /* HAVE_STRCASECMP */ + +#if defined (HAVE_SYS_SIGLIST) +SIGLIST = -DHAVE_SYS_SIGLIST +#endif /* HAVE_SYS_SIGLIST */ + +#if defined (HAVE_DLOPEN) +DLOPEN = -DHAVE_DLOPEN +#endif + +#if defined (HAVE_DLSYM) +DLSYM = -DHAVE_DLSYM +#endif + +#if defined (HAVE_DLCLOSE) +DLCLOSE = -DHAVE_DLCLOSE +#endif + +#if defined (HAVE_ALLOCA) +ALLOCA_DEFINE = -DHAVE_ALLOCA +#else +ALLOCA_DEFINE = +#endif /* HAVE_ALLOCA */ + +#if defined (HAVE_SYS_STREAM_H) +/**/# This system has +STREAM = -DHAVE_SYS_STREAM_H +#endif /* HAVE_SYS_STREAM_H */ + +#if defined (HAVE_SYS_PTEM_H) +/**/# This system has +PTEM = -DHAVE_SYS_PTEM_H +#endif /* HAVE_SYS_PTEM_H */ + +#if defined (HAVE_SYS_PTE_H) +/**/# This system has +PTE = -DHAVE_SYS_PTE_H +#endif /* HAVE_SYS_PTE_H */ + +/**/# This system has . +#if defined (HAVE_UNISTD_H) +UNISTD = -DHAVE_UNISTD_H +#endif + +/**/# This system has +#if defined (HAVE_STDLIB_H) +STDLIB = -DHAVE_STDLIB_H +#endif + +/**/# This system has +#if defined (HAVE_LIMITS_H) +LIMITSH = -DHAVE_LIMITS_H +#endif + +/**/# This system has +#if defined (HAVE_LOCALE_H) +LOCALE = -DHAVE_LOCALE_H +#endif + +#if defined (HAVE_ALLOCA_H) +ALLOCA_H_DEFINE = -DHAVE_ALLOCA_H +#else +ALLOCA_H_DEFINE = +#endif /* HAVE_ALLOCA_H */ + +#if defined (HAVE_RESOURCE) +/**/# This system has +RESOURCE = -DHAVE_RESOURCE +#endif + +#if defined (HAVE_SYS_PARAM) +/**/# This system has +PARAM = -DHAVE_SYS_PARAM +#endif + +#if defined (HAVE_WAIT_H) +/**/# This system has +WAITH = -DHAVE_WAIT_H +#endif + +#if defined (HAVE_DIRENT_H) +/**/# This system has /usr/include/dirent.h +DIRENTH = -DHAVE_DIRENT_H +#endif /* HAVE_DIRENT_H */ + +#if defined (HAVE_STRING_H) +/**/# This system has /usr/include/string.h +STRINGH = -DHAVE_STRING_H +#endif /* HAVE_STRING_H */ + +#if defined (HAVE_VARARGS_H) +/**/# This system has /usr/include/varargs.h +VARARGSH = -DHAVE_VARARGS_H +#endif /* HAVE_VARARGS_H */ + +#if defined (HAVE_DEV_FD) +/**/# This system has the /dev/fd directory for naming open files. +DEVFD = -DHAVE_DEV_FD +#endif /* HAVE_DEV_FD */ + +/**/# The GNU coding standards don't recognize the possibility that +/**/# other information besides optimization and debugging might be +/**/# passed to cc. A different name should have been used. +CFLAGS = -O -g + +SYSTEM_FLAGS = $(LINEBUF) $(VPRINTF) $(UNISTD) $(STDLIB) $(LIMITSH) $(LOCALE) \ + $(GROUPS) $(RESOURCE) $(PARAM) $(SIGHANDLER) $(SYSDEP) $(WAITH) \ + $(GETWD) $(GETCWD) $(DUP2) $(STRERROR) $(DIRENT) $(DIRENTH) $(STRINGH) \ + $(VARARGSH) $(STRCHR) $(STRCASE) $(DEVFD) $(DLOPEN) $(DLSYM) \ + $(DLCLOSE) $(SIGLIST) -D$(Machine) -D$(OS) -DPROGRAM='"$(Program)"' \ + -DHOSTTYPE='$(Machine)' -DOSTYPE='$(OS)' + +/* Compilation flags to use in the shell directory and to pass to builds + in subdirectories (readline, termcap) to ensure that alloca is treated + in a consistent fashion. */ +ALLOCA_CFLAGS = $(ALLOCA_DEFINE) $(ALLOCA_H_DEFINE) + +LDFLAGS = $(NOSHARE) $(SYSDEP_LD) $(EXTRA_LD_PATH) $(PROFILE_FLAGS) $(CFLAGS) +CCFLAGS = $(PROFILE_FLAGS) $(SYSTEM_FLAGS) -DSHELL $(ALLOCA_CFLAGS) \ + $(MALLOC_CFLAGS) $(CFLAGS) +CPPFLAGS= -I. -I$(srcdir) -I$(LIBSRC) -I$(incdir) +GCC_LINT_FLAGS = -ansi -Wall -Wshadow -Wpointer-arith -Wcast-qual \ + -Wwrite-strings -Werror -Wstrict-prototypes \ + -Wmissing-prototypes +GCC_LINT_CFLAGS = $(CCFLAGS) $(GCC_LINT_FLAGS) + +/* It is conceivable that you wish to edit some things beyond this point, + but I guess that it is highly unlikely, and may give you a headache. */ + +/* **************************************************************** */ +/* */ +/* How to Build the support libraries. */ +/* */ +/* **************************************************************** */ + +/**/# The location of sources for the support libraries. +LIBPATH = ./lib/ +LIBSRC = $(srcdir)/$(LIBPATH) + +/**/# Preface building with the full path of the current library source. +LIBINC_DECL = topdir=`sh $(srcdir)/support/srcdir $(srcdir)`; export topdir +LIBINC_USAGE = "-I$${topdir} -I$${topdir}/$(LIBPATH) -I$(LIBSRC)" + +/* Defines used when building libraries. */ +#define LIBMAKE_FLAGS CFLAGS='$(LIBRARY_CFLAGS) '$(LIBINC_USAGE) \ + CPPFLAGS='$(CPPFLAGS)' LDFLAGS='$(LDFLAGS)' \ + RANLIB='$(RANLIB)' AR='$(AR)' CC='$(CC)' RM='$(RM)' \ + +/**/# Flags used when building libraries. +LIBRARY_CFLAGS = $(PROFILE_FLAGS) $(CFLAGS) $(SIGHANDLER) $(ALLOCA_CFLAGS) \ + $(SYSDEP) $(DIRENT) $(DIRENTH) $(STRINGH) $(VARARGSH) \ + $(PTEM) $(PTE) $(STREAM) $(STRERROR) $(RESOURCE) \ + $(STRCHR) -D$(Machine) -D$(OS) $(UNISTD) $(LIMITSH) \ + $(STRCASE) $(STDLIB) -DSHELL + +/* Macro used to build a library. */ +#define build_lib_in_dir(directory, target, srcdef, makefile) \ + @echo "Building in " directory "..."; \ + sh $(SUPPORT_SRC)mkdirs directory ; \ + ($(LIBINC_DECL); cd directory; \ + if [ ! -f Makefile ]; then cp makefile Makefile; fi; \ + $(MAKE) target $(MFLAGS) LIBMAKE_FLAGS srcdef) + +BUILTIN_CFLAGS = $(CCFLAGS) +BUILTIN_LIBFLAGS = "-I. -I$${topdir} -I$${topdir}/$(LIBPATH) -I$(incdir)" + +/* The builtins are somewhat special in that more information is needed + to compile them correctly. */ +#define build_builtins(target) \ + @sh $(SUPPORT_SRC)mkdirs $(DEFDIR) ; \ + ($(LIBINC_DECL); cd $(DEFDIR); \ + if [ ! -f Makefile ]; then \ + cp $(BUILTIN_ABSSRC)/Makefile Makefile; \ + fi; \ + $(MAKE) $(MFLAGS) target \ + srcdir=$(BUILTIN_ABSSRC) CPPFLAGS='' \ + CFLAGS='$(CCFLAGS) -I$(BUILTIN_ABSSRC) '$(BUILTIN_LIBFLAGS) \ + LDFLAGS='$(LDFLAGS)' RANLIB='$(RANLIB)' AR='$(AR)' CC='$(CC)' \ + RM='$(RM)' RL_LIBSRC='$(RL_ABSSRC)' \ + DIRECTDEFINE='-D '$(BUILTIN_SRCDIR)) + +/**/# The name of this program. +Program = bash + +/* **************************************************************** */ +/* */ +/* Support for desired libraries. */ +/* This includes Termcap, Glob, Tilde, History, and Readline. */ +/* */ +/* **************************************************************** */ + +/* Does this machine's linker need a space after -L? */ +#if defined (HAVE_GCC) +# undef SEARCH_LIB_NEEDS_SPACE +#endif /* HAVE_GCC */ + +#if defined (SEARCH_LIB_NEEDS_SPACE) +/**/# The native compiler for this machines requires a space after '-L'. +SEARCH_LIB = -L $(UNSET_VARIABLE_CREATES_SPACE) +#else +/**/# The compiler being used to build Bash can handle -L/library/path. +SEARCH_LIB = -L +#endif /* !SEARCH_LIB_NEEDS_SPACE */ + +#if defined (EXTRA_LIB_SEARCH_PATH) +/**/# Additional instructions to the linker telling it how to find libraries. +LOCAL_LD_PATH = EXTRA_LIB_SEARCH_PATH +EXTRA_LD_PATH = $(SEARCH_LIB)$(LOCAL_LD_PATH) +#endif /* EXTRA_LIB_SEARCH_PATH */ + +/* Right now we assume that you have the full source code to Bash. If + you simply have the library and header files installed, then + undefine HAVE_READLINE_SOURCE. */ +#define HAVE_READLINE_SOURCE + +#if defined (HAVE_READLINE_SOURCE) + +RL_LIBSRC = $(LIBSRC)readline/ +RL_LIBDOC = $(RL_LIBSRC)doc/ +RL_LIBDIR = $(LIBPATH)readline/ +RL_ABSSRC = $${topdir}/$(RL_LIBDIR) + +READLINE_LIBRARY = $(RL_LIBDIR)libreadline.a + +/**/# The source, object and documentation of the GNU Readline library. +READLINE_SOURCE = $(RL_LIBSRC)rldefs.h $(RL_LIBSRC)rlconf.h \ + $(RL_LIBSRC)readline.h \ + $(RL_LIBSRC)chardefs.h $(RL_LIBSRC)keymaps.h \ + $(RL_LIBSRC)history.h $(RL_LIBSRC)histlib.h \ + $(RL_LIBSRC)posixstat.h $(RL_LIBSRC)tilde.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 \ + $(RL_LIBSRC)vi_mode.c $(RL_LIBSRC)callback.c \ + $(RL_LIBSRC)readline.c $(RL_LIBSRC)tilde.c \ + $(RL_LIBSRC)rltty.c $(RL_LIBSRC)complete.c \ + $(RL_LIBSRC)bind.c $(RL_LIBSRC)isearch.c \ + $(RL_LIBSRC)display.c $(RL_LIBSRC)signals.c \ + $(RL_LIBSRC)util.c $(RL_LIBSRC)kill.c \ + $(RL_LIBSRC)undo.c $(RL_LIBSRC)macro.c \ + $(RL_LIBSRC)input.c $(RL_LIBSRC)xmalloc.c \ + $(RL_LIBSRC)histexpand.c $(RL_LIBSRC)history.c \ + $(RL_LIBSRC)histsearch.c $(RL_LIBSRC)histfile.c + +READLINE_OBJ = $(RL_LIBDIR)readline.o $(RL_LIBDIR)funmap.o \ + $(RL_LIBDIR)parens.o $(RL_LIBDIR)search.o \ + $(RL_LIBDIR)keymaps.o $(RL_LIBDIR)xmalloc.o \ + $(RL_LIBDIR)rltty.o $(RL_LIBDIR)complete.o \ + $(RL_LIBDIR)bind.o $(RL_LIBDIR)isearch.o \ + $(RL_LIBDIR)display.o $(RL_LIBDIR)signals.o \ + $(RL_LIBDIR)tilde.o $(RL_LIBDIR)util.o \ + $(RL_LIBDIR)kill.o $(RL_LIBDIR)undo.o \ + $(RL_LIBDIR)macro.o $(RL_LIBDIR)input.o \ + $(RL_LIBDIR)callback.o \ + $(RL_LIBDIR)history.o $(RL_LIBDIR)histexpand.o \ + $(RL_LIBDIR)histsearch.o $(RL_LIBDIR)histfile.o + +READLINE_DOC = $(RL_LIBDOC)rlman.texinfo $(RL_LIBDOC)rluser.texinfo \ + $(RL_LIBDOC)rltech.texinfo + +READLINE_DOC_SUPPORT = $(RL_LIBDOC)Makefile $(RL_LIBDOC)readline.dvi \ + $(RL_LIBDOC)readline.info + +/**/# This has to be written funny to avoid looking like a C comment starter. +READLINE_EXAMPLES = $(RL_LIBSRC)examples/[a-zA-Z]*.[ch] \ + $(RL_LIBSRC)examples/Makefile $(RL_LIBSRC)examples/Inputrc + +/**/# Support files for GNU Readline. +READLINE_SUPPORT = $(RL_LIBSRC)Makefile $(RL_LIBSRC)ChangeLog \ + $(RL_LIBSRC)COPYING $(READLINE_EXAMPLES) \ + $(READLINE_DOC_SUPPORT) + +#else /* !HAVE_READLINE_SOURCE */ + +# if defined (READLINE) +READLINE_LIBRARY = -lreadline +# endif /* READLINE */ +RL_LIBDIR = $(srcdir)/$(LIBSRC)readline/ + +#endif /* !HAVE_READLINE_SOURCE */ + +#if defined (READLINE) +/**/# You wish to compile with the line editing features installed. +READLINE_LIB = -lreadline + +/**/# You only need termcap (or curses) if you are linking with GNU Readline. +# if defined (USE_TERMCAP_EMULATION) +TERMCAP_LIB = -lcurses +# else /* !USE_TERMCAP_EMULATION */ +TERMCAP_LIB = -ltermcap +# endif /* !USE_TERMCAP_EMULATION */ + +/**/# Directory list for -L so that the link editor (ld) can find -lreadline. +# if !defined (LD_HAS_NO_DASH_L) +# if defined (HAVE_READLINE_SOURCE) +READLINE_LDFLAGS = $(SEARCH_LIB)$(RL_LIBDIR) $(TERMCAP_LDFLAGS) +# else +READLINE_LDFLAGS = $(TERMCAP_LDFLAGS) $(SEARCH_LIB)$(libdir) \ + $(SEARCH_LIB)/usr/local/lib +# endif /* HAVE_READLINE_SOURCE */ +# endif /* LD_HAS_NO_DASH_L */ +#endif /* READLINE */ + +/* Right now we assume that you have the full source code to Bash, + including the source code to the history library. If you only have + the library and header files installed, then you can undefine + HAVE_HISTORY_SOURCE. */ +#define HAVE_HISTORY_SOURCE + +# if defined (HISTORY) && !defined (READLINE) +/**/# You are compiling with history features but without line editing. +HISTORY_LIB = -lhistory +# endif /* HISTORY && !READLINE */ + +#if defined (HAVE_HISTORY_SOURCE) + +HIST_LIBSRC = $(LIBSRC)readline/ +HIST_LIBDOC = $(HIST_LIBSRC)doc/ +HIST_LIBDIR = $(LIBPATH)readline/ +HIST_ABSSRC = $${topdir}/$(HIST_LIBDIR)/ + +/* If you are building with readline, then you do not explicitly need the + history library. */ +# if defined (READLINE) +HISTORY_LIBRARY = +# else +HISTORY_LIBRARY = $(HIST_LIBDIR)libhistory.a +# endif /* !READLINE */ + +/**/# The source, object and documentation of the history library. +HISTORY_SOURCE = $(HIST_LIBSRC)history.c $(HIST_LIBSRC)histexpand.c \ + $(HIST_LIBSRC)histsearch.c $(HIST_LIBSRC)histfile.c \ + $(HIST_LIBSRC)history.h $(HIST_LIBSRC)histlib.h +HISTORY_OBJ = $(HIST_LIBDIR)history.o $(HIST_LIBDIR)histexpand.o \ + $(HIST_LIBDIR)histsearch.o $(HIST_LIBDIR)histfile.o +HISTORY_DOC = $(HIST_LIBDOC)hist.texinfo $(HIST_LIBDOC)hsuser.texinfo \ + $(HIST_LIBDOC)hstech.texinfo + +/**/# Directory list for -L so that the link editor (ld) can find -lhistory. +# if defined (HISTORY) && !defined (READLINE) +# if !defined (LD_HAS_NO_DASH_L) +HISTORY_LDFLAGS = $(SEARCH_LIB)$(HIST_LIBDIR) +# endif /* LD_HAS_NO_DASH_L */ +# endif /* HISTORY && !READLINE */ +#else /* !HAVE_HISTORY_SOURCE */ +# if defined (HISTORY) && !defined (READLINE) +HISTORY_LIBRARY = -lhistory +HISTORY_LDFLAGS = $(SEARCH_LIB)$(libdir) $(SEARCH_LIB)/usr/local/lib +# endif /* HISTORY && !READLINE */ +#endif /* !HAVE_HISTORY_SOURCE */ + +#if defined (USE_GNU_TERMCAP) +# define HAVE_TERMCAP_SOURCE +TERM_LIBSRC = $(LIBSRC)termcap/ +TERM_LIBDIR = $(LIBPATH)termcap/ +TERM_ABSSRC = $${topdir}/$(TERM_LIBDIR) + +/**/# The source, object and documentation for the GNU Termcap library. +TERMCAP_LIBRARY = $(TERM_LIBDIR)libtermcap.a + +TERMCAP_SOURCE = $(TERM_LIBSRC)termcap.c $(TERM_LIBSRC)tparam.c +TERMCAP_OBJ = $(TERM_LIBDIR)termcap.o $(TERM_LIBDIR)tparam.o +TERMCAP_DOC = $(TERM_LIBSRC)termcap.texinfo +TERMCAP_SUPPORT = $(TERM_LIBSRC)Makefile $(TERM_LIBSRC)ChangeLog + +# if !defined (LD_HAS_NO_DASH_L) +TERMCAP_LDFLAGS = $(SEARCH_LIB)$(TERM_LIBDIR) +# endif /* !LD_HAS_NO_DASH_L */ +#else /* !USE_GNU_TERMCAP */ + +/* Guessed at symbol for LIBRARIES, below. */ +# if defined (USE_TERMCAP_EMULATION) +TERMCAP_LIBRARY = -lcurses +# else /* !USE_TERMCAP_EMULATION */ +TERMCAP_LIBRARY = -ltermcap +# endif /* !USE_TERMCAP_EMULATION */ +#endif /* !USE_GNU_TERMCAP */ + +/* The glob library is always used. */ +#define USE_GLOB_LIBRARY + +#if defined (USE_GLOB_LIBRARY) +GLOB_LIBSRC = $(LIBSRC)glob/ +GLOB_LIBDIR = $(LIBPATH)glob/ +GLOB_ABSSRC = $${topdir}/$(GLOB_LIBDIR) + +GLOB_LIBRARY = $(GLOB_LIBDIR)libglob.a + +GLOB_SOURCE = $(GLOB_LIBSRC)glob.c $(GLOB_LIBSRC)fnmatch.c \ + $(GLOB_LIBSRC)glob.h $(GLOB_LIBSRC)fnmatch.h +GLOB_OBJ = $(GLOB_LIBDIR)glob.o $(GLOB_LIBDIR)fnmatch.o +GLOB_DOC = $(GLOB_LIBSRC)doc/glob.texi $(GLOB_LIBSRC)doc/Makefile +GLOB_SUPPORT= $(GLOB_LIBSRC)Makefile $(GLOB_LIBSRC)ChangeLog + +# if !defined (LD_HAS_NO_DASH_L) +GLOB_LDFLAGS = $(SEARCH_LIB)$(GLOB_LIBDIR) +# endif /* !LD_HAS_NO_DASH_L */ +GLOB_LIB = -lglob +#endif /* USE_GLOB_LIBRARY */ + +/* The source code for the tilde expansion library. */ +#if defined (HAVE_READLINE_SOURCE) +# define HAVE_TILDE_SOURCE +#endif /* HAVE_READLINE_SOURCE */ + +#if defined (HAVE_TILDE_SOURCE) +/**/# The source, object and documentation for the GNU Tilde library. +TILDE_LIBSRC = $(LIBSRC)tilde/ +TILDE_LIBDIR = $(LIBPATH)tilde/ +TILDE_ABSSRC = $${topdir}/$(TILDE_LIBDIR) + +TILDE_LIBRARY = $(TILDE_LIBDIR)libtilde.a + +TILDE_SOURCE = $(TILDE_LIBSRC)tilde.c $(TILDE_LIBSRC)tilde.h +TILDE_OBJ = $(TILDE_LIBDIR)tilde.o +TILDE_DOC = $(TILDE_LIBSRC)doc/tilde.texi $(TILDE_LIBSRC)doc/Makefile +TILDE_SUPPORT = $(TILDE_LIBSRC)Makefile $(TILDE_LIBSRC)ChangeLog + +TILDE_LIB = -ltilde + +# if !defined (LD_HAS_NO_DASH_L) +TILDE_LDFLAGS = $(SEARCH_LIB)$(TILDE_LIBDIR) +# endif /* !LD_HAS_NO_DASH_L */ + +#else /* !HAVE_TILDE_SOURCE */ +/**/# Guessed at location of the tilde +TILDE_LIBRARY = $(libdir)/libtilde.a +#endif /* !HAVE_TILDE_SOURCE */ + +/**/# The directory which contains the source for malloc. The name must +/**/# end in a slash, as in "./lib/malloc/". +ALLOC_LIBSRC = $(LIBSRC)malloc/ +ALLOC_LIBDIR = $(LIBPATH)malloc/ +ALLOC_ABSSRC = $${topdir}/$(ALLOC_LIBDIR) + +/**/# Our malloc. +#if defined (USE_GNU_MALLOC) + +MALLOC_OBJ = $(ALLOC_LIBDIR)malloc.o +MALLOC_SRC = $(ALLOC_LIBSRC)malloc.c +MALLOC_FLAGS = -Drcheck -Dbotch=programming_error + +MALLOC_LIBRARY = $(ALLOC_LIBDIR)libmalloc.a + +# if !defined (LD_HAS_NO_DASH_L) +MALLOC_LDFLAGS = $(SEARCH_LIB)$(ALLOC_LIBDIR) +# endif /* !LD_HAS_NO_DASH_L */ +MALLOC_LIB = -lmalloc + +MALLOC_DEP = $(MALLOC_LIBRARY) +#endif /* USE_GNU_MALLOC */ + +/* If this user doesn't have alloca (), then we must try to supply them + with a working one. */ +#if !defined (HAVE_ALLOCA) +ALLOCA = alloca.o +# if defined (ALLOCA_ASM) +ALLOCA_SOURCE = ALLOCA_ASM +ALLOCA_OBJECT = ALLOCA_OBJ +# else +ALLOCA_SOURCE = alloca.c +ALLOCA_OBJECT = alloca.o +# endif /* ALLOCA_ASM */ +ALLOCA_DEP = $(ALLOC_LIBSRC)$(ALLOCA_SOURCE) +#endif /* !HAVE_ALLOCA */ + +/* Protect the `i386' used in the definition of ALLOC_FILES. */ +#if defined (i386) +# undef i386 +# define i386_defined +#endif /* i386 */ + +ALLOC_HEADERS = $(ALLOC_LIBSRC)getpagesize.h +ALLOC_FILES = $(ALLOC_LIBSRC)malloc.c $(ALLOC_LIBSRC)alloca.c \ + $(ALLOC_LIBSRC)i386-alloca.s $(ALLOC_LIBSRC)x386-alloca.s \ + $(ALLOC_LIBSRC)xmalloc.c + +/* Perhaps restore the `i386' define. */ +#if defined (i386_defined) +# define i386 +# undef i386_defined +#endif /* i386_defined */ + +#if defined (USE_GNU_MALLOC) +$(ALLOC_LIBDIR)libmalloc.a: $(MALLOC_SRC) $(ALLOCA_DEP) + @sh $(SUPPORT_SRC)mkdirs $(ALLOC_LIBDIR) + @$(RM) $@ + @($(LIBINC_DECL); cd $(ALLOC_LIBDIR) ; \ + if [ ! -f Makefile ]; then cp $(ALLOC_ABSSRC)Makefile Makefile ; fi; \ + $(MAKE) $(MFLAGS) CC=$(CC) \ + CFLAGS='$(LIBRARY_CFLAGS) $(MALLOC_FLAGS)' \ + CPPFLAGS='$(CPPFLAGS)' MALLOC_SOURCE=$(MALLOC_SRC) \ + ALLOCA=$(ALLOCA) RANLIB=$(RANLIB) \ + ALLOCA_SOURCE=$(ALLOCA_SOURCE) \ + ALLOCA_OBJECT=$(ALLOCA_OBJECT) \ + srcdir=$(ALLOC_ABSSRC) libmalloc.a ) +#endif /* USE_GNU_MALLOC */ + +BASHPOSIX_LIB = $(LIBSRC)posixheaders/ +BASHPOSIX_SUPPORT = $(BASHPOSIX_LIB)posixstat.h $(BASHPOSIX_LIB)ansi_stdlib.h \ + $(BASHPOSIX_LIB)memalloc.h $(BASHPOSIX_LIB)stdc.h + +/**/# Declare all of the sources for the libraries that we have. +LIBRARY_SOURCE = $(READLINE_SOURCE) $(HISTORY_SOURCE) $(TERMCAP_SOURCE) \ + $(GLOB_SOURCE) $(TILDE_SOURCE) $(MALLOC_SOURCE) +LIBRARY_DOC = $(READLINE_DOC) $(HISTORY_DOC) $(TERMCAP_DOC) $(GLOB_DOC) \ + $(TILDE_DOC) $(MALLOC_DOC) +LIBRARY_SUPPORT = $(READLINE_SUPPORT) $(HISTORY_SUPPORT) $(TERMCAP_SUPPORT) \ + $(GLOB_SUPPORT) $(TILDE_SUPPORT) $(MALLOC_SUPPORT) +LIBRARY_TAR = $(LIBRARY_SOURCE) $(LIBRARY_DOC) $(LIBRARY_SUPPORT) + +/**/# The order is important. Most dependent first. +#if defined (LD_HAS_NO_DASH_L) +/**/# This linker does not know how to grok the -l flag, or perhaps how +/**/# to grok the -L flag, or both. +LIBRARIES = $(READLINE_LIBRARY) $(HISTORY_LIBRARY) $(TERMCAP_LIBRARY) \ + $(GLOB_LIBRARY) $(TILDE_LIBRARY) $(MALLOC_LIBRARY) $(LOCAL_LIBS) +#else /* !LD_HAS_NO_DASH_L */ +LIBRARIES = $(READLINE_LIB) $(HISTORY_LIB) $(TERMCAP_LIB) $(GLOB_LIB) \ + $(TILDE_LIB) $(MALLOC_LIB) $(LOCAL_LIBS) +#endif /* !LD_HAS_NO_DASH_L */ + +#if defined (READLINE) +# if defined (HAVE_TERMCAP_SOURCE) +TERMCAP_DEP = $(TERMCAP_LIBRARY) +# endif /* HAVE_TERMCAP_SOURCE */ +# if defined (HAVE_READLINE_SOURCE) +READLINE_DEP = $(READLINE_LIBRARY) +# endif /* HAVE_READLINE_SOURCE */ +#endif /* READLINE */ + +#if defined (HISTORY) && defined (HAVE_HISTORY_SOURCE) && !defined (READLINE) +HISTORY_DEP = $(HISTORY_LIBRARY) +#endif + +#if defined (USE_GLOB_LIBRARY) +GLOB_DEP = $(GLOB_LIBRARY) +#else +GLOBC = glob.c fnmatch.c +GLOBO = glob.o fnmatch.o +#endif /* USE_GLOB_LIBRARY */ + +#if defined (HAVE_TILDE_SOURCE) +TILDE_DEP = $(TILDE_LIBRARY) +#endif + +/**/# Source files for libraries that Bash depends on. +LIBDEP = $(READLINE_DEP) $(TERMCAP_DEP) $(GLOB_DEP) $(HISTORY_DEP) \ + $(TILDE_DEP) $(MALLOC_DEP) + +/**/# Rules for cleaning the readline and termcap sources. +#if defined (HAVE_READLINE_SOURCE) +CLEAN_READLINE = (cd $(RL_LIBDIR); $(MAKE) $(MFLAGS) clean) +#else +CLEAN_READLINE = : +#endif /* !HAVE_READLINE_SOURCE */ + +#if defined (HAVE_HISTORY_SOURCE) +# if !defined (READLINE) +CLEAN_HISTORY = (cd $(HIST_LIBDIR); $(MAKE) $(MFLAGS) clean) +# else +CLEAN_HISTORY = : +# endif /* READLINE */ +#endif /* !HAVE_HISTORY_SOURCE */ + +#if defined (HAVE_TERMCAP_SOURCE) +CLEAN_TERMCAP = (cd $(TERM_LIBDIR); $(MAKE) $(MFLAGS) clean) +#else +CLEAN_TERMCAP = : +#endif /* !HAVE_TERMCAP_SOURCE */ + +#if defined (USE_GLOB_LIBRARY) +CLEAN_GLOB = (cd $(GLOB_LIBDIR); $(MAKE) $(MFLAGS) clean) +#else +CLEAN_GLOB = : +#endif /* !USE_GLOB_LIBRARY */ + +#if defined (HAVE_TILDE_SOURCE) +CLEAN_TILDE = (cd $(TILDE_LIBDIR); $(MAKE) $(MFLAGS) clean) +#else +CLEAN_TILDE = : +#endif /* !HAVE_TILDE_SOURCE */ + +CLEAN_MALLOC = (cd $(MALLOC_LIBDIR); $(MAKE) $(MFLAGS) clean) + +LIBRARY_LDFLAGS = $(READLINE_LDFLAGS) $(HISTORY_LDFLAGS) $(TILDE_LDFLAGS) \ + $(GLOB_LDFLAGS) $(MALLOC_LDFLAGS) + +#if defined (REQUIRED_LIBRARIES) +/**/# Locally required libraries. +LOCAL_LIBS = REQUIRED_LIBRARIES +#endif /* REQUIRED_LIBRARIES */ + +BUILTINS_LIB = builtins/libbuiltins.a + +/**/# The main source code for the Bourne Again SHell. +CSOURCES = shell.c parse.y general.c make_cmd.c print_cmd.c y.tab.c \ + dispose_cmd.c execute_cmd.c variables.c $(GLOBC) version.c \ + expr.c copy_cmd.c flags.c subst.c hash.c mailcheck.c \ + test.c trap.c jobs.c nojobs.c $(ALLOC_FILES) braces.c \ + vprint.c input.c bashhist.c array.c sig.c \ + unwind_prot.c siglist.c getcwd.c $(RL_SUPPORT_SRC) error.c + +HSOURCES = shell.h flags.h trap.h hash.h jobs.h builtins.h alias.c y.tab.h \ + general.h variables.h config.h $(ALLOC_HEADERS) alias.h maxpath.h \ + quit.h machines.h posixstat.h filecntl.h unwind_prot.h parser.h \ + command.h input.h error.h bashansi.h dispose_cmd.h make_cmd.h \ + subst.h externs.h siglist.h bashhist.h bashline.h bashtypes.h \ + array.h sig.h mailcheck.h + +SOURCES = $(CSOURCES) $(HSOURCES) $(BUILTIN_DEFS) + +/**/# Matching object files. +OBJECTS = shell.o y.tab.o general.o make_cmd.o print_cmd.o $(GLOBO) \ + dispose_cmd.o execute_cmd.o variables.o copy_cmd.o error.o \ + expr.o flags.o jobs.o subst.o hash.o mailcheck.o test.o \ + trap.o input.o unwind_prot.o sig.o version.o \ + alias.o array.o braces.o bracecomp.o bashhist.o bashline.o \ + getcwd.o siglist.o vprint.o \ + $(BUILTINS_LIB) + +/**/# Where the source code of the shell builtins resides. +BUILTIN_SRCDIR=$(srcdir)/builtins/ +DEFSRC=$(BUILTIN_SRCDIR) +/**/# The trailing slash was left off this definition on purpose +BUILTIN_ABSSRC=$${topdir}/builtins +DEFDIR = builtins/ +BUILTIN_DEFS = $(DEFSRC)alias.def $(DEFSRC)bind.def $(DEFSRC)break.def \ + $(DEFSRC)builtin.def $(DEFSRC)cd.def $(DEFSRC)colon.def \ + $(DEFSRC)command.def $(DEFSRC)declare.def \ + $(DEFSRC)echo.def $(DEFSRC)enable.def $(DEFSRC)eval.def \ + $(DEFSRC)exec.def $(DEFSRC)exit.def $(DEFSRC)fc.def \ + $(DEFSRC)fg_bg.def $(DEFSRC)hash.def $(DEFSRC)help.def \ + $(DEFSRC)history.def $(DEFSRC)jobs.def $(DEFSRC)kill.def \ + $(DEFSRC)let.def $(DEFSRC)read.def $(DEFSRC)return.def \ + $(DEFSRC)set.def $(DEFSRC)setattr.def $(DEFSRC)shift.def \ + $(DEFSRC)source.def $(DEFSRC)suspend.def $(DEFSRC)test.def \ + $(DEFSRC)times.def $(DEFSRC)trap.def $(DEFSRC)type.def \ + $(DEFSRC)ulimit.def $(DEFSRC)umask.def $(DEFSRC)wait.def \ + $(DEFSRC)getopts.def $(DEFSRC)reserved.def $(DEFSRC)pushd.def \ + $(DEFSRC)shopt.def +BUILTIN_C_SRC = $(DEFSRC)mkbuiltins.c $(DEFSRC)common.c \ + $(DEFSRC)hashcom.h $(DEFSRC)/bashgetopt.c $(GETOPT_SOURCE) +BUILTIN_C_OBJ = $(DEFDIR)common.o $(DEFDIR)bashgetopt.o +BUILTIN_OBJS = $(DEFDIR)alias.o $(DEFDIR)bind.o $(DEFDIR)break.o \ + $(DEFDIR)builtin.o $(DEFDIR)cd.o $(DEFDIR)colon.o \ + $(DEFDIR)command.o $(DEFDIR)declare.o \ + $(DEFDIR)echo.o $(DEFDIR)enable.o $(DEFDIR)eval.o \ + $(DEFDIR)exec.o $(DEFDIR)exit.o $(DEFDIR)fc.o \ + $(DEFDIR)fg_bg.o $(DEFDIR)hash.o $(DEFDIR)help.o \ + $(DEFDIR)history.o $(DEFDIR)jobs.o $(DEFDIR)kill.o \ + $(DEFDIR)let.o $(DEFDIR)pushd.o $(DEFDIR)read.o \ + $(DEFDIR)return.o $(DEFDIR)shopt.o \ + $(DEFDIR)set.o $(DEFDIR)setattr.o $(DEFDIR)shift.o \ + $(DEFDIR)source.o $(DEFDIR)suspend.o $(DEFDIR)test.o \ + $(DEFDIR)times.o $(DEFDIR)trap.o $(DEFDIR)type.o \ + $(DEFDIR)ulimit.o $(DEFDIR)umask.o $(DEFDIR)wait.o \ + $(DEFDIR)getopts.o $(BUILTIN_C_OBJ) +GETOPT_SOURCE = $(DEFSRC)getopt.c $(DEFSRC)getopt.h +PSIZE_SOURCE = $(DEFSRC)psize.sh $(DEFSRC)psize.c +BUILTIN_SUPPORT = $(DEFSRC)Makefile $(PSIZE_SOURCE) $(BUILTIN_C_SRC) + +/**/# Documentation for the shell. +DOCDIR = $(srcdir)/documentation/ + +ENDIAN_SUPPORT = $(SUPPORT_SRC)endian.c +#if !defined (HAVE_WAIT_H) +ENDIAN_HEADER = bash_endian.h +#endif + +SIGNAMES_SUPPORT = $(SUPPORT_SRC)mksignames.c + +SUPPORT_SRC = $(srcdir)/support/ +SDIR = ./support/ +EXAMPLES = ./examples/ +TEST_SUITE = ./test-suite/ + +CREATED_SUPPORT = bash_endian.h signames.h sysdefs.h \ + $(SDIR)getcppsyms recho tests/recho + +/**/# Keep GNU Make from exporting the entire environment for small machines. +.NOEXPORT: + +.made: $(Program) bashbug + cp .machine .made + +$(Program): .build $(OBJECTS) $(LIBDEP) $(srcdir)/.distribution + $(RM) $@ + $(PURIFY) $(CC) $(LDFLAGS) $(LIBRARY_LDFLAGS) -o $(Program) $(OBJECTS) $(LIBRARIES) + ls -l $(Program) + size $(Program) + +.build: $(SOURCES) cpp-Makefile mkversion + if ./mkversion -dir $(srcdir) -build; then mv -f newversion.h version.h; fi + @echo + @echo " ***************************************************" + @echo " * *" + @echo " * Making Bash-`cat $(srcdir)/.distribution`.`cat $(srcdir)/.patchlevel` for a $(Machine) running $(OS)" + @echo " * *" + @echo " ***************************************************" + @echo + @echo "$(Program) last made for a $(Machine) running $(OS)" >.machine + +bashbug: $(SUPPORT_SRC)bashbug.sh cpp-Makefile mkversion + @sed -e "s:@MACHINE@:$(Machine):" -e "s:@OS@:$(OS):" \ + -e "s:@CFLAGS@:$(CCFLAGS):" -e "s:@CC@:$(CC):" \ + -e "s:@RELEASE@:`cat $(srcdir)/.distribution`:" \ + -e "s:@PATCHLEVEL@:`cat $(srcdir)/.patchlevel`:" \ + $(SUPPORT_SRC)bashbug.sh > $@ + @chmod a+rx bashbug + +version.h: mkversion + if ./mkversion -dir $(srcdir) -build; then mv -f newversion.h version.h; fi + +y.tab.c: parser-built +y.tab.h: parser-built +parser-built: parse.y parser.h command.h stdc.h input.h + $(RM) $@ + -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 + touch $@ + +#if defined (READLINE) && defined (HAVE_READLINE_SOURCE) +$(READLINE_LIBRARY): $(READLINE_SOURCE) + build_lib_in_dir ($(RL_LIBDIR), libreadline.a, srcdir=$(RL_ABSSRC), $(RL_ABSSRC)Makefile) +#endif /* READLINE && HAVE_READLINE_SOURCE */ + +#if defined (HISTORY) && defined (HAVE_HISTORY_SOURCE) && !defined (READLINE) +$(HISTORY_LIBRARY): $(HISTORY_SOURCE) + build_lib_in_dir ($(HIST_LIBDIR), libhistory.a, srcdir=$(HIST_ABSSRC), $(HIST_ABSSRC)Makefile) +#endif /* HISTORY && HAVE_HISTORY_SOURCE && !READLINE */ + +#if defined (HAVE_TERMCAP_SOURCE) +$(TERMCAP_LIBRARY): $(TERMCAP_SOURCE) + build_lib_in_dir ($(TERM_LIBDIR), libtermcap.a, srcdir=$(TERM_ABSSRC), $(TERM_ABSSRC)Makefile) +#endif /* HAVE_TERMCAP_SOURCE */ + +#if defined (USE_GLOB_LIBRARY) +$(GLOB_LIBRARY): $(GLOB_SOURCE) + build_lib_in_dir ($(GLOB_LIBDIR), libglob.a, srcdir=$(GLOB_ABSSRC), $(GLOB_ABSSRC)Makefile) +#endif /* USE_GLOB_LIBRARY */ + +#if defined (HAVE_TILDE_SOURCE) +$(TILDE_LIBRARY): $(TILDE_SOURCE) + build_lib_in_dir ($(TILDE_LIBDIR), libtilde.a, srcdir=$(TILDE_ABSSRC), $(TILDE_ABSSRC)Makefile) +#endif /* HAVE_TILDE_SOURCE */ + +mkendian: $(SUPPORT_SRC)endian.c + $(CC) $(CCFLAGS) $(CPPFLAGS) -o $@ $(SUPPORT_SRC)endian.c + +bash_endian.h: mkendian + $(RM) $@ + ./mkendian $@ + +mksignames: $(SUPPORT_SRC)mksignames.c + $(CC) $(CCFLAGS) $(CPPFLAGS) -o $@ $(SUPPORT_SRC)mksignames.c + +signames.h: mksignames + $(RM) $@ + ./mksignames $@ + +builtins/libbuiltins.a: $(BUILTIN_OBJS) config.h memalloc.h + build_builtins (libbuiltins.a) + +builtins/common.o: $(BUILTIN_SRCDIR)common.c + build_builtins (common.o) +builtins/bashgetopt.o: $(BUILTIN_SRCDIR)bashgetopt.c + build_builtins (bashgetopt.o) + +builtins/builtext.h: builtins/libbuiltins.a + +/* Dependencies for the main bash source. */ +copy_cmd.o: shell.h sig.h command.h stdc.h hash.h +copy_cmd.o: general.h variables.h config.h memalloc.h quit.h +copy_cmd.o: dispose_cmd.h make_cmd.h subst.h externs.h +dispose_cmd.o: shell.h sig.h command.h stdc.h +dispose_cmd.o: general.h variables.h config.h memalloc.h quit.h +dispose_cmd.o: dispose_cmd.h make_cmd.h subst.h externs.h +error.o: error.h +execute_cmd.o: shell.h sig.h command.h stdc.h y.tab.h posixstat.h flags.h jobs.h +execute_cmd.o: general.h variables.h config.h memalloc.h quit.h hash.h +execute_cmd.o: unwind_prot.h siglist.h builtins/builtext.h +execute_cmd.o: dispose_cmd.h make_cmd.h subst.h externs.h bashtypes.h +expr.o: shell.h sig.h command.h stdc.h hash.h +expr.o: general.h variables.h config.h memalloc.h quit.h +expr.o: dispose_cmd.h make_cmd.h subst.h externs.h +flags.o: flags.h stdc.h config.h memalloc.h general.h quit.h +general.o: shell.h sig.h command.h stdc.h maxpath.h +general.o: general.h variables.h config.h memalloc.h quit.h machines.h +general.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +hash.o: shell.h sig.h command.h stdc.h hash.h +hash.o: general.h variables.h config.h memalloc.h quit.h +hash.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +jobs.o: shell.h sig.h command.h stdc.h hash.h trap.h jobs.h siglist.h +jobs.o: general.h variables.h config.h memalloc.h quit.h +jobs.o: dispose_cmd.h make_cmd.h subst.h externs.h builtins/builtext.h +mailcheck.o: posixstat.h maxpath.h variables.h +mailcheck.o: hash.h quit.h mailcheck.h +make_cmd.o: shell.h sig.h command.h stdc.h flags.h input.h bashtypes.h +make_cmd.o: general.h variables.h config.h memalloc.h quit.h +make_cmd.o: dispose_cmd.h make_cmd.h subst.h externs.h +y.tab.o: shell.h sig.h command.h stdc.h flags.h maxpath.h alias.h +y.tab.o: general.h variables.h config.h memalloc.h quit.h mailcheck.h +y.tab.o: dispose_cmd.h make_cmd.h subst.h externs.h bashtypes.h bashline.h +print_cmd.o: shell.h sig.h command.h stdc.h y.tab.h +print_cmd.o: general.h variables.h config.h memalloc.h quit.h +print_cmd.o: dispose_cmd.h make_cmd.h subst.h externs.h +shell.o: shell.h sig.h command.h stdc.h flags.h machines.h stdc.h parser.h +shell.o: general.h variables.h config.h memalloc.h quit.h +shell.o: dispose_cmd.h make_cmd.h subst.h externs.h mailcheck.h +shell.o: posixstat.h filecntl.h jobs.h input.h $(ENDIAN_HEADER) +subst.o: shell.h sig.h command.h stdc.h flags.h jobs.h siglist.h bashtypes.h +subst.o: general.h variables.h config.h memalloc.h quit.h +subst.o: dispose_cmd.h make_cmd.h subst.h externs.h execute_cmd.h +subst.o: builtins/getopt.h $(GLOB_LIBSRC)glob.h bashline.h +test.o: posixstat.h +trap.o: trap.h shell.h sig.h command.h stdc.h hash.h unwind_prot.h signames.h +trap.o: general.h variables.h config.h memalloc.h quit.h +trap.o: dispose_cmd.h make_cmd.h subst.h externs.h +unwind_prot.o: config.h memalloc.h general.h unwind_prot.h sig.h +variables.o: shell.h sig.h command.h stdc.h hash.h flags.h mailcheck.h +variables.o: config.h memalloc.h general.h variables.h quit.h +variables.o: execute_cmd.h dispose_cmd.h make_cmd.h subst.h externs.h +sig.o: shell.h sig.h command.h stdc.h hash.h flags.h +sig.o: config.h memalloc.h general.h variables.h quit.h +sig.o: bashtypes.h jobs.h bashline.h +version.o: version.h .build + +alias.o: ansi_stdlib.h +bashline.o: ansi_stdlib.h +variables.o: ansi_stdlib.h +shell.o: ansi_stdlib.h +error.o: ansi_stdlib.h +hash.o: ansi_stdlib.h +signames.o: ansi_stdlib.h +expr.o: ansi_stdlib.h +general.o: ansi_stdlib.h +input.o: ansi_stdlib.h + +#if !defined (JOB_CONTROL) +jobs.o: nojobs.c +#endif /* !JOB_CONTROL */ + +array.o: general.h shell.h sig.h variables.h quit.h config.h memalloc.h +array.o: command.h error.h maxpath.h unwind_prot.h dispose_cmd.h +array.o: make_cmd.h subst.h externs.h +array.o: array.h stdc.h builtins/common.h + +braces.o: general.h shell.h sig.h variables.h quit.h config.h memalloc.h +braces.o: dispose_cmd.h make_cmd.h subst.h externs.h +braces.o: maxpath.h unwind_prot.h command.h stdc.h + +bracecomp.o: bracecomp.c +bracecomp.o: shell.h sig.h command.h hash.h builtins.h general.h variables.h +bracecomp.o: quit.h alias.h config.h +bracecomp.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +#if defined (HAVE_READLINE_SOURCE) +bracecomp.o: $(RL_LIBSRC)readline.h +#endif /* HAVE_READLINE_SOURCE */ + +bashline.o: shell.h sig.h command.h stdc.h hash.h builtins.h execute_cmd.h +bashline.o: general.h variables.h config.h memalloc.h quit.h alias.h +bashline.o: dispose_cmd.h make_cmd.h subst.h externs.h config.h bashline.h +bashline.o: $(GLOB_LIBSRC)glob.h + +bashhist.o: config.h bashansi.h posixstat.h filecntl.h +bashhist.o: shell.h sig.h command.h stdc.h hash.h builtins.h execute_cmd.h +bashhist.o: general.h variables.h memalloc.h quit.h alias.h +bashhist.o: dispose_cmd.h make_cmd.h subst.h externs.h flags.h + +/* Dependencies which rely on the user using the source to READLINE. */ +#if defined (READLINE) && defined (HAVE_READLINE_SOURCE) +bashline.o: $(RL_LIBSRC)chardefs.h $(RL_LIBSRC)readline.h $(RL_LIBSRC)keymaps.h +y.tab.o: $(RL_LIBSRC)keymaps.h $(RL_LIBSRC)chardefs.h $(RL_LIBSRC)readline.h +#endif /* READLINE && HAVE_READLINE_SOURCE */ + +#if defined (HISTORY) && defined (HAVE_HISTORY_SOURCE) +subst.o: $(HIST_LIBSRC)history.h +bashline.o: $(HIST_LIBSRC)history.h +bashhist.o: $(HIST_LIBSRC)history.h +y.tab.o: $(HIST_LIBSRC)history.h +#endif /* HISTORY && HAVE_HISTORY_SOURCE */ + +#if defined (USE_GLOB_LIBRARY) +subst.o: $(GLOB_LIBSRC)fnmatch.h +execute_cmd.o: $(GLOB_LIBSRC)fnmatch.h +bashhist.o: $(GLOB_LIBSRC)fnmatch.h +#endif /* USE_GLOB_LIBRARY */ + +#if defined (HAVE_TILDE_SOURCE) +execute_cmd.o: $(TILDE_LIBSRC)tilde.h +general.o: $(TILDE_LIBSRC)tilde.h +mailcheck.o: $(TILDE_LIBSRC)tilde.h +shell.o: $(TILDE_LIBSRC)tilde.h +subst.o: $(TILDE_LIBSRC)tilde.h +variables.o: $(TILDE_LIBSRC)tilde.h +#endif /* HAVE_TILDE_SOURCE */ + +/* Dependencies for the shell builtins. */ +builtins/common.o: shell.h sig.h command.h config.h memalloc.h general.h error.h +builtins/common.o: variables.h input.h $(DEFDIR)hashcom.h siglist.h +builtins/common.o: quit.h unwind_prot.h maxpath.h jobs.h builtins.h +builtins/common.o: dispose_cmd.h make_cmd.h subst.h externs.h bashhist.h +builtins/common.o: execute_cmd.h stdc.h +builtins/alias.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/alias.o: quit.h builtins/common.h +builtins/alias.o: shell.h sig.h command.h stdc.h unwind_prot.h variables.h +builtins/alias.o: dispose_cmd.h make_cmd.h subst.h externs.h +builtins/bind.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/bind.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/bind.o: shell.h sig.h unwind_prot.h variables.h quit.h +builtins/bind.o: $(DEFDIR)bashgetopt.h +builtins/break.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/break.o: shell.h sig.h unwind_prot.h variables.h quit.h +builtins/break.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/builtin.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/builtin.o: quit.h $(DEFDIR)common.h +builtins/builtin.o: shell.h sig.h unwind_prot.h variables.h +builtins/builtin.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/cd.o: command.h config.h memalloc.h error.h general.h maxpath.h quit.h +builtins/cd.o: shell.h sig.h unwind_prot.h variables.h $(DEFDIR)common.h +builtins/cd.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/command.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/command.o: quit.h $(DEFDIR)bashgetopt.h +builtins/command.o: shell.h sig.h unwind_prot.h variables.h +builtins/command.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/declare.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/declare.o: shell.h sig.h unwind_prot.h variables.h quit.h +builtins/declare.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/echo.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/echo.o: shell.h sig.h unwind_prot.h variables.h quit.h +builtins/echo.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/enable.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/enable.o: shell.h sig.h unwind_prot.h variables.h quit.h +builtins/enable.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/eval.o: command.h config.h memalloc.h error.h general.h maxpath.h quit.h +builtins/eval.o: shell.h sig.h unwind_prot.h variables.h +builtins/eval.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/exec.o: command.h config.h memalloc.h error.h general.h maxpath.h quit.h +builtins/exec.o: shell.h sig.h unwind_prot.h variables.h $(DEFDIR)common.h stdc.h +builtins/exec.o: dispose_cmd.h make_cmd.h subst.h externs.h execute_cmd.h +builtins/exec.o: flags.h +builtins/exit.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/exit.o: shell.h sig.h unwind_prot.h variables.h quit.h +builtins/exit.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/fc.o: builtins.h command.h stdc.h +builtins/fc.o: command.h config.h memalloc.h error.h general.h maxpath.h quit.h +builtins/fc.o: flags.h unwind_prot.h variables.h shell.h sig.h +builtins/fc.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/fc.o: $(DEFDIR)bashgetopt.h bashhist.h +builtins/fg_bg.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/fg_bg.o: shell.h sig.h unwind_prot.h variables.h quit.h +builtins/fg_bg.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/getopts.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/getopts.o: shell.h sig.h unwind_prot.h variables.h quit.h +builtins/getopts.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/hash.o: builtins.h command.h execute_cmd.h stdc.h +builtins/hash.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/hash.o: shell.h sig.h unwind_prot.h variables.h $(DEFDIR)common.h quit.h +builtins/help.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/help.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/help.o: shell.h sig.h unwind_prot.h variables.h quit.h +builtins/help.o: $(GLOB_LIBSRC)glob.h +builtins/history.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/history.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/history.o: filecntl.h shell.h sig.h unwind_prot.h variables.h +builtins/history.o: bashhist.h +builtins/inlib.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/inlib.o: shell.h sig.h unwind_prot.h variables.h quit.h +builtins/inlib.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/jobs.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/jobs.o: quit.h $(DEFDIR)bashgetopt.h +builtins/jobs.o: shell.h sig.h unwind_prot.h variables.h +builtins/jobs.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/kill.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/kill.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/kill.o: shell.h sig.h trap.h unwind_prot.h variables.h +builtins/let.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/let.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/let.o: shell.h sig.h unwind_prot.h variables.h +builtins/pushd.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/pushd.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/pushd.o: shell.h sig.h unwind_prot.h variables.h $(DEFDIR)common.h +builtins/read.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/read.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/read.o: shell.h sig.h unwind_prot.h variables.h +builtins/return.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/return.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/return.o: shell.h sig.h unwind_prot.h variables.h +builtins/set.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/set.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h +builtins/set.o: shell.h sig.h unwind_prot.h variables.h flags.h stdc.h +builtins/setattr.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/setattr.o: quit.h $(DEFDIR)common.h $(DEFDIR)bashgetopt.h +builtins/setattr.o: shell.h sig.h unwind_prot.h variables.h +builtins/setattr.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/shift.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/shift.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/shift.o: shell.h sig.h unwind_prot.h variables.h +builtins/shift.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/source.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/source.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/source.o: shell.h sig.h unwind_prot.h variables.h +builtins/suspend.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/suspend.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/suspend.o: shell.h sig.h unwind_prot.h variables.h +builtins/test.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/test.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/test.o: shell.h sig.h unwind_prot.h variables.h +builtins/times.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/times.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/times.o: shell.h sig.h unwind_prot.h variables.h +builtins/trap.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/trap.o: quit.h $(DEFDIR)common.h +builtins/trap.o: shell.h sig.h unwind_prot.h variables.h +builtins/trap.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/type.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/type.o: quit.h $(DEFDIR)common.h +builtins/type.o: shell.h sig.h unwind_prot.h variables.h execute_cmd.h +builtins/type.o: dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/ulimit.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/ulimit.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/ulimit.o: shell.h sig.h unwind_prot.h variables.h +builtins/umask.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/umask.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/umask.o: shell.h sig.h unwind_prot.h variables.h +builtins/wait.o: command.h config.h memalloc.h error.h general.h maxpath.h +builtins/wait.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h stdc.h +builtins/wait.o: shell.h sig.h unwind_prot.h variables.h +builtins/shopt.o: command.h config.h 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 unwind_prot.h variables.h maxpath.h +builtins/shopt.o: builtins/common.h builtins/bashgetopt.h + +builtins/bashgetopt.o: bashansi.h ansi_stdlib.h +builtins/mkbuiltins.o: bashansi.h ansi_stdlib.h +builtins/fc.o: bashansi.h ansi_stdlib.h + +#if defined (READLINE) && defined (HAVE_READLINE_SOURCE) +builtins/bind.o: $(RL_LIBSRC)chardefs.h $(RL_LIBSRC)readline.h $(RL_LIBSRC)keymaps.h +#endif /* READLINE && HAVE_READLINE_SOURCE */ + +#if defined (HISTORY) && defined (HAVE_HISTORY_SOURCE) +builtins/bind.o: $(HIST_LIBSRC)history.h +builtins/fc.o: $(HIST_LIBSRC)history.h +builtins/history.o: $(HIST_LIBSRC)history.h +#endif /* HISTORY && HAVE_HISTORY_SOURCE */ + +#if defined (HAVE_TILDE_SOURCE) +builtins/common.o: $(TILDE_LIBSRC)tilde.h +builtins/cd.o: $(TILDE_LIBSRC)tilde.h +#endif /* HAVE_TILDE_SOURCE */ + +builtins/alias.o: builtins/alias.def +builtins/bind.o: builtins/bind.def +builtins/break.o: builtins/break.def +builtins/builtin.o: builtins/builtin.def +builtins/cd.o: builtins/cd.def +builtins/colon.o: builtins/colon.def +builtins/command.o: builtins/command.def +builtins/declare.o: builtins/declare.def +builtins/echo.o: builtins/echo.def +builtins/enable.o: builtins/enable.def +builtins/eval.o: builtins/eval.def +builtins/exec.o: builtins/exec.def +builtins/exit.o: builtins/exit.def +builtins/fc.o: builtins/fc.def +builtins/fg_bg.o: builtins/fg_bg.def +builtins/getopts.o: builtins/getopts.def +builtins/hash.o: builtins/hash.def +builtins/help.o: builtins/help.def +builtins/history.o: builtins/history.def +builtins/inlib.o: builtins/inlib.def +builtins/jobs.o: builtins/jobs.def +builtins/kill.o: builtins/kill.def +builtins/let.o: builtins/let.def +builtins/pushd.o: builtins/pushd.def +builtins/read.o: builtins/read.def +builtins/reserved.o: builtins/reserved.def +builtins/return.o: builtins/return.def +builtins/set.o: builtins/set.def +builtins/setattr.o: builtins/setattr.def +builtins/shift.o: builtins/shift.def +builtins/shopt.o: builtins/shopt.def +builtins/source.o: builtins/source.def +builtins/suspend.o: builtins/suspend.def +builtins/test.o: builtins/test.def +builtins/times.o: builtins/times.def +builtins/trap.o: builtins/trap.def +builtins/type.o: builtins/type.def +builtins/ulimit.o: builtins/ulimit.def +builtins/umask.o: builtins/umask.def +builtins/wait.o: builtins/wait.def + +install: .made + $(INSTALL_PROGRAM) $(Program) $(bindir)/$(Program) + $(INSTALL_PROGRAM) bashbug $(bindir)/bashbug + $(RM) installed-$(Program) + -ln -s $(bindir)/$(Program) installed-$(Program) + ( cd $(DOCDIR) ; $(MAKE) $(MFLAGS) mandir=$(mandir) \ + man3dir=$(man3dir) infodir=$(infodir) \ + INSTALL_PROGRAM="${INSTALL_PROGRAM}" \ + INSTALL_DATA="${INSTALL_DATA}" $@ ) + +uninstall: .made + $(RM) $(bindir)/$(Program) installed-$(Program) $(bindir)/bashbug + ( cd $(DOCDIR) ; $(MAKE) $(MFLAGS) mandir=$(mandir) man3dir=$(man3dir) infodir=$(infodir) $@ ) + +.distribution: + ./mkversion -dir $(srcdir) -dist `$(Program) -c 'echo $$BASH_VERSION'` + +mkversion: $(SUPPORT_SRC)mkversion.c + $(CC) $(CCFLAGS) $(CPPFLAGS) -I$(srcdir) -I.. -o $@ $(SUPPORT_SRC)mkversion.c + +newversion: mkversion + $(RM) .build + ./mkversion -dir $(srcdir) -dist + mv -f newversion.h version.h + $(MAKE) -f $(srcdir)/Makefile $(MFLAGS) srcdir=$(srcdir) + +texindex: force + build_lib_in_dir($(LIBPATH)doc-support, texindex, $${topdir}/lib/doc-support, $${topdir}/lib/doc-support/Makefile) + +documentation: force texindex + (cd $(DOCDIR); $(MAKE) $(MFLAGS) CFLAGS='$(CCFLAGS)') + +force: + +tags: $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) + etags $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) + +TAGS: $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) + ctags -x $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) > $@ + +clean: + $(RM) $(OBJECTS) $(Program) bashbug ansi-Makefile *.aux + $(RM) .build .made .machine version.h + $(RM) $(CREATED_SUPPORT) bash-Makefile tags TAGS + (cd $(DOCDIR); $(MAKE) $(MFLAGS) clean) + (cd builtins; $(MAKE) $(MFLAGS) clean) + $(CLEAN_READLINE) ; + $(CLEAN_HISTORY) ; + $(CLEAN_TERMCAP) ; + $(CLEAN_GLOB) ; + $(CLEAN_TILDE) ; + $(CLEAN_MALLOC) ; + +distclean: clean + $(RM) installed-bash + +realclean: clean + $(RM) y.tab.c y.tab.h parser-built installed-bash + +recho: $(SUPPORT_SRC)recho.c + @$(CC) -o $@ $(SUPPORT_SRC)recho.c + +tests: force $(Program) recho + -[ -d tests ] || mkdir tests + @cp recho $(SUPPORT_SRC)printenv tests + ( cd tests ; sh run-all ) diff --git a/bash-20060316/CWRU/old-conf/machines.h b/bash-20060316/CWRU/old-conf/machines.h new file mode 100644 index 000000000..3a6633892 --- /dev/null +++ b/bash-20060316/CWRU/old-conf/machines.h @@ -0,0 +1,2314 @@ +/* machines.h -- + Included file in the makefile that gets run through Cpp. This file + tells which machines have what features based on the unique machine + identifier present in Cpp. */ + +/* Copyright (C) 1993 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + +/* **************************************************************** */ +/* */ +/* Global Assumptions (true for most systems). */ +/* */ +/* **************************************************************** */ + +/* We make some global assumptions here. This can be #undef'ed in + various machine specific entries. */ + +/* If this file is being processed with Gcc, then the user has Gcc. */ +#if defined (__GNUC__) && !defined (NeXT) && !defined (__FreeBSD__) +# if !defined (HAVE_GCC) +# define HAVE_GCC +# endif /* HAVE_GCC */ +#endif /* __GNUC__ && !NeXT && !__FreeBSD__ **/ + +/* Assume that all machines have the getwd () system call. We unset it + for USG systems. */ +#define HAVE_GETWD + +/* Assume that all systems have a working getcwd () call. We unset it for + ISC systems. */ +#define HAVE_GETCWD + +/* Most (but not all) systems have a good, working version of dup2 (). + For systems that don't have the call (HP/UX), and for systems + that don't set the open-on-exec flag for the dup'ed file descriptors, + (Sequents running Dynix, Ultrix), #undef HAVE_DUP2 in the machine + description. */ +#define HAVE_DUP2 + +/* Every machine that has Gcc has alloca as a builtin in Gcc. If you are + compiling Bash without Gcc, then you must have alloca in a library, + in your C compiler, or be able to assemble or compile the alloca source + that we ship with Bash. */ +#define HAVE_ALLOCA + +/* We like most machines to use the GNU Malloc routines supplied in the + source code because they provide high quality error checking. On + some machines, our malloc () cannot be used (because of library + conflicts, for example), and for those, you should specifically + #undef USE_GNU_MALLOC in the machine description. */ +#define USE_GNU_MALLOC + +/* This causes the Gnu malloc library (from glibc) to be used. */ +/* #define USE_GNU_MALLOC_LIBRARY */ + +/* Assume that every operating system supplies strchr () and strrchr () + in a standard library until proven otherwise. */ +#define HAVE_STRCHR + +/* Hardware-dependent CFLAGS. */ +#define MACHINE_CFLAGS + +/* **************************************************************** */ +/* */ +/* Sun Microsystems Machines */ +/* */ +/* **************************************************************** */ + +/* NetBSD running on a sparc. */ +#if defined (sparc) && defined (__NetBSD__) +# define M_MACHINE "sun4" +# define M_OS "NetBSD" +# define SYSDEP_CFLAGS -DOPENDIR_NOT_ROBUST -DINT_GROUPS_ARRAY \ + -DRLIMTYPE=quad_t +# define SYSDEP_LDFLAGS -static +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define HAVE_GETGROUPS +# define HAVE_VPRINTF +# define HAVE_STRERROR +# define VOID_SIGHANDLER +# define HAVE_DIRENT +# define HAVE_STRCASECMP +#endif /* sparc && __NetBSD__ */ + +#if defined (sun) && !defined (M_MACHINE) +/* We aren't currently using GNU Malloc on Suns because of a bug in Sun's + YP which bites us when Sun free ()'s an already free ()'ed address. + When Sun fixes their YP, we can start using our winning malloc again. */ +/* #undef USE_GNU_MALLOC */ + +/* Most Sun systems have signal handler functions that are void. */ +# define VOID_SIGHANDLER + +/* Most Sun systems have the following. */ +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define HAVE_VPRINTF +# define HAVE_GETGROUPS + +/* Check for SunOS4 or greater. */ +# if defined (SunOS5) +# define M_OS "SunOS5" +# define SYSDEP_CFLAGS -DUSGr4 -DUSG -DSolaris -DOPENDIR_NOT_ROBUST \ + -DSBRK_DECLARED -DINT_GROUPS_ARRAY +# define EXTRA_LIB_SEARCH_PATH /usr/ccs/lib +# if !defined (HAVE_GCC) +# define REQUIRED_LIBRARIES -ldl +# define SYSDEP_LDFLAGS -Bdynamic +# endif /* !HAVE_GCC */ +# define HAVE_STRERROR +# undef HAVE_GETWD +# undef HAVE_SETLINEBUF +# endif /* SunOS5 */ + +# if defined (SunOS4) +# define M_OS "SunOS4" +# define SYSDEP_CFLAGS -DHAVE_BSD_PGRP -DOPENDIR_NOT_ROBUST -DTERMIOS_LDISC \ + -DINT_GROUPS_ARRAY +# define HAVE_DIRENT +# define HAVE_DLOPEN +# define HAVE_DLSYM +# define HAVE_DLCLOSE +# define REQUIRED_LIBRARIES -ldl +# if !defined (HAVE_GCC) +# define SYSDEP_LDFLAGS -Bdynamic +# endif +# endif /* SunOS4 */ + +# if !defined (SunOS4) && !defined (SunOS5) +# define M_OS "SunOS3" +# if !defined (sparc) && !defined (__sparc__) +# undef VOID_SIGHANDLER +# endif /* !sparc */ +# endif /* !SunOS4 && !SunOS5 */ + +# if defined (mc68010) +# define sun2 +# define M_MACHINE "sun2" +# endif +# if defined (mc68020) +# define sun3 +# define M_MACHINE "sun3" +# endif +# if defined (sparc) || defined (__sparc__) +# define sun4 +# define M_MACHINE "sparc" +# endif +# if defined (i386) +# define done386 +# if !defined (SunOS5) +# define Sun386i +# define M_MACHINE "Sun386i" +# else +# define M_MACHINE "i386" +# endif +# endif /* i386 */ + +#endif /* sun && !M_MACHINE */ + +/* **************************************************************** */ +/* */ +/* DEC Machines (vax, decstations) */ +/* */ +/* **************************************************************** */ + +/* ************************ */ +/* */ +/* Alpha with OSF/1 */ +/* */ +/* ************************ */ +#if defined (__alpha) || defined (alpha) +# define M_MACHINE "alpha" +# define M_OS "OSF1" +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define HAVE_VPRINTF +# define HAVE_STRERROR +# define HAVE_GETGROUPS +# define VOID_SIGHANDLER +# define HAVE_DLOPEN +# define HAVE_DLSYM +# define HAVE_DLCLOSE +# define USE_TERMCAP_EMULATION +# if !defined (__GNUC__) +# define SYSDEP_CFLAGS -DNLS -D_BSD +# endif /* !__GNUC__ */ +# undef HAVE_ALLOCA +# undef USE_GNU_MALLOC +#endif /* __alpha || alpha */ + +/* ************************ */ +/* */ +/* Ultrix */ +/* */ +/* ************************ */ +#if defined (ultrix) +# if defined (MIPSEL) +# undef HAVE_ALLOCA_H +# define M_MACHINE "MIPSEL" +# else /* !MIPSEL */ +# define M_MACHINE "vax" +# endif /* !MIPSEL */ +# define SYSDEP_CFLAGS -DHAVE_BSD_PGRP -DTERMIOS_MISSING -DTERMIOS_LDISC \ + -DINT_GROUPS_ARRAY +# define M_OS "Ultrix" +# define HAVE_DIRENT +# define VOID_SIGHANDLER +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define HAVE_VPRINTF +# define HAVE_GETGROUPS +# undef HAVE_DUP2 +#endif /* ultrix */ + +/* ************************ */ +/* */ +/* VAX 4.3 BSD */ +/* */ +/* ************************ */ +#if defined (vax) && !defined (ultrix) +# define M_MACHINE "vax" +# define M_OS "Bsd" +# define HAVE_SETLINEBUF +# define HAVE_SYS_SIGLIST +# define HAVE_GETGROUPS +# define USE_VFPRINTF_EMULATION +#endif /* vax && !ultrix */ + +/* ************************ */ +/* */ +/* Tahoe 4.3 BSD */ +/* */ +/* ************************ */ +#if defined (tahoe) +# define M_MACHINE "tahoe" +# define M_OS "Bsd" +# define HAVE_SETLINEBUF +# define HAVE_SYS_SIGLIST +# define HAVE_GETGROUPS +# define HAVE_VPRINTF +#endif /* tahoe */ + +/* **************************************************************** */ +/* */ +/* Machines with MIPSco processors */ +/* */ +/* **************************************************************** */ + +/* **************************************** */ +/* */ +/* SGI Iris/IRIX */ +/* */ +/* **************************************** */ +#if defined (sgi) +# if defined (Irix3) +# define M_OS "Irix3" +# if !defined (HAVE_GCC) +# undef MACHINE_CFLAGS +# define MACHINE_CFLAGS -real_frameptr -Wf,-XNl3072 +# endif +# undef HAVE_ALLOCA +# endif /* Irix3 */ +# if defined (Irix4) +# define M_OS "Irix4" +# if !defined (HAVE_GCC) +# undef MACHINE_CFLAGS +# define MACHINE_CFLAGS -Wf,-XNl3072 +# endif +# endif /* Irix4 */ +# if defined (Irix5) +# define M_OS "Irix5" +# if !defined (HAVE_GCC) +# undef MACHINE_CFLAGS +# define MACHINE_CFLAGS -Wf,-XNl3072 +# endif +# endif /* Irix5 */ +# if defined (Irix6) +# define M_OS "Irix6" +# if !defined (HAVE_GCC) +# undef MACHINE_CFLAGS +# define MACHINE_CFLAGS -mips2 +# endif /* !HAVE_GCC */ +# endif /* Irix6 */ +# define M_MACHINE "sgi" +# define HAVE_GETGROUPS +# define VOID_SIGHANDLER +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define HAVE_VPRINTF +# if !defined (Irix6) +# define REQUIRED_LIBRARIES -lsun +# endif /* !Irix6 */ + /* SGI cc uses ansi c features *without* defining __STDC__ */ +# if defined (__EXTENSIONS__) && !defined (__STDC__) +# define ANSIC -D__STDC__ +# else +# define ANSIC +# endif /* !__EXTENSIONS__ || __STDC__ */ +# if defined (Irix5) || defined (Irix6) +# define SGI_CFLAGS -DUSG -DPGRP_PIPE -DHAVE_BCOPY -DHAVE_GETPW_DECLS \ + -DHAVE_SOCKETS -DSBRK_DECLARED +# else +# define SGI_CFLAGS -DUSG -DPGRP_PIPE -DHAVE_BCOPY -DHAVE_GETPW_DECLS \ + -DHAVE_SOCKETS +# endif /* !Irix5 */ +# define SYSDEP_CFLAGS SGI_CFLAGS MACHINE_CFLAGS ANSIC +#endif /* sgi */ + +/* ************************ */ +/* */ +/* NEC EWS 4800 */ +/* */ +/* ************************ */ +#if defined (nec_ews) +# if defined (SYSTYPE_SYSV) || defined (USGr4) +# define M_MACHINE "ews4800" +# define M_OS "USG" +# define HAVE_VPRINTF +# define VOID_SIGHANDLER +# define HAVE_STRERROR +# define HAVE_DUP2 +# undef HAVE_GETWD +# undef HAVE_RESOURCE /* ? */ + /* Alloca requires either Gcc or cc with -lucb. */ +# if !defined (HAVE_GCC) +# define EXTRA_LIB_SEARCH_PATH /usr/ucblib +# define REQUIRED_LIBRARIES -lc -lucb +# endif /* !HAVE_GCC */ +# if defined (MIPSEB) +# if !defined (HAVE_GCC) +# undef MACHINE_CFLAGS +# define MACHINE_CFLAGS -Wf,-XNl3072 +# endif +# define SYSDEP_CFLAGS MACHINE_CFLAGS -DUSGr4 -DUSGr3 -D_POSIX_JOB_CONTROL +# else /* !MIPSEB */ +# define SYSDEP_CFLAGS -DUSGr4 +# endif /* MIPSEB */ +# else /* !SYSTYPE_SYSV && !USGr4 */ +# define M_OS "Bsd" +# endif /* !SYSTYPE_SYSV && !USGr4 */ +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define HAVE_GETGROUPS +#endif /* nec_ews */ + +/* ************************ */ +/* */ +/* Generic MIPS SVR4, 4.2 */ +/* */ +/* ************************ */ +#if defined (MIPSEB) && defined (USGr4) +# define M_MACHINE "MIPSEB" +# define M_OS "USG" +# if defined (sony) && !defined (HAVE_GCC) +# undef MACHINE_CFLAGS +# define MACHINE_CFLAGS -Wf,-XNl3072 +# endif +/* XXX - os/svr4.h -- for the future -- XXX */ +# undef HAVE_GETWD +# define HAVE_DIRENT +# define HAVE_STRERROR +# define HAVE_VPRINTF +# define VOID_SIGHANDLER +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define HAVE_GETGROUPS +/* alloca */ +# if !defined (HAVE_GCC) +# define EXTRA_LIB_SEARCH_PATH /usr/ucblib +# define REQUIRED_LIBRARIES -lc -lucb +# endif /* !HAVE_GCC */ +# if defined (USGr4_2) +# define SYSDEP_CFLAGS MACHINE_CFLAGS -DUSGr4 -DUSGr4_2 +# else +# define SYSDEP_CFLAGS MACHINE_CFLAGS -DUSGr4 +# endif /* !USGr4_2 */ +#endif + +/* ************************ */ +/* */ +/* Sony */ +/* */ +/* ************************ */ +#if defined (sony) && !defined (M_MACHINE) +# if defined (MIPSEB) +# define M_MACHINE "MIPSEB" +# else /* !MIPSEB */ +# define M_MACHINE "sony" +# endif /* !MIPSEB */ + +# if defined (SYSTYPE_SYSV) || defined (USGr4) +# define M_OS "USG" +# undef HAVE_GETWD +# define HAVE_DIRENT +# define HAVE_STRERROR +# define HAVE_VPRINTF +# define VOID_SIGHANDLER + /* Alloca requires either Gcc or cc with -lucb. */ +# if !defined (HAVE_GCC) +# define EXTRA_LIB_SEARCH_PATH /usr/ucblib +# define REQUIRED_LIBRARIES -lc -lucb +# endif /* !HAVE_GCC */ +# if defined (MIPSEB) +# if !defined (HAVE_GCC) +# undef MACHINE_CFLAGS +# define MACHINE_CFLAGS -Wf,-XNl3072 +# endif +# define SYSDEP_CFLAGS MACHINE_CFLAGS -DUSGr4 +# else /* !MIPSEB */ +# define SYSDEP_CFLAGS -DUSGr4 +# endif /* !MIPSEB */ +# else /* !SYSTYPE_SYSV && !USGr4 */ +# define M_OS "Bsd" +# define SYSDEP_CFLAGS -DHAVE_UID_T +# endif /* !SYSTYPE_SYSV && !USGr4 */ +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define HAVE_GETGROUPS +#endif /* sony */ + +/* ******************************* */ +/* */ +/* Ardent Titan OS v2.2 and later */ +/* */ +/* ******************************* */ +#if defined (ardent) +# define M_MACHINE "Ardent Titan" +# define M_OS "Bsd" +# if defined (titan) +# undef HAVE_GETGROUPS +# else +# define HAVE_GETGROUPS +# endif /* !titan */ +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define SYSDEP_CFLAGS -43 -w +# define SYSDEP_LDFLAGS -43 +# undef HAVE_ALLOCA +# undef USE_GNU_MALLOC +# undef HAVE_VPRINTF +# undef HAVE_DIRENT_H +#endif /* ardent */ + +/* ************************ */ +/* */ +/* Stardent */ +/* */ +/* ************************ */ +#if defined (stardent) && !defined (M_MACHINE) +# define M_MACHINE "Stardent" +# define M_OS "USG" +# define HAVE_SYS_SIGLIST +# define USE_TERMCAP_EMULATION +# define VOID_SIGHANDLER +# undef HAVE_GETWD +# undef HAVE_ALLOCA +#endif /* stardent */ + +/* ******************************** */ +/* */ +/* MIPS RISC/os */ +/* */ +/* ******************************** */ + +/* Notes on compiling with "make": + + * Place /bsd43/bin in your PATH before /bin. + * Use `$(CC) -E' instead of `/lib/cpp' in Makefile. +*/ +#if defined (mips) && (!defined (M_MACHINE) || defined (RiscOS)) + +# if defined (MIPSEB) +# define M_MACHINE "MIPSEB" +# else /* !MIPSEB */ +# if defined (MIPSEL) +# define M_MACHINE "MIPSEL" +# else /* !MIPSEL */ +# define M_MACHINE "mips" +# endif /* !MIPSEL */ +# endif /* !MIPSEB */ + +# define M_OS "Bsd" + + /* Special things for machines from MIPS Co. */ +# define MIPS_CFLAGS -DOPENDIR_NOT_ROBUST -DPGRP_PIPE + +# if !defined (HAVE_GCC) +# undef MACHINE_CFLAGS +# define MACHINE_CFLAGS -Wf,-XNl3072 -systype bsd43 +# endif /* !HAVE_GCC */ +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define HAVE_VPRINTF +# define HAVE_GETGROUPS +# undef HAVE_UNISTD_H +# if !defined (HAVE_RESOURCE) +# define HAVE_RESOURCE +# endif /* !HAVE_RESOURCE */ +# if defined (bsd4_4) +# define VOID_SIGHANDLER +# define HAVE_UNISTD_H /* ??? atsuo@harl.hitachi.co.jp */ +# define SYSDEP_CFLAGS MACHINE_CFLAGS MIPS_CFLAGS -D__BSD_4_4__ +# else + /* /usr/include/sys/wait.h appears not to work correctly, so why use it? */ +# undef HAVE_WAIT_H +# define SYSDEP_CFLAGS MACHINE_CFLAGS MIPS_CFLAGS +# endif +#endif /* mips */ + +/* ************************ */ +/* */ +/* Pyramid */ +/* */ +/* ************************ */ +#if defined (pyr) +# define M_MACHINE "Pyramid" +# define M_OS "Bsd" +# if !defined (HAVE_GCC) +# undef HAVE_ALLOCA +# endif /* HAVE_GCC */ +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define HAVE_GETGROUPS +#endif /* pyr */ + +/* ************************ */ +/* */ +/* IBMRT */ +/* */ +/* ************************ */ +#if defined (ibm032) +# define M_MACHINE "IBMRT" +# define M_OS "Bsd" +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define USE_VFPRINTF_EMULATION + /* Alloca requires either gcc or hc or pcc with -ma in SYSDEP_CFLAGS. */ +# if !defined (HAVE_GCC) +# define SYSDEP_CFLAGS -ma -U__STDC__ +# endif /* !HAVE_GCC */ +# define HAVE_GETGROUPS +/* #define USE_GNU_TERMCAP */ +#endif /* ibm032 */ + +/* **************************************************************** */ +/* */ +/* All Intel 386 Processor Machines are Defined Here! */ +/* */ +/* **************************************************************** */ + +#if defined (i386) + +/* Sequent Symmetry running Dynix/ptx 2.x */ +# if !defined (done386) && defined (_SEQUENT_) +# define done386 +# define M_MACHINE "Symmetry" +# define M_OS "Dynix" +# define DYNIX_CFLAGS -DHAVE_GETDTABLESIZE -DHAVE_SETDTABLESIZE \ + -DHAVE_GETPW_DECLS -DHAVE_SOCKETS +# define SYSDEP_CFLAGS -DUSG -DUSGr3 DYNIX_CFLAGS +# define HAVE_DIRENT +# define HAVE_VPRINTF +# define VOID_SIGHANDLER +/* Might need to add -lsocket -linet -lnsl to the list of libraries. */ +# define REQUIRED_LIBRARIES -lPW -lseq +# undef HAVE_GETWD +# undef HAVE_RESOURCE +# undef HAVE_ALLOCA +# endif /* _SEQUENT_ */ + +/* Sequent Symmetry running Dynix (4.2 BSD) */ +# if !defined (done386) && defined (sequent) +# define done386 +# define M_MACHINE "Symmetry" +# define M_OS "Bsd" +# define SYSDEP_CFLAGS -DCPCC -DHAVE_SETDTABLESIZE +# define HAVE_SETLINEBUF +# define HAVE_SYS_SIGLIST +# define HAVE_GETGROUPS +# define LD_HAS_NO_DASH_L +# undef HAVE_DUP2 +# endif /* Sequent 386 */ + +/* NeXT 3.x on i386 */ +# if !defined (done386) && defined (NeXT) +# define done386 +# define M_MACHINE "i386" +# define M_OS "NeXTstep" +# define HAVE_VPRINTF +# define HAVE_SYS_SIGLIST +# define HAVE_GETGROUPS +# define HAVE_STRERROR +# define VOID_SIGHANDLER +# if !defined (HAVE_RESOURCE) +# define HAVE_RESOURCE +# endif +# define HAVE_STRCASECMP +# define GCC_STANDARD +# undef HAVE_GETWD +# undef HAVE_GETCWD +# undef USE_GNU_MALLOC +# undef HAVE_DIRENT_H +# define SYSDEP_CFLAGS -DNeXT -DMKFIFO_MISSING -DRLOGIN_PGRP_BUG +# endif + +/* Generic 386 clone running Mach (4.3 BSD-compatible). */ +# if !defined (done386) && defined (MACH) +# define done386 +# define M_MACHINE "i386" +# define M_OS "Bsd" +# define HAVE_SETLINEBUF +# define HAVE_SYS_SIGLIST +# define HAVE_GETGROUPS +# endif /* i386 && MACH */ + +/* AIX PS/2 1.[23] for the [34]86. */ +# if !defined (done386) && defined (aixpc) +# define done386 +# define M_MACHINE "aixpc" +# define M_OS "AIX" +# define HAVE_VPRINTF +# define VOID_SIGHANDLER +# if defined (AIX_13) /* AIX PS/2 1.3 */ +# define SYSDEP_CFLAGS -DTERMIOS_LDISC +# define REQUIRED_LIBRARIES -lc_s +# else +# define SYSDEP_CFLAGS -D_BSD -DTERMIOS_LDISC +# define REQUIRED_LIBRARIES -lbsd -lc_s +# endif /* !AIX_13 */ +# define HAVE_GETGROUPS +# if !defined (HAVE_GCC) +# undef HAVE_ALLOCA +# undef HAVE_ALLOCA_H +# endif /* !HAVE_GCC */ +# define USE_TERMCAP_EMULATION +# endif /* AIXPC i386 */ + +/* System V Release 4 on the 386 */ +# if !defined (done386) && defined (USGr4) +# define done386 +# define M_MACHINE "i386" +# define M_OS "USG" +# define HAVE_DIRENT +# define HAVE_SYS_SIGLIST +# define HAVE_VPRINTF +# define VOID_SIGHANDLER + /* Alloca requires either Gcc or cc with -lucb. */ +# if !defined (HAVE_GCC) +# define EXTRA_LIB_SEARCH_PATH /usr/ucblib +# define REQUIRED_LIBRARIES -lc -lucb +# endif /* !HAVE_GCC */ +# define HAVE_GETGROUPS +# if defined (USGr4_2) +# define SYSDEP_CFLAGS -DUSGr4 -DUSGr4_2 -DSBRK_DECLARED +# else +# define SYSDEP_CFLAGS -DUSGr4 +# endif /* ! USGr4_2 */ +# undef HAVE_GETWD +# endif /* System V Release 4 on i386 */ + +/* 386 box running Interactive Unix 2.2 or greater. */ +# if !defined (done386) && defined (isc386) +# define done386 +# define M_MACHINE "isc386" +# define M_OS "USG" +# define HAVE_DIRENT +# define HAVE_VPRINTF +# define VOID_SIGHANDLER +# define HAVE_GETGROUPS +# define USE_TERMCAP_EMULATION +# if defined (HAVE_GCC) +# define SYSDEP_LDFLAGS -posix +# define ISC_POSIX +# else +# define REQUIRED_LIBRARIES -lPW +# define SYSDEP_LDFLAGS -Xp +# define ISC_POSIX -Xp +# endif +# define ISC_SYSDEPS -DUSGr3 -DPGRP_PIPE -DHAVE_GETPW_DECLS -D_POSIX_SOURCE -DOPENDIR_NOT_ROBUST -DMEMMOVE_MISSING +# if defined (__STDC__) +# if defined (HAVE_GCC) +# define ISC_EXTRA -DO_NDELAY=O_NONBLOCK +# else +# define ISC_EXTRA -Dmode_t="unsigned short" -DO_NDELAY=O_NONBLOCK +# endif /* HAVE_GCC */ +# else +# define ISC_EXTRA +# endif /* __STDC__ */ +# define SYSDEP_CFLAGS ISC_SYSDEPS ISC_POSIX ISC_EXTRA +# undef HAVE_GETWD +# if !defined (ISC_4) +# undef HAVE_GETCWD +# else /* ISC_4 */ +# undef HAVE_RESOURCE +# endif /* ISC_4 */ +# endif /* isc386 */ + +/* Xenix386 machine (with help from Ronald Khoo ). */ +# if !defined (done386) && defined (Xenix386) +# define done386 +# define M_MACHINE "i386" +# define M_OS "Xenix" +# define XENIX_CFLAGS -DUSG -DUSGr3 -DMEMMOVE_MISSING + +# if defined (XENIX_22) +# define XENIX_EXTRA -DSETVBUF_REVERSED +# define REQUIRED_LIBRARIES -lx +# else /* !XENIX_22 */ +# define HAVE_DIRENT +# if defined (XENIX_23) +# define XENIX_EXTRA -DLD_HAS_NO_DASH_L +# define REQUIRED_LIBRARIES -ldir +# else /* !XENIX_23 */ +# define XENIX_EXTRA -xenix +# define SYSDEP_LDFLAGS -xenix +# define REQUIRED_LIBRARIES -ldir -l2.3 +# endif /* !XENIX_23 */ +# endif /* !XENIX_22 */ + +# define SYSDEP_CFLAGS XENIX_CFLAGS XENIX_EXTRA +# define HAVE_VPRINTF +# define VOID_SIGHANDLER +# define ALLOCA_ASM x386-alloca.s +# define ALLOCA_OBJ x386-alloca.o +# undef HAVE_ALLOCA +# undef HAVE_GETWD +# undef HAVE_RESOURCE +# endif /* Xenix386 */ + +/* SCO UNIX 3.2 chip@count.tct.com (Chip Salzenberg) */ +# if !defined (done386) && defined (M_UNIX) +# define done386 +# define M_MACHINE "i386" +# define M_OS "SCO" +# define SCO_CFLAGS -DUSG -DUSGr3 -DNO_DEV_TTY_JOB_CONTROL -DPGRP_PIPE +# if defined (SCOv4) +# define SYSDEP_CFLAGS SCO_CFLAGS -DWAITPID_BROKEN +# else /* !SCOv4 */ +# define SYSDEP_CFLAGS SCO_CFLAGS -DMUST_UNBLOCK_CHLD -DOPENDIR_NOT_ROBUST +# endif /* !SCOv4 */ +# define HAVE_VPRINTF +# define VOID_SIGHANDLER +# define HAVE_GETGROUPS +# undef HAVE_GETWD +# undef HAVE_RESOURCE +/* advice from wbader@cess.lehigh.edu and Eduard.Vopicka@vse.cz */ +# if !defined (HAVE_GCC) +# define REQUIRED_LIBRARIES -lc_s -lc -lPW +# else +# define REQUIRED_LIBRARIES -lc_s -lc +# endif /* !HAVE_GCC */ +# endif /* SCO Unix on 386 boxes. */ + +# if !defined (done386) && defined (__OSF1__) +# define done386 +# define M_MACHINE "i386" +# define M_OS "OSF1" +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define HAVE_VPRINTF +# define HAVE_STRERROR +# define HAVE_GETGROUPS +# define VOID_SIGHANDLER +# define HAVE_BCOPY +# define USE_TERMCAP_EMULATION +# define SYSDEP_CFLAGS -D_BSD +# define REQUIRED_LIBRARIES -lbsd +# endif /* OSF/1 */ + +/* BSDI BSD/OS running on a 386 or 486. */ +# if !defined (done386) && defined (__bsdi__) +# define done386 +# define M_MACHINE "i386" +# if defined (BSDI2) +# define M_OS "BSD_OS" +# define SYSDEP_CFLAGS -DOPENDIR_NOT_ROBUST -DRLIMTYPE=quad_t +# else +# define M_OS "BSD386" +# define SYSDEP_CFLAGS -DOPENDIR_NOT_ROBUST -DINT_GROUPS_ARRAY +# endif +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define HAVE_GETGROUPS +# define HAVE_VPRINTF +# define HAVE_STRERROR +# define VOID_SIGHANDLER +# define HAVE_DIRENT +# define HAVE_STRCASECMP +# endif /* !done386 && bsdi */ + +/* NetBSD running on a 386 or 486. */ +# if !defined (done386) && defined (__NetBSD__) +# define done386 +# define M_MACHINE "i386" +# define M_OS "NetBSD" +# define SYSDEP_CFLAGS -DOPENDIR_NOT_ROBUST -DINT_GROUPS_ARRAY \ + -DRLIMTYPE=quad_t +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define HAVE_GETGROUPS +# define HAVE_VPRINTF +# define HAVE_STRERROR +# define VOID_SIGHANDLER +# define HAVE_DIRENT +# define HAVE_STRCASECMP +# endif /* !done386 && __NetBSD__ */ + +/* FreeBSD running on a 386 or 486. */ +# if !defined (done386) && defined (__FreeBSD__) +# define done386 +# define M_MACHINE "i386" +# define M_OS "FreeBSD" +# if __FreeBSD__ > 1 +# define SYSDEP_CFLAGS -D__BSD_4_4__ -DRLIMTYPE=quad_t +# else +# define SYSDEP_CFLAGS -DOPENDIR_NOT_ROBUST -DINT_GROUPS_ARRAY +# endif +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define HAVE_GETGROUPS +# define HAVE_VPRINTF +# define HAVE_STRERROR +# define VOID_SIGHANDLER +# define HAVE_DIRENT +# define HAVE_STRCASECMP +# define GCC_STANDARD +# endif /* !done386 && __FreeBSD__ */ + +/* Jolitz 386BSD running on a 386 or 486. */ +# if !defined (done386) && defined (__386BSD__) +# define done386 +# define M_MACHINE "i386" +# define M_OS "_386BSD" +# define SYSDEP_CFLAGS -DOPENDIR_NOT_ROBUST -DINT_GROUPS_ARRAY +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define HAVE_GETGROUPS +# define HAVE_VPRINTF +# define HAVE_STRERROR +# define VOID_SIGHANDLER +# define HAVE_DIRENT +# define HAVE_STRCASECMP +# endif /* !done386 && __386BSD__ */ + +# if !defined (done386) && (defined (__linux__) || defined (linux)) +# define done386 +# define M_MACHINE "i386" +# define M_OS "Linux" +# define SYSDEP_CFLAGS -DHAVE_GETDTABLESIZE -DHAVE_BCOPY \ + -DHAVE_GETPW_DECLS -DHAVE_GETHOSTNAME +# define REQUIRED_LIBRARIES +# define HAVE_GETGROUPS +# define HAVE_STRERROR +# define VOID_SIGHANDLER +# define HAVE_SYS_SIGLIST +# define HAVE_VPRINTF +# define HAVE_VARARGS_H +# define SEARCH_LIB_NEEDS_SPACE +# if defined (__GNUC__) +# define HAVE_FIXED_INCLUDES +# endif /* __GNUC__ */ +# undef USE_GNU_MALLOC +# undef HAVE_SETLINEBUF +# undef HAVE_GETWD +# endif /* !done386 && __linux__ */ + +/* QNX 4.2 with GCC pt@flard.ocunix.on.ca (Paul Trunley) */ +# if !defined (done386) && defined (qnx) +# define done386 +# define M_MACHINE "i386" +# define M_OS "QNX" +# define SYSDEP_CFLAGS -D_POSIX_SOURCE -O2 -DUSG +# define HAVE_VPRINTF +# define VOID_SIGHANDLER +# define HAVE_GCC +# define HAVE_FIXED_INCLUDES +# define HAVE_STRERROR +# define HAVE_GETGROUPS +# undef USE_GNU_MALLOC +# endif /* QNX 4.2 with GCC */ + +/* Lynx 2.1.0 (Mike Brennen ) */ +# if !defined (done386) && (defined (__Lynx__) || defined (Lynx)) +# define done386 +# define M_MACHINE "i386" +# define M_OS "Lynx" +# define SYSDEP_CFLAGS -DHAVE_GETDTABLESIZE -DHAVE_BCOPY +# define REQUIRED_LIBRARIES -lc_p +# define HAVE_GETGROUPS +# define VOID_SIGHANDLER +# define HAVE_SYS_SIGLIST +# define HAVE_VPRINTF +# define HAVE_VARARGS_H +# if defined (__GNUC__) +# define HAVE_FIXED_INCLUDES +# endif /* __GNUC__ */ +/* Actually, Lynx does have unistd.h, but it defines _POSIX_VERSION, + and doesn't supply a fully compatible job control package. We just + pretend that it doesn't have it. */ +# undef HAVE_UNISTD_H +/* Lynx's wait structure reverses w_Stopval and w_Stopsig - don't use it */ +# undef HAVE_WAIT_H +# undef HAVE_DIRENT_H +# endif /* !done386 && __Lynx__ */ + +/* Assume a generic 386 running Sys V Release 3. */ +# if !defined (done386) +# define done386 +# define M_MACHINE "i386" +# define M_OS "USG" +# define SYSDEP_CFLAGS -DUSGr3 +# define HAVE_VPRINTF +# define VOID_SIGHANDLER + /* Alloca requires either Gcc or cc with libPW.a */ +# if !defined (HAVE_GCC) +# define REQUIRED_LIBRARIES -lPW +# endif /* !HAVE_GCC */ +# undef HAVE_GETWD +# endif /* Generic i386 Box running Sys V release 3. */ +#endif /* All i386 Machines with an `i386' define in cpp. */ + +/* **************************************************************** */ +/* */ +/* Alliant FX/800 */ +/* */ +/* **************************************************************** */ +/* Original descs flushed. FX/2800 machine desc 1.13 bfox@ai.mit.edu. + Do NOT use -O with the stock compilers. If you must optimize, use + -uniproc with fxc, and avoid using scc. */ +#if defined (alliant) +# define M_MACHINE "alliant" +# define M_OS "Concentrix" +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define HAVE_GETGROUPS +# define HAVE_VPRINTF +# define HAVE_RESOURCE +# define VOID_SIGHANDLER +# define HAVE_STRERROR +# define USE_GNU_MALLOC +# define LD_HAS_NO_DASH_L +# define SYSDEP_CFLAGS -DTERMIOS_MISSING -DMKFIFO_MISSING \ + -DHAVE_BSD_PGRP -DRLOGIN_PGRP_BUG -w + /* Actually, Alliant does have unistd.h, but it defines _POSIX_VERSION, + and doesn't supply a fully compatible job control package. We just + pretend that it doesn't have it. */ +# undef HAVE_UNISTD_H +# undef HAVE_ALLOCA +#endif /* alliant */ + +/* **************************************************************** */ +/* */ +/* Motorola Delta series running System V R3V6/7 */ +/* */ +/* **************************************************************** */ +/* Contributed by Robert L. McMillin (rlm@ms_aspen.hac.com). */ + +#if defined (m68k) && defined (sysV68) +# define M_MACHINE "Delta" +# define M_OS "USG" +# define SYSDEP_CFLAGS -DUSGr3 +# define VOID_SIGHANDLER +# define HAVE_VPRINTF +# define REQUIRED_LIBRARIES -lm881 +# undef HAVE_GETWD +# undef HAVE_RESOURCE +# undef HAVE_DUP2 +# undef HAVE_ALLOCA +#endif /* Delta series */ + +/* **************************************************************** */ +/* */ +/* Motorola m68k system running Linux */ +/* */ +/* **************************************************************** */ + +#if defined (mc68020) && (defined (__linux__) || defined (linux)) +# define M_MACHINE "m68k" +# define M_OS "Linux" +# define SYSDEP_CFLAGS -DUSG -DUSGr3 -DHAVE_GETDTABLESIZE -DHAVE_BCOPY \ + -DHAVE_GETPW_DECLS -DHAVE_GETHOSTNAME +# define REQUIRED_LIBRARIES +# define HAVE_GETGROUPS +# define HAVE_STRERROR +# define VOID_SIGHANDLER +# define HAVE_SYS_SIGLIST +# define HAVE_VPRINTF +# define HAVE_VARARGS_H +# define SEARCH_LIB_NEEDS_SPACE +# if defined (__GNUC__) +# define HAVE_FIXED_INCLUDES +# endif /* __GNUC__ */ +# undef USE_GNU_MALLOC +# undef HAVE_SETLINEBUF +# undef HAVE_GETWD +# endif /* m68k && __linux__ */ + +/* **************************************************************** */ +/* */ +/* Gould 9000 - UTX/32 R2.1A */ +/* */ +/* **************************************************************** */ +#if defined (gould) /* Maybe should be GOULD_PN ? */ +# define M_MACHINE "gould" +# define M_OS "Bsd" +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define HAVE_GETGROUPS +#endif /* gould */ + +/* ************************ */ +/* */ +/* NeXT */ +/* */ +/* ************************ */ +#if defined (NeXT) && !defined (M_MACHINE) +# define M_MACHINE "NeXT" +# define M_OS "NeXTstep" +# define HAVE_VPRINTF +# define HAVE_SYS_SIGLIST +# define HAVE_GETGROUPS +# define HAVE_STRERROR +# define VOID_SIGHANDLER +# if !defined (HAVE_RESOURCE) +# define HAVE_RESOURCE +# endif +# define HAVE_STRCASECMP +# define GCC_STANDARD +# undef HAVE_GETWD +# undef HAVE_GETCWD +# undef HAVE_DIRENT_H +# define SYSDEP_CFLAGS -DMKFIFO_MISSING -DRLOGIN_PGRP_BUG +# undef USE_GNU_MALLOC +#endif /* NeXT */ + +/* ********************** */ +/* */ +/* m68k NetBSD */ +/* */ +/* ********************** */ +#if defined (m68k) && defined (__NetBSD__) +# include +# define M_MACHINE MACHINE +# define M_OS "NetBSD" +/* os/netbsd.h */ +# define SYSDEP_CFLAGS -DOPENDIR_NOT_ROBUST -DINT_GROUPS_ARRAY \ + -DRLIMTYPE=quad_t +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define HAVE_GETGROUPS +# define HAVE_VPRINTF +# define HAVE_STRERROR +# define VOID_SIGHANDLER +# define HAVE_DIRENT +# define HAVE_STRCASECMP +#endif /* m68k && __NetBSD__ */ + +/* ************************ */ +/* */ +/* hp9000 4.4 BSD */ +/* */ +/* ************************ */ +#if defined (hp9000) && defined (__BSD_4_4__) +# define M_MACHINE "hp9000" +# define M_OS "BSD_4_4" +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define HAVE_GETGROUPS +# define HAVE_STRERROR +# define HAVE_VPRINTF +# define VOID_SIGHANDLER +# define HAVE_STRCASECMP +# define SYSDEP_CFLAGS -DHAVE_GETDTABLESIZE -DHAVE_BCOPY -DHAVE_RESOURCE +# undef HAVE_ALLOCA +#endif /* hp9000 && __BSD_4_4__ */ + +/* ************************ */ +/* */ +/* hp9000 4.3 BSD */ +/* */ +/* ************************ */ +#if defined (hp9000) && !defined (hpux) && !defined (M_MACHINE) +# define M_MACHINE "hp9000" +# define M_OS "Bsd" +# undef HAVE_ALLOCA +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define HAVE_GETGROUPS +# define USE_VFPRINTF_EMULATION +#endif /* hp9000 && !hpux */ + +/* ************************ */ +/* */ +/* hpux */ +/* */ +/* ************************ */ +#if defined (hpux) + +/* HPUX comes in several different flavors, from pre-release 6.2 (basically + straight USG), to Posix compliant 9.0. */ + + /* HP machines come in several processor types. + They are distinguished here. */ +# if defined (hp9000s200) && !defined (hp9000s300) +# define M_MACHINE "hp9000s200" +# endif /* hp9000s200 */ +# if defined (hp9000s300) && !defined (M_MACHINE) +# define M_MACHINE "hp9000s300" +# endif /* hp9000s300 */ +# if defined (hp9000s500) && !defined (M_MACHINE) +# define M_MACHINE "hp9000s500" +# endif /* hp9000s500 */ +# if defined (hp9000s700) && !defined (M_MACHINE) +# define M_MACHINE "hp9000s700" +# endif /* hp9000s700 */ +# if defined (hp9000s800) && !defined (M_MACHINE) +# define M_MACHINE "hp9000s800" +# endif /* hp9000s800 */ +# if defined (hppa) && !defined (M_MACHINE) +# define M_MACHINE "hppa" +# endif /* hppa */ + +/* Define the OS as the particular type that we are using. */ +/* This is for HP-UX systems earlier than HP-UX 6.2 -- no job control. */ +# if defined (HPUX_USG) +# define M_OS "USG" +# define HPUX_CFLAGS -Dhpux +# define REQUIRED_LIBRARIES -lPW -lBSD +# undef HAVE_WAIT_H +# define HPUX_EXTRA +# else /* !HPUX_USG */ + +/* All of the other operating systems need HPUX to be defined. */ +# define HPUX_EXTRA -DHPUX -Dhpux -DHAVE_GETHOSTNAME -DUSG + + /* HPUX 6.2 .. 6.5 require -lBSD for getwd (), and -lPW for alloca (). */ +# if defined (HPUX_6) +# define M_OS "hpux_6" +# define REQUIRED_LIBRARIES -lPW -lBSD +# undef HAVE_ALLOCA +# undef HAVE_WAIT_H +# endif /* HPUX_6 */ + + /* On HP-UX 7.x, we do not link with -lBSD, so we don't have getwd (). */ +# if defined (HPUX_7) +# define M_OS "hpux_7" +# define REQUIRED_LIBRARIES -lPW +# define HPUX_CFLAGS -DHAVE_SOCKETS +# undef HAVE_GETWD +# undef USE_GNU_MALLOC +# endif /* HPUX_7 */ + + /* HP-UX 8.x systems do not have a working alloca () on all platforms. + This can cause us problems, especially when globbing. HP has the + same YP bug as Sun, so we #undef USE_GNU_MALLOC. */ +# if defined (HPUX_8) +# define M_OS "hpux_8" +# if !defined (__GNUC__) +# undef HAVE_ALLOCA +# define HPUX_ANSI +O3 -Aa -D_HPUX_SOURCE +# else +# define HPUX_ANSI +# endif +# undef HAVE_GETWD +# undef USE_GNU_MALLOC +# define HPUX_CFLAGS -DSBRK_DECLARED -DHAVE_SOCKETS HPUX_ANSI +# endif /* HPUX_8 */ + + /* HP-UX 9.0 reportedly fixes the alloca problems present in the 8.0 + release. If so, -lPW is required to include it. */ +# if defined (HPUX_9) +# define M_OS "hpux_9" +# if !defined (__GNUC__) +# undef HAVE_ALLOCA +# define HPUX_ANSI +O3 -Ae +# else +# define HPUX_ANSI +# endif +# undef HAVE_GETWD +# undef USE_GNU_MALLOC +# undef HAVE_RESOURCE +# define HPUX_CFLAGS -DSBRK_DECLARED -DHAVE_SOCKETS -DHAVE_GETHOSTNAME HPUX_ANSI +# endif /* HPUX_9 */ + +# endif /* !HPUX_USG */ + + /* All of the HPUX systems that we have tested have the following. */ +# define HAVE_DIRENT +# define HAVE_VPRINTF +# define VOID_SIGHANDLER +# define HAVE_GETGROUPS +# define HAVE_STRERROR +# define USE_TERMCAP_EMULATION +# define SEARCH_LIB_NEEDS_SPACE + +# if defined (HPUX_CFLAGS) +# define SYSDEP_CFLAGS HPUX_CFLAGS HPUX_EXTRA +# else /* !HPUX_CFLAGS */ +# define SYSDEP_CFLAGS HPUX_EXTRA +# endif /* !HPUX_CFLAGS */ + +#endif /* hpux */ + +/* ************************ */ +/* */ +/* MIPS OSF/1 */ +/* */ +/* ************************ */ +# if defined (MIPSEL) && defined (__OSF1__) +# define M_MACHINE "mips" +# define M_OS "OSF1" +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define HAVE_VPRINTF +# define HAVE_STRERROR +# define HAVE_GETGROUPS +# define VOID_SIGHANDLER +# define HAVE_BCOPY +# define USE_TERMCAP_EMULATION +# define SYSDEP_CFLAGS -D_BSD +# define REQUIRED_LIBRARIES -lbsd +# endif /* MIPSEL && __OSF1__ */ + +/* ************************ */ +/* */ +/* HP OSF/1 */ +/* */ +/* ************************ */ +#if defined (__hp_osf) +# define M_MACHINE "HPOSF1" +# define M_OS "OSF1" +# define SYSDEP_CFLAGS -q no_sl_enable +# define SYSDEP_LDFLAGS -q lang_level:classic +# define REQUIRED_LIBRARIES -lPW +# define HAVE_SETLINEBUF +# define HAVE_VPRINTF +# define VOID_SIGHANDLER +# define HAVE_GETGROUPS +# define HAVE_STRERROR +# undef HAVE_ALLOCA +#endif /* __hp_osf */ + +/* ************************ */ +/* */ +/* KSR1 OSF/1 */ +/* */ +/* ************************ */ +#if defined (__ksr1__) +# define M_MACHINE "KSR1" +# define M_OS "OSF1" +# define HAVE_SETLINEBUF +# define HAVE_VPRINTF +# define VOID_SIGHANDLER +# define HAVE_GETGROUPS +# define HAVE_STRERROR +# define SYSDEP_CFLAGS -DHAVE_GETDTABLESIZE -DHAVE_BCOPY -DHAVE_UID_T +# undef HAVE_ALLOCA +# undef USE_GNU_MALLOC +#endif /* ksr1 */ + +/* ************************ */ +/* */ +/* Intel Paragon - OSF/1 */ +/* */ +/* ************************ */ +#if defined (__i860) && defined (__PARAGON__) +# define M_MACHINE "Paragon" +# define M_OS "OSF1" +# define HAVE_GETGROUPS +# define HAVE_SETLINEBUF +# define HAVE_VPRINTF +# define VOID_SIGHANDLER +# define HAVE_STRERROR +# define HAVE_SYS_SIGLIST +#endif /* __i860 && __PARAGON__ */ + +/* ************************ */ +/* */ +/* IBM AIX/ESA (OSF/1) */ +/* */ +/* ************************ */ +#if defined(AIXESA) || (defined(__ibmesa) && defined(_AIX)) +# define M_MACHINE "IBMESA" +# define M_OS "OSF1" +# define HAVE_GETGROUPS +# define HAVE_SETLINEBUF +# define HAVE_VPRINTF +# define VOID_SIGHANDLER +# define HAVE_STRERROR +# define HAVE_SYS_SIGLIST +# define HAVE_ALLOCA_H /* hack for AIX/ESA, which has malloc.h */ +# undef USE_GNU_MALLOC +#endif /* AIXESA || (__ibmesa && _AIX) */ + +/* ************************ */ +/* */ +/* Intel i860 -- SVR4 */ +/* */ +/* ************************ */ +#if defined (__i860) && defined (USGr4) && !defined (M_MACHINE) +# define M_MACHINE "i860" +# define M_OS "USG" +# define HAVE_DIRENT +# define HAVE_SYS_SIGLIST +# define HAVE_VPRINTF +# define VOID_SIGHANDLER +# define HAVE_GETGROUPS +# if !defined (HAVE_GCC) && !defined (HAVE_ALLOCA_H) +# undef HAVE_ALLOCA +# endif /* !HAVE_GCC && !HAVE_ALLOCA_H */ +# if defined (USGr4_2) +# define SYSDEP_CFLAGS -DUSGr4 -DUSGr4_2 +# else +# define SYSDEP_CFLAGS -DUSGr4 +# endif /* ! USGr4_2 */ +# undef HAVE_GETWD +#endif /* __i860 && USGr4 */ + +/* ************************ */ +/* */ +/* Xenix286 */ +/* */ +/* ************************ */ +#if defined (Xenix286) +# define M_MACHINE "i286" +# define M_OS "Xenix" + +# define XENIX_CFLAGS -DUSG -DUSGr3 -DMEMMOVE_MISSING + +# if defined (XENIX_22) +# define XENIX_EXTRA -DSETVBUF_REVERSED +# define REQUIRED_LIBRARIES -lx +# else /* !XENIX_22 */ +# define HAVE_DIRENT +# if defined (XENIX_23) +# define XENIX_EXTRA -DLD_HAS_NO_DASH_L +# define REQUIRED_LIBRARIES -ldir +# else /* !XENIX_23 */ +# define XENIX_EXTRA -xenix +# define SYSDEP_LDFLAGS -xenix +# define REQUIRED_LIBRARIES -ldir -l2.3 +# endif /* !XENIX_23 */ +# endif /* !XENIX_22 */ + +# define SYSDEP_CFLAGS XENIX_CFLAGS XENIX_EXTRA +# undef HAVE_ALLOCA +# undef HAVE_GETWD +# undef HAVE_RESOURCE +#endif /* Xenix286 */ + +/* ************************ */ +/* */ +/* convex */ +/* */ +/* ************************ */ +#if defined (convex) +# define M_MACHINE "convex" +# define M_OS "Bsd" +# undef HAVE_ALLOCA +# define HAVE_SETLINEBUF +# define HAVE_SYS_SIGLIST +# define HAVE_GETGROUPS +#endif /* convex */ + +/* ************************ */ +/* */ +/* AIX/RT */ +/* */ +/* ************************ */ +#if defined (aix) && !defined (aixpc) +# define M_MACHINE "AIXRT" +# define M_OS "USG" +# define HAVE_DIRENT +# define HAVE_VPRINTF +# define HAVE_SYS_SIGLIST +# define VOID_SIGHANDLER +# define HAVE_GETGROUPS +# define USE_TERMCAP_EMULATION +# if !defined (HAVE_GCC) +# undef MACHINE_CFLAGS +# define MACHINE_CFLAGS -a +# endif /* !HAVE_GCC */ +# define SYSDEP_CFLAGS MACHINE_CFLAGS -DNLS -DUSGr3 -DHAVE_BCOPY +# undef USE_GNU_MALLOC +# undef HAVE_ALLOCA +# undef HAVE_RESOURCE +#endif /* aix && !aixpc */ + +/* **************************************** */ +/* */ +/* IBM RISC 6000 */ +/* */ +/* **************************************** */ +#if defined (RISC6000) || defined (_IBMR2) +# define M_MACHINE "RISC6000" +# define M_OS "AIX" +# define HAVE_DIRENT +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define HAVE_VPRINTF +# define VOID_SIGHANDLER +# define USE_TERMCAP_EMULATION +# define HAVE_GETGROUPS +# define SYSDEP_CFLAGS -DNLS -DUSGr3 -DHAVE_BCOPY +# undef HAVE_ALLOCA +# undef HAVE_GETWD +# undef USE_GNU_MALLOC +#endif /* RISC6000 */ + +/* **************************************** */ +/* */ +/* u370 IBM AIX/370 */ +/* */ +/* **************************************** */ +#if defined (u370) +# if defined (_AIX370) +# define M_MACHINE "AIX370" +# define M_OS "Bsd" +# define REQUIRED_LIBRARIES -lbsd +# define HAVE_SETLINEBUF +# define HAVE_VPRINTF +# define SYSDEP_CFLAGS -D_BSD +# define HAVE_GETGROUPS +# define USE_TERMCAP_EMULATION +# undef USE_GNU_MALLOC +# endif /* _AIX370 */ +# if defined (USGr4) /* System V Release 4 on 370 series architecture. */ +# define M_MACHINE "uxp" +# define M_OS "USG" +# define HAVE_DIRENT +# define HAVE_SYS_SIGLIST +# define HAVE_VPRINTF +# define USE_GNU_MALLOC +# define VOID_SIGHANDLER +# if !defined (HAVE_GCC) +# undef HAVE_ALLOCA +# define EXTRA_LIB_SEARCH_PATH /usr/ucblib +# define REQUIRED_LIBRARIES -lc -lucb +# endif /* !HAVE_GCC */ +# define HAVE_GETGROUPS +# define HAVE_RESOURCE +# define SYSDEP_CFLAGS -DUSGr4 -DSBRK_DECLARED +# endif /* USGr4 */ +#endif /* u370 */ + +/* ************************ */ +/* */ +/* ATT 3B */ +/* */ +/* ************************ */ +#if defined (att3b) || defined (u3b2) +# if defined (att3b) +# define M_MACHINE "att3b" +# define HAVE_SYS_SIGLIST +# else /* !att3b */ +# define M_MACHINE "u3b2" +# endif /* !att3b */ +# define M_OS "USG" +# undef HAVE_GETWD +# define HAVE_VPRINTF +# define VOID_SIGHANDLER + /* For an AT&T Unix before V.3 take out the -DUSGr3 and the HAVE_DIRENT. */ +# define SYSDEP_CFLAGS -DUSGr3 +# define HAVE_DIRENT + /* Alloca requires either Gcc or cc with libPW.a. */ +# if !defined (HAVE_GCC) +# define REQUIRED_LIBRARIES -lPW +# endif /* !HAVE_GCC */ +#endif /* att3b */ + +/* ************************ */ +/* */ +/* ATT 386 */ +/* */ +/* ************************ */ +#if defined (att386) +# define M_MACHINE "att386" +# define M_OS "USG" +# undef HAVE_GETWD + /* Alloca requires either Gcc or cc with libPW.a. */ +# if !defined (HAVE_GCC) +# define REQUIRED_LIBRARIES -lPW +# endif /* HAVE_GCC */ +# define HAVE_SYS_SIGLIST +# define HAVE_VPRINTF +# define VOID_SIGHANDLER + /* For an AT&T Unix before V.3 take out the -DUSGr3 and the HAVE_DIRENT. */ +# define SYSDEP_CFLAGS -DUSGr3 +# define HAVE_DIRENT +#endif /* att386 */ + +/* ************************ */ +/* */ +/* ATT UNIX PC */ +/* */ +/* ************************ */ +#if defined (unixpc) +# define M_MACHINE "unixpc" +# define M_OS "USG" +# define HAVE_VPRINTF +# define HAVE_DIRENT +# if defined (HAVE_GCC) +# define REQUIRED_LIBRARIES -ldirent -shlib +# else /* !HAVE_GCC */ +# define REQUIRED_LIBRARIES -ldirent +# endif /* !HAVE_GCC */ +# undef HAVE_GETWD +# undef HAVE_DUP2 +# undef VOID_SIGHANDLER +# undef HAVE_WAIT_H +#endif /* unixpc */ + +/* ************************ */ +/* */ +/* Encore */ +/* */ +/* ************************ */ +#if defined (MULTIMAX) +# if defined (n16) +# define M_MACHINE "Multimax32k" +# else +# define M_MACHINE "Multimax" +# endif /* n16 */ +# if defined (UMAXV) +# define M_OS "USG" +# define REQUIRED_LIBRARIES -lPW +# define SYSDEP_CFLAGS -DUSGr3 +# define HAVE_DIRENT +# define HAVE_VPRINTF +# define USE_TERMCAP_EMULATION +# define VOID_SIGHANDLER +# else +# if defined (CMU) +# define M_OS "Mach" +# else +# define M_OS "Bsd" +# endif /* CMU */ +# define HAVE_SYS_SIGLIST +# define HAVE_STRERROR +# define HAVE_SETLINEBUF +# endif /* UMAXV */ +# define HAVE_GETGROUPS +#endif /* MULTIMAX */ + +/* ******************************************** */ +/* */ +/* Encore Series 91 (88K BCS w Job Control) */ +/* */ +/* ******************************************** */ +#if defined (__m88k) && defined (__UMAXV__) +# define M_MACHINE "Gemini" +# define M_OS "USG" +# define REQUIRED_LIBRARIES -lPW +# define USE_TERMCAP_EMULATION +# define HAVE_DIRENT +# define HAVE_GETGROUPS +# define HAVE_VPRINTF +# define VOID_SIGHANDLER +# define SYSDEP_CFLAGS -q ext=pcc -D_POSIX_JOB_CONTROL -D_POSIX_VERSION \ + -Dmalloc=_malloc -Dfree=_free -Drealloc=_realloc +#endif /* m88k && __UMAXV__ */ + +/* ******************************************** */ +/* */ +/* System V Release 4 on the ICL DRS6000 */ +/* */ +/* ******************************************** */ +#if defined (drs6000) +# define M_MACHINE "drs6000" +# define M_OS "USG" +# define SYSDEP_CFLAGS -Xa -DUSGr4 +# define SEARCH_LIB_NEEDS_SPACE +# define HAVE_DIRENT +# define HAVE_SYS_SIGLIST +# define HAVE_VPRINTF +# define HAVE_GETGROUPS +# define HAVE_STRERROR +# define VOID_SIGHANDLER +# define USE_GNU_TERMCAP +# if !defined (__GNUC__) +# undef HAVE_ALLOCA +# endif +# undef HAVE_ALLOCA_H +# undef USE_GNU_MALLOC +#endif /* drs6000 */ + +/* ******************************************** */ +/* */ +/* System V Release 4 on the Sparc (generic) */ +/* */ +/* ******************************************** */ +#if defined (sparc) && defined (__svr4__) && !defined (M_MACHINE) +# define M_MACHINE "sparc" +# define M_OS "SVR4" +# define SYSDEP_CFLAGS -DUSG -DUSGr4 -DHAVE_UID_T +# define HAVE_DIRENT +# define HAVE_VPRINTF +# define HAVE_GETGROUPS +# define HAVE_STRERROR +# define VOID_SIGHANDLER +# define USE_GNU_TERMCAP +# if !defined (__GNUC__) +# undef HAVE_ALLOCA +# endif +# undef HAVE_BCOPY +# undef HAVE_GETWD +# undef USE_GNU_MALLOC +#endif /* sparc && __svr4__ */ + +/* ******************* */ +/* */ +/* Commodore Amiga */ +/* */ +/* ******************* */ +#if defined (amiga) && defined (__NetBSD__) +# define M_MACHINE "amiga" +# define M_OS "NetBSD" +# define SYSDEP_CFLAGS -DOPENDIR_NOT_ROBUST -DINT_GROUPS_ARRAY \ + -DRLIMTYPE=quad_t +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define HAVE_GETGROUPS +# define HAVE_VPRINTF +# define HAVE_STRERROR +# define VOID_SIGHANDLER +# define HAVE_DIRENT +# define HAVE_STRCASECMP +#endif /* amiga && __NetBSD__ */ + +#if defined (amiga) && !defined (M_MACHINE) +# define M_MACHINE "amiga" +# define M_OS "USG" +# define SYSDEP_CFLAGS -DUSGr4 +# if !defined (HAVE_GCC) +# define EXTRA_LIB_SEARCH_PATH /usr/ucblib +# define REQUIRED_LIBRARIES -lc -lucb +# endif /* !HAVE_GCC */ +# define HAVE_DIRENT +# define HAVE_SYS_SIGLIST +# define HAVE_VPRINTF +# define VOID_SIGHANDLER +# define HAVE_GETGROUPS +# define HAVE_STRERROR +# undef HAVE_GETWD +# undef USE_GNU_MALLOC +#endif /* System V Release 4 on amiga */ + +/* ************************ */ +/* */ +/* clipper */ +/* */ +/* ************************ */ +/* This is for the Orion 1/05 (A BSD 4.2 box based on a Clipper processor) */ +#if defined (clipper) && !defined (M_MACHINE) +# define M_MACHINE "clipper" +# define M_OS "Bsd" +# define HAVE_SETLINEBUF +# define HAVE_GETGROUPS +#endif /* clipper */ + +/* ******************************** */ +/* */ +/* Integrated Solutions 68020? */ +/* */ +/* ******************************** */ +#if defined (is68k) +# define M_MACHINE "is68k" +# define M_OS "Bsd" +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define HAVE_GETGROUPS +# define USE_VFPRINTF_EMULATION +# undef HAVE_ALLOCA +#endif /* is68k */ + +/* ******************************** */ +/* */ +/* Omron Luna/Mach 2.5 */ +/* */ +/* ******************************** */ +#if defined (luna88k) +# define M_MACHINE "Luna88k" +# define M_OS "Bsd" +# define HAVE_SYS_SIGLIST +# define USE_GNU_MALLOC +# define HAVE_SETLINEBUF +# define HAVE_VPRINTF +# define HAVE_GETGROUPS +# define HAVE_VPRINTF +#endif /* luna88k */ + +/* ************************ */ +/* */ +/* BBN Butterfly GP1000 */ +/* Mach 1000 v2.5 */ +/* */ +/* ************************ */ +#if defined (butterfly) && defined (BFLY1) +#define M_MACHINE "BBN Butterfly" +#define M_OS "Mach 1000" +#define HAVE_SETLINEBUF +#define HAVE_SYS_SIGLIST +#define HAVE_GETGROUPS +#define HAVE_VPRINTF +# ifdef BUILDING_MAKEFILE +MAKE = make +# endif /* BUILDING_MAKEFILE */ +#endif /* butterfly */ + +/* **************************************** */ +/* */ +/* Apollo/SR10.2/BSD4.3 */ +/* */ +/* **************************************** */ +/* This is for the Apollo DN3500 running SR10.2 BSD4.3 */ +#if defined (apollo) +# define M_MACHINE "apollo" +# define M_OS "Bsd" +# define SYSDEP_CFLAGS -D_POSIX_VERSION -D_INCLUDE_BSD_SOURCE \ + -D_INCLUDE_POSIX_SOURCE -DTERMIOS_MISSING \ + -DHAVE_BSD_PGRP -Dpid_t=int +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define HAVE_GETGROUPS +#endif /* apollo */ + +/* ************************ */ +/* */ +/* DG AViiON */ +/* */ +/* ************************ */ +/* This is for the DG AViiON box (runs DG/UX with both AT&T & BSD features.) */ +/* DG/UX comes standard with Gcc. */ +#if defined (__DGUX__) || defined (DGUX) +# define M_OS "DGUX" +# if !defined (_M88KBCS_TARGET) +# define M_MACHINE "AViiON" +# define REQUIRED_LIBRARIES -ldgc +# else /* _M88KBCS_TARGET */ +# define M_MACHINE "m88kBCS_AV" +# undef MACHINE_CFLAGS +# define MACHINE_CFLAGS -D_M88K_SOURCE +# undef HAVE_RESOURCE +# endif /* _M88KBCS_TARGET */ +# define SYSDEP_CFLAGS MACHINE_CFLAGS -D_DGUX_SOURCE -DPGRP_PIPE -DUSG +# define HAVE_GCC +# define HAVE_FIXED_INCLUDES +# define HAVE_STRERROR +# define HAVE_GETGROUPS +# define VOID_SIGHANDLER +# undef HAVE_GETWD +# undef USE_GNU_MALLOC + +/* If you want to build bash for M88K BCS compliance on a DG/UX 5.4 + or above system, do the following: + - If you have built in this directory before run "make clean" to + endure the Bash directory is clean. + - Run "eval `sde-target m88kbcs`" to set the software development + environment to build BCS objects. + - Run "make". + - Do "eval `sde-target default`" to reset the SDE. */ +#endif /* __DGUX__ */ + +/* ************************ */ +/* */ +/* Harris Night Hawk */ +/* */ +/* ************************ */ +/* This is for the Harris Night Hawk family. */ +#if defined (_CX_UX) +# if defined (_M88K) +# define M_MACHINE "nh4000" +# else /* !_M88K */ +# if defined (hcx) +# define M_MACHINE "nh2000" +# else /* !hcx */ +# if defined (gcx) +# define M_MACHINE "nh3000" +# endif /* gcx */ +# endif /* !hcx */ +# endif /* !_M88K */ +# define M_OS "USG" +# define SYSDEP_CFLAGS -g -Xa -v -Dgetwd=bash_getwd -D_POSIX_SOURCE \ + -D_POSIX_JOB_CONTROL +# define USE_TERMCAP_EMULATION +# define HAVE_VPRINTF +# define HAVE_GETGROUPS +# define VOID_SIGHANDLER +# undef USE_GNU_MALLOC +# undef HAVE_GETWD +#endif /* _CX_UX */ + +/* **************************************** */ +/* */ +/* Tektronix */ +/* */ +/* **************************************** */ +/* These are unproven as yet. */ +#if defined (Tek4132) +# define M_MACHINE "Tek4132" +# define M_OS "Bsd" +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define HAVE_GETGROUPS +#endif /* Tek4132 */ + +#if defined (Tek4300) +# define M_MACHINE "Tek4300" +# define M_OS "Bsd" +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define HAVE_GETGROUPS +#endif /* Tek4300 */ + +/* ************************ */ +/* */ +/* Tektronix XD88 */ +/* */ +/* ************************ */ +#if defined (m88k) && defined (XD88) +# define M_MACHINE "XD88" +# define M_OS "USG" +# define HAVE_DIRENT +# define HAVE_VPRINTF +# define HAVE_GETCWD +# define VOID_SIGHANDLER +# define HAVE_GETGROUPS +# undef HAVE_GETWD +# undef HAVE_ALLOCA +#endif /* m88k && XD88 */ + +/* ************************ */ +/* */ +/* Motorola M88100 */ +/* */ +/* ************************ */ +#if defined (m88k) && (defined (M88100) || defined (USGr4)) +# define M_MACHINE "M88100" +# define M_OS "USG" +# if defined (USGr4) +# define SYSDEP_CFLAGS -DUSGr4 -D_POSIX_JOB_CONTROL +# else +# define SYSDEP_CFLAGS -D_POSIX_JOB_CONTROL +# endif +# define HAVE_DIRENT +# define HAVE_VPRINTF +# define VOID_SIGHANDLER +# define HAVE_GETGROUPS +# undef HAVE_GETWD +# if !defined (USGr4) +# undef HAVE_GETCWD +# endif +# undef HAVE_ALLOCA +#endif /* m88k && M88100 */ + +/* ************************ */ +/* */ +/* Sequent Balances */ +/* (Dynix 3.x) */ +/* ************************ */ +#if defined (sequent) && !defined (M_MACHINE) +# define M_MACHINE "Sequent" +# define M_OS "Bsd" +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define HAVE_GETGROUPS +# define LD_HAS_NO_DASH_L +# undef HAVE_DUP2 +#endif /* sequent */ + +/* ****************************************** */ +/* */ +/* NCR Tower 32, System V Release 3 */ +/* */ +/* ****************************************** */ +#if defined (tower32) +# define M_MACHINE "tower32" +# define M_OS "USG" +# if !defined (HAVE_GCC) +# define REQUIRED_LIBRARIES -lPW + /* Disable stack/frame-pointer optimization, incompatible with alloca */ +# undef MACHINE_CFLAGS +# define MACHINE_CFLAGS -W2,-aat +# endif /* !HAVE_GCC */ +# define SYSDEP_CFLAGS -DUSGr3 MACHINE_CFLAGS +# define HAVE_VPRINTF +# define USE_TERMCAP_EMULATION +# define VOID_SIGHANDLER +# undef HAVE_GETWD +#endif /* tower32 */ + +/* ************************ */ +/* */ +/* Concurrent */ +/* */ +/* ************************ */ +#if defined (concurrent) +# define M_MACHINE "Concurrent" +# if defined (USE_BSD_UNIVERSE) + /* Use the BSD universe (`universe ucb') */ +# define M_OS "Bsd" +# define HAVE_SYS_SIGLIST +# define HAVE_SETLINEBUF +# define HAVE_GETGROUPS +# else /* !USE_BSD_UNIVERSE */ + /* Concurrent 7000 with RTU 6.1A using the ATT universe (`universe att') */ +# define M_OS "USG" +# define SYSDEP_CFLAGS -DHAVE_BCOPY -DHAVE_UID_T -DHAVE_GETDTABLESIZE -Dmc7000 +# define REQUIRED_LIBRARIES -ljobs +# define HAVE_VPRINTF +# define HAVE_GETGROUPS +# define HAVE_DUP2 +# define HAVE_DIRENT +# define HAVE_SYS_SIGLIST +# endif /* !USE_BSD_UNIVERSE */ +#endif /* concurrent */ + +/* **************************************************************** */ +/* */ +/* Honeywell Bull X20 (lele@idea.sublink.org) */ +/* */ +/* **************************************************************** */ +#if defined (hbullx20) +# define M_MACHINE "Honeywell" +# define M_OS "USG" +# define SYSDEP_CFLAGS -DUSG + /* Bull x20 needs -lposix for struct dirent. */ +# define REQUIRED_LIBRARIES -lPW -lposix +# define HAVE_DIRENT +# define HAVE_VPRINTF +# define VOID_SIGHANDLER +# define USE_TERMCAP_EMULATION +# undef HAVE_GETWD +#endif /* hbullx20 */ + +/* **************************************************************** */ +/* */ +/* Bull DPX2 (F.Pierresteguy@frcl.bull.fr) */ +/* */ +/* **************************************************************** */ +#if defined (DPX2) +# define M_MACHINE "DPX2" +# define M_OS "USG" +# define SYSDEP_CFLAGS -DUSG -DUSGr3 -DHAVE_BCOPY -DHAVE_UID_T -D_POSIX_JOB_CONTROL +/* # define REQUIRED_LIBRARIES -lPW -lposix */ +# define HAVE_DIRENT +# define VOID_SIGHANDLER +# define HAVE_POSIX_SIGNALS +# define HAVE_VPRINTF +# define HAVE_SETVBUF +# define HAVE_STRERROR +# define HAVE_GETGROUPS +# define HAVE_GETDTABLESIZE +# define USE_TERMCAP_EMULATION +#endif /* DPX2 */ + +/* ************************ */ +/* */ +/* CRAY */ +/* */ +/* ************************ */ +#if defined (cray) +# include +# if defined (Cray1) || defined (Cray2) +# define M_MACHINE "Cray" +# define CRAY_STACK +# endif +# if defined (CrayXMP) && !defined (M_MACHINE) +# define M_MACHINE "CrayXMP" +# define CRAY_STACK -DCRAY_STACKSEG_END=getb67 +# endif +# if defined (CrayYMP) && !defined (M_MACHINE) +# define M_MACHINE "CrayYMP" +# if RELEASE_LEVEL >= 7000 +# define CRAY_STACK -DCRAY_STACKSEG_END=_getb67 +# else +# define CRAY_STACK -DCRAY_STACKSEG_END=getb67 +# endif /* RELEASE_LEVEL < 7000 */ +# endif +# if !defined (M_MACHINE) +# define M_MACHINE "Cray" +# define CRAY_STACK +# endif +# define M_OS "Unicos" +# define SYSDEP_CFLAGS -DUSG -DPGRP_PIPE -DOPENDIR_NOT_ROBUST \ + -DHAVE_BCOPY CRAY_STACK +# define HAVE_VPRINTF +# define HAVE_MULTIPLE_GROUPS +# define VOID_SIGHANDLER +# define USE_TERMCAP_EMULATION +# undef HAVE_ALLOCA +# undef HAVE_RESOURCE +# undef USE_GNU_MALLOC +#endif /* cray */ + +/* ************************ */ +/* */ +/* MagicStation */ +/* */ +/* ************************ */ +#if defined (MagicStation) +# define M_MACHINE "MagicStation" +# define M_OS "USG" +# define SYSDEP_CFLAGS -DUSGr4 +# define HAVE_DIRENT +# define HAVE_GETGROUPS +# define HAVE_STRERROR +# define VOID_SIGHANDLER +# undef HAVE_ALLOCA +# undef HAVE_GETWD +#endif /* MagicStation */ + +/* ************************ */ +/* */ +/* Plexus */ +/* */ +/* ************************ */ +#if defined (plexus) +# define M_MACHINE "plexus" +# define M_OS "USG" +# define REQUIRED_LIBRARIES -lndir +# define USE_TERMCAP_EMULATION +# undef HAVE_DUP2 +# undef HAVE_GETWD +# define HAVE_VPRINTF +# undef HAVE_ALLOCA /* -lPW doesn't work w/bash-cc? */ +#endif /* plexus */ + +/* ************************ */ +/* */ +/* Siemens MX500 */ +/* (SINIX 5.2x) */ +/* ************************ */ +#if defined (sinix) +#define M_MACHINE "Siemens MX500" +#define M_OS "SINIX V5.2x" +#define USG +#define HAVE_GETCWD +#define VOID_SIGHANDLER +#define HAVE_STRERROR +#define HAVE_GETGROUPS +#define HAVE_VPRINTF +#define HAVE_POSIX_SIGNALS +#define HAVE_RESOURCE +#define USE_GNU_MALLOC +#define SYSDEP_CFLAGS -DUSGr3 -DUSG +#define REQUIRED_LIBRARIES syscalls.o +#undef HAVE_ALLOCA +#undef HAVE_GETWD +#endif /* sinix */ + +/* ************************ */ +/* */ +/* Symmetric 375 (4.2 BSD) */ +/* */ +/* ************************ */ +#if defined (scs) && !defined (M_MACHINE) +# define M_MACHINE "Symmetric_375" +# define M_OS "Bsd" +# define HAVE_SYS_SIGLIST +# define HAVE_GETGROUPS +# define HAVE_SETLINEBUF +# define USE_VFPRINTF_EMULATION +# define USE_GNU_MALLOC +# undef HAVE_STRCHR +#endif /* scs */ + +/* ************************ */ +/* */ +/* Tandem running SVR3 */ +/* */ +/* ************************ */ +#if defined (tandem) && !defined (M_MACHINE) +# define M_MACHINE "tandem" +# define M_OS "USG" +# define SYSDEP_CFLAGS -DUSGr3 +# define HAVE_VPRINTF +# define VOID_SIGHANDLER + /* Alloca requires either Gcc or cc with libPW.a */ +# if !defined (HAVE_GCC) +# define REQUIRED_LIBRARIES -lPW +# endif /* !HAVE_GCC */ +# undef HAVE_GETWD +#endif /* Tandem running SVR3 */ + +/* ****************** */ +/* */ +/* Amdahl UTS */ +/* */ +/* ****************** */ + +#if defined (UTS) +# define M_MACHINE "uts" +# define M_OS "systemV" +# define SYSDEP_CFLAGS -DUSG -DMEMMOVE_MISSING +# define REQUIRED_LIBRARIES +# undef HAVE_SYS_SIGLIST +# undef HAVE_GETWD +# undef HAVE_ALLOCA +# define HAVE_VPRINTF +# define HAVE_DIRENT +# undef HAVE_RESOURCE +#endif /* UTS */ + +/* ************************ */ +/* */ +/* PCS Cadmus System */ +/* */ +/* ************************ */ +#if defined (cadmus) && !defined (M_MACHINE) +# define M_MACHINE "cadmus" +# define M_OS "BrainDeath" +# define SYSDEP_CFLAGS -DUSG +# define HAVE_DIRENT +# define HAVE_VPRINTF +# define VOID_SIGHANDLER +# define USE_TERMCAP_EMULATION +# undef HAVE_GETWD +# undef HAVE_ALLOCA +# undef HAVE_WAIT_H +#endif /* cadmus */ + +/* **************************************************************** */ +/* */ +/* Generic Entry */ +/* */ +/* **************************************************************** */ + +/* Use this entry for your machine if it isn't represented here. It + is loosely based on a Vax running 4.3 BSD. */ + +#if !defined (M_MACHINE) +# define UNKNOWN_MACHINE +#endif + +#if defined (UNKNOWN_MACHINE) +# define M_MACHINE "UNKNOWN_MACHINE" +# define M_OS "UNKNOWN_OS" + +/* Required libraries for building on this system. */ +# define REQUIRED_LIBRARIES + +/* Define HAVE_SYS_SIGLIST if your system has sys_siglist[]. */ +# define HAVE_SYS_SIGLIST + +/* Undef HAVE_GETWD if your C library does not provide a working version + of getwd(). */ +/* # undef HAVE_GETWD */ + +/* Undef HAVE_GETCWD if your C library does not provide a working version + of getcwd(). */ +/* # undef HAVE_GETCWD */ + +/* Undef HAVE_ALLOCA if you are not using Gcc, and neither your library + nor compiler has a version of alloca (). In that case, we will use + our version of alloca () in alloca.c */ +/* # undef HAVE_ALLOCA */ + +/* Undef USE_GNU_MALLOC if there appear to be library conflicts, or if you + especially desire to use your OS's version of malloc () and friends. We + reccommend against this because GNU Malloc has debugging code built in. */ +/* # undef USE_GNU_MALLOC */ + +/* Define USE_GNU_TERMCAP if you want to use the GNU termcap library + instead of your system termcap library. */ +/* # define USE_GNU_TERMCAP */ + +/* Define HAVE_SETLINEBUF if your machine has the setlinebuf () + stream library call. Otherwise, setvbuf () will be used. If + neither of them work, you can edit in your own buffer control + based upon your machines capabilities. */ +# define HAVE_SETLINEBUF + +/* Define HAVE_VPRINTF if your machines has the vfprintf () library + call. Otherwise, printf will be used. */ +# define HAVE_VPRINTF + +/* Define USE_VFPRINTF_EMULATION if you want to use the BSD-compatible + vfprintf() emulation in vprint.c. */ +/* # define USE_VFPRINTF_EMULATION */ + +/* Define HAVE_GETGROUPS if your OS allows you to be in multiple + groups simultaneously by supporting the `getgroups' system call. */ +# define HAVE_GETGROUPS + +/* Define SYSDEP_CFLAGS to be the flags to cc that make your compiler + work. For example, `-ma' on the RT makes alloca () work. */ +/* This is a summary of the semi-machine-independent definitions that + can go into SYSDEP_CFLAGS: + + AFS - The Andrew File System is being used + AFS_CREATE_BUG - AFS has a bug with file creation if O_CREAT is + specified + BROKEN_SIGSUSPEND - sigsuspend(2) does not work to wake up processes + on SIGCHLD + HAVE_BSD_PGRP - getpgrp(2) takes a pid argument, a la 4.3 BSD + HAVE_BCOPY - bcopy(3) exists and works as in BSD + HAVE_GETDTABLESIZE - getdtablesize(2) exists and works correctly + HAVE_GETHOSTNAME - gethostname(2) or gethostname(3) is present and + works as in BSD + HAVE_GETPW_DECLS - USG machines with the getpw* functions defined in + that cannot handle redefinitions in the + bash source + HAVE_RESOURCE - and [gs]rlimit exist and work + HAVE_SETDTABLESIZE - setdtablesize(2) exists and works correctly + HAVE_SOCKETS - this system has BSD sockets added to a System V base + HAVE_UID_T - Definitions for uid_t and gid_t are in + INT_GROUPS_ARRAY - the second argument to getgroups(3) is an array + of integers + MEMMOVE_MISSING - the system does not have memmove(3) + MKFIFO_MISSING - named pipes do not work or mkfifo(3) is missing + NO_DEV_TTY_JOB_CONTROL - system can't do job control on /dev/tty + SBRK_DECLARED - don't declare sbrk as extern char *sbrk() in + lib/malloc/malloc.c + OPENDIR_NOT_ROBUST - opendir(3) allows you to open non-directory files + PGRP_PIPE - Requires parent-child synchronization via pipes to + make job control work right + SETVBUF_REVERSED - brain-damaged implementation of setvbuf that + has args 2 and 3 reversed from the SVID and + ANSI standard + RLOGIN_PGRP_BUG - processes started by rlogind have a process group + of 0 + TERMIOS_LDISC - system has a c_line line discipline member in struct + termios + TERMIOS_MISSING - the termios(3) functions are not present or don't + work, even though _POSIX_VERSION is defined + USG - The machine is running some sort of System V Unix + USGr3 - The machine is running SVR3.x + USGr4 - The machine is running SVR4 + USGr4_2 - The machine is running SVR4.2 + + Some other machine-dependent options: + CPCC - Dynix + NLS - Alpha, AIX + _BSD - Alpha + _DGUX_SOURCE - DG/UX + _INCLUDE_BSD_SOURCE - Apollo + _INCLUDE_POSIX_SOURCE - Apollo + + Posix.1 options that are normally set in : + _POSIX_VERSION - Encore, Apollo + _POSIX_SOURCE - ISC, QNX, Harris + _POSIX_JOB_CONTROL - NEC EWS, Encore, Harris, Motorola, Bull +*/ +# define SYSDEP_CFLAGS + +/* Define HAVE_STRERROR if your system supplies a definition for strerror () + in the C library, or a macro in a header file. */ +/* # define HAVE_STRERROR */ + +/* Define HAVE_STRCASECMP if your system supplies definitions for the + casel-insensitive string comparison functions strcasecmp and strncasemp + in the C library or one of the system header files. */ +/* # define HAVE_STRCASECMP */ + +/* Define HAVE_DIRENT if you have the dirent library and a definition of + struct dirent. If not, the BSD directory reading library and struct + direct are assumed. */ +/* # define HAVE_DIRENT */ + +/* If your system does not supply /usr/lib/libtermcap.a, but includes + the termcap routines as a part of the curses library, then define + this. This is the case on some System V machines. */ +/* # define USE_TERMCAP_EMULATION */ + +/* Define VOID_SIGHANDLER if your system's signal () returns a pointer to + a function returning void. */ +/* # define VOID_SIGHANDLER */ + +/* Define EXTRA_LIB_SEARCH_PATH if your required libraries (or standard) + ones for that matter) are not normally in the ld search path. For + example, some machines require /usr/ucblib in the ld search path so + that they can use -lucb. */ +/* # define EXTRA_LIB_SEARCH_PATH /usr/ucblib */ + +/* Define SEARCH_LIB_NEEDS_SPACE if your native ld requires a space after + the -L argument, which gives the name of an alternate directory to search + for libraries specified with -llib. For example, the HPUX ld requires + this: + -L lib/readline -lreadline + instead of: + -Llib/readline -lreadline + */ +/* # define SEARCH_LIB_NEEDS_SPACE */ + +/* Define LD_HAS_NO_DASH_L if your ld can't grok the -L flag in any way, or + if it cannot grok the -l flag, or both. */ +/* # define LD_HAS_NO_DASH_L */ + +/* Define GCC_STANDARD if the standard `cc' is gcc and you don't want + to use the compiler named `gcc' for some reason. */ +/* # define GCC_STANDARD */ + +# if defined (LD_HAS_NO_DASH_L) +# undef SEARCH_LIB_NEEDS_SPACE +# endif /* LD_HAS_NO_DASH_L */ + +#endif /* UNKNOWN_MACHINE */ diff --git a/bash-20060316/CWRU/old-conf/support/cat-s b/bash-20060316/CWRU/old-conf/support/cat-s new file mode 100644 index 000000000..87ba1634e --- /dev/null +++ b/bash-20060316/CWRU/old-conf/support/cat-s @@ -0,0 +1,16 @@ +# This awk script is called from within Makefile to strip multiple blank +# lines from stdin. +BEGIN { newlines = 0 } +{ + if (NF == 0) + newlines = 1; + else + { + if (newlines) + { + printf "\n"; + newlines = 0; + } + print $0; + } +} diff --git a/bash-20060316/CWRU/old-conf/support/cppmagic b/bash-20060316/CWRU/old-conf/support/cppmagic new file mode 100755 index 000000000..b0a951c23 --- /dev/null +++ b/bash-20060316/CWRU/old-conf/support/cppmagic @@ -0,0 +1,51 @@ +#!/bin/sh +# Return a full cpp specification, complete with system dependent flags. +# +# Syntax: cppmagic [ program-to-generate-flags [ guessed-cpp ]] +# +# If only one arg is present it is the name of a program to invoke +# which should generate -Dfoo defines. +# +# If two args are present the second arg is the name of the C +# preprocessor to use. +# +# Invoked with no args, provides a C preprocessor name and +# -traditional flag if that is appropriate. +# +# ../Makefile calls this file thusly: "cppmagic getcppsyms". +# +# Typical output: +# +# /lib/cpp -Dunix -Dm68k +# + +Cpp= + +if [ "$2" ]; then + Cpp=$2 +else + for cpp in /lib/cpp /usr/lib/cpp /usr/ccs/lib/cpp; do + if [ -f $cpp ]; then + Cpp=$cpp + fi + done + if [ "$Cpp" = "" ]; then + Cpp=cpp + fi +fi + +TRADITIONAL= +FLAGS= + +# First flag might be `-traditional' if this is Gnu Cpp. +unknown_flag=`$Cpp -traditional /dev/null 2>&1 | + egrep 'known|recognized|valid|bad|legal'` +if [ "$unknown_flag" = "" ]; then + TRADITIONAL=-traditional +fi + +if [ "$1" ]; then + FLAGS=`$1` +fi + +echo $Cpp $TRADITIONAL $FLAGS diff --git a/bash-20060316/CWRU/old-conf/support/getcppsyms.c b/bash-20060316/CWRU/old-conf/support/getcppsyms.c new file mode 100644 index 000000000..e4cb04483 --- /dev/null +++ b/bash-20060316/CWRU/old-conf/support/getcppsyms.c @@ -0,0 +1,427 @@ +/* getcppsyms.c - Find unique compiler symbols. */ + +/* Copyright (C) 1993 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + +/* Some cpp's do not define any symbols, but instead let /bin/cc do it + for them. For such machines, running this file may prove useful. It + outputs the list of symbols which /bin/cc or /lib/cpp define and which + we had the foresight to guess at. */ + +#include + +int +main () +{ +#if defined (__BSD_4_4__) + printf ("-D__BSD_4_4__"); +#endif /* __BSD_4_4__ */ +#if defined (CMU) + printf (" -DCMU"); +#endif /* CMU */ +#if defined (_COFF) + printf (" -D_COFF"); +#endif /* _COFF */ +#if defined (DGUX) + printf (" -DDGUX"); +#endif /* DGUX */ +#if defined (GOULD_PN) + printf (" -DGOULD_PN"); +#endif /* GOULD_PN */ +#if defined (MACH) + printf (" -DMACH"); +#endif /* MACH */ +#if defined (MIPSEB) + printf (" -DMIPSEB"); +#endif /* MIPSEB */ +#if defined (MIPSEL) + printf (" -DMIPSEL"); +#endif /* MIPSEL */ +#if defined (MULTIMAX) + printf (" -DMULTIMAX"); +#endif /* MULTIMAX */ +#if defined (M_UNIX) + printf (" -DM_UNIX"); +#endif /* M_UNIX */ +#if defined (M_XENIX) + printf (" -DM_XENIX"); +#endif /* M_XENIX */ +#if defined (_M_XENIX) + printf (" -D_M_XENIX"); +#endif /* _M_XENIX */ +#if defined (NeXT) + printf (" -DNeXT"); +#endif /* NeXT */ +#if defined (__PARAGON__) + printf (" -D__PARAGON__"); +#endif /* __PARAGON__ */ +#if defined (_PGC_) + printf (" -D_PGC_"); +#endif /* _PGC_ */ +#if defined (__PGC__) + printf (" -D__PGC__"); +#endif /* __PGC__ */ +#if defined (RES) + printf (" -DRES"); +#endif /* RES */ +#if defined (RISC6000) + printf (" -DRISC6000"); +#endif /* RISC6000 */ +#if defined (RT) + printf (" -DRT"); +#endif /* RT */ +#if defined (SYSTYPE_BSD) + printf (" -DSYSTYPE_BSD"); +#endif /* SYSTYPE_BSD */ +#if defined (SYSTYPE_SYSV) + printf (" -DSYSTYPE_SYSV"); +#endif /* SYSTYPE_SYSV */ +#if defined (Sun386i) + printf (" -DSun386i"); +#endif /* Sun386i */ +#if defined (Tek4132) + printf (" -DTek4132"); +#endif /* Tek4132 */ +#if defined (Tek4300) + printf (" -DTek4300"); +#endif /* Tek4300 */ +#if defined (UMAXV) + printf (" -DUMAXV"); +#endif /* UMAXV */ +#if defined (USGr4) + printf (" -DUSGr4"); +#endif /* USGr4 */ +#if defined (USGr4_2) + printf (" -DUSGr4_2"); +#endif /* USGr4_2 */ +#if defined (__SVR4_2__) + printf (" -D__SVR4_2__"); +#endif /* __SVR4_2__ */ +#if defined (Xenix286) + printf (" -DXenix286"); +#endif /* Xenix286 */ +#if defined (_AIX) + printf (" -D_AIX"); +#endif /* _AIX */ +#if defined (_AIX370) + printf (" -D_AIX370"); +#endif /* _AIX370 */ +#if defined (_IBMESA) + printf (" -D_IBMESA"); +#endif /* _IBMESA */ +#if defined (__ibmesa) + printf (" -D__ibmesa"); +#endif /* __ibmesa */ +#if defined (_U370) + printf (" -D_U370"); +#endif /* _U370 */ +#if defined (_NLS) + printf (" -D_NLS"); +#endif /* _NLS */ +#if defined (_CX_UX) + printf (" -D_CX_UX"); +#endif /* _CX_UX */ +#if defined (_IBMR2) + printf (" -D_IBMR2"); +#endif /* _IBMR2 */ +#if defined (_M88K) + printf (" -D_M88K"); +#endif /* _M88K */ +#if defined (_M88KBCS_TARGET) + printf (" -D_M88KBCS_TARGET"); +#endif /* _M88KBCS_TARGET */ +#if defined (__DGUX__) + printf (" -D__DGUX__"); +#endif /* __DGUX__ */ +#if defined (__UMAXV__) + printf (" -D__UMAXV__"); +#endif /* __UMAXV__ */ +#if defined (__m88k) + printf (" -D__m88k"); +#endif /* __m88k */ +#if defined (__uxpm__) + printf (" -DUSGr4 -Du370 -D__uxpm__"); +#endif /* __uxpm__ */ +#if defined (__uxps__) + printf (" -D__svr4__ -D__uxps__"); +#endif /* __uxps__ */ +#if defined (alliant) + printf (" -Dalliant"); +#endif /* alliant */ +#if defined (alpha) + printf (" -Dalpha"); +#endif /* alpha */ +#if defined (__alpha) + printf (" -D__alpha"); +#endif /* __alpha */ +#if defined (aix) + printf (" -Daix"); +#endif /* aix */ +#if defined (aixpc) + printf (" -Daixpc"); +#endif /* aixpc */ +#if defined (apollo) + printf (" -Dapollo"); +#endif /* apollo */ +#if defined (ardent) + printf (" -Dardent"); +#endif /* ardent */ +#if defined (att386) + printf (" -Datt386"); +#endif /* att386 */ +#if defined (att3b) + printf (" -Datt3b"); +#endif /* att3b */ +#if defined (bsd4_2) + printf (" -Dbsd4_2"); +#endif /* bsd4_2 */ +#if defined (bsd4_3) + printf (" -Dbsd4_3"); +#endif /* bsd4_3 */ +#if defined (__bsdi__) + printf (" -D__bsdi__"); +#endif /* __bsdi__ */ +#if defined (bsdi) + printf (" -Dbsdi"); +#endif /* bsdi */ +#if defined (__386BSD__) + printf (" -D__386BSD__"); +#endif /* __386BSD__ */ +#if defined (cadmus) + printf (" -Dcadmus"); +#endif /* cadmus */ +#if defined (clipper) + printf (" -Dclipper"); +#endif /* clipper */ +#if defined (concurrent) + printf (" -Dconcurrent"); +#endif /* concurrent */ +#if defined (convex) || defined (__convex__) || defined (__convexc__) +# if !defined (__GNUC__) + printf (" -pcc"); +# endif /* !__GNUC__ */ + printf (" -Dconvex"); +#endif /* convex */ +#if defined (dmert) + printf (" -Ddmert"); +#endif /* dmert */ +#if defined (gcos) + printf (" -Dgcos"); +#endif /* gcos */ +#if defined (gcx) + printf (" -Dgcx"); +#endif /* gcx */ +#if defined (gould) + printf (" -Dgould"); +#endif /* gould */ +#if defined (hbullx20) + printf (" -Dhbullx20"); +#endif /* hbullx20 */ +#if defined (hcx) + printf (" -Dhcx"); +#endif /* hcx */ +#if defined (host_mips) + printf (" -Dhost_mips"); +#endif /* host_mips */ +#if defined (hp9000) || defined (__hp9000) + printf (" -Dhp9000"); +#endif /* hp9000 || __hp9000 */ +#if defined (hp9000s200) || defined (__hp9000s200) + printf (" -Dhp9000s200"); +#endif /* hp9000s200 || __hp9000s200 */ +#if defined (hp9000s300) || defined (__hp9000s300) + printf (" -Dhp9000s300"); +#endif /* hp9000s300 || __hp9000s300 */ +#if defined (hp9000s500) || defined (__hp9000s500) + printf (" -Dhp9000s500"); +#endif /* hp9000s500 || __hp9000s500 */ +#if defined (hp9000s700) || defined (__hp9000s700) + printf (" -Dhp9000s700"); +#endif /* hp9000s700 || __hp9000s700 */ +#if defined (hp9000s800) || defined (__hp9000s800) + printf (" -Dhp9000s800"); +#endif /* hp9000s800 || __hp9000s800 */ +#if defined (hppa) || defined (__hppa) + printf (" -Dhppa"); +#endif /* hppa || __hppa */ +#if defined (hpux) || defined (__hpux) + printf (" -Dhpux"); +#endif /* hpux */ +#if defined (__hp_osf) + printf (" -D__hp_osf"); +#endif /* __hp_osf */ +#if defined (i386) + printf (" -Di386"); +#endif /* i386 */ +#if defined (__i386__) + printf (" -D__i386__"); +#endif +#if defined (__i860) + printf(" -D__i860"); +#endif /* __i860 */ +#if defined (__i860__) + printf(" -D__i860__"); +#endif /* __i860__ */ +#if defined (ibm) + printf (" -Dibm"); +#endif /* ibm */ +#if defined (ibm032) + printf (" -Dibm032"); +#endif /* ibm032 */ +#if defined (ibmrt) + printf (" -Dibmrt"); +#endif /* ibmrt */ +#if defined (interdata) + printf (" -Dinterdata"); +#endif /* interdata */ +#if defined (is68k) + printf (" -Dis68k"); +#endif /* is68k */ +#if defined (ksr1) + printf (" -Dksr1"); +#endif /* ksr1 */ +#if defined (__ksr1__) + printf (" -D__ksr1__"); +#endif /* __ksr1__ */ +#if defined (linux) + printf (" -Dlinux"); +#endif /* linux */ +#if defined (__linux__) + printf (" -D__linux__"); +#endif /* __linux__ */ +#if defined (luna88k) + printf (" -Dluna88k"); +#endif /* luna88k */ +#if defined (m68k) + printf (" -Dm68k"); +#endif /* m68k */ +#if defined (m88k) + printf (" -Dm88k"); +#endif /* m88k */ +#if defined (mc68010) + printf (" -Dmc68010"); +#endif /* mc68010 */ +#if defined (mc68020) + printf (" -Dmc68020"); +#endif /* mc68020 */ +#if defined (mc68030) + printf (" -Dmc68030"); +#endif /* mc68030 */ +#if defined (mc68040) + printf (" -Dmc68040"); +#endif /* mc68040 */ +#if defined (mc68k32) + printf (" -Dmc68k32"); +#endif /* mc68k32 */ +#if defined (mips) + printf (" -Dmips"); +#endif /* mips */ +#if defined (n16) + printf (" -Dn16"); +#endif /* n16 */ +#if defined (ns32000) + printf (" -Dns32000"); +#endif /* ns32000 */ +#if defined (os) + printf (" -Dos"); +#endif /* os */ +#if defined (osf) + printf (" -Dosf"); +#endif /* osf */ +#if defined (__osf__) + printf (" -D__osf__"); +#endif /* __osf__ */ +#if defined (__OSF1__) + printf(" -D__OSF1__"); +#endif /* __OSF1__ */ +#if defined (pdp11) + printf (" -Dpdp11"); +#endif /* pdp11 */ +#if defined (plexus) + printf (" -Dplexus") +#endif /* plexus */ +#if defined (pyr) + printf (" -Dpyr"); +#endif /* pyr */ +#if defined (scs) + printf (" -Dscs"); +#endif /* scs */ +#if defined (sequent) + printf (" -Dsequent"); +#endif /* sequent */ +#if defined (sgi) + printf (" -Dsgi"); +#endif /* sgi */ +#if defined (sony) + printf (" -Dsony"); +#endif /* sony */ +#if defined (sparc) + printf (" -Dsparc"); +#endif /* sparc */ +#if defined (stardent) + printf (" -Dstardent"); +#endif /* stardent */ +#if defined (sun) + printf (" -Dsun"); +#endif /* sun */ +#if defined (sun2) + printf (" -Dsun2"); +#endif /* sun2 */ +#if defined (sun3) + printf (" -Dsun3"); +#endif /* sun3 */ +#if defined (sun4) + printf (" -Dsun4"); +#endif /* sun4 */ +#if defined (__svr4__) + printf (" -D__svr4__"); +#endif /* __svr4__ */ +#if defined (tower32) + printf (" -Dtower32"); +#endif /* tower32 */ +#if defined (tss) + printf (" -Dtss"); +#endif /* tss */ +#if defined (u370) + printf (" -Du370"); +#endif /* u370 */ +#if defined (u3b) + printf (" -Du3b"); +#endif /* u3b */ +#if defined (u3b2) + printf (" -Du3b2"); +#endif /* u3b2 */ +#if defined (u3b20d) + printf (" -Du3b20d"); +#endif /* u3b20d */ +#if defined (u3b5) + printf (" -Du3b5"); +#endif /* u3b5 */ +#if defined (ultrix) + printf (" -Dultrix"); +#endif /* ultrix */ +#if defined (unix) + printf (" -Dunix"); +#endif /* unix */ +#if defined (vax) + printf (" -Dvax"); +#endif /* vax */ + + printf ("\n"); + exit (0); +} diff --git a/bash-20060316/CWRU/old-conf/support/inpath b/bash-20060316/CWRU/old-conf/support/inpath new file mode 100755 index 000000000..95f28bc16 --- /dev/null +++ b/bash-20060316/CWRU/old-conf/support/inpath @@ -0,0 +1,19 @@ +#! /bin/sh +# +# Search $PATH for a file the same name as $1; return TRUE if found. +# + +command=$1 +[ -n "$command" ] || exit 1 + +set `echo $PATH | sed 's/^:/.:/ + s/::/:.:/g + s/:$/:./ + s/:/ /g'` + +while [ $# -ne 0 ] ; do + [ -f $1/$command ] && exit 0 # test -x not universal + shift +done + +exit 1 diff --git a/bash-20060316/CWRU/old-conf/support/mkmachtype b/bash-20060316/CWRU/old-conf/support/mkmachtype new file mode 100755 index 000000000..b2bc5ca58 --- /dev/null +++ b/bash-20060316/CWRU/old-conf/support/mkmachtype @@ -0,0 +1,282 @@ +#!/bin/sh +# This script attempts to guess a canonical system name. +# Copyright (C) 1992, 1993 Free Software Foundation, Inc. +# +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 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, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit system type (host/target name). +# +# Only a few systems have been added to this list; please add others +# (but try to keep the structure clean). +# + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + alpha:OSF1:1.*:*) + # 1.2 uses "1.2" for uname -r. + echo alpha-dec-osf${UNAME_RELEASE} + exit 0 ;; + alpha:OSF1:V1.*:*) + # 1.3 uses "V1.3" for uname -r. + echo alpha-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^V//'` + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + sun4*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + echo sparc-sun-sunos${UNAME_RELEASE} + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + mips:*:5*:RISCos) + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + echo m88k-dg-dgux${UNAME_RELEASE} + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + *:IRIX:*:*) + echo mips-sgi-irix${UNAME_RELEASE} + exit 0 ;; + i[34]86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + *:AIX:2:3) + echo rs6000-ibm-aix3.2 + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/31?:HP-UX:*:*) + echo m68000-hp-hpux + exit 0 ;; + 9000/[34]??:HP-UX:*:*) + echo m68k-hp-hpux + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/7??:HP-UX:*:* | 9000/8?7:HP-UX:*:* ) + echo hppa1.1-hp-hpux + exit 0 ;; + 9000/8??:HP-UX:*:*) + echo hppa1.0-hp-hpux + exit 0 ;; + 3050*:HI-UX:*:*) + sed 's/^ //' << EOF >dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?7:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + C1*:ConvexOS:*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:*) + echo c2-convex-bsd + exit 0 ;; + CRAY*X-MP:UNICOS:*:*) + echo xmp-cray-unicos + exit 0 ;; + CRAY*Y-MP:UNICOS:*:*) + echo ymp-cray-unicos + exit 0 ;; + CRAY-2:UNICOS:*:*) + echo cray2-cray-unicos + exit 0 ;; + hp3[0-9][05]:NetBSD:*:*) + echo m68k-hp-netbsd${UNAME_RELEASE} + exit 0 ;; + i[34]86:NetBSD:*:*) + echo ${UNAME_MACHINE}-unknown-netbsd${UNAME_RELEASE} + exit 0 ;; + amiga:NetBSD:*:*) + echo m68k-cbm-netbsd{$UNAME_RELEASE} + exit 0 ;; + i[34]86:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux + exit 0 ;; + i[34]86:UNIX_SV:4.*:*) + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE} + else + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; + i[34]86:*:3.2:*) + if /bin/uname -X 2>/dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` + (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 + echo ${UNAME_MACHINE}-unknown-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-unknown-sysv3.2 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + M680[234]0:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*:4.0:*) + uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m680[234]0:LynxOS:2.2*:*) + echo m68k-lynx-lynxos${UNAME_RELEASE} + exit 0 ;; + i[34]86:LynxOS:2.2*:*) + echo i386-lynx-lynxos${UNAME_RELEASE} + exit 0 ;; + TSUNAMI:LynxOS:2.2*:*) + echo sparc-lynx-lynxos${UNAME_RELEASE} + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +cat >dummy.c <&2 + +exit 1 diff --git a/bash-20060316/CWRU/old-conf/support/mksysdefs b/bash-20060316/CWRU/old-conf/support/mksysdefs new file mode 100755 index 000000000..05040d1c3 --- /dev/null +++ b/bash-20060316/CWRU/old-conf/support/mksysdefs @@ -0,0 +1,489 @@ +#!/bin/sh +# +# This file creates a file called "sysdefs.h" which contains CPP defines +# helping to describe the operating system features. We just take guesses +# by looking at random files. + +# Removes any inherited definitions. +SYSDEF= +MAKE_ANSI= + +while [ $# -gt 0 ]; do + case "$1" in + -s) shift; srcdir=$1; shift ;; + -i) shift; incdir="$1"; shift ;; + -A) shift; MAKE_ANSI=true ;; + *) break ;; + esac +done + +sysdefs=${1-./sysdefs.h} +: ${srcdir=.} + +rm -f $sysdefs + +echo "/* sysdefs.h -- #defines for your system created by $0." >>$sysdefs +echo " Do NOT EDIT this file, since any changes will disappear." >>$sysdefs +echo " Instead, edit $0, or config.h, or machines.h. */" >>$sysdefs +echo "" >>$sysdefs +echo "#if !defined (_SYSDEFS_H_)" >>$sysdefs +echo "# define _SYSDEFS_H_" >>$sysdefs + +# was if [ -f /usr/bin/uname ] || [ -f /bin/uname ] +if ( uname >/dev/null 2>&1 ) 2>/dev/null +then + UNAME=`uname` # SunOS + UNAME_R=`uname -r 2>/dev/null` # 4.1.2 + UNAME_M=`uname -m 2>/dev/null` # sun4m + UNAME_V=`uname -v 2>/dev/null` # 13 + UNAME_S=`uname -s 2>/dev/null` # SunOS + RELEASE=`expr "$UNAME_R" : '[^0-9]*\([0-9]*\)'` # 4 + case "$RELEASE" in + "") RELEASE=0 ;; + *) RELEASE=`expr "$RELEASE" + 0` ;; + esac + LEVEL=`expr "$UNAME_R" : '[^0-9]*[0-9]*.\([0-9]*\)'` # 1 + SUBLEVEL=`expr "$UNAME_R" : '[^0-9]*[0-9]*.[0-9]*.\([0-9]*\)'` # 2 +fi + +# check for versions of SunOS and BSD/OS +case "${UNAME}${RELEASE}" in +SunOS4*) SYSDEF=SunOS4 ;; +SunOS5*) SYSDEF=SunOS5 ;; +BSD/OS2*) SYSDEF=BSDI2 ;; +esac + +# Test for NeXT +if [ -d /NextLibrary ]; then + MAKE_ANSI=true +fi + +# Intel Paragon +case "$UNAME_M" in +paragon) MAKE_ANSI=true ;; +esac + +# Test for shared libraries (this is pretty sVr4ish). +if [ -f /usr/ccs/lib/libc.so ]; then + SYSDEF=USGr4 +fi + +# Some versions of i386 SVR4.2 make `uname' equivalent to `uname -n', which +# is contrary to all other versions of uname +if [ -n "$UNAME" ] && [ "$UNAME_S" != "$UNAME" ] && [ "$UNAME_S" = UNIX_SV ]; then + UNAME=UNIX_SV +fi + +# another check for SVR4 on 386 or 486 machines +case "${UNAME_M}:${UNAME}:${UNAME_R}" in +i[34]86:UNIX_SV:4.*) SYSDEF=USGr4 ;; +esac + +# A check for Mips RISCos +case "$UNAME_V" in +UMIPS|RISCos) SYSDEF=RISCos_${RELEASE}_${LEVEL} ;; +esac + +# A check for Amdahl UTS +case "$UNAME" in +uts) SYSDEF=UTS ;; +esac + +# Look for an error message when trying to exec bison. If we find +# what we're looking for, then we don't have it. If we get something +# else (like an error message about no grammar file), then we have +# it. +YACC=yacc +if ( cd /tmp ; bison /dev/null 2>&1 >/dev/null | grep 'no input grammar' >/dev/null 2>&1 ) 2>/dev/null; then + YACC="bison -y" +elif ( cd /tmp ; byacc /dev/null 2>&1 >/dev/null | grep 'unexpected ' >/dev/null 2>&1) 2>/dev/null; then + YACC=byacc +fi + +# Try to locate ranlib. I think this is a bad idea. +if sh ${srcdir}/support/inpath ranlib; then + RANLIB_LOCATION=ranlib +elif [ -f /usr/bin/ranlib ]; then + RANLIB_LOCATION=/usr/bin/ranlib; +elif [ -f /bin/ranlib ]; then + RANLIB_LOCATION=/bin/ranlib; +elif [ -f /usr/local/bin/ranlib ]; then + RANLIB_LOCATION=/usr/local/bin/ranlib; +elif [ -f /usr/gnu/bin/ranlib ]; then + RANLIB_LOCATION=/usr/gnu/bin/ranlib +elif [ -f /usr/local/gnubin/ranlib ]; then + RANLIB_LOCATION=/usr/local/gnubin/ranlib; +else + RANLIB_LOCATION=: # XXX +fi + +if [ -n "${RANLIB_LOCATION}" ]; then + echo "" >>$sysdefs + echo "#if !defined (RANLIB_LOCATION)" >>$sysdefs + echo "# define RANLIB_LOCATION ${RANLIB_LOCATION}" >>$sysdefs + echo "#endif /* RANLIB_LOCATION */" >>$sysdefs +fi + +# +# Is this a Xenix system? +# +if [ -f /xenix ]; then + SYSDEF="Xenix" + case "`/bin/uname -p`" in + *286) SYSDEF="Xenix286" ;; + *386) SYSDEF="Xenix386" ;; + esac + + # make sure that `i386' is defined for machines.h + if [ "$SYSDEF" = "Xenix386" ]; then + echo "" >>$sysdefs + echo "#if !defined (i386)" >>$sysdefs + echo "# define i386" >>$sysdefs + echo "#endif /* !i386 */" >>$sysdefs + fi + + # Pass the release number of the OS through to the machine descriptions + # in machines.h. + if [ -f /etc/perms/soft ]; then + rel=`grep rel= /etc/perms/soft` + case "$rel" in + *2.2.*) XREL=XENIX_22 ;; + *2.3.*) XREL=XENIX_23 ;; + *3.2.*) XREL=XENIX_32 ;; + *) XREL= ;; + esac + + if [ "$XREL" ]; then + echo "" >>$sysdefs + echo "#if !defined ($XREL)" >>$sysdefs + echo "# define $XREL" >>$sysdefs + echo "#endif /* !$XREL */" >>$sysdefs + fi + fi +fi + +# +# Is this some kind of Sys Vish system? +# +if [ -f /unix ]; then + if [ -d /generic ]; then # This is an AIX system. + SYSDEF="aixpc" + MAKE_ANSI=true + elif [ -d /etc/conf/kconfig.d ] && [ -f /usr/include/sys/limits.h ]; then + SYSDEF="isc386" # This is a 386 running ISC? + ISCREL="ISC_$RELEASE" + echo "#if !defined ($ISCREL)" >>$sysdefs + echo "# define $ISCREL" >>$sysdefs + echo "#endif /* $ISCREL */" >>$sysdefs + elif [ -f /etc/xlc.cfg ]; then + if fgrep _IBMR2 /etc/xlc.cfg >/dev/null 2>&1; then + SYSDEF=RISC6000 + MAKE_ANSI=true + fi + elif [ -f /bin/4d -a -f /bin/uname ]; then + case "$UNAME_R" in + 3.*) SYSDEF="Irix3" ;; + 4.*) SYSDEF="Irix4" ;; + 5.*) SYSDEF="Irix5" ;; + 6.*) SYSDEF="Irix6" ;; + *) SYSDEF="Irix3" ;; + esac + elif [ -d /usr/amiga ]; then + SYSDEF="amiga" # An Amiga running V.4. + elif [ -f /bin/fxc.info ]; then + SYSDEF="alliant" + fi +fi + +# Is this a Unicos system? +if [ -f /unicos ]; then + MAKE_ANSI=true + UnicosMachine= + + # Test for the variaous flavors of Cray machines. + if [ -x /bin/cray1 ] && /bin/cray1 2>/dev/null; then + UnicosMachine=Cray1 + fi + + if [ -x /bin/cray2 ] && /bin/cray2 2>/dev/null; then + UnicosMachine=Cray2 + fi + + if [ -x /bin/crayxmp ] && /bin/crayxmp 2>/dev/null; then + UnicosMachine=CrayXMP + fi + if [ -x /bin/crayymp ] && /bin/crayymp 2>/dev/null; then + UnicosMachine=CrayYMP + fi + + if [ "$UnicosMachine" ]; then + echo "#if !defined ($UnicosMachine)" >>$sysdefs + echo "# define $UnicosMachine" >>$sysdefs + echo "#endif /* !$UnicosMachine */" >>$sysdefs + fi +fi + +# Is this (and what kind of) a HPUX system? +if [ -f /hp-ux ]; then + SYSDEF=HPUX_${RELEASE} + if [ "$RELEASE" = 6 -a "$LEVEL" -lt 2 ]; then + SYSDEF=HPUX_USG + fi +fi + +if [ "$SYSDEF" = "" ]; then + case "$UNAME_M" in + ESA) SYSDEF=AIXESA ;; + XD88*) SYSDEF=XD88 ;; + M88100) SYSDEF=M88100 ;; # Motorola Delta 88K + esac +fi + +# What release of SCO Unix is this? +if [ "$SYSDEF" = "" -a -f /bin/uname ]; then + case `/bin/uname -X 2>/dev/null | grep '^Release' 2>/dev/null` in + *3.2v4.*) SYSDEF=SCOv4 ;; + *) SYSDEF=SCO ;; + esac +fi + +# +# Default to cadmus for unknown SysVish systems +# +if [ -f /unix ] && [ "$SYSDEF" = "" ]; then + SYSDEF="cadmus" +fi + +if [ "$SYSDEF" != "" ]; then + echo "" >>$sysdefs + echo "#if !defined ($SYSDEF)" >>$sysdefs + echo "# define $SYSDEF" >>$sysdefs + echo "#endif /* $SYSDEF */" >>$sysdefs +fi + +# Now look for certain include files in a list of directories +# Poor substitute for autoconf + +# Add any other directories where include files are found to this list or +# create another case +if [ -n "$incdir" ]; then + dirlist="$incdir" +else + case "$SYSDEF" in + RISCos*) dirlist="/bsd43/usr/include";; + *) dirlist="/usr/include /usr/include/bsd /usr/include/ansi" ;; + esac +fi + +# Code fragment to be executed to find a particular include file. Make sure +# to set `file' to the pathname of the file you want, relative to /usr/include, +# before calling `eval $findf'. +findf=" +found=''; +for d in \$dirlist; +do + if test -f \$d/\$file; + then + found=yes; + break; + fi; +done +" + +file=sys/stream.h +eval $findf +if [ -n "$found" ]; then + echo "" >>$sysdefs + echo "#if !defined (HAVE_SYS_STREAM_H)" >>$sysdefs + echo "# define HAVE_SYS_STREAM_H" >>$sysdefs + echo "#endif /* HAVE_SYS_STREAM_H */" >>$sysdefs +fi + +file=sys/ptem.h +eval $findf +if [ -n "$found" ]; then + echo "" >>$sysdefs + echo "#if !defined (HAVE_SYS_PTEM_H)" >>$sysdefs + echo "# define HAVE_SYS_PTEM_H" >>$sysdefs + echo "#endif /* HAVE_SYS_PTEM_H */" >>$sysdefs +fi + +file=sys/pte.h +eval $findf +if [ -n "$found" ]; then + echo "" >>$sysdefs + echo "#if !defined (HAVE_SYS_PTE_H)" >>$sysdefs + echo "# define HAVE_SYS_PTE_H" >>$sysdefs + echo "#endif /* HAVE_SYS_PTE_H */" >>$sysdefs +fi + +file=sys/wait.h +eval $findf +if [ -n "$found" ]; then + echo "" >>$sysdefs + echo "#if !defined (HAVE_SYS_WAIT_H)" >>$sysdefs + echo "# define HAVE_SYS_WAIT_H" >>$sysdefs + echo "#endif /* HAVE_SYS_WAIT_H */" >>$sysdefs +fi + +file=sys/resource.h +eval $findf +if [ -n "$found" ]; then + echo "" >>$sysdefs + echo "#if !defined (HAVE_RESOURCE)" >>$sysdefs + echo "# define HAVE_RESOURCE" >>$sysdefs + echo "#endif /* HAVE_RESOURCE */" >>$sysdefs +fi + +file=sys/param.h +eval $findf +if [ -n "$found" ]; then + echo "" >>$sysdefs + echo "#if !defined (HAVE_SYS_PARAM_H)" >>$sysdefs + echo "# define HAVE_SYS_PARAM_H" >>$sysdefs + echo "#endif /* HAVE_SYS_PARAM_H */" >>$sysdefs +fi + +file=unistd.h +eval $findf +if [ -n "$found" ]; then + echo "" >>$sysdefs + echo "#if !defined (HAVE_UNISTD_H)" >>$sysdefs + echo "# define HAVE_UNISTD_H" >>$sysdefs + echo "#endif /* HAVE_UNISTD_H */" >>$sysdefs +fi + +file=stdlib.h +eval $findf +if [ -n "$found" ]; then + echo "" >>$sysdefs + echo "#if !defined (HAVE_STDLIB_H)" >>$sysdefs + echo "# define HAVE_STDLIB_H" >>$sysdefs + echo "#endif /* HAVE_STDLIB_H */" >>$sysdefs +fi + +file=limits.h +eval $findf +if [ -n "$found" ]; then + echo "" >>$sysdefs + echo "#if !defined (HAVE_LIMITS_H)" >>$sysdefs + echo "# define HAVE_LIMITS_H" >>$sysdefs + echo "#endif /* HAVE_LIMITS_H */" >>$sysdefs +fi + +file=locale.h +eval $findf +if [ -n "$found" ]; then + echo "" >>$sysdefs + echo "#if !defined (HAVE_LOCALE_H)" >>$sysdefs + echo "# define HAVE_LOCALE_H" >>$sysdefs + echo "#endif /* HAVE_LOCALE_H */" >>$sysdefs +fi + +file=alloca.h +eval $findf +if [ -f /usr/include/alloca.h ]; then + echo "" >>$sysdefs + echo "#if !defined (HAVE_ALLOCA_H)" >>$sysdefs + echo "# define HAVE_ALLOCA_H" >>$sysdefs + echo "#endif /* HAVE_ALLOCA_H */" >>$sysdefs +fi + +file=dirent.h +eval $findf +if [ -n "$found" ]; then + echo "" >>$sysdefs + echo "#if !defined (HAVE_DIRENT_H)" >>$sysdefs + echo "# define HAVE_DIRENT_H" >>$sysdefs + echo "#endif /* HAVE_DIRENT_H */" >>$sysdefs +fi + +file=string.h +eval $findf +if [ -n "$found" ]; then + echo "" >>$sysdefs + echo "#if !defined (HAVE_STRING_H)" >>$sysdefs + echo "# define HAVE_STRING_H" >>$sysdefs + echo "#endif /* HAVE_STRING_H */" >>$sysdefs +fi + +file=varargs.h +eval $findf +if [ -n "$found" ]; then + echo "" >>$sysdefs + echo "#if !defined (HAVE_VARARGS_H)" >>$sysdefs + echo "# define HAVE_VARARGS_H" >>$sysdefs + echo "#endif /* HAVE_VARARGS_H */" >>$sysdefs +fi + +# Does the system have a /dev/fd directory? +if [ -d /dev/fd ]; then + echo "" >>$sysdefs + echo "#if !defined (HAVE_DEV_FD)" >>$sysdefs + echo "# define HAVE_DEV_FD" >>$sysdefs + echo "#endif /* HAVE_DEV_FD */" >>$sysdefs +fi + +# Is this SVR4.2? It's subtly different from USGr4 +if [ "$UNAME" = "UNIX_SV" ] && [ "$UNAME_R" = "4.2" ]; then + echo "" >>$sysdefs + echo "#if !defined (USGr4_2)" >>$sysdefs + echo "# define USGr4_2" >>$sysdefs + echo "#endif /* USGr4_2 */" >>$sysdefs +fi + +# Is this AIX PS/2 1.3? Yuck. +if [ "$UNAME" = "AIX" ] && [ "$UNAME_V" = "1" ] && [ "$RELEASE" = "3" ]; then + case "$UNAME_M" in + i386|i486) + echo "" >>$sysdefs + echo "#if !defined (AIX_13)" >>$sysdefs + echo "# define AIX_13" >>$sysdefs + echo "#endif /* AIX_13 */" >>$sysdefs + ;; + esac +fi + +if [ -n "$YACC" ]; then + echo "" >>$sysdefs + echo "#if !defined (YACC_PROG)" >>$sysdefs + echo "# define YACC_PROG $YACC" >>$sysdefs + echo "#endif /* YACC_PROG */" >>$sysdefs +fi + +# Functions to test for a la autoconf +# getwd +# getcwd +# strchr +# strcasecmp +# getgroups +# setlinebuf +# strerror +# vfprintf +# bcopy +# getdtablesize +# setdtablesize +# alloca +# gethostname +# memmove (missing) +# mkfifo (missing) +# +# Other things to test +# opendir robustness +# dup2 working +# void sighandler +# sys_siglist[] +# uid_t, gid_t +# have_getpw_decls +# reversed setvbuf args +# int getgroups + +# If this system's cpp might not like `/**/#' in cpp-Makefile, make an +# alternate ansi-style cpp-Makefile. +if [ -n "$MAKE_ANSI" ]; then + grep -v '/\*\*/' ${srcdir}/cpp-Makefile >ansi-Makefile +fi + +# These should be the last 2 lines in this file! +echo "" >>$sysdefs +echo "#endif /* _SYSDEFS_H_ */" >>$sysdefs diff --git a/bash-20060316/CWRU/old-conf/support/srcdir b/bash-20060316/CWRU/old-conf/support/srcdir new file mode 100755 index 000000000..9d8ccd71b --- /dev/null +++ b/bash-20060316/CWRU/old-conf/support/srcdir @@ -0,0 +1,13 @@ +#! /bin/sh +# +# srcdir - print out the absolute pathname of the top of the bash source +# tree. Used for getting the right value to makes in subdirectories +# + +case "$1" in +'.'|./) pwd ;; +./*|..*) echo `pwd`/"$1" ;; +*) echo "$1" ;; +esac + +exit 0 diff --git a/bash-20060316/CWRU/old/KSH.README b/bash-20060316/CWRU/old/KSH.README new file mode 100644 index 000000000..8d19d88de --- /dev/null +++ b/bash-20060316/CWRU/old/KSH.README @@ -0,0 +1,136 @@ + +This is a description of the changes made to bash for increased ksh +compatibility. + +1. $SECONDS + + "Each time this parameter is referenced, the number of seconds + since shell invocation is returned. If this parameter is assigned + a value, then the value returned will be the value that was + assigned plus the number of seconds since the assignment." + + Files changed: variables.c + variables.h + subst.c + general.c + shell.c + general.h + +2. $TMOUT + + "If set to a value greater than 0, the shell will terminate if a + command is not entered within the prescribed number of seconds + after issuing the PS1 prompt." + + Files changed: shell.c (the implementation is not perfect) + +3. $RANDOM + + "Each time this parameter is referenced, a random integer is + generated. The sequence of random numbers can be initialized + by assigning a numeric value to RANDOM." + + Files changed: subst.c + variables.c + +4. $REPLY + + "This parameter is set by the `read' special command when no + arguments are supplied." + + Files changed: builtins.c + +5. integer variables + + `declare -i' (also export) makes a variable an integer (turns on + the integer attribute). When assignment is made to a variable with + the -i attribute, arithmetic expression evaluation is done on the + value before it is assigned to the variable. + + Files changed: variables.h + variables.c + builtins.c + +6. Arithmetic expression evaluation. + + Here is the comment at the beginning of the new file `expr.c': + + + ksh-style expression evaluation. + + All arithmetic is done as long integers with no checking for overflow + (though division by 0 is caught and flagged as an error). + + The following operators are handled, grouped into a set of levels in + order of decreasing precedence. + + "-" [level 0 (unary negation)] + "!" [level 1] + "*", "/", "%" [level 2] + "+", "-" [level 3] + "<=", ">=", "<", ">" [level 4] + "==", "!=" [level 5] + "=" [level 6 (assignment)] + + (Note that most of these operators have special meaning to bash, and an + entire expression should be quoted, e.g. "a=$a+1" or "a=a+1" to ensure + that it is passed intact to the evaluator). + + Sub-expressions within parentheses have a precedence level greater than + all of the above levels and are evaluated first. Within a single prece- + dence group, evaluation is left-to-right, except for the arithmetic + assignment operator (`='), which is evaluated right-to-left (as in C). + + The expression evaluator returns the value of the expression (assignment + statements have as a value what is returned by the RHS). The `let' + builtin, on the other hand, returns 0 if the last expression evaluates to + a non-zero, and 1 otherwise. + + Implementation is a recursive-descent parser. + + Files added: expr.c + +7. `let' builtin + + Parameters may be assigned numeric values via the `let' builtin. + Each of its arguments is an expression to be evaluated. `let' + returns 0 if the value of the last expression is non-zero, and + 1 otherwise. + + Note that the "((...))" form of this command has not yet been + implemented; it requires changes to the parsing functions. + + Files changed: builtins.c + +8. $_ + + $_ is set to the last argument of the previous command line, after + expansion. It is still used as before when checking for mail. + Two new keybindings have been added to insert this into the current + command line (M-_ and M-.). + + Files changed: mailcheck.c + execute_cmd.c + bashline.c + +9. `cd -' + + Equivalent to 'cd $OLDPWD' + + Files changed: builtins.c + +10. "ulimit -a" + + "List all of the current resource limits (BSD only)." + + Files changed: builtins.c + +11. ${#@} and ${#*} + + These expand to the number of positional parameters. + + Files changed: subst.c + +Chet Ramey +Information Network Services, Case Western Reserve University +chet@ins.CWRU.Edu diff --git a/bash-20060316/CWRU/old/RELEASE.113 b/bash-20060316/CWRU/old/RELEASE.113 new file mode 100644 index 000000000..f38e5f219 --- /dev/null +++ b/bash-20060316/CWRU/old/RELEASE.113 @@ -0,0 +1,140 @@ +This file details the changes between the previous release of CWRU bash +(07/11/93) and this release. + +1. Bugs Fixed + +Readline's vi-mode once again has TAB bound to completion; entering `posix +mode' changes it to self-insert + +Bash now binds its special emacs-mode functions directly into +emacs_meta_keymap so that eight-bit character handling does not interfere + +Some source restructuring: more extern functions are defined in header files +and not in C source files + +The handling of `line number' inside functions is now more correct and +closer to reality + +Some functions of `general use' were moved to general.c (vfree, +full_pathname) + +A bug that caused some redirections to be applied twice was fixed in +execute_command_internal (dispose of redirection_undo_list after copying it; +ditto for exec_redirection_undo_list) + +The exit status of a command that is not found is 126, as Posix.2 specifies + +More speed improvements -- bash now runs as fast as the SunOS sh on +Haertel's `shell benchmark' + +Instead of returning pointers to -1, bash and the readline, history, and +glob libraries now return pointers to special `error pointers', which the +calling code checks for in place of -1 + +Fixed a problem with canonicalize_pathname which made it get +confused with xxx/./yyy if yyy was `.' or `..' + +Fixes to make bash recognize SVR4.2 and set USGr4_2 for SVR4.2 systems + +Fixes to the HP/UX machine descriptions to make alloca work on HPUX_9 +and to avoid `M_MACHINE redefined' warnings + +Fixes to the CRAY machine description + +Fixes to the mailpath code to make it Posix.2-compliant -- backslash +may now quote `%' and `?' + +The namespace was further cleaned up, and more functions and variables +were made static + +On systems with S_IFSOCK or S_ISSOCK defined in sys/stat.h, bash checks +whether fd 0 is a socket to decide whether or not it's being started by +rshd and to run the startup files + +Bash now gives the signal mask it inherits to its children -- previously, +login shells cleared the signal mask + +cpp-Makefile and subst.c both used the `USE_GLOB_LIBRARY' define, but +with different meanings; subst.c now uses `USE_POSIX_GLOB_LIBRARY' + +Fixed pattern substitution so that ${a%%$b}, where b was unset, no longer +causes a core dump + +Changed the `test_exit' define in test.c to no longer use `longjmp' as +the rhs or a comma-ized expression; this causes core dumps on some +optimizer/machine combinations + +A speed hack in variables.c: if no local variables are defined for a level +of shell context, kill_all_local_variables does not need to search the +whole variable hash table when popping a context + +Fixed the `bind' builtin so that -m now changes the keymap for all of the +subsequent operations + +Changed some more builtins to use internal_getopt: bind, command, export, +readonly, declare, typeset + +Fixed fc to use the Posix.2 format for listing commands in the +history list + +Changed bg to set `!', as Posix.2 specifies + +Fixed ulimit.def to compile if RLIMIT_RSS is not defined, +as some systems seem to have it + +Replaced lib/malloc/alloca.c with the version from emacs 19. The old one +lives in alloca.c.old + +malloc.c now uses the ANSI C features to `stringize' macro arguments if +__STDC__ is defined + +Fixes to the GNU malloc library from glibc 1.06 and Mike Haertel + +Fixes to readline key binding and lookup for Cray systems, which don't +like the casting that readline does + +Fixes to all readline library source files to clean up the code: make sure +`int'-returning functions use `return x;' rather than `return;', declare all +arguments, even the `int' ones, and make some functions void. Cleaned up +the code formatting a little, too. + +The readline completer now double-quotes filenames with special word-break +characters, so that tilde expansion still works + +^C now breaks out of keyboard macros + +If being compiled as part of the shell, readline no longer attempts to +handle SIGTTIN, SIGTTOU, or SIGTSTP + +tilde_expansion_failure_hook is now a CPFunction rather than a Function, +since that's how it's used + +Readline vi-mode `change case' function now skips over characters which +are neither upper nor lower case + +Readline vi-mode now allows replacement to be redoable with `.' + +2. New Features + +A `strict Posix.2' mode, enabled with the -posix startup option or +setting the POSIXLY_CORRECT variable (see CWRU/POSIX.NOTES for a +description of the changed behavior) + +`ONESHOT' is now an option in config.h + +cpp-Makefile assumes that fixed header files are present if gcc is being +used + +The redirections attached to a function declaration are now part of that +function, applied when the function is executed, as specified by Posix.2. +This caused a change to parse.y that resulted in 66 shift/reduce +conflicts(!) + +All of the OP= functions that Posix.2 specifies are now implemented for +both `let' and arithmetic substitution + +The `command' builtin has acquired the Posix.2 `-v' and `-V' options +(this shares code with the `type' builtin) + +A new `bash_builtins' man page, like the `csh_builtins' page on some +systems diff --git a/bash-20060316/CWRU/old/RSH.README b/bash-20060316/CWRU/old/RSH.README new file mode 100644 index 000000000..6a3498b20 --- /dev/null +++ b/bash-20060316/CWRU/old/RSH.README @@ -0,0 +1,54 @@ + +This is a description of the changes made to bash to provide a `restricted' +shell, `rbash', organized by changes to various source files. + +1. shell.c + + Moved the declaration of restricted to flags.c; it is now declared + extern here. Changed the detection of a restricted shell; now, any + instance of the shell for which *(basename(argv[0])) == 'r' (where + basename returns either everything after the last '/' in its + argument or its argument is restricted. Also, if SHELL is set on + entry to the shell, and it's basename is "rbash", the shell is + restricted. + + This paragraph applies only to CWRU, or to those who have compiled + the shell with "CWRU" defined. When a shell is determined to be + restricted, and it is a login shell, the file "/etc/rprofile" (and + only that file) is executed. There is no execution of ~/.profile + or ~/.bash_profile. The .bashrc file is executed, but after the + restrictions have been turned on (users may customize their instances + of the shell in this file while not compromising any kind of security + arrangements set up by the administrator). + +2. builtins.c + + cd_builtin was modified to return failure if bash is operating in + `restricted mode', so changing directories is not allowed. + +3. variables.c + + initialize_shell_variables () was modified to make PATH and SHELL + read-only when restricted == 1. These variables may not be unset + in a restricted shell. + +4. flags.c + + The variable `restricted' is now declared here. A new flag `-r', + to turn on restricted mode, has been added. `change_flag' has + been modified to disallow `set +r' if restricted == 1. + +5. execute_cmd.c + + execute_simple_command () was modified to disallow commands and + file names that contain a slash. + + Code was added to do_redirections () and do_redirection() to + disallow output file redirection specifications if restricted is + 1. + +Chet Ramey +Information Network Services, Case Western Reserve University +chet@ins.CWRU.Edu + +(I took almost all of this stuff out again after putting it in.) diff --git a/bash-20060316/CWRU/old/array.doc b/bash-20060316/CWRU/old/array.doc new file mode 100644 index 000000000..1bd14b5e9 --- /dev/null +++ b/bash-20060316/CWRU/old/array.doc @@ -0,0 +1,53 @@ +This describes how bash users create, destroy, assign, and reference array +variables. Array variables are variables whose values are arrays of strings, +and whose elements may be referenced individually. + +CREATING + - any variable may be declared as an array using `typeset -a' + - an ordinary variable may be converted to an array using + `typeset -a'; the value becomes array[0] + + - there is a question of notation used to simultaneously declare + an array variable and populate it with values sequentially, + like ksh does with `set -A'. `set -A' is a horrible choice; + it should be discarded immediately. + + - we can use `typeset -a array [values...]' + +DESTROYING + - `unset name' will destroy the array `name' + - how to treat `typeset +a array'? + - I think we should keep the variable, convert it from an + array to an `ordinary' variable, and make the value at + the smallest index of the array the value of the new + variable + +ASSIGNING + - array[index]=value will serve to assign values to individual + elements of the array + - the subscript can be an arbitrary arithmetic expression; it + will be run through the expression evaluator + - this can create arrays, too + - this is analogous to defining a variable by simply + assigning to it + +REFERENCING + - $array will expand to all elements of the array, just like $* + expands to all the positional parameters + - "$array" is like "$@" + - ${array[index]} is used to reference array element `index', where + `index' can be an arbitrary arithmetic expression + - two special values for `index': * and @ expand to all + elements of the array, just like $* and $@. Quoting + behavior is the same, too + - using a subscript is an error if a variable has not been declared + as an array (is this wise?) + - ${#variable}, if `variable' is an array, expands to the number of + elements in the array + - ${#variable[n]} expands to the length of variable[n]. n + may be an arbitrary arithmetic expression + - ${#variable[*]} and ${#variable[@]} expand to the number of + elements in the array + +OPEN QUESTIONS + - should we allow them to be exported? Ksh does not, but rc does diff --git a/bash-20060316/CWRU/old/fixlib b/bash-20060316/CWRU/old/fixlib new file mode 100755 index 000000000..7d74c086d --- /dev/null +++ b/bash-20060316/CWRU/old/fixlib @@ -0,0 +1,87 @@ + +# This script is for bash-maintainers only! It takes a freshly unpacked Bash, +# and reorganizes it so that there is exactly one version of any given +# source file. +# + +if [ "$0" != "./fixdist" ]; then + echo "You must run 'fixdist' from the 'support' directory!" + exit 1 +fi + +cd ../lib +must_exist="posixheaders/posixstat.h posixheaders/ansi_stdlib.h" +must_exist="$must_exist tilde/tilde.c tilde/tilde.h" +must_exist="$must_exist malloc/xmalloc.c" + +for filename in $must_exist; do + if [ ! -f $filename ]; then + echo "The file lib/$filename doesn't exist, but it must!" + exit 1 + fi +done + +echo -n "Relinking neccessary files in lib/readline..." +cd readline +for filename in tilde.c tilde.h; do + rm $filename + ln -s ../tilde/$filename . +done + +rm posixstat.h && ln -s ../posixheaders/posixstat.h . +rm ansi_stdlib.h && ln -s ../posixheaders/ansi_stdlib.h . +rm xmalloc.c && ln -s ../malloc/xmalloc.c . +echo "done." + +echo -n "Linking files in . ..." +cd ../.. +rm posixstat.h && ln -s lib/posixheaders/posixstat.h . +rm ansi_stdlib.h && ln -s lib/posixheaders/ansi_stdlib.h . +echo "done." + +echo "Should I move the \"lib\" directory to \"../lib\" if I wouldn't" +echo -n "clobber anything by doing so (y/n)? " +read reply +if [ "$reply" != 'y' ]; then + echo "You said no, so in that case I'm all done." + exit 0 +fi + +# Try as hard as we can to move the lib directory to ../lib. +# +if [ -d ../lib ]; then + echo "The directory $(cd ../lib; pwd) already exists. It looks like:" + echo $(cd ../lib; ls -ldg .; ls -lF) + echo "I can:" + echo " 1) Move the directory to another name," + echo " 2) Delete matching directories from within it," + echo " 3) Copy files into existing directories, or" + echo " 4) Quit now, while you are ahead." + echo "" + echo -n "Which will it be? " + read reply + case "$reply" in + 1) + echo "I would be moving the directory to lib-old now" + ;; + 2) + echo "I would be deleting the matching directories now" + ;; + 3) + echo "I would just go ahead and copy the directories now" + ;; + 4) + echo "Probably a good move. Look at the script support/mklinks." + ;; + esac +else + echo -n "Moving lib to ../lib, and relinking lib in this directory..." + mv lib ../lib + mkdir lib + cd lib + ../support/mklinks ../../lib + echo "done." +fi + +echo "That concludes this fixing of the distribution." +exit 0 diff --git a/bash-20060316/CWRU/old/histctl.def b/bash-20060316/CWRU/old/histctl.def new file mode 100644 index 000000000..f319a71f5 --- /dev/null +++ b/bash-20060316/CWRU/old/histctl.def @@ -0,0 +1,110 @@ +This file is histctl.def, from which is created histctl.c. +It implements the builtin "histctl" in Bash. + +Copyright (C) 1987, 1989, 1991, 1992 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 1, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + +$PRODUCES histctl.c + +$BUILTIN histctl +$FUNCTION histctl_builtin +$DEPENDS_ON HISTORY +$SHORT_DOC histctl [-cC] [-iI space|dups|both|none] +Control how lines are saved into the command history. An option +of -c enables command-oriented history, in which all lines of a +compound command are saved as a single history entry. The -i +option permits certain lines to be discarded without being stored +in the history: SPACE means to ignore lines beginning with a space; +DUPS means to ignore lines the same as the last command entered +into the history; BOTH enables SPACE and DUPS; and NONE means to +store all lines. +$END + +#include "../shell.h" + +#if defined (HISTORY) +#include "bashgetopt.h" +#include "../bashhist.h" + +#define HIGNORE_NONE 0x0 +#define HIGNORE_SPACE 0x01 +#define HIGNORE_DUPS 0x02 +#define HIGNORE_BOTH (HIGNORE_SPACE | HIGNORE_DUPS) + +int +histctl_builtin (list) + WORD_LIST *list; +{ + int opt; + char *spec; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "CcI:i:")) != -1) + { + switch (opt) + { + case 'c': + command_oriented_history++; + break; + case 'C': + command_oriented_history = 0; + break; + case 'i': + spec = list_optarg; + if (strcmp (spec, "none") == 0) + history_control = HIGNORE_NONE; + else if (strcmp (spec, "space") == 0) + history_control |= HIGNORE_SPACE; + else if (strcmp (spec, "dups") == 0) + history_control |= HIGNORE_DUPS; + else if (strcmp (spec, "both") == 0) + history_control |= HIGNORE_BOTH; + else + { + builtin_error ("invalid argument to -i: %s", spec); + builtin_error ("usage: histctl [-cC] [-iI space|dups|both|none]"); + return (EX_USAGE); + } + break; + case 'I': + spec = list_optarg; + if (strcmp (spec, "none") == 0) + history_control = HIGNORE_NONE; + else if (strcmp (spec, "space") == 0) + history_control &= ~HIGNORE_SPACE; + else if (strcmp (spec, "dups") == 0) + history_control &= ~HIGNORE_DUPS; + else if (strcmp (spec, "both") == 0) + history_control &= ~HIGNORE_BOTH; + else + { + builtin_error ("invalid argument to -I: %s", spec); + builtin_error ("usage: histctl [-cC] [-iI space|dups|both|none]"); + return (EX_USAGE); + } + break; + default: + report_bad_option (); + builtin_error ("usage: histctl [-cC] [-iI space|dups|both|none]"); + return (EX_USAGE); + } + } + + return (EXECUTION_SUCCESS); +} +#endif /* HISTORY */ diff --git a/bash-20060316/CWRU/old/longsig.c b/bash-20060316/CWRU/old/longsig.c new file mode 100644 index 000000000..56ec91ca1 --- /dev/null +++ b/bash-20060316/CWRU/old/longsig.c @@ -0,0 +1,50 @@ +/* The answer to this question is 24. */ +#include +#include +#include +#include "siglist.h" + +/* Copyright (C) 1987,1989 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 1, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + +main (argc, argv) + int argc; + char **argv; +{ + int longest, length = 0; + int i; + + for (i = 0; i < NSIG; i++) + { + printf ("%2d) %s\n", i, sys_siglist[i]); + if (strlen (sys_siglist[i]) > length) + { + longest = i; + length = strlen (sys_siglist[i]); + } + } + + printf ("The longest name is %d:\"%s\", which is %d chars in length.\n", + longest, sys_siglist[longest], length); +} + +/* + * Local variables: + * compile-command: "cc -o longest_sig longest_sig.c" + * end: + */ diff --git a/bash-20060316/CWRU/old/mklinks b/bash-20060316/CWRU/old/mklinks new file mode 100755 index 000000000..612aa99ae --- /dev/null +++ b/bash-20060316/CWRU/old/mklinks @@ -0,0 +1,41 @@ + +# Yet another script which requires an already built Bash. +# +# This makes links in the current directory to the directory specified as +# the first argument. +# + +topdir=$1 + +if [ ! "$topdir" ]; then + echo "No directory specified. Read the script $0." + exit 1 +fi + +function clone_files () +{ + local dir=$1; + local files; + + files=$(cd $dir; echo *); + + if [ ! "$files" ]; then + return 0; + fi + + for filename in $files; do + if [ -d $dir/$filename ]; then + # If the file to clone is this directory, then skip it. + if [ $(cd $dir/$filename; pwd) = $(pwd) ]; then + continue; + fi + mkdir $filename; + (cd $filename; clone_files ../$dir/$filename) + else + ln -s $dir/$filename .; + fi + done + rm -f \#* *~ .*~ *.bak .*.bak *.tmp .*.tmp *.o core a.out; +} + +clone_files $topdir diff --git a/bash-20060316/CWRU/old/mktarfile b/bash-20060316/CWRU/old/mktarfile new file mode 100755 index 000000000..88097f5db --- /dev/null +++ b/bash-20060316/CWRU/old/mktarfile @@ -0,0 +1,74 @@ +#!/bin/sh +# How to make a distribution tarfile. +# +# $1 is the name of the program. +# $2 is the version number. +# Remaining args are files to tar. +# Optional argument of "~+notar" means don't create the actual tar file, +# just create the symlinked directory. + +tar_inhibited="" +if [ "$1" = "+notar" ]; then + tar_inhibited=yes + shift +fi + +PROGRAM=$1 +VERSION=$2 + +if [ "$PROGRAM" = "" -o "$VERSION" = "" ]; then + echo "Usage: mktarfile [+notar] " + echo "Using the \`+notar' option causes a clone directory to be made." + exit 2; +fi + +shift; shift + +TARFILE=$PROGRAM.tar +TARDIR=$PROGRAM-$VERSION + +# Delete the tarfile if we are to create it. +if [ ! "tar_inhibited" ]; then + rm -rf $TARFILE +fi + +# Delete the destination directory if it already exists. +rm -rf $TARDIR + +# Make the destination directory. +echo "Making directory $TARDIR..." +mkdir $TARDIR + +topdir=`pwd` +where_I_am=$TARDIR + +trap "cd $topdir" 3 + +for i in $*; do + filename=$i + while [ "$filename" ]; do + remainder=`echo $filename | sed 's@[-_a-zA-Z~0-9.]*/@@'` + dir=`echo $filename | sed "s@$remainder\\\$@@" | sed "s@/@@"` + if [ "$dir" ]; then + if [ ! -d $where_I_am/$dir ]; then + echo "Making directory $where_I_am/$dir..." + mkdir $where_I_am/$dir + fi + cd $where_I_am/$dir; where_I_am=`pwd` + filename=$remainder + else + break + fi + done + cd $topdir; where_I_am=$TARDIR + ln -s $topdir/$i $TARDIR/$i +done + +if [ ! "$tar_inhibited" ]; then + echo "tar -chf $TARFILE $TARDIR" + tar -chf $TARFILE $TARDIR + echo "rm -rf $TARDIR" + rm -rf $TARDIR +fi + +exit 0 diff --git a/bash-20060316/CWRU/old/mkversion.c b/bash-20060316/CWRU/old/mkversion.c new file mode 100644 index 000000000..8164a8fec --- /dev/null +++ b/bash-20060316/CWRU/old/mkversion.c @@ -0,0 +1,305 @@ +/* Simple program to make new version numbers for the shell. + Big deal, but it was getting out of hand to do everything + in the makefile. */ + +/* Copyright (C) 1989 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 1, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#include "config.h" + +#include +#include "posixstat.h" +#include +#include "bashansi.h" + +char *progname; +char *dir; +char *status; + +FILE *must_open (); + +main (argc, argv) + int argc; + char **argv; +{ + FILE *file; + float distver = 0.0; + int buildver = 0, patchlevel = 0; + int dist = 0, build = 0, patch = 0; + int dist_inc = 0, build_inc = 0, patch_inc = 0; + int dot_dist_needs_making = 0; + int arg_index = 1; + struct stat sb; + + progname = argv[0]; + + status = dir = (char *)0; + while (arg_index < argc && argv[arg_index][0] == '-') + { + if (strcmp (argv[arg_index], "-dist") == 0) + { + dist++; + dist_inc++; + } + else if (strcmp (argv[arg_index], "-build") == 0) + { + build++; + build_inc++; + } + else if (strcmp (argv[arg_index], "-patch") == 0) + { + patch++; + patch_inc++; + } + else if (strcmp (argv[arg_index], "-dir") == 0) + { + dir = argv[++arg_index]; + if (dir == 0) + { + fprintf (stderr, "%s: `-dir' requires an argument\n", progname); + exit (1); + } + if (stat (dir, &sb) < 0) + { + fprintf (stderr, "%s: cannot stat %s\n", progname, dir); + exit (1); + } + if ((sb.st_mode & S_IFMT) != S_IFDIR) + { + fprintf (stderr, "%s: not a directory\n", progname); + exit (1); + } + } + else if (strcmp (argv[arg_index], "-status") == 0) + { + status = argv[++arg_index]; + if (status == 0) + { + fprintf (stderr, "%s: `-status' requires an argument\n", progname); + exit (1); + } + } + else + { + fprintf (stderr, "%s: unknown option: %s\n", progname, argv[arg_index]); + fprintf (stderr, "usage: %s [-dist|-patch|-build] [-dir directory]\n", progname); + exit (1); + } + arg_index++; + } + + if (get_float_from_file (".distribution", &distver, 1) == 0) + dot_dist_needs_making++; + + if (get_int_from_file (".patchlevel", &patchlevel, 1) == 0) + { + patchlevel = 0; + patch_inc = 0; + } + + if (get_int_from_file (".build", &buildver, 0) == 0) + buildver = 0; + + /* Setting distribution version. */ + if (dist && arg_index < argc) + if (sscanf (argv[arg_index], "%f", &distver) != 1) + { + fprintf (stderr, "%s: Bad input `%s'. Expected float value for -dist.\n", + progname, argv[arg_index]); + exit (1); + } + else + { + arg_index++; + dist_inc = 0; + } + + /* Setting patchlevel via argument. */ + if (patch && arg_index < argc) + if (sscanf (argv[arg_index], "%d", &patchlevel) != 1) + { + fprintf (stderr, "%s: Bad input `%s'. Expected int value for -patch.\n", + progname, argv[arg_index]); + exit (1); + } + else + { + arg_index++; + patch_inc = 0; + } + + if (build && arg_index < argc) + if (sscanf (argv[arg_index], "%d", &buildver) != 1) + { + fprintf (stderr, "%s: Bad input `%s'. Expected int value for -build.\n", + progname, argv[arg_index]); + exit (1); + } + else + { + arg_index++; + build_inc = 0; + } + + if (dot_dist_needs_making && !distver) + { + fprintf (stderr, "%s: There is no `.distribution' file to infer from.\n", progname); + exit (1); + } + + if (dist_inc) + distver = distver + 0.01; + + if (patch_inc) + patchlevel++; + + if (build_inc) + buildver++; + + file = must_open ("newversion.h", "w"); + + /* Output the leading comment. */ + fprintf (file, +"/* Version control for the shell. This file gets changed when you say\n\ + `make newversion' to the Makefile. It is created by mkversion. */\n"); + + fprintf (file, "\n/* The distribution version number of this shell. */\n"); + fprintf (file, "#define DISTVERSION \"%.2f\"\n", distver); + + fprintf (file, "\n/* The patch level of this version of the shell. */\n"); + fprintf (file, "#define PATCHLEVEL %d\n", patchlevel); + + fprintf (file, "\n/* The last built version of this shell. */\n"); + fprintf (file, "#define BUILDVERSION %d\n", buildver); + + if (status) + { + fprintf (file, "\n/* The release status of this shell. */\n"); + fprintf (file, "#define RELSTATUS \"%s\"\n", status); + } + + fprintf (file, "\n/* A version string for use by sccs and the what command. */\n\n"); + if (status) + fprintf (file, "#define SCCSVERSION \"@(#)Bash version %.2f.%d(%d) %s GNU\"\n\n", + distver, patchlevel, buildver, status); + else + fprintf (file, "#define SCCSVERSION \"@(#)Bash version %.2f.%d(%d) GNU\"\n\n", + distver, patchlevel, buildver); + + fclose (file); + + file = must_open (".build", "w"); + fprintf (file, "%d\n", buildver); + fclose (file); + + /* Making a new distribution. */ + if (dist) + { + file = must_open (".distribution", "w"); + fprintf (file, "%.2f\n", distver); + fclose (file); + } + + /* Releasing a new patch level. */ + if (patch) + { + file = must_open (".patchlevel", "w"); + fprintf (file, "%d\n", patchlevel); + fclose (file); + } + + exit (0); +} + +char * +makename (fn, from_srcdir) + char *fn; +{ + char *ret; + int dlen; + + dlen = (from_srcdir && dir) ? strlen (dir) + 1 : 0; + ret = (char *)malloc (dlen + strlen (fn) + 1); + if (ret == 0) + { + fprintf (stderr, "%s: malloc failed\n", progname); + exit (1); + } + if (from_srcdir && dir) + sprintf (ret, "%s/%s", dir, fn); + else + (void)strcpy (ret, fn); + + return ret; +} + +get_float_from_file (filename, var, from_srcdir) + char *filename; + float *var; + int from_srcdir; +{ + FILE *stream; + int result; + char *name; + + name = makename (filename, from_srcdir); + stream = fopen (name, "r"); + free (name); + if (stream == (FILE *)NULL) + return (0); + result = fscanf (stream, "%f\n", var); + fclose (stream); + return (result == 1); +} + +get_int_from_file (filename, var, from_srcdir) + char *filename; + int *var, from_srcdir; +{ + FILE *stream; + int result; + char *name; + + name = makename (filename, from_srcdir); + stream = fopen (name, "r"); + free (name); + if (stream == (FILE *)NULL) + return (0); + result = fscanf (stream, "%d\n", var); + fclose (stream); + return (result == 1); +} + +FILE * +must_open (name, mode) + char *name, *mode; +{ + FILE *temp = fopen (name, mode); + + if (!temp) + { + fprintf (stderr, "%s: Cannot open `%s' for mode `%s'.\n", + progname, name, mode); + fprintf + (stderr, + "Perhaps you don't have %s permission to the file or directory.\n", + (strcmp (mode, "w") == 0) ? "write" : "read"); + exit (3); + } + return (temp); +} diff --git a/bash-20060316/CWRU/old/pagesize.c b/bash-20060316/CWRU/old/pagesize.c new file mode 100644 index 000000000..ee2baa30b --- /dev/null +++ b/bash-20060316/CWRU/old/pagesize.c @@ -0,0 +1,64 @@ +/* + * getpagesize - print the system pagesize + * + * Chet Ramey + * chet@ins.cwru.edu + */ + +#include + +/* + * I know these systems have getpagesize(2) + */ + +#if defined (Bsd) || defined (Ultrix) || defined (sun) +# define HAVE_GETPAGESIZE +#endif + +#if !defined (HAVE_GETPAGESIZE) + +#if defined (HAVE_UNISTD_H) +# include +# if defined (_SC_PAGESIZE) +# define getpagesize() sysconf(_SC_PAGESIZE) +# endif /* _SC_PAGESIZE */ +#endif + +#if !defined (getpagesize) +# include +# if defined (PAGESIZE) +# define getpagesize() PAGESIZE +# else /* !PAGESIZE */ +# if defined (EXEC_PAGESIZE) +# define getpagesize() EXEC_PAGESIZE +# else /* !EXEC_PAGESIZE */ +# if defined (NBPG) +# if !defined (CLSIZE) +# define CLSIZE 1 +# endif /* !CLSIZE */ +# define getpagesize() (NBPG * CLSIZE) +# else /* !NBPG */ +# if defined (NBPC) +# define getpagesize() NBPC +# endif /* NBPC */ +# endif /* !NBPG */ +# endif /* !EXEC_PAGESIZE */ +# endif /* !PAGESIZE */ +#endif /* !getpagesize */ + +#if !defined (getpagesize) +# define getpagesize() 4096 /* Just punt and use reasonable value */ +#endif + +#endif /* no EXEC_PAGESIZE */ + +#endif /* not HAVE_GETPAGESIZE */ + +main() +{ +#if defined (HAVE_GETPAGESIZE) || defined (getpagesize) + printf ("%ld\n", getpagesize ()); +#else + puts ("1024"); +#endif +} diff --git a/bash-20060316/CWRU/old/pagesize.sh b/bash-20060316/CWRU/old/pagesize.sh new file mode 100755 index 000000000..08a29355f --- /dev/null +++ b/bash-20060316/CWRU/old/pagesize.sh @@ -0,0 +1,20 @@ +#! /bin/sh +# +# pagesize.sh -- determine this system's page size, and write a define to +# lib/malloc/pagesize.h for the Gnu malloc's valloc(). + +echo "/*" +echo " * pagesize.h" +echo " *" +echo " * This file is automatically generated by pagesize.sh" +echo " * Do not edit!" +echo " */" +echo "" + +if [ -x /bin/pagesize ]; then + echo "#define getpagesize() `/bin/pagesize`" +else + echo "#define getpagesize() `./support/pagesize.aux`" +fi + +exit 0 diff --git a/bash-20060316/CWRU/old/parse.y.noctlnul b/bash-20060316/CWRU/old/parse.y.noctlnul new file mode 100644 index 000000000..1e8921a72 --- /dev/null +++ b/bash-20060316/CWRU/old/parse.y.noctlnul @@ -0,0 +1,3163 @@ +/* Yacc grammar for bash. */ + +/* Copyright (C) 1989 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 1, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file LICENSE. If not, write to the Free Software + Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + +%{ +#include "config.h" + +#include "bashtypes.h" +#include "bashansi.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include +#include + +#include "shell.h" +#include "trap.h" +#include "flags.h" +#include "input.h" +#include "mailcheck.h" +#include "builtins/common.h" +#include "builtins/builtext.h" + +#if defined (READLINE) +# include "bashline.h" +# include +#endif /* READLINE */ + +#if defined (HISTORY) +# include "bashhist.h" +# include +#endif /* HISTORY */ + +#if defined (JOB_CONTROL) +# include "jobs.h" +#endif /* JOB_CONTROL */ + +#if defined (ALIAS) +# include "alias.h" +#endif /* ALIAS */ + +#if defined (PROMPT_STRING_DECODE) +#include +#include +#include "maxpath.h" +#endif /* PROMPT_STRING_DECODE */ + +#define RE_READ_TOKEN -99 +#define NO_EXPANSION -100 + +#define YYDEBUG 1 +extern int eof_encountered; +extern int no_line_editing, running_under_emacs; +extern int current_command_number; +extern int interactive, interactive_shell, login_shell; +extern int posixly_correct; +extern int last_command_exit_value; +extern int interrupt_immediately; +extern char *shell_name, *current_host_name; +extern Function *last_shell_builtin, *this_shell_builtin; +#if defined (BUFFERED_INPUT) +extern int bash_input_fd_changed; +#endif + +/* **************************************************************** */ +/* */ +/* "Forward" declarations */ +/* */ +/* **************************************************************** */ + +static int reserved_word_acceptable (); +static int read_token (); +static int yylex (); +static int read_token_word (); +static void discard_parser_constructs (); + +static void report_syntax_error (); +static void handle_eof_input_unit (); +static void prompt_again (); +static void reset_readline_prompt (); +static void print_prompt (); + +/* PROMPT_STRING_POINTER points to one of these, never to an actual string. */ +char *ps1_prompt, *ps2_prompt; + +/* Handle on the current prompt string. Indirectly points through + ps1_ or ps2_prompt. */ +char **prompt_string_pointer = (char **)NULL; +char *current_prompt_string; + +/* If non-zero, the decoded prompt string undergoes parameter and + variable substitution, command substitution, arithmetic substitution, + string expansion, process substitution, and quote removal in + decode_prompt_string. */ +int promptvars = 1; + +/* The decoded prompt string. Used if READLINE is not defined or if + editing is turned off. Analogous to current_readline_prompt. */ +static char *current_decoded_prompt; + +/* The number of lines read from input while creating the current command. */ +int current_command_line_count; + +/* Variables to manage the task of reading here documents, because we need to + defer the reading until after a complete command has been collected. */ +static REDIRECT *redir_stack[10]; +int need_here_doc; + +/* Where shell input comes from. History expansion is performed on each + line when the shell is interactive. */ +static char *shell_input_line = (char *)NULL; +static int shell_input_line_index = 0; +static int shell_input_line_size = 0; /* Amount allocated for shell_input_line. */ +static int shell_input_line_len = 0; /* strlen (shell_input_line) */ + +/* Either zero or EOF. */ +static int shell_input_line_terminator = 0; + +static REDIRECTEE redir; +%} + +%union { + WORD_DESC *word; /* the word that we read. */ + int number; /* the number that we read. */ + WORD_LIST *word_list; + COMMAND *command; + REDIRECT *redirect; + ELEMENT element; + PATTERN_LIST *pattern; +} + +/* Reserved words. Members of the first group are only recognized + in the case that they are preceded by a list_terminator. Members + of the second group are recognized only under special circumstances. */ +%token IF THEN ELSE ELIF FI CASE ESAC FOR SELECT WHILE UNTIL DO DONE FUNCTION +%token IN BANG TIME + +/* More general tokens. yylex () knows how to make these. */ +%token WORD ASSIGNMENT_WORD +%token NUMBER +%token AND_AND OR_OR GREATER_GREATER LESS_LESS LESS_AND +%token GREATER_AND SEMI_SEMI LESS_LESS_MINUS AND_GREATER LESS_GREATER +%token GREATER_BAR + +/* The types that the various syntactical units return. */ + +%type inputunit command pipeline pipeline_command +%type list list0 list1 compound_list simple_list simple_list1 +%type simple_command shell_command +%type for_command select_command case_command group_command +%type function_def if_command elif_clause subshell +%type redirection redirection_list +%type simple_command_element +%type word_list pattern +%type pattern_list case_clause_sequence case_clause + +%start inputunit + +%left '&' ';' '\n' yacc_EOF +%left AND_AND OR_OR +%right '|' +%% + +inputunit: simple_list '\n' + { + /* Case of regular command. Discard the error + safety net,and return the command just parsed. */ + global_command = $1; + eof_encountered = 0; + discard_parser_constructs (0); + YYACCEPT; + } + | '\n' + { + /* Case of regular command, but not a very + interesting one. Return a NULL command. */ + global_command = (COMMAND *)NULL; + YYACCEPT; + } + | + error '\n' + { + /* Error during parsing. Return NULL command. */ + global_command = (COMMAND *)NULL; + eof_encountered = 0; + discard_parser_constructs (1); + if (interactive) + { + YYACCEPT; + } + else + { + YYABORT; + } + } + | yacc_EOF + { + /* Case of EOF seen by itself. Do ignoreeof or + not. */ + global_command = (COMMAND *)NULL; + handle_eof_input_unit (); + YYACCEPT; + } + ; + +word_list: WORD + { $$ = make_word_list ($1, (WORD_LIST *)NULL); } + | word_list WORD + { $$ = make_word_list ($2, $1); } + ; + +redirection: '>' WORD + { + redir.filename = $2; + $$ = make_redirection (1, r_output_direction, redir); + } + | '<' WORD + { + redir.filename = $2; + $$ = make_redirection (0, r_input_direction, redir); + } + | NUMBER '>' WORD + { + redir.filename = $3; + $$ = make_redirection ($1, r_output_direction, redir); + } + | NUMBER '<' WORD + { + redir.filename = $3; + $$ = make_redirection ($1, r_input_direction, redir); + } + | GREATER_GREATER WORD + { + redir.filename = $2; + $$ = make_redirection (1, r_appending_to, redir); + } + | NUMBER GREATER_GREATER WORD + { + redir.filename = $3; + $$ = make_redirection ($1, r_appending_to, redir); + } + | LESS_LESS WORD + { + redir.filename = $2; + $$ = make_redirection (0, r_reading_until, redir); + redir_stack[need_here_doc++] = $$; + } + | NUMBER LESS_LESS WORD + { + redir.filename = $3; + $$ = make_redirection ($1, r_reading_until, redir); + redir_stack[need_here_doc++] = $$; + } + | LESS_AND NUMBER + { + redir.dest = $2; + $$ = make_redirection (0, r_duplicating_input, redir); + } + | NUMBER LESS_AND NUMBER + { + redir.dest = $3; + $$ = make_redirection ($1, r_duplicating_input, redir); + } + | GREATER_AND NUMBER + { + redir.dest = $2; + $$ = make_redirection (1, r_duplicating_output, redir); + } + | NUMBER GREATER_AND NUMBER + { + redir.dest = $3; + $$ = make_redirection ($1, r_duplicating_output, redir); + } + | LESS_AND WORD + { + redir.filename = $2; + $$ = make_redirection (0, r_duplicating_input_word, redir); + } + | NUMBER LESS_AND WORD + { + redir.filename = $3; + $$ = make_redirection ($1, r_duplicating_input_word, redir); + } + | GREATER_AND WORD + { + redir.filename = $2; + $$ = make_redirection (1, r_duplicating_output_word, redir); + } + | NUMBER GREATER_AND WORD + { + redir.filename = $3; + $$ = make_redirection ($1, r_duplicating_output_word, redir); + } + | LESS_LESS_MINUS WORD + { + redir.filename = $2; + $$ = make_redirection + (0, r_deblank_reading_until, redir); + redir_stack[need_here_doc++] = $$; + } + | NUMBER LESS_LESS_MINUS WORD + { + redir.filename = $3; + $$ = make_redirection + ($1, r_deblank_reading_until, redir); + redir_stack[need_here_doc++] = $$; + } + | GREATER_AND '-' + { + redir.dest = 0L; + $$ = make_redirection (1, r_close_this, redir); + } + | NUMBER GREATER_AND '-' + { + redir.dest = 0L; + $$ = make_redirection ($1, r_close_this, redir); + } + | LESS_AND '-' + { + redir.dest = 0L; + $$ = make_redirection (0, r_close_this, redir); + } + | NUMBER LESS_AND '-' + { + redir.dest = 0L; + $$ = make_redirection ($1, r_close_this, redir); + } + | AND_GREATER WORD + { + redir.filename = $2; + $$ = make_redirection (1, r_err_and_out, redir); + } + | NUMBER LESS_GREATER WORD + { + redir.filename = $3; + $$ = make_redirection ($1, r_input_output, redir); + } + | LESS_GREATER WORD + { + redir.filename = $2; + $$ = make_redirection (0, r_input_output, redir); + } + | GREATER_BAR WORD + { + redir.filename = $2; + $$ = make_redirection (1, r_output_force, redir); + } + | NUMBER GREATER_BAR WORD + { + redir.filename = $3; + $$ = make_redirection ($1, r_output_force, redir); + } + ; + +simple_command_element: WORD + { $$.word = $1; $$.redirect = 0; } + | ASSIGNMENT_WORD + { $$.word = $1; $$.redirect = 0; } + | redirection + { $$.redirect = $1; $$.word = 0; } + ; + +redirection_list: redirection + { + $$ = $1; + } + | redirection_list redirection + { + register REDIRECT *t; + + for (t = $1; t->next; t = t->next) + ; + t->next = $2; + $$ = $1; + } + ; + +simple_command: simple_command_element + { $$ = make_simple_command ($1, (COMMAND *)NULL); } + | simple_command simple_command_element + { $$ = make_simple_command ($2, $1); } + ; + +command: simple_command + { $$ = clean_simple_command ($1); } + | shell_command + { $$ = $1; } + | shell_command redirection_list + { + COMMAND *tc; + + tc = $1; + /* According to Posix.2 3.9.5, redirections + specified after the body of a function should + be attached to the function and performed when + the function is executed, not as part of the + function definition command. */ + if (tc->type == cm_function_def) + { + tc = tc->value.Function_def->command; + if (tc->type == cm_group) + tc = tc->value.Group->command; + } + if (tc->redirects) + { + register REDIRECT *t; + for (t = tc->redirects; t->next; t = t->next) + ; + t->next = $2; + } + else + tc->redirects = $2; + $$ = $1; + } + ; + +shell_command: for_command + { $$ = $1; } + | case_command + { $$ = $1; } + | WHILE list DO list DONE + { $$ = make_while_command ($2, $4); } + | UNTIL list DO list DONE + { $$ = make_until_command ($2, $4); } + | select_command + { $$ = $1; } + | if_command + { $$ = $1; } + | subshell + { $$ = $1; } + | group_command + { $$ = $1; } + | function_def + { $$ = $1; } + ; + +for_command: FOR WORD newline_list DO list DONE + { $$ = make_for_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $5); } + | FOR WORD newline_list '{' list '}' + { $$ = make_for_command ($2, add_string_to_list ("$@", (WORD_LIST *)NULL), $5); } + | FOR WORD ';' newline_list DO list DONE + { $$ = make_for_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $6); } + | FOR WORD ';' newline_list '{' list '}' + { $$ = make_for_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $6); } + | FOR WORD newline_list IN word_list list_terminator newline_list DO list DONE + { $$ = make_for_command ($2, REVERSE_LIST ($5, WORD_LIST *), $9); } + | FOR WORD newline_list IN word_list list_terminator newline_list '{' list '}' + { $$ = make_for_command ($2, REVERSE_LIST ($5, WORD_LIST *), $9); } + ; + +select_command: SELECT WORD newline_list DO list DONE + { + $$ = make_select_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $5); + } + | SELECT WORD newline_list '{' list '}' + { + $$ = make_select_command ($2, add_string_to_list ("$@", (WORD_LIST *)NULL), $5); + } + | SELECT WORD ';' newline_list DO list DONE + { + $$ = make_select_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $6); + } + | SELECT WORD ';' newline_list '{' list '}' + { + $$ = make_select_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $6); + } + | SELECT WORD newline_list IN word_list list_terminator newline_list DO list DONE + { + $$ = make_select_command ($2, (WORD_LIST *)reverse_list ($5), $9); + } + | SELECT WORD newline_list IN word_list list_terminator newline_list '{' list '}' + { + $$ = make_select_command ($2, (WORD_LIST *)reverse_list ($5), $9); + } + ; + +case_command: CASE WORD newline_list IN newline_list ESAC + { $$ = make_case_command ($2, (PATTERN_LIST *)NULL); } + | CASE WORD newline_list IN case_clause_sequence newline_list ESAC + { $$ = make_case_command ($2, $5); } + | CASE WORD newline_list IN case_clause ESAC + { $$ = make_case_command ($2, $5); } + ; + +function_def: WORD '(' ')' newline_list group_command + { $$ = make_function_def ($1, $5); } + + | FUNCTION WORD '(' ')' newline_list group_command + { $$ = make_function_def ($2, $6); } + + | FUNCTION WORD newline_list group_command + { $$ = make_function_def ($2, $4); } + ; + +subshell: '(' compound_list ')' + { $2->flags |= CMD_WANT_SUBSHELL; $$ = $2; } + ; + +if_command: IF list THEN list FI + { $$ = make_if_command ($2, $4, (COMMAND *)NULL); } + | IF list THEN list ELSE list FI + { $$ = make_if_command ($2, $4, $6); } + | IF list THEN list elif_clause FI + { $$ = make_if_command ($2, $4, $5); } + ; + + +group_command: '{' list '}' + { $$ = make_group_command ($2); } + ; + +elif_clause: ELIF list THEN list + { $$ = make_if_command ($2, $4, (COMMAND *)NULL); } + | ELIF list THEN list ELSE list + { $$ = make_if_command ($2, $4, $6); } + | ELIF list THEN list elif_clause + { $$ = make_if_command ($2, $4, $5); } + ; + +case_clause: pattern_list + | case_clause_sequence pattern_list + { $2->next = $1; $$ = $2; } + ; + +pattern_list: newline_list pattern ')' compound_list + { $$ = make_pattern_list ($2, $4); } + | newline_list pattern ')' newline_list + { $$ = make_pattern_list ($2, (COMMAND *)NULL); } + | newline_list '(' pattern ')' compound_list + { $$ = make_pattern_list ($3, $5); } + | newline_list '(' pattern ')' newline_list + { $$ = make_pattern_list ($3, (COMMAND *)NULL); } + ; + +case_clause_sequence: pattern_list SEMI_SEMI + | case_clause_sequence pattern_list SEMI_SEMI + { $2->next = $1; $$ = $2; } + ; + +pattern: WORD + { $$ = make_word_list ($1, (WORD_LIST *)NULL); } + | pattern '|' WORD + { $$ = make_word_list ($3, $1); } + ; + +/* A list allows leading or trailing newlines and + newlines as operators (equivalent to semicolons). + It must end with a newline or semicolon. + Lists are used within commands such as if, for, while. */ + +list: newline_list list0 + { + $$ = $2; + if (need_here_doc) + gather_here_documents (); + } + ; + +compound_list: list + | newline_list list1 + { + $$ = $2; + } + ; + +list0: list1 '\n' newline_list + | list1 '&' newline_list + { + if ($1->type == cm_connection) + $$ = connect_async_list ($1, (COMMAND *)NULL, '&'); + else + $$ = command_connect ($1, (COMMAND *)NULL, '&'); + } + | list1 ';' newline_list + + ; + +list1: list1 AND_AND newline_list list1 + { $$ = command_connect ($1, $4, AND_AND); } + | list1 OR_OR newline_list list1 + { $$ = command_connect ($1, $4, OR_OR); } + | list1 '&' newline_list list1 + { + if ($1->type == cm_connection) + $$ = connect_async_list ($1, $4, '&'); + else + $$ = command_connect ($1, $4, '&'); + } + | list1 ';' newline_list list1 + { $$ = command_connect ($1, $4, ';'); } + | list1 '\n' newline_list list1 + { $$ = command_connect ($1, $4, ';'); } + | pipeline_command + { $$ = $1; } + ; + +list_terminator:'\n' + | ';' + | yacc_EOF + ; + +newline_list: + | newline_list '\n' + ; + +/* A simple_list is a list that contains no significant newlines + and no leading or trailing newlines. Newlines are allowed + only following operators, where they are not significant. + + This is what an inputunit consists of. */ + +simple_list: simple_list1 + { + $$ = $1; + if (need_here_doc) + gather_here_documents (); + } + | simple_list1 '&' + { + if ($1->type == cm_connection) + $$ = connect_async_list ($1, (COMMAND *)NULL, '&'); + else + $$ = command_connect ($1, (COMMAND *)NULL, '&'); + if (need_here_doc) + gather_here_documents (); + } + | simple_list1 ';' + { + $$ = $1; + if (need_here_doc) + gather_here_documents (); + } + ; + +simple_list1: simple_list1 AND_AND newline_list simple_list1 + { $$ = command_connect ($1, $4, AND_AND); } + | simple_list1 OR_OR newline_list simple_list1 + { $$ = command_connect ($1, $4, OR_OR); } + | simple_list1 '&' simple_list1 + { + if ($1->type == cm_connection) + $$ = connect_async_list ($1, $3, '&'); + else + $$ = command_connect ($1, $3, '&'); + } + | simple_list1 ';' simple_list1 + { $$ = command_connect ($1, $3, ';'); } + + | pipeline_command + { $$ = $1; } + ; + +pipeline_command: pipeline + { $$ = $1; } + | BANG pipeline + { + $2->flags |= CMD_INVERT_RETURN; + $$ = $2; + } + | TIME pipeline + { + $2->flags |= CMD_TIME_PIPELINE; + $$ = $2; + } + | TIME BANG pipeline + { + $3->flags |= CMD_TIME_PIPELINE|CMD_INVERT_RETURN; + $$ = $3; + } + | BANG TIME pipeline + { + $3->flags |= CMD_TIME_PIPELINE|CMD_INVERT_RETURN; + $$ = $3; + } + ; + +pipeline: + pipeline '|' newline_list pipeline + { $$ = command_connect ($1, $4, '|'); } + | command + { $$ = $1; } + ; +%% + +/* Initial size to allocate for tokens, and the + amount to grow them by. */ +#define TOKEN_DEFAULT_GROW_SIZE 512 + +/* Shell meta-characters that, when unquoted, separate words. */ +#define shellmeta(c) (strchr ("()<>;&|", (c)) != 0) +#define shellbreak(c) (strchr ("()<>;&| \t\n", (c)) != 0) +#define shellquote(c) ((c) == '"' || (c) == '`' || (c) == '\'') + +/* The token currently being read. */ +static int current_token = 0; + +/* The last read token, or NULL. read_token () uses this for context + checking. */ +static int last_read_token = 0; + +/* The token read prior to last_read_token. */ +static int token_before_that = 0; + +/* The token read prior to token_before_that. */ +static int two_tokens_ago; + +/* If non-zero, it is the token that we want read_token to return + regardless of what text is (or isn't) present to be read. This + is reset by read_token. If token_to_read == WORD or + ASSIGNMENT_WORD, yylval.word should be set to word_desc_to_read. */ +static int token_to_read; +static WORD_DESC *word_desc_to_read; + +/* Global var is non-zero when end of file has been reached. */ +int EOF_Reached = 0; + +/* yy_getc () returns the next available character from input or EOF. + yy_ungetc (c) makes `c' the next character to read. + init_yy_io (get, unget, type, location) makes the function GET the + installed function for getting the next character, makes UNGET the + installed function for un-getting a character, sets the type of stream + (either string or file) from TYPE, and makes LOCATION point to where + the input is coming from. */ + +/* Unconditionally returns end-of-file. */ +int +return_EOF () +{ + return (EOF); +} + +/* Variable containing the current get and unget functions. + See ./input.h for a clearer description. */ +BASH_INPUT bash_input; + +/* Set all of the fields in BASH_INPUT to NULL. */ +void +initialize_bash_input () +{ + bash_input.type = st_none; + bash_input.name = (char *)NULL; + bash_input.location.file = (FILE *)NULL; + bash_input.location.string = (char *)NULL; + bash_input.getter = (Function *)NULL; + bash_input.ungetter = (Function *)NULL; +} + +/* Set the contents of the current bash input stream from + GET, UNGET, TYPE, NAME, and LOCATION. */ +void +init_yy_io (get, unget, type, name, location) + Function *get, *unget; + int type; + char *name; + INPUT_STREAM location; +{ + bash_input.type = type; + FREE (bash_input.name); + + if (name) + bash_input.name = savestring (name); + else + bash_input.name = (char *)NULL; + + /* XXX */ +#if defined (CRAY) + memcpy((char *)&bash_input.location.string, (char *)&location.string, sizeof(location)); +#else + bash_input.location = location; +#endif + bash_input.getter = get; + bash_input.ungetter = unget; +} + +/* Call this to get the next character of input. */ +int +yy_getc () +{ + return (*(bash_input.getter)) (); +} + +/* Call this to unget C. That is, to make C the next character + to be read. */ +int +yy_ungetc (c) + int c; +{ + return (*(bash_input.ungetter)) (c); +} + +#if defined (BUFFERED_INPUT) +int +input_file_descriptor () +{ + switch (bash_input.type) + { + case st_stream: + return (fileno (bash_input.location.file)); + case st_bstream: + return (bash_input.location.buffered_fd); + case st_stdin: + default: + return (fileno (stdin)); + } +} +#endif /* BUFFERED_INPUT */ + +/* **************************************************************** */ +/* */ +/* Let input be read from readline (). */ +/* */ +/* **************************************************************** */ + +#if defined (READLINE) +char *current_readline_prompt = (char *)NULL; +char *current_readline_line = (char *)NULL; +int current_readline_line_index = 0; + +static int +yy_readline_get () +{ + SigHandler *old_sigint; + int line_len, c; + + if (!current_readline_line) + { + if (!bash_readline_initialized) + initialize_readline (); + +#if defined (JOB_CONTROL) + if (job_control) + give_terminal_to (shell_pgrp); +#endif /* JOB_CONTROL */ + + if (signal_is_ignored (SIGINT) == 0) + { + old_sigint = (SigHandler *)set_signal_handler (SIGINT, sigint_sighandler); + interrupt_immediately++; + } + + current_readline_line = readline (current_readline_prompt ? + current_readline_prompt : ""); + + if (signal_is_ignored (SIGINT) == 0) + { + interrupt_immediately--; + set_signal_handler (SIGINT, old_sigint); + } + + /* Reset the prompt to the decoded value of prompt_string_pointer. */ + reset_readline_prompt (); + + if (!current_readline_line) + return (EOF); + + current_readline_line_index = 0; + line_len = strlen (current_readline_line); + + current_readline_line = xrealloc (current_readline_line, 2 + line_len); + current_readline_line[line_len++] = '\n'; + current_readline_line[line_len] = '\0'; + } + + if (!current_readline_line[current_readline_line_index]) + { + free (current_readline_line); + current_readline_line = (char *)NULL; + return (yy_readline_get ()); + } + else + { + c = current_readline_line[current_readline_line_index++]; + return (c); + } +} + +static int +yy_readline_unget (c) + int c; +{ + if (current_readline_line_index && current_readline_line) + current_readline_line[--current_readline_line_index] = c; + return (c); +} + +void +with_input_from_stdin () +{ + INPUT_STREAM location; + + if (bash_input.type != st_stdin && stream_on_stack (st_stdin) == 0) + { + location.string = current_readline_line; + init_yy_io (yy_readline_get, yy_readline_unget, + st_stdin, "readline stdin", location); + } +} + +#else /* !READLINE */ + +void +with_input_from_stdin () +{ + with_input_from_stream (stdin, "stdin"); +} +#endif /* !READLINE */ + +/* **************************************************************** */ +/* */ +/* Let input come from STRING. STRING is zero terminated. */ +/* */ +/* **************************************************************** */ + +static int +yy_string_get () +{ + register char *string; + register int c; + + string = bash_input.location.string; + c = EOF; + + /* If the string doesn't exist, or is empty, EOF found. */ + if (string && *string) + { + c = *string++; + bash_input.location.string = string; + } + return (c); +} + +static int +yy_string_unget (c) + int c; +{ + *(--bash_input.location.string) = c; + return (c); +} + +void +with_input_from_string (string, name) + char *string, *name; +{ + INPUT_STREAM location; + + location.string = string; + init_yy_io (yy_string_get, yy_string_unget, st_string, name, location); +} + +/* **************************************************************** */ +/* */ +/* Let input come from STREAM. */ +/* */ +/* **************************************************************** */ + +static int +yy_stream_get () +{ + int result = EOF; + + if (bash_input.location.file) +#if !defined (HAVE_RESTARTABLE_SYSCALLS) + result = getc_with_restart (bash_input.location.file); +#else /* HAVE_RESTARTABLE_SYSCALLS */ + result = getc (bash_input.location.file); +#endif /* HAVE_RESTARTABLE_SYSCALLS */ + return (result); +} + +static int +yy_stream_unget (c) + int c; +{ + return (ungetc (c, bash_input.location.file)); +} + +void +with_input_from_stream (stream, name) + FILE *stream; + char *name; +{ + INPUT_STREAM location; + + location.file = stream; + init_yy_io (yy_stream_get, yy_stream_unget, st_stream, name, location); +} + +typedef struct stream_saver { + struct stream_saver *next; + BASH_INPUT bash_input; + int line; +#if defined (BUFFERED_INPUT) + BUFFERED_STREAM *bstream; +#endif /* BUFFERED_INPUT */ +} STREAM_SAVER; + +/* The globally known line number. */ +int line_number = 0; + +STREAM_SAVER *stream_list = (STREAM_SAVER *)NULL; + +void +push_stream () +{ + STREAM_SAVER *saver = (STREAM_SAVER *)xmalloc (sizeof (STREAM_SAVER)); + + xbcopy ((char *)&bash_input, (char *)&(saver->bash_input), sizeof (BASH_INPUT)); + +#if defined (BUFFERED_INPUT) + saver->bstream = (BUFFERED_STREAM *)NULL; + /* If we have a buffered stream, clear out buffers[fd]. */ + if (bash_input.type == st_bstream && bash_input.location.buffered_fd >= 0) + { + saver->bstream = buffers[bash_input.location.buffered_fd]; + buffers[bash_input.location.buffered_fd] = (BUFFERED_STREAM *)NULL; + } +#endif /* BUFFERED_INPUT */ + + saver->line = line_number; + bash_input.name = (char *)NULL; + saver->next = stream_list; + stream_list = saver; + EOF_Reached = line_number = 0; +} + +void +pop_stream () +{ + if (!stream_list) + EOF_Reached = 1; + else + { + STREAM_SAVER *saver = stream_list; + + EOF_Reached = 0; + stream_list = stream_list->next; + + init_yy_io (saver->bash_input.getter, + saver->bash_input.ungetter, + saver->bash_input.type, + saver->bash_input.name, + saver->bash_input.location); + +#if defined (BUFFERED_INPUT) + /* If we have a buffered stream, restore buffers[fd]. */ + /* If the input file descriptor was changed while this was on the + save stack, update the buffered fd to the new file descriptor and + re-establish the buffer <-> bash_input fd correspondence. */ + if (bash_input.type == st_bstream && bash_input.location.buffered_fd >= 0) + { + if (bash_input_fd_changed) + { + bash_input_fd_changed = 0; + if (default_buffered_input >= 0) + { + bash_input.location.buffered_fd = default_buffered_input; + saver->bstream->b_fd = default_buffered_input; + } + } + buffers[bash_input.location.buffered_fd] = saver->bstream; + } +#endif /* BUFFERED_INPUT */ + + line_number = saver->line; + + FREE (saver->bash_input.name); + free (saver); + } +} + +/* Return 1 if a stream of type TYPE is saved on the stack. */ +int +stream_on_stack (type) + enum stream_type type; +{ + register STREAM_SAVER *s; + + for (s = stream_list; s; s = s->next) + if (s->bash_input.type == type) + return 1; + return 0; +} + +/* + * This is used to inhibit alias expansion and reserved word recognition + * inside case statement pattern lists. A `case statement pattern list' is: + * + * everything between the `in' in a `case word in' and the next ')' + * or `esac' + * everything between a `;;' and the next `)' or `esac' + */ +static int in_case_pattern_list = 0; + +#if defined (ALIAS) + +#define END_OF_ALIAS 0 + +/* + * Pseudo-global variables used in implementing token-wise alias expansion. + */ + +static int expand_next_token; + +/* + * Pushing and popping strings. This works together with shell_getc to + * implement alias expansion on a per-token basis. + */ + +typedef struct string_saver { + struct string_saver *next; + int expand_alias; /* Value to set expand_alias to when string is popped. */ + char *saved_line; + alias_t *expander; /* alias that caused this line to be pushed. */ + int saved_line_size, saved_line_index, saved_line_terminator; +} STRING_SAVER; + +STRING_SAVER *pushed_string_list = (STRING_SAVER *)NULL; + +#if 0 +static void push_expansion (); +static void pop_expansion (); +static int token_is_being_expanded (); +#endif + +/* + * Push the current shell_input_line onto a stack of such lines and make S + * the current input. Used when expanding aliases. EXPAND is used to set + * the value of expand_next_token when the string is popped, so that the + * word after the alias in the original line is handled correctly when the + * alias expands to multiple words. TOKEN is the token that was expanded + * into S; it is saved and used to prevent infinite recursive expansion. + */ +static void +push_string (s, expand, ap) + char *s; + int expand; + alias_t *ap; +{ + STRING_SAVER *temp = (STRING_SAVER *) xmalloc (sizeof (STRING_SAVER)); + + temp->expand_alias = expand; + temp->saved_line = shell_input_line; + temp->saved_line_size = shell_input_line_size; + temp->saved_line_index = shell_input_line_index; + temp->saved_line_terminator = shell_input_line_terminator; + temp->expander = ap; + temp->next = pushed_string_list; + pushed_string_list = temp; + + ap->flags |= AL_BEINGEXPANDED; +#if 0 + push_expansion (ap->name); +#endif + + shell_input_line = s; + shell_input_line_size = strlen (s); + shell_input_line_index = 0; + shell_input_line_terminator = '\0'; + expand_next_token = 0; +} + +/* + * Make the top of the pushed_string stack be the current shell input. + * Only called when there is something on the stack. Called from shell_getc + * when it thinks it has consumed the string generated by an alias expansion + * and needs to return to the original input line. + */ +static void +pop_string () +{ + STRING_SAVER *t; + + FREE (shell_input_line); + shell_input_line = pushed_string_list->saved_line; + shell_input_line_index = pushed_string_list->saved_line_index; + shell_input_line_size = pushed_string_list->saved_line_size; + shell_input_line_terminator = pushed_string_list->saved_line_terminator; + expand_next_token = pushed_string_list->expand_alias; + + t = pushed_string_list; + pushed_string_list = pushed_string_list->next; + + t->expander->flags &= ~AL_BEINGEXPANDED; + + free((char *)t); +} + +static void +free_string_list () +{ + register STRING_SAVER *t, *t1; + + for (t = pushed_string_list; t; ) + { + t1 = t->next; + FREE (t->saved_line); + t->expander->flags &= ~AL_BEINGEXPANDED; + free ((char *)t); + t = t1; + } + pushed_string_list = (STRING_SAVER *)NULL; +} + +#if 0 +/* XXX - NO LONGER USED - XXX */ +/* This is a stack to save the values of all tokens for which alias + expansion has been performed during the current call to read_token (). + It is used to prevent alias expansion loops: + + alias foo=bar + alias bar=baz + alias baz=foo + + Ideally this would be taken care of by push and pop string, but because + of when strings are popped the stack will not contain the correct + strings to test against. (The popping is done in shell_getc, so that when + the current string is exhausted, shell_getc can simply pop that string off + the stack, restore the previous string, and continue with the character + following the token whose expansion was originally pushed on the stack.) + + What we really want is a record of all tokens that have been expanded for + aliases during the `current' call to read_token(). This does that, at the + cost of being somewhat special-purpose (OK, OK vile and unclean). */ + +typedef struct _exp_saver { + struct _exp_saver *next; + char *saved_token; +} EXPANSION_SAVER; + +EXPANSION_SAVER *expanded_token_stack = (EXPANSION_SAVER *)NULL; + +static void +push_expansion (s) + char *s; +{ + EXPANSION_SAVER *t; + + t = (EXPANSION_SAVER *)xmalloc (sizeof (EXPANSION_SAVER)); + t->saved_token = savestring (s); + t->next = expanded_token_stack; + expanded_token_stack = t; +} + +/* Return 1 if TOKEN has already been expanded in the current `stack' of + expansions. If it has been expanded already, it will appear as the value + of saved_token for some entry in the stack of expansions created for the + current token being expanded. */ +static int +token_has_been_expanded (token) + char *token; +{ + register EXPANSION_SAVER *t; + + for (t = expanded_token_stack; t; t = t->next) + { + if (STREQ (token, t->saved_token)) + return (1); + } + + return (0); +} + +static void +free_expansion_stack () +{ + register EXPANSION_SAVER *t, *t1; + + for (t = expanded_token_stack; t; ) + { + t1 = t->next; + free (t->saved_token); + free (t); + t = t1; + } + expanded_token_stack = (EXPANSION_SAVER *)NULL; +} + +static void +pop_expansion () +{ + EXPANSION_SAVER *t; + + if (expanded_token_stack == NULL) + return; + + t = expanded_token_stack; + expanded_token_stack = t->next; + + free (t->saved_token); + free (t); +} +#endif /* 0 */ +#endif /* ALIAS */ + +/* Return a line of text, taken from wherever yylex () reads input. + If there is no more input, then we return NULL. If REMOVE_QUOTED_NEWLINE + is non-zero, we remove unquoted \ pairs. This is used by + read_secondary_line to read here documents. */ +static char * +read_a_line (remove_quoted_newline) + int remove_quoted_newline; +{ + static char *line_buffer = (char *)NULL; + static int buffer_size = 0; + int indx = 0, c, peekc, pass_next; + + pass_next = 0; + while (1) + { + c = yy_getc (); + + /* Allow immediate exit if interrupted during input. */ + QUIT; + + if (c == 0) + continue; + + /* If there is no more input, then we return NULL. */ + if (c == EOF) + { + if (indx == 0) + return ((char *)NULL); + c = '\n'; + } + + /* `+2' in case the final character in the buffer is a newline. */ + if (indx + 2 > buffer_size) + line_buffer = xrealloc (line_buffer, buffer_size += 128); + + /* IF REMOVE_QUOTED_NEWLINES is non-zero, we are reading a + here document with an unquoted delimiter. In this case, + the line will be expanded as if it were in double quotes. + We allow a backslash to escape the next character, but we + need to treat the backslash specially only if a backslash + quoting a backslash-newline pair appears in the line. */ + if (pass_next) + { + line_buffer[indx++] = c; + pass_next = 0; + } + else if (c == '\\' && remove_quoted_newline) + { + peekc = yy_getc (); + if (peekc == '\n') + continue; /* Make the unquoted \ pair disappear. */ + else + { + yy_ungetc (peekc); + pass_next = 1; + line_buffer[indx++] = c; /* Preserve the backslash. */ + } + } + else + line_buffer[indx++] = c; + + if (c == '\n') + { + line_buffer[indx] = '\0'; + return (line_buffer); + } + } +} + +/* Return a line as in read_a_line (), but insure that the prompt is + the secondary prompt. This is used to read the lines of a here + document. REMOVE_QUOTED_NEWLINE is non-zero if we should remove + newlines quoted with backslashes while reading the line. It is + non-zero unless the delimiter of the here document was quoted. */ +char * +read_secondary_line (remove_quoted_newline) + int remove_quoted_newline; +{ + prompt_string_pointer = &ps2_prompt; + prompt_again (); + return (read_a_line (remove_quoted_newline)); +} + +/* **************************************************************** */ +/* */ +/* YYLEX () */ +/* */ +/* **************************************************************** */ + +/* Reserved words. These are only recognized as the first word of a + command. */ +STRING_INT_ALIST word_token_alist[] = { + { "if", IF }, + { "then", THEN }, + { "else", ELSE }, + { "elif", ELIF }, + { "fi", FI }, + { "case", CASE }, + { "esac", ESAC }, + { "for", FOR }, +#if defined (SELECT_COMMAND) + { "select", SELECT }, +#endif + { "while", WHILE }, + { "until", UNTIL }, + { "do", DO }, + { "done", DONE }, + { "in", IN }, + { "function", FUNCTION }, +#if defined (COMMAND_TIMING) + { "time", TIME }, +#endif + { "{", '{' }, + { "}", '}' }, + { "!", BANG }, + { (char *)NULL, 0} +}; + +/* Return the next shell input character. This always reads characters + from shell_input_line; when that line is exhausted, it is time to + read the next line. This is called by read_token when the shell is + processing normal command input. */ + +static int +shell_getc (remove_quoted_newline) + int remove_quoted_newline; +{ + register int i; + int c; + static int mustpop = 0; + + QUIT; + +#if defined (ALIAS) + /* If shell_input_line[shell_input_line_index] == 0, but there is + something on the pushed list of strings, then we don't want to go + off and get another line. We let the code down below handle it. */ + + if (!shell_input_line || ((!shell_input_line[shell_input_line_index]) && + (pushed_string_list == (STRING_SAVER *)NULL))) +#else /* !ALIAS */ + if (!shell_input_line || !shell_input_line[shell_input_line_index]) +#endif /* !ALIAS */ + { + line_number++; + + restart_read: + + /* Allow immediate exit if interrupted during input. */ + QUIT; + + i = 0; + shell_input_line_terminator = 0; + +#if defined (JOB_CONTROL) + /* This can cause a problem when reading a command as the result + of a trap, when the trap is called from flush_child. This call + had better not cause jobs to disappear from the job table in + that case, or we will have big trouble. */ + notify_and_cleanup (); +#else /* !JOB_CONTROL */ + cleanup_dead_jobs (); +#endif /* !JOB_CONTROL */ + +#if defined (READLINE) + if (interactive && bash_input.type != st_string && no_line_editing) +#else + if (interactive && bash_input.type != st_string) +#endif + print_prompt (); + + if (bash_input.type == st_stream) + clearerr (stdin); + + while (c = yy_getc ()) + { + /* Allow immediate exit if interrupted during input. */ + QUIT; + + if (i + 2 > shell_input_line_size) + { + shell_input_line_size += 256; + shell_input_line = xrealloc (shell_input_line, shell_input_line_size); + } + + if (c == EOF) + { + if (bash_input.type == st_stream) + clearerr (stdin); + + if (i == 0) + shell_input_line_terminator = EOF; + + shell_input_line[i] = '\0'; + break; + } + + shell_input_line[i++] = c; + + if (c == '\n') + { + shell_input_line[--i] = '\0'; + current_command_line_count++; + break; + } + } + shell_input_line_index = 0; + shell_input_line_len = i; /* == strlen (shell_input_line) */ + +#if defined (HISTORY) +#if 0 + if (interactive && shell_input_line && shell_input_line[0]) +#else + if (remember_on_history && shell_input_line && shell_input_line[0]) +#endif + { + char *expansions; + + expansions = pre_process_line (shell_input_line, 1, 1); + + free (shell_input_line); + shell_input_line = expansions; + shell_input_line_len = shell_input_line ? + strlen (shell_input_line) : + 0; + if (!shell_input_line_len) + current_command_line_count--; + + /* We have to force the xrealloc below because we don't know the + true allocated size of shell_input_line anymore. */ + shell_input_line_size = shell_input_line_len; + } +#endif /* HISTORY */ + + if (shell_input_line) + { + /* Lines that signify the end of the shell's input should not be + echoed. */ + if (echo_input_at_read && (shell_input_line[0] || + shell_input_line_terminator != EOF)) + fprintf (stderr, "%s\n", shell_input_line); + } + else + { + shell_input_line_size = 0; + prompt_string_pointer = ¤t_prompt_string; + prompt_again (); + goto restart_read; + } + + /* Add the newline to the end of this string, iff the string does + not already end in an EOF character. */ + if (shell_input_line_terminator != EOF) + { + if (shell_input_line_len + 3 > shell_input_line_size) + shell_input_line = xrealloc (shell_input_line, + 1 + (shell_input_line_size += 2)); + + shell_input_line[shell_input_line_len] = '\n'; + shell_input_line[shell_input_line_len + 1] = '\0'; + } + } + + c = shell_input_line[shell_input_line_index]; + + if (c) + shell_input_line_index++; + + if (c == '\\' && remove_quoted_newline && + shell_input_line[shell_input_line_index] == '\n') + { + prompt_again (); + line_number++; + goto restart_read; + } + +#if defined (ALIAS) + /* If C is NULL, we have reached the end of the current input string. If + pushed_string_list is non-empty, it's time to pop to the previous string + because we have fully consumed the result of the last alias expansion. + Do it transparently; just return the next character of the string popped + to. */ + if (!c && (pushed_string_list != (STRING_SAVER *)NULL)) + { + if (mustpop) + { + pop_string (); + c = shell_input_line[shell_input_line_index]; + if (c) + shell_input_line_index++; + mustpop--; + } + else + { + mustpop++; + c = ' '; + } + } +#endif /* ALIAS */ + + if (!c && shell_input_line_terminator == EOF) + return ((shell_input_line_index != 0) ? '\n' : EOF); + + return ((unsigned char)c); +} + +/* Put C back into the input for the shell. */ +static void +shell_ungetc (c) + int c; +{ + if (shell_input_line && shell_input_line_index) + shell_input_line[--shell_input_line_index] = c; +} + +static void +shell_ungetchar () +{ + if (shell_input_line && shell_input_line_index) + shell_input_line_index--; +} + +/* Discard input until CHARACTER is seen, then push that character back + onto the input stream. */ +static void +discard_until (character) + int character; +{ + int c; + + while ((c = shell_getc (0)) != EOF && c != character) + ; + + if (c != EOF) + shell_ungetc (c); +} + +void +execute_prompt_command (command) + char *command; +{ + Function *temp_last, *temp_this; + char *last_lastarg; + int temp_exit_value, temp_eof_encountered; + + temp_last = last_shell_builtin; + temp_this = this_shell_builtin; + temp_exit_value = last_command_exit_value; + temp_eof_encountered = eof_encountered; + last_lastarg = get_string_value ("_"); + if (last_lastarg) + last_lastarg = savestring (last_lastarg); + + parse_and_execute (savestring (command), "PROMPT_COMMAND", 0); + + last_shell_builtin = temp_last; + this_shell_builtin = temp_this; + last_command_exit_value = temp_exit_value; + eof_encountered = temp_eof_encountered; + + bind_variable ("_", last_lastarg); + FREE (last_lastarg); + + if (token_to_read == '\n') /* reset_parser was called */ + token_to_read = 0; +} + +/* Place to remember the token. We try to keep the buffer + at a reasonable size, but it can grow. */ +static char *token = (char *)NULL; + +/* Current size of the token buffer. */ +static int token_buffer_size = 0; + +/* Command to read_token () explaining what we want it to do. */ +#define READ 0 +#define RESET 1 +#define prompt_is_ps1 \ + (!prompt_string_pointer || prompt_string_pointer == &ps1_prompt) + +/* Function for yyparse to call. yylex keeps track of + the last two tokens read, and calls read_token. */ +static int +yylex () +{ + if (interactive && (current_token == 0 || current_token == '\n')) + { + /* Before we print a prompt, we might have to check mailboxes. + We do this only if it is time to do so. Notice that only here + is the mail alarm reset; nothing takes place in check_mail () + except the checking of mail. Please don't change this. */ + if (prompt_is_ps1 && time_to_check_mail ()) + { + check_mail (); + reset_mail_timer (); + } + + /* Avoid printing a prompt if we're not going to read anything, e.g. + after resetting the parser with read_token (RESET). */ + if (token_to_read == 0 && interactive) + prompt_again (); + } + + two_tokens_ago = token_before_that; + token_before_that = last_read_token; + last_read_token = current_token; + current_token = read_token (READ); + return (current_token); +} + +/* When non-zero, we have read the required tokens + which allow ESAC to be the next one read. */ +static int allow_esac_as_next = 0; + +/* When non-zero, accept single '{' as a token itself. */ +static int allow_open_brace = 0; + +/* DELIMITERS is a stack of the nested delimiters that we have + encountered so far. */ +static char *delimiters = (char *)NULL; + +/* Offset into the stack of delimiters. */ +int delimiter_depth = 0; + +/* How many slots are allocated to DELIMITERS. */ +static int delimiter_space = 0; + +void +gather_here_documents () +{ + int r = 0; + while (need_here_doc) + { + make_here_document (redir_stack[r++]); + need_here_doc--; + } +} + +/* Macro for accessing the top delimiter on the stack. Returns the + delimiter or zero if none. */ +#define current_delimiter() \ + (delimiter_depth ? delimiters[delimiter_depth - 1] : 0) + +#define push_delimiter(character) \ + do \ + { \ + if (delimiter_depth + 2 > delimiter_space) \ + delimiters = xrealloc \ + (delimiters, (delimiter_space += 10) * sizeof (char)); \ + delimiters[delimiter_depth] = character; \ + delimiter_depth++; \ + } \ + while (0) + +/* When non-zero, an open-brace used to create a group is awaiting a close + brace partner. */ +static int open_brace_awaiting_satisfaction = 0; + +#define command_token_position(token) \ + (((token) == ASSIGNMENT_WORD) || \ + ((token) != SEMI_SEMI && reserved_word_acceptable(token))) + +#define assignment_acceptable(token) command_token_position(token) && \ + (in_case_pattern_list == 0) + +/* Check to see if TOKEN is a reserved word and return the token + value if it is. */ +#define CHECK_FOR_RESERVED_WORD(tok) \ + do { \ + if (!dollar_present && !quoted && \ + reserved_word_acceptable (last_read_token)) \ + { \ + int i; \ + for (i = 0; word_token_alist[i].word != (char *)NULL; i++) \ + if (STREQ (tok, word_token_alist[i].word)) \ + { \ + if (in_case_pattern_list && (word_token_alist[i].token != ESAC)) \ + break; \ + if (word_token_alist[i].token == ESAC) \ + in_case_pattern_list = 0; \ + if (word_token_alist[i].token == '{') \ + open_brace_awaiting_satisfaction++; \ + return (word_token_alist[i].token); \ + } \ + } \ + } while (0) + +#if defined (ALIAS) + + /* OK, we have a token. Let's try to alias expand it, if (and only if) + it's eligible. + + It is eligible for expansion if the shell is in interactive mode, and + the token is unquoted and the last token read was a command + separator (or expand_next_token is set), and we are currently + processing an alias (pushed_string_list is non-empty) and this + token is not the same as the current or any previously + processed alias. + + Special cases that disqualify: + In a pattern list in a case statement (in_case_pattern_list). */ +static int +alias_expand_token (token) + char *token; +{ + char *expanded; + int c, expand_next; + alias_t *ap; + + if (expand_next_token || command_token_position (last_read_token) && !in_case_pattern_list) + { + ap = find_alias (token); + +#if 0 + /* Currently expanding this token. */ + if ((expanded_token_stack && token_has_been_expanded (token))) + return (NO_EXPANSION); +#else + if (ap && (ap->flags & AL_BEINGEXPANDED)) + return (NO_EXPANSION); +#endif + + expanded = ap ? savestring (ap->value) : (char *)NULL; + if (expanded) + { + push_string (expanded, ap->flags & AL_EXPANDNEXT, ap); + return (RE_READ_TOKEN); + } + else + /* This is an eligible token that does not have an expansion. */ + return (NO_EXPANSION); + } + return (NO_EXPANSION); +} +#endif /* ALIAS */ + +/* Handle special cases of token recognition: + IN is recognized if the last token was WORD and the token + before that was FOR or CASE or SELECT. + + DO is recognized if the last token was WORD and the token + before that was FOR or SELECT. + + ESAC is recognized if the last token caused `allow_esac_as_next' + to be set + + `{' is recognized if the last token as WORD and the token + before that was FUNCTION. + + `}' is recognized if there is an unclosed `{' prsent. +*/ + +static int +special_case_tokens (token) + char *token; +{ + if ((last_read_token == WORD) && +#if defined (SELECT_COMMAND) + ((token_before_that == FOR) || (token_before_that == CASE) || (token_before_that == SELECT)) && +#else + ((token_before_that == FOR) || (token_before_that == CASE)) && +#endif + (token[0] == 'i' && token[1] == 'n' && !token[2])) + { + if (token_before_that == CASE) + { + in_case_pattern_list = 1; + allow_esac_as_next++; + } + return (IN); + } + + if (last_read_token == WORD && +#if defined (SELECT_COMMAND) + (token_before_that == FOR || token_before_that == SELECT) && +#else + (token_before_that == FOR) && +#endif + (token[0] == 'd' && token[1] == 'o' && !token[2])) + return (DO); + + /* Ditto for ESAC in the CASE case. + Specifically, this handles "case word in esac", which is a legal + construct, certainly because someone will pass an empty arg to the + case construct, and we don't want it to barf. Of course, we should + insist that the case construct has at least one pattern in it, but + the designers disagree. */ + if (allow_esac_as_next) + { + allow_esac_as_next--; + if (STREQ (token, "esac")) + { + in_case_pattern_list = 0; + return (ESAC); + } + } + + if (allow_open_brace) + { + allow_open_brace = 0; + if (token[0] == '{' && !token[1]) + { + open_brace_awaiting_satisfaction++; + return ('{'); + } + } + + if (open_brace_awaiting_satisfaction && token[0] == '}' && !token[1]) + { + open_brace_awaiting_satisfaction--; + return ('}'); + } + + return (-1); +} + +/* Called from shell.c when Control-C is typed at top level. Or + by the error rule at top level. */ +void +reset_parser () +{ + delimiter_depth = 0; /* No delimiters found so far. */ + open_brace_awaiting_satisfaction = 0; + in_case_pattern_list = 0; + +#if defined (ALIAS) + if (pushed_string_list) + { + free_string_list (); + pushed_string_list = (STRING_SAVER *)NULL; + } + +#if 0 + if (expanded_token_stack) + { + free_expansion_stack (); + expanded_token_stack = (EXPANSION_SAVER *)NULL; + } +#endif + + expand_next_token = 0; +#endif /* ALIAS */ + + if (shell_input_line) + { + free (shell_input_line); + shell_input_line = (char *)NULL; + shell_input_line_size = shell_input_line_index = 0; + } + + last_read_token = '\n'; + token_to_read = '\n'; +} + +/* Read the next token. Command can be READ (normal operation) or + RESET (to normalize state). */ +static int +read_token (command) + int command; +{ + int character; /* Current character. */ + int peek_char; /* Temporary look-ahead character. */ + int result; /* The thing to return. */ + + if (command == RESET) + { + reset_parser (); + return ('\n'); + } + + if (token_to_read) + { + result = token_to_read; + if (token_to_read == WORD || token_to_read == ASSIGNMENT_WORD) + yylval.word = word_desc_to_read; + token_to_read = 0; + return (result); + } + +#if defined (ALIAS) + /* If we hit read_token () and there are no saved strings on the + pushed_string_list, then we are no longer currently expanding a + token. This can't be done in pop_stream, because pop_stream + may pop the stream before the current token has finished being + completely expanded (consider what happens when we alias foo to foo, + and then try to expand it). */ +#if 0 + if (!pushed_string_list && expanded_token_stack) + { + free_expansion_stack (); + expanded_token_stack = (EXPANSION_SAVER *)NULL; + } +#endif + + /* This is a place to jump back to once we have successfully expanded a + token with an alias and pushed the string with push_string () */ + re_read_token: +#endif /* ALIAS */ + + /* Read a single word from input. Start by skipping blanks. */ + while ((character = shell_getc (1)) != EOF && whitespace (character)) + ; + + if (character == EOF) + { + EOF_Reached = 1; + return (yacc_EOF); + } + + if (character == '#' && (!interactive || interactive_comments)) + { + /* A comment. Discard until EOL or EOF, and then return a newline. */ + discard_until ('\n'); + shell_getc (0); + character = '\n'; /* this will take the next if statement and return. */ + } + + if (character == '\n') + { + /* If we're about to return an unquoted newline, we can go and collect + the text of any pending here document. */ + if (need_here_doc) + gather_here_documents (); + +#if defined (ALIAS) + expand_next_token = 0; +#endif /* ALIAS */ + + return (character); + } + + /* Shell meta-characters. */ + if (shellmeta (character)) + { +#if defined (ALIAS) + /* Turn off alias tokenization iff this character sequence would + not leave us ready to read a command. */ + if (character == '<' || character == '>') + expand_next_token = 0; +#endif /* ALIAS */ + + peek_char = shell_getc (1); + if (character == peek_char) + { + switch (character) + { + case '<': + /* If '<' then we could be at "<<" or at "<<-". We have to + look ahead one more character. */ + peek_char = shell_getc (1); + if (peek_char == '-') + return (LESS_LESS_MINUS); + else + { + shell_ungetc (peek_char); + return (LESS_LESS); + } + + case '>': + return (GREATER_GREATER); + + case ';': + in_case_pattern_list = 1; +#if defined (ALIAS) + expand_next_token = 0; +#endif /* ALIAS */ + return (SEMI_SEMI); + + case '&': + return (AND_AND); + + case '|': + return (OR_OR); + } + } + else if (character == '<' && peek_char == '&') + return (LESS_AND); + else if (character == '>' && peek_char == '&') + return (GREATER_AND); + else if (character == '<' && peek_char == '>') + return (LESS_GREATER); + else if (character == '>' && peek_char == '|') + return (GREATER_BAR); + else if (peek_char == '>' && character == '&') + return (AND_GREATER); + + shell_ungetc (peek_char); + + /* If we look like we are reading the start of a function + definition, then let the reader know about it so that + we will do the right thing with `{'. */ + if (character == ')' && last_read_token == '(' && token_before_that == WORD) + { + allow_open_brace = 1; +#if defined (ALIAS) + expand_next_token = 0; +#endif /* ALIAS */ + } + + if (in_case_pattern_list && character == ')') + in_case_pattern_list = 0; + +#if defined (PROCESS_SUBSTITUTION) + /* Check for the constructs which introduce process substitution. + Shells running in `posix mode' don't do process substitution. */ + if (posixly_correct || + ((character != '>' && character != '<') || peek_char != '(')) +#endif /* PROCESS_SUBSTITUTION */ + return (character); + } + + /* Hack <&- (close stdin) case. */ + if (character == '-' && (last_read_token == LESS_AND || last_read_token == GREATER_AND)) + return (character); + + /* Okay, if we got this far, we have to read a word. Read one, + and then check it against the known ones. */ + result = read_token_word (character); +#if defined (ALIAS) + if (result == RE_READ_TOKEN) + goto re_read_token; +#endif + return result; +} + +static int +read_token_word (character) + int character; +{ + /* The value for YYLVAL when a WORD is read. */ + WORD_DESC *the_word; + + /* Index into the token that we are building. */ + int token_index; + + /* ALL_DIGITS becomes zero when we see a non-digit. */ + int all_digits; + + /* DOLLAR_PRESENT becomes non-zero if we see a `$'. */ + int dollar_present; + + /* QUOTED becomes non-zero if we see one of ("), ('), (`), or (\). */ + int quoted; + + /* Non-zero means to ignore the value of the next character, and just + to add it no matter what. */ + int pass_next_character; + + /* Non-zero means parsing a dollar-paren construct. It is the count of + un-quoted close parens we need to see. */ + int dollar_paren_level; + + /* Another level variable. This one is for dollar_parens inside of + double-quotes. */ + int delimited_paren_level; + + /* Non-zero means parsing a dollar-bracket construct ($[...]). It is + the count of un-quoted `]' characters we need to see. */ + int dollar_bracket_level; + + /* Non-zero means parsing a `${' construct. It is the count of + un-quoted `}' we need to see. */ + int dollar_brace_level; + + /* A level variable for parsing '${ ... }' constructs inside of double + quotes. */ + int delimited_brace_level; + + /* A boolean variable denoting whether or not we are currently parsing + a double-quoted string embedded in a $( ) or ${ } construct. */ + int embedded_quoted_string; + + /* The current delimiting character. */ + int cd; + int result, peek_char; + + if (token_buffer_size < TOKEN_DEFAULT_GROW_SIZE) + { + FREE (token); + token = xmalloc (token_buffer_size = TOKEN_DEFAULT_GROW_SIZE); + } + + token_index = 0; + all_digits = digit (character); + dollar_present = quoted = 0; + embedded_quoted_string = pass_next_character = 0; + dollar_paren_level = delimited_paren_level = 0; + dollar_brace_level = delimited_brace_level = dollar_bracket_level = 0; + + for (;;) + { + if (character == EOF) + goto got_token; + + if (pass_next_character) + { + pass_next_character = 0; + goto got_character; + } + + cd = current_delimiter (); + + if (cd && character == '\\' && cd != '\'') + { + peek_char = shell_getc (0); + if (peek_char != '\\') + shell_ungetc (peek_char); + else + { + token[token_index++] = character; + goto got_character; + } + } + + /* Handle backslashes. Quote lots of things when not inside of + double-quotes, quote some things inside of double-quotes. */ + + if (character == '\\' && (delimiter_depth == 0 || cd != '\'')) + { + peek_char = shell_getc (0); + + /* Backslash-newline is ignored in all cases excepting + when quoted with single quotes. */ + if (peek_char == '\n') + { + character = '\n'; + goto next_character; + } + else + { + shell_ungetc (peek_char); + + /* If the next character is to be quoted, do it now. */ + if (cd == 0 || cd == '`' || + (cd == '"' && member (peek_char, slashify_in_quotes))) + { + pass_next_character++; + quoted = 1; + goto got_character; + } + } + } + + /* This is a hack, in its present form. If a backquote substitution + appears within double quotes, everything within the backquotes + should be read as part of a single word. Jesus. Now I see why + Korn introduced the $() form. */ + if (delimiter_depth && (cd == '"') && (character == '`')) + { + push_delimiter (character); + goto got_character; + } + + /* cd = current_delimiter (); */ /* XXX - may not need */ + if (delimiter_depth) + { + if (character == cd) + { + /* If we see a double quote while parsing a double-quoted + $( ) or ${ }, and we have not seen ) or }, respectively, + note that we are in the middle of reading an embedded + quoted string. */ + if ((delimited_paren_level || delimited_brace_level) && + (character == '"')) + { + embedded_quoted_string = 1 - embedded_quoted_string; + goto got_character; + } + + delimiter_depth--; + goto got_character; + } + } + + /* If the delimiter character is not single quote, parse some of + the shell expansions that must be read as a single word. */ + if (cd != '\'') + { +#if defined (PROCESS_SUBSTITUTION) + if (character == '$' || character == '<' || character == '>') +#else + if (character == '$') +#endif /* !PROCESS_SUBSTITUTION */ + { + /* If we're in the middle of parsing a $( ) or ${ } + construct with an embedded quoted string, don't + bother looking at this character any further. */ + if (embedded_quoted_string) + goto got_character; + + peek_char = shell_getc (1); + shell_ungetc (peek_char); + if (peek_char == '(') + { + if (!delimiter_depth) + dollar_paren_level++; + else + delimited_paren_level++; + + pass_next_character++; + goto got_character; + } + else if (peek_char == '[' && character == '$') + { + if (!delimiter_depth) + dollar_bracket_level++; + + pass_next_character++; + goto got_character; + } + /* This handles ${...} constructs. */ + else if (peek_char == '{' && character == '$') + { + if (!delimiter_depth) + dollar_brace_level++; + else + delimited_brace_level++; + + pass_next_character++; + goto got_character; + } + } + +#if defined (ARRAY_VARS) + if (character == '=') + { + if (embedded_quoted_string) + goto got_character; + + peek_char = shell_getc (1); + shell_ungetc (peek_char); + if (peek_char == '(') + { + if (!delimiter_depth) + dollar_paren_level++; + else + delimited_paren_level++; + + pass_next_character++; + goto got_character; + } + } +#endif + +/* Generally, delim_xxx counts occurrences of xxx inside double quotes, while + dollar_xxx counts unquoted occurrences. These macros take care of + incrementing and decrementing both appropriately. */ +#define INC_DELIM(delim, dol) \ + do \ + { \ + if (delimiter_depth && delim) \ + delim++; \ + if (!delimiter_depth && dol) \ + dol++; \ + } \ + while (0) + +#define DEC_DELIM(delim, dol) \ + do \ + { \ + if (delimiter_depth && delim) \ + delim--; \ + if (!delimiter_depth && dol) \ + { \ + dol--; \ + goto got_character; \ + } \ + } \ + while (0) + + /* If we are parsing a $() or $[] construct, we need to balance + parens and brackets inside the construct. This whole function + could use a rewrite. */ + if (character == '(' && !embedded_quoted_string) + INC_DELIM (delimited_paren_level, dollar_paren_level); + + /* This code needs to take into account whether we are inside a + case statement pattern list, and whether this paren is supposed + to terminate it (hey, it could happen). It's not as simple + as just using in_case_pattern_list, because we're not parsing + anything while we're reading a $( ) construct. */ + else if (character == ')' && !embedded_quoted_string) + DEC_DELIM (delimited_paren_level, dollar_paren_level); + + else if (character == '[' && !delimiter_depth && dollar_bracket_level) + dollar_bracket_level++; + + else if (character == ']' && !delimiter_depth && dollar_bracket_level) + { + dollar_bracket_level--; + goto got_character; + } + + else if (character == '{' && embedded_quoted_string == 0) + INC_DELIM (delimited_brace_level, dollar_brace_level); + + else if (character == '}' && embedded_quoted_string == 0) + DEC_DELIM (delimited_brace_level, dollar_brace_level); + } + + /* When not parsing a multi-character word construct, shell meta- + characters break words. */ + if (!dollar_paren_level && !dollar_bracket_level && + !dollar_brace_level && !delimiter_depth && + shellbreak (character)) + { + shell_ungetc (character); + goto got_token; + } + + /* If we see a delimiter, remember it. */ + if (!delimiter_depth && shellquote (character)) + { + push_delimiter (character); + quoted = 1; + goto got_character; + } + +#if 0 + all_digits = all_digits ? digit (character) : 0; +#else + all_digits &= digit (character); +#endif + dollar_present |= character == '$'; + + got_character: + + if (character == CTLESC /* || character == CTLNUL */) + token[token_index++] = CTLESC; + + token[token_index++] = character; + + if (token_index == (token_buffer_size - 1)) + { + token_buffer_size += TOKEN_DEFAULT_GROW_SIZE; + token = xrealloc (token, token_buffer_size); + } + next_character: + if (character == '\n' && interactive && bash_input.type == st_stream) + prompt_again (); + + /* We want to remove quoted newlines (that is, a \ pair) + unless we are within single quotes or pass_next_character is + set (the shell equivalent of literal-next). */ + cd = current_delimiter (); + character = shell_getc (cd != '\'' && !pass_next_character); + } /* end for (;;) */ + +got_token: + + token[token_index] = '\0'; + + /* EOF while reading a multi-char word construct generates an error. */ + if ((delimiter_depth || dollar_paren_level || dollar_bracket_level) && + character == EOF) + { + char reporter = '\0'; + + if (delimiter_depth == 0) + { + if (dollar_paren_level) + reporter = ')'; + else if (dollar_bracket_level) + reporter = ']'; + } + + if (reporter == 0) + reporter = current_delimiter (); + + report_error ("unexpected EOF while looking for `%c'", reporter); + return (-1); + } + + /* Check to see what thing we should return. If the last_read_token + is a `<', or a `&', or the character which ended this token is + a '>' or '<', then, and ONLY then, is this input token a NUMBER. + Otherwise, it is just a word, and should be returned as such. */ + if (all_digits && (character == '<' || character == '>' || + last_read_token == LESS_AND || + last_read_token == GREATER_AND)) + { + yylval.number = atoi (token); + return (NUMBER); + } + + /* Check for special case tokens. */ + result = special_case_tokens (token); + if (result >= 0) + return result; + +#if defined (ALIAS) + /* Posix.2 does not allow reserved words to be aliased, so check for all + of them, including special cases, before expanding the current token + as an alias. */ + if (posixly_correct) + CHECK_FOR_RESERVED_WORD (token); + + /* Aliases are expanded in interactive shells only, and quoting inhibits + alias expansion. */ + if (interactive_shell && quoted == 0) + { + result = alias_expand_token (token); + if (result == RE_READ_TOKEN) + return (RE_READ_TOKEN); + else if (result == NO_EXPANSION) + expand_next_token = 0; + } + + /* If not in Posix.2 mode, check for reserved words after alias + expansion. */ + if (!posixly_correct) +#endif + CHECK_FOR_RESERVED_WORD (token); + + the_word = (WORD_DESC *)xmalloc (sizeof (WORD_DESC)); + the_word->word = xmalloc (1 + token_index); + the_word->flags = 0; + strcpy (the_word->word, token); + if (dollar_present) + the_word->flags |= W_HASDOLLAR; + if (quoted) + the_word->flags |= W_QUOTED; + if (assignment (token)) + the_word->flags |= W_ASSIGNMENT; + + yylval.word = the_word; + + /* A word is an assignment if it appears at the beginning of a + simple command, or after another assignment word. This is + context-dependent, so it cannot be handled in the grammar. */ + result = (assignment_acceptable (last_read_token) && + (the_word->flags & W_ASSIGNMENT)) ? ASSIGNMENT_WORD : WORD; + + if (last_read_token == FUNCTION) + allow_open_brace = 1; + + return (result); +} + +/* Return 1 if TOKEN is a token that after being read would allow + a reserved word to be seen, else 0. */ +static int +reserved_word_acceptable (token) + int token; +{ + if (token == '\n' || token == ';' || token == '(' || token == ')' || + token == '|' || token == '&' || token == '{' || + token == '}' || /* XXX */ + token == AND_AND || + token == BANG || + token == TIME || + token == DO || + token == ELIF || + token == ELSE || + token == FI || + token == IF || + token == OR_OR || + token == SEMI_SEMI || + token == THEN || + token == UNTIL || + token == WHILE || + token == DONE || /* XXX these two are experimental */ + token == ESAC || + token == 0) + return (1); + else + return (0); +} + +/* Return the index of TOKEN in the alist of reserved words, or -1 if + TOKEN is not a shell reserved word. */ +int +find_reserved_word (token) + char *token; +{ + int i; + for (i = 0; word_token_alist[i].word; i++) + if (STREQ (token, word_token_alist[i].word)) + return i; + return -1; +} + +#if defined (READLINE) +/* Called after each time readline is called. This insures that whatever + the new prompt string is gets propagated to readline's local prompt + variable. */ +static void +reset_readline_prompt () +{ + char *temp_prompt; + + if (prompt_string_pointer) + { + temp_prompt = (*prompt_string_pointer) + ? decode_prompt_string (*prompt_string_pointer) + : (char *)NULL; + + if (temp_prompt == 0) + { + temp_prompt = xmalloc (1); + temp_prompt[0] = '\0'; + } + + FREE (current_readline_prompt); + current_readline_prompt = temp_prompt; + } +} +#endif /* READLINE */ + +#if defined (HISTORY) +/* A list of tokens which can be followed by newlines, but not by + semi-colons. When concatenating multiple lines of history, the + newline separator for such tokens is replaced with a space. */ +static int no_semi_successors[] = { + '\n', '{', '(', ')', ';', '&', '|', + CASE, DO, ELSE, IF, SEMI_SEMI, THEN, UNTIL, WHILE, AND_AND, OR_OR, + 0 +}; + +/* If we are not within a delimited expression, try to be smart + about which separators can be semi-colons and which must be + newlines. Returns the string that should be added into the + history entry. */ +char * +history_delimiting_chars () +{ + if (delimiter_depth == 0) + { + register int i; + + /* First, handle some special cases. */ + /*(*/ + /* If we just read `()', assume it's a function definition, and don't + add a semicolon. If the token before the `)' was not `(', assume + it's a parenthesized command and add the semicolon. */ + /*)(*/ + if (token_before_that == ')') + return ((two_tokens_ago == '(') ? " " : "; "); /*)*/ + + for (i = 0; no_semi_successors[i]; i++) + { + if (token_before_that == no_semi_successors[i]) + return (" "); + } + return ("; "); + } + else + return ("\n"); +} +#endif /* HISTORY */ + +/* Issue a prompt, or prepare to issue a prompt when the next character + is read. */ +static void +prompt_again () +{ + char *temp_prompt; + + if (!interactive) /* XXX */ + return; + + ps1_prompt = get_string_value ("PS1"); + ps2_prompt = get_string_value ("PS2"); + + if (!prompt_string_pointer) + prompt_string_pointer = &ps1_prompt; + + temp_prompt = *prompt_string_pointer + ? decode_prompt_string (*prompt_string_pointer) + : (char *)NULL; + + if (temp_prompt == 0) + { + temp_prompt = xmalloc (1); + temp_prompt[0] = '\0'; + } + + current_prompt_string = *prompt_string_pointer; + prompt_string_pointer = &ps2_prompt; + +#if defined (READLINE) + if (!no_line_editing) + { + FREE (current_readline_prompt); + current_readline_prompt = temp_prompt; + } + else +#endif /* READLINE */ + { + FREE (current_decoded_prompt); + current_decoded_prompt = temp_prompt; + } +} + +static void +print_prompt () +{ + fprintf (stderr, "%s", current_decoded_prompt); + fflush (stderr); +} + +/* Return a string which will be printed as a prompt. The string + may contain special characters which are decoded as follows: + + \a bell (ascii 07) + \e escape (ascii 033) + \d the date in Day Mon Date format + \h the hostname + \H the hostname up to the first `.' + \n CRLF + \s the name of the shell + \t the time in 24-hour hh:mm:ss format + \T the time in 12-hour hh:mm:ss format + \@ the time in 12-hour am/pm format + \w the current working directory + \W the last element of $PWD + \u your username + \# the command number of this command + \! the history number of this command + \$ a $ or a # if you are root + \nnn character code nnn in octal + \\ a backslash + \[ begin a sequence of non-printing chars + \] end a sequence of non-printing chars +*/ +#define PROMPT_GROWTH 50 +char * +decode_prompt_string (string) + char *string; +{ + WORD_LIST *list; + char *result, *t; +#if defined (PROMPT_STRING_DECODE) + int result_size, result_index; + int c, n; + char *temp, octal_string[4]; + time_t the_time; + + result = xmalloc (result_size = PROMPT_GROWTH); + result[result_index = 0] = 0; + temp = (char *)NULL; + + while (c = *string++) + { + if (posixly_correct && c == '!') + { + if (*string == '!') + { + temp = savestring ("!"); + goto add_string; + } + else + { +#if !defined (HISTORY) + temp = savestring ("1"); +#else /* HISTORY */ + temp = itos (history_number ()); +#endif /* HISTORY */ + string--; /* add_string increments string again. */ + goto add_string; + } + } + if (c == '\\') + { + c = *string; + + switch (c) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + strncpy (octal_string, string, 3); + octal_string[3] = '\0'; + + n = read_octal (octal_string); + temp = xmalloc (3); + + if (n == CTLESC || n == CTLNUL) + { + string += 3; + temp[0] = CTLESC; + temp[1] = n; + temp[2] = '\0'; + } + else if (n == -1) + { + temp[0] = '\\'; + temp[1] = '\0'; + } + else + { + string += 3; + temp[0] = n; + temp[1] = '\0'; + } + + c = 0; + goto add_string; + + case 't': + case 'd': + case 'T': + case '@': + /* Make the current time/date into a string. */ + the_time = time (0); + temp = ctime (&the_time); + + temp = (c != 'd') ? savestring (temp + 11) : savestring (temp); + temp[(c != 'd') ? 8 : 10] = '\0'; + + /* quick and dirty conversion to 12-hour time */ + if (c == 'T' || c == '@') + { + if (c == '@') + { + temp[5] = 'a'; /* am/pm format */ + temp[6] = 'm'; + temp[7] = '\0'; + } + c = temp[2]; + temp[2] = '\0'; + n = atoi (temp); + temp[2] = c; + n -= 12; + if (n > 0) + { + temp[0] = (n / 10) + '0'; + temp[1] = (n % 10) + '0'; + if (temp[5] == 'a') temp[5] = 'p'; + } + } + goto add_string; + + case 'n': + temp = xmalloc (3); + temp[0] = no_line_editing ? '\n' : '\r'; + temp[1] = no_line_editing ? '\0' : '\n'; + temp[2] = '\0'; + goto add_string; + + case 's': + temp = base_pathname (shell_name); + temp = savestring (temp); + goto add_string; + + case 'w': + case 'W': + { + /* Use the value of PWD because it is much more efficient. */ + char t_string[MAXPATHLEN]; + + temp = get_string_value ("PWD"); + + if (temp == 0) + getwd (t_string); + else + strcpy (t_string, temp); + + if (c == 'W') + { + t = strrchr (t_string, '/'); + if (t && t != t_string) + strcpy (t_string, t + 1); + temp = savestring (t_string); + } + else + temp = savestring (polite_directory_format (t_string)); + goto add_string; + } + + case 'u': + temp = savestring (current_user.user_name); + goto add_string; + + case 'h': + case 'H': + temp = savestring (current_host_name); + if (c == 'H' && (t = (char *)strchr (temp, '.'))) + *t = '\0'; + goto add_string; + + case '#': + temp = itos (current_command_number); + goto add_string; + + case '!': +#if !defined (HISTORY) + temp = savestring ("1"); +#else /* HISTORY */ + temp = itos (history_number ()); +#endif /* HISTORY */ + goto add_string; + + case '$': + temp = xmalloc (2); + temp[0] = current_user.euid == 0 ? '#' : '$'; + temp[1] = '\0'; + goto add_string; + +#if defined (READLINE) + case '[': + case ']': + temp = xmalloc (3); + temp[0] = '\001'; + temp[1] = (c == '[') ? RL_PROMPT_START_IGNORE : RL_PROMPT_END_IGNORE; + temp[2] = '\0'; + goto add_string; +#endif /* READLINE */ + + case '\\': + temp = xmalloc (2); + temp[0] = c; + temp[1] = '\0'; + goto add_string; + + case 'a': + case 'e': + temp = xmalloc (2); + temp[0] = (c == 'a') ? '\07' : '\033'; + temp[1] = '\0'; + goto add_string; + + default: + temp = xmalloc (3); + temp[0] = '\\'; + temp[1] = c; + temp[2] = '\0'; + + add_string: + if (c) + string++; + result = + sub_append_string (temp, result, &result_index, &result_size); + temp = (char *)NULL; /* Freed in sub_append_string (). */ + result[result_index] = '\0'; + break; + } + } + else + { + if (result_index > result_size - 3) + { + while (result_index > result_size - 3) + result_size += PROMPT_GROWTH; + result = xrealloc (result, result_size); + } + + result[result_index++] = c; + result[result_index] = '\0'; + } + } +#else /* !PROMPT_STRING_DECODE */ + result = savestring (string); +#endif /* !PROMPT_STRING_DECODE */ + + /* Perform variable and parameter expansion and command substitution on + the prompt string. */ + if (promptvars) + { + list = expand_string_unsplit (result, Q_DOUBLE_QUOTES); + free (result); + result = string_list (list); + dispose_words (list); + } + else + { + t = dequote_string (result); + free (result); + result = t; + } + + return (result); +} + +/* Report a syntax error, and restart the parser. Call here for fatal + errors. */ +int +yyerror () +{ + report_syntax_error ((char *)NULL); + reset_parser (); + return (0); +} + +/* Report a syntax error with line numbers, etc. + Call here for recoverable errors. If you have a message to print, + then place it in MESSAGE, otherwise pass NULL and this will figure + out an appropriate message for you. */ +static void +report_syntax_error (message) + char *message; +{ + char *name, *msg, *t; + int token_end, i; + + if (message) + { + if (!interactive) + { + name = bash_input.name ? bash_input.name : "stdin"; + report_error ("%s: line %d: `%s'", name, line_number, message); + } + else + { + if (EOF_Reached) + EOF_Reached = 0; + report_error ("%s", message); + } + + last_command_exit_value = EX_USAGE; + return; + } + + if (shell_input_line && *shell_input_line) + { + t = shell_input_line; + i = shell_input_line_index; + token_end = 0; + + if (i && t[i] == '\0') + i--; + + while (i && (whitespace (t[i]) || t[i] == '\n')) + i--; + + if (i) + token_end = i + 1; + + while (i && (member (t[i], " \n\t;|&") == 0)) + i--; + + while (i != token_end && (whitespace (t[i]) || t[i] == '\n')) + i++; + + if (token_end) + { + msg = xmalloc (1 + (token_end - i)); + strncpy (msg, t + i, token_end - i); + msg[token_end - i] = '\0'; + + report_error ("syntax error near unexpected token `%s'", msg); + free (msg); + } + else if ((i == 0) && (token_end == 0)) /* a 1-character token */ + { + report_error ("syntax error near unexpected token `%c'", t[i]); + } + + if (!interactive) + { + msg = savestring (shell_input_line); + token_end = strlen (msg); + name = bash_input.name ? bash_input.name : "stdin"; + + while (token_end && msg[token_end - 1] == '\n') + msg[--token_end] = '\0'; + + report_error ("%s: line %d: `%s'", name, line_number, msg); + free (msg); + } + } + else + { + msg = EOF_Reached ? "syntax error: unexpected end of file" : "syntax error"; + if (!interactive) + { + name = bash_input.name ? bash_input.name : "stdin"; + report_error ("%s: line %d: %s", name, line_number, msg); + } + else + { + /* This file uses EOF_Reached only for error reporting + when the shell is interactive. Other mechanisms are + used to decide whether or not to exit. */ + EOF_Reached = 0; + report_error (msg); + } + } + last_command_exit_value = EX_USAGE; +} + +/* ??? Needed function. ??? We have to be able to discard the constructs + created during parsing. In the case of error, we want to return + allocated objects to the memory pool. In the case of no error, we want + to throw away the information about where the allocated objects live. + (dispose_command () will actually free the command. */ +static void +discard_parser_constructs (error_p) + int error_p; +{ +} + +/* Do that silly `type "bye" to exit' stuff. You know, "ignoreeof". */ + +/* A flag denoting whether or not ignoreeof is set. */ +int ignoreeof = 0; + +/* The number of times that we have encountered an EOF character without + another character intervening. When this gets above the limit, the + shell terminates. */ +int eof_encountered = 0; + +/* The limit for eof_encountered. */ +int eof_encountered_limit = 10; + +/* If we have EOF as the only input unit, this user wants to leave + the shell. If the shell is not interactive, then just leave. + Otherwise, if ignoreeof is set, and we haven't done this the + required number of times in a row, print a message. */ +static void +handle_eof_input_unit () +{ + if (interactive) + { + /* shell.c may use this to decide whether or not to write out the + history, among other things. We use it only for error reporting + in this file. */ + if (EOF_Reached) + EOF_Reached = 0; + + /* If the user wants to "ignore" eof, then let her do so, kind of. */ + if (ignoreeof) + { + if (eof_encountered < eof_encountered_limit) + { + fprintf (stderr, "Use \"%s\" to leave the shell.\n", + login_shell ? "logout" : "exit"); + eof_encountered++; + /* Reset the prompt string to be $PS1. */ + prompt_string_pointer = (char **)NULL; + prompt_again (); + last_read_token = current_token = '\n'; + return; + } + } + + /* In this case EOF should exit the shell. Do it now. */ + reset_parser (); + exit_builtin ((WORD_LIST *)NULL); + } + else + { + /* We don't write history files, etc., for non-interactive shells. */ + EOF_Reached = 1; + } +} diff --git a/bash-20060316/CWRU/old/read.def.stdio b/bash-20060316/CWRU/old/read.def.stdio new file mode 100644 index 000000000..681138422 --- /dev/null +++ b/bash-20060316/CWRU/old/read.def.stdio @@ -0,0 +1,293 @@ +This file is read.def, from which is created read.c. +It implements the builtin "read" in Bash. + +Copyright (C) 1987, 1989, 1991 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 1, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + +$PRODUCES read.c + +$BUILTIN read +$FUNCTION read_builtin +$SHORT_DOC read [-r] [-p prompt] [-a array] [name ...] +One line is read from the standard input, and the first word is +assigned to the first NAME, the second word to the second NAME, etc. +with leftover words assigned to the last NAME. Only the characters +found in $IFS are recognized as word delimiters. The return code is +zero, unless end-of-file is encountered. If the -r option is given, +this signifies `raw' input, and backslash processing is disabled. If +the `-p' option is supplied, the string supplied as an argument is +output without a trailing newline before attempting to read. If -a +is supplied, the words read are assigned to sequential indices of ARRAY, +starting at zero. +$END + +#include +#include "../shell.h" +#include "common.h" +#include "bashgetopt.h" + +static int stream_close (); + +extern int interrupt_immediately; + +/* Read the value of the shell variables whose names follow. + The reading is done from the current input stream, whatever + that may be. Successive words of the input line are assigned + to the variables mentioned in LIST. The last variable in LIST + gets the remainder of the words on the line. If no variables + are mentioned in LIST, then the default variable is $REPLY. */ +read_builtin (list) + WORD_LIST *list; +{ + register char *varname; + int size, c, i, fildes, raw_mode, pass_next, saw_escape, opt, retval; + char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname; + FILE *input_stream; + SHELL_VAR *ifs; +#if defined (ARRAY_VARS) + SHELL_VAR *v; + WORD_LIST *alist; +#endif + + i = 0; /* Index into the string that we are reading. */ + raw_mode = 0; /* Not reading raw input be default. */ + arrayname = prompt = (char *)NULL; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "rp:a:")) != -1) + { + switch (opt) + { + case 'r': + raw_mode = 1; + break; + case 'p': + prompt = list_optarg; + break; +#if defined (ARRAY_VARS) + case 'a': + arrayname = list_optarg; + break; +#endif + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + /* We need unbuffered input from stdin. So we make a new stream with + the same file descriptor as stdin, then unbuffer it. */ + fildes = dup (fileno (stdin)); + + if (fildes == -1) + return (EXECUTION_FAILURE); + + input_stream = fdopen (fildes, "r"); + + if (!input_stream) + { + close (fildes); + return (EXECUTION_FAILURE); + } + + ifs = find_variable ("IFS"); + if (ifs == 0) + ifs_chars = " \t\n"; + else + ifs_chars = value_cell (ifs); + + input_string = xmalloc (size = 128); + + setbuf (input_stream, (char *)NULL); + + begin_unwind_frame ("read_builtin"); + add_unwind_protect (xfree, input_string); + add_unwind_protect (stream_close, input_stream); + interrupt_immediately++; + + if (prompt && isatty (0)) + { + fprintf (stderr, "%s", prompt); + fflush (stderr); + } + + pass_next = 0; /* Non-zero signifies last char was backslash. */ + saw_escape = 0; /* Non-zero signifies that we saw an escape char */ + + while ((c = getc (input_stream)) != EOF) + { + if (i + 2 >= size) + input_string = xrealloc (input_string, size += 128); + + /* If the next character is to be accepted verbatim, a backslash + newline pair still disappears from the input. */ + if (pass_next) + { + if (c == '\n') + i--; /* back up over the CTLESC */ + else + input_string[i++] = c; + pass_next = 0; + continue; + } + + if (c == '\\' && !raw_mode) + { + pass_next++; + saw_escape++; + input_string[i++] = CTLESC; + continue; + } + + if (c == '\n') + break; + + if (c == CTLESC || c == CTLNUL) + input_string[i++] = CTLESC; + + input_string[i++] = c; + } + input_string[i] = '\0'; + + interrupt_immediately--; + discard_unwind_frame ("read_builtin"); + + fclose (input_stream); + + if (c == EOF) + { + retval = EXECUTION_FAILURE; + input_string[0] = '\0'; + } + else + retval = EXECUTION_SUCCESS; + +#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. */ + if (arrayname) + { + v = find_variable (arrayname); + if (v == 0) + v = make_new_array_variable (arrayname); + else if (array_p (v) == 0) + v = convert_var_to_array (v); + + alist = list_string (input_string, " \t\n", 0); + if (alist) + { + assign_word_list (array_cell (v), alist); + dispose_words (alist); + } + free (input_string); + return (retval); + } +#endif /* ARRAY_VARS */ + + if (!list) + { + SHELL_VAR *var; + char *t; + + if (saw_escape) + { + t = dequote_string (input_string); + var = bind_variable ("REPLY", t); + free (t); + } + else + var = bind_variable ("REPLY", input_string); + var->attributes &= ~att_invisible; + free (input_string); + } + else + { + SHELL_VAR *var; + char *t; + /* This code implements the Posix.2 spec for splitting the words + read and assigning them to variables. If $IFS is unset, we + use the default value of " \t\n". */ + if (!ifs_chars) + ifs_chars = ""; + + orig_input_string = input_string; + while (list->next) + { + char *e, *t1; + + varname = list->word->word; + + /* If there are more variables than words read from the input, + the remaining variables are set to the empty string. */ + if (*input_string) + { + /* This call updates INPUT_STRING. */ + t = get_word_from_string (&input_string, ifs_chars, &e); + if (t) + *e = '\0'; + /* Don't bother to remove the CTLESC unless we added one + somewhere while reading the string. */ + if (t && saw_escape) + { + t1 = dequote_string (t); + var = bind_variable (varname, t1); + free (t1); + } + else + var = bind_variable (varname, t); + } + else + { + t = (char *)0; + var = bind_variable (varname, ""); + } + + stupidly_hack_special_variables (varname); + var->attributes &= ~att_invisible; + + if (t) + free (t); + + list = list->next; + } + + if (saw_escape) + { + t = dequote_string (input_string); + var = bind_variable (list->word->word, t); + free (t); + } + else + var = bind_variable (list->word->word, input_string); + stupidly_hack_special_variables (list->word->word); + var->attributes &= ~att_invisible; + free (orig_input_string); + } + + return (retval); +} + +/* This way I don't have to know whether fclose () is a + function or a macro. */ +static int +stream_close (file) + FILE *file; +{ + return (fclose (file)); +} diff --git a/bash-20060316/CWRU/old/set.def.save b/bash-20060316/CWRU/old/set.def.save new file mode 100644 index 000000000..87b78d7cc --- /dev/null +++ b/bash-20060316/CWRU/old/set.def.save @@ -0,0 +1,544 @@ +This file is set.def, from which is created set.c. +It implements the "set" and "unset" builtins in Bash. + +Copyright (C) 1987, 1989, 1991 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 1, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + +$PRODUCES set.c + +#include +#include "../shell.h" +#include "../flags.h" + +#include "bashgetopt.h" + +extern int interactive; +extern int noclobber, posixly_correct; +#if defined (READLINE) +extern int rl_editing_mode, no_line_editing; +#endif /* READLINE */ + +$BUILTIN set +$FUNCTION set_builtin +$SHORT_DOC set [--abefhkmnptuvxldBCHP] [-o option] [arg ...] + -a Mark variables which are modified or created for export. + -b Notify of job termination immediately. + -e Exit immediately if a command exits with a non-zero status. + -f Disable file name generation (globbing). + -h Locate and remember function commands as functions are + defined. Function commands are normally looked up when + the function is executed. + -i Force the shell to be an "interactive" one. Interactive shells + always read `~/.bashrc' on startup. + -k All keyword arguments are placed in the environment for a + command, not just those that precede the command name. + -m Job control is enabled. + -n Read commands but do not execute them. + -o option-name + Set the variable corresponding to option-name: + allexport same as -a + braceexpand same as -B +#if defined (READLINE) + emacs use an emacs-style line editing interface +#endif /* READLINE */ + errexit same as -e + histexpand same as -H + ignoreeof the shell will not exit upon reading EOF + interactive-comments + allow comments to appear in interactive commands + monitor same as -m + noclobber disallow redirection to existing files + noexec same as -n + noglob same as -f + nohash same as -d + notify save as -b + nounset same as -u + physical same as -P + posix change the behavior of bash where the default + operation differs from the 1003.2 standard to + match the standard + privileged same as -p + verbose same as -v +#if defined (READLINE) + vi use a vi-style line editing interface +#endif /* READLINE */ + xtrace same as -x + -p Turned on whenever the real and effective user ids do not match. + Disables processing of the $ENV file and importing of shell + functions. Turning this option off causes the effective uid and + gid to be set to the real uid and gid. + -t Exit after reading and executing one command. + -u Treat unset variables as an error when substituting. + -v Print shell input lines as they are read. + -x Print commands and their arguments as they are executed. + -l Save and restore the binding of the NAME in a FOR command. + -d Disable the hashing of commands that are looked up for execution. + Normally, commands are remembered in a hash table, and once + found, do not have to be looked up again. +#if defined (BRACE_EXPANSION) + -B the shell will perform brace expansion +#endif /* BRACE_EXPANSION */ +#if defined (BANG_HISTORY) + -H Enable ! style history substitution. This flag is on + by default. +#endif /* BANG_HISTORY */ + -C If set, disallow existing regular files to be overwritten + by redirection of output. + -P If set, do not follow symbolic links when executing commands + such as cd which change the current directory. + +Using + rather than - causes these flags to be turned off. The +flags can also be used upon invocation of the shell. The current +set of flags may be found in $-. The remaining n ARGs are positional +parameters and are assigned, in order, to $1, $2, .. $n. If no +ARGs are given, all shell variables are printed. +$END + +/* An a-list used to match long options for set -o to the corresponding + option letter. */ +struct { + char *name; + int letter; +} o_options[] = { + { "allexport", 'a' }, +#if defined (BRACE_EXPANSION) + { "braceexpand",'B' }, +#endif + { "errexit", 'e' }, + { "histexpand", 'H' }, + { "monitor", 'm' }, + { "noexec", 'n' }, + { "noglob", 'f' }, + { "nohash", 'd' }, +#if defined (JOB_CONTROL) + { "notify", 'b' }, +#endif /* JOB_CONTROL */ + {"nounset", 'u' }, + {"physical", 'P' }, + {"privileged", 'p' }, + {"verbose", 'v' }, + {"xtrace", 'x' }, + {(char *)NULL, 0}, +}; + +#define MINUS_O_FORMAT "%-15s\t%s\n" + +void +list_minus_o_opts () +{ + register int i; + char *on = "on", *off = "off"; + + printf (MINUS_O_FORMAT, "noclobber", (noclobber == 1) ? on : off); + + if (find_variable ("ignoreeof") || find_variable ("IGNOREEOF")) + printf (MINUS_O_FORMAT, "ignoreeof", on); + else + printf (MINUS_O_FORMAT, "ignoreeof", off); + + printf (MINUS_O_FORMAT, "interactive-comments", + interactive_comments ? on : off); + + printf (MINUS_O_FORMAT, "posix", posixly_correct ? on : off); + +#if defined (READLINE) + if (no_line_editing) + { + printf (MINUS_O_FORMAT, "emacs", off); + printf (MINUS_O_FORMAT, "vi", off); + } + else + { + /* Magic. This code `knows' how readline handles rl_editing_mode. */ + printf (MINUS_O_FORMAT, "emacs", (rl_editing_mode == 1) ? on : off); + printf (MINUS_O_FORMAT, "vi", (rl_editing_mode == 0) ? on : off); + } +#endif /* READLINE */ + + for (i = 0; o_options[i].name; i++) + { + int *on_or_off, zero = 0; + + on_or_off = find_flag (o_options[i].letter); + if (on_or_off == FLAG_UNKNOWN) + on_or_off = &zero; + printf (MINUS_O_FORMAT, o_options[i].name, (*on_or_off == 1) ? on : off); + } +} + +set_minus_o_option (on_or_off, option_name) + int on_or_off; + char *option_name; +{ + int option_char = -1; + + if (STREQ (option_name, "noclobber")) + { + if (on_or_off == FLAG_ON) + bind_variable ("noclobber", ""); + else + unbind_variable ("noclobber"); + stupidly_hack_special_variables ("noclobber"); + } + else if (STREQ (option_name, "ignoreeof")) + { + unbind_variable ("ignoreeof"); + unbind_variable ("IGNOREEOF"); + if (on_or_off == FLAG_ON) + bind_variable ("IGNOREEOF", "10"); + stupidly_hack_special_variables ("IGNOREEOF"); + } + +#if defined (READLINE) + else if ((STREQ (option_name, "emacs")) || (STREQ (option_name, "vi"))) + { + if (on_or_off == FLAG_ON) + { + rl_variable_bind ("editing-mode", option_name); + + if (interactive) + with_input_from_stdin (); + no_line_editing = 0; + } + else + { + int isemacs = (rl_editing_mode == 1); + if ((isemacs && STREQ (option_name, "emacs")) || + (!isemacs && STREQ (option_name, "vi"))) + { + if (interactive) + with_input_from_stream (stdin, "stdin"); + no_line_editing = 1; + } + else + builtin_error ("not in %s editing mode", option_name); + } + } +#endif /* READLINE */ + else if (STREQ (option_name, "interactive-comments")) + interactive_comments = (on_or_off == FLAG_ON); + else if (STREQ (option_name, "posix")) + { + posixly_correct = (on_or_off == FLAG_ON); + unbind_variable ("POSIXLY_CORRECT"); + unbind_variable ("POSIX_PEDANTIC"); + if (on_or_off == FLAG_ON) + { + bind_variable ("POSIXLY_CORRECT", ""); + stupidly_hack_special_variables ("POSIXLY_CORRECT"); + } + } + else + { + register int i; + for (i = 0; o_options[i].name; i++) + { + if (STREQ (option_name, o_options[i].name)) + { + option_char = o_options[i].letter; + break; + } + } + if (option_char == -1) + { + builtin_error ("%s: unknown option name", option_name); + return (EXECUTION_FAILURE); + } + if (change_flag (option_char, on_or_off) == FLAG_ERROR) + { + bad_option (option_name); + return (EXECUTION_FAILURE); + } + } + return (EXECUTION_SUCCESS); +} + +/* Set some flags from the word values in the input list. If LIST is empty, + then print out the values of the variables instead. If LIST contains + non-flags, then set $1 - $9 to the successive words of LIST. */ +set_builtin (list) + WORD_LIST *list; +{ + int on_or_off, flag_name, force_assignment = 0; + + if (!list) + { + SHELL_VAR **vars; + + vars = all_shell_variables (); + if (vars) + { + print_var_list (vars); + free (vars); + } + + vars = all_shell_functions (); + if (vars) + { + print_var_list (vars); + free (vars); + } + + return (EXECUTION_SUCCESS); + } + + /* Check validity of flag arguments. */ + if (*list->word->word == '-' || *list->word->word == '+') + { + register char *arg; + WORD_LIST *save_list = list; + + while (list && (arg = list->word->word)) + { + char c; + + if (arg[0] != '-' && arg[0] != '+') + break; + + /* `-' or `--' signifies end of flag arguments. */ + if (arg[0] == '-' && + (!arg[1] || (arg[1] == '-' && !arg[2]))) + break; + + while (c = *++arg) + { + if (find_flag (c) == FLAG_UNKNOWN && c != 'o') + { + char s[2]; + s[0] = c; s[1] = '\0'; + bad_option (s); + if (c == '?') + builtin_usage (); + return (c == '?' ? EXECUTION_SUCCESS : EXECUTION_FAILURE); + } + } + list = list->next; + } + list = save_list; + } + + /* Do the set command. While the list consists of words starting with + '-' or '+' treat them as flags, otherwise, start assigning them to + $1 ... $n. */ + while (list) + { + char *string = list->word->word; + + /* If the argument is `--' or `-' then signal the end of the list + and remember the remaining arguments. */ + if (string[0] == '-' && (!string[1] || (string[1] == '-' && !string[2]))) + { + list = list->next; + + /* `set --' unsets the positional parameters. */ + if (string[1] == '-') + force_assignment = 1; + + /* Until told differently, the old shell behaviour of + `set - [arg ...]' being equivalent to `set +xv [arg ...]' + stands. Posix.2 says the behaviour is marked as obsolescent. */ + else + { + change_flag ('x', '+'); + change_flag ('v', '+'); + } + + break; + } + + if ((on_or_off = *string) && + (on_or_off == '-' || on_or_off == '+')) + { + int i = 1; + while (flag_name = string[i++]) + { + if (flag_name == '?') + { + builtin_usage (); + return (EXECUTION_SUCCESS); + } + else if (flag_name == 'o') /* -+o option-name */ + { + char *option_name; + WORD_LIST *opt; + + opt = list->next; + + if (!opt) + { + list_minus_o_opts (); + continue; + } + + option_name = opt->word->word; + + if (!option_name || !*option_name || (*option_name == '-')) + { + list_minus_o_opts (); + continue; + } + list = list->next; /* Skip over option name. */ + + if (set_minus_o_option (on_or_off, option_name) != EXECUTION_SUCCESS) + return (EXECUTION_FAILURE); + } + else + { + if (change_flag (flag_name, on_or_off) == FLAG_ERROR) + { + char opt[3]; + opt[0] = on_or_off; + opt[1] = flag_name; + opt[2] = '\0'; + bad_option (opt); + builtin_usage (); + return (EXECUTION_FAILURE); + } + } + } + } + else + { + break; + } + list = list->next; + } + + /* Assigning $1 ... $n */ + if (list || force_assignment) + remember_args (list, 1); + return (EXECUTION_SUCCESS); +} + +$BUILTIN unset +$FUNCTION unset_builtin +$SHORT_DOC unset [-f] [-v] [name ...] +For each NAME, remove the corresponding variable or function. Given +the `-v', unset will only act on variables. Given the `-f' flag, +unset will only act on functions. With neither flag, unset first +tries to unset a variable, and if that fails, then tries to unset a +function. Some variables (such as PATH and IFS) cannot be unset; also +see readonly. +$END + +#define NEXT_VARIABLE() any_failed++; list = list->next; continue; + +unset_builtin (list) + WORD_LIST *list; +{ + int unset_function, unset_variable, unset_array, opt, any_failed; + char *name; + + unset_function = unset_variable = unset_array = any_failed = 0; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "fv")) != -1) + { + switch (opt) + { + case 'f': + unset_function = 1; + break; + case 'v': + unset_variable = 1; + break; + default: + builtin_usage (); + return (EXECUTION_FAILURE); + } + } + + list = loptend; + + if (unset_function && unset_variable) + { + builtin_error ("cannot simultaneously unset a function and a variable"); + return (EXECUTION_FAILURE); + } + + while (list) + { + SHELL_VAR *var; + int tem; +#if defined (ARRAY_VARS) + char *t; +#endif + + name = list->word->word; + +#if defined (ARRAY_VARS) + if (!unset_function && valid_array_reference (name)) + { + t = strchr (name, '['); + *t++ = '\0'; + unset_array++; + } +#endif + + var = unset_function ? find_function (name) : find_variable (name); + + if (var && !unset_function && non_unsettable_p (var)) + { + builtin_error ("%s: cannot unset", name); + NEXT_VARIABLE (); + } + + /* Posix.2 says that unsetting readonly variables is an error. */ + if (var && readonly_p (var)) + { + builtin_error ("%s: cannot unset: readonly %s", + name, unset_function ? "function" : "variable"); + NEXT_VARIABLE (); + } + + /* Unless the -f option is supplied, the name refers to a variable. */ +#if defined (ARRAY_VARS) + if (var && unset_array) + { + if (array_p (var) == 0) + { + builtin_error ("%s: not an array variable", name); + NEXT_VARIABLE (); + } + else + tem = unbind_array_element (var, t); + } + else +#endif /* ARRAY_VARS */ + tem = makunbound (name, unset_function ? shell_functions : shell_variables); + + /* This is what Posix.2 draft 11+ says. ``If neither -f nor -v + is specified, the name refers to a variable; if a variable by + that name does not exist, a function by that name, if any, + shall be unset.'' */ + if ((tem == -1) && !unset_function && !unset_variable) + tem = makunbound (name, shell_functions); + + if (tem == -1) + any_failed++; + else if (!unset_function) + stupidly_hack_special_variables (name); + + list = list->next; + } + + if (any_failed) + return (EXECUTION_FAILURE); + else + return (EXECUTION_SUCCESS); +} diff --git a/bash-20060316/CWRU/old/subst.c.noctlnul b/bash-20060316/CWRU/old/subst.c.noctlnul new file mode 100644 index 000000000..b6621c0d0 --- /dev/null +++ b/bash-20060316/CWRU/old/subst.c.noctlnul @@ -0,0 +1,5659 @@ +/* subst.c -- The part of the shell that does parameter, command, and + globbing substitutions. */ + +/* Copyright (C) 1987,1989 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#include "config.h" + +#include "bashtypes.h" +#include +#include +#include +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "bashansi.h" +#include "posixstat.h" + +#include "shell.h" +#include "flags.h" +#include "jobs.h" +#include "execute_cmd.h" +#include "filecntl.h" +#include "trap.h" +#include "pathexp.h" + +#include "builtins/getopt.h" +#include "builtins/common.h" + +#if defined (READLINE) +# include "bashline.h" +# include +#else +# include +#endif + +#if defined (HISTORY) +# include "bashhist.h" +# include +#endif + +#include + +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +/* The size that strings change by. */ +#define DEFAULT_ARRAY_SIZE 128 + +/* How to quote character C. */ +static char *make_quoted_char (); + +/* Process ID of the last command executed within command substitution. */ +pid_t last_command_subst_pid = NO_PID; + +/* Extern functions and variables from different files. */ +extern int last_command_exit_value, interactive, interactive_shell; +extern int subshell_environment, startup_state; +extern int dollar_dollar_pid; +extern int posixly_correct; +extern int eof_encountered, eof_encountered_limit, ignoreeof; +extern char *this_command_name; +extern struct fd_bitmap *current_fds_to_close; +#if defined (READLINE) +extern int no_line_editing; +extern int hostname_list_initialized; +#endif + +/* Non-zero means to allow unmatched globbed filenames to expand to + a null file. */ +int allow_null_glob_expansion; + +static WORD_LIST expand_word_error, expand_word_fatal; +static char expand_param_error, expand_param_fatal; + +static WORD_LIST *expand_string_internal (); +static WORD_LIST *expand_word_internal (), *expand_word_list_internal (); +static WORD_LIST *expand_string_leave_quoted (); +static WORD_LIST *expand_string_for_rhs (); +static WORD_LIST *word_list_split (); +static WORD_LIST *quote_list (), *dequote_list (); +static int unquoted_substring (), unquoted_member (); +static int do_assignment_internal (); +static char *string_extract_verbatim (), *string_extract (); +static char *string_extract_double_quoted (), *string_extract_single_quoted (); +static int skip_single_quoted (), skip_double_quoted (); +static char *extract_delimited_string (); +static char *extract_dollar_brace_string (); + +/* **************************************************************** */ +/* */ +/* Utility Functions */ +/* */ +/* **************************************************************** */ + +/* Cons a new string from STRING starting at START and ending at END, + not including END. */ +char * +substring (string, start, end) + char *string; + int start, end; +{ + register int len; + register char *result; + + len = end - start; + result = xmalloc (len + 1); + strncpy (result, string + start, len); + result[len] = '\0'; + return (result); +} + +/* Conventions: + + A string with s[0] == CTLNUL && s[1] == 0 is a quoted null string. + The parser passes CTLNUL as CTLESC CTLNUL. */ + +/* The parser passes us CTLESC as CTLESC CTLESC and CTLNUL as CTLESC CTLNUL. + This is necessary to make unquoted CTLESC and CTLNUL characters in the + data stream pass through properly. + Here we remove doubled CTLESC characters inside quoted strings before + quoting the entire string, so we do not double the number of CTLESC + characters. */ +static char * +remove_quoted_escapes (string) + char *string; +{ + register char *s; + int docopy; + char *t, *t1; + + if (string == NULL) + return (string); + + t1 = t = xmalloc (strlen (string) + 1); + for (docopy = 0, s = string; *s; s++, t1++) + { +#if 0 + if (*s == CTLESC && (s[1] == CTLESC || s[1] == CTLNUL)) +#else + if (*s == CTLESC && s[1] == CTLESC) +#endif + { + s++; + docopy = 1; + } + *t1 = *s; + } + *t1 = '\0'; + if (docopy) + strcpy (string, t); + free (t); + return (string); +} + +/* Quote escape characters in string s, but no other characters. This is + used to protect CTLESC and CTLNUL in variable values from the rest of + the word expansion process after the variable is expanded. */ +static char * +quote_escapes (string) + char *string; +{ + register char *s, *t; + char *result; + + result = xmalloc ((strlen (string) * 2) + 1); + for (s = string, t = result; *s; ) + { + if (*s == CTLESC /* || *s == CTLNUL */) + *t++ = CTLESC; + *t++ = *s++; + } + *t = '\0'; + return (result); +} + +static char * +dequote_escapes (string) + char *string; +{ + register char *s, *t; + char *result; + + result = xmalloc (strlen (string) + 1); + for (s = string, t = result; *s; ) + { +#if 0 + if (*s == CTLESC && (s[1] == CTLESC || s[1] == CTLNUL)) +#else + if (*s == CTLESC && s[1] == CTLESC) +#endif + { + s++; + if (*s == '\0') + break; + } + *t++ = *s++; + } + *t = '\0'; + return result; +} + +/* Extract a substring from STRING, starting at SINDEX and ending with + one of the characters in CHARLIST. Don't make the ending character + part of the string. Leave SINDEX pointing at the ending character. + Understand about backslashes in the string. If VARNAME is non-zero, + and array variables have been compiled into the shell, everything + between a `[' and a corresponding `]' is skipped over. */ +static char * +string_extract (string, sindex, charlist, varname) + char *string, *charlist; + int *sindex, varname; +{ + register int c, i; + char *temp; + + for (i = *sindex; c = string[i]; i++) + { + if (c == '\\') + if (string[i + 1]) + i++; + else + break; +#if defined (ARRAY_VARS) + else if (varname && c == '[') + { + int ni; + /* If this is an array subscript, skip over it and continue. */ + ni = skipsubscript (string, i); + if (string[ni] == ']') + i = ni; + } +#endif + else if (MEMBER (c, charlist)) + break; + } + c = i - *sindex; + temp = xmalloc (1 + c); + strncpy (temp, string + *sindex, c); + temp[c] = '\0'; + *sindex = i; + return (temp); +} + +/* Extract the contents of STRING as if it is enclosed in double quotes. + SINDEX, when passed in, is the offset of the character immediately + following the opening double quote; on exit, SINDEX is left pointing after + the closing double quote. If STRIPDQ is non-zero, unquoted double + quotes are stripped and the string is terminated by a null byte. + Backslashes between the embedded double quotes are processed. If STRIPDQ + is zero, an unquoted `"' terminates the string. */ +static inline char * +string_extract_double_quoted (string, sindex, stripdq) + char *string; + int *sindex, stripdq; +{ + int c, j, i, t; + char *temp, *ret; /* The new string we return. */ + int pass_next, backquote, si; /* State variables for the machine. */ + int dquote; + + pass_next = backquote = dquote = 0; + temp = xmalloc (1 + strlen (string) - *sindex); + + for (j = 0, i = *sindex; c = string[i]; i++) + { + /* Process a character that was quoted by a backslash. */ + if (pass_next) + { + /* Posix.2 sez: + + ``The backslash shall retain its special meaning as an escape + character only when followed by one of the characters: + $ ` " \ ''. + + If STRIPDQ is zero, we handle the double quotes here and let + expand_word_internal handle the rest. If STRIPDQ is non-zero, + we have already been through one round of backslash stripping, + and want to strip these backslashes only if DQUOTE is non-zero, + indicating that we are inside an embedded double-quoted string. */ + + /* If we are in an embedded quoted string, then don't strip + backslashes before characters for which the backslash + retains its special meaning, but remove backslashes in + front of other characters. If we are not in an + embedded quoted string, don't strip backslashes at all. + This mess is necessary because the string was already + surrounded by double quotes (and sh has some really weird + quoting rules). + The returned string will be run through expansion as if + it were double-quoted. */ + if ((stripdq == 0 && c != '"') || + (stripdq && ((dquote && strchr (slashify_in_quotes, c)) || dquote == 0))) + temp[j++] = '\\'; + temp[j++] = c; + pass_next = 0; + continue; + } + + /* A backslash protects the next character. The code just above + handles preserving the backslash in front of any character but + a double quote. */ + if (c == '\\') + { + pass_next++; + continue; + } + + /* Inside backquotes, ``the portion of the quoted string from the + initial backquote and the characters up to the next backquote + that is not preceded by a backslash, having escape characters + removed, defines that command''. */ + if (backquote) + { + if (c == '`') + backquote = 0; + temp[j++] = c; + continue; + } + + if (c == '`') + { + temp[j++] = c; + backquote++; + continue; + } + + /* Pass everything between `$(' and the matching `)' or a quoted + ${ ... } pair through according to the Posix.2 specification. */ + if (c == '$' && ((string[i + 1] == '(') || (string[i + 1] == '{'))) + { + si = i + 2; + if (string[i + 1] == '(') + ret = extract_delimited_string (string, &si, "$(", "(", ")"); + else + ret = extract_dollar_brace_string (string, &si, 1); + + temp[j++] = '$'; + temp[j++] = string[i + 1]; + + for (t = 0; ret[t]; t++, j++) + temp[j] = ret[t]; + temp[j++] = string[si]; + + i = si; + free (ret); + continue; + } + + /* Add any character but a double quote to the quoted string we're + accumulating. */ + if (c != '"') + { + temp[j++] = c; + continue; + } + + /* c == '"' */ + if (stripdq) + { + dquote ^= 1; + continue; + } + + break; + } + temp[j] = '\0'; + + /* Point to after the closing quote. */ + if (c) + i++; + *sindex = i; + + return (temp); +} + +/* This should really be another option to string_extract_double_quoted. */ +static inline int +skip_double_quoted (string, sind) + char *string; + int sind; +{ + int c, j, i; + char *ret; + int pass_next, backquote, si; + + pass_next = backquote = 0; + + for (j = 0, i = sind; c = string[i]; i++) + { + if (pass_next) + { + pass_next = 0; + continue; + } + else if (c == '\\') + { + pass_next++; + continue; + } + else if (backquote) + { + if (c == '`') + backquote = 0; + continue; + } + else if (c == '`') + { + backquote++; + continue; + } + else if (c == '$' && ((string[i + 1] == '(') || (string[i + 1] == '{'))) + { + si = i + 2; + if (string[i + 1] == '(') + ret = extract_delimited_string (string, &si, "$(", "(", ")"); + else + ret = extract_dollar_brace_string (string, &si, 0); + i = si; + free (ret); + continue; + } + else if (c != '"') + continue; + else + break; + } + + if (c) + i++; + + return (i); +} + +/* Extract the contents of STRING as if it is enclosed in single quotes. + SINDEX, when passed in, is the offset of the character immediately + following the opening single quote; on exit, SINDEX is left pointing after + the closing single quote. */ +static inline char * +string_extract_single_quoted (string, sindex) + char *string; + int *sindex; +{ + register int i, j; + char *temp; + + for (i = *sindex; string[i] && string[i] != '\''; i++) + ; + + j = i - *sindex; + temp = xmalloc (1 + j); + strncpy (temp, string + *sindex, j); + temp[j] = '\0'; + + if (string[i]) + i++; + *sindex = i; + + return (temp); +} + +static inline int +skip_single_quoted (string, sind) + char *string; + int sind; +{ + register int i; + + for (i = sind; string[i] && string[i] != '\''; i++) + ; + if (string[i]) + i++; + return i; +} + +/* Just like string_extract, but doesn't hack backslashes or any of + that other stuff. Obeys quoting. Used to do splitting on $IFS. */ +static char * +string_extract_verbatim (string, sindex, charlist) + char *string, *charlist; + int *sindex; +{ + register int i = *sindex; + int c; + char *temp; + + if (charlist[0] == '\'' && charlist[1] == '\0') + return (string_extract_single_quoted (string, sindex)); + + for (i = *sindex; c = string[i]; i++) + { + if (c == CTLESC) + { + i++; + continue; + } + + if (MEMBER (c, charlist)) + break; + } + + c = i - *sindex; + temp = xmalloc (1 + c); + strncpy (temp, string + *sindex, c); + temp[c] = '\0'; + *sindex = i; + + return (temp); +} + +/* Extract the $( construct in STRING, and return a new string. + Start extracting at (SINDEX) as if we had just seen "$(". + Make (SINDEX) get the position just after the matching ")". */ +char * +extract_command_subst (string, sindex) + char *string; + int *sindex; +{ + return (extract_delimited_string (string, sindex, "$(", "(", ")")); +} + +/* Extract the $[ construct in STRING, and return a new string. + Start extracting at (SINDEX) as if we had just seen "$[". + Make (SINDEX) get the position just after the matching "]". */ +char * +extract_arithmetic_subst (string, sindex) + char *string; + int *sindex; +{ + return (extract_delimited_string (string, sindex, "$[", "[", "]")); +} + +#if defined (PROCESS_SUBSTITUTION) +/* Extract the <( or >( construct in STRING, and return a new string. + Start extracting at (SINDEX) as if we had just seen "<(". + Make (SINDEX) get the position just after the matching ")". */ +char * +extract_process_subst (string, starter, sindex) + char *string; + char *starter; + int *sindex; +{ + return (extract_delimited_string (string, sindex, starter, "(", ")")); +} +#endif /* PROCESS_SUBSTITUTION */ + +#if defined (ARRAY_VARS) +char * +extract_array_assignment_list (string, sindex) + char *string; + int *sindex; +{ + return (extract_delimited_string (string, sindex, "(", "(", ")")); +} +#endif + +/* Extract and create a new string from the contents of STRING, a + character string delimited with OPENER and CLOSER. SINDEX is + the address of an int describing the current offset in STRING; + it should point to just after the first OPENER found. On exit, + SINDEX gets the position just after the matching CLOSER. If + OPENER is more than a single character, ALT_OPENER, if non-null, + contains a character string that can also match CLOSER and thus + needs to be skipped. */ + +#define INC_NEST \ + do \ + { \ + if (delimiter == 0) \ + nesting_level++; \ + else \ + delimited_nesting_level++; \ + } \ + while (0) + +/* Cannot use the do...while(0) idiom because of the `break' in the + macro body. */ +#define DEC_NEST \ + if (delimiter && delimited_nesting_level) \ + delimited_nesting_level--; \ + if (delimiter == 0) \ + { \ + nesting_level--; \ + if (nesting_level == 0) \ + break; \ + } + +static char * +extract_delimited_string (string, sindex, opener, alt_opener, closer) + char *string; + int *sindex; + char *opener, *alt_opener, *closer; +{ + register int i, c, l; + int pass_character, nesting_level; + int delimiter, delimited_nesting_level; + int len_closer, len_opener, len_alt_opener; + char *result; + + len_opener = STRLEN (opener); + len_alt_opener = STRLEN (alt_opener); + len_closer = STRLEN (closer); + + pass_character = delimiter = delimited_nesting_level = 0; + + nesting_level = 1; + + for (i = *sindex; c = string[i]; i++) + { + if (pass_character) + { + pass_character = 0; + continue; + } + + if (c == CTLESC) + { + pass_character++; + continue; + } + + if (c == '\\' && delimiter == '"' && + (member (string[i + 1], slashify_in_quotes))) + { + pass_character++; + continue; + } + + if (!delimiter || delimiter == '"') + { + if (STREQN (string + i, opener, len_opener)) + { + INC_NEST; + i += len_opener - 1; + continue; + } + + if (len_alt_opener && STREQN (string + i, alt_opener, len_alt_opener)) + { + INC_NEST; + i += len_alt_opener - 1; + continue; + } + + if (STREQN (string + i, closer, len_closer)) + { + i += len_closer - 1; + DEC_NEST; + } + } + + if (delimiter) + { + if (c == delimiter || delimiter == '\\') + delimiter = 0; + continue; + } + else if (c == '"' || c == '\'' || c == '\\') + delimiter = c; + } + + l = i - *sindex; + result = xmalloc (1 + l); + strncpy (result, string + *sindex, l); + result[l] = '\0'; + *sindex = i; + + if (c == 0 && (delimiter || nesting_level)) + { + report_error ("bad substitution: no `%s' in %s", closer, string); + free (result); + jump_to_top_level (DISCARD); + } + return (result); +} + +/* Extract a parameter expansion expression within ${ and } from STRING. + Obey the Posix.2 rules for finding the ending `}': count braces while + skipping over enclosed quoted strings and command substitutions. + SINDEX is the address of an int describing the current offset in STRING; + it should point to just after the first `{' found. On exit, SINDEX + gets the position just after the matching `}'. QUOTED is non-zero if + this occurs inside double quotes. */ +/* XXX -- this is very similar to extract_delimited_string -- XXX */ +static char * +extract_dollar_brace_string (string, sindex, quoted) + char *string; + int *sindex, quoted; +{ + register int i, c, l; + int pass_character, nesting_level, si; + int delimiter, delimited_nesting_level; + char *result, *t; + + pass_character = delimiter = delimited_nesting_level = 0; + + nesting_level = 1; + + for (i = *sindex; c = string[i]; i++) + { + if (pass_character) + { + pass_character = 0; + continue; + } + + if (c == CTLESC) + { + pass_character++; + continue; + } + + /* Backslashes quote the next character. */ + if (c == '\\') + { + if ((delimiter == '"') && + (member (string[i + 1], slashify_in_quotes))) + { + pass_character++; + continue; + } + } + + if (!delimiter || delimiter == '"') + { + if (string[i] == '$' && string[i+1] == '{') + { + INC_NEST; + i++; + continue; + } + + /* Pass the contents of old-style command substitutions through + verbatim. */ + if (string[i] == '`') + { + si = i + 1; + t = string_extract (string, &si, "`", 0); + i = si; + free (t); + continue; + } + + /* Pass the contents of new-style command substitutions through + verbatim. */ + if (string[i] == '$' && string[i+1] == '(') + { + si = i + 2; + t = extract_delimited_string (string, &si, "$(", "(", ")"); + i = si; + free (t); + continue; + } + + if (string[i] == '{') + { + INC_NEST; + continue; + } + + if (string[i] == '}') + { + DEC_NEST; + } + } + + if (delimiter) + { + if (c == delimiter || delimiter == '\\') + delimiter = 0; + continue; + } + else if (c == '"' || c == '\'' || c == '\\') + delimiter = c; + } + + l = i - *sindex; + result = xmalloc (1 + l); + strncpy (result, string + *sindex, l); + result[l] = '\0'; + *sindex = i; + + if (c == 0 && (delimiter || nesting_level)) + { + report_error ("bad substitution: no ending `}' in %s", string); + free (result); + jump_to_top_level (DISCARD); + } + return (result); +} + +/* Remove backslashes which are quoting backquotes from STRING. Modifies + STRING, and returns a pointer to it. */ +char * +de_backslash (string) + char *string; +{ + register int i, l; + + for (i = 0, l = strlen (string); i < l; i++) + if (string[i] == '\\' && (string[i + 1] == '`' || string[i + 1] == '\\' || + string[i + 1] == '$')) + strcpy (string + i, string + i + 1); /* XXX - should be memmove */ + return (string); +} + +#if 0 +/* Replace instances of \! in a string with !. */ +void +unquote_bang (string) + char *string; +{ + register int i, j; + register char *temp; + + temp = xmalloc (1 + strlen (string)); + + for (i = 0, j = 0; (temp[j] = string[i]); i++, j++) + { + if (string[i] == '\\' && string[i + 1] == '!') + { + temp[j] = '!'; + i++; + } + } + strcpy (string, temp); + free (temp); +} +#endif + +#if defined (READLINE) +/* Return 1 if the portion of STRING ending at EINDEX is quoted (there is + an unclosed quoted string), or if the character at EINDEX is quoted + by a backslash. */ +int +char_is_quoted (string, eindex) + char *string; + int eindex; +{ + int i, pass_next, quoted; + + for (i = pass_next = quoted = 0; i <= eindex; i++) + { + if (pass_next) + { + pass_next = 0; + if (i >= eindex) /* XXX was if (i >= eindex - 1) */ + return 1; + continue; + } + else if (string[i] == '\'' || string[i] == '"') + { + i = (string[i] == '\'') ? skip_single_quoted (string, ++i) + : skip_double_quoted (string, ++i); + if (i > eindex) + return 1; + } + else if (string[i] == '\\') + { + pass_next = 1; + continue; + } + } + return (0); +} + +int +unclosed_pair (string, eindex, openstr) + char *string; + int eindex; + char *openstr; +{ + int i, pass_next, openc, olen; + + olen = strlen (openstr); + for (i = pass_next = openc = 0; i <= eindex; i++) + { + if (pass_next) + { + pass_next = 0; + if (i >= eindex) /* XXX was if (i >= eindex - 1) */ + return 0; + continue; + } + else if (STREQN (string + i, openstr, olen)) + { + openc = 1 - openc; + i += olen - 1; + } + else if (string[i] == '\'' || string[i] == '"') + { + i = (string[i] == '\'') ? skip_single_quoted (string, i) + : skip_double_quoted (string, i); + if (i > eindex) + return 0; + } + else if (string[i] == '\\') + { + pass_next = 1; + continue; + } + } + return (openc); +} +#endif /* READLINE */ + +#if 0 +/* UNUSED */ +/* Extract the name of the variable to bind to from the assignment string. */ +char * +assignment_name (string) + char *string; +{ + int offset; + char *temp; + + offset = assignment (string); + if (offset == 0) + return (char *)NULL; + temp = xmalloc (offset + 1); + strncpy (temp, string, offset); + temp[offset] = '\0'; + return (temp); +} +#endif + +/* Return a single string of all the words in LIST. SEP is the separator + to put between individual elements of LIST in the output string. */ +static char * +string_list_internal (list, sep) + WORD_LIST *list; + char *sep; +{ + register WORD_LIST *t; + char *result, *r; + int word_len, sep_len, result_size; + + if (list == 0) + return ((char *)NULL); + + /* This is nearly always called with either sep[0] == 0 or sep[1] == 0. */ + sep_len = STRLEN (sep); + result_size = 0; + + for (t = list; t; t = t->next) + { + if (t != list) + result_size += sep_len; + result_size += strlen (t->word->word); + } + + r = result = xmalloc (result_size + 1); + + for (t = list; t; t = t->next) + { + if (t != list && sep_len) + { + if (sep_len > 1) + { + FASTCOPY (sep, r, sep_len); + r += sep_len; + } + else + *r++ = sep[0]; + } + + word_len = strlen (t->word->word); + FASTCOPY (t->word->word, r, word_len); + r += word_len; + } + + *r = '\0'; + return (result); +} + +/* Return a single string of all the words present in LIST, separating + each word with a space. */ +char * +string_list (list) + WORD_LIST *list; +{ + return (string_list_internal (list, " ")); +} + +/* Return a single string of all the words present in LIST, obeying the + quoting rules for "$*", to wit: (P1003.2, draft 11, 3.5.2) "If the + expansion [of $*] appears within a double quoted string, it expands + to a single field with the value of each parameter separated by the + first character of the IFS variable, or by a if IFS is unset." */ +char * +string_list_dollar_star (list) + WORD_LIST *list; +{ + char *ifs, sep[2]; + + ifs = get_string_value ("IFS"); + if (ifs == 0) + sep[0] = ' '; + else if (*ifs == '\0') + sep[0] = '\0'; + else + sep[0] = *ifs; + + sep[1] = '\0'; + + return (string_list_internal (list, sep)); +} + +/* Return the list of words present in STRING. Separate the string into + words at any of the characters found in SEPARATORS. If QUOTED is + non-zero then word in the list will have its quoted flag set, otherwise + the quoted flag is left as make_word () deemed fit. + + This obeys the P1003.2 word splitting semantics. If `separators' is + exactly , then the splitting algorithm is that of + the Bourne shell, which treats any sequence of characters from `separators' + as a delimiter. If IFS is unset, which results in `separators' being set + to "", no splitting occurs. If separators has some other value, the + following rules are applied (`IFS white space' means zero or more + occurrences of , , or , as long as those characters + are in `separators'): + + 1) IFS white space is ignored at the start and the end of the + string. + 2) Each occurrence of a character in `separators' that is not + IFS white space, along with any adjacent occurrences of + IFS white space delimits a field. + 3) Any nonzero-length sequence of IFS white space delimits a field. + */ + +/* BEWARE! list_string strips null arguments. Don't call it twice and + expect to have "" preserved! */ + +/* Perform quoted null character removal on STRING. We don't allow any + quoted null characters in the middle or at the ends of strings because + of how expand_word_internal works. remove_quoted_nulls () simply + turns STRING into an empty string iff it only consists of a quoted null. */ +#define remove_quoted_nulls(string) \ + do { if (QUOTED_NULL (string)) string[0] ='\0'; } while (0) + +/* Perform quoted null character removal on each element of LIST. + This modifies LIST. */ +void +word_list_remove_quoted_nulls (list) + WORD_LIST *list; +{ + register WORD_LIST *t; + + for (t = list; t; t = t->next) + remove_quoted_nulls (t->word->word); +} + +/* This performs word splitting and quoted null character removal on + STRING. */ +#define issep(c) (member ((c), separators)) + +WORD_LIST * +list_string (string, separators, quoted) + register char *string, *separators; + int quoted; +{ + WORD_LIST *result; + WORD_DESC *t; + char *current_word, *s; + int sindex, sh_style_split; + + if (!string || !*string) + return ((WORD_LIST *)NULL); + + sh_style_split = + separators && *separators && (STREQ (separators, " \t\n")); + + /* Remove sequences of whitespace at the beginning of STRING, as + long as those characters appear in IFS. Do not do this if + STRING is quoted or if there are no separator characters. */ + if (!quoted || !separators || !*separators) + { + for (s = string; *s && spctabnl (*s) && issep (*s); s++); + + if (!*s) + return ((WORD_LIST *)NULL); + + string = s; + } + + /* OK, now STRING points to a word that does not begin with white space. + The splitting algorithm is: + extract a word, stopping at a separator + skip sequences of spc, tab, or nl as long as they are separators + This obeys the field splitting rules in Posix.2. */ + for (result = (WORD_LIST *)NULL, sindex = 0; string[sindex]; ) + { + current_word = string_extract_verbatim (string, &sindex, separators); + if (current_word == 0) + break; + + /* If we have a quoted empty string, add a quoted null argument. We + want to preserve the quoted null character iff this is a quoted + empty string; otherwise the quoted null characters are removed + below. */ +#if 0 + if (QUOTED_NULL (current_word)) + { + t = make_bare_word (""); + t->flags |= W_QUOTED; + free (t->word); + t->word = make_quoted_char ('\0'); + result = make_word_list (t, result); + } + else if (current_word[0] != '\0') +#else + if (current_word[0] != '\0') +#endif + { + /* If we have something, then add it regardless. However, + perform quoted null character removal on the current word. */ +#if 0 + remove_quoted_nulls (current_word); +#endif + result = make_word_list (make_word (current_word), result); + if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) + result->word->flags |= W_QUOTED; + } + + /* If we're not doing sequences of separators in the traditional + Bourne shell style, then add a quoted null argument. */ + else if (!sh_style_split && !spctabnl (string[sindex])) + { + t = make_bare_word (""); + t->flags |= W_QUOTED; + free (t->word); + t->word = make_quoted_char ('\0'); + result = make_word_list (t, result); + } + + free (current_word); + + /* Move past the current separator character. */ + if (string[sindex]) + sindex++; + + /* Now skip sequences of space, tab, or newline characters if they are + in the list of separators. */ + while (string[sindex] && spctabnl (string[sindex]) && issep (string[sindex])) + sindex++; + } + return (REVERSE_LIST (result, WORD_LIST *)); +} + +/* Parse a single word from STRING, using SEPARATORS to separate fields. + ENDPTR is set to the first character after the word. This is used by + the `read' builtin. + XXX - this function is very similar to list_string; they should be + combined - XXX */ +char * +get_word_from_string (stringp, separators, endptr) + char **stringp, *separators, **endptr; +{ + register char *s; + char *current_word; + int sindex, sh_style_split; + + if (!stringp || !*stringp || !**stringp) + return ((char *)NULL); + + s = *stringp; + + sh_style_split = + separators && *separators && (STREQ (separators, " \t\n")); + + /* Remove sequences of whitespace at the beginning of STRING, as + long as those characters appear in IFS. */ + if (sh_style_split || !separators || !*separators) + { + for (; *s && spctabnl (*s) && issep (*s); s++); + + /* If the string is nothing but whitespace, update it and return. */ + if (!*s) + { + *stringp = s; + if (endptr) + *endptr = s; + return ((char *)NULL); + } + } + + /* OK, S points to a word that does not begin with white space. + Now extract a word, stopping at a separator, save a pointer to + the first character after the word, then skip sequences of spc, + tab, or nl as long as they are separators. + + This obeys the field splitting rules in Posix.2. */ + sindex = 0; + current_word = string_extract_verbatim (s, &sindex, separators); + + /* Set ENDPTR to the first character after the end of the word. */ + if (endptr) + *endptr = s + sindex; + + /* Move past the current separator character. */ + if (s[sindex]) + sindex++; + + /* Now skip sequences of space, tab, or newline characters if they are + in the list of separators. */ + while (s[sindex] && spctabnl (s[sindex]) && issep (s[sindex])) + sindex++; + + /* Update STRING to point to the next field. */ + *stringp = s + sindex; + return (current_word); +} + +/* Remove IFS white space at the end of STRING. Start at the end + of the string and walk backwards until the beginning of the string + or we find a character that's not IFS white space and not CTLESC. + Only let CTLESC escape a white space character if SAW_ESCAPE is + non-zero. */ +char * +strip_trailing_ifs_whitespace (string, separators, saw_escape) + char *string, *separators; + int saw_escape; +{ + char *s; + + s = string + STRLEN (string) - 1; + while (s > string && ((spctabnl (*s) && issep (*s)) || + (saw_escape && *s == CTLESC && spctabnl (s[1])))) + s--; + *++s = '\0'; + return string; +} + +#if defined (ARRAY_VARS) +WORD_LIST * +list_string_with_quotes (string) + char *string; +{ + WORD_LIST *list; + char *token, *s; + int c, i, tokstart, len; + + for (s = string; s && *s && spctabnl (*s); s++) + ; + if (s == 0 || *s == 0) + return ((WORD_LIST *)NULL); + + tokstart = i = 0; + list = (WORD_LIST *)NULL; + while (1) + { + c = s[i]; + if (c == '\\') + { + i++; + if (s[i]) + i++; + } + else if (c == '\'') + i = skip_single_quoted (s, ++i); + else if (c == '"') + i = skip_double_quoted (s, ++i); + else if (c == 0 || spctabnl (c)) + { + /* We have found the end of a token. Make a word out of it and + add it to the word list. */ + len = i - tokstart; + token = xmalloc (len + 1); + strncpy (token, s + tokstart, len); + token[len] = '\0'; + list = make_word_list (make_word (token), list); + free (token); + while (spctabnl (s[i])) + i++; + if (s[i]) + tokstart = i; + else + break; + } + else + i++; /* normal character */ + } + return (REVERSE_LIST (list, WORD_LIST *)); +} +#endif /* ARRAY_VARS */ + +#if defined (PROCESS_SUBSTITUTION) +#define EXP_CHAR(s) (s == '$' || s == '`' || s == '<' || s == '>' || s == CTLESC) +#else +#define EXP_CHAR(s) (s == '$' || s == '`' || s == CTLESC) +#endif + +/* If there are any characters in STRING that require full expansion, + then call FUNC to expand STRING; otherwise just perform quote + removal if necessary. This returns a new string. */ +static char * +maybe_expand_string (string, quoted, func) + char *string; + int quoted; + WORD_LIST *(*func)(); +{ + WORD_LIST *list; + int i, saw_quote; + char *ret; + + for (i = saw_quote = 0; string[i]; i++) + { + if (EXP_CHAR (string[i])) + break; + else if (string[i] == '\'' || string[i] == '\\' || string[i] == '"') + saw_quote = 1; + } + + if (string[i]) + { + list = (*func) (string, quoted); + if (list) + { + ret = string_list (list); + dispose_words (list); + } + else + ret = (char *)NULL; + } + else if (saw_quote && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0)) + ret = string_quote_removal (string, quoted); + else + ret = savestring (string); + return ret; +} + +#if defined (ARRAY_VARS) +SHELL_VAR * +do_array_element_assignment (name, value) + char *name, *value; +{ + char *t; + int ind, ni; + SHELL_VAR *entry; + + t = strchr (name, '['); + if (t == 0) + return ((SHELL_VAR *)NULL); + ind = t - name; + ni = skipsubscript (name, ind); + if ((ALL_ELEMENT_SUB (t[1]) && t[2] == ']') || (ni <= ind + 1)) + { + report_error ("%s: bad array subscript", name); + return ((SHELL_VAR *)NULL); + } + *t++ = '\0'; + ind = array_expand_index (t, ni - ind); + if (ind < 0) + { + t[-1] = '['; /* restore original name */ + report_error ("%s: bad array subscript", name); + return ((SHELL_VAR *)NULL); + } + entry = bind_array_variable (name, ind, value); + t[-1] = '['; /* restore original name */ + return (entry); +} +#endif /* ARRAY_VARS */ + +/* Given STRING, an assignment string, get the value of the right side + of the `=', and bind it to the left side. If EXPAND is true, then + perform parameter expansion, command substitution, and arithmetic + expansion on the right-hand side. Perform tilde expansion in any + case. Do not perform word splitting on the result of expansion. */ +static int +do_assignment_internal (string, expand) + char *string; + int expand; +{ + int offset; + char *name, *value; + SHELL_VAR *entry; +#if defined (ARRAY_VARS) + char *t; + int ni, assign_list = 0; +#endif + + offset = assignment (string); + name = savestring (string); + value = (char *)NULL; + + if (name[offset] == '=') + { + char *temp; + + name[offset] = 0; + temp = name + offset + 1; + +#if defined (ARRAY_VARS) + if (expand && temp[0] == '(' && strchr (temp, ')')) + { + assign_list = ni = 1; + value = extract_delimited_string (temp, &ni, "(", "(", ")"); + } + else +#endif + if (expand && temp[0]) + { + temp = (strchr (temp, '~') && unquoted_member ('~', temp)) + ? bash_tilde_expand (temp) + : savestring (temp); + + value = maybe_expand_string (temp, 0, expand_string_unsplit); + free (temp); + } + else + value = savestring (temp); + } + + if (value == 0) + value = savestring (""); + + if (echo_command_at_execute) +#if defined (ARRAY_VARS) + if (assign_list) + fprintf (stderr, "%s%s=(%s)\n", indirection_level_string (), name, value); + else +#endif + fprintf (stderr, "%s%s=%s\n", indirection_level_string (), name, value); + +#define ASSIGN_RETURN(r) FREE (value); free (name); return (r); + +#if defined (ARRAY_VARS) + if (t = strchr (name, '[')) + { + if (assign_list) + { + report_error ("%s: cannot assign list to array member", name); + ASSIGN_RETURN (0); + } + entry = do_array_element_assignment (name, value); + if (entry == 0) + ASSIGN_RETURN (0); + } + else if (assign_list) + entry = assign_array_from_string (name, value); + else +#endif /* ARRAY_VARS */ + entry = bind_variable (name, value); + + stupidly_hack_special_variables (name); + + if (entry) + entry->attributes &= ~att_invisible; + + /* Return 1 if the assignment seems to have been performed correctly. */ + ASSIGN_RETURN (entry ? ((entry->attributes & att_readonly) == 0) : 0); +} + +/* Perform the assignment statement in STRING, and expand the + right side by doing command and parameter expansion. */ +int +do_assignment (string) + char *string; +{ + return do_assignment_internal (string, 1); +} + +/* Given STRING, an assignment string, get the value of the right side + of the `=', and bind it to the left side. Do not do command and + parameter substitution on the right hand side. */ +int +do_assignment_no_expand (string) + char *string; +{ + return do_assignment_internal (string, 0); +} + +/* Most of the substitutions must be done in parallel. In order + to avoid using tons of unclear goto's, I have some functions + for manipulating malloc'ed strings. They all take INDX, a + pointer to an integer which is the offset into the string + where manipulation is taking place. They also take SIZE, a + pointer to an integer which is the current length of the + character array for this string. */ + +/* Append SOURCE to TARGET at INDEX. SIZE is the current amount + of space allocated to TARGET. SOURCE can be NULL, in which + case nothing happens. Gets rid of SOURCE by freeing it. + Returns TARGET in case the location has changed. */ +inline char * +sub_append_string (source, target, indx, size) + char *source, *target; + int *indx, *size; +{ + if (source) + { + int srclen, n; + + srclen = strlen (source); + if (srclen >= (int)(*size - *indx)) + { + n = srclen + *indx; + n = (n + DEFAULT_ARRAY_SIZE) - (n % DEFAULT_ARRAY_SIZE); + target = xrealloc (target, (*size = n)); + } + + FASTCOPY (source, target + *indx, srclen); + *indx += srclen; + target[*indx] = '\0'; + + free (source); + } + return (target); +} + +#if 0 +/* UNUSED */ +/* Append the textual representation of NUMBER to TARGET. + INDX and SIZE are as in SUB_APPEND_STRING. */ +char * +sub_append_number (number, target, indx, size) + int number, *indx, *size; + char *target; +{ + char *temp; + + temp = itos (number); + return (sub_append_string (temp, target, indx, size)); +} +#endif + +/* Return the word list that corresponds to `$*'. */ +WORD_LIST * +list_rest_of_args () +{ + register WORD_LIST *list, *args; + int i; + + /* Break out of the loop as soon as one of the dollar variables is null. */ + for (i = 1, list = (WORD_LIST *)NULL; i < 10 && dollar_vars[i]; i++) + list = make_word_list (make_bare_word (dollar_vars[i]), list); + + for (args = rest_of_args; args; args = args->next) + list = make_word_list (make_bare_word (args->word->word), list); + + return (REVERSE_LIST (list, WORD_LIST *)); +} + +int +number_of_args () +{ + register WORD_LIST *list; + int n; + + for (n = 0; n < 9 && dollar_vars[n+1]; n++) + ; + for (list = rest_of_args; list; list = list->next) + n++; + return n; +} + +/* Make a single large string out of the dollar digit variables, + and the rest_of_args. If DOLLAR_STAR is 1, then obey the special + case of "$*" with respect to IFS. */ +char * +string_rest_of_args (dollar_star) + int dollar_star; +{ + register WORD_LIST *list; + char *string; + + list = list_rest_of_args (); + string = dollar_star ? string_list_dollar_star (list) : string_list (list); + dispose_words (list); + return (string); +} + +/*************************************************** + * * + * Functions to Expand a String * + * * + ***************************************************/ +/* Call expand_word_internal to expand W and handle error returns. + A convenience function for functions that don't want to handle + any errors or free any memory before aborting. */ +static WORD_LIST * +call_expand_word_internal (w, q, c, e) + WORD_DESC *w; + int q, *c, *e; +{ + WORD_LIST *result; + + result = expand_word_internal (w, q, c, e); + if (result == &expand_word_error) + jump_to_top_level (DISCARD); + else if (result == &expand_word_fatal) + jump_to_top_level (FORCE_EOF); + else + return (result); +} + +/* Perform parameter expansion, command substitution, and arithmetic + expansion on STRING, as if it were a word. Leave the result quoted. */ +static WORD_LIST * +expand_string_internal (string, quoted) + char *string; + int quoted; +{ + WORD_DESC td; + WORD_LIST *tresult; + + if (string == 0 || *string == 0) + return ((WORD_LIST *)NULL); + + bzero (&td, sizeof (td)); + td.word = string; + tresult = call_expand_word_internal (&td, quoted, (int *)NULL, (int *)NULL); + return (tresult); +} + +/* Expand STRING by performing parameter expansion, command substitution, + and arithmetic expansion. Dequote the resulting WORD_LIST before + returning it, but do not perform word splitting. The call to + remove_quoted_nulls () is in here because word splitting normally + takes care of quote removal. */ +WORD_LIST * +expand_string_unsplit (string, quoted) + char *string; + int quoted; +{ + WORD_LIST *value; + + if (!string || !*string) + return ((WORD_LIST *)NULL); + + value = expand_string_internal (string, quoted); + if (value) + { +#if 0 + if (value->word) + remove_quoted_nulls (value->word->word); +#endif + dequote_list (value); + } + return (value); +} + +/* Expand STRING just as if you were expanding a word, but do not dequote + the resultant WORD_LIST. This is called only from within this file, + and is used to correctly preserve quoted characters when expanding + things like ${1+"$@"}. This does parameter expansion, command + subsitution, arithmetic expansion, and word splitting. */ +static WORD_LIST * +expand_string_leave_quoted (string, quoted) + char *string; + int quoted; +{ + WORD_LIST *tlist; + WORD_LIST *tresult; + + if (string == 0 || *string == '\0') + return ((WORD_LIST *)NULL); + + tlist = expand_string_internal (string, quoted); + + if (tlist) + { + tresult = word_list_split (tlist); + dispose_words (tlist); + return (tresult); + } + return ((WORD_LIST *)NULL); +} + +/* This does not perform word splitting or dequote the WORD_LIST + it returns. */ +static WORD_LIST * +expand_string_for_rhs (string, quoted, dollar_at_p, has_dollar_at) + char *string; + int quoted, *dollar_at_p, *has_dollar_at; +{ + WORD_DESC td; + WORD_LIST *tresult; + + if (string == 0 || *string == '\0') + return (WORD_LIST *)NULL; + + bzero (&td, sizeof (td)); + td.word = string; + tresult = call_expand_word_internal (&td, quoted, dollar_at_p, has_dollar_at); + return (tresult); +} + +/* Expand STRING just as if you were expanding a word. This also returns + a list of words. Note that filename globbing is *NOT* done for word + or string expansion, just when the shell is expanding a command. This + does parameter expansion, command substitution, arithmetic expansion, + and word splitting. Dequote the resultant WORD_LIST before returning. */ +WORD_LIST * +expand_string (string, quoted) + char *string; + int quoted; +{ + WORD_LIST *result; + + if (!string || !*string) + return ((WORD_LIST *)NULL); + + result = expand_string_leave_quoted (string, quoted); + return (result ? dequote_list (result) : result); +} + +/*************************************************** + * * + * Functions to handle quoting chars * + * * + ***************************************************/ + +static WORD_LIST * +dequote_list (list) + WORD_LIST *list; +{ + register char *s; + register WORD_LIST *tlist; + + for (tlist = list; tlist; tlist = tlist->next) + { + s = dequote_string (tlist->word->word); + free (tlist->word->word); + tlist->word->word = s; + } + return list; +} + +static char * +make_quoted_char (c) + int c; +{ + char *temp; + + temp = xmalloc (3); + if (c == 0) + { +#if 0 + temp[0] = CTLNUL; + temp[1] = '\0'; +#else + temp[0] = '\0'; +#endif + } + else + { + temp[0] = CTLESC; + temp[1] = c; + temp[2] = '\0'; + } + return (temp); +} + +/* Quote STRING. Return a new string. */ +char * +quote_string (string) + char *string; +{ + register char *t; + char *result; + + if (*string == 0) + { + result = xmalloc (2); +#if 0 + result[0] = CTLNUL; + result[1] = '\0'; +#else + result[0] = '\0'; +#endif + } + else + { + result = xmalloc ((strlen (string) * 2) + 1); + + for (t = result; *string; ) + { + *t++ = CTLESC; + *t++ = *string++; + } + *t = '\0'; + } + return (result); +} + +/* De-quoted quoted characters in STRING. */ +char * +dequote_string (string) + char *string; +{ + register char *t; + char *result; + + result = xmalloc (strlen (string) + 1); + +#if 0 + if (QUOTED_NULL (string)) + { + result[0] = '\0'; + return (result); + } +#endif + + /* If no character in the string can be quoted, don't bother examining + each character. Just return a copy of the string passed to us. */ + if (strchr (string, CTLESC) == NULL) /* XXX */ + { /* XXX */ + strcpy (result, string); /* XXX */ + return (result); /* XXX */ + } + + for (t = result; *string; string++, t++) + { + if (*string == CTLESC) + { + string++; + + if (!*string) + break; + } + + *t = *string; + } + + *t = '\0'; + return (result); +} + +/* Quote the entire WORD_LIST list. */ +static WORD_LIST * +quote_list (list) + WORD_LIST *list; +{ + register WORD_LIST *w; + char *t; + + for (w = list; w; w = w->next) + { + t = w->word->word; + w->word->word = quote_string (t); + free (t); + w->word->flags |= W_QUOTED; + } + return list; +} + +/* **************************************************************** */ +/* */ +/* Functions for Removing Patterns */ +/* */ +/* **************************************************************** */ + +/* Remove the portion of PARAM matched by PATTERN according to OP, where OP + can have one of 4 values: + RP_LONG_LEFT remove longest matching portion at start of PARAM + RP_SHORT_LEFT remove shortest matching portion at start of PARAM + RP_LONG_RIGHT remove longest matching portion at end of PARAM + RP_SHORT_RIGHT remove shortest matching portion at end of PARAM +*/ + +#define RP_LONG_LEFT 1 +#define RP_SHORT_LEFT 2 +#define RP_LONG_RIGHT 3 +#define RP_SHORT_RIGHT 4 + +static char * +remove_pattern (param, pattern, op) + char *param, *pattern; + int op; +{ + register int len; + register char *end; + register char *p, *ret, c; + + if (param == NULL || *param == '\0') + return (param); + if (pattern == NULL || *pattern == '\0') /* minor optimization */ + return (savestring (param)); + + len = STRLEN (param); + end = param + len; + + switch (op) + { + case RP_LONG_LEFT: /* remove longest match at start */ + for (p = end; p >= param; p--) + { + c = *p; *p = '\0'; + if (fnmatch (pattern, param, 0) != FNM_NOMATCH) + { + *p = c; + return (savestring (p)); + } + *p = c; + } + break; + + case RP_SHORT_LEFT: /* remove shortest match at start */ + for (p = param; p <= end; p++) + { + c = *p; *p = '\0'; + if (fnmatch (pattern, param, 0) != FNM_NOMATCH) + { + *p = c; + return (savestring (p)); + } + *p = c; + } + break; + + case RP_LONG_RIGHT: /* remove longest match at end */ + for (p = param; p <= end; p++) + { + if (fnmatch (pattern, p, 0) != FNM_NOMATCH) + { + c = *p; *p = '\0'; + ret = savestring (param); + *p = c; + return (ret); + } + } + break; + + case RP_SHORT_RIGHT: /* remove shortest match at end */ + for (p = end; p >= param; p--) + { + if (fnmatch (pattern, p, 0) != FNM_NOMATCH) + { + c = *p; *p = '\0'; + ret = savestring (param); + *p = c; + return (ret); + } + } + break; + } + return (savestring (param)); /* no match, return original string */ +} + +/* Return 1 of the first character of STRING could match the first + character of pattern PAT. Used to avoid n2 calls to fnmatch(). */ +static int +match_pattern_char (pat, string) + char *pat, *string; +{ + register char *np; + int neg; + char c, c1; + + if (*string == 0) + return (0); + + switch (c = *pat++) + { + default: + return (*string == c); + case '\\': + return (*string == *pat); + case '?': + case '*': + return (1); + case '[': + for (np = pat; *np != ']'; np++); + if (*np == 0) + return (*string == '['); + if (neg = (*pat == '!' || *pat == '^')) + pat++; + for ( ; (c1 = *pat++) != ']'; ) + { + if (c1 == '\\') + c1 = *pat++; + if (c1 == 0) + return (0); + if (*pat != '-' || pat[1] == '\0' || pat[1] == ']') + return (neg ? *string != c1 : *string == c1); + if (c1 <= *string && *string <= pat[1]) + return (1); + pat += 2; + } + } +} + +/* Match PAT anywhere in STRING and return the match boundaries. + This returns 1 in case of a successful match, 0 otherwise. SP + and EP are pointers into the string where the match begins and + ends, respectively. MTYPE controls what kind of match is attempted. + MATCH_BEG and MATCH_END anchor the match at the beginning and end + of the string, respectively. The longest match is returned. */ +static int +match_pattern (string, pat, mtype, sp, ep) + char *string, *pat; + int mtype; + char **sp, **ep; +{ + int c; + register char *p, *p1; + char *end; + + if (string == 0 || *string == 0 || pat == 0 || *pat == 0) + return (0); + + end = string + STRLEN (string); + + switch (mtype) + { + case MATCH_ANY: + for (p = string; p <= end; p++) + { + if (match_pattern_char (pat, p)) + { + for (p1 = end; p1 >= p; p1--) + { + c = *p1; *p1 = '\0'; + if (fnmatch (pat, p, 0) == 0) + { + *p1 = c; + *sp = p; + *ep = p1; + return 1; + } + *p1 = c; + } + } + } + return (0); + + case MATCH_BEG: + if (match_pattern_char (pat, string) == 0) + return (0); + for (p = end; p >= string; p--) + { + c = *p; *p = '\0'; + if (fnmatch (pat, string, 0) == 0) + { + *p = c; + *sp = string; + *ep = p; + return 1; + } + *p = c; + } + return (0); + + case MATCH_END: + for (p = string; p <= end; p++) + if (fnmatch (pat, p, 0) == 0) + { + *sp = p; + *ep = end; + return 1; + } + return (0); + } + + return (0); +} + +/******************************************* + * * + * Functions to expand WORD_DESCs * + * * + *******************************************/ + +/* Expand WORD, performing word splitting on the result. This does + parameter expansion, command substitution, arithmetic expansion, + word splitting, and quote removal. */ + +WORD_LIST * +expand_word (word, quoted) + WORD_DESC *word; + int quoted; +{ + WORD_LIST *result, *tresult; + + tresult = call_expand_word_internal (word, quoted, (int *)NULL, (int *)NULL); + result = word_list_split (tresult); + dispose_words (tresult); + return (result ? dequote_list (result) : result); +} + +/* Expand WORD, but do not perform word splitting on the result. This + does parameter expansion, command substitution, arithmetic expansion, + and quote removal. */ +WORD_LIST * +expand_word_no_split (word, quoted) + WORD_DESC *word; + int quoted; +{ + WORD_LIST *result; + + result = call_expand_word_internal (word, quoted, (int *)NULL, (int *)NULL); + return (result ? dequote_list (result) : result); +} + +/* Perform shell expansions on WORD, but do not perform word splitting or + quote removal on the result. */ +WORD_LIST * +expand_word_leave_quoted (word, quoted) + WORD_DESC *word; + int quoted; +{ + return (call_expand_word_internal (word, quoted, (int *)NULL, (int *)NULL)); +} + +/* Return the value of a positional parameter. This handles values > 10. */ +char * +get_dollar_var_value (ind) + int ind; +{ + char *temp; + WORD_LIST *p; + + if (ind < 10) + temp = dollar_vars[ind] ? savestring (dollar_vars[ind]) : (char *)NULL; + else /* We want something like ${11} */ + { + ind -= 10; + for (p = rest_of_args; p && ind--; p = p->next) + ; + temp = p ? savestring (p->word->word) : (char *)NULL; + } + return (temp); +} + +#if defined (PROCESS_SUBSTITUTION) + +/* **************************************************************** */ +/* */ +/* Hacking Process Substitution */ +/* */ +/* **************************************************************** */ + +#if !defined (HAVE_DEV_FD) +/* Named pipes must be removed explicitly with `unlink'. This keeps a list + of FIFOs the shell has open. unlink_fifo_list will walk the list and + unlink all of them. add_fifo_list adds the name of an open FIFO to the + list. NFIFO is a count of the number of FIFOs in the list. */ +#define FIFO_INCR 20 +extern char *mktemp (); + +static char **fifo_list = (char **)NULL; +static int nfifo = 0; +static int fifo_list_size = 0; + +static void +add_fifo_list (pathname) + char *pathname; +{ + if (nfifo >= fifo_list_size - 1) + { + fifo_list_size += FIFO_INCR; + fifo_list = (char **)xrealloc (fifo_list, + fifo_list_size * sizeof (char *)); + } + + fifo_list[nfifo++] = savestring (pathname); +} + +void +unlink_fifo_list () +{ + if (nfifo == 0) + return; + + while (nfifo--) + { + unlink (fifo_list[nfifo]); + free (fifo_list[nfifo]); + fifo_list[nfifo] = (char *)NULL; + } + nfifo = 0; +} + +static char * +make_named_pipe () +{ + char *tname; + + tname = mktemp (savestring ("/tmp/sh-np-XXXXXX")); + if (mkfifo (tname, 0666) < 0) + { + free (tname); + return ((char *)NULL); + } + + add_fifo_list (tname); + return (tname); +} + +#else /* HAVE_DEV_FD */ + +/* DEV_FD_LIST is a bitmap of file descriptors attached to pipes the shell + has open to children. NFDS is a count of the number of bits currently + set in DEV_FD_LIST. TOTFDS is a count of the highest possible number + of open files. */ +static char *dev_fd_list = (char *)NULL; +static int nfds = 0; +static int totfds; /* The highest possible number of open files. */ + +static void +add_fifo_list (fd) + int fd; +{ + if (!dev_fd_list || fd >= totfds) + { + int zero; + + totfds = getdtablesize (); + if (totfds < 0 || totfds > 256) + totfds = 256; + if (fd > totfds) + totfds = fd + 2; + + zero = dev_fd_list == (char *) NULL; + dev_fd_list = xrealloc (dev_fd_list, totfds); + if (zero) + bzero (dev_fd_list, totfds); + /* XXX - should zero out new portion of list here - XXX */ + } + + dev_fd_list[fd] = 1; + nfds++; +} + +void +unlink_fifo_list () +{ + register int i; + + if (nfds == 0) + return; + + for (i = 0; nfds && i < totfds; i++) + if (dev_fd_list[i]) + { + close (i); + dev_fd_list[i] = 0; + nfds--; + } + + nfds = 0; +} + +#if defined (NOTDEF) +print_dev_fd_list () +{ + register int i; + + fprintf (stderr, "pid %d: dev_fd_list:", getpid ()); + fflush (stderr); + + for (i = 0; i < totfds; i++) + { + if (dev_fd_list[i]) + fprintf (stderr, " %d", i); + } + fprintf (stderr, "\n"); +} +#endif /* NOTDEF */ + +static char * +make_dev_fd_filename (fd) + int fd; +{ + char *ret; + + ret = xmalloc (16); + sprintf (ret, "/dev/fd/%d", fd); + add_fifo_list (fd); + return (ret); +} + +#endif /* HAVE_DEV_FD */ + +/* Return a filename that will open a connection to the process defined by + executing STRING. HAVE_DEV_FD, if defined, means open a pipe and return + a filename in /dev/fd corresponding to a descriptor that is one of the + ends of the pipe. If not defined, we use named pipes on systems that have + them. Systems without /dev/fd and named pipes are out of luck. + + OPEN_FOR_READ_IN_CHILD, if 1, means open the named pipe for reading or + use the read end of the pipe and dup that file descriptor to fd 0 in + the child. If OPEN_FOR_READ_IN_CHILD is 0, we open the named pipe for + writing or use the write end of the pipe in the child, and dup that + file descriptor to fd 1 in the child. The parent does the opposite. */ + +static char * +process_substitute (string, open_for_read_in_child) + char *string; + int open_for_read_in_child; +{ + char *pathname; + int fd, result; + pid_t old_pid, pid; +#if defined (HAVE_DEV_FD) + int parent_pipe_fd, child_pipe_fd; + int fildes[2]; +#endif /* HAVE_DEV_FD */ +#if defined (JOB_CONTROL) + pid_t old_pipeline_pgrp; +#endif + + if (!string || !*string) + return ((char *)NULL); + +#if !defined (HAVE_DEV_FD) + pathname = make_named_pipe (); +#else /* HAVE_DEV_FD */ + if (pipe (fildes) < 0) + { + internal_error ("can't make pipes for process substitution: %s", + strerror (errno)); + return ((char *)NULL); + } + /* If OPEN_FOR_READ_IN_CHILD == 1, we want to use the write end of + the pipe in the parent, otherwise the read end. */ + parent_pipe_fd = fildes[open_for_read_in_child]; + child_pipe_fd = fildes[1 - open_for_read_in_child]; + pathname = make_dev_fd_filename (parent_pipe_fd); +#endif /* HAVE_DEV_FD */ + + if (!pathname) + { + internal_error ("cannot make pipe for process subsitution: %s", + strerror (errno)); + return ((char *)NULL); + } + + old_pid = last_made_pid; + +#if defined (JOB_CONTROL) + old_pipeline_pgrp = pipeline_pgrp; + pipeline_pgrp = shell_pgrp; + cleanup_the_pipeline (); +#endif /* JOB_CONTROL */ + + pid = make_child ((char *)NULL, 1); + if (pid == 0) + { + reset_terminating_signals (); /* XXX */ + /* Cancel traps, in trap.c. */ + restore_original_signals (); + setup_async_signals (); + subshell_environment++; + } + +#if defined (JOB_CONTROL) + set_sigchld_handler (); + stop_making_children (); + pipeline_pgrp = old_pipeline_pgrp; +#endif /* JOB_CONTROL */ + + if (pid < 0) + { + internal_error ("cannot make a child for process substitution: %s", + strerror (errno)); + free (pathname); +#if defined (HAVE_DEV_FD) + close (parent_pipe_fd); + close (child_pipe_fd); +#endif /* HAVE_DEV_FD */ + return ((char *)NULL); + } + + if (pid > 0) + { + last_made_pid = old_pid; + +#if defined (JOB_CONTROL) && defined (PGRP_PIPE) + close_pgrp_pipe (); +#endif /* JOB_CONTROL && PGRP_PIPE */ + +#if defined (HAVE_DEV_FD) + close (child_pipe_fd); +#endif /* HAVE_DEV_FD */ + + return (pathname); + } + + set_sigint_handler (); + +#if defined (JOB_CONTROL) + set_job_control (0); +#endif /* JOB_CONTROL */ + +#if !defined (HAVE_DEV_FD) + /* Open the named pipe in the child. */ + fd = open (pathname, open_for_read_in_child ? O_RDONLY : O_WRONLY); + if (fd < 0) + { + internal_error ("cannot open named pipe %s for %s: %s", pathname, + open_for_read_in_child ? "reading" : "writing", strerror (errno)); + exit (127); + } +#else /* HAVE_DEV_FD */ + fd = child_pipe_fd; +#endif /* HAVE_DEV_FD */ + + if (dup2 (fd, open_for_read_in_child ? 0 : 1) < 0) + { + internal_error ("cannot duplicate named pipe %s as fd %d: %s", + pathname, open_for_read_in_child ? 0 : 1, strerror (errno)); + exit (127); + } + + close (fd); + + /* Need to close any files that this process has open to pipes inherited + from its parent. */ + if (current_fds_to_close) + { + close_fd_bitmap (current_fds_to_close); + current_fds_to_close = (struct fd_bitmap *)NULL; + } + +#if defined (HAVE_DEV_FD) + /* Make sure we close the parent's end of the pipe and clear the slot + in the fd list so it is not closed later, if reallocated by, for + instance, pipe(2). */ + close (parent_pipe_fd); + dev_fd_list[parent_pipe_fd] = 0; +#endif /* HAVE_DEV_FD */ + + result = parse_and_execute (string, "process substitution", 0); + +#if !defined (HAVE_DEV_FD) + /* Make sure we close the named pipe in the child before we exit. */ + close (open_for_read_in_child ? 0 : 1); +#endif /* !HAVE_DEV_FD */ + + exit (result); + /*NOTREACHED*/ +} +#endif /* PROCESS_SUBSTITUTION */ + +/* Perform command substitution on STRING. This returns a string, + possibly quoted. */ +static char * +command_substitute (string, quoted) + char *string; + int quoted; +{ + pid_t pid, old_pid, old_pipeline_pgrp; + char *istring; + int istring_index, istring_size, c, result, fildes[2]; + FILE *istream; + + istring_index = istring_size = 0; + + /* Don't fork () if there is no need to. In the case of no command to + run, just return NULL. */ + if (!string || !*string || (string[0] == '\n' && !string[1])) + return ((char *)NULL); + + /* Pipe the output of executing STRING into the current shell. */ + if (pipe (fildes) < 0) + { + internal_error ("Can't make pipes for command substitution!"); + goto error_exit; + } + + old_pid = last_made_pid; +#if defined (JOB_CONTROL) + old_pipeline_pgrp = pipeline_pgrp; + pipeline_pgrp = shell_pgrp; + cleanup_the_pipeline (); +#endif + + istring= (char *)NULL; + pid = make_child ((char *)NULL, 0); + if (pid == 0) + /* Reset the signal handlers in the child, but don't free the + trap strings. */ + reset_signal_handlers (); + +#if defined (JOB_CONTROL) + set_sigchld_handler (); + stop_making_children (); + pipeline_pgrp = old_pipeline_pgrp; +#endif /* JOB_CONTROL */ + + if (pid < 0) + { + internal_error ("Can't make a child for command substitution: %s", + strerror (errno)); + error_exit: + + FREE (istring); + close (fildes[0]); + close (fildes[1]); + return ((char *)NULL); + } + + if (pid == 0) + { + set_sigint_handler (); /* XXX */ +#if defined (JOB_CONTROL) + set_job_control (0); +#endif + if (dup2 (fildes[1], 1) < 0) + { + internal_error + ("command_substitute: cannot duplicate pipe as fd 1: %s", + strerror (errno)); + exit (EXECUTION_FAILURE); + } + + /* If standard output is closed in the parent shell + (such as after `exec >&-'), file descriptor 1 will be + the lowest available file descriptor, and end up in + fildes[0]. This can happen for stdin and stderr as well, + but stdout is more important -- it will cause no output + to be generated from this command. */ + if ((fildes[1] != fileno (stdin)) && + (fildes[1] != fileno (stdout)) && + (fildes[1] != fileno (stderr))) + close (fildes[1]); + + if ((fildes[0] != fileno (stdin)) && + (fildes[0] != fileno (stdout)) && + (fildes[0] != fileno (stderr))) + close (fildes[0]); + + /* The currently executing shell is not interactive. */ + interactive = 0; + + /* Command substitution does not inherit the -e flag. */ + exit_immediately_on_error = 0; + + remove_quoted_escapes (string); + + startup_state = 2; /* see if we can avoid a fork */ + /* Give command substitution a place to jump back to on failure, + so we don't go back up to main (). */ + result = setjmp (top_level); + + if (result == EXITPROG) + exit (last_command_exit_value); + else if (result) + exit (EXECUTION_FAILURE); + else + exit (parse_and_execute (string, "command substitution", -1)); + } + else + { + istream = fdopen (fildes[0], "r"); + +#if defined (JOB_CONTROL) && defined (PGRP_PIPE) + close_pgrp_pipe (); +#endif /* JOB_CONTROL && PGRP_PIPE */ + + close (fildes[1]); + + if (!istream) + { + internal_error ("Can't reopen pipe to command substitution (fd %d): %s", + fildes[0], strerror (errno)); + goto error_exit; + } + + /* Read the output of the command through the pipe. */ + while (1) + { +#if !defined (HAVE_RESTARTABLE_SYSCALLS) + c = getc_with_restart (istream); +#else + c = getc (istream); +#endif /* HAVE_RESTARTABLE_SYSCALLS */ + + if (c == EOF) + break; + + /* Add the character to ISTRING. */ + if (istring_index + 2 >= istring_size) + { + while (istring_index + 2 >= istring_size) + istring_size += DEFAULT_ARRAY_SIZE; + istring = xrealloc (istring, istring_size); + } + + if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || c == CTLESC /* || c == CTLNUL */) + istring[istring_index++] = CTLESC; + + istring[istring_index++] = c; + } + + if (istring) + istring[istring_index] = '\0'; + + fclose (istream); + close (fildes[0]); + + last_command_exit_value = wait_for (pid); + last_command_subst_pid = pid; + last_made_pid = old_pid; + +#if defined (JOB_CONTROL) + /* If last_command_exit_value > 128, then the substituted command + was terminated by a signal. If that signal was SIGINT, then send + SIGINT to ourselves. This will break out of loops, for instance. */ + if (last_command_exit_value == (128 + SIGINT)) + kill (getpid (), SIGINT); + + /* wait_for gives the terminal back to shell_pgrp. If some other + process group should have it, give it away to that group here. */ + if (interactive && pipeline_pgrp != (pid_t)0) + give_terminal_to (pipeline_pgrp); +#endif /* JOB_CONTROL */ + + /* If we read no output, just return now and save ourselves some + trouble. */ + if (istring_index == 0) + goto error_exit; + + /* Strip trailing newlines from the output of the command. */ + if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) + { + while (istring_index > 0) + { + if (istring[istring_index - 1] == '\n') + { + --istring_index; + + /* If the newline was quoted, remove the quoting char. */ + if (istring[istring_index - 1] == CTLESC) + --istring_index; + } + else + break; + } + istring[istring_index] = '\0'; + } + else + strip_trailing (istring, 1); + + return (istring); + } +} + +/******************************************************** + * * + * Utility functions for parameter expansion * + * * + ********************************************************/ + +static int +getpatspec (c, value) + int c; + char *value; +{ + if (c == '#') + return ((*value == '#') ? RP_LONG_LEFT : RP_SHORT_LEFT); + else /* c == '%' */ + return ((*value == '%') ? RP_LONG_RIGHT : RP_SHORT_RIGHT); +} + +/* Posix.2 says that the WORD should be run through tilde expansion, + parameter expansion, command substitution and arithmetic expansion. + This leaves the result quoted, so quote_string_for_globbing () has + to be called to fix it up for fnmatch (). If QUOTED is non-zero, + it means that the entire expression was enclosed in double quotes. + This means that quoting characters in the pattern do not make any + special pattern characters quoted. For example, the `*' in the + following retains its special meaning: "${foo#'*'}". */ +static char * +getpattern (value, quoted, expandpat) + char *value; + int quoted, expandpat; +{ + char *pat, *tword; + WORD_LIST *l; + int i; + + tword = strchr (value, '~') ? bash_tilde_expand (value) : savestring (value); + + /* expand_string_internal () leaves WORD quoted and does not perform + word splitting. */ + if (expandpat && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && *tword) + { + i = 0; + pat = string_extract_double_quoted (tword, &i, 1); + free (tword); + tword = pat; + } + + /* There is a problem here: how to handle single or double quotes in the + pattern string when the whole expression is between double quotes? */ +#if 0 + l = *tword ? expand_string_for_rhs (tword, quoted, (int *)NULL, (int *)NULL) +#else + l = *tword ? expand_string_for_rhs (tword, + (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? Q_NOQUOTE : quoted, + (int *)NULL, (int *)NULL) +#endif + : (WORD_LIST *)0; + free (tword); + pat = string_list (l); + dispose_words (l); + if (pat) + { + tword = quote_string_for_globbing (pat, 1); + free (pat); + pat = tword; + } + return (pat); +} + +/* Handle removing a pattern from a string as a result of ${name%[%]value} + or ${name#[#]value}. */ +static char * +parameter_brace_remove_pattern (value, temp, c, quoted) + char *value, *temp; + int c, quoted; +{ + int patspec; + char *pattern, *tword; + + patspec = getpatspec (c, value); + if (patspec == RP_LONG_LEFT || patspec == RP_LONG_RIGHT) + value++; + + pattern = getpattern (value, quoted, 1); + + tword = remove_pattern (temp, pattern, patspec); + + FREE (pattern); + return (tword); +} + +static char * +list_remove_pattern (list, pattern, patspec, type, quoted) + WORD_LIST *list; + char *pattern; + int patspec, type, quoted; +{ + WORD_LIST *new, *l; + WORD_DESC *w; + char *tword; + + for (new = (WORD_LIST *)NULL, l = list; l; l = l->next) + { + tword = remove_pattern (l->word->word, pattern, patspec); + w = make_bare_word (tword); + new = make_word_list (w, new); + } + + l = REVERSE_LIST (new, WORD_LIST *); + if (type == '*') + tword = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? string_list_dollar_star (l) : string_list (l); + else + tword = string_list ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? quote_list (l) : l); + + dispose_words (l); + return (tword); +} + +static char * +parameter_list_remove_pattern (value, type, c, quoted) + char *value; + int type, c, quoted; +{ + int patspec; + char *pattern; + + patspec = getpatspec (c, value); + if (patspec == RP_LONG_LEFT || patspec == RP_LONG_RIGHT) + value++; + + pattern = getpattern (value, quoted, 1); + + return (list_remove_pattern (list_rest_of_args (), pattern, patspec, type, quoted)); +} + +#if defined (ARRAY_VARS) +static char * +array_remove_pattern (value, aspec, c, quoted) + char *value, *aspec; + int c, quoted; +{ + SHELL_VAR *var; + int len, ind, patspec; + char *ret, *t, *pattern; + WORD_LIST *l; + + var = array_variable_part (aspec, &t, &len); + if (var == 0) + return ((char *)NULL); + + patspec = getpatspec (c, value); + if (patspec == RP_LONG_LEFT || patspec == RP_LONG_RIGHT) + value++; + + pattern = getpattern (value, quoted, 1); + + if (ALL_ELEMENT_SUB (t[0]) && t[1] == ']') + { + if (array_p (var) == 0) + { + report_error ("%s: bad array subscript", aspec); + return ((char *)NULL); + } + l = array_to_word_list (array_cell (var)); + if (l == 0) + return ((char *)NULL); + ret = list_remove_pattern (l, pattern, patspec, t[0], quoted); + dispose_words (l); + } + else + { + ind = array_expand_index (t, len); + if (ind < 0) + { + report_error ("%s: bad array subscript", aspec); + return ((char *)NULL); + } + if (array_p (var) == 0 && ind != 0) + return ((char *)NULL); + + t = array_p (var) ? array_reference (array_cell (var), ind) : value_cell (var); + ret = remove_pattern (t, pattern, patspec); + if (ret) + quote_escapes (ret); + } + return ret; +} + +int +valid_array_reference (name) + char *name; +{ + char *t; + int r, len; + + t = strchr (name, '['); + if (t) + { + *t = '\0'; + r = legal_identifier (name); + *t = '['; + if (r == 0) + return 0; + /* Check for a properly-terminated non-blank subscript. */ + len = skipsubscript (t, 0); + if (t[len] != ']' || len == 1) + return 0; + for (r = 1; r < len; r++) + if (whitespace (t[r]) == 0) + return 1; + return 0; + } + return 0; +} + +/* Expand the array index beginning at S and extending LEN characters. */ +int +array_expand_index (s, len) + char *s; + int len; +{ + char *exp, *t; + int val; + + exp = xmalloc (len); + strncpy (exp, s, len - 1); + exp[len - 1] = '\0'; + t = maybe_expand_string (exp, 0, expand_string); + this_command_name = (char *)NULL; + val = evalexp (t); + free (t); + free (exp); + return val; +} + +/* Return the variable specified by S without any subscript. If non-null, + return the index of the start of the subscript in *SUBP. If non-null, + the length of the subscript is returned in *LENP. */ +SHELL_VAR * +array_variable_part (s, subp, lenp) + char *s, **subp; + int *lenp; +{ + char *t; + int ind, ni; + SHELL_VAR *var; + + t = strchr (s, '['); + ind = t - s; + ni = skipsubscript (s, ind); + if (ni <= ind + 1 || s[ni] != ']') + { + report_error ("%s: bad array subscript", s); + return ((SHELL_VAR *)NULL); + } + + *t = '\0'; + var = find_variable (s); + *t++ = '['; + + if (subp) + *subp = t; + if (lenp) + *lenp = ni - ind; + return var; +} + +static char * +array_value_internal (s, quoted, allow_all) + char *s; + int quoted, allow_all; +{ + int len, ind; + char *retval, *t; + WORD_LIST *l; + SHELL_VAR *var; + + var = array_variable_part (s, &t, &len); + + if (var == 0) + return (char *)NULL; + + if (ALL_ELEMENT_SUB (t[0]) && t[1] == ']') + { + if (array_p (var) == 0 || allow_all == 0) + { + report_error ("%s: bad array subscript", s); + return ((char *)NULL); + } + l = array_to_word_list (array_cell (var)); + if (l == (WORD_LIST *)NULL) + return ((char *) NULL); + + if (t[0] == '*') /* ${name[*]} */ + retval = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? string_list_dollar_star (l) : string_list (l); + else /* ${name[@]} */ + retval = string_list ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? quote_list (l) : l); + + dispose_words (l); + } + else + { + ind = array_expand_index (t, len); + if (ind < 0) + { + report_error ("%s: bad array subscript", var->name); + return ((char *)NULL); + } + if (array_p (var) == 0) + return (ind == 0 ? value_cell (var) : (char *)NULL); + retval = array_reference (array_cell (var), ind); + if (retval) + retval = quote_escapes (retval); + } + + return retval; +} + +static char * +array_value (s, quoted) + char *s; + int quoted; +{ + return (array_value_internal (s, quoted, 1)); +} + +/* Return the value of the array indexing expression S as a single string. + If ALLOW_ALL is 0, do not allow `@' and `*' subscripts. This is used + by other parts of the shell such as the arithmetic expression evaluator + in expr.c. */ +char * +get_array_value (s, allow_all) + char *s; + int allow_all; +{ + return (array_value_internal (s, 0, allow_all)); +} + +static int +array_length_reference (s) + char *s; +{ + int ind, len; + char *t; + ARRAY *array; + SHELL_VAR *var; + + var = array_variable_part (s, &t, &len); + + if (var == 0 || array_p (var) == 0) + return (0); + + array = array_cell (var); + + if (ALL_ELEMENT_SUB (t[0]) && t[1] == ']') + return (array_num_elements (array)); + + ind = array_expand_index (t, len); + if (ind < 0) + { + report_error ("%s: bad array subscript", t); + return (0); + } + t = array_reference (array, ind); + len = STRLEN (t); + + return (len); +} +#endif /* ARRAY_VARS */ + +static int +valid_brace_expansion_word (name, var_is_special) + char *name; + int var_is_special; +{ + if (digit (*name) && all_digits (name)) + return 1; + else if (var_is_special) + return 1; +#if defined (ARRAY_VARS) + else if (valid_array_reference (name)) + return 1; +#endif /* ARRAY_VARS */ + else if (legal_identifier (name)) + return 1; + else + return 0; +} + +/* Parameter expand NAME, and return a new string which is the expansion, + or NULL if there was no expansion. + VAR_IS_SPECIAL is non-zero if NAME is one of the special variables in + the shell, e.g., "@", "$", "*", etc. QUOTED, if non-zero, means that + NAME was found inside of a double-quoted expression. */ +static char * +parameter_brace_expand_word (name, var_is_special, quoted) + char *name; + int var_is_special, quoted; +{ + char *temp, *tt; + int arg_index; + SHELL_VAR *var; + WORD_LIST *l; + + /* Handle multiple digit arguments, as in ${11}. */ + if (digit (*name)) + { + arg_index = atoi (name); + temp = get_dollar_var_value (arg_index); + } + else if (var_is_special) /* ${@} */ + { + tt = xmalloc (2 + strlen (name)); + tt[0] = '$'; + strcpy (tt + 1, name); + l = expand_string_leave_quoted (tt, quoted); + free (tt); + temp = string_list (l); + dispose_words (l); + } +#if defined (ARRAY_VARS) + else if (valid_array_reference (name)) + { + temp = array_value (name, quoted); + } +#endif + else if (var = find_variable (name)) + { + if (var && invisible_p (var) == 0) + { +#if defined (ARRAY_VARS) + temp = array_p (var) ? array_reference (array_cell (var), 0) : value_cell (var); +#else + temp = value_cell (var); +#endif + + if (temp) + temp = quote_escapes (temp); + } + else + temp = (char *)NULL; + } + else + temp = (char *)NULL; + + return (temp); +} + +/* Expand an indirect reference to a variable: ${!NAME} expands to the + value of the variable whose name is the value of NAME. */ +static char * +parameter_brace_expand_indir (name, var_is_special, quoted) + char *name; + int var_is_special, quoted; +{ + char *temp, *t; + + t = parameter_brace_expand_word (name, var_is_special, quoted); + if (t == 0) + return (t); + temp = parameter_brace_expand_word (t, t[0] == '@' && t[1] == '\0', quoted); + free (t); + return temp; +} + +/* Expand the right side of a parameter expansion of the form ${NAMEcVALUE}, + depending on the value of C, the separating character. C can be one of + "-", "+", or "=". QUOTED is true if the entire brace expression occurs + between double quotes. */ +static char * +parameter_brace_expand_rhs (name, value, c, quoted, qdollaratp, hasdollarat) + char *name, *value; + int c, quoted, *qdollaratp, *hasdollarat; +{ + WORD_LIST *l; + char *t, *t1, *temp; + int hasdol; + + temp = (*value == '~' || (strchr (value, '~') && unquoted_substring ("=~", value))) + ? bash_tilde_expand (value) + : savestring (value); + + /* If the entire expression is between double quotes, we want to treat + the value as a double-quoted string, with the exception that we strip + embedded unescaped double quotes. */ + if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && *temp) + { + hasdol = 0; + t = string_extract_double_quoted (temp, &hasdol, 1); + free (temp); + temp = t; + } + + hasdol = 0; + /* XXX was 0 not quoted */ + l = *temp ? expand_string_for_rhs (temp, quoted, &hasdol, (int *)NULL) + : (WORD_LIST *)0; + if (hasdollarat) + *hasdollarat = hasdol || (l && l->next); + free (temp); + if (l) + { + /* The expansion of TEMP returned something. We need to treat things + slightly differently if HASDOL is non-zero. */ + temp = string_list (l); + /* If l->next is not null, we know that TEMP contained "$@", since that + is the only expansion that creates more than one word. */ + if ((hasdol && quoted) || l->next) + *qdollaratp = 1; + dispose_words (l); + } + else if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && hasdol) + { + /* The brace expansion occurred between double quotes and there was + a $@ in TEMP. It does not matter if the $@ is quoted, as long as + it does not expand to anything. In this case, we want to return + a quoted empty string. */ + temp = xmalloc (2); +#if 0 + temp[0] = CTLNUL; + temp[1] = '\0'; +#else + temp[0] = '\0'; +#endif + } + else + temp = (char *)NULL; + + if (c == '-' || c == '+') + return (temp); + + /* c == '=' */ + t = temp ? savestring (temp) : savestring (""); + t1 = dequote_string (t); + free (t); + bind_variable (name, t1); + free (t1); + return (temp); +} + +/* Deal with the right hand side of a ${name:?value} expansion in the case + that NAME is null or not set. If VALUE is non-null it is expanded and + used as the error message to print, otherwise a standard message is + printed. */ +static void +parameter_brace_expand_error (name, value) + char *name, *value; +{ + WORD_LIST *l; + char *temp; + + if (value && *value) + { + l = expand_string (value, 0); + temp = string_list (l); + report_error ("%s: %s", name, temp ? temp : value); + FREE (temp); + dispose_words (l); + } + else + report_error ("%s: parameter null or not set", name); + + /* Free the data we have allocated during this expansion, since we + are about to longjmp out. */ + free (name); + FREE (value); +} + +/* Return 1 if NAME is something for which parameter_brace_expand_length is + OK to do. */ +static int +valid_length_expression (name) + char *name; +{ + return (!name[1] || /* ${#} */ + ((name[1] == '@' || name[1] == '*') && !name[2]) || /* ${#@}, ${#*} */ + (digit (name[1]) && all_digits (name + 1)) || /* ${#11} */ +#if defined (ARRAY_VARS) + valid_array_reference (name + 1) || /* ${#a[7]} */ +#endif + legal_identifier (name + 1)); /* ${#PS1} */ +} + +/* Handle the parameter brace expansion that requires us to return the + length of a parameter. */ +static int +parameter_brace_expand_length (name) + char *name; +{ + char *t, *newname; + int number; + WORD_LIST *list; +#if defined (ARRAY_VARS) + SHELL_VAR *var; +#endif + + if (name[1] == '\0') /* ${#} */ + number = number_of_args (); +#if defined (ARRAY_VARS) + else if (valid_array_reference (name + 1)) + number = array_length_reference (name + 1); +#endif /* ARRAY_VARS */ + else if (name[1] != '*' && name[1] != '@') + { + number = 0; + + if (digit (name[1])) /* ${#1} */ + { + t = get_dollar_var_value (atoi (name + 1)); + number = STRLEN (t); + FREE (t); + } +#if defined (ARRAY_VARS) + else if ((var = find_variable (name + 1)) && array_p (var)) + { + t = array_reference (array_cell (var), 0); + number = STRLEN (t); + } +#endif + else /* ${#PS1} */ + { + newname = savestring (name); + newname[0] = '$'; + list = expand_string (newname, 0); + t = list ? string_list (list) : (char *)NULL; + free (newname); + if (list) + dispose_words (list); + + number = STRLEN (t); + FREE (t); + } + } + else /* ${#@} and ${#*} */ + number = number_of_args (); + + return (number); +} + +/* Verify and limit the start and end of the desired substring. If + VTYPE == 0, a regular shell variable is being used; if it is 1, + then the positional paramters are being used; if it is 2, then + VALUE is really a pointer to an array variable that should be used. */ +static int +verify_substring_values (value, substr, vtype, e1p, e2p) + char *value, *substr; + int vtype, *e1p, *e2p; +{ + char *t, *temp1; + int len; +#if defined (ARRAY_VARS) + ARRAY *a; +#endif + + t = strchr (substr, ':'); + if (t) + *t = '\0'; + temp1 = maybe_expand_string (substr, 1, expand_string); + *e1p = evalexp (temp1); + free (temp1); + + switch (vtype) + { + case 0: + len = strlen (value); + break; + case 1: + len = number_of_args () + 1; + break; +#if defined (ARRAY_VARS) + case 2: + a = (ARRAY *)value; + len = array_num_elements (a) + 1; + break; +#endif + } + + if (*e1p < 0) /* negative offsets count from end */ + *e1p += len; + + if (t) + { + t++; + temp1 = maybe_expand_string (t, 1, expand_string); + t[-1] = ':'; + *e2p = evalexp (temp1); + free (temp1); + if (*e2p < 0) + { + internal_error ("%s: substring expression < 0", t); + return (0); + } + *e2p += *e1p; /* want E2 chars starting at E1 */ + if (*e2p > len) + *e2p = len; + } + else + *e2p = len; + + return (1); +} + +/* Return a string containing the positional parameters from START to + END, inclusive. */ +static char * +pos_params (start, end, quoted) + int start, end, quoted; +{ + WORD_LIST *save, *params, *h, *t; + char *ret; + int i; + + save = params = list_rest_of_args (); + if (save == 0) + return ((char *)NULL); + + for (i = 1; params && i < start; i++) + params = params->next; + if (params == 0) + return ((char *)NULL); + for (h = t = params; params && i < end; i++) + { + t = params; + params = params->next; + } + + t->next = (WORD_LIST *)NULL; + ret = string_list ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? quote_list (h) : h); + t->next = params; + + dispose_words (save); + return (ret); +} + +#define VT_VARIABLE 0 +#define VT_POSPARMS 1 +#define VT_ARRAYVAR 2 + +/* Return the type of variable specified by VARNAME (simple variable, + positional param, or array variable. Also return the value specified + by VARNAME (value of a variable or a reference to an array element). */ +static int +get_var_and_type (varname, value, varp, valp) + char *varname, *value; + SHELL_VAR **varp; + char **valp; +{ + int vtype; + char *temp; +#if defined (ARRAY_VARS) + SHELL_VAR *v; +#endif + + vtype = varname[0] == '@' && varname[1] == '\0'; /* VT_POSPARMS */ + *varp = (SHELL_VAR *)NULL; + +#if defined (ARRAY_VARS) + if (valid_array_reference (varname)) + { + v = array_variable_part (varname, &temp, (int *)0); + if (v && array_p (v)) + { + if (temp[0] == '@' && temp[1] == ']') + { + vtype = VT_ARRAYVAR; + *valp = (char *)array_cell (v); + } + else + { + vtype = VT_VARIABLE; + *valp = array_value (varname, 1); + } + *varp = v; + } + else + return -1; + } + else if ((v = find_variable (varname)) && array_p (v)) + { + vtype = VT_VARIABLE; + *varp = v; + *valp = array_reference (array_cell (v), 0); + } + else +#endif + *valp = value; + + return vtype; +} + +/* Process a variable substring expansion: ${name:e1[:e2]}. If VARNAME + is `@', use the positional parameters; otherwise, use the value of + VARNAME. If VARNAME is an array variable, use the array elements. */ + +static char * +parameter_brace_substring (varname, value, substr, quoted) + char *varname, *value, *substr; + int quoted; +{ + int e1, e2, vtype; + char *temp, *val; + SHELL_VAR *v; + + if (value == 0) + return ((char *)NULL); + + this_command_name = varname; + + vtype = get_var_and_type (varname, value, &v, &val); + if (vtype == -1) + return ((char *)NULL); + + if (verify_substring_values (val, substr, vtype, &e1, &e2) == 0) + return (&expand_param_error); + + switch (vtype) + { + case VT_VARIABLE: + temp = substring (value, e1, e2); + break; + case VT_POSPARMS: + temp = pos_params (e1, e2, quoted); + break; +#if defined (ARRAY_VARS) + case VT_ARRAYVAR: + temp = array_subrange (array_cell (v), e1, e2, quoted); + break; +#endif + } + + return temp; +} + +char * +pat_subst (string, pat, rep, mflags) + char *string, *pat, *rep; + int mflags; +{ + char *ret, *s, *e, *str; + int rsize, rptr, l, replen, mtype; + + ret = xmalloc (rsize = 64); + ret[0] = '\0'; + + mtype = mflags & MATCH_TYPEMASK; + + for (replen = STRLEN (rep), rptr = 0, str = string;;) + { + if (match_pattern (str, pat, mtype, &s, &e) == 0) + break; + l = s - str; + if ((rptr + l + replen) >= rsize) + { + while ((rptr + l + replen) >= rsize) + rsize += 64; + ret = xrealloc (ret, rsize); + } + /* OK, now copy the leading unmatched portion of the string (from + str to s) to ret starting at rptr (the current offset). Then copy + the replacement string at ret + rptr + (s - str). Increment + rptr (if necessary) and str and go on. */ + if (l) + { + strncpy (ret + rptr, str, l); + rptr += l; + } + if (replen) + { + strncpy (ret + rptr, rep, replen); + rptr += replen; + } + str = e; /* e == end of match */ + if (((mflags & MATCH_GLOBREP) == 0) || mtype != MATCH_ANY) + break; + } + + /* Now copy the unmatched portion of the input string */ + if (*str) + strcpy (ret + rptr, str); + else + ret[rptr] = '\0'; + + return ret; +} + +/* Do pattern match and replacement on the positional parameters. */ +static char * +pos_params_pat_subst (string, pat, rep, mflags) + char *string, *pat, *rep; + int mflags; +{ + WORD_LIST *save, *params; + WORD_DESC *w; + char *ret; + + save = params = list_rest_of_args (); + if (save == 0) + return ((char *)NULL); + + for ( ; params; params = params->next) + { + ret = pat_subst (params->word->word, pat, rep, mflags); + w = make_bare_word (ret); + dispose_word (params->word); + params->word = w; + FREE (ret); + } + + ret = string_list ((mflags & MATCH_QUOTED) ? quote_list (save) : save); + dispose_words (save); + + return (ret); +} + +static char * +parameter_brace_patsub (varname, value, patsub, quoted) + char *varname, *value, *patsub; + int quoted; +{ + int vtype, mflags; + char *val, *temp, *pat, *rep, *p; + SHELL_VAR *v; + + if (value == 0) + return ((char *)NULL); + + this_command_name = varname; + + vtype = get_var_and_type (varname, value, &v, &val); + if (vtype == -1) + return ((char *)NULL); + + mflags = 0; + if (*patsub == '/') + { + mflags |= MATCH_GLOBREP; + patsub++; + } + + if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) + mflags |= MATCH_QUOTED; + + if (rep = strchr (patsub, '/')) + *rep++ = '\0'; + else + rep = (char *)NULL; + + if (rep && *rep == '\0') + rep = (char *)NULL; + + /* Expand PAT and REP for command, variable and parameter, arithmetic, + and process substitution. Also perform quote removal. Do not + perform word splitting or filename generation. */ + pat = maybe_expand_string (patsub, quoted, expand_string_unsplit); + if (rep) + rep = maybe_expand_string (rep, quoted, expand_string_unsplit); + + p = pat; + if (pat[0] == '#') + { + mflags |= MATCH_BEG; + p++; + } + else if (pat[0] == '%') + { + mflags |= MATCH_END; + p++; + } + else + mflags |= MATCH_ANY; + + /* OK, we now want to substitute REP for PAT in VAL. If GLOBAL is 1, + the substitution is done everywhere, otherwise only the first + occurrence of PAT is replaced. */ + switch (vtype) + { + case VT_VARIABLE: + temp = pat_subst (val, p, rep, mflags); + break; + case VT_POSPARMS: + temp = pos_params_pat_subst (val, p, rep, mflags); + break; +#if defined (ARRAY_VARS) + case VT_ARRAYVAR: + temp = array_pat_subst (array_cell (v), p, rep, mflags); + break; +#endif + } + + FREE (pat); + FREE (rep); + + return temp; +} + +/* ${[#][!]name[[:]#[#]%[%]-=?+[word][:e1[:e2]]]} */ +static char * +parameter_brace_expand (string, indexp, quoted, quoted_dollar_atp, contains_dollar_at) + char *string; + int *indexp, quoted, *quoted_dollar_atp, *contains_dollar_at; +{ + int check_nullness, var_is_set, var_is_null, var_is_special; + int want_substring, want_indir, want_patsub; + char *name, *value, *temp, *temp1; + int t_index, sindex, c, number; + + sindex = *indexp; + t_index = ++sindex; + name = string_extract (string, &t_index, "#%:-=?+/}", 1); + value = (char *)NULL; + var_is_set = var_is_null = var_is_special = check_nullness = 0; + want_substring = want_indir = want_patsub = 0; + + /* If the name really consists of a special variable, then + make sure that we have the entire name. Handle indirect + references to special variables here, too. */ + if ((sindex == t_index || + ((sindex == t_index - 1) && string[sindex] == '!')) && + (string[t_index] == '-' || + string[t_index] == '?' || + string[t_index] == '#')) + { + t_index++; + free (name); + temp1 = string_extract (string, &t_index, "#%:-=?+/}", 0); + name = xmalloc (3 + (strlen (temp1))); + *name = string[sindex]; + if (string[sindex] == '!') + { + /* indirect ref. of special variable */ + name[1] = string[sindex + 1]; + strcpy (name + 2, temp1); + } + else + strcpy (name + 1, temp1); + free (temp1); + } + sindex = t_index; + + /* Find out what character ended the variable name. Then + do the appropriate thing. */ + if (c = string[sindex]) + sindex++; + + /* If c is followed by one of the valid parameter expansion + characters, move past it as normal. If not, assume that + a substring specification is being given, and do not move + past it. */ + if (c == ':' && member (string[sindex], "-=?+")) + { + check_nullness++; + if (c = string[sindex]) + sindex++; + } + else if (c == ':') + want_substring = 1; + else if (c == '/') + want_patsub = 1; + + want_indir = *name == '!'; + + /* Determine the value of this variable. */ + + /* Check for special variables, directly and indirectly + referenced. */ + if ((digit (*name) && all_digits (name)) || + (name[1] == '\0' && member (*name, "#-?$!@*")) || + (want_indir && name[2] == '\0' && member (name[1], "#-?$!@*"))) + var_is_special++; + + /* Check for special expansion things. */ + if (*name == '#') /* length of a parameter */ + { + /* Take the lengths of some of the shell's special + parameters. */ + if (string[sindex] == '}' && name[1] == '\0' && + check_nullness == 0 && member (c, "-?$!#")) + { + free (name); + switch (c) + { + case '-': + temp1 = which_set_flags (); + break; + case '?': + temp1 = itos (last_command_exit_value); + break; + case '$': + temp1 = itos (dollar_dollar_pid); + break; + case '!': + if (last_asynchronous_pid == NO_PID) + temp1 = (char *)NULL; + else + temp1 = itos ((int)last_asynchronous_pid); + break; + case '#': + temp1 = itos (number_of_args ()); + break; + } + number = STRLEN (temp1); + FREE (temp1); + *indexp = ++sindex; /* { string[sindex] == '}' */ + return (itos (number)); + } + + /* Don't allow things like ${#:-foo} to go by; they are + errors. If we are not pointing at the character just + after the closing brace, then we haven't gotten all of + the name. Since it begins with a special character, + this is a bad substitution. Explicitly check for ${#:}, + which the rules do not catch. Also check NAME for + validity before trying to go on. */ + if (string[sindex - 1] != '}' || + member (c, "?-=+") || + (name[1] == '\0' && c == '}' && check_nullness) || + (valid_length_expression (name) == 0)) + { + temp = (char *)NULL; + goto bad_substitution; + } + + number = parameter_brace_expand_length (name); + free (name); + + *indexp = sindex; + return (itos (number)); + } + + /* ${@} is identical to $@. */ + if (name[0] == '@' && name[1] == '\0') + { + if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && quoted_dollar_atp) + *quoted_dollar_atp = 1; + + if (contains_dollar_at) + *contains_dollar_at = 1; + } + + /* Make sure that NAME is valid before trying to go on. */ + if (valid_brace_expansion_word (want_indir ? name + 1 : name, + var_is_special) == 0) + { + temp = (char *)NULL; + goto bad_substitution; + } + + if (want_indir) + temp = parameter_brace_expand_indir (name + 1, var_is_special, quoted); + else + temp = parameter_brace_expand_word (name, var_is_special, quoted); + +#if defined (ARRAY_VARS) + if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && valid_array_reference (name)) + { + temp1 = strchr (name, '['); + if (temp1 && temp1[1] == '@' && temp1[2] == ']') + { + if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && quoted_dollar_atp) + *quoted_dollar_atp = 1; + if (contains_dollar_at) + *contains_dollar_at = 1; + } + } +#endif + + var_is_set = temp != (char *)0; + var_is_null = check_nullness && (var_is_set == 0 || *temp == 0); + + /* Get the rest of the stuff inside the braces. */ + if (c && c != '}') + { + /* Extract the contents of the ${ ... } expansion + according to the Posix.2 rules. */ + value = extract_dollar_brace_string (string, &sindex, quoted); + /*{*/ + if (string[sindex] == '}') + sindex++; + else + goto bad_substitution; + } + else + value = (char *)NULL; + + *indexp = sindex; + + /* If this is a substring spec, process it and add the result. */ + if (want_substring) + { + temp1 = parameter_brace_substring (name, temp, value, quoted); + FREE (name); + FREE (value); + FREE (temp); + return (temp1); + } + else if (want_patsub) + { + temp1 = parameter_brace_patsub (name, temp, value, quoted); + FREE (name); + FREE (value); + FREE (temp); + return (temp1); + } + + /* Do the right thing based on which character ended the variable name. */ + switch (c) + { + default: + case '\0': + bad_substitution: + report_error ("%s: bad substitution", string ? string : "??"); + FREE (value); + FREE (temp); + free (name); + return &expand_param_error; + + /*{*/ + case '}': + if (var_is_set == 0 && unbound_vars_is_error) + { + report_error ("%s: unbound variable", name); + FREE (value); + FREE (temp); + free (name); + last_command_exit_value = 1; + return &expand_param_error; + } + break; + + case '#': /* ${param#[#]pattern} */ + case '%': /* ${param%[%]pattern} */ + if (value == 0 || *value == '\0' || temp == 0 || *temp == '\0') + { + FREE (value); + break; + } + if ((name[0] == '@' || name[0] == '*') && name[1] == '\0') + temp1 = parameter_list_remove_pattern (value, name[0], c, quoted); +#if defined (ARRAY_VARS) + else if (valid_array_reference (name)) + temp1 = array_remove_pattern (value, name, c, quoted); +#endif + else + temp1 = parameter_brace_remove_pattern (value, temp, c, quoted); + free (temp); + free (value); + temp = temp1; + break; + + case '-': + case '=': + case '?': + case '+': + if (var_is_set && var_is_null == 0) + { + /* We don't want the value of the named variable for + anything, just the value of the right hand side. */ + if (c == '+') + { + FREE (temp); + if (value) + { + temp = parameter_brace_expand_rhs (name, value, c, + quoted, + quoted_dollar_atp, + contains_dollar_at); + if (temp && *temp == '\0' && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) + quoted |= Q_QUOTEDNULL; + free (value); + } + else + temp = (char *)NULL; + } + else + { + FREE (value); + } + /* Otherwise do nothing; just use the value in TEMP. */ + } + else /* VAR not set or VAR is NULL. */ + { + FREE (temp); + temp = (char *)NULL; + if (c == '=' && var_is_special) + { + report_error ("$%s: cannot assign in this way", name); + free (name); + free (value); + return &expand_param_error; + } + else if (c == '?') + { + parameter_brace_expand_error (name, value); + return (interactive ? &expand_param_error : &expand_param_fatal); + } + else if (c != '+') + { + temp = parameter_brace_expand_rhs (name, value, c, quoted, + quoted_dollar_atp, + contains_dollar_at); + if (temp && *temp == '\0' && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) + quoted |= Q_QUOTEDNULL; + } + free (value); + } + break; + } + free (name); + return (temp); +} + +/* Make a word list which is the parameter and variable expansion, + command substitution, arithmetic substitution, and quote removed + expansion of WORD. Return a pointer to a WORD_LIST which is the + result of the expansion. If WORD contains a null word, the word + list returned is also null. + + QUOTED contains flag values defined in shell.h. + + CONTAINS_DOLLAR_AT and EXPANDED_SOMETHING are return values; when non-null + they point to an integer value which receives information about expansion. + CONTAINS_DOLLAR_AT gets non-zero if WORD contained "$@", else zero. + EXPANDED_SOMETHING get non-zero if WORD contained any parameter expansions, + else zero. + + This only does word splitting in the case of $@ expansion. In that + case, we split on ' '. */ + +/* Values for the local variable quoted_state. */ +#define UNQUOTED 0 +#define PARTIALLY_QUOTED 1 +#define WHOLLY_QUOTED 2 + +static WORD_LIST * +expand_word_internal (word, quoted, contains_dollar_at, expanded_something) + WORD_DESC *word; + int quoted; + int *contains_dollar_at; + int *expanded_something; +{ + WORD_LIST *list; + WORD_DESC *tword; + SHELL_VAR *var; + + /* The intermediate string that we build while expanding. */ + char *istring; + + /* The current size of the above object. */ + int istring_size; + + /* Index into ISTRING. */ + int istring_index; + + /* Temporary string storage. */ + char *temp, *temp1; + + /* The text of WORD. */ + register char *string; + + /* The index into STRING. */ + int sindex; + + /* This gets 1 if we see a $@ while quoted. */ + int quoted_dollar_at; + + /* One of UNQUOTED, PARTIALLY_QUOTED, or WHOLLY_QUOTED, depending on + whether WORD contains no quoting characters, a partially quoted + string (e.g., "xx"ab), or is fully quoted (e.g., "xxab"). */ + int quoted_state; + + register int c; /* Current character. */ + int number; /* Temporary number value. */ + int t_index; /* For calls to string_extract_xxx. */ + + istring = xmalloc (istring_size = DEFAULT_ARRAY_SIZE); + istring[istring_index = 0] = '\0'; + + quoted_dollar_at = 0; + quoted_state = UNQUOTED; + + string = word->word; + if (string == 0) + goto finished_with_string; + + if (contains_dollar_at) + *contains_dollar_at = 0; + + /* Begin the expansion. */ + + for (sindex = 0; ;) + { + c = string[sindex]; + + /* Case on toplevel character. */ + switch (c) + { + case '\0': + goto finished_with_string; + + case CTLESC: + temp = xmalloc (3); + temp[0] = CTLESC; + temp[1] = c = string[++sindex]; + temp[2] = '\0'; + + if (string[sindex]) + sindex++; + + goto add_string; + +#if defined (PROCESS_SUBSTITUTION) + /* Process substitution. */ + case '<': + case '>': + { + if (string[++sindex] != '(' || (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || posixly_correct) + { + sindex--; + goto add_character; + } + else + t_index = sindex + 1; /* skip past both '<' and '(' */ + + temp1 = extract_process_subst (string, (c == '<') ? "<(" : ">(", &t_index); + sindex = t_index; + + /* If the process substitution specification is `<()', we want to + open the pipe for writing in the child and produce output; if + it is `>()', we want to open the pipe for reading in the child + and consume input. */ + temp = temp1 ? process_substitute (temp1, (c == '>')) : (char *)0; + + FREE (temp1); + + goto dollar_add_string; + } +#endif /* PROCESS_SUBSTITUTION */ + + /* See about breaking this into a separate function: + char * + param_expand (string, sindex, quoted, expanded_something, + contains_dollar_at, quoted_dollar_at) + char *string; + int *sindex, quoted, *expanded_something, *contains_dollar_at; + int *quoted_dollar_at; + */ + case '$': + + if (expanded_something) + *expanded_something = 1; + + c = string[++sindex]; + + /* Do simple cases first. Switch on what follows '$'. */ + switch (c) + { + /* $0 .. $9? */ + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + temp1 = dollar_vars[digit_value (c)]; + if (unbound_vars_is_error && temp1 == (char *)NULL) + { + report_error ("$%c: unbound variable", c); + free (string); + free (istring); + last_command_exit_value = 1; + return (&expand_word_error); + } + temp = temp1 ? savestring (temp1) : (char *)NULL; + goto dollar_add_string; + + /* $$ -- pid of the invoking shell. */ + case '$': + number = dollar_dollar_pid; + + add_number: + temp = itos (number); + dollar_add_string: + if (string[sindex]) sindex++; + + /* Add TEMP to ISTRING. */ + add_string: + if (temp) + { + istring = sub_append_string + (temp, istring, &istring_index, &istring_size); + temp = (char *)0; + } + + break; + + /* $# -- number of positional parameters. */ + case '#': + number = number_of_args (); + goto add_number; + + /* $? -- return value of the last synchronous command. */ + case '?': + number = last_command_exit_value; + goto add_number; + + /* $- -- flags supplied to the shell on invocation or + by `set'. */ + case '-': + temp = which_set_flags (); + goto dollar_add_string; + + /* $! -- Pid of the last asynchronous command. */ + case '!': + number = (int)last_asynchronous_pid; + + /* If no asynchronous pids have been created, expand + to nothing. */ + if (number == (int)NO_PID) + { + if (string[sindex]) + sindex++; + if (expanded_something) + *expanded_something = 0; + break; + } + goto add_number; + + /* The only difference between this and $@ is when the + arg is quoted. */ + case '*': /* `$*' */ + temp = string_rest_of_args (quoted); + + /* If there are no command-line arguments, this should just + disappear if there are other characters in the expansion, + even if it's quoted. */ + if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && temp && *temp == '\0') + { + free (temp); + temp = (char *)NULL; + } + /* In the case of a quoted string, quote the entire arg-list. + "$1 $2 $3". */ + if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && temp) + { + temp1 = temp; + temp = quote_string (temp); + free (temp1); + } + goto dollar_add_string; + + /* When we have "$@" what we want is "$1" "$2" "$3" ... This + means that we have to turn quoting off after we split into + the individually quoted arguments so that the final split + on the first character of $IFS is still done. */ + case '@': /* `$@' */ + list = list_rest_of_args (); + + /* We want to flag the fact that we saw this. We can't turn + off quoting entirely, because other characters in the + string might need it (consider "\"$@\""), but we need some + way to signal that the final split on the first character + of $IFS should be done, even though QUOTED is 1. */ + if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) + quoted_dollar_at = 1; + if (contains_dollar_at) + *contains_dollar_at = 1; + temp = string_list (((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && list) ? quote_list (list) : list); + dispose_words (list); + goto dollar_add_string; + + /* $'...' ANSI-C expand text between quotes and add the result. */ + case '\'': + t_index = sindex + 1; + temp1 = string_extract_single_quoted (string, &t_index); + sindex = t_index; + temp = ansicstr (temp1, (int *)NULL); + free (temp1); + if (temp) + { + temp1 = temp; + temp = quote_string (temp1); + free (temp1); + if (*temp == '\0' && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) + quoted |= Q_QUOTEDNULL; + } + else + { + temp = xmalloc (2); +#if 0 + temp[0] = CTLNUL; + temp[1] = '\0'; +#else + temp[0] = '\0'; +#endif + quoted |= Q_QUOTEDNULL; + } + goto add_string; + + case '{': /*}*/ + temp = parameter_brace_expand (string, &sindex, quoted, + "ed_dollar_at, + contains_dollar_at); + if (temp == &expand_param_error || temp == &expand_param_fatal) + { + free (string); + free (istring); + return (temp == &expand_param_error) ? &expand_word_error + : &expand_word_fatal; + } + if (temp && *temp == '\0' && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) + quoted |= Q_QUOTEDNULL; + goto add_string; + /* break; */ + + /* Do command or arithmetic substitution. */ + case '(': /*)*/ + /* We have to extract the contents of this paren substitution. */ + t_index = sindex + 1; + temp = extract_command_subst (string, &t_index); + sindex = t_index; + + /* For Posix.2-style `$(( ))' arithmetic substitution, + extract the expression and pass it to the evaluator. */ + if (temp && *temp == '(') + { + temp1 = temp + 1; + t_index = strlen (temp1) - 1; + + if (temp1[t_index] != ')') + { + report_error ("%s: bad arithmetic substitution", temp); + free (temp); + free (string); + free (istring); + return &expand_word_error; + } + + /* Cut off ending `)' */ + temp1[t_index] = '\0'; + + /* Expand variables found inside the expression. */ + temp1 = maybe_expand_string (temp1, 1, expand_string); + + /* No error messages. */ + this_command_name = (char *)NULL; + number = evalexp (temp1); + free (temp); + free (temp1); + + goto add_number; + } + + temp1 = command_substitute (temp, quoted); + FREE (temp); + temp = temp1; + goto dollar_add_string; + + /* Do straight arithmetic substitution. */ + case '[': + /* We have to extract the contents of this + arithmetic substitution. */ + t_index = sindex + 1; + temp = extract_arithmetic_subst (string, &t_index); + sindex = t_index; + + /* Do initial variable expansion. */ + temp1 = maybe_expand_string (temp, 1, expand_string); + + /* No error messages. */ + this_command_name = (char *)NULL; + number = evalexp (temp1); + free (temp1); + free (temp); + + goto add_number; + + default: + /* Find the variable in VARIABLE_LIST. */ + temp = (char *)NULL; + + for (t_index = sindex; + (c = string[sindex]) && legal_variable_char (c); + sindex++); + temp1 = substring (string, t_index, sindex); + + /* If this isn't a variable name, then just output the `$'. */ + if (temp1 == 0 || *temp1 == '\0') + { + FREE (temp1); + temp = xmalloc (2); + temp[0] = '$'; + temp[1] = '\0'; + if (expanded_something) + *expanded_something = 0; + goto add_string; + } + + /* If the variable exists, return its value cell. */ + var = find_variable (temp1); + + if (var && invisible_p (var) == 0 && value_cell (var)) + { +#if defined (ARRAY_VARS) + if (array_p (var)) + { + temp = array_reference (array_cell (var), 0); + if (temp) + temp = quote_escapes (temp); + } + else +#endif + temp = quote_escapes (value_cell (var)); + free (temp1); + goto add_string; + } + + temp = (char *)NULL; + + if (unbound_vars_is_error) + report_error ("%s: unbound variable", temp1); + else + { + free (temp1); + goto add_string; + } + + free (temp1); + free (string); + last_command_exit_value = 1; + free (istring); + return &expand_word_error; + } + break; /* End case '$': */ + + case '`': /* Backquoted command substitution. */ + { + sindex++; + + if (expanded_something) + *expanded_something = 1; + + temp = string_extract (string, &sindex, "`", 0); + de_backslash (temp); + temp1 = command_substitute (temp, quoted); + FREE (temp); + temp = temp1; + goto dollar_add_string; + } + + case '\\': + if (string[sindex + 1] == '\n') + { + sindex += 2; + continue; + } + + c = string[++sindex]; + + if (quoted & Q_HERE_DOCUMENT) + temp1 = slashify_in_here_document; + else if (quoted & Q_DOUBLE_QUOTES) + temp1 = slashify_in_quotes; + else + temp1 = ""; + + if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && member (c, temp1) == 0) + { + temp = xmalloc (3); + temp[0] = '\\'; temp[1] = c; temp[2] = '\0'; + } + else + /* This character is quoted, so add it in quoted mode. */ + temp = make_quoted_char (c); + + if (c) + sindex++; + else + quoted |= Q_QUOTEDNULL; + goto add_string; + + case '"': + if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT|Q_NOQUOTE)) + goto add_character; + + t_index = ++sindex; + temp = string_extract_double_quoted (string, &sindex, 0); + + /* If the quotes surrounded the entire string, then the + whole word was quoted. */ + quoted_state = (t_index == 1 && string[sindex] == '\0') + ? WHOLLY_QUOTED + : PARTIALLY_QUOTED; + + if (temp && *temp) + { + int dollar_at_flag; + + tword = make_word (temp); /* XXX */ + free (temp); + temp = (char *)NULL; + + list = expand_word_internal (tword, Q_DOUBLE_QUOTES, &dollar_at_flag, (int *)NULL); + + if (list == &expand_word_error || list == &expand_word_fatal) + { + free (istring); + free (string); + /* expand_word_internal has already freed temp_word->word + for us because of the way it prints error messages. */ + tword->word = (char *)NULL; + dispose_word (tword); + return list; + } + + dispose_word (tword); + + /* "$@" (a double-quoted dollar-at) expands into nothing, + not even a NULL word, when there are no positional + parameters. */ + if (list == 0 && dollar_at_flag) + { + quoted_dollar_at++; + break; + } + + /* If we get "$@", we know we have expanded something, so we + need to remember it for the final split on $IFS. This is + a special case; it's the only case where a quoted string + can expand into more than one word. It's going to come back + from the above call to expand_word_internal as a list with + a single word, in which all characters are quoted and + separated by blanks. What we want to do is to turn it back + into a list for the next piece of code. */ + if (list) + dequote_list (list); + + if (dollar_at_flag) + { + quoted_dollar_at++; + if (expanded_something) + *expanded_something = 1; + } + } + else + { + /* What we have is "". This is a minor optimization. */ + free (temp); + list = (WORD_LIST *)NULL; + quoted |= Q_QUOTEDNULL; + } + + /* The code above *might* return a list (consider the case of "$@", + where it returns "$1", "$2", etc.). We can't throw away the + rest of the list, and we have to make sure each word gets added + as quoted. We test on tresult->next: if it is non-NULL, we + quote the whole list, save it to a string with string_list, and + add that string. We don't need to quote the results of this + (and it would be wrong, since that would quote the separators + as well), so we go directly to add_string. */ + if (list) + { + if (list->next) + { + temp = string_list (quote_list (list)); + dispose_words (list); + goto add_string; + } + else + { + temp = savestring (list->word->word); + dispose_words (list); + } + } + else + temp = (char *)NULL; + + /* We do not want to add quoted nulls to strings that are only + partially quoted; we can throw them away. */ + if (!temp && (quoted_state == PARTIALLY_QUOTED)) + continue; + + add_quoted_string: + + if (temp) + { + temp1 = temp; + temp = quote_string (temp); + if (*temp1 == '\0') + quoted |= Q_QUOTEDNULL; + free (temp1); + } + else + { + /* Add NULL arg. */ + temp = xmalloc (2); +#if 0 + temp[0] = CTLNUL; + temp[1] = '\0'; +#else + temp[0] = '\0'; +#endif + quoted |= Q_QUOTEDNULL; + } + goto add_string; + /* break; */ + + case '\'': + if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT|Q_NOQUOTE)) + goto add_character; + + t_index = ++sindex; + temp = string_extract_single_quoted (string, &sindex); + + /* If the entire STRING was surrounded by single quotes, + then the string is wholly quoted. */ + quoted_state = (t_index == 1 && string[sindex] == '\0') + ? WHOLLY_QUOTED + : PARTIALLY_QUOTED; + + /* If all we had was '', it is a null expansion. */ + if (*temp == '\0') + { + free (temp); + temp = (char *)NULL; + quoted |= Q_QUOTEDNULL; + } + else + remove_quoted_escapes (temp); + + /* We do not want to add quoted nulls to strings that are only + partially quoted; such nulls are discarded. */ + if (temp == 0 && (quoted_state == PARTIALLY_QUOTED)) + continue; + + goto add_quoted_string; + /* break; */ + + default: + /* This is the fix for " $@ " */ + if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) + { + temp = make_quoted_char (c); + if (c == 0) + quoted |= Q_QUOTEDNULL; + goto dollar_add_string; + } + + add_character: + if (istring_index + 1 >= istring_size) + { + while (istring_index + 1 >= istring_size) + istring_size += DEFAULT_ARRAY_SIZE; + istring = xrealloc (istring, istring_size); + } + istring[istring_index++] = c; + istring[istring_index] = '\0'; + + /* Next character. */ + sindex++; + } + } + +finished_with_string: + /* OK, we're ready to return. If we have a quoted string, and + quoted_dollar_at is not set, we do no splitting at all; otherwise + we split on ' '. The routines that call this will handle what to + do if nothing has been expanded. */ + + /* Partially and wholly quoted strings which expand to the empty + string are retained as an empty arguments. Unquoted strings + which expand to the empty string are discarded. The single + exception is the case of expanding "$@" when there are no + positional parameters. In that case, we discard the expansion. */ + + /* Because of how the code that handles "" and '' in partially + quoted strings works, we need to make ISTRING into a QUOTED_NULL + if we saw quoting characters, but the expansion was empty. + "" and '' are tossed away before we get to this point when + processing partially quoted strings. This makes "" and $xxx"" + equivalent when xxx is unset. */ + + /* If we expand to nothing and there were no single or double quotes + in the word, we throw it away. Otherwise, we return a NULL word. + The single exception is for $@ surrounded by double quotes when + there are no positional parameters. In that case, we also throw + the word away. */ + + if (*istring == '\0') + { + if (quoted_state == PARTIALLY_QUOTED && quoted_dollar_at == 0) + { +#if 0 + istring[0] = CTLNUL; + istring[1] = '\0'; +#else + istring[0] = '\0'; +#endif + tword = make_bare_word (istring); + list = make_word_list (tword, (WORD_LIST *)NULL); + if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES|Q_QUOTEDNULL)) + tword->flags |= W_QUOTED; + } + /* According to sh, ksh, and Posix.2, if a word expands into nothing + and a double-quoted "$@" appears anywhere in it, then the entire + word is removed. */ + else if (quoted_state == UNQUOTED || quoted_dollar_at) + list = (WORD_LIST *)NULL; + else + { + tword = make_bare_word (istring); + list = make_word_list (tword, (WORD_LIST *)NULL); + if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES|Q_QUOTEDNULL)) + tword->flags |= W_QUOTED; + } + } + else if (word->flags & W_ASSIGNMENT) + { + tword = make_bare_word (istring); + list = make_word_list (tword, (WORD_LIST *)NULL); + tword->flags |= W_ASSIGNMENT; /* XXX */ + if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) + tword->flags |= W_QUOTED; + } + else + { + char *ifs_chars; + + if (quoted_dollar_at) + { + var = find_variable ("IFS"); + ifs_chars = var ? value_cell (var) : " \t\n"; + } + else + ifs_chars = (char *)NULL; + + /* According to Posix.2, "$@" expands to a single word if + IFS="" and the positional parameters are not empty. */ + if (quoted_dollar_at && ifs_chars && *ifs_chars) + { + list = list_string (istring, " ", 1); + } + else + { + tword = make_bare_word (istring); + list = make_word_list (tword, (WORD_LIST *)NULL); + if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || (quoted_state == WHOLLY_QUOTED)) + tword->flags |= W_QUOTED; + if (word->flags & W_ASSIGNMENT) + tword->flags |= W_ASSIGNMENT; + } + } + + free (istring); + return (list); +} + +/* **************************************************************** */ +/* */ +/* Functions for Quote Removal */ +/* */ +/* **************************************************************** */ + +/* Perform quote removal on STRING. If QUOTED > 0, assume we are obeying the + backslash quoting rules for within double quotes. */ +char * +string_quote_removal (string, quoted) + char *string; + int quoted; +{ + char *r, *result_string, *temp; + int sindex, tindex, c, dquote; + + /* The result can be no longer than the original string. */ + r = result_string = xmalloc (strlen (string) + 1); + + for (dquote = sindex = 0; c = string[sindex];) + { + switch (c) + { + case '\\': + c = string[++sindex]; + if (((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || dquote) && member (c, slashify_in_quotes) == 0) + *r++ = '\\'; + /* FALLTHROUGH */ + + default: + *r++ = c; + sindex++; + break; + + case '\'': + if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || dquote) + { + *r++ = c; + sindex++; + break; + } + tindex = sindex + 1; + temp = string_extract_single_quoted (string, &tindex); + if (temp) + { + strcpy (r, temp); + r += strlen (r); + free (temp); + } + sindex = tindex; + break; + + case '"': + dquote = 1 - dquote; + sindex++; + break; + } + } + *r = '\0'; + return (result_string); +} + +#if 0 +/* UNUSED */ +/* Perform quote removal on word WORD. This allocates and returns a new + WORD_DESC *. */ +WORD_DESC * +word_quote_removal (word, quoted) + WORD_DESC *word; + int quoted; +{ + WORD_DESC *w; + char *t; + + t = string_quote_removal (word->word, quoted); + w = make_bare_word (t); + return (w); +} + +/* Perform quote removal on all words in LIST. If QUOTED is non-zero, + the members of the list are treated as if they are surrounded by + double quotes. Return a new list, or NULL if LIST is NULL. */ +WORD_LIST * +word_list_quote_removal (list, quoted) + WORD_LIST *list; + int quoted; +{ + WORD_LIST *result, *t, *tresult; + + for (t = list, result = (WORD_LIST *)NULL; t; t = t->next) + { + tresult = (WORD_LIST *)xmalloc (sizeof (WORD_LIST)); + tresult->word = word_quote_removal (t->word, quoted); + tresult->next = (WORD_LIST *)NULL; + result = (WORD_LIST *) list_append (result, tresult); + } + return (result); +} +#endif + +/* Return 1 if CHARACTER appears in an unquoted portion of + STRING. Return 0 otherwise. */ +static int +unquoted_member (character, string) + int character; + char *string; +{ + int sindex, c; + + for (sindex = 0; c = string[sindex]; ) + { + if (c == character) + return (1); + + switch (c) + { + default: + sindex++; + break; + + case '\\': + sindex++; + if (string[sindex]) + sindex++; + break; + + case '\'': + sindex = skip_single_quoted (string, ++sindex); + break; + + case '"': + sindex = skip_double_quoted (string, ++sindex); + break; + } + } + return (0); +} + +/* Return 1 if SUBSTR appears in an unquoted portion of STRING. */ +static int +unquoted_substring (substr, string) + char *substr, *string; +{ + int sindex, c, sublen; + + if (substr == 0 || *substr == '\0') + return (0); + + sublen = strlen (substr); + for (sindex = 0; c = string[sindex]; ) + { + if (STREQN (string + sindex, substr, sublen)) + return (1); + + switch (c) + { + case '\\': + sindex++; + + if (string[sindex]) + sindex++; + break; + + case '\'': + sindex = skip_single_quoted (string, ++sindex); + break; + + case '"': + sindex = skip_double_quoted (string, ++sindex); + break; + + default: + sindex++; + break; + } + } + return (0); +} + +/******************************************* + * * + * Functions to perform word splitting * + * * + *******************************************/ + +/* This splits a single word into a WORD LIST on $IFS, but only if the word + is not quoted. list_string () performs quote removal for us, even if we + don't do any splitting. */ +WORD_LIST * +word_split (w) + WORD_DESC *w; +{ + WORD_LIST *result; + SHELL_VAR *ifs; + char *ifs_chars; + WORD_DESC *tw; + + if (w) + { + ifs = find_variable ("IFS"); + /* If IFS is unset, it defaults to " \t\n". */ + ifs_chars = ifs ? value_cell (ifs) : " \t\n"; + + if ((w->flags & W_QUOTED) || !ifs_chars) + ifs_chars = ""; + + result = list_string (w->word, ifs_chars, w->flags & W_QUOTED); + /* If the word expands to nothing, but is quoted, make a null word. */ + if (result == 0 && (w->flags & W_QUOTED)) + { + tw = make_bare_word (""); + tw->flags |= W_QUOTED; + result = make_word_list (tw, (WORD_LIST *)NULL); + } + } + else + result = (WORD_LIST *)NULL; + + return (result); +} + +/* Perform word splitting on LIST and return the RESULT. It is possible + to return (WORD_LIST *)NULL. */ +static WORD_LIST * +word_list_split (list) + WORD_LIST *list; +{ + WORD_LIST *result, *t, *tresult; + + for (t = list, result = (WORD_LIST *)NULL; t; t = t->next) + { + tresult = word_split (t->word); + result = (WORD_LIST *) list_append (result, tresult); + } + return (result); +} + +/************************************************** + * * + * Functions to expand an entire WORD_LIST * + * * + **************************************************/ + +static WORD_LIST *varlist = (WORD_LIST *)NULL; + +/* Separate out any initial variable assignments from TLIST. If set -k has + been executed, remove all assignment statements from TLIST. Initial + variable assignments and other environment assignments are placed + on VARLIST. */ +static WORD_LIST * +separate_out_assignments (tlist) + WORD_LIST *tlist; +{ + register WORD_LIST *vp, *lp; + + if (!tlist) + return ((WORD_LIST *)NULL); + + varlist = (WORD_LIST *)NULL; + vp = lp = tlist; + + /* Separate out variable assignments at the start of the command. + Loop invariant: vp->next == lp + Loop postcondition: + lp = list of words left after assignment statements skipped + tlist = original list of words + */ + while (lp && (lp->word->flags & W_ASSIGNMENT)) + { + vp = lp; + lp = lp->next; + } + + /* If lp != tlist, we have some initial assignment statements. */ + /* We make VARLIST point to the list of assignment words and + TLIST point to the remaining words. */ + if (lp != tlist) + { + varlist = tlist; + /* ASSERT(vp->next == lp); */ + vp->next = (WORD_LIST *)NULL; /* terminate variable list */ + tlist = lp; /* remainder of word list */ + } + + /* vp == end of variable list */ + /* tlist == remainder of original word list without variable assignments */ + if (!tlist) + /* All the words in tlist were assignment statements */ + return ((WORD_LIST *)NULL); + + /* ASSERT(tlist != NULL); */ + /* ASSERT((tlist->word->flags & W_ASSIGNMENT) == 0); */ + + /* If the -k option is in effect, we need to go through the remaining + words, separate out the assignment words, and place them on VARLIST. */ + if (place_keywords_in_env) + { + WORD_LIST *tp; /* tp == running pointer into tlist */ + + tp = tlist; + lp = tlist->next; + + /* Loop Invariant: tp->next == lp */ + /* Loop postcondition: tlist == word list without assignment statements */ + while (lp) + { + if (lp->word->flags & W_ASSIGNMENT) + { + /* Found an assignment statement, add this word to end of + varlist (vp). */ + if (!varlist) + varlist = vp = lp; + else + { + vp->next = lp; + vp = lp; + } + + /* Remove the word pointed to by LP from TLIST. */ + tp->next = lp->next; + /* ASSERT(vp == lp); */ + lp->next = (WORD_LIST *)NULL; + lp = tp->next; + } + else + { + tp = lp; + lp = lp->next; + } + } + } + return (tlist); +} + +/* Take the list of words in LIST and do the various substitutions. Return + a new list of words which is the expanded list, and without things like + variable assignments. */ + +WORD_LIST * +expand_words (list) + WORD_LIST *list; +{ + return (expand_word_list_internal (list, 1)); +} + +/* Same as expand_words (), but doesn't hack variable or environment + variables. */ +WORD_LIST * +expand_words_no_vars (list) + WORD_LIST *list; +{ + return (expand_word_list_internal (list, 0)); +} + +/* The workhorse for expand_words () and expand_words_no_vars (). + First arg is LIST, a WORD_LIST of words. + Second arg DO_VARS is non-zero if you want to do environment and + variable assignments, else zero. + + This does all of the substitutions: brace expansion, tilde expansion, + parameter expansion, command substitution, arithmetic expansion, + process substitution, word splitting, and pathname expansion. Words + with the W_QUOTED or W_ASSIGNMENT bits set, or for which no expansion + is done, do not undergo word splitting. Words with the W_ASSIGNMENT + bit set do not undergo pathname expansion. */ +static WORD_LIST * +expand_word_list_internal (list, do_vars) + WORD_LIST *list; + int do_vars; +{ + WORD_LIST *tlist, *new_list, *next, *temp_list, *orig_list, *disposables; + char *temp_string; + + if (list == 0) + return ((WORD_LIST *)NULL); + + tlist = copy_word_list (list); + + if (do_vars) + { + tlist = separate_out_assignments (tlist); + if (tlist == 0) + { + if (varlist) + { + /* All the words were variable assignments, so they are placed + into the shell's environment. */ + for (new_list = varlist; new_list; new_list = new_list->next) + do_assignment (new_list->word->word); + dispose_words (varlist); + varlist = (WORD_LIST *)NULL; + } + return ((WORD_LIST *)NULL); + } + } + + /* Begin expanding the words that remain. The expansions take place on + things that aren't really variable assignments. */ + +#if defined (BRACE_EXPANSION) + /* Do brace expansion on this word if there are any brace characters + in the string. */ + if (brace_expansion && tlist) + { + register char **expansions; + WORD_LIST *braces; + int eindex; + + for (braces = disposables = (WORD_LIST *)NULL; tlist; tlist = next) + { + next = tlist->next; + + /* Only do brace expansion if the word has a brace character. If + not, just add the word list element to BRACES and continue. In + the common case, at least when running shell scripts, this will + degenerate to a bunch of calls to `strchr', and then what is + basically a reversal of TLIST into BRACES, which is corrected + by a call to reverse_list () on BRACES when the end of TLIST + is reached. */ + if (strchr (tlist->word->word, '{')) + { + expansions = brace_expand (tlist->word->word); + + for (eindex = 0; temp_string = expansions[eindex]; eindex++) + { + braces = make_word_list (make_word (temp_string), braces); + free (expansions[eindex]); + } + free (expansions); + + /* Add TLIST to the list of words to be freed after brace + expansion has been performed. */ + tlist->next = disposables; + disposables = tlist; + } + else + { + tlist->next = braces; + braces = tlist; + } + } + + dispose_words (disposables); + tlist = REVERSE_LIST (braces, WORD_LIST *); + } +#endif /* BRACE_EXPANSION */ + + /* We do tilde expansion all the time. This is what 1003.2 says. */ + for (orig_list = tlist, new_list = (WORD_LIST *)NULL; tlist; tlist = next) + { + WORD_LIST *expanded; + int expanded_something, has_dollar_at; + + temp_string = tlist->word->word; + + next = tlist->next; + + /* Posix.2 section 3.6.1 says that tildes following `=' in words + which are not assignment statements are not expanded. We do + this only if POSIXLY_CORRECT is enabled. */ + if (temp_string[0] == '~' || + (posixly_correct == 0 && strchr (temp_string, '~') && + unquoted_substring ("=~", temp_string))) + { + tlist->word->word = bash_tilde_expand (temp_string); + free (temp_string); + } + + expanded_something = 0; + expanded = expand_word_internal + (tlist->word, 0, &has_dollar_at, &expanded_something); + + if (expanded == &expand_word_error || expanded == &expand_word_fatal) + { + /* By convention, each time this error is returned, + tlist->word->word has already been freed. */ + tlist->word->word = (char *)NULL; + + /* Dispose our copy of the original list. */ + dispose_words (orig_list); + /* Dispose the new list we're building. */ + dispose_words (new_list); + + if (expanded == &expand_word_error) + jump_to_top_level (DISCARD); + else + jump_to_top_level (FORCE_EOF); + } + + /* Don't split assignment words, even when they do not precede a + command name. */ + if (expanded_something && (tlist->word->flags & W_ASSIGNMENT) == 0) + { + temp_list = word_list_split (expanded); + dispose_words (expanded); + } + else + { + /* If no parameter expansion, command substitution, process + substitution, or arithmetic substitution took place, then + do not do word splitting. We still have to remove quoted + null characters from the result. */ +#if 0 + word_list_remove_quoted_nulls (expanded); +#endif + temp_list = expanded; + } + + /* In the most common cases, t will be a list containing only one + element, so the call to reverse_list would be wasted. */ + expanded = REVERSE_LIST (temp_list, WORD_LIST *); + new_list = (WORD_LIST *)list_append (expanded, new_list); + } + + new_list = REVERSE_LIST (new_list, WORD_LIST *); + + dispose_words (orig_list); + + /* Okay, we're almost done. Now let's just do some filename + globbing. */ + if (new_list) + { + char **glob_array; + register int glob_index; + WORD_LIST *glob_list; + WORD_DESC *tword; + + orig_list = disposables = (WORD_LIST *)NULL; + tlist = new_list; + + /* orig_list == output list, despite the name. */ + if (!disallow_filename_globbing) + { + glob_array = (char **)NULL; + while (tlist) + { + /* For each word, either globbing is attempted or the word is + added to orig_list. If globbing succeeds, the results are + added to orig_list and the word (tlist) is added to the list + of disposable words. If globbing fails and failed glob + expansions are left unchanged (the shell default), the + original word is added to orig_list. If globbing fails and + failed glob expansions are removed, the original word is + added to the list of disposable words. orig_list ends up + in reverse order and requires a call to reverse_list to + be set right. After all words are examined, the disposable + words are freed. */ + next = tlist->next; + + /* If the word isn't quoted and there is an unquoted pattern + matching character in the word, then glob it. */ + if ((tlist->word->flags & (W_QUOTED|W_ASSIGNMENT)) == 0 && + unquoted_glob_pattern_p (tlist->word->word)) + { + glob_array = shell_glob_filename (tlist->word->word); + + /* Handle error cases. + I don't think we should report errors like "No such file + or directory". However, I would like to report errors + like "Read failed". */ + + if (GLOB_FAILED (glob_array)) + { + glob_array = (char **) xmalloc (sizeof (char *)); + glob_array[0] = (char *)NULL; + } + + /* Dequote the current word in case we have to use it. */ + if (glob_array[0] == NULL) + { + temp_string = dequote_string (tlist->word->word); + free (tlist->word->word); + tlist->word->word = temp_string; + } + + /* Make the array into a word list. */ + glob_list = (WORD_LIST *)NULL; + for (glob_index = 0; glob_array[glob_index]; glob_index++) + { + tword = make_bare_word (glob_array[glob_index]); + glob_list = make_word_list (tword, glob_list); + } + + if (glob_list) + { + orig_list = (WORD_LIST *)list_append (glob_list, orig_list); + tlist->next = disposables; + disposables = tlist; + } + else if (allow_null_glob_expansion == 0) + { + /* Failed glob expressions are left unchanged. */ + tlist->next = orig_list; + orig_list = tlist; + } + else + { + /* Failed glob expressions are removed. */ + tlist->next = disposables; + disposables = tlist; + } + } + else + { + /* Dequote the string. */ + temp_string = dequote_string (tlist->word->word); + free (tlist->word->word); + tlist->word->word = temp_string; + tlist->next = orig_list; + orig_list = tlist; + } + + free_array (glob_array); + glob_array = (char **)NULL; + + tlist = next; + } + + if (disposables) + dispose_words (disposables); + + new_list = REVERSE_LIST (orig_list, WORD_LIST *); + } + else + { + /* Dequote the words, because we're not performing globbing. */ + for (temp_list = new_list; temp_list; temp_list = temp_list->next) + { + temp_string = dequote_string (temp_list->word->word); + free (temp_list->word->word); + temp_list->word->word = temp_string; + } + } + } + + if (do_vars) + { + Function *assign_func; + + /* If the remainder of the words expand to nothing, Posix.2 requires + that the variable and environment assignments affect the shell's + environment. */ + assign_func = new_list ? assign_in_env : do_assignment; + + for (temp_list = varlist; temp_list; temp_list = temp_list->next) + (*assign_func) (temp_list->word->word); + + dispose_words (varlist); + varlist = (WORD_LIST *)NULL; + } + + return (new_list); +} + +/************************************************* + * * + * Functions to manage special variables * + * * + *************************************************/ + +/* An alist of name.function for each special variable. Most of the + functions don't do much, and in fact, this would be faster with a + switch statement, but by the end of this file, I am sick of switch + statements. */ + +#define SET_INT_VAR(name, intvar) intvar = find_variable (name) != 0 + +struct name_and_function { + char *name; + VFunction *function; +} special_vars[] = { + { "PATH", sv_path }, + { "MAIL", sv_mail }, + { "MAILPATH", sv_mail }, + { "MAILCHECK", sv_mail }, + + { "POSIXLY_CORRECT", sv_strict_posix }, + { "GLOBIGNORE", sv_globignore }, + + /* Variables which only do something special when READLINE is defined. */ +#if defined (READLINE) + { "TERM", sv_terminal }, + { "TERMCAP", sv_terminal }, + { "TERMINFO", sv_terminal }, + { "HOSTFILE", sv_hostfile }, +#endif /* READLINE */ + + /* Variables which only do something special when HISTORY is defined. */ +#if defined (HISTORY) + { "HISTIGNORE", sv_histignore }, + { "HISTSIZE", sv_histsize }, + { "HISTFILESIZE", sv_histsize }, + { "HISTCONTROL", sv_history_control }, +# if defined (BANG_HISTORY) + { "histchars", sv_histchars }, +# endif /* BANG_HISTORY */ +#endif /* HISTORY */ + + { "IGNOREEOF", sv_ignoreeof }, + { "ignoreeof", sv_ignoreeof }, + + { "OPTIND", sv_optind }, + { "OPTERR", sv_opterr }, + + { (char *)0, (VFunction *)0 } +}; + +/* The variable in NAME has just had its state changed. Check to see if it + is one of the special ones where something special happens. */ +void +stupidly_hack_special_variables (name) + char *name; +{ + int i; + + for (i = 0; special_vars[i].name; i++) + { + if (STREQ (special_vars[i].name, name)) + { + (*(special_vars[i].function)) (name); + return; + } + } +} + +/* What to do just after the PATH variable has changed. */ +void +sv_path (name) + char *name; +{ + /* hash -r */ + flush_hashed_filenames (); +} + +/* What to do just after one of the MAILxxxx variables has changed. NAME + is the name of the variable. This is called with NAME set to one of + MAIL, MAILCHECK, or MAILPATH. */ +void +sv_mail (name) + char *name; +{ + /* If the time interval for checking the files has changed, then + reset the mail timer. Otherwise, one of the pathname vars + to the users mailbox has changed, so rebuild the array of + filenames. */ + if (name[4] == 'C') /* if (strcmp (name, "MAILCHECK") == 0) */ + reset_mail_timer (); + else + { + free_mail_files (); + remember_mail_dates (); + } +} + +/* What to do when GLOBIGNORE changes. */ +void +sv_globignore (name) + char *name; +{ + setup_glob_ignore (name); +} + +#if defined (READLINE) +/* What to do just after one of the TERMxxx variables has changed. + If we are an interactive shell, then try to reset the terminal + information in readline. */ +void +sv_terminal (name) + char *name; +{ + if (interactive_shell && no_line_editing == 0) + rl_reset_terminal (get_string_value ("TERM")); +} + +void +sv_hostfile (name) + char *name; +{ + hostname_list_initialized = 0; +} +#endif /* READLINE */ + +#if defined (HISTORY) +/* What to do after the HISTSIZE or HISTFILESIZE variables change. + If there is a value for this HISTSIZE (and it is numeric), then stifle + the history. Otherwise, if there is NO value for this variable, + unstifle the history. If name is HISTFILESIZE, and its value is + numeric, truncate the history file to hold no more than that many + lines. */ +void +sv_histsize (name) + char *name; +{ + char *temp; + long num; + + temp = get_string_value (name); + + if (temp && *temp) + { + if (legal_number (temp, &num)) + { + if (name[4] == 'S') + { + stifle_history (num); + num = where_history (); + if (history_lines_this_session > num) + history_lines_this_session = num; + } + else + { + history_truncate_file (get_string_value ("HISTFILE"), (int)num); + if (num <= history_lines_in_file) + history_lines_in_file = num; + } + } + } + else if (name[4] == 'S') + unstifle_history (); +} + +/* What to do after the HISTIGNORE variable changes. */ +void +sv_histignore (name) + char *name; +{ + setup_history_ignore (name); +} + +/* What to do after the HISTCONTROL variable changes. */ +void +sv_history_control (name) + char *name; +{ + char *temp; + + history_control = 0; + temp = get_string_value (name); + + if (temp && *temp && STREQN (temp, "ignore", 6)) + { + if (temp[6] == 's') /* ignorespace */ + history_control = 1; + else if (temp[6] == 'd') /* ignoredups */ + history_control = 2; + else if (temp[6] == 'b') /* ignoreboth */ + history_control = 3; + } +} + +#if defined (BANG_HISTORY) +/* Setting/unsetting of the history expansion character. */ +void +sv_histchars (name) + char *name; +{ + char *temp; + + temp = get_string_value (name); + if (temp) + { + history_expansion_char = *temp; + if (temp[0] && temp[1]) + { + history_subst_char = temp[1]; + if (temp[2]) + history_comment_char = temp[2]; + } + } + else + { + history_expansion_char = '!'; + history_subst_char = '^'; + history_comment_char = '#'; + } +} +#endif /* BANG_HISTORY */ +#endif /* HISTORY */ + +/* If the variable exists, then the value of it can be the number + of times we actually ignore the EOF. The default is small, + (smaller than csh, anyway). */ +void +sv_ignoreeof (name) + char *name; +{ + SHELL_VAR *tmp_var; + char *temp; + + eof_encountered = 0; + + tmp_var = find_variable (name); + ignoreeof = tmp_var != 0; + temp = tmp_var ? value_cell (tmp_var) : (char *)NULL; + if (temp) + eof_encountered_limit = (*temp && all_digits (temp)) ? atoi (temp) : 10; +} + +void +sv_optind (name) + char *name; +{ + char *tt; + int s; + + tt = get_string_value ("OPTIND"); + if (tt && *tt) + { + s = atoi (tt); + + /* According to POSIX, setting OPTIND=1 resets the internal state + of getopt (). */ + if (s < 0 || s == 1) + s = 0; + } + else + s = 0; + getopts_reset (s); +} + +void +sv_opterr (name) + char *name; +{ + char *tt; + + tt = get_string_value ("OPTERR"); + sh_opterr = (tt && *tt) ? atoi (tt) : 1; +} + +void +sv_strict_posix (name) + char *name; +{ + SET_INT_VAR (name, posixly_correct); + posix_initialize (posixly_correct); +#if defined (READLINE) + posix_readline_initialize (posixly_correct); +#endif /* READLINE */ +} diff --git a/bash-20060316/CWRU/posix-parser/Makefile b/bash-20060316/CWRU/posix-parser/Makefile new file mode 100644 index 000000000..74f45aeed --- /dev/null +++ b/bash-20060316/CWRU/posix-parser/Makefile @@ -0,0 +1,14 @@ +SRCS= main.c parse.y make.c copy.c aux.c +OBJS= main.o parse.o make.o copy.o aux.o + +PROG= parse + +AUX= ../../../sun4/error.o + +CFLAGS= -g -I. -I../.. -I. -DTEST -Dalloca=__builtin_alloca +LDFLAGS= -g + +$(PROG): $(OBJS) + $(CC) $(LDFLAGS) -o $@ $(OBJS) $(AUX) $(LIBS) + +parse.o: parse.y diff --git a/bash-20060316/CWRU/posix-parser/aux.c b/bash-20060316/CWRU/posix-parser/aux.c new file mode 100644 index 000000000..bd8c8c9fa --- /dev/null +++ b/bash-20060316/CWRU/posix-parser/aux.c @@ -0,0 +1,231 @@ +#include +#include +#include +#include +#include "filecntl.h" + +#include "shell.h" +#include +char * +xmalloc (size) + int size; +{ + register char *temp = (char *)malloc (size); + + if (!temp) + fatal_error ("Out of virtual memory!"); + + return (temp); +} + +char * +xrealloc (pointer, size) + register char *pointer; + int size; +{ + char *temp; + + if (!pointer) + temp = (char *)xmalloc (size); + else + temp = (char *)realloc (pointer, size); + + if (!temp) + fatal_error ("Out of virtual memory!"); + + return (temp); +} +/* Reverse the chain of structures in LIST. Output the new head + of the chain. You should always assign the output value of this + function to something, or you will lose the chain. */ +GENERIC_LIST * +reverse_list (list) + register GENERIC_LIST *list; +{ + register GENERIC_LIST *next, *prev = (GENERIC_LIST *)NULL; + + while (list) { + next = list->next; + list->next = prev; + prev = list; + list = next; + } + return (prev); +} + +/* Return the number of elements in LIST, a generic list. */ +int +list_length (list) + register GENERIC_LIST *list; +{ + register int i; + + for (i = 0; list; list = list->next, i++); + return (i); +} + +/* Delete the element of LIST which satisfies the predicate function COMPARER. + Returns the element that was deleted, so you can dispose of it, or -1 if + the element wasn't found. COMPARER is called with the list element and + then ARG. Note that LIST contains the address of a variable which points + to the list. You might call this function like this: + + SHELL_VAR *elt = delete_element (&variable_list, check_var_has_name, "foo"); + dispose_variable (elt); +*/ +GENERIC_LIST * +delete_element (list, comparer, arg) + GENERIC_LIST **list; + Function *comparer; +{ + register GENERIC_LIST *prev = (GENERIC_LIST *)NULL; + register GENERIC_LIST *temp = *list; + + while (temp) { + if ((*comparer) (temp, arg)) { + if (prev) prev->next = temp->next; + else *list = temp->next; + return (temp); + } + prev = temp; + temp = temp->next; + } + return ((GENERIC_LIST *)-1); +} + +/* Find NAME in ARRAY. Return the index of NAME, or -1 if not present. + ARRAY shoudl be NULL terminated. */ +int +find_name_in_list (name, array) + char *name, *array[]; +{ + int i; + + for (i=0; array[i]; i++) + if (strcmp (name, array[i]) == 0) + return (i); + + return (-1); +} + +/* Return the length of ARRAY, a NULL terminated array of char *. */ +int +array_len (array) + register char **array; +{ + register int i; + for (i=0; array[i]; i++); + return (i); +} + +/* Free the contents of ARRAY, a NULL terminated array of char *. */ +void +free_array (array) + register char **array; +{ + register int i = 0; + + if (!array) return; + + while (array[i]) + free (array[i++]); + free (array); +} + +/* Allocate and return a new copy of ARRAY and its contents. */ +char ** +copy_array (array) + register char **array; +{ + register int i; + int len; + char **new_array; + + len = array_len (array); + new_array = (char **)xmalloc ((len + 1) * sizeof (char *)); + for (i = 0; array[i]; i++) + new_array[i] = savestring (array[i]); + new_array[i] = (char *)NULL; + return (new_array); +} + +/* Append LIST2 to LIST1. Return the header of the list. */ +GENERIC_LIST * +list_append (head, tail) + GENERIC_LIST *head, *tail; +{ + register GENERIC_LIST *t_head = head; + + if (!t_head) + return (tail); + + while (t_head->next) t_head = t_head->next; + t_head->next = tail; + return (head); +} + +#include + +#ifndef NULL +#define NULL 0x0 +#endif + +#if defined (ibm032) +/* + * Most vanilla 4.3 (not 4.3-tahoe) sites lack vfprintf. + * Here is the one from 4.3-tahoe (it is freely redistributable). + * + * Beware! Don't trust the value returned by either of these functions; it + * seems that pre-4.3-tahoe implementations of _doprnt () return the first + * argument, i.e. a char *. Besides, _doprnt () is incorrectly documented + * in the 4.3 BSD manuals, anyway (it's wrong in SunOS 3.5 also, but they + * have the v*printf functions (incorrectly documented (vprintf), but they + * are present)). + */ +#include + +int +vfprintf (iop, fmt, ap) + FILE *iop; + char *fmt; + va_list ap; +{ + int len; + char localbuf[BUFSIZ]; + + if (iop->_flag & _IONBF) + { + iop->_flag &= ~_IONBF; + iop->_ptr = iop->_base = localbuf; + len = _doprnt (fmt, ap, iop); + (void) fflush (iop); + iop->_flag |= _IONBF; + iop->_base = NULL; + iop->_bufsiz = 0; + iop->_cnt = 0; + } + else + len = _doprnt (fmt, ap, iop); + return (ferror (iop) ? EOF : len); +} + +/* + * Ditto for vsprintf + */ +int +vsprintf (str, fmt, ap) + char *str, *fmt; + va_list ap; +{ + FILE f; + int len; + + f._flag = _IOWRT+_IOSTRG; + f._ptr = str; + f._cnt = 32767; + len = _doprnt (fmt, ap, &f); + *f._ptr = 0; + return (len); +} + +#endif /* ibm032 */ diff --git a/bash-20060316/CWRU/posix-parser/command.h b/bash-20060316/CWRU/posix-parser/command.h new file mode 100644 index 000000000..a7586a7de --- /dev/null +++ b/bash-20060316/CWRU/posix-parser/command.h @@ -0,0 +1,179 @@ +/* command.h -- The structures used internally to represent commands, and + the extern declarations of the functions used to create them. */ + +#if !defined (_COMMAND_H) +#define _COMMAND_H + +/* Instructions describing what kind of thing to do for a redirection. */ +enum r_instruction { + r_output_direction, r_input_direction, r_inputa_direction, + r_appending_to, r_reading_until, r_duplicating_input, + r_duplicating_output, r_deblank_reading_until, r_close_this, + r_err_and_out, r_input_output, r_output_force, + r_duplicating_input_word, r_duplicating_output_word +}; + +/* Command Types: */ +enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, + cm_connection, cm_function_def, cm_until, cm_group }; + +/* A structure which represents a word. */ +typedef struct word_desc { + char *word; /* Zero terminated string. */ + int dollar_present; /* Non-zero means dollar sign present. */ + int quoted; /* Non-zero means single, double, or back quote + or backslash is present. */ + int assignment; /* Non-zero means that this word contains an + assignment. */ +} WORD_DESC; + +/* A linked list of words. */ +typedef struct word_list { + struct word_list *next; + WORD_DESC *word; +} WORD_LIST; + + +/* **************************************************************** */ +/* */ +/* Shell Command Structs */ +/* */ +/* **************************************************************** */ + +/* What a redirection descriptor looks like. If FLAGS is IS_DESCRIPTOR, + then we use REDIRECTEE.DEST, else we use the file specified. */ +typedef struct redirect { + struct redirect *next; /* Next element, or NULL. */ + int redirector; /* Descriptor to be redirected. */ + int flags; /* Flag value for `open'. */ + enum r_instruction instruction; /* What to do with the information. */ + union { + int dest; /* Place to redirect REDIRECTOR to, or ... */ + WORD_DESC *filename; /* filename to redirect to. */ + } redirectee; + char *here_doc_eof; /* The word that appeared in <flags. */ +#define CMD_WANT_SUBSHELL 0x01 /* User wants a subshell: ( command ) */ +#define CMD_FORCE_SUBSHELL 0x02 /* Shell needs to force a subshell. */ +#define CMD_INVERT_RETURN 0x04 /* Invert the exit value. */ +#define CMD_IGNORE_RETURN 0x08 /* Ignore the exit value. For set -e. */ +#define CMD_NO_FUNCTIONS 0x10 /* Ignore functions during command lookup. */ +#define CMD_INHIBIT_EXPANSION 0x20 /* Do not expand the command words. */ + +/* What a command looks like. */ +typedef struct command { + enum command_type type; /* FOR CASE WHILE IF CONNECTION or SIMPLE. */ + int flags; /* Flags controlling execution environment. */ + REDIRECT *redirects; /* Special redirects for FOR CASE, etc. */ + union { + struct for_com *For; + struct case_com *Case; + struct while_com *While; + struct if_com *If; + struct connection *Connection; + struct simple_com *Simple; + struct function_def *Function_def; + struct group_com *Group; + } value; +} COMMAND; + +/* Structure used to represent the CONNECTION type. */ +typedef struct connection { + int ignore; /* Unused; simplifies make_command (). */ + COMMAND *first; /* Pointer to the first command. */ + COMMAND *second; /* Pointer to the second command. */ + int connector; /* What separates this command from others. */ +} CONNECTION; + +/* Structures used to represent the CASE command. */ + +/* Pattern/action structure for CASE_COM. */ +typedef struct pattern_list { + struct pattern_list *next; /* Clause to try in case this one failed. */ + WORD_LIST *patterns; /* Linked list of patterns to test. */ + COMMAND *action; /* Thing to execute if a pattern matches. */ +} PATTERN_LIST; + +/* The CASE command. */ +typedef struct case_com { + int flags; /* See description of CMD flags. */ + WORD_DESC *word; /* The thing to test. */ + PATTERN_LIST *clauses; /* The clauses to test against, or NULL. */ +} CASE_COM; + +/* FOR command. */ +typedef struct for_com { + int flags; /* See description of CMD flags. */ + WORD_DESC *name; /* The variable name to get mapped over. */ + WORD_LIST *map_list; /* The things to map over. This is never NULL. */ + COMMAND *action; /* The action to execute. + During execution, NAME is bound to successive + members of MAP_LIST. */ +} FOR_COM; + +/* IF command. */ +typedef struct if_com { + int flags; /* See description of CMD flags. */ + COMMAND *test; /* Thing to test. */ + COMMAND *true_case; /* What to do if the test returned non-zero. */ + COMMAND *false_case; /* What to do if the test returned zero. */ +} IF_COM; + +/* WHILE command. */ +typedef struct while_com { + int flags; /* See description of CMD flags. */ + COMMAND *test; /* Thing to test. */ + COMMAND *action; /* Thing to do while test is non-zero. */ +} WHILE_COM; + +/* The "simple" command. Just a collection of words and redirects. */ +typedef struct simple_com { + int flags; /* See description of CMD flags. */ + WORD_LIST *words; /* The program name, the arguments, + variable assignments, etc. */ + REDIRECT *redirects; /* Redirections to perform. */ +} SIMPLE_COM; + +/* The "function_def" command. This isn't really a command, but it is + represented as such for now. If the function def appears within + `(' `)' the parser tries to set the SUBSHELL bit of the command. That + means that FUNCTION_DEF has to be run through the executor. Maybe this + command should be defined in a subshell. Who knows or cares. */ +typedef struct function_def { + int ignore; /* See description of CMD flags. */ + WORD_DESC *name; /* The name of the function. */ + COMMAND *command; /* The parsed execution tree. */ +} FUNCTION_DEF; + +/* A command that is `grouped' allows pipes to take effect over + the entire command structure. */ +typedef struct group_com { + int ignore; /* See description of CMD flags. */ + COMMAND *command; +} GROUP_COM; + +/* Forward declarations of functions called by the grammer. */ +extern REDIRECT *make_redirection (); +extern WORD_LIST *make_word_list (); +extern WORD_DESC *make_word (); + +extern COMMAND + *make_for_command (), *make_case_command (), *make_if_command (), + *make_while_command (), *command_connect (), *make_simple_command (), + *make_function_def (), *clean_simple_command (), *make_until_command (), + *make_group_command (); + +extern PATTERN_LIST *make_pattern_list (); +extern COMMAND *global_command, *copy_command (); + +#endif /* _COMMAND_H */ diff --git a/bash-20060316/CWRU/posix-parser/copy.c b/bash-20060316/CWRU/posix-parser/copy.c new file mode 100644 index 000000000..19d49be5a --- /dev/null +++ b/bash-20060316/CWRU/posix-parser/copy.c @@ -0,0 +1,279 @@ +/* copy_command.c -- copy a COMMAND structure. This is needed + primarily for making function definitions, but I'm not sure + that anyone else will need it. */ + +/* Copyright (C) 1987,1991 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 1, or (at your option) + any later version. + + Bash is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with Bash; see the file COPYING. If not, write to the Free + Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#include +#include "shell.h" + +/* Forward declaration. */ +extern COMMAND *copy_command (); + +WORD_DESC * +copy_word (word) + WORD_DESC *word; +{ + WORD_DESC *new_word = (WORD_DESC *)xmalloc (sizeof (WORD_DESC)); + bcopy (word, new_word, sizeof (WORD_DESC)); + new_word->word = savestring (word->word); + return (new_word); +} + +/* Copy the chain of words in LIST. Return a pointer to + the new chain. */ +WORD_LIST * +copy_word_list (list) + WORD_LIST *list; +{ + WORD_LIST *new_list = NULL; + + while (list) + { + WORD_LIST *temp = (WORD_LIST *)xmalloc (sizeof (WORD_LIST)); + temp->next = new_list; + new_list = temp; + new_list->word = copy_word (list->word); + list = list->next; + } + return ((WORD_LIST *)reverse_list (new_list)); +} + +PATTERN_LIST * +copy_case_clause (clause) + PATTERN_LIST *clause; +{ + PATTERN_LIST *new_clause = (PATTERN_LIST *)xmalloc (sizeof (PATTERN_LIST)); + new_clause->patterns = copy_word_list (clause->patterns); + new_clause->action = copy_command (clause->action); + return (new_clause); +} + +PATTERN_LIST * +copy_case_clauses (clauses) + PATTERN_LIST *clauses; +{ + PATTERN_LIST *new_list = (PATTERN_LIST *)NULL; + + while (clauses) + { + PATTERN_LIST *new_clause = copy_case_clause (clauses); + new_clause->next = new_list; + new_list = new_clause; + clauses = clauses->next; + } + return ((PATTERN_LIST *)reverse_list (new_list)); +} + +/* Copy a single redirect. */ +REDIRECT * +copy_redirect (redirect) + REDIRECT *redirect; +{ + REDIRECT *new_redirect = (REDIRECT *)xmalloc (sizeof (REDIRECT)); + bcopy (redirect, new_redirect, (sizeof (REDIRECT))); + switch (redirect->instruction) + { + case r_reading_until: + case r_deblank_reading_until: + new_redirect->here_doc_eof = savestring (redirect->here_doc_eof); + /* There is NO BREAK HERE ON PURPOSE!!!! */ + case r_appending_to: + case r_output_direction: + case r_input_direction: + case r_inputa_direction: + case r_err_and_out: + case r_input_output: + case r_output_force: + case r_duplicating_input_word: + case r_duplicating_output_word: + new_redirect->redirectee.filename = + copy_word (redirect->redirectee.filename); + break; + } + return (new_redirect); +} + +REDIRECT * +copy_redirects (list) + REDIRECT *list; +{ + REDIRECT *new_list = NULL; + + while (list) + { + REDIRECT *temp = copy_redirect (list); + temp->next = new_list; + new_list = temp; + list = list->next; + } + return ((REDIRECT *)reverse_list (new_list)); +} + +FOR_COM * +copy_for_command (com) + FOR_COM *com; +{ + FOR_COM *new_for = (FOR_COM *)xmalloc (sizeof (FOR_COM)); + new_for->flags = com->flags; + new_for->name = copy_word (com->name); + new_for->map_list = copy_word_list (com->map_list); + new_for->action = copy_command (com->action); + return (new_for); +} + +GROUP_COM * +copy_group_command (com) + GROUP_COM *com; +{ + GROUP_COM *new_group = (GROUP_COM *)xmalloc (sizeof (GROUP_COM)); + + new_group->command = copy_command (com->command); + return (new_group); +} + +CASE_COM * +copy_case_command (com) + CASE_COM *com; +{ + CASE_COM *new_case = (CASE_COM *)xmalloc (sizeof (CASE_COM)); + + new_case->flags = com->flags; + new_case->word = copy_word (com->word); + new_case->clauses = copy_case_clauses (com->clauses); + return (new_case); +} + +WHILE_COM * +copy_while_command (com) + WHILE_COM *com; +{ + WHILE_COM *new_while = (WHILE_COM *)xmalloc (sizeof (WHILE_COM)); + + new_while->flags = com->flags; + new_while->test = copy_command (com->test); + new_while->action = copy_command (com->action); + return (new_while); +} + +IF_COM * +copy_if_command (com) + IF_COM *com; +{ + IF_COM *new_if = (IF_COM *)xmalloc (sizeof (IF_COM)); + + new_if->flags = com->flags; + new_if->test = copy_command (com->test); + new_if->true_case = copy_command (com->true_case); + new_if->false_case = copy_command (com->false_case); + return (new_if); +} + +SIMPLE_COM * +copy_simple_command (com) + SIMPLE_COM *com; +{ + SIMPLE_COM *new_simple = (SIMPLE_COM *)xmalloc (sizeof (SIMPLE_COM)); + + new_simple->flags = com->flags; + new_simple->words = copy_word_list (com->words); + new_simple->redirects = copy_redirects (com->redirects); + return (new_simple); +} + +FUNCTION_DEF * +copy_function_def (com) + FUNCTION_DEF *com; +{ + FUNCTION_DEF *new_def = (FUNCTION_DEF *)xmalloc (sizeof (FUNCTION_DEF)); + + new_def->name = copy_word (com->name); + new_def->command = copy_command (com->command); + return (new_def); +} + +/* Copy the command structure in COMMAND. Return a pointer to the + copy. Don't you forget to dispose_command () on this pointer + later! */ +COMMAND * +copy_command (command) + COMMAND *command; +{ + COMMAND *new_command = (COMMAND *)NULL; + + if (command) + { + new_command = (COMMAND *)xmalloc (sizeof (COMMAND)); + bcopy (command, new_command, sizeof (COMMAND)); + new_command->flags = command->flags; + + if (command->redirects) + new_command->redirects = copy_redirects (command->redirects); + + switch (command->type) + { + case cm_for: + new_command->value.For = copy_for_command (command->value.For); + break; + + case cm_group: + new_command->value.Group = copy_group_command (command->value.Group); + break; + + case cm_case: + new_command->value.Case = copy_case_command (command->value.Case); + break; + + case cm_until: + case cm_while: + new_command->value.While = copy_while_command (command->value.While); + break; + + case cm_if: + new_command->value.If = copy_if_command (command->value.If); + break; + + case cm_simple: + new_command->value.Simple = copy_simple_command (command->value.Simple); + break; + + case cm_connection: + { + CONNECTION *new_connection; + + new_connection = (CONNECTION *)xmalloc (sizeof (CONNECTION)); + new_connection->connector = command->value.Connection->connector; + new_connection->first = + copy_command (command->value.Connection->first); + new_connection->second = + copy_command (command->value.Connection->second); + new_command->value.Connection = new_connection; + break; + } + + /* Pathological case. I'm not even sure that you can have a + function definition as part of a function definition. */ + case cm_function_def: + new_command->value.Function_def = + copy_function_def (command->value.Function_def); + break; + } + } + return (new_command); +} diff --git a/bash-20060316/CWRU/posix-parser/endian.h b/bash-20060316/CWRU/posix-parser/endian.h new file mode 100644 index 000000000..ebbf6d6e7 --- /dev/null +++ b/bash-20060316/CWRU/posix-parser/endian.h @@ -0,0 +1,9 @@ +/* endian.h - Define BIG or LITTLE endian. */ + +/* This file was automatically created by `endian.aux'. You shouldn't + edit this file, because your changes will be overwritten. Instead, + edit the source code file `endian.c'. */ + +#if !defined (BIG_ENDIAN) +# define BIG_ENDIAN +#endif /* BIG_ENDIAN */ diff --git a/bash-20060316/CWRU/posix-parser/main.c b/bash-20060316/CWRU/posix-parser/main.c new file mode 100644 index 000000000..217539189 --- /dev/null +++ b/bash-20060316/CWRU/posix-parser/main.c @@ -0,0 +1,97 @@ +#include +#include "shell.h" + +COMMAND *global_command; +int last_command_exit_value; +int interrupt_state; +int interactive = 1; +int eof_encountered = 0; +int exit_immediately_on_error = 1; + +char *the_current_maintainer = "chet"; + +char *shell_name = "posix"; + +void +throw_to_top_level() +{ +} + +char * +base_pathname(s) +char *s; +{ + return s; +} + +char * +strerror(s) +int s; +{ + return ("error"); +} + +parse_command () +{ + extern int need_here_doc, current_command_line_count; + extern REDIRECT *redirection_needing_here_doc; + int r; + + need_here_doc = 0; + redirection_needing_here_doc = (REDIRECT *)NULL; + + current_command_line_count = 0; + r = yyparse (); + + if (need_here_doc) + make_here_document (redirection_needing_here_doc); + need_here_doc = 0; + + return (r); +} + +main(argc, argv) +int argc; +char **argv; +{ + with_input_from_stdin(); + + if (parse_command () == 0) { + printf ("legal command in the Posix shell\n"); + exit (0); + } else { + printf ("illegal\n"); + exit (1); + } +} + +char * +string_quote_removal (s) +{ + return (savestring (s)); +} + +assignment (string) + char *string; +{ + register int c, index = 0; + + c = string[index]; + + if (!isletter (c) && c != '_') + return (0); + + while (c = string[index]) + { + /* The following is safe. Note that '=' at the start of a word + is not an assignment statement. */ + if (c == '=') + return (index); + + if (!isletter (c) && !digit (c) && c != '_') + return (0); + + index++; + } + return (0); +} diff --git a/bash-20060316/CWRU/posix-parser/make.c b/bash-20060316/CWRU/posix-parser/make.c new file mode 100644 index 000000000..cc49b186f --- /dev/null +++ b/bash-20060316/CWRU/posix-parser/make.c @@ -0,0 +1,596 @@ +/* make_cmd.c -- + Functions for making instances of the various parser constructs. */ + +/* Copyright (C) 1989 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 1, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#include +#include +#include +#include "config.h" +#include "general.h" +#include "error.h" +#include "command.h" +#include "flags.h" +#include "filecntl.h" + +#if defined (JOB_CONTROL) +#include "jobs.h" +#endif + +extern GENERIC_LIST *reverse_list (); + +WORD_DESC * +make_word (string) + char *string; +{ + WORD_DESC *temp; + + temp = (WORD_DESC *)xmalloc (sizeof (WORD_DESC)); + temp->word = savestring (string); + temp->quoted = temp->dollar_present = temp->assignment = 0; + + while (*string) + { + if (*string == '$') temp->dollar_present = 1; + + if (member (*string, "'`\\\"")) + { + temp->quoted = 1; + if (*string == '\\') + string++; + } + + if (*string) + (string++); + } + return (temp); +} + +WORD_DESC * +make_word_from_token (token) + int token; +{ + char tokenizer[2]; + + tokenizer[0] = token; + tokenizer[1] = '\0'; + + return (make_word (tokenizer)); +} + +WORD_LIST * +make_word_list (word, link) + WORD_DESC *word; + WORD_LIST *link; +{ + WORD_LIST *temp; + + temp = (WORD_LIST *)xmalloc (sizeof (WORD_LIST)); + temp->word = word; + temp->next = link; + return (temp); +} + +WORD_LIST * +add_string_to_list (string, list) + char *string; + WORD_LIST *list; +{ + WORD_LIST *temp = (WORD_LIST *)xmalloc (sizeof (WORD_LIST)); + temp->word = make_word (string); + temp->next = list; + return (temp); +} + +WORD_DESC * +coerce_to_word (number) + int number; +{ + char string[24]; + + sprintf (string, "%d", number); + return (make_word (string)); +} + +COMMAND * +make_command (type, pointer) + enum command_type type; + SIMPLE_COM *pointer; +{ + COMMAND *temp; + + temp = (COMMAND *)xmalloc (sizeof (COMMAND)); + temp->type = type; + temp->value.Simple = pointer; + temp->value.Simple->flags = 0; + temp->flags = 0; + temp->redirects = (REDIRECT *)NULL; + return (temp); +} + +COMMAND * +command_connect (com1, com2, connector) + COMMAND *com1, *com2; + int connector; +{ + CONNECTION *temp; + + temp = (CONNECTION *)xmalloc (sizeof (CONNECTION)); + temp->connector = connector; + temp->first = com1; + temp->second = com2; + return (make_command (cm_connection, (SIMPLE_COM *)temp)); +} + +COMMAND * +make_for_command (name, map_list, action) + WORD_DESC *name; + WORD_LIST *map_list; + COMMAND *action; +{ + FOR_COM *temp = (FOR_COM *)xmalloc (sizeof (FOR_COM)); + + temp->flags = 0; + temp->name = name; + temp->map_list = map_list; + temp->action = action; + return (make_command (cm_for, (SIMPLE_COM *)temp)); +} + +COMMAND * +make_group_command (command) + COMMAND *command; +{ + GROUP_COM *temp = (GROUP_COM *)xmalloc (sizeof (GROUP_COM)); + + temp->command = command; + return (make_command (cm_group, (SIMPLE_COM *)temp)); +} + +COMMAND * +make_case_command (word, clauses) + WORD_DESC *word; + PATTERN_LIST *clauses; +{ + CASE_COM *temp; + + temp = (CASE_COM *)xmalloc (sizeof (CASE_COM)); + temp->flags = 0; + temp->word = word; + temp->clauses = (PATTERN_LIST *)reverse_list (clauses); + return (make_command (cm_case, (SIMPLE_COM *)temp)); +} + +PATTERN_LIST * +make_pattern_list (patterns, action) + WORD_LIST *patterns; + COMMAND *action; +{ + PATTERN_LIST *temp; + + temp = (PATTERN_LIST *)xmalloc (sizeof (PATTERN_LIST)); + temp->patterns = patterns; + temp->action = action; + temp->next = NULL; + return (temp); +} + +COMMAND * +make_if_command (test, true_case, false_case) + COMMAND *test, *true_case, *false_case; +{ + IF_COM *temp; + + temp = (IF_COM *)xmalloc (sizeof (IF_COM)); + temp->flags = 0; + temp->test = test; + temp->true_case = true_case; + temp->false_case = false_case; + return (make_command (cm_if, (SIMPLE_COM *)temp)); +} + +COMMAND * +make_until_or_while (test, action, which) + COMMAND *test, *action; + enum command_type which; +{ + WHILE_COM *temp; + + temp = (WHILE_COM *)xmalloc (sizeof (WHILE_COM)); + temp->flags = 0; + temp->test = test; + temp->action = action; + return (make_command (which, (SIMPLE_COM *)temp)); +} + +COMMAND * +make_while_command (test, action) + COMMAND *test, *action; +{ + return (make_until_or_while (test, action, cm_while)); +} + +COMMAND * +make_until_command (test, action) + COMMAND *test, *action; +{ + return (make_until_or_while (test, action, cm_until)); +} + +COMMAND * +make_bare_simple_command () +{ + COMMAND *command; + SIMPLE_COM *temp = (SIMPLE_COM *)xmalloc (sizeof (SIMPLE_COM)); + + temp->flags = 0; + temp->words = (WORD_LIST *)NULL; + temp->redirects = (REDIRECT *)NULL; + command = (COMMAND *)xmalloc (sizeof (COMMAND)); + command->type = cm_simple; + command->redirects = (REDIRECT *)NULL; + command->flags = 0; + command->value.Simple = temp; + return (command); +} + +COMMAND * +new_make_simple_command (word, prefix, suffix) + WORD_DESC *word; + ELEMENT *prefix; + ELEMENT *suffix; +{ + /* Make a list of words and redirects from WORD, PREFIX, and SUFFIX. */ + WORD_LIST *w = (WORD_LIST *)NULL; + REDIRECT *r = (REDIRECT *)NULL; + COMMAND *ret; + SIMPLE_COM *sc; + register ELEMENT *te; + + ret = make_bare_simple_command (); + sc = ret->value.Simple; + + te = prefix; + while (te) + { + ELEMENT *t2; + if (te->redirect) + { + te->redirect->next = r; + r->next = te->redirect; + } + else if (te->word) + { + WORD_LIST *twl = make_word_list (te->word, (WORD_LIST *)NULL); + twl->next = w; + w = twl; + } + t2 = te; + te = te->next; + free (t2); + } + + if (word) + { + WORD_LIST *twl = make_word_list (word, (WORD_LIST *)NULL); + twl->next = w; + w = twl; + } + + te = suffix; + while (te) + { + ELEMENT *t2; + if (te->redirect) + { + te->redirect->next = r; + r->next = te->redirect; + } + else if (te->word) + { + WORD_LIST *twl = make_word_list (te->word, (WORD_LIST *)NULL); + twl->next = w; + w = twl; + } + t2 = te; + te = te->next; + free (t2); + } + + sc->words = (WORD_LIST *)reverse_list (w); + sc->redirects = (REDIRECT *)reverse_list (r); + sc->flags = 0; + + return (ret); +} + +/* Return a command which is the connection of the word or redirection + in ELEMENT, and the command * or NULL in COMMAND. */ +COMMAND * +make_simple_command (element, command) + ELEMENT element; + COMMAND *command; +{ + /* If we are starting from scratch, then make the initial command + structure. Also note that we have to fill in all the slots, since + malloc doesn't return zeroed space. */ + if (!command) + command = make_bare_simple_command (); + + if (element.word) + { + WORD_LIST *tw = (WORD_LIST *)xmalloc (sizeof (WORD_LIST)); + tw->word = element.word; + tw->next = command->value.Simple->words; + command->value.Simple->words = tw; + } + else + { + REDIRECT *r = element.redirect; + /* Due to the way <> is implemented, there may be more than a single + redirection in element.redirect. We just follow the chain as far + as it goes, and hook onto the end. */ + while (r->next) + r = r->next; + r->next = command->value.Simple->redirects; + command->value.Simple->redirects = element.redirect; + } + return (command); +} + +#define POSIX_HERE_DOCUMENTS +make_here_document (temp) + REDIRECT *temp; +{ + int kill_leading = 0; + + switch (temp->instruction) + { + /* Because we are Bourne compatible, we read the input for this + << or <<- redirection now, from wherever input is coming from. + We store the input read into a WORD_DESC. Replace the text of + the redirectee.word with the new input text. If <<- is on, + then remove leading TABS from each line. */ + + case r_deblank_reading_until: /* <<-foo */ + kill_leading++; + /* ... */ + case r_reading_until: /* <redirectee.filename); + + disallow_filename_globbing = old_value; + } +#else /* POSIX_HERE_DOCUMENTS */ + /* Quote removal is the only expansion performed on the delimiter + for here documents, making it an extremely special case. I + still feel ill. */ + redirectee_word = + string_quote_removal (temp->redirectee.filename->word, 0); +#endif /* POSIX_HERE_DOCUMENTS */ + + /* redirection_expand will return NULL if the expansion results in + multiple words or no words. Check for that here, and just abort + this here document if it does. */ + if (redirectee_word) + len = strlen (redirectee_word); + else + { + temp->here_doc_eof = savestring (""); + goto document_done; + } + + free (temp->redirectee.filename->word); + temp->here_doc_eof = redirectee_word; + + /* Read lines from wherever lines are coming from. + For each line read, if kill_leading, then kill the + leading tab characters. + If the line matches redirectee_word exactly, then we have + manufactured the document. Otherwise, add the line to the + list of lines in the document. */ + { + extern char *read_secondary_line (); + char *line; + int l; + + while (line = read_secondary_line ()) + { + if (!line) + goto document_done; + + if (kill_leading) + { + register int i; + + /* Hack: To be compatible with some Bourne shells, we + check the word before stripping the whitespace. This + is a hack, though. */ + if ((strncmp (line, redirectee_word, len) == 0) && + line[len] == '\n') + goto document_done; + + for (i = 0; line[i] == '\t'; i++) + ; + + if (i) + strcpy (&line[0], &line[i]); + } + + if ((strncmp (line, redirectee_word, len) == 0) && + line[len] == '\n') + goto document_done; + + l = strlen (line); + if (l + document_index >= document_size) + { + document = (char *) + xrealloc (document, (document_size += (10 * l))); + } + + if (l != 0) + { + strcpy (&document[document_index], line); + free (line); + document_index += l; + } + } + document_done: + if (!document) + document = savestring (""); + temp->redirectee.filename->word = document; + } + } + } +} + +/* Generate a REDIRECT from SOURCE, DEST, and INSTRUCTION. + INSTRUCTION is the instruction type, SOURCE is an INT, + and DEST is an INT or a WORD_DESC *. */ +REDIRECT * +make_redirection (source, instruction, dest) + enum r_instruction instruction; +{ + REDIRECT *temp = (REDIRECT *)xmalloc (sizeof (REDIRECT)); + + /* First do the common cases. */ + temp->redirector = source; + temp->redirectee.dest = dest; + temp->instruction = instruction; + temp->next = (REDIRECT *)NULL; + + switch (instruction) + { + + case r_output_direction: /* >foo */ + case r_output_force: /* >| foo */ + temp->flags = O_TRUNC | O_WRONLY | O_CREAT; + break; + + case r_input_direction: /* flags = O_RDONLY; + break; + + case r_appending_to: /* >>foo */ + temp->flags = O_APPEND | O_WRONLY | O_CREAT; + break; + + case r_deblank_reading_until: /* <<-foo */ + case r_reading_until: /* << foo */ + break; + + case r_duplicating_input: /* 1<&2 */ + case r_duplicating_output: /* 1>&2 */ + case r_close_this: /* <&- */ + case r_duplicating_input_word: /* 1<&$foo */ + case r_duplicating_output_word: /* 1>&$foo */ + break; + + case r_err_and_out: /* command &>filename */ + temp->flags = O_TRUNC | O_WRONLY | O_CREAT; + break; + + case r_input_output: + temp->flags = O_RDWR; + break; + + default: + programming_error ("Redirection instruction from yyparse () '%d' is\n\ +out of range in make_redirection ().", instruction); + abort (); + break; + } + return (temp); +} + +COMMAND * +make_function_def (name, command) + WORD_DESC *name; + COMMAND *command; +{ + FUNCTION_DEF *temp; + + temp = (FUNCTION_DEF *)xmalloc (sizeof (FUNCTION_DEF)); + temp->command = command; + temp->name = name; + return (make_command (cm_function_def, (SIMPLE_COM *)temp)); +} + +/* Reverse the word list and redirection list in the simple command + has just been parsed. It seems simpler to do this here the one + time then by any other method that I can think of. */ +COMMAND * +clean_simple_command (command) + COMMAND *command; +{ + extern GENERIC_LIST *reverse_list (); + + if (command->type != cm_simple) + { + programming_error + ("clean_simple_command () got a command with type %d.", command->type); + } + else + { + command->value.Simple->words = + (WORD_LIST *)reverse_list (command->value.Simple->words); + command->value.Simple->redirects = + (REDIRECT *)reverse_list (command->value.Simple->redirects); + } + + return (command); +} + +/* Cons up a new array of words. The words are taken from LIST, + which is a WORD_LIST *. Absolutely everything is malloc'ed, + so you should free everything in this array when you are done. + The array is NULL terminated. */ +char ** +make_word_array (list) + WORD_LIST *list; +{ + int count = list_length (list); + char **array = (char **)xmalloc ((1 + count) * sizeof (char *)); + + for (count = 0; list; count++) + { + array[count] = (char *)xmalloc (1 + strlen (list->word->word)); + strcpy (array[count], list->word->word); + list = list->next; + } + array[count] = (char *)NULL; + return (array); +} diff --git a/bash-20060316/CWRU/posix-parser/parse.y b/bash-20060316/CWRU/posix-parser/parse.y new file mode 100644 index 000000000..df7faba2a --- /dev/null +++ b/bash-20060316/CWRU/posix-parser/parse.y @@ -0,0 +1,1932 @@ +/* Yacc grammar for bash. */ + +/* Copyright (C) 1989 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 1, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file LICENSE. If not, write to the Free Software + Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + +%{ +#include +#include +#include +#include +#include "shell.h" +#include "flags.h" + +#define YYDEBUG 1 +extern int eof_encountered; +extern int no_line_editing; +extern int interactive, interactive_shell; + +extern COMMAND *new_make_simple_command (); + +extern char *index (); +/* **************************************************************** */ +/* */ +/* "Forward" declarations */ +/* */ +/* **************************************************************** */ + +/* This is kind of sickening. In order to let these variables be seen by + all the functions that need them, I am forced to place their declarations + far away from the place where they should logically be found. */ + +static int reserved_word_acceptable (); + +/* PROMPT_STRING_POINTER points to one of these, never to an actual string. */ +char *ps1_prompt, *ps2_prompt; + +/* Handle on the current prompt string. Indirectly points through + ps1_ or ps2_prompt. */ +char **prompt_string_pointer = (char **)NULL; +char *current_prompt_string; + +/* The number of lines read from input while creating the current command. */ +int current_command_line_count = 0; + +/* Variables to manage the task of reading here documents, because we need to + defer the reading until after a complete command has been collected. */ +REDIRECT *redirection_needing_here_doc = (REDIRECT *)NULL; +int need_here_doc = 0; +%} + +%union { + WORD_DESC *word; /* the word that we read. */ + int number; /* the number that we read. */ + WORD_LIST *word_list; + COMMAND *command; + REDIRECT *redirect; + ELEMENT *element; + PATTERN_LIST *pattern; + int separator_token; +} + +/* Reserved words. Members of the first group are only recognized + in the case that they are preceded by a list_terminator. Members + of the second group are recognized only under special circumstances. */ +%token IF THEN ELSE ELIF FI CASE ESAC FOR WHILE UNTIL DO DONE FUNCTION +%token IN BANG + +/* More general tokens. yylex () knows how to make these. */ +%token WORD ASSIGNMENT_WORD NAME +%token NUMBER +%token AND_AND OR_OR GREATER_GREATER LESS_LESS LESS_AND +%token GREATER_AND SEMI_SEMI LESS_LESS_MINUS AND_GREATER LESS_GREATER +%token GREATER_BAR NEWLINE + +/* The types that the various syntactical units return. */ + +%type complete_command +%type list and_or pipeline pipe_sequence tcommand compound_command +%type simple_command subshell compound_list term +%type function_definition brace_group +%type for_clause case_clause while_clause if_clause until_clause +%type do_group else_part +%type redirect_list redirect +%type wordlist pattern +%type separator separator_op linebreak newline_list +%type sequential_sep +%type case_list case_item +%type cmd_prefix cmd_suffix +%type cmd_name cmd_word + +%start inputunit + +%left yacc_EOF +%% + +inputunit: complete_command NEWLINE + { + TRACE("reduced complete_command NEWLINE to inputunit"); + global_command = $1; + YYACCEPT; + } + | NEWLINE + { + TRACE("reduced NEWLINE to inputunit"); + global_command = (COMMAND *)NULL; + YYACCEPT; + } + ; + +complete_command + : list separator + { + TRACE("reduced 'list separator' to complete_command"); + /* Case of regular command. Discard the error + safety net,and return the command just parsed. */ + $$ = $1; + } + | list + { + TRACE("reduced list to complete_command"); + /* Case of regular command. Discard the error + safety net,and return the command just parsed. */ + $$ = $1; + } + | error + { + /* Error during parsing. Return NULL command. */ + global_command = (COMMAND *)NULL; + eof_encountered = 0; + discard_parser_constructs (1); + if (interactive) + { + YYACCEPT; + } + else + { + YYABORT; + } + } + | yacc_EOF + { + /* Case of EOF seen by itself. Do ignoreeof or + not. */ + global_command = (COMMAND *)NULL; + handle_eof_input_unit (); + YYACCEPT; + } + ; + +list : list separator_op and_or + { + $$ = command_connect ($1, $3, $2); + if (need_here_doc) + make_here_document (redirection_needing_here_doc); + need_here_doc = 0; + } + | and_or + { + $$ = $1; + if (need_here_doc) + make_here_document (redirection_needing_here_doc); + need_here_doc = 0; + TRACE("reduced and_or to list"); + } + ; + +and_or : pipeline + { + TRACE("reduced pipeline to and_or"); + $$ = $1; + } + | and_or AND_AND linebreak pipeline + { $$ = command_connect ($1, $4, AND_AND); } + | and_or OR_OR linebreak pipeline + { $$ = command_connect ($1, $4, OR_OR); } + ; + +pipeline: pipe_sequence + { + TRACE("reduced pipe_sequence to pipeline"); + $$ = $1; + } + | BANG pipe_sequence + { + $2->flags |= CMD_INVERT_RETURN; + $$ = $2; + } + ; + +pipe_sequence: tcommand + { + TRACE("reduced tcommand to pipe_sequence"); + $$ = $1; + } + | pipe_sequence '|' linebreak tcommand + { $$ = command_connect ($1, $4, '|'); } + ; + +tcommand: simple_command + { + TRACE("reduced simple_command to tcommand"); + $$ = clean_simple_command ($1); + } + | compound_command + { $$ = $1; } + | compound_command redirect_list + { + $1->redirects = $2; + $$ = $1; + } + | function_definition + { $$ = $1; } + ; + +compound_command + : brace_group + { $$ = $1; } + | subshell + { $$ = $1; } + | for_clause + { + TRACE("reduced FOR_CLAUSE to COMPOUND_COMMAND"); + $$ = $1; + } + | case_clause + { $$ = $1; } + | if_clause + { + TRACE("reduced IF_CLAUSE to COMPOUND_COMMAND"); + $$ = $1; + } + | while_clause + { + TRACE("reduced WHILE_CLAUSE to COMPOUND_COMMAND"); + $$ = $1; + } + | until_clause + { $$ = $1; } + ; + +subshell: '(' list ')' + { $2->flags |= CMD_WANT_SUBSHELL; $$ = $2; } + ; + + +compound_list + : term + { $$ = $1; } + | newline_list term + { $$ = $2; } + | term separator + { $$ = command_connect ($1, 0, $2); } + | newline_list term separator + { $$ = command_connect ($2, 0, $3); } + ; + +term : term separator and_or + { $$ = command_connect ($1, $3, $2); } + | and_or + { $$ = $1; } + ; + +for_clause + : FOR WORD do_group + { $$ = make_for_command ($2, (WORD_LIST *)add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $3); } + | FOR WORD newline_list IN wordlist sequential_sep do_group + { $$ = make_for_command ($2, (WORD_LIST *)reverse_list ($5), $7); } + | FOR WORD IN wordlist sequential_sep do_group + { + TRACE("reduced FOR_CLAUSE"); + $$ = make_for_command ($2, (WORD_LIST *)reverse_list ($4), $6); + } + ; + +wordlist: wordlist WORD + { $$ = make_word_list ($2, $1); } + | WORD + { $$ = make_word_list ($1, (WORD_LIST *)NULL); } + ; + +case_clause + : CASE WORD IN linebreak case_list ESAC + { $$ = make_case_command ($2, $5); } + | CASE WORD IN linebreak ESAC + { $$ = make_case_command ($2, (PATTERN_LIST *)NULL); } + ; + +case_list + : case_list case_item + { $2->next = $1; $$ = $2; } + | case_item + { $$ = $1; } + ; + +case_item + : pattern ')' linebreak SEMI_SEMI linebreak + { $$ = make_pattern_list ($1, (COMMAND *)NULL); } + | pattern ')' compound_list SEMI_SEMI linebreak + { $$ = make_pattern_list ($1, $3); } + | '(' pattern ')' compound_list SEMI_SEMI linebreak + { $$ = make_pattern_list ($2, $4); } + | '(' pattern ')' linebreak SEMI_SEMI linebreak + { $$ = make_pattern_list ($2, (COMMAND *)NULL); } + ; + +pattern: WORD + { $$ = make_word_list ($1, (WORD_LIST *)NULL); } + | pattern '|' WORD + { $$ = make_word_list ($3, $1); } + ; + +if_clause: IF compound_list THEN compound_list else_part FI + { $$ = make_if_command ($2, $4, $5); } + | IF compound_list THEN compound_list FI + { $$ = make_if_command ($2, $4, (COMMAND *)NULL); } + ; + +else_part: ELIF compound_list THEN else_part + { $$ = make_if_command ($2, $4, (COMMAND *)NULL); } + | ELSE compound_list + { $$ = $2; } + ; + +while_clause: WHILE compound_list do_group + { + TRACE("reduced WHILE_CLAUSE"); + $$ = make_while_command ($2, $3); + } + ; + +until_clause: UNTIL compound_list do_group + { $$ = make_until_command ($2, $3); } + ; + +function_definition + : WORD '(' ')' linebreak brace_group + { $$ = make_function_def ($1, $5); } + ; + +brace_group: '{' compound_list '}' + { $$ = make_group_command ($2); } + ; + + +do_group: DO compound_list DONE + { + TRACE("reduced DO_GROUP"); + $$ = $2; + } + ; + +cmd_prefix: ASSIGNMENT_WORD + { + struct element *temp_element; + temp_element = (ELEMENT *)xmalloc (sizeof (ELEMENT)); + temp_element->word = $1; + temp_element->redirect = (REDIRECT *)NULL; + temp_element->next = (struct element *)NULL; + TRACE("reduced cmd_prefix to ASSIGNMENT_WORD"); + $$ = temp_element; + } + | cmd_prefix ASSIGNMENT_WORD + { + struct element *temp_element; + temp_element = (ELEMENT *)xmalloc (sizeof (ELEMENT)); + temp_element->word = $2; + temp_element->redirect = (REDIRECT *)NULL; + temp_element->next = (struct element *)NULL; + $1->next = temp_element; + TRACE("reduced cmd_prefix to cmd_prefix ASSIGNMENT_WORD"); + $$ = $1; + } + | redirect + { + struct element *temp_element; + temp_element = (ELEMENT *)xmalloc (sizeof (ELEMENT)); + temp_element->word = (WORD_DESC *)NULL; + temp_element->redirect = $1; + temp_element->next = (struct element *)NULL; + TRACE("reduced cmd_prefix to redirect"); + $$ = temp_element; + } + | cmd_prefix redirect + { + struct element *temp_element; + temp_element = (ELEMENT *)xmalloc (sizeof (ELEMENT)); + temp_element->word = (WORD_DESC *)NULL; + temp_element->redirect = $2; + temp_element->next = (struct element *)NULL; + $1->next = temp_element; + TRACE("reduced cmd_prefix to cmd_prefix redirect"); + $$ = $1; + } + ; + +cmd_name: WORD + { + TRACE ("reduced WORD to cmd_name"); + $$ = $1; + } + ; + +cmd_word: WORD + { + TRACE ("reduced WORD to cmd_word"); + $$ = $1; + } + ; + +cmd_suffix: WORD + { + struct element *temp_element; + temp_element = (ELEMENT *)xmalloc (sizeof (ELEMENT)); + temp_element->word = $1; + temp_element->redirect = (REDIRECT *)NULL; + temp_element->next = (struct element *)NULL; + TRACE("reduced cmd_suffix to WORD"); + $$ = temp_element; + } + | cmd_suffix WORD + { + struct element *temp_element; + temp_element = (ELEMENT *)xmalloc (sizeof (ELEMENT)); + temp_element->word = $2; + temp_element->redirect = (REDIRECT *)NULL; + temp_element->next = (struct element *)NULL; + TRACE("reduced cmd_suffix to cmd_suffix WORD"); + $1->next = temp_element; + $$ = $1; + } + | redirect + { + struct element *temp_element; + temp_element = (ELEMENT *)xmalloc (sizeof (ELEMENT)); + temp_element->word = (WORD_DESC *)NULL; + temp_element->redirect = $1; + temp_element->next = (struct element *)NULL; + TRACE("reduced cmd_sufffix to redirect"); + $$ = temp_element; + } + | cmd_suffix redirect + { + struct element *temp_element; + temp_element = (ELEMENT *)xmalloc (sizeof (ELEMENT)); + temp_element->word = (WORD_DESC *)NULL; + temp_element->redirect = $2; + temp_element->next = (struct element *)NULL; + $1->next = temp_element; + TRACE("reduced cmd_suffix to cmd_suffix redirect"); + $$ = $1; + } + ; + +simple_command: cmd_prefix cmd_word cmd_suffix + { $$ = new_make_simple_command ($2, $1, $3); } + | cmd_prefix cmd_word + { $$ = new_make_simple_command ($2, $1, (ELEMENT *)NULL); } + | cmd_prefix + { $$ = new_make_simple_command ((WORD_DESC *)NULL, $1, (ELEMENT *)NULL); } + | cmd_name cmd_suffix + { $$ = new_make_simple_command ($1, (ELEMENT *)NULL, $2); } + | cmd_name + { + TRACE("reduced cmd_name to simple_command"); + $$ = new_make_simple_command ($1, (ELEMENT *)NULL, (ELEMENT *)NULL); + } + ; + +redirect_list: redirect + { + $$ = $1; + } + | redirect_list redirect + { + register REDIRECT *t = $1; + + while (t->next) + t = t->next; + t->next = $2; + $$ = $1; + } + ; + +redirect: '>' WORD + { $$ = make_redirection ( 1, r_output_direction, $2); } + | '<' WORD + { $$ = make_redirection ( 0, r_input_direction, $2); } + | NUMBER '>' WORD + { $$ = make_redirection ($1, r_output_direction, $3); } + | NUMBER '<' WORD + { $$ = make_redirection ($1, r_input_direction, $3); } + | GREATER_GREATER WORD + { $$ = make_redirection ( 1, r_appending_to, $2); } + | NUMBER GREATER_GREATER WORD + { $$ = make_redirection ($1, r_appending_to, $3); } + + | LESS_AND NUMBER + { $$ = make_redirection ( 0, r_duplicating_input, $2); } + | NUMBER LESS_AND NUMBER + { $$ = make_redirection ($1, r_duplicating_input, $3); } + | GREATER_AND NUMBER + { $$ = make_redirection ( 1, r_duplicating_output, $2); } + | NUMBER GREATER_AND NUMBER + { $$ = make_redirection ($1, r_duplicating_output, $3); } + | LESS_AND WORD + { $$ = make_redirection ( 0, r_duplicating_input_word, $2); } + | NUMBER LESS_AND WORD + { $$ = make_redirection ($1, r_duplicating_input_word, $3); } + | GREATER_AND WORD + { $$ = make_redirection ( 1, r_duplicating_output_word, $2); } + | NUMBER GREATER_AND WORD + { $$ = make_redirection ($1, r_duplicating_output_word, $3); } + | GREATER_AND '-' + { $$ = make_redirection ( 1, r_close_this, 0); } + | NUMBER GREATER_AND '-' + { $$ = make_redirection ($1, r_close_this, 0); } + | LESS_AND '-' + { $$ = make_redirection ( 0, r_close_this, 0); } + | NUMBER LESS_AND '-' + { $$ = make_redirection ($1, r_close_this, 0); } + | AND_GREATER WORD + { $$ = make_redirection ( 1, r_err_and_out, $2); } + | NUMBER LESS_GREATER WORD + { $$ = make_redirection ( $1, r_input_output, $3); } + | LESS_GREATER WORD + { + REDIRECT *t1, *t2; + extern WORD_DESC *copy_word (); + + t1 = make_redirection ( 0, r_input_direction, $2); + t2 = make_redirection ( 1, r_output_direction, copy_word ($2)); + t1->next = t2; + $$ = t1; + } + | GREATER_BAR WORD + { $$ = make_redirection ( 1, r_output_force, $2); } + | NUMBER GREATER_BAR WORD + { $$ = make_redirection ( $1, r_output_force, $3); } + | LESS_LESS WORD + { + $$ = make_redirection ( 0, r_reading_until, $2); + redirection_needing_here_doc = $$; + need_here_doc = 1; + } + | NUMBER LESS_LESS WORD + { + $$ = make_redirection ($1, r_reading_until, $3); + redirection_needing_here_doc = $$; + need_here_doc = 1; + } + | LESS_LESS_MINUS WORD + { + $$ = make_redirection ( 0, r_deblank_reading_until, $2); + redirection_needing_here_doc = $$; + need_here_doc = 1; + } + | NUMBER LESS_LESS_MINUS WORD + { + $$ = make_redirection ($1, r_deblank_reading_until, $3); + redirection_needing_here_doc = $$; + need_here_doc = 1; + } + ; + +newline_list: NEWLINE + { + TRACE("reduced NEWLINE to newline_list"); + $$ = NEWLINE; /* XXX -- broken */ + } + | newline_list NEWLINE + { + TRACE("reduced newline_list newline to newline_list"); + $$ = NEWLINE; /* XXX -- broken */ + } + ; + +linebreak: newline_list + { + TRACE("reduced newline_list to linebreak"); + $$ = NEWLINE; /* XXX -- broken */ + } + | + { + TRACE("reduced empty to linebreak"); + $$ = NEWLINE; /* XXX -- broken */ + } + ; + +separator_op: '&' + { + TRACE("reducing '&' to separator_op"); + $$ = '&'; /* XXX -- broken */ + } + | ';' + { + TRACE("reducing ';' to separator_op"); + $$ = ';'; /* XXX -- broken */ + } + ; + +separator: separator_op linebreak + { + TRACE("reduced separator_op linebreak to separator"); + $$ = $1; /* XXX -- broken */ + } + | newline_list + { + TRACE("reduced newline_list to separator"); + $$ = ';'; /* XXX -- broken */ + } + ; + +sequential_sep: ';' linebreak + { + TRACE("reduced ';' linebreak to sequential_sep"); + $$ = ';'; /* XXX -- broken */ + } + | newline_list + { + TRACE("reduced newline_list to sequential_sep: ';'"); + $$ = ';'; /* XXX -- broken */ + } + ; + +%% + +/* Initial size to allocate for tokens, and the + amount to grow them by. */ +#define TOKEN_DEFAULT_GROW_SIZE 512 + +/* The token currently being read. */ +int current_token = 0; + +/* The last read token, or NULL. read_token () uses this for context + checking. */ +int last_read_token = 0; + +/* The token read prior to last_read_token. */ +int token_before_that = 0; + +/* Global var is non-zero when end of file has been reached. */ +int EOF_Reached = 0; + +/* yy_getc () returns the next available character from input or EOF. + yy_ungetc (c) makes `c' the next character to read. + init_yy_io (get, unget), makes the function `get' the installed function + for getting the next character, and makes `unget' the installed function + for un-getting a character. */ +return_EOF () /* does nothing good. */ +{ + return (EOF); +} + +/* Variables containing the current get and unget functions. */ + +/* Some stream `types'. */ +#define st_stream 0 +#define st_string 1 + +Function *get_yy_char = return_EOF; +Function *unget_yy_char = return_EOF; +int yy_input_type = st_stream; +FILE *yy_input_dev = (FILE *)NULL; + +/* The current stream name. In the case of a file, this is a filename. */ +char *stream_name = (char *)NULL; + +/* Function to set get_yy_char and unget_yy_char. */ +init_yy_io (get_function, unget_function, type, location) + Function *get_function, *unget_function; + int type; + FILE *location; +{ + get_yy_char = get_function; + unget_yy_char = unget_function; + yy_input_type = type; + yy_input_dev = location; +} + +/* Call this to get the next character of input. */ +yy_getc () +{ + return (*get_yy_char) (); +} + +/* Call this to unget C. That is, to make C the next character + to be read. */ +yy_ungetc (c) +{ + return (*unget_yy_char) (c); +} + +with_input_from_stdin () +{ + with_input_from_stream (stdin, "stdin"); +} + +/* **************************************************************** */ +/* */ +/* Let input come from STRING. STRING is zero terminated. */ +/* */ +/* **************************************************************** */ + +int +yy_string_get () +{ + /* If the string doesn't exist, or is empty, EOF found. */ + if (!(char *)yy_input_dev || !*(char *)yy_input_dev) + return (EOF); + else + { + register char *temp = (char *)yy_input_dev; + int c = *temp++; + yy_input_dev = (FILE *)temp; + return (c); + } +} + +int +yy_string_unget (c) + int c; +{ + register char *temp = (char *)yy_input_dev; + *(--temp) = c; + yy_input_dev = (FILE *)temp; + return (c); +} + +with_input_from_string (string, name) + char *string; + char *name; +{ + init_yy_io (yy_string_get, yy_string_unget, st_string, (FILE *)string); + stream_name = savestring (name); +} + +/* **************************************************************** */ +/* */ +/* Let input come from STREAM. */ +/* */ +/* **************************************************************** */ + +int +yy_stream_get () +{ + if (yy_input_dev) + return (getc (yy_input_dev)); + else + return (EOF); +} + +int +yy_stream_unget (c) + int c; +{ + return (ungetc (c, yy_input_dev)); +} + +with_input_from_stream (stream, name) + FILE *stream; + char *name; +{ + init_yy_io (yy_stream_get, yy_stream_unget, st_stream, stream); + stream_name = savestring (name); +} + +typedef struct stream_saver { + struct stream_saver *next; + Function *getter, *putter; + int type, line; + char *location, *name; +} STREAM_SAVER; + +/* The globally known line number. */ +int line_number = 0; + +STREAM_SAVER *stream_list = (STREAM_SAVER *)NULL; + +push_stream () +{ + STREAM_SAVER *temp = (STREAM_SAVER *)xmalloc (sizeof (STREAM_SAVER)); + temp->type = yy_input_type; + temp->location = (char *)yy_input_dev; + temp->getter = get_yy_char; + temp->putter = unget_yy_char; + temp->line = line_number; + temp->name = stream_name; stream_name = (char *)NULL; + temp->next = stream_list; + stream_list = temp; + EOF_Reached = line_number = 0; +} + +pop_stream () +{ + if (!stream_list) + { + EOF_Reached = 1; + } + else + { + STREAM_SAVER *temp = stream_list; + + EOF_Reached = 0; + stream_list = stream_list->next; + + if (stream_name) + free (stream_name); + stream_name = temp->name; + + init_yy_io (temp->getter, temp->putter, temp->type, (FILE *)temp->location); + line_number = temp->line; + free (temp); + } +} +static int in_case_pattern_list = 0; + + +/* Return a line of text, taken from wherever yylex () reads input. + If there is no more input, then we return NULL. */ +char * +read_a_line () +{ + char *line_buffer = (char *)NULL; + int indx = 0, buffer_size = 0; + int c; + + while (1) + { + c = yy_getc (); + + if (c == 0) + continue; + + /* If there is no more input, then we return NULL. */ + if (c == EOF) + { + c = '\n'; + if (!line_buffer) + return ((char *)NULL); + } + + /* `+2' in case the final (200'th) character in the buffer is a newline; + otherwise the code below that NULL-terminates it will write over the + 201st slot and kill the range checking in free(). */ + if (indx + 2 > buffer_size) + if (!buffer_size) + line_buffer = (char *)xmalloc (buffer_size = 200); + else + line_buffer = (char *)xrealloc (line_buffer, buffer_size += 200); + + line_buffer[indx++] = c; + if (c == '\n') + { + line_buffer[indx] = '\0'; + return (line_buffer); + } + } +} + +/* Return a line as in read_a_line (), but insure that the prompt is + the secondary prompt. */ +char * +read_secondary_line () +{ + prompt_string_pointer = &ps2_prompt; + prompt_again (); + return (read_a_line ()); +} + + +/* **************************************************************** */ +/* */ +/* YYLEX () */ +/* */ +/* **************************************************************** */ + +/* Reserved words. These are only recognized as the first word of a + command. TOKEN_WORD_ALIST. */ +STRING_INT_ALIST word_token_alist[] = { + {"if", IF}, + {"then", THEN}, + {"else", ELSE}, + {"elif", ELIF}, + {"fi", FI}, + {"case", CASE}, + {"esac", ESAC}, + {"for", FOR}, + {"while", WHILE}, + {"until", UNTIL}, + {"do", DO}, + {"done", DONE}, + {"in", IN}, + {"function", FUNCTION}, + {"{", '{'}, + {"}", '}'}, + {"!", BANG}, + {(char *)NULL, 0} +}; + +/* Where shell input comes from. History expansion is performed on each + line when the shell is interactive. */ +char *shell_input_line = (char *)NULL; +int shell_input_line_index = 0; +int shell_input_line_size = 0; /* Amount allocated for shell_input_line. */ +int shell_input_line_len = 0; /* strlen (shell_input_line) */ + +/* Either zero, or EOF. */ +int shell_input_line_terminator = 0; + +/* Return the next shell input character. This always reads characters + from shell_input_line; when that line is exhausted, it is time to + read the next line. */ +int +shell_getc (remove_quoted_newline) + int remove_quoted_newline; +{ + int c; + + QUIT; + + if (!shell_input_line || !shell_input_line[shell_input_line_index]) + { + register int i, l; + char *pre_process_line (), *expansions; + + restart_read_next_line: + + line_number++; + + restart_read: + + i = 0; + shell_input_line_terminator = 0; + + clearerr (stdin); + while (c = yy_getc ()) + { + if (i + 2 > shell_input_line_size) + shell_input_line = (char *) + xrealloc (shell_input_line, shell_input_line_size += 256); + + if (c == EOF) + { + clearerr (stdin); + + if (!i) + shell_input_line_terminator = EOF; + + shell_input_line[i] = '\0'; + break; + } + + shell_input_line[i++] = c; + + if (c == '\n') + { + shell_input_line[--i] = '\0'; + current_command_line_count++; + break; + } + } + shell_input_line_index = 0; + shell_input_line_len = i; /* == strlen (shell_input_line) */ + + if (!shell_input_line || !shell_input_line[0]) + goto after_pre_process; + + if (interactive) + { + expansions = pre_process_line (shell_input_line, 1, 1); + + free (shell_input_line); + shell_input_line = expansions; + shell_input_line_len = shell_input_line ? + strlen (shell_input_line) : + 0; + /* We have to force the xrealloc below because we don't know the + true allocated size of shell_input_line anymore. */ + shell_input_line_size = shell_input_line_len; + } + + after_pre_process: +#if 0 + if (shell_input_line) + { + fprintf (stderr, "%s\n", shell_input_line); + } + else + { + shell_input_line_size = 0; + prompt_string_pointer = ¤t_prompt_string; + prompt_again (); + goto restart_read; + } +#endif + + /* Add the newline to the end of this string, iff the string does + not already end in an EOF character. */ + if (shell_input_line_terminator != EOF) + { + l = shell_input_line_len; /* was a call to strlen */ + + if (l + 3 > shell_input_line_size) + shell_input_line = (char *)xrealloc (shell_input_line, + 1 + (shell_input_line_size += 2)); + + strcpy (shell_input_line + l, "\n"); + } + } + + c = shell_input_line[shell_input_line_index]; + + if (c) + shell_input_line_index++; + + if (c == '\\' && remove_quoted_newline && + shell_input_line[shell_input_line_index] == '\n') + { + prompt_again (); + goto restart_read_next_line; + } + + if (!c && shell_input_line_terminator == EOF) + { + if (shell_input_line_index != 0) + return (NEWLINE); + else + return (EOF); + } + + return (c); +} + +/* Put C back into the input for the shell. */ +shell_ungetc (c) + int c; +{ + if (shell_input_line && shell_input_line_index) + shell_input_line[--shell_input_line_index] = c; +} + +/* Discard input until CHARACTER is seen. */ +discard_until (character) + int character; +{ + int c; + while ((c = shell_getc (0)) != EOF && c != character) + ; + if (c != EOF ) + shell_ungetc (c); +} + +#if defined (HISTORY_REEDITING) +/* Tell readline () that we have some text for it to edit. */ +re_edit (text) + char *text; +{ +#if defined (READLINE) + if (strcmp (stream_name, "readline stdin") == 0) + bash_re_edit (text); +#endif /* READLINE */ +} +#endif /* HISTORY_REEDITING */ + +/* Non-zero means do no history expansion on this line, regardless + of what history_expansion says. */ +int history_expansion_inhibited = 0; + +/* Do pre-processing on LINE. If PRINT_CHANGES is non-zero, then + print the results of expanding the line if there were any changes. + If there is an error, return NULL, otherwise the expanded line is + returned. If ADDIT is non-zero the line is added to the history + list after history expansion. ADDIT is just a suggestion; + REMEMBER_ON_HISTORY can veto, and does. + Right now this does history expansion. */ +char * +pre_process_line (line, print_changes, addit) + char *line; + int print_changes, addit; +{ + char *return_value; + return_value = savestring (line); + + return (return_value); +} + + +/* Place to remember the token. We try to keep the buffer + at a reasonable size, but it can grow. */ +char *token = (char *)NULL; + +/* Current size of the token buffer. */ +int token_buffer_size = 0; + +/* Command to read_token () explaining what we want it to do. */ +#define READ 0 +#define RESET 1 +#define prompt_is_ps1 \ + (!prompt_string_pointer || prompt_string_pointer == &ps1_prompt) + +/* Function for yyparse to call. yylex keeps track of + the last two tokens read, and calls read_token. */ + +yylex () +{ + if (interactive && (!current_token || current_token == NEWLINE)) + { + prompt_again (); + } + + token_before_that = last_read_token; + last_read_token = current_token; + current_token = read_token (READ); + return (current_token); +} + +/* Called from shell.c when Control-C is typed at top level. Or + by the error rule at top level. */ +reset_parser () +{ + read_token (RESET); +} + +/* When non-zero, we have read the required tokens + which allow ESAC to be the next one read. */ +static int allow_esac_as_next = 0; + +/* When non-zero, accept single '{' as a token itself. */ +static int allow_open_brace = 0; + +/* DELIMITER is the value of the delimiter that is currently + enclosing, or zero for none. */ +static int delimiter = 0; +static int old_delimiter = 0; + +/* When non-zero, an open-brace used to create a group is awaiting a close + brace partner. */ +static int open_brace_awaiting_satisfaction = 0; + +/* If non-zero, it is the token that we want read_token to return regardless + of what text is (or isn't) present to be read. read_token resets this. */ +int token_to_read = 0; + +/* Read the next token. Command can be READ (normal operation) or + RESET (to normalize state). */ +read_token (command) + int command; +{ + extern int interactive_shell; /* Whether the current shell is interactive. */ + int character; /* Current character. */ + int peek_char; /* Temporary look-ahead character. */ + int result; /* The thing to return. */ + WORD_DESC *the_word; /* The value for YYLVAL when a WORD is read. */ + + if (token_buffer_size < TOKEN_DEFAULT_GROW_SIZE) + { + if (token) + free (token); + token = (char *)xmalloc (token_buffer_size = TOKEN_DEFAULT_GROW_SIZE); + } + + if (command == RESET) + { + delimiter = old_delimiter = 0; + open_brace_awaiting_satisfaction = 0; + in_case_pattern_list = 0; + + if (shell_input_line) + { + free (shell_input_line); + shell_input_line = (char *)NULL; + shell_input_line_size = shell_input_line_index = 0; + } + last_read_token = NEWLINE; + token_to_read = NEWLINE; + return (NEWLINE); + } + + if (token_to_read) + { + int rt = token_to_read; + token_to_read = 0; + return (rt); + } + + /* Read a single word from input. Start by skipping blanks. */ + while ((character = shell_getc (1)) != EOF && whitespace (character)); + + if (character == EOF) + return (yacc_EOF); + + if (character == '#' && !interactive) + { + /* A comment. Discard until EOL or EOF, and then return a newline. */ + discard_until ('\n'); + shell_getc (0); + + /* If we're about to return an unquoted newline, we can go and collect + the text of any pending here document. */ + if (need_here_doc) + make_here_document (redirection_needing_here_doc); + need_here_doc = 0; + + return (NEWLINE); + } + + if (character == '\n') + { + /* If we're about to return an unquoted newline, we can go and collect + the text of any pending here document. */ + if (need_here_doc) + make_here_document (redirection_needing_here_doc); + need_here_doc = 0; + + TRACE ("read_token: returning NEWLINE"); + return (NEWLINE); + } + + if (member (character, "()<>;&|")) + { + /* Please note that the shell does not allow whitespace to + appear in between tokens which are character pairs, such as + "<<" or ">>". I believe this is the correct behaviour. */ + if (character == (peek_char = shell_getc (1))) + { + switch (character) + { + /* If '<' then we could be at "<<" or at "<<-". We have to + look ahead one more character. */ + case '<': + peek_char = shell_getc (1); + if (peek_char == '-') + return (LESS_LESS_MINUS); + else + { + shell_ungetc (peek_char); + return (LESS_LESS); + } + + case '>': + return (GREATER_GREATER); + + case ';': + in_case_pattern_list = 1; + return (SEMI_SEMI); + + case '&': + return (AND_AND); + + case '|': + return (OR_OR); + } + } + else + { + if (peek_char == '&') + { + switch (character) + { + case '<': return (LESS_AND); + case '>': return (GREATER_AND); + } + } + if (character == '<' && peek_char == '>') + return (LESS_GREATER); + if (character == '>' && peek_char == '|') + return (GREATER_BAR); + if (peek_char == '>' && character == '&') + return (AND_GREATER); + } + shell_ungetc (peek_char); + + /* If we look like we are reading the start of a function + definition, then let the reader know about it so that + we will do the right thing with `{'. */ + if (character == ')' && + last_read_token == '(' && token_before_that == WORD) + { + allow_open_brace = 1; + } + + if (in_case_pattern_list && (character == ')')) + in_case_pattern_list = 0; +#if defined (PROCESS_SUBSTITUTION) + /* If we are performing process substitution, let <( and >( by + and make a word. */ + if (!((character == '>' || character == '<') && peek_char == '(')) +#endif /* PROCESS_SUBSTITUTION */ + + TRACE("read_token: returning '%c'", character); + return (character); + } + + /* Hack <&- (close stdin) case. */ + if (character == '-') + { + switch (last_read_token) + { + case LESS_AND: + case GREATER_AND: + return (character); + } + } + + /* Okay, if we got this far, we have to read a word. Read one, + and then check it against the known ones. */ + { + /* Index into the token that we are building. */ + int token_index = 0; + + /* ALL_DIGITS becomes zero when we see a non-digit. */ + int all_digits = digit (character); + + /* DOLLAR_PRESENT becomes non-zero if we see a `$'. */ + int dollar_present = 0; + + /* QUOTED becomes non-zero if we see one of ("), ('), (`), or (\). */ + int quoted = 0; + + /* Non-zero means to ignore the value of the next character, and just + to add it no matter what. */ + int pass_next_character = 0; + + /* Non-zero means parsing a dollar-paren construct. It is the count of + un-quoted closes we need to see. */ + int dollar_paren_level = 0; + + /* Non-zero means parsing a dollar-bracket construct ($[...]). It is + the count of un-quoted `]' characters we need to see. */ + int dollar_bracket_level = 0; + + /* Another level variable. This one is for dollar_parens inside of + double-quotes. */ + int delimited_paren_level = 0; + + for (;;) + { + if (character == EOF) + goto got_token; + + if (pass_next_character) + { + pass_next_character = 0; + goto got_character; + } + + if (delimiter && character == '\\' && delimiter != '\'') + { + peek_char = shell_getc (0); + if (peek_char != '\\') + shell_ungetc (peek_char); + else + { + token[token_index++] = character; + goto got_character; + } + } + + /* Handle backslashes. Quote lots of things when not inside of + double-quotes, quote some things inside of double-quotes. */ + + if (character == '\\' && delimiter != '\'') + { + peek_char = shell_getc (0); + + /* Backslash-newline is ignored in all cases excepting + when quoted with single quotes. */ + if (peek_char == '\n') + { + character = '\n'; + goto next_character; + } + else + { + shell_ungetc (peek_char); + + /* If the next character is to be quoted, do it now. */ + if (!delimiter || delimiter == '`' || + ((delimiter == '"' ) && + (member (peek_char, slashify_in_quotes)))) + { + pass_next_character++; + quoted = 1; + goto got_character; + } + } + } + + /* This is a hack, in its present form. If a backquote substitution + appears within double quotes, everything within the backquotes + should be read as part of a single word. Jesus. Now I see why + Korn introduced the $() form. */ + if (delimiter && delimiter == '"' && character == '`') + { + old_delimiter = delimiter; + delimiter = character; + goto got_character; + } + + if (delimiter) + { + if (character == delimiter) + { + if (delimited_paren_level) + { +#if defined (NOTDEF) + report_error ("Expected ')' before %c", character); + return (NEWLINE); +#else + goto got_character; +#endif /* NOTDEF */ + } + + delimiter = 0; + + if (old_delimiter == '"' && character == '`') + { + delimiter = old_delimiter; + old_delimiter = 0; + } + + goto got_character; + } + } + + if (!delimiter || delimiter == '`' || delimiter == '"') + { +#if defined (PROCESS_SUBSTITUTION) + if (character == '$' || character == '<' || character == '>') +#else + if (character == '$') +#endif /* PROCESS_SUBSTITUTION */ + { + peek_char = shell_getc (1); + shell_ungetc (peek_char); + if (peek_char == '(') + { + if (!delimiter) + dollar_paren_level++; + else + delimited_paren_level++; + + pass_next_character++; + goto got_character; + } + else if (peek_char == '[') + { + if (!delimiter) + dollar_bracket_level++; + + pass_next_character++; + goto got_character; + } + } + + /* If we are parsing a $() or $[] construct, we need to balance + parens and brackets inside the construct. This whole function + could use a rewrite. */ + if (character == '(') + { + if (delimiter && delimited_paren_level) + delimited_paren_level++; + + if (!delimiter && dollar_paren_level) + dollar_paren_level++; + } + + if (character == '[') + { + if (!delimiter && dollar_bracket_level) + dollar_bracket_level++; + } + + /* This code needs to take into account whether we are inside a + case statement pattern list, and whether this paren is supposed + to terminate it (hey, it could happen). It's not as simple + as just using in_case_pattern_list, because we're not parsing + anything while we're reading a $( ) construct. Maybe we + should move that whole mess into the yacc parser. */ + if (character == ')') + { + if (delimiter && delimited_paren_level) + delimited_paren_level--; + + if (!delimiter && dollar_paren_level) + { + dollar_paren_level--; + goto got_character; + } + } + + if (character == ']') + { + if (!delimiter && dollar_bracket_level) + { + dollar_bracket_level--; + goto got_character; + } + } + } + + if (!dollar_paren_level && !dollar_bracket_level && !delimiter && + member (character, " \t\n;&()|<>")) + { + shell_ungetc (character); + goto got_token; + } + + if (!delimiter) + { + if (character == '"' || character == '`' || character == '\'') + { + quoted = 1; + delimiter = character; + goto got_character; + } + } + + if (all_digits) all_digits = digit (character); + if (character == '$') dollar_present = 1; + + got_character: + + token[token_index++] = character; + + if (token_index == (token_buffer_size - 1)) + token = (char *)xrealloc (token, (token_buffer_size + += TOKEN_DEFAULT_GROW_SIZE)); + { + char *decode_prompt_string (); + + next_character: + if (character == '\n' && interactive && yy_input_type != st_string) + prompt_again (); + } + /* We want to remove quoted newlines (that is, a \ pair) + unless we are within single quotes or pass_next_character is + set (the shell equivalent of literal-next). */ + character = shell_getc ((delimiter != '\'') && (!pass_next_character)); + } + + got_token: + + token[token_index] = '\0'; + + if ((delimiter || dollar_paren_level || dollar_bracket_level) && + character == EOF) + { + if (dollar_paren_level && !delimiter) + delimiter = ')'; + else if (dollar_bracket_level && !delimiter) + delimiter = ']'; + + report_error ("Unexpected EOF. Looking for `%c'.", delimiter); + return (-1); + } + + if (all_digits) + { + /* Check to see what thing we should return. If the last_read_token + is a `<', or a `&', or the character which ended this token is + a '>' or '<', then, and ONLY then, is this input token a NUMBER. + Otherwise, it is just a word, and should be returned as such. */ + + if ((character == '<' || character == '>') || + (last_read_token == LESS_AND || + last_read_token == GREATER_AND)) + { + yylval.number = atoi (token); /* was sscanf (token, "%d", &(yylval.number)); */ + return (NUMBER); + } + } + + /* Handle special case. IN is recognized if the last token + was WORD and the token before that was FOR or CASE. */ + if ((last_read_token == WORD) && + ((token_before_that == FOR) || (token_before_that == CASE)) && + (STREQ (token, "in"))) + { + if (token_before_that == CASE) + { + in_case_pattern_list = 1; + allow_esac_as_next++; + } + TRACE("returning %s as IN", token); + return (IN); + } + + /* Ditto for DO in the FOR case. */ + if ((last_read_token == WORD) && (token_before_that == FOR) && + (STREQ (token, "do"))) + return (DO); + + /* Ditto for ESAC in the CASE case. + Specifically, this handles "case word in esac", which is a legal + construct, certainly because someone will pass an empty arg to the + case construct, and we don't want it to barf. Of course, we should + insist that the case construct has at least one pattern in it, but + the designers disagree. */ + if (allow_esac_as_next) + { + allow_esac_as_next--; + if (STREQ (token, "esac")) + { + in_case_pattern_list = 0; + return (ESAC); + } + } + + /* Ditto for `{' in the FUNCTION case. */ + if (allow_open_brace) + { + allow_open_brace = 0; + if (STREQ (token, "{")) + { + open_brace_awaiting_satisfaction++; + return ('{'); + } + } + + /* Check to see if it is a reserved word. */ + if (!dollar_present && !quoted && + reserved_word_acceptable (last_read_token)) + { + int i; + for (i = 0; word_token_alist[i].word != (char *)NULL; i++) + if (STREQ (token, word_token_alist[i].word)) + { + if (in_case_pattern_list && (word_token_alist[i].token != ESAC)) + break; + + if (word_token_alist[i].token == ESAC) + in_case_pattern_list = 0; + + if (word_token_alist[i].token == '{') + open_brace_awaiting_satisfaction++; + + TRACE("returning %s as %d", token, word_token_alist[i].token); + return (word_token_alist[i].token); + } + } + + /* What if we are attempting to satisfy an open-brace grouper? */ + if (open_brace_awaiting_satisfaction && strcmp (token, "}") == 0) + { + open_brace_awaiting_satisfaction--; + return ('}'); + } + + the_word = (WORD_DESC *)xmalloc (sizeof (WORD_DESC)); + the_word->word = (char *)xmalloc (1 + strlen (token)); + strcpy (the_word->word, token); + the_word->dollar_present = dollar_present; + the_word->quoted = quoted; + the_word->assignment = assignment (token); + + yylval.word = the_word; + + result = WORD; + + if ((last_read_token == ASSIGNMENT_WORD || command_word_acceptable (last_read_token)) && + the_word->assignment && + token[0] != '=' && + legal_assignment (token)) + result = ASSIGNMENT_WORD; + + TRACE("read_token: returning %s as %s", token, + (result == WORD) ? "WORD" : + result == NAME ? "NAME" : "ASSIGNMENT_WORD"); + if (last_read_token == FUNCTION) + allow_open_brace = 1; + } + return (result); +} + +legal_assignment (s) +char *s; +{ + extern char *index (); + char *t = index (s, '='); + int result; + + *t = '\0'; + result = legal_identifier (s); + *t = '='; + return (result); +} + +/* Return 1 if this token is a legal shell `identifier'; that is, it consists + solely of letters, digits, and underscores, and does not begin with a + digit. */ +legal_identifier (name) + char *name; +{ + register char *s; + + if (!name || !*name) + return (0); + + if (digit (*name)) + return (0); + + for (s = name; s && *s; s++) + { + if (!isletter (*s) && !digit (*s) && (*s != '_')) + return (0); + } + return (1); +} + +/* Return 1 if TOKEN is a token that after being read would allow + a reserved word to be seen, else 0. */ +static int +reserved_word_acceptable (token) + int token; +{ + if (member (token, "\n;()|&{") || + token == AND_AND || + token == BANG || + token == DO || + token == ELIF || + token == ELSE || + token == IF || + token == FI || + token == ESAC || + token == OR_OR || + token == SEMI_SEMI || + token == THEN || + token == UNTIL || + token == WHILE || + token == 0) + return (1); + else + return (0); +} + +/* Return 1 if TOKEN is a token that after being read would allow + a reserved word to be seen, else 0. */ +static int +command_word_acceptable (token) + int token; +{ + if (member (token, "\n;()|&{") || + token == AND_AND || + token == BANG || + token == DO || + token == ELIF || + token == ELSE || + token == IF || + token == OR_OR || + token == THEN || + token == UNTIL || + token == WHILE || + token == 0) + return (1); + else + return (0); +} + +reset_readline_prompt () +{ +} + +/* Add a line to the history list. + The variable COMMAND_ORIENTED_HISTORY controls the style of history + remembering; when non-zero, and LINE is not the first line of a + complete parser construct, append LINE to the last history line instead + of adding it as a new line. */ +bash_add_history (line) + char *line; +{ +} + +/* Issue a prompt, or prepare to issue a prompt when the next character + is read. */ +prompt_again () +{ + char *temp_prompt, *decode_prompt_string (); + + ps1_prompt = "posix$ "; + ps2_prompt = "> "; + + if (!prompt_string_pointer) + prompt_string_pointer = &ps1_prompt; + + current_prompt_string = *prompt_string_pointer; + prompt_string_pointer = &ps2_prompt; + + fprintf (stderr, "%s", current_prompt_string); + fflush (stderr); +} + +char * +decode_prompt_string (string) + char *string; +{ + char *result; + result = savestring (string); + + return (result); +} + +/* Report a syntax error, and restart the parser. Call here for fatal + errors. */ +yyerror () +{ + report_syntax_error ((char *)NULL); + reset_parser (); +} + +/* Report a syntax error with line numbers, etc. + Call here for recoverable errors. If you have a message to print, + then place it in MESSAGE, otherwise pass NULL and this will figure + out an appropriate message for you. */ +report_syntax_error (message) + char *message; +{ + if (message) + { + if (!interactive) + { + char *name = stream_name ? stream_name : "stdin"; + report_error ("%s:%d: `%s'", name, line_number, message); + } + else + report_error ("%s", message); + + return; + } + + if (shell_input_line && *shell_input_line) + { + char *error_token, *t = shell_input_line; + register int i = shell_input_line_index; + int token_end = 0; + + if (!t[i] && i) + i--; + + while (i && (t[i] == ' ' || t[i] == '\t' || t[i] == '\n')) + i--; + + if (i) + token_end = i + 1; + + while (i && !member (t[i], " \n\t;|&")) + i--; + + while (i != token_end && member (t[i], " \n\t")) + i++; + + if (token_end) + { + error_token = (char *)alloca (1 + (token_end - i)); + strncpy (error_token, t + i, token_end - i); + error_token[token_end - i] = '\0'; + + report_error ("syntax error near `%s'", error_token); + } + else if ((i == 0) && (token_end == 0)) /* a 1-character token */ + { + error_token = (char *) alloca (2); + strncpy(error_token, t + i, 1); + error_token[1] = '\0'; + + report_error ("syntax error near `%s'", error_token); + } + + if (!interactive) + { + char *temp = savestring (shell_input_line); + char *name = stream_name ? stream_name : "stdin"; + int l = strlen (temp); + + while (l && temp[l - 1] == '\n') + temp[--l] = '\0'; + + report_error ("%s:%d: `%s'", name, line_number, temp); + free (temp); + } + } + else + report_error ("Syntax error"); +} + +/* ??? Needed function. ??? We have to be able to discard the constructs + created during parsing. In the case of error, we want to return + allocated objects to the memory pool. In the case of no error, we want + to throw away the information about where the allocated objects live. + (dispose_command () will actually free the command. */ +discard_parser_constructs (error_p) + int error_p; +{ +/* if (error_p) { + fprintf (stderr, "*"); + } */ +} + +handle_eof_input_unit () +{ + EOF_Reached = 1; +} + +TRACE(va_alist) +va_dcl +{ + va_list args; + char *format; + + va_start (args); + fprintf(stderr, "TRACE: "); + format = va_arg (args, char *); + vfprintf (stderr, format, args); + fprintf (stderr, "\n"); + + va_end (args); +} diff --git a/bash-20060316/CWRU/posix-parser/shell.h b/bash-20060316/CWRU/posix-parser/shell.h new file mode 100644 index 000000000..9fb14422b --- /dev/null +++ b/bash-20060316/CWRU/posix-parser/shell.h @@ -0,0 +1,71 @@ +/* shell.h -- The data structures used by the shell */ + +#include "config.h" +#include "general.h" +#include "error.h" +#include "variables.h" +#include "quit.h" +#include "maxpath.h" +#include "unwind_prot.h" +#include "command.h" + +extern int EOF_Reached; + +#define NO_PIPE -1 +#define REDIRECT_BOTH -2 +#define IS_DESCRIPTOR -1 + +#define NO_VARIABLE -1 + +/* A bunch of stuff for flow of control using setjmp () and longjmp (). */ +#include +extern jmp_buf top_level, catch; + +#define NOT_JUMPED 0 /* Not returning from a longjmp. */ +#define FORCE_EOF 1 /* We want to stop parsing. */ +#define DISCARD 2 /* Discard current command. */ +#define EXITPROG 3 /* Unconditionally exit the program now. */ + +/* Values that can be returned by execute_command (). */ +#define EXECUTION_FAILURE 1 +#define EXECUTION_SUCCESS 0 + +/* Special exit status used when the shell is asked to execute a + binary file as a shell script. */ +#define EX_BINARY_FILE 126 + +/* The list of characters that are quoted in double-quotes with a + backslash. Other characters following a backslash cause nothing + special to happen. */ +#define slashify_in_quotes "\\`$\"" +#define slashify_in_here_document "\\`$" + +/* Constants which specify how to handle backslashes and quoting in + expand_word_internal (). Q_DOUBLE_QUOTES means to use the function + slashify_in_quotes () to decide whether the backslash should be + retained. Q_HERE_DOCUMENT means slashify_in_here_document () to + decide whether to retain the backslash. Q_KEEP_BACKSLASH means + to unconditionally retain the backslash. */ +#define Q_DOUBLE_QUOTES 0x1 +#define Q_HERE_DOCUMENT 0x2 +#define Q_KEEP_BACKSLASH 0x4 + +extern char **shell_environment; +extern WORD_LIST *rest_of_args; + +/* Generalized global variables. */ +extern int executing, login_shell; + +/* Structure to pass around that holds a bitmap of file descriptors + to close, and the size of that structure. Used in execute_cmd.c. */ +struct fd_bitmap { + long size; + char *bitmap; +}; + +#define FD_BITMAP_SIZE 32 + +#if defined (EIGHT_BIT) +# define CTLESC '\001' +# define CTLNUL '\002' +#endif /* EIGHT_BIT */ diff --git a/bash-20060316/CWRU/save/unwind_prot.c.sighandling b/bash-20060316/CWRU/save/unwind_prot.c.sighandling new file mode 100644 index 000000000..a33476724 --- /dev/null +++ b/bash-20060316/CWRU/save/unwind_prot.c.sighandling @@ -0,0 +1,294 @@ +/* I can't stand it anymore! Please can't we just write the + whole Unix system in lisp or something? */ + +/* Copyright (C) 1987,1989 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 1, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + +/* **************************************************************** */ +/* */ +/* Unwind Protection Scheme for Bash */ +/* */ +/* **************************************************************** */ +#include +#include +#include "config.h" +#include "general.h" +#include "unwind_prot.h" + +/* If CLEANUP is null, then ARG contains a tag to throw back to. */ +typedef struct _uwp { + struct _uwp *next; + Function *cleanup; + char *arg; +} UNWIND_ELT; + +static void + unwind_frame_discard_internal (), unwind_frame_run_internal (), + add_unwind_protect_internal (), remove_unwind_protect_internal (), + run_unwind_protects_internal (); + +static UNWIND_ELT *unwind_protect_list = (UNWIND_ELT *)NULL; + +/* Run a function without interrupts. */ +void +without_interrupts (function, arg1, arg2) + VFunction *function; + char *arg1, *arg2; +{ +#if defined (_POSIX_VERSION) + static int sets_done = 0; + static sigset_t set; + sigset_t oset; + + /* SET needs to be initialized only once. */ + if (sets_done == 0) + { + sigemptyset (&set); + sigaddset (&set, SIGINT); + sets_done = 1; + } + sigemptyset (&oset); + + sigprocmask (SIG_BLOCK, &set, &oset); +#else +# if defined (USG) + SigHandler *old_int; + + old_int = (SigHandler *)signal (SIGINT, SIG_IGN); +# else + int oldmask = sigblock (SIGINT); +# endif +#endif + + (*function)(arg1, arg2); + +#if defined (_POSIX_VERSION) + sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL); +#else +# if defined (USG) + signal (SIGINT, old_int); +# else + sigsetmask (oldmask); +# endif +#endif +} + +/* Start the beginning of a region. */ +void +begin_unwind_frame (tag) + char *tag; +{ + add_unwind_protect ((Function *)NULL, tag); +} + +/* Discard the unwind protects back to TAG. */ +void +discard_unwind_frame (tag) + char *tag; +{ + if (unwind_protect_list) + without_interrupts (unwind_frame_discard_internal, tag, (char *)NULL); +} + +/* Run the unwind protects back to TAG. */ +void +run_unwind_frame (tag) + char *tag; +{ + if (unwind_protect_list) + without_interrupts (unwind_frame_run_internal, tag, (char *)NULL); +} + +/* Add the function CLEANUP with ARG to the list of unwindable things. */ +void +add_unwind_protect (cleanup, arg) + Function *cleanup; + char *arg; +{ + without_interrupts (add_unwind_protect_internal, (char *)cleanup, arg); +} + +/* Remove the top unwind protect from the list. */ +void +remove_unwind_protect () +{ + if (unwind_protect_list) + without_interrupts + (remove_unwind_protect_internal, (char *)NULL, (char *)NULL); +} + +/* Run the list of cleanup functions in unwind_protect_list. */ +void +run_unwind_protects () +{ + if (unwind_protect_list) + without_interrupts + (run_unwind_protects_internal, (char *)NULL, (char *)NULL); +} + +/* **************************************************************** */ +/* */ +/* The Actual Functions */ +/* */ +/* **************************************************************** */ + +static void +add_unwind_protect_internal (cleanup, arg) + Function *cleanup; + char *arg; +{ + UNWIND_ELT *elt; + + elt = (UNWIND_ELT *)xmalloc (sizeof (UNWIND_ELT)); + elt->cleanup = cleanup; + elt->arg = arg; + elt->next = unwind_protect_list; + unwind_protect_list = elt; +} + +static void +remove_unwind_protect_internal () +{ + UNWIND_ELT *elt = unwind_protect_list; + + if (elt) + { + unwind_protect_list = unwind_protect_list->next; + free (elt); + } +} + +static void +run_unwind_protects_internal () +{ + UNWIND_ELT *t, *elt = unwind_protect_list; + + while (elt) + { + /* This function can be run at strange times, like when unwinding + the entire world of unwind protects. Thus, we may come across + an element which is simply a label for a catch frame. Don't call + the non-existant function. */ + if (elt->cleanup) + (*(elt->cleanup)) (elt->arg); + + t = elt; + elt = elt->next; + free (t); + } + unwind_protect_list = elt; +} + +static void +unwind_frame_discard_internal (tag) + char *tag; +{ + UNWIND_ELT *elt; + + while (elt = unwind_protect_list) + { + unwind_protect_list = unwind_protect_list->next; + if (!elt->cleanup && (STREQ (elt->arg, tag))) + { + free (elt); + break; + } + else + free (elt); + } +} + +static void +unwind_frame_run_internal (tag) + char *tag; +{ + UNWIND_ELT *elt; + + while (elt = unwind_protect_list) + { + unwind_protect_list = elt->next; + + /* If tag, then compare. */ + if (!elt->cleanup) + { + if (STREQ (elt->arg, tag)) + { + free (elt); + break; + } + free (elt); + continue; + } + else + { + (*(elt->cleanup)) (elt->arg); + free (elt); + } + } +} + +/* Structure describing a saved variable and the value to restore it to. */ +typedef struct { + int *variable; + char *desired_setting; + int size; +} SAVED_VAR; + +/* Restore the value of a variable, based on the contents of SV. If + sv->size is greater than sizeof (int), sv->desired_setting points to + a block of memory SIZE bytes long holding the value, rather than the + value itself. This block of memory is copied back into the variable. */ +static void +restore_variable (sv) + SAVED_VAR *sv; +{ + if (sv->size > sizeof (int)) + { + bcopy ((char *)sv->desired_setting, (char *)sv->variable, sv->size); + free (sv->desired_setting); + } + else + *(sv->variable) = (int)sv->desired_setting; + + free (sv); +} + +/* Save the value of a variable so it will be restored when unwind-protects + are run. VAR is a pointer to the variable. VALUE is the value to be + saved. SIZE is the size in bytes of VALUE. If SIZE is bigger than what + can be saved in an int, memory will be allocated and the value saved + into that using bcopy (). */ +void +unwind_protect_var (var, value, size) + int *var; + char *value; + int size; +{ + SAVED_VAR *s = (SAVED_VAR *)xmalloc (sizeof (SAVED_VAR)); + + s->variable = var; + if (size > sizeof (int)) + { + s->desired_setting = (char *)xmalloc (size); + bcopy (value, (char *)s->desired_setting, size); + } + else + s->desired_setting = value; + s->size = size; + add_unwind_protect ((Function *)restore_variable, (char *)s); +} diff --git a/bash-20060316/CWRU/save/unwind_prot.h.save b/bash-20060316/CWRU/save/unwind_prot.h.save new file mode 100644 index 000000000..998fd72b6 --- /dev/null +++ b/bash-20060316/CWRU/save/unwind_prot.h.save @@ -0,0 +1,50 @@ +/* unwind_prot.h - Macros and functions for hacking unwind protection. */ + +/* Copyright (C) 1993 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#if !defined (_UNWIND_PROT_H) +#define _UNWIND_PROT_H + +/* Run a function without interrupts. */ +extern void begin_unwind_frame (); +extern void discard_unwind_frame (); +extern void run_unwind_frame (); +extern void add_unwind_protect (); +extern void remove_unwind_protect (); +extern void run_unwind_protects (); +extern void unwind_protect_var (); + +/* Define for people who like their code to look a certain way. */ +#define end_unwind_frame() + +/* How to protect an integer. */ +#define unwind_protect_int(X) unwind_protect_var (&(X), (char *)(X), sizeof (int)) + +/* How to protect a pointer to a string. */ +#define unwind_protect_string(X) \ + unwind_protect_var ((int *)&(X), (X), sizeof (char *)) + +/* How to protect any old pointer. */ +#define unwind_protect_pointer(X) unwind_protect_string (X) + +/* How to protect the contents of a jmp_buf. */ +#define unwind_protect_jmp_buf(X) \ + unwind_protect_var ((int *)(X), (char *)(X), sizeof (procenv_t)) + +#endif /* _UNWIND_PROT_H */ diff --git a/bash-20060316/CWRU/sh-redir-hack b/bash-20060316/CWRU/sh-redir-hack new file mode 100644 index 000000000..413b29796 --- /dev/null +++ b/bash-20060316/CWRU/sh-redir-hack @@ -0,0 +1,15 @@ +Add to `subshell' production in parse.y and recompile -DREDIRECTION_HACK to +get `< xx (command)' sh compatibility. + + | redirections '(' list ')' + { +#if defined (REDIRECTION_HACK) + /* XXX - C News sh compatibility hack - XXX */ + $3->redirects = $1; + $3->flags |= CMD_WANT_SUBSHELL; + $$ = $3; +#else + yyerror (); + YYABORT; +#endif + } diff --git a/bash-20060316/INSTALL b/bash-20060316/INSTALL new file mode 100644 index 000000000..4dfaa0d92 --- /dev/null +++ b/bash-20060316/INSTALL @@ -0,0 +1,393 @@ +Basic Installation +================== + +These are installation instructions for Bash. + +The simplest way to compile Bash is: + + 1. `cd' to the directory containing the source code and type + `./configure' to configure Bash for your system. If you're using + `csh' on an old version of System V, you might need to type `sh + ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes some time. While running, it prints + messages telling which features it is checking for. + + 2. Type `make' to compile Bash and build the `bashbug' bug reporting + script. + + 3. Optionally, type `make tests' to run the Bash test suite. + + 4. Type `make install' to install `bash' and `bashbug'. This will + also install the manual pages and Info file. + +The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package +(the top directory, the `builtins', `doc', and `support' directories, +each directory under `lib', and several others). It also creates a +`config.h' file containing system-dependent definitions. Finally, it +creates a shell script named `config.status' that you can run in the +future to recreate the current configuration, a file `config.cache' +that saves the results of its tests to speed up reconfiguring, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). If at some point `config.cache' contains +results you don't want to keep, you may remove or edit it. + +To find out more about the options and arguments that the `configure' +script understands, type + + bash-2.04$ ./configure --help + +at the Bash prompt in your Bash source directory. + +If you need to do unusual things to compile Bash, please try to figure +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 +or regenerate `configure' using a newer version of Autoconf. If you do +this, make sure you are using Autoconf version 2.50 or newer. + +You can remove the program binaries and object files from the source +code directory by typing `make clean'. To also remove the files that +`configure' created (so you can compile Bash for a different kind of +computer), type `make distclean'. + +Compilers and Options +===================== + +Some systems require unusual options for compilation or linking that +the `configure' script does not know about. You can give `configure' +initial values for variables by setting them in the environment. Using +a Bourne-compatible shell, you can do that on the command line like +this: + + CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure + +On systems that have the `env' program, you can do it like this: + + env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure + +The configuration process uses GCC to build Bash if it is available. + +Compiling For Multiple Architectures +==================================== + +You can compile Bash for more than one kind of computer at the same +time, by placing the object files for each architecture in their own +directory. To do this, you must use a version of `make' that supports +the `VPATH' variable, such as GNU `make'. `cd' to the directory where +you want the object files and executables to go and run the `configure' +script from the source directory. You may need to supply the +`--srcdir=PATH' argument to tell `configure' where the source files +are. `configure' automatically checks for the source code in the +directory that `configure' is in and in `..'. + +If you have to use a `make' that does not supports the `VPATH' +variable, you can compile Bash for one architecture at a time in the +source code directory. After you have installed Bash for one +architecture, use `make distclean' before reconfiguring for another +architecture. + +Alternatively, if your system supports symbolic links, you can use the +`support/mkclone' script to create a build tree which has symbolic +links back to each file in the source directory. Here's an example +that creates a build directory in the current directory from a source +directory `/usr/gnu/src/bash-2.0': + + bash /usr/gnu/src/bash-2.0/support/mkclone -s /usr/gnu/src/bash-2.0 . + +The `mkclone' script requires Bash, so you must have already built Bash +for at least one architecture before you can create build directories +for other architectures. + +Installation Names +================== + +By default, `make install' will install into `/usr/local/bin', +`/usr/local/man', etc. You can specify an installation prefix other +than `/usr/local' by giving `configure' the option `--prefix=PATH', or +by specifying a value for the `DESTDIR' `make' variable when running +`make install'. + +You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', `make install' will +use PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + +Specifying the System Type +========================== + +There may be some features `configure' can not figure out +automatically, but need to determine by the type of host Bash will run +on. Usually `configure' can figure that out, but if it prints a +message saying it can not guess the host type, give it the +`--host=TYPE' option. `TYPE' can either be a short name for the system +type, such as `sun4', or a canonical name with three fields: +`CPU-COMPANY-SYSTEM' (e.g., `i386-unknown-freebsd4.2'). + +See the file `support/config.sub' for the possible values of each field. + +Sharing Defaults +================ + +If you want to set default values for `configure' scripts to share, you +can create a site shell script called `config.site' that gives default +values for variables like `CC', `cache_file', and `prefix'. `configure' +looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: the Bash `configure' looks for a site script, but not all +`configure' scripts do. + +Operation Controls +================== + +`configure' recognizes the following options to control how it operates. + +`--cache-file=FILE' + Use and save the results of the tests in FILE instead of + `./config.cache'. Set FILE to `/dev/null' to disable caching, for + debugging `configure'. + +`--help' + Print a summary of the options to `configure', and exit. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. + +`--srcdir=DIR' + Look for the Bash source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--version' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`configure' also accepts some other, not widely used, boilerplate +options. `configure --help' prints the complete list. + +Optional Features +================= + +The Bash `configure' has a number of `--enable-FEATURE' options, where +FEATURE indicates an optional part of Bash. There are also several +`--with-PACKAGE' options, where PACKAGE is something like `bash-malloc' +or `purify'. To turn off the default use of a package, use +`--without-PACKAGE'. To configure Bash without a feature that is +enabled by default, use `--disable-FEATURE'. + +Here is a complete list of the `--enable-' and `--with-' options that +the Bash `configure' recognizes. + +`--with-afs' + Define if you are using the Andrew File System from Transarc. + +`--with-bash-malloc' + Use the Bash version of `malloc' in the directory `lib/malloc'. + This is not the same `malloc' that appears in GNU libc, but an + older version originally derived from the 4.2 BSD `malloc'. This + `malloc' is very fast, but wastes some space on each allocation. + This option is enabled by default. The `NOTES' file contains a + list of systems for which this should be turned off, and + `configure' disables this option automatically for a number of + systems. + +`--with-curses' + Use the curses library instead of the termcap library. This should + be supplied if your system has an inadequate or incomplete termcap + database. + +`--with-gnu-malloc' + A synonym for `--with-bash-malloc'. + +`--with-installed-readline[=PREFIX]' + Define this to make Bash link with a locally-installed version of + Readline rather than the version in `lib/readline'. This works + only with Readline 5.0 and later versions. If PREFIX is `yes' or + not supplied, `configure' uses the values of the make variables + `includedir' and `libdir', which are subdirectories of `prefix' by + default, to find the installed version of Readline if it is not in + the standard system include and library directories. If PREFIX is + `no', Bash links with the version in `lib/readline'. If PREFIX is + set to any other value, `configure' treats it as a directory + pathname and looks for the installed version of Readline in + subdirectories of that directory (include files in + PREFIX/`include' and the library in PREFIX/`lib'). + +`--with-purify' + Define this to use the Purify memory allocation checker from + Rational Software. + +`--enable-minimal-config' + This produces a shell with minimal features, close to the + historical Bourne shell. + +There are several `--enable-' options that alter how Bash is compiled +and linked, rather than changing run-time features. + +`--enable-largefile' + Enable support for large files + (http://www.sas.com/standards/large_file/x_open.20Mar96.html) if + the operating system requires special compiler options to build + programs which can access large files. This is enabled by + default, if the operating system provides large file support. + +`--enable-profiling' + This builds a Bash binary that produces profiling information to be + processed by `gprof' each time it is executed. + +`--enable-static-link' + This causes Bash to be linked statically, if `gcc' is being used. + This could be used to build a version to use as root's shell. + +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. + +`--enable-alias' + Allow alias expansion and include the `alias' and `unalias' + builtins (*note Aliases::). + +`--enable-arith-for-command' + Include support for the alternate form of the `for' command that + behaves like the C language `for' statement (*note Looping + Constructs::). + +`--enable-array-variables' + Include support for one-dimensional array shell variables (*note + Arrays::). + +`--enable-bang-history' + Include support for `csh'-like history substitution (*note History + Interaction::). + +`--enable-brace-expansion' + Include `csh'-like brace expansion ( `b{a,b}c' ==> `bac bbc' ). + See *Note Brace Expansion::, for a complete description. + +`--enable-command-timing' + Include support for recognizing `time' as a reserved word and for + displaying timing statistics for the pipeline following `time' + (*note Pipelines::). This allows pipelines as well as shell + builtins and functions to be timed. + +`--enable-cond-command' + Include support for the `[[' conditional command. (*note + Conditional Constructs::). + +`--enable-cond-regexp' + Include support for matching POSIX regular expressions using the + `=~' binary operator in the `[[' conditional command. (*note + Conditional Constructs::). + +`--enable-debugger' + Include support for the bash debugger (distributed separately). + +`--enable-directory-stack' + Include support for a `csh'-like directory stack and the `pushd', + `popd', and `dirs' builtins (*note The Directory Stack::). + +`--enable-disabled-builtins' + Allow builtin commands to be invoked via `builtin xxx' even after + `xxx' has been disabled using `enable -n xxx'. See *Note Bash + Builtins::, for details of the `builtin' and `enable' builtin + commands. + +`--enable-dparen-arithmetic' + Include support for the `((...))' command (*note Conditional + Constructs::). + +`--enable-extended-glob' + Include support for the extended pattern matching features + described above under *Note Pattern Matching::. + +`--enable-help-builtin' + Include the `help' builtin, which displays help on shell builtins + and variables (*note Bash Builtins::). + +`--enable-history' + Include command history and the `fc' and `history' builtin + commands (*note Bash History Facilities::). + +`--enable-job-control' + This enables the job control features (*note Job Control::), if + the operating system supports them. + +`--enable-multibyte' + This enables support for multibyte characters if the operating + system provides the necessary support. + +`--enable-net-redirections' + This enables the special handling of filenames of the form + `/dev/tcp/HOST/PORT' and `/dev/udp/HOST/PORT' when used in + redirections (*note Redirections::). + +`--enable-process-substitution' + This enables process substitution (*note Process Substitution::) if + the operating system provides the necessary support. + +`--enable-progcomp' + Enable the programmable completion facilities (*note Programmable + Completion::). If Readline is not enabled, this option has no + effect. + +`--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. + +`--enable-readline' + Include support for command-line editing and history with the Bash + version of the Readline library (*note Command Line Editing::). + +`--enable-restricted' + Include support for a "restricted shell". If this is enabled, + Bash, when called as `rbash', enters a restricted mode. See *Note + The Restricted Shell::, for a description of restricted mode. + +`--enable-select' + Include the `select' builtin, which allows the generation of simple + menus (*note Conditional Constructs::). + +`--enable-separate-helpfiles' + Use external files for the documentation displayed by the `help' + builtin instead of storing the text internally. + +`--enable-single-help-strings' + Store the text displayed by the `help' builtin as a single string + for each help topic. This aids in translating the text to + different languages. You may need to disable this if your + compiler cannot handle very long string literals. + +`--enable-strict-posix-default' + Make Bash POSIX-conformant by default (*note Bash POSIX Mode::). + +`--enable-usg-echo-default' + A synonym for `--enable-xpg-echo-default'. + +`--enable-xpg-echo-default' + Make the `echo' builtin expand backslash-escaped characters by + default, without requiring the `-e' option. This sets the default + value of the `xpg_echo' shell option to `on', which makes the Bash + `echo' behave more like the version specified in the Single Unix + Specification, version 3. *Note Bash Builtins::, for a + description of the escape sequences that `echo' recognizes. + +The file `config-top.h' contains C Preprocessor `#define' statements +for options which are not settable from `configure'. Some of these are +not meant to be changed; beware of the consequences if you do. Read +the comments associated with each definition for more information about +its effect. diff --git a/bash-20060316/MANIFEST b/bash-20060316/MANIFEST new file mode 100644 index 000000000..989dbe265 --- /dev/null +++ b/bash-20060316/MANIFEST @@ -0,0 +1,990 @@ +# +# Master distribution manifest for bash +# +# +# Filename type +# +CWRU d +CWRU/misc d +builtins d +cross-build d +doc d +examples d +examples/bashdb d +examples/obashdb d +examples/complete d +examples/functions d +examples/scripts d +examples/scripts.v2 d +examples/scripts.noah d +examples/startup-files d +examples/startup-files/apple d +examples/misc d +examples/loadables d +examples/loadables/perl d +include d +lib d +lib/glob d +lib/glob/doc d +lib/intl d +lib/malloc d +lib/readline d +lib/readline/doc d +lib/readline/examples d +lib/sh d +lib/termcap d +lib/termcap/grot d +lib/tilde d +po d +support d +tests d +tests/misc d +ABOUT-NLS f +CHANGES f +COMPAT f +COPYING f +INSTALL f +MANIFEST f +NEWS f +NOTES f +POSIX f +README f +RBASH f +AUTHORS f +Y2K f +configure.in f +configure f +Makefile.in f +config-top.h f +config-bot.h f +config.h.in f +aclocal.m4 f +array.c f +arrayfunc.c f +eval.c f +print_cmd.c f +general.c f +list.c f +locale.c f +stringlib.c f +variables.c f +make_cmd.c f +copy_cmd.c f +unwind_prot.c f +dispose_cmd.c f +bashhist.c f +hashcmd.c f +hashlib.c f +parse.y f +pathexp.c f +subst.c f +shell.c f +trap.c f +sig.c f +siglist.c f +version.c f +flags.c f +jobs.c f +input.c f +mailcheck.c f +test.c f +expr.c f +alias.c f +execute_cmd.c f +findcmd.c f +redir.c f +bashline.c f +braces.c f +bracecomp.c f +nojobs.c f +error.c f +xmalloc.c f +pcomplete.c f +pcomplib.c f +mksyntax.c f +alias.h f +builtins.h f +bashhist.h f +bashline.h f +conftypes.h f +patchlevel.h f +variables.h f +array.h f +arrayfunc.h f +jobs.h f +findcmd.h f +hashlib.h f +quit.h f +flags.h f +shell.h f +syntax.h f +pathexp.h f +parser.h f +pcomplete.h f +sig.h f +test.h f +trap.h f +general.h f +unwind_prot.h f +input.h f +error.h f +command.h f +externs.h f +siglist.h f +subst.h f +dispose_cmd.h f +hashcmd.h f +bashansi.h f +bashjmp.h f +bashintl.h f +make_cmd.h f +execute_cmd.h f +redir.h f +bashtypes.h f +mailcheck.h f +xmalloc.h f +y.tab.c f +y.tab.h f +parser-built f +pathnames.h.in f +builtins/Makefile.in f +builtins/alias.def f +builtins/bind.def f +builtins/break.def f +builtins/builtin.def f +builtins/caller.def f +builtins/cd.def f +builtins/colon.def f +builtins/command.def f +builtins/complete.def f +builtins/common.c f +builtins/declare.def f +builtins/echo.def f +builtins/enable.def f +builtins/eval.def f +builtins/evalfile.c f +builtins/evalstring.c f +builtins/exec.def f +builtins/exit.def f +builtins/fc.def f +builtins/fg_bg.def f +builtins/getopt.c f +builtins/getopt.h f +builtins/getopts.def f +builtins/hash.def f +builtins/help.def f +builtins/let.def f +builtins/history.def f +builtins/jobs.def f +builtins/kill.def f +builtins/mkbuiltins.c f +builtins/printf.def f +builtins/pushd.def f +builtins/read.def f +builtins/reserved.def f +builtins/return.def f +builtins/set.def f +builtins/setattr.def f +builtins/shift.def f +builtins/shopt.def f +builtins/source.def f +builtins/suspend.def f +builtins/test.def f +builtins/times.def f +builtins/trap.def f +builtins/type.def f +builtins/ulimit.def f +builtins/umask.def f +builtins/wait.def f +builtins/psize.c f +builtins/psize.sh f +builtins/inlib.def f +builtins/bashgetopt.c f +builtins/common.h f +builtins/bashgetopt.h f +cross-build/cygwin32.cache f +cross-build/x86-beos.cache f +cross-build/opennt.cache f +include/ansi_stdlib.h f +include/chartypes.h f +include/filecntl.h f +include/gettext.h f +include/maxpath.h f +include/memalloc.h f +include/ocache.h f +include/posixdir.h f +include/posixjmp.h f +include/posixstat.h f +include/posixtime.h f +include/posixwait.h f +include/shmbutil.h f +include/shtty.h f +include/stdc.h f +include/systimes.h f +include/typemax.h f +include/unionwait.h f +lib/glob/Makefile.in f +lib/glob/sm_loop.c f +lib/glob/smatch.c f +lib/glob/strmatch.c f +lib/glob/strmatch.h f +lib/glob/glob.c f +lib/glob/glob.h f +lib/glob/glob_loop.c f +lib/glob/xmbsrtowcs.c f +lib/glob/collsyms.h f +lib/glob/doc/Makefile f +lib/glob/doc/glob.texi f +lib/glob/ndir.h f +lib/intl/ChangeLog f +lib/intl/Makefile.in f +lib/intl/VERSION f +lib/intl/bindtextdom.c f +lib/intl/config.charset f +lib/intl/dcgettext.c f +lib/intl/dcigettext.c f +lib/intl/dcngettext.c f +lib/intl/dgettext.c f +lib/intl/dngettext.c f +lib/intl/eval-plural.h f +lib/intl/explodename.c f +lib/intl/finddomain.c f +lib/intl/gettext.c f +lib/intl/gettextP.h f +lib/intl/gmo.h f +lib/intl/hash-string.h f +lib/intl/intl-compat.c f +lib/intl/l10nflist.c f +lib/intl/libgnuintl.h.in f +lib/intl/loadinfo.h f +lib/intl/loadmsgcat.c f +lib/intl/localcharset.c f +lib/intl/localcharset.h f +lib/intl/locale.alias f +lib/intl/localealias.c f +lib/intl/localename.c f +lib/intl/log.c f +lib/intl/ngettext.c f +lib/intl/os2compat.c f +lib/intl/os2compat.h f +lib/intl/osdep.c f +lib/intl/plural-exp.c f +lib/intl/plural-exp.h f +lib/intl/plural.c f +lib/intl/plural.y f +lib/intl/ref-add.sin f +lib/intl/ref-del.sin f +lib/intl/relocatable.c f +lib/intl/relocatable.h f +lib/intl/textdomain.c f +lib/malloc/Makefile.in f +lib/malloc/getpagesize.h f +lib/malloc/imalloc.h f +lib/malloc/mstats.h f +lib/malloc/shmalloc.h f +lib/malloc/table.h f +lib/malloc/watch.h f +lib/malloc/alloca.c f +lib/malloc/malloc.c f +lib/malloc/stats.c f +lib/malloc/table.c f +lib/malloc/trace.c f +lib/malloc/watch.c f +lib/malloc/xmalloc.c f +lib/malloc/xleaktrace f 755 +lib/malloc/stub.c f +lib/malloc/i386-alloca.s f +lib/malloc/x386-alloca.s f +lib/readline/COPYING f +lib/readline/Makefile.in f +lib/readline/ChangeLog f +lib/readline/README f +lib/readline/STANDALONE f +lib/readline/readline.c f +lib/readline/vi_mode.c f +lib/readline/emacs_keymap.c f +lib/readline/vi_keymap.c f +lib/readline/history.c f +lib/readline/histexpand.c f +lib/readline/histsearch.c f +lib/readline/histfile.c f +lib/readline/funmap.c f +lib/readline/keymaps.c f +lib/readline/util.c f +lib/readline/terminal.c f +lib/readline/xmalloc.c f +lib/readline/search.c f +lib/readline/isearch.c f +lib/readline/parens.c f +lib/readline/rltty.c f +lib/readline/compat.c f +lib/readline/complete.c f +lib/readline/bind.c f +lib/readline/display.c f +lib/readline/signals.c f +lib/readline/kill.c f +lib/readline/text.c f +lib/readline/undo.c f +lib/readline/macro.c f +lib/readline/input.c f +lib/readline/callback.c f +lib/readline/mbutil.c f +lib/readline/misc.c f +lib/readline/nls.c f +lib/readline/shell.c f +lib/readline/savestring.c f +lib/readline/tilde.c f +lib/readline/tilde.h f +lib/readline/rldefs.h f +lib/readline/rlconf.h f +lib/readline/rlmbutil.h f +lib/readline/rlshell.h f +lib/readline/rltty.h f +lib/readline/rltypedefs.h f +lib/readline/rlwinsize.h f +lib/readline/readline.h f +lib/readline/tcap.h f +lib/readline/keymaps.h f +lib/readline/history.h f +lib/readline/histlib.h f +lib/readline/chardefs.h f +lib/readline/posixdir.h f +lib/readline/posixjmp.h f +lib/readline/posixstat.h f +lib/readline/ansi_stdlib.h f +lib/readline/rlstdc.h f +lib/readline/rlprivate.h f +lib/readline/xmalloc.h f +lib/readline/doc/Makefile f +lib/readline/doc/version.texi f +lib/readline/doc/rlman.texi f +lib/readline/doc/rltech.texi f +lib/readline/doc/rluser.texi f +lib/readline/doc/rluserman.texi f +lib/readline/doc/history.texi f +lib/readline/doc/hstech.texi f +lib/readline/doc/hsuser.texi f +lib/readline/doc/fdl.texi f +lib/readline/examples/Makefile f +lib/readline/examples/excallback.c f +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.c f +lib/readline/examples/rlcat.c f +lib/readline/examples/Inputrc f +lib/sh/Makefile.in f +lib/sh/clktck.c f +lib/sh/clock.c f +lib/sh/eaccess.c f +lib/sh/fmtullong.c f +lib/sh/fmtulong.c f +lib/sh/fmtumax.c f +lib/sh/getcwd.c f +lib/sh/getenv.c f +lib/sh/inet_aton.c f +lib/sh/itos.c f +lib/sh/mailstat.c f +lib/sh/makepath.c f +lib/sh/memset.c f +lib/sh/mktime.c f +lib/sh/netconn.c f +lib/sh/netopen.c f +lib/sh/oslib.c f +lib/sh/pathcanon.c f +lib/sh/pathphys.c f +lib/sh/rename.c f +lib/sh/setlinebuf.c f +lib/sh/shmatch.c f +lib/sh/shquote.c f +lib/sh/shtty.c f +lib/sh/snprintf.c f +lib/sh/spell.c f +lib/sh/strcasecmp.c f +lib/sh/strerror.c f +lib/sh/strftime.c f +lib/sh/strindex.c f +lib/sh/stringlist.c f +lib/sh/stringvec.c f +lib/sh/strnlen.c f +lib/sh/strpbrk.c f +lib/sh/strstr.c f +lib/sh/strtod.c f +lib/sh/strtoimax.c f +lib/sh/strtol.c f +lib/sh/strtoll.c f +lib/sh/strtoul.c f +lib/sh/strtoull.c f +lib/sh/strtoumax.c f +lib/sh/strtrans.c f +lib/sh/times.c f +lib/sh/timeval.c f +lib/sh/tmpfile.c f +lib/sh/vprint.c f +lib/sh/winsize.c f +lib/sh/xstrchr.c f +lib/sh/zcatfd.c f +lib/sh/zread.c f +lib/sh/zwrite.c f +lib/termcap/Makefile.in f +lib/termcap/ltcap.h f +lib/termcap/termcap.c f +lib/termcap/termcap.h f +lib/termcap/tparam.c f +lib/termcap/version.c f +lib/termcap/grot/termcap.info f +lib/termcap/grot/termcap.info-1 f +lib/termcap/grot/termcap.info-2 f +lib/termcap/grot/termcap.info-3 f +lib/termcap/grot/termcap.info-4 f +lib/termcap/grot/NEWS f +lib/termcap/grot/INSTALL f +lib/termcap/grot/ChangeLog f +lib/termcap/grot/texinfo.tex f +lib/termcap/grot/termcap.texi f +lib/termcap/grot/Makefile.in f +lib/termcap/grot/configure f +lib/termcap/grot/configure.in f +lib/termcap/grot/COPYING f +lib/termcap/grot/README f +lib/tilde/README f +lib/tilde/Makefile.in f +lib/tilde/tilde.c f +lib/tilde/tilde.h f +lib/tilde/shell.c f +po/LINGUAS f +po/Makefile.in.in f +po/Makevars f +po/POTFILES.in f +po/Rules-builtins f +po/Rules-quot f +po/bash.pot f +po/boldquot.sed f +po/en@quot.header f +po/en@boldquot.header f +po/en@quot.po f +po/en@boldquot.po f +po/en@quot.gmo f +po/en@boldquot.gmo f +po/ru.po f +po/ru.gmo f +po/insert-header.sin f +po/quot.sed f +po/remove-potcdate.sin f +CWRU/misc/open-files.c f +CWRU/misc/sigs.c f +CWRU/misc/sigstat.c f +CWRU/misc/bison f +CWRU/misc/errlist.c f +CWRU/misc/hpux10-dlfcn.h f +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 +doc/bashbug.1 f +doc/builtins.1 f +doc/rbash.1 f +doc/README f +doc/INTRO f +doc/texinfo.tex f +doc/bashref.texi f +doc/version.texi f +doc/bashref.info f +doc/article.ms f +doc/htmlpost.sh f 755 +doc/infopost.sh f 755 +doc/fdl.texi f +doc/fdl.txt f +support/Makefile.in f +support/bashversion.c f +support/config.guess f +support/config.rpath f 755 +support/config.sub f +support/printenv.sh f 755 +support/printenv.c f +support/bash.xbm f +support/missing f 755 +support/mkclone f 755 +support/mkconffiles f 755 +support/mkdirs f 755 +support/mkinstalldirs f 755 +support/mkversion.sh f 755 +support/mksignames.c f +support/signames.c f +support/bashbug.sh f +support/man2html.c f +support/recho.c f +support/zecho.c f +support/SYMLINKS f +support/fixlinks f 755 +support/install.sh f 755 +support/texi2dvi f 755 +support/texi2html f 755 +support/xenix-link.sh f 755 +support/shobj-conf f 755 +support/rlvers.sh f 755 +examples/INDEX.txt f +examples/INDEX.html f +examples/bashdb/PERMISSION f +examples/bashdb/README f +examples/bashdb/bashdb f +examples/bashdb/bashdb.el f +examples/obashdb/PERMISSION f +examples/obashdb/README f +examples/obashdb/bashdb f +examples/obashdb/bashdb.fns f +examples/obashdb/bashdb.pre 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/bashcc-1.0.1.tar.gz f +examples/loadables/README f +examples/loadables/template.c f +examples/loadables/Makefile.in f +examples/loadables/necho.c f +examples/loadables/hello.c f +examples/loadables/print.c f +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/finfo.c f +examples/loadables/cat.c f +examples/loadables/cut.c f +examples/loadables/logname.c f +examples/loadables/basename.c f +examples/loadables/dirname.c f +examples/loadables/tty.c f +examples/loadables/pathchk.c f +examples/loadables/tee.c f +examples/loadables/rmdir.c f +examples/loadables/head.c f +examples/loadables/printenv.c f +examples/loadables/push.c f +examples/loadables/id.c f +examples/loadables/whoami.c f +examples/loadables/uname.c f +examples/loadables/sync.c f +examples/loadables/mkdir.c f +examples/loadables/ln.c f +examples/loadables/unlink.c f +examples/loadables/perl/Makefile.in f +examples/loadables/perl/README f +examples/loadables/perl/bperl.c f +examples/loadables/perl/iperl.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/csh-compat f +examples/functions/dirfuncs f +examples/functions/dirname 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/inetaddr f +examples/functions/inpath 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/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/notify.bash 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/substr f +examples/functions/substr2 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/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/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/shprompt f +examples/scripts/spin.bash f +examples/scripts/timeout 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 +examples/startup-files/Bashrc.bfox f +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/misc/aliasconv.sh f +examples/misc/aliasconv.bash f +examples/misc/cshtobash f +tests/README f +tests/alias.tests f +tests/alias.right f +tests/appendop.tests f +tests/appendop.right f +tests/arith-for.tests f +tests/arith-for.right f +tests/arith.tests f +tests/arith.right f +tests/arith1.sub f +tests/arith2.sub f +tests/array.tests f +tests/array.right f +tests/array1.sub f +tests/array2.sub f +tests/array3.sub f +tests/array4.sub f +tests/array-at-star f +tests/array2.right f +tests/braces.tests f +tests/braces.right f +tests/builtins.tests f +tests/builtins.right f +tests/builtins1.sub f +tests/builtins2.sub f +tests/source1.sub f +tests/source2.sub f +tests/source3.sub f +tests/source4.sub f +tests/source5.sub f +tests/cond.tests f +tests/cond.right f +tests/cprint.tests f +tests/cprint.right f +tests/dbg-support.right f +tests/dbg-support.sub f +tests/dbg-support.tests f +tests/dbg-support2.right f +tests/dbg-support2.tests f +tests/dollar-at-star f +tests/dollar-at1.sub f +tests/dollar-at2.sub f +tests/dollar-star1.sub f +tests/dollar-star2.sub f +tests/dollar.right f +tests/dstack.tests f +tests/dstack.right f +tests/dstack2.tests f +tests/dstack2.right f +tests/errors.tests f +tests/errors.right f +tests/execscript f +tests/exec.right f +tests/exec1.sub f 755 +tests/exec2.sub f +tests/exec3.sub f +tests/exec4.sub f +tests/exec5.sub f +tests/exec6.sub f +tests/exec7.sub f +tests/exp-tests f +tests/exp.right f +tests/extglob.tests f +tests/extglob.right f +tests/extglob1.sub f +tests/extglob2.tests f +tests/extglob2.right f +tests/extglob3.tests f +tests/extglob3.right f +tests/func.tests f +tests/func.right f +tests/func1.sub f +tests/func2.sub f +tests/func3.sub f +tests/getopts.tests f +tests/getopts.right f +tests/getopts1.sub f +tests/getopts2.sub f +tests/getopts3.sub f +tests/getopts4.sub f +tests/getopts5.sub f +tests/getopts6.sub f +tests/getopts7.sub f +tests/glob-test f +tests/glob1.sub f +tests/glob.right f +tests/heredoc.tests f +tests/heredoc.right f +tests/herestr.tests f +tests/herestr.right f +tests/histexp.tests f +tests/histexp.right f +tests/history.tests f +tests/history.right f +tests/history.list f 444 +tests/ifs.tests f +tests/ifs.right f +tests/ifs-posix.tests f +tests/ifs-posix.right f +tests/input-line.sh f +tests/input-line.sub f +tests/input.right f +tests/intl.tests f +tests/intl.right f +tests/iquote.tests f +tests/iquote.right f +tests/invert.tests f +tests/invert.right f +tests/jobs.tests f +tests/jobs1.sub f +tests/jobs2.sub f +tests/jobs3.sub f +tests/jobs4.sub f +tests/jobs.right f +tests/more-exp.tests f +tests/more-exp.right f +tests/new-exp.tests f +tests/new-exp1.sub f +tests/new-exp2.sub f +tests/new-exp3.sub f +tests/new-exp4.sub f +tests/new-exp5.sub f +tests/new-exp.right f +tests/nquote.tests f +tests/nquote.right f +tests/nquote1.tests f +tests/nquote1.right f +tests/nquote2.tests f +tests/nquote2.right f +tests/nquote3.tests f +tests/nquote3.right f +tests/nquote4.tests f +tests/nquote4.right f +tests/posix2.tests f +tests/posix2.right f +tests/posixpat.tests f +tests/posixpat.right f +tests/prec.right f +tests/precedence f +tests/printf.tests f +tests/printf.right f +tests/quote.tests f +tests/quote.right f +tests/read.tests f +tests/read.right f +tests/read1.sub f +tests/read2.sub f +tests/read3.sub f +tests/read4.sub f +tests/read5.sub f +tests/redir.tests f +tests/redir.right f +tests/redir1.sub f +tests/redir2.sub f +tests/redir3.sub f +tests/redir3.in1 f +tests/redir3.in2 f +tests/redir4.sub f +tests/redir4.in1 f +tests/redir5.sub f +tests/redir6.sub f +tests/redir7.sub f +tests/rhs-exp.tests f +tests/rhs-exp.right f +tests/rsh.tests f +tests/rsh.right f +tests/run-all f +tests/run-minimal f +tests/run-alias f +tests/run-appendop f +tests/run-arith-for f +tests/run-arith f +tests/run-array f +tests/run-array2 f +tests/run-braces f +tests/run-builtins f +tests/run-cond f +tests/run-cprint f +tests/run-dbg-support f +tests/run-dbg-support2 f +tests/run-dirstack f +tests/run-dollars f +tests/run-errors f +tests/run-execscript f +tests/run-exp-tests f +tests/run-extglob f +tests/run-extglob2 f +tests/run-extglob3 f +tests/run-func f +tests/run-getopts f +tests/run-glob-test f +tests/run-heredoc f +tests/run-herestr f +tests/run-histexpand f +tests/run-history f +tests/run-ifs f +tests/run-ifs-posix f +tests/run-input-test f +tests/run-intl f +tests/run-iquote f +tests/run-invert f +tests/run-jobs f +tests/run-more-exp f +tests/run-new-exp f +tests/run-nquote f +tests/run-nquote1 f +tests/run-nquote2 f +tests/run-nquote3 f +tests/run-nquote4 f +tests/run-posix2 f +tests/run-posixpat f +tests/run-precedence f +tests/run-printf f +tests/run-quote f +tests/run-read f +tests/run-redir f +tests/run-rhs-exp f +tests/run-rsh f +tests/run-set-e f +tests/run-set-x f +tests/run-shopt f +tests/run-strip f +tests/run-test f +tests/run-tilde f +tests/run-tilde2 f +tests/run-trap f +tests/run-type f +tests/run-varenv f +tests/set-e-test f +tests/set-e.right f +tests/set-x.tests f +tests/set-x.right f +tests/shopt.tests f +tests/shopt.right f +tests/strip.tests f +tests/strip.right f +tests/test.tests f +tests/test.right f +tests/tilde.tests f +tests/tilde.right f +tests/tilde2.tests f +tests/tilde2.right f +tests/trap.tests f +tests/trap.right f +tests/trap1.sub f 755 +tests/trap2.sub f 755 +tests/trap2a.sub f 755 +tests/type.tests f +tests/type.right f +tests/varenv.right f +tests/varenv.sh f +tests/varenv1.sub f +tests/varenv2.sub f +tests/version f +tests/version.mini f +tests/misc/dev-tcp.tests f +tests/misc/perf-script f +tests/misc/perftest f +tests/misc/read-nchars.tests f +tests/misc/redir-t2.sh f +tests/misc/run-r2.sh f +tests/misc/sigint-1.sh f +tests/misc/sigint-2.sh f +tests/misc/sigint-3.sh f +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 diff --git a/bash-20060316/MANIFEST.doc b/bash-20060316/MANIFEST.doc new file mode 100644 index 000000000..736ad5b5e --- /dev/null +++ b/bash-20060316/MANIFEST.doc @@ -0,0 +1,24 @@ +# +# Master Manifest file for documentation-only distribution +# +doc d +MANIFEST.doc 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 diff --git a/bash-20060316/Makefile.in b/bash-20060316/Makefile.in new file mode 100644 index 000000000..4882c5267 --- /dev/null +++ b/bash-20060316/Makefile.in @@ -0,0 +1,1457 @@ +# Makefile for bash-3.1, version 2.159 +# +# Copyright (C) 1996-2005 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 2, 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, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +# Make sure the first target in the makefile is the right one +all: .made + +PACKAGE = @PACKAGE_NAME@ +VERSION = @PACKAGE_VERSION@ + +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_VERSION = @PACKAGE_VERSION@ + +# Include some boilerplate Gnu makefile definitions. +prefix = @prefix@ + +exec_prefix = @exec_prefix@ +bindir = @bindir@ +libdir = @libdir@ +infodir = @infodir@ +includedir = @includedir@ +datadir = @datadir@ +localedir = $(datadir)/locale + +mandir = @mandir@ +manpfx = man + +man1ext = .1 +man1dir = $(mandir)/$(manpfx)1 +man3ext = .3 +man3dir = $(mandir)/$(manpfx)3 + +htmldir = @htmldir@ + +# Support an alternate destination root directory for package building +DESTDIR = + +topdir = @top_srcdir@ +BUILD_DIR = @BUILD_DIR@ +top_builddir = @BUILD_DIR@ +srcdir = @srcdir@ +VPATH = .:@srcdir@ + +@SET_MAKE@ +CC = @CC@ +CC_FOR_BUILD = @CC_FOR_BUILD@ +YACC = @YACC@ +SHELL = @MAKE_SHELL@ +CP = cp +RM = rm -f +AR = @AR@ +ARFLAGS = @ARFLAGS@ +RANLIB = @RANLIB@ +SIZE = @SIZE@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALLMODE= -m 0755 +INSTALLMODE2 = -m 0555 + +TESTSCRIPT = @TESTSCRIPT@ + +#If you have purify, and want to use it, uncomment this definition or +# run the make as `make PURIFY=purify' +# or run configure with the --with-purify argument. +PURIFY = @PURIFY@ + +# Here is a rule for making .o files from .c files that does not +# force the type of the machine (like -M_MACHINE) into the flags. +.c.o: + $(RM) $@ + $(CC) $(CCFLAGS) -c $< + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ + +# The name of this program and some version information. +VERSPROG = bashversion$(EXEEXT) +VERSOBJ = bashversion.$(OBJEXT) + +Program = bash$(EXEEXT) +Version = @BASHVERS@ +PatchLevel = `$(BUILD_DIR)/$(VERSPROG) -p` +RELSTATUS = @RELSTATUS@ + +Machine = @host_cpu@ +OS = @host_os@ +VENDOR = @host_vendor@ +MACHTYPE = @host@ + +# comment out for release +DEBUG = @DEBUG@ +MALLOC_DEBUG = @MALLOC_DEBUG@ + +THIS_SH = $(BUILD_DIR)/$(Program) + +# PROFILE_FLAGS is either -pg, to generate profiling info for use +# with gprof, or nothing (the default). +PROFILE_FLAGS= @PROFILE_FLAGS@ + +CFLAGS = @CFLAGS@ +CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ @CROSS_COMPILE@ +CPPFLAGS = @CPPFLAGS@ +CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ +LOCAL_CFLAGS = @LOCAL_CFLAGS@ ${DEBUG} ${MALLOC_DEBUG} +DEFS = @DEFS@ +LOCAL_DEFS = @LOCAL_DEFS@ + +LOCALE_DEFS = -DLOCALEDIR='"$(localedir)"' -DPACKAGE='"$(PACKAGE)"' + +LOCAL_LIBS = @LOCAL_LIBS@ +LIBS = $(BUILTINS_LIB) $(LIBRARIES) @LIBS@ +LIBS_FOR_BUILD = + +STATIC_LD = @STATIC_LD@ +LOCAL_LDFLAGS = @LOCAL_LDFLAGS@ + +SYSTEM_FLAGS = -DPROGRAM='"$(Program)"' -DCONF_HOSTTYPE='"$(Machine)"' -DCONF_OSTYPE='"$(OS)"' -DCONF_MACHTYPE='"$(MACHTYPE)"' -DCONF_VENDOR='"$(VENDOR)"' $(LOCALE_DEFS) + +BASE_CCFLAGS = $(PROFILE_FLAGS) $(SYSTEM_FLAGS) $(LOCAL_DEFS) \ + $(DEFS) $(LOCAL_CFLAGS) $(INCLUDES) + +CCFLAGS = $(BASE_CCFLAGS) $(CPPFLAGS) $(CFLAGS) + +CCFLAGS_FOR_BUILD = $(BASE_CCFLAGS) $(CPPFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) + +LDFLAGS = @LDFLAGS@ $(STATIC_LD) $(LOCAL_LDFLAGS) $(PROFILE_FLAGS) $(CFLAGS) +LDFLAGS_FOR_BUILD = $(LDFLAGS) + +INCLUDES = -I. @RL_INCLUDE@ -I$(srcdir) -I$(BASHINCDIR) -I$(LIBSRC) $(INTL_INC) + +GCC_LINT_FLAGS = -Wall -Wshadow -Wpointer-arith -Wcast-qual \ + -Wcast-align -Wstrict-prototypes -Wconversion \ + -Wmissing-prototypes -Wtraditional -Wredundant-decls -pedantic + +GCC_LINT_CFLAGS = $(BASE_CCFLAGS) $(CPPFLAGS) $(GCC_LINT_FLAGS) + +# +# Support libraries +# + +dot = . + +LIBSUBDIR = lib +LIBSRC = $(srcdir)/$(LIBSUBDIR) + +LIBBUILD = ${BUILD_DIR}/${LIBSUBDIR} + +SUBDIR_INCLUDES = -I. @RL_INCLUDE@ -I$(topdir) -I$(topdir)/$(LIBSUBDIR) + +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ + +# the bash library +# the library is a mix of functions that the C library does not provide on +# some platforms and general shell utility functions +SH_LIBSRC = $(LIBSRC)/sh +SH_LIBDIR = $(dot)/${LIBSUBDIR}/sh +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}/strcasecmp.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 \ + ${SH_LIBSRC}/zread.c ${SH_LIBSRC}/zwrite.c \ + ${SH_LIBSRC}/shtty.c ${SH_LIBSRC}/inet_aton.c \ + ${SH_LIBSRC}/netopen.c ${SH_LIBSRC}/strpbrk.c \ + ${SH_LIBSRC}/timeval.c ${SH_LIBSRC}/clock.c \ + ${SH_LIBSRC}/makepath.c ${SH_LIBSRC}/pathcanon.c \ + ${SH_LIBSRC}/pathphys.c ${SH_LIBSRC}/stringlist.c \ + ${SH_LIBSRC}/stringvec.c ${SH_LIBSRC}/tmpfile.c \ + ${SH_LIBSRC}/spell.c ${SH_LIBSRC}/strtrans.c \ + ${SH_LIBSRC}/strindex.c ${SH_LIBSRC}/shquote.c \ + ${SH_LIBSRC}/snprintf.c ${SH_LIBSRC}/mailstat.c \ + ${SH_LIBSRC}/fmtulong.c ${SH_LIBSRC}/fmtullong.c \ + ${SH_LIBSRC}/strtoll.c ${SH_LIBSRC}/strtoull.c \ + ${SH_LIBSRC}/strtoimax.c ${SH_LIBSRC}/strtoumax.c \ + ${SH_LIBSRC}/fmtumax.c ${SH_LIBSRC}/netconn.c \ + ${SH_LIBSRC}/mktime.c ${SH_LIBSRC}/strftime.c \ + ${SH_LIBSRC}/memset.c ${SH_LIBSRC}/xstrchr.c \ + ${SH_LIBSRC}/zcatfd.c ${SH_LIBSRC}/shmatch.c \ + ${SH_LIBSRC}/strnlen.c ${SH_LIBSRC}/winsize.c \ + ${SH_LIBSRC}/eaccess.c + +SHLIB_LIB = -lsh +SHLIB_LIBNAME = libsh.a +SHLIB_LIBRARY = ${SH_LIBDIR}/${SHLIB_LIBNAME} +SHLIB_LDFLAGS = -L${SH_LIBDIR} +SHLIB_DEP = ${SHLIB_LIBRARY} + +# we assume for now that readline source is being shipped with bash +RL_LIBSRC = $(LIBSRC)/readline +RL_LIBDOC = $(RL_LIBSRC)/doc +RL_LIBDIR = @RL_LIBDIR@ +RL_ABSSRC = ${topdir}/$(RL_LIBDIR) + +RL_INCLUDEDIR = @RL_INCLUDEDIR@ + +READLINE_LIB = @READLINE_LIB@ +READLINE_LIBRARY = $(RL_LIBDIR)/libreadline.a +READLINE_LDFLAGS = -L${RL_LIBDIR} +READLINE_DEP = @READLINE_DEP@ + +# The source, object and documentation of the GNU Readline library. +READLINE_SOURCE = $(RL_LIBSRC)/rldefs.h $(RL_LIBSRC)/rlconf.h \ + $(RL_LIBSRC)/readline.h $(RL_LIBSRC)/tcap.h \ + $(RL_LIBSRC)/chardefs.h $(RL_LIBSRC)/keymaps.h \ + $(RL_LIBSRC)/history.h $(RL_LIBSRC)/histlib.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)/funmap.c $(RL_LIBSRC)/emacs_keymap.c \ + $(RL_LIBSRC)/search.c $(RL_LIBSRC)/vi_keymap.c \ + $(RL_LIBSRC)/keymaps.c $(RL_LIBSRC)/parens.c \ + $(RL_LIBSRC)/vi_mode.c $(RL_LIBSRC)/callback.c \ + $(RL_LIBSRC)/readline.c $(RL_LIBSRC)/tilde.c \ + $(RL_LIBSRC)/rltty.c $(RL_LIBSRC)/complete.c \ + $(RL_LIBSRC)/bind.c $(RL_LIBSRC)/isearch.c \ + $(RL_LIBSRC)/display.c $(RL_LIBSRC)/signals.c \ + $(RL_LIBSRC)/util.c $(RL_LIBSRC)/kill.c $(RL_LIBSRC)/text.c \ + $(RL_LIBSRC)/undo.c $(RL_LIBSRC)/macro.c \ + $(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)/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 + +READLINE_OBJ = $(RL_LIBDIR)/readline.o $(RL_LIBDIR)/funmap.o \ + $(RL_LIBDIR)/parens.o $(RL_LIBDIR)/search.o \ + $(RL_LIBDIR)/keymaps.o $(RL_LIBDIR)/xmalloc.o \ + $(RL_LIBDIR)/rltty.o $(RL_LIBDIR)/complete.o \ + $(RL_LIBDIR)/bind.o $(RL_LIBDIR)/isearch.o \ + $(RL_LIBDIR)/display.o $(RL_LIBDIR)/signals.o \ + $(RL_LIBDIR)/tilde.o $(RL_LIBDIR)/util.o \ + $(RL_LIBDIR)/kill.o $(RL_LIBDIR)/undo.o $(RL_LIBDIR)/nls.o \ + $(RL_LIBDIR)/macro.o $(RL_LIBDIR)/input.o \ + $(RL_LIBDIR)/terminal.o $(RL_LIBDIR)/callback.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 + +HIST_LIBSRC = $(LIBSRC)/readline +HIST_LIBDIR = @HIST_LIBDIR@ +HIST_ABSSRC = ${topdir}/$(HIST_LIBDIR) + +HISTORY_LIB = @HISTORY_LIB@ +HISTORY_LIBRARY = $(HIST_LIBDIR)/libhistory.a +HISTORY_LDFLAGS = -L$(HIST_LIBDIR) +HISTORY_DEP = @HISTORY_DEP@ + +# The source, object and documentation of the history library. +HISTORY_SOURCE = $(HIST_LIBSRC)/history.c $(HIST_LIBSRC)/histexpand.c \ + $(HIST_LIBSRC)/histsearch.c $(HIST_LIBSRC)/histfile.c \ + $(HIST_LIBSRC)/shell.c \ + $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/histlib.h +HISTORY_OBJ = $(HIST_LIBDIR)/history.o $(HIST_LIBDIR)/histexpand.o \ + $(HIST_LIBDIR)/histsearch.o $(HIST_LIBDIR)/histfile.o \ + $(HIST_LIBDIR)/shell.o + +# You only need termcap (or curses) if you are linking with GNU Readline. +TERM_LIBSRC = $(LIBSRC)/termcap +TERM_LIBDIR = $(dot)/$(LIBSUBDIR)/termcap +TERM_ABSSRC = ${topdir}/$(TERM_LIBDIR) + +TERMCAP_LIB = @TERMCAP_LIB@ +TERMCAP_LIBRARY = $(TERM_LIBDIR)/libtermcap.a +TERMCAP_LDFLAGS = -L$(TERM_LIBDIR) +TERMCAP_DEP = @TERMCAP_DEP@ + +TERMCAP_SOURCE = $(TERM_LIBSRC)/termcap.c $(TERM_LIBSRC)/tparam.c +TERMCAP_OBJ = $(TERM_LIBDIR)/termcap.o $(TERM_LIBDIR)/tparam.o + +GLOB_LIBSRC = $(LIBSRC)/glob +GLOB_LIBDIR = $(dot)/$(LIBSUBDIR)/glob +GLOB_ABSSRC = ${topdir}/$(GLOB_LIBDIR) + +GLOB_LIB = -lglob +GLOB_LIBRARY = $(GLOB_LIBDIR)/libglob.a +GLOB_LDFLAGS = -L$(GLOB_LIBDIR) +GLOB_DEP = $(GLOB_LIBRARY) + +GLOB_SOURCE = $(GLOB_LIBSRC)/glob.c $(GLOB_LIBSRC)/strmatch.c \ + $(GLOB_LIBSRC)/smatch.c $(GLOB_LIBSRC)/xmbsrtowcs.c \ + $(GLOB_LIBSRC)/glob_loop.c $(GLOB_LIBSRC)/sm_loop.c \ + $(GLOB_LIBSRC)/glob.h $(GLOB_LIBSRC)/strmatch.h +GLOB_OBJ = $(GLOB_LIBDIR)/glob.o $(GLOB_LIBDIR)/strmatch.o \ + $(GLOB_LIBDIR)/smatch.o $(GLOB_LIBDIR)/xmbsrtowcs.o + +# The source, object and documentation for the GNU Tilde library. +TILDE_LIBSRC = $(LIBSRC)/tilde +TILDE_LIBDIR = $(dot)/$(LIBSUBDIR)/tilde +TILDE_ABSSRC = ${topdir}/$(TILDE_LIBDIR) + +TILDE_LIB = @TILDE_LIB@ +TILDE_LIBRARY = $(TILDE_LIBDIR)/libtilde.a +TILDE_LDFLAGS = -L$(TILDE_LIBDIR) +TILDE_DEP = $(TILDE_LIBRARY) + +TILDE_SOURCE = $(TILDE_LIBSRC)/tilde.c $(TILDE_LIBSRC)/tilde.h +TILDE_OBJ = $(TILDE_LIBDIR)/tilde.o + +# libintl +INTL_LIBSRC = $(LIBSRC)/intl +INTL_LIBDIR = $(dot)/$(LIBSUBDIR)/intl +INTL_ABSSRC = ${topdir}/$(INTL_LIB) +INTL_BUILDDIR = ${LIBBUILD}/intl + +INTL_LIB = @LIBINTL@ +INTL_LIBRARY = $(INTL_LIBDIR)/libintl.a +INTL_DEP = @INTL_DEP@ +INTL_INC = @INTL_INC@ + +LIBINTL_H = @LIBINTL_H@ + +# tests +LIBINTL = @LIBINTL@ +LTLIBINTL = @LTLIBINTL@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ + +# Our malloc. +MALLOC_TARGET = @MALLOC_TARGET@ + +# set to alloca.o if we are using the C alloca in lib/malloc +ALLOCA = @ALLOCA@ + +ALLOC_LIBSRC = $(LIBSRC)/malloc +ALLOC_LIBDIR = $(dot)/$(LIBSUBDIR)/malloc +ALLOC_ABSSRC = ${topdir}/$(ALLOC_LIBDIR) + +MALLOC_SRC = @MALLOC_SRC@ +MALLOC_OTHERSRC = ${ALLOC_LIBSRC}/trace.c ${ALLOC_LIBSRC}/stats.c \ + ${ALLOC_LIBSRC}/table.c ${ALLOC_LIBSRC}/watch.c +MALLOC_SOURCE = ${ALLOC_LIBSRC}/${MALLOC_SRC} ${MALLOC_OTHERSRC} +MALLOC_CFLAGS = -DRCHECK -Dbotch=programming_error ${MALLOC_DEBUG} + +MALLOC_LIB = @MALLOC_LIB@ +MALLOC_LIBRARY = @MALLOC_LIBRARY@ +MALLOC_LDFLAGS = @MALLOC_LDFLAGS@ +MALLOC_DEP = @MALLOC_DEP@ + +ALLOC_HEADERS = $(ALLOC_LIBSRC)/getpagesize.h $(ALLOC_LIBSRC)/shmalloc.h \ + $(ALLOC_LIBSRC)/imalloc.h $(ALLOC_LIBSRC)/mstats.h \ + $(ALLOC_LIBSRC)/table.h $(ALLOC_LIBSRC)/watch.h + +$(MALLOC_LIBRARY): ${MALLOC_SOURCE} ${ALLOC_HEADERS} config.h + @(cd $(ALLOC_LIBDIR) && \ + $(MAKE) $(MFLAGS) \ + MALLOC_CFLAGS="$(MALLOC_CFLAGS)" ${MALLOC_TARGET} ) || exit 1 + +BASHINCDIR = ${srcdir}/include +BASHINCFILES = $(BASHINCDIR)/posixstat.h $(BASHINCDIR)/ansi_stdlib.h \ + $(BASHINCDIR)/filecntl.h $(BASHINCDIR)/posixdir.h \ + $(BASHINCDIR)/memalloc.h $(BASHINCDIR)/stdc.h \ + $(BASHINCDIR)/posixjmp.h $(BASHINCDIR)/posixwait.h \ + $(BASHINCDIR)/posixtime.h $(BASHINCDIR)/systimes.h \ + $(BASHINCDIR)/unionwait.h $(BASHINCDIR)/maxpath.h \ + $(BASHINCDIR)/shtty.h $(BASHINCDIR)/typemax.h \ + $(BASHINCDIR)/ocache.h + +LIBRARIES = $(SHLIB_LIB) $(READLINE_LIB) $(HISTORY_LIB) $(TERMCAP_LIB) $(GLOB_LIB) \ + $(TILDE_LIB) $(MALLOC_LIB) $(INTL_LIB) $(LOCAL_LIBS) + +LIBDEP = $(SHLIB_DEP) $(INTL_DEP) $(READLINE_DEP) $(HISTORY_DEP) $(TERMCAP_DEP) $(GLOB_DEP) \ + $(TILDE_DEP) $(MALLOC_DEP) + +LIBRARY_LDFLAGS = $(READLINE_LDFLAGS) $(HISTORY_LDFLAGS) $(GLOB_LDFLAGS) \ + $(TILDE_LDFLAGS) $(MALLOC_LDFLAGS) $(SHLIB_LDFLAGS) + +# +# The shell itself +# + +# The main source code for the Bourne Again SHell. +CSOURCES = shell.c eval.c parse.y general.c make_cmd.c print_cmd.c y.tab.c \ + dispose_cmd.c execute_cmd.c variables.c $(GLOBC) version.c \ + expr.c copy_cmd.c flags.c subst.c hashcmd.c hashlib.c mailcheck.c \ + test.c trap.c alias.c jobs.c nojobs.c $(ALLOC_FILES) braces.c \ + input.c bashhist.c array.c arrayfunc.c sig.c pathexp.c \ + unwind_prot.c siglist.c bashline.c bracecomp.c error.c \ + list.c stringlib.c locale.c findcmd.c redir.c \ + pcomplete.c pcomplib.c syntax.c xmalloc.c + +HSOURCES = shell.h flags.h trap.h hashcmd.h hashlib.h jobs.h builtins.h \ + general.h variables.h config.h $(ALLOC_HEADERS) alias.h \ + quit.h unwind_prot.h syntax.h ${GRAM_H} \ + command.h input.h error.h bashansi.h dispose_cmd.h make_cmd.h \ + subst.h externs.h siglist.h bashhist.h bashline.h bashtypes.h \ + array.h arrayfunc.h sig.h mailcheck.h bashintl.h bashjmp.h \ + execute_cmd.h parser.h pathexp.h pathnames.h pcomplete.h \ + $(BASHINCFILES) + +SOURCES = $(CSOURCES) $(HSOURCES) $(BUILTIN_DEFS) + +# header files chosen based on running of configure +SIGNAMES_H = @SIGNAMES_H@ + +# object files chosen based on running of configure +JOBS_O = @JOBS_O@ +SIGLIST_O = @SIGLIST_O@ +SIGNAMES_O = @SIGNAMES_O@ + +# Matching object files. +OBJECTS = shell.o eval.o y.tab.o general.o make_cmd.o print_cmd.o $(GLOBO) \ + dispose_cmd.o execute_cmd.o variables.o copy_cmd.o error.o \ + expr.o flags.o $(JOBS_O) subst.o hashcmd.o hashlib.o mailcheck.o \ + trap.o input.o unwind_prot.o pathexp.o sig.o test.o version.o \ + alias.o array.o arrayfunc.o braces.o bracecomp.o bashhist.o \ + bashline.o $(SIGLIST_O) list.o stringlib.o locale.o findcmd.o redir.o \ + pcomplete.o pcomplib.o syntax.o xmalloc.o $(SIGNAMES_O) + +# Where the source code of the shell builtins resides. +BUILTIN_SRCDIR=$(srcdir)/builtins +DEFSRC=$(BUILTIN_SRCDIR) +BUILTIN_ABSSRC=${topdir}/builtins +DEFDIR = $(dot)/builtins +DEBUGGER_DIR = $(dot)/debugger + +BUILTIN_DEFS = $(DEFSRC)/alias.def $(DEFSRC)/bind.def $(DEFSRC)/break.def \ + $(DEFSRC)/builtin.def $(DEFSRC)/cd.def $(DEFSRC)/colon.def \ + $(DEFSRC)/command.def ${DEFSRC}/complete.def \ + $(DEFSRC)/caller.def $(DEFSRC)/declare.def \ + $(DEFSRC)/echo.def $(DEFSRC)/enable.def $(DEFSRC)/eval.def \ + $(DEFSRC)/exec.def $(DEFSRC)/exit.def $(DEFSRC)/fc.def \ + $(DEFSRC)/fg_bg.def $(DEFSRC)/hash.def $(DEFSRC)/help.def \ + $(DEFSRC)/history.def $(DEFSRC)/jobs.def $(DEFSRC)/kill.def \ + $(DEFSRC)/let.def $(DEFSRC)/read.def $(DEFSRC)/return.def \ + $(DEFSRC)/set.def $(DEFSRC)/setattr.def $(DEFSRC)/shift.def \ + $(DEFSRC)/source.def $(DEFSRC)/suspend.def $(DEFSRC)/test.def \ + $(DEFSRC)/times.def $(DEFSRC)/trap.def $(DEFSRC)/type.def \ + $(DEFSRC)/ulimit.def $(DEFSRC)/umask.def $(DEFSRC)/wait.def \ + $(DEFSRC)/getopts.def $(DEFSRC)/reserved.def \ + $(DEFSRC)/pushd.def $(DEFSRC)/shopt.def $(DEFSRC)/printf.def +BUILTIN_C_SRC = $(DEFSRC)/mkbuiltins.c $(DEFSRC)/common.c \ + $(DEFSRC)/evalstring.c $(DEFSRC)/evalfile.c \ + $(DEFSRC)/bashgetopt.c $(GETOPT_SOURCE) +BUILTIN_C_OBJ = $(DEFDIR)/common.o $(DEFDIR)/evalstring.o \ + $(DEFDIR)/evalfile.o $(DEFDIR)/bashgetopt.o +BUILTIN_OBJS = $(DEFDIR)/alias.o $(DEFDIR)/bind.o $(DEFDIR)/break.o \ + $(DEFDIR)/builtin.o $(DEFDIR)/cd.o $(DEFDIR)/colon.o \ + $(DEFDIR)/command.o $(DEFDIR)/caller.o $(DEFDIR)/declare.o \ + $(DEFDIR)/echo.o $(DEFDIR)/enable.o $(DEFDIR)/eval.o \ + $(DEFDIR)/exec.o $(DEFDIR)/exit.o $(DEFDIR)/fc.o \ + $(DEFDIR)/fg_bg.o $(DEFDIR)/hash.o $(DEFDIR)/help.o \ + $(DEFDIR)/history.o $(DEFDIR)/jobs.o $(DEFDIR)/kill.o \ + $(DEFDIR)/let.o $(DEFDIR)/pushd.o $(DEFDIR)/read.o \ + $(DEFDIR)/return.o $(DEFDIR)/shopt.o $(DEFDIR)/printf.o \ + $(DEFDIR)/set.o $(DEFDIR)/setattr.o $(DEFDIR)/shift.o \ + $(DEFDIR)/source.o $(DEFDIR)/suspend.o $(DEFDIR)/test.o \ + $(DEFDIR)/times.o $(DEFDIR)/trap.o $(DEFDIR)/type.o \ + $(DEFDIR)/ulimit.o $(DEFDIR)/umask.o $(DEFDIR)/wait.o \ + $(DEFDIR)/getopts.o $(BUILTIN_C_OBJ) +GETOPT_SOURCE = $(DEFSRC)/getopt.c $(DEFSRC)/getopt.h +PSIZE_SOURCE = $(DEFSRC)/psize.sh $(DEFSRC)/psize.c + +BUILTINS_LIBRARY = $(DEFDIR)/libbuiltins.a +BUILTINS_LIB = -lbuiltins +BUILTINS_LDFLAGS = -L$(DEFDIR) +BUILTINS_DEP = $(BUILTINS_LIBRARY) + +# Documentation for the shell. +DOCSRC = $(srcdir)/doc +DOCDIR = $(dot)/doc + +# Translations and other i18n support files +PO_SRC = $(srcdir)/po/ +PO_DIR = $(dot)/po/ + +SIGNAMES_SUPPORT = $(SUPPORT_SRC)mksignames.c + +SUPPORT_SRC = $(srcdir)/support/ +SDIR = $(dot)/support/ + +TESTS_SUPPORT = recho$(EXEEXT) zecho$(EXEEXT) printenv$(EXEEXT) +CREATED_SUPPORT = signames.h recho$(EXEEXT) zecho$(EXEEXT) printenv$(EXEEXT) \ + tests/recho$(EXEEXT) tests/zecho$(EXEEXT) \ + tests/printenv$(EXEEXT) mksignames$(EXEEXT) lsignames.h \ + mksyntax${EXEEXT} syntax.c $(VERSPROG) $(VERSOBJ) \ + buildversion.o mksignames.o signames.o +CREATED_CONFIGURE = config.h config.cache config.status config.log \ + stamp-h po/POTFILES +CREATED_MAKEFILES = Makefile builtins/Makefile doc/Makefile \ + lib/readline/Makefile lib/glob/Makefile \ + lib/sh/Makefile lib/tilde/Makefile lib/malloc/Makefile \ + lib/termcap/Makefile examples/loadables/Makefile \ + examples/loadables/perl/Makefile support/Makefile \ + lib/intl/Makefile po/Makefile po/Makefile.in + +# Keep GNU Make from exporting the entire environment for small machines. +.NOEXPORT: + +.made: $(Program) bashbug + @echo "$(Program) last made for a $(Machine) running $(OS)" >.made + +$(Program): .build $(OBJECTS) $(BUILTINS_DEP) $(LIBDEP) + $(RM) $@ + $(PURIFY) $(CC) $(BUILTINS_LDFLAGS) $(LIBRARY_LDFLAGS) $(LDFLAGS) -o $(Program) $(OBJECTS) $(LIBS) + ls -l $(Program) + -$(SIZE) $(Program) + +.build: $(SOURCES) config.h Makefile version.h $(VERSPROG) + @echo + @echo " ***********************************************************" + @echo " * *" + @echo " * `$(BUILD_DIR)/$(VERSPROG) -l`" + @echo " * *" + @echo " ***********************************************************" + @echo + +bashbug: $(SUPPORT_SRC)bashbug.sh config.h Makefile $(VERSPROG) + @sed -e "s%!MACHINE!%$(Machine)%" -e "s%!OS!%$(OS)%" \ + -e "s%!CFLAGS!%$(CCFLAGS)%" -e "s%!CC!%$(CC)%" \ + -e "s%!RELEASE!%$(Version)%" -e "s%!PATCHLEVEL!%$(PatchLevel)%" \ + -e "s%!MACHTYPE!%$(MACHTYPE)%" -e "s%!RELSTATUS!%$(RELSTATUS)%" \ + $(SUPPORT_SRC)bashbug.sh > $@ + @chmod a+rx bashbug + +strip: $(Program) .made + strip $(Program) + ls -l $(Program) + -$(SIZE) $(Program) + +lint: + ${MAKE} ${MFLAGS} CFLAGS='${GCC_LINT_FLAGS}' .made + +version.h: $(SOURCES) config.h Makefile + $(SHELL) $(SUPPORT_SRC)mkversion.sh -b -S ${topdir} -s $(RELSTATUS) -d $(Version) -o newversion.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} + +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 +${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 +# -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 + +$(READLINE_LIBRARY): config.h $(READLINE_SOURCE) + @echo making $@ in ${RL_LIBDIR} + @( { test "${RL_LIBDIR}" = "${libdir}" && exit 0; } || \ + cd ${RL_LIBDIR} && $(MAKE) $(MFLAGS) libreadline.a) || exit 1 + +$(HISTORY_LIBRARY): config.h $(HISTORY_SOURCE) + @echo making $@ in ${HIST_LIBDIR} + @( { test "${HIST_LIBDIR}" = "${libdir}" && exit 0; } || \ + cd ${HIST_LIBDIR} && $(MAKE) $(MFLAGS) libhistory.a) || exit 1 + +$(GLOB_LIBRARY): config.h $(GLOB_SOURCE) + @echo making $@ in ${GLOB_LIBDIR} + @(cd ${GLOB_LIBDIR} && \ + $(MAKE) $(MFLAGS) DEBUG=${DEBUG} libglob.a) || exit 1 + +$(TILDE_LIBRARY): config.h $(TILDE_SOURCE) + @echo making $@ in ${TILDE_LIBDIR} + @(cd ${TILDE_LIBDIR} && \ + $(MAKE) $(MFLAGS) libtilde.a) || exit 1 + +$(TERMCAP_LIBRARY): config.h ${TERMCAP_SOURCE} + @echo making $@ in ${TERM_LIBDIR} + @(cd ${TERM_LIBDIR} && \ + $(MAKE) $(MFLAGS) libtermcap.a) || exit 1 + +$(SHLIB_LIBRARY): config.h ${SHLIB_SOURCE} + @echo making $@ in ${SH_LIBDIR} + @(cd ${SH_LIBDIR} && \ + $(MAKE) $(MFLAGS) DEBUG=${DEBUG} ${SHLIB_LIBNAME}) || exit 1 + +${INTL_LIBRARY}: config.h ${INTL_LIBDIR}/Makefile + @echo making $@ in ${INTL_LIBDIR} + @(cd ${INTL_LIBDIR} && \ + $(MAKE) $(MFLAGS) all) || exit 1 + +${LIBINTL_H}: ${INTL_LIBRARY} + +signames.o: $(SUPPORT_SRC)signames.c + $(RM) $@ + $(CC) $(CCFLAGS) -c $(SUPPORT_SRC)signames.c + +buildsignames.o: $(SUPPORT_SRC)signames.c + $(RM) $@ + $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -DBUILDTOOL -o $@ -c $(SUPPORT_SRC)signames.c + +mksignames.o: $(SUPPORT_SRC)mksignames.c + $(RM) $@ + $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -DBUILDTOOL -c $(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} + +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} + +# make a list of signals for the local system -- this is done when we're +# *not* cross-compiling +lsignames.h: mksignames$(EXEEXT) + $(RM) $@ + ./mksignames$(EXEEXT) $@ + +# copy the correct signames header file to signames.h +signames.h: $(SIGNAMES_H) + -if cmp -s $(SIGNAMES_H) $@ ; then :; else $(RM) $@ ; $(CP) $(SIGNAMES_H) $@ ; fi + +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 + +# these require special rules to circumvent make builtin rules +${DEFDIR}/common.o: $(BUILTIN_SRCDIR)/common.c + @(cd $(DEFDIR) && $(MAKE) $(MFLAGS) DEBUG=${DEBUG} common.o) || exit 1 + +${DEFDIR}/bashgetopt.o: $(BUILTIN_SRCDIR)/bashgetopt.c + @(cd $(DEFDIR) && $(MAKE) $(MFLAGS) DEBUG=${DEBUG} bashgetopt.o) || exit 1 + +${DEFDIR}/builtext.h: $(BUILTIN_DEFS) + @(cd $(DEFDIR) && $(MAKE) $(MFLAGS) builtext.h ) || exit 1 + +# For the justification of the following Makefile rules, see node +# `Automatic Remaking' in GNU Autoconf documentation. + +Makefile makefile: config.status $(srcdir)/Makefile.in + CONFIG_FILES=Makefile CONFIG_HEADERS= $(SHELL) ./config.status + +pathnames.h: config.status $(srcdir)/Makefile.in + CONFIG_HEADERS= $(SHELL) ./config.status + +Makefiles makefiles: config.status $(srcdir)/Makefile.in + @for mf in $(CREATED_MAKEFILES); do \ + CONFIG_FILES=$$mf CONFIG_HEADERS= $(SHELL) ./config.status ; \ + done + +config.h: stamp-h + +stamp-h: config.status $(srcdir)/config.h.in $(srcdir)/config-top.h $(srcdir)/config-bot.h + CONFIG_FILES= CONFIG_HEADERS=config.h $(SHELL) ./config.status + +config.status: $(srcdir)/configure + $(SHELL) ./config.status --recheck + +# comment out for distribution +$(srcdir)/configure: $(srcdir)/configure.in $(srcdir)/aclocal.m4 $(srcdir)/config.h.in + cd $(srcdir) && autoconf + +# for chet +reconfig: force + sh $(srcdir)/configure -C + +#newversion: mkversion +# $(RM) .build +# ./mkversion -dir $(srcdir) -dist +# mv -f newversion.h version.h +# $(MAKE) -f $(srcdir)/Makefile $(MFLAGS) srcdir=$(srcdir) + +doc documentation: force + @(cd $(DOCDIR) ; $(MAKE) $(MFLAGS) ) + +info dvi ps: force + @(cd $(DOCDIR) ; $(MAKE) $(MFLAGS) CFLAGS='$(CCFLAGS)' $@ ) + +force: + +tags: $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) + etags $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) + +TAGS: $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) + ctags -x $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) > $@ + +# Targets that actually do things not part of the build + +installdirs: + @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(bindir) + @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(man1dir) + @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(infodir) + -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) + +install: .made installdirs + $(INSTALL_PROGRAM) $(INSTALLMODE) $(Program) $(DESTDIR)$(bindir)/$(Program) + $(INSTALL_SCRIPT) $(INSTALLMODE2) bashbug $(DESTDIR)$(bindir)/bashbug + -( cd $(DOCDIR) ; $(MAKE) $(MFLAGS) \ + man1dir=$(man1dir) man1ext=$(man1ext) \ + man3dir=$(man3dir) man3ext=$(man3ext) \ + infodir=$(infodir) htmldir=$(htmldir) DESTDIR=$(DESTDIR) $@ ) + -( cd $(DEFDIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) + -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) + +install-strip: + $(MAKE) $(MFLAGS) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' \ + prefix=${prefix} exec_prefix=${exec_prefix} \ + DESTDIR=$(DESTDIR) install + +uninstall: .made + $(RM) $(DESTDIR)$(bindir)/$(Program) $(DESTDIR)$(bindir)/bashbug + -( cd $(DOCDIR) ; $(MAKE) $(MFLAGS) \ + man1dir=$(man1dir) man1ext=$(man1ext) \ + man3dir=$(man3dir) man3ext=$(man3ext) \ + infodir=$(infodir) htmldir=$(htmldir) DESTDIR=$(DESTDIR) $@ ) + -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) + +.PHONY: basic-clean clean realclean maintainer-clean distclean mostlyclean maybe-clean + +LIB_SUBDIRS = ${RL_LIBDIR} ${HIST_LIBDIR} ${TERM_LIBDIR} ${GLOB_LIBDIR} \ + ${INTL_LIBDIR} ${TILDE_LIBDIR} ${ALLOC_LIBDIR} ${SH_LIBDIR} + +basic-clean: + $(RM) $(OBJECTS) $(Program) bashbug + $(RM) .build .made version.h + +clean: basic-clean + ( cd $(DOCDIR) && $(MAKE) $(MFLAGS) $@ ) + ( cd builtins && $(MAKE) $(MFLAGS) $@ ) + -( cd $(SDIR) && $(MAKE) $(MFLAGS) $@ ) + -for libdir in ${LIB_SUBDIRS}; do \ + (cd $$libdir && test -f Makefile && $(MAKE) $(MFLAGS) $@) ;\ + done + -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) + $(RM) $(CREATED_SUPPORT) + +mostlyclean: basic-clean + ( cd $(DOCDIR) && $(MAKE) $(MFLAGS) $@ ) + ( cd builtins && $(MAKE) $(MFLAGS) $@ ) + -( cd $(SDIR) && $(MAKE) $(MFLAGS) $@ ) + -for libdir in ${LIB_SUBDIRS}; do \ + (cd $$libdir && test -f Makefile && $(MAKE) $(MFLAGS) $@) ;\ + done + -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) + +distclean: basic-clean maybe-clean + ( cd $(DOCDIR) && $(MAKE) $(MFLAGS) $@ ) + ( cd builtins && $(MAKE) $(MFLAGS) $@ ) + -( cd $(SDIR) && $(MAKE) $(MFLAGS) $@ ) + -for libdir in ${LIB_SUBDIRS}; do \ + (cd $$libdir && test -f Makefile && $(MAKE) $(MFLAGS) $@) ;\ + done + -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) + $(RM) $(CREATED_CONFIGURE) tags TAGS + $(RM) $(CREATED_SUPPORT) Makefile $(CREATED_MAKEFILES) pathnames.h + +maintainer-clean: basic-clean + @echo This command is intended for maintainers to use. + @echo It deletes files that may require special tools to rebuild. + $(RM) y.tab.c y.tab.h parser-built tags TAGS + ( cd $(DOCDIR) && $(MAKE) $(MFLAGS) $@ ) + ( cd builtins && $(MAKE) $(MFLAGS) $@ ) + ( cd $(SDIR) && $(MAKE) $(MFLAGS) $@ ) + -for libdir in ${LIB_SUBDIRS}; do \ + (cd $$libdir && test -f Makefile && $(MAKE) $(MFLAGS) $@) ;\ + done + -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) + $(RM) $(CREATED_CONFIGURE) $(CREATED_MAKEFILES) + $(RM) $(CREATED_SUPPORT) Makefile pathnames.h + +maybe-clean: + -if test "X$(topdir)" != "X$(BUILD_DIR)" ; then \ + $(RM) parser-built y.tab.c y.tab.h ; \ + fi + +recho$(EXEEXT): $(SUPPORT_SRC)recho.c + @$(CC_FOR_BUILD) $(CCFLAGS_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} + +printenv$(EXEEXT): $(SUPPORT_SRC)printenv.c + @$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(SUPPORT_SRC)printenv.c ${LIBS_FOR_BUILD} + +test tests check: force $(Program) $(TESTS_SUPPORT) + @-test -d tests || mkdir tests + @cp $(TESTS_SUPPORT) tests + @( cd $(srcdir)/tests && \ + PATH=$(BUILD_DIR)/tests:$$PATH THIS_SH=$(THIS_SH) $(SHELL) ${TESTSCRIPT} ) + +symlinks: + $(SHELL) $(SUPPORT_SRC)fixlinks -s $(srcdir) + +dist: force + @echo Bash distributions are created using $(srcdir)/support/mkdist. + @echo Here is a sample of the necessary commands: + @echo $(Program) $(srcdir)/support/mkdist -m $(srcdir)/MANIFEST -s $(srcdir) -r ${PACKAGE} $(PACKAGE_VERSION) + @echo tar cf $(PACKAGE)-${PACKAGE_VERSION}.tar ${PACKAGE}-$(PACKAGE_VERSION) + @echo gzip $(PACKAGE)-$(PACKAGE_VERSION).tar + +depend: depends + +depends: force + $(Program) $(SUPPORT_SRC)mkdep -c ${CC} -- ${CCFLAGS} ${CSOURCES} + +#### PRIVATE TARGETS #### +hashtest: hashlib.c + $(CC) -DTEST_HASHING $(CCFLAGS) -o $@ $(srcdir)/hashlib.c + +############################ DEPENDENCIES ############################### + +# Files that depend on the definitions in config-top.h, which are not meant +# to be changed +shell.o: config-top.h +input.o: config-top.h +y.tab.o: config-top.h +jobs.o: config-top.h +nojobs.o: config-top.h +execute_cmd.o: config-top.h +variables.o: config-top.h +builtins/command.o: config-top.h +builtins/common.o: config-top.h +builtins/break.o: config-top.h +builtins/echo.o: config-top.h +builtins/evalstring.o: config-top.h +builtins/exit.o: config-top.h +builtins/kill.o: config-top.h + +# shell basics +copy_cmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +copy_cmd.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +copy_cmd.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +copy_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h +dispose_cmd.o: bashansi.h ${BASHINCDIR}/ansi_stdlib.h +dispose_cmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h +dispose_cmd.o: error.h general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +dispose_cmd.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +dispose_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h +dispose_cmd.o: ${BASHINCDIR}/ocache.h +error.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h flags.h ${BASHINCDIR}/stdc.h error.h +error.o: command.h general.h xmalloc.h externs.h input.h bashhist.h +error.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +error.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +error.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +error.o: make_cmd.h subst.h sig.h pathnames.h externs.h +error.o: input.h execute_cmd.h +eval.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h trap.h flags.h ${DEFSRC}/common.h +eval.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +eval.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +eval.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +eval.o: make_cmd.h subst.h sig.h pathnames.h externs.h +eval.o: input.h execute_cmd.h +execute_cmd.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +execute_cmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +execute_cmd.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +execute_cmd.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +execute_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h +execute_cmd.o: ${BASHINCDIR}/memalloc.h ${GRAM_H} flags.h builtins.h jobs.h quit.h siglist.h +execute_cmd.o: execute_cmd.h findcmd.h redir.h trap.h test.h pathexp.h +execute_cmd.o: $(DEFSRC)/common.h ${DEFDIR}/builtext.h ${GLOB_LIBSRC}/strmatch.h +execute_cmd.o: ${BASHINCDIR}/posixtime.h ${BASHINCDIR}/chartypes.h +expr.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +expr.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +expr.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +expr.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +expr.o: make_cmd.h subst.h sig.h pathnames.h externs.h +expr.o: ${BASHINCDIR}/chartypes.h +findcmd.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h ${BASHINCDIR}/posixstat.h bashansi.h +findcmd.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/memalloc.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h +findcmd.o: ${BASHINCDIR}/stdc.h error.h general.h xmalloc.h variables.h arrayfunc.h conftypes.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h +findcmd.o: dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h externs.h +findcmd.o: flags.h hashlib.h pathexp.h hashcmd.h +findcmd.o: ${BASHINCDIR}/chartypes.h +flags.o: config.h flags.h +flags.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +flags.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +flags.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +flags.o: make_cmd.h subst.h sig.h pathnames.h externs.h bashhist.h +general.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +general.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +general.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +general.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +general.o: make_cmd.h subst.h sig.h pathnames.h externs.h +general.o: ${BASHINCDIR}/maxpath.h ${BASHINCDIR}/posixtime.h +general.o: ${BASHINCDIR}/chartypes.h +hashcmd.o: config.h ${BASHINCDIR}/posixstat.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +hashcmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +hashcmd.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashcmd.h +hashcmd.o: execute_cmd.h findcmd.h ${BASHINCDIR}/stdc.h hashlib.h +hashlib.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +hashlib.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +hashlib.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +hashlib.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +hashlib.o: make_cmd.h subst.h sig.h pathnames.h externs.h +input.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +input.o: command.h ${BASHINCDIR}/stdc.h general.h xmalloc.h input.h error.h externs.h +list.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +list.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +list.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +list.o: make_cmd.h subst.h sig.h pathnames.h externs.h +locale.o: config.h bashtypes.h bashintl.h ${LIBINTL_H} bashansi.h ${BASHINCDIR}/ansi_stdlib.h +locale.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +locale.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +locale.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +locale.o: make_cmd.h subst.h sig.h pathnames.h externs.h +locale.o: ${BASHINCDIR}/chartypes.h +mailcheck.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +mailcheck.o: ${BASHINCDIR}/posixtime.h +mailcheck.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +mailcheck.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +mailcheck.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +mailcheck.o: make_cmd.h subst.h sig.h pathnames.h externs.h +mailcheck.o: execute_cmd.h mailcheck.h +make_cmd.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h bashansi.h +make_cmd.o: command.h ${BASHINCDIR}/stdc.h general.h xmalloc.h error.h flags.h make_cmd.h +make_cmd.o: variables.h arrayfunc.h conftypes.h array.h hashlib.h subst.h input.h externs.h +make_cmd.o: jobs.h quit.h siglist.h syntax.h dispose_cmd.h +make_cmd.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/ocache.h +y.tab.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/memalloc.h +y.tab.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +y.tab.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +y.tab.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +y.tab.o: make_cmd.h subst.h sig.h pathnames.h externs.h test.h +y.tab.o: trap.h flags.h parser.h input.h mailcheck.h $(DEFSRC)/common.h +y.tab.o: $(DEFDIR)/builtext.h bashline.h bashhist.h jobs.h siglist.h alias.h +pathexp.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +pathexp.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +pathexp.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +pathexp.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +pathexp.o: make_cmd.h subst.h sig.h pathnames.h externs.h +pathexp.o: pathexp.h flags.h +pathexp.o: $(GLOB_LIBSRC)/glob.h $(GLOB_LIBSRC)/strmatch.h +pathexp.o: ${BASHINCDIR}/shmbutil.h +print_cmd.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +print_cmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +print_cmd.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +print_cmd.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +print_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h +print_cmd.o: ${GRAM_H} $(DEFSRC)/common.h +redir.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/filecntl.h +redir.o: ${BASHINCDIR}/memalloc.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +redir.o: general.h xmalloc.h variables.h arrayfunc.h conftypes.h array.h hashlib.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h +redir.o: dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h externs.h +redir.o: flags.h execute_cmd.h redir.h input.h +shell.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/filecntl.h +shell.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +shell.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +shell.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +shell.o: make_cmd.h subst.h sig.h pathnames.h externs.h +shell.o: flags.h trap.h mailcheck.h builtins.h $(DEFSRC)/common.h +shell.o: jobs.h siglist.h input.h execute_cmd.h findcmd.h bashhist.h +shell.o: ${GLOB_LIBSRC}/strmatch.h ${BASHINCDIR}/posixtime.h +sig.o: config.h bashtypes.h +sig.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +sig.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +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 +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 +stringlib.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +stringlib.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +stringlib.o: make_cmd.h subst.h sig.h pathnames.h externs.h +stringlib.o: ${GLOB_LIBSRC}/glob.h ${GLOB_LIBSRC}/strmatch.h +subst.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/posixstat.h +subst.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +subst.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +subst.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +subst.o: make_cmd.h subst.h sig.h pathnames.h externs.h +subst.o: flags.h jobs.h siglist.h execute_cmd.h ${BASHINCDIR}/filecntl.h trap.h pathexp.h +subst.o: mailcheck.h input.h $(DEFSRC)/getopt.h $(DEFSRC)/common.h +subst.o: bashline.h bashhist.h ${GLOB_LIBSRC}/strmatch.h +subst.o: ${BASHINCDIR}/chartypes.h +subst.o: ${BASHINCDIR}/shmbutil.h +test.o: bashtypes.h ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h +test.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +test.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +test.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +test.o: make_cmd.h subst.h sig.h pathnames.h externs.h test.h +test.o: ${DEFSRC}/common.h +trap.o: config.h bashtypes.h trap.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +trap.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +trap.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +trap.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +trap.o: make_cmd.h subst.h sig.h pathnames.h externs.h +trap.o: signames.h $(DEFSRC)/common.h +trap.o: ${DEFDIR}/builtext.h +unwind_prot.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h command.h ${BASHINCDIR}/stdc.h +unwind_prot.o: general.h xmalloc.h unwind_prot.h quit.h sig.h +variables.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +variables.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +variables.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +variables.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +variables.o: make_cmd.h subst.h sig.h pathnames.h externs.h +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 +version.o: conftypes.h patchlevel.h version.h +xmalloc.o: config.h bashtypes.h ${BASHINCDIR}/ansi_stdlib.h error.h + +# job control + +jobs.o: config.h bashtypes.h trap.h ${BASHINCDIR}/filecntl.h input.h ${BASHINCDIR}/shtty.h +jobs.o: bashansi.h ${BASHINCDIR}/ansi_stdlib.h +jobs.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +jobs.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +jobs.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +jobs.o: make_cmd.h subst.h sig.h pathnames.h externs.h +jobs.o: jobs.h flags.h $(DEFSRC)/common.h $(DEFDIR)/builtext.h +jobs.o: ${BASHINCDIR}/posixwait.h ${BASHINCDIR}/unionwait.h +jobs.o: ${BASHINCDIR}/posixtime.h +nojobs.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h bashjmp.h ${BASHINCDIR}/posixjmp.h +nojobs.o: command.h ${BASHINCDIR}/stdc.h general.h xmalloc.h jobs.h quit.h siglist.h externs.h +nojobs.o: sig.h error.h ${BASHINCDIR}/shtty.h input.h + +# shell features that may be compiled in + +array.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +array.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +array.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +array.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +array.o: make_cmd.h subst.h sig.h pathnames.h externs.h +array.o: $(DEFSRC)/common.h +arrayfunc.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +arrayfunc.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +arrayfunc.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +arrayfunc.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +arrayfunc.o: make_cmd.h subst.h sig.h pathnames.h externs.h +arrayfunc.o: $(DEFSRC)/common.h +arrayfunc.o: ${BASHINCDIR}/shmbutil.h +braces.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +braces.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +braces.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +braces.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +braces.o: make_cmd.h subst.h sig.h pathnames.h externs.h +braces.o: ${BASHINCDIR}/shmbutil.h +alias.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h command.h ${BASHINCDIR}/stdc.h +alias.o: general.h xmalloc.h bashtypes.h externs.h alias.h +alias.o: pcomplete.h +alias.o: ${BASHINCDIR}/chartypes.h + +pcomplib.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h bashtypes.h +pcomplib.o: ${BASHINCDIR}/stdc.h hashlib.h pcomplete.h shell.h syntax.h +pcomplib.o: bashjmp.h command.h general.h xmalloc.h error.h variables.h arrayfunc.h conftypes.h quit.h +pcomplib.o: unwind_prot.h dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h +pcomplib.o: externs.h ${BASHINCDIR}/maxpath.h + +pcomplete.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h bashtypes.h +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 + +# library support files + +bashhist.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/posixstat.h +bashhist.o: ${BASHINCDIR}/filecntl.h +bashhist.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +bashhist.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +bashhist.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +bashhist.o: make_cmd.h subst.h sig.h pathnames.h externs.h +bashhist.o: flags.h input.h parser.h pathexp.h $(DEFSRC)/common.h bashline.h +bashhist.o: $(GLOB_LIBSRC)/strmatch.h +bashline.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +bashline.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +bashline.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +bashline.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +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 +bracecomp.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +bracecomp.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +bracecomp.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +bracecomp.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +bracecomp.o: make_cmd.h subst.h sig.h pathnames.h externs.h +bracecomp.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h command.h hashlib.h builtins.h general.h xmalloc.h +bracecomp.o: quit.h alias.h config.h variables.h arrayfunc.h conftypes.h +bracecomp.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h + +# library dependencies + +bashline.o: $(RL_LIBSRC)/rlconf.h +bashline.o: $(RL_LIBSRC)/keymaps.h $(RL_LIBSRC)/rlstdc.h +bashline.o: $(RL_LIBSRC)/chardefs.h $(RL_LIBSRC)/readline.h +bracecomp.o: $(RL_LIBSRC)/keymaps.h $(RL_LIBSRC)/chardefs.h +bracecomp.o: $(RL_LIBSRC)/readline.h $(RL_LIBSRC)/rlstdc.h +y.tab.o: $(RL_LIBSRC)/keymaps.h $(RL_LIBSRC)/chardefs.h +y.tab.o: $(RL_LIBSRC)/readline.h $(RL_LIBSRC)/rlstdc.h +subst.o: $(RL_LIBSRC)/keymaps.h $(RL_LIBSRC)/chardefs.h +subst.o: $(RL_LIBSRC)/readline.h $(RL_LIBSRC)/rlstdc.h + +shell.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h +subst.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h +bashline.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h +bashhist.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h +y.tab.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h + +execute_cmd.o: $(TILDE_LIBSRC)/tilde.h +general.o: $(TILDE_LIBSRC)/tilde.h +mailcheck.o: $(TILDE_LIBSRC)/tilde.h +shell.o: $(TILDE_LIBSRC)/tilde.h +subst.o: $(TILDE_LIBSRC)/tilde.h +variables.o: $(TILDE_LIBSRC)/tilde.h + +# libintl dependencies +arrayfunc.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +bashhist.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +bashline.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +braces.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +error.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +eval.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +execute_cmd.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +expr.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +general.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +input.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +jobs.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +mailcheck.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +make_cmd.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +nojobs.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +parse.y: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +pcomplete.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +pcomplib.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +print_cmd.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +redir.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +shell.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +sig.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +siglist.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +subst.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +test.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +trap.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +variables.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +version.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +xmalloc.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h + +signames.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h + +# XXX - dependencies checked through here + +# builtin c sources +builtins/bashgetopt.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +builtins/bashgetopt.o: shell.h syntax.h config.h bashjmp.h command.h general.h xmalloc.h error.h +builtins/bashgetopt.o: variables.h arrayfunc.h conftypes.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +builtins/bashgetopt.o: make_cmd.h subst.h sig.h pathnames.h externs.h +builtins/bashgetopt.o: $(DEFSRC)/common.h +builtins/bashgetopt.o: ${BASHINCDIR}/chartypes.h +builtins/common.o: bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +builtins/common.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h command.h +builtins/common.o: ${BASHINCDIR}/memalloc.h variables.h arrayfunc.h conftypes.h input.h siglist.h +builtins/common.o: quit.h unwind_prot.h ${BASHINCDIR}/maxpath.h jobs.h builtins.h +builtins/common.o: dispose_cmd.h make_cmd.h subst.h externs.h bashhist.h +builtins/common.o: execute_cmd.h ${BASHINCDIR}/stdc.h general.h xmalloc.h error.h pathnames.h +builtins/common.o: ${DEFDIR}/builtext.h +builtins/common.o: ${BASHINCDIR}/chartypes.h +builtins/evalfile.o: bashtypes.h ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +builtins/evalfile.o: shell.h syntax.h config.h bashjmp.h command.h general.h xmalloc.h error.h +builtins/evalfile.o: variables.h arrayfunc.h conftypes.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +builtins/evalfile.o: make_cmd.h subst.h sig.h pathnames.h externs.h +builtins/evalfile.o: jobs.h builtins.h flags.h input.h execute_cmd.h +builtins/evalfile.o: bashhist.h $(DEFSRC)/common.h +builtins/evalstring.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +builtins/evalstring.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h command.h siglist.h +builtins/evalstring.o: ${BASHINCDIR}/memalloc.h variables.h arrayfunc.h conftypes.h input.h +builtins/evalstring.o: quit.h unwind_prot.h ${BASHINCDIR}/maxpath.h jobs.h builtins.h +builtins/evalstring.o: dispose_cmd.h make_cmd.h subst.h externs.h +builtins/evalstring.o: jobs.h builtins.h flags.h input.h execute_cmd.h +builtins/evalstring.o: bashhist.h $(DEFSRC)/common.h +builtins/getopt.o: config.h ${BASHINCDIR}/memalloc.h +builtins/getopt.o: shell.h syntax.h bashjmp.h command.h general.h xmalloc.h error.h +builtins/getopt.o: variables.h arrayfunc.h conftypes.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +builtins/getopt.o: make_cmd.h subst.h sig.h pathnames.h externs.h +builtins/getopt.o: $(DEFSRC)/getopt.h +builtins/mkbuiltins.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h +builtins/mkbuiltins.o: bashansi.h ${BASHINCDIR}/ansi_stdlib.h + +# builtin def files +builtins/alias.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/alias.o: quit.h $(DEFSRC)/common.h +builtins/alias.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h command.h ${BASHINCDIR}/stdc.h unwind_prot.h +builtins/alias.o: dispose_cmd.h make_cmd.h subst.h externs.h variables.h arrayfunc.h conftypes.h +builtins/bind.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/bind.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/bind.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h +builtins/bind.o: $(DEFSRC)/bashgetopt.h +builtins/break.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/break.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h +builtins/break.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/builtin.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/builtin.o: quit.h $(DEFSRC)/common.h $(DEFSRC)/bashgetopt.h +builtins/builtin.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/builtin.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/caller.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/caller.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/caller.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/caller.o: $(DEFSRC)/common.h quit.h +builtins/caller.o: ${BASHINCDIR}/chartypes.h bashtypes.h +builtins/caller.o: ${DEFDIR}/builtext.h +builtins/cd.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/cd.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/cd.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/cd.o: $(DEFSRC)/common.h quit.h +builtins/command.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/command.o: quit.h $(DEFSRC)/bashgetopt.h +builtins/command.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/command.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/declare.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/declare.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h +builtins/declare.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/declare.o: $(DEFSRC)/bashgetopt.h +builtins/echo.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/echo.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h +builtins/echo.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/enable.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/enable.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h +builtins/enable.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/enable.o: pcomplete.h +builtins/eval.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/eval.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h +builtins/eval.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/exec.o: bashtypes.h +builtins/exec.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/exec.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/exec.o: dispose_cmd.h make_cmd.h subst.h externs.h execute_cmd.h +builtins/exec.o: findcmd.h flags.h quit.h $(DEFSRC)/common.h ${BASHINCDIR}/stdc.h +builtins/exit.o: bashtypes.h +builtins/exit.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/exit.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h +builtins/exit.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/fc.o: bashtypes.h ${BASHINCDIR}/posixstat.h +builtins/fc.o: bashansi.h ${BASHINCDIR}/ansi_stdlib.h builtins.h command.h ${BASHINCDIR}/stdc.h +builtins/fc.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/fc.o: flags.h unwind_prot.h variables.h arrayfunc.h conftypes.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h +builtins/fc.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h quit.h +builtins/fc.o: $(DEFSRC)/bashgetopt.h bashhist.h +builtins/fc.o: ${BASHINCDIR}/chartypes.h +builtins/fg_bg.o: bashtypes.h $(DEFSRC)/bashgetopt.h +builtins/fg_bg.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/fg_bg.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h +builtins/fg_bg.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/getopts.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/getopts.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h +builtins/getopts.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/hash.o: bashtypes.h +builtins/hash.o: builtins.h command.h findcmd.h ${BASHINCDIR}/stdc.h $(DEFSRC)/common.h +builtins/hash.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/hash.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h +builtins/help.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/help.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/help.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h +builtins/help.o: $(GLOB_LIBSRC)/glob.h +builtins/history.o: bashtypes.h +builtins/history.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/history.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/history.o: ${BASHINCDIR}/filecntl.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h +builtins/history.o: bashhist.h variables.h arrayfunc.h conftypes.h +builtins/inlib.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/inlib.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h +builtins/inlib.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/jobs.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/jobs.o: quit.h $(DEFSRC)/bashgetopt.h +builtins/jobs.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/jobs.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/kill.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/kill.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/kill.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h trap.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/let.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/let.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/let.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/printf.o: config.h ${BASHINCDIR}/memalloc.h bashjmp.h command.h error.h +builtins/printf.o: general.h xmalloc.h quit.h dispose_cmd.h make_cmd.h subst.h +builtins/printf.o: externs.h sig.h pathnames.h shell.h syntax.h unwind_prot.h +builtins/printf.o: variables.h arrayfunc.h conftypes.h ${BASHINCDIR}/stdc.h $(DEFSRC)/bashgetopt.h +builtins/printf.o: ${BASHINCDIR}/chartypes.h +builtins/pushd.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/pushd.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/pushd.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/pushd.o: $(DEFSRC)/common.h +builtins/read.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/read.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/read.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/return.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/return.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/return.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/set.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/set.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/set.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h flags.h +builtins/setattr.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/setattr.o: quit.h $(DEFSRC)/common.h $(DEFSRC)/bashgetopt.h +builtins/setattr.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/setattr.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/shift.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/shift.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/shift.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/shift.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/shopt.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.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 +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 +builtins/source.o: findcmd.h $(DEFSRC)/bashgetopt.h flags.h trap.h +builtins/suspend.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/suspend.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/suspend.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/test.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/test.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/test.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/test.o: test.h +builtins/times.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/times.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/times.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/trap.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/trap.o: quit.h $(DEFSRC)/common.h +builtins/trap.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/trap.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/type.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/type.o: quit.h $(DEFSRC)/common.h findcmd.h +builtins/type.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/type.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/ulimit.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/ulimit.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/ulimit.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/umask.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/umask.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/umask.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/umask.o: ${BASHINCDIR}/chartypes.h +builtins/wait.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/wait.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/wait.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/wait.o: ${BASHINCDIR}/chartypes.h + +builtins/complete.o: config.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h +builtins/complete.o: unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/complete.o: bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +builtins/complete.o: builtins.h +builtins/complete.o: pcomplete.h +builtins/complete.o: ${DEFSRC}/common.h ${DEFSRC}/bashgetopt.h + +# libintl dependencies +builtins/bind.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/break.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/caller.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/cd.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/common.c: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/complete.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/declare.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/enable.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/evalfile.c: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/exec.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/exit.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/fc.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/fg_bg.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/getopt.c: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/hash.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/help.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/history.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/inlib.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/jobs.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/kill.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/let.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/mkbuiltins.c: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/printf.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/pushd.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/read.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/return.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/set.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/setattr.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/shift.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/shopt.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/source.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/suspend.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/type.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/ulimit.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/umask.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h + +# builtin library dependencies +builtins/bind.o: $(RL_LIBSRC)/chardefs.h $(RL_LIBSRC)/readline.h +builtins/bind.o: $(RL_LIBSRC)/keymaps.h $(RL_LIBSRC)/rlstdc.h + +builtins/bind.o: $(HIST_LIBSRC)/history.h $(RL_LIBSRC)/rlstdc.h +builtins/fc.o: $(HIST_LIBSRC)/history.h $(RL_LIBSRC)/rlstdc.h +builtins/history.o: $(HIST_LIBSRC)/history.h $(RL_LIBSRC)/rlstdc.h + +builtins/common.o: $(TILDE_LIBSRC)/tilde.h +builtins/cd.o: $(TILDE_LIBSRC)/tilde.h + +builtins/alias.o: $(DEFSRC)/alias.def +builtins/bind.o: $(DEFSRC)/bind.def +builtins/break.o: $(DEFSRC)/break.def +builtins/builtin.o: $(DEFSRC)/builtin.def +builtins/caller.o: $(DEFSRC)/caller.def +builtins/cd.o: $(DEFSRC)/cd.def +builtins/colon.o: $(DEFSRC)/colon.def +builtins/command.o: $(DEFSRC)/command.def +builtins/complete.o: $(DEFSRC)/complete.def +builtins/declare.o: $(DEFSRC)/declare.def +builtins/echo.o: $(DEFSRC)/echo.def +builtins/enable.o: $(DEFSRC)/enable.def +builtins/eval.o: $(DEFSRC)/eval.def +builtins/exec.o: $(DEFSRC)/exec.def +builtins/exit.o: $(DEFSRC)/exit.def +builtins/fc.o: $(DEFSRC)/fc.def +builtins/fg_bg.o: $(DEFSRC)/fg_bg.def +builtins/getopts.o: $(DEFSRC)/getopts.def +builtins/hash.o: $(DEFSRC)/hash.def +builtins/help.o: $(DEFSRC)/help.def +builtins/history.o: $(DEFSRC)/history.def +builtins/inlib.o: $(DEFSRC)/inlib.def +builtins/jobs.o: $(DEFSRC)/jobs.def +builtins/kill.o: $(DEFSRC)/kill.def +builtins/let.o: $(DEFSRC)/let.def +builtins/pushd.o: $(DEFSRC)/pushd.def +builtins/read.o: $(DEFSRC)/read.def +builtins/reserved.o: $(DEFSRC)/reserved.def +builtins/return.o: $(DEFSRC)/return.def +builtins/set.o: $(DEFSRC)/set.def +builtins/setattr.o: $(DEFSRC)/setattr.def +builtins/shift.o: $(DEFSRC)/shift.def +builtins/shopt.o: $(DEFSRC)/shopt.def +builtins/source.o: $(DEFSRC)/source.def +builtins/suspend.o: $(DEFSRC)/suspend.def +builtins/test.o: $(DEFSRC)/test.def +builtins/times.o: $(DEFSRC)/times.def +builtins/trap.o: $(DEFSRC)/trap.def +builtins/type.o: $(DEFSRC)/type.def +builtins/ulimit.o: $(DEFSRC)/ulimit.def +builtins/umask.o: $(DEFSRC)/umask.def +builtins/wait.o: $(DEFSRC)/wait.def diff --git a/bash-20060316/NEWS b/bash-20060316/NEWS new file mode 100644 index 000000000..977d9a335 --- /dev/null +++ b/bash-20060316/NEWS @@ -0,0 +1,1179 @@ +This is a terse description of the new features added to bash-3.1 since +the release of bash-3.0. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. Bash now understands LC_TIME as a special variable so that time display + tracks the current locale. + +b. BASH_ARGC, BASH_ARGV, BASH_SOURCE, and BASH_LINENO are no longer created + as `invisible' variables and may not be unset. + +c. In POSIX mode, if `xpg_echo' option is enabled, the `echo' builtin doesn't + try to interpret any options at all, as POSIX requires. + +d. The `bg' builtin now accepts multiple arguments, as POSIX seems to specify. + +e. Fixed vi-mode word completion and glob expansion to perform tilde + expansion. + +f. The `**' mathematic exponentiation operator is now right-associative. + +g. The `ulimit' builtin has new options: -i (max number of pending signals), + -q (max size of POSIX message queues), and -x (max number of file locks). + +h. A bare `%' once again expands to the current job when used as a job + specifier. + +i. The `+=' assignment operator (append to the value of a string or array) is + now supported for assignment statements and arguments to builtin commands + that accept assignment statements. + +j. BASH_COMMAND now preserves its value when a DEBUG trap is executed. + +k. The `gnu_errfmt' option is enabled automatically if the shell is running + in an emacs terminal window. + +l. New configuration option: --single-help-strings. Causes long help text + to be written as a single string; intended to ease translation. + +m. The COMP_WORDBREAKS variable now causes the list of word break characters + to be emptied when the variable is unset. + +n. An unquoted expansion of $* when $IFS is empty now causes the positional + parameters to be concatenated if the expansion doesn't undergo word + splitting. + +o. Bash now inherits $_ from the environment if it appears there at startup. + +p. New shell option: nocasematch. If non-zero, shell pattern matching ignores + case when used by `case' and `[[' commands. + +q. The `printf' builtin takes a new option: -v var. That causes the output + to be placed into var instead of on stdout. + +r. By default, the shell no longer reports processes dying from SIGPIPE. + +s. Bash now sets the extern variable `environ' to the export environment it + creates, so C library functions that call getenv() (and can't use the + shell-provided replacement) get current values of environment variables. + +t. A new configuration option, `--enable-strict-posix-default', which will + build bash to be POSIX conforming by default. + +u. If compiled for strict POSIX conformance, LINES and COLUMNS may now + override the true terminal size. + +2. New Features in Readline + +a. The key sequence sent by the keypad `delete' key is now automatically + bound to delete-char. + +b. A negative argument to menu-complete now cycles backward through the + completion list. + +c. A new bindable readline variable: bind-tty-special-chars. If non-zero, + readline will bind the terminal special characters to their readline + equivalents when it's called (on by default). + +d. New bindable command: vi-rubout. Saves deleted text for possible + reinsertion, as with any vi-mode `text modification' command; `X' is bound + to this in vi command mode. + +e. A new external application-controllable variable that allows the LINES + and COLUMNS environment variables to set the window size regardless of + what the kernel returns: rl_prefer_env_winsize + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-3.0 since +the release of bash-2.05b. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. ANSI string expansion now implements the \x{hexdigits} escape. + +b. There is a new loadable `strftime' builtin. + +c. New variable, COMP_WORDBREAKS, which controls the readline completer's + idea of word break characters. + +d. The `type' builtin no longer reports on aliases unless alias expansion + will actually be performed. + +e. HISTCONTROL is now a colon-separated list of values, which permits + more extensibility and backwards compatibility. + +f. HISTCONTROL may now include the `erasedups' option, which causes all lines + matching a line being added to be removed from the history list. + +g. `configure' has a new `--enable-multibyte' argument that permits multibyte + character support to be disabled even on systems that support it. + +h. New variables to support the bash debugger: BASH_ARGC, BASH_ARGV, + BASH_SOURCE, BASH_LINENO, BASH_SUBSHELL, BASH_EXECUTION_STRING, + BASH_COMMAND + +i. FUNCNAME has been changed to support the debugger: it's now an array + variable. + +j. for, case, select, arithmetic commands now keep line number information + for the debugger. + +k. There is a new `RETURN' trap executed when a function or sourced script + returns (not inherited child processes; inherited by command substitution + if function tracing is enabled and the debugger is active). + +l. New invocation option: --debugger. Enables debugging and turns on new + `extdebug' shell option. + +m. New `functrace' and `errtrace' options to `set -o' cause DEBUG and ERR + traps, respectively, to be inherited by shell functions. Equivalent to + `set -T' and `set -E' respectively. The `functrace' option also controls + whether or not the DEBUG trap is inherited by sourced scripts. + +n. The DEBUG trap is run before binding the variable and running the action + list in a `for' command, binding the selection variable and running the + query in a `select' command, and before attempting a match in a `case' + command. + +o. New `--enable-debugger' option to `configure' to compile in the debugger + support code. + +p. `declare -F' now prints out extra line number and source file information + if the `extdebug' option is set. + +q. If `extdebug' is enabled, a non-zero return value from a DEBUG trap causes + the next command to be skipped, and a return value of 2 while in a + function or sourced script forces a `return'. + +r. New `caller' builtin to provide a call stack for the bash debugger. + +s. The DEBUG trap is run just before the first command in a function body is + executed, for the debugger. + +t. `for', `select', and `case' command heads are printed when `set -x' is + enabled. + +u. There is a new {x..y} brace expansion, which is shorthand for {x.x+1, + x+2,...,y}. x and y can be integers or single characters; the sequence + may ascend or descend; the increment is always 1. + +v. New ksh93-like ${!array[@]} expansion, expands to all the keys (indices) + of array. + +w. New `force_fignore' shopt option; if enabled, suffixes specified by + FIGNORE cause words to be ignored when performing word completion even + if they're the only possibilities. + +x. New `gnu_errfmt' shopt option; if enabled, error messages follow the `gnu + style' (filename:lineno:message) format. + +y. New `-o bashdefault' option to complete and compgen; if set, causes the + whole set of bash completions to be performed if the compspec doesn't + result in a match. + +z. New `-o plusdirs' option to complete and compgen; if set, causes directory + name completion to be performed and the results added to the rest of the + possible completions. + +aa. `kill' is available as a builtin even when the shell is built without + job control. + +bb. New HISTTIMEFORMAT variable; value is a format string to pass to + strftime(3). If set and not null, the `history' builtin prints out + timestamp information according to the specified format when displaying + history entries. If set, bash tells the history library to write out + timestamp information when the history file is written. + +cc. The [[ ... ]] command has a new binary `=~' operator that performs + extended regular expression (egrep-like) matching. + +dd. `configure' has a new `--enable-cond-regexp' option (enabled by default) + to enable the =~ operator and regexp matching in [[ ... ]]. + +ee. Subexpressions matched by the =~ operator are placed in the new + BASH_REMATCH array variable. + +ff. New `failglob' option that causes an expansion error when pathname + expansion fails to produce a match. + +gg. New `set -o pipefail' option that causes a pipeline to return a failure + status if any of the processes in the pipeline fail, not just the last + one. + +hh. printf builtin understands two new escape sequences: \" and \?. + +ii. `echo -e' understands two new escape sequences: \" and \?. + +jj. The GNU `gettext' package and libintl have been integrated; the shell's + messages can be translated into different languages. + +kk. The `\W' prompt expansion now abbreviates $HOME as `~', like `\w'. + +ll. The error message printed when bash cannot open a shell script supplied + as argument 1 now includes the name of the shell, to better identify + the error as coming from bash. + +mm. The parameter pattern removal and substitution expansions are now much + faster and more efficient when using multibyte characters. + +nn. The `jobs', `kill', and `wait' builtins now accept job control notation + even if job control is not enabled. + +oo. The historical behavior of `trap' that allows a missing `action' argument + to cause each specified signal's handling to be reset to its default is + now only supported when `trap' is given a single non-option argument. + +2. New Features in Readline + +a. History expansion has a new `a' modifier equivalent to the `g' modifier + for compatibility with the BSD csh. + +b. History expansion has a new `G' modifier equivalent to the BSD csh `g' + modifier, which performs a substitution once per word. + +c. All non-incremental search operations may now undo the operation of + replacing the current line with the history line. + +d. The text inserted by an `a' command in vi mode can be reinserted with + `.'. + +e. New bindable variable, `show-all-if-unmodified'. If set, the readline + completer will list possible completions immediately if there is more + than one completion and partial completion cannot be performed. + +f. There is a new application-callable `free_history_entry()' function. + +g. History list entries now contain timestamp information; the history file + functions know how to read and write timestamp information associated + with each entry. + +h. Four new key binding functions have been added: + + rl_bind_key_if_unbound() + rl_bind_key_if_unbound_in_map() + rl_bind_keyseq_if_unbound() + rl_bind_keyseq_if_unbound_in_map() + +i. New application variable, rl_completion_quote_character, set to any + quote character readline finds before it calls the application completion + function. + +j. New application variable, rl_completion_suppress_quote, settable by an + application completion function. If set to non-zero, readline does not + attempt to append a closing quote to a completed word. + +k. New application variable, rl_completion_found_quote, set to a non-zero + value if readline determines that the word to be completed is quoted. + Set before readline calls any application completion function. + +l. New function hook, rl_completion_word_break_hook, called when readline + needs to break a line into words when completion is attempted. Allows + the word break characters to vary based on position in the line. + +m. New bindable command: unix-filename-rubout. Does the same thing as + unix-word-rubout, but adds `/' to the set of word delimiters. + +n. When listing completions, directories have a `/' appended if the + `mark-directories' option has been enabled. + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-2.05b since +the release of bash-2.05a. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. If set, TMOUT is the default timeout for the `read' builtin. + +b. `type' has two new options: `-f' suppresses shell function lookup, and + `-P' forces a $PATH search. + +c. New code to handle multibyte characters. + +d. `select' was changed to be more ksh-compatible, in that the menu is + reprinted each time through the loop only if REPLY is set to NULL. + The previous behavior is available as a compile-time option. + +e. `complete -d' and `complete -o dirnames' now force a slash to be + appended to names which are symlinks to directories. + +f. There is now a bindable edit-and-execute-command readline command, + like the vi-mode `v' command, bound to C-xC-e in emacs mode. + +g. Added support for ksh93-like [:word:] character class in pattern matching. + +h. The $'...' quoting construct now expands \cX to Control-X. + +i. A new \D{...} prompt expansion; passes the `...' to strftime and inserts + the result into the expanded prompt. + +j. The shell now performs arithmetic in the largest integer size the + machine supports (intmax_t), instead of long. + +k. If a numeric argument is supplied to one of the bash globbing completion + functions, a `*' is appended to the word before expansion is attempted. + +l. The bash globbing completion functions now allow completions to be listed + with double tabs or if `show-all-if-ambiguous' is set. + +m. New `-o nospace' option for `complete' and `compgen' builtins; suppresses + readline's appending a space to the completed word. + +n. New `here-string' redirection operator: <<< word. + +o. When displaying variables, function attributes and definitions are shown + separately, allowing them to be re-used as input (attempting to re-use + the old output would result in syntax errors). + +p. There is a new configuration option `--enable-mem-scramble', controls + bash malloc behavior of writing garbage characters into memory at + allocation and free time. + +q. The `complete' and `compgen' builtins now have a new `-s/-A service' + option to complete on names from /etc/services. + +r. `read' has a new `-u fd' option to read from a specified file descriptor. + +s. Fix the completion code so that expansion errors in a directory name + don't cause a longjmp back to the command loop. + +t. Fixed word completion inside command substitution to work a little more + intuitively. + +u. The `printf' %q format specifier now uses $'...' quoting to print the + argument if it contains non-printing characters. + +v. The `declare' and `typeset' builtins have a new `-t' option. When applied + to functions, it causes the DEBUG trap to be inherited by the named + function. Currently has no effect on variables. + +w. The DEBUG trap is now run *before* simple commands, ((...)) commands, + [[...]] conditional commands, and for ((...)) loops. + +x. The expansion of $LINENO inside a shell function is only relative to the + function start if the shell is interactive -- if the shell is running a + script, $LINENO expands to the line number in the script. This is as + POSIX-2001 requires. + +y. The bash debugger in examples/bashdb has been modified to work with the + new DEBUG trap semantics, the command set has been made more gdb-like, + and the changes to $LINENO make debugging functions work better. Code + from Gary Vaughan. + +z. New [n]<&word- and [n]>&word- redirections from ksh93 -- move fds (dup + and close). + +aa. There is a new `-l' invocation option, equivalent to `--login'. + +bb. The `hash' builtin has a new `-l' option to list contents in a reusable + format, and a `-d' option to remove a name from the hash table. + +cc. There is now support for placing the long help text into separate files + installed into ${datadir}/bash. Not enabled by default; can be turned + on with `--enable-separate-helpfiles' option to configure. + +dd. All builtins that take operands accept a `--' pseudo-option, except + `echo'. + +ee. The `echo' builtin now accepts \0xxx (zero to three octal digits following + the `0') in addition to \xxx (one to three octal digits) for SUSv3/XPG6/ + POSIX.1-2001 compliance. + + +2. New Features in Readline + +a. Support for key `subsequences': allows, e.g., ESC and ESC-a to both + be bound to readline functions. Now the arrow keys may be used in vi + insert mode. + +b. When listing completions, and the number of lines displayed is more than + the screen length, readline uses an internal pager to display the results. + This is controlled by the `page-completions' variable (default on). + +c. New code to handle editing and displaying multibyte characters. + +d. The behavior introduced in bash-2.05a of deciding whether or not to + append a slash to a completed name that is a symlink to a directory has + been made optional, controlled by the `mark-symlinked-directories' + variable (default is the 2.05a behavior). + +e. The `insert-comment' command now acts as a toggle if given a numeric + argument: if the first characters on the line don't specify a + comment, insert one; if they do, delete the comment text + +f. New application-settable completion variable: + rl_completion_mark_symlink_dirs, allows an application's completion + function to temporarily override the user's preference for appending + slashes to names which are symlinks to directories. + +g. New function available to application completion functions: + rl_completion_mode, to tell how the completion function was invoked + and decide which argument to supply to rl_complete_internal (to list + completions, etc.). + +h. Readline now has an overwrite mode, toggled by the `overwrite-mode' + bindable command, which could be bound to `Insert'. + +i. New application-settable completion variable: + rl_completion_suppress_append, inhibits appending of + rl_completion_append_character to completed words. + +j. New key bindings when reading an incremental search string: ^W yanks + the currently-matched word out of the current line into the search + string; ^Y yanks the rest of the current line into the search string, + DEL or ^H deletes characters from the search string. + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-2.05a since +the release of bash-2.05. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. Added support for DESTDIR installation root prefix, so you can do a + `make install DESTDIR=bash-root' and do easier binary packaging. + +b. Added support for builtin printf "'" flag character as per latest POSIX + drafts. + +c. Support for POSIX.2 printf(1) length specifiers `j', `t', and `z' (from + ISO C99). + +d. New autoconf macro, RL_LIB_READLINE_VERSION, for use by other applications + (bash doesn't use very much of what it returns). + +e. `set [-+]o nolog' is recognized as required by the latest POSIX drafts, + but ignored. + +f. New read-only `shopt' option: login_shell. Set to non-zero value if the + shell is a login shell. + +g. New `\A' prompt string escape sequence; expands to time in 24 HH:MM format. + +h. New `-A group/-g' option to complete and compgen; does group name + completion. + +i. New `-t' option to `hash' to list hash values for each filename argument. + +j. New [-+]O invocation option to set and unset `shopt' options at startup. + +k. configure's `--with-installed-readline' option now takes an optional + `=PATH' suffix to set the root of the tree where readline is installed + to PATH. + +l. The ksh-like `ERR' trap has been added. The `ERR' trap will be run + whenever the shell would have exited if the -e option were enabled. + It is not inherited by shell functions. + +m. `readonly', `export', and `declare' now print variables which have been + given attributes but not set by assigning a value as just a command and + a variable name (like `export foo') when listing, as the latest POSIX + drafts require. + +n. `bashbug' now requires that the subject be changed from the default. + +o. configure has a new `--enable-largefile' option, like other GNU utilities. + +p. `for' loops now allow empty word lists after `in', like the latest POSIX + drafts require. + +q. The builtin `ulimit' now takes two new non-numeric arguments: `hard', + meaning the current hard limit, and `soft', meaning the current soft + limit, in addition to `unlimited' + +r. `ulimit' now prints the option letter associated with a particular + resource when printing more than one limit. + +s. `ulimit' prints `hard' or `soft' when a value is not `unlimited' but is + one of RLIM_SAVED_MAX or RLIM_SAVED_CUR, respectively. + +t. The `printf' builtin now handles the %a and %A conversions if they're + implemented by printf(3). + +u. The `printf' builtin now handles the %F conversion (just about like %f). + +v. The `printf' builtin now handles the %n conversion like printf(3). The + corresponding argument is the name of a shell variable to which the + value is assigned. + +2. New Features in Readline + +a. Added extern declaration for rl_get_termcap to readline.h, making it a + public function (it was always there, just not in readline.h). + +b. New #defines in readline.h: RL_READLINE_VERSION, currently 0x0402, + RL_VERSION_MAJOR, currently 4, and RL_VERSION_MINOR, currently 2. + +c. New readline variable: rl_readline_version, mirrors RL_READLINE_VERSION. + +d. New bindable boolean readline variable: match-hidden-files. Controls + completion of files beginning with a `.' (on Unix). Enabled by default. + +e. The history expansion code now allows any character to terminate a + `:first-' modifier, like csh. + +f. New bindable variable `history-preserve-point'. If set, the history + code attempts to place the user at the same location on each history + line retrived with previous-history or next-history. + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-2.05 since +the release of bash-2.04. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. Added a new `--init-file' invocation argument as a synonym for `--rcfile', + per the new GNU coding standards. + +b. The /dev/tcp and /dev/udp redirections now accept service names as well as + port numbers. + +c. `complete' and `compgen' now take a `-o value' option, which controls some + of the aspects of that compspec. Valid values are: + + default - perform bash default completion if programmable + completion produces no matches + dirnames - perform directory name completion if programmable + completion produces no matches + filenames - tell readline that the compspec produces filenames, + so it can do things like append slashes to + directory names and suppress trailing spaces + +d. A new loadable builtin, realpath, which canonicalizes and expands symlinks + in pathname arguments. + +e. When `set' is called without options, it prints function defintions in a + way that allows them to be reused as input. This affects `declare' and + `declare -p' as well. This only happens when the shell is not in POSIX + mode, since POSIX.2 forbids this behavior. + +f. Bash-2.05 once again honors the current locale setting when processing + ranges within pattern matching bracket expressions (e.g., [A-Z]). + +2. New Features in Readline + +a. The blink timeout for paren matching is now settable by applications, + via the rl_set_paren_blink_timeout() function. + +b. _rl_executing_macro has been renamed to rl_executing_macro, which means + it's now part of the public interface. + +c. Readline has a new variable, rl_readline_state, which is a bitmap that + encapsulates the current state of the library; intended for use by + callbacks and hook functions. + +d. New application-callable function rl_set_prompt(const char *prompt): + expands its prompt string argument and sets rl_prompt to the result. + +e. New application-callable function rl_set_screen_size(int rows, int cols): + public method for applications to set readline's idea of the screen + dimensions. + +f. New function, rl_get_screen_size (int *rows, int *columns), returns + readline's idea of the screen dimensions. + +g. The timeout in rl_gather_tyi (readline keyboard input polling function) + is now settable via a function (rl_set_keyboard_input_timeout()). + +h. Renamed the max_input_history variable to history_max_entries; the old + variable is maintained for backwards compatibility. + +i. The list of characters that separate words for the history tokenizer is + now settable with a variable: history_word_delimiters. The default + value is as before. + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-2.04 since +the release of bash-2.03. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. The history builtin has a `-d offset' option to delete the history entry + at position `offset'. + +b. The prompt expansion code has two new escape sequences: \j, the number of + active jobs; and \l, the basename of the shell's tty device name. + +c. The `bind' builtin has a new `-x' option to bind key sequences to shell + commands. + +d. There is a new shell option, no_empty_command_completion, which, when + enabled, disables command completion when TAB is typed on an empty line. + +e. The `help' builtin has a `-s' option to just print a builtin's usage + synopsis. + +f. There are several new arithmetic operators: id++, id-- (variable + post-increment/decrement), ++id, --id (variable pre-increment/decrement), + expr1 , expr2 (comma operator). + +g. There is a new ksh-93 style arithmetic for command: + for ((expr1 ; expr2; expr3 )); do list; done + +h. The `read' builtin has a number of new options: + -t timeout only wait timeout seconds for input + -n nchars only read nchars from input instead of a full line + -d delim read until delim rather than newline + -s don't echo input chars as they are read + +i. The redirection code now handles several filenames specially: + /dev/fd/N, /dev/stdin, /dev/stdout, and /dev/stderr, whether or + not they are present in the file system. + +j. The redirection code now recognizes pathnames of the form + /dev/tcp/host/port and /dev/udp/host/port, and tries to open a socket + of the appropriate type to the specified port on the specified host. + +k. The ksh-93 ${!prefix*} expansion, which expands to the names of all + shell variables with prefix PREFIX, has been implemented. + +l. There is a new dynamic variable, FUNCNAME, which expands to the name of + a currently-executing function. Assignments to FUNCNAME have no effect. + +m. The GROUPS variable is no longer readonly; assignments to it are silently + discarded. This means it can be unset. + +n. A new programmable completion facility, with two new builtin commands: + complete and compgen. + +o. configure has a new option, `--enable-progcomp', to compile in the + programmable completion features (enabled by default). + +p. `shopt' has a new option, `progcomp', to enable and disable programmable + completion at runtime. + +q. Unsetting HOSTFILE now clears the list of hostnames used for completion. + +r. configure has a new option, `--enable-bash-malloc', replacing the old + `--with-gnu-malloc' (which is still present for backwards compatibility). + +s. There is a new manual page describing rbash, the restricted shell. + +t. `bashbug' has new `--help' and `--version' options. + +u. `shopt' has a new `xpg_echo' option, which controls the behavior of + `echo' with respect to backslash-escaped characters at runtime. + +v. If NON_INTERACTIVE_LOGIN_SHELLS is defined, all login shells read the + startup files, even if they are not interactive. + +w. The LC_NUMERIC variable is now treated specially, and used to set the + LC_NUMERIC locale category for number formatting, e.g., when `printf' + displays floating-point numbers. + +2. New features in Readline + +a. Parentheses matching is now always compiled into readline, and enabled + or disabled when the value of the `blink-matching-paren' variable is + changed. + +b. MS-DOS systems now use ~/_inputrc as the last-ditch inputrc filename. + +c. MS-DOS systems now use ~/_history as the default history file. + +d. history-search-{forward,backward} now leave the point at the end of the + line when the string to search for is empty, like + {reverse,forward}-search-history. + +e. history-search-{forward,backward} now leave the last history line found + in the readline buffer if the second or subsequent search fails. + +f. New function for use by applications: rl_on_new_line_with_prompt, used + when an application displays the prompt itself before calling readline(). + +g. New variable for use by applications: rl_already_prompted. An application + that displays the prompt itself before calling readline() must set this to + a non-zero value. + +h. A new variable, rl_gnu_readline_p, always 1. The intent is that an + application can verify whether or not it is linked with the `real' + readline library or some substitute. + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-2.03 since +the release of bash-2.02. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. New `shopt' option, `restricted_shell', indicating whether or not the + shell was started in restricted mode, for use in startup files. + +b. Filename generation is now performed on the words between ( and ) in + array assignments (which it probably should have done all along). + +c. OLDPWD is now auto-exported, as POSIX.2 seems to require. + +d. ENV and BASH_ENV are read-only variables in a restricted shell. + +e. A change was made to the startup file code so that any shell begun with + the `--login' option, even non-interactive shells, will source the login + shell startup files. + +2. New Features in Readline + +a. Many changes to the signal handling: + o Readline now catches SIGQUIT and cleans up the tty before returning; + o A new variable, rl_catch_signals, is available to application writers + to indicate to readline whether or not it should install its own + signal handlers for SIGINT, SIGTERM, SIGQUIT, SIGALRM, SIGTSTP, + SIGTTIN, and SIGTTOU; + o A new variable, rl_catch_sigwinch, is available to application + writers to indicate to readline whether or not it should install its + own signal handler for SIGWINCH, which will chain to the calling + applications's SIGWINCH handler, if one is installed; + o There is a new function, rl_free_line_state, for application signal + handlers to call to free up the state associated with the current + line after receiving a signal; + o There is a new function, rl_cleanup_after_signal, to clean up the + display and terminal state after receiving a signal; + o There is a new function, rl_reset_after_signal, to reinitialize the + terminal and display state after an application signal handler + returns and readline continues + +b. There is a new function, rl_resize_terminal, to reset readline's idea of + the screen size after a SIGWINCH. + +c. New public functions: rl_save_prompt and rl_restore_prompt. These were + previously private functions with a `_' prefix. + +d. New function hook: rl_pre_input_hook, called just before readline starts + reading input, after initialization. + +e. New function hook: rl_display_matches_hook, called when readline would + display the list of completion matches. The new function + rl_display_match_list is what readline uses internally, and is available + for use by application functions called via this hook. + +f. New bindable function, delete-char-or-list, like tcsh. + +g. A new variable, rl_erase_empty_line, which, if set by an application using + readline, will cause readline to erase, prompt and all, lines on which the + only thing typed was a newline. + +h. New bindable variable: `isearch-terminators'. + +i. New bindable function: `forward-backward-delete-char' (unbound by default). + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-2.02 since +the release of bash-2.01.1. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. A new version of malloc, based on the older GNU malloc, that has many + changes, is more page-based, is more conservative with memory usage, + and does not `orphan' large blocks when they are freed. + +b. A new version of gmalloc, based on the old GLIBC malloc, with many + changes and range checking included by default. + +c. A new implementation of fnmatch(3) that includes full POSIX.2 Basic + Regular Expression matching, including character classes, collating + symbols, equivalence classes, and support for case-insensitive pattern + matching. + +d. ksh-88 egrep-style extended pattern matching ([@+*?!](patlist)) has been + implemented, controlled by a new `shopt' option, `extglob'. + +e. There is a new ksh-like `[[' compound command, which implements + extended `test' functionality. + +f. There is a new `printf' builtin, implemented according to the POSIX.2 + specification. + +g. There is a new feature for command substitution: $(< filename) now expands + to the contents of `filename', with any trailing newlines removed + (equivalent to $(cat filename)). + +h. There are new tilde prefixes which expand to directories from the + directory stack. + +i. There is a new `**' arithmetic operator to do exponentiation. + +j. There are new configuration options to control how bash is linked: + `--enable-profiling', to allow bash to be profiled with gprof, and + `--enable-static-link', to allow bash to be linked statically. + +k. There is a new configuration option, `--enable-cond-command', which + controls whether or not the `[[' command is included. It is on by + default. + +l. There is a new configuration option, `--enable-extended-glob', which + controls whether or not the ksh extended globbing feature is included. + It is enabled by default. + +m. There is a new configuration #define in config.h.top that, when enabled, + will cause all login shells to source /etc/profile and one of the user- + specific login shell startup files, whether or not the shell is + interactive. + +n. There is a new invocation option, `--dump-po-strings', to dump + a shell script's translatable strings ($"...") in GNU `po' format. + +o. There is a new `shopt' option, `nocaseglob', to enable case-insensitive + pattern matching when globbing filenames and using the `case' construct. + +p. There is a new `shopt' option, `huponexit', which, when enabled, causes + the shell to send SIGHUP to all jobs when an interactive login shell + exits. + +q. `bind' has a new `-u' option, which takes a readline function name as an + argument and unbinds all key sequences bound to that function in a + specified keymap. + +r. `disown' now has `-a' and `-r' options, to limit operation to all jobs + and running jobs, respectively. + +s. The `shopt' `-p' option now causes output to be displayed in a reusable + format. + +t. `test' has a new `-N' option, which returns true if the filename argument + has been modified since it was last accessed. + +u. `umask' now has a `-p' option to print output in a reusable format. + +v. A new escape sequence, `\xNNN', has been added to the `echo -e' and $'...' + translation code. It expands to the character whose ascii code is NNN + in hexadecimal. + +w. The prompt string expansion code has a new `\r' escape sequence. + +x. The shell may now be cross-compiled for the CYGWIN32 environment on + a Unix machine. + +2. New Features in Readline + +a. There is now an option for `iterative' yank-last-arg handline, so a user + can keep entering `M-.', yanking the last argument of successive history + lines. + +b. New variable, `print-completions-horizontally', which causes completion + matches to be displayed across the screen (like `ls -x') rather than up + and down the screen (like `ls'). + +c. New variable, `completion-ignore-case', which causes filename completion + and matching to be performed case-insensitively. + +d. There is a new bindable command, `magic-space', which causes history + expansion to be performed on the current readline buffer and a space to + be inserted into the result. + +e. There is a new bindable command, `menu-complete', which enables tcsh-like + menu completion (successive executions of menu-complete insert a single + completion match, cycling through the list of possible completions). + +f. There is a new bindable command, `paste-from-clipboard', for use on Win32 + systems, to insert the text from the Win32 clipboard into the editing + buffer. + +g. The key sequence translation code now understands printf-style backslash + escape sequences, including \NNN octal escapes. These escape sequences + may be used in key sequence definitions or macro values. + +h. An `$include' inputrc file parser directive has been added. + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-2.01 since +the release of bash-2.0. As always, the manual page (doc/bash.1) is the +place to look for complete descriptions. + +1. New Features in Bash + +a. There is a new builtin array variable: GROUPS, the set of groups to which + the user belongs. This is used by the test suite. + +2. New Features in Readline + +a. If a key sequence bound to `universal-argument' is read while reading a + numeric argument started with `universal-argument', it terminates the + argument but is otherwise ignored. This provides a way to insert multiple + instances of a digit string, and is how GNU emacs does it. + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-2.0 since +the release of bash-1.14.7. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. There is a new invocation option, -D, that dumps translatable strings + in a script. + +b. The `long' invocation options must now be prefixed with `--'. + +c. New long invocation options: --dump-strings, --help, --verbose + +d. The `nolineediting' invocation option was renamed to `noediting'. + +e. The `nobraceexpansion' and `quiet' long invocation options were removed. + +f. The `--help' and `--version' long options now work as the GNU coding + standards specify. + +g. If invoked as `sh', bash now enters posix mode after reading the + startup files, and reads and executes commands from the file named + by $ENV if interactive (as POSIX.2 specifies). A login shell invoked + as `sh' reads $ENV after /etc/profile and ~/.profile. + +h. There is a new reserved word, `time', for timing pipelines, builtin + commands, and shell functions. It uses the value of the TIMEFORMAT + variable as a format string describing how to print the timing + statistics. + +i. The $'...' quoting syntax expands ANSI-C escapes in ... and leaves the + result single-quoted. + +j. The $"..." quoting syntax performs locale-specific translation of ... + and leaves the result double-quoted. + +k. LINENO now works correctly in functions. + +l. New variables: DIRSTACK, PIPESTATUS, BASH_VERSINFO, HOSTNAME, SHELLOPTS, + MACHTYPE. The first three are array variables. + +m. The BASH_VERSION and BASH_VERSINFO variables now include the shell's + `release status' (alpha[N], beta[N], release). + +n. Some variables have been removed: MAIL_WARNING, notify, history_control, + command_oriented_history, glob_dot_filenames, allow_null_glob_expansion, + nolinks, hostname_completion_file, noclobber, no_exit_on_failed_exec, and + cdable_vars. Most of them are now implemented with the new `shopt' + builtin; others were already implemented by `set'. + +o. Bash now uses some new variables: LC_ALL, LC_MESSAGES, LC_CTYPE, + LC_COLLATE, LANG, GLOBIGNORE, HISTIGNORE. + +p. The shell now supports integer-indexed arrays of unlimited length, + with a new compound assignment syntax and changes to the appropriate + builtin commands (declare/typeset, read, readonly, etc.). The array + index may be an arithmetic expression. + +q. ${!var}: indirect variable expansion, equivalent to eval \${$var}. + +r. ${paramter:offset[:length]}: variable substring extraction. + +s. ${parameter/pattern[/[/]string]}: variable pattern substitution. + +t. The $[...] arithmetic expansion syntax is no longer supported, in + favor of $((...)). + +u. Aliases can now be expanded in shell scripts with a shell option + (shopt expand_aliases). + +v. History and history expansion can now be used in scripts with + set -o history and set -H. + +w. All builtins now return an exit status of 2 for incorrect usage. + +x. Interactive shells resend SIGHUP to all running or stopped children + if (and only if) they exit due to a SIGHUP. + +y. New prompting expansions: \a, \e, \H, \T, \@, \v, \V. + +z. Variable expansion in prompt strings is now controllable via a shell + option (shopt promptvars). + +aa. Bash now defaults to using command-oriented history. + +bb. The history file ($HISTFILE) is now truncated to $HISTFILESIZE after + being written. + +cc. The POSIX.2 conditional arithmetic evaluation syntax (expr ? expr : expr) + has been implemented. + +dd. Each builtin now accepts `--' to signify the end of the options, except + as documented (echo, etc.). + +ee. All builtins use -p to display values in a re-readable format where + appropriate, except as documented (echo, type, etc.). + +ff. The `alias' builtin has a new -p option. + +gg. Changes to the `bind' builtin: + o has new options: -psPSVr. + o the `-d' option was renamed to `-p' + o the `-v' option now dumps variables; the old `-v' is now `-P' + +hh. The `bye' synonym for `exit' was removed. + +ii. The -L and -P options to `cd' and `pwd' have been documented. + +jj. The `cd' builtin now does spelling correction on the directory name + by default. This is settable with a shell option (shopt cdspell). + +kk. The `declare' builtin has new options: -a, -F, -p. + +ll. The `dirs' builtin has new options: -c, -p, -v. + +mm. The new `disown' builtin removes jobs from the shell's jobs table + or inhibits the resending of SIGHUP when the shell receives a + SIGHUP. + +nn. The `echo' builtin has a new escape character: \e. + +oo. The `enable' builtin can now load new builtins dynamically from shared + objects on systems with the dlopen/dlsym interface. There are a number + of examples in the examples/loadables directory. There are also + new options: -d, -f, -s, -p. + +pp. The `-all' option to `enable' was removed in favor of `-a'. + +qq. The `exec' builtin has new options: -l, -c, -a. + +rr. The `hash' builtin has a new option: -p. + +ss. The `history' builtin has new options: -c, -p, -s. + +tt. The `jobs' builtin has new options: -r, -s. + +uu. The `kill' builtin has new options: -n signum, -l signame. + +vv. The `pushd' and `popd' builtins have a new option: -n. + +ww. The `read' builtin has new options: -p prompt, -e, -a. + +xx. The `readonly' builtin has a new -a option, and the -n option was removed. + +yy. Changes to the `set' builtin: + o new options: -B, -o keyword, -o onecmd, -o history + o options removed: -l, -d, -o nohash + o options changed: +o, -h, -o hashall + o now displays variables in a format that can be re-read as input + +zz. The new `shopt' builtin controls shell optional behavior previously + done by setting and unsetting certain shell variables. + +aaa. The `test' builtin has new operators: -o option, s1 == s2, s1 < s2, + and s1 > s2, where s1 and s2 are strings. + +bbb. There is a new trap, DEBUG, executed after every simple command. + +ccc. The `trap' builtin has a new -p option. + +ddd. The `ulimit' builtin has a new -l option on 4.4BSD-based systems. + +eee. The PS1, PS2, PATH, and IFS variables may now be unset. + +fff. The restricted shell mode has been expanded and is now documented. + +ggg. Security improvements: + o functions are not imported from the environment if running setuid + or with -p + o no startup files are sourced if running setuid or with -p + +hhh. The documentation has been overhauled: the texinfo manual was + expanded, and HTML versions of the man page and texinfo manual + are included. + +iii. Changes to Posix mode: + o Command lookup now finds special builtins before shell functions. + o Failure of a special builtin causes a non-interactive shell to + exit. Failures are defined in the POSIX.2 specification. + o If the `cd' builtin finds a directory to change to using $CDPATH, + the value assigned to PWD when `cd' completes does not contain + any symbolic links. + o A non-interactive shell exits if a variable assignment error + occurs when no command name follows the assignment statements. + o A non-interactive shell exits if the interation variable in a + `for' statement or the selection variable in a `select' statement + is read-only or another variable assignment error occurs. + o The `<>' redirection operator now opens a file for both stdin and + stdout by default, not just when in posix mode. + o Assignment statements preceding special builtins now persist in + the shell's environment when the builtin completes. + + Posix mode is now completely POSIX.2-compliant (modulo bugs). When + invoked as sh, bash should be completely POSIX.2-compliant. + +jjj. The default value of PS1 is now "\s-\v\$ ". + +kkk. The ksh-like ((...)) arithmetic command syntax has been implemented. + This is exactly equivalent to `let "..."'. + +lll. Integer constants have been extended to base 64. + +mmm. The `ulimit' builtin now sets both hard and soft limits and reports the + soft limit by default. + +2. New Features in Readline + +a. New variables: enable-keypad, input-meta (new name for meta-flag), + mark-directories, visible-stats (now documented), disable-completion, + comment-begin. + +b. New bindable commands: kill-region, copy-region-as-kill, + copy-backward-word, copy-forward-word, set-mark, exchange-point-and-mark, + character-search, character-search-backward, insert-comment, + glob-expand-word, glob-list-expansions, dump-variables, dump-macros. + +c. New emacs keybindings: delete-horizontal-space (M-\), + insert-completions (M-*), possible-completions (M-=). + +d. The history-search-backward and history-search-forward commands were + modified to be the same as previous-line and next-line if point is at + the start of the line. + +e. More file types are available for the visible-stats mode. + +3. Changes of interest in the Bash implementation + +a. There is a new autoconf-based configuration mechanism. + +b. More things have been moved from Posix mode to standard shell behavior. + +c. The trace output (set -x) now inserts quotes where necessary so it can + be reused as input. + +d. There is a compile-time option for a system-wide interactive shell + startup file (disabled by default). + +e. The YACC grammar is smaller and tighter, and all 66 shift-reduce + conflicts are gone. Several parsing bugs have been fixed. + +f. Builtin option parsing has been regularized (using internal_getopt()), + with the exception of `echo', `type', and `set'. + +g. Builtins now return standard usage messages constructed from the + `short doc' used by the help builtin. + +h. Completion now quotes using backslashes by default, but honors + user-supplied quotes. + +i. The GNU libc malloc is available as a configure-time option. + +j. There are more internationalization features; bash uses gettext if + it is available. The $"..." translation syntax uses the current + locale and gettext. + +k. There is better reporting of job termination when the shell is not + interactive. + +l. The shell is somewhat more efficient: it uses a little less memory and + makes fewer system calls. + +4. Changes of interest in the Readline implementation + +a. There is now support for readline `callback' functions. + +b. There is now support for user-supplied input, redisplay, and terminal + preparation functions. + +c. Most of the shell-specific code in readline has been generalized or + removed. + +d. Most of the annoying redisplay bugs have been fixed, notably the problems + with incremental search and excessive redrawing when special characters + appear in the prompt string. + +e. There are new library functions and variables available to application + writers, most having to do with completion and quoting. + +f. The NEWLINE character (^J) is now treated as a search terminator by the + incremental search functions. diff --git a/bash-20060316/NOTES b/bash-20060316/NOTES new file mode 100644 index 000000000..c523752fe --- /dev/null +++ b/bash-20060316/NOTES @@ -0,0 +1,333 @@ +Platform-Specific Configuration and Operation Notes +=================================================== + +1. configure --without-gnu-malloc on: + + alpha running OSF/1, Linux, or NetBSD (malloc needs 8-byte alignment; + bash malloc has 8-byte alignment now, but I have no alphas to test on) + + next running NeXT/OS + + all machines running SunOS YP code: SunOS4, SunOS5, HP/UX, if you + have problems with username completion or tilde expansion for + usernames found via YP/NIS + + linux (optional, but don't do it if you're using Doug Lea's malloc) + + QNX 4.2 + other OSF/1 machines (KSR/1, HP, IBM AIX/ESA) + AIX + sparc SVR4, SVR4.2 (ICL reference port) + DG/UX + Cray + + NetBSD/sparc (malloc needs 8-byte alignment; bash malloc has 8-byte + alignment now, but I have no NetBSD machines to test on) + + BSD/OS 2.1, 3.x if you want to use loadable builtins + + Motorola m68k machines running System V.3. There is a file descriptor + leak caused by using the bash malloc because closedir(3) needs to read + freed memory to find the file descriptor to close + +2. Configure using shlicc2 on BSD/OS 2.1 and BSD/OS 3.x to use loadable + builtins + +3. Bash cannot be built in a directory separate from the source directory + using configure --srcdir=... unless the version of `make' you're using + does $VPATH handling right. The script support/mkclone can be used to + create a `build tree' using symlinks to get around this. + +4. I've had reports that username completion (as well as tilde expansion + and \u prompt expansion) does not work on IRIX 5.3 when linking with + -lnsl. This is only a problem when you're running NIS, since + apparently -lnsl supports only /etc/passwd and not the NIS functions + for retrieving usernames and passwords. Editing the Makefile after + configure runs and removing the `-lnsl' from the assignment to `LIBS' + fixes the problem. + +5. There is a problem with the `makewhatis' script in older (pre-7.0) + versions of Red Hat Linux. Running `makewhatis' with bash-2.0 or + later versions results in error messages like this: + + /usr/sbin/makewhatis: cd: manpath: No such file or directory + /usr/sbin/makewhatis: manpath/whatis: No such file or directory + chmod: manpath/whatis: No such file or directory + /usr/sbin/makewhatis: cd: catpath: No such file or directory + /usr/sbin/makewhatis: catpath/whatis: No such file or directory + chmod: catpath/whatis: No such file or directory + + The problem is with `makewhatis'. Red Hat (and possibly other + Linux distributors) uses a construct like this in the code: + + eval path=$"$pages"path + + to do indirect variable expansion. This `happened to work' in + bash-1.14 and previous versions, but that was more an accident + of implementation than anything else -- it was never supported + and certainly is not portable. + + Bash-2.0 has a new feature that gives a new meaning to $"...". + This is explained more completely in item 1 in the COMPAT file. + + The three lines in the `makewhatis' script that need to be changed + look like this: + + eval $topath=$"$topath":$name + [...] + eval path=$"$pages"path + [...] + eval path=$"$pages"path + + The portable way to write this code is + + eval $topath="\$$topath":$name + eval path="\$$pages"path + eval path="\$$pages"path + + You could also experiment with another new bash feature: ${!var}. + This does indirect variable expansion, making the use of eval + unnecessary. + +6. There is a problem with syslogd on many Linux distributions (Red Hat + and Slackware are two that I have received reports about). syslogd + sends a SIGINT to its parent process, which is waiting for the daemon + to finish its initialization. The parent process then dies due to + the SIGINT, and bash reports it, causing unexpected console output + while the system is booting that looks something like + + starting daemons: syslogd/etc/rc.d/rc.M: line 29: 38 Interrupt ${NET}/syslogd + + Bash-2.0 reports events such as processes dying in scripts due to + signals when the standard output is a tty. Bash-1.14.x and previous + versions did not report such events. + + This should probably be reported as a bug to whatever Linux distributor + people see the problem on. In my opinion, syslogd should be changed to + use some other method of communication, or the wrapper function (which + appeared to be `daemon' when I looked at it some time ago) or script + (which appeared to be `syslog') should catch SIGINT, since it's an + expected event, and exit cleanly. + +7. Several people have reported that `dip' (a program for SLIP/PPP + on Linux) does not work with bash-2.0 installed as /bin/sh. + + I don't run any Linux boxes myself, and do not have the dip + code handy to look at, but the `problem' with bash-2.0, as + it has been related to me, is that bash requires the `-p' + option to be supplied at invocation if it is to run setuid + or setgid. + + This means, among other things, that setuid or setgid programs + which call system(3) (a horrendously bad practice in any case) + relinquish their setuid/setgid status in the child that's forked + to execute /bin/sh. + + The following is an *unofficial* patch to bash-2.0 that causes it + to not require `-p' to run setuid or setgid if invoked as `sh'. + It has been reported to work on Linux. It will make your system + vulnerable to bogus system(3) calls in setuid executables. + +--- ../bash-2.0.orig/shell.c Wed Dec 18 14:16:30 1996 ++++ shell.c Fri Mar 7 13:12:03 1997 +@@ -347,7 +347,7 @@ + if (posixly_correct) + posix_initialize (posixly_correct); + +- if (running_setuid && privileged_mode == 0) ++ if (running_setuid && privileged_mode == 0 && act_like_sh == 0) + disable_priv_mode (); + + /* Need to get the argument to a -c option processed in the + +8. Some people have asked about binding all of the keys in a PC-keyboard- + style numeric keypad to readline functions. Here's something I + received from the gnu-win32 list that may help. Insert the following + lines into ~/.inputrc: + +# home key +"\e[1~":beginning-of-line +# insert key +"\e[2~":kill-whole-line +# del key +"\e[3~":delete-char +# end key +"\e[4~":end-of-line +# pgup key +"\e[5~":history-search-forward +# pgdn key +"\e[6~":history-search-backward + +9. Hints for building under Minix 2.0 (Contributed by Terry R. McConnell, + ) + + The version of /bin/sh distributed with Minix is not up to the job of + running the configure script. The easiest solution is to swap /bin/sh + with /usr/bin/ash. Then use chmem(1) to increase the memory allocated + to /bin/sh. The following settings are known to work: + + text data bss stack memory + 63552 9440 3304 65536 141832 /bin/sh + + If you have problems with make or yacc it may be worthwhile first to + install the GNU versions of these utilities before attempting to build + bash. (As of this writing, all of these utilities are available for the + i386 as pre-built binaries via anonymous ftp at math.syr.edu in the + pub/mcconnell/minix directory. Note that the GNU version of yacc is called + bison.) + + Unless you want to see lots of warnings about old-style declarations, + do LOCAL_CFLAGS=-wo; export LOCAL_CFLAGS before running configure. + (These warnings are harmless, but annoying.) + + configure will insist that you supply a host type. For example, do + ./configure --host=i386-pc-minix. + + Minix does not support the system calls required for a proper + implementation of ulimit(). The `ulimit' builtin will not be available. + + Configure will fail to notice that many things like uid_t are indeed + typedef'd in , because it uses egrep for this purpose + and minix has no egrep. You could try making a link /usr/bin/egrep --> + /usr/bin/grep. Better is to install the GNU version of grep in + /usr/local/bin and make the link /usr/local/bin/egrep -->/usr/local/bin/grep. + (These must be hard links, of course, since Minix does not support + symbolic links.) + + You will see many warnings of the form: + warning: unknown s_type: 98 + I have no idea what this means, but it doesn't seem to matter. + +10. If you do not have /usr/ccs/bin in your PATH when building on SunOS 5.x + (Solaris 2), the configure script will be unable to find `ar' and + `ranlib' (of course, ranlib is unnecessary). Make sure your $PATH + includes /usr/ccs/bin on SunOS 5.x. This generally manifests itself + with libraries not being built and make reporting errors like + `cr: not found' when library construction is attempted. + +11. Building a statically-linked bash on Solaris 2.5.x, 2.6, 7, or 8 is + complicated. + + It's not possible to build a completely statically-linked binary, since + part of the C library depends on dynamic linking. The following recipe + assumes that you're using gcc and the Solaris ld (/usr/ccs/bin/ld) on + Solaris 2.5.x or 2.6: + + configure --enable-static-link + make STATIC_LD= LOCAL_LIBS='-Wl,-B,dynamic -ldl -Wl,-B,static' + + This should result in a bash binary that depends only on libdl.so: + + thor(2)$ ldd bash + libdl.so.1 => /usr/lib/libdl.so.1 + + If you're using the Sun C Compiler (Sun WorkShop C Compiler version + 4.2 was what I used), you should be able to get away with using + + configure --enable-static-link + make STATIC_LD= LOCAL_LIBS='-B dynamic -ldl -B static' + + If you want to completely remove any dependence on /usr, perhaps + to put a copy of bash in /sbin and have it available when /usr is + not mounted, force the build process to use the shared dl.so library + in /etc/lib. + + For gcc, this would be something like + + configure --enable-static-link + make STATIC_LD= LOCAL_LIBS='-Wl,-B,dynamic -Wl,-R/etc/lib -ldl -Wl,-B,static' + + For Sun's WS4.2 cc + + configure --enable-static-link + make STATIC_LD= LOCAL_LIBS='-B dynamic -R/etc/lib -ldl -B static' + + seems to work, at least on Solaris 2.5.1: + + thor(2)$ ldd bash + libdl.so.1 => /etc/lib/libdl.so.1 + + On Solaris 7 (Solaris 8, using the version of gcc on the free software + CD-ROM), the following recipe appears to work for gcc: + + configure --enable-static-link + make STATIC_LD='-Wl,-Bstatic' LOCAL_LIBS='-Wl,-Bdynamic -Wl,-R/etc/lib -ldl -Wl,-Bstatic' + + thor.ins.cwru.edu(2)$ ldd bash + libdl.so.1 => /etc/lib/libdl.so.1 + + Make the analogous changes if you are running Sun's C Compiler. + + I have received word that adding -L/etc/lib (or the equivalent + -Wl,-L/etc/lib) might also be necessary, in addition to the -R/etc/lib. + +12. Configuring bash to build it in a cross environment. Currently only + two native versions can be compiled this way, cygwin32 and x86 BeOS. + For BeOS, you would configure it like this: + + export RANLIB=i586-beos-ranlib + export AR=i586-beos-ar + export CC=i586-beos-gcc + configure i586-beos + + Similarly for cygwin32. + +13. Bash-2.05 has reverted to the bash-2.03 behavior of honoring the current + locale setting when processing ranges within pattern matching bracket + expressions ([A-Z]). This is what POSIX.2 and SUSv2 specify. + + The behavior of the matcher in bash-2.05 depends on the current LC_COLLATE + setting. Setting this variable to `C' or `POSIX' will result in the + traditional behavior ([A-Z] matches all uppercase ASCII characters). + Many other locales, including the en_US locale (the default on many US + versions of Linux) collate the upper and lower case letters like this: + + AaBb...Zz + + which means that [A-Z] matches every letter except `z'. + + The portable way to specify upper case letters is [:upper:] instead of + A-Z; lower case may be specified as [:lower:] instead of a-z. + + Look at the manual pages for setlocale(3), strcoll(3), and, if it is + present, locale(1). If you have locale(1), you can use it to find + your current locale information even if you do not have any of the + LC_ variables set. + + My advice is to put + + export LC_COLLATE=C + + into /etc/profile and inspect any shell scripts run from cron for + constructs like [A-Z]. This will prevent things like + + rm [A-Z]* + + from removing every file in the current directory except those beginning + with `z' and still allow individual users to change the collation order. + Users may put the above command into their own profiles as well, of course. + +14. Building on Interix (nee OpenNT), which Microsoft bought from Softway + Systems and has seemingly abandoned (thanks to Kevin Moore for this item). + + 1. cp cross-build/opennt.cache config.cache + + 2. If desired, edit pathnames.h to set the values of SYS_PROFILE and + DEFAULT_HOSTS_FILE appropriately. + + 3. export CONFIG_SHELL=$INTERIX_ROOT/bin/sh + + 4. ./configure --prefix=$INTERIX_ROOT/usr/local (or wherever you + want it). + + 5. make; make install; enjoy + +15. Configure with `CC=xlc' if you don't have gcc on AIX 4.2 and later + versions. `xlc' running in `cc' mode has trouble compiling error.c. + +16. Configure --disable-multibyte on NetBSD versions (1.4 through at least + 1.6.1) that include wctype.h but do not define wctype_t. + +17. Do NOT use bison-1.75. It builds a non-working parser. The most + obvious effect is that constructs like "for i; do echo $i; done" don't + loop over the positional parameters. diff --git a/bash-20060316/POSIX b/bash-20060316/POSIX new file mode 100644 index 000000000..f8c983ea2 --- /dev/null +++ b/bash-20060316/POSIX @@ -0,0 +1,179 @@ +6.11 Bash POSIX Mode +==================== + +Starting Bash with the `--posix' command-line option or executing `set +-o posix' while Bash is running will cause Bash to conform more closely +to the POSIX 1003.2 standard by changing the behavior to match that +specified by POSIX in areas where the Bash default differs. + +When invoked as `sh', Bash enters POSIX mode after reading the startup +files. + +The following list is what's changed when `POSIX mode' is in effect: + + 1. When a command in the hash table no longer exists, Bash will + re-search `$PATH' to find the new location. This is also + available with `shopt -s checkhash'. + + 2. The message printed by the job control code and builtins when a job + exits with a non-zero status is `Done(status)'. + + 3. The message printed by the job control code and builtins when a job + is stopped is `Stopped(SIGNAME)', where SIGNAME is, for example, + `SIGTSTP'. + + 4. The `bg' builtin uses the required format to describe each job + placed in the background, which does not include an indication of + whether the job is the current or previous job. + + 5. Reserved words appearing in a context where reserved words are + recognized do not undergo alias expansion. + + 6. The POSIX 1003.2 `PS1' and `PS2' expansions of `!' to the history + number and `!!' to `!' are enabled, and parameter expansion is + performed on the values of `PS1' and `PS2' regardless of the + setting of the `promptvars' option. + + 7. The POSIX 1003.2 startup files are executed (`$ENV') rather than + the normal Bash files. + + 8. Tilde expansion is only performed on assignments preceding a + command name, rather than on all assignment statements on the line. + + 9. The default history file is `~/.sh_history' (this is the default + value of `$HISTFILE'). + + 10. The output of `kill -l' prints all the signal names on a single + line, separated by spaces, without the `SIG' prefix. + + 11. The `kill' builtin does not accept signal names with a `SIG' + prefix. + + 12. Non-interactive shells exit if FILENAME in `.' FILENAME is not + found. + + 13. Non-interactive shells exit if a syntax error in an arithmetic + expansion results in an invalid expression. + + 14. Redirection operators do not perform filename expansion on the word + in the redirection unless the shell is interactive. + + 15. Redirection operators do not perform word splitting on the word in + the redirection. + + 16. Function names must be valid shell `name's. That is, they may not + contain characters other than letters, digits, and underscores, and + may not start with a digit. Declaring a function with an invalid + name causes a fatal syntax error in non-interactive shells. + + 17. POSIX 1003.2 special builtins are found before shell functions + during command lookup. + + 18. If a POSIX 1003.2 special builtin returns an error status, a + non-interactive shell exits. The fatal errors are those listed in + the POSIX.2 standard, and include things like passing incorrect + options, redirection errors, variable assignment errors for + assignments preceding the command name, and so on. + + 19. If `CDPATH' is set, the `cd' builtin will not implicitly append + the current directory to it. This means that `cd' will fail if no + valid directory name can be constructed from any of the entries in + `$CDPATH', even if the a directory with the same name as the name + given as an argument to `cd' exists in the current directory. + + 20. A non-interactive shell exits with an error status if a variable + assignment error occurs when no command name follows the assignment + statements. A variable assignment error occurs, for example, when + trying to assign a value to a readonly variable. + + 21. A non-interactive shell exits with an error status if the iteration + variable in a `for' statement or the selection variable in a + `select' statement is a readonly variable. + + 22. Process substitution is not available. + + 23. Assignment statements preceding POSIX 1003.2 special builtins + persist in the shell environment after the builtin completes. + + 24. Assignment statements preceding shell function calls persist in the + shell environment after the function returns, as if a POSIX + special builtin command had been executed. + + 25. The `export' and `readonly' builtin commands display their output + in the format required by POSIX 1003.2. + + 26. The `trap' builtin displays signal names without the leading `SIG'. + + 27. The `trap' builtin doesn't check the first argument for a possible + signal specification and revert the signal handling to the original + disposition if it is, unless that argument consists solely of + digits and is a valid signal number. If users want to reset the + handler for a given signal to the original disposition, they + should use `-' as the first argument. + + 28. The `.' and `source' builtins do not search the current directory + for the filename argument if it is not found by searching `PATH'. + + 29. Subshells spawned to execute command substitutions inherit the + value of the `-e' option from the parent shell. When not in POSIX + mode, Bash clears the `-e' option in such subshells. + + 30. Alias expansion is always enabled, even in non-interactive shells. + + 31. When the `alias' builtin displays alias definitions, it does not + display them with a leading `alias ' unless the `-p' option is + supplied. + + 32. When the `set' builtin is invoked without options, it does not + display shell function names and definitions. + + 33. When the `set' builtin is invoked without options, it displays + variable values without quotes, unless they contain shell + metacharacters, even if the result contains nonprinting characters. + + 34. When the `cd' builtin is invoked in LOGICAL mode, and the pathname + constructed from `$PWD' and the directory name supplied as an + argument does not refer to an existing directory, `cd' will fail + instead of falling back to PHYSICAL mode. + + 35. When the `pwd' builtin is supplied the `-P' option, it resets + `$PWD' to a pathname containing no symlinks. + + 36. The `pwd' builtin verifies that the value it prints is the same as + the current directory, even if it is not asked to check the file + system with the `-P' option. + + 37. When listing the history, the `fc' builtin does not include an + indication of whether or not a history entry has been modified. + + 38. The default editor used by `fc' is `ed'. + + 39. The `type' and `command' builtins will not report a non-executable + file as having been found, though the shell will attempt to + execute such a file if it is the only so-named file found in + `$PATH'. + + 40. The `vi' editing mode will invoke the `vi' editor directly when + the `v' command is run, instead of checking `$FCEDIT' and + `$EDITOR'. + + 41. When the `xpg_echo' option is enabled, Bash does not attempt to + interpret any arguments to `echo' as options. Each argument is + displayed, after escape characters are converted. + + +There is other POSIX 1003.2 behavior that Bash does not implement by +default even when in POSIX mode. Specifically: + + 1. The `fc' builtin checks `$EDITOR' as a program to edit history + entries if `FCEDIT' is unset, rather than defaulting directly to + `ed'. `fc' uses `ed' if `EDITOR' is unset. + + 2. As noted above, Bash requires the `xpg_echo' option to be enabled + for the `echo' builtin to be fully conformant. + + +Bash can be configured to be POSIX-conformant by default, by specifying +the `--enable-strict-posix-default' to `configure' when building (*note +Optional Features::). + diff --git a/bash-20060316/RBASH b/bash-20060316/RBASH new file mode 100644 index 000000000..0e5c10b3e --- /dev/null +++ b/bash-20060316/RBASH @@ -0,0 +1,49 @@ +6.10 The Restricted Shell +========================= + +If Bash is started with the name `rbash', or the `--restricted' or `-r' +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. A restricted shell behaves identically to `bash' +with the exception that the following are disallowed or not performed: + + * Changing directories with the `cd' builtin. + + * Setting or unsetting the values of the `SHELL', `PATH', `ENV', or + `BASH_ENV' variables. + + * Specifying command names containing slashes. + + * Specifying a filename containing a slash as an argument to the `.' + builtin command. + + * Specifying a filename containing a slash as an argument to the `-p' + option to the `hash' builtin command. + + * Importing function definitions from the shell environment at + startup. + + * Parsing the value of `SHELLOPTS' from the shell environment at + startup. + + * Redirecting output using the `>', `>|', `<>', `>&', `&>', and `>>' + redirection operators. + + * Using the `exec' builtin to replace the shell with another command. + + * Adding or deleting builtin commands with the `-f' and `-d' options + to the `enable' builtin. + + * Using the `enable' builtin command to enable disabled shell + builtins. + + * Specifying the `-p' option to the `command' builtin. + + * Turning off restricted mode with `set +r' or `set +o restricted'. + +These restrictions are enforced after any startup files are read. + +When a command that is found to be a shell script is executed (*note +Shell Scripts::), `rbash' turns off any restrictions in the shell +spawned to execute the script. + diff --git a/bash-20060316/README b/bash-20060316/README new file mode 100644 index 000000000..3f6a09246 --- /dev/null +++ b/bash-20060316/README @@ -0,0 +1,90 @@ +Introduction +============ + +This is GNU Bash, version 3.1. Bash is the GNU Project's Bourne +Again SHell, a complete implementation of the POSIX.2 shell spec, +but also with interactive command line editing, job control on +architectures that support it, csh-like features such as history +substitution and brace expansion, and a slew of other features. +For more information on the features of Bash that are new to this +type of shell, see the file `doc/bashref.texi'. There is also a +large Unix-style man page. The man page is the definitive description +of the shell's features. + +See the file POSIX for a discussion of how the Bash defaults differ +from the POSIX.2 spec and a description of the Bash `posix mode'. + +There are some user-visible incompatibilities between this version +of Bash and a previous widely-distributed version, bash-1.14. +For details, see the file COMPAT. The NEWS file tersely lists +features that are new in this release. + +Bash is free software, distributed under the terms of the [GNU] +General Public License, version 2. For more information, see the +file COPYING. + +A number of frequently-asked questions are answered in the file +`doc/FAQ'. + +To compile Bash, try typing `./configure', then `make'. Bash +auto-configures the build process, so no further intervention +should be necessary. Bash builds with `gcc' by default if it is +available. If you want to use `cc' instead, type + + CC=cc ./configure + +if you are using a Bourne-style shell. If you are not, the following +may work: + + env CC=cc ./configure + +Read the file INSTALL in this directory for more information about how +to customize and control the build process. The file NOTES contains +platform-specific installation and configuration information. + +If you are a csh user and wish to convert your csh aliases to Bash +aliases, you may wish to use the script `examples/misc/alias-conv.sh' +as a starting point. The script `examples/misc/cshtobash' is a +more ambitious script that attempts to do a more complete job. + +Reporting Bugs +============== + +Bug reports for bash should be sent to: + + bug-bash@gnu.org + +using the `bashbug' program that is built and installed at the same +time as bash. + +The discussion list `bug-bash@gnu.org' often contains information +about new ports of Bash, or discussions of new features or behavior +changes that people would like. This mailing list is also available +as a usenet newsgroup: gnu.bash.bug. + +When you send a bug report, please use the `bashbug' program that is +built at the same time as bash. If bash fails to build, try building +bashbug directly with `make bashbug'. If you cannot build `bashbug', +please send mail to bug-bash@gnu.org with the following information: + + * the version number and release status of Bash (e.g., 2.05a-release) + * the machine and OS that it is running on (you may run + `bashversion -l' from the bash build directory for this information) + * a list of the compilation flags or the contents of `config.h', if + appropriate + * a description of the bug + * a recipe for recreating the bug reliably + * a fix for the bug if you have one! + +The `bashbug' program includes much of this automatically. + +If you would like to contact the Bash maintainers directly, send mail +to bash-maintainers@gnu.org. + +While the Bash maintainers do not promise to fix all bugs, we would +like this shell to be the best that we can make it. + +Enjoy! + +Chet Ramey +chet@po.cwru.edu diff --git a/bash-20060316/Y2K b/bash-20060316/Y2K new file mode 100644 index 000000000..d12e3525d --- /dev/null +++ b/bash-20060316/Y2K @@ -0,0 +1,4 @@ +Since Bash does not manipulate date strings, it is Y2K-safe. + +The only thing that Bash does with date strings is manipulate the string +returned by ctime(3) or strftime(3) in the prompt customization code. diff --git a/bash-20060316/aclocal.m4 b/bash-20060316/aclocal.m4 new file mode 100644 index 000000000..b9539591e --- /dev/null +++ b/bash-20060316/aclocal.m4 @@ -0,0 +1,3962 @@ +dnl +dnl Bash specific tests +dnl +dnl Some derived from PDKSH 5.1.3 autoconf tests +dnl + +AC_DEFUN(BASH_C_LONG_LONG, +[AC_CACHE_CHECK(for long long, ac_cv_c_long_long, +[if test "$GCC" = yes; then + ac_cv_c_long_long=yes +else +AC_TRY_RUN([ +int +main() +{ +long long foo = 0; +exit(sizeof(long long) < sizeof(long)); +} +], ac_cv_c_long_long=yes, ac_cv_c_long_long=no) +fi]) +if test $ac_cv_c_long_long = yes; then + AC_DEFINE(HAVE_LONG_LONG, 1, [Define if the `long long' type works.]) +fi +]) + +dnl +dnl This is very similar to AC_C_LONG_DOUBLE, with the fix for IRIX +dnl (< changed to <=) added. +dnl +AC_DEFUN(BASH_C_LONG_DOUBLE, +[AC_CACHE_CHECK(for long double, ac_cv_c_long_double, +[if test "$GCC" = yes; then + ac_cv_c_long_double=yes +else +AC_TRY_RUN([ +int +main() +{ + /* The Stardent Vistra knows sizeof(long double), but does not + support it. */ + long double foo = 0.0; + /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ + /* On IRIX 5.3, the compiler converts long double to double with a warning, + but compiles this successfully. */ + exit(sizeof(long double) <= sizeof(double)); +} +], ac_cv_c_long_double=yes, ac_cv_c_long_double=no) +fi]) +if test $ac_cv_c_long_double = yes; then + AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if the `long double' type works.]) +fi +]) + +dnl +dnl Check for . This is separated out so that it can be +dnl AC_REQUIREd. +dnl +dnl BASH_HEADER_INTTYPES +AC_DEFUN(BASH_HEADER_INTTYPES, +[ + AC_CHECK_HEADERS(inttypes.h) +]) + +dnl +dnl check for typedef'd symbols in header files, but allow the caller to +dnl specify the include files to be checked in addition to the default +dnl +dnl BASH_CHECK_TYPE(TYPE, HEADERS, DEFAULT[, VALUE-IF-FOUND]) +AC_DEFUN(BASH_CHECK_TYPE, +[ +AC_REQUIRE([AC_HEADER_STDC])dnl +AC_REQUIRE([BASH_HEADER_INTTYPES]) +AC_MSG_CHECKING(for $1) +AC_CACHE_VAL(bash_cv_type_$1, +[AC_EGREP_CPP($1, [#include +#if STDC_HEADERS +#include +#include +#endif +#if HAVE_INTTYPES_H +#include +#endif +$2 +], bash_cv_type_$1=yes, bash_cv_type_$1=no)]) +AC_MSG_RESULT($bash_cv_type_$1) +ifelse($#, 4, [if test $bash_cv_type_$1 = yes; then + AC_DEFINE($4) + fi]) +if test $bash_cv_type_$1 = no; then + AC_DEFINE_UNQUOTED($1, $3) +fi +]) + +dnl +dnl BASH_CHECK_DECL(FUNC) +dnl +dnl Check for a declaration of FUNC in stdlib.h and inttypes.h like +dnl AC_CHECK_DECL +dnl +AC_DEFUN(BASH_CHECK_DECL, +[ +AC_REQUIRE([AC_HEADER_STDC]) +AC_REQUIRE([BASH_HEADER_INTTYPES]) +AC_CACHE_CHECK([for declaration of $1], bash_cv_decl_$1, +[AC_TRY_LINK( +[ +#if STDC_HEADERS +# include +#endif +#if HAVE_INTTYPES_H +# include +#endif +], +[return !$1;], +bash_cv_decl_$1=yes, bash_cv_decl_$1=no)]) +bash_tr_func=HAVE_DECL_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` +if test $bash_cv_decl_$1 = yes; then + AC_DEFINE_UNQUOTED($bash_tr_func, 1) +else + AC_DEFINE_UNQUOTED($bash_tr_func, 0) +fi +]) + +AC_DEFUN(BASH_DECL_PRINTF, +[AC_MSG_CHECKING(for declaration of printf in ) +AC_CACHE_VAL(bash_cv_printf_declared, +[AC_TRY_RUN([ +#include +#ifdef __STDC__ +typedef int (*_bashfunc)(const char *, ...); +#else +typedef int (*_bashfunc)(); +#endif +main() +{ +_bashfunc pf; +pf = (_bashfunc) printf; +exit(pf == 0); +} +], bash_cv_printf_declared=yes, bash_cv_printf_declared=no, + [AC_MSG_WARN(cannot check printf declaration if cross compiling -- defaulting to yes) + bash_cv_printf_declared=yes] +)]) +AC_MSG_RESULT($bash_cv_printf_declared) +if test $bash_cv_printf_declared = yes; then +AC_DEFINE(PRINTF_DECLARED) +fi +]) + +AC_DEFUN(BASH_DECL_SBRK, +[AC_MSG_CHECKING(for declaration of sbrk in ) +AC_CACHE_VAL(bash_cv_sbrk_declared, +[AC_EGREP_HEADER(sbrk, unistd.h, + bash_cv_sbrk_declared=yes, bash_cv_sbrk_declared=no)]) +AC_MSG_RESULT($bash_cv_sbrk_declared) +if test $bash_cv_sbrk_declared = yes; then +AC_DEFINE(SBRK_DECLARED) +fi +]) + +dnl +dnl Check for sys_siglist[] or _sys_siglist[] +dnl +AC_DEFUN(BASH_DECL_UNDER_SYS_SIGLIST, +[AC_MSG_CHECKING([for _sys_siglist in signal.h or unistd.h]) +AC_CACHE_VAL(bash_cv_decl_under_sys_siglist, +[AC_TRY_COMPILE([ +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif], [ char *msg = _sys_siglist[2]; ], + bash_cv_decl_under_sys_siglist=yes, bash_cv_decl_under_sys_siglist=no, + [AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no)])])dnl +AC_MSG_RESULT($bash_cv_decl_under_sys_siglist) +if test $bash_cv_decl_under_sys_siglist = yes; then +AC_DEFINE(UNDER_SYS_SIGLIST_DECLARED) +fi +]) + +AC_DEFUN(BASH_UNDER_SYS_SIGLIST, +[AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST]) +AC_MSG_CHECKING([for _sys_siglist in system C library]) +AC_CACHE_VAL(bash_cv_under_sys_siglist, +[AC_TRY_RUN([ +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifndef UNDER_SYS_SIGLIST_DECLARED +extern char *_sys_siglist[]; +#endif +main() +{ +char *msg = (char *)_sys_siglist[2]; +exit(msg == 0); +}], + bash_cv_under_sys_siglist=yes, bash_cv_under_sys_siglist=no, + [AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no) + bash_cv_under_sys_siglist=no])]) +AC_MSG_RESULT($bash_cv_under_sys_siglist) +if test $bash_cv_under_sys_siglist = yes; then +AC_DEFINE(HAVE_UNDER_SYS_SIGLIST) +fi +]) + +AC_DEFUN(BASH_SYS_SIGLIST, +[AC_REQUIRE([AC_DECL_SYS_SIGLIST]) +AC_MSG_CHECKING([for sys_siglist in system C library]) +AC_CACHE_VAL(bash_cv_sys_siglist, +[AC_TRY_RUN([ +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifndef SYS_SIGLIST_DECLARED +extern char *sys_siglist[]; +#endif +main() +{ +char *msg = sys_siglist[2]; +exit(msg == 0); +}], + bash_cv_sys_siglist=yes, bash_cv_sys_siglist=no, + [AC_MSG_WARN(cannot check for sys_siglist if cross compiling -- defaulting to no) + bash_cv_sys_siglist=no])]) +AC_MSG_RESULT($bash_cv_sys_siglist) +if test $bash_cv_sys_siglist = yes; then +AC_DEFINE(HAVE_SYS_SIGLIST) +fi +]) + +dnl Check for the various permutations of sys_siglist and make sure we +dnl compile in siglist.o if they're not defined +AC_DEFUN(BASH_CHECK_SYS_SIGLIST, [ +AC_REQUIRE([BASH_SYS_SIGLIST]) +AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST]) +AC_REQUIRE([BASH_FUNC_STRSIGNAL]) +if test "$bash_cv_sys_siglist" = no && test "$bash_cv_under_sys_siglist" = no && test "$bash_cv_have_strsignal" = no; then + SIGLIST_O=siglist.o +else + SIGLIST_O= +fi +AC_SUBST([SIGLIST_O]) +]) + +dnl Check for sys_errlist[] and sys_nerr, check for declaration +AC_DEFUN(BASH_SYS_ERRLIST, +[AC_MSG_CHECKING([for sys_errlist and sys_nerr]) +AC_CACHE_VAL(bash_cv_sys_errlist, +[AC_TRY_LINK([#include ], +[extern char *sys_errlist[]; + extern int sys_nerr; + char *msg = sys_errlist[sys_nerr - 1];], + bash_cv_sys_errlist=yes, bash_cv_sys_errlist=no)])dnl +AC_MSG_RESULT($bash_cv_sys_errlist) +if test $bash_cv_sys_errlist = yes; then +AC_DEFINE(HAVE_SYS_ERRLIST) +fi +]) + +dnl +dnl Check if dup2() does not clear the close on exec flag +dnl +AC_DEFUN(BASH_FUNC_DUP2_CLOEXEC_CHECK, +[AC_MSG_CHECKING(if dup2 fails to clear the close-on-exec flag) +AC_CACHE_VAL(bash_cv_dup2_broken, +[AC_TRY_RUN([ +#include +#include +main() +{ + int fd1, fd2, fl; + fd1 = open("/dev/null", 2); + if (fcntl(fd1, 2, 1) < 0) + exit(1); + fd2 = dup2(fd1, 1); + if (fd2 < 0) + exit(2); + fl = fcntl(fd2, 1, 0); + /* fl will be 1 if dup2 did not reset the close-on-exec flag. */ + exit(fl != 1); +} +], bash_cv_dup2_broken=yes, bash_cv_dup2_broken=no, + [AC_MSG_WARN(cannot check dup2 if cross compiling -- defaulting to no) + bash_cv_dup2_broken=no]) +]) +AC_MSG_RESULT($bash_cv_dup2_broken) +if test $bash_cv_dup2_broken = yes; then +AC_DEFINE(DUP2_BROKEN) +fi +]) + +AC_DEFUN(BASH_FUNC_STRSIGNAL, +[AC_MSG_CHECKING([for the existence of strsignal]) +AC_CACHE_VAL(bash_cv_have_strsignal, +[AC_TRY_LINK([#include +#include ], +[char *s = (char *)strsignal(2);], + bash_cv_have_strsignal=yes, bash_cv_have_strsignal=no)]) +AC_MSG_RESULT($bash_cv_have_strsignal) +if test $bash_cv_have_strsignal = yes; then +AC_DEFINE(HAVE_STRSIGNAL) +fi +]) + +dnl Check to see if opendir will open non-directories (not a nice thing) +AC_DEFUN(BASH_FUNC_OPENDIR_CHECK, +[AC_REQUIRE([AC_HEADER_DIRENT])dnl +AC_MSG_CHECKING(if opendir() opens non-directories) +AC_CACHE_VAL(bash_cv_opendir_not_robust, +[AC_TRY_RUN([ +#include +#include +#include +#ifdef HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ +#if defined(HAVE_DIRENT_H) +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif /* SYSNDIR */ +# ifdef HAVE_SYS_DIR_H +# include +# endif /* SYSDIR */ +# ifdef HAVE_NDIR_H +# include +# endif +#endif /* HAVE_DIRENT_H */ +main() +{ +DIR *dir; +int fd, err; +err = mkdir("/tmp/bash-aclocal", 0700); +if (err < 0) { + perror("mkdir"); + exit(1); +} +unlink("/tmp/bash-aclocal/not_a_directory"); +fd = open("/tmp/bash-aclocal/not_a_directory", O_WRONLY|O_CREAT|O_EXCL, 0666); +write(fd, "\n", 1); +close(fd); +dir = opendir("/tmp/bash-aclocal/not_a_directory"); +unlink("/tmp/bash-aclocal/not_a_directory"); +rmdir("/tmp/bash-aclocal"); +exit (dir == 0); +}], bash_cv_opendir_not_robust=yes,bash_cv_opendir_not_robust=no, + [AC_MSG_WARN(cannot check opendir if cross compiling -- defaulting to no) + bash_cv_opendir_not_robust=no] +)]) +AC_MSG_RESULT($bash_cv_opendir_not_robust) +if test $bash_cv_opendir_not_robust = yes; then +AC_DEFINE(OPENDIR_NOT_ROBUST) +fi +]) + +dnl +AC_DEFUN(BASH_TYPE_SIGHANDLER, +[AC_MSG_CHECKING([whether signal handlers are of type void]) +AC_CACHE_VAL(bash_cv_void_sighandler, +[AC_TRY_COMPILE([#include +#include +#ifdef signal +#undef signal +#endif +#ifdef __cplusplus +extern "C" +#endif +void (*signal ()) ();], +[int i;], bash_cv_void_sighandler=yes, bash_cv_void_sighandler=no)])dnl +AC_MSG_RESULT($bash_cv_void_sighandler) +if test $bash_cv_void_sighandler = yes; then +AC_DEFINE(VOID_SIGHANDLER) +fi +]) + +dnl +dnl A signed 16-bit integer quantity +dnl +AC_DEFUN(BASH_TYPE_BITS16_T, +[ +if test "$ac_cv_sizeof_short" = 2; then + AC_CHECK_TYPE(bits16_t, short) +elif test "$ac_cv_sizeof_char" = 2; then + AC_CHECK_TYPE(bits16_t, char) +else + AC_CHECK_TYPE(bits16_t, short) +fi +]) + +dnl +dnl An unsigned 16-bit integer quantity +dnl +AC_DEFUN(BASH_TYPE_U_BITS16_T, +[ +if test "$ac_cv_sizeof_short" = 2; then + AC_CHECK_TYPE(u_bits16_t, unsigned short) +elif test "$ac_cv_sizeof_char" = 2; then + AC_CHECK_TYPE(u_bits16_t, unsigned char) +else + AC_CHECK_TYPE(u_bits16_t, unsigned short) +fi +]) + +dnl +dnl A signed 32-bit integer quantity +dnl +AC_DEFUN(BASH_TYPE_BITS32_T, +[ +if test "$ac_cv_sizeof_int" = 4; then + AC_CHECK_TYPE(bits32_t, int) +elif test "$ac_cv_sizeof_long" = 4; then + AC_CHECK_TYPE(bits32_t, long) +else + AC_CHECK_TYPE(bits32_t, int) +fi +]) + +dnl +dnl An unsigned 32-bit integer quantity +dnl +AC_DEFUN(BASH_TYPE_U_BITS32_T, +[ +if test "$ac_cv_sizeof_int" = 4; then + AC_CHECK_TYPE(u_bits32_t, unsigned int) +elif test "$ac_cv_sizeof_long" = 4; then + AC_CHECK_TYPE(u_bits32_t, unsigned long) +else + AC_CHECK_TYPE(u_bits32_t, unsigned int) +fi +]) + +AC_DEFUN(BASH_TYPE_PTRDIFF_T, +[ +if test "$ac_cv_sizeof_int" = "$ac_cv_sizeof_char_p"; then + AC_CHECK_TYPE(ptrdiff_t, int) +elif test "$ac_cv_sizeof_long" = "$ac_cv_sizeof_char_p"; then + AC_CHECK_TYPE(ptrdiff_t, long) +elif test "$ac_cv_type_long_long" = yes && test "$ac_cv_sizeof_long_long" = "$ac_cv_sizeof_char_p"; then + AC_CHECK_TYPE(ptrdiff_t, [long long]) +else + AC_CHECK_TYPE(ptrdiff_t, int) +fi +]) + +dnl +dnl A signed 64-bit quantity +dnl +AC_DEFUN(BASH_TYPE_BITS64_T, +[ +if test "$ac_cv_sizeof_char_p" = 8; then + AC_CHECK_TYPE(bits64_t, char *) +elif test "$ac_cv_sizeof_double" = 8; then + AC_CHECK_TYPE(bits64_t, double) +elif test -n "$ac_cv_type_long_long" && test "$ac_cv_sizeof_long_long" = 8; then + AC_CHECK_TYPE(bits64_t, [long long]) +elif test "$ac_cv_sizeof_long" = 8; then + AC_CHECK_TYPE(bits64_t, long) +else + AC_CHECK_TYPE(bits64_t, double) +fi +]) + +AC_DEFUN(BASH_TYPE_LONG_LONG, +[ +AC_CACHE_CHECK([for long long], bash_cv_type_long_long, +[AC_TRY_LINK([ +long long ll = 1; int i = 63;], +[ +long long llm = (long long) -1; +return ll << i | ll >> i | llm / ll | llm % ll; +], bash_cv_type_long_long='long long', bash_cv_type_long_long='long')]) +if test "$bash_cv_type_long_long" = 'long long'; then + AC_DEFINE(HAVE_LONG_LONG, 1) +fi +]) + +AC_DEFUN(BASH_TYPE_UNSIGNED_LONG_LONG, +[ +AC_CACHE_CHECK([for unsigned long long], bash_cv_type_unsigned_long_long, +[AC_TRY_LINK([ +unsigned long long ull = 1; int i = 63;], +[ +unsigned long long ullmax = (unsigned long long) -1; +return ull << i | ull >> i | ullmax / ull | ullmax % ull; +], bash_cv_type_unsigned_long_long='unsigned long long', + bash_cv_type_unsigned_long_long='unsigned long')]) +if test "$bash_cv_type_unsigned_long_long" = 'unsigned long long'; then + AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1) +fi +]) + +dnl +dnl Type of struct rlimit fields: some systems (OSF/1, NetBSD, RISC/os 5.0) +dnl have a rlim_t, others (4.4BSD based systems) use quad_t, others use +dnl long and still others use int (HP-UX 9.01, SunOS 4.1.3). To simplify +dnl matters, this just checks for rlim_t, quad_t, or long. +dnl +AC_DEFUN(BASH_TYPE_RLIMIT, +[AC_MSG_CHECKING(for size and type of struct rlimit fields) +AC_CACHE_VAL(bash_cv_type_rlimit, +[AC_TRY_COMPILE([#include +#include ], +[rlim_t xxx;], bash_cv_type_rlimit=rlim_t,[ +AC_TRY_RUN([ +#include +#include +#include +main() +{ +#ifdef HAVE_QUAD_T + struct rlimit rl; + if (sizeof(rl.rlim_cur) == sizeof(quad_t)) + exit(0); +#endif + exit(1); +}], bash_cv_type_rlimit=quad_t, bash_cv_type_rlimit=long, + [AC_MSG_WARN(cannot check quad_t if cross compiling -- defaulting to long) + bash_cv_type_rlimit=long])]) +]) +AC_MSG_RESULT($bash_cv_type_rlimit) +if test $bash_cv_type_rlimit = quad_t; then +AC_DEFINE(RLIMTYPE, quad_t) +elif test $bash_cv_type_rlimit = rlim_t; then +AC_DEFINE(RLIMTYPE, rlim_t) +fi +]) + +AC_DEFUN(BASH_FUNC_LSTAT, +[dnl Cannot use AC_CHECK_FUNCS(lstat) because Linux defines lstat() as an +dnl inline function in . +AC_CACHE_CHECK([for lstat], bash_cv_func_lstat, +[AC_TRY_LINK([ +#include +#include +],[ lstat(".",(struct stat *)0); ], +bash_cv_func_lstat=yes, bash_cv_func_lstat=no)]) +if test $bash_cv_func_lstat = yes; then + AC_DEFINE(HAVE_LSTAT) +fi +]) + +AC_DEFUN(BASH_FUNC_INET_ATON, +[ +AC_CACHE_CHECK([for inet_aton], bash_cv_func_inet_aton, +[AC_TRY_LINK([ +#include +#include +#include +struct in_addr ap;], [ inet_aton("127.0.0.1", &ap); ], +bash_cv_func_inet_aton=yes, bash_cv_func_inet_aton=no)]) +if test $bash_cv_func_inet_aton = yes; then + AC_DEFINE(HAVE_INET_ATON) +else + AC_LIBOBJ(inet_aton) +fi +]) + +AC_DEFUN(BASH_FUNC_GETENV, +[AC_MSG_CHECKING(to see if getenv can be redefined) +AC_CACHE_VAL(bash_cv_getenv_redef, +[AC_TRY_RUN([ +#ifdef HAVE_UNISTD_H +# include +#endif +#ifndef __STDC__ +# ifndef const +# define const +# endif +#endif +char * +getenv (name) +#if defined (__linux__) || defined (__bsdi__) || defined (convex) + const char *name; +#else + char const *name; +#endif /* !__linux__ && !__bsdi__ && !convex */ +{ +return "42"; +} +main() +{ +char *s; +/* The next allows this program to run, but does not allow bash to link + when it redefines getenv. I'm not really interested in figuring out + why not. */ +#if defined (NeXT) +exit(1); +#endif +s = getenv("ABCDE"); +exit(s == 0); /* force optimizer to leave getenv in */ +} +], bash_cv_getenv_redef=yes, bash_cv_getenv_redef=no, + [AC_MSG_WARN(cannot check getenv redefinition if cross compiling -- defaulting to yes) + bash_cv_getenv_redef=yes] +)]) +AC_MSG_RESULT($bash_cv_getenv_redef) +if test $bash_cv_getenv_redef = yes; then +AC_DEFINE(CAN_REDEFINE_GETENV) +fi +]) + +# We should check for putenv before calling this +AC_DEFUN(BASH_FUNC_STD_PUTENV, +[ +AC_REQUIRE([AC_HEADER_STDC]) +AC_REQUIRE([AC_C_PROTOTYPES]) +AC_CACHE_CHECK([for standard-conformant putenv declaration], bash_cv_std_putenv, +[AC_TRY_LINK([ +#if STDC_HEADERS +#include +#include +#endif +#ifndef __STDC__ +# ifndef const +# define const +# endif +#endif +#ifdef PROTOTYPES +extern int putenv (char *); +#else +extern int putenv (); +#endif +], +[return (putenv == 0);], +bash_cv_std_putenv=yes, bash_cv_std_putenv=no +)]) +if test $bash_cv_std_putenv = yes; then +AC_DEFINE(HAVE_STD_PUTENV) +fi +]) + +# We should check for unsetenv before calling this +AC_DEFUN(BASH_FUNC_STD_UNSETENV, +[ +AC_REQUIRE([AC_HEADER_STDC]) +AC_REQUIRE([AC_C_PROTOTYPES]) +AC_CACHE_CHECK([for standard-conformant unsetenv declaration], bash_cv_std_unsetenv, +[AC_TRY_LINK([ +#if STDC_HEADERS +#include +#include +#endif +#ifndef __STDC__ +# ifndef const +# define const +# endif +#endif +#ifdef PROTOTYPES +extern int unsetenv (const char *); +#else +extern int unsetenv (); +#endif +], +[return (unsetenv == 0);], +bash_cv_std_unsetenv=yes, bash_cv_std_unsetenv=no +)]) +if test $bash_cv_std_unsetenv = yes; then +AC_DEFINE(HAVE_STD_UNSETENV) +fi +]) + +AC_DEFUN(BASH_FUNC_ULIMIT_MAXFDS, +[AC_MSG_CHECKING(whether ulimit can substitute for getdtablesize) +AC_CACHE_VAL(bash_cv_ulimit_maxfds, +[AC_TRY_RUN([ +main() +{ +long maxfds = ulimit(4, 0L); +exit (maxfds == -1L); +} +], bash_cv_ulimit_maxfds=yes, bash_cv_ulimit_maxfds=no, + [AC_MSG_WARN(cannot check ulimit if cross compiling -- defaulting to no) + bash_cv_ulimit_maxfds=no] +)]) +AC_MSG_RESULT($bash_cv_ulimit_maxfds) +if test $bash_cv_ulimit_maxfds = yes; then +AC_DEFINE(ULIMIT_MAXFDS) +fi +]) + +AC_DEFUN(BASH_FUNC_GETCWD, +[AC_MSG_CHECKING([if getcwd() will dynamically allocate memory]) +AC_CACHE_VAL(bash_cv_getcwd_malloc, +[AC_TRY_RUN([ +#include +#ifdef HAVE_UNISTD_H +#include +#endif + +main() +{ + char *xpwd; + xpwd = getcwd(0, 0); + exit (xpwd == 0); +} +], bash_cv_getcwd_malloc=yes, bash_cv_getcwd_malloc=no, + [AC_MSG_WARN(cannot check whether getcwd allocates memory when cross-compiling -- defaulting to no) + bash_cv_getcwd_malloc=no] +)]) +AC_MSG_RESULT($bash_cv_getcwd_malloc) +if test $bash_cv_getcwd_malloc = no; then +AC_DEFINE(GETCWD_BROKEN) +AC_LIBOBJ(getcwd) +fi +]) + +dnl +dnl This needs BASH_CHECK_SOCKLIB, but since that's not called on every +dnl system, we can't use AC_PREREQ +dnl +AC_DEFUN(BASH_FUNC_GETHOSTBYNAME, +[if test "X$bash_cv_have_gethostbyname" = "X"; then +_bash_needmsg=yes +else +AC_MSG_CHECKING(for gethostbyname in socket library) +_bash_needmsg= +fi +AC_CACHE_VAL(bash_cv_have_gethostbyname, +[AC_TRY_LINK([#include ], +[ struct hostent *hp; + hp = gethostbyname("localhost"); +], bash_cv_have_gethostbyname=yes, bash_cv_have_gethostbyname=no)] +) +if test "X$_bash_needmsg" = Xyes; then + AC_MSG_CHECKING(for gethostbyname in socket library) +fi +AC_MSG_RESULT($bash_cv_have_gethostbyname) +if test "$bash_cv_have_gethostbyname" = yes; then +AC_DEFINE(HAVE_GETHOSTBYNAME) +fi +]) + +AC_DEFUN(BASH_FUNC_FNMATCH_EXTMATCH, +[AC_MSG_CHECKING(if fnmatch does extended pattern matching with FNM_EXTMATCH) +AC_CACHE_VAL(bash_cv_fnm_extmatch, +[AC_TRY_RUN([ +#include + +main() +{ +#ifdef FNM_EXTMATCH + exit (0); +#else + exit (1); +#endif +} +], bash_cv_fnm_extmatch=yes, bash_cv_fnm_extmatch=no, + [AC_MSG_WARN(cannot check FNM_EXTMATCH if cross compiling -- defaulting to no) + bash_cv_fnm_extmatch=no]) +]) +AC_MSG_RESULT($bash_cv_fnm_extmatch) +if test $bash_cv_fnm_extmatch = yes; then +AC_DEFINE(HAVE_LIBC_FNM_EXTMATCH) +fi +]) + +AC_DEFUN(BASH_FUNC_POSIX_SETJMP, +[AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) +AC_MSG_CHECKING(for presence of POSIX-style sigsetjmp/siglongjmp) +AC_CACHE_VAL(bash_cv_func_sigsetjmp, +[AC_TRY_RUN([ +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#include +#include + +main() +{ +#if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS) +exit (1); +#else + +int code; +sigset_t set, oset; +sigjmp_buf xx; + +/* get the mask */ +sigemptyset(&set); +sigemptyset(&oset); +sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set); +sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset); + +/* save it */ +code = sigsetjmp(xx, 1); +if (code) + exit(0); /* could get sigmask and compare to oset here. */ + +/* change it */ +sigaddset(&set, SIGINT); +sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL); + +/* and siglongjmp */ +siglongjmp(xx, 10); +exit(1); +#endif +}], bash_cv_func_sigsetjmp=present, bash_cv_func_sigsetjmp=missing, + [AC_MSG_WARN(cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing) + bash_cv_func_sigsetjmp=missing] +)]) +AC_MSG_RESULT($bash_cv_func_sigsetjmp) +if test $bash_cv_func_sigsetjmp = present; then +AC_DEFINE(HAVE_POSIX_SIGSETJMP) +fi +]) + +AC_DEFUN(BASH_FUNC_STRCOLL, +[ +AC_MSG_CHECKING(whether or not strcoll and strcmp differ) +AC_CACHE_VAL(bash_cv_func_strcoll_broken, +[AC_TRY_RUN([ +#include +#if defined (HAVE_LOCALE_H) +#include +#endif + +main(c, v) +int c; +char *v[]; +{ + int r1, r2; + char *deflocale, *defcoll; + +#ifdef HAVE_SETLOCALE + deflocale = setlocale(LC_ALL, ""); + defcoll = setlocale(LC_COLLATE, ""); +#endif + +#ifdef HAVE_STRCOLL + /* These two values are taken from tests/glob-test. */ + r1 = strcoll("abd", "aXd"); +#else + r1 = 0; +#endif + r2 = strcmp("abd", "aXd"); + + /* These two should both be greater than 0. It is permissible for + a system to return different values, as long as the sign is the + same. */ + + /* Exit with 1 (failure) if these two values are both > 0, since + this tests whether strcoll(3) is broken with respect to strcmp(3) + in the default locale. */ + exit (r1 > 0 && r2 > 0); +} +], bash_cv_func_strcoll_broken=yes, bash_cv_func_strcoll_broken=no, + [AC_MSG_WARN(cannot check strcoll if cross compiling -- defaulting to no) + bash_cv_func_strcoll_broken=no] +)]) +AC_MSG_RESULT($bash_cv_func_strcoll_broken) +if test $bash_cv_func_strcoll_broken = yes; then +AC_DEFINE(STRCOLL_BROKEN) +fi +]) + +AC_DEFUN(BASH_FUNC_PRINTF_A_FORMAT, +[AC_MSG_CHECKING([for printf floating point output in hex notation]) +AC_CACHE_VAL(bash_cv_printf_a_format, +[AC_TRY_RUN([ +#include +#include + +int +main() +{ + double y = 0.0; + char abuf[1024]; + + sprintf(abuf, "%A", y); + exit(strchr(abuf, 'P') == (char *)0); +} +], bash_cv_printf_a_format=yes, bash_cv_printf_a_format=no, + [AC_MSG_WARN(cannot check printf if cross compiling -- defaulting to no) + bash_cv_printf_a_format=no] +)]) +AC_MSG_RESULT($bash_cv_printf_a_format) +if test $bash_cv_printf_a_format = yes; then +AC_DEFINE(HAVE_PRINTF_A_FORMAT) +fi +]) + +AC_DEFUN(BASH_STRUCT_TERMIOS_LDISC, +[ +AC_CHECK_MEMBER(struct termios.c_line, AC_DEFINE(TERMIOS_LDISC), ,[ +#include +#include +]) +]) + +AC_DEFUN(BASH_STRUCT_TERMIO_LDISC, +[ +AC_CHECK_MEMBER(struct termio.c_line, AC_DEFINE(TERMIO_LDISC), ,[ +#include +#include +]) +]) + +dnl +dnl Like AC_STRUCT_ST_BLOCKS, but doesn't muck with LIBOBJS +dnl +dnl sets bash_cv_struct_stat_st_blocks +dnl +dnl unused for now; we'll see how AC_CHECK_MEMBERS works +dnl +AC_DEFUN(BASH_STRUCT_ST_BLOCKS, +[ +AC_MSG_CHECKING([for struct stat.st_blocks]) +AC_CACHE_VAL(bash_cv_struct_stat_st_blocks, +[AC_TRY_COMPILE( +[ +#include +#include +], +[ +main() +{ +static struct stat a; +if (a.st_blocks) return 0; +return 0; +} +], bash_cv_struct_stat_st_blocks=yes, bash_cv_struct_stat_st_blocks=no) +]) +AC_MSG_RESULT($bash_cv_struct_stat_st_blocks) +if test "$bash_cv_struct_stat_st_blocks" = "yes"; then +AC_DEFINE(HAVE_STRUCT_STAT_ST_BLOCKS) +fi +]) + +AC_DEFUN([BASH_CHECK_LIB_TERMCAP], +[ +if test "X$bash_cv_termcap_lib" = "X"; then +_bash_needmsg=yes +else +AC_MSG_CHECKING(which library has the termcap functions) +_bash_needmsg= +fi +AC_CACHE_VAL(bash_cv_termcap_lib, +[AC_CHECK_FUNC(tgetent, bash_cv_termcap_lib=libc, + [AC_CHECK_LIB(termcap, tgetent, bash_cv_termcap_lib=libtermcap, + [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo, + [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, + [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, + bash_cv_termcap_lib=gnutermcap)])])])])]) +if test "X$_bash_needmsg" = "Xyes"; then +AC_MSG_CHECKING(which library has the termcap functions) +fi +AC_MSG_RESULT(using $bash_cv_termcap_lib) +if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then +LDFLAGS="$LDFLAGS -L./lib/termcap" +TERMCAP_LIB="./lib/termcap/libtermcap.a" +TERMCAP_DEP="./lib/termcap/libtermcap.a" +elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then +TERMCAP_LIB=-ltermcap +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libtinfo; then +TERMCAP_LIB=-ltinfo +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libncurses; then +TERMCAP_LIB=-lncurses +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libc; then +TERMCAP_LIB= +TERMCAP_DEP= +else +TERMCAP_LIB=-lcurses +TERMCAP_DEP= +fi +]) + +dnl +dnl Check for the presence of getpeername in libsocket. +dnl If libsocket is present, check for libnsl and add it to LIBS if +dnl it's there, since most systems with libsocket require linking +dnl with libnsl as well. This should only be called if getpeername +dnl was not found in libc. +dnl +dnl NOTE: IF WE FIND GETPEERNAME, WE ASSUME THAT WE HAVE BIND/CONNECT +dnl AS WELL +dnl +AC_DEFUN(BASH_CHECK_LIB_SOCKET, +[ +if test "X$bash_cv_have_socklib" = "X"; then +_bash_needmsg= +else +AC_MSG_CHECKING(for socket library) +_bash_needmsg=yes +fi +AC_CACHE_VAL(bash_cv_have_socklib, +[AC_CHECK_LIB(socket, getpeername, + bash_cv_have_socklib=yes, bash_cv_have_socklib=no, -lnsl)]) +if test "X$_bash_needmsg" = Xyes; then + AC_MSG_RESULT($bash_cv_have_socklib) + _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 + AC_MSG_CHECKING(for libnsl) + _bash_needmsg=yes + fi + AC_CACHE_VAL(bash_cv_have_libnsl, + [AC_CHECK_LIB(nsl, t_open, + bash_cv_have_libnsl=yes, bash_cv_have_libnsl=no)]) + if test "X$_bash_needmsg" = Xyes; then + AC_MSG_RESULT($bash_cv_have_libnsl) + _bash_needmsg= + fi + if test $bash_cv_have_libnsl = yes; then + LIBS="-lsocket -lnsl $LIBS" + else + LIBS="-lsocket $LIBS" + fi + AC_DEFINE(HAVE_LIBSOCKET) + AC_DEFINE(HAVE_GETPEERNAME) +fi +]) + +AC_DEFUN(BASH_STRUCT_DIRENT_D_INO, +[AC_REQUIRE([AC_HEADER_DIRENT]) +AC_MSG_CHECKING(for struct dirent.d_ino) +AC_CACHE_VAL(bash_cv_dirent_has_dino, +[AC_TRY_COMPILE([ +#include +#include +#ifdef HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ +#if defined(HAVE_DIRENT_H) +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif /* SYSNDIR */ +# ifdef HAVE_SYS_DIR_H +# include +# endif /* SYSDIR */ +# ifdef HAVE_NDIR_H +# include +# endif +#endif /* HAVE_DIRENT_H */ +],[ +struct dirent d; int z; z = d.d_ino; +], bash_cv_dirent_has_dino=yes, bash_cv_dirent_has_dino=no)]) +AC_MSG_RESULT($bash_cv_dirent_has_dino) +if test $bash_cv_dirent_has_dino = yes; then +AC_DEFINE(HAVE_STRUCT_DIRENT_D_INO) +fi +]) + +AC_DEFUN(BASH_STRUCT_DIRENT_D_FILENO, +[AC_REQUIRE([AC_HEADER_DIRENT]) +AC_MSG_CHECKING(for struct dirent.d_fileno) +AC_CACHE_VAL(bash_cv_dirent_has_d_fileno, +[AC_TRY_COMPILE([ +#include +#include +#ifdef HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ +#if defined(HAVE_DIRENT_H) +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif /* SYSNDIR */ +# ifdef HAVE_SYS_DIR_H +# include +# endif /* SYSDIR */ +# ifdef HAVE_NDIR_H +# include +# endif +#endif /* HAVE_DIRENT_H */ +],[ +struct dirent d; int z; z = d.d_fileno; +], bash_cv_dirent_has_d_fileno=yes, bash_cv_dirent_has_d_fileno=no)]) +AC_MSG_RESULT($bash_cv_dirent_has_d_fileno) +if test $bash_cv_dirent_has_d_fileno = yes; then +AC_DEFINE(HAVE_STRUCT_DIRENT_D_FILENO) +fi +]) + +AC_DEFUN(BASH_STRUCT_DIRENT_D_NAMLEN, +[AC_REQUIRE([AC_HEADER_DIRENT]) +AC_MSG_CHECKING(for struct dirent.d_namlen) +AC_CACHE_VAL(bash_cv_dirent_has_d_namlen, +[AC_TRY_COMPILE([ +#include +#include +#ifdef HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ +#if defined(HAVE_DIRENT_H) +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif /* SYSNDIR */ +# ifdef HAVE_SYS_DIR_H +# include +# endif /* SYSDIR */ +# ifdef HAVE_NDIR_H +# include +# endif +#endif /* HAVE_DIRENT_H */ +],[ +struct dirent d; int z; z = d.d_namlen; +], bash_cv_dirent_has_d_namlen=yes, bash_cv_dirent_has_d_namlen=no)]) +AC_MSG_RESULT($bash_cv_dirent_has_d_namlen) +if test $bash_cv_dirent_has_d_namlen = yes; then +AC_DEFINE(HAVE_STRUCT_DIRENT_D_NAMLEN) +fi +]) + +AC_DEFUN(BASH_STRUCT_TIMEVAL, +[AC_MSG_CHECKING(for struct timeval in sys/time.h and time.h) +AC_CACHE_VAL(bash_cv_struct_timeval, +[ +AC_EGREP_HEADER(struct timeval, sys/time.h, + bash_cv_struct_timeval=yes, + AC_EGREP_HEADER(struct timeval, time.h, + bash_cv_struct_timeval=yes, + bash_cv_struct_timeval=no)) +]) +AC_MSG_RESULT($bash_cv_struct_timeval) +if test $bash_cv_struct_timeval = yes; then + AC_DEFINE(HAVE_TIMEVAL) +fi +]) + +AC_DEFUN(BASH_STRUCT_TIMEZONE, +[AC_MSG_CHECKING(for struct timezone in sys/time.h and time.h) +AC_CACHE_VAL(bash_cv_struct_timezone, +[ +AC_EGREP_HEADER(struct timezone, sys/time.h, + bash_cv_struct_timezone=yes, + AC_EGREP_HEADER(struct timezone, time.h, + bash_cv_struct_timezone=yes, + bash_cv_struct_timezone=no)) +]) +AC_MSG_RESULT($bash_cv_struct_timezone) +if test $bash_cv_struct_timezone = yes; then + AC_DEFINE(HAVE_STRUCT_TIMEZONE) +fi +]) + +AC_DEFUN(BASH_STRUCT_WINSIZE, +[AC_MSG_CHECKING(for struct winsize in sys/ioctl.h and termios.h) +AC_CACHE_VAL(bash_cv_struct_winsize_header, +[AC_TRY_COMPILE([#include +#include ], [struct winsize x;], + bash_cv_struct_winsize_header=ioctl_h, + [AC_TRY_COMPILE([#include +#include ], [struct winsize x;], + bash_cv_struct_winsize_header=termios_h, bash_cv_struct_winsize_header=other) +])]) +if test $bash_cv_struct_winsize_header = ioctl_h; then + AC_MSG_RESULT(sys/ioctl.h) + AC_DEFINE(STRUCT_WINSIZE_IN_SYS_IOCTL) +elif test $bash_cv_struct_winsize_header = termios_h; then + AC_MSG_RESULT(termios.h) + AC_DEFINE(STRUCT_WINSIZE_IN_TERMIOS) +else + AC_MSG_RESULT(not found) +fi +]) + +dnl Check type of signal routines (posix, 4.2bsd, 4.1bsd or v7) +AC_DEFUN(BASH_SYS_SIGNAL_VINTAGE, +[AC_REQUIRE([AC_TYPE_SIGNAL]) +AC_MSG_CHECKING(for type of signal functions) +AC_CACHE_VAL(bash_cv_signal_vintage, +[ + AC_TRY_LINK([#include ],[ + sigset_t ss; + struct sigaction sa; + sigemptyset(&ss); sigsuspend(&ss); + sigaction(SIGINT, &sa, (struct sigaction *) 0); + sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0); + ], bash_cv_signal_vintage=posix, + [ + AC_TRY_LINK([#include ], [ + int mask = sigmask(SIGINT); + sigsetmask(mask); sigblock(mask); sigpause(mask); + ], bash_cv_signal_vintage=4.2bsd, + [ + AC_TRY_LINK([ + #include + RETSIGTYPE foo() { }], [ + int mask = sigmask(SIGINT); + sigset(SIGINT, foo); sigrelse(SIGINT); + sighold(SIGINT); sigpause(SIGINT); + ], bash_cv_signal_vintage=svr3, bash_cv_signal_vintage=v7 + )] + )] +) +]) +AC_MSG_RESULT($bash_cv_signal_vintage) +if test "$bash_cv_signal_vintage" = posix; then +AC_DEFINE(HAVE_POSIX_SIGNALS) +elif test "$bash_cv_signal_vintage" = "4.2bsd"; then +AC_DEFINE(HAVE_BSD_SIGNALS) +elif test "$bash_cv_signal_vintage" = svr3; then +AC_DEFINE(HAVE_USG_SIGHOLD) +fi +]) + +dnl Check if the pgrp of setpgrp() can't be the pid of a zombie process. +AC_DEFUN(BASH_SYS_PGRP_SYNC, +[AC_REQUIRE([AC_FUNC_GETPGRP]) +AC_MSG_CHECKING(whether pgrps need synchronization) +AC_CACHE_VAL(bash_cv_pgrp_pipe, +[AC_TRY_RUN([ +#ifdef HAVE_UNISTD_H +# include +#endif +main() +{ +# ifdef GETPGRP_VOID +# define getpgID() getpgrp() +# else +# define getpgID() getpgrp(0) +# define setpgid(x,y) setpgrp(x,y) +# endif + int pid1, pid2, fds[2]; + int status; + char ok; + + switch (pid1 = fork()) { + case -1: + exit(1); + case 0: + setpgid(0, getpid()); + exit(0); + } + setpgid(pid1, pid1); + + sleep(2); /* let first child die */ + + if (pipe(fds) < 0) + exit(2); + + switch (pid2 = fork()) { + case -1: + exit(3); + case 0: + setpgid(0, pid1); + ok = getpgID() == pid1; + write(fds[1], &ok, 1); + exit(0); + } + setpgid(pid2, pid1); + + close(fds[1]); + if (read(fds[0], &ok, 1) != 1) + exit(4); + wait(&status); + wait(&status); + exit(ok ? 0 : 5); +} +], bash_cv_pgrp_pipe=no,bash_cv_pgrp_pipe=yes, + [AC_MSG_WARN(cannot check pgrp synchronization if cross compiling -- defaulting to no) + bash_cv_pgrp_pipe=no]) +]) +AC_MSG_RESULT($bash_cv_pgrp_pipe) +if test $bash_cv_pgrp_pipe = yes; then +AC_DEFINE(PGRP_PIPE) +fi +]) + +AC_DEFUN(BASH_SYS_REINSTALL_SIGHANDLERS, +[AC_REQUIRE([AC_TYPE_SIGNAL]) +AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) +AC_MSG_CHECKING([if signal handlers must be reinstalled when invoked]) +AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers, +[AC_TRY_RUN([ +#include +#ifdef HAVE_UNISTD_H +#include +#endif + +typedef RETSIGTYPE sigfunc(); + +int nsigint; + +#ifdef HAVE_POSIX_SIGNALS +sigfunc * +set_signal_handler(sig, handler) + int sig; + sigfunc *handler; +{ + struct sigaction act, oact; + act.sa_handler = handler; + act.sa_flags = 0; + sigemptyset (&act.sa_mask); + sigemptyset (&oact.sa_mask); + sigaction (sig, &act, &oact); + return (oact.sa_handler); +} +#else +#define set_signal_handler(s, h) signal(s, h) +#endif + +RETSIGTYPE +sigint(s) +int s; +{ + nsigint++; +} + +main() +{ + nsigint = 0; + set_signal_handler(SIGINT, sigint); + kill((int)getpid(), SIGINT); + kill((int)getpid(), SIGINT); + exit(nsigint != 2); +} +], bash_cv_must_reinstall_sighandlers=no, bash_cv_must_reinstall_sighandlers=yes, + [AC_MSG_WARN(cannot check signal handling if cross compiling -- defaulting to no) + bash_cv_must_reinstall_sighandlers=no] +)]) +AC_MSG_RESULT($bash_cv_must_reinstall_sighandlers) +if test $bash_cv_must_reinstall_sighandlers = yes; then +AC_DEFINE(MUST_REINSTALL_SIGHANDLERS) +fi +]) + +dnl check that some necessary job control definitions are present +AC_DEFUN(BASH_SYS_JOB_CONTROL_MISSING, +[AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) +AC_MSG_CHECKING(for presence of necessary job control definitions) +AC_CACHE_VAL(bash_cv_job_control_missing, +[AC_TRY_RUN([ +#include +#ifdef HAVE_SYS_WAIT_H +#include +#endif +#ifdef HAVE_UNISTD_H +#include +#endif +#include + +/* Add more tests in here as appropriate. */ +main() +{ +/* signal type */ +#if !defined (HAVE_POSIX_SIGNALS) && !defined (HAVE_BSD_SIGNALS) +exit(1); +#endif + +/* signals and tty control. */ +#if !defined (SIGTSTP) || !defined (SIGSTOP) || !defined (SIGCONT) +exit (1); +#endif + +/* process control */ +#if !defined (WNOHANG) || !defined (WUNTRACED) +exit(1); +#endif + +/* Posix systems have tcgetpgrp and waitpid. */ +#if defined (_POSIX_VERSION) && !defined (HAVE_TCGETPGRP) +exit(1); +#endif + +#if defined (_POSIX_VERSION) && !defined (HAVE_WAITPID) +exit(1); +#endif + +/* Other systems have TIOCSPGRP/TIOCGPRGP and wait3. */ +#if !defined (_POSIX_VERSION) && !defined (HAVE_WAIT3) +exit(1); +#endif + +exit(0); +}], bash_cv_job_control_missing=present, bash_cv_job_control_missing=missing, + [AC_MSG_WARN(cannot check job control if cross-compiling -- defaulting to missing) + bash_cv_job_control_missing=missing] +)]) +AC_MSG_RESULT($bash_cv_job_control_missing) +if test $bash_cv_job_control_missing = missing; then +AC_DEFINE(JOB_CONTROL_MISSING) +fi +]) + +dnl check whether named pipes are present +dnl this requires a previous check for mkfifo, but that is awkward to specify +AC_DEFUN(BASH_SYS_NAMED_PIPES, +[AC_MSG_CHECKING(for presence of named pipes) +AC_CACHE_VAL(bash_cv_sys_named_pipes, +[AC_TRY_RUN([ +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif + +/* Add more tests in here as appropriate. */ +main() +{ +int fd, err; + +#if defined (HAVE_MKFIFO) +exit (0); +#endif + +#if !defined (S_IFIFO) && (defined (_POSIX_VERSION) && !defined (S_ISFIFO)) +exit (1); +#endif + +#if defined (NeXT) +exit (1); +#endif +err = mkdir("/tmp/bash-aclocal", 0700); +if (err < 0) { + perror ("mkdir"); + exit(1); +} +fd = mknod ("/tmp/bash-aclocal/sh-np-autoconf", 0666 | S_IFIFO, 0); +if (fd == -1) { + rmdir ("/tmp/bash-aclocal"); + exit (1); +} +close(fd); +unlink ("/tmp/bash-aclocal/sh-np-autoconf"); +rmdir ("/tmp/bash-aclocal"); +exit(0); +}], bash_cv_sys_named_pipes=present, bash_cv_sys_named_pipes=missing, + [AC_MSG_WARN(cannot check for named pipes if cross-compiling -- defaulting to missing) + bash_cv_sys_named_pipes=missing] +)]) +AC_MSG_RESULT($bash_cv_sys_named_pipes) +if test $bash_cv_sys_named_pipes = missing; then +AC_DEFINE(NAMED_PIPES_MISSING) +fi +]) + +AC_DEFUN(BASH_SYS_DEFAULT_MAIL_DIR, +[AC_MSG_CHECKING(for default mail directory) +AC_CACHE_VAL(bash_cv_mail_dir, +[if test -d /var/mail; then + bash_cv_mail_dir=/var/mail + elif test -d /var/spool/mail; then + bash_cv_mail_dir=/var/spool/mail + elif test -d /usr/mail; then + bash_cv_mail_dir=/usr/mail + elif test -d /usr/spool/mail; then + bash_cv_mail_dir=/usr/spool/mail + else + bash_cv_mail_dir=unknown + fi +]) +AC_MSG_RESULT($bash_cv_mail_dir) +AC_DEFINE_UNQUOTED(DEFAULT_MAIL_DIRECTORY, "$bash_cv_mail_dir") +]) + +AC_DEFUN(BASH_HAVE_TIOCGWINSZ, +[AC_MSG_CHECKING(for TIOCGWINSZ in sys/ioctl.h) +AC_CACHE_VAL(bash_cv_tiocgwinsz_in_ioctl, +[AC_TRY_COMPILE([#include +#include ], [int x = TIOCGWINSZ;], + bash_cv_tiocgwinsz_in_ioctl=yes,bash_cv_tiocgwinsz_in_ioctl=no)]) +AC_MSG_RESULT($bash_cv_tiocgwinsz_in_ioctl) +if test $bash_cv_tiocgwinsz_in_ioctl = yes; then +AC_DEFINE(GWINSZ_IN_SYS_IOCTL) +fi +]) + +AC_DEFUN(BASH_HAVE_TIOCSTAT, +[AC_MSG_CHECKING(for TIOCSTAT in sys/ioctl.h) +AC_CACHE_VAL(bash_cv_tiocstat_in_ioctl, +[AC_TRY_COMPILE([#include +#include ], [int x = TIOCSTAT;], + bash_cv_tiocstat_in_ioctl=yes,bash_cv_tiocstat_in_ioctl=no)]) +AC_MSG_RESULT($bash_cv_tiocstat_in_ioctl) +if test $bash_cv_tiocstat_in_ioctl = yes; then +AC_DEFINE(TIOCSTAT_IN_SYS_IOCTL) +fi +]) + +AC_DEFUN(BASH_HAVE_FIONREAD, +[AC_MSG_CHECKING(for FIONREAD in sys/ioctl.h) +AC_CACHE_VAL(bash_cv_fionread_in_ioctl, +[AC_TRY_COMPILE([#include +#include ], [int x = FIONREAD;], + bash_cv_fionread_in_ioctl=yes,bash_cv_fionread_in_ioctl=no)]) +AC_MSG_RESULT($bash_cv_fionread_in_ioctl) +if test $bash_cv_fionread_in_ioctl = yes; then +AC_DEFINE(FIONREAD_IN_SYS_IOCTL) +fi +]) + +dnl +dnl See if speed_t is declared in . Some versions of linux +dnl require a definition of speed_t each time is included, +dnl but you can only get speed_t if you include (on some +dnl versions) or (on others). +dnl +AC_DEFUN(BASH_CHECK_SPEED_T, +[AC_MSG_CHECKING(for speed_t in sys/types.h) +AC_CACHE_VAL(bash_cv_speed_t_in_sys_types, +[AC_TRY_COMPILE([#include ], [speed_t x;], + bash_cv_speed_t_in_sys_types=yes,bash_cv_speed_t_in_sys_types=no)]) +AC_MSG_RESULT($bash_cv_speed_t_in_sys_types) +if test $bash_cv_speed_t_in_sys_types = yes; then +AC_DEFINE(SPEED_T_IN_SYS_TYPES) +fi +]) + +AC_DEFUN(BASH_CHECK_GETPW_FUNCS, +[AC_MSG_CHECKING(whether getpw functions are declared in pwd.h) +AC_CACHE_VAL(bash_cv_getpw_declared, +[AC_EGREP_CPP(getpwuid, +[ +#include +#ifdef HAVE_UNISTD_H +# include +#endif +#include +], +bash_cv_getpw_declared=yes,bash_cv_getpw_declared=no)]) +AC_MSG_RESULT($bash_cv_getpw_declared) +if test $bash_cv_getpw_declared = yes; then +AC_DEFINE(HAVE_GETPW_DECLS) +fi +]) + +AC_DEFUN(BASH_CHECK_DEV_FD, +[AC_MSG_CHECKING(whether /dev/fd is available) +AC_CACHE_VAL(bash_cv_dev_fd, +[if test -d /dev/fd && test -r /dev/fd/0 < /dev/null; then +# check for systems like FreeBSD 5 that only provide /dev/fd/[012] + exec 3<&0 + if test -r /dev/fd/3; then + bash_cv_dev_fd=standard + else + bash_cv_dev_fd=absent + fi + exec 3<&- + elif test -d /proc/self/fd && test -r /proc/self/fd/0 < /dev/null; then + bash_cv_dev_fd=whacky + else + bash_cv_dev_fd=absent + fi +]) +AC_MSG_RESULT($bash_cv_dev_fd) +if test $bash_cv_dev_fd = "standard"; then + AC_DEFINE(HAVE_DEV_FD) + AC_DEFINE(DEV_FD_PREFIX, "/dev/fd/") +elif test $bash_cv_dev_fd = "whacky"; then + AC_DEFINE(HAVE_DEV_FD) + AC_DEFINE(DEV_FD_PREFIX, "/proc/self/fd/") +fi +]) + +AC_DEFUN(BASH_CHECK_DEV_STDIN, +[AC_MSG_CHECKING(whether /dev/stdin stdout stderr are available) +AC_CACHE_VAL(bash_cv_dev_stdin, +[if test -d /dev/fd && test -r /dev/stdin < /dev/null; then + bash_cv_dev_stdin=present + elif test -d /proc/self/fd && test -r /dev/stdin < /dev/null; then + bash_cv_dev_stdin=present + else + bash_cv_dev_stdin=absent + fi +]) +AC_MSG_RESULT($bash_cv_dev_stdin) +if test $bash_cv_dev_stdin = "present"; then + AC_DEFINE(HAVE_DEV_STDIN) +fi +]) + +dnl +dnl Check if HPUX needs _KERNEL defined for RLIMIT_* definitions +dnl +AC_DEFUN(BASH_CHECK_KERNEL_RLIMIT, +[AC_MSG_CHECKING([whether $host_os needs _KERNEL for RLIMIT defines]) +AC_CACHE_VAL(bash_cv_kernel_rlimit, +[AC_TRY_COMPILE([ +#include +#include +], +[ + int f; + f = RLIMIT_DATA; +], bash_cv_kernel_rlimit=no, +[AC_TRY_COMPILE([ +#include +#define _KERNEL +#include +#undef _KERNEL +], +[ + int f; + f = RLIMIT_DATA; +], bash_cv_kernel_rlimit=yes, bash_cv_kernel_rlimit=no)] +)]) +AC_MSG_RESULT($bash_cv_kernel_rlimit) +if test $bash_cv_kernel_rlimit = yes; then +AC_DEFINE(RLIMIT_NEEDS_KERNEL) +fi +]) + +dnl +dnl Check for 64-bit off_t -- used for malloc alignment +dnl +dnl C does not allow duplicate case labels, so the compile will fail if +dnl sizeof(off_t) is > 4. +dnl +AC_DEFUN(BASH_CHECK_OFF_T_64, +[AC_CACHE_CHECK(for 64-bit off_t, bash_cv_off_t_64, +AC_TRY_COMPILE([ +#ifdef HAVE_UNISTD_H +#include +#endif +#include +],[ +switch (0) case 0: case (sizeof (off_t) <= 4):; +], bash_cv_off_t_64=no, bash_cv_off_t_64=yes)) +if test $bash_cv_off_t_64 = yes; then + AC_DEFINE(HAVE_OFF_T_64) +fi]) + +AC_DEFUN(BASH_CHECK_RTSIGS, +[AC_MSG_CHECKING(for unusable real-time signals due to large values) +AC_CACHE_VAL(bash_cv_unusable_rtsigs, +[AC_TRY_RUN([ +#include +#include + +#ifndef NSIG +# define NSIG 64 +#endif + +main () +{ + int n_sigs = 2 * NSIG; +#ifdef SIGRTMIN + int rtmin = SIGRTMIN; +#else + int rtmin = 0; +#endif + + exit(rtmin < n_sigs); +}], bash_cv_unusable_rtsigs=yes, bash_cv_unusable_rtsigs=no, + [AC_MSG_WARN(cannot check real-time signals if cross compiling -- defaulting to yes) + bash_cv_unusable_rtsigs=yes] +)]) +AC_MSG_RESULT($bash_cv_unusable_rtsigs) +if test $bash_cv_unusable_rtsigs = yes; then +AC_DEFINE(UNUSABLE_RT_SIGNALS) +fi +]) + +dnl +dnl check for availability of multibyte characters and functions +dnl +dnl geez, I wish I didn't have to check for all of this stuff separately +dnl +AC_DEFUN(BASH_CHECK_MULTIBYTE, +[ +AC_CHECK_HEADERS(wctype.h) +AC_CHECK_HEADERS(wchar.h) +AC_CHECK_HEADERS(langinfo.h) + +AC_CHECK_FUNC(mbsrtowcs, AC_DEFINE(HAVE_MBSRTOWCS)) +AC_CHECK_FUNC(mbrtowc, AC_DEFINE(HAVE_MBRTOWC)) +AC_CHECK_FUNC(mbrlen, AC_DEFINE(HAVE_MBRLEN)) +AC_CHECK_FUNC(wctomb, AC_DEFINE(HAVE_WCTOMB)) +AC_CHECK_FUNC(wcwidth, AC_DEFINE(HAVE_WCWIDTH)) +AC_CHECK_FUNC(wcsdup, AC_DEFINE(HAVE_WCSDUP)) +AC_CHECK_FUNC(wctype, AC_DEFINE(HAVE_WCTYPE)) + +AC_CACHE_CHECK([for mbstate_t], bash_cv_have_mbstate_t, +[AC_TRY_COMPILE([ +#include ], [ + mbstate_t ps; + mbstate_t *psp; + psp = (mbstate_t *)0; +], bash_cv_have_mbstate_t=yes, bash_cv_have_mbstate_t=no)]) +if test $bash_cv_have_mbstate_t = yes; then + AC_DEFINE(HAVE_MBSTATE_T) +fi + +AC_CACHE_CHECK([for nl_langinfo and CODESET], bash_cv_langinfo_codeset, +[AC_TRY_LINK( +[#include ], +[char* cs = nl_langinfo(CODESET);], +bash_cv_langinfo_codeset=yes, bash_cv_langinfo_codeset=no)]) +if test $bash_cv_langinfo_codeset = yes; then + AC_DEFINE(HAVE_LANGINFO_CODESET) +fi + +]) + +dnl need: prefix exec_prefix libdir includedir CC TERMCAP_LIB +dnl require: +dnl AC_PROG_CC +dnl BASH_CHECK_LIB_TERMCAP + +AC_DEFUN([RL_LIB_READLINE_VERSION], +[ +AC_REQUIRE([BASH_CHECK_LIB_TERMCAP]) + +AC_MSG_CHECKING([version of installed readline library]) + +# What a pain in the ass this is. + +# save cpp and ld options +_save_CFLAGS="$CFLAGS" +_save_LDFLAGS="$LDFLAGS" +_save_LIBS="$LIBS" + +# Don't set ac_cv_rl_prefix if the caller has already assigned a value. This +# allows the caller to do something like $_rl_prefix=$withval if the user +# specifies --with-installed-readline=PREFIX as an argument to configure + +if test -z "$ac_cv_rl_prefix"; then +test "x$prefix" = xNONE && ac_cv_rl_prefix=$ac_default_prefix || ac_cv_rl_prefix=${prefix} +fi + +eval ac_cv_rl_includedir=${ac_cv_rl_prefix}/include +eval ac_cv_rl_libdir=${ac_cv_rl_prefix}/lib + +LIBS="$LIBS -lreadline ${TERMCAP_LIB}" +CFLAGS="$CFLAGS -I${ac_cv_rl_includedir}" +LDFLAGS="$LDFLAGS -L${ac_cv_rl_libdir}" + +AC_CACHE_VAL(ac_cv_rl_version, +[AC_TRY_RUN([ +#include +#include + +extern int rl_gnu_readline_p; + +main() +{ + FILE *fp; + fp = fopen("conftest.rlv", "w"); + if (fp == 0) + exit(1); + if (rl_gnu_readline_p != 1) + fprintf(fp, "0.0\n"); + else + fprintf(fp, "%s\n", rl_library_version ? rl_library_version : "0.0"); + fclose(fp); + exit(0); +} +], +ac_cv_rl_version=`cat conftest.rlv`, +ac_cv_rl_version='0.0', +ac_cv_rl_version='4.2')]) + +CFLAGS="$_save_CFLAGS" +LDFLAGS="$_save_LDFLAGS" +LIBS="$_save_LIBS" + +RL_MAJOR=0 +RL_MINOR=0 + +# ( +case "$ac_cv_rl_version" in +2*|3*|4*|5*|6*|7*|8*|9*) + RL_MAJOR=`echo $ac_cv_rl_version | sed 's:\..*$::'` + RL_MINOR=`echo $ac_cv_rl_version | sed -e 's:^.*\.::' -e 's:[[a-zA-Z]]*$::'` + ;; +esac + +# ((( +case $RL_MAJOR in +[[0-9][0-9]]) _RL_MAJOR=$RL_MAJOR ;; +[[0-9]]) _RL_MAJOR=0$RL_MAJOR ;; +*) _RL_MAJOR=00 ;; +esac + +# ((( +case $RL_MINOR in +[[0-9][0-9]]) _RL_MINOR=$RL_MINOR ;; +[[0-9]]) _RL_MINOR=0$RL_MINOR ;; +*) _RL_MINOR=00 ;; +esac + +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 + AC_MSG_WARN([Could not test version of installed readline library.]) +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 + AC_MSG_RESULT($ac_cv_rl_version) +else + +AC_DEFINE_UNQUOTED(RL_READLINE_VERSION, $RL_VERSION, [encoded version of the installed readline library]) +AC_DEFINE_UNQUOTED(RL_VERSION_MAJOR, $RL_MAJOR, [major version of installed readline library]) +AC_DEFINE_UNQUOTED(RL_VERSION_MINOR, $RL_MINOR, [minor version of installed readline library]) + +AC_SUBST(RL_VERSION) +AC_SUBST(RL_MAJOR) +AC_SUBST(RL_MINOR) + +# 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 + +AC_MSG_RESULT($ac_cv_rl_version) + +fi +]) + +AC_DEFUN(BASH_FUNC_CTYPE_NONASCII, +[ +AC_MSG_CHECKING(whether the ctype macros accept non-ascii characters) +AC_CACHE_VAL(bash_cv_func_ctype_nonascii, +[AC_TRY_RUN([ +#ifdef HAVE_LOCALE_H +#include +#endif +#include +#include + +main(c, v) +int c; +char *v[]; +{ + char *deflocale; + unsigned char x; + int r1, r2; + +#ifdef HAVE_SETLOCALE + /* We take a shot here. If that locale is not known, try the + system default. We try this one because '\342' (226) is + known to be a printable character in that locale. */ + deflocale = setlocale(LC_ALL, "en_US.ISO8859-1"); + if (deflocale == 0) + deflocale = setlocale(LC_ALL, ""); +#endif + + x = '\342'; + r1 = isprint(x); + x -= 128; + r2 = isprint(x); + exit (r1 == 0 || r2 == 0); +} +], bash_cv_func_ctype_nonascii=yes, bash_cv_func_ctype_nonascii=no, + [AC_MSG_WARN(cannot check ctype macros if cross compiling -- defaulting to no) + bash_cv_func_ctype_nonascii=no] +)]) +AC_MSG_RESULT($bash_cv_func_ctype_nonascii) +if test $bash_cv_func_ctype_nonascii = yes; then +AC_DEFINE(CTYPE_NON_ASCII) +fi +]) + +AC_DEFUN(BASH_CHECK_WCONTINUED, +[ +AC_MSG_CHECKING(whether WCONTINUED flag to waitpid is unavailable or available but broken) +AC_CACHE_VAL(bash_cv_wcontinued_broken, +[AC_TRY_RUN([ +#include +#include +#include +#include + +#ifndef errno +extern int errno; +#endif +main() +{ + int x; + + x = waitpid(-1, (int *)0, WNOHANG|WCONTINUED); + if (x == -1 && errno == EINVAL) + exit (1); + else + exit (0); +} +], bash_cv_wcontinued_broken=no,bash_cv_wcontinued_broken=yes, + [AC_MSG_WARN(cannot check WCONTINUED if cross compiling -- defaulting to no) + bash_cv_wcontinued_broken=no] +)]) +AC_MSG_RESULT($bash_cv_wcontinued_broken) +if test $bash_cv_wcontinued_broken = yes; then +AC_DEFINE(WCONTINUED_BROKEN) +fi +]) + +dnl +dnl tests added for bashdb +dnl + + +AC_DEFUN([AM_PATH_LISPDIR], + [AC_ARG_WITH(lispdir, AC_HELP_STRING([--with-lispdir], [override the default lisp directory]), + [ lispdir="$withval" + AC_MSG_CHECKING([where .elc files should go]) + AC_MSG_RESULT([$lispdir])], + [ + # If set to t, that means we are running in a shell under Emacs. + # If you have an Emacs named "t", then use the full path. + test x"$EMACS" = xt && EMACS= + AC_CHECK_PROGS(EMACS, emacs xemacs, no) + if test $EMACS != "no"; then + if test x${lispdir+set} != xset; then + AC_CACHE_CHECK([where .elc files should go], [am_cv_lispdir], [dnl + am_cv_lispdir=`$EMACS -batch -q -eval '(while load-path (princ (concat (car load-path) "\n")) (setq load-path (cdr load-path)))' | sed -n -e 's,/$,,' -e '/.*\/lib\/\(x\?emacs\/site-lisp\)$/{s,,${libdir}/\1,;p;q;}' -e '/.*\/share\/\(x\?emacs\/site-lisp\)$/{s,,${datadir}/\1,;p;q;}'` + if test -z "$am_cv_lispdir"; then + am_cv_lispdir='${datadir}/emacs/site-lisp' + fi + ]) + lispdir="$am_cv_lispdir" + fi + fi + ]) + AC_SUBST(lispdir) +]) + +dnl +dnl tests added for gettext +dnl +# codeset.m4 serial AM1 (gettext-0.10.40) +dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Bruno Haible. + +AC_DEFUN([AM_LANGINFO_CODESET], +[ + AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, + [AC_TRY_LINK([#include ], + [char* cs = nl_langinfo(CODESET);], + am_cv_langinfo_codeset=yes, + am_cv_langinfo_codeset=no) + ]) + if test $am_cv_langinfo_codeset = yes; then + AC_DEFINE(HAVE_LANGINFO_CODESET, 1, + [Define if you have and nl_langinfo(CODESET).]) + fi +]) +# gettext.m4 serial 20 (gettext-0.12) +dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +dnl Macro to add for using GNU gettext. + +dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). +dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The +dnl default (if it is not specified or empty) is 'no-libtool'. +dnl INTLSYMBOL should be 'external' for packages with no intl directory, +dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. +dnl If INTLSYMBOL is 'use-libtool', then a libtool library +dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, +dnl depending on --{enable,disable}-{shared,static} and on the presence of +dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library +dnl $(top_builddir)/intl/libintl.a will be created. +dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext +dnl implementations (in libc or libintl) without the ngettext() function +dnl will be ignored. If NEEDSYMBOL is specified and is +dnl 'need-formatstring-macros', then GNU gettext implementations that don't +dnl support the ISO C 99 formatstring macros will be ignored. +dnl INTLDIR is used to find the intl libraries. If empty, +dnl the value `$(top_builddir)/intl/' is used. +dnl +dnl The result of the configuration is one of three cases: +dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled +dnl and used. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 2) GNU gettext has been found in the system's C library. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 3) No internationalization, always use English msgid. +dnl Catalog format: none +dnl Catalog extension: none +dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. +dnl The use of .gmo is historical (it was needed to avoid overwriting the +dnl GNU format catalogs when building on a platform with an X/Open gettext), +dnl but we keep it in order not to force irrelevant filename changes on the +dnl maintainers. +dnl +AC_DEFUN([AM_GNU_GETTEXT], +[ + dnl Argument checking. + ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , + [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT +])])])])]) + ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , + [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT +])])])]) + define(gt_included_intl, ifelse([$1], [external], [no], [yes])) + define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], [])) + + AC_REQUIRE([AM_PO_SUBDIRS])dnl + ifelse(gt_included_intl, yes, [ + AC_REQUIRE([AM_INTL_SUBDIR])dnl + ]) + + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Sometimes libintl requires libiconv, so first search for libiconv. + dnl Ideally we would do this search only after the + dnl if test "$USE_NLS" = "yes"; then + dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then + dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT + dnl the configure script would need to contain the same shell code + dnl again, outside any 'if'. There are two solutions: + dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. + dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. + dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not + dnl documented, we avoid it. + ifelse(gt_included_intl, yes, , [ + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + ]) + + dnl Set USE_NLS. + AM_NLS + + ifelse(gt_included_intl, yes, [ + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + ]) + LIBINTL= + LTLIBINTL= + POSUB= + + dnl If we use NLS figure out what method + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + ifelse(gt_included_intl, yes, [ + AC_MSG_CHECKING([whether included gettext is requested]) + AC_ARG_WITH(included-gettext, + [ --with-included-gettext use the GNU gettext library included here], + nls_cv_force_use_gnu_gettext=$withval, + nls_cv_force_use_gnu_gettext=no) + AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + ]) + dnl User does not insist on using GNU NLS library. Figure out what + dnl to use. If GNU gettext is available we use this. Else we have + dnl to fall back to GNU NLS library. + + dnl Add a version number to the cache macros. + define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1))) + define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) + define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) + + AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, + [AC_TRY_LINK([#include +]ifelse([$2], [need-formatstring-macros], +[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +changequote(,)dnl +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +changequote([,])dnl +], [])[extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings;], + [bindtextdomain ("", ""); +return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], + gt_cv_func_gnugettext_libc=yes, + gt_cv_func_gnugettext_libc=no)]) + + if test "$gt_cv_func_gnugettext_libc" != "yes"; then + dnl Sometimes libintl requires libiconv, so first search for libiconv. + ifelse(gt_included_intl, yes, , [ + AM_ICONV_LINK + ]) + dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL + dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) + dnl because that would add "-liconv" to LIBINTL and LTLIBINTL + dnl even if libiconv doesn't exist. + AC_LIB_LINKFLAGS_BODY([intl]) + AC_CACHE_CHECK([for GNU gettext in libintl], + gt_cv_func_gnugettext_libintl, + [gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + dnl Now see whether libintl exists and does not depend on libiconv. + AC_TRY_LINK([#include +]ifelse([$2], [need-formatstring-macros], +[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +changequote(,)dnl +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +changequote([,])dnl +], [])[extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias ();], + [bindtextdomain ("", ""); +return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], + gt_cv_func_gnugettext_libintl=yes, + gt_cv_func_gnugettext_libintl=no) + dnl Now see whether libintl exists and depends on libiconv. + if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + AC_TRY_LINK([#include +]ifelse([$2], [need-formatstring-macros], +[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +changequote(,)dnl +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +changequote([,])dnl +], [])[extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias ();], + [bindtextdomain ("", ""); +return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], + [LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + gt_cv_func_gnugettext_libintl=yes + ]) + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS"]) + fi + + dnl If an already present or preinstalled GNU gettext() is found, + dnl use it. But if this macro is used in GNU gettext, and GNU + dnl gettext is already preinstalled in libintl, we update this + dnl libintl. (Cf. the install rule in intl/Makefile.in.) + if test "$gt_cv_func_gnugettext_libc" = "yes" \ + || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + dnl Reset the values set by searching for libintl. + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + ifelse(gt_included_intl, yes, [ + if test "$gt_use_preinstalled_gnugettext" != "yes"; then + dnl GNU gettext is not found in the C library. + dnl Fall back on included GNU gettext library. + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions used to generate GNU NLS library. + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" + LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]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 + dnl Mark actions to use GNU gettext tools. + CATOBJEXT=.gmo + fi + ]) + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + AC_DEFINE(ENABLE_NLS, 1, + [Define to 1 if translation of program messages to the user's native language + is requested.]) + else + USE_NLS=no + fi + fi + + AC_MSG_CHECKING([whether to use NLS]) + AC_MSG_RESULT([$USE_NLS]) + if test "$USE_NLS" = "yes"; then + AC_MSG_CHECKING([where the gettext function comes from]) + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if test "$gt_cv_func_gnugettext_libintl" = "yes"; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + AC_MSG_RESULT([$gt_source]) + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if test "$gt_cv_func_gnugettext_libintl" = "yes"; then + AC_MSG_CHECKING([how to link with libintl]) + AC_MSG_RESULT([$LIBINTL]) + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) + fi + + dnl For backward compatibility. Some packages may be using this. + AC_DEFINE(HAVE_GETTEXT, 1, + [Define if the GNU gettext() function is already present or preinstalled.]) + AC_DEFINE(HAVE_DCGETTEXT, 1, + [Define if the GNU dcgettext() function is already present or preinstalled.]) + fi + + dnl We need to process the po/ directory. + POSUB=po + fi + + ifelse(gt_included_intl, yes, [ + dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL + dnl to 'yes' because some of the testsuite requires it. + if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then + BUILD_INCLUDED_LIBINTL=yes + fi + + dnl Make all variables we use known to autoconf. + AC_SUBST(BUILD_INCLUDED_LIBINTL) + AC_SUBST(USE_INCLUDED_LIBINTL) + AC_SUBST(CATOBJEXT) + + dnl For backward compatibility. Some configure.ins may be using this. + nls_cv_header_intl= + nls_cv_header_libgt= + + dnl For backward compatibility. Some Makefiles may be using this. + DATADIRNAME=share + AC_SUBST(DATADIRNAME) + + dnl For backward compatibility. Some Makefiles may be using this. + INSTOBJEXT=.mo + AC_SUBST(INSTOBJEXT) + + dnl For backward compatibility. Some Makefiles may be using this. + GENCAT=gencat + AC_SUBST(GENCAT) + + dnl For backward compatibility. Some Makefiles may be using this. + if test "$USE_INCLUDED_LIBINTL" = yes; then + INTLOBJS="\$(GETTOBJS)" + fi + AC_SUBST(INTLOBJS) + + dnl Enable libtool support if the surrounding package wishes it. + INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix + AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) + ]) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLLIBS="$LIBINTL" + AC_SUBST(INTLLIBS) + + dnl Make all documented variables known to autoconf. + AC_SUBST(LIBINTL) + AC_SUBST(LTLIBINTL) + AC_SUBST(POSUB) +]) + + +dnl Checks for all prerequisites of the intl subdirectory, +dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, +dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. +AC_DEFUN([AM_INTL_SUBDIR], +[ + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AM_MKINSTALLDIRS])dnl + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + AC_REQUIRE([AC_PROG_RANLIB])dnl + AC_REQUIRE([AC_ISC_POSIX])dnl + AC_REQUIRE([AC_HEADER_STDC])dnl + AC_REQUIRE([AC_C_CONST])dnl + AC_REQUIRE([AC_C_INLINE])dnl + AC_REQUIRE([AC_TYPE_OFF_T])dnl + AC_REQUIRE([AC_TYPE_SIZE_T])dnl + AC_REQUIRE([AC_FUNC_ALLOCA])dnl + AC_REQUIRE([AC_FUNC_MMAP])dnl + AC_REQUIRE([jm_GLIBC21])dnl + AC_REQUIRE([gt_INTDIV0])dnl + AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])dnl + AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl + AC_REQUIRE([gt_INTTYPES_PRI])dnl + + AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ +stdlib.h string.h unistd.h sys/param.h]) + AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ +geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ +strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next \ +__fsetlocking]) + + AM_ICONV + AM_LANGINFO_CODESET + if test $ac_cv_header_locale_h = yes; then + AM_LC_MESSAGES + fi + + dnl intl/plural.c is generated from intl/plural.y. It requires bison, + dnl because plural.y uses bison specific features. It requires at least + dnl bison-1.26 because earlier versions generate a plural.c that doesn't + dnl compile. + dnl bison is only needed for the maintainer (who touches plural.y). But in + dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put + dnl the rule in general Makefile. Now, some people carelessly touch the + dnl files or have a broken "make" program, hence the plural.c rule will + dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not + dnl present or too old. + AC_CHECK_PROGS([INTLBISON], [bison]) + if test -z "$INTLBISON"; then + ac_verc_fail=yes + else + dnl Found it, now check the version. + AC_MSG_CHECKING([version of bison]) +changequote(<<,>>)dnl + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) +changequote([,])dnl + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + AC_MSG_RESULT([$ac_prog_version]) + fi + if test $ac_verc_fail = yes; then + INTLBISON=: + fi +]) + + +dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) +AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) +# glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40) +dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +# Test for the GNU C Library, version 2.1 or newer. +# From Bruno Haible. + +AC_DEFUN([jm_GLIBC21], + [ + AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, + ac_cv_gnu_library_2_1, + [AC_EGREP_CPP([Lucky GNU user], + [ +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + ], + ac_cv_gnu_library_2_1=yes, + ac_cv_gnu_library_2_1=no) + ] + ) + AC_SUBST(GLIBC21) + GLIBC21="$ac_cv_gnu_library_2_1" + ] +) +# iconv.m4 serial AM4 (gettext-0.11.3) +dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Bruno Haible. + +AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], +[ + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV + dnl accordingly. + AC_LIB_LINKFLAGS_BODY([iconv]) +]) + +AC_DEFUN([AM_ICONV_LINK], +[ + dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and + dnl those with the standalone portable GNU libiconv installed). + + dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV + dnl accordingly. + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + + dnl Add $INCICONV to CPPFLAGS before performing the following checks, + dnl because if the user has installed libiconv and not disabled its use + dnl via --without-libiconv-prefix, he wants to use it. The first + dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. + am_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) + + AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_func_iconv=yes) + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_lib_iconv=yes + am_cv_func_iconv=yes) + LIBS="$am_save_LIBS" + fi + ]) + if test "$am_cv_func_iconv" = yes; then + AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) + fi + if test "$am_cv_lib_iconv" = yes; then + AC_MSG_CHECKING([how to link with libiconv]) + AC_MSG_RESULT([$LIBICONV]) + else + dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV + dnl either. + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + AC_SUBST(LIBICONV) + AC_SUBST(LTLIBICONV) +]) + +AC_DEFUN([AM_ICONV], +[ + AM_ICONV_LINK + if test "$am_cv_func_iconv" = yes; then + AC_MSG_CHECKING([for iconv declaration]) + AC_CACHE_VAL(am_cv_proto_iconv, [ + AC_TRY_COMPILE([ +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif +], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") + 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);"]) + am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + AC_MSG_RESULT([$]{ac_t:- + }[$]am_cv_proto_iconv) + AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, + [Define as const if the declaration of iconv() needs const.]) + fi +]) +# intdiv0.m4 serial 1 (gettext-0.11.3) +dnl Copyright (C) 2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Bruno Haible. + +AC_DEFUN([gt_INTDIV0], +[ + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + + AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], + gt_cv_int_divbyzero_sigfpe, + [ + AC_TRY_RUN([ +#include +#include + +static void +#ifdef __cplusplus +sigfpe_handler (int sig) +#else +sigfpe_handler (sig) int sig; +#endif +{ + /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ + exit (sig != SIGFPE); +} + +int x = 1; +int y = 0; +int z; +int nan; + +int main () +{ + signal (SIGFPE, sigfpe_handler); +/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ +#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) + signal (SIGTRAP, sigfpe_handler); +#endif +/* Linux/SPARC yields signal SIGILL. */ +#if defined (__sparc__) && defined (__linux__) + signal (SIGILL, sigfpe_handler); +#endif + + z = x / y; + nan = y / y; + exit (1); +} +], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no, + [ + # Guess based on the CPU. + case "$host_cpu" in + alpha* | i[34567]86 | m68k | s390*) + gt_cv_int_divbyzero_sigfpe="guessing yes";; + *) + gt_cv_int_divbyzero_sigfpe="guessing no";; + esac + ]) + ]) + case "$gt_cv_int_divbyzero_sigfpe" in + *yes) value=1;; + *) value=0;; + esac + AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value, + [Define if integer division by zero raises signal SIGFPE.]) +]) +# inttypes.m4 serial 1 (gettext-0.11.4) +dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Paul Eggert. + +# Define HAVE_INTTYPES_H if exists and doesn't clash with +# . + +AC_DEFUN([gt_HEADER_INTTYPES_H], +[ + AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h, + [ + AC_TRY_COMPILE( + [#include +#include ], + [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no) + ]) + if test $gt_cv_header_inttypes_h = yes; then + AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1, + [Define if exists and doesn't clash with .]) + fi +]) +# inttypes_h.m4 serial 5 (gettext-0.12) +dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Paul Eggert. + +# Define HAVE_INTTYPES_H_WITH_UINTMAX if exists, +# doesn't clash with , and declares uintmax_t. + +AC_DEFUN([jm_AC_HEADER_INTTYPES_H], +[ + AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h, + [AC_TRY_COMPILE( + [#include +#include ], + [uintmax_t i = (uintmax_t) -1;], + jm_ac_cv_header_inttypes_h=yes, + jm_ac_cv_header_inttypes_h=no)]) + if test $jm_ac_cv_header_inttypes_h = yes; then + AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1, + [Define if exists, doesn't clash with , + and declares uintmax_t. ]) + fi +]) +# inttypes-pri.m4 serial 1 (gettext-0.11.4) +dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Bruno Haible. + +# Define PRI_MACROS_BROKEN if exists and defines the PRI* +# macros to non-string values. This is the case on AIX 4.3.3. + +AC_DEFUN([gt_INTTYPES_PRI], +[ + AC_REQUIRE([gt_HEADER_INTTYPES_H]) + if test $gt_cv_header_inttypes_h = yes; then + AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], + gt_cv_inttypes_pri_broken, + [ + AC_TRY_COMPILE([#include +#ifdef PRId32 +char *p = PRId32; +#endif +], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes) + ]) + fi + if test "$gt_cv_inttypes_pri_broken" = yes; then + AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1, + [Define if exists and defines unusable PRI* macros.]) + fi +]) +# isc-posix.m4 serial 2 (gettext-0.11.2) +dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +# This file is not needed with autoconf-2.53 and newer. Remove it in 2005. + +# This test replaces the one in autoconf. +# Currently this macro should have the same name as the autoconf macro +# because gettext's gettext.m4 (distributed in the automake package) +# still uses it. Otherwise, the use in gettext.m4 makes autoheader +# give these diagnostics: +# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX +# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX + +undefine([AC_ISC_POSIX]) + +AC_DEFUN([AC_ISC_POSIX], + [ + dnl This test replaces the obsolescent AC_ISC_POSIX kludge. + AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) + ] +) +# lcmessage.m4 serial 3 (gettext-0.11.3) +dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995. + +# Check whether LC_MESSAGES is available in . + +AC_DEFUN([AM_LC_MESSAGES], +[ + AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, + [AC_TRY_LINK([#include ], [return LC_MESSAGES], + am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) + if test $am_cv_val_LC_MESSAGES = yes; then + AC_DEFINE(HAVE_LC_MESSAGES, 1, + [Define if your file defines LC_MESSAGES.]) + fi +]) +# lib-ld.m4 serial 2 (gettext-0.12) +dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl Subroutines of libtool.m4, +dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision +dnl with libtool.m4. + +dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. +AC_DEFUN([AC_LIB_PROG_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, +[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 &5; then + acl_cv_prog_gnu_ld=yes +else + acl_cv_prog_gnu_ld=no +fi]) +with_gnu_ld=$acl_cv_prog_gnu_ld +]) + +dnl From libtool-1.4. Sets the variable LD. +AC_DEFUN([AC_LIB_PROG_LD], +[AC_ARG_WITH(gnu-ld, +[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], +test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by GCC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]* | [A-Za-z]:[\\/]*)] + [re_direlt='/[^/][^/]*/\.\./'] + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(acl_cv_path_LD, +[if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" +else + acl_cv_path_LD="$LD" # Let the user override the test with a path. +fi]) +LD="$acl_cv_path_LD" +if test -n "$LD"; then + AC_MSG_RESULT($LD) +else + AC_MSG_RESULT(no) +fi +test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +AC_LIB_PROG_LD_GNU +]) +# lib-link.m4 serial 4 (gettext-0.12) +dnl Copyright (C) 2001-2003 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Bruno Haible. + +dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and +dnl augments the CPPFLAGS variable. +AC_DEFUN([AC_LIB_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + define([Name],[translit([$1],[./-], [___])]) + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ + AC_LIB_LINKFLAGS_BODY([$1], [$2]) + ac_cv_lib[]Name[]_libs="$LIB[]NAME" + ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" + ac_cv_lib[]Name[]_cppflags="$INC[]NAME" + ]) + LIB[]NAME="$ac_cv_lib[]Name[]_libs" + LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" + INC[]NAME="$ac_cv_lib[]Name[]_cppflags" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the + dnl results of this search when this library appears as a dependency. + HAVE_LIB[]NAME=yes + undefine([Name]) + undefine([NAME]) +]) + +dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) +dnl searches for libname and the libraries corresponding to explicit and +dnl implicit dependencies, together with the specified include files and +dnl the ability to compile and link the specified testcode. If found, it +dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and +dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and +dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs +dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. +AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + define([Name],[translit([$1],[./-], [___])]) + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + + dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME + dnl accordingly. + AC_LIB_LINKFLAGS_BODY([$1], [$2]) + + dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, + dnl because if the user has installed lib[]Name and not disabled its use + dnl via --without-lib[]Name-prefix, he wants to use it. + ac_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + + AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ + ac_save_LIBS="$LIBS" + LIBS="$LIBS $LIB[]NAME" + AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) + LIBS="$ac_save_LIBS" + ]) + if test "$ac_cv_lib[]Name" = yes; then + HAVE_LIB[]NAME=yes + AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) + AC_MSG_CHECKING([how to link with lib[]$1]) + AC_MSG_RESULT([$LIB[]NAME]) + else + HAVE_LIB[]NAME=no + dnl If $LIB[]NAME didn't lead to a usable library, we don't need + dnl $INC[]NAME either. + CPPFLAGS="$ac_save_CPPFLAGS" + LIB[]NAME= + LTLIB[]NAME= + fi + AC_SUBST([HAVE_LIB]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + undefine([Name]) + undefine([NAME]) +]) + +dnl Determine the platform dependent parameters needed to use rpath: +dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, +dnl hardcode_direct, hardcode_minus_L. +AC_DEFUN([AC_LIB_RPATH], +[ + AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS + AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld + AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host + AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir + AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ]) + wl="$acl_cv_wl" + libext="$acl_cv_libext" + shlibext="$acl_cv_shlibext" + hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + hardcode_direct="$acl_cv_hardcode_direct" + hardcode_minus_L="$acl_cv_hardcode_minus_L" + dnl Determine whether the user wants rpath handling at all. + AC_ARG_ENABLE(rpath, + [ --disable-rpath do not hardcode runtime library paths], + :, enable_rpath=yes) +]) + +dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. +AC_DEFUN([AC_LIB_LINKFLAGS_BODY], +[ + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_LIB_ARG_WITH([lib$1-prefix], +[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib + --without-lib$1-prefix don't search for lib$1 in includedir and libdir], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi +]) + dnl Search the library and its dependencies in $additional_libdir and + dnl $LDFLAGS. Using breadth-first-seach. + LIB[]NAME= + LTLIB[]NAME= + INC[]NAME= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='$1 $2' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + dnl See if it was already located by an earlier AC_LIB_LINKFLAGS + dnl or AC_LIB_HAVE_LINKFLAGS call. + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" + else + dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined + dnl that this library doesn't exist. So just drop it. + : + fi + else + dnl Search the library lib$name in $additional_libdir and $LDFLAGS + dnl and the already constructed $LIBNAME/$LTLIBNAME. + found_dir= + found_la= + found_so= + found_a= + if test $use_additional = yes; then + if 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 + found_la="$additional_libdir/lib$name.la" + fi + else + if test -f "$additional_libdir/lib$name.$libext"; then + found_dir="$additional_libdir" + found_a="$additional_libdir/lib$name.$libext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if 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 + found_la="$dir/lib$name.la" + fi + else + if test -f "$dir/lib$name.$libext"; then + found_dir="$dir" + found_a="$dir/lib$name.$libext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + dnl Found the library. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + dnl Linking with a shared library. We attempt to hardcode its + dnl directory into the executable's runpath, unless it's the + dnl standard /usr/lib. + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then + dnl No hardcoding is needed. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + dnl The hardcoding into $LIBNAME is system dependent. + if test "$hardcode_direct" = yes; then + dnl Using DIR/libNAME.so during linking hardcodes DIR into the + dnl resulting binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + dnl Rely on "-L$found_dir". + dnl But don't add it if it's already contained in the LDFLAGS + dnl or the already constructed $LIBNAME + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" + fi + if test "$hardcode_minus_L" != no; then + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH + dnl here, because this doesn't fit in flags passed to the + dnl compiler. So give up. No hardcoding. This affects only + dnl very old systems. + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + dnl Linking with a static library. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" + else + dnl We shouldn't come here, but anyway it's good to have a + dnl fallback. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" + fi + fi + dnl Assume the include files are nearby. + additional_includedir= + case "$found_dir" in + */lib | */lib/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + dnl Potentially add $additional_includedir to $INCNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's /usr/local/include and we are using GCC on Linux, + dnl 3. if it's already present in $CPPFLAGS or the already + dnl constructed $INCNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INC[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $INCNAME. + INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + dnl Look for dependencies. + if test -n "$found_la"; then + dnl Read the .la file. It defines the variables + dnl dlname, library_names, old_library, dependency_libs, current, + dnl age, revision, installed, dlopen, dlpreopen, libdir. + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + dnl We use only dependency_libs. + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's /usr/local/lib and we are using GCC on Linux, + dnl 3. if it's already present in $LDFLAGS or the already + dnl constructed $LIBNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LIBNAME. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LTLIBNAME. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + dnl Handle this in the next round. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + dnl Handle this in the next round. Throw away the .la's + dnl directory; it is already contained in a preceding -L + dnl option. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + dnl Most likely an immediate library name. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" + ;; + esac + done + fi + else + dnl Didn't find the library; assume it is in the system directories + dnl known to the linker and runtime loader. (All the system + dnl directories known to the linker should also be known to the + dnl runtime loader, otherwise the system is severely misconfigured.) + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user must + dnl pass all path elements in one option. We can arrange that for a + dnl single library, but not when more than one $LIBNAMEs are used. + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" + done + dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + else + dnl The -rpath options are cumulative. + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + dnl When using libtool, the option that works for both libraries and + dnl executables is -R. The -R options are cumulative. + for found_dir in $ltrpathdirs; do + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" + done + fi +]) + +dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, +dnl unless already present in VAR. +dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes +dnl contains two or three consecutive elements that belong together. +AC_DEFUN([AC_LIB_APPENDTOVAR], +[ + for element in [$2]; do + haveit= + for x in $[$1]; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + [$1]="${[$1]}${[$1]:+ }$element" + fi + done +]) +# lib-prefix.m4 serial 2 (gettext-0.12) +dnl Copyright (C) 2001-2003 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Bruno Haible. + +dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and +dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't +dnl require excessive bracketing. +ifdef([AC_HELP_STRING], +[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], +[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) + +dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed +dnl to access previously installed libraries. The basic assumption is that +dnl a user will want packages to use other packages he previously installed +dnl with the same --prefix option. +dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate +dnl libraries, but is otherwise very convenient. +AC_DEFUN([AC_LIB_PREFIX], +[ + AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_LIB_ARG_WITH([lib-prefix], +[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib + --without-lib-prefix don't search for libraries in includedir and libdir], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi +]) + if test $use_additional = yes; then + dnl Potentially add $additional_includedir to $CPPFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's already present in $CPPFLAGS, + dnl 3. if it's /usr/local/include and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + for x in $CPPFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $CPPFLAGS. + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" + fi + fi + fi + fi + dnl Potentially add $additional_libdir to $LDFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's already present in $LDFLAGS, + dnl 3. if it's /usr/local/lib and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + for x in $LDFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LDFLAGS. + LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" + fi + fi + fi + fi + fi +]) + +dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, +dnl acl_final_exec_prefix, containing the values to which $prefix and +dnl $exec_prefix will expand at the end of the configure script. +AC_DEFUN([AC_LIB_PREPARE_PREFIX], +[ + dnl Unfortunately, prefix and exec_prefix get only finally determined + dnl at the end of configure. + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the +dnl variables prefix and exec_prefix bound to the values they will have +dnl at the end of the configure script. +AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], +[ + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + $1 + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" +]) +# nls.m4 serial 1 (gettext-0.12) +dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +AC_DEFUN([AM_NLS], +[ + AC_MSG_CHECKING([whether NLS is requested]) + dnl Default is enabled NLS + AC_ARG_ENABLE(nls, + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes) + AC_MSG_RESULT($USE_NLS) + AC_SUBST(USE_NLS) +]) + +AC_DEFUN([AM_MKINSTALLDIRS], +[ + dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly + dnl find the mkinstalldirs script in another subdir but $(top_srcdir). + dnl Try to locate it. + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + case "$ac_aux_dir" in + /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; + *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; + esac + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + AC_SUBST(MKINSTALLDIRS) +]) +# po.m4 serial 1 (gettext-0.12) +dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +dnl Checks for all prerequisites of the po subdirectory. +AC_DEFUN([AM_PO_SUBDIRS], +[ + AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AM_MKINSTALLDIRS])dnl + AC_REQUIRE([AM_NLS])dnl + + dnl Perform the following tests also if --disable-nls has been given, + dnl because they are needed for "make dist" to work. + + dnl Search for GNU msgfmt in the PATH. + dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. + dnl The second test excludes FreeBSD msgfmt. + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + + dnl Search for GNU xgettext 0.12 or newer in the PATH. + dnl The first test excludes Solaris xgettext and early GNU xgettext versions. + dnl The second test excludes FreeBSD xgettext. + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + dnl Remove leftover from FreeBSD xgettext call. + rm -f messages.po + + dnl Search for GNU msgmerge 0.11 or newer in the PATH. + AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, + [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :) + + dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. + dnl Test whether we really found GNU msgfmt. + if test "$GMSGFMT" != ":"; then + dnl If it is no GNU msgfmt we define it as : so that the + dnl Makefiles still can work. + if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && + (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + : ; + else + GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` + AC_MSG_RESULT( + [found $GMSGFMT program is not GNU msgfmt; ignore it]) + GMSGFMT=":" + fi + fi + + dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. + dnl Test whether we really found GNU xgettext. + if test "$XGETTEXT" != ":"; then + dnl If it is no GNU xgettext we define it as : so that the + dnl Makefiles still can work. + if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && + (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 + AC_MSG_RESULT( + [found xgettext program is not GNU xgettext; ignore it]) + XGETTEXT=":" + fi + dnl Remove leftover from FreeBSD xgettext call. + rm -f messages.po + fi + + AC_OUTPUT_COMMANDS([ + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + GMOFILES= + UPDATEPOFILES= + DUMMYPOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done], + [# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it + # from automake. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + ]) +]) +# progtest.m4 serial 3 (gettext-0.12) +dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1996. + +# Search path for a program which passes the given test. + +dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, +dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) +AC_DEFUN([AM_PATH_PROG_WITH_TEST], +[ +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL(ac_cv_path_$1, +[case "[$]$1" in + [[\\/]]* | ?:[[\\/]]*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in ifelse([$5], , $PATH, [$5]); do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then + AC_MSG_RESULT([$]$1) +else + AC_MSG_RESULT(no) +fi +AC_SUBST($1)dnl +]) +# stdint_h.m4 serial 3 (gettext-0.12) +dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Paul Eggert. + +# Define HAVE_STDINT_H_WITH_UINTMAX if exists, +# doesn't clash with , and declares uintmax_t. + +AC_DEFUN([jm_AC_HEADER_STDINT_H], +[ + AC_CACHE_CHECK([for stdint.h], jm_ac_cv_header_stdint_h, + [AC_TRY_COMPILE( + [#include +#include ], + [uintmax_t i = (uintmax_t) -1;], + jm_ac_cv_header_stdint_h=yes, + jm_ac_cv_header_stdint_h=no)]) + if test $jm_ac_cv_header_stdint_h = yes; then + AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1, + [Define if exists, doesn't clash with , + and declares uintmax_t. ]) + fi +]) +# uintmax_t.m4 serial 7 (gettext-0.12) +dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Paul Eggert. + +AC_PREREQ(2.13) + +# Define uintmax_t to 'unsigned long' or 'unsigned long long' +# if it is not already defined in or . + +AC_DEFUN([jm_AC_TYPE_UINTMAX_T], +[ + AC_REQUIRE([jm_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([jm_AC_HEADER_STDINT_H]) + if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then + AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG]) + test $ac_cv_type_unsigned_long_long = yes \ + && ac_type='unsigned long long' \ + || ac_type='unsigned long' + AC_DEFINE_UNQUOTED(uintmax_t, $ac_type, + [Define to unsigned long or unsigned long long + if and don't define.]) + else + AC_DEFINE(HAVE_UINTMAX_T, 1, + [Define if you have the 'uintmax_t' type in or .]) + fi +]) +# ulonglong.m4 serial 2 (fileutils-4.0.32, gettext-0.10.40) +dnl Copyright (C) 1999-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Paul Eggert. + +AC_DEFUN([jm_AC_TYPE_UNSIGNED_LONG_LONG], +[ + AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long, + [AC_TRY_LINK([unsigned long long ull = 1; int i = 63;], + [unsigned long long ullmax = (unsigned long long) -1; + return ull << i | ull >> i | ullmax / ull | ullmax % ull;], + ac_cv_type_unsigned_long_long=yes, + ac_cv_type_unsigned_long_long=no)]) + if test $ac_cv_type_unsigned_long_long = yes; then + AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1, + [Define if you have the unsigned long long type.]) + fi +]) diff --git a/bash-20060316/alias.c b/bash-20060316/alias.c new file mode 100644 index 000000000..1aa9cb11b --- /dev/null +++ b/bash-20060316/alias.c @@ -0,0 +1,574 @@ +/* alias.c -- Not a full alias, but just the kind that we use in the + shell. Csh style alias is somewhere else (`over there, in a box'). */ + +/* Copyright (C) 1987-2002 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + Bash is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with Bash; see the file COPYING. If not, write to the Free + Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#include "config.h" + +#if defined (ALIAS) + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include +#include "chartypes.h" +#include "bashansi.h" +#include "command.h" +#include "general.h" +#include "externs.h" +#include "alias.h" + +#if defined (PROGRAMMABLE_COMPLETION) +# include "pcomplete.h" +#endif + +#define ALIAS_HASH_BUCKETS 16 /* must be power of two */ + +typedef int sh_alias_map_func_t __P((alias_t *)); + +static void free_alias_data __P((PTR_T)); +static alias_t **map_over_aliases __P((sh_alias_map_func_t *)); +static void sort_aliases __P((alias_t **)); +static int qsort_alias_compare __P((alias_t **, alias_t **)); + +#if defined (READLINE) +static int skipquotes __P((char *, int)); +static int skipws __P((char *, int)); +static int rd_token __P((char *, int)); +#endif + +/* Non-zero means expand all words on the line. Otherwise, expand + after first expansion if the expansion ends in a space. */ +int alias_expand_all = 0; + +/* The list of aliases that we have. */ +HASH_TABLE *aliases = (HASH_TABLE *)NULL; + +void +initialize_aliases () +{ + if (!aliases) + aliases = hash_create (ALIAS_HASH_BUCKETS); +} + +/* Scan the list of aliases looking for one with NAME. Return NULL + if the alias doesn't exist, else a pointer to the alias_t. */ +alias_t * +find_alias (name) + char *name; +{ + BUCKET_CONTENTS *al; + + if (aliases == 0) + return ((alias_t *)NULL); + + al = hash_search (name, aliases, 0); + return (al ? (alias_t *)al->data : (alias_t *)NULL); +} + +/* Return the value of the alias for NAME, or NULL if there is none. */ +char * +get_alias_value (name) + char *name; +{ + alias_t *alias; + + if (aliases == 0) + return ((char *)NULL); + + alias = find_alias (name); + return (alias ? alias->value : (char *)NULL); +} + +/* Make a new alias from NAME and VALUE. If NAME can be found, + then replace its value. */ +void +add_alias (name, value) + char *name, *value; +{ + BUCKET_CONTENTS *elt; + alias_t *temp; + int n; + + if (!aliases) + { + initialize_aliases (); + temp = (alias_t *)NULL; + } + else + temp = find_alias (name); + + if (temp) + { + free (temp->value); + temp->value = savestring (value); + temp->flags &= ~AL_EXPANDNEXT; + n = value[strlen (value) - 1]; + if (n == ' ' || n == '\t') + temp->flags |= AL_EXPANDNEXT; + } + else + { + temp = (alias_t *)xmalloc (sizeof (alias_t)); + temp->name = savestring (name); + temp->value = savestring (value); + temp->flags = 0; + + n = value[strlen (value) - 1]; + if (n == ' ' || n == '\t') + temp->flags |= AL_EXPANDNEXT; + + elt = hash_insert (savestring (name), aliases, HASH_NOSRCH); + elt->data = temp; +#if defined (PROGRAMMABLE_COMPLETION) + set_itemlist_dirty (&it_aliases); +#endif + } +} + +/* Delete a single alias structure. */ +static void +free_alias_data (data) + PTR_T data; +{ + register alias_t *a; + + a = (alias_t *)data; + free (a->value); + free (a->name); + free (data); +} + +/* Remove the alias with name NAME from the alias table. Returns + the number of aliases left in the table, or -1 if the alias didn't + exist. */ +int +remove_alias (name) + char *name; +{ + BUCKET_CONTENTS *elt; + + if (aliases == 0) + return (-1); + + elt = hash_remove (name, aliases, 0); + if (elt) + { + free_alias_data (elt->data); + free (elt->key); /* alias name */ + free (elt); /* XXX */ +#if defined (PROGRAMMABLE_COMPLETION) + set_itemlist_dirty (&it_aliases); +#endif + return (aliases->nentries); + } + return (-1); +} + +/* Delete all aliases. */ +void +delete_all_aliases () +{ + if (aliases == 0) + return; + + hash_flush (aliases, free_alias_data); + hash_dispose (aliases); + aliases = (HASH_TABLE *)NULL; +#if defined (PROGRAMMABLE_COMPLETION) + set_itemlist_dirty (&it_aliases); +#endif +} + +/* Return an array of aliases that satisfy the conditions tested by FUNCTION. + If FUNCTION is NULL, return all aliases. */ +static alias_t ** +map_over_aliases (function) + sh_alias_map_func_t *function; +{ + register int i; + register BUCKET_CONTENTS *tlist; + alias_t *alias, **list; + int list_index; + + i = HASH_ENTRIES (aliases); + if (i == 0) + return ((alias_t **)NULL); + + list = (alias_t **)xmalloc ((i + 1) * sizeof (alias_t *)); + for (i = list_index = 0; i < aliases->nbuckets; i++) + { + for (tlist = hash_items (i, aliases); tlist; tlist = tlist->next) + { + alias = (alias_t *)tlist->data; + + if (!function || (*function) (alias)) + { + list[list_index++] = alias; + list[list_index] = (alias_t *)NULL; + } + } + } + return (list); +} + +static void +sort_aliases (array) + alias_t **array; +{ + qsort (array, strvec_len ((char **)array), sizeof (alias_t *), (QSFUNC *)qsort_alias_compare); +} + +static int +qsort_alias_compare (as1, as2) + alias_t **as1, **as2; +{ + int result; + + if ((result = (*as1)->name[0] - (*as2)->name[0]) == 0) + result = strcmp ((*as1)->name, (*as2)->name); + + return (result); +} + +/* Return a sorted list of all defined aliases */ +alias_t ** +all_aliases () +{ + alias_t **list; + + if (aliases == 0 || HASH_ENTRIES (aliases) == 0) + return ((alias_t **)NULL); + + list = map_over_aliases ((sh_alias_map_func_t *)NULL); + if (list) + sort_aliases (list); + return (list); +} + +char * +alias_expand_word (s) + char *s; +{ + alias_t *r; + + r = find_alias (s); + return (r ? savestring (r->value) : (char *)NULL); +} + +/* Readline support functions -- expand all aliases in a line. */ + +#if defined (READLINE) + +/* Return non-zero if CHARACTER is a member of the class of characters + that are self-delimiting in the shell (this really means that these + characters delimit tokens). */ +#define self_delimiting(character) (member ((character), " \t\n\r;|&()")) + +/* Return non-zero if CHARACTER is a member of the class of characters + that delimit commands in the shell. */ +#define command_separator(character) (member ((character), "\r\n;|&(")) + +/* If this is 1, we are checking the next token read for alias expansion + because it is the first word in a command. */ +static int command_word; + +/* This is for skipping quoted strings in alias expansions. */ +#define quote_char(c) (((c) == '\'') || ((c) == '"')) + +/* Consume a quoted string from STRING, starting at string[START] (so + string[START] is the opening quote character), and return the index + of the closing quote character matching the opening quote character. + This handles single matching pairs of unquoted quotes; it could afford + to be a little smarter... This skips words between balanced pairs of + quotes, words where the first character is quoted with a `\', and other + backslash-escaped characters. */ + +static int +skipquotes (string, start) + char *string; + int start; +{ + register int i; + int delimiter = string[start]; + + /* i starts at START + 1 because string[START] is the opening quote + character. */ + for (i = start + 1 ; string[i] ; i++) + { + if (string[i] == '\\') + { + i++; /* skip backslash-quoted quote characters, too */ + continue; + } + + if (string[i] == delimiter) + return i; + } + return (i); +} + +/* Skip the white space and any quoted characters in STRING, starting at + START. Return the new index into STRING, after zero or more characters + have been skipped. */ +static int +skipws (string, start) + char *string; + int start; +{ + register int i; + int pass_next, backslash_quoted_word; + unsigned char peekc; + + /* skip quoted strings, in ' or ", and words in which a character is quoted + with a `\'. */ + i = backslash_quoted_word = pass_next = 0; + + /* Skip leading whitespace (or separator characters), and quoted words. + But save it in the output. */ + + for (i = start; string[i]; i++) + { + if (pass_next) + { + pass_next = 0; + continue; + } + + if (whitespace (string[i])) + { + backslash_quoted_word = 0; /* we are no longer in a backslash-quoted word */ + continue; + } + + if (string[i] == '\\') + { + peekc = string[i+1]; + if (ISLETTER (peekc)) + backslash_quoted_word++; /* this is a backslash-quoted word */ + else + pass_next++; + continue; + } + + /* This only handles single pairs of non-escaped quotes. This + overloads backslash_quoted_word to also mean that a word like + ""f is being scanned, so that the quotes will inhibit any expansion + of the word. */ + if (quote_char(string[i])) + { + i = skipquotes (string, i); + /* This could be a line that contains a single quote character, + in which case skipquotes () terminates with string[i] == '\0' + (the end of the string). Check for that here. */ + if (string[i] == '\0') + break; + + peekc = string[i + 1]; + if (ISLETTER (peekc)) + backslash_quoted_word++; + continue; + } + + /* If we're in the middle of some kind of quoted word, let it + pass through. */ + if (backslash_quoted_word) + continue; + + /* If this character is a shell command separator, then set a hint for + alias_expand that the next token is the first word in a command. */ + + if (command_separator (string[i])) + { + command_word++; + continue; + } + break; + } + return (i); +} + +/* Characters that may appear in a token. Basically, anything except white + space and a token separator. */ +#define token_char(c) (!((whitespace (string[i]) || self_delimiting (string[i])))) + +/* Read from START in STRING until the next separator character, and return + the index of that separator. Skip backslash-quoted characters. Call + skipquotes () for quoted strings in the middle or at the end of tokens, + so all characters show up (e.g. foo'' and foo""bar) */ +static int +rd_token (string, start) + char *string; + int start; +{ + register int i; + + /* From here to next separator character is a token. */ + for (i = start; string[i] && token_char (string[i]); i++) + { + if (string[i] == '\\') + { + i++; /* skip backslash-escaped character */ + continue; + } + + /* If this character is a quote character, we want to call skipquotes + to get the whole quoted portion as part of this word. That word + will not generally match an alias, even if te unquoted word would + have. The presence of the quotes in the token serves then to + inhibit expansion. */ + if (quote_char (string[i])) + { + i = skipquotes (string, i); + /* This could be a line that contains a single quote character, + in which case skipquotes () terminates with string[i] == '\0' + (the end of the string). Check for that here. */ + if (string[i] == '\0') + break; + + /* Now string[i] is the matching quote character, and the + quoted portion of the token has been scanned. */ + continue; + } + } + return (i); +} + +/* Return a new line, with any aliases substituted. */ +char * +alias_expand (string) + char *string; +{ + register int i, j, start; + char *line, *token; + int line_len, tl, real_start, expand_next, expand_this_token; + alias_t *alias; + + line_len = strlen (string) + 1; + line = (char *)xmalloc (line_len); + token = (char *)xmalloc (line_len); + + line[0] = i = 0; + expand_next = 0; + command_word = 1; /* initialized to expand the first word on the line */ + + /* Each time through the loop we find the next word in line. If it + has an alias, substitute the alias value. If the value ends in ` ', + then try again with the next word. Else, if there is no value, or if + the value does not end in space, we are done. */ + + for (;;) + { + + token[0] = 0; + start = i; + + /* Skip white space and quoted characters */ + i = skipws (string, start); + + if (start == i && string[i] == '\0') + { + free (token); + return (line); + } + + /* copy the just-skipped characters into the output string, + expanding it if there is not enough room. */ + j = strlen (line); + tl = i - start; /* number of characters just skipped */ + RESIZE_MALLOCED_BUFFER (line, j, (tl + 1), line_len, (tl + 50)); + strncpy (line + j, string + start, tl); + line[j + tl] = '\0'; + + real_start = i; + + command_word = command_word || (command_separator (string[i])); + expand_this_token = (command_word || expand_next); + expand_next = 0; + + /* Read the next token, and copy it into TOKEN. */ + start = i; + i = rd_token (string, start); + + tl = i - start; /* token length */ + + /* If tl == 0, but we're not at the end of the string, then we have a + single-character token, probably a delimiter */ + if (tl == 0 && string[i] != '\0') + { + tl = 1; + i++; /* move past it */ + } + + strncpy (token, string + start, tl); + token [tl] = '\0'; + + /* If there is a backslash-escaped character quoted in TOKEN, + then we don't do alias expansion. This should check for all + other quoting characters, too. */ + if (xstrchr (token, '\\')) + expand_this_token = 0; + + /* If we should be expanding here, if we are expanding all words, or if + we are in a location in the string where an expansion is supposed to + take place, see if this word has a substitution. If it does, then do + the expansion. Note that we defer the alias value lookup until we + are sure we are expanding this token. */ + + if ((token[0]) && + (expand_this_token || alias_expand_all) && + (alias = find_alias (token))) + { + char *v; + int vlen, llen; + + v = alias->value; + vlen = strlen (v); + llen = strlen (line); + + /* +3 because we possibly add one more character below. */ + RESIZE_MALLOCED_BUFFER (line, llen, (vlen + 3), line_len, (vlen + 50)); + + strcpy (line + llen, v); + + if ((expand_this_token && vlen && whitespace (v[vlen - 1])) || + alias_expand_all) + expand_next = 1; + } + else + { + int llen, tlen; + + llen = strlen (line); + tlen = i - real_start; /* tlen == strlen(token) */ + + RESIZE_MALLOCED_BUFFER (line, llen, (tlen + 1), line_len, (llen + tlen + 50)); + + strncpy (line + llen, string + real_start, tlen); + line[llen + tlen] = '\0'; + } + command_word = 0; + } +} +#endif /* READLINE */ +#endif /* ALIAS */ diff --git a/bash-20060316/alias.h b/bash-20060316/alias.h new file mode 100644 index 000000000..b70b3ec0e --- /dev/null +++ b/bash-20060316/alias.h @@ -0,0 +1,70 @@ +/* alias.h -- structure definitions. */ + +/* Copyright (C) 1987,1991 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 1, or (at your option) + any later version. + + Bash is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with Bash; see the file COPYING. If not, write to the Free + Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#if !defined (_ALIAS_H_) +#define _ALIAS_H_ + +#include "stdc.h" + +#include "hashlib.h" + +typedef struct alias { + char *name; + char *value; + char flags; +} alias_t; + +/* Values for `flags' member of struct alias. */ +#define AL_EXPANDNEXT 0x1 +#define AL_BEINGEXPANDED 0x2 + +/* The list of known aliases. */ +extern HASH_TABLE *aliases; + +extern void initialize_aliases __P((void)); + +/* Scan the list of aliases looking for one with NAME. Return NULL + if the alias doesn't exist, else a pointer to the alias. */ +extern alias_t *find_alias __P((char *)); + +/* Return the value of the alias for NAME, or NULL if there is none. */ +extern char *get_alias_value __P((char *)); + +/* Make a new alias from NAME and VALUE. If NAME can be found, + then replace its value. */ +extern void add_alias __P((char *, char *)); + +/* Remove the alias with name NAME from the alias list. Returns + the index of the removed alias, or -1 if the alias didn't exist. */ +extern int remove_alias __P((char *)); + +/* Remove all aliases. */ +extern void delete_all_aliases __P((void)); + +/* Return an array of all defined aliases. */ +extern alias_t **all_aliases __P((void)); + +/* Expand a single word for aliases. */ +extern char *alias_expand_word __P((char *)); + +/* Return a new line, with any aliases expanded. */ +extern char *alias_expand __P((char *)); + +#endif /* _ALIAS_H_ */ diff --git a/bash-20060316/array.c b/bash-20060316/array.c new file mode 100644 index 000000000..c32b61344 --- /dev/null +++ b/bash-20060316/array.c @@ -0,0 +1,932 @@ +/* + * array.c - functions to create, destroy, access, and manipulate arrays + * of strings. + * + * Arrays are sparse doubly-linked lists. An element's index is stored + * with it. + * + * Chet Ramey + * chet@ins.cwru.edu + */ + +/* Copyright (C) 1997-2004 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#include "config.h" + +#if defined (ARRAY_VARS) + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include +#include "bashansi.h" + +#include "shell.h" +#include "array.h" +#include "builtins/common.h" + +#define ADD_BEFORE(ae, new) \ + do { \ + ae->prev->next = new; \ + new->prev = ae->prev; \ + ae->prev = new; \ + new->next = ae; \ + } while(0) + +static char *array_to_string_internal __P((ARRAY_ELEMENT *, ARRAY_ELEMENT *, char *, int)); + +ARRAY * +array_create() +{ + ARRAY *r; + ARRAY_ELEMENT *head; + + r =(ARRAY *)xmalloc(sizeof(ARRAY)); + r->type = array_indexed; + r->max_index = -1; + r->num_elements = 0; + head = array_create_element(-1, (char *)NULL); /* dummy head */ + head->prev = head->next = head; + r->head = head; + return(r); +} + +void +array_flush (a) +ARRAY *a; +{ + register ARRAY_ELEMENT *r, *r1; + + if (a == 0) + return; + for (r = element_forw(a->head); r != a->head; ) { + r1 = element_forw(r); + array_dispose_element(r); + r = r1; + } + a->head->next = a->head->prev = a->head; + a->max_index = -1; + a->num_elements = 0; +} + +void +array_dispose(a) +ARRAY *a; +{ + if (a == 0) + return; + array_flush (a); + array_dispose_element(a->head); + free(a); +} + +ARRAY * +array_copy(a) +ARRAY *a; +{ + ARRAY *a1; + ARRAY_ELEMENT *ae, *new; + + if (a == 0) + return((ARRAY *) NULL); + a1 = array_create(); + a1->type = a->type; + a1->max_index = a->max_index; + a1->num_elements = a->num_elements; + for (ae = element_forw(a->head); ae != a->head; ae = element_forw(ae)) { + new = array_create_element(element_index(ae), element_value(ae)); + ADD_BEFORE(a1->head, new); + } + return(a1); +} + +#ifdef INCLUDE_UNUSED +/* + * Make and return a new array composed of the elements in array A from + * S to E, inclusive. + */ +ARRAY * +array_slice(array, s, e) +ARRAY *array; +ARRAY_ELEMENT *s, *e; +{ + ARRAY *a; + ARRAY_ELEMENT *p, *n; + int i; + arrayind_t mi; + + a = array_create (); + a->type = array->type; + + for (p = s, i = 0; p != e; p = element_forw(p), i++) { + n = array_create_element (element_index(p), element_value(p)); + ADD_BEFORE(a->head, n); + mi = element_index(ae); + } + a->num_elements = i; + a->max_index = mi; + return a; +} +#endif + +/* + * Walk the array, calling FUNC once for each element, with the array + * element as the argument. + */ +void +array_walk(a, func, udata) +ARRAY *a; +sh_ae_map_func_t *func; +void *udata; +{ + register ARRAY_ELEMENT *ae; + + if (a == 0 || array_empty(a)) + return; + for (ae = element_forw(a->head); ae != a->head; ae = element_forw(ae)) + if ((*func)(ae, udata) < 0) + return; +} + +/* + * Shift the array A N elements to the left. Delete the first N elements + * and subtract N from the indices of the remaining elements. If FLAGS + * does not include AS_DISPOSE, this returns a singly-linked null-terminated + * list of elements so the caller can dispose of the chain. If FLAGS + * includes AS_DISPOSE, this function disposes of the shifted-out elements + * and returns NULL. + */ +ARRAY_ELEMENT * +array_shift(a, n, flags) +ARRAY *a; +int n, flags; +{ + register ARRAY_ELEMENT *ae, *ret; + register int i; + + if (a == 0 || array_empty(a) || n <= 0) + return ((ARRAY_ELEMENT *)NULL); + + for (i = 0, ret = ae = element_forw(a->head); ae != a->head && i < n; ae = element_forw(ae), i++) + ; + if (ae == a->head) { + /* Easy case; shifting out all of the elements */ + if (flags & AS_DISPOSE) { + array_flush (a); + return ((ARRAY_ELEMENT *)NULL); + } + for (ae = ret; element_forw(ae) != a->head; ae = element_forw(ae)) + ; + element_forw(ae) = (ARRAY_ELEMENT *)NULL; + a->head->next = a->head->prev = a->head; + a->max_index = -1; + a->num_elements = 0; + return ret; + } + /* + * ae now points to the list of elements we want to retain. + * ret points to the list we want to either destroy or return. + */ + ae->prev->next = (ARRAY_ELEMENT *)NULL; /* null-terminate RET */ + + a->head->next = ae; /* slice RET out of the array */ + ae->prev = a->head; + + for ( ; ae != a->head; ae = element_forw(ae)) + element_index(ae) -= n; /* renumber retained indices */ + + a->num_elements -= n; /* modify bookkeeping information */ + a->max_index -= n; + + if (flags & AS_DISPOSE) { + for (ae = ret; ae; ) { + ret = element_forw(ae); + array_dispose_element(ae); + ae = ret; + } + return ((ARRAY_ELEMENT *)NULL); + } + + return ret; +} + +/* + * Shift array A right N indices. If S is non-null, it becomes the value of + * the new element 0. Returns the number of elements in the array after the + * shift. + */ +int +array_rshift (a, n, s) +ARRAY *a; +int n; +char *s; +{ + register ARRAY_ELEMENT *ae, *new; + + if (a == 0 || (array_empty(a) && s == 0)) + return 0; + else if (n <= 0) + return (a->num_elements); + + ae = element_forw(a->head); + if (s) { + new = array_create_element(0, s); + ADD_BEFORE(ae, new); + a->num_elements++; + if (array_num_elements(a) == 1) /* array was empty */ + return 1; + } + + /* + * Renumber all elements in the array except the one we just added. + */ + for ( ; ae != a->head; ae = element_forw(ae)) + element_index(ae) += n; + + a->max_index = element_index(a->head->prev); + + return (a->num_elements); +} + +ARRAY_ELEMENT * +array_unshift_element(a) +ARRAY *a; +{ + return (array_shift (a, 1, 0)); +} + +int +array_shift_element(a, v) +ARRAY *a; +char *v; +{ + return (array_rshift (a, 1, v)); +} + +ARRAY * +array_quote(array) +ARRAY *array; +{ + ARRAY_ELEMENT *a; + char *t; + + if (array == 0 || array_head(array) == 0 || array_empty(array)) + return (ARRAY *)NULL; + for (a = element_forw(array->head); a != array->head; a = element_forw(a)) { + t = quote_string (a->value); + FREE(a->value); + a->value = t; + } + return array; +} + +/* + * Return a string whose elements are the members of array A beginning at + * index START and spanning NELEM members. Null elements are counted. + * Since arrays are sparse, unset array elements are not counted. + */ +char * +array_subrange (a, start, nelem, starsub, quoted) +ARRAY *a; +arrayind_t start, nelem; +int starsub, quoted; +{ + ARRAY_ELEMENT *h, *p; + arrayind_t i; + char *ifs, sep[2]; + + p = a ? array_head (a) : 0; + if (p == 0 || array_empty (a) || start > array_max_index(a)) + return ((char *)NULL); + + /* + * Find element with index START. If START corresponds to an unset + * element (arrays can be sparse), use the first element whose index + * is >= START. If START is < 0, we count START indices back from + * the end of A (not elements, even with sparse arrays -- START is an + * index). + */ + for (p = element_forw(p); p != array_head(a) && start > element_index(p); p = element_forw(p)) + ; + + if (p == a->head) + return ((char *)NULL); + + /* Starting at P, take NELEM elements, inclusive. */ + for (i = 0, h = p; p != a->head && i < nelem; i++, p = element_forw(p)) + ; + + if (starsub && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) { + ifs = getifs(); + sep[0] = ifs ? *ifs : '\0'; + } else + sep[0] = ' '; + sep[1] = '\0'; + + return (array_to_string_internal (h, p, sep, quoted)); +} + +char * +array_patsub (a, pat, rep, mflags) +ARRAY *a; +char *pat, *rep; +int mflags; +{ + ARRAY *a2; + ARRAY_ELEMENT *e; + char *t, *ifs, sifs[2]; + + if (a == 0 || array_head(a) == 0 || array_empty(a)) + return ((char *)NULL); + + a2 = array_copy(a); + for (e = element_forw(a2->head); e != a2->head; e = element_forw(e)) { + t = pat_subst(element_value(e), pat, rep, mflags); + FREE(element_value(e)); + e->value = t; + } + + if (mflags & MATCH_QUOTED) + array_quote (a2); + if (mflags & MATCH_STARSUB) { + ifs = getifs(); + sifs[0] = ifs ? *ifs : '\0'; + sifs[1] = '\0'; + t = array_to_string (a2, sifs, 0); + } else + t = array_to_string (a2, " ", 0); + array_dispose (a2); + + return t; +} + +/* + * Allocate and return a new array element with index INDEX and value + * VALUE. + */ +ARRAY_ELEMENT * +array_create_element(indx, value) +arrayind_t indx; +char *value; +{ + ARRAY_ELEMENT *r; + + r = (ARRAY_ELEMENT *)xmalloc(sizeof(ARRAY_ELEMENT)); + r->ind = indx; + r->value = value ? savestring(value) : (char *)NULL; + r->next = r->prev = (ARRAY_ELEMENT *) NULL; + return(r); +} + +#ifdef INCLUDE_UNUSED +ARRAY_ELEMENT * +array_copy_element(ae) +ARRAY_ELEMENT *ae; +{ + return(ae ? array_create_element(element_index(ae), element_value(ae)) + : (ARRAY_ELEMENT *) NULL); +} +#endif + +void +array_dispose_element(ae) +ARRAY_ELEMENT *ae; +{ + if (ae) { + FREE(ae->value); + free(ae); + } +} + +/* + * Add a new element with index I and value V to array A (a[i] = v). + */ +int +array_insert(a, i, v) +ARRAY *a; +arrayind_t i; +char *v; +{ + register ARRAY_ELEMENT *new, *ae; + + if (a == 0) + return(-1); + new = array_create_element(i, v); + if (i > array_max_index(a)) { + /* + * Hook onto the end. This also works for an empty array. + * Fast path for the common case of allocating arrays + * sequentially. + */ + ADD_BEFORE(a->head, new); + a->max_index = i; + a->num_elements++; + return(0); + } + /* + * Otherwise we search for the spot to insert it. + */ + for (ae = element_forw(a->head); ae != a->head; ae = element_forw(ae)) { + if (element_index(ae) == i) { + /* + * Replacing an existing element. + */ + array_dispose_element(new); + free(element_value(ae)); + ae->value = v ? savestring(v) : (char *)NULL; + return(0); + } else if (element_index(ae) > i) { + ADD_BEFORE(ae, new); + a->num_elements++; + return(0); + } + } + return (-1); /* problem */ +} + +/* + * Delete the element with index I from array A and return it so the + * caller can dispose of it. + */ +ARRAY_ELEMENT * +array_remove(a, i) +ARRAY *a; +arrayind_t i; +{ + register ARRAY_ELEMENT *ae; + + if (a == 0 || array_empty(a)) + return((ARRAY_ELEMENT *) NULL); + for (ae = element_forw(a->head); 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); + return(ae); + } + return((ARRAY_ELEMENT *) NULL); +} + +/* + * Return the value of a[i]. + */ +char * +array_reference(a, i) +ARRAY *a; +arrayind_t i; +{ + register ARRAY_ELEMENT *ae; + + if (a == 0 || array_empty(a)) + return((char *) NULL); + for (ae = element_forw(a->head); ae != a->head; ae = element_forw(ae)) + if (element_index(ae) == i) + return(element_value(ae)); + return((char *) NULL); +} + +/* Convenience routines for the shell to translate to and from the form used + by the rest of the code. */ + +WORD_LIST * +array_to_word_list(a) +ARRAY *a; +{ + WORD_LIST *list; + ARRAY_ELEMENT *ae; + + if (a == 0 || array_empty(a)) + return((WORD_LIST *)NULL); + list = (WORD_LIST *)NULL; + for (ae = element_forw(a->head); ae != a->head; ae = element_forw(ae)) + list = make_word_list (make_bare_word(element_value(ae)), list); + return (REVERSE_LIST(list, WORD_LIST *)); +} + +ARRAY * +array_from_word_list (list) +WORD_LIST *list; +{ + ARRAY *a; + + if (list == 0) + return((ARRAY *)NULL); + a = array_create(); + return (array_assign_list (a, list)); +} + +WORD_LIST * +array_keys_to_word_list(a) +ARRAY *a; +{ + WORD_LIST *list; + ARRAY_ELEMENT *ae; + char *t; + + if (a == 0 || array_empty(a)) + return((WORD_LIST *)NULL); + list = (WORD_LIST *)NULL; + for (ae = element_forw(a->head); ae != a->head; ae = element_forw(ae)) { + t = itos(element_index(ae)); + list = make_word_list (make_bare_word(t), list); + free(t); + } + return (REVERSE_LIST(list, WORD_LIST *)); +} + +ARRAY * +array_assign_list (array, list) +ARRAY *array; +WORD_LIST *list; +{ + register WORD_LIST *l; + register arrayind_t i; + + for (l = list, i = 0; l; l = l->next, i++) + array_insert(array, i, l->word->word); + return array; +} + +char ** +array_to_argv (a) +ARRAY *a; +{ + char **ret, *t; + int i; + ARRAY_ELEMENT *ae; + + if (a == 0 || array_empty(a)) + return ((char **)NULL); + ret = strvec_create (array_num_elements (a) + 1); + i = 0; + for (ae = element_forw(a->head); ae != a->head; ae = element_forw(ae)) { + t = element_value (ae); + ret[i++] = t ? savestring (t) : (char *)NULL; + } + ret[i] = (char *)NULL; + return (ret); +} + +/* + * Return a string that is the concatenation of all the elements in A, + * separated by SEP. + */ +static char * +array_to_string_internal (start, end, sep, quoted) +ARRAY_ELEMENT *start, *end; +char *sep; +int quoted; +{ + char *result, *t; + ARRAY_ELEMENT *ae; + int slen, rsize, rlen, reg; + + if (start == end) /* XXX - should not happen */ + return ((char *)NULL); + + slen = strlen(sep); + result = NULL; + for (rsize = rlen = 0, ae = start; ae != end; ae = element_forw(ae)) { + if (rsize == 0) + result = (char *)xmalloc (rsize = 64); + if (element_value(ae)) { + t = quoted ? quote_string(element_value(ae)) : element_value(ae); + reg = strlen(t); + RESIZE_MALLOCED_BUFFER (result, rlen, (reg + slen + 2), + rsize, rsize); + strcpy(result + rlen, t); + rlen += reg; + if (quoted && t) + free(t); + /* + * Add a separator only after non-null elements. + */ + if (element_forw(ae) != end) { + strcpy(result + rlen, sep); + rlen += slen; + } + } + } + if (result) + result[rlen] = '\0'; /* XXX */ + return(result); +} + +char * +array_to_assign (a, quoted) +ARRAY *a; +int quoted; +{ + char *result, *valstr, *is; + char indstr[INT_STRLEN_BOUND(intmax_t) + 1]; + ARRAY_ELEMENT *ae; + int rsize, rlen, elen; + + if (a == 0 || array_empty (a)) + return((char *)NULL); + + result = (char *)xmalloc (rsize = 128); + result[0] = '('; + rlen = 1; + + for (ae = element_forw(a->head); ae != a->head; ae = element_forw(ae)) { + is = inttostr (element_index(ae), indstr, sizeof(indstr)); + valstr = element_value (ae) ? sh_double_quote (element_value(ae)) + : (char *)NULL; + elen = STRLEN (indstr) + 8 + STRLEN (valstr); + RESIZE_MALLOCED_BUFFER (result, rlen, (elen + 1), rsize, rsize); + + result[rlen++] = '['; + strcpy (result + rlen, is); + rlen += STRLEN (is); + result[rlen++] = ']'; + result[rlen++] = '='; + if (valstr) { + strcpy (result + rlen, valstr); + rlen += STRLEN (valstr); + } + + if (element_forw(ae) != a->head) + result[rlen++] = ' '; + + FREE (valstr); + } + RESIZE_MALLOCED_BUFFER (result, rlen, 1, rsize, 8); + result[rlen++] = ')'; + result[rlen] = '\0'; + if (quoted) { + /* This is not as efficient as it could be... */ + valstr = sh_single_quote (result); + free (result); + result = valstr; + } + return(result); +} + +char * +array_to_string (a, sep, quoted) +ARRAY *a; +char *sep; +int quoted; +{ + if (a == 0) + return((char *)NULL); + if (array_empty(a)) + return(savestring("")); + return (array_to_string_internal (element_forw(a->head), a->head, sep, quoted)); +} + +#if defined (INCLUDE_UNUSED) || defined (TEST_ARRAY) +/* + * Return an array consisting of elements in S, separated by SEP + */ +ARRAY * +array_from_string(s, sep) +char *s, *sep; +{ + ARRAY *a; + WORD_LIST *w; + + if (s == 0) + return((ARRAY *)NULL); + w = list_string (s, sep, 0); + if (w == 0) + return((ARRAY *)NULL); + a = array_from_word_list (w); + return (a); +} +#endif + +#if defined (TEST_ARRAY) +/* + * To make a running version, compile -DTEST_ARRAY and link with: + * xmalloc.o syntax.o lib/malloc/libmalloc.a lib/sh/libsh.a + */ +int interrupt_immediately = 0; + +int +signal_is_trapped(s) +int s; +{ + return 0; +} + +void +fatal_error(const char *s, ...) +{ + fprintf(stderr, "array_test: fatal memory error\n"); + abort(); +} + +void +programming_error(const char *s, ...) +{ + fprintf(stderr, "array_test: fatal programming error\n"); + abort(); +} + +WORD_DESC * +make_bare_word (s) +const char *s; +{ + WORD_DESC *w; + + w = (WORD_DESC *)xmalloc(sizeof(WORD_DESC)); + w->word = s ? savestring(s) : savestring (""); + w->flags = 0; + return w; +} + +WORD_LIST * +make_word_list(x, l) +WORD_DESC *x; +WORD_LIST *l; +{ + WORD_LIST *w; + + w = (WORD_LIST *)xmalloc(sizeof(WORD_LIST)); + w->word = x; + w->next = l; + return w; +} + +WORD_LIST * +list_string(s, t, i) +char *s, *t; +int i; +{ + char *r, *a; + WORD_LIST *wl; + + if (s == 0) + return (WORD_LIST *)NULL; + r = savestring(s); + wl = (WORD_LIST *)NULL; + a = strtok(r, t); + while (a) { + wl = make_word_list (make_bare_word(a), wl); + a = strtok((char *)NULL, t); + } + return (REVERSE_LIST (wl, WORD_LIST *)); +} + +GENERIC_LIST * +list_reverse (list) +GENERIC_LIST *list; +{ + register GENERIC_LIST *next, *prev; + + for (prev = 0; list; ) { + next = list->next; + list->next = prev; + prev = list; + list = next; + } + return prev; +} + +char * +pat_subst(s, t, u, i) +char *s, *t, *u; +int i; +{ + return ((char *)NULL); +} + +char * +quote_string(s) +char *s; +{ + return savestring(s); +} + +print_element(ae) +ARRAY_ELEMENT *ae; +{ + char lbuf[INT_STRLEN_BOUND (intmax_t) + 1]; + + printf("array[%s] = %s\n", + inttostr (element_index(ae), lbuf, sizeof (lbuf)), + element_value(ae)); +} + +print_array(a) +ARRAY *a; +{ + printf("\n"); + array_walk(a, print_element, (void *)NULL); +} + +main() +{ + ARRAY *a, *new_a, *copy_of_a; + ARRAY_ELEMENT *ae, *aew; + char *s; + + a = array_create(); + array_insert(a, 1, "one"); + array_insert(a, 7, "seven"); + array_insert(a, 4, "four"); + array_insert(a, 1029, "one thousand twenty-nine"); + array_insert(a, 12, "twelve"); + array_insert(a, 42, "forty-two"); + print_array(a); + s = array_to_string (a, " ", 0); + printf("s = %s\n", s); + copy_of_a = array_from_string(s, " "); + printf("copy_of_a:"); + print_array(copy_of_a); + array_dispose(copy_of_a); + printf("\n"); + free(s); + ae = array_remove(a, 4); + array_dispose_element(ae); + ae = array_remove(a, 1029); + array_dispose_element(ae); + array_insert(a, 16, "sixteen"); + print_array(a); + s = array_to_string (a, " ", 0); + printf("s = %s\n", s); + copy_of_a = array_from_string(s, " "); + printf("copy_of_a:"); + print_array(copy_of_a); + array_dispose(copy_of_a); + printf("\n"); + free(s); + array_insert(a, 2, "two"); + array_insert(a, 1029, "new one thousand twenty-nine"); + array_insert(a, 0, "zero"); + array_insert(a, 134, ""); + print_array(a); + s = array_to_string (a, ":", 0); + printf("s = %s\n", s); + copy_of_a = array_from_string(s, ":"); + printf("copy_of_a:"); + print_array(copy_of_a); + array_dispose(copy_of_a); + printf("\n"); + free(s); + new_a = array_copy(a); + print_array(new_a); + s = array_to_string (new_a, ":", 0); + printf("s = %s\n", s); + copy_of_a = array_from_string(s, ":"); + free(s); + printf("copy_of_a:"); + print_array(copy_of_a); + array_shift(copy_of_a, 2, AS_DISPOSE); + printf("copy_of_a shifted by two:"); + print_array(copy_of_a); + ae = array_shift(copy_of_a, 2, 0); + printf("copy_of_a shifted by two:"); + print_array(copy_of_a); + for ( ; ae; ) { + aew = element_forw(ae); + array_dispose_element(ae); + ae = aew; + } + array_rshift(copy_of_a, 1, (char *)0); + printf("copy_of_a rshift by 1:"); + print_array(copy_of_a); + array_rshift(copy_of_a, 2, "new element zero"); + printf("copy_of_a rshift again by 2 with new element zero:"); + print_array(copy_of_a); + s = array_to_assign(copy_of_a, 0); + printf("copy_of_a=%s\n", s); + free(s); + ae = array_shift(copy_of_a, array_num_elements(copy_of_a), 0); + for ( ; ae; ) { + aew = element_forw(ae); + array_dispose_element(ae); + ae = aew; + } + array_dispose(copy_of_a); + printf("\n"); + array_dispose(a); + array_dispose(new_a); +} + +#endif /* TEST_ARRAY */ +#endif /* ARRAY_VARS */ diff --git a/bash-20060316/array.h b/bash-20060316/array.h new file mode 100644 index 000000000..8c671b79e --- /dev/null +++ b/bash-20060316/array.h @@ -0,0 +1,111 @@ +/* array.h -- definitions for the interface exported by array.c that allows + the rest of the shell to manipulate array variables. */ + +/* Copyright (C) 1997 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#ifndef _ARRAY_H_ +#define _ARRAY_H_ + +#include "stdc.h" + +typedef intmax_t arrayind_t; + +enum atype {array_indexed, array_assoc}; + +typedef struct array { + enum atype type; + arrayind_t max_index, num_elements; + struct array_element *head; +} ARRAY; + +typedef struct array_element { + arrayind_t ind; + char *value; + struct array_element *next, *prev; +} ARRAY_ELEMENT; + +typedef int sh_ae_map_func_t __P((ARRAY_ELEMENT *, void *)); + +/* Basic operations on entire arrays */ +extern ARRAY *array_create __P((void)); +extern void array_flush __P((ARRAY *)); +extern void array_dispose __P((ARRAY *)); +extern ARRAY *array_copy __P((ARRAY *)); +extern ARRAY *array_slice __P((ARRAY *, ARRAY_ELEMENT *, ARRAY_ELEMENT *)); +extern void array_walk __P((ARRAY *, sh_ae_map_func_t *, void *)); + +extern ARRAY_ELEMENT *array_shift __P((ARRAY *, int, int)); +extern int array_rshift __P((ARRAY *, int, char *)); +extern ARRAY_ELEMENT *array_unshift_element __P((ARRAY *)); +extern int array_shift_element __P((ARRAY *, char *)); +extern ARRAY *array_quote __P((ARRAY *)); + +extern char *array_subrange __P((ARRAY *, arrayind_t, arrayind_t, int, int)); +extern char *array_patsub __P((ARRAY *, char *, char *, int)); + +/* Basic operations on array elements. */ +extern ARRAY_ELEMENT *array_create_element __P((arrayind_t, char *)); +extern ARRAY_ELEMENT *array_copy_element __P((ARRAY_ELEMENT *)); +extern void array_dispose_element __P((ARRAY_ELEMENT *)); + +extern int array_insert __P((ARRAY *, arrayind_t, char *)); +extern ARRAY_ELEMENT *array_remove __P((ARRAY *, arrayind_t)); +extern char *array_reference __P((ARRAY *, arrayind_t)); + +/* Converting to and from arrays */ +extern WORD_LIST *array_to_word_list __P((ARRAY *)); +extern ARRAY *array_from_word_list __P((WORD_LIST *)); +extern WORD_LIST *array_keys_to_word_list __P((ARRAY *)); + +extern ARRAY *array_assign_list __P((ARRAY *, WORD_LIST *)); + +extern char **array_to_argv __P((ARRAY *)); + +extern char *array_to_assign __P((ARRAY *, int)); +extern char *array_to_string __P((ARRAY *, char *, int)); +extern ARRAY *array_from_string __P((char *, char *)); + +/* Flags for array_shift */ +#define AS_DISPOSE 0x01 + +#define array_num_elements(a) ((a)->num_elements) +#define array_max_index(a) ((a)->max_index) +#define array_head(a) ((a)->head) +#define array_empty(a) ((a)->num_elements == 0) + +#define element_value(ae) ((ae)->value) +#define element_index(ae) ((ae)->ind) +#define element_forw(ae) ((ae)->next) +#define element_back(ae) ((ae)->prev) + +/* Convenience */ +#define array_push(a,v) \ + do { array_rshift ((a), 1, (v)); } while (0) +#define array_pop(a) \ + do { array_dispose_element (array_shift ((a), 1, 0)); } while (0) + +#define GET_ARRAY_FROM_VAR(n, v, a) \ + do { \ + (v) = find_variable (n); \ + (a) = ((v) && array_p ((v))) ? array_cell (v) : (ARRAY *)0; \ + } while (0) + +#define ALL_ELEMENT_SUB(c) ((c) == '@' || (c) == '*') + +#endif /* _ARRAY_H_ */ diff --git a/bash-20060316/arrayfunc.c b/bash-20060316/arrayfunc.c new file mode 100644 index 000000000..1353b2d94 --- /dev/null +++ b/bash-20060316/arrayfunc.c @@ -0,0 +1,817 @@ +/* arrayfunc.c -- High-level array functions used by other parts of the shell. */ + +/* Copyright (C) 2001-2005 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#include "config.h" + +#if defined (ARRAY_VARS) + +#if defined (HAVE_UNISTD_H) +# include +#endif +#include + +#include "bashintl.h" + +#include "shell.h" + +#include "shmbutil.h" + +#include "builtins/common.h" + +extern char *this_command_name; +extern int last_command_exit_value; +extern int array_needs_making; + +static SHELL_VAR *bind_array_var_internal __P((SHELL_VAR *, arrayind_t, char *, int)); + +static void quote_array_assignment_chars __P((WORD_LIST *)); +static char *array_value_internal __P((char *, int, int, int *)); + +/* Standard error message to use when encountering an invalid array subscript */ +char *bash_badsub_errmsg = N_("bad array subscript"); + +/* **************************************************************** */ +/* */ +/* Functions to manipulate array variables and perform assignments */ +/* */ +/* **************************************************************** */ + +/* Convert a shell variable to an array variable. The original value is + saved as array[0]. */ +SHELL_VAR * +convert_var_to_array (var) + SHELL_VAR *var; +{ + char *oldval; + ARRAY *array; + + oldval = value_cell (var); + array = array_create (); + if (oldval) + array_insert (array, 0, oldval); + + FREE (value_cell (var)); + var_setarray (var, array); + + /* these aren't valid anymore */ + var->dynamic_value = (sh_var_value_func_t *)NULL; + var->assign_func = (sh_var_assign_func_t *)NULL; + + INVALIDATE_EXPORTSTR (var); + if (exported_p (var)) + array_needs_making++; + + VSETATTR (var, att_array); + VUNSETATTR (var, att_invisible); + + return var; +} + +static SHELL_VAR * +bind_array_var_internal (entry, ind, value, flags) + SHELL_VAR *entry; + arrayind_t ind; + char *value; + int flags; +{ + SHELL_VAR *dentry; + char *newval; + + /* If we're appending, we need the old value of the array reference, so + fake out make_variable_value with a dummy SHELL_VAR */ + if (flags & ASS_APPEND) + { + dentry = (SHELL_VAR *)xmalloc (sizeof (SHELL_VAR)); + dentry->name = savestring (entry->name); + newval = array_reference (array_cell (entry), ind); + if (newval) + dentry->value = savestring (newval); + else + { + dentry->value = (char *)xmalloc (1); + dentry->value[0] = '\0'; + } + dentry->exportstr = 0; + dentry->attributes = entry->attributes & ~(att_array|att_exported); + /* Leave the rest of the members uninitialized; the code doesn't look + at them. */ + newval = make_variable_value (dentry, value, flags); + dispose_variable (dentry); + } + else + newval = make_variable_value (entry, value, flags); + + if (entry->assign_func) + (*entry->assign_func) (entry, newval, ind); + else + array_insert (array_cell (entry), ind, newval); + FREE (newval); + + return (entry); +} + +/* Perform an array assignment name[ind]=value. If NAME already exists and + is not an array, and IND is 0, perform name=value instead. If NAME exists + and is not an array, and IND is not 0, convert it into an array with the + existing value as name[0]. + + If NAME does not exist, just create an array variable, no matter what + IND's value may be. */ +SHELL_VAR * +bind_array_variable (name, ind, value, flags) + char *name; + arrayind_t ind; + char *value; + int flags; +{ + SHELL_VAR *entry; + + entry = var_lookup (name, shell_variables); + + if (entry == (SHELL_VAR *) 0) + entry = make_new_array_variable (name); + else if (readonly_p (entry) || noassign_p (entry)) + { + if (readonly_p (entry)) + err_readonly (name); + return (entry); + } + else if (array_p (entry) == 0) + entry = convert_var_to_array (entry); + + /* ENTRY is an array variable, and ARRAY points to the value. */ + return (bind_array_var_internal (entry, ind, value, flags)); +} + +/* Parse NAME, a lhs of an assignment statement of the form v[s], and + assign VALUE to that array element by calling bind_array_variable(). */ +SHELL_VAR * +assign_array_element (name, value, flags) + char *name, *value; + int flags; +{ + char *sub, *vname; + arrayind_t ind; + int sublen; + SHELL_VAR *entry; + + vname = array_variable_name (name, &sub, &sublen); + + if (vname == 0) + return ((SHELL_VAR *)NULL); + + if ((ALL_ELEMENT_SUB (sub[0]) && sub[1] == ']') || (sublen <= 1)) + { + free (vname); + err_badarraysub (name); + return ((SHELL_VAR *)NULL); + } + + ind = array_expand_index (sub, sublen); + if (ind < 0) + { + free (vname); + err_badarraysub (name); + return ((SHELL_VAR *)NULL); + } + + entry = bind_array_variable (vname, ind, value, flags); + + free (vname); + return (entry); +} + +/* Find the array variable corresponding to NAME. If there is no variable, + create a new array variable. If the variable exists but is not an array, + convert it to an indexed array. If CHECK_FLAGS is non-zero, an existing + variable is checked for the readonly or noassign attribute in preparation + for assignment (e.g., by the `read' builtin). */ +SHELL_VAR * +find_or_make_array_variable (name, check_flags) + char *name; + int check_flags; +{ + SHELL_VAR *var; + + var = find_variable (name); + + if (var == 0) + var = make_new_array_variable (name); + else if (check_flags && (readonly_p (var) || noassign_p (var))) + { + if (readonly_p (var)) + err_readonly (name); + return ((SHELL_VAR *)NULL); + } + else if (array_p (var) == 0) + var = convert_var_to_array (var); + + return (var); +} + +/* Perform a compound assignment statement for array NAME, where VALUE is + the text between the parens: NAME=( VALUE ) */ +SHELL_VAR * +assign_array_from_string (name, value, flags) + char *name, *value; + int flags; +{ + SHELL_VAR *var; + + var = find_or_make_array_variable (name, 1); + if (var == 0) + return ((SHELL_VAR *)NULL); + + return (assign_array_var_from_string (var, value, flags)); +} + +/* Sequentially assign the indices of indexed array variable VAR from the + words in LIST. */ +SHELL_VAR * +assign_array_var_from_word_list (var, list, flags) + SHELL_VAR *var; + WORD_LIST *list; + int flags; +{ + register arrayind_t i; + register WORD_LIST *l; + ARRAY *a; + + a = array_cell (var); + i = (flags & ASS_APPEND) ? array_max_index (a) + 1 : 0; + + for (l = list; l; l = l->next, i++) + if (var->assign_func) + (*var->assign_func) (var, l->word->word, i); + else + array_insert (a, i, l->word->word); + return var; +} + +/* Perform a compound array assignment: VAR->name=( VALUE ). The + VALUE has already had the parentheses stripped. */ +SHELL_VAR * +assign_array_var_from_string (var, value, flags) + SHELL_VAR *var; + char *value; + int flags; +{ + ARRAY *a; + WORD_LIST *list, *nlist; + char *w, *val, *nval; + int ni, len; + arrayind_t ind, last_ind; + + if (value == 0) + return var; + + /* If this is called from declare_builtin, value[0] == '(' and + xstrchr(value, ')') != 0. In this case, we need to extract + the value from between the parens before going on. */ + if (*value == '(') /*)*/ + { + ni = 1; + val = extract_array_assignment_list (value, &ni); + if (val == 0) + return var; + } + else + val = value; + + /* Expand the value string into a list of words, performing all the + shell expansions including pathname generation and word splitting. */ + /* First we split the string on whitespace, using the shell parser + (ksh93 seems to do this). */ + list = parse_string_to_word_list (val, 1, "array assign"); + + /* If we're using [subscript]=value, we need to quote each [ and ] to + prevent unwanted filename expansion. */ + if (list) + quote_array_assignment_chars (list); + + /* Now that we've split it, perform the shell expansions on each + word in the list. */ + nlist = list ? expand_words_no_vars (list) : (WORD_LIST *)NULL; + + dispose_words (list); + + if (val != value) + free (val); + + a = array_cell (var); + + /* Now that we are ready to assign values to the array, kill the existing + value. */ + if (a && (flags & ASS_APPEND) == 0) + array_flush (a); + last_ind = (flags & ASS_APPEND) ? array_max_index (a) + 1 : 0; + + for (list = nlist; list; list = list->next) + { + w = list->word->word; + + /* We have a word of the form [ind]=value */ + if ((list->word->flags & W_ASSIGNMENT) && w[0] == '[') + { + len = skipsubscript (w, 0); + +#if 1 + /* XXX - changes for `+=' */ + if (w[len] != ']' || (w[len+1] != '=' && (w[len+1] != '+' || w[len+2] != '='))) +#else + if (w[len] != ']' || w[len+1] != '=') +#endif + { + nval = make_variable_value (var, w, flags); + if (var->assign_func) + (*var->assign_func) (var, nval, last_ind); + else + array_insert (a, last_ind, nval); + FREE (nval); + last_ind++; + continue; + } + + if (len == 1) + { + err_badarraysub (w); + continue; + } + + if (ALL_ELEMENT_SUB (w[1]) && len == 2) + { + report_error (_("%s: cannot assign to non-numeric index"), w); + continue; + } + + ind = array_expand_index (w + 1, len); + if (ind < 0) + { + err_badarraysub (w); + continue; + } + last_ind = ind; + /* XXX - changes for `+=' */ + if (w[len + 1] == '+' && w[len + 2] == '=') + { + flags |= ASS_APPEND; + val = w + len + 3; + } + else + val = w + len + 2; + } + else /* No [ind]=value, just a stray `=' */ + { + ind = last_ind; + val = w; + } + + if (integer_p (var)) + this_command_name = (char *)NULL; /* no command name for errors */ + bind_array_var_internal (var, ind, val, flags); + last_ind++; + } + + dispose_words (nlist); + return (var); +} + +/* For each word in a compound array assignment, if the word looks like + [ind]=value, quote the `[' and `]' before the `=' to protect them from + unwanted filename expansion. */ +static void +quote_array_assignment_chars (list) + WORD_LIST *list; +{ + char *s, *t, *nword; + int saw_eq; + WORD_LIST *l; + + for (l = list; l; l = l->next) + { + 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 */ + if (l->word->word[0] != '[' || xstrchr (l->word->word, '=') == 0) /* ] */ + continue; + s = nword = (char *)xmalloc (strlen (l->word->word) * 2 + 1); + saw_eq = 0; + for (t = l->word->word; *t; ) + { + if (*t == '=') + saw_eq = 1; + if (saw_eq == 0 && (*t == '[' || *t == ']')) + *s++ = '\\'; + *s++ = *t++; + } + *s = '\0'; + free (l->word->word); + l->word->word = nword; + } +} + +/* This function assumes s[i] == '['; returns with s[ret] == ']' if + an array subscript is correctly parsed. */ +int +skipsubscript (s, i) + const char *s; + int i; +{ + int count, c; +#if defined (HANDLE_MULTIBYTE) + mbstate_t state, state_bak; + size_t slength, mblength; +#endif + +#if defined (HANDLE_MULTIBYTE) + memset (&state, '\0', sizeof (mbstate_t)); + slength = strlen (s + i); +#endif + + count = 1; + while (count) + { + /* Advance one (possibly multibyte) character in S starting at I. */ +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1) + { + state_bak = state; + mblength = mbrlen (s + i, slength, &state); + + if (MB_INVALIDCH (mblength)) + { + state = state_bak; + i++; + slength--; + } + else if (MB_NULLWCH (mblength)) + return i; + else + { + i += mblength; + slength -= mblength; + } + } + else +#endif + ++i; + + c = s[i]; + + if (c == 0) + break; + else if (c == '[') + count++; + else if (c == ']') + count--; + } + + return i; +} + +/* This function is called with SUB pointing to just after the beginning + `[' of an array subscript and removes the array element to which SUB + expands from array VAR. A subscript of `*' or `@' unsets the array. */ +int +unbind_array_element (var, sub) + SHELL_VAR *var; + char *sub; +{ + int len; + arrayind_t ind; + ARRAY_ELEMENT *ae; + + len = skipsubscript (sub, 0); + if (sub[len] != ']' || len == 0) + { + builtin_error ("%s[%s: %s", var->name, sub, _(bash_badsub_errmsg)); + return -1; + } + sub[len] = '\0'; + + if (ALL_ELEMENT_SUB (sub[0]) && sub[1] == 0) + { + unbind_variable (var->name); + return (0); + } + ind = array_expand_index (sub, len+1); + if (ind < 0) + { + builtin_error ("[%s]: %s", sub, _(bash_badsub_errmsg)); + return -1; + } + ae = array_remove (array_cell (var), ind); + if (ae) + array_dispose_element (ae); + return 0; +} + +/* Format and output an array assignment in compound form VAR=(VALUES), + suitable for re-use as input. */ +void +print_array_assignment (var, quoted) + SHELL_VAR *var; + int quoted; +{ + char *vstr; + + vstr = array_to_assign (array_cell (var), quoted); + + if (vstr == 0) + printf ("%s=%s\n", var->name, quoted ? "'()'" : "()"); + else + { + printf ("%s=%s\n", var->name, vstr); + free (vstr); + } +} + +/***********************************************************************/ +/* */ +/* Utility functions to manage arrays and their contents for expansion */ +/* */ +/***********************************************************************/ + +/* Return 1 if NAME is a properly-formed array reference v[sub]. */ +int +valid_array_reference (name) + char *name; +{ + char *t; + int r, len; + + t = xstrchr (name, '['); /* ] */ + if (t) + { + *t = '\0'; + r = legal_identifier (name); + *t = '['; + if (r == 0) + return 0; + /* Check for a properly-terminated non-blank subscript. */ + len = skipsubscript (t, 0); + if (t[len] != ']' || len == 1) + return 0; + for (r = 1; r < len; r++) + if (whitespace (t[r]) == 0) + return 1; + return 0; + } + return 0; +} + +/* Expand the array index beginning at S and extending LEN characters. */ +arrayind_t +array_expand_index (s, len) + char *s; + int len; +{ + char *exp, *t; + int expok; + arrayind_t val; + + exp = (char *)xmalloc (len); + strncpy (exp, s, len - 1); + exp[len - 1] = '\0'; + t = expand_arith_string (exp); + this_command_name = (char *)NULL; + val = evalexp (t, &expok); + free (t); + free (exp); + if (expok == 0) + { + last_command_exit_value = EXECUTION_FAILURE; + jump_to_top_level (DISCARD); + } + return val; +} + +/* Return the name of the variable specified by S without any subscript. + If SUBP is non-null, return a pointer to the start of the subscript + in *SUBP. If LENP is non-null, the length of the subscript is returned + in *LENP. This returns newly-allocated memory. */ +char * +array_variable_name (s, subp, lenp) + char *s, **subp; + int *lenp; +{ + char *t, *ret; + int ind, ni; + + t = xstrchr (s, '['); + if (t == 0) + { + if (subp) + *subp = t; + if (lenp) + *lenp = 0; + return ((char *)NULL); + } + ind = t - s; + ni = skipsubscript (s, ind); + if (ni <= ind + 1 || s[ni] != ']') + { + err_badarraysub (s); + if (subp) + *subp = t; + if (lenp) + *lenp = 0; + return ((char *)NULL); + } + + *t = '\0'; + ret = savestring (s); + *t++ = '['; /* ] */ + + if (subp) + *subp = t; + if (lenp) + *lenp = ni - ind; + + return ret; +} + +/* Return the variable specified by S without any subscript. If SUBP is + non-null, return a pointer to the start of the subscript in *SUBP. + If LENP is non-null, the length of the subscript is returned in *LENP. */ +SHELL_VAR * +array_variable_part (s, subp, lenp) + char *s, **subp; + int *lenp; +{ + char *t; + SHELL_VAR *var; + + t = array_variable_name (s, subp, lenp); + if (t == 0) + return ((SHELL_VAR *)NULL); + var = find_variable (t); + + free (t); + return (var == 0 || invisible_p (var)) ? (SHELL_VAR *)0 : var; +} + +/* Return a string containing the elements in the array and subscript + described by S. If the subscript is * or @, obeys quoting rules akin + to the expansion of $* and $@ including double quoting. If RTYPE + is non-null it gets 1 if the array reference is name[@] or name[*] + and 0 otherwise. */ +static char * +array_value_internal (s, quoted, allow_all, rtype) + char *s; + int quoted, allow_all, *rtype; +{ + int len; + arrayind_t ind; + char *retval, *t, *temp; + WORD_LIST *l; + SHELL_VAR *var; + + var = array_variable_part (s, &t, &len); + + /* Expand the index, even if the variable doesn't exist, in case side + effects are needed, like ${w[i++]} where w is unset. */ +#if 0 + if (var == 0) + return (char *)NULL; +#endif + + if (len == 0) + return ((char *)NULL); /* error message already printed */ + + /* [ */ + if (ALL_ELEMENT_SUB (t[0]) && t[1] == ']') + { + if (rtype) + *rtype = 1; + if (allow_all == 0) + { + err_badarraysub (s); + return ((char *)NULL); + } + else if (var == 0 || value_cell (var) == 0) + return ((char *)NULL); + else if (array_p (var) == 0) + l = add_string_to_list (value_cell (var), (WORD_LIST *)NULL); + else + { + l = array_to_word_list (array_cell (var)); + if (l == (WORD_LIST *)NULL) + return ((char *) NULL); + } + + if (t[0] == '*' && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) + { + temp = string_list_dollar_star (l); + retval = quote_string (temp); + free (temp); + } + else /* ${name[@]} or unquoted ${name[*]} */ + retval = string_list_dollar_at (l, quoted); + + dispose_words (l); + } + else + { + if (rtype) + *rtype = 0; + ind = array_expand_index (t, len); + if (ind < 0) + { + if (var) + err_badarraysub (var->name); + else + { + t[-1] = '\0'; + err_badarraysub (s); + t[-1] = '['; /* ] */ + } + return ((char *)NULL); + } + if (var == 0) + return ((char *)NULL); + if (array_p (var) == 0) + return (ind == 0 ? value_cell (var) : (char *)NULL); + retval = array_reference (array_cell (var), ind); + } + + return retval; +} + +/* Return a string containing the elements described by the array and + subscript contained in S, obeying quoting for subscripts * and @. */ +char * +array_value (s, quoted, rtype) + char *s; + int quoted, *rtype; +{ + return (array_value_internal (s, quoted, 1, rtype)); +} + +/* Return the value of the array indexing expression S as a single string. + If ALLOW_ALL is 0, do not allow `@' and `*' subscripts. This is used + by other parts of the shell such as the arithmetic expression evaluator + in expr.c. */ +char * +get_array_value (s, allow_all, rtype) + char *s; + int allow_all, *rtype; +{ + return (array_value_internal (s, 0, allow_all, rtype)); +} + +char * +array_keys (s, quoted) + char *s; + int quoted; +{ + int len; + char *retval, *t, *temp; + WORD_LIST *l; + SHELL_VAR *var; + + var = array_variable_part (s, &t, &len); + + /* [ */ + if (var == 0 || ALL_ELEMENT_SUB (t[0]) == 0 || t[1] != ']') + return (char *)NULL; + + if (array_p (var) == 0) + l = add_string_to_list ("0", (WORD_LIST *)NULL); + else + { + l = array_keys_to_word_list (array_cell (var)); + if (l == (WORD_LIST *)NULL) + return ((char *) NULL); + } + + if (t[0] == '*' && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) + { + temp = string_list_dollar_star (l); + retval = quote_string (temp); + free (temp); + } + else /* ${!name[@]} or unquoted ${!name[*]} */ + retval = string_list_dollar_at (l, quoted); + + dispose_words (l); + return retval; +} +#endif /* ARRAY_VARS */ diff --git a/bash-20060316/arrayfunc.h b/bash-20060316/arrayfunc.h new file mode 100644 index 000000000..3c4f9a074 --- /dev/null +++ b/bash-20060316/arrayfunc.h @@ -0,0 +1,55 @@ +/* arrayfunc.h -- declarations for miscellaneous array functions in arrayfunc.c */ + +/* Copyright (C) 2001-2004 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + Bash is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with Bash; see the file COPYING. If not, write to the Free + Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#if !defined (_ARRAYFUNC_H_) +#define _ARRAYFUNC_H_ + +/* Must include variables.h before including this file. */ + +#if defined (ARRAY_VARS) + +extern SHELL_VAR *convert_var_to_array __P((SHELL_VAR *)); + +extern SHELL_VAR *bind_array_variable __P((char *, arrayind_t, char *, int)); +extern SHELL_VAR *assign_array_element __P((char *, char *, int)); + +extern SHELL_VAR *find_or_make_array_variable __P((char *, int)); + +extern SHELL_VAR *assign_array_from_string __P((char *, char *, int)); +extern SHELL_VAR *assign_array_var_from_word_list __P((SHELL_VAR *, WORD_LIST *, int)); +extern SHELL_VAR *assign_array_var_from_string __P((SHELL_VAR *, char *, int)); + +extern int unbind_array_element __P((SHELL_VAR *, char *)); +extern int skipsubscript __P((const char *, int)); +extern void print_array_assignment __P((SHELL_VAR *, int)); + +extern arrayind_t array_expand_index __P((char *, int)); +extern int valid_array_reference __P((char *)); +extern char *array_value __P((char *, int, int *)); +extern char *get_array_value __P((char *, int, int *)); + +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 *)); + +#endif + +#endif /* !_ARRAYFUNC_H_ */ diff --git a/bash-20060316/autom4te-2.53.cache/output.0 b/bash-20060316/autom4te-2.53.cache/output.0 new file mode 100644 index 000000000..4b7ad7610 --- /dev/null +++ b/bash-20060316/autom4te-2.53.cache/output.0 @@ -0,0 +1,24653 @@ +@%:@! /bin/sh +@%:@ From configure.in for Bash 3.1, version 3.183. +@%:@ Guess values for system-dependent variables and create Makefiles. +@%:@ Generated by GNU Autoconf 2.53 for bash 3.1-release. +@%:@ +@%:@ Report bugs to . +@%:@ +@%:@ Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +@%:@ Free Software Foundation, Inc. +@%:@ This configure script is free software; the Free Software Foundation +@%:@ gives unlimited permission to copy, distribute and modify it. + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + + +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# NLS nuisances. +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + +(set +x; test -n "`(LANG=C; export LANG) 2>&1`") && + { $as_unset LANG || test "${LANG+set}" != set; } || + { LANG=C; export LANG; } +(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && + { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || + { LC_ALL=C; export LC_ALL; } +(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && + { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || + { LC_TIME=C; export LC_TIME; } +(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && + { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || + { LC_CTYPE=C; export LC_CTYPE; } +(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && + { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || + { LANGUAGE=C; export LANGUAGE; } +(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && + { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || + { LC_COLLATE=C; export LC_COLLATE; } +(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && + { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || + { LC_NUMERIC=C; export LC_NUMERIC; } +(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && + { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || + { LC_MESSAGES=C; export LC_MESSAGES; } + + +# Name of the executable. +as_me=`(basename "$0") 2>/dev/null || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + +# PATH needs CR, and LINENO needs CR and PATH. +# 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 + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conftest.sh + echo "exit 0" >>conftest.sh + chmod +x conftest.sh + if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conftest.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + 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 + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + 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=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # 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 before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, 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 + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { 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 sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="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="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } + + +# 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` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME='bash' +PACKAGE_TARNAME='bash' +PACKAGE_VERSION='3.1-release' +PACKAGE_STRING='bash 3.1-release' +PACKAGE_BUGREPORT='bug-bash@gnu.org' + +ac_unique_file="shell.h" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + 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 && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + 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 +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_DEBUGGER_START_FILE_set=${DEBUGGER_START_FILE+set} +ac_env_DEBUGGER_START_FILE_value=$DEBUGGER_START_FILE +ac_cv_env_DEBUGGER_START_FILE_set=${DEBUGGER_START_FILE+set} +ac_cv_env_DEBUGGER_START_FILE_value=$DEBUGGER_START_FILE +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP + +# +# Report the --help message. +# +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 3.1-release to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --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 + --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 + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of bash 3.1-release:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-minimal-config a minimal sh-like configuration + --enable-alias enable shell aliases + --enable-arith-for-command + enable arithmetic for command + --enable-array-variables + include shell array variables + --enable-bang-history turn on csh-style history substitution + --enable-brace-expansion + include brace expansion + --enable-command-timing enable the time reserved word and command timing + --enable-cond-command enable the conditional command + --enable-cond-regexp enable extgended regular expression matching in + conditional commands + --enable-debugger enable support for bash debugger + --enable-directory-stack + enable builtins pushd/popd/dirs + --enable-disabled-builtins + allow disabled builtins to still be invoked + --enable-dparen-arithmetic + include ((...)) command + --enable-extended-glob include ksh-style extended pattern matching + --enable-help-builtin include the help builtin + --enable-history turn on command history + --enable-job-control enable job control features + --enable-multibyte enable multibyte characters if OS supports them + --enable-net-redirections + enable /dev/tcp/host/port redirection + --enable-process-substitution + enable process substitution + --enable-progcomp enable programmable completion and the complete + builtin + --enable-prompt-string-decoding + turn on escape character decoding in prompts + --enable-readline turn on command line editing + --enable-restricted enable a restricted shell + --enable-select include select command + --enable-separate-helpfiles + use external files for help builtin documentation + --enable-single-help-strings + store help documentation as a single string to ease + translation + --enable-strict-posix-default + configure bash to be posix-conformant by default + --enable-usg-echo-default + a synonym for --enable-xpg-echo-default + --enable-xpg-echo-default + make the echo builtin expand escape sequences by + default + --enable-mem-scramble scramble memory on calls to malloc and free + --enable-profiling allow profiling with gprof + --enable-static-link link bash statically, for use as a root shell + --disable-largefile omit support for large files + --disable-nls do not use Native Language Support + --disable-rpath do not hardcode runtime library paths + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-lispdir override the default lisp directory + --with-afs if you are running AFS + --with-bash-malloc use the Bash version of malloc + --with-curses use the curses library instead of the termcap + library + --with-gnu-malloc synonym for --with-bash-malloc + --with-installed-readline + use a version of the readline library that is + already installed + --with-purecov configure to postprocess with pure coverage + --with-purify configure to postprocess with purify + --with-gnu-ld assume the C compiler uses GNU ld default=no + --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib + --without-libiconv-prefix don't search for libiconv in includedir and libdir + --with-included-gettext use the GNU gettext library included here + --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib + --without-libintl-prefix don't search for libintl in includedir and libdir + +Some influential environment variables: + DEBUGGER_START_FILE + location of bash debugger initialization file + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF +bash configure 3.1-release +generated by GNU Autoconf 2.53 + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +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 0 +fi +exec 5>config.log +cat >&5 <<_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 3.1-release, which was +generated by GNU Autoconf 2.53. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +@%:@@%:@ --------- @%:@@%:@ +@%:@@%:@ Platform. @%:@@%:@ +@%:@@%:@ --------- @%:@@%:@ + +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` + +/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` +hostinfo = `(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` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +@%:@@%:@ ----------- @%:@@%:@ +@%:@@%:@ Core tests. @%:@@%:@ +@%:@@%:@ ----------- @%:@@%:@ + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Also quote any args containing shell meta-characters. +ac_configure_args= +ac_sep= +for ac_arg +do + case $ac_arg in + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n ) continue ;; + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + ac_sep=" " ;; + esac + # Get rid of the leading space. +done + +# 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: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + cat <<\_ASBOX +@%:@@%:@ ---------------- @%:@@%:@ +@%:@@%:@ Cache variables. @%:@@%:@ +@%:@@%:@ ---------------- @%:@@%:@ +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + if test -s confdefs.h; then + cat <<\_ASBOX +@%:@@%:@ ----------- @%:@@%:@ +@%:@@%:@ confdefs.h. @%:@@%:@ +@%:@@%:@ ----------- @%:@@%:@ +_ASBOX + echo + sed "/^$/d" confdefs.h + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core core.* *.core && + rm -rf 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 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +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 + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; 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,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +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 + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`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 + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +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 + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in ./support $srcdir/./support" >&5 +echo "$as_me: error: cannot find install-sh or install.sh in ./support $srcdir/./support" >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +ac_config_headers="$ac_config_headers config.h" + + +BASHVERS=3.1 +RELSTATUS=release + +case "$RELSTATUS" in +alp*|bet*|dev*|rc*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; +*) DEBUG= MALLOC_DEBUG= ;; +esac + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + + +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-lispdir or --without-lispdir was given. +if test "${with_lispdir+set}" = set; then + withval="$with_lispdir" + lispdir="$withval" + echo "$as_me:$LINENO: checking where .elc files should go" >&5 +echo $ECHO_N "checking where .elc files should go... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $lispdir" >&5 +echo "${ECHO_T}$lispdir" >&6 +else + + # If set to t, that means we are running in a shell under Emacs. + # If you have an Emacs named "t", then use the full path. + test x"$EMACS" = xt && EMACS= + for ac_prog in emacs xemacs +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_EMACS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$EMACS"; then + ac_cv_prog_EMACS="$EMACS" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_EMACS="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +EMACS=$ac_cv_prog_EMACS +if test -n "$EMACS"; then + echo "$as_me:$LINENO: result: $EMACS" >&5 +echo "${ECHO_T}$EMACS" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$EMACS" && break +done +test -n "$EMACS" || EMACS="no" + + if test $EMACS != "no"; then + if test x${lispdir+set} != xset; then + echo "$as_me:$LINENO: checking where .elc files should go" >&5 +echo $ECHO_N "checking where .elc files should go... $ECHO_C" >&6 +if test "${am_cv_lispdir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + am_cv_lispdir=`$EMACS -batch -q -eval '(while load-path (princ (concat (car load-path) "\n")) (setq load-path (cdr load-path)))' | sed -n -e 's,/$,,' -e '/.*\/lib\/\(x\?emacs\/site-lisp\)$/{s,,${libdir}/\1,;p;q;}' -e '/.*\/share\/\(x\?emacs\/site-lisp\)$/{s,,${datadir}/\1,;p;q;}'` + if test -z "$am_cv_lispdir"; then + am_cv_lispdir='${datadir}/emacs/site-lisp' + fi + +fi +echo "$as_me:$LINENO: result: $am_cv_lispdir" >&5 +echo "${ECHO_T}$am_cv_lispdir" >&6 + lispdir="$am_cv_lispdir" + fi + fi + +fi; + + + + + +# Check whether --with-afs or --without-afs was given. +if test "${with_afs+set}" = set; then + withval="$with_afs" + opt_afs=$withval +fi; + +# Check whether --with-bash-malloc or --without-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 or --without-curses was given. +if test "${with_curses+set}" = set; then + withval="$with_curses" + opt_curses=$withval +fi; + +# Check whether --with-gnu-malloc or --without-gnu-malloc was given. +if test "${with_gnu_malloc+set}" = set; then + withval="$with_gnu_malloc" + opt_bash_malloc=$withval +fi; + +# Check whether --with-installed-readline or --without-installed-readline was given. +if test "${with_installed_readline+set}" = set; then + withval="$with_installed_readline" + opt_with_installed_readline=$withval +fi; + +# Check whether --with-purecov or --without-purecov was given. +if test "${with_purecov+set}" = set; then + withval="$with_purecov" + opt_purecov=$withval +fi; + +# Check whether --with-purify or --without-purify was given. +if test "${with_purify+set}" = set; then + withval="$with_purify" + opt_purify=$withval +fi; + +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)' + + cat >>confdefs.h <<\_ACEOF +@%:@define USING_BASH_MALLOC 1 +_ACEOF + +else + MALLOC_LIB= + MALLOC_LIBRARY= + MALLOC_LDFLAGS= + MALLOC_DEP= +fi + +if test "$opt_purify" = yes; then + PURIFY="purify " + cat >>confdefs.h <<\_ACEOF +@%:@define DISABLE_MALLOC_WRAPPERS 1 +_ACEOF + +else + PURIFY= +fi + +if test "$opt_purecov" = yes; then + PURIFY="${PURIFY}purecov" +fi + +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=${ac_default_prefix}/lib/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_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_static_link=no +opt_profiling=no + +# Check whether --enable-minimal-config or --disable-minimal-config was given. +if test "${enable_minimal_config+set}" = set; then + enableval="$enable_minimal_config" + opt_minimal_config=$enableval +fi; + +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 +fi + +# Check whether --enable-alias or --disable-alias was given. +if test "${enable_alias+set}" = set; then + enableval="$enable_alias" + opt_alias=$enableval +fi; +# Check whether --enable-arith-for-command or --disable-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; +# Check whether --enable-array-variables or --disable-array-variables was given. +if test "${enable_array_variables+set}" = set; then + enableval="$enable_array_variables" + opt_array_variables=$enableval +fi; +# Check whether --enable-bang-history or --disable-bang-history was given. +if test "${enable_bang_history+set}" = set; then + enableval="$enable_bang_history" + opt_bang_history=$enableval +fi; +# Check whether --enable-brace-expansion or --disable-brace-expansion was given. +if test "${enable_brace_expansion+set}" = set; then + enableval="$enable_brace_expansion" + opt_brace_expansion=$enableval +fi; +# Check whether --enable-command-timing or --disable-command-timing was given. +if test "${enable_command_timing+set}" = set; then + enableval="$enable_command_timing" + opt_command_timing=$enableval +fi; +# Check whether --enable-cond-command or --disable-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 or --disable-cond-regexp was given. +if test "${enable_cond_regexp+set}" = set; then + enableval="$enable_cond_regexp" + opt_cond_regexp=$enableval +fi; +# Check whether --enable-debugger or --disable-debugger was given. +if test "${enable_debugger+set}" = set; then + enableval="$enable_debugger" + opt_debugger=$enableval +fi; +# Check whether --enable-directory-stack or --disable-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 or --disable-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 or --disable-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 or --disable-extended-glob was given. +if test "${enable_extended_glob+set}" = set; then + enableval="$enable_extended_glob" + opt_extended_glob=$enableval +fi; +# Check whether --enable-help-builtin or --disable-help-builtin was given. +if test "${enable_help_builtin+set}" = set; then + enableval="$enable_help_builtin" + opt_help=$enableval +fi; +# Check whether --enable-history or --disable-history was given. +if test "${enable_history+set}" = set; then + enableval="$enable_history" + opt_history=$enableval +fi; +# Check whether --enable-job-control or --disable-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 or --disable-multibyte was given. +if test "${enable_multibyte+set}" = set; then + enableval="$enable_multibyte" + opt_multibyte=$enableval +fi; +# Check whether --enable-net-redirections or --disable-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 or --disable-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 or --disable-progcomp was given. +if test "${enable_progcomp+set}" = set; then + enableval="$enable_progcomp" + opt_progcomp=$enableval +fi; +# Check whether --enable-prompt-string-decoding or --disable-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 or --disable-readline was given. +if test "${enable_readline+set}" = set; then + enableval="$enable_readline" + opt_readline=$enableval +fi; +# Check whether --enable-restricted or --disable-restricted was given. +if test "${enable_restricted+set}" = set; then + enableval="$enable_restricted" + opt_restricted=$enableval +fi; +# Check whether --enable-select or --disable-select was given. +if test "${enable_select+set}" = set; then + enableval="$enable_select" + opt_select=$enableval +fi; +# Check whether --enable-separate-helpfiles or --disable-separate-helpfiles was given. +if test "${enable_separate_helpfiles+set}" = set; then + enableval="$enable_separate_helpfiles" + opt_separate_help=$enableval +fi; +# Check whether --enable-single-help-strings or --disable-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 or --disable-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 or --disable-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 or --disable-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 or --disable-mem-scramble was given. +if test "${enable_mem_scramble+set}" = set; then + enableval="$enable_mem_scramble" + opt_memscramble=$enableval +fi; +# Check whether --enable-profiling or --disable-profiling was given. +if test "${enable_profiling+set}" = set; then + enableval="$enable_profiling" + opt_profiling=$enableval +fi; +# Check whether --enable-static-link or --disable-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 +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 + +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 + +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 + +fi +if test $opt_help = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define HELP_BUILTIN 1 +_ACEOF + +fi +if test $opt_array_variables = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define ARRAY_VARS 1 +_ACEOF + +fi +if test $opt_dparen_arith = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define DPAREN_ARITHMETIC 1 +_ACEOF + +fi +if test $opt_brace_expansion = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define BRACE_EXPANSION 1 +_ACEOF + +fi +if test $opt_disabled_builtins = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define DISABLED_BUILTINS 1 +_ACEOF + +fi +if test $opt_command_timing = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define COMMAND_TIMING 1 +_ACEOF + +fi +if test $opt_xpg_echo = yes ; then +cat >>confdefs.h <<\_ACEOF +@%:@define DEFAULT_ECHO_TO_XPG 1 +_ACEOF + +fi +if test $opt_strict_posix = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define STRICT_POSIX 1 +_ACEOF + +fi +if test $opt_extended_glob = yes ; then +cat >>confdefs.h <<\_ACEOF +@%:@define EXTENDED_GLOB 1 +_ACEOF + +fi +if test $opt_cond_command = yes ; then +cat >>confdefs.h <<\_ACEOF +@%:@define COND_COMMAND 1 +_ACEOF + +fi +if test $opt_cond_regexp = yes ; then +cat >>confdefs.h <<\_ACEOF +@%:@define COND_REGEXP 1 +_ACEOF + +fi +if test $opt_arith_for_command = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define ARITH_FOR_COMMAND 1 +_ACEOF + +fi +if test $opt_net_redirs = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define NETWORK_REDIRECTIONS 1 +_ACEOF + +fi +if test $opt_progcomp = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define PROGRAMMABLE_COMPLETION 1 +_ACEOF + +fi +if test $opt_multibyte = no; then +cat >>confdefs.h <<\_ACEOF +@%:@define NO_MULTIBYTE_SUPPORT 1 +_ACEOF + +fi +if test $opt_debugger = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define DEBUGGER 1 +_ACEOF + +fi + +if test $opt_memscramble = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define MEMSCRAMBLE 1 +_ACEOF + +fi + +if test "$opt_minimal_config" = yes; then + TESTSCRIPT=run-minimal +else + TESTSCRIPT=run-all +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' +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +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_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" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $@%:@ != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + set dummy "$as_dir/$ac_word" ${1+"$@"} + shift + ac_cv_prog_CC="$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + 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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH" >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH" >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe" +# 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. +echo "$as_me:$LINENO: checking for C compiler default output" >&5 +echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +for ac_file in `ls a_out.exe a.exe conftest.exe 2>/dev/null; + ls a.out conftest 2>/dev/null; + ls a.* conftest.* 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb | *.xSYM ) ;; + a.out ) # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool --akim. + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables" >&5 +echo "$as_me: error: C compiler cannot create executables" >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + 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 + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; 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 +# `rm'. +for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link" >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link" >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile" >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile" >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_compiler_gnu=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_prog_cc_g=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +@%:@ifndef __cplusplus + choke me +@%:@endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + ''\ + '#include ' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +@%:@include +$ac_declaration +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +continue +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_declaration +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext +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 + + + + + echo "$as_me:$LINENO: checking for strerror in -lcposix" >&5 +echo $ECHO_N "checking for strerror in -lcposix... $ECHO_C" >&6 +if test "${ac_cv_lib_cposix_strerror+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcposix $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strerror (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +strerror (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_cposix_strerror=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_cposix_strerror=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_cposix_strerror" >&5 +echo "${ECHO_T}$ac_cv_lib_cposix_strerror" >&6 +if test $ac_cv_lib_cposix_strerror = yes; then + LIBS="$LIBS -lcposix" +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 +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&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 + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # 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 +#line $LINENO "configure" +#include "confdefs.h" +@%:@include + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +@%:@include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err 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 + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # 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 +#line $LINENO "configure" +#include "confdefs.h" +@%:@include + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +@%:@include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err 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 + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check" >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} + { (exit 1); exit 1; }; } +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 + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#include +#include + +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_header_stdc=no +fi +rm -f conftest.err 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 +#line $LINENO "configure" +#include "confdefs.h" +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +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 +#line $LINENO "configure" +#include "confdefs.h" +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +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 + : +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +@%:@define STDC_HEADERS 1 +_ACEOF + +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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default + +@%:@include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_Header=no" +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +if test "${ac_cv_header_minix_config_h+set}" = set; then + echo "$as_me:$LINENO: checking for minix/config.h" >&5 +echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6 +if test "${ac_cv_header_minix_config_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 +echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking minix/config.h usability" >&5 +echo $ECHO_N "checking minix/config.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +@%:@include +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking minix/config.h presence" >&5 +echo $ECHO_N "checking minix/config.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +@%:@include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: minix/config.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: minix/config.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: minix/config.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for minix/config.h" >&5 +echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6 +if test "${ac_cv_header_minix_config_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_minix_config_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 +echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6 + +fi +if test $ac_cv_header_minix_config_h = 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 + + +cat >>confdefs.h <<\_ACEOF +@%:@define _MINIX 1 +_ACEOF + +fi + + +# Check whether --enable-largefile or --disable-largefile was given. +if test "${enable_largefile+set}" = set; then + enableval="$enable_largefile" + +fi; +if test "$enable_largefile" != no; then + + echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5 +echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_largefile_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + 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 +#line $LINENO "configure" +#include "confdefs.h" +@%:@include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + ; + return 0; +} +_ACEOF + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext + CC="$CC -n32" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_largefile_CC=' -n32'; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5 +echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6 + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_file_offset_bits+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + while :; do + ac_cv_sys_file_offset_bits=no + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +@%:@include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +@%:@define _FILE_OFFSET_BITS 64 +@%:@include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_file_offset_bits=64; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + break +done +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5 +echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6 +if test "$ac_cv_sys_file_offset_bits" != no; then + +cat >>confdefs.h <<_ACEOF +@%:@define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits +_ACEOF + +fi +rm -f conftest* + echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5 +echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_large_files+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + while :; do + ac_cv_sys_large_files=no + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +@%:@include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +@%:@define _LARGE_FILES 1 +@%:@include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_large_files=1; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + break +done +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5 +echo "${ECHO_T}$ac_cv_sys_large_files" >&6 +if test "$ac_cv_sys_large_files" != no; then + +cat >>confdefs.h <<_ACEOF +@%:@define _LARGE_FILES $ac_cv_sys_large_files +_ACEOF + +fi +rm -f conftest* +fi + + + +SIGNAMES_H=lsignames.h + + + +if test "x$cross_compiling" = "xyes"; then + case "${host}" in + *-cygwin*) + cross_cache=${srcdir}/cross-build/cygwin32.cache + SIGNAMES_H='$(srcdir)/cross-build/win32sig.h' + ;; + *-mingw*) + cross_cache=${srcdir}/cross-build/cygwin32.cache + ;; + i[3456]86-*-beos*) + cross_cache=${srcdir}/cross-build/x86-beos.cache + SIGNAMES_H='${srcdir}/cross-build/beos-sig.h' + ;; + *) 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 + CROSS_COMPILE='-DCROSS_COMPILING' + +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 + +test -n "$GCC" && test -n "$auto_cflags" && CFLAGS="$CFLAGS -O2" + +if test "$opt_profiling" = "yes"; then + PROFILE_FLAGS=-pg + case "$host_os" in + solaris2*) ;; + *) opt_static_link=yes ;; + esac + DEBUG= MALLOC_DEBUG= +fi + +if test "$opt_static_link" = yes; then + # 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" + case "$host_os" in + solaris2*) ;; + *) LDFLAGS="$LDFLAGS -static" ;; # XXX experimental + esac + fi +fi + +if test "X$cross_compiling" = "Xno"; then + CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-"$CPPFLAGS"} + LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'} +else + CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-""} + LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-""} +fi + +test -z "$CFLAGS_FOR_BUILD" && CFLAGS_FOR_BUILD="-g" + + + + + + + + + + +if test $ac_cv_c_compiler_gnu = yes; then + echo "$as_me:$LINENO: checking whether $CC needs -traditional" >&5 +echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6 +if test "${ac_cv_prog_gcc_traditional+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_pattern="Autoconf.*'x'" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +Autoconf TIOCGETP +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "$ac_pattern" >/dev/null 2>&1; then + ac_cv_prog_gcc_traditional=yes +else + ac_cv_prog_gcc_traditional=no +fi +rm -f conftest* + + + if test $ac_cv_prog_gcc_traditional = no; then + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +Autoconf TCGETA +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "$ac_pattern" >/dev/null 2>&1; then + ac_cv_prog_gcc_traditional=yes +fi +rm -f conftest* + + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_gcc_traditional" >&5 +echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6 + if test $ac_cv_prog_gcc_traditional = yes; then + CC="$CC -traditional" + fi +fi + + + +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 + + +if test "X$bash_cv_termcap_lib" = "X"; then +_bash_needmsg=yes +else +echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 +_bash_needmsg= +fi +if test "${bash_cv_termcap_lib+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for tgetent" >&5 +echo $ECHO_N "checking for tgetent... $ECHO_C" >&6 +if test "${ac_cv_func_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char tgetent (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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 +#else +f = tgetent; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_tgetent=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_tgetent" >&5 +echo "${ECHO_T}$ac_cv_func_tgetent" >&6 +if test $ac_cv_func_tgetent = yes; then + bash_cv_termcap_lib=libc +else + echo "$as_me:$LINENO: checking for tgetent in -ltermcap" >&5 +echo $ECHO_N "checking for tgetent in -ltermcap... $ECHO_C" >&6 +if test "${ac_cv_lib_termcap_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ltermcap $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_termcap_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_termcap_tgetent=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_termcap_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_termcap_tgetent" >&6 +if test $ac_cv_lib_termcap_tgetent = yes; then + bash_cv_termcap_lib=libtermcap +else + echo "$as_me:$LINENO: checking for tgetent in -ltinfo" >&5 +echo $ECHO_N "checking for tgetent in -ltinfo... $ECHO_C" >&6 +if test "${ac_cv_lib_tinfo_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ltinfo $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_tinfo_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_tinfo_tgetent=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_tinfo_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_tinfo_tgetent" >&6 +if test $ac_cv_lib_tinfo_tgetent = yes; then + bash_cv_termcap_lib=libtinfo +else + echo "$as_me:$LINENO: checking for tgetent in -lcurses" >&5 +echo $ECHO_N "checking for tgetent in -lcurses... $ECHO_C" >&6 +if test "${ac_cv_lib_curses_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcurses $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_curses_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_curses_tgetent=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_curses_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_curses_tgetent" >&6 +if test $ac_cv_lib_curses_tgetent = yes; then + bash_cv_termcap_lib=libcurses +else + echo "$as_me:$LINENO: checking for tgetent in -lncurses" >&5 +echo $ECHO_N "checking for tgetent in -lncurses... $ECHO_C" >&6 +if test "${ac_cv_lib_ncurses_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lncurses $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_ncurses_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_ncurses_tgetent=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_ncurses_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_ncurses_tgetent" >&6 +if test $ac_cv_lib_ncurses_tgetent = yes; then + bash_cv_termcap_lib=libncurses +else + bash_cv_termcap_lib=gnutermcap +fi + +fi + +fi + +fi + +fi + +fi + +if test "X$_bash_needmsg" = "Xyes"; then +echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: using $bash_cv_termcap_lib" >&5 +echo "${ECHO_T}using $bash_cv_termcap_lib" >&6 +if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then +LDFLAGS="$LDFLAGS -L./lib/termcap" +TERMCAP_LIB="./lib/termcap/libtermcap.a" +TERMCAP_DEP="./lib/termcap/libtermcap.a" +elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then +TERMCAP_LIB=-ltermcap +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libtinfo; then +TERMCAP_LIB=-ltinfo +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libncurses; then +TERMCAP_LIB=-lncurses +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libc; then +TERMCAP_LIB= +TERMCAP_DEP= +else +TERMCAP_LIB=-lcurses +TERMCAP_DEP= +fi + + + + +echo "$as_me:$LINENO: checking version of installed readline library" >&5 +echo $ECHO_N "checking version of installed readline library... $ECHO_C" >&6 + +# What a pain in the ass this is. + +# save cpp and ld options +_save_CFLAGS="$CFLAGS" +_save_LDFLAGS="$LDFLAGS" +_save_LIBS="$LIBS" + +# Don't set ac_cv_rl_prefix if the caller has already assigned a value. This +# allows the caller to do something like $_rl_prefix=$withval if the user +# specifies --with-installed-readline=PREFIX as an argument to configure + +if test -z "$ac_cv_rl_prefix"; then +test "x$prefix" = xNONE && ac_cv_rl_prefix=$ac_default_prefix || ac_cv_rl_prefix=${prefix} +fi + +eval ac_cv_rl_includedir=${ac_cv_rl_prefix}/include +eval ac_cv_rl_libdir=${ac_cv_rl_prefix}/lib + +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 + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_rl_version='4.2' +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#include +#include + +extern int rl_gnu_readline_p; + +main() +{ + FILE *fp; + fp = fopen("conftest.rlv", "w"); + if (fp == 0) + exit(1); + if (rl_gnu_readline_p != 1) + fprintf(fp, "0.0\n"); + else + fprintf(fp, "%s\n", rl_library_version ? rl_library_version : "0.0"); + fclose(fp); + exit(0); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_rl_version=`cat conftest.rlv` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +ac_cv_rl_version='0.0' +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + + +CFLAGS="$_save_CFLAGS" +LDFLAGS="$_save_LDFLAGS" +LIBS="$_save_LIBS" + +RL_MAJOR=0 +RL_MINOR=0 + +# ( +case "$ac_cv_rl_version" in +2*|3*|4*|5*|6*|7*|8*|9*) + RL_MAJOR=`echo $ac_cv_rl_version | sed 's:\..*$::'` + RL_MINOR=`echo $ac_cv_rl_version | sed -e 's:^.*\.::' -e 's:[a-zA-Z]*$::'` + ;; +esac + +# ((( +case $RL_MAJOR in +[0-9][0-9]) _RL_MAJOR=$RL_MAJOR ;; +[0-9]) _RL_MAJOR=0$RL_MAJOR ;; +*) _RL_MAJOR=00 ;; +esac + +# ((( +case $RL_MINOR in +[0-9][0-9]) _RL_MINOR=$RL_MINOR ;; +[0-9]) _RL_MINOR=0$RL_MINOR ;; +*) _RL_MINOR=00 ;; +esac + +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 + { echo "$as_me:$LINENO: WARNING: Could not test version of installed readline library." >&5 +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 + echo "$as_me:$LINENO: result: $ac_cv_rl_version" >&5 +echo "${ECHO_T}$ac_cv_rl_version" >&6 +else + + +cat >>confdefs.h <<_ACEOF +@%:@define RL_READLINE_VERSION $RL_VERSION +_ACEOF + + +cat >>confdefs.h <<_ACEOF +@%:@define RL_VERSION_MAJOR $RL_MAJOR +_ACEOF + + +cat >>confdefs.h <<_ACEOF +@%:@define RL_VERSION_MINOR $RL_MINOR +_ACEOF + + + + + + +# 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 + +echo "$as_me:$LINENO: result: $ac_cv_rl_version" >&5 +echo "${ECHO_T}$ac_cv_rl_version" >&6 + +fi + + + case "$ac_cv_rl_version" in + 5*|6*|7*|8*|9*) ;; + *) opt_with_installed_readline=no + { echo "$as_me:$LINENO: WARNING: installed readline library is too old to be linked with bash" >&5 +echo "$as_me: WARNING: installed readline library is too old to be linked with bash" >&2;} + { echo "$as_me:$LINENO: WARNING: using private bash version" >&5 +echo "$as_me: WARNING: using private bash version" >&2;} + ;; + esac +fi + +TILDE_LIB=-ltilde +if test $opt_readline = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define READLINE 1 +_ACEOF + + 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 + darwin8*) 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 + cat >>confdefs.h <<\_ACEOF +@%:@define HISTORY 1 +_ACEOF + + fi + if test $opt_bang_history = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define BANG_HISTORY 1 +_ACEOF + + 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 + darwin8*) HISTORY_LIB='${HISTORY_LIBRARY}' ;; + *) HISTORY_LIB=-lhistory ;; + esac + fi +else + HIST_LIBDIR='$(dot)/$(LIBSUBDIR)/readline' + HISTORY_LIB= HISTORY_DEP= +fi + + + + + + + + + + + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +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/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_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. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar" +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + echo "$as_me:$LINENO: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_YACC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$YACC"; then + ac_cv_prog_YACC="$YACC" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_YACC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +YACC=$ac_cv_prog_YACC +if test -n "$YACC"; then + echo "$as_me:$LINENO: result: $YACC" >&5 +echo "${ECHO_T}$YACC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$YACC" && break +done +test -n "$YACC" || YACC="yacc" + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="${MAKE}"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + + +case "$host_os" in +opennt*|interix*) MAKE_SHELL="$INTERIX_ROOT/bin/sh" ;; +*) MAKE_SHELL=/bin/sh ;; +esac + + +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 + + +cat >>confdefs.h <<\_ACEOF +@%:@define _GNU_SOURCE 1 +_ACEOF + + +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#include +#include +/* 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); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 +if test "${ac_cv_c_const+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* FIXME: Include the comments suggested by Paul. */ +#ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; + const charset x; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *ccp; + char **p; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + ccp = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++ccp; + p = (char**) ccp; + ccp = (char const *const *) p; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this 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; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + } +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_const=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_c_const=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +echo "${ECHO_T}$ac_cv_c_const" >&6 +if test $ac_cv_c_const = no; then + +cat >>confdefs.h <<\_ACEOF +@%:@define const +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for inline" >&5 +echo $ECHO_N "checking for inline... $ECHO_C" >&6 +if test "${ac_cv_c_inline+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#ifndef __cplusplus +static $ac_kw int static_foo () {return 0; } +$ac_kw int foo () {return 0; } +#endif + +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_inline=$ac_kw; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 +echo "${ECHO_T}$ac_cv_c_inline" >&6 +case $ac_cv_c_inline in + inline | yes) ;; + no) +cat >>confdefs.h <<\_ACEOF +@%:@define inline +_ACEOF + ;; + *) cat >>confdefs.h <<_ACEOF +@%:@define inline $ac_cv_c_inline +_ACEOF + ;; +esac + +echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 +echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 +if test "${ac_cv_c_bigendian+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # See if sys/param.h defines the BYTE_ORDER macro. +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN + bogus endian macros +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + # It does; now see whether it defined to BIG_ENDIAN or not. +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_bigendian=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_c_bigendian=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +# It does not; compile a test program. +if test "$cross_compiling" = yes; then + # try to guess the endianess by grep'ing values into an object file + ac_cv_c_bigendian=unknown + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; +short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; +void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } +short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; +short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; +void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + _ascii (); _ebcdic (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + if fgrep BIGenDianSyS conftest.$ac_objext >/dev/null ; then + ac_cv_c_bigendian=yes +fi +if fgrep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi +fi +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +int +main () +{ + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long l; + char c[sizeof (long)]; + } u; + u.l = 1; + exit (u.c[sizeof (long) - 1] == 1); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_bigendian=no +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +ac_cv_c_bigendian=yes +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 +echo "${ECHO_T}$ac_cv_c_bigendian" >&6 +case $ac_cv_c_bigendian in + yes) + +cat >>confdefs.h <<\_ACEOF +@%:@define WORDS_BIGENDIAN 1 +_ACEOF + ;; + no) + ;; + *) + { { echo "$as_me:$LINENO: error: unknown endianess +presetting ac_cv_c_bigendian=no (or yes) will help" >&5 +echo "$as_me: error: unknown endianess +presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} + { (exit 1); exit 1; }; } ;; +esac + +echo "$as_me:$LINENO: checking for preprocessor stringizing operator" >&5 +echo $ECHO_N "checking for preprocessor stringizing operator... $ECHO_C" >&6 +if test "${ac_cv_c_stringize+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "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 + ac_cv_c_stringize=no +else + ac_cv_c_stringize=yes +fi +rm -f conftest* + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_stringize" >&5 +echo "${ECHO_T}$ac_cv_c_stringize" >&6 +if test $ac_cv_c_stringize = yes; then + +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_STRINGIZE 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for working long double with more range or precision than double" >&5 +echo $ECHO_N "checking for working long double with more range or precision than double... $ECHO_C" >&6 +if test "${ac_cv_c_long_double+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + long double foo = 0.0; +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(/* Using '|' rather than '||' catches a GCC 2.95.2 x86 bug. */ + (DBL_MAX < LDBL_MAX) | (LDBL_EPSILON < DBL_EPSILON) + | (DBL_MAX_EXP < LDBL_MAX_EXP) | (DBL_MANT_DIG < LDBL_MANT_DIG))@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_long_double=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_c_long_double=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_long_double" >&5 +echo "${ECHO_T}$ac_cv_c_long_double" >&6 +if test $ac_cv_c_long_double = yes; then + +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_LONG_DOUBLE 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for function prototypes" >&5 +echo $ECHO_N "checking for function prototypes... $ECHO_C" >&6 +if test "$ac_cv_prog_cc_stdc" != no; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +cat >>confdefs.h <<\_ACEOF +@%:@define PROTOTYPES 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +@%:@define __PROTOTYPES 1 +_ACEOF + +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + +echo "$as_me:$LINENO: checking whether char is unsigned" >&5 +echo $ECHO_N "checking whether char is unsigned... $ECHO_C" >&6 +if test "${ac_cv_c_char_unsigned+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((char) -1) < 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_char_unsigned=no +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_c_char_unsigned=yes +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_char_unsigned" >&5 +echo "${ECHO_T}$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 + +fi + + + + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + case "$ac_aux_dir" in + /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; + *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; + esac + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + + + + echo "$as_me:$LINENO: checking whether NLS is requested" >&5 +echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 + # Check whether --enable-nls or --disable-nls was given. +if test "${enable_nls+set}" = set; then + enableval="$enable_nls" + USE_NLS=$enableval +else + USE_NLS=yes +fi; + echo "$as_me:$LINENO: result: $USE_NLS" >&5 +echo "${ECHO_T}$USE_NLS" >&6 + + + + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$MSGFMT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + echo "$as_me:$LINENO: result: $MSGFMT" >&5 +echo "${ECHO_T}$MSGFMT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_GMSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + *) + 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT + +if test -n "$GMSGFMT"; then + echo "$as_me:$LINENO: result: $GMSGFMT" >&5 +echo "${ECHO_T}$GMSGFMT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_XGETTEXT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$XGETTEXT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && + (if $ac_dir/$ac_word --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 + ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + echo "$as_me:$LINENO: result: $XGETTEXT" >&5 +echo "${ECHO_T}$XGETTEXT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + rm -f messages.po + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_MSGMERGE+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$MSGMERGE" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then + ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" + ;; +esac +fi +MSGMERGE="$ac_cv_path_MSGMERGE" +if test "$MSGMERGE" != ":"; then + echo "$as_me:$LINENO: result: $MSGMERGE" >&5 +echo "${ECHO_T}$MSGMERGE" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + if test "$GMSGFMT" != ":"; then + if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && + (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + : ; + else + GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` + echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 +echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6 + GMSGFMT=":" + fi + fi + + if test "$XGETTEXT" != ":"; then + if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && + (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 + echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 +echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 + XGETTEXT=":" + fi + rm -f messages.po + fi + + ac_config_commands="$ac_config_commands default-1" + + +echo "$as_me:$LINENO: checking for off_t" >&5 +echo $ECHO_N "checking for off_t... $ECHO_C" >&6 +if test "${ac_cv_type_off_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((off_t *) 0) + return 0; +if (sizeof (off_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_off_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_off_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 +echo "${ECHO_T}$ac_cv_type_off_t" >&6 +if test $ac_cv_type_off_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define off_t long +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for size_t" >&5 +echo $ECHO_N "checking for size_t... $ECHO_C" >&6 +if test "${ac_cv_type_size_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((size_t *) 0) + return 0; +if (sizeof (size_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_size_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_size_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +echo "${ECHO_T}$ac_cv_type_size_t" >&6 +if test $ac_cv_type_size_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define size_t unsigned +_ACEOF + +fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +echo "$as_me:$LINENO: checking for working alloca.h" >&5 +echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 +if test "${ac_cv_working_alloca_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +@%:@include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +char *p = (char *) alloca (2 * sizeof (int)); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_working_alloca_h=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_working_alloca_h=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +echo "${ECHO_T}$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 + +echo "$as_me:$LINENO: checking for alloca" >&5 +echo $ECHO_N "checking for alloca... $ECHO_C" >&6 +if test "${ac_cv_func_alloca_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#ifdef __GNUC__ +# define alloca __builtin_alloca +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if HAVE_ALLOCA_H +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +char *p = (char *) alloca (1); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_alloca_works=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_alloca_works=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +echo "${ECHO_T}$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=alloca.$ac_objext + +cat >>confdefs.h <<\_ACEOF +@%:@define C_ALLOCA 1 +_ACEOF + + +echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 +if test "${ac_cv_os_cray+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "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 +echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +echo "${ECHO_T}$ac_cv_os_cray" >&6 +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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 +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + +cat >>confdefs.h <<_ACEOF +@%:@define CRAY_STACKSEG_END $ac_func +_ACEOF + + break +fi + + done +fi + +echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 +if test "${ac_cv_c_stack_direction+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_c_stack_direction=0 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +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 () +{ + exit (find_stack_direction () < 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_stack_direction=1 +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +ac_cv_c_stack_direction=-1 +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 + +cat >>confdefs.h <<_ACEOF +@%:@define STACK_DIRECTION $ac_cv_c_stack_direction +_ACEOF + + +fi + + + +for ac_header in stdlib.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +@%:@include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +@%:@include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_func in getpagesize +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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 +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +echo "$as_me:$LINENO: checking for working mmap" >&5 +echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 +if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_func_mmap_fixed_mapped=no +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "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 !STDC_HEADERS && !HAVE_STDLIB_H +char *malloc (); +#endif + +/* This mess was copied from the GNU getpagesize.h. */ +#if !HAVE_GETPAGESIZE +/* Assume that all systems that can run configure have sys/param.h. */ +# if !HAVE_SYS_PARAM_H +# define HAVE_SYS_PARAM_H 1 +# endif + +# ifdef _SC_PAGESIZE +# define getpagesize() sysconf(_SC_PAGESIZE) +# else /* no _SC_PAGESIZE */ +# if 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) + exit (1); + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) + exit (1); + if (write (fd, data, pagesize) != pagesize) + exit (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) + exit (1); + data2 = (char *) malloc (2 * pagesize); + if (!data2) + exit (1); + data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1); + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + exit (1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + exit (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) + exit (1); + if (read (fd, data3, pagesize) != pagesize) + exit (1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + exit (1); + close (fd); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mmap_fixed_mapped=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +ac_cv_func_mmap_fixed_mapped=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 +echo "${ECHO_T}$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 + + + echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5 +echo $ECHO_N "checking whether we are using the GNU C Library 2.1 or newer... $ECHO_C" >&6 +if test "${ac_cv_gnu_library_2_1+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "Lucky GNU user" >/dev/null 2>&1; then + ac_cv_gnu_library_2_1=yes +else + ac_cv_gnu_library_2_1=no +fi +rm -f conftest* + + + +fi +echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2_1" >&5 +echo "${ECHO_T}$ac_cv_gnu_library_2_1" >&6 + + GLIBC21="$ac_cv_gnu_library_2_1" + + + + + echo "$as_me:$LINENO: checking whether integer division by zero raises SIGFPE" >&5 +echo $ECHO_N "checking whether integer division by zero raises SIGFPE... $ECHO_C" >&6 +if test "${gt_cv_int_divbyzero_sigfpe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + if test "$cross_compiling" = yes; then + + # Guess based on the CPU. + case "$host_cpu" in + alpha* | i3456786 | m68k | s390*) + gt_cv_int_divbyzero_sigfpe="guessing yes";; + *) + gt_cv_int_divbyzero_sigfpe="guessing no";; + esac + +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#include +#include + +static void +#ifdef __cplusplus +sigfpe_handler (int sig) +#else +sigfpe_handler (sig) int sig; +#endif +{ + /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ + exit (sig != SIGFPE); +} + +int x = 1; +int y = 0; +int z; +int nan; + +int main () +{ + signal (SIGFPE, sigfpe_handler); +/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ +#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) + signal (SIGTRAP, sigfpe_handler); +#endif +/* Linux/SPARC yields signal SIGILL. */ +#if defined (__sparc__) && defined (__linux__) + signal (SIGILL, sigfpe_handler); +#endif + + z = x / y; + nan = y / y; + exit (1); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_int_divbyzero_sigfpe=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +gt_cv_int_divbyzero_sigfpe=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + +fi +echo "$as_me:$LINENO: result: $gt_cv_int_divbyzero_sigfpe" >&5 +echo "${ECHO_T}$gt_cv_int_divbyzero_sigfpe" >&6 + case "$gt_cv_int_divbyzero_sigfpe" in + *yes) value=1;; + *) value=0;; + esac + +cat >>confdefs.h <<_ACEOF +@%:@define INTDIV0_RAISES_SIGFPE $value +_ACEOF + + + + echo "$as_me:$LINENO: checking for inttypes.h" >&5 +echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 +if test "${jm_ac_cv_header_inttypes_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +uintmax_t i = (uintmax_t) -1; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + jm_ac_cv_header_inttypes_h=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +jm_ac_cv_header_inttypes_h=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $jm_ac_cv_header_inttypes_h" >&5 +echo "${ECHO_T}$jm_ac_cv_header_inttypes_h" >&6 + if test $jm_ac_cv_header_inttypes_h = yes; then + +cat >>confdefs.h <<_ACEOF +@%:@define HAVE_INTTYPES_H_WITH_UINTMAX 1 +_ACEOF + + fi + + + echo "$as_me:$LINENO: checking for stdint.h" >&5 +echo $ECHO_N "checking for stdint.h... $ECHO_C" >&6 +if test "${jm_ac_cv_header_stdint_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +uintmax_t i = (uintmax_t) -1; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + jm_ac_cv_header_stdint_h=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +jm_ac_cv_header_stdint_h=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $jm_ac_cv_header_stdint_h" >&5 +echo "${ECHO_T}$jm_ac_cv_header_stdint_h" >&6 + if test $jm_ac_cv_header_stdint_h = yes; then + +cat >>confdefs.h <<_ACEOF +@%:@define HAVE_STDINT_H_WITH_UINTMAX 1 +_ACEOF + + fi + + + echo "$as_me:$LINENO: checking for unsigned long long" >&5 +echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6 +if test "${ac_cv_type_unsigned_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +unsigned long long ull = 1; int i = 63; +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_unsigned_long_long=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_unsigned_long_long=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long" >&5 +echo "${ECHO_T}$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 + + fi + + + + + if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then + + test $ac_cv_type_unsigned_long_long = yes \ + && ac_type='unsigned long long' \ + || ac_type='unsigned long' + +cat >>confdefs.h <<_ACEOF +@%:@define uintmax_t $ac_type +_ACEOF + + else + +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_UINTMAX_T 1 +_ACEOF + + fi + + + echo "$as_me:$LINENO: checking for inttypes.h" >&5 +echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 +if test "${gt_cv_header_inttypes_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_header_inttypes_h=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +gt_cv_header_inttypes_h=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $gt_cv_header_inttypes_h" >&5 +echo "${ECHO_T}$gt_cv_header_inttypes_h" >&6 + if test $gt_cv_header_inttypes_h = yes; then + +cat >>confdefs.h <<_ACEOF +@%:@define HAVE_INTTYPES_H 1 +_ACEOF + + fi + + + + if test $gt_cv_header_inttypes_h = yes; then + echo "$as_me:$LINENO: checking whether the inttypes.h PRIxNN macros are broken" >&5 +echo $ECHO_N "checking whether the inttypes.h PRIxNN macros are broken... $ECHO_C" >&6 +if test "${gt_cv_inttypes_pri_broken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#ifdef PRId32 +char *p = PRId32; +#endif + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_inttypes_pri_broken=no +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +gt_cv_inttypes_pri_broken=yes +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $gt_cv_inttypes_pri_broken" >&5 +echo "${ECHO_T}$gt_cv_inttypes_pri_broken" >&6 + fi + if test "$gt_cv_inttypes_pri_broken" = yes; then + +cat >>confdefs.h <<_ACEOF +@%:@define PRI_MACROS_BROKEN 1 +_ACEOF + + fi + + + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" + + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi; +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo "$as_me:$LINENO: checking for ld used by GCC" >&5 +echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | [A-Za-z]:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${acl_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" +else + acl_cv_path_LD="$LD" # Let the user override the test with a path. +fi +fi + +LD="$acl_cv_path_LD" +if test -n "$LD"; then + echo "$as_me:$LINENO: result: $LD" >&5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${acl_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 &5; then + acl_cv_prog_gnu_ld=yes +else + acl_cv_prog_gnu_ld=no +fi +fi +echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5 +echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6 +with_gnu_ld=$acl_cv_prog_gnu_ld + + + + echo "$as_me:$LINENO: checking for shared library run path origin" >&5 +echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6 +if test "${acl_cv_rpath+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + +fi +echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5 +echo "${ECHO_T}$acl_cv_rpath" >&6 + wl="$acl_cv_wl" + libext="$acl_cv_libext" + shlibext="$acl_cv_shlibext" + hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + hardcode_direct="$acl_cv_hardcode_direct" + hardcode_minus_L="$acl_cv_hardcode_minus_L" + # Check whether --enable-rpath or --disable-rpath was given. +if test "${enable_rpath+set}" = set; then + enableval="$enable_rpath" + : +else + enable_rpath=yes +fi; + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libiconv-prefix or --without-libiconv-prefix was given. +if test "${with_libiconv_prefix+set}" = set; then + withval="$with_libiconv_prefix" + + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi + +fi; + LIBICONV= + LTLIBICONV= + INCICONV= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='iconv ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + if test $use_additional = yes; then + if 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 + found_la="$additional_libdir/lib$name.la" + fi + else + if test -f "$additional_libdir/lib$name.$libext"; then + found_dir="$additional_libdir" + found_a="$additional_libdir/lib$name.$libext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBICONV; 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" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if 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 + found_la="$dir/lib$name.la" + fi + else + if test -f "$dir/lib$name.$libext"; then + found_dir="$dir" + found_a="$dir/lib$name.$libext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$hardcode_direct" = yes; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBICONV; 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-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" + fi + if test "$hardcode_minus_L" != no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */lib | */lib/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCICONV; 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-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBICONV; 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-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBICONV; 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-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" + ;; + esac + done + fi + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" + done + fi + + + + + + + + + + + + + + +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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +@%:@include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +@%:@include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + + + + + + + + + + + + + + + + + + +for ac_func in feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ +geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ +strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next \ +__fsetlocking +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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 +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + + + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; 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 + + + echo "$as_me:$LINENO: checking for iconv" >&5 +echo $ECHO_N "checking for iconv... $ECHO_C" >&6 +if test "${am_cv_func_iconv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_func_iconv=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f 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 +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + +fi +echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 +echo "${ECHO_T}$am_cv_func_iconv" >&6 + if test "$am_cv_func_iconv" = yes; then + +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_ICONV 1 +_ACEOF + + fi + if test "$am_cv_lib_iconv" = yes; then + echo "$as_me:$LINENO: checking how to link with libiconv" >&5 +echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $LIBICONV" >&5 +echo "${ECHO_T}$LIBICONV" >&6 + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + if test "$am_cv_func_iconv" = yes; then + echo "$as_me:$LINENO: checking for iconv declaration" >&5 +echo $ECHO_N "checking for iconv declaration... $ECHO_C" >&6 + if test "${am_cv_proto_iconv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_proto_iconv_arg1="" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +am_cv_proto_iconv_arg1="const" +fi +rm -f 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/( /(/'` + echo "$as_me:$LINENO: result: ${ac_t:- + }$am_cv_proto_iconv" >&5 +echo "${ECHO_T}${ac_t:- + }$am_cv_proto_iconv" >&6 + +cat >>confdefs.h <<_ACEOF +@%:@define ICONV_CONST $am_cv_proto_iconv_arg1 +_ACEOF + + fi + + + echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 +echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6 +if test "${am_cv_langinfo_codeset+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +char* cs = nl_langinfo(CODESET); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_langinfo_codeset=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +am_cv_langinfo_codeset=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $am_cv_langinfo_codeset" >&5 +echo "${ECHO_T}$am_cv_langinfo_codeset" >&6 + if test $am_cv_langinfo_codeset = yes; then + +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_LANGINFO_CODESET 1 +_ACEOF + + fi + + if test $ac_cv_header_locale_h = yes; then + + echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 +echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6 +if test "${am_cv_val_LC_MESSAGES+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +return LC_MESSAGES + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_val_LC_MESSAGES=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +am_cv_val_LC_MESSAGES=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 +echo "${ECHO_T}$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 + + fi + + fi + + for ac_prog in bison +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_INTLBISON+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$INTLBISON"; then + ac_cv_prog_INTLBISON="$INTLBISON" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_INTLBISON="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +INTLBISON=$ac_cv_prog_INTLBISON +if test -n "$INTLBISON"; then + echo "$as_me:$LINENO: result: $INTLBISON" >&5 +echo "${ECHO_T}$INTLBISON" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$INTLBISON" && break +done + + if test -z "$INTLBISON"; then + ac_verc_fail=yes + else + echo "$as_me:$LINENO: checking version of bison" >&5 +echo $ECHO_N "checking version of bison... $ECHO_C" >&6 + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + echo "$as_me:$LINENO: result: $ac_prog_version" >&5 +echo "${ECHO_T}$ac_prog_version" >&6 + fi + if test $ac_verc_fail = yes; then + INTLBISON=: + fi + + + + + + + + + + + + + + + + + echo "$as_me:$LINENO: checking whether NLS is requested" >&5 +echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 + # Check whether --enable-nls or --disable-nls was given. +if test "${enable_nls+set}" = set; then + enableval="$enable_nls" + USE_NLS=$enableval +else + USE_NLS=yes +fi; + echo "$as_me:$LINENO: result: $USE_NLS" >&5 +echo "${ECHO_T}$USE_NLS" >&6 + + + + + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + + LIBINTL= + LTLIBINTL= + POSUB= + + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + + echo "$as_me:$LINENO: checking whether included gettext is requested" >&5 +echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6 + +# Check whether --with-included-gettext or --without-included-gettext was given. +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; + echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5 +echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6 + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + + + + + + + echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 +echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6 +if test "${gt_cv_func_gnugettext2_libc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +bindtextdomain ("", ""); +return (int) gettext ("") + (int) ngettext ("", "", 0) + _nl_msg_cat_cntr + *_nl_domain_bindings + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_func_gnugettext2_libc=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +gt_cv_func_gnugettext2_libc=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext2_libc" >&5 +echo "${ECHO_T}$gt_cv_func_gnugettext2_libc" >&6 + + if test "$gt_cv_func_gnugettext2_libc" != "yes"; then + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libintl-prefix or --without-libintl-prefix was given. +if test "${with_libintl_prefix+set}" = set; then + withval="$with_libintl_prefix" + + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi + +fi; + LIBINTL= + LTLIBINTL= + INCINTL= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='intl ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + if test $use_additional = yes; then + if 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 + found_la="$additional_libdir/lib$name.la" + fi + else + if test -f "$additional_libdir/lib$name.$libext"; then + found_dir="$additional_libdir" + found_a="$additional_libdir/lib$name.$libext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBINTL; 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" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if 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 + found_la="$dir/lib$name.la" + fi + else + if test -f "$dir/lib$name.$libext"; then + found_dir="$dir" + found_a="$dir/lib$name.$libext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$hardcode_direct" = yes; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBINTL; 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-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" + fi + if test "$hardcode_minus_L" != no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */lib | */lib/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCINTL; 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-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBINTL; 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-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBINTL; 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-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" + ;; + esac + done + fi + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" + done + fi + + echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5 +echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6 +if test "${gt_cv_func_gnugettext2_libintl+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_func_gnugettext2_libintl=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +gt_cv_func_gnugettext2_libintl=no +fi +rm -f 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 >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + gt_cv_func_gnugettext2_libintl=yes + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" +fi +echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext2_libintl" >&5 +echo "${ECHO_T}$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 + + echo "$as_me:$LINENO: checking whether to use NLS" >&5 +echo $ECHO_N "checking whether to use NLS... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $USE_NLS" >&5 +echo "${ECHO_T}$USE_NLS" >&6 + if test "$USE_NLS" = "yes"; then + echo "$as_me:$LINENO: checking where the gettext function comes from" >&5 +echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&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 + echo "$as_me:$LINENO: result: $gt_source" >&5 +echo "${ECHO_T}$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 + echo "$as_me:$LINENO: checking how to link with libintl" >&5 +echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $LIBINTL" >&5 +echo "${ECHO_T}$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=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 +echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include <$ac_hdr> + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((DIR *) 0) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_Header=no" +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `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 + echo "$as_me:$LINENO: checking for library containing opendir" >&5 +echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 +if test "${ac_cv_search_opendir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_func_search_save_LIBS=$LIBS +ac_cv_search_opendir=no +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_opendir="none required" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search_opendir" = no; then + for ac_lib in dir; do + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_opendir="-l$ac_lib" +break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + done +fi +LIBS=$ac_func_search_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 +echo "${ECHO_T}$ac_cv_search_opendir" >&6 +if test "$ac_cv_search_opendir" != no; then + test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" + +fi + +else + echo "$as_me:$LINENO: checking for library containing opendir" >&5 +echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 +if test "${ac_cv_search_opendir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_func_search_save_LIBS=$LIBS +ac_cv_search_opendir=no +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_opendir="none required" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search_opendir" = no; then + for ac_lib in x; do + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_opendir="-l$ac_lib" +break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + done +fi +LIBS=$ac_func_search_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 +echo "${ECHO_T}$ac_cv_search_opendir" >&6 +if test "$ac_cv_search_opendir" != no; then + test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" + +fi + +fi + +echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 +echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6 +if test "${ac_cv_header_time+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#include + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((struct tm *) 0) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_time=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_header_time=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 +echo "${ECHO_T}$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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +@%:@include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +@%:@include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `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 +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +@%:@include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +@%:@include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +@%:@include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +@%:@include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +@%:@include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +@%:@include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +echo "$as_me:$LINENO: checking for sys/ptem.h" >&5 +echo $ECHO_N "checking for sys/ptem.h... $ECHO_C" >&6 +if test "${ac_cv_header_sys_ptem_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_SYS_STREAM_H +# include +#endif + + +@%:@include +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_sys_ptem_h=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_header_sys_ptem_h=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_header_sys_ptem_h" >&5 +echo "${ECHO_T}$ac_cv_header_sys_ptem_h" >&6 + + + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +echo "$as_me:$LINENO: checking for working alloca.h" >&5 +echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 +if test "${ac_cv_working_alloca_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +@%:@include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +char *p = (char *) alloca (2 * sizeof (int)); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_working_alloca_h=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_working_alloca_h=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +echo "${ECHO_T}$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 + +echo "$as_me:$LINENO: checking for alloca" >&5 +echo $ECHO_N "checking for alloca... $ECHO_C" >&6 +if test "${ac_cv_func_alloca_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#ifdef __GNUC__ +# define alloca __builtin_alloca +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if HAVE_ALLOCA_H +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +char *p = (char *) alloca (1); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_alloca_works=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_alloca_works=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +echo "${ECHO_T}$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=alloca.$ac_objext + +cat >>confdefs.h <<\_ACEOF +@%:@define C_ALLOCA 1 +_ACEOF + + +echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 +if test "${ac_cv_os_cray+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "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 +echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +echo "${ECHO_T}$ac_cv_os_cray" >&6 +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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 +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + +cat >>confdefs.h <<_ACEOF +@%:@define CRAY_STACKSEG_END $ac_func +_ACEOF + + break +fi + + done +fi + +echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 +if test "${ac_cv_c_stack_direction+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_c_stack_direction=0 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +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 () +{ + exit (find_stack_direction () < 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_stack_direction=1 +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +ac_cv_c_stack_direction=-1 +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 + +cat >>confdefs.h <<_ACEOF +@%:@define STACK_DIRECTION $ac_cv_c_stack_direction +_ACEOF + + +fi + +echo "$as_me:$LINENO: checking whether getpgrp requires zero arguments" >&5 +echo $ECHO_N "checking whether getpgrp requires zero arguments... $ECHO_C" >&6 +if test "${ac_cv_func_getpgrp_void+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Use it with a single arg. +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +getpgrp (0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_getpgrp_void=no +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_getpgrp_void=yes +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $ac_cv_func_getpgrp_void" >&5 +echo "${ECHO_T}$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 + +echo "$as_me:$LINENO: checking whether setvbuf arguments are reversed" >&5 +echo $ECHO_N "checking whether setvbuf arguments are reversed... $ECHO_C" >&6 +if test "${ac_cv_func_setvbuf_reversed+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 +echo "$as_me: error: cannot run test program while cross compiling" >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +/* If setvbuf has the reversed format, exit 0. */ +int +main () +{ + /* This call has the arguments reversed. + A reversed system may check and see that the address of main + is not _IOLBF, _IONBF, or _IOFBF, and return nonzero. */ + if (setvbuf(stdout, _IOLBF, (char *) main, BUFSIZ) != 0) + exit(1); + putc('\r', stdout); + exit(0); /* Non-reversed systems segv here. */ +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_setvbuf_reversed=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +ac_cv_func_setvbuf_reversed=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +rm -f core core.* *.core +fi +echo "$as_me:$LINENO: result: $ac_cv_func_setvbuf_reversed" >&5 +echo "${ECHO_T}$ac_cv_func_setvbuf_reversed" >&6 +if test $ac_cv_func_setvbuf_reversed = yes; then + +cat >>confdefs.h <<\_ACEOF +@%:@define SETVBUF_REVERSED 1 +_ACEOF + +fi + + +for ac_func in vprintf +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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 +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +echo "$as_me:$LINENO: checking for _doprnt" >&5 +echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6 +if test "${ac_cv_func__doprnt+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char _doprnt (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char _doprnt (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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 +#else +f = _doprnt; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func__doprnt=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func__doprnt=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5 +echo "${ECHO_T}$ac_cv_func__doprnt" >&6 +if test $ac_cv_func__doprnt = yes; then + +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_DOPRNT 1 +_ACEOF + +fi + +fi +done + + +echo "$as_me:$LINENO: checking for working strcoll" >&5 +echo $ECHO_N "checking for working strcoll... $ECHO_C" >&6 +if test "${ac_cv_func_strcoll_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_func_strcoll_works=no +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +exit (strcoll ("abc", "def") >= 0 || + strcoll ("ABC", "DEF") >= 0 || + strcoll ("123", "456") >= 0) + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_strcoll_works=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +ac_cv_func_strcoll_works=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_func_strcoll_works" >&5 +echo "${ECHO_T}$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 + echo "$as_me:$LINENO: checking for declaration of vprintf in stdio.h" >&5 +echo $ECHO_N "checking for declaration of vprintf in stdio.h... $ECHO_C" >&6 + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "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* + + echo "$as_me:$LINENO: result: $ac_cv_func_vprintf" >&5 +echo "${ECHO_T}$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 + LIB@&t@OBJS="$LIB@&t@OBJS vprint.$ac_objext" +fi + +echo "$as_me:$LINENO: checking return type of signal handlers" >&5 +echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 +if test "${ac_cv_type_signal+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#ifdef signal +# undef signal +#endif +#ifdef __cplusplus +extern "C" void (*signal (int, void (*)(int)))(int); +#else +void (*signal ()) (); +#endif + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +int i; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_signal=void +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_signal=int +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 +echo "${ECHO_T}$ac_cv_type_signal" >&6 + +cat >>confdefs.h <<_ACEOF +@%:@define RETSIGTYPE $ac_cv_type_signal +_ACEOF + + + +echo "$as_me:$LINENO: checking for __setostype" >&5 +echo $ECHO_N "checking for __setostype... $ECHO_C" >&6 +if test "${ac_cv_func___setostype+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char __setostype (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char __setostype (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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 +#else +f = __setostype; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func___setostype=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func___setostype=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func___setostype" >&5 +echo "${ECHO_T}$ac_cv_func___setostype" >&6 +if test $ac_cv_func___setostype = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_SETOSTYPE 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for wait3" >&5 +echo $ECHO_N "checking for wait3... $ECHO_C" >&6 +if test "${ac_cv_func_wait3+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char wait3 (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char wait3 (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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 +#else +f = wait3; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_wait3=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_wait3=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_wait3" >&5 +echo "${ECHO_T}$ac_cv_func_wait3" >&6 +if test $ac_cv_func_wait3 = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_WAIT3 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for isinf" >&5 +echo $ECHO_N "checking for isinf... $ECHO_C" >&6 +if test "${ac_cv_func_isinf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char isinf (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char isinf (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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 +#else +f = isinf; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_isinf=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_isinf=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_isinf" >&5 +echo "${ECHO_T}$ac_cv_func_isinf" >&6 +if test $ac_cv_func_isinf = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_ISINF_IN_LIBC 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for mkfifo" >&5 +echo $ECHO_N "checking for mkfifo... $ECHO_C" >&6 +if test "${ac_cv_func_mkfifo+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char mkfifo (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char mkfifo (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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 +#else +f = mkfifo; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mkfifo=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_mkfifo=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_mkfifo" >&5 +echo "${ECHO_T}$ac_cv_func_mkfifo" >&6 +if test $ac_cv_func_mkfifo = 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 fcntl getdtablesize getgroups gethostname getpagesize \ + getpeername getrlimit getrusage gettimeofday kill killpg \ + lstat readlink sbrk select setdtablesize tcgetpgrp uname \ + ulimit waitpid +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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 +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +for ac_func in rename +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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 +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + LIB@&t@OBJS="$LIB@&t@OBJS $ac_func.$ac_objext" +fi +done + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +for ac_func in bcopy bzero confstr fnmatch \ + getaddrinfo gethostbyname getservbyname getservent inet_aton \ + memmove pathconf putenv raise regcomp regexec \ + setenv setlinebuf setlocale setvbuf siginterrupt strchr \ + sysconf tcgetattr times ttyname tzset unsetenv +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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 +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + + + +for ac_func in vsnprintf snprintf vasprintf asprintf +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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 +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `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=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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 +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + +for ac_func in getpwent getpwnam getpwuid +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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 +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + + + + + + +for ac_func in getcwd memset strcasecmp strerror strftime strnlen strpbrk strstr +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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 +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + LIB@&t@OBJS="$LIB@&t@OBJS $ac_func.$ac_objext" +fi +done + + + + + + + + + +for ac_func in strtod strtol strtoul strtoll strtoull strtoimax strtoumax +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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 +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + LIB@&t@OBJS="$LIB@&t@OBJS $ac_func.$ac_objext" +fi +done + + + +echo "$as_me:$LINENO: checking whether confstr is declared" >&5 +echo $ECHO_N "checking whether confstr is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_confstr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef confstr + char *p = (char *) confstr; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_confstr=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_have_decl_confstr=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_confstr" >&5 +echo "${ECHO_T}$ac_cv_have_decl_confstr" >&6 +if test $ac_cv_have_decl_confstr = yes; then + +cat >>confdefs.h <<_ACEOF +@%:@define HAVE_DECL_CONFSTR 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +@%:@define HAVE_DECL_CONFSTR 0 +_ACEOF + + +fi + + +echo "$as_me:$LINENO: checking whether printf is declared" >&5 +echo $ECHO_N "checking whether printf is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_printf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef printf + char *p = (char *) printf; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_printf=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_have_decl_printf=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_printf" >&5 +echo "${ECHO_T}$ac_cv_have_decl_printf" >&6 +if test $ac_cv_have_decl_printf = yes; then + +cat >>confdefs.h <<_ACEOF +@%:@define HAVE_DECL_PRINTF 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +@%:@define HAVE_DECL_PRINTF 0 +_ACEOF + + +fi + + +echo "$as_me:$LINENO: checking whether sbrk is declared" >&5 +echo $ECHO_N "checking whether sbrk is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_sbrk+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef sbrk + char *p = (char *) sbrk; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_sbrk=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_have_decl_sbrk=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_sbrk" >&5 +echo "${ECHO_T}$ac_cv_have_decl_sbrk" >&6 +if test $ac_cv_have_decl_sbrk = yes; then + +cat >>confdefs.h <<_ACEOF +@%:@define HAVE_DECL_SBRK 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +@%:@define HAVE_DECL_SBRK 0 +_ACEOF + + +fi + + +echo "$as_me:$LINENO: checking whether strcpy is declared" >&5 +echo $ECHO_N "checking whether strcpy is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_strcpy+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef strcpy + char *p = (char *) strcpy; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_strcpy=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_have_decl_strcpy=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_strcpy" >&5 +echo "${ECHO_T}$ac_cv_have_decl_strcpy" >&6 +if test $ac_cv_have_decl_strcpy = yes; then + +cat >>confdefs.h <<_ACEOF +@%:@define HAVE_DECL_STRCPY 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +@%:@define HAVE_DECL_STRCPY 0 +_ACEOF + + +fi + + +echo "$as_me:$LINENO: checking whether strsignal is declared" >&5 +echo $ECHO_N "checking whether strsignal is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_strsignal+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef strsignal + char *p = (char *) strsignal; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_strsignal=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_have_decl_strsignal=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_strsignal" >&5 +echo "${ECHO_T}$ac_cv_have_decl_strsignal" >&6 +if test $ac_cv_have_decl_strsignal = yes; then + +cat >>confdefs.h <<_ACEOF +@%:@define HAVE_DECL_STRSIGNAL 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +@%:@define HAVE_DECL_STRSIGNAL 0 +_ACEOF + + +fi + + + +echo "$as_me:$LINENO: checking whether strtold is declared" >&5 +echo $ECHO_N "checking whether strtold is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_strtold+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef strtold + char *p = (char *) strtold; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_strtold=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_have_decl_strtold=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_strtold" >&5 +echo "${ECHO_T}$ac_cv_have_decl_strtold" >&6 +if test $ac_cv_have_decl_strtold = yes; then + +cat >>confdefs.h <<_ACEOF +@%:@define HAVE_DECL_STRTOLD 1 +_ACEOF + + + echo "$as_me:$LINENO: checking for broken strtold" >&5 +echo $ECHO_N "checking for broken strtold... $ECHO_C" >&6 + if test "${bash_cv_strtold_broken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +int main() { long double r; char *foo, bar; r = strtold(foo, &bar);} + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_strtold_broken=no +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +bash_cv_strtold_broken=yes +fi +rm -f conftest.$ac_objext conftest.$ac_ext + + +fi + + echo "$as_me:$LINENO: result: $bash_cv_strtold_broken" >&5 +echo "${ECHO_T}$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 + + + + + + + +echo "$as_me:$LINENO: checking for declaration of strtoimax" >&5 +echo $ECHO_N "checking for declaration of strtoimax... $ECHO_C" >&6 +if test "${bash_cv_decl_strtoimax+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#if STDC_HEADERS +# include +#endif +#if HAVE_INTTYPES_H +# include +#endif + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +return !strtoimax; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_decl_strtoimax=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +bash_cv_decl_strtoimax=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoimax" >&5 +echo "${ECHO_T}$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 + + + + +echo "$as_me:$LINENO: checking for declaration of strtol" >&5 +echo $ECHO_N "checking for declaration of strtol... $ECHO_C" >&6 +if test "${bash_cv_decl_strtol+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#if STDC_HEADERS +# include +#endif +#if HAVE_INTTYPES_H +# include +#endif + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +return !strtol; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_decl_strtol=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +bash_cv_decl_strtol=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_decl_strtol" >&5 +echo "${ECHO_T}$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 + + + + +echo "$as_me:$LINENO: checking for declaration of strtoll" >&5 +echo $ECHO_N "checking for declaration of strtoll... $ECHO_C" >&6 +if test "${bash_cv_decl_strtoll+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#if STDC_HEADERS +# include +#endif +#if HAVE_INTTYPES_H +# include +#endif + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +return !strtoll; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_decl_strtoll=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +bash_cv_decl_strtoll=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoll" >&5 +echo "${ECHO_T}$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 + + + + +echo "$as_me:$LINENO: checking for declaration of strtoul" >&5 +echo $ECHO_N "checking for declaration of strtoul... $ECHO_C" >&6 +if test "${bash_cv_decl_strtoul+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#if STDC_HEADERS +# include +#endif +#if HAVE_INTTYPES_H +# include +#endif + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +return !strtoul; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_decl_strtoul=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +bash_cv_decl_strtoul=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoul" >&5 +echo "${ECHO_T}$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 + + + + +echo "$as_me:$LINENO: checking for declaration of strtoull" >&5 +echo $ECHO_N "checking for declaration of strtoull... $ECHO_C" >&6 +if test "${bash_cv_decl_strtoull+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#if STDC_HEADERS +# include +#endif +#if HAVE_INTTYPES_H +# include +#endif + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +return !strtoull; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_decl_strtoull=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +bash_cv_decl_strtoull=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoull" >&5 +echo "${ECHO_T}$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 + + + + +echo "$as_me:$LINENO: checking for declaration of strtoumax" >&5 +echo $ECHO_N "checking for declaration of strtoumax... $ECHO_C" >&6 +if test "${bash_cv_decl_strtoumax+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#if STDC_HEADERS +# include +#endif +#if HAVE_INTTYPES_H +# include +#endif + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +return !strtoumax; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_decl_strtoumax=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +bash_cv_decl_strtoumax=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoumax" >&5 +echo "${ECHO_T}$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 sys/time.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +@%:@include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +@%:@include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_func in alarm +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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 +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +echo "$as_me:$LINENO: checking for working mktime" >&5 +echo $ECHO_N "checking for working mktime... $ECHO_C" >&6 +if test "${ac_cv_func_working_mktime+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_func_working_mktime=no +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* Test program from Paul Eggert and Tony Leneis. */ +#if TIME_WITH_SYS_TIME +# include +# include +#else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif + +#if HAVE_UNISTD_H +# include +#endif + +#if !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; + +/* Values we'll use to set the TZ environment variable. */ +static const char *const 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])) + +/* Fail if mktime fails to convert a date in the spring-forward gap. + Based on a problem report from Andreas Jaeger. */ +static void +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; + if (mktime (&tm) == (time_t)-1) + exit (1); +} + +static void +mktime_test (now) + time_t now; +{ + struct tm *lt; + if ((lt = localtime (&now)) && mktime (lt) != now) + exit (1); + now = time_t_max - now; + if ((lt = localtime (&now)) && mktime (lt) != now) + exit (1); +} + +static void +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); + if (tm.tm_mon != 2 || tm.tm_mday != 31) + exit (1); +} + +static void +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)))) + exit (1); + } +} + +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 (time_t_max = 1; 0 < time_t_max; time_t_max *= 2) + continue; + 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) + mktime_test (t); + mktime_test ((time_t) 60 * 60); + mktime_test ((time_t) 60 * 60 * 24); + + for (j = 1; 0 < j; j *= 2) + bigtime_test (j); + bigtime_test (j - 1); + } + irix_6_4_bug (); + spring_forward_gap (); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_working_mktime=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +ac_cv_func_working_mktime=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_func_working_mktime" >&5 +echo "${ECHO_T}$ac_cv_func_working_mktime" >&6 +if test $ac_cv_func_working_mktime = no; then + LIB@&t@OBJS="$LIB@&t@OBJS mktime.$ac_objext" +fi + + + + + + + + +for ac_header in argz.h errno.h fcntl.h malloc.h stdio_ext.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +@%:@include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +@%:@include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + +for ac_header in stdlib.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +@%:@include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +@%:@include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_func in getpagesize +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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 +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +echo "$as_me:$LINENO: checking for working mmap" >&5 +echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 +if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_func_mmap_fixed_mapped=no +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "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 !STDC_HEADERS && !HAVE_STDLIB_H +char *malloc (); +#endif + +/* This mess was copied from the GNU getpagesize.h. */ +#if !HAVE_GETPAGESIZE +/* Assume that all systems that can run configure have sys/param.h. */ +# if !HAVE_SYS_PARAM_H +# define HAVE_SYS_PARAM_H 1 +# endif + +# ifdef _SC_PAGESIZE +# define getpagesize() sysconf(_SC_PAGESIZE) +# else /* no _SC_PAGESIZE */ +# if 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) + exit (1); + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) + exit (1); + if (write (fd, data, pagesize) != pagesize) + exit (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) + exit (1); + data2 = (char *) malloc (2 * pagesize); + if (!data2) + exit (1); + data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1); + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + exit (1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + exit (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) + exit (1); + if (read (fd, data3, pagesize) != pagesize) + exit (1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + exit (1); + close (fd); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mmap_fixed_mapped=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +ac_cv_func_mmap_fixed_mapped=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 +echo "${ECHO_T}$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=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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 +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +@%:@include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +@%:@include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in wchar.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +@%:@include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +@%:@include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in langinfo.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +@%:@include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +@%:@include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +echo "$as_me:$LINENO: checking for mbsrtowcs" >&5 +echo $ECHO_N "checking for mbsrtowcs... $ECHO_C" >&6 +if test "${ac_cv_func_mbsrtowcs+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char mbsrtowcs (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char mbsrtowcs (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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 +#else +f = mbsrtowcs; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mbsrtowcs=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_mbsrtowcs=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_mbsrtowcs" >&5 +echo "${ECHO_T}$ac_cv_func_mbsrtowcs" >&6 +if test $ac_cv_func_mbsrtowcs = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_MBSRTOWCS 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for mbrtowc" >&5 +echo $ECHO_N "checking for mbrtowc... $ECHO_C" >&6 +if test "${ac_cv_func_mbrtowc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char mbrtowc (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char mbrtowc (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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_mbrtowc) || defined (__stub___mbrtowc) +choke me +#else +f = mbrtowc; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mbrtowc=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_mbrtowc=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_mbrtowc" >&5 +echo "${ECHO_T}$ac_cv_func_mbrtowc" >&6 +if test $ac_cv_func_mbrtowc = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_MBRTOWC 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for mbrlen" >&5 +echo $ECHO_N "checking for mbrlen... $ECHO_C" >&6 +if test "${ac_cv_func_mbrlen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char mbrlen (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char mbrlen (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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 +#else +f = mbrlen; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mbrlen=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_mbrlen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_mbrlen" >&5 +echo "${ECHO_T}$ac_cv_func_mbrlen" >&6 +if test $ac_cv_func_mbrlen = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_MBRLEN 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for wctomb" >&5 +echo $ECHO_N "checking for wctomb... $ECHO_C" >&6 +if test "${ac_cv_func_wctomb+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char wctomb (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char wctomb (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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_wctomb) || defined (__stub___wctomb) +choke me +#else +f = wctomb; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_wctomb=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_wctomb=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_wctomb" >&5 +echo "${ECHO_T}$ac_cv_func_wctomb" >&6 +if test $ac_cv_func_wctomb = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_WCTOMB 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for wcwidth" >&5 +echo $ECHO_N "checking for wcwidth... $ECHO_C" >&6 +if test "${ac_cv_func_wcwidth+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char wcwidth (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char wcwidth (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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 +#else +f = wcwidth; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_wcwidth=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_wcwidth=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_wcwidth" >&5 +echo "${ECHO_T}$ac_cv_func_wcwidth" >&6 +if test $ac_cv_func_wcwidth = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_WCWIDTH 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for wcsdup" >&5 +echo $ECHO_N "checking for wcsdup... $ECHO_C" >&6 +if test "${ac_cv_func_wcsdup+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char wcsdup (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char wcsdup (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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 +#else +f = wcsdup; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_wcsdup=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_wcsdup=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_wcsdup" >&5 +echo "${ECHO_T}$ac_cv_func_wcsdup" >&6 +if test $ac_cv_func_wcsdup = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_WCSDUP 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for mbstate_t" >&5 +echo $ECHO_N "checking for mbstate_t... $ECHO_C" >&6 +if test "${bash_cv_have_mbstate_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + mbstate_t ps; + mbstate_t *psp; + psp = (mbstate_t *)0; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_have_mbstate_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +bash_cv_have_mbstate_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_have_mbstate_t" >&5 +echo "${ECHO_T}$bash_cv_have_mbstate_t" >&6 +if test $bash_cv_have_mbstate_t = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_MBSTATE_T 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 +echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6 +if test "${bash_cv_langinfo_codeset+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +char* cs = nl_langinfo(CODESET); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_langinfo_codeset=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +bash_cv_langinfo_codeset=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_langinfo_codeset" >&5 +echo "${ECHO_T}$bash_cv_langinfo_codeset" >&6 +if test $bash_cv_langinfo_codeset = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_LANGINFO_CODESET 1 +_ACEOF + +fi + + + +if test "$opt_static_link" != yes; then + +echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = 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=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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 +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +fi + +echo "$as_me:$LINENO: checking for sys_siglist declaration in signal.h or unistd.h" >&5 +echo $ECHO_N "checking for sys_siglist declaration in signal.h or unistd.h... $ECHO_C" >&6 +if test "${ac_cv_decl_sys_siglist+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +char *msg = *(sys_siglist + 1); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_decl_sys_siglist=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_decl_sys_siglist=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_decl_sys_siglist" >&5 +echo "${ECHO_T}$ac_cv_decl_sys_siglist" >&6 +if test $ac_cv_decl_sys_siglist = yes; then + +cat >>confdefs.h <<\_ACEOF +@%:@define SYS_SIGLIST_DECLARED 1 +_ACEOF + +fi + + +if test "$ac_cv_func_inet_aton" != 'yes'; then + +echo "$as_me:$LINENO: checking for inet_aton" >&5 +echo $ECHO_N "checking for inet_aton... $ECHO_C" >&6 +if test "${bash_cv_func_inet_aton+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#include +#include +#include +struct in_addr ap; +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + inet_aton("127.0.0.1", &ap); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_func_inet_aton=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +bash_cv_func_inet_aton=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_func_inet_aton" >&5 +echo "${ECHO_T}$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 + LIB@&t@OBJS="$LIB@&t@OBJS inet_aton.$ac_objext" +fi + +fi + +case "$host_os" in +irix4*) +echo "$as_me:$LINENO: checking for getpwent in -lsun" >&5 +echo $ECHO_N "checking for getpwent in -lsun... $ECHO_C" >&6 +if test "${ac_cv_lib_sun_getpwent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsun $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char getpwent (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +getpwent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_sun_getpwent=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_sun_getpwent=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_sun_getpwent" >&5 +echo "${ECHO_T}$ac_cv_lib_sun_getpwent" >&6 +if test $ac_cv_lib_sun_getpwent = 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 +echo "$as_me:$LINENO: checking for socket library" >&5 +echo $ECHO_N "checking for socket library... $ECHO_C" >&6 +_bash_needmsg=yes +fi +if test "${bash_cv_have_socklib+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for getpeername in -lsocket" >&5 +echo $ECHO_N "checking for getpeername in -lsocket... $ECHO_C" >&6 +if test "${ac_cv_lib_socket_getpeername+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket -lnsl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char getpeername (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +getpeername (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_socket_getpeername=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_socket_getpeername=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_socket_getpeername" >&5 +echo "${ECHO_T}$ac_cv_lib_socket_getpeername" >&6 +if test $ac_cv_lib_socket_getpeername = yes; then + bash_cv_have_socklib=yes +else + bash_cv_have_socklib=no +fi + +fi + +if test "X$_bash_needmsg" = Xyes; then + echo "$as_me:$LINENO: result: $bash_cv_have_socklib" >&5 +echo "${ECHO_T}$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 + echo "$as_me:$LINENO: checking for libnsl" >&5 +echo $ECHO_N "checking for libnsl... $ECHO_C" >&6 + _bash_needmsg=yes + fi + if test "${bash_cv_have_libnsl+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for t_open in -lnsl" >&5 +echo $ECHO_N "checking for t_open in -lnsl... $ECHO_C" >&6 +if test "${ac_cv_lib_nsl_t_open+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char t_open (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +t_open (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_nsl_t_open=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_nsl_t_open=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_t_open" >&5 +echo "${ECHO_T}$ac_cv_lib_nsl_t_open" >&6 +if test $ac_cv_lib_nsl_t_open = yes; then + bash_cv_have_libnsl=yes +else + bash_cv_have_libnsl=no +fi + +fi + + if test "X$_bash_needmsg" = Xyes; then + echo "$as_me:$LINENO: result: $bash_cv_have_libnsl" >&5 +echo "${ECHO_T}$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 +echo "$as_me:$LINENO: checking for gethostbyname in socket library" >&5 +echo $ECHO_N "checking for gethostbyname in socket library... $ECHO_C" >&6 +_bash_needmsg= +fi +if test "${bash_cv_have_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + struct hostent *hp; + hp = gethostbyname("localhost"); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_have_gethostbyname=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +bash_cv_have_gethostbyname=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +fi + +if test "X$_bash_needmsg" = Xyes; then + echo "$as_me:$LINENO: checking for gethostbyname in socket library" >&5 +echo $ECHO_N "checking for gethostbyname in socket library... $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $bash_cv_have_gethostbyname" >&5 +echo "${ECHO_T}$bash_cv_have_gethostbyname" >&6 +if test "$bash_cv_have_gethostbyname" = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_GETHOSTBYNAME 1 +_ACEOF + +fi + +fi + +echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5 +echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6 +if test "${ac_cv_type_uid_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "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 +echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 +echo "${ECHO_T}$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 + +echo "$as_me:$LINENO: checking type of array argument to getgroups" >&5 +echo $ECHO_N "checking type of array argument to getgroups... $ECHO_C" >&6 +if test "${ac_cv_type_getgroups+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_type_getgroups=cross +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* Thanks to Mike Rendell for this test. */ +#include +#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 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 but getgroups modifies an array of ints. */ + exit ((n > 0 && gidset[n] != val.gval) ? 1 : 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_getgroups=gid_t +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +ac_cv_type_getgroups=int +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +if test $ac_cv_type_getgroups = cross; then + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "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 +echo "$as_me:$LINENO: result: $ac_cv_type_getgroups" >&5 +echo "${ECHO_T}$ac_cv_type_getgroups" >&6 + +cat >>confdefs.h <<_ACEOF +@%:@define GETGROUPS_T $ac_cv_type_getgroups +_ACEOF + + +echo "$as_me:$LINENO: checking for off_t" >&5 +echo $ECHO_N "checking for off_t... $ECHO_C" >&6 +if test "${ac_cv_type_off_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((off_t *) 0) + return 0; +if (sizeof (off_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_off_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_off_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 +echo "${ECHO_T}$ac_cv_type_off_t" >&6 +if test $ac_cv_type_off_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define off_t long +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for mode_t" >&5 +echo $ECHO_N "checking for mode_t... $ECHO_C" >&6 +if test "${ac_cv_type_mode_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((mode_t *) 0) + return 0; +if (sizeof (mode_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_mode_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_mode_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5 +echo "${ECHO_T}$ac_cv_type_mode_t" >&6 +if test $ac_cv_type_mode_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define mode_t int +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5 +echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6 +if test "${ac_cv_type_uid_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "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 +echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 +echo "${ECHO_T}$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 + +echo "$as_me:$LINENO: checking for pid_t" >&5 +echo $ECHO_N "checking for pid_t... $ECHO_C" >&6 +if test "${ac_cv_type_pid_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((pid_t *) 0) + return 0; +if (sizeof (pid_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_pid_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_pid_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 +echo "${ECHO_T}$ac_cv_type_pid_t" >&6 +if test $ac_cv_type_pid_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define pid_t int +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for size_t" >&5 +echo $ECHO_N "checking for size_t... $ECHO_C" >&6 +if test "${ac_cv_type_size_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((size_t *) 0) + return 0; +if (sizeof (size_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_size_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_size_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +echo "${ECHO_T}$ac_cv_type_size_t" >&6 +if test $ac_cv_type_size_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define size_t unsigned +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for ssize_t" >&5 +echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6 +if test "${ac_cv_type_ssize_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((ssize_t *) 0) + return 0; +if (sizeof (ssize_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ssize_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_ssize_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5 +echo "${ECHO_T}$ac_cv_type_ssize_t" >&6 +if test $ac_cv_type_ssize_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define ssize_t int +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for time_t" >&5 +echo $ECHO_N "checking for time_t... $ECHO_C" >&6 +if test "${ac_cv_type_time_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((time_t *) 0) + return 0; +if (sizeof (time_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_time_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_time_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_time_t" >&5 +echo "${ECHO_T}$ac_cv_type_time_t" >&6 +if test $ac_cv_type_time_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define time_t long +_ACEOF + +fi + + + +echo "$as_me:$LINENO: checking for long long" >&5 +echo $ECHO_N "checking for long long... $ECHO_C" >&6 +if test "${bash_cv_type_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +long long ll = 1; int i = 63; +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + +long long llm = (long long) -1; +return ll << i | ll >> i | llm / ll | llm % ll; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_type_long_long='long long' +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +bash_cv_type_long_long='long' +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_type_long_long" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking for unsigned long long" >&5 +echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6 +if test "${bash_cv_type_unsigned_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +unsigned long long ull = 1; int i = 63; +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + +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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_type_unsigned_long_long='unsigned long long' +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +bash_cv_type_unsigned_long_long='unsigned long' +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_type_unsigned_long_long" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking return type of signal handlers" >&5 +echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 +if test "${ac_cv_type_signal+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#ifdef signal +# undef signal +#endif +#ifdef __cplusplus +extern "C" void (*signal (int, void (*)(int)))(int); +#else +void (*signal ()) (); +#endif + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +int i; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_signal=void +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_signal=int +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 +echo "${ECHO_T}$ac_cv_type_signal" >&6 + +cat >>confdefs.h <<_ACEOF +@%:@define RETSIGTYPE $ac_cv_type_signal +_ACEOF + + + +echo "$as_me:$LINENO: checking for char" >&5 +echo $ECHO_N "checking for char... $ECHO_C" >&6 +if test "${ac_cv_type_char+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((char *) 0) + return 0; +if (sizeof (char)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_char=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_char=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_char" >&5 +echo "${ECHO_T}$ac_cv_type_char" >&6 + +echo "$as_me:$LINENO: checking size of char" >&5 +echo $ECHO_N "checking size of char... $ECHO_C" >&6 +if test "${ac_cv_sizeof_char+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_char" = yes; then + # The cast to unsigned long 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. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (char))) >= 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (char))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat 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 conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (char))) < 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (char))) >= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat 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 conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_lo= ac_hi= +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +rm -f 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 +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (char))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_char=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (char), 77" >&5 +echo "$as_me: error: cannot compute sizeof (char), 77" >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 +echo "$as_me: error: cannot run test program while cross compiling" >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +long longval () { return (long) (sizeof (char)); } +unsigned long ulongval () { return (long) (sizeof (char)); } +@%:@include +@%:@include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (char))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (char)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (char)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_char=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (char), 77" >&5 +echo "$as_me: error: cannot compute sizeof (char), 77" >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_char=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_char" >&5 +echo "${ECHO_T}$ac_cv_sizeof_char" >&6 +cat >>confdefs.h <<_ACEOF +@%:@define SIZEOF_CHAR $ac_cv_sizeof_char +_ACEOF + + +echo "$as_me:$LINENO: checking for short" >&5 +echo $ECHO_N "checking for short... $ECHO_C" >&6 +if test "${ac_cv_type_short+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((short *) 0) + return 0; +if (sizeof (short)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_short=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_short=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_short" >&5 +echo "${ECHO_T}$ac_cv_type_short" >&6 + +echo "$as_me:$LINENO: checking size of short" >&5 +echo $ECHO_N "checking size of short... $ECHO_C" >&6 +if test "${ac_cv_sizeof_short+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_short" = yes; then + # The cast to unsigned long 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. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (short))) >= 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat 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 conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (short))) < 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (short))) >= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat 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 conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_lo= ac_hi= +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +rm -f 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 +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_short=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77" >&5 +echo "$as_me: error: cannot compute sizeof (short), 77" >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 +echo "$as_me: error: cannot run test program while cross compiling" >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +long longval () { return (long) (sizeof (short)); } +unsigned long ulongval () { return (long) (sizeof (short)); } +@%:@include +@%:@include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (short))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (short)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (short)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_short=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77" >&5 +echo "$as_me: error: cannot compute sizeof (short), 77" >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_short=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5 +echo "${ECHO_T}$ac_cv_sizeof_short" >&6 +cat >>confdefs.h <<_ACEOF +@%:@define SIZEOF_SHORT $ac_cv_sizeof_short +_ACEOF + + +echo "$as_me:$LINENO: checking for int" >&5 +echo $ECHO_N "checking for int... $ECHO_C" >&6 +if test "${ac_cv_type_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((int *) 0) + return 0; +if (sizeof (int)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_int=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_int=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5 +echo "${ECHO_T}$ac_cv_type_int" >&6 + +echo "$as_me:$LINENO: checking size of int" >&5 +echo $ECHO_N "checking size of int... $ECHO_C" >&6 +if test "${ac_cv_sizeof_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_int" = yes; then + # The cast to unsigned long 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. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (int))) >= 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat 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 conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (int))) < 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (int))) >= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat 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 conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_lo= ac_hi= +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +rm -f 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 +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_int=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77" >&5 +echo "$as_me: error: cannot compute sizeof (int), 77" >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 +echo "$as_me: error: cannot run test program while cross compiling" >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +long longval () { return (long) (sizeof (int)); } +unsigned long ulongval () { return (long) (sizeof (int)); } +@%:@include +@%:@include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (int))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (int)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (int)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_int=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77" >&5 +echo "$as_me: error: cannot compute sizeof (int), 77" >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_int=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 +echo "${ECHO_T}$ac_cv_sizeof_int" >&6 +cat >>confdefs.h <<_ACEOF +@%:@define SIZEOF_INT $ac_cv_sizeof_int +_ACEOF + + +echo "$as_me:$LINENO: checking for long" >&5 +echo $ECHO_N "checking for long... $ECHO_C" >&6 +if test "${ac_cv_type_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((long *) 0) + return 0; +if (sizeof (long)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_long=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_long=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5 +echo "${ECHO_T}$ac_cv_type_long" >&6 + +echo "$as_me:$LINENO: checking size of long" >&5 +echo $ECHO_N "checking size of long... $ECHO_C" >&6 +if test "${ac_cv_sizeof_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_long" = yes; then + # The cast to unsigned long 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. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (long))) >= 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat 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 conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (long))) < 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (long))) >= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat 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 conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_lo= ac_hi= +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +rm -f 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 +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_long=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77" >&5 +echo "$as_me: error: cannot compute sizeof (long), 77" >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 +echo "$as_me: error: cannot run test program while cross compiling" >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +long longval () { return (long) (sizeof (long)); } +unsigned long ulongval () { return (long) (sizeof (long)); } +@%:@include +@%:@include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (long))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (long)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (long)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_long=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77" >&5 +echo "$as_me: error: cannot compute sizeof (long), 77" >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_long=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long" >&6 +cat >>confdefs.h <<_ACEOF +@%:@define SIZEOF_LONG $ac_cv_sizeof_long +_ACEOF + + +echo "$as_me:$LINENO: checking for char *" >&5 +echo $ECHO_N "checking for char *... $ECHO_C" >&6 +if test "${ac_cv_type_char_p+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((char * *) 0) + return 0; +if (sizeof (char *)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_char_p=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_char_p=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_char_p" >&5 +echo "${ECHO_T}$ac_cv_type_char_p" >&6 + +echo "$as_me:$LINENO: checking size of char *" >&5 +echo $ECHO_N "checking size of char *... $ECHO_C" >&6 +if test "${ac_cv_sizeof_char_p+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_char_p" = yes; then + # The cast to unsigned long 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. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (char *))) >= 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (char *))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat 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 conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (char *))) < 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (char *))) >= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat 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 conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_lo= ac_hi= +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +rm -f 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 +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (char *))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_char_p=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (char *), 77" >&5 +echo "$as_me: error: cannot compute sizeof (char *), 77" >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 +echo "$as_me: error: cannot run test program while cross compiling" >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +long longval () { return (long) (sizeof (char *)); } +unsigned long ulongval () { return (long) (sizeof (char *)); } +@%:@include +@%:@include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (char *))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (char *)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (char *)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_char_p=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (char *), 77" >&5 +echo "$as_me: error: cannot compute sizeof (char *), 77" >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_char_p=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_char_p" >&5 +echo "${ECHO_T}$ac_cv_sizeof_char_p" >&6 +cat >>confdefs.h <<_ACEOF +@%:@define SIZEOF_CHAR_P $ac_cv_sizeof_char_p +_ACEOF + + +echo "$as_me:$LINENO: checking for double" >&5 +echo $ECHO_N "checking for double... $ECHO_C" >&6 +if test "${ac_cv_type_double+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((double *) 0) + return 0; +if (sizeof (double)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_double=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_double=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_double" >&5 +echo "${ECHO_T}$ac_cv_type_double" >&6 + +echo "$as_me:$LINENO: checking size of double" >&5 +echo $ECHO_N "checking size of double... $ECHO_C" >&6 +if test "${ac_cv_sizeof_double+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_double" = yes; then + # The cast to unsigned long 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. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (double))) >= 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (double))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat 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 conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (double))) < 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (double))) >= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat 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 conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_lo= ac_hi= +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +rm -f 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 +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (double))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_double=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77" >&5 +echo "$as_me: error: cannot compute sizeof (double), 77" >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 +echo "$as_me: error: cannot run test program while cross compiling" >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +long longval () { return (long) (sizeof (double)); } +unsigned long ulongval () { return (long) (sizeof (double)); } +@%:@include +@%:@include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (double))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (double)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (double)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_double=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77" >&5 +echo "$as_me: error: cannot compute sizeof (double), 77" >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_double=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_double" >&5 +echo "${ECHO_T}$ac_cv_sizeof_double" >&6 +cat >>confdefs.h <<_ACEOF +@%:@define SIZEOF_DOUBLE $ac_cv_sizeof_double +_ACEOF + + +echo "$as_me:$LINENO: checking for long long" >&5 +echo $ECHO_N "checking for long long... $ECHO_C" >&6 +if test "${ac_cv_type_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((long long *) 0) + return 0; +if (sizeof (long long)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_long_long=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_long_long=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 +echo "${ECHO_T}$ac_cv_type_long_long" >&6 + +echo "$as_me:$LINENO: checking size of long long" >&5 +echo $ECHO_N "checking size of long long... $ECHO_C" >&6 +if test "${ac_cv_sizeof_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_long_long" = yes; then + # The cast to unsigned long 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. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (long long))) >= 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat 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 conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (long long))) < 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (long long))) >= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat 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 conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_lo= ac_hi= +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +rm -f 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 +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_long_long=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77" >&5 +echo "$as_me: error: cannot compute sizeof (long long), 77" >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 +echo "$as_me: error: cannot run test program while cross compiling" >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +long longval () { return (long) (sizeof (long long)); } +unsigned long ulongval () { return (long) (sizeof (long long)); } +@%:@include +@%:@include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (long long))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (long long)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (long long)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_long_long=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77" >&5 +echo "$as_me: error: cannot compute sizeof (long long), 77" >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_long_long=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6 +cat >>confdefs.h <<_ACEOF +@%:@define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long +_ACEOF + + + +echo "$as_me:$LINENO: checking for u_int" >&5 +echo $ECHO_N "checking for u_int... $ECHO_C" >&6 +if test "${ac_cv_type_u_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((u_int *) 0) + return 0; +if (sizeof (u_int)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_int=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_u_int=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_int" >&5 +echo "${ECHO_T}$ac_cv_type_u_int" >&6 +if test $ac_cv_type_u_int = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define u_int unsigned int +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for u_long" >&5 +echo $ECHO_N "checking for u_long... $ECHO_C" >&6 +if test "${ac_cv_type_u_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((u_long *) 0) + return 0; +if (sizeof (u_long)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_long=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_u_long=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_long" >&5 +echo "${ECHO_T}$ac_cv_type_u_long" >&6 +if test $ac_cv_type_u_long = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define u_long unsigned long +_ACEOF + +fi + + + +if test "$ac_cv_sizeof_short" = 2; then + echo "$as_me:$LINENO: checking for bits16_t" >&5 +echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits16_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((bits16_t *) 0) + return 0; +if (sizeof (bits16_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits16_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_bits16_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits16_t" >&6 +if test $ac_cv_type_bits16_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define bits16_t short +_ACEOF + +fi + +elif test "$ac_cv_sizeof_char" = 2; then + echo "$as_me:$LINENO: checking for bits16_t" >&5 +echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits16_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((bits16_t *) 0) + return 0; +if (sizeof (bits16_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits16_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_bits16_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits16_t" >&6 +if test $ac_cv_type_bits16_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define bits16_t char +_ACEOF + +fi + +else + echo "$as_me:$LINENO: checking for bits16_t" >&5 +echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits16_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((bits16_t *) 0) + return 0; +if (sizeof (bits16_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits16_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_bits16_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits16_t" >&6 +if test $ac_cv_type_bits16_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define bits16_t short +_ACEOF + +fi + +fi + + +if test "$ac_cv_sizeof_short" = 2; then + echo "$as_me:$LINENO: checking for u_bits16_t" >&5 +echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6 +if test "${ac_cv_type_u_bits16_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((u_bits16_t *) 0) + return 0; +if (sizeof (u_bits16_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_bits16_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_u_bits16_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6 +if test $ac_cv_type_u_bits16_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define u_bits16_t unsigned short +_ACEOF + +fi + +elif test "$ac_cv_sizeof_char" = 2; then + echo "$as_me:$LINENO: checking for u_bits16_t" >&5 +echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6 +if test "${ac_cv_type_u_bits16_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((u_bits16_t *) 0) + return 0; +if (sizeof (u_bits16_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_bits16_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_u_bits16_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6 +if test $ac_cv_type_u_bits16_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define u_bits16_t unsigned char +_ACEOF + +fi + +else + echo "$as_me:$LINENO: checking for u_bits16_t" >&5 +echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6 +if test "${ac_cv_type_u_bits16_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((u_bits16_t *) 0) + return 0; +if (sizeof (u_bits16_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_bits16_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_u_bits16_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6 +if test $ac_cv_type_u_bits16_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define u_bits16_t unsigned short +_ACEOF + +fi + +fi + + +if test "$ac_cv_sizeof_int" = 4; then + echo "$as_me:$LINENO: checking for bits32_t" >&5 +echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((bits32_t *) 0) + return 0; +if (sizeof (bits32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits32_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_bits32_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits32_t" >&6 +if test $ac_cv_type_bits32_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define bits32_t int +_ACEOF + +fi + +elif test "$ac_cv_sizeof_long" = 4; then + echo "$as_me:$LINENO: checking for bits32_t" >&5 +echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((bits32_t *) 0) + return 0; +if (sizeof (bits32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits32_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_bits32_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits32_t" >&6 +if test $ac_cv_type_bits32_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define bits32_t long +_ACEOF + +fi + +else + echo "$as_me:$LINENO: checking for bits32_t" >&5 +echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((bits32_t *) 0) + return 0; +if (sizeof (bits32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits32_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_bits32_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits32_t" >&6 +if test $ac_cv_type_bits32_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define bits32_t int +_ACEOF + +fi + +fi + + +if test "$ac_cv_sizeof_int" = 4; then + echo "$as_me:$LINENO: checking for u_bits32_t" >&5 +echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6 +if test "${ac_cv_type_u_bits32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((u_bits32_t *) 0) + return 0; +if (sizeof (u_bits32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_bits32_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_u_bits32_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6 +if test $ac_cv_type_u_bits32_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define u_bits32_t unsigned int +_ACEOF + +fi + +elif test "$ac_cv_sizeof_long" = 4; then + echo "$as_me:$LINENO: checking for u_bits32_t" >&5 +echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6 +if test "${ac_cv_type_u_bits32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((u_bits32_t *) 0) + return 0; +if (sizeof (u_bits32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_bits32_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_u_bits32_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6 +if test $ac_cv_type_u_bits32_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define u_bits32_t unsigned long +_ACEOF + +fi + +else + echo "$as_me:$LINENO: checking for u_bits32_t" >&5 +echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6 +if test "${ac_cv_type_u_bits32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((u_bits32_t *) 0) + return 0; +if (sizeof (u_bits32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_bits32_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_u_bits32_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6 +if test $ac_cv_type_u_bits32_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define u_bits32_t unsigned int +_ACEOF + +fi + +fi + + +if test "$ac_cv_sizeof_char_p" = 8; then + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((bits64_t *) 0) + return 0; +if (sizeof (bits64_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits64_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_bits64_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 +if test $ac_cv_type_bits64_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define bits64_t char * +_ACEOF + +fi + +elif test "$ac_cv_sizeof_double" = 8; then + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((bits64_t *) 0) + return 0; +if (sizeof (bits64_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits64_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_bits64_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 +if test $ac_cv_type_bits64_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define bits64_t double +_ACEOF + +fi + +elif test -n "$ac_cv_type_long_long" && test "$ac_cv_sizeof_long_long" = 8; then + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((bits64_t *) 0) + return 0; +if (sizeof (bits64_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits64_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_bits64_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 +if test $ac_cv_type_bits64_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define bits64_t long long +_ACEOF + +fi + +elif test "$ac_cv_sizeof_long" = 8; then + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((bits64_t *) 0) + return 0; +if (sizeof (bits64_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits64_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_bits64_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 +if test $ac_cv_type_bits64_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define bits64_t long +_ACEOF + +fi + +else + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((bits64_t *) 0) + return 0; +if (sizeof (bits64_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits64_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_bits64_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 +if test $ac_cv_type_bits64_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define bits64_t double +_ACEOF + +fi + +fi + + + +if test "$ac_cv_sizeof_int" = "$ac_cv_sizeof_char_p"; then + echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 +if test "${ac_cv_type_ptrdiff_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((ptrdiff_t *) 0) + return 0; +if (sizeof (ptrdiff_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ptrdiff_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_ptrdiff_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 +if test $ac_cv_type_ptrdiff_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define ptrdiff_t int +_ACEOF + +fi + +elif test "$ac_cv_sizeof_long" = "$ac_cv_sizeof_char_p"; then + echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 +if test "${ac_cv_type_ptrdiff_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((ptrdiff_t *) 0) + return 0; +if (sizeof (ptrdiff_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ptrdiff_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_ptrdiff_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 +if test $ac_cv_type_ptrdiff_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define ptrdiff_t long +_ACEOF + +fi + +elif test "$ac_cv_type_long_long" = yes && test "$ac_cv_sizeof_long_long" = "$ac_cv_sizeof_char_p"; then + echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 +if test "${ac_cv_type_ptrdiff_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((ptrdiff_t *) 0) + return 0; +if (sizeof (ptrdiff_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ptrdiff_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_ptrdiff_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 +if test $ac_cv_type_ptrdiff_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define ptrdiff_t long long +_ACEOF + +fi + +else + echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 +if test "${ac_cv_type_ptrdiff_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((ptrdiff_t *) 0) + return 0; +if (sizeof (ptrdiff_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ptrdiff_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_ptrdiff_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 +if test $ac_cv_type_ptrdiff_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define ptrdiff_t int +_ACEOF + +fi + +fi + + +echo "$as_me:$LINENO: checking whether stat file-mode macros are broken" >&5 +echo $ECHO_N "checking whether stat file-mode macros are broken... $ECHO_C" >&6 +if test "${ac_cv_header_stat_broken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include + +#if defined(S_ISBLK) && defined(S_IFDIR) +# if S_ISBLK (S_IFDIR) +You lose. +# endif +#endif + +#if defined(S_ISBLK) && defined(S_IFCHR) +# if S_ISBLK (S_IFCHR) +You lose. +# endif +#endif + +#if defined(S_ISLNK) && defined(S_IFREG) +# if S_ISLNK (S_IFREG) +You lose. +# endif +#endif + +#if defined(S_ISSOCK) && defined(S_IFREG) +# if S_ISSOCK (S_IFREG) +You lose. +# endif +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "You lose" >/dev/null 2>&1; then + ac_cv_header_stat_broken=yes +else + ac_cv_header_stat_broken=no +fi +rm -f conftest* + +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stat_broken" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking whether @%:@! works in shell scripts" >&5 +echo $ECHO_N "checking whether @%:@! works in shell scripts... $ECHO_C" >&6 +if test "${ac_cv_sys_interpreter+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + echo '#! /bin/cat +exit 69 +' >conftest +chmod u+x conftest +(SHELL=/bin/sh; export SHELL; ./conftest >/dev/null) +if test $? -ne 69; then + ac_cv_sys_interpreter=yes +else + ac_cv_sys_interpreter=no +fi +rm -f conftest +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_interpreter" >&5 +echo "${ECHO_T}$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 + +fi + +if test "$ac_cv_func_lstat" = "no"; then +echo "$as_me:$LINENO: checking for lstat" >&5 +echo $ECHO_N "checking for lstat... $ECHO_C" >&6 +if test "${bash_cv_func_lstat+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#include +#include + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + lstat(".",(struct stat *)0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_func_lstat=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +bash_cv_func_lstat=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_func_lstat" >&5 +echo "${ECHO_T}$bash_cv_func_lstat" >&6 +if test $bash_cv_func_lstat = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_LSTAT 1 +_ACEOF + +fi + +fi + + +echo "$as_me:$LINENO: checking whether the ctype macros accept non-ascii characters" >&5 +echo $ECHO_N "checking whether the ctype macros accept non-ascii characters... $ECHO_C" >&6 +if test "${bash_cv_func_ctype_nonascii+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check ctype macros if cross compiling -- defaulting to no" >&5 +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 +#line $LINENO "configure" +#include "confdefs.h" + +#ifdef HAVE_LOCALE_H +#include +#endif +#include +#include + +main(c, v) +int c; +char *v[]; +{ + char *deflocale; + unsigned char x; + int r1, r2; + +#ifdef HAVE_SETLOCALE + /* We take a shot here. If that locale is not known, try the + system default. We try this one because '\342' (226) is + known to be a printable character in that locale. */ + deflocale = setlocale(LC_ALL, "en_US.ISO8859-1"); + if (deflocale == 0) + deflocale = setlocale(LC_ALL, ""); +#endif + + x = '\342'; + r1 = isprint(x); + x -= 128; + r2 = isprint(x); + exit (r1 == 0 || r2 == 0); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_func_ctype_nonascii=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +bash_cv_func_ctype_nonascii=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_func_ctype_nonascii" >&5 +echo "${ECHO_T}$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 + +fi + +echo "$as_me:$LINENO: checking if dup2 fails to clear the close-on-exec flag" >&5 +echo $ECHO_N "checking if dup2 fails to clear the close-on-exec flag... $ECHO_C" >&6 +if test "${bash_cv_dup2_broken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check dup2 if cross compiling -- defaulting to no" >&5 +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 +#line $LINENO "configure" +#include "confdefs.h" + +#include +#include +main() +{ + int fd1, fd2, fl; + fd1 = open("/dev/null", 2); + if (fcntl(fd1, 2, 1) < 0) + exit(1); + fd2 = dup2(fd1, 1); + if (fd2 < 0) + exit(2); + fl = fcntl(fd2, 1, 0); + /* fl will be 1 if dup2 did not reset the close-on-exec flag. */ + exit(fl != 1); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_dup2_broken=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +bash_cv_dup2_broken=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + +fi + +echo "$as_me:$LINENO: result: $bash_cv_dup2_broken" >&5 +echo "${ECHO_T}$bash_cv_dup2_broken" >&6 +if test $bash_cv_dup2_broken = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define DUP2_BROKEN 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking whether pgrps need synchronization" >&5 +echo $ECHO_N "checking whether pgrps need synchronization... $ECHO_C" >&6 +if test "${bash_cv_pgrp_pipe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check pgrp synchronization if cross compiling -- defaulting to no" >&5 +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 +#line $LINENO "configure" +#include "confdefs.h" + +#ifdef HAVE_UNISTD_H +# include +#endif +main() +{ +# ifdef GETPGRP_VOID +# define getpgID() getpgrp() +# else +# define getpgID() getpgrp(0) +# define setpgid(x,y) setpgrp(x,y) +# endif + int pid1, pid2, fds[2]; + int status; + char ok; + + switch (pid1 = fork()) { + case -1: + exit(1); + case 0: + setpgid(0, getpid()); + exit(0); + } + setpgid(pid1, pid1); + + sleep(2); /* let first child die */ + + if (pipe(fds) < 0) + exit(2); + + switch (pid2 = fork()) { + case -1: + exit(3); + case 0: + setpgid(0, pid1); + ok = getpgID() == pid1; + write(fds[1], &ok, 1); + exit(0); + } + setpgid(pid2, pid1); + + close(fds[1]); + if (read(fds[0], &ok, 1) != 1) + exit(4); + wait(&status); + wait(&status); + exit(ok ? 0 : 5); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_pgrp_pipe=no +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +bash_cv_pgrp_pipe=yes +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + +fi + +echo "$as_me:$LINENO: result: $bash_cv_pgrp_pipe" >&5 +echo "${ECHO_T}$bash_cv_pgrp_pipe" >&6 +if test $bash_cv_pgrp_pipe = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define PGRP_PIPE 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for type of signal functions" >&5 +echo $ECHO_N "checking for type of signal functions... $ECHO_C" >&6 +if test "${bash_cv_signal_vintage+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + sigset_t ss; + struct sigaction sa; + sigemptyset(&ss); sigsuspend(&ss); + sigaction(SIGINT, &sa, (struct sigaction *) 0); + sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_signal_vintage=posix +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + int mask = sigmask(SIGINT); + sigsetmask(mask); sigblock(mask); sigpause(mask); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_signal_vintage=4.2bsd +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + + #include + RETSIGTYPE foo() { } +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_signal_vintage=svr3 +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +bash_cv_signal_vintage=v7 + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +fi + +echo "$as_me:$LINENO: result: $bash_cv_signal_vintage" >&5 +echo "${ECHO_T}$bash_cv_signal_vintage" >&6 +if test "$bash_cv_signal_vintage" = posix; then +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_POSIX_SIGNALS 1 +_ACEOF + +elif test "$bash_cv_signal_vintage" = "4.2bsd"; then +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_BSD_SIGNALS 1 +_ACEOF + +elif test "$bash_cv_signal_vintage" = svr3; then +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_USG_SIGHOLD 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for sys_errlist and sys_nerr" >&5 +echo $ECHO_N "checking for sys_errlist and sys_nerr... $ECHO_C" >&6 +if test "${bash_cv_sys_errlist+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +extern char *sys_errlist[]; + extern int sys_nerr; + char *msg = sys_errlist[sys_nerr - 1]; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_sys_errlist=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +bash_cv_sys_errlist=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_sys_errlist" >&5 +echo "${ECHO_T}$bash_cv_sys_errlist" >&6 +if test $bash_cv_sys_errlist = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_SYS_ERRLIST 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for sys_siglist in system C library" >&5 +echo $ECHO_N "checking for sys_siglist in system C library... $ECHO_C" >&6 +if test "${bash_cv_sys_siglist+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check for sys_siglist if cross compiling -- defaulting to no" >&5 +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 +#line $LINENO "configure" +#include "confdefs.h" + +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifndef SYS_SIGLIST_DECLARED +extern char *sys_siglist[]; +#endif +main() +{ +char *msg = sys_siglist[2]; +exit(msg == 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_sys_siglist=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +bash_cv_sys_siglist=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_sys_siglist" >&5 +echo "${ECHO_T}$bash_cv_sys_siglist" >&6 +if test $bash_cv_sys_siglist = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_SYS_SIGLIST 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for _sys_siglist in signal.h or unistd.h" >&5 +echo $ECHO_N "checking for _sys_siglist in signal.h or unistd.h... $ECHO_C" >&6 +if test "${bash_cv_decl_under_sys_siglist+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + char *msg = _sys_siglist[2]; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_decl_under_sys_siglist=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +bash_cv_decl_under_sys_siglist=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_decl_under_sys_siglist" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking for _sys_siglist in system C library" >&5 +echo $ECHO_N "checking for _sys_siglist in system C library... $ECHO_C" >&6 +if test "${bash_cv_under_sys_siglist+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check for _sys_siglist if cross compiling -- defaulting to no" >&5 +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 +#line $LINENO "configure" +#include "confdefs.h" + +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifndef UNDER_SYS_SIGLIST_DECLARED +extern char *_sys_siglist[]; +#endif +main() +{ +char *msg = (char *)_sys_siglist[2]; +exit(msg == 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_under_sys_siglist=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +bash_cv_under_sys_siglist=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_under_sys_siglist" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking whether signal handlers are of type void" >&5 +echo $ECHO_N "checking whether signal handlers are of type void... $ECHO_C" >&6 +if test "${bash_cv_void_sighandler+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#ifdef signal +#undef signal +#endif +#ifdef __cplusplus +extern "C" +#endif +void (*signal ()) (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +int i; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_void_sighandler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +bash_cv_void_sighandler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_void_sighandler" >&5 +echo "${ECHO_T}$bash_cv_void_sighandler" >&6 +if test $bash_cv_void_sighandler = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define VOID_SIGHANDLER 1 +_ACEOF + +fi + + + +echo "$as_me:$LINENO: checking for clock_t" >&5 +echo $ECHO_N "checking for clock_t... $ECHO_C" >&6 +if test "${bash_cv_type_clock_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#if STDC_HEADERS +#include +#include +#endif +#if HAVE_INTTYPES_H +#include +#endif +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "clock_t" >/dev/null 2>&1; then + bash_cv_type_clock_t=yes +else + bash_cv_type_clock_t=no +fi +rm -f conftest* + +fi + +echo "$as_me:$LINENO: result: $bash_cv_type_clock_t" >&5 +echo "${ECHO_T}$bash_cv_type_clock_t" >&6 + +if test $bash_cv_type_clock_t = no; then + cat >>confdefs.h <<_ACEOF +@%:@define clock_t long +_ACEOF + +fi + + + +echo "$as_me:$LINENO: checking for sigset_t" >&5 +echo $ECHO_N "checking for sigset_t... $ECHO_C" >&6 +if test "${bash_cv_type_sigset_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#if STDC_HEADERS +#include +#include +#endif +#if HAVE_INTTYPES_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 + +echo "$as_me:$LINENO: result: $bash_cv_type_sigset_t" >&5 +echo "${ECHO_T}$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 + + + +echo "$as_me:$LINENO: checking for quad_t" >&5 +echo $ECHO_N "checking for quad_t... $ECHO_C" >&6 +if test "${bash_cv_type_quad_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#if STDC_HEADERS +#include +#include +#endif +#if HAVE_INTTYPES_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 + +echo "$as_me:$LINENO: result: $bash_cv_type_quad_t" >&5 +echo "${ECHO_T}$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 + + + +echo "$as_me:$LINENO: checking for intmax_t" >&5 +echo $ECHO_N "checking for intmax_t... $ECHO_C" >&6 +if test "${bash_cv_type_intmax_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#if STDC_HEADERS +#include +#include +#endif +#if HAVE_INTTYPES_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 + +echo "$as_me:$LINENO: result: $bash_cv_type_intmax_t" >&5 +echo "${ECHO_T}$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 + + + +echo "$as_me:$LINENO: checking for uintmax_t" >&5 +echo $ECHO_N "checking for uintmax_t... $ECHO_C" >&6 +if test "${bash_cv_type_uintmax_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#if STDC_HEADERS +#include +#include +#endif +#if HAVE_INTTYPES_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 + +echo "$as_me:$LINENO: result: $bash_cv_type_uintmax_t" >&5 +echo "${ECHO_T}$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 + + +echo "$as_me:$LINENO: checking for socklen_t" >&5 +echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6 +if test "${bash_cv_type_socklen_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#if STDC_HEADERS +#include +#include +#endif +#if HAVE_INTTYPES_H +#include +#endif +#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 +else + bash_cv_type_socklen_t=no +fi +rm -f conftest* + +fi + +echo "$as_me:$LINENO: result: $bash_cv_type_socklen_t" >&5 +echo "${ECHO_T}$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 + + fi +if test $bash_cv_type_socklen_t = no; then + cat >>confdefs.h <<_ACEOF +@%:@define socklen_t int +_ACEOF + +fi + +fi +echo "$as_me:$LINENO: checking for size and type of struct rlimit fields" >&5 +echo $ECHO_N "checking for size and type of struct rlimit fields... $ECHO_C" >&6 +if test "${bash_cv_type_rlimit+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +rlim_t xxx; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_type_rlimit=rlim_t +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + +if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check quad_t if cross compiling -- defaulting to long" >&5 +echo "$as_me: WARNING: cannot check quad_t if cross compiling -- defaulting to long" >&2;} + bash_cv_type_rlimit=long +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#include +#include +#include +main() +{ +#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_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_type_rlimit=quad_t +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +bash_cv_type_rlimit=long +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +fi + +echo "$as_me:$LINENO: result: $bash_cv_type_rlimit" >&5 +echo "${ECHO_T}$bash_cv_type_rlimit" >&6 +if test $bash_cv_type_rlimit = quad_t; then +cat >>confdefs.h <<\_ACEOF +@%:@define RLIMTYPE quad_t +_ACEOF + +elif test $bash_cv_type_rlimit = rlim_t; then +cat >>confdefs.h <<\_ACEOF +@%:@define RLIMTYPE rlim_t +_ACEOF + +fi + + + +echo "$as_me:$LINENO: checking for struct termios.c_line" >&5 +echo $ECHO_N "checking for struct termios.c_line... $ECHO_C" >&6 +if test "${ac_cv_member_struct_termios_c_line+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#include +#include + + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static struct termios ac_aggr; +if (ac_aggr.c_line) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_termios_c_line=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_member_struct_termios_c_line=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_termios_c_line" >&5 +echo "${ECHO_T}$ac_cv_member_struct_termios_c_line" >&6 +if test $ac_cv_member_struct_termios_c_line = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define TERMIOS_LDISC 1 +_ACEOF + +fi + + + +echo "$as_me:$LINENO: checking for struct termio.c_line" >&5 +echo $ECHO_N "checking for struct termio.c_line... $ECHO_C" >&6 +if test "${ac_cv_member_struct_termio_c_line+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#include +#include + + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static struct termio ac_aggr; +if (ac_aggr.c_line) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_termio_c_line=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_member_struct_termio_c_line=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_termio_c_line" >&5 +echo "${ECHO_T}$ac_cv_member_struct_termio_c_line" >&6 +if test $ac_cv_member_struct_termio_c_line = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define TERMIO_LDISC 1 +_ACEOF + +fi + + + +echo "$as_me:$LINENO: checking for struct dirent.d_ino" >&5 +echo $ECHO_N "checking for struct dirent.d_ino... $ECHO_C" >&6 +if test "${bash_cv_dirent_has_dino+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#include +#include +#ifdef HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ +#if defined(HAVE_DIRENT_H) +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif /* SYSNDIR */ +# ifdef HAVE_SYS_DIR_H +# include +# endif /* SYSDIR */ +# ifdef HAVE_NDIR_H +# include +# endif +#endif /* HAVE_DIRENT_H */ + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + +struct dirent d; int z; z = d.d_ino; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_dirent_has_dino=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +bash_cv_dirent_has_dino=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_dirent_has_dino" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking for struct dirent.d_fileno" >&5 +echo $ECHO_N "checking for struct dirent.d_fileno... $ECHO_C" >&6 +if test "${bash_cv_dirent_has_d_fileno+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#include +#include +#ifdef HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ +#if defined(HAVE_DIRENT_H) +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif /* SYSNDIR */ +# ifdef HAVE_SYS_DIR_H +# include +# endif /* SYSDIR */ +# ifdef HAVE_NDIR_H +# include +# endif +#endif /* HAVE_DIRENT_H */ + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + +struct dirent d; int z; z = d.d_fileno; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_dirent_has_d_fileno=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +bash_cv_dirent_has_d_fileno=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_dirent_has_d_fileno" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking for struct dirent.d_namlen" >&5 +echo $ECHO_N "checking for struct dirent.d_namlen... $ECHO_C" >&6 +if test "${bash_cv_dirent_has_d_namlen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#include +#include +#ifdef HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ +#if defined(HAVE_DIRENT_H) +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif /* SYSNDIR */ +# ifdef HAVE_SYS_DIR_H +# include +# endif /* SYSDIR */ +# ifdef HAVE_NDIR_H +# include +# endif +#endif /* HAVE_DIRENT_H */ + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + +struct dirent d; int z; z = d.d_namlen; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_dirent_has_d_namlen=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +bash_cv_dirent_has_d_namlen=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_dirent_has_d_namlen" >&5 +echo "${ECHO_T}$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 + +fi + +echo "$as_me:$LINENO: checking for struct winsize in sys/ioctl.h and termios.h" >&5 +echo $ECHO_N "checking for struct winsize in sys/ioctl.h and termios.h... $ECHO_C" >&6 +if test "${bash_cv_struct_winsize_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +struct winsize x; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_struct_winsize_header=ioctl_h +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +struct winsize x; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_struct_winsize_header=termios_h +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +bash_cv_struct_winsize_header=other +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi + +if test $bash_cv_struct_winsize_header = ioctl_h; then + echo "$as_me:$LINENO: result: sys/ioctl.h" >&5 +echo "${ECHO_T}sys/ioctl.h" >&6 + cat >>confdefs.h <<\_ACEOF +@%:@define STRUCT_WINSIZE_IN_SYS_IOCTL 1 +_ACEOF + +elif test $bash_cv_struct_winsize_header = termios_h; then + echo "$as_me:$LINENO: result: termios.h" >&5 +echo "${ECHO_T}termios.h" >&6 + cat >>confdefs.h <<\_ACEOF +@%:@define STRUCT_WINSIZE_IN_TERMIOS 1 +_ACEOF + +else + echo "$as_me:$LINENO: result: not found" >&5 +echo "${ECHO_T}not found" >&6 +fi + +echo "$as_me:$LINENO: checking for struct timeval in sys/time.h and time.h" >&5 +echo $ECHO_N "checking for struct timeval in sys/time.h and time.h... $ECHO_C" >&6 +if test "${bash_cv_struct_timeval+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "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 +#line $LINENO "configure" +#include "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 + +echo "$as_me:$LINENO: result: $bash_cv_struct_timeval" >&5 +echo "${ECHO_T}$bash_cv_struct_timeval" >&6 +if test $bash_cv_struct_timeval = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_TIMEVAL 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for struct stat.st_blocks" >&5 +echo $ECHO_N "checking for struct stat.st_blocks... $ECHO_C" >&6 +if test "${ac_cv_member_struct_stat_st_blocks+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static struct stat ac_aggr; +if (ac_aggr.st_blocks) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_stat_st_blocks=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_member_struct_stat_st_blocks=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_blocks" >&5 +echo "${ECHO_T}$ac_cv_member_struct_stat_st_blocks" >&6 +if test $ac_cv_member_struct_stat_st_blocks = yes; then + +cat >>confdefs.h <<_ACEOF +@%:@define HAVE_STRUCT_STAT_ST_BLOCKS 1 +_ACEOF + + +fi + +echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5 +echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6 +if test "${ac_cv_struct_tm+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +struct tm *tp; tp->tm_sec; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_struct_tm=time.h +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_struct_tm=sys/time.h +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5 +echo "${ECHO_T}$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 + +echo "$as_me:$LINENO: checking for struct tm.tm_zone" >&5 +echo $ECHO_N "checking for struct tm.tm_zone... $ECHO_C" >&6 +if test "${ac_cv_member_struct_tm_tm_zone+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include <$ac_cv_struct_tm> + + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static struct tm ac_aggr; +if (ac_aggr.tm_zone) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_tm_tm_zone=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_member_struct_tm_tm_zone=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_zone" >&5 +echo "${ECHO_T}$ac_cv_member_struct_tm_tm_zone" >&6 +if test $ac_cv_member_struct_tm_tm_zone = yes; then + +cat >>confdefs.h <<_ACEOF +@%:@define HAVE_STRUCT_TM_TM_ZONE 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 + echo "$as_me:$LINENO: checking for tzname" >&5 +echo $ECHO_N "checking for tzname... $ECHO_C" >&6 +if test "${ac_cv_var_tzname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#ifndef tzname /* For SGI. */ +extern char *tzname[]; /* RS6000 and others reject char **tzname. */ +#endif + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +atoi(*tzname); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_var_tzname=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_var_tzname=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_var_tzname" >&5 +echo "${ECHO_T}$ac_cv_var_tzname" >&6 + if test $ac_cv_var_tzname = yes; then + +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_TZNAME 1 +_ACEOF + + fi +fi + +echo "$as_me:$LINENO: checking for struct timezone in sys/time.h and time.h" >&5 +echo $ECHO_N "checking for struct timezone in sys/time.h and time.h... $ECHO_C" >&6 +if test "${bash_cv_struct_timezone+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "struct timezone" >/dev/null 2>&1; then + bash_cv_struct_timezone=yes +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "struct timezone" >/dev/null 2>&1; then + bash_cv_struct_timezone=yes +else + bash_cv_struct_timezone=no +fi +rm -f conftest* + +fi +rm -f conftest* + + +fi + +echo "$as_me:$LINENO: result: $bash_cv_struct_timezone" >&5 +echo "${ECHO_T}$bash_cv_struct_timezone" >&6 +if test $bash_cv_struct_timezone = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_STRUCT_TIMEZONE 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for the existence of strsignal" >&5 +echo $ECHO_N "checking for the existence of strsignal... $ECHO_C" >&6 +if test "${bash_cv_have_strsignal+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +char *s = (char *)strsignal(2); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_have_strsignal=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +bash_cv_have_strsignal=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_have_strsignal" >&5 +echo "${ECHO_T}$bash_cv_have_strsignal" >&6 +if test $bash_cv_have_strsignal = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_STRSIGNAL 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking if opendir() opens non-directories" >&5 +echo $ECHO_N "checking if opendir() opens non-directories... $ECHO_C" >&6 +if test "${bash_cv_opendir_not_robust+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check opendir if cross compiling -- defaulting to no" >&5 +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 +#line $LINENO "configure" +#include "confdefs.h" + +#include +#include +#include +#ifdef HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ +#if defined(HAVE_DIRENT_H) +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif /* SYSNDIR */ +# ifdef HAVE_SYS_DIR_H +# include +# endif /* SYSDIR */ +# ifdef HAVE_NDIR_H +# include +# endif +#endif /* HAVE_DIRENT_H */ +main() +{ +DIR *dir; +int fd, err; +err = mkdir("/tmp/bash-aclocal", 0700); +if (err < 0) { + perror("mkdir"); + exit(1); +} +unlink("/tmp/bash-aclocal/not_a_directory"); +fd = open("/tmp/bash-aclocal/not_a_directory", O_WRONLY|O_CREAT|O_EXCL, 0666); +write(fd, "\n", 1); +close(fd); +dir = opendir("/tmp/bash-aclocal/not_a_directory"); +unlink("/tmp/bash-aclocal/not_a_directory"); +rmdir("/tmp/bash-aclocal"); +exit (dir == 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_opendir_not_robust=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +bash_cv_opendir_not_robust=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_opendir_not_robust" >&5 +echo "${ECHO_T}$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 + +fi + +echo "$as_me:$LINENO: checking whether ulimit can substitute for getdtablesize" >&5 +echo $ECHO_N "checking whether ulimit can substitute for getdtablesize... $ECHO_C" >&6 +if test "${bash_cv_ulimit_maxfds+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check ulimit if cross compiling -- defaulting to no" >&5 +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 +#line $LINENO "configure" +#include "confdefs.h" + +main() +{ +long maxfds = ulimit(4, 0L); +exit (maxfds == -1L); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_ulimit_maxfds=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +bash_cv_ulimit_maxfds=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_ulimit_maxfds" >&5 +echo "${ECHO_T}$bash_cv_ulimit_maxfds" >&6 +if test $bash_cv_ulimit_maxfds = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define ULIMIT_MAXFDS 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking to see if getenv can be redefined" >&5 +echo $ECHO_N "checking to see if getenv can be redefined... $ECHO_C" >&6 +if test "${bash_cv_getenv_redef+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check getenv redefinition if cross compiling -- defaulting to yes" >&5 +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 +#line $LINENO "configure" +#include "confdefs.h" + +#ifdef HAVE_UNISTD_H +# include +#endif +#ifndef __STDC__ +# ifndef const +# define const +# endif +#endif +char * +getenv (name) +#if defined (__linux__) || defined (__bsdi__) || defined (convex) + const char *name; +#else + char const *name; +#endif /* !__linux__ && !__bsdi__ && !convex */ +{ +return "42"; +} +main() +{ +char *s; +/* The next allows this program to run, but does not allow bash to link + when it redefines getenv. I'm not really interested in figuring out + why not. */ +#if defined (NeXT) +exit(1); +#endif +s = getenv("ABCDE"); +exit(s == 0); /* force optimizer to leave getenv in */ +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_getenv_redef=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +bash_cv_getenv_redef=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_getenv_redef" >&5 +echo "${ECHO_T}$bash_cv_getenv_redef" >&6 +if test $bash_cv_getenv_redef = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define CAN_REDEFINE_GETENV 1 +_ACEOF + +fi + +if test "$ac_cv_func_getcwd" = "yes"; then +echo "$as_me:$LINENO: checking if getcwd() will dynamically allocate memory" >&5 +echo $ECHO_N "checking if getcwd() will dynamically allocate memory... $ECHO_C" >&6 +if test "${bash_cv_getcwd_malloc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check whether getcwd allocates memory when cross-compiling -- defaulting to no" >&5 +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 +#line $LINENO "configure" +#include "confdefs.h" + +#include +#ifdef HAVE_UNISTD_H +#include +#endif + +main() +{ + char *xpwd; + xpwd = getcwd(0, 0); + exit (xpwd == 0); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_getcwd_malloc=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +bash_cv_getcwd_malloc=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_getcwd_malloc" >&5 +echo "${ECHO_T}$bash_cv_getcwd_malloc" >&6 +if test $bash_cv_getcwd_malloc = no; then +cat >>confdefs.h <<\_ACEOF +@%:@define GETCWD_BROKEN 1 +_ACEOF + +LIB@&t@OBJS="$LIB@&t@OBJS getcwd.$ac_objext" +fi + +fi + +echo "$as_me:$LINENO: checking for presence of POSIX-style sigsetjmp/siglongjmp" >&5 +echo $ECHO_N "checking for presence of POSIX-style sigsetjmp/siglongjmp... $ECHO_C" >&6 +if test "${bash_cv_func_sigsetjmp+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing" >&5 +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 +#line $LINENO "configure" +#include "confdefs.h" + +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#include +#include + +main() +{ +#if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS) +exit (1); +#else + +int code; +sigset_t set, oset; +sigjmp_buf xx; + +/* get the mask */ +sigemptyset(&set); +sigemptyset(&oset); +sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set); +sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset); + +/* save it */ +code = sigsetjmp(xx, 1); +if (code) + exit(0); /* could get sigmask and compare to oset here. */ + +/* change it */ +sigaddset(&set, SIGINT); +sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL); + +/* and siglongjmp */ +siglongjmp(xx, 10); +exit(1); +#endif +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_func_sigsetjmp=present +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +bash_cv_func_sigsetjmp=missing +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_func_sigsetjmp" >&5 +echo "${ECHO_T}$bash_cv_func_sigsetjmp" >&6 +if test $bash_cv_func_sigsetjmp = present; then +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_POSIX_SIGSETJMP 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking whether or not strcoll and strcmp differ" >&5 +echo $ECHO_N "checking whether or not strcoll and strcmp differ... $ECHO_C" >&6 +if test "${bash_cv_func_strcoll_broken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&5 +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 +#line $LINENO "configure" +#include "confdefs.h" + +#include +#if defined (HAVE_LOCALE_H) +#include +#endif + +main(c, v) +int c; +char *v[]; +{ + int r1, r2; + char *deflocale, *defcoll; + +#ifdef HAVE_SETLOCALE + deflocale = setlocale(LC_ALL, ""); + defcoll = setlocale(LC_COLLATE, ""); +#endif + +#ifdef HAVE_STRCOLL + /* These two values are taken from tests/glob-test. */ + r1 = strcoll("abd", "aXd"); +#else + r1 = 0; +#endif + r2 = strcmp("abd", "aXd"); + + /* These two should both be greater than 0. It is permissible for + a system to return different values, as long as the sign is the + same. */ + + /* Exit with 1 (failure) if these two values are both > 0, since + this tests whether strcoll(3) is broken with respect to strcmp(3) + in the default locale. */ + exit (r1 > 0 && r2 > 0); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_func_strcoll_broken=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +bash_cv_func_strcoll_broken=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_func_strcoll_broken" >&5 +echo "${ECHO_T}$bash_cv_func_strcoll_broken" >&6 +if test $bash_cv_func_strcoll_broken = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define STRCOLL_BROKEN 1 +_ACEOF + +fi + + + +if test "$ac_cv_func_putenv" = "yes"; then + + + +echo "$as_me:$LINENO: checking for standard-conformant putenv declaration" >&5 +echo $ECHO_N "checking for standard-conformant putenv declaration... $ECHO_C" >&6 +if test "${bash_cv_std_putenv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#if STDC_HEADERS +#include +#include +#endif +#ifndef __STDC__ +# ifndef const +# define const +# endif +#endif +#ifdef PROTOTYPES +extern int putenv (char *); +#else +extern int putenv (); +#endif + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +return (putenv == 0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_std_putenv=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +bash_cv_std_putenv=no + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_std_putenv" >&5 +echo "${ECHO_T}$bash_cv_std_putenv" >&6 +if test $bash_cv_std_putenv = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_STD_PUTENV 1 +_ACEOF + +fi + +else +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_STD_PUTENV 1 +_ACEOF + +fi +if test "$ac_cv_func_unsetenv" = "yes"; then + + + +echo "$as_me:$LINENO: checking for standard-conformant unsetenv declaration" >&5 +echo $ECHO_N "checking for standard-conformant unsetenv declaration... $ECHO_C" >&6 +if test "${bash_cv_std_unsetenv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#if STDC_HEADERS +#include +#include +#endif +#ifndef __STDC__ +# ifndef const +# define const +# endif +#endif +#ifdef PROTOTYPES +extern int unsetenv (const char *); +#else +extern int unsetenv (); +#endif + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +return (unsetenv == 0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_std_unsetenv=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +bash_cv_std_unsetenv=no + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_std_unsetenv" >&5 +echo "${ECHO_T}$bash_cv_std_unsetenv" >&6 +if test $bash_cv_std_unsetenv = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_STD_UNSETENV 1 +_ACEOF + +fi + +else +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_STD_UNSETENV 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for printf floating point output in hex notation" >&5 +echo $ECHO_N "checking for printf floating point output in hex notation... $ECHO_C" >&6 +if test "${bash_cv_printf_a_format+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check printf if cross compiling -- defaulting to no" >&5 +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 +#line $LINENO "configure" +#include "confdefs.h" + +#include +#include + +int +main() +{ + double y = 0.0; + char abuf[1024]; + + sprintf(abuf, "%A", y); + exit(strchr(abuf, 'P') == (char *)0); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_printf_a_format=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +bash_cv_printf_a_format=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_printf_a_format" >&5 +echo "${ECHO_T}$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 + +fi + + + + +echo "$as_me:$LINENO: checking if signal handlers must be reinstalled when invoked" >&5 +echo $ECHO_N "checking if signal handlers must be reinstalled when invoked... $ECHO_C" >&6 +if test "${bash_cv_must_reinstall_sighandlers+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&5 +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 +#line $LINENO "configure" +#include "confdefs.h" + +#include +#ifdef HAVE_UNISTD_H +#include +#endif + +typedef RETSIGTYPE sigfunc(); + +int nsigint; + +#ifdef HAVE_POSIX_SIGNALS +sigfunc * +set_signal_handler(sig, handler) + int sig; + sigfunc *handler; +{ + struct sigaction act, oact; + act.sa_handler = handler; + act.sa_flags = 0; + sigemptyset (&act.sa_mask); + sigemptyset (&oact.sa_mask); + sigaction (sig, &act, &oact); + return (oact.sa_handler); +} +#else +#define set_signal_handler(s, h) signal(s, h) +#endif + +RETSIGTYPE +sigint(s) +int s; +{ + nsigint++; +} + +main() +{ + nsigint = 0; + set_signal_handler(SIGINT, sigint); + kill((int)getpid(), SIGINT); + kill((int)getpid(), SIGINT); + exit(nsigint != 2); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_must_reinstall_sighandlers=no +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +bash_cv_must_reinstall_sighandlers=yes +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_must_reinstall_sighandlers" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking for presence of necessary job control definitions" >&5 +echo $ECHO_N "checking for presence of necessary job control definitions... $ECHO_C" >&6 +if test "${bash_cv_job_control_missing+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check job control if cross-compiling -- defaulting to missing" >&5 +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 +#line $LINENO "configure" +#include "confdefs.h" + +#include +#ifdef HAVE_SYS_WAIT_H +#include +#endif +#ifdef HAVE_UNISTD_H +#include +#endif +#include + +/* Add more tests in here as appropriate. */ +main() +{ +/* signal type */ +#if !defined (HAVE_POSIX_SIGNALS) && !defined (HAVE_BSD_SIGNALS) +exit(1); +#endif + +/* signals and tty control. */ +#if !defined (SIGTSTP) || !defined (SIGSTOP) || !defined (SIGCONT) +exit (1); +#endif + +/* process control */ +#if !defined (WNOHANG) || !defined (WUNTRACED) +exit(1); +#endif + +/* Posix systems have tcgetpgrp and waitpid. */ +#if defined (_POSIX_VERSION) && !defined (HAVE_TCGETPGRP) +exit(1); +#endif + +#if defined (_POSIX_VERSION) && !defined (HAVE_WAITPID) +exit(1); +#endif + +/* Other systems have TIOCSPGRP/TIOCGPRGP and wait3. */ +#if !defined (_POSIX_VERSION) && !defined (HAVE_WAIT3) +exit(1); +#endif + +exit(0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_job_control_missing=present +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +bash_cv_job_control_missing=missing +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_job_control_missing" >&5 +echo "${ECHO_T}$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 + +fi + +echo "$as_me:$LINENO: checking for presence of named pipes" >&5 +echo $ECHO_N "checking for presence of named pipes... $ECHO_C" >&6 +if test "${bash_cv_sys_named_pipes+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check for named pipes if cross-compiling -- defaulting to missing" >&5 +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 +#line $LINENO "configure" +#include "confdefs.h" + +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif + +/* Add more tests in here as appropriate. */ +main() +{ +int fd, err; + +#if defined (HAVE_MKFIFO) +exit (0); +#endif + +#if !defined (S_IFIFO) && (defined (_POSIX_VERSION) && !defined (S_ISFIFO)) +exit (1); +#endif + +#if defined (NeXT) +exit (1); +#endif +err = mkdir("/tmp/bash-aclocal", 0700); +if (err < 0) { + perror ("mkdir"); + exit(1); +} +fd = mknod ("/tmp/bash-aclocal/sh-np-autoconf", 0666 | S_IFIFO, 0); +if (fd == -1) { + rmdir ("/tmp/bash-aclocal"); + exit (1); +} +close(fd); +unlink ("/tmp/bash-aclocal/sh-np-autoconf"); +rmdir ("/tmp/bash-aclocal"); +exit(0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_sys_named_pipes=present +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +bash_cv_sys_named_pipes=missing +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_sys_named_pipes" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking POSIX termios" >&5 +echo $ECHO_N "checking POSIX termios... $ECHO_C" >&6 +if test "${ac_cv_sys_posix_termios+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +@%:@include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* SunOS 4.0.3 has termios.h but not the library calls. */ + tcgetattr(0, 0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_posix_termios=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_sys_posix_termios=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_posix_termios" >&5 +echo "${ECHO_T}$ac_cv_sys_posix_termios" >&6 + +if test $ac_cv_sys_posix_termios = yes; then + echo "$as_me:$LINENO: checking whether termios.h defines TIOCGWINSZ" >&5 +echo $ECHO_N "checking whether termios.h defines TIOCGWINSZ... $ECHO_C" >&6 +if test "${ac_cv_sys_tiocgwinsz_in_termios_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#ifdef TIOCGWINSZ + yes +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "yes" >/dev/null 2>&1; then + ac_cv_sys_tiocgwinsz_in_termios_h=yes +else + ac_cv_sys_tiocgwinsz_in_termios_h=no +fi +rm -f conftest* + +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_tiocgwinsz_in_termios_h" >&5 +echo "${ECHO_T}$ac_cv_sys_tiocgwinsz_in_termios_h" >&6 + +fi +if test $ac_cv_sys_tiocgwinsz_in_termios_h != yes; then + echo "$as_me:$LINENO: checking whether sys/ioctl.h defines TIOCGWINSZ" >&5 +echo $ECHO_N "checking whether sys/ioctl.h defines TIOCGWINSZ... $ECHO_C" >&6 +if test "${ac_cv_sys_tiocgwinsz_in_sys_ioctl_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#ifdef TIOCGWINSZ + yes +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + 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 +fi +rm -f conftest* + +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&5 +echo "${ECHO_T}$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 + + fi +fi + +echo "$as_me:$LINENO: checking for TIOCSTAT in sys/ioctl.h" >&5 +echo $ECHO_N "checking for TIOCSTAT in sys/ioctl.h... $ECHO_C" >&6 +if test "${bash_cv_tiocstat_in_ioctl+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +int x = TIOCSTAT; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_tiocstat_in_ioctl=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +bash_cv_tiocstat_in_ioctl=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_tiocstat_in_ioctl" >&5 +echo "${ECHO_T}$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 + +fi + +echo "$as_me:$LINENO: checking for FIONREAD in sys/ioctl.h" >&5 +echo $ECHO_N "checking for FIONREAD in sys/ioctl.h... $ECHO_C" >&6 +if test "${bash_cv_fionread_in_ioctl+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +int x = FIONREAD; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_fionread_in_ioctl=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +bash_cv_fionread_in_ioctl=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_fionread_in_ioctl" >&5 +echo "${ECHO_T}$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 + +fi + + + +echo "$as_me:$LINENO: checking whether WCONTINUED flag to waitpid is unavailable or available but broken" >&5 +echo $ECHO_N "checking whether WCONTINUED flag to waitpid is unavailable or available but broken... $ECHO_C" >&6 +if test "${bash_cv_wcontinued_broken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check WCONTINUED if cross compiling -- defaulting to no" >&5 +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 +#line $LINENO "configure" +#include "confdefs.h" + +#include +#include +#include +#include + +#ifndef errno +extern int errno; +#endif +main() +{ + int x; + + x = waitpid(-1, (int *)0, WNOHANG|WCONTINUED); + if (x == -1 && errno == EINVAL) + exit (1); + else + exit (0); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_wcontinued_broken=no +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +bash_cv_wcontinued_broken=yes +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_wcontinued_broken" >&5 +echo "${ECHO_T}$bash_cv_wcontinued_broken" >&6 +if test $bash_cv_wcontinued_broken = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define WCONTINUED_BROKEN 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for speed_t in sys/types.h" >&5 +echo $ECHO_N "checking for speed_t in sys/types.h... $ECHO_C" >&6 +if test "${bash_cv_speed_t_in_sys_types+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +speed_t x; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_speed_t_in_sys_types=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +bash_cv_speed_t_in_sys_types=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_speed_t_in_sys_types" >&5 +echo "${ECHO_T}$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 + +fi + +echo "$as_me:$LINENO: checking whether getpw functions are declared in pwd.h" >&5 +echo $ECHO_N "checking whether getpw functions are declared in pwd.h... $ECHO_C" >&6 +if test "${bash_cv_getpw_declared+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#include +#ifdef HAVE_UNISTD_H +# include +#endif +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "getpwuid" >/dev/null 2>&1; then + bash_cv_getpw_declared=yes +else + bash_cv_getpw_declared=no +fi +rm -f conftest* + +fi + +echo "$as_me:$LINENO: result: $bash_cv_getpw_declared" >&5 +echo "${ECHO_T}$bash_cv_getpw_declared" >&6 +if test $bash_cv_getpw_declared = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_GETPW_DECLS 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for unusable real-time signals due to large values" >&5 +echo $ECHO_N "checking for unusable real-time signals due to large values... $ECHO_C" >&6 +if test "${bash_cv_unusable_rtsigs+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check real-time signals if cross compiling -- defaulting to yes" >&5 +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 +#line $LINENO "configure" +#include "confdefs.h" + +#include +#include + +#ifndef NSIG +# define NSIG 64 +#endif + +main () +{ + int n_sigs = 2 * NSIG; +#ifdef SIGRTMIN + int rtmin = SIGRTMIN; +#else + int rtmin = 0; +#endif + + exit(rtmin < n_sigs); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_unusable_rtsigs=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +bash_cv_unusable_rtsigs=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_unusable_rtsigs" >&5 +echo "${ECHO_T}$bash_cv_unusable_rtsigs" >&6 +if test $bash_cv_unusable_rtsigs = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define UNUSABLE_RT_SIGNALS 1 +_ACEOF + +fi + + + + + +if test "$bash_cv_sys_siglist" = no && test "$bash_cv_under_sys_siglist" = no && test "$bash_cv_have_strsignal" = no; then + SIGLIST_O=siglist.o +else + SIGLIST_O= +fi + + + +case "$host_os" in +hpux*) echo "$as_me:$LINENO: checking whether $host_os needs _KERNEL for RLIMIT defines" >&5 +echo $ECHO_N "checking whether $host_os needs _KERNEL for RLIMIT defines... $ECHO_C" >&6 +if test "${bash_cv_kernel_rlimit+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#include +#include + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + int f; + f = RLIMIT_DATA; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_kernel_rlimit=no +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#include +#define _KERNEL +#include +#undef _KERNEL + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + int f; + f = RLIMIT_DATA; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_kernel_rlimit=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +bash_cv_kernel_rlimit=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_kernel_rlimit" >&5 +echo "${ECHO_T}$bash_cv_kernel_rlimit" >&6 +if test $bash_cv_kernel_rlimit = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define RLIMIT_NEEDS_KERNEL 1 +_ACEOF + +fi + ;; +esac + +if test "$opt_readline" = yes; then +case "$host_os" in +aix*) prefer_curses=yes ;; +esac + +if test "X$bash_cv_termcap_lib" = "X"; then +_bash_needmsg=yes +else +echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 +_bash_needmsg= +fi +if test "${bash_cv_termcap_lib+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for tgetent" >&5 +echo $ECHO_N "checking for tgetent... $ECHO_C" >&6 +if test "${ac_cv_func_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char tgetent (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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 +#else +f = tgetent; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_tgetent=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_tgetent" >&5 +echo "${ECHO_T}$ac_cv_func_tgetent" >&6 +if test $ac_cv_func_tgetent = yes; then + bash_cv_termcap_lib=libc +else + echo "$as_me:$LINENO: checking for tgetent in -ltermcap" >&5 +echo $ECHO_N "checking for tgetent in -ltermcap... $ECHO_C" >&6 +if test "${ac_cv_lib_termcap_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ltermcap $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_termcap_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_termcap_tgetent=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_termcap_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_termcap_tgetent" >&6 +if test $ac_cv_lib_termcap_tgetent = yes; then + bash_cv_termcap_lib=libtermcap +else + echo "$as_me:$LINENO: checking for tgetent in -ltinfo" >&5 +echo $ECHO_N "checking for tgetent in -ltinfo... $ECHO_C" >&6 +if test "${ac_cv_lib_tinfo_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ltinfo $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_tinfo_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_tinfo_tgetent=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_tinfo_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_tinfo_tgetent" >&6 +if test $ac_cv_lib_tinfo_tgetent = yes; then + bash_cv_termcap_lib=libtinfo +else + echo "$as_me:$LINENO: checking for tgetent in -lcurses" >&5 +echo $ECHO_N "checking for tgetent in -lcurses... $ECHO_C" >&6 +if test "${ac_cv_lib_curses_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcurses $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_curses_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_curses_tgetent=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_curses_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_curses_tgetent" >&6 +if test $ac_cv_lib_curses_tgetent = yes; then + bash_cv_termcap_lib=libcurses +else + echo "$as_me:$LINENO: checking for tgetent in -lncurses" >&5 +echo $ECHO_N "checking for tgetent in -lncurses... $ECHO_C" >&6 +if test "${ac_cv_lib_ncurses_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lncurses $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_ncurses_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_ncurses_tgetent=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_ncurses_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_ncurses_tgetent" >&6 +if test $ac_cv_lib_ncurses_tgetent = yes; then + bash_cv_termcap_lib=libncurses +else + bash_cv_termcap_lib=gnutermcap +fi + +fi + +fi + +fi + +fi + +fi + +if test "X$_bash_needmsg" = "Xyes"; then +echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: using $bash_cv_termcap_lib" >&5 +echo "${ECHO_T}using $bash_cv_termcap_lib" >&6 +if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then +LDFLAGS="$LDFLAGS -L./lib/termcap" +TERMCAP_LIB="./lib/termcap/libtermcap.a" +TERMCAP_DEP="./lib/termcap/libtermcap.a" +elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then +TERMCAP_LIB=-ltermcap +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libtinfo; then +TERMCAP_LIB=-ltinfo +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libncurses; then +TERMCAP_LIB=-lncurses +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libc; then +TERMCAP_LIB= +TERMCAP_DEP= +else +TERMCAP_LIB=-lcurses +TERMCAP_DEP= +fi + +fi + + + +echo "$as_me:$LINENO: checking whether /dev/fd is available" >&5 +echo $ECHO_N "checking whether /dev/fd is available... $ECHO_C" >&6 +if test "${bash_cv_dev_fd+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -d /dev/fd && test -r /dev/fd/0 < /dev/null; then +# check for systems like FreeBSD 5 that only provide /dev/fd/[012] + exec 3<&0 + if test -r /dev/fd/3; then + bash_cv_dev_fd=standard + else + bash_cv_dev_fd=absent + fi + exec 3<&- + elif test -d /proc/self/fd && test -r /proc/self/fd/0 < /dev/null; then + bash_cv_dev_fd=whacky + else + bash_cv_dev_fd=absent + fi + +fi + +echo "$as_me:$LINENO: result: $bash_cv_dev_fd" >&5 +echo "${ECHO_T}$bash_cv_dev_fd" >&6 +if test $bash_cv_dev_fd = "standard"; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_DEV_FD 1 +_ACEOF + + cat >>confdefs.h <<\_ACEOF +@%:@define DEV_FD_PREFIX "/dev/fd/" +_ACEOF + +elif test $bash_cv_dev_fd = "whacky"; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_DEV_FD 1 +_ACEOF + + cat >>confdefs.h <<\_ACEOF +@%:@define DEV_FD_PREFIX "/proc/self/fd/" +_ACEOF + +fi + +echo "$as_me:$LINENO: checking whether /dev/stdin stdout stderr are available" >&5 +echo $ECHO_N "checking whether /dev/stdin stdout stderr are available... $ECHO_C" >&6 +if test "${bash_cv_dev_stdin+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -d /dev/fd && test -r /dev/stdin < /dev/null; then + bash_cv_dev_stdin=present + elif test -d /proc/self/fd && test -r /dev/stdin < /dev/null; then + bash_cv_dev_stdin=present + else + bash_cv_dev_stdin=absent + fi + +fi + +echo "$as_me:$LINENO: result: $bash_cv_dev_stdin" >&5 +echo "${ECHO_T}$bash_cv_dev_stdin" >&6 +if test $bash_cv_dev_stdin = "present"; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_DEV_STDIN 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for default mail directory" >&5 +echo $ECHO_N "checking for default mail directory... $ECHO_C" >&6 +if test "${bash_cv_mail_dir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -d /var/mail; then + bash_cv_mail_dir=/var/mail + elif test -d /var/spool/mail; then + bash_cv_mail_dir=/var/spool/mail + elif test -d /usr/mail; then + bash_cv_mail_dir=/usr/mail + elif test -d /usr/spool/mail; then + bash_cv_mail_dir=/usr/spool/mail + else + bash_cv_mail_dir=unknown + fi + +fi + +echo "$as_me:$LINENO: result: $bash_cv_mail_dir" >&5 +echo "${ECHO_T}$bash_cv_mail_dir" >&6 +cat >>confdefs.h <<_ACEOF +@%:@define DEFAULT_MAIL_DIRECTORY "$bash_cv_mail_dir" +_ACEOF + + + +if test "$bash_cv_job_control_missing" = missing; then + opt_job_control=no +fi + +if test "$opt_job_control" = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define JOB_CONTROL 1 +_ACEOF + +JOBS_O=jobs.o +else +JOBS_O=nojobs.o +fi + + + + +LOCAL_DEFS=-DSHELL + + +case "${host_os}" in +sysv4.2*) cat >>confdefs.h <<\_ACEOF +@%:@define SVR4_2 1 +_ACEOF + + cat >>confdefs.h <<\_ACEOF +@%:@define SVR4 1 +_ACEOF + ;; +sysv4*) cat >>confdefs.h <<\_ACEOF +@%:@define SVR4 1 +_ACEOF + ;; +sysv5*) cat >>confdefs.h <<\_ACEOF +@%:@define SVR5 1 +_ACEOF + ;; +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 ;; +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 + ;; + 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" ;; +esac + +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 + +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 + echo "$as_me:$LINENO: checking shared object configuration for loadable builtins" >&5 +echo $ECHO_N "checking shared object configuration for loadable builtins... $ECHO_C" >&6 + eval `${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c "${host_cpu}" -o "${host_os}" -v "${host_vendor}"` + + + + + + + + echo "$as_me:$LINENO: result: $SHOBJ_STATUS" >&5 +echo "${ECHO_T}$SHOBJ_STATUS" >&6 +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 + + + + + + + + + + + + + + + + + + + + + + + + +#AC_SUBST(ALLOCA_SOURCE) +#AC_SUBST(ALLOCA_OBJECT) + +ac_config_files="$ac_config_files Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile lib/intl/Makefile lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in examples/loadables/Makefile examples/loadables/perl/Makefile pathnames.h" +ac_config_commands="$ac_config_commands default" +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overriden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `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" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if cmp -s $cache_file confcache; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ 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/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +DEFS=-DHAVE_CONFIG_H + + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# NLS nuisances. +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + +(set +x; test -n "`(LANG=C; export LANG) 2>&1`") && + { $as_unset LANG || test "${LANG+set}" != set; } || + { LANG=C; export LANG; } +(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && + { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || + { LC_ALL=C; export LC_ALL; } +(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && + { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || + { LC_TIME=C; export LC_TIME; } +(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && + { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || + { LC_CTYPE=C; export LC_CTYPE; } +(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && + { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || + { LANGUAGE=C; export LANGUAGE; } +(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && + { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || + { LC_COLLATE=C; export LC_COLLATE; } +(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && + { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || + { LC_NUMERIC=C; export LC_NUMERIC; } +(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && + { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || + { LC_MESSAGES=C; export LC_MESSAGES; } + + +# Name of the executable. +as_me=`(basename "$0") 2>/dev/null || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + +# PATH needs CR, and LINENO needs CR and PATH. +# 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 + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conftest.sh + echo "exit 0" >>conftest.sh + chmod +x conftest.sh + if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conftest.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + 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 + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + 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=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # 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 before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, 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 + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +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 sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="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="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX +@%:@@%:@ Running $as_me. @%:@@%:@ +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by bash $as_me 3.1-release, which was +generated by GNU Autoconf 2.53. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +bash config.status 3.1-release +configured by $0, generated by GNU Autoconf 2.53, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + shift + set dummy "$ac_option" "$ac_optarg" ${1+"$@"} + shift + ;; + -*);; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_need_defaults=false;; + esac + + case $1 in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion" + exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;; +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + shift + CONFIG_FILES="$CONFIG_FILES $1" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + shift + CONFIG_HEADERS="$CONFIG_HEADERS $1" + ac_need_defaults=false;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS section. +# + +# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it + # from automake. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + + +_ACEOF + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "builtins/Makefile" ) CONFIG_FILES="$CONFIG_FILES builtins/Makefile" ;; + "lib/readline/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/readline/Makefile" ;; + "lib/glob/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/glob/Makefile" ;; + "lib/intl/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/intl/Makefile" ;; + "lib/malloc/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/malloc/Makefile" ;; + "lib/sh/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/sh/Makefile" ;; + "lib/termcap/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/termcap/Makefile" ;; + "lib/tilde/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/tilde/Makefile" ;; + "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "support/Makefile" ) CONFIG_FILES="$CONFIG_FILES support/Makefile" ;; + "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "examples/loadables/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/loadables/Makefile" ;; + "examples/loadables/perl/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/loadables/perl/Makefile" ;; + "pathnames.h" ) CONFIG_FILES="$CONFIG_FILES pathnames.h" ;; + "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. +: ${TMPDIR=/tmp} +{ + tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=$TMPDIR/cs$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in $TMPDIR" >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@EMACS@,$EMACS,;t t +s,@lispdir@,$lispdir,;t t +s,@DEBUGGER_START_FILE@,$DEBUGGER_START_FILE,;t t +s,@TESTSCRIPT@,$TESTSCRIPT,;t t +s,@PURIFY@,$PURIFY,;t t +s,@MALLOC_TARGET@,$MALLOC_TARGET,;t t +s,@MALLOC_SRC@,$MALLOC_SRC,;t t +s,@MALLOC_LIB@,$MALLOC_LIB,;t t +s,@MALLOC_LIBRARY@,$MALLOC_LIBRARY,;t t +s,@MALLOC_LDFLAGS@,$MALLOC_LDFLAGS,;t t +s,@MALLOC_DEP@,$MALLOC_DEP,;t t +s,@htmldir@,$htmldir,;t t +s,@HELPDIR@,$HELPDIR,;t t +s,@HELPDIRDEFINE@,$HELPDIRDEFINE,;t t +s,@HELPINSTALL@,$HELPINSTALL,;t t +s,@HELPSTRINGS@,$HELPSTRINGS,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@CPP@,$CPP,;t t +s,@CROSS_COMPILE@,$CROSS_COMPILE,;t t +s,@SIGNAMES_H@,$SIGNAMES_H,;t t +s,@CC_FOR_BUILD@,$CC_FOR_BUILD,;t t +s,@STATIC_LD@,$STATIC_LD,;t t +s,@CFLAGS_FOR_BUILD@,$CFLAGS_FOR_BUILD,;t t +s,@CPPFLAGS_FOR_BUILD@,$CPPFLAGS_FOR_BUILD,;t t +s,@LDFLAGS_FOR_BUILD@,$LDFLAGS_FOR_BUILD,;t t +s,@RL_VERSION@,$RL_VERSION,;t t +s,@RL_MAJOR@,$RL_MAJOR,;t t +s,@RL_MINOR@,$RL_MINOR,;t t +s,@READLINE_LIB@,$READLINE_LIB,;t t +s,@READLINE_DEP@,$READLINE_DEP,;t t +s,@RL_LIBDIR@,$RL_LIBDIR,;t t +s,@RL_INCLUDEDIR@,$RL_INCLUDEDIR,;t t +s,@RL_INCLUDE@,$RL_INCLUDE,;t t +s,@HISTORY_LIB@,$HISTORY_LIB,;t t +s,@HISTORY_DEP@,$HISTORY_DEP,;t t +s,@HIST_LIBDIR@,$HIST_LIBDIR,;t t +s,@TILDE_LIB@,$TILDE_LIB,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@AR@,$AR,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@YACC@,$YACC,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@MAKE_SHELL@,$MAKE_SHELL,;t t +s,@SIZE@,$SIZE,;t t +s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t +s,@USE_NLS@,$USE_NLS,;t t +s,@MSGFMT@,$MSGFMT,;t t +s,@GMSGFMT@,$GMSGFMT,;t t +s,@XGETTEXT@,$XGETTEXT,;t t +s,@MSGMERGE@,$MSGMERGE,;t t +s,@ALLOCA@,$ALLOCA,;t t +s,@GLIBC21@,$GLIBC21,;t t +s,@LIBICONV@,$LIBICONV,;t t +s,@LTLIBICONV@,$LTLIBICONV,;t t +s,@INTLBISON@,$INTLBISON,;t t +s,@BUILD_INCLUDED_LIBINTL@,$BUILD_INCLUDED_LIBINTL,;t t +s,@USE_INCLUDED_LIBINTL@,$USE_INCLUDED_LIBINTL,;t t +s,@CATOBJEXT@,$CATOBJEXT,;t t +s,@DATADIRNAME@,$DATADIRNAME,;t t +s,@INSTOBJEXT@,$INSTOBJEXT,;t t +s,@GENCAT@,$GENCAT,;t t +s,@INTLOBJS@,$INTLOBJS,;t t +s,@INTL_LIBTOOL_SUFFIX_PREFIX@,$INTL_LIBTOOL_SUFFIX_PREFIX,;t t +s,@INTLLIBS@,$INTLLIBS,;t t +s,@LIBINTL@,$LIBINTL,;t t +s,@LTLIBINTL@,$LTLIBINTL,;t t +s,@POSUB@,$POSUB,;t t +s,@LIB@&t@OBJS@,$LIB@&t@OBJS,;t t +s,@INTL_DEP@,$INTL_DEP,;t t +s,@INTL_INC@,$INTL_INC,;t t +s,@LIBINTL_H@,$LIBINTL_H,;t t +s,@SIGLIST_O@,$SIGLIST_O,;t t +s,@TERMCAP_LIB@,$TERMCAP_LIB,;t t +s,@TERMCAP_DEP@,$TERMCAP_DEP,;t t +s,@JOBS_O@,$JOBS_O,;t t +s,@SHOBJ_CC@,$SHOBJ_CC,;t t +s,@SHOBJ_CFLAGS@,$SHOBJ_CFLAGS,;t t +s,@SHOBJ_LD@,$SHOBJ_LD,;t t +s,@SHOBJ_LDFLAGS@,$SHOBJ_LDFLAGS,;t t +s,@SHOBJ_XLDFLAGS@,$SHOBJ_XLDFLAGS,;t t +s,@SHOBJ_LIBS@,$SHOBJ_LIBS,;t t +s,@SHOBJ_STATUS@,$SHOBJ_STATUS,;t t +s,@PROFILE_FLAGS@,$PROFILE_FLAGS,;t t +s,@incdir@,$incdir,;t t +s,@BUILD_DIR@,$BUILD_DIR,;t t +s,@ARFLAGS@,$ARFLAGS,;t t +s,@BASHVERS@,$BASHVERS,;t t +s,@RELSTATUS@,$RELSTATUS,;t t +s,@DEBUG@,$DEBUG,;t t +s,@MALLOC_DEBUG@,$MALLOC_DEBUG,;t t +s,@LOCAL_LIBS@,$LOCAL_LIBS,;t t +s,@LOCAL_CFLAGS@,$LOCAL_CFLAGS,;t t +s,@LOCAL_LDFLAGS@,$LOCAL_LDFLAGS,;t t +s,@LOCAL_DEFS@,$LOCAL_DEFS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { case "$ac_dir" in + [\\/]* | ?:[\\/]* ) as_incr_dir=;; + *) as_incr_dir=.;; +esac +as_dummy="$ac_dir" +for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do + case $as_mkdir_dir in + # Skip DOS drivespec + ?:) as_incr_dir=$as_mkdir_dir ;; + *) + as_incr_dir=$as_incr_dir/$as_mkdir_dir + test -d "$as_incr_dir" || + mkdir "$as_incr_dir" || + { { echo "$as_me:$LINENO: error: cannot create \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; } + ;; + esac +done; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if egrep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # egrep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\_ACEOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if cmp -s $ac_file $tmp/config.h 2>/dev/null; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { case "$ac_dir" in + [\\/]* | ?:[\\/]* ) as_incr_dir=;; + *) as_incr_dir=.;; +esac +as_dummy="$ac_dir" +for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do + case $as_mkdir_dir in + # Skip DOS drivespec + ?:) as_incr_dir=$as_mkdir_dir ;; + *) + as_incr_dir=$as_incr_dir/$as_mkdir_dir + test -d "$as_incr_dir" || + mkdir "$as_incr_dir" || + { { echo "$as_me:$LINENO: error: cannot create \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; } + ;; + esac +done; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + default-1 ) + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + GMOFILES= + UPDATEPOFILES= + DUMMYPOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done ;; + default ) +# Makefile uses this timestamp file to record whether config.h is up to date. +echo timestamp > stamp-h + ;; + esac +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + exec 5>/dev/null + $SHELL $CONFIG_STATUS || ac_cs_success=false + 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; } +fi + diff --git a/bash-20060316/autom4te-2.53.cache/requests b/bash-20060316/autom4te-2.53.cache/requests new file mode 100644 index 000000000..2a56e70d9 --- /dev/null +++ b/bash-20060316/autom4te-2.53.cache/requests @@ -0,0 +1,94 @@ +# This file was created by autom4te-2.53. +# It contains the lists of macros which have been traced. +# It can be safely removed. + +@request = ( + bless( [ + '0', + 1, + [ + '/usr/share/autoconf' + ], + [ + '--reload-state=/usr/share/autoconf/autoconf/autoconf.m4f', + 'aclocal.m4', + 'configure.in' + ], + { + 'm4_pattern_forbid' => 1, + 'AC_TYPE_OFF_T' => 1, + 'AC_PROG_LIBTOOL' => 1, + 'AC_FUNC_STAT' => 1, + 'AC_HEADER_TIME' => 1, + 'AC_FUNC_WAIT3' => 1, + 'AC_STRUCT_TM' => 1, + 'AC_FUNC_LSTAT' => 1, + 'AC_TYPE_MODE_T' => 1, + 'AC_FUNC_STRTOD' => 1, + 'AC_CHECK_HEADERS' => 1, + 'AC_PROG_CXX' => 1, + 'AC_PATH_X' => 1, + 'AC_PROG_AWK' => 1, + 'AC_HEADER_STDC' => 1, + 'AC_HEADER_MAJOR' => 1, + 'AC_FUNC_ERROR_AT_LINE' => 1, + 'AC_PROG_GCC_TRADITIONAL' => 1, + 'AC_LIBSOURCE' => 1, + 'AC_STRUCT_ST_BLOCKS' => 1, + 'AC_TYPE_SIGNAL' => 1, + 'AC_TYPE_UID_T' => 1, + 'AC_PROG_MAKE_SET' => 1, + 'm4_pattern_allow' => 1, + 'AC_DEFINE_TRACE_LITERAL' => 1, + 'AM_PROG_LIBTOOL' => 1, + 'AC_FUNC_STRERROR_R' => 1, + 'AC_PROG_CC' => 1, + 'AC_FUNC_FORK' => 1, + 'AC_DECL_SYS_SIGLIST' => 1, + 'AC_FUNC_STRCOLL' => 1, + 'AC_FUNC_VPRINTF' => 1, + 'AC_PROG_YACC' => 1, + 'AC_STRUCT_TIMEZONE' => 1, + 'AC_FUNC_CHOWN' => 1, + 'AC_SUBST' => 1, + 'AC_FUNC_ALLOCA' => 1, + 'AC_FUNC_GETPGRP' => 1, + 'AC_PROG_RANLIB' => 1, + 'AC_FUNC_SETPGRP' => 1, + 'AC_FUNC_MMAP' => 1, + 'AC_TYPE_SIZE_T' => 1, + 'AC_CHECK_TYPES' => 1, + 'AC_FUNC_UTIME_NULL' => 1, + 'AC_FUNC_STRFTIME' => 1, + 'AC_HEADER_STAT' => 1, + 'AC_C_INLINE' => 1, + 'AC_PROG_CPP' => 1, + 'AC_C_CONST' => 1, + 'AC_PROG_LEX' => 1, + 'AC_TYPE_PID_T' => 1, + 'AC_CONFIG_FILES' => 1, + 'include' => 1, + 'AC_FUNC_SETVBUF_REVERSED' => 1, + 'AC_FUNC_FNMATCH' => 1, + 'AC_PROG_INSTALL' => 1, + 'AM_GNU_GETTEXT' => 1, + 'AC_FUNC_OBSTACK' => 1, + 'AC_CHECK_LIB' => 1, + 'AC_FUNC_MALLOC' => 1, + 'AC_FUNC_GETGROUPS' => 1, + 'AC_FUNC_GETLOADAVG' => 1, + 'AH_OUTPUT' => 1, + 'AC_FUNC_FSEEKO' => 1, + 'AM_CONDITIONAL' => 1, + 'AC_FUNC_MKTIME' => 1, + 'AC_CONFIG_HEADERS' => 1, + 'AC_HEADER_SYS_WAIT' => 1, + 'AC_FUNC_MEMCMP' => 1, + 'AC_PROG_LN_S' => 1, + 'm4_include' => 1, + 'AC_HEADER_DIRENT' => 1, + 'AC_CHECK_FUNCS' => 1 + } + ], 'Request' ) + ); + diff --git a/bash-20060316/autom4te-2.53.cache/traces.0 b/bash-20060316/autom4te-2.53.cache/traces.0 new file mode 100644 index 000000000..ccb4ebc5c --- /dev/null +++ b/bash-20060316/autom4te-2.53.cache/traces.0 @@ -0,0 +1,1194 @@ +m4trace:configure.in:30: -1- m4_pattern_forbid([^_?A[CHUM]_]) +m4trace:configure.in:30: -1- m4_pattern_forbid([_AC_]) +m4trace:configure.in:30: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs. LIBOBJS']) +m4trace:configure.in:30: -1- m4_pattern_allow([^AS_FLAGS$]) +m4trace:configure.in:30: -1- m4_pattern_forbid([^_?m4_]) +m4trace:configure.in:30: -1- m4_pattern_forbid([^dnl$]) +m4trace:configure.in:30: -1- m4_pattern_forbid([^_?AS_]) +m4trace:configure.in:30: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}]) +m4trace:configure.in:30: -1- AC_SUBST([PATH_SEPARATOR]) +m4trace:configure.in:30: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) +m4trace:configure.in:30: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) +m4trace:configure.in:30: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) +m4trace:configure.in:30: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) +m4trace:configure.in:30: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) +m4trace:configure.in:30: -1- AC_SUBST([exec_prefix], [NONE]) +m4trace:configure.in:30: -1- AC_SUBST([prefix], [NONE]) +m4trace:configure.in:30: -1- AC_SUBST([program_transform_name], [s,x,x,]) +m4trace:configure.in:30: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) +m4trace:configure.in:30: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) +m4trace:configure.in:30: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) +m4trace:configure.in:30: -1- AC_SUBST([datadir], ['${prefix}/share']) +m4trace:configure.in:30: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) +m4trace:configure.in:30: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) +m4trace:configure.in:30: -1- AC_SUBST([localstatedir], ['${prefix}/var']) +m4trace:configure.in:30: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) +m4trace:configure.in:30: -1- AC_SUBST([includedir], ['${prefix}/include']) +m4trace:configure.in:30: -1- AC_SUBST([oldincludedir], ['/usr/include']) +m4trace:configure.in:30: -1- AC_SUBST([infodir], ['${prefix}/info']) +m4trace:configure.in:30: -1- AC_SUBST([mandir], ['${prefix}/man']) +m4trace:configure.in:30: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) +m4trace:configure.in:30: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ +#undef PACKAGE_NAME]) +m4trace:configure.in:30: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) +m4trace:configure.in:30: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME]) +m4trace:configure.in:30: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) +m4trace:configure.in:30: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ +#undef PACKAGE_VERSION]) +m4trace:configure.in:30: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) +m4trace:configure.in:30: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING]) +m4trace:configure.in:30: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) +m4trace:configure.in:30: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT]) +m4trace:configure.in:30: -1- AC_SUBST([build_alias]) +m4trace:configure.in:30: -1- AC_SUBST([host_alias]) +m4trace:configure.in:30: -1- AC_SUBST([target_alias]) +m4trace:configure.in:30: -1- AC_SUBST([DEFS]) +m4trace:configure.in:30: -1- AC_SUBST([ECHO_C]) +m4trace:configure.in:30: -1- AC_SUBST([ECHO_N]) +m4trace:configure.in:30: -1- AC_SUBST([ECHO_T]) +m4trace:configure.in:30: -1- AC_SUBST([LIBS]) +m4trace:configure.in:38: -1- AC_CONFIG_HEADERS([config.h]) +m4trace:configure.in:52: -1- AC_SUBST([build], [$ac_cv_build]) +m4trace:configure.in:52: -1- AC_SUBST([build_cpu], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`]) +m4trace:configure.in:52: -1- AC_SUBST([build_vendor], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`]) +m4trace:configure.in:52: -1- AC_SUBST([build_os], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`]) +m4trace:configure.in:52: -1- AC_SUBST([host], [$ac_cv_host]) +m4trace:configure.in:52: -1- AC_SUBST([host_cpu], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`]) +m4trace:configure.in:52: -1- AC_SUBST([host_vendor], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`]) +m4trace:configure.in:52: -1- AC_SUBST([host_os], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`]) +m4trace:configure.in:102: -1- AC_SUBST([EMACS]) +m4trace:configure.in:102: -1- AC_SUBST([lispdir]) +m4trace:configure.in:103: -1- AC_SUBST([DEBUGGER_START_FILE]) +m4trace:configure.in:124: -1- AC_DEFINE_TRACE_LITERAL([USING_BASH_MALLOC]) +m4trace:configure.in:134: -1- AC_DEFINE_TRACE_LITERAL([DISABLE_MALLOC_WRAPPERS]) +m4trace:configure.in:144: -1- AC_DEFINE_TRACE_LITERAL([AFS]) +m4trace:configure.in:249: -1- AC_DEFINE_TRACE_LITERAL([ALIAS]) +m4trace:configure.in:252: -1- AC_DEFINE_TRACE_LITERAL([PUSHD_AND_POPD]) +m4trace:configure.in:255: -1- AC_DEFINE_TRACE_LITERAL([RESTRICTED_SHELL]) +m4trace:configure.in:258: -1- AC_DEFINE_TRACE_LITERAL([PROCESS_SUBSTITUTION]) +m4trace:configure.in:261: -1- AC_DEFINE_TRACE_LITERAL([PROMPT_STRING_DECODE]) +m4trace:configure.in:264: -1- AC_DEFINE_TRACE_LITERAL([SELECT_COMMAND]) +m4trace:configure.in:267: -1- AC_DEFINE_TRACE_LITERAL([HELP_BUILTIN]) +m4trace:configure.in:270: -1- AC_DEFINE_TRACE_LITERAL([ARRAY_VARS]) +m4trace:configure.in:273: -1- AC_DEFINE_TRACE_LITERAL([DPAREN_ARITHMETIC]) +m4trace:configure.in:276: -1- AC_DEFINE_TRACE_LITERAL([BRACE_EXPANSION]) +m4trace:configure.in:279: -1- AC_DEFINE_TRACE_LITERAL([DISABLED_BUILTINS]) +m4trace:configure.in:282: -1- AC_DEFINE_TRACE_LITERAL([COMMAND_TIMING]) +m4trace:configure.in:285: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_ECHO_TO_XPG]) +m4trace:configure.in:288: -1- AC_DEFINE_TRACE_LITERAL([STRICT_POSIX]) +m4trace:configure.in:291: -1- AC_DEFINE_TRACE_LITERAL([EXTENDED_GLOB]) +m4trace:configure.in:294: -1- AC_DEFINE_TRACE_LITERAL([COND_COMMAND]) +m4trace:configure.in:297: -1- AC_DEFINE_TRACE_LITERAL([COND_REGEXP]) +m4trace:configure.in:300: -1- AC_DEFINE_TRACE_LITERAL([ARITH_FOR_COMMAND]) +m4trace:configure.in:303: -1- AC_DEFINE_TRACE_LITERAL([NETWORK_REDIRECTIONS]) +m4trace:configure.in:306: -1- AC_DEFINE_TRACE_LITERAL([PROGRAMMABLE_COMPLETION]) +m4trace:configure.in:309: -1- AC_DEFINE_TRACE_LITERAL([NO_MULTIBYTE_SUPPORT]) +m4trace:configure.in:312: -1- AC_DEFINE_TRACE_LITERAL([DEBUGGER]) +m4trace:configure.in:316: -1- AC_DEFINE_TRACE_LITERAL([MEMSCRAMBLE]) +m4trace:configure.in:341: -1- AC_SUBST([TESTSCRIPT]) +m4trace:configure.in:342: -1- AC_SUBST([PURIFY]) +m4trace:configure.in:343: -1- AC_SUBST([MALLOC_TARGET]) +m4trace:configure.in:344: -1- AC_SUBST([MALLOC_SRC]) +m4trace:configure.in:346: -1- AC_SUBST([MALLOC_LIB]) +m4trace:configure.in:347: -1- AC_SUBST([MALLOC_LIBRARY]) +m4trace:configure.in:348: -1- AC_SUBST([MALLOC_LDFLAGS]) +m4trace:configure.in:349: -1- AC_SUBST([MALLOC_DEP]) +m4trace:configure.in:351: -1- AC_SUBST([htmldir]) +m4trace:configure.in:353: -1- AC_SUBST([HELPDIR]) +m4trace:configure.in:354: -1- AC_SUBST([HELPDIRDEFINE]) +m4trace:configure.in:355: -1- AC_SUBST([HELPINSTALL]) +m4trace:configure.in:356: -1- AC_SUBST([HELPSTRINGS]) +m4trace:configure.in:365: -1- AC_PROG_CC +m4trace:configure.in:365: -1- AC_SUBST([CC]) +m4trace:configure.in:365: -1- AC_SUBST([CFLAGS]) +m4trace:configure.in:365: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.in:365: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.in:365: -1- AC_SUBST([CC]) +m4trace:configure.in:365: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.in:365: -1- AC_SUBST([CC]) +m4trace:configure.in:365: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.in:365: -1- AC_SUBST([CC]) +m4trace:configure.in:365: -1- AC_SUBST([CC]) +m4trace:configure.in:365: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.in:365: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) +m4trace:configure.in:365: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) +m4trace:configure.in:368: -1- AC_CHECK_LIB([cposix], [strerror], [LIBS="$LIBS -lcposix"]) +m4trace:configure.in:369: -1- AC_HEADER_STDC +m4trace:configure.in:369: -1- AC_PROG_CPP +m4trace:configure.in:369: -1- AC_SUBST([CPP]) +m4trace:configure.in:369: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.in:369: -1- AC_SUBST([CPP]) +m4trace:configure.in:369: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) +m4trace:configure.in:369: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS]) +m4trace:configure.in:369: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h], [], [], [$ac_includes_default]) +m4trace:configure.in:369: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H]) +m4trace:configure.in:369: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H]) +m4trace:configure.in:369: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H]) +m4trace:configure.in:369: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H]) +m4trace:configure.in:369: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H]) +m4trace:configure.in:369: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H]) +m4trace:configure.in:369: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H]) +m4trace:configure.in:369: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H]) +m4trace:configure.in:369: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H]) +m4trace:configure.in:369: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_SOURCE]) +m4trace:configure.in:369: -1- AH_OUTPUT([_POSIX_SOURCE], [/* Define to 1 if you need to in order for \`stat' and other things to work. */ +#undef _POSIX_SOURCE]) +m4trace:configure.in:369: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_1_SOURCE]) +m4trace:configure.in:369: -1- AH_OUTPUT([_POSIX_1_SOURCE], [/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +#undef _POSIX_1_SOURCE]) +m4trace:configure.in:369: -1- AC_DEFINE_TRACE_LITERAL([_MINIX]) +m4trace:configure.in:369: -1- AH_OUTPUT([_MINIX], [/* Define to 1 if on MINIX. */ +#undef _MINIX]) +m4trace:configure.in:371: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS]) +m4trace:configure.in:371: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS]) +m4trace:configure.in:371: -1- AC_DEFINE_TRACE_LITERAL([_LARGE_FILES]) +m4trace:configure.in:371: -1- AH_OUTPUT([_LARGE_FILES], [/* Define for large files, on AIX-style hosts. */ +#undef _LARGE_FILES]) +m4trace:configure.in:407: -1- AC_SUBST([CROSS_COMPILE]) +m4trace:configure.in:409: -1- AC_SUBST([SIGNAMES_H]) +m4trace:configure.in:418: -1- AC_SUBST([CC_FOR_BUILD]) +m4trace:configure.in:460: -1- AC_SUBST([CFLAGS]) +m4trace:configure.in:461: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.in:462: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.in:463: -1- AC_SUBST([STATIC_LD]) +m4trace:configure.in:465: -1- AC_SUBST([CFLAGS_FOR_BUILD]) +m4trace:configure.in:466: -1- AC_SUBST([CPPFLAGS_FOR_BUILD]) +m4trace:configure.in:467: -1- AC_SUBST([LDFLAGS_FOR_BUILD]) +m4trace:configure.in:469: -1- AC_PROG_GCC_TRADITIONAL +m4trace:configure.in:481: -1- AC_CHECK_LIB([termcap], [tgetent], [bash_cv_termcap_lib=libtermcap], [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo, + [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, + [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, + bash_cv_termcap_lib=gnutermcap)])])]) +m4trace:configure.in:481: -1- AC_CHECK_LIB([tinfo], [tgetent], [bash_cv_termcap_lib=libtinfo], [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, + [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, + bash_cv_termcap_lib=gnutermcap)])]) +m4trace:configure.in:481: -1- AC_CHECK_LIB([curses], [tgetent], [bash_cv_termcap_lib=libcurses], [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, + bash_cv_termcap_lib=gnutermcap)]) +m4trace:configure.in:481: -1- AC_CHECK_LIB([ncurses], [tgetent], [bash_cv_termcap_lib=libncurses], [bash_cv_termcap_lib=gnutermcap]) +m4trace:configure.in:481: -1- AC_DEFINE_TRACE_LITERAL([RL_READLINE_VERSION]) +m4trace:configure.in:481: -1- AH_OUTPUT([RL_READLINE_VERSION], [/* encoded version of the installed readline library */ +#undef RL_READLINE_VERSION]) +m4trace:configure.in:481: -1- AC_DEFINE_TRACE_LITERAL([RL_VERSION_MAJOR]) +m4trace:configure.in:481: -1- AH_OUTPUT([RL_VERSION_MAJOR], [/* major version of installed readline library */ +#undef RL_VERSION_MAJOR]) +m4trace:configure.in:481: -1- AC_DEFINE_TRACE_LITERAL([RL_VERSION_MINOR]) +m4trace:configure.in:481: -1- AH_OUTPUT([RL_VERSION_MINOR], [/* minor version of installed readline library */ +#undef RL_VERSION_MINOR]) +m4trace:configure.in:481: -1- AC_SUBST([RL_VERSION]) +m4trace:configure.in:481: -1- AC_SUBST([RL_MAJOR]) +m4trace:configure.in:481: -1- AC_SUBST([RL_MINOR]) +m4trace:configure.in:494: -1- AC_DEFINE_TRACE_LITERAL([READLINE]) +m4trace:configure.in:529: -1- AC_DEFINE_TRACE_LITERAL([HISTORY]) +m4trace:configure.in:532: -1- AC_DEFINE_TRACE_LITERAL([BANG_HISTORY]) +m4trace:configure.in:562: -1- AC_SUBST([READLINE_LIB]) +m4trace:configure.in:563: -1- AC_SUBST([READLINE_DEP]) +m4trace:configure.in:564: -1- AC_SUBST([RL_LIBDIR]) +m4trace:configure.in:565: -1- AC_SUBST([RL_INCLUDEDIR]) +m4trace:configure.in:566: -1- AC_SUBST([RL_INCLUDE]) +m4trace:configure.in:567: -1- AC_SUBST([HISTORY_LIB]) +m4trace:configure.in:568: -1- AC_SUBST([HISTORY_DEP]) +m4trace:configure.in:569: -1- AC_SUBST([HIST_LIBDIR]) +m4trace:configure.in:570: -1- AC_SUBST([TILDE_LIB]) +m4trace:configure.in:575: -1- AC_PROG_INSTALL +m4trace:configure.in:575: -1- AC_SUBST([INSTALL_PROGRAM]) +m4trace:configure.in:575: -1- AC_SUBST([INSTALL_SCRIPT]) +m4trace:configure.in:575: -1- AC_SUBST([INSTALL_DATA]) +m4trace:configure.in:576: -1- AC_SUBST([AR]) +m4trace:configure.in:580: -1- AC_PROG_RANLIB +m4trace:configure.in:580: -1- AC_SUBST([RANLIB]) +m4trace:configure.in:580: -1- AC_SUBST([ac_ct_RANLIB]) +m4trace:configure.in:581: -1- AC_PROG_YACC +m4trace:configure.in:581: -1- AC_SUBST([YACC]) +m4trace:configure.in:582: -1- AC_PROG_MAKE_SET +m4trace:configure.in:582: -1- AC_SUBST([SET_MAKE]) +m4trace:configure.in:588: -1- AC_SUBST([MAKE_SHELL]) +m4trace:configure.in:610: -1- AC_SUBST([SIZE]) +m4trace:configure.in:613: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE]) +m4trace:configure.in:616: -1- AC_C_CONST +m4trace:configure.in:616: -1- AC_DEFINE_TRACE_LITERAL([const]) +m4trace:configure.in:616: -1- AH_OUTPUT([const], [/* Define to empty if \`const' does not conform to ANSI C. */ +#undef const]) +m4trace:configure.in:617: -1- AC_C_INLINE +m4trace:configure.in:617: -1- AC_DEFINE_TRACE_LITERAL([inline]) +m4trace:configure.in:617: -1- AH_OUTPUT([inline], [/* Define as \`__inline' if that's what the C compiler calls it, or to nothing + if it is not supported. */ +#undef inline]) +m4trace:configure.in:617: -1- AC_DEFINE_TRACE_LITERAL([inline]) +m4trace:configure.in:618: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN]) +m4trace:configure.in:618: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define to 1 if your processor stores words with the most significant byte + first (like Motorola and SPARC, unlike Intel and VAX). */ +#undef WORDS_BIGENDIAN]) +m4trace:configure.in:619: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRINGIZE]) +m4trace:configure.in:619: -1- AH_OUTPUT([HAVE_STRINGIZE], [/* Define to 1 if cpp supports the ANSI @%:@ stringizing operator. */ +#undef HAVE_STRINGIZE]) +m4trace:configure.in:620: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_DOUBLE]) +m4trace:configure.in:620: -1- AH_OUTPUT([HAVE_LONG_DOUBLE], [/* Define to 1 if long double works and has more range or precision than + double. */ +#undef HAVE_LONG_DOUBLE]) +m4trace:configure.in:621: -1- AC_DEFINE_TRACE_LITERAL([PROTOTYPES]) +m4trace:configure.in:621: -1- AH_OUTPUT([PROTOTYPES], [/* Define to 1 if the C compiler supports function prototypes. */ +#undef PROTOTYPES]) +m4trace:configure.in:621: -1- AC_DEFINE_TRACE_LITERAL([__PROTOTYPES]) +m4trace:configure.in:621: -1- AH_OUTPUT([__PROTOTYPES], [/* Define like PROTOTYPES; this can be used by system headers. */ +#undef __PROTOTYPES]) +m4trace:configure.in:622: -1- AH_OUTPUT([__CHAR_UNSIGNED__], [/* Define to 1 if type \`char' is unsigned and you are not using gcc. */ +#ifndef __CHAR_UNSIGNED__ +# undef __CHAR_UNSIGNED__ +#endif]) +m4trace:configure.in:622: -1- AC_DEFINE_TRACE_LITERAL([__CHAR_UNSIGNED__]) +m4trace:configure.in:625: -1- AM_GNU_GETTEXT([no-libtool], [need-ngettext], [lib/intl]) +m4trace:configure.in:625: -1- AC_SUBST([MKINSTALLDIRS]) +m4trace:configure.in:625: -1- AC_SUBST([USE_NLS]) +m4trace:configure.in:625: -1- AC_SUBST([MSGFMT]) +m4trace:configure.in:625: -1- AC_SUBST([GMSGFMT], [$ac_cv_path_GMSGFMT]) +m4trace:configure.in:625: -1- AC_SUBST([XGETTEXT]) +m4trace:configure.in:625: -1- AC_SUBST([MSGMERGE]) +m4trace:configure.in:625: -1- AC_TYPE_OFF_T +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([off_t]) +m4trace:configure.in:625: -1- AH_OUTPUT([off_t], [/* Define to \`long' if does not define. */ +#undef off_t]) +m4trace:configure.in:625: -1- AC_TYPE_SIZE_T +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([size_t]) +m4trace:configure.in:625: -1- AH_OUTPUT([size_t], [/* Define to \`unsigned' if does not define. */ +#undef size_t]) +m4trace:configure.in:625: -1- AC_FUNC_ALLOCA +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have and it should be used (not on Ultrix). + */ +#undef HAVE_ALLOCA_H]) +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have \`alloca', as a function or macro. */ +#undef HAVE_ALLOCA]) +m4trace:configure.in:625: -1- AC_LIBSOURCE([alloca.c]) +m4trace:configure.in:625: -1- AC_SUBST([ALLOCA], [alloca.$ac_objext]) +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA]) +m4trace:configure.in:625: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using \`alloca.c'. */ +#undef C_ALLOCA]) +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([CRAY_STACKSEG_END]) +m4trace:configure.in:625: -1- AH_OUTPUT([CRAY_STACKSEG_END], [/* Define to one of \`_getb67', \`GETB67', \`getb67' for Cray-2 and Cray-YMP + systems. This function is required for \`alloca.c' support on those systems. + */ +#undef CRAY_STACKSEG_END]) +m4trace:configure.in:625: -1- AH_OUTPUT([STACK_DIRECTION], [/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +@%:@undef STACK_DIRECTION]) +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION]) +m4trace:configure.in:625: -1- AC_FUNC_MMAP +m4trace:configure.in:625: -1- AC_CHECK_HEADERS([stdlib.h unistd.h]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H]) +m4trace:configure.in:625: -1- AC_CHECK_FUNCS([getpagesize]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the \`getpagesize' function. */ +#undef HAVE_GETPAGESIZE]) +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have a working \`mmap' system call. */ +#undef HAVE_MMAP]) +m4trace:configure.in:625: -1- AC_SUBST([GLIBC21]) +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([INTDIV0_RAISES_SIGFPE]) +m4trace:configure.in:625: -1- AH_OUTPUT([INTDIV0_RAISES_SIGFPE], [/* Define if integer division by zero raises signal SIGFPE. */ +#undef INTDIV0_RAISES_SIGFPE]) +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H_WITH_UINTMAX]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_INTTYPES_H_WITH_UINTMAX], [/* Define if exists, doesn't clash with , and + declares uintmax_t. */ +#undef HAVE_INTTYPES_H_WITH_UINTMAX]) +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDINT_H_WITH_UINTMAX]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_STDINT_H_WITH_UINTMAX], [/* Define if exists, doesn't clash with , and declares + uintmax_t. */ +#undef HAVE_STDINT_H_WITH_UINTMAX]) +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_UNSIGNED_LONG_LONG], [/* Define if you have the unsigned long long type. */ +#undef HAVE_UNSIGNED_LONG_LONG]) +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t]) +m4trace:configure.in:625: -1- AH_OUTPUT([uintmax_t], [/* Define to unsigned long or unsigned long long if and + don't define. */ +#undef uintmax_t]) +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UINTMAX_T]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_UINTMAX_T], [/* Define if you have the 'uintmax_t' type in or . */ +#undef HAVE_UINTMAX_T]) +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define if exists and doesn't clash with . */ +#undef HAVE_INTTYPES_H]) +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([PRI_MACROS_BROKEN]) +m4trace:configure.in:625: -1- AH_OUTPUT([PRI_MACROS_BROKEN], [/* Define if exists and defines unusable PRI* macros. */ +#undef PRI_MACROS_BROKEN]) +m4trace:configure.in:625: -1- AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ +stdlib.h string.h unistd.h sys/param.h]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_ARGZ_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_ARGZ_H]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_LIMITS_H]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_LOCALE_H]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_NL_TYPES_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_NL_TYPES_H]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_MALLOC_H]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STDDEF_H]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_PARAM_H]) +m4trace:configure.in:625: -1- AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ +geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ +strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next \ +__fsetlocking]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_FEOF_UNLOCKED], [/* Define to 1 if you have the \`feof_unlocked' function. */ +#undef HAVE_FEOF_UNLOCKED]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_FGETS_UNLOCKED], [/* Define to 1 if you have the \`fgets_unlocked' function. */ +#undef HAVE_FGETS_UNLOCKED]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_GETC_UNLOCKED], [/* Define to 1 if you have the \`getc_unlocked' function. */ +#undef HAVE_GETC_UNLOCKED]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the \`getcwd' function. */ +#undef HAVE_GETCWD]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_GETEGID], [/* Define to 1 if you have the \`getegid' function. */ +#undef HAVE_GETEGID]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_GETEUID], [/* Define to 1 if you have the \`geteuid' function. */ +#undef HAVE_GETEUID]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_GETGID], [/* Define to 1 if you have the \`getgid' function. */ +#undef HAVE_GETGID]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_GETUID], [/* Define to 1 if you have the \`getuid' function. */ +#undef HAVE_GETUID]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the \`mempcpy' function. */ +#undef HAVE_MEMPCPY]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_MUNMAP], [/* Define to 1 if you have the \`munmap' function. */ +#undef HAVE_MUNMAP]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_PUTENV], [/* Define to 1 if you have the \`putenv' function. */ +#undef HAVE_PUTENV]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_SETENV], [/* Define to 1 if you have the \`setenv' function. */ +#undef HAVE_SETENV]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the \`setlocale' function. */ +#undef HAVE_SETLOCALE]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the \`stpcpy' function. */ +#undef HAVE_STPCPY]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the \`strcasecmp' function. */ +#undef HAVE_STRCASECMP]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the \`strdup' function. */ +#undef HAVE_STRDUP]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the \`strtoul' function. */ +#undef HAVE_STRTOUL]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_TSEARCH], [/* Define to 1 if you have the \`tsearch' function. */ +#undef HAVE_TSEARCH]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE___ARGZ_COUNT], [/* Define to 1 if you have the \`__argz_count' function. */ +#undef HAVE___ARGZ_COUNT]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE___ARGZ_STRINGIFY], [/* Define to 1 if you have the \`__argz_stringify' function. */ +#undef HAVE___ARGZ_STRINGIFY]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE___ARGZ_NEXT], [/* Define to 1 if you have the \`__argz_next' function. */ +#undef HAVE___ARGZ_NEXT]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE___FSETLOCKING], [/* Define to 1 if you have the \`__fsetlocking' function. */ +#undef HAVE___FSETLOCKING]) +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ICONV]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_ICONV], [/* Define if you have the iconv() function. */ +#undef HAVE_ICONV]) +m4trace:configure.in:625: -1- AC_SUBST([LIBICONV]) +m4trace:configure.in:625: -1- AC_SUBST([LTLIBICONV]) +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([ICONV_CONST]) +m4trace:configure.in:625: -1- AH_OUTPUT([ICONV_CONST], [/* Define as const if the declaration of iconv() needs const. */ +#undef ICONV_CONST]) +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_CODESET]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_LANGINFO_CODESET], [/* Define if you have and nl_langinfo(CODESET). */ +#undef HAVE_LANGINFO_CODESET]) +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LC_MESSAGES]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_LC_MESSAGES], [/* Define if your file defines LC_MESSAGES. */ +#undef HAVE_LC_MESSAGES]) +m4trace:configure.in:625: -1- AC_SUBST([INTLBISON]) +m4trace:configure.in:625: -1- AC_SUBST([USE_NLS]) +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_NLS]) +m4trace:configure.in:625: -1- AH_OUTPUT([ENABLE_NLS], [/* Define to 1 if translation of program messages to the user's native + language is requested. */ +#undef ENABLE_NLS]) +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTEXT]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_GETTEXT], [/* Define if the GNU gettext() function is already present or preinstalled. */ +#undef HAVE_GETTEXT]) +m4trace:configure.in:625: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DCGETTEXT]) +m4trace:configure.in:625: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +#undef HAVE_DCGETTEXT]) +m4trace:configure.in:625: -1- AC_SUBST([BUILD_INCLUDED_LIBINTL]) +m4trace:configure.in:625: -1- AC_SUBST([USE_INCLUDED_LIBINTL]) +m4trace:configure.in:625: -1- AC_SUBST([CATOBJEXT]) +m4trace:configure.in:625: -1- AC_SUBST([DATADIRNAME]) +m4trace:configure.in:625: -1- AC_SUBST([INSTOBJEXT]) +m4trace:configure.in:625: -1- AC_SUBST([GENCAT]) +m4trace:configure.in:625: -1- AC_SUBST([INTLOBJS]) +m4trace:configure.in:625: -1- AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX]) +m4trace:configure.in:625: -1- AC_SUBST([INTLLIBS]) +m4trace:configure.in:625: -1- AC_SUBST([LIBINTL]) +m4trace:configure.in:625: -1- AC_SUBST([LTLIBINTL]) +m4trace:configure.in:625: -1- AC_SUBST([POSUB]) +m4trace:configure.in:628: -1- AC_HEADER_DIRENT +m4trace:configure.in:628: -1- AH_OUTPUT([HAVE_DIRENT_H], [/* Define to 1 if you have the header file, and it defines \`DIR'. + */ +#undef HAVE_DIRENT_H]) +m4trace:configure.in:628: -1- AH_OUTPUT([HAVE_SYS_NDIR_H], [/* Define to 1 if you have the header file, and it defines \`DIR'. + */ +#undef HAVE_SYS_NDIR_H]) +m4trace:configure.in:628: -1- AH_OUTPUT([HAVE_SYS_DIR_H], [/* Define to 1 if you have the header file, and it defines \`DIR'. + */ +#undef HAVE_SYS_DIR_H]) +m4trace:configure.in:628: -1- AH_OUTPUT([HAVE_NDIR_H], [/* Define to 1 if you have the header file, and it defines \`DIR'. */ +#undef HAVE_NDIR_H]) +m4trace:configure.in:629: -1- AC_HEADER_TIME +m4trace:configure.in:629: -1- AC_DEFINE_TRACE_LITERAL([TIME_WITH_SYS_TIME]) +m4trace:configure.in:629: -1- AH_OUTPUT([TIME_WITH_SYS_TIME], [/* Define to 1 if you can safely include both and . */ +#undef TIME_WITH_SYS_TIME]) +m4trace:configure.in:631: -1- AC_CHECK_HEADERS([inttypes.h]) +m4trace:configure.in:631: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H]) +m4trace:configure.in:635: -1- 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 \ + stddef.h stdint.h netdb.h pwd.h grp.h strings.h regex.h]) +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H]) +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H]) +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_STDARG_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STDARG_H]) +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_VARARGS_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_VARARGS_H]) +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_LIMITS_H]) +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H]) +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H]) +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_LOCALE_H]) +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_TERMCAP_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_TERMCAP_H]) +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_TERMIO_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_TERMIO_H]) +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_TERMIOS_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_TERMIOS_H]) +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H]) +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STDDEF_H]) +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H]) +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_NETDB_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_NETDB_H]) +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_PWD_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_PWD_H]) +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_GRP_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_GRP_H]) +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H]) +m4trace:configure.in:635: -1- AH_OUTPUT([HAVE_REGEX_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_REGEX_H]) +m4trace:configure.in:638: -1- 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]) +m4trace:configure.in:638: -1- AH_OUTPUT([HAVE_SYS_PTE_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_PTE_H]) +m4trace:configure.in:638: -1- AH_OUTPUT([HAVE_SYS_STREAM_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STREAM_H]) +m4trace:configure.in:638: -1- AH_OUTPUT([HAVE_SYS_SELECT_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SELECT_H]) +m4trace:configure.in:638: -1- AH_OUTPUT([HAVE_SYS_FILE_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_FILE_H]) +m4trace:configure.in:638: -1- AH_OUTPUT([HAVE_SYS_RESOURCE_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_RESOURCE_H]) +m4trace:configure.in:638: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_PARAM_H]) +m4trace:configure.in:638: -1- AH_OUTPUT([HAVE_SYS_SOCKET_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SOCKET_H]) +m4trace:configure.in:638: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H]) +m4trace:configure.in:638: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIME_H]) +m4trace:configure.in:638: -1- AH_OUTPUT([HAVE_SYS_TIMES_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIMES_H]) +m4trace:configure.in:638: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H]) +m4trace:configure.in:638: -1- AH_OUTPUT([HAVE_SYS_WAIT_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_WAIT_H]) +m4trace:configure.in:639: -1- AC_CHECK_HEADERS([netinet/in.h arpa/inet.h]) +m4trace:configure.in:639: -1- AH_OUTPUT([HAVE_NETINET_IN_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_NETINET_IN_H]) +m4trace:configure.in:639: -1- AH_OUTPUT([HAVE_ARPA_INET_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_ARPA_INET_H]) +m4trace:configure.in:650: -1- AC_FUNC_ALLOCA +m4trace:configure.in:650: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H]) +m4trace:configure.in:650: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have and it should be used (not on Ultrix). + */ +#undef HAVE_ALLOCA_H]) +m4trace:configure.in:650: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA]) +m4trace:configure.in:650: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have \`alloca', as a function or macro. */ +#undef HAVE_ALLOCA]) +m4trace:configure.in:650: -1- AC_LIBSOURCE([alloca.c]) +m4trace:configure.in:650: -1- AC_SUBST([ALLOCA], [alloca.$ac_objext]) +m4trace:configure.in:650: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA]) +m4trace:configure.in:650: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using \`alloca.c'. */ +#undef C_ALLOCA]) +m4trace:configure.in:650: -1- AC_DEFINE_TRACE_LITERAL([CRAY_STACKSEG_END]) +m4trace:configure.in:650: -1- AH_OUTPUT([CRAY_STACKSEG_END], [/* Define to one of \`_getb67', \`GETB67', \`getb67' for Cray-2 and Cray-YMP + systems. This function is required for \`alloca.c' support on those systems. + */ +#undef CRAY_STACKSEG_END]) +m4trace:configure.in:650: -1- AH_OUTPUT([STACK_DIRECTION], [/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +@%:@undef STACK_DIRECTION]) +m4trace:configure.in:650: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION]) +m4trace:configure.in:651: -1- AC_FUNC_GETPGRP +m4trace:configure.in:651: -1- AC_DEFINE_TRACE_LITERAL([GETPGRP_VOID]) +m4trace:configure.in:651: -1- AH_OUTPUT([GETPGRP_VOID], [/* Define to 1 if the \`getpgrp' function requires zero arguments. */ +#undef GETPGRP_VOID]) +m4trace:configure.in:652: -1- AC_FUNC_SETVBUF_REVERSED +m4trace:configure.in:652: -1- AC_DEFINE_TRACE_LITERAL([SETVBUF_REVERSED]) +m4trace:configure.in:652: -1- AH_OUTPUT([SETVBUF_REVERSED], [/* Define to 1 if the \`setvbuf' function takes the buffering type as its + second argument and the buffer pointer as the third, as on System V before + release 3. */ +#undef SETVBUF_REVERSED]) +m4trace:configure.in:653: -1- AC_FUNC_VPRINTF +m4trace:configure.in:653: -1- AC_CHECK_FUNCS([vprintf], [ +AC_CHECK_FUNC(_doprnt, + [AC_DEFINE(HAVE_DOPRNT, 1, + [Define to 1 if you don't have `vprintf' but do have + `_doprnt.'])])]) +m4trace:configure.in:653: -1- AH_OUTPUT([HAVE_VPRINTF], [/* Define to 1 if you have the \`vprintf' function. */ +#undef HAVE_VPRINTF]) +m4trace:configure.in:653: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOPRNT]) +m4trace:configure.in:653: -1- AH_OUTPUT([HAVE_DOPRNT], [/* Define to 1 if you don't have \`vprintf' but do have \`_doprnt.' */ +#undef HAVE_DOPRNT]) +m4trace:configure.in:654: -1- AC_FUNC_STRCOLL +m4trace:configure.in:654: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCOLL]) +m4trace:configure.in:654: -1- AH_OUTPUT([HAVE_STRCOLL], [/* Define to 1 if you have the \`strcoll' function and it is properly defined. + */ +#undef HAVE_STRCOLL]) +m4trace:configure.in:675: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VPRINTF]) +m4trace:configure.in:680: -1- AC_LIBSOURCE([vprint.c]) +m4trace:configure.in:680: -1- AC_SUBST([LIB@&t@OBJS]) +m4trace:configure.in:684: -1- AC_TYPE_SIGNAL +m4trace:configure.in:684: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE]) +m4trace:configure.in:684: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (\`int' or \`void'). */ +#undef RETSIGTYPE]) +m4trace:configure.in:687: -2- AC_DEFINE_TRACE_LITERAL([HAVE_SETOSTYPE]) +m4trace:configure.in:688: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WAIT3]) +m4trace:configure.in:689: -2- AC_DEFINE_TRACE_LITERAL([HAVE_ISINF_IN_LIBC]) +m4trace:configure.in:692: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MKFIFO]) +m4trace:configure.in:692: -2- AC_DEFINE_TRACE_LITERAL([MKFIFO_MISSING]) +m4trace:configure.in:698: -1- AC_CHECK_FUNCS([dup2 fcntl getdtablesize getgroups gethostname getpagesize \ + getpeername getrlimit getrusage gettimeofday kill killpg \ + lstat readlink sbrk select setdtablesize tcgetpgrp uname \ + ulimit waitpid]) +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_DUP2], [/* Define to 1 if you have the \`dup2' function. */ +#undef HAVE_DUP2]) +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_FCNTL], [/* Define to 1 if you have the \`fcntl' function. */ +#undef HAVE_FCNTL]) +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_GETDTABLESIZE], [/* Define to 1 if you have the \`getdtablesize' function. */ +#undef HAVE_GETDTABLESIZE]) +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_GETGROUPS], [/* Define to 1 if you have the \`getgroups' function. */ +#undef HAVE_GETGROUPS]) +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_GETHOSTNAME], [/* Define to 1 if you have the \`gethostname' function. */ +#undef HAVE_GETHOSTNAME]) +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the \`getpagesize' function. */ +#undef HAVE_GETPAGESIZE]) +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_GETPEERNAME], [/* Define to 1 if you have the \`getpeername' function. */ +#undef HAVE_GETPEERNAME]) +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_GETRLIMIT], [/* Define to 1 if you have the \`getrlimit' function. */ +#undef HAVE_GETRLIMIT]) +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_GETRUSAGE], [/* Define to 1 if you have the \`getrusage' function. */ +#undef HAVE_GETRUSAGE]) +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have the \`gettimeofday' function. */ +#undef HAVE_GETTIMEOFDAY]) +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_KILL], [/* Define to 1 if you have the \`kill' function. */ +#undef HAVE_KILL]) +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_KILLPG], [/* Define to 1 if you have the \`killpg' function. */ +#undef HAVE_KILLPG]) +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_LSTAT], [/* Define to 1 if you have the \`lstat' function. */ +#undef HAVE_LSTAT]) +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_READLINK], [/* Define to 1 if you have the \`readlink' function. */ +#undef HAVE_READLINK]) +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_SBRK], [/* Define to 1 if you have the \`sbrk' function. */ +#undef HAVE_SBRK]) +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_SELECT], [/* Define to 1 if you have the \`select' function. */ +#undef HAVE_SELECT]) +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_SETDTABLESIZE], [/* Define to 1 if you have the \`setdtablesize' function. */ +#undef HAVE_SETDTABLESIZE]) +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_TCGETPGRP], [/* Define to 1 if you have the \`tcgetpgrp' function. */ +#undef HAVE_TCGETPGRP]) +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_UNAME], [/* Define to 1 if you have the \`uname' function. */ +#undef HAVE_UNAME]) +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_ULIMIT], [/* Define to 1 if you have the \`ulimit' function. */ +#undef HAVE_ULIMIT]) +m4trace:configure.in:698: -1- AH_OUTPUT([HAVE_WAITPID], [/* Define to 1 if you have the \`waitpid' function. */ +#undef HAVE_WAITPID]) +m4trace:configure.in:699: -1- AC_LIBSOURCE([rename.c]) +m4trace:configure.in:699: -1- AC_CHECK_FUNCS([rename], [], [_AC_LIBOBJ($ac_func)]) +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_RENAME], [/* Define to 1 if you have the \`rename' function. */ +#undef HAVE_RENAME]) +m4trace:configure.in:699: -1- AC_SUBST([LIB@&t@OBJS]) +m4trace:configure.in:706: -1- AC_CHECK_FUNCS([bcopy bzero confstr fnmatch \ + getaddrinfo gethostbyname getservbyname getservent inet_aton \ + memmove pathconf putenv raise regcomp regexec \ + setenv setlinebuf setlocale setvbuf siginterrupt strchr \ + sysconf tcgetattr times ttyname tzset unsetenv]) +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_BCOPY], [/* Define to 1 if you have the \`bcopy' function. */ +#undef HAVE_BCOPY]) +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_BZERO], [/* Define to 1 if you have the \`bzero' function. */ +#undef HAVE_BZERO]) +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_CONFSTR], [/* Define to 1 if you have the \`confstr' function. */ +#undef HAVE_CONFSTR]) +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_FNMATCH], [/* Define to 1 if you have the \`fnmatch' function. */ +#undef HAVE_FNMATCH]) +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_GETADDRINFO], [/* Define to 1 if you have the \`getaddrinfo' function. */ +#undef HAVE_GETADDRINFO]) +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_GETHOSTBYNAME], [/* Define to 1 if you have the \`gethostbyname' function. */ +#undef HAVE_GETHOSTBYNAME]) +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_GETSERVBYNAME], [/* Define to 1 if you have the \`getservbyname' function. */ +#undef HAVE_GETSERVBYNAME]) +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_GETSERVENT], [/* Define to 1 if you have the \`getservent' function. */ +#undef HAVE_GETSERVENT]) +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_INET_ATON], [/* Define to 1 if you have the \`inet_aton' function. */ +#undef HAVE_INET_ATON]) +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_MEMMOVE], [/* Define to 1 if you have the \`memmove' function. */ +#undef HAVE_MEMMOVE]) +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_PATHCONF], [/* Define to 1 if you have the \`pathconf' function. */ +#undef HAVE_PATHCONF]) +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_PUTENV], [/* Define to 1 if you have the \`putenv' function. */ +#undef HAVE_PUTENV]) +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_RAISE], [/* Define to 1 if you have the \`raise' function. */ +#undef HAVE_RAISE]) +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_REGCOMP], [/* Define to 1 if you have the \`regcomp' function. */ +#undef HAVE_REGCOMP]) +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_REGEXEC], [/* Define to 1 if you have the \`regexec' function. */ +#undef HAVE_REGEXEC]) +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_SETENV], [/* Define to 1 if you have the \`setenv' function. */ +#undef HAVE_SETENV]) +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_SETLINEBUF], [/* Define to 1 if you have the \`setlinebuf' function. */ +#undef HAVE_SETLINEBUF]) +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the \`setlocale' function. */ +#undef HAVE_SETLOCALE]) +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_SETVBUF], [/* Define to 1 if you have the \`setvbuf' function. */ +#undef HAVE_SETVBUF]) +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_SIGINTERRUPT], [/* Define to 1 if you have the \`siginterrupt' function. */ +#undef HAVE_SIGINTERRUPT]) +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_STRCHR], [/* Define to 1 if you have the \`strchr' function. */ +#undef HAVE_STRCHR]) +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_SYSCONF], [/* Define to 1 if you have the \`sysconf' function. */ +#undef HAVE_SYSCONF]) +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_TCGETATTR], [/* Define to 1 if you have the \`tcgetattr' function. */ +#undef HAVE_TCGETATTR]) +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_TIMES], [/* Define to 1 if you have the \`times' function. */ +#undef HAVE_TIMES]) +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_TTYNAME], [/* Define to 1 if you have the \`ttyname' function. */ +#undef HAVE_TTYNAME]) +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_TZSET], [/* Define to 1 if you have the \`tzset' function. */ +#undef HAVE_TZSET]) +m4trace:configure.in:706: -1- AH_OUTPUT([HAVE_UNSETENV], [/* Define to 1 if you have the \`unsetenv' function. */ +#undef HAVE_UNSETENV]) +m4trace:configure.in:708: -1- AC_CHECK_FUNCS([vsnprintf snprintf vasprintf asprintf]) +m4trace:configure.in:708: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* Define to 1 if you have the \`vsnprintf' function. */ +#undef HAVE_VSNPRINTF]) +m4trace:configure.in:708: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define to 1 if you have the \`snprintf' function. */ +#undef HAVE_SNPRINTF]) +m4trace:configure.in:708: -1- AH_OUTPUT([HAVE_VASPRINTF], [/* Define to 1 if you have the \`vasprintf' function. */ +#undef HAVE_VASPRINTF]) +m4trace:configure.in:708: -1- AH_OUTPUT([HAVE_ASPRINTF], [/* Define to 1 if you have the \`asprintf' function. */ +#undef HAVE_ASPRINTF]) +m4trace:configure.in:709: -1- AC_CHECK_FUNCS([isascii isblank isgraph isprint isspace isxdigit]) +m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_ISASCII], [/* Define to 1 if you have the \`isascii' function. */ +#undef HAVE_ISASCII]) +m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_ISBLANK], [/* Define to 1 if you have the \`isblank' function. */ +#undef HAVE_ISBLANK]) +m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_ISGRAPH], [/* Define to 1 if you have the \`isgraph' function. */ +#undef HAVE_ISGRAPH]) +m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_ISPRINT], [/* Define to 1 if you have the \`isprint' function. */ +#undef HAVE_ISPRINT]) +m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_ISSPACE], [/* Define to 1 if you have the \`isspace' function. */ +#undef HAVE_ISSPACE]) +m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_ISXDIGIT], [/* Define to 1 if you have the \`isxdigit' function. */ +#undef HAVE_ISXDIGIT]) +m4trace:configure.in:710: -1- AC_CHECK_FUNCS([getpwent getpwnam getpwuid]) +m4trace:configure.in:710: -1- AH_OUTPUT([HAVE_GETPWENT], [/* Define to 1 if you have the \`getpwent' function. */ +#undef HAVE_GETPWENT]) +m4trace:configure.in:710: -1- AH_OUTPUT([HAVE_GETPWNAM], [/* Define to 1 if you have the \`getpwnam' function. */ +#undef HAVE_GETPWNAM]) +m4trace:configure.in:710: -1- AH_OUTPUT([HAVE_GETPWUID], [/* Define to 1 if you have the \`getpwuid' function. */ +#undef HAVE_GETPWUID]) +m4trace:configure.in:711: -1- AC_LIBSOURCE([getcwd.c]) +m4trace:configure.in:711: -1- AC_LIBSOURCE([memset.c]) +m4trace:configure.in:711: -1- AC_LIBSOURCE([strcasecmp.c]) +m4trace:configure.in:711: -1- AC_LIBSOURCE([strerror.c]) +m4trace:configure.in:711: -1- AC_LIBSOURCE([strftime.c]) +m4trace:configure.in:711: -1- AC_LIBSOURCE([strnlen.c]) +m4trace:configure.in:711: -1- AC_LIBSOURCE([strpbrk.c]) +m4trace:configure.in:711: -1- AC_LIBSOURCE([strstr.c]) +m4trace:configure.in:711: -1- AC_CHECK_FUNCS([getcwd memset strcasecmp strerror strftime strnlen strpbrk strstr], [], [_AC_LIBOBJ($ac_func)]) +m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the \`getcwd' function. */ +#undef HAVE_GETCWD]) +m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_MEMSET], [/* Define to 1 if you have the \`memset' function. */ +#undef HAVE_MEMSET]) +m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the \`strcasecmp' function. */ +#undef HAVE_STRCASECMP]) +m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_STRERROR], [/* Define to 1 if you have the \`strerror' function. */ +#undef HAVE_STRERROR]) +m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_STRFTIME], [/* Define to 1 if you have the \`strftime' function. */ +#undef HAVE_STRFTIME]) +m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_STRNLEN], [/* Define to 1 if you have the \`strnlen' function. */ +#undef HAVE_STRNLEN]) +m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_STRPBRK], [/* Define to 1 if you have the \`strpbrk' function. */ +#undef HAVE_STRPBRK]) +m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_STRSTR], [/* Define to 1 if you have the \`strstr' function. */ +#undef HAVE_STRSTR]) +m4trace:configure.in:711: -1- AC_SUBST([LIB@&t@OBJS]) +m4trace:configure.in:712: -1- AC_LIBSOURCE([strtod.c]) +m4trace:configure.in:712: -1- AC_LIBSOURCE([strtol.c]) +m4trace:configure.in:712: -1- AC_LIBSOURCE([strtoul.c]) +m4trace:configure.in:712: -1- AC_LIBSOURCE([strtoll.c]) +m4trace:configure.in:712: -1- AC_LIBSOURCE([strtoull.c]) +m4trace:configure.in:712: -1- AC_LIBSOURCE([strtoimax.c]) +m4trace:configure.in:712: -1- AC_LIBSOURCE([strtoumax.c]) +m4trace:configure.in:712: -1- AC_CHECK_FUNCS([strtod strtol strtoul strtoll strtoull strtoimax strtoumax], [], [_AC_LIBOBJ($ac_func)]) +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_STRTOD], [/* Define to 1 if you have the \`strtod' function. */ +#undef HAVE_STRTOD]) +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_STRTOL], [/* Define to 1 if you have the \`strtol' function. */ +#undef HAVE_STRTOL]) +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the \`strtoul' function. */ +#undef HAVE_STRTOUL]) +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_STRTOLL], [/* Define to 1 if you have the \`strtoll' function. */ +#undef HAVE_STRTOLL]) +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_STRTOULL], [/* Define to 1 if you have the \`strtoull' function. */ +#undef HAVE_STRTOULL]) +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_STRTOIMAX], [/* Define to 1 if you have the \`strtoimax' function. */ +#undef HAVE_STRTOIMAX]) +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_STRTOUMAX], [/* Define to 1 if you have the \`strtoumax' function. */ +#undef HAVE_STRTOUMAX]) +m4trace:configure.in:712: -1- AC_SUBST([LIB@&t@OBJS]) +m4trace:configure.in:714: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_CONFSTR]) +m4trace:configure.in:714: -1- AH_OUTPUT([HAVE_DECL_CONFSTR], [/* Define to 1 if you have the declaration of \`confstr', and to 0 if you + don't. */ +#undef HAVE_DECL_CONFSTR]) +m4trace:configure.in:714: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_CONFSTR]) +m4trace:configure.in:715: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_PRINTF]) +m4trace:configure.in:715: -1- AH_OUTPUT([HAVE_DECL_PRINTF], [/* Define to 1 if you have the declaration of \`printf', and to 0 if you don't. + */ +#undef HAVE_DECL_PRINTF]) +m4trace:configure.in:715: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_PRINTF]) +m4trace:configure.in:716: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SBRK]) +m4trace:configure.in:716: -1- AH_OUTPUT([HAVE_DECL_SBRK], [/* Define to 1 if you have the declaration of \`sbrk', and to 0 if you don't. + */ +#undef HAVE_DECL_SBRK]) +m4trace:configure.in:716: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SBRK]) +m4trace:configure.in:717: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRCPY]) +m4trace:configure.in:717: -1- AH_OUTPUT([HAVE_DECL_STRCPY], [/* Define to 1 if you have the declaration of \`strcpy', and to 0 if you don't. + */ +#undef HAVE_DECL_STRCPY]) +m4trace:configure.in:717: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRCPY]) +m4trace:configure.in:718: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRSIGNAL]) +m4trace:configure.in:718: -1- AH_OUTPUT([HAVE_DECL_STRSIGNAL], [/* Define to 1 if you have the declaration of \`strsignal', and to 0 if you + don't. */ +#undef HAVE_DECL_STRSIGNAL]) +m4trace:configure.in:718: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRSIGNAL]) +m4trace:configure.in:735: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRTOLD]) +m4trace:configure.in:735: -1- AH_OUTPUT([HAVE_DECL_STRTOLD], [/* Define to 1 if you have the declaration of \`strtold', and to 0 if you + don't. */ +#undef HAVE_DECL_STRTOLD]) +m4trace:configure.in:735: -1- AC_DEFINE_TRACE_LITERAL([STRTOLD_BROKEN]) +m4trace:configure.in:735: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRTOLD]) +m4trace:configure.in:745: -1- AC_FUNC_MKTIME +m4trace:configure.in:745: -1- AC_CHECK_HEADERS([sys/time.h unistd.h]) +m4trace:configure.in:745: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIME_H]) +m4trace:configure.in:745: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H]) +m4trace:configure.in:745: -1- AC_CHECK_FUNCS([alarm]) +m4trace:configure.in:745: -1- AH_OUTPUT([HAVE_ALARM], [/* Define to 1 if you have the \`alarm' function. */ +#undef HAVE_ALARM]) +m4trace:configure.in:745: -1- AC_LIBSOURCE([mktime.c]) +m4trace:configure.in:745: -1- AC_SUBST([LIB@&t@OBJS]) +m4trace:configure.in:752: -1- AC_CHECK_HEADERS([argz.h errno.h fcntl.h malloc.h stdio_ext.h]) +m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_ARGZ_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_ARGZ_H]) +m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_ERRNO_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_ERRNO_H]) +m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_FCNTL_H]) +m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_MALLOC_H]) +m4trace:configure.in:752: -1- AH_OUTPUT([HAVE_STDIO_EXT_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STDIO_EXT_H]) +m4trace:configure.in:755: -1- AC_FUNC_MMAP +m4trace:configure.in:755: -1- AC_CHECK_HEADERS([stdlib.h unistd.h]) +m4trace:configure.in:755: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H]) +m4trace:configure.in:755: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H]) +m4trace:configure.in:755: -1- AC_CHECK_FUNCS([getpagesize]) +m4trace:configure.in:755: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the \`getpagesize' function. */ +#undef HAVE_GETPAGESIZE]) +m4trace:configure.in:755: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP]) +m4trace:configure.in:755: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have a working \`mmap' system call. */ +#undef HAVE_MMAP]) +m4trace:configure.in:757: -1- AC_CHECK_FUNCS([__argz_count __argz_next __argz_stringify dcgettext mempcpy \ + munmap stpcpy strcspn strdup]) +m4trace:configure.in:757: -1- AH_OUTPUT([HAVE___ARGZ_COUNT], [/* Define to 1 if you have the \`__argz_count' function. */ +#undef HAVE___ARGZ_COUNT]) +m4trace:configure.in:757: -1- AH_OUTPUT([HAVE___ARGZ_NEXT], [/* Define to 1 if you have the \`__argz_next' function. */ +#undef HAVE___ARGZ_NEXT]) +m4trace:configure.in:757: -1- AH_OUTPUT([HAVE___ARGZ_STRINGIFY], [/* Define to 1 if you have the \`__argz_stringify' function. */ +#undef HAVE___ARGZ_STRINGIFY]) +m4trace:configure.in:757: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define to 1 if you have the \`dcgettext' function. */ +#undef HAVE_DCGETTEXT]) +m4trace:configure.in:757: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the \`mempcpy' function. */ +#undef HAVE_MEMPCPY]) +m4trace:configure.in:757: -1- AH_OUTPUT([HAVE_MUNMAP], [/* Define to 1 if you have the \`munmap' function. */ +#undef HAVE_MUNMAP]) +m4trace:configure.in:757: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the \`stpcpy' function. */ +#undef HAVE_STPCPY]) +m4trace:configure.in:757: -1- AH_OUTPUT([HAVE_STRCSPN], [/* Define to 1 if you have the \`strcspn' function. */ +#undef HAVE_STRCSPN]) +m4trace:configure.in:757: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the \`strdup' function. */ +#undef HAVE_STRDUP]) +m4trace:configure.in:765: -1- AC_SUBST([INTL_DEP]) +m4trace:configure.in:766: -1- AC_SUBST([INTL_INC]) +m4trace:configure.in:767: -1- AC_SUBST([LIBINTL_H]) +m4trace:configure.in:773: -1- AC_CHECK_HEADERS([wctype.h]) +m4trace:configure.in:773: -1- AH_OUTPUT([HAVE_WCTYPE_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_WCTYPE_H]) +m4trace:configure.in:773: -1- AC_CHECK_HEADERS([wchar.h]) +m4trace:configure.in:773: -1- AH_OUTPUT([HAVE_WCHAR_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_WCHAR_H]) +m4trace:configure.in:773: -1- AC_CHECK_HEADERS([langinfo.h]) +m4trace:configure.in:773: -1- AH_OUTPUT([HAVE_LANGINFO_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_LANGINFO_H]) +m4trace:configure.in:773: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBSRTOWCS]) +m4trace:configure.in:773: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBRTOWC]) +m4trace:configure.in:773: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBRLEN]) +m4trace:configure.in:773: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCTOMB]) +m4trace:configure.in:773: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCWIDTH]) +m4trace:configure.in:773: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCSDUP]) +m4trace:configure.in:773: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MBSTATE_T]) +m4trace:configure.in:773: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_CODESET]) +m4trace:configure.in:777: -1- AC_CHECK_LIB([dl], [dlopen]) +m4trace:configure.in:777: -1- AH_OUTPUT([HAVE_LIBDL], [/* Define to 1 if you have the \`dl' library (-ldl). */ +#undef HAVE_LIBDL]) +m4trace:configure.in:777: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBDL]) +m4trace:configure.in:778: -1- AC_CHECK_FUNCS([dlopen dlclose dlsym]) +m4trace:configure.in:778: -1- AH_OUTPUT([HAVE_DLOPEN], [/* Define to 1 if you have the \`dlopen' function. */ +#undef HAVE_DLOPEN]) +m4trace:configure.in:778: -1- AH_OUTPUT([HAVE_DLCLOSE], [/* Define to 1 if you have the \`dlclose' function. */ +#undef HAVE_DLCLOSE]) +m4trace:configure.in:778: -1- AH_OUTPUT([HAVE_DLSYM], [/* Define to 1 if you have the \`dlsym' function. */ +#undef HAVE_DLSYM]) +m4trace:configure.in:782: -1- AC_DECL_SYS_SIGLIST +m4trace:configure.in:782: -1- AC_DEFINE_TRACE_LITERAL([SYS_SIGLIST_DECLARED]) +m4trace:configure.in:782: -1- AH_OUTPUT([SYS_SIGLIST_DECLARED], [/* Define to 1 if \`sys_siglist' is declared by or . */ +#undef SYS_SIGLIST_DECLARED]) +m4trace:configure.in:786: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INET_ATON]) +m4trace:configure.in:786: -1- AC_LIBSOURCE([inet_aton.c]) +m4trace:configure.in:786: -1- AC_SUBST([LIB@&t@OBJS]) +m4trace:configure.in:792: -1- AC_CHECK_LIB([sun], [getpwent]) +m4trace:configure.in:792: -1- AH_OUTPUT([HAVE_LIBSUN], [/* Define to 1 if you have the \`sun' library (-lsun). */ +#undef HAVE_LIBSUN]) +m4trace:configure.in:792: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSUN]) +m4trace:configure.in:797: -1- AC_CHECK_LIB([socket], [getpeername], [bash_cv_have_socklib=yes], [bash_cv_have_socklib=no], [-lnsl]) +m4trace:configure.in:797: -1- AC_CHECK_LIB([nsl], [t_open], [bash_cv_have_libnsl=yes], [bash_cv_have_libnsl=no]) +m4trace:configure.in:797: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSOCKET]) +m4trace:configure.in:797: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPEERNAME]) +m4trace:configure.in:801: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETHOSTBYNAME]) +m4trace:configure.in:805: -1- AC_TYPE_UID_T +m4trace:configure.in:805: -1- AC_DEFINE_TRACE_LITERAL([uid_t]) +m4trace:configure.in:805: -1- AH_OUTPUT([uid_t], [/* Define to \`int' if doesn't define. */ +#undef uid_t]) +m4trace:configure.in:805: -1- AC_DEFINE_TRACE_LITERAL([gid_t]) +m4trace:configure.in:805: -1- AH_OUTPUT([gid_t], [/* Define to \`int' if doesn't define. */ +#undef gid_t]) +m4trace:configure.in:805: -1- AC_DEFINE_TRACE_LITERAL([GETGROUPS_T]) +m4trace:configure.in:805: -1- AH_OUTPUT([GETGROUPS_T], [/* Define to the type of elements in the array set by \`getgroups'. Usually + this is either \`int' or \`gid_t'. */ +#undef GETGROUPS_T]) +m4trace:configure.in:806: -1- AC_TYPE_OFF_T +m4trace:configure.in:806: -1- AC_DEFINE_TRACE_LITERAL([off_t]) +m4trace:configure.in:806: -1- AH_OUTPUT([off_t], [/* Define to \`long' if does not define. */ +#undef off_t]) +m4trace:configure.in:807: -1- AC_TYPE_MODE_T +m4trace:configure.in:807: -1- AC_DEFINE_TRACE_LITERAL([mode_t]) +m4trace:configure.in:807: -1- AH_OUTPUT([mode_t], [/* Define to \`int' if does not define. */ +#undef mode_t]) +m4trace:configure.in:808: -1- AC_TYPE_UID_T +m4trace:configure.in:808: -1- AC_DEFINE_TRACE_LITERAL([uid_t]) +m4trace:configure.in:808: -1- AH_OUTPUT([uid_t], [/* Define to \`int' if doesn't define. */ +#undef uid_t]) +m4trace:configure.in:808: -1- AC_DEFINE_TRACE_LITERAL([gid_t]) +m4trace:configure.in:808: -1- AH_OUTPUT([gid_t], [/* Define to \`int' if doesn't define. */ +#undef gid_t]) +m4trace:configure.in:809: -1- AC_TYPE_PID_T +m4trace:configure.in:809: -1- AC_DEFINE_TRACE_LITERAL([pid_t]) +m4trace:configure.in:809: -1- AH_OUTPUT([pid_t], [/* Define to \`int' if does not define. */ +#undef pid_t]) +m4trace:configure.in:810: -1- AC_TYPE_SIZE_T +m4trace:configure.in:810: -1- AC_DEFINE_TRACE_LITERAL([size_t]) +m4trace:configure.in:810: -1- AH_OUTPUT([size_t], [/* Define to \`unsigned' if does not define. */ +#undef size_t]) +m4trace:configure.in:811: -1- AC_DEFINE_TRACE_LITERAL([ssize_t]) +m4trace:configure.in:811: -1- AH_OUTPUT([ssize_t], [/* Define to \`int' if does not define. */ +#undef ssize_t]) +m4trace:configure.in:812: -1- AC_DEFINE_TRACE_LITERAL([time_t]) +m4trace:configure.in:812: -1- AH_OUTPUT([time_t], [/* Define to \`long' if does not define. */ +#undef time_t]) +m4trace:configure.in:814: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_LONG]) +m4trace:configure.in:815: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG]) +m4trace:configure.in:817: -1- AC_TYPE_SIGNAL +m4trace:configure.in:817: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE]) +m4trace:configure.in:817: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (\`int' or \`void'). */ +#undef RETSIGTYPE]) +m4trace:configure.in:819: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_CHAR]) +m4trace:configure.in:819: -1- AH_OUTPUT([SIZEOF_CHAR], [/* The size of a \`char', as computed by sizeof. */ +#undef SIZEOF_CHAR]) +m4trace:configure.in:820: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_SHORT]) +m4trace:configure.in:820: -1- AH_OUTPUT([SIZEOF_SHORT], [/* The size of a \`short', as computed by sizeof. */ +#undef SIZEOF_SHORT]) +m4trace:configure.in:821: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_INT]) +m4trace:configure.in:821: -1- AH_OUTPUT([SIZEOF_INT], [/* The size of a \`int', as computed by sizeof. */ +#undef SIZEOF_INT]) +m4trace:configure.in:822: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG]) +m4trace:configure.in:822: -1- AH_OUTPUT([SIZEOF_LONG], [/* The size of a \`long', as computed by sizeof. */ +#undef SIZEOF_LONG]) +m4trace:configure.in:823: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_CHAR_P]) +m4trace:configure.in:823: -1- AH_OUTPUT([SIZEOF_CHAR_P], [/* The size of a \`char *', as computed by sizeof. */ +#undef SIZEOF_CHAR_P]) +m4trace:configure.in:824: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_DOUBLE]) +m4trace:configure.in:824: -1- AH_OUTPUT([SIZEOF_DOUBLE], [/* The size of a \`double', as computed by sizeof. */ +#undef SIZEOF_DOUBLE]) +m4trace:configure.in:825: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG_LONG]) +m4trace:configure.in:825: -1- AH_OUTPUT([SIZEOF_LONG_LONG], [/* The size of a \`long long', as computed by sizeof. */ +#undef SIZEOF_LONG_LONG]) +m4trace:configure.in:827: -1- AC_DEFINE_TRACE_LITERAL([u_int]) +m4trace:configure.in:827: -1- AH_OUTPUT([u_int], [/* Define to \`unsigned int' if does not define. */ +#undef u_int]) +m4trace:configure.in:828: -1- AC_DEFINE_TRACE_LITERAL([u_long]) +m4trace:configure.in:828: -1- AH_OUTPUT([u_long], [/* Define to \`unsigned long' if does not define. */ +#undef u_long]) +m4trace:configure.in:830: -1- AC_DEFINE_TRACE_LITERAL([bits16_t]) +m4trace:configure.in:830: -1- AH_OUTPUT([bits16_t], [/* Define to \`short' if does not define. */ +#undef bits16_t]) +m4trace:configure.in:830: -1- AC_DEFINE_TRACE_LITERAL([bits16_t]) +m4trace:configure.in:830: -1- AH_OUTPUT([bits16_t], [/* Define to \`char' if does not define. */ +#undef bits16_t]) +m4trace:configure.in:830: -1- AC_DEFINE_TRACE_LITERAL([bits16_t]) +m4trace:configure.in:830: -1- AH_OUTPUT([bits16_t], [/* Define to \`short' if does not define. */ +#undef bits16_t]) +m4trace:configure.in:831: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t]) +m4trace:configure.in:831: -1- AH_OUTPUT([u_bits16_t], [/* Define to \`unsigned short' if does not define. */ +#undef u_bits16_t]) +m4trace:configure.in:831: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t]) +m4trace:configure.in:831: -1- AH_OUTPUT([u_bits16_t], [/* Define to \`unsigned char' if does not define. */ +#undef u_bits16_t]) +m4trace:configure.in:831: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t]) +m4trace:configure.in:831: -1- AH_OUTPUT([u_bits16_t], [/* Define to \`unsigned short' if does not define. */ +#undef u_bits16_t]) +m4trace:configure.in:832: -1- AC_DEFINE_TRACE_LITERAL([bits32_t]) +m4trace:configure.in:832: -1- AH_OUTPUT([bits32_t], [/* Define to \`int' if does not define. */ +#undef bits32_t]) +m4trace:configure.in:832: -1- AC_DEFINE_TRACE_LITERAL([bits32_t]) +m4trace:configure.in:832: -1- AH_OUTPUT([bits32_t], [/* Define to \`long' if does not define. */ +#undef bits32_t]) +m4trace:configure.in:832: -1- AC_DEFINE_TRACE_LITERAL([bits32_t]) +m4trace:configure.in:832: -1- AH_OUTPUT([bits32_t], [/* Define to \`int' if does not define. */ +#undef bits32_t]) +m4trace:configure.in:833: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t]) +m4trace:configure.in:833: -1- AH_OUTPUT([u_bits32_t], [/* Define to \`unsigned int' if does not define. */ +#undef u_bits32_t]) +m4trace:configure.in:833: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t]) +m4trace:configure.in:833: -1- AH_OUTPUT([u_bits32_t], [/* Define to \`unsigned long' if does not define. */ +#undef u_bits32_t]) +m4trace:configure.in:833: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t]) +m4trace:configure.in:833: -1- AH_OUTPUT([u_bits32_t], [/* Define to \`unsigned int' if does not define. */ +#undef u_bits32_t]) +m4trace:configure.in:834: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) +m4trace:configure.in:834: -1- AH_OUTPUT([bits64_t], [/* Define to \`char *' if does not define. */ +#undef bits64_t]) +m4trace:configure.in:834: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) +m4trace:configure.in:834: -1- AH_OUTPUT([bits64_t], [/* Define to \`double' if does not define. */ +#undef bits64_t]) +m4trace:configure.in:834: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) +m4trace:configure.in:834: -1- AH_OUTPUT([bits64_t], [/* Define to \`long long' if does not define. */ +#undef bits64_t]) +m4trace:configure.in:834: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) +m4trace:configure.in:834: -1- AH_OUTPUT([bits64_t], [/* Define to \`long' if does not define. */ +#undef bits64_t]) +m4trace:configure.in:834: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) +m4trace:configure.in:834: -1- AH_OUTPUT([bits64_t], [/* Define to \`double' if does not define. */ +#undef bits64_t]) +m4trace:configure.in:836: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t]) +m4trace:configure.in:836: -1- AH_OUTPUT([ptrdiff_t], [/* Define to \`int' if does not define. */ +#undef ptrdiff_t]) +m4trace:configure.in:836: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t]) +m4trace:configure.in:836: -1- AH_OUTPUT([ptrdiff_t], [/* Define to \`long' if does not define. */ +#undef ptrdiff_t]) +m4trace:configure.in:836: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t]) +m4trace:configure.in:836: -1- AH_OUTPUT([ptrdiff_t], [/* Define to \`long long' if does not define. */ +#undef ptrdiff_t]) +m4trace:configure.in:836: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t]) +m4trace:configure.in:836: -1- AH_OUTPUT([ptrdiff_t], [/* Define to \`int' if does not define. */ +#undef ptrdiff_t]) +m4trace:configure.in:839: -1- AC_HEADER_STAT +m4trace:configure.in:839: -1- AC_DEFINE_TRACE_LITERAL([STAT_MACROS_BROKEN]) +m4trace:configure.in:839: -1- AH_OUTPUT([STAT_MACROS_BROKEN], [/* Define to 1 if the \`S_IS*' macros in do not work properly. */ +#undef STAT_MACROS_BROKEN]) +m4trace:configure.in:844: -1- AC_DEFINE_TRACE_LITERAL([HAVE_HASH_BANG_EXEC]) +m4trace:configure.in:849: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LSTAT]) +m4trace:configure.in:853: -1- AC_DEFINE_TRACE_LITERAL([CTYPE_NON_ASCII]) +m4trace:configure.in:854: -1- AC_DEFINE_TRACE_LITERAL([DUP2_BROKEN]) +m4trace:configure.in:855: -1- AC_DEFINE_TRACE_LITERAL([PGRP_PIPE]) +m4trace:configure.in:856: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SIGNALS]) +m4trace:configure.in:856: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BSD_SIGNALS]) +m4trace:configure.in:856: -1- AC_DEFINE_TRACE_LITERAL([HAVE_USG_SIGHOLD]) +m4trace:configure.in:859: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_ERRLIST]) +m4trace:configure.in:860: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_SIGLIST]) +m4trace:configure.in:861: -1- AC_DEFINE_TRACE_LITERAL([UNDER_SYS_SIGLIST_DECLARED]) +m4trace:configure.in:861: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNDER_SYS_SIGLIST]) +m4trace:configure.in:864: -1- AC_DEFINE_TRACE_LITERAL([VOID_SIGHANDLER]) +m4trace:configure.in:865: -1- AC_DEFINE_TRACE_LITERAL([clock_t]) +m4trace:configure.in:866: -1- AC_DEFINE_TRACE_LITERAL([sigset_t]) +m4trace:configure.in:867: -1- AC_DEFINE_TRACE_LITERAL([HAVE_QUAD_T]) +m4trace:configure.in:867: -1- AC_DEFINE_TRACE_LITERAL([quad_t]) +m4trace:configure.in:868: -1- AC_DEFINE_TRACE_LITERAL([intmax_t]) +m4trace:configure.in:869: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t]) +m4trace:configure.in:871: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SOCKLEN_T]) +m4trace:configure.in:871: -1- AC_DEFINE_TRACE_LITERAL([socklen_t]) +m4trace:configure.in:873: -1- AC_DEFINE_TRACE_LITERAL([RLIMTYPE]) +m4trace:configure.in:873: -1- AC_DEFINE_TRACE_LITERAL([RLIMTYPE]) +m4trace:configure.in:876: -2- AC_DEFINE_TRACE_LITERAL([TERMIOS_LDISC]) +m4trace:configure.in:877: -2- AC_DEFINE_TRACE_LITERAL([TERMIO_LDISC]) +m4trace:configure.in:878: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_INO]) +m4trace:configure.in:879: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_FILENO]) +m4trace:configure.in:880: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_NAMLEN]) +m4trace:configure.in:881: -1- AC_DEFINE_TRACE_LITERAL([STRUCT_WINSIZE_IN_SYS_IOCTL]) +m4trace:configure.in:881: -1- AC_DEFINE_TRACE_LITERAL([STRUCT_WINSIZE_IN_TERMIOS]) +m4trace:configure.in:882: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TIMEVAL]) +m4trace:configure.in:883: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_BLOCKS]) +m4trace:configure.in:883: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_BLOCKS], [/* Define to 1 if \`st_blocks' is member of \`struct stat'. */ +#undef HAVE_STRUCT_STAT_ST_BLOCKS]) +m4trace:configure.in:884: -1- AC_STRUCT_TM +m4trace:configure.in:884: -1- AC_DEFINE_TRACE_LITERAL([TM_IN_SYS_TIME]) +m4trace:configure.in:884: -1- AH_OUTPUT([TM_IN_SYS_TIME], [/* Define to 1 if your declares \`struct tm'. */ +#undef TM_IN_SYS_TIME]) +m4trace:configure.in:885: -1- AC_STRUCT_TIMEZONE +m4trace:configure.in:885: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TM_TM_ZONE]) +m4trace:configure.in:885: -1- AH_OUTPUT([HAVE_STRUCT_TM_TM_ZONE], [/* Define to 1 if \`tm_zone' is member of \`struct tm'. */ +#undef HAVE_STRUCT_TM_TM_ZONE]) +m4trace:configure.in:885: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TM_ZONE]) +m4trace:configure.in:885: -1- AH_OUTPUT([HAVE_TM_ZONE], [/* Define to 1 if your \`struct tm' has \`tm_zone'. Deprecated, use + \`HAVE_STRUCT_TM_TM_ZONE' instead. */ +#undef HAVE_TM_ZONE]) +m4trace:configure.in:885: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TZNAME]) +m4trace:configure.in:885: -1- AH_OUTPUT([HAVE_TZNAME], [/* Define to 1 if you don't have \`tm_zone' but do have the external array + \`tzname'. */ +#undef HAVE_TZNAME]) +m4trace:configure.in:886: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMEZONE]) +m4trace:configure.in:889: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRSIGNAL]) +m4trace:configure.in:890: -1- AC_DEFINE_TRACE_LITERAL([OPENDIR_NOT_ROBUST]) +m4trace:configure.in:891: -1- AC_DEFINE_TRACE_LITERAL([ULIMIT_MAXFDS]) +m4trace:configure.in:892: -1- AC_DEFINE_TRACE_LITERAL([CAN_REDEFINE_GETENV]) +m4trace:configure.in:894: -1- AC_DEFINE_TRACE_LITERAL([GETCWD_BROKEN]) +m4trace:configure.in:894: -1- AC_LIBSOURCE([getcwd.c]) +m4trace:configure.in:894: -1- AC_SUBST([LIB@&t@OBJS]) +m4trace:configure.in:896: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SIGSETJMP]) +m4trace:configure.in:897: -1- AC_DEFINE_TRACE_LITERAL([STRCOLL_BROKEN]) +m4trace:configure.in:903: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_PUTENV]) +m4trace:configure.in:905: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_PUTENV]) +m4trace:configure.in:908: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_UNSETENV]) +m4trace:configure.in:910: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_UNSETENV]) +m4trace:configure.in:913: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PRINTF_A_FORMAT]) +m4trace:configure.in:916: -1- AC_DEFINE_TRACE_LITERAL([MUST_REINSTALL_SIGHANDLERS]) +m4trace:configure.in:917: -1- AC_DEFINE_TRACE_LITERAL([JOB_CONTROL_MISSING]) +m4trace:configure.in:918: -1- AC_DEFINE_TRACE_LITERAL([NAMED_PIPES_MISSING]) +m4trace:configure.in:921: -1- AC_DEFINE_TRACE_LITERAL([GWINSZ_IN_SYS_IOCTL]) +m4trace:configure.in:921: -1- AH_OUTPUT([GWINSZ_IN_SYS_IOCTL], [/* Define to 1 if \`TIOCGWINSZ' requires . */ +#undef GWINSZ_IN_SYS_IOCTL]) +m4trace:configure.in:922: -1- AC_DEFINE_TRACE_LITERAL([TIOCSTAT_IN_SYS_IOCTL]) +m4trace:configure.in:923: -1- AC_DEFINE_TRACE_LITERAL([FIONREAD_IN_SYS_IOCTL]) +m4trace:configure.in:925: -1- AC_DEFINE_TRACE_LITERAL([WCONTINUED_BROKEN]) +m4trace:configure.in:928: -1- AC_DEFINE_TRACE_LITERAL([SPEED_T_IN_SYS_TYPES]) +m4trace:configure.in:929: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPW_DECLS]) +m4trace:configure.in:930: -1- AC_DEFINE_TRACE_LITERAL([UNUSABLE_RT_SIGNALS]) +m4trace:configure.in:931: -1- AC_SUBST([SIGLIST_O]) +m4trace:configure.in:935: -1- AC_DEFINE_TRACE_LITERAL([RLIMIT_NEEDS_KERNEL]) +m4trace:configure.in:943: -1- AC_CHECK_LIB([termcap], [tgetent], [bash_cv_termcap_lib=libtermcap], [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo, + [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, + [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, + bash_cv_termcap_lib=gnutermcap)])])]) +m4trace:configure.in:943: -1- AC_CHECK_LIB([tinfo], [tgetent], [bash_cv_termcap_lib=libtinfo], [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, + [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, + bash_cv_termcap_lib=gnutermcap)])]) +m4trace:configure.in:943: -1- AC_CHECK_LIB([curses], [tgetent], [bash_cv_termcap_lib=libcurses], [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, + bash_cv_termcap_lib=gnutermcap)]) +m4trace:configure.in:943: -1- AC_CHECK_LIB([ncurses], [tgetent], [bash_cv_termcap_lib=libncurses], [bash_cv_termcap_lib=gnutermcap]) +m4trace:configure.in:945: -1- AC_SUBST([TERMCAP_LIB]) +m4trace:configure.in:946: -1- AC_SUBST([TERMCAP_DEP]) +m4trace:configure.in:948: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_FD]) +m4trace:configure.in:948: -1- AC_DEFINE_TRACE_LITERAL([DEV_FD_PREFIX]) +m4trace:configure.in:948: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_FD]) +m4trace:configure.in:948: -1- AC_DEFINE_TRACE_LITERAL([DEV_FD_PREFIX]) +m4trace:configure.in:949: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_STDIN]) +m4trace:configure.in:950: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_MAIL_DIRECTORY]) +m4trace:configure.in:957: -1- AC_DEFINE_TRACE_LITERAL([JOB_CONTROL]) +m4trace:configure.in:963: -1- AC_SUBST([JOBS_O]) +m4trace:configure.in:976: -1- AC_DEFINE_TRACE_LITERAL([SVR4_2]) +m4trace:configure.in:977: -1- AC_DEFINE_TRACE_LITERAL([SVR4]) +m4trace:configure.in:978: -1- AC_DEFINE_TRACE_LITERAL([SVR4]) +m4trace:configure.in:979: -1- AC_DEFINE_TRACE_LITERAL([SVR5]) +m4trace:configure.in:994: -1- AC_DEFINE_TRACE_LITERAL([PGRP_PIPE]) +m4trace:configure.in:1041: -1- AC_SUBST([SHOBJ_CC]) +m4trace:configure.in:1042: -1- AC_SUBST([SHOBJ_CFLAGS]) +m4trace:configure.in:1043: -1- AC_SUBST([SHOBJ_LD]) +m4trace:configure.in:1044: -1- AC_SUBST([SHOBJ_LDFLAGS]) +m4trace:configure.in:1045: -1- AC_SUBST([SHOBJ_XLDFLAGS]) +m4trace:configure.in:1046: -1- AC_SUBST([SHOBJ_LIBS]) +m4trace:configure.in:1047: -1- AC_SUBST([SHOBJ_STATUS]) +m4trace:configure.in:1072: -1- AC_SUBST([PROFILE_FLAGS]) +m4trace:configure.in:1074: -1- AC_SUBST([incdir]) +m4trace:configure.in:1075: -1- AC_SUBST([BUILD_DIR]) +m4trace:configure.in:1077: -1- AC_SUBST([YACC]) +m4trace:configure.in:1078: -1- AC_SUBST([AR]) +m4trace:configure.in:1079: -1- AC_SUBST([ARFLAGS]) +m4trace:configure.in:1081: -1- AC_SUBST([BASHVERS]) +m4trace:configure.in:1082: -1- AC_SUBST([RELSTATUS]) +m4trace:configure.in:1083: -1- AC_SUBST([DEBUG]) +m4trace:configure.in:1084: -1- AC_SUBST([MALLOC_DEBUG]) +m4trace:configure.in:1086: -1- AC_SUBST([host_cpu]) +m4trace:configure.in:1087: -1- AC_SUBST([host_vendor]) +m4trace:configure.in:1088: -1- AC_SUBST([host_os]) +m4trace:configure.in:1090: -1- AC_SUBST([LOCAL_LIBS]) +m4trace:configure.in:1091: -1- AC_SUBST([LOCAL_CFLAGS]) +m4trace:configure.in:1092: -1- AC_SUBST([LOCAL_LDFLAGS]) +m4trace:configure.in:1093: -1- AC_SUBST([LOCAL_DEFS]) +m4trace:configure.in:1107: -1- AC_CONFIG_FILES([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \ + lib/intl/Makefile \ + lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile \ + lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in \ + examples/loadables/Makefile examples/loadables/perl/Makefile \ + pathnames.h]) diff --git a/bash-20060316/autom4te.cache/output.0 b/bash-20060316/autom4te.cache/output.0 new file mode 100644 index 000000000..d721800e8 --- /dev/null +++ b/bash-20060316/autom4te.cache/output.0 @@ -0,0 +1,28494 @@ +@%:@! /bin/sh +@%:@ From configure.in for Bash 3.2, version 3.187. +@%:@ Guess values for system-dependent variables and create Makefiles. +@%:@ Generated by GNU Autoconf 2.59 for bash 3.2-devel. +@%:@ +@%:@ Report bugs to . +@%:@ +@%:@ Copyright (C) 2003 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. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# 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 + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + 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 + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + 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=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # 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 before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, 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 + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { 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 sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# 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'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + +# 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` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME='bash' +PACKAGE_TARNAME='bash' +PACKAGE_VERSION='3.2-devel' +PACKAGE_STRING='bash 3.2-devel' +PACKAGE_BUGREPORT='bug-bash@gnu.org' + +ac_unique_file="shell.h" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os EMACS lispdir DEBUGGER_START_FILE TESTSCRIPT PURIFY MALLOC_TARGET MALLOC_SRC MALLOC_LIB MALLOC_LIBRARY MALLOC_LDFLAGS MALLOC_DEP htmldir HELPDIR HELPDIRDEFINE HELPINSTALL HELPSTRINGS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP CROSS_COMPILE SIGNAMES_H SIGNAMES_O CC_FOR_BUILD STATIC_LD CFLAGS_FOR_BUILD CPPFLAGS_FOR_BUILD LDFLAGS_FOR_BUILD RL_VERSION RL_MAJOR RL_MINOR READLINE_LIB READLINE_DEP RL_LIBDIR RL_INCLUDEDIR RL_INCLUDE HISTORY_LIB HISTORY_DEP HIST_LIBDIR TILDE_LIB INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA AR RANLIB ac_ct_RANLIB YACC SET_MAKE MAKE_SHELL SIZE MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE ALLOCA GLIBC21 LIBICONV LTLIBICONV INTLBISON BUILD_INCLUDED_LIBINTL USE_INCLUDED_LIBINTL CATOBJEXT DATADIRNAME INSTOBJEXT GENCAT INTLOBJS INTL_LIBTOOL_SUFFIX_PREFIX INTLLIBS LIBINTL LTLIBINTL POSUB LIB@&t@OBJS INTL_DEP INTL_INC LIBINTL_H SIGLIST_O TERMCAP_LIB TERMCAP_DEP JOBS_O SHOBJ_CC SHOBJ_CFLAGS SHOBJ_LD SHOBJ_LDFLAGS SHOBJ_XLDFLAGS SHOBJ_LIBS SHOBJ_STATUS PROFILE_FLAGS incdir BUILD_DIR ARFLAGS BASHVERS RELSTATUS DEBUG MALLOC_DEBUG LOCAL_LIBS LOCAL_CFLAGS LOCAL_LDFLAGS LOCAL_DEFS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + 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 && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + 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 +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_DEBUGGER_START_FILE_set=${DEBUGGER_START_FILE+set} +ac_env_DEBUGGER_START_FILE_value=$DEBUGGER_START_FILE +ac_cv_env_DEBUGGER_START_FILE_set=${DEBUGGER_START_FILE+set} +ac_cv_env_DEBUGGER_START_FILE_value=$DEBUGGER_START_FILE +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP + +# +# Report the --help message. +# +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 3.2-devel to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --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 + --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 + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of bash 3.2-devel:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-minimal-config a minimal sh-like configuration + --enable-alias enable shell aliases + --enable-arith-for-command + enable arithmetic for command + --enable-array-variables + include shell array variables + --enable-bang-history turn on csh-style history substitution + --enable-brace-expansion + include brace expansion + --enable-command-timing enable the time reserved word and command timing + --enable-cond-command enable the conditional command + --enable-cond-regexp enable extgended regular expression matching in + conditional commands + --enable-debugger enable support for bash debugger + --enable-directory-stack + enable builtins pushd/popd/dirs + --enable-disabled-builtins + allow disabled builtins to still be invoked + --enable-dparen-arithmetic + include ((...)) command + --enable-extended-glob include ksh-style extended pattern matching + --enable-help-builtin include the help builtin + --enable-history turn on command history + --enable-job-control enable job control features + --enable-multibyte enable multibyte characters if OS supports them + --enable-net-redirections + enable /dev/tcp/host/port redirection + --enable-process-substitution + enable process substitution + --enable-progcomp enable programmable completion and the complete + builtin + --enable-prompt-string-decoding + turn on escape character decoding in prompts + --enable-readline turn on command line editing + --enable-restricted enable a restricted shell + --enable-select include select command + --enable-separate-helpfiles + use external files for help builtin documentation + --enable-single-help-strings + store help documentation as a single string to ease + translation + --enable-strict-posix-default + configure bash to be posix-conformant by default + --enable-usg-echo-default + a synonym for --enable-xpg-echo-default + --enable-xpg-echo-default + make the echo builtin expand escape sequences by + default + --enable-mem-scramble scramble memory on calls to malloc and free + --enable-profiling allow profiling with gprof + --enable-static-link link bash statically, for use as a root shell + --disable-largefile omit support for large files + --disable-nls do not use Native Language Support + --disable-rpath do not hardcode runtime library paths + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-lispdir override the default lisp directory + --with-afs if you are running AFS + --with-bash-malloc use the Bash version of malloc + --with-curses use the curses library instead of the termcap + library + --with-gnu-malloc synonym for --with-bash-malloc + --with-installed-readline + use a version of the readline library that is + already installed + --with-purecov configure to postprocess with pure coverage + --with-purify configure to postprocess with purify + --with-gnu-ld assume the C compiler uses GNU ld default=no + --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib + --without-libiconv-prefix don't search for libiconv in includedir and libdir + --with-included-gettext use the GNU gettext library included here + --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib + --without-libintl-prefix don't search for libintl in includedir and libdir + +Some influential environment variables: + DEBUGGER_START_FILE + location of bash debugger initialization file + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF +bash configure 3.2-devel +generated by GNU Autoconf 2.59 + +Copyright (C) 2003 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 0 +fi +exec 5>config.log +cat >&5 <<_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 3.2-devel, which was +generated by GNU Autoconf 2.59. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +@%:@@%:@ --------- @%:@@%:@ +@%:@@%:@ Platform. @%:@@%:@ +@%:@@%:@ --------- @%:@@%:@ + +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` + +/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` +hostinfo = `(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` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +@%:@@%:@ ----------- @%:@@%:@ +@%:@@%:@ Core tests. @%:@@%:@ +@%:@@%:@ ----------- @%:@@%:@ + +_ACEOF + + +# 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_sep= +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=`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_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + 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; } + +# 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: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +@%:@@%:@ ---------------- @%:@@%:@ +@%:@@%:@ Cache variables. @%:@@%:@ +@%:@@%:@ ---------------- @%:@@%:@ +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +@%:@@%:@ ----------------- @%:@@%:@ +@%:@@%:@ Output variables. @%:@@%:@ +@%:@@%:@ ----------------- @%:@@%:@ +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +@%:@@%:@ ------------- @%:@@%:@ +@%:@@%:@ Output files. @%:@@%:@ +@%:@@%:@ ------------- @%:@@%:@ +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +@%:@@%:@ ----------- @%:@@%:@ +@%:@@%:@ confdefs.h. @%:@@%:@ +@%:@@%:@ ----------- @%:@@%:@ +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core && + rm -rf 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 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +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 + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; 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,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +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 + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`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 + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +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 + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in ./support $srcdir/./support" >&5 +echo "$as_me: error: cannot find install-sh or install.sh in ./support $srcdir/./support" >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + + ac_config_headers="$ac_config_headers config.h" + + +BASHVERS=3.2 +RELSTATUS=devel + +case "$RELSTATUS" in +alp*|bet*|dev*|rc*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; +*) DEBUG= MALLOC_DEBUG= ;; +esac + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + + +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-lispdir or --without-lispdir was given. +if test "${with_lispdir+set}" = set; then + withval="$with_lispdir" + lispdir="$withval" + echo "$as_me:$LINENO: checking where .elc files should go" >&5 +echo $ECHO_N "checking where .elc files should go... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $lispdir" >&5 +echo "${ECHO_T}$lispdir" >&6 +else + + # If set to t, that means we are running in a shell under Emacs. + # If you have an Emacs named "t", then use the full path. + test x"$EMACS" = xt && EMACS= + for ac_prog in emacs xemacs +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_EMACS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$EMACS"; then + ac_cv_prog_EMACS="$EMACS" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_EMACS="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +EMACS=$ac_cv_prog_EMACS +if test -n "$EMACS"; then + echo "$as_me:$LINENO: result: $EMACS" >&5 +echo "${ECHO_T}$EMACS" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$EMACS" && break +done +test -n "$EMACS" || EMACS="no" + + if test $EMACS != "no"; then + if test x${lispdir+set} != xset; then + echo "$as_me:$LINENO: checking where .elc files should go" >&5 +echo $ECHO_N "checking where .elc files should go... $ECHO_C" >&6 +if test "${am_cv_lispdir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + am_cv_lispdir=`$EMACS -batch -q -eval '(while load-path (princ (concat (car load-path) "\n")) (setq load-path (cdr load-path)))' | sed -n -e 's,/$,,' -e '/.*\/lib\/\(x\?emacs\/site-lisp\)$/{s,,${libdir}/\1,;p;q;}' -e '/.*\/share\/\(x\?emacs\/site-lisp\)$/{s,,${datadir}/\1,;p;q;}'` + if test -z "$am_cv_lispdir"; then + am_cv_lispdir='${datadir}/emacs/site-lisp' + fi + +fi +echo "$as_me:$LINENO: result: $am_cv_lispdir" >&5 +echo "${ECHO_T}$am_cv_lispdir" >&6 + lispdir="$am_cv_lispdir" + fi + fi + +fi; + + + + + +# Check whether --with-afs or --without-afs was given. +if test "${with_afs+set}" = set; then + withval="$with_afs" + opt_afs=$withval +fi; + +# Check whether --with-bash-malloc or --without-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 or --without-curses was given. +if test "${with_curses+set}" = set; then + withval="$with_curses" + opt_curses=$withval +fi; + +# Check whether --with-gnu-malloc or --without-gnu-malloc was given. +if test "${with_gnu_malloc+set}" = set; then + withval="$with_gnu_malloc" + opt_bash_malloc=$withval +fi; + +# Check whether --with-installed-readline or --without-installed-readline was given. +if test "${with_installed_readline+set}" = set; then + withval="$with_installed_readline" + opt_with_installed_readline=$withval +fi; + +# Check whether --with-purecov or --without-purecov was given. +if test "${with_purecov+set}" = set; then + withval="$with_purecov" + opt_purecov=$withval +fi; + +# Check whether --with-purify or --without-purify was given. +if test "${with_purify+set}" = set; then + withval="$with_purify" + opt_purify=$withval +fi; + +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)' + + cat >>confdefs.h <<\_ACEOF +@%:@define USING_BASH_MALLOC 1 +_ACEOF + +else + MALLOC_LIB= + MALLOC_LIBRARY= + MALLOC_LDFLAGS= + MALLOC_DEP= +fi + +if test "$opt_purify" = yes; then + PURIFY="purify " + cat >>confdefs.h <<\_ACEOF +@%:@define DISABLE_MALLOC_WRAPPERS 1 +_ACEOF + +else + PURIFY= +fi + +if test "$opt_purecov" = yes; then + PURIFY="${PURIFY}purecov" +fi + +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=${ac_default_prefix}/lib/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_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_static_link=no +opt_profiling=no + +# Check whether --enable-minimal-config or --disable-minimal-config was given. +if test "${enable_minimal_config+set}" = set; then + enableval="$enable_minimal_config" + opt_minimal_config=$enableval +fi; + +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 +fi + +# Check whether --enable-alias or --disable-alias was given. +if test "${enable_alias+set}" = set; then + enableval="$enable_alias" + opt_alias=$enableval +fi; +# Check whether --enable-arith-for-command or --disable-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; +# Check whether --enable-array-variables or --disable-array-variables was given. +if test "${enable_array_variables+set}" = set; then + enableval="$enable_array_variables" + opt_array_variables=$enableval +fi; +# Check whether --enable-bang-history or --disable-bang-history was given. +if test "${enable_bang_history+set}" = set; then + enableval="$enable_bang_history" + opt_bang_history=$enableval +fi; +# Check whether --enable-brace-expansion or --disable-brace-expansion was given. +if test "${enable_brace_expansion+set}" = set; then + enableval="$enable_brace_expansion" + opt_brace_expansion=$enableval +fi; +# Check whether --enable-command-timing or --disable-command-timing was given. +if test "${enable_command_timing+set}" = set; then + enableval="$enable_command_timing" + opt_command_timing=$enableval +fi; +# Check whether --enable-cond-command or --disable-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 or --disable-cond-regexp was given. +if test "${enable_cond_regexp+set}" = set; then + enableval="$enable_cond_regexp" + opt_cond_regexp=$enableval +fi; +# Check whether --enable-debugger or --disable-debugger was given. +if test "${enable_debugger+set}" = set; then + enableval="$enable_debugger" + opt_debugger=$enableval +fi; +# Check whether --enable-directory-stack or --disable-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 or --disable-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 or --disable-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 or --disable-extended-glob was given. +if test "${enable_extended_glob+set}" = set; then + enableval="$enable_extended_glob" + opt_extended_glob=$enableval +fi; +# Check whether --enable-help-builtin or --disable-help-builtin was given. +if test "${enable_help_builtin+set}" = set; then + enableval="$enable_help_builtin" + opt_help=$enableval +fi; +# Check whether --enable-history or --disable-history was given. +if test "${enable_history+set}" = set; then + enableval="$enable_history" + opt_history=$enableval +fi; +# Check whether --enable-job-control or --disable-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 or --disable-multibyte was given. +if test "${enable_multibyte+set}" = set; then + enableval="$enable_multibyte" + opt_multibyte=$enableval +fi; +# Check whether --enable-net-redirections or --disable-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 or --disable-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 or --disable-progcomp was given. +if test "${enable_progcomp+set}" = set; then + enableval="$enable_progcomp" + opt_progcomp=$enableval +fi; +# Check whether --enable-prompt-string-decoding or --disable-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 or --disable-readline was given. +if test "${enable_readline+set}" = set; then + enableval="$enable_readline" + opt_readline=$enableval +fi; +# Check whether --enable-restricted or --disable-restricted was given. +if test "${enable_restricted+set}" = set; then + enableval="$enable_restricted" + opt_restricted=$enableval +fi; +# Check whether --enable-select or --disable-select was given. +if test "${enable_select+set}" = set; then + enableval="$enable_select" + opt_select=$enableval +fi; +# Check whether --enable-separate-helpfiles or --disable-separate-helpfiles was given. +if test "${enable_separate_helpfiles+set}" = set; then + enableval="$enable_separate_helpfiles" + opt_separate_help=$enableval +fi; +# Check whether --enable-single-help-strings or --disable-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 or --disable-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 or --disable-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 or --disable-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 or --disable-mem-scramble was given. +if test "${enable_mem_scramble+set}" = set; then + enableval="$enable_mem_scramble" + opt_memscramble=$enableval +fi; +# Check whether --enable-profiling or --disable-profiling was given. +if test "${enable_profiling+set}" = set; then + enableval="$enable_profiling" + opt_profiling=$enableval +fi; +# Check whether --enable-static-link or --disable-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 +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 + +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 + +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 + +fi +if test $opt_help = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define HELP_BUILTIN 1 +_ACEOF + +fi +if test $opt_array_variables = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define ARRAY_VARS 1 +_ACEOF + +fi +if test $opt_dparen_arith = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define DPAREN_ARITHMETIC 1 +_ACEOF + +fi +if test $opt_brace_expansion = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define BRACE_EXPANSION 1 +_ACEOF + +fi +if test $opt_disabled_builtins = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define DISABLED_BUILTINS 1 +_ACEOF + +fi +if test $opt_command_timing = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define COMMAND_TIMING 1 +_ACEOF + +fi +if test $opt_xpg_echo = yes ; then +cat >>confdefs.h <<\_ACEOF +@%:@define DEFAULT_ECHO_TO_XPG 1 +_ACEOF + +fi +if test $opt_strict_posix = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define STRICT_POSIX 1 +_ACEOF + +fi +if test $opt_extended_glob = yes ; then +cat >>confdefs.h <<\_ACEOF +@%:@define EXTENDED_GLOB 1 +_ACEOF + +fi +if test $opt_cond_command = yes ; then +cat >>confdefs.h <<\_ACEOF +@%:@define COND_COMMAND 1 +_ACEOF + +fi +if test $opt_cond_regexp = yes ; then +cat >>confdefs.h <<\_ACEOF +@%:@define COND_REGEXP 1 +_ACEOF + +fi +if test $opt_arith_for_command = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define ARITH_FOR_COMMAND 1 +_ACEOF + +fi +if test $opt_net_redirs = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define NETWORK_REDIRECTIONS 1 +_ACEOF + +fi +if test $opt_progcomp = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define PROGRAMMABLE_COMPLETION 1 +_ACEOF + +fi +if test $opt_multibyte = no; then +cat >>confdefs.h <<\_ACEOF +@%:@define NO_MULTIBYTE_SUPPORT 1 +_ACEOF + +fi +if test $opt_debugger = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define DEBUGGER 1 +_ACEOF + +fi + +if test $opt_memscramble = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define MEMSCRAMBLE 1 +_ACEOF + +fi + +if test "$opt_minimal_config" = yes; then + TESTSCRIPT=run-minimal +else + TESTSCRIPT=run-all +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' +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +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_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" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $@%:@ != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + 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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out 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. +echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + 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 + { { 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 +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 +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; 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 +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +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 +#include +/* 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); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std1 is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std1. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +@%:@ifndef __cplusplus + choke me +@%:@endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +@%:@include +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f 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 +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +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 + + + + + echo "$as_me:$LINENO: checking for strerror in -lcposix" >&5 +echo $ECHO_N "checking for strerror in -lcposix... $ECHO_C" >&6 +if test "${ac_cv_lib_cposix_strerror+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strerror (); +int +main () +{ +strerror (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_cposix_strerror=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_cposix_strerror=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_cposix_strerror" >&5 +echo "${ECHO_T}$ac_cv_lib_cposix_strerror" >&6 +if test $ac_cv_lib_cposix_strerror = yes; then + LIBS="$LIBS -lcposix" +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 +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&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 + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # 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 +/* end confdefs.h. */ +@%:@ifdef __STDC__ +@%:@ include +@%:@else +@%:@ include +@%:@endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent 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 +/* end confdefs.h. */ +@%:@include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + 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 + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # 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 +/* end confdefs.h. */ +@%:@ifdef __STDC__ +@%:@ include +@%:@else +@%:@ include +@%:@endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent 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 +/* end confdefs.h. */ +@%:@include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + 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 + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +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 + + +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f 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 +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +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 +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +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 + : +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 ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +@%:@define STDC_HEADERS 1 +_ACEOF + +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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +if test "${ac_cv_header_minix_config_h+set}" = set; then + echo "$as_me:$LINENO: checking for minix/config.h" >&5 +echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6 +if test "${ac_cv_header_minix_config_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 +echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking minix/config.h usability" >&5 +echo $ECHO_N "checking minix/config.h usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking minix/config.h presence" >&5 +echo $ECHO_N "checking minix/config.h presence... $ECHO_C" >&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 echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: minix/config.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: minix/config.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: minix/config.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: minix/config.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: minix/config.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for minix/config.h" >&5 +echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6 +if test "${ac_cv_header_minix_config_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_minix_config_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 +echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6 + +fi +if test $ac_cv_header_minix_config_h = 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 + + +cat >>confdefs.h <<\_ACEOF +@%:@define _MINIX 1 +_ACEOF + +fi + + +# Check whether --enable-largefile or --disable-largefile was given. +if test "${enable_largefile+set}" = set; then + enableval="$enable_largefile" + +fi; +if test "$enable_largefile" != no; then + + echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5 +echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_largefile_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + 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 +/* end confdefs.h. */ +@%:@include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext + CC="$CC -n32" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_largefile_CC=' -n32'; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5 +echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6 + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_file_offset_bits+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + while :; do + ac_cv_sys_file_offset_bits=no + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +@%:@include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f 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 +/* end confdefs.h. */ +@%:@define _FILE_OFFSET_BITS 64 +@%:@include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_file_offset_bits=64; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + break +done +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5 +echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6 +if test "$ac_cv_sys_file_offset_bits" != no; then + +cat >>confdefs.h <<_ACEOF +@%:@define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits +_ACEOF + +fi +rm -f conftest* + echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5 +echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_large_files+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + while :; do + ac_cv_sys_large_files=no + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +@%:@include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f 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 +/* end confdefs.h. */ +@%:@define _LARGE_FILES 1 +@%:@include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_large_files=1; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + break +done +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5 +echo "${ECHO_T}$ac_cv_sys_large_files" >&6 +if test "$ac_cv_sys_large_files" != no; then + +cat >>confdefs.h <<_ACEOF +@%:@define _LARGE_FILES $ac_cv_sys_large_files +_ACEOF + +fi +rm -f conftest* +fi + + + +SIGNAMES_O= +SIGNAMES_H=lsignames.h + + + +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' + +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 + +test -n "$GCC" && test -n "$auto_cflags" && CFLAGS="$CFLAGS -O2" + +if test "$opt_profiling" = "yes"; then + PROFILE_FLAGS=-pg + case "$host_os" in + solaris2*) ;; + *) opt_static_link=yes ;; + esac + DEBUG= MALLOC_DEBUG= +fi + +if test "$opt_static_link" = yes; then + # 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" + case "$host_os" in + solaris2*) ;; + *) LDFLAGS="$LDFLAGS -static" ;; # XXX experimental + esac + fi +fi + +if test "X$cross_compiling" = "Xno"; then + CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-"$CPPFLAGS"} + LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'} +else + CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-""} + LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-""} +fi + +test -z "$CFLAGS_FOR_BUILD" && CFLAGS_FOR_BUILD="-g" + + + + + + + + + + +if test $ac_cv_c_compiler_gnu = yes; then + echo "$as_me:$LINENO: checking whether $CC needs -traditional" >&5 +echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6 +if test "${ac_cv_prog_gcc_traditional+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ +#include +Autoconf TIOCGETP +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "$ac_pattern" >/dev/null 2>&1; then + ac_cv_prog_gcc_traditional=yes +else + ac_cv_prog_gcc_traditional=no +fi +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 +/* end confdefs.h. */ +#include +Autoconf TCGETA +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "$ac_pattern" >/dev/null 2>&1; then + ac_cv_prog_gcc_traditional=yes +fi +rm -f conftest* + + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_gcc_traditional" >&5 +echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6 + if test $ac_cv_prog_gcc_traditional = yes; then + CC="$CC -traditional" + fi +fi + + + +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 + + +if test "X$bash_cv_termcap_lib" = "X"; then +_bash_needmsg=yes +else +echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 +_bash_needmsg= +fi +if test "${bash_cv_termcap_lib+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for tgetent" >&5 +echo $ECHO_N "checking for tgetent... $ECHO_C" >&6 +if test "${ac_cv_func_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = tgetent; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != tgetent; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_tgetent" >&5 +echo "${ECHO_T}$ac_cv_func_tgetent" >&6 +if test $ac_cv_func_tgetent = yes; then + bash_cv_termcap_lib=libc +else + echo "$as_me:$LINENO: checking for tgetent in -ltermcap" >&5 +echo $ECHO_N "checking for tgetent in -ltermcap... $ECHO_C" >&6 +if test "${ac_cv_lib_termcap_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_termcap_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_termcap_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_termcap_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_termcap_tgetent" >&6 +if test $ac_cv_lib_termcap_tgetent = yes; then + bash_cv_termcap_lib=libtermcap +else + echo "$as_me:$LINENO: checking for tgetent in -ltinfo" >&5 +echo $ECHO_N "checking for tgetent in -ltinfo... $ECHO_C" >&6 +if test "${ac_cv_lib_tinfo_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_tinfo_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_tinfo_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_tinfo_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_tinfo_tgetent" >&6 +if test $ac_cv_lib_tinfo_tgetent = yes; then + bash_cv_termcap_lib=libtinfo +else + echo "$as_me:$LINENO: checking for tgetent in -lcurses" >&5 +echo $ECHO_N "checking for tgetent in -lcurses... $ECHO_C" >&6 +if test "${ac_cv_lib_curses_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_curses_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_curses_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_curses_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_curses_tgetent" >&6 +if test $ac_cv_lib_curses_tgetent = yes; then + bash_cv_termcap_lib=libcurses +else + echo "$as_me:$LINENO: checking for tgetent in -lncurses" >&5 +echo $ECHO_N "checking for tgetent in -lncurses... $ECHO_C" >&6 +if test "${ac_cv_lib_ncurses_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_ncurses_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_ncurses_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_ncurses_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_ncurses_tgetent" >&6 +if test $ac_cv_lib_ncurses_tgetent = yes; then + bash_cv_termcap_lib=libncurses +else + bash_cv_termcap_lib=gnutermcap +fi + +fi + +fi + +fi + +fi + +fi + +if test "X$_bash_needmsg" = "Xyes"; then +echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: using $bash_cv_termcap_lib" >&5 +echo "${ECHO_T}using $bash_cv_termcap_lib" >&6 +if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then +LDFLAGS="$LDFLAGS -L./lib/termcap" +TERMCAP_LIB="./lib/termcap/libtermcap.a" +TERMCAP_DEP="./lib/termcap/libtermcap.a" +elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then +TERMCAP_LIB=-ltermcap +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libtinfo; then +TERMCAP_LIB=-ltinfo +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libncurses; then +TERMCAP_LIB=-lncurses +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libc; then +TERMCAP_LIB= +TERMCAP_DEP= +else +TERMCAP_LIB=-lcurses +TERMCAP_DEP= +fi + + + + +echo "$as_me:$LINENO: checking version of installed readline library" >&5 +echo $ECHO_N "checking version of installed readline library... $ECHO_C" >&6 + +# What a pain in the ass this is. + +# save cpp and ld options +_save_CFLAGS="$CFLAGS" +_save_LDFLAGS="$LDFLAGS" +_save_LIBS="$LIBS" + +# Don't set ac_cv_rl_prefix if the caller has already assigned a value. This +# allows the caller to do something like $_rl_prefix=$withval if the user +# specifies --with-installed-readline=PREFIX as an argument to configure + +if test -z "$ac_cv_rl_prefix"; then +test "x$prefix" = xNONE && ac_cv_rl_prefix=$ac_default_prefix || ac_cv_rl_prefix=${prefix} +fi + +eval ac_cv_rl_includedir=${ac_cv_rl_prefix}/include +eval ac_cv_rl_libdir=${ac_cv_rl_prefix}/lib + +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 + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + 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 +/* end confdefs.h. */ + +#include +#include + +extern int rl_gnu_readline_p; + +main() +{ + FILE *fp; + fp = fopen("conftest.rlv", "w"); + if (fp == 0) + exit(1); + if (rl_gnu_readline_p != 1) + fprintf(fp, "0.0\n"); + else + fprintf(fp, "%s\n", rl_library_version ? rl_library_version : "0.0"); + fclose(fp); + exit(0); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_rl_version=`cat conftest.rlv` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_rl_version='0.0' +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + + +CFLAGS="$_save_CFLAGS" +LDFLAGS="$_save_LDFLAGS" +LIBS="$_save_LIBS" + +RL_MAJOR=0 +RL_MINOR=0 + +# ( +case "$ac_cv_rl_version" in +2*|3*|4*|5*|6*|7*|8*|9*) + RL_MAJOR=`echo $ac_cv_rl_version | sed 's:\..*$::'` + RL_MINOR=`echo $ac_cv_rl_version | sed -e 's:^.*\.::' -e 's:[a-zA-Z]*$::'` + ;; +esac + +# ((( +case $RL_MAJOR in +[0-9][0-9]) _RL_MAJOR=$RL_MAJOR ;; +[0-9]) _RL_MAJOR=0$RL_MAJOR ;; +*) _RL_MAJOR=00 ;; +esac + +# ((( +case $RL_MINOR in +[0-9][0-9]) _RL_MINOR=$RL_MINOR ;; +[0-9]) _RL_MINOR=0$RL_MINOR ;; +*) _RL_MINOR=00 ;; +esac + +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 + { echo "$as_me:$LINENO: WARNING: Could not test version of installed readline library." >&5 +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 + echo "$as_me:$LINENO: result: $ac_cv_rl_version" >&5 +echo "${ECHO_T}$ac_cv_rl_version" >&6 +else + + +cat >>confdefs.h <<_ACEOF +@%:@define RL_READLINE_VERSION $RL_VERSION +_ACEOF + + +cat >>confdefs.h <<_ACEOF +@%:@define RL_VERSION_MAJOR $RL_MAJOR +_ACEOF + + +cat >>confdefs.h <<_ACEOF +@%:@define RL_VERSION_MINOR $RL_MINOR +_ACEOF + + + + + + +# 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 + +echo "$as_me:$LINENO: result: $ac_cv_rl_version" >&5 +echo "${ECHO_T}$ac_cv_rl_version" >&6 + +fi + + + case "$ac_cv_rl_version" in + 5*|6*|7*|8*|9*) ;; + *) opt_with_installed_readline=no + { echo "$as_me:$LINENO: WARNING: installed readline library is too old to be linked with bash" >&5 +echo "$as_me: WARNING: installed readline library is too old to be linked with bash" >&2;} + { echo "$as_me:$LINENO: WARNING: using private bash version" >&5 +echo "$as_me: WARNING: using private bash version" >&2;} + ;; + esac +fi + +TILDE_LIB=-ltilde +if test $opt_readline = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define READLINE 1 +_ACEOF + + 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 + darwin8*) 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 + cat >>confdefs.h <<\_ACEOF +@%:@define HISTORY 1 +_ACEOF + + fi + if test $opt_bang_history = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define BANG_HISTORY 1 +_ACEOF + + 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 + darwin8*) HISTORY_LIB='${HISTORY_LIBRARY}' ;; + *) HISTORY_LIB=-lhistory ;; + esac + fi +else + HIST_LIBDIR='$(dot)/$(LIBSUBDIR)/readline' + HISTORY_LIB= HISTORY_DEP= +fi + + + + + + + + + + + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +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/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_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. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar" +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + echo "$as_me:$LINENO: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_YACC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$YACC"; then + ac_cv_prog_YACC="$YACC" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_YACC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +YACC=$ac_cv_prog_YACC +if test -n "$YACC"; then + echo "$as_me:$LINENO: result: $YACC" >&5 +echo "${ECHO_T}$YACC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$YACC" && break +done +test -n "$YACC" || YACC="yacc" + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="$(MAKE)"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + + +case "$host_os" in +opennt*|interix*) MAKE_SHELL="$INTERIX_ROOT/bin/sh" ;; +*) MAKE_SHELL=/bin/sh ;; +esac + + +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 + + +cat >>confdefs.h <<\_ACEOF +@%:@define _GNU_SOURCE 1 +_ACEOF + + +echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 +if test "${ac_cv_c_const+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +/* FIXME: Include the comments suggested by Paul. */ +#ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; + const charset x; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *ccp; + char **p; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + ccp = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++ccp; + p = (char**) ccp; + ccp = (char const *const *) p; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this 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; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + } +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_const=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_const=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +echo "${ECHO_T}$ac_cv_c_const" >&6 +if test $ac_cv_c_const = no; then + +cat >>confdefs.h <<\_ACEOF +@%:@define const +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for inline" >&5 +echo $ECHO_N "checking for inline... $ECHO_C" >&6 +if test "${ac_cv_c_inline+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif + +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_inline=$ac_kw; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 +echo "${ECHO_T}$ac_cv_c_inline" >&6 + + +case $ac_cv_c_inline in + inline | yes) ;; + *) + case $ac_cv_c_inline in + no) ac_val=;; + *) ac_val=$ac_cv_c_inline;; + esac + cat >>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; +esac + +echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 +echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 +if test "${ac_cv_c_bigendian+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # 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 +/* end confdefs.h. */ +#include +#include + +int +main () +{ +#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN + bogus endian macros +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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 +/* end confdefs.h. */ +#include +#include + +int +main () +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_bigendian=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_bigendian=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +# It does not; compile a test program. +if test "$cross_compiling" = yes; then + # try to guess the endianness by grepping values into an object file + ac_cv_c_bigendian=unknown + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; +short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; +void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } +short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; +short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; +void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } +int +main () +{ + _ascii (); _ebcdic (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then + ac_cv_c_bigendian=yes +fi +if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f 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 +/* end confdefs.h. */ +int +main () +{ + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long l; + char c[sizeof (long)]; + } u; + u.l = 1; + exit (u.c[sizeof (long) - 1] == 1); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_bigendian=no +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_c_bigendian=yes +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 +echo "${ECHO_T}$ac_cv_c_bigendian" >&6 +case $ac_cv_c_bigendian in + yes) + +cat >>confdefs.h <<\_ACEOF +@%:@define WORDS_BIGENDIAN 1 +_ACEOF + ;; + no) + ;; + *) + { { echo "$as_me:$LINENO: error: unknown endianness +presetting ac_cv_c_bigendian=no (or yes) will help" >&5 +echo "$as_me: error: unknown endianness +presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} + { (exit 1); exit 1; }; } ;; +esac + +echo "$as_me:$LINENO: checking for preprocessor stringizing operator" >&5 +echo $ECHO_N "checking for preprocessor stringizing operator... $ECHO_C" >&6 +if test "${ac_cv_c_stringize+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 x(y) #y + +char *s = x(teststring); +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "@%:@teststring" >/dev/null 2>&1; then + ac_cv_c_stringize=no +else + ac_cv_c_stringize=yes +fi +rm -f conftest* + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_stringize" >&5 +echo "${ECHO_T}$ac_cv_c_stringize" >&6 +if test $ac_cv_c_stringize = yes; then + +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_STRINGIZE 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for working long double with more range or precision than double" >&5 +echo $ECHO_N "checking for working long double with more range or precision than double... $ECHO_C" >&6 +if test "${ac_cv_c_long_double+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + long double foo = 0.0; +int +main () +{ +static int test_array @<:@1 - 2 * !(/* Using '|' rather than '||' catches a GCC 2.95.2 x86 bug. */ + (DBL_MAX < LDBL_MAX) | (LDBL_EPSILON < DBL_EPSILON) + | (DBL_MAX_EXP < LDBL_MAX_EXP) | (DBL_MANT_DIG < LDBL_MANT_DIG))@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_long_double=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_long_double=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_long_double" >&5 +echo "${ECHO_T}$ac_cv_c_long_double" >&6 +if test $ac_cv_c_long_double = yes; then + +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_LONG_DOUBLE 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for function prototypes" >&5 +echo $ECHO_N "checking for function prototypes... $ECHO_C" >&6 +if test "$ac_cv_prog_cc_stdc" != no; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +cat >>confdefs.h <<\_ACEOF +@%:@define PROTOTYPES 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +@%:@define __PROTOTYPES 1 +_ACEOF + +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + +echo "$as_me:$LINENO: checking whether char is unsigned" >&5 +echo $ECHO_N "checking whether char is unsigned... $ECHO_C" >&6 +if test "${ac_cv_c_char_unsigned+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 int test_array @<:@1 - 2 * !(((char) -1) < 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_char_unsigned=no +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_char_unsigned=yes +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_char_unsigned" >&5 +echo "${ECHO_T}$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 + +fi + + + + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + case "$ac_aux_dir" in + /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; + *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; + esac + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + + + + echo "$as_me:$LINENO: checking whether NLS is requested" >&5 +echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 + # Check whether --enable-nls or --disable-nls was given. +if test "${enable_nls+set}" = set; then + enableval="$enable_nls" + USE_NLS=$enableval +else + USE_NLS=yes +fi; + echo "$as_me:$LINENO: result: $USE_NLS" >&5 +echo "${ECHO_T}$USE_NLS" >&6 + + + + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$MSGFMT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + echo "$as_me:$LINENO: result: $MSGFMT" >&5 +echo "${ECHO_T}$MSGFMT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_GMSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + *) + 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT + +if test -n "$GMSGFMT"; then + echo "$as_me:$LINENO: result: $GMSGFMT" >&5 +echo "${ECHO_T}$GMSGFMT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_XGETTEXT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$XGETTEXT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && + (if $ac_dir/$ac_word --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 + ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + echo "$as_me:$LINENO: result: $XGETTEXT" >&5 +echo "${ECHO_T}$XGETTEXT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + rm -f messages.po + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_MSGMERGE+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$MSGMERGE" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then + ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" + ;; +esac +fi +MSGMERGE="$ac_cv_path_MSGMERGE" +if test "$MSGMERGE" != ":"; then + echo "$as_me:$LINENO: result: $MSGMERGE" >&5 +echo "${ECHO_T}$MSGMERGE" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + if test "$GMSGFMT" != ":"; then + if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && + (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + : ; + else + GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` + echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 +echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6 + GMSGFMT=":" + fi + fi + + if test "$XGETTEXT" != ":"; then + if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && + (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 + echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 +echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 + XGETTEXT=":" + fi + rm -f messages.po + fi + + ac_config_commands="$ac_config_commands default-1" + + +echo "$as_me:$LINENO: checking for off_t" >&5 +echo $ECHO_N "checking for off_t... $ECHO_C" >&6 +if test "${ac_cv_type_off_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((off_t *) 0) + return 0; +if (sizeof (off_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_off_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_off_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 +echo "${ECHO_T}$ac_cv_type_off_t" >&6 +if test $ac_cv_type_off_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define off_t long +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for size_t" >&5 +echo $ECHO_N "checking for size_t... $ECHO_C" >&6 +if test "${ac_cv_type_size_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((size_t *) 0) + return 0; +if (sizeof (size_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_size_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_size_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +echo "${ECHO_T}$ac_cv_type_size_t" >&6 +if test $ac_cv_type_size_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define size_t unsigned +_ACEOF + +fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +echo "$as_me:$LINENO: checking for working alloca.h" >&5 +echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 +if test "${ac_cv_working_alloca_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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)); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_working_alloca_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_working_alloca_h=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +echo "${ECHO_T}$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 + +echo "$as_me:$LINENO: checking for alloca" >&5 +echo $ECHO_N "checking for alloca... $ECHO_C" >&6 +if test "${ac_cv_func_alloca_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +# if 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); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_alloca_works=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_alloca_works=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +echo "${ECHO_T}$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=alloca.$ac_objext + +cat >>confdefs.h <<\_ACEOF +@%:@define C_ALLOCA 1 +_ACEOF + + +echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 +if test "${ac_cv_os_cray+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +echo "${ECHO_T}$ac_cv_os_cray" >&6 +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + +cat >>confdefs.h <<_ACEOF +@%:@define CRAY_STACKSEG_END $ac_func +_ACEOF + + break +fi + + done +fi + +echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 +if test "${ac_cv_c_stack_direction+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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. */ +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 () +{ + exit (find_stack_direction () < 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_stack_direction=1 +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_c_stack_direction=-1 +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 + +cat >>confdefs.h <<_ACEOF +@%:@define STACK_DIRECTION $ac_cv_c_stack_direction +_ACEOF + + +fi + + + +for ac_header in stdlib.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_func in getpagesize +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +echo "$as_me:$LINENO: checking for working mmap" >&5 +echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 +if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 !STDC_HEADERS && !HAVE_STDLIB_H +char *malloc (); +#endif + +/* This mess was copied from the GNU getpagesize.h. */ +#if !HAVE_GETPAGESIZE +/* Assume that all systems that can run configure have sys/param.h. */ +# if !HAVE_SYS_PARAM_H +# define HAVE_SYS_PARAM_H 1 +# endif + +# ifdef _SC_PAGESIZE +# define getpagesize() sysconf(_SC_PAGESIZE) +# else /* no _SC_PAGESIZE */ +# if 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) + exit (1); + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) + exit (1); + if (write (fd, data, pagesize) != pagesize) + exit (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) + exit (1); + data2 = (char *) malloc (2 * pagesize); + if (!data2) + exit (1); + data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1); + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + exit (1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + exit (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) + exit (1); + if (read (fd, data3, pagesize) != pagesize) + exit (1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + exit (1); + close (fd); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mmap_fixed_mapped=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +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 -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 +echo "${ECHO_T}$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 + + + echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5 +echo $ECHO_N "checking whether we are using the GNU C Library 2.1 or newer... $ECHO_C" >&6 +if test "${ac_cv_gnu_library_2_1+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Lucky GNU user" >/dev/null 2>&1; then + ac_cv_gnu_library_2_1=yes +else + ac_cv_gnu_library_2_1=no +fi +rm -f conftest* + + + +fi +echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2_1" >&5 +echo "${ECHO_T}$ac_cv_gnu_library_2_1" >&6 + + GLIBC21="$ac_cv_gnu_library_2_1" + + + + + echo "$as_me:$LINENO: checking whether integer division by zero raises SIGFPE" >&5 +echo $ECHO_N "checking whether integer division by zero raises SIGFPE... $ECHO_C" >&6 +if test "${gt_cv_int_divbyzero_sigfpe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + if test "$cross_compiling" = yes; then + + # Guess based on the CPU. + case "$host_cpu" in + alpha* | i3456786 | m68k | s390*) + gt_cv_int_divbyzero_sigfpe="guessing yes";; + *) + gt_cv_int_divbyzero_sigfpe="guessing no";; + esac + +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 + +static void +#ifdef __cplusplus +sigfpe_handler (int sig) +#else +sigfpe_handler (sig) int sig; +#endif +{ + /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ + exit (sig != SIGFPE); +} + +int x = 1; +int y = 0; +int z; +int nan; + +int main () +{ + signal (SIGFPE, sigfpe_handler); +/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ +#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) + signal (SIGTRAP, sigfpe_handler); +#endif +/* Linux/SPARC yields signal SIGILL. */ +#if defined (__sparc__) && defined (__linux__) + signal (SIGILL, sigfpe_handler); +#endif + + z = x / y; + nan = y / y; + exit (1); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_int_divbyzero_sigfpe=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +gt_cv_int_divbyzero_sigfpe=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + +fi +echo "$as_me:$LINENO: result: $gt_cv_int_divbyzero_sigfpe" >&5 +echo "${ECHO_T}$gt_cv_int_divbyzero_sigfpe" >&6 + case "$gt_cv_int_divbyzero_sigfpe" in + *yes) value=1;; + *) value=0;; + esac + +cat >>confdefs.h <<_ACEOF +@%:@define INTDIV0_RAISES_SIGFPE $value +_ACEOF + + + + echo "$as_me:$LINENO: checking for inttypes.h" >&5 +echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 +if test "${jm_ac_cv_header_inttypes_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +uintmax_t i = (uintmax_t) -1; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + jm_ac_cv_header_inttypes_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +jm_ac_cv_header_inttypes_h=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $jm_ac_cv_header_inttypes_h" >&5 +echo "${ECHO_T}$jm_ac_cv_header_inttypes_h" >&6 + if test $jm_ac_cv_header_inttypes_h = yes; then + +cat >>confdefs.h <<_ACEOF +@%:@define HAVE_INTTYPES_H_WITH_UINTMAX 1 +_ACEOF + + fi + + + echo "$as_me:$LINENO: checking for stdint.h" >&5 +echo $ECHO_N "checking for stdint.h... $ECHO_C" >&6 +if test "${jm_ac_cv_header_stdint_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +uintmax_t i = (uintmax_t) -1; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + jm_ac_cv_header_stdint_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +jm_ac_cv_header_stdint_h=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $jm_ac_cv_header_stdint_h" >&5 +echo "${ECHO_T}$jm_ac_cv_header_stdint_h" >&6 + if test $jm_ac_cv_header_stdint_h = yes; then + +cat >>confdefs.h <<_ACEOF +@%:@define HAVE_STDINT_H_WITH_UINTMAX 1 +_ACEOF + + fi + + + echo "$as_me:$LINENO: checking for unsigned long long" >&5 +echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6 +if test "${ac_cv_type_unsigned_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_unsigned_long_long=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_unsigned_long_long=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long" >&5 +echo "${ECHO_T}$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 + + fi + + + + + if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then + + test $ac_cv_type_unsigned_long_long = yes \ + && ac_type='unsigned long long' \ + || ac_type='unsigned long' + +cat >>confdefs.h <<_ACEOF +@%:@define uintmax_t $ac_type +_ACEOF + + else + +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_UINTMAX_T 1 +_ACEOF + + fi + + + echo "$as_me:$LINENO: checking for inttypes.h" >&5 +echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 +if test "${gt_cv_header_inttypes_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_header_inttypes_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_header_inttypes_h=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $gt_cv_header_inttypes_h" >&5 +echo "${ECHO_T}$gt_cv_header_inttypes_h" >&6 + if test $gt_cv_header_inttypes_h = yes; then + +cat >>confdefs.h <<_ACEOF +@%:@define HAVE_INTTYPES_H 1 +_ACEOF + + fi + + + + if test $gt_cv_header_inttypes_h = yes; then + echo "$as_me:$LINENO: checking whether the inttypes.h PRIxNN macros are broken" >&5 +echo $ECHO_N "checking whether the inttypes.h PRIxNN macros are broken... $ECHO_C" >&6 +if test "${gt_cv_inttypes_pri_broken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef PRId32 +char *p = PRId32; +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_inttypes_pri_broken=no +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_inttypes_pri_broken=yes +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $gt_cv_inttypes_pri_broken" >&5 +echo "${ECHO_T}$gt_cv_inttypes_pri_broken" >&6 + fi + if test "$gt_cv_inttypes_pri_broken" = yes; then + +cat >>confdefs.h <<_ACEOF +@%:@define PRI_MACROS_BROKEN 1 +_ACEOF + + fi + + + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" + + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi; +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo "$as_me:$LINENO: checking for ld used by GCC" >&5 +echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | [A-Za-z]:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${acl_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" +else + acl_cv_path_LD="$LD" # Let the user override the test with a path. +fi +fi + +LD="$acl_cv_path_LD" +if test -n "$LD"; then + echo "$as_me:$LINENO: result: $LD" >&5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${acl_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 &5; then + acl_cv_prog_gnu_ld=yes +else + acl_cv_prog_gnu_ld=no +fi +fi +echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5 +echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6 +with_gnu_ld=$acl_cv_prog_gnu_ld + + + + echo "$as_me:$LINENO: checking for shared library run path origin" >&5 +echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6 +if test "${acl_cv_rpath+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + +fi +echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5 +echo "${ECHO_T}$acl_cv_rpath" >&6 + wl="$acl_cv_wl" + libext="$acl_cv_libext" + shlibext="$acl_cv_shlibext" + hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + hardcode_direct="$acl_cv_hardcode_direct" + hardcode_minus_L="$acl_cv_hardcode_minus_L" + # Check whether --enable-rpath or --disable-rpath was given. +if test "${enable_rpath+set}" = set; then + enableval="$enable_rpath" + : +else + enable_rpath=yes +fi; + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libiconv-prefix or --without-libiconv-prefix was given. +if test "${with_libiconv_prefix+set}" = set; then + withval="$with_libiconv_prefix" + + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi + +fi; + LIBICONV= + LTLIBICONV= + INCICONV= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='iconv ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + if test $use_additional = yes; then + if 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 + found_la="$additional_libdir/lib$name.la" + fi + else + if test -f "$additional_libdir/lib$name.$libext"; then + found_dir="$additional_libdir" + found_a="$additional_libdir/lib$name.$libext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBICONV; 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" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if 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 + found_la="$dir/lib$name.la" + fi + else + if test -f "$dir/lib$name.$libext"; then + found_dir="$dir" + found_a="$dir/lib$name.$libext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$hardcode_direct" = yes; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBICONV; 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-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" + fi + if test "$hardcode_minus_L" != no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */lib | */lib/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCICONV; 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-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBICONV; 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-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBICONV; 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-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" + ;; + esac + done + fi + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" + done + fi + + + + + + + + + + + + + + +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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + + + + + + + + + + + + + + + + + + +for ac_func in feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ +geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ +strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next \ +__fsetlocking +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + + + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; 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 + + + echo "$as_me:$LINENO: checking for iconv" >&5 +echo $ECHO_N "checking for iconv... $ECHO_C" >&6 +if test "${am_cv_func_iconv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_func_iconv=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f 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 +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + +fi +echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 +echo "${ECHO_T}$am_cv_func_iconv" >&6 + if test "$am_cv_func_iconv" = yes; then + +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_ICONV 1 +_ACEOF + + fi + if test "$am_cv_lib_iconv" = yes; then + echo "$as_me:$LINENO: checking how to link with libiconv" >&5 +echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $LIBICONV" >&5 +echo "${ECHO_T}$LIBICONV" >&6 + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + if test "$am_cv_func_iconv" = yes; then + echo "$as_me:$LINENO: checking for iconv declaration" >&5 +echo $ECHO_N "checking for iconv declaration... $ECHO_C" >&6 + if test "${am_cv_proto_iconv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_proto_iconv_arg1="" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +am_cv_proto_iconv_arg1="const" +fi +rm -f 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/( /(/'` + echo "$as_me:$LINENO: result: ${ac_t:- + }$am_cv_proto_iconv" >&5 +echo "${ECHO_T}${ac_t:- + }$am_cv_proto_iconv" >&6 + +cat >>confdefs.h <<_ACEOF +@%:@define ICONV_CONST $am_cv_proto_iconv_arg1 +_ACEOF + + fi + + + echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 +echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6 +if test "${am_cv_langinfo_codeset+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_langinfo_codeset=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +am_cv_langinfo_codeset=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $am_cv_langinfo_codeset" >&5 +echo "${ECHO_T}$am_cv_langinfo_codeset" >&6 + if test $am_cv_langinfo_codeset = yes; then + +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_LANGINFO_CODESET 1 +_ACEOF + + fi + + if test $ac_cv_header_locale_h = yes; then + + echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 +echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6 +if test "${am_cv_val_LC_MESSAGES+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +return LC_MESSAGES + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_val_LC_MESSAGES=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +am_cv_val_LC_MESSAGES=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 +echo "${ECHO_T}$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 + + fi + + fi + + for ac_prog in bison +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_INTLBISON+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$INTLBISON"; then + ac_cv_prog_INTLBISON="$INTLBISON" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_INTLBISON="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +INTLBISON=$ac_cv_prog_INTLBISON +if test -n "$INTLBISON"; then + echo "$as_me:$LINENO: result: $INTLBISON" >&5 +echo "${ECHO_T}$INTLBISON" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$INTLBISON" && break +done + + if test -z "$INTLBISON"; then + ac_verc_fail=yes + else + echo "$as_me:$LINENO: checking version of bison" >&5 +echo $ECHO_N "checking version of bison... $ECHO_C" >&6 + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + echo "$as_me:$LINENO: result: $ac_prog_version" >&5 +echo "${ECHO_T}$ac_prog_version" >&6 + fi + if test $ac_verc_fail = yes; then + INTLBISON=: + fi + + + + + + + + + + + + + + + + + echo "$as_me:$LINENO: checking whether NLS is requested" >&5 +echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 + # Check whether --enable-nls or --disable-nls was given. +if test "${enable_nls+set}" = set; then + enableval="$enable_nls" + USE_NLS=$enableval +else + USE_NLS=yes +fi; + echo "$as_me:$LINENO: result: $USE_NLS" >&5 +echo "${ECHO_T}$USE_NLS" >&6 + + + + + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + + LIBINTL= + LTLIBINTL= + POSUB= + + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + + echo "$as_me:$LINENO: checking whether included gettext is requested" >&5 +echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6 + +# Check whether --with-included-gettext or --without-included-gettext was given. +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; + echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5 +echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6 + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + + + + + + + echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 +echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6 +if test "${gt_cv_func_gnugettext2_libc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +int +main () +{ +bindtextdomain ("", ""); +return (int) gettext ("") + (int) ngettext ("", "", 0) + _nl_msg_cat_cntr + *_nl_domain_bindings + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_func_gnugettext2_libc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_func_gnugettext2_libc=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext2_libc" >&5 +echo "${ECHO_T}$gt_cv_func_gnugettext2_libc" >&6 + + if test "$gt_cv_func_gnugettext2_libc" != "yes"; then + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libintl-prefix or --without-libintl-prefix was given. +if test "${with_libintl_prefix+set}" = set; then + withval="$with_libintl_prefix" + + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi + +fi; + LIBINTL= + LTLIBINTL= + INCINTL= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='intl ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + if test $use_additional = yes; then + if 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 + found_la="$additional_libdir/lib$name.la" + fi + else + if test -f "$additional_libdir/lib$name.$libext"; then + found_dir="$additional_libdir" + found_a="$additional_libdir/lib$name.$libext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBINTL; 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" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if 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 + found_la="$dir/lib$name.la" + fi + else + if test -f "$dir/lib$name.$libext"; then + found_dir="$dir" + found_a="$dir/lib$name.$libext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$hardcode_direct" = yes; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBINTL; 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-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" + fi + if test "$hardcode_minus_L" != no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */lib | */lib/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCINTL; 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-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBINTL; 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-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBINTL; 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-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" + ;; + esac + done + fi + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" + done + fi + + echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5 +echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6 +if test "${gt_cv_func_gnugettext2_libintl+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_func_gnugettext2_libintl=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_func_gnugettext2_libintl=no +fi +rm -f 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 >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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + gt_cv_func_gnugettext2_libintl=yes + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" +fi +echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext2_libintl" >&5 +echo "${ECHO_T}$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 + + echo "$as_me:$LINENO: checking whether to use NLS" >&5 +echo $ECHO_N "checking whether to use NLS... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $USE_NLS" >&5 +echo "${ECHO_T}$USE_NLS" >&6 + if test "$USE_NLS" = "yes"; then + echo "$as_me:$LINENO: checking where the gettext function comes from" >&5 +echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&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 + echo "$as_me:$LINENO: result: $gt_source" >&5 +echo "${ECHO_T}$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 + echo "$as_me:$LINENO: checking how to link with libintl" >&5 +echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $LIBINTL" >&5 +echo "${ECHO_T}$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=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 +echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `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 + echo "$as_me:$LINENO: checking for library containing opendir" >&5 +echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 +if test "${ac_cv_search_opendir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_func_search_save_LIBS=$LIBS +ac_cv_search_opendir=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +int +main () +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_opendir="none required" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search_opendir" = no; then + for ac_lib in dir; do + LIBS="-l$ac_lib $ac_func_search_save_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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +int +main () +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_opendir="-l$ac_lib" +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done +fi +LIBS=$ac_func_search_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 +echo "${ECHO_T}$ac_cv_search_opendir" >&6 +if test "$ac_cv_search_opendir" != no; then + test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" + +fi + +else + echo "$as_me:$LINENO: checking for library containing opendir" >&5 +echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 +if test "${ac_cv_search_opendir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_func_search_save_LIBS=$LIBS +ac_cv_search_opendir=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +int +main () +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_opendir="none required" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search_opendir" = no; then + for ac_lib in x; do + LIBS="-l$ac_lib $ac_func_search_save_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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +int +main () +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_opendir="-l$ac_lib" +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done +fi +LIBS=$ac_func_search_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 +echo "${ECHO_T}$ac_cv_search_opendir" >&6 +if test "$ac_cv_search_opendir" != no; then + test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" + +fi + +fi + +echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 +echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6 +if test "${ac_cv_header_time+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_time=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_time=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 +echo "${ECHO_T}$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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `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 +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +echo "$as_me:$LINENO: checking for sys/ptem.h" >&5 +echo $ECHO_N "checking for sys/ptem.h... $ECHO_C" >&6 +if test "${ac_cv_header_sys_ptem_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_sys_ptem_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_sys_ptem_h=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_header_sys_ptem_h" >&5 +echo "${ECHO_T}$ac_cv_header_sys_ptem_h" >&6 + + + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +echo "$as_me:$LINENO: checking for working alloca.h" >&5 +echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 +if test "${ac_cv_working_alloca_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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)); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_working_alloca_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_working_alloca_h=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +echo "${ECHO_T}$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 + +echo "$as_me:$LINENO: checking for alloca" >&5 +echo $ECHO_N "checking for alloca... $ECHO_C" >&6 +if test "${ac_cv_func_alloca_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +# if 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); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_alloca_works=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_alloca_works=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +echo "${ECHO_T}$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=alloca.$ac_objext + +cat >>confdefs.h <<\_ACEOF +@%:@define C_ALLOCA 1 +_ACEOF + + +echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 +if test "${ac_cv_os_cray+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +echo "${ECHO_T}$ac_cv_os_cray" >&6 +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + +cat >>confdefs.h <<_ACEOF +@%:@define CRAY_STACKSEG_END $ac_func +_ACEOF + + break +fi + + done +fi + +echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 +if test "${ac_cv_c_stack_direction+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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. */ +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 () +{ + exit (find_stack_direction () < 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_stack_direction=1 +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_c_stack_direction=-1 +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 + +cat >>confdefs.h <<_ACEOF +@%:@define STACK_DIRECTION $ac_cv_c_stack_direction +_ACEOF + + +fi + +echo "$as_me:$LINENO: checking whether getpgrp requires zero arguments" >&5 +echo $ECHO_N "checking whether getpgrp requires zero arguments... $ECHO_C" >&6 +if test "${ac_cv_func_getpgrp_void+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_getpgrp_void=no +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_getpgrp_void=yes +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $ac_cv_func_getpgrp_void" >&5 +echo "${ECHO_T}$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 + +echo "$as_me:$LINENO: checking whether setvbuf arguments are reversed" >&5 +echo $ECHO_N "checking whether setvbuf arguments are reversed... $ECHO_C" >&6 +if test "${ac_cv_func_setvbuf_reversed+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_func_setvbuf_reversed=no + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +# if PROTOTYPES + int (setvbuf) (FILE *, int, char *, size_t); +# endif +int +main () +{ +char buf; return setvbuf (stdout, _IOLBF, &buf, 1); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +# if PROTOTYPES + int (setvbuf) (FILE *, int, char *, size_t); +# endif +int +main () +{ +char buf; return setvbuf (stdout, &buf, _IOLBF, 1); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + # It compiles and links either way, so it must not be declared + # with a prototype and most likely this is a K&R C compiler. + # Try running it. + if test "$cross_compiling" = yes; then + : # Assume setvbuf is not reversed when cross-compiling. +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 () +{ +/* This call has the arguments reversed. + A reversed system may check and see that the address of buf + is not _IOLBF, _IONBF, or _IOFBF, and return nonzero. */ + char buf; + if (setvbuf (stdout, _IOLBF, &buf, 1) != 0) + exit (1); + putchar ('\r'); + exit (0); /* Non-reversed systems SEGV here. */ + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_setvbuf_reversed=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +rm -f core *.core +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + ac_cv_func_setvbuf_reversed=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_setvbuf_reversed" >&5 +echo "${ECHO_T}$ac_cv_func_setvbuf_reversed" >&6 +if test $ac_cv_func_setvbuf_reversed = yes; then + +cat >>confdefs.h <<\_ACEOF +@%:@define SETVBUF_REVERSED 1 +_ACEOF + +fi + + +for ac_func in vprintf +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +echo "$as_me:$LINENO: checking for _doprnt" >&5 +echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6 +if test "${ac_cv_func__doprnt+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = _doprnt; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != _doprnt; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func__doprnt=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func__doprnt=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5 +echo "${ECHO_T}$ac_cv_func__doprnt" >&6 +if test $ac_cv_func__doprnt = yes; then + +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_DOPRNT 1 +_ACEOF + +fi + +fi +done + + +echo "$as_me:$LINENO: checking for working strcoll" >&5 +echo $ECHO_N "checking for working strcoll... $ECHO_C" >&6 +if test "${ac_cv_func_strcoll_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +exit (strcoll ("abc", "def") >= 0 || + strcoll ("ABC", "DEF") >= 0 || + strcoll ("123", "456") >= 0) + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_strcoll_works=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_func_strcoll_works=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_func_strcoll_works" >&5 +echo "${ECHO_T}$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 + echo "$as_me:$LINENO: checking for declaration of vprintf in stdio.h" >&5 +echo $ECHO_N "checking for declaration of vprintf in stdio.h... $ECHO_C" >&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* + + echo "$as_me:$LINENO: result: $ac_cv_func_vprintf" >&5 +echo "${ECHO_T}$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 $LIB@&t@OBJS in + "vprint.$ac_objext" | \ + *" vprint.$ac_objext" | \ + "vprint.$ac_objext "* | \ + *" vprint.$ac_objext "* ) ;; + *) LIB@&t@OBJS="$LIB@&t@OBJS vprint.$ac_objext" ;; +esac + +fi + +echo "$as_me:$LINENO: checking return type of signal handlers" >&5 +echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 +if test "${ac_cv_type_signal+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef signal +# undef signal +#endif +#ifdef __cplusplus +extern "C" void (*signal (int, void (*)(int)))(int); +#else +void (*signal ()) (); +#endif + +int +main () +{ +int i; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_signal=void +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_signal=int +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 +echo "${ECHO_T}$ac_cv_type_signal" >&6 + +cat >>confdefs.h <<_ACEOF +@%:@define RETSIGTYPE $ac_cv_type_signal +_ACEOF + + + +echo "$as_me:$LINENO: checking for __setostype" >&5 +echo $ECHO_N "checking for __setostype... $ECHO_C" >&6 +if test "${ac_cv_func___setostype+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = __setostype; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != __setostype; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func___setostype=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func___setostype=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func___setostype" >&5 +echo "${ECHO_T}$ac_cv_func___setostype" >&6 +if test $ac_cv_func___setostype = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_SETOSTYPE 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for wait3" >&5 +echo $ECHO_N "checking for wait3... $ECHO_C" >&6 +if test "${ac_cv_func_wait3+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = wait3; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != wait3; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_wait3=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_wait3=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_wait3" >&5 +echo "${ECHO_T}$ac_cv_func_wait3" >&6 +if test $ac_cv_func_wait3 = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_WAIT3 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for isinf" >&5 +echo $ECHO_N "checking for isinf... $ECHO_C" >&6 +if test "${ac_cv_func_isinf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = isinf; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != isinf; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_isinf=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_isinf=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_isinf" >&5 +echo "${ECHO_T}$ac_cv_func_isinf" >&6 +if test $ac_cv_func_isinf = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_ISINF_IN_LIBC 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for mkfifo" >&5 +echo $ECHO_N "checking for mkfifo... $ECHO_C" >&6 +if test "${ac_cv_func_mkfifo+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = mkfifo; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != mkfifo; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mkfifo=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_mkfifo=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_mkfifo" >&5 +echo "${ECHO_T}$ac_cv_func_mkfifo" >&6 +if test $ac_cv_func_mkfifo = 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 \ + tcgetpgrp uname ulimit waitpid +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +for ac_func in rename +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + case $LIB@&t@OBJS in + "$ac_func.$ac_objext" | \ + *" $ac_func.$ac_objext" | \ + "$ac_func.$ac_objext "* | \ + *" $ac_func.$ac_objext "* ) ;; + *) LIB@&t@OBJS="$LIB@&t@OBJS $ac_func.$ac_objext" ;; +esac + +fi +done + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +for ac_func in bcopy bzero confstr fnmatch \ + getaddrinfo gethostbyname getservbyname getservent inet_aton \ + memmove pathconf putenv raise regcomp regexec \ + setenv setlinebuf setlocale setvbuf siginterrupt strchr \ + sysconf tcgetattr times ttyname tzset unsetenv +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + + + +for ac_func in vsnprintf snprintf vasprintf asprintf +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `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=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + +for ac_func in getpwent getpwnam getpwuid +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + + + + + + +for ac_func in getcwd memset strcasecmp strerror strftime strnlen strpbrk strstr +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + case $LIB@&t@OBJS in + "$ac_func.$ac_objext" | \ + *" $ac_func.$ac_objext" | \ + "$ac_func.$ac_objext "* | \ + *" $ac_func.$ac_objext "* ) ;; + *) LIB@&t@OBJS="$LIB@&t@OBJS $ac_func.$ac_objext" ;; +esac + +fi +done + + + + + + + + + +for ac_func in strtod strtol strtoul strtoll strtoull strtoimax strtoumax +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + case $LIB@&t@OBJS in + "$ac_func.$ac_objext" | \ + *" $ac_func.$ac_objext" | \ + "$ac_func.$ac_objext "* | \ + *" $ac_func.$ac_objext "* ) ;; + *) LIB@&t@OBJS="$LIB@&t@OBJS $ac_func.$ac_objext" ;; +esac + +fi +done + + + +echo "$as_me:$LINENO: checking whether confstr is declared" >&5 +echo $ECHO_N "checking whether confstr is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_confstr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + char *p = (char *) confstr; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_confstr=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl_confstr=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_confstr" >&5 +echo "${ECHO_T}$ac_cv_have_decl_confstr" >&6 +if test $ac_cv_have_decl_confstr = yes; then + +cat >>confdefs.h <<_ACEOF +@%:@define HAVE_DECL_CONFSTR 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +@%:@define HAVE_DECL_CONFSTR 0 +_ACEOF + + +fi + + +echo "$as_me:$LINENO: checking whether printf is declared" >&5 +echo $ECHO_N "checking whether printf is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_printf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + char *p = (char *) printf; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_printf=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl_printf=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_printf" >&5 +echo "${ECHO_T}$ac_cv_have_decl_printf" >&6 +if test $ac_cv_have_decl_printf = yes; then + +cat >>confdefs.h <<_ACEOF +@%:@define HAVE_DECL_PRINTF 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +@%:@define HAVE_DECL_PRINTF 0 +_ACEOF + + +fi + + +echo "$as_me:$LINENO: checking whether sbrk is declared" >&5 +echo $ECHO_N "checking whether sbrk is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_sbrk+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + char *p = (char *) sbrk; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_sbrk=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl_sbrk=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_sbrk" >&5 +echo "${ECHO_T}$ac_cv_have_decl_sbrk" >&6 +if test $ac_cv_have_decl_sbrk = yes; then + +cat >>confdefs.h <<_ACEOF +@%:@define HAVE_DECL_SBRK 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +@%:@define HAVE_DECL_SBRK 0 +_ACEOF + + +fi + + +echo "$as_me:$LINENO: checking whether setregid is declared" >&5 +echo $ECHO_N "checking whether setregid is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_setregid+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + char *p = (char *) setregid; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_setregid=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl_setregid=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_setregid" >&5 +echo "${ECHO_T}$ac_cv_have_decl_setregid" >&6 +if test $ac_cv_have_decl_setregid = yes; then + +cat >>confdefs.h <<_ACEOF +@%:@define HAVE_DECL_SETREGID 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +@%:@define HAVE_DECL_SETREGID 0 +_ACEOF + + +fi + + +echo "$as_me:$LINENO: checking whether strcpy is declared" >&5 +echo $ECHO_N "checking whether strcpy is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_strcpy+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + char *p = (char *) strcpy; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_strcpy=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl_strcpy=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_strcpy" >&5 +echo "${ECHO_T}$ac_cv_have_decl_strcpy" >&6 +if test $ac_cv_have_decl_strcpy = yes; then + +cat >>confdefs.h <<_ACEOF +@%:@define HAVE_DECL_STRCPY 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +@%:@define HAVE_DECL_STRCPY 0 +_ACEOF + + +fi + + +echo "$as_me:$LINENO: checking whether strsignal is declared" >&5 +echo $ECHO_N "checking whether strsignal is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_strsignal+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + char *p = (char *) strsignal; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_strsignal=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl_strsignal=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_strsignal" >&5 +echo "${ECHO_T}$ac_cv_have_decl_strsignal" >&6 +if test $ac_cv_have_decl_strsignal = yes; then + +cat >>confdefs.h <<_ACEOF +@%:@define HAVE_DECL_STRSIGNAL 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +@%:@define HAVE_DECL_STRSIGNAL 0 +_ACEOF + + +fi + + + +echo "$as_me:$LINENO: checking whether strtold is declared" >&5 +echo $ECHO_N "checking whether strtold is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_strtold+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + char *p = (char *) strtold; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_strtold=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl_strtold=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_strtold" >&5 +echo "${ECHO_T}$ac_cv_have_decl_strtold" >&6 +if test $ac_cv_have_decl_strtold = yes; then + +cat >>confdefs.h <<_ACEOF +@%:@define HAVE_DECL_STRTOLD 1 +_ACEOF + + + echo "$as_me:$LINENO: checking for broken strtold" >&5 +echo $ECHO_N "checking for broken strtold... $ECHO_C" >&6 + if test "${bash_cv_strtold_broken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_strtold_broken=no +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_strtold_broken=yes +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + + +fi + + echo "$as_me:$LINENO: result: $bash_cv_strtold_broken" >&5 +echo "${ECHO_T}$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 + + + + + + + +echo "$as_me:$LINENO: checking for declaration of strtoimax" >&5 +echo $ECHO_N "checking for declaration of strtoimax... $ECHO_C" >&6 +if test "${bash_cv_decl_strtoimax+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_decl_strtoimax=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_decl_strtoimax=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoimax" >&5 +echo "${ECHO_T}$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 + + + + +echo "$as_me:$LINENO: checking for declaration of strtol" >&5 +echo $ECHO_N "checking for declaration of strtol... $ECHO_C" >&6 +if test "${bash_cv_decl_strtol+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_decl_strtol=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_decl_strtol=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_decl_strtol" >&5 +echo "${ECHO_T}$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 + + + + +echo "$as_me:$LINENO: checking for declaration of strtoll" >&5 +echo $ECHO_N "checking for declaration of strtoll... $ECHO_C" >&6 +if test "${bash_cv_decl_strtoll+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_decl_strtoll=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_decl_strtoll=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoll" >&5 +echo "${ECHO_T}$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 + + + + +echo "$as_me:$LINENO: checking for declaration of strtoul" >&5 +echo $ECHO_N "checking for declaration of strtoul... $ECHO_C" >&6 +if test "${bash_cv_decl_strtoul+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_decl_strtoul=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_decl_strtoul=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoul" >&5 +echo "${ECHO_T}$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 + + + + +echo "$as_me:$LINENO: checking for declaration of strtoull" >&5 +echo $ECHO_N "checking for declaration of strtoull... $ECHO_C" >&6 +if test "${bash_cv_decl_strtoull+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_decl_strtoull=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_decl_strtoull=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoull" >&5 +echo "${ECHO_T}$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 + + + + +echo "$as_me:$LINENO: checking for declaration of strtoumax" >&5 +echo $ECHO_N "checking for declaration of strtoumax... $ECHO_C" >&6 +if test "${bash_cv_decl_strtoumax+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_decl_strtoumax=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_decl_strtoumax=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoumax" >&5 +echo "${ECHO_T}$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 stdlib.h sys/time.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_func in alarm +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +echo "$as_me:$LINENO: checking for working mktime" >&5 +echo $ECHO_N "checking for working mktime... $ECHO_C" >&6 +if test "${ac_cv_func_working_mktime+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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. */ +#if TIME_WITH_SYS_TIME +# include +# include +#else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif + +#if HAVE_STDLIB_H +# include +#endif + +#if HAVE_UNISTD_H +# include +#endif + +#if !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])) + +/* Fail if mktime fails to convert a date in the spring-forward gap. + Based on a problem report from Andreas Jaeger. */ +static void +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; + if (mktime (&tm) == (time_t)-1) + exit (1); +} + +static void +mktime_test1 (now) + time_t now; +{ + struct tm *lt; + if ((lt = localtime (&now)) && mktime (lt) != now) + exit (1); +} + +static void +mktime_test (now) + time_t now; +{ + mktime_test1 (now); + mktime_test1 ((time_t) (time_t_max - now)); + mktime_test1 ((time_t) (time_t_min + now)); +} + +static void +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); + if (tm.tm_mon != 2 || tm.tm_mday != 31) + exit (1); +} + +static void +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)))) + exit (1); + } +} + +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 (time_t_max = 1; 0 < time_t_max; time_t_max *= 2) + continue; + time_t_max--; + if ((time_t) -1 < 0) + for (time_t_min = -1; (time_t) (time_t_min * 2) < 0; time_t_min *= 2) + continue; + 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) + mktime_test (t); + mktime_test ((time_t) 1); + mktime_test ((time_t) (60 * 60)); + mktime_test ((time_t) (60 * 60 * 24)); + + for (j = 1; 0 < j; j *= 2) + bigtime_test (j); + bigtime_test (j - 1); + } + irix_6_4_bug (); + spring_forward_gap (); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_working_mktime=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_func_working_mktime=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_func_working_mktime" >&5 +echo "${ECHO_T}$ac_cv_func_working_mktime" >&6 +if test $ac_cv_func_working_mktime = no; then + case $LIB@&t@OBJS in + "mktime.$ac_objext" | \ + *" mktime.$ac_objext" | \ + "mktime.$ac_objext "* | \ + *" mktime.$ac_objext "* ) ;; + *) LIB@&t@OBJS="$LIB@&t@OBJS mktime.$ac_objext" ;; +esac + +fi + + + + + + + + +for ac_header in argz.h errno.h fcntl.h malloc.h stdio_ext.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + +for ac_header in stdlib.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_func in getpagesize +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +echo "$as_me:$LINENO: checking for working mmap" >&5 +echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 +if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 !STDC_HEADERS && !HAVE_STDLIB_H +char *malloc (); +#endif + +/* This mess was copied from the GNU getpagesize.h. */ +#if !HAVE_GETPAGESIZE +/* Assume that all systems that can run configure have sys/param.h. */ +# if !HAVE_SYS_PARAM_H +# define HAVE_SYS_PARAM_H 1 +# endif + +# ifdef _SC_PAGESIZE +# define getpagesize() sysconf(_SC_PAGESIZE) +# else /* no _SC_PAGESIZE */ +# if 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) + exit (1); + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) + exit (1); + if (write (fd, data, pagesize) != pagesize) + exit (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) + exit (1); + data2 = (char *) malloc (2 * pagesize); + if (!data2) + exit (1); + data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1); + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + exit (1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + exit (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) + exit (1); + if (read (fd, data3, pagesize) != pagesize) + exit (1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + exit (1); + close (fd); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mmap_fixed_mapped=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +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 -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 +echo "${ECHO_T}$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=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in wchar.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in langinfo.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +echo "$as_me:$LINENO: checking for mbsrtowcs" >&5 +echo $ECHO_N "checking for mbsrtowcs... $ECHO_C" >&6 +if test "${ac_cv_func_mbsrtowcs+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = mbsrtowcs; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != mbsrtowcs; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mbsrtowcs=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_mbsrtowcs=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_mbsrtowcs" >&5 +echo "${ECHO_T}$ac_cv_func_mbsrtowcs" >&6 +if test $ac_cv_func_mbsrtowcs = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_MBSRTOWCS 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for mbrtowc" >&5 +echo $ECHO_N "checking for mbrtowc... $ECHO_C" >&6 +if test "${ac_cv_func_mbrtowc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 mbrtowc to an innocuous variant, in case declares mbrtowc. + For example, HP-UX 11i declares gettimeofday. */ +#define mbrtowc innocuous_mbrtowc + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char mbrtowc (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef mbrtowc + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char mbrtowc (); +/* 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_mbrtowc) || defined (__stub___mbrtowc) +choke me +#else +char (*f) () = mbrtowc; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != mbrtowc; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mbrtowc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_mbrtowc=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_mbrtowc" >&5 +echo "${ECHO_T}$ac_cv_func_mbrtowc" >&6 +if test $ac_cv_func_mbrtowc = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_MBRTOWC 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for mbrlen" >&5 +echo $ECHO_N "checking for mbrlen... $ECHO_C" >&6 +if test "${ac_cv_func_mbrlen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = mbrlen; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != mbrlen; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mbrlen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_mbrlen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_mbrlen" >&5 +echo "${ECHO_T}$ac_cv_func_mbrlen" >&6 +if test $ac_cv_func_mbrlen = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_MBRLEN 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for wctomb" >&5 +echo $ECHO_N "checking for wctomb... $ECHO_C" >&6 +if test "${ac_cv_func_wctomb+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 wctomb to an innocuous variant, in case declares wctomb. + For example, HP-UX 11i declares gettimeofday. */ +#define wctomb innocuous_wctomb + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char wctomb (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef wctomb + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char wctomb (); +/* 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_wctomb) || defined (__stub___wctomb) +choke me +#else +char (*f) () = wctomb; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != wctomb; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_wctomb=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_wctomb=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_wctomb" >&5 +echo "${ECHO_T}$ac_cv_func_wctomb" >&6 +if test $ac_cv_func_wctomb = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_WCTOMB 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for wcwidth" >&5 +echo $ECHO_N "checking for wcwidth... $ECHO_C" >&6 +if test "${ac_cv_func_wcwidth+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = wcwidth; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != wcwidth; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_wcwidth=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_wcwidth=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_wcwidth" >&5 +echo "${ECHO_T}$ac_cv_func_wcwidth" >&6 +if test $ac_cv_func_wcwidth = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_WCWIDTH 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for wcsdup" >&5 +echo $ECHO_N "checking for wcsdup... $ECHO_C" >&6 +if test "${ac_cv_func_wcsdup+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = wcsdup; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != wcsdup; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_wcsdup=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_wcsdup=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_wcsdup" >&5 +echo "${ECHO_T}$ac_cv_func_wcsdup" >&6 +if test $ac_cv_func_wcsdup = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_WCSDUP 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for wctype" >&5 +echo $ECHO_N "checking for wctype... $ECHO_C" >&6 +if test "${ac_cv_func_wctype+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = wctype; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != wctype; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_wctype=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_wctype=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_wctype" >&5 +echo "${ECHO_T}$ac_cv_func_wctype" >&6 +if test $ac_cv_func_wctype = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_WCTYPE 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for mbstate_t" >&5 +echo $ECHO_N "checking for mbstate_t... $ECHO_C" >&6 +if test "${bash_cv_have_mbstate_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ + + mbstate_t ps; + mbstate_t *psp; + psp = (mbstate_t *)0; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_have_mbstate_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_have_mbstate_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_have_mbstate_t" >&5 +echo "${ECHO_T}$bash_cv_have_mbstate_t" >&6 +if test $bash_cv_have_mbstate_t = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_MBSTATE_T 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 +echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6 +if test "${bash_cv_langinfo_codeset+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_langinfo_codeset=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_langinfo_codeset=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_langinfo_codeset" >&5 +echo "${ECHO_T}$bash_cv_langinfo_codeset" >&6 +if test $bash_cv_langinfo_codeset = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_LANGINFO_CODESET 1 +_ACEOF + +fi + + + +if test "$opt_static_link" != yes; then + +echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = 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=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +fi + +echo "$as_me:$LINENO: checking whether sys_siglist is declared" >&5 +echo $ECHO_N "checking whether sys_siglist is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_sys_siglist+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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. */ +#if HAVE_UNISTD_H +# include +#endif + + +int +main () +{ +#ifndef sys_siglist + char *p = (char *) sys_siglist; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_sys_siglist=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl_sys_siglist=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_sys_siglist" >&5 +echo "${ECHO_T}$ac_cv_have_decl_sys_siglist" >&6 +if test $ac_cv_have_decl_sys_siglist = 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 + +echo "$as_me:$LINENO: checking for inet_aton" >&5 +echo $ECHO_N "checking for inet_aton... $ECHO_C" >&6 +if test "${bash_cv_func_inet_aton+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_func_inet_aton=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_func_inet_aton=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_func_inet_aton" >&5 +echo "${ECHO_T}$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 $LIB@&t@OBJS in + "inet_aton.$ac_objext" | \ + *" inet_aton.$ac_objext" | \ + "inet_aton.$ac_objext "* | \ + *" inet_aton.$ac_objext "* ) ;; + *) LIB@&t@OBJS="$LIB@&t@OBJS inet_aton.$ac_objext" ;; +esac + +fi + +fi + +case "$host_os" in +irix4*) +echo "$as_me:$LINENO: checking for getpwent in -lsun" >&5 +echo $ECHO_N "checking for getpwent in -lsun... $ECHO_C" >&6 +if test "${ac_cv_lib_sun_getpwent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char getpwent (); +int +main () +{ +getpwent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_sun_getpwent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_sun_getpwent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_sun_getpwent" >&5 +echo "${ECHO_T}$ac_cv_lib_sun_getpwent" >&6 +if test $ac_cv_lib_sun_getpwent = 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 +echo "$as_me:$LINENO: checking for socket library" >&5 +echo $ECHO_N "checking for socket library... $ECHO_C" >&6 +_bash_needmsg=yes +fi +if test "${bash_cv_have_socklib+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for getpeername in -lsocket" >&5 +echo $ECHO_N "checking for getpeername in -lsocket... $ECHO_C" >&6 +if test "${ac_cv_lib_socket_getpeername+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char getpeername (); +int +main () +{ +getpeername (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_socket_getpeername=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_socket_getpeername=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_socket_getpeername" >&5 +echo "${ECHO_T}$ac_cv_lib_socket_getpeername" >&6 +if test $ac_cv_lib_socket_getpeername = yes; then + bash_cv_have_socklib=yes +else + bash_cv_have_socklib=no +fi + +fi + +if test "X$_bash_needmsg" = Xyes; then + echo "$as_me:$LINENO: result: $bash_cv_have_socklib" >&5 +echo "${ECHO_T}$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 + echo "$as_me:$LINENO: checking for libnsl" >&5 +echo $ECHO_N "checking for libnsl... $ECHO_C" >&6 + _bash_needmsg=yes + fi + if test "${bash_cv_have_libnsl+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for t_open in -lnsl" >&5 +echo $ECHO_N "checking for t_open in -lnsl... $ECHO_C" >&6 +if test "${ac_cv_lib_nsl_t_open+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char t_open (); +int +main () +{ +t_open (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_nsl_t_open=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_nsl_t_open=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_t_open" >&5 +echo "${ECHO_T}$ac_cv_lib_nsl_t_open" >&6 +if test $ac_cv_lib_nsl_t_open = yes; then + bash_cv_have_libnsl=yes +else + bash_cv_have_libnsl=no +fi + +fi + + if test "X$_bash_needmsg" = Xyes; then + echo "$as_me:$LINENO: result: $bash_cv_have_libnsl" >&5 +echo "${ECHO_T}$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 +echo "$as_me:$LINENO: checking for gethostbyname in socket library" >&5 +echo $ECHO_N "checking for gethostbyname in socket library... $ECHO_C" >&6 +_bash_needmsg= +fi +if test "${bash_cv_have_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_have_gethostbyname=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_have_gethostbyname=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi + +if test "X$_bash_needmsg" = Xyes; then + echo "$as_me:$LINENO: checking for gethostbyname in socket library" >&5 +echo $ECHO_N "checking for gethostbyname in socket library... $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $bash_cv_have_gethostbyname" >&5 +echo "${ECHO_T}$bash_cv_have_gethostbyname" >&6 +if test "$bash_cv_have_gethostbyname" = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_GETHOSTBYNAME 1 +_ACEOF + +fi + +fi + +echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5 +echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6 +if test "${ac_cv_type_uid_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 +echo "${ECHO_T}$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 + +echo "$as_me:$LINENO: checking type of array argument to getgroups" >&5 +echo $ECHO_N "checking type of array argument to getgroups... $ECHO_C" >&6 +if test "${ac_cv_type_getgroups+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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. */ +#include +#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 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 but getgroups modifies an array of ints. */ + exit ((n > 0 && gidset[n] != val.gval) ? 1 : 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_getgroups=gid_t +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_type_getgroups=int +fi +rm -f core *.core 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 +echo "$as_me:$LINENO: result: $ac_cv_type_getgroups" >&5 +echo "${ECHO_T}$ac_cv_type_getgroups" >&6 + +cat >>confdefs.h <<_ACEOF +@%:@define GETGROUPS_T $ac_cv_type_getgroups +_ACEOF + + +echo "$as_me:$LINENO: checking for off_t" >&5 +echo $ECHO_N "checking for off_t... $ECHO_C" >&6 +if test "${ac_cv_type_off_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((off_t *) 0) + return 0; +if (sizeof (off_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_off_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_off_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 +echo "${ECHO_T}$ac_cv_type_off_t" >&6 +if test $ac_cv_type_off_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define off_t long +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for mode_t" >&5 +echo $ECHO_N "checking for mode_t... $ECHO_C" >&6 +if test "${ac_cv_type_mode_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((mode_t *) 0) + return 0; +if (sizeof (mode_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_mode_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_mode_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5 +echo "${ECHO_T}$ac_cv_type_mode_t" >&6 +if test $ac_cv_type_mode_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define mode_t int +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5 +echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6 +if test "${ac_cv_type_uid_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 +echo "${ECHO_T}$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 + +echo "$as_me:$LINENO: checking for pid_t" >&5 +echo $ECHO_N "checking for pid_t... $ECHO_C" >&6 +if test "${ac_cv_type_pid_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((pid_t *) 0) + return 0; +if (sizeof (pid_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_pid_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_pid_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 +echo "${ECHO_T}$ac_cv_type_pid_t" >&6 +if test $ac_cv_type_pid_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define pid_t int +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for size_t" >&5 +echo $ECHO_N "checking for size_t... $ECHO_C" >&6 +if test "${ac_cv_type_size_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((size_t *) 0) + return 0; +if (sizeof (size_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_size_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_size_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +echo "${ECHO_T}$ac_cv_type_size_t" >&6 +if test $ac_cv_type_size_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define size_t unsigned +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for ssize_t" >&5 +echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6 +if test "${ac_cv_type_ssize_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((ssize_t *) 0) + return 0; +if (sizeof (ssize_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ssize_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_ssize_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5 +echo "${ECHO_T}$ac_cv_type_ssize_t" >&6 +if test $ac_cv_type_ssize_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define ssize_t int +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for time_t" >&5 +echo $ECHO_N "checking for time_t... $ECHO_C" >&6 +if test "${ac_cv_type_time_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((time_t *) 0) + return 0; +if (sizeof (time_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_time_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_time_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_time_t" >&5 +echo "${ECHO_T}$ac_cv_type_time_t" >&6 +if test $ac_cv_type_time_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define time_t long +_ACEOF + +fi + + + +echo "$as_me:$LINENO: checking for long long" >&5 +echo $ECHO_N "checking for long long... $ECHO_C" >&6 +if test "${bash_cv_type_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +long long ll = 1; int i = 63; +int +main () +{ + +long long llm = (long long) -1; +return ll << i | ll >> i | llm / ll | llm % ll; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_type_long_long='long long' +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_type_long_long='long' +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_type_long_long" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking for unsigned long long" >&5 +echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6 +if test "${bash_cv_type_unsigned_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ + +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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_type_unsigned_long_long='unsigned long long' +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_type_unsigned_long_long='unsigned long' +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_type_unsigned_long_long" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking return type of signal handlers" >&5 +echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 +if test "${ac_cv_type_signal+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef signal +# undef signal +#endif +#ifdef __cplusplus +extern "C" void (*signal (int, void (*)(int)))(int); +#else +void (*signal ()) (); +#endif + +int +main () +{ +int i; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_signal=void +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_signal=int +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 +echo "${ECHO_T}$ac_cv_type_signal" >&6 + +cat >>confdefs.h <<_ACEOF +@%:@define RETSIGTYPE $ac_cv_type_signal +_ACEOF + + + +echo "$as_me:$LINENO: checking for char" >&5 +echo $ECHO_N "checking for char... $ECHO_C" >&6 +if test "${ac_cv_type_char+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((char *) 0) + return 0; +if (sizeof (char)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_char=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_char=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_char" >&5 +echo "${ECHO_T}$ac_cv_type_char" >&6 + +echo "$as_me:$LINENO: checking size of char" >&5 +echo $ECHO_N "checking size of char... $ECHO_C" >&6 +if test "${ac_cv_sizeof_char+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_char" = yes; then + # The cast to unsigned long 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. + 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) (sizeof (char))) >= 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (char))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + 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) (sizeof (char))) < 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (char))) >= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f 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) (sizeof (char))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_char=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (char), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (char), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +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 +long longval () { return (long) (sizeof (char)); } +unsigned long ulongval () { return (long) (sizeof (char)); } +@%:@include +@%:@include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (char))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (char)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (char)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_char=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (char), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (char), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_char=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_char" >&5 +echo "${ECHO_T}$ac_cv_sizeof_char" >&6 +cat >>confdefs.h <<_ACEOF +@%:@define SIZEOF_CHAR $ac_cv_sizeof_char +_ACEOF + + +echo "$as_me:$LINENO: checking for short" >&5 +echo $ECHO_N "checking for short... $ECHO_C" >&6 +if test "${ac_cv_type_short+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((short *) 0) + return 0; +if (sizeof (short)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_short=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_short=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_short" >&5 +echo "${ECHO_T}$ac_cv_type_short" >&6 + +echo "$as_me:$LINENO: checking size of short" >&5 +echo $ECHO_N "checking size of short... $ECHO_C" >&6 +if test "${ac_cv_sizeof_short+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_short" = yes; then + # The cast to unsigned long 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. + 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) (sizeof (short))) >= 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (short))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + 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) (sizeof (short))) < 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (short))) >= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f 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) (sizeof (short))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_short=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (short), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +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 +long longval () { return (long) (sizeof (short)); } +unsigned long ulongval () { return (long) (sizeof (short)); } +@%:@include +@%:@include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (short))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (short)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (short)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_short=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (short), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_short=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5 +echo "${ECHO_T}$ac_cv_sizeof_short" >&6 +cat >>confdefs.h <<_ACEOF +@%:@define SIZEOF_SHORT $ac_cv_sizeof_short +_ACEOF + + +echo "$as_me:$LINENO: checking for int" >&5 +echo $ECHO_N "checking for int... $ECHO_C" >&6 +if test "${ac_cv_type_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((int *) 0) + return 0; +if (sizeof (int)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_int=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_int=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5 +echo "${ECHO_T}$ac_cv_type_int" >&6 + +echo "$as_me:$LINENO: checking size of int" >&5 +echo $ECHO_N "checking size of int... $ECHO_C" >&6 +if test "${ac_cv_sizeof_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_int" = yes; then + # The cast to unsigned long 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. + 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) (sizeof (int))) >= 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (int))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + 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) (sizeof (int))) < 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (int))) >= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f 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) (sizeof (int))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_int=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +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 +long longval () { return (long) (sizeof (int)); } +unsigned long ulongval () { return (long) (sizeof (int)); } +@%:@include +@%:@include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (int))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (int)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (int)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_int=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_int=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 +echo "${ECHO_T}$ac_cv_sizeof_int" >&6 +cat >>confdefs.h <<_ACEOF +@%:@define SIZEOF_INT $ac_cv_sizeof_int +_ACEOF + + +echo "$as_me:$LINENO: checking for long" >&5 +echo $ECHO_N "checking for long... $ECHO_C" >&6 +if test "${ac_cv_type_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((long *) 0) + return 0; +if (sizeof (long)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_long=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_long=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5 +echo "${ECHO_T}$ac_cv_type_long" >&6 + +echo "$as_me:$LINENO: checking size of long" >&5 +echo $ECHO_N "checking size of long... $ECHO_C" >&6 +if test "${ac_cv_sizeof_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_long" = yes; then + # The cast to unsigned long 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. + 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) (sizeof (long))) >= 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (long))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + 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) (sizeof (long))) < 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (long))) >= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f 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) (sizeof (long))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_long=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +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 +long longval () { return (long) (sizeof (long)); } +unsigned long ulongval () { return (long) (sizeof (long)); } +@%:@include +@%:@include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (long))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (long)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (long)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_long=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_long=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long" >&6 +cat >>confdefs.h <<_ACEOF +@%:@define SIZEOF_LONG $ac_cv_sizeof_long +_ACEOF + + +echo "$as_me:$LINENO: checking for char *" >&5 +echo $ECHO_N "checking for char *... $ECHO_C" >&6 +if test "${ac_cv_type_char_p+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((char * *) 0) + return 0; +if (sizeof (char *)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_char_p=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_char_p=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_char_p" >&5 +echo "${ECHO_T}$ac_cv_type_char_p" >&6 + +echo "$as_me:$LINENO: checking size of char *" >&5 +echo $ECHO_N "checking size of char *... $ECHO_C" >&6 +if test "${ac_cv_sizeof_char_p+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_char_p" = yes; then + # The cast to unsigned long 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. + 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) (sizeof (char *))) >= 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (char *))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + 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) (sizeof (char *))) < 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (char *))) >= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f 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) (sizeof (char *))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_char_p=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (char *), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (char *), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +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 +long longval () { return (long) (sizeof (char *)); } +unsigned long ulongval () { return (long) (sizeof (char *)); } +@%:@include +@%:@include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (char *))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (char *)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (char *)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_char_p=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (char *), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (char *), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_char_p=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_char_p" >&5 +echo "${ECHO_T}$ac_cv_sizeof_char_p" >&6 +cat >>confdefs.h <<_ACEOF +@%:@define SIZEOF_CHAR_P $ac_cv_sizeof_char_p +_ACEOF + + +echo "$as_me:$LINENO: checking for double" >&5 +echo $ECHO_N "checking for double... $ECHO_C" >&6 +if test "${ac_cv_type_double+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((double *) 0) + return 0; +if (sizeof (double)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_double=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_double=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_double" >&5 +echo "${ECHO_T}$ac_cv_type_double" >&6 + +echo "$as_me:$LINENO: checking size of double" >&5 +echo $ECHO_N "checking size of double... $ECHO_C" >&6 +if test "${ac_cv_sizeof_double+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_double" = yes; then + # The cast to unsigned long 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. + 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) (sizeof (double))) >= 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (double))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + 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) (sizeof (double))) < 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (double))) >= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f 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) (sizeof (double))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_double=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (double), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +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 +long longval () { return (long) (sizeof (double)); } +unsigned long ulongval () { return (long) (sizeof (double)); } +@%:@include +@%:@include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (double))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (double)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (double)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_double=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (double), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_double=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_double" >&5 +echo "${ECHO_T}$ac_cv_sizeof_double" >&6 +cat >>confdefs.h <<_ACEOF +@%:@define SIZEOF_DOUBLE $ac_cv_sizeof_double +_ACEOF + + +echo "$as_me:$LINENO: checking for long long" >&5 +echo $ECHO_N "checking for long long... $ECHO_C" >&6 +if test "${ac_cv_type_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((long long *) 0) + return 0; +if (sizeof (long long)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_long_long=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_long_long=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 +echo "${ECHO_T}$ac_cv_type_long_long" >&6 + +echo "$as_me:$LINENO: checking size of long long" >&5 +echo $ECHO_N "checking size of long long... $ECHO_C" >&6 +if test "${ac_cv_sizeof_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_long_long" = yes; then + # The cast to unsigned long 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. + 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) (sizeof (long long))) >= 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (long long))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + 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) (sizeof (long long))) < 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (long long))) >= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f 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) (sizeof (long long))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_long_long=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +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 +long longval () { return (long) (sizeof (long long)); } +unsigned long ulongval () { return (long) (sizeof (long long)); } +@%:@include +@%:@include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (long long))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (long long)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (long long)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_long_long=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_long_long=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6 +cat >>confdefs.h <<_ACEOF +@%:@define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long +_ACEOF + + + +echo "$as_me:$LINENO: checking for u_int" >&5 +echo $ECHO_N "checking for u_int... $ECHO_C" >&6 +if test "${ac_cv_type_u_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((u_int *) 0) + return 0; +if (sizeof (u_int)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_int=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_u_int=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_int" >&5 +echo "${ECHO_T}$ac_cv_type_u_int" >&6 +if test $ac_cv_type_u_int = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define u_int unsigned int +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for u_long" >&5 +echo $ECHO_N "checking for u_long... $ECHO_C" >&6 +if test "${ac_cv_type_u_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((u_long *) 0) + return 0; +if (sizeof (u_long)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_long=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_u_long=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_long" >&5 +echo "${ECHO_T}$ac_cv_type_u_long" >&6 +if test $ac_cv_type_u_long = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define u_long unsigned long +_ACEOF + +fi + + + +if test "$ac_cv_sizeof_short" = 2; then + echo "$as_me:$LINENO: checking for bits16_t" >&5 +echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits16_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits16_t *) 0) + return 0; +if (sizeof (bits16_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits16_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits16_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits16_t" >&6 +if test $ac_cv_type_bits16_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define bits16_t short +_ACEOF + +fi + +elif test "$ac_cv_sizeof_char" = 2; then + echo "$as_me:$LINENO: checking for bits16_t" >&5 +echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits16_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits16_t *) 0) + return 0; +if (sizeof (bits16_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits16_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits16_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits16_t" >&6 +if test $ac_cv_type_bits16_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define bits16_t char +_ACEOF + +fi + +else + echo "$as_me:$LINENO: checking for bits16_t" >&5 +echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits16_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits16_t *) 0) + return 0; +if (sizeof (bits16_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits16_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits16_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits16_t" >&6 +if test $ac_cv_type_bits16_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define bits16_t short +_ACEOF + +fi + +fi + + +if test "$ac_cv_sizeof_short" = 2; then + echo "$as_me:$LINENO: checking for u_bits16_t" >&5 +echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6 +if test "${ac_cv_type_u_bits16_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((u_bits16_t *) 0) + return 0; +if (sizeof (u_bits16_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_bits16_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_u_bits16_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6 +if test $ac_cv_type_u_bits16_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define u_bits16_t unsigned short +_ACEOF + +fi + +elif test "$ac_cv_sizeof_char" = 2; then + echo "$as_me:$LINENO: checking for u_bits16_t" >&5 +echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6 +if test "${ac_cv_type_u_bits16_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((u_bits16_t *) 0) + return 0; +if (sizeof (u_bits16_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_bits16_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_u_bits16_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6 +if test $ac_cv_type_u_bits16_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define u_bits16_t unsigned char +_ACEOF + +fi + +else + echo "$as_me:$LINENO: checking for u_bits16_t" >&5 +echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6 +if test "${ac_cv_type_u_bits16_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((u_bits16_t *) 0) + return 0; +if (sizeof (u_bits16_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_bits16_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_u_bits16_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6 +if test $ac_cv_type_u_bits16_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define u_bits16_t unsigned short +_ACEOF + +fi + +fi + + +if test "$ac_cv_sizeof_int" = 4; then + echo "$as_me:$LINENO: checking for bits32_t" >&5 +echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits32_t *) 0) + return 0; +if (sizeof (bits32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits32_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits32_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits32_t" >&6 +if test $ac_cv_type_bits32_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define bits32_t int +_ACEOF + +fi + +elif test "$ac_cv_sizeof_long" = 4; then + echo "$as_me:$LINENO: checking for bits32_t" >&5 +echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits32_t *) 0) + return 0; +if (sizeof (bits32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits32_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits32_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits32_t" >&6 +if test $ac_cv_type_bits32_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define bits32_t long +_ACEOF + +fi + +else + echo "$as_me:$LINENO: checking for bits32_t" >&5 +echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits32_t *) 0) + return 0; +if (sizeof (bits32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits32_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits32_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits32_t" >&6 +if test $ac_cv_type_bits32_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define bits32_t int +_ACEOF + +fi + +fi + + +if test "$ac_cv_sizeof_int" = 4; then + echo "$as_me:$LINENO: checking for u_bits32_t" >&5 +echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6 +if test "${ac_cv_type_u_bits32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((u_bits32_t *) 0) + return 0; +if (sizeof (u_bits32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_bits32_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_u_bits32_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6 +if test $ac_cv_type_u_bits32_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define u_bits32_t unsigned int +_ACEOF + +fi + +elif test "$ac_cv_sizeof_long" = 4; then + echo "$as_me:$LINENO: checking for u_bits32_t" >&5 +echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6 +if test "${ac_cv_type_u_bits32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((u_bits32_t *) 0) + return 0; +if (sizeof (u_bits32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_bits32_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_u_bits32_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6 +if test $ac_cv_type_u_bits32_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define u_bits32_t unsigned long +_ACEOF + +fi + +else + echo "$as_me:$LINENO: checking for u_bits32_t" >&5 +echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6 +if test "${ac_cv_type_u_bits32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((u_bits32_t *) 0) + return 0; +if (sizeof (u_bits32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_bits32_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_u_bits32_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6 +if test $ac_cv_type_u_bits32_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define u_bits32_t unsigned int +_ACEOF + +fi + +fi + + +if test "$ac_cv_sizeof_char_p" = 8; then + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits64_t *) 0) + return 0; +if (sizeof (bits64_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits64_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits64_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 +if test $ac_cv_type_bits64_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define bits64_t char * +_ACEOF + +fi + +elif test "$ac_cv_sizeof_double" = 8; then + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits64_t *) 0) + return 0; +if (sizeof (bits64_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits64_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits64_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 +if test $ac_cv_type_bits64_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define bits64_t double +_ACEOF + +fi + +elif test -n "$ac_cv_type_long_long" && test "$ac_cv_sizeof_long_long" = 8; then + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits64_t *) 0) + return 0; +if (sizeof (bits64_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits64_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits64_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 +if test $ac_cv_type_bits64_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define bits64_t long long +_ACEOF + +fi + +elif test "$ac_cv_sizeof_long" = 8; then + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits64_t *) 0) + return 0; +if (sizeof (bits64_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits64_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits64_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 +if test $ac_cv_type_bits64_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define bits64_t long +_ACEOF + +fi + +else + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits64_t *) 0) + return 0; +if (sizeof (bits64_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits64_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits64_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 +if test $ac_cv_type_bits64_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define bits64_t double +_ACEOF + +fi + +fi + + + +if test "$ac_cv_sizeof_int" = "$ac_cv_sizeof_char_p"; then + echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 +if test "${ac_cv_type_ptrdiff_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((ptrdiff_t *) 0) + return 0; +if (sizeof (ptrdiff_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ptrdiff_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_ptrdiff_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 +if test $ac_cv_type_ptrdiff_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define ptrdiff_t int +_ACEOF + +fi + +elif test "$ac_cv_sizeof_long" = "$ac_cv_sizeof_char_p"; then + echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 +if test "${ac_cv_type_ptrdiff_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((ptrdiff_t *) 0) + return 0; +if (sizeof (ptrdiff_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ptrdiff_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_ptrdiff_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 +if test $ac_cv_type_ptrdiff_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define ptrdiff_t long +_ACEOF + +fi + +elif test "$ac_cv_type_long_long" = yes && test "$ac_cv_sizeof_long_long" = "$ac_cv_sizeof_char_p"; then + echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 +if test "${ac_cv_type_ptrdiff_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((ptrdiff_t *) 0) + return 0; +if (sizeof (ptrdiff_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ptrdiff_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_ptrdiff_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 +if test $ac_cv_type_ptrdiff_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define ptrdiff_t long long +_ACEOF + +fi + +else + echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 +if test "${ac_cv_type_ptrdiff_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((ptrdiff_t *) 0) + return 0; +if (sizeof (ptrdiff_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ptrdiff_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_ptrdiff_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 +if test $ac_cv_type_ptrdiff_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +@%:@define ptrdiff_t int +_ACEOF + +fi + +fi + + +echo "$as_me:$LINENO: checking whether stat file-mode macros are broken" >&5 +echo $ECHO_N "checking whether stat file-mode macros are broken... $ECHO_C" >&6 +if test "${ac_cv_header_stat_broken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + +#if defined(S_ISBLK) && defined(S_IFDIR) +# if S_ISBLK (S_IFDIR) +You lose. +# endif +#endif + +#if defined(S_ISBLK) && defined(S_IFCHR) +# if S_ISBLK (S_IFCHR) +You lose. +# endif +#endif + +#if defined(S_ISLNK) && defined(S_IFREG) +# if S_ISLNK (S_IFREG) +You lose. +# endif +#endif + +#if defined(S_ISSOCK) && defined(S_IFREG) +# if S_ISSOCK (S_IFREG) +You lose. +# endif +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "You lose" >/dev/null 2>&1; then + ac_cv_header_stat_broken=yes +else + ac_cv_header_stat_broken=no +fi +rm -f conftest* + +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stat_broken" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking whether @%:@! works in shell scripts" >&5 +echo $ECHO_N "checking whether @%:@! works in shell scripts... $ECHO_C" >&6 +if test "${ac_cv_sys_interpreter+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + echo '#! /bin/cat +exit 69 +' >conftest +chmod u+x conftest +(SHELL=/bin/sh; export SHELL; ./conftest >/dev/null) +if test $? -ne 69; then + ac_cv_sys_interpreter=yes +else + ac_cv_sys_interpreter=no +fi +rm -f conftest +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_interpreter" >&5 +echo "${ECHO_T}$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 + +fi + +if test "$ac_cv_func_lstat" = "no"; then +echo "$as_me:$LINENO: checking for lstat" >&5 +echo $ECHO_N "checking for lstat... $ECHO_C" >&6 +if test "${bash_cv_func_lstat+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ + lstat(".",(struct stat *)0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_func_lstat=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_func_lstat=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_func_lstat" >&5 +echo "${ECHO_T}$bash_cv_func_lstat" >&6 +if test $bash_cv_func_lstat = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_LSTAT 1 +_ACEOF + +fi + +fi + + +echo "$as_me:$LINENO: checking whether the ctype macros accept non-ascii characters" >&5 +echo $ECHO_N "checking whether the ctype macros accept non-ascii characters... $ECHO_C" >&6 +if test "${bash_cv_func_ctype_nonascii+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check ctype macros if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#ifdef HAVE_LOCALE_H +#include +#endif +#include +#include + +main(c, v) +int c; +char *v[]; +{ + char *deflocale; + unsigned char x; + int r1, r2; + +#ifdef HAVE_SETLOCALE + /* We take a shot here. If that locale is not known, try the + system default. We try this one because '\342' (226) is + known to be a printable character in that locale. */ + deflocale = setlocale(LC_ALL, "en_US.ISO8859-1"); + if (deflocale == 0) + deflocale = setlocale(LC_ALL, ""); +#endif + + x = '\342'; + r1 = isprint(x); + x -= 128; + r2 = isprint(x); + exit (r1 == 0 || r2 == 0); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_func_ctype_nonascii=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_func_ctype_nonascii=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_func_ctype_nonascii" >&5 +echo "${ECHO_T}$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 + +fi + +echo "$as_me:$LINENO: checking if dup2 fails to clear the close-on-exec flag" >&5 +echo $ECHO_N "checking if dup2 fails to clear the close-on-exec flag... $ECHO_C" >&6 +if test "${bash_cv_dup2_broken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check dup2 if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#include +#include +main() +{ + int fd1, fd2, fl; + fd1 = open("/dev/null", 2); + if (fcntl(fd1, 2, 1) < 0) + exit(1); + fd2 = dup2(fd1, 1); + if (fd2 < 0) + exit(2); + fl = fcntl(fd2, 1, 0); + /* fl will be 1 if dup2 did not reset the close-on-exec flag. */ + exit(fl != 1); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_dup2_broken=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_dup2_broken=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + +fi + +echo "$as_me:$LINENO: result: $bash_cv_dup2_broken" >&5 +echo "${ECHO_T}$bash_cv_dup2_broken" >&6 +if test $bash_cv_dup2_broken = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define DUP2_BROKEN 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking whether pgrps need synchronization" >&5 +echo $ECHO_N "checking whether pgrps need synchronization... $ECHO_C" >&6 +if test "${bash_cv_pgrp_pipe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check pgrp synchronization if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#ifdef HAVE_UNISTD_H +# include +#endif +main() +{ +# ifdef GETPGRP_VOID +# define getpgID() getpgrp() +# else +# define getpgID() getpgrp(0) +# define setpgid(x,y) setpgrp(x,y) +# endif + int pid1, pid2, fds[2]; + int status; + char ok; + + switch (pid1 = fork()) { + case -1: + exit(1); + case 0: + setpgid(0, getpid()); + exit(0); + } + setpgid(pid1, pid1); + + sleep(2); /* let first child die */ + + if (pipe(fds) < 0) + exit(2); + + switch (pid2 = fork()) { + case -1: + exit(3); + case 0: + setpgid(0, pid1); + ok = getpgID() == pid1; + write(fds[1], &ok, 1); + exit(0); + } + setpgid(pid2, pid1); + + close(fds[1]); + if (read(fds[0], &ok, 1) != 1) + exit(4); + wait(&status); + wait(&status); + exit(ok ? 0 : 5); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_pgrp_pipe=no +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_pgrp_pipe=yes +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + +fi + +echo "$as_me:$LINENO: result: $bash_cv_pgrp_pipe" >&5 +echo "${ECHO_T}$bash_cv_pgrp_pipe" >&6 +if test $bash_cv_pgrp_pipe = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define PGRP_PIPE 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for type of signal functions" >&5 +echo $ECHO_N "checking for type of signal functions... $ECHO_C" >&6 +if test "${bash_cv_signal_vintage+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ + + sigset_t ss; + struct sigaction sa; + sigemptyset(&ss); sigsuspend(&ss); + sigaction(SIGINT, &sa, (struct sigaction *) 0); + sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_signal_vintage=posix +else + 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. */ +#include +int +main () +{ + + int mask = sigmask(SIGINT); + sigsetmask(mask); sigblock(mask); sigpause(mask); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_signal_vintage=4.2bsd +else + 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. */ + + #include + RETSIGTYPE foo() { } +int +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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_signal_vintage=svr3 +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_signal_vintage=v7 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi + +echo "$as_me:$LINENO: result: $bash_cv_signal_vintage" >&5 +echo "${ECHO_T}$bash_cv_signal_vintage" >&6 +if test "$bash_cv_signal_vintage" = posix; then +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_POSIX_SIGNALS 1 +_ACEOF + +elif test "$bash_cv_signal_vintage" = "4.2bsd"; then +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_BSD_SIGNALS 1 +_ACEOF + +elif test "$bash_cv_signal_vintage" = svr3; then +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_USG_SIGHOLD 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for sys_errlist and sys_nerr" >&5 +echo $ECHO_N "checking for sys_errlist and sys_nerr... $ECHO_C" >&6 +if test "${bash_cv_sys_errlist+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +extern char *sys_errlist[]; + extern int sys_nerr; + char *msg = sys_errlist[sys_nerr - 1]; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_sys_errlist=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_sys_errlist=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_sys_errlist" >&5 +echo "${ECHO_T}$bash_cv_sys_errlist" >&6 +if test $bash_cv_sys_errlist = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_SYS_ERRLIST 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for sys_siglist in system C library" >&5 +echo $ECHO_N "checking for sys_siglist in system C library... $ECHO_C" >&6 +if test "${bash_cv_sys_siglist+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check for sys_siglist if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifndef SYS_SIGLIST_DECLARED +extern char *sys_siglist[]; +#endif +main() +{ +char *msg = sys_siglist[2]; +exit(msg == 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_sys_siglist=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_sys_siglist=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_sys_siglist" >&5 +echo "${ECHO_T}$bash_cv_sys_siglist" >&6 +if test $bash_cv_sys_siglist = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_SYS_SIGLIST 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for _sys_siglist in signal.h or unistd.h" >&5 +echo $ECHO_N "checking for _sys_siglist in signal.h or unistd.h... $ECHO_C" >&6 +if test "${bash_cv_decl_under_sys_siglist+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef HAVE_UNISTD_H +#include +#endif +int +main () +{ + char *msg = _sys_siglist[2]; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_decl_under_sys_siglist=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_decl_under_sys_siglist=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_decl_under_sys_siglist" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking for _sys_siglist in system C library" >&5 +echo $ECHO_N "checking for _sys_siglist in system C library... $ECHO_C" >&6 +if test "${bash_cv_under_sys_siglist+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check for _sys_siglist if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifndef UNDER_SYS_SIGLIST_DECLARED +extern char *_sys_siglist[]; +#endif +main() +{ +char *msg = (char *)_sys_siglist[2]; +exit(msg == 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_under_sys_siglist=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_under_sys_siglist=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_under_sys_siglist" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking whether signal handlers are of type void" >&5 +echo $ECHO_N "checking whether signal handlers are of type void... $ECHO_C" >&6 +if test "${bash_cv_void_sighandler+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef signal +#undef signal +#endif +#ifdef __cplusplus +extern "C" +#endif +void (*signal ()) (); +int +main () +{ +int i; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_void_sighandler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_void_sighandler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_void_sighandler" >&5 +echo "${ECHO_T}$bash_cv_void_sighandler" >&6 +if test $bash_cv_void_sighandler = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define VOID_SIGHANDLER 1 +_ACEOF + +fi + + + +echo "$as_me:$LINENO: checking for clock_t" >&5 +echo $ECHO_N "checking for clock_t... $ECHO_C" >&6 +if test "${bash_cv_type_clock_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "clock_t" >/dev/null 2>&1; then + bash_cv_type_clock_t=yes +else + bash_cv_type_clock_t=no +fi +rm -f conftest* + +fi + +echo "$as_me:$LINENO: result: $bash_cv_type_clock_t" >&5 +echo "${ECHO_T}$bash_cv_type_clock_t" >&6 + +if test $bash_cv_type_clock_t = no; then + cat >>confdefs.h <<_ACEOF +@%:@define clock_t long +_ACEOF + +fi + + + +echo "$as_me:$LINENO: checking for sigset_t" >&5 +echo $ECHO_N "checking for sigset_t... $ECHO_C" >&6 +if test "${bash_cv_type_sigset_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#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 + +echo "$as_me:$LINENO: result: $bash_cv_type_sigset_t" >&5 +echo "${ECHO_T}$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 + + + +echo "$as_me:$LINENO: checking for quad_t" >&5 +echo $ECHO_N "checking for quad_t... $ECHO_C" >&6 +if test "${bash_cv_type_quad_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + + +_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 + +echo "$as_me:$LINENO: result: $bash_cv_type_quad_t" >&5 +echo "${ECHO_T}$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 + + + +echo "$as_me:$LINENO: checking for intmax_t" >&5 +echo $ECHO_N "checking for intmax_t... $ECHO_C" >&6 +if test "${bash_cv_type_intmax_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + + +_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 + +echo "$as_me:$LINENO: result: $bash_cv_type_intmax_t" >&5 +echo "${ECHO_T}$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 + + + +echo "$as_me:$LINENO: checking for uintmax_t" >&5 +echo $ECHO_N "checking for uintmax_t... $ECHO_C" >&6 +if test "${bash_cv_type_uintmax_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + + +_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 + +echo "$as_me:$LINENO: result: $bash_cv_type_uintmax_t" >&5 +echo "${ECHO_T}$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 + + +echo "$as_me:$LINENO: checking for socklen_t" >&5 +echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6 +if test "${bash_cv_type_socklen_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#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 +else + bash_cv_type_socklen_t=no +fi +rm -f conftest* + +fi + +echo "$as_me:$LINENO: result: $bash_cv_type_socklen_t" >&5 +echo "${ECHO_T}$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 + + fi +if test $bash_cv_type_socklen_t = no; then + cat >>confdefs.h <<_ACEOF +@%:@define socklen_t int +_ACEOF + +fi + +fi +echo "$as_me:$LINENO: checking for size and type of struct rlimit fields" >&5 +echo $ECHO_N "checking for size and type of struct rlimit fields... $ECHO_C" >&6 +if test "${bash_cv_type_rlimit+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_type_rlimit=rlim_t +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check quad_t if cross compiling -- defaulting to long" >&5 +echo "$as_me: WARNING: cannot check quad_t if cross compiling -- defaulting to long" >&2;} + bash_cv_type_rlimit=long +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 +main() +{ +#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_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_type_rlimit=quad_t +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_type_rlimit=long +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi + +echo "$as_me:$LINENO: result: $bash_cv_type_rlimit" >&5 +echo "${ECHO_T}$bash_cv_type_rlimit" >&6 +if test $bash_cv_type_rlimit = quad_t; then +cat >>confdefs.h <<\_ACEOF +@%:@define RLIMTYPE quad_t +_ACEOF + +elif test $bash_cv_type_rlimit = rlim_t; then +cat >>confdefs.h <<\_ACEOF +@%:@define RLIMTYPE rlim_t +_ACEOF + +fi + + + +echo "$as_me:$LINENO: checking for struct termios.c_line" >&5 +echo $ECHO_N "checking for struct termios.c_line... $ECHO_C" >&6 +if test "${ac_cv_member_struct_termios_c_line+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +static struct termios ac_aggr; +if (ac_aggr.c_line) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_termios_c_line=yes +else + 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. */ + +#include +#include + + +int +main () +{ +static struct termios ac_aggr; +if (sizeof ac_aggr.c_line) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_termios_c_line=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_struct_termios_c_line=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_termios_c_line" >&5 +echo "${ECHO_T}$ac_cv_member_struct_termios_c_line" >&6 +if test $ac_cv_member_struct_termios_c_line = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define TERMIOS_LDISC 1 +_ACEOF + +fi + + + +echo "$as_me:$LINENO: checking for struct termio.c_line" >&5 +echo $ECHO_N "checking for struct termio.c_line... $ECHO_C" >&6 +if test "${ac_cv_member_struct_termio_c_line+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +static struct termio ac_aggr; +if (ac_aggr.c_line) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_termio_c_line=yes +else + 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. */ + +#include +#include + + +int +main () +{ +static struct termio ac_aggr; +if (sizeof ac_aggr.c_line) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_termio_c_line=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_struct_termio_c_line=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_termio_c_line" >&5 +echo "${ECHO_T}$ac_cv_member_struct_termio_c_line" >&6 +if test $ac_cv_member_struct_termio_c_line = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define TERMIO_LDISC 1 +_ACEOF + +fi + + + +echo "$as_me:$LINENO: checking for struct dirent.d_ino" >&5 +echo $ECHO_N "checking for struct dirent.d_ino... $ECHO_C" >&6 +if test "${bash_cv_dirent_has_dino+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ +#if defined(HAVE_DIRENT_H) +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif /* SYSNDIR */ +# ifdef HAVE_SYS_DIR_H +# include +# endif /* SYSDIR */ +# ifdef HAVE_NDIR_H +# include +# endif +#endif /* HAVE_DIRENT_H */ + +int +main () +{ + +struct dirent d; int z; z = d.d_ino; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_dirent_has_dino=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_dirent_has_dino=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_dirent_has_dino" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking for struct dirent.d_fileno" >&5 +echo $ECHO_N "checking for struct dirent.d_fileno... $ECHO_C" >&6 +if test "${bash_cv_dirent_has_d_fileno+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ +#if defined(HAVE_DIRENT_H) +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif /* SYSNDIR */ +# ifdef HAVE_SYS_DIR_H +# include +# endif /* SYSDIR */ +# ifdef HAVE_NDIR_H +# include +# endif +#endif /* HAVE_DIRENT_H */ + +int +main () +{ + +struct dirent d; int z; z = d.d_fileno; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_dirent_has_d_fileno=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_dirent_has_d_fileno=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_dirent_has_d_fileno" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking for struct dirent.d_namlen" >&5 +echo $ECHO_N "checking for struct dirent.d_namlen... $ECHO_C" >&6 +if test "${bash_cv_dirent_has_d_namlen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ +#if defined(HAVE_DIRENT_H) +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif /* SYSNDIR */ +# ifdef HAVE_SYS_DIR_H +# include +# endif /* SYSDIR */ +# ifdef HAVE_NDIR_H +# include +# endif +#endif /* HAVE_DIRENT_H */ + +int +main () +{ + +struct dirent d; int z; z = d.d_namlen; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_dirent_has_d_namlen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_dirent_has_d_namlen=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_dirent_has_d_namlen" >&5 +echo "${ECHO_T}$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 + +fi + +echo "$as_me:$LINENO: checking for struct winsize in sys/ioctl.h and termios.h" >&5 +echo $ECHO_N "checking for struct winsize in sys/ioctl.h and termios.h... $ECHO_C" >&6 +if test "${bash_cv_struct_winsize_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 winsize x; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_struct_winsize_header=ioctl_h +else + 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. */ +#include +#include +int +main () +{ +struct winsize x; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_struct_winsize_header=termios_h +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_struct_winsize_header=other +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +if test $bash_cv_struct_winsize_header = ioctl_h; then + echo "$as_me:$LINENO: result: sys/ioctl.h" >&5 +echo "${ECHO_T}sys/ioctl.h" >&6 + cat >>confdefs.h <<\_ACEOF +@%:@define STRUCT_WINSIZE_IN_SYS_IOCTL 1 +_ACEOF + +elif test $bash_cv_struct_winsize_header = termios_h; then + echo "$as_me:$LINENO: result: termios.h" >&5 +echo "${ECHO_T}termios.h" >&6 + cat >>confdefs.h <<\_ACEOF +@%:@define STRUCT_WINSIZE_IN_TERMIOS 1 +_ACEOF + +else + echo "$as_me:$LINENO: result: not found" >&5 +echo "${ECHO_T}not found" >&6 +fi + +echo "$as_me:$LINENO: checking for struct timeval in sys/time.h and time.h" >&5 +echo $ECHO_N "checking for struct timeval in sys/time.h and time.h... $ECHO_C" >&6 +if test "${bash_cv_struct_timeval+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + +echo "$as_me:$LINENO: result: $bash_cv_struct_timeval" >&5 +echo "${ECHO_T}$bash_cv_struct_timeval" >&6 +if test $bash_cv_struct_timeval = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_TIMEVAL 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for struct stat.st_blocks" >&5 +echo $ECHO_N "checking for struct stat.st_blocks... $ECHO_C" >&6 +if test "${ac_cv_member_struct_stat_st_blocks+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_stat_st_blocks=yes +else + 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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_stat_st_blocks=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_struct_stat_st_blocks=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_blocks" >&5 +echo "${ECHO_T}$ac_cv_member_struct_stat_st_blocks" >&6 +if test $ac_cv_member_struct_stat_st_blocks = yes; then + +cat >>confdefs.h <<_ACEOF +@%:@define HAVE_STRUCT_STAT_ST_BLOCKS 1 +_ACEOF + + +fi + +echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5 +echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6 +if test "${ac_cv_struct_tm+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 *tp; tp->tm_sec; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_struct_tm=time.h +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_struct_tm=sys/time.h +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5 +echo "${ECHO_T}$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 + +echo "$as_me:$LINENO: checking for struct tm.tm_zone" >&5 +echo $ECHO_N "checking for struct tm.tm_zone... $ECHO_C" >&6 +if test "${ac_cv_member_struct_tm_tm_zone+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_tm_tm_zone=yes +else + 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. */ +#include +#include <$ac_cv_struct_tm> + + +int +main () +{ +static struct tm ac_aggr; +if (sizeof ac_aggr.tm_zone) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_tm_tm_zone=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_struct_tm_tm_zone=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_zone" >&5 +echo "${ECHO_T}$ac_cv_member_struct_tm_tm_zone" >&6 +if test $ac_cv_member_struct_tm_tm_zone = yes; then + +cat >>confdefs.h <<_ACEOF +@%:@define HAVE_STRUCT_TM_TM_ZONE 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 + echo "$as_me:$LINENO: checking for tzname" >&5 +echo $ECHO_N "checking for tzname... $ECHO_C" >&6 +if test "${ac_cv_var_tzname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifndef tzname /* For SGI. */ +extern char *tzname[]; /* RS6000 and others reject char **tzname. */ +#endif + +int +main () +{ +atoi(*tzname); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_var_tzname=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_var_tzname=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_var_tzname" >&5 +echo "${ECHO_T}$ac_cv_var_tzname" >&6 + if test $ac_cv_var_tzname = yes; then + +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_TZNAME 1 +_ACEOF + + fi +fi + +echo "$as_me:$LINENO: checking for struct timezone in sys/time.h and time.h" >&5 +echo $ECHO_N "checking for struct timezone in sys/time.h and time.h... $ECHO_C" >&6 +if test "${bash_cv_struct_timezone+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 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 +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "struct timezone" >/dev/null 2>&1; then + bash_cv_struct_timezone=yes +else + bash_cv_struct_timezone=no +fi +rm -f conftest* + +fi +rm -f conftest* + + +fi + +echo "$as_me:$LINENO: result: $bash_cv_struct_timezone" >&5 +echo "${ECHO_T}$bash_cv_struct_timezone" >&6 +if test $bash_cv_struct_timezone = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_STRUCT_TIMEZONE 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for the existence of strsignal" >&5 +echo $ECHO_N "checking for the existence of strsignal... $ECHO_C" >&6 +if test "${bash_cv_have_strsignal+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +char *s = (char *)strsignal(2); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_have_strsignal=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_have_strsignal=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_have_strsignal" >&5 +echo "${ECHO_T}$bash_cv_have_strsignal" >&6 +if test $bash_cv_have_strsignal = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_STRSIGNAL 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking if opendir() opens non-directories" >&5 +echo $ECHO_N "checking if opendir() opens non-directories... $ECHO_C" >&6 +if test "${bash_cv_opendir_not_robust+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check opendir if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#include +#include +#include +#ifdef HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ +#if defined(HAVE_DIRENT_H) +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif /* SYSNDIR */ +# ifdef HAVE_SYS_DIR_H +# include +# endif /* SYSDIR */ +# ifdef HAVE_NDIR_H +# include +# endif +#endif /* HAVE_DIRENT_H */ +main() +{ +DIR *dir; +int fd, err; +err = mkdir("/tmp/bash-aclocal", 0700); +if (err < 0) { + perror("mkdir"); + exit(1); +} +unlink("/tmp/bash-aclocal/not_a_directory"); +fd = open("/tmp/bash-aclocal/not_a_directory", O_WRONLY|O_CREAT|O_EXCL, 0666); +write(fd, "\n", 1); +close(fd); +dir = opendir("/tmp/bash-aclocal/not_a_directory"); +unlink("/tmp/bash-aclocal/not_a_directory"); +rmdir("/tmp/bash-aclocal"); +exit (dir == 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_opendir_not_robust=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_opendir_not_robust=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_opendir_not_robust" >&5 +echo "${ECHO_T}$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 + +fi + +echo "$as_me:$LINENO: checking whether ulimit can substitute for getdtablesize" >&5 +echo $ECHO_N "checking whether ulimit can substitute for getdtablesize... $ECHO_C" >&6 +if test "${bash_cv_ulimit_maxfds+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check ulimit if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +main() +{ +long maxfds = ulimit(4, 0L); +exit (maxfds == -1L); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_ulimit_maxfds=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_ulimit_maxfds=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_ulimit_maxfds" >&5 +echo "${ECHO_T}$bash_cv_ulimit_maxfds" >&6 +if test $bash_cv_ulimit_maxfds = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define ULIMIT_MAXFDS 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking to see if getenv can be redefined" >&5 +echo $ECHO_N "checking to see if getenv can be redefined... $ECHO_C" >&6 +if test "${bash_cv_getenv_redef+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check getenv redefinition if cross compiling -- defaulting to yes" >&5 +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 +/* end confdefs.h. */ + +#ifdef HAVE_UNISTD_H +# include +#endif +#ifndef __STDC__ +# ifndef const +# define const +# endif +#endif +char * +getenv (name) +#if defined (__linux__) || defined (__bsdi__) || defined (convex) + const char *name; +#else + char const *name; +#endif /* !__linux__ && !__bsdi__ && !convex */ +{ +return "42"; +} +main() +{ +char *s; +/* The next allows this program to run, but does not allow bash to link + when it redefines getenv. I'm not really interested in figuring out + why not. */ +#if defined (NeXT) +exit(1); +#endif +s = getenv("ABCDE"); +exit(s == 0); /* force optimizer to leave getenv in */ +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_getenv_redef=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_getenv_redef=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_getenv_redef" >&5 +echo "${ECHO_T}$bash_cv_getenv_redef" >&6 +if test $bash_cv_getenv_redef = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define CAN_REDEFINE_GETENV 1 +_ACEOF + +fi + +if test "$ac_cv_func_getcwd" = "yes"; then +echo "$as_me:$LINENO: checking if getcwd() will dynamically allocate memory" >&5 +echo $ECHO_N "checking if getcwd() will dynamically allocate memory... $ECHO_C" >&6 +if test "${bash_cv_getcwd_malloc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check whether getcwd allocates memory when cross-compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#include +#ifdef HAVE_UNISTD_H +#include +#endif + +main() +{ + char *xpwd; + xpwd = getcwd(0, 0); + exit (xpwd == 0); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_getcwd_malloc=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_getcwd_malloc=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_getcwd_malloc" >&5 +echo "${ECHO_T}$bash_cv_getcwd_malloc" >&6 +if test $bash_cv_getcwd_malloc = no; then +cat >>confdefs.h <<\_ACEOF +@%:@define GETCWD_BROKEN 1 +_ACEOF + +case $LIB@&t@OBJS in + "getcwd.$ac_objext" | \ + *" getcwd.$ac_objext" | \ + "getcwd.$ac_objext "* | \ + *" getcwd.$ac_objext "* ) ;; + *) LIB@&t@OBJS="$LIB@&t@OBJS getcwd.$ac_objext" ;; +esac + +fi + +fi + +echo "$as_me:$LINENO: checking for presence of POSIX-style sigsetjmp/siglongjmp" >&5 +echo $ECHO_N "checking for presence of POSIX-style sigsetjmp/siglongjmp... $ECHO_C" >&6 +if test "${bash_cv_func_sigsetjmp+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing" >&5 +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 +/* end confdefs.h. */ + +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#include +#include + +main() +{ +#if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS) +exit (1); +#else + +int code; +sigset_t set, oset; +sigjmp_buf xx; + +/* get the mask */ +sigemptyset(&set); +sigemptyset(&oset); +sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set); +sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset); + +/* save it */ +code = sigsetjmp(xx, 1); +if (code) + exit(0); /* could get sigmask and compare to oset here. */ + +/* change it */ +sigaddset(&set, SIGINT); +sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL); + +/* and siglongjmp */ +siglongjmp(xx, 10); +exit(1); +#endif +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_func_sigsetjmp=present +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_func_sigsetjmp=missing +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_func_sigsetjmp" >&5 +echo "${ECHO_T}$bash_cv_func_sigsetjmp" >&6 +if test $bash_cv_func_sigsetjmp = present; then +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_POSIX_SIGSETJMP 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking whether or not strcoll and strcmp differ" >&5 +echo $ECHO_N "checking whether or not strcoll and strcmp differ... $ECHO_C" >&6 +if test "${bash_cv_func_strcoll_broken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#include +#if defined (HAVE_LOCALE_H) +#include +#endif + +main(c, v) +int c; +char *v[]; +{ + int r1, r2; + char *deflocale, *defcoll; + +#ifdef HAVE_SETLOCALE + deflocale = setlocale(LC_ALL, ""); + defcoll = setlocale(LC_COLLATE, ""); +#endif + +#ifdef HAVE_STRCOLL + /* These two values are taken from tests/glob-test. */ + r1 = strcoll("abd", "aXd"); +#else + r1 = 0; +#endif + r2 = strcmp("abd", "aXd"); + + /* These two should both be greater than 0. It is permissible for + a system to return different values, as long as the sign is the + same. */ + + /* Exit with 1 (failure) if these two values are both > 0, since + this tests whether strcoll(3) is broken with respect to strcmp(3) + in the default locale. */ + exit (r1 > 0 && r2 > 0); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_func_strcoll_broken=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_func_strcoll_broken=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_func_strcoll_broken" >&5 +echo "${ECHO_T}$bash_cv_func_strcoll_broken" >&6 +if test $bash_cv_func_strcoll_broken = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define STRCOLL_BROKEN 1 +_ACEOF + +fi + + + +if test "$ac_cv_func_putenv" = "yes"; then + + + +echo "$as_me:$LINENO: checking for standard-conformant putenv declaration" >&5 +echo $ECHO_N "checking for standard-conformant putenv declaration... $ECHO_C" >&6 +if test "${bash_cv_std_putenv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#include +#endif +#ifndef __STDC__ +# ifndef const +# define const +# endif +#endif +#ifdef PROTOTYPES +extern int putenv (char *); +#else +extern int putenv (); +#endif + +int +main () +{ +return (putenv == 0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_std_putenv=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_std_putenv=no + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_std_putenv" >&5 +echo "${ECHO_T}$bash_cv_std_putenv" >&6 +if test $bash_cv_std_putenv = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_STD_PUTENV 1 +_ACEOF + +fi + +else +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_STD_PUTENV 1 +_ACEOF + +fi +if test "$ac_cv_func_unsetenv" = "yes"; then + + + +echo "$as_me:$LINENO: checking for standard-conformant unsetenv declaration" >&5 +echo $ECHO_N "checking for standard-conformant unsetenv declaration... $ECHO_C" >&6 +if test "${bash_cv_std_unsetenv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#include +#endif +#ifndef __STDC__ +# ifndef const +# define const +# endif +#endif +#ifdef PROTOTYPES +extern int unsetenv (const char *); +#else +extern int unsetenv (); +#endif + +int +main () +{ +return (unsetenv == 0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_std_unsetenv=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_std_unsetenv=no + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_std_unsetenv" >&5 +echo "${ECHO_T}$bash_cv_std_unsetenv" >&6 +if test $bash_cv_std_unsetenv = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_STD_UNSETENV 1 +_ACEOF + +fi + +else +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_STD_UNSETENV 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for printf floating point output in hex notation" >&5 +echo $ECHO_N "checking for printf floating point output in hex notation... $ECHO_C" >&6 +if test "${bash_cv_printf_a_format+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check printf if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#include +#include + +int +main() +{ + double y = 0.0; + char abuf[1024]; + + sprintf(abuf, "%A", y); + exit(strchr(abuf, 'P') == (char *)0); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_printf_a_format=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_printf_a_format=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_printf_a_format" >&5 +echo "${ECHO_T}$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 + +fi + + + + +echo "$as_me:$LINENO: checking if signal handlers must be reinstalled when invoked" >&5 +echo $ECHO_N "checking if signal handlers must be reinstalled when invoked... $ECHO_C" >&6 +if test "${bash_cv_must_reinstall_sighandlers+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#include +#ifdef HAVE_UNISTD_H +#include +#endif + +typedef RETSIGTYPE sigfunc(); + +int nsigint; + +#ifdef HAVE_POSIX_SIGNALS +sigfunc * +set_signal_handler(sig, handler) + int sig; + sigfunc *handler; +{ + struct sigaction act, oact; + act.sa_handler = handler; + act.sa_flags = 0; + sigemptyset (&act.sa_mask); + sigemptyset (&oact.sa_mask); + sigaction (sig, &act, &oact); + return (oact.sa_handler); +} +#else +#define set_signal_handler(s, h) signal(s, h) +#endif + +RETSIGTYPE +sigint(s) +int s; +{ + nsigint++; +} + +main() +{ + nsigint = 0; + set_signal_handler(SIGINT, sigint); + kill((int)getpid(), SIGINT); + kill((int)getpid(), SIGINT); + exit(nsigint != 2); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_must_reinstall_sighandlers=no +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_must_reinstall_sighandlers=yes +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_must_reinstall_sighandlers" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking for presence of necessary job control definitions" >&5 +echo $ECHO_N "checking for presence of necessary job control definitions... $ECHO_C" >&6 +if test "${bash_cv_job_control_missing+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check job control if cross-compiling -- defaulting to missing" >&5 +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 +/* end confdefs.h. */ + +#include +#ifdef HAVE_SYS_WAIT_H +#include +#endif +#ifdef HAVE_UNISTD_H +#include +#endif +#include + +/* Add more tests in here as appropriate. */ +main() +{ +/* signal type */ +#if !defined (HAVE_POSIX_SIGNALS) && !defined (HAVE_BSD_SIGNALS) +exit(1); +#endif + +/* signals and tty control. */ +#if !defined (SIGTSTP) || !defined (SIGSTOP) || !defined (SIGCONT) +exit (1); +#endif + +/* process control */ +#if !defined (WNOHANG) || !defined (WUNTRACED) +exit(1); +#endif + +/* Posix systems have tcgetpgrp and waitpid. */ +#if defined (_POSIX_VERSION) && !defined (HAVE_TCGETPGRP) +exit(1); +#endif + +#if defined (_POSIX_VERSION) && !defined (HAVE_WAITPID) +exit(1); +#endif + +/* Other systems have TIOCSPGRP/TIOCGPRGP and wait3. */ +#if !defined (_POSIX_VERSION) && !defined (HAVE_WAIT3) +exit(1); +#endif + +exit(0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_job_control_missing=present +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_job_control_missing=missing +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_job_control_missing" >&5 +echo "${ECHO_T}$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 + +fi + +echo "$as_me:$LINENO: checking for presence of named pipes" >&5 +echo $ECHO_N "checking for presence of named pipes... $ECHO_C" >&6 +if test "${bash_cv_sys_named_pipes+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check for named pipes if cross-compiling -- defaulting to missing" >&5 +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 +/* end confdefs.h. */ + +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif + +/* Add more tests in here as appropriate. */ +main() +{ +int fd, err; + +#if defined (HAVE_MKFIFO) +exit (0); +#endif + +#if !defined (S_IFIFO) && (defined (_POSIX_VERSION) && !defined (S_ISFIFO)) +exit (1); +#endif + +#if defined (NeXT) +exit (1); +#endif +err = mkdir("/tmp/bash-aclocal", 0700); +if (err < 0) { + perror ("mkdir"); + exit(1); +} +fd = mknod ("/tmp/bash-aclocal/sh-np-autoconf", 0666 | S_IFIFO, 0); +if (fd == -1) { + rmdir ("/tmp/bash-aclocal"); + exit (1); +} +close(fd); +unlink ("/tmp/bash-aclocal/sh-np-autoconf"); +rmdir ("/tmp/bash-aclocal"); +exit(0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_sys_named_pipes=present +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_sys_named_pipes=missing +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_sys_named_pipes" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking whether termios.h defines TIOCGWINSZ" >&5 +echo $ECHO_N "checking whether termios.h defines TIOCGWINSZ... $ECHO_C" >&6 +if test "${ac_cv_sys_tiocgwinsz_in_termios_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef TIOCGWINSZ + yes +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "yes" >/dev/null 2>&1; then + ac_cv_sys_tiocgwinsz_in_termios_h=yes +else + ac_cv_sys_tiocgwinsz_in_termios_h=no +fi +rm -f conftest* + +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_tiocgwinsz_in_termios_h" >&5 +echo "${ECHO_T}$ac_cv_sys_tiocgwinsz_in_termios_h" >&6 + +if test $ac_cv_sys_tiocgwinsz_in_termios_h != yes; then + echo "$as_me:$LINENO: checking whether sys/ioctl.h defines TIOCGWINSZ" >&5 +echo $ECHO_N "checking whether sys/ioctl.h defines TIOCGWINSZ... $ECHO_C" >&6 +if test "${ac_cv_sys_tiocgwinsz_in_sys_ioctl_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef TIOCGWINSZ + yes +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $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 +fi +rm -f conftest* + +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&5 +echo "${ECHO_T}$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 + + fi +fi + +echo "$as_me:$LINENO: checking for TIOCSTAT in sys/ioctl.h" >&5 +echo $ECHO_N "checking for TIOCSTAT in sys/ioctl.h... $ECHO_C" >&6 +if test "${bash_cv_tiocstat_in_ioctl+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +int x = TIOCSTAT; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_tiocstat_in_ioctl=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_tiocstat_in_ioctl=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_tiocstat_in_ioctl" >&5 +echo "${ECHO_T}$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 + +fi + +echo "$as_me:$LINENO: checking for FIONREAD in sys/ioctl.h" >&5 +echo $ECHO_N "checking for FIONREAD in sys/ioctl.h... $ECHO_C" >&6 +if test "${bash_cv_fionread_in_ioctl+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +int x = FIONREAD; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_fionread_in_ioctl=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_fionread_in_ioctl=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_fionread_in_ioctl" >&5 +echo "${ECHO_T}$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 + +fi + + + +echo "$as_me:$LINENO: checking whether WCONTINUED flag to waitpid is unavailable or available but broken" >&5 +echo $ECHO_N "checking whether WCONTINUED flag to waitpid is unavailable or available but broken... $ECHO_C" >&6 +if test "${bash_cv_wcontinued_broken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check WCONTINUED if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#include +#include +#include +#include + +#ifndef errno +extern int errno; +#endif +main() +{ + int x; + + x = waitpid(-1, (int *)0, WNOHANG|WCONTINUED); + if (x == -1 && errno == EINVAL) + exit (1); + else + exit (0); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_wcontinued_broken=no +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_wcontinued_broken=yes +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_wcontinued_broken" >&5 +echo "${ECHO_T}$bash_cv_wcontinued_broken" >&6 +if test $bash_cv_wcontinued_broken = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define WCONTINUED_BROKEN 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for speed_t in sys/types.h" >&5 +echo $ECHO_N "checking for speed_t in sys/types.h... $ECHO_C" >&6 +if test "${bash_cv_speed_t_in_sys_types+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +speed_t x; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_speed_t_in_sys_types=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_speed_t_in_sys_types=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_speed_t_in_sys_types" >&5 +echo "${ECHO_T}$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 + +fi + +echo "$as_me:$LINENO: checking whether getpw functions are declared in pwd.h" >&5 +echo $ECHO_N "checking whether getpw functions are declared in pwd.h... $ECHO_C" >&6 +if test "${bash_cv_getpw_declared+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef HAVE_UNISTD_H +# include +#endif +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "getpwuid" >/dev/null 2>&1; then + bash_cv_getpw_declared=yes +else + bash_cv_getpw_declared=no +fi +rm -f conftest* + +fi + +echo "$as_me:$LINENO: result: $bash_cv_getpw_declared" >&5 +echo "${ECHO_T}$bash_cv_getpw_declared" >&6 +if test $bash_cv_getpw_declared = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_GETPW_DECLS 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for unusable real-time signals due to large values" >&5 +echo $ECHO_N "checking for unusable real-time signals due to large values... $ECHO_C" >&6 +if test "${bash_cv_unusable_rtsigs+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check real-time signals if cross compiling -- defaulting to yes" >&5 +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 +/* end confdefs.h. */ + +#include +#include + +#ifndef NSIG +# define NSIG 64 +#endif + +main () +{ + int n_sigs = 2 * NSIG; +#ifdef SIGRTMIN + int rtmin = SIGRTMIN; +#else + int rtmin = 0; +#endif + + exit(rtmin < n_sigs); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_unusable_rtsigs=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_unusable_rtsigs=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_unusable_rtsigs" >&5 +echo "${ECHO_T}$bash_cv_unusable_rtsigs" >&6 +if test $bash_cv_unusable_rtsigs = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define UNUSABLE_RT_SIGNALS 1 +_ACEOF + +fi + + + + + +if test "$bash_cv_sys_siglist" = no && test "$bash_cv_under_sys_siglist" = no && test "$bash_cv_have_strsignal" = no; then + SIGLIST_O=siglist.o +else + SIGLIST_O= +fi + + + +case "$host_os" in +hpux*) echo "$as_me:$LINENO: checking whether $host_os needs _KERNEL for RLIMIT defines" >&5 +echo $ECHO_N "checking whether $host_os needs _KERNEL for RLIMIT defines... $ECHO_C" >&6 +if test "${bash_cv_kernel_rlimit+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ + + int f; + f = RLIMIT_DATA; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_kernel_rlimit=no +else + 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. */ + +#include +#define _KERNEL +#include +#undef _KERNEL + +int +main () +{ + + int f; + f = RLIMIT_DATA; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_kernel_rlimit=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_kernel_rlimit=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_kernel_rlimit" >&5 +echo "${ECHO_T}$bash_cv_kernel_rlimit" >&6 +if test $bash_cv_kernel_rlimit = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define RLIMIT_NEEDS_KERNEL 1 +_ACEOF + +fi + ;; +esac + +if test "$opt_readline" = yes; then +case "$host_os" in +aix*) prefer_curses=yes ;; +esac + +if test "X$bash_cv_termcap_lib" = "X"; then +_bash_needmsg=yes +else +echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 +_bash_needmsg= +fi +if test "${bash_cv_termcap_lib+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for tgetent" >&5 +echo $ECHO_N "checking for tgetent... $ECHO_C" >&6 +if test "${ac_cv_func_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = tgetent; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != tgetent; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_tgetent" >&5 +echo "${ECHO_T}$ac_cv_func_tgetent" >&6 +if test $ac_cv_func_tgetent = yes; then + bash_cv_termcap_lib=libc +else + echo "$as_me:$LINENO: checking for tgetent in -ltermcap" >&5 +echo $ECHO_N "checking for tgetent in -ltermcap... $ECHO_C" >&6 +if test "${ac_cv_lib_termcap_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_termcap_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_termcap_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_termcap_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_termcap_tgetent" >&6 +if test $ac_cv_lib_termcap_tgetent = yes; then + bash_cv_termcap_lib=libtermcap +else + echo "$as_me:$LINENO: checking for tgetent in -ltinfo" >&5 +echo $ECHO_N "checking for tgetent in -ltinfo... $ECHO_C" >&6 +if test "${ac_cv_lib_tinfo_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_tinfo_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_tinfo_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_tinfo_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_tinfo_tgetent" >&6 +if test $ac_cv_lib_tinfo_tgetent = yes; then + bash_cv_termcap_lib=libtinfo +else + echo "$as_me:$LINENO: checking for tgetent in -lcurses" >&5 +echo $ECHO_N "checking for tgetent in -lcurses... $ECHO_C" >&6 +if test "${ac_cv_lib_curses_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_curses_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_curses_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_curses_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_curses_tgetent" >&6 +if test $ac_cv_lib_curses_tgetent = yes; then + bash_cv_termcap_lib=libcurses +else + echo "$as_me:$LINENO: checking for tgetent in -lncurses" >&5 +echo $ECHO_N "checking for tgetent in -lncurses... $ECHO_C" >&6 +if test "${ac_cv_lib_ncurses_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_ncurses_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_ncurses_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_ncurses_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_ncurses_tgetent" >&6 +if test $ac_cv_lib_ncurses_tgetent = yes; then + bash_cv_termcap_lib=libncurses +else + bash_cv_termcap_lib=gnutermcap +fi + +fi + +fi + +fi + +fi + +fi + +if test "X$_bash_needmsg" = "Xyes"; then +echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: using $bash_cv_termcap_lib" >&5 +echo "${ECHO_T}using $bash_cv_termcap_lib" >&6 +if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then +LDFLAGS="$LDFLAGS -L./lib/termcap" +TERMCAP_LIB="./lib/termcap/libtermcap.a" +TERMCAP_DEP="./lib/termcap/libtermcap.a" +elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then +TERMCAP_LIB=-ltermcap +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libtinfo; then +TERMCAP_LIB=-ltinfo +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libncurses; then +TERMCAP_LIB=-lncurses +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libc; then +TERMCAP_LIB= +TERMCAP_DEP= +else +TERMCAP_LIB=-lcurses +TERMCAP_DEP= +fi + +fi + + + +echo "$as_me:$LINENO: checking whether /dev/fd is available" >&5 +echo $ECHO_N "checking whether /dev/fd is available... $ECHO_C" >&6 +if test "${bash_cv_dev_fd+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -d /dev/fd && test -r /dev/fd/0 < /dev/null; then +# check for systems like FreeBSD 5 that only provide /dev/fd/[012] + exec 3<&0 + if test -r /dev/fd/3; then + bash_cv_dev_fd=standard + else + bash_cv_dev_fd=absent + fi + exec 3<&- + elif test -d /proc/self/fd && test -r /proc/self/fd/0 < /dev/null; then + bash_cv_dev_fd=whacky + else + bash_cv_dev_fd=absent + fi + +fi + +echo "$as_me:$LINENO: result: $bash_cv_dev_fd" >&5 +echo "${ECHO_T}$bash_cv_dev_fd" >&6 +if test $bash_cv_dev_fd = "standard"; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_DEV_FD 1 +_ACEOF + + cat >>confdefs.h <<\_ACEOF +@%:@define DEV_FD_PREFIX "/dev/fd/" +_ACEOF + +elif test $bash_cv_dev_fd = "whacky"; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_DEV_FD 1 +_ACEOF + + cat >>confdefs.h <<\_ACEOF +@%:@define DEV_FD_PREFIX "/proc/self/fd/" +_ACEOF + +fi + +echo "$as_me:$LINENO: checking whether /dev/stdin stdout stderr are available" >&5 +echo $ECHO_N "checking whether /dev/stdin stdout stderr are available... $ECHO_C" >&6 +if test "${bash_cv_dev_stdin+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -d /dev/fd && test -r /dev/stdin < /dev/null; then + bash_cv_dev_stdin=present + elif test -d /proc/self/fd && test -r /dev/stdin < /dev/null; then + bash_cv_dev_stdin=present + else + bash_cv_dev_stdin=absent + fi + +fi + +echo "$as_me:$LINENO: result: $bash_cv_dev_stdin" >&5 +echo "${ECHO_T}$bash_cv_dev_stdin" >&6 +if test $bash_cv_dev_stdin = "present"; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_DEV_STDIN 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for default mail directory" >&5 +echo $ECHO_N "checking for default mail directory... $ECHO_C" >&6 +if test "${bash_cv_mail_dir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -d /var/mail; then + bash_cv_mail_dir=/var/mail + elif test -d /var/spool/mail; then + bash_cv_mail_dir=/var/spool/mail + elif test -d /usr/mail; then + bash_cv_mail_dir=/usr/mail + elif test -d /usr/spool/mail; then + bash_cv_mail_dir=/usr/spool/mail + else + bash_cv_mail_dir=unknown + fi + +fi + +echo "$as_me:$LINENO: result: $bash_cv_mail_dir" >&5 +echo "${ECHO_T}$bash_cv_mail_dir" >&6 +cat >>confdefs.h <<_ACEOF +@%:@define DEFAULT_MAIL_DIRECTORY "$bash_cv_mail_dir" +_ACEOF + + + +if test "$bash_cv_job_control_missing" = missing; then + opt_job_control=no +fi + +if test "$opt_job_control" = yes; then +cat >>confdefs.h <<\_ACEOF +@%:@define JOB_CONTROL 1 +_ACEOF + +JOBS_O=jobs.o +else +JOBS_O=nojobs.o +fi + + + + +LOCAL_DEFS=-DSHELL + + +case "${host_os}" in +sysv4.2*) cat >>confdefs.h <<\_ACEOF +@%:@define SVR4_2 1 +_ACEOF + + cat >>confdefs.h <<\_ACEOF +@%:@define SVR4 1 +_ACEOF + ;; +sysv4*) cat >>confdefs.h <<\_ACEOF +@%:@define SVR4 1 +_ACEOF + ;; +sysv5*) cat >>confdefs.h <<\_ACEOF +@%:@define SVR5 1 +_ACEOF + ;; +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 ;; +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 + ;; + 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" ;; +esac + +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 + +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 + echo "$as_me:$LINENO: checking shared object configuration for loadable builtins" >&5 +echo $ECHO_N "checking shared object configuration for loadable builtins... $ECHO_C" >&6 + eval `${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c "${host_cpu}" -o "${host_os}" -v "${host_vendor}"` + + + + + + + + echo "$as_me:$LINENO: result: $SHOBJ_STATUS" >&5 +echo "${ECHO_T}$SHOBJ_STATUS" >&6 +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 + + + + + + + + + + + + + + + + + + + + + + + + +#AC_SUBST(ALLOCA_SOURCE) +#AC_SUBST(ALLOCA_OBJECT) + + ac_config_files="$ac_config_files Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile lib/intl/Makefile lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in examples/loadables/Makefile examples/loadables/perl/Makefile pathnames.h" + ac_config_commands="$ac_config_commands default" +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `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" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\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" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ 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/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIB@&t@OBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# 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 + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + 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 + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + 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=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # 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 before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, 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 + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +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 sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# 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'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX +@%:@@%:@ Running $as_me. @%:@@%:@ +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by bash $as_me 3.2-devel, which was +generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +bash config.status 3.2-devel +configured by $0, generated by GNU Autoconf 2.59, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2003 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +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=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS section. +# + +# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it + # from automake. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + + +_ACEOF + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "builtins/Makefile" ) CONFIG_FILES="$CONFIG_FILES builtins/Makefile" ;; + "lib/readline/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/readline/Makefile" ;; + "lib/glob/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/glob/Makefile" ;; + "lib/intl/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/intl/Makefile" ;; + "lib/malloc/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/malloc/Makefile" ;; + "lib/sh/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/sh/Makefile" ;; + "lib/termcap/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/termcap/Makefile" ;; + "lib/tilde/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/tilde/Makefile" ;; + "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "support/Makefile" ) CONFIG_FILES="$CONFIG_FILES support/Makefile" ;; + "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "examples/loadables/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/loadables/Makefile" ;; + "examples/loadables/perl/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/loadables/perl/Makefile" ;; + "pathnames.h" ) CONFIG_FILES="$CONFIG_FILES pathnames.h" ;; + "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@EMACS@,$EMACS,;t t +s,@lispdir@,$lispdir,;t t +s,@DEBUGGER_START_FILE@,$DEBUGGER_START_FILE,;t t +s,@TESTSCRIPT@,$TESTSCRIPT,;t t +s,@PURIFY@,$PURIFY,;t t +s,@MALLOC_TARGET@,$MALLOC_TARGET,;t t +s,@MALLOC_SRC@,$MALLOC_SRC,;t t +s,@MALLOC_LIB@,$MALLOC_LIB,;t t +s,@MALLOC_LIBRARY@,$MALLOC_LIBRARY,;t t +s,@MALLOC_LDFLAGS@,$MALLOC_LDFLAGS,;t t +s,@MALLOC_DEP@,$MALLOC_DEP,;t t +s,@htmldir@,$htmldir,;t t +s,@HELPDIR@,$HELPDIR,;t t +s,@HELPDIRDEFINE@,$HELPDIRDEFINE,;t t +s,@HELPINSTALL@,$HELPINSTALL,;t t +s,@HELPSTRINGS@,$HELPSTRINGS,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@CPP@,$CPP,;t t +s,@EGREP@,$EGREP,;t t +s,@CROSS_COMPILE@,$CROSS_COMPILE,;t t +s,@SIGNAMES_H@,$SIGNAMES_H,;t t +s,@SIGNAMES_O@,$SIGNAMES_O,;t t +s,@CC_FOR_BUILD@,$CC_FOR_BUILD,;t t +s,@STATIC_LD@,$STATIC_LD,;t t +s,@CFLAGS_FOR_BUILD@,$CFLAGS_FOR_BUILD,;t t +s,@CPPFLAGS_FOR_BUILD@,$CPPFLAGS_FOR_BUILD,;t t +s,@LDFLAGS_FOR_BUILD@,$LDFLAGS_FOR_BUILD,;t t +s,@RL_VERSION@,$RL_VERSION,;t t +s,@RL_MAJOR@,$RL_MAJOR,;t t +s,@RL_MINOR@,$RL_MINOR,;t t +s,@READLINE_LIB@,$READLINE_LIB,;t t +s,@READLINE_DEP@,$READLINE_DEP,;t t +s,@RL_LIBDIR@,$RL_LIBDIR,;t t +s,@RL_INCLUDEDIR@,$RL_INCLUDEDIR,;t t +s,@RL_INCLUDE@,$RL_INCLUDE,;t t +s,@HISTORY_LIB@,$HISTORY_LIB,;t t +s,@HISTORY_DEP@,$HISTORY_DEP,;t t +s,@HIST_LIBDIR@,$HIST_LIBDIR,;t t +s,@TILDE_LIB@,$TILDE_LIB,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@AR@,$AR,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@YACC@,$YACC,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@MAKE_SHELL@,$MAKE_SHELL,;t t +s,@SIZE@,$SIZE,;t t +s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t +s,@USE_NLS@,$USE_NLS,;t t +s,@MSGFMT@,$MSGFMT,;t t +s,@GMSGFMT@,$GMSGFMT,;t t +s,@XGETTEXT@,$XGETTEXT,;t t +s,@MSGMERGE@,$MSGMERGE,;t t +s,@ALLOCA@,$ALLOCA,;t t +s,@GLIBC21@,$GLIBC21,;t t +s,@LIBICONV@,$LIBICONV,;t t +s,@LTLIBICONV@,$LTLIBICONV,;t t +s,@INTLBISON@,$INTLBISON,;t t +s,@BUILD_INCLUDED_LIBINTL@,$BUILD_INCLUDED_LIBINTL,;t t +s,@USE_INCLUDED_LIBINTL@,$USE_INCLUDED_LIBINTL,;t t +s,@CATOBJEXT@,$CATOBJEXT,;t t +s,@DATADIRNAME@,$DATADIRNAME,;t t +s,@INSTOBJEXT@,$INSTOBJEXT,;t t +s,@GENCAT@,$GENCAT,;t t +s,@INTLOBJS@,$INTLOBJS,;t t +s,@INTL_LIBTOOL_SUFFIX_PREFIX@,$INTL_LIBTOOL_SUFFIX_PREFIX,;t t +s,@INTLLIBS@,$INTLLIBS,;t t +s,@LIBINTL@,$LIBINTL,;t t +s,@LTLIBINTL@,$LTLIBINTL,;t t +s,@POSUB@,$POSUB,;t t +s,@LIB@&t@OBJS@,$LIB@&t@OBJS,;t t +s,@INTL_DEP@,$INTL_DEP,;t t +s,@INTL_INC@,$INTL_INC,;t t +s,@LIBINTL_H@,$LIBINTL_H,;t t +s,@SIGLIST_O@,$SIGLIST_O,;t t +s,@TERMCAP_LIB@,$TERMCAP_LIB,;t t +s,@TERMCAP_DEP@,$TERMCAP_DEP,;t t +s,@JOBS_O@,$JOBS_O,;t t +s,@SHOBJ_CC@,$SHOBJ_CC,;t t +s,@SHOBJ_CFLAGS@,$SHOBJ_CFLAGS,;t t +s,@SHOBJ_LD@,$SHOBJ_LD,;t t +s,@SHOBJ_LDFLAGS@,$SHOBJ_LDFLAGS,;t t +s,@SHOBJ_XLDFLAGS@,$SHOBJ_XLDFLAGS,;t t +s,@SHOBJ_LIBS@,$SHOBJ_LIBS,;t t +s,@SHOBJ_STATUS@,$SHOBJ_STATUS,;t t +s,@PROFILE_FLAGS@,$PROFILE_FLAGS,;t t +s,@incdir@,$incdir,;t t +s,@BUILD_DIR@,$BUILD_DIR,;t t +s,@ARFLAGS@,$ARFLAGS,;t t +s,@BASHVERS@,$BASHVERS,;t t +s,@RELSTATUS@,$RELSTATUS,;t t +s,@DEBUG@,$DEBUG,;t t +s,@MALLOC_DEBUG@,$MALLOC_DEBUG,;t t +s,@LOCAL_LIBS@,$LOCAL_LIBS,;t t +s,@LOCAL_CFLAGS@,$LOCAL_CFLAGS,;t t +s,@LOCAL_LDFLAGS@,$LOCAL_LDFLAGS,;t t +s,@LOCAL_DEFS@,$LOCAL_DEFS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + # Do quote $f, to prevent DOS paths from being IFS'd. + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # grep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\_ACEOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + default-1 ) + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + GMOFILES= + UPDATEPOFILES= + DUMMYPOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done ;; + default ) +# Makefile uses this timestamp file to record whether config.h is up to date. +echo timestamp > stamp-h + ;; + esac +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + 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; } +fi + diff --git a/bash-20060316/autom4te.cache/requests b/bash-20060316/autom4te.cache/requests new file mode 100644 index 000000000..84e4075e3 --- /dev/null +++ b/bash-20060316/autom4te.cache/requests @@ -0,0 +1,116 @@ +# This file was generated. +# It contains the lists of macros which have been traced. +# It can be safely removed. + +@request = ( + bless( [ + '0', + 1, + [ + '/sw/share/autoconf' + ], + [ + '/sw/share/autoconf/autoconf/autoconf.m4f', + 'aclocal.m4', + 'configure.in' + ], + { + 'm4_pattern_forbid' => 1, + 'AC_CONFIG_LIBOBJ_DIR' => 1, + 'AC_C_VOLATILE' => 1, + 'AC_TYPE_OFF_T' => 1, + 'AC_FUNC_CLOSEDIR_VOID' => 1, + 'AC_REPLACE_FNMATCH' => 1, + 'AC_PROG_LIBTOOL' => 1, + 'AC_FUNC_STAT' => 1, + 'AC_HEADER_TIME' => 1, + 'AC_FUNC_WAIT3' => 1, + 'AC_FUNC_LSTAT' => 1, + 'AC_STRUCT_TM' => 1, + 'AM_AUTOMAKE_VERSION' => 1, + 'AC_TYPE_MODE_T' => 1, + 'AC_FUNC_GETMNTENT' => 1, + 'AC_FUNC_STRTOD' => 1, + 'AC_CHECK_HEADERS' => 1, + 'AC_FUNC_STRNLEN' => 1, + 'm4_sinclude' => 1, + 'AC_PROG_CXX' => 1, + 'AC_PATH_X' => 1, + 'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1, + 'AC_PROG_AWK' => 1, + '_m4_warn' => 1, + 'AC_HEADER_STDC' => 1, + 'AC_HEADER_MAJOR' => 1, + 'AC_FUNC_ERROR_AT_LINE' => 1, + 'AC_PROG_GCC_TRADITIONAL' => 1, + 'AC_LIBSOURCE' => 1, + 'AC_FUNC_MBRTOWC' => 1, + 'AC_STRUCT_ST_BLOCKS' => 1, + 'AC_TYPE_SIGNAL' => 1, + 'AC_TYPE_UID_T' => 1, + 'AC_CONFIG_AUX_DIR' => 1, + 'AC_PROG_MAKE_SET' => 1, + 'sinclude' => 1, + 'm4_pattern_allow' => 1, + 'AC_DEFINE_TRACE_LITERAL' => 1, + 'AC_FUNC_STRERROR_R' => 1, + 'AC_PROG_CC' => 1, + 'AC_FUNC_FORK' => 1, + 'AC_DECL_SYS_SIGLIST' => 1, + 'AC_FUNC_VPRINTF' => 1, + 'AC_FUNC_STRCOLL' => 1, + 'AC_PROG_YACC' => 1, + 'AC_INIT' => 1, + 'AC_STRUCT_TIMEZONE' => 1, + 'AC_FUNC_CHOWN' => 1, + 'AC_SUBST' => 1, + 'AC_FUNC_ALLOCA' => 1, + 'AC_FUNC_GETPGRP' => 1, + 'AC_CANONICAL_HOST' => 1, + 'AC_PROG_RANLIB' => 1, + 'AM_INIT_AUTOMAKE' => 1, + 'AC_FUNC_SETPGRP' => 1, + 'AC_CONFIG_SUBDIRS' => 1, + 'AC_FUNC_MMAP' => 1, + 'AC_FUNC_REALLOC' => 1, + 'AC_TYPE_SIZE_T' => 1, + 'AC_CHECK_TYPES' => 1, + 'AC_CONFIG_LINKS' => 1, + 'AC_CHECK_MEMBERS' => 1, + 'AM_MAINTAINER_MODE' => 1, + 'AC_FUNC_UTIME_NULL' => 1, + 'AC_FUNC_SELECT_ARGTYPES' => 1, + 'AC_FUNC_STRFTIME' => 1, + 'AC_HEADER_STAT' => 1, + 'AC_PROG_CPP' => 1, + 'AC_C_INLINE' => 1, + 'AC_TYPE_PID_T' => 1, + 'AC_PROG_LEX' => 1, + 'AC_C_CONST' => 1, + 'AC_CONFIG_FILES' => 1, + 'include' => 1, + 'AC_FUNC_SETVBUF_REVERSED' => 1, + 'AC_PROG_INSTALL' => 1, + 'AM_GNU_GETTEXT' => 1, + 'AC_CHECK_LIB' => 1, + 'AC_FUNC_OBSTACK' => 1, + 'AC_FUNC_MALLOC' => 1, + 'AC_FUNC_GETGROUPS' => 1, + 'AC_FUNC_GETLOADAVG' => 1, + 'AH_OUTPUT' => 1, + 'AC_FUNC_FSEEKO' => 1, + 'AM_PROG_CC_C_O' => 1, + 'AC_FUNC_MKTIME' => 1, + 'AC_CANONICAL_SYSTEM' => 1, + 'AM_CONDITIONAL' => 1, + 'AC_CONFIG_HEADERS' => 1, + 'AC_HEADER_SYS_WAIT' => 1, + 'AC_FUNC_MEMCMP' => 1, + 'AC_PROG_LN_S' => 1, + 'm4_include' => 1, + 'AC_HEADER_DIRENT' => 1, + 'AC_CHECK_FUNCS' => 1 + } + ], 'Autom4te::Request' ) + ); + diff --git a/bash-20060316/autom4te.cache/traces.0 b/bash-20060316/autom4te.cache/traces.0 new file mode 100644 index 000000000..eb2242f1d --- /dev/null +++ b/bash-20060316/autom4te.cache/traces.0 @@ -0,0 +1,1821 @@ +m4trace:configure.in:30: -1- AC_INIT([bash], [3.2-devel], [bug-bash@gnu.org]) +m4trace:configure.in:30: -1- m4_pattern_forbid([^_?A[CHUM]_]) +m4trace:configure.in:30: -1- m4_pattern_forbid([_AC_]) +m4trace:configure.in:30: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) +m4trace:configure.in:30: -1- m4_pattern_allow([^AS_FLAGS$]) +m4trace:configure.in:30: -1- m4_pattern_forbid([^_?m4_]) +m4trace:configure.in:30: -1- m4_pattern_forbid([^dnl$]) +m4trace:configure.in:30: -1- m4_pattern_forbid([^_?AS_]) +m4trace:configure.in:30: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}]) +m4trace:configure.in:30: -1- AC_SUBST([PATH_SEPARATOR]) +m4trace:configure.in:30: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) +m4trace:configure.in:30: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) +m4trace:configure.in:30: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) +m4trace:configure.in:30: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) +m4trace:configure.in:30: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) +m4trace:configure.in:30: -1- AC_SUBST([exec_prefix], [NONE]) +m4trace:configure.in:30: -1- AC_SUBST([prefix], [NONE]) +m4trace:configure.in:30: -1- AC_SUBST([program_transform_name], [s,x,x,]) +m4trace:configure.in:30: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) +m4trace:configure.in:30: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) +m4trace:configure.in:30: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) +m4trace:configure.in:30: -1- AC_SUBST([datadir], ['${prefix}/share']) +m4trace:configure.in:30: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) +m4trace:configure.in:30: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) +m4trace:configure.in:30: -1- AC_SUBST([localstatedir], ['${prefix}/var']) +m4trace:configure.in:30: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) +m4trace:configure.in:30: -1- AC_SUBST([includedir], ['${prefix}/include']) +m4trace:configure.in:30: -1- AC_SUBST([oldincludedir], ['/usr/include']) +m4trace:configure.in:30: -1- AC_SUBST([infodir], ['${prefix}/info']) +m4trace:configure.in:30: -1- AC_SUBST([mandir], ['${prefix}/man']) +m4trace:configure.in:30: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) +m4trace:configure.in:30: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ +#undef PACKAGE_NAME]) +m4trace:configure.in:30: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) +m4trace:configure.in:30: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME]) +m4trace:configure.in:30: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) +m4trace:configure.in:30: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ +#undef PACKAGE_VERSION]) +m4trace:configure.in:30: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) +m4trace:configure.in:30: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING]) +m4trace:configure.in:30: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) +m4trace:configure.in:30: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT]) +m4trace:configure.in:30: -1- AC_SUBST([build_alias]) +m4trace:configure.in:30: -1- AC_SUBST([host_alias]) +m4trace:configure.in:30: -1- AC_SUBST([target_alias]) +m4trace:configure.in:30: -1- AC_SUBST([DEFS]) +m4trace:configure.in:30: -1- AC_SUBST([ECHO_C]) +m4trace:configure.in:30: -1- AC_SUBST([ECHO_N]) +m4trace:configure.in:30: -1- AC_SUBST([ECHO_T]) +m4trace:configure.in:30: -1- AC_SUBST([LIBS]) +m4trace:configure.in:37: -1- AC_CONFIG_AUX_DIR([./support]) +m4trace:configure.in:38: -1- AC_CONFIG_HEADERS([config.h]) +m4trace:configure.in:52: -1- AC_CANONICAL_HOST +m4trace:configure.in:52: -1- AC_SUBST([build], [$ac_cv_build]) +m4trace:configure.in:52: -1- AC_SUBST([build_cpu], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`]) +m4trace:configure.in:52: -1- AC_SUBST([build_vendor], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`]) +m4trace:configure.in:52: -1- AC_SUBST([build_os], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`]) +m4trace:configure.in:52: -1- AC_SUBST([host], [$ac_cv_host]) +m4trace:configure.in:52: -1- AC_SUBST([host_cpu], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`]) +m4trace:configure.in:52: -1- AC_SUBST([host_vendor], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`]) +m4trace:configure.in:52: -1- AC_SUBST([host_os], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`]) +m4trace:configure.in:102: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +aclocal.m4:1932: AM_PATH_LISPDIR is expanded from... +configure.in:102: the top level]) +m4trace:configure.in:102: -1- AC_SUBST([EMACS]) +m4trace:configure.in:102: -1- AC_SUBST([lispdir]) +m4trace:configure.in:103: -1- AC_SUBST([DEBUGGER_START_FILE]) +m4trace:configure.in:107: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:107: the top level]) +m4trace:configure.in:108: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:108: the top level]) +m4trace:configure.in:109: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:109: the top level]) +m4trace:configure.in:110: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:110: the top level]) +m4trace:configure.in:111: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:111: the top level]) +m4trace:configure.in:112: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:112: the top level]) +m4trace:configure.in:113: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:113: the top level]) +m4trace:configure.in:124: -1- AC_DEFINE_TRACE_LITERAL([USING_BASH_MALLOC]) +m4trace:configure.in:134: -1- AC_DEFINE_TRACE_LITERAL([DISABLE_MALLOC_WRAPPERS]) +m4trace:configure.in:144: -1- AC_DEFINE_TRACE_LITERAL([AFS]) +m4trace:configure.in:192: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:192: the top level]) +m4trace:configure.in:207: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:207: the top level]) +m4trace:configure.in:208: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:208: the top level]) +m4trace:configure.in:209: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:209: the top level]) +m4trace:configure.in:210: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:210: the top level]) +m4trace:configure.in:211: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:211: the top level]) +m4trace:configure.in:212: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:212: the top level]) +m4trace:configure.in:213: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:213: the top level]) +m4trace:configure.in:214: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:214: the top level]) +m4trace:configure.in:215: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:215: the top level]) +m4trace:configure.in:216: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:216: the top level]) +m4trace:configure.in:217: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:217: the top level]) +m4trace:configure.in:218: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:218: the top level]) +m4trace:configure.in:219: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:219: the top level]) +m4trace:configure.in:220: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:220: the top level]) +m4trace:configure.in:221: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:221: the top level]) +m4trace:configure.in:222: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:222: the top level]) +m4trace:configure.in:223: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:223: the top level]) +m4trace:configure.in:224: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:224: the top level]) +m4trace:configure.in:225: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:225: the top level]) +m4trace:configure.in:226: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:226: the top level]) +m4trace:configure.in:227: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:227: the top level]) +m4trace:configure.in:228: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:228: the top level]) +m4trace:configure.in:229: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:229: the top level]) +m4trace:configure.in:230: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:230: the top level]) +m4trace:configure.in:231: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:231: the top level]) +m4trace:configure.in:232: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:232: the top level]) +m4trace:configure.in:233: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:233: the top level]) +m4trace:configure.in:234: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:234: the top level]) +m4trace:configure.in:235: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:235: the top level]) +m4trace:configure.in:238: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:238: the top level]) +m4trace:configure.in:239: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:239: the top level]) +m4trace:configure.in:240: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.in:240: the top level]) +m4trace:configure.in:249: -1- AC_DEFINE_TRACE_LITERAL([ALIAS]) +m4trace:configure.in:252: -1- AC_DEFINE_TRACE_LITERAL([PUSHD_AND_POPD]) +m4trace:configure.in:255: -1- AC_DEFINE_TRACE_LITERAL([RESTRICTED_SHELL]) +m4trace:configure.in:258: -1- AC_DEFINE_TRACE_LITERAL([PROCESS_SUBSTITUTION]) +m4trace:configure.in:261: -1- AC_DEFINE_TRACE_LITERAL([PROMPT_STRING_DECODE]) +m4trace:configure.in:264: -1- AC_DEFINE_TRACE_LITERAL([SELECT_COMMAND]) +m4trace:configure.in:267: -1- AC_DEFINE_TRACE_LITERAL([HELP_BUILTIN]) +m4trace:configure.in:270: -1- AC_DEFINE_TRACE_LITERAL([ARRAY_VARS]) +m4trace:configure.in:273: -1- AC_DEFINE_TRACE_LITERAL([DPAREN_ARITHMETIC]) +m4trace:configure.in:276: -1- AC_DEFINE_TRACE_LITERAL([BRACE_EXPANSION]) +m4trace:configure.in:279: -1- AC_DEFINE_TRACE_LITERAL([DISABLED_BUILTINS]) +m4trace:configure.in:282: -1- AC_DEFINE_TRACE_LITERAL([COMMAND_TIMING]) +m4trace:configure.in:285: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_ECHO_TO_XPG]) +m4trace:configure.in:288: -1- AC_DEFINE_TRACE_LITERAL([STRICT_POSIX]) +m4trace:configure.in:291: -1- AC_DEFINE_TRACE_LITERAL([EXTENDED_GLOB]) +m4trace:configure.in:294: -1- AC_DEFINE_TRACE_LITERAL([COND_COMMAND]) +m4trace:configure.in:297: -1- AC_DEFINE_TRACE_LITERAL([COND_REGEXP]) +m4trace:configure.in:300: -1- AC_DEFINE_TRACE_LITERAL([ARITH_FOR_COMMAND]) +m4trace:configure.in:303: -1- AC_DEFINE_TRACE_LITERAL([NETWORK_REDIRECTIONS]) +m4trace:configure.in:306: -1- AC_DEFINE_TRACE_LITERAL([PROGRAMMABLE_COMPLETION]) +m4trace:configure.in:309: -1- AC_DEFINE_TRACE_LITERAL([NO_MULTIBYTE_SUPPORT]) +m4trace:configure.in:312: -1- AC_DEFINE_TRACE_LITERAL([DEBUGGER]) +m4trace:configure.in:316: -1- AC_DEFINE_TRACE_LITERAL([MEMSCRAMBLE]) +m4trace:configure.in:341: -1- AC_SUBST([TESTSCRIPT]) +m4trace:configure.in:342: -1- AC_SUBST([PURIFY]) +m4trace:configure.in:343: -1- AC_SUBST([MALLOC_TARGET]) +m4trace:configure.in:344: -1- AC_SUBST([MALLOC_SRC]) +m4trace:configure.in:346: -1- AC_SUBST([MALLOC_LIB]) +m4trace:configure.in:347: -1- AC_SUBST([MALLOC_LIBRARY]) +m4trace:configure.in:348: -1- AC_SUBST([MALLOC_LDFLAGS]) +m4trace:configure.in:349: -1- AC_SUBST([MALLOC_DEP]) +m4trace:configure.in:351: -1- AC_SUBST([htmldir]) +m4trace:configure.in:353: -1- AC_SUBST([HELPDIR]) +m4trace:configure.in:354: -1- AC_SUBST([HELPDIRDEFINE]) +m4trace:configure.in:355: -1- AC_SUBST([HELPINSTALL]) +m4trace:configure.in:356: -1- AC_SUBST([HELPSTRINGS]) +m4trace:configure.in:365: -1- AC_PROG_CC +m4trace:configure.in:365: -1- AC_SUBST([CC]) +m4trace:configure.in:365: -1- AC_SUBST([CFLAGS]) +m4trace:configure.in:365: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.in:365: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.in:365: -1- AC_SUBST([CC]) +m4trace:configure.in:365: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.in:365: -1- AC_SUBST([CC]) +m4trace:configure.in:365: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.in:365: -1- AC_SUBST([CC]) +m4trace:configure.in:365: -1- AC_SUBST([CC]) +m4trace:configure.in:365: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.in:365: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) +m4trace:configure.in:365: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) +m4trace:configure.in:368: -1- AC_CHECK_LIB([cposix], [strerror], [LIBS="$LIBS -lcposix"]) +m4trace:configure.in:369: -1- AC_HEADER_STDC +m4trace:configure.in:369: -1- AC_PROG_CPP +m4trace:configure.in:369: -1- AC_SUBST([CPP]) +m4trace:configure.in:369: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.in:369: -1- AC_SUBST([CPP]) +m4trace:configure.in:369: -1- AC_SUBST([EGREP]) +m4trace:configure.in:369: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) +m4trace:configure.in:369: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS]) +m4trace:configure.in:369: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h], [], [], [$ac_includes_default]) +m4trace:configure.in:369: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H]) +m4trace:configure.in:369: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H]) +m4trace:configure.in:369: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H]) +m4trace:configure.in:369: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H]) +m4trace:configure.in:369: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H]) +m4trace:configure.in:369: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H]) +m4trace:configure.in:369: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H]) +m4trace:configure.in:369: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H]) +m4trace:configure.in:369: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H]) +m4trace:configure.in:369: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_SOURCE]) +m4trace:configure.in:369: -1- AH_OUTPUT([_POSIX_SOURCE], [/* Define to 1 if you need to in order for `stat\' and other things to work. */ +#undef _POSIX_SOURCE]) +m4trace:configure.in:369: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_1_SOURCE]) +m4trace:configure.in:369: -1- AH_OUTPUT([_POSIX_1_SOURCE], [/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +#undef _POSIX_1_SOURCE]) +m4trace:configure.in:369: -1- AC_DEFINE_TRACE_LITERAL([_MINIX]) +m4trace:configure.in:369: -1- AH_OUTPUT([_MINIX], [/* Define to 1 if on MINIX. */ +#undef _MINIX]) +m4trace:configure.in:371: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS]) +m4trace:configure.in:371: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS]) +m4trace:configure.in:371: -1- AC_DEFINE_TRACE_LITERAL([_LARGE_FILES]) +m4trace:configure.in:371: -1- AH_OUTPUT([_LARGE_FILES], [/* Define for large files, on AIX-style hosts. */ +#undef _LARGE_FILES]) +m4trace:configure.in:407: -1- AC_SUBST([CROSS_COMPILE]) +m4trace:configure.in:409: -1- AC_SUBST([SIGNAMES_H]) +m4trace:configure.in:410: -1- AC_SUBST([SIGNAMES_O]) +m4trace:configure.in:419: -1- AC_SUBST([CC_FOR_BUILD]) +m4trace:configure.in:442: -1- _m4_warn([obsolete], [The macro `ac_cv_prog_gcc' is obsolete. +You should run autoupdate.], [autoconf/c.m4:440: ac_cv_prog_gcc is expanded from... +configure.in:442: the top level]) +m4trace:configure.in:461: -1- AC_SUBST([CFLAGS]) +m4trace:configure.in:462: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.in:463: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.in:464: -1- AC_SUBST([STATIC_LD]) +m4trace:configure.in:466: -1- AC_SUBST([CFLAGS_FOR_BUILD]) +m4trace:configure.in:467: -1- AC_SUBST([CPPFLAGS_FOR_BUILD]) +m4trace:configure.in:468: -1- AC_SUBST([LDFLAGS_FOR_BUILD]) +m4trace:configure.in:470: -1- AC_PROG_GCC_TRADITIONAL +m4trace:configure.in:482: -1- AC_CHECK_LIB([termcap], [tgetent], [bash_cv_termcap_lib=libtermcap], [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo, + [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, + [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, + bash_cv_termcap_lib=gnutermcap)])])]) +m4trace:configure.in:482: -1- AC_CHECK_LIB([tinfo], [tgetent], [bash_cv_termcap_lib=libtinfo], [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, + [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, + bash_cv_termcap_lib=gnutermcap)])]) +m4trace:configure.in:482: -1- AC_CHECK_LIB([curses], [tgetent], [bash_cv_termcap_lib=libcurses], [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, + bash_cv_termcap_lib=gnutermcap)]) +m4trace:configure.in:482: -1- AC_CHECK_LIB([ncurses], [tgetent], [bash_cv_termcap_lib=libncurses], [bash_cv_termcap_lib=gnutermcap]) +m4trace:configure.in:482: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:1825: RL_LIB_READLINE_VERSION is expanded from... +configure.in:482: the top level]) +m4trace:configure.in:482: -1- AC_DEFINE_TRACE_LITERAL([RL_READLINE_VERSION]) +m4trace:configure.in:482: -1- AH_OUTPUT([RL_READLINE_VERSION], [/* encoded version of the installed readline library */ +#undef RL_READLINE_VERSION]) +m4trace:configure.in:482: -1- AC_DEFINE_TRACE_LITERAL([RL_VERSION_MAJOR]) +m4trace:configure.in:482: -1- AH_OUTPUT([RL_VERSION_MAJOR], [/* major version of installed readline library */ +#undef RL_VERSION_MAJOR]) +m4trace:configure.in:482: -1- AC_DEFINE_TRACE_LITERAL([RL_VERSION_MINOR]) +m4trace:configure.in:482: -1- AH_OUTPUT([RL_VERSION_MINOR], [/* minor version of installed readline library */ +#undef RL_VERSION_MINOR]) +m4trace:configure.in:482: -1- AC_SUBST([RL_VERSION]) +m4trace:configure.in:482: -1- AC_SUBST([RL_MAJOR]) +m4trace:configure.in:482: -1- AC_SUBST([RL_MINOR]) +m4trace:configure.in:495: -1- AC_DEFINE_TRACE_LITERAL([READLINE]) +m4trace:configure.in:530: -1- AC_DEFINE_TRACE_LITERAL([HISTORY]) +m4trace:configure.in:533: -1- AC_DEFINE_TRACE_LITERAL([BANG_HISTORY]) +m4trace:configure.in:563: -1- AC_SUBST([READLINE_LIB]) +m4trace:configure.in:564: -1- AC_SUBST([READLINE_DEP]) +m4trace:configure.in:565: -1- AC_SUBST([RL_LIBDIR]) +m4trace:configure.in:566: -1- AC_SUBST([RL_INCLUDEDIR]) +m4trace:configure.in:567: -1- AC_SUBST([RL_INCLUDE]) +m4trace:configure.in:568: -1- AC_SUBST([HISTORY_LIB]) +m4trace:configure.in:569: -1- AC_SUBST([HISTORY_DEP]) +m4trace:configure.in:570: -1- AC_SUBST([HIST_LIBDIR]) +m4trace:configure.in:571: -1- AC_SUBST([TILDE_LIB]) +m4trace:configure.in:576: -1- AC_PROG_INSTALL +m4trace:configure.in:576: -1- AC_SUBST([INSTALL_PROGRAM]) +m4trace:configure.in:576: -1- AC_SUBST([INSTALL_SCRIPT]) +m4trace:configure.in:576: -1- AC_SUBST([INSTALL_DATA]) +m4trace:configure.in:577: -1- AC_SUBST([AR]) +m4trace:configure.in:581: -1- AC_PROG_RANLIB +m4trace:configure.in:581: -1- AC_SUBST([RANLIB]) +m4trace:configure.in:581: -1- AC_SUBST([ac_ct_RANLIB]) +m4trace:configure.in:582: -1- AC_PROG_YACC +m4trace:configure.in:582: -1- AC_SUBST([YACC]) +m4trace:configure.in:583: -1- AC_PROG_MAKE_SET +m4trace:configure.in:583: -1- AC_SUBST([SET_MAKE]) +m4trace:configure.in:589: -1- AC_SUBST([MAKE_SHELL]) +m4trace:configure.in:611: -1- AC_SUBST([SIZE]) +m4trace:configure.in:614: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE]) +m4trace:configure.in:617: -1- AC_C_CONST +m4trace:configure.in:617: -1- AC_DEFINE_TRACE_LITERAL([const]) +m4trace:configure.in:617: -1- AH_OUTPUT([const], [/* Define to empty if `const\' does not conform to ANSI C. */ +#undef const]) +m4trace:configure.in:618: -1- AC_C_INLINE +m4trace:configure.in:618: -1- AH_OUTPUT([inline], [/* Define to `__inline__\' or `__inline\' if that\'s what the C compiler + calls it, or to nothing if \'inline\' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif]) +m4trace:configure.in:619: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN]) +m4trace:configure.in:619: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define to 1 if your processor stores words with the most significant byte + first (like Motorola and SPARC, unlike Intel and VAX). */ +#undef WORDS_BIGENDIAN]) +m4trace:configure.in:620: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRINGIZE]) +m4trace:configure.in:620: -1- AH_OUTPUT([HAVE_STRINGIZE], [/* Define to 1 if cpp supports the ANSI @%:@ stringizing operator. */ +#undef HAVE_STRINGIZE]) +m4trace:configure.in:621: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_DOUBLE]) +m4trace:configure.in:621: -1- AH_OUTPUT([HAVE_LONG_DOUBLE], [/* Define to 1 if long double works and has more range or precision than + double. */ +#undef HAVE_LONG_DOUBLE]) +m4trace:configure.in:622: -1- AC_DEFINE_TRACE_LITERAL([PROTOTYPES]) +m4trace:configure.in:622: -1- AH_OUTPUT([PROTOTYPES], [/* Define to 1 if the C compiler supports function prototypes. */ +#undef PROTOTYPES]) +m4trace:configure.in:622: -1- AC_DEFINE_TRACE_LITERAL([__PROTOTYPES]) +m4trace:configure.in:622: -1- AH_OUTPUT([__PROTOTYPES], [/* Define like PROTOTYPES; this can be used by system headers. */ +#undef __PROTOTYPES]) +m4trace:configure.in:623: -1- AH_OUTPUT([__CHAR_UNSIGNED__], [/* Define to 1 if type `char\' is unsigned and you are not using gcc. */ +#ifndef __CHAR_UNSIGNED__ +# undef __CHAR_UNSIGNED__ +#endif]) +m4trace:configure.in:623: -1- AC_DEFINE_TRACE_LITERAL([__CHAR_UNSIGNED__]) +m4trace:configure.in:626: -1- AM_GNU_GETTEXT([no-libtool], [need-ngettext], [lib/intl]) +m4trace:configure.in:626: -1- AC_SUBST([MKINSTALLDIRS]) +m4trace:configure.in:626: -1- AC_SUBST([USE_NLS]) +m4trace:configure.in:626: -1- AC_SUBST([MSGFMT]) +m4trace:configure.in:626: -1- AC_SUBST([GMSGFMT], [$ac_cv_path_GMSGFMT]) +m4trace:configure.in:626: -1- AC_SUBST([XGETTEXT]) +m4trace:configure.in:626: -1- AC_SUBST([MSGMERGE]) +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_OUTPUT_COMMANDS' is obsolete. +You should run autoupdate.], [autoconf/status.m4:318: AC_OUTPUT_COMMANDS is expanded from... +aclocal.m4:3788: AM_PO_SUBDIRS is expanded from... +configure.in:626: AM_PO_SUBDIRS is required by... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -3- _m4_warn([obsolete], [The macro `_AC_OUTPUT_COMMANDS_CNT' is obsolete. +You should run autoupdate.], [autoconf/status.m4:321: _AC_OUTPUT_COMMANDS_CNT is expanded from... +autoconf/status.m4:318: AC_OUTPUT_COMMANDS is expanded from... +aclocal.m4:3788: AM_PO_SUBDIRS is expanded from... +configure.in:626: AM_PO_SUBDIRS is required by... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- AC_TYPE_OFF_T +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([off_t]) +m4trace:configure.in:626: -1- AH_OUTPUT([off_t], [/* Define to `long\' if does not define. */ +#undef off_t]) +m4trace:configure.in:626: -1- AC_TYPE_SIZE_T +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([size_t]) +m4trace:configure.in:626: -1- AH_OUTPUT([size_t], [/* Define to `unsigned\' if does not define. */ +#undef size_t]) +m4trace:configure.in:626: -1- AC_FUNC_ALLOCA +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have and it should be used (not on Ultrix). + */ +#undef HAVE_ALLOCA_H]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have `alloca\', as a function or macro. */ +#undef HAVE_ALLOCA]) +m4trace:configure.in:626: -1- AC_LIBSOURCE([alloca.c]) +m4trace:configure.in:626: -1- AC_SUBST([ALLOCA], [alloca.$ac_objext]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA]) +m4trace:configure.in:626: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using `alloca.c\'. */ +#undef C_ALLOCA]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([CRAY_STACKSEG_END]) +m4trace:configure.in:626: -1- AH_OUTPUT([CRAY_STACKSEG_END], [/* Define to one of `_getb67\', `GETB67\', `getb67\' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c\' support on those systems. + */ +#undef CRAY_STACKSEG_END]) +m4trace:configure.in:626: -1- AH_OUTPUT([STACK_DIRECTION], [/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +@%:@undef STACK_DIRECTION]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION]) +m4trace:configure.in:626: -1- AC_FUNC_MMAP +m4trace:configure.in:626: -1- AC_CHECK_HEADERS([stdlib.h unistd.h]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H]) +m4trace:configure.in:626: -1- AC_CHECK_FUNCS([getpagesize]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */ +#undef HAVE_GETPAGESIZE]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have a working `mmap\' system call. */ +#undef HAVE_MMAP]) +m4trace:configure.in:626: -1- AC_SUBST([GLIBC21]) +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:2581: gt_INTDIV0 is expanded from... +configure.in:626: gt_INTDIV0 is required by... +aclocal.m4:2370: AM_INTL_SUBDIR is expanded from... +configure.in:626: AM_INTL_SUBDIR is required by... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([INTDIV0_RAISES_SIGFPE]) +m4trace:configure.in:626: -1- AH_OUTPUT([INTDIV0_RAISES_SIGFPE], [/* Define if integer division by zero raises signal SIGFPE. */ +#undef INTDIV0_RAISES_SIGFPE]) +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:2636: jm_AC_HEADER_INTTYPES_H is expanded from... +configure.in:626: jm_AC_HEADER_INTTYPES_H is required by... +aclocal.m4:3939: jm_AC_TYPE_UINTMAX_T is expanded from... +configure.in:626: jm_AC_TYPE_UINTMAX_T is required by... +aclocal.m4:2370: AM_INTL_SUBDIR is expanded from... +configure.in:626: AM_INTL_SUBDIR is required by... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H_WITH_UINTMAX]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_INTTYPES_H_WITH_UINTMAX], [/* Define if exists, doesn\'t clash with , and + declares uintmax_t. */ +#undef HAVE_INTTYPES_H_WITH_UINTMAX]) +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:3907: jm_AC_HEADER_STDINT_H is expanded from... +configure.in:626: jm_AC_HEADER_STDINT_H is required by... +aclocal.m4:3939: jm_AC_TYPE_UINTMAX_T is expanded from... +configure.in:626: jm_AC_TYPE_UINTMAX_T is required by... +aclocal.m4:2370: AM_INTL_SUBDIR is expanded from... +configure.in:626: AM_INTL_SUBDIR is required by... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDINT_H_WITH_UINTMAX]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_STDINT_H_WITH_UINTMAX], [/* Define if exists, doesn\'t clash with , and declares + uintmax_t. */ +#undef HAVE_STDINT_H_WITH_UINTMAX]) +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:3962: jm_AC_TYPE_UNSIGNED_LONG_LONG is expanded from... +configure.in:626: jm_AC_TYPE_UNSIGNED_LONG_LONG is required by... +aclocal.m4:3939: jm_AC_TYPE_UINTMAX_T is expanded from... +configure.in:626: jm_AC_TYPE_UINTMAX_T is required by... +aclocal.m4:2370: AM_INTL_SUBDIR is expanded from... +configure.in:626: AM_INTL_SUBDIR is required by... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_UNSIGNED_LONG_LONG], [/* Define if you have the unsigned long long type. */ +#undef HAVE_UNSIGNED_LONG_LONG]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t]) +m4trace:configure.in:626: -1- AH_OUTPUT([uintmax_t], [/* Define to unsigned long or unsigned long long if and + don\'t define. */ +#undef uintmax_t]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UINTMAX_T]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_UINTMAX_T], [/* Define if you have the \'uintmax_t\' type in or . */ +#undef HAVE_UINTMAX_T]) +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:2608: gt_HEADER_INTTYPES_H is expanded from... +configure.in:626: gt_HEADER_INTTYPES_H is required by... +aclocal.m4:2370: AM_INTL_SUBDIR is expanded from... +configure.in:626: AM_INTL_SUBDIR is required by... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define if exists and doesn\'t clash with . */ +#undef HAVE_INTTYPES_H]) +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:2668: gt_INTTYPES_PRI is expanded from... +configure.in:626: gt_INTTYPES_PRI is required by... +aclocal.m4:2370: AM_INTL_SUBDIR is expanded from... +configure.in:626: AM_INTL_SUBDIR is required by... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([PRI_MACROS_BROKEN]) +m4trace:configure.in:626: -1- AH_OUTPUT([PRI_MACROS_BROKEN], [/* Define if exists and defines unusable PRI* macros. */ +#undef PRI_MACROS_BROKEN]) +m4trace:configure.in:626: -1- AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ +stdlib.h string.h unistd.h sys/param.h]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_ARGZ_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_ARGZ_H]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_LIMITS_H]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_LOCALE_H]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_NL_TYPES_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_NL_TYPES_H]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_MALLOC_H]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STDDEF_H]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_PARAM_H]) +m4trace:configure.in:626: -1- AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ +geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ +strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next \ +__fsetlocking]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_FEOF_UNLOCKED], [/* Define to 1 if you have the `feof_unlocked\' function. */ +#undef HAVE_FEOF_UNLOCKED]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_FGETS_UNLOCKED], [/* Define to 1 if you have the `fgets_unlocked\' function. */ +#undef HAVE_FGETS_UNLOCKED]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_GETC_UNLOCKED], [/* Define to 1 if you have the `getc_unlocked\' function. */ +#undef HAVE_GETC_UNLOCKED]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the `getcwd\' function. */ +#undef HAVE_GETCWD]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_GETEGID], [/* Define to 1 if you have the `getegid\' function. */ +#undef HAVE_GETEGID]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_GETEUID], [/* Define to 1 if you have the `geteuid\' function. */ +#undef HAVE_GETEUID]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_GETGID], [/* Define to 1 if you have the `getgid\' function. */ +#undef HAVE_GETGID]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_GETUID], [/* Define to 1 if you have the `getuid\' function. */ +#undef HAVE_GETUID]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the `mempcpy\' function. */ +#undef HAVE_MEMPCPY]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_MUNMAP], [/* Define to 1 if you have the `munmap\' function. */ +#undef HAVE_MUNMAP]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_PUTENV], [/* Define to 1 if you have the `putenv\' function. */ +#undef HAVE_PUTENV]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_SETENV], [/* Define to 1 if you have the `setenv\' function. */ +#undef HAVE_SETENV]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the `setlocale\' function. */ +#undef HAVE_SETLOCALE]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the `stpcpy\' function. */ +#undef HAVE_STPCPY]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the `strcasecmp\' function. */ +#undef HAVE_STRCASECMP]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the `strdup\' function. */ +#undef HAVE_STRDUP]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the `strtoul\' function. */ +#undef HAVE_STRTOUL]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_TSEARCH], [/* Define to 1 if you have the `tsearch\' function. */ +#undef HAVE_TSEARCH]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE___ARGZ_COUNT], [/* Define to 1 if you have the `__argz_count\' function. */ +#undef HAVE___ARGZ_COUNT]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE___ARGZ_STRINGIFY], [/* Define to 1 if you have the `__argz_stringify\' function. */ +#undef HAVE___ARGZ_STRINGIFY]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE___ARGZ_NEXT], [/* Define to 1 if you have the `__argz_next\' function. */ +#undef HAVE___ARGZ_NEXT]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE___FSETLOCKING], [/* Define to 1 if you have the `__fsetlocking\' function. */ +#undef HAVE___FSETLOCKING]) +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:2481: AM_ICONV_LINK is expanded from... +aclocal.m4:2509: AM_ICONV is expanded from... +aclocal.m4:2370: AM_INTL_SUBDIR is expanded from... +configure.in:626: AM_INTL_SUBDIR is required by... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:2481: AM_ICONV_LINK is expanded from... +aclocal.m4:2509: AM_ICONV is expanded from... +aclocal.m4:2370: AM_INTL_SUBDIR is expanded from... +configure.in:626: AM_INTL_SUBDIR is required by... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ICONV]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_ICONV], [/* Define if you have the iconv() function. */ +#undef HAVE_ICONV]) +m4trace:configure.in:626: -1- AC_SUBST([LIBICONV]) +m4trace:configure.in:626: -1- AC_SUBST([LTLIBICONV]) +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:2509: AM_ICONV is expanded from... +aclocal.m4:2370: AM_INTL_SUBDIR is expanded from... +configure.in:626: AM_INTL_SUBDIR is required by... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([ICONV_CONST]) +m4trace:configure.in:626: -1- AH_OUTPUT([ICONV_CONST], [/* Define as const if the declaration of iconv() needs const. */ +#undef ICONV_CONST]) +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:1959: AM_LANGINFO_CODESET is expanded from... +aclocal.m4:2370: AM_INTL_SUBDIR is expanded from... +configure.in:626: AM_INTL_SUBDIR is required by... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_CODESET]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_LANGINFO_CODESET], [/* Define if you have and nl_langinfo(CODESET). */ +#undef HAVE_LANGINFO_CODESET]) +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:2726: AM_LC_MESSAGES is expanded from... +aclocal.m4:2370: AM_INTL_SUBDIR is expanded from... +configure.in:626: AM_INTL_SUBDIR is required by... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LC_MESSAGES]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_LC_MESSAGES], [/* Define if your file defines LC_MESSAGES. */ +#undef HAVE_LC_MESSAGES]) +m4trace:configure.in:626: -1- AC_SUBST([INTLBISON]) +m4trace:configure.in:626: -1- AC_SUBST([USE_NLS]) +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:2300: AM_GNU_GETTEXT is expanded from... +configure.in:626: the top level]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_NLS]) +m4trace:configure.in:626: -1- AH_OUTPUT([ENABLE_NLS], [/* Define to 1 if translation of program messages to the user\'s native + language is requested. */ +#undef ENABLE_NLS]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTEXT]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_GETTEXT], [/* Define if the GNU gettext() function is already present or preinstalled. */ +#undef HAVE_GETTEXT]) +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DCGETTEXT]) +m4trace:configure.in:626: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +#undef HAVE_DCGETTEXT]) +m4trace:configure.in:626: -1- AC_SUBST([BUILD_INCLUDED_LIBINTL]) +m4trace:configure.in:626: -1- AC_SUBST([USE_INCLUDED_LIBINTL]) +m4trace:configure.in:626: -1- AC_SUBST([CATOBJEXT]) +m4trace:configure.in:626: -1- AC_SUBST([DATADIRNAME]) +m4trace:configure.in:626: -1- AC_SUBST([INSTOBJEXT]) +m4trace:configure.in:626: -1- AC_SUBST([GENCAT]) +m4trace:configure.in:626: -1- AC_SUBST([INTLOBJS]) +m4trace:configure.in:626: -1- AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX]) +m4trace:configure.in:626: -1- AC_SUBST([INTLLIBS]) +m4trace:configure.in:626: -1- AC_SUBST([LIBINTL]) +m4trace:configure.in:626: -1- AC_SUBST([LTLIBINTL]) +m4trace:configure.in:626: -1- AC_SUBST([POSUB]) +m4trace:configure.in:629: -1- AC_HEADER_DIRENT +m4trace:configure.in:629: -1- AH_OUTPUT([HAVE_DIRENT_H], [/* Define to 1 if you have the header file, and it defines `DIR\'. + */ +#undef HAVE_DIRENT_H]) +m4trace:configure.in:629: -1- AH_OUTPUT([HAVE_SYS_NDIR_H], [/* Define to 1 if you have the header file, and it defines `DIR\'. + */ +#undef HAVE_SYS_NDIR_H]) +m4trace:configure.in:629: -1- AH_OUTPUT([HAVE_SYS_DIR_H], [/* Define to 1 if you have the header file, and it defines `DIR\'. + */ +#undef HAVE_SYS_DIR_H]) +m4trace:configure.in:629: -1- AH_OUTPUT([HAVE_NDIR_H], [/* Define to 1 if you have the header file, and it defines `DIR\'. */ +#undef HAVE_NDIR_H]) +m4trace:configure.in:630: -1- AC_HEADER_TIME +m4trace:configure.in:630: -1- AC_DEFINE_TRACE_LITERAL([TIME_WITH_SYS_TIME]) +m4trace:configure.in:630: -1- AH_OUTPUT([TIME_WITH_SYS_TIME], [/* Define to 1 if you can safely include both and . */ +#undef TIME_WITH_SYS_TIME]) +m4trace:configure.in:632: -1- AC_CHECK_HEADERS([inttypes.h]) +m4trace:configure.in:632: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H]) +m4trace:configure.in:636: -1- 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 \ + stddef.h stdint.h netdb.h pwd.h grp.h strings.h regex.h]) +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H]) +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H]) +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_STDARG_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STDARG_H]) +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_VARARGS_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_VARARGS_H]) +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_LIMITS_H]) +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H]) +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H]) +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_LOCALE_H]) +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_TERMCAP_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_TERMCAP_H]) +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_TERMIO_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_TERMIO_H]) +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_TERMIOS_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_TERMIOS_H]) +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H]) +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STDDEF_H]) +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H]) +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_NETDB_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_NETDB_H]) +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_PWD_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_PWD_H]) +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_GRP_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_GRP_H]) +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H]) +m4trace:configure.in:636: -1- AH_OUTPUT([HAVE_REGEX_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_REGEX_H]) +m4trace:configure.in:639: -1- 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]) +m4trace:configure.in:639: -1- AH_OUTPUT([HAVE_SYS_PTE_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_PTE_H]) +m4trace:configure.in:639: -1- AH_OUTPUT([HAVE_SYS_STREAM_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STREAM_H]) +m4trace:configure.in:639: -1- AH_OUTPUT([HAVE_SYS_SELECT_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SELECT_H]) +m4trace:configure.in:639: -1- AH_OUTPUT([HAVE_SYS_FILE_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_FILE_H]) +m4trace:configure.in:639: -1- AH_OUTPUT([HAVE_SYS_RESOURCE_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_RESOURCE_H]) +m4trace:configure.in:639: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_PARAM_H]) +m4trace:configure.in:639: -1- AH_OUTPUT([HAVE_SYS_SOCKET_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SOCKET_H]) +m4trace:configure.in:639: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H]) +m4trace:configure.in:639: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIME_H]) +m4trace:configure.in:639: -1- AH_OUTPUT([HAVE_SYS_TIMES_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIMES_H]) +m4trace:configure.in:639: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H]) +m4trace:configure.in:639: -1- AH_OUTPUT([HAVE_SYS_WAIT_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_WAIT_H]) +m4trace:configure.in:640: -1- AC_CHECK_HEADERS([netinet/in.h arpa/inet.h]) +m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_NETINET_IN_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_NETINET_IN_H]) +m4trace:configure.in:640: -1- AH_OUTPUT([HAVE_ARPA_INET_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_ARPA_INET_H]) +m4trace:configure.in:651: -1- AC_FUNC_ALLOCA +m4trace:configure.in:651: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H]) +m4trace:configure.in:651: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have and it should be used (not on Ultrix). + */ +#undef HAVE_ALLOCA_H]) +m4trace:configure.in:651: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA]) +m4trace:configure.in:651: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have `alloca\', as a function or macro. */ +#undef HAVE_ALLOCA]) +m4trace:configure.in:651: -1- AC_LIBSOURCE([alloca.c]) +m4trace:configure.in:651: -1- AC_SUBST([ALLOCA], [alloca.$ac_objext]) +m4trace:configure.in:651: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA]) +m4trace:configure.in:651: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using `alloca.c\'. */ +#undef C_ALLOCA]) +m4trace:configure.in:651: -1- AC_DEFINE_TRACE_LITERAL([CRAY_STACKSEG_END]) +m4trace:configure.in:651: -1- AH_OUTPUT([CRAY_STACKSEG_END], [/* Define to one of `_getb67\', `GETB67\', `getb67\' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c\' support on those systems. + */ +#undef CRAY_STACKSEG_END]) +m4trace:configure.in:651: -1- AH_OUTPUT([STACK_DIRECTION], [/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +@%:@undef STACK_DIRECTION]) +m4trace:configure.in:651: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION]) +m4trace:configure.in:652: -1- AC_FUNC_GETPGRP +m4trace:configure.in:652: -1- AC_DEFINE_TRACE_LITERAL([GETPGRP_VOID]) +m4trace:configure.in:652: -1- AH_OUTPUT([GETPGRP_VOID], [/* Define to 1 if the `getpgrp\' function requires zero arguments. */ +#undef GETPGRP_VOID]) +m4trace:configure.in:653: -1- AC_FUNC_SETVBUF_REVERSED +m4trace:configure.in:653: -1- AC_DEFINE_TRACE_LITERAL([SETVBUF_REVERSED]) +m4trace:configure.in:653: -1- AH_OUTPUT([SETVBUF_REVERSED], [/* Define to 1 if the `setvbuf\' function takes the buffering type as its + second argument and the buffer pointer as the third, as on System V before + release 3. */ +#undef SETVBUF_REVERSED]) +m4trace:configure.in:654: -1- AC_FUNC_VPRINTF +m4trace:configure.in:654: -1- AC_CHECK_FUNCS([vprintf], [ +AC_CHECK_FUNC(_doprnt, + [AC_DEFINE(HAVE_DOPRNT, 1, + [Define to 1 if you don't have `vprintf' but do have + `_doprnt.'])])]) +m4trace:configure.in:654: -1- AH_OUTPUT([HAVE_VPRINTF], [/* Define to 1 if you have the `vprintf\' function. */ +#undef HAVE_VPRINTF]) +m4trace:configure.in:654: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOPRNT]) +m4trace:configure.in:654: -1- AH_OUTPUT([HAVE_DOPRNT], [/* Define to 1 if you don\'t have `vprintf\' but do have `_doprnt.\' */ +#undef HAVE_DOPRNT]) +m4trace:configure.in:655: -1- AC_FUNC_STRCOLL +m4trace:configure.in:655: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCOLL]) +m4trace:configure.in:655: -1- AH_OUTPUT([HAVE_STRCOLL], [/* Define to 1 if you have the `strcoll\' function and it is properly defined. + */ +#undef HAVE_STRCOLL]) +m4trace:configure.in:676: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VPRINTF]) +m4trace:configure.in:681: -1- AC_LIBSOURCE([vprint.c]) +m4trace:configure.in:681: -1- AC_SUBST([LIB@&t@OBJS]) +m4trace:configure.in:685: -1- AC_TYPE_SIGNAL +m4trace:configure.in:685: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE]) +m4trace:configure.in:685: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (`int\' or `void\'). */ +#undef RETSIGTYPE]) +m4trace:configure.in:688: -2- AC_DEFINE_TRACE_LITERAL([HAVE_SETOSTYPE]) +m4trace:configure.in:689: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WAIT3]) +m4trace:configure.in:690: -2- AC_DEFINE_TRACE_LITERAL([HAVE_ISINF_IN_LIBC]) +m4trace:configure.in:693: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MKFIFO]) +m4trace:configure.in:693: -2- AC_DEFINE_TRACE_LITERAL([MKFIFO_MISSING]) +m4trace:configure.in:699: -1- AC_CHECK_FUNCS([dup2 eaccess fcntl getdtablesize getgroups gethostname \ + getpagesize getpeername getrlimit getrusage gettimeofday \ + kill killpg lstat readlink sbrk select setdtablesize \ + tcgetpgrp uname ulimit waitpid]) +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_DUP2], [/* Define to 1 if you have the `dup2\' function. */ +#undef HAVE_DUP2]) +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_EACCESS], [/* Define to 1 if you have the `eaccess\' function. */ +#undef HAVE_EACCESS]) +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_FCNTL], [/* Define to 1 if you have the `fcntl\' function. */ +#undef HAVE_FCNTL]) +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_GETDTABLESIZE], [/* Define to 1 if you have the `getdtablesize\' function. */ +#undef HAVE_GETDTABLESIZE]) +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_GETGROUPS], [/* Define to 1 if you have the `getgroups\' function. */ +#undef HAVE_GETGROUPS]) +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_GETHOSTNAME], [/* Define to 1 if you have the `gethostname\' function. */ +#undef HAVE_GETHOSTNAME]) +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */ +#undef HAVE_GETPAGESIZE]) +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_GETPEERNAME], [/* Define to 1 if you have the `getpeername\' function. */ +#undef HAVE_GETPEERNAME]) +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_GETRLIMIT], [/* Define to 1 if you have the `getrlimit\' function. */ +#undef HAVE_GETRLIMIT]) +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_GETRUSAGE], [/* Define to 1 if you have the `getrusage\' function. */ +#undef HAVE_GETRUSAGE]) +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have the `gettimeofday\' function. */ +#undef HAVE_GETTIMEOFDAY]) +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_KILL], [/* Define to 1 if you have the `kill\' function. */ +#undef HAVE_KILL]) +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_KILLPG], [/* Define to 1 if you have the `killpg\' function. */ +#undef HAVE_KILLPG]) +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_LSTAT], [/* Define to 1 if you have the `lstat\' function. */ +#undef HAVE_LSTAT]) +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_READLINK], [/* Define to 1 if you have the `readlink\' function. */ +#undef HAVE_READLINK]) +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_SBRK], [/* Define to 1 if you have the `sbrk\' function. */ +#undef HAVE_SBRK]) +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_SELECT], [/* Define to 1 if you have the `select\' function. */ +#undef HAVE_SELECT]) +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_SETDTABLESIZE], [/* Define to 1 if you have the `setdtablesize\' function. */ +#undef HAVE_SETDTABLESIZE]) +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_TCGETPGRP], [/* Define to 1 if you have the `tcgetpgrp\' function. */ +#undef HAVE_TCGETPGRP]) +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_UNAME], [/* Define to 1 if you have the `uname\' function. */ +#undef HAVE_UNAME]) +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_ULIMIT], [/* Define to 1 if you have the `ulimit\' function. */ +#undef HAVE_ULIMIT]) +m4trace:configure.in:699: -1- AH_OUTPUT([HAVE_WAITPID], [/* Define to 1 if you have the `waitpid\' function. */ +#undef HAVE_WAITPID]) +m4trace:configure.in:700: -1- AC_LIBSOURCE([rename.c]) +m4trace:configure.in:700: -1- AC_CHECK_FUNCS([rename], [], [_AC_LIBOBJ($ac_func)]) +m4trace:configure.in:700: -1- AH_OUTPUT([HAVE_RENAME], [/* Define to 1 if you have the `rename\' function. */ +#undef HAVE_RENAME]) +m4trace:configure.in:700: -1- AC_SUBST([LIB@&t@OBJS]) +m4trace:configure.in:707: -1- AC_CHECK_FUNCS([bcopy bzero confstr fnmatch \ + getaddrinfo gethostbyname getservbyname getservent inet_aton \ + memmove pathconf putenv raise regcomp regexec \ + setenv setlinebuf setlocale setvbuf siginterrupt strchr \ + sysconf tcgetattr times ttyname tzset unsetenv]) +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_BCOPY], [/* Define to 1 if you have the `bcopy\' function. */ +#undef HAVE_BCOPY]) +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_BZERO], [/* Define to 1 if you have the `bzero\' function. */ +#undef HAVE_BZERO]) +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_CONFSTR], [/* Define to 1 if you have the `confstr\' function. */ +#undef HAVE_CONFSTR]) +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_FNMATCH], [/* Define to 1 if you have the `fnmatch\' function. */ +#undef HAVE_FNMATCH]) +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_GETADDRINFO], [/* Define to 1 if you have the `getaddrinfo\' function. */ +#undef HAVE_GETADDRINFO]) +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_GETHOSTBYNAME], [/* Define to 1 if you have the `gethostbyname\' function. */ +#undef HAVE_GETHOSTBYNAME]) +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_GETSERVBYNAME], [/* Define to 1 if you have the `getservbyname\' function. */ +#undef HAVE_GETSERVBYNAME]) +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_GETSERVENT], [/* Define to 1 if you have the `getservent\' function. */ +#undef HAVE_GETSERVENT]) +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_INET_ATON], [/* Define to 1 if you have the `inet_aton\' function. */ +#undef HAVE_INET_ATON]) +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_MEMMOVE], [/* Define to 1 if you have the `memmove\' function. */ +#undef HAVE_MEMMOVE]) +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_PATHCONF], [/* Define to 1 if you have the `pathconf\' function. */ +#undef HAVE_PATHCONF]) +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_PUTENV], [/* Define to 1 if you have the `putenv\' function. */ +#undef HAVE_PUTENV]) +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_RAISE], [/* Define to 1 if you have the `raise\' function. */ +#undef HAVE_RAISE]) +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_REGCOMP], [/* Define to 1 if you have the `regcomp\' function. */ +#undef HAVE_REGCOMP]) +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_REGEXEC], [/* Define to 1 if you have the `regexec\' function. */ +#undef HAVE_REGEXEC]) +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_SETENV], [/* Define to 1 if you have the `setenv\' function. */ +#undef HAVE_SETENV]) +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_SETLINEBUF], [/* Define to 1 if you have the `setlinebuf\' function. */ +#undef HAVE_SETLINEBUF]) +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the `setlocale\' function. */ +#undef HAVE_SETLOCALE]) +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_SETVBUF], [/* Define to 1 if you have the `setvbuf\' function. */ +#undef HAVE_SETVBUF]) +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_SIGINTERRUPT], [/* Define to 1 if you have the `siginterrupt\' function. */ +#undef HAVE_SIGINTERRUPT]) +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_STRCHR], [/* Define to 1 if you have the `strchr\' function. */ +#undef HAVE_STRCHR]) +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_SYSCONF], [/* Define to 1 if you have the `sysconf\' function. */ +#undef HAVE_SYSCONF]) +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_TCGETATTR], [/* Define to 1 if you have the `tcgetattr\' function. */ +#undef HAVE_TCGETATTR]) +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_TIMES], [/* Define to 1 if you have the `times\' function. */ +#undef HAVE_TIMES]) +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_TTYNAME], [/* Define to 1 if you have the `ttyname\' function. */ +#undef HAVE_TTYNAME]) +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_TZSET], [/* Define to 1 if you have the `tzset\' function. */ +#undef HAVE_TZSET]) +m4trace:configure.in:707: -1- AH_OUTPUT([HAVE_UNSETENV], [/* Define to 1 if you have the `unsetenv\' function. */ +#undef HAVE_UNSETENV]) +m4trace:configure.in:709: -1- AC_CHECK_FUNCS([vsnprintf snprintf vasprintf asprintf]) +m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* Define to 1 if you have the `vsnprintf\' function. */ +#undef HAVE_VSNPRINTF]) +m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define to 1 if you have the `snprintf\' function. */ +#undef HAVE_SNPRINTF]) +m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_VASPRINTF], [/* Define to 1 if you have the `vasprintf\' function. */ +#undef HAVE_VASPRINTF]) +m4trace:configure.in:709: -1- AH_OUTPUT([HAVE_ASPRINTF], [/* Define to 1 if you have the `asprintf\' function. */ +#undef HAVE_ASPRINTF]) +m4trace:configure.in:710: -1- AC_CHECK_FUNCS([isascii isblank isgraph isprint isspace isxdigit]) +m4trace:configure.in:710: -1- AH_OUTPUT([HAVE_ISASCII], [/* Define to 1 if you have the `isascii\' function. */ +#undef HAVE_ISASCII]) +m4trace:configure.in:710: -1- AH_OUTPUT([HAVE_ISBLANK], [/* Define to 1 if you have the `isblank\' function. */ +#undef HAVE_ISBLANK]) +m4trace:configure.in:710: -1- AH_OUTPUT([HAVE_ISGRAPH], [/* Define to 1 if you have the `isgraph\' function. */ +#undef HAVE_ISGRAPH]) +m4trace:configure.in:710: -1- AH_OUTPUT([HAVE_ISPRINT], [/* Define to 1 if you have the `isprint\' function. */ +#undef HAVE_ISPRINT]) +m4trace:configure.in:710: -1- AH_OUTPUT([HAVE_ISSPACE], [/* Define to 1 if you have the `isspace\' function. */ +#undef HAVE_ISSPACE]) +m4trace:configure.in:710: -1- AH_OUTPUT([HAVE_ISXDIGIT], [/* Define to 1 if you have the `isxdigit\' function. */ +#undef HAVE_ISXDIGIT]) +m4trace:configure.in:711: -1- AC_CHECK_FUNCS([getpwent getpwnam getpwuid]) +m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_GETPWENT], [/* Define to 1 if you have the `getpwent\' function. */ +#undef HAVE_GETPWENT]) +m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_GETPWNAM], [/* Define to 1 if you have the `getpwnam\' function. */ +#undef HAVE_GETPWNAM]) +m4trace:configure.in:711: -1- AH_OUTPUT([HAVE_GETPWUID], [/* Define to 1 if you have the `getpwuid\' function. */ +#undef HAVE_GETPWUID]) +m4trace:configure.in:712: -1- AC_LIBSOURCE([getcwd.c]) +m4trace:configure.in:712: -1- AC_LIBSOURCE([memset.c]) +m4trace:configure.in:712: -1- AC_LIBSOURCE([strcasecmp.c]) +m4trace:configure.in:712: -1- AC_LIBSOURCE([strerror.c]) +m4trace:configure.in:712: -1- AC_LIBSOURCE([strftime.c]) +m4trace:configure.in:712: -1- AC_LIBSOURCE([strnlen.c]) +m4trace:configure.in:712: -1- AC_LIBSOURCE([strpbrk.c]) +m4trace:configure.in:712: -1- AC_LIBSOURCE([strstr.c]) +m4trace:configure.in:712: -1- AC_CHECK_FUNCS([getcwd memset strcasecmp strerror strftime strnlen strpbrk strstr], [], [_AC_LIBOBJ($ac_func)]) +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the `getcwd\' function. */ +#undef HAVE_GETCWD]) +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_MEMSET], [/* Define to 1 if you have the `memset\' function. */ +#undef HAVE_MEMSET]) +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the `strcasecmp\' function. */ +#undef HAVE_STRCASECMP]) +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_STRERROR], [/* Define to 1 if you have the `strerror\' function. */ +#undef HAVE_STRERROR]) +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_STRFTIME], [/* Define to 1 if you have the `strftime\' function. */ +#undef HAVE_STRFTIME]) +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_STRNLEN], [/* Define to 1 if you have the `strnlen\' function. */ +#undef HAVE_STRNLEN]) +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_STRPBRK], [/* Define to 1 if you have the `strpbrk\' function. */ +#undef HAVE_STRPBRK]) +m4trace:configure.in:712: -1- AH_OUTPUT([HAVE_STRSTR], [/* Define to 1 if you have the `strstr\' function. */ +#undef HAVE_STRSTR]) +m4trace:configure.in:712: -1- AC_SUBST([LIB@&t@OBJS]) +m4trace:configure.in:713: -1- AC_LIBSOURCE([strtod.c]) +m4trace:configure.in:713: -1- AC_LIBSOURCE([strtol.c]) +m4trace:configure.in:713: -1- AC_LIBSOURCE([strtoul.c]) +m4trace:configure.in:713: -1- AC_LIBSOURCE([strtoll.c]) +m4trace:configure.in:713: -1- AC_LIBSOURCE([strtoull.c]) +m4trace:configure.in:713: -1- AC_LIBSOURCE([strtoimax.c]) +m4trace:configure.in:713: -1- AC_LIBSOURCE([strtoumax.c]) +m4trace:configure.in:713: -1- AC_CHECK_FUNCS([strtod strtol strtoul strtoll strtoull strtoimax strtoumax], [], [_AC_LIBOBJ($ac_func)]) +m4trace:configure.in:713: -1- AH_OUTPUT([HAVE_STRTOD], [/* Define to 1 if you have the `strtod\' function. */ +#undef HAVE_STRTOD]) +m4trace:configure.in:713: -1- AH_OUTPUT([HAVE_STRTOL], [/* Define to 1 if you have the `strtol\' function. */ +#undef HAVE_STRTOL]) +m4trace:configure.in:713: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the `strtoul\' function. */ +#undef HAVE_STRTOUL]) +m4trace:configure.in:713: -1- AH_OUTPUT([HAVE_STRTOLL], [/* Define to 1 if you have the `strtoll\' function. */ +#undef HAVE_STRTOLL]) +m4trace:configure.in:713: -1- AH_OUTPUT([HAVE_STRTOULL], [/* Define to 1 if you have the `strtoull\' function. */ +#undef HAVE_STRTOULL]) +m4trace:configure.in:713: -1- AH_OUTPUT([HAVE_STRTOIMAX], [/* Define to 1 if you have the `strtoimax\' function. */ +#undef HAVE_STRTOIMAX]) +m4trace:configure.in:713: -1- AH_OUTPUT([HAVE_STRTOUMAX], [/* Define to 1 if you have the `strtoumax\' function. */ +#undef HAVE_STRTOUMAX]) +m4trace:configure.in:713: -1- AC_SUBST([LIB@&t@OBJS]) +m4trace:configure.in:715: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_CONFSTR]) +m4trace:configure.in:715: -1- AH_OUTPUT([HAVE_DECL_CONFSTR], [/* Define to 1 if you have the declaration of `confstr\', and to 0 if you + don\'t. */ +#undef HAVE_DECL_CONFSTR]) +m4trace:configure.in:715: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_CONFSTR]) +m4trace:configure.in:716: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_PRINTF]) +m4trace:configure.in:716: -1- AH_OUTPUT([HAVE_DECL_PRINTF], [/* Define to 1 if you have the declaration of `printf\', and to 0 if you don\'t. + */ +#undef HAVE_DECL_PRINTF]) +m4trace:configure.in:716: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_PRINTF]) +m4trace:configure.in:717: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SBRK]) +m4trace:configure.in:717: -1- AH_OUTPUT([HAVE_DECL_SBRK], [/* Define to 1 if you have the declaration of `sbrk\', and to 0 if you don\'t. + */ +#undef HAVE_DECL_SBRK]) +m4trace:configure.in:717: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SBRK]) +m4trace:configure.in:718: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SETREGID]) +m4trace:configure.in:718: -1- AH_OUTPUT([HAVE_DECL_SETREGID], [/* Define to 1 if you have the declaration of `setregid\', and to 0 if you + don\'t. */ +#undef HAVE_DECL_SETREGID]) +m4trace:configure.in:718: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SETREGID]) +m4trace:configure.in:719: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRCPY]) +m4trace:configure.in:719: -1- AH_OUTPUT([HAVE_DECL_STRCPY], [/* Define to 1 if you have the declaration of `strcpy\', and to 0 if you don\'t. + */ +#undef HAVE_DECL_STRCPY]) +m4trace:configure.in:719: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRCPY]) +m4trace:configure.in:720: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRSIGNAL]) +m4trace:configure.in:720: -1- AH_OUTPUT([HAVE_DECL_STRSIGNAL], [/* Define to 1 if you have the declaration of `strsignal\', and to 0 if you + don\'t. */ +#undef HAVE_DECL_STRSIGNAL]) +m4trace:configure.in:720: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRSIGNAL]) +m4trace:configure.in:737: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRTOLD]) +m4trace:configure.in:737: -1- AH_OUTPUT([HAVE_DECL_STRTOLD], [/* Define to 1 if you have the declaration of `strtold\', and to 0 if you + don\'t. */ +#undef HAVE_DECL_STRTOLD]) +m4trace:configure.in:737: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:2352: AC_CHECK_DECL is expanded from... +autoconf/general.m4:2372: AC_CHECK_DECLS is expanded from... +configure.in:737: the top level]) +m4trace:configure.in:737: -1- AC_DEFINE_TRACE_LITERAL([STRTOLD_BROKEN]) +m4trace:configure.in:737: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_STRTOLD]) +m4trace:configure.in:740: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:122: BASH_CHECK_DECL is expanded from... +configure.in:740: the top level]) +m4trace:configure.in:741: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:122: BASH_CHECK_DECL is expanded from... +configure.in:741: the top level]) +m4trace:configure.in:742: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:122: BASH_CHECK_DECL is expanded from... +configure.in:742: the top level]) +m4trace:configure.in:743: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:122: BASH_CHECK_DECL is expanded from... +configure.in:743: the top level]) +m4trace:configure.in:744: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:122: BASH_CHECK_DECL is expanded from... +configure.in:744: the top level]) +m4trace:configure.in:745: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:122: BASH_CHECK_DECL is expanded from... +configure.in:745: the top level]) +m4trace:configure.in:747: -1- AC_FUNC_MKTIME +m4trace:configure.in:747: -1- AC_CHECK_HEADERS([stdlib.h sys/time.h unistd.h]) +m4trace:configure.in:747: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H]) +m4trace:configure.in:747: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIME_H]) +m4trace:configure.in:747: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H]) +m4trace:configure.in:747: -1- AC_CHECK_FUNCS([alarm]) +m4trace:configure.in:747: -1- AH_OUTPUT([HAVE_ALARM], [/* Define to 1 if you have the `alarm\' function. */ +#undef HAVE_ALARM]) +m4trace:configure.in:747: -1- AC_LIBSOURCE([mktime.c]) +m4trace:configure.in:747: -1- AC_SUBST([LIB@&t@OBJS]) +m4trace:configure.in:754: -1- AC_CHECK_HEADERS([argz.h errno.h fcntl.h malloc.h stdio_ext.h]) +m4trace:configure.in:754: -1- AH_OUTPUT([HAVE_ARGZ_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_ARGZ_H]) +m4trace:configure.in:754: -1- AH_OUTPUT([HAVE_ERRNO_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_ERRNO_H]) +m4trace:configure.in:754: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_FCNTL_H]) +m4trace:configure.in:754: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_MALLOC_H]) +m4trace:configure.in:754: -1- AH_OUTPUT([HAVE_STDIO_EXT_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STDIO_EXT_H]) +m4trace:configure.in:757: -1- AC_FUNC_MMAP +m4trace:configure.in:757: -1- AC_CHECK_HEADERS([stdlib.h unistd.h]) +m4trace:configure.in:757: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H]) +m4trace:configure.in:757: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H]) +m4trace:configure.in:757: -1- AC_CHECK_FUNCS([getpagesize]) +m4trace:configure.in:757: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */ +#undef HAVE_GETPAGESIZE]) +m4trace:configure.in:757: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP]) +m4trace:configure.in:757: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have a working `mmap\' system call. */ +#undef HAVE_MMAP]) +m4trace:configure.in:759: -1- AC_CHECK_FUNCS([__argz_count __argz_next __argz_stringify dcgettext mempcpy \ + munmap stpcpy strcspn strdup]) +m4trace:configure.in:759: -1- AH_OUTPUT([HAVE___ARGZ_COUNT], [/* Define to 1 if you have the `__argz_count\' function. */ +#undef HAVE___ARGZ_COUNT]) +m4trace:configure.in:759: -1- AH_OUTPUT([HAVE___ARGZ_NEXT], [/* Define to 1 if you have the `__argz_next\' function. */ +#undef HAVE___ARGZ_NEXT]) +m4trace:configure.in:759: -1- AH_OUTPUT([HAVE___ARGZ_STRINGIFY], [/* Define to 1 if you have the `__argz_stringify\' function. */ +#undef HAVE___ARGZ_STRINGIFY]) +m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define to 1 if you have the `dcgettext\' function. */ +#undef HAVE_DCGETTEXT]) +m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the `mempcpy\' function. */ +#undef HAVE_MEMPCPY]) +m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_MUNMAP], [/* Define to 1 if you have the `munmap\' function. */ +#undef HAVE_MUNMAP]) +m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the `stpcpy\' function. */ +#undef HAVE_STPCPY]) +m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_STRCSPN], [/* Define to 1 if you have the `strcspn\' function. */ +#undef HAVE_STRCSPN]) +m4trace:configure.in:759: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the `strdup\' function. */ +#undef HAVE_STRDUP]) +m4trace:configure.in:767: -1- AC_SUBST([INTL_DEP]) +m4trace:configure.in:768: -1- AC_SUBST([INTL_INC]) +m4trace:configure.in:769: -1- AC_SUBST([LIBINTL_H]) +m4trace:configure.in:775: -1- AC_CHECK_HEADERS([wctype.h]) +m4trace:configure.in:775: -1- AH_OUTPUT([HAVE_WCTYPE_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_WCTYPE_H]) +m4trace:configure.in:775: -1- AC_CHECK_HEADERS([wchar.h]) +m4trace:configure.in:775: -1- AH_OUTPUT([HAVE_WCHAR_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_WCHAR_H]) +m4trace:configure.in:775: -1- AC_CHECK_HEADERS([langinfo.h]) +m4trace:configure.in:775: -1- AH_OUTPUT([HAVE_LANGINFO_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_LANGINFO_H]) +m4trace:configure.in:775: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBSRTOWCS]) +m4trace:configure.in:775: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBRTOWC]) +m4trace:configure.in:775: -2- AC_DEFINE_TRACE_LITERAL([HAVE_MBRLEN]) +m4trace:configure.in:775: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCTOMB]) +m4trace:configure.in:775: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCWIDTH]) +m4trace:configure.in:775: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCSDUP]) +m4trace:configure.in:775: -2- AC_DEFINE_TRACE_LITERAL([HAVE_WCTYPE]) +m4trace:configure.in:775: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:1706: BASH_CHECK_MULTIBYTE is expanded from... +configure.in:775: the top level]) +m4trace:configure.in:775: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MBSTATE_T]) +m4trace:configure.in:775: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:1706: BASH_CHECK_MULTIBYTE is expanded from... +configure.in:775: the top level]) +m4trace:configure.in:775: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_CODESET]) +m4trace:configure.in:779: -1- AC_CHECK_LIB([dl], [dlopen]) +m4trace:configure.in:779: -1- AH_OUTPUT([HAVE_LIBDL], [/* Define to 1 if you have the `dl\' library (-ldl). */ +#undef HAVE_LIBDL]) +m4trace:configure.in:779: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBDL]) +m4trace:configure.in:780: -1- AC_CHECK_FUNCS([dlopen dlclose dlsym]) +m4trace:configure.in:780: -1- AH_OUTPUT([HAVE_DLOPEN], [/* Define to 1 if you have the `dlopen\' function. */ +#undef HAVE_DLOPEN]) +m4trace:configure.in:780: -1- AH_OUTPUT([HAVE_DLCLOSE], [/* Define to 1 if you have the `dlclose\' function. */ +#undef HAVE_DLCLOSE]) +m4trace:configure.in:780: -1- AH_OUTPUT([HAVE_DLSYM], [/* Define to 1 if you have the `dlsym\' function. */ +#undef HAVE_DLSYM]) +m4trace:configure.in:784: -1- AC_DECL_SYS_SIGLIST +m4trace:configure.in:784: -1- _m4_warn([obsolete], [The macro `AC_DECL_SYS_SIGLIST' is obsolete. +You should run autoupdate.], [autoconf/specific.m4:70: AC_DECL_SYS_SIGLIST is expanded from... +configure.in:784: the top level]) +m4trace:configure.in:784: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SYS_SIGLIST]) +m4trace:configure.in:784: -1- AH_OUTPUT([HAVE_DECL_SYS_SIGLIST], [/* Define to 1 if you have the declaration of `sys_siglist\', and to 0 if you + don\'t. */ +#undef HAVE_DECL_SYS_SIGLIST]) +m4trace:configure.in:784: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SYS_SIGLIST]) +m4trace:configure.in:788: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:562: BASH_FUNC_INET_ATON is expanded from... +configure.in:788: the top level]) +m4trace:configure.in:788: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INET_ATON]) +m4trace:configure.in:788: -1- AC_LIBSOURCE([inet_aton.c]) +m4trace:configure.in:788: -1- AC_SUBST([LIB@&t@OBJS]) +m4trace:configure.in:794: -1- AC_CHECK_LIB([sun], [getpwent]) +m4trace:configure.in:794: -1- AH_OUTPUT([HAVE_LIBSUN], [/* Define to 1 if you have the `sun\' library (-lsun). */ +#undef HAVE_LIBSUN]) +m4trace:configure.in:794: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSUN]) +m4trace:configure.in:799: -1- AC_CHECK_LIB([socket], [getpeername], [bash_cv_have_socklib=yes], [bash_cv_have_socklib=no], [-lnsl]) +m4trace:configure.in:799: -1- AC_CHECK_LIB([nsl], [t_open], [bash_cv_have_libnsl=yes], [bash_cv_have_libnsl=no]) +m4trace:configure.in:799: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSOCKET]) +m4trace:configure.in:799: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPEERNAME]) +m4trace:configure.in:803: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:737: BASH_FUNC_GETHOSTBYNAME is expanded from... +configure.in:803: the top level]) +m4trace:configure.in:803: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETHOSTBYNAME]) +m4trace:configure.in:807: -1- AC_TYPE_UID_T +m4trace:configure.in:807: -1- AC_DEFINE_TRACE_LITERAL([uid_t]) +m4trace:configure.in:807: -1- AH_OUTPUT([uid_t], [/* Define to `int\' if doesn\'t define. */ +#undef uid_t]) +m4trace:configure.in:807: -1- AC_DEFINE_TRACE_LITERAL([gid_t]) +m4trace:configure.in:807: -1- AH_OUTPUT([gid_t], [/* Define to `int\' if doesn\'t define. */ +#undef gid_t]) +m4trace:configure.in:807: -1- AC_DEFINE_TRACE_LITERAL([GETGROUPS_T]) +m4trace:configure.in:807: -1- AH_OUTPUT([GETGROUPS_T], [/* Define to the type of elements in the array set by `getgroups\'. Usually + this is either `int\' or `gid_t\'. */ +#undef GETGROUPS_T]) +m4trace:configure.in:808: -1- AC_TYPE_OFF_T +m4trace:configure.in:808: -1- AC_DEFINE_TRACE_LITERAL([off_t]) +m4trace:configure.in:808: -1- AH_OUTPUT([off_t], [/* Define to `long\' if does not define. */ +#undef off_t]) +m4trace:configure.in:809: -1- AC_TYPE_MODE_T +m4trace:configure.in:809: -1- AC_DEFINE_TRACE_LITERAL([mode_t]) +m4trace:configure.in:809: -1- AH_OUTPUT([mode_t], [/* Define to `int\' if does not define. */ +#undef mode_t]) +m4trace:configure.in:810: -1- AC_TYPE_UID_T +m4trace:configure.in:810: -1- AC_DEFINE_TRACE_LITERAL([uid_t]) +m4trace:configure.in:810: -1- AH_OUTPUT([uid_t], [/* Define to `int\' if doesn\'t define. */ +#undef uid_t]) +m4trace:configure.in:810: -1- AC_DEFINE_TRACE_LITERAL([gid_t]) +m4trace:configure.in:810: -1- AH_OUTPUT([gid_t], [/* Define to `int\' if doesn\'t define. */ +#undef gid_t]) +m4trace:configure.in:811: -1- AC_TYPE_PID_T +m4trace:configure.in:811: -1- AC_DEFINE_TRACE_LITERAL([pid_t]) +m4trace:configure.in:811: -1- AH_OUTPUT([pid_t], [/* Define to `int\' if does not define. */ +#undef pid_t]) +m4trace:configure.in:812: -1- AC_TYPE_SIZE_T +m4trace:configure.in:812: -1- AC_DEFINE_TRACE_LITERAL([size_t]) +m4trace:configure.in:812: -1- AH_OUTPUT([size_t], [/* Define to `unsigned\' if does not define. */ +#undef size_t]) +m4trace:configure.in:813: -1- AC_DEFINE_TRACE_LITERAL([ssize_t]) +m4trace:configure.in:813: -1- AH_OUTPUT([ssize_t], [/* Define to `int\' if does not define. */ +#undef ssize_t]) +m4trace:configure.in:814: -1- AC_DEFINE_TRACE_LITERAL([time_t]) +m4trace:configure.in:814: -1- AH_OUTPUT([time_t], [/* Define to `long\' if does not define. */ +#undef time_t]) +m4trace:configure.in:816: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:481: BASH_TYPE_LONG_LONG is expanded from... +configure.in:816: the top level]) +m4trace:configure.in:816: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_LONG]) +m4trace:configure.in:817: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:496: BASH_TYPE_UNSIGNED_LONG_LONG is expanded from... +configure.in:817: the top level]) +m4trace:configure.in:817: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG]) +m4trace:configure.in:819: -1- AC_TYPE_SIGNAL +m4trace:configure.in:819: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE]) +m4trace:configure.in:819: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (`int\' or `void\'). */ +#undef RETSIGTYPE]) +m4trace:configure.in:821: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +autoconf/types.m4:405: AC_CHECK_SIZEOF is expanded from... +configure.in:821: the top level]) +m4trace:configure.in:821: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_CHAR]) +m4trace:configure.in:821: -1- AH_OUTPUT([SIZEOF_CHAR], [/* The size of a `char\', as computed by sizeof. */ +#undef SIZEOF_CHAR]) +m4trace:configure.in:822: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +autoconf/types.m4:405: AC_CHECK_SIZEOF is expanded from... +configure.in:822: the top level]) +m4trace:configure.in:822: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_SHORT]) +m4trace:configure.in:822: -1- AH_OUTPUT([SIZEOF_SHORT], [/* The size of a `short\', as computed by sizeof. */ +#undef SIZEOF_SHORT]) +m4trace:configure.in:823: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +autoconf/types.m4:405: AC_CHECK_SIZEOF is expanded from... +configure.in:823: the top level]) +m4trace:configure.in:823: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_INT]) +m4trace:configure.in:823: -1- AH_OUTPUT([SIZEOF_INT], [/* The size of a `int\', as computed by sizeof. */ +#undef SIZEOF_INT]) +m4trace:configure.in:824: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +autoconf/types.m4:405: AC_CHECK_SIZEOF is expanded from... +configure.in:824: the top level]) +m4trace:configure.in:824: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG]) +m4trace:configure.in:824: -1- AH_OUTPUT([SIZEOF_LONG], [/* The size of a `long\', as computed by sizeof. */ +#undef SIZEOF_LONG]) +m4trace:configure.in:825: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +autoconf/types.m4:405: AC_CHECK_SIZEOF is expanded from... +configure.in:825: the top level]) +m4trace:configure.in:825: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_CHAR_P]) +m4trace:configure.in:825: -1- AH_OUTPUT([SIZEOF_CHAR_P], [/* The size of a `char *\', as computed by sizeof. */ +#undef SIZEOF_CHAR_P]) +m4trace:configure.in:826: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +autoconf/types.m4:405: AC_CHECK_SIZEOF is expanded from... +configure.in:826: the top level]) +m4trace:configure.in:826: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_DOUBLE]) +m4trace:configure.in:826: -1- AH_OUTPUT([SIZEOF_DOUBLE], [/* The size of a `double\', as computed by sizeof. */ +#undef SIZEOF_DOUBLE]) +m4trace:configure.in:827: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +autoconf/types.m4:405: AC_CHECK_SIZEOF is expanded from... +configure.in:827: the top level]) +m4trace:configure.in:827: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG_LONG]) +m4trace:configure.in:827: -1- AH_OUTPUT([SIZEOF_LONG_LONG], [/* The size of a `long long\', as computed by sizeof. */ +#undef SIZEOF_LONG_LONG]) +m4trace:configure.in:829: -1- AC_DEFINE_TRACE_LITERAL([u_int]) +m4trace:configure.in:829: -1- AH_OUTPUT([u_int], [/* Define to `unsigned int\' if does not define. */ +#undef u_int]) +m4trace:configure.in:830: -1- AC_DEFINE_TRACE_LITERAL([u_long]) +m4trace:configure.in:830: -1- AH_OUTPUT([u_long], [/* Define to `unsigned long\' if does not define. */ +#undef u_long]) +m4trace:configure.in:832: -1- AC_DEFINE_TRACE_LITERAL([bits16_t]) +m4trace:configure.in:832: -1- AH_OUTPUT([bits16_t], [/* Define to `short\' if does not define. */ +#undef bits16_t]) +m4trace:configure.in:832: -1- AC_DEFINE_TRACE_LITERAL([bits16_t]) +m4trace:configure.in:832: -1- AH_OUTPUT([bits16_t], [/* Define to `char\' if does not define. */ +#undef bits16_t]) +m4trace:configure.in:832: -1- AC_DEFINE_TRACE_LITERAL([bits16_t]) +m4trace:configure.in:832: -1- AH_OUTPUT([bits16_t], [/* Define to `short\' if does not define. */ +#undef bits16_t]) +m4trace:configure.in:833: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t]) +m4trace:configure.in:833: -1- AH_OUTPUT([u_bits16_t], [/* Define to `unsigned short\' if does not define. */ +#undef u_bits16_t]) +m4trace:configure.in:833: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t]) +m4trace:configure.in:833: -1- AH_OUTPUT([u_bits16_t], [/* Define to `unsigned char\' if does not define. */ +#undef u_bits16_t]) +m4trace:configure.in:833: -1- AC_DEFINE_TRACE_LITERAL([u_bits16_t]) +m4trace:configure.in:833: -1- AH_OUTPUT([u_bits16_t], [/* Define to `unsigned short\' if does not define. */ +#undef u_bits16_t]) +m4trace:configure.in:834: -1- AC_DEFINE_TRACE_LITERAL([bits32_t]) +m4trace:configure.in:834: -1- AH_OUTPUT([bits32_t], [/* Define to `int\' if does not define. */ +#undef bits32_t]) +m4trace:configure.in:834: -1- AC_DEFINE_TRACE_LITERAL([bits32_t]) +m4trace:configure.in:834: -1- AH_OUTPUT([bits32_t], [/* Define to `long\' if does not define. */ +#undef bits32_t]) +m4trace:configure.in:834: -1- AC_DEFINE_TRACE_LITERAL([bits32_t]) +m4trace:configure.in:834: -1- AH_OUTPUT([bits32_t], [/* Define to `int\' if does not define. */ +#undef bits32_t]) +m4trace:configure.in:835: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t]) +m4trace:configure.in:835: -1- AH_OUTPUT([u_bits32_t], [/* Define to `unsigned int\' if does not define. */ +#undef u_bits32_t]) +m4trace:configure.in:835: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t]) +m4trace:configure.in:835: -1- AH_OUTPUT([u_bits32_t], [/* Define to `unsigned long\' if does not define. */ +#undef u_bits32_t]) +m4trace:configure.in:835: -1- AC_DEFINE_TRACE_LITERAL([u_bits32_t]) +m4trace:configure.in:835: -1- AH_OUTPUT([u_bits32_t], [/* Define to `unsigned int\' if does not define. */ +#undef u_bits32_t]) +m4trace:configure.in:836: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) +m4trace:configure.in:836: -1- AH_OUTPUT([bits64_t], [/* Define to `char *\' if does not define. */ +#undef bits64_t]) +m4trace:configure.in:836: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) +m4trace:configure.in:836: -1- AH_OUTPUT([bits64_t], [/* Define to `double\' if does not define. */ +#undef bits64_t]) +m4trace:configure.in:836: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) +m4trace:configure.in:836: -1- AH_OUTPUT([bits64_t], [/* Define to `long long\' if does not define. */ +#undef bits64_t]) +m4trace:configure.in:836: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) +m4trace:configure.in:836: -1- AH_OUTPUT([bits64_t], [/* Define to `long\' if does not define. */ +#undef bits64_t]) +m4trace:configure.in:836: -1- AC_DEFINE_TRACE_LITERAL([bits64_t]) +m4trace:configure.in:836: -1- AH_OUTPUT([bits64_t], [/* Define to `double\' if does not define. */ +#undef bits64_t]) +m4trace:configure.in:838: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t]) +m4trace:configure.in:838: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `int\' if does not define. */ +#undef ptrdiff_t]) +m4trace:configure.in:838: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t]) +m4trace:configure.in:838: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `long\' if does not define. */ +#undef ptrdiff_t]) +m4trace:configure.in:838: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t]) +m4trace:configure.in:838: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `long long\' if does not define. */ +#undef ptrdiff_t]) +m4trace:configure.in:838: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t]) +m4trace:configure.in:838: -1- AH_OUTPUT([ptrdiff_t], [/* Define to `int\' if does not define. */ +#undef ptrdiff_t]) +m4trace:configure.in:841: -1- AC_HEADER_STAT +m4trace:configure.in:841: -1- AC_DEFINE_TRACE_LITERAL([STAT_MACROS_BROKEN]) +m4trace:configure.in:841: -1- AH_OUTPUT([STAT_MACROS_BROKEN], [/* Define to 1 if the `S_IS*\' macros in do not work properly. */ +#undef STAT_MACROS_BROKEN]) +m4trace:configure.in:846: -1- AC_DEFINE_TRACE_LITERAL([HAVE_HASH_BANG_EXEC]) +m4trace:configure.in:851: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:546: BASH_FUNC_LSTAT is expanded from... +configure.in:851: the top level]) +m4trace:configure.in:851: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LSTAT]) +m4trace:configure.in:855: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:1869: BASH_FUNC_CTYPE_NONASCII is expanded from... +configure.in:855: the top level]) +m4trace:configure.in:855: -1- AC_DEFINE_TRACE_LITERAL([CTYPE_NON_ASCII]) +m4trace:configure.in:856: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:294: BASH_FUNC_DUP2_CLOEXEC_CHECK is expanded from... +configure.in:856: the top level]) +m4trace:configure.in:856: -1- AC_DEFINE_TRACE_LITERAL([DUP2_BROKEN]) +m4trace:configure.in:857: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:1280: BASH_SYS_PGRP_SYNC is expanded from... +configure.in:857: the top level]) +m4trace:configure.in:857: -1- AC_DEFINE_TRACE_LITERAL([PGRP_PIPE]) +m4trace:configure.in:858: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:1217: BASH_SYS_SIGNAL_VINTAGE is expanded from... +configure.in:858: the top level]) +m4trace:configure.in:858: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:2215: AC_LINK_IFELSE is expanded from... +autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:1217: BASH_SYS_SIGNAL_VINTAGE is expanded from... +configure.in:858: the top level]) +m4trace:configure.in:858: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:2215: AC_LINK_IFELSE is expanded from... +autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:2215: AC_LINK_IFELSE is expanded from... +autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:1217: BASH_SYS_SIGNAL_VINTAGE is expanded from... +configure.in:858: the top level]) +m4trace:configure.in:858: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SIGNALS]) +m4trace:configure.in:858: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BSD_SIGNALS]) +m4trace:configure.in:858: -1- AC_DEFINE_TRACE_LITERAL([HAVE_USG_SIGHOLD]) +m4trace:configure.in:861: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:262: BASH_SYS_ERRLIST is expanded from... +configure.in:861: the top level]) +m4trace:configure.in:861: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_ERRLIST]) +m4trace:configure.in:862: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:233: BASH_SYS_SIGLIST is expanded from... +configure.in:862: the top level]) +m4trace:configure.in:862: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_SIGLIST]) +m4trace:configure.in:863: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:179: BASH_DECL_UNDER_SYS_SIGLIST is expanded from... +configure.in:863: BASH_DECL_UNDER_SYS_SIGLIST is required by... +aclocal.m4:206: BASH_UNDER_SYS_SIGLIST is expanded from... +configure.in:863: the top level]) +m4trace:configure.in:863: -1- AC_DEFINE_TRACE_LITERAL([UNDER_SYS_SIGLIST_DECLARED]) +m4trace:configure.in:863: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:206: BASH_UNDER_SYS_SIGLIST is expanded from... +configure.in:863: the top level]) +m4trace:configure.in:863: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNDER_SYS_SIGLIST]) +m4trace:configure.in:866: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:380: BASH_TYPE_SIGHANDLER is expanded from... +configure.in:866: the top level]) +m4trace:configure.in:866: -1- AC_DEFINE_TRACE_LITERAL([VOID_SIGHANDLER]) +m4trace:configure.in:867: -1- AC_DEFINE_TRACE_LITERAL([clock_t]) +m4trace:configure.in:868: -1- AC_DEFINE_TRACE_LITERAL([sigset_t]) +m4trace:configure.in:869: -1- AC_DEFINE_TRACE_LITERAL([HAVE_QUAD_T]) +m4trace:configure.in:869: -1- AC_DEFINE_TRACE_LITERAL([quad_t]) +m4trace:configure.in:870: -1- AC_DEFINE_TRACE_LITERAL([intmax_t]) +m4trace:configure.in:871: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t]) +m4trace:configure.in:873: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SOCKLEN_T]) +m4trace:configure.in:873: -1- AC_DEFINE_TRACE_LITERAL([socklen_t]) +m4trace:configure.in:875: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:532: BASH_TYPE_RLIMIT is expanded from... +configure.in:875: the top level]) +m4trace:configure.in:875: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:2173: AC_COMPILE_IFELSE is expanded from... +autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:532: BASH_TYPE_RLIMIT is expanded from... +configure.in:875: the top level]) +m4trace:configure.in:875: -1- AC_DEFINE_TRACE_LITERAL([RLIMTYPE]) +m4trace:configure.in:875: -1- AC_DEFINE_TRACE_LITERAL([RLIMTYPE]) +m4trace:configure.in:878: -2- AC_DEFINE_TRACE_LITERAL([TERMIOS_LDISC]) +m4trace:configure.in:879: -2- AC_DEFINE_TRACE_LITERAL([TERMIO_LDISC]) +m4trace:configure.in:880: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:1058: BASH_STRUCT_DIRENT_D_INO is expanded from... +configure.in:880: the top level]) +m4trace:configure.in:880: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_INO]) +m4trace:configure.in:881: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:1091: BASH_STRUCT_DIRENT_D_FILENO is expanded from... +configure.in:881: the top level]) +m4trace:configure.in:881: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_FILENO]) +m4trace:configure.in:882: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:1124: BASH_STRUCT_DIRENT_D_NAMLEN is expanded from... +configure.in:882: the top level]) +m4trace:configure.in:882: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_NAMLEN]) +m4trace:configure.in:883: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:1177: BASH_STRUCT_WINSIZE is expanded from... +configure.in:883: the top level]) +m4trace:configure.in:883: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:2173: AC_COMPILE_IFELSE is expanded from... +autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:1177: BASH_STRUCT_WINSIZE is expanded from... +configure.in:883: the top level]) +m4trace:configure.in:883: -1- AC_DEFINE_TRACE_LITERAL([STRUCT_WINSIZE_IN_SYS_IOCTL]) +m4trace:configure.in:883: -1- AC_DEFINE_TRACE_LITERAL([STRUCT_WINSIZE_IN_TERMIOS]) +m4trace:configure.in:884: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TIMEVAL]) +m4trace:configure.in:885: -1- AC_CHECK_MEMBERS([struct stat.st_blocks]) +m4trace:configure.in:885: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_BLOCKS]) +m4trace:configure.in:885: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_BLOCKS], [/* Define to 1 if `st_blocks\' is member of `struct stat\'. */ +#undef HAVE_STRUCT_STAT_ST_BLOCKS]) +m4trace:configure.in:886: -1- AC_STRUCT_TM +m4trace:configure.in:886: -1- AC_DEFINE_TRACE_LITERAL([TM_IN_SYS_TIME]) +m4trace:configure.in:886: -1- AH_OUTPUT([TM_IN_SYS_TIME], [/* Define to 1 if your declares `struct tm\'. */ +#undef TM_IN_SYS_TIME]) +m4trace:configure.in:887: -1- AC_STRUCT_TIMEZONE +m4trace:configure.in:887: -1- AC_CHECK_MEMBERS([struct tm.tm_zone], [], [], [#include +#include <$ac_cv_struct_tm> +]) +m4trace:configure.in:887: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TM_TM_ZONE]) +m4trace:configure.in:887: -1- AH_OUTPUT([HAVE_STRUCT_TM_TM_ZONE], [/* Define to 1 if `tm_zone\' is member of `struct tm\'. */ +#undef HAVE_STRUCT_TM_TM_ZONE]) +m4trace:configure.in:887: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TM_ZONE]) +m4trace:configure.in:887: -1- AH_OUTPUT([HAVE_TM_ZONE], [/* Define to 1 if your `struct tm\' has `tm_zone\'. Deprecated, use + `HAVE_STRUCT_TM_TM_ZONE\' instead. */ +#undef HAVE_TM_ZONE]) +m4trace:configure.in:887: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TZNAME]) +m4trace:configure.in:887: -1- AH_OUTPUT([HAVE_TZNAME], [/* Define to 1 if you don\'t have `tm_zone\' but do have the external array + `tzname\'. */ +#undef HAVE_TZNAME]) +m4trace:configure.in:888: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMEZONE]) +m4trace:configure.in:891: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:307: BASH_FUNC_STRSIGNAL is expanded from... +configure.in:891: the top level]) +m4trace:configure.in:891: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRSIGNAL]) +m4trace:configure.in:892: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:360: BASH_FUNC_OPENDIR_CHECK is expanded from... +configure.in:892: the top level]) +m4trace:configure.in:892: -1- AC_DEFINE_TRACE_LITERAL([OPENDIR_NOT_ROBUST]) +m4trace:configure.in:893: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:685: BASH_FUNC_ULIMIT_MAXFDS is expanded from... +configure.in:893: the top level]) +m4trace:configure.in:893: -1- AC_DEFINE_TRACE_LITERAL([ULIMIT_MAXFDS]) +m4trace:configure.in:894: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:606: BASH_FUNC_GETENV is expanded from... +configure.in:894: the top level]) +m4trace:configure.in:894: -1- AC_DEFINE_TRACE_LITERAL([CAN_REDEFINE_GETENV]) +m4trace:configure.in:896: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:711: BASH_FUNC_GETCWD is expanded from... +configure.in:896: the top level]) +m4trace:configure.in:896: -1- AC_DEFINE_TRACE_LITERAL([GETCWD_BROKEN]) +m4trace:configure.in:896: -1- AC_LIBSOURCE([getcwd.c]) +m4trace:configure.in:896: -1- AC_SUBST([LIB@&t@OBJS]) +m4trace:configure.in:898: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:812: BASH_FUNC_POSIX_SETJMP is expanded from... +configure.in:898: the top level]) +m4trace:configure.in:898: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SIGSETJMP]) +m4trace:configure.in:899: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:861: BASH_FUNC_STRCOLL is expanded from... +configure.in:899: the top level]) +m4trace:configure.in:899: -1- AC_DEFINE_TRACE_LITERAL([STRCOLL_BROKEN]) +m4trace:configure.in:905: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:636: BASH_FUNC_STD_PUTENV is expanded from... +configure.in:905: the top level]) +m4trace:configure.in:905: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_PUTENV]) +m4trace:configure.in:907: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_PUTENV]) +m4trace:configure.in:910: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... +aclocal.m4:666: BASH_FUNC_STD_UNSETENV is expanded from... +configure.in:910: the top level]) +m4trace:configure.in:910: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_UNSETENV]) +m4trace:configure.in:912: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_UNSETENV]) +m4trace:configure.in:915: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:887: BASH_FUNC_PRINTF_A_FORMAT is expanded from... +configure.in:915: the top level]) +m4trace:configure.in:915: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PRINTF_A_FORMAT]) +m4trace:configure.in:918: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:1338: BASH_SYS_REINSTALL_SIGHANDLERS is expanded from... +configure.in:918: the top level]) +m4trace:configure.in:918: -1- AC_DEFINE_TRACE_LITERAL([MUST_REINSTALL_SIGHANDLERS]) +m4trace:configure.in:919: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:1396: BASH_SYS_JOB_CONTROL_MISSING is expanded from... +configure.in:919: the top level]) +m4trace:configure.in:919: -1- AC_DEFINE_TRACE_LITERAL([JOB_CONTROL_MISSING]) +m4trace:configure.in:920: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:1448: BASH_SYS_NAMED_PIPES is expanded from... +configure.in:920: the top level]) +m4trace:configure.in:920: -1- AC_DEFINE_TRACE_LITERAL([NAMED_PIPES_MISSING]) +m4trace:configure.in:923: -1- AC_DEFINE_TRACE_LITERAL([GWINSZ_IN_SYS_IOCTL]) +m4trace:configure.in:923: -1- AH_OUTPUT([GWINSZ_IN_SYS_IOCTL], [/* Define to 1 if `TIOCGWINSZ\' requires . */ +#undef GWINSZ_IN_SYS_IOCTL]) +m4trace:configure.in:924: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:1491: BASH_HAVE_TIOCSTAT is expanded from... +configure.in:924: the top level]) +m4trace:configure.in:924: -1- AC_DEFINE_TRACE_LITERAL([TIOCSTAT_IN_SYS_IOCTL]) +m4trace:configure.in:925: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:1503: BASH_HAVE_FIONREAD is expanded from... +configure.in:925: the top level]) +m4trace:configure.in:925: -1- AC_DEFINE_TRACE_LITERAL([FIONREAD_IN_SYS_IOCTL]) +m4trace:configure.in:927: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:1902: BASH_CHECK_WCONTINUED is expanded from... +configure.in:927: the top level]) +m4trace:configure.in:927: -1- AC_DEFINE_TRACE_LITERAL([WCONTINUED_BROKEN]) +m4trace:configure.in:930: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:1520: BASH_CHECK_SPEED_T is expanded from... +configure.in:930: the top level]) +m4trace:configure.in:930: -1- AC_DEFINE_TRACE_LITERAL([SPEED_T_IN_SYS_TYPES]) +m4trace:configure.in:931: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPW_DECLS]) +m4trace:configure.in:932: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2289: AC_TRY_RUN is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:1665: BASH_CHECK_RTSIGS is expanded from... +configure.in:932: the top level]) +m4trace:configure.in:932: -1- AC_DEFINE_TRACE_LITERAL([UNUSABLE_RT_SIGNALS]) +m4trace:configure.in:933: -1- AC_SUBST([SIGLIST_O]) +m4trace:configure.in:937: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:1614: BASH_CHECK_KERNEL_RLIMIT is expanded from... +configure.in:937: the top level]) +m4trace:configure.in:937: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:2173: AC_COMPILE_IFELSE is expanded from... +autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... +autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... +aclocal.m4:1614: BASH_CHECK_KERNEL_RLIMIT is expanded from... +configure.in:937: the top level]) +m4trace:configure.in:937: -1- AC_DEFINE_TRACE_LITERAL([RLIMIT_NEEDS_KERNEL]) +m4trace:configure.in:945: -1- AC_CHECK_LIB([termcap], [tgetent], [bash_cv_termcap_lib=libtermcap], [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo, + [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, + [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, + bash_cv_termcap_lib=gnutermcap)])])]) +m4trace:configure.in:945: -1- AC_CHECK_LIB([tinfo], [tgetent], [bash_cv_termcap_lib=libtinfo], [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, + [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, + bash_cv_termcap_lib=gnutermcap)])]) +m4trace:configure.in:945: -1- AC_CHECK_LIB([curses], [tgetent], [bash_cv_termcap_lib=libcurses], [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, + bash_cv_termcap_lib=gnutermcap)]) +m4trace:configure.in:945: -1- AC_CHECK_LIB([ncurses], [tgetent], [bash_cv_termcap_lib=libncurses], [bash_cv_termcap_lib=gnutermcap]) +m4trace:configure.in:947: -1- AC_SUBST([TERMCAP_LIB]) +m4trace:configure.in:948: -1- AC_SUBST([TERMCAP_DEP]) +m4trace:configure.in:950: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_FD]) +m4trace:configure.in:950: -1- AC_DEFINE_TRACE_LITERAL([DEV_FD_PREFIX]) +m4trace:configure.in:950: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_FD]) +m4trace:configure.in:950: -1- AC_DEFINE_TRACE_LITERAL([DEV_FD_PREFIX]) +m4trace:configure.in:951: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_STDIN]) +m4trace:configure.in:952: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_MAIL_DIRECTORY]) +m4trace:configure.in:959: -1- AC_DEFINE_TRACE_LITERAL([JOB_CONTROL]) +m4trace:configure.in:965: -1- AC_SUBST([JOBS_O]) +m4trace:configure.in:978: -1- AC_DEFINE_TRACE_LITERAL([SVR4_2]) +m4trace:configure.in:979: -1- AC_DEFINE_TRACE_LITERAL([SVR4]) +m4trace:configure.in:980: -1- AC_DEFINE_TRACE_LITERAL([SVR4]) +m4trace:configure.in:981: -1- AC_DEFINE_TRACE_LITERAL([SVR5]) +m4trace:configure.in:996: -1- AC_DEFINE_TRACE_LITERAL([PGRP_PIPE]) +m4trace:configure.in:1043: -1- AC_SUBST([SHOBJ_CC]) +m4trace:configure.in:1044: -1- AC_SUBST([SHOBJ_CFLAGS]) +m4trace:configure.in:1045: -1- AC_SUBST([SHOBJ_LD]) +m4trace:configure.in:1046: -1- AC_SUBST([SHOBJ_LDFLAGS]) +m4trace:configure.in:1047: -1- AC_SUBST([SHOBJ_XLDFLAGS]) +m4trace:configure.in:1048: -1- AC_SUBST([SHOBJ_LIBS]) +m4trace:configure.in:1049: -1- AC_SUBST([SHOBJ_STATUS]) +m4trace:configure.in:1074: -1- AC_SUBST([PROFILE_FLAGS]) +m4trace:configure.in:1076: -1- AC_SUBST([incdir]) +m4trace:configure.in:1077: -1- AC_SUBST([BUILD_DIR]) +m4trace:configure.in:1079: -1- AC_SUBST([YACC]) +m4trace:configure.in:1080: -1- AC_SUBST([AR]) +m4trace:configure.in:1081: -1- AC_SUBST([ARFLAGS]) +m4trace:configure.in:1083: -1- AC_SUBST([BASHVERS]) +m4trace:configure.in:1084: -1- AC_SUBST([RELSTATUS]) +m4trace:configure.in:1085: -1- AC_SUBST([DEBUG]) +m4trace:configure.in:1086: -1- AC_SUBST([MALLOC_DEBUG]) +m4trace:configure.in:1088: -1- AC_SUBST([host_cpu]) +m4trace:configure.in:1089: -1- AC_SUBST([host_vendor]) +m4trace:configure.in:1090: -1- AC_SUBST([host_os]) +m4trace:configure.in:1092: -1- AC_SUBST([LOCAL_LIBS]) +m4trace:configure.in:1093: -1- AC_SUBST([LOCAL_CFLAGS]) +m4trace:configure.in:1094: -1- AC_SUBST([LOCAL_LDFLAGS]) +m4trace:configure.in:1095: -1- AC_SUBST([LOCAL_DEFS]) +m4trace:configure.in:1109: -1- AC_CONFIG_FILES([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \ + lib/intl/Makefile \ + lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile \ + lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in \ + examples/loadables/Makefile examples/loadables/perl/Makefile \ + pathnames.h]) +m4trace:configure.in:1109: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments. +You should run autoupdate.], []) +m4trace:configure.in:1109: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) +m4trace:configure.in:1109: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) diff --git a/bash-20060316/bashansi.h b/bash-20060316/bashansi.h new file mode 100644 index 000000000..e7f11585b --- /dev/null +++ b/bash-20060316/bashansi.h @@ -0,0 +1,41 @@ +/* bashansi.h -- Typically included information required by picky compilers. */ + +/* Copyright (C) 1993 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#if !defined (_BASHANSI_H_) +#define _BASHANSI_H_ + +#if defined (HAVE_STRING_H) +# if ! defined (STDC_HEADERS) && defined (HAVE_MEMORY_H) +# include +# endif +# include +#endif /* !HAVE_STRING_H */ + +#if defined (HAVE_STRINGS_H) +# include +#endif /* !HAVE_STRINGS_H */ + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* !HAVE_STDLIB_H */ + +#endif /* !_BASHANSI_H_ */ diff --git a/bash-20060316/bashhist.c b/bash-20060316/bashhist.c new file mode 100644 index 000000000..6468a5383 --- /dev/null +++ b/bash-20060316/bashhist.c @@ -0,0 +1,823 @@ +/* bashhist.c -- bash interface to the GNU history library. */ + +/* Copyright (C) 1993-2004 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#include "config.h" + +#if defined (HISTORY) + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include "bashtypes.h" +#include +#include +#include "bashansi.h" +#include "posixstat.h" +#include "filecntl.h" + +#include "bashintl.h" + +#include "shell.h" +#include "flags.h" +#include "input.h" +#include "parser.h" /* for the struct dstack stuff. */ +#include "pathexp.h" /* for the struct ignorevar stuff */ +#include "bashhist.h" /* matching prototypes and declarations */ +#include "builtins/common.h" + +#include +#include +#include + +#if defined (READLINE) +# include "bashline.h" +extern int rl_done, rl_dispatching; /* should really include readline.h */ +#endif + +#if !defined (errno) +extern int errno; +#endif + +static int histignore_item_func __P((struct ign *)); +static int check_history_control __P((char *)); +static void hc_erasedups __P((char *)); +static void really_add_history __P((char *)); + +static struct ignorevar histignore = +{ + "HISTIGNORE", + (struct ign *)0, + 0, + (char *)0, + (sh_iv_item_func_t *)histignore_item_func, +}; + +#define HIGN_EXPAND 0x01 + +/* Declarations of bash history variables. */ +/* Non-zero means to remember lines typed to the shell on the history + list. This is different than the user-controlled behaviour; this + becomes zero when we read lines from a file, for example. */ +int remember_on_history = 1; + +/* The number of lines that Bash has added to this history session. The + difference between the number of the top element in the history list + (offset from history_base) and the number of lines in the history file. + Appending this session's history to the history file resets this to 0. */ +int history_lines_this_session; + +/* The number of lines that Bash has read from the history file. */ +int history_lines_in_file; + +#if defined (BANG_HISTORY) +/* Non-zero means do no history expansion on this line, regardless + of what history_expansion says. */ +int history_expansion_inhibited; +#endif + +/* With the old default, every line was saved in the history individually. + I.e., if the user enters: + bash$ for i in a b c + > do + > echo $i + > done + Each line will be individually saved in the history. + bash$ history + 10 for i in a b c + 11 do + 12 echo $i + 13 done + 14 history + If the variable command_oriented_history is set, multiple lines + which form one command will be saved as one history entry. + bash$ for i in a b c + > do + > echo $i + > done + bash$ history + 10 for i in a b c + do + echo $i + done + 11 history + The user can then recall the whole command all at once instead + of just being able to recall one line at a time. + + This is now enabled by default. + */ +int command_oriented_history = 1; + +/* Set to 1 if the first line of a possibly-multi-line command was saved + in the history list. Managed by maybe_add_history(), but global so + the history-manipluating builtins can see it. */ +int current_command_first_line_saved = 0; + +/* Non-zero means to store newlines in the history list when using + command_oriented_history rather than trying to use semicolons. */ +int literal_history; + +/* Non-zero means to append the history to the history file at shell + exit, even if the history has been stifled. */ +int force_append_history; + +/* A nit for picking at history saving. Flags have the following values: + + Value == 0 means save all lines parsed by the shell on the history. + Value & HC_IGNSPACE means save all lines that do not start with a space. + Value & HC_IGNDUPS means save all lines that do not match the last + line saved. + Value & HC_ERASEDUPS means to remove all other matching lines from the + history list before saving the latest line. */ +int history_control; + +/* Set to 1 if the last command was added to the history list successfully + as a separate history entry; set to 0 if the line was ignored or added + to a previous entry as part of command-oriented-history processing. */ +int hist_last_line_added; + +/* Set to 1 if builtins/history.def:push_history added the last history + entry. */ +int hist_last_line_pushed; + +#if defined (READLINE) +/* If non-zero, and readline is being used, the user is offered the + chance to re-edit a failed history expansion. */ +int history_reediting; + +/* If non-zero, and readline is being used, don't directly execute a + line with history substitution. Reload it into the editing buffer + instead and let the user further edit and confirm with a newline. */ +int hist_verify; + +#endif /* READLINE */ + +/* Non-zero means to not save function definitions in the history list. */ +int dont_save_function_defs; + +/* Variables declared in other files used here. */ +extern int current_command_line_count; + +extern struct dstack dstack; + +static int bash_history_inhibit_expansion __P((char *, int)); +#if defined (READLINE) +static void re_edit __P((char *)); +#endif +static int history_expansion_p __P((char *)); +static int shell_comment __P((char *)); +static int should_expand __P((char *)); +static HIST_ENTRY *last_history_entry __P((void)); +static char *expand_histignore_pattern __P((char *)); +static int history_should_ignore __P((char *)); + +/* Is the history expansion starting at string[i] one that should not + be expanded? */ +static int +bash_history_inhibit_expansion (string, i) + char *string; + int i; +{ + /* The shell uses ! as a pattern negation character in globbing [...] + expressions, so let those pass without expansion. */ + if (i > 0 && (string[i - 1] == '[') && member (']', string + i + 1)) + return (1); + /* The shell uses ! as the indirect expansion character, so let those + expansions pass as well. */ + else if (i > 1 && string[i - 1] == '{' && string[i - 2] == '$' && + member ('}', string + i + 1)) + return (1); +#if defined (EXTENDED_GLOB) + else if (extended_glob && i > 1 && string[i+1] == '(' && member (')', string + i + 2)) + return (1); +#endif + else + return (0); +} + +void +bash_initialize_history () +{ + history_quotes_inhibit_expansion = 1; + history_search_delimiter_chars = ";&()|<>"; + history_inhibit_expansion_function = bash_history_inhibit_expansion; +#if defined (BANG_HISTORY) + sv_histchars ("histchars"); +#endif +} + +void +bash_history_reinit (interact) + int interact; +{ +#if defined (BANG_HISTORY) + history_expansion = interact != 0; + history_expansion_inhibited = 1; +#endif + remember_on_history = interact != 0; + history_inhibit_expansion_function = bash_history_inhibit_expansion; +} + +void +bash_history_disable () +{ + remember_on_history = 0; +#if defined (BANG_HISTORY) + history_expansion_inhibited = 1; +#endif +} + +void +bash_history_enable () +{ + remember_on_history = 1; +#if defined (BANG_HISTORY) + history_expansion_inhibited = 0; +#endif + history_inhibit_expansion_function = bash_history_inhibit_expansion; + sv_history_control ("HISTCONTROL"); + sv_histignore ("HISTIGNORE"); +} + +/* Load the history list from the history file. */ +void +load_history () +{ + char *hf; + struct stat buf; + + /* Truncate history file for interactive shells which desire it. + Note that the history file is automatically truncated to the + size of HISTSIZE if the user does not explicitly set the size + differently. */ + set_if_not ("HISTSIZE", "500"); + sv_histsize ("HISTSIZE"); + + set_if_not ("HISTFILESIZE", get_string_value ("HISTSIZE")); + sv_histsize ("HISTFILESIZE"); + + /* Read the history in HISTFILE into the history list. */ + hf = get_string_value ("HISTFILE"); + + if (hf && *hf && stat (hf, &buf) == 0) + { + read_history (hf); + using_history (); + history_lines_in_file = where_history (); + } +} + +#ifdef INCLUDE_UNUSED +/* Write the existing history out to the history file. */ +void +save_history () +{ + char *hf; + struct stat buf; + + hf = get_string_value ("HISTFILE"); + if (hf && *hf && stat (hf, &buf) == 0) + { + /* Append only the lines that occurred this session to + the history file. */ + using_history (); + + if (history_lines_this_session < where_history () || force_append_history) + append_history (history_lines_this_session, hf); + else + write_history (hf); + + sv_histsize ("HISTFILESIZE"); + } +} +#endif + +int +maybe_append_history (filename) + char *filename; +{ + int fd, result; + struct stat buf; + + result = EXECUTION_SUCCESS; + if (history_lines_this_session && (history_lines_this_session < where_history ())) + { + /* If the filename was supplied, then create it if necessary. */ + if (stat (filename, &buf) == -1 && errno == ENOENT) + { + fd = open (filename, O_WRONLY|O_CREAT, 0600); + if (fd < 0) + { + builtin_error (_("%s: cannot create: %s"), filename, strerror (errno)); + return (EXECUTION_FAILURE); + } + close (fd); + } + result = append_history (history_lines_this_session, filename); + history_lines_in_file += history_lines_this_session; + history_lines_this_session = 0; + } + return (result); +} + +/* If this is an interactive shell, then append the lines executed + this session to the history file. */ +int +maybe_save_shell_history () +{ + int result; + char *hf; + struct stat buf; + + result = 0; + if (history_lines_this_session) + { + hf = get_string_value ("HISTFILE"); + + if (hf && *hf) + { + /* If the file doesn't exist, then create it. */ + if (stat (hf, &buf) == -1) + { + int file; + file = open (hf, O_CREAT | O_TRUNC | O_WRONLY, 0600); + if (file != -1) + close (file); + } + + /* Now actually append the lines if the history hasn't been + stifled. If the history has been stifled, rewrite the + history file. */ + using_history (); + if (history_lines_this_session <= where_history () || force_append_history) + { + result = append_history (history_lines_this_session, hf); + history_lines_in_file += history_lines_this_session; + } + else + { + result = write_history (hf); + history_lines_in_file = history_lines_this_session; + } + history_lines_this_session = 0; + + sv_histsize ("HISTFILESIZE"); + } + } + return (result); +} + +#if defined (READLINE) +/* Tell readline () that we have some text for it to edit. */ +static void +re_edit (text) + char *text; +{ + if (bash_input.type == st_stdin) + bash_re_edit (text); +} +#endif /* READLINE */ + +/* Return 1 if this line needs history expansion. */ +static int +history_expansion_p (line) + char *line; +{ + register char *s; + + for (s = line; *s; s++) + if (*s == history_expansion_char || *s == history_subst_char) + return 1; + return 0; +} + +/* Do pre-processing on LINE. If PRINT_CHANGES is non-zero, then + print the results of expanding the line if there were any changes. + If there is an error, return NULL, otherwise the expanded line is + returned. If ADDIT is non-zero the line is added to the history + list after history expansion. ADDIT is just a suggestion; + REMEMBER_ON_HISTORY can veto, and does. + Right now this does history expansion. */ +char * +pre_process_line (line, print_changes, addit) + char *line; + int print_changes, addit; +{ + char *history_value; + char *return_value; + int expanded; + + return_value = line; + expanded = 0; + +# if defined (BANG_HISTORY) + /* History expand the line. If this results in no errors, then + add that line to the history if ADDIT is non-zero. */ + if (!history_expansion_inhibited && history_expansion && history_expansion_p (line)) + { + expanded = history_expand (line, &history_value); + + if (expanded) + { + if (print_changes) + { + if (expanded < 0) + internal_error ("%s", history_value); +#if defined (READLINE) + else if (hist_verify == 0 || expanded == 2) +#else + else +#endif + fprintf (stderr, "%s\n", history_value); + } + + /* If there was an error, return NULL. */ + if (expanded < 0 || expanded == 2) /* 2 == print only */ + { +# if defined (READLINE) + if (expanded == 2 && rl_dispatching == 0 && *history_value) +# else + if (expanded == 2 && *history_value) +# endif /* !READLINE */ + maybe_add_history (history_value); + + free (history_value); + +# if defined (READLINE) + /* New hack. We can allow the user to edit the + failed history expansion. */ + if (history_reediting && expanded < 0 && rl_done) + re_edit (line); +# endif /* READLINE */ + return ((char *)NULL); + } + +# if defined (READLINE) + if (hist_verify && expanded == 1) + { + re_edit (history_value); + return ((char *)NULL); + } +# endif + } + + /* Let other expansions know that return_value can be free'ed, + and that a line has been added to the history list. Note + that we only add lines that have something in them. */ + expanded = 1; + return_value = history_value; + } +# endif /* BANG_HISTORY */ + + if (addit && remember_on_history && *return_value) + maybe_add_history (return_value); + +#if 0 + if (expanded == 0) + return_value = savestring (line); +#endif + + return (return_value); +} + +/* Return 1 if the first non-whitespace character in LINE is a `#', indicating + * that the line is a shell comment. */ +static int +shell_comment (line) + char *line; +{ + char *p; + + for (p = line; p && *p && whitespace (*p); p++) + ; + return (p && *p == '#'); +} + +#ifdef INCLUDE_UNUSED +/* Remove shell comments from LINE. A `#' and anything after it is a comment. + This isn't really useful yet, since it doesn't handle quoting. */ +static char * +filter_comments (line) + char *line; +{ + char *p; + + for (p = line; p && *p && *p != '#'; p++) + ; + if (p && *p == '#') + *p = '\0'; + return (line); +} +#endif + +/* Check LINE against what HISTCONTROL says to do. Returns 1 if the line + should be saved; 0 if it should be discarded. */ +static int +check_history_control (line) + char *line; +{ + HIST_ENTRY *temp; + int r; + + if (history_control == 0) + return 1; + + /* ignorespace or ignoreboth */ + if ((history_control & HC_IGNSPACE) && *line == ' ') + return 0; + + /* ignoredups or ignoreboth */ + if (history_control & HC_IGNDUPS) + { + using_history (); + temp = previous_history (); + + r = (temp == 0 || STREQ (temp->line, line) == 0); + + using_history (); + + if (r == 0) + return r; + } + + return 1; +} + +/* Remove all entries matching LINE from the history list. Triggered when + HISTCONTROL includes `erasedups'. */ +static void +hc_erasedups (line) + char *line; +{ + HIST_ENTRY *temp; + int r; + + using_history (); + while (temp = previous_history ()) + { + if (STREQ (temp->line, line)) + { + r = where_history (); + remove_history (r); + } + } + using_history (); +} + +/* Add LINE to the history list, handling possibly multi-line compound + commands. We note whether or not we save the first line of each command + (which is usually the entire command and history entry), and don't add + the second and subsequent lines of a multi-line compound command if we + didn't save the first line. We don't usually save shell comment lines in + compound commands in the history, because they could have the effect of + 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. */ +void +maybe_add_history (line) + char *line; +{ + hist_last_line_added = 0; + + /* Don't use the value of history_control to affect the second + and subsequent lines of a multi-line command (old code did + this only when command_oriented_history is enabled). */ + if (current_command_line_count > 1) + { + if (current_command_first_line_saved && + (literal_history || dstack.delimiter_depth != 0 || shell_comment (line) == 0)) + bash_add_history (line); + return; + } + + /* This is the first line of a (possible multi-line) command. Note whether + or not we should save the first line and remember it. */ + current_command_first_line_saved = check_add_history (line, 0); +} + +/* Just check LINE against HISTCONTROL and HISTIGNORE and add it to the + history if it's OK. Used by `history -s' as well as maybe_add_history(). + Returns 1 if the line was saved in the history, 0 otherwise. */ +int +check_add_history (line, force) + char *line; + int force; +{ + if (check_history_control (line) && history_should_ignore (line) == 0) + { + /* We're committed to saving the line. If the user has requested it, + remove other matching lines from the history. */ + if (history_control & HC_ERASEDUPS) + hc_erasedups (line); + + if (force) + { + really_add_history (line); + using_history (); + } + else + bash_add_history (line); + return 1; + } + return 0; +} + +/* Add a line to the history list. + The variable COMMAND_ORIENTED_HISTORY controls the style of history + remembering; when non-zero, and LINE is not the first line of a + complete parser construct, append LINE to the last history line instead + of adding it as a new line. */ +void +bash_add_history (line) + char *line; +{ + int add_it, offset, curlen; + HIST_ENTRY *current, *old; + char *chars_to_add, *new_line; + + add_it = 1; + if (command_oriented_history && current_command_line_count > 1) + { + chars_to_add = literal_history ? "\n" : history_delimiting_chars (); + + using_history (); + current = previous_history (); + + if (current) + { + /* If the previous line ended with an escaped newline (escaped + with backslash, but otherwise unquoted), then remove the quoted + newline, since that is what happens when the line is parsed. */ + curlen = strlen (current->line); + + if (dstack.delimiter_depth == 0 && current->line[curlen - 1] == '\\' && + current->line[curlen - 2] != '\\') + { + current->line[curlen - 1] = '\0'; + curlen--; + chars_to_add = ""; + } + + new_line = (char *)xmalloc (1 + + curlen + + strlen (line) + + strlen (chars_to_add)); + sprintf (new_line, "%s%s%s", current->line, chars_to_add, line); + offset = where_history (); + old = replace_history_entry (offset, new_line, current->data); + free (new_line); + + if (old) + free_history_entry (old); + + add_it = 0; + } + } + + if (add_it) + really_add_history (line); + + using_history (); +} + +static void +really_add_history (line) + char *line; +{ + hist_last_line_added = 1; + hist_last_line_pushed = 0; + add_history (line); + history_lines_this_session++; +} + +int +history_number () +{ + using_history (); + return (remember_on_history ? history_base + where_history () : 1); +} + +static int +should_expand (s) + char *s; +{ + char *p; + + for (p = s; p && *p; p++) + { + if (*p == '\\') + p++; + else if (*p == '&') + return 1; + } + return 0; +} + +static int +histignore_item_func (ign) + struct ign *ign; +{ + if (should_expand (ign->val)) + ign->flags |= HIGN_EXPAND; + return (0); +} + +void +setup_history_ignore (varname) + char *varname; +{ + setup_ignore_patterns (&histignore); +} + +static HIST_ENTRY * +last_history_entry () +{ + HIST_ENTRY *he; + + using_history (); + he = previous_history (); + using_history (); + return he; +} + +char * +last_history_line () +{ + HIST_ENTRY *he; + + he = last_history_entry (); + if (he == 0) + return ((char *)NULL); + return he->line; +} + +static char * +expand_histignore_pattern (pat) + char *pat; +{ + HIST_ENTRY *phe; + char *ret; + + phe = last_history_entry (); + + if (phe == (HIST_ENTRY *)0) + return (savestring (pat)); + + ret = strcreplace (pat, '&', phe->line, 1); + + return ret; +} + +/* Return 1 if we should not put LINE into the history according to the + patterns in HISTIGNORE. */ +static int +history_should_ignore (line) + char *line; +{ + register int i, match; + char *npat; + + if (histignore.num_ignores == 0) + return 0; + + for (i = match = 0; i < histignore.num_ignores; i++) + { + if (histignore.ignores[i].flags & HIGN_EXPAND) + npat = expand_histignore_pattern (histignore.ignores[i].val); + else + npat = histignore.ignores[i].val; + + match = strmatch (npat, line, FNMATCH_EXTFLAG) != FNM_NOMATCH; + + if (histignore.ignores[i].flags & HIGN_EXPAND) + free (npat); + + if (match) + break; + } + + return match; +} +#endif /* HISTORY */ diff --git a/bash-20060316/bashhist.h b/bash-20060316/bashhist.h new file mode 100644 index 000000000..0a01d691e --- /dev/null +++ b/bash-20060316/bashhist.h @@ -0,0 +1,65 @@ +/* bashhist.h -- interface to the bash history functions in bashhist.c. */ + +/* Copyright (C) 1993 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#if !defined (_BASHHIST_H_) +#define _BASHHIST_H_ + +#include "stdc.h" + +/* Flag values for history_control */ +#define HC_IGNSPACE 0x01 +#define HC_IGNDUPS 0x02 +#define HC_ERASEDUPS 0x04 + +#define HC_IGNBOTH (HC_IGNSPACE|HC_IGNDUPS) + +extern int remember_on_history; +extern int history_lines_this_session; +extern int history_lines_in_file; +extern int history_expansion; +extern int history_control; +extern int command_oriented_history; +extern int current_command_first_line_saved; +extern int hist_last_line_added; +extern int hist_last_line_pushed; + +# if defined (BANG_HISTORY) +extern int history_expansion_inhibited; +# endif /* BANG_HISTORY */ + +extern void bash_initialize_history __P((void)); +extern void bash_history_reinit __P((int)); +extern void bash_history_disable __P((void)); +extern void bash_history_enable __P((void)); +extern void load_history __P((void)); +extern void save_history __P((void)); +extern int maybe_append_history __P((char *)); +extern int maybe_save_shell_history __P((void)); +extern char *pre_process_line __P((char *, int, int)); +extern void maybe_add_history __P((char *)); +extern void bash_add_history __P((char *)); +extern int check_add_history __P((char *, int)); +extern int history_number __P((void)); + +extern void setup_history_ignore __P((char *)); + +extern char *last_history_line __P((void)); + +#endif /* _BASHHIST_H_ */ diff --git a/bash-20060316/bashintl.h b/bash-20060316/bashintl.h new file mode 100644 index 000000000..12068e484 --- /dev/null +++ b/bash-20060316/bashintl.h @@ -0,0 +1,48 @@ +/* bashintl.h -- Internationalization stuff + + Copyright (C) 1996-2003 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#if !defined (_BASHINTL_H_) +#define _BASHINTL_H_ + +#if defined (BUILDTOOL) +# undef ENABLE_NLS +# define ENABLE_NLS 0 +#endif + +/* Include this *after* config.h */ +#include "gettext.h" + +#if defined (HAVE_LOCALE_H) +# include +#endif + +#define _(msgid) gettext(msgid) +#define N_(msgid) msgid +#define D_(d, msgid) dgettext(d, msgid) + +#if defined (HAVE_SETLOCALE) && !defined (LC_ALL) +# undef HAVE_SETLOCALE +#endif + +#if !defined (HAVE_SETLOCALE) +# define setlocale(cat, loc) +#endif + +#endif /* !_BASHINTL_H_ */ diff --git a/bash-20060316/bashjmp.h b/bash-20060316/bashjmp.h new file mode 100644 index 000000000..f77e7b958 --- /dev/null +++ b/bash-20060316/bashjmp.h @@ -0,0 +1,43 @@ +/* bashjmp.h -- wrapper for setjmp.h with necessary bash definitions. */ + +/* Copyright (C) 1987,1991 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + Bash is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with Bash; see the file COPYING. If not, write to the Free + Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#ifndef _BASHJMP_H_ +#define _BASHJMP_H_ + +#include "posixjmp.h" + +extern procenv_t top_level; +extern procenv_t subshell_top_level; +extern procenv_t return_catch; /* used by `return' builtin */ + +#define SHFUNC_RETURN() longjmp (return_catch, 1) + +#define COPY_PROCENV(old, save) \ + xbcopy ((char *)old, (char *)save, sizeof (procenv_t)); + +/* Values for the second argument to longjmp/siglongjmp. */ +#define NOT_JUMPED 0 /* Not returning from a longjmp. */ +#define FORCE_EOF 1 /* We want to stop parsing. */ +#define DISCARD 2 /* Discard current command. */ +#define EXITPROG 3 /* Unconditionally exit the program now. */ +#define ERREXIT 4 /* Exit due to error condition */ +#define SIGEXIT 5 /* Exit due to fatal terminating signal */ + +#endif /* _BASHJMP_H_ */ diff --git a/bash-20060316/bashline.c b/bash-20060316/bashline.c new file mode 100644 index 000000000..cc330d084 --- /dev/null +++ b/bash-20060316/bashline.c @@ -0,0 +1,3175 @@ +/* bashline.c -- Bash's interface to the readline library. */ + +/* Copyright (C) 1987-2005 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + Bash is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with Bash; see the file COPYING. If not, write to the Free + Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#include "config.h" + +#if defined (READLINE) + +#include "bashtypes.h" +#include "posixstat.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#if defined (HAVE_GRP_H) +# include +#endif + +#if defined (HAVE_NETDB_H) +# include +#endif + +#include +#include "chartypes.h" +#include "bashansi.h" +#include "bashintl.h" + +#include "shell.h" +#include "input.h" +#include "builtins.h" +#include "bashhist.h" +#include "bashline.h" +#include "execute_cmd.h" +#include "findcmd.h" +#include "pathexp.h" +#include "builtins/common.h" +#include +#include +#include + +#include + +#if defined (ALIAS) +# include "alias.h" +#endif + +#if defined (PROGRAMMABLE_COMPLETION) +# include "pcomplete.h" +#endif + +/* These should agree with the defines for emacs_mode and vi_mode in + rldefs.h, even though that's not a public readline header file. */ +#ifndef EMACS_EDITING_MODE +# define NO_EDITING_MODE -1 +# define EMACS_EDITING_MODE 1 +# define VI_EDITING_MODE 0 +#endif + +#if defined (BRACE_COMPLETION) +extern int bash_brace_completion __P((int, int)); +#endif /* BRACE_COMPLETION */ + +/* Forward declarations */ + +/* Functions bound to keys in Readline for Bash users. */ +static int shell_expand_line __P((int, int)); +static int display_shell_version __P((int, int)); +static int operate_and_get_next __P((int, int)); + +static int bash_ignore_filenames __P((char **)); +static int bash_ignore_everything __P((char **)); + +#if defined (BANG_HISTORY) +static char *history_expand_line_internal __P((char *)); +static int history_expand_line __P((int, int)); +static int tcsh_magic_space __P((int, int)); +#endif /* BANG_HISTORY */ +#ifdef ALIAS +static int alias_expand_line __P((int, int)); +#endif +#if defined (BANG_HISTORY) && defined (ALIAS) +static int history_and_alias_expand_line __P((int, int)); +#endif + +/* Helper functions for Readline. */ +static void bash_directory_expansion __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 void cleanup_expansion_error __P((void)); +static void maybe_make_readline_line __P((char *)); +static void set_up_new_line __P((char *)); + +static int check_redir __P((int)); +static char **attempt_shell_completion __P((const char *, int, int)); +static char *variable_completion_function __P((const char *, int)); +static char *hostname_completion_function __P((const char *, int)); +static char *command_subst_completion_function __P((const char *, int)); + +static void build_history_completion_array __P((void)); +static char *history_completion_generator __P((const char *, int)); +static int dynamic_complete_history __P((int, int)); + +static void initialize_hostname_list __P((void)); +static void add_host_name __P((char *)); +static void snarf_hosts_from_file __P((char *)); +static char **hostnames_matching __P((char *)); + +static void _ignore_completion_names __P((char **, sh_ignore_func_t *)); +static int name_is_acceptable __P((const char *)); +static int test_for_directory __P((const char *)); +static int return_zero __P((const char *)); + +static char *bash_dequote_filename __P((char *, int)); +static char *quote_word_break_chars __P((char *)); +static char *bash_quote_filename __P((char *, int, char *)); + +static int bash_execute_unix_command __P((int, int)); +static void init_unix_command_map __P((void)); +static int isolate_sequence __P((char *, int, int, int *)); + +static int set_saved_history __P((void)); + +#if defined (ALIAS) +static int posix_edit_macros __P((int, int)); +#endif + +#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 *prog_complete_return __P((const char *, int)); + +static char **prog_complete_matches; +#endif + +/* Variables used here but defined in other files. */ +#if defined (BANG_HISTORY) +extern int hist_verify; +#endif + +extern int current_command_line_count, last_command_exit_value; +extern int posixly_correct, no_symbolic_links; +extern char *current_prompt_string, *ps1_prompt; +extern STRING_INT_ALIST word_token_alist[]; +extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin; + +/* SPECIFIC_COMPLETION_FUNCTIONS specifies that we have individual + completion functions which indicate what type of completion should be + done (at or before point) that can be bound to key sequences with + the readline library. */ +#define SPECIFIC_COMPLETION_FUNCTIONS + +#if defined (SPECIFIC_COMPLETION_FUNCTIONS) +static int bash_specific_completion __P((int, rl_compentry_func_t *)); + +static int bash_complete_filename_internal __P((int)); +static int bash_complete_username_internal __P((int)); +static int bash_complete_hostname_internal __P((int)); +static int bash_complete_variable_internal __P((int)); +static int bash_complete_command_internal __P((int)); + +static int bash_complete_filename __P((int, int)); +static int bash_possible_filename_completions __P((int, int)); +static int bash_complete_username __P((int, int)); +static int bash_possible_username_completions __P((int, int)); +static int bash_complete_hostname __P((int, int)); +static int bash_possible_hostname_completions __P((int, int)); +static int bash_complete_variable __P((int, int)); +static int bash_possible_variable_completions __P((int, int)); +static int bash_complete_command __P((int, int)); +static int bash_possible_command_completions __P((int, int)); + +static char *glob_complete_word __P((const char *, int)); +static int bash_glob_completion_internal __P((int)); +static int bash_glob_complete_word __P((int, int)); +static int bash_glob_expand_word __P((int, int)); +static int bash_glob_list_expansions __P((int, int)); + +#endif /* SPECIFIC_COMPLETION_FUNCTIONS */ + +static int edit_and_execute_command __P((int, int, int, char *)); +#if defined (VI_MODE) +static int vi_edit_and_execute_command __P((int, int)); +static int bash_vi_complete __P((int, int)); +#endif +static int emacs_edit_and_execute_command __P((int, int)); + +/* Non-zero once initalize_readline () has been called. */ +int bash_readline_initialized = 0; + +/* If non-zero, we do hostname completion, breaking words at `@' and + trying to complete the stuff after the `@' from our own internal + host list. */ +int perform_hostname_completion = 1; + +/* If non-zero, we don't do command completion on an empty line. */ +int no_empty_command_completion; + +/* Set FORCE_FIGNORE if you want to honor FIGNORE even if it ignores the + only possible matches. Set to 0 if you want to match filenames if they + are the only possible matches, even if FIGNORE says to. */ +int force_fignore = 1; + +static char *bash_completer_word_break_characters = " \t\n\"'@><=;|&(:"; +static char *bash_nohostname_word_break_characters = " \t\n\"'><=;|&(:"; +/* )) */ + +static rl_hook_func_t *old_rl_startup_hook = (rl_hook_func_t *)NULL; + +static int dot_in_path = 0; + +/* What kind of quoting is performed by bash_quote_filename: + COMPLETE_DQUOTE = double-quoting the filename + COMPLETE_SQUOTE = single_quoting the filename + COMPLETE_BSQUOTE = backslash-quoting special chars in the filename +*/ +#define COMPLETE_DQUOTE 1 +#define COMPLETE_SQUOTE 2 +#define COMPLETE_BSQUOTE 3 +static int completion_quoting_style = COMPLETE_BSQUOTE; + +/* Flag values for the final argument to bash_default_completion */ +#define DEFCOMP_CMDPOS 1 + +/* Change the readline VI-mode keymaps into or out of Posix.2 compliance. + Called when the shell is put into or out of `posix' mode. */ +void +posix_readline_initialize (on_or_off) + int on_or_off; +{ + if (on_or_off) + rl_variable_bind ("comment-begin", "#"); +#if defined (VI_MODE) + rl_bind_key_in_map (CTRL ('I'), on_or_off ? rl_insert : rl_complete, vi_insertion_keymap); +#endif +} + +/* When this function returns, rl_completer_word_break_characters points to + dynamically allocated memory. */ +int +enable_hostname_completion (on_or_off) + int on_or_off; +{ + int old_value; + char *at, *nv, *nval; + + old_value = perform_hostname_completion; + + if (on_or_off) + { + perform_hostname_completion = 1; + rl_special_prefixes = "$@"; + } + else + { + perform_hostname_completion = 0; + rl_special_prefixes = "$"; + } + + /* Now we need to figure out how to appropriately modify and assign + rl_completer_word_break_characters depending on whether we want + hostname completion on or off. */ + + /* If this is the first time this has been called + (bash_readline_initialized == 0), use the sames values as before, but + allocate new memory for rl_completer_word_break_characters. */ + + if (bash_readline_initialized == 0 && + (rl_completer_word_break_characters == 0 || + rl_completer_word_break_characters == rl_basic_word_break_characters)) + { + if (on_or_off) + rl_completer_word_break_characters = savestring (bash_completer_word_break_characters); + else + rl_completer_word_break_characters = savestring (bash_nohostname_word_break_characters); + } + else + { + /* See if we have anything to do. */ + at = strchr (rl_completer_word_break_characters, '@'); + if ((at == 0 && on_or_off == 0) || (at != 0 && on_or_off != 0)) + return old_value; + + /* We have something to do. Do it. */ + nval = (char *)xmalloc (strlen (rl_completer_word_break_characters) + 1 + on_or_off); + + if (on_or_off == 0) + { + /* Turn it off -- just remove `@' from word break chars. We want + to remove all occurrences of `@' from the char list, so we loop + rather than just copy the rest of the list over AT. */ + for (nv = nval, at = rl_completer_word_break_characters; *at; ) + if (*at != '@') + *nv++ = *at++; + else + at++; + *nv = '\0'; + } + else + { + nval[0] = '@'; + strcpy (nval + 1, rl_completer_word_break_characters); + } + + free (rl_completer_word_break_characters); + rl_completer_word_break_characters = nval; + } + + return (old_value); +} + +/* Called once from parse.y if we are going to use readline. */ +void +initialize_readline () +{ + rl_command_func_t *func; + char kseq[2]; + + if (bash_readline_initialized) + return; + + rl_terminal_name = get_string_value ("TERM"); + rl_instream = stdin; + rl_outstream = stderr; + + /* Allow conditional parsing of the ~/.inputrc file. */ + rl_readline_name = "Bash"; + + /* Add bindable names before calling rl_initialize so they may be + referenced in the various inputrc files. */ + rl_add_defun ("shell-expand-line", shell_expand_line, -1); +#ifdef BANG_HISTORY + rl_add_defun ("history-expand-line", history_expand_line, -1); + rl_add_defun ("magic-space", tcsh_magic_space, -1); +#endif + +#ifdef ALIAS + rl_add_defun ("alias-expand-line", alias_expand_line, -1); +# ifdef BANG_HISTORY + rl_add_defun ("history-and-alias-expand-line", history_and_alias_expand_line, -1); +# endif +#endif + + /* Backwards compatibility. */ + rl_add_defun ("insert-last-argument", rl_yank_last_arg, -1); + + rl_add_defun ("operate-and-get-next", operate_and_get_next, -1); + rl_add_defun ("display-shell-version", display_shell_version, -1); + rl_add_defun ("edit-and-execute-command", emacs_edit_and_execute_command, -1); + +#if defined (BRACE_COMPLETION) + rl_add_defun ("complete-into-braces", bash_brace_completion, -1); +#endif + +#if defined (SPECIFIC_COMPLETION_FUNCTIONS) + rl_add_defun ("complete-filename", bash_complete_filename, -1); + rl_add_defun ("possible-filename-completions", bash_possible_filename_completions, -1); + rl_add_defun ("complete-username", bash_complete_username, -1); + rl_add_defun ("possible-username-completions", bash_possible_username_completions, -1); + rl_add_defun ("complete-hostname", bash_complete_hostname, -1); + rl_add_defun ("possible-hostname-completions", bash_possible_hostname_completions, -1); + rl_add_defun ("complete-variable", bash_complete_variable, -1); + rl_add_defun ("possible-variable-completions", bash_possible_variable_completions, -1); + rl_add_defun ("complete-command", bash_complete_command, -1); + rl_add_defun ("possible-command-completions", bash_possible_command_completions, -1); + rl_add_defun ("glob-complete-word", bash_glob_complete_word, -1); + rl_add_defun ("glob-expand-word", bash_glob_expand_word, -1); + rl_add_defun ("glob-list-expansions", bash_glob_list_expansions, -1); +#endif + + rl_add_defun ("dynamic-complete-history", dynamic_complete_history, -1); + + /* Bind defaults before binding our custom shell keybindings. */ + if (RL_ISSTATE(RL_STATE_INITIALIZED) == 0) + rl_initialize (); + + /* Bind up our special shell functions. */ + rl_bind_key_if_unbound_in_map (CTRL('E'), shell_expand_line, emacs_meta_keymap); + +#ifdef BANG_HISTORY + rl_bind_key_if_unbound_in_map ('^', history_expand_line, emacs_meta_keymap); +#endif + + rl_bind_key_if_unbound_in_map (CTRL ('O'), operate_and_get_next, emacs_standard_keymap); + rl_bind_key_if_unbound_in_map (CTRL ('V'), display_shell_version, emacs_ctlx_keymap); + + /* In Bash, the user can switch editing modes with "set -o [vi emacs]", + so it is not necessary to allow C-M-j for context switching. Turn + off this occasionally confusing behaviour. */ + kseq[0] = CTRL('J'); + kseq[1] = '\0'; + func = rl_function_of_keyseq (kseq, emacs_meta_keymap, (int *)NULL); + if (func == rl_vi_editing_mode) + rl_unbind_key_in_map (CTRL('J'), emacs_meta_keymap); + kseq[0] = CTRL('M'); + func = rl_function_of_keyseq (kseq, emacs_meta_keymap, (int *)NULL); + if (func == rl_vi_editing_mode) + rl_unbind_key_in_map (CTRL('M'), emacs_meta_keymap); +#if defined (VI_MODE) + rl_unbind_key_in_map (CTRL('E'), vi_movement_keymap); +#endif + +#if defined (BRACE_COMPLETION) + rl_bind_key_if_unbound_in_map ('{', bash_brace_completion, emacs_meta_keymap); /*}*/ +#endif /* BRACE_COMPLETION */ + +#if defined (SPECIFIC_COMPLETION_FUNCTIONS) + rl_bind_key_if_unbound_in_map ('/', bash_complete_filename, emacs_meta_keymap); + rl_bind_key_if_unbound_in_map ('/', bash_possible_filename_completions, emacs_ctlx_keymap); + + /* Have to jump through hoops here because there is a default binding for + M-~ (rl_tilde_expand) */ + kseq[0] = '~'; + kseq[1] = '\0'; + func = rl_function_of_keyseq (kseq, emacs_meta_keymap, (int *)NULL); + if (func == 0 || func == rl_tilde_expand) + rl_bind_keyseq_in_map (kseq, bash_complete_username, emacs_meta_keymap); + + rl_bind_key_if_unbound_in_map ('~', bash_possible_username_completions, emacs_ctlx_keymap); + + rl_bind_key_if_unbound_in_map ('@', bash_complete_hostname, emacs_meta_keymap); + rl_bind_key_if_unbound_in_map ('@', bash_possible_hostname_completions, emacs_ctlx_keymap); + + rl_bind_key_if_unbound_in_map ('$', bash_complete_variable, emacs_meta_keymap); + rl_bind_key_if_unbound_in_map ('$', bash_possible_variable_completions, emacs_ctlx_keymap); + + rl_bind_key_if_unbound_in_map ('!', bash_complete_command, emacs_meta_keymap); + rl_bind_key_if_unbound_in_map ('!', bash_possible_command_completions, emacs_ctlx_keymap); + + rl_bind_key_if_unbound_in_map ('g', bash_glob_complete_word, emacs_meta_keymap); + rl_bind_key_if_unbound_in_map ('*', bash_glob_expand_word, emacs_ctlx_keymap); + rl_bind_key_if_unbound_in_map ('g', bash_glob_list_expansions, emacs_ctlx_keymap); + +#endif /* SPECIFIC_COMPLETION_FUNCTIONS */ + + kseq[0] = TAB; + kseq[1] = '\0'; + func = rl_function_of_keyseq (kseq, emacs_meta_keymap, (int *)NULL); + if (func == 0 || func == rl_tab_insert) + rl_bind_key_in_map (TAB, dynamic_complete_history, emacs_meta_keymap); + + /* Tell the completer that we want a crack first. */ + rl_attempted_completion_function = attempt_shell_completion; + + /* Tell the completer that we might want to follow symbolic links or + do other expansion on directory names. */ + rl_directory_completion_hook = bash_directory_completion_hook; + + /* Tell the filename completer we want a chance to ignore some names. */ + rl_ignore_some_completions_function = filename_completion_ignore; + + /* Bind C-xC-e to invoke emacs and run result as commands. */ + rl_bind_key_if_unbound_in_map (CTRL ('E'), emacs_edit_and_execute_command, emacs_ctlx_keymap); +#if defined (VI_MODE) + rl_bind_key_if_unbound_in_map ('v', vi_edit_and_execute_command, vi_movement_keymap); +# if defined (ALIAS) + rl_bind_key_if_unbound_in_map ('@', posix_edit_macros, vi_movement_keymap); +# endif + + rl_bind_key_in_map ('\\', bash_vi_complete, vi_movement_keymap); + rl_bind_key_in_map ('*', bash_vi_complete, vi_movement_keymap); + rl_bind_key_in_map ('=', bash_vi_complete, vi_movement_keymap); +#endif + + rl_completer_quote_characters = "'\""; + + /* This sets rl_completer_word_break_characters and rl_special_prefixes + to the appropriate values, depending on whether or not hostname + completion is enabled. */ + enable_hostname_completion (perform_hostname_completion); + + /* characters that need to be quoted when appearing in filenames. */ + rl_filename_quote_characters = " \t\n\\\"'@<>=;|&()#$`?*[!:{"; /*}*/ + rl_filename_quoting_function = bash_quote_filename; + rl_filename_dequoting_function = bash_dequote_filename; + rl_char_is_quoted_p = char_is_quoted; + +#if 0 + /* This is superfluous and makes it impossible to use tab completion in + vi mode even when explicitly binding it in ~/.inputrc. sv_strict_posix() + should already have called posix_readline_initialize() when + posixly_correct was set. */ + if (posixly_correct) + posix_readline_initialize (1); +#endif + + bash_readline_initialized = 1; +} + +/* On Sun systems at least, rl_attempted_completion_function can end up + getting set to NULL, and rl_completion_entry_function set to do command + word completion if Bash is interrupted while trying to complete a command + word. This just resets all the completion functions to the right thing. + It's called from throw_to_top_level(). */ +void +bashline_reinitialize () +{ + tilde_initialize (); + rl_attempted_completion_function = attempt_shell_completion; + rl_completion_entry_function = NULL; + rl_directory_completion_hook = bash_directory_completion_hook; + rl_ignore_some_completions_function = filename_completion_ignore; +} + +/* Contains the line to push into readline. */ +static char *push_to_readline = (char *)NULL; + +/* Push the contents of push_to_readline into the + readline buffer. */ +static int +bash_push_line () +{ + if (push_to_readline) + { + rl_insert_text (push_to_readline); + free (push_to_readline); + push_to_readline = (char *)NULL; + rl_startup_hook = old_rl_startup_hook; + } + return 0; +} + +/* Call this to set the initial text for the next line to read + from readline. */ +int +bash_re_edit (line) + char *line; +{ + FREE (push_to_readline); + + push_to_readline = savestring (line); + old_rl_startup_hook = rl_startup_hook; + rl_startup_hook = bash_push_line; + + return (0); +} + +static int +display_shell_version (count, c) + int count, c; +{ + rl_crlf (); + show_shell_version (0); + putc ('\r', rl_outstream); + fflush (rl_outstream); + rl_on_new_line (); + rl_redisplay (); + return 0; +} + +/* **************************************************************** */ +/* */ +/* Readline Stuff */ +/* */ +/* **************************************************************** */ + +/* If the user requests hostname completion, then simply build a list + of hosts, and complete from that forever more, or at least until + HOSTFILE is unset. */ + +/* THIS SHOULD BE A STRINGLIST. */ +/* The kept list of hostnames. */ +static char **hostname_list = (char **)NULL; + +/* The physical size of the above list. */ +static int hostname_list_size; + +/* The number of hostnames in the above list. */ +static int hostname_list_length; + +/* Whether or not HOSTNAME_LIST has been initialized. */ +int hostname_list_initialized = 0; + +/* Initialize the hostname completion table. */ +static void +initialize_hostname_list () +{ + char *temp; + + temp = get_string_value ("HOSTFILE"); + if (temp == 0) + temp = get_string_value ("hostname_completion_file"); + if (temp == 0) + temp = DEFAULT_HOSTS_FILE; + + snarf_hosts_from_file (temp); + + if (hostname_list) + hostname_list_initialized++; +} + +/* Add NAME to the list of hosts. */ +static void +add_host_name (name) + char *name; +{ + if (hostname_list_length + 2 > hostname_list_size) + { + hostname_list_size = (hostname_list_size + 32) - (hostname_list_size % 32); + hostname_list = strvec_resize (hostname_list, hostname_list_size); + } + + hostname_list[hostname_list_length++] = savestring (name); + hostname_list[hostname_list_length] = (char *)NULL; +} + +#define cr_whitespace(c) ((c) == '\r' || (c) == '\n' || whitespace(c)) + +static void +snarf_hosts_from_file (filename) + char *filename; +{ + FILE *file; + char *temp, buffer[256], name[256]; + register int i, start; + + file = fopen (filename, "r"); + if (file == 0) + return; + + while (temp = fgets (buffer, 255, file)) + { + /* Skip to first character. */ + for (i = 0; buffer[i] && cr_whitespace (buffer[i]); i++) + ; + + /* If comment or blank line, ignore. */ + if (buffer[i] == '\0' || buffer[i] == '#') + continue; + + /* If `preprocessor' directive, do the include. */ + if (strncmp (buffer + i, "$include ", 9) == 0) + { + char *incfile, *t; + + /* Find start of filename. */ + for (incfile = buffer + i + 9; *incfile && whitespace (*incfile); incfile++) + ; + + /* Find end of filename. */ + for (t = incfile; *t && cr_whitespace (*t) == 0; t++) + ; + + *t = '\0'; + + snarf_hosts_from_file (incfile); + continue; + } + + /* Skip internet address if present. */ + if (DIGIT (buffer[i])) + for (; buffer[i] && cr_whitespace (buffer[i]) == 0; i++); + + /* Gobble up names. Each name is separated with whitespace. */ + while (buffer[i]) + { + for (; cr_whitespace (buffer[i]); i++) + ; + if (buffer[i] == '\0' || buffer[i] == '#') + break; + + /* Isolate the current word. */ + for (start = i; buffer[i] && cr_whitespace (buffer[i]) == 0; i++) + ; + if (i == start) + continue; + strncpy (name, buffer + start, i - start); + name[i - start] = '\0'; + add_host_name (name); + } + } + fclose (file); +} + +/* Return the hostname list. */ +char ** +get_hostname_list () +{ + if (hostname_list_initialized == 0) + initialize_hostname_list (); + return (hostname_list); +} + +void +clear_hostname_list () +{ + register int i; + + if (hostname_list_initialized == 0) + return; + for (i = 0; i < hostname_list_length; i++) + free (hostname_list[i]); + hostname_list_length = 0; +} + +/* Return a NULL terminated list of hostnames which begin with TEXT. + Initialize the hostname list the first time if neccessary. + The array is malloc ()'ed, but not the individual strings. */ +static char ** +hostnames_matching (text) + char *text; +{ + register int i, len, nmatch, rsize; + char **result; + + if (hostname_list_initialized == 0) + initialize_hostname_list (); + + if (hostname_list_initialized == 0) + return ((char **)NULL); + + /* Special case. If TEXT consists of nothing, then the whole list is + what is desired. */ + if (*text == '\0') + { + result = strvec_create (1 + hostname_list_length); + for (i = 0; i < hostname_list_length; i++) + result[i] = hostname_list[i]; + result[i] = (char *)NULL; + return (result); + } + + /* Scan until found, or failure. */ + len = strlen (text); + result = (char **)NULL; + for (i = nmatch = rsize = 0; i < hostname_list_length; i++) + { + if (STREQN (text, hostname_list[i], len) == 0) + continue; + + /* OK, it matches. Add it to the list. */ + if (nmatch >= (rsize - 1)) + { + rsize = (rsize + 16) - (rsize % 16); + result = strvec_resize (result, rsize); + } + + result[nmatch++] = hostname_list[i]; + } + if (nmatch) + result[nmatch] = (char *)NULL; + return (result); +} + +/* The equivalent of the Korn shell C-o operate-and-get-next-history-line + editing command. */ +static int saved_history_line_to_use = -1; + +static int +set_saved_history () +{ + if (saved_history_line_to_use >= 0) + rl_get_previous_history (history_length - saved_history_line_to_use, 0); + saved_history_line_to_use = -1; + rl_startup_hook = old_rl_startup_hook; + return (0); +} + +static int +operate_and_get_next (count, c) + int count, c; +{ + int where; + + /* Accept the current line. */ + rl_newline (1, c); + + /* Find the current line, and find the next line to use. */ + where = where_history (); + + if ((history_is_stifled () && (history_length >= history_max_entries)) || + (where >= history_length - 1)) + saved_history_line_to_use = where; + else + saved_history_line_to_use = where + 1; + + old_rl_startup_hook = rl_startup_hook; + rl_startup_hook = set_saved_history; + + return 0; +} + +/* This vi mode command causes VI_EDIT_COMMAND to be run on the current + command being entered (if no explicit argument is given), otherwise on + a command from the history file. */ + +#define VI_EDIT_COMMAND "fc -e \"${VISUAL:-${EDITOR:-vi}}\"" +#define EMACS_EDIT_COMMAND "fc -e \"${VISUAL:-${EDITOR:-emacs}}\"" +#define POSIX_VI_EDIT_COMMAND "fc -e vi" + +static int +edit_and_execute_command (count, c, editing_mode, edit_command) + int count, c, editing_mode; + char *edit_command; +{ + char *command; + int r, cclc, rrs; + + rrs = rl_readline_state; + cclc = current_command_line_count; + + /* Accept the current line. */ + rl_newline (1, c); + + if (rl_explicit_arg) + { + command = (char *)xmalloc (strlen (edit_command) + 8); + sprintf (command, "%s %d", edit_command, count); + } + else + { + /* Take the command we were just editing, add it to the history file, + then call fc to operate on it. We have to add a dummy command to + the end of the history because fc ignores the last command (assumes + it's supposed to deal with the command before the `fc'). */ + using_history (); + bash_add_history (rl_line_buffer); + bash_add_history (""); + history_lines_this_session++; + using_history (); + command = savestring (edit_command); + } + + /* Now, POSIX.1-2001 and SUSv3 say that the commands executed from the + temporary file should be placed into the history. We don't do that + yet. */ + r = parse_and_execute (command, (editing_mode == VI_EDITING_MODE) ? "v" : "C-xC-e", SEVAL_NOHIST); + + current_command_line_count = cclc; + + /* Now erase the contents of the current line and undo the effects of the + rl_accept_line() above. We don't even want to make the text we just + executed available for undoing. */ + rl_line_buffer[0] = '\0'; /* XXX */ + rl_point = rl_end = 0; + rl_done = 0; + rl_readline_state = rrs; + + rl_forced_update_display (); + + return r; +} + +#if defined (VI_MODE) +static int +vi_edit_and_execute_command (count, c) + int count, c; +{ + if (posixly_correct) + return (edit_and_execute_command (count, c, VI_EDITING_MODE, POSIX_VI_EDIT_COMMAND)); + else + return (edit_and_execute_command (count, c, VI_EDITING_MODE, VI_EDIT_COMMAND)); +} +#endif /* VI_MODE */ + +static int +emacs_edit_and_execute_command (count, c) + int count, c; +{ + return (edit_and_execute_command (count, c, EMACS_EDITING_MODE, EMACS_EDIT_COMMAND)); +} + +#if defined (ALIAS) +static int +posix_edit_macros (count, key) + int count, key; +{ + int c; + char alias_name[3], *alias_value, *macro; + + c = rl_read_key (); + alias_name[0] = '_'; + alias_name[1] = c; + alias_name[2] = '\0'; + + alias_value = get_alias_value (alias_name); + if (alias_value && *alias_value) + { + macro = savestring (alias_value); + rl_push_macro_input (macro); + } + return 0; +} +#endif + +/* **************************************************************** */ +/* */ +/* How To Do Shell Completion */ +/* */ +/* **************************************************************** */ + +#define COMMAND_SEPARATORS ";|&{(`" +/* )} */ + +static int +check_redir (ti) + int ti; +{ + register int this_char, prev_char; + + /* Handle the two character tokens `>&', `<&', and `>|'. + We are not in a command position after one of these. */ + this_char = rl_line_buffer[ti]; + prev_char = rl_line_buffer[ti - 1]; + + if ((this_char == '&' && (prev_char == '<' || prev_char == '>')) || + (this_char == '|' && prev_char == '>')) + return (1); + else if ((this_char == '{' && prev_char == '$') || /* } */ + (char_is_quoted (rl_line_buffer, ti))) + return (1); + return (0); +} + +#if defined (PROGRAMMABLE_COMPLETION) +/* + * XXX - because of the <= start test, and setting os = s+1, this can + * potentially return os > start. This is probably not what we want to + * happen, but fix later after 2.05a-release. + */ +static int +find_cmd_start (start) + int start; +{ + register int s, os; + + os = 0; + while (((s = skip_to_delim (rl_line_buffer, os, COMMAND_SEPARATORS)) <= start) && + rl_line_buffer[s]) + os = s+1; + return os; +} + +static int +find_cmd_end (end) + int end; +{ + register int e; + + e = skip_to_delim (rl_line_buffer, end, COMMAND_SEPARATORS); + return e; +} + +static char * +find_cmd_name (start) + int start; +{ + char *name; + register int s, e; + + for (s = start; whitespace (rl_line_buffer[s]); s++) + ; + + /* skip until a shell break character */ + e = skip_to_delim (rl_line_buffer, s, "()<>;&| \t\n"); + + name = substring (rl_line_buffer, s, e); + + return (name); +} + +static char * +prog_complete_return (text, matchnum) + const char *text; + int matchnum; +{ + static int ind; + + if (matchnum == 0) + ind = 0; + + if (prog_complete_matches == 0 || prog_complete_matches[ind] == 0) + return (char *)NULL; + return (prog_complete_matches[ind++]); +} + +#endif /* PROGRAMMABLE_COMPLETION */ + +/* Do some completion on TEXT. The indices of TEXT in RL_LINE_BUFFER are + at START and END. Return an array of matches, or NULL if none. */ +static char ** +attempt_shell_completion (text, start, end) + const char *text; + int start, end; +{ + int in_command_position, ti, saveti, qc, dflags; + char **matches, *command_separator_chars; + + command_separator_chars = COMMAND_SEPARATORS; + matches = (char **)NULL; + rl_ignore_some_completions_function = filename_completion_ignore; + + /* Determine if this could be a command word. It is if it appears at + the start of the line (ignoring preceding whitespace), or if it + appears after a character that separates commands. It cannot be a + command word if we aren't at the top-level prompt. */ + ti = start - 1; + saveti = qc = -1; + + while ((ti > -1) && (whitespace (rl_line_buffer[ti]))) + ti--; + +#if 1 + /* If this is an open quote, maybe we're trying to complete a quoted + command name. */ + if (ti >= 0 && (rl_line_buffer[ti] == '"' || rl_line_buffer[ti] == '\'')) + { + qc = rl_line_buffer[ti]; + saveti = ti--; + while (ti > -1 && (whitespace (rl_line_buffer[ti]))) + ti--; + } +#endif + + in_command_position = 0; + if (ti < 0) + { + /* Only do command completion at the start of a line when we + are prompting at the top level. */ + if (current_prompt_string == ps1_prompt) + in_command_position++; + } + else if (member (rl_line_buffer[ti], command_separator_chars)) + { + in_command_position++; + + if (check_redir (ti) == 1) + in_command_position = 0; + } + else + { + /* This still could be in command position. It is possible + that all of the previous words on the line are variable + assignments. */ + } + + /* Check that we haven't incorrectly flagged a closed command substitution + as indicating we're in a command position. */ + if (in_command_position && ti >= 0 && rl_line_buffer[ti] == '`' && + *text != '`' && unclosed_pair (rl_line_buffer, end, "`") == 0) + in_command_position = 0; + + /* Special handling for command substitution. If *TEXT is a backquote, + it can be the start or end of an old-style command substitution, or + unmatched. If it's unmatched, both calls to unclosed_pair will + succeed. */ + if (*text == '`' && + (in_command_position || (unclosed_pair (rl_line_buffer, start, "`") && + unclosed_pair (rl_line_buffer, end, "`")))) + matches = rl_completion_matches (text, command_subst_completion_function); + +#if defined (PROGRAMMABLE_COMPLETION) + /* Attempt programmable completion. */ + if (!matches && in_command_position == 0 && prog_completion_enabled && + (progcomp_size () > 0) && current_prompt_string == ps1_prompt) + { + int s, e, foundcs; + char *n; + + /* XXX - don't free the members */ + if (prog_complete_matches) + free (prog_complete_matches); + prog_complete_matches = (char **)NULL; + + s = find_cmd_start (start); + e = find_cmd_end (end); + n = find_cmd_name (s); + if (e > s && assignment (n, 0) == 0) + prog_complete_matches = programmable_completions (n, text, s, e, &foundcs); + else + foundcs = 0; + FREE (n); + /* XXX - if we found a COMPSPEC for the command, just return whatever + the programmable completion code returns, and disable the default + filename completion that readline will do unless the COPT_DEFAULT + option has been set with the `-o default' option to complete. */ + if (foundcs) + { + /* If the user specified that the compspec returns filenames, make + sure that readline knows it. */ + if (foundcs & COPT_FILENAMES) + rl_filename_completion_desired = 1; + /* If the user doesn't want a space appended, tell readline. */ + if (foundcs & COPT_NOSPACE) + rl_completion_suppress_append = 1; + /* Turn what the programmable completion code returns into what + readline wants. I should have made compute_lcd_of_matches + external... */ + matches = rl_completion_matches (text, prog_complete_return); + if ((foundcs & COPT_DEFAULT) == 0) + rl_attempted_completion_over = 1; /* no default */ + if (matches || ((foundcs & COPT_BASHDEFAULT) == 0)) + return (matches); + } + } +#endif + + if (matches == 0) + { + dflags = 0; + if (in_command_position) + dflags |= DEFCOMP_CMDPOS; + matches = bash_default_completion (text, start, end, qc, dflags); + } + + return matches; +} + +char ** +bash_default_completion (text, start, end, qc, compflags) + const char *text; + int start, end, qc, compflags; +{ + char **matches; + + matches = (char **)NULL; + + /* New posix-style command substitution or variable name? */ + if (!matches && *text == '$') + { + if (qc != '\'' && text[1] == '(') /* ) */ + matches = rl_completion_matches (text, command_subst_completion_function); + else + matches = rl_completion_matches (text, variable_completion_function); + } + + /* If the word starts in `~', and there is no slash in the word, then + try completing this word as a username. */ + if (!matches && *text == '~' && !xstrchr (text, '/')) + matches = rl_completion_matches (text, rl_username_completion_function); + + /* Another one. Why not? If the word starts in '@', then look through + the world of known hostnames for completion first. */ + if (!matches && perform_hostname_completion && *text == '@') + matches = rl_completion_matches (text, hostname_completion_function); + + /* And last, (but not least) if this word is in a command position, then + complete over possible command names, including aliases, functions, + and command names. */ + if (matches == 0 && (compflags & DEFCOMP_CMDPOS)) + { + /* If END == START and text[0] == 0, we are trying to complete an empty + command word. */ + if (no_empty_command_completion && end == start && text[0] == '\0') + { + matches = (char **)NULL; + rl_ignore_some_completions_function = bash_ignore_everything; + } + else + { +#define CMD_IS_DIR(x) (absolute_pathname(x) == 0 && absolute_program(x) == 0 && *(x) != '~' && test_for_directory (x)) + + dot_in_path = 0; + matches = rl_completion_matches (text, command_word_completion_function); + + /* If we are attempting command completion and nothing matches, we + do not want readline to perform filename completion for us. We + still want to be able to complete partial pathnames, so set the + completion ignore function to something which will remove + filenames and leave directories in the match list. */ + if (matches == (char **)NULL) + rl_ignore_some_completions_function = bash_ignore_filenames; + else if (matches[1] == 0 && CMD_IS_DIR(matches[0]) && dot_in_path == 0) + /* If we found a single match, without looking in the current + directory (because it's not in $PATH), but the found name is + also a command in the current directory, suppress appending any + terminating character, since it's ambiguous. */ + { + rl_completion_suppress_append = 1; + rl_filename_completion_desired = 0; + } + else if (matches[0] && matches[1] && STREQ (matches[0], matches[1]) && CMD_IS_DIR (matches[0])) + /* There are multiple instances of the same match (duplicate + completions haven't yet been removed). In this case, all of + the matches will be the same, and the duplicate removal code + will distill them all down to one. We turn on + rl_completion_suppress_append for the same reason as above. + Remember: we only care if there's eventually a single unique + completion. If there are multiple completions this won't + make a difference and the problem won't occur. */ + { + rl_completion_suppress_append = 1; + rl_filename_completion_desired = 0; + } + } + } + + /* This could be a globbing pattern, so try to expand it using pathname + expansion. */ + if (!matches && glob_pattern_p (text)) + { + matches = rl_completion_matches (text, glob_complete_word); + /* A glob expression that matches more than one filename is problematic. + If we match more than one filename, punt. */ + if (matches && matches[1] && rl_completion_type == TAB) + { + strvec_dispose (matches); + matches = (char **)0; + } + } + + return (matches); +} + +/* This is the function to call when the word to complete is in a position + where a command word can be found. It grovels $PATH, looking for commands + that match. It also scans aliases, function names, and the shell_builtin + table. */ +char * +command_word_completion_function (hint_text, state) + const char *hint_text; + int state; +{ + static char *hint = (char *)NULL; + static char *path = (char *)NULL; + static char *val = (char *)NULL; + static char *filename_hint = (char *)NULL; + static char *dequoted_hint = (char *)NULL; + static int path_index, hint_len, dequoted_len, istate, igncase; + static int mapping_over, local_index; + static SHELL_VAR **varlist = (SHELL_VAR **)NULL; +#if defined (ALIAS) + static alias_t **alias_list = (alias_t **)NULL; +#endif /* ALIAS */ + char *temp; + + /* We have to map over the possibilities for command words. If we have + no state, then make one just for that purpose. */ + if (!state) + { + if (dequoted_hint && dequoted_hint != hint) + free (dequoted_hint); + if (hint) + free (hint); + + mapping_over = 0; + val = (char *)NULL; + + temp = rl_variable_value ("completion-ignore-case"); + igncase = strcmp (temp, "on") == 0; + + /* If this is an absolute program name, do not check it against + aliases, reserved words, functions or builtins. We must check + whether or not it is unique, and, if so, whether that filename + is executable. */ + if (absolute_program (hint_text)) + { + /* Perform tilde expansion on what's passed, so we don't end up + passing filenames with tildes directly to stat(). */ + if (*hint_text == '~') + hint = bash_tilde_expand (hint_text, 0); + else + hint = savestring (hint_text); + + dequoted_hint = hint; + /* If readline's completer found a quote character somewhere, but + didn't set the quote character, there must have been a quote + character embedded in the filename. It can't be at the start of + the filename, so we need to dequote the filename before we look + in the file system for it. */ + if (rl_completion_found_quote && rl_completion_quote_character == 0) + { + dequoted_hint = bash_dequote_filename (hint, 0); + free (hint); + hint = dequoted_hint; + } + dequoted_len = hint_len = strlen (hint); + + if (filename_hint) + free (filename_hint); + + filename_hint = savestring (hint); + + mapping_over = 4; + istate = 0; + goto inner; + } + + dequoted_hint = hint = savestring (hint_text); + dequoted_len = hint_len = strlen (hint); + + if (rl_completion_found_quote && rl_completion_quote_character == 0) + { + dequoted_hint = bash_dequote_filename (hint, 0); + dequoted_len = strlen (dequoted_hint); + } + + path = get_string_value ("PATH"); + path_index = dot_in_path = 0; + + /* Initialize the variables for each type of command word. */ + local_index = 0; + + if (varlist) + free (varlist); + + varlist = all_visible_functions (); + +#if defined (ALIAS) + if (alias_list) + free (alias_list); + + alias_list = all_aliases (); +#endif /* ALIAS */ + } + + /* mapping_over says what we are currently hacking. Note that every case + in this list must fall through when there are no more possibilities. */ + + switch (mapping_over) + { + case 0: /* Aliases come first. */ +#if defined (ALIAS) + while (alias_list && alias_list[local_index]) + { + register char *alias; + + alias = alias_list[local_index++]->name; + + if (STREQN (alias, hint, hint_len)) + return (savestring (alias)); + } +#endif /* ALIAS */ + local_index = 0; + mapping_over++; + + case 1: /* Then shell reserved words. */ + { + while (word_token_alist[local_index].word) + { + register char *reserved_word; + + reserved_word = word_token_alist[local_index++].word; + + if (STREQN (reserved_word, hint, hint_len)) + return (savestring (reserved_word)); + } + local_index = 0; + mapping_over++; + } + + case 2: /* Then function names. */ + while (varlist && varlist[local_index]) + { + register char *varname; + + varname = varlist[local_index++]->name; + + if (STREQN (varname, hint, hint_len)) + return (savestring (varname)); + } + local_index = 0; + mapping_over++; + + case 3: /* Then shell builtins. */ + for (; local_index < num_shell_builtins; local_index++) + { + /* Ignore it if it doesn't have a function pointer or if it + is not currently enabled. */ + if (!shell_builtins[local_index].function || + (shell_builtins[local_index].flags & BUILTIN_ENABLED) == 0) + continue; + + if (STREQN (shell_builtins[local_index].name, hint, hint_len)) + { + int i = local_index++; + + return (savestring (shell_builtins[i].name)); + } + } + local_index = 0; + mapping_over++; + } + + /* Repeatedly call filename_completion_function while we have + members of PATH left. Question: should we stat each file? + Answer: we call executable_file () on each file. */ + outer: + + istate = (val != (char *)NULL); + + if (!istate) + { + char *current_path; + + /* Get the next directory from the path. If there is none, then we + are all done. */ + if (!path || !path[path_index] || + (current_path = extract_colon_unit (path, &path_index)) == 0) + return ((char *)NULL); + + if (*current_path == 0) + { + free (current_path); + current_path = savestring ("."); + } + + if (*current_path == '~') + { + char *t; + + t = bash_tilde_expand (current_path, 0); + free (current_path); + current_path = t; + } + + if (current_path[0] == '.' && current_path[1] == '\0') + dot_in_path = 1; + + if (filename_hint) + free (filename_hint); + + filename_hint = sh_makepath (current_path, hint, 0); + free (current_path); + } + + inner: + val = rl_filename_completion_function (filename_hint, istate); + istate = 1; + + if (val == 0) + { + /* If the hint text is an absolute program, then don't bother + searching through PATH. */ + if (absolute_program (hint)) + return ((char *)NULL); + + goto outer; + } + else + { + int match, freetemp; + char *temp; + + if (absolute_program (hint)) + { + if (igncase == 0) + match = strncmp (val, hint, hint_len) == 0; + else + match = strncasecmp (val, hint, hint_len) == 0; + + /* If we performed tilde expansion, restore the original + filename. */ + if (*hint_text == '~') + { + int l, tl, vl, dl; + char *rd; + vl = strlen (val); + tl = strlen (hint_text); +#if 0 + l = vl - hint_len; /* # of chars added */ +#else + rd = savestring (filename_hint); + bash_directory_expansion (&rd); + dl = strlen (rd); + l = vl - dl; /* # of chars added */ + free (rd); +#endif + temp = (char *)xmalloc (l + 2 + tl); + strcpy (temp, hint_text); + strcpy (temp + tl, val + vl - l); + } + else + temp = savestring (val); + freetemp = 1; + } + else + { + temp = strrchr (val, '/'); + + if (temp) + { + temp++; + if (igncase == 0) + freetemp = match = strncmp (temp, hint, hint_len) == 0; + else + freetemp = match = strncasecmp (temp, hint, hint_len) == 0; + if (match) + temp = savestring (temp); + } + else + freetemp = match = 0; + } + + /* If we have found a match, and it is an executable file or a + directory name, return it. */ + if (match && executable_or_directory (val)) + { + free (val); + val = ""; /* So it won't be NULL. */ + return (temp); + } + else + { + if (freetemp) + free (temp); + free (val); + goto inner; + } + } +} + +/* Completion inside an unterminated command substitution. */ +static char * +command_subst_completion_function (text, state) + const char *text; + int state; +{ + static char **matches = (char **)NULL; + static const char *orig_start; + static char *filename_text = (char *)NULL; + static int cmd_index, start_len; + char *value; + + if (state == 0) + { + if (filename_text) + free (filename_text); + orig_start = text; + if (*text == '`') + text++; + else if (*text == '$' && text[1] == '(') /* ) */ + text += 2; + /* If the text was quoted, suppress any quote character that the + readline completion code would insert. */ + rl_completion_suppress_quote = 1; + start_len = text - orig_start; + filename_text = savestring (text); + if (matches) + free (matches); + + /* + * At this point we can entertain the idea of re-parsing + * `filename_text' into a (possibly incomplete) command name and + * arguments, and doing completion based on that. This is + * currently very rudimentary, but it is a small improvement. + */ + for (value = filename_text + strlen (filename_text) - 1; value > filename_text; value--) + if (whitespace (*value) || member (*value, COMMAND_SEPARATORS)) + break; + if (value <= filename_text) + matches = rl_completion_matches (filename_text, command_word_completion_function); + else + { + value++; + start_len += value - filename_text; + if (whitespace (value[-1])) + matches = rl_completion_matches (value, rl_filename_completion_function); + else + matches = rl_completion_matches (value, command_word_completion_function); + } + + /* If there is more than one match, rl_completion_matches has already + put the lcd in matches[0]. Skip over it. */ + cmd_index = matches && matches[0] && matches[1]; + + /* If there's a single match and it's a directory, set the append char + to the expected `/'. Otherwise, don't append anything. */ + if (matches && matches[0] && matches[1] == 0 && test_for_directory (matches[0])) + rl_completion_append_character = '/'; + else + rl_completion_suppress_append = 1; + } + + if (!matches || !matches[cmd_index]) + { + rl_filename_quoting_desired = 0; /* disable quoting */ + return ((char *)NULL); + } + else + { + value = (char *)xmalloc (1 + start_len + strlen (matches[cmd_index])); + + if (start_len == 1) + value[0] = *orig_start; + else + strncpy (value, orig_start, start_len); + + strcpy (value + start_len, matches[cmd_index]); + + cmd_index++; + return (value); + } +} + +/* Okay, now we write the entry_function for variable completion. */ +static char * +variable_completion_function (text, state) + const char *text; + int state; +{ + static char **varlist = (char **)NULL; + static int varlist_index; + static char *varname = (char *)NULL; + static int namelen; + static int first_char, first_char_loc; + + if (!state) + { + if (varname) + free (varname); + + first_char_loc = 0; + first_char = text[0]; + + if (first_char == '$') + first_char_loc++; + + if (text[first_char_loc] == '{') + first_char_loc++; + + varname = savestring (text + first_char_loc); + + namelen = strlen (varname); + if (varlist) + strvec_dispose (varlist); + + varlist = all_variables_matching_prefix (varname); + varlist_index = 0; + } + + if (!varlist || !varlist[varlist_index]) + { + return ((char *)NULL); + } + else + { + char *value; + + value = (char *)xmalloc (4 + strlen (varlist[varlist_index])); + + if (first_char_loc) + { + value[0] = first_char; + if (first_char_loc == 2) + value[1] = '{'; + } + + strcpy (value + first_char_loc, varlist[varlist_index]); + if (first_char_loc == 2) + strcat (value, "}"); + + varlist_index++; + return (value); + } +} + +/* How about a completion function for hostnames? */ +static char * +hostname_completion_function (text, state) + const char *text; + int state; +{ + static char **list = (char **)NULL; + static int list_index = 0; + static int first_char, first_char_loc; + + /* If we don't have any state, make some. */ + if (state == 0) + { + FREE (list); + + list = (char **)NULL; + + first_char_loc = 0; + first_char = *text; + + if (first_char == '@') + first_char_loc++; + + list = hostnames_matching ((char *)text+first_char_loc); + list_index = 0; + } + + if (list && list[list_index]) + { + char *t; + + t = (char *)xmalloc (2 + strlen (list[list_index])); + *t = first_char; + strcpy (t + first_char_loc, list[list_index]); + list_index++; + return (t); + } + + return ((char *)NULL); +} + +/* + * A completion function for service names from /etc/services (or wherever). + */ +char * +bash_servicename_completion_function (text, state) + const char *text; + int state; +{ +#if defined (__WIN32__) || defined (__OPENNT) || !defined (HAVE_GETSERVENT) + return ((char *)NULL); +#else + static char *sname = (char *)NULL; + static struct servent *srvent; + static int snamelen, firstc; + char *value; + char **alist, *aentry; + int afound; + + if (state == 0) + { + FREE (sname); + firstc = *text; + + sname = savestring (text); + snamelen = strlen (sname); + setservent (0); + } + + while (srvent = getservent ()) + { + afound = 0; + if (snamelen == 0 || (STREQN (sname, srvent->s_name, snamelen))) + break; + /* Not primary, check aliases */ + for (alist = srvent->s_aliases; aentry = *alist; alist++) + { + if (STREQN (sname, aentry, snamelen)) + { + afound = 1; + break; + } + } + + if (afound) + break; + } + + if (srvent == 0) + { + endservent (); + return ((char *)NULL); + } + + value = afound ? savestring (aentry) : savestring (srvent->s_name); + return value; +#endif +} + +/* + * A completion function for group names from /etc/group (or wherever). + */ +char * +bash_groupname_completion_function (text, state) + const char *text; + int state; +{ +#if defined (__WIN32__) || defined (__OPENNT) || !defined (HAVE_GRP_H) + return ((char *)NULL); +#else + static char *gname = (char *)NULL; + static struct group *grent; + static int gnamelen; + char *value; + + if (state == 0) + { + FREE (gname); + gname = savestring (text); + gnamelen = strlen (gname); + + setgrent (); + } + + while (grent = getgrent ()) + { + if (gnamelen == 0 || (STREQN (gname, grent->gr_name, gnamelen))) + break; + } + + if (grent == 0) + { + endgrent (); + return ((char *)NULL); + } + + value = savestring (grent->gr_name); + return (value); +#endif +} + +/* Functions to perform history and alias expansions on the current line. */ + +#if defined (BANG_HISTORY) +/* Perform history expansion on the current line. If no history expansion + is done, pre_process_line() returns what it was passed, so we need to + allocate a new line here. */ +static char * +history_expand_line_internal (line) + char *line; +{ + char *new_line; + int old_verify; + + old_verify = hist_verify; + hist_verify = 0; + new_line = pre_process_line (line, 0, 0); + hist_verify = old_verify; + + return (new_line == line) ? savestring (line) : new_line; +} +#endif + +/* There was an error in expansion. Let the preprocessor print + the error here. */ +static void +cleanup_expansion_error () +{ + char *to_free; +#if defined (BANG_HISTORY) + int old_verify; + + old_verify = hist_verify; + hist_verify = 0; +#endif + + fprintf (rl_outstream, "\r\n"); + to_free = pre_process_line (rl_line_buffer, 1, 0); +#if defined (BANG_HISTORY) + hist_verify = old_verify; +#endif + if (to_free != rl_line_buffer) + FREE (to_free); + putc ('\r', rl_outstream); + rl_forced_update_display (); +} + +/* If NEW_LINE differs from what is in the readline line buffer, add an + undo record to get from the readline line buffer contents to the new + line and make NEW_LINE the current readline line. */ +static void +maybe_make_readline_line (new_line) + char *new_line; +{ + if (strcmp (new_line, rl_line_buffer) != 0) + { + rl_point = rl_end; + + rl_add_undo (UNDO_BEGIN, 0, 0, 0); + rl_delete_text (0, rl_point); + rl_point = rl_end = rl_mark = 0; + rl_insert_text (new_line); + rl_add_undo (UNDO_END, 0, 0, 0); + } +} + +/* Make NEW_LINE be the current readline line. This frees NEW_LINE. */ +static void +set_up_new_line (new_line) + char *new_line; +{ + int old_point, at_end; + + old_point = rl_point; + at_end = rl_point == rl_end; + + /* If the line was history and alias expanded, then make that + be one thing to undo. */ + maybe_make_readline_line (new_line); + free (new_line); + + /* Place rl_point where we think it should go. */ + if (at_end) + rl_point = rl_end; + else if (old_point < rl_end) + { + rl_point = old_point; + if (!whitespace (rl_line_buffer[rl_point])) + rl_forward_word (1, 0); + } +} + +#if defined (ALIAS) +/* Expand aliases in the current readline line. */ +static int +alias_expand_line (count, ignore) + int count, ignore; +{ + char *new_line; + + new_line = alias_expand (rl_line_buffer); + + if (new_line) + { + set_up_new_line (new_line); + return (0); + } + else + { + cleanup_expansion_error (); + return (1); + } +} +#endif + +#if defined (BANG_HISTORY) +/* History expand the line. */ +static int +history_expand_line (count, ignore) + int count, ignore; +{ + char *new_line; + + new_line = history_expand_line_internal (rl_line_buffer); + + if (new_line) + { + set_up_new_line (new_line); + return (0); + } + else + { + cleanup_expansion_error (); + return (1); + } +} + +/* Expand history substitutions in the current line and then insert a + space (hopefully close to where we were before). */ +static int +tcsh_magic_space (count, ignore) + int count, ignore; +{ + int dist_from_end, old_point; + + old_point = rl_point; + dist_from_end = rl_end - rl_point; + if (history_expand_line (count, ignore) == 0) + { + /* Try a simple heuristic from Stephen Gildea . + This works if all expansions were before rl_point or if no expansions + were performed. */ + rl_point = (old_point == 0) ? old_point : rl_end - dist_from_end; + rl_insert (1, ' '); + return (0); + } + else + return (1); +} +#endif /* BANG_HISTORY */ + +/* History and alias expand the line. */ +static int +history_and_alias_expand_line (count, ignore) + int count, ignore; +{ + char *new_line; + + new_line = 0; +#if defined (BANG_HISTORY) + new_line = history_expand_line_internal (rl_line_buffer); +#endif + +#if defined (ALIAS) + if (new_line) + { + char *alias_line; + + alias_line = alias_expand (new_line); + free (new_line); + new_line = alias_line; + } +#endif /* ALIAS */ + + if (new_line) + { + set_up_new_line (new_line); + return (0); + } + else + { + cleanup_expansion_error (); + return (1); + } +} + +/* History and alias expand the line, then perform the shell word + expansions by calling expand_string. This can't use set_up_new_line() + because we want the variable expansions as a separate undo'able + set of operations. */ +static int +shell_expand_line (count, ignore) + int count, ignore; +{ + char *new_line; + WORD_LIST *expanded_string; + + new_line = 0; +#if defined (BANG_HISTORY) + new_line = history_expand_line_internal (rl_line_buffer); +#endif + +#if defined (ALIAS) + if (new_line) + { + char *alias_line; + + alias_line = alias_expand (new_line); + free (new_line); + new_line = alias_line; + } +#endif /* ALIAS */ + + if (new_line) + { + int old_point = rl_point; + int at_end = rl_point == rl_end; + + /* If the line was history and alias expanded, then make that + be one thing to undo. */ + maybe_make_readline_line (new_line); + free (new_line); + + /* If there is variable expansion to perform, do that as a separate + operation to be undone. */ + new_line = savestring (rl_line_buffer); + expanded_string = expand_string (new_line, 0); + FREE (new_line); + if (expanded_string == 0) + { + new_line = (char *)xmalloc (1); + new_line[0] = '\0'; + } + else + { + new_line = string_list (expanded_string); + dispose_words (expanded_string); + } + + maybe_make_readline_line (new_line); + free (new_line); + + /* Place rl_point where we think it should go. */ + if (at_end) + rl_point = rl_end; + else if (old_point < rl_end) + { + rl_point = old_point; + if (!whitespace (rl_line_buffer[rl_point])) + rl_forward_word (1, 0); + } + return 0; + } + else + { + cleanup_expansion_error (); + return 1; + } +} + +/* If FIGNORE is set, then don't match files with the given suffixes when + completing filenames. If only one of the possibilities has an acceptable + suffix, delete the others, else just return and let the completer + signal an error. It is called by the completer when real + completions are done on filenames by the completer's internal + function, not for completion lists (M-?) and not on "other" + completion types, such as hostnames or commands. */ + +static struct ignorevar fignore = +{ + "FIGNORE", + (struct ign *)0, + 0, + (char *)0, + (sh_iv_item_func_t *) 0, +}; + +static void +_ignore_completion_names (names, name_func) + char **names; + sh_ignore_func_t *name_func; +{ + char **newnames; + int idx, nidx; + char **oldnames; + int oidx; + + /* If there is only one completion, see if it is acceptable. If it is + not, free it up. In any case, short-circuit and return. This is a + special case because names[0] is not the prefix of the list of names + if there is only one completion; it is the completion itself. */ + if (names[1] == (char *)0) + { + if (force_fignore) + if ((*name_func) (names[0]) == 0) + { + free (names[0]); + names[0] = (char *)NULL; + } + + return; + } + + /* Allocate space for array to hold list of pointers to matching + filenames. The pointers are copied back to NAMES when done. */ + for (nidx = 1; names[nidx]; nidx++) + ; + newnames = strvec_create (nidx + 1); + + if (force_fignore == 0) + { + oldnames = strvec_create (nidx - 1); + oidx = 0; + } + + newnames[0] = names[0]; + for (idx = nidx = 1; names[idx]; idx++) + { + if ((*name_func) (names[idx])) + newnames[nidx++] = names[idx]; + else if (force_fignore == 0) + oldnames[oidx++] = names[idx]; + else + free (names[idx]); + } + + newnames[nidx] = (char *)NULL; + + /* If none are acceptable then let the completer handle it. */ + if (nidx == 1) + { + if (force_fignore) + { + free (names[0]); + names[0] = (char *)NULL; + } + else + free (oldnames); + + free (newnames); + return; + } + + if (force_fignore == 0) + { + while (oidx) + free (oldnames[--oidx]); + free (oldnames); + } + + /* If only one is acceptable, copy it to names[0] and return. */ + if (nidx == 2) + { + free (names[0]); + names[0] = newnames[1]; + names[1] = (char *)NULL; + free (newnames); + return; + } + + /* Copy the acceptable names back to NAMES, set the new array end, + and return. */ + for (nidx = 1; newnames[nidx]; nidx++) + names[nidx] = newnames[nidx]; + names[nidx] = (char *)NULL; + free (newnames); +} + +static int +name_is_acceptable (name) + const char *name; +{ + struct ign *p; + int nlen; + + for (nlen = strlen (name), p = fignore.ignores; p->val; p++) + { + if (nlen > p->len && p->len > 0 && STREQ (p->val, &name[nlen - p->len])) + return (0); + } + + return (1); +} + +#if 0 +static int +ignore_dot_names (name) + char *name; +{ + return (name[0] != '.'); +} +#endif + +static int +filename_completion_ignore (names) + char **names; +{ +#if 0 + if (glob_dot_filenames == 0) + _ignore_completion_names (names, ignore_dot_names); +#endif + + setup_ignore_patterns (&fignore); + + if (fignore.num_ignores == 0) + return 0; + + _ignore_completion_names (names, name_is_acceptable); + + return 0; +} + +/* Return 1 if NAME is a directory. */ +static int +test_for_directory (name) + const char *name; +{ + struct stat finfo; + char *fn; + + fn = bash_tilde_expand (name, 0); + if (stat (fn, &finfo) != 0) + { + free (fn); + return 0; + } + free (fn); + return (S_ISDIR (finfo.st_mode)); +} + +/* Remove files from NAMES, leaving directories. */ +static int +bash_ignore_filenames (names) + char **names; +{ + _ignore_completion_names (names, test_for_directory); + return 0; +} + +static int +return_zero (name) + const char *name; +{ + return 0; +} + +static int +bash_ignore_everything (names) + char **names; +{ + _ignore_completion_names (names, return_zero); + return 0; +} + +/* Simulate the expansions that will be performed by + rl_filename_completion_function. This must be called with the address of + a pointer to malloc'd memory. */ +static void +bash_directory_expansion (dirname) + char **dirname; +{ + char *d, *nd; + + d = savestring (*dirname); + + if (rl_directory_rewrite_hook) + (*rl_directory_rewrite_hook) (&d); + + if (rl_directory_completion_hook && (*rl_directory_completion_hook) (&d)) + { + free (*dirname); + *dirname = d; + } + else if (rl_completion_found_quote) + { + nd = bash_dequote_filename (d, rl_completion_quote_character); + free (*dirname); + free (d); + *dirname = nd; + } +} + +/* Handle symbolic link references and other directory name + expansions while hacking completion. */ +static int +bash_directory_completion_hook (dirname) + char **dirname; +{ + char *local_dirname, *new_dirname, *t; + int return_value, should_expand_dirname; + WORD_LIST *wl; + struct stat sb; + + return_value = should_expand_dirname = 0; + local_dirname = *dirname; + +#if 0 + should_expand_dirname = xstrchr (local_dirname, '$') || xstrchr (local_dirname, '`'); +#else + if (xstrchr (local_dirname, '$')) + should_expand_dirname = 1; + else + { + t = xstrchr (local_dirname, '`'); + if (t && unclosed_pair (local_dirname, strlen (local_dirname), "`") == 0) + should_expand_dirname = 1; + } +#endif + +#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); /* does the right thing */ + if (wl) + { + *dirname = string_list (wl); + /* Tell the completer to replace the directory name only if we + actually expanded something. */ + return_value = STREQ (local_dirname, *dirname) == 0; + free (local_dirname); + free (new_dirname); + dispose_words (wl); + local_dirname = *dirname; + } + else + { + free (new_dirname); + free (local_dirname); + *dirname = (char *)xmalloc (1); + **dirname = '\0'; + return 1; + } + } + else + { + /* Dequote the filename even if we don't expand it. */ + new_dirname = bash_dequote_filename (local_dirname, rl_completion_quote_character); + free (local_dirname); + local_dirname = *dirname = new_dirname; + } + + if (!no_symbolic_links && (local_dirname[0] != '.' || local_dirname[1])) + { + char *temp1, *temp2; + int len1, len2; + + 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 1; + } + len1 = strlen (temp1); + if (temp1[len1 - 1] == '/') + { + len2 = strlen (temp2); + if (len2 > 2) /* don't append `/' to `/' or `//' */ + { + temp2 = (char *)xrealloc (temp2, len2 + 2); + temp2[len2] = '/'; + temp2[len2 + 1] = '\0'; + } + } + free (local_dirname); + *dirname = temp2; + free (temp1); + } + return (return_value); +} + +static char **history_completion_array = (char **)NULL; +static int harry_size; +static int harry_len; + +static void +build_history_completion_array () +{ + register int i, j; + HIST_ENTRY **hlist; + char **tokens; + + /* First, clear out the current dynamic history completion list. */ + if (harry_size) + { + strvec_dispose (history_completion_array); + history_completion_array = (char **)NULL; + harry_size = 0; + harry_len = 0; + } + + /* Next, grovel each line of history, making each shell-sized token + a separate entry in the history_completion_array. */ + hlist = history_list (); + + if (hlist) + { + for (i = 0; hlist[i]; i++) + { + /* Separate each token, and place into an array. */ + tokens = history_tokenize (hlist[i]->line); + + for (j = 0; tokens && tokens[j]; j++) + { + if (harry_len + 2 > harry_size) + history_completion_array = strvec_resize (history_completion_array, harry_size += 10); + + history_completion_array[harry_len++] = tokens[j]; + history_completion_array[harry_len] = (char *)NULL; + } + free (tokens); + } + + /* Sort the complete list of tokens. */ + qsort (history_completion_array, harry_len, sizeof (char *), (QSFUNC *)strvec_strcmp); + } +} + +static char * +history_completion_generator (hint_text, state) + const char *hint_text; + int state; +{ + static int local_index, len; + static const char *text; + + /* If this is the first call to the generator, then initialize the + list of strings to complete over. */ + if (state == 0) + { + local_index = 0; + build_history_completion_array (); + text = hint_text; + len = strlen (text); + } + + while (history_completion_array && history_completion_array[local_index]) + { + if (strncmp (text, history_completion_array[local_index++], len) == 0) + return (savestring (history_completion_array[local_index - 1])); + } + return ((char *)NULL); +} + +static int +dynamic_complete_history (count, key) + int count, key; +{ + int r; + + rl_compentry_func_t *orig_func; + rl_completion_func_t *orig_attempt_func; + + orig_func = rl_completion_entry_function; + orig_attempt_func = rl_attempted_completion_function; + rl_completion_entry_function = history_completion_generator; + rl_attempted_completion_function = (rl_completion_func_t *)NULL; + + /* XXX - use rl_completion_mode here? */ + if (rl_last_func == dynamic_complete_history) + r = rl_complete_internal ('?'); + else + r = rl_complete_internal (TAB); + + rl_completion_entry_function = orig_func; + rl_attempted_completion_function = orig_attempt_func; + return r; +} + +#if defined (SPECIFIC_COMPLETION_FUNCTIONS) +static int +bash_complete_username (ignore, ignore2) + int ignore, ignore2; +{ + return bash_complete_username_internal (rl_completion_mode (bash_complete_username)); +} + +static int +bash_possible_username_completions (ignore, ignore2) + int ignore, ignore2; +{ + return bash_complete_username_internal ('?'); +} + +static int +bash_complete_username_internal (what_to_do) + int what_to_do; +{ + return bash_specific_completion (what_to_do, rl_username_completion_function); +} + +static int +bash_complete_filename (ignore, ignore2) + int ignore, ignore2; +{ + return bash_complete_filename_internal (rl_completion_mode (bash_complete_filename)); +} + +static int +bash_possible_filename_completions (ignore, ignore2) + int ignore, ignore2; +{ + return bash_complete_filename_internal ('?'); +} + +static int +bash_complete_filename_internal (what_to_do) + int what_to_do; +{ + rl_compentry_func_t *orig_func; + rl_completion_func_t *orig_attempt_func; + rl_icppfunc_t *orig_dir_func; + /*const*/ char *orig_rl_completer_word_break_characters; + int r; + + orig_func = rl_completion_entry_function; + orig_attempt_func = rl_attempted_completion_function; + orig_dir_func = rl_directory_completion_hook; + orig_rl_completer_word_break_characters = rl_completer_word_break_characters; + rl_completion_entry_function = rl_filename_completion_function; + rl_attempted_completion_function = (rl_completion_func_t *)NULL; + rl_directory_completion_hook = (rl_icppfunc_t *)NULL; + rl_completer_word_break_characters = " \t\n\"\'"; + + r = rl_complete_internal (what_to_do); + + rl_completion_entry_function = orig_func; + rl_attempted_completion_function = orig_attempt_func; + rl_directory_completion_hook = orig_dir_func; + rl_completer_word_break_characters = orig_rl_completer_word_break_characters; + + return r; +} + +static int +bash_complete_hostname (ignore, ignore2) + int ignore, ignore2; +{ + return bash_complete_hostname_internal (rl_completion_mode (bash_complete_hostname)); +} + +static int +bash_possible_hostname_completions (ignore, ignore2) + int ignore, ignore2; +{ + return bash_complete_hostname_internal ('?'); +} + +static int +bash_complete_variable (ignore, ignore2) + int ignore, ignore2; +{ + return bash_complete_variable_internal (rl_completion_mode (bash_complete_variable)); +} + +static int +bash_possible_variable_completions (ignore, ignore2) + int ignore, ignore2; +{ + return bash_complete_variable_internal ('?'); +} + +static int +bash_complete_command (ignore, ignore2) + int ignore, ignore2; +{ + return bash_complete_command_internal (rl_completion_mode (bash_complete_command)); +} + +static int +bash_possible_command_completions (ignore, ignore2) + int ignore, ignore2; +{ + return bash_complete_command_internal ('?'); +} + +static int +bash_complete_hostname_internal (what_to_do) + int what_to_do; +{ + return bash_specific_completion (what_to_do, hostname_completion_function); +} + +static int +bash_complete_variable_internal (what_to_do) + int what_to_do; +{ + return bash_specific_completion (what_to_do, variable_completion_function); +} + +static int +bash_complete_command_internal (what_to_do) + int what_to_do; +{ + return bash_specific_completion (what_to_do, command_word_completion_function); +} + +static char *globtext; +static char *globorig; + +static char * +glob_complete_word (text, state) + const char *text; + int state; +{ + static char **matches = (char **)NULL; + static int ind; + int glen; + char *ret, *ttext; + + if (state == 0) + { + rl_filename_completion_desired = 1; + FREE (matches); + if (globorig != globtext) + FREE (globorig); + FREE (globtext); + + ttext = bash_tilde_expand (text, 0); + + if (rl_explicit_arg) + { + globorig = savestring (ttext); + glen = strlen (ttext); + globtext = (char *)xmalloc (glen + 2); + strcpy (globtext, ttext); + globtext[glen] = '*'; + globtext[glen+1] = '\0'; + } + else + globtext = globorig = savestring (ttext); + + if (ttext != text) + free (ttext); + + matches = shell_glob_filename (globtext); + if (GLOB_FAILED (matches)) + matches = (char **)NULL; + ind = 0; + } + + ret = matches ? matches[ind] : (char *)NULL; + ind++; + return ret; +} + +static int +bash_glob_completion_internal (what_to_do) + int what_to_do; +{ + return bash_specific_completion (what_to_do, glob_complete_word); +} + +/* A special quoting function so we don't end up quoting globbing characters + in the word if there are no matches or multiple matches. */ +static char * +bash_glob_quote_filename (s, rtype, qcp) + char *s; + int rtype; + char *qcp; +{ + if (globorig && qcp && *qcp == '\0' && STREQ (s, globorig)) + return (savestring (s)); + else + return (bash_quote_filename (s, rtype, qcp)); +} + +static int +bash_glob_complete_word (count, key) + int count, key; +{ + int r; + rl_quote_func_t *orig_quoting_function; + + if (rl_editing_mode == EMACS_EDITING_MODE) + rl_explicit_arg = 1; /* force `*' append */ + orig_quoting_function = rl_filename_quoting_function; + rl_filename_quoting_function = bash_glob_quote_filename; + + r = bash_glob_completion_internal (rl_completion_mode (bash_glob_complete_word)); + + rl_filename_quoting_function = orig_quoting_function; + return r; +} + +static int +bash_glob_expand_word (count, key) + int count, key; +{ + return bash_glob_completion_internal ('*'); +} + +static int +bash_glob_list_expansions (count, key) + int count, key; +{ + return bash_glob_completion_internal ('?'); +} + +static int +bash_specific_completion (what_to_do, generator) + int what_to_do; + rl_compentry_func_t *generator; +{ + rl_compentry_func_t *orig_func; + rl_completion_func_t *orig_attempt_func; + int r; + + orig_func = rl_completion_entry_function; + orig_attempt_func = rl_attempted_completion_function; + rl_completion_entry_function = generator; + rl_attempted_completion_function = NULL; + + r = rl_complete_internal (what_to_do); + + rl_completion_entry_function = orig_func; + rl_attempted_completion_function = orig_attempt_func; + + return r; +} + +#endif /* SPECIFIC_COMPLETION_FUNCTIONS */ + +#if defined (VI_MODE) +/* Completion, from vi mode's point of view. This is a modified version of + rl_vi_complete which uses the bash globbing code to implement what POSIX + specifies, which is to append a `*' and attempt filename generation (which + has the side effect of expanding any globbing characters in the word). */ +static int +bash_vi_complete (count, key) + int count, key; +{ +#if defined (SPECIFIC_COMPLETION_FUNCTIONS) + int p, r; + char *t; + + if ((rl_point < rl_end) && (!whitespace (rl_line_buffer[rl_point]))) + { + if (!whitespace (rl_line_buffer[rl_point + 1])) + rl_vi_end_word (1, 'E'); + rl_point++; + } + + /* Find boundaries of current word, according to vi definition of a + `bigword'. */ + t = 0; + if (rl_point > 0) + { + p = rl_point; + rl_vi_bWord (1, 'B'); + r = rl_point; + rl_point = p; + p = r; + + t = substring (rl_line_buffer, p, rl_point); + } + + if (t && glob_pattern_p (t) == 0) + rl_explicit_arg = 1; /* XXX - force glob_complete_word to append `*' */ + FREE (t); + + if (key == '*') /* Expansion and replacement. */ + r = bash_glob_expand_word (count, key); + else if (key == '=') /* List possible completions. */ + r = bash_glob_list_expansions (count, key); + else if (key == '\\') /* Standard completion */ + r = bash_glob_complete_word (count, key); + else + r = rl_complete (0, key); + + if (key == '*' || key == '\\') + rl_vi_start_inserting (key, 1, 1); + + return (r); +#else + return rl_vi_complete (count, key); +#endif /* !SPECIFIC_COMPLETION_FUNCTIONS */ +} +#endif /* VI_MODE */ + +/* Filename quoting for completion. */ +/* A function to strip unquoted quote characters (single quotes, double + quotes, and backslashes). It allows single quotes to appear + within double quotes, and vice versa. It should be smarter. */ +static char * +bash_dequote_filename (text, quote_char) + char *text; + int quote_char; +{ + char *ret, *p, *r; + int l, quoted; + + l = strlen (text); + ret = (char *)xmalloc (l + 1); + for (quoted = quote_char, p = text, r = ret; p && *p; p++) + { + /* Allow backslash-quoted characters to pass through unscathed. */ + if (*p == '\\') + { + *r++ = *++p; + if (*p == '\0') + break; + continue; + } + /* Close quote. */ + if (quoted && *p == quoted) + { + quoted = 0; + continue; + } + /* Open quote. */ + if (quoted == 0 && (*p == '\'' || *p == '"')) + { + quoted = *p; + continue; + } + *r++ = *p; + } + *r = '\0'; + return ret; +} + +/* Quote characters that the readline completion code would treat as + word break characters with backslashes. Pass backslash-quoted + characters through without examination. */ +static char * +quote_word_break_chars (text) + char *text; +{ + char *ret, *r, *s; + int l; + + l = strlen (text); + ret = (char *)xmalloc ((2 * l) + 1); + for (s = text, r = ret; *s; s++) + { + /* Pass backslash-quoted characters through, including the backslash. */ + if (*s == '\\') + { + *r++ = '\\'; + *r++ = *++s; + if (*s == '\0') + break; + continue; + } + /* OK, we have an unquoted character. Check its presence in + rl_completer_word_break_characters. */ + if (xstrchr (rl_completer_word_break_characters, *s)) + *r++ = '\\'; + *r++ = *s; + } + *r = '\0'; + return ret; +} + +/* Quote a filename using double quotes, single quotes, or backslashes + depending on the value of completion_quoting_style. If we're + completing using backslashes, we need to quote some additional + characters (those that readline treats as word breaks), so we call + quote_word_break_chars on the result. This returns newly-allocated + memory. */ +static char * +bash_quote_filename (s, rtype, qcp) + char *s; + int rtype; + char *qcp; +{ + char *rtext, *mtext, *ret; + int rlen, cs; + + rtext = (char *)NULL; + + /* If RTYPE == MULT_MATCH, it means that there is + more than one match. In this case, we do not add + the closing quote or attempt to perform tilde + expansion. If RTYPE == SINGLE_MATCH, we try + to perform tilde expansion, because single and double + quotes inhibit tilde expansion by the shell. */ + + cs = completion_quoting_style; + /* Might need to modify the default completion style based on *qcp, + since it's set to any user-provided opening quote. We also change + to single-quoting if there is no user-provided opening quote and + the word being completed contains newlines, since those are not + quoted correctly using backslashes (a backslash-newline pair is + special to the shell parser). */ + if (*qcp == '\0' && cs == COMPLETE_BSQUOTE && xstrchr (s, '\n')) + cs = COMPLETE_SQUOTE; + else if (*qcp == '"') + cs = COMPLETE_DQUOTE; + else if (*qcp == '\'') + cs = COMPLETE_SQUOTE; +#if defined (BANG_HISTORY) + else if (*qcp == '\0' && history_expansion && cs == COMPLETE_DQUOTE && + history_expansion_inhibited == 0 && xstrchr (s, '!')) + cs = COMPLETE_BSQUOTE; + + if (*qcp == '"' && history_expansion && cs == COMPLETE_DQUOTE && + history_expansion_inhibited == 0 && xstrchr (s, '!')) + { + cs = COMPLETE_BSQUOTE; + *qcp = '\0'; + } +#endif + + /* Don't tilde-expand backslash-quoted filenames, since only single and + double quotes inhibit tilde expansion. */ + mtext = s; + if (mtext[0] == '~' && rtype == SINGLE_MATCH && cs != COMPLETE_BSQUOTE) + mtext = bash_tilde_expand (s, 0); + + switch (cs) + { + case COMPLETE_DQUOTE: + rtext = sh_double_quote (mtext); + break; + case COMPLETE_SQUOTE: + rtext = sh_single_quote (mtext); + break; + case COMPLETE_BSQUOTE: + rtext = sh_backslash_quote (mtext); + break; + } + + if (mtext != s) + free (mtext); + + /* We may need to quote additional characters: those that readline treats + as word breaks that are not quoted by backslash_quote. */ + if (rtext && cs == COMPLETE_BSQUOTE) + { + mtext = quote_word_break_chars (rtext); + free (rtext); + rtext = mtext; + } + + /* Leave the opening quote intact. The readline completion code takes + care of avoiding doubled opening quotes. */ + rlen = strlen (rtext); + ret = (char *)xmalloc (rlen + 1); + strcpy (ret, rtext); + + /* If there are multiple matches, cut off the closing quote. */ + if (rtype == MULT_MATCH && cs != COMPLETE_BSQUOTE) + ret[rlen - 1] = '\0'; + free (rtext); + return ret; +} + +/* Support for binding readline key sequences to Unix commands. */ +static Keymap cmd_xmap; + +static int +bash_execute_unix_command (count, key) + int count; /* ignored */ + int key; +{ + Keymap ckmap; /* current keymap */ + Keymap xkmap; /* unix command executing keymap */ + register int i; + char *cmd; + sh_parser_state_t ps; + + /* 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) + { + rl_ding (); + return 1; + } + + rl_crlf (); /* move to a new line */ + + save_parser_state (&ps); + + cmd = savestring (cmd); + parse_and_execute (cmd, "bash_execute_unix_command", SEVAL_NOHIST); + + restore_parser_state (&ps); + + /* and restore the readline buffer and display after command execution. */ + rl_forced_update_display (); + return 0; +} + +static void +init_unix_command_map () +{ + cmd_xmap = rl_make_bare_keymap (); +} + +static int +isolate_sequence (string, ind, need_dquote, startp) + char *string; + int ind, need_dquote, *startp; +{ + register int i; + int c, passc, delim; + + for (i = ind; string[i] && whitespace (string[i]); i++) + ; + /* NEED_DQUOTE means that the first non-white character *must* be `"'. */ + if (need_dquote && string[i] != '"') + { + builtin_error (_("%s: first non-whitespace character is not `\"'"), string); + return -1; + } + + /* We can have delimited strings even if NEED_DQUOTE == 0, like the command + string to bind the key sequence to. */ + delim = (string[i] == '"' || string[i] == '\'') ? string[i] : 0; + + if (startp) + *startp = delim ? ++i : i; + + for (passc = 0; c = string[i]; i++) + { + if (passc) + { + passc = 0; + continue; + } + if (c == '\\') + { + passc++; + continue; + } + if (c == delim) + break; + } + + if (delim && string[i] != delim) + { + builtin_error (_("no closing `%c' in %s"), delim, string); + return -1; + } + + return i; +} + +int +bind_keyseq_to_unix_command (line) + char *line; +{ + Keymap kmap; + char *kseq, *value; + int i, kstart; + + if (cmd_xmap == 0) + init_unix_command_map (); + + kmap = rl_get_keymap (); + + /* We duplicate some of the work done by rl_parse_and_bind here, but + this code only has to handle `"keyseq": ["]command["]' and can + generate an error for anything else. */ + i = isolate_sequence (line, 0, 1, &kstart); + if (i < 0) + return -1; + + /* Create the key sequence string to pass to rl_generic_bind */ + kseq = substring (line, kstart, i); + + for ( ; line[i] && line[i] != ':'; i++) + ; + if (line[i] != ':') + { + builtin_error (_("%s: missing colon separator"), line); + return -1; + } + + i = isolate_sequence (line, i + 1, 0, &kstart); + if (i < 0) + return -1; + + /* Create the value string containing the command to execute. */ + value = substring (line, kstart, i); + + /* Save the command to execute and the key sequence in the CMD_XMAP */ + rl_generic_bind (ISMACR, kseq, value, cmd_xmap); + + /* and bind the key sequence in the current keymap to a function that + understands how to execute from CMD_XMAP */ + rl_bind_keyseq_in_map (kseq, bash_execute_unix_command, kmap); + + return 0; +} + +/* Used by the programmable completion code. Complete TEXT as a filename, + but return only directories as matches. Dequotes the filename before + attempting to find matches. */ +char ** +bash_directory_completion_matches (text) + const char *text; +{ + char **m1; + char *dfn; + int qc; + + qc = rl_dispatching ? rl_completion_quote_character : 0; + dfn = bash_dequote_filename ((char *)text, qc); + m1 = rl_completion_matches (dfn, rl_filename_completion_function); + free (dfn); + + if (m1 == 0 || m1[0] == 0) + return m1; + /* We don't bother recomputing the lcd of the matches, because it will just + get thrown away by the programmable completion code and recomputed + later. */ + (void)bash_ignore_filenames (m1); + return m1; +} + +char * +bash_dequote_text (text) + const char *text; +{ + char *dtxt; + int qc; + + qc = (text[0] == '"' || text[0] == '\'') ? text[0] : 0; + dtxt = bash_dequote_filename ((char *)text, qc); + return (dtxt); +} +#endif /* READLINE */ diff --git a/bash-20060316/bashline.h b/bash-20060316/bashline.h new file mode 100644 index 000000000..eac5d3533 --- /dev/null +++ b/bash-20060316/bashline.h @@ -0,0 +1,49 @@ +/* bashline.h -- interface to the bash readline functions in bashline.c. */ + +/* Copyright (C) 1993 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#if !defined (_BASHLINE_H_) +#define _BASHLINE_H_ + +#include "stdc.h" + +extern int bash_readline_initialized; + +extern void posix_readline_initialize __P((int)); +extern int enable_hostname_completion __P((int)); +extern void initialize_readline __P((void)); +extern void bashline_reinitialize __P((void)); +extern int bash_re_edit __P((char *)); + +extern int bind_keyseq_to_unix_command __P((char *)); + +extern char **bash_default_completion __P((const char *, int, int, int, int)); + +/* Used by programmable completion code. */ +extern char *command_word_completion_function __P((const char *, int)); +extern char *bash_groupname_completion_function __P((const char *, int)); +extern char *bash_servicename_completion_function __P((const char *, int)); + +extern char **get_hostname_list __P((void)); +extern void clear_hostname_list __P((void)); + +extern char **bash_directory_completion_matches __P((const char *)); +extern char *bash_dequote_text __P((const char *)); + +#endif /* _BASHLINE_H_ */ diff --git a/bash-20060316/bashtypes.h b/bash-20060316/bashtypes.h new file mode 100644 index 000000000..7409247c0 --- /dev/null +++ b/bash-20060316/bashtypes.h @@ -0,0 +1,38 @@ +/* bashtypes.h -- Bash system types. */ + +/* Copyright (C) 1993 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#if !defined (_BASHTYPES_H_) +# define _BASHTYPES_H_ + +#if defined (CRAY) +# define word __word +#endif + +#include + +#if defined (CRAY) +# undef word +#endif + +#if defined (HAVE_INTTYPES_H) +# include +#endif + +#endif /* _BASHTYPES_H_ */ diff --git a/bash-20060316/bracecomp.c b/bash-20060316/bracecomp.c new file mode 100644 index 000000000..34fc91e8d --- /dev/null +++ b/bash-20060316/bracecomp.c @@ -0,0 +1,200 @@ +/* bracecomp.c -- Complete a filename with the possible completions enclosed + in csh-style braces such that the list of completions is available to the + shell. */ + +/* Original version by tromey@cns.caltech.edu, Fri Feb 7 1992. */ + +/* Copyright (C) 1993 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#include "config.h" +#if defined (BRACE_EXPANSION) && defined (READLINE) + +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include "bashansi.h" + +#include "shell.h" +#include + +/* Find greatest common prefix of two strings. */ +static int +string_gcd (s1, s2) + char *s1, *s2; +{ + register int i; + + if (s1 == NULL || s2 == NULL) + return (0); + + for (i = 0; *s1 && *s2; ++s1, ++s2, ++i) + { + if (*s1 != *s2) + break; + } + + return (i); +} + +static char * +really_munge_braces (array, real_start, real_end, gcd_zero) + char **array; + int real_start, real_end, gcd_zero; +{ + int start, end, gcd; + char *result, *subterm, *x; + int result_size, flag, tlen; + + flag = 0; + + if (real_start == real_end) + { + x = array[real_start] ? sh_backslash_quote (array[real_start] + gcd_zero) + : sh_backslash_quote (array[0]); + return x; + } + + result = (char *)xmalloc (result_size = 16); + *result = '\0'; + + for (start = real_start; start < real_end; start = end + 1) + { + gcd = strlen (array[start]); + for (end = start + 1; end < real_end; end++) + { + int temp; + + temp = string_gcd (array[start], array[end]); + + if (temp <= gcd_zero) + break; + + gcd = temp; + } + end--; + + if (gcd_zero == 0 && start == real_start && end != (real_end - 1)) + { + /* In this case, add in a leading '{', because we are at + top level, and there isn't a consistent prefix. */ + result_size += 1; + result = (char *)xrealloc (result, result_size); + result[0] = '{'; result[1] = '\0'; + flag++; + } + + /* Make sure we backslash quote every substring we insert into the + resultant brace expression. This is so the default filename + quoting function won't inappropriately quote the braces. */ + if (start == end) + { + x = savestring (array[start] + gcd_zero); + subterm = sh_backslash_quote (x); + free (x); + } + else + { + /* If there is more than one element in the subarray, + insert the (quoted) prefix and an opening brace. */ + tlen = gcd - gcd_zero; + x = (char *)xmalloc (tlen + 1); + strncpy (x, array[start] + gcd_zero, tlen); + x[tlen] = '\0'; + subterm = sh_backslash_quote (x); + free (x); + result_size += strlen (subterm) + 1; + result = (char *)xrealloc (result, result_size); + strcat (result, subterm); + free (subterm); + strcat (result, "{"); + subterm = really_munge_braces (array, start, end + 1, gcd); + subterm[strlen (subterm) - 1] = '}'; + } + + result_size += strlen (subterm) + 1; + result = (char *)xrealloc (result, result_size); + strcat (result, subterm); + strcat (result, ","); + free (subterm); + } + + if (gcd_zero == 0) + result[strlen (result) - 1] = flag ? '}' : '\0'; + return (result); +} + +static int +hack_braces_completion (names) + char **names; +{ + register int i; + char *temp; + + temp = really_munge_braces (names, 1, strvec_len (names), 0); + + for (i = 0; names[i]; ++i) + { + free (names[i]); + names[i] = NULL; + } + names[0] = temp; + return 0; +} + +/* We handle quoting ourselves within hack_braces_completion, so we turn off + rl_filename_quoting_desired and rl_filename_quoting_function. */ +int +bash_brace_completion (count, ignore) + int count, ignore; +{ + rl_compignore_func_t *orig_ignore_func; + rl_compentry_func_t *orig_entry_func; + rl_quote_func_t *orig_quoting_func; + rl_completion_func_t *orig_attempt_func; + int orig_quoting_desired, r; + + orig_ignore_func = rl_ignore_some_completions_function; + orig_attempt_func = rl_attempted_completion_function; + orig_entry_func = rl_completion_entry_function; + orig_quoting_func = rl_filename_quoting_function; + orig_quoting_desired = rl_filename_quoting_desired; + + rl_completion_entry_function = rl_filename_completion_function; + rl_attempted_completion_function = (rl_completion_func_t *)NULL; + rl_ignore_some_completions_function = hack_braces_completion; + rl_filename_quoting_function = (rl_quote_func_t *)NULL; + rl_filename_quoting_desired = 0; + + r = rl_complete_internal (TAB); + + rl_ignore_some_completions_function = orig_ignore_func; + rl_attempted_completion_function = orig_attempt_func; + rl_completion_entry_function = orig_entry_func; + rl_filename_quoting_function = orig_quoting_func; + rl_filename_quoting_desired = orig_quoting_desired; + + return r; +} +#endif /* BRACE_EXPANSION && READLINE */ diff --git a/bash-20060316/braces.c b/bash-20060316/braces.c new file mode 100644 index 000000000..3f5c5e85f --- /dev/null +++ b/bash-20060316/braces.c @@ -0,0 +1,618 @@ +/* braces.c -- code for doing word expansion in curly braces. */ + +/* Copyright (C) 1987-2003 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + Bash is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with Bash; see the file COPYING. If not, write to the Free + Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +/* Stuff in curly braces gets expanded before all other shell expansions. */ + +#include "config.h" + +#if defined (BRACE_EXPANSION) + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include "bashansi.h" + +#if defined (SHELL) +# include "shell.h" +#endif /* SHELL */ + +#include "general.h" +#include "shmbutil.h" +#include "chartypes.h" + +#define brace_whitespace(c) (!(c) || (c) == ' ' || (c) == '\t' || (c) == '\n') + +#define BRACE_SEQ_SPECIFIER ".." + +/* Basic idea: + + Segregate the text into 3 sections: preamble (stuff before an open brace), + postamble (stuff after the matching close brace) and amble (stuff after + preamble, and before postamble). Expand amble, and then tack on the + expansions to preamble. Expand postamble, and tack on the expansions to + the result so far. + */ + +/* The character which is used to separate arguments. */ +int brace_arg_separator = ','; + +#if defined (__P) +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((int, int, int, int)); +static char **array_concat __P((char **, char **)); +#else +static int brace_gobbler (); +static char **expand_amble (); +static char **expand_seqterm (); +static char **mkseq(); +static char **array_concat (); +#endif + +/* Return an array of strings; the brace expansion of TEXT. */ +char ** +brace_expand (text) + char *text; +{ + register int start; + size_t tlen; + char *preamble, *postamble, *amble; + size_t alen; + char **tack, **result; + int i, j, c, c1; + + DECLARE_MBSTATE; + + /* Find the text of the preamble. */ + tlen = strlen (text); + i = 0; +#if defined (CSH_BRACE_COMPAT) + c = brace_gobbler (text, tlen, &i, '{'); /* } */ +#else + /* Make sure that when we exit this loop, c == 0 or text[i] begins a + valid brace expansion sequence. */ + do + { + c = brace_gobbler (text, tlen, &i, '{'); /* } */ + c1 = c; + /* Verify that c begins a valid brace expansion word. If it doesn't, we + go on. Loop stops when there are no more open braces in the word. */ + if (c) + { + start = j = i + 1; /* { */ + c = brace_gobbler (text, tlen, &j, '}'); + if (c == 0) /* it's not */ + { + i++; + c = c1; + continue; + } + else /* it is */ + { + c = c1; + break; + } + } + else + break; + } + while (c); +#endif /* !CSH_BRACE_COMPAT */ + + preamble = (char *)xmalloc (i + 1); + strncpy (preamble, text, i); + preamble[i] = '\0'; + + result = (char **)xmalloc (2 * sizeof (char *)); + result[0] = preamble; + result[1] = (char *)NULL; + + /* Special case. If we never found an exciting character, then + the preamble is all of the text, so just return that. */ + if (c != '{') + return (result); + + /* Find the amble. This is the stuff inside this set of braces. */ + start = ++i; + c = brace_gobbler (text, tlen, &i, '}'); + + /* What if there isn't a matching close brace? */ + if (c == 0) + { +#if defined (NOTDEF) + /* Well, if we found an unquoted BRACE_ARG_SEPARATOR between START + and I, then this should be an error. Otherwise, it isn't. */ + j = start; + while (j < i) + { + if (text[j] == '\\') + { + j++; + ADVANCE_CHAR (text, tlen, j); + continue; + } + + if (text[j] == brace_arg_separator) + { /* { */ + strvec_dispose (result); + report_error ("no closing `%c' in %s", '}', text); + throw_to_top_level (); + } + ADVANCE_CHAR (text, tlen, j); + } +#endif + free (preamble); /* Same as result[0]; see initialization. */ + result[0] = savestring (text); + return (result); + } + +#if defined (SHELL) + amble = substring (text, start, i); + alen = i - start; +#else + amble = (char *)xmalloc (1 + (i - start)); + strncpy (amble, &text[start], (i - start)); + alen = i - start; + amble[alen] = '\0'; +#endif + +#if defined (SHELL) + INITIALIZE_MBSTATE; + + /* If the amble does not contain an unquoted BRACE_ARG_SEPARATOR, then + just return without doing any expansion. */ + j = 0; + while (amble[j]) + { + if (amble[j] == '\\') + { + j++; + ADVANCE_CHAR (amble, alen, j); + continue; + } + + if (amble[j] == brace_arg_separator) + break; + + ADVANCE_CHAR (amble, alen, j); + } + + if (amble[j] == 0) + { + tack = expand_seqterm (amble, alen); + if (tack) + goto add_tack; + else + { + free (amble); + free (preamble); + result[0] = savestring (text); + return (result); + } + } +#endif /* SHELL */ + + tack = expand_amble (amble, alen, 0); +add_tack: + result = array_concat (result, tack); + free (amble); + strvec_dispose (tack); + + postamble = text + i + 1; + + tack = brace_expand (postamble); + result = array_concat (result, tack); + strvec_dispose (tack); + + return (result); +} + +/* Expand the text found inside of braces. We simply try to split the + text at BRACE_ARG_SEPARATORs into separate strings. We then brace + expand each slot which needs it, until there are no more slots which + need it. */ +static char ** +expand_amble (text, tlen, flags) + char *text; + size_t tlen; + int flags; +{ + char **result, **partial; + char *tem; + int start, i, c; + + DECLARE_MBSTATE; + + result = (char **)NULL; + + start = i = 0; + c = 1; + while (c) + { + c = brace_gobbler (text, tlen, &i, brace_arg_separator); +#if defined (SHELL) + tem = substring (text, start, i); +#else + tem = (char *)xmalloc (1 + (i - start)); + strncpy (tem, &text[start], (i - start)); + tem[i- start] = '\0'; +#endif + + partial = brace_expand (tem); + + if (!result) + result = partial; + else + { + register int lr, lp, j; + + lr = strvec_len (result); + lp = strvec_len (partial); + + result = strvec_resize (result, lp + lr + 1); + + for (j = 0; j < lp; j++) + result[lr + j] = partial[j]; + + result[lr + j] = (char *)NULL; + free (partial); + } + free (tem); + ADVANCE_CHAR (text, tlen, i); + start = i; + } + return (result); +} + +#define ST_BAD 0 +#define ST_INT 1 +#define ST_CHAR 2 + +static char ** +mkseq (start, end, incr, type) + int start, end, incr, type; +{ + int n, i; + char **result, *t; + + n = abs (end - start) + 1; + result = strvec_create (n + 1); + + if (incr == 0) + incr = 1; + + if (start > end && incr > 0) + incr = -incr; + else if (start < end && incr < 0) + incr = -incr; + + /* Make sure we go through the loop at least once, so {3..3} prints `3' */ + i = 0; + n = start; + do + { +#if defined (SHELL) + QUIT; /* XXX - memory leak here */ +#endif + if (type == ST_INT) + result[i++] = itos (n); + else + { + t = (char *)xmalloc (2); + t[0] = n; + t[1] = '\0'; + result[i++] = t; + } + if (n == end) + break; + n += incr; + } + while (1); + + result[i] = (char *)0; + return (result); +} + +static char ** +expand_seqterm (text, tlen) + char *text; + size_t tlen; +{ + char *t, *lhs, *rhs; + int i, lhs_t, rhs_t, lhs_v, rhs_v; + intmax_t tl, tr; + char **result; + + t = strstr (text, BRACE_SEQ_SPECIFIER); + if (t == 0) + return ((char **)NULL); + + i = t - text; /* index of start of BRACE_SEQ_SPECIFIER */ + lhs = substring (text, 0, i); + rhs = substring (text, i + sizeof(BRACE_SEQ_SPECIFIER) - 1, tlen); + + if (lhs[0] == 0 || rhs[0] == 0) + { + free (lhs); + free (rhs); + return ((char **)NULL); + } + + /* Now figure out whether LHS and RHS are integers or letters. Both + sides have to match. */ + lhs_t = (legal_number (lhs, &tl)) ? ST_INT : + ((ISALPHA (lhs[0]) && lhs[1] == 0) ? ST_CHAR : ST_BAD); + rhs_t = (legal_number (rhs, &tr)) ? ST_INT : + ((ISALPHA (rhs[0]) && rhs[1] == 0) ? ST_CHAR : ST_BAD); + + if (lhs_t != rhs_t || lhs_t == ST_BAD || rhs_t == ST_BAD) + { + free (lhs); + free (rhs); + return ((char **)NULL); + } + + /* OK, we have something. It's either a sequence of integers, ascending + or descending, or a sequence or letters, ditto. Generate the sequence, + put it into a string vector, and return it. */ + + if (lhs_t == ST_CHAR) + { + lhs_v = (unsigned char)lhs[0]; + rhs_v = (unsigned char)rhs[0]; + } + else + { + lhs_v = tl; /* integer truncation */ + rhs_v = tr; + } + + result = mkseq (lhs_v, rhs_v, 1, lhs_t); + + free (lhs); + free (rhs); + + return (result); +} + +/* Start at INDEX, and skip characters in TEXT. Set INDEX to the + index of the character matching SATISFY. This understands about + quoting. Return the character that caused us to stop searching; + this is either the same as SATISFY, or 0. */ +/* If SATISFY is `}', we are looking for a brace expression, so we + should enforce the rules that govern valid brace expansions: + 1) to count as an arg separator, a comma or `..' has to be outside + an inner set of braces. +*/ +static int +brace_gobbler (text, tlen, indx, satisfy) + char *text; + size_t tlen; + int *indx; + int satisfy; +{ + register int i, c, quoted, level, commas, pass_next; +#if defined (SHELL) + int si; + char *t; +#endif + DECLARE_MBSTATE; + + level = quoted = pass_next = 0; +#if defined (CSH_BRACE_COMPAT) + commas = 1; +#else + commas = (satisfy == '}') ? 0 : 1; +#endif + + i = *indx; + while (c = text[i]) + { + if (pass_next) + { + pass_next = 0; + ADVANCE_CHAR (text, tlen, i); + continue; + } + + /* A backslash escapes the next character. This allows backslash to + escape the quote character in a double-quoted string. */ + if (c == '\\' && (quoted == 0 || quoted == '"' || quoted == '`')) + { + pass_next = 1; + i++; + continue; + } + +#if defined (SHELL) + /* If compiling for the shell, treat ${...} like \{...} */ + if (c == '$' && text[i+1] == '{' && quoted != '\'') /* } */ + { + pass_next = 1; + i++; + if (quoted == 0) + level++; + continue; + } +#endif + + if (quoted) + { + if (c == quoted) + quoted = 0; + ADVANCE_CHAR (text, tlen, i); + continue; + } + + if (c == '"' || c == '\'' || c == '`') + { + quoted = c; + i++; + continue; + } + +#if defined (SHELL) + /* Pass new-style command substitutions through unchanged. */ + if (c == '$' && text[i+1] == '(') /* ) */ + { + si = i + 2; + t = extract_command_subst (text, &si); + i = si; + free (t); + i++; + continue; + } +#endif + + if (c == satisfy && level == 0 && quoted == 0 && commas > 0) + { + /* We ignore an open brace surrounded by whitespace, and also + an open brace followed immediately by a close brace preceded + by whitespace. */ + if (c == '{' && + ((!i || brace_whitespace (text[i - 1])) && + (brace_whitespace (text[i + 1]) || text[i + 1] == '}'))) + { + i++; + continue; + } + + break; + } + + if (c == '{') + level++; + else if (c == '}' && level) + level--; +#if !defined (CSH_BRACE_COMPAT) + else if (satisfy == '}' && c == brace_arg_separator && level == 0) + commas++; + else if (satisfy == '}' && STREQN (text+i, BRACE_SEQ_SPECIFIER, 2) && + text[i+2] != satisfy && level == 0) + commas++; +#endif + + ADVANCE_CHAR (text, tlen, i); + } + + *indx = i; + return (c); +} + +/* 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) + are free ()'ed. ARR1 can be NULL, in that case, a new version of ARR2 + is returned. */ +static char ** +array_concat (arr1, arr2) + char **arr1, **arr2; +{ + register int i, j, len, len1, len2; + register char **result; + + if (arr1 == 0) + return (strvec_copy (arr2)); + + if (arr2 == 0) + return (strvec_copy (arr1)); + + len1 = strvec_len (arr1); + len2 = strvec_len (arr2); + + result = (char **)xmalloc ((1 + (len1 * len2)) * sizeof (char *)); + + len = 0; + for (i = 0; i < len1; i++) + { + int strlen_1 = strlen (arr1[i]); + + for (j = 0; j < len2; j++) + { + result[len] = (char *)xmalloc (1 + strlen_1 + strlen (arr2[j])); + strcpy (result[len], arr1[i]); + strcpy (result[len] + strlen_1, arr2[j]); + len++; + } + free (arr1[i]); + } + free (arr1); + + result[len] = (char *)NULL; + return (result); +} + +#if defined (TEST) +#include + +fatal_error (format, arg1, arg2) + char *format, *arg1, *arg2; +{ + report_error (format, arg1, arg2); + exit (1); +} + +report_error (format, arg1, arg2) + char *format, *arg1, *arg2; +{ + fprintf (stderr, format, arg1, arg2); + fprintf (stderr, "\n"); +} + +main () +{ + char example[256]; + + for (;;) + { + char **result; + int i; + + fprintf (stderr, "brace_expand> "); + + if ((!fgets (example, 256, stdin)) || + (strncmp (example, "quit", 4) == 0)) + break; + + if (strlen (example)) + example[strlen (example) - 1] = '\0'; + + result = brace_expand (example); + + for (i = 0; result[i]; i++) + printf ("%s\n", result[i]); + + free_array (result); + } +} + +/* + * Local variables: + * compile-command: "gcc -g -Bstatic -DTEST -o brace_expand braces.c general.o" + * end: + */ + +#endif /* TEST */ +#endif /* BRACE_EXPANSION */ diff --git a/bash-20060316/builtins.h b/bash-20060316/builtins.h new file mode 100644 index 000000000..f75e5038b --- /dev/null +++ b/bash-20060316/builtins.h @@ -0,0 +1,60 @@ +/* builtins.h -- What a builtin looks like, and where to find them. */ + +/* Copyright (C) 1987,1991 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + Bash is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with Bash; see the file COPYING. If not, write to the Free + Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#include "config.h" + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include "command.h" +#include "general.h" + +#if defined (ALIAS) +#include "alias.h" +#endif + +/* Flags describing various things about a builtin. */ +#define BUILTIN_ENABLED 0x1 /* This builtin is enabled. */ +#define BUILTIN_DELETED 0x2 /* This has been deleted with enable -d. */ +#define STATIC_BUILTIN 0x4 /* This builtin is not dynamically loaded. */ +#define SPECIAL_BUILTIN 0x8 /* This is a Posix `special' builtin. */ +#define ASSIGNMENT_BUILTIN 0x10 /* This builtin takes assignment statements. */ + +#define BASE_INDENT 4 + +/* The thing that we build the array of builtins out of. */ +struct builtin { + char *name; /* The name that the user types. */ + 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. */ + char *handle; /* for future use */ +}; + +/* Found in builtins.c, created by builtins/mkbuiltins. */ +extern int num_shell_builtins; /* Number of shell builtins. */ +extern struct builtin static_shell_builtins[]; +extern struct builtin *shell_builtins; +extern struct builtin *current_builtin; diff --git a/bash-20060316/builtins/-i b/bash-20060316/builtins/-i new file mode 100644 index 000000000..e69de29bb diff --git a/bash-20060316/builtins/ChangeLog b/bash-20060316/builtins/ChangeLog new file mode 100644 index 000000000..e69de29bb diff --git a/bash-20060316/builtins/Makefile.in b/bash-20060316/builtins/Makefile.in new file mode 100644 index 000000000..e027f7aaa --- /dev/null +++ b/bash-20060316/builtins/Makefile.in @@ -0,0 +1,625 @@ +# This Makefile for building libbuiltins.a is in -*- text -*- for Emacs. +# +# Copyright (C) 1996-2005 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 2, 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, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +PACKAGE = @PACKAGE_NAME@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_VERSION = @PACKAGE_VERSION@ + +# +SHELL = @MAKE_SHELL@ +RANLIB = @RANLIB@ +CC = @CC@ +CC_FOR_BUILD = @CC_FOR_BUILD@ +AR = @AR@ +ARFLAGS = @ARFLAGS@ +RM = rm -f +CP = cp + +EXEEXT = @EXEEXT@ + +prefix = @prefix@ + +srcdir = @srcdir@ +VPATH = .:@srcdir@ +topdir = @top_srcdir@ +includedir = @includedir@ +datadir = @datadir@ +localedir = $(datadir)/locale + +# Support an alternate destination root directory for package building +DESTDIR = + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +BUILD_DIR = @BUILD_DIR@ + +LIBBUILD = ${BUILD_DIR}/lib + +PROFILE_FLAGS = @PROFILE_FLAGS@ +CFLAGS = @CFLAGS@ +CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ @CROSS_COMPILE@ +CPPFLAGS = @CPPFLAGS@ +CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ +LOCAL_CFLAGS = @LOCAL_CFLAGS@ ${DEBUG} +DEFS = @DEFS@ +LOCAL_DEFS = @LOCAL_DEFS@ + +LIBS = @LIBS@ +LDFLAGS = @LDFLAGS@ $(LOCAL_LDFLAGS) $(CFLAGS) +LDFLAGS_FOR_BUILD = $(LDFLAGS) +LOCAL_LDFLAGS = @LOCAL_LDFLAGS@ +#LIBS_FOR_BUILD = @LIBS_FOR_BUILD@ +LIBS_FOR_BUILD = $(LIBS) + +BASHINCDIR = ${topdir}/include + +RL_INCLUDEDIR = @RL_INCLUDEDIR@ + +INTL_LIBSRC = ${topdir}/lib/intl +INTL_BUILDDIR = ${LIBBUILD}/intl +INTL_INC = @INTL_INC@ +LIBINTL_H = @LIBINTL_H@ + +HELPDIR = @HELPDIR@ +MKDIRS = ${topdir}/support/mkdirs + +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) \ + ${INCLUDES} $(LOCAL_CFLAGS) + +CCFLAGS = $(BASE_CCFLAGS) $(CPPFLAGS) $(CFLAGS) + +CCFLAGS_FOR_BUILD = $(BASE_CCFLAGS) $(CPPFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) + +GCC_LINT_FLAGS = -Wall -Wshadow -Wpointer-arith -Wcast-qual \ + -Wcast-align -Wstrict-prototypes -Wconversion \ + -Wmissing-prototypes -Wtraditional -Wredundant-decls -pedantic + +MKBUILTINS = mkbuiltins$(EXEEXT) +DIRECTDEFINE = -D $(srcdir) +HELPDIRDEFINE = @HELPDIRDEFINE@ +HELPSTRINGS = @HELPSTRINGS@ + +# xxx this is bad style +RL_LIBSRC = $(topdir)/lib/readline + +.SUFFIXES: +.SUFFIXES: .def .c .o +# How to make a .o file from a .def file. +.def.o: + $(RM) $@ + ./$(MKBUILTINS) $(DIRECTDEFINE) $< + $(CC) -c $(CCFLAGS) $*.c || ( $(RM) $*.c ; exit 1 ) + $(RM) $*.c + +# How to make a .c file from a .def file. +.def.c: + $(RM) $@ + ./$(MKBUILTINS) $(DIRECTDEFINE) $< + +# default rule for making a .o file from a .c file +.c.o: + $(RM) $@ + $(CC) -c $(CCFLAGS) $< + +DEFSRC = $(srcdir)/alias.def $(srcdir)/bind.def $(srcdir)/break.def \ + $(srcdir)/builtin.def $(srcdir)/caller.def \ + $(srcdir)/cd.def $(srcdir)/colon.def \ + $(srcdir)/command.def $(srcdir)/declare.def $(srcdir)/echo.def \ + $(srcdir)/enable.def $(srcdir)/eval.def $(srcdir)/getopts.def \ + $(srcdir)/exec.def $(srcdir)/exit.def $(srcdir)/fc.def \ + $(srcdir)/fg_bg.def $(srcdir)/hash.def $(srcdir)/help.def \ + $(srcdir)/history.def $(srcdir)/jobs.def $(srcdir)/kill.def \ + $(srcdir)/let.def $(srcdir)/read.def $(srcdir)/return.def \ + $(srcdir)/set.def $(srcdir)/setattr.def $(srcdir)/shift.def \ + $(srcdir)/source.def $(srcdir)/suspend.def $(srcdir)/test.def \ + $(srcdir)/times.def $(srcdir)/trap.def $(srcdir)/type.def \ + $(srcdir)/ulimit.def $(srcdir)/umask.def $(srcdir)/wait.def \ + $(srcdir)/reserved.def $(srcdir)/pushd.def $(srcdir)/shopt.def \ + $(srcdir)/printf.def $(srcdir)/complete.def + +STATIC_SOURCE = common.c evalstring.c evalfile.c getopt.c bashgetopt.c \ + getopt.h + +OFILES = builtins.o \ + alias.o bind.o break.o builtin.o caller.o cd.o colon.o command.o \ + common.o declare.o echo.o enable.o eval.o evalfile.o \ + evalstring.o exec.o \ + exit.o fc.o fg_bg.o hash.o help.o history.o jobs.o kill.o let.o \ + pushd.o read.o return.o set.o setattr.o shift.o source.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 + +all: $(MKBUILTINS) libbuiltins.a + +libbuiltins.a: $(MKBUILTINS) $(OFILES) builtins.o + $(RM) $@ + $(AR) $(ARFLAGS) $@ $(OFILES) + -$(RANLIB) $@ + +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 + ./$(MKBUILTINS) -externfile builtext.h -structfile builtins.c \ + -noproduction $(DIRECTDEFINE) $(HELPDIRDEFINE) $(HELPSTRINGS) $(DEFSRC) + @-if cmp -s old-builtext.h builtext.h 2>/dev/null; then \ + mv old-builtext.h builtext.h; \ + else \ + $(RM) old-builtext.h; \ + fi + @-if cmp -s old-builtins.c builtins.c 2>/dev/null; then \ + mv old-builtins.c builtins.c; \ + else \ + $(RM) old-builtins.c; \ + fi + +helpdoc: $(MKBUILTINS) $(DEFSRC) + ./$(MKBUILTINS) ${HELPDIRDEFINE} -noproduction $(DIRECTDEFINE) $(DEFSRC) + +install-help: + @-if test -n "${HELPDIR}" && test -d helpfiles ; then \ + test -d $(DESTDIR)${HELPDIR} || ${SHELL} ${MKDIRS} $(DESTDIR)$(HELPDIR) ;\ + ( for f in helpfiles/*; do \ + echo installing $$f; \ + ${INSTALL_DATA} $$f $(DESTDIR)$(HELPDIR); \ + done; ) ; \ + fi + +install: @HELPINSTALL@ + +mkbuiltins.o: ../config.h +mkbuiltins.o: mkbuiltins.c + $(RM) $@ + $(CC_FOR_BUILD) -c $(CCFLAGS_FOR_BUILD) $< + +mkbuiltins$(EXEEXT): mkbuiltins.o + $(CC_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o $(MKBUILTINS) mkbuiltins.o $(LIBS_FOR_BUILD) + +# rules for deficient makes, like SunOS +mkbuiltins.o: mkbuiltins.c +builtins.o: builtins.c +common.o: common.c +bashgetopt.o: bashgetopt.c +getopt.o: getopt.c +evalstring.o: evalstring.c +evalfile.o: evalfile.c + +ulimit.o: pipesize.h + +pipesize.h: psize.aux + $(SHELL) $(srcdir)/psize.sh > $@ + +psize.aux: psize.c + $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(srcdir)/psize.c + +documentation: builtins.texi + +builtins.texi: $(MKBUILTINS) + ./$(MKBUILTINS) -documentonly $(DEFSRC) + +clean: + $(RM) $(OFILES) $(CREATED_FILES) $(MKBUILTINS) mkbuiltins.o libbuiltins.a + -test -d helpfiles && $(RM) -r helpfiles + +mostlyclean: + $(RM) $(OFILES) libbuiltins.a + +distclean maintainer-clean: clean + $(RM) Makefile + +$(OFILES): $(MKBUILTINS) ../config.h + +../version.h: ../config.h ../Makefile Makefile + -( cd ${BUILD_DIR} && ${MAKE} ${MFLAGS} version.h ) + +# maintainer special - for now +po: builtins.c + xgettext -L C -o $(topdir)/po/builtins.pot --keyword='N_' builtins.c 2>/dev/null + +# dependencies + +alias.o: alias.def +bind.o: bind.def +break.o: break.def +builtin.o: builtin.def +caller.o: caller.def +cd.o: cd.def +colon.o: colon.def +command.o: command.def +declare.o: declare.def +echo.o: echo.def +enable.o: enable.def +eval.o: eval.def +exec.o: exec.def +exit.o: exit.def +fc.o: fc.def +fg_bg.o: fg_bg.def +hash.o: hash.def +help.o: help.def +history.o: history.def +jobs.o: jobs.def +kill.o: kill.def +let.o: let.def +printf.o: printf.def +pushd.o: pushd.def +read.o: read.def +return.o: return.def +set.o: set.def +setattr.o: setattr.def +shift.o: shift.def +shopt.o: shopt.def +source.o: source.def +suspend.o: suspend.def +test.o: test.def +times.o: times.def +trap.o: trap.def +type.o: type.def +ulimit.o: ulimit.def +umask.o: umask.def +wait.o: wait.def +getopts.o: getopts.def +reserved.o: reserved.def +complete.o: complete.def + +# C files +bashgetopt.o: ../config.h $(topdir)/bashansi.h $(BASHINCDIR)/ansi_stdlib.h +bashgetopt.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/bashjmp.h +bashgetopt.o: $(topdir)/command.h $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/error.h +bashgetopt.o: $(topdir)/variables.h $(topdir)/conftypes.h $(topdir)/quit.h $(BASHINCDIR)/maxpath.h +bashgetopt.o: $(topdir)/unwind_prot.h $(topdir)/dispose_cmd.h +bashgetopt.o: $(topdir)/make_cmd.h $(topdir)/subst.h $(topdir)/sig.h +bashgetopt.o: ../pathnames.h $(topdir)/externs.h $(srcdir)/common.h +bashgetopt.o: $(BASHINCDIR)/chartypes.h +common.o: $(topdir)/bashtypes.h $(BASHINCDIR)/posixstat.h $(topdir)/bashansi.h $(BASHINCDIR)/ansi_stdlib.h +common.o: $(topdir)/shell.h $(topdir)/syntax.h ../config.h $(topdir)/bashjmp.h $(BASHINCDIR)/posixjmp.h +common.o: $(topdir)/sig.h $(topdir)/command.h +common.o: $(topdir)/general.h $(topdir)/xmalloc.h $(BASHINCDIR)/stdc.h $(BASHINCDIR)/memalloc.h +common.o: $(topdir)/variables.h $(topdir)/conftypes.h $(topdir)/input.h +common.o: $(topdir)/siglist.h $(topdir)/bashhist.h $(topdir)/quit.h +common.o: $(topdir)/unwind_prot.h $(BASHINCDIR)/maxpath.h $(topdir)/jobs.h +common.o: $(topdir)/builtins.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +common.o: $(topdir)/subst.h $(topdir)/execute_cmd.h $(topdir)/error.h +common.o: $(topdir)/externs.h ../pathnames.h ./builtext.h +common.o: $(BASHINCDIR)/chartypes.h +evalfile.o: $(topdir)/bashtypes.h $(BASHINCDIR)/posixstat.h ${BASHINCDIR}/filecntl.h +evalfile.o: $(topdir)/bashansi.h $(BASHINCDIR)/ansi_stdlib.h +evalfile.o: $(topdir)/shell.h $(topdir)/syntax.h ../config.h $(topdir)/bashjmp.h +evalfile.o: $(topdir)/command.h $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/error.h +evalfile.o: $(topdir)/variables.h $(topdir)/conftypes.h $(topdir)/quit.h $(BASHINCDIR)/maxpath.h +evalfile.o: $(topdir)/unwind_prot.h $(topdir)/dispose_cmd.h +evalfile.o: $(topdir)/make_cmd.h $(topdir)/subst.h $(topdir)/sig.h +evalfile.o: ../pathnames.h $(topdir)/externs.h +evalfile.o: $(topdir)/jobs.h $(topdir)/builtins.h $(topdir)/flags.h +evalfile.o: $(topdir)/input.h $(topdir)/execute_cmd.h +evalfile.o: $(topdir)/bashhist.h $(srcdir)/common.h +evalstring.o: ../config.h $(topdir)/bashansi.h $(BASHINCDIR)/ansi_stdlib.h +evalstring.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/bashjmp.h $(BASHINCDIR)/posixjmp.h +evalstring.o: $(topdir)/sig.h $(topdir)/command.h $(topdir)/siglist.h +evalstring.o: $(BASHINCDIR)/memalloc.h $(topdir)/variables.h $(topdir)/conftypes.h $(topdir)/input.h +evalstring.o: $(topdir)/quit.h $(topdir)/unwind_prot.h +evalstring.o: $(BASHINCDIR)/maxpath.h $(topdir)/jobs.h $(topdir)/builtins.h +evalstring.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h +evalstring.o: $(topdir)/externs.h $(topdir)/jobs.h $(topdir)/builtins.h +evalstring.o: $(topdir)/flags.h $(topdir)/input.h $(topdir)/execute_cmd.h +evalstring.o: $(topdir)/bashhist.h $(srcdir)/common.h +evalstring.o: $(topdir)/trap.h $(topdir)/redir.h +getopt.o: ../config.h $(BASHINCDIR)/memalloc.h +getopt.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/bashjmp.h $(topdir)/command.h +getopt.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/error.h $(topdir)/variables.h $(topdir)/conftypes.h +getopt.o: $(topdir)/quit.h $(BASHINCDIR)/maxpath.h $(topdir)/unwind_prot.h +getopt.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h +getopt.o: $(topdir)/sig.h ../pathnames.h $(topdir)/externs.h +getopt.o: $(srcdir)/getopt.h +mkbuiltins.o: ../config.h $(topdir)/bashtypes.h $(BASHINCDIR)/posixstat.h +mkbuiltins.o: ${BASHINCDIR}/filecntl.h +mkbuiltins.o: $(topdir)/bashansi.h $(BASHINCDIR)/ansi_stdlib.h + +# def files +alias.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +alias.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h $(BASHINCDIR)/maxpath.h +alias.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +alias.o: $(topdir)/subst.h $(topdir)/externs.h $(srcdir)/common.h +alias.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +bind.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h +bind.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +bind.o: $(topdir)/subst.h $(topdir)/externs.h $(srcdir)/bashgetopt.h +bind.o: $(topdir)/general.h $(topdir)/xmalloc.h $(BASHINCDIR)/maxpath.h $(topdir)/bashline.h +bind.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +break.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +break.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h +break.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +break.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h +break.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +builtin.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +builtin.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/externs.h +builtin.o: $(topdir)/quit.h $(srcdir)/common.h $(BASHINCDIR)/maxpath.h +builtin.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h +builtin.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +builtin.o: $(srcdir)/bashgetopt.h +caller.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h +caller.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/quit.h $(topdir)/dispose_cmd.h +caller.o: $(topdir)/make_cmd.h $(topdir)/subst.h $(topdir)/externs.h +caller.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +caller.o: $(srcdir)/common.h $(BASHINCDIR)/maxpath.h ./builtext.h +caller.o: ${BASHINCDIR}/chartypes.h $(topdir)/bashtypes.h +cd.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h +cd.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/quit.h $(topdir)/dispose_cmd.h +cd.o: $(topdir)/make_cmd.h $(topdir)/subst.h $(topdir)/externs.h +cd.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +cd.o: $(srcdir)/common.h $(BASHINCDIR)/maxpath.h +command.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +command.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/externs.h +command.o: $(topdir)/quit.h $(srcdir)/bashgetopt.h $(BASHINCDIR)/maxpath.h +command.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h +command.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +declare.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +declare.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h +declare.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +declare.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h +declare.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +declare.o: $(topdir)/arrayfunc.h $(srcdir)/bashgetopt.h +declare.o: ./builtext.h +echo.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h +echo.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/subst.h $(topdir)/externs.h +echo.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +echo.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +echo.o: $(BASHINCDIR)/maxpath.h +enable.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +enable.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h +enable.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +enable.o: $(topdir)/subst.h $(topdir)/externs.h +enable.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +enable.o: $(BASHINCDIR)/maxpath.h +enable.o: $(topdir)/pcomplete.h +eval.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +eval.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h +eval.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +eval.o: $(topdir)/subst.h $(topdir)/externs.h +eval.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +eval.o: $(BASHINCDIR)/maxpath.h +exec.o: $(topdir)/bashtypes.h +exec.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +exec.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h +exec.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +exec.o: $(topdir)/subst.h $(topdir)/externs.h $(topdir)/flags.h +exec.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +exec.o: $(srcdir)/common.h $(topdir)/execute_cmd.h $(BASHINCDIR)/maxpath.h +exec.o: $(topdir)/findcmd.h $(topdir)/jobs.h +exit.o: $(topdir)/bashtypes.h +exit.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +exit.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h +exit.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +exit.o: $(topdir)/subst.h $(topdir)/externs.h $(topdir)/jobs.h +exit.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +exit.o: $(BASHINCDIR)/maxpath.h ./builtext.h +fc.o: $(topdir)/bashtypes.h $(BASHINCDIR)/posixstat.h +fc.o: $(topdir)/builtins.h $(topdir)/command.h $(srcdir)/bashgetopt.h +fc.o: $(topdir)/bashhist.h +fc.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h +fc.o: $(topdir)/general.h $(topdir)/xmalloc.h $(BASHINCDIR)/maxpath.h +fc.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +fc.o: $(topdir)/subst.h $(topdir)/externs.h $(topdir)/shell.h $(topdir)/syntax.h +fc.o: $(topdir)/flags.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +fc.o: $(topdir)/bashansi.h $(BASHINCDIR)/ansi_stdlib.h $(BASHINCDIR)/chartypes.h +fg_bg.o: $(topdir)/bashtypes.h $(srcdir)/bashgetopt.h +fg_bg.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +fg_bg.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h +fg_bg.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +fg_bg.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h +fg_bg.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +fg_bg.o: $(topdir)/jobs.h +getopts.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +getopts.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h +getopts.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +getopts.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h +getopts.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +hash.o: $(topdir)/builtins.h $(topdir)/command.h $(topdir)/quit.h +hash.o: $(topdir)/findcmd.h $(topdir)/hashlib.h +hash.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +hash.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h +hash.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +hash.o: $(srcdir)/common.h $(BASHINCDIR)/maxpath.h +help.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +help.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h +help.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +help.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h +help.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +help.o: ${srcdir}/common.h +history.o: $(topdir)/bashtypes.h +history.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +history.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h +history.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +history.o: $(topdir)/subst.h $(topdir)/externs.h +history.o: ${BASHINCDIR}/filecntl.h $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h +history.o: $(topdir)/variables.h $(topdir)/conftypes.h $(topdir)/bashhist.h $(BASHINCDIR)/maxpath.h +inlib.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +inlib.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h +inlib.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +inlib.o: $(BASHINCDIR)/maxpath.h $(topdir)/subst.h $(topdir)/externs.h +inlib.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +jobs.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h +jobs.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/quit.h $(srcdir)/bashgetopt.h +jobs.o: $(BASHINCDIR)/maxpath.h $(topdir)/externs.h $(topdir)/jobs.h +jobs.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h +jobs.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +kill.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h +kill.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/subst.h $(topdir)/externs.h +kill.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +kill.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/trap.h $(topdir)/unwind_prot.h +kill.o: $(topdir)/variables.h $(topdir)/conftypes.h $(BASHINCDIR)/maxpath.h +kill.o: $(topdir)/jobs.h +let.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +let.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h +let.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +let.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h +let.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +printf.o: ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/bashjmp.h +printf.o: $(topdir)/command.h $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h +printf.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +printf.o: $(topdir)/subst.h $(topdir)/externs.h $(topdir)/sig.h +printf.o: ../pathnames.h $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h +printf.o: $(topdir)/variables.h $(topdir)/conftypes.h $(BASHINCDIR)/stdc.h $(srcdir)/bashgetopt.h +printf.o: $(topdir)/bashtypes.h ${srcdir}/common.h $(BASHINCDIR)/chartypes.h +pushd.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +pushd.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h +pushd.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +pushd.o: $(topdir)/subst.h $(topdir)/externs.h +pushd.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +pushd.o: $(BASHINCDIR)/maxpath.h $(srcdir)/common.h ./builtext.h +read.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +read.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h +read.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +read.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h +read.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +read.o: $(BASHINCDIR)/shtty.h +read.o: $(topdir)/arrayfunc.h +return.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +return.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h +return.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +return.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h +return.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +set.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +set.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/subst.h $(topdir)/externs.h +set.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +set.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +set.o: $(BASHINCDIR)/maxpath.h $(topdir)/error.h +set.o: $(topdir)/arrayfunc.h +setattr.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +setattr.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h $(BASHINCDIR)/maxpath.h +setattr.o: $(topdir)/quit.h $(srcdir)/common.h $(srcdir)/bashgetopt.h +setattr.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h +setattr.o: $(topdir)/externs.h +setattr.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +setattr.o: $(topdir)/arrayfunc.h +shift.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +shift.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h +shift.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +shift.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h +shift.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.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 +source.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h +source.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +source.o: $(srcdir)/bashgetopt.h $(topdir)/flags.h $(topdir)/trap.h +suspend.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +suspend.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h +suspend.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +suspend.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h +suspend.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +suspend.o: $(topdir)/jobs.h +test.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +test.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h +test.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +test.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h +test.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +test.o: $(topdir)/test.h +times.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +times.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h +times.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +times.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h +times.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +times.o: $(BASHINCDIR)/posixtime.h +trap.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +trap.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/externs.h +trap.o: $(topdir)/quit.h $(srcdir)/common.h $(BASHINCDIR)/maxpath.h +trap.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h +trap.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +trap.o: $(topdir)/findcmd.h +type.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +type.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h +type.o: $(topdir)/quit.h $(srcdir)/common.h $(BASHINCDIR)/maxpath.h +type.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h +type.o: $(topdir)/externs.h $(topdir)/hashcmd.h +type.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +ulimit.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +ulimit.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h +ulimit.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +ulimit.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h +ulimit.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +umask.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +umask.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h +umask.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +umask.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h +umask.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +umask.o: $(BASHINCDIR)/chartypes.h +wait.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +wait.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h +wait.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +wait.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h +wait.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +wait.o: $(topdir)/jobs.h +wait.o: $(BASHINCDIR)/chartypes.h +shopt.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +shopt.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h +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 + +complete.o: ../config.h +complete.o: ${topdir}/shell.h $(topdir)/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h ${topdir}/sig.h +complete.o: ${topdir}/unwind_prot.h ${topdir}/variables.h +complete.o: ${topdir}/bashtypes.h ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h +complete.o: ${topdir}/builtins.h +complete.o: ${topdir}/pcomplete.h +complete.o: ${srcdir}/common.h ${srcdir}/bashgetopt.h + +#bind.o: $(RL_LIBSRC)chardefs.h $(RL_LIBSRC)readline.h $(RL_LIBSRC)keymaps.h + +# libintl dependencies +bind.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +break.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +caller.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +cd.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +common.c: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +complete.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +declare.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +enable.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +evalfile.c: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +exec.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +exit.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +fc.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +fg_bg.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +getopt.c: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +hash.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +help.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +history.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +inlib.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +jobs.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +kill.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +let.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +mkbuiltins.c: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +printf.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +pushd.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +read.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +return.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +set.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +setattr.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +shift.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +shopt.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +source.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +suspend.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +type.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +ulimit.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +umask.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h diff --git a/bash-20060316/builtins/alias.def b/bash-20060316/builtins/alias.def new file mode 100644 index 000000000..572910bc4 --- /dev/null +++ b/bash-20060316/builtins/alias.def @@ -0,0 +1,229 @@ +This file is alias.def, from which is created alias.c +It implements the builtins "alias" and "unalias" in Bash. + +Copyright (C) 1987-2004 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$BUILTIN alias +$FUNCTION alias_builtin +$DEPENDS_ON ALIAS +$PRODUCES alias.c +$SHORT_DOC alias [-p] [name[=value] ... ] +`alias' with no arguments or with the -p option prints the list +of aliases in the form alias NAME=VALUE on standard output. +Otherwise, an alias is defined for each NAME whose VALUE is given. +A trailing space in VALUE causes the next word to be checked for +alias substitution when the alias is expanded. Alias returns +true unless a NAME is given for which no alias has been defined. +$END + +#include + +#if defined (ALIAS) + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +# include "../bashansi.h" +# include "../bashintl.h" + +# include +# include "../shell.h" +# include "../alias.h" +# include "common.h" +# include "bashgetopt.h" + +/* Flags for print_alias */ +#define AL_REUSABLE 0x01 + +static void print_alias __P((alias_t *, int)); + +extern int posixly_correct; + +/* Hack the alias command in a Korn shell way. */ +int +alias_builtin (list) + WORD_LIST *list; +{ + int any_failed, offset, pflag, dflags; + alias_t **alias_list, *t; + char *name, *value; + + dflags = posixly_correct ? 0 : AL_REUSABLE; + pflag = 0; + reset_internal_getopt (); + while ((offset = internal_getopt (list, "p")) != -1) + { + switch (offset) + { + case 'p': + pflag = 1; + dflags |= AL_REUSABLE; + break; + default: + builtin_usage (); + return (EX_USAGE); + } + } + + list = loptend; + + if (list == 0 || pflag) + { + if (aliases == 0) + return (EXECUTION_SUCCESS); + + alias_list = all_aliases (); + + if (alias_list == 0) + return (EXECUTION_SUCCESS); + + for (offset = 0; alias_list[offset]; offset++) + print_alias (alias_list[offset], dflags); + + free (alias_list); /* XXX - Do not free the strings. */ + + if (list == 0) + return (EXECUTION_SUCCESS); + } + + any_failed = 0; + while (list) + { + name = list->word->word; + + for (offset = 0; name[offset] && name[offset] != '='; offset++) + ; + + if (offset && name[offset] == '=') + { + name[offset] = '\0'; + value = name + offset + 1; + + if (legal_alias_name (name, 0) == 0) + { + builtin_error (_("`%s': invalid alias name"), name); + any_failed++; + } + else + add_alias (name, value); + } + else + { + t = find_alias (name); + if (t) + print_alias (t, dflags); + else + { + sh_notfound (name); + any_failed++; + } + } + list = list->next; + } + + return (any_failed ? EXECUTION_FAILURE : EXECUTION_SUCCESS); +} +#endif /* ALIAS */ + +$BUILTIN unalias +$FUNCTION unalias_builtin +$DEPENDS_ON ALIAS +$SHORT_DOC unalias [-a] name [name ...] +Remove NAMEs from the list of defined aliases. If the -a option is given, +then remove all alias definitions. +$END + +#if defined (ALIAS) +/* Remove aliases named in LIST from the aliases database. */ +int +unalias_builtin (list) + register WORD_LIST *list; +{ + register alias_t *alias; + int opt, aflag; + + aflag = 0; + reset_internal_getopt (); + while ((opt = internal_getopt (list, "a")) != -1) + { + switch (opt) + { + case 'a': + aflag = 1; + break; + default: + builtin_usage (); + return (EX_USAGE); + } + } + + list = loptend; + + if (aflag) + { + delete_all_aliases (); + return (EXECUTION_SUCCESS); + } + + if (list == 0) + { + builtin_usage (); + return (EX_USAGE); + } + + aflag = 0; + while (list) + { + alias = find_alias (list->word->word); + + if (alias) + remove_alias (alias->name); + else + { + sh_notfound (list->word->word); + aflag++; + } + + list = list->next; + } + + return (aflag ? EXECUTION_FAILURE : EXECUTION_SUCCESS); +} + +/* Output ALIAS in such a way as to allow it to be read back in. */ +static void +print_alias (alias, flags) + alias_t *alias; + int flags; +{ + char *value; + + value = sh_single_quote (alias->value); + if (flags & AL_REUSABLE) + printf ("alias "); + printf ("%s=%s\n", alias->name, value); + free (value); + + fflush (stdout); +} +#endif /* ALIAS */ diff --git a/bash-20060316/builtins/bashgetopt.c b/bash-20060316/builtins/bashgetopt.c new file mode 100644 index 000000000..4c8d907a9 --- /dev/null +++ b/bash-20060316/builtins/bashgetopt.c @@ -0,0 +1,175 @@ +/* bashgetopt.c -- `getopt' for use by the builtins. */ + +/* Copyright (C) 1992-2002 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "../bashansi.h" +#include +#include + +#include "../shell.h" +#include "common.h" + +#define ISOPT(s) (((*(s) == '-') || (plus && *(s) == '+')) && (s)[1]) +#define NOTOPT(s) (((*(s) != '-') && (!plus || *(s) != '+')) || (s)[1] == '\0') + +static int sp; + +char *list_optarg; +int list_optopt; +int list_opttype; + +static WORD_LIST *lhead = (WORD_LIST *)NULL; +WORD_LIST *lcurrent = (WORD_LIST *)NULL; +WORD_LIST *loptend; /* Points to the first non-option argument in the list */ + +int +internal_getopt(list, opts) +WORD_LIST *list; +char *opts; +{ + register int c; + register char *cp; + int plus; /* nonzero means to handle +option */ + static char errstr[3] = { '-', '\0', '\0' }; + + plus = *opts == '+'; + if (plus) + opts++; + + if (list == 0) { + list_optarg = (char *)NULL; + loptend = (WORD_LIST *)NULL; /* No non-option arguments */ + return -1; + } + + if (list != lhead || lhead == 0) { + /* Hmmm.... called with a different word list. Reset. */ + sp = 1; + lcurrent = lhead = list; + loptend = (WORD_LIST *)NULL; + } + + if (sp == 1) { + if (lcurrent == 0 || NOTOPT(lcurrent->word->word)) { + lhead = (WORD_LIST *)NULL; + loptend = lcurrent; + return(-1); + } else if (lcurrent->word->word[0] == '-' && + lcurrent->word->word[1] == '-' && + lcurrent->word->word[2] == 0) { + lhead = (WORD_LIST *)NULL; + loptend = lcurrent->next; + return(-1); + } + errstr[0] = list_opttype = lcurrent->word->word[0]; + } + + list_optopt = c = lcurrent->word->word[sp]; + + if (c == ':' || (cp = strchr(opts, c)) == NULL) { + errstr[1] = c; + sh_invalidopt (errstr); + if (lcurrent->word->word[++sp] == '\0') { + lcurrent = lcurrent->next; + sp = 1; + } + list_optarg = NULL; + if (lcurrent) + loptend = lcurrent->next; + return('?'); + } + + if (*++cp == ':' || *cp == ';') { + /* `:': Option requires an argument. */ + /* `;': option argument may be missing */ + /* We allow -l2 as equivalent to -l 2 */ + if (lcurrent->word->word[sp+1]) { + list_optarg = lcurrent->word->word + sp + 1; + lcurrent = lcurrent->next; + /* If the specifier is `;', don't set optarg if the next + argument looks like another option. */ +#if 0 + } else if (lcurrent->next && (*cp == ':' || lcurrent->next->word->word[0] != '-')) { +#else + } else if (lcurrent->next && (*cp == ':' || NOTOPT(lcurrent->next->word->word))) { +#endif + lcurrent = lcurrent->next; + list_optarg = lcurrent->word->word; + lcurrent = lcurrent->next; + } else if (*cp == ';') { + list_optarg = (char *)NULL; + lcurrent = lcurrent->next; + } else { /* lcurrent->next == NULL */ + errstr[1] = c; + sh_needarg (errstr); + sp = 1; + list_optarg = (char *)NULL; + return('?'); + } + sp = 1; + } else if (*cp == '#') { + /* option requires a numeric argument */ + if (lcurrent->word->word[sp+1]) { + if (DIGIT(lcurrent->word->word[sp+1])) { + list_optarg = lcurrent->word->word + sp + 1; + lcurrent = lcurrent->next; + } else + list_optarg = (char *)NULL; + } else { + if (lcurrent->next && legal_number(lcurrent->next->word->word, (intmax_t *)0)) { + lcurrent = lcurrent->next; + list_optarg = lcurrent->word->word; + lcurrent = lcurrent->next; + } else { + errstr[1] = c; + sh_neednumarg (errstr); + sp = 1; + list_optarg = (char *)NULL; + return ('?'); + } + } + + } else { + /* No argument, just return the option. */ + if (lcurrent->word->word[++sp] == '\0') { + sp = 1; + lcurrent = lcurrent->next; + } + list_optarg = (char *)NULL; + } + + return(c); +} + +/* + * reset_internal_getopt -- force the in[ft]ernal getopt to reset + */ + +void +reset_internal_getopt () +{ + lhead = lcurrent = loptend = (WORD_LIST *)NULL; + sp = 1; +} diff --git a/bash-20060316/builtins/bashgetopt.h b/bash-20060316/builtins/bashgetopt.h new file mode 100644 index 000000000..835797c15 --- /dev/null +++ b/bash-20060316/builtins/bashgetopt.h @@ -0,0 +1,39 @@ +/* bashgetopt.h -- extern declarations for stuff defined in bashgetopt.c. */ + +/* Copyright (C) 1993 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +/* See getopt.h for the explanation of these variables. */ + +#if !defined (__BASH_GETOPT_H) +# define __BASH_GETOPT_H + +#include + +extern char *list_optarg; + +extern int list_optopt; +extern int list_opttype; + +extern WORD_LIST *lcurrent; +extern WORD_LIST *loptend; + +extern int internal_getopt __P((WORD_LIST *, char *)); +extern void reset_internal_getopt __P((void)); + +#endif /* !__BASH_GETOPT_H */ diff --git a/bash-20060316/builtins/bind.def b/bash-20060316/builtins/bind.def new file mode 100644 index 000000000..4711031e1 --- /dev/null +++ b/bash-20060316/builtins/bind.def @@ -0,0 +1,320 @@ +This file is bind.def, from which is created bind.c. +It implements the builtin "bind" in Bash. + +Copyright (C) 1987-2003 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES bind.c + +#include + +$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] +Bind a key sequence to a Readline function or a macro, or set +a Readline variable. The non-option argument syntax is equivalent +to that found in ~/.inputrc, but must be passed as a single argument: +bind '"\C-x\C-r": re-read-init-file'. +bind accepts the following options: + -m keymap Use `keymap' as the keymap for the duration of this + command. Acceptable keymap names are emacs, + emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move, + vi-command, and vi-insert. + -l List names of functions. + -P List function names and bindings. + -p List functions and bindings in a form that can be + reused as input. + -r keyseq Remove the binding for KEYSEQ. + -x keyseq:shell-command Cause SHELL-COMMAND to be executed when + KEYSEQ is entered. + -f filename Read key bindings from FILENAME. + -q function-name Query about which keys invoke the named function. + -u function-name Unbind all keys which are bound to the named function. + -V List variable names and values + -v List variable names and values in a form that can + be reused as input. + -S List key sequences that invoke macros and their values + -s List key sequences that invoke macros and their values + in a form that can be reused as input. +$END + +#if defined (READLINE) + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include +#include +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +#include +#include + +#include "../bashintl.h" + +#include "../shell.h" +#include "../bashline.h" +#include "bashgetopt.h" +#include "common.h" + +static int query_bindings __P((char *)); +static int unbind_command __P((char *)); + +extern int no_line_editing; + +#define BIND_RETURN(x) do { return_code = x; goto bind_exit; } while (0) + +#define LFLAG 0x0001 +#define PFLAG 0x0002 +#define FFLAG 0x0004 +#define VFLAG 0x0008 +#define QFLAG 0x0010 +#define MFLAG 0x0020 +#define RFLAG 0x0040 +#define PPFLAG 0x0080 +#define VVFLAG 0x0100 +#define SFLAG 0x0200 +#define SSFLAG 0x0400 +#define UFLAG 0x0800 +#define XFLAG 0x1000 + +int +bind_builtin (list) + WORD_LIST *list; +{ + int return_code; + Keymap kmap, saved_keymap; + int flags, opt; + char *initfile, *map_name, *fun_name, *unbind_name, *remove_seq, *cmd_seq; + + if (no_line_editing) + return (EXECUTION_FAILURE); + + kmap = saved_keymap = (Keymap) NULL; + flags = 0; + initfile = map_name = fun_name = unbind_name = remove_seq = (char *)NULL; + return_code = EXECUTION_SUCCESS; + + if (!bash_readline_initialized) + initialize_readline (); + + begin_unwind_frame ("bind_builtin"); + unwind_protect_var (rl_outstream); + + rl_outstream = stdout; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "lvpVPsSf:q:u:m:r:x:")) != EOF) + { + switch (opt) + { + case 'l': + flags |= LFLAG; + break; + case 'v': + flags |= VFLAG; + break; + case 'p': + flags |= PFLAG; + break; + case 'f': + flags |= FFLAG; + initfile = list_optarg; + break; + case 'm': + flags |= MFLAG; + map_name = list_optarg; + break; + case 'q': + flags |= QFLAG; + fun_name = list_optarg; + break; + case 'u': + flags |= UFLAG; + unbind_name = list_optarg; + break; + case 'r': + flags |= RFLAG; + remove_seq = list_optarg; + break; + case 'V': + flags |= VVFLAG; + break; + case 'P': + flags |= PPFLAG; + break; + case 's': + flags |= SFLAG; + break; + case 'S': + flags |= SSFLAG; + break; + case 'x': + flags |= XFLAG; + cmd_seq = list_optarg; + break; + default: + builtin_usage (); + BIND_RETURN (EX_USAGE); + } + } + + list = loptend; + + /* First, see if we need to install a special keymap for this + command. Then start on the arguments. */ + + if ((flags & MFLAG) && map_name) + { + kmap = rl_get_keymap_by_name (map_name); + if (!kmap) + { + builtin_error (_("`%s': invalid keymap name"), map_name); + BIND_RETURN (EXECUTION_FAILURE); + } + } + + if (kmap) + { + saved_keymap = rl_get_keymap (); + rl_set_keymap (kmap); + } + + /* XXX - we need to add exclusive use tests here. It doesn't make sense + to use some of these options together. */ + /* Now hack the option arguments */ + if (flags & LFLAG) + rl_list_funmap_names (); + + if (flags & PFLAG) + rl_function_dumper (1); + + if (flags & PPFLAG) + rl_function_dumper (0); + + if (flags & SFLAG) + rl_macro_dumper (1); + + if (flags & SSFLAG) + rl_macro_dumper (0); + + if (flags & VFLAG) + rl_variable_dumper (1); + + if (flags & VVFLAG) + rl_variable_dumper (0); + + if ((flags & FFLAG) && initfile) + { + if (rl_read_init_file (initfile) != 0) + { + builtin_error (_("%s: cannot read: %s"), initfile, strerror (errno)); + BIND_RETURN (EXECUTION_FAILURE); + } + } + + if ((flags & QFLAG) && fun_name) + return_code = query_bindings (fun_name); + + if ((flags & UFLAG) && unbind_name) + return_code = unbind_command (unbind_name); + + if ((flags & RFLAG) && remove_seq) + { + if (rl_set_key (remove_seq, (rl_command_func_t *)NULL, rl_get_keymap ()) != 0) + { + builtin_error (_("`%s': cannot unbind"), remove_seq); + BIND_RETURN (EXECUTION_FAILURE); + } + } + + if (flags & XFLAG) + return_code = bind_keyseq_to_unix_command (cmd_seq); + + /* Process the rest of the arguments as binding specifications. */ + while (list) + { + rl_parse_and_bind (list->word->word); + list = list->next; + } + + bind_exit: + if (saved_keymap) + rl_set_keymap (saved_keymap); + + run_unwind_frame ("bind_builtin"); + + return (return_code); +} + +static int +query_bindings (name) + char *name; +{ + rl_command_func_t *function; + char **keyseqs; + int j; + + function = rl_named_function (name); + if (function == 0) + { + builtin_error (_("`%s': unknown function name"), name); + return EXECUTION_FAILURE; + } + + keyseqs = rl_invoking_keyseqs (function); + + if (!keyseqs) + { + printf (_("%s is not bound to any keys.\n"), name); + return EXECUTION_FAILURE; + } + + printf (_("%s can be invoked via "), name); + for (j = 0; j < 5 && keyseqs[j]; j++) + printf ("\"%s\"%s", keyseqs[j], keyseqs[j + 1] ? ", " : ".\n"); + if (keyseqs[j]) + printf ("...\n"); + strvec_dispose (keyseqs); + return EXECUTION_SUCCESS; +} + +static int +unbind_command (name) + char *name; +{ + rl_command_func_t *function; + + function = rl_named_function (name); + if (function == 0) + { + builtin_error ("`%s': unknown function name", name); + return EXECUTION_FAILURE; + } + + rl_unbind_function_in_map (function, rl_get_keymap ()); + return EXECUTION_SUCCESS; +} +#endif /* READLINE */ diff --git a/bash-20060316/builtins/break.def b/bash-20060316/builtins/break.def new file mode 100644 index 000000000..e61d5027e --- /dev/null +++ b/bash-20060316/builtins/break.def @@ -0,0 +1,132 @@ +This file is break.def, from which is created break.c. +It implements the builtins "break" and "continue" in Bash. + +Copyright (C) 1987-2003 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES break.c + +$BUILTIN break +$FUNCTION break_builtin +$SHORT_DOC break [n] +Exit from within a FOR, WHILE or UNTIL loop. If N is specified, +break N levels. +$END +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include "../bashintl.h" + +#include "../shell.h" +#include "common.h" + +extern char *this_command_name; +extern int posixly_correct; + +static int check_loop_level __P((void)); + +/* The depth of while's and until's. */ +int loop_level = 0; + +/* Non-zero when a "break" instruction is encountered. */ +int breaking = 0; + +/* Non-zero when we have encountered a continue instruction. */ +int continuing = 0; + +/* Set up to break x levels, where x defaults to 1, but can be specified + as the first argument. */ +int +break_builtin (list) + WORD_LIST *list; +{ + intmax_t newbreak; + + if (check_loop_level () == 0) + return (EXECUTION_SUCCESS); + + newbreak = get_numeric_arg (list, 1); + + if (newbreak <= 0) + { + sh_erange (list->word->word, "loop count"); + breaking = loop_level; + return (EXECUTION_FAILURE); + } + + if (newbreak > loop_level) + newbreak = loop_level; + + breaking = newbreak; + + return (EXECUTION_SUCCESS); +} + +$BUILTIN continue +$FUNCTION continue_builtin +$SHORT_DOC continue [n] +Resume the next iteration of the enclosing FOR, WHILE or UNTIL loop. +If N is specified, resume at the N-th enclosing loop. +$END + +/* Set up to continue x levels, where x defaults to 1, but can be specified + as the first argument. */ +int +continue_builtin (list) + WORD_LIST *list; +{ + intmax_t newcont; + + if (check_loop_level () == 0) + return (EXECUTION_SUCCESS); + + newcont = get_numeric_arg (list, 1); + + if (newcont <= 0) + { + sh_erange (list->word->word, "loop count"); + breaking = loop_level; + return (EXECUTION_FAILURE); + } + + if (newcont > loop_level) + newcont = loop_level; + + continuing = newcont; + + return (EXECUTION_SUCCESS); +} + +/* Return non-zero if a break or continue command would be okay. + Print an error message if break or continue is meaningless here. */ +static int +check_loop_level () +{ +#if defined (BREAK_COMPLAINS) + if (loop_level == 0 && posixly_correct == 0) + builtin_error (_("only meaningful in a `for', `while', or `until' loop")); +#endif /* BREAK_COMPLAINS */ + + return (loop_level); +} diff --git a/bash-20060316/builtins/builtin.def b/bash-20060316/builtins/builtin.def new file mode 100644 index 000000000..dfa58bc97 --- /dev/null +++ b/bash-20060316/builtins/builtin.def @@ -0,0 +1,80 @@ +This file is builtin.def, from which is created builtin.c. +It implements the builtin "builtin" in Bash. + +Copyright (C) 1987-2002 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES builtin.c + +$BUILTIN builtin +$FUNCTION builtin_builtin +$SHORT_DOC builtin [shell-builtin [arg ...]] +Run a shell builtin. This is useful when you wish to rename a +shell builtin to be a function, but need the functionality of the +builtin within the function itself. +$END +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include "../shell.h" +#include "common.h" +#include "bashgetopt.h" + +extern char *this_command_name; + +/* Run the command mentioned in list directly, without going through the + normal alias/function/builtin/filename lookup process. */ +int +builtin_builtin (list) + WORD_LIST *list; +{ + sh_builtin_func_t *function; + register char *command; + + if (no_options (list)) + return (EX_USAGE); + list = loptend; /* skip over possible `--' */ + + if (list == 0) + return (EXECUTION_SUCCESS); + + command = list->word->word; +#if defined (DISABLED_BUILTINS) + function = builtin_address (command); +#else /* !DISABLED_BUILTINS */ + function = find_shell_builtin (command); +#endif /* !DISABLED_BUILTINS */ + + if (!function) + { + sh_notbuiltin (command); + return (EXECUTION_FAILURE); + } + else + { + this_command_name = command; + list = list->next; + return ((*function) (list)); + } +} diff --git a/bash-20060316/builtins/caller.def b/bash-20060316/builtins/caller.def new file mode 100644 index 000000000..5142cab9a --- /dev/null +++ b/bash-20060316/builtins/caller.def @@ -0,0 +1,152 @@ +This file is caller.def, from which is created caller.c. It implements the +builtin "caller" in Bash. + +Copyright (C) 2002-2003 Rocky Bernstein for Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES caller.c + +$BUILTIN caller +$FUNCTION caller_builtin +$DEPENDS_ON DEBUGGER +$SHORT_DOC caller [EXPR] + +Returns the context of the current subroutine call. + +Without EXPR, returns returns "$line $filename". With EXPR, +returns "$line $subroutine $filename"; this extra information +can be used used to provide a stack trace. + +The value of EXPR indicates how many call frames to go back before the +current one; the top frame is frame 0. +$END + +#include +#include +#include "chartypes.h" +#include "bashtypes.h" + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include + +#include "../bashintl.h" + +#include "../shell.h" +#include "common.h" +#include "builtext.h" +#include "bashgetopt.h" + +#ifdef LOADABLE_BUILTIN +# include "builtins.h" +#endif + +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +int +caller_builtin (list) + WORD_LIST *list; +{ +#if !defined (ARRAY_VARS) + printf ("1 NULL\n"); + return (EXECUTION_FAILURE); +#else + SHELL_VAR *funcname_v, *bash_source_v, *bash_lineno_v; + ARRAY *funcname_a, *bash_source_a, *bash_lineno_a; + char *funcname_s, *source_s, *lineno_s; + ARRAY_ELEMENT *ae; + intmax_t num; + + GET_ARRAY_FROM_VAR ("FUNCNAME", funcname_v, funcname_a); + GET_ARRAY_FROM_VAR ("BASH_SOURCE", bash_source_v, bash_source_a); + GET_ARRAY_FROM_VAR ("BASH_LINENO", bash_lineno_v, bash_lineno_a); + + if (bash_lineno_a == 0 || array_empty (bash_lineno_a)) + return (EXECUTION_FAILURE); + + if (bash_source_a == 0 || array_empty (bash_source_a)) + return (EXECUTION_FAILURE); + + if (no_options (list)) + return (EX_USAGE); + list = loptend; /* skip over possible `--' */ + + /* If there is no argument list, then give short form: line filename. */ + if (list == 0) + { + lineno_s = array_reference (bash_lineno_a, 0); + source_s = array_reference (bash_source_a, 1); + printf("%s %s\n", lineno_s ? lineno_s : "NULL", source_s ? source_s : "NULL"); + return (EXECUTION_SUCCESS); + } + + if (funcname_a == 0 || array_empty (funcname_a)) + return (EXECUTION_FAILURE); + + if (legal_number (list->word->word, &num)) + { + lineno_s = array_reference (bash_lineno_a, num); + source_s = array_reference (bash_source_a, num+1); + funcname_s = array_reference (funcname_a, num+1); + + if (lineno_s == NULL|| source_s == NULL || funcname_s == NULL) + return (EXECUTION_FAILURE); + + printf("%s %s %s\n", lineno_s, funcname_s, source_s); + } + else + { + sh_invalidnum (list->word->word); + builtin_usage (); + return (EXECUTION_FAILURE); + } + + return (EXECUTION_SUCCESS); +#endif +} + +#ifdef LOADABLE_BUILTIN +static char *caller_doc[] = { + N_("Returns the context of the current subroutine call."), + N_(" "), + N_("Without EXPR, returns returns \"$line $filename\". With EXPR,"), + N_("returns \"$line $subroutine $filename\"; this extra information"), + N_("can be used used to provide a stack trace."), + N_(" "), + N_("The value of EXPR indicates how many call frames to go back before the"), + N_("current one; the top frame is frame 0."), + (char *)NULL +}; + +struct builtin caller_struct = { + "caller", + caller_builtin, + BUILTIN_ENABLED, + caller_doc, + "caller [EXPR]", + 0 +}; + +#endif /* LOADABLE_BUILTIN */ diff --git a/bash-20060316/builtins/cd.def b/bash-20060316/builtins/cd.def new file mode 100644 index 000000000..025e4f5e1 --- /dev/null +++ b/bash-20060316/builtins/cd.def @@ -0,0 +1,525 @@ +This file is cd.def, from which is created cd.c. It implements the +builtins "cd" and "pwd" in Bash. + +Copyright (C) 1987-2005 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES cd.c +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include "../bashtypes.h" +#include "posixdir.h" +#include "posixstat.h" +#ifndef _MINIX +#include +#endif + +#include + +#include "../bashansi.h" +#include "../bashintl.h" + +#include +#include + +#include "../shell.h" +#include "../flags.h" +#include "maxpath.h" +#include "common.h" +#include "bashgetopt.h" + +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +extern int posixly_correct; +extern int array_needs_making; +extern char *bash_getcwd_errstr; + +static int bindpwd __P((int)); +static void setpwd __P((char *)); +static int change_to_directory __P((char *, int)); + +static char *cdspell __P((char *)); + +/* Change this to 1 to get cd spelling correction by default. */ +int cdspelling = 0; + +int cdable_vars; + +$BUILTIN cd +$FUNCTION cd_builtin +$SHORT_DOC cd [-L|-P] [dir] +Change the current directory to DIR. The variable $HOME is the +default DIR. The variable CDPATH defines the search path for +the directory containing DIR. Alternative directory names in CDPATH +are separated by a colon (:). A null directory name is the same as +the current directory, i.e. `.'. If DIR begins with a slash (/), +then CDPATH is not used. If the directory is not found, and the +shell option `cdable_vars' is set, then try the word as a variable +name. If that variable has a value, then cd to the value of that +variable. The -P option says to use the physical directory structure +instead of following symbolic links; the -L option forces symbolic links +to be followed. +$END + +/* Just set $PWD, don't change OLDPWD. Used by `pwd -P' in posix mode. */ +static void +setpwd (dirname) + char *dirname; +{ + int old_anm; + SHELL_VAR *tvar; + + old_anm = array_needs_making; + tvar = bind_variable ("PWD", dirname ? dirname : "", 0); + if (old_anm == 0 && array_needs_making && exported_p (tvar)) + { + update_export_env_inplace ("PWD=", 4, dirname ? dirname : ""); + array_needs_making = 0; + } +} + +static int +bindpwd (no_symlinks) + int no_symlinks; +{ + char *dirname, *pwdvar; + int old_anm; + SHELL_VAR *tvar; + +#define tcwd the_current_working_directory + dirname = tcwd ? (no_symlinks ? sh_physpath (tcwd, 0) : tcwd) + : get_working_directory ("cd"); +#undef tcwd + + old_anm = array_needs_making; + pwdvar = get_string_value ("PWD"); + + tvar = bind_variable ("OLDPWD", pwdvar, 0); + if (old_anm == 0 && array_needs_making && exported_p (tvar)) + { + update_export_env_inplace ("OLDPWD=", 7, pwdvar); + array_needs_making = 0; + } + + setpwd (dirname); + + if (dirname && dirname != the_current_working_directory) + free (dirname); + + return (EXECUTION_SUCCESS); +} + +/* Call get_working_directory to reset the value of + the_current_working_directory () */ +static char * +resetpwd (caller) + char *caller; +{ + char *tdir; + + FREE (the_current_working_directory); + the_current_working_directory = (char *)NULL; + tdir = get_working_directory (caller); + return (tdir); +} + +#define LCD_DOVARS 0x001 +#define LCD_DOSPELL 0x002 +#define LCD_PRINTPATH 0x004 +#define LCD_FREEDIRNAME 0x010 + +/* This builtin is ultimately the way that all user-visible commands should + change the current working directory. It is called by cd_to_string (), + so the programming interface is simple, and it handles errors and + restrictions properly. */ +int +cd_builtin (list) + WORD_LIST *list; +{ + char *dirname, *cdpath, *path, *temp; + int path_index, no_symlinks, opt, lflag; + +#if defined (RESTRICTED_SHELL) + if (restricted) + { + sh_restricted ((char *)NULL); + return (EXECUTION_FAILURE); + } +#endif /* RESTRICTED_SHELL */ + + no_symlinks = no_symbolic_links; + reset_internal_getopt (); + while ((opt = internal_getopt (list, "LP")) != -1) + { + switch (opt) + { + case 'P': + no_symlinks = 1; + break; + case 'L': + no_symlinks = 0; + break; + default: + builtin_usage (); + return (EXECUTION_FAILURE); + } + } + list = loptend; + + lflag = (cdable_vars ? LCD_DOVARS : 0) | + ((interactive && cdspelling) ? LCD_DOSPELL : 0); + + if (list == 0) + { + /* `cd' without arguments is equivalent to `cd $HOME' */ + dirname = get_string_value ("HOME"); + + if (dirname == 0) + { + builtin_error (_("HOME not set")); + return (EXECUTION_FAILURE); + } + lflag = 0; + } + else if (list->word->word[0] == '-' && list->word->word[1] == '\0') + { + /* This is `cd -', equivalent to `cd $OLDPWD' */ + dirname = get_string_value ("OLDPWD"); + + if (dirname == 0) + { + builtin_error (_("OLDPWD not set")); + return (EXECUTION_FAILURE); + } +#if 0 + lflag = interactive ? LCD_PRINTPATH : 0; +#else + lflag = LCD_PRINTPATH; /* According to SUSv3 */ +#endif + } + else if (absolute_pathname (list->word->word)) + dirname = list->word->word; + else if (cdpath = get_string_value ("CDPATH")) + { + dirname = list->word->word; + + /* Find directory in $CDPATH. */ + path_index = 0; + while (path = extract_colon_unit (cdpath, &path_index)) + { + /* OPT is 1 if the path element is non-empty */ + opt = path[0] != '\0'; + temp = sh_makepath (path, dirname, MP_DOTILDE); + free (path); + + if (change_to_directory (temp, no_symlinks)) + { + /* POSIX.2 says that if a nonempty directory from CDPATH + is used to find the directory to change to, the new + directory name is echoed to stdout, whether or not + the shell is interactive. */ + if (opt && (path = no_symlinks ? temp : the_current_working_directory)) + printf ("%s\n", path); + + free (temp); +#if 0 + /* Posix.2 says that after using CDPATH, the resultant + value of $PWD will not contain `.' or `..'. */ + return (bindpwd (posixly_correct || no_symlinks)); +#else + return (bindpwd (no_symlinks)); +#endif + } + else + free (temp); + } + + /* 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] + is so we don't mistakenly treat a CDPATH value of "" as not + specifying the current directory. */ + if (posixly_correct && cdpath[0]) + { + builtin_error ("%s: %s", dirname, strerror (ENOENT)); + return (EXECUTION_FAILURE); + } + } + else + dirname = list->word->word; + + /* 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 (lflag & LCD_PRINTPATH) + printf ("%s\n", dirname); + return (bindpwd (no_symlinks)); + } + + /* If the user requests it, then perhaps this is the name of + a shell variable, whose value contains the directory to + change to. */ + if (lflag & LCD_DOVARS) + { + temp = get_string_value (dirname); + if (temp && change_to_directory (temp, no_symlinks)) + { + printf ("%s\n", temp); + return (bindpwd (no_symlinks)); + } + } + + /* If the user requests it, try to find a directory name similar in + spelling to the one requested, in case the user made a simple + typo. This is similar to the UNIX 8th and 9th Edition shells. */ + if (lflag & LCD_DOSPELL) + { + temp = cdspell (dirname); + if (temp && change_to_directory (temp, no_symlinks)) + { + printf ("%s\n", temp); + return (bindpwd (no_symlinks)); + } + else + FREE (temp); + } + + builtin_error ("%s: %s", dirname, strerror (errno)); + return (EXECUTION_FAILURE); +} + +$BUILTIN pwd +$FUNCTION pwd_builtin +$SHORT_DOC pwd [-LP] +Print the current working directory. With the -P option, pwd prints +the physical directory, without any symbolic links; the -L option +makes pwd follow symbolic links. +$END + +/* Non-zero means that pwd always prints the physical directory, without + symbolic links. */ +static int verbatim_pwd; + +/* Print the name of the current working directory. */ +int +pwd_builtin (list) + WORD_LIST *list; +{ + char *directory; + int opt, pflag; + + verbatim_pwd = no_symbolic_links; + pflag = 0; + reset_internal_getopt (); + while ((opt = internal_getopt (list, "LP")) != -1) + { + switch (opt) + { + case 'P': + verbatim_pwd = pflag = 1; + break; + case 'L': + verbatim_pwd = 0; + break; + default: + builtin_usage (); + return (EXECUTION_FAILURE); + } + } + list = loptend; + +#define tcwd the_current_working_directory + + directory = tcwd ? (verbatim_pwd ? sh_physpath (tcwd, 0) : tcwd) + : get_working_directory ("pwd"); + + /* Try again using getcwd() if canonicalization fails (for instance, if + 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"); + +#undef tcwd + + if (directory) + { + printf ("%s\n", directory); + /* This is dumb but posix-mandated. */ + if (posixly_correct && pflag) + setpwd (directory); + if (directory != the_current_working_directory) + free (directory); + fflush (stdout); + if (ferror (stdout)) + { + sh_wrerror (); + clearerr (stdout); + return (EXECUTION_FAILURE); + } + + return (EXECUTION_SUCCESS); + } + else + return (EXECUTION_FAILURE); +} + +/* Do the work of changing to the directory NEWDIR. Handle symbolic + link following, etc. This function *must* return with + the_current_working_directory either set to NULL (in which case + getcwd() will eventually be called), or set to a string corresponding + to the working directory. Return 1 on success, 0 on failure. */ + +static int +change_to_directory (newdir, nolinks) + char *newdir; + int nolinks; +{ + char *t, *tdir; + int err, canon_failed, r, ndlen, dlen; + + tdir = (char *)NULL; + + if (the_current_working_directory == 0) + { + t = get_working_directory ("chdir"); + FREE (t); + } + + t = make_absolute (newdir, the_current_working_directory); + + /* TDIR is either the canonicalized absolute pathname of NEWDIR + (nolinks == 0) or the absolute physical pathname of NEWDIR + (nolinks != 0). */ + tdir = nolinks ? sh_physpath (t, 0) + : sh_canonpath (t, PATH_CHECKDOTDOT|PATH_CHECKEXISTS); + + ndlen = strlen (newdir); + dlen = strlen (t); + + /* Use the canonicalized version of NEWDIR, or, if canonicalization + failed, use the non-canonical form. */ + canon_failed = 0; + if (tdir && *tdir) + free (t); + else + { + FREE (tdir); + tdir = t; + canon_failed = 1; + } + + /* In POSIX mode, if we're resolving symlinks logically and sh_canonpath + returns NULL (because it checks the path, it will return NULL if the + resolved path doesn't exist), fail immediately. */ + if (posixly_correct && nolinks == 0 && canon_failed && (errno != ENAMETOOLONG || ndlen > PATH_MAX)) + { +#if defined ENAMETOOLONG + if (errno != ENOENT && errno != ENAMETOOLONG) +#else + if (errno != ENOENT) +#endif + errno = ENOTDIR; + free (tdir); + return (0); + } + + /* If the chdir succeeds, update the_current_working_directory. */ + if (chdir (nolinks ? newdir : tdir) == 0) + { + /* If canonicalization failed, but the chdir succeeded, reset the + shell's idea of the_current_working_directory. */ + if (canon_failed) + { + t = resetpwd ("cd"); + if (t == 0) + set_working_directory (tdir); + } + else + set_working_directory (tdir); + + free (tdir); + return (1); + } + + /* We failed to change to the appropriate directory name. If we tried + what the user passed (nolinks != 0), punt now. */ + if (nolinks) + { + free (tdir); + return (0); + } + + err = errno; + + /* We're not in physical mode (nolinks == 0), but we failed to change to + the canonicalized directory name (TDIR). Try what the user passed + verbatim. If we succeed, reinitialize the_current_working_directory. */ + if (chdir (newdir) == 0) + { + t = resetpwd ("cd"); + if (t == 0) + set_working_directory (tdir); + else + free (t); + + r = 1; + } + else + { + errno = err; + r = 0; + } + + free (tdir); + return r; +} + +/* Code for cd spelling correction. Original patch submitted by + Neil Russel (caret@c-side.com). */ + +static char * +cdspell (dirname) + char *dirname; +{ + int n; + char *guess; + + n = (strlen (dirname) * 3 + 1) / 2 + 1; + guess = (char *)xmalloc (n); + + switch (spname (dirname, guess)) + { + case -1: + default: + free (guess); + return (char *)NULL; + case 0: + case 1: + return guess; + } +} diff --git a/bash-20060316/builtins/colon.def b/bash-20060316/builtins/colon.def new file mode 100644 index 000000000..a7cdc1250 --- /dev/null +++ b/bash-20060316/builtins/colon.def @@ -0,0 +1,57 @@ +This file is colon.def, from which is created colon.c. +It implements the builtin ":" in Bash. + +Copyright (C) 1987-2002 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES colon.c + +$BUILTIN : +$DOCNAME colon +$FUNCTION colon_builtin +$SHORT_DOC : +No effect; the command does nothing. A zero exit code is returned. +$END + +$BUILTIN true +$FUNCTION colon_builtin +$SHORT_DOC true +Return a successful result. +$END + +$BUILTIN false +$FUNCTION false_builtin +$SHORT_DOC false +Return an unsuccessful result. +$END + +/* Return a successful result. */ +int +colon_builtin (ignore) + char *ignore; +{ + return (0); +} + +/* Return an unsuccessful result. */ +int +false_builtin (ignore) + char *ignore; +{ + return (1); +} diff --git a/bash-20060316/builtins/command.def b/bash-20060316/builtins/command.def new file mode 100644 index 000000000..dbc1e9a14 --- /dev/null +++ b/bash-20060316/builtins/command.def @@ -0,0 +1,207 @@ +This file is command.def, from which is created command.c. +It implements the builtin "command" in Bash. + +Copyright (C) 1987-2004 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES command.c + +$BUILTIN command +$FUNCTION command_builtin +$SHORT_DOC command [-pVv] command [arg ...] +Runs COMMAND with ARGS ignoring shell functions. If you have a shell +function called `ls', and you wish to call the command `ls', you can +say "command ls". If the -p option is given, a default value is used +for PATH that is guaranteed to find all of the standard utilities. If +the -V or -v option is given, a string is printed describing COMMAND. +The -V option produces a more verbose description. +$END + +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include "../bashansi.h" + +#include "../shell.h" +#include "../execute_cmd.h" +#include "../flags.h" +#include "bashgetopt.h" +#include "common.h" + +#if defined (_CS_PATH) && defined (HAVE_CONFSTR) && !HAVE_DECL_CONFSTR +extern size_t confstr __P((int, char *, size_t)); +#endif + +extern int subshell_environment; + +static void restore_path __P((char *)); +static char *get_standard_path __P((void)); + +/* Run the commands mentioned in LIST without paying attention to shell + functions. */ +int +command_builtin (list) + WORD_LIST *list; +{ + int result, verbose, use_standard_path, opt; + char *old_path, *standard_path; + COMMAND *command; + + verbose = use_standard_path = 0; + reset_internal_getopt (); + while ((opt = internal_getopt (list, "pvV")) != -1) + { + switch (opt) + { + case 'p': + use_standard_path = 1; + break; + case 'V': + verbose = CDESC_SHORTDESC|CDESC_ABSPATH; /* look in common.h for constants */ + break; + case 'v': + verbose = CDESC_REUSABLE; /* ditto */ + break; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + if (list == 0) + return (EXECUTION_SUCCESS); + + if (verbose) + { + int found, any_found; + + for (any_found = 0; list; list = list->next) + { + found = describe_command (list->word->word, verbose); + + if (found == 0 && verbose != CDESC_REUSABLE) + sh_notfound (list->word->word); + + any_found += found; + } + return (any_found ? EXECUTION_SUCCESS : EXECUTION_FAILURE); + } + +#if defined (RESTRICTED_SHELL) + if (use_standard_path && restricted) + { + sh_restricted ("-p"); + return (EXECUTION_FAILURE); + } +#endif + + begin_unwind_frame ("command_builtin"); + + /* We don't want this to be reparsed (consider command echo 'foo &'), so + just make a simple_command structure and call execute_command with it. */ + if (use_standard_path) + { + old_path = get_string_value ("PATH"); + /* If old_path is NULL, $PATH is unset. If so, we want to make sure + it's unset after this command completes. */ + if (old_path) + old_path = savestring (old_path); + add_unwind_protect ((Function *)restore_path, old_path); + + standard_path = get_standard_path (); + bind_variable ("PATH", standard_path ? standard_path : "", 0); + FREE (standard_path); + } + +#define COMMAND_BUILTIN_FLAGS (CMD_NO_FUNCTIONS | CMD_INHIBIT_EXPANSION | CMD_COMMAND_BUILTIN) + + command = make_bare_simple_command (); + command->value.Simple->words = (WORD_LIST *)copy_word_list (list); + command->value.Simple->redirects = (REDIRECT *)NULL; + command->flags |= COMMAND_BUILTIN_FLAGS; + command->value.Simple->flags |= COMMAND_BUILTIN_FLAGS; +#if 0 + /* This breaks for things like ( cd /tmp ; command z ababa ; echo next ) + or $(command echo a ; command echo b;) or even + { command echo a; command echo b; } & */ + /* If we're in a subshell, see if we can get away without forking + again, since we've already forked to run this builtin. */ + if (subshell_environment) + { + command->flags |= CMD_NO_FORK; + command->value.Simple->flags |= CMD_NO_FORK; + } +#endif + add_unwind_protect ((char *)dispose_command, command); + result = execute_command (command); + + run_unwind_frame ("command_builtin"); + + return (result); +} + +/* Restore the value of the $PATH variable after replacing it when + executing `command -p'. */ +static void +restore_path (var) + char *var; +{ + if (var) + { + bind_variable ("PATH", var, 0); + free (var); + } + else + unbind_variable ("PATH"); +} + +/* Return a value for PATH that is guaranteed to find all of the standard + utilities. This uses Posix.2 configuration variables, if present. It + uses a value defined in config.h as a last resort. */ +static char * +get_standard_path () +{ +#if defined (_CS_PATH) && defined (HAVE_CONFSTR) + char *p; + size_t len; + + len = (size_t)confstr (_CS_PATH, (char *)NULL, (size_t)0); + if (len > 0) + { + p = (char *)xmalloc (len + 2); + *p = '\0'; + confstr (_CS_PATH, p, len); + return (p); + } + else + return (savestring (STANDARD_UTILS_PATH)); +#else /* !_CS_PATH || !HAVE_CONFSTR */ +# if defined (CS_PATH) + return (savestring (CS_PATH)); +# else + return (savestring (STANDARD_UTILS_PATH)); +# endif /* !CS_PATH */ +#endif /* !_CS_PATH || !HAVE_CONFSTR */ +} diff --git a/bash-20060316/builtins/common.c b/bash-20060316/builtins/common.c new file mode 100644 index 000000000..9d8f09ab4 --- /dev/null +++ b/bash-20060316/builtins/common.c @@ -0,0 +1,811 @@ +/* Copyright (C) 1987-2005 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include +#include +#include "../bashtypes.h" +#include "posixstat.h" +#include + +#include + +#if defined (PREFER_STDARG) +# include +#else +# include +#endif + +#include "../bashansi.h" +#include "../bashintl.h" + +#include "../shell.h" +#include "maxpath.h" +#include "../flags.h" +#include "../jobs.h" +#include "../builtins.h" +#include "../input.h" +#include "../execute_cmd.h" +#include "../trap.h" +#include "bashgetopt.h" +#include "common.h" +#include "builtext.h" +#include + +#if defined (HISTORY) +# include "../bashhist.h" +#endif + +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +extern int indirection_level, subshell_environment; +extern int line_number; +extern int last_command_exit_value; +extern int running_trap; +extern int posixly_correct; +extern char *this_command_name, *shell_name; +extern char *bash_getcwd_errstr; + +/* Used by some builtins and the mainline code. */ +sh_builtin_func_t *last_shell_builtin = (sh_builtin_func_t *)NULL; +sh_builtin_func_t *this_shell_builtin = (sh_builtin_func_t *)NULL; + +/* **************************************************************** */ +/* */ +/* Error reporting, usage, and option processing */ +/* */ +/* **************************************************************** */ + +/* This is a lot like report_error (), but it is for shell builtins + instead of shell control structures, and it won't ever exit the + shell. */ +void +#if defined (PREFER_STDARG) +builtin_error (const char *format, ...) +#else +builtin_error (format, va_alist) + const char *format; + va_dcl +#endif +{ + va_list args; + char *name; + + name = get_name_for_error (); + fprintf (stderr, "%s: ", name); + + if (interactive_shell == 0) + fprintf (stderr, "line %d: ", executing_line_number ()); + + if (this_command_name && *this_command_name) + fprintf (stderr, "%s: ", this_command_name); + + SH_VA_START (args, format); + + vfprintf (stderr, format, args); + va_end (args); + fprintf (stderr, "\n"); +} + +/* Print a usage summary for the currently-executing builtin command. */ +void +builtin_usage () +{ + if (this_command_name && *this_command_name) + fprintf (stderr, "%s: usage: ", this_command_name); + fprintf (stderr, "%s\n", current_builtin->short_doc); + fflush (stderr); +} + +/* Return if LIST is NULL else barf and jump to top_level. Used by some + builtins that do not accept arguments. */ +void +no_args (list) + WORD_LIST *list; +{ + if (list) + { + builtin_error (_("too many arguments")); + jump_to_top_level (DISCARD); + } +} + +/* Check that no options were given to the currently-executing builtin, + and return 0 if there were options. */ +int +no_options (list) + WORD_LIST *list; +{ + reset_internal_getopt (); + if (internal_getopt (list, "") != -1) + { + builtin_usage (); + return (1); + } + return (0); +} + +void +sh_needarg (s) + char *s; +{ + builtin_error (_("%s: option requires an argument"), s); +} + +void +sh_neednumarg (s) + char *s; +{ + builtin_error (_("%s: numeric argument required"), s); +} + +void +sh_notfound (s) + char *s; +{ + builtin_error (_("%s: not found"), s); +} + +/* Function called when one of the builtin commands detects an invalid + option. */ +void +sh_invalidopt (s) + char *s; +{ + builtin_error (_("%s: invalid option"), s); +} + +void +sh_invalidoptname (s) + char *s; +{ + builtin_error (_("%s: invalid option name"), s); +} + +void +sh_invalidid (s) + char *s; +{ + builtin_error (_("`%s': not a valid identifier"), s); +} + +void +sh_invalidnum (s) + char *s; +{ + builtin_error (_("%s: invalid number"), s); +} + +void +sh_invalidsig (s) + char *s; +{ + builtin_error (_("%s: invalid signal specification"), s); +} + +void +sh_badpid (s) + char *s; +{ + builtin_error (_("`%s': not a pid or valid job spec"), s); +} + +void +sh_readonly (s) + const char *s; +{ + builtin_error (_("%s: readonly variable"), s); +} + +void +sh_erange (s, desc) + char *s, *desc; +{ + if (s) + builtin_error (_("%s: %s out of range"), s, desc ? desc : _("argument")); + else + builtin_error (_("%s out of range"), desc ? desc : _("argument")); +} + +#if defined (JOB_CONTROL) +void +sh_badjob (s) + char *s; +{ + builtin_error (_("%s: no such job"), s); +} + +void +sh_nojobs (s) + char *s; +{ + if (s) + builtin_error (_("%s: no job control"), s); + else + builtin_error (_("no job control")); +} +#endif + +#if defined (RESTRICTED_SHELL) +void +sh_restricted (s) + char *s; +{ + if (s) + builtin_error (_("%s: restricted"), s); + else + builtin_error (_("restricted")); +} +#endif + +void +sh_notbuiltin (s) + char *s; +{ + builtin_error (_("%s: not a shell builtin"), s); +} + +void +sh_wrerror () +{ + builtin_error (_("write error: %s"), strerror (errno)); +} + +/* **************************************************************** */ +/* */ +/* Shell positional parameter manipulation */ +/* */ +/* **************************************************************** */ + +/* Convert a WORD_LIST into a C-style argv. Return the number of elements + in the list in *IP, if IP is non-null. A convenience function for + loadable builtins; also used by `test'. */ +char ** +make_builtin_argv (list, ip) + WORD_LIST *list; + int *ip; +{ + char **argv; + + argv = strvec_from_word_list (list, 0, 1, ip); + argv[0] = this_command_name; + return argv; +} + +/* Remember LIST in $0 ... $9, and REST_OF_ARGS. If DESTRUCTIVE is + non-zero, then discard whatever the existing arguments are, else + only discard the ones that are to be replaced. */ +void +remember_args (list, destructive) + WORD_LIST *list; + int destructive; +{ + register int i; + + for (i = 1; i < 10; i++) + { + if ((destructive || list) && dollar_vars[i]) + { + free (dollar_vars[i]); + dollar_vars[i] = (char *)NULL; + } + + if (list) + { + dollar_vars[i] = savestring (list->word->word); + list = list->next; + } + } + + /* If arguments remain, assign them to REST_OF_ARGS. + Note that copy_word_list (NULL) returns NULL, and + that dispose_words (NULL) does nothing. */ + if (destructive || list) + { + dispose_words (rest_of_args); + rest_of_args = copy_word_list (list); + } + + if (destructive) + set_dollar_vars_changed (); +} + +static int changed_dollar_vars; + +/* Have the dollar variables been reset to new values since we last + checked? */ +int +dollar_vars_changed () +{ + return (changed_dollar_vars); +} + +void +set_dollar_vars_unchanged () +{ + changed_dollar_vars = 0; +} + +void +set_dollar_vars_changed () +{ + if (variable_context) + changed_dollar_vars |= ARGS_FUNC; + else if (this_shell_builtin == set_builtin) + changed_dollar_vars |= ARGS_SETBLTIN; + else + changed_dollar_vars |= ARGS_INVOC; +} + +/* **************************************************************** */ +/* */ +/* Validating numeric input and arguments */ +/* */ +/* **************************************************************** */ + +/* Read a numeric arg for this_command_name, the name of the shell builtin + that wants it. LIST is the word list that the arg is to come from. + Accept only the numeric argument; report an error if other arguments + follow. If FATAL is true, call throw_to_top_level, which exits the + shell; if not, call jump_to_top_level (DISCARD), which aborts the + current command. */ +intmax_t +get_numeric_arg (list, fatal) + WORD_LIST *list; + int fatal; +{ + intmax_t count = 1; + + if (list && list->word && ISOPTION (list->word->word, '-')) + list = list->next; + + if (list) + { + register char *arg; + + arg = list->word->word; + if (arg == 0 || (legal_number (arg, &count) == 0)) + { + sh_neednumarg (list->word->word); + if (fatal) + throw_to_top_level (); + else + jump_to_top_level (DISCARD); + } + no_args (list->next); + } + + return (count); +} + +/* Get an eight-bit status value from LIST */ +int +get_exitstat (list) + WORD_LIST *list; +{ + int status; + intmax_t sval; + char *arg; + + if (list && list->word && ISOPTION (list->word->word, '-')) + list = list->next; + + if (list == 0) + return (last_command_exit_value); + + arg = list->word->word; + if (arg == 0 || legal_number (arg, &sval) == 0) + { + sh_neednumarg (list->word->word ? list->word->word : "`'"); + return 255; + } + no_args (list->next); + + status = sval & 255; + return status; +} + +/* Return the octal number parsed from STRING, or -1 to indicate + that the string contained a bad number. */ +int +read_octal (string) + char *string; +{ + int result, digits; + + result = digits = 0; + while (*string && ISOCTAL (*string)) + { + digits++; + result = (result * 8) + (*string++ - '0'); + if (result > 0777) + return -1; + } + + if (digits == 0 || *string) + result = -1; + + return (result); +} + +/* **************************************************************** */ +/* */ +/* Manipulating the current working directory */ +/* */ +/* **************************************************************** */ + +/* Return a consed string which is the current working directory. + FOR_WHOM is the name of the caller for error printing. */ +char *the_current_working_directory = (char *)NULL; + +char * +get_working_directory (for_whom) + char *for_whom; +{ + char *directory; + size_t dsize; + + if (no_symbolic_links) + { + FREE (the_current_working_directory); + the_current_working_directory = (char *)NULL; + } + + if (the_current_working_directory == 0) + { + the_current_working_directory = getcwd (0, 0); + if (the_current_working_directory == 0) + { + fprintf (stderr, _("%s: error retrieving current directory: %s: %s\n"), + (for_whom && *for_whom) ? for_whom : get_name_for_error (), + _(bash_getcwd_errstr), strerror (errno)); + return (char *)NULL; + } + } + + return (savestring (the_current_working_directory)); +} + +/* Make NAME our internal idea of the current working directory. */ +void +set_working_directory (name) + char *name; +{ + FREE (the_current_working_directory); + the_current_working_directory = savestring (name); +} + +/* **************************************************************** */ +/* */ +/* Job control support functions */ +/* */ +/* **************************************************************** */ + +#if defined (JOB_CONTROL) +int +get_job_by_name (name, flags) + const char *name; + int flags; +{ + register int i, wl, cl, match, job; + register PROCESS *p; + register JOB *j; + + job = NO_JOB; + wl = strlen (name); + for (i = js.j_jobslots - 1; i >= 0; i--) + { + j = get_job_by_jid (i); + if (j == 0 || ((flags & JM_STOPPED) && J_JOBSTATE(j) != JSTOPPED)) + continue; + + p = j->pipe; + do + { + if (flags & JM_EXACT) + { + cl = strlen (p->command); + match = STREQN (p->command, name, cl); + } + else if (flags & JM_SUBSTRING) + match = strindex (p->command, name) != (char *)0; + else + match = STREQN (p->command, name, wl); + + if (match == 0) + { + p = p->next; + continue; + } + else if (flags & JM_FIRSTMATCH) + return i; /* return first match */ + else if (job != NO_JOB) + { + if (this_shell_builtin) + builtin_error (_("%s: ambiguous job spec"), name); + else + report_error (_("%s: ambiguous job spec"), name); + return (DUP_JOB); + } + else + job = i; + } + while (p != j->pipe); + } + + return (job); +} + +/* Return the job spec found in LIST. */ +int +get_job_spec (list) + WORD_LIST *list; +{ + register char *word; + int job, jflags; + + if (list == 0) + return (js.j_current); + + word = list->word->word; + + if (*word == '\0') + return (NO_JOB); + + if (*word == '%') + word++; + + if (DIGIT (*word) && all_digits (word)) + { + job = atoi (word); + return (job > js.j_jobslots ? NO_JOB : job - 1); + } + + jflags = 0; + switch (*word) + { + case 0: + case '%': + case '+': + return (js.j_current); + + case '-': + return (js.j_previous); + + case '?': /* Substring search requested. */ + jflags |= JM_SUBSTRING; + word++; + /* FALLTHROUGH */ + + default: + return get_job_by_name (word, jflags); + } +} +#endif /* JOB_CONTROL */ + +/* + * NOTE: `kill' calls this function with forcecols == 0 + */ +int +display_signal_list (list, forcecols) + WORD_LIST *list; + int forcecols; +{ + register int i, column; + char *name; + int result, signum, dflags; + intmax_t lsignum; + + result = EXECUTION_SUCCESS; + if (!list) + { + for (i = 1, column = 0; i < NSIG; i++) + { + name = signal_name (i); + if (STREQN (name, "SIGJUNK", 7) || STREQN (name, "Unknown", 7)) + continue; + + if (posixly_correct && !forcecols) + { + /* This is for the kill builtin. POSIX.2 says the signal names + are displayed without the `SIG' prefix. */ + if (STREQN (name, "SIG", 3)) + name += 3; + printf ("%s%s", name, (i == NSIG - 1) ? "" : " "); + } + else + { + printf ("%2d) %s", i, name); + + if (++column < 4) + printf ("\t"); + else + { + printf ("\n"); + column = 0; + } + } + } + + if ((posixly_correct && !forcecols) || column != 0) + printf ("\n"); + return result; + } + + /* List individual signal names or numbers. */ + while (list) + { + if (legal_number (list->word->word, &lsignum)) + { + /* This is specified by Posix.2 so that exit statuses can be + mapped into signal numbers. */ + if (lsignum > 128) + lsignum -= 128; + if (lsignum < 0 || lsignum >= NSIG) + { + sh_invalidsig (list->word->word); + result = EXECUTION_FAILURE; + list = list->next; + continue; + } + + signum = lsignum; + name = signal_name (signum); + if (STREQN (name, "SIGJUNK", 7) || STREQN (name, "Unknown", 7)) + { + list = list->next; + continue; + } +#if defined (JOB_CONTROL) + /* POSIX.2 says that `kill -l signum' prints the signal name without + the `SIG' prefix. */ + printf ("%s\n", (this_shell_builtin == kill_builtin) ? name + 3 : name); +#else + printf ("%s\n", name); +#endif + } + else + { + dflags = DSIG_NOCASE; + if (posixly_correct == 0 || this_shell_builtin != kill_builtin) + dflags |= DSIG_SIGPREFIX; + signum = decode_signal (list->word->word, dflags); + if (signum == NO_SIG) + { + sh_invalidsig (list->word->word); + result = EXECUTION_FAILURE; + list = list->next; + continue; + } + printf ("%d\n", signum); + } + list = list->next; + } + return (result); +} + +/* **************************************************************** */ +/* */ +/* Finding builtin commands and their functions */ +/* */ +/* **************************************************************** */ + +/* Perform a binary search and return the address of the builtin function + whose name is NAME. If the function couldn't be found, or the builtin + is disabled or has no function associated with it, return NULL. + Return the address of the builtin. + DISABLED_OKAY means find it even if the builtin is disabled. */ +struct builtin * +builtin_address_internal (name, disabled_okay) + char *name; + int disabled_okay; +{ + int hi, lo, mid, j; + + hi = num_shell_builtins - 1; + lo = 0; + + while (lo <= hi) + { + mid = (lo + hi) / 2; + + j = shell_builtins[mid].name[0] - name[0]; + + if (j == 0) + j = strcmp (shell_builtins[mid].name, name); + + if (j == 0) + { + /* It must have a function pointer. It must be enabled, or we + must have explicitly allowed disabled functions to be found, + and it must not have been deleted. */ + if (shell_builtins[mid].function && + ((shell_builtins[mid].flags & BUILTIN_DELETED) == 0) && + ((shell_builtins[mid].flags & BUILTIN_ENABLED) || disabled_okay)) + return (&shell_builtins[mid]); + else + return ((struct builtin *)NULL); + } + if (j > 0) + hi = mid - 1; + else + lo = mid + 1; + } + return ((struct builtin *)NULL); +} + +/* Return the pointer to the function implementing builtin command NAME. */ +sh_builtin_func_t * +find_shell_builtin (name) + char *name; +{ + current_builtin = builtin_address_internal (name, 0); + return (current_builtin ? current_builtin->function : (sh_builtin_func_t *)NULL); +} + +/* Return the address of builtin with NAME, whether it is enabled or not. */ +sh_builtin_func_t * +builtin_address (name) + char *name; +{ + current_builtin = builtin_address_internal (name, 1); + return (current_builtin ? current_builtin->function : (sh_builtin_func_t *)NULL); +} + +/* Return the function implementing the builtin NAME, but only if it is a + POSIX.2 special builtin. */ +sh_builtin_func_t * +find_special_builtin (name) + char *name; +{ + current_builtin = builtin_address_internal (name, 0); + return ((current_builtin && (current_builtin->flags & SPECIAL_BUILTIN)) ? + current_builtin->function : + (sh_builtin_func_t *)NULL); +} + +static int +shell_builtin_compare (sbp1, sbp2) + struct builtin *sbp1, *sbp2; +{ + int result; + + if ((result = sbp1->name[0] - sbp2->name[0]) == 0) + result = strcmp (sbp1->name, sbp2->name); + + return (result); +} + +/* Sort the table of shell builtins so that the binary search will work + in find_shell_builtin. */ +void +initialize_shell_builtins () +{ + qsort (shell_builtins, num_shell_builtins, sizeof (struct builtin), + (QSFUNC *)shell_builtin_compare); +} diff --git a/bash-20060316/builtins/common.h b/bash-20060316/builtins/common.h new file mode 100644 index 000000000..1233d667a --- /dev/null +++ b/bash-20060316/builtins/common.h @@ -0,0 +1,163 @@ +/* common.h -- extern declarations for functions defined in common.c. */ + +/* Copyright (C) 1993-2004 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#if !defined (__COMMON_H) +# define __COMMON_H + +#include "stdc.h" + +#define ISOPTION(s, c) (s[0] == '-' && !s[2] && s[1] == c) + +/* Flag values for parse_and_execute () */ +#define SEVAL_NONINT 0x001 +#define SEVAL_INTERACT 0x002 +#define SEVAL_NOHIST 0x004 +#define SEVAL_NOFREE 0x008 +#define SEVAL_RESETLINE 0x010 + +/* Flags for describe_command, shared between type.def and command.def */ +#define CDESC_ALL 0x001 /* type -a */ +#define CDESC_SHORTDESC 0x002 /* command -V */ +#define CDESC_REUSABLE 0x004 /* command -v */ +#define CDESC_TYPE 0x008 /* type -t */ +#define CDESC_PATH_ONLY 0x010 /* type -p */ +#define CDESC_FORCE_PATH 0x020 /* type -ap or type -P */ +#define CDESC_NOFUNCS 0x040 /* type -f */ +#define CDESC_ABSPATH 0x080 /* convert to absolute path, no ./ */ + +/* Flags for get_job_by_name */ +#define JM_PREFIX 0x01 /* prefix of job name */ +#define JM_SUBSTRING 0x02 /* substring of job name */ +#define JM_EXACT 0x04 /* match job name exactly */ +#define JM_STOPPED 0x08 /* match stopped jobs only */ +#define JM_FIRSTMATCH 0x10 /* return first matching job */ + +/* Flags for remember_args and value of changed_dollar_vars */ +#define ARGS_NONE 0x0 +#define ARGS_INVOC 0x01 +#define ARGS_FUNC 0x02 +#define ARGS_SETBLTIN 0x04 + +/* Functions from common.c */ +extern void builtin_error __P((const char *, ...)) __attribute__((__format__ (printf, 1, 2))); +extern void builtin_usage __P((void)); +extern void no_args __P((WORD_LIST *)); +extern int no_options __P((WORD_LIST *)); + +/* common error message functions */ +extern void sh_needarg __P((char *)); +extern void sh_neednumarg __P((char *)); +extern void sh_notfound __P((char *)); +extern void sh_invalidopt __P((char *)); +extern void sh_invalidoptname __P((char *)); +extern void sh_invalidid __P((char *)); +extern void sh_invalidnum __P((char *)); +extern void sh_invalidsig __P((char *)); +extern void sh_erange __P((char *, char *)); +extern void sh_badpid __P((char *)); +extern void sh_badjob __P((char *)); +extern void sh_readonly __P((const char *)); +extern void sh_nojobs __P((char *)); +extern void sh_restricted __P((char *)); +extern void sh_notbuiltin __P((char *)); +extern void sh_wrerror __P((void)); + +extern char **make_builtin_argv __P((WORD_LIST *, int *)); +extern void remember_args __P((WORD_LIST *, int)); + +extern int dollar_vars_changed __P((void)); +extern void set_dollar_vars_unchanged __P((void)); +extern void set_dollar_vars_changed __P((void)); + +extern intmax_t get_numeric_arg __P((WORD_LIST *, int)); +extern int get_exitstat __P((WORD_LIST *)); +extern int read_octal __P((char *)); + +/* Keeps track of the current working directory. */ +extern char *the_current_working_directory; +extern char *get_working_directory __P((char *)); +extern void set_working_directory __P((char *)); + +#if defined (JOB_CONTROL) +extern int get_job_by_name __P((const char *, int)); +extern int get_job_spec __P((WORD_LIST *)); +#endif +extern int display_signal_list __P((WORD_LIST *, int)); + +/* It's OK to declare a function as returning a Function * without + providing a definition of what a `Function' is. */ +extern struct builtin *builtin_address_internal __P((char *, int)); +extern sh_builtin_func_t *find_shell_builtin __P((char *)); +extern sh_builtin_func_t *builtin_address __P((char *)); +extern sh_builtin_func_t *find_special_builtin __P((char *)); +extern void initialize_shell_builtins __P((void)); + +/* Functions from exit.def */ +extern void bash_logout __P((void)); + +/* Functions from getopts.def */ +extern void getopts_reset __P((int)); + +/* Functions from set.def */ +extern int minus_o_option_value __P((char *)); +extern void list_minus_o_opts __P((int, int)); +extern char **get_minus_o_opts __P((void)); +extern int set_minus_o_option __P((int, char *)); + +extern void set_shellopts __P((void)); +extern void parse_shellopts __P((char *)); +extern void initialize_shell_options __P((int)); + +extern void reset_shell_options __P((void)); + +/* Functions from shopt.def */ +extern void reset_shopt_options __P((void)); +extern char **get_shopt_options __P((void)); + +extern int shopt_setopt __P((char *, int)); +extern int shopt_listopt __P((char *, int)); + +extern int set_login_shell __P((int)); + +/* Functions from type.def */ +extern int describe_command __P((char *, int)); + +/* Functions from setattr.def */ +extern int set_or_show_attributes __P((WORD_LIST *, int, int)); +extern int show_var_attributes __P((SHELL_VAR *, int, int)); +extern int show_name_attributes __P((char *, int)); +extern void set_var_attribute __P((char *, int, int)); + +/* Functions from pushd.def */ +extern char *get_dirstack_from_string __P((char *)); +extern char *get_dirstack_element __P((intmax_t, int)); +extern void set_dirstack_element __P((intmax_t, int, char *)); +extern WORD_LIST *get_directory_stack __P((int)); + +/* Functions from evalstring.c */ +extern int parse_and_execute __P((char *, const char *, int)); +extern void parse_and_execute_cleanup __P((void)); + +/* Functions from evalfile.c */ +extern int maybe_execute_file __P((const char *, int)); +extern int source_file __P((const char *, int)); +extern int fc_execute_file __P((const char *)); + +#endif /* !__COMMON_H */ diff --git a/bash-20060316/builtins/complete.def b/bash-20060316/builtins/complete.def new file mode 100644 index 000000000..a859b88f0 --- /dev/null +++ b/bash-20060316/builtins/complete.def @@ -0,0 +1,622 @@ +This file is complete.def, from which is created complete.c. +It implements the builtins "complete" and "compgen" in Bash. + +Copyright (C) 1999-2003 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES complete.c + +$BUILTIN complete +$DEPENDS_ON PROGRAMMABLE_COMPLETION +$FUNCTION complete_builtin +$SHORT_DOC complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W wordlist] [-P prefix] [-S suffix] [-X filterpat] [-F function] [-C command] [name ...] +For each NAME, specify how arguments are to be completed. +If the -p 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 -r option removes a completion specification for +each NAME, or, if no NAMEs are supplied, all completion specifications. +$END + +#include + +#include + +#include "../bashtypes.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "../bashansi.h" +#include "../bashintl.h" + +#include "../shell.h" +#include "../builtins.h" +#include "../pcomplete.h" +#include "../bashline.h" + +#include "common.h" +#include "bashgetopt.h" + +#include + +#define STRDUP(x) ((x) ? savestring (x) : (char *)NULL) + +static int find_compact __P((char *)); +static int find_compopt __P((char *)); + +static int build_actions __P((WORD_LIST *, int *, int *, unsigned long *, unsigned long *)); + +static int remove_cmd_completions __P((WORD_LIST *)); + +static int print_one_completion __P((char *, COMPSPEC *)); +static int print_compitem __P((BUCKET_CONTENTS *)); +static void print_all_completions __P((void)); +static int print_cmd_completions __P((WORD_LIST *)); + +static char *Garg, *Warg, *Parg, *Sarg, *Xarg, *Farg, *Carg; + +static struct _compacts { + char *actname; + int actflag; + int actopt; +} compacts[] = { + { "alias", CA_ALIAS, 'a' }, + { "arrayvar", CA_ARRAYVAR, 0 }, + { "binding", CA_BINDING, 0 }, + { "builtin", CA_BUILTIN, 'b' }, + { "command", CA_COMMAND, 'c' }, + { "directory", CA_DIRECTORY, 'd' }, + { "disabled", CA_DISABLED, 0 }, + { "enabled", CA_ENABLED, 0 }, + { "export", CA_EXPORT, 'e' }, + { "file", CA_FILE, 'f' }, + { "function", CA_FUNCTION, 0 }, + { "helptopic", CA_BUILTIN, 0 }, /* for now */ + { "hostname", CA_HOSTNAME, 0 }, + { "group", CA_GROUP, 'g' }, + { "job", CA_JOB, 'j' }, + { "keyword", CA_KEYWORD, 'k' }, + { "running", CA_RUNNING, 0 }, + { "service", CA_SERVICE, 's' }, + { "setopt", CA_SETOPT, 0 }, + { "shopt", CA_SHOPT, 0 }, + { "signal", CA_SIGNAL, 0 }, + { "stopped", CA_STOPPED, 0 }, + { "user", CA_USER, 'u' }, + { "variable", CA_VARIABLE, 'v' }, + { (char *)NULL, 0, 0 }, +}; + +/* This should be a STRING_INT_ALIST */ +static struct _compopt { + char *optname; + int optflag; +} compopts[] = { + { "bashdefault", COPT_BASHDEFAULT }, + { "default", COPT_DEFAULT }, + { "dirnames", COPT_DIRNAMES }, + { "filenames",COPT_FILENAMES}, + { "nospace", COPT_NOSPACE }, + { "plusdirs", COPT_PLUSDIRS }, + { (char *)NULL, 0 }, +}; + +static int +find_compact (name) + char *name; +{ + register int i; + + for (i = 0; compacts[i].actname; i++) + if (STREQ (name, compacts[i].actname)) + return i; + return -1; +} + +static int +find_compopt (name) + char *name; +{ + register int i; + + for (i = 0; compopts[i].optname; i++) + if (STREQ (name, compopts[i].optname)) + return i; + return -1; +} + +/* Build the actions and compspec options from the options specified in LIST. + ACTP is a pointer to an unsigned long in which to place the bitmap of + actions. OPTP is a pointer to an unsigned long in which to place the + btmap of compspec options (arguments to `-o'). PP, if non-null, gets 1 + if -p is supplied; RP, if non-null, gets 1 if -r is supplied. + If either is null, the corresponding option generates an error. + This also sets variables corresponding to options that take arguments as + a side effect; the caller should ensure that those variables are set to + NULL before calling build_actions. Return value: + EX_USAGE = bad option + EXECUTION_SUCCESS = some options supplied + EXECUTION_FAILURE = no options supplied +*/ + +static int +build_actions (list, pp, rp, actp, optp) + WORD_LIST *list; + int *pp, *rp; + unsigned long *actp, *optp; +{ + int opt, ind, opt_given; + unsigned long acts, copts; + + acts = copts = (unsigned long)0L; + opt_given = 0; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "abcdefgjko:prsuvA:G:W:P:S:X:F:C:")) != -1) + { + opt_given = 1; + switch (opt) + { + case 'r': + if (rp) + { + *rp = 1; + break; + } + else + { + sh_invalidopt ("-r"); + builtin_usage (); + return (EX_USAGE); + } + + case 'p': + if (pp) + { + *pp = 1; + break; + } + else + { + sh_invalidopt ("-p"); + builtin_usage (); + return (EX_USAGE); + } + + case 'a': + acts |= CA_ALIAS; + break; + case 'b': + acts |= CA_BUILTIN; + break; + case 'c': + acts |= CA_COMMAND; + break; + case 'd': + acts |= CA_DIRECTORY; + break; + case 'e': + acts |= CA_EXPORT; + break; + case 'f': + acts |= CA_FILE; + break; + case 'g': + acts |= CA_GROUP; + break; + case 'j': + acts |= CA_JOB; + break; + case 'k': + acts |= CA_KEYWORD; + break; + case 's': + acts |= CA_SERVICE; + break; + case 'u': + acts |= CA_USER; + break; + case 'v': + acts |= CA_VARIABLE; + break; + case 'o': + ind = find_compopt (list_optarg); + if (ind < 0) + { + sh_invalidoptname (list_optarg); + return (EX_USAGE); + } + copts |= compopts[ind].optflag; + break; + case 'A': + ind = find_compact (list_optarg); + if (ind < 0) + { + builtin_error (_("%s: invalid action name"), list_optarg); + return (EX_USAGE); + } + acts |= compacts[ind].actflag; + break; + case 'C': + Carg = list_optarg; + break; + case 'F': + Farg = list_optarg; + break; + case 'G': + Garg = list_optarg; + break; + case 'P': + Parg = list_optarg; + break; + case 'S': + Sarg = list_optarg; + break; + case 'W': + Warg = list_optarg; + break; + case 'X': + Xarg = list_optarg; + break; + default: + builtin_usage (); + return (EX_USAGE); + } + } + + *actp = acts; + *optp = copts; + + return (opt_given ? EXECUTION_SUCCESS : EXECUTION_FAILURE); +} + +/* Add, remove, and display completion specifiers. */ +int +complete_builtin (list) + WORD_LIST *list; +{ + int opt_given, pflag, rflag, rval; + unsigned long acts, copts; + COMPSPEC *cs; + + if (list == 0) + { + print_all_completions (); + return (EXECUTION_SUCCESS); + } + + opt_given = pflag = rflag = 0; + acts = copts = (unsigned long)0L; + Garg = Warg = Parg = Sarg = Xarg = Farg = Carg = (char *)NULL; + cs = (COMPSPEC *)NULL; + + /* Build the actions from the arguments. Also sets the [A-Z]arg variables + as a side effect if they are supplied as options. */ + rval = build_actions (list, &pflag, &rflag, &acts, &copts); + if (rval == EX_USAGE) + return (rval); + opt_given = rval != EXECUTION_FAILURE; + + list = loptend; + + /* -p overrides everything else */ + if (pflag || (list == 0 && opt_given == 0)) + { + if (list == 0) + { + print_all_completions (); + return (EXECUTION_SUCCESS); + } + return (print_cmd_completions (list)); + } + + /* next, -r overrides everything else. */ + if (rflag) + { + if (list == 0) + { + progcomp_flush (); + return (EXECUTION_SUCCESS); + } + return (remove_cmd_completions (list)); + } + + if (list == 0 && opt_given) + { + builtin_usage (); + return (EX_USAGE); + } + + /* If we get here, we need to build a compspec and add it for each + remaining argument. */ + cs = compspec_create (); + cs->actions = acts; + cs->options = copts; + + cs->globpat = STRDUP (Garg); + cs->words = STRDUP (Warg); + cs->prefix = STRDUP (Parg); + cs->suffix = STRDUP (Sarg); + cs->funcname = STRDUP (Farg); + cs->command = STRDUP (Carg); + cs->filterpat = STRDUP (Xarg); + + for (rval = EXECUTION_SUCCESS ; list; list = list->next) + { + /* Add CS as the compspec for the specified commands. */ + if (progcomp_insert (list->word->word, cs) == 0) + rval = EXECUTION_FAILURE; + } + + return (rval); +} + +static int +remove_cmd_completions (list) + WORD_LIST *list; +{ + WORD_LIST *l; + int ret; + + for (ret = EXECUTION_SUCCESS, l = list; l; l = l->next) + { + if (progcomp_remove (l->word->word) == 0) + { + builtin_error (_("%s: no completion specification"), l->word->word); + ret = EXECUTION_FAILURE; + } + } + return ret; +} + +#define SQPRINTARG(a, f) \ + do { \ + if (a) \ + { \ + x = sh_single_quote (a); \ + printf ("%s %s ", f, x); \ + free (x); \ + } \ + } while (0) + +#define PRINTARG(a, f) \ + do { \ + if (a) \ + printf ("%s %s ", f, a); \ + } while (0) + +#define PRINTOPT(a, f) \ + do { \ + if (acts & a) \ + printf ("%s ", f); \ + } while (0) + +#define PRINTACT(a, f) \ + do { \ + if (acts & a) \ + printf ("-A %s ", f); \ + } while (0) + +#define PRINTCOMPOPT(a, f) \ + do { \ + if (copts & a) \ + printf ("-o %s ", f); \ + } while (0) + +static int +print_one_completion (cmd, cs) + char *cmd; + COMPSPEC *cs; +{ + unsigned long acts, copts; + char *x; + + printf ("complete "); + + copts = cs->options; + + /* First, print the -o options. */ + PRINTCOMPOPT (COPT_BASHDEFAULT, "bashdefault"); + PRINTCOMPOPT (COPT_DEFAULT, "default"); + PRINTCOMPOPT (COPT_DIRNAMES, "dirnames"); + PRINTCOMPOPT (COPT_FILENAMES, "filenames"); + PRINTCOMPOPT (COPT_NOSPACE, "nospace"); + PRINTCOMPOPT (COPT_PLUSDIRS, "plusdirs"); + + acts = cs->actions; + + /* simple flags next */ + PRINTOPT (CA_ALIAS, "-a"); + PRINTOPT (CA_BUILTIN, "-b"); + PRINTOPT (CA_COMMAND, "-c"); + PRINTOPT (CA_DIRECTORY, "-d"); + PRINTOPT (CA_EXPORT, "-e"); + PRINTOPT (CA_FILE, "-f"); + PRINTOPT (CA_GROUP, "-g"); + PRINTOPT (CA_JOB, "-j"); + PRINTOPT (CA_KEYWORD, "-k"); + PRINTOPT (CA_SERVICE, "-s"); + PRINTOPT (CA_USER, "-u"); + PRINTOPT (CA_VARIABLE, "-v"); + + /* now the rest of the actions */ + PRINTACT (CA_ARRAYVAR, "arrayvar"); + PRINTACT (CA_BINDING, "binding"); + PRINTACT (CA_DISABLED, "disabled"); + PRINTACT (CA_ENABLED, "enabled"); + PRINTACT (CA_FUNCTION, "function"); + PRINTACT (CA_HELPTOPIC, "helptopic"); + PRINTACT (CA_HOSTNAME, "hostname"); + PRINTACT (CA_RUNNING, "running"); + PRINTACT (CA_SETOPT, "setopt"); + PRINTACT (CA_SHOPT, "shopt"); + PRINTACT (CA_SIGNAL, "signal"); + PRINTACT (CA_STOPPED, "stopped"); + + /* now the rest of the arguments */ + + /* arguments that require quoting */ + SQPRINTARG (cs->globpat, "-G"); + SQPRINTARG (cs->words, "-W"); + SQPRINTARG (cs->prefix, "-P"); + SQPRINTARG (cs->suffix, "-S"); + SQPRINTARG (cs->filterpat, "-X"); + + /* simple arguments that don't require quoting */ + PRINTARG (cs->funcname, "-F"); + PRINTARG (cs->command, "-C"); + + printf ("%s\n", cmd); + + return (0); +} + +static int +print_compitem (item) + BUCKET_CONTENTS *item; +{ + COMPSPEC *cs; + char *cmd; + + cmd = item->key; + cs = (COMPSPEC *)item->data; + + return (print_one_completion (cmd, cs)); +} + +static void +print_all_completions () +{ + progcomp_walk (print_compitem); +} + +static int +print_cmd_completions (list) + WORD_LIST *list; +{ + WORD_LIST *l; + COMPSPEC *cs; + int ret; + + for (ret = EXECUTION_SUCCESS, l = list; l; l = l->next) + { + cs = progcomp_search (l->word->word); + if (cs) + print_one_completion (l->word->word, cs); + else + { + builtin_error (_("%s: no completion specification"), l->word->word); + ret = EXECUTION_FAILURE; + } + } + return (ret); +} + +$BUILTIN compgen +$DEPENDS_ON PROGRAMMABLE_COMPLETION +$FUNCTION compgen_builtin +$SHORT_DOC compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-P prefix] [-S suffix] [-X filterpat] [-F function] [-C command] [word] +Display the possible completions depending on the options. Intended +to be used from within a shell function generating possible completions. +If the optional WORD argument is supplied, matches against WORD are +generated. +$END + +int +compgen_builtin (list) + WORD_LIST *list; +{ + int rval; + unsigned long acts, copts; + COMPSPEC *cs; + STRINGLIST *sl; + char *word, **matches; + + if (list == 0) + return (EXECUTION_SUCCESS); + + acts = copts = (unsigned long)0L; + Garg = Warg = Parg = Sarg = Xarg = Farg = Carg = (char *)NULL; + cs = (COMPSPEC *)NULL; + + /* Build the actions from the arguments. Also sets the [A-Z]arg variables + as a side effect if they are supplied as options. */ + rval = build_actions (list, (int *)NULL, (int *)NULL, &acts, &copts); + if (rval == EX_USAGE) + return (rval); + if (rval == EXECUTION_FAILURE) + return (EXECUTION_SUCCESS); + + list = loptend; + + word = (list && list->word) ? list->word->word : ""; + + if (Farg) + builtin_error (_("warning: -F option may not work as you expect")); + if (Carg) + builtin_error (_("warning: -C option may not work as you expect")); + + /* If we get here, we need to build a compspec and evaluate it. */ + cs = compspec_create (); + cs->actions = acts; + cs->options = copts; + cs->refcount = 1; + + cs->globpat = STRDUP (Garg); + cs->words = STRDUP (Warg); + cs->prefix = STRDUP (Parg); + cs->suffix = STRDUP (Sarg); + cs->funcname = STRDUP (Farg); + cs->command = STRDUP (Carg); + cs->filterpat = STRDUP (Xarg); + + rval = EXECUTION_FAILURE; + sl = gen_compspec_completions (cs, "compgen", word, 0, 0); + + /* If the compspec wants the bash default completions, temporarily + turn off programmable completion and call the bash completion code. */ + if ((sl == 0 || sl->list_len == 0) && (copts & COPT_BASHDEFAULT)) + { + matches = bash_default_completion (word, 0, 0, 0, 0); + sl = completions_to_stringlist (matches); + strvec_dispose (matches); + } + + /* This isn't perfect, but it's the best we can do, given what readline + exports from its set of completion utility functions. */ + if ((sl == 0 || sl->list_len == 0) && (copts & COPT_DEFAULT)) + { + matches = rl_completion_matches (word, rl_filename_completion_function); + sl = completions_to_stringlist (matches); + strvec_dispose (matches); + } + + if (sl) + { + if (sl->list && sl->list_len) + { + rval = EXECUTION_SUCCESS; + strlist_print (sl, (char *)NULL); + } + strlist_dispose (sl); + } + + compspec_dispose (cs); + return (rval); +} diff --git a/bash-20060316/builtins/declare.def b/bash-20060316/builtins/declare.def new file mode 100644 index 000000000..4d94face6 --- /dev/null +++ b/bash-20060316/builtins/declare.def @@ -0,0 +1,475 @@ +This file is declare.def, from which is created declare.c. +It implements the builtins "declare" and "local" in Bash. + +Copyright (C) 1987-2004 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES declare.c + +$BUILTIN declare +$FUNCTION declare_builtin +$SHORT_DOC declare [-afFirtx] [-p] [name[=value] ...] +Declare variables and/or give them attributes. If no NAMEs are +given, then display the values of variables instead. The -p option +will display the attributes and values of each NAME. + +The flags are: + + -a to make NAMEs arrays (if supported) + -f to select from among function names only + -F to display function names (and line number and source file name if + debugging) without definitions + -i to make NAMEs have the `integer' attribute + -r to make NAMEs readonly + -t to make NAMEs have the `trace' attribute + -x to make NAMEs export + +Variables with the integer attribute have arithmetic evaluation (see +`let') done when the variable is assigned to. + +When displaying values of variables, -f displays a function's name +and definition. The -F option restricts the display to function +name only. + +Using `+' instead of `-' turns off the given attribute instead. When +used in a function, makes NAMEs local, as with the `local' command. +$END + +$BUILTIN typeset +$FUNCTION declare_builtin +$SHORT_DOC typeset [-afFirtx] [-p] name[=value] ... +Obsolete. See `declare'. +$END + +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include + +#include "../bashansi.h" +#include "../bashintl.h" + +#include "../shell.h" +#include "common.h" +#include "builtext.h" +#include "bashgetopt.h" + +extern int array_needs_making; +extern int posixly_correct; + +static int declare_internal __P((register WORD_LIST *, int)); + +/* Declare or change variable attributes. */ +int +declare_builtin (list) + register WORD_LIST *list; +{ + return (declare_internal (list, 0)); +} + +$BUILTIN local +$FUNCTION local_builtin +$SHORT_DOC local name[=value] ... +Create a local variable called NAME, and give it VALUE. LOCAL +can only be used within a function; it makes the variable NAME +have a visible scope restricted to that function and its children. +$END +int +local_builtin (list) + register WORD_LIST *list; +{ + if (variable_context) + return (declare_internal (list, 1)); + else + { + builtin_error (_("can only be used in a function")); + return (EXECUTION_FAILURE); + } +} + +#if defined (ARRAY_VARS) +# define DECLARE_OPTS "+afiprtxF" +#else +# define DECLARE_OPTS "+fiprtxF" +#endif + +/* The workhorse function. */ +static int +declare_internal (list, local_var) + register WORD_LIST *list; + int local_var; +{ + int flags_on, flags_off, *flags, any_failed, assign_error, pflag, nodefs, opt; + char *t, *subscript_start; + SHELL_VAR *var; + FUNCTION_DEF *shell_fn; + + flags_on = flags_off = any_failed = assign_error = pflag = nodefs = 0; + reset_internal_getopt (); + while ((opt = internal_getopt (list, DECLARE_OPTS)) != EOF) + { + flags = list_opttype == '+' ? &flags_off : &flags_on; + + switch (opt) + { + case 'a': +#if defined (ARRAY_VARS) + *flags |= att_array; +#endif + break; + case 'p': + if (local_var == 0) + pflag++; + break; + case 'F': + nodefs++; + *flags |= att_function; + break; + case 'f': + *flags |= att_function; + break; + case 'i': + *flags |= att_integer; + break; + case 'r': + *flags |= att_readonly; + break; + case 't': + *flags |= att_trace; + break; + case 'x': + *flags |= att_exported; + array_needs_making = 1; + break; + default: + builtin_usage (); + return (EX_USAGE); + } + } + + list = loptend; + + /* If there are no more arguments left, then we just want to show + some variables. */ + if (list == 0) /* declare -[afFirtx] */ + { + /* Show local variables defined at this context level if this is + the `local' builtin. */ + if (local_var) + { + register SHELL_VAR **vlist; + register int i; + + vlist = all_local_variables (); + + if (vlist) + { + for (i = 0; vlist[i]; i++) + print_assignment (vlist[i]); + + free (vlist); + } + } + else + { + if (flags_on == 0) + set_builtin ((WORD_LIST *)NULL); + else + set_or_show_attributes ((WORD_LIST *)NULL, flags_on, nodefs); + } + + fflush (stdout); + return (EXECUTION_SUCCESS); + } + + if (pflag) /* declare -p [-afFirtx] name [name...] */ + { + for (any_failed = 0; list; list = list->next) + { + pflag = show_name_attributes (list->word->word, nodefs); + if (pflag) + { + sh_notfound (list->word->word); + any_failed++; + } + } + return (any_failed ? EXECUTION_FAILURE : EXECUTION_SUCCESS); + } + +#define NEXT_VARIABLE() free (name); list = list->next; continue + + /* There are arguments left, so we are making variables. */ + while (list) /* declare [-afFirx] name [name ...] */ + { + char *value, *name; + int offset, aflags; +#if defined (ARRAY_VARS) + int making_array_special, compound_array_assign, simple_array_assign; +#endif + + name = savestring (list->word->word); + offset = assignment (name, 0); + aflags = 0; + + if (offset) /* declare [-afFirx] name=value */ + { + name[offset] = '\0'; + value = name + offset + 1; + if (name[offset - 1] == '+') + { + aflags |= ASS_APPEND; + name[offset - 1] = '\0'; + } + } + else + value = ""; + +#if defined (ARRAY_VARS) + compound_array_assign = simple_array_assign = 0; + subscript_start = (char *)NULL; + if (t = strchr (name, '[')) /* ] */ + { + subscript_start = t; + *t = '\0'; + making_array_special = 1; + } + else + making_array_special = 0; +#endif + + /* If we're in posix mode or not looking for a shell function (since + shell function names don't have to be valid identifiers when the + shell's not in posix mode), check whether or not the argument is a + valid, well-formed shell identifier. */ + if ((posixly_correct || (flags_on & att_function) == 0) && legal_identifier (name) == 0) + { + sh_invalidid (name); + assign_error++; + NEXT_VARIABLE (); + } + + /* If VARIABLE_CONTEXT has a non-zero value, then we are executing + inside of a function. This means we should make local variables, + not global ones. */ + + /* XXX - this has consequences when we're making a local copy of a + variable that was in the temporary environment. Watch out + for this. */ + if (variable_context && ((flags_on & att_function) == 0)) + { +#if defined (ARRAY_VARS) + if ((flags_on & att_array) || making_array_special) + var = make_local_array_variable (name); + else +#endif + var = make_local_variable (name); + if (var == 0) + { + any_failed++; + NEXT_VARIABLE (); + } + } + else + var = (SHELL_VAR *)NULL; + + /* If we are declaring a function, then complain about it in some way. + We don't let people make functions by saying `typeset -f foo=bar'. */ + + /* There should be a way, however, to let people look at a particular + function definition by saying `typeset -f foo'. */ + + if (flags_on & att_function) + { + if (offset) /* declare -f [-rix] foo=bar */ + { + builtin_error (_("cannot use `-f' to make functions")); + free (name); + return (EXECUTION_FAILURE); + } + else /* declare -f [-rx] name [name...] */ + { + var = find_function (name); + + if (var) + { + if (readonly_p (var) && (flags_off & att_readonly)) + { + builtin_error (_("%s: readonly function"), name); + any_failed++; + NEXT_VARIABLE (); + } + + /* declare -[Ff] name [name...] */ + if (flags_on == att_function && flags_off == 0) + { +#if defined (DEBUGGER) + if (nodefs && debugging_mode) + { + shell_fn = find_function_def (var->name); + if (shell_fn) + printf ("%s %d %s\n", var->name, shell_fn->line, shell_fn->source_file); + else + printf ("%s\n", var->name); + } + else +#endif /* DEBUGGER */ + { + t = nodefs ? var->name + : named_function_string (name, function_cell (var), 1); + printf ("%s\n", t); + } + } + else /* declare -[fF] -[rx] name [name...] */ + { + VSETATTR (var, flags_on); + VUNSETATTR (var, flags_off); + } + } + else + any_failed++; + NEXT_VARIABLE (); + } + } + else /* declare -[airx] name [name...] */ + { + /* Non-null if we just created or fetched a local variable. */ + if (var == 0) + var = find_variable (name); + + if (var == 0) + { +#if defined (ARRAY_VARS) + if ((flags_on & att_array) || making_array_special) + var = make_new_array_variable (name); + else +#endif + var = bind_variable (name, "", 0); + } + + /* Cannot use declare +r to turn off readonly attribute. */ + if (readonly_p (var) && (flags_off & att_readonly)) + { + sh_readonly (name); + any_failed++; + NEXT_VARIABLE (); + } + + /* Cannot use declare to assign value to readonly or noassign + variable. */ + if ((readonly_p (var) || noassign_p (var)) && offset) + { + if (readonly_p (var)) + sh_readonly (name); + assign_error++; + NEXT_VARIABLE (); + } + +#if defined (ARRAY_VARS) + if ((making_array_special || (flags_on & att_array) || array_p (var)) && offset) + { + int vlen; + vlen = STRLEN (value); +#if 0 + if (value[0] == '(' && strchr (value, ')')) +#else + if (value[0] == '(' && value[vlen-1] == ')') +#endif + compound_array_assign = 1; + else + simple_array_assign = 1; + } + + /* Cannot use declare +a name to remove an array variable. */ + if ((flags_off & att_array) && array_p (var)) + { + builtin_error (_("%s: cannot destroy array variables in this way"), name); + any_failed++; + NEXT_VARIABLE (); + } + + /* declare -a name makes name an array variable. */ + if ((making_array_special || (flags_on & att_array)) && array_p (var) == 0) + var = convert_var_to_array (var); +#endif /* ARRAY_VARS */ + + VSETATTR (var, flags_on); + VUNSETATTR (var, flags_off); + +#if defined (ARRAY_VARS) + if (offset && compound_array_assign) + assign_array_var_from_string (var, value, aflags); + else if (simple_array_assign && subscript_start) + { + /* declare [-a] name[N]=value */ + *subscript_start = '['; /* ] */ + var = assign_array_element (name, value, 0); /* XXX - not aflags */ + *subscript_start = '\0'; + } + else if (simple_array_assign) + /* let bind_array_variable take care of this. */ + bind_array_variable (name, 0, value, aflags); + else +#endif + /* bind_variable_value duplicates the essential internals of + bind_variable() */ + if (offset) + bind_variable_value (var, value, aflags); + + /* If we found this variable in the temporary environment, as with + `var=value declare -x var', make sure it is treated identically + to `var=value export var'. Do the same for `declare -r' and + `readonly'. Preserve the attributes, except for att_tempvar. */ + /* XXX -- should this create a variable in the global scope, or + modify the local variable flags? ksh93 has it modify the + global scope. + Need to handle case like in set_var_attribute where a temporary + variable is in the same table as the function local vars. */ + if ((flags_on & (att_exported|att_readonly)) && tempvar_p (var)) + { + SHELL_VAR *tv; + char *tvalue; + + tv = find_tempenv_variable (var->name); + if (tv) + { + tvalue = var_isset (var) ? savestring (value_cell (var)) : savestring (""); + tv = bind_variable (var->name, tvalue, 0); + tv->attributes |= var->attributes & ~att_tempvar; + if (tv->context > 0) + VSETATTR (tv, att_propagate); + free (tvalue); + } + VSETATTR (var, att_propagate); + } + } + + stupidly_hack_special_variables (name); + + NEXT_VARIABLE (); + } + + return (assign_error ? EX_BADASSIGN + : ((any_failed == 0) ? EXECUTION_SUCCESS + : EXECUTION_FAILURE)); +} diff --git a/bash-20060316/builtins/echo.def b/bash-20060316/builtins/echo.def new file mode 100644 index 000000000..6792659a7 --- /dev/null +++ b/bash-20060316/builtins/echo.def @@ -0,0 +1,183 @@ +This file is echo.def, from which is created echo.c. +It implements the builtin "echo" in Bash. + +Copyright (C) 1987-2002 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES echo.c +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "../bashansi.h" + +#include +#include "../shell.h" + +$BUILTIN echo +$FUNCTION echo_builtin +$DEPENDS_ON V9_ECHO +$SHORT_DOC echo [-neE] [arg ...] +Output the ARGs. If -n is specified, the trailing newline is +suppressed. If the -e option is given, interpretation of the +following backslash-escaped characters is turned on: + \a alert (bell) + \b backspace + \c suppress trailing newline + \E escape character + \f form feed + \n new line + \r carriage return + \t horizontal tab + \v vertical tab + \\ backslash + \num the character whose ASCII code is NUM (octal). + +You can explicitly turn off the interpretation of the above characters +with the -E option. +$END + +$BUILTIN echo +$FUNCTION echo_builtin +$DEPENDS_ON !V9_ECHO +$SHORT_DOC echo [-n] [arg ...] +Output the ARGs. If -n is specified, the trailing newline is suppressed. +$END + +#if defined (V9_ECHO) +# define VALID_ECHO_OPTIONS "neE" +#else /* !V9_ECHO */ +# define VALID_ECHO_OPTIONS "n" +#endif /* !V9_ECHO */ + +/* System V machines already have a /bin/sh with a v9 behaviour. We + give Bash the identical behaviour for these machines so that the + existing system shells won't barf. Regrettably, the SUS v2 has + standardized the Sys V echo behavior. This variable is external + so that we can have a `shopt' variable to control it at runtime. */ +#if defined (DEFAULT_ECHO_TO_XPG) || defined (STRICT_POSIX) +int xpg_echo = 1; +#else +int xpg_echo = 0; +#endif /* DEFAULT_ECHO_TO_XPG */ + +extern int posixly_correct; + +/* Print the words in LIST to standard output. If the first word is + `-n', then don't print a trailing newline. We also support the + echo syntax from Version 9 Unix systems. */ +int +echo_builtin (list) + WORD_LIST *list; +{ + int display_return, do_v9, i, len; + char *temp, *s; + + do_v9 = xpg_echo; + display_return = 1; + + if (posixly_correct && xpg_echo) + goto just_echo; + + for (; list && (temp = list->word->word) && *temp == '-'; list = list->next) + { + /* If it appears that we are handling options, then make sure that + all of the options specified are actually valid. Otherwise, the + string should just be echoed. */ + temp++; + + for (i = 0; temp[i]; i++) + { + if (strchr (VALID_ECHO_OPTIONS, temp[i]) == 0) + break; + } + + /* echo - and echo - both mean to just echo the arguments. */ + if (*temp == 0 || temp[i]) + break; + + /* All of the options in TEMP are valid options to ECHO. + Handle them. */ + while (i = *temp++) + { + switch (i) + { + case 'n': + display_return = 0; + break; +#if defined (V9_ECHO) + case 'e': + do_v9 = 1; + break; + case 'E': + do_v9 = 0; + break; +#endif /* V9_ECHO */ + default: + goto just_echo; /* XXX */ + } + } + } + +just_echo: + + clearerr (stdout); /* clear error before writing and testing success */ + + while (list) + { + i = len = 0; + temp = do_v9 ? ansicstr (list->word->word, STRLEN (list->word->word), 1, &i, &len) + : list->word->word; + if (temp) + { + if (do_v9) + { + for (s = temp; len > 0; len--) + putchar (*s++); + } + else + printf ("%s", temp); +#if defined (SunOS5) + fflush (stdout); /* Fix for bug in SunOS 5.5 printf(3) */ +#endif + } + if (do_v9 && temp) + free (temp); + list = list->next; + if (i) + { + display_return = 0; + break; + } + if (list) + putchar(' '); + } + + if (display_return) + putchar ('\n'); + fflush (stdout); + if (ferror (stdout)) + { + sh_wrerror (); + clearerr (stdout); + return (EXECUTION_FAILURE); + } + return (EXECUTION_SUCCESS); +} diff --git a/bash-20060316/builtins/enable.def b/bash-20060316/builtins/enable.def new file mode 100644 index 000000000..823c38f9b --- /dev/null +++ b/bash-20060316/builtins/enable.def @@ -0,0 +1,474 @@ +This file is enable.def, from which is created enable.c. +It implements the builtin "enable" in Bash. + +Copyright (C) 1987-2003 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES enable.c + +$BUILTIN enable +$FUNCTION enable_builtin +$SHORT_DOC enable [-pnds] [-a] [-f filename] [name ...] +Enable and disable builtin shell commands. This allows +you to use a disk command which has the same name as a shell +builtin without specifying a full pathname. If -n is used, the +NAMEs become disabled; otherwise NAMEs are enabled. For example, +to use the `test' found in $PATH instead of the shell builtin +version, type `enable -n test'. On systems supporting dynamic +loading, the -f option may be used to load new builtins from the +shared object FILENAME. The -d option will delete a builtin +previously loaded with -f. If no non-option names are given, or +the -p option is supplied, a list of builtins is printed. The +-a option means to print every builtin with an indication of whether +or not it is enabled. The -s option restricts the output to the POSIX.2 +`special' builtins. The -n option displays a list of all disabled builtins. +$END + +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include +#include "../bashansi.h" +#include "../bashintl.h" + +#include "../shell.h" +#include "../builtins.h" +#include "../flags.h" +#include "common.h" +#include "bashgetopt.h" + +#if defined (PROGRAMMABLE_COMPLETION) +# include "../pcomplete.h" +#endif + +#define ENABLED 1 +#define DISABLED 2 +#define SPECIAL 4 + +#define AFLAG 0x01 +#define DFLAG 0x02 +#define FFLAG 0x04 +#define NFLAG 0x08 +#define PFLAG 0x10 +#define SFLAG 0x20 + +#if defined (HAVE_DLOPEN) && defined (HAVE_DLSYM) +static int dyn_load_builtin __P((WORD_LIST *, int, char *)); +#endif + +#if defined (HAVE_DLCLOSE) +static int dyn_unload_builtin __P((char *)); +static void delete_builtin __P((struct builtin *)); +static int local_dlclose __P((void *)); +#endif + +static void list_some_builtins __P((int)); +static int enable_shell_command __P((char *, int)); + +/* Enable/disable shell commands present in LIST. If list is not specified, + then print out a list of shell commands showing which are enabled and + which are disabled. */ +int +enable_builtin (list) + WORD_LIST *list; +{ + int result, flags; + int opt, filter; +#if defined (HAVE_DLOPEN) && defined (HAVE_DLSYM) + char *filename; +#endif + + result = EXECUTION_SUCCESS; + flags = 0; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "adnpsf:")) != -1) + { + switch (opt) + { + case 'a': + flags |= AFLAG; + break; + case 'n': + flags |= NFLAG; + break; + case 'p': + flags |= PFLAG; + break; + case 's': + flags |= SFLAG; + break; + case 'f': +#if defined (HAVE_DLOPEN) && defined (HAVE_DLSYM) + flags |= FFLAG; + filename = list_optarg; + break; +#else + builtin_error (_("dynamic loading not available")); + return (EX_USAGE); +#endif +#if defined (HAVE_DLCLOSE) + case 'd': + flags |= DFLAG; + break; +#else + builtin_error (_("dynamic loading not available")); + return (EX_USAGE); +#endif /* HAVE_DLCLOSE */ + default: + builtin_usage (); + return (EX_USAGE); + } + } + + list = loptend; + +#if defined (RESTRICTED_SHELL) + /* Restricted shells cannot load new builtins. */ + if (restricted && (flags & (FFLAG|DFLAG))) + { + sh_restricted ((char *)NULL); + return (EXECUTION_FAILURE); + } +#endif + + if (list == 0 || (flags & PFLAG)) + { + filter = (flags & AFLAG) ? (ENABLED | DISABLED) + : (flags & NFLAG) ? DISABLED : ENABLED; + + if (flags & SFLAG) + filter |= SPECIAL; + + list_some_builtins (filter); + } +#if defined (HAVE_DLOPEN) && defined (HAVE_DLSYM) + else if (flags & FFLAG) + { + filter = (flags & NFLAG) ? DISABLED : ENABLED; + if (flags & SFLAG) + filter |= SPECIAL; + + result = dyn_load_builtin (list, filter, filename); +#if defined (PROGRAMMABLE_COMPLETION) + set_itemlist_dirty (&it_builtins); +#endif + } +#endif +#if defined (HAVE_DLCLOSE) + else if (flags & DFLAG) + { + while (list) + { + opt = dyn_unload_builtin (list->word->word); + if (opt == EXECUTION_FAILURE) + result = EXECUTION_FAILURE; + list = list->next; + } +#if defined (PROGRAMMABLE_COMPLETION) + set_itemlist_dirty (&it_builtins); +#endif + } +#endif + else + { + while (list) + { + opt = enable_shell_command (list->word->word, flags & NFLAG); + + if (opt == EXECUTION_FAILURE) + { + sh_notbuiltin (list->word->word); + result = EXECUTION_FAILURE; + } + list = list->next; + } + } + return (result); +} + +/* List some builtins. + FILTER is a mask with two slots: ENABLED and DISABLED. */ +static void +list_some_builtins (filter) + int filter; +{ + register int i; + + for (i = 0; i < num_shell_builtins; i++) + { + if (shell_builtins[i].function == 0 || (shell_builtins[i].flags & BUILTIN_DELETED)) + continue; + + if ((filter & SPECIAL) && + (shell_builtins[i].flags & SPECIAL_BUILTIN) == 0) + continue; + + if ((filter & ENABLED) && (shell_builtins[i].flags & BUILTIN_ENABLED)) + printf ("enable %s\n", shell_builtins[i].name); + else if ((filter & DISABLED) && + ((shell_builtins[i].flags & BUILTIN_ENABLED) == 0)) + printf ("enable -n %s\n", shell_builtins[i].name); + } +} + +/* Enable the shell command NAME. If DISABLE_P is non-zero, then + disable NAME instead. */ +static int +enable_shell_command (name, disable_p) + char *name; + int disable_p; +{ + struct builtin *b; + + b = builtin_address_internal (name, 1); + if (b == 0) + return (EXECUTION_FAILURE); + + if (disable_p) + b->flags &= ~BUILTIN_ENABLED; +#if defined (RESTRICTED_SHELL) + else if (restricted && ((b->flags & BUILTIN_ENABLED) == 0)) + { + sh_restricted ((char *)NULL); + return (EXECUTION_FAILURE); + } +#endif + else + b->flags |= BUILTIN_ENABLED; + +#if defined (PROGRAMMABLE_COMPLETION) + set_itemlist_dirty (&it_enabled); + set_itemlist_dirty (&it_disabled); +#endif + + return (EXECUTION_SUCCESS); +} + +#if defined (HAVE_DLOPEN) && defined (HAVE_DLSYM) + +#if defined (HAVE_DLFCN_H) +# include +#endif + +static int +dyn_load_builtin (list, flags, filename) + WORD_LIST *list; + int flags; + char *filename; +{ + WORD_LIST *l; + void *handle; + + int total, size, new, replaced; + char *struct_name, *name; + struct builtin **new_builtins, *b, *new_shell_builtins, *old_builtin; + + if (list == 0) + return (EXECUTION_FAILURE); + +#ifndef RTLD_LAZY +#define RTLD_LAZY 1 +#endif + +#if defined (_AIX) + handle = dlopen (filename, RTLD_NOW|RTLD_GLOBAL); +#else + handle = dlopen (filename, RTLD_LAZY); +#endif /* !_AIX */ + + if (handle == 0) + { + builtin_error (_("cannot open shared object %s: %s"), filename, dlerror ()); + return (EXECUTION_FAILURE); + } + + for (new = 0, l = list; l; l = l->next, new++) + ; + new_builtins = (struct builtin **)xmalloc (new * sizeof (struct builtin *)); + + /* For each new builtin in the shared object, find it and its describing + structure. If this is overwriting an existing builtin, do so, otherwise + save the loaded struct for creating the new list of builtins. */ + for (replaced = new = 0; list; list = list->next) + { + name = list->word->word; + + size = strlen (name); + struct_name = (char *)xmalloc (size + 8); + strcpy (struct_name, name); + strcpy (struct_name + size, "_struct"); + + b = (struct builtin *)dlsym (handle, struct_name); + if (b == 0) + { + builtin_error (_("cannot find %s in shared object %s: %s"), + struct_name, filename, dlerror ()); + free (struct_name); + continue; + } + + free (struct_name); + + b->flags &= ~STATIC_BUILTIN; + if (flags & SPECIAL) + b->flags |= SPECIAL_BUILTIN; + b->handle = handle; + + if (old_builtin = builtin_address_internal (name, 1)) + { + replaced++; + FASTCOPY ((char *)b, (char *)old_builtin, sizeof (struct builtin)); + } + else + new_builtins[new++] = b; + } + + if (replaced == 0 && new == 0) + { + free (new_builtins); + dlclose (handle); + return (EXECUTION_FAILURE); + } + + if (new) + { + total = num_shell_builtins + new; + size = (total + 1) * sizeof (struct builtin); + + new_shell_builtins = (struct builtin *)xmalloc (size); + FASTCOPY ((char *)shell_builtins, (char *)new_shell_builtins, + num_shell_builtins * sizeof (struct builtin)); + for (replaced = 0; replaced < new; replaced++) + FASTCOPY ((char *)new_builtins[replaced], + (char *)&new_shell_builtins[num_shell_builtins + replaced], + sizeof (struct builtin)); + + new_shell_builtins[total].name = (char *)0; + new_shell_builtins[total].function = (sh_builtin_func_t *)0; + new_shell_builtins[total].flags = 0; + + if (shell_builtins != static_shell_builtins) + free (shell_builtins); + + shell_builtins = new_shell_builtins; + num_shell_builtins = total; + initialize_shell_builtins (); + } + + free (new_builtins); + return (EXECUTION_SUCCESS); +} +#endif + +#if defined (HAVE_DLCLOSE) +static void +delete_builtin (b) + struct builtin *b; +{ + int ind, size; + struct builtin *new_shell_builtins; + + /* XXX - funky pointer arithmetic - XXX */ +#ifdef __STDC__ + ind = b - shell_builtins; +#else + ind = ((int)b - (int)shell_builtins) / sizeof (struct builtin); +#endif + size = num_shell_builtins * sizeof (struct builtin); + new_shell_builtins = (struct builtin *)xmalloc (size); + + /* Copy shell_builtins[0]...shell_builtins[ind - 1] to new_shell_builtins */ + if (ind) + FASTCOPY ((char *)shell_builtins, (char *)new_shell_builtins, + ind * sizeof (struct builtin)); + /* Copy shell_builtins[ind+1]...shell_builtins[num_shell_builtins to + new_shell_builtins, starting at ind. */ + FASTCOPY ((char *)(&shell_builtins[ind+1]), + (char *)(&new_shell_builtins[ind]), + (num_shell_builtins - ind) * sizeof (struct builtin)); + + if (shell_builtins != static_shell_builtins) + free (shell_builtins); + + /* The result is still sorted. */ + num_shell_builtins--; + shell_builtins = new_shell_builtins; +} + +/* Tenon's MachTen has a dlclose that doesn't return a value, so we + finesse it with a local wrapper. */ +static int +local_dlclose (handle) + void *handle; +{ +#if !defined (__MACHTEN__) + return (dlclose (handle)); +#else /* __MACHTEN__ */ + dlclose (handle); + return ((dlerror () != NULL) ? -1 : 0); +#endif /* __MACHTEN__ */ +} + +static int +dyn_unload_builtin (name) + char *name; +{ + struct builtin *b; + void *handle; + int ref, i; + + b = builtin_address_internal (name, 1); + if (b == 0) + { + sh_notbuiltin (name); + return (EXECUTION_FAILURE); + } + if (b->flags & STATIC_BUILTIN) + { + builtin_error (_("%s: not dynamically loaded"), name); + return (EXECUTION_FAILURE); + } + + handle = (void *)b->handle; + for (ref = i = 0; i < num_shell_builtins; i++) + { + if (shell_builtins[i].handle == b->handle) + ref++; + } + + /* Don't remove the shared object unless the reference count of builtins + using it drops to zero. */ + if (ref == 1 && local_dlclose (handle) != 0) + { + builtin_error (_("%s: cannot delete: %s"), name, dlerror ()); + return (EXECUTION_FAILURE); + } + + /* Now remove this entry from the builtin table and reinitialize. */ + delete_builtin (b); + + return (EXECUTION_SUCCESS); +} +#endif diff --git a/bash-20060316/builtins/eval.def b/bash-20060316/builtins/eval.def new file mode 100644 index 000000000..500e8c730 --- /dev/null +++ b/bash-20060316/builtins/eval.def @@ -0,0 +1,53 @@ +This file is eval.def, from which is created eval.c. +It implements the builtin "eval" in Bash. + +Copyright (C) 1987-2002 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES eval.c + +$BUILTIN eval +$FUNCTION eval_builtin +$SHORT_DOC eval [arg ...] +Read ARGs as input to the shell and execute the resulting command(s). +$END + +#include +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include "../shell.h" +#include "bashgetopt.h" +#include "common.h" + +/* Parse the string that these words make, and execute the command found. */ +int +eval_builtin (list) + WORD_LIST *list; +{ + if (no_options (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); +} diff --git a/bash-20060316/builtins/evalfile.c b/bash-20060316/builtins/evalfile.c new file mode 100644 index 000000000..81be017bd --- /dev/null +++ b/bash-20060316/builtins/evalfile.c @@ -0,0 +1,320 @@ +/* Copyright (C) 1996-2003 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "../bashtypes.h" +#include "posixstat.h" +#include "filecntl.h" + +#include +#include +#include + +#include "../bashansi.h" +#include "../bashintl.h" + +#include "../shell.h" +#include "../jobs.h" +#include "../builtins.h" +#include "../flags.h" +#include "../input.h" +#include "../execute_cmd.h" +#include "../trap.h" + +#if defined (HISTORY) +# include "../bashhist.h" +#endif + +#include "common.h" + +#if !defined (errno) +extern int errno; +#endif + +/* Flags for _evalfile() */ +#define FEVAL_ENOENTOK 0x001 +#define FEVAL_BUILTIN 0x002 +#define FEVAL_UNWINDPROT 0x004 +#define FEVAL_NONINT 0x008 +#define FEVAL_LONGJMP 0x010 +#define FEVAL_HISTORY 0x020 +#define FEVAL_CHECKBINARY 0x040 +#define FEVAL_REGFILE 0x080 +#define FEVAL_NOPUSHARGS 0x100 + +extern int posixly_correct; +extern int indirection_level, startup_state, subshell_environment; +extern int return_catch_flag, return_catch_value; +extern int last_command_exit_value; + +/* How many `levels' of sourced files we have. */ +int sourcelevel = 0; + +static int +_evalfile (filename, flags) + const char *filename; + int flags; +{ + volatile int old_interactive; + procenv_t old_return_catch; + int return_val, fd, result, pflags; + char *string; + struct stat finfo; + size_t file_size; + sh_vmsg_func_t *errfunc; +#if defined (ARRAY_VARS) + SHELL_VAR *funcname_v, *nfv, *bash_source_v, *bash_lineno_v; + ARRAY *funcname_a, *bash_source_a, *bash_lineno_a; +# if defined (DEBUGGER) + SHELL_VAR *bash_argv_v, *bash_argc_v; + ARRAY *bash_argv_a, *bash_argc_a; +# endif + char *t, tt[2]; +#endif + + USE_VAR(pflags); + +#if defined (ARRAY_VARS) + GET_ARRAY_FROM_VAR ("FUNCNAME", funcname_v, funcname_a); + GET_ARRAY_FROM_VAR ("BASH_SOURCE", bash_source_v, bash_source_a); + GET_ARRAY_FROM_VAR ("BASH_LINENO", bash_lineno_v, bash_lineno_a); +# if defined (DEBUGGER) + GET_ARRAY_FROM_VAR ("BASH_ARGV", bash_argv_v, bash_argv_a); + 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)) + { +file_error_and_exit: + if (((flags & FEVAL_ENOENTOK) == 0) || errno != ENOENT) + file_error (filename); + + if (flags & FEVAL_LONGJMP) + { + last_command_exit_value = 1; + jump_to_top_level (EXITPROG); + } + + return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE + : ((errno == ENOENT) ? 0 : -1)); + } + + errfunc = ((flags & FEVAL_BUILTIN) ? builtin_error : internal_error); + + if (S_ISDIR (finfo.st_mode)) + { + (*errfunc) (_("%s: is a directory"), filename); + 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); + return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE : -1); + } + + file_size = (size_t)finfo.st_size; + /* Check for overflow with large files. */ + if (file_size != finfo.st_size || file_size + 1 < file_size) + { + (*errfunc) (_("%s: file is too large"), filename); + return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE : -1); + } + +#if defined (__CYGWIN__) && defined (O_TEXT) + setmode (fd, O_TEXT); +#endif + + string = (char *)xmalloc (1 + file_size); + result = read (fd, string, file_size); + string[result] = '\0'; + + return_val = errno; + close (fd); + errno = return_val; + + if (result < 0) /* XXX was != file_size, not < 0 */ + { + free (string); + goto file_error_and_exit; + } + + if (result == 0) + { + free (string); + return ((flags & FEVAL_BUILTIN) ? EXECUTION_SUCCESS : 1); + } + + if ((flags & FEVAL_CHECKBINARY) && + check_binary_file (string, (result > 80) ? 80 : result)) + { + free (string); + (*errfunc) ("%s: cannot execute binary file", filename); + return ((flags & FEVAL_BUILTIN) ? EX_BINARY_FILE : -1); + } + + if (flags & FEVAL_UNWINDPROT) + { + begin_unwind_frame ("_evalfile"); + + unwind_protect_int (return_catch_flag); + unwind_protect_jmp_buf (return_catch); + if (flags & FEVAL_NONINT) + unwind_protect_int (interactive); + unwind_protect_int (sourcelevel); + } + else + { + COPY_PROCENV (return_catch, old_return_catch); + if (flags & FEVAL_NONINT) + old_interactive = interactive; + } + + if (flags & FEVAL_NONINT) + interactive = 0; + + return_catch_flag++; + sourcelevel++; + +#if defined (ARRAY_VARS) + array_push (bash_source_a, (char *)filename); + t = itos (executing_line_number ()); + array_push (bash_lineno_a, t); + free (t); + array_push (funcname_a, "source"); /* not exactly right */ +# if defined (DEBUGGER) + /* Have to figure out a better way to do this when `source' is supplied + arguments */ + if ((flags & FEVAL_NOPUSHARGS) == 0) + { + array_push (bash_argv_a, (char *)filename); + tt[0] = '1'; tt[1] = '\0'; + array_push (bash_argc_a, tt); + } +# endif +#endif + + /* set the flags to be passed to parse_and_execute */ + pflags = SEVAL_RESETLINE; + pflags |= (flags & FEVAL_HISTORY) ? 0 : SEVAL_NOHIST; + + if (flags & FEVAL_BUILTIN) + result = EXECUTION_SUCCESS; + + return_val = setjmp (return_catch); + + /* If `return' was seen outside of a function, but in the script, then + force parse_and_execute () to clean up. */ + if (return_val) + { + parse_and_execute_cleanup (); + result = return_catch_value; + } + else + result = parse_and_execute (string, filename, pflags); + + if (flags & FEVAL_UNWINDPROT) + run_unwind_frame ("_evalfile"); + else + { + if (flags & FEVAL_NONINT) + interactive = old_interactive; + return_catch_flag--; + sourcelevel--; + COPY_PROCENV (old_return_catch, return_catch); + } + +#if defined (ARRAY_VARS) + /* These two variables cannot be unset, and cannot be affected by the + sourced file. */ + array_pop (bash_source_a); + array_pop (bash_lineno_a); + + /* FUNCNAME can be unset, and so can potentially be changed by the + sourced file. */ + GET_ARRAY_FROM_VAR ("FUNCNAME", nfv, funcname_a); + if (nfv == funcname_v) + array_pop (funcname_a); +# if defined (DEBUGGER) + if ((flags & FEVAL_NOPUSHARGS) == 0) + { + array_pop (bash_argc_a); + array_pop (bash_argv_a); + } +# endif +#endif + + return ((flags & FEVAL_BUILTIN) ? result : 1); +} + +int +maybe_execute_file (fname, force_noninteractive) + const char *fname; + int force_noninteractive; +{ + char *filename; + int result, flags; + + filename = bash_tilde_expand (fname, 0); + flags = FEVAL_ENOENTOK; + if (force_noninteractive) + flags |= FEVAL_NONINT; + result = _evalfile (filename, flags); + free (filename); + return result; +} + +#if defined (HISTORY) +int +fc_execute_file (filename) + const char *filename; +{ + int flags; + + /* We want these commands to show up in the history list if + remember_on_history is set. */ + flags = FEVAL_ENOENTOK|FEVAL_HISTORY|FEVAL_REGFILE; + return (_evalfile (filename, flags)); +} +#endif /* HISTORY */ + +int +source_file (filename, sflags) + const char *filename; + int sflags; +{ + int flags, rval; + + flags = FEVAL_BUILTIN|FEVAL_UNWINDPROT|FEVAL_NONINT; + if (sflags) + flags |= FEVAL_NOPUSHARGS; + /* POSIX shells exit if non-interactive and file error. */ + if (posixly_correct && !interactive_shell) + flags |= FEVAL_LONGJMP; + rval = _evalfile (filename, flags); + + run_return_trap (); + return rval; +} diff --git a/bash-20060316/builtins/evalstring.c b/bash-20060316/builtins/evalstring.c new file mode 100644 index 000000000..04afac3d7 --- /dev/null +++ b/bash-20060316/builtins/evalstring.c @@ -0,0 +1,353 @@ +/* Evaluate a string as one or more shell commands. + + Copyright (C) 1996-2005 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include +#include + +#include + +#include "filecntl.h" +#include "../bashansi.h" + +#include "../shell.h" +#include "../jobs.h" +#include "../builtins.h" +#include "../flags.h" +#include "../input.h" +#include "../execute_cmd.h" +#include "../redir.h" +#include "../trap.h" + +#if defined (HISTORY) +# include "../bashhist.h" +#endif + +#include "common.h" + +#if !defined (errno) +extern int errno; +#endif + +#define IS_BUILTIN(s) (builtin_address_internal(s, 0) != (struct builtin *)NULL) + +extern int indirection_level, startup_state, subshell_environment; +extern int line_number; +extern int last_command_exit_value; +extern int running_trap; +extern int loop_level; +extern int posixly_correct; + +int parse_and_execute_level = 0; + +static int cat_file __P((REDIRECT *)); + +/* How to force parse_and_execute () to clean up after itself. */ +void +parse_and_execute_cleanup () +{ + if (running_trap) + { + run_trap_cleanup (running_trap - 1); + unfreeze_jobs_list (); + } + run_unwind_frame ("parse_and_execute_top"); +} + +/* Parse and execute the commands in STRING. Returns whatever + execute_command () returns. This frees STRING. FLAGS is a + flags word; look in common.h for the possible values. Actions + are: + (flags & SEVAL_NONINT) -> interactive = 0; + (flags & SEVAL_INTERACT) -> interactive = 1; + (flags & SEVAL_NOHIST) -> call bash_history_disable () + (flags & SEVAL_NOFREE) -> don't free STRING when finished + (flags & SEVAL_RESETLINE) -> reset line_number to 1 +*/ + +int +parse_and_execute (string, from_file, flags) + char *string; + const char *from_file; + int flags; +{ + int code, x, lreset; + volatile int should_jump_to_top_level, last_result; + char *orig_string; + COMMAND *volatile command; + + orig_string = string; + /* Unwind protect this invocation of parse_and_execute (). */ + begin_unwind_frame ("parse_and_execute_top"); + unwind_protect_int (parse_and_execute_level); + unwind_protect_jmp_buf (top_level); + unwind_protect_int (indirection_level); + unwind_protect_int (line_number); + unwind_protect_int (loop_level); + if (flags & (SEVAL_NONINT|SEVAL_INTERACT)) + unwind_protect_int (interactive); + + lreset = flags & SEVAL_RESETLINE; + +#if defined (HISTORY) + unwind_protect_int (remember_on_history); /* can be used in scripts */ +# if defined (BANG_HISTORY) + if (interactive_shell) + { + unwind_protect_int (history_expansion_inhibited); + } +# endif /* BANG_HISTORY */ +#endif /* HISTORY */ + + if (interactive_shell) + { + x = get_current_prompt_level (); + add_unwind_protect (set_current_prompt_level, x); + } + + add_unwind_protect (pop_stream, (char *)NULL); + if (orig_string && ((flags & SEVAL_NOFREE) == 0)) + add_unwind_protect (xfree, orig_string); + end_unwind_frame (); + + parse_and_execute_level++; + + /* 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 (lreset == 0) + line_number--; + + indirection_level++; + if (flags & (SEVAL_NONINT|SEVAL_INTERACT)) + interactive = (flags & SEVAL_NONINT) ? 0 : 1; + +#if defined (HISTORY) + if (flags & SEVAL_NOHIST) + bash_history_disable (); +#endif /* HISTORY */ + + code = should_jump_to_top_level = 0; + last_result = EXECUTION_SUCCESS; + + with_input_from_string (string, from_file); + while (*(bash_input.location.string)) + { + command = (COMMAND *)NULL; + + if (interrupt_state) + { + last_result = EXECUTION_FAILURE; + break; + } + + /* 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); + + if (code) + { + should_jump_to_top_level = 0; + switch (code) + { + case FORCE_EOF: + case ERREXIT: + case EXITPROG: + if (command) + run_unwind_frame ("pe_dispose"); + /* Remember to call longjmp (top_level) after the old + value for it is restored. */ + should_jump_to_top_level = 1; + goto out; + + case DISCARD: + if (command) + run_unwind_frame ("pe_dispose"); + last_result = last_command_exit_value = EXECUTION_FAILURE; /* XXX */ + if (subshell_environment) + { + should_jump_to_top_level = 1; + goto out; + } + else + { +#if 0 + dispose_command (command); /* pe_dispose does this */ +#endif + continue; + } + + default: + command_error ("parse_and_execute", CMDERR_BADJUMP, code, 0); + break; + } + } + + if (parse_command () == 0) + { + if (interactive_shell == 0 && read_but_dont_execute) + { + last_result = EXECUTION_SUCCESS; + dispose_command (global_command); + global_command = (COMMAND *)NULL; + } + else if (command = global_command) + { + struct fd_bitmap *bitmap; + + bitmap = new_fd_bitmap (FD_BITMAP_SIZE); + begin_unwind_frame ("pe_dispose"); + add_unwind_protect (dispose_fd_bitmap, bitmap); + add_unwind_protect (dispose_command, command); /* XXX */ + + global_command = (COMMAND *)NULL; + +#if defined (ONESHOT) + /* + * IF + * we were invoked as `bash -c' (startup_state == 2) AND + * parse_and_execute has not been called recursively AND + * we're not running a trap AND + * we have parsed the full command (string == '\0') AND + * we have a simple command without redirections AND + * the command is not being timed AND + * the command's return status is not being inverted + * THEN + * tell the execution code that we don't need to fork + */ + if (startup_state == 2 && parse_and_execute_level == 1 && + running_trap == 0 && + *bash_input.location.string == '\0' && + command->type == cm_simple && + !command->redirects && !command->value.Simple->redirects && + ((command->flags & CMD_TIME_PIPELINE) == 0) && + ((command->flags & CMD_INVERT_RETURN) == 0)) + { + command->flags |= CMD_NO_FORK; + command->value.Simple->flags |= CMD_NO_FORK; + } +#endif /* ONESHOT */ + + /* See if this is a candidate for $( type == cm_simple && !command->redirects && + (command->flags & CMD_TIME_PIPELINE) == 0 && + command->value.Simple->words == 0 && + command->value.Simple->redirects && + command->value.Simple->redirects->next == 0 && + command->value.Simple->redirects->instruction == r_input_direction) + { + int r; + r = cat_file (command->value.Simple->redirects); + last_result = (r < 0) ? EXECUTION_FAILURE : EXECUTION_SUCCESS; + } + 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"); + } + } + else + { + last_result = EXECUTION_FAILURE; + + /* Since we are shell compatible, syntax errors in a script + abort the execution of the script. Right? */ + break; + } + } + + out: + + run_unwind_frame ("parse_and_execute_top"); + + if (interrupt_state && parse_and_execute_level == 0) + { + /* An interrupt during non-interactive execution in an + interactive shell (e.g. via $PROMPT_COMMAND) should + not cause the shell to exit. */ + interactive = interactive_shell; + throw_to_top_level (); + } + + if (should_jump_to_top_level) + jump_to_top_level (code); + + return (last_result); +} + +/* Handle a $( < file ) command substitution. This expands the filename, + returning errors as appropriate, then just cats the file to the standard + output. */ +static int +cat_file (r) + REDIRECT *r; +{ + char lbuf[128], *fn; + int fd, rval; + ssize_t nr; + + if (r->instruction != r_input_direction) + return -1; + + /* Get the filename. */ + if (posixly_correct && !interactive_shell) + disallow_filename_globbing++; + fn = redirection_expand (r->redirectee.filename); + if (posixly_correct && !interactive_shell) + disallow_filename_globbing--; + + if (fn == 0) + { + redirection_error (r, AMBIGUOUS_REDIRECT); + return -1; + } + + fd = open(fn, O_RDONLY); + if (fd < 0) + { + file_error (fn); + free (fn); + return -1; + } + + rval = zcatfd (fd, 1, fn); + + free (fn); + close (fd); + + return (rval); +} diff --git a/bash-20060316/builtins/exec.def b/bash-20060316/builtins/exec.def new file mode 100644 index 000000000..0818a25e2 --- /dev/null +++ b/bash-20060316/builtins/exec.def @@ -0,0 +1,229 @@ +This file is exec.def, from which is created exec.c. +It implements the builtin "exec" in Bash. + +Copyright (C) 1987-2003 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES exec.c + +$BUILTIN exec +$FUNCTION exec_builtin +$SHORT_DOC exec [-cl] [-a name] file [redirection ...] +Exec FILE, replacing this shell with the specified program. +If FILE is not specified, the redirections take effect in this +shell. If the first argument is `-l', then place a dash in the +zeroth arg passed to FILE, as login does. If the `-c' option +is supplied, FILE is executed with a null environment. The `-a' +option means to make set argv[0] of the executed process to NAME. +If the file cannot be executed and the shell is not interactive, +then the shell exits, unless the shell option `execfail' is set. +$END + +#include + +#include "../bashtypes.h" +#include "posixstat.h" +#include +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "../bashansi.h" +#include "../bashintl.h" + +#include "../shell.h" +#include "../execute_cmd.h" +#include "../findcmd.h" +#if defined (JOB_CONTROL) +# include "../jobs.h" +#endif +#include "../flags.h" +#include "../trap.h" +#if defined (HISTORY) +# include "../bashhist.h" +#endif +#include "common.h" +#include "bashgetopt.h" + +/* Not all systems declare ERRNO in errno.h... and some systems #define it! */ +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +extern int subshell_environment; +extern REDIRECT *redirection_undo_list; + +int no_exit_on_failed_exec; + +/* If the user wants this to look like a login shell, then + prepend a `-' onto NAME and return the new name. */ +static char * +mkdashname (name) + char *name; +{ + char *ret; + + ret = (char *)xmalloc (2 + strlen (name)); + ret[0] = '-'; + strcpy (ret + 1, name); + return ret; +} + +int +exec_builtin (list) + WORD_LIST *list; +{ + int exit_value = EXECUTION_FAILURE; + int cleanenv, login, opt; + char *argv0, *command, **args, **env, *newname, *com2; + + cleanenv = login = 0; + argv0 = (char *)NULL; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "cla:")) != -1) + { + switch (opt) + { + case 'c': + cleanenv = 1; + break; + case 'l': + login = 1; + break; + case 'a': + argv0 = list_optarg; + break; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + /* First, let the redirections remain. */ + dispose_redirects (redirection_undo_list); + redirection_undo_list = (REDIRECT *)NULL; + + if (list == 0) + return (EXECUTION_SUCCESS); + +#if defined (RESTRICTED_SHELL) + if (restricted) + { + sh_restricted ((char *)NULL); + return (EXECUTION_FAILURE); + } +#endif /* RESTRICTED_SHELL */ + + 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]); + + if (command == 0) + { + sh_notfound (args[0]); + exit_value = EX_NOTFOUND; /* As per Posix.2, 3.14.6 */ + goto failed_exec; + } + + com2 = full_pathname (command); + if (com2) + { + if (command != args[0]) + free (command); + command = com2; + } + + if (argv0) + { + free (args[0]); + args[0] = login ? mkdashname (argv0) : savestring (argv0); + } + else if (login) + { + newname = mkdashname (args[0]); + free (args[0]); + args[0] = newname; + } + + /* Decrement SHLVL by 1 so a new shell started here has the same value, + preserving the appearance. After we do that, we need to change the + exported environment to include the new value. */ + if (cleanenv == 0) + adjust_shell_level (-1); + + if (cleanenv) + env = (char **)NULL; + else + { + maybe_make_export_env (); + env = export_env; + } + +#if defined (HISTORY) + if (interactive_shell && subshell_environment == 0) + maybe_save_shell_history (); +#endif /* HISTORY */ + + restore_original_signals (); + +#if defined (JOB_CONTROL) + if (subshell_environment == 0) + end_job_control (); +#endif /* JOB_CONTROL */ + + shell_execve (command, args, env); + + /* We have to set this to NULL because shell_execve has called realloc() + to stuff more items at the front of the array, which may have caused + the memory to be freed by realloc(). We don't want to free it twice. */ + args = (char **)NULL; + if (cleanenv == 0) + adjust_shell_level (1); + + if (executable_file (command) == 0) + { + builtin_error (_("%s: cannot execute: %s"), command, strerror (errno)); + exit_value = EX_NOEXEC; /* As per Posix.2, 3.14.6 */ + } + else + file_error (command); + +failed_exec: + FREE (command); + + if (subshell_environment || (interactive == 0 && no_exit_on_failed_exec == 0)) + exit_shell (exit_value); + + if (args) + strvec_dispose (args); + + initialize_traps (); + initialize_signals (1); + +#if defined (JOB_CONTROL) + if (interactive_shell || job_control) + restart_job_control (); +#endif /* JOB_CONTROL */ + + return (exit_value); +} diff --git a/bash-20060316/builtins/exit.def b/bash-20060316/builtins/exit.def new file mode 100644 index 000000000..ddaa5d315 --- /dev/null +++ b/bash-20060316/builtins/exit.def @@ -0,0 +1,152 @@ +This file is exit.def, from which is created exit.c. +It implements the builtins "exit", and "logout" in Bash. + +Copyright (C) 1987-2005 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES exit.c + +$BUILTIN exit +$FUNCTION exit_builtin +$SHORT_DOC exit [n] +Exit the shell with a status of N. If N is omitted, the exit status +is that of the last command executed. +$END + +#include + +#include "../bashtypes.h" +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "../bashintl.h" + +#include "../shell.h" +#include "../jobs.h" + +#include "common.h" +#include "builtext.h" /* for jobs_builtin */ + +extern int last_command_exit_value; +extern int running_trap, trap_saved_exit_value; +extern int subshell_environment; +extern sh_builtin_func_t *this_shell_builtin; +extern sh_builtin_func_t *last_shell_builtin; + +static int exit_or_logout __P((WORD_LIST *)); +static int sourced_logout; + +int +exit_builtin (list) + WORD_LIST *list; +{ + if (interactive) + { + fprintf (stderr, login_shell ? "logout\n" : "exit\n"); + fflush (stderr); + } + + return (exit_or_logout (list)); +} + +$BUILTIN logout +$FUNCTION logout_builtin +$SHORT_DOC logout +Logout of a login shell. +$END + +/* How to logout. */ +int +logout_builtin (list) + WORD_LIST *list; +{ + if (login_shell == 0 /* && interactive */) + { + builtin_error (_("not login shell: use `exit'")); + return (EXECUTION_FAILURE); + } + else + return (exit_or_logout (list)); +} + +static int +exit_or_logout (list) + WORD_LIST *list; +{ + int exit_value; + +#if defined (JOB_CONTROL) + int exit_immediate_okay; + + exit_immediate_okay = (interactive == 0 || + last_shell_builtin == exit_builtin || + last_shell_builtin == logout_builtin || + last_shell_builtin == jobs_builtin); + + /* Check for stopped jobs if the user wants to. */ + if (!exit_immediate_okay) + { + register int i; + for (i = 0; i < js.j_jobslots; i++) + if (jobs[i] && STOPPED (i)) + { + fprintf (stderr, _("There are stopped jobs.\n")); + + /* This is NOT superfluous because EOF can get here without + going through the command parser. Set both last and this + so that either `exit', `logout', or ^D will work to exit + immediately if nothing intervenes. */ + this_shell_builtin = last_shell_builtin = exit_builtin; + return (EXECUTION_FAILURE); + } + } +#endif /* JOB_CONTROL */ + + /* Get return value if present. This means that you can type + `logout 5' to a shell, and it returns 5. */ + + /* If we're running the exit trap (running_trap == 1, since running_trap + gets set to SIG+1), and we don't have a argument given to `exit' + (list == 0), use the exit status we saved before running the trap + commands (trap_saved_exit_value). */ + exit_value = (running_trap == 1 && list == 0) ? trap_saved_exit_value : get_exitstat (list); + + bash_logout (); + + last_command_exit_value = exit_value; + + /* Exit the program. */ + jump_to_top_level (EXITPROG); + /*NOTREACHED*/ +} + +void +bash_logout () +{ + /* Run our `~/.bash_logout' file if it exists, and this is a login shell. */ + if (login_shell && sourced_logout++ == 0 && subshell_environment == 0) + { + maybe_execute_file ("~/.bash_logout", 1); +#ifdef SYS_BASH_LOGOUT + maybe_execute_file (SYS_BASH_LOGOUT, 1); +#endif + } +} diff --git a/bash-20060316/builtins/fc.def b/bash-20060316/builtins/fc.def new file mode 100644 index 000000000..ebe368326 --- /dev/null +++ b/bash-20060316/builtins/fc.def @@ -0,0 +1,631 @@ +This file is fc.def, from which is created fc.c. +It implements the builtin "fc" in Bash. + +Copyright (C) 1987-2005 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES fc.c + +$BUILTIN fc +$FUNCTION fc_builtin +$DEPENDS_ON HISTORY +$SHORT_DOC fc [-e ename] [-nlr] [first] [last] or fc -s [pat=rep] [cmd] +fc is used to list or edit and re-execute commands from the history list. +FIRST and LAST can be numbers specifying the range, or FIRST can be a +string, which means the most recent command beginning with that +string. + + -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR, + then vi. + + -l means list lines instead of editing. + -n means no line numbers listed. + -r means reverse the order of the lines (making it newest listed first). + +With the `fc -s [pat=rep ...] [command]' format, the command is +re-executed after the substitution OLD=NEW is performed. + +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. +$END + +#include + +#if defined (HISTORY) +#ifndef _MINIX +# include +#endif +#include "../bashtypes.h" +#include "posixstat.h" +#if ! defined(_MINIX) && defined (HAVE_SYS_FILE_H) +# include +#endif + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include +#include + +#include "../bashansi.h" +#include "../bashintl.h" +#include + +#include "../shell.h" +#include "../builtins.h" +#include "../flags.h" +#include "../bashhist.h" +#include "maxpath.h" +#include +#include "bashgetopt.h" +#include "common.h" + +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +extern int echo_input_at_read; +extern int current_command_line_count; +extern int literal_history; +extern int posixly_correct; + +extern int unlink __P((const char *)); + +extern FILE *sh_mktmpfp __P((char *, int, char **)); +extern int delete_last_history __P((void)); + +/* **************************************************************** */ +/* */ +/* The K*rn shell style fc command (Fix Command) */ +/* */ +/* **************************************************************** */ + +/* fc builtin command (fix command) for Bash for those who + like K*rn-style history better than csh-style. + + fc [-e ename] [-nlr] [first] [last] + + FIRST and LAST can be numbers specifying the range, or FIRST can be + a string, which means the most recent command beginning with that + string. + + -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR, + then the editor which corresponds to the current readline editing + mode, then vi. + + -l means list lines instead of editing. + -n means no line numbers listed. + -r means reverse the order of the lines (making it newest listed first). + + fc -e - [pat=rep ...] [command] + fc -s [pat=rep ...] [command] + + Equivalent to !command:sg/pat/rep execpt there can be multiple PAT=REP's. +*/ + +/* Data structure describing a list of global replacements to perform. */ +typedef struct repl { + struct repl *next; + char *pat; + char *rep; +} REPL; + +/* Accessors for HIST_ENTRY lists that are called HLIST. */ +#define histline(i) (hlist[(i)]->line) +#define histdata(i) (hlist[(i)]->data) + +#define FREE_RLIST() \ + do { \ + for (rl = rlist; rl; ) { \ + REPL *r; \ + r = rl->next; \ + if (rl->pat) \ + free (rl->pat); \ + if (rl->rep) \ + free (rl->rep); \ + free (rl); \ + rl = r; \ + } \ + } while (0) + +static char *fc_dosubs __P((char *, REPL *)); +static char *fc_gethist __P((char *, HIST_ENTRY **)); +static int fc_gethnum __P((char *, HIST_ENTRY **)); +static int fc_number __P((WORD_LIST *)); +static void fc_replhist __P((char *)); +#ifdef INCLUDE_UNUSED +static char *fc_readline __P((FILE *)); +static void fc_addhist __P((char *)); +#endif + +/* String to execute on a file that we want to edit. */ +#define FC_EDIT_COMMAND "${FCEDIT:-${EDITOR:-vi}}" +#if defined (STRICT_POSIX) +# define POSIX_FC_EDIT_COMMAND "${FCEDIT:-ed}" +#else +# define POSIX_FC_EDIT_COMMAND "${FCEDIT:-${EDITOR:-ed}}" +#endif + +int +fc_builtin (list) + WORD_LIST *list; +{ + register int i; + register char *sep; + int numbering, reverse, listing, execute; + int histbeg, histend, last_hist, retval, opt; + FILE *stream; + REPL *rlist, *rl; + char *ename, *command, *newcom, *fcedit; + HIST_ENTRY **hlist; + char *fn; + + numbering = 1; + reverse = listing = execute = 0; + ename = (char *)NULL; + + /* Parse out the options and set which of the two forms we're in. */ + reset_internal_getopt (); + lcurrent = list; /* XXX */ + while (fc_number (loptend = lcurrent) == 0 && + (opt = internal_getopt (list, ":e:lnrs")) != -1) + { + switch (opt) + { + case 'n': + numbering = 0; + break; + + case 'l': + listing = 1; + break; + + case 'r': + reverse = 1; + break; + + case 's': + execute = 1; + break; + + case 'e': + ename = list_optarg; + break; + + default: + builtin_usage (); + return (EX_USAGE); + } + } + + list = loptend; + + if (ename && (*ename == '-') && (ename[1] == '\0')) + execute = 1; + + /* The "execute" form of the command (re-run, with possible string + substitutions). */ + if (execute) + { + rlist = (REPL *)NULL; + while (list && ((sep = (char *)strchr (list->word->word, '=')) != NULL)) + { + *sep++ = '\0'; + rl = (REPL *)xmalloc (sizeof (REPL)); + rl->next = (REPL *)NULL; + rl->pat = savestring (list->word->word); + rl->rep = savestring (sep); + + if (rlist == NULL) + rlist = rl; + else + { + rl->next = rlist; + rlist = rl; + } + list = list->next; + } + + /* If we have a list of substitutions to do, then reverse it + to get the replacements in the proper order. */ + + rlist = REVERSE_LIST (rlist, REPL *); + + hlist = history_list (); + + /* If we still have something in list, it is a command spec. + Otherwise, we use the most recent command in time. */ + command = fc_gethist (list ? list->word->word : (char *)NULL, hlist); + + if (command == NULL) + { + builtin_error (_("no command found")); + if (rlist) + FREE_RLIST (); + + return (EXECUTION_FAILURE); + } + + if (rlist) + { + newcom = fc_dosubs (command, rlist); + free (command); + FREE_RLIST (); + command = newcom; + } + + fprintf (stderr, "%s\n", command); + fc_replhist (command); /* replace `fc -s' with command */ + return (parse_and_execute (command, "fc", SEVAL_NOHIST)); + } + + /* This is the second form of the command (the list-or-edit-and-rerun + form). */ + hlist = history_list (); + if (hlist == 0) + return (EXECUTION_SUCCESS); + for (i = 0; hlist[i]; i++); + + /* With the Bash implementation of history, the current command line + ("fc blah..." and so on) is already part of the history list by + the time we get to this point. This just skips over that command + and makes the last command that this deals with be the last command + the user entered before the fc. We need to check whether the + line was actually added (HISTIGNORE may have caused it to not be), + so we check hist_last_line_added. */ + + /* "When not listing, he fc command that caused the editing shall not be + entered into the history list." */ + if (listing == 0 && hist_last_line_added) + delete_last_history (); + + last_hist = i - 1 - hist_last_line_added; + + if (list) + { + histbeg = fc_gethnum (list->word->word, hlist); + list = list->next; + + if (list) + histend = fc_gethnum (list->word->word, hlist); + else + histend = listing ? last_hist : histbeg; + } + else + { + /* The default for listing is the last 16 history items. */ + if (listing) + { + histend = last_hist; + histbeg = histend - 16 + 1; /* +1 because loop below uses >= */ + if (histbeg < 0) + histbeg = 0; + } + else + /* For editing, it is the last history command. */ + histbeg = histend = last_hist; + } + + /* We print error messages for line specifications out of range. */ + if ((histbeg < 0) || (histend < 0)) + { + sh_erange ((char *)NULL, _("history specification")); + return (EXECUTION_FAILURE); + } + + if (histend < histbeg) + { + i = histend; + histend = histbeg; + histbeg = i; + + reverse = 1; + } + + if (listing) + stream = stdout; + else + { + numbering = 0; + stream = sh_mktmpfp ("bash-fc", MT_USERANDOM|MT_USETMPDIR, &fn); + if (stream == 0) + { + builtin_error (_("%s: cannot open temp file: %s"), fn ? fn : "", strerror (errno)); + FREE (fn); + return (EXECUTION_FAILURE); + } + } + + for (i = reverse ? histend : histbeg; reverse ? i >= histbeg : i <= histend; reverse ? i-- : i++) + { + QUIT; + if (numbering) + fprintf (stream, "%d", i + history_base); + if (listing) + { + if (posixly_correct) + fputs ("\t", stream); + else + fprintf (stream, "\t%c", histdata (i) ? '*' : ' '); + } + fprintf (stream, "%s\n", histline (i)); + } + + if (listing) + return (EXECUTION_SUCCESS); + + fclose (stream); + + /* Now edit the file of commands. */ + if (ename) + { + command = (char *)xmalloc (strlen (ename) + strlen (fn) + 2); + sprintf (command, "%s %s", ename, fn); + } + else + { + fcedit = posixly_correct ? POSIX_FC_EDIT_COMMAND : FC_EDIT_COMMAND; + command = (char *)xmalloc (3 + strlen (fcedit) + strlen (fn)); + sprintf (command, "%s %s", fcedit, fn); + } + retval = parse_and_execute (command, "fc", SEVAL_NOHIST); + if (retval != EXECUTION_SUCCESS) + { + unlink (fn); + free (fn); + return (EXECUTION_FAILURE); + } + + /* Make sure parse_and_execute doesn't turn this off, even though a + call to parse_and_execute farther up the function call stack (e.g., + if this is called by vi_edit_and_execute_command) may have already + called bash_history_disable. */ + remember_on_history = 1; + + /* Turn on the `v' flag while fc_execute_file runs so the commands + will be echoed as they are read by the parser. */ + begin_unwind_frame ("fc builtin"); + add_unwind_protect ((Function *)xfree, fn); + add_unwind_protect (unlink, fn); + unwind_protect_int (echo_input_at_read); + echo_input_at_read = 1; + + retval = fc_execute_file (fn); + + run_unwind_frame ("fc builtin"); + + return (retval); +} + +/* Return 1 if LIST->word->word is a legal number for fc's use. */ +static int +fc_number (list) + WORD_LIST *list; +{ + char *s; + + if (list == 0) + return 0; + s = list->word->word; + if (*s == '-') + s++; + return (legal_number (s, (intmax_t *)NULL)); +} + +/* Return an absolute index into HLIST which corresponds to COMMAND. If + COMMAND is a number, then it was specified in relative terms. If it + is a string, then it is the start of a command line present in HLIST. */ +static int +fc_gethnum (command, hlist) + char *command; + HIST_ENTRY **hlist; +{ + int sign = 1, n, clen; + register int i, j; + register char *s; + + /* Count history elements. */ + for (i = 0; hlist[i]; i++); + + /* With the Bash implementation of history, the current command line + ("fc blah..." and so on) is already part of the history list by + the time we get to this point. This just skips over that command + and makes the last command that this deals with be the last command + the user entered before the fc. We need to check whether the + line was actually added (HISTIGNORE may have caused it to not be), + so we check hist_last_line_added. */ + i -= 1 + hist_last_line_added; + + /* No specification defaults to most recent command. */ + if (command == NULL) + return (i); + + /* Otherwise, there is a specification. It can be a number relative to + the current position, or an absolute history number. */ + s = command; + + /* Handle possible leading minus sign. */ + if (s && (*s == '-')) + { + sign = -1; + s++; + } + + if (s && DIGIT(*s)) + { + n = atoi (s); + n *= sign; + + /* If the value is negative or zero, then it is an offset from + the current history item. */ + if (n < 0) + { + n += i + 1; + return (n < 0 ? 0 : n); + } + else if (n == 0) + return (i); + else + { + n -= history_base; + return (i < n ? i : n); + } + } + + clen = strlen (command); + for (j = i; j >= 0; j--) + { + if (STREQN (command, histline (j), clen)) + return (j); + } + return (-1); +} + +/* Locate the most recent history line which begins with + COMMAND in HLIST, and return a malloc()'ed copy of it. */ +static char * +fc_gethist (command, hlist) + char *command; + HIST_ENTRY **hlist; +{ + int i; + + if (hlist == 0) + return ((char *)NULL); + + i = fc_gethnum (command, hlist); + + if (i >= 0) + return (savestring (histline (i))); + else + return ((char *)NULL); +} + +#ifdef INCLUDE_UNUSED +/* Read the edited history lines from STREAM and return them + one at a time. This can read unlimited length lines. The + caller should free the storage. */ +static char * +fc_readline (stream) + FILE *stream; +{ + register int c; + int line_len = 0, lindex = 0; + char *line = (char *)NULL; + + while ((c = getc (stream)) != EOF) + { + if ((lindex + 2) >= line_len) + line = (char *)xrealloc (line, (line_len += 128)); + + if (c == '\n') + { + line[lindex++] = '\n'; + line[lindex++] = '\0'; + return (line); + } + else + line[lindex++] = c; + } + + if (!lindex) + { + if (line) + free (line); + + return ((char *)NULL); + } + + if (lindex + 2 >= line_len) + line = (char *)xrealloc (line, lindex + 3); + + line[lindex++] = '\n'; /* Finish with newline if none in file */ + line[lindex++] = '\0'; + return (line); +} +#endif + +/* Perform the SUBS on COMMAND. + SUBS is a list of substitutions, and COMMAND is a simple string. + Return a pointer to a malloc'ed string which contains the substituted + command. */ +static char * +fc_dosubs (command, subs) + char *command; + REPL *subs; +{ + register char *new, *t; + register REPL *r; + + for (new = savestring (command), r = subs; r; r = r->next) + { + t = strsub (new, r->pat, r->rep, 1); + free (new); + new = t; + } + return (new); +} + +/* Use `command' to replace the last entry in the history list, which, + by this time, is `fc blah...'. The intent is that the new command + become the history entry, and that `fc' should never appear in the + history list. This way you can do `r' to your heart's content. */ +static void +fc_replhist (command) + char *command; +{ + int n; + + if (command == 0 || *command == '\0') + return; + + n = strlen (command); + if (command[n - 1] == '\n') + command[n - 1] = '\0'; + + if (command && *command) + { + delete_last_history (); + maybe_add_history (command); /* Obeys HISTCONTROL setting. */ + } +} + +#ifdef INCLUDE_UNUSED +/* Add LINE to the history, after removing a single trailing newline. */ +static void +fc_addhist (line) + char *line; +{ + register int n; + + if (line == 0 || *line == 0) + return; + + n = strlen (line); + + if (line[n - 1] == '\n') + line[n - 1] = '\0'; + + if (line && *line) + maybe_add_history (line); /* Obeys HISTCONTROL setting. */ +} +#endif + +#endif /* HISTORY */ diff --git a/bash-20060316/builtins/fg_bg.def b/bash-20060316/builtins/fg_bg.def new file mode 100644 index 000000000..c14381b6d --- /dev/null +++ b/bash-20060316/builtins/fg_bg.def @@ -0,0 +1,177 @@ +This file is fg_bg.def, from which is created fg_bg.c. +It implements the builtins "bg" and "fg" in Bash. + +Copyright (C) 1987-2005 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES fg_bg.c + +$BUILTIN fg +$FUNCTION fg_builtin +$DEPENDS_ON JOB_CONTROL +$SHORT_DOC fg [job_spec] +Place JOB_SPEC in the foreground, and make it the current job. If +JOB_SPEC is not present, the shell's notion of the current job is +used. +$END + +#include + +#include "../bashtypes.h" +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "../bashintl.h" + +#include "../shell.h" +#include "../jobs.h" +#include "common.h" +#include "bashgetopt.h" + +#if defined (JOB_CONTROL) +extern char *this_command_name; + +static int fg_bg __P((WORD_LIST *, int)); + +/* How to bring a job into the foreground. */ +int +fg_builtin (list) + WORD_LIST *list; +{ + int fg_bit; + register WORD_LIST *t; + + if (job_control == 0) + { + sh_nojobs ((char *)NULL); + return (EXECUTION_FAILURE); + } + + if (no_options (list)) + return (EX_USAGE); + list = loptend; + + /* If the last arg on the line is '&', then start this job in the + background. Else, fg the job. */ + for (t = list; t && t->next; t = t->next) + ; + fg_bit = (t && t->word->word[0] == '&' && t->word->word[1] == '\0') == 0; + + return (fg_bg (list, fg_bit)); +} +#endif /* JOB_CONTROL */ + +$BUILTIN bg +$FUNCTION bg_builtin +$DEPENDS_ON JOB_CONTROL +$SHORT_DOC bg [job_spec ...] +Place each JOB_SPEC in the background, as if it had been started with +`&'. If JOB_SPEC is not present, the shell's notion of the current +job is used. +$END + +#if defined (JOB_CONTROL) +/* How to put a job into the background. */ +int +bg_builtin (list) + WORD_LIST *list; +{ + int r; + + if (job_control == 0) + { + sh_nojobs ((char *)NULL); + return (EXECUTION_FAILURE); + } + + if (no_options (list)) + return (EX_USAGE); + list = loptend; + + /* This relies on the fact that fg_bg() takes a WORD_LIST *, but only acts + on the first member (if any) of that list. */ + r = EXECUTION_SUCCESS; + do + { + if (fg_bg (list, 0) == EXECUTION_FAILURE) + r = EXECUTION_FAILURE; + if (list) + list = list->next; + } + while (list); + + return r; +} + +/* How to put a job into the foreground/background. */ +static int +fg_bg (list, foreground) + WORD_LIST *list; + int foreground; +{ + sigset_t set, oset; + int job, status, old_async_pid; + JOB *j; + + BLOCK_CHILD (set, oset); + job = get_job_spec (list); + + if (INVALID_JOB (job)) + { + if (job != DUP_JOB) + sh_badjob (list ? list->word->word : "current"); + + goto failure; + } + + j = get_job_by_jid (job); + /* Or if j->pgrp == shell_pgrp. */ + if (IS_JOBCONTROL (job) == 0) + { + builtin_error (_("job %d started without job control"), job + 1); + goto failure; + } + + if (foreground == 0) + { + old_async_pid = last_asynchronous_pid; + last_asynchronous_pid = j->pgrp; /* As per Posix.2 5.4.2 */ + } + + status = start_job (job, foreground); + + if (status >= 0) + { + /* win: */ + UNBLOCK_CHILD (oset); + return (foreground ? status : EXECUTION_SUCCESS); + } + else + { + if (foreground == 0) + last_asynchronous_pid = old_async_pid; + + failure: + UNBLOCK_CHILD (oset); + return (EXECUTION_FAILURE); + } +} +#endif /* JOB_CONTROL */ diff --git a/bash-20060316/builtins/getopt.c b/bash-20060316/builtins/getopt.c new file mode 100644 index 000000000..b223a76a9 --- /dev/null +++ b/bash-20060316/builtins/getopt.c @@ -0,0 +1,308 @@ +/* getopt for BASH. + + Copyright (C) 1993, 1994 + 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 2, 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, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include +#include "memalloc.h" +#include "../bashintl.h" +#include "../shell.h" +#include "getopt.h" + +/* For communication from `sh_getopt' to the caller. + When `sh_getopt' finds an option that takes an argument, + the argument value is returned here. */ +char *sh_optarg = 0; + +/* Index in ARGV of the next element to be scanned. + This is used for communication to and from the caller + and for communication between successive calls to `sh_getopt'. + + On entry to `sh_getopt', zero means this is the first call; initialize. + + When `sh_getopt' returns EOF, this is the index of the first of the + non-option elements that the caller should itself scan. + + Otherwise, `sh_optind' communicates from one call to the next + how much of ARGV has been scanned so far. */ + +/* XXX 1003.2 says this must be 1 before any call. */ +int sh_optind = 0; + +/* Index of the current argument. */ +static int sh_curopt; + +/* The next char to be scanned in the option-element + in which the last option character we returned was found. + This allows us to pick up the scan where we left off. + + If this is zero, or a null string, it means resume the scan + by advancing to the next ARGV-element. */ + +static char *nextchar; +static int sh_charindex; + +/* Callers store zero here to inhibit the error message + for unrecognized options. */ + +int sh_opterr = 1; + +/* Set to an option character which was unrecognized. + This must be initialized on some systems to avoid linking in the + system's own getopt implementation. */ + +int sh_optopt = '?'; + +/* Set to 1 when we see an invalid option; public so getopts can reset it. */ +int sh_badopt = 0; + +/* Scan elements of ARGV (whose length is ARGC) for option characters + given in OPTSTRING. + + If an element of ARGV starts with '-', and is not exactly "-" or "--", + then it is an option element. The characters of this element + (aside from the initial '-') are option characters. If `sh_getopt' + is called repeatedly, it returns successively each of the option characters + from each of the option elements. + + If `sh_getopt' finds another option character, it returns that character, + updating `sh_optind' and `nextchar' so that the next call to `sh_getopt' can + resume the scan with the following option character or ARGV-element. + + If there are no more option characters, `sh_getopt' returns `EOF'. + Then `sh_optind' is the index in ARGV of the first ARGV-element + that is not an option. + + OPTSTRING is a string containing the legitimate option characters. + If an option character is seen that is not listed in OPTSTRING, + return '?' after printing an error message. If you set `sh_opterr' to + zero, the error message is suppressed but we still return '?'. + + If a char in OPTSTRING is followed by a colon, that means it wants an arg, + so the following text in the same ARGV-element, or the text of the following + ARGV-element, is returned in `sh_optarg'. */ + +/* 1003.2 specifies the format of this message. */ +#define BADOPT(x) fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], x) +#define NEEDARG(x) fprintf (stderr, _("%s: option requires an argument -- %c\n"), argv[0], x) + +int +sh_getopt (argc, argv, optstring) + int argc; + char *const *argv; + const char *optstring; +{ + char c, *temp; + + sh_optarg = 0; + + if (sh_optind >= argc || sh_optind < 0) /* XXX was sh_optind > argc */ + { + sh_optind = argc; + return (EOF); + } + + /* Initialize the internal data when the first call is made. + Start processing options with ARGV-element 1 (since ARGV-element 0 + is the program name); the sequence of previously skipped + non-option ARGV-elements is empty. */ + + if (sh_optind == 0) + { + sh_optind = 1; + nextchar = (char *)NULL; + } + + if (nextchar == 0 || *nextchar == '\0') + { + /* If we have done all the ARGV-elements, stop the scan. */ + if (sh_optind >= argc) + return EOF; + + temp = argv[sh_optind]; + + /* Special ARGV-element `--' means premature end of options. + Skip it like a null option, and return EOF. */ + if (temp[0] == '-' && temp[1] == '-' && temp[2] == '\0') + { + sh_optind++; + return EOF; + } + + /* If we have come to a non-option, either stop the scan or describe + it to the caller and pass it by. This makes the pseudo-option + `-' mean the end of options, but does not skip over it. */ + if (temp[0] != '-' || temp[1] == '\0') + return EOF; + + /* We have found another option-ARGV-element. + Start decoding its characters. */ + nextchar = argv[sh_curopt = sh_optind] + 1; + sh_charindex = 1; + } + + /* Look at and handle the next option-character. */ + + c = *nextchar++; sh_charindex++; + temp = strchr (optstring, c); + + sh_optopt = c; + + /* Increment `sh_optind' when we start to process its last character. */ + if (nextchar == 0 || *nextchar == '\0') + { + sh_optind++; + nextchar = (char *)NULL; + } + + if (sh_badopt = (temp == NULL || c == ':')) + { + if (sh_opterr) + BADOPT (c); + + return '?'; + } + + if (temp[1] == ':') + { + if (nextchar && *nextchar) + { + /* This is an option that requires an argument. */ + sh_optarg = nextchar; + /* If we end this ARGV-element by taking the rest as an arg, + we must advance to the next element now. */ + sh_optind++; + } + else if (sh_optind == argc) + { + if (sh_opterr) + NEEDARG (c); + + sh_optopt = c; + sh_optarg = ""; /* Needed by getopts. */ + c = (optstring[0] == ':') ? ':' : '?'; + } + else + /* We already incremented `sh_optind' once; + increment it again when taking next ARGV-elt as argument. */ + sh_optarg = argv[sh_optind++]; + nextchar = (char *)NULL; + } + return c; +} + +void +sh_getopt_restore_state (argv) + char **argv; +{ + if (nextchar) + nextchar = argv[sh_curopt] + sh_charindex; +} + +#if 0 +void +sh_getopt_debug_restore_state (argv) + char **argv; +{ + if (nextchar && nextchar != argv[sh_curopt] + sh_charindex) + { + itrace("sh_getopt_debug_restore_state: resetting nextchar"); + nextchar = argv[sh_curopt] + sh_charindex; + } +} +#endif + +#ifdef TEST + +/* Compile with -DTEST to make an executable for use in testing + the above definition of `sh_getopt'. */ + +int +main (argc, argv) + int argc; + char **argv; +{ + int c; + int digit_sh_optind = 0; + + while (1) + { + int this_option_sh_optind = sh_optind ? sh_optind : 1; + + c = sh_getopt (argc, argv, "abc:d:0123456789"); + if (c == EOF) + break; + + switch (c) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + if (digit_sh_optind != 0 && digit_sh_optind != this_option_sh_optind) + printf ("digits occur in two different argv-elements.\n"); + digit_sh_optind = this_option_sh_optind; + printf ("option %c\n", c); + break; + + case 'a': + printf ("option a\n"); + break; + + case 'b': + printf ("option b\n"); + break; + + case 'c': + printf ("option c with value `%s'\n", sh_optarg); + break; + + case '?': + break; + + default: + printf ("?? sh_getopt returned character code 0%o ??\n", c); + } + } + + if (sh_optind < argc) + { + printf ("non-option ARGV-elements: "); + while (sh_optind < argc) + printf ("%s ", argv[sh_optind++]); + printf ("\n"); + } + + exit (0); +} + +#endif /* TEST */ diff --git a/bash-20060316/builtins/getopt.h b/bash-20060316/builtins/getopt.h new file mode 100644 index 000000000..7a4afb160 --- /dev/null +++ b/bash-20060316/builtins/getopt.h @@ -0,0 +1,62 @@ +/* Declarations for getopt. + Copyright (C) 1989, 1990, 1991, 1992, 1993 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 2, 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, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +/* XXX THIS HAS BEEN MODIFIED FOR INCORPORATION INTO BASH XXX */ + +#ifndef _SH_GETOPT_H +#define _SH_GETOPT_H 1 + +#include "stdc.h" + +/* For communication from `getopt' to the caller. + When `getopt' finds an option that takes an argument, + the argument value is returned here. + Also, when `ordering' is RETURN_IN_ORDER, + each non-option ARGV-element is returned here. */ + +extern char *sh_optarg; + +/* Index in ARGV of the next element to be scanned. + This is used for communication to and from the caller + and for communication between successive calls to `getopt'. + + On entry to `getopt', zero means this is the first call; initialize. + + When `getopt' returns EOF, this is the index of the first of the + non-option elements that the caller should itself scan. + + Otherwise, `sh_optind' communicates from one call to the next + how much of ARGV has been scanned so far. */ + +extern int sh_optind; + +/* Callers store zero here to inhibit the error message `getopt' prints + for unrecognized options. */ + +extern int sh_opterr; + +/* Set to an option character which was unrecognized. */ + +extern int sh_optopt; + +/* Set to 1 when an unrecognized option is encountered. */ +extern int sh_badopt; + +extern int sh_getopt __P((int, char *const *, const char *)); +extern void sh_getopt_restore_state __P((char **)); + +#endif /* _SH_GETOPT_H */ diff --git a/bash-20060316/builtins/getopts.def b/bash-20060316/builtins/getopts.def new file mode 100644 index 000000000..a9aad62bd --- /dev/null +++ b/bash-20060316/builtins/getopts.def @@ -0,0 +1,323 @@ +This file is getopts.def, from which is created getopts.c. +It implements the builtin "getopts" in Bash. + +Copyright (C) 1987-2004 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES getopts.c + +$BUILTIN getopts +$FUNCTION getopts_builtin +$SHORT_DOC getopts optstring name [arg] +Getopts is used by shell procedures to parse positional parameters. + +OPTSTRING contains the option letters to be recognized; if a letter +is followed by a colon, the option is expected to have an argument, +which should be separated from it by white space. + +Each time it is invoked, getopts will place the next option in the +shell variable $name, initializing name if it does not exist, and +the index of the next argument to be processed into the shell +variable OPTIND. OPTIND is initialized to 1 each time the shell or +a shell script is invoked. When an option requires an argument, +getopts places that argument into the shell variable OPTARG. + +getopts reports errors in one of two ways. If the first character +of OPTSTRING is a colon, getopts uses silent error reporting. In +this mode, no error messages are printed. If an invalid option is +seen, getopts places the option character found into OPTARG. If a +required argument is not found, getopts places a ':' into NAME and +sets OPTARG to the option character found. If getopts is not in +silent mode, and an invalid option is seen, getopts places '?' into +NAME and unsets OPTARG. If a required argument is not found, a '?' +is placed in NAME, OPTARG is unset, and a diagnostic message is +printed. + +If the shell variable OPTERR has the value 0, getopts disables the +printing of error messages, even if the first character of +OPTSTRING is not a colon. OPTERR has the value 1 by default. + +Getopts normally parses the positional parameters ($0 - $9), but if +more arguments are given, they are parsed instead. +$END + +#include + +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include "../bashansi.h" + +#include "../shell.h" +#include "common.h" +#include "bashgetopt.h" +#include "getopt.h" + +#define G_EOF -1 +#define G_INVALID_OPT -2 +#define G_ARG_MISSING -3 + +extern char *this_command_name; + +static int getopts_bind_variable __P((char *, char *)); +static int dogetopts __P((int, char **)); + +/* getopts_reset is magic code for when OPTIND is reset. N is the + value that has just been assigned to OPTIND. */ +void +getopts_reset (newind) + int newind; +{ + sh_optind = newind; + sh_badopt = 0; +} + +static int +getopts_bind_variable (name, value) + char *name, *value; +{ + SHELL_VAR *v; + + if (legal_identifier (name)) + { + v = bind_variable (name, value, 0); + return (v && (readonly_p (v) == 0)) ? EXECUTION_SUCCESS : EXECUTION_FAILURE; + } + else + { + sh_invalidid (name); + return (EXECUTION_FAILURE); + } +} + +/* Error handling is now performed as specified by Posix.2, draft 11 + (identical to that of ksh-88). The special handling is enabled if + the first character of the option string is a colon; this handling + disables diagnostic messages concerning missing option arguments + and invalid option characters. The handling is as follows. + + INVALID OPTIONS: + name -> "?" + if (special_error) then + OPTARG = option character found + no error output + else + OPTARG unset + diagnostic message + fi + + MISSING OPTION ARGUMENT; + if (special_error) then + name -> ":" + OPTARG = option character found + else + name -> "?" + OPTARG unset + diagnostic message + fi + */ + +static int +dogetopts (argc, argv) + int argc; + char **argv; +{ + int ret, special_error, old_opterr, i, n; + char strval[2], numval[16]; + char *optstr; /* list of options */ + char *name; /* variable to get flag val */ + char *t; + + if (argc < 3) + { + builtin_usage (); + return (EX_USAGE); + } + + /* argv[0] is "getopts". */ + + optstr = argv[1]; + name = argv[2]; + argc -= 2; + argv += 2; + + special_error = optstr[0] == ':'; + + if (special_error) + { + old_opterr = sh_opterr; + optstr++; + sh_opterr = 0; /* suppress diagnostic messages */ + } + + if (argc > 1) + { + sh_getopt_restore_state (argv); + t = argv[0]; + argv[0] = dollar_vars[0]; + ret = sh_getopt (argc, argv, optstr); + argv[0] = t; + } + else if (rest_of_args == (WORD_LIST *)NULL) + { + for (i = 0; i < 10 && dollar_vars[i]; i++) + ; + + sh_getopt_restore_state (dollar_vars); + ret = sh_getopt (i, dollar_vars, optstr); + } + else + { + register WORD_LIST *words; + char **v; + + for (i = 0; i < 10 && dollar_vars[i]; i++) + ; + for (words = rest_of_args; words; words = words->next, i++) + ; + v = strvec_create (i + 1); + for (i = 0; i < 10 && dollar_vars[i]; i++) + v[i] = dollar_vars[i]; + for (words = rest_of_args; words; words = words->next, i++) + v[i] = words->word->word; + v[i] = (char *)NULL; + sh_getopt_restore_state (v); + ret = sh_getopt (i, v, optstr); + free (v); + } + + if (special_error) + sh_opterr = old_opterr; + + /* Set the OPTIND variable in any case, to handle "--" skipping. It's + highly unlikely that 14 digits will be too few. */ + if (sh_optind < 10) + { + numval[14] = sh_optind + '0'; + numval[15] = '\0'; + i = 14; + } + else + { + numval[i = 15] = '\0'; + n = sh_optind; + do + { + numval[--i] = (n % 10) + '0'; + } + while (n /= 10); + } + bind_variable ("OPTIND", numval + i, 0); + + /* If an error occurred, decide which one it is and set the return + code appropriately. In all cases, the option character in error + is in OPTOPT. If an invalid option was encountered, OPTARG is + NULL. If a required option argument was missing, OPTARG points + to a NULL string (that is, sh_optarg[0] == 0). */ + if (ret == '?') + { + if (sh_optarg == NULL) + ret = G_INVALID_OPT; + else if (sh_optarg[0] == '\0') + ret = G_ARG_MISSING; + } + + if (ret == G_EOF) + { + unbind_variable ("OPTARG"); + getopts_bind_variable (name, "?"); + return (EXECUTION_FAILURE); + } + + if (ret == G_INVALID_OPT) + { + /* Invalid option encountered. */ + ret = getopts_bind_variable (name, "?"); + + if (special_error) + { + strval[0] = (char)sh_optopt; + strval[1] = '\0'; + bind_variable ("OPTARG", strval, 0); + } + else + unbind_variable ("OPTARG"); + + return (ret); + } + + if (ret == G_ARG_MISSING) + { + /* Required argument missing. */ + if (special_error) + { + ret = getopts_bind_variable (name, ":"); + + strval[0] = (char)sh_optopt; + strval[1] = '\0'; + bind_variable ("OPTARG", strval, 0); + } + else + { + ret = getopts_bind_variable (name, "?"); + unbind_variable ("OPTARG"); + } + return (ret); + } + + bind_variable ("OPTARG", sh_optarg, 0); + + strval[0] = (char) ret; + strval[1] = '\0'; + return (getopts_bind_variable (name, strval)); +} + +/* The getopts builtin. Build an argv, and call dogetopts with it. */ +int +getopts_builtin (list) + WORD_LIST *list; +{ + char **av; + int ac, ret; + + if (list == 0) + { + builtin_usage (); + return EX_USAGE; + } + + reset_internal_getopt (); + if (internal_getopt (list, "") != -1) + { + builtin_usage (); + return (EX_USAGE); + } + list = loptend; + + av = make_builtin_argv (list, &ac); + ret = dogetopts (ac, av); + free ((char *)av); + + return (ret); +} diff --git a/bash-20060316/builtins/hash.def b/bash-20060316/builtins/hash.def new file mode 100644 index 000000000..697ffd0a9 --- /dev/null +++ b/bash-20060316/builtins/hash.def @@ -0,0 +1,273 @@ +This file is hash.def, from which is created hash.c. +It implements the builtin "hash" in Bash. + +Copyright (C) 1987-2006 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES hash.c + +$BUILTIN hash +$FUNCTION hash_builtin +$SHORT_DOC hash [-lr] [-p pathname] [-dt] [name ...] +For each NAME, the full pathname of the command is determined and +remembered. If the -p option is supplied, PATHNAME is used as the +full pathname of NAME, and no path search is performed. The -r +option causes the shell to forget all remembered locations. The -d +option causes the shell to forget the remembered location of each NAME. +If the -t option is supplied the full pathname to which each NAME +corresponds is printed. If multiple NAME arguments are supplied with +-t, the NAME is printed before the hashed full pathname. The -l option +causes output to be displayed in a format that may be reused as input. +If no arguments are given, information about remembered commands is displayed. +$END + +#include + +#include + +#include "../bashtypes.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include + +#include "../bashansi.h" +#include "../bashintl.h" + +#include "../shell.h" +#include "../builtins.h" +#include "../flags.h" +#include "../findcmd.h" +#include "../hashcmd.h" +#include "common.h" +#include "bashgetopt.h" + +extern int posixly_correct; +extern int dot_found_in_search; +extern char *this_command_name; + +static int add_hashed_command __P((char *, int)); +static int print_hash_info __P((BUCKET_CONTENTS *)); +static int print_portable_hash_info __P((BUCKET_CONTENTS *)); +static int print_hashed_commands __P((int)); +static int list_hashed_filename_targets __P((WORD_LIST *, int)); + +/* Print statistics on the current state of hashed commands. If LIST is + not empty, then rehash (or hash in the first place) the specified + commands. */ +int +hash_builtin (list) + WORD_LIST *list; +{ + int expunge_hash_table, list_targets, list_portably, delete, opt; + char *w, *pathname; + + if (hashing_enabled == 0) + { + builtin_error (_("hashing disabled")); + return (EXECUTION_FAILURE); + } + + expunge_hash_table = list_targets = list_portably = delete = 0; + pathname = (char *)NULL; + reset_internal_getopt (); + while ((opt = internal_getopt (list, "dlp:rt")) != -1) + { + switch (opt) + { + case 'd': + delete = 1; + break; + case 'l': + list_portably = 1; + break; + case 'p': + pathname = list_optarg; + break; + case 'r': + expunge_hash_table = 1; + break; + case 't': + list_targets = 1; + break; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + /* hash -t requires at least one argument. */ + if (list == 0 && list_targets) + { + sh_needarg ("-t"); + return (EXECUTION_FAILURE); + } + + /* We want hash -r to be silent, but hash -- to print hashing info, so + we test expunge_hash_table. */ + if (list == 0 && expunge_hash_table == 0) + { + opt = print_hashed_commands (list_portably); + if (opt == 0 && posixly_correct == 0) + printf (_("%s: hash table empty\n"), this_command_name); + + return (EXECUTION_SUCCESS); + } + + if (expunge_hash_table) + phash_flush (); + + /* If someone runs `hash -r -t xyz' he will be disappointed. */ + if (list_targets) + return (list_hashed_filename_targets (list, list_portably)); + +#if defined (RESTRICTED_SHELL) + if (restricted && pathname && strchr (pathname, '/')) + { + sh_restricted (pathname); + return (EXECUTION_FAILURE); + } +#endif + + for (opt = EXECUTION_SUCCESS; list; list = list->next) + { + /* Add, remove or rehash the specified commands. */ + w = list->word->word; + if (pathname) + { + if (is_directory (pathname)) + { +#ifdef EISDIR + builtin_error ("%s: %s", pathname, strerror (EISDIR)); +#else + builtin_error ("%s: is a directory", pathname); +#endif + opt = EXECUTION_FAILURE; + } + else + phash_insert (w, pathname, 0, 0); + } + else if (absolute_program (w)) + continue; + else if (delete) + { + if (phash_remove (w)) + { + sh_notfound (w); + opt = EXECUTION_FAILURE; + } + } + else if (add_hashed_command (w, 0)) + opt = EXECUTION_FAILURE; + } + + fflush (stdout); + return (opt); +} + +static int +add_hashed_command (w, quiet) + char *w; + int quiet; +{ + int rv; + char *full_path; + + rv = 0; + if (find_function (w) == 0 && find_shell_builtin (w) == 0) + { + full_path = find_user_command (w); + if (full_path && executable_file (full_path)) + phash_insert (w, full_path, dot_found_in_search, 0); + else + { + if (quiet == 0) + sh_notfound (w); + rv++; + } + FREE (full_path); + } + return (rv); +} + +/* Print information about current hashed info. */ +static int +print_hash_info (item) + BUCKET_CONTENTS *item; +{ + printf ("%4d\t%s\n", item->times_found, pathdata(item)->path); + return 0; +} + +static int +print_portable_hash_info (item) + BUCKET_CONTENTS *item; +{ + printf ("builtin hash -p %s %s\n", pathdata(item)->path, item->key); + return 0; +} + +static int +print_hashed_commands (fmt) + int fmt; +{ + if (hashed_filenames == 0 || HASH_ENTRIES (hashed_filenames) == 0) + return (0); + + if (fmt == 0) + printf ("hits\tcommand\n"); + hash_walk (hashed_filenames, fmt ? print_portable_hash_info : print_hash_info); + return (1); +} + +static int +list_hashed_filename_targets (list, fmt) + WORD_LIST *list; + int fmt; +{ + int all_found, multiple; + char *target; + WORD_LIST *l; + + all_found = 1; + multiple = list->next != 0; + + for (l = list; l; l = l->next) + { + target = phash_search (l->word->word); + if (target == 0) + { + all_found = 0; + sh_notfound (l->word->word); + continue; + } + if (fmt) + printf ("builtin hash -p %s %s\n", target, l->word->word); + else + { + if (multiple) + printf ("%s\t", l->word->word); + printf ("%s\n", target); + } + } + + return (all_found ? EXECUTION_SUCCESS : EXECUTION_FAILURE); +} diff --git a/bash-20060316/builtins/help.def b/bash-20060316/builtins/help.def new file mode 100644 index 000000000..35a6de9cc --- /dev/null +++ b/bash-20060316/builtins/help.def @@ -0,0 +1,207 @@ +This file is help.def, from which is created help.c. +It implements the builtin "help" in Bash. + +Copyright (C) 1987-2003 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES help.c + +$BUILTIN help +$FUNCTION help_builtin +$DEPENDS_ON HELP_BUILTIN +$SHORT_DOC help [-s] [pattern ...] +Display helpful information about builtin commands. If PATTERN is +specified, gives detailed help on all commands matching PATTERN, +otherwise a list of the builtins is printed. The -s option +restricts the output for each builtin command matching PATTERN to +a short usage synopsis. +$END + +#include + +#if defined (HELP_BUILTIN) +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include + +#include + +#include "../bashintl.h" + +#include "../shell.h" +#include "../builtins.h" +#include "../pathexp.h" +#include "common.h" +#include "bashgetopt.h" + +#include +#include + +#ifndef errno +extern int errno; +#endif + +static void show_builtin_command_help __P((void)); +static void show_longdoc __P((int)); + +/* Print out a list of the known functions in the shell, and what they do. + If LIST is supplied, print out the list which matches for each pattern + specified. */ +int +help_builtin (list) + WORD_LIST *list; +{ + register int i; + char *pattern, *name; + int plen, match_found, sflag; + + sflag = 0; + reset_internal_getopt (); + while ((i = internal_getopt (list, "s")) != -1) + { + switch (i) + { + case 's': + sflag = 1; + break; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + if (list == 0) + { + show_shell_version (0); + show_builtin_command_help (); + return (EXECUTION_SUCCESS); + } + + /* We should consider making `help bash' do something. */ + + if (glob_pattern_p (list->word->word)) + { + if (list->next) + printf (_("Shell commands matching keywords `")); + else + printf (_("Shell commands matching keyword `")); + print_word_list (list, ", "); + printf ("'\n\n"); + } + + for (match_found = 0, pattern = ""; list; list = list->next) + { + pattern = list->word->word; + plen = strlen (pattern); + + for (i = 0; name = shell_builtins[i].name; i++) + { + QUIT; + if ((strncmp (pattern, name, plen) == 0) || + (strmatch (pattern, name, FNMATCH_EXTFLAG) != FNM_NOMATCH)) + { + printf ("%s: %s\n", name, shell_builtins[i].short_doc); + + if (sflag == 0) + show_longdoc (i); + + match_found++; + } + } + } + + if (match_found == 0) + { + builtin_error (_("no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."), pattern, pattern, pattern); + return (EXECUTION_FAILURE); + } + + fflush (stdout); + return (EXECUTION_SUCCESS); +} + +/* By convention, enforced by mkbuiltins.c, if separate help files are being + used, the long_doc array contains one string -- the full pathname of the + help file for this builtin. */ +static void +show_longdoc (i) + int i; +{ + register int j; + char * const *doc; + int fd; + + doc = shell_builtins[i].long_doc; + + if (doc && doc[0] && *doc[0] == '/' && doc[1] == (char *)NULL) + { + fd = open (doc[0], O_RDONLY); + if (fd == -1) + { + builtin_error (_("%s: cannot open: %s"), doc[0], strerror (errno)); + return; + } + zcatfd (fd, 1, doc[0]); + close (fd); + } + else + for (j = 0; doc[j]; j++) + printf ("%*s%s\n", BASE_INDENT, " ", _(doc[j])); +} + +static void +show_builtin_command_help () +{ + int i, j; + char blurb[36]; + + printf ( +_("These shell commands are defined internally. Type `help' to see this list.\n\ +Type `help name' to find out more about the function `name'.\n\ +Use `info bash' to find out more about the shell in general.\n\ +Use `man -k' or `info' to find out more about commands not in this list.\n\ +\n\ +A star (*) next to a name means that the command is disabled.\n\ +\n")); + + for (i = 0; i < num_shell_builtins; i++) + { + QUIT; + blurb[0] = (shell_builtins[i].flags & BUILTIN_ENABLED) ? ' ' : '*'; + strncpy (blurb + 1, shell_builtins[i].short_doc, 34); + blurb[35] = '\0'; + printf ("%s", blurb); + + if (i % 2) + printf ("\n"); + else + for (j = strlen (blurb); j < 35; j++) + putc (' ', stdout); + } + if (i % 2) + printf ("\n"); +} +#endif /* HELP_BUILTIN */ diff --git a/bash-20060316/builtins/history.def b/bash-20060316/builtins/history.def new file mode 100644 index 000000000..efee00521 --- /dev/null +++ b/bash-20060316/builtins/history.def @@ -0,0 +1,415 @@ +This file is history.def, from which is created history.c. +It implements the builtin "history" in Bash. + +Copyright (C) 1987-2003 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES history.c + +$BUILTIN history +$FUNCTION history_builtin +$DEPENDS_ON HISTORY +$SHORT_DOC history [-c] [-d offset] [n] or history -awrn [filename] or history -ps arg [arg...] +Display the history list with line numbers. Lines listed with +with a `*' have been modified. Argument of N says to list only +the last N lines. The `-c' option causes the history list to be +cleared by deleting all of the entries. The `-d' option deletes +the history entry at offset OFFSET. The `-w' option writes out the +current history to the history file; `-r' means to read the file and +append the contents to the history list instead. `-a' means +to append history lines from this session to the history file. +Argument `-n' means to read all history lines not already read +from the history file and append them to the history list. + +If FILENAME is given, then that is used as the history file else +if $HISTFILE has a value, that is used, else ~/.bash_history. +If the -s option is supplied, the non-option ARGs are appended to +the history list as a single entry. The -p option means to perform +history expansion on each ARG and display the result, without storing +anything in the history list. + +If the $HISTTIMEFORMAT variable is set and not null, its value is used +as a format string for strftime(3) to print the time stamp associated +with each displayed history entry. No time stamps are printed otherwise. +$END + +#include + +#if defined (HISTORY) +#include "../bashtypes.h" +#if ! defined(_MINIX) && defined (HAVE_SYS_FILE_H) +# include +#endif +#include "posixstat.h" +#include "filecntl.h" +#include +#include +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "../bashansi.h" +#include "../bashintl.h" + +#include "../shell.h" +#include "../bashhist.h" +#include +#include "bashgetopt.h" +#include "common.h" + +#if !defined (errno) +extern int errno; +#endif + +extern int current_command_line_count; +extern int force_append_history; /* shopt -s histappend */ + +int delete_last_history __P((void)); + +static char *histtime __P((HIST_ENTRY *, const char *)); +static void display_history __P((WORD_LIST *)); +static int delete_histent __P((int)); +static void push_history __P((WORD_LIST *)); +static int expand_and_print_history __P((WORD_LIST *)); + +#define AFLAG 0x01 +#define RFLAG 0x02 +#define WFLAG 0x04 +#define NFLAG 0x08 +#define SFLAG 0x10 +#define PFLAG 0x20 +#define CFLAG 0x40 +#define DFLAG 0x80 + +int +history_builtin (list) + WORD_LIST *list; +{ + int flags, opt, result, old_history_lines, obase; + char *filename, *delete_arg; + intmax_t delete_offset; + + flags = 0; + reset_internal_getopt (); + while ((opt = internal_getopt (list, "acd:npsrw")) != -1) + { + switch (opt) + { + case 'a': + flags |= AFLAG; + break; + case 'c': + flags |= CFLAG; + break; + case 'n': + flags |= NFLAG; + break; + case 'r': + flags |= RFLAG; + break; + case 'w': + flags |= WFLAG; + break; + case 's': + flags |= SFLAG; + break; + case 'd': + flags |= DFLAG; + delete_arg = list_optarg; + break; + case 'p': +#if defined (BANG_HISTORY) + flags |= PFLAG; +#endif + break; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + opt = flags & (AFLAG|RFLAG|WFLAG|NFLAG); + if (opt && opt != AFLAG && opt != RFLAG && opt != WFLAG && opt != NFLAG) + { + builtin_error (_("cannot use more than one of -anrw")); + return (EXECUTION_FAILURE); + } + + /* clear the history, but allow other arguments to add to it again. */ + if (flags & CFLAG) + { + clear_history (); + if (list == 0) + return (EXECUTION_SUCCESS); + } + + if (flags & SFLAG) + { + if (list) + push_history (list); + return (EXECUTION_SUCCESS); + } +#if defined (BANG_HISTORY) + else if (flags & PFLAG) + { + if (list) + return (expand_and_print_history (list)); + return (EXECUTION_SUCCESS); + } +#endif + else if (flags & DFLAG) + { + if ((legal_number (delete_arg, &delete_offset) == 0) + || (delete_offset < history_base) + || (delete_offset > (history_base + history_length))) + { + sh_erange (delete_arg, _("history position")); + return (EXECUTION_FAILURE); + } + opt = delete_offset; + result = delete_histent (opt - history_base); + /* Since remove_history changes history_length, this can happen if + we delete the last history entry. */ + if (where_history () > history_length) + history_set_pos (history_length); + return (result ? EXECUTION_SUCCESS : EXECUTION_FAILURE); + } + else if ((flags & (AFLAG|RFLAG|NFLAG|WFLAG|CFLAG)) == 0) + { + display_history (list); + return (EXECUTION_SUCCESS); + } + + filename = list ? list->word->word : get_string_value ("HISTFILE"); + result = EXECUTION_SUCCESS; + + if (flags & AFLAG) /* Append session's history to file. */ + result = maybe_append_history (filename); + else if (flags & WFLAG) /* Write entire history. */ + result = write_history (filename); + else if (flags & RFLAG) /* Read entire file. */ + result = read_history (filename); + else if (flags & NFLAG) /* Read `new' history from file. */ + { + /* Read all of the lines in the file that we haven't already read. */ + old_history_lines = history_lines_in_file; + obase = history_base; + + using_history (); + result = read_history_range (filename, history_lines_in_file, -1); + using_history (); + + history_lines_in_file = where_history (); + + /* If we're rewriting the history file at shell exit rather than just + appending the lines from this session to it, the question is whether + we reset history_lines_this_session to 0, losing any history entries + we had before we read the new entries from the history file, or + whether we count the new entries we just read from the file as + history lines added during this session. + Right now, we do the latter. This will cause these history entries + to be written to the history file along with any intermediate entries + we add when we do a `history -a', but the alternative is losing + them altogether. */ + if (force_append_history == 0) + history_lines_this_session += history_lines_in_file - old_history_lines + + history_base - obase; + } + + return (result ? EXECUTION_FAILURE : EXECUTION_SUCCESS); +} + +/* Accessors for HIST_ENTRY lists that are called HLIST. */ +#define histline(i) (hlist[(i)]->line) +#define histdata(i) (hlist[(i)]->data) + +static char * +histtime (hlist, histtimefmt) + HIST_ENTRY *hlist; + const char *histtimefmt; +{ + static char timestr[128]; + time_t t; + + t = history_get_time (hlist); + if (t) + strftime (timestr, sizeof (timestr), histtimefmt, localtime (&t)); + else + strcpy (timestr, "??"); + return timestr; +} + +static void +display_history (list) + WORD_LIST *list; +{ + register int i; + intmax_t limit; + HIST_ENTRY **hlist; + char *histtimefmt, *timestr; + + if (list) + { + limit = get_numeric_arg (list, 0); + if (limit < 0) + limit = -limit; + } + else + limit = -1; + + hlist = history_list (); + + if (hlist) + { + for (i = 0; hlist[i]; i++) + ; + + if (0 <= limit && limit < i) + i -= limit; + else + i = 0; + + + histtimefmt = get_string_value ("HISTTIMEFORMAT"); + + while (hlist[i]) + { + QUIT; + + timestr = (histtimefmt && *histtimefmt) ? histtime (hlist[i], histtimefmt) : (char *)NULL; + printf ("%5d%c %s%s\n", i + history_base, + histdata(i) ? '*' : ' ', + ((timestr && *timestr) ? timestr : ""), + histline(i)); + i++; + } + } +} + +/* Delete and free the history list entry at offset I. */ +static int +delete_histent (i) + int i; +{ + HIST_ENTRY *discard; + + discard = remove_history (i); + if (discard) + free_history_entry (discard); + + return 1; +} + +int +delete_last_history () +{ + register int i; + HIST_ENTRY **hlist, *histent; + int r; + + hlist = history_list (); + if (hlist == NULL) + return 0; + + for (i = 0; hlist[i]; i++) + ; + i--; + + /* History_get () takes a parameter that must be offset by history_base. */ + histent = history_get (history_base + i); /* Don't free this */ + if (histent == NULL) + return 0; + + r = delete_histent (i); + + if (where_history () > history_length) + history_set_pos (history_length); + + return r; +} + +/* Remove the last entry in the history list and add each argument in + LIST to the history. */ +static void +push_history (list) + WORD_LIST *list; +{ + char *s; + + /* Delete the last history entry if it was a single entry added to the + history list (generally the `history -s' itself), or if `history -s' + is being used in a compound command and the compound command was + added to the history as a single element (command-oriented history). + 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 && delete_last_history () == 0) +#else + if (hist_last_line_pushed == 0 && + (hist_last_line_added || + (current_command_line_count > 0 && current_command_first_line_saved && command_oriented_history)) + && delete_last_history () == 0) +#endif + return; + + s = string_list (list); + /* Call check_add_history with FORCE set to 1 to skip the check against + current_command_line_count. If history -s is used in a compound + command, the above code will delete the compound command's history + entry and this call will add the line to the history as a separate + entry. Without FORCE=1, if current_command_line_count were > 1, the + line would be appended to the entry before the just-deleted entry. */ + check_add_history (s, 1); /* obeys HISTCONTROL, HISTIGNORE */ + + hist_last_line_pushed = 1; /* XXX */ + free (s); +} + +#if defined (BANG_HISTORY) +static int +expand_and_print_history (list) + WORD_LIST *list; +{ + char *s; + int r, result; + + if (hist_last_line_pushed == 0 && hist_last_line_added && delete_last_history () == 0) + return EXECUTION_FAILURE; + result = EXECUTION_SUCCESS; + while (list) + { + r = history_expand (list->word->word, &s); + if (r < 0) + { + builtin_error (_("%s: history expansion failed"), list->word->word); + result = EXECUTION_FAILURE; + } + else + { + fputs (s, stdout); + putchar ('\n'); + } + FREE (s); + list = list->next; + } + fflush (stdout); + return result; +} +#endif /* BANG_HISTORY */ +#endif /* HISTORY */ diff --git a/bash-20060316/builtins/inlib.def b/bash-20060316/builtins/inlib.def new file mode 100644 index 000000000..094c4b949 --- /dev/null +++ b/bash-20060316/builtins/inlib.def @@ -0,0 +1,76 @@ +This file is inlib.def, from which is created inlib.c. +It implements the Apollo-specific builtin "inlib" in Bash. + +Copyright (C) 1987-2002 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES inlib.c +#include + +#include +#include "../shell.h" + +$BUILTIN inlib +$FUNCTION inlib_builtin +$DEPENDS_ON apollo +$SHORT_DOC inlib pathname [pathname...] +Install a user-supplied library specified by pathname in the current +shell process. The library is used to resolve external references +in programs and libraries loaded after its installation. Note +that the library is not loaded into the address space unless it is +needed to resolve an external reference. The list of inlibed +libraries is passed to all children of the current shell. +$END + +#if defined (apollo) + +#include +#include + +inlib_builtin (list) + WORD_LIST *list; +{ + status_$t status; + int return_value; + short len; + + if (!list) + { + builtin_usage (); + return (EX_USAGE); + } + + return_value = EXECUTION_SUCCESS; + + while (list) + { + len = (short)strlen (list->word->word); + loader_$inlib (list->word->word, len, &status); + + if (status.all != status_$ok) + { + builtin_error ("%s: inlib failed", list->word->word); + return_value = EXECUTION_FAILURE; + } + + list = list->next; + } + + return (return_value); +} +#endif /* apollo */ diff --git a/bash-20060316/builtins/jobs.def b/bash-20060316/builtins/jobs.def new file mode 100644 index 000000000..4c3ba6a73 --- /dev/null +++ b/bash-20060316/builtins/jobs.def @@ -0,0 +1,280 @@ +This file is jobs.def, from which is created jobs.c. +It implements the builtins "jobs" and "disown" in Bash. + +Copyright (C) 1987-2005 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES jobs.c + +$BUILTIN jobs +$FUNCTION jobs_builtin +$DEPENDS_ON JOB_CONTROL +$SHORT_DOC jobs [-lnprs] [jobspec ...] or jobs -x command [args] +Lists the active jobs. The -l option lists process id's in addition +to the normal information; the -p option lists process id's only. +If -n is given, only processes that have changed status since the last +notification are printed. JOBSPEC restricts output to that job. The +-r and -s options restrict output to running and stopped jobs only, +respectively. Without options, the status of all active jobs is +printed. If -x is given, COMMAND is run after all job specifications +that appear in ARGS have been replaced with the process ID of that job's +process group leader. +$END + +#include + +#if defined (JOB_CONTROL) +#include "../bashtypes.h" +#include +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "../bashansi.h" +#include "../bashintl.h" + +#include "../shell.h" +#include "../jobs.h" +#include "../execute_cmd.h" +#include "bashgetopt.h" +#include "common.h" + +#define JSTATE_ANY 0x0 +#define JSTATE_RUNNING 0x1 +#define JSTATE_STOPPED 0x2 + +static int execute_list_with_replacements __P((WORD_LIST *)); + +/* The `jobs' command. Prints outs a list of active jobs. If the + argument `-l' is given, then the process id's are printed also. + If the argument `-p' is given, print the process group leader's + pid only. If `-n' is given, only processes that have changed + status since the last notification are printed. If -x is given, + replace all job specs with the pid of the appropriate process + group leader and execute the command. The -r and -s options mean + to print info about running and stopped jobs only, respectively. */ +int +jobs_builtin (list) + WORD_LIST *list; +{ + int form, execute, state, opt, any_failed, job; + sigset_t set, oset; + + execute = any_failed = 0; + form = JLIST_STANDARD; + state = JSTATE_ANY; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "lpnxrs")) != -1) + { + switch (opt) + { + case 'l': + form = JLIST_LONG; + break; + case 'p': + form = JLIST_PID_ONLY; + break; + case 'n': + form = JLIST_CHANGED_ONLY; + break; + case 'x': + if (form != JLIST_STANDARD) + { + builtin_error (_("no other options allowed with `-x'")); + return (EXECUTION_FAILURE); + } + execute++; + break; + case 'r': + state = JSTATE_RUNNING; + break; + case 's': + state = JSTATE_STOPPED; + break; + + default: + builtin_usage (); + return (EX_USAGE); + } + } + + list = loptend; + + if (execute) + return (execute_list_with_replacements (list)); + + if (!list) + { + switch (state) + { + case JSTATE_ANY: + list_all_jobs (form); + break; + case JSTATE_RUNNING: + list_running_jobs (form); + break; + case JSTATE_STOPPED: + list_stopped_jobs (form); + break; + } + return (EXECUTION_SUCCESS); + } + + while (list) + { + BLOCK_CHILD (set, oset); + job = get_job_spec (list); + + if ((job == NO_JOB) || jobs == 0 || get_job_by_jid (job) == 0) + { + sh_badjob (list->word->word); + any_failed++; + } + else if (job != DUP_JOB) + list_one_job ((JOB *)NULL, form, 0, job); + + UNBLOCK_CHILD (oset); + list = list->next; + } + return (any_failed ? EXECUTION_FAILURE : EXECUTION_SUCCESS); +} + +static int +execute_list_with_replacements (list) + WORD_LIST *list; +{ + register WORD_LIST *l; + int job, result; + COMMAND *command; + JOB *j; + + /* First do the replacement of job specifications with pids. */ + for (l = list; l; l = l->next) + { + if (l->word->word[0] == '%') /* we have a winner */ + { + job = get_job_spec (l); + + /* A bad job spec is not really a job spec! Pass it through. */ + if (INVALID_JOB (job)) + continue; + + j = get_job_by_jid (job); + free (l->word->word); + l->word->word = itos (j->pgrp); + } + } + + /* Next make a new simple command and execute it. */ + begin_unwind_frame ("jobs_builtin"); + + command = make_bare_simple_command (); + command->value.Simple->words = copy_word_list (list); + command->value.Simple->redirects = (REDIRECT *)NULL; + command->flags |= CMD_INHIBIT_EXPANSION; + command->value.Simple->flags |= CMD_INHIBIT_EXPANSION; + + add_unwind_protect (dispose_command, command); + result = execute_command (command); + dispose_command (command); + + discard_unwind_frame ("jobs_builtin"); + return (result); +} +#endif /* JOB_CONTROL */ + +$BUILTIN disown +$FUNCTION disown_builtin +$DEPENDS_ON JOB_CONTROL +$SHORT_DOC disown [-h] [-ar] [jobspec ...] +By default, removes each JOBSPEC argument from the table of active jobs. +If the -h option is given, the job is not removed from the table, but is +marked so that SIGHUP is not sent to the job if the shell receives a +SIGHUP. The -a option, when JOBSPEC is not supplied, means to remove all +jobs from the job table; the -r option means to remove only running jobs. +$END + +#if defined (JOB_CONTROL) +int +disown_builtin (list) + WORD_LIST *list; +{ + int opt, job, retval, nohup_only, running_jobs, all_jobs; + sigset_t set, oset; + intmax_t pid_value; + + nohup_only = running_jobs = all_jobs = 0; + reset_internal_getopt (); + while ((opt = internal_getopt (list, "ahr")) != -1) + { + switch (opt) + { + case 'a': + all_jobs = 1; + break; + case 'h': + nohup_only = 1; + break; + case 'r': + running_jobs = 1; + break; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + retval = EXECUTION_SUCCESS; + + /* `disown -a' or `disown -r' */ + if (list == 0 && (all_jobs || running_jobs)) + { + if (nohup_only) + nohup_all_jobs (running_jobs); + else + delete_all_jobs (running_jobs); + return (EXECUTION_SUCCESS); + } + + do + { + BLOCK_CHILD (set, oset); + job = (list && legal_number (list->word->word, &pid_value) && pid_value == (pid_t) pid_value) + ? get_job_by_pid ((pid_t) pid_value, 0) + : get_job_spec (list); + + if (job == NO_JOB || jobs == 0 || INVALID_JOB (job)) + { + sh_badjob (list ? list->word->word : "current"); + retval = EXECUTION_FAILURE; + } + else if (nohup_only) + nohup_job (job); + else + delete_job (job, 1); + UNBLOCK_CHILD (oset); + + if (list) + list = list->next; + } + while (list); + + return (retval); +} +#endif /* JOB_CONTROL */ diff --git a/bash-20060316/builtins/kill.def b/bash-20060316/builtins/kill.def new file mode 100644 index 000000000..bedbb1a6d --- /dev/null +++ b/bash-20060316/builtins/kill.def @@ -0,0 +1,252 @@ +This file is kill.def, from which is created kill.c. +It implements the builtin "kill" in Bash. + +Copyright (C) 1987-2005 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES kill.c + +$BUILTIN kill +$FUNCTION kill_builtin +$SHORT_DOC kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec] +Send the processes named by PID (or JOBSPEC) the signal SIGSPEC. If +SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l' +lists the signal names; if arguments follow `-l' they are assumed to +be signal numbers for which names should be listed. Kill is a shell +builtin for two reasons: it allows job IDs to be used instead of +process IDs, and, if you have reached the limit on processes that +you can create, you don't have to start a process to kill another one. +$END + +#include + +#include +#include +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include "../bashansi.h" +#include "../bashintl.h" + +#include "../shell.h" +#include "../trap.h" +#include "../jobs.h" +#include "common.h" + +/* Not all systems declare ERRNO in errno.h... and some systems #define it! */ +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +extern int posixly_correct; + +static void kill_error __P((pid_t, int)); + +#if !defined (CONTINUE_AFTER_KILL_ERROR) +# define CONTINUE_OR_FAIL return (EXECUTION_FAILURE) +#else +# define CONTINUE_OR_FAIL goto continue_killing +#endif /* CONTINUE_AFTER_KILL_ERROR */ + +/* Here is the kill builtin. We only have it so that people can type + kill -KILL %1? No, if you fill up the process table this way you + can still kill some. */ +int +kill_builtin (list) + WORD_LIST *list; +{ + int sig, any_succeeded, listing, saw_signal, dflags; + char *sigspec, *word; + pid_t pid; + intmax_t pid_value; + + if (list == 0) + { + builtin_usage (); + return (EXECUTION_FAILURE); + } + + any_succeeded = listing = saw_signal = 0; + sig = SIGTERM; + sigspec = "TERM"; + + dflags = DSIG_NOCASE | ((posixly_correct == 0) ? DSIG_SIGPREFIX : 0); + /* Process options. */ + while (list) + { + word = list->word->word; + + if (ISOPTION (word, 'l')) + { + listing++; + list = list->next; + } + else if (ISOPTION (word, 's') || ISOPTION (word, 'n')) + { + list = list->next; + if (list) + { + sigspec = list->word->word; + if (sigspec[0] == '0' && sigspec[1] == '\0') + sig = 0; + else + sig = decode_signal (sigspec, dflags); + list = list->next; + } + else + { + sh_needarg (word); + return (EXECUTION_FAILURE); + } + } + else if (ISOPTION (word, '-')) + { + list = list->next; + break; + } + else if (ISOPTION (word, '?')) + { + builtin_usage (); + return (EXECUTION_SUCCESS); + } + /* If this is a signal specification then process it. We only process + the first one seen; other arguments may signify process groups (e.g, + -num == process group num). */ + else if ((*word == '-') && !saw_signal) + { + sigspec = word + 1; + sig = decode_signal (sigspec, dflags); + saw_signal++; + list = list->next; + } + else + break; + } + + if (listing) + return (display_signal_list (list, 0)); + + /* OK, we are killing processes. */ + if (sig == NO_SIG) + { + sh_invalidsig (sigspec); + return (EXECUTION_FAILURE); + } + + if (list == 0) + { + builtin_usage (); + return (EXECUTION_FAILURE); + } + + while (list) + { + word = list->word->word; + + if (*word == '-') + word++; + + /* Use the entire argument in case of minus sign presence. */ + if (*word && legal_number (list->word->word, &pid_value) && (pid_value == (pid_t)pid_value)) + { + pid = (pid_t) pid_value; + + if (kill_pid (pid, sig, pid < -1) < 0) + { + if (errno == EINVAL) + sh_invalidsig (sigspec); + else + kill_error (pid, errno); + CONTINUE_OR_FAIL; + } + else + any_succeeded++; + } +#if defined (JOB_CONTROL) + else if (*list->word->word && *list->word->word != '%') + { + builtin_error (_("%s: arguments must be process or job IDs"), list->word->word); + CONTINUE_OR_FAIL; + } + else if (*word) + /* Posix.2 says you can kill without job control active (4.32.4) */ + { /* Must be a job spec. Check it out. */ + int job; + sigset_t set, oset; + JOB *j; + + BLOCK_CHILD (set, oset); + job = get_job_spec (list); + + if (INVALID_JOB (job)) + { + if (job != DUP_JOB) + sh_badjob (list->word->word); + UNBLOCK_CHILD (oset); + CONTINUE_OR_FAIL; + } + + j = get_job_by_jid (job); + /* Job spec used. Kill the process group. If the job was started + without job control, then its pgrp == shell_pgrp, so we have + to be careful. We take the pid of the first job in the pipeline + in that case. */ + pid = IS_JOBCONTROL (job) ? j->pgrp : j->pipe->pid; + + UNBLOCK_CHILD (oset); + + if (kill_pid (pid, sig, 1) < 0) + { + if (errno == EINVAL) + sh_invalidsig (sigspec); + else + kill_error (pid, errno); + CONTINUE_OR_FAIL; + } + else + any_succeeded++; + } +#endif /* !JOB_CONTROL */ + else + { + sh_badpid (list->word->word); + CONTINUE_OR_FAIL; + } + continue_killing: + list = list->next; + } + + return (any_succeeded ? EXECUTION_SUCCESS : EXECUTION_FAILURE); +} + +static void +kill_error (pid, e) + pid_t pid; + int e; +{ + char *x; + + x = strerror (e); + if (x == 0) + x = _("Unknown error"); + builtin_error ("(%ld) - %s", (long)pid, x); +} diff --git a/bash-20060316/builtins/let.def b/bash-20060316/builtins/let.def new file mode 100644 index 000000000..ab43a4542 --- /dev/null +++ b/bash-20060316/builtins/let.def @@ -0,0 +1,128 @@ +This file is let.def, from which is created let.c. +It implements the builtin "let" in Bash. + +Copyright (C) 1987-2002 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$BUILTIN let +$FUNCTION let_builtin +$PRODUCES let.c +$SHORT_DOC let arg [arg ...] +Each ARG is an arithmetic expression to be evaluated. Evaluation +is done in fixed-width integers with no check for overflow, though +division by 0 is trapped and flagged as an error. The following +list of operators is grouped into levels of equal-precedence operators. +The levels are listed in order of decreasing precedence. + + id++, id-- variable post-increment, post-decrement + ++id, --id variable pre-increment, pre-decrement + -, + unary minus, plus + !, ~ logical and bitwise negation + ** exponentiation + *, /, % multiplication, division, remainder + +, - addition, subtraction + <<, >> left and right bitwise shifts + <=, >=, <, > comparison + ==, != equality, inequality + & bitwise AND + ^ bitwise XOR + | bitwise OR + && logical AND + || logical OR + expr ? expr : expr + conditional operator + =, *=, /=, %=, + +=, -=, <<=, >>=, + &=, ^=, |= assignment + +Shell variables are allowed as operands. The name of the variable +is replaced by its value (coerced to a fixed-width integer) within +an expression. The variable need not have its integer attribute +turned on to be used in an expression. + +Operators are evaluated in order of precedence. Sub-expressions in +parentheses are evaluated first and may override the precedence +rules above. + +If the last ARG evaluates to 0, let returns 1; 0 is returned +otherwise. +$END + +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include "../bashintl.h" + +#include "../shell.h" +#include "common.h" + +/* Arithmetic LET function. */ +int +let_builtin (list) + WORD_LIST *list; +{ + intmax_t ret; + int expok; + + /* Skip over leading `--' argument. */ + if (list && list->word && ISOPTION (list->word->word, '-')) + list = list->next; + + if (list == 0) + { + builtin_error (_("expression expected")); + return (EXECUTION_FAILURE); + } + + for (; list; list = list->next) + { + ret = evalexp (list->word->word, &expok); + if (expok == 0) + return (EXECUTION_FAILURE); + } + + return ((ret == 0) ? EXECUTION_FAILURE : EXECUTION_SUCCESS); +} + +#ifdef INCLUDE_UNUSED +int +exp_builtin (list) + WORD_LIST *list; +{ + char *exp; + intmax_t ret; + int expok; + + if (list == 0) + { + builtin_error (_("expression expected")); + return (EXECUTION_FAILURE); + } + + exp = string_list (list); + ret = evalexp (exp, &expok); + (void)free (exp); + return (((ret == 0) || (expok == 0)) ? EXECUTION_FAILURE : EXECUTION_SUCCESS); +} +#endif diff --git a/bash-20060316/builtins/mkbuiltins.c b/bash-20060316/builtins/mkbuiltins.c new file mode 100644 index 000000000..ff0bdc090 --- /dev/null +++ b/bash-20060316/builtins/mkbuiltins.c @@ -0,0 +1,1575 @@ +/* mkbuiltins.c - Create builtins.c, builtext.h, and builtdoc.c from + a single source file called builtins.def. */ + +/* Copyright (C) 1987-2006 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#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" + +#define DOCFILE "builtins.texi" + +#ifndef errno +extern int errno; +#endif + +static char *xmalloc (), *xrealloc (); + +#if !defined (__STDC__) && !defined (strcpy) +extern char *strcpy (); +#endif /* !__STDC__ && !strcpy */ + +#define savestring(x) strcpy (xmalloc (1 + strlen (x)), (x)) +#define whitespace(c) (((c) == ' ') || ((c) == '\t')) + +/* Flag values that builtins can have. */ +#define BUILTIN_FLAG_SPECIAL 0x01 +#define BUILTIN_FLAG_ASSIGNMENT 0x02 + +#define BASE_INDENT 4 + +/* If this stream descriptor is non-zero, then write + texinfo documentation to it. */ +FILE *documentation_file = (FILE *)NULL; + +/* Non-zero means to only produce documentation. */ +int only_documentation = 0; + +/* Non-zero means to not do any productions. */ +int inhibit_production = 0; + +/* 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; + +/* The name of a directory to precede the filename when reporting + errors. */ +char *error_directory = (char *)NULL; + +/* The name of the structure file. */ +char *struct_filename = (char *)NULL; + +/* The name of the external declaration file. */ +char *extern_filename = (char *)NULL; + +/* Here is a structure for manipulating arrays of data. */ +typedef struct { + int size; /* Number of slots allocated to array. */ + int sindex; /* Current location in array. */ + int width; /* Size of each element. */ + int growth_rate; /* How fast to grow. */ + char **array; /* The array itself. */ +} ARRAY; + +/* Here is a structure defining a single BUILTIN. */ +typedef struct { + char *name; /* The name of this builtin. */ + char *function; /* The name of the function to call. */ + char *shortdoc; /* The short documentation for this builtin. */ + char *docname; /* Possible name for documentation string. */ + ARRAY *longdoc; /* The long documentation for this builtin. */ + ARRAY *dependencies; /* Null terminated array of #define names. */ + int flags; /* Flags for this builtin. */ +} BUILTIN_DESC; + +/* Here is a structure which defines a DEF file. */ +typedef struct { + char *filename; /* The name of the input def file. */ + ARRAY *lines; /* The contents of the file. */ + int line_number; /* The current line number. */ + char *production; /* The name of the production file. */ + FILE *output; /* Open file stream for PRODUCTION. */ + ARRAY *builtins; /* Null terminated array of BUILTIN_DESC *. */ +} DEF_FILE; + +/* The array of all builtins encountered during execution of this code. */ +ARRAY *saved_builtins = (ARRAY *)NULL; + +/* The Posix.2 so-called `special' builtins. */ +char *special_builtins[] = +{ + ":", ".", "source", "break", "continue", "eval", "exec", "exit", + "export", "readonly", "return", "set", "shift", "times", "trap", "unset", + (char *)NULL +}; + +/* The builtin commands that take assignment statements as arguments. */ +char *assignment_builtins[] = +{ + "alias", "declare", "export", "local", "readonly", "typeset", + (char *)NULL +}; + +/* Forward declarations. */ +static int is_special_builtin (); +static int is_assignment_builtin (); + +#if !defined (HAVE_RENAME) +static int rename (); +#endif + +void extract_info (); + +void file_error (); +void line_error (); + +void write_file_headers (); +void write_file_footers (); +void write_ifdefs (); +void write_endifs (); +void write_documentation (); +void write_longdocs (); +void write_builtins (); + +int write_helpfiles (); + +void free_defs (); +void add_documentation (); + +void must_be_building (); +void remove_trailing_whitespace (); + +#define document_name(b) ((b)->docname ? (b)->docname : (b)->name) + + +/* 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; + FILE *structfile, *externfile; + char *documentation_filename, *temp_struct_filename; + + structfile = externfile = (FILE *)NULL; + documentation_filename = DOCFILE; + temp_struct_filename = (char *)NULL; + + while (arg_index < argc && argv[arg_index][0] == '-') + { + char *arg = argv[arg_index++]; + + if (strcmp (arg, "-externfile") == 0) + extern_filename = argv[arg_index++]; + else if (strcmp (arg, "-structfile") == 0) + struct_filename = argv[arg_index++]; + else if (strcmp (arg, "-noproduction") == 0) + inhibit_production = 1; + else if (strcmp (arg, "-document") == 0) + documentation_file = fopen (documentation_filename, "w"); + else if (strcmp (arg, "-D") == 0) + { + int len; + + if (error_directory) + free (error_directory); + + error_directory = xmalloc (2 + strlen (argv[arg_index])); + strcpy (error_directory, argv[arg_index]); + len = strlen (error_directory); + + if (len && error_directory[len - 1] != '/') + strcat (error_directory, "/"); + + arg_index++; + } + else if (strcmp (arg, "-documentonly") == 0) + { + only_documentation = 1; + documentation_file = fopen (documentation_filename, "w"); + } + else if (strcmp (arg, "-H") == 0) + { + separate_helpfiles = 1; + 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); + } + } + + /* If there are no files to process, just quit now. */ + if (arg_index == argc) + exit (0); + + if (!only_documentation) + { + /* Open the files. */ + if (struct_filename) + { + temp_struct_filename = xmalloc (15); + sprintf (temp_struct_filename, "mk-%ld", (long) getpid ()); + structfile = fopen (temp_struct_filename, "w"); + + if (!structfile) + file_error (temp_struct_filename); + } + + if (extern_filename) + { + externfile = fopen (extern_filename, "w"); + + if (!externfile) + file_error (extern_filename); + } + + /* Write out the headers. */ + write_file_headers (structfile, externfile); + } + + if (documentation_file) + { + fprintf (documentation_file, "@c Table of builtins created with %s.\n", + argv[0]); + fprintf (documentation_file, "@ftable @asis\n"); + } + + /* Process the .def files. */ + while (arg_index < argc) + { + register char *arg; + + arg = argv[arg_index++]; + + extract_info (arg, structfile, externfile); + } + + /* Close the files. */ + if (!only_documentation) + { + /* Write the footers. */ + write_file_footers (structfile, externfile); + + if (structfile) + { + write_longdocs (structfile, saved_builtins); + fclose (structfile); + rename (temp_struct_filename, struct_filename); + } + + if (externfile) + fclose (externfile); + } + + if (separate_helpfiles) + { + write_helpfiles (saved_builtins); + } + + if (documentation_file) + { + fprintf (documentation_file, "@end ftable\n"); + fclose (documentation_file); + } + + exit (0); +} + +/* **************************************************************** */ +/* */ +/* Array Functions and Manipulators */ +/* */ +/* **************************************************************** */ + +/* Make a new array, and return a pointer to it. The array will + contain elements of size WIDTH, and is initialized to no elements. */ +ARRAY * +array_create (width) + int width; +{ + ARRAY *array; + + array = (ARRAY *)xmalloc (sizeof (ARRAY)); + array->size = 0; + array->sindex = 0; + array->width = width; + + /* Default to increasing size in units of 20. */ + array->growth_rate = 20; + + array->array = (char **)NULL; + + return (array); +} + +/* Copy the array of strings in ARRAY. */ +ARRAY * +copy_string_array (array) + ARRAY *array; +{ + register int i; + ARRAY *copy; + + if (!array) + return (ARRAY *)NULL; + + copy = array_create (sizeof (char *)); + + copy->size = array->size; + copy->sindex = array->sindex; + copy->width = array->width; + + copy->array = (char **)xmalloc ((1 + array->sindex) * sizeof (char *)); + + for (i = 0; i < array->sindex; i++) + copy->array[i] = savestring (array->array[i]); + + copy->array[i] = (char *)NULL; + + return (copy); +} + +/* Add ELEMENT to ARRAY, growing the array if neccessary. */ +void +array_add (element, array) + char *element; + ARRAY *array; +{ + if (array->sindex + 2 > array->size) + array->array = (char **)xrealloc + (array->array, (array->size += array->growth_rate) * array->width); + + array->array[array->sindex++] = element; + array->array[array->sindex] = (char *)NULL; +} + +/* Free an allocated array and data pointer. */ +void +array_free (array) + ARRAY *array; +{ + if (array->array) + free (array->array); + + free (array); +} + +/* **************************************************************** */ +/* */ +/* Processing a DEF File */ +/* */ +/* **************************************************************** */ + +/* The definition of a function. */ +typedef int Function (); +typedef int mk_handler_func_t __P((char *, DEF_FILE *, char *)); + +/* Structure handles processor directives. */ +typedef struct { + char *directive; + mk_handler_func_t *function; +} HANDLER_ENTRY; + +extern int builtin_handler __P((char *, DEF_FILE *, char *)); +extern int function_handler __P((char *, DEF_FILE *, char *)); +extern int short_doc_handler __P((char *, DEF_FILE *, char *)); +extern int comment_handler __P((char *, DEF_FILE *, char *)); +extern int depends_on_handler __P((char *, DEF_FILE *, char *)); +extern int produces_handler __P((char *, DEF_FILE *, char *)); +extern int end_handler __P((char *, DEF_FILE *, char *)); +extern int docname_handler __P((char *, DEF_FILE *, char *)); + +HANDLER_ENTRY handlers[] = { + { "BUILTIN", builtin_handler }, + { "DOCNAME", docname_handler }, + { "FUNCTION", function_handler }, + { "SHORT_DOC", short_doc_handler }, + { "$", comment_handler }, + { "COMMENT", comment_handler }, + { "DEPENDS_ON", depends_on_handler }, + { "PRODUCES", produces_handler }, + { "END", end_handler }, + { (char *)NULL, (mk_handler_func_t *)NULL } +}; + +/* Return the entry in the table of handlers for NAME. */ +HANDLER_ENTRY * +find_directive (directive) + char *directive; +{ + register int i; + + for (i = 0; handlers[i].directive; i++) + if (strcmp (handlers[i].directive, directive) == 0) + return (&handlers[i]); + + return ((HANDLER_ENTRY *)NULL); +} + +/* Non-zero indicates that a $BUILTIN has been seen, but not + the corresponding $END. */ +static int building_builtin = 0; + +/* Non-zero means to output cpp line and file information before + printing the current line to the production file. */ +int output_cpp_line_info = 0; + +/* The main function of this program. Read FILENAME and act on what is + found. Lines not starting with a dollar sign are copied to the + $PRODUCES target, if one is present. Lines starting with a dollar sign + are directives to this program, specifying the name of the builtin, the + function to call, the short documentation and the long documentation + strings. FILENAME can contain multiple $BUILTINs, but only one $PRODUCES + target. After the file has been processed, write out the names of + builtins found in each $BUILTIN. Plain text found before the $PRODUCES + is ignored, as is "$$ comment text". */ +void +extract_info (filename, structfile, externfile) + char *filename; + FILE *structfile, *externfile; +{ + register int i; + DEF_FILE *defs; + struct stat finfo; + size_t file_size; + char *buffer, *line; + int fd, nr; + + if (stat (filename, &finfo) == -1) + file_error (filename); + + fd = open (filename, O_RDONLY, 0666); + + if (fd == -1) + file_error (filename); + + file_size = (size_t)finfo.st_size; + buffer = xmalloc (1 + file_size); + + if ((nr = read (fd, buffer, file_size)) < 0) + file_error (filename); + + /* This is needed on WIN32, and does not hurt on Unix. */ + if (nr < file_size) + file_size = nr; + + close (fd); + + if (nr == 0) + { + fprintf (stderr, "mkbuiltins: %s: skipping zero-length file\n", filename); + return; + } + + /* Create and fill in the initial structure describing this file. */ + defs = (DEF_FILE *)xmalloc (sizeof (DEF_FILE)); + defs->filename = filename; + defs->lines = array_create (sizeof (char *)); + defs->line_number = 0; + defs->production = (char *)NULL; + defs->output = (FILE *)NULL; + defs->builtins = (ARRAY *)NULL; + + /* Build the array of lines. */ + i = 0; + while (i < file_size) + { + array_add (&buffer[i], defs->lines); + + while (buffer[i] != '\n' && i < file_size) + i++; + buffer[i++] = '\0'; + } + + /* Begin processing the input file. We don't write any output + until we have a file to write output to. */ + output_cpp_line_info = 1; + + /* Process each line in the array. */ + for (i = 0; line = defs->lines->array[i]; i++) + { + defs->line_number = i; + + if (*line == '$') + { + register int j; + char *directive; + HANDLER_ENTRY *handler; + + /* Isolate the directive. */ + for (j = 0; line[j] && !whitespace (line[j]); j++); + + directive = xmalloc (j); + strncpy (directive, line + 1, j - 1); + directive[j -1] = '\0'; + + /* Get the function handler and call it. */ + handler = find_directive (directive); + + if (!handler) + { + line_error (defs, "Unknown directive `%s'", directive); + free (directive); + continue; + } + else + { + /* Advance to the first non-whitespace character. */ + while (whitespace (line[j])) + j++; + + /* Call the directive handler with the FILE, and ARGS. */ + (*(handler->function)) (directive, defs, line + j); + } + free (directive); + } + else + { + if (building_builtin) + add_documentation (defs, line); + else if (defs->output) + { + if (output_cpp_line_info) + { + /* If we're handed an absolute pathname, don't prepend + the directory name. */ + if (defs->filename[0] == '/') + fprintf (defs->output, "#line %d \"%s\"\n", + defs->line_number + 1, defs->filename); + else + fprintf (defs->output, "#line %d \"%s%s\"\n", + defs->line_number + 1, + error_directory ? error_directory : "./", + defs->filename); + output_cpp_line_info = 0; + } + + fprintf (defs->output, "%s\n", line); + } + } + } + + /* Close the production file. */ + if (defs->output) + fclose (defs->output); + + /* The file has been processed. Write the accumulated builtins to + the builtins.c file, and write the extern definitions to the + builtext.h file. */ + write_builtins (defs, structfile, externfile); + + free (buffer); + free_defs (defs); +} + +#define free_safely(x) if (x) free (x) + +static void +free_builtin (builtin) + BUILTIN_DESC *builtin; +{ + register int i; + + free_safely (builtin->name); + free_safely (builtin->function); + free_safely (builtin->shortdoc); + free_safely (builtin->docname); + + if (builtin->longdoc) + array_free (builtin->longdoc); + + if (builtin->dependencies) + { + for (i = 0; builtin->dependencies->array[i]; i++) + free (builtin->dependencies->array[i]); + array_free (builtin->dependencies); + } +} + +/* Free all of the memory allocated to a DEF_FILE. */ +void +free_defs (defs) + DEF_FILE *defs; +{ + register int i; + register BUILTIN_DESC *builtin; + + if (defs->production) + free (defs->production); + + if (defs->lines) + array_free (defs->lines); + + if (defs->builtins) + { + for (i = 0; builtin = (BUILTIN_DESC *)defs->builtins->array[i]; i++) + { + free_builtin (builtin); + free (builtin); + } + array_free (defs->builtins); + } + free (defs); +} + +/* **************************************************************** */ +/* */ +/* The Handler Functions Themselves */ +/* */ +/* **************************************************************** */ + +/* Strip surrounding whitespace from STRING, and + return a pointer to the start of it. */ +char * +strip_whitespace (string) + char *string; +{ + while (whitespace (*string)) + string++; + + remove_trailing_whitespace (string); + return (string); +} + +/* Remove only the trailing whitespace from STRING. */ +void +remove_trailing_whitespace (string) + char *string; +{ + register int i; + + i = strlen (string) - 1; + + while (i > 0 && whitespace (string[i])) + i--; + + string[++i] = '\0'; +} + +/* Ensure that there is a argument in STRING and return it. + FOR_WHOM is the name of the directive which needs the argument. + DEFS is the DEF_FILE in which the directive is found. + If there is no argument, produce an error. */ +char * +get_arg (for_whom, defs, string) + char *for_whom, *string; + DEF_FILE *defs; +{ + char *new; + + new = strip_whitespace (string); + + if (!*new) + line_error (defs, "%s requires an argument", for_whom); + + return (savestring (new)); +} + +/* Error if not building a builtin. */ +void +must_be_building (directive, defs) + char *directive; + DEF_FILE *defs; +{ + if (!building_builtin) + line_error (defs, "%s must be inside of a $BUILTIN block", directive); +} + +/* Return the current builtin. */ +BUILTIN_DESC * +current_builtin (directive, defs) + char *directive; + DEF_FILE *defs; +{ + must_be_building (directive, defs); + if (defs->builtins) + return ((BUILTIN_DESC *)defs->builtins->array[defs->builtins->sindex - 1]); + else + return ((BUILTIN_DESC *)NULL); +} + +/* Add LINE to the long documentation for the current builtin. + Ignore blank lines until the first non-blank line has been seen. */ +void +add_documentation (defs, line) + DEF_FILE *defs; + char *line; +{ + register BUILTIN_DESC *builtin; + + builtin = current_builtin ("(implied LONGDOC)", defs); + + remove_trailing_whitespace (line); + + if (!*line && !builtin->longdoc) + return; + + if (!builtin->longdoc) + builtin->longdoc = array_create (sizeof (char *)); + + array_add (line, builtin->longdoc); +} + +/* How to handle the $BUILTIN directive. */ +int +builtin_handler (self, defs, arg) + char *self; + DEF_FILE *defs; + char *arg; +{ + BUILTIN_DESC *new; + char *name; + + /* If we are already building a builtin, we cannot start a new one. */ + if (building_builtin) + { + line_error (defs, "%s found before $END", self); + return (-1); + } + + output_cpp_line_info++; + + /* Get the name of this builtin, and stick it in the array. */ + name = get_arg (self, defs, arg); + + /* If this is the first builtin, create the array to hold them. */ + if (!defs->builtins) + defs->builtins = array_create (sizeof (BUILTIN_DESC *)); + + new = (BUILTIN_DESC *)xmalloc (sizeof (BUILTIN_DESC)); + new->name = name; + new->function = (char *)NULL; + new->shortdoc = (char *)NULL; + new->docname = (char *)NULL; + new->longdoc = (ARRAY *)NULL; + new->dependencies = (ARRAY *)NULL; + new->flags = 0; + + if (is_special_builtin (name)) + new->flags |= BUILTIN_FLAG_SPECIAL; + if (is_assignment_builtin (name)) + new->flags |= BUILTIN_FLAG_ASSIGNMENT; + + array_add ((char *)new, defs->builtins); + building_builtin = 1; + + return (0); +} + +/* How to handle the $FUNCTION directive. */ +int +function_handler (self, defs, arg) + char *self; + DEF_FILE *defs; + char *arg; +{ + register BUILTIN_DESC *builtin; + + builtin = current_builtin (self, defs); + + if (builtin == 0) + { + line_error (defs, "syntax error: no current builtin for $FUNCTION directive"); + exit (1); + } + if (builtin->function) + line_error (defs, "%s already has a function (%s)", + builtin->name, builtin->function); + else + builtin->function = get_arg (self, defs, arg); + + return (0); +} + +/* How to handle the $DOCNAME directive. */ +int +docname_handler (self, defs, arg) + char *self; + DEF_FILE *defs; + char *arg; +{ + register BUILTIN_DESC *builtin; + + builtin = current_builtin (self, defs); + + if (builtin->docname) + line_error (defs, "%s already had a docname (%s)", + builtin->name, builtin->docname); + else + builtin->docname = get_arg (self, defs, arg); + + return (0); +} + +/* How to handle the $SHORT_DOC directive. */ +int +short_doc_handler (self, defs, arg) + char *self; + DEF_FILE *defs; + char *arg; +{ + register BUILTIN_DESC *builtin; + + builtin = current_builtin (self, defs); + + if (builtin->shortdoc) + line_error (defs, "%s already has short documentation (%s)", + builtin->name, builtin->shortdoc); + else + builtin->shortdoc = get_arg (self, defs, arg); + + return (0); +} + +/* How to handle the $COMMENT directive. */ +int +comment_handler (self, defs, arg) + char *self; + DEF_FILE *defs; + char *arg; +{ + return (0); +} + +/* How to handle the $DEPENDS_ON directive. */ +int +depends_on_handler (self, defs, arg) + char *self; + DEF_FILE *defs; + char *arg; +{ + register BUILTIN_DESC *builtin; + char *dependent; + + builtin = current_builtin (self, defs); + dependent = get_arg (self, defs, arg); + + if (!builtin->dependencies) + builtin->dependencies = array_create (sizeof (char *)); + + array_add (dependent, builtin->dependencies); + + return (0); +} + +/* How to handle the $PRODUCES directive. */ +int +produces_handler (self, defs, arg) + char *self; + DEF_FILE *defs; + char *arg; +{ + /* If just hacking documentation, don't change any of the production + files. */ + if (only_documentation) + return (0); + + output_cpp_line_info++; + + if (defs->production) + line_error (defs, "%s already has a %s definition", defs->filename, self); + else + { + defs->production = get_arg (self, defs, arg); + + if (inhibit_production) + return (0); + + defs->output = fopen (defs->production, "w"); + + if (!defs->output) + file_error (defs->production); + + fprintf (defs->output, "/* %s, created from %s. */\n", + defs->production, defs->filename); + } + return (0); +} + +/* How to handle the $END directive. */ +int +end_handler (self, defs, arg) + char *self; + DEF_FILE *defs; + char *arg; +{ + must_be_building (self, defs); + building_builtin = 0; + return (0); +} + +/* **************************************************************** */ +/* */ +/* Error Handling Functions */ +/* */ +/* **************************************************************** */ + +/* Produce an error for DEFS with FORMAT and ARGS. */ +void +line_error (defs, format, arg1, arg2) + DEF_FILE *defs; + char *format, *arg1, *arg2; +{ + if (defs->filename[0] != '/') + fprintf (stderr, "%s", error_directory ? error_directory : "./"); + fprintf (stderr, "%s:%d:", defs->filename, defs->line_number + 1); + fprintf (stderr, format, arg1, arg2); + fprintf (stderr, "\n"); + fflush (stderr); +} + +/* Print error message for FILENAME. */ +void +file_error (filename) + char *filename; +{ + perror (filename); + exit (2); +} + +/* **************************************************************** */ +/* */ +/* xmalloc and xrealloc () */ +/* */ +/* **************************************************************** */ + +static void memory_error_and_abort (); + +static char * +xmalloc (bytes) + int bytes; +{ + char *temp = (char *)malloc (bytes); + + if (!temp) + memory_error_and_abort (); + return (temp); +} + +static char * +xrealloc (pointer, bytes) + char *pointer; + int bytes; +{ + char *temp; + + if (!pointer) + temp = (char *)malloc (bytes); + else + temp = (char *)realloc (pointer, bytes); + + if (!temp) + memory_error_and_abort (); + + return (temp); +} + +static void +memory_error_and_abort () +{ + fprintf (stderr, "mkbuiltins: out of virtual memory\n"); + abort (); +} + +/* **************************************************************** */ +/* */ +/* Creating the Struct and Extern Files */ +/* */ +/* **************************************************************** */ + +/* Return a pointer to a newly allocated builtin which is + an exact copy of BUILTIN. */ +BUILTIN_DESC * +copy_builtin (builtin) + BUILTIN_DESC *builtin; +{ + BUILTIN_DESC *new; + + new = (BUILTIN_DESC *)xmalloc (sizeof (BUILTIN_DESC)); + + new->name = savestring (builtin->name); + new->shortdoc = savestring (builtin->shortdoc); + new->longdoc = copy_string_array (builtin->longdoc); + new->dependencies = copy_string_array (builtin->dependencies); + + new->function = + builtin->function ? savestring (builtin->function) : (char *)NULL; + new->docname = + builtin->docname ? savestring (builtin->docname) : (char *)NULL; + + return (new); +} + +/* How to save away a builtin. */ +void +save_builtin (builtin) + BUILTIN_DESC *builtin; +{ + BUILTIN_DESC *newbuiltin; + + newbuiltin = copy_builtin (builtin); + + /* If this is the first builtin to be saved, create the array + to hold it. */ + if (!saved_builtins) + saved_builtins = array_create (sizeof (BUILTIN_DESC *)); + + array_add ((char *)newbuiltin, saved_builtins); +} + +/* Flags that mean something to write_documentation (). */ +#define STRING_ARRAY 0x01 +#define TEXINFO 0x02 +#define PLAINTEXT 0x04 +#define HELPFILE 0x08 + +char *structfile_header[] = { + "/* builtins.c -- the built in shell commands. */", + "", + "/* This file is manufactured by ./mkbuiltins, and should not be", + " edited by hand. See the source to mkbuiltins for details. */", + "", + "/* Copyright (C) 1987-2002 Free Software Foundation, Inc.", + "", + " This file is part of GNU Bash, the Bourne Again SHell.", + "", + " Bash is free software; you can redistribute it and/or modify it", + " under the terms of the GNU General Public License as published by", + " the Free Software Foundation; either version 2, or (at your option)", + " any later version.", + "", + " Bash is distributed in the hope that it will be useful, but WITHOUT", + " ANY WARRANTY; without even the implied warranty of MERCHANTABILITY", + " or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public", + " License for more details.", + "", + " You should have received a copy of the GNU General Public License", + " along with Bash; see the file COPYING. If not, write to the Free", + " Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */", + "", + "/* The list of shell builtins. Each element is name, function, flags,", + " long-doc, short-doc. The long-doc field contains a pointer to an array", + " of help lines. The function takes a WORD_LIST *; the first word in the", + " list is the first arg to the command. The list has already had word", + " expansion performed.", + "", + " Functions which need to look at only the simple commands (e.g.", + " the enable_builtin ()), should ignore entries where", + " (array[i].function == (sh_builtin_func_t *)NULL). Such entries are for", + " the list of shell reserved control structures, like `if' and `while'.", + " The end of the list is denoted with a NULL name field. */", + "", + "#include \"../builtins.h\"", + (char *)NULL + }; + +char *structfile_footer[] = { + " { (char *)0x0, (sh_builtin_func_t *)0x0, 0, (char **)0x0, (char *)0x0 }", + "};", + "", + "struct builtin *shell_builtins = static_shell_builtins;", + "struct builtin *current_builtin;", + "", + "int num_shell_builtins =", + "\tsizeof (static_shell_builtins) / sizeof (struct builtin) - 1;", + (char *)NULL +}; + +/* Write out any neccessary opening information for + STRUCTFILE and EXTERNFILE. */ +void +write_file_headers (structfile, externfile) + FILE *structfile, *externfile; +{ + register int i; + + if (structfile) + { + for (i = 0; structfile_header[i]; i++) + fprintf (structfile, "%s\n", structfile_header[i]); + + fprintf (structfile, "#include \"%s\"\n", + extern_filename ? extern_filename : "builtext.h"); + + fprintf (structfile, "#include \"bashintl.h\"\n"); + + fprintf (structfile, "\nstruct builtin static_shell_builtins[] = {\n"); + } + + if (externfile) + fprintf (externfile, + "/* %s - The list of builtins found in libbuiltins.a. */\n", + extern_filename ? extern_filename : "builtext.h"); +} + +/* Write out any necessary closing information for + STRUCTFILE and EXTERNFILE. */ +void +write_file_footers (structfile, externfile) + FILE *structfile, *externfile; +{ + register int i; + + /* Write out the footers. */ + if (structfile) + { + for (i = 0; structfile_footer[i]; i++) + fprintf (structfile, "%s\n", structfile_footer[i]); + } +} + +/* Write out the information accumulated in DEFS to + STRUCTFILE and EXTERNFILE. */ +void +write_builtins (defs, structfile, externfile) + DEF_FILE *defs; + FILE *structfile, *externfile; +{ + register int i; + + /* Write out the information. */ + if (defs->builtins) + { + register BUILTIN_DESC *builtin; + + for (i = 0; i < defs->builtins->sindex; i++) + { + builtin = (BUILTIN_DESC *)defs->builtins->array[i]; + + /* Write out any #ifdefs that may be there. */ + if (!only_documentation) + { + if (builtin->dependencies) + { + write_ifdefs (externfile, builtin->dependencies->array); + write_ifdefs (structfile, builtin->dependencies->array); + } + + /* Write the extern definition. */ + if (externfile) + { + if (builtin->function) + fprintf (externfile, "extern int %s __P((WORD_LIST *));\n", + builtin->function); + + fprintf (externfile, "extern char * const %s_doc[];\n", + document_name (builtin)); + } + + /* Write the structure definition. */ + if (structfile) + { + fprintf (structfile, " { \"%s\", ", builtin->name); + + if (builtin->function) + fprintf (structfile, "%s, ", builtin->function); + else + fprintf (structfile, "(sh_builtin_func_t *)0x0, "); + + fprintf (structfile, "%s%s%s, %s_doc,\n", + "BUILTIN_ENABLED | STATIC_BUILTIN", + (builtin->flags & BUILTIN_FLAG_SPECIAL) ? " | SPECIAL_BUILTIN" : "", + (builtin->flags & BUILTIN_FLAG_ASSIGNMENT) ? " | ASSIGNMENT_BUILTIN" : "", + document_name (builtin)); + + fprintf + (structfile, " \"%s\", (char *)NULL },\n", + builtin->shortdoc ? builtin->shortdoc : builtin->name); + + } + + if (structfile || separate_helpfiles) + /* Save away this builtin for later writing of the + long documentation strings. */ + save_builtin (builtin); + + /* Write out the matching #endif, if neccessary. */ + if (builtin->dependencies) + { + if (externfile) + write_endifs (externfile, builtin->dependencies->array); + + if (structfile) + write_endifs (structfile, builtin->dependencies->array); + } + } + + if (documentation_file) + { + fprintf (documentation_file, "@item %s\n", builtin->name); + write_documentation + (documentation_file, builtin->longdoc->array, 0, TEXINFO); + } + } + } +} + +/* Write out the long documentation strings in BUILTINS to STREAM. */ +void +write_longdocs (stream, builtins) + FILE *stream; + ARRAY *builtins; +{ + register int i; + register BUILTIN_DESC *builtin; + char *dname; + char *sarray[2]; + + for (i = 0; i < builtins->sindex; i++) + { + builtin = (BUILTIN_DESC *)builtins->array[i]; + + if (builtin->dependencies) + write_ifdefs (stream, builtin->dependencies->array); + + /* Write the long documentation strings. */ + dname = document_name (builtin); + fprintf (stream, "char * const %s_doc[] =", dname); + + if (separate_helpfiles) + { + int l = strlen (helpfile_directory) + strlen (dname) + 1; + sarray[0] = (char *)xmalloc (l + 1); + sprintf (sarray[0], "%s/%s", helpfile_directory, dname); + sarray[1] = (char *)NULL; + write_documentation (stream, sarray, 0, STRING_ARRAY|HELPFILE); + free (sarray[0]); + } + else + write_documentation (stream, builtin->longdoc->array, 0, STRING_ARRAY); + + if (builtin->dependencies) + write_endifs (stream, builtin->dependencies->array); + + } +} + +/* 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, + DEFINES is a null terminated array of define names. + If a define is preceded by an `!', then the sense of the test is + reversed. */ +void +write_ifdefs (stream, defines) + FILE *stream; + char **defines; +{ + register int i; + + if (!stream) + return; + + fprintf (stream, "#if "); + + for (i = 0; defines[i]; i++) + { + char *def = defines[i]; + + if (*def == '!') + fprintf (stream, "!defined (%s)", def + 1); + else + fprintf (stream, "defined (%s)", def); + + if (defines[i + 1]) + fprintf (stream, " && "); + } + fprintf (stream, "\n"); +} + +/* Write an #endif string saying what defines controlled the compilation + of the immediately preceding code. + STREAM is the stream to write the information to. + DEFINES is a null terminated array of define names. */ +void +write_endifs (stream, defines) + FILE *stream; + char **defines; +{ + register int i; + + if (!stream) + return; + + fprintf (stream, "#endif /* "); + + for (i = 0; defines[i]; i++) + { + fprintf (stream, "%s", defines[i]); + + if (defines[i + 1]) + fprintf (stream, " && "); + } + + fprintf (stream, " */\n"); +} + +/* 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, flags) + FILE *stream; + char **documentation; + int indentation, flags; +{ + register int i, j; + register char *line; + int string_array, texinfo, base_indent, last_cpp, filename_p; + + if (stream == 0) + return; + + string_array = flags & STRING_ARRAY; + filename_p = flags & HELPFILE; + + if (string_array) + { + fprintf (stream, " {\n#if defined (HELP_BUILTIN)\n"); /* } */ + if (single_longdoc_strings) + { + if (filename_p == 0) + { + if (documentation && documentation[0] && documentation[0][0]) + fprintf (stream, "N_(\""); + else + fprintf (stream, "N_(\" "); /* the empty string translates specially. */ + } + else + fprintf (stream, "\""); + } + } + + base_indent = (string_array && single_longdoc_strings && filename_p == 0) ? BASE_INDENT : 0; + + for (i = last_cpp = 0, texinfo = (flags & TEXINFO); line = documentation[i]; i++) + { + /* Allow #ifdef's to be written out verbatim, but don't put them into + separate help files. */ + if (*line == '#') + { + if (string_array && filename_p == 0 && single_longdoc_strings == 0) + fprintf (stream, "%s\n", line); + last_cpp = 1; + continue; + } + else + last_cpp = 0; + + /* prefix with N_( for gettext */ + if (string_array && single_longdoc_strings == 0) + { + if (filename_p == 0) + { + if (line[0]) + fprintf (stream, " N_(\""); + else + fprintf (stream, " N_(\" "); /* the empty string translates specially. */ + } + else + fprintf (stream, " \""); + } + + if (indentation) + for (j = 0; j < indentation; j++) + fprintf (stream, " "); + + /* Don't indent the first line, because of how the help builtin works. */ + if (i == 0) + indentation += base_indent; + + if (string_array) + { + for (j = 0; line[j]; j++) + { + switch (line[j]) + { + case '\\': + case '"': + fprintf (stream, "\\%c", line[j]); + break; + + default: + fprintf (stream, "%c", line[j]); + } + } + + /* closing right paren for gettext */ + if (single_longdoc_strings == 0) + { + if (filename_p == 0) + fprintf (stream, "\"),\n"); + else + fprintf (stream, "\",\n"); + } + else if (documentation[i+1]) + /* don't add extra newline after last line */ + fprintf (stream, "\\n\\\n"); + } + else if (texinfo) + { + for (j = 0; line[j]; j++) + { + switch (line[j]) + { + case '@': + case '{': + case '}': + fprintf (stream, "@%c", line[j]); + break; + + default: + fprintf (stream, "%c", line[j]); + } + } + fprintf (stream, "\n"); + } + else + fprintf (stream, "%s\n", line); + } + + /* closing right paren for gettext */ + if (string_array && single_longdoc_strings) + { + if (filename_p == 0) + fprintf (stream, "\"),\n"); + else + fprintf (stream, "\",\n"); + } + + if (string_array) + fprintf (stream, "#endif /* HELP_BUILTIN */\n (char *)NULL\n};\n"); +} + +int +write_helpfiles (builtins) + ARRAY *builtins; +{ + char *helpfile, *bname; + FILE *helpfp; + int i, hdlen; + BUILTIN_DESC *builtin; + + 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 < builtins->sindex; i++) + { + builtin = (BUILTIN_DESC *)builtins->array[i]; + + bname = document_name (builtin); + helpfile = (char *)xmalloc (hdlen + strlen (bname) + 1); + sprintf (helpfile, "helpfiles/%s", bname); + + helpfp = fopen (helpfile, "w"); + if (helpfp == 0) + { + fprintf (stderr, "write_helpfiles: cannot open %s\n", helpfile); + free (helpfile); + continue; + } + + write_documentation (helpfp, builtin->longdoc->array, 4, PLAINTEXT); + + fflush (helpfp); + fclose (helpfp); + free (helpfile); + } + return 0; +} + +static int +_find_in_table (name, name_table) + char *name, *name_table[]; +{ + register int i; + + for (i = 0; name_table[i]; i++) + if (strcmp (name, name_table[i]) == 0) + return 1; + return 0; +} + +static int +is_special_builtin (name) + char *name; +{ + return (_find_in_table (name, special_builtins)); +} + +static int +is_assignment_builtin (name) + char *name; +{ + return (_find_in_table (name, assignment_builtins)); +} + +#if !defined (HAVE_RENAME) +static int +rename (from, to) + char *from, *to; +{ + unlink (to); + if (link (from, to) < 0) + return (-1); + unlink (from); + return (0); +} +#endif /* !HAVE_RENAME */ diff --git a/bash-20060316/builtins/printf.def b/bash-20060316/builtins/printf.def new file mode 100644 index 000000000..e4e31704f --- /dev/null +++ b/bash-20060316/builtins/printf.def @@ -0,0 +1,997 @@ +This file is printf.def, from which is created printf.c. +It implements the builtin "printf" in Bash. + +Copyright (C) 1997-2005 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA + +$PRODUCES printf.c + +$BUILTIN printf +$FUNCTION printf_builtin +$SHORT_DOC printf [-v var] format [arguments] +printf formats and prints ARGUMENTS under control of the FORMAT. FORMAT +is a character string which contains three types of objects: plain +characters, which are simply copied to standard output, character escape +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 printf(1) formats, %b means to +expand backslash escape sequences in the corresponding argument, and %q +means to quote the argument in a way that can be reused as shell input. +If the -v option is supplied, the output is placed into the value of the +shell variable VAR rather than being sent to the standard output. +$END + +#include + +#include "../bashtypes.h" + +#include +#if defined (HAVE_LIMITS_H) +# include +#else + /* Assume 32-bit ints. */ +# define INT_MAX 2147483647 +# define INT_MIN (-2147483647-1) +#endif + +#include +#include + +#ifdef HAVE_INTTYPES_H +# include +#endif + +#include "../bashansi.h" +#include "../bashintl.h" + +#include "../shell.h" +#include "stdc.h" +#include "bashgetopt.h" +#include "common.h" + +#if !defined (PRIdMAX) +# if HAVE_LONG_LONG +# define PRIdMAX "lld" +# else +# define PRIdMAX "ld" +# endif +#endif + +#if !defined (errno) +extern int errno; +#endif + +#define PC(c) \ + do { \ + char b[2]; \ + tw++; \ + b[0] = c; b[1] = '\0'; \ + if (vflag) \ + vbadd (b, 1); \ + else \ + putchar (c); \ + } while (0) + +#define PF(f, func) \ + do { \ + char *b = 0; \ + int nw; \ + if (have_fieldwidth && have_precision) \ + nw = asprintf(&b, f, fieldwidth, precision, func); \ + else if (have_fieldwidth) \ + nw = asprintf(&b, f, fieldwidth, func); \ + else if (have_precision) \ + nw = asprintf(&b, f, precision, func); \ + else \ + nw = asprintf(&b, f, func); \ + tw += nw; \ + if (b) \ + { \ + if (vflag) \ + (void)vbadd (b, nw); \ + else \ + (void)fputs (b, stdout); \ + free (b); \ + } \ + } while (0) + +/* We free the buffer used by mklong() if it's `too big'. */ +#define PRETURN(value) \ + do \ + { \ + if (vflag) \ + { \ + bind_variable (vname, vbuf, 0); \ + stupidly_hack_special_variables (vname); \ + } \ + if (conv_bufsize > 4096 ) \ + { \ + free (conv_buf); \ + conv_bufsize = 0; \ + conv_buf = 0; \ + } \ + if (vbsize > 4096) \ + { \ + free (vbuf); \ + vbsize = 0; \ + vbuf = 0; \ + } \ + fflush (stdout); \ + return (value); \ + } \ + while (0) + +#define SKIP1 "#'-+ 0" +#define LENMODS "hjlLtz" + +static void printf_erange __P((char *)); +static int printstr __P((char *, char *, int, int, int)); +static int tescape __P((char *, char *, int *)); +static char *bexpand __P((char *, int, int *, int *)); +static char *vbadd __P((char *, int)); +static char *mklong __P((char *, char *, size_t)); +static int getchr __P((void)); +static char *getstr __P((void)); +static int getint __P((void)); +static intmax_t getintmax __P((void)); +static uintmax_t getuintmax __P((void)); + +#if defined (HAVE_LONG_DOUBLE) && HAVE_DECL_STRTOLD && !defined(STRTOLD_BROKEN) +typedef long double floatmax_t; +# define FLOATMAX_CONV "L" +# define strtofltmax strtold +#else +typedef double floatmax_t; +# define FLOATMAX_CONV "" +# define strtofltmax strtod +#endif +static floatmax_t getfloatmax __P((void)); + +static int asciicode __P((void)); + +static WORD_LIST *garglist; +static int retval; +static int conversion_error; + +/* printf -v var support */ +static int vflag = 0; +static char *vbuf, *vname; +static size_t vbsize; +static int vblen; + +static intmax_t tw; + +static char *conv_buf; +static size_t conv_bufsize; + +int +printf_builtin (list) + WORD_LIST *list; +{ + int ch, fieldwidth, precision; + int have_fieldwidth, have_precision; + char convch, thisch, nextch, *format, *modstart, *fmt, *start; + + conversion_error = 0; + retval = EXECUTION_SUCCESS; + + vflag = 0; + + reset_internal_getopt (); + while ((ch = internal_getopt (list, "v:")) != -1) + { + switch (ch) + { + case 'v': + if (legal_identifier (vname = list_optarg)) + { + vflag = 1; + vblen = 0; + } + else + { + sh_invalidid (vname); + return (EX_USAGE); + } + break; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; /* skip over possible `--' */ + + if (list == 0) + { + builtin_usage (); + return (EX_USAGE); + } + + if (list->word->word == 0 || list->word->word[0] == '\0') + return (EXECUTION_SUCCESS); + + format = list->word->word; + tw = 0; + + garglist = list->next; + + /* If the format string is empty after preprocessing, return immediately. */ + if (format == 0 || *format == 0) + return (EXECUTION_SUCCESS); + + /* Basic algorithm is to scan the format string for conversion + specifications -- once one is found, find out if the field + width or precision is a '*'; if it is, gather up value. Note, + format strings are reused as necessary to use up the provided + arguments, arguments of zero/null string are provided to use + up the format string. */ + do + { + tw = 0; + /* find next format specification */ + for (fmt = format; *fmt; fmt++) + { + precision = fieldwidth = 0; + have_fieldwidth = have_precision = 0; + + if (*fmt == '\\') + { + fmt++; + /* A NULL third argument to tescape means to bypass the + special processing for arguments to %b. */ + fmt += tescape (fmt, &nextch, (int *)NULL); + PC (nextch); + fmt--; /* for loop will increment it for us again */ + continue; + } + + if (*fmt != '%') + { + PC (*fmt); + continue; + } + + /* ASSERT(*fmt == '%') */ + start = fmt++; + + if (*fmt == '%') /* %% prints a % */ + { + PC ('%'); + continue; + } + + /* found format specification, skip to field width */ + for (; *fmt && strchr(SKIP1, *fmt); ++fmt) + ; + + /* Skip optional field width. */ + if (*fmt == '*') + { + fmt++; + have_fieldwidth = 1; + fieldwidth = getint (); + } + else + while (DIGIT (*fmt)) + fmt++; + + /* Skip optional '.' and precision */ + if (*fmt == '.') + { + ++fmt; + if (*fmt == '*') + { + fmt++; + have_precision = 1; + precision = getint (); + } + else + { + /* Negative precisions are allowed but treated as if the + precision were missing; I would like to allow a leading + `+' in the precision number as an extension, but lots + of asprintf/fprintf implementations get this wrong. */ +#if 0 + if (*fmt == '-' || *fmt == '+') +#else + if (*fmt == '-') +#endif + fmt++; + while (DIGIT (*fmt)) + fmt++; + } + } + + /* skip possible format modifiers */ + modstart = fmt; + while (*fmt && strchr (LENMODS, *fmt)) + fmt++; + + if (*fmt == 0) + { + builtin_error (_("`%s': missing format character"), start); + PRETURN (EXECUTION_FAILURE); + } + + convch = *fmt; + thisch = modstart[0]; + nextch = modstart[1]; + modstart[0] = convch; + modstart[1] = '\0'; + + switch(convch) + { + case 'c': + { + char p; + + p = getchr (); + PF(start, p); + break; + } + + case 's': + { + char *p; + + p = getstr (); + PF(start, p); + break; + } + + case 'n': + { + char *var; + + var = getstr (); + if (var && *var) + { + if (legal_identifier (var)) + bind_var_to_int (var, tw); + else + { + sh_invalidid (var); + PRETURN (EXECUTION_FAILURE); + } + } + break; + } + + case 'b': /* expand escapes in argument */ + { + char *p, *xp; + int rlen, r; + + p = getstr (); + ch = rlen = r = 0; + xp = bexpand (p, strlen (p), &ch, &rlen); + + if (xp) + { + /* Have to use printstr because of possible NUL bytes + in XP -- printf does not handle that well. */ + r = printstr (start, xp, rlen, fieldwidth, precision); + if (r < 0) + { + sh_wrerror (); + clearerr (stdout); + retval = EXECUTION_FAILURE; + } + free (xp); + } + + if (ch || r < 0) + PRETURN (retval); + break; + } + + case 'q': /* print with shell quoting */ + { + char *p, *xp; + int r; + + r = 0; + p = getstr (); + if (ansic_shouldquote (p)) + xp = ansic_quote (p, 0, (int *)0); + else + xp = sh_backslash_quote (p); + if (xp) + { + /* Use printstr to get fieldwidth and precision right. */ + r = printstr (start, xp, strlen (xp), fieldwidth, precision); + if (r < 0) + { + sh_wrerror (); + clearerr (stdout); + } + free (xp); + } + + if (r < 0) + PRETURN (EXECUTION_FAILURE); + break; + } + + case 'd': + case 'i': + { + char *f; + long p; + intmax_t pp; + + p = pp = getintmax (); + if (p != pp) + { + f = mklong (start, PRIdMAX, sizeof (PRIdMAX) - 2); + PF (f, pp); + } + else + { + /* Optimize the common case where the integer fits + in "long". This also works around some long + long and/or intmax_t library bugs in the common + case, e.g. glibc 2.2 x86. */ + f = mklong (start, "l", 1); + PF (f, p); + } + break; + } + + case 'o': + case 'u': + case 'x': + case 'X': + { + char *f; + unsigned long p; + uintmax_t pp; + + p = pp = getuintmax (); + if (p != pp) + { + f = mklong (start, PRIdMAX, sizeof (PRIdMAX) - 2); + PF (f, pp); + } + else + { + f = mklong (start, "l", 1); + PF (f, p); + } + break; + } + + case 'e': + case 'E': + case 'f': + case 'F': + case 'g': + case 'G': +#if defined (HAVE_PRINTF_A_FORMAT) + case 'a': + case 'A': +#endif + { + char *f; + floatmax_t p; + + p = getfloatmax (); + f = mklong (start, FLOATMAX_CONV, sizeof(FLOATMAX_CONV) - 1); + PF (f, p); + break; + } + + /* We don't output unrecognized format characters; we print an + error message and return a failure exit status. */ + default: + builtin_error (_("`%c': invalid format character"), convch); + PRETURN (EXECUTION_FAILURE); + } + + modstart[0] = thisch; + modstart[1] = nextch; + } + + if (ferror (stdout)) + { + sh_wrerror (); + clearerr (stdout); + PRETURN (EXECUTION_FAILURE); + } + } + while (garglist && garglist != list->next); + + if (conversion_error) + retval = EXECUTION_FAILURE; + + PRETURN (retval); +} + +static void +printf_erange (s) + char *s; +{ + builtin_error ("warning: %s: %s", s, strerror(ERANGE)); +} + +/* We duplicate a lot of what printf(3) does here. */ +static int +printstr (fmt, string, len, fieldwidth, precision) + char *fmt; /* format */ + char *string; /* expanded string argument */ + int len; /* length of expanded string */ + int fieldwidth; /* argument for width of `*' */ + int precision; /* argument for precision of `*' */ +{ +#if 0 + char *s; +#endif + int padlen, nc, ljust, i; + int fw, pr; /* fieldwidth and precision */ + +#if 0 + if (string == 0 || *string == '\0') +#else + if (string == 0 || len == 0) +#endif + return; + +#if 0 + s = fmt; +#endif + if (*fmt == '%') + fmt++; + + ljust = fw = 0; + pr = -1; + + /* skip flags */ + while (strchr (SKIP1, *fmt)) + { + if (*fmt == '-') + ljust = 1; + fmt++; + } + + /* get fieldwidth, if present */ + if (*fmt == '*') + { + fmt++; + fw = fieldwidth; + if (fw < 0) + { + fw = -fw; + ljust = 1; + } + } + else if (DIGIT (*fmt)) + { + fw = *fmt++ - '0'; + while (DIGIT (*fmt)) + fw = (fw * 10) + (*fmt++ - '0'); + } + + /* get precision, if present */ + if (*fmt == '.') + { + fmt++; + if (*fmt == '*') + { + fmt++; + pr = precision; + } + else if (DIGIT (*fmt)) + { + pr = *fmt++ - '0'; + while (DIGIT (*fmt)) + pr = (pr * 10) + (*fmt++ - '0'); + } + } + +#if 0 + /* If we remove this, get rid of `s'. */ + if (*fmt != 'b' && *fmt != 'q') + { + internal_error ("format parsing problem: %s", s); + fw = pr = 0; + } +#endif + + /* chars from string to print */ + nc = (pr >= 0 && pr <= len) ? pr : len; + + padlen = fw - nc; + if (padlen < 0) + padlen = 0; + if (ljust) + padlen = -padlen; + + /* leading pad characters */ + for (; padlen > 0; padlen--) + PC (' '); + + /* output NC characters from STRING */ + for (i = 0; i < nc; i++) + PC (string[i]); + + /* output any necessary trailing padding */ + for (; padlen < 0; padlen++) + PC (' '); + + return (ferror (stdout) ? -1 : 0); +} + +/* Convert STRING by expanding the escape sequences specified by the + POSIX standard for printf's `%b' format string. If SAWC is non-null, + perform the processing appropriate for %b arguments. In particular, + recognize `\c' and use that as a string terminator. If we see \c, set + *SAWC to 1 before returning. LEN is the length of STRING. */ + +/* Translate a single backslash-escape sequence starting at ESTART (the + character after the backslash) and return the number of characters + consumed by the sequence. CP is the place to return the translated + value. *SAWC is set to 1 if the escape sequence was \c, since that means + to short-circuit the rest of the processing. If SAWC is null, we don't + do the \c short-circuiting, and \c is treated as an unrecognized escape + sequence; we also bypass the other processing specific to %b arguments. */ +static int +tescape (estart, cp, sawc) + char *estart; + char *cp; + int *sawc; +{ + register char *p; + int temp, c, evalue; + + p = estart; + + switch (c = *p++) + { +#if defined (__STDC__) + case 'a': *cp = '\a'; break; +#else + case 'a': *cp = '\007'; break; +#endif + + case 'b': *cp = '\b'; break; + + case 'e': + case 'E': *cp = '\033'; break; /* ESC -- non-ANSI */ + + case 'f': *cp = '\f'; break; + + case 'n': *cp = '\n'; break; + + case 'r': *cp = '\r'; break; + + case 't': *cp = '\t'; break; + + case 'v': *cp = '\v'; break; + + /* The octal escape sequences are `\0' followed by up to three octal + digits (if SAWC), or `\' followed by up to three octal digits (if + !SAWC). As an extension, we allow the latter form even if SAWC. */ + case '0': case '1': case '2': case '3': + case '4': case '5': case '6': case '7': + evalue = OCTVALUE (c); + for (temp = 2 + (!evalue && !!sawc); ISOCTAL (*p) && temp--; p++) + evalue = (evalue * 8) + OCTVALUE (*p); + *cp = evalue & 0xFF; + break; + + /* And, as another extension, we allow \xNNN, where each N is a + hex digit. */ + case 'x': +#if 0 + for (evalue = 0; ISXDIGIT ((unsigned char)*p); p++) +#else + for (temp = 2, evalue = 0; ISXDIGIT ((unsigned char)*p) && temp--; p++) +#endif + evalue = (evalue * 16) + HEXVALUE (*p); + if (p == estart + 1) + { + builtin_error (_("missing hex digit for \\x")); + *cp = '\\'; + return 0; + } + *cp = evalue & 0xFF; + break; + + case '\\': /* \\ -> \ */ + *cp = c; + break; + + /* SAWC == 0 means that \', \", and \? are recognized as escape + sequences, though the only processing performed is backslash + removal. */ + case '\'': case '"': case '?': + if (!sawc) + *cp = c; + else + { + *cp = '\\'; + return 0; + } + break; + + case 'c': + if (sawc) + { + *sawc = 1; + break; + } + /* other backslash escapes are passed through unaltered */ + default: + *cp = '\\'; + return 0; + } + return (p - estart); +} + +static char * +bexpand (string, len, sawc, lenp) + char *string; + int len, *sawc, *lenp; +{ + int temp; + char *ret, *r, *s, c; + +#if 0 + if (string == 0 || *string == '\0') +#else + if (string == 0 || len == 0) +#endif + { + if (sawc) + *sawc = 0; + if (lenp) + *lenp = 0; + return ((char *)NULL); + } + + ret = (char *)xmalloc (len + 1); + for (r = ret, s = string; s && *s; ) + { + c = *s++; + if (c != '\\' || *s == '\0') + { + *r++ = c; + continue; + } + temp = 0; + s += tescape (s, &c, &temp); + if (temp) + { + if (sawc) + *sawc = 1; + break; + } + + *r++ = c; + } + + *r = '\0'; + if (lenp) + *lenp = r - ret; + return ret; +} + +static char * +vbadd (buf, blen) + char *buf; + int blen; +{ + size_t nlen; + + nlen = vblen + blen + 1; + if (nlen >= vbsize) + { + vbsize = ((nlen + 63) >> 6) << 6; + vbuf = (char *)xrealloc (vbuf, vbsize); + } + + if (blen == 1) + vbuf[vblen++] = buf[0]; + else + { + FASTCOPY (buf, vbuf + vblen, blen); + vblen += blen; + } + vbuf[vblen] = '\0'; + +#ifdef DEBUG + if (strlen (vbuf) != vblen) + internal_error ("printf:vbadd: vblen (%d) != strlen (vbuf) (%d)", vblen, strlen (vbuf)); +#endif + + return vbuf; +} + +static char * +mklong (str, modifiers, mlen) + char *str; + char *modifiers; + size_t mlen; +{ + size_t len, slen; + + slen = strlen (str); + len = slen + mlen + 1; + + if (len > conv_bufsize) + { + conv_bufsize = (((len + 1023) >> 10) << 10); + conv_buf = (char *)xrealloc (conv_buf, conv_bufsize); + } + + FASTCOPY (str, conv_buf, slen - 1); + FASTCOPY (modifiers, conv_buf + slen - 1, mlen); + + conv_buf[len - 2] = str[slen - 1]; + conv_buf[len - 1] = '\0'; + return (conv_buf); +} + +static int +getchr () +{ + int ret; + + if (garglist == 0) + return ('\0'); + + ret = (int)garglist->word->word[0]; + garglist = garglist->next; + return ret; +} + +static char * +getstr () +{ + char *ret; + + if (garglist == 0) + return (""); + + ret = garglist->word->word; + garglist = garglist->next; + return ret; +} + +static int +getint () +{ + intmax_t ret; + + ret = getintmax (); + + if (ret > INT_MAX) + { + printf_erange (garglist->word->word); + ret = INT_MAX; + } + else if (ret < INT_MIN) + { + printf_erange (garglist->word->word); + ret = INT_MIN; + } + + return ((int)ret); +} + +static intmax_t +getintmax () +{ + intmax_t ret; + char *ep; + + if (garglist == 0) + return (0); + + if (garglist->word->word[0] == '\'' || garglist->word->word[0] == '"') + return asciicode (); + + errno = 0; + ret = strtoimax (garglist->word->word, &ep, 0); + + if (*ep) + { + sh_invalidnum (garglist->word->word); + /* POSIX.2 says ``...a diagnostic message shall be written to standard + error, and the utility shall not exit with a zero exit status, but + shall continue processing any remaining operands and shall write the + value accumulated at the time the error was detected to standard + output.'' Yecch. */ + ret = 0; + conversion_error = 1; + } + else if (errno == ERANGE) + printf_erange (garglist->word->word); + + garglist = garglist->next; + return (ret); +} + +static uintmax_t +getuintmax () +{ + uintmax_t ret; + char *ep; + + if (garglist == 0) + return (0); + + if (garglist->word->word[0] == '\'' || garglist->word->word[0] == '"') + return asciicode (); + + errno = 0; + ret = strtoumax (garglist->word->word, &ep, 0); + + if (*ep) + { + sh_invalidnum (garglist->word->word); + /* Same POSIX.2 conversion error requirements as getintmax(). */ + ret = 0; + conversion_error = 1; + } + else if (errno == ERANGE) + printf_erange (garglist->word->word); + + garglist = garglist->next; + return (ret); +} + +static floatmax_t +getfloatmax () +{ + floatmax_t ret; + char *ep; + + if (garglist == 0) + return (0); + + if (garglist->word->word[0] == '\'' || garglist->word->word[0] == '"') + return asciicode (); + + errno = 0; + ret = strtofltmax (garglist->word->word, &ep); + + if (*ep) + { + sh_invalidnum (garglist->word->word); + /* Same thing about POSIX.2 conversion error requirements. */ + ret = 0; + conversion_error = 1; + } + else if (errno == ERANGE) + printf_erange (garglist->word->word); + + garglist = garglist->next; + return (ret); +} + +/* NO check is needed for garglist here. */ +static int +asciicode () +{ + register int ch; + + ch = garglist->word->word[1]; + garglist = garglist->next; + return (ch); +} diff --git a/bash-20060316/builtins/psize-posix.c b/bash-20060316/builtins/psize-posix.c new file mode 100644 index 000000000..dffc9c349 --- /dev/null +++ b/bash-20060316/builtins/psize-posix.c @@ -0,0 +1,15 @@ +#include +#include + +main(c, v) +int c; +char **v; +{ + char *p; + long l; + + p = v[1] ? v[1] : "/"; + l = pathconf (p, _PC_PIPE_BUF); + printf ("%ld\n", l); + exit(0); +} diff --git a/bash-20060316/builtins/psize.c b/bash-20060316/builtins/psize.c new file mode 100644 index 000000000..23abb6582 --- /dev/null +++ b/bash-20060316/builtins/psize.c @@ -0,0 +1,79 @@ +/* psize.c - Find pipe size. */ + +/* Copyright (C) 1987, 1991 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + Bash is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with Bash; see the file COPYING. If not, write to the Free + Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +/* Write output in 128-byte chunks until we get a sigpipe or write gets an + EPIPE. Then report how many bytes we wrote. We assume that this is the + pipe size. */ +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include +#ifndef _MINIX +#include "../bashtypes.h" +#endif +#include +#include + +#include "../command.h" +#include "../general.h" +#include "../sig.h" + +#ifndef errno +extern int errno; +#endif + +int nw; + +sighandler +sigpipe (sig) + int sig; +{ + fprintf (stderr, "%d\n", nw); + exit (0); +} + +int +main (argc, argv) + int argc; + char **argv; +{ + char buf[128]; + register int i; + + for (i = 0; i < 128; i++) + buf[i] = ' '; + + signal (SIGPIPE, sigpipe); + + nw = 0; + for (;;) + { + int n; + n = write (1, buf, 128); + nw += n; + } + return (0); +} diff --git a/bash-20060316/builtins/psize.sh b/bash-20060316/builtins/psize.sh new file mode 100644 index 000000000..c4d73e1ad --- /dev/null +++ b/bash-20060316/builtins/psize.sh @@ -0,0 +1,45 @@ +#! /bin/sh +# +# psize.sh -- determine this system's pipe size, and write a define to +# pipesize.h so ulimit.c can use it. + +: ${TMPDIR:=/tmp} +# try to use mktemp(1) if the system supports it +{ TMPFILE="`mktemp $TMPDIR/pipsize.XXXXXX 2>/dev/null`"; } 2>/dev/null +used_mktemp=true + +if [ -z "$TMPFILE" ]; then + TMPNAME=pipsize.$$ + TMPFILE=$TMPDIR/$TMPNAME + used_mktemp=false +fi + +trap 'rm -f "$TMPFILE" ; exit 1' 1 2 3 6 15 +trap 'rm -f "$TMPFILE"' 0 + +echo "/*" +echo " * pipesize.h" +echo " *" +echo " * This file is automatically generated by psize.sh" +echo " * Do not edit!" +echo " */" +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, +# `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. +# +$used_mktemp || rm -f "$TMPFILE" + +./psize.aux 2>"$TMPFILE" | sleep 3 + +if [ -s "$TMPFILE" ]; then + echo "#define PIPESIZE `cat "$TMPFILE"`" +else + echo "#define PIPESIZE 512" +fi + +exit 0 diff --git a/bash-20060316/builtins/pushd.def b/bash-20060316/builtins/pushd.def new file mode 100644 index 000000000..86c0bddb5 --- /dev/null +++ b/bash-20060316/builtins/pushd.def @@ -0,0 +1,754 @@ +This file is pushd.def, from which is created pushd.c. It implements the +builtins "pushd", "popd", and "dirs" in Bash. + +Copyright (C) 1987-2004 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES pushd.c + +$BUILTIN pushd +$FUNCTION pushd_builtin +$DEPENDS_ON PUSHD_AND_POPD +$SHORT_DOC pushd [dir | +N | -N] [-n] +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. + ++N Rotates the stack so that the Nth directory (counting + from the left of the list shown by `dirs', 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 `dirs', starting with + zero) is at the top. + +-n suppress the normal change of directory when adding directories + to the stack, so only the stack is manipulated. + +dir adds DIR to the directory stack at the top, making it the + new current working directory. + +You can see the directory stack with the `dirs' command. +$END + +$BUILTIN popd +$FUNCTION popd_builtin +$DEPENDS_ON PUSHD_AND_POPD +$SHORT_DOC popd [+N | -N] [-n] +Removes entries from the directory stack. With no arguments, +removes the top directory from the stack, and cd's to the new +top directory. + ++N removes the Nth entry counting from the left of the list + shown by `dirs', starting with zero. For example: `popd +0' + removes the first directory, `popd +1' the second. + +-N removes the Nth entry counting from the right of the list + shown by `dirs', starting with zero. For example: `popd -0' + removes the last directory, `popd -1' the next to last. + +-n suppress the normal change of directory when removing directories + from the stack, so only the stack is manipulated. + +You can see the directory stack with the `dirs' command. +$END + +$BUILTIN dirs +$FUNCTION dirs_builtin +$DEPENDS_ON PUSHD_AND_POPD +$SHORT_DOC dirs [-clpv] [+N] [-N] +Display the list of currently remembered directories. Directories +find their way onto the list with the `pushd' command; you can get +back up through the list with the `popd' command. + +The -l flag specifies that `dirs' should not print shorthand versions +of directories which are relative to your home directory. This means +that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag +causes `dirs' to print the directory stack with one entry per line, +prepending the directory name with its position in the stack. The -p +flag does the same thing, but the stack position is not prepended. +The -c flag clears the directory stack by deleting all of the elements. + ++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. +$END + +#include + +#if defined (PUSHD_AND_POPD) +#include +#ifndef _MINIX +# include +#endif + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include "../bashansi.h" +#include "../bashintl.h" + +#include + +#include + +#include "../shell.h" +#include "maxpath.h" +#include "common.h" +#include "builtext.h" + +#ifdef LOADABLE_BUILTIN +# include "builtins.h" +#endif + +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +/* The list of remembered directories. */ +static char **pushd_directory_list = (char **)NULL; + +/* Number of existing slots in this list. */ +static int directory_list_size; + +/* Offset to the end of the list. */ +static int directory_list_offset; + +static void pushd_error __P((int, char *)); +static void clear_directory_stack __P((void)); +static int cd_to_string __P((char *)); +static int change_to_temp __P((char *)); +static void add_dirstack_element __P((char *)); +static int get_dirstack_index __P((intmax_t, int, int *)); + +#define NOCD 0x01 +#define ROTATE 0x02 +#define LONGFORM 0x04 +#define CLEARSTAK 0x08 + +int +pushd_builtin (list) + WORD_LIST *list; +{ + WORD_LIST *orig_list; + char *temp, *current_directory, *top; + int j, flags, skipopt; + intmax_t num; + char direction; + + orig_list = list; + if (list && list->word && ISOPTION (list->word->word, '-')) + { + list = list->next; + skipopt = 1; + } + else + skipopt = 0; + + /* If there is no argument list then switch current and + top of list. */ + if (list == 0) + { + if (directory_list_offset == 0) + { + builtin_error (_("no other directory")); + return (EXECUTION_FAILURE); + } + + current_directory = get_working_directory ("pushd"); + if (current_directory == 0) + return (EXECUTION_FAILURE); + + j = directory_list_offset - 1; + temp = pushd_directory_list[j]; + pushd_directory_list[j] = current_directory; + j = change_to_temp (temp); + free (temp); + return j; + } + + for (flags = 0; skipopt == 0 && list; list = list->next) + { + if (ISOPTION (list->word->word, 'n')) + { + flags |= NOCD; + } + else if (ISOPTION (list->word->word, '-')) + { + list = list->next; + break; + } + else if (list->word->word[0] == '-' && list->word->word[1] == '\0') + /* Let `pushd -' work like it used to. */ + break; + else if (((direction = list->word->word[0]) == '+') || direction == '-') + { + if (legal_number (list->word->word + 1, &num) == 0) + { + sh_invalidnum (list->word->word); + builtin_usage (); + return (EXECUTION_FAILURE); + } + + if (direction == '-') + num = directory_list_offset - num; + + if (num > directory_list_offset || num < 0) + { + pushd_error (directory_list_offset, list->word->word); + return (EXECUTION_FAILURE); + } + flags |= ROTATE; + } + else if (*list->word->word == '-') + { + sh_invalidopt (list->word->word); + builtin_usage (); + return (EXECUTION_FAILURE); + } + else + break; + } + + if (flags & ROTATE) + { + /* Rotate the stack num times. Remember, the current + directory acts like it is part of the stack. */ + temp = get_working_directory ("pushd"); + + if (num == 0) + { + j = ((flags & NOCD) == 0) ? change_to_temp (temp) : EXECUTION_SUCCESS; + free (temp); + return j; + } + + do + { + top = pushd_directory_list[directory_list_offset - 1]; + + for (j = directory_list_offset - 2; j > -1; j--) + pushd_directory_list[j + 1] = pushd_directory_list[j]; + + pushd_directory_list[j + 1] = temp; + + temp = top; + num--; + } + while (num); + + j = ((flags & NOCD) == 0) ? change_to_temp (temp) : EXECUTION_SUCCESS; + free (temp); + return j; + } + + if (list == 0) + return (EXECUTION_SUCCESS); + + /* Change to the directory in list->word->word. Save the current + directory on the top of the stack. */ + current_directory = get_working_directory ("pushd"); + if (current_directory == 0) + return (EXECUTION_FAILURE); + + j = ((flags & NOCD) == 0) ? cd_builtin (skipopt ? orig_list : list) : EXECUTION_SUCCESS; + if (j == EXECUTION_SUCCESS) + { + add_dirstack_element ((flags & NOCD) ? savestring (list->word->word) : current_directory); + dirs_builtin ((WORD_LIST *)NULL); + if (flags & NOCD) + free (current_directory); + return (EXECUTION_SUCCESS); + } + else + { + free (current_directory); + return (EXECUTION_FAILURE); + } +} + +/* Pop the directory stack, and then change to the new top of the stack. + If LIST is non-null it should consist of a word +N or -N, which says + what element to delete from the stack. The default is the top one. */ +int +popd_builtin (list) + WORD_LIST *list; +{ + register int i; + intmax_t which; + int flags; + char direction; + char *which_word; + + which_word = (char *)NULL; + for (flags = 0, which = 0, direction = '+'; list; list = list->next) + { + if (ISOPTION (list->word->word, 'n')) + { + flags |= NOCD; + } + else if (ISOPTION (list->word->word, '-')) + { + list = list->next; + break; + } + else if (((direction = list->word->word[0]) == '+') || direction == '-') + { + if (legal_number (list->word->word + 1, &which) == 0) + { + sh_invalidnum (list->word->word); + builtin_usage (); + return (EXECUTION_FAILURE); + } + which_word = list->word->word; + } + else if (*list->word->word == '-') + { + sh_invalidopt (list->word->word); + builtin_usage (); + return (EXECUTION_FAILURE); + } + else + break; + } + + if (which > directory_list_offset || (directory_list_offset == 0 && which == 0)) + { + pushd_error (directory_list_offset, which_word ? which_word : ""); + return (EXECUTION_FAILURE); + } + + /* Handle case of no specification, or top of stack specification. */ + if ((direction == '+' && which == 0) || + (direction == '-' && which == directory_list_offset)) + { + i = ((flags & NOCD) == 0) ? cd_to_string (pushd_directory_list[directory_list_offset - 1]) + : EXECUTION_SUCCESS; + if (i != EXECUTION_SUCCESS) + return (i); + free (pushd_directory_list[--directory_list_offset]); + } + else + { + /* Since an offset other than the top directory was specified, + remove that directory from the list and shift the remainder + of the list into place. */ + i = (direction == '+') ? directory_list_offset - which : which; + free (pushd_directory_list[i]); + directory_list_offset--; + + /* Shift the remainder of the list into place. */ + for (; i < directory_list_offset; i++) + pushd_directory_list[i] = pushd_directory_list[i + 1]; + } + + dirs_builtin ((WORD_LIST *)NULL); + return (EXECUTION_SUCCESS); +} + +/* Print the current list of directories on the directory stack. */ +int +dirs_builtin (list) + WORD_LIST *list; +{ + int flags, desired_index, index_flag, vflag; + intmax_t i; + char *temp, *w; + + for (flags = vflag = index_flag = 0, desired_index = -1, w = ""; list; list = list->next) + { + if (ISOPTION (list->word->word, 'l')) + { + flags |= LONGFORM; + } + else if (ISOPTION (list->word->word, 'c')) + { + flags |= CLEARSTAK; + } + else if (ISOPTION (list->word->word, 'v')) + { + vflag |= 2; + } + else if (ISOPTION (list->word->word, 'p')) + { + vflag |= 1; + } + else if (ISOPTION (list->word->word, '-')) + { + list = list->next; + break; + } + else if (*list->word->word == '+' || *list->word->word == '-') + { + int sign; + if (legal_number (w = list->word->word + 1, &i) == 0) + { + sh_invalidnum (list->word->word); + builtin_usage (); + return (EXECUTION_FAILURE); + } + sign = (*list->word->word == '+') ? 1 : -1; + desired_index = get_dirstack_index (i, sign, &index_flag); + } + else + { + sh_invalidopt (list->word->word); + builtin_usage (); + return (EXECUTION_FAILURE); + } + } + + if (flags & CLEARSTAK) + { + clear_directory_stack (); + return (EXECUTION_SUCCESS); + } + + if (index_flag && (desired_index < 0 || desired_index > directory_list_offset)) + { + pushd_error (directory_list_offset, w); + return (EXECUTION_FAILURE); + } + +#define DIRSTACK_FORMAT(temp) \ + (flags & LONGFORM) ? temp : polite_directory_format (temp) + + /* The first directory printed is always the current working directory. */ + if (index_flag == 0 || (index_flag == 1 && desired_index == 0)) + { + temp = get_working_directory ("dirs"); + if (temp == 0) + temp = savestring (_("")); + if (vflag & 2) + printf ("%2d %s", 0, DIRSTACK_FORMAT (temp)); + else + printf ("%s", DIRSTACK_FORMAT (temp)); + free (temp); + if (index_flag) + { + putchar ('\n'); + return EXECUTION_SUCCESS; + } + } + +#define DIRSTACK_ENTRY(i) \ + (flags & LONGFORM) ? pushd_directory_list[i] \ + : polite_directory_format (pushd_directory_list[i]) + + /* Now print the requested directory stack entries. */ + if (index_flag) + { + if (vflag & 2) + printf ("%2d %s", directory_list_offset - desired_index, + DIRSTACK_ENTRY (desired_index)); + else + printf ("%s", DIRSTACK_ENTRY (desired_index)); + } + else + for (i = directory_list_offset - 1; i >= 0; i--) + if (vflag >= 2) + printf ("\n%2d %s", directory_list_offset - (int)i, DIRSTACK_ENTRY (i)); + else + printf ("%s%s", (vflag & 1) ? "\n" : " ", DIRSTACK_ENTRY (i)); + + putchar ('\n'); + fflush (stdout); + return (EXECUTION_SUCCESS); +} + +static void +pushd_error (offset, arg) + int offset; + char *arg; +{ + if (offset == 0) + builtin_error ("directory stack empty"); + else + sh_erange (arg, "directory stack index"); +} + +static void +clear_directory_stack () +{ + register int i; + + for (i = 0; i < directory_list_offset; i++) + free (pushd_directory_list[i]); + directory_list_offset = 0; +} + +/* Switch to the directory in NAME. This uses the cd_builtin to do the work, + so if the result is EXECUTION_FAILURE then an error message has already + been printed. */ +static int +cd_to_string (name) + char *name; +{ + WORD_LIST *tlist; + WORD_LIST *dir; + int result; + + dir = make_word_list (make_word (name), NULL); + tlist = make_word_list (make_word ("--"), dir); + result = cd_builtin (tlist); + dispose_words (tlist); + return (result); +} + +static int +change_to_temp (temp) + char *temp; +{ + int tt; + + tt = temp ? cd_to_string (temp) : EXECUTION_FAILURE; + + if (tt == EXECUTION_SUCCESS) + dirs_builtin ((WORD_LIST *)NULL); + + return (tt); +} + +static void +add_dirstack_element (dir) + char *dir; +{ + if (directory_list_offset == directory_list_size) + pushd_directory_list = strvec_resize (pushd_directory_list, directory_list_size += 10); + pushd_directory_list[directory_list_offset++] = dir; +} + +static int +get_dirstack_index (ind, sign, indexp) + intmax_t ind; + int sign, *indexp; +{ + if (indexp) + *indexp = sign > 0 ? 1 : 2; + + /* dirs +0 prints the current working directory. */ + /* dirs -0 prints last element in directory stack */ + if (ind == 0 && sign > 0) + return 0; + else if (ind == directory_list_offset) + { + if (indexp) + *indexp = sign > 0 ? 2 : 1; + return 0; + } + else if (ind >= 0 && ind <= directory_list_offset) + return (sign > 0 ? directory_list_offset - ind : ind); + else + return -1; +} + +/* Used by the tilde expansion code. */ +char * +get_dirstack_from_string (string) + char *string; +{ + int ind, sign, index_flag; + intmax_t i; + + sign = 1; + if (*string == '-' || *string == '+') + { + sign = (*string == '-') ? -1 : 1; + string++; + } + if (legal_number (string, &i) == 0) + return ((char *)NULL); + + index_flag = 0; + ind = get_dirstack_index (i, sign, &index_flag); + if (index_flag && (ind < 0 || ind > directory_list_offset)) + return ((char *)NULL); + if (index_flag == 0 || (index_flag == 1 && ind == 0)) + return (get_string_value ("PWD")); + else + return (pushd_directory_list[ind]); +} + +#ifdef INCLUDE_UNUSED +char * +get_dirstack_element (ind, sign) + intmax_t ind; + int sign; +{ + int i; + + i = get_dirstack_index (ind, sign, (int *)NULL); + return (i < 0 || i > directory_list_offset) ? (char *)NULL + : pushd_directory_list[i]; +} +#endif + +void +set_dirstack_element (ind, sign, value) + intmax_t ind; + int sign; + char *value; +{ + int i; + + i = get_dirstack_index (ind, sign, (int *)NULL); + if (ind == 0 || i < 0 || i > directory_list_offset) + return; + free (pushd_directory_list[i]); + pushd_directory_list[i] = savestring (value); +} + +WORD_LIST * +get_directory_stack (flags) + int flags; +{ + register int i; + WORD_LIST *ret; + char *d, *t; + + for (ret = (WORD_LIST *)NULL, i = 0; i < directory_list_offset; i++) + { + d = (flags&1) ? polite_directory_format (pushd_directory_list[i]) + : pushd_directory_list[i]; + ret = make_word_list (make_word (d), ret); + } + /* Now the current directory. */ + d = get_working_directory ("dirstack"); + i = 0; /* sentinel to decide whether or not to free d */ + if (d == 0) + d = "."; + else + { + t = polite_directory_format (d); + /* polite_directory_format sometimes returns its argument unchanged. + If it does not, we can free d right away. If it does, we need to + mark d to be deleted later. */ + if (t != d) + { + free (d); + d = t; + } + else /* t == d, so d is what we want */ + i = 1; + } + ret = make_word_list (make_word (d), ret); + if (i) + free (d); + return ret; /* was (REVERSE_LIST (ret, (WORD_LIST *)); */ +} + +#ifdef LOADABLE_BUILTIN +char * const dirs_doc[] = { + N_("Display the list of currently remembered directories. Directories"), + N_("find their way onto the list with the `pushd' command; you can get"), + N_("back up through the list with the `popd' command."), + N_(" "), + N_("The -l flag specifies that `dirs' should not print shorthand versions"), + N_("of directories which are relative to your home directory. This means"), + N_("that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag"), + N_("causes `dirs' to print the directory stack with one entry per line,"), + N_("prepending the directory name with its position in the stack. The -p"), + N_("flag does the same thing, but the stack position is not prepended."), + N_("The -c flag clears the directory stack by deleting all of the elements."), + N_(" "), + N_("+N displays the Nth entry counting from the left of the list shown by"), + N_(" dirs when invoked without options, starting with zero."), + N_(" "), + N_("-N displays the Nth entry counting from the right of the list shown by"), + N_(" dirs when invoked without options, starting with zero."), + (char *)NULL +}; + +char * const pushd_doc[] = { + N_("Adds a directory to the top of the directory stack, or rotates"), + N_("the stack, making the new top of the stack the current working"), + N_("directory. With no arguments, exchanges the top two directories."), + N_(" "), + N_("+N Rotates the stack so that the Nth directory (counting"), + N_(" from the left of the list shown by `dirs', starting with"), + N_(" zero) is at the top."), + N_(" "), + N_("-N Rotates the stack so that the Nth directory (counting"), + N_(" from the right of the list shown by `dirs', starting with"), + N_(" zero) is at the top."), + N_(" "), + N_("-n suppress the normal change of directory when adding directories"), + N_(" to the stack, so only the stack is manipulated."), + N_(" "), + N_("dir adds DIR to the directory stack at the top, making it the"), + N_(" new current working directory."), + N_(" "), + N_("You can see the directory stack with the `dirs' command."), + (char *)NULL +}; + +char * const popd_doc[] = { + N_("Removes entries from the directory stack. With no arguments,"), + N_("removes the top directory from the stack, and cd's to the new"), + N_("top directory."), + N_(" "), + N_("+N removes the Nth entry counting from the left of the list"), + N_(" shown by `dirs', starting with zero. For example: `popd +0'"), + N_(" removes the first directory, `popd +1' the second."), + N_(" "), + N_("-N removes the Nth entry counting from the right of the list"), + N_(" shown by `dirs', starting with zero. For example: `popd -0'"), + N_(" removes the last directory, `popd -1' the next to last."), + N_(" "), + N_("-n suppress the normal change of directory when removing directories"), + N_(" from the stack, so only the stack is manipulated."), + N_(" "), + N_("You can see the directory stack with the `dirs' command."), + (char *)NULL +}; + +struct builtin pushd_struct = { + "pushd", + pushd_builtin, + BUILTIN_ENABLED, + pushd_doc, + "pushd [+N | -N] [-n] [dir]", + 0 +}; + +struct builtin popd_struct = { + "popd", + popd_builtin, + BUILTIN_ENABLED, + popd_doc, + "popd [+N | -N] [-n]", + 0 +}; + +struct builtin dirs_struct = { + "dirs", + dirs_builtin, + BUILTIN_ENABLED, + dirs_doc, + "dirs [-clpv] [+N] [-N]", + 0 +}; +#endif /* LOADABLE_BUILTIN */ + +#endif /* PUSHD_AND_POPD */ diff --git a/bash-20060316/builtins/read.def b/bash-20060316/builtins/read.def new file mode 100644 index 000000000..e844906c1 --- /dev/null +++ b/bash-20060316/builtins/read.def @@ -0,0 +1,779 @@ +This file is read.def, from which is created read.c. +It implements the builtin "read" in Bash. + +Copyright (C) 1987-2005 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES read.c + +$BUILTIN read +$FUNCTION read_builtin +$SHORT_DOC read [-ers] [-u fd] [-t timeout] [-p prompt] [-a array] [-n nchars] [-d delim] [name ...] +One line is read from the standard input, or from file descriptor FD if the +-u option is supplied, and the first word is assigned to the first NAME, +the second word to the second NAME, and so on, with leftover words assigned +to the last NAME. Only the characters found in $IFS are recognized as word +delimiters. If no NAMEs are supplied, the line read is stored in the REPLY +variable. If the -r option is given, this signifies `raw' input, and +backslash escaping is disabled. The -d option causes read to continue +until the first character of DELIM is read, rather than newline. If the -p +option is supplied, the string PROMPT is output without a trailing newline +before attempting to read. If -a is supplied, the words read are assigned +to sequential indices of ARRAY, starting at zero. If -e is supplied and +the shell is interactive, readline is used to obtain the line. If -n is +supplied with a non-zero NCHARS argument, read returns after NCHARS +characters have been read. The -s option causes input coming from a +terminal to not be echoed. + +The -t option causes read to time out and return failure if a complete line +of input is not read within TIMEOUT seconds. If the TMOUT variable is set, +its value is the default timeout. The return code is zero, unless end-of-file +is encountered, read times out, or an invalid file descriptor is supplied as +the argument to -u. +$END + +#include + +#include "bashtypes.h" +#include "posixstat.h" + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include +#include + +#ifdef __CYGWIN__ +# include +# include +#endif + +#include "../bashintl.h" + +#include "../shell.h" +#include "common.h" +#include "bashgetopt.h" + +#include + +#if defined (READLINE) +#include "../bashline.h" +#include +#endif + +#if defined (BUFFERED_INPUT) +# include "input.h" +#endif + +#if !defined(errno) +extern int errno; +#endif + +#if defined (READLINE) +static void reset_attempted_completion_function __P((char *)); +static char *edit_line __P((char *)); +static void set_eol_delim __P((int)); +static void reset_eol_delim __P((char *)); +#endif +static SHELL_VAR *bind_read_variable __P((char *, char *)); + +static sighandler sigalrm __P((int)); +static void reset_alarm __P((void)); + +static procenv_t alrmbuf; +static SigHandler *old_alrm; +static unsigned char delim; + +static sighandler +sigalrm (s) + int s; +{ + longjmp (alrmbuf, 1); +} + +static void +reset_alarm () +{ + set_signal_handler (SIGALRM, old_alrm); + alarm (0); +} + +/* Read the value of the shell variables whose names follow. + The reading is done from the current input stream, whatever + that may be. Successive words of the input line are assigned + to the variables mentioned in LIST. The last variable in LIST + gets the remainder of the words on the line. If no variables + are mentioned in LIST, then the default variable is $REPLY. */ +int +read_builtin (list) + WORD_LIST *list; +{ + register char *varname; + int size, i, nr, pass_next, saw_escape, eof, opt, retval, code; + int input_is_tty, input_is_pipe, unbuffered_read; + int raw, edit, nchars, silent, have_timeout, fd; + unsigned int tmout; + intmax_t intval; + char c; + char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname; + char *e, *t, *t1; + struct stat tsb; + SHELL_VAR *var; +#if defined (ARRAY_VARS) + WORD_LIST *alist; +#endif +#if defined (READLINE) + char *rlbuf; + int rlind; +#endif + + USE_VAR(size); + USE_VAR(i); + USE_VAR(pass_next); + USE_VAR(saw_escape); + USE_VAR(input_is_pipe); +/* USE_VAR(raw); */ + USE_VAR(edit); + USE_VAR(tmout); + USE_VAR(nchars); + USE_VAR(silent); + USE_VAR(ifs_chars); + USE_VAR(prompt); + USE_VAR(arrayname); +#if defined (READLINE) + USE_VAR(rlbuf); + USE_VAR(rlind); +#endif + USE_VAR(list); + + i = 0; /* Index into the string that we are reading. */ + raw = edit = 0; /* Not reading raw input by default. */ + silent = 0; + arrayname = prompt = (char *)NULL; + fd = 0; /* file descriptor to read from */ + +#if defined (READLINE) + rlbuf = (char *)0; + rlind = 0; +#endif + + tmout = 0; /* no timeout */ + nr = nchars = input_is_tty = input_is_pipe = unbuffered_read = have_timeout = 0; + delim = '\n'; /* read until newline */ + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "ersa:d:n:p:t:u:")) != -1) + { + switch (opt) + { + case 'r': + raw = 1; + break; + case 'p': + prompt = list_optarg; + break; + case 's': + silent = 1; + break; + case 'e': +#if defined (READLINE) + edit = 1; +#endif + break; +#if defined (ARRAY_VARS) + case 'a': + arrayname = list_optarg; + break; +#endif + case 't': + code = legal_number (list_optarg, &intval); + if (code == 0 || intval < 0 || intval != (unsigned int)intval) + { + builtin_error (_("%s: invalid timeout specification"), list_optarg); + return (EXECUTION_FAILURE); + } + else + { + have_timeout = 1; + tmout = intval; + } + break; + case 'n': + code = legal_number (list_optarg, &intval); + if (code == 0 || intval < 0 || intval != (int)intval) + { + sh_invalidnum (list_optarg); + return (EXECUTION_FAILURE); + } + else + nchars = intval; + break; + case 'u': + code = legal_number (list_optarg, &intval); + if (code == 0 || intval < 0 || intval != (int)intval) + { + builtin_error (_("%s: invalid file descriptor specification"), list_optarg); + return (EXECUTION_FAILURE); + } + else + fd = intval; + if (sh_validfd (fd) == 0) + { + builtin_error (_("%d: invalid file descriptor: %s"), fd, strerror (errno)); + return (EXECUTION_FAILURE); + } + break; + case 'd': + delim = *list_optarg; + break; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + /* `read -t 0 var' returns failure immediately. XXX - should it test + whether input is available with select/FIONREAD, and fail if those + are unavailable? */ + if (have_timeout && tmout == 0) + return (EXECUTION_FAILURE); + + /* IF IFS is unset, we use the default of " \t\n". */ + ifs_chars = getifs (); + if (ifs_chars == 0) /* XXX - shouldn't happen */ + ifs_chars = ""; + + input_string = (char *)xmalloc (size = 112); /* XXX was 128 */ + + /* $TMOUT, if set, is the default timeout for read. */ + if (have_timeout == 0 && (e = get_string_value ("TMOUT"))) + { + code = legal_number (e, &intval); + if (code == 0 || intval < 0 || intval != (unsigned int)intval) + tmout = 0; + else + tmout = intval; + } + + begin_unwind_frame ("read_builtin"); + +#if defined (BUFFERED_INPUT) + if (interactive == 0 && default_buffered_input >= 0 && fd_is_bash_input (fd)) + sync_buffered_stream (default_buffered_input); +#endif + + input_is_tty = isatty (fd); + if (input_is_tty == 0) +#ifndef __CYGWIN__ + input_is_pipe = (lseek (fd, 0L, SEEK_CUR) < 0) && (errno == ESPIPE); +#else + input_is_pipe = 1; +#endif + + /* If the -p, -e or -s flags were given, but input is not coming from the + terminal, turn them off. */ + if ((prompt || edit || silent) && input_is_tty == 0) + { + prompt = (char *)NULL; + edit = silent = 0; + } + +#if defined (READLINE) + if (edit) + add_unwind_protect (xfree, rlbuf); +#endif + + if (prompt && edit == 0) + { + fprintf (stderr, "%s", prompt); + fflush (stderr); + } + + pass_next = 0; /* Non-zero signifies last char was backslash. */ + saw_escape = 0; /* Non-zero signifies that we saw an escape char */ + + if (tmout > 0) + { + /* Turn off the timeout if stdin is a regular file (e.g. from + input redirection). */ + if ((fstat (fd, &tsb) < 0) || S_ISREG (tsb.st_mode)) + tmout = 0; + } + + if (tmout > 0) + { + code = setjmp (alrmbuf); + if (code) + { + run_unwind_frame ("read_builtin"); + return (EXECUTION_FAILURE); + } + old_alrm = set_signal_handler (SIGALRM, sigalrm); + add_unwind_protect (reset_alarm, (char *)NULL); + if (edit) + add_unwind_protect (reset_attempted_completion_function, (char *)NULL); + alarm (tmout); + } + + /* If we've been asked to read only NCHARS chars, or we're using some + character other than newline to terminate the line, do the right + thing to readline or the tty. */ + if (nchars > 0 || delim != '\n') + { +#if defined (READLINE) + if (edit) + { + if (nchars > 0) + { + unwind_protect_int (rl_num_chars_to_read); + rl_num_chars_to_read = nchars; + } + if (delim != '\n') + { + set_eol_delim (delim); + add_unwind_protect (reset_eol_delim, (char *)NULL); + } + } + else +#endif + if (input_is_tty) + { + ttsave (); + if (silent) + ttcbreak (); + else + ttonechar (); + add_unwind_protect ((Function *)ttrestore, (char *)NULL); + } + } + else if (silent) /* turn off echo but leave term in canonical mode */ + { + ttsave (); + ttnoecho (); + add_unwind_protect ((Function *)ttrestore, (char *)NULL); + } + + /* 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 = 1; + + unbuffered_read = (nchars > 0) || (delim != '\n') || input_is_pipe; + +#if defined (__CYGWIN__) && defined (O_TEXT) + setmode (0, O_TEXT); +#endif + + for (eof = retval = 0;;) + { +#if defined (READLINE) + if (edit) + { + if (rlbuf && rlbuf[rlind] == '\0') + { + xfree (rlbuf); + rlbuf = (char *)0; + } + if (rlbuf == 0) + { + rlbuf = edit_line (prompt ? prompt : ""); + rlind = 0; + } + if (rlbuf == 0) + { + eof = 1; + break; + } + c = rlbuf[rlind++]; + } + else + { +#endif + + if (unbuffered_read) + retval = zread (fd, &c, 1); + else + retval = zreadc (fd, &c); + + if (retval <= 0) + { + eof = 1; + break; + } + +#if defined (READLINE) + } +#endif + + if (i + 2 >= size) + { + input_string = (char *)xrealloc (input_string, size += 128); + remove_unwind_protect (); + add_unwind_protect (xfree, input_string); + } + + /* If the next character is to be accepted verbatim, a backslash + newline pair still disappears from the input. */ + if (pass_next) + { + pass_next = 0; + if (c == '\n') + i--; /* back up over the CTLESC */ + else + goto add_char; + continue; + } + + if (c == '\\' && raw == 0) + { + pass_next++; + saw_escape++; + input_string[i++] = CTLESC; + continue; + } + + if ((unsigned char)c == delim) + break; + + if (c == CTLESC || c == CTLNUL) + { + saw_escape++; + input_string[i++] = CTLESC; + } + +add_char: + input_string[i++] = c; + nr++; + + if (nchars > 0 && nr >= nchars) + break; + } + input_string[i] = '\0'; + +#if 1 + if (retval < 0) + { + builtin_error (_("read error: %d: %s"), fd, strerror (errno)); + run_unwind_frame ("read_builtin"); + return (EXECUTION_FAILURE); + } +#endif + + if (tmout > 0) + reset_alarm (); + + if (nchars > 0 || delim != '\n') + { +#if defined (READLINE) + if (edit) + { + if (nchars > 0) + rl_num_chars_to_read = 0; + if (delim != '\n') + reset_eol_delim ((char *)NULL); + } + else +#endif + if (input_is_tty) + ttrestore (); + } + else if (silent) + ttrestore (); + + if (unbuffered_read == 0) + zsyncfd (fd); + + interrupt_immediately--; + terminate_immediately = 0; + discard_unwind_frame ("read_builtin"); + + retval = eof ? EXECUTION_FAILURE : EXECUTION_SUCCESS; + +#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. */ + if (arrayname) + { + if (legal_identifier (arrayname) == 0) + { + sh_invalidid (arrayname); + xfree (input_string); + return (EXECUTION_FAILURE); + } + + var = find_or_make_array_variable (arrayname, 1); + if (var == 0) + { + xfree (input_string); + return EXECUTION_FAILURE; /* readonly or noassign */ + } + array_flush (array_cell (var)); + + alist = list_string (input_string, ifs_chars, 0); + if (alist) + { + word_list_remove_quoted_nulls (alist); + assign_array_var_from_word_list (var, alist, 0); + dispose_words (alist); + } + xfree (input_string); + return (retval); + } +#endif /* ARRAY_VARS */ + + /* If there are no variables, save the text of the line read to the + variable $REPLY. ksh93 strips leading and trailing IFS whitespace, + so that `read x ; echo "$x"' and `read ; echo "$REPLY"' behave the + same way, but I believe that the difference in behaviors is useful + enough to not do it. Without the bash behavior, there is no way + to read a line completely without interpretation or modification + unless you mess with $IFS (e.g., setting it to the empty string). + If you disagree, change the occurrences of `#if 0' to `#if 1' below. */ + if (list == 0) + { +#if 0 + orig_input_string = input_string; + for (t = input_string; ifs_chars && *ifs_chars && spctabnl(*t) && isifs(*t); t++) + ; + input_string = t; + input_string = strip_trailing_ifs_whitespace (input_string, ifs_chars, saw_escape); +#endif + + if (saw_escape) + { + t = dequote_string (input_string); + var = bind_variable ("REPLY", t, 0); + free (t); + } + else + var = bind_variable ("REPLY", input_string, 0); + VUNSETATTR (var, att_invisible); + + free (input_string); + return (retval); + } + + /* This code implements the Posix.2 spec for splitting the words + read and assigning them to variables. */ + orig_input_string = input_string; + + /* Remove IFS white space at the beginning of the input string. If + $IFS is null, no field splitting is performed. */ + for (t = input_string; ifs_chars && *ifs_chars && spctabnl(*t) && isifs(*t); t++) + ; + input_string = t; + + for (; list->next; list = list->next) + { + varname = list->word->word; +#if defined (ARRAY_VARS) + if (legal_identifier (varname) == 0 && valid_array_reference (varname) == 0) +#else + if (legal_identifier (varname) == 0) +#endif + { + sh_invalidid (varname); + xfree (orig_input_string); + return (EXECUTION_FAILURE); + } + + /* If there are more variables than words read from the input, + the remaining variables are set to the empty string. */ + if (*input_string) + { + /* This call updates INPUT_STRING. */ + t = get_word_from_string (&input_string, ifs_chars, &e); + if (t) + *e = '\0'; + /* Don't bother to remove the CTLESC unless we added one + somewhere while reading the string. */ + if (t && saw_escape) + { + t1 = dequote_string (t); + var = bind_read_variable (varname, t1); + xfree (t1); + } + else + var = bind_read_variable (varname, t); + } + else + { + t = (char *)0; + var = bind_read_variable (varname, ""); + } + + FREE (t); + if (var == 0) + { + xfree (orig_input_string); + return (EXECUTION_FAILURE); + } + + stupidly_hack_special_variables (varname); + VUNSETATTR (var, att_invisible); + } + + /* Now assign the rest of the line to the last variable argument. */ +#if defined (ARRAY_VARS) + if (legal_identifier (list->word->word) == 0 && valid_array_reference (list->word->word) == 0) +#else + if (legal_identifier (list->word->word) == 0) +#endif + { + sh_invalidid (list->word->word); + xfree (orig_input_string); + return (EXECUTION_FAILURE); + } + +#if 0 + /* This has to be done this way rather than using string_list + and list_string because Posix.2 says that the last variable gets the + remaining words and their intervening separators. */ + input_string = strip_trailing_ifs_whitespace (input_string, ifs_chars, saw_escape); +#else + /* Check whether or not the number of fields is exactly the same as the + number of variables. */ + if (*input_string) + { + t1 = input_string; + t = get_word_from_string (&input_string, ifs_chars, &e); + if (*input_string == 0) + input_string = t; + else + input_string = strip_trailing_ifs_whitespace (t1, ifs_chars, saw_escape); + } +#endif + + if (saw_escape) + { + t = dequote_string (input_string); + var = bind_read_variable (list->word->word, t); + xfree (t); + } + else + var = bind_read_variable (list->word->word, input_string); + stupidly_hack_special_variables (list->word->word); + if (var) + VUNSETATTR (var, att_invisible); + xfree (orig_input_string); + + return (retval); +} + +static SHELL_VAR * +bind_read_variable (name, value) + char *name, *value; +{ +#if defined (ARRAY_VARS) + if (valid_array_reference (name) == 0) + return (bind_variable (name, value, 0)); + else + return (assign_array_element (name, value, 0)); +#else /* !ARRAY_VARS */ + return bind_variable (name, value, 0); +#endif /* !ARRAY_VARS */ +} + +#if defined (READLINE) +static rl_completion_func_t *old_attempted_completion_function = 0; + +static void +reset_attempted_completion_function (cp) + char *cp; +{ + if (rl_attempted_completion_function == 0 && old_attempted_completion_function) + rl_attempted_completion_function = old_attempted_completion_function; +} + +static char * +edit_line (p) + char *p; +{ + char *ret; + int len; + + if (bash_readline_initialized == 0) + initialize_readline (); + + old_attempted_completion_function = rl_attempted_completion_function; + rl_attempted_completion_function = (rl_completion_func_t *)NULL; + ret = readline (p); + rl_attempted_completion_function = old_attempted_completion_function; + old_attempted_completion_function = (rl_completion_func_t *)NULL; + + if (ret == 0) + return ret; + len = strlen (ret); + ret = (char *)xrealloc (ret, len + 2); + ret[len++] = delim; + ret[len] = '\0'; + return ret; +} + +static int old_delim_ctype; +static rl_command_func_t *old_delim_func; +static int old_newline_ctype; +static rl_command_func_t *old_newline_func; + +static unsigned char delim_char; + +static void +set_eol_delim (c) + int c; +{ + Keymap cmap; + + if (bash_readline_initialized == 0) + initialize_readline (); + cmap = rl_get_keymap (); + + /* Change newline to self-insert */ + old_newline_ctype = cmap[RETURN].type; + old_newline_func = cmap[RETURN].function; + cmap[RETURN].type = ISFUNC; + cmap[RETURN].function = rl_insert; + + /* Bind the delimiter character to accept-line. */ + old_delim_ctype = cmap[c].type; + old_delim_func = cmap[c].function; + cmap[c].type = ISFUNC; + cmap[c].function = rl_newline; + + delim_char = c; +} + +static void +reset_eol_delim (cp) + char *cp; +{ + Keymap cmap; + + cmap = rl_get_keymap (); + + cmap[RETURN].type = old_newline_ctype; + cmap[RETURN].function = old_newline_func; + + cmap[delim_char].type = old_delim_ctype; + cmap[delim_char].function = old_delim_func; +} +#endif diff --git a/bash-20060316/builtins/reserved.def b/bash-20060316/builtins/reserved.def new file mode 100644 index 000000000..e968ec7cf --- /dev/null +++ b/bash-20060316/builtins/reserved.def @@ -0,0 +1,203 @@ +This file is reserved.def, in which the shell reserved words are defined. +It has no direct C file production, but defines builtins for the Bash +builtin help command. + +Copyright (C) 1987-2006 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$BUILTIN for +$SHORT_DOC for NAME [in WORDS ... ;] do COMMANDS; done +The `for' loop executes a sequence of commands for each member in a +list of items. If `in WORDS ...;' is not present, then `in "$@"' is +assumed. For each element in WORDS, NAME is set to that element, and +the COMMANDS are executed. +$END + +$BUILTIN for (( +$DOCNAME arith_for +$SHORT_DOC for (( exp1; exp2; exp3 )); do COMMANDS; done +Equivalent to + (( EXP1 )) + while (( EXP2 )); do + COMMANDS + (( EXP3 )) + done +EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is +omitted, it behaves as if it evaluates to 1. +$END + +$BUILTIN select +$SHORT_DOC select NAME [in WORDS ... ;] do COMMANDS; done +The WORDS are expanded, generating a list of words. The +set of expanded words is printed on the standard error, each +preceded by a number. If `in WORDS' is not present, `in "$@"' +is assumed. The PS3 prompt is then displayed and a line read +from the standard input. If the line consists of the number +corresponding to one of the displayed words, then NAME is set +to that word. If the line is empty, WORDS and the prompt are +redisplayed. If EOF is read, the command completes. Any other +value read causes NAME to be set to null. The line read is saved +in the variable REPLY. COMMANDS are executed after each selection +until a break command is executed. +$END + +$BUILTIN time +$SHORT_DOC time [-p] PIPELINE +Execute PIPELINE and print a summary of the real time, user CPU time, +and system CPU time spent executing PIPELINE when it terminates. +The return status is the return status of PIPELINE. The `-p' option +prints the timing summary in a slightly different format. This uses +the value of the TIMEFORMAT variable as the output format. +$END + +$BUILTIN case +$SHORT_DOC case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac +Selectively execute COMMANDS based upon WORD matching PATTERN. The +`|' is used to separate multiple patterns. +$END + +$BUILTIN if +$SHORT_DOC if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi +The `if COMMANDS' list is executed. If its exit status is zero, then the +`then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is +executed in turn, and if its exit status is zero, the corresponding +`then COMMANDS' list is executed and the if command completes. Otherwise, +the `else COMMANDS' list is executed, if present. The exit status of the +entire construct is the exit status of the last command executed, or zero +if no condition tested true. +$END + +$BUILTIN while +$SHORT_DOC while COMMANDS; do COMMANDS; done +Expand and execute COMMANDS as long as the final command in the +`while' COMMANDS has an exit status of zero. +$END + +$BUILTIN until +$SHORT_DOC until COMMANDS; do COMMANDS; done +Expand and execute COMMANDS as long as the final command in the +`until' COMMANDS has an exit status which is not zero. +$END + +$BUILTIN function +$SHORT_DOC function NAME { COMMANDS ; } or NAME () { COMMANDS ; } +Create a simple command invoked by NAME which runs COMMANDS. +Arguments on the command line along with NAME are passed to the +function as $0 .. $n. +$END + +$BUILTIN { ... } +$DOCNAME grouping_braces +$SHORT_DOC { COMMANDS ; } +Run a set of commands in a group. This is one way to redirect an +entire set of commands. +$END + +$BUILTIN % +$DOCNAME fg_percent +$SHORT_DOC JOB_SPEC [&] +Equivalent to the JOB_SPEC argument to the `fg' command. Resume a +stopped or background job. JOB_SPEC can specify either a job name +or a job number. Following JOB_SPEC with a `&' places the job in +the background, as if the job specification had been supplied as an +argument to `bg'. +$END + +$BUILTIN (( ... )) +$DOCNAME arith +$SHORT_DOC (( expression )) +The EXPRESSION is evaluated according to the rules for arithmetic +evaluation. Equivalent to "let EXPRESSION". +$END + +$BUILTIN [[ ... ]] +$DOCNAME conditional +$SHORT_DOC [[ expression ]] +Returns a status of 0 or 1 depending on the evaluation of the conditional +expression EXPRESSION. Expressions are composed of the same primaries used +by the `test' builtin, and may be combined using the following operators + + ( EXPRESSION ) Returns the value of EXPRESSION + ! EXPRESSION True if EXPRESSION is false; else false + EXPR1 && EXPR2 True if both EXPR1 and EXPR2 are true; else false + EXPR1 || EXPR2 True if either EXPR1 or EXPR2 is true; else false + +When the `==' and `!=' operators are used, the string to the right of the +operator is used as a pattern and pattern matching is performed. The +&& and || operators do not evaluate EXPR2 if EXPR1 is sufficient to +determine the expression's value. +$END + +$BUILTIN variables +$DOCNAME variable_help +$SHORT_DOC variables - Some variable names and meanings +BASH_VERSION Version information for this Bash. +CDPATH A colon-separated list of directories to search + for directries given as arguments to `cd'. +GLOBIGNORE A colon-separated list of patterns describing filenames to + be ignored by pathname expansion. +#if defined (HISTORY) +HISTFILE The name of the file where your command history is stored. +HISTFILESIZE The maximum number of lines this file can contain. +HISTSIZE The maximum number of history lines that a running + shell can access. +#endif /* HISTORY */ +HOME The complete pathname to your login directory. +HOSTNAME The name of the current host. +HOSTTYPE The type of CPU this version of Bash is running under. +IGNOREEOF Controls the action of the shell on receipt of an EOF + character as the sole input. If set, then the value + of it is the number of EOF characters that can be seen + in a row on an empty line before the shell will exit + (default 10). When unset, EOF signifies the end of input. +MACHTYPE A string describing the current system Bash is running on. +MAILCHECK How often, in seconds, Bash checks for new mail. +MAILPATH A colon-separated list of filenames which Bash checks + for new mail. +OSTYPE The version of Unix this version of Bash is running on. +PATH A colon-separated list of directories to search when + looking for commands. +PROMPT_COMMAND A command to be executed before the printing of each + primary prompt. +PS1 The primary prompt string. +PS2 The secondary prompt string. +PWD The full pathname of the current directory. +SHELLOPTS A colon-separated list of enabled shell options. +TERM The name of the current terminal type. +TIMEFORMAT The output format for timing statistics displayed by the + `time' reserved word. +auto_resume Non-null means a command word appearing on a line by + itself is first looked for in the list of currently + stopped jobs. If found there, that job is foregrounded. + A value of `exact' means that the command word must + exactly match a command in the list of stopped jobs. A + value of `substring' means that the command word must + match a substring of the job. Any other value means that + the command must be a prefix of a stopped job. +#if defined (HISTORY) +# if defined (BANG_HISTORY) +histchars Characters controlling history expansion and quick + substitution. The first character is the history + substitution character, usually `!'. The second is + the `quick substitution' character, usually `^'. The + third is the `history comment' character, usually `#'. +# endif /* BANG_HISTORY */ +HISTIGNORE A colon-separated list of patterns used to decide which + commands should be saved on the history list. +#endif /* HISTORY */ +$END diff --git a/bash-20060316/builtins/return.def b/bash-20060316/builtins/return.def new file mode 100644 index 000000000..23389c070 --- /dev/null +++ b/bash-20060316/builtins/return.def @@ -0,0 +1,66 @@ +This file is return.def, from which is created return.c. +It implements the builtin "return" in Bash. + +Copyright (C) 1987-2003 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES return.c + +$BUILTIN return + +$FUNCTION return_builtin +$SHORT_DOC return [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. +$END + +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include "../bashintl.h" + +#include "../shell.h" +#include "common.h" + +extern int last_command_exit_value; +extern int subshell_environment; +extern int return_catch_flag, return_catch_value; + +/* If we are executing a user-defined function then exit with the value + specified as an argument. if no argument is given, then the last + exit status is used. */ +int +return_builtin (list) + WORD_LIST *list; +{ + return_catch_value = get_exitstat (list); + + if (return_catch_flag) + longjmp (return_catch, 1); + else + { + builtin_error (_("can only `return' from a function or sourced script")); + return (EXECUTION_FAILURE); + } +} diff --git a/bash-20060316/builtins/set.def b/bash-20060316/builtins/set.def new file mode 100644 index 000000000..3bb327040 --- /dev/null +++ b/bash-20060316/builtins/set.def @@ -0,0 +1,831 @@ +This file is set.def, from which is created set.c. +It implements the "set" and "unset" builtins in Bash. + +Copyright (C) 1987-2004 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES set.c + +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include + +#include "../bashansi.h" +#include "../bashintl.h" + +#include "../shell.h" +#include "../flags.h" +#include "common.h" +#include "bashgetopt.h" + +#if defined (READLINE) +# include "../input.h" +# include "../bashline.h" +# include +#endif + +#if defined (HISTORY) +# include "../bashhist.h" +#endif + +extern int posixly_correct, ignoreeof, eof_encountered_limit; +#if defined (HISTORY) +extern int dont_save_function_defs; +#endif +#if defined (READLINE) +extern int no_line_editing; +#endif /* READLINE */ + +$BUILTIN set +$FUNCTION set_builtin +$SHORT_DOC set [--abefhkmnptuvxBCHP] [-o option] [arg ...] + -a Mark variables which are modified or created for export. + -b Notify of job termination immediately. + -e Exit immediately if a command exits with a non-zero status. + -f Disable file name generation (globbing). + -h Remember the location of commands as they are looked up. + -k All assignment arguments are placed in the environment for a + command, not just those that precede the command name. + -m Job control is enabled. + -n Read commands but do not execute them. + -o option-name + Set the variable corresponding to option-name: + allexport same as -a + braceexpand same as -B +#if defined (READLINE) + emacs use an emacs-style line editing interface +#endif /* READLINE */ + errexit same as -e + errtrace same as -E + functrace same as -T + hashall same as -h +#if defined (BANG_HISTORY) + histexpand same as -H +#endif /* BANG_HISTORY */ +#if defined (HISTORY) + history enable command history +#endif + ignoreeof the shell will not exit upon reading EOF + interactive-comments + allow comments to appear in interactive commands + keyword same as -k + monitor same as -m + noclobber same as -C + noexec same as -n + noglob same as -f + nolog currently accepted but ignored + notify same as -b + nounset same as -u + onecmd same as -t + physical same as -P + pipefail the return value of a pipeline is the status of + the last command to exit with a non-zero status, + or zero if no command exited with a non-zero status + posix change the behavior of bash where the default + operation differs from the 1003.2 standard to + match the standard + privileged same as -p + verbose same as -v +#if defined (READLINE) + vi use a vi-style line editing interface +#endif /* READLINE */ + xtrace same as -x + -p Turned on whenever the real and effective user ids do not match. + Disables processing of the $ENV file and importing of shell + functions. Turning this option off causes the effective uid and + gid to be set to the real uid and gid. + -t Exit after reading and executing one command. + -u Treat unset variables as an error when substituting. + -v Print shell input lines as they are read. + -x Print commands and their arguments as they are executed. +#if defined (BRACE_EXPANSION) + -B the shell will perform brace expansion +#endif /* BRACE_EXPANSION */ + -C If set, disallow existing regular files to be overwritten + by redirection of output. + -E If set, the ERR trap is inherited by shell functions. +#if defined (BANG_HISTORY) + -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 + 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. + The -x and -v options are turned off. + +Using + rather than - causes these flags to be turned off. The +flags can also be used upon invocation of the shell. The current +set of flags may be found in $-. The remaining n ARGs are positional +parameters and are assigned, in order, to $1, $2, .. $n. If no +ARGs are given, all shell variables are printed. +$END + +typedef int setopt_set_func_t __P((int, char *)); +typedef int setopt_get_func_t __P((char *)); + +static void print_minus_o_option __P((char *, int, int)); +static void print_all_shell_variables __P((void)); + +static int set_ignoreeof __P((int, char *)); +static int set_posix_mode __P((int, char *)); + +#if defined (READLINE) +static int set_edit_mode __P((int, char *)); +static int get_edit_mode __P((char *)); +#endif + +#if defined (HISTORY) +static int bash_set_history __P((int, char *)); +#endif + +static char *on = "on"; +static char *off = "off"; + +/* A struct used to match long options for set -o to the corresponding + option letter or internal variable. The functions can be called to + dynamically generate values. */ +struct { + char *name; + int letter; + int *variable; + setopt_set_func_t *set_func; + setopt_get_func_t *get_func; +} o_options[] = { + { "allexport", 'a', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, +#if defined (BRACE_EXPANSION) + { "braceexpand",'B', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, +#endif +#if defined (READLINE) + { "emacs", '\0', (int *)NULL, set_edit_mode, get_edit_mode }, +#endif + { "errexit", 'e', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, + { "errtrace", 'E', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, + { "functrace", 'T', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, + { "hashall", 'h', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, +#if defined (BANG_HISTORY) + { "histexpand", 'H', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, +#endif /* BANG_HISTORY */ +#if defined (HISTORY) + { "history", '\0', &remember_on_history, bash_set_history, (setopt_get_func_t *)NULL }, +#endif + { "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 }, + { "monitor", 'm', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, + { "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 }, +#if defined (HISTORY) + { "nolog", '\0', &dont_save_function_defs, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, +#endif +#if defined (JOB_CONTROL) + { "notify", 'b', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, +#endif /* JOB_CONTROL */ + { "nounset", 'u', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, + { "onecmd", 't', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, + { "physical", 'P', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, + { "pipefail", '\0', &pipefail_opt, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, + { "posix", '\0', &posixly_correct, set_posix_mode, (setopt_get_func_t *)NULL }, + { "privileged", 'p', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, + { "verbose", 'v', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, +#if defined (READLINE) + { "vi", '\0', (int *)NULL, set_edit_mode, get_edit_mode }, +#endif + { "xtrace", 'x', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, + {(char *)NULL, 0 , (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, +}; + +#define N_O_OPTIONS (sizeof (o_options) / sizeof (o_options[0])) + +#define GET_BINARY_O_OPTION_VALUE(i, name) \ + ((o_options[i].get_func) ? (*o_options[i].get_func) (name) \ + : (*o_options[i].variable)) + +#define SET_BINARY_O_OPTION_VALUE(i, onoff, name) \ + ((o_options[i].set_func) ? (*o_options[i].set_func) (onoff, name) \ + : (*o_options[i].variable = (onoff == FLAG_ON))) + +int +minus_o_option_value (name) + char *name; +{ + register int i; + int *on_or_off; + + for (i = 0; o_options[i].name; i++) + { + if (STREQ (name, o_options[i].name)) + { + if (o_options[i].letter) + { + on_or_off = find_flag (o_options[i].letter); + return ((on_or_off == FLAG_UNKNOWN) ? -1 : *on_or_off); + } + else + return (GET_BINARY_O_OPTION_VALUE (i, name)); + } + } + + return (-1); +} + +#define MINUS_O_FORMAT "%-15s\t%s\n" + +static void +print_minus_o_option (name, value, pflag) + char *name; + int value, pflag; +{ + if (pflag == 0) + printf (MINUS_O_FORMAT, name, value ? on : off); + else + printf ("set %co %s\n", value ? '-' : '+', name); +} + +void +list_minus_o_opts (mode, reusable) + int mode, reusable; +{ + register int i; + int *on_or_off, value; + + for (i = 0; o_options[i].name; i++) + { + if (o_options[i].letter) + { + value = 0; + on_or_off = find_flag (o_options[i].letter); + if (on_or_off == FLAG_UNKNOWN) + on_or_off = &value; + if (mode == -1 || mode == *on_or_off) + print_minus_o_option (o_options[i].name, *on_or_off, reusable); + } + else + { + value = GET_BINARY_O_OPTION_VALUE (i, o_options[i].name); + if (mode == -1 || mode == value) + print_minus_o_option (o_options[i].name, value, reusable); + } + } +} + +char ** +get_minus_o_opts () +{ + char **ret; + int i; + + ret = strvec_create (N_O_OPTIONS + 1); + for (i = 0; o_options[i].name; i++) + ret[i] = o_options[i].name; + ret[i] = (char *)NULL; + return ret; +} + +static int +set_ignoreeof (on_or_off, option_name) + int on_or_off; + char *option_name; +{ + ignoreeof = on_or_off == FLAG_ON; + unbind_variable ("ignoreeof"); + if (ignoreeof) + bind_variable ("IGNOREEOF", "10", 0); + else + unbind_variable ("IGNOREEOF"); + sv_ignoreeof ("IGNOREEOF"); + return 0; +} + +static int +set_posix_mode (on_or_off, option_name) + int on_or_off; + char *option_name; +{ + posixly_correct = on_or_off == FLAG_ON; + if (posixly_correct == 0) + unbind_variable ("POSIXLY_CORRECT"); + else + bind_variable ("POSIXLY_CORRECT", "y", 0); + sv_strict_posix ("POSIXLY_CORRECT"); + return (0); +} + +#if defined (READLINE) +/* Magic. This code `knows' how readline handles rl_editing_mode. */ +static int +set_edit_mode (on_or_off, option_name) + int on_or_off; + char *option_name; +{ + int isemacs; + + if (on_or_off == FLAG_ON) + { + rl_variable_bind ("editing-mode", option_name); + + if (interactive) + with_input_from_stdin (); + no_line_editing = 0; + } + else + { + isemacs = rl_editing_mode == 1; + if ((isemacs && *option_name == 'e') || (!isemacs && *option_name == 'v')) + { + if (interactive) + with_input_from_stream (stdin, "stdin"); + no_line_editing = 1; + } + } + return 1-no_line_editing; +} + +static int +get_edit_mode (name) + char *name; +{ + return (*name == 'e' ? no_line_editing == 0 && rl_editing_mode == 1 + : no_line_editing == 0 && rl_editing_mode == 0); +} +#endif /* READLINE */ + +#if defined (HISTORY) +static int +bash_set_history (on_or_off, option_name) + int on_or_off; + char *option_name; +{ + if (on_or_off == FLAG_ON) + { + bash_history_enable (); + if (history_lines_this_session == 0) + load_history (); + } + else + bash_history_disable (); + return (1 - remember_on_history); +} +#endif + +int +set_minus_o_option (on_or_off, option_name) + int on_or_off; + char *option_name; +{ + register int i; + + for (i = 0; o_options[i].name; i++) + { + if (STREQ (option_name, o_options[i].name)) + { + if (o_options[i].letter == 0) + { + SET_BINARY_O_OPTION_VALUE (i, on_or_off, option_name); + return (EXECUTION_SUCCESS); + } + else + { + if (change_flag (o_options[i].letter, on_or_off) == FLAG_ERROR) + { + sh_invalidoptname (option_name); + return (EXECUTION_FAILURE); + } + else + return (EXECUTION_SUCCESS); + } + + } + } + + sh_invalidoptname (option_name); + return (EXECUTION_FAILURE); +} + +static void +print_all_shell_variables () +{ + SHELL_VAR **vars; + + vars = all_shell_variables (); + if (vars) + { + print_var_list (vars); + free (vars); + } + + /* POSIX.2 does not allow function names and definitions to be output when + `set' is invoked without options (PASC Interp #202). */ + if (posixly_correct == 0) + { + vars = all_shell_functions (); + if (vars) + { + print_func_list (vars); + free (vars); + } + } +} + +void +set_shellopts () +{ + char *value; + char tflag[N_O_OPTIONS]; + int vsize, i, vptr, *ip, exported; + SHELL_VAR *v; + + for (vsize = i = 0; o_options[i].name; i++) + { + tflag[i] = 0; + if (o_options[i].letter) + { + ip = find_flag (o_options[i].letter); + if (ip && *ip) + { + vsize += strlen (o_options[i].name) + 1; + tflag[i] = 1; + } + } + else if (GET_BINARY_O_OPTION_VALUE (i, o_options[i].name)) + { + vsize += strlen (o_options[i].name) + 1; + tflag[i] = 1; + } + } + + value = (char *)xmalloc (vsize + 1); + + for (i = vptr = 0; o_options[i].name; i++) + { + if (tflag[i]) + { + strcpy (value + vptr, o_options[i].name); + vptr += strlen (o_options[i].name); + value[vptr++] = ':'; + } + } + + if (vptr) + vptr--; /* cut off trailing colon */ + value[vptr] = '\0'; + + v = find_variable ("SHELLOPTS"); + + /* Turn off the read-only attribute so we can bind the new value, and + note whether or not the variable was exported. */ + if (v) + { + VUNSETATTR (v, att_readonly); + exported = exported_p (v); + } + else + exported = 0; + + v = bind_variable ("SHELLOPTS", value, 0); + + /* Turn the read-only attribute back on, and turn off the export attribute + if it was set implicitly by mark_modified_vars and SHELLOPTS was not + exported before we bound the new value. */ + VSETATTR (v, att_readonly); + if (mark_modified_vars && exported == 0 && exported_p (v)) + VUNSETATTR (v, att_exported); + + free (value); +} + +void +parse_shellopts (value) + char *value; +{ + char *vname; + int vptr; + + vptr = 0; + while (vname = extract_colon_unit (value, &vptr)) + { + set_minus_o_option (FLAG_ON, vname); + free (vname); + } +} + +void +initialize_shell_options (no_shellopts) + int no_shellopts; +{ + char *temp; + SHELL_VAR *var; + + if (no_shellopts == 0) + { + var = find_variable ("SHELLOPTS"); + /* set up any shell options we may have inherited. */ + if (var && imported_p (var)) + { + temp = (array_p (var)) ? (char *)NULL : savestring (value_cell (var)); + if (temp) + { + parse_shellopts (temp); + free (temp); + } + } + } + + /* Set up the $SHELLOPTS variable. */ + set_shellopts (); +} + +/* Reset the values of the -o options that are not also shell flags. This is + called from execute_cmd.c:initialize_subshell() when setting up a subshell + to run an executable shell script without a leading `#!'. */ +void +reset_shell_options () +{ +#if defined (HISTORY) + remember_on_history = 1; +#endif + ignoreeof = 0; +} + +/* Set some flags from the word values in the input list. If LIST is empty, + then print out the values of the variables instead. If LIST contains + non-flags, then set $1 - $9 to the successive words of LIST. */ +int +set_builtin (list) + WORD_LIST *list; +{ + int on_or_off, flag_name, force_assignment, opts_changed; + WORD_LIST *l; + register char *arg; + char s[3]; + + if (list == 0) + { + print_all_shell_variables (); + return (EXECUTION_SUCCESS); + } + + /* Check validity of flag arguments. */ + reset_internal_getopt (); + while ((flag_name = internal_getopt (list, optflags)) != -1) + { + switch (flag_name) + { + case '?': + builtin_usage (); + return (list_optopt == '?' ? EXECUTION_SUCCESS : EX_USAGE); + default: + break; + } + } + + /* Do the set command. While the list consists of words starting with + '-' or '+' treat them as flags, otherwise, start assigning them to + $1 ... $n. */ + for (force_assignment = opts_changed = 0; list; ) + { + arg = list->word->word; + + /* If the argument is `--' or `-' then signal the end of the list + and remember the remaining arguments. */ + if (arg[0] == '-' && (!arg[1] || (arg[1] == '-' && !arg[2]))) + { + list = list->next; + + /* `set --' unsets the positional parameters. */ + if (arg[1] == '-') + force_assignment = 1; + + /* Until told differently, the old shell behaviour of + `set - [arg ...]' being equivalent to `set +xv [arg ...]' + stands. Posix.2 says the behaviour is marked as obsolescent. */ + else + { + change_flag ('x', '+'); + change_flag ('v', '+'); + opts_changed = 1; + } + + break; + } + + if ((on_or_off = *arg) && (on_or_off == '-' || on_or_off == '+')) + { + while (flag_name = *++arg) + { + if (flag_name == '?') + { + builtin_usage (); + return (EXECUTION_SUCCESS); + } + else if (flag_name == 'o') /* -+o option-name */ + { + char *option_name; + WORD_LIST *opt; + + opt = list->next; + + if (opt == 0) + { + list_minus_o_opts (-1, (on_or_off == '+')); + continue; + } + + option_name = opt->word->word; + + if (option_name == 0 || *option_name == '\0' || + *option_name == '-' || *option_name == '+') + { + list_minus_o_opts (-1, (on_or_off == '+')); + continue; + } + list = list->next; /* Skip over option name. */ + + opts_changed = 1; + if (set_minus_o_option (on_or_off, option_name) != EXECUTION_SUCCESS) + { + set_shellopts (); + return (EXECUTION_FAILURE); + } + } + else if (change_flag (flag_name, on_or_off) == FLAG_ERROR) + { + s[0] = on_or_off; + s[1] = flag_name; + s[2] = '\0'; + sh_invalidopt (s); + builtin_usage (); + set_shellopts (); + return (EXECUTION_FAILURE); + } + opts_changed = 1; + } + } + else + { + break; + } + list = list->next; + } + + /* Assigning $1 ... $n */ + if (list || force_assignment) + remember_args (list, 1); + /* Set up new value of $SHELLOPTS */ + if (opts_changed) + set_shellopts (); + return (EXECUTION_SUCCESS); +} + +$BUILTIN unset +$FUNCTION unset_builtin +$SHORT_DOC unset [-f] [-v] [name ...] +For each NAME, remove the corresponding variable or function. Given +the `-v', unset will only act on variables. Given the `-f' flag, +unset will only act on functions. With neither flag, unset first +tries to unset a variable, and if that fails, then tries to unset a +function. Some variables cannot be unset; also see readonly. +$END + +#define NEXT_VARIABLE() any_failed++; list = list->next; continue; + +int +unset_builtin (list) + WORD_LIST *list; +{ + int unset_function, unset_variable, unset_array, opt, any_failed; + char *name; + + unset_function = unset_variable = unset_array = any_failed = 0; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "fv")) != -1) + { + switch (opt) + { + case 'f': + unset_function = 1; + break; + case 'v': + unset_variable = 1; + break; + default: + builtin_usage (); + return (EX_USAGE); + } + } + + list = loptend; + + if (unset_function && unset_variable) + { + builtin_error (_("cannot simultaneously unset a function and a variable")); + return (EXECUTION_FAILURE); + } + + while (list) + { + SHELL_VAR *var; + int tem; +#if defined (ARRAY_VARS) + char *t; +#endif + + name = list->word->word; + +#if defined (ARRAY_VARS) + unset_array = 0; + if (!unset_function && valid_array_reference (name)) + { + t = strchr (name, '['); + *t++ = '\0'; + unset_array++; + } +#endif + + /* Bash allows functions with names which are not valid identifiers + to be created when not in posix mode, so check only when in posix + mode when unsetting a function. */ + if (((unset_function && posixly_correct) || !unset_function) && legal_identifier (name) == 0) + { + sh_invalidid (name); + NEXT_VARIABLE (); + } + + var = unset_function ? find_function (name) : find_variable (name); + + if (var && !unset_function && non_unsettable_p (var)) + { + builtin_error (_("%s: cannot unset"), name); + NEXT_VARIABLE (); + } + + /* Posix.2 says that unsetting readonly variables is an error. */ + if (var && readonly_p (var)) + { + builtin_error (_("%s: cannot unset: readonly %s"), + name, unset_function ? "function" : "variable"); + NEXT_VARIABLE (); + } + + /* Unless the -f option is supplied, the name refers to a variable. */ +#if defined (ARRAY_VARS) + if (var && unset_array) + { + if (array_p (var) == 0) + { + builtin_error (_("%s: not an array variable"), name); + NEXT_VARIABLE (); + } + else + { + tem = unbind_array_element (var, t); + if (tem == -1) + any_failed++; + } + } + else +#endif /* ARRAY_VARS */ + tem = unset_function ? unbind_func (name) : unbind_variable (name); + + /* This is what Posix.2 draft 11+ says. ``If neither -f nor -v + is specified, the name refers to a variable; if a variable by + that name does not exist, a function by that name, if any, + shall be unset.'' */ + if (tem == -1 && !unset_function && !unset_variable) + tem = unbind_func (name); + + /* SUSv3, POSIX.1-2001 say: ``Unsetting a variable or function that + was not previously set shall not be considered an error.'' */ + + if (unset_function == 0) + stupidly_hack_special_variables (name); + + list = list->next; + } + + return (any_failed ? EXECUTION_FAILURE : EXECUTION_SUCCESS); +} diff --git a/bash-20060316/builtins/setattr.def b/bash-20060316/builtins/setattr.def new file mode 100644 index 000000000..28102bc47 --- /dev/null +++ b/bash-20060316/builtins/setattr.def @@ -0,0 +1,441 @@ +This file is setattr.def, from which is created setattr.c. +It implements the builtins "export" and "readonly", in Bash. + +Copyright (C) 1987-2004 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES setattr.c + +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include +#include "../bashansi.h" +#include "../bashintl.h" + +#include "../shell.h" +#include "common.h" +#include "bashgetopt.h" + +extern int posixly_correct; +extern int array_needs_making; +extern char *this_command_name; +extern sh_builtin_func_t *this_shell_builtin; + +#ifdef ARRAY_VARS +extern int declare_builtin __P((WORD_LIST *)); +#endif + +#define READONLY_OR_EXPORT \ + (this_shell_builtin == readonly_builtin || this_shell_builtin == export_builtin) + +$BUILTIN export +$FUNCTION export_builtin +$SHORT_DOC export [-nf] [name[=value] ...] or export -p +NAMEs are marked for automatic export to the environment of +subsequently executed commands. If the -f option is given, +the NAMEs refer to functions. If no NAMEs are given, or if `-p' +is given, a list of all names that are exported in this shell is +printed. An argument of `-n' says to remove the export property +from subsequent NAMEs. An argument of `--' disables further option +processing. +$END + +/* For each variable name in LIST, make that variable appear in the + environment passed to simple commands. If there is no LIST, then + print all such variables. An argument of `-n' says to remove the + exported attribute from variables named in LIST. An argument of + -f indicates that the names present in LIST refer to functions. */ +int +export_builtin (list) + register WORD_LIST *list; +{ + return (set_or_show_attributes (list, att_exported, 0)); +} + +$BUILTIN readonly +$FUNCTION readonly_builtin +$SHORT_DOC readonly [-af] [name[=value] ...] or readonly -p +The given NAMEs are marked readonly and the values of these NAMEs may +not be changed by subsequent assignment. If the -f option is given, +then functions corresponding to the NAMEs are so marked. If no +arguments are given, or if `-p' is given, a list of all readonly names +is printed. The `-a' option means to treat each NAME as +an array variable. An argument of `--' disables further option +processing. +$END + +/* For each variable name in LIST, make that variable readonly. Given an + empty LIST, print out all existing readonly variables. */ +int +readonly_builtin (list) + register WORD_LIST *list; +{ + return (set_or_show_attributes (list, att_readonly, 0)); +} + +#if defined (ARRAY_VARS) +# define ATTROPTS "afnp" +#else +# define ATTROPTS "fnp" +#endif + +/* For each variable name in LIST, make that variable have the specified + ATTRIBUTE. An arg of `-n' says to remove the attribute from the the + remaining names in LIST (doesn't work for readonly). */ +int +set_or_show_attributes (list, attribute, nodefs) + register WORD_LIST *list; + int attribute, nodefs; +{ + register SHELL_VAR *var; + int assign, undo, functions_only, arrays_only, any_failed, assign_error, opt; + int aflags; + char *name; +#if defined (ARRAY_VARS) + WORD_LIST *nlist, *tlist; + WORD_DESC *w; +#endif + + undo = functions_only = arrays_only = any_failed = assign_error = 0; + /* Read arguments from the front of the list. */ + reset_internal_getopt (); + while ((opt = internal_getopt (list, ATTROPTS)) != -1) + { + switch (opt) + { + case 'n': + undo = 1; + break; + case 'f': + functions_only = 1; + break; +#if defined (ARRAY_VARS) + case 'a': + arrays_only = 1; + break; +#endif + case 'p': + break; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + if (list) + { + if (attribute & att_exported) + array_needs_making = 1; + + /* Cannot undo readonly status, silently disallowed. */ + if (undo && (attribute & att_readonly)) + attribute &= ~att_readonly; + + while (list) + { + name = list->word->word; + + if (functions_only) /* xxx -f name */ + { + var = find_function (name); + if (var == 0) + { + builtin_error (_("%s: not a function"), name); + any_failed++; + } + else + SETVARATTR (var, attribute, undo); + + list = list->next; + continue; + } + + /* xxx [-np] name[=value] */ + assign = assignment (name, 0); + + aflags = 0; + if (assign) + { + name[assign] = '\0'; + if (name[assign - 1] == '+') + { + aflags |= ASS_APPEND; + name[assign - 1] = '\0'; + } + } + + if (legal_identifier (name) == 0) + { + sh_invalidid (name); + if (assign) + assign_error++; + else + any_failed++; + list = list->next; + continue; + } + + if (assign) /* xxx [-np] name=value */ + { + name[assign] = '='; + if (aflags & ASS_APPEND) + name[assign - 1] = '+'; +#if defined (ARRAY_VARS) + /* Let's try something here. Turn readonly -a xxx=yyy into + declare -ra xxx=yyy and see what that gets us. */ + if (arrays_only) + { + tlist = list->next; + list->next = (WORD_LIST *)NULL; + w = make_word ("-ra"); + nlist = make_word_list (w, list); + opt = declare_builtin (nlist); + if (opt != EXECUTION_SUCCESS) + assign_error++; + list->next = tlist; + dispose_word (w); + free (nlist); + } + else +#endif + /* This word has already been expanded once with command + and parameter expansion. Call do_assignment_no_expand (), + which does not do command or parameter substitution. If + the assignment is not performed correctly, flag an error. */ + if (do_assignment_no_expand (name) == 0) + assign_error++; + name[assign] = '\0'; + if (aflags & ASS_APPEND) + name[assign - 1] = '\0'; + } + + set_var_attribute (name, attribute, undo); + list = list->next; + } + } + else + { + SHELL_VAR **variable_list; + register int i; + + if ((attribute & att_function) || functions_only) + { + variable_list = all_shell_functions (); + if (attribute != att_function) + attribute &= ~att_function; /* so declare -xf works, for example */ + } + else + variable_list = all_shell_variables (); + +#if defined (ARRAY_VARS) + if (attribute & att_array) + { + arrays_only++; + if (attribute != att_array) + attribute &= ~att_array; + } +#endif + + if (variable_list) + { + for (i = 0; var = variable_list[i]; i++) + { +#if defined (ARRAY_VARS) + if (arrays_only && array_p (var) == 0) + continue; +#endif + if ((var->attributes & attribute)) + show_var_attributes (var, READONLY_OR_EXPORT, nodefs); + } + free (variable_list); + } + } + + return (assign_error ? EX_BADASSIGN + : ((any_failed == 0) ? EXECUTION_SUCCESS + : EXECUTION_FAILURE)); +} + +/* Show the attributes for shell variable VAR. If NODEFS is non-zero, + don't show function definitions along with the name. If PATTR is + non-zero, it indicates we're being called from `export' or `readonly'. + In POSIX mode, this prints the name of the calling builtin (`export' + or `readonly') instead of `declare', and doesn't print function defs + when called by `export' or `readonly'. */ +int +show_var_attributes (var, pattr, nodefs) + SHELL_VAR *var; + int pattr, nodefs; +{ + char flags[8], *x; + int i; + + i = 0; + + /* pattr == 0 means we are called from `declare'. */ + if (pattr == 0 || posixly_correct == 0) + { +#if defined (ARRAY_VARS) + if (array_p (var)) + flags[i++] = 'a'; +#endif + + if (function_p (var)) + flags[i++] = 'f'; + + if (integer_p (var)) + flags[i++] = 'i'; + + if (readonly_p (var)) + flags[i++] = 'r'; + + if (trace_p (var)) + flags[i++] = 't'; + + if (exported_p (var)) + flags[i++] = 'x'; + } + else + { +#if defined (ARRAY_VARS) + if (array_p (var)) + flags[i++] = 'a'; +#endif + + if (function_p (var)) + flags[i++] = 'f'; + } + + flags[i] = '\0'; + + /* If we're printing functions with definitions, print the function def + first, then the attributes, instead of printing output that can't be + reused as input to recreate the current state. */ + if (function_p (var) && nodefs == 0 && (pattr == 0 || posixly_correct == 0)) + { + printf ("%s\n", named_function_string (var->name, function_cell (var), 1)); + nodefs++; + if (pattr == 0 && i == 1 && flags[0] == 'f') + return 0; /* don't print `declare -f name' */ + } + + if (pattr == 0 || posixly_correct == 0) + printf ("declare -%s ", i ? flags : "-"); + else if (i) + printf ("%s -%s ", this_command_name, flags); + else + printf ("%s ", this_command_name); + +#if defined (ARRAY_VARS) + if (array_p (var)) + print_array_assignment (var, 1); + else +#endif + /* force `readonly' and `export' to not print out function definitions + when in POSIX mode. */ + if (nodefs || (function_p (var) && pattr != 0 && posixly_correct)) + printf ("%s\n", var->name); + else if (function_p (var)) + printf ("%s\n", named_function_string (var->name, function_cell (var), 1)); + else if (invisible_p (var)) + printf ("%s\n", var->name); + else + { + x = sh_double_quote (var_isset (var) ? value_cell (var) : ""); + printf ("%s=%s\n", var->name, x); + free (x); + } + return (0); +} + +int +show_name_attributes (name, nodefs) + char *name; + int nodefs; +{ + SHELL_VAR *var; + + var = find_variable_internal (name, 1); + + if (var && invisible_p (var) == 0) + { + 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; + char *tvalue; + + if (undo) + var = find_variable (name); + else + { + tv = find_tempenv_variable (name); + /* XXX -- need to handle case where tv is a temp variable in a + function-scope context, since function_env has been merged into + the local variables table. */ + if (tv && tempvar_p (tv)) + { + tvalue = var_isset (tv) ? savestring (value_cell (tv)) : savestring (""); + + var = bind_variable (tv->name, tvalue, 0); + var->attributes |= tv->attributes & ~att_tempvar; + VSETATTR (tv, att_propagate); + if (var->context != 0) + VSETATTR (var, att_propagate); + SETVARATTR (tv, attribute, undo); /* XXX */ + + stupidly_hack_special_variables (tv->name); + + free (tvalue); + } + else + { + var = find_variable_internal (name, 0); + if (var == 0) + { + var = bind_variable (name, (char *)NULL, 0); + VSETATTR (var, att_invisible); + } + else if (var->context != 0) + VSETATTR (var, att_propagate); + } + } + + if (var) + SETVARATTR (var, attribute, undo); + + if (var && (exported_p (var) || (attribute & att_exported))) + array_needs_making++; /* XXX */ +} diff --git a/bash-20060316/builtins/shift.def b/bash-20060316/builtins/shift.def new file mode 100644 index 000000000..e20b4d542 --- /dev/null +++ b/bash-20060316/builtins/shift.def @@ -0,0 +1,96 @@ +This file is shift.def, from which is created shift.c. +It implements the builtin "shift" in Bash. + +Copyright (C) 1987-2003 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES shift.c + +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include "../bashansi.h" +#include "../bashintl.h" + +#include "../shell.h" +#include "common.h" + +$BUILTIN shift +$FUNCTION shift_builtin +$SHORT_DOC shift [n] +The positional parameters from $N+1 ... are renamed to $1 ... If N is +not given, it is assumed to be 1. +$END + +int print_shift_error; + +/* Shift the arguments ``left''. Shift DOLLAR_VARS down then take one + off of REST_OF_ARGS and place it into DOLLAR_VARS[9]. If LIST has + anything in it, it is a number which says where to start the + shifting. Return > 0 if `times' > $#, otherwise 0. */ +int +shift_builtin (list) + WORD_LIST *list; +{ + intmax_t times; + register int count; + WORD_LIST *temp; + + times = get_numeric_arg (list, 0); + + if (times == 0) + return (EXECUTION_SUCCESS); + else if (times < 0) + { + sh_erange (list ? list->word->word : NULL, _("shift count")); + return (EXECUTION_FAILURE); + } + else if (times > number_of_args ()) + { + if (print_shift_error) + sh_erange (list ? list->word->word : NULL, _("shift count")); + return (EXECUTION_FAILURE); + } + + while (times-- > 0) + { + if (dollar_vars[1]) + free (dollar_vars[1]); + + for (count = 1; count < 9; count++) + dollar_vars[count] = dollar_vars[count + 1]; + + if (rest_of_args) + { + temp = rest_of_args; + dollar_vars[9] = savestring (temp->word->word); + rest_of_args = rest_of_args->next; + temp->next = (WORD_LIST *)NULL; + dispose_words (temp); + } + else + dollar_vars[9] = (char *)NULL; + } + return (EXECUTION_SUCCESS); +} diff --git a/bash-20060316/builtins/shopt.def b/bash-20060316/builtins/shopt.def new file mode 100644 index 000000000..ae100ace4 --- /dev/null +++ b/bash-20060316/builtins/shopt.def @@ -0,0 +1,540 @@ +This file is shopt.def, from which is created shopt.c. +It implements the Bash `shopt' builtin. + +Copyright (C) 1994-2005 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES shopt.c + +$BUILTIN shopt +$FUNCTION shopt_builtin +$SHORT_DOC shopt [-pqsu] [-o long-option] optname [optname...] +Toggle the values of variables controlling optional behavior. +The -s flag means to enable (set) each OPTNAME; the -u flag +unsets each OPTNAME. The -q flag suppresses output; the exit +status indicates whether each OPTNAME is set or unset. The -o +option restricts the OPTNAMEs to those defined for use with +`set -o'. With no options, or with the -p option, a list of all +settable options is displayed, with an indication of whether or +not each is set. +$END + +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include + +#include "../bashintl.h" + +#include "../shell.h" +#include "../flags.h" +#include "common.h" +#include "bashgetopt.h" + +#define UNSETOPT 0 +#define SETOPT 1 + +#define OPTFMT "%-15s\t%s\n" + +extern int allow_null_glob_expansion, fail_glob_expansion, glob_dot_filenames; +extern int cdable_vars, mail_warning, source_uses_path; +extern int no_exit_on_failed_exec, print_shift_error; +extern int check_hashed_filenames, promptvars; +extern int cdspelling, expand_aliases; +extern int extended_quote; +extern int check_window_size; +extern int glob_ignore_case, match_ignore_case; +extern int hup_on_exit; +extern int xpg_echo; +extern int gnu_error_format; + +#if defined (EXTENDED_GLOB) +extern int extended_glob; +#endif + +#if defined (HISTORY) +extern int literal_history, command_oriented_history; +extern int force_append_history; +#endif + +#if defined (READLINE) +extern int hist_verify, history_reediting, perform_hostname_completion; +extern int no_empty_command_completion; +extern int force_fignore; +extern int enable_hostname_completion __P((int)); +#endif + +#if defined (PROGRAMMABLE_COMPLETION) +extern int prog_completion_enabled; +#endif + +#if defined (RESTRICTED_SHELL) +extern char *shell_name; +#endif + +#if defined (DEBUGGER) +extern int debugging_mode; +#endif + +static void shopt_error __P((char *)); + +static int set_shellopts_after_change __P((int)); + +#if defined (RESTRICTED_SHELL) +static int set_restricted_shell __P((int)); +#endif + +static int shopt_login_shell; + +typedef int shopt_set_func_t __P((int)); + +static struct { + char *name; + int *value; + shopt_set_func_t *set_func; +} shopt_vars[] = { + { "cdable_vars", &cdable_vars, (shopt_set_func_t *)NULL }, + { "cdspell", &cdspelling, (shopt_set_func_t *)NULL }, + { "checkhash", &check_hashed_filenames, (shopt_set_func_t *)NULL }, + { "checkwinsize", &check_window_size, (shopt_set_func_t *)NULL }, +#if defined (HISTORY) + { "cmdhist", &command_oriented_history, (shopt_set_func_t *)NULL }, +#endif + { "dotglob", &glob_dot_filenames, (shopt_set_func_t *)NULL }, + { "execfail", &no_exit_on_failed_exec, (shopt_set_func_t *)NULL }, + { "expand_aliases", &expand_aliases, (shopt_set_func_t *)NULL }, +#if defined (DEBUGGER) + { "extdebug", &debugging_mode, (shopt_set_func_t *)NULL }, +#endif +#if defined (EXTENDED_GLOB) + { "extglob", &extended_glob, (shopt_set_func_t *)NULL }, +#endif + { "extquote", &extended_quote, (shopt_set_func_t *)NULL }, + { "failglob", &fail_glob_expansion, (shopt_set_func_t *)NULL }, +#if defined (READLINE) + { "force_fignore", &force_fignore, (shopt_set_func_t *)NULL }, +#endif + { "gnu_errfmt", &gnu_error_format, (shopt_set_func_t *)NULL }, +#if defined (HISTORY) + { "histappend", &force_append_history, (shopt_set_func_t *)NULL }, +#endif +#if defined (READLINE) + { "histreedit", &history_reediting, (shopt_set_func_t *)NULL }, + { "histverify", &hist_verify, (shopt_set_func_t *)NULL }, + { "hostcomplete", &perform_hostname_completion, enable_hostname_completion }, +#endif + { "huponexit", &hup_on_exit, (shopt_set_func_t *)NULL }, + { "interactive_comments", &interactive_comments, set_shellopts_after_change }, +#if defined (HISTORY) + { "lithist", &literal_history, (shopt_set_func_t *)NULL }, +#endif + { "login_shell", &shopt_login_shell, set_login_shell }, + { "mailwarn", &mail_warning, (shopt_set_func_t *)NULL }, +#if defined (READLINE) + { "no_empty_cmd_completion", &no_empty_command_completion, (shopt_set_func_t *)NULL }, +#endif + { "nocaseglob", &glob_ignore_case, (shopt_set_func_t *)NULL }, + { "nocasematch", &match_ignore_case, (shopt_set_func_t *)NULL }, + { "nullglob", &allow_null_glob_expansion, (shopt_set_func_t *)NULL }, +#if defined (PROGRAMMABLE_COMPLETION) + { "progcomp", &prog_completion_enabled, (shopt_set_func_t *)NULL }, +#endif + { "promptvars", &promptvars, (shopt_set_func_t *)NULL }, +#if defined (RESTRICTED_SHELL) + { "restricted_shell", &restricted_shell, set_restricted_shell }, +#endif + { "shift_verbose", &print_shift_error, (shopt_set_func_t *)NULL }, + { "sourcepath", &source_uses_path, (shopt_set_func_t *)NULL }, + { "xpg_echo", &xpg_echo, (shopt_set_func_t *)NULL }, + { (char *)0, (int *)0, (shopt_set_func_t *)NULL } +}; + +static char *on = "on"; +static char *off = "off"; + +static int find_shopt __P((char *)); +static int toggle_shopts __P((int, WORD_LIST *, int)); +static void print_shopt __P((char *, int, int)); +static int list_shopts __P((WORD_LIST *, int)); +static int list_some_shopts __P((int, int)); +static int list_shopt_o_options __P((WORD_LIST *, int)); +static int list_some_o_options __P((int, int)); +static int set_shopt_o_options __P((int, WORD_LIST *, int)); + +#define SFLAG 0x01 +#define UFLAG 0x02 +#define QFLAG 0x04 +#define OFLAG 0x08 +#define PFLAG 0x10 + +int +shopt_builtin (list) + WORD_LIST *list; +{ + int opt, flags, rval; + + flags = 0; + reset_internal_getopt (); + while ((opt = internal_getopt (list, "psuoq")) != -1) + { + switch (opt) + { + case 's': + flags |= SFLAG; + break; + case 'u': + flags |= UFLAG; + break; + case 'q': + flags |= QFLAG; + break; + case 'o': + flags |= OFLAG; + break; + case 'p': + flags |= PFLAG; + break; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + if ((flags & (SFLAG|UFLAG)) == (SFLAG|UFLAG)) + { + builtin_error (_("cannot set and unset shell options simultaneously")); + return (EXECUTION_FAILURE); + } + + rval = EXECUTION_SUCCESS; + if ((flags & OFLAG) && ((flags & (SFLAG|UFLAG)) == 0)) /* shopt -o */ + rval = list_shopt_o_options (list, flags); + else if (list && (flags & OFLAG)) /* shopt -so args */ + rval = set_shopt_o_options ((flags & SFLAG) ? FLAG_ON : FLAG_OFF, list, flags & QFLAG); + else if (flags & OFLAG) /* shopt -so */ + rval = list_some_o_options ((flags & SFLAG) ? 1 : 0, flags); + else if (list && (flags & (SFLAG|UFLAG))) /* shopt -su args */ + rval = toggle_shopts ((flags & SFLAG) ? SETOPT : UNSETOPT, list, flags & QFLAG); + else if ((flags & (SFLAG|UFLAG)) == 0) /* shopt [args] */ + rval = list_shopts (list, flags); + else /* shopt -su */ + rval = list_some_shopts ((flags & SFLAG) ? SETOPT : UNSETOPT, flags); + return (rval); +} + +/* Reset the options managed by `shopt' to the values they would have at + shell startup. */ +void +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; + + source_uses_path = promptvars = 1; + +#if defined (EXTENDED_GLOB) + extended_glob = 0; +#endif + +#if defined (HISTORY) + literal_history = force_append_history = 0; + command_oriented_history = 1; +#endif + +#if defined (READLINE) + hist_verify = history_reediting = 0; + perform_hostname_completion = 1; +#endif + + shopt_login_shell = login_shell; +} + +static int +find_shopt (name) + char *name; +{ + int i; + + for (i = 0; shopt_vars[i].name; i++) + if (STREQ (name, shopt_vars[i].name)) + return i; + return -1; +} + +static void +shopt_error (s) + char *s; +{ + builtin_error (_("%s: invalid shell option name"), s); +} + +static int +toggle_shopts (mode, list, quiet) + int mode; + WORD_LIST *list; + int quiet; +{ + WORD_LIST *l; + int ind, rval; + + for (l = list, rval = EXECUTION_SUCCESS; l; l = l->next) + { + ind = find_shopt (l->word->word); + if (ind < 0) + { + shopt_error (l->word->word); + rval = EXECUTION_FAILURE; + } + else + { + *shopt_vars[ind].value = mode; /* 1 for set, 0 for unset */ + if (shopt_vars[ind].set_func) + (*shopt_vars[ind].set_func) (mode); + } + } + return (rval); +} + +static void +print_shopt (name, val, flags) + char *name; + int val, flags; +{ + if (flags & PFLAG) + printf ("shopt %s %s\n", val ? "-s" : "-u", name); + else + printf (OPTFMT, name, val ? on : off); +} + +/* List the values of all or any of the `shopt' options. Returns 0 if + all were listed or all variables queried were on; 1 otherwise. */ +static int +list_shopts (list, flags) + WORD_LIST *list; + int flags; +{ + WORD_LIST *l; + int i, val, rval; + + if (list == 0) + { + for (i = 0; shopt_vars[i].name; i++) + { + val = *shopt_vars[i].value; + if ((flags & QFLAG) == 0) + print_shopt (shopt_vars[i].name, val, flags); + } + return (EXECUTION_SUCCESS); + } + + for (l = list, rval = EXECUTION_SUCCESS; l; l = l->next) + { + i = find_shopt (l->word->word); + if (i < 0) + { + shopt_error (l->word->word); + rval = EXECUTION_FAILURE; + continue; + } + val = *shopt_vars[i].value; + if (val == 0) + rval = EXECUTION_FAILURE; + if ((flags & QFLAG) == 0) + print_shopt (l->word->word, val, flags); + } + + return (rval); +} + +static int +list_some_shopts (mode, flags) + int mode, flags; +{ + int val, i; + + for (i = 0; shopt_vars[i].name; i++) + { + val = *shopt_vars[i].value; + if (((flags & QFLAG) == 0) && mode == val) + print_shopt (shopt_vars[i].name, val, flags); + } + return (EXECUTION_SUCCESS); +} + +static int +list_shopt_o_options (list, flags) + WORD_LIST *list; + int flags; +{ + WORD_LIST *l; + int val, rval; + + if (list == 0) + { + if ((flags & QFLAG) == 0) + list_minus_o_opts (-1, (flags & PFLAG)); + return (EXECUTION_SUCCESS); + } + + for (l = list, rval = EXECUTION_SUCCESS; l; l = l->next) + { + val = minus_o_option_value (l->word->word); + if (val == -1) + { + sh_invalidoptname (l->word->word); + rval = EXECUTION_FAILURE; + continue; + } + if (val == 0) + rval = EXECUTION_FAILURE; + if ((flags & QFLAG) == 0) + { + if (flags & PFLAG) + printf ("set %co %s\n", val ? '-' : '+', l->word->word); + else + printf (OPTFMT, l->word->word, val ? on : off); + } + } + return (rval); +} + +static int +list_some_o_options (mode, flags) + int mode, flags; +{ + if ((flags & QFLAG) == 0) + list_minus_o_opts (mode, (flags & PFLAG)); + return (EXECUTION_SUCCESS); +} + +static int +set_shopt_o_options (mode, list, quiet) + int mode; + WORD_LIST *list; + int quiet; +{ + WORD_LIST *l; + int rval; + + for (l = list, rval = EXECUTION_SUCCESS; l; l = l->next) + { + if (set_minus_o_option (mode, l->word->word) == EXECUTION_FAILURE) + rval = EXECUTION_FAILURE; + } + set_shellopts (); + return rval; +} + +/* If we set or unset interactive_comments with shopt, make sure the + change is reflected in $SHELLOPTS. */ +static int +set_shellopts_after_change (mode) + int mode; +{ + set_shellopts (); + return (0); +} + +#if defined (RESTRICTED_SHELL) +/* Don't allow the value of restricted_shell to be modified. */ + +static int +set_restricted_shell (mode) + int mode; +{ + static int save_restricted = -1; + + if (save_restricted == -1) + save_restricted = shell_is_restricted (shell_name); + + restricted_shell = save_restricted; + return (0); +} +#endif /* RESTRICTED_SHELL */ + +/* Not static so shell.c can call it to initialize shopt_login_shell */ +int +set_login_shell (mode) + int mode; +{ + shopt_login_shell = login_shell != 0; + return (0); +} + +char ** +get_shopt_options () +{ + char **ret; + int n, i; + + n = sizeof (shopt_vars) / sizeof (shopt_vars[0]); + ret = strvec_create (n + 1); + for (i = 0; shopt_vars[i].name; i++) + ret[i] = savestring (shopt_vars[i].name); + ret[i] = (char *)NULL; + return ret; +} + +/* + * External interface for other parts of the shell. NAME is a string option; + * MODE is 0 if we want to unset an option; 1 if we want to set an option. + * REUSABLE is 1 if we want to print output in a form that may be reused. + */ +int +shopt_setopt (name, mode) + char *name; + int mode; +{ + WORD_LIST *wl; + int r; + + wl = add_string_to_list (name, (WORD_LIST *)NULL); + r = toggle_shopts (mode, wl, 0); + dispose_words (wl); + return r; +} + +int +shopt_listopt (name, reusable) + char *name; + int reusable; +{ + int i; + + if (name == 0) + return (list_shopts ((WORD_LIST *)NULL, reusable ? PFLAG : 0)); + + i = find_shopt (name); + if (i < 0) + { + shopt_error (name); + return (EXECUTION_FAILURE); + } + + print_shopt (name, *shopt_vars[i].value, reusable ? PFLAG : 0); + return (EXECUTION_SUCCESS); +} diff --git a/bash-20060316/builtins/source.def b/bash-20060316/builtins/source.def new file mode 100644 index 000000000..f9f812f89 --- /dev/null +++ b/bash-20060316/builtins/source.def @@ -0,0 +1,174 @@ +This file is source.def, from which is created source.c. +It implements the builtins "." and "source" in Bash. + +Copyright (C) 1987-2003 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES source.c + +$BUILTIN source +$FUNCTION source_builtin +$SHORT_DOC source filename [arguments] +Read and execute commands from FILENAME and return. The pathnames +in $PATH are used to find the directory containing FILENAME. If any +ARGUMENTS are supplied, they become the positional parameters when +FILENAME is executed. +$END +$BUILTIN . +$DOCNAME dot +$FUNCTION source_builtin +$SHORT_DOC . filename [arguments] +Read and execute commands from FILENAME and return. The pathnames +in $PATH are used to find the directory containing FILENAME. If any +ARGUMENTS are supplied, they become the positional parameters when +FILENAME is executed. +$END +/* source.c - Implements the `.' and `source' builtins. */ + +#include + +#include "../bashtypes.h" +#include "posixstat.h" +#include "filecntl.h" +#if ! defined(_MINIX) && defined (HAVE_SYS_FILE_H) +# include +#endif +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "../bashansi.h" +#include "../bashintl.h" + +#include "../shell.h" +#include "../flags.h" +#include "../findcmd.h" +#include "common.h" +#include "bashgetopt.h" +#include "../trap.h" + +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +#if defined (RESTRICTED_SHELL) +extern int restricted; +#endif + +/* If non-zero, `.' uses $PATH to look up the script to be sourced. */ +int source_uses_path = 1; + +/* If non-zero, `.' looks in the current directory if the filename argument + is not found in the $PATH. */ +int source_searches_cwd = 1; + +/* If this . script is supplied arguments, we save the dollar vars and + replace them with the script arguments for the duration of the script's + execution. If the script does not change the dollar vars, we restore + what we saved. If the dollar vars are changed in the script, and we are + not executing a shell function, we leave the new values alone and free + the saved values. */ +static void +maybe_pop_dollar_vars () +{ + if (variable_context == 0 && (dollar_vars_changed () & ARGS_SETBLTIN)) + dispose_saved_dollar_vars (); + else + pop_dollar_vars (); + if (debugging_mode) + pop_args (); /* restore BASH_ARGC and BASH_ARGV */ + set_dollar_vars_unchanged (); +} + +/* Read and execute commands from the file passed as argument. Guess what. + This cannot be done in a subshell, since things like variable assignments + take place in there. So, I open the file, place it into a large string, + close the file, and then execute the string. */ +int +source_builtin (list) + WORD_LIST *list; +{ + int result; + char *filename, *debug_trap; + + if (no_options (list)) + return (EX_USAGE); + list = loptend; + + if (list == 0) + { + builtin_error (_("filename argument required")); + builtin_usage (); + return (EX_USAGE); + } + +#if defined (RESTRICTED_SHELL) + if (restricted && strchr (list->word->word, '/')) + { + sh_restricted (list->word->word); + return (EXECUTION_FAILURE); + } +#endif + + filename = (char *)NULL; + if (source_uses_path) + filename = find_path_file (list->word->word); + if (filename == 0) + { + if (source_searches_cwd == 0) + { + builtin_error (_("%s: file not found"), list->word->word); + return (EXECUTION_FAILURE); + } + else + filename = savestring (list->word->word); + } + + begin_unwind_frame ("source"); + add_unwind_protect ((Function *)xfree, filename); + + if (list->next) + { + push_dollar_vars (); + add_unwind_protect ((Function *)maybe_pop_dollar_vars, (char *)NULL); + remember_args (list->next, 1); + if (debugging_mode) + push_args (list->next); /* Update BASH_ARGV and BASH_ARGC */ + } + set_dollar_vars_unchanged (); + + /* Don't inherit the DEBUG trap unless function_trace_mode (overloaded) + is set. XXX - should sourced files inherit the RETURN trap? Functions + don't. */ + debug_trap = TRAP_STRING (DEBUG_TRAP); + if (debug_trap && function_trace_mode == 0) + { + debug_trap = savestring (debug_trap); + add_unwind_protect (xfree, debug_trap); + add_unwind_protect (set_debug_trap, debug_trap); + restore_default_signal (DEBUG_TRAP); + } + + result = source_file (filename, (list && list->next)); + + run_unwind_frame ("source"); + + return (result); +} diff --git a/bash-20060316/builtins/suspend.def b/bash-20060316/builtins/suspend.def new file mode 100644 index 000000000..d616d775b --- /dev/null +++ b/bash-20060316/builtins/suspend.def @@ -0,0 +1,119 @@ +This file is suspend.def, from which is created suspend.c. +It implements the builtin "suspend" in Bash. + +Copyright (C) 1987-2003 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES suspend.c + +$BUILTIN suspend +$DEPENDS_ON JOB_CONTROL +$FUNCTION suspend_builtin +$SHORT_DOC suspend [-f] +Suspend the execution of this shell until it receives a SIGCONT +signal. The `-f' if specified says not to complain about this +being a login shell if it is; just suspend anyway. +$END + +#include + +#if defined (JOB_CONTROL) +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include "../bashtypes.h" +#include +#include "../bashintl.h" +#include "../shell.h" +#include "../jobs.h" +#include "common.h" +#include "bashgetopt.h" + +static SigHandler *old_cont; +#if 0 +static SigHandler *old_stop; +#endif + +/* Continue handler. */ +sighandler +suspend_continue (sig) + int sig; +{ + set_signal_handler (SIGCONT, old_cont); +#if 0 + set_signal_handler (SIGSTOP, old_stop); +#endif + SIGRETURN (0); +} + +/* Suspending the shell. If -f is the arg, then do the suspend + no matter what. Otherwise, complain if a login shell. */ +int +suspend_builtin (list) + WORD_LIST *list; +{ + int opt, force; + + reset_internal_getopt (); + force = 0; + while ((opt = internal_getopt (list, "f")) != -1) + switch (opt) + { + case 'f': + force++; + break; + default: + builtin_usage (); + return (EX_USAGE); + } + + list = loptend; + + if (job_control == 0) + { + sh_nojobs (_("cannot suspend")); + return (EXECUTION_FAILURE); + } + + if (force == 0) + { + no_args (list); + + if (login_shell) + { + builtin_error (_("cannot suspend a login shell")); + return (EXECUTION_FAILURE); + } + } + + /* XXX - should we put ourselves back into the original pgrp now? If so, + call end_job_control() here and do the right thing in suspend_continue + (that is, call restart_job_control()). */ + old_cont = (SigHandler *)set_signal_handler (SIGCONT, suspend_continue); +#if 0 + old_stop = (SigHandler *)set_signal_handler (SIGSTOP, SIG_DFL); +#endif + killpg (shell_pgrp, SIGSTOP); + return (EXECUTION_SUCCESS); +} + +#endif /* JOB_CONTROL */ diff --git a/bash-20060316/builtins/test.def b/bash-20060316/builtins/test.def new file mode 100644 index 000000000..e51d00b7a --- /dev/null +++ b/bash-20060316/builtins/test.def @@ -0,0 +1,146 @@ +This file is test.def, from which is created test.c. +It implements the builtin "test" in Bash. + +Copyright (C) 1987-2002 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES test.c + +$BUILTIN test +$FUNCTION test_builtin +$SHORT_DOC test [expr] +Exits with a status of 0 (true) or 1 (false) depending on +the evaluation of EXPR. Expressions may be unary or binary. Unary +expressions are often used to examine the status of a file. There +are string operators as well, and numeric comparison operators. + +File operators: + + -a FILE True if file exists. + -b FILE True if file is block special. + -c FILE True if file is character special. + -d FILE True if file is a directory. + -e FILE True if file exists. + -f FILE True if file exists and is a regular file. + -g FILE True if file is set-group-id. + -h FILE True if file is a symbolic link. + -L FILE True if file is a symbolic link. + -k FILE True if file has its `sticky' bit set. + -p FILE True if file is a named pipe. + -r FILE True if file is readable by you. + -s FILE True if file exists and is not empty. + -S FILE True if file is a socket. + -t FD True if FD is opened on a terminal. + -u FILE True if the file is set-user-id. + -w FILE True if the file is writable by you. + -x FILE True if the file is executable by you. + -O FILE True if the file is effectively owned by you. + -G FILE True if the file is effectively owned by your group. + -N FILE True if the file has been modified since it was last read. + + FILE1 -nt FILE2 True if file1 is newer than file2 (according to + modification date). + + FILE1 -ot FILE2 True if file1 is older than file2. + + FILE1 -ef FILE2 True if file1 is a hard link to file2. + +String operators: + + -z STRING True if string is empty. + + -n STRING + STRING True if string is not empty. + + STRING1 = STRING2 + True if the strings are equal. + STRING1 != STRING2 + True if the strings are not equal. + STRING1 < STRING2 + True if STRING1 sorts before STRING2 lexicographically. + STRING1 > STRING2 + True if STRING1 sorts after STRING2 lexicographically. + +Other operators: + + -o OPTION True if the shell option OPTION is enabled. + ! 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. + + arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne, + -lt, -le, -gt, or -ge. + +Arithmetic binary operators return true if ARG1 is equal, not-equal, +less-than, less-than-or-equal, greater-than, or greater-than-or-equal +than ARG2. +$END + +$BUILTIN [ +$DOCNAME test_bracket +$FUNCTION test_builtin +$SHORT_DOC [ arg... ] +This is a synonym for the "test" builtin, but the last +argument must be a literal `]', to match the opening `['. +$END + +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include "../bashansi.h" + +#include "../shell.h" +#include "../test.h" +#include "common.h" + +extern char *this_command_name; + +/* TEST/[ builtin. */ +int +test_builtin (list) + WORD_LIST *list; +{ + char **argv; + int argc, result; + + /* We let Matthew Bradburn and Kevin Braunsdorf's code do the + actual test command. So turn the list of args into an array + of strings, since that is what their code wants. */ + if (list == 0) + { + if (this_command_name[0] == '[' && !this_command_name[1]) + { + builtin_error ("missing `]'"); + return (EX_BADUSAGE); + } + + return (EXECUTION_FAILURE); + } + + argv = make_builtin_argv (list, &argc); + result = test_command (argc, argv); + free ((char *)argv); + + return (result); +} diff --git a/bash-20060316/builtins/times.def b/bash-20060316/builtins/times.def new file mode 100644 index 000000000..22304fc2f --- /dev/null +++ b/bash-20060316/builtins/times.def @@ -0,0 +1,115 @@ +This file is times.def, from which is created times.c. +It implements the builtin "times" in Bash. + +Copyright (C) 1987-2002 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES times.c + +$BUILTIN times +$FUNCTION times_builtin +$SHORT_DOC times +Print the accumulated user and system times for processes run from +the shell. +$END + +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include +#include "../bashtypes.h" +#include "../shell.h" + +#include + +#if defined (HAVE_SYS_TIMES_H) +# include +#endif /* HAVE_SYS_TIMES_H */ + +#if defined (HAVE_SYS_RESOURCE_H) && !defined (RLIMTYPE) +# include +#endif + +#include "common.h" + +/* Print the totals for system and user time used. */ +int +times_builtin (list) + WORD_LIST *list; +{ +#if defined (HAVE_GETRUSAGE) && defined (HAVE_TIMEVAL) && defined (RUSAGE_SELF) + struct rusage self, kids; + + USE_VAR(list); + + if (no_options (list)) + return (EX_USAGE); + + getrusage (RUSAGE_SELF, &self); + getrusage (RUSAGE_CHILDREN, &kids); /* terminated child processes */ + + print_timeval (stdout, &self.ru_utime); + putchar (' '); + print_timeval (stdout, &self.ru_stime); + putchar ('\n'); + print_timeval (stdout, &kids.ru_utime); + putchar (' '); + print_timeval (stdout, &kids.ru_stime); + putchar ('\n'); + +#else +# if defined (HAVE_TIMES) + /* This uses the POSIX.1/XPG5 times(2) interface, which fills in a + `struct tms' with values of type clock_t. */ + struct tms t; + + USE_VAR(list); + + if (no_options (list)) + return (EX_USAGE); + + times (&t); + + print_clock_t (stdout, t.tms_utime); + putchar (' '); + print_clock_t (stdout, t.tms_stime); + putchar ('\n'); + print_clock_t (stdout, t.tms_cutime); + putchar (' '); + print_clock_t (stdout, t.tms_cstime); + putchar ('\n'); + +# else /* !HAVE_TIMES */ + + USE_VAR(list); + + if (no_options (list)) + return (EX_USAGE); + printf ("0.00 0.00\n0.00 0.00\n"); + +# endif /* HAVE_TIMES */ +#endif /* !HAVE_TIMES */ + + return (EXECUTION_SUCCESS); +} diff --git a/bash-20060316/builtins/trap.def b/bash-20060316/builtins/trap.def new file mode 100644 index 000000000..426833a15 --- /dev/null +++ b/bash-20060316/builtins/trap.def @@ -0,0 +1,268 @@ +This file is trap.def, from which is created trap.c. +It implements the builtin "trap" in Bash. + +Copyright (C) 1987-2006 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES trap.c + +$BUILTIN trap +$FUNCTION trap_builtin +$SHORT_DOC trap [-lp] [arg signal_spec ...] +The command ARG is to be read and executed when the shell receives +signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC +is supplied) or `-', each specified signal is reset to its original +value. If ARG is the null string each SIGNAL_SPEC is ignored by the +shell and by the commands it invokes. If a SIGNAL_SPEC is EXIT (0) +the command ARG is executed on exit from the shell. If a SIGNAL_SPEC +is DEBUG, ARG is executed after every simple command. If the`-p' option +is supplied then the trap commands associated with each SIGNAL_SPEC are +displayed. If no arguments are supplied or if only `-p' is given, trap +prints the list of commands associated with each signal. Each SIGNAL_SPEC +is either a signal name in or a signal number. Signal names +are case insensitive and the SIG prefix is optional. `trap -l' prints +a list of signal names and their corresponding numbers. Note that a +signal can be sent to the shell with "kill -signal $$". +$END + +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include "../bashtypes.h" +#include +#include +#include "../bashansi.h" + +#include "../shell.h" +#include "../trap.h" +#include "common.h" +#include "bashgetopt.h" + +static void showtrap __P((int)); +static int display_traps __P((WORD_LIST *)); + +/* The trap command: + + trap + trap + trap -l + trap -p [sigspec ...] + trap [--] + + Set things up so that ARG is executed when SIGNAL(s) N is recieved. + If ARG is the empty string, then ignore the SIGNAL(s). If there is + no ARG, then set the trap for SIGNAL(s) to its original value. Just + plain "trap" means to print out the list of commands associated with + each signal number. Single arg of "-l" means list the signal names. */ + +/* Possible operations to perform on the list of signals.*/ +#define SET 0 /* Set this signal to first_arg. */ +#define REVERT 1 /* Revert to this signals original value. */ +#define IGNORE 2 /* Ignore this signal. */ + +extern int posixly_correct; + +int +trap_builtin (list) + WORD_LIST *list; +{ + int list_signal_names, display, result, opt, first_signal; + + list_signal_names = display = 0; + result = EXECUTION_SUCCESS; + reset_internal_getopt (); + while ((opt = internal_getopt (list, "lp")) != -1) + { + switch (opt) + { + case 'l': + list_signal_names++; + break; + case 'p': + display++; + break; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + opt = DSIG_NOCASE|DSIG_SIGPREFIX; /* flags for decode_signal */ + + if (list_signal_names) + return (display_signal_list ((WORD_LIST *)NULL, 1)); + else if (display || list == 0) + return (display_traps (list)); + else + { + char *first_arg; + int operation, sig, first_signal; + + operation = SET; + first_arg = list->word->word; + first_signal = first_arg && *first_arg && all_digits (first_arg) && signal_object_p (first_arg, opt); + + /* Backwards compatibility. XXX - question about whether or not we + should throw an error if an all-digit argument doesn't correspond + to a valid signal number (e.g., if it's `50' on a system with only + 32 signals). */ + if (first_signal) + operation = REVERT; + /* When in posix mode, the historical behavior of looking for a + missing first argument is disabled. To revert to the original + signal handling disposition, use `-' as the first argument. */ + else if (posixly_correct == 0 && first_arg && *first_arg && + (*first_arg != '-' || first_arg[1]) && + signal_object_p (first_arg, opt) && list->next == 0) + operation = REVERT; + else + { + list = list->next; + if (list == 0) + { + builtin_usage (); + return (EX_USAGE); + } + else if (*first_arg == '\0') + operation = IGNORE; + else if (first_arg[0] == '-' && !first_arg[1]) + operation = REVERT; + } + + while (list) + { + sig = decode_signal (list->word->word, opt); + + if (sig == NO_SIG) + { + sh_invalidsig (list->word->word); + result = EXECUTION_FAILURE; + } + else + { + switch (operation) + { + case SET: + set_signal (sig, first_arg); + break; + + case REVERT: + restore_default_signal (sig); + + /* Signals that the shell treats specially need special + handling. */ + switch (sig) + { + case SIGINT: + if (interactive) + set_signal_handler (SIGINT, sigint_sighandler); + else + set_signal_handler (SIGINT, termsig_sighandler); + break; + + case SIGQUIT: + /* Always ignore SIGQUIT. */ + set_signal_handler (SIGQUIT, SIG_IGN); + break; + case SIGTERM: +#if defined (JOB_CONTROL) + case SIGTTIN: + case SIGTTOU: + case SIGTSTP: +#endif /* JOB_CONTROL */ + if (interactive) + set_signal_handler (sig, SIG_IGN); + break; + } + break; + + case IGNORE: + ignore_signal (sig); + break; + } + } + list = list->next; + } + } + + return (result); +} + +static void +showtrap (i) + int i; +{ + char *t, *p, *sn; + + p = trap_list[i]; + if (p == (char *)DEFAULT_SIG) + return; + + t = (p == (char *)IGNORE_SIG) ? (char *)NULL : sh_single_quote (p); + sn = signal_name (i); + /* Make sure that signals whose names are unknown (for whatever reason) + are printed as signal numbers. */ + if (STREQN (sn, "SIGJUNK", 7) || STREQN (sn, "unknown", 7)) + printf ("trap -- %s %d\n", t ? t : "''", i); + else if (posixly_correct) + { + if (STREQN (sn, "SIG", 3)) + printf ("trap -- %s %s\n", t ? t : "''", sn+3); + else + printf ("trap -- %s %s\n", t ? t : "''", sn); + } + else + printf ("trap -- %s %s\n", t ? t : "''", sn); + + FREE (t); +} + +static int +display_traps (list) + WORD_LIST *list; +{ + int result, i; + + if (list == 0) + { + for (i = 0; i < BASH_NSIG; i++) + showtrap (i); + return (EXECUTION_SUCCESS); + } + + for (result = EXECUTION_SUCCESS; list; list = list->next) + { + i = decode_signal (list->word->word, DSIG_NOCASE|DSIG_SIGPREFIX); + if (i == NO_SIG) + { + sh_invalidsig (list->word->word); + result = EXECUTION_FAILURE; + } + else + showtrap (i); + } + + return (result); +} diff --git a/bash-20060316/builtins/type.def b/bash-20060316/builtins/type.def new file mode 100644 index 000000000..d03ccb2d9 --- /dev/null +++ b/bash-20060316/builtins/type.def @@ -0,0 +1,405 @@ +This file is type.def, from which is created type.c. +It implements the builtin "type" in Bash. + +Copyright (C) 1987-2002 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES type.c + +$BUILTIN type +$FUNCTION type_builtin +$SHORT_DOC type [-afptP] name [name ...] +For each NAME, indicate how it would be interpreted if used as a +command name. + +If the -t option is used, `type' outputs a single word which is one of +`alias', `keyword', `function', `builtin', `file' or `', if NAME is an +alias, shell reserved word, shell function, shell builtin, disk file, +or unfound, respectively. + +If the -p flag is used, `type' either returns the name of the disk +file that would be executed, or nothing if `type -t NAME' would not +return `file'. + +If the -a flag is used, `type' displays all of the places that contain +an executable named `file'. This includes aliases, builtins, and +functions, if and only if the -p flag is not also used. + +The -f flag suppresses shell function lookup. + +The -P flag forces a PATH search for each NAME, even if it is an alias, +builtin, or function, and returns the name of the disk file that would +be executed. +$END + +#include + +#include "../bashtypes.h" +#include "posixstat.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include +#include "../bashansi.h" +#include "../bashintl.h" + +#include "../shell.h" +#include "../findcmd.h" +#include "../hashcmd.h" + +#if defined (ALIAS) +#include "../alias.h" +#endif /* ALIAS */ + +#include "common.h" +#include "bashgetopt.h" + +extern int find_reserved_word __P((char *)); + +extern char *this_command_name; +extern int expand_aliases, posixly_correct; + +/* For each word in LIST, find out what the shell is going to do with + it as a simple command. i.e., which file would this shell use to + execve, or if it is a builtin command, or an alias. Possible flag + arguments: + -t Returns the "type" of the object, one of + `alias', `keyword', `function', `builtin', + or `file'. + + -p Returns the pathname of the file if -type is + a file. + + -a Returns all occurrences of words, whether they + be a filename in the path, alias, function, + or builtin. + + -f Suppress shell function lookup, like `command'. + + -P Force a path search even in the presence of other + definitions. + + Order of evaluation: + alias + keyword + function + builtin + file + */ + +int +type_builtin (list) + WORD_LIST *list; +{ + int dflags, successful_finds, opt; + WORD_LIST *this; + + if (list == 0) + return (EXECUTION_SUCCESS); + + dflags = CDESC_SHORTDESC; /* default */ + successful_finds = 0; + + /* Handle the obsolescent `-type', `-path', and `-all' by prescanning + the arguments and converting those options to the form that + internal_getopt recognizes. Converts `--type', `--path', and `--all' + also. THIS SHOULD REALLY GO AWAY. */ + for (this = list; this && this->word->word[0] == '-'; this = this->next) + { + char *flag = &(this->word->word[1]); + + if (STREQ (flag, "type") || STREQ (flag, "-type")) + { + this->word->word[1] = 't'; + this->word->word[2] = '\0'; + } + else if (STREQ (flag, "path") || STREQ (flag, "-path")) + { + this->word->word[1] = 'p'; + this->word->word[2] = '\0'; + } + else if (STREQ (flag, "all") || STREQ (flag, "-all")) + { + this->word->word[1] = 'a'; + this->word->word[2] = '\0'; + } + } + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "afptP")) != -1) + { + switch (opt) + { + case 'a': + dflags |= CDESC_ALL; + break; + case 'f': + dflags |= CDESC_NOFUNCS; + break; + case 'p': + dflags |= CDESC_PATH_ONLY; + dflags &= ~(CDESC_TYPE|CDESC_SHORTDESC); + break; + case 't': + dflags |= CDESC_TYPE; + dflags &= ~(CDESC_PATH_ONLY|CDESC_SHORTDESC); + break; + case 'P': /* shorthand for type -ap */ + dflags |= (CDESC_PATH_ONLY|CDESC_FORCE_PATH); + dflags &= ~(CDESC_TYPE|CDESC_SHORTDESC); + break; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + while (list) + { + int found; + + found = describe_command (list->word->word, dflags); + + if (!found && (dflags & (CDESC_PATH_ONLY|CDESC_TYPE)) == 0) + sh_notfound (list->word->word); + + successful_finds += found; + list = list->next; + } + + fflush (stdout); + + return ((successful_finds != 0) ? EXECUTION_SUCCESS : EXECUTION_FAILURE); +} + +/* + * Describe COMMAND as required by the type and command builtins. + * + * Behavior is controlled by DFLAGS. Flag values are + * CDESC_ALL print all descriptions of a command + * CDESC_SHORTDESC print the description for type and command -V + * CDESC_REUSABLE print in a format that may be reused as input + * CDESC_TYPE print the type for type -t + * CDESC_PATH_ONLY print the path for type -p + * CDESC_FORCE_PATH force a path search for type -P + * CDESC_NOFUNCS skip function lookup for type -f + * CDESC_ABSPATH convert to absolute path, no ./ prefix + * + * CDESC_ALL says whether or not to look for all occurrences of COMMAND, or + * return after finding it once. + */ +int +describe_command (command, dflags) + char *command; + int dflags; +{ + int found, i, found_file, f, all; + char *full_path, *x; + SHELL_VAR *func; +#if defined (ALIAS) + alias_t *alias; +#endif + + all = (dflags & CDESC_ALL) != 0; + found = found_file = 0; + full_path = (char *)NULL; + +#if defined (ALIAS) + /* Command is an alias? */ + if (((dflags & CDESC_FORCE_PATH) == 0) && expand_aliases && (alias = find_alias (command))) + { + if (dflags & CDESC_TYPE) + puts ("alias"); + else if (dflags & CDESC_SHORTDESC) + printf (_("%s is aliased to `%s'\n"), command, alias->value); + else if (dflags & CDESC_REUSABLE) + { + x = sh_single_quote (alias->value); + printf ("alias %s=%s\n", command, x); + free (x); + } + + found = 1; + + if (all == 0) + return (1); + } +#endif /* ALIAS */ + + /* Command is a shell reserved word? */ + if (((dflags & CDESC_FORCE_PATH) == 0) && (i = find_reserved_word (command)) >= 0) + { + if (dflags & CDESC_TYPE) + puts ("keyword"); + else if (dflags & CDESC_SHORTDESC) + printf (_("%s is a shell keyword\n"), command); + else if (dflags & CDESC_REUSABLE) + printf ("%s\n", command); + + found = 1; + + if (all == 0) + return (1); + } + + /* Command is a function? */ + if (((dflags & (CDESC_FORCE_PATH|CDESC_NOFUNCS)) == 0) && (func = find_function (command))) + { + if (dflags & CDESC_TYPE) + puts ("function"); + else if (dflags & CDESC_SHORTDESC) + { +#define PRETTY_PRINT_FUNC 1 + char *result; + + printf (_("%s is a function\n"), command); + + /* We're blowing away THE_PRINTED_COMMAND here... */ + + result = named_function_string (command, + (COMMAND *) function_cell (func), + PRETTY_PRINT_FUNC); + printf ("%s\n", result); +#undef PRETTY_PRINT_FUNC + } + else if (dflags & CDESC_REUSABLE) + printf ("%s\n", command); + + found = 1; + + if (all == 0) + return (1); + } + + /* Command is a builtin? */ + if (((dflags & CDESC_FORCE_PATH) == 0) && find_shell_builtin (command)) + { + if (dflags & CDESC_TYPE) + puts ("builtin"); + else if (dflags & CDESC_SHORTDESC) + printf (_("%s is a shell builtin\n"), command); + else if (dflags & CDESC_REUSABLE) + printf ("%s\n", command); + + found = 1; + + if (all == 0) + return (1); + } + + /* Command is a disk file? */ + /* If the command name given is already an absolute command, just + check to see if it is executable. */ + if (absolute_program (command)) + { + f = file_status (command); + if (f & FS_EXECABLE) + { + if (dflags & CDESC_TYPE) + puts ("file"); + else if (dflags & CDESC_SHORTDESC) + printf (_("%s is %s\n"), command, command); + else if (dflags & (CDESC_REUSABLE|CDESC_PATH_ONLY)) + printf ("%s\n", command); + + /* There's no use looking in the hash table or in $PATH, + because they're not consulted when an absolute program + name is supplied. */ + return (1); + } + } + + /* If the user isn't doing "-a", then we might care about + whether the file is present in our hash table. */ + if (all == 0 || (dflags & CDESC_FORCE_PATH)) + { + if (full_path = phash_search (command)) + { + if (dflags & CDESC_TYPE) + puts ("file"); + else if (dflags & CDESC_SHORTDESC) + printf (_("%s is hashed (%s)\n"), command, full_path); + else if (dflags & (CDESC_REUSABLE|CDESC_PATH_ONLY)) + printf ("%s\n", full_path); + + free (full_path); + return (1); + } + } + + /* Now search through $PATH. */ + while (1) + { + if (all == 0) + full_path = find_user_command (command); + else + full_path = + user_command_matches (command, FS_EXEC_ONLY, found_file); + /* XXX - should that be FS_EXEC_PREFERRED? */ + + if (!full_path) + break; + + /* If we found the command as itself by looking through $PATH, it + probably doesn't exist. Check whether or not the command is an + executable file. If it's not, don't report a match. This is + the default posix mode behavior */ + if (STREQ (full_path, command) || posixly_correct) + { + f = file_status (full_path); + if ((f & FS_EXECABLE) == 0) + { + free (full_path); + full_path = (char *)NULL; + if (all == 0) + break; + } + else if (ABSPATH (full_path)) + ; /* placeholder; don't need to do anything yet */ + 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); + } + } + /* If we require a full path and don't have one, make one */ + else if ((dflags & CDESC_ABSPATH) && ABSPATH (full_path) == 0) + full_path = sh_makepath ((char *)NULL, full_path, MP_DOCWD|MP_RMDOT); + + found_file++; + found = 1; + + if (dflags & CDESC_TYPE) + puts ("file"); + else if (dflags & CDESC_SHORTDESC) + printf ("%s is %s\n", command, full_path); + else if (dflags & (CDESC_REUSABLE|CDESC_PATH_ONLY)) + printf ("%s\n", full_path); + + free (full_path); + full_path = (char *)NULL; + + if (all == 0) + break; + } + + return (found); +} diff --git a/bash-20060316/builtins/ulimit.def b/bash-20060316/builtins/ulimit.def new file mode 100644 index 000000000..17898699f --- /dev/null +++ b/bash-20060316/builtins/ulimit.def @@ -0,0 +1,750 @@ +This file is ulimit.def, from which is created ulimit.c. +It implements the builtin "ulimit" in Bash. + +Copyright (C) 1987-2005 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES ulimit.c + +$BUILTIN ulimit +$FUNCTION ulimit_builtin +$DEPENDS_ON !_MINIX +$SHORT_DOC ulimit [-SHacdfilmnpqstuvx] [limit] +Ulimit provides control over the resources available to processes +started by the shell, on systems that allow such control. If an +option is given, it is interpreted as follows: + + -S use the `soft' resource limit + -H use the `hard' resource limit + -a all current limits are reported + -c the maximum size of core files created + -d the maximum size of a process's data segment + -e the maximum scheduling priority (`nice') + -f the maximum size of files created by the shell + -i the maximum number of pending signals + -l the maximum size a process may lock into memory + -m the maximum resident set size + -n the maximum number of open file descriptors + -p the pipe buffer size + -q the maximum number of bytes in POSIX message queues + -r the maximum real-time scheduling priority + -s the maximum stack size + -t the maximum amount of cpu time in seconds + -u the maximum number of user processes + -v the size of virtual memory + -x the maximum number of file locks + +If LIMIT is given, it is the new value of the specified resource; +the special LIMIT values `soft', `hard', and `unlimited' stand for +the current soft limit, the current hard limit, and no limit, respectively. +Otherwise, the current value of the specified resource is printed. +If no option is given, then -f is assumed. Values are in 1024-byte +increments, except for -t, which is in seconds, -p, which is in +increments of 512 bytes, and -u, which is an unscaled number of +processes. +$END + +#if !defined (_MINIX) + +#include + +#include "../bashtypes.h" +#ifndef _MINIX +# include +#endif + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include +#include + +#include "../bashintl.h" + +#include "../shell.h" +#include "common.h" +#include "bashgetopt.h" +#include "pipesize.h" + +#if !defined (errno) +extern int errno; +#endif + +/* For some reason, HPUX chose to make these definitions visible only if + _KERNEL is defined, so we define _KERNEL before including + and #undef it afterward. */ +#if defined (HAVE_RESOURCE) +# include +# if defined (HPUX) && defined (RLIMIT_NEEDS_KERNEL) +# define _KERNEL +# endif +# include +# if defined (HPUX) && defined (RLIMIT_NEEDS_KERNEL) +# undef _KERNEL +# endif +#else +# include +#endif + +#if defined (HAVE_LIMITS_H) +# include +#endif + +/* Check for the most basic symbols. If they aren't present, this + system's isn't very useful to us. */ +#if !defined (RLIMIT_FSIZE) || !defined (HAVE_GETRLIMIT) +# undef HAVE_RESOURCE +#endif + +#if !defined (RLIMTYPE) +# define RLIMTYPE long +# define string_to_rlimtype(s) strtol(s, (char **)NULL, 10) +# define print_rlimtype(num, nl) printf ("%ld%s", num, nl ? "\n" : "") +#endif + +/* Some systems use RLIMIT_NOFILE, others use RLIMIT_OFILE */ +#if defined (HAVE_RESOURCE) && defined (RLIMIT_OFILE) && !defined (RLIMIT_NOFILE) +# define RLIMIT_NOFILE RLIMIT_OFILE +#endif /* HAVE_RESOURCE && RLIMIT_OFILE && !RLIMIT_NOFILE */ + +/* Some systems have these, some do not. */ +#ifdef RLIMIT_FSIZE +# define RLIMIT_FILESIZE RLIMIT_FSIZE +#else +# define RLIMIT_FILESIZE 256 +#endif + +#define RLIMIT_PIPESIZE 257 + +#ifdef RLIMIT_NOFILE +# define RLIMIT_OPENFILES RLIMIT_NOFILE +#else +# define RLIMIT_OPENFILES 258 +#endif + +#ifdef RLIMIT_VMEM +# define RLIMIT_VIRTMEM RLIMIT_VMEM +# define RLIMIT_VMBLKSZ 1024 +#else +# ifdef RLIMIT_AS +# define RLIMIT_VIRTMEM RLIMIT_AS +# define RLIMIT_VMBLKSZ 1024 +# else +# define RLIMIT_VIRTMEM 259 +# define RLIMIT_VMBLKSZ 1 +# endif +#endif + +#ifdef RLIMIT_NPROC +# define RLIMIT_MAXUPROC RLIMIT_NPROC +#else +# define RLIMIT_MAXUPROC 260 +#endif + +#if !defined (RLIM_INFINITY) +# define RLIM_INFINITY 0x7fffffff +#endif + +#if !defined (RLIM_SAVED_CUR) +# define RLIM_SAVED_CUR RLIM_INFINITY +#endif + +#if !defined (RLIM_SAVED_MAX) +# define RLIM_SAVED_MAX RLIM_INFINITY +#endif + +#define LIMIT_HARD 0x01 +#define LIMIT_SOFT 0x02 + +static int _findlim __P((int)); + +static int ulimit_internal __P((int, char *, int, int)); + +static int get_limit __P((int, RLIMTYPE *, RLIMTYPE *)); +static int set_limit __P((int, RLIMTYPE, int)); + +static void printone __P((int, RLIMTYPE, int)); +static void print_all_limits __P((int)); + +static int set_all_limits __P((int, RLIMTYPE)); + +static int filesize __P((RLIMTYPE *)); +static int pipesize __P((RLIMTYPE *)); +static int getmaxuprc __P((RLIMTYPE *)); +static int getmaxvm __P((RLIMTYPE *, RLIMTYPE *)); + +typedef struct { + int option; /* The ulimit option for this limit. */ + int parameter; /* Parameter to pass to get_limit (). */ + int block_factor; /* Blocking factor for specific limit. */ + char *description; /* Descriptive string to output. */ + char *units; /* scale */ +} RESOURCE_LIMITS; + +static RESOURCE_LIMITS limits[] = { +#ifdef RLIMIT_CORE + { 'c', RLIMIT_CORE, 1024, "core file size", "blocks" }, +#endif +#ifdef RLIMIT_DATA + { 'd', RLIMIT_DATA, 1024, "data seg size", "kbytes" }, +#endif +#ifdef RLIMIT_NICE + { 'e', RLIMIT_NICE, 1, "scheduling priority", (char *)NULL }, +#endif + { 'f', RLIMIT_FILESIZE, 1024, "file size", "blocks" }, +#ifdef RLIMIT_SIGPENDING + { 'i', RLIMIT_SIGPENDING, 1, "pending signals", (char *)NULL }, +#endif +#ifdef RLIMIT_MEMLOCK + { 'l', RLIMIT_MEMLOCK, 1024, "max locked memory", "kbytes" }, +#endif +#ifdef RLIMIT_RSS + { 'm', RLIMIT_RSS, 1024, "max memory size", "kbytes" }, +#endif /* RLIMIT_RSS */ + { 'n', RLIMIT_OPENFILES, 1, "open files", (char *)NULL}, + { 'p', RLIMIT_PIPESIZE, 512, "pipe size", "512 bytes" }, +#ifdef RLIMIT_MSGQUEUE + { 'q', RLIMIT_MSGQUEUE, 1, "POSIX message queues", "bytes" }, +#endif +#ifdef RLIMIT_RTPRIO + { 'r', RLIMIT_RTPRIO, 1, "real-time priority", (char *)NULL }, +#endif +#ifdef RLIMIT_STACK + { 's', RLIMIT_STACK, 1024, "stack size", "kbytes" }, +#endif +#ifdef RLIMIT_CPU + { 't', RLIMIT_CPU, 1, "cpu time", "seconds" }, +#endif /* RLIMIT_CPU */ + { 'u', RLIMIT_MAXUPROC, 1, "max user processes", (char *)NULL }, +#if defined (HAVE_RESOURCE) + { 'v', RLIMIT_VIRTMEM, RLIMIT_VMBLKSZ, "virtual memory", "kbytes" }, +#endif +#ifdef RLIMIT_SWAP + { 'w', RLIMIT_SWAP, 1024, "swap size", "kbytes" }, +#endif +#ifdef RLIMIT_LOCKS + { 'x', RLIMIT_LOCKS, 1, "file locks", (char *)NULL }, +#endif + { -1, -1, -1, (char *)NULL, (char *)NULL } +}; +#define NCMDS (sizeof(limits) / sizeof(limits[0])) + +typedef struct _cmd { + int cmd; + char *arg; +} ULCMD; + +static ULCMD *cmdlist; +static int ncmd; +static int cmdlistsz; + +#if !defined (HAVE_RESOURCE) && !defined (HAVE_ULIMIT) +long +ulimit (cmd, newlim) + int cmd; + long newlim; +{ + errno = EINVAL; + return -1; +} +#endif /* !HAVE_RESOURCE && !HAVE_ULIMIT */ + +static int +_findlim (opt) + int opt; +{ + register int i; + + for (i = 0; limits[i].option > 0; i++) + if (limits[i].option == opt) + return i; + return -1; +} + +static char optstring[4 + 2 * NCMDS]; + +/* Report or set limits associated with certain per-process resources. + See the help documentation in builtins.c for a full description. */ +int +ulimit_builtin (list) + register WORD_LIST *list; +{ + register char *s; + int c, limind, mode, opt, all_limits; + + mode = 0; + + all_limits = 0; + + /* Idea stolen from pdksh -- build option string the first time called. */ + if (optstring[0] == 0) + { + s = optstring; + *s++ = 'a'; *s++ = 'S'; *s++ = 'H'; + for (c = 0; limits[c].option > 0; c++) + { + *s++ = limits[c].option; + *s++ = ';'; + } + *s = '\0'; + } + + /* Initialize the command list. */ + if (cmdlistsz == 0) + cmdlist = (ULCMD *)xmalloc ((cmdlistsz = 16) * sizeof (ULCMD)); + ncmd = 0; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, optstring)) != -1) + { + switch (opt) + { + case 'a': + all_limits++; + break; + + /* -S and -H are modifiers, not real options. */ + case 'S': + mode |= LIMIT_SOFT; + break; + + case 'H': + mode |= LIMIT_HARD; + break; + + case '?': + builtin_usage (); + return (EX_USAGE); + + default: + if (ncmd >= cmdlistsz) + cmdlist = (ULCMD *)xrealloc (cmdlist, (cmdlistsz *= 2) * sizeof (ULCMD)); + cmdlist[ncmd].cmd = opt; + cmdlist[ncmd++].arg = list_optarg; + break; + } + } + list = loptend; + + if (all_limits) + { +#ifdef NOTYET + if (list) /* setting */ + { + if (STREQ (list->word->word, "unlimited") == 0) + { + builtin_error (_("%s: invalid limit argument"), list->word->word); + return (EXECUTION_FAILURE); + } + return (set_all_limits (mode == 0 ? LIMIT_SOFT|LIMIT_HARD : mode, RLIM_INFINITY)); + } +#endif + print_all_limits (mode == 0 ? LIMIT_SOFT : mode); + return (EXECUTION_SUCCESS); + } + + /* default is `ulimit -f' */ + if (ncmd == 0) + { + cmdlist[ncmd].cmd = 'f'; + /* `ulimit something' is same as `ulimit -f something' */ + cmdlist[ncmd++].arg = list ? list->word->word : (char *)NULL; + if (list) + list = list->next; + } + + /* verify each command in the list. */ + for (c = 0; c < ncmd; c++) + { + limind = _findlim (cmdlist[c].cmd); + if (limind == -1) + { + builtin_error (_("`%c': bad command"), cmdlist[c].cmd); + return (EX_USAGE); + } + } + + for (c = 0; c < ncmd; c++) + if (ulimit_internal (cmdlist[c].cmd, cmdlist[c].arg, mode, ncmd > 1) == EXECUTION_FAILURE) + return (EXECUTION_FAILURE); + + return (EXECUTION_SUCCESS); +} + +static int +ulimit_internal (cmd, cmdarg, mode, multiple) + int cmd; + char *cmdarg; + int mode, multiple; +{ + int opt, limind, setting; + int block_factor; + RLIMTYPE soft_limit, hard_limit, real_limit, limit; + + setting = cmdarg != 0; + limind = _findlim (cmd); + if (mode == 0) + mode = setting ? (LIMIT_HARD|LIMIT_SOFT) : LIMIT_SOFT; + opt = get_limit (limind, &soft_limit, &hard_limit); + if (opt < 0) + { + builtin_error (_("%s: cannot get limit: %s"), limits[limind].description, + strerror (errno)); + return (EXECUTION_FAILURE); + } + + if (setting == 0) /* print the value of the specified limit */ + { + printone (limind, (mode & LIMIT_SOFT) ? soft_limit : hard_limit, multiple); + return (EXECUTION_SUCCESS); + } + + /* Setting the limit. */ + if (STREQ (cmdarg, "hard")) + real_limit = hard_limit; + else if (STREQ (cmdarg, "soft")) + real_limit = soft_limit; + else if (STREQ (cmdarg, "unlimited")) + real_limit = RLIM_INFINITY; + else if (all_digits (cmdarg)) + { + limit = string_to_rlimtype (cmdarg); + block_factor = limits[limind].block_factor; + real_limit = limit * block_factor; + + if ((real_limit / block_factor) != limit) + { + sh_erange (cmdarg, "limit"); + return (EXECUTION_FAILURE); + } + } + else + { + sh_invalidnum (cmdarg); + return (EXECUTION_FAILURE); + } + + if (set_limit (limind, real_limit, mode) < 0) + { + builtin_error (_("%s: cannot modify limit: %s"), limits[limind].description, + strerror (errno)); + return (EXECUTION_FAILURE); + } + + return (EXECUTION_SUCCESS); +} + +static int +get_limit (ind, softlim, hardlim) + int ind; + RLIMTYPE *softlim, *hardlim; +{ + RLIMTYPE value; +#if defined (HAVE_RESOURCE) + struct rlimit limit; +#endif + + if (limits[ind].parameter >= 256) + { + switch (limits[ind].parameter) + { + case RLIMIT_FILESIZE: + if (filesize (&value) < 0) + return -1; + break; + case RLIMIT_PIPESIZE: + if (pipesize (&value) < 0) + return -1; + break; + case RLIMIT_OPENFILES: + value = (RLIMTYPE)getdtablesize (); + break; + case RLIMIT_VIRTMEM: + return (getmaxvm (softlim, hardlim)); + case RLIMIT_MAXUPROC: + if (getmaxuprc (&value) < 0) + return -1; + break; + default: + errno = EINVAL; + return -1; + } + *softlim = *hardlim = value; + return (0); + } + else + { +#if defined (HAVE_RESOURCE) + if (getrlimit (limits[ind].parameter, &limit) < 0) + return -1; + *softlim = limit.rlim_cur; + *hardlim = limit.rlim_max; +# if defined (HPUX9) + if (limits[ind].parameter == RLIMIT_FILESIZE) + { + *softlim *= 512; + *hardlim *= 512; /* Ugh. */ + } + else +# endif /* HPUX9 */ + return 0; +#else + errno = EINVAL; + return -1; +#endif + } +} + +static int +set_limit (ind, newlim, mode) + int ind; + RLIMTYPE newlim; + int mode; +{ +#if defined (HAVE_RESOURCE) + struct rlimit limit; + RLIMTYPE val; +#endif + + if (limits[ind].parameter >= 256) + switch (limits[ind].parameter) + { + case RLIMIT_FILESIZE: +#if !defined (HAVE_RESOURCE) + return (ulimit (2, newlim / 512L)); +#else + errno = EINVAL; + return -1; +#endif + + case RLIMIT_OPENFILES: +#if defined (HAVE_SETDTABLESIZE) +# if defined (__CYGWIN__) + /* Grrr... Cygwin declares setdtablesize as void. */ + setdtablesize (newlim); + return 0; +# else + return (setdtablesize (newlim)); +# endif +#endif + case RLIMIT_PIPESIZE: + case RLIMIT_VIRTMEM: + case RLIMIT_MAXUPROC: + default: + errno = EINVAL; + return -1; + } + else + { +#if defined (HAVE_RESOURCE) + if (getrlimit (limits[ind].parameter, &limit) < 0) + return -1; +# if defined (HPUX9) + if (limits[ind].parameter == RLIMIT_FILESIZE) + newlim /= 512; /* Ugh. */ +# endif /* HPUX9 */ + val = (current_user.euid != 0 && newlim == RLIM_INFINITY && + (mode & LIMIT_HARD) == 0 && /* XXX -- test */ + (limit.rlim_cur <= limit.rlim_max)) + ? limit.rlim_max : newlim; + if (mode & LIMIT_SOFT) + limit.rlim_cur = val; + if (mode & LIMIT_HARD) + limit.rlim_max = val; + + return (setrlimit (limits[ind].parameter, &limit)); +#else + errno = EINVAL; + return -1; +#endif + } +} + +static int +getmaxvm (softlim, hardlim) + RLIMTYPE *softlim, *hardlim; +{ +#if defined (HAVE_RESOURCE) + struct rlimit datalim, stacklim; + + if (getrlimit (RLIMIT_DATA, &datalim) < 0) + return -1; + + if (getrlimit (RLIMIT_STACK, &stacklim) < 0) + return -1; + + /* Protect against overflow. */ + *softlim = (datalim.rlim_cur / 1024L) + (stacklim.rlim_cur / 1024L); + *hardlim = (datalim.rlim_max / 1024L) + (stacklim.rlim_max / 1024L); + return 0; +#else + errno = EINVAL; + return -1; +#endif /* HAVE_RESOURCE */ +} + +static int +filesize(valuep) + RLIMTYPE *valuep; +{ +#if !defined (HAVE_RESOURCE) + long result; + if ((result = ulimit (1, 0L)) < 0) + return -1; + else + *valuep = (RLIMTYPE) result * 512; + return 0; +#else + errno = EINVAL; + return -1; +#endif +} + +static int +pipesize (valuep) + RLIMTYPE *valuep; +{ +#if defined (PIPE_BUF) + /* This is defined on Posix systems. */ + *valuep = (RLIMTYPE) PIPE_BUF; + return 0; +#else +# if defined (_POSIX_PIPE_BUF) + *valuep = (RLIMTYPE) _POSIX_PIPE_BUF; + return 0; +# else +# if defined (PIPESIZE) + /* This is defined by running a program from the Makefile. */ + *valuep = (RLIMTYPE) PIPESIZE; + return 0; +# else + errno = EINVAL; + return -1; +# endif /* PIPESIZE */ +# endif /* _POSIX_PIPE_BUF */ +#endif /* PIPE_BUF */ +} + +static int +getmaxuprc (valuep) + RLIMTYPE *valuep; +{ + long maxchild; + + maxchild = getmaxchild (); + if (maxchild < 0) + { + errno = EINVAL; + return -1; + } + else + { + *valuep = (RLIMTYPE) maxchild; + return 0; + } +} + +static void +print_all_limits (mode) + int mode; +{ + register int i; + RLIMTYPE softlim, hardlim; + + if (mode == 0) + mode |= LIMIT_SOFT; + + for (i = 0; limits[i].option > 0; i++) + { + if (get_limit (i, &softlim, &hardlim) == 0) + printone (i, (mode & LIMIT_SOFT) ? softlim : hardlim, 1); + else if (errno != EINVAL) + builtin_error ("%s: cannot get limit: %s", limits[i].description, + strerror (errno)); + } +} + +static void +printone (limind, curlim, pdesc) + int limind; + RLIMTYPE curlim; + int pdesc; +{ + char unitstr[64]; + + if (pdesc) + { + if (limits[limind].units) + sprintf (unitstr, "(%s, -%c) ", limits[limind].units, limits[limind].option); + else + sprintf (unitstr, "(-%c) ", limits[limind].option); + + printf ("%-20s %16s", limits[limind].description, unitstr); + } + if (curlim == RLIM_INFINITY) + puts ("unlimited"); + else if (curlim == RLIM_SAVED_MAX) + puts ("hard"); + else if (curlim == RLIM_SAVED_CUR) + puts ("soft"); + else + print_rlimtype ((curlim / limits[limind].block_factor), 1); +} + +/* Set all limits to NEWLIM. NEWLIM currently must be RLIM_INFINITY, which + causes all limits to be set as high as possible depending on mode (like + csh `unlimit'). Returns -1 if NEWLIM is invalid, 0 if all limits + were set successfully, and 1 if at least one limit could not be set. + + To raise all soft limits to their corresponding hard limits, use + ulimit -S -a unlimited + To attempt to raise all hard limits to infinity (superuser-only), use + ulimit -H -a unlimited + To attempt to raise all soft and hard limits to infinity, use + ulimit -a unlimited +*/ + +static int +set_all_limits (mode, newlim) + int mode; + RLIMTYPE newlim; +{ + register int i; + int retval = 0; + + if (newlim != RLIM_INFINITY) + { + errno = EINVAL; + return -1; + } + + if (mode == 0) + mode = LIMIT_SOFT|LIMIT_HARD; + + for (retval = i = 0; limits[i].option > 0; i++) + if (set_limit (i, newlim, mode) < 0) + { + builtin_error ("%s: cannot modify limit: %s", limits[i].description, + strerror (errno)); + retval = 1; + } + return retval; +} + +#endif /* !_MINIX */ diff --git a/bash-20060316/builtins/umask.def b/bash-20060316/builtins/umask.def new file mode 100644 index 000000000..489ca3305 --- /dev/null +++ b/bash-20060316/builtins/umask.def @@ -0,0 +1,311 @@ +This file is umask.def, from which is created umask.c. +It implements the builtin "umask" in Bash. + +Copyright (C) 1987-2004 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES umask.c + +$BUILTIN umask +$FUNCTION umask_builtin +$SHORT_DOC umask [-p] [-S] [mode] +The user file-creation mask is set to MODE. If MODE is omitted, or if +`-S' is supplied, the current value of the mask is printed. The `-S' +option makes the output symbolic; otherwise an octal number is output. +If `-p' is supplied, and MODE is omitted, the output is in a form +that may be used as input. If MODE begins with a digit, it is +interpreted as an octal number, otherwise it is a symbolic mode string +like that accepted by chmod(1). +$END + +#include + +#include "../bashtypes.h" +#include "filecntl.h" +#if ! defined(_MINIX) && defined (HAVE_SYS_FILE_H) +# include +#endif + +#if defined (HAVE_UNISTD_H) +#include +#endif + +#include +#include + +#include "../bashintl.h" + +#include "../shell.h" +#include "posixstat.h" +#include "common.h" +#include "bashgetopt.h" + +#ifdef __LCC__ +#define mode_t int +#endif + +/* **************************************************************** */ +/* */ +/* UMASK Builtin and Helpers */ +/* */ +/* **************************************************************** */ + +static void print_symbolic_umask __P((mode_t)); +static int symbolic_umask __P((WORD_LIST *)); + +/* Set or display the mask used by the system when creating files. Flag + of -S means display the umask in a symbolic mode. */ +int +umask_builtin (list) + WORD_LIST *list; +{ + int print_symbolically, opt, umask_value, pflag; + mode_t umask_arg; + + print_symbolically = pflag = 0; + reset_internal_getopt (); + while ((opt = internal_getopt (list, "Sp")) != -1) + { + switch (opt) + { + case 'S': + print_symbolically++; + break; + case 'p': + pflag++; + break; + default: + builtin_usage (); + return (EX_USAGE); + } + } + + list = loptend; + + if (list) + { + if (DIGIT (*list->word->word)) + { + umask_value = read_octal (list->word->word); + + /* Note that other shells just let you set the umask to zero + by specifying a number out of range. This is a problem + with those shells. We don't change the umask if the input + is lousy. */ + if (umask_value == -1) + { + sh_erange (list->word->word, _("octal number")); + return (EXECUTION_FAILURE); + } + } + else + { + umask_value = symbolic_umask (list); + if (umask_value == -1) + return (EXECUTION_FAILURE); + } + umask_arg = (mode_t)umask_value; + umask (umask_arg); + if (print_symbolically) + print_symbolic_umask (umask_arg); + } + else /* Display the UMASK for this user. */ + { + umask_arg = umask (022); + umask (umask_arg); + + if (pflag) + printf ("umask%s ", (print_symbolically ? " -S" : "")); + if (print_symbolically) + print_symbolic_umask (umask_arg); + else + printf ("%04lo\n", (unsigned long)umask_arg); + } + + fflush (stdout); + return (EXECUTION_SUCCESS); +} + +/* Print the umask in a symbolic form. In the output, a letter is + printed if the corresponding bit is clear in the umask. */ +static void +print_symbolic_umask (um) + mode_t um; +{ + char ubits[4], gbits[4], obits[4]; /* u=rwx,g=rwx,o=rwx */ + int i; + + i = 0; + if ((um & S_IRUSR) == 0) + ubits[i++] = 'r'; + if ((um & S_IWUSR) == 0) + ubits[i++] = 'w'; + if ((um & S_IXUSR) == 0) + ubits[i++] = 'x'; + ubits[i] = '\0'; + + i = 0; + if ((um & S_IRGRP) == 0) + gbits[i++] = 'r'; + if ((um & S_IWGRP) == 0) + gbits[i++] = 'w'; + if ((um & S_IXGRP) == 0) + gbits[i++] = 'x'; + gbits[i] = '\0'; + + i = 0; + if ((um & S_IROTH) == 0) + obits[i++] = 'r'; + if ((um & S_IWOTH) == 0) + obits[i++] = 'w'; + if ((um & S_IXOTH) == 0) + obits[i++] = 'x'; + obits[i] = '\0'; + + printf ("u=%s,g=%s,o=%s\n", ubits, gbits, obits); +} + +int +parse_symbolic_mode (mode, initial_bits) + char *mode; + int initial_bits; +{ + int who, op, perm, bits, c; + char *s; + + for (s = mode, bits = initial_bits;;) + { + who = op = perm = 0; + + /* Parse the `who' portion of the symbolic mode clause. */ + while (member (*s, "agou")) + { + switch (c = *s++) + { + case 'u': + who |= S_IRWXU; + continue; + case 'g': + who |= S_IRWXG; + continue; + case 'o': + who |= S_IRWXO; + continue; + case 'a': + who |= S_IRWXU | S_IRWXG | S_IRWXO; + continue; + default: + break; + } + } + + /* The operation is now sitting in *s. */ + op = *s++; + switch (op) + { + case '+': + case '-': + case '=': + break; + default: + builtin_error (_("`%c': invalid symbolic mode operator"), op); + return (-1); + } + + /* Parse out the `perm' section of the symbolic mode clause. */ + while (member (*s, "rwx")) + { + c = *s++; + + switch (c) + { + case 'r': + perm |= S_IRUGO; + break; + case 'w': + perm |= S_IWUGO; + break; + case 'x': + perm |= S_IXUGO; + break; + } + } + + /* Now perform the operation or return an error for a + bad permission string. */ + if (!*s || *s == ',') + { + if (who) + perm &= who; + + switch (op) + { + case '+': + bits |= perm; + break; + case '-': + bits &= ~perm; + break; + case '=': + if (who == 0) + who = S_IRWXU | S_IRWXG | S_IRWXO; + bits &= ~who; + bits |= perm; + break; + + /* No other values are possible. */ + } + + if (*s == '\0') + break; + else + s++; /* skip past ',' */ + } + else + { + builtin_error (_("`%c': invalid symbolic mode character"), *s); + return (-1); + } + } + + return (bits); +} + +/* Set the umask from a symbolic mode string similar to that accepted + by chmod. If the -S argument is given, then print the umask in a + symbolic form. */ +static int +symbolic_umask (list) + WORD_LIST *list; +{ + int um, bits; + + /* Get the initial umask. Don't change it yet. */ + um = umask (022); + umask (um); + + /* All work is done with the complement of the umask -- it's + more intuitive and easier to deal with. It is complemented + again before being returned. */ + bits = parse_symbolic_mode (list->word->word, ~um & 0777); + if (bits == -1) + return (-1); + + um = ~bits & 0777; + return (um); +} diff --git a/bash-20060316/builtins/wait.def b/bash-20060316/builtins/wait.def new file mode 100644 index 000000000..22a92bea0 --- /dev/null +++ b/bash-20060316/builtins/wait.def @@ -0,0 +1,177 @@ +This file is wait.def, from which is created wait.c. +It implements the builtin "wait" in Bash. + +Copyright (C) 1987-2005 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$BUILTIN wait +$FUNCTION wait_builtin +$DEPENDS_ON JOB_CONTROL +$PRODUCES wait.c +$SHORT_DOC wait [n] +Wait for the specified process and report its termination status. If +N is not given, all currently active child processes are waited for, +and the return code is zero. N may be a process ID or a job +specification; if a job spec is given, all processes in the job's +pipeline are waited for. +$END + +$BUILTIN wait +$FUNCTION wait_builtin +$DEPENDS_ON !JOB_CONTROL +$SHORT_DOC wait [n] +Wait for the specified process and report its termination status. If +N is not given, all currently active child processes are waited for, +and the return code is zero. N is a process ID; if it is not given, +all child processes of the shell are waited for. +$END + +#include + +#include "../bashtypes.h" +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include + +#include "../bashansi.h" + +#include "../shell.h" +#include "../jobs.h" +#include "common.h" +#include "bashgetopt.h" + +extern int interrupt_immediately; +extern int wait_signal_received; + +procenv_t wait_intr_buf; + +/* Wait for the pid in LIST to stop or die. If no arguments are given, then + wait for all of the active background processes of the shell and return + 0. If a list of pids or job specs are given, return the exit status of + the last one waited for. */ + +#define WAIT_RETURN(s) \ + do \ + { \ + interrupt_immediately = old_interrupt_immediately;\ + return (s);\ + } \ + while (0) + +int +wait_builtin (list) + WORD_LIST *list; +{ + int status, code; + volatile int old_interrupt_immediately; + + USE_VAR(list); + + if (no_options (list)) + return (EX_USAGE); + list = loptend; + + old_interrupt_immediately = interrupt_immediately; + interrupt_immediately++; + + /* 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 + which a trap has been set shall cause the wait utility to return + immediately with an exit status greater than 128, after which the trap + associated with the signal shall be taken. + + We handle SIGINT here; it's the only one that needs to be treated + specially (I think), since it's handled specially in {no,}jobs.c. */ + code = setjmp (wait_intr_buf); + if (code) + { + status = 128 + wait_signal_received; + WAIT_RETURN (status); + } + + /* We support jobs or pids. + wait [pid-or-job ...] */ + + /* But wait without any arguments means to wait for all of the shell's + currently active background processes. */ + if (list == 0) + { + wait_for_background_pids (); + WAIT_RETURN (EXECUTION_SUCCESS); + } + + status = EXECUTION_SUCCESS; + while (list) + { + pid_t pid; + char *w; + intmax_t pid_value; + + w = list->word->word; + if (DIGIT (*w)) + { + if (legal_number (w, &pid_value) && pid_value == (pid_t)pid_value) + { + pid = (pid_t)pid_value; + status = wait_for_single_pid (pid); + } + else + { + sh_badpid (w); + WAIT_RETURN (EXECUTION_FAILURE); + } + } +#if defined (JOB_CONTROL) + else if (*w && *w == '%') + /* Must be a job spec. Check it out. */ + { + int job; + sigset_t set, oset; + + BLOCK_CHILD (set, oset); + job = get_job_spec (list); + + if (INVALID_JOB (job)) + { + if (job != DUP_JOB) + sh_badjob (list->word->word); + UNBLOCK_CHILD (oset); + status = 127; /* As per Posix.2, section 4.70.2 */ + list = list->next; + continue; + } + + /* Job spec used. Wait for the last pid in the pipeline. */ + UNBLOCK_CHILD (oset); + status = wait_for_job (job); + } +#endif /* JOB_CONTROL */ + else + { + sh_badpid (w); + status = EXECUTION_FAILURE; + } + list = list->next; + } + + WAIT_RETURN (status); +} diff --git a/bash-20060316/builtins/xkill.def b/bash-20060316/builtins/xkill.def new file mode 100644 index 000000000..de1a3edfc --- /dev/null +++ b/bash-20060316/builtins/xkill.def @@ -0,0 +1,249 @@ +This file is kill.def, from which is created kill.c. +It implements the builtin "kill" in Bash. + +Copyright (C) 1987-2003 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +$PRODUCES kill.c + +$BUILTIN kill +$FUNCTION kill_builtin +$SHORT_DOC kill [-s sigspec | -n signum | -sigspec] [pid | job]... or kill -l [sigspec] +$_ "Send the processes named by PID (or JOB) the signal SIGSPEC. If" +$_ "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'" +$_ "lists the signal names; if arguments follow `-l' they are assumed to" +$_ "be signal numbers for which names should be listed. Kill is a shell" +$_ "builtin for two reasons: it allows job IDs to be used instead of" +$_ "process IDs, and, if you have reached the limit on processes that" +$_ "you can create, you don't have to start a process to kill another one." +$END + +#include + +#include +#include +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include "../bashansi.h" + +#include "../shell.h" +#include "../trap.h" +#include "../jobs.h" +#include "common.h" + +/* Not all systems declare ERRNO in errno.h... and some systems #define it! */ +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +extern int posixly_correct; + +static void kill_error __P((pid_t, int)); + +#if !defined (CONTINUE_AFTER_KILL_ERROR) +# define CONTINUE_OR_FAIL return (EXECUTION_FAILURE) +#else +# define CONTINUE_OR_FAIL goto continue_killing +#endif /* CONTINUE_AFTER_KILL_ERROR */ + +/* Here is the kill builtin. We only have it so that people can type + kill -KILL %1? No, if you fill up the process table this way you + can still kill some. */ +int +kill_builtin (list) + WORD_LIST *list; +{ + int sig, any_succeeded, listing, saw_signal, dflags; + char *sigspec, *word; + pid_t pid; + intmax_t pid_value; + + if (list == 0) + { + builtin_usage (); + return (EXECUTION_FAILURE); + } + + any_succeeded = listing = saw_signal = 0; + sig = SIGTERM; + sigspec = "TERM"; + + dflags = DSIG_NOCASE | ((posixly_correct == 0) ? DSIG_SIGPREFIX : 0); + /* Process options. */ + while (list) + { + word = list->word->word; + + if (ISOPTION (word, 'l')) + { + listing++; + list = list->next; + } + else if (ISOPTION (word, 's') || ISOPTION (word, 'n')) + { + list = list->next; + if (list) + { + sigspec = list->word->word; + if (sigspec[0] == '0' && sigspec[1] == '\0') + sig = 0; + else + sig = decode_signal (sigspec, dflags); + list = list->next; + } + else + { + sh_needarg (word); + return (EXECUTION_FAILURE); + } + } + else if (ISOPTION (word, '-')) + { + list = list->next; + break; + } + else if (ISOPTION (word, '?')) + { + builtin_usage (); + return (EXECUTION_SUCCESS); + } + /* If this is a signal specification then process it. We only process + the first one seen; other arguments may signify process groups (e.g, + -num == process group num). */ + else if ((*word == '-') && !saw_signal) + { + sigspec = word + 1; + sig = decode_signal (sigspec, dflags); + saw_signal++; + list = list->next; + } + else + break; + } + + if (listing) + return (display_signal_list (list, 0)); + + /* OK, we are killing processes. */ + if (sig == NO_SIG) + { + sh_invalidsig (sigspec); + return (EXECUTION_FAILURE); + } + + if (list == 0) + { + builtin_usage (); + return (EXECUTION_FAILURE); + } + + while (list) + { + word = list->word->word; + + if (*word == '-') + word++; + + /* Use the entire argument in case of minus sign presence. */ + if (*word && legal_number (list->word->word, &pid_value) && (pid_value == (pid_t)pid_value)) + { + pid = (pid_t) pid_value; + + if ((pid < -1 ? kill_pid (-pid, sig, 1) : kill_pid (pid, sig, 0)) < 0) + { + if (errno == EINVAL) + sh_invalidsig (sigspec); + else + kill_error (pid, errno); + CONTINUE_OR_FAIL; + } + else + any_succeeded++; + } +#if defined (JOB_CONTROL) + else if (*list->word->word && *list->word->word != '%') + { + builtin_error ("%s: arguments must be process or job IDs", list->word->word); + CONTINUE_OR_FAIL; + } + else if (*word && (interactive || job_control)) + /* Posix.2 says you can kill without job control active (4.32.4) */ + { /* Must be a job spec. Check it out. */ + int job; + sigset_t set, oset; + + BLOCK_CHILD (set, oset); + job = get_job_spec (list); + + if (job < 0 || job >= job_slots || !jobs[job]) + { + if (job != DUP_JOB) + sh_badjob (list->word->word); + UNBLOCK_CHILD (oset); + CONTINUE_OR_FAIL; + } + + /* Job spec used. Kill the process group. If the job was started + without job control, then its pgrp == shell_pgrp, so we have + to be careful. We take the pid of the first job in the pipeline + in that case. */ + pid = IS_JOBCONTROL (job) ? jobs[job]->pgrp : jobs[job]->pipe->pid; + + UNBLOCK_CHILD (oset); + + if (kill_pid (pid, sig, 1) < 0) + { + if (errno == EINVAL) + sh_invalidsig (sigspec); + else + kill_error (pid, errno); + CONTINUE_OR_FAIL; + } + else + any_succeeded++; + } +#endif /* !JOB_CONTROL */ + else + { + sh_badpid (list->word->word); + CONTINUE_OR_FAIL; + } + continue_killing: + list = list->next; + } + + return (any_succeeded ? EXECUTION_SUCCESS : EXECUTION_FAILURE); +} + +static void +kill_error (pid, e) + pid_t pid; + int e; +{ + char *x; + + x = strerror (e); + if (x == 0) + x = "Unknown error"; + builtin_error ("(%ld) - %s", (long)pid, x); +} diff --git a/bash-20060316/command.h b/bash-20060316/command.h new file mode 100644 index 000000000..75e4990d0 --- /dev/null +++ b/bash-20060316/command.h @@ -0,0 +1,346 @@ +/* command.h -- The structures used internally to represent commands, and + the extern declarations of the functions used to create them. */ + +/* Copyright (C) 1993-2005 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#if !defined (_COMMAND_H_) +#define _COMMAND_H_ + +#include "stdc.h" + +/* Instructions describing what kind of thing to do for a redirection. */ +enum r_instruction { + r_output_direction, r_input_direction, r_inputa_direction, + r_appending_to, r_reading_until, r_reading_string, + r_duplicating_input, r_duplicating_output, r_deblank_reading_until, + r_close_this, r_err_and_out, r_input_output, r_output_force, + r_duplicating_input_word, r_duplicating_output_word, + r_move_input, r_move_output, r_move_input_word, r_move_output_word +}; + +/* Redirection errors. */ +#define AMBIGUOUS_REDIRECT -1 +#define NOCLOBBER_REDIRECT -2 +#define RESTRICTED_REDIRECT -3 /* can only happen in restricted shells. */ +#define HEREDOC_REDIRECT -4 /* here-doc temp file can't be created */ + +#define CLOBBERING_REDIRECT(ri) \ + (ri == r_output_direction || ri == r_err_and_out) + +#define OUTPUT_REDIRECT(ri) \ + (ri == r_output_direction || ri == r_input_output || ri == r_err_and_out) + +#define INPUT_REDIRECT(ri) \ + (ri == r_input_direction || ri == r_inputa_direction || ri == r_input_output) + +#define WRITE_REDIRECT(ri) \ + (ri == r_output_direction || \ + ri == r_input_output || \ + ri == r_err_and_out || \ + ri == r_appending_to || \ + ri == r_output_force) + +/* redirection needs translation */ +#define TRANSLATE_REDIRECT(ri) \ + (ri == r_duplicating_input_word || ri == r_duplicating_output_word || \ + ri == r_move_input_word || ri == r_move_output_word) + +/* Command Types: */ +enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select, + cm_connection, cm_function_def, cm_until, cm_group, + cm_arith, cm_cond, cm_arith_for, cm_subshell }; + +/* Possible values for the `flags' field of a WORD_DESC. */ +#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_NOSPLIT 0x000010 /* Do not perform word splitting on this word. */ +#define W_NOGLOB 0x000020 /* Do not perform globbing on this word. */ +#define W_NOSPLIT2 0x000040 /* Don't split word except for $@ expansion. */ +#define W_TILDEEXP 0x000080 /* Tilde expand this assignment word */ +#define W_DOLLARAT 0x000100 /* $@ and its special handling */ +#define W_DOLLARSTAR 0x000200 /* $* and its special handling */ +#define W_NOCOMSUB 0x000400 /* Don't perform command substitution on this word */ +#define W_ASSIGNRHS 0x000800 /* Word is rhs of an assignment statement */ +#define W_NOTILDE 0x001000 /* Don't perform tilde expansion on this word */ +#define W_ITILDE 0x002000 /* Internal flag for word expansion */ +#define W_NOEXPAND 0x004000 /* Don't expand at all -- do quote removal */ +#define W_COMPASSIGN 0x008000 /* Compound assignment */ +#define W_ASSNBLTIN 0x010000 /* word is a builtin command that takes assignments */ +#define W_ASSIGNARG 0x020000 /* word is assignment argument to command */ +#define W_HASQUOTEDNULL 0x040000 /* word contains a quoted null character */ +#define W_DQUOTE 0x080000 /* word should be treated as if double-quoted */ +#define W_NOPROCSUB 0x100000 /* don't perform process substitution */ + +/* Possible values for subshell_environment */ +#define SUBSHELL_ASYNC 0x01 /* subshell caused by `command &' */ +#define SUBSHELL_PAREN 0x02 /* subshell caused by ( ... ) */ +#define SUBSHELL_COMSUB 0x04 /* subshell caused by `command` or $(command) */ +#define SUBSHELL_FORK 0x08 /* subshell caused by executing a disk command */ +#define SUBSHELL_PIPE 0x10 /* subshell from a pipeline element */ + +/* A structure which represents a word. */ +typedef struct word_desc { + char *word; /* Zero terminated string. */ + int flags; /* Flags associated with this word. */ +} WORD_DESC; + +/* A linked list of words. */ +typedef struct word_list { + struct word_list *next; + WORD_DESC *word; +} WORD_LIST; + + +/* **************************************************************** */ +/* */ +/* Shell Command Structs */ +/* */ +/* **************************************************************** */ + +/* What a redirection descriptor looks like. If the redirection instruction + is ri_duplicating_input or ri_duplicating_output, use DEST, otherwise + use the file in FILENAME. Out-of-range descriptors are identified by a + negative DEST. */ + +typedef union { + int dest; /* Place to redirect REDIRECTOR to, or ... */ + WORD_DESC *filename; /* filename to redirect to. */ +} REDIRECTEE; + +/* Structure describing a redirection. If REDIRECTOR is negative, the parser + (or translator in redir.c) encountered an out-of-range file descriptor. */ +typedef struct redirect { + struct redirect *next; /* Next element, or NULL. */ + int redirector; /* Descriptor to be redirected. */ + int flags; /* Flag value for `open'. */ + enum r_instruction instruction; /* What to do with the information. */ + REDIRECTEE redirectee; /* File descriptor or filename */ + char *here_doc_eof; /* The word that appeared in <flags. */ +#define CMD_WANT_SUBSHELL 0x01 /* User wants a subshell: ( command ) */ +#define CMD_FORCE_SUBSHELL 0x02 /* Shell needs to force a subshell. */ +#define CMD_INVERT_RETURN 0x04 /* Invert the exit value. */ +#define CMD_IGNORE_RETURN 0x08 /* Ignore the exit value. For set -e. */ +#define CMD_NO_FUNCTIONS 0x10 /* Ignore functions during command lookup. */ +#define CMD_INHIBIT_EXPANSION 0x20 /* Do not expand the command words. */ +#define CMD_NO_FORK 0x40 /* Don't fork; just call execve */ +#define CMD_TIME_PIPELINE 0x80 /* Time a pipeline */ +#define CMD_TIME_POSIX 0x100 /* time -p; use POSIX.2 time output spec. */ +#define CMD_AMPERSAND 0x200 /* command & */ +#define CMD_STDIN_REDIR 0x400 /* async command needs implicit must be included before . */ +#if defined (HAVE_WCTYPE_H) && defined (HAVE_WCHAR_H) +# include +# include +# if defined (HAVE_MBSRTOWCS) && defined (HAVE_MBRTOWC) && defined (HAVE_MBRLEN) && defined (HAVE_WCWIDTH) && defined (HAVE_WCTYPE) + /* system is supposed to support XPG5 */ +# define HANDLE_MULTIBYTE 1 +# endif +#endif + +/* If we don't want multibyte chars even on a system that supports them, let + the configuring user turn multibyte support off. */ +#if defined (NO_MULTIBYTE_SUPPORT) +# undef HANDLE_MULTIBYTE +#endif + +/* Some systems, like BeOS, have multibyte encodings but lack mbstate_t. */ +#if HANDLE_MULTIBYTE && !defined (HAVE_MBSTATE_T) +# define wcsrtombs(dest, src, len, ps) (wcsrtombs) (dest, src, len, 0) +# define mbsrtowcs(dest, src, len, ps) (mbsrtowcs) (dest, src, len, 0) +# define wcrtomb(s, wc, ps) (wcrtomb) (s, wc, 0) +# define mbrtowc(pwc, s, n, ps) (mbrtowc) (pwc, s, n, 0) +# define mbrlen(s, n, ps) (mbrlen) (s, n, 0) +# define mbstate_t int +#endif + +/* Make sure MB_LEN_MAX is at least 16 (some systems define + MB_LEN_MAX as 1) */ +#ifdef HANDLE_MULTIBYTE +# include +# if defined(MB_LEN_MAX) && (MB_LEN_MAX < 16) +# undef MB_LEN_MAX +# endif +# if !defined (MB_LEN_MAX) +# define MB_LEN_MAX 16 +# endif +#endif + +/************************************************/ +/* end of multibyte capability checks for I18N */ +/************************************************/ + +/******************************************************************/ +/* Placeholder for builders to #undef any unwanted features from */ +/* config-top.h or created by configure (such as the default mail */ +/* file for mail checking). */ +/******************************************************************/ + +/* If you don't want bash to provide a default mail file to check. */ +/* #undef DEFAULT_MAIL_DIRECTORY */ diff --git a/bash-20060316/config-top.h b/bash-20060316/config-top.h new file mode 100644 index 000000000..7a90b1615 --- /dev/null +++ b/bash-20060316/config-top.h @@ -0,0 +1,87 @@ +/* config-top.h */ + +/* This contains various user-settable options not under the control of + autoconf. */ + +/* Copyright (C) 2002 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +/* Define CONTINUE_AFTER_KILL_ERROR if you want the kill command to + continue processing arguments after one of them fails. This is + what POSIX.2 specifies. */ +#define CONTINUE_AFTER_KILL_ERROR + +/* Define BREAK_COMPLAINS if you want the non-standard, but useful + error messages about `break' and `continue' out of context. */ +#define BREAK_COMPLAINS + +/* Define BUFFERED_INPUT if you want the shell to do its own input + buffering, rather than using stdio. Do not undefine this; it's + required to preserve semantics required by POSIX. */ +#define BUFFERED_INPUT + +/* Define ONESHOT if you want sh -c 'command' to avoid forking to execute + `command' whenever possible. This is a big efficiency improvement. */ +#define ONESHOT + +/* Define V9_ECHO if you want to give the echo builtin backslash-escape + interpretation using the -e option, in the style of the Bell Labs 9th + Edition version of echo. You cannot emulate the System V echo behavior + without this option. */ +#define V9_ECHO + +/* Define DONT_REPORT_SIGPIPE if you don't want to see `Broken pipe' messages + when a job like `cat jobs.c | exit 1' is executed. */ +#define DONT_REPORT_SIGPIPE + +/* The default value of the PATH variable. */ +#ifndef DEFAULT_PATH_VALUE +#define DEFAULT_PATH_VALUE \ + "/usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:." +#endif + +/* The value for PATH when invoking `command -p'. This is only used when + the Posix.2 confstr () function, or CS_PATH define are not present. */ +#ifndef STANDARD_UTILS_PATH +#define STANDARD_UTILS_PATH \ + "/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/etc" +#endif + +/* Default primary and secondary prompt strings. */ +#define PPROMPT "\\s-\\v\\$ " +#define SPROMPT "> " + +/* Undefine this if you don't want the ksh-compatible behavior of reprinting + the select menu after a valid choice is made only if REPLY is set to NULL + in the body of the select command. The menu is always reprinted if the + reply to the select query is an empty line. */ +#define KSH_COMPATIBLE_SELECT + +/* System-wide .bashrc file for interactive shells. */ +/* #define SYS_BASHRC "/etc/bash.bashrc" */ + +/* System-wide .bash_logout for login shells. */ +/* #define SYS_BASH_LOGOUT "/etc/bash.bash_logout" */ + +/* Define this to make non-interactive shells begun with argv[0][0] == '-' + run the startup files when not in posix mode. */ +/* #define NON_INTERACTIVE_LOGIN_SHELLS */ + +/* Define this if you want bash to try to check whether it's being run by + sshd and source the .bashrc if so (like the rshd behavior). */ +/* #define SSH_SOURCE_BASHRC */ diff --git a/bash-20060316/config.h.in b/bash-20060316/config.h.in new file mode 100644 index 000000000..4ce6d8c5a --- /dev/null +++ b/bash-20060316/config.h.in @@ -0,0 +1,1016 @@ +/* config.h -- Configuration file for bash. */ + +/* Copyright (C) 1987-2004 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + Bash is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with Bash; see the file COPYING. If not, write to the Free + Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#ifndef _CONFIG_H_ +#define _CONFIG_H_ + +/* Configuration feature settings controllable by autoconf. */ + +/* Define JOB_CONTROL if your operating system supports + BSD-like job control. */ +#undef JOB_CONTROL + +/* Define ALIAS if you want the alias features. */ +#undef ALIAS + +/* Define PUSHD_AND_POPD if you want those commands to be compiled in. + (Also the `dirs' commands.) */ +#undef PUSHD_AND_POPD + +/* Define BRACE_EXPANSION if you want curly brace expansion a la Csh: + foo{a,b} -> fooa foob. Even if this is compiled in (the default) you + can turn it off at shell startup with `-nobraceexpansion', or during + shell execution with `set +o braceexpand'. */ +#undef BRACE_EXPANSION + +/* Define READLINE to get the nifty/glitzy editing features. + This is on by default. You can turn it off interactively + with the -nolineediting flag. */ +#undef READLINE + +/* Define BANG_HISTORY if you want to have Csh style "!" history expansion. + This is unrelated to READLINE. */ +#undef BANG_HISTORY + +/* Define HISTORY if you want to have access to previously typed commands. + + If both HISTORY and READLINE are defined, you can get at the commands + with line editing commands, and you can directly manipulate the history + from the command line. + + If only HISTORY is defined, the `fc' and `history' builtins are + available. */ +#undef HISTORY + +/* Define this if you want completion that puts all alternatives into + a brace expansion shell expression. */ +#if defined (BRACE_EXPANSION) && defined (READLINE) +# define BRACE_COMPLETION +#endif /* BRACE_EXPANSION */ + +/* Define DEFAULT_ECHO_TO_XPG if you want the echo builtin to interpret + the backslash-escape characters by default, like the XPG Single Unix + Specification V2 for echo. + This requires that V9_ECHO be defined. */ +#undef DEFAULT_ECHO_TO_XPG + +/* Define HELP_BUILTIN if you want the `help' shell builtin and the long + documentation strings compiled into the shell. */ +#undef HELP_BUILTIN + +/* Define RESTRICTED_SHELL if you want the generated shell to have the + ability to be a restricted one. The shell thus generated can become + restricted by being run with the name "rbash", or by setting the -r + flag. */ +#undef RESTRICTED_SHELL + +/* Define DISABLED_BUILTINS if you want "builtin foo" to always run the + shell builtin "foo", even if it has been disabled with "enable -n foo". */ +#undef DISABLED_BUILTINS + +/* Define PROCESS_SUBSTITUTION if you want the K*rn shell-like process + substitution features "<(file)". */ +/* Right now, you cannot do this on machines without fully operational + FIFO support. This currently include NeXT and Alliant. */ +#undef PROCESS_SUBSTITUTION + +/* Define PROMPT_STRING_DECODE if you want the backslash-escaped special + characters in PS1 and PS2 expanded. Variable expansion will still be + performed. */ +#undef PROMPT_STRING_DECODE + +/* Define SELECT_COMMAND if you want the Korn-shell style `select' command: + select word in word_list; do command_list; done */ +#undef SELECT_COMMAND + +/* Define COMMAND_TIMING of you want the ksh-style `time' reserved word and + the ability to time pipelines, functions, and builtins. */ +#undef COMMAND_TIMING + +/* Define ARRAY_VARS if you want ksh-style one-dimensional array variables. */ +#undef ARRAY_VARS + +/* Define DPAREN_ARITHMETIC if you want the ksh-style ((...)) arithmetic + evaluation command. */ +#undef DPAREN_ARITHMETIC + +/* Define EXTENDED_GLOB if you want the ksh-style [*+@?!](patlist) extended + pattern matching. */ +#undef EXTENDED_GLOB + +/* Define COND_COMMAND if you want the ksh-style [[...]] conditional + command. */ +#undef COND_COMMAND + +/* Define COND_REGEXP if you want extended regular expression matching and the + =~ binary operator in the [[...]] conditional command. */ +#define COND_REGEXP + +/* Define ARITH_FOR_COMMAND if you want the ksh93-style + for (( init; test; step )) do list; done + arithmetic for command. */ +#undef ARITH_FOR_COMMAND + +/* Define NETWORK_REDIRECTIONS if you want /dev/(tcp|udp)/host/port to open + socket connections when used in redirections */ +#undef NETWORK_REDIRECTIONS + +/* Define PROGRAMMABLE_COMPLETION for the programmable completion features + and the complete builtin. */ +#undef PROGRAMMABLE_COMPLETION + +/* Define NO_MULTIBYTE_SUPPORT to not compile in support for multibyte + characters, even if the OS supports them. */ +#undef NO_MULTIBYTE_SUPPORT + +/* Define DEBUGGER if you want to compile in some features used only by the + bash debugger. */ +#undef DEBUGGER + +/* Define STRICT_POSIX if you want bash to be strictly posix.2 conformant by + default (except for echo; that is controlled separately). */ +#undef STRICT_POSIX + +/* Define MEMSCRAMBLE if you want the bash malloc and free to scramble + memory contents on malloc() and free(). */ +#undef MEMSCRAMBLE + +/* Define AFS if you are using Transarc's AFS. */ +#undef AFS + +#undef ENABLE_NLS + +/* End of configuration settings controllable by autoconf. */ +/* Other settable options appear in config-top.h. */ + +#include "config-top.h" + +/* Beginning of autoconf additions. */ + +/* Characteristics of the C compiler */ +#undef const + +#undef inline + +/* Define if cpp supports the ANSI-C stringizing `#' operator */ +#undef HAVE_STRINGIZE + +/* Define if the compiler supports `long double' variables. */ +#undef HAVE_LONG_DOUBLE + +#undef PROTOTYPES + +#undef __CHAR_UNSIGNED__ + +/* Define if the compiler supports `long long' variables. */ +#undef HAVE_LONG_LONG + +#undef HAVE_UNSIGNED_LONG_LONG + +/* The number of bytes in a int. */ +#undef SIZEOF_INT + +/* The number of bytes in a long. */ +#undef SIZEOF_LONG + +/* The number of bytes in a pointer to char. */ +#undef SIZEOF_CHAR_P + +/* The number of bytes in a double (hopefully 8). */ +#undef SIZEOF_DOUBLE + +/* The number of bytes in a `long long', if we have one. */ +#undef SIZEOF_LONG_LONG + +/* System paths */ + +#define DEFAULT_MAIL_DIRECTORY "/usr/spool/mail" + +/* Characteristics of the system's header files and libraries that affect + the compilation environment. */ + +/* Define if the system does not provide POSIX.1 features except + with this defined. */ +#undef _POSIX_1_SOURCE + +/* Define if you need to in order for stat and other things to work. */ +#undef _POSIX_SOURCE + +/* Define to use GNU libc extensions */ +#undef _GNU_SOURCE + +/* Define if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Memory management functions. */ + +/* Define if using the bash version of malloc in lib/malloc/malloc.c */ +#undef USING_BASH_MALLOC + +#undef DISABLE_MALLOC_WRAPPERS + +/* Define if using alloca.c. */ +#undef C_ALLOCA + +/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems. + This function is required for alloca.c support on those systems. */ +#undef CRAY_STACKSEG_END + +/* Define if you have alloca, as a function or macro. */ +#undef HAVE_ALLOCA + +/* Define if you have and it should be used (not on Ultrix). */ +#undef HAVE_ALLOCA_H + + +/* SYSTEM TYPES */ + +/* Define to `long' if doesn't define. */ +#undef off_t + +/* Define to `int' if doesn't define. */ +#undef mode_t + +/* Define to `int' if doesn't define. */ +#undef sigset_t + +/* Define to `int' if doesn't define. */ +#undef pid_t + +/* Define to `short' if doesn't define. */ +#undef bits16_t + +/* Define to `unsigned short' if doesn't define. */ +#undef u_bits16_t + +/* Define to `int' if doesn't define. */ +#undef bits32_t + +/* Define to `unsigned int' if doesn't define. */ +#undef u_bits32_t + +/* Define to `double' if doesn't define. */ +#undef bits64_t + +/* Define to `unsigned int' if doesn't define. */ +#undef u_int + +/* Define to `unsigned long' if doesn't define. */ +#undef u_long + +/* Define to `int' if doesn't define. */ +#undef ptrdiff_t + +/* Define to `unsigned' if doesn't define. */ +#undef size_t + +/* Define to `int' if doesn't define. */ +#undef ssize_t + +/* Define to `long' if doesn't define. */ +#undef intmax_t + +/* Define to `unsigned long' if doesn't define. */ +#undef uintmax_t + +/* Define to `int' if doesn't define. */ +#undef uid_t + +/* Define to `long' if doesn't define. */ +#undef clock_t + +/* Define to `long' if doesn't define. */ +#undef time_t + +/* Define to `int' if doesn't define. */ +#undef gid_t + +/* Define to `unsigned int' if doesn't define. */ +#undef socklen_t + +/* Define if you have quad_t in . */ +#undef HAVE_QUAD_T + +#undef RLIMTYPE + +/* Define to the type of elements in the array set by `getgroups'. + Usually this is either `int' or `gid_t'. */ +#undef GETGROUPS_T + +/* Characteristics of the machine archictecture. */ + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown + */ +#undef STACK_DIRECTION + +/* Define if the machine architecture is big-endian. */ +#undef WORDS_BIGENDIAN + +/* Check for the presence of certain non-function symbols in the system + libraries. */ + +/* Define if `sys_siglist' is declared by or . */ +#undef HAVE_DECL_SYS_SIGLIST +#undef SYS_SIGLIST_DECLARED + +/* Define if `_sys_siglist' is declared by or . */ +#undef UNDER_SYS_SIGLIST_DECLARED + +#undef HAVE_SYS_SIGLIST + +#undef HAVE_UNDER_SYS_SIGLIST + +#undef HAVE_SYS_ERRLIST + +#undef HAVE_TZNAME + + +/* Characteristics of some of the system structures. */ + +#undef HAVE_STRUCT_DIRENT_D_INO + +#undef HAVE_STRUCT_DIRENT_D_FILENO + +#undef HAVE_STRUCT_DIRENT_D_NAMLEN + +#undef TIOCSTAT_IN_SYS_IOCTL + +#undef FIONREAD_IN_SYS_IOCTL + +#undef GWINSZ_IN_SYS_IOCTL + +#undef STRUCT_WINSIZE_IN_SYS_IOCTL + +#undef TM_IN_SYS_TIME + +#undef STRUCT_WINSIZE_IN_TERMIOS + +#undef SPEED_T_IN_SYS_TYPES + +#undef TERMIOS_LDISC + +#undef TERMIO_LDISC + +#undef HAVE_STRUCT_STAT_ST_BLOCKS + +#undef HAVE_STRUCT_TM_TM_ZONE +#undef HAVE_TM_ZONE + +#undef HAVE_TIMEVAL + +#undef HAVE_STRUCT_TIMEZONE + +/* Characteristics of definitions in the system header files. */ + +#undef HAVE_GETPW_DECLS + +#undef HAVE_RESOURCE + +#undef HAVE_LIBC_FNM_EXTMATCH + +#undef HAVE_DECL_CONFSTR + +#undef HAVE_DECL_PRINTF + +#undef HAVE_DECL_SBRK + +#undef HAVE_DECL_STRCPY + +#undef HAVE_DECL_STRSIGNAL + +#undef HAVE_DECL_STRTOLD + +#undef STRTOLD_BROKEN + +#undef HAVE_MBSTATE_T + +/* Define if WCONTINUED is defined in system headers, but rejected by waitpid */ +#undef WCONTINUED_BROKEN + +/* These are checked with BASH_CHECK_DECL */ + +#undef HAVE_DECL_STRTOIMAX +#undef HAVE_DECL_STRTOL +#undef HAVE_DECL_STRTOLL +#undef HAVE_DECL_STRTOUL +#undef HAVE_DECL_STRTOULL +#undef HAVE_DECL_STRTOUMAX + +/* Characteristics of system calls and C library functions. */ + +/* Define if the `getpgrp' function takes no argument. */ +#undef GETPGRP_VOID + +#undef NAMED_PIPES_MISSING + +#undef OPENDIR_NOT_ROBUST + +#undef PGRP_PIPE + +/* Define if the setvbuf function takes the buffering type as its second + argument and the buffer pointer as the third, as on System V + before release 3. */ +#undef SETVBUF_REVERSED + +#undef STAT_MACROS_BROKEN + +#undef ULIMIT_MAXFDS + +#undef CAN_REDEFINE_GETENV + +#undef HAVE_STD_PUTENV + +#undef HAVE_STD_UNSETENV + +#undef HAVE_PRINTF_A_FORMAT + +#undef CTYPE_NON_ASCII + +/* Define if you have and nl_langinfo(CODESET). */ +#undef HAVE_LANGINFO_CODESET + +/* Characteristics of properties exported by the kernel. */ + +/* Define if the kernel can exec files beginning with #! */ +#undef HAVE_HASH_BANG_EXEC + +/* Define if you have the /dev/fd devices to map open files into the file system. */ +#undef HAVE_DEV_FD + +/* Defined to /dev/fd or /proc/self/fd (linux). */ +#undef DEV_FD_PREFIX + +/* Define if you have the /dev/stdin device. */ +#undef HAVE_DEV_STDIN + + +/* Type and behavior of signal handling functions. */ + +/* Define as the return type of signal handlers (int or void). */ +#undef RETSIGTYPE + +/* Define if return type of signal handlers is void */ +#undef VOID_SIGHANDLER + +#undef MUST_REINSTALL_SIGHANDLERS + +#undef HAVE_BSD_SIGNALS + +#undef HAVE_POSIX_SIGNALS + +#undef HAVE_USG_SIGHOLD + +#undef UNUSABLE_RT_SIGNALS + + +/* Presence of system and C library functions. */ + +/* Define if you have the asprintf function. */ +#undef HAVE_ASPRINTF + +/* Define if you have the bcopy function. */ +#undef HAVE_BCOPY + +/* Define if you have the bzero function. */ +#undef HAVE_BZERO + +/* Define if you have the confstr function. */ +#undef HAVE_CONFSTR + +/* Define if you have the dlclose function. */ +#undef HAVE_DLCLOSE + +/* Define if you have the dlopen function. */ +#undef HAVE_DLOPEN + +/* Define if you have the dlsym function. */ +#undef HAVE_DLSYM + +/* Define if you don't have vprintf but do have _doprnt. */ +#undef HAVE_DOPRNT + +/* Define if you have the dup2 function. */ +#undef HAVE_DUP2 + +/* Define if you have the eaccess function. */ +#undef HAVE_EACCESS + +/* Define if you have the fcntl function. */ +#undef HAVE_FCNTL + +/* Define if you have the getaddrinfo function. */ +#undef HAVE_GETADDRINFO + +/* Define if you have the getcwd function. */ +#undef HAVE_GETCWD + +/* Define if you have the getdtablesize function. */ +#undef HAVE_GETDTABLESIZE + +/* Define if you have the getgroups function. */ +#undef HAVE_GETGROUPS + +/* Define if you have the gethostbyname function. */ +#undef HAVE_GETHOSTBYNAME + +/* Define if you have the gethostname function. */ +#undef HAVE_GETHOSTNAME + +/* Define if you have the getpagesize function. */ +#undef HAVE_GETPAGESIZE + +/* Define if you have the getpeername function. */ +#undef HAVE_GETPEERNAME + +/* Define if you have the getpwent function. */ +#undef HAVE_GETPWENT + +/* Define if you have the getpwnam function. */ +#undef HAVE_GETPWNAM + +/* Define if you have the getpwuid function. */ +#undef HAVE_GETPWUID + +/* Define if you have the getrlimit function. */ +#undef HAVE_GETRLIMIT + +/* Define if you have the getrusage function. */ +#undef HAVE_GETRUSAGE + +/* Define if you have the getservbyname function. */ +#undef HAVE_GETSERVBYNAME + +/* Define if you have the getservent function. */ +#undef HAVE_GETSERVENT + +/* Define if you have the gettimeofday function. */ +#undef HAVE_GETTIMEOFDAY + +/* Define if you have the getwd function. */ +#undef HAVE_GETWD + +/* Define if you have the inet_aton function. */ +#undef HAVE_INET_ATON + +/* Define if you have the isascii function. */ +#undef HAVE_ISASCII + +/* Define if you have the isblank function. */ +#undef HAVE_ISBLANK + +/* Define if you have the isgraph function. */ +#undef HAVE_ISGRAPH + +/* Define if you have the isint function in libc */ +#undef HAVE_ISINF_IN_LIBC + +/* Define if you have the isprint function. */ +#undef HAVE_ISPRINT + +/* Define if you have the isspace function. */ +#undef HAVE_ISSPACE + +/* Define if you have the isxdigit function. */ +#undef HAVE_ISXDIGIT + +/* Define if you have the kill function. */ +#undef HAVE_KILL + +/* Define if you have the killpg function. */ +#undef HAVE_KILLPG + +/* Define if you have the lstat function. */ +#undef HAVE_LSTAT + +/* Define if you have the mbrlen function. */ +#undef HAVE_MBRLEN + +/* Define if you have the mbrtowc function. */ +#undef HAVE_MBRTOWC + +/* Define if you have the mbsrtowcs function. */ +#undef HAVE_MBSRTOWCS + +/* Define if you have the memmove function. */ +#undef HAVE_MEMMOVE + +/* Define if you have the memset function. */ +#undef HAVE_MEMSET + +/* Define if you have the mkfifo function. */ +#undef HAVE_MKFIFO + +/* Define if you have the pathconf function. */ +#undef HAVE_PATHCONF + +/* Define if you have the putenv function. */ +#undef HAVE_PUTENV + +/* Define if you have the raise function. */ +#undef HAVE_RAISE + +/* Define if you have the readlink function. */ +#undef HAVE_READLINK + +/* Define if you have the regcomp function. */ +#undef HAVE_REGCOMP + +/* Define if you have the regexec function. */ +#undef HAVE_REGEXEC + +/* Define if you have the rename function. */ +#undef HAVE_RENAME + +/* Define if you have the sbrk function. */ +#undef HAVE_SBRK + +/* Define if you have the select function. */ +#undef HAVE_SELECT + +/* Define if you have the setdtablesize function. */ +#undef HAVE_SETDTABLESIZE + +/* Define if you have the setenv function. */ +#undef HAVE_SETENV + +/* Define if you have the setlinebuf function. */ +#undef HAVE_SETLINEBUF + +/* Define if you have the setlocale function. */ +#undef HAVE_SETLOCALE + +/* Define if you have the setostype function. */ +#undef HAVE_SETOSTYPE + +/* Define if you have the setregid function. */ +#undef HAVE_SETREGID +#undef HAVE_DECL_SETREGID + +/* Define if you have the setvbuf function. */ +#undef HAVE_SETVBUF + +/* Define if you have the siginterrupt function. */ +#undef HAVE_SIGINTERRUPT + +/* Define if you have the POSIX.1-style sigsetjmp function. */ +#undef HAVE_POSIX_SIGSETJMP + +/* Define if you have the snprintf function. */ +#undef HAVE_SNPRINTF + +/* Define if you have the strcasecmp function. */ +#undef HAVE_STRCASECMP + +/* Define if you have the strchr function. */ +#undef HAVE_STRCHR + +/* Define if you have the strcoll function. */ +#undef HAVE_STRCOLL + +/* Define if you have the strerror function. */ +#undef HAVE_STRERROR + +/* Define if you have the strftime function. */ +#undef HAVE_STRFTIME + +/* Define if you have the strnlen function. */ +#undef HAVE_STRNLEN + +/* Define if you have the strpbrk function. */ +#undef HAVE_STRPBRK + +/* Define if you have the strstr function. */ +#undef HAVE_STRSTR + +/* Define if you have the strtod function. */ +#undef HAVE_STRTOD + +/* Define if you have the strtoimax function. */ +#undef HAVE_STRTOIMAX + +/* Define if you have the strtol function. */ +#undef HAVE_STRTOL + +/* Define if you have the strtoll function. */ +#undef HAVE_STRTOLL + +/* Define if you have the strtoul function. */ +#undef HAVE_STRTOUL + +/* Define if you have the strtoull function. */ +#undef HAVE_STRTOULL + +/* Define if you have the strtoumax function. */ +#undef HAVE_STRTOUMAX + +/* Define if you have the strsignal function or macro. */ +#undef HAVE_STRSIGNAL + +/* Define if you have the sysconf function. */ +#undef HAVE_SYSCONF + +/* Define if you have the tcgetattr function. */ +#undef HAVE_TCGETATTR + +/* Define if you have the tcgetpgrp function. */ +#undef HAVE_TCGETPGRP + +/* Define if you have the times function. */ +#undef HAVE_TIMES + +/* Define if you have the ttyname function. */ +#undef HAVE_TTYNAME + +/* Define if you have the tzset function. */ +#undef HAVE_TZSET + +/* Define if you have the ulimit function. */ +#undef HAVE_ULIMIT + +/* Define if you have the uname function. */ +#undef HAVE_UNAME + +/* Define if you have the unsetenv function. */ +#undef HAVE_UNSETENV + +/* Define if you have the vasprintf function. */ +#undef HAVE_VASPRINTF + +/* Define if you have the vprintf function. */ +#undef HAVE_VPRINTF + +/* Define if you have the vsnprintf function. */ +#undef HAVE_VSNPRINTF + +/* Define if you have the waitpid function. */ +#undef HAVE_WAITPID + +/* Define if you have the wait3 function. */ +#undef HAVE_WAIT3 + +/* Define if you have the wcsdup function. */ +#undef HAVE_WCSDUP + +/* Define if you have the wctomb function. */ +#undef HAVE_WCTOMB + +/* Define if you have the wctype function. */ +#undef HAVE_WCTYPE + +/* Define if you have the wcwidth function. */ +#undef HAVE_WCWIDTH + +/* Presence of certain system include files. */ + +/* Define if you have the header file. */ +#undef HAVE_ARPA_INET_H + +/* Define if you have the header file. */ +#undef HAVE_DIRENT_H + +/* Define if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define if you have the header file. */ +#undef HAVE_GRP_H + +/* Define if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define if you have the header file. */ +#undef HAVE_LANGINFO_H + +/* Define if you have the header file. */ +#undef HAVE_LIBINTL_H + +/* Define if you have the header file. */ +#undef HAVE_LIMITS_H + +/* Define if you have the header file. */ +#undef HAVE_LOCALE_H + +/* Define if you have the header file. */ +#undef HAVE_NDIR_H + +/* Define if you have the header file. */ +#undef HAVE_NETDB_H + +/* Define if you have the header file. */ +#undef HAVE_NETINET_IN_H + +/* Define if you have the header file. */ +#undef HAVE_PWD_H + +/* Define if you have the header file. */ +#undef HAVE_REGEX_H + +/* Define if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define if you have the header file. */ +#undef HAVE_STDARG_H + +/* Define if you have the header file. */ +#undef HAVE_STRING_H + +/* Define if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define if you have the header file. */ +#undef HAVE_STDDEF_H + +/* Define if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_DIR_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_FILE_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_NDIR_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_PARAM_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_PTE_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_PTEM_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_RESOURCE_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_SELECT_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_SOCKET_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_STREAM_H + +/* Define if you have */ +#undef HAVE_SYS_TIME_H + +#undef TIME_WITH_SYS_TIME + +/* Define if you have */ +#undef HAVE_SYS_TIMES_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define if you have that is POSIX.1 compatible. */ +#undef HAVE_SYS_WAIT_H + +/* Define if you have the header file. */ +#undef HAVE_TERMCAP_H + +/* Define if you have the header file. */ +#undef HAVE_TERMIO_H + +/* Define if you have the header file. */ +#undef HAVE_TERMIOS_H + +/* Define if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define if you have the header file. */ +#undef HAVE_VARARGS_H + +/* Define if you have the header file. */ +#undef HAVE_WCHAR_H + +/* Define if you have the header file. */ +#undef HAVE_WCTYPE_H + +/* Presence of certain system libraries. */ + +#undef HAVE_LIBDL + +#undef HAVE_LIBSUN + +#undef HAVE_LIBSOCKET + + +/* Define if on MINIX. */ +#undef _MINIX + +/* Are we running SVR5 (UnixWare 7)? */ +#undef SVR5 + +/* Are we running SVR4.2? */ +#undef SVR4_2 + +/* Are we running some version of SVR4? */ +#undef SVR4 + +/* Define if job control is unusable or unsupported. */ +#undef JOB_CONTROL_MISSING + +/* Do we need to define _KERNEL to get the RLIMIT_* defines from + ? */ +#undef RLIMIT_NEEDS_KERNEL + +/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS + +/* Define for large files on AIX-style hosts. */ +#undef _LARGE_FILES + +/* Do strcoll(3) and strcmp(3) give different results in the default locale? */ +#undef STRCOLL_BROKEN + +#undef DUP2_BROKEN + +#undef GETCWD_BROKEN + +/* Additional defines for configuring lib/intl, maintained by autoscan/autoheader */ + +/* Define if you have the header file. */ +#undef HAVE_ARGZ_H + +/* Define if you have the header file. */ +#undef HAVE_ERRNO_H + +/* Define if you have the header file. */ +#undef HAVE_FCNTL_H + +/* Define if you have the header file. */ +#undef HAVE_MALLOC_H + +/* Define if you have the header file. */ +#undef HAVE_STDIO_EXT_H + +/* Define if you have the `dcgettext' function. */ +#undef HAVE_DCGETTEXT + +/* Define if your system has a working `malloc' function. */ +/* #undef HAVE_MALLOC */ + +/* Define if you have the `mempcpy' function. */ +#undef HAVE_MEMPCPY + +/* Define if you have a working `mmap' system call. */ +#undef HAVE_MMAP + +/* Define if you have the `munmap' function. */ +#undef HAVE_MUNMAP + +/* Define if you have the `nl_langinfo' function. */ +#undef HAVE_NL_LANGINFO + +/* Define if you have the `stpcpy' function. */ +#undef HAVE_STPCPY + +/* Define if you have the `strcspn' function. */ +#undef HAVE_STRCSPN + +/* Define if you have the `strdup' function. */ +#undef HAVE_STRDUP + +/* Define if you have the `__argz_count' function. */ +#undef HAVE___ARGZ_COUNT + +/* Define if you have the `__argz_next' function. */ +#undef HAVE___ARGZ_NEXT + +/* Define if you have the `__argz_stringify' function. */ +#undef HAVE___ARGZ_STRINGIFY + +/* End additions for lib/intl */ + +#include "config-bot.h" + +#endif /* _CONFIG_H_ */ diff --git a/bash-20060316/configure b/bash-20060316/configure new file mode 100755 index 000000000..a227da7f4 --- /dev/null +++ b/bash-20060316/configure @@ -0,0 +1,28494 @@ +#! /bin/sh +# From configure.in for Bash 3.2, version 3.187. +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.59 for bash 3.2-devel. +# +# Report bugs to . +# +# Copyright (C) 2003 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. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# 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 + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + 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 + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + 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=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # 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 before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, 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 + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { 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 sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# 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'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + +# 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` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME='bash' +PACKAGE_TARNAME='bash' +PACKAGE_VERSION='3.2-devel' +PACKAGE_STRING='bash 3.2-devel' +PACKAGE_BUGREPORT='bug-bash@gnu.org' + +ac_unique_file="shell.h" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os EMACS lispdir DEBUGGER_START_FILE TESTSCRIPT PURIFY MALLOC_TARGET MALLOC_SRC MALLOC_LIB MALLOC_LIBRARY MALLOC_LDFLAGS MALLOC_DEP htmldir HELPDIR HELPDIRDEFINE HELPINSTALL HELPSTRINGS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP CROSS_COMPILE SIGNAMES_H SIGNAMES_O CC_FOR_BUILD STATIC_LD CFLAGS_FOR_BUILD CPPFLAGS_FOR_BUILD LDFLAGS_FOR_BUILD RL_VERSION RL_MAJOR RL_MINOR READLINE_LIB READLINE_DEP RL_LIBDIR RL_INCLUDEDIR RL_INCLUDE HISTORY_LIB HISTORY_DEP HIST_LIBDIR TILDE_LIB INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA AR RANLIB ac_ct_RANLIB YACC SET_MAKE MAKE_SHELL SIZE MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE ALLOCA GLIBC21 LIBICONV LTLIBICONV INTLBISON BUILD_INCLUDED_LIBINTL USE_INCLUDED_LIBINTL CATOBJEXT DATADIRNAME INSTOBJEXT GENCAT INTLOBJS INTL_LIBTOOL_SUFFIX_PREFIX INTLLIBS LIBINTL LTLIBINTL POSUB LIBOBJS INTL_DEP INTL_INC LIBINTL_H SIGLIST_O TERMCAP_LIB TERMCAP_DEP JOBS_O SHOBJ_CC SHOBJ_CFLAGS SHOBJ_LD SHOBJ_LDFLAGS SHOBJ_XLDFLAGS SHOBJ_LIBS SHOBJ_STATUS PROFILE_FLAGS incdir BUILD_DIR ARFLAGS BASHVERS RELSTATUS DEBUG MALLOC_DEBUG LOCAL_LIBS LOCAL_CFLAGS LOCAL_LDFLAGS LOCAL_DEFS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + 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 && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + 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 +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_DEBUGGER_START_FILE_set=${DEBUGGER_START_FILE+set} +ac_env_DEBUGGER_START_FILE_value=$DEBUGGER_START_FILE +ac_cv_env_DEBUGGER_START_FILE_set=${DEBUGGER_START_FILE+set} +ac_cv_env_DEBUGGER_START_FILE_value=$DEBUGGER_START_FILE +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP + +# +# Report the --help message. +# +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 3.2-devel to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --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 + --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 + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of bash 3.2-devel:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-minimal-config a minimal sh-like configuration + --enable-alias enable shell aliases + --enable-arith-for-command + enable arithmetic for command + --enable-array-variables + include shell array variables + --enable-bang-history turn on csh-style history substitution + --enable-brace-expansion + include brace expansion + --enable-command-timing enable the time reserved word and command timing + --enable-cond-command enable the conditional command + --enable-cond-regexp enable extgended regular expression matching in + conditional commands + --enable-debugger enable support for bash debugger + --enable-directory-stack + enable builtins pushd/popd/dirs + --enable-disabled-builtins + allow disabled builtins to still be invoked + --enable-dparen-arithmetic + include ((...)) command + --enable-extended-glob include ksh-style extended pattern matching + --enable-help-builtin include the help builtin + --enable-history turn on command history + --enable-job-control enable job control features + --enable-multibyte enable multibyte characters if OS supports them + --enable-net-redirections + enable /dev/tcp/host/port redirection + --enable-process-substitution + enable process substitution + --enable-progcomp enable programmable completion and the complete + builtin + --enable-prompt-string-decoding + turn on escape character decoding in prompts + --enable-readline turn on command line editing + --enable-restricted enable a restricted shell + --enable-select include select command + --enable-separate-helpfiles + use external files for help builtin documentation + --enable-single-help-strings + store help documentation as a single string to ease + translation + --enable-strict-posix-default + configure bash to be posix-conformant by default + --enable-usg-echo-default + a synonym for --enable-xpg-echo-default + --enable-xpg-echo-default + make the echo builtin expand escape sequences by + default + --enable-mem-scramble scramble memory on calls to malloc and free + --enable-profiling allow profiling with gprof + --enable-static-link link bash statically, for use as a root shell + --disable-largefile omit support for large files + --disable-nls do not use Native Language Support + --disable-rpath do not hardcode runtime library paths + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-lispdir override the default lisp directory + --with-afs if you are running AFS + --with-bash-malloc use the Bash version of malloc + --with-curses use the curses library instead of the termcap + library + --with-gnu-malloc synonym for --with-bash-malloc + --with-installed-readline + use a version of the readline library that is + already installed + --with-purecov configure to postprocess with pure coverage + --with-purify configure to postprocess with purify + --with-gnu-ld assume the C compiler uses GNU ld default=no + --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib + --without-libiconv-prefix don't search for libiconv in includedir and libdir + --with-included-gettext use the GNU gettext library included here + --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib + --without-libintl-prefix don't search for libintl in includedir and libdir + +Some influential environment variables: + DEBUGGER_START_FILE + location of bash debugger initialization file + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF +bash configure 3.2-devel +generated by GNU Autoconf 2.59 + +Copyright (C) 2003 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 0 +fi +exec 5>config.log +cat >&5 <<_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 3.2-devel, which was +generated by GNU Autoconf 2.59. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +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` + +/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` +hostinfo = `(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` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# 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_sep= +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=`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_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + 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; } + +# 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: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core && + rm -rf 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 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +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 + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; 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,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +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 + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`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 + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +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 + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in ./support $srcdir/./support" >&5 +echo "$as_me: error: cannot find install-sh or install.sh in ./support $srcdir/./support" >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + + ac_config_headers="$ac_config_headers config.h" + + +BASHVERS=3.2 +RELSTATUS=devel + +case "$RELSTATUS" in +alp*|bet*|dev*|rc*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; +*) DEBUG= MALLOC_DEBUG= ;; +esac + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + + +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-lispdir or --without-lispdir was given. +if test "${with_lispdir+set}" = set; then + withval="$with_lispdir" + lispdir="$withval" + echo "$as_me:$LINENO: checking where .elc files should go" >&5 +echo $ECHO_N "checking where .elc files should go... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $lispdir" >&5 +echo "${ECHO_T}$lispdir" >&6 +else + + # If set to t, that means we are running in a shell under Emacs. + # If you have an Emacs named "t", then use the full path. + test x"$EMACS" = xt && EMACS= + for ac_prog in emacs xemacs +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_EMACS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$EMACS"; then + ac_cv_prog_EMACS="$EMACS" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_EMACS="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +EMACS=$ac_cv_prog_EMACS +if test -n "$EMACS"; then + echo "$as_me:$LINENO: result: $EMACS" >&5 +echo "${ECHO_T}$EMACS" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$EMACS" && break +done +test -n "$EMACS" || EMACS="no" + + if test $EMACS != "no"; then + if test x${lispdir+set} != xset; then + echo "$as_me:$LINENO: checking where .elc files should go" >&5 +echo $ECHO_N "checking where .elc files should go... $ECHO_C" >&6 +if test "${am_cv_lispdir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + am_cv_lispdir=`$EMACS -batch -q -eval '(while load-path (princ (concat (car load-path) "\n")) (setq load-path (cdr load-path)))' | sed -n -e 's,/$,,' -e '/.*\/lib\/\(x\?emacs\/site-lisp\)$/{s,,${libdir}/\1,;p;q;}' -e '/.*\/share\/\(x\?emacs\/site-lisp\)$/{s,,${datadir}/\1,;p;q;}'` + if test -z "$am_cv_lispdir"; then + am_cv_lispdir='${datadir}/emacs/site-lisp' + fi + +fi +echo "$as_me:$LINENO: result: $am_cv_lispdir" >&5 +echo "${ECHO_T}$am_cv_lispdir" >&6 + lispdir="$am_cv_lispdir" + fi + fi + +fi; + + + + + +# Check whether --with-afs or --without-afs was given. +if test "${with_afs+set}" = set; then + withval="$with_afs" + opt_afs=$withval +fi; + +# Check whether --with-bash-malloc or --without-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 or --without-curses was given. +if test "${with_curses+set}" = set; then + withval="$with_curses" + opt_curses=$withval +fi; + +# Check whether --with-gnu-malloc or --without-gnu-malloc was given. +if test "${with_gnu_malloc+set}" = set; then + withval="$with_gnu_malloc" + opt_bash_malloc=$withval +fi; + +# Check whether --with-installed-readline or --without-installed-readline was given. +if test "${with_installed_readline+set}" = set; then + withval="$with_installed_readline" + opt_with_installed_readline=$withval +fi; + +# Check whether --with-purecov or --without-purecov was given. +if test "${with_purecov+set}" = set; then + withval="$with_purecov" + opt_purecov=$withval +fi; + +# Check whether --with-purify or --without-purify was given. +if test "${with_purify+set}" = set; then + withval="$with_purify" + opt_purify=$withval +fi; + +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)' + + cat >>confdefs.h <<\_ACEOF +#define USING_BASH_MALLOC 1 +_ACEOF + +else + MALLOC_LIB= + MALLOC_LIBRARY= + MALLOC_LDFLAGS= + MALLOC_DEP= +fi + +if test "$opt_purify" = yes; then + PURIFY="purify " + cat >>confdefs.h <<\_ACEOF +#define DISABLE_MALLOC_WRAPPERS 1 +_ACEOF + +else + PURIFY= +fi + +if test "$opt_purecov" = yes; then + PURIFY="${PURIFY}purecov" +fi + +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=${ac_default_prefix}/lib/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_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_static_link=no +opt_profiling=no + +# Check whether --enable-minimal-config or --disable-minimal-config was given. +if test "${enable_minimal_config+set}" = set; then + enableval="$enable_minimal_config" + opt_minimal_config=$enableval +fi; + +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 +fi + +# Check whether --enable-alias or --disable-alias was given. +if test "${enable_alias+set}" = set; then + enableval="$enable_alias" + opt_alias=$enableval +fi; +# Check whether --enable-arith-for-command or --disable-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; +# Check whether --enable-array-variables or --disable-array-variables was given. +if test "${enable_array_variables+set}" = set; then + enableval="$enable_array_variables" + opt_array_variables=$enableval +fi; +# Check whether --enable-bang-history or --disable-bang-history was given. +if test "${enable_bang_history+set}" = set; then + enableval="$enable_bang_history" + opt_bang_history=$enableval +fi; +# Check whether --enable-brace-expansion or --disable-brace-expansion was given. +if test "${enable_brace_expansion+set}" = set; then + enableval="$enable_brace_expansion" + opt_brace_expansion=$enableval +fi; +# Check whether --enable-command-timing or --disable-command-timing was given. +if test "${enable_command_timing+set}" = set; then + enableval="$enable_command_timing" + opt_command_timing=$enableval +fi; +# Check whether --enable-cond-command or --disable-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 or --disable-cond-regexp was given. +if test "${enable_cond_regexp+set}" = set; then + enableval="$enable_cond_regexp" + opt_cond_regexp=$enableval +fi; +# Check whether --enable-debugger or --disable-debugger was given. +if test "${enable_debugger+set}" = set; then + enableval="$enable_debugger" + opt_debugger=$enableval +fi; +# Check whether --enable-directory-stack or --disable-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 or --disable-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 or --disable-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 or --disable-extended-glob was given. +if test "${enable_extended_glob+set}" = set; then + enableval="$enable_extended_glob" + opt_extended_glob=$enableval +fi; +# Check whether --enable-help-builtin or --disable-help-builtin was given. +if test "${enable_help_builtin+set}" = set; then + enableval="$enable_help_builtin" + opt_help=$enableval +fi; +# Check whether --enable-history or --disable-history was given. +if test "${enable_history+set}" = set; then + enableval="$enable_history" + opt_history=$enableval +fi; +# Check whether --enable-job-control or --disable-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 or --disable-multibyte was given. +if test "${enable_multibyte+set}" = set; then + enableval="$enable_multibyte" + opt_multibyte=$enableval +fi; +# Check whether --enable-net-redirections or --disable-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 or --disable-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 or --disable-progcomp was given. +if test "${enable_progcomp+set}" = set; then + enableval="$enable_progcomp" + opt_progcomp=$enableval +fi; +# Check whether --enable-prompt-string-decoding or --disable-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 or --disable-readline was given. +if test "${enable_readline+set}" = set; then + enableval="$enable_readline" + opt_readline=$enableval +fi; +# Check whether --enable-restricted or --disable-restricted was given. +if test "${enable_restricted+set}" = set; then + enableval="$enable_restricted" + opt_restricted=$enableval +fi; +# Check whether --enable-select or --disable-select was given. +if test "${enable_select+set}" = set; then + enableval="$enable_select" + opt_select=$enableval +fi; +# Check whether --enable-separate-helpfiles or --disable-separate-helpfiles was given. +if test "${enable_separate_helpfiles+set}" = set; then + enableval="$enable_separate_helpfiles" + opt_separate_help=$enableval +fi; +# Check whether --enable-single-help-strings or --disable-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 or --disable-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 or --disable-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 or --disable-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 or --disable-mem-scramble was given. +if test "${enable_mem_scramble+set}" = set; then + enableval="$enable_mem_scramble" + opt_memscramble=$enableval +fi; +# Check whether --enable-profiling or --disable-profiling was given. +if test "${enable_profiling+set}" = set; then + enableval="$enable_profiling" + opt_profiling=$enableval +fi; +# Check whether --enable-static-link or --disable-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 +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 + +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 + +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 + +fi +if test $opt_help = yes; then +cat >>confdefs.h <<\_ACEOF +#define HELP_BUILTIN 1 +_ACEOF + +fi +if test $opt_array_variables = yes; then +cat >>confdefs.h <<\_ACEOF +#define ARRAY_VARS 1 +_ACEOF + +fi +if test $opt_dparen_arith = yes; then +cat >>confdefs.h <<\_ACEOF +#define DPAREN_ARITHMETIC 1 +_ACEOF + +fi +if test $opt_brace_expansion = yes; then +cat >>confdefs.h <<\_ACEOF +#define BRACE_EXPANSION 1 +_ACEOF + +fi +if test $opt_disabled_builtins = yes; then +cat >>confdefs.h <<\_ACEOF +#define DISABLED_BUILTINS 1 +_ACEOF + +fi +if test $opt_command_timing = yes; then +cat >>confdefs.h <<\_ACEOF +#define COMMAND_TIMING 1 +_ACEOF + +fi +if test $opt_xpg_echo = yes ; then +cat >>confdefs.h <<\_ACEOF +#define DEFAULT_ECHO_TO_XPG 1 +_ACEOF + +fi +if test $opt_strict_posix = yes; then +cat >>confdefs.h <<\_ACEOF +#define STRICT_POSIX 1 +_ACEOF + +fi +if test $opt_extended_glob = yes ; then +cat >>confdefs.h <<\_ACEOF +#define EXTENDED_GLOB 1 +_ACEOF + +fi +if test $opt_cond_command = yes ; then +cat >>confdefs.h <<\_ACEOF +#define COND_COMMAND 1 +_ACEOF + +fi +if test $opt_cond_regexp = yes ; then +cat >>confdefs.h <<\_ACEOF +#define COND_REGEXP 1 +_ACEOF + +fi +if test $opt_arith_for_command = yes; then +cat >>confdefs.h <<\_ACEOF +#define ARITH_FOR_COMMAND 1 +_ACEOF + +fi +if test $opt_net_redirs = yes; then +cat >>confdefs.h <<\_ACEOF +#define NETWORK_REDIRECTIONS 1 +_ACEOF + +fi +if test $opt_progcomp = yes; then +cat >>confdefs.h <<\_ACEOF +#define PROGRAMMABLE_COMPLETION 1 +_ACEOF + +fi +if test $opt_multibyte = no; then +cat >>confdefs.h <<\_ACEOF +#define NO_MULTIBYTE_SUPPORT 1 +_ACEOF + +fi +if test $opt_debugger = yes; then +cat >>confdefs.h <<\_ACEOF +#define DEBUGGER 1 +_ACEOF + +fi + +if test $opt_memscramble = yes; then +cat >>confdefs.h <<\_ACEOF +#define MEMSCRAMBLE 1 +_ACEOF + +fi + +if test "$opt_minimal_config" = yes; then + TESTSCRIPT=run-minimal +else + TESTSCRIPT=run-all +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' +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +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_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" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + 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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out 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. +echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + 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 + { { 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 +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 +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; 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 +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +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 +#include +/* 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); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std1 is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std1. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f 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 +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +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 + + + + + echo "$as_me:$LINENO: checking for strerror in -lcposix" >&5 +echo $ECHO_N "checking for strerror in -lcposix... $ECHO_C" >&6 +if test "${ac_cv_lib_cposix_strerror+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strerror (); +int +main () +{ +strerror (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_cposix_strerror=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_cposix_strerror=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_cposix_strerror" >&5 +echo "${ECHO_T}$ac_cv_lib_cposix_strerror" >&6 +if test $ac_cv_lib_cposix_strerror = yes; then + LIBS="$LIBS -lcposix" +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 +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&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 + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # 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 +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent 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 +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + 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 + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # 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 +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent 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 +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + 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 + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +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 + + +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f 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 +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +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 +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +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 + : +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 ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +if test "${ac_cv_header_minix_config_h+set}" = set; then + echo "$as_me:$LINENO: checking for minix/config.h" >&5 +echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6 +if test "${ac_cv_header_minix_config_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 +echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking minix/config.h usability" >&5 +echo $ECHO_N "checking minix/config.h usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking minix/config.h presence" >&5 +echo $ECHO_N "checking minix/config.h presence... $ECHO_C" >&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 echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: minix/config.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: minix/config.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: minix/config.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: minix/config.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: minix/config.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for minix/config.h" >&5 +echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6 +if test "${ac_cv_header_minix_config_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_minix_config_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 +echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6 + +fi +if test $ac_cv_header_minix_config_h = 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 + + +cat >>confdefs.h <<\_ACEOF +#define _MINIX 1 +_ACEOF + +fi + + +# Check whether --enable-largefile or --disable-largefile was given. +if test "${enable_largefile+set}" = set; then + enableval="$enable_largefile" + +fi; +if test "$enable_largefile" != no; then + + echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5 +echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_largefile_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + 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 +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext + CC="$CC -n32" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_largefile_CC=' -n32'; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5 +echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6 + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_file_offset_bits+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + while :; do + ac_cv_sys_file_offset_bits=no + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f 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 +/* end confdefs.h. */ +#define _FILE_OFFSET_BITS 64 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_file_offset_bits=64; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + break +done +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5 +echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6 +if test "$ac_cv_sys_file_offset_bits" != no; then + +cat >>confdefs.h <<_ACEOF +#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits +_ACEOF + +fi +rm -f conftest* + echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5 +echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_large_files+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + while :; do + ac_cv_sys_large_files=no + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f 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 +/* end confdefs.h. */ +#define _LARGE_FILES 1 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_large_files=1; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + break +done +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5 +echo "${ECHO_T}$ac_cv_sys_large_files" >&6 +if test "$ac_cv_sys_large_files" != no; then + +cat >>confdefs.h <<_ACEOF +#define _LARGE_FILES $ac_cv_sys_large_files +_ACEOF + +fi +rm -f conftest* +fi + + + +SIGNAMES_O= +SIGNAMES_H=lsignames.h + + + +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' + +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 + +test -n "$GCC" && test -n "$auto_cflags" && CFLAGS="$CFLAGS -O2" + +if test "$opt_profiling" = "yes"; then + PROFILE_FLAGS=-pg + case "$host_os" in + solaris2*) ;; + *) opt_static_link=yes ;; + esac + DEBUG= MALLOC_DEBUG= +fi + +if test "$opt_static_link" = yes; then + # 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" + case "$host_os" in + solaris2*) ;; + *) LDFLAGS="$LDFLAGS -static" ;; # XXX experimental + esac + fi +fi + +if test "X$cross_compiling" = "Xno"; then + CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-"$CPPFLAGS"} + LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'} +else + CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-""} + LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-""} +fi + +test -z "$CFLAGS_FOR_BUILD" && CFLAGS_FOR_BUILD="-g" + + + + + + + + + + +if test $ac_cv_c_compiler_gnu = yes; then + echo "$as_me:$LINENO: checking whether $CC needs -traditional" >&5 +echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6 +if test "${ac_cv_prog_gcc_traditional+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ +#include +Autoconf TIOCGETP +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "$ac_pattern" >/dev/null 2>&1; then + ac_cv_prog_gcc_traditional=yes +else + ac_cv_prog_gcc_traditional=no +fi +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 +/* end confdefs.h. */ +#include +Autoconf TCGETA +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "$ac_pattern" >/dev/null 2>&1; then + ac_cv_prog_gcc_traditional=yes +fi +rm -f conftest* + + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_gcc_traditional" >&5 +echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6 + if test $ac_cv_prog_gcc_traditional = yes; then + CC="$CC -traditional" + fi +fi + + + +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 + + +if test "X$bash_cv_termcap_lib" = "X"; then +_bash_needmsg=yes +else +echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 +_bash_needmsg= +fi +if test "${bash_cv_termcap_lib+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for tgetent" >&5 +echo $ECHO_N "checking for tgetent... $ECHO_C" >&6 +if test "${ac_cv_func_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = tgetent; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != tgetent; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_tgetent" >&5 +echo "${ECHO_T}$ac_cv_func_tgetent" >&6 +if test $ac_cv_func_tgetent = yes; then + bash_cv_termcap_lib=libc +else + echo "$as_me:$LINENO: checking for tgetent in -ltermcap" >&5 +echo $ECHO_N "checking for tgetent in -ltermcap... $ECHO_C" >&6 +if test "${ac_cv_lib_termcap_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_termcap_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_termcap_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_termcap_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_termcap_tgetent" >&6 +if test $ac_cv_lib_termcap_tgetent = yes; then + bash_cv_termcap_lib=libtermcap +else + echo "$as_me:$LINENO: checking for tgetent in -ltinfo" >&5 +echo $ECHO_N "checking for tgetent in -ltinfo... $ECHO_C" >&6 +if test "${ac_cv_lib_tinfo_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_tinfo_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_tinfo_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_tinfo_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_tinfo_tgetent" >&6 +if test $ac_cv_lib_tinfo_tgetent = yes; then + bash_cv_termcap_lib=libtinfo +else + echo "$as_me:$LINENO: checking for tgetent in -lcurses" >&5 +echo $ECHO_N "checking for tgetent in -lcurses... $ECHO_C" >&6 +if test "${ac_cv_lib_curses_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_curses_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_curses_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_curses_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_curses_tgetent" >&6 +if test $ac_cv_lib_curses_tgetent = yes; then + bash_cv_termcap_lib=libcurses +else + echo "$as_me:$LINENO: checking for tgetent in -lncurses" >&5 +echo $ECHO_N "checking for tgetent in -lncurses... $ECHO_C" >&6 +if test "${ac_cv_lib_ncurses_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_ncurses_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_ncurses_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_ncurses_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_ncurses_tgetent" >&6 +if test $ac_cv_lib_ncurses_tgetent = yes; then + bash_cv_termcap_lib=libncurses +else + bash_cv_termcap_lib=gnutermcap +fi + +fi + +fi + +fi + +fi + +fi + +if test "X$_bash_needmsg" = "Xyes"; then +echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: using $bash_cv_termcap_lib" >&5 +echo "${ECHO_T}using $bash_cv_termcap_lib" >&6 +if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then +LDFLAGS="$LDFLAGS -L./lib/termcap" +TERMCAP_LIB="./lib/termcap/libtermcap.a" +TERMCAP_DEP="./lib/termcap/libtermcap.a" +elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then +TERMCAP_LIB=-ltermcap +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libtinfo; then +TERMCAP_LIB=-ltinfo +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libncurses; then +TERMCAP_LIB=-lncurses +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libc; then +TERMCAP_LIB= +TERMCAP_DEP= +else +TERMCAP_LIB=-lcurses +TERMCAP_DEP= +fi + + + + +echo "$as_me:$LINENO: checking version of installed readline library" >&5 +echo $ECHO_N "checking version of installed readline library... $ECHO_C" >&6 + +# What a pain in the ass this is. + +# save cpp and ld options +_save_CFLAGS="$CFLAGS" +_save_LDFLAGS="$LDFLAGS" +_save_LIBS="$LIBS" + +# Don't set ac_cv_rl_prefix if the caller has already assigned a value. This +# allows the caller to do something like $_rl_prefix=$withval if the user +# specifies --with-installed-readline=PREFIX as an argument to configure + +if test -z "$ac_cv_rl_prefix"; then +test "x$prefix" = xNONE && ac_cv_rl_prefix=$ac_default_prefix || ac_cv_rl_prefix=${prefix} +fi + +eval ac_cv_rl_includedir=${ac_cv_rl_prefix}/include +eval ac_cv_rl_libdir=${ac_cv_rl_prefix}/lib + +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 + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + 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 +/* end confdefs.h. */ + +#include +#include + +extern int rl_gnu_readline_p; + +main() +{ + FILE *fp; + fp = fopen("conftest.rlv", "w"); + if (fp == 0) + exit(1); + if (rl_gnu_readline_p != 1) + fprintf(fp, "0.0\n"); + else + fprintf(fp, "%s\n", rl_library_version ? rl_library_version : "0.0"); + fclose(fp); + exit(0); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_rl_version=`cat conftest.rlv` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_rl_version='0.0' +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + + +CFLAGS="$_save_CFLAGS" +LDFLAGS="$_save_LDFLAGS" +LIBS="$_save_LIBS" + +RL_MAJOR=0 +RL_MINOR=0 + +# ( +case "$ac_cv_rl_version" in +2*|3*|4*|5*|6*|7*|8*|9*) + RL_MAJOR=`echo $ac_cv_rl_version | sed 's:\..*$::'` + RL_MINOR=`echo $ac_cv_rl_version | sed -e 's:^.*\.::' -e 's:[a-zA-Z]*$::'` + ;; +esac + +# ((( +case $RL_MAJOR in +[0-9][0-9]) _RL_MAJOR=$RL_MAJOR ;; +[0-9]) _RL_MAJOR=0$RL_MAJOR ;; +*) _RL_MAJOR=00 ;; +esac + +# ((( +case $RL_MINOR in +[0-9][0-9]) _RL_MINOR=$RL_MINOR ;; +[0-9]) _RL_MINOR=0$RL_MINOR ;; +*) _RL_MINOR=00 ;; +esac + +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 + { echo "$as_me:$LINENO: WARNING: Could not test version of installed readline library." >&5 +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 + echo "$as_me:$LINENO: result: $ac_cv_rl_version" >&5 +echo "${ECHO_T}$ac_cv_rl_version" >&6 +else + + +cat >>confdefs.h <<_ACEOF +#define RL_READLINE_VERSION $RL_VERSION +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define RL_VERSION_MAJOR $RL_MAJOR +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define RL_VERSION_MINOR $RL_MINOR +_ACEOF + + + + + + +# 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 + +echo "$as_me:$LINENO: result: $ac_cv_rl_version" >&5 +echo "${ECHO_T}$ac_cv_rl_version" >&6 + +fi + + + case "$ac_cv_rl_version" in + 5*|6*|7*|8*|9*) ;; + *) opt_with_installed_readline=no + { echo "$as_me:$LINENO: WARNING: installed readline library is too old to be linked with bash" >&5 +echo "$as_me: WARNING: installed readline library is too old to be linked with bash" >&2;} + { echo "$as_me:$LINENO: WARNING: using private bash version" >&5 +echo "$as_me: WARNING: using private bash version" >&2;} + ;; + esac +fi + +TILDE_LIB=-ltilde +if test $opt_readline = yes; then + cat >>confdefs.h <<\_ACEOF +#define READLINE 1 +_ACEOF + + 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 + darwin8*) 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 + cat >>confdefs.h <<\_ACEOF +#define HISTORY 1 +_ACEOF + + fi + if test $opt_bang_history = yes; then + cat >>confdefs.h <<\_ACEOF +#define BANG_HISTORY 1 +_ACEOF + + 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 + darwin8*) HISTORY_LIB='${HISTORY_LIBRARY}' ;; + *) HISTORY_LIB=-lhistory ;; + esac + fi +else + HIST_LIBDIR='$(dot)/$(LIBSUBDIR)/readline' + HISTORY_LIB= HISTORY_DEP= +fi + + + + + + + + + + + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +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/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_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. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar" +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + echo "$as_me:$LINENO: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_YACC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$YACC"; then + ac_cv_prog_YACC="$YACC" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_YACC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +YACC=$ac_cv_prog_YACC +if test -n "$YACC"; then + echo "$as_me:$LINENO: result: $YACC" >&5 +echo "${ECHO_T}$YACC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$YACC" && break +done +test -n "$YACC" || YACC="yacc" + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="$(MAKE)"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + + +case "$host_os" in +opennt*|interix*) MAKE_SHELL="$INTERIX_ROOT/bin/sh" ;; +*) MAKE_SHELL=/bin/sh ;; +esac + + +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 + + +cat >>confdefs.h <<\_ACEOF +#define _GNU_SOURCE 1 +_ACEOF + + +echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 +if test "${ac_cv_c_const+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +/* FIXME: Include the comments suggested by Paul. */ +#ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; + const charset x; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *ccp; + char **p; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + ccp = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++ccp; + p = (char**) ccp; + ccp = (char const *const *) p; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this 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; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + } +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_const=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_const=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +echo "${ECHO_T}$ac_cv_c_const" >&6 +if test $ac_cv_c_const = no; then + +cat >>confdefs.h <<\_ACEOF +#define const +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for inline" >&5 +echo $ECHO_N "checking for inline... $ECHO_C" >&6 +if test "${ac_cv_c_inline+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif + +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_inline=$ac_kw; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 +echo "${ECHO_T}$ac_cv_c_inline" >&6 + + +case $ac_cv_c_inline in + inline | yes) ;; + *) + case $ac_cv_c_inline in + no) ac_val=;; + *) ac_val=$ac_cv_c_inline;; + esac + cat >>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; +esac + +echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 +echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 +if test "${ac_cv_c_bigendian+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # 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 +/* end confdefs.h. */ +#include +#include + +int +main () +{ +#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN + bogus endian macros +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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 +/* end confdefs.h. */ +#include +#include + +int +main () +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_bigendian=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_bigendian=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +# It does not; compile a test program. +if test "$cross_compiling" = yes; then + # try to guess the endianness by grepping values into an object file + ac_cv_c_bigendian=unknown + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; +short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; +void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } +short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; +short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; +void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } +int +main () +{ + _ascii (); _ebcdic (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then + ac_cv_c_bigendian=yes +fi +if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f 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 +/* end confdefs.h. */ +int +main () +{ + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long l; + char c[sizeof (long)]; + } u; + u.l = 1; + exit (u.c[sizeof (long) - 1] == 1); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_bigendian=no +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_c_bigendian=yes +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 +echo "${ECHO_T}$ac_cv_c_bigendian" >&6 +case $ac_cv_c_bigendian in + yes) + +cat >>confdefs.h <<\_ACEOF +#define WORDS_BIGENDIAN 1 +_ACEOF + ;; + no) + ;; + *) + { { echo "$as_me:$LINENO: error: unknown endianness +presetting ac_cv_c_bigendian=no (or yes) will help" >&5 +echo "$as_me: error: unknown endianness +presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} + { (exit 1); exit 1; }; } ;; +esac + +echo "$as_me:$LINENO: checking for preprocessor stringizing operator" >&5 +echo $ECHO_N "checking for preprocessor stringizing operator... $ECHO_C" >&6 +if test "${ac_cv_c_stringize+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 x(y) #y + +char *s = x(teststring); +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "#teststring" >/dev/null 2>&1; then + ac_cv_c_stringize=no +else + ac_cv_c_stringize=yes +fi +rm -f conftest* + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_stringize" >&5 +echo "${ECHO_T}$ac_cv_c_stringize" >&6 +if test $ac_cv_c_stringize = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_STRINGIZE 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for working long double with more range or precision than double" >&5 +echo $ECHO_N "checking for working long double with more range or precision than double... $ECHO_C" >&6 +if test "${ac_cv_c_long_double+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + long double foo = 0.0; +int +main () +{ +static int test_array [1 - 2 * !(/* Using '|' rather than '||' catches a GCC 2.95.2 x86 bug. */ + (DBL_MAX < LDBL_MAX) | (LDBL_EPSILON < DBL_EPSILON) + | (DBL_MAX_EXP < LDBL_MAX_EXP) | (DBL_MANT_DIG < LDBL_MANT_DIG))]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_long_double=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_long_double=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_long_double" >&5 +echo "${ECHO_T}$ac_cv_c_long_double" >&6 +if test $ac_cv_c_long_double = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LONG_DOUBLE 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for function prototypes" >&5 +echo $ECHO_N "checking for function prototypes... $ECHO_C" >&6 +if test "$ac_cv_prog_cc_stdc" != no; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +cat >>confdefs.h <<\_ACEOF +#define PROTOTYPES 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define __PROTOTYPES 1 +_ACEOF + +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + +echo "$as_me:$LINENO: checking whether char is unsigned" >&5 +echo $ECHO_N "checking whether char is unsigned... $ECHO_C" >&6 +if test "${ac_cv_c_char_unsigned+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 int test_array [1 - 2 * !(((char) -1) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_char_unsigned=no +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_char_unsigned=yes +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_char_unsigned" >&5 +echo "${ECHO_T}$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 + +fi + + + + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + case "$ac_aux_dir" in + /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; + *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; + esac + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + + + + echo "$as_me:$LINENO: checking whether NLS is requested" >&5 +echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 + # Check whether --enable-nls or --disable-nls was given. +if test "${enable_nls+set}" = set; then + enableval="$enable_nls" + USE_NLS=$enableval +else + USE_NLS=yes +fi; + echo "$as_me:$LINENO: result: $USE_NLS" >&5 +echo "${ECHO_T}$USE_NLS" >&6 + + + + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$MSGFMT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + echo "$as_me:$LINENO: result: $MSGFMT" >&5 +echo "${ECHO_T}$MSGFMT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_GMSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + *) + 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT + +if test -n "$GMSGFMT"; then + echo "$as_me:$LINENO: result: $GMSGFMT" >&5 +echo "${ECHO_T}$GMSGFMT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_XGETTEXT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$XGETTEXT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && + (if $ac_dir/$ac_word --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 + ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + echo "$as_me:$LINENO: result: $XGETTEXT" >&5 +echo "${ECHO_T}$XGETTEXT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + rm -f messages.po + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_MSGMERGE+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$MSGMERGE" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then + ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" + ;; +esac +fi +MSGMERGE="$ac_cv_path_MSGMERGE" +if test "$MSGMERGE" != ":"; then + echo "$as_me:$LINENO: result: $MSGMERGE" >&5 +echo "${ECHO_T}$MSGMERGE" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + if test "$GMSGFMT" != ":"; then + if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && + (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + : ; + else + GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` + echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 +echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6 + GMSGFMT=":" + fi + fi + + if test "$XGETTEXT" != ":"; then + if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && + (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 + echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 +echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 + XGETTEXT=":" + fi + rm -f messages.po + fi + + ac_config_commands="$ac_config_commands default-1" + + +echo "$as_me:$LINENO: checking for off_t" >&5 +echo $ECHO_N "checking for off_t... $ECHO_C" >&6 +if test "${ac_cv_type_off_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((off_t *) 0) + return 0; +if (sizeof (off_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_off_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_off_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 +echo "${ECHO_T}$ac_cv_type_off_t" >&6 +if test $ac_cv_type_off_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define off_t long +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for size_t" >&5 +echo $ECHO_N "checking for size_t... $ECHO_C" >&6 +if test "${ac_cv_type_size_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((size_t *) 0) + return 0; +if (sizeof (size_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_size_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_size_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +echo "${ECHO_T}$ac_cv_type_size_t" >&6 +if test $ac_cv_type_size_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned +_ACEOF + +fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +echo "$as_me:$LINENO: checking for working alloca.h" >&5 +echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 +if test "${ac_cv_working_alloca_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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)); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_working_alloca_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_working_alloca_h=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +echo "${ECHO_T}$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 + +echo "$as_me:$LINENO: checking for alloca" >&5 +echo $ECHO_N "checking for alloca... $ECHO_C" >&6 +if test "${ac_cv_func_alloca_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +# if 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); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_alloca_works=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_alloca_works=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +echo "${ECHO_T}$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=alloca.$ac_objext + +cat >>confdefs.h <<\_ACEOF +#define C_ALLOCA 1 +_ACEOF + + +echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 +if test "${ac_cv_os_cray+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +echo "${ECHO_T}$ac_cv_os_cray" >&6 +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + +cat >>confdefs.h <<_ACEOF +#define CRAY_STACKSEG_END $ac_func +_ACEOF + + break +fi + + done +fi + +echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 +if test "${ac_cv_c_stack_direction+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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. */ +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 () +{ + exit (find_stack_direction () < 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_stack_direction=1 +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_c_stack_direction=-1 +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 + +cat >>confdefs.h <<_ACEOF +#define STACK_DIRECTION $ac_cv_c_stack_direction +_ACEOF + + +fi + + + +for ac_header in stdlib.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_func in getpagesize +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +echo "$as_me:$LINENO: checking for working mmap" >&5 +echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 +if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 !STDC_HEADERS && !HAVE_STDLIB_H +char *malloc (); +#endif + +/* This mess was copied from the GNU getpagesize.h. */ +#if !HAVE_GETPAGESIZE +/* Assume that all systems that can run configure have sys/param.h. */ +# if !HAVE_SYS_PARAM_H +# define HAVE_SYS_PARAM_H 1 +# endif + +# ifdef _SC_PAGESIZE +# define getpagesize() sysconf(_SC_PAGESIZE) +# else /* no _SC_PAGESIZE */ +# if 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) + exit (1); + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) + exit (1); + if (write (fd, data, pagesize) != pagesize) + exit (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) + exit (1); + data2 = (char *) malloc (2 * pagesize); + if (!data2) + exit (1); + data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1); + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + exit (1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + exit (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) + exit (1); + if (read (fd, data3, pagesize) != pagesize) + exit (1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + exit (1); + close (fd); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mmap_fixed_mapped=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +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 -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 +echo "${ECHO_T}$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 + + + echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5 +echo $ECHO_N "checking whether we are using the GNU C Library 2.1 or newer... $ECHO_C" >&6 +if test "${ac_cv_gnu_library_2_1+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Lucky GNU user" >/dev/null 2>&1; then + ac_cv_gnu_library_2_1=yes +else + ac_cv_gnu_library_2_1=no +fi +rm -f conftest* + + + +fi +echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2_1" >&5 +echo "${ECHO_T}$ac_cv_gnu_library_2_1" >&6 + + GLIBC21="$ac_cv_gnu_library_2_1" + + + + + echo "$as_me:$LINENO: checking whether integer division by zero raises SIGFPE" >&5 +echo $ECHO_N "checking whether integer division by zero raises SIGFPE... $ECHO_C" >&6 +if test "${gt_cv_int_divbyzero_sigfpe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + if test "$cross_compiling" = yes; then + + # Guess based on the CPU. + case "$host_cpu" in + alpha* | i3456786 | m68k | s390*) + gt_cv_int_divbyzero_sigfpe="guessing yes";; + *) + gt_cv_int_divbyzero_sigfpe="guessing no";; + esac + +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 + +static void +#ifdef __cplusplus +sigfpe_handler (int sig) +#else +sigfpe_handler (sig) int sig; +#endif +{ + /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ + exit (sig != SIGFPE); +} + +int x = 1; +int y = 0; +int z; +int nan; + +int main () +{ + signal (SIGFPE, sigfpe_handler); +/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ +#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) + signal (SIGTRAP, sigfpe_handler); +#endif +/* Linux/SPARC yields signal SIGILL. */ +#if defined (__sparc__) && defined (__linux__) + signal (SIGILL, sigfpe_handler); +#endif + + z = x / y; + nan = y / y; + exit (1); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_int_divbyzero_sigfpe=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +gt_cv_int_divbyzero_sigfpe=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + +fi +echo "$as_me:$LINENO: result: $gt_cv_int_divbyzero_sigfpe" >&5 +echo "${ECHO_T}$gt_cv_int_divbyzero_sigfpe" >&6 + case "$gt_cv_int_divbyzero_sigfpe" in + *yes) value=1;; + *) value=0;; + esac + +cat >>confdefs.h <<_ACEOF +#define INTDIV0_RAISES_SIGFPE $value +_ACEOF + + + + echo "$as_me:$LINENO: checking for inttypes.h" >&5 +echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 +if test "${jm_ac_cv_header_inttypes_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +uintmax_t i = (uintmax_t) -1; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + jm_ac_cv_header_inttypes_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +jm_ac_cv_header_inttypes_h=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $jm_ac_cv_header_inttypes_h" >&5 +echo "${ECHO_T}$jm_ac_cv_header_inttypes_h" >&6 + if test $jm_ac_cv_header_inttypes_h = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_INTTYPES_H_WITH_UINTMAX 1 +_ACEOF + + fi + + + echo "$as_me:$LINENO: checking for stdint.h" >&5 +echo $ECHO_N "checking for stdint.h... $ECHO_C" >&6 +if test "${jm_ac_cv_header_stdint_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +uintmax_t i = (uintmax_t) -1; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + jm_ac_cv_header_stdint_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +jm_ac_cv_header_stdint_h=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $jm_ac_cv_header_stdint_h" >&5 +echo "${ECHO_T}$jm_ac_cv_header_stdint_h" >&6 + if test $jm_ac_cv_header_stdint_h = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_STDINT_H_WITH_UINTMAX 1 +_ACEOF + + fi + + + echo "$as_me:$LINENO: checking for unsigned long long" >&5 +echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6 +if test "${ac_cv_type_unsigned_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_unsigned_long_long=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_unsigned_long_long=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long" >&5 +echo "${ECHO_T}$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 + + fi + + + + + if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then + + test $ac_cv_type_unsigned_long_long = yes \ + && ac_type='unsigned long long' \ + || ac_type='unsigned long' + +cat >>confdefs.h <<_ACEOF +#define uintmax_t $ac_type +_ACEOF + + else + +cat >>confdefs.h <<\_ACEOF +#define HAVE_UINTMAX_T 1 +_ACEOF + + fi + + + echo "$as_me:$LINENO: checking for inttypes.h" >&5 +echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 +if test "${gt_cv_header_inttypes_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_header_inttypes_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_header_inttypes_h=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $gt_cv_header_inttypes_h" >&5 +echo "${ECHO_T}$gt_cv_header_inttypes_h" >&6 + if test $gt_cv_header_inttypes_h = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_INTTYPES_H 1 +_ACEOF + + fi + + + + if test $gt_cv_header_inttypes_h = yes; then + echo "$as_me:$LINENO: checking whether the inttypes.h PRIxNN macros are broken" >&5 +echo $ECHO_N "checking whether the inttypes.h PRIxNN macros are broken... $ECHO_C" >&6 +if test "${gt_cv_inttypes_pri_broken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef PRId32 +char *p = PRId32; +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_inttypes_pri_broken=no +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_inttypes_pri_broken=yes +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $gt_cv_inttypes_pri_broken" >&5 +echo "${ECHO_T}$gt_cv_inttypes_pri_broken" >&6 + fi + if test "$gt_cv_inttypes_pri_broken" = yes; then + +cat >>confdefs.h <<_ACEOF +#define PRI_MACROS_BROKEN 1 +_ACEOF + + fi + + + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" + + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi; +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo "$as_me:$LINENO: checking for ld used by GCC" >&5 +echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | [A-Za-z]:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${acl_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" +else + acl_cv_path_LD="$LD" # Let the user override the test with a path. +fi +fi + +LD="$acl_cv_path_LD" +if test -n "$LD"; then + echo "$as_me:$LINENO: result: $LD" >&5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${acl_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 &5; then + acl_cv_prog_gnu_ld=yes +else + acl_cv_prog_gnu_ld=no +fi +fi +echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5 +echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6 +with_gnu_ld=$acl_cv_prog_gnu_ld + + + + echo "$as_me:$LINENO: checking for shared library run path origin" >&5 +echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6 +if test "${acl_cv_rpath+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + +fi +echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5 +echo "${ECHO_T}$acl_cv_rpath" >&6 + wl="$acl_cv_wl" + libext="$acl_cv_libext" + shlibext="$acl_cv_shlibext" + hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + hardcode_direct="$acl_cv_hardcode_direct" + hardcode_minus_L="$acl_cv_hardcode_minus_L" + # Check whether --enable-rpath or --disable-rpath was given. +if test "${enable_rpath+set}" = set; then + enableval="$enable_rpath" + : +else + enable_rpath=yes +fi; + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libiconv-prefix or --without-libiconv-prefix was given. +if test "${with_libiconv_prefix+set}" = set; then + withval="$with_libiconv_prefix" + + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi + +fi; + LIBICONV= + LTLIBICONV= + INCICONV= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='iconv ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + if test $use_additional = yes; then + if 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 + found_la="$additional_libdir/lib$name.la" + fi + else + if test -f "$additional_libdir/lib$name.$libext"; then + found_dir="$additional_libdir" + found_a="$additional_libdir/lib$name.$libext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBICONV; 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" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if 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 + found_la="$dir/lib$name.la" + fi + else + if test -f "$dir/lib$name.$libext"; then + found_dir="$dir" + found_a="$dir/lib$name.$libext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$hardcode_direct" = yes; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBICONV; 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-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" + fi + if test "$hardcode_minus_L" != no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */lib | */lib/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCICONV; 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-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBICONV; 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-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBICONV; 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-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" + ;; + esac + done + fi + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" + done + fi + + + + + + + + + + + + + + +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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + + + + + + + + + + + + + + + + + + +for ac_func in feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ +geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ +strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next \ +__fsetlocking +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + + + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; 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 + + + echo "$as_me:$LINENO: checking for iconv" >&5 +echo $ECHO_N "checking for iconv... $ECHO_C" >&6 +if test "${am_cv_func_iconv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_func_iconv=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f 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 +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + +fi +echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 +echo "${ECHO_T}$am_cv_func_iconv" >&6 + if test "$am_cv_func_iconv" = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ICONV 1 +_ACEOF + + fi + if test "$am_cv_lib_iconv" = yes; then + echo "$as_me:$LINENO: checking how to link with libiconv" >&5 +echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $LIBICONV" >&5 +echo "${ECHO_T}$LIBICONV" >&6 + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + if test "$am_cv_func_iconv" = yes; then + echo "$as_me:$LINENO: checking for iconv declaration" >&5 +echo $ECHO_N "checking for iconv declaration... $ECHO_C" >&6 + if test "${am_cv_proto_iconv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_proto_iconv_arg1="" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +am_cv_proto_iconv_arg1="const" +fi +rm -f 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/( /(/'` + echo "$as_me:$LINENO: result: ${ac_t:- + }$am_cv_proto_iconv" >&5 +echo "${ECHO_T}${ac_t:- + }$am_cv_proto_iconv" >&6 + +cat >>confdefs.h <<_ACEOF +#define ICONV_CONST $am_cv_proto_iconv_arg1 +_ACEOF + + fi + + + echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 +echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6 +if test "${am_cv_langinfo_codeset+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_langinfo_codeset=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +am_cv_langinfo_codeset=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $am_cv_langinfo_codeset" >&5 +echo "${ECHO_T}$am_cv_langinfo_codeset" >&6 + if test $am_cv_langinfo_codeset = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LANGINFO_CODESET 1 +_ACEOF + + fi + + if test $ac_cv_header_locale_h = yes; then + + echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 +echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6 +if test "${am_cv_val_LC_MESSAGES+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +return LC_MESSAGES + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_val_LC_MESSAGES=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +am_cv_val_LC_MESSAGES=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 +echo "${ECHO_T}$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 + + fi + + fi + + for ac_prog in bison +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_INTLBISON+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$INTLBISON"; then + ac_cv_prog_INTLBISON="$INTLBISON" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_INTLBISON="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +INTLBISON=$ac_cv_prog_INTLBISON +if test -n "$INTLBISON"; then + echo "$as_me:$LINENO: result: $INTLBISON" >&5 +echo "${ECHO_T}$INTLBISON" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$INTLBISON" && break +done + + if test -z "$INTLBISON"; then + ac_verc_fail=yes + else + echo "$as_me:$LINENO: checking version of bison" >&5 +echo $ECHO_N "checking version of bison... $ECHO_C" >&6 + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + echo "$as_me:$LINENO: result: $ac_prog_version" >&5 +echo "${ECHO_T}$ac_prog_version" >&6 + fi + if test $ac_verc_fail = yes; then + INTLBISON=: + fi + + + + + + + + + + + + + + + + + echo "$as_me:$LINENO: checking whether NLS is requested" >&5 +echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 + # Check whether --enable-nls or --disable-nls was given. +if test "${enable_nls+set}" = set; then + enableval="$enable_nls" + USE_NLS=$enableval +else + USE_NLS=yes +fi; + echo "$as_me:$LINENO: result: $USE_NLS" >&5 +echo "${ECHO_T}$USE_NLS" >&6 + + + + + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + + LIBINTL= + LTLIBINTL= + POSUB= + + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + + echo "$as_me:$LINENO: checking whether included gettext is requested" >&5 +echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6 + +# Check whether --with-included-gettext or --without-included-gettext was given. +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; + echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5 +echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6 + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + + + + + + + echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 +echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6 +if test "${gt_cv_func_gnugettext2_libc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +int +main () +{ +bindtextdomain ("", ""); +return (int) gettext ("") + (int) ngettext ("", "", 0) + _nl_msg_cat_cntr + *_nl_domain_bindings + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_func_gnugettext2_libc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_func_gnugettext2_libc=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext2_libc" >&5 +echo "${ECHO_T}$gt_cv_func_gnugettext2_libc" >&6 + + if test "$gt_cv_func_gnugettext2_libc" != "yes"; then + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libintl-prefix or --without-libintl-prefix was given. +if test "${with_libintl_prefix+set}" = set; then + withval="$with_libintl_prefix" + + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi + +fi; + LIBINTL= + LTLIBINTL= + INCINTL= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='intl ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + if test $use_additional = yes; then + if 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 + found_la="$additional_libdir/lib$name.la" + fi + else + if test -f "$additional_libdir/lib$name.$libext"; then + found_dir="$additional_libdir" + found_a="$additional_libdir/lib$name.$libext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBINTL; 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" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if 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 + found_la="$dir/lib$name.la" + fi + else + if test -f "$dir/lib$name.$libext"; then + found_dir="$dir" + found_a="$dir/lib$name.$libext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$hardcode_direct" = yes; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBINTL; 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-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" + fi + if test "$hardcode_minus_L" != no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */lib | */lib/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCINTL; 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-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBINTL; 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-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBINTL; 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-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" + ;; + esac + done + fi + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" + done + fi + + echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5 +echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6 +if test "${gt_cv_func_gnugettext2_libintl+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_func_gnugettext2_libintl=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_func_gnugettext2_libintl=no +fi +rm -f 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 >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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + gt_cv_func_gnugettext2_libintl=yes + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" +fi +echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext2_libintl" >&5 +echo "${ECHO_T}$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 + + echo "$as_me:$LINENO: checking whether to use NLS" >&5 +echo $ECHO_N "checking whether to use NLS... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $USE_NLS" >&5 +echo "${ECHO_T}$USE_NLS" >&6 + if test "$USE_NLS" = "yes"; then + echo "$as_me:$LINENO: checking where the gettext function comes from" >&5 +echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&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 + echo "$as_me:$LINENO: result: $gt_source" >&5 +echo "${ECHO_T}$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 + echo "$as_me:$LINENO: checking how to link with libintl" >&5 +echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $LIBINTL" >&5 +echo "${ECHO_T}$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=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 +echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `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 + echo "$as_me:$LINENO: checking for library containing opendir" >&5 +echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 +if test "${ac_cv_search_opendir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_func_search_save_LIBS=$LIBS +ac_cv_search_opendir=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +int +main () +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_opendir="none required" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search_opendir" = no; then + for ac_lib in dir; do + LIBS="-l$ac_lib $ac_func_search_save_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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +int +main () +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_opendir="-l$ac_lib" +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done +fi +LIBS=$ac_func_search_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 +echo "${ECHO_T}$ac_cv_search_opendir" >&6 +if test "$ac_cv_search_opendir" != no; then + test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" + +fi + +else + echo "$as_me:$LINENO: checking for library containing opendir" >&5 +echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 +if test "${ac_cv_search_opendir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_func_search_save_LIBS=$LIBS +ac_cv_search_opendir=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +int +main () +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_opendir="none required" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search_opendir" = no; then + for ac_lib in x; do + LIBS="-l$ac_lib $ac_func_search_save_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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +int +main () +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_opendir="-l$ac_lib" +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done +fi +LIBS=$ac_func_search_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 +echo "${ECHO_T}$ac_cv_search_opendir" >&6 +if test "$ac_cv_search_opendir" != no; then + test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" + +fi + +fi + +echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 +echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6 +if test "${ac_cv_header_time+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_time=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_time=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 +echo "${ECHO_T}$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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `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 +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +echo "$as_me:$LINENO: checking for sys/ptem.h" >&5 +echo $ECHO_N "checking for sys/ptem.h... $ECHO_C" >&6 +if test "${ac_cv_header_sys_ptem_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_sys_ptem_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_sys_ptem_h=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_header_sys_ptem_h" >&5 +echo "${ECHO_T}$ac_cv_header_sys_ptem_h" >&6 + + + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +echo "$as_me:$LINENO: checking for working alloca.h" >&5 +echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 +if test "${ac_cv_working_alloca_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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)); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_working_alloca_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_working_alloca_h=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +echo "${ECHO_T}$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 + +echo "$as_me:$LINENO: checking for alloca" >&5 +echo $ECHO_N "checking for alloca... $ECHO_C" >&6 +if test "${ac_cv_func_alloca_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +# if 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); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_alloca_works=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_alloca_works=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +echo "${ECHO_T}$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=alloca.$ac_objext + +cat >>confdefs.h <<\_ACEOF +#define C_ALLOCA 1 +_ACEOF + + +echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 +if test "${ac_cv_os_cray+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +echo "${ECHO_T}$ac_cv_os_cray" >&6 +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + +cat >>confdefs.h <<_ACEOF +#define CRAY_STACKSEG_END $ac_func +_ACEOF + + break +fi + + done +fi + +echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 +if test "${ac_cv_c_stack_direction+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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. */ +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 () +{ + exit (find_stack_direction () < 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_stack_direction=1 +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_c_stack_direction=-1 +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 + +cat >>confdefs.h <<_ACEOF +#define STACK_DIRECTION $ac_cv_c_stack_direction +_ACEOF + + +fi + +echo "$as_me:$LINENO: checking whether getpgrp requires zero arguments" >&5 +echo $ECHO_N "checking whether getpgrp requires zero arguments... $ECHO_C" >&6 +if test "${ac_cv_func_getpgrp_void+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_getpgrp_void=no +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_getpgrp_void=yes +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $ac_cv_func_getpgrp_void" >&5 +echo "${ECHO_T}$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 + +echo "$as_me:$LINENO: checking whether setvbuf arguments are reversed" >&5 +echo $ECHO_N "checking whether setvbuf arguments are reversed... $ECHO_C" >&6 +if test "${ac_cv_func_setvbuf_reversed+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_func_setvbuf_reversed=no + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +# if PROTOTYPES + int (setvbuf) (FILE *, int, char *, size_t); +# endif +int +main () +{ +char buf; return setvbuf (stdout, _IOLBF, &buf, 1); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +# if PROTOTYPES + int (setvbuf) (FILE *, int, char *, size_t); +# endif +int +main () +{ +char buf; return setvbuf (stdout, &buf, _IOLBF, 1); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + # It compiles and links either way, so it must not be declared + # with a prototype and most likely this is a K&R C compiler. + # Try running it. + if test "$cross_compiling" = yes; then + : # Assume setvbuf is not reversed when cross-compiling. +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 () +{ +/* This call has the arguments reversed. + A reversed system may check and see that the address of buf + is not _IOLBF, _IONBF, or _IOFBF, and return nonzero. */ + char buf; + if (setvbuf (stdout, _IOLBF, &buf, 1) != 0) + exit (1); + putchar ('\r'); + exit (0); /* Non-reversed systems SEGV here. */ + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_setvbuf_reversed=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +rm -f core *.core +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + ac_cv_func_setvbuf_reversed=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_setvbuf_reversed" >&5 +echo "${ECHO_T}$ac_cv_func_setvbuf_reversed" >&6 +if test $ac_cv_func_setvbuf_reversed = yes; then + +cat >>confdefs.h <<\_ACEOF +#define SETVBUF_REVERSED 1 +_ACEOF + +fi + + +for ac_func in vprintf +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +echo "$as_me:$LINENO: checking for _doprnt" >&5 +echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6 +if test "${ac_cv_func__doprnt+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = _doprnt; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != _doprnt; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func__doprnt=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func__doprnt=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5 +echo "${ECHO_T}$ac_cv_func__doprnt" >&6 +if test $ac_cv_func__doprnt = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_DOPRNT 1 +_ACEOF + +fi + +fi +done + + +echo "$as_me:$LINENO: checking for working strcoll" >&5 +echo $ECHO_N "checking for working strcoll... $ECHO_C" >&6 +if test "${ac_cv_func_strcoll_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +exit (strcoll ("abc", "def") >= 0 || + strcoll ("ABC", "DEF") >= 0 || + strcoll ("123", "456") >= 0) + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_strcoll_works=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_func_strcoll_works=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_func_strcoll_works" >&5 +echo "${ECHO_T}$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 + echo "$as_me:$LINENO: checking for declaration of vprintf in stdio.h" >&5 +echo $ECHO_N "checking for declaration of vprintf in stdio.h... $ECHO_C" >&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* + + echo "$as_me:$LINENO: result: $ac_cv_func_vprintf" >&5 +echo "${ECHO_T}$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" | \ + *" vprint.$ac_objext" | \ + "vprint.$ac_objext "* | \ + *" vprint.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS vprint.$ac_objext" ;; +esac + +fi + +echo "$as_me:$LINENO: checking return type of signal handlers" >&5 +echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 +if test "${ac_cv_type_signal+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef signal +# undef signal +#endif +#ifdef __cplusplus +extern "C" void (*signal (int, void (*)(int)))(int); +#else +void (*signal ()) (); +#endif + +int +main () +{ +int i; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_signal=void +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_signal=int +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 +echo "${ECHO_T}$ac_cv_type_signal" >&6 + +cat >>confdefs.h <<_ACEOF +#define RETSIGTYPE $ac_cv_type_signal +_ACEOF + + + +echo "$as_me:$LINENO: checking for __setostype" >&5 +echo $ECHO_N "checking for __setostype... $ECHO_C" >&6 +if test "${ac_cv_func___setostype+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = __setostype; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != __setostype; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func___setostype=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func___setostype=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func___setostype" >&5 +echo "${ECHO_T}$ac_cv_func___setostype" >&6 +if test $ac_cv_func___setostype = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_SETOSTYPE 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for wait3" >&5 +echo $ECHO_N "checking for wait3... $ECHO_C" >&6 +if test "${ac_cv_func_wait3+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = wait3; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != wait3; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_wait3=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_wait3=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_wait3" >&5 +echo "${ECHO_T}$ac_cv_func_wait3" >&6 +if test $ac_cv_func_wait3 = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_WAIT3 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for isinf" >&5 +echo $ECHO_N "checking for isinf... $ECHO_C" >&6 +if test "${ac_cv_func_isinf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = isinf; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != isinf; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_isinf=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_isinf=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_isinf" >&5 +echo "${ECHO_T}$ac_cv_func_isinf" >&6 +if test $ac_cv_func_isinf = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_ISINF_IN_LIBC 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for mkfifo" >&5 +echo $ECHO_N "checking for mkfifo... $ECHO_C" >&6 +if test "${ac_cv_func_mkfifo+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = mkfifo; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != mkfifo; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mkfifo=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_mkfifo=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_mkfifo" >&5 +echo "${ECHO_T}$ac_cv_func_mkfifo" >&6 +if test $ac_cv_func_mkfifo = 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 \ + tcgetpgrp uname ulimit waitpid +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +for ac_func in rename +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + case $LIBOBJS in + "$ac_func.$ac_objext" | \ + *" $ac_func.$ac_objext" | \ + "$ac_func.$ac_objext "* | \ + *" $ac_func.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" ;; +esac + +fi +done + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +for ac_func in bcopy bzero confstr fnmatch \ + getaddrinfo gethostbyname getservbyname getservent inet_aton \ + memmove pathconf putenv raise regcomp regexec \ + setenv setlinebuf setlocale setvbuf siginterrupt strchr \ + sysconf tcgetattr times ttyname tzset unsetenv +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + + + +for ac_func in vsnprintf snprintf vasprintf asprintf +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `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=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + +for ac_func in getpwent getpwnam getpwuid +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + + + + + + +for ac_func in getcwd memset strcasecmp strerror strftime strnlen strpbrk strstr +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + case $LIBOBJS in + "$ac_func.$ac_objext" | \ + *" $ac_func.$ac_objext" | \ + "$ac_func.$ac_objext "* | \ + *" $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=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + case $LIBOBJS in + "$ac_func.$ac_objext" | \ + *" $ac_func.$ac_objext" | \ + "$ac_func.$ac_objext "* | \ + *" $ac_func.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" ;; +esac + +fi +done + + + +echo "$as_me:$LINENO: checking whether confstr is declared" >&5 +echo $ECHO_N "checking whether confstr is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_confstr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + char *p = (char *) confstr; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_confstr=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl_confstr=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_confstr" >&5 +echo "${ECHO_T}$ac_cv_have_decl_confstr" >&6 +if test $ac_cv_have_decl_confstr = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_CONFSTR 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_CONFSTR 0 +_ACEOF + + +fi + + +echo "$as_me:$LINENO: checking whether printf is declared" >&5 +echo $ECHO_N "checking whether printf is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_printf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + char *p = (char *) printf; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_printf=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl_printf=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_printf" >&5 +echo "${ECHO_T}$ac_cv_have_decl_printf" >&6 +if test $ac_cv_have_decl_printf = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_PRINTF 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_PRINTF 0 +_ACEOF + + +fi + + +echo "$as_me:$LINENO: checking whether sbrk is declared" >&5 +echo $ECHO_N "checking whether sbrk is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_sbrk+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + char *p = (char *) sbrk; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_sbrk=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl_sbrk=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_sbrk" >&5 +echo "${ECHO_T}$ac_cv_have_decl_sbrk" >&6 +if test $ac_cv_have_decl_sbrk = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_SBRK 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_SBRK 0 +_ACEOF + + +fi + + +echo "$as_me:$LINENO: checking whether setregid is declared" >&5 +echo $ECHO_N "checking whether setregid is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_setregid+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + char *p = (char *) setregid; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_setregid=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl_setregid=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_setregid" >&5 +echo "${ECHO_T}$ac_cv_have_decl_setregid" >&6 +if test $ac_cv_have_decl_setregid = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_SETREGID 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_SETREGID 0 +_ACEOF + + +fi + + +echo "$as_me:$LINENO: checking whether strcpy is declared" >&5 +echo $ECHO_N "checking whether strcpy is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_strcpy+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + char *p = (char *) strcpy; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_strcpy=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl_strcpy=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_strcpy" >&5 +echo "${ECHO_T}$ac_cv_have_decl_strcpy" >&6 +if test $ac_cv_have_decl_strcpy = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRCPY 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRCPY 0 +_ACEOF + + +fi + + +echo "$as_me:$LINENO: checking whether strsignal is declared" >&5 +echo $ECHO_N "checking whether strsignal is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_strsignal+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + char *p = (char *) strsignal; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_strsignal=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl_strsignal=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_strsignal" >&5 +echo "${ECHO_T}$ac_cv_have_decl_strsignal" >&6 +if test $ac_cv_have_decl_strsignal = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRSIGNAL 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRSIGNAL 0 +_ACEOF + + +fi + + + +echo "$as_me:$LINENO: checking whether strtold is declared" >&5 +echo $ECHO_N "checking whether strtold is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_strtold+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + char *p = (char *) strtold; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_strtold=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl_strtold=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_strtold" >&5 +echo "${ECHO_T}$ac_cv_have_decl_strtold" >&6 +if test $ac_cv_have_decl_strtold = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRTOLD 1 +_ACEOF + + + echo "$as_me:$LINENO: checking for broken strtold" >&5 +echo $ECHO_N "checking for broken strtold... $ECHO_C" >&6 + if test "${bash_cv_strtold_broken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_strtold_broken=no +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_strtold_broken=yes +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + + +fi + + echo "$as_me:$LINENO: result: $bash_cv_strtold_broken" >&5 +echo "${ECHO_T}$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 + + + + + + + +echo "$as_me:$LINENO: checking for declaration of strtoimax" >&5 +echo $ECHO_N "checking for declaration of strtoimax... $ECHO_C" >&6 +if test "${bash_cv_decl_strtoimax+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_decl_strtoimax=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_decl_strtoimax=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoimax" >&5 +echo "${ECHO_T}$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 + + + + +echo "$as_me:$LINENO: checking for declaration of strtol" >&5 +echo $ECHO_N "checking for declaration of strtol... $ECHO_C" >&6 +if test "${bash_cv_decl_strtol+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_decl_strtol=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_decl_strtol=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_decl_strtol" >&5 +echo "${ECHO_T}$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 + + + + +echo "$as_me:$LINENO: checking for declaration of strtoll" >&5 +echo $ECHO_N "checking for declaration of strtoll... $ECHO_C" >&6 +if test "${bash_cv_decl_strtoll+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_decl_strtoll=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_decl_strtoll=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoll" >&5 +echo "${ECHO_T}$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 + + + + +echo "$as_me:$LINENO: checking for declaration of strtoul" >&5 +echo $ECHO_N "checking for declaration of strtoul... $ECHO_C" >&6 +if test "${bash_cv_decl_strtoul+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_decl_strtoul=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_decl_strtoul=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoul" >&5 +echo "${ECHO_T}$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 + + + + +echo "$as_me:$LINENO: checking for declaration of strtoull" >&5 +echo $ECHO_N "checking for declaration of strtoull... $ECHO_C" >&6 +if test "${bash_cv_decl_strtoull+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_decl_strtoull=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_decl_strtoull=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoull" >&5 +echo "${ECHO_T}$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 + + + + +echo "$as_me:$LINENO: checking for declaration of strtoumax" >&5 +echo $ECHO_N "checking for declaration of strtoumax... $ECHO_C" >&6 +if test "${bash_cv_decl_strtoumax+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_decl_strtoumax=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_decl_strtoumax=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoumax" >&5 +echo "${ECHO_T}$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 stdlib.h sys/time.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_func in alarm +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +echo "$as_me:$LINENO: checking for working mktime" >&5 +echo $ECHO_N "checking for working mktime... $ECHO_C" >&6 +if test "${ac_cv_func_working_mktime+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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. */ +#if TIME_WITH_SYS_TIME +# include +# include +#else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif + +#if HAVE_STDLIB_H +# include +#endif + +#if HAVE_UNISTD_H +# include +#endif + +#if !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])) + +/* Fail if mktime fails to convert a date in the spring-forward gap. + Based on a problem report from Andreas Jaeger. */ +static void +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; + if (mktime (&tm) == (time_t)-1) + exit (1); +} + +static void +mktime_test1 (now) + time_t now; +{ + struct tm *lt; + if ((lt = localtime (&now)) && mktime (lt) != now) + exit (1); +} + +static void +mktime_test (now) + time_t now; +{ + mktime_test1 (now); + mktime_test1 ((time_t) (time_t_max - now)); + mktime_test1 ((time_t) (time_t_min + now)); +} + +static void +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); + if (tm.tm_mon != 2 || tm.tm_mday != 31) + exit (1); +} + +static void +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)))) + exit (1); + } +} + +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 (time_t_max = 1; 0 < time_t_max; time_t_max *= 2) + continue; + time_t_max--; + if ((time_t) -1 < 0) + for (time_t_min = -1; (time_t) (time_t_min * 2) < 0; time_t_min *= 2) + continue; + 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) + mktime_test (t); + mktime_test ((time_t) 1); + mktime_test ((time_t) (60 * 60)); + mktime_test ((time_t) (60 * 60 * 24)); + + for (j = 1; 0 < j; j *= 2) + bigtime_test (j); + bigtime_test (j - 1); + } + irix_6_4_bug (); + spring_forward_gap (); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_working_mktime=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_func_working_mktime=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_func_working_mktime" >&5 +echo "${ECHO_T}$ac_cv_func_working_mktime" >&6 +if test $ac_cv_func_working_mktime = no; then + case $LIBOBJS in + "mktime.$ac_objext" | \ + *" mktime.$ac_objext" | \ + "mktime.$ac_objext "* | \ + *" 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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + +for ac_header in stdlib.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_func in getpagesize +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +echo "$as_me:$LINENO: checking for working mmap" >&5 +echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 +if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 !STDC_HEADERS && !HAVE_STDLIB_H +char *malloc (); +#endif + +/* This mess was copied from the GNU getpagesize.h. */ +#if !HAVE_GETPAGESIZE +/* Assume that all systems that can run configure have sys/param.h. */ +# if !HAVE_SYS_PARAM_H +# define HAVE_SYS_PARAM_H 1 +# endif + +# ifdef _SC_PAGESIZE +# define getpagesize() sysconf(_SC_PAGESIZE) +# else /* no _SC_PAGESIZE */ +# if 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) + exit (1); + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) + exit (1); + if (write (fd, data, pagesize) != pagesize) + exit (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) + exit (1); + data2 = (char *) malloc (2 * pagesize); + if (!data2) + exit (1); + data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1); + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + exit (1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + exit (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) + exit (1); + if (read (fd, data3, pagesize) != pagesize) + exit (1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + exit (1); + close (fd); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mmap_fixed_mapped=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +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 -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 +echo "${ECHO_T}$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=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in wchar.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in langinfo.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +echo "$as_me:$LINENO: checking for mbsrtowcs" >&5 +echo $ECHO_N "checking for mbsrtowcs... $ECHO_C" >&6 +if test "${ac_cv_func_mbsrtowcs+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = mbsrtowcs; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != mbsrtowcs; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mbsrtowcs=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_mbsrtowcs=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_mbsrtowcs" >&5 +echo "${ECHO_T}$ac_cv_func_mbsrtowcs" >&6 +if test $ac_cv_func_mbsrtowcs = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_MBSRTOWCS 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for mbrtowc" >&5 +echo $ECHO_N "checking for mbrtowc... $ECHO_C" >&6 +if test "${ac_cv_func_mbrtowc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 mbrtowc to an innocuous variant, in case declares mbrtowc. + For example, HP-UX 11i declares gettimeofday. */ +#define mbrtowc innocuous_mbrtowc + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char mbrtowc (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef mbrtowc + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char mbrtowc (); +/* 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_mbrtowc) || defined (__stub___mbrtowc) +choke me +#else +char (*f) () = mbrtowc; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != mbrtowc; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mbrtowc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_mbrtowc=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_mbrtowc" >&5 +echo "${ECHO_T}$ac_cv_func_mbrtowc" >&6 +if test $ac_cv_func_mbrtowc = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_MBRTOWC 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for mbrlen" >&5 +echo $ECHO_N "checking for mbrlen... $ECHO_C" >&6 +if test "${ac_cv_func_mbrlen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = mbrlen; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != mbrlen; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mbrlen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_mbrlen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_mbrlen" >&5 +echo "${ECHO_T}$ac_cv_func_mbrlen" >&6 +if test $ac_cv_func_mbrlen = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_MBRLEN 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for wctomb" >&5 +echo $ECHO_N "checking for wctomb... $ECHO_C" >&6 +if test "${ac_cv_func_wctomb+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 wctomb to an innocuous variant, in case declares wctomb. + For example, HP-UX 11i declares gettimeofday. */ +#define wctomb innocuous_wctomb + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char wctomb (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef wctomb + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char wctomb (); +/* 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_wctomb) || defined (__stub___wctomb) +choke me +#else +char (*f) () = wctomb; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != wctomb; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_wctomb=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_wctomb=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_wctomb" >&5 +echo "${ECHO_T}$ac_cv_func_wctomb" >&6 +if test $ac_cv_func_wctomb = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_WCTOMB 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for wcwidth" >&5 +echo $ECHO_N "checking for wcwidth... $ECHO_C" >&6 +if test "${ac_cv_func_wcwidth+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = wcwidth; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != wcwidth; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_wcwidth=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_wcwidth=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_wcwidth" >&5 +echo "${ECHO_T}$ac_cv_func_wcwidth" >&6 +if test $ac_cv_func_wcwidth = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_WCWIDTH 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for wcsdup" >&5 +echo $ECHO_N "checking for wcsdup... $ECHO_C" >&6 +if test "${ac_cv_func_wcsdup+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = wcsdup; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != wcsdup; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_wcsdup=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_wcsdup=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_wcsdup" >&5 +echo "${ECHO_T}$ac_cv_func_wcsdup" >&6 +if test $ac_cv_func_wcsdup = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_WCSDUP 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for wctype" >&5 +echo $ECHO_N "checking for wctype... $ECHO_C" >&6 +if test "${ac_cv_func_wctype+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = wctype; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != wctype; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_wctype=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_wctype=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_wctype" >&5 +echo "${ECHO_T}$ac_cv_func_wctype" >&6 +if test $ac_cv_func_wctype = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_WCTYPE 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for mbstate_t" >&5 +echo $ECHO_N "checking for mbstate_t... $ECHO_C" >&6 +if test "${bash_cv_have_mbstate_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ + + mbstate_t ps; + mbstate_t *psp; + psp = (mbstate_t *)0; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_have_mbstate_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_have_mbstate_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_have_mbstate_t" >&5 +echo "${ECHO_T}$bash_cv_have_mbstate_t" >&6 +if test $bash_cv_have_mbstate_t = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_MBSTATE_T 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 +echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6 +if test "${bash_cv_langinfo_codeset+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_langinfo_codeset=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_langinfo_codeset=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_langinfo_codeset" >&5 +echo "${ECHO_T}$bash_cv_langinfo_codeset" >&6 +if test $bash_cv_langinfo_codeset = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_LANGINFO_CODESET 1 +_ACEOF + +fi + + + +if test "$opt_static_link" != yes; then + +echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = 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=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +fi + +echo "$as_me:$LINENO: checking whether sys_siglist is declared" >&5 +echo $ECHO_N "checking whether sys_siglist is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_sys_siglist+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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. */ +#if HAVE_UNISTD_H +# include +#endif + + +int +main () +{ +#ifndef sys_siglist + char *p = (char *) sys_siglist; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_sys_siglist=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl_sys_siglist=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_sys_siglist" >&5 +echo "${ECHO_T}$ac_cv_have_decl_sys_siglist" >&6 +if test $ac_cv_have_decl_sys_siglist = 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 + +echo "$as_me:$LINENO: checking for inet_aton" >&5 +echo $ECHO_N "checking for inet_aton... $ECHO_C" >&6 +if test "${bash_cv_func_inet_aton+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_func_inet_aton=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_func_inet_aton=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_func_inet_aton" >&5 +echo "${ECHO_T}$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" | \ + *" inet_aton.$ac_objext" | \ + "inet_aton.$ac_objext "* | \ + *" inet_aton.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS inet_aton.$ac_objext" ;; +esac + +fi + +fi + +case "$host_os" in +irix4*) +echo "$as_me:$LINENO: checking for getpwent in -lsun" >&5 +echo $ECHO_N "checking for getpwent in -lsun... $ECHO_C" >&6 +if test "${ac_cv_lib_sun_getpwent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char getpwent (); +int +main () +{ +getpwent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_sun_getpwent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_sun_getpwent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_sun_getpwent" >&5 +echo "${ECHO_T}$ac_cv_lib_sun_getpwent" >&6 +if test $ac_cv_lib_sun_getpwent = 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 +echo "$as_me:$LINENO: checking for socket library" >&5 +echo $ECHO_N "checking for socket library... $ECHO_C" >&6 +_bash_needmsg=yes +fi +if test "${bash_cv_have_socklib+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for getpeername in -lsocket" >&5 +echo $ECHO_N "checking for getpeername in -lsocket... $ECHO_C" >&6 +if test "${ac_cv_lib_socket_getpeername+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char getpeername (); +int +main () +{ +getpeername (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_socket_getpeername=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_socket_getpeername=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_socket_getpeername" >&5 +echo "${ECHO_T}$ac_cv_lib_socket_getpeername" >&6 +if test $ac_cv_lib_socket_getpeername = yes; then + bash_cv_have_socklib=yes +else + bash_cv_have_socklib=no +fi + +fi + +if test "X$_bash_needmsg" = Xyes; then + echo "$as_me:$LINENO: result: $bash_cv_have_socklib" >&5 +echo "${ECHO_T}$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 + echo "$as_me:$LINENO: checking for libnsl" >&5 +echo $ECHO_N "checking for libnsl... $ECHO_C" >&6 + _bash_needmsg=yes + fi + if test "${bash_cv_have_libnsl+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for t_open in -lnsl" >&5 +echo $ECHO_N "checking for t_open in -lnsl... $ECHO_C" >&6 +if test "${ac_cv_lib_nsl_t_open+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char t_open (); +int +main () +{ +t_open (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_nsl_t_open=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_nsl_t_open=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_t_open" >&5 +echo "${ECHO_T}$ac_cv_lib_nsl_t_open" >&6 +if test $ac_cv_lib_nsl_t_open = yes; then + bash_cv_have_libnsl=yes +else + bash_cv_have_libnsl=no +fi + +fi + + if test "X$_bash_needmsg" = Xyes; then + echo "$as_me:$LINENO: result: $bash_cv_have_libnsl" >&5 +echo "${ECHO_T}$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 +echo "$as_me:$LINENO: checking for gethostbyname in socket library" >&5 +echo $ECHO_N "checking for gethostbyname in socket library... $ECHO_C" >&6 +_bash_needmsg= +fi +if test "${bash_cv_have_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_have_gethostbyname=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_have_gethostbyname=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi + +if test "X$_bash_needmsg" = Xyes; then + echo "$as_me:$LINENO: checking for gethostbyname in socket library" >&5 +echo $ECHO_N "checking for gethostbyname in socket library... $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $bash_cv_have_gethostbyname" >&5 +echo "${ECHO_T}$bash_cv_have_gethostbyname" >&6 +if test "$bash_cv_have_gethostbyname" = yes; then +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETHOSTBYNAME 1 +_ACEOF + +fi + +fi + +echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5 +echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6 +if test "${ac_cv_type_uid_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 +echo "${ECHO_T}$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 + +echo "$as_me:$LINENO: checking type of array argument to getgroups" >&5 +echo $ECHO_N "checking type of array argument to getgroups... $ECHO_C" >&6 +if test "${ac_cv_type_getgroups+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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. */ +#include +#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 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 but getgroups modifies an array of ints. */ + exit ((n > 0 && gidset[n] != val.gval) ? 1 : 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_getgroups=gid_t +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_type_getgroups=int +fi +rm -f core *.core 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 +echo "$as_me:$LINENO: result: $ac_cv_type_getgroups" >&5 +echo "${ECHO_T}$ac_cv_type_getgroups" >&6 + +cat >>confdefs.h <<_ACEOF +#define GETGROUPS_T $ac_cv_type_getgroups +_ACEOF + + +echo "$as_me:$LINENO: checking for off_t" >&5 +echo $ECHO_N "checking for off_t... $ECHO_C" >&6 +if test "${ac_cv_type_off_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((off_t *) 0) + return 0; +if (sizeof (off_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_off_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_off_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 +echo "${ECHO_T}$ac_cv_type_off_t" >&6 +if test $ac_cv_type_off_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define off_t long +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for mode_t" >&5 +echo $ECHO_N "checking for mode_t... $ECHO_C" >&6 +if test "${ac_cv_type_mode_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((mode_t *) 0) + return 0; +if (sizeof (mode_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_mode_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_mode_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5 +echo "${ECHO_T}$ac_cv_type_mode_t" >&6 +if test $ac_cv_type_mode_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define mode_t int +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5 +echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6 +if test "${ac_cv_type_uid_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 +echo "${ECHO_T}$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 + +echo "$as_me:$LINENO: checking for pid_t" >&5 +echo $ECHO_N "checking for pid_t... $ECHO_C" >&6 +if test "${ac_cv_type_pid_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((pid_t *) 0) + return 0; +if (sizeof (pid_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_pid_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_pid_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 +echo "${ECHO_T}$ac_cv_type_pid_t" >&6 +if test $ac_cv_type_pid_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define pid_t int +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for size_t" >&5 +echo $ECHO_N "checking for size_t... $ECHO_C" >&6 +if test "${ac_cv_type_size_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((size_t *) 0) + return 0; +if (sizeof (size_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_size_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_size_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +echo "${ECHO_T}$ac_cv_type_size_t" >&6 +if test $ac_cv_type_size_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for ssize_t" >&5 +echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6 +if test "${ac_cv_type_ssize_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((ssize_t *) 0) + return 0; +if (sizeof (ssize_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ssize_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_ssize_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5 +echo "${ECHO_T}$ac_cv_type_ssize_t" >&6 +if test $ac_cv_type_ssize_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define ssize_t int +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for time_t" >&5 +echo $ECHO_N "checking for time_t... $ECHO_C" >&6 +if test "${ac_cv_type_time_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((time_t *) 0) + return 0; +if (sizeof (time_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_time_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_time_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_time_t" >&5 +echo "${ECHO_T}$ac_cv_type_time_t" >&6 +if test $ac_cv_type_time_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define time_t long +_ACEOF + +fi + + + +echo "$as_me:$LINENO: checking for long long" >&5 +echo $ECHO_N "checking for long long... $ECHO_C" >&6 +if test "${bash_cv_type_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +long long ll = 1; int i = 63; +int +main () +{ + +long long llm = (long long) -1; +return ll << i | ll >> i | llm / ll | llm % ll; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_type_long_long='long long' +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_type_long_long='long' +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_type_long_long" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking for unsigned long long" >&5 +echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6 +if test "${bash_cv_type_unsigned_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ + +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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_type_unsigned_long_long='unsigned long long' +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_type_unsigned_long_long='unsigned long' +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_type_unsigned_long_long" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking return type of signal handlers" >&5 +echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 +if test "${ac_cv_type_signal+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef signal +# undef signal +#endif +#ifdef __cplusplus +extern "C" void (*signal (int, void (*)(int)))(int); +#else +void (*signal ()) (); +#endif + +int +main () +{ +int i; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_signal=void +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_signal=int +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 +echo "${ECHO_T}$ac_cv_type_signal" >&6 + +cat >>confdefs.h <<_ACEOF +#define RETSIGTYPE $ac_cv_type_signal +_ACEOF + + + +echo "$as_me:$LINENO: checking for char" >&5 +echo $ECHO_N "checking for char... $ECHO_C" >&6 +if test "${ac_cv_type_char+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((char *) 0) + return 0; +if (sizeof (char)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_char=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_char=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_char" >&5 +echo "${ECHO_T}$ac_cv_type_char" >&6 + +echo "$as_me:$LINENO: checking size of char" >&5 +echo $ECHO_N "checking size of char... $ECHO_C" >&6 +if test "${ac_cv_sizeof_char+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_char" = yes; then + # The cast to unsigned long 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. + 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) (sizeof (char))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (char))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + 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) (sizeof (char))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (char))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f 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) (sizeof (char))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_char=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (char), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (char), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +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 +long longval () { return (long) (sizeof (char)); } +unsigned long ulongval () { return (long) (sizeof (char)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (char))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (char)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (char)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_char=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (char), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (char), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_char=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_char" >&5 +echo "${ECHO_T}$ac_cv_sizeof_char" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_CHAR $ac_cv_sizeof_char +_ACEOF + + +echo "$as_me:$LINENO: checking for short" >&5 +echo $ECHO_N "checking for short... $ECHO_C" >&6 +if test "${ac_cv_type_short+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((short *) 0) + return 0; +if (sizeof (short)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_short=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_short=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_short" >&5 +echo "${ECHO_T}$ac_cv_type_short" >&6 + +echo "$as_me:$LINENO: checking size of short" >&5 +echo $ECHO_N "checking size of short... $ECHO_C" >&6 +if test "${ac_cv_sizeof_short+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_short" = yes; then + # The cast to unsigned long 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. + 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) (sizeof (short))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (short))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + 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) (sizeof (short))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (short))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f 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) (sizeof (short))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_short=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (short), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +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 +long longval () { return (long) (sizeof (short)); } +unsigned long ulongval () { return (long) (sizeof (short)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (short))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (short)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (short)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_short=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (short), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_short=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5 +echo "${ECHO_T}$ac_cv_sizeof_short" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_SHORT $ac_cv_sizeof_short +_ACEOF + + +echo "$as_me:$LINENO: checking for int" >&5 +echo $ECHO_N "checking for int... $ECHO_C" >&6 +if test "${ac_cv_type_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((int *) 0) + return 0; +if (sizeof (int)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_int=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_int=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5 +echo "${ECHO_T}$ac_cv_type_int" >&6 + +echo "$as_me:$LINENO: checking size of int" >&5 +echo $ECHO_N "checking size of int... $ECHO_C" >&6 +if test "${ac_cv_sizeof_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_int" = yes; then + # The cast to unsigned long 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. + 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) (sizeof (int))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (int))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + 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) (sizeof (int))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (int))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f 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) (sizeof (int))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_int=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +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 +long longval () { return (long) (sizeof (int)); } +unsigned long ulongval () { return (long) (sizeof (int)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (int))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (int)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (int)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_int=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_int=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 +echo "${ECHO_T}$ac_cv_sizeof_int" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_INT $ac_cv_sizeof_int +_ACEOF + + +echo "$as_me:$LINENO: checking for long" >&5 +echo $ECHO_N "checking for long... $ECHO_C" >&6 +if test "${ac_cv_type_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((long *) 0) + return 0; +if (sizeof (long)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_long=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_long=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5 +echo "${ECHO_T}$ac_cv_type_long" >&6 + +echo "$as_me:$LINENO: checking size of long" >&5 +echo $ECHO_N "checking size of long... $ECHO_C" >&6 +if test "${ac_cv_sizeof_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_long" = yes; then + # The cast to unsigned long 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. + 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) (sizeof (long))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + 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) (sizeof (long))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (long))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f 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) (sizeof (long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_long=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +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 +long longval () { return (long) (sizeof (long)); } +unsigned long ulongval () { return (long) (sizeof (long)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (long))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (long)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (long)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_long=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_long=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_LONG $ac_cv_sizeof_long +_ACEOF + + +echo "$as_me:$LINENO: checking for char *" >&5 +echo $ECHO_N "checking for char *... $ECHO_C" >&6 +if test "${ac_cv_type_char_p+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((char * *) 0) + return 0; +if (sizeof (char *)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_char_p=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_char_p=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_char_p" >&5 +echo "${ECHO_T}$ac_cv_type_char_p" >&6 + +echo "$as_me:$LINENO: checking size of char *" >&5 +echo $ECHO_N "checking size of char *... $ECHO_C" >&6 +if test "${ac_cv_sizeof_char_p+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_char_p" = yes; then + # The cast to unsigned long 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. + 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) (sizeof (char *))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (char *))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + 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) (sizeof (char *))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (char *))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f 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) (sizeof (char *))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_char_p=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (char *), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (char *), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +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 +long longval () { return (long) (sizeof (char *)); } +unsigned long ulongval () { return (long) (sizeof (char *)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (char *))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (char *)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (char *)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_char_p=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (char *), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (char *), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_char_p=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_char_p" >&5 +echo "${ECHO_T}$ac_cv_sizeof_char_p" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_CHAR_P $ac_cv_sizeof_char_p +_ACEOF + + +echo "$as_me:$LINENO: checking for double" >&5 +echo $ECHO_N "checking for double... $ECHO_C" >&6 +if test "${ac_cv_type_double+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((double *) 0) + return 0; +if (sizeof (double)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_double=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_double=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_double" >&5 +echo "${ECHO_T}$ac_cv_type_double" >&6 + +echo "$as_me:$LINENO: checking size of double" >&5 +echo $ECHO_N "checking size of double... $ECHO_C" >&6 +if test "${ac_cv_sizeof_double+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_double" = yes; then + # The cast to unsigned long 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. + 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) (sizeof (double))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (double))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + 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) (sizeof (double))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (double))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f 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) (sizeof (double))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_double=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (double), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +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 +long longval () { return (long) (sizeof (double)); } +unsigned long ulongval () { return (long) (sizeof (double)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (double))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (double)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (double)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_double=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (double), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_double=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_double" >&5 +echo "${ECHO_T}$ac_cv_sizeof_double" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_DOUBLE $ac_cv_sizeof_double +_ACEOF + + +echo "$as_me:$LINENO: checking for long long" >&5 +echo $ECHO_N "checking for long long... $ECHO_C" >&6 +if test "${ac_cv_type_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((long long *) 0) + return 0; +if (sizeof (long long)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_long_long=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_long_long=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 +echo "${ECHO_T}$ac_cv_type_long_long" >&6 + +echo "$as_me:$LINENO: checking size of long long" >&5 +echo $ECHO_N "checking size of long long... $ECHO_C" >&6 +if test "${ac_cv_sizeof_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_long_long" = yes; then + # The cast to unsigned long 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. + 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) (sizeof (long long))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (long long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + 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) (sizeof (long long))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (long long))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f 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) (sizeof (long long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_long_long=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +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 +long longval () { return (long) (sizeof (long long)); } +unsigned long ulongval () { return (long) (sizeof (long long)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (long long))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (long long)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (long long)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_long_long=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_long_long=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long +_ACEOF + + + +echo "$as_me:$LINENO: checking for u_int" >&5 +echo $ECHO_N "checking for u_int... $ECHO_C" >&6 +if test "${ac_cv_type_u_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((u_int *) 0) + return 0; +if (sizeof (u_int)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_int=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_u_int=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_int" >&5 +echo "${ECHO_T}$ac_cv_type_u_int" >&6 +if test $ac_cv_type_u_int = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define u_int unsigned int +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for u_long" >&5 +echo $ECHO_N "checking for u_long... $ECHO_C" >&6 +if test "${ac_cv_type_u_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((u_long *) 0) + return 0; +if (sizeof (u_long)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_long=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_u_long=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_long" >&5 +echo "${ECHO_T}$ac_cv_type_u_long" >&6 +if test $ac_cv_type_u_long = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define u_long unsigned long +_ACEOF + +fi + + + +if test "$ac_cv_sizeof_short" = 2; then + echo "$as_me:$LINENO: checking for bits16_t" >&5 +echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits16_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits16_t *) 0) + return 0; +if (sizeof (bits16_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits16_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits16_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits16_t" >&6 +if test $ac_cv_type_bits16_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define bits16_t short +_ACEOF + +fi + +elif test "$ac_cv_sizeof_char" = 2; then + echo "$as_me:$LINENO: checking for bits16_t" >&5 +echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits16_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits16_t *) 0) + return 0; +if (sizeof (bits16_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits16_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits16_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits16_t" >&6 +if test $ac_cv_type_bits16_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define bits16_t char +_ACEOF + +fi + +else + echo "$as_me:$LINENO: checking for bits16_t" >&5 +echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits16_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits16_t *) 0) + return 0; +if (sizeof (bits16_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits16_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits16_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits16_t" >&6 +if test $ac_cv_type_bits16_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define bits16_t short +_ACEOF + +fi + +fi + + +if test "$ac_cv_sizeof_short" = 2; then + echo "$as_me:$LINENO: checking for u_bits16_t" >&5 +echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6 +if test "${ac_cv_type_u_bits16_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((u_bits16_t *) 0) + return 0; +if (sizeof (u_bits16_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_bits16_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_u_bits16_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6 +if test $ac_cv_type_u_bits16_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define u_bits16_t unsigned short +_ACEOF + +fi + +elif test "$ac_cv_sizeof_char" = 2; then + echo "$as_me:$LINENO: checking for u_bits16_t" >&5 +echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6 +if test "${ac_cv_type_u_bits16_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((u_bits16_t *) 0) + return 0; +if (sizeof (u_bits16_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_bits16_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_u_bits16_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6 +if test $ac_cv_type_u_bits16_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define u_bits16_t unsigned char +_ACEOF + +fi + +else + echo "$as_me:$LINENO: checking for u_bits16_t" >&5 +echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6 +if test "${ac_cv_type_u_bits16_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((u_bits16_t *) 0) + return 0; +if (sizeof (u_bits16_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_bits16_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_u_bits16_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6 +if test $ac_cv_type_u_bits16_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define u_bits16_t unsigned short +_ACEOF + +fi + +fi + + +if test "$ac_cv_sizeof_int" = 4; then + echo "$as_me:$LINENO: checking for bits32_t" >&5 +echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits32_t *) 0) + return 0; +if (sizeof (bits32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits32_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits32_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits32_t" >&6 +if test $ac_cv_type_bits32_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define bits32_t int +_ACEOF + +fi + +elif test "$ac_cv_sizeof_long" = 4; then + echo "$as_me:$LINENO: checking for bits32_t" >&5 +echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits32_t *) 0) + return 0; +if (sizeof (bits32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits32_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits32_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits32_t" >&6 +if test $ac_cv_type_bits32_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define bits32_t long +_ACEOF + +fi + +else + echo "$as_me:$LINENO: checking for bits32_t" >&5 +echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits32_t *) 0) + return 0; +if (sizeof (bits32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits32_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits32_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits32_t" >&6 +if test $ac_cv_type_bits32_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define bits32_t int +_ACEOF + +fi + +fi + + +if test "$ac_cv_sizeof_int" = 4; then + echo "$as_me:$LINENO: checking for u_bits32_t" >&5 +echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6 +if test "${ac_cv_type_u_bits32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((u_bits32_t *) 0) + return 0; +if (sizeof (u_bits32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_bits32_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_u_bits32_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6 +if test $ac_cv_type_u_bits32_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define u_bits32_t unsigned int +_ACEOF + +fi + +elif test "$ac_cv_sizeof_long" = 4; then + echo "$as_me:$LINENO: checking for u_bits32_t" >&5 +echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6 +if test "${ac_cv_type_u_bits32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((u_bits32_t *) 0) + return 0; +if (sizeof (u_bits32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_bits32_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_u_bits32_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6 +if test $ac_cv_type_u_bits32_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define u_bits32_t unsigned long +_ACEOF + +fi + +else + echo "$as_me:$LINENO: checking for u_bits32_t" >&5 +echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6 +if test "${ac_cv_type_u_bits32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((u_bits32_t *) 0) + return 0; +if (sizeof (u_bits32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_bits32_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_u_bits32_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6 +if test $ac_cv_type_u_bits32_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define u_bits32_t unsigned int +_ACEOF + +fi + +fi + + +if test "$ac_cv_sizeof_char_p" = 8; then + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits64_t *) 0) + return 0; +if (sizeof (bits64_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits64_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits64_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 +if test $ac_cv_type_bits64_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define bits64_t char * +_ACEOF + +fi + +elif test "$ac_cv_sizeof_double" = 8; then + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits64_t *) 0) + return 0; +if (sizeof (bits64_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits64_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits64_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 +if test $ac_cv_type_bits64_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define bits64_t double +_ACEOF + +fi + +elif test -n "$ac_cv_type_long_long" && test "$ac_cv_sizeof_long_long" = 8; then + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits64_t *) 0) + return 0; +if (sizeof (bits64_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits64_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits64_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 +if test $ac_cv_type_bits64_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define bits64_t long long +_ACEOF + +fi + +elif test "$ac_cv_sizeof_long" = 8; then + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits64_t *) 0) + return 0; +if (sizeof (bits64_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits64_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits64_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 +if test $ac_cv_type_bits64_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define bits64_t long +_ACEOF + +fi + +else + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits64_t *) 0) + return 0; +if (sizeof (bits64_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits64_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits64_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 +if test $ac_cv_type_bits64_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define bits64_t double +_ACEOF + +fi + +fi + + + +if test "$ac_cv_sizeof_int" = "$ac_cv_sizeof_char_p"; then + echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 +if test "${ac_cv_type_ptrdiff_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((ptrdiff_t *) 0) + return 0; +if (sizeof (ptrdiff_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ptrdiff_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_ptrdiff_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 +if test $ac_cv_type_ptrdiff_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define ptrdiff_t int +_ACEOF + +fi + +elif test "$ac_cv_sizeof_long" = "$ac_cv_sizeof_char_p"; then + echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 +if test "${ac_cv_type_ptrdiff_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((ptrdiff_t *) 0) + return 0; +if (sizeof (ptrdiff_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ptrdiff_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_ptrdiff_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 +if test $ac_cv_type_ptrdiff_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define ptrdiff_t long +_ACEOF + +fi + +elif test "$ac_cv_type_long_long" = yes && test "$ac_cv_sizeof_long_long" = "$ac_cv_sizeof_char_p"; then + echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 +if test "${ac_cv_type_ptrdiff_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((ptrdiff_t *) 0) + return 0; +if (sizeof (ptrdiff_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ptrdiff_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_ptrdiff_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 +if test $ac_cv_type_ptrdiff_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define ptrdiff_t long long +_ACEOF + +fi + +else + echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 +if test "${ac_cv_type_ptrdiff_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((ptrdiff_t *) 0) + return 0; +if (sizeof (ptrdiff_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ptrdiff_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_ptrdiff_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 +if test $ac_cv_type_ptrdiff_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define ptrdiff_t int +_ACEOF + +fi + +fi + + +echo "$as_me:$LINENO: checking whether stat file-mode macros are broken" >&5 +echo $ECHO_N "checking whether stat file-mode macros are broken... $ECHO_C" >&6 +if test "${ac_cv_header_stat_broken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + +#if defined(S_ISBLK) && defined(S_IFDIR) +# if S_ISBLK (S_IFDIR) +You lose. +# endif +#endif + +#if defined(S_ISBLK) && defined(S_IFCHR) +# if S_ISBLK (S_IFCHR) +You lose. +# endif +#endif + +#if defined(S_ISLNK) && defined(S_IFREG) +# if S_ISLNK (S_IFREG) +You lose. +# endif +#endif + +#if defined(S_ISSOCK) && defined(S_IFREG) +# if S_ISSOCK (S_IFREG) +You lose. +# endif +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "You lose" >/dev/null 2>&1; then + ac_cv_header_stat_broken=yes +else + ac_cv_header_stat_broken=no +fi +rm -f conftest* + +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stat_broken" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking whether #! works in shell scripts" >&5 +echo $ECHO_N "checking whether #! works in shell scripts... $ECHO_C" >&6 +if test "${ac_cv_sys_interpreter+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + echo '#! /bin/cat +exit 69 +' >conftest +chmod u+x conftest +(SHELL=/bin/sh; export SHELL; ./conftest >/dev/null) +if test $? -ne 69; then + ac_cv_sys_interpreter=yes +else + ac_cv_sys_interpreter=no +fi +rm -f conftest +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_interpreter" >&5 +echo "${ECHO_T}$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 + +fi + +if test "$ac_cv_func_lstat" = "no"; then +echo "$as_me:$LINENO: checking for lstat" >&5 +echo $ECHO_N "checking for lstat... $ECHO_C" >&6 +if test "${bash_cv_func_lstat+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ + lstat(".",(struct stat *)0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_func_lstat=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_func_lstat=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_func_lstat" >&5 +echo "${ECHO_T}$bash_cv_func_lstat" >&6 +if test $bash_cv_func_lstat = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_LSTAT 1 +_ACEOF + +fi + +fi + + +echo "$as_me:$LINENO: checking whether the ctype macros accept non-ascii characters" >&5 +echo $ECHO_N "checking whether the ctype macros accept non-ascii characters... $ECHO_C" >&6 +if test "${bash_cv_func_ctype_nonascii+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check ctype macros if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#ifdef HAVE_LOCALE_H +#include +#endif +#include +#include + +main(c, v) +int c; +char *v[]; +{ + char *deflocale; + unsigned char x; + int r1, r2; + +#ifdef HAVE_SETLOCALE + /* We take a shot here. If that locale is not known, try the + system default. We try this one because '\342' (226) is + known to be a printable character in that locale. */ + deflocale = setlocale(LC_ALL, "en_US.ISO8859-1"); + if (deflocale == 0) + deflocale = setlocale(LC_ALL, ""); +#endif + + x = '\342'; + r1 = isprint(x); + x -= 128; + r2 = isprint(x); + exit (r1 == 0 || r2 == 0); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_func_ctype_nonascii=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_func_ctype_nonascii=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_func_ctype_nonascii" >&5 +echo "${ECHO_T}$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 + +fi + +echo "$as_me:$LINENO: checking if dup2 fails to clear the close-on-exec flag" >&5 +echo $ECHO_N "checking if dup2 fails to clear the close-on-exec flag... $ECHO_C" >&6 +if test "${bash_cv_dup2_broken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check dup2 if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#include +#include +main() +{ + int fd1, fd2, fl; + fd1 = open("/dev/null", 2); + if (fcntl(fd1, 2, 1) < 0) + exit(1); + fd2 = dup2(fd1, 1); + if (fd2 < 0) + exit(2); + fl = fcntl(fd2, 1, 0); + /* fl will be 1 if dup2 did not reset the close-on-exec flag. */ + exit(fl != 1); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_dup2_broken=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_dup2_broken=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + +fi + +echo "$as_me:$LINENO: result: $bash_cv_dup2_broken" >&5 +echo "${ECHO_T}$bash_cv_dup2_broken" >&6 +if test $bash_cv_dup2_broken = yes; then +cat >>confdefs.h <<\_ACEOF +#define DUP2_BROKEN 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking whether pgrps need synchronization" >&5 +echo $ECHO_N "checking whether pgrps need synchronization... $ECHO_C" >&6 +if test "${bash_cv_pgrp_pipe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check pgrp synchronization if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#ifdef HAVE_UNISTD_H +# include +#endif +main() +{ +# ifdef GETPGRP_VOID +# define getpgID() getpgrp() +# else +# define getpgID() getpgrp(0) +# define setpgid(x,y) setpgrp(x,y) +# endif + int pid1, pid2, fds[2]; + int status; + char ok; + + switch (pid1 = fork()) { + case -1: + exit(1); + case 0: + setpgid(0, getpid()); + exit(0); + } + setpgid(pid1, pid1); + + sleep(2); /* let first child die */ + + if (pipe(fds) < 0) + exit(2); + + switch (pid2 = fork()) { + case -1: + exit(3); + case 0: + setpgid(0, pid1); + ok = getpgID() == pid1; + write(fds[1], &ok, 1); + exit(0); + } + setpgid(pid2, pid1); + + close(fds[1]); + if (read(fds[0], &ok, 1) != 1) + exit(4); + wait(&status); + wait(&status); + exit(ok ? 0 : 5); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_pgrp_pipe=no +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_pgrp_pipe=yes +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + +fi + +echo "$as_me:$LINENO: result: $bash_cv_pgrp_pipe" >&5 +echo "${ECHO_T}$bash_cv_pgrp_pipe" >&6 +if test $bash_cv_pgrp_pipe = yes; then +cat >>confdefs.h <<\_ACEOF +#define PGRP_PIPE 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for type of signal functions" >&5 +echo $ECHO_N "checking for type of signal functions... $ECHO_C" >&6 +if test "${bash_cv_signal_vintage+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ + + sigset_t ss; + struct sigaction sa; + sigemptyset(&ss); sigsuspend(&ss); + sigaction(SIGINT, &sa, (struct sigaction *) 0); + sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_signal_vintage=posix +else + 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. */ +#include +int +main () +{ + + int mask = sigmask(SIGINT); + sigsetmask(mask); sigblock(mask); sigpause(mask); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_signal_vintage=4.2bsd +else + 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. */ + + #include + RETSIGTYPE foo() { } +int +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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_signal_vintage=svr3 +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_signal_vintage=v7 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi + +echo "$as_me:$LINENO: result: $bash_cv_signal_vintage" >&5 +echo "${ECHO_T}$bash_cv_signal_vintage" >&6 +if test "$bash_cv_signal_vintage" = posix; then +cat >>confdefs.h <<\_ACEOF +#define HAVE_POSIX_SIGNALS 1 +_ACEOF + +elif test "$bash_cv_signal_vintage" = "4.2bsd"; then +cat >>confdefs.h <<\_ACEOF +#define HAVE_BSD_SIGNALS 1 +_ACEOF + +elif test "$bash_cv_signal_vintage" = svr3; then +cat >>confdefs.h <<\_ACEOF +#define HAVE_USG_SIGHOLD 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for sys_errlist and sys_nerr" >&5 +echo $ECHO_N "checking for sys_errlist and sys_nerr... $ECHO_C" >&6 +if test "${bash_cv_sys_errlist+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +extern char *sys_errlist[]; + extern int sys_nerr; + char *msg = sys_errlist[sys_nerr - 1]; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_sys_errlist=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_sys_errlist=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_sys_errlist" >&5 +echo "${ECHO_T}$bash_cv_sys_errlist" >&6 +if test $bash_cv_sys_errlist = yes; then +cat >>confdefs.h <<\_ACEOF +#define HAVE_SYS_ERRLIST 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for sys_siglist in system C library" >&5 +echo $ECHO_N "checking for sys_siglist in system C library... $ECHO_C" >&6 +if test "${bash_cv_sys_siglist+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check for sys_siglist if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifndef SYS_SIGLIST_DECLARED +extern char *sys_siglist[]; +#endif +main() +{ +char *msg = sys_siglist[2]; +exit(msg == 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_sys_siglist=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_sys_siglist=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_sys_siglist" >&5 +echo "${ECHO_T}$bash_cv_sys_siglist" >&6 +if test $bash_cv_sys_siglist = yes; then +cat >>confdefs.h <<\_ACEOF +#define HAVE_SYS_SIGLIST 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for _sys_siglist in signal.h or unistd.h" >&5 +echo $ECHO_N "checking for _sys_siglist in signal.h or unistd.h... $ECHO_C" >&6 +if test "${bash_cv_decl_under_sys_siglist+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef HAVE_UNISTD_H +#include +#endif +int +main () +{ + char *msg = _sys_siglist[2]; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_decl_under_sys_siglist=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_decl_under_sys_siglist=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_decl_under_sys_siglist" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking for _sys_siglist in system C library" >&5 +echo $ECHO_N "checking for _sys_siglist in system C library... $ECHO_C" >&6 +if test "${bash_cv_under_sys_siglist+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check for _sys_siglist if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifndef UNDER_SYS_SIGLIST_DECLARED +extern char *_sys_siglist[]; +#endif +main() +{ +char *msg = (char *)_sys_siglist[2]; +exit(msg == 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_under_sys_siglist=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_under_sys_siglist=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_under_sys_siglist" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking whether signal handlers are of type void" >&5 +echo $ECHO_N "checking whether signal handlers are of type void... $ECHO_C" >&6 +if test "${bash_cv_void_sighandler+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef signal +#undef signal +#endif +#ifdef __cplusplus +extern "C" +#endif +void (*signal ()) (); +int +main () +{ +int i; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_void_sighandler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_void_sighandler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_void_sighandler" >&5 +echo "${ECHO_T}$bash_cv_void_sighandler" >&6 +if test $bash_cv_void_sighandler = yes; then +cat >>confdefs.h <<\_ACEOF +#define VOID_SIGHANDLER 1 +_ACEOF + +fi + + + +echo "$as_me:$LINENO: checking for clock_t" >&5 +echo $ECHO_N "checking for clock_t... $ECHO_C" >&6 +if test "${bash_cv_type_clock_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "clock_t" >/dev/null 2>&1; then + bash_cv_type_clock_t=yes +else + bash_cv_type_clock_t=no +fi +rm -f conftest* + +fi + +echo "$as_me:$LINENO: result: $bash_cv_type_clock_t" >&5 +echo "${ECHO_T}$bash_cv_type_clock_t" >&6 + +if test $bash_cv_type_clock_t = no; then + cat >>confdefs.h <<_ACEOF +#define clock_t long +_ACEOF + +fi + + + +echo "$as_me:$LINENO: checking for sigset_t" >&5 +echo $ECHO_N "checking for sigset_t... $ECHO_C" >&6 +if test "${bash_cv_type_sigset_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#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 + +echo "$as_me:$LINENO: result: $bash_cv_type_sigset_t" >&5 +echo "${ECHO_T}$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 + + + +echo "$as_me:$LINENO: checking for quad_t" >&5 +echo $ECHO_N "checking for quad_t... $ECHO_C" >&6 +if test "${bash_cv_type_quad_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + + +_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 + +echo "$as_me:$LINENO: result: $bash_cv_type_quad_t" >&5 +echo "${ECHO_T}$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 + + + +echo "$as_me:$LINENO: checking for intmax_t" >&5 +echo $ECHO_N "checking for intmax_t... $ECHO_C" >&6 +if test "${bash_cv_type_intmax_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + + +_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 + +echo "$as_me:$LINENO: result: $bash_cv_type_intmax_t" >&5 +echo "${ECHO_T}$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 + + + +echo "$as_me:$LINENO: checking for uintmax_t" >&5 +echo $ECHO_N "checking for uintmax_t... $ECHO_C" >&6 +if test "${bash_cv_type_uintmax_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + + +_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 + +echo "$as_me:$LINENO: result: $bash_cv_type_uintmax_t" >&5 +echo "${ECHO_T}$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 + + +echo "$as_me:$LINENO: checking for socklen_t" >&5 +echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6 +if test "${bash_cv_type_socklen_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#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 +else + bash_cv_type_socklen_t=no +fi +rm -f conftest* + +fi + +echo "$as_me:$LINENO: result: $bash_cv_type_socklen_t" >&5 +echo "${ECHO_T}$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 + + fi +if test $bash_cv_type_socklen_t = no; then + cat >>confdefs.h <<_ACEOF +#define socklen_t int +_ACEOF + +fi + +fi +echo "$as_me:$LINENO: checking for size and type of struct rlimit fields" >&5 +echo $ECHO_N "checking for size and type of struct rlimit fields... $ECHO_C" >&6 +if test "${bash_cv_type_rlimit+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_type_rlimit=rlim_t +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check quad_t if cross compiling -- defaulting to long" >&5 +echo "$as_me: WARNING: cannot check quad_t if cross compiling -- defaulting to long" >&2;} + bash_cv_type_rlimit=long +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 +main() +{ +#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_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_type_rlimit=quad_t +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_type_rlimit=long +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi + +echo "$as_me:$LINENO: result: $bash_cv_type_rlimit" >&5 +echo "${ECHO_T}$bash_cv_type_rlimit" >&6 +if test $bash_cv_type_rlimit = quad_t; then +cat >>confdefs.h <<\_ACEOF +#define RLIMTYPE quad_t +_ACEOF + +elif test $bash_cv_type_rlimit = rlim_t; then +cat >>confdefs.h <<\_ACEOF +#define RLIMTYPE rlim_t +_ACEOF + +fi + + + +echo "$as_me:$LINENO: checking for struct termios.c_line" >&5 +echo $ECHO_N "checking for struct termios.c_line... $ECHO_C" >&6 +if test "${ac_cv_member_struct_termios_c_line+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +static struct termios ac_aggr; +if (ac_aggr.c_line) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_termios_c_line=yes +else + 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. */ + +#include +#include + + +int +main () +{ +static struct termios ac_aggr; +if (sizeof ac_aggr.c_line) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_termios_c_line=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_struct_termios_c_line=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_termios_c_line" >&5 +echo "${ECHO_T}$ac_cv_member_struct_termios_c_line" >&6 +if test $ac_cv_member_struct_termios_c_line = yes; then + cat >>confdefs.h <<\_ACEOF +#define TERMIOS_LDISC 1 +_ACEOF + +fi + + + +echo "$as_me:$LINENO: checking for struct termio.c_line" >&5 +echo $ECHO_N "checking for struct termio.c_line... $ECHO_C" >&6 +if test "${ac_cv_member_struct_termio_c_line+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +static struct termio ac_aggr; +if (ac_aggr.c_line) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_termio_c_line=yes +else + 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. */ + +#include +#include + + +int +main () +{ +static struct termio ac_aggr; +if (sizeof ac_aggr.c_line) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_termio_c_line=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_struct_termio_c_line=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_termio_c_line" >&5 +echo "${ECHO_T}$ac_cv_member_struct_termio_c_line" >&6 +if test $ac_cv_member_struct_termio_c_line = yes; then + cat >>confdefs.h <<\_ACEOF +#define TERMIO_LDISC 1 +_ACEOF + +fi + + + +echo "$as_me:$LINENO: checking for struct dirent.d_ino" >&5 +echo $ECHO_N "checking for struct dirent.d_ino... $ECHO_C" >&6 +if test "${bash_cv_dirent_has_dino+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ +#if defined(HAVE_DIRENT_H) +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif /* SYSNDIR */ +# ifdef HAVE_SYS_DIR_H +# include +# endif /* SYSDIR */ +# ifdef HAVE_NDIR_H +# include +# endif +#endif /* HAVE_DIRENT_H */ + +int +main () +{ + +struct dirent d; int z; z = d.d_ino; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_dirent_has_dino=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_dirent_has_dino=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_dirent_has_dino" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking for struct dirent.d_fileno" >&5 +echo $ECHO_N "checking for struct dirent.d_fileno... $ECHO_C" >&6 +if test "${bash_cv_dirent_has_d_fileno+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ +#if defined(HAVE_DIRENT_H) +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif /* SYSNDIR */ +# ifdef HAVE_SYS_DIR_H +# include +# endif /* SYSDIR */ +# ifdef HAVE_NDIR_H +# include +# endif +#endif /* HAVE_DIRENT_H */ + +int +main () +{ + +struct dirent d; int z; z = d.d_fileno; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_dirent_has_d_fileno=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_dirent_has_d_fileno=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_dirent_has_d_fileno" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking for struct dirent.d_namlen" >&5 +echo $ECHO_N "checking for struct dirent.d_namlen... $ECHO_C" >&6 +if test "${bash_cv_dirent_has_d_namlen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ +#if defined(HAVE_DIRENT_H) +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif /* SYSNDIR */ +# ifdef HAVE_SYS_DIR_H +# include +# endif /* SYSDIR */ +# ifdef HAVE_NDIR_H +# include +# endif +#endif /* HAVE_DIRENT_H */ + +int +main () +{ + +struct dirent d; int z; z = d.d_namlen; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_dirent_has_d_namlen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_dirent_has_d_namlen=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_dirent_has_d_namlen" >&5 +echo "${ECHO_T}$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 + +fi + +echo "$as_me:$LINENO: checking for struct winsize in sys/ioctl.h and termios.h" >&5 +echo $ECHO_N "checking for struct winsize in sys/ioctl.h and termios.h... $ECHO_C" >&6 +if test "${bash_cv_struct_winsize_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 winsize x; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_struct_winsize_header=ioctl_h +else + 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. */ +#include +#include +int +main () +{ +struct winsize x; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_struct_winsize_header=termios_h +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_struct_winsize_header=other +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +if test $bash_cv_struct_winsize_header = ioctl_h; then + echo "$as_me:$LINENO: result: sys/ioctl.h" >&5 +echo "${ECHO_T}sys/ioctl.h" >&6 + cat >>confdefs.h <<\_ACEOF +#define STRUCT_WINSIZE_IN_SYS_IOCTL 1 +_ACEOF + +elif test $bash_cv_struct_winsize_header = termios_h; then + echo "$as_me:$LINENO: result: termios.h" >&5 +echo "${ECHO_T}termios.h" >&6 + cat >>confdefs.h <<\_ACEOF +#define STRUCT_WINSIZE_IN_TERMIOS 1 +_ACEOF + +else + echo "$as_me:$LINENO: result: not found" >&5 +echo "${ECHO_T}not found" >&6 +fi + +echo "$as_me:$LINENO: checking for struct timeval in sys/time.h and time.h" >&5 +echo $ECHO_N "checking for struct timeval in sys/time.h and time.h... $ECHO_C" >&6 +if test "${bash_cv_struct_timeval+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + +echo "$as_me:$LINENO: result: $bash_cv_struct_timeval" >&5 +echo "${ECHO_T}$bash_cv_struct_timeval" >&6 +if test $bash_cv_struct_timeval = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_TIMEVAL 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for struct stat.st_blocks" >&5 +echo $ECHO_N "checking for struct stat.st_blocks... $ECHO_C" >&6 +if test "${ac_cv_member_struct_stat_st_blocks+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_stat_st_blocks=yes +else + 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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_stat_st_blocks=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_struct_stat_st_blocks=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_blocks" >&5 +echo "${ECHO_T}$ac_cv_member_struct_stat_st_blocks" >&6 +if test $ac_cv_member_struct_stat_st_blocks = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_BLOCKS 1 +_ACEOF + + +fi + +echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5 +echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6 +if test "${ac_cv_struct_tm+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 *tp; tp->tm_sec; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_struct_tm=time.h +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_struct_tm=sys/time.h +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5 +echo "${ECHO_T}$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 + +echo "$as_me:$LINENO: checking for struct tm.tm_zone" >&5 +echo $ECHO_N "checking for struct tm.tm_zone... $ECHO_C" >&6 +if test "${ac_cv_member_struct_tm_tm_zone+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_tm_tm_zone=yes +else + 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. */ +#include +#include <$ac_cv_struct_tm> + + +int +main () +{ +static struct tm ac_aggr; +if (sizeof ac_aggr.tm_zone) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_tm_tm_zone=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_struct_tm_tm_zone=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_zone" >&5 +echo "${ECHO_T}$ac_cv_member_struct_tm_tm_zone" >&6 +if test $ac_cv_member_struct_tm_tm_zone = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_TM_TM_ZONE 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 + echo "$as_me:$LINENO: checking for tzname" >&5 +echo $ECHO_N "checking for tzname... $ECHO_C" >&6 +if test "${ac_cv_var_tzname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifndef tzname /* For SGI. */ +extern char *tzname[]; /* RS6000 and others reject char **tzname. */ +#endif + +int +main () +{ +atoi(*tzname); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_var_tzname=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_var_tzname=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_var_tzname" >&5 +echo "${ECHO_T}$ac_cv_var_tzname" >&6 + if test $ac_cv_var_tzname = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_TZNAME 1 +_ACEOF + + fi +fi + +echo "$as_me:$LINENO: checking for struct timezone in sys/time.h and time.h" >&5 +echo $ECHO_N "checking for struct timezone in sys/time.h and time.h... $ECHO_C" >&6 +if test "${bash_cv_struct_timezone+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 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 +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "struct timezone" >/dev/null 2>&1; then + bash_cv_struct_timezone=yes +else + bash_cv_struct_timezone=no +fi +rm -f conftest* + +fi +rm -f conftest* + + +fi + +echo "$as_me:$LINENO: result: $bash_cv_struct_timezone" >&5 +echo "${ECHO_T}$bash_cv_struct_timezone" >&6 +if test $bash_cv_struct_timezone = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_STRUCT_TIMEZONE 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for the existence of strsignal" >&5 +echo $ECHO_N "checking for the existence of strsignal... $ECHO_C" >&6 +if test "${bash_cv_have_strsignal+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +char *s = (char *)strsignal(2); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_have_strsignal=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_have_strsignal=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_have_strsignal" >&5 +echo "${ECHO_T}$bash_cv_have_strsignal" >&6 +if test $bash_cv_have_strsignal = yes; then +cat >>confdefs.h <<\_ACEOF +#define HAVE_STRSIGNAL 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking if opendir() opens non-directories" >&5 +echo $ECHO_N "checking if opendir() opens non-directories... $ECHO_C" >&6 +if test "${bash_cv_opendir_not_robust+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check opendir if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#include +#include +#include +#ifdef HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ +#if defined(HAVE_DIRENT_H) +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif /* SYSNDIR */ +# ifdef HAVE_SYS_DIR_H +# include +# endif /* SYSDIR */ +# ifdef HAVE_NDIR_H +# include +# endif +#endif /* HAVE_DIRENT_H */ +main() +{ +DIR *dir; +int fd, err; +err = mkdir("/tmp/bash-aclocal", 0700); +if (err < 0) { + perror("mkdir"); + exit(1); +} +unlink("/tmp/bash-aclocal/not_a_directory"); +fd = open("/tmp/bash-aclocal/not_a_directory", O_WRONLY|O_CREAT|O_EXCL, 0666); +write(fd, "\n", 1); +close(fd); +dir = opendir("/tmp/bash-aclocal/not_a_directory"); +unlink("/tmp/bash-aclocal/not_a_directory"); +rmdir("/tmp/bash-aclocal"); +exit (dir == 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_opendir_not_robust=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_opendir_not_robust=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_opendir_not_robust" >&5 +echo "${ECHO_T}$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 + +fi + +echo "$as_me:$LINENO: checking whether ulimit can substitute for getdtablesize" >&5 +echo $ECHO_N "checking whether ulimit can substitute for getdtablesize... $ECHO_C" >&6 +if test "${bash_cv_ulimit_maxfds+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check ulimit if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +main() +{ +long maxfds = ulimit(4, 0L); +exit (maxfds == -1L); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_ulimit_maxfds=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_ulimit_maxfds=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_ulimit_maxfds" >&5 +echo "${ECHO_T}$bash_cv_ulimit_maxfds" >&6 +if test $bash_cv_ulimit_maxfds = yes; then +cat >>confdefs.h <<\_ACEOF +#define ULIMIT_MAXFDS 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking to see if getenv can be redefined" >&5 +echo $ECHO_N "checking to see if getenv can be redefined... $ECHO_C" >&6 +if test "${bash_cv_getenv_redef+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check getenv redefinition if cross compiling -- defaulting to yes" >&5 +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 +/* end confdefs.h. */ + +#ifdef HAVE_UNISTD_H +# include +#endif +#ifndef __STDC__ +# ifndef const +# define const +# endif +#endif +char * +getenv (name) +#if defined (__linux__) || defined (__bsdi__) || defined (convex) + const char *name; +#else + char const *name; +#endif /* !__linux__ && !__bsdi__ && !convex */ +{ +return "42"; +} +main() +{ +char *s; +/* The next allows this program to run, but does not allow bash to link + when it redefines getenv. I'm not really interested in figuring out + why not. */ +#if defined (NeXT) +exit(1); +#endif +s = getenv("ABCDE"); +exit(s == 0); /* force optimizer to leave getenv in */ +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_getenv_redef=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_getenv_redef=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_getenv_redef" >&5 +echo "${ECHO_T}$bash_cv_getenv_redef" >&6 +if test $bash_cv_getenv_redef = yes; then +cat >>confdefs.h <<\_ACEOF +#define CAN_REDEFINE_GETENV 1 +_ACEOF + +fi + +if test "$ac_cv_func_getcwd" = "yes"; then +echo "$as_me:$LINENO: checking if getcwd() will dynamically allocate memory" >&5 +echo $ECHO_N "checking if getcwd() will dynamically allocate memory... $ECHO_C" >&6 +if test "${bash_cv_getcwd_malloc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check whether getcwd allocates memory when cross-compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#include +#ifdef HAVE_UNISTD_H +#include +#endif + +main() +{ + char *xpwd; + xpwd = getcwd(0, 0); + exit (xpwd == 0); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_getcwd_malloc=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_getcwd_malloc=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_getcwd_malloc" >&5 +echo "${ECHO_T}$bash_cv_getcwd_malloc" >&6 +if test $bash_cv_getcwd_malloc = no; then +cat >>confdefs.h <<\_ACEOF +#define GETCWD_BROKEN 1 +_ACEOF + +case $LIBOBJS in + "getcwd.$ac_objext" | \ + *" getcwd.$ac_objext" | \ + "getcwd.$ac_objext "* | \ + *" getcwd.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS getcwd.$ac_objext" ;; +esac + +fi + +fi + +echo "$as_me:$LINENO: checking for presence of POSIX-style sigsetjmp/siglongjmp" >&5 +echo $ECHO_N "checking for presence of POSIX-style sigsetjmp/siglongjmp... $ECHO_C" >&6 +if test "${bash_cv_func_sigsetjmp+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing" >&5 +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 +/* end confdefs.h. */ + +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#include +#include + +main() +{ +#if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS) +exit (1); +#else + +int code; +sigset_t set, oset; +sigjmp_buf xx; + +/* get the mask */ +sigemptyset(&set); +sigemptyset(&oset); +sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set); +sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset); + +/* save it */ +code = sigsetjmp(xx, 1); +if (code) + exit(0); /* could get sigmask and compare to oset here. */ + +/* change it */ +sigaddset(&set, SIGINT); +sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL); + +/* and siglongjmp */ +siglongjmp(xx, 10); +exit(1); +#endif +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_func_sigsetjmp=present +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_func_sigsetjmp=missing +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_func_sigsetjmp" >&5 +echo "${ECHO_T}$bash_cv_func_sigsetjmp" >&6 +if test $bash_cv_func_sigsetjmp = present; then +cat >>confdefs.h <<\_ACEOF +#define HAVE_POSIX_SIGSETJMP 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking whether or not strcoll and strcmp differ" >&5 +echo $ECHO_N "checking whether or not strcoll and strcmp differ... $ECHO_C" >&6 +if test "${bash_cv_func_strcoll_broken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#include +#if defined (HAVE_LOCALE_H) +#include +#endif + +main(c, v) +int c; +char *v[]; +{ + int r1, r2; + char *deflocale, *defcoll; + +#ifdef HAVE_SETLOCALE + deflocale = setlocale(LC_ALL, ""); + defcoll = setlocale(LC_COLLATE, ""); +#endif + +#ifdef HAVE_STRCOLL + /* These two values are taken from tests/glob-test. */ + r1 = strcoll("abd", "aXd"); +#else + r1 = 0; +#endif + r2 = strcmp("abd", "aXd"); + + /* These two should both be greater than 0. It is permissible for + a system to return different values, as long as the sign is the + same. */ + + /* Exit with 1 (failure) if these two values are both > 0, since + this tests whether strcoll(3) is broken with respect to strcmp(3) + in the default locale. */ + exit (r1 > 0 && r2 > 0); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_func_strcoll_broken=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_func_strcoll_broken=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_func_strcoll_broken" >&5 +echo "${ECHO_T}$bash_cv_func_strcoll_broken" >&6 +if test $bash_cv_func_strcoll_broken = yes; then +cat >>confdefs.h <<\_ACEOF +#define STRCOLL_BROKEN 1 +_ACEOF + +fi + + + +if test "$ac_cv_func_putenv" = "yes"; then + + + +echo "$as_me:$LINENO: checking for standard-conformant putenv declaration" >&5 +echo $ECHO_N "checking for standard-conformant putenv declaration... $ECHO_C" >&6 +if test "${bash_cv_std_putenv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#include +#endif +#ifndef __STDC__ +# ifndef const +# define const +# endif +#endif +#ifdef PROTOTYPES +extern int putenv (char *); +#else +extern int putenv (); +#endif + +int +main () +{ +return (putenv == 0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_std_putenv=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_std_putenv=no + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_std_putenv" >&5 +echo "${ECHO_T}$bash_cv_std_putenv" >&6 +if test $bash_cv_std_putenv = yes; then +cat >>confdefs.h <<\_ACEOF +#define HAVE_STD_PUTENV 1 +_ACEOF + +fi + +else +cat >>confdefs.h <<\_ACEOF +#define HAVE_STD_PUTENV 1 +_ACEOF + +fi +if test "$ac_cv_func_unsetenv" = "yes"; then + + + +echo "$as_me:$LINENO: checking for standard-conformant unsetenv declaration" >&5 +echo $ECHO_N "checking for standard-conformant unsetenv declaration... $ECHO_C" >&6 +if test "${bash_cv_std_unsetenv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#include +#endif +#ifndef __STDC__ +# ifndef const +# define const +# endif +#endif +#ifdef PROTOTYPES +extern int unsetenv (const char *); +#else +extern int unsetenv (); +#endif + +int +main () +{ +return (unsetenv == 0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_std_unsetenv=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_std_unsetenv=no + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_std_unsetenv" >&5 +echo "${ECHO_T}$bash_cv_std_unsetenv" >&6 +if test $bash_cv_std_unsetenv = yes; then +cat >>confdefs.h <<\_ACEOF +#define HAVE_STD_UNSETENV 1 +_ACEOF + +fi + +else +cat >>confdefs.h <<\_ACEOF +#define HAVE_STD_UNSETENV 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for printf floating point output in hex notation" >&5 +echo $ECHO_N "checking for printf floating point output in hex notation... $ECHO_C" >&6 +if test "${bash_cv_printf_a_format+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check printf if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#include +#include + +int +main() +{ + double y = 0.0; + char abuf[1024]; + + sprintf(abuf, "%A", y); + exit(strchr(abuf, 'P') == (char *)0); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_printf_a_format=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_printf_a_format=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_printf_a_format" >&5 +echo "${ECHO_T}$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 + +fi + + + + +echo "$as_me:$LINENO: checking if signal handlers must be reinstalled when invoked" >&5 +echo $ECHO_N "checking if signal handlers must be reinstalled when invoked... $ECHO_C" >&6 +if test "${bash_cv_must_reinstall_sighandlers+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#include +#ifdef HAVE_UNISTD_H +#include +#endif + +typedef RETSIGTYPE sigfunc(); + +int nsigint; + +#ifdef HAVE_POSIX_SIGNALS +sigfunc * +set_signal_handler(sig, handler) + int sig; + sigfunc *handler; +{ + struct sigaction act, oact; + act.sa_handler = handler; + act.sa_flags = 0; + sigemptyset (&act.sa_mask); + sigemptyset (&oact.sa_mask); + sigaction (sig, &act, &oact); + return (oact.sa_handler); +} +#else +#define set_signal_handler(s, h) signal(s, h) +#endif + +RETSIGTYPE +sigint(s) +int s; +{ + nsigint++; +} + +main() +{ + nsigint = 0; + set_signal_handler(SIGINT, sigint); + kill((int)getpid(), SIGINT); + kill((int)getpid(), SIGINT); + exit(nsigint != 2); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_must_reinstall_sighandlers=no +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_must_reinstall_sighandlers=yes +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_must_reinstall_sighandlers" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking for presence of necessary job control definitions" >&5 +echo $ECHO_N "checking for presence of necessary job control definitions... $ECHO_C" >&6 +if test "${bash_cv_job_control_missing+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check job control if cross-compiling -- defaulting to missing" >&5 +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 +/* end confdefs.h. */ + +#include +#ifdef HAVE_SYS_WAIT_H +#include +#endif +#ifdef HAVE_UNISTD_H +#include +#endif +#include + +/* Add more tests in here as appropriate. */ +main() +{ +/* signal type */ +#if !defined (HAVE_POSIX_SIGNALS) && !defined (HAVE_BSD_SIGNALS) +exit(1); +#endif + +/* signals and tty control. */ +#if !defined (SIGTSTP) || !defined (SIGSTOP) || !defined (SIGCONT) +exit (1); +#endif + +/* process control */ +#if !defined (WNOHANG) || !defined (WUNTRACED) +exit(1); +#endif + +/* Posix systems have tcgetpgrp and waitpid. */ +#if defined (_POSIX_VERSION) && !defined (HAVE_TCGETPGRP) +exit(1); +#endif + +#if defined (_POSIX_VERSION) && !defined (HAVE_WAITPID) +exit(1); +#endif + +/* Other systems have TIOCSPGRP/TIOCGPRGP and wait3. */ +#if !defined (_POSIX_VERSION) && !defined (HAVE_WAIT3) +exit(1); +#endif + +exit(0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_job_control_missing=present +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_job_control_missing=missing +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_job_control_missing" >&5 +echo "${ECHO_T}$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 + +fi + +echo "$as_me:$LINENO: checking for presence of named pipes" >&5 +echo $ECHO_N "checking for presence of named pipes... $ECHO_C" >&6 +if test "${bash_cv_sys_named_pipes+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check for named pipes if cross-compiling -- defaulting to missing" >&5 +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 +/* end confdefs.h. */ + +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif + +/* Add more tests in here as appropriate. */ +main() +{ +int fd, err; + +#if defined (HAVE_MKFIFO) +exit (0); +#endif + +#if !defined (S_IFIFO) && (defined (_POSIX_VERSION) && !defined (S_ISFIFO)) +exit (1); +#endif + +#if defined (NeXT) +exit (1); +#endif +err = mkdir("/tmp/bash-aclocal", 0700); +if (err < 0) { + perror ("mkdir"); + exit(1); +} +fd = mknod ("/tmp/bash-aclocal/sh-np-autoconf", 0666 | S_IFIFO, 0); +if (fd == -1) { + rmdir ("/tmp/bash-aclocal"); + exit (1); +} +close(fd); +unlink ("/tmp/bash-aclocal/sh-np-autoconf"); +rmdir ("/tmp/bash-aclocal"); +exit(0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_sys_named_pipes=present +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_sys_named_pipes=missing +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_sys_named_pipes" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking whether termios.h defines TIOCGWINSZ" >&5 +echo $ECHO_N "checking whether termios.h defines TIOCGWINSZ... $ECHO_C" >&6 +if test "${ac_cv_sys_tiocgwinsz_in_termios_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef TIOCGWINSZ + yes +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "yes" >/dev/null 2>&1; then + ac_cv_sys_tiocgwinsz_in_termios_h=yes +else + ac_cv_sys_tiocgwinsz_in_termios_h=no +fi +rm -f conftest* + +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_tiocgwinsz_in_termios_h" >&5 +echo "${ECHO_T}$ac_cv_sys_tiocgwinsz_in_termios_h" >&6 + +if test $ac_cv_sys_tiocgwinsz_in_termios_h != yes; then + echo "$as_me:$LINENO: checking whether sys/ioctl.h defines TIOCGWINSZ" >&5 +echo $ECHO_N "checking whether sys/ioctl.h defines TIOCGWINSZ... $ECHO_C" >&6 +if test "${ac_cv_sys_tiocgwinsz_in_sys_ioctl_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef TIOCGWINSZ + yes +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $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 +fi +rm -f conftest* + +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&5 +echo "${ECHO_T}$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 + + fi +fi + +echo "$as_me:$LINENO: checking for TIOCSTAT in sys/ioctl.h" >&5 +echo $ECHO_N "checking for TIOCSTAT in sys/ioctl.h... $ECHO_C" >&6 +if test "${bash_cv_tiocstat_in_ioctl+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +int x = TIOCSTAT; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_tiocstat_in_ioctl=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_tiocstat_in_ioctl=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_tiocstat_in_ioctl" >&5 +echo "${ECHO_T}$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 + +fi + +echo "$as_me:$LINENO: checking for FIONREAD in sys/ioctl.h" >&5 +echo $ECHO_N "checking for FIONREAD in sys/ioctl.h... $ECHO_C" >&6 +if test "${bash_cv_fionread_in_ioctl+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +int x = FIONREAD; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_fionread_in_ioctl=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_fionread_in_ioctl=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_fionread_in_ioctl" >&5 +echo "${ECHO_T}$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 + +fi + + + +echo "$as_me:$LINENO: checking whether WCONTINUED flag to waitpid is unavailable or available but broken" >&5 +echo $ECHO_N "checking whether WCONTINUED flag to waitpid is unavailable or available but broken... $ECHO_C" >&6 +if test "${bash_cv_wcontinued_broken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check WCONTINUED if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#include +#include +#include +#include + +#ifndef errno +extern int errno; +#endif +main() +{ + int x; + + x = waitpid(-1, (int *)0, WNOHANG|WCONTINUED); + if (x == -1 && errno == EINVAL) + exit (1); + else + exit (0); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_wcontinued_broken=no +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_wcontinued_broken=yes +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_wcontinued_broken" >&5 +echo "${ECHO_T}$bash_cv_wcontinued_broken" >&6 +if test $bash_cv_wcontinued_broken = yes; then +cat >>confdefs.h <<\_ACEOF +#define WCONTINUED_BROKEN 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for speed_t in sys/types.h" >&5 +echo $ECHO_N "checking for speed_t in sys/types.h... $ECHO_C" >&6 +if test "${bash_cv_speed_t_in_sys_types+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +speed_t x; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_speed_t_in_sys_types=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_speed_t_in_sys_types=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_speed_t_in_sys_types" >&5 +echo "${ECHO_T}$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 + +fi + +echo "$as_me:$LINENO: checking whether getpw functions are declared in pwd.h" >&5 +echo $ECHO_N "checking whether getpw functions are declared in pwd.h... $ECHO_C" >&6 +if test "${bash_cv_getpw_declared+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef HAVE_UNISTD_H +# include +#endif +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "getpwuid" >/dev/null 2>&1; then + bash_cv_getpw_declared=yes +else + bash_cv_getpw_declared=no +fi +rm -f conftest* + +fi + +echo "$as_me:$LINENO: result: $bash_cv_getpw_declared" >&5 +echo "${ECHO_T}$bash_cv_getpw_declared" >&6 +if test $bash_cv_getpw_declared = yes; then +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETPW_DECLS 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for unusable real-time signals due to large values" >&5 +echo $ECHO_N "checking for unusable real-time signals due to large values... $ECHO_C" >&6 +if test "${bash_cv_unusable_rtsigs+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check real-time signals if cross compiling -- defaulting to yes" >&5 +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 +/* end confdefs.h. */ + +#include +#include + +#ifndef NSIG +# define NSIG 64 +#endif + +main () +{ + int n_sigs = 2 * NSIG; +#ifdef SIGRTMIN + int rtmin = SIGRTMIN; +#else + int rtmin = 0; +#endif + + exit(rtmin < n_sigs); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_unusable_rtsigs=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_unusable_rtsigs=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_unusable_rtsigs" >&5 +echo "${ECHO_T}$bash_cv_unusable_rtsigs" >&6 +if test $bash_cv_unusable_rtsigs = yes; then +cat >>confdefs.h <<\_ACEOF +#define UNUSABLE_RT_SIGNALS 1 +_ACEOF + +fi + + + + + +if test "$bash_cv_sys_siglist" = no && test "$bash_cv_under_sys_siglist" = no && test "$bash_cv_have_strsignal" = no; then + SIGLIST_O=siglist.o +else + SIGLIST_O= +fi + + + +case "$host_os" in +hpux*) echo "$as_me:$LINENO: checking whether $host_os needs _KERNEL for RLIMIT defines" >&5 +echo $ECHO_N "checking whether $host_os needs _KERNEL for RLIMIT defines... $ECHO_C" >&6 +if test "${bash_cv_kernel_rlimit+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ + + int f; + f = RLIMIT_DATA; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_kernel_rlimit=no +else + 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. */ + +#include +#define _KERNEL +#include +#undef _KERNEL + +int +main () +{ + + int f; + f = RLIMIT_DATA; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_kernel_rlimit=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_kernel_rlimit=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_kernel_rlimit" >&5 +echo "${ECHO_T}$bash_cv_kernel_rlimit" >&6 +if test $bash_cv_kernel_rlimit = yes; then +cat >>confdefs.h <<\_ACEOF +#define RLIMIT_NEEDS_KERNEL 1 +_ACEOF + +fi + ;; +esac + +if test "$opt_readline" = yes; then +case "$host_os" in +aix*) prefer_curses=yes ;; +esac + +if test "X$bash_cv_termcap_lib" = "X"; then +_bash_needmsg=yes +else +echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 +_bash_needmsg= +fi +if test "${bash_cv_termcap_lib+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for tgetent" >&5 +echo $ECHO_N "checking for tgetent... $ECHO_C" >&6 +if test "${ac_cv_func_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = tgetent; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != tgetent; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_tgetent" >&5 +echo "${ECHO_T}$ac_cv_func_tgetent" >&6 +if test $ac_cv_func_tgetent = yes; then + bash_cv_termcap_lib=libc +else + echo "$as_me:$LINENO: checking for tgetent in -ltermcap" >&5 +echo $ECHO_N "checking for tgetent in -ltermcap... $ECHO_C" >&6 +if test "${ac_cv_lib_termcap_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_termcap_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_termcap_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_termcap_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_termcap_tgetent" >&6 +if test $ac_cv_lib_termcap_tgetent = yes; then + bash_cv_termcap_lib=libtermcap +else + echo "$as_me:$LINENO: checking for tgetent in -ltinfo" >&5 +echo $ECHO_N "checking for tgetent in -ltinfo... $ECHO_C" >&6 +if test "${ac_cv_lib_tinfo_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_tinfo_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_tinfo_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_tinfo_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_tinfo_tgetent" >&6 +if test $ac_cv_lib_tinfo_tgetent = yes; then + bash_cv_termcap_lib=libtinfo +else + echo "$as_me:$LINENO: checking for tgetent in -lcurses" >&5 +echo $ECHO_N "checking for tgetent in -lcurses... $ECHO_C" >&6 +if test "${ac_cv_lib_curses_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_curses_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_curses_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_curses_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_curses_tgetent" >&6 +if test $ac_cv_lib_curses_tgetent = yes; then + bash_cv_termcap_lib=libcurses +else + echo "$as_me:$LINENO: checking for tgetent in -lncurses" >&5 +echo $ECHO_N "checking for tgetent in -lncurses... $ECHO_C" >&6 +if test "${ac_cv_lib_ncurses_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_ncurses_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_ncurses_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_ncurses_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_ncurses_tgetent" >&6 +if test $ac_cv_lib_ncurses_tgetent = yes; then + bash_cv_termcap_lib=libncurses +else + bash_cv_termcap_lib=gnutermcap +fi + +fi + +fi + +fi + +fi + +fi + +if test "X$_bash_needmsg" = "Xyes"; then +echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: using $bash_cv_termcap_lib" >&5 +echo "${ECHO_T}using $bash_cv_termcap_lib" >&6 +if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then +LDFLAGS="$LDFLAGS -L./lib/termcap" +TERMCAP_LIB="./lib/termcap/libtermcap.a" +TERMCAP_DEP="./lib/termcap/libtermcap.a" +elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then +TERMCAP_LIB=-ltermcap +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libtinfo; then +TERMCAP_LIB=-ltinfo +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libncurses; then +TERMCAP_LIB=-lncurses +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libc; then +TERMCAP_LIB= +TERMCAP_DEP= +else +TERMCAP_LIB=-lcurses +TERMCAP_DEP= +fi + +fi + + + +echo "$as_me:$LINENO: checking whether /dev/fd is available" >&5 +echo $ECHO_N "checking whether /dev/fd is available... $ECHO_C" >&6 +if test "${bash_cv_dev_fd+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -d /dev/fd && test -r /dev/fd/0 < /dev/null; then +# check for systems like FreeBSD 5 that only provide /dev/fd/[012] + exec 3<&0 + if test -r /dev/fd/3; then + bash_cv_dev_fd=standard + else + bash_cv_dev_fd=absent + fi + exec 3<&- + elif test -d /proc/self/fd && test -r /proc/self/fd/0 < /dev/null; then + bash_cv_dev_fd=whacky + else + bash_cv_dev_fd=absent + fi + +fi + +echo "$as_me:$LINENO: result: $bash_cv_dev_fd" >&5 +echo "${ECHO_T}$bash_cv_dev_fd" >&6 +if test $bash_cv_dev_fd = "standard"; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_DEV_FD 1 +_ACEOF + + cat >>confdefs.h <<\_ACEOF +#define DEV_FD_PREFIX "/dev/fd/" +_ACEOF + +elif test $bash_cv_dev_fd = "whacky"; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_DEV_FD 1 +_ACEOF + + cat >>confdefs.h <<\_ACEOF +#define DEV_FD_PREFIX "/proc/self/fd/" +_ACEOF + +fi + +echo "$as_me:$LINENO: checking whether /dev/stdin stdout stderr are available" >&5 +echo $ECHO_N "checking whether /dev/stdin stdout stderr are available... $ECHO_C" >&6 +if test "${bash_cv_dev_stdin+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -d /dev/fd && test -r /dev/stdin < /dev/null; then + bash_cv_dev_stdin=present + elif test -d /proc/self/fd && test -r /dev/stdin < /dev/null; then + bash_cv_dev_stdin=present + else + bash_cv_dev_stdin=absent + fi + +fi + +echo "$as_me:$LINENO: result: $bash_cv_dev_stdin" >&5 +echo "${ECHO_T}$bash_cv_dev_stdin" >&6 +if test $bash_cv_dev_stdin = "present"; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_DEV_STDIN 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for default mail directory" >&5 +echo $ECHO_N "checking for default mail directory... $ECHO_C" >&6 +if test "${bash_cv_mail_dir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -d /var/mail; then + bash_cv_mail_dir=/var/mail + elif test -d /var/spool/mail; then + bash_cv_mail_dir=/var/spool/mail + elif test -d /usr/mail; then + bash_cv_mail_dir=/usr/mail + elif test -d /usr/spool/mail; then + bash_cv_mail_dir=/usr/spool/mail + else + bash_cv_mail_dir=unknown + fi + +fi + +echo "$as_me:$LINENO: result: $bash_cv_mail_dir" >&5 +echo "${ECHO_T}$bash_cv_mail_dir" >&6 +cat >>confdefs.h <<_ACEOF +#define DEFAULT_MAIL_DIRECTORY "$bash_cv_mail_dir" +_ACEOF + + + +if test "$bash_cv_job_control_missing" = missing; then + opt_job_control=no +fi + +if test "$opt_job_control" = yes; then +cat >>confdefs.h <<\_ACEOF +#define JOB_CONTROL 1 +_ACEOF + +JOBS_O=jobs.o +else +JOBS_O=nojobs.o +fi + + + + +LOCAL_DEFS=-DSHELL + + +case "${host_os}" in +sysv4.2*) cat >>confdefs.h <<\_ACEOF +#define SVR4_2 1 +_ACEOF + + cat >>confdefs.h <<\_ACEOF +#define SVR4 1 +_ACEOF + ;; +sysv4*) cat >>confdefs.h <<\_ACEOF +#define SVR4 1 +_ACEOF + ;; +sysv5*) cat >>confdefs.h <<\_ACEOF +#define SVR5 1 +_ACEOF + ;; +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 ;; +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 + ;; + 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" ;; +esac + +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 + +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 + echo "$as_me:$LINENO: checking shared object configuration for loadable builtins" >&5 +echo $ECHO_N "checking shared object configuration for loadable builtins... $ECHO_C" >&6 + eval `${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c "${host_cpu}" -o "${host_os}" -v "${host_vendor}"` + + + + + + + + echo "$as_me:$LINENO: result: $SHOBJ_STATUS" >&5 +echo "${ECHO_T}$SHOBJ_STATUS" >&6 +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 + + + + + + + + + + + + + + + + + + + + + + + + +#AC_SUBST(ALLOCA_SOURCE) +#AC_SUBST(ALLOCA_OBJECT) + + ac_config_files="$ac_config_files Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile lib/intl/Makefile lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in examples/loadables/Makefile examples/loadables/perl/Makefile pathnames.h" + ac_config_commands="$ac_config_commands default" +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `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" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\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" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ 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/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# 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 + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + 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 + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + 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=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # 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 before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, 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 + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +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 sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# 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'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by bash $as_me 3.2-devel, which was +generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +bash config.status 3.2-devel +configured by $0, generated by GNU Autoconf 2.59, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2003 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +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=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS section. +# + +# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it + # from automake. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + + +_ACEOF + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "builtins/Makefile" ) CONFIG_FILES="$CONFIG_FILES builtins/Makefile" ;; + "lib/readline/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/readline/Makefile" ;; + "lib/glob/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/glob/Makefile" ;; + "lib/intl/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/intl/Makefile" ;; + "lib/malloc/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/malloc/Makefile" ;; + "lib/sh/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/sh/Makefile" ;; + "lib/termcap/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/termcap/Makefile" ;; + "lib/tilde/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/tilde/Makefile" ;; + "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "support/Makefile" ) CONFIG_FILES="$CONFIG_FILES support/Makefile" ;; + "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "examples/loadables/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/loadables/Makefile" ;; + "examples/loadables/perl/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/loadables/perl/Makefile" ;; + "pathnames.h" ) CONFIG_FILES="$CONFIG_FILES pathnames.h" ;; + "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@EMACS@,$EMACS,;t t +s,@lispdir@,$lispdir,;t t +s,@DEBUGGER_START_FILE@,$DEBUGGER_START_FILE,;t t +s,@TESTSCRIPT@,$TESTSCRIPT,;t t +s,@PURIFY@,$PURIFY,;t t +s,@MALLOC_TARGET@,$MALLOC_TARGET,;t t +s,@MALLOC_SRC@,$MALLOC_SRC,;t t +s,@MALLOC_LIB@,$MALLOC_LIB,;t t +s,@MALLOC_LIBRARY@,$MALLOC_LIBRARY,;t t +s,@MALLOC_LDFLAGS@,$MALLOC_LDFLAGS,;t t +s,@MALLOC_DEP@,$MALLOC_DEP,;t t +s,@htmldir@,$htmldir,;t t +s,@HELPDIR@,$HELPDIR,;t t +s,@HELPDIRDEFINE@,$HELPDIRDEFINE,;t t +s,@HELPINSTALL@,$HELPINSTALL,;t t +s,@HELPSTRINGS@,$HELPSTRINGS,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@CPP@,$CPP,;t t +s,@EGREP@,$EGREP,;t t +s,@CROSS_COMPILE@,$CROSS_COMPILE,;t t +s,@SIGNAMES_H@,$SIGNAMES_H,;t t +s,@SIGNAMES_O@,$SIGNAMES_O,;t t +s,@CC_FOR_BUILD@,$CC_FOR_BUILD,;t t +s,@STATIC_LD@,$STATIC_LD,;t t +s,@CFLAGS_FOR_BUILD@,$CFLAGS_FOR_BUILD,;t t +s,@CPPFLAGS_FOR_BUILD@,$CPPFLAGS_FOR_BUILD,;t t +s,@LDFLAGS_FOR_BUILD@,$LDFLAGS_FOR_BUILD,;t t +s,@RL_VERSION@,$RL_VERSION,;t t +s,@RL_MAJOR@,$RL_MAJOR,;t t +s,@RL_MINOR@,$RL_MINOR,;t t +s,@READLINE_LIB@,$READLINE_LIB,;t t +s,@READLINE_DEP@,$READLINE_DEP,;t t +s,@RL_LIBDIR@,$RL_LIBDIR,;t t +s,@RL_INCLUDEDIR@,$RL_INCLUDEDIR,;t t +s,@RL_INCLUDE@,$RL_INCLUDE,;t t +s,@HISTORY_LIB@,$HISTORY_LIB,;t t +s,@HISTORY_DEP@,$HISTORY_DEP,;t t +s,@HIST_LIBDIR@,$HIST_LIBDIR,;t t +s,@TILDE_LIB@,$TILDE_LIB,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@AR@,$AR,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@YACC@,$YACC,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@MAKE_SHELL@,$MAKE_SHELL,;t t +s,@SIZE@,$SIZE,;t t +s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t +s,@USE_NLS@,$USE_NLS,;t t +s,@MSGFMT@,$MSGFMT,;t t +s,@GMSGFMT@,$GMSGFMT,;t t +s,@XGETTEXT@,$XGETTEXT,;t t +s,@MSGMERGE@,$MSGMERGE,;t t +s,@ALLOCA@,$ALLOCA,;t t +s,@GLIBC21@,$GLIBC21,;t t +s,@LIBICONV@,$LIBICONV,;t t +s,@LTLIBICONV@,$LTLIBICONV,;t t +s,@INTLBISON@,$INTLBISON,;t t +s,@BUILD_INCLUDED_LIBINTL@,$BUILD_INCLUDED_LIBINTL,;t t +s,@USE_INCLUDED_LIBINTL@,$USE_INCLUDED_LIBINTL,;t t +s,@CATOBJEXT@,$CATOBJEXT,;t t +s,@DATADIRNAME@,$DATADIRNAME,;t t +s,@INSTOBJEXT@,$INSTOBJEXT,;t t +s,@GENCAT@,$GENCAT,;t t +s,@INTLOBJS@,$INTLOBJS,;t t +s,@INTL_LIBTOOL_SUFFIX_PREFIX@,$INTL_LIBTOOL_SUFFIX_PREFIX,;t t +s,@INTLLIBS@,$INTLLIBS,;t t +s,@LIBINTL@,$LIBINTL,;t t +s,@LTLIBINTL@,$LTLIBINTL,;t t +s,@POSUB@,$POSUB,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@INTL_DEP@,$INTL_DEP,;t t +s,@INTL_INC@,$INTL_INC,;t t +s,@LIBINTL_H@,$LIBINTL_H,;t t +s,@SIGLIST_O@,$SIGLIST_O,;t t +s,@TERMCAP_LIB@,$TERMCAP_LIB,;t t +s,@TERMCAP_DEP@,$TERMCAP_DEP,;t t +s,@JOBS_O@,$JOBS_O,;t t +s,@SHOBJ_CC@,$SHOBJ_CC,;t t +s,@SHOBJ_CFLAGS@,$SHOBJ_CFLAGS,;t t +s,@SHOBJ_LD@,$SHOBJ_LD,;t t +s,@SHOBJ_LDFLAGS@,$SHOBJ_LDFLAGS,;t t +s,@SHOBJ_XLDFLAGS@,$SHOBJ_XLDFLAGS,;t t +s,@SHOBJ_LIBS@,$SHOBJ_LIBS,;t t +s,@SHOBJ_STATUS@,$SHOBJ_STATUS,;t t +s,@PROFILE_FLAGS@,$PROFILE_FLAGS,;t t +s,@incdir@,$incdir,;t t +s,@BUILD_DIR@,$BUILD_DIR,;t t +s,@ARFLAGS@,$ARFLAGS,;t t +s,@BASHVERS@,$BASHVERS,;t t +s,@RELSTATUS@,$RELSTATUS,;t t +s,@DEBUG@,$DEBUG,;t t +s,@MALLOC_DEBUG@,$MALLOC_DEBUG,;t t +s,@LOCAL_LIBS@,$LOCAL_LIBS,;t t +s,@LOCAL_CFLAGS@,$LOCAL_CFLAGS,;t t +s,@LOCAL_LDFLAGS@,$LOCAL_LDFLAGS,;t t +s,@LOCAL_DEFS@,$LOCAL_DEFS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + # Do quote $f, to prevent DOS paths from being IFS'd. + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # grep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\_ACEOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + default-1 ) + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + GMOFILES= + UPDATEPOFILES= + DUMMYPOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done ;; + default ) +# Makefile uses this timestamp file to record whether config.h is up to date. +echo timestamp > stamp-h + ;; + esac +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + 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; } +fi + diff --git a/bash-20060316/configure.debug b/bash-20060316/configure.debug new file mode 100755 index 000000000..c5d6e6469 --- /dev/null +++ b/bash-20060316/configure.debug @@ -0,0 +1,28094 @@ +#! /bin/sh +# From configure.in for Bash 3.1, version 3.175, from autoconf version AC_ACVERSION. +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.59 for bash 3.1-devel. +# +# Report bugs to . +# +# Copyright (C) 2003 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. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# 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 + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + 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 + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + 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=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # 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 before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, 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 + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { 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 sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# 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'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + +# 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` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME='bash' +PACKAGE_TARNAME='bash' +PACKAGE_VERSION='3.1-devel' +PACKAGE_STRING='bash 3.1-devel' +PACKAGE_BUGREPORT='bug-bash@gnu.org' + +ac_unique_file="shell.h" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os EMACS lispdir DEBUGGER_START_FILE TESTSCRIPT PURIFY MALLOC_TARGET MALLOC_SRC MALLOC_LIB MALLOC_LIBRARY MALLOC_LDFLAGS MALLOC_DEP htmldir HELPDIR HELPDIRDEFINE HELPINSTALL HELPSTRINGS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP SIGNAMES_H CC_FOR_BUILD STATIC_LD CFLAGS_FOR_BUILD CPPFLAGS_FOR_BUILD LDFLAGS_FOR_BUILD RL_VERSION RL_MAJOR RL_MINOR READLINE_LIB READLINE_DEP RL_LIBDIR RL_INCLUDEDIR RL_INCLUDE HISTORY_LIB HISTORY_DEP HIST_LIBDIR INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA AR RANLIB ac_ct_RANLIB YACC SET_MAKE MAKE_SHELL SIZE MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE ALLOCA GLIBC21 LIBICONV LTLIBICONV INTLBISON BUILD_INCLUDED_LIBINTL USE_INCLUDED_LIBINTL CATOBJEXT DATADIRNAME INSTOBJEXT GENCAT INTLOBJS INTL_LIBTOOL_SUFFIX_PREFIX INTLLIBS LIBINTL LTLIBINTL POSUB LIBOBJS INTL_DEP INTL_INC LIBINTL_H SIGLIST_O TERMCAP_LIB TERMCAP_DEP JOBS_O SHOBJ_CC SHOBJ_CFLAGS SHOBJ_LD SHOBJ_LDFLAGS SHOBJ_XLDFLAGS SHOBJ_LIBS SHOBJ_STATUS PROFILE_FLAGS incdir BUILD_DIR ARFLAGS BASHVERS RELSTATUS DEBUG MALLOC_DEBUG LOCAL_LIBS LOCAL_CFLAGS LOCAL_LDFLAGS LOCAL_DEFS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + 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 && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + 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 +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_DEBUGGER_START_FILE_set=${DEBUGGER_START_FILE+set} +ac_env_DEBUGGER_START_FILE_value=$DEBUGGER_START_FILE +ac_cv_env_DEBUGGER_START_FILE_set=${DEBUGGER_START_FILE+set} +ac_cv_env_DEBUGGER_START_FILE_value=$DEBUGGER_START_FILE +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP + +# +# Report the --help message. +# +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 3.1-devel to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --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 + --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 + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of bash 3.1-devel:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-minimal-config a minimal sh-like configuration + --enable-alias enable shell aliases + --enable-arith-for-command + enable arithmetic for command + --enable-array-variables + include shell array variables + --enable-bang-history turn on csh-style history substitution + --enable-brace-expansion + include brace expansion + --enable-command-timing enable the time reserved word and command timing + --enable-cond-command enable the conditional command + --enable-cond-regexp enable extgended regular expression matching in + conditional commands + --enable-debugger enable support for bash debugger + --enable-directory-stack + enable builtins pushd/popd/dirs + --enable-disabled-builtins + allow disabled builtins to still be invoked + --enable-dparen-arithmetic + include ((...)) command + --enable-extended-glob include ksh-style extended pattern matching + --enable-help-builtin include the help builtin + --enable-history turn on command history + --enable-job-control enable job control features + --enable-multibyte enable multibyte characters if OS supports them + --enable-net-redirections + enable /dev/tcp/host/port redirection + --enable-process-substitution + enable process substitution + --enable-progcomp enable programmable completion and the complete + builtin + --enable-prompt-string-decoding + turn on escape character decoding in prompts + --enable-readline turn on command line editing + --enable-restricted enable a restricted shell + --enable-select include select command + --enable-separate-helpfiles + use external files for help builtin documentation + --enable-single-help-strings + store help documentation as a single string to ease + translation + --enable-usg-echo-default + a synonym for --enable-xpg-echo-default + --enable-xpg-echo-default + make the echo builtin expand escape sequences by + default + --enable-mem-scramble scramble memory on calls to malloc and free + --enable-profiling allow profiling with gprof + --enable-static-link link bash statically, for use as a root shell + --disable-largefile omit support for large files + --disable-nls do not use Native Language Support + --disable-rpath do not hardcode runtime library paths + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-lispdir override the default lisp directory + --with-afs if you are running AFS + --with-bash-malloc use the Bash version of malloc + --with-curses use the curses library instead of the termcap + library + --with-gnu-malloc synonym for --with-bash-malloc + --with-installed-readline + use a version of the readline library that is + already installed + --with-purecov configure to postprocess with pure coverage + --with-purify configure to postprocess with purify + --with-gnu-ld assume the C compiler uses GNU ld default=no + --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib + --without-libiconv-prefix don't search for libiconv in includedir and libdir + --with-included-gettext use the GNU gettext library included here + --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib + --without-libintl-prefix don't search for libintl in includedir and libdir + +Some influential environment variables: + DEBUGGER_START_FILE + location of bash debugger initialization file + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF +bash configure 3.1-devel +generated by GNU Autoconf 2.59 + +Copyright (C) 2003 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 0 +fi +exec 5>config.log +cat >&5 <<_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 3.1-devel, which was +generated by GNU Autoconf 2.59. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +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` + +/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` +hostinfo = `(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` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# 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_sep= +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=`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_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + 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; } + +# 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: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core && + rm -rf 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 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +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 + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; 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,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +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 + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`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 + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +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 + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in ./support $srcdir/./support" >&5 +echo "$as_me: error: cannot find install-sh or install.sh in ./support $srcdir/./support" >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + + ac_config_headers="$ac_config_headers config.h" + + +BASHVERS=3.1 +RELSTATUS=devel + +case "$RELSTATUS" in +alp*|bet*|dev*|rc*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; +*) DEBUG= MALLOC_DEBUG= ;; +esac + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + + +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 +*-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-lispdir or --without-lispdir was given. +if test "${with_lispdir+set}" = set; then + withval="$with_lispdir" + lispdir="$withval" + echo "$as_me:$LINENO: checking where .elc files should go" >&5 +echo $ECHO_N "checking where .elc files should go... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $lispdir" >&5 +echo "${ECHO_T}$lispdir" >&6 +else + + # If set to t, that means we are running in a shell under Emacs. + # If you have an Emacs named "t", then use the full path. + test x"$EMACS" = xt && EMACS= + for ac_prog in emacs xemacs +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_EMACS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$EMACS"; then + ac_cv_prog_EMACS="$EMACS" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_EMACS="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +EMACS=$ac_cv_prog_EMACS +if test -n "$EMACS"; then + echo "$as_me:$LINENO: result: $EMACS" >&5 +echo "${ECHO_T}$EMACS" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$EMACS" && break +done +test -n "$EMACS" || EMACS="no" + + if test $EMACS != "no"; then + if test x${lispdir+set} != xset; then + echo "$as_me:$LINENO: checking where .elc files should go" >&5 +echo $ECHO_N "checking where .elc files should go... $ECHO_C" >&6 +if test "${am_cv_lispdir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + am_cv_lispdir=`$EMACS -batch -q -eval '(while load-path (princ (concat (car load-path) "\n")) (setq load-path (cdr load-path)))' | sed -n -e 's,/$,,' -e '/.*\/lib\/\(x\?emacs\/site-lisp\)$/{s,,${libdir}/\1,;p;q;}' -e '/.*\/share\/\(x\?emacs\/site-lisp\)$/{s,,${datadir}/\1,;p;q;}'` + if test -z "$am_cv_lispdir"; then + am_cv_lispdir='${datadir}/emacs/site-lisp' + fi + +fi +echo "$as_me:$LINENO: result: $am_cv_lispdir" >&5 +echo "${ECHO_T}$am_cv_lispdir" >&6 + lispdir="$am_cv_lispdir" + fi + fi + +fi; + + + + + +# Check whether --with-afs or --without-afs was given. +if test "${with_afs+set}" = set; then + withval="$with_afs" + opt_afs=$withval +fi; + +# Check whether --with-bash-malloc or --without-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 or --without-curses was given. +if test "${with_curses+set}" = set; then + withval="$with_curses" + opt_curses=$withval +fi; + +# Check whether --with-gnu-malloc or --without-gnu-malloc was given. +if test "${with_gnu_malloc+set}" = set; then + withval="$with_gnu_malloc" + opt_bash_malloc=$withval +fi; + +# Check whether --with-installed-readline or --without-installed-readline was given. +if test "${with_installed_readline+set}" = set; then + withval="$with_installed_readline" + opt_with_installed_readline=$withval +fi; + +# Check whether --with-purecov or --without-purecov was given. +if test "${with_purecov+set}" = set; then + withval="$with_purecov" + opt_purecov=$withval +fi; + +# Check whether --with-purify or --without-purify was given. +if test "${with_purify+set}" = set; then + withval="$with_purify" + opt_purify=$withval +fi; + +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)' + + cat >>confdefs.h <<\_ACEOF +#define USING_BASH_MALLOC 1 +_ACEOF + +else + MALLOC_LIB= + MALLOC_LIBRARY= + MALLOC_LDFLAGS= + MALLOC_DEP= +fi + +if test "$opt_purify" = yes; then + PURIFY="purify " + cat >>confdefs.h <<\_ACEOF +#define DISABLE_MALLOC_WRAPPERS 1 +_ACEOF + +else + PURIFY= +fi + +if test "$opt_purecov" = yes; then + PURIFY="${PURIFY}purecov" +fi + +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=${ac_default_prefix}/lib/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_cond_command=yes +opt_cond_regexp=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_static_link=no +opt_profiling=no + +# Check whether --enable-minimal-config or --disable-minimal-config was given. +if test "${enable_minimal_config+set}" = set; then + enableval="$enable_minimal_config" + opt_minimal_config=$enableval +fi; + +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 +fi + +# Check whether --enable-alias or --disable-alias was given. +if test "${enable_alias+set}" = set; then + enableval="$enable_alias" + opt_alias=$enableval +fi; +# Check whether --enable-arith-for-command or --disable-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; +# Check whether --enable-array-variables or --disable-array-variables was given. +if test "${enable_array_variables+set}" = set; then + enableval="$enable_array_variables" + opt_array_variables=$enableval +fi; +# Check whether --enable-bang-history or --disable-bang-history was given. +if test "${enable_bang_history+set}" = set; then + enableval="$enable_bang_history" + opt_bang_history=$enableval +fi; +# Check whether --enable-brace-expansion or --disable-brace-expansion was given. +if test "${enable_brace_expansion+set}" = set; then + enableval="$enable_brace_expansion" + opt_brace_expansion=$enableval +fi; +# Check whether --enable-command-timing or --disable-command-timing was given. +if test "${enable_command_timing+set}" = set; then + enableval="$enable_command_timing" + opt_command_timing=$enableval +fi; +# Check whether --enable-cond-command or --disable-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 or --disable-cond-regexp was given. +if test "${enable_cond_regexp+set}" = set; then + enableval="$enable_cond_regexp" + opt_cond_regexp=$enableval +fi; +# Check whether --enable-debugger or --disable-debugger was given. +if test "${enable_debugger+set}" = set; then + enableval="$enable_debugger" + opt_debugger=$enableval +fi; +# Check whether --enable-directory-stack or --disable-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 or --disable-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 or --disable-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 or --disable-extended-glob was given. +if test "${enable_extended_glob+set}" = set; then + enableval="$enable_extended_glob" + opt_extended_glob=$enableval +fi; +# Check whether --enable-help-builtin or --disable-help-builtin was given. +if test "${enable_help_builtin+set}" = set; then + enableval="$enable_help_builtin" + opt_help=$enableval +fi; +# Check whether --enable-history or --disable-history was given. +if test "${enable_history+set}" = set; then + enableval="$enable_history" + opt_history=$enableval +fi; +# Check whether --enable-job-control or --disable-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 or --disable-multibyte was given. +if test "${enable_multibyte+set}" = set; then + enableval="$enable_multibyte" + opt_multibyte=$enableval +fi; +# Check whether --enable-net-redirections or --disable-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 or --disable-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 or --disable-progcomp was given. +if test "${enable_progcomp+set}" = set; then + enableval="$enable_progcomp" + opt_progcomp=$enableval +fi; +# Check whether --enable-prompt-string-decoding or --disable-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 or --disable-readline was given. +if test "${enable_readline+set}" = set; then + enableval="$enable_readline" + opt_readline=$enableval +fi; +# Check whether --enable-restricted or --disable-restricted was given. +if test "${enable_restricted+set}" = set; then + enableval="$enable_restricted" + opt_restricted=$enableval +fi; +# Check whether --enable-select or --disable-select was given. +if test "${enable_select+set}" = set; then + enableval="$enable_select" + opt_select=$enableval +fi; +# Check whether --enable-separate-helpfiles or --disable-separate-helpfiles was given. +if test "${enable_separate_helpfiles+set}" = set; then + enableval="$enable_separate_helpfiles" + opt_separate_help=$enableval +fi; +# Check whether --enable-single-help-strings or --disable-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-usg-echo-default or --disable-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 or --disable-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 or --disable-mem-scramble was given. +if test "${enable_mem_scramble+set}" = set; then + enableval="$enable_mem_scramble" + opt_memscramble=$enableval +fi; +# Check whether --enable-profiling or --disable-profiling was given. +if test "${enable_profiling+set}" = set; then + enableval="$enable_profiling" + opt_profiling=$enableval +fi; +# Check whether --enable-static-link or --disable-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 +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 + +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 + +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 + +fi +if test $opt_help = yes; then +cat >>confdefs.h <<\_ACEOF +#define HELP_BUILTIN 1 +_ACEOF + +fi +if test $opt_array_variables = yes; then +cat >>confdefs.h <<\_ACEOF +#define ARRAY_VARS 1 +_ACEOF + +fi +if test $opt_dparen_arith = yes; then +cat >>confdefs.h <<\_ACEOF +#define DPAREN_ARITHMETIC 1 +_ACEOF + +fi +if test $opt_brace_expansion = yes; then +cat >>confdefs.h <<\_ACEOF +#define BRACE_EXPANSION 1 +_ACEOF + +fi +if test $opt_disabled_builtins = yes; then +cat >>confdefs.h <<\_ACEOF +#define DISABLED_BUILTINS 1 +_ACEOF + +fi +if test $opt_command_timing = yes; then +cat >>confdefs.h <<\_ACEOF +#define COMMAND_TIMING 1 +_ACEOF + +fi +if test $opt_xpg_echo = yes ; then +cat >>confdefs.h <<\_ACEOF +#define DEFAULT_ECHO_TO_XPG 1 +_ACEOF + +fi +if test $opt_extended_glob = yes ; then +cat >>confdefs.h <<\_ACEOF +#define EXTENDED_GLOB 1 +_ACEOF + +fi +if test $opt_cond_command = yes ; then +cat >>confdefs.h <<\_ACEOF +#define COND_COMMAND 1 +_ACEOF + +fi +if test $opt_cond_regexp = yes ; then +cat >>confdefs.h <<\_ACEOF +#define COND_REGEXP 1 +_ACEOF + +fi +if test $opt_arith_for_command = yes; then +cat >>confdefs.h <<\_ACEOF +#define ARITH_FOR_COMMAND 1 +_ACEOF + +fi +if test $opt_net_redirs = yes; then +cat >>confdefs.h <<\_ACEOF +#define NETWORK_REDIRECTIONS 1 +_ACEOF + +fi +if test $opt_progcomp = yes; then +cat >>confdefs.h <<\_ACEOF +#define PROGRAMMABLE_COMPLETION 1 +_ACEOF + +fi +if test $opt_multibyte = no; then +cat >>confdefs.h <<\_ACEOF +#define NO_MULTIBYTE_SUPPORT 1 +_ACEOF + +fi +if test $opt_debugger = yes; then +cat >>confdefs.h <<\_ACEOF +#define DEBUGGER 1 +_ACEOF + +fi + +if test $opt_memscramble = yes; then +cat >>confdefs.h <<\_ACEOF +#define MEMSCRAMBLE 1 +_ACEOF + +fi + +if test "$opt_minimal_config" = yes; then + TESTSCRIPT=run-minimal +else + TESTSCRIPT=run-all +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' +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +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_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" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + 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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out 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. +echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + 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 + { { 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 +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 +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; 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 +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +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 +#include +/* 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); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std1 is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std1. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f 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 +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +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 + + + + + echo "$as_me:$LINENO: checking for strerror in -lcposix" >&5 +echo $ECHO_N "checking for strerror in -lcposix... $ECHO_C" >&6 +if test "${ac_cv_lib_cposix_strerror+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strerror (); +int +main () +{ +strerror (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_cposix_strerror=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_cposix_strerror=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_cposix_strerror" >&5 +echo "${ECHO_T}$ac_cv_lib_cposix_strerror" >&6 +if test $ac_cv_lib_cposix_strerror = yes; then + LIBS="$LIBS -lcposix" +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 +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&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 + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # 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 +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent 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 +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + 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 + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # 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 +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent 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 +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + 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 + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +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 + + +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f 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 +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +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 +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +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 + : +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 ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +if test "${ac_cv_header_minix_config_h+set}" = set; then + echo "$as_me:$LINENO: checking for minix/config.h" >&5 +echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6 +if test "${ac_cv_header_minix_config_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 +echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking minix/config.h usability" >&5 +echo $ECHO_N "checking minix/config.h usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking minix/config.h presence" >&5 +echo $ECHO_N "checking minix/config.h presence... $ECHO_C" >&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 echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: minix/config.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: minix/config.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: minix/config.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: minix/config.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: minix/config.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for minix/config.h" >&5 +echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6 +if test "${ac_cv_header_minix_config_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_minix_config_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 +echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6 + +fi +if test $ac_cv_header_minix_config_h = 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 + + +cat >>confdefs.h <<\_ACEOF +#define _MINIX 1 +_ACEOF + +fi + + + +case $host_os in + *cygwin* ) CYGWIN=yes;; + * ) CYGWIN=no;; +esac + + +case $host_os in + *mingw32* ) MINGW32=yes;; + * ) MINGW32=no;; +esac + + +# Check whether --enable-largefile or --disable-largefile was given. +if test "${enable_largefile+set}" = set; then + enableval="$enable_largefile" + +fi; +if test "$enable_largefile" != no; then + + echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5 +echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_largefile_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + 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 +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext + CC="$CC -n32" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_largefile_CC=' -n32'; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5 +echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6 + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_file_offset_bits+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + while :; do + ac_cv_sys_file_offset_bits=no + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f 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 +/* end confdefs.h. */ +#define _FILE_OFFSET_BITS 64 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_file_offset_bits=64; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + break +done +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5 +echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6 +if test "$ac_cv_sys_file_offset_bits" != no; then + +cat >>confdefs.h <<_ACEOF +#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits +_ACEOF + +fi +rm -f conftest* + echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5 +echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_large_files+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + while :; do + ac_cv_sys_large_files=no + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f 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 +/* end confdefs.h. */ +#define _LARGE_FILES 1 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_large_files=1; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + break +done +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5 +echo "${ECHO_T}$ac_cv_sys_large_files" >&6 +if test "$ac_cv_sys_large_files" != no; then + +cat >>confdefs.h <<_ACEOF +#define _LARGE_FILES $ac_cv_sys_large_files +_ACEOF + +fi +rm -f conftest* +fi + + + +SIGNAMES_H=lsignames.h + + + +if test "x$cross_compiling" = "xyes"; then + case "${host}" in + *-cygwin*) + cross_cache=${srcdir}/cross-build/cygwin32.cache + SIGNAMES_H='$(srcdir)/cross-build/win32sig.h' + ;; + i[3456]86-*-beos*) + cross_cache=${srcdir}/cross-build/x86-beos.cache + SIGNAMES_H='${srcdir}/cross-build/beos-sig.h' + ;; + *) 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 +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 + +test -n "$GCC" && test -n "$auto_cflags" && CFLAGS="$CFLAGS -O2" + +if test "$opt_profiling" = "yes"; then + PROFILE_FLAGS=-pg + case "$host_os" in + solaris2*) ;; + *) opt_static_link=yes ;; + esac + DEBUG= MALLOC_DEBUG= +fi + +if test "$opt_static_link" = yes; then + # 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" + case "$host_os" in + solaris2*) ;; + *) LDFLAGS="$LDFLAGS -static" ;; # XXX experimental + esac + fi +fi + +if test "X$cross_compiling" = "Xno"; then + CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-"$CPPFLAGS"} + LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'} +else + CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-""} + LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-""} +fi + +test -z "$CFLAGS_FOR_BUILD" && CFLAGS_FOR_BUILD="-g" + + + + + + + + + + +if test $ac_cv_c_compiler_gnu = yes; then + echo "$as_me:$LINENO: checking whether $CC needs -traditional" >&5 +echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6 +if test "${ac_cv_prog_gcc_traditional+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ +#include +Autoconf TIOCGETP +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "$ac_pattern" >/dev/null 2>&1; then + ac_cv_prog_gcc_traditional=yes +else + ac_cv_prog_gcc_traditional=no +fi +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 +/* end confdefs.h. */ +#include +Autoconf TCGETA +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "$ac_pattern" >/dev/null 2>&1; then + ac_cv_prog_gcc_traditional=yes +fi +rm -f conftest* + + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_gcc_traditional" >&5 +echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6 + if test $ac_cv_prog_gcc_traditional = yes; then + CC="$CC -traditional" + fi +fi + + + +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 + + +if test "X$bash_cv_termcap_lib" = "X"; then +_bash_needmsg=yes +else +echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 +_bash_needmsg= +fi +if test "${bash_cv_termcap_lib+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for tgetent" >&5 +echo $ECHO_N "checking for tgetent... $ECHO_C" >&6 +if test "${ac_cv_func_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = tgetent; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != tgetent; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_tgetent" >&5 +echo "${ECHO_T}$ac_cv_func_tgetent" >&6 +if test $ac_cv_func_tgetent = yes; then + bash_cv_termcap_lib=libc +else + echo "$as_me:$LINENO: checking for tgetent in -ltermcap" >&5 +echo $ECHO_N "checking for tgetent in -ltermcap... $ECHO_C" >&6 +if test "${ac_cv_lib_termcap_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_termcap_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_termcap_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_termcap_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_termcap_tgetent" >&6 +if test $ac_cv_lib_termcap_tgetent = yes; then + bash_cv_termcap_lib=libtermcap +else + echo "$as_me:$LINENO: checking for tgetent in -ltinfo" >&5 +echo $ECHO_N "checking for tgetent in -ltinfo... $ECHO_C" >&6 +if test "${ac_cv_lib_tinfo_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_tinfo_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_tinfo_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_tinfo_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_tinfo_tgetent" >&6 +if test $ac_cv_lib_tinfo_tgetent = yes; then + bash_cv_termcap_lib=libtinfo +else + echo "$as_me:$LINENO: checking for tgetent in -lcurses" >&5 +echo $ECHO_N "checking for tgetent in -lcurses... $ECHO_C" >&6 +if test "${ac_cv_lib_curses_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_curses_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_curses_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_curses_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_curses_tgetent" >&6 +if test $ac_cv_lib_curses_tgetent = yes; then + bash_cv_termcap_lib=libcurses +else + echo "$as_me:$LINENO: checking for tgetent in -lncurses" >&5 +echo $ECHO_N "checking for tgetent in -lncurses... $ECHO_C" >&6 +if test "${ac_cv_lib_ncurses_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_ncurses_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_ncurses_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_ncurses_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_ncurses_tgetent" >&6 +if test $ac_cv_lib_ncurses_tgetent = yes; then + bash_cv_termcap_lib=libncurses +else + bash_cv_termcap_lib=gnutermcap +fi + +fi + +fi + +fi + +fi + +fi + +if test "X$_bash_needmsg" = "Xyes"; then +echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: using $bash_cv_termcap_lib" >&5 +echo "${ECHO_T}using $bash_cv_termcap_lib" >&6 +if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then +LDFLAGS="$LDFLAGS -L./lib/termcap" +TERMCAP_LIB="./lib/termcap/libtermcap.a" +TERMCAP_DEP="./lib/termcap/libtermcap.a" +elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then +TERMCAP_LIB=-ltermcap +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libtinfo; then +TERMCAP_LIB=-ltinfo +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libncurses; then +TERMCAP_LIB=-lncurses +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libc; then +TERMCAP_LIB= +TERMCAP_DEP= +else +TERMCAP_LIB=-lcurses +TERMCAP_DEP= +fi + + + + +echo "$as_me:$LINENO: checking version of installed readline library" >&5 +echo $ECHO_N "checking version of installed readline library... $ECHO_C" >&6 + +# What a pain in the ass this is. + +# save cpp and ld options +_save_CFLAGS="$CFLAGS" +_save_LDFLAGS="$LDFLAGS" +_save_LIBS="$LIBS" + +# Don't set ac_cv_rl_prefix if the caller has already assigned a value. This +# allows the caller to do something like $_rl_prefix=$withval if the user +# specifies --with-installed-readline=PREFIX as an argument to configure + +if test -z "$ac_cv_rl_prefix"; then +test "x$prefix" = xNONE && ac_cv_rl_prefix=$ac_default_prefix || ac_cv_rl_prefix=${prefix} +fi + +eval ac_cv_rl_includedir=${ac_cv_rl_prefix}/include +eval ac_cv_rl_libdir=${ac_cv_rl_prefix}/lib + +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 + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + 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 +/* end confdefs.h. */ + +#include +#include + +main() +{ + FILE *fp; + fp = fopen("conftest.rlv", "w"); + if (fp == 0) exit(1); + fprintf(fp, "%s\n", rl_library_version ? rl_library_version : "0.0"); + fclose(fp); + exit(0); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_rl_version=`cat conftest.rlv` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_rl_version='0.0' +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + + +CFLAGS="$_save_CFLAGS" +LDFLAGS="$_save_LDFLAGS" +LIBS="$_save_LIBS" + +RL_MAJOR=0 +RL_MINOR=0 + +# ( +case "$ac_cv_rl_version" in +2*|3*|4*|5*|6*|7*|8*|9*) + RL_MAJOR=`echo $ac_cv_rl_version | sed 's:\..*$::'` + RL_MINOR=`echo $ac_cv_rl_version | sed -e 's:^.*\.::' -e 's:[a-zA-Z]*$::'` + ;; +esac + +# ((( +case $RL_MAJOR in +[0-9][0-9]) _RL_MAJOR=$RL_MAJOR ;; +[0-9]) _RL_MAJOR=0$RL_MAJOR ;; +*) _RL_MAJOR=00 ;; +esac + +# ((( +case $RL_MINOR in +[0-9][0-9]) _RL_MINOR=$RL_MINOR ;; +[0-9]) _RL_MINOR=0$RL_MINOR ;; +*) _RL_MINOR=00 ;; +esac + +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 + { echo "$as_me:$LINENO: WARNING: Could not test version of installed readline library." >&5 +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 + echo "$as_me:$LINENO: result: $ac_cv_rl_version" >&5 +echo "${ECHO_T}$ac_cv_rl_version" >&6 +else + + +cat >>confdefs.h <<_ACEOF +#define RL_READLINE_VERSION $RL_VERSION +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define RL_VERSION_MAJOR $RL_MAJOR +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define RL_VERSION_MINOR $RL_MINOR +_ACEOF + + + + + + +# 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 + +echo "$as_me:$LINENO: result: $ac_cv_rl_version" >&5 +echo "${ECHO_T}$ac_cv_rl_version" >&6 + +fi + + + case "$ac_cv_rl_version" in + 5*|6*|7*|8*|9*) ;; + *) opt_with_installed_readline=no + { echo "$as_me:$LINENO: WARNING: installed readline library is too old to be linked with bash" >&5 +echo "$as_me: WARNING: installed readline library is too old to be linked with bash" >&2;} + { echo "$as_me:$LINENO: WARNING: using private bash version" >&5 +echo "$as_me: WARNING: using private bash version" >&2;} + ;; + esac +fi + +if test $opt_readline = yes; then + cat >>confdefs.h <<\_ACEOF +#define READLINE 1 +_ACEOF + + 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 + else + RL_LIBDIR='$(dot)/$(LIBSUBDIR)/readline' + READLINE_DEP='$(READLINE_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 + darwin8*) 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 + cat >>confdefs.h <<\_ACEOF +#define HISTORY 1 +_ACEOF + + fi + if test $opt_bang_history = yes; then + cat >>confdefs.h <<\_ACEOF +#define BANG_HISTORY 1 +_ACEOF + + 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 + darwin8*) HISTORY_LIB='${HISTORY_LIBRARY}' ;; + *) HISTORY_LIB=-lhistory ;; + esac + fi +else + HIST_LIBDIR='$(dot)/$(LIBSUBDIR)/readline' + HISTORY_LIB= HISTORY_DEP= +fi + + + + + + + + + + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +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/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_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. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar" +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + echo "$as_me:$LINENO: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_YACC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$YACC"; then + ac_cv_prog_YACC="$YACC" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_YACC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +YACC=$ac_cv_prog_YACC +if test -n "$YACC"; then + echo "$as_me:$LINENO: result: $YACC" >&5 +echo "${ECHO_T}$YACC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$YACC" && break +done +test -n "$YACC" || YACC="yacc" + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="$(MAKE)"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + + +case "$host_os" in +opennt*|interix*) MAKE_SHELL="$INTERIX_ROOT/bin/sh" ;; +*) MAKE_SHELL=/bin/sh ;; +esac + + +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 + + +cat >>confdefs.h <<\_ACEOF +#define _GNU_SOURCE 1 +_ACEOF + + +echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 +if test "${ac_cv_c_const+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +/* FIXME: Include the comments suggested by Paul. */ +#ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; + const charset x; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *ccp; + char **p; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + ccp = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++ccp; + p = (char**) ccp; + ccp = (char const *const *) p; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this 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; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + } +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_const=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_const=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +echo "${ECHO_T}$ac_cv_c_const" >&6 +if test $ac_cv_c_const = no; then + +cat >>confdefs.h <<\_ACEOF +#define const +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for inline" >&5 +echo $ECHO_N "checking for inline... $ECHO_C" >&6 +if test "${ac_cv_c_inline+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif + +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_inline=$ac_kw; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 +echo "${ECHO_T}$ac_cv_c_inline" >&6 + + +case $ac_cv_c_inline in + inline | yes) ;; + *) + case $ac_cv_c_inline in + no) ac_val=;; + *) ac_val=$ac_cv_c_inline;; + esac + cat >>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; +esac + +echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 +echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 +if test "${ac_cv_c_bigendian+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # 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 +/* end confdefs.h. */ +#include +#include + +int +main () +{ +#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN + bogus endian macros +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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 +/* end confdefs.h. */ +#include +#include + +int +main () +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_bigendian=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_bigendian=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +# It does not; compile a test program. +if test "$cross_compiling" = yes; then + # try to guess the endianness by grepping values into an object file + ac_cv_c_bigendian=unknown + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; +short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; +void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } +short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; +short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; +void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } +int +main () +{ + _ascii (); _ebcdic (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then + ac_cv_c_bigendian=yes +fi +if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f 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 +/* end confdefs.h. */ +int +main () +{ + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long l; + char c[sizeof (long)]; + } u; + u.l = 1; + exit (u.c[sizeof (long) - 1] == 1); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_bigendian=no +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_c_bigendian=yes +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 +echo "${ECHO_T}$ac_cv_c_bigendian" >&6 +case $ac_cv_c_bigendian in + yes) + +cat >>confdefs.h <<\_ACEOF +#define WORDS_BIGENDIAN 1 +_ACEOF + ;; + no) + ;; + *) + { { echo "$as_me:$LINENO: error: unknown endianness +presetting ac_cv_c_bigendian=no (or yes) will help" >&5 +echo "$as_me: error: unknown endianness +presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} + { (exit 1); exit 1; }; } ;; +esac + +echo "$as_me:$LINENO: checking for preprocessor stringizing operator" >&5 +echo $ECHO_N "checking for preprocessor stringizing operator... $ECHO_C" >&6 +if test "${ac_cv_c_stringize+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 x(y) #y + +char *s = x(teststring); +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "#teststring" >/dev/null 2>&1; then + ac_cv_c_stringize=no +else + ac_cv_c_stringize=yes +fi +rm -f conftest* + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_stringize" >&5 +echo "${ECHO_T}$ac_cv_c_stringize" >&6 +if test $ac_cv_c_stringize = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_STRINGIZE 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for working long double with more range or precision than double" >&5 +echo $ECHO_N "checking for working long double with more range or precision than double... $ECHO_C" >&6 +if test "${ac_cv_c_long_double+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + long double foo = 0.0; +int +main () +{ +static int test_array [1 - 2 * !(/* Using '|' rather than '||' catches a GCC 2.95.2 x86 bug. */ + (DBL_MAX < LDBL_MAX) | (LDBL_EPSILON < DBL_EPSILON) + | (DBL_MAX_EXP < LDBL_MAX_EXP) | (DBL_MANT_DIG < LDBL_MANT_DIG))]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_long_double=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_long_double=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_long_double" >&5 +echo "${ECHO_T}$ac_cv_c_long_double" >&6 +if test $ac_cv_c_long_double = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LONG_DOUBLE 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for function prototypes" >&5 +echo $ECHO_N "checking for function prototypes... $ECHO_C" >&6 +if test "$ac_cv_prog_cc_stdc" != no; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +cat >>confdefs.h <<\_ACEOF +#define PROTOTYPES 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define __PROTOTYPES 1 +_ACEOF + +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + +echo "$as_me:$LINENO: checking whether char is unsigned" >&5 +echo $ECHO_N "checking whether char is unsigned... $ECHO_C" >&6 +if test "${ac_cv_c_char_unsigned+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 int test_array [1 - 2 * !(((char) -1) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_char_unsigned=no +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_char_unsigned=yes +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_char_unsigned" >&5 +echo "${ECHO_T}$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 + +fi + + + + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + case "$ac_aux_dir" in + /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; + *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; + esac + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + + + + echo "$as_me:$LINENO: checking whether NLS is requested" >&5 +echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 + # Check whether --enable-nls or --disable-nls was given. +if test "${enable_nls+set}" = set; then + enableval="$enable_nls" + USE_NLS=$enableval +else + USE_NLS=yes +fi; + echo "$as_me:$LINENO: result: $USE_NLS" >&5 +echo "${ECHO_T}$USE_NLS" >&6 + + + + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$MSGFMT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + echo "$as_me:$LINENO: result: $MSGFMT" >&5 +echo "${ECHO_T}$MSGFMT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_GMSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + *) + 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT + +if test -n "$GMSGFMT"; then + echo "$as_me:$LINENO: result: $GMSGFMT" >&5 +echo "${ECHO_T}$GMSGFMT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_XGETTEXT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$XGETTEXT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && + (if $ac_dir/$ac_word --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 + ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + echo "$as_me:$LINENO: result: $XGETTEXT" >&5 +echo "${ECHO_T}$XGETTEXT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + rm -f messages.po + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_MSGMERGE+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$MSGMERGE" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then + ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" + ;; +esac +fi +MSGMERGE="$ac_cv_path_MSGMERGE" +if test "$MSGMERGE" != ":"; then + echo "$as_me:$LINENO: result: $MSGMERGE" >&5 +echo "${ECHO_T}$MSGMERGE" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + if test "$GMSGFMT" != ":"; then + if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && + (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + : ; + else + GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` + echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 +echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6 + GMSGFMT=":" + fi + fi + + if test "$XGETTEXT" != ":"; then + if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && + (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 + echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 +echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 + XGETTEXT=":" + fi + rm -f messages.po + fi + + ac_config_commands="$ac_config_commands default-1" + + +echo "$as_me:$LINENO: checking for off_t" >&5 +echo $ECHO_N "checking for off_t... $ECHO_C" >&6 +if test "${ac_cv_type_off_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((off_t *) 0) + return 0; +if (sizeof (off_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_off_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_off_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 +echo "${ECHO_T}$ac_cv_type_off_t" >&6 +if test $ac_cv_type_off_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define off_t long +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for size_t" >&5 +echo $ECHO_N "checking for size_t... $ECHO_C" >&6 +if test "${ac_cv_type_size_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((size_t *) 0) + return 0; +if (sizeof (size_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_size_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_size_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +echo "${ECHO_T}$ac_cv_type_size_t" >&6 +if test $ac_cv_type_size_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned +_ACEOF + +fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +echo "$as_me:$LINENO: checking for working alloca.h" >&5 +echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 +if test "${ac_cv_working_alloca_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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)); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_working_alloca_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_working_alloca_h=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +echo "${ECHO_T}$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 + +echo "$as_me:$LINENO: checking for alloca" >&5 +echo $ECHO_N "checking for alloca... $ECHO_C" >&6 +if test "${ac_cv_func_alloca_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +# if 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); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_alloca_works=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_alloca_works=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +echo "${ECHO_T}$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=alloca.$ac_objext + +cat >>confdefs.h <<\_ACEOF +#define C_ALLOCA 1 +_ACEOF + + +echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 +if test "${ac_cv_os_cray+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +echo "${ECHO_T}$ac_cv_os_cray" >&6 +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + +cat >>confdefs.h <<_ACEOF +#define CRAY_STACKSEG_END $ac_func +_ACEOF + + break +fi + + done +fi + +echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 +if test "${ac_cv_c_stack_direction+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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. */ +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 () +{ + exit (find_stack_direction () < 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_stack_direction=1 +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_c_stack_direction=-1 +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 + +cat >>confdefs.h <<_ACEOF +#define STACK_DIRECTION $ac_cv_c_stack_direction +_ACEOF + + +fi + + + +for ac_header in stdlib.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_func in getpagesize +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +echo "$as_me:$LINENO: checking for working mmap" >&5 +echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 +if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 !STDC_HEADERS && !HAVE_STDLIB_H +char *malloc (); +#endif + +/* This mess was copied from the GNU getpagesize.h. */ +#if !HAVE_GETPAGESIZE +/* Assume that all systems that can run configure have sys/param.h. */ +# if !HAVE_SYS_PARAM_H +# define HAVE_SYS_PARAM_H 1 +# endif + +# ifdef _SC_PAGESIZE +# define getpagesize() sysconf(_SC_PAGESIZE) +# else /* no _SC_PAGESIZE */ +# if 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) + exit (1); + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) + exit (1); + if (write (fd, data, pagesize) != pagesize) + exit (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) + exit (1); + data2 = (char *) malloc (2 * pagesize); + if (!data2) + exit (1); + data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1); + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + exit (1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + exit (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) + exit (1); + if (read (fd, data3, pagesize) != pagesize) + exit (1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + exit (1); + close (fd); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mmap_fixed_mapped=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +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 -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 +echo "${ECHO_T}$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 + + + echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5 +echo $ECHO_N "checking whether we are using the GNU C Library 2.1 or newer... $ECHO_C" >&6 +if test "${ac_cv_gnu_library_2_1+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Lucky GNU user" >/dev/null 2>&1; then + ac_cv_gnu_library_2_1=yes +else + ac_cv_gnu_library_2_1=no +fi +rm -f conftest* + + + +fi +echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2_1" >&5 +echo "${ECHO_T}$ac_cv_gnu_library_2_1" >&6 + + GLIBC21="$ac_cv_gnu_library_2_1" + + + + + echo "$as_me:$LINENO: checking whether integer division by zero raises SIGFPE" >&5 +echo $ECHO_N "checking whether integer division by zero raises SIGFPE... $ECHO_C" >&6 +if test "${gt_cv_int_divbyzero_sigfpe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + if test "$cross_compiling" = yes; then + + # Guess based on the CPU. + case "$host_cpu" in + alpha* | i3456786 | m68k | s390*) + gt_cv_int_divbyzero_sigfpe="guessing yes";; + *) + gt_cv_int_divbyzero_sigfpe="guessing no";; + esac + +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 + +static void +#ifdef __cplusplus +sigfpe_handler (int sig) +#else +sigfpe_handler (sig) int sig; +#endif +{ + /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ + exit (sig != SIGFPE); +} + +int x = 1; +int y = 0; +int z; +int nan; + +int main () +{ + signal (SIGFPE, sigfpe_handler); +/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ +#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) + signal (SIGTRAP, sigfpe_handler); +#endif +/* Linux/SPARC yields signal SIGILL. */ +#if defined (__sparc__) && defined (__linux__) + signal (SIGILL, sigfpe_handler); +#endif + + z = x / y; + nan = y / y; + exit (1); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_int_divbyzero_sigfpe=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +gt_cv_int_divbyzero_sigfpe=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + +fi +echo "$as_me:$LINENO: result: $gt_cv_int_divbyzero_sigfpe" >&5 +echo "${ECHO_T}$gt_cv_int_divbyzero_sigfpe" >&6 + case "$gt_cv_int_divbyzero_sigfpe" in + *yes) value=1;; + *) value=0;; + esac + +cat >>confdefs.h <<_ACEOF +#define INTDIV0_RAISES_SIGFPE $value +_ACEOF + + + + echo "$as_me:$LINENO: checking for inttypes.h" >&5 +echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 +if test "${jm_ac_cv_header_inttypes_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +uintmax_t i = (uintmax_t) -1; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + jm_ac_cv_header_inttypes_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +jm_ac_cv_header_inttypes_h=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $jm_ac_cv_header_inttypes_h" >&5 +echo "${ECHO_T}$jm_ac_cv_header_inttypes_h" >&6 + if test $jm_ac_cv_header_inttypes_h = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_INTTYPES_H_WITH_UINTMAX 1 +_ACEOF + + fi + + + echo "$as_me:$LINENO: checking for stdint.h" >&5 +echo $ECHO_N "checking for stdint.h... $ECHO_C" >&6 +if test "${jm_ac_cv_header_stdint_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +uintmax_t i = (uintmax_t) -1; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + jm_ac_cv_header_stdint_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +jm_ac_cv_header_stdint_h=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $jm_ac_cv_header_stdint_h" >&5 +echo "${ECHO_T}$jm_ac_cv_header_stdint_h" >&6 + if test $jm_ac_cv_header_stdint_h = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_STDINT_H_WITH_UINTMAX 1 +_ACEOF + + fi + + + echo "$as_me:$LINENO: checking for unsigned long long" >&5 +echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6 +if test "${ac_cv_type_unsigned_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_unsigned_long_long=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_unsigned_long_long=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long" >&5 +echo "${ECHO_T}$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 + + fi + + + + + if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then + + test $ac_cv_type_unsigned_long_long = yes \ + && ac_type='unsigned long long' \ + || ac_type='unsigned long' + +cat >>confdefs.h <<_ACEOF +#define uintmax_t $ac_type +_ACEOF + + else + +cat >>confdefs.h <<\_ACEOF +#define HAVE_UINTMAX_T 1 +_ACEOF + + fi + + + echo "$as_me:$LINENO: checking for inttypes.h" >&5 +echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 +if test "${gt_cv_header_inttypes_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_header_inttypes_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_header_inttypes_h=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $gt_cv_header_inttypes_h" >&5 +echo "${ECHO_T}$gt_cv_header_inttypes_h" >&6 + if test $gt_cv_header_inttypes_h = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_INTTYPES_H 1 +_ACEOF + + fi + + + + if test $gt_cv_header_inttypes_h = yes; then + echo "$as_me:$LINENO: checking whether the inttypes.h PRIxNN macros are broken" >&5 +echo $ECHO_N "checking whether the inttypes.h PRIxNN macros are broken... $ECHO_C" >&6 +if test "${gt_cv_inttypes_pri_broken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef PRId32 +char *p = PRId32; +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_inttypes_pri_broken=no +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_inttypes_pri_broken=yes +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $gt_cv_inttypes_pri_broken" >&5 +echo "${ECHO_T}$gt_cv_inttypes_pri_broken" >&6 + fi + if test "$gt_cv_inttypes_pri_broken" = yes; then + +cat >>confdefs.h <<_ACEOF +#define PRI_MACROS_BROKEN 1 +_ACEOF + + fi + + + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" + + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi; +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo "$as_me:$LINENO: checking for ld used by GCC" >&5 +echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | [A-Za-z]:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${acl_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" +else + acl_cv_path_LD="$LD" # Let the user override the test with a path. +fi +fi + +LD="$acl_cv_path_LD" +if test -n "$LD"; then + echo "$as_me:$LINENO: result: $LD" >&5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${acl_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 &5; then + acl_cv_prog_gnu_ld=yes +else + acl_cv_prog_gnu_ld=no +fi +fi +echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5 +echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6 +with_gnu_ld=$acl_cv_prog_gnu_ld + + + + echo "$as_me:$LINENO: checking for shared library run path origin" >&5 +echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6 +if test "${acl_cv_rpath+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + +fi +echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5 +echo "${ECHO_T}$acl_cv_rpath" >&6 + wl="$acl_cv_wl" + libext="$acl_cv_libext" + shlibext="$acl_cv_shlibext" + hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + hardcode_direct="$acl_cv_hardcode_direct" + hardcode_minus_L="$acl_cv_hardcode_minus_L" + # Check whether --enable-rpath or --disable-rpath was given. +if test "${enable_rpath+set}" = set; then + enableval="$enable_rpath" + : +else + enable_rpath=yes +fi; + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libiconv-prefix or --without-libiconv-prefix was given. +if test "${with_libiconv_prefix+set}" = set; then + withval="$with_libiconv_prefix" + + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi + +fi; + LIBICONV= + LTLIBICONV= + INCICONV= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='iconv ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + if test $use_additional = yes; then + if 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 + found_la="$additional_libdir/lib$name.la" + fi + else + if test -f "$additional_libdir/lib$name.$libext"; then + found_dir="$additional_libdir" + found_a="$additional_libdir/lib$name.$libext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBICONV; 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" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if 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 + found_la="$dir/lib$name.la" + fi + else + if test -f "$dir/lib$name.$libext"; then + found_dir="$dir" + found_a="$dir/lib$name.$libext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$hardcode_direct" = yes; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBICONV; 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-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" + fi + if test "$hardcode_minus_L" != no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */lib | */lib/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCICONV; 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-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBICONV; 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-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBICONV; 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-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" + ;; + esac + done + fi + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" + done + fi + + + + + + + + + + + + + + +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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + + + + + + + + + + + + + + + + + + +for ac_func in feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ +geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ +strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next \ +__fsetlocking +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + + + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; 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 + + + echo "$as_me:$LINENO: checking for iconv" >&5 +echo $ECHO_N "checking for iconv... $ECHO_C" >&6 +if test "${am_cv_func_iconv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_func_iconv=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f 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 +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + +fi +echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 +echo "${ECHO_T}$am_cv_func_iconv" >&6 + if test "$am_cv_func_iconv" = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ICONV 1 +_ACEOF + + fi + if test "$am_cv_lib_iconv" = yes; then + echo "$as_me:$LINENO: checking how to link with libiconv" >&5 +echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $LIBICONV" >&5 +echo "${ECHO_T}$LIBICONV" >&6 + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + if test "$am_cv_func_iconv" = yes; then + echo "$as_me:$LINENO: checking for iconv declaration" >&5 +echo $ECHO_N "checking for iconv declaration... $ECHO_C" >&6 + if test "${am_cv_proto_iconv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_proto_iconv_arg1="" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +am_cv_proto_iconv_arg1="const" +fi +rm -f 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/( /(/'` + echo "$as_me:$LINENO: result: ${ac_t:- + }$am_cv_proto_iconv" >&5 +echo "${ECHO_T}${ac_t:- + }$am_cv_proto_iconv" >&6 + +cat >>confdefs.h <<_ACEOF +#define ICONV_CONST $am_cv_proto_iconv_arg1 +_ACEOF + + fi + + + echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 +echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6 +if test "${am_cv_langinfo_codeset+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_langinfo_codeset=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +am_cv_langinfo_codeset=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $am_cv_langinfo_codeset" >&5 +echo "${ECHO_T}$am_cv_langinfo_codeset" >&6 + if test $am_cv_langinfo_codeset = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LANGINFO_CODESET 1 +_ACEOF + + fi + + if test $ac_cv_header_locale_h = yes; then + + echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 +echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6 +if test "${am_cv_val_LC_MESSAGES+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +return LC_MESSAGES + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_val_LC_MESSAGES=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +am_cv_val_LC_MESSAGES=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 +echo "${ECHO_T}$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 + + fi + + fi + + for ac_prog in bison +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_INTLBISON+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$INTLBISON"; then + ac_cv_prog_INTLBISON="$INTLBISON" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_INTLBISON="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +INTLBISON=$ac_cv_prog_INTLBISON +if test -n "$INTLBISON"; then + echo "$as_me:$LINENO: result: $INTLBISON" >&5 +echo "${ECHO_T}$INTLBISON" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$INTLBISON" && break +done + + if test -z "$INTLBISON"; then + ac_verc_fail=yes + else + echo "$as_me:$LINENO: checking version of bison" >&5 +echo $ECHO_N "checking version of bison... $ECHO_C" >&6 + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + echo "$as_me:$LINENO: result: $ac_prog_version" >&5 +echo "${ECHO_T}$ac_prog_version" >&6 + fi + if test $ac_verc_fail = yes; then + INTLBISON=: + fi + + + + + + + + + + + + + + + + + echo "$as_me:$LINENO: checking whether NLS is requested" >&5 +echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 + # Check whether --enable-nls or --disable-nls was given. +if test "${enable_nls+set}" = set; then + enableval="$enable_nls" + USE_NLS=$enableval +else + USE_NLS=yes +fi; + echo "$as_me:$LINENO: result: $USE_NLS" >&5 +echo "${ECHO_T}$USE_NLS" >&6 + + + + + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + + LIBINTL= + LTLIBINTL= + POSUB= + + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + + echo "$as_me:$LINENO: checking whether included gettext is requested" >&5 +echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6 + +# Check whether --with-included-gettext or --without-included-gettext was given. +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; + echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5 +echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6 + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + + + + + + + echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 +echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6 +if test "${gt_cv_func_gnugettext2_libc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +int +main () +{ +bindtextdomain ("", ""); +return (int) gettext ("") + (int) ngettext ("", "", 0) + _nl_msg_cat_cntr + *_nl_domain_bindings + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_func_gnugettext2_libc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_func_gnugettext2_libc=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext2_libc" >&5 +echo "${ECHO_T}$gt_cv_func_gnugettext2_libc" >&6 + + if test "$gt_cv_func_gnugettext2_libc" != "yes"; then + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libintl-prefix or --without-libintl-prefix was given. +if test "${with_libintl_prefix+set}" = set; then + withval="$with_libintl_prefix" + + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi + +fi; + LIBINTL= + LTLIBINTL= + INCINTL= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='intl ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + if test $use_additional = yes; then + if 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 + found_la="$additional_libdir/lib$name.la" + fi + else + if test -f "$additional_libdir/lib$name.$libext"; then + found_dir="$additional_libdir" + found_a="$additional_libdir/lib$name.$libext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBINTL; 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" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if 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 + found_la="$dir/lib$name.la" + fi + else + if test -f "$dir/lib$name.$libext"; then + found_dir="$dir" + found_a="$dir/lib$name.$libext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$hardcode_direct" = yes; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBINTL; 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-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" + fi + if test "$hardcode_minus_L" != no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */lib | */lib/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCINTL; 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-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBINTL; 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-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBINTL; 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-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" + ;; + esac + done + fi + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" + done + fi + + echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5 +echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6 +if test "${gt_cv_func_gnugettext2_libintl+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_func_gnugettext2_libintl=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_func_gnugettext2_libintl=no +fi +rm -f 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 >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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + gt_cv_func_gnugettext2_libintl=yes + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" +fi +echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext2_libintl" >&5 +echo "${ECHO_T}$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 + + echo "$as_me:$LINENO: checking whether to use NLS" >&5 +echo $ECHO_N "checking whether to use NLS... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $USE_NLS" >&5 +echo "${ECHO_T}$USE_NLS" >&6 + if test "$USE_NLS" = "yes"; then + echo "$as_me:$LINENO: checking where the gettext function comes from" >&5 +echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&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 + echo "$as_me:$LINENO: result: $gt_source" >&5 +echo "${ECHO_T}$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 + echo "$as_me:$LINENO: checking how to link with libintl" >&5 +echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $LIBINTL" >&5 +echo "${ECHO_T}$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=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 +echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `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 + echo "$as_me:$LINENO: checking for library containing opendir" >&5 +echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 +if test "${ac_cv_search_opendir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_func_search_save_LIBS=$LIBS +ac_cv_search_opendir=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +int +main () +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_opendir="none required" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search_opendir" = no; then + for ac_lib in dir; do + LIBS="-l$ac_lib $ac_func_search_save_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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +int +main () +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_opendir="-l$ac_lib" +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done +fi +LIBS=$ac_func_search_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 +echo "${ECHO_T}$ac_cv_search_opendir" >&6 +if test "$ac_cv_search_opendir" != no; then + test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" + +fi + +else + echo "$as_me:$LINENO: checking for library containing opendir" >&5 +echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 +if test "${ac_cv_search_opendir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_func_search_save_LIBS=$LIBS +ac_cv_search_opendir=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +int +main () +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_opendir="none required" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search_opendir" = no; then + for ac_lib in x; do + LIBS="-l$ac_lib $ac_func_search_save_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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +int +main () +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_opendir="-l$ac_lib" +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done +fi +LIBS=$ac_func_search_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 +echo "${ECHO_T}$ac_cv_search_opendir" >&6 +if test "$ac_cv_search_opendir" != no; then + test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" + +fi + +fi + +echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 +echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6 +if test "${ac_cv_header_time+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_time=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_time=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 +echo "${ECHO_T}$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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `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 grp.h strings.h regex.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +echo "$as_me:$LINENO: checking for sys/ptem.h" >&5 +echo $ECHO_N "checking for sys/ptem.h... $ECHO_C" >&6 +if test "${ac_cv_header_sys_ptem_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_sys_ptem_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_sys_ptem_h=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_header_sys_ptem_h" >&5 +echo "${ECHO_T}$ac_cv_header_sys_ptem_h" >&6 + + + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +echo "$as_me:$LINENO: checking for working alloca.h" >&5 +echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 +if test "${ac_cv_working_alloca_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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)); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_working_alloca_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_working_alloca_h=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +echo "${ECHO_T}$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 + +echo "$as_me:$LINENO: checking for alloca" >&5 +echo $ECHO_N "checking for alloca... $ECHO_C" >&6 +if test "${ac_cv_func_alloca_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +# if 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); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_alloca_works=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_alloca_works=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +echo "${ECHO_T}$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=alloca.$ac_objext + +cat >>confdefs.h <<\_ACEOF +#define C_ALLOCA 1 +_ACEOF + + +echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 +if test "${ac_cv_os_cray+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +echo "${ECHO_T}$ac_cv_os_cray" >&6 +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + +cat >>confdefs.h <<_ACEOF +#define CRAY_STACKSEG_END $ac_func +_ACEOF + + break +fi + + done +fi + +echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 +if test "${ac_cv_c_stack_direction+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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. */ +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 () +{ + exit (find_stack_direction () < 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_stack_direction=1 +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_c_stack_direction=-1 +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 + +cat >>confdefs.h <<_ACEOF +#define STACK_DIRECTION $ac_cv_c_stack_direction +_ACEOF + + +fi + +echo "$as_me:$LINENO: checking whether getpgrp requires zero arguments" >&5 +echo $ECHO_N "checking whether getpgrp requires zero arguments... $ECHO_C" >&6 +if test "${ac_cv_func_getpgrp_void+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_getpgrp_void=no +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_getpgrp_void=yes +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $ac_cv_func_getpgrp_void" >&5 +echo "${ECHO_T}$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 + +echo "$as_me:$LINENO: checking whether setvbuf arguments are reversed" >&5 +echo $ECHO_N "checking whether setvbuf arguments are reversed... $ECHO_C" >&6 +if test "${ac_cv_func_setvbuf_reversed+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_func_setvbuf_reversed=no + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +# if PROTOTYPES + int (setvbuf) (FILE *, int, char *, size_t); +# endif +int +main () +{ +char buf; return setvbuf (stdout, _IOLBF, &buf, 1); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +# if PROTOTYPES + int (setvbuf) (FILE *, int, char *, size_t); +# endif +int +main () +{ +char buf; return setvbuf (stdout, &buf, _IOLBF, 1); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + # It compiles and links either way, so it must not be declared + # with a prototype and most likely this is a K&R C compiler. + # Try running it. + if test "$cross_compiling" = yes; then + : # Assume setvbuf is not reversed when cross-compiling. +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 () +{ +/* This call has the arguments reversed. + A reversed system may check and see that the address of buf + is not _IOLBF, _IONBF, or _IOFBF, and return nonzero. */ + char buf; + if (setvbuf (stdout, _IOLBF, &buf, 1) != 0) + exit (1); + putchar ('\r'); + exit (0); /* Non-reversed systems SEGV here. */ + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_setvbuf_reversed=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +rm -f core *.core +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + ac_cv_func_setvbuf_reversed=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_setvbuf_reversed" >&5 +echo "${ECHO_T}$ac_cv_func_setvbuf_reversed" >&6 +if test $ac_cv_func_setvbuf_reversed = yes; then + +cat >>confdefs.h <<\_ACEOF +#define SETVBUF_REVERSED 1 +_ACEOF + +fi + + +for ac_func in vprintf +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +echo "$as_me:$LINENO: checking for _doprnt" >&5 +echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6 +if test "${ac_cv_func__doprnt+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = _doprnt; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != _doprnt; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func__doprnt=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func__doprnt=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5 +echo "${ECHO_T}$ac_cv_func__doprnt" >&6 +if test $ac_cv_func__doprnt = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_DOPRNT 1 +_ACEOF + +fi + +fi +done + + +echo "$as_me:$LINENO: checking for working strcoll" >&5 +echo $ECHO_N "checking for working strcoll... $ECHO_C" >&6 +if test "${ac_cv_func_strcoll_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +exit (strcoll ("abc", "def") >= 0 || + strcoll ("ABC", "DEF") >= 0 || + strcoll ("123", "456") >= 0) + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_strcoll_works=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_func_strcoll_works=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_func_strcoll_works" >&5 +echo "${ECHO_T}$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 + echo "$as_me:$LINENO: checking for declaration of vprintf in stdio.h" >&5 +echo $ECHO_N "checking for declaration of vprintf in stdio.h... $ECHO_C" >&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* + + echo "$as_me:$LINENO: result: $ac_cv_func_vprintf" >&5 +echo "${ECHO_T}$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" | \ + *" vprint.$ac_objext" | \ + "vprint.$ac_objext "* | \ + *" vprint.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS vprint.$ac_objext" ;; +esac + +fi + +echo "$as_me:$LINENO: checking return type of signal handlers" >&5 +echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 +if test "${ac_cv_type_signal+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef signal +# undef signal +#endif +#ifdef __cplusplus +extern "C" void (*signal (int, void (*)(int)))(int); +#else +void (*signal ()) (); +#endif + +int +main () +{ +int i; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_signal=void +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_signal=int +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 +echo "${ECHO_T}$ac_cv_type_signal" >&6 + +cat >>confdefs.h <<_ACEOF +#define RETSIGTYPE $ac_cv_type_signal +_ACEOF + + + +echo "$as_me:$LINENO: checking for __setostype" >&5 +echo $ECHO_N "checking for __setostype... $ECHO_C" >&6 +if test "${ac_cv_func___setostype+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = __setostype; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != __setostype; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func___setostype=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func___setostype=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func___setostype" >&5 +echo "${ECHO_T}$ac_cv_func___setostype" >&6 +if test $ac_cv_func___setostype = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_SETOSTYPE 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for wait3" >&5 +echo $ECHO_N "checking for wait3... $ECHO_C" >&6 +if test "${ac_cv_func_wait3+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = wait3; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != wait3; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_wait3=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_wait3=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_wait3" >&5 +echo "${ECHO_T}$ac_cv_func_wait3" >&6 +if test $ac_cv_func_wait3 = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_WAIT3 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for isinf" >&5 +echo $ECHO_N "checking for isinf... $ECHO_C" >&6 +if test "${ac_cv_func_isinf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = isinf; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != isinf; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_isinf=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_isinf=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_isinf" >&5 +echo "${ECHO_T}$ac_cv_func_isinf" >&6 +if test $ac_cv_func_isinf = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_ISINF_IN_LIBC 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for mkfifo" >&5 +echo $ECHO_N "checking for mkfifo... $ECHO_C" >&6 +if test "${ac_cv_func_mkfifo+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = mkfifo; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != mkfifo; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mkfifo=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_mkfifo=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_mkfifo" >&5 +echo "${ECHO_T}$ac_cv_func_mkfifo" >&6 +if test $ac_cv_func_mkfifo = 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 select getdtablesize getgroups gethostname \ + setdtablesize getpagesize killpg lstat getpeername sbrk \ + getrlimit getrusage gettimeofday waitpid tcgetpgrp \ + readlink +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +for ac_func in rename +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + case $LIBOBJS in + "$ac_func.$ac_objext" | \ + *" $ac_func.$ac_objext" | \ + "$ac_func.$ac_objext "* | \ + *" $ac_func.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" ;; +esac + +fi +done + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +for ac_func in bcopy bzero confstr sysconf pathconf setenv putenv unsetenv \ + setlinebuf setvbuf setlocale strchr tcgetattr uname \ + ulimit tzset siginterrupt memmove ttyname times raise \ + getaddrinfo gethostbyname getservbyname getservent inet_aton \ + vsnprintf snprintf vasprintf asprintf fnmatch regcomp regexec +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `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=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + + + + + + +for ac_func in getcwd strcasecmp strerror strftime strpbrk memset strstr strnlen +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + case $LIBOBJS in + "$ac_func.$ac_objext" | \ + *" $ac_func.$ac_objext" | \ + "$ac_func.$ac_objext "* | \ + *" $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=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + case $LIBOBJS in + "$ac_func.$ac_objext" | \ + *" $ac_func.$ac_objext" | \ + "$ac_func.$ac_objext "* | \ + *" $ac_func.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" ;; +esac + +fi +done + + + +echo "$as_me:$LINENO: checking whether confstr is declared" >&5 +echo $ECHO_N "checking whether confstr is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_confstr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + char *p = (char *) confstr; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_confstr=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl_confstr=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_confstr" >&5 +echo "${ECHO_T}$ac_cv_have_decl_confstr" >&6 +if test $ac_cv_have_decl_confstr = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_CONFSTR 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_CONFSTR 0 +_ACEOF + + +fi + + +echo "$as_me:$LINENO: checking whether printf is declared" >&5 +echo $ECHO_N "checking whether printf is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_printf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + char *p = (char *) printf; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_printf=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl_printf=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_printf" >&5 +echo "${ECHO_T}$ac_cv_have_decl_printf" >&6 +if test $ac_cv_have_decl_printf = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_PRINTF 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_PRINTF 0 +_ACEOF + + +fi + + +echo "$as_me:$LINENO: checking whether sbrk is declared" >&5 +echo $ECHO_N "checking whether sbrk is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_sbrk+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + char *p = (char *) sbrk; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_sbrk=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl_sbrk=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_sbrk" >&5 +echo "${ECHO_T}$ac_cv_have_decl_sbrk" >&6 +if test $ac_cv_have_decl_sbrk = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_SBRK 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_SBRK 0 +_ACEOF + + +fi + + +echo "$as_me:$LINENO: checking whether strcpy is declared" >&5 +echo $ECHO_N "checking whether strcpy is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_strcpy+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + char *p = (char *) strcpy; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_strcpy=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl_strcpy=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_strcpy" >&5 +echo "${ECHO_T}$ac_cv_have_decl_strcpy" >&6 +if test $ac_cv_have_decl_strcpy = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRCPY 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRCPY 0 +_ACEOF + + +fi + + +echo "$as_me:$LINENO: checking whether strsignal is declared" >&5 +echo $ECHO_N "checking whether strsignal is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_strsignal+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + char *p = (char *) strsignal; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_strsignal=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl_strsignal=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_strsignal" >&5 +echo "${ECHO_T}$ac_cv_have_decl_strsignal" >&6 +if test $ac_cv_have_decl_strsignal = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRSIGNAL 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRSIGNAL 0 +_ACEOF + + +fi + + + +echo "$as_me:$LINENO: checking whether strtold is declared" >&5 +echo $ECHO_N "checking whether strtold is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_strtold+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + char *p = (char *) strtold; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_strtold=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl_strtold=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_strtold" >&5 +echo "${ECHO_T}$ac_cv_have_decl_strtold" >&6 +if test $ac_cv_have_decl_strtold = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRTOLD 1 +_ACEOF + + + echo "$as_me:$LINENO: checking for broken strtold" >&5 +echo $ECHO_N "checking for broken strtold... $ECHO_C" >&6 + if test "${bash_cv_strtold_broken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_strtold_broken=no +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_strtold_broken=yes +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + + +fi + + echo "$as_me:$LINENO: result: $bash_cv_strtold_broken" >&5 +echo "${ECHO_T}$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 + + + + + + + +echo "$as_me:$LINENO: checking for declaration of strtoimax" >&5 +echo $ECHO_N "checking for declaration of strtoimax... $ECHO_C" >&6 +if test "${bash_cv_decl_strtoimax+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_decl_strtoimax=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_decl_strtoimax=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoimax" >&5 +echo "${ECHO_T}$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 + + + + +echo "$as_me:$LINENO: checking for declaration of strtol" >&5 +echo $ECHO_N "checking for declaration of strtol... $ECHO_C" >&6 +if test "${bash_cv_decl_strtol+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_decl_strtol=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_decl_strtol=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_decl_strtol" >&5 +echo "${ECHO_T}$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 + + + + +echo "$as_me:$LINENO: checking for declaration of strtoll" >&5 +echo $ECHO_N "checking for declaration of strtoll... $ECHO_C" >&6 +if test "${bash_cv_decl_strtoll+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_decl_strtoll=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_decl_strtoll=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoll" >&5 +echo "${ECHO_T}$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 + + + + +echo "$as_me:$LINENO: checking for declaration of strtoul" >&5 +echo $ECHO_N "checking for declaration of strtoul... $ECHO_C" >&6 +if test "${bash_cv_decl_strtoul+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_decl_strtoul=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_decl_strtoul=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoul" >&5 +echo "${ECHO_T}$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 + + + + +echo "$as_me:$LINENO: checking for declaration of strtoull" >&5 +echo $ECHO_N "checking for declaration of strtoull... $ECHO_C" >&6 +if test "${bash_cv_decl_strtoull+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_decl_strtoull=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_decl_strtoull=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoull" >&5 +echo "${ECHO_T}$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 + + + + +echo "$as_me:$LINENO: checking for declaration of strtoumax" >&5 +echo $ECHO_N "checking for declaration of strtoumax... $ECHO_C" >&6 +if test "${bash_cv_decl_strtoumax+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_decl_strtoumax=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_decl_strtoumax=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoumax" >&5 +echo "${ECHO_T}$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 stdlib.h sys/time.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_func in alarm +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +echo "$as_me:$LINENO: checking for working mktime" >&5 +echo $ECHO_N "checking for working mktime... $ECHO_C" >&6 +if test "${ac_cv_func_working_mktime+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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. */ +#if TIME_WITH_SYS_TIME +# include +# include +#else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif + +#if HAVE_STDLIB_H +# include +#endif + +#if HAVE_UNISTD_H +# include +#endif + +#if !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])) + +/* Fail if mktime fails to convert a date in the spring-forward gap. + Based on a problem report from Andreas Jaeger. */ +static void +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; + if (mktime (&tm) == (time_t)-1) + exit (1); +} + +static void +mktime_test1 (now) + time_t now; +{ + struct tm *lt; + if ((lt = localtime (&now)) && mktime (lt) != now) + exit (1); +} + +static void +mktime_test (now) + time_t now; +{ + mktime_test1 (now); + mktime_test1 ((time_t) (time_t_max - now)); + mktime_test1 ((time_t) (time_t_min + now)); +} + +static void +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); + if (tm.tm_mon != 2 || tm.tm_mday != 31) + exit (1); +} + +static void +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)))) + exit (1); + } +} + +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 (time_t_max = 1; 0 < time_t_max; time_t_max *= 2) + continue; + time_t_max--; + if ((time_t) -1 < 0) + for (time_t_min = -1; (time_t) (time_t_min * 2) < 0; time_t_min *= 2) + continue; + 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) + mktime_test (t); + mktime_test ((time_t) 1); + mktime_test ((time_t) (60 * 60)); + mktime_test ((time_t) (60 * 60 * 24)); + + for (j = 1; 0 < j; j *= 2) + bigtime_test (j); + bigtime_test (j - 1); + } + irix_6_4_bug (); + spring_forward_gap (); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_working_mktime=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_func_working_mktime=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_func_working_mktime" >&5 +echo "${ECHO_T}$ac_cv_func_working_mktime" >&6 +if test $ac_cv_func_working_mktime = no; then + case $LIBOBJS in + "mktime.$ac_objext" | \ + *" mktime.$ac_objext" | \ + "mktime.$ac_objext "* | \ + *" 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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + +for ac_header in stdlib.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_func in getpagesize +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +echo "$as_me:$LINENO: checking for working mmap" >&5 +echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 +if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 !STDC_HEADERS && !HAVE_STDLIB_H +char *malloc (); +#endif + +/* This mess was copied from the GNU getpagesize.h. */ +#if !HAVE_GETPAGESIZE +/* Assume that all systems that can run configure have sys/param.h. */ +# if !HAVE_SYS_PARAM_H +# define HAVE_SYS_PARAM_H 1 +# endif + +# ifdef _SC_PAGESIZE +# define getpagesize() sysconf(_SC_PAGESIZE) +# else /* no _SC_PAGESIZE */ +# if 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) + exit (1); + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) + exit (1); + if (write (fd, data, pagesize) != pagesize) + exit (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) + exit (1); + data2 = (char *) malloc (2 * pagesize); + if (!data2) + exit (1); + data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1); + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + exit (1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + exit (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) + exit (1); + if (read (fd, data3, pagesize) != pagesize) + exit (1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + exit (1); + close (fd); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mmap_fixed_mapped=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +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 -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 +echo "${ECHO_T}$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=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in wchar.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in langinfo.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +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 +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +echo "$as_me:$LINENO: checking for mbsrtowcs" >&5 +echo $ECHO_N "checking for mbsrtowcs... $ECHO_C" >&6 +if test "${ac_cv_func_mbsrtowcs+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = mbsrtowcs; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != mbsrtowcs; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mbsrtowcs=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_mbsrtowcs=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_mbsrtowcs" >&5 +echo "${ECHO_T}$ac_cv_func_mbsrtowcs" >&6 +if test $ac_cv_func_mbsrtowcs = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_MBSRTOWCS 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for mbrtowc" >&5 +echo $ECHO_N "checking for mbrtowc... $ECHO_C" >&6 +if test "${ac_cv_func_mbrtowc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 mbrtowc to an innocuous variant, in case declares mbrtowc. + For example, HP-UX 11i declares gettimeofday. */ +#define mbrtowc innocuous_mbrtowc + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char mbrtowc (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef mbrtowc + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char mbrtowc (); +/* 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_mbrtowc) || defined (__stub___mbrtowc) +choke me +#else +char (*f) () = mbrtowc; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != mbrtowc; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mbrtowc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_mbrtowc=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_mbrtowc" >&5 +echo "${ECHO_T}$ac_cv_func_mbrtowc" >&6 +if test $ac_cv_func_mbrtowc = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_MBRTOWC 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for mbrlen" >&5 +echo $ECHO_N "checking for mbrlen... $ECHO_C" >&6 +if test "${ac_cv_func_mbrlen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = mbrlen; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != mbrlen; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mbrlen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_mbrlen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_mbrlen" >&5 +echo "${ECHO_T}$ac_cv_func_mbrlen" >&6 +if test $ac_cv_func_mbrlen = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_MBRLEN 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for wctomb" >&5 +echo $ECHO_N "checking for wctomb... $ECHO_C" >&6 +if test "${ac_cv_func_wctomb+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 wctomb to an innocuous variant, in case declares wctomb. + For example, HP-UX 11i declares gettimeofday. */ +#define wctomb innocuous_wctomb + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char wctomb (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef wctomb + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char wctomb (); +/* 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_wctomb) || defined (__stub___wctomb) +choke me +#else +char (*f) () = wctomb; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != wctomb; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_wctomb=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_wctomb=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_wctomb" >&5 +echo "${ECHO_T}$ac_cv_func_wctomb" >&6 +if test $ac_cv_func_wctomb = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_WCTOMB 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for wcwidth" >&5 +echo $ECHO_N "checking for wcwidth... $ECHO_C" >&6 +if test "${ac_cv_func_wcwidth+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = wcwidth; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != wcwidth; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_wcwidth=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_wcwidth=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_wcwidth" >&5 +echo "${ECHO_T}$ac_cv_func_wcwidth" >&6 +if test $ac_cv_func_wcwidth = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_WCWIDTH 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for wcsdup" >&5 +echo $ECHO_N "checking for wcsdup... $ECHO_C" >&6 +if test "${ac_cv_func_wcsdup+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = wcsdup; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != wcsdup; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_wcsdup=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_wcsdup=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_wcsdup" >&5 +echo "${ECHO_T}$ac_cv_func_wcsdup" >&6 +if test $ac_cv_func_wcsdup = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_WCSDUP 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for mbstate_t" >&5 +echo $ECHO_N "checking for mbstate_t... $ECHO_C" >&6 +if test "${bash_cv_have_mbstate_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ + + mbstate_t ps; + mbstate_t *psp; + psp = (mbstate_t *)0; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_have_mbstate_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_have_mbstate_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_have_mbstate_t" >&5 +echo "${ECHO_T}$bash_cv_have_mbstate_t" >&6 +if test $bash_cv_have_mbstate_t = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_MBSTATE_T 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 +echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6 +if test "${bash_cv_langinfo_codeset+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_langinfo_codeset=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_langinfo_codeset=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_langinfo_codeset" >&5 +echo "${ECHO_T}$bash_cv_langinfo_codeset" >&6 +if test $bash_cv_langinfo_codeset = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_LANGINFO_CODESET 1 +_ACEOF + +fi + + + +if test "$opt_static_link" != yes; then + +echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = 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=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +fi + +echo "$as_me:$LINENO: checking whether sys_siglist is declared" >&5 +echo $ECHO_N "checking whether sys_siglist is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_sys_siglist+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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. */ +#if HAVE_UNISTD_H +# include +#endif + + +int +main () +{ +#ifndef sys_siglist + char *p = (char *) sys_siglist; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_sys_siglist=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl_sys_siglist=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_sys_siglist" >&5 +echo "${ECHO_T}$ac_cv_have_decl_sys_siglist" >&6 +if test $ac_cv_have_decl_sys_siglist = 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 + +echo "$as_me:$LINENO: checking for inet_aton" >&5 +echo $ECHO_N "checking for inet_aton... $ECHO_C" >&6 +if test "${bash_cv_func_inet_aton+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_func_inet_aton=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_func_inet_aton=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_func_inet_aton" >&5 +echo "${ECHO_T}$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" | \ + *" inet_aton.$ac_objext" | \ + "inet_aton.$ac_objext "* | \ + *" inet_aton.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS inet_aton.$ac_objext" ;; +esac + +fi + +fi + +case "$host_os" in +irix4*) +echo "$as_me:$LINENO: checking for getpwent in -lsun" >&5 +echo $ECHO_N "checking for getpwent in -lsun... $ECHO_C" >&6 +if test "${ac_cv_lib_sun_getpwent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char getpwent (); +int +main () +{ +getpwent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_sun_getpwent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_sun_getpwent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_sun_getpwent" >&5 +echo "${ECHO_T}$ac_cv_lib_sun_getpwent" >&6 +if test $ac_cv_lib_sun_getpwent = 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 +echo "$as_me:$LINENO: checking for socket library" >&5 +echo $ECHO_N "checking for socket library... $ECHO_C" >&6 +_bash_needmsg=yes +fi +if test "${bash_cv_have_socklib+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for getpeername in -lsocket" >&5 +echo $ECHO_N "checking for getpeername in -lsocket... $ECHO_C" >&6 +if test "${ac_cv_lib_socket_getpeername+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char getpeername (); +int +main () +{ +getpeername (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_socket_getpeername=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_socket_getpeername=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_socket_getpeername" >&5 +echo "${ECHO_T}$ac_cv_lib_socket_getpeername" >&6 +if test $ac_cv_lib_socket_getpeername = yes; then + bash_cv_have_socklib=yes +else + bash_cv_have_socklib=no +fi + +fi + +if test "X$_bash_needmsg" = Xyes; then + echo "$as_me:$LINENO: result: $bash_cv_have_socklib" >&5 +echo "${ECHO_T}$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 + echo "$as_me:$LINENO: checking for libnsl" >&5 +echo $ECHO_N "checking for libnsl... $ECHO_C" >&6 + _bash_needmsg=yes + fi + if test "${bash_cv_have_libnsl+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for t_open in -lnsl" >&5 +echo $ECHO_N "checking for t_open in -lnsl... $ECHO_C" >&6 +if test "${ac_cv_lib_nsl_t_open+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char t_open (); +int +main () +{ +t_open (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_nsl_t_open=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_nsl_t_open=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_t_open" >&5 +echo "${ECHO_T}$ac_cv_lib_nsl_t_open" >&6 +if test $ac_cv_lib_nsl_t_open = yes; then + bash_cv_have_libnsl=yes +else + bash_cv_have_libnsl=no +fi + +fi + + if test "X$_bash_needmsg" = Xyes; then + echo "$as_me:$LINENO: result: $bash_cv_have_libnsl" >&5 +echo "${ECHO_T}$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 +echo "$as_me:$LINENO: checking for gethostbyname in socket library" >&5 +echo $ECHO_N "checking for gethostbyname in socket library... $ECHO_C" >&6 +_bash_needmsg= +fi +if test "${bash_cv_have_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_have_gethostbyname=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_have_gethostbyname=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi + +if test "X$_bash_needmsg" = Xyes; then + echo "$as_me:$LINENO: checking for gethostbyname in socket library" >&5 +echo $ECHO_N "checking for gethostbyname in socket library... $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $bash_cv_have_gethostbyname" >&5 +echo "${ECHO_T}$bash_cv_have_gethostbyname" >&6 +if test "$bash_cv_have_gethostbyname" = yes; then +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETHOSTBYNAME 1 +_ACEOF + +fi + +fi + +echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5 +echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6 +if test "${ac_cv_type_uid_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 +echo "${ECHO_T}$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 + +echo "$as_me:$LINENO: checking type of array argument to getgroups" >&5 +echo $ECHO_N "checking type of array argument to getgroups... $ECHO_C" >&6 +if test "${ac_cv_type_getgroups+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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. */ +#include +#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 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 but getgroups modifies an array of ints. */ + exit ((n > 0 && gidset[n] != val.gval) ? 1 : 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_getgroups=gid_t +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_type_getgroups=int +fi +rm -f core *.core 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 +echo "$as_me:$LINENO: result: $ac_cv_type_getgroups" >&5 +echo "${ECHO_T}$ac_cv_type_getgroups" >&6 + +cat >>confdefs.h <<_ACEOF +#define GETGROUPS_T $ac_cv_type_getgroups +_ACEOF + + +echo "$as_me:$LINENO: checking for off_t" >&5 +echo $ECHO_N "checking for off_t... $ECHO_C" >&6 +if test "${ac_cv_type_off_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((off_t *) 0) + return 0; +if (sizeof (off_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_off_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_off_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 +echo "${ECHO_T}$ac_cv_type_off_t" >&6 +if test $ac_cv_type_off_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define off_t long +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for mode_t" >&5 +echo $ECHO_N "checking for mode_t... $ECHO_C" >&6 +if test "${ac_cv_type_mode_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((mode_t *) 0) + return 0; +if (sizeof (mode_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_mode_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_mode_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5 +echo "${ECHO_T}$ac_cv_type_mode_t" >&6 +if test $ac_cv_type_mode_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define mode_t int +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5 +echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6 +if test "${ac_cv_type_uid_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 +echo "${ECHO_T}$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 + +echo "$as_me:$LINENO: checking for pid_t" >&5 +echo $ECHO_N "checking for pid_t... $ECHO_C" >&6 +if test "${ac_cv_type_pid_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((pid_t *) 0) + return 0; +if (sizeof (pid_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_pid_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_pid_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 +echo "${ECHO_T}$ac_cv_type_pid_t" >&6 +if test $ac_cv_type_pid_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define pid_t int +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for size_t" >&5 +echo $ECHO_N "checking for size_t... $ECHO_C" >&6 +if test "${ac_cv_type_size_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((size_t *) 0) + return 0; +if (sizeof (size_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_size_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_size_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +echo "${ECHO_T}$ac_cv_type_size_t" >&6 +if test $ac_cv_type_size_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for ssize_t" >&5 +echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6 +if test "${ac_cv_type_ssize_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((ssize_t *) 0) + return 0; +if (sizeof (ssize_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ssize_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_ssize_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5 +echo "${ECHO_T}$ac_cv_type_ssize_t" >&6 +if test $ac_cv_type_ssize_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define ssize_t int +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for time_t" >&5 +echo $ECHO_N "checking for time_t... $ECHO_C" >&6 +if test "${ac_cv_type_time_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((time_t *) 0) + return 0; +if (sizeof (time_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_time_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_time_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_time_t" >&5 +echo "${ECHO_T}$ac_cv_type_time_t" >&6 +if test $ac_cv_type_time_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define time_t long +_ACEOF + +fi + + + +echo "$as_me:$LINENO: checking for long long" >&5 +echo $ECHO_N "checking for long long... $ECHO_C" >&6 +if test "${bash_cv_type_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +long long ll = 1; int i = 63; +int +main () +{ + +long long llm = (long long) -1; +return ll << i | ll >> i | llm / ll | llm % ll; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_type_long_long='long long' +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_type_long_long='long' +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_type_long_long" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking for unsigned long long" >&5 +echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6 +if test "${bash_cv_type_unsigned_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ + +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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_type_unsigned_long_long='unsigned long long' +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_type_unsigned_long_long='unsigned long' +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_type_unsigned_long_long" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking return type of signal handlers" >&5 +echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 +if test "${ac_cv_type_signal+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef signal +# undef signal +#endif +#ifdef __cplusplus +extern "C" void (*signal (int, void (*)(int)))(int); +#else +void (*signal ()) (); +#endif + +int +main () +{ +int i; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_signal=void +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_signal=int +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 +echo "${ECHO_T}$ac_cv_type_signal" >&6 + +cat >>confdefs.h <<_ACEOF +#define RETSIGTYPE $ac_cv_type_signal +_ACEOF + + + +echo "$as_me:$LINENO: checking for char" >&5 +echo $ECHO_N "checking for char... $ECHO_C" >&6 +if test "${ac_cv_type_char+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((char *) 0) + return 0; +if (sizeof (char)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_char=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_char=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_char" >&5 +echo "${ECHO_T}$ac_cv_type_char" >&6 + +echo "$as_me:$LINENO: checking size of char" >&5 +echo $ECHO_N "checking size of char... $ECHO_C" >&6 +if test "${ac_cv_sizeof_char+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_char" = yes; then + # The cast to unsigned long 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. + 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) (sizeof (char))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (char))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + 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) (sizeof (char))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (char))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f 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) (sizeof (char))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_char=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (char), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (char), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +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 +long longval () { return (long) (sizeof (char)); } +unsigned long ulongval () { return (long) (sizeof (char)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (char))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (char)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (char)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_char=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (char), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (char), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_char=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_char" >&5 +echo "${ECHO_T}$ac_cv_sizeof_char" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_CHAR $ac_cv_sizeof_char +_ACEOF + + +echo "$as_me:$LINENO: checking for short" >&5 +echo $ECHO_N "checking for short... $ECHO_C" >&6 +if test "${ac_cv_type_short+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((short *) 0) + return 0; +if (sizeof (short)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_short=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_short=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_short" >&5 +echo "${ECHO_T}$ac_cv_type_short" >&6 + +echo "$as_me:$LINENO: checking size of short" >&5 +echo $ECHO_N "checking size of short... $ECHO_C" >&6 +if test "${ac_cv_sizeof_short+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_short" = yes; then + # The cast to unsigned long 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. + 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) (sizeof (short))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (short))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + 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) (sizeof (short))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (short))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f 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) (sizeof (short))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_short=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (short), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +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 +long longval () { return (long) (sizeof (short)); } +unsigned long ulongval () { return (long) (sizeof (short)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (short))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (short)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (short)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_short=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (short), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_short=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5 +echo "${ECHO_T}$ac_cv_sizeof_short" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_SHORT $ac_cv_sizeof_short +_ACEOF + + +echo "$as_me:$LINENO: checking for int" >&5 +echo $ECHO_N "checking for int... $ECHO_C" >&6 +if test "${ac_cv_type_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((int *) 0) + return 0; +if (sizeof (int)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_int=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_int=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5 +echo "${ECHO_T}$ac_cv_type_int" >&6 + +echo "$as_me:$LINENO: checking size of int" >&5 +echo $ECHO_N "checking size of int... $ECHO_C" >&6 +if test "${ac_cv_sizeof_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_int" = yes; then + # The cast to unsigned long 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. + 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) (sizeof (int))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (int))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + 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) (sizeof (int))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (int))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f 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) (sizeof (int))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_int=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +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 +long longval () { return (long) (sizeof (int)); } +unsigned long ulongval () { return (long) (sizeof (int)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (int))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (int)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (int)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_int=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_int=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 +echo "${ECHO_T}$ac_cv_sizeof_int" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_INT $ac_cv_sizeof_int +_ACEOF + + +echo "$as_me:$LINENO: checking for long" >&5 +echo $ECHO_N "checking for long... $ECHO_C" >&6 +if test "${ac_cv_type_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((long *) 0) + return 0; +if (sizeof (long)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_long=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_long=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5 +echo "${ECHO_T}$ac_cv_type_long" >&6 + +echo "$as_me:$LINENO: checking size of long" >&5 +echo $ECHO_N "checking size of long... $ECHO_C" >&6 +if test "${ac_cv_sizeof_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_long" = yes; then + # The cast to unsigned long 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. + 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) (sizeof (long))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + 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) (sizeof (long))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (long))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f 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) (sizeof (long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_long=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +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 +long longval () { return (long) (sizeof (long)); } +unsigned long ulongval () { return (long) (sizeof (long)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (long))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (long)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (long)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_long=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_long=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_LONG $ac_cv_sizeof_long +_ACEOF + + +echo "$as_me:$LINENO: checking for char *" >&5 +echo $ECHO_N "checking for char *... $ECHO_C" >&6 +if test "${ac_cv_type_char_p+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((char * *) 0) + return 0; +if (sizeof (char *)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_char_p=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_char_p=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_char_p" >&5 +echo "${ECHO_T}$ac_cv_type_char_p" >&6 + +echo "$as_me:$LINENO: checking size of char *" >&5 +echo $ECHO_N "checking size of char *... $ECHO_C" >&6 +if test "${ac_cv_sizeof_char_p+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_char_p" = yes; then + # The cast to unsigned long 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. + 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) (sizeof (char *))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (char *))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + 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) (sizeof (char *))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (char *))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f 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) (sizeof (char *))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_char_p=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (char *), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (char *), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +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 +long longval () { return (long) (sizeof (char *)); } +unsigned long ulongval () { return (long) (sizeof (char *)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (char *))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (char *)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (char *)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_char_p=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (char *), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (char *), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_char_p=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_char_p" >&5 +echo "${ECHO_T}$ac_cv_sizeof_char_p" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_CHAR_P $ac_cv_sizeof_char_p +_ACEOF + + +echo "$as_me:$LINENO: checking for double" >&5 +echo $ECHO_N "checking for double... $ECHO_C" >&6 +if test "${ac_cv_type_double+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((double *) 0) + return 0; +if (sizeof (double)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_double=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_double=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_double" >&5 +echo "${ECHO_T}$ac_cv_type_double" >&6 + +echo "$as_me:$LINENO: checking size of double" >&5 +echo $ECHO_N "checking size of double... $ECHO_C" >&6 +if test "${ac_cv_sizeof_double+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_double" = yes; then + # The cast to unsigned long 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. + 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) (sizeof (double))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (double))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + 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) (sizeof (double))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (double))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f 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) (sizeof (double))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_double=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (double), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +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 +long longval () { return (long) (sizeof (double)); } +unsigned long ulongval () { return (long) (sizeof (double)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (double))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (double)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (double)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_double=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (double), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_double=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_double" >&5 +echo "${ECHO_T}$ac_cv_sizeof_double" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_DOUBLE $ac_cv_sizeof_double +_ACEOF + + +echo "$as_me:$LINENO: checking for long long" >&5 +echo $ECHO_N "checking for long long... $ECHO_C" >&6 +if test "${ac_cv_type_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((long long *) 0) + return 0; +if (sizeof (long long)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_long_long=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_long_long=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 +echo "${ECHO_T}$ac_cv_type_long_long" >&6 + +echo "$as_me:$LINENO: checking size of long long" >&5 +echo $ECHO_N "checking size of long long... $ECHO_C" >&6 +if test "${ac_cv_sizeof_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_long_long" = yes; then + # The cast to unsigned long 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. + 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) (sizeof (long long))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (long long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + 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) (sizeof (long long))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; 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) (sizeof (long long))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + 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 conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f 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) (sizeof (long long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_long_long=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +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 +long longval () { return (long) (sizeof (long long)); } +unsigned long ulongval () { return (long) (sizeof (long long)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (long long))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (long long)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (long long)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_long_long=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_long_long=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long +_ACEOF + + + +echo "$as_me:$LINENO: checking for u_int" >&5 +echo $ECHO_N "checking for u_int... $ECHO_C" >&6 +if test "${ac_cv_type_u_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((u_int *) 0) + return 0; +if (sizeof (u_int)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_int=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_u_int=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_int" >&5 +echo "${ECHO_T}$ac_cv_type_u_int" >&6 +if test $ac_cv_type_u_int = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define u_int unsigned int +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for u_long" >&5 +echo $ECHO_N "checking for u_long... $ECHO_C" >&6 +if test "${ac_cv_type_u_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((u_long *) 0) + return 0; +if (sizeof (u_long)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_long=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_u_long=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_long" >&5 +echo "${ECHO_T}$ac_cv_type_u_long" >&6 +if test $ac_cv_type_u_long = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define u_long unsigned long +_ACEOF + +fi + + + +if test "$ac_cv_sizeof_short" = 2; then + echo "$as_me:$LINENO: checking for bits16_t" >&5 +echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits16_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits16_t *) 0) + return 0; +if (sizeof (bits16_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits16_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits16_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits16_t" >&6 +if test $ac_cv_type_bits16_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define bits16_t short +_ACEOF + +fi + +elif test "$ac_cv_sizeof_char" = 2; then + echo "$as_me:$LINENO: checking for bits16_t" >&5 +echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits16_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits16_t *) 0) + return 0; +if (sizeof (bits16_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits16_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits16_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits16_t" >&6 +if test $ac_cv_type_bits16_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define bits16_t char +_ACEOF + +fi + +else + echo "$as_me:$LINENO: checking for bits16_t" >&5 +echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits16_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits16_t *) 0) + return 0; +if (sizeof (bits16_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits16_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits16_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits16_t" >&6 +if test $ac_cv_type_bits16_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define bits16_t short +_ACEOF + +fi + +fi + + +if test "$ac_cv_sizeof_short" = 2; then + echo "$as_me:$LINENO: checking for u_bits16_t" >&5 +echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6 +if test "${ac_cv_type_u_bits16_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((u_bits16_t *) 0) + return 0; +if (sizeof (u_bits16_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_bits16_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_u_bits16_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6 +if test $ac_cv_type_u_bits16_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define u_bits16_t unsigned short +_ACEOF + +fi + +elif test "$ac_cv_sizeof_char" = 2; then + echo "$as_me:$LINENO: checking for u_bits16_t" >&5 +echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6 +if test "${ac_cv_type_u_bits16_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((u_bits16_t *) 0) + return 0; +if (sizeof (u_bits16_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_bits16_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_u_bits16_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6 +if test $ac_cv_type_u_bits16_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define u_bits16_t unsigned char +_ACEOF + +fi + +else + echo "$as_me:$LINENO: checking for u_bits16_t" >&5 +echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6 +if test "${ac_cv_type_u_bits16_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((u_bits16_t *) 0) + return 0; +if (sizeof (u_bits16_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_bits16_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_u_bits16_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6 +if test $ac_cv_type_u_bits16_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define u_bits16_t unsigned short +_ACEOF + +fi + +fi + + +if test "$ac_cv_sizeof_int" = 4; then + echo "$as_me:$LINENO: checking for bits32_t" >&5 +echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits32_t *) 0) + return 0; +if (sizeof (bits32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits32_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits32_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits32_t" >&6 +if test $ac_cv_type_bits32_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define bits32_t int +_ACEOF + +fi + +elif test "$ac_cv_sizeof_long" = 4; then + echo "$as_me:$LINENO: checking for bits32_t" >&5 +echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits32_t *) 0) + return 0; +if (sizeof (bits32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits32_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits32_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits32_t" >&6 +if test $ac_cv_type_bits32_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define bits32_t long +_ACEOF + +fi + +else + echo "$as_me:$LINENO: checking for bits32_t" >&5 +echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits32_t *) 0) + return 0; +if (sizeof (bits32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits32_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits32_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits32_t" >&6 +if test $ac_cv_type_bits32_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define bits32_t int +_ACEOF + +fi + +fi + + +if test "$ac_cv_sizeof_int" = 4; then + echo "$as_me:$LINENO: checking for u_bits32_t" >&5 +echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6 +if test "${ac_cv_type_u_bits32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((u_bits32_t *) 0) + return 0; +if (sizeof (u_bits32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_bits32_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_u_bits32_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6 +if test $ac_cv_type_u_bits32_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define u_bits32_t unsigned int +_ACEOF + +fi + +elif test "$ac_cv_sizeof_long" = 4; then + echo "$as_me:$LINENO: checking for u_bits32_t" >&5 +echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6 +if test "${ac_cv_type_u_bits32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((u_bits32_t *) 0) + return 0; +if (sizeof (u_bits32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_bits32_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_u_bits32_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6 +if test $ac_cv_type_u_bits32_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define u_bits32_t unsigned long +_ACEOF + +fi + +else + echo "$as_me:$LINENO: checking for u_bits32_t" >&5 +echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6 +if test "${ac_cv_type_u_bits32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((u_bits32_t *) 0) + return 0; +if (sizeof (u_bits32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_u_bits32_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_u_bits32_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6 +if test $ac_cv_type_u_bits32_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define u_bits32_t unsigned int +_ACEOF + +fi + +fi + + +if test "$ac_cv_sizeof_char_p" = 8; then + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits64_t *) 0) + return 0; +if (sizeof (bits64_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits64_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits64_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 +if test $ac_cv_type_bits64_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define bits64_t char * +_ACEOF + +fi + +elif test "$ac_cv_sizeof_double" = 8; then + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits64_t *) 0) + return 0; +if (sizeof (bits64_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits64_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits64_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 +if test $ac_cv_type_bits64_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define bits64_t double +_ACEOF + +fi + +elif test -n "$ac_cv_type_long_long" && test "$ac_cv_sizeof_long_long" = 8; then + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits64_t *) 0) + return 0; +if (sizeof (bits64_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits64_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits64_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 +if test $ac_cv_type_bits64_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define bits64_t long long +_ACEOF + +fi + +elif test "$ac_cv_sizeof_long" = 8; then + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits64_t *) 0) + return 0; +if (sizeof (bits64_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits64_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits64_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 +if test $ac_cv_type_bits64_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define bits64_t long +_ACEOF + +fi + +else + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 +if test "${ac_cv_type_bits64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((bits64_t *) 0) + return 0; +if (sizeof (bits64_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_bits64_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_bits64_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 +if test $ac_cv_type_bits64_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define bits64_t double +_ACEOF + +fi + +fi + + + +if test "$ac_cv_sizeof_int" = "$ac_cv_sizeof_char_p"; then + echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 +if test "${ac_cv_type_ptrdiff_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((ptrdiff_t *) 0) + return 0; +if (sizeof (ptrdiff_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ptrdiff_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_ptrdiff_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 +if test $ac_cv_type_ptrdiff_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define ptrdiff_t int +_ACEOF + +fi + +elif test "$ac_cv_sizeof_long" = "$ac_cv_sizeof_char_p"; then + echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 +if test "${ac_cv_type_ptrdiff_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((ptrdiff_t *) 0) + return 0; +if (sizeof (ptrdiff_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ptrdiff_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_ptrdiff_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 +if test $ac_cv_type_ptrdiff_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define ptrdiff_t long +_ACEOF + +fi + +elif test "$ac_cv_type_long_long" = yes && test "$ac_cv_sizeof_long_long" = "$ac_cv_sizeof_char_p"; then + echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 +if test "${ac_cv_type_ptrdiff_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((ptrdiff_t *) 0) + return 0; +if (sizeof (ptrdiff_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ptrdiff_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_ptrdiff_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 +if test $ac_cv_type_ptrdiff_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define ptrdiff_t long long +_ACEOF + +fi + +else + echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 +if test "${ac_cv_type_ptrdiff_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +if ((ptrdiff_t *) 0) + return 0; +if (sizeof (ptrdiff_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ptrdiff_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_ptrdiff_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 +if test $ac_cv_type_ptrdiff_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define ptrdiff_t int +_ACEOF + +fi + +fi + + +echo "$as_me:$LINENO: checking whether stat file-mode macros are broken" >&5 +echo $ECHO_N "checking whether stat file-mode macros are broken... $ECHO_C" >&6 +if test "${ac_cv_header_stat_broken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + +#if defined(S_ISBLK) && defined(S_IFDIR) +# if S_ISBLK (S_IFDIR) +You lose. +# endif +#endif + +#if defined(S_ISBLK) && defined(S_IFCHR) +# if S_ISBLK (S_IFCHR) +You lose. +# endif +#endif + +#if defined(S_ISLNK) && defined(S_IFREG) +# if S_ISLNK (S_IFREG) +You lose. +# endif +#endif + +#if defined(S_ISSOCK) && defined(S_IFREG) +# if S_ISSOCK (S_IFREG) +You lose. +# endif +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "You lose" >/dev/null 2>&1; then + ac_cv_header_stat_broken=yes +else + ac_cv_header_stat_broken=no +fi +rm -f conftest* + +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stat_broken" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking whether #! works in shell scripts" >&5 +echo $ECHO_N "checking whether #! works in shell scripts... $ECHO_C" >&6 +if test "${ac_cv_sys_interpreter+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + echo '#! /bin/cat +exit 69 +' >conftest +chmod u+x conftest +(SHELL=/bin/sh; export SHELL; ./conftest >/dev/null) +if test $? -ne 69; then + ac_cv_sys_interpreter=yes +else + ac_cv_sys_interpreter=no +fi +rm -f conftest +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_interpreter" >&5 +echo "${ECHO_T}$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 + +fi + +if test "$ac_cv_func_lstat" = "no"; then +echo "$as_me:$LINENO: checking for lstat" >&5 +echo $ECHO_N "checking for lstat... $ECHO_C" >&6 +if test "${bash_cv_func_lstat+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ + lstat(".",(struct stat *)0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_func_lstat=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_func_lstat=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_func_lstat" >&5 +echo "${ECHO_T}$bash_cv_func_lstat" >&6 +if test $bash_cv_func_lstat = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_LSTAT 1 +_ACEOF + +fi + +fi + + +echo "$as_me:$LINENO: checking whether the ctype macros accept non-ascii characters" >&5 +echo $ECHO_N "checking whether the ctype macros accept non-ascii characters... $ECHO_C" >&6 +if test "${bash_cv_func_ctype_nonascii+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check ctype macros if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#ifdef HAVE_LOCALE_H +#include +#endif +#include +#include + +main(c, v) +int c; +char *v[]; +{ + char *deflocale; + unsigned char x; + int r1, r2; + +#ifdef HAVE_SETLOCALE + /* We take a shot here. If that locale is not known, try the + system default. We try this one because '\342' (226) is + known to be a printable character in that locale. */ + deflocale = setlocale(LC_ALL, "en_US.ISO8859-1"); + if (deflocale == 0) + deflocale = setlocale(LC_ALL, ""); +#endif + + x = '\342'; + r1 = isprint(x); + x -= 128; + r2 = isprint(x); + exit (r1 == 0 || r2 == 0); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_func_ctype_nonascii=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_func_ctype_nonascii=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_func_ctype_nonascii" >&5 +echo "${ECHO_T}$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 + +fi + +echo "$as_me:$LINENO: checking if dup2 fails to clear the close-on-exec flag" >&5 +echo $ECHO_N "checking if dup2 fails to clear the close-on-exec flag... $ECHO_C" >&6 +if test "${bash_cv_dup2_broken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check dup2 if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#include +#include +main() +{ + int fd1, fd2, fl; + fd1 = open("/dev/null", 2); + if (fcntl(fd1, 2, 1) < 0) + exit(1); + fd2 = dup2(fd1, 1); + if (fd2 < 0) + exit(2); + fl = fcntl(fd2, 1, 0); + /* fl will be 1 if dup2 did not reset the close-on-exec flag. */ + exit(fl != 1); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_dup2_broken=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_dup2_broken=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + +fi + +echo "$as_me:$LINENO: result: $bash_cv_dup2_broken" >&5 +echo "${ECHO_T}$bash_cv_dup2_broken" >&6 +if test $bash_cv_dup2_broken = yes; then +cat >>confdefs.h <<\_ACEOF +#define DUP2_BROKEN 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking whether pgrps need synchronization" >&5 +echo $ECHO_N "checking whether pgrps need synchronization... $ECHO_C" >&6 +if test "${bash_cv_pgrp_pipe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check pgrp synchronization if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#ifdef HAVE_UNISTD_H +# include +#endif +main() +{ +# ifdef GETPGRP_VOID +# define getpgID() getpgrp() +# else +# define getpgID() getpgrp(0) +# define setpgid(x,y) setpgrp(x,y) +# endif + int pid1, pid2, fds[2]; + int status; + char ok; + + switch (pid1 = fork()) { + case -1: + exit(1); + case 0: + setpgid(0, getpid()); + exit(0); + } + setpgid(pid1, pid1); + + sleep(2); /* let first child die */ + + if (pipe(fds) < 0) + exit(2); + + switch (pid2 = fork()) { + case -1: + exit(3); + case 0: + setpgid(0, pid1); + ok = getpgID() == pid1; + write(fds[1], &ok, 1); + exit(0); + } + setpgid(pid2, pid1); + + close(fds[1]); + if (read(fds[0], &ok, 1) != 1) + exit(4); + wait(&status); + wait(&status); + exit(ok ? 0 : 5); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_pgrp_pipe=no +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_pgrp_pipe=yes +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + +fi + +echo "$as_me:$LINENO: result: $bash_cv_pgrp_pipe" >&5 +echo "${ECHO_T}$bash_cv_pgrp_pipe" >&6 +if test $bash_cv_pgrp_pipe = yes; then +cat >>confdefs.h <<\_ACEOF +#define PGRP_PIPE 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for type of signal functions" >&5 +echo $ECHO_N "checking for type of signal functions... $ECHO_C" >&6 +if test "${bash_cv_signal_vintage+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ + + sigset_t ss; + struct sigaction sa; + sigemptyset(&ss); sigsuspend(&ss); + sigaction(SIGINT, &sa, (struct sigaction *) 0); + sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_signal_vintage=posix +else + 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. */ +#include +int +main () +{ + + int mask = sigmask(SIGINT); + sigsetmask(mask); sigblock(mask); sigpause(mask); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_signal_vintage=4.2bsd +else + 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. */ + + #include + RETSIGTYPE foo() { } +int +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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_signal_vintage=svr3 +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_signal_vintage=v7 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi + +echo "$as_me:$LINENO: result: $bash_cv_signal_vintage" >&5 +echo "${ECHO_T}$bash_cv_signal_vintage" >&6 +if test "$bash_cv_signal_vintage" = posix; then +cat >>confdefs.h <<\_ACEOF +#define HAVE_POSIX_SIGNALS 1 +_ACEOF + +elif test "$bash_cv_signal_vintage" = "4.2bsd"; then +cat >>confdefs.h <<\_ACEOF +#define HAVE_BSD_SIGNALS 1 +_ACEOF + +elif test "$bash_cv_signal_vintage" = svr3; then +cat >>confdefs.h <<\_ACEOF +#define HAVE_USG_SIGHOLD 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for sys_errlist and sys_nerr" >&5 +echo $ECHO_N "checking for sys_errlist and sys_nerr... $ECHO_C" >&6 +if test "${bash_cv_sys_errlist+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +extern char *sys_errlist[]; + extern int sys_nerr; + char *msg = sys_errlist[sys_nerr - 1]; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_sys_errlist=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_sys_errlist=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_sys_errlist" >&5 +echo "${ECHO_T}$bash_cv_sys_errlist" >&6 +if test $bash_cv_sys_errlist = yes; then +cat >>confdefs.h <<\_ACEOF +#define HAVE_SYS_ERRLIST 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for sys_siglist in system C library" >&5 +echo $ECHO_N "checking for sys_siglist in system C library... $ECHO_C" >&6 +if test "${bash_cv_sys_siglist+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check for sys_siglist if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifndef SYS_SIGLIST_DECLARED +extern char *sys_siglist[]; +#endif +main() +{ +char *msg = sys_siglist[2]; +exit(msg == 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_sys_siglist=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_sys_siglist=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_sys_siglist" >&5 +echo "${ECHO_T}$bash_cv_sys_siglist" >&6 +if test $bash_cv_sys_siglist = yes; then +cat >>confdefs.h <<\_ACEOF +#define HAVE_SYS_SIGLIST 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for _sys_siglist in signal.h or unistd.h" >&5 +echo $ECHO_N "checking for _sys_siglist in signal.h or unistd.h... $ECHO_C" >&6 +if test "${bash_cv_decl_under_sys_siglist+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef HAVE_UNISTD_H +#include +#endif +int +main () +{ + char *msg = _sys_siglist[2]; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_decl_under_sys_siglist=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_decl_under_sys_siglist=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_decl_under_sys_siglist" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking for _sys_siglist in system C library" >&5 +echo $ECHO_N "checking for _sys_siglist in system C library... $ECHO_C" >&6 +if test "${bash_cv_under_sys_siglist+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check for _sys_siglist if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifndef UNDER_SYS_SIGLIST_DECLARED +extern char *_sys_siglist[]; +#endif +main() +{ +char *msg = (char *)_sys_siglist[2]; +exit(msg == 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_under_sys_siglist=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_under_sys_siglist=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_under_sys_siglist" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking whether signal handlers are of type void" >&5 +echo $ECHO_N "checking whether signal handlers are of type void... $ECHO_C" >&6 +if test "${bash_cv_void_sighandler+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef signal +#undef signal +#endif +#ifdef __cplusplus +extern "C" +#endif +void (*signal ()) (); +int +main () +{ +int i; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_void_sighandler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_void_sighandler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_void_sighandler" >&5 +echo "${ECHO_T}$bash_cv_void_sighandler" >&6 +if test $bash_cv_void_sighandler = yes; then +cat >>confdefs.h <<\_ACEOF +#define VOID_SIGHANDLER 1 +_ACEOF + +fi + + + +echo "$as_me:$LINENO: checking for clock_t" >&5 +echo $ECHO_N "checking for clock_t... $ECHO_C" >&6 +if test "${bash_cv_type_clock_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "clock_t" >/dev/null 2>&1; then + bash_cv_type_clock_t=yes +else + bash_cv_type_clock_t=no +fi +rm -f conftest* + +fi + +echo "$as_me:$LINENO: result: $bash_cv_type_clock_t" >&5 +echo "${ECHO_T}$bash_cv_type_clock_t" >&6 + +if test $bash_cv_type_clock_t = no; then + cat >>confdefs.h <<_ACEOF +#define clock_t long +_ACEOF + +fi + + + +echo "$as_me:$LINENO: checking for sigset_t" >&5 +echo $ECHO_N "checking for sigset_t... $ECHO_C" >&6 +if test "${bash_cv_type_sigset_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#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 + +echo "$as_me:$LINENO: result: $bash_cv_type_sigset_t" >&5 +echo "${ECHO_T}$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 + + + +echo "$as_me:$LINENO: checking for quad_t" >&5 +echo $ECHO_N "checking for quad_t... $ECHO_C" >&6 +if test "${bash_cv_type_quad_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + + +_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 + +echo "$as_me:$LINENO: result: $bash_cv_type_quad_t" >&5 +echo "${ECHO_T}$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 + + + +echo "$as_me:$LINENO: checking for intmax_t" >&5 +echo $ECHO_N "checking for intmax_t... $ECHO_C" >&6 +if test "${bash_cv_type_intmax_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + + +_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 + +echo "$as_me:$LINENO: result: $bash_cv_type_intmax_t" >&5 +echo "${ECHO_T}$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 + + + +echo "$as_me:$LINENO: checking for uintmax_t" >&5 +echo $ECHO_N "checking for uintmax_t... $ECHO_C" >&6 +if test "${bash_cv_type_uintmax_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + + +_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 + +echo "$as_me:$LINENO: result: $bash_cv_type_uintmax_t" >&5 +echo "${ECHO_T}$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 + + +echo "$as_me:$LINENO: checking for socklen_t" >&5 +echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6 +if test "${bash_cv_type_socklen_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#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 +else + bash_cv_type_socklen_t=no +fi +rm -f conftest* + +fi + +echo "$as_me:$LINENO: result: $bash_cv_type_socklen_t" >&5 +echo "${ECHO_T}$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 + + fi +if test $bash_cv_type_socklen_t = no; then + cat >>confdefs.h <<_ACEOF +#define socklen_t int +_ACEOF + +fi + +fi +echo "$as_me:$LINENO: checking for size and type of struct rlimit fields" >&5 +echo $ECHO_N "checking for size and type of struct rlimit fields... $ECHO_C" >&6 +if test "${bash_cv_type_rlimit+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_type_rlimit=rlim_t +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check quad_t if cross compiling -- defaulting to long" >&5 +echo "$as_me: WARNING: cannot check quad_t if cross compiling -- defaulting to long" >&2;} + bash_cv_type_rlimit=long +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 +main() +{ +#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_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_type_rlimit=quad_t +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_type_rlimit=long +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi + +echo "$as_me:$LINENO: result: $bash_cv_type_rlimit" >&5 +echo "${ECHO_T}$bash_cv_type_rlimit" >&6 +if test $bash_cv_type_rlimit = quad_t; then +cat >>confdefs.h <<\_ACEOF +#define RLIMTYPE quad_t +_ACEOF + +elif test $bash_cv_type_rlimit = rlim_t; then +cat >>confdefs.h <<\_ACEOF +#define RLIMTYPE rlim_t +_ACEOF + +fi + + + +echo "$as_me:$LINENO: checking for struct termios.c_line" >&5 +echo $ECHO_N "checking for struct termios.c_line... $ECHO_C" >&6 +if test "${ac_cv_member_struct_termios_c_line+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +static struct termios ac_aggr; +if (ac_aggr.c_line) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_termios_c_line=yes +else + 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. */ + +#include +#include + + +int +main () +{ +static struct termios ac_aggr; +if (sizeof ac_aggr.c_line) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_termios_c_line=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_struct_termios_c_line=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_termios_c_line" >&5 +echo "${ECHO_T}$ac_cv_member_struct_termios_c_line" >&6 +if test $ac_cv_member_struct_termios_c_line = yes; then + cat >>confdefs.h <<\_ACEOF +#define TERMIOS_LDISC 1 +_ACEOF + +fi + + + +echo "$as_me:$LINENO: checking for struct termio.c_line" >&5 +echo $ECHO_N "checking for struct termio.c_line... $ECHO_C" >&6 +if test "${ac_cv_member_struct_termio_c_line+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +static struct termio ac_aggr; +if (ac_aggr.c_line) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_termio_c_line=yes +else + 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. */ + +#include +#include + + +int +main () +{ +static struct termio ac_aggr; +if (sizeof ac_aggr.c_line) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_termio_c_line=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_struct_termio_c_line=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_termio_c_line" >&5 +echo "${ECHO_T}$ac_cv_member_struct_termio_c_line" >&6 +if test $ac_cv_member_struct_termio_c_line = yes; then + cat >>confdefs.h <<\_ACEOF +#define TERMIO_LDISC 1 +_ACEOF + +fi + + + +echo "$as_me:$LINENO: checking for struct dirent.d_ino" >&5 +echo $ECHO_N "checking for struct dirent.d_ino... $ECHO_C" >&6 +if test "${bash_cv_dirent_has_dino+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ +#if defined(HAVE_DIRENT_H) +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif /* SYSNDIR */ +# ifdef HAVE_SYS_DIR_H +# include +# endif /* SYSDIR */ +# ifdef HAVE_NDIR_H +# include +# endif +#endif /* HAVE_DIRENT_H */ + +int +main () +{ + +struct dirent d; int z; z = d.d_ino; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_dirent_has_dino=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_dirent_has_dino=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_dirent_has_dino" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking for struct dirent.d_fileno" >&5 +echo $ECHO_N "checking for struct dirent.d_fileno... $ECHO_C" >&6 +if test "${bash_cv_dirent_has_d_fileno+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ +#if defined(HAVE_DIRENT_H) +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif /* SYSNDIR */ +# ifdef HAVE_SYS_DIR_H +# include +# endif /* SYSDIR */ +# ifdef HAVE_NDIR_H +# include +# endif +#endif /* HAVE_DIRENT_H */ + +int +main () +{ + +struct dirent d; int z; z = d.d_fileno; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_dirent_has_d_fileno=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_dirent_has_d_fileno=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_dirent_has_d_fileno" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking for struct dirent.d_namlen" >&5 +echo $ECHO_N "checking for struct dirent.d_namlen... $ECHO_C" >&6 +if test "${bash_cv_dirent_has_d_namlen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ +#if defined(HAVE_DIRENT_H) +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif /* SYSNDIR */ +# ifdef HAVE_SYS_DIR_H +# include +# endif /* SYSDIR */ +# ifdef HAVE_NDIR_H +# include +# endif +#endif /* HAVE_DIRENT_H */ + +int +main () +{ + +struct dirent d; int z; z = d.d_namlen; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_dirent_has_d_namlen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_dirent_has_d_namlen=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_dirent_has_d_namlen" >&5 +echo "${ECHO_T}$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 + +fi + +echo "$as_me:$LINENO: checking for struct winsize in sys/ioctl.h and termios.h" >&5 +echo $ECHO_N "checking for struct winsize in sys/ioctl.h and termios.h... $ECHO_C" >&6 +if test "${bash_cv_struct_winsize_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 winsize x; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_struct_winsize_header=ioctl_h +else + 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. */ +#include +#include +int +main () +{ +struct winsize x; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_struct_winsize_header=termios_h +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_struct_winsize_header=other +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +if test $bash_cv_struct_winsize_header = ioctl_h; then + echo "$as_me:$LINENO: result: sys/ioctl.h" >&5 +echo "${ECHO_T}sys/ioctl.h" >&6 + cat >>confdefs.h <<\_ACEOF +#define STRUCT_WINSIZE_IN_SYS_IOCTL 1 +_ACEOF + +elif test $bash_cv_struct_winsize_header = termios_h; then + echo "$as_me:$LINENO: result: termios.h" >&5 +echo "${ECHO_T}termios.h" >&6 + cat >>confdefs.h <<\_ACEOF +#define STRUCT_WINSIZE_IN_TERMIOS 1 +_ACEOF + +else + echo "$as_me:$LINENO: result: not found" >&5 +echo "${ECHO_T}not found" >&6 +fi + +echo "$as_me:$LINENO: checking for struct timeval in sys/time.h and time.h" >&5 +echo $ECHO_N "checking for struct timeval in sys/time.h and time.h... $ECHO_C" >&6 +if test "${bash_cv_struct_timeval+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + +echo "$as_me:$LINENO: result: $bash_cv_struct_timeval" >&5 +echo "${ECHO_T}$bash_cv_struct_timeval" >&6 +if test $bash_cv_struct_timeval = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_TIMEVAL 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for struct stat.st_blocks" >&5 +echo $ECHO_N "checking for struct stat.st_blocks... $ECHO_C" >&6 +if test "${ac_cv_member_struct_stat_st_blocks+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_stat_st_blocks=yes +else + 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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_stat_st_blocks=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_struct_stat_st_blocks=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_blocks" >&5 +echo "${ECHO_T}$ac_cv_member_struct_stat_st_blocks" >&6 +if test $ac_cv_member_struct_stat_st_blocks = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_BLOCKS 1 +_ACEOF + + +fi + +echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5 +echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6 +if test "${ac_cv_struct_tm+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 *tp; tp->tm_sec; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_struct_tm=time.h +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_struct_tm=sys/time.h +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5 +echo "${ECHO_T}$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 + +echo "$as_me:$LINENO: checking for struct tm.tm_zone" >&5 +echo $ECHO_N "checking for struct tm.tm_zone... $ECHO_C" >&6 +if test "${ac_cv_member_struct_tm_tm_zone+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_tm_tm_zone=yes +else + 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. */ +#include +#include <$ac_cv_struct_tm> + + +int +main () +{ +static struct tm ac_aggr; +if (sizeof ac_aggr.tm_zone) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_tm_tm_zone=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_struct_tm_tm_zone=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_zone" >&5 +echo "${ECHO_T}$ac_cv_member_struct_tm_tm_zone" >&6 +if test $ac_cv_member_struct_tm_tm_zone = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_TM_TM_ZONE 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 + echo "$as_me:$LINENO: checking for tzname" >&5 +echo $ECHO_N "checking for tzname... $ECHO_C" >&6 +if test "${ac_cv_var_tzname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifndef tzname /* For SGI. */ +extern char *tzname[]; /* RS6000 and others reject char **tzname. */ +#endif + +int +main () +{ +atoi(*tzname); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_var_tzname=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_var_tzname=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_var_tzname" >&5 +echo "${ECHO_T}$ac_cv_var_tzname" >&6 + if test $ac_cv_var_tzname = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_TZNAME 1 +_ACEOF + + fi +fi + +echo "$as_me:$LINENO: checking for struct timezone in sys/time.h and time.h" >&5 +echo $ECHO_N "checking for struct timezone in sys/time.h and time.h... $ECHO_C" >&6 +if test "${bash_cv_struct_timezone+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 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 +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "struct timezone" >/dev/null 2>&1; then + bash_cv_struct_timezone=yes +else + bash_cv_struct_timezone=no +fi +rm -f conftest* + +fi +rm -f conftest* + + +fi + +echo "$as_me:$LINENO: result: $bash_cv_struct_timezone" >&5 +echo "${ECHO_T}$bash_cv_struct_timezone" >&6 +if test $bash_cv_struct_timezone = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_STRUCT_TIMEZONE 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for the existence of strsignal" >&5 +echo $ECHO_N "checking for the existence of strsignal... $ECHO_C" >&6 +if test "${bash_cv_have_strsignal+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +char *s = (char *)strsignal(2); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_have_strsignal=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_have_strsignal=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_have_strsignal" >&5 +echo "${ECHO_T}$bash_cv_have_strsignal" >&6 +if test $bash_cv_have_strsignal = yes; then +cat >>confdefs.h <<\_ACEOF +#define HAVE_STRSIGNAL 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking if opendir() opens non-directories" >&5 +echo $ECHO_N "checking if opendir() opens non-directories... $ECHO_C" >&6 +if test "${bash_cv_opendir_not_robust+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check opendir if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#include +#include +#include +#ifdef HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ +#if defined(HAVE_DIRENT_H) +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif /* SYSNDIR */ +# ifdef HAVE_SYS_DIR_H +# include +# endif /* SYSDIR */ +# ifdef HAVE_NDIR_H +# include +# endif +#endif /* HAVE_DIRENT_H */ +main() +{ +DIR *dir; +int fd, err; +err = mkdir("/tmp/bash-aclocal", 0700); +if (err < 0) { + perror("mkdir"); + exit(1); +} +unlink("/tmp/bash-aclocal/not_a_directory"); +fd = open("/tmp/bash-aclocal/not_a_directory", O_WRONLY|O_CREAT|O_EXCL, 0666); +write(fd, "\n", 1); +close(fd); +dir = opendir("/tmp/bash-aclocal/not_a_directory"); +unlink("/tmp/bash-aclocal/not_a_directory"); +rmdir("/tmp/bash-aclocal"); +exit (dir == 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_opendir_not_robust=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_opendir_not_robust=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_opendir_not_robust" >&5 +echo "${ECHO_T}$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 + +fi + +echo "$as_me:$LINENO: checking whether ulimit can substitute for getdtablesize" >&5 +echo $ECHO_N "checking whether ulimit can substitute for getdtablesize... $ECHO_C" >&6 +if test "${bash_cv_ulimit_maxfds+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check ulimit if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +main() +{ +long maxfds = ulimit(4, 0L); +exit (maxfds == -1L); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_ulimit_maxfds=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_ulimit_maxfds=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_ulimit_maxfds" >&5 +echo "${ECHO_T}$bash_cv_ulimit_maxfds" >&6 +if test $bash_cv_ulimit_maxfds = yes; then +cat >>confdefs.h <<\_ACEOF +#define ULIMIT_MAXFDS 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking to see if getenv can be redefined" >&5 +echo $ECHO_N "checking to see if getenv can be redefined... $ECHO_C" >&6 +if test "${bash_cv_getenv_redef+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check getenv redefinition if cross compiling -- defaulting to yes" >&5 +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 +/* end confdefs.h. */ + +#ifdef HAVE_UNISTD_H +# include +#endif +#ifndef __STDC__ +# ifndef const +# define const +# endif +#endif +char * +getenv (name) +#if defined (__linux__) || defined (__bsdi__) || defined (convex) + const char *name; +#else + char const *name; +#endif /* !__linux__ && !__bsdi__ && !convex */ +{ +return "42"; +} +main() +{ +char *s; +/* The next allows this program to run, but does not allow bash to link + when it redefines getenv. I'm not really interested in figuring out + why not. */ +#if defined (NeXT) +exit(1); +#endif +s = getenv("ABCDE"); +exit(s == 0); /* force optimizer to leave getenv in */ +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_getenv_redef=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_getenv_redef=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_getenv_redef" >&5 +echo "${ECHO_T}$bash_cv_getenv_redef" >&6 +if test $bash_cv_getenv_redef = yes; then +cat >>confdefs.h <<\_ACEOF +#define CAN_REDEFINE_GETENV 1 +_ACEOF + +fi + +if test "$ac_cv_func_getcwd" = "yes"; then +echo "$as_me:$LINENO: checking if getcwd() will dynamically allocate memory" >&5 +echo $ECHO_N "checking if getcwd() will dynamically allocate memory... $ECHO_C" >&6 +if test "${bash_cv_getcwd_malloc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check whether getcwd allocates memory when cross-compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#include +#ifdef HAVE_UNISTD_H +#include +#endif + +main() +{ + char *xpwd; + xpwd = getcwd(0, 0); + exit (xpwd == 0); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_getcwd_malloc=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_getcwd_malloc=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_getcwd_malloc" >&5 +echo "${ECHO_T}$bash_cv_getcwd_malloc" >&6 +if test $bash_cv_getcwd_malloc = no; then +cat >>confdefs.h <<\_ACEOF +#define GETCWD_BROKEN 1 +_ACEOF + +case $LIBOBJS in + "getcwd.$ac_objext" | \ + *" getcwd.$ac_objext" | \ + "getcwd.$ac_objext "* | \ + *" getcwd.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS getcwd.$ac_objext" ;; +esac + +fi + +fi + +echo "$as_me:$LINENO: checking for presence of POSIX-style sigsetjmp/siglongjmp" >&5 +echo $ECHO_N "checking for presence of POSIX-style sigsetjmp/siglongjmp... $ECHO_C" >&6 +if test "${bash_cv_func_sigsetjmp+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing" >&5 +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 +/* end confdefs.h. */ + +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#include +#include + +main() +{ +#if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS) +exit (1); +#else + +int code; +sigset_t set, oset; +sigjmp_buf xx; + +/* get the mask */ +sigemptyset(&set); +sigemptyset(&oset); +sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set); +sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset); + +/* save it */ +code = sigsetjmp(xx, 1); +if (code) + exit(0); /* could get sigmask and compare to oset here. */ + +/* change it */ +sigaddset(&set, SIGINT); +sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL); + +/* and siglongjmp */ +siglongjmp(xx, 10); +exit(1); +#endif +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_func_sigsetjmp=present +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_func_sigsetjmp=missing +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_func_sigsetjmp" >&5 +echo "${ECHO_T}$bash_cv_func_sigsetjmp" >&6 +if test $bash_cv_func_sigsetjmp = present; then +cat >>confdefs.h <<\_ACEOF +#define HAVE_POSIX_SIGSETJMP 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking whether or not strcoll and strcmp differ" >&5 +echo $ECHO_N "checking whether or not strcoll and strcmp differ... $ECHO_C" >&6 +if test "${bash_cv_func_strcoll_broken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#include +#if defined (HAVE_LOCALE_H) +#include +#endif + +main(c, v) +int c; +char *v[]; +{ + int r1, r2; + char *deflocale, *defcoll; + +#ifdef HAVE_SETLOCALE + deflocale = setlocale(LC_ALL, ""); + defcoll = setlocale(LC_COLLATE, ""); +#endif + +#ifdef HAVE_STRCOLL + /* These two values are taken from tests/glob-test. */ + r1 = strcoll("abd", "aXd"); +#else + r1 = 0; +#endif + r2 = strcmp("abd", "aXd"); + + /* These two should both be greater than 0. It is permissible for + a system to return different values, as long as the sign is the + same. */ + + /* Exit with 1 (failure) if these two values are both > 0, since + this tests whether strcoll(3) is broken with respect to strcmp(3) + in the default locale. */ + exit (r1 > 0 && r2 > 0); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_func_strcoll_broken=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_func_strcoll_broken=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_func_strcoll_broken" >&5 +echo "${ECHO_T}$bash_cv_func_strcoll_broken" >&6 +if test $bash_cv_func_strcoll_broken = yes; then +cat >>confdefs.h <<\_ACEOF +#define STRCOLL_BROKEN 1 +_ACEOF + +fi + + + +if test "$ac_cv_func_putenv" = "yes"; then + + + +echo "$as_me:$LINENO: checking for standard-conformant putenv declaration" >&5 +echo $ECHO_N "checking for standard-conformant putenv declaration... $ECHO_C" >&6 +if test "${bash_cv_std_putenv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#include +#endif +#ifndef __STDC__ +# ifndef const +# define const +# endif +#endif +#ifdef PROTOTYPES +extern int putenv (char *); +#else +extern int putenv (); +#endif + +int +main () +{ +return (putenv == 0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_std_putenv=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_std_putenv=no + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_std_putenv" >&5 +echo "${ECHO_T}$bash_cv_std_putenv" >&6 +if test $bash_cv_std_putenv = yes; then +cat >>confdefs.h <<\_ACEOF +#define HAVE_STD_PUTENV 1 +_ACEOF + +fi + +else +cat >>confdefs.h <<\_ACEOF +#define HAVE_STD_PUTENV 1 +_ACEOF + +fi +if test "$ac_cv_func_unsetenv" = "yes"; then + + + +echo "$as_me:$LINENO: checking for standard-conformant unsetenv declaration" >&5 +echo $ECHO_N "checking for standard-conformant unsetenv declaration... $ECHO_C" >&6 +if test "${bash_cv_std_unsetenv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#include +#endif +#ifndef __STDC__ +# ifndef const +# define const +# endif +#endif +#ifdef PROTOTYPES +extern int unsetenv (const char *); +#else +extern int unsetenv (); +#endif + +int +main () +{ +return (unsetenv == 0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_std_unsetenv=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_std_unsetenv=no + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bash_cv_std_unsetenv" >&5 +echo "${ECHO_T}$bash_cv_std_unsetenv" >&6 +if test $bash_cv_std_unsetenv = yes; then +cat >>confdefs.h <<\_ACEOF +#define HAVE_STD_UNSETENV 1 +_ACEOF + +fi + +else +cat >>confdefs.h <<\_ACEOF +#define HAVE_STD_UNSETENV 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for printf floating point output in hex notation" >&5 +echo $ECHO_N "checking for printf floating point output in hex notation... $ECHO_C" >&6 +if test "${bash_cv_printf_a_format+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check printf if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#include +#include + +int +main() +{ + double y = 0.0; + char abuf[1024]; + + sprintf(abuf, "%A", y); + exit(strchr(abuf, 'P') == (char *)0); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_printf_a_format=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_printf_a_format=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_printf_a_format" >&5 +echo "${ECHO_T}$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 + +fi + + + + +echo "$as_me:$LINENO: checking if signal handlers must be reinstalled when invoked" >&5 +echo $ECHO_N "checking if signal handlers must be reinstalled when invoked... $ECHO_C" >&6 +if test "${bash_cv_must_reinstall_sighandlers+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#include +#ifdef HAVE_UNISTD_H +#include +#endif + +typedef RETSIGTYPE sigfunc(); + +int nsigint; + +#ifdef HAVE_POSIX_SIGNALS +sigfunc * +set_signal_handler(sig, handler) + int sig; + sigfunc *handler; +{ + struct sigaction act, oact; + act.sa_handler = handler; + act.sa_flags = 0; + sigemptyset (&act.sa_mask); + sigemptyset (&oact.sa_mask); + sigaction (sig, &act, &oact); + return (oact.sa_handler); +} +#else +#define set_signal_handler(s, h) signal(s, h) +#endif + +RETSIGTYPE +sigint(s) +int s; +{ + nsigint++; +} + +main() +{ + nsigint = 0; + set_signal_handler(SIGINT, sigint); + kill((int)getpid(), SIGINT); + kill((int)getpid(), SIGINT); + exit(nsigint != 2); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_must_reinstall_sighandlers=no +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_must_reinstall_sighandlers=yes +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_must_reinstall_sighandlers" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking for presence of necessary job control definitions" >&5 +echo $ECHO_N "checking for presence of necessary job control definitions... $ECHO_C" >&6 +if test "${bash_cv_job_control_missing+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check job control if cross-compiling -- defaulting to missing" >&5 +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 +/* end confdefs.h. */ + +#include +#ifdef HAVE_SYS_WAIT_H +#include +#endif +#ifdef HAVE_UNISTD_H +#include +#endif +#include + +/* Add more tests in here as appropriate. */ +main() +{ +/* signal type */ +#if !defined (HAVE_POSIX_SIGNALS) && !defined (HAVE_BSD_SIGNALS) +exit(1); +#endif + +/* signals and tty control. */ +#if !defined (SIGTSTP) || !defined (SIGSTOP) || !defined (SIGCONT) +exit (1); +#endif + +/* process control */ +#if !defined (WNOHANG) || !defined (WUNTRACED) +exit(1); +#endif + +/* Posix systems have tcgetpgrp and waitpid. */ +#if defined (_POSIX_VERSION) && !defined (HAVE_TCGETPGRP) +exit(1); +#endif + +#if defined (_POSIX_VERSION) && !defined (HAVE_WAITPID) +exit(1); +#endif + +/* Other systems have TIOCSPGRP/TIOCGPRGP and wait3. */ +#if !defined (_POSIX_VERSION) && !defined (HAVE_WAIT3) +exit(1); +#endif + +exit(0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_job_control_missing=present +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_job_control_missing=missing +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_job_control_missing" >&5 +echo "${ECHO_T}$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 + +fi + +echo "$as_me:$LINENO: checking for presence of named pipes" >&5 +echo $ECHO_N "checking for presence of named pipes... $ECHO_C" >&6 +if test "${bash_cv_sys_named_pipes+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check for named pipes if cross-compiling -- defaulting to missing" >&5 +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 +/* end confdefs.h. */ + +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif + +/* Add more tests in here as appropriate. */ +main() +{ +int fd, err; + +#if defined (HAVE_MKFIFO) +exit (0); +#endif + +#if !defined (S_IFIFO) && (defined (_POSIX_VERSION) && !defined (S_ISFIFO)) +exit (1); +#endif + +#if defined (NeXT) +exit (1); +#endif +err = mkdir("/tmp/bash-aclocal", 0700); +if (err < 0) { + perror ("mkdir"); + exit(1); +} +fd = mknod ("/tmp/bash-aclocal/sh-np-autoconf", 0666 | S_IFIFO, 0); +if (fd == -1) { + rmdir ("/tmp/bash-aclocal"); + exit (1); +} +close(fd); +unlink ("/tmp/bash-aclocal/sh-np-autoconf"); +rmdir ("/tmp/bash-aclocal"); +exit(0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_sys_named_pipes=present +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_sys_named_pipes=missing +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_sys_named_pipes" >&5 +echo "${ECHO_T}$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 + +fi + + +echo "$as_me:$LINENO: checking whether termios.h defines TIOCGWINSZ" >&5 +echo $ECHO_N "checking whether termios.h defines TIOCGWINSZ... $ECHO_C" >&6 +if test "${ac_cv_sys_tiocgwinsz_in_termios_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef TIOCGWINSZ + yes +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "yes" >/dev/null 2>&1; then + ac_cv_sys_tiocgwinsz_in_termios_h=yes +else + ac_cv_sys_tiocgwinsz_in_termios_h=no +fi +rm -f conftest* + +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_tiocgwinsz_in_termios_h" >&5 +echo "${ECHO_T}$ac_cv_sys_tiocgwinsz_in_termios_h" >&6 + +if test $ac_cv_sys_tiocgwinsz_in_termios_h != yes; then + echo "$as_me:$LINENO: checking whether sys/ioctl.h defines TIOCGWINSZ" >&5 +echo $ECHO_N "checking whether sys/ioctl.h defines TIOCGWINSZ... $ECHO_C" >&6 +if test "${ac_cv_sys_tiocgwinsz_in_sys_ioctl_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef TIOCGWINSZ + yes +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $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 +fi +rm -f conftest* + +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&5 +echo "${ECHO_T}$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 + + fi +fi + +echo "$as_me:$LINENO: checking for TIOCSTAT in sys/ioctl.h" >&5 +echo $ECHO_N "checking for TIOCSTAT in sys/ioctl.h... $ECHO_C" >&6 +if test "${bash_cv_tiocstat_in_ioctl+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +int x = TIOCSTAT; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_tiocstat_in_ioctl=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_tiocstat_in_ioctl=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_tiocstat_in_ioctl" >&5 +echo "${ECHO_T}$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 + +fi + +echo "$as_me:$LINENO: checking for FIONREAD in sys/ioctl.h" >&5 +echo $ECHO_N "checking for FIONREAD in sys/ioctl.h... $ECHO_C" >&6 +if test "${bash_cv_fionread_in_ioctl+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +int x = FIONREAD; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_fionread_in_ioctl=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_fionread_in_ioctl=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_fionread_in_ioctl" >&5 +echo "${ECHO_T}$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 + +fi + + + +echo "$as_me:$LINENO: checking whether WCONTINUED flag to waitpid is unavailable or available but broken" >&5 +echo $ECHO_N "checking whether WCONTINUED flag to waitpid is unavailable or available but broken... $ECHO_C" >&6 +if test "${bash_cv_wcontinued_broken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check WCONTINUED if cross compiling -- defaulting to no" >&5 +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 +/* end confdefs.h. */ + +#include +#include +#include +#include + +#ifndef errno +extern int errno; +#endif +main() +{ + int x; + + x = waitpid(-1, (int *)0, WNOHANG|WCONTINUED); + if (x == -1 && errno == EINVAL) + exit (1); + else + exit (0); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_wcontinued_broken=no +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_wcontinued_broken=yes +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_wcontinued_broken" >&5 +echo "${ECHO_T}$bash_cv_wcontinued_broken" >&6 +if test $bash_cv_wcontinued_broken = yes; then +cat >>confdefs.h <<\_ACEOF +#define WCONTINUED_BROKEN 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for speed_t in sys/types.h" >&5 +echo $ECHO_N "checking for speed_t in sys/types.h... $ECHO_C" >&6 +if test "${bash_cv_speed_t_in_sys_types+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ +speed_t x; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_speed_t_in_sys_types=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_speed_t_in_sys_types=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_speed_t_in_sys_types" >&5 +echo "${ECHO_T}$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 + +fi + +echo "$as_me:$LINENO: checking whether getpw functions are declared in pwd.h" >&5 +echo $ECHO_N "checking whether getpw functions are declared in pwd.h... $ECHO_C" >&6 +if test "${bash_cv_getpw_declared+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#ifdef HAVE_UNISTD_H +# include +#endif +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "getpwuid" >/dev/null 2>&1; then + bash_cv_getpw_declared=yes +else + bash_cv_getpw_declared=no +fi +rm -f conftest* + +fi + +echo "$as_me:$LINENO: result: $bash_cv_getpw_declared" >&5 +echo "${ECHO_T}$bash_cv_getpw_declared" >&6 +if test $bash_cv_getpw_declared = yes; then +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETPW_DECLS 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for unusable real-time signals due to large values" >&5 +echo $ECHO_N "checking for unusable real-time signals due to large values... $ECHO_C" >&6 +if test "${bash_cv_unusable_rtsigs+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: cannot check real-time signals if cross compiling -- defaulting to yes" >&5 +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 +/* end confdefs.h. */ + +#include +#include + +#ifndef NSIG +# define NSIG 64 +#endif + +main () +{ + int n_sigs = 2 * NSIG; +#ifdef SIGRTMIN + int rtmin = SIGRTMIN; +#else + int rtmin = 0; +#endif + + exit(rtmin < n_sigs); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_unusable_rtsigs=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +bash_cv_unusable_rtsigs=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi + +echo "$as_me:$LINENO: result: $bash_cv_unusable_rtsigs" >&5 +echo "${ECHO_T}$bash_cv_unusable_rtsigs" >&6 +if test $bash_cv_unusable_rtsigs = yes; then +cat >>confdefs.h <<\_ACEOF +#define UNUSABLE_RT_SIGNALS 1 +_ACEOF + +fi + + + + + +if test "$bash_cv_sys_siglist" = no && test "$bash_cv_under_sys_siglist" = no && test "$bash_cv_have_strsignal" = no; then + SIGLIST_O=siglist.o +else + SIGLIST_O= +fi + + + +case "$host_os" in +hpux*) echo "$as_me:$LINENO: checking whether $host_os needs _KERNEL for RLIMIT defines" >&5 +echo $ECHO_N "checking whether $host_os needs _KERNEL for RLIMIT defines... $ECHO_C" >&6 +if test "${bash_cv_kernel_rlimit+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 () +{ + + int f; + f = RLIMIT_DATA; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_kernel_rlimit=no +else + 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. */ + +#include +#define _KERNEL +#include +#undef _KERNEL + +int +main () +{ + + int f; + f = RLIMIT_DATA; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + bash_cv_kernel_rlimit=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bash_cv_kernel_rlimit=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +echo "$as_me:$LINENO: result: $bash_cv_kernel_rlimit" >&5 +echo "${ECHO_T}$bash_cv_kernel_rlimit" >&6 +if test $bash_cv_kernel_rlimit = yes; then +cat >>confdefs.h <<\_ACEOF +#define RLIMIT_NEEDS_KERNEL 1 +_ACEOF + +fi + ;; +esac + +if test "$opt_readline" = yes; then +case "$host_os" in +aix*) prefer_curses=yes ;; +esac + +if test "X$bash_cv_termcap_lib" = "X"; then +_bash_needmsg=yes +else +echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 +_bash_needmsg= +fi +if test "${bash_cv_termcap_lib+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for tgetent" >&5 +echo $ECHO_N "checking for tgetent... $ECHO_C" >&6 +if test "${ac_cv_func_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = tgetent; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != tgetent; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_tgetent" >&5 +echo "${ECHO_T}$ac_cv_func_tgetent" >&6 +if test $ac_cv_func_tgetent = yes; then + bash_cv_termcap_lib=libc +else + echo "$as_me:$LINENO: checking for tgetent in -ltermcap" >&5 +echo $ECHO_N "checking for tgetent in -ltermcap... $ECHO_C" >&6 +if test "${ac_cv_lib_termcap_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_termcap_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_termcap_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_termcap_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_termcap_tgetent" >&6 +if test $ac_cv_lib_termcap_tgetent = yes; then + bash_cv_termcap_lib=libtermcap +else + echo "$as_me:$LINENO: checking for tgetent in -ltinfo" >&5 +echo $ECHO_N "checking for tgetent in -ltinfo... $ECHO_C" >&6 +if test "${ac_cv_lib_tinfo_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_tinfo_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_tinfo_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_tinfo_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_tinfo_tgetent" >&6 +if test $ac_cv_lib_tinfo_tgetent = yes; then + bash_cv_termcap_lib=libtinfo +else + echo "$as_me:$LINENO: checking for tgetent in -lcurses" >&5 +echo $ECHO_N "checking for tgetent in -lcurses... $ECHO_C" >&6 +if test "${ac_cv_lib_curses_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_curses_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_curses_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_curses_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_curses_tgetent" >&6 +if test $ac_cv_lib_curses_tgetent = yes; then + bash_cv_termcap_lib=libcurses +else + echo "$as_me:$LINENO: checking for tgetent in -lncurses" >&5 +echo $ECHO_N "checking for tgetent in -lncurses... $ECHO_C" >&6 +if test "${ac_cv_lib_ncurses_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgetent (); +int +main () +{ +tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_ncurses_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_ncurses_tgetent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_ncurses_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_ncurses_tgetent" >&6 +if test $ac_cv_lib_ncurses_tgetent = yes; then + bash_cv_termcap_lib=libncurses +else + bash_cv_termcap_lib=gnutermcap +fi + +fi + +fi + +fi + +fi + +fi + +if test "X$_bash_needmsg" = "Xyes"; then +echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: using $bash_cv_termcap_lib" >&5 +echo "${ECHO_T}using $bash_cv_termcap_lib" >&6 +if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then +LDFLAGS="$LDFLAGS -L./lib/termcap" +TERMCAP_LIB="./lib/termcap/libtermcap.a" +TERMCAP_DEP="./lib/termcap/libtermcap.a" +elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then +TERMCAP_LIB=-ltermcap +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libtinfo; then +TERMCAP_LIB=-ltinfo +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libncurses; then +TERMCAP_LIB=-lncurses +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libc; then +TERMCAP_LIB= +TERMCAP_DEP= +else +TERMCAP_LIB=-lcurses +TERMCAP_DEP= +fi + +fi + + + +echo "$as_me:$LINENO: checking whether /dev/fd is available" >&5 +echo $ECHO_N "checking whether /dev/fd is available... $ECHO_C" >&6 +if test "${bash_cv_dev_fd+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -d /dev/fd && test -r /dev/fd/0 < /dev/null; then +# check for systems like FreeBSD 5 that only provide /dev/fd/[012] + exec 3<&0 + if test -r /dev/fd/3; then + bash_cv_dev_fd=standard + else + bash_cv_dev_fd=absent + fi + exec 3<&- + elif test -d /proc/self/fd && test -r /proc/self/fd/0 < /dev/null; then + bash_cv_dev_fd=whacky + else + bash_cv_dev_fd=absent + fi + +fi + +echo "$as_me:$LINENO: result: $bash_cv_dev_fd" >&5 +echo "${ECHO_T}$bash_cv_dev_fd" >&6 +if test $bash_cv_dev_fd = "standard"; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_DEV_FD 1 +_ACEOF + + cat >>confdefs.h <<\_ACEOF +#define DEV_FD_PREFIX "/dev/fd/" +_ACEOF + +elif test $bash_cv_dev_fd = "whacky"; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_DEV_FD 1 +_ACEOF + + cat >>confdefs.h <<\_ACEOF +#define DEV_FD_PREFIX "/proc/self/fd/" +_ACEOF + +fi + +echo "$as_me:$LINENO: checking whether /dev/stdin stdout stderr are available" >&5 +echo $ECHO_N "checking whether /dev/stdin stdout stderr are available... $ECHO_C" >&6 +if test "${bash_cv_dev_stdin+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -d /dev/fd && test -r /dev/stdin < /dev/null; then + bash_cv_dev_stdin=present + elif test -d /proc/self/fd && test -r /dev/stdin < /dev/null; then + bash_cv_dev_stdin=present + else + bash_cv_dev_stdin=absent + fi + +fi + +echo "$as_me:$LINENO: result: $bash_cv_dev_stdin" >&5 +echo "${ECHO_T}$bash_cv_dev_stdin" >&6 +if test $bash_cv_dev_stdin = "present"; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_DEV_STDIN 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for default mail directory" >&5 +echo $ECHO_N "checking for default mail directory... $ECHO_C" >&6 +if test "${bash_cv_mail_dir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -d /var/mail; then + bash_cv_mail_dir=/var/mail + elif test -d /var/spool/mail; then + bash_cv_mail_dir=/var/spool/mail + elif test -d /usr/mail; then + bash_cv_mail_dir=/usr/mail + elif test -d /usr/spool/mail; then + bash_cv_mail_dir=/usr/spool/mail + else + bash_cv_mail_dir=unknown + fi + +fi + +echo "$as_me:$LINENO: result: $bash_cv_mail_dir" >&5 +echo "${ECHO_T}$bash_cv_mail_dir" >&6 +cat >>confdefs.h <<_ACEOF +#define DEFAULT_MAIL_DIRECTORY "$bash_cv_mail_dir" +_ACEOF + + + +if test "$bash_cv_job_control_missing" = missing; then + opt_job_control=no +fi + +if test "$opt_job_control" = yes; then +cat >>confdefs.h <<\_ACEOF +#define JOB_CONTROL 1 +_ACEOF + +JOBS_O=jobs.o +else +JOBS_O=nojobs.o +fi + + + + +LOCAL_DEFS=-DSHELL + +echo "host_os = ${host_os}" >&6 + +case "${host_os}" in +sysv4.2*) cat >>confdefs.h <<\_ACEOF +#define SVR4_2 1 +_ACEOF + + cat >>confdefs.h <<\_ACEOF +#define SVR4 1 +_ACEOF + ;; +sysv4*) cat >>confdefs.h <<\_ACEOF +#define SVR4 1 +_ACEOF + ;; +sysv5*) cat >>confdefs.h <<\_ACEOF +#define SVR5 1 +_ACEOF + ;; +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 ;; +lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; +linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading +echo "uname -r = `uname -r`" >&6 + case "`uname -r`" in + 2.[456789]*|3*) cat >>confdefs.h <<\_ACEOF +#define PGRP_PIPE 1 +_ACEOF + +echo "defining PGRP_PIPE to 1" >&5 +echo "defining PGRP_PIPE to 1" >&6 + ;; + esac ;; +*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" ;; +esac + +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 + +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 +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 + echo "$as_me:$LINENO: checking shared object configuration for loadable builtins" >&5 +echo $ECHO_N "checking shared object configuration for loadable builtins... $ECHO_C" >&6 + eval `${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c "${host_cpu}" -o "${host_os}" -v "${host_vendor}"` + + + + + + + + echo "$as_me:$LINENO: result: $SHOBJ_STATUS" >&5 +echo "${ECHO_T}$SHOBJ_STATUS" >&6 +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 + + + + + + + + + + + + + + + + + + + + + + + + +#AC_SUBST(ALLOCA_SOURCE) +#AC_SUBST(ALLOCA_OBJECT) + + ac_config_files="$ac_config_files Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile lib/intl/Makefile lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in examples/loadables/Makefile examples/loadables/perl/Makefile pathnames.h" + ac_config_commands="$ac_config_commands default" +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `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" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\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" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ 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/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# 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 + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + 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 + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + 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=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # 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 before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, 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 + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +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 sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# 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'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by bash $as_me 3.1-devel, which was +generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +bash config.status 3.1-devel +configured by $0, generated by GNU Autoconf 2.59, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2003 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +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=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS section. +# + +# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it + # from automake. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + + +_ACEOF + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "builtins/Makefile" ) CONFIG_FILES="$CONFIG_FILES builtins/Makefile" ;; + "lib/readline/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/readline/Makefile" ;; + "lib/glob/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/glob/Makefile" ;; + "lib/intl/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/intl/Makefile" ;; + "lib/malloc/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/malloc/Makefile" ;; + "lib/sh/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/sh/Makefile" ;; + "lib/termcap/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/termcap/Makefile" ;; + "lib/tilde/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/tilde/Makefile" ;; + "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "support/Makefile" ) CONFIG_FILES="$CONFIG_FILES support/Makefile" ;; + "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "examples/loadables/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/loadables/Makefile" ;; + "examples/loadables/perl/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/loadables/perl/Makefile" ;; + "pathnames.h" ) CONFIG_FILES="$CONFIG_FILES pathnames.h" ;; + "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@EMACS@,$EMACS,;t t +s,@lispdir@,$lispdir,;t t +s,@DEBUGGER_START_FILE@,$DEBUGGER_START_FILE,;t t +s,@TESTSCRIPT@,$TESTSCRIPT,;t t +s,@PURIFY@,$PURIFY,;t t +s,@MALLOC_TARGET@,$MALLOC_TARGET,;t t +s,@MALLOC_SRC@,$MALLOC_SRC,;t t +s,@MALLOC_LIB@,$MALLOC_LIB,;t t +s,@MALLOC_LIBRARY@,$MALLOC_LIBRARY,;t t +s,@MALLOC_LDFLAGS@,$MALLOC_LDFLAGS,;t t +s,@MALLOC_DEP@,$MALLOC_DEP,;t t +s,@htmldir@,$htmldir,;t t +s,@HELPDIR@,$HELPDIR,;t t +s,@HELPDIRDEFINE@,$HELPDIRDEFINE,;t t +s,@HELPINSTALL@,$HELPINSTALL,;t t +s,@HELPSTRINGS@,$HELPSTRINGS,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@CPP@,$CPP,;t t +s,@EGREP@,$EGREP,;t t +s,@SIGNAMES_H@,$SIGNAMES_H,;t t +s,@CC_FOR_BUILD@,$CC_FOR_BUILD,;t t +s,@STATIC_LD@,$STATIC_LD,;t t +s,@CFLAGS_FOR_BUILD@,$CFLAGS_FOR_BUILD,;t t +s,@CPPFLAGS_FOR_BUILD@,$CPPFLAGS_FOR_BUILD,;t t +s,@LDFLAGS_FOR_BUILD@,$LDFLAGS_FOR_BUILD,;t t +s,@RL_VERSION@,$RL_VERSION,;t t +s,@RL_MAJOR@,$RL_MAJOR,;t t +s,@RL_MINOR@,$RL_MINOR,;t t +s,@READLINE_LIB@,$READLINE_LIB,;t t +s,@READLINE_DEP@,$READLINE_DEP,;t t +s,@RL_LIBDIR@,$RL_LIBDIR,;t t +s,@RL_INCLUDEDIR@,$RL_INCLUDEDIR,;t t +s,@RL_INCLUDE@,$RL_INCLUDE,;t t +s,@HISTORY_LIB@,$HISTORY_LIB,;t t +s,@HISTORY_DEP@,$HISTORY_DEP,;t t +s,@HIST_LIBDIR@,$HIST_LIBDIR,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@AR@,$AR,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@YACC@,$YACC,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@MAKE_SHELL@,$MAKE_SHELL,;t t +s,@SIZE@,$SIZE,;t t +s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t +s,@USE_NLS@,$USE_NLS,;t t +s,@MSGFMT@,$MSGFMT,;t t +s,@GMSGFMT@,$GMSGFMT,;t t +s,@XGETTEXT@,$XGETTEXT,;t t +s,@MSGMERGE@,$MSGMERGE,;t t +s,@ALLOCA@,$ALLOCA,;t t +s,@GLIBC21@,$GLIBC21,;t t +s,@LIBICONV@,$LIBICONV,;t t +s,@LTLIBICONV@,$LTLIBICONV,;t t +s,@INTLBISON@,$INTLBISON,;t t +s,@BUILD_INCLUDED_LIBINTL@,$BUILD_INCLUDED_LIBINTL,;t t +s,@USE_INCLUDED_LIBINTL@,$USE_INCLUDED_LIBINTL,;t t +s,@CATOBJEXT@,$CATOBJEXT,;t t +s,@DATADIRNAME@,$DATADIRNAME,;t t +s,@INSTOBJEXT@,$INSTOBJEXT,;t t +s,@GENCAT@,$GENCAT,;t t +s,@INTLOBJS@,$INTLOBJS,;t t +s,@INTL_LIBTOOL_SUFFIX_PREFIX@,$INTL_LIBTOOL_SUFFIX_PREFIX,;t t +s,@INTLLIBS@,$INTLLIBS,;t t +s,@LIBINTL@,$LIBINTL,;t t +s,@LTLIBINTL@,$LTLIBINTL,;t t +s,@POSUB@,$POSUB,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@INTL_DEP@,$INTL_DEP,;t t +s,@INTL_INC@,$INTL_INC,;t t +s,@LIBINTL_H@,$LIBINTL_H,;t t +s,@SIGLIST_O@,$SIGLIST_O,;t t +s,@TERMCAP_LIB@,$TERMCAP_LIB,;t t +s,@TERMCAP_DEP@,$TERMCAP_DEP,;t t +s,@JOBS_O@,$JOBS_O,;t t +s,@SHOBJ_CC@,$SHOBJ_CC,;t t +s,@SHOBJ_CFLAGS@,$SHOBJ_CFLAGS,;t t +s,@SHOBJ_LD@,$SHOBJ_LD,;t t +s,@SHOBJ_LDFLAGS@,$SHOBJ_LDFLAGS,;t t +s,@SHOBJ_XLDFLAGS@,$SHOBJ_XLDFLAGS,;t t +s,@SHOBJ_LIBS@,$SHOBJ_LIBS,;t t +s,@SHOBJ_STATUS@,$SHOBJ_STATUS,;t t +s,@PROFILE_FLAGS@,$PROFILE_FLAGS,;t t +s,@incdir@,$incdir,;t t +s,@BUILD_DIR@,$BUILD_DIR,;t t +s,@ARFLAGS@,$ARFLAGS,;t t +s,@BASHVERS@,$BASHVERS,;t t +s,@RELSTATUS@,$RELSTATUS,;t t +s,@DEBUG@,$DEBUG,;t t +s,@MALLOC_DEBUG@,$MALLOC_DEBUG,;t t +s,@LOCAL_LIBS@,$LOCAL_LIBS,;t t +s,@LOCAL_CFLAGS@,$LOCAL_CFLAGS,;t t +s,@LOCAL_LDFLAGS@,$LOCAL_LDFLAGS,;t t +s,@LOCAL_DEFS@,$LOCAL_DEFS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + # Do quote $f, to prevent DOS paths from being IFS'd. + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # grep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\_ACEOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + default-1 ) + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + GMOFILES= + UPDATEPOFILES= + DUMMYPOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done ;; + default ) +# Makefile uses this timestamp file to record whether config.h is up to date. +echo timestamp > stamp-h + ;; + esac +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + 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; } +fi diff --git a/bash-20060316/configure.in b/bash-20060316/configure.in new file mode 100644 index 000000000..4bfcc8cbd --- /dev/null +++ b/bash-20060316/configure.in @@ -0,0 +1,1109 @@ +dnl +dnl Configure script for bash-3.2 +dnl +dnl report bugs to chet@po.cwru.edu +dnl +dnl Process this file with autoconf to produce a configure script. + +# Copyright (C) 1987-2006 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 2, 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +AC_REVISION([for Bash 3.2, version 3.187])dnl + +define(bashvers, 3.2) +define(relstatus, devel) + +AC_INIT([bash], bashvers-relstatus, [bug-bash@gnu.org]) + +dnl make sure we are using a recent autoconf version +AC_PREREQ(2.50) + +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*) 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 + +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 +*-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 + +dnl +dnl macros for the bash debugger +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=${ac_default_prefix}/lib/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_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 + +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 +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(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 extgended regular expression matching in conditional commands]), opt_cond_regexp=$enableval) +AC_ARG_ENABLE(debugger, AC_HELP_STRING([--enable-debugger], [enable support for bash debugger]), opt_debugger=$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(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 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_cond_command = yes ; then +AC_DEFINE(COND_COMMAND) +fi +if test $opt_cond_regexp = yes ; then +AC_DEFINE(COND_REGEXP) +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_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= +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' +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(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. + +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) + +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 +AC_SUBST(CC_FOR_BUILD) + +dnl END changes for cross-building + +dnl We want these before the checks, so the checks can modify their values. +test -z "$CFLAGS" && CFLAGS=-g auto_cflags=1 + +dnl If we're using gcc and the user hasn't specified CFLAGS, add -O2 to CFLAGS. +test -n "$GCC" && test -n "$auto_cflags" && CFLAGS="$CFLAGS -O2" + +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 + +if test "$opt_static_link" = yes; then + # 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 + +if test "X$cross_compiling" = "Xno"; then + CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-"$CPPFLAGS"} + LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'} +else + CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-""} + LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-""} +fi + +test -z "$CFLAGS_FOR_BUILD" && CFLAGS_FOR_BUILD="-g" + +AC_SUBST(CFLAGS) +AC_SUBST(CPPFLAGS) +AC_SUBST(LDFLAGS) +AC_SUBST(STATIC_LD) + +AC_SUBST(CFLAGS_FOR_BUILD) +AC_SUBST(CPPFLAGS_FOR_BUILD) +AC_SUBST(LDFLAGS_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 + darwin8*) 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 + darwin8*) 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_PROG(AR, 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 "$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) + +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 + +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 \ + stddef.h stdint.h netdb.h pwd.h grp.h strings.h regex.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)) +AC_CHECK_FUNC(isinf, AC_DEFINE(HAVE_ISINF_IN_LIBC)) + +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 \ + tcgetpgrp uname ulimit waitpid) +AC_REPLACE_FUNCS(rename) + +dnl checks for c library functions +AC_CHECK_FUNCS(bcopy bzero confstr fnmatch \ + getaddrinfo gethostbyname getservbyname getservent inet_aton \ + memmove pathconf putenv raise regcomp regexec \ + setenv setlinebuf setlocale setvbuf siginterrupt strchr \ + sysconf tcgetattr times ttyname tzset unsetenv) + +AC_CHECK_FUNCS(vsnprintf snprintf vasprintf asprintf) +AC_CHECK_FUNCS(isascii isblank isgraph isprint isspace isxdigit) +AC_CHECK_FUNCS(getpwent getpwnam getpwuid) +AC_REPLACE_FUNCS(getcwd memset strcasecmp strerror strftime strnlen strpbrk strstr) +AC_REPLACE_FUNCS(strtod strtol strtoul strtoll strtoull strtoimax strtoumax) + +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 strdup]) + +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 SYS_SIGLIST_DECLARED +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 + +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(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 ], int, HAVE_SOCKLEN_T) +fi +BASH_TYPE_RLIMIT + +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 + +dnl presence and behavior of C library functions +BASH_FUNC_STRSIGNAL +BASH_FUNC_OPENDIR_CHECK +BASH_FUNC_ULIMIT_MAXFDS +BASH_FUNC_GETENV +if test "$ac_cv_func_getcwd" = "yes"; then +BASH_FUNC_GETCWD +fi +BASH_FUNC_POSIX_SETJMP +BASH_FUNC_STRCOLL + +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 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 ;; +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" ;; +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 + +AC_SUBST(PROFILE_FLAGS) + +AC_SUBST(incdir) +AC_SUBST(BUILD_DIR) + +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 \ + pathnames.h], +[ +# Makefile uses this timestamp file to record whether config.h is up to date. +echo timestamp > stamp-h +]) diff --git a/bash-20060316/configure.mk b/bash-20060316/configure.mk new file mode 100644 index 000000000..4a60b59ed --- /dev/null +++ b/bash-20060316/configure.mk @@ -0,0 +1,3 @@ +# Make sure the first target in the makefile is the right one +configure: configure.in aclocal.m4 config.h.in + autoconf diff --git a/bash-20060316/conftypes.h b/bash-20060316/conftypes.h new file mode 100644 index 000000000..280542dcd --- /dev/null +++ b/bash-20060316/conftypes.h @@ -0,0 +1,58 @@ +/* conftypes.h -- defines for build and host system. */ + +/* Copyright (C) 2001 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + Bash is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with Bash; see the file COPYING. If not, write to the Free + Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#if !defined (_CONFTYPES_H_) +#define _CONFTYPES_H_ + +/* Placeholder for future modifications if cross-compiling or building a + `fat' binary, e.g. on Apple Rhapsody. These values are used in multiple + files, so they appear here. */ +#if !defined (RHAPSODY) && !defined (MACOSX) +# define HOSTTYPE CONF_HOSTTYPE +# define OSTYPE CONF_OSTYPE +# define MACHTYPE CONF_MACHTYPE +#else /* RHAPSODY */ +# if defined(__powerpc__) || defined(__ppc__) +# define HOSTTYPE "powerpc" +# elif defined(__i386__) +# define HOSTTYPE "i386" +# else +# define HOSTTYPE CONF_HOSTTYPE +# endif + +# define OSTYPE CONF_OSTYPE +# define VENDOR CONF_VENDOR + +# define MACHTYPE HOSTTYPE "-" VENDOR "-" OSTYPE +#endif /* RHAPSODY */ + +#ifndef HOSTTYPE +# define HOSTTYPE "unknown" +#endif + +#ifndef OSTYPE +# define OSTYPE "unknown" +#endif + +#ifndef MACHTYPE +# define MACHTYPE "unknown" +#endif + +#endif /* _CONFTYPES_H_ */ diff --git a/bash-20060316/copy_cmd.c b/bash-20060316/copy_cmd.c new file mode 100644 index 000000000..d36436c9c --- /dev/null +++ b/bash-20060316/copy_cmd.c @@ -0,0 +1,422 @@ +/* copy_command.c -- copy a COMMAND structure. This is needed + primarily for making function definitions, but I'm not sure + that anyone else will need it. */ + +/* Copyright (C) 1987,1991 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + Bash is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with Bash; see the file COPYING. If not, write to the Free + Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#include "config.h" + +#include "bashtypes.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include + +#include "shell.h" + +static PATTERN_LIST *copy_case_clause __P((PATTERN_LIST *)); +static PATTERN_LIST *copy_case_clauses __P((PATTERN_LIST *)); +static FOR_COM *copy_for_command __P((FOR_COM *)); +#if defined (ARITH_FOR_COMMAND) +static ARITH_FOR_COM *copy_arith_for_command __P((ARITH_FOR_COM *)); +#endif +static GROUP_COM *copy_group_command __P((GROUP_COM *)); +static SUBSHELL_COM *copy_subshell_command __P((SUBSHELL_COM *)); +static CASE_COM *copy_case_command __P((CASE_COM *)); +static WHILE_COM *copy_while_command __P((WHILE_COM *)); +static IF_COM *copy_if_command __P((IF_COM *)); +#if defined (DPAREN_ARITHMETIC) +static ARITH_COM *copy_arith_command __P((ARITH_COM *)); +#endif +#if defined (COND_COMMAND) +static COND_COM *copy_cond_command __P((COND_COM *)); +#endif +static SIMPLE_COM *copy_simple_command __P((SIMPLE_COM *)); + +WORD_DESC * +copy_word (w) + WORD_DESC *w; +{ + WORD_DESC *new_word; + + new_word = make_bare_word (w->word); + new_word->flags = w->flags; + return (new_word); +} + +/* Copy the chain of words in LIST. Return a pointer to + the new chain. */ +WORD_LIST * +copy_word_list (list) + WORD_LIST *list; +{ + WORD_LIST *new_list; + + for (new_list = (WORD_LIST *)NULL; list; list = list->next) + new_list = make_word_list (copy_word (list->word), new_list); + + return (REVERSE_LIST (new_list, WORD_LIST *)); +} + +static PATTERN_LIST * +copy_case_clause (clause) + PATTERN_LIST *clause; +{ + PATTERN_LIST *new_clause; + + new_clause = (PATTERN_LIST *)xmalloc (sizeof (PATTERN_LIST)); + new_clause->patterns = copy_word_list (clause->patterns); + new_clause->action = copy_command (clause->action); + return (new_clause); +} + +static PATTERN_LIST * +copy_case_clauses (clauses) + PATTERN_LIST *clauses; +{ + PATTERN_LIST *new_list, *new_clause; + + for (new_list = (PATTERN_LIST *)NULL; clauses; clauses = clauses->next) + { + new_clause = copy_case_clause (clauses); + new_clause->next = new_list; + new_list = new_clause; + } + return (REVERSE_LIST (new_list, PATTERN_LIST *)); +} + +/* Copy a single redirect. */ +REDIRECT * +copy_redirect (redirect) + REDIRECT *redirect; +{ + REDIRECT *new_redirect; + + new_redirect = (REDIRECT *)xmalloc (sizeof (REDIRECT)); + FASTCOPY ((char *)redirect, (char *)new_redirect, (sizeof (REDIRECT))); + switch (redirect->instruction) + { + case r_reading_until: + case r_deblank_reading_until: + new_redirect->here_doc_eof = savestring (redirect->here_doc_eof); + /*FALLTHROUGH*/ + case r_reading_string: + case r_appending_to: + case r_output_direction: + case r_input_direction: + case r_inputa_direction: + case r_err_and_out: + case r_input_output: + case r_output_force: + case r_duplicating_input_word: + case r_duplicating_output_word: + case r_move_input_word: + case r_move_output_word: + new_redirect->redirectee.filename = copy_word (redirect->redirectee.filename); + break; + case r_duplicating_input: + case r_duplicating_output: + case r_move_input: + case r_move_output: + case r_close_this: + break; + } + return (new_redirect); +} + +REDIRECT * +copy_redirects (list) + REDIRECT *list; +{ + REDIRECT *new_list, *temp; + + for (new_list = (REDIRECT *)NULL; list; list = list->next) + { + temp = copy_redirect (list); + temp->next = new_list; + new_list = temp; + } + return (REVERSE_LIST (new_list, REDIRECT *)); +} + +static FOR_COM * +copy_for_command (com) + FOR_COM *com; +{ + FOR_COM *new_for; + + new_for = (FOR_COM *)xmalloc (sizeof (FOR_COM)); + new_for->flags = com->flags; + new_for->line = com->line; + new_for->name = copy_word (com->name); + new_for->map_list = copy_word_list (com->map_list); + new_for->action = copy_command (com->action); + return (new_for); +} + +#if defined (ARITH_FOR_COMMAND) +static ARITH_FOR_COM * +copy_arith_for_command (com) + ARITH_FOR_COM *com; +{ + ARITH_FOR_COM *new_arith_for; + + new_arith_for = (ARITH_FOR_COM *)xmalloc (sizeof (ARITH_FOR_COM)); + new_arith_for->flags = com->flags; + new_arith_for->line = com->line; + new_arith_for->init = copy_word_list (com->init); + new_arith_for->test = copy_word_list (com->test); + new_arith_for->step = copy_word_list (com->step); + new_arith_for->action = copy_command (com->action); + return (new_arith_for); +} +#endif /* ARITH_FOR_COMMAND */ + +static GROUP_COM * +copy_group_command (com) + GROUP_COM *com; +{ + GROUP_COM *new_group; + + new_group = (GROUP_COM *)xmalloc (sizeof (GROUP_COM)); + new_group->command = copy_command (com->command); + return (new_group); +} + +static SUBSHELL_COM * +copy_subshell_command (com) + SUBSHELL_COM *com; +{ + SUBSHELL_COM *new_subshell; + + new_subshell = (SUBSHELL_COM *)xmalloc (sizeof (SUBSHELL_COM)); + new_subshell->command = copy_command (com->command); + new_subshell->flags = com->flags; + return (new_subshell); +} + +static CASE_COM * +copy_case_command (com) + CASE_COM *com; +{ + CASE_COM *new_case; + + new_case = (CASE_COM *)xmalloc (sizeof (CASE_COM)); + new_case->flags = com->flags; + new_case->line = com->line; + new_case->word = copy_word (com->word); + new_case->clauses = copy_case_clauses (com->clauses); + return (new_case); +} + +static WHILE_COM * +copy_while_command (com) + WHILE_COM *com; +{ + WHILE_COM *new_while; + + new_while = (WHILE_COM *)xmalloc (sizeof (WHILE_COM)); + new_while->flags = com->flags; + new_while->test = copy_command (com->test); + new_while->action = copy_command (com->action); + return (new_while); +} + +static IF_COM * +copy_if_command (com) + IF_COM *com; +{ + IF_COM *new_if; + + new_if = (IF_COM *)xmalloc (sizeof (IF_COM)); + new_if->flags = com->flags; + new_if->test = copy_command (com->test); + new_if->true_case = copy_command (com->true_case); + new_if->false_case = com->false_case ? copy_command (com->false_case) : com->false_case; + return (new_if); +} + +#if defined (DPAREN_ARITHMETIC) +static ARITH_COM * +copy_arith_command (com) + ARITH_COM *com; +{ + ARITH_COM *new_arith; + + new_arith = (ARITH_COM *)xmalloc (sizeof (ARITH_COM)); + new_arith->flags = com->flags; + new_arith->exp = copy_word_list (com->exp); + new_arith->line = com->line; + + return (new_arith); +} +#endif + +#if defined (COND_COMMAND) +static COND_COM * +copy_cond_command (com) + COND_COM *com; +{ + COND_COM *new_cond; + + new_cond = (COND_COM *)xmalloc (sizeof (COND_COM)); + new_cond->flags = com->flags; + new_cond->line = com->line; + new_cond->type = com->type; + new_cond->op = com->op ? copy_word (com->op) : com->op; + new_cond->left = com->left ? copy_cond_command (com->left) : (COND_COM *)NULL; + new_cond->right = com->right ? copy_cond_command (com->right) : (COND_COM *)NULL; + + return (new_cond); +} +#endif + +static SIMPLE_COM * +copy_simple_command (com) + SIMPLE_COM *com; +{ + SIMPLE_COM *new_simple; + + new_simple = (SIMPLE_COM *)xmalloc (sizeof (SIMPLE_COM)); + new_simple->flags = com->flags; + new_simple->words = copy_word_list (com->words); + new_simple->redirects = com->redirects ? copy_redirects (com->redirects) : (REDIRECT *)NULL; + new_simple->line = com->line; + return (new_simple); +} + +FUNCTION_DEF * +copy_function_def_contents (old, new_def) + FUNCTION_DEF *old, *new_def; +{ + new_def->name = copy_word (old->name); + new_def->command = old->command ? copy_command (old->command) : old->command; + new_def->flags = old->flags; + new_def->line = old->line; + new_def->source_file = old->source_file ? savestring (old->source_file) : old->source_file; + return (new_def); +} + +FUNCTION_DEF * +copy_function_def (com) + FUNCTION_DEF *com; +{ + FUNCTION_DEF *new_def; + + new_def = (FUNCTION_DEF *)xmalloc (sizeof (FUNCTION_DEF)); + new_def = copy_function_def_contents (com, new_def); + return (new_def); +} + +/* Copy the command structure in COMMAND. Return a pointer to the + copy. Don't you forget to dispose_command () on this pointer + later! */ +COMMAND * +copy_command (command) + COMMAND *command; +{ + COMMAND *new_command; + + if (command == NULL) + return (command); + + new_command = (COMMAND *)xmalloc (sizeof (COMMAND)); + FASTCOPY ((char *)command, (char *)new_command, sizeof (COMMAND)); + new_command->flags = command->flags; + new_command->line = command->line; + + if (command->redirects) + new_command->redirects = copy_redirects (command->redirects); + + switch (command->type) + { + case cm_for: + new_command->value.For = copy_for_command (command->value.For); + break; + +#if defined (ARITH_FOR_COMMAND) + case cm_arith_for: + new_command->value.ArithFor = copy_arith_for_command (command->value.ArithFor); + break; +#endif + +#if defined (SELECT_COMMAND) + case cm_select: + new_command->value.Select = + (SELECT_COM *)copy_for_command ((FOR_COM *)command->value.Select); + break; +#endif + + case cm_group: + new_command->value.Group = copy_group_command (command->value.Group); + break; + + case cm_subshell: + new_command->value.Subshell = copy_subshell_command (command->value.Subshell); + break; + + case cm_case: + new_command->value.Case = copy_case_command (command->value.Case); + break; + + case cm_until: + case cm_while: + new_command->value.While = copy_while_command (command->value.While); + break; + + case cm_if: + new_command->value.If = copy_if_command (command->value.If); + break; + +#if defined (DPAREN_ARITHMETIC) + case cm_arith: + new_command->value.Arith = copy_arith_command (command->value.Arith); + break; +#endif + +#if defined (COND_COMMAND) + case cm_cond: + new_command->value.Cond = copy_cond_command (command->value.Cond); + break; +#endif + + case cm_simple: + new_command->value.Simple = copy_simple_command (command->value.Simple); + break; + + case cm_connection: + { + CONNECTION *new_connection; + + new_connection = (CONNECTION *)xmalloc (sizeof (CONNECTION)); + new_connection->connector = command->value.Connection->connector; + new_connection->first = copy_command (command->value.Connection->first); + new_connection->second = copy_command (command->value.Connection->second); + new_command->value.Connection = new_connection; + break; + } + + case cm_function_def: + new_command->value.Function_def = copy_function_def (command->value.Function_def); + break; + } + return (new_command); +} diff --git a/bash-20060316/cross-build/beos-sig.h b/bash-20060316/cross-build/beos-sig.h new file mode 100644 index 000000000..ea82f8579 --- /dev/null +++ b/bash-20060316/cross-build/beos-sig.h @@ -0,0 +1,37 @@ +/* This file is used when cross compiling bash to run native on BeOS. */ + +#ifndef __GNUC__ +# error cross compiling requires gcc +#endif + +/* A translation list so we can be polite to our users. + Use gcc labelled initializers to set up the array. Note that + some entries might wind up being NULL. */ + +char *signal_names[NSIG + 3] = { + [0] "EXIT", + [SIGHUP] "SIGHUP", + [SIGINT] "SIGINT", + [SIGQUIT] "SIGQUIT", + [SIGILL] "SIGILL", + [SIGCHLD] "SIGCHLD", + [SIGABRT] "SIGABRT", + [SIGPIPE] "SIGPIPE", + [SIGFPE] "SIGFPE", + [SIGKILL] "SIGKILL", + [SIGSTOP] "SIGSTOP", + [SIGSEGV] "SIGSEGV", + [SIGCONT] "SIGCONT", + [SIGTSTP] "SIGTSTP", + [SIGALRM] "SIGALRM", + [SIGTERM] "SIGTERM", + [SIGTTIN] "SIGTTIN", + [SIGTTOU] "SIGTTOU", + [SIGUSR1] "SIGUSR1", + [SIGUSR2] "SIGUSR2", + [SIGWINCH] "SIGWINCH", + [SIGKILLTHR] "SIGKILLTHR", + [NSIG] "DEBUG", + [NSIG + 1] "ERR", + [NSIG + 2] (char *)0x0, +}; diff --git a/bash-20060316/cross-build/cygwin32.cache b/bash-20060316/cross-build/cygwin32.cache new file mode 100644 index 000000000..36948dae8 --- /dev/null +++ b/bash-20060316/cross-build/cygwin32.cache @@ -0,0 +1,251 @@ +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overriden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +ac_cv_build=${ac_cv_build='i686-pc-cygwin'} +ac_cv_build_alias=${ac_cv_build_alias='i686-pc-cygwin'} +ac_cv_c_bigendian=${ac_cv_c_bigendian='no'} +ac_cv_c_char_unsigned=${ac_cv_c_char_unsigned='no'} +ac_cv_c_compiler_gnu=${ac_cv_c_compiler_gnu='yes'} +ac_cv_c_const=${ac_cv_c_const='yes'} +ac_cv_c_inline=${ac_cv_c_inline='inline'} +ac_cv_c_long_double=${ac_cv_c_long_double='yes'} +ac_cv_c_stringize=${ac_cv_c_stringize='yes'} +ac_cv_decl_sys_siglist=${ac_cv_decl_sys_siglist='no'} +ac_cv_exeext=${ac_cv_exeext='.exe'} +ac_cv_func___setostype=${ac_cv_func___setostype='no'} +ac_cv_func__doprnt=${ac_cv_func__doprnt='no'} +ac_cv_func_alloca_works=${ac_cv_func_alloca_works='yes'} +ac_cv_func_asprintf=${ac_cv_func_asprintf='no'} +ac_cv_func_bcopy=${ac_cv_func_bcopy='yes'} +ac_cv_func_bindtextdomain=${ac_cv_func_bindtextdomain='no'} +ac_cv_func_bzero=${ac_cv_func_bzero='yes'} +ac_cv_func_confstr=${ac_cv_func_confstr='no'} +ac_cv_func_dlclose=${ac_cv_func_dlclose='yes'} +ac_cv_func_dlopen=${ac_cv_func_dlopen='yes'} +ac_cv_func_dlsym=${ac_cv_func_dlsym='yes'} +ac_cv_func_dup2=${ac_cv_func_dup2='yes'} +ac_cv_func_fnmatch=${ac_cv_func_fnmatch='no'} +ac_cv_func_getaddrinfo=${ac_cv_func_getaddrinfo='no'} +ac_cv_func_getcwd=${ac_cv_func_getcwd='yes'} +ac_cv_func_getdtablesize=${ac_cv_func_getdtablesize='yes'} +ac_cv_func_getgroups=${ac_cv_func_getgroups='yes'} +ac_cv_func_gethostbyname=${ac_cv_func_gethostbyname='yes'} +ac_cv_func_gethostname=${ac_cv_func_gethostname='yes'} +ac_cv_func_getpagesize=${ac_cv_func_getpagesize='yes'} +ac_cv_func_getpeername=${ac_cv_func_getpeername='yes'} +ac_cv_func_getpgrp_void=${ac_cv_func_getpgrp_void='yes'} +ac_cv_func_getrlimit=${ac_cv_func_getrlimit='yes'} +ac_cv_func_getrusage=${ac_cv_func_getrusage='yes'} +ac_cv_func_getservbyname=${ac_cv_func_getservbyname='yes'} +ac_cv_func_gettext=${ac_cv_func_gettext='no'} +ac_cv_func_gettimeofday=${ac_cv_func_gettimeofday='yes'} +ac_cv_func_inet_aton=${ac_cv_func_inet_aton='yes'} +ac_cv_func_isascii=${ac_cv_func_isascii='yes'} +ac_cv_func_isblank=${ac_cv_func_isblank='no'} +ac_cv_func_isgraph=${ac_cv_func_isgraph='yes'} +ac_cv_func_isprint=${ac_cv_func_isprint='yes'} +ac_cv_func_isspace=${ac_cv_func_isspace='yes'} +ac_cv_func_isxdigit=${ac_cv_func_isxdigit='yes'} +ac_cv_func_killpg=${ac_cv_func_killpg='yes'} +ac_cv_func_lstat=${ac_cv_func_lstat='yes'} +ac_cv_func_memmove=${ac_cv_func_memmove='yes'} +ac_cv_func_mkfifo=${ac_cv_func_mkfifo='yes'} +ac_cv_func_pathconf=${ac_cv_func_pathconf='yes'} +ac_cv_func_putenv=${ac_cv_func_putenv='yes'} +ac_cv_func_readlink=${ac_cv_func_readlink='yes'} +ac_cv_func_rename=${ac_cv_func_rename='yes'} +ac_cv_func_sbrk=${ac_cv_func_sbrk='yes'} +ac_cv_func_select=${ac_cv_func_select='yes'} +ac_cv_func_setdtablesize=${ac_cv_func_setdtablesize='yes'} +ac_cv_func_setenv=${ac_cv_func_setenv='yes'} +ac_cv_func_setlinebuf=${ac_cv_func_setlinebuf='no'} +ac_cv_func_setlocale=${ac_cv_func_setlocale='yes'} +ac_cv_func_setvbuf=${ac_cv_func_setvbuf='yes'} +ac_cv_func_setvbuf_reversed=${ac_cv_func_setvbuf_reversed='no'} +ac_cv_func_siginterrupt=${ac_cv_func_siginterrupt='no'} +ac_cv_func_snprintf=${ac_cv_func_snprintf='yes'} +ac_cv_func_strcasecmp=${ac_cv_func_strcasecmp='yes'} +ac_cv_func_strchr=${ac_cv_func_strchr='yes'} +ac_cv_func_strcoll_works=${ac_cv_func_strcoll_works='yes'} +ac_cv_func_strerror=${ac_cv_func_strerror='yes'} +ac_cv_func_strpbrk=${ac_cv_func_strpbrk='yes'} +ac_cv_func_strtod=${ac_cv_func_strtod='yes'} +ac_cv_func_strtoimax=${ac_cv_func_strtoimax='no'} +ac_cv_func_strtol=${ac_cv_func_strtol='yes'} +ac_cv_func_strtoll=${ac_cv_func_strtoll='no'} +ac_cv_func_strtoul=${ac_cv_func_strtoul='yes'} +ac_cv_func_strtoull=${ac_cv_func_strtoull='no'} +ac_cv_func_strtoumax=${ac_cv_func_strtoumax='no'} +ac_cv_func_sysconf=${ac_cv_func_sysconf='yes'} +ac_cv_func_tcgetattr=${ac_cv_func_tcgetattr='yes'} +ac_cv_func_tcgetpgrp=${ac_cv_func_tcgetpgrp='yes'} +ac_cv_func_textdomain=${ac_cv_func_textdomain='no'} +ac_cv_func_times=${ac_cv_func_times='yes'} +ac_cv_func_ttyname=${ac_cv_func_ttyname='yes'} +ac_cv_func_tzset=${ac_cv_func_tzset='yes'} +ac_cv_func_ulimit=${ac_cv_func_ulimit='no'} +ac_cv_func_uname=${ac_cv_func_uname='yes'} +ac_cv_func_vasprintf=${ac_cv_func_vasprintf='no'} +ac_cv_func_vprintf=${ac_cv_func_vprintf='yes'} +ac_cv_func_vsnprintf=${ac_cv_func_vsnprintf='yes'} +ac_cv_func_wait3=${ac_cv_func_wait3='yes'} +ac_cv_func_waitpid=${ac_cv_func_waitpid='yes'} +ac_cv_have_decl_confstr=${ac_cv_have_decl_confstr='no'} +ac_cv_have_decl_printf=${ac_cv_have_decl_printf='yes'} +ac_cv_have_decl_sbrk=${ac_cv_have_decl_sbrk='yes'} +ac_cv_have_decl_strsignal=${ac_cv_have_decl_strsignal='yes'} +ac_cv_have_decl_strtold=${ac_cv_have_decl_strtold='no'} +ac_cv_header_arpa_inet_h=${ac_cv_header_arpa_inet_h='yes'} +ac_cv_header_dirent_dirent_h=${ac_cv_header_dirent_dirent_h='yes'} +ac_cv_header_dlfcn_h=${ac_cv_header_dlfcn_h='yes'} +ac_cv_header_grp_h=${ac_cv_header_grp_h='yes'} +ac_cv_header_inttypes_h=${ac_cv_header_inttypes_h='no'} +ac_cv_header_libintl_h=${ac_cv_header_libintl_h='yes'} +ac_cv_header_limits_h=${ac_cv_header_limits_h='yes'} +ac_cv_header_locale_h=${ac_cv_header_locale_h='yes'} +ac_cv_header_memory_h=${ac_cv_header_memory_h='yes'} +ac_cv_header_minix_config_h=${ac_cv_header_minix_config_h='no'} +ac_cv_header_netdb_h=${ac_cv_header_netdb_h='yes'} +ac_cv_header_netinet_in_h=${ac_cv_header_netinet_in_h='yes'} +ac_cv_header_stat_broken=${ac_cv_header_stat_broken='no'} +ac_cv_header_stdarg_h=${ac_cv_header_stdarg_h='yes'} +ac_cv_header_stdc=${ac_cv_header_stdc='yes'} +ac_cv_header_stddef_h=${ac_cv_header_stddef_h='yes'} +ac_cv_header_stdint_h=${ac_cv_header_stdint_h='no'} +ac_cv_header_stdlib_h=${ac_cv_header_stdlib_h='yes'} +ac_cv_header_string_h=${ac_cv_header_string_h='yes'} +ac_cv_header_strings_h=${ac_cv_header_strings_h='yes'} +ac_cv_header_sys_file_h=${ac_cv_header_sys_file_h='yes'} +ac_cv_header_sys_param_h=${ac_cv_header_sys_param_h='yes'} +ac_cv_header_sys_pte_h=${ac_cv_header_sys_pte_h='no'} +ac_cv_header_sys_ptem_h=${ac_cv_header_sys_ptem_h='no'} +ac_cv_header_sys_resource_h=${ac_cv_header_sys_resource_h='yes'} +ac_cv_header_sys_select_h=${ac_cv_header_sys_select_h='yes'} +ac_cv_header_sys_socket_h=${ac_cv_header_sys_socket_h='yes'} +ac_cv_header_sys_stat_h=${ac_cv_header_sys_stat_h='yes'} +ac_cv_header_sys_stream_h=${ac_cv_header_sys_stream_h='no'} +ac_cv_header_sys_time_h=${ac_cv_header_sys_time_h='yes'} +ac_cv_header_sys_times_h=${ac_cv_header_sys_times_h='yes'} +ac_cv_header_sys_types_h=${ac_cv_header_sys_types_h='yes'} +ac_cv_header_sys_wait_h=${ac_cv_header_sys_wait_h='yes'} +ac_cv_header_termcap_h=${ac_cv_header_termcap_h='yes'} +ac_cv_header_termio_h=${ac_cv_header_termio_h='yes'} +ac_cv_header_termios_h=${ac_cv_header_termios_h='yes'} +ac_cv_header_time=${ac_cv_header_time='yes'} +ac_cv_header_unistd_h=${ac_cv_header_unistd_h='yes'} +ac_cv_header_varargs_h=${ac_cv_header_varargs_h='yes'} +ac_cv_host=${ac_cv_host='i686-pc-cygwin'} +ac_cv_host_alias=${ac_cv_host_alias='i686-pc-cygwin'} +ac_cv_lib_dir_opendir=${ac_cv_lib_dir_opendir='no'} +ac_cv_lib_dl_dlopen=${ac_cv_lib_dl_dlopen='no'} +ac_cv_lib_intl_bindtextdomain=${ac_cv_lib_intl_bindtextdomain='yes'} +ac_cv_lib_termcap_tgetent=${ac_cv_lib_termcap_tgetent='yes'} +ac_cv_member_struct_stat_st_blocks=${ac_cv_member_struct_stat_st_blocks='yes'} +ac_cv_member_struct_termio_c_line=${ac_cv_member_struct_termio_c_line='yes'} +ac_cv_member_struct_termios_c_line=${ac_cv_member_struct_termios_c_line='yes'} +ac_cv_objext=${ac_cv_objext='o'} +ac_cv_path_install=${ac_cv_path_install='/usr/bin/install -c'} +ac_cv_prog_AR=${ac_cv_prog_AR='ar'} +ac_cv_prog_CPP=${ac_cv_prog_CPP='gcc -E'} +ac_cv_prog_YACC=${ac_cv_prog_YACC='bison -y'} +ac_cv_prog_ac_ct_CC=${ac_cv_prog_ac_ct_CC='gcc'} +ac_cv_prog_ac_ct_RANLIB=${ac_cv_prog_ac_ct_RANLIB='ranlib'} +ac_cv_prog_cc_g=${ac_cv_prog_cc_g='yes'} +ac_cv_prog_cc_stdc=${ac_cv_prog_cc_stdc=''} +ac_cv_prog_gcc_traditional=${ac_cv_prog_gcc_traditional='no'} +ac_cv_prog_make_make_set=${ac_cv_prog_make_make_set='yes'} +ac_cv_sizeof_char=${ac_cv_sizeof_char='1'} +ac_cv_sizeof_char_p=${ac_cv_sizeof_char_p='4'} +ac_cv_sizeof_double=${ac_cv_sizeof_double='8'} +ac_cv_sizeof_int=${ac_cv_sizeof_int='4'} +ac_cv_sizeof_long=${ac_cv_sizeof_long='4'} +ac_cv_sizeof_long_long=${ac_cv_sizeof_long_long='8'} +ac_cv_sizeof_short=${ac_cv_sizeof_short='2'} +ac_cv_sys_file_offset_bits=${ac_cv_sys_file_offset_bits='no'} +ac_cv_sys_interpreter=${ac_cv_sys_interpreter='yes'} +ac_cv_sys_large_files=${ac_cv_sys_large_files='no'} +ac_cv_sys_largefile_CC=${ac_cv_sys_largefile_CC='no'} +ac_cv_sys_posix_termios=${ac_cv_sys_posix_termios='yes'} +ac_cv_sys_tiocgwinsz_in_termios_h=${ac_cv_sys_tiocgwinsz_in_termios_h='yes'} +ac_cv_type_bits16_t=${ac_cv_type_bits16_t='no'} +ac_cv_type_bits32_t=${ac_cv_type_bits32_t='no'} +ac_cv_type_bits64_t=${ac_cv_type_bits64_t='no'} +ac_cv_type_char=${ac_cv_type_char='yes'} +ac_cv_type_char_p=${ac_cv_type_char_p='yes'} +ac_cv_type_double=${ac_cv_type_double='yes'} +ac_cv_type_getgroups=${ac_cv_type_getgroups='gid_t'} +ac_cv_type_int=${ac_cv_type_int='yes'} +ac_cv_type_long=${ac_cv_type_long='yes'} +ac_cv_type_long_long=${ac_cv_type_long_long='yes'} +ac_cv_type_mode_t=${ac_cv_type_mode_t='yes'} +ac_cv_type_off_t=${ac_cv_type_off_t='yes'} +ac_cv_type_pid_t=${ac_cv_type_pid_t='yes'} +ac_cv_type_ptrdiff_t=${ac_cv_type_ptrdiff_t='yes'} +ac_cv_type_short=${ac_cv_type_short='yes'} +ac_cv_type_signal=${ac_cv_type_signal='void'} +ac_cv_type_size_t=${ac_cv_type_size_t='yes'} +ac_cv_type_ssize_t=${ac_cv_type_ssize_t='yes'} +ac_cv_type_time_t=${ac_cv_type_time_t='yes'} +ac_cv_type_u_bits16_t=${ac_cv_type_u_bits16_t='no'} +ac_cv_type_u_bits32_t=${ac_cv_type_u_bits32_t='no'} +ac_cv_type_u_int=${ac_cv_type_u_int='yes'} +ac_cv_type_u_long=${ac_cv_type_u_long='yes'} +ac_cv_type_uid_t=${ac_cv_type_uid_t='yes'} +ac_cv_working_alloca_h=${ac_cv_working_alloca_h='no'} + +bash_cv_decl_strtoimax=${bash_cv_decl_strtoimax='no'} +bash_cv_decl_strtol=${bash_cv_decl_strtol='yes'} +bash_cv_decl_strtoll=${bash_cv_decl_strtoll='no'} +bash_cv_decl_strtoul=${bash_cv_decl_strtoul='yes'} +bash_cv_decl_strtoull=${bash_cv_decl_strtoull='no'} +bash_cv_decl_strtoumax=${bash_cv_decl_strtoumax='no'} +bash_cv_decl_under_sys_siglist=${bash_cv_decl_under_sys_siglist='no'} +bash_cv_dev_fd=${bash_cv_dev_fd='absent'} +bash_cv_dev_stdin=${bash_cv_dev_stdin='absent'} +bash_cv_dirent_has_d_fileno=${bash_cv_dirent_has_d_fileno='no'} +bash_cv_dirent_has_dino=${bash_cv_dirent_has_dino='yes'} +bash_cv_dup2_broken=${bash_cv_dup2_broken='no'} +bash_cv_fionread_in_ioctl=${bash_cv_fionread_in_ioctl='no'} +bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp='present'} +bash_cv_func_strcoll_broken=${bash_cv_func_strcoll_broken='no'} +bash_cv_getenv_redef=${bash_cv_getenv_redef='yes'} +bash_cv_getpw_declared=${bash_cv_getpw_declared='yes'} +bash_cv_have_strsignal=${bash_cv_have_strsignal='yes'} +bash_cv_job_control_missing=${bash_cv_job_control_missing='present'} +bash_cv_mail_dir=${bash_cv_mail_dir='unknown'} +bash_cv_must_reinstall_sighandlers=${bash_cv_must_reinstall_sighandlers='no'} +bash_cv_opendir_not_robust=${bash_cv_opendir_not_robust='no'} +bash_cv_pgrp_pipe=${bash_cv_pgrp_pipe='no'} +bash_cv_printf_a_format=${bash_cv_printf_a_format='no'} +bash_cv_signal_vintage=${bash_cv_signal_vintage='posix'} +bash_cv_speed_t_in_sys_types=${bash_cv_speed_t_in_sys_types='no'} +bash_cv_struct_timeval=${bash_cv_struct_timeval='yes'} +bash_cv_struct_winsize_header=${bash_cv_struct_winsize_header='termios_h'} +bash_cv_sys_errlist=${bash_cv_sys_errlist='no'} +bash_cv_sys_named_pipes=${bash_cv_sys_named_pipes='present'} +bash_cv_sys_siglist=${bash_cv_sys_siglist='no'} +bash_cv_termcap_lib=${bash_cv_termcap_lib='libtermcap'} +bash_cv_tiocstat_in_ioctl=${bash_cv_tiocstat_in_ioctl='no'} +bash_cv_type_clock_t=${bash_cv_type_clock_t='yes'} +bash_cv_type_intmax_t=${bash_cv_type_intmax_t='no'} +bash_cv_type_long_long=${bash_cv_type_long_long='long long'} +bash_cv_type_quad_t=${bash_cv_type_quad_t='no'} +bash_cv_type_rlimit=${bash_cv_type_rlimit='rlim_t'} +bash_cv_type_sigset_t=${bash_cv_type_sigset_t='yes'} +bash_cv_type_socklen_t=${bash_cv_type_socklen_t='no'} +bash_cv_type_uintmax_t=${bash_cv_type_uintmax_t='no'} +bash_cv_type_unsigned_long_long=${bash_cv_type_unsigned_long_long='unsigned long long'} +bash_cv_ulimit_maxfds=${bash_cv_ulimit_maxfds='no'} +bash_cv_under_sys_siglist=${bash_cv_under_sys_siglist='no'} +bash_cv_unusable_rtsigs=${bash_cv_unusable_rtsigs='no'} +bash_cv_void_sighandler=${bash_cv_void_sighandler='yes'} diff --git a/bash-20060316/cross-build/cygwin32.cache.old b/bash-20060316/cross-build/cygwin32.cache.old new file mode 100644 index 000000000..640390fbf --- /dev/null +++ b/bash-20060316/cross-build/cygwin32.cache.old @@ -0,0 +1,42 @@ +# This file is a shell script that caches the results of configure +# tests for CYGWIN32 so they don't need to be done when cross-compiling. + +# AC_FUNC_GETPGRP should also define GETPGRP_VOID +ac_cv_func_getpgrp_void=${ac_cv_func_getpgrp_void='yes'} +# AC_FUNC_SETVBUF_REVERSED should not define anything else +ac_cv_func_setvbuf_reversed=${ac_cv_func_setvbuf_reversed='no'} +# on CYGWIN32, system calls do not restart +ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls='no'} +bash_cv_sys_restartable_syscalls=${bash_cv_sys_restartable_syscalls='no'} + +# these may be necessary, but they are currently commented out +#ac_cv_c_bigendian=${ac_cv_c_bigendian='no'} +ac_cv_sizeof_char_p=${ac_cv_sizeof_char_p='4'} +ac_cv_sizeof_int=${ac_cv_sizeof_int='4'} +ac_cv_sizeof_long=${ac_cv_sizeof_long='4'} +ac_cv_sizeof_double=${ac_cv_sizeof_double='8'} + +bash_cv_dup2_broken=${bash_cv_dup2_broken='no'} +bash_cv_pgrp_pipe=${bash_cv_pgrp_pipe='no'} +bash_cv_type_rlimit=${bash_cv_type_rlimit='long'} +bash_cv_decl_under_sys_siglist=${bash_cv_decl_under_sys_siglist='no'} +bash_cv_under_sys_siglist=${bash_cv_under_sys_siglist='no'} +bash_cv_sys_siglist=${bash_cv_sys_siglist='no'} +bash_cv_opendir_not_robust=${bash_cv_opendir_not_robust='no'} +bash_cv_getenv_redef=${bash_cv_getenv_redef='yes'} +bash_cv_printf_declared=${bash_cv_printf_declared='yes'} +bash_cv_ulimit_maxfds=${bash_cv_ulimit_maxfds='no'} +bash_cv_getcwd_calls_popen=${bash_cv_getcwd_calls_popen='no'} +bash_cv_must_reinstall_sighandlers=${bash_cv_must_reinstall_sighandlers='no'} +bash_cv_job_control_missing=${bash_cv_job_control_missing='present'} +bash_cv_sys_named_pipes=${bash_cv_sys_named_pipes='missing'} +bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp='missing'} +bash_cv_mail_dir=${bash_cv_mail_dir='unknown'} +bash_cv_func_strcoll_broken=${bash_cv_func_strcoll_broken='no'} + +bash_cv_type_int32_t=${bash_cv_type_int32_t='int'} +bash_cv_type_u_int32_t=${bash_cv_type_u_int32_t='int'} + +ac_cv_type_bits64_t=${ac_cv_type_bits64_t='no'} + +# end of cross-build/cygwin32.cache diff --git a/bash-20060316/cross-build/opennt.cache b/bash-20060316/cross-build/opennt.cache new file mode 100644 index 000000000..ca5e7cd70 --- /dev/null +++ b/bash-20060316/cross-build/opennt.cache @@ -0,0 +1,169 @@ +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs. It is not useful on other systems. +# If it contains results you don't want to keep, you may remove or edit it. +# +# By default, configure uses ./config.cache as the cache file, +# creating it if it does not exist already. You can give configure +# the --cache-file=FILE option to use a different cache file; that is +# what configure does when it calls configure scripts in +# subdirectories, so they share the cache. +# Giving --cache-file=/dev/null disables caching, for debugging configure. +# config.status only pays attention to the cache file if you give it the +# --recheck option to rerun configure. +# +ac_cv_c_bigendian=${ac_cv_c_bigendian=no} +ac_cv_decl_sys_siglist=${ac_cv_decl_sys_siglist=no} +ac_cv_func___setostype=${ac_cv_func___setostype=no} +ac_cv_func_alloca_works=${ac_cv_func_alloca_works=yes} +ac_cv_func_bcopy=${ac_cv_func_bcopy=yes} +ac_cv_func_bindtextdomain=${ac_cv_func_bindtextdomain=no} +ac_cv_func_bzero=${ac_cv_func_bzero=yes} +ac_cv_func_confstr=${ac_cv_func_confstr=yes} +ac_cv_func_dlclose=${ac_cv_func_dlclose=no} +ac_cv_func_dlopen=${ac_cv_func_dlopen=no} +ac_cv_func_dlsym=${ac_cv_func_dlsym=no} +ac_cv_func_dup2=${ac_cv_func_dup2=yes} +ac_cv_func_getcwd=${ac_cv_func_getcwd=yes} +ac_cv_func_getdtablesize=${ac_cv_func_getdtablesize=no} +ac_cv_func_getgroups=${ac_cv_func_getgroups=yes} +ac_cv_func_gethostname=${ac_cv_func_gethostname=yes} +ac_cv_func_getpagesize=${ac_cv_func_getpagesize=yes} +ac_cv_func_getpeername=${ac_cv_func_getpeername=yes} +ac_cv_func_getpgrp_void=${ac_cv_func_getpgrp_void=yes} +ac_cv_func_getrlimit=${ac_cv_func_getrlimit=no} +ac_cv_func_getrusage=${ac_cv_func_getrusage=no} +ac_cv_func_gettext=${ac_cv_func_gettext=no} +ac_cv_func_gettimeofday=${ac_cv_func_gettimeofday=yes} +ac_cv_func_killpg=${ac_cv_func_killpg=yes} +ac_cv_func_lstat=${ac_cv_func_lstat=no} +ac_cv_func_memmove=${ac_cv_func_memmove=yes} +ac_cv_func_mkfifo=${ac_cv_func_mkfifo=yes} +ac_cv_func_putenv=${ac_cv_func_putenv=yes} +ac_cv_func_rename=${ac_cv_func_rename=yes} +ac_cv_func_sbrk=${ac_cv_func_sbrk=no} +ac_cv_func_select=${ac_cv_func_select=yes} +ac_cv_func_setdtablesize=${ac_cv_func_setdtablesize=no} +ac_cv_func_setenv=${ac_cv_func_setenv=yes} +ac_cv_func_setlinebuf=${ac_cv_func_setlinebuf=yes} +ac_cv_func_setlocale=${ac_cv_func_setlocale=yes} +ac_cv_func_setvbuf_reversed=${ac_cv_func_setvbuf_reversed=no} +ac_cv_func_siginterrupt=${ac_cv_func_siginterrupt=no} +ac_cv_func_strcasecmp=${ac_cv_func_strcasecmp=yes} +ac_cv_func_strchr=${ac_cv_func_strchr=yes} +ac_cv_func_strcoll_works=${ac_cv_func_strcoll_works=yes} +ac_cv_func_strerror=${ac_cv_func_strerror=yes} +ac_cv_func_strtod=${ac_cv_func_strtod=yes} +ac_cv_func_strtol=${ac_cv_func_strtol=yes} +ac_cv_func_strtoul=${ac_cv_func_strtoul=yes} +ac_cv_func_sysconf=${ac_cv_func_sysconf=yes} +ac_cv_func_tcgetattr=${ac_cv_func_tcgetattr=yes} +ac_cv_func_tcgetpgrp=${ac_cv_func_tcgetpgrp=yes} +ac_cv_func_textdomain=${ac_cv_func_textdomain=no} +ac_cv_func_times=${ac_cv_func_times=yes} +ac_cv_func_tzset=${ac_cv_func_tzset=yes} +ac_cv_func_ulimit=${ac_cv_func_ulimit=no} +ac_cv_func_uname=${ac_cv_func_uname=yes} +ac_cv_func_vprintf=${ac_cv_func_vprintf=yes} +ac_cv_func_wait3=${ac_cv_func_wait3=no} +ac_cv_func_wait3_rusage=${ac_cv_func_wait3_rusage=no} +ac_cv_func_waitpid=${ac_cv_func_waitpid=yes} +ac_cv_header_alloca_h=${ac_cv_header_alloca_h=no} +ac_cv_header_dirent_dirent_h=${ac_cv_header_dirent_dirent_h=yes} +ac_cv_header_dlfcn_h=${ac_cv_header_dlfcn_h=no} +ac_cv_header_libintl_h=${ac_cv_header_libintl_h=no} +ac_cv_header_limits_h=${ac_cv_header_limits_h=yes} +ac_cv_header_locale_h=${ac_cv_header_locale_h=yes} +ac_cv_header_memory_h=${ac_cv_header_memory_h=yes} +ac_cv_header_minix_config_h=${ac_cv_header_minix_config_h=no} +ac_cv_header_stat_broken=${ac_cv_header_stat_broken=no} +ac_cv_header_stdarg_h=${ac_cv_header_stdarg_h=yes} +ac_cv_header_stdc=${ac_cv_header_stdc=yes} +ac_cv_header_stdlib_h=${ac_cv_header_stdlib_h=yes} +ac_cv_header_string_h=${ac_cv_header_string_h=yes} +ac_cv_header_sys_file_h=${ac_cv_header_sys_file_h=yes} +ac_cv_header_sys_param_h=${ac_cv_header_sys_param_h=yes} +ac_cv_header_sys_pte_h=${ac_cv_header_sys_pte_h=no} +ac_cv_header_sys_ptem_h=${ac_cv_header_sys_ptem_h=no} +ac_cv_header_sys_resource_h=${ac_cv_header_sys_resource_h=no} +ac_cv_header_sys_select_h=${ac_cv_header_sys_select_h=no} +ac_cv_header_sys_socket_h=${ac_cv_header_sys_socket_h=yes} +ac_cv_header_sys_stream_h=${ac_cv_header_sys_stream_h=no} +ac_cv_header_sys_time_h=${ac_cv_header_sys_time_h=yes} +ac_cv_header_sys_times_h=${ac_cv_header_sys_times_h=yes} +ac_cv_header_sys_wait_h=${ac_cv_header_sys_wait_h=yes} +ac_cv_header_termcap_h=${ac_cv_header_termcap_h=no} +ac_cv_header_termio_h=${ac_cv_header_termio_h=no} +ac_cv_header_termios_h=${ac_cv_header_termios_h=yes} +ac_cv_header_time=${ac_cv_header_time=yes} +ac_cv_header_unistd_h=${ac_cv_header_unistd_h=yes} +ac_cv_header_varargs_h=${ac_cv_header_varargs_h=no} +ac_cv_lib_dir_opendir=${ac_cv_lib_dir_opendir=no} +ac_cv_lib_dl_dlopen=${ac_cv_lib_dl_dlopen=no} +ac_cv_lib_intl_bindtextdomain=${ac_cv_lib_intl_bindtextdomain=no} +ac_cv_lib_termcap_tgetent=${ac_cv_lib_termcap_tgetent=yes} +ac_cv_path_install=${ac_cv_path_install='$INTERIX_ROOT/bin/install -c'} +ac_cv_prog_AR=${ac_cv_prog_AR=ar} +ac_cv_prog_CC=${ac_cv_prog_CC=gcc} +ac_cv_prog_CPP=${ac_cv_prog_CPP='cc -E'} +ac_cv_prog_RANLIB=${ac_cv_prog_RANLIB=:} +ac_cv_prog_cc_cross=${ac_cv_prog_cc_cross=no} +ac_cv_prog_cc_g=${ac_cv_prog_cc_g=yes} +ac_cv_prog_cc_works=${ac_cv_prog_cc_works=yes} +ac_cv_prog_gcc=${ac_cv_prog_gcc=yes} +ac_cv_prog_gcc_traditional=${ac_cv_prog_gcc_traditional=no} +ac_cv_prog_make_make_set=${ac_cv_prog_make_make_set=yes} +ac_cv_sizeof_char_p=${ac_cv_sizeof_char_p=4} +ac_cv_sizeof_double=${ac_cv_sizeof_double=8} +ac_cv_sizeof_int=${ac_cv_sizeof_int=4} +ac_cv_sizeof_long=${ac_cv_sizeof_long=4} +ac_cv_sys_interpreter=${ac_cv_sys_interpreter=yes} +ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls=no} +ac_cv_type_getgroups=${ac_cv_type_getgroups=gid_t} +ac_cv_type_mode_t=${ac_cv_type_mode_t=yes} +ac_cv_type_off_t=${ac_cv_type_off_t=yes} +ac_cv_type_pid_t=${ac_cv_type_pid_t=yes} +ac_cv_type_signal=${ac_cv_type_signal=void} +ac_cv_type_size_t=${ac_cv_type_size_t=yes} +ac_cv_type_time_t=${ac_cv_type_time_t=yes} +ac_cv_type_uid_t=${ac_cv_type_uid_t=yes} +bash_cv_can_redecl_getpw=${bash_cv_can_redecl_getpw=yes} +bash_cv_decl_under_sys_siglist=${bash_cv_decl_under_sys_siglist=no} +bash_cv_dev_fd=${bash_cv_dev_fd=absent} +bash_cv_dirent_has_d_fileno=${bash_cv_dirent_has_d_fileno=no} +bash_cv_dirent_has_dino=${bash_cv_dirent_has_dino=yes} +bash_cv_dup2_broken=${bash_cv_dup2_broken=no} +bash_cv_fionread_in_ioctl=${bash_cv_fionread_in_ioctl=yes} +bash_cv_func_lstat=${bash_cv_func_lstat=no} +bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp=present} +bash_cv_func_strcoll_broken=${bash_cv_func_strcoll_broken=no} +bash_cv_getcwd_calls_popen=${bash_cv_getcwd_calls_popen=no} +bash_cv_getenv_redef=${bash_cv_getenv_redef=yes} +bash_cv_have_strsignal=${bash_cv_have_strsignal=yes} +bash_cv_job_control_missing=${bash_cv_job_control_missing=present} +bash_cv_mail_dir=${bash_cv_mail_dir=/usr/spool/mail} +bash_cv_must_reinstall_sighandlers=${bash_cv_must_reinstall_sighandlers=no} +bash_cv_opendir_not_robust=${bash_cv_opendir_not_robust=no} +bash_cv_pgrp_pipe=${bash_cv_pgrp_pipe=no} +bash_cv_printf_declared=${bash_cv_printf_declared=yes} +bash_cv_sbrk_declared=${bash_cv_sbrk_declared=no} +bash_cv_signal_vintage=${bash_cv_signal_vintage=posix} +bash_cv_speed_t_in_sys_types=${bash_cv_speed_t_in_sys_types=no} +bash_cv_struct_timeval=${bash_cv_struct_timeval=yes} +bash_cv_struct_winsize_header=${bash_cv_struct_winsize_header=ioctl_h} +bash_cv_struct_winsize_in_ioctl=${bash_cv_struct_winsize_in_ioctl=yes} +bash_cv_sys_errlist=${bash_cv_sys_errlist=yes} +bash_cv_sys_named_pipes=${bash_cv_sys_named_pipes=present} +bash_cv_sys_siglist=${bash_cv_sys_siglist=yes} +bash_cv_termcap_lib=${bash_cv_termcap_lib=libtermcap} +bash_cv_termio_ldisc=${bash_cv_termio_ldisc=no} +bash_cv_termios_ldisc=${bash_cv_termios_ldisc=no} +bash_cv_tiocgwinsz_in_ioctl=${bash_cv_tiocgwinsz_in_ioctl=yes} +bash_cv_tiocstat_in_ioctl=${bash_cv_tiocstat_in_ioctl=no} +bash_cv_type_clock_t=${bash_cv_type_clock_t=yes} +bash_cv_type_quad_t=${bash_cv_type_quad_t=yes} +bash_cv_type_rlimit=${bash_cv_type_rlimit=long} +bash_cv_type_sigset_t=${bash_cv_type_sigset_t=yes} +bash_cv_ulimit_maxfds=${bash_cv_ulimit_maxfds=no} +bash_cv_under_sys_siglist=${bash_cv_under_sys_siglist=no} +bash_cv_void_sighandler=${bash_cv_void_sighandler=yes} diff --git a/bash-20060316/cross-build/win32sig.h b/bash-20060316/cross-build/win32sig.h new file mode 100644 index 000000000..41e618232 --- /dev/null +++ b/bash-20060316/cross-build/win32sig.h @@ -0,0 +1,256 @@ +/* This file is used when cross-compiling for the CYGWIN32 environment on + a Unix machine. It gets copied to signames.h in the build directory. */ +#include +#include + +#ifndef __GNUC__ +# error cross compiling requires gcc +#endif + +/* A translation list so we can be polite to our users. Use gcc + labelled initializers to set up the array. Note that some entries + might wind up being NULL. */ + +char *signal_names[NSIG + 3] = { + [0] "EXIT", + +#ifdef SIGLOST + [SIGLOST] "SIGLOST", +#endif + +#ifdef SIGMSG + [SIGMSG] "SIGMSG", +#endif + +#ifdef SIGDANGER + [SIGDANGER] "SIGDANGER", +#endif + +#ifdef SIGMIGRATE + [SIGMIGRATE] "SIGMIGRATE", +#endif + +#ifdef SIGPRE + [SIGPRE] "SIGPRE", +#endif + +#ifdef SIGVIRT + [SIGVIRT] "SIGVIRT", +#endif + +#ifdef SIGALRM1 + [SIGALRM1] "SIGALRM1", +#endif + +#ifdef SIGWAITING + [SIGWAITING] "SIGWAITING", +#endif + +#ifdef SIGGRANT + [SIGGRANT] "SIGGRANT", +#endif + +#ifdef SIGKAP + [SIGKAP] "SIGKAP", +#endif + +#ifdef SIGRETRACT + [SIGRETRACT] "SIGRETRACT", +#endif + +#ifdef SIGSOUND + [SIGSOUND] "SIGSOUND", +#endif + +#ifdef SIGSAK + [SIGSAK] "SIGSAK", +#endif + +#ifdef SIGLWP + [SIGLWP] "SIGLWP", +#endif + +#ifdef SIGFREEZE + [SIGFREEZE] "SIGFREEZE", +#endif + +#ifdef SIGTHAW + [SIGTHAW] "SIGTHAW", +#endif + +#ifdef SIGCANCEL + [SIGCANCEL] "SIGCANCEL", +#endif + +#ifdef SIGDIL + [SIGDIL] "SIGDIL", +#endif + +#ifdef SIGCLD +#ifndef SIGCHLD + [SIGCLD] "SIGCLD", +#else +#if SIGCHLD != SIGCLD + [SIGCLD] "SIGCLD", +#endif +#endif +#endif + +#ifdef SIGPWR + [SIGPWR] "SIGPWR", +#endif + +#ifdef SIGPOLL +#ifndef SIGIO + [SIGPOLL] "SIGPOLL", +#else +#if SIGIO != SIGPOLL + [SIGPOLL] "SIGPOLL", +#endif +#endif +#endif + +#ifdef SIGWINDOW + [SIGWINDOW] "SIGWINDOW", +#endif + +#ifdef SIGHUP + [SIGHUP] "SIGHUP", +#endif + +#ifdef SIGINT + [SIGINT] "SIGINT", +#endif + +#ifdef SIGQUIT + [SIGQUIT] "SIGQUIT", +#endif + +#ifdef SIGILL + [SIGILL] "SIGILL", +#endif + +#ifdef SIGTRAP + [SIGTRAP] "SIGTRAP", +#endif + +#ifdef SIGIOT +#ifndef SIGABRT + [SIGIOT] "SIGIOT", +#else +#if SIGABRT != SIGIOT + [SIGIOT] "SIGIOT", +#endif +#endif +#endif + +#ifdef SIGABRT + [SIGABRT] "SIGABRT", +#endif + +#ifdef SIGEMT + [SIGEMT] "SIGEMT", +#endif + +#ifdef SIGFPE + [SIGFPE] "SIGFPE", +#endif + +#ifdef SIGKILL + [SIGKILL] "SIGKILL", +#endif + +#ifdef SIGBUS + [SIGBUS] "SIGBUS", +#endif + +#ifdef SIGSEGV + [SIGSEGV] "SIGSEGV", +#endif + +#ifdef SIGSYS + [SIGSYS] "SIGSYS", +#endif + +#ifdef SIGPIPE + [SIGPIPE] "SIGPIPE", +#endif + +#ifdef SIGALRM + [SIGALRM] "SIGALRM", +#endif + +#ifdef SIGTERM + [SIGTERM] "SIGTERM", +#endif + +#ifdef SIGURG + [SIGURG] "SIGURG", +#endif + +#ifdef SIGSTOP + [SIGSTOP] "SIGSTOP", +#endif + +#ifdef SIGTSTP + [SIGTSTP] "SIGTSTP", +#endif + +#ifdef SIGCONT + [SIGCONT] "SIGCONT", +#endif + +#ifdef SIGCHLD + [SIGCHLD] "SIGCHLD", +#endif + +#ifdef SIGTTIN + [SIGTTIN] "SIGTTIN", +#endif + +#ifdef SIGTTOU + [SIGTTOU] "SIGTTOU", +#endif + +#ifdef SIGIO + [SIGIO] "SIGIO", +#endif + +#ifdef SIGXCPU + [SIGXCPU] "SIGXCPU", +#endif + +#ifdef SIGXFSZ + [SIGXFSZ] "SIGXFSZ", +#endif + +#ifdef SIGVTALRM + [SIGVTALRM] "SIGVTALRM", +#endif + +#ifdef SIGPROF + [SIGPROF] "SIGPROF", +#endif + +#ifdef SIGWINCH + [SIGWINCH] "SIGWINCH", +#endif + +#ifdef SIGINFO + [SIGINFO] "SIGINFO", +#endif + +#ifdef SIGUSR1 + [SIGUSR1] "SIGUSR1", +#endif + +#ifdef SIGUSR2 + [SIGUSR2] "SIGUSR2", +#endif + + [NSIG] "DEBUG", + + [NSIG + 1] "ERR", + + [NSIG + 2] (char *)0x0 +}; diff --git a/bash-20060316/cross-build/x86-beos.cache b/bash-20060316/cross-build/x86-beos.cache new file mode 100644 index 000000000..351aa219a --- /dev/null +++ b/bash-20060316/cross-build/x86-beos.cache @@ -0,0 +1,45 @@ +# This file is a shell script that caches the results of configure +# tests for x86 BeOS so they don't need to be done when cross-compiling. + +# AC_FUNC_GETPGRP should also define GETPGRP_VOID +ac_cv_func_getpgrp_void=${ac_cv_func_getpgrp_void='yes'} +# AC_FUNC_SETVBUF_REVERSED should not define anything else +ac_cv_func_setvbuf_reversed=${ac_cv_func_setvbuf_reversed='no'} +# on BeOS, system calls do not restart +ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls='no'} +bash_cv_sys_restartable_syscalls=${bash_cv_sys_restartable_syscalls='no'} + +ac_cv_func_tcgetattr=${ac_cv_func_tcgetattr='yes'} + +# x86 BeOS is little endian +ac_cv_c_bigendian=${ac_cv_c_bigendian='no'} +ac_cv_sizeof_char_p=${ac_cv_sizeof_char_p='4'} +ac_cv_sizeof_int=${ac_cv_sizeof_int='4'} +ac_cv_sizeof_long=${ac_cv_sizeof_long='4'} +ac_cv_sizeof_double=${ac_cv_sizeof_double='8'} + +bash_cv_dev_fd=${bash_cv_dev_fd='absent'} +bash_cv_dup2_broken=${bash_cv_dup2_broken='no'} +bash_cv_pgrp_pipe=${bash_cv_pgrp_pipe='no'} +bash_cv_type_rlimit=${bash_cv_type_rlimit='long'} +bash_cv_decl_under_sys_siglist=${bash_cv_decl_under_sys_siglist='no'} +bash_cv_under_sys_siglist=${bash_cv_under_sys_siglist='no'} +bash_cv_sys_siglist=${bash_cv_sys_siglist='yes'} +bash_cv_opendir_not_robust=${bash_cv_opendir_not_robust='no'} +bash_cv_getenv_redef=${bash_cv_getenv_redef='yes'} +bash_cv_printf_declared=${bash_cv_printf_declared='yes'} +bash_cv_ulimit_maxfds=${bash_cv_ulimit_maxfds='no'} +bash_cv_getcwd_calls_popen=${bash_cv_getcwd_calls_popen='no'} +bash_cv_must_reinstall_sighandlers=${bash_cv_must_reinstall_sighandlers='no'} +bash_cv_job_control_missing=${bash_cv_job_control_missing='present'} +bash_cv_sys_named_pipes=${bash_cv_sys_named_pipes='present'} +bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp='missing'} +bash_cv_mail_dir=${bash_cv_mail_dir='unknown'} +bash_cv_func_strcoll_broken=${bash_cv_func_strcoll_broken='no'} + +bash_cv_type_int32_t=${bash_cv_type_int32_t='int'} +bash_cv_type_u_int32_t=${bash_cv_type_u_int32_t='int'} + +ac_cv_type_bits64_t=${ac_cv_type_bits64_t='no'} + +# end of cross-build/x86-beos.cache diff --git a/bash-20060316/dispose_cmd.c b/bash-20060316/dispose_cmd.c new file mode 100644 index 000000000..ee2e68cdf --- /dev/null +++ b/bash-20060316/dispose_cmd.c @@ -0,0 +1,329 @@ +/* dispose_command.c -- dispose of a COMMAND structure. */ + +/* Copyright (C) 1987-2005 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + Bash is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with Bash; see the file COPYING. If not, write to the Free + Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#include "config.h" + +#include "bashtypes.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "bashansi.h" +#include "shell.h" + +extern sh_obj_cache_t wdcache, wlcache; + +/* Dispose of the command structure passed. */ +void +dispose_command (command) + COMMAND *command; +{ + if (command == 0) + return; + + if (command->redirects) + dispose_redirects (command->redirects); + + switch (command->type) + { + case cm_for: +#if defined (SELECT_COMMAND) + case cm_select: +#endif + { + register FOR_COM *c; +#if defined (SELECT_COMMAND) + if (command->type == cm_select) + c = (FOR_COM *)command->value.Select; + else +#endif + c = command->value.For; + dispose_word (c->name); + dispose_words (c->map_list); + dispose_command (c->action); + free (c); + break; + } + +#if defined (ARITH_FOR_COMMAND) + case cm_arith_for: + { + register ARITH_FOR_COM *c; + + c = command->value.ArithFor; + dispose_words (c->init); + dispose_words (c->test); + dispose_words (c->step); + dispose_command (c->action); + free (c); + break; + } +#endif /* ARITH_FOR_COMMAND */ + + case cm_group: + { + dispose_command (command->value.Group->command); + free (command->value.Group); + break; + } + + case cm_subshell: + { + dispose_command (command->value.Subshell->command); + free (command->value.Subshell); + break; + } + + case cm_case: + { + register CASE_COM *c; + PATTERN_LIST *t, *p; + + c = command->value.Case; + dispose_word (c->word); + + for (p = c->clauses; p; ) + { + dispose_words (p->patterns); + dispose_command (p->action); + t = p; + p = p->next; + free (t); + } + free (c); + break; + } + + case cm_until: + case cm_while: + { + register WHILE_COM *c; + + c = command->value.While; + dispose_command (c->test); + dispose_command (c->action); + free (c); + break; + } + + case cm_if: + { + register IF_COM *c; + + c = command->value.If; + dispose_command (c->test); + dispose_command (c->true_case); + dispose_command (c->false_case); + free (c); + break; + } + + case cm_simple: + { + register SIMPLE_COM *c; + + c = command->value.Simple; + dispose_words (c->words); + dispose_redirects (c->redirects); + free (c); + break; + } + + case cm_connection: + { + register CONNECTION *c; + + c = command->value.Connection; + dispose_command (c->first); + dispose_command (c->second); + free (c); + break; + } + +#if defined (DPAREN_ARITHMETIC) + case cm_arith: + { + register ARITH_COM *c; + + c = command->value.Arith; + dispose_words (c->exp); + free (c); + break; + } +#endif /* DPAREN_ARITHMETIC */ + +#if defined (COND_COMMAND) + case cm_cond: + { + register COND_COM *c; + + c = command->value.Cond; + dispose_cond_node (c); + break; + } +#endif /* COND_COMMAND */ + + case cm_function_def: + { + register FUNCTION_DEF *c; + + c = command->value.Function_def; + dispose_function_def (c); + break; + } + + default: + command_error ("dispose_command", CMDERR_BADTYPE, command->type, 0); + break; + } + free (command); +} + +#if defined (COND_COMMAND) +/* How to free a node in a conditional command. */ +void +dispose_cond_node (cond) + COND_COM *cond; +{ + if (cond) + { + if (cond->left) + dispose_cond_node (cond->left); + if (cond->right) + dispose_cond_node (cond->right); + if (cond->op) + dispose_word (cond->op); + free (cond); + } +} +#endif /* COND_COMMAND */ + +void +dispose_function_def_contents (c) + FUNCTION_DEF *c; +{ + dispose_word (c->name); + dispose_command (c->command); + FREE (c->source_file); +} + +void +dispose_function_def (c) + FUNCTION_DEF *c; +{ + dispose_function_def_contents (c); + free (c); +} + +/* How to free a WORD_DESC. */ +void +dispose_word (w) + WORD_DESC *w; +{ + FREE (w->word); + ocache_free (wdcache, WORD_DESC, w); +} + +/* Free a WORD_DESC, but not the word contained within. */ +void +dispose_word_desc (w) + WORD_DESC *w; +{ + w->word = 0; + ocache_free (wdcache, WORD_DESC, w); +} + +/* How to get rid of a linked list of words. A WORD_LIST. */ +void +dispose_words (list) + WORD_LIST *list; +{ + WORD_LIST *t; + + while (list) + { + t = list; + list = list->next; + dispose_word (t->word); +#if 0 + free (t); +#else + ocache_free (wlcache, WORD_LIST, t); +#endif + } +} + +#ifdef INCLUDE_UNUSED +/* How to dispose of an array of pointers to char. This is identical to + free_array in stringlib.c. */ +void +dispose_word_array (array) + char **array; +{ + register int count; + + if (array == 0) + return; + + for (count = 0; array[count]; count++) + free (array[count]); + + free (array); +} +#endif + +/* How to dispose of an list of redirections. A REDIRECT. */ +void +dispose_redirects (list) + REDIRECT *list; +{ + register REDIRECT *t; + + while (list) + { + t = list; + list = list->next; + switch (t->instruction) + { + case r_reading_until: + case r_deblank_reading_until: + free (t->here_doc_eof); + /*FALLTHROUGH*/ + case r_reading_string: + case r_output_direction: + case r_input_direction: + case r_inputa_direction: + case r_appending_to: + case r_err_and_out: + case r_input_output: + case r_output_force: + case r_duplicating_input_word: + case r_duplicating_output_word: + case r_move_input_word: + case r_move_output_word: + dispose_word (t->redirectee.filename); + /* FALLTHROUGH */ + default: + break; + } + free (t); + } +} diff --git a/bash-20060316/dispose_cmd.h b/bash-20060316/dispose_cmd.h new file mode 100644 index 000000000..55723d4ea --- /dev/null +++ b/bash-20060316/dispose_cmd.h @@ -0,0 +1,40 @@ +/* dispose_cmd.h -- Functions appearing in dispose_cmd.c. */ + +/* Copyright (C) 1993-2005 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#if !defined (_DISPOSE_CMD_H_) +#define _DISPOSE_CMD_H_ + +#include "stdc.h" + +extern void dispose_command __P((COMMAND *)); +extern void dispose_word_desc __P((WORD_DESC *)); +extern void dispose_word __P((WORD_DESC *)); +extern void dispose_words __P((WORD_LIST *)); +extern void dispose_word_array __P((char **)); +extern void dispose_redirects __P((REDIRECT *)); + +#if defined (COND_COMMAND) +extern void dispose_cond_node __P((COND_COM *)); +#endif + +extern void dispose_function_def_contents __P((FUNCTION_DEF *)); +extern void dispose_function_def __P((FUNCTION_DEF *)); + +#endif /* !_DISPOSE_CMD_H_ */ diff --git a/bash-20060316/doc/-i b/bash-20060316/doc/-i new file mode 100644 index 000000000..e69de29bb diff --git a/bash-20060316/doc/.DS_Store b/bash-20060316/doc/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c08dc2508b4987d7abacbe43a689957fd793a9ad GIT binary patch literal 15364 zc-rk+zi%8x6n=X?`_8wvb&;S%Ix0dD%V**OAtWcVkz4=@P$41V`{kT+_Sxr)V;70s zK$jvVB?TpaKss_gr3*?*7b#Q2o87nezMXGo4HXLWNqg@szi;N7_h#SB>@5*R_aFD# zM7N2kPN{7!@yCxut(X+*a#@(;E8?r0es2;T(?gn2p9Zu_<){e1%2$Irw5#|hG}#%A zyPeUvLrLTGExZ2yR{{zM2nYxW2>5r1WPOiAC;|ckKz(S5-4uJC+DQIi5nIi1nqpgG zH^rW(HWI&z*s9pN*rwQ)*iEtLsgt@WfLAyYWpV0wI@{HOQ<0Ct+iK0Jq-gWH_qm%b3!morx61lQBTy~4M{vO3o}f$@_^uH^elmieZZrbn(>fS| zZlOeh)xzu_Yj_4m@kY&?OaspQiqqd6-R9$2|5S?b(VP z{>QBBg!(|wud0q@{wEUMA@_6uRB2W=ZXat_U{$3rkhS_^AqzdeM^?GE_34y`wi@MM z%lV(u)K;OqW1dY@o)06gmt$5wO=9&BXzDALsj>rRcvy+DJZlNFtgO!pym{K8FX$Wk zioOK8Ua44p&Y5_WtZSyO^ns#RY8(ZBRy0JJQ>-P-LYZ8APu(B;%u45q%oJOnVl-?9 ziWcZ4T?MDi9HIKWc$Q-<+YDY?%&a&B`p(o`Gt4xbLplY@&Qx}kH;mVX)%qmcuK+C< zR_j;ZFisaLi)qct{2lj~QPpTG-k9Ul;|N_>^yCh*^+8@qe@3U`)pBEkdxOSvr*|7@ zdah!oyiv?N{)cGYY+UC27xa;fI}B$*j~`k3w}t@mgE^jxaBUgQ8p z@wSSOtOVTpu=tyk(WJcNEJsqeBxklN#d-&`*sk+#ZH;$rYst3_p!H`pW7K-$TLBbr z*~LToRm^~ZfVUSPka>uA2d#1RzN*E$TtCcNx-0veeY96moY>+xDtJjxu!hr9Ro`sR z6rT833QSw0V~?y@3;y+&{&4t$)mQn(YVGx$X%wsGTd|FvXhW@#*WS*3iel8&3J)`= z{A*=9g6IX*W1iUTfu~3-rHnRE^rGK;Y{cW z(Du?hq6vOVSAEx;Dd&D!@ou?zzM8CBSa!Am>T~tTJJKol*#(M^yfK}kyIOJP(=EVl z^ZWm{`~AOwfPlC8cmC?u*IW1L>V+T+6?qZhd-3`0`p16wB0wZB46|L!y%_M{co871 Y|6%

wiE%KtMo1KtMo1!2bw;1NY=fOaK4? literal 0 Hc-jL100001 diff --git a/bash-20060316/doc/FAQ b/bash-20060316/doc/FAQ new file mode 100644 index 000000000..71702653d --- /dev/null +++ b/bash-20060316/doc/FAQ @@ -0,0 +1,1806 @@ +This is the Bash FAQ, version 3.33, for Bash version 3.1. + +This document contains a set of frequently-asked questions concerning +Bash, the GNU Bourne-Again Shell. Bash is a freely-available command +interpreter with advanced features for both interactive use and shell +programming. + +Another good source of basic information about shells is the collection +of FAQ articles periodically posted to comp.unix.shell. + +Questions and comments concerning this document should be sent to +chet@po.cwru.edu. + +This document is available for anonymous FTP with the URL + +ftp://ftp.cwru.edu/pub/bash/FAQ + +The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html + +---------- +Contents: + +Section A: The Basics + +A1) What is it? +A2) What's the latest version? +A3) Where can I get it? +A4) On what machines will bash run? +A5) Will bash run on operating systems other than Unix? +A6) How can I build bash with gcc? +A7) How can I make bash my login shell? +A8) I just changed my login shell to bash, and now I can't FTP into my + machine. Why not? +A9) What's the `POSIX Shell and Utilities standard'? +A10) What is the bash `posix mode'? + +Section B: The latest version + +B1) What's new in version 3.1? +B2) Are there any user-visible incompatibilities between bash-3.1 and + bash-2.05b? + +Section C: Differences from other Unix shells + +C1) How does bash differ from sh, the Bourne shell? +C2) How does bash differ from the Korn shell, version ksh88? +C3) Which new features in ksh-93 are not in bash, and which are? + +Section D: Why does bash do some things differently than other Unix shells? + +D1) Why does bash run a different version of `command' than + `which command' says it will? +D2) Why doesn't bash treat brace expansions exactly like csh? +D3) Why doesn't bash have csh variable modifiers? +D4) How can I make my csh aliases work when I convert to bash? +D5) How can I pipe standard output and standard error from one command to + another, like csh does with `|&'? +D6) Now that I've converted from ksh to bash, are there equivalents to + ksh features like autoloaded functions and the `whence' command? + +Section E: Why does bash do certain things the way it does? + +E1) Why is the bash builtin `test' slightly different from /bin/test? +E2) Why does bash sometimes say `Broken pipe'? +E3) When I have terminal escape sequences in my prompt, why does bash + wrap lines at the wrong column? +E4) If I pipe the output of a command into `read variable', why doesn't + the output show up in $variable when the read command finishes? +E5) I have a bunch of shell scripts that use backslash-escaped characters + in arguments to `echo'. Bash doesn't interpret these characters. Why + not, and how can I make it understand them? +E6) Why doesn't a while or for loop get suspended when I type ^Z? +E7) What about empty for loops in Makefiles? +E8) Why does the arithmetic evaluation code complain about `08'? +E9) Why does the pattern matching expression [A-Z]* match files beginning + with every letter except `z'? +E10) Why does `cd //' leave $PWD as `//'? +E11) If I resize my xterm while another program is running, why doesn't bash + notice the change? +E12) Why don't negative offsets in substring expansion work like I expect? + +Section F: Things to watch out for on certain Unix versions + +F1) Why can't I use command line editing in my `cmdtool'? +F2) I built bash on Solaris 2. Why do globbing expansions and filename + completion chop off the first few characters of each filename? +F3) Why does bash dump core after I interrupt username completion or + `~user' tilde expansion on a machine running NIS? +F4) I'm running SVR4.2. Why is the line erased every time I type `@'? +F5) Why does bash report syntax errors when my C News scripts use a + redirection before a subshell command? +F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? +F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on + HP/UX 11.x? + +Section G: How can I get bash to do certain common things? + +G1) How can I get bash to read and display eight-bit characters? +G2) How do I write a function `x' to replace builtin command `x', but + still invoke the command from within the function? +G3) How can I find the value of a shell variable whose name is the value + of another shell variable? +G4) How can I make the bash `time' reserved word print timing output that + looks like the output from my system's /usr/bin/time? +G5) How do I get the current directory into my prompt? +G6) How can I rename "*.foo" to "*.bar"? +G7) How can I translate a filename from uppercase to lowercase? +G8) How can I write a filename expansion (globbing) pattern that will match + all files in the current directory except "." and ".."? + +Section H: Where do I go from here? + +H1) How do I report bugs in bash, and where should I look for fixes and + advice? +H2) What kind of bash documentation is there? +H3) What's coming in future versions? +H4) What's on the bash `wish list'? +H5) When will the next release appear? + +---------- +Section A: The Basics + +A1) What is it? + +Bash is a Unix command interpreter (shell). It is an implementation of +the Posix 1003.2 shell standard, and resembles the Korn and System V +shells. + +Bash contains a number of enhancements over those shells, both +for interactive use and shell programming. Features geared +toward interactive use include command line editing, command +history, job control, aliases, and prompt expansion. Programming +features include additional variable expansions, shell +arithmetic, and a number of variables and options to control +shell behavior. + +Bash was originally written by Brian Fox of the Free Software +Foundation. The current developer and maintainer is Chet Ramey +of Case Western Reserve University. + +A2) What's the latest version? + +The latest version is 3.1, first made available on 09 December, 2005. + +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 3.1: + +ftp://ftp.gnu.org/pub/gnu/bash/bash-3.1.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-3.1.tar.gz + +Formatted versions of the documentation are available with the URLs: + +ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-3.1.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-doc-3.1.tar.gz + +Any patches for the current version are available with the URL: + +ftp://ftp.cwru.edu/pub/bash/bash-3.1-patches/ + +A4) On what machines will bash run? + +Bash has been ported to nearly every version of Unix. All you +should have to do to build it on a machine for which a port +exists is to type `configure' and then `make'. The build process +will attempt to discover the version of Unix you have and tailor +itself accordingly, using a script created by GNU autoconf. + +More information appears in the file `INSTALL' in the distribution. + +The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html) +explains how to obtain binary versions of bash for most of the major +commercial Unix systems. + +A5) Will bash run on operating systems other than Unix? + +Configuration specifics for Unix-like systems such as QNX and +LynxOS are included in the distribution. Bash-2.05 and later +versions should compile and run on Minix 2.0 (patches were +contributed), but I don't believe anyone has built bash-2.x on +earlier Minix versions yet. + +Bash has been ported to versions of Windows implementing the Win32 +programming interface. This includes Windows 95 and Windows NT. +The port was done by Cygnus Solutions (now part of Red Hat) as part +of their CYGWIN project. For more information about the project, see +http://www.cygwin.com/. + +Cygnus originally ported bash-1.14.7, and that port was part of their +early GNU-Win32 (the original name) releases. Cygnus has also done +ports of bash-2.05b and bash-3.0 to the CYGWIN environment, and both +are available as part of their current release. Bash-3.1 is currently +being tested and should be available soon. + +Bash-2.05b and later versions should require no local Cygnus changes to +build and run under CYGWIN. + +DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part +of the DJGPP project. For more information on the project, see + +http://www.delorie.com/djgpp/ + +I have been told that the original DJGPP port was done by Daisuke Aoyama. + +Mark Elbrecht has sent me notice that bash-2.04 +is available for DJGPP V2. The files are available as: + +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source + +Mark 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-3.1. + +A6) How can I build bash with gcc? + +Bash configures to use gcc by default if it is available. Read the +file INSTALL in the distribution for more information. + +A7) How can I make bash my login shell? + +Some machines let you use `chsh' to change your login shell. Other +systems use `passwd -s' or `passwd -e'. If one of these works for +you, that's all you need. Note that many systems require the full +pathname to a shell to appear in /etc/shells before you can make it +your login shell. For this, you may need the assistance of your +friendly local system administrator. + +If you cannot do this, you can still use bash as your login shell, but +you need to perform some tricks. The basic idea is to add a command +to your login shell's startup file to replace your login shell with +bash. + +For example, if your login shell is csh or tcsh, and you have installed +bash in /usr/gnu/bin/bash, add the following line to ~/.login: + + if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login + +(the `--login' tells bash that it is a login shell). + +It's not a good idea to put this command into ~/.cshrc, because every +csh you run without the `-f' option, even ones started to run csh scripts, +reads that file. If you must put the command in ~/.cshrc, use something +like + + if ( $?prompt ) exec /usr/gnu/bin/bash --login + +to ensure that bash is exec'd only when the csh is interactive. + +If your login shell is sh or ksh, you have to do two things. + +First, create an empty file in your home directory named `.bash_profile'. +The existence of this file will prevent the exec'd bash from trying to +read ~/.profile, and re-execing itself over and over again. ~/.bash_profile +is the first file bash tries to read initialization commands from when +it is invoked as a login shell. + +Next, add a line similar to the above to ~/.profile: + + [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \ + exec /usr/gnu/bin/bash --login + +This will cause login shells to replace themselves with bash running as +a login shell. Once you have this working, you can copy your initialization +code from ~/.profile to ~/.bash_profile. + +I have received word that the recipe supplied above is insufficient for +machines running CDE. CDE has a maze of twisty little startup files, all +slightly different. + +If you cannot change your login shell in the password file to bash, you +will have to (apparently) live with CDE using the shell in the password +file to run its startup scripts. If you have changed your shell to bash, +there is code in the CDE startup files (on Solaris, at least) that attempts +to do the right thing. It is, however, often broken, and may require that +you use the $BASH_ENV trick described below. + +`dtterm' claims to use $SHELL as the default program to start, so if you +can change $SHELL in the CDE startup files, you should be able to use bash +in your terminal windows. + +Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program +to read your login shell's startup files. You may be able to use bash for +the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as +well, but I have not tried this. + +You can use the above `exec' recipe to start bash when not logging in with +CDE by testing the value of the DT variable: + + if [ -n "$DT" ]; then + [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login + fi + +If CDE starts its shells non-interactively during login, the login shell +startup files (~/.profile, ~/.bash_profile) will not be sourced at login. +To get around this problem, append a line similar to the following to your +~/.dtprofile: + + BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV + +and add the following line to the beginning of ~/.bash_profile: + + unset BASH_ENV + +A8) I just changed my login shell to bash, and now I can't FTP into my + machine. Why not? + +You must add the full pathname to bash to the file /etc/shells. As +noted in the answer to the previous question, many systems require +this before you can make bash your login shell. + +Most versions of ftpd use this file to prohibit `special' users +such as `uucp' and `news' from using FTP. + +A9) What's the `POSIX Shell and Utilities standard'? + +POSIX is a name originally coined by Richard Stallman for a +family of open system standards based on UNIX. There are a +number of aspects of UNIX under consideration for +standardization, from the basic system services at the system +call and C library level to applications and tools to system +administration and management. Each area of standardization is +assigned to a working group in the 1003 series. + +The POSIX Shell and Utilities standard was originally developed by +IEEE Working Group 1003.2 (POSIX.2). Today it has been merged with +the original 1003.1 Working Group and is maintained by the Austin +Group (a joint working group of the IEEE, The Open Group and +ISO/IEC SC22/WG15). Today the Shell and Utilities are a volume +within the set of documents that make up IEEE Std 1003.1-2001, and +thus now the former POSIX.2 (from 1992) is now part of the current +POSIX.1 standard (POSIX 1003.1-2001). + +The Shell and Utilities volume concentrates on the command +interpreter interface and utility programs commonly executed from +the command line or by other programs. The standard is freely +available on the web at http://www.UNIX-systems.org/version3/ . +Work continues at the Austin Group on maintenance issues; see +http://www.opengroup.org/austin/ to join the discussions. + +Bash is concerned with the aspects of the shell's behavior defined +by the POSIX Shell and Utilities volume. The shell command +language has of course been standardized, including the basic flow +control and program execution constructs, I/O redirection and +pipelining, argument handling, variable expansion, and quoting. + +The `special' builtins, which must be implemented as part of the +shell to provide the desired functionality, are specified as +being part of the shell; examples of these are `eval' and +`export'. Other utilities appear in the sections of POSIX not +devoted to the shell which are commonly (and in some cases must +be) implemented as builtin commands, such as `read' and `test'. +POSIX also specifies aspects of the shell's interactive +behavior as part of the UPE, including job control and command +line editing. Only vi-style line editing commands have been +standardized; emacs editing commands were left out due to +objections. + +The latest version of the POSIX Shell and Utilities standard is +available (now updated to the 2004 Edition) as part of the Single +UNIX Specification Version 3 at + +http://www.UNIX-systems.org/version3/ + +A10) What is the bash `posix mode'? + +Although bash is an implementation of the POSIX shell +specification, there are areas where the bash default behavior +differs from that spec. The bash `posix mode' changes the bash +behavior in these areas so that it obeys the spec more closely. + +Posix mode is entered by starting bash with the --posix or +'-o posix' option or executing `set -o posix' after bash is running. + +The specific aspects of bash which change when posix mode is +active are listed in the file POSIX in the bash distribution. +They are also listed in a section in the Bash Reference Manual +(from which that file is generated). + +Section B: The latest version + +B1) What's new in version 3.1? + +Bash-3.1 is the first maintenance release of the third major release of +bash. It contains the following significant new features (see the manual +page for complete descriptions and the CHANGES and NEWS files in the +bash-3.1 distribution). + +o Bash-3.1 may now be configured and built in a mode that enforces strict + POSIX compliance. + +o The `+=' assignment operator, which appends to the value of a string or + array variable, has been implemented. + +o It is now possible to ignore case when matching in contexts other than + filename generation using the new `nocasematch' shell option. + +A short feature history dating from Bash-2.0: + +Bash-3.0 contained the following new features: + +o Features to support the bash debugger have been implemented, and there + is a new `extdebug' option to turn the non-default options on + +o HISTCONTROL is now a colon-separated list of options and has been + extended with a new `erasedups' option that will result in only one + copy of a command being kept in the history list + +o Brace expansion has been extended with a new {x..y} form, producing + sequences of digits or characters + +o Timestamps are now kept with history entries, with an option to save + and restore them from the history file; there is a new HISTTIMEFORMAT + variable describing how to display the timestamps when listing history + entries + +o The `[[' command can now perform extended regular expression (egrep-like) + matching, with matched subexpressions placed in the BASH_REMATCH array + variable + +o A new `pipefail' option causes a pipeline to return a failure status if + any command in it fails + +o The `jobs', `kill', and `wait' builtins now accept job control notation + in their arguments even if job control is not enabled + +o The `gettext' package and libintl have been integrated, and the shell + messages may be translated into other languages + +Bash-2.05b introduced the following new features: + +o support for multibyte characters has been added to both bash and readline + +o the DEBUG trap is now run *before* simple commands, ((...)) commands, + [[...]] conditional commands, and for ((...)) loops + +o the shell now performs arithmetic in the largest integer size the machine + supports (intmax_t) + +o there is a new \D{...} prompt expansion; passes the `...' to strftime(3) + and inserts the result into the expanded prompt + +o there is a new `here-string' redirection operator: <<< word + +o when displaying variables, function attributes and definitions are shown + separately, allowing them to be re-used as input (attempting to re-use + the old output would result in syntax errors). + +o `read' has a new `-u fd' option to read from a specified file descriptor + +o the bash debugger in examples/bashdb has been modified to work with the + new DEBUG trap semantics, the command set has been made more gdb-like, + and the changes to $LINENO make debugging functions work better + +o the expansion of $LINENO inside a shell function is only relative to the + function start if the shell is interactive -- if the shell is running a + script, $LINENO expands to the line number in the script. This is as + POSIX-2001 requires + +Bash-2.05a introduced the following new features: + +o The `printf' builtin has undergone major work + +o There is a new read-only `shopt' option: login_shell, which is set by + login shells and unset otherwise + +o New `\A' prompt string escape sequence; expanding to time in 24-hour + HH:MM format + +o New `-A group/-g' option to complete and compgen; goes group name + completion + +o New [+-]O invocation option to set and unset `shopt' options at startup + +o ksh-like `ERR' trap + +o `for' loops now allow empty word lists after the `in' reserved word + +o new `hard' and `soft' arguments for the `ulimit' builtin + +o Readline can be configured to place the user at the same point on the line + when retrieving commands from the history list + +o Readline can be configured to skip `hidden' files (filenames with a leading + `.' on Unix) when performing completion + +Bash-2.05 introduced the following new features: + +o This version has once again reverted to using locales and strcoll(3) when + processing pattern matching bracket expressions, as POSIX requires. +o Added a new `--init-file' invocation argument as a synonym for `--rcfile', + per the new GNU coding standards. +o The /dev/tcp and /dev/udp redirections now accept service names as well as + port numbers. +o `complete' and `compgen' now take a `-o value' option, which controls some + of the aspects of that compspec. Valid values are: + + default - perform bash default completion if programmable + completion produces no matches + dirnames - perform directory name completion if programmable + completion produces no matches + filenames - tell readline that the compspec produces filenames, + so it can do things like append slashes to + directory names and suppress trailing spaces +o A new loadable builtin, realpath, which canonicalizes and expands symlinks + in pathname arguments. +o When `set' is called without options, it prints function defintions in a + way that allows them to be reused as input. This affects `declare' and + `declare -p' as well. This only happens when the shell is not in POSIX + mode, since POSIX.2 forbids this behavior. + +Bash-2.04 introduced the following new features: + +o Programmable word completion with the new `complete' and `compgen' builtins; + examples are provided in examples/complete/complete-examples +o `history' has a new `-d' option to delete a history entry +o `bind' has a new `-x' option to bind key sequences to shell commands +o The prompt expansion code has new `\j' and `\l' escape sequences +o The `no_empty_cmd_completion' shell option, if enabled, inhibits + command completion when TAB is typed on an empty line +o `help' has a new `-s' option to print a usage synopsis +o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma) +o New ksh93-style arithmetic for command: + for ((expr1 ; expr2; expr3 )); do list; done +o `read' has new options: `-t', `-n', `-d', `-s' +o The redirection code handles several filenames specially: /dev/fd/N, + /dev/stdin, /dev/stdout, /dev/stderr +o The redirection code now recognizes /dev/tcp/HOST/PORT and + /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively, + to the specified port on the specified host +o The ${!prefix*} expansion has been implemented +o A new FUNCNAME variable, which expands to the name of a currently-executing + function +o The GROUPS variable is no longer readonly +o A new shopt `xpg_echo' variable, to control the behavior of echo with + respect to backslash-escape sequences at runtime +o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned + +The version of Readline released with Bash-2.04, Readline-4.1, had several +new features as well: + +o Parentheses matching is always compiled into readline, and controllable + with the new `blink-matching-paren' variable +o The history-search-forward and history-search-backward functions now leave + point at the end of the line when the search string is empty, like + reverse-search-history, and forward-search-history +o A new function for applications: rl_on_new_line_with_prompt() +o New variables for applications: rl_already_prompted, and rl_gnu_readline_p + + +Bash-2.03 had very few new features, in keeping with the convention +that odd-numbered releases provide mainly bug fixes. A number of new +features were added to Readline, mostly at the request of the Cygnus +folks. + +A new shopt option, `restricted_shell', so that startup files can test + whether or not the shell was started in restricted mode +Filename generation is now performed on the words between ( and ) in + compound array assignments (this is really a bug fix) +OLDPWD is now auto-exported, as POSIX.2 requires +ENV and BASH_ENV are read-only variables in a restricted shell +Bash may now be linked against an already-installed Readline library, + as long as the Readline library is version 4 or newer +All shells begun with the `--login' option will source the login shell + startup files, even if the shell is not interactive + +There were lots of changes to the version of the Readline library released +along with Bash-2.03. For a complete list of the changes, read the file +CHANGES in the Bash-2.03 distribution. + +Bash-2.02 contained the following new features: + +a new version of malloc (based on the old GNU malloc code in previous + bash versions) that is more page-oriented, more conservative + with memory usage, does not `orphan' large blocks when they + are freed, is usable on 64-bit machines, and has allocation + checking turned on unconditionally +POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.) +POSIX.2-style globbing equivalence classes +POSIX.2-style globbing collating symbols +the ksh [[...]] extended conditional command +the ksh egrep-style extended pattern matching operators +a new `printf' builtin +the ksh-like $(, &>, >|, <<<, [n]<&word-, [n]>&word- + prompt string special char translation and variable expansion + auto-export of variables in initial environment + command search finds functions before builtins + bash return builtin will exit a file sourced with `.' + builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t. + export -n/-f/-p/name=value, pwd -L/-P, + read -e/-p/-a/-t/-n/-d/-s/-u, + readonly -a/-f/name=value, trap -l, set +o, + set -b/-m/-o option/-h/-p/-B/-C/-H/-P, + unset -f/-v, ulimit -i/-m/-p/-q/-u/-x, + type -a/-p/-t/-f/-P, suspend -f, kill -n, + test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S + bash reads ~/.bashrc for interactive shells, $ENV for non-interactive + bash restricted shell mode is more extensive + bash allows functions and variables with the same name + brace expansion + tilde expansion + arithmetic expansion with $((...)) and `let' builtin + the `[[...]]' extended conditional command + process substitution + aliases and alias/unalias builtins + local variables in functions and `local' builtin + readline and command-line editing with programmable completion + command history and history/fc builtins + csh-like history expansion + other new bash builtins: bind, command, compgen, complete, builtin, + declare/typeset, dirs, enable, fc, help, + history, logout, popd, pushd, disown, shopt, + printf + exported functions + filename generation when using output redirection (command >a*) + POSIX.2-style globbing character classes + POSIX.2-style globbing equivalence classes + POSIX.2-style globbing collating symbols + egrep-like extended pattern matching operators + case-insensitive pattern matching and globbing + variable assignments preceding commands affect only that command, + even for builtins and functions + posix mode and strict posix conformance + redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr, + /dev/tcp/host/port, /dev/udp/host/port + debugger support, including `caller' builtin and new variables + RETURN trap + the `+=' assignment operator + + +Things sh has that bash does not: + uses variable SHACCT to do shell accounting + includes `stop' builtin (bash can use alias stop='kill -s STOP') + `newgrp' builtin + turns on job control if called as `jsh' + $TIMEOUT (like bash $TMOUT) + `^' is a synonym for `|' + new SVR4.2 sh builtins: mldmode, priv + +Implementation differences: + redirection to/from compound commands causes sh to create a subshell + bash does not allow unbalanced quotes; sh silently inserts them at EOF + bash does not mess with signal 11 + sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100 + bash splits only the results of expansions on IFS, using POSIX.2 + field splitting rules; sh splits all words on IFS + sh does not allow MAILCHECK to be unset (?) + sh does not allow traps on SIGALRM or SIGCHLD + bash allows multiple option arguments when invoked (e.g. -x -v); + sh allows only a single option argument (`sh -x -v' attempts + to open a file named `-v', and, on SunOS 4.1.4, dumps core. + On Solaris 2.4 and earlier versions, sh goes into an infinite + loop.) + sh exits a script if any builtin fails; bash exits only if one of + the POSIX.2 `special' builtins fails + +C2) How does bash differ from the Korn shell, version ksh88? + +Things bash has or uses that ksh88 does not: + long invocation options + [-+]O invocation option + -l invocation option + `!' reserved word + arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done + arithmetic in largest machine-supported size (intmax_t) + posix mode and posix conformance + command hashing + tilde expansion for assignment statements that look like $PATH + process substitution with named pipes if /dev/fd is not available + the ${!param} indirect parameter expansion operator + the ${!param*} prefix expansion operator + the ${param:offset[:length]} parameter substring operator + the ${param/pat[/string]} parameter pattern substitution operator + variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL, + TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, + HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND, + IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK, + PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE, + GROUPS, FUNCNAME, histchars, auto_resume + prompt expansion with backslash escapes and command substitution + redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word- + more extensive and extensible editing and programmable completion + builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable, + exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history, + jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd, + read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p, + set -o braceexpand/-o histexpand/-o interactive-comments/ + -o notify/-o physical/-o posix/-o hashall/-o onecmd/ + -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type, + typeset -a/-F/-p, ulimit -i/-q/-u/-x, umask -S, alias -p, + shopt, disown, printf, complete, compgen + `!' csh-style history expansion + POSIX.2-style globbing character classes + POSIX.2-style globbing equivalence classes + POSIX.2-style globbing collating symbols + egrep-like extended pattern matching operators + case-insensitive pattern matching and globbing + `**' arithmetic operator to do exponentiation + redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr + arrays of unlimited size + TMOUT is default timeout for `read' and `select' + debugger support, including the `caller' builtin + RETURN trap + Timestamps in history entries + {x..y} brace expansion + The `+=' assignment operator + +Things ksh88 has or uses that bash does not: + tracked aliases (alias -t) + variables: ERRNO, FPATH, EDITOR, VISUAL + co-processes (|&, >&p, <&p) + weirdly-scoped functions + typeset +f to list all function names without definitions + text of command history kept in a file, not memory + builtins: alias -x, cd old new, newgrp, print, + read -p/-s/var?prompt, set -A/-o gmacs/ + -o bgnice/-o markdirs/-o trackall/-o viraw/-s, + typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence + using environment to pass attributes of exported variables + arithmetic evaluation done on arguments to some builtins + reads .profile from $PWD when invoked as login shell + +Implementation differences: + ksh runs last command of a pipeline in parent shell context + bash has brace expansion by default (ksh88 compile-time option) + bash has fixed startup file for all interactive shells; ksh reads $ENV + bash has exported functions + bash command search finds functions before builtins + bash waits for all commands in pipeline to exit before returning status + emacs-mode editing has some slightly different key bindings + +C3) Which new features in ksh-93 are not in bash, and which are? + +New things in ksh-93 not in bash-3.0: + associative arrays + floating point arithmetic and variables + math library functions + ${!name[sub]} name of subscript for associative array + `.' is allowed in variable names to create a hierarchical namespace + more extensive compound assignment syntax + discipline functions + `sleep' and `getconf' builtins (bash has loadable versions) + typeset -n and `nameref' variables + KEYBD trap + variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version, + .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT + backreferences in pattern matching (\N) + `&' operator in pattern lists for matching + print -f (bash uses printf) + `fc' has been renamed to `hist' + `.' can execute shell functions + exit statuses between 0 and 255 + FPATH and PATH mixing + getopts -a + -I invocation option + printf %H, %P, %T, %Z modifiers, output base for %d + lexical scoping for local variables in `ksh' functions + no scoping for local variables in `POSIX' functions + +New things in ksh-93 present in bash-3.0: + [n]<&word- and [n]>&word- redirections (combination dup and close) + for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command + ?:, ++, --, `expr1 , expr2' arithmetic operators + expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]}, + ${!param*} + compound array assignment + the `!' reserved word + loadable builtins -- but ksh uses `builtin' while bash uses `enable' + `command', `builtin', `disown' builtins + new $'...' and $"..." quoting + FIGNORE (but bash uses GLOBIGNORE), HISTCMD + set -o notify/-C + changes to kill builtin + read -A (bash uses read -a) + read -t/-d + trap -p + exec -c/-a + `.' restores the positional parameters when it completes + POSIX.2 `test' + umask -S + unalias -a + command and arithmetic substitution performed on PS1, PS4, and ENV + command name completion + ENV processed only for interactive shells + set -o pipefail + The `+=' assignment operator + +Section D: Why does bash do some things differently than other Unix shells? + +D1) Why does bash run a different version of `command' than + `which command' says it will? + +On many systems, `which' is actually a csh script that assumes +you're running csh. In tcsh, `which' and its cousin `where' +are builtins. On other Unix systems, `which' is a perl script +that uses the PATH environment variable. + +The csh script version reads the csh startup files from your +home directory and uses those to determine which `command' will +be invoked. Since bash doesn't use any of those startup files, +there's a good chance that your bash environment differs from +your csh environment. The bash `type' builtin does everything +`which' does, and will report correct results for the running +shell. If you're really wedded to the name `which', try adding +the following function definition to your .bashrc: + + which() + { + builtin type "$@" + } + +If you're moving from tcsh and would like to bring `where' along +as well, use this function: + + where() + { + builtin type -a "$@" + } + +D2) Why doesn't bash treat brace expansions exactly like csh? + +The only difference between bash and csh brace expansion is that +bash requires a brace expression to contain at least one unquoted +comma if it is to be expanded. Any brace-surrounded word not +containing an unquoted comma is left unchanged by the brace +expansion code. This affords the greatest degree of sh +compatibility. + +Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. + +D3) Why doesn't bash have csh variable modifiers? + +Posix has specified a more powerful, albeit somewhat more cryptic, +mechanism cribbed from ksh, and bash implements it. + +${parameter%word} + Remove smallest suffix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + smallest portion of the suffix matched by the pattern deleted. + + x=file.c + echo ${x%.c}.o + -->file.o + +${parameter%%word} + + Remove largest suffix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + largest portion of the suffix matched by the pattern deleted. + + x=posix/src/std + echo ${x%%/*} + -->posix + +${parameter#word} + Remove smallest prefix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + smallest portion of the prefix matched by the pattern deleted. + + x=$HOME/src/cmd + echo ${x#$HOME} + -->/src/cmd + +${parameter##word} + Remove largest prefix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + largest portion of the prefix matched by the pattern deleted. + + x=/one/two/three + echo ${x##*/} + -->three + + +Given + a=/a/b/c/d + b=b.xxx + + csh bash result + --- ---- ------ + $a:h ${a%/*} /a/b/c + $a:t ${a##*/} d + $b:r ${b%.*} b + $b:e ${b##*.} xxx + + +D4) How can I make my csh aliases work when I convert to bash? + +Bash uses a different syntax to support aliases than csh does. +The details can be found in the documentation. We have provided +a shell script which does most of the work of conversion for you; +this script can be found in ./examples/misc/aliasconv.sh. Here is +how you use it: + +Start csh in the normal way for you. (e.g., `csh') + +Pipe the output of `alias' through `aliasconv.sh', saving the +results into `bash_aliases': + + alias | bash aliasconv.sh >bash_aliases + +Edit `bash_aliases', carefully reading through any created +functions. You will need to change the names of some csh specific +variables to the bash equivalents. The script converts $cwd to +$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt +to $PS1. You may also have to add quotes to avoid unwanted +expansion. + +For example, the csh alias: + + alias cd 'cd \!*; echo $cwd' + +is converted to the bash function: + + cd () { command cd "$@"; echo $PWD ; } + +The only thing that needs to be done is to quote $PWD: + + cd () { command cd "$@"; echo "$PWD" ; } + +Merge the edited file into your ~/.bashrc. + +There is an additional, more ambitious, script in +examples/misc/cshtobash that attempts to convert your entire csh +environment to its bash equivalent. This script can be run as +simply `cshtobash' to convert your normal interactive +environment, or as `cshtobash ~/.login' to convert your login +environment. + +D5) How can I pipe standard output and standard error from one command to + another, like csh does with `|&'? + +Use + command 2>&1 | command2 + +The key is to remember that piping is performed before redirection, so +file descriptor 1 points to the pipe when it is duplicated onto file +descriptor 2. + +D6) Now that I've converted from ksh to bash, are there equivalents to + ksh features like autoloaded functions and the `whence' command? + +There are features in ksh-88 and ksh-93 that do not have direct bash +equivalents. Most, however, can be emulated with very little trouble. + +ksh-88 feature Bash equivalent +-------------- --------------- +compiled-in aliases set up aliases in .bashrc; some ksh aliases are + bash builtins (hash, history, type) +coprocesses named pipe pairs (one for read, one for write) +typeset +f declare -F +cd, print, whence function substitutes in examples/functions/kshenv +autoloaded functions examples/functions/autoload is the same as typeset -fu +read var?prompt read -p prompt var + +ksh-93 feature Bash equivalent +-------------- --------------- +sleep, getconf Bash has loadable versions in examples/loadables +${.sh.version} $BASH_VERSION +print -f printf +hist alias hist=fc +$HISTEDIT $FCEDIT + +Section E: How can I get bash to do certain things, and why does bash do + things the way it does? + +E1) Why is the bash builtin `test' slightly different from /bin/test? + +The specific example used here is [ ! x -o x ], which is false. + +Bash's builtin `test' implements the Posix.2 spec, which can be +summarized as follows (the wording is due to David Korn): + +Here is the set of rules for processing test arguments. + + 0 Args: False + 1 Arg: True iff argument is not null. + 2 Args: If first arg is !, True iff second argument is null. + If first argument is unary, then true if unary test is true + Otherwise error. + 3 Args: If second argument is a binary operator, do binary test of $1 $3 + If first argument is !, negate two argument test of $2 $3 + If first argument is `(' and third argument is `)', do the + one-argument test of the second argument. + Otherwise error. + 4 Args: If first argument is !, negate three argument test of $2 $3 $4. + Otherwise unspecified + 5 or more Args: unspecified. (Historical shells would use their + current algorithm). + +The operators -a and -o are considered binary operators for the purpose +of the 3 Arg case. + +As you can see, the test becomes (not (x or x)), which is false. + +E2) Why does bash sometimes say `Broken pipe'? + +If a sequence of commands appears in a pipeline, and one of the +reading commands finishes before the writer has finished, the +writer receives a SIGPIPE signal. Many other shells special-case +SIGPIPE as an exit status in the pipeline and do not report it. +For example, in: + + ps -aux | head + +`head' can finish before `ps' writes all of its output, and ps +will try to write on a pipe without a reader. In that case, bash +will print `Broken pipe' to stderr when ps is killed by a +SIGPIPE. + +As of bash-3.1, bash will not report SIGPIPE errors by default. You +can build a version of bash that will report such errors. + +E3) When I have terminal escape sequences in my prompt, why does bash + wrap lines at the wrong column? + +Readline, the line editing library that bash uses, does not know +that the terminal escape sequences do not take up space on the +screen. The redisplay code assumes, unless told otherwise, that +each character in the prompt is a `printable' character that +takes up one character position on the screen. + +You can use the bash prompt expansion facility (see the PROMPTING +section in the manual page) to tell readline that sequences of +characters in the prompt strings take up no screen space. + +Use the \[ escape to begin a sequence of non-printing characters, +and the \] escape to signal the end of such a sequence. + +E4) If I pipe the output of a command into `read variable', why doesn't + the output show up in $variable when the read command finishes? + +This has to do with the parent-child relationship between Unix +processes. It affects all commands run in pipelines, not just +simple calls to `read'. For example, piping a command's output +into a `while' loop that repeatedly calls `read' will result in +the same behavior. + +Each element of a pipeline, even a builtin or shell function, +runs in a separate process, a child of the shell running the +pipeline. A subprocess cannot affect its parent's environment. +When the `read' command sets the variable to the input, that +variable is set only in the subshell, not the parent shell. When +the subshell exits, the value of the variable is lost. + +Many pipelines that end with `read variable' can be converted +into command substitutions, which will capture the output of +a specified command. The output can then be assigned to a +variable: + + grep ^gnu /usr/lib/news/active | wc -l | read ngroup + +can be converted into + + ngroup=$(grep ^gnu /usr/lib/news/active | wc -l) + +This does not, unfortunately, work to split the text among +multiple variables, as read does when given multiple variable +arguments. If you need to do this, you can either use the +command substitution above to read the output into a variable +and chop up the variable using the bash pattern removal +expansion operators or use some variant of the following +approach. + +Say /usr/local/bin/ipaddr is the following shell script: + +#! /bin/sh +host `hostname` | awk '/address/ {print $NF}' + +Instead of using + + /usr/local/bin/ipaddr | read A B C D + +to break the local machine's IP address into separate octets, use + + OIFS="$IFS" + IFS=. + set -- $(/usr/local/bin/ipaddr) + IFS="$OIFS" + A="$1" B="$2" C="$3" D="$4" + +Beware, however, that this will change the shell's positional +parameters. If you need them, you should save them before doing +this. + +This is the general approach -- in most cases you will not need to +set $IFS to a different value. + +Some other user-supplied alternatives include: + +read A B C D << HERE + $(IFS=.; echo $(/usr/local/bin/ipaddr)) +HERE + +and, where process substitution is available, + +read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr)) + +E5) I have a bunch of shell scripts that use backslash-escaped characters + in arguments to `echo'. Bash doesn't interpret these characters. Why + not, and how can I make it understand them? + +This is the behavior of echo on most Unix System V machines. + +The bash builtin `echo' is modeled after the 9th Edition +Research Unix version of `echo'. It does not interpret +backslash-escaped characters in its argument strings by default; +it requires the use of the -e option to enable the +interpretation. The System V echo provides no way to disable the +special characters; the bash echo has a -E option to disable +them. + +There is a configuration option that will make bash behave like +the System V echo and interpret things like `\t' by default. Run +configure with the --enable-xpg-echo-default option to turn this +on. Be aware that this will cause some of the tests run when you +type `make tests' to fail. + +There is a shell option, `xpg_echo', settable with `shopt', that will +change the behavior of echo at runtime. Enabling this option turns +on expansion of backslash-escape sequences. + +E6) Why doesn't a while or for loop get suspended when I type ^Z? + +This is a consequence of how job control works on Unix. The only +thing that can be suspended is the process group. This is a single +command or pipeline of commands that the shell forks and executes. + +When you run a while or for loop, the only thing that the shell forks +and executes are any commands in the while loop test and commands in +the loop bodies. These, therefore, are the only things that can be +suspended when you type ^Z. + +If you want to be able to stop the entire loop, you need to put it +within parentheses, which will force the loop into a subshell that +may be stopped (and subsequently restarted) as a single unit. + +E7) What about empty for loops in Makefiles? + +It's fairly common to see constructs like this in automatically-generated +Makefiles: + +SUBDIRS = @SUBDIRS@ + + ... + +subdirs-clean: + for d in ${SUBDIRS}; do \ + ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ + done + +When SUBDIRS is empty, this results in a command like this being passed to +bash: + + for d in ; do + ( cd $d && ${MAKE} ${MFLAGS} clean ) + done + +In versions of bash before bash-2.05a, this was a syntax error. If the +reserved word `in' was present, a word must follow it before the semicolon +or newline. The language in the manual page referring to the list of words +being empty referred to the list after it is expanded. These versions of +bash required that there be at least one word following the `in' when the +construct was parsed. + +The idiomatic Makefile solution is something like: + +SUBDIRS = @SUBDIRS@ + +subdirs-clean: + subdirs=$SUBDIRS ; for d in $$subdirs; do \ + ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ + done + +The latest updated POSIX standard has changed this: the word list +is no longer required. Bash versions 2.05a and later accept the +new syntax. + +E8) Why does the arithmetic evaluation code complain about `08'? + +The bash arithmetic evaluation code (used for `let', $(()), (()), and in +other places), interprets a leading `0' in numeric constants as denoting +an octal number, and a leading `0x' as denoting hexadecimal. This is +in accordance with the POSIX.2 spec, section 2.9.2.1, which states that +arithmetic constants should be handled as signed long integers as defined +by the ANSI/ISO C standard. + +The POSIX.2 interpretation committee has confirmed this: + +http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html + +E9) Why does the pattern matching expression [A-Z]* match files beginning + with every letter except `z'? + +Bash-2.03, Bash-2.05 and later versions honor the current locale setting +when processing ranges within pattern matching bracket expressions ([A-Z]). +This is what POSIX.2 and SUSv3/XPG6 specify. + +The behavior of the matcher in bash-2.05 and later versions depends on the +current LC_COLLATE setting. Setting this variable to `C' or `POSIX' will +result in the traditional behavior ([A-Z] matches all uppercase ASCII +characters). Many other locales, including the en_US locale (the default +on many US versions of Linux) collate the upper and lower case letters like +this: + + AaBb...Zz + +which means that [A-Z] matches every letter except `z'. Others collate like + + aAbBcC...zZ + +which means that [A-Z] matches every letter except `a'. + +The portable way to specify upper case letters is [:upper:] instead of +A-Z; lower case may be specified as [:lower:] instead of a-z. + +Look at the manual pages for setlocale(3), strcoll(3), and, if it is +present, locale(1). If you have locale(1), you can use it to find +your current locale information even if you do not have any of the +LC_ variables set. + +My advice is to put + + export LC_COLLATE=C + +into /etc/profile and inspect any shell scripts run from cron for +constructs like [A-Z]. This will prevent things like + + rm [A-Z]* + +from removing every file in the current directory except those beginning +with `z' and still allow individual users to change the collation order. +Users may put the above command into their own profiles as well, of course. + +E10) Why does `cd //' leave $PWD as `//'? + +POSIX.2, in its description of `cd', says that *three* or more leading +slashes may be replaced with a single slash when canonicalizing the +current working directory. + +This is, I presume, for historical compatibility. Certain versions of +Unix, and early network file systems, used paths of the form +//hostname/path to access `path' on server `hostname'. + +E11) If I resize my xterm while another program is running, why doesn't bash + notice the change? + +This is another issue that deals with job control. + +The kernel maintains a notion of a current terminal process group. Members +of this process group (processes whose process group ID is equal to the +current terminal process group ID) receive terminal-generated signals like +SIGWINCH. (For more details, see the JOB CONTROL section of the bash +man page.) + +If a terminal is resized, the kernel sends SIGWINCH to each member of +the terminal's current process group (the `foreground' process group). + +When bash is running with job control enabled, each pipeline (which may be +a single command) is run in its own process group, different from bash's +process group. This foreground process group receives the SIGWINCH; bash +does not. Bash has no way of knowing that the terminal has been resized. + +There is a `checkwinsize' option, settable with the `shopt' builtin, that +will cause bash to check the window size and adjust its idea of the +terminal's dimensions each time a process stops or exits and returns control +of the terminal to bash. Enable it with `shopt -s checkwinsize'. + +E12) Why don't negative offsets in substring expansion work like I expect? + +When substring expansion of the form ${param:offset[:length} is used, +an `offset' that evaluates to a number less than zero counts back from +the end of the expanded value of $param. + +When a negative `offset' begins with a minus sign, however, unexpected things +can happen. Consider + + a=12345678 + echo ${a:-4} + +intending to print the last four characters of $a. The problem is that +${param:-word} already has a well-defined meaning: expand to word if the +expanded value of param is unset or null, and $param otherwise. + +To use negative offsets that begin with a minus sign, separate the +minus sign and the colon with a space. + +Section F: Things to watch out for on certain Unix versions + +F1) Why can't I use command line editing in my `cmdtool'? + +The problem is `cmdtool' and bash fighting over the input. When +scrolling is enabled in a cmdtool window, cmdtool puts the tty in +`raw mode' to permit command-line editing using the mouse for +applications that cannot do it themselves. As a result, bash and +cmdtool each try to read keyboard input immediately, with neither +getting enough of it to be useful. + +This mode also causes cmdtool to not implement many of the +terminal functions and control sequences appearing in the +`sun-cmd' termcap entry. For a more complete explanation, see +that file examples/suncmd.termcap in the bash distribution. + +`xterm' is a better choice, and gets along with bash much more +smoothly. + +If you must use cmdtool, you can use the termcap description in +examples/suncmd.termcap. Set the TERMCAP variable to the terminal +description contained in that file, i.e. + +TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:' + +Then export TERMCAP and start a new cmdtool window from that shell. +The bash command-line editing should behave better in the new +cmdtool. If this works, you can put the assignment to TERMCAP +in your bashrc file. + +F2) I built bash on Solaris 2. Why do globbing expansions and filename + completion chop off the first few characters of each filename? + +This is the consequence of building bash on SunOS 5 and linking +with the libraries in /usr/ucblib, but using the definitions +and structures from files in /usr/include. + +The actual conflict is between the dirent structure in +/usr/include/dirent.h and the struct returned by the version of +`readdir' in libucb.a (a 4.3-BSD style `struct direct'). + +Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH +when configuring and building bash. This will ensure that you +use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you +link with libc before libucb. + +If you have installed the Sun C compiler, you may also need to +put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before +/usr/ucb. + +F3) Why does bash dump core after I interrupt username completion or + `~user' tilde expansion on a machine running NIS? + +This is a famous and long-standing bug in the SunOS YP (sorry, NIS) +client library, which is part of libc. + +The YP library code keeps static state -- a pointer into the data +returned from the server. When YP initializes itself (setpwent), +it looks at this pointer and calls free on it if it's non-null. +So far, so good. + +If one of the YP functions is interrupted during getpwent (the +exact function is interpretwithsave()), and returns NULL, the +pointer is freed without being reset to NULL, and the function +returns. The next time getpwent is called, it sees that this +pointer is non-null, calls free, and the bash free() blows up +because it's being asked to free freed memory. + +The traditional Unix mallocs allow memory to be freed multiple +times; that's probably why this has never been fixed. You can +run configure with the `--without-gnu-malloc' option to use +the C library malloc and avoid the problem. + +F4) I'm running SVR4.2. Why is the line erased every time I type `@'? + +The `@' character is the default `line kill' character in most +versions of System V, including SVR4.2. You can change this +character to whatever you want using `stty'. For example, to +change the line kill character to control-u, type + + stty kill ^U + +where the `^' and `U' can be two separate characters. + +F5) Why does bash report syntax errors when my C News scripts use a + redirection before a subshell command? + +The actual command in question is something like + + < file ( command ) + +According to the grammar given in the POSIX.2 standard, this construct +is, in fact, a syntax error. Redirections may only precede `simple +commands'. A subshell construct such as the above is one of the shell's +`compound commands'. A redirection may only follow a compound command. + +This affects the mechanical transformation of commands that use `cat' +to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on +comp.unix.shell). While most commands of the form + + cat file | command + +can be converted to `< file command', shell control structures such as +loops and subshells require `command < file'. + +The file CWRU/sh-redir-hack in the bash distribution is an +(unofficial) patch to parse.y that will modify the grammar to +support this construct. It will not apply with `patch'; you must +modify parse.y by hand. Note that if you apply this, you must +recompile with -DREDIRECTION_HACK. This introduces a large +number of reduce/reduce conflicts into the shell grammar. + +F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? + +The short answer is that Red Hat screwed up. + +The long answer is that they shipped an /etc/inputrc that only works +for emacs mode editing, and then screwed all the vi users by setting +INPUTRC to /etc/inputrc in /etc/profile. + +The short fix is to do one of the following: remove or rename +/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile, +but make sure you export it if you do), remove the assignment to +INPUTRC from /etc/profile, add + + set keymap emacs + +to the beginning of /etc/inputrc, or bracket the key bindings in +/etc/inputrc with these lines + + $if mode=emacs + [...] + $endif + +F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on + HP/UX 11.x? + +HP/UX's support for long double is imperfect at best. + +GCC will support it without problems, but the HP C library functions +like strtold(3) and printf(3) don't actually work with long doubles. +HP implemented a `long_double' type as a 4-element array of 32-bit +ints, and that is what the library functions use. The ANSI C +`long double' type is a 128-bit floating point scalar. + +The easiest fix, until HP fixes things up, is to edit the generated +config.h and #undef the HAVE_LONG_DOUBLE line. After doing that, +the compilation should complete successfully. + +Section G: How can I get bash to do certain common things? + +G1) How can I get bash to read and display eight-bit characters? + +This is a process requiring several steps. + +First, you must ensure that the `physical' data path is a full eight +bits. For xterms, for example, the `vt100' resources `eightBitInput' +and `eightBitOutput' should be set to `true'. + +Once you have set up an eight-bit path, you must tell the kernel and +tty driver to leave the eighth bit of characters alone when processing +keyboard input. Use `stty' to do this: + + stty cs8 -istrip -parenb + +For old BSD-style systems, you can use + + stty pass8 + +You may also need + + stty even odd + +Finally, you need to tell readline that you will be inputting and +displaying eight-bit characters. You use readline variables to do +this. These variables can be set in your .inputrc or using the bash +`bind' builtin. Here's an example using `bind': + + bash$ bind 'set convert-meta off' + bash$ bind 'set meta-flag on' + bash$ bind 'set output-meta on' + +The `set' commands between the single quotes may also be placed +in ~/.inputrc. + +The script examples/scripts.noah/meta.bash encapsulates the bind +commands in a shell function. + +G2) How do I write a function `x' to replace builtin command `x', but + still invoke the command from within the function? + +This is why the `command' and `builtin' builtins exist. The +`command' builtin executes the command supplied as its first +argument, skipping over any function defined with that name. The +`builtin' builtin executes the builtin command given as its first +argument directly. + +For example, to write a function to replace `cd' that writes the +hostname and current directory to an xterm title bar, use +something like the following: + + cd() + { + builtin cd "$@" && xtitle "$HOST: $PWD" + } + +This could also be written using `command' instead of `builtin'; +the version above is marginally more efficient. + +G3) How can I find the value of a shell variable whose name is the value + of another shell variable? + +Versions of Bash newer than Bash-2.0 support this directly. You can use + + ${!var} + +For example, the following sequence of commands will echo `z': + + var1=var2 + var2=z + echo ${!var1} + +For sh compatibility, use the `eval' builtin. The important +thing to remember is that `eval' expands the arguments you give +it again, so you need to quote the parts of the arguments that +you want `eval' to act on. + +For example, this expression prints the value of the last positional +parameter: + + eval echo \"\$\{$#\}\" + +The expansion of the quoted portions of this expression will be +deferred until `eval' runs, while the `$#' will be expanded +before `eval' is executed. In versions of bash later than bash-2.0, + + echo ${!#} + +does the same thing. + +This is not the same thing as ksh93 `nameref' variables, though the syntax +is similar. I may add namerefs in a future bash version. + +G4) How can I make the bash `time' reserved word print timing output that + looks like the output from my system's /usr/bin/time? + +The bash command timing code looks for a variable `TIMEFORMAT' and +uses its value as a format string to decide how to display the +timing statistics. + +The value of TIMEFORMAT is a string with `%' escapes expanded in a +fashion similar in spirit to printf(3). The manual page explains +the meanings of the escape sequences in the format string. + +If TIMEFORMAT is not set, bash acts as if the following assignment had +been performed: + + TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' + +The POSIX.2 default time format (used by `time -p command') is + + TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S' + +The BSD /usr/bin/time format can be emulated with: + + TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys' + +The System V /usr/bin/time format can be emulated with: + + TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S' + +The ksh format can be emulated with: + + TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS' + +G5) How do I get the current directory into my prompt? + +Bash provides a number of backslash-escape sequences which are expanded +when the prompt string (PS1 or PS2) is displayed. The full list is in +the manual page. + +The \w expansion gives the full pathname of the current directory, with +a tilde (`~') substituted for the current value of $HOME. The \W +expansion gives the basename of the current directory. To put the full +pathname of the current directory into the path without any tilde +subsitution, use $PWD. Here are some examples: + + PS1='\w$ ' # current directory with tilde + PS1='\W$ ' # basename of current directory + PS1='$PWD$ ' # full pathname of current directory + +The single quotes are important in the final example to prevent $PWD from +being expanded when the assignment to PS1 is performed. + +G6) How can I rename "*.foo" to "*.bar"? + +Use the pattern removal functionality described in D3. The following `for' +loop will do the trick: + + for f in *.foo; do + mv $f ${f%foo}bar + done + +G7) How can I translate a filename from uppercase to lowercase? + +The script examples/functions/lowercase, originally written by John DuBois, +will do the trick. The converse is left as an exercise. + +G8) How can I write a filename expansion (globbing) pattern that will match + all files in the current directory except "." and ".."? + +You must have set the `extglob' shell option using `shopt -s extglob' to use +this: + + echo .!(.|) * + +A solution that works without extended globbing is given in the Unix Shell +FAQ, posted periodically to comp.unix.shell. + +Section H: Where do I go from here? + +H1) How do I report bugs in bash, and where should I look for fixes and + advice? + +Use the `bashbug' script to report bugs. It is built and +installed at the same time as bash. It provides a standard +template for reporting a problem and automatically includes +information about your configuration and build environment. + +`bashbug' sends its reports to bug-bash@gnu.org, which +is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. + +Bug fixes, answers to questions, and announcements of new releases +are all posted to gnu.bash.bug. Discussions concerning bash features +and problems also take place there. + +To reach the bash maintainers directly, send mail to +bash-maintainers@gnu.org. + +H2) What kind of bash documentation is there? + +First, look in the doc directory in the bash distribution. It should +contain at least the following files: + +bash.1 an extensive, thorough Unix-style manual page +builtins.1 a manual page covering just bash builtin commands +bashref.texi a reference manual in GNU tex`info format +bashref.info an info version of the reference manual +FAQ this file +article.ms text of an article written for The Linux Journal +readline.3 a man page describing readline + +Postscript, HTML, and ASCII files created from the above source are +available in the documentation distribution. + +There is additional documentation available for anonymous FTP from host +ftp.cwru.edu in the `pub/bash' directory. + +Cameron Newham and Bill Rosenblatt have written a book on bash, published +by O'Reilly and Associates. The book is based on Bill Rosenblatt's Korn +Shell book. The title is ``Learning the Bash Shell'', and the ISBN number +of the third edition, published in March, 2005, is 0-596-00965-8. Look for +it in fine bookstores near you. This edition of the book has been updated +to cover bash-3.0. + +The GNU Bash Reference Manual has been published as a printed book by +Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Feb 2003). It covers +bash-2.0 and is available from most online bookstores (see +http://www.network-theory.co.uk/bash/manual/ for details). The publisher +will donate $1 to the Free Software Foundation for each copy sold. + +Arnold Robbins and Nelson Beebe have written ``Classic Shell Scripting'', +published by O'Reilly. The first edition, with ISBN number 0-596-00595-4, +was published in May, 2005. + +Chris F. A. Johnson, a frequent contributor to comp.unix.shell and +gnu.bash.bug, has written ``Shell Scripting Recipes: A Problem-Solution +Approach,'' a new book on shell scripting, concentrating on features of +the POSIX standard helpful to shell script writers. The first edition from +Apress, with ISBN number 1-59059-471-1, was published in May, 2005. + +H3) What's coming in future versions? + +These are features I hope to include in a future version of bash. + +Rocky Bernstein's bash debugger (support is included with bash-3.0) +associative arrays +co-processes, but with a new-style syntax that looks like function declaration + +H4) What's on the bash `wish list' for future versions? + +These are features that may or may not appear in a future version of bash. + +breaking some of the shell functionality into embeddable libraries +a module system like zsh's, using dynamic loading like builtins +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 2006. Never make predictions. + +This document is Copyright 1995-2005 by Chester Ramey. + +Permission is hereby granted, without written agreement and +without license or royalty fees, to use, copy, and distribute +this document for any purpose, provided that the above copyright +notice appears in all copies of this document and that the +contents of this document remain unaltered. diff --git a/bash-20060316/doc/FAQ-2.05a b/bash-20060316/doc/FAQ-2.05a new file mode 100644 index 000000000..3d9657717 --- /dev/null +++ b/bash-20060316/doc/FAQ-2.05a @@ -0,0 +1,1676 @@ +This is the Bash FAQ, version 3.19, for Bash version 2.05a. + +This document contains a set of frequently-asked questions concerning +Bash, the GNU Bourne-Again Shell. Bash is a freely-available command +interpreter with advanced features for both interactive use and shell +programming. + +Another good source of basic information about shells is the collection +of FAQ articles periodically posted to comp.unix.shell. + +Questions and comments concerning this document should be sent to +chet@po.cwru.edu. + +This document is available for anonymous FTP with the URL + +ftp://ftp.cwru.edu/pub/bash/FAQ + +The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html + +---------- +Contents: + +Section A: The Basics + +A1) What is it? +A2) What's the latest version? +A3) Where can I get it? +A4) On what machines will bash run? +A5) Will bash run on operating systems other than Unix? +A6) How can I build bash with gcc? +A7) How can I make bash my login shell? +A8) I just changed my login shell to bash, and now I can't FTP into my + machine. Why not? +A9) What's the `POSIX 1003.2 standard'? +A10) What is the bash `posix mode'? + +Section B: The latest version + +B1) What's new in version 2.05a? +B2) Are there any user-visible incompatibilities between bash-2.05a and + bash-1.14.7? + +Section C: Differences from other Unix shells + +C1) How does bash differ from sh, the Bourne shell? +C2) How does bash differ from the Korn shell, version ksh88? +C3) Which new features in ksh-93 are not in bash, and which are? + +Section D: Why does bash do some things differently than other Unix shells? + +D1) Why does bash run a different version of `command' than + `which command' says it will? +D2) Why doesn't bash treat brace expansions exactly like csh? +D3) Why doesn't bash have csh variable modifiers? +D4) How can I make my csh aliases work when I convert to bash? +D5) How can I pipe standard output and standard error from one command to + another, like csh does with `|&'? +D6) Now that I've converted from ksh to bash, are there equivalents to + ksh features like autoloaded functions and the `whence' command? + +Section E: Why does bash do certain things the way it does? + +E1) Why is the bash builtin `test' slightly different from /bin/test? +E2) Why does bash sometimes say `Broken pipe'? +E3) When I have terminal escape sequences in my prompt, why does bash + wrap lines at the wrong column? +E4) If I pipe the output of a command into `read variable', why doesn't + the output show up in $variable when the read command finishes? +E5) I have a bunch of shell scripts that use backslash-escaped characters + in arguments to `echo'. Bash doesn't interpret these characters. Why + not, and how can I make it understand them? +E6) Why doesn't a while or for loop get suspended when I type ^Z? +E7) What about empty for loops in Makefiles? +E8) Why does the arithmetic evaluation code complain about `08'? +E9) Why does the pattern matching expression [A-Z]* match files beginning + with every letter except `z'? +E10) Why does `cd //' leave $PWD as `//'? + +Section F: Things to watch out for on certain Unix versions + +F1) Why can't I use command line editing in my `cmdtool'? +F2) I built bash on Solaris 2. Why do globbing expansions and filename + completion chop off the first few characters of each filename? +F3) Why does bash dump core after I interrupt username completion or + `~user' tilde expansion on a machine running NIS? +F4) I'm running SVR4.2. Why is the line erased every time I type `@'? +F5) Why does bash report syntax errors when my C News scripts use a + redirection before a subshell command? +F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? +F7) Why does bash-2.05a fail to compile `printf.def' on HP/UX 11.x? + +Section G: How can I get bash to do certain common things? + +G1) How can I get bash to read and display eight-bit characters? +G2) How do I write a function `x' to replace builtin command `x', but + still invoke the command from within the function? +G3) How can I find the value of a shell variable whose name is the value + of another shell variable? +G4) How can I make the bash `time' reserved word print timing output that + looks like the output from my system's /usr/bin/time? +G5) How do I get the current directory into my prompt? +G6) How can I rename "*.foo" to "*.bar"? +G7) How can I translate a filename from uppercase to lowercase? +G8) How can I write a filename expansion (globbing) pattern that will match + all files in the current directory except "." and ".."? + +Section H: Where do I go from here? + +H1) How do I report bugs in bash, and where should I look for fixes and + advice? +H2) What kind of bash documentation is there? +H3) What's coming in future versions? +H4) What's on the bash `wish list'? +H5) When will the next release appear? + +---------- +Section A: The Basics + +A1) What is it? + +Bash is a Unix command interpreter (shell). It is an implementation of +the Posix 1003.2 shell standard, and resembles the Korn and System V +shells. + +Bash contains a number of enhancements over those shells, both +for interactive use and shell programming. Features geared +toward interactive use include command line editing, command +history, job control, aliases, and prompt expansion. Programming +features include additional variable expansions, shell +arithmetic, and a number of variables and options to control +shell behavior. + +Bash was originally written by Brian Fox of the Free Software +Foundation. The current developer and maintainer is Chet Ramey +of Case Western Reserve University. + +A2) What's the latest version? + +The latest version is 2.05a, first made available on Thursday, 15 +November, 2001. + +A3) Where can I get it? + +Bash is the GNU project's shell, and so is available from the +master GNU archive site, ftp.gnu.org, and its mirrors. The +latest version is also available for FTP from ftp.cwru.edu. +The following URLs tell how to get version 2.05a: + +ftp://ftp.gnu.org/pub/gnu/bash/bash-2.05a.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-2.05a.tar.gz + +Formatted versions of the documentation are available with the URLs: + +ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-2.05a.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-doc-2.05a.tar.gz + +A4) On what machines will bash run? + +Bash has been ported to nearly every version of UNIX. All you +should have to do to build it on a machine for which a port +exists is to type `configure' and then `make'. The build process +will attempt to discover the version of UNIX you have and tailor +itself accordingly, using a script created by GNU autoconf. + +More information appears in the file `INSTALL' in the distribution. + +The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html) +explains how to obtain binary versions of bash for most of the major +commercial Unix systems. + +A5) Will bash run on operating systems other than Unix? + +Configuration specifics for Unix-like systems such as QNX and +LynxOS are included in the distribution. Bash-2.05 and later +versions should compile and run on Minix 2.0 (patches were +contributed), but I don't believe anyone has built bash-2.x on +earlier Minix versions yet. + +Bash has been ported to versions of Windows implementing the Win32 +programming interface. This includes Windows 95 and Windows NT. +The port was done by Cygnus Solutions as part of their CYGWIN +project. For more information about the project, look at the URLs + +http://www.cygwin.com/ +http://sourceware.cygnus.com/cygwin + +Cygnus originally ported bash-1.14.7, and that port was part of their +early GNU-Win32 (the original name) releases. Cygnus has also done a +port of bash-2.05 to the CYGWIN environment, and it is available as +part of their current release. + +Bash-2.05a should require no local Cygnus changes to build and run under +CYGWIN. + +The Cygnus port works only on Intel machines. There is a port of bash +(I don't know which version) to the alpha/NT environment available from + +ftp://ftp.gnustep.org//pub/win32/bash-alpha-nt-1.01.tar.gz + +DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part +of the DJGPP project. For more information on the project, see + +http://www.delorie.com/djgpp/ + +I have been told that the original DJGPP port was done by Daisuke Aoyama. + +Mark Elbrecht has sent me notice that bash-2.04 +is available for DJGPP V2. The files are available as: + +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source + +Mark has begun to work with bash-2.05, but I don't know the status. + +Ports of bash-1.12 and bash-2.0 are available for OS/2 from + +ftp://hobbes.nmsu.edu/pub/os2/util/shell/bash_112.zip +ftp://hobbes.nmsu.edu/pub/os2/util/shell/bash-2.0(253).zip + +I haven't looked at either, but the second appears to be a binary-only +distribution. Beware. + +I have received word that Bash (I'm not sure which version, but I +believe that it's at least bash-2.02.1) is the standard shell on +BeOS. + +A6) How can I build bash with gcc? + +Bash configures to use gcc by default if it is available. Read the +file INSTALL in the distribution for more information. + +A7) How can I make bash my login shell? + +Some machines let you use `chsh' to change your login shell. Other +systems use `passwd -s' or `passwd -e'. If one of these works for +you, that's all you need. Note that many systems require the full +pathname to a shell to appear in /etc/shells before you can make it +your login shell. For this, you may need the assistance of your +friendly local system administrator. + +If you cannot do this, you can still use bash as your login shell, but +you need to perform some tricks. The basic idea is to add a command +to your login shell's startup file to replace your login shell with +bash. + +For example, if your login shell is csh or tcsh, and you have installed +bash in /usr/gnu/bin/bash, add the following line to ~/.login: + + if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login + +(the `--login' tells bash that it is a login shell). + +It's not a good idea to put this command into ~/.cshrc, because every +csh you run without the `-f' option, even ones started to run csh scripts, +reads that file. If you must put the command in ~/.cshrc, use something +like + + if ( $?prompt ) exec /usr/gnu/bin/bash --login + +to ensure that bash is exec'd only when the csh is interactive. + +If your login shell is sh or ksh, you have to do two things. + +First, create an empty file in your home directory named `.bash_profile'. +The existence of this file will prevent the exec'd bash from trying to +read ~/.profile, and re-execing itself over and over again. ~/.bash_profile +is the first file bash tries to read initialization commands from when +it is invoked as a login shell. + +Next, add a line similar to the above to ~/.profile: + + [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login + +This will cause login shells to replace themselves with bash running as +a login shell. Once you have this working, you can copy your initialization +code from ~/.profile to ~/.bash_profile. + +I have received word that the recipe supplied above is insufficient for +machines running CDE. CDE has a maze of twisty little startup files, all +slightly different. + +If you cannot change your login shell in the password file to bash, you +will have to (apparently) live with CDE using the shell in the password +file to run its startup scripts. If you have changed your shell to bash, +there is code in the CDE startup files (on Solaris, at least) that attempts +to do the right thing. It is, however, often broken, and may require that +you use the $BASH_ENV trick described below. + +`dtterm' claims to use $SHELL as the default program to start, so if you +can change $SHELL in the CDE startup files, you should be able to use bash +in your terminal windows. + +Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program +to read your login shell's startup files. You may be able to use bash for +the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as +well, but I have not tried this. + +You can use the above `exec' recipe to start bash when not logging in with +CDE by testing the value of the DT variable: + + if [ -n "$DT" ]; then + [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login + fi + +If CDE starts its shells non-interactively during login, the login shell +startup files (~/.profile, ~/.bash_profile) will not be sourced at login. +To get around this problem, append a line similar to the following to your +~/.dtprofile: + + BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV + +and add the following line to the beginning of ~/.bash_profile: + + unset BASH_ENV + +A8) I just changed my login shell to bash, and now I can't FTP into my + machine. Why not? + +You must add the full pathname to bash to the file /etc/shells. As +noted in the answer to the previous question, many systems require +this before you can make bash your login shell. + +Most versions of ftpd use this file to prohibit `special' users +such as `uucp' and `news' from using FTP. + +A9) What's the `POSIX 1003.2 standard'? + +POSIX is a name originally coined by Richard Stallman for a +family of open system standards based on UNIX. There are a +number of aspects of UNIX under consideration for +standardization, from the basic system services at the system +call and C library level to applications and tools to system +administration and management. Each area of standardization is +assigned to a working group in the 1003 series. + +The POSIX Shell and Utilities standard has been developed by IEEE +Working Group 1003.2 (POSIX.2). It concentrates on the command +interpreter interface and utility programs commonly executed from +the command line or by other programs. An initial version of the +standard has been approved and published by the IEEE, and work is +currently underway to update it. + +Bash is concerned with the aspects of the shell's behavior +defined by POSIX.2. The shell command language has of course +been standardized, including the basic flow control and program +execution constructs, I/O redirection and pipelining, argument +handling, variable expansion, and quoting. + +The `special' builtins, which must be implemented as part of the +shell to provide the desired functionality, are specified as +being part of the shell; examples of these are `eval' and +`export'. Other utilities appear in the sections of POSIX.2 not +devoted to the shell which are commonly (and in some cases must +be) implemented as builtin commands, such as `read' and `test'. +POSIX.2 also specifies aspects of the shell's interactive +behavior as part of the UPE, including job control and command +line editing. Only vi-style line editing commands have been +standardized; emacs editing commands were left out due to +objections. + +The Open Group has made an older version of its Single Unix +Specification (version 2), which is very similar to POSIX.2, +available on the web at + +http://www.opengroup.org/onlinepubs/007908799/ + +A10) What is the bash `posix mode'? + +Although bash is an implementation of the POSIX.2 shell +specification, there are areas where the bash default behavior +differs from that spec. The bash `posix mode' changes the bash +behavior in these areas so that it obeys the spec more closely. + +Posix mode is entered by starting bash with the --posix option or +executing `set -o posix' after bash is running. + +The specific aspects of bash which change when posix mode is +active are listed in the file CWRU/POSIX.NOTES in the bash +distribution. They are also listed in a section in the Bash +Reference Manual. + +Section B: The latest version + +B1) What's new in version 2.05a? + +The raison d'etre for bash-2.05a is to make an intermediate release +containing principally bug fixes (some very good work was done and +contributed after bash-2.05 was released) available before I start to +work on the major new features to be available in the next release +(bash-2.06 or bash-3.0 or whatever I tag it). As such, there are +only a few relatively minor new features. + +Bash-2.05a contains the following new features (see the manual page for +complete descriptions and the CHANGES and NEWS files in the bash-2.05a +distribution): + +o The `printf' builtin has undergone major work + +o There is a new read-only `shopt' option: login_shell, which is set by + login shells and unset otherwise + +o New `\A' prompt string escape sequence; expanding to time in 24-hour + HH:MM format + +o New `-A group/-g' option to complete and compgen; goes group name + completion + +o New [+-]O invocation option to set and unset `shopt' options at startup + +o ksh-like `ERR' trap + +o `for' loops now allow empty word lists after the `in' reserved word + +o new `hard' and `soft' arguments for the `ulimit' builtin + +o Readline can be configured to place the user at the same point on the line + when retrieving commands from the history list + +o Readline can be configured to skip `hidden' files (filenames with a leading + `.' on Unix) when performing completion + +A short feature history dating from bash-2.0: + +Bash-2.05 introduced the following new features: + +o This version has once again reverted to using locales and strcoll(3) when + processing pattern matching bracket expressions, as POSIX requires. +o Added a new `--init-file' invocation argument as a synonym for `--rcfile', + per the new GNU coding standards. +o The /dev/tcp and /dev/udp redirections now accept service names as well as + port numbers. +o `complete' and `compgen' now take a `-o value' option, which controls some + of the aspects of that compspec. Valid values are: + + default - perform bash default completion if programmable + completion produces no matches + dirnames - perform directory name completion if programmable + completion produces no matches + filenames - tell readline that the compspec produces filenames, + so it can do things like append slashes to + directory names and suppress trailing spaces +o A new loadable builtin, realpath, which canonicalizes and expands symlinks + in pathname arguments. +o When `set' is called without options, it prints function defintions in a + way that allows them to be reused as input. This affects `declare' and + `declare -p' as well. This only happens when the shell is not in POSIX + mode, since POSIX.2 forbids this behavior. + +Bash-2.04 introduced the following new features: + +o Programmable word completion with the new `complete' and `compgen' builtins; + examples are provided in examples/complete/complete-examples +o `history' has a new `-d' option to delete a history entry +o `bind' has a new `-x' option to bind key sequences to shell commands +o The prompt expansion code has new `\j' and `\l' escape sequences +o The `no_empty_cmd_completion' shell option, if enabled, inhibits + command completion when TAB is typed on an empty line +o `help' has a new `-s' option to print a usage synopsis +o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma) +o New ksh93-style arithmetic for command: + for ((expr1 ; expr2; expr3 )); do list; done +o `read' has new options: `-t', `-n', `-d', `-s' +o The redirection code handles several filenames specially: /dev/fd/N, + /dev/stdin, /dev/stdout, /dev/stderr +o The redirection code now recognizes /dev/tcp/HOST/PORT and + /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively, + to the specified port on the specified host +o The ${!prefix*} expansion has been implemented +o A new FUNCNAME variable, which expands to the name of a currently-executing + function +o The GROUPS variable is no longer readonly +o A new shopt `xpg_echo' variable, to control the behavior of echo with + respect to backslash-escape sequences at runtime +o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned + +The version of Readline released with Bash-2.04, Readline-4.1, had several +new features as well: + +o Parentheses matching is always compiled into readline, and controllable + with the new `blink-matching-paren' variable +o The history-search-forward and history-search-backward functions now leave + point at the end of the line when the search string is empty, like + reverse-search-history, and forward-search-history +o A new function for applications: rl_on_new_line_with_prompt() +o New variables for applications: rl_already_prompted, and rl_gnu_readline_p + + +Bash-2.03 had very few new features, in keeping with the convention +that odd-numbered releases provide mainly bug fixes. A number of new +features were added to Readline, mostly at the request of the Cygnus +folks. + +A new shopt option, `restricted_shell', so that startup files can test + whether or not the shell was started in restricted mode +Filename generation is now performed on the words between ( and ) in + compound array assignments (this is really a bug fix) +OLDPWD is now auto-exported, as POSIX.2 requires +ENV and BASH_ENV are read-only variables in a restricted shell +Bash may now be linked against an already-installed Readline library, + as long as the Readline library is version 4 or newer +All shells begun with the `--login' option will source the login shell + startup files, even if the shell is not interactive + +There were lots of changes to the version of the Readline library released +along with Bash-2.03. For a complete list of the changes, read the file +CHANGES in the Bash-2.03 distribution. + +Bash-2.02 contained the following new features: + +a new version of malloc (based on the old GNU malloc code in previous + bash versions) that is more page-oriented, more conservative + with memory usage, does not `orphan' large blocks when they + are freed, is usable on 64-bit machines, and has allocation + checking turned on unconditionally +POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.) +POSIX.2-style globbing equivalence classes +POSIX.2-style globbing collating symbols +the ksh [[...]] extended conditional command +the ksh egrep-style extended pattern matching operators +a new `printf' builtin +the ksh-like $(, &>, >| + prompt string special char translation and variable expansion + auto-export of variables in initial environment + command search finds functions before builtins + bash return builtin will exit a file sourced with `.' + builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -p/-t. + export -n/-f/-p/name=value, pwd -L/-P, + read -e/-p/-a/-t/-n/-d/-s, + readonly -a/-f/name=value, trap -l, set +o, + set -b/-m/-o option/-h/-p/-B/-C/-H/-P, + unset -f/-v, ulimit -m/-p/-u, + type -a/-p/-t, suspend -f, kill -n, + test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S + bash reads ~/.bashrc for interactive shells, $ENV for non-interactive + bash restricted shell mode is more extensive + bash allows functions and variables with the same name + brace expansion + tilde expansion + arithmetic expansion with $((...)) and `let' builtin + the `[[...]]' extended conditional command + process substitution + aliases and alias/unalias builtins + local variables in functions and `local' builtin + readline and command-line editing with programmable completion + command history and history/fc builtins + csh-like history expansion + other new bash builtins: bind, command, compgen, complete, builtin, + declare/typeset, dirs, enable, fc, help, + history, logout, popd, pushd, disown, shopt, + printf + exported functions + filename generation when using output redirection (command >a*) + POSIX.2-style globbing character classes + POSIX.2-style globbing equivalence classes + POSIX.2-style globbing collating symbols + egrep-like extended pattern matching operators + case-insensitive pattern matching and globbing + variable assignments preceding commands affect only that command, + even for builtins and functions + posix mode + redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr, + /dev/tcp/host/port, /dev/udp/host/port + +Things sh has that bash does not: + uses variable SHACCT to do shell accounting + includes `stop' builtin (bash can use alias stop='kill -s STOP') + `newgrp' builtin + turns on job control if called as `jsh' + $TIMEOUT (like bash $TMOUT) + `^' is a synonym for `|' + new SVR4.2 sh builtins: mldmode, priv + +Implementation differences: + redirection to/from compound commands causes sh to create a subshell + bash does not allow unbalanced quotes; sh silently inserts them at EOF + bash does not mess with signal 11 + sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100 + bash splits only the results of expansions on IFS, using POSIX.2 + field splitting rules; sh splits all words on IFS + sh does not allow MAILCHECK to be unset (?) + sh does not allow traps on SIGALRM or SIGCHLD + bash allows multiple option arguments when invoked (e.g. -x -v); + sh allows only a single option argument (`sh -x -v' attempts + to open a file named `-v', and, on SunOS 4.1.4, dumps core. + On Solaris 2.4 and earlier versions, sh goes into an infinite + loop.) + sh exits a script if any builtin fails; bash exits only if one of + the POSIX.2 `special' builtins fails + +C2) How does bash differ from the Korn shell, version ksh88? + +Things bash has or uses that ksh88 does not: + long invocation options + [-+]O invocation option + `!' reserved word + arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done + posix mode and posix conformance + command hashing + tilde expansion for assignment statements that look like $PATH + process substitution with named pipes if /dev/fd is not available + the ${!param} indirect parameter expansion operator + the ${!param*} prefix expansion operator + the ${param:offset[:length]} parameter substring operator + the ${param/pat[/string]} parameter pattern substitution operator + variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL, + TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, + HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND, + IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK, + PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE, + GROUPS, FUNCNAME, histchars, auto_resume + prompt expansion with backslash escapes and command substitution + redirection: &> (stdout and stderr) + more extensive and extensible editing and programmable completion + builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable, + exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history, + jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd, + read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p, + set -o braceexpand/-o histexpand/-o interactive-comments/ + -o notify/-o physical/-o posix/-o hashall/-o onecmd/ + -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type, + typeset -a/-F/-p, ulimit -u, umask -S, alias -p, shopt, + disown, printf, complete, compgen + `!' csh-style history expansion + POSIX.2-style globbing character classes + POSIX.2-style globbing equivalence classes + POSIX.2-style globbing collating symbols + egrep-like extended pattern matching operators + case-insensitive pattern matching and globbing + `**' arithmetic operator to do exponentiation + redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr + arrays of unlimited size + +Things ksh88 has or uses that bash does not: + tracked aliases (alias -t) + variables: ERRNO, FPATH, EDITOR, VISUAL + co-processes (|&, >&p, <&p) + weirdly-scoped functions + typeset +f to list all function names without definitions + text of command history kept in a file, not memory + builtins: alias -x, cd old new, fc -e -, newgrp, print, + read -p/-s/-u/var?prompt, set -A/-o gmacs/ + -o bgnice/-o markdirs/-o nolog/-o trackall/-o viraw/-s, + typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence + using environment to pass attributes of exported variables + arithmetic evaluation done on arguments to some builtins + reads .profile from $PWD when invoked as login shell + +Implementation differences: + ksh runs last command of a pipeline in parent shell context + bash has brace expansion by default (ksh88 compile-time option) + bash has fixed startup file for all interactive shells; ksh reads $ENV + bash has exported functions + bash command search finds functions before builtins + bash waits for all commands in pipeline to exit before returning status + emacs-mode editing has some slightly different key bindings + +C3) Which new features in ksh-93 are not in bash, and which are? + +New things in ksh-93 not in bash-2.05a: + associative arrays + floating point arithmetic and variables + math library functions + ${!name[sub]} name of subscript for associative array + `.' is allowed in variable names to create a hierarchical namespace + more extensive compound assignment syntax + discipline functions + `sleep' and `getconf' builtins (bash has loadable versions) + typeset -n and `nameref' variables + KEYBD trap + variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version, + .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT + backreferences in pattern matching (\N) + `&' operator in pattern lists for matching + print -f (bash uses printf) + `fc' has been renamed to `hist' + `.' can execute shell functions + exit statuses between 0 and 255 + set -o pipefail + `+=' variable assignment operator + TMOUT is default timeout for `read' and `select' + <&N- and >&N- redirections (combination dup and close) + FPATH and PATH mixing + getopts -a + -I invocation option + DEBUG trap now executed before each simple command, instead of after + printf %H, %P, %T, %Z modifiers, output base for %d + +New things in ksh-93 present in bash-2.05a: + for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command + ?:, ++, --, `expr1 , expr2' arithmetic operators + expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]}, + ${!param*} + compound array assignment + the `!' reserved word + loadable builtins -- but ksh uses `builtin' while bash uses `enable' + `command', `builtin', `disown' builtins + new $'...' and $"..." quoting + FIGNORE (but bash uses GLOBIGNORE), HISTCMD + set -o notify/-C + changes to kill builtin + read -A (bash uses read -a) + read -t/-d + trap -p + exec -c/-a + `.' restores the positional parameters when it completes + POSIX.2 `test' + umask -S + unalias -a + command and arithmetic substitution performed on PS1, PS4, and ENV + command name completion + ENV processed only for interactive shells + +Section D: Why does bash do some things differently than other Unix shells? + +D1) Why does bash run a different version of `command' than + `which command' says it will? + +On many systems, `which' is actually a csh script that assumes +you're running csh. In tcsh, `which' and its cousin `where' +are builtins. On other Unix systems, `which' is a perl script +that uses the PATH environment variable. + +The csh script version reads the csh startup files from your +home directory and uses those to determine which `command' will +be invoked. Since bash doesn't use any of those startup files, +there's a good chance that your bash environment differs from +your csh environment. The bash `type' builtin does everything +`which' does, and will report correct results for the running +shell. If you're really wedded to the name `which', try adding +the following function definition to your .bashrc: + + which() + { + builtin type "$@" + } + +If you're moving from tcsh and would like to bring `where' along +as well, use this function: + + where() + { + builtin type -a "$@" + } + +D2) Why doesn't bash treat brace expansions exactly like csh? + +The only difference between bash and csh brace expansion is that +bash requires a brace expression to contain at least one unquoted +comma if it is to be expanded. Any brace-surrounded word not +containing an unquoted comma is left unchanged by the brace +expansion code. This affords the greatest degree of sh +compatibility. + +Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. + +D3) Why doesn't bash have csh variable modifiers? + +Posix has specified a more powerful, albeit somewhat more cryptic, +mechanism cribbed from ksh, and bash implements it. + +${parameter%word} + Remove smallest suffix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + smallest portion of the suffix matched by the pattern deleted. + + x=file.c + echo ${x%.c}.o + -->file.o + +${parameter%%word} + + Remove largest suffix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + largest portion of the suffix matched by the pattern deleted. + + x=posix/src/std + echo ${x%%/*} + -->posix + +${parameter#word} + Remove smallest prefix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + smallest portion of the prefix matched by the pattern deleted. + + x=$HOME/src/cmd + echo ${x#$HOME} + -->/src/cmd + +${parameter##word} + Remove largest prefix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + largest portion of the prefix matched by the pattern deleted. + + x=/one/two/three + echo ${x##*/} + -->three + + +Given + a=/a/b/c/d + b=b.xxx + + csh bash result + --- ---- ------ + $a:h ${a%/*} /a/b/c + $a:t ${a##*/} d + $b:r ${b%.*} b + $b:e ${b##*.} xxx + + +D4) How can I make my csh aliases work when I convert to bash? + +Bash uses a different syntax to support aliases than csh does. +The details can be found in the documentation. We have provided +a shell script which does most of the work of conversion for you; +this script can be found in ./examples/misc/aliasconv.sh. Here is +how you use it: + +Start csh in the normal way for you. (e.g., `csh') + +Pipe the output of `alias' through `aliasconv.sh', saving the +results into `bash_aliases': + + alias | bash aliasconv.sh >bash_aliases + +Edit `bash_aliases', carefully reading through any created +functions. You will need to change the names of some csh specific +variables to the bash equivalents. The script converts $cwd to +$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt +to $PS1. You may also have to add quotes to avoid unwanted +expansion. + +For example, the csh alias: + + alias cd 'cd \!*; echo $cwd' + +is converted to the bash function: + + cd () { command cd "$@"; echo $PWD ; } + +The only thing that needs to be done is to quote $PWD: + + cd () { command cd "$@"; echo "$PWD" ; } + +Merge the edited file into your ~/.bashrc. + +There is an additional, more ambitious, script in +examples/misc/cshtobash that attempts to convert your entire csh +environment to its bash equivalent. This script can be run as +simply `cshtobash' to convert your normal interactive +environment, or as `cshtobash ~/.login' to convert your login +environment. + +D5) How can I pipe standard output and standard error from one command to + another, like csh does with `|&'? + +Use + command 2>&1 | command2 + +The key is to remember that piping is performed before redirection, so +file descriptor 1 points to the pipe when it is duplicated onto file +descriptor 2. + +D6) Now that I've converted from ksh to bash, are there equivalents to + ksh features like autoloaded functions and the `whence' command? + +There are features in ksh-88 and ksh-93 that do not have direct bash +equivalents. Most, however, can be emulated with very little trouble. + +ksh-88 feature Bash equivalent +-------------- --------------- +compiled-in aliases set up aliases in .bashrc; some ksh aliases are + bash builtins (hash, history, type) +coprocesses named pipe pairs (one for read, one for write) +typeset +f declare -F +cd, print, whence function substitutes in examples/functions/kshenv +autoloaded functions examples/functions/autoload is the same as typeset -fu +read var?prompt read -p prompt var + +ksh-93 feature Bash equivalent +-------------- --------------- +sleep, getconf Bash has loadable versions in examples/loadables +${.sh.version} $BASH_VERSION +print -f printf +hist alias fc=hist +$HISTEDIT $FCEDIT + +Section E: How can I get bash to do certain things, and why does bash do + things the way it does? + +E1) Why is the bash builtin `test' slightly different from /bin/test? + +The specific example used here is [ ! x -o x ], which is false. + +Bash's builtin `test' implements the Posix.2 spec, which can be +summarized as follows (the wording is due to David Korn): + +Here is the set of rules for processing test arguments. + + 0 Args: False + 1 Arg: True iff argument is not null. + 2 Args: If first arg is !, True iff second argument is null. + If first argument is unary, then true if unary test is true + Otherwise error. + 3 Args: If second argument is a binary operator, do binary test of $1 $3 + If first argument is !, negate two argument test of $2 $3 + If first argument is `(' and third argument is `)', do the + one-argument test of the second argument. + Otherwise error. + 4 Args: If first argument is !, negate three argument test of $2 $3 $4. + Otherwise unspecified + 5 or more Args: unspecified. (Historical shells would use their + current algorithm). + +The operators -a and -o are considered binary operators for the purpose +of the 3 Arg case. + +As you can see, the test becomes (not (x or x)), which is false. + +E2) Why does bash sometimes say `Broken pipe'? + +If a sequence of commands appears in a pipeline, and one of the +reading commands finishes before the writer has finished, the +writer receives a SIGPIPE signal. Many other shells special-case +SIGPIPE as an exit status in the pipeline and do not report it. +For example, in: + + ps -aux | head + +`head' can finish before `ps' writes all of its output, and ps +will try to write on a pipe without a reader. In that case, bash +will print `Broken pipe' to stderr when ps is killed by a +SIGPIPE. + +You can build a version of bash that will not report SIGPIPE errors +by uncommenting the definition of DONT_REPORT_SIGPIPE in the file +config-top.h. + +E3) When I have terminal escape sequences in my prompt, why does bash + wrap lines at the wrong column? + +Readline, the line editing library that bash uses, does not know +that the terminal escape sequences do not take up space on the +screen. The redisplay code assumes, unless told otherwise, that +each character in the prompt is a `printable' character that +takes up one character position on the screen. + +You can use the bash prompt expansion facility (see the PROMPTING +section in the manual page) to tell readline that sequences of +characters in the prompt strings take up no screen space. + +Use the \[ escape to begin a sequence of non-printing characters, +and the \] escape to signal the end of such a sequence. + +E4) If I pipe the output of a command into `read variable', why doesn't + the output show up in $variable when the read command finishes? + +This has to do with the parent-child relationship between Unix +processes. It affects all commands run in pipelines, not just +simple calls to `read'. For example, piping a command's output +into a `while' loop that repeatedly calls `read' will result in +the same behavior. + +Each element of a pipeline runs in a separate process, a child of +the shell running the pipeline. A subprocess cannot affect its +parent's environment. When the `read' command sets the variable +to the input, that variable is set only in the subshell, not the +parent shell. When the subshell exits, the value of the variable +is lost. + +Many pipelines that end with `read variable' can be converted +into command substitutions, which will capture the output of +a specified command. The output can then be assigned to a +variable: + + grep ^gnu /usr/lib/news/active | wc -l | read ngroup + +can be converted into + + ngroup=$(grep ^gnu /usr/lib/news/active | wc -l) + +This does not, unfortunately, work to split the text among +multiple variables, as read does when given multiple variable +arguments. If you need to do this, you can either use the +command substitution above to read the output into a variable +and chop up the variable using the bash pattern removal +expansion operators or use some variant of the following +approach. + +Say /usr/local/bin/ipaddr is the following shell script: + +#! /bin/sh +host `hostname` | awk '/address/ {print $NF}' + +Instead of using + + /usr/local/bin/ipaddr | read A B C D + +to break the local machine's IP address into separate octets, use + + OIFS="$IFS" + IFS=. + set -- $(/usr/local/bin/ipaddr) + IFS="$OIFS" + A="$1" B="$2" C="$3" D="$4" + +Beware, however, that this will change the shell's positional +parameters. If you need them, you should save them before doing +this. + +This is the general approach -- in most cases you will not need to +set $IFS to a different value. + +Some other user-supplied alternatives include: + +read A B C D << HERE + $(IFS=.; echo $(/usr/local/bin/ipaddr)) +HERE + +and, where process substitution is available, + +read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr)) + +E5) I have a bunch of shell scripts that use backslash-escaped characters + in arguments to `echo'. Bash doesn't interpret these characters. Why + not, and how can I make it understand them? + +This is the behavior of echo on most Unix System V machines. + +The bash builtin `echo' is modeled after the 9th Edition +Research Unix version of `echo'. It does not interpret +backslash-escaped characters in its argument strings by default; +it requires the use of the -e option to enable the +interpretation. The System V echo provides no way to disable the +special characters; the bash echo has a -E option to disable +them. + +There is a configuration option that will make bash behave like +the System V echo and interpret things like `\t' by default. Run +configure with the --enable-xpg-echo-default option to turn this +on. Be aware that this will cause some of the tests run when you +type `make tests' to fail. + +There is a shell option, `xpg_echo', settable with `shopt' that will +change the behavior of echo at runtime. Enabling this option turns +on expansion of backslash-escape sequences. + +E6) Why doesn't a while or for loop get suspended when I type ^Z? + +This is a consequence of how job control works on Unix. The only +thing that can be suspended is the process group. This is a single +command or pipeline of commands that the shell forks and executes. + +When you run a while or for loop, the only thing that the shell forks +and executes are any commands in the while loop test and commands in +the loop bodies. These, therefore, are the only things that can be +suspended when you type ^Z. + +If you want to be able to stop the entire loop, you need to put it +within parentheses, which will force the loop into a subshell that +may be stopped (and subsequently restarted) as a single unit. + +E7) What about empty for loops in Makefiles? + +It's fairly common to see constructs like this in automatically-generated +Makefiles: + +SUBDIRS = @SUBDIRS@ + + ... + +subdirs-clean: + for d in ${SUBDIRS}; do \ + ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ + done + +When SUBDIRS is empty, this results in a command like this being passed to +bash: + + for d in ; do + ( cd $d && ${MAKE} ${MFLAGS} clean ) + done + +In versions of bash before bash-2.05a, this was a syntax error. If the +reserved word `in' was present, a word must follow it before the semicolon +or newline. The language in the manual page referring to the list of words +being empty referred to the list after it is expanded. These versions of +bash required that there be at least one word following the `in' when the +construct was parsed. + +The idiomatic Makefile solution is something like: + +SUBDIRS = @SUBDIRS@ + +subdirs-clean: + subdirs=$SUBDIRS ; for d in $$subdirs; do \ + ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ + done + +The latest drafts of the updated POSIX standard have changed this: the +word list is no longer required. Bash versions 2.05a and later accept +the new syntax. + +E8) Why does the arithmetic evaluation code complain about `08'? + +The bash arithmetic evaluation code (used for `let', $(()), (()), and in +other places), interprets a leading `0' in numeric constants as denoting +an octal number, and a leading `0x' as denoting hexadecimal. This is +in accordance with the POSIX.2 spec, section 2.9.2.1, which states that +arithmetic constants should be handled as signed long integers as defined +by the ANSI/ISO C standard. + +The POSIX.2 interpretation committee has confirmed this: + +http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html + +E9) Why does the pattern matching expression [A-Z]* match files beginning + with every letter except `z'? + +Bash-2.05 and later versions have reverted to the bash-2.03 behavior of +honoring the current locale setting when processing ranges within pattern +matching bracket expressions ([A-Z]). This is what POSIX.2 and SUSv3/XPG6 +specify. + +The behavior of the matcher in bash-2.05 and later versions depends on the +current LC_COLLATE setting. Setting this variable to `C' or `POSIX' will +result in the traditional behavior ([A-Z] matches all uppercase ASCII +characters). Many other locales, including the en_US locale (the default +on many US versions of Linux) collate the upper and lower case letters like +this: + + AaBb...Zz + +which means that [A-Z] matches every letter except `z'. Others collate like + + aAbBcC...zZ + +which means that [A-Z] matches every letter except `a'. + +The portable way to specify upper case letters is [:upper:] instead of +A-Z; lower case may be specified as [:lower:] instead of a-z. + +Look at the manual pages for setlocale(3), strcoll(3), and, if it is +present, locale(1). If you have locale(1), you can use it to find +your current locale information even if you do not have any of the +LC_ variables set. + +My advice is to put + + export LC_COLLATE=C + +into /etc/profile and inspect any shell scripts run from cron for +constructs like [A-Z]. This will prevent things like + + rm [A-Z]* + +from removing every file in the current directory except those beginning +with `z' and still allow individual users to change the collation order. +Users may put the above command into their own profiles as well, of course. + +E10) Why does `cd //' leave $PWD as `//'? + +POSIX.2, in its description of `cd', says that *three* or more leading +slashes may be replaced with a single slash when canonicalizing the +current working directory. + +This is, I presume, for historical compatibility. Certain versions of +Unix, and early network file systems, used paths of the form +//hostname/path to access `path' on server `hostname'. + +Section F: Things to watch out for on certain Unix versions + +F1) Why can't I use command line editing in my `cmdtool'? + +The problem is `cmdtool' and bash fighting over the input. When +scrolling is enabled in a cmdtool window, cmdtool puts the tty in +`raw mode' to permit command-line editing using the mouse for +applications that cannot do it themselves. As a result, bash and +cmdtool each try to read keyboard input immediately, with neither +getting enough of it to be useful. + +This mode also causes cmdtool to not implement many of the +terminal functions and control sequences appearing in the +`sun-cmd' termcap entry. For a more complete explanation, see +that file examples/suncmd.termcap in the bash distribution. + +`xterm' is a better choice, and gets along with bash much more +smoothly. + +If you must use cmdtool, you can use the termcap description in +examples/suncmd.termcap. Set the TERMCAP variable to the terminal +description contained in that file, i.e. + +TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:' + +Then export TERMCAP and start a new cmdtool window from that shell. +The bash command-line editing should behave better in the new +cmdtool. If this works, you can put the assignment to TERMCAP +in your bashrc file. + +F2) I built bash on Solaris 2. Why do globbing expansions and filename + completion chop off the first few characters of each filename? + +This is the consequence of building bash on SunOS 5 and linking +with the libraries in /usr/ucblib, but using the definitions +and structures from files in /usr/include. + +The actual conflict is between the dirent structure in +/usr/include/dirent.h and the struct returned by the version of +`readdir' in libucb.a (a 4.3-BSD style `struct direct'). + +Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH +when configuring and building bash. This will ensure that you +use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you +link with libc before libucb. + +If you have installed the Sun C compiler, you may also need to +put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before +/usr/ucb. + +F3) Why does bash dump core after I interrupt username completion or + `~user' tilde expansion on a machine running NIS? + +This is a famous and long-standing bug in the SunOS YP (sorry, NIS) +client library, which is part of libc. + +The YP library code keeps static state -- a pointer into the data +returned from the server. When YP initializes itself (setpwent), +it looks at this pointer and calls free on it if it's non-null. +So far, so good. + +If one of the YP functions is interrupted during getpwent (the +exact function is interpretwithsave()), and returns NULL, the +pointer is freed without being reset to NULL, and the function +returns. The next time getpwent is called, it sees that this +pointer is non-null, calls free, and the bash free() blows up +because it's being asked to free freed memory. + +The traditional Unix mallocs allow memory to be freed multiple +times; that's probably why this has never been fixed. You can +run configure with the `--without-gnu-malloc' option to use +the C library malloc and avoid the problem. + +F4) I'm running SVR4.2. Why is the line erased every time I type `@'? + +The `@' character is the default `line kill' character in most +versions of System V, including SVR4.2. You can change this +character to whatever you want using `stty'. For example, to +change the line kill character to control-u, type + + stty kill ^U + +where the `^' and `U' can be two separate characters. + +F5) Why does bash report syntax errors when my C News scripts use a + redirection before a subshell command? + +The actual command in question is something like + + < file ( command ) + +According to the grammar given in the POSIX.2 standard, this construct +is, in fact, a syntax error. Redirections may only precede `simple +commands'. A subshell construct such as the above is one of the shell's +`compound commands'. A redirection may only follow a compound command. + +This affects the mechanical transformation of commands that use `cat' +to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on +comp.unix.shell). While most commands of the form + + cat file | command + +can be converted to `< file command', shell control structures such as +loops and subshells require `command < file'. + +The file CWRU/sh-redir-hack in the bash-2.05a distribution is an +(unofficial) patch to parse.y that will modify the grammar to +support this construct. It will not apply with `patch'; you must +modify parse.y by hand. Note that if you apply this, you must +recompile with -DREDIRECTION_HACK. This introduces a large +number of reduce/reduce conflicts into the shell grammar. + +F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? + +The short answer is that Red Hat screwed up. + +The long answer is that they shipped an /etc/inputrc that only works +for emacs mode editing, and then screwed all the vi users by setting +INPUTRC to /etc/inputrc in /etc/profile. + +The short fix is to do one of the following: remove or rename +/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile, +but make sure you export it if you do), remove the assignment to +INPUTRC from /etc/profile, add + + set keymap emacs + +to the beginning of /etc/inputrc, or bracket the key bindings in +/etc/inputrc with these lines + + $if mode=emacs + [...] + $endif + +F7) Why does bash-2.05a fail to compile `printf.def' on HP/UX 11.x? + +HP/UX's support for long double is imperfect at best. + +GCC will support it without problems, but the HP C library functions +like strtold(3) and printf(3) don't actually work with long doubles. +HP implemented a `long_double' type as a 4-element array of 32-bit +ints, and that is what the library functions use. The ANSI C +`long double' type is a 128-bit floating point scalar. + +The easiest fix, until HP fixes things up, is to edit the generated +config.h and #undef the HAVE_LONG_DOUBLE line. After doing that, +the compilation should complete successfully. + +Section G: How can I get bash to do certain common things? + +G1) How can I get bash to read and display eight-bit characters? + +This is a process requiring several steps. + +First, you must ensure that the `physical' data path is a full eight +bits. For xterms, for example, the `vt100' resources `eightBitInput' +and `eightBitOutput' should be set to `true'. + +Once you have set up an eight-bit path, you must tell the kernel and +tty driver to leave the eighth bit of characters alone when processing +keyboard input. Use `stty' to do this: + + stty cs8 -istrip -parenb + +For old BSD-style systems, you can use + + stty pass8 + +You may also need + + stty even odd + +Finally, you need to tell readline that you will be inputting and +displaying eight-bit characters. You use readline variables to do +this. These variables can be set in your .inputrc or using the bash +`bind' builtin. Here's an example using `bind': + + bash$ bind 'set convert-meta off' + bash$ bind 'set meta-flag on' + bash$ bind 'set output-meta on' + +The `set' commands between the single quotes may also be placed +in ~/.inputrc. + +G2) How do I write a function `x' to replace builtin command `x', but + still invoke the command from within the function? + +This is why the `command' and `builtin' builtins exist. The +`command' builtin executes the command supplied as its first +argument, skipping over any function defined with that name. The +`builtin' builtin executes the builtin command given as its first +argument directly. + +For example, to write a function to replace `cd' that writes the +hostname and current directory to an xterm title bar, use +something like the following: + + cd() + { + builtin cd "$@" && xtitle "$HOST: $PWD" + } + +This could also be written using `command' instead of `builtin'; +the version above is marginally more efficient. + +G3) How can I find the value of a shell variable whose name is the value + of another shell variable? + +Versions of Bash newer than Bash-2.0 support this directly. You can use + + ${!var} + +For example, the following sequence of commands will echo `z': + + var1=var2 + var2=z + echo ${!var1} + +For sh compatibility, use the `eval' builtin. The important +thing to remember is that `eval' expands the arguments you give +it again, so you need to quote the parts of the arguments that +you want `eval' to act on. + +For example, this expression prints the value of the last positional +parameter: + + eval echo \"\$\{$#\}\" + +The expansion of the quoted portions of this expression will be +deferred until `eval' runs, while the `$#' will be expanded +before `eval' is executed. In versions of bash later than bash-2.0, + + echo ${!#} + +does the same thing. + +This is not the same thing as ksh93 `nameref' variables, though the syntax +is similar. I may add namerefs in a future bash version. + +G4) How can I make the bash `time' reserved word print timing output that + looks like the output from my system's /usr/bin/time? + +The bash command timing code looks for a variable `TIMEFORMAT' and +uses its value as a format string to decide how to display the +timing statistics. + +The value of TIMEFORMAT is a string with `%' escapes expanded in a +fashion similar in spirit to printf(3). The manual page explains +the meanings of the escape sequences in the format string. + +If TIMEFORMAT is not set, bash acts as if the following assignment had +been performed: + + TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' + +The POSIX.2 default time format (used by `time -p command') is + + TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S' + +The BSD /usr/bin/time format can be emulated with: + + TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys' + +The System V /usr/bin/time format can be emulated with: + + TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S' + +The ksh format can be emulated with: + + TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS' + +G5) How do I get the current directory into my prompt? + +Bash provides a number of backslash-escape sequences which are expanded +when the prompt string (PS1 or PS2) is displayed. The full list is in +the manual page. + +The \w expansion gives the full pathname of the current directory, with +a tilde (`~') substituted for the current value of $HOME. The \W +expansion gives the basename of the current directory. To put the full +pathname of the current directory into the path without any tilde +subsitution, use $PWD. Here are some examples: + + PS1='\w$ ' # current directory with tilde + PS1='\W$ ' # basename of current directory + PS1='$PWD$ ' # full pathname of current directory + +The single quotes are important in the final example to prevent $PWD from +being expanded when the assignment to PS1 is performed. + +G6) How can I rename "*.foo" to "*.bar"? + +Use the pattern removal functionality described in D3. The following `for' +loop will do the trick: + + for f in *.foo; do + mv $f ${f%foo}bar + done + +G7) How can I translate a filename from uppercase to lowercase? + +The script examples/functions/lowercase, originally written by John DuBois, +will do the trick. The converse is left as an exercise. + +G8) How can I write a filename expansion (globbing) pattern that will match + all files in the current directory except "." and ".."? + +You must have set the `extglob' shell option using `shopt -s extglob' to use +this: + + echo .!(.|) * + +A solution that works without extended globbing is given in the Unix Shell +FAQ, posted periodically to comp.unix.shell. + +Section H: Where do I go from here? + +H1) How do I report bugs in bash, and where should I look for fixes and + advice? + +Use the `bashbug' script to report bugs. It is built and +installed at the same time as bash. It provides a standard +template for reporting a problem and automatically includes +information about your configuration and build environment. + +`bashbug' sends its reports to bug-bash@gnu.org, which +is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. + +Bug fixes, answers to questions, and announcements of new releases +are all posted to gnu.bash.bug. Discussions concerning bash features +and problems also take place there. + +To reach the bash maintainers directly, send mail to +bash-maintainers@gnu.org. + +H2) What kind of bash documentation is there? + +First, look in the doc directory in the bash distribution. It should +contain at least the following files: + +bash.1 an extensive, thorough Unix-style manual page +builtins.1 a manual page covering just bash builtin commands +bashref.texi a reference manual in GNU tex`info format +bashref.info an info version of the reference manual +FAQ this file +article.ms text of an article written for The Linux Journal +readline.3 a man page describing readline + +Postscript, HTML, and ASCII files created from the above source are +available in the documentation distribution. + +There is additional documentation available for anonymous FTP from host +ftp.cwru.edu in the `pub/bash' directory. + +Cameron Newham and Bill Rosenblatt have written a book on bash, published +by O'Reilly and Associates. The book is based on Bill Rosenblatt's Korn +Shell book. The title is ``Learning the Bash Shell'', and the ISBN number +is 1-56592-147-X. Look for it in fine bookstores near you. This book +covers bash-1.14, but has an appendix describing some of the new features +in bash-2.0. + +A second edition of this book is available, published in January, 1998. +The ISBN number is 1-56592-347-2. Look for it in the same fine bookstores +or on the web. + +H3) What's coming in future versions? + +These are features I hope to include in a future version of bash. + +a better bash debugger (a minimally-tested version is included with bash-2.05a) +associative arrays +changes to the DEBUG trap to be compatible with ksh93 (which runs the +trap before each simple command, instead of after each one like previous +versions) +co-processes, but with a new-style syntax that looks like function declaration + +H4) What's on the bash `wish list' for future versions? + +These are features that may or may not appear in a future version of bash. + +breaking some of the shell functionality into embeddable libraries +a module system like zsh's, using dynamic loading like builtins +better internationalization using GNU `gettext' +an option to use external files for the long `help' text +date-stamped command history +a bash programmer's guide with a chapter on creating loadable builtins +a better loadable interface to perl with access to the shell builtins and + variables (contributions gratefully accepted) +ksh93-like `nameref' variables +ksh93-like `+=' variable assignment operator +ksh93-like `xx.yy' variables (including some of the .sh.* variables) and + associated disipline functions +Some of the new ksh93 pattern matching operators, like backreferencing + +H5) When will the next release appear? + +The next version will appear sometime in 2002. Never make predictions. + + +This document is Copyright 1995-2001 by Chester Ramey. + +Permission is hereby granted, without written agreement and +without license or royalty fees, to use, copy, and distribute +this document for any purpose, provided that the above copyright +notice appears in all copies of this document and that the +contents of this document remain unaltered. diff --git a/bash-20060316/doc/FAQ-2.05b b/bash-20060316/doc/FAQ-2.05b new file mode 100644 index 000000000..f0f3d1b6b --- /dev/null +++ b/bash-20060316/doc/FAQ-2.05b @@ -0,0 +1,1771 @@ +This is the Bash FAQ, version 3.26, for Bash version 2.05b. + +This document contains a set of frequently-asked questions concerning +Bash, the GNU Bourne-Again Shell. Bash is a freely-available command +interpreter with advanced features for both interactive use and shell +programming. + +Another good source of basic information about shells is the collection +of FAQ articles periodically posted to comp.unix.shell. + +Questions and comments concerning this document should be sent to +chet@po.cwru.edu. + +This document is available for anonymous FTP with the URL + +ftp://ftp.cwru.edu/pub/bash/FAQ + +The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html + +---------- +Contents: + +Section A: The Basics + +A1) What is it? +A2) What's the latest version? +A3) Where can I get it? +A4) On what machines will bash run? +A5) Will bash run on operating systems other than Unix? +A6) How can I build bash with gcc? +A7) How can I make bash my login shell? +A8) I just changed my login shell to bash, and now I can't FTP into my + machine. Why not? +A9) What's the `POSIX Shell and Utilities standard'? +A10) What is the bash `posix mode'? + +Section B: The latest version + +B1) What's new in version 2.05b? +B2) Are there any user-visible incompatibilities between bash-2.05b and + bash-1.14.7? + +Section C: Differences from other Unix shells + +C1) How does bash differ from sh, the Bourne shell? +C2) How does bash differ from the Korn shell, version ksh88? +C3) Which new features in ksh-93 are not in bash, and which are? + +Section D: Why does bash do some things differently than other Unix shells? + +D1) Why does bash run a different version of `command' than + `which command' says it will? +D2) Why doesn't bash treat brace expansions exactly like csh? +D3) Why doesn't bash have csh variable modifiers? +D4) How can I make my csh aliases work when I convert to bash? +D5) How can I pipe standard output and standard error from one command to + another, like csh does with `|&'? +D6) Now that I've converted from ksh to bash, are there equivalents to + ksh features like autoloaded functions and the `whence' command? + +Section E: Why does bash do certain things the way it does? + +E1) Why is the bash builtin `test' slightly different from /bin/test? +E2) Why does bash sometimes say `Broken pipe'? +E3) When I have terminal escape sequences in my prompt, why does bash + wrap lines at the wrong column? +E4) If I pipe the output of a command into `read variable', why doesn't + the output show up in $variable when the read command finishes? +E5) I have a bunch of shell scripts that use backslash-escaped characters + in arguments to `echo'. Bash doesn't interpret these characters. Why + not, and how can I make it understand them? +E6) Why doesn't a while or for loop get suspended when I type ^Z? +E7) What about empty for loops in Makefiles? +E8) Why does the arithmetic evaluation code complain about `08'? +E9) Why does the pattern matching expression [A-Z]* match files beginning + with every letter except `z'? +E10) Why does `cd //' leave $PWD as `//'? +E11) If I resize my xterm while another program is running, why doesn't bash + notice the change? +E12) Why don't negative offsets in substring expansion work like I expect? + +Section F: Things to watch out for on certain Unix versions + +F1) Why can't I use command line editing in my `cmdtool'? +F2) I built bash on Solaris 2. Why do globbing expansions and filename + completion chop off the first few characters of each filename? +F3) Why does bash dump core after I interrupt username completion or + `~user' tilde expansion on a machine running NIS? +F4) I'm running SVR4.2. Why is the line erased every time I type `@'? +F5) Why does bash report syntax errors when my C News scripts use a + redirection before a subshell command? +F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? +F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on + HP/UX 11.x? + +Section G: How can I get bash to do certain common things? + +G1) How can I get bash to read and display eight-bit characters? +G2) How do I write a function `x' to replace builtin command `x', but + still invoke the command from within the function? +G3) How can I find the value of a shell variable whose name is the value + of another shell variable? +G4) How can I make the bash `time' reserved word print timing output that + looks like the output from my system's /usr/bin/time? +G5) How do I get the current directory into my prompt? +G6) How can I rename "*.foo" to "*.bar"? +G7) How can I translate a filename from uppercase to lowercase? +G8) How can I write a filename expansion (globbing) pattern that will match + all files in the current directory except "." and ".."? + +Section H: Where do I go from here? + +H1) How do I report bugs in bash, and where should I look for fixes and + advice? +H2) What kind of bash documentation is there? +H3) What's coming in future versions? +H4) What's on the bash `wish list'? +H5) When will the next release appear? + +---------- +Section A: The Basics + +A1) What is it? + +Bash is a Unix command interpreter (shell). It is an implementation of +the Posix 1003.2 shell standard, and resembles the Korn and System V +shells. + +Bash contains a number of enhancements over those shells, both +for interactive use and shell programming. Features geared +toward interactive use include command line editing, command +history, job control, aliases, and prompt expansion. Programming +features include additional variable expansions, shell +arithmetic, and a number of variables and options to control +shell behavior. + +Bash was originally written by Brian Fox of the Free Software +Foundation. The current developer and maintainer is Chet Ramey +of Case Western Reserve University. + +A2) What's the latest version? + +The latest version is 2.05b, first made available on Wednesday, 17 +July, 2002. + +A3) Where can I get it? + +Bash is the GNU project's shell, and so is available from the +master GNU archive site, ftp.gnu.org, and its mirrors. The +latest version is also available for FTP from ftp.cwru.edu. +The following URLs tell how to get version 2.05b: + +ftp://ftp.gnu.org/pub/gnu/bash/bash-2.05b.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-2.05b.tar.gz + +Formatted versions of the documentation are available with the URLs: + +ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-2.05b.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-doc-2.05b.tar.gz + +A4) On what machines will bash run? + +Bash has been ported to nearly every version of UNIX. All you +should have to do to build it on a machine for which a port +exists is to type `configure' and then `make'. The build process +will attempt to discover the version of UNIX you have and tailor +itself accordingly, using a script created by GNU autoconf. + +More information appears in the file `INSTALL' in the distribution. + +The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html) +explains how to obtain binary versions of bash for most of the major +commercial Unix systems. + +A5) Will bash run on operating systems other than Unix? + +Configuration specifics for Unix-like systems such as QNX and +LynxOS are included in the distribution. Bash-2.05 and later +versions should compile and run on Minix 2.0 (patches were +contributed), but I don't believe anyone has built bash-2.x on +earlier Minix versions yet. + +Bash has been ported to versions of Windows implementing the Win32 +programming interface. This includes Windows 95 and Windows NT. +The port was done by Cygnus Solutions as part of their CYGWIN +project. For more information about the project, look at the URLs + +http://www.cygwin.com/ +http://sourceware.cygnus.com/cygwin + +Cygnus originally ported bash-1.14.7, and that port was part of their +early GNU-Win32 (the original name) releases. Cygnus has also done a +port of bash-2.05 to the CYGWIN environment, and it is available as +part of their current release. + +Bash-2.05b should require no local Cygnus changes to build and run under +CYGWIN. + +The Cygnus port works only on Intel machines. There is a port of bash +(I don't know which version) to the alpha/NT environment available from + +ftp://ftp.gnustep.org//pub/win32/bash-alpha-nt-1.01.tar.gz + +DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part +of the DJGPP project. For more information on the project, see + +http://www.delorie.com/djgpp/ + +I have been told that the original DJGPP port was done by Daisuke Aoyama. + +Mark Elbrecht has sent me notice that bash-2.04 +is available for DJGPP V2. The files are available as: + +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source + +Mark has begun to work with bash-2.05, but I don't know the status. + +Ports of bash-1.12 and bash-2.0 are available for OS/2 from + +ftp://hobbes.nmsu.edu/pub/os2/util/shell/bash_112.zip +ftp://hobbes.nmsu.edu/pub/os2/util/shell/bash-2.0(253).zip + +I haven't looked at either, but the second appears to be a binary-only +distribution. Beware. + +I have received word that Bash (I'm not sure which version, but I +believe that it's at least bash-2.02.1) is the standard shell on +BeOS. + +A6) How can I build bash with gcc? + +Bash configures to use gcc by default if it is available. Read the +file INSTALL in the distribution for more information. + +A7) How can I make bash my login shell? + +Some machines let you use `chsh' to change your login shell. Other +systems use `passwd -s' or `passwd -e'. If one of these works for +you, that's all you need. Note that many systems require the full +pathname to a shell to appear in /etc/shells before you can make it +your login shell. For this, you may need the assistance of your +friendly local system administrator. + +If you cannot do this, you can still use bash as your login shell, but +you need to perform some tricks. The basic idea is to add a command +to your login shell's startup file to replace your login shell with +bash. + +For example, if your login shell is csh or tcsh, and you have installed +bash in /usr/gnu/bin/bash, add the following line to ~/.login: + + if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login + +(the `--login' tells bash that it is a login shell). + +It's not a good idea to put this command into ~/.cshrc, because every +csh you run without the `-f' option, even ones started to run csh scripts, +reads that file. If you must put the command in ~/.cshrc, use something +like + + if ( $?prompt ) exec /usr/gnu/bin/bash --login + +to ensure that bash is exec'd only when the csh is interactive. + +If your login shell is sh or ksh, you have to do two things. + +First, create an empty file in your home directory named `.bash_profile'. +The existence of this file will prevent the exec'd bash from trying to +read ~/.profile, and re-execing itself over and over again. ~/.bash_profile +is the first file bash tries to read initialization commands from when +it is invoked as a login shell. + +Next, add a line similar to the above to ~/.profile: + + [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \ + exec /usr/gnu/bin/bash --login + +This will cause login shells to replace themselves with bash running as +a login shell. Once you have this working, you can copy your initialization +code from ~/.profile to ~/.bash_profile. + +I have received word that the recipe supplied above is insufficient for +machines running CDE. CDE has a maze of twisty little startup files, all +slightly different. + +If you cannot change your login shell in the password file to bash, you +will have to (apparently) live with CDE using the shell in the password +file to run its startup scripts. If you have changed your shell to bash, +there is code in the CDE startup files (on Solaris, at least) that attempts +to do the right thing. It is, however, often broken, and may require that +you use the $BASH_ENV trick described below. + +`dtterm' claims to use $SHELL as the default program to start, so if you +can change $SHELL in the CDE startup files, you should be able to use bash +in your terminal windows. + +Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program +to read your login shell's startup files. You may be able to use bash for +the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as +well, but I have not tried this. + +You can use the above `exec' recipe to start bash when not logging in with +CDE by testing the value of the DT variable: + + if [ -n "$DT" ]; then + [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login + fi + +If CDE starts its shells non-interactively during login, the login shell +startup files (~/.profile, ~/.bash_profile) will not be sourced at login. +To get around this problem, append a line similar to the following to your +~/.dtprofile: + + BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV + +and add the following line to the beginning of ~/.bash_profile: + + unset BASH_ENV + +A8) I just changed my login shell to bash, and now I can't FTP into my + machine. Why not? + +You must add the full pathname to bash to the file /etc/shells. As +noted in the answer to the previous question, many systems require +this before you can make bash your login shell. + +Most versions of ftpd use this file to prohibit `special' users +such as `uucp' and `news' from using FTP. + +A9) What's the `POSIX Shell and Utilities standard'? + +POSIX is a name originally coined by Richard Stallman for a +family of open system standards based on UNIX. There are a +number of aspects of UNIX under consideration for +standardization, from the basic system services at the system +call and C library level to applications and tools to system +administration and management. Each area of standardization is +assigned to a working group in the 1003 series. + +The POSIX Shell and Utilities standard was originally developed by +IEEE Working Group 1003.2 (POSIX.2). Today it has been merged with +the original 1003.1 Working Group and is maintained by the Austin +Group (a joint working group of the IEEE, The Open Group and +ISO/IEC SC22/WG15). Today the Shell and Utilities are a volume +within the set of documents that make up IEEE Std 1003.1-2001, and +thus now the former POSIX.2 (from 1992) is now part of the current +POSIX.1 standard (POSIX 1003.1-2001). + +The Shell and Utilities volume concentrates on the command +interpreter interface and utility programs commonly executed from +the command line or by other programs. The standard is freely +available on the web at http://www.UNIX-systems.org/version3/ . +Work continues at the Austin Group on maintenance issues; see +http://www.opengroup.org/austin/ to join the discussions. + +Bash is concerned with the aspects of the shell's behavior defined +by the POSIX Shell and Utilities volume. The shell command +language has of course been standardized, including the basic flow +control and program execution constructs, I/O redirection and +pipelining, argument handling, variable expansion, and quoting. + +The `special' builtins, which must be implemented as part of the +shell to provide the desired functionality, are specified as +being part of the shell; examples of these are `eval' and +`export'. Other utilities appear in the sections of POSIX not +devoted to the shell which are commonly (and in some cases must +be) implemented as builtin commands, such as `read' and `test'. +POSIX also specifies aspects of the shell's interactive +behavior as part of the UPE, including job control and command +line editing. Only vi-style line editing commands have been +standardized; emacs editing commands were left out due to +objections. + +The latest version of the POSIX Shell and Utilities standard is +available (now updated to the 2003 Edition incorporating the +Technical Corrigendum 1), as part of the Single UNIX Specification +Version 3 at + +http://www.UNIX-systems.org/version3/ + +A10) What is the bash `posix mode'? + +Although bash is an implementation of the POSIX shell +specification, there are areas where the bash default behavior +differs from that spec. The bash `posix mode' changes the bash +behavior in these areas so that it obeys the spec more closely. + +Posix mode is entered by starting bash with the --posix or +'-o posix' option or executing `set -o posix' after bash is running. + +The specific aspects of bash which change when posix mode is +active are listed in the file POSIX in the bash distribution. +They are also listed in a section in the Bash Reference Manual +(from which that file is generated). + +Section B: The latest version + +B1) What's new in version 2.05b? + +The raison d'etre for bash-2.05b is to make a second intermediate +release containing the first of the new features to be available +in bash-3.0 and get feedback on those features before proceeding. +The major new feature is multibyte character support in both Bash +and Readline. + +Bash-2.05b contains the following new features (see the manual page for +complete descriptions and the CHANGES and NEWS files in the bash-2.05b +distribution): + +o support for multibyte characters has been added to both bash and readline + +o the DEBUG trap is now run *before* simple commands, ((...)) commands, + [[...]] conditional commands, and for ((...)) loops + +o the shell now performs arithmetic in the largest integer size the machine + supports (intmax_t) + +o there is a new \D{...} prompt expansion; passes the `...' to strftime(3) + and inserts the result into the expanded prompt + +o there is a new `here-string' redirection operator: <<< word + +o when displaying variables, function attributes and definitions are shown + separately, allowing them to be re-used as input (attempting to re-use + the old output would result in syntax errors). + +o `read' has a new `-u fd' option to read from a specified file descriptor + +o the bash debugger in examples/bashdb has been modified to work with the + new DEBUG trap semantics, the command set has been made more gdb-like, + and the changes to $LINENO make debugging functions work better + +o the expansion of $LINENO inside a shell function is only relative to the + function start if the shell is interactive -- if the shell is running a + script, $LINENO expands to the line number in the script. This is as + POSIX-2001 requires + + +A short feature history dating from Bash-2.0: + +Bash-2.05a introduced the following new features: + +o The `printf' builtin has undergone major work + +o There is a new read-only `shopt' option: login_shell, which is set by + login shells and unset otherwise + +o New `\A' prompt string escape sequence; expanding to time in 24-hour + HH:MM format + +o New `-A group/-g' option to complete and compgen; goes group name + completion + +o New [+-]O invocation option to set and unset `shopt' options at startup + +o ksh-like `ERR' trap + +o `for' loops now allow empty word lists after the `in' reserved word + +o new `hard' and `soft' arguments for the `ulimit' builtin + +o Readline can be configured to place the user at the same point on the line + when retrieving commands from the history list + +o Readline can be configured to skip `hidden' files (filenames with a leading + `.' on Unix) when performing completion + +Bash-2.05 introduced the following new features: + +o This version has once again reverted to using locales and strcoll(3) when + processing pattern matching bracket expressions, as POSIX requires. +o Added a new `--init-file' invocation argument as a synonym for `--rcfile', + per the new GNU coding standards. +o The /dev/tcp and /dev/udp redirections now accept service names as well as + port numbers. +o `complete' and `compgen' now take a `-o value' option, which controls some + of the aspects of that compspec. Valid values are: + + default - perform bash default completion if programmable + completion produces no matches + dirnames - perform directory name completion if programmable + completion produces no matches + filenames - tell readline that the compspec produces filenames, + so it can do things like append slashes to + directory names and suppress trailing spaces +o A new loadable builtin, realpath, which canonicalizes and expands symlinks + in pathname arguments. +o When `set' is called without options, it prints function defintions in a + way that allows them to be reused as input. This affects `declare' and + `declare -p' as well. This only happens when the shell is not in POSIX + mode, since POSIX.2 forbids this behavior. + +Bash-2.04 introduced the following new features: + +o Programmable word completion with the new `complete' and `compgen' builtins; + examples are provided in examples/complete/complete-examples +o `history' has a new `-d' option to delete a history entry +o `bind' has a new `-x' option to bind key sequences to shell commands +o The prompt expansion code has new `\j' and `\l' escape sequences +o The `no_empty_cmd_completion' shell option, if enabled, inhibits + command completion when TAB is typed on an empty line +o `help' has a new `-s' option to print a usage synopsis +o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma) +o New ksh93-style arithmetic for command: + for ((expr1 ; expr2; expr3 )); do list; done +o `read' has new options: `-t', `-n', `-d', `-s' +o The redirection code handles several filenames specially: /dev/fd/N, + /dev/stdin, /dev/stdout, /dev/stderr +o The redirection code now recognizes /dev/tcp/HOST/PORT and + /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively, + to the specified port on the specified host +o The ${!prefix*} expansion has been implemented +o A new FUNCNAME variable, which expands to the name of a currently-executing + function +o The GROUPS variable is no longer readonly +o A new shopt `xpg_echo' variable, to control the behavior of echo with + respect to backslash-escape sequences at runtime +o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned + +The version of Readline released with Bash-2.04, Readline-4.1, had several +new features as well: + +o Parentheses matching is always compiled into readline, and controllable + with the new `blink-matching-paren' variable +o The history-search-forward and history-search-backward functions now leave + point at the end of the line when the search string is empty, like + reverse-search-history, and forward-search-history +o A new function for applications: rl_on_new_line_with_prompt() +o New variables for applications: rl_already_prompted, and rl_gnu_readline_p + + +Bash-2.03 had very few new features, in keeping with the convention +that odd-numbered releases provide mainly bug fixes. A number of new +features were added to Readline, mostly at the request of the Cygnus +folks. + +A new shopt option, `restricted_shell', so that startup files can test + whether or not the shell was started in restricted mode +Filename generation is now performed on the words between ( and ) in + compound array assignments (this is really a bug fix) +OLDPWD is now auto-exported, as POSIX.2 requires +ENV and BASH_ENV are read-only variables in a restricted shell +Bash may now be linked against an already-installed Readline library, + as long as the Readline library is version 4 or newer +All shells begun with the `--login' option will source the login shell + startup files, even if the shell is not interactive + +There were lots of changes to the version of the Readline library released +along with Bash-2.03. For a complete list of the changes, read the file +CHANGES in the Bash-2.03 distribution. + +Bash-2.02 contained the following new features: + +a new version of malloc (based on the old GNU malloc code in previous + bash versions) that is more page-oriented, more conservative + with memory usage, does not `orphan' large blocks when they + are freed, is usable on 64-bit machines, and has allocation + checking turned on unconditionally +POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.) +POSIX.2-style globbing equivalence classes +POSIX.2-style globbing collating symbols +the ksh [[...]] extended conditional command +the ksh egrep-style extended pattern matching operators +a new `printf' builtin +the ksh-like $(, &>, >|, <<<, [n]<&word-, [n]>&word- + prompt string special char translation and variable expansion + auto-export of variables in initial environment + command search finds functions before builtins + bash return builtin will exit a file sourced with `.' + builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t. + export -n/-f/-p/name=value, pwd -L/-P, + read -e/-p/-a/-t/-n/-d/-s/-u, + readonly -a/-f/name=value, trap -l, set +o, + set -b/-m/-o option/-h/-p/-B/-C/-H/-P, + unset -f/-v, ulimit -m/-p/-u, + type -a/-p/-t/-f/-P, suspend -f, kill -n, + test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S + bash reads ~/.bashrc for interactive shells, $ENV for non-interactive + bash restricted shell mode is more extensive + bash allows functions and variables with the same name + brace expansion + tilde expansion + arithmetic expansion with $((...)) and `let' builtin + the `[[...]]' extended conditional command + process substitution + aliases and alias/unalias builtins + local variables in functions and `local' builtin + readline and command-line editing with programmable completion + command history and history/fc builtins + csh-like history expansion + other new bash builtins: bind, command, compgen, complete, builtin, + declare/typeset, dirs, enable, fc, help, + history, logout, popd, pushd, disown, shopt, + printf + exported functions + filename generation when using output redirection (command >a*) + POSIX.2-style globbing character classes + POSIX.2-style globbing equivalence classes + POSIX.2-style globbing collating symbols + egrep-like extended pattern matching operators + case-insensitive pattern matching and globbing + variable assignments preceding commands affect only that command, + even for builtins and functions + posix mode + redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr, + /dev/tcp/host/port, /dev/udp/host/port + +Things sh has that bash does not: + uses variable SHACCT to do shell accounting + includes `stop' builtin (bash can use alias stop='kill -s STOP') + `newgrp' builtin + turns on job control if called as `jsh' + $TIMEOUT (like bash $TMOUT) + `^' is a synonym for `|' + new SVR4.2 sh builtins: mldmode, priv + +Implementation differences: + redirection to/from compound commands causes sh to create a subshell + bash does not allow unbalanced quotes; sh silently inserts them at EOF + bash does not mess with signal 11 + sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100 + bash splits only the results of expansions on IFS, using POSIX.2 + field splitting rules; sh splits all words on IFS + sh does not allow MAILCHECK to be unset (?) + sh does not allow traps on SIGALRM or SIGCHLD + bash allows multiple option arguments when invoked (e.g. -x -v); + sh allows only a single option argument (`sh -x -v' attempts + to open a file named `-v', and, on SunOS 4.1.4, dumps core. + On Solaris 2.4 and earlier versions, sh goes into an infinite + loop.) + sh exits a script if any builtin fails; bash exits only if one of + the POSIX.2 `special' builtins fails + +C2) How does bash differ from the Korn shell, version ksh88? + +Things bash has or uses that ksh88 does not: + long invocation options + [-+]O invocation option + -l invocation option + `!' reserved word + arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done + arithmetic in largest machine-supported size (intmax_t) + posix mode and posix conformance + command hashing + tilde expansion for assignment statements that look like $PATH + process substitution with named pipes if /dev/fd is not available + the ${!param} indirect parameter expansion operator + the ${!param*} prefix expansion operator + the ${param:offset[:length]} parameter substring operator + the ${param/pat[/string]} parameter pattern substitution operator + variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL, + TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, + HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND, + IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK, + PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE, + GROUPS, FUNCNAME, histchars, auto_resume + prompt expansion with backslash escapes and command substitution + redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word- + more extensive and extensible editing and programmable completion + builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable, + exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history, + jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd, + read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p, + set -o braceexpand/-o histexpand/-o interactive-comments/ + -o notify/-o physical/-o posix/-o hashall/-o onecmd/ + -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type, + typeset -a/-F/-p, ulimit -u, umask -S, alias -p, shopt, + disown, printf, complete, compgen + `!' csh-style history expansion + POSIX.2-style globbing character classes + POSIX.2-style globbing equivalence classes + POSIX.2-style globbing collating symbols + egrep-like extended pattern matching operators + case-insensitive pattern matching and globbing + `**' arithmetic operator to do exponentiation + redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr + arrays of unlimited size + TMOUT is default timeout for `read' and `select' + +Things ksh88 has or uses that bash does not: + tracked aliases (alias -t) + variables: ERRNO, FPATH, EDITOR, VISUAL + co-processes (|&, >&p, <&p) + weirdly-scoped functions + typeset +f to list all function names without definitions + text of command history kept in a file, not memory + builtins: alias -x, cd old new, fc -e -, newgrp, print, + read -p/-s/var?prompt, set -A/-o gmacs/ + -o bgnice/-o markdirs/-o nolog/-o trackall/-o viraw/-s, + typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence + using environment to pass attributes of exported variables + arithmetic evaluation done on arguments to some builtins + reads .profile from $PWD when invoked as login shell + +Implementation differences: + ksh runs last command of a pipeline in parent shell context + bash has brace expansion by default (ksh88 compile-time option) + bash has fixed startup file for all interactive shells; ksh reads $ENV + bash has exported functions + bash command search finds functions before builtins + bash waits for all commands in pipeline to exit before returning status + emacs-mode editing has some slightly different key bindings + +C3) Which new features in ksh-93 are not in bash, and which are? + +New things in ksh-93 not in bash-2.05b: + associative arrays + floating point arithmetic and variables + math library functions + ${!name[sub]} name of subscript for associative array + `.' is allowed in variable names to create a hierarchical namespace + more extensive compound assignment syntax + discipline functions + `sleep' and `getconf' builtins (bash has loadable versions) + typeset -n and `nameref' variables + KEYBD trap + variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version, + .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT + backreferences in pattern matching (\N) + `&' operator in pattern lists for matching + print -f (bash uses printf) + `fc' has been renamed to `hist' + `.' can execute shell functions + exit statuses between 0 and 255 + set -o pipefail + `+=' variable assignment operator + FPATH and PATH mixing + getopts -a + -I invocation option + DEBUG trap now executed before each simple command, instead of after + printf %H, %P, %T, %Z modifiers, output base for %d + lexical scoping for local variables in `ksh' functions + no scoping for local variables in `POSIX' functions + +New things in ksh-93 present in bash-2.05b: + [n]<&word- and [n]>&word- redirections (combination dup and close) + for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command + ?:, ++, --, `expr1 , expr2' arithmetic operators + expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]}, + ${!param*} + compound array assignment + the `!' reserved word + loadable builtins -- but ksh uses `builtin' while bash uses `enable' + `command', `builtin', `disown' builtins + new $'...' and $"..." quoting + FIGNORE (but bash uses GLOBIGNORE), HISTCMD + set -o notify/-C + changes to kill builtin + read -A (bash uses read -a) + read -t/-d + trap -p + exec -c/-a + `.' restores the positional parameters when it completes + POSIX.2 `test' + umask -S + unalias -a + command and arithmetic substitution performed on PS1, PS4, and ENV + command name completion + ENV processed only for interactive shells + +Section D: Why does bash do some things differently than other Unix shells? + +D1) Why does bash run a different version of `command' than + `which command' says it will? + +On many systems, `which' is actually a csh script that assumes +you're running csh. In tcsh, `which' and its cousin `where' +are builtins. On other Unix systems, `which' is a perl script +that uses the PATH environment variable. + +The csh script version reads the csh startup files from your +home directory and uses those to determine which `command' will +be invoked. Since bash doesn't use any of those startup files, +there's a good chance that your bash environment differs from +your csh environment. The bash `type' builtin does everything +`which' does, and will report correct results for the running +shell. If you're really wedded to the name `which', try adding +the following function definition to your .bashrc: + + which() + { + builtin type "$@" + } + +If you're moving from tcsh and would like to bring `where' along +as well, use this function: + + where() + { + builtin type -a "$@" + } + +D2) Why doesn't bash treat brace expansions exactly like csh? + +The only difference between bash and csh brace expansion is that +bash requires a brace expression to contain at least one unquoted +comma if it is to be expanded. Any brace-surrounded word not +containing an unquoted comma is left unchanged by the brace +expansion code. This affords the greatest degree of sh +compatibility. + +Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. + +D3) Why doesn't bash have csh variable modifiers? + +Posix has specified a more powerful, albeit somewhat more cryptic, +mechanism cribbed from ksh, and bash implements it. + +${parameter%word} + Remove smallest suffix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + smallest portion of the suffix matched by the pattern deleted. + + x=file.c + echo ${x%.c}.o + -->file.o + +${parameter%%word} + + Remove largest suffix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + largest portion of the suffix matched by the pattern deleted. + + x=posix/src/std + echo ${x%%/*} + -->posix + +${parameter#word} + Remove smallest prefix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + smallest portion of the prefix matched by the pattern deleted. + + x=$HOME/src/cmd + echo ${x#$HOME} + -->/src/cmd + +${parameter##word} + Remove largest prefix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + largest portion of the prefix matched by the pattern deleted. + + x=/one/two/three + echo ${x##*/} + -->three + + +Given + a=/a/b/c/d + b=b.xxx + + csh bash result + --- ---- ------ + $a:h ${a%/*} /a/b/c + $a:t ${a##*/} d + $b:r ${b%.*} b + $b:e ${b##*.} xxx + + +D4) How can I make my csh aliases work when I convert to bash? + +Bash uses a different syntax to support aliases than csh does. +The details can be found in the documentation. We have provided +a shell script which does most of the work of conversion for you; +this script can be found in ./examples/misc/aliasconv.sh. Here is +how you use it: + +Start csh in the normal way for you. (e.g., `csh') + +Pipe the output of `alias' through `aliasconv.sh', saving the +results into `bash_aliases': + + alias | bash aliasconv.sh >bash_aliases + +Edit `bash_aliases', carefully reading through any created +functions. You will need to change the names of some csh specific +variables to the bash equivalents. The script converts $cwd to +$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt +to $PS1. You may also have to add quotes to avoid unwanted +expansion. + +For example, the csh alias: + + alias cd 'cd \!*; echo $cwd' + +is converted to the bash function: + + cd () { command cd "$@"; echo $PWD ; } + +The only thing that needs to be done is to quote $PWD: + + cd () { command cd "$@"; echo "$PWD" ; } + +Merge the edited file into your ~/.bashrc. + +There is an additional, more ambitious, script in +examples/misc/cshtobash that attempts to convert your entire csh +environment to its bash equivalent. This script can be run as +simply `cshtobash' to convert your normal interactive +environment, or as `cshtobash ~/.login' to convert your login +environment. + +D5) How can I pipe standard output and standard error from one command to + another, like csh does with `|&'? + +Use + command 2>&1 | command2 + +The key is to remember that piping is performed before redirection, so +file descriptor 1 points to the pipe when it is duplicated onto file +descriptor 2. + +D6) Now that I've converted from ksh to bash, are there equivalents to + ksh features like autoloaded functions and the `whence' command? + +There are features in ksh-88 and ksh-93 that do not have direct bash +equivalents. Most, however, can be emulated with very little trouble. + +ksh-88 feature Bash equivalent +-------------- --------------- +compiled-in aliases set up aliases in .bashrc; some ksh aliases are + bash builtins (hash, history, type) +coprocesses named pipe pairs (one for read, one for write) +typeset +f declare -F +cd, print, whence function substitutes in examples/functions/kshenv +autoloaded functions examples/functions/autoload is the same as typeset -fu +read var?prompt read -p prompt var + +ksh-93 feature Bash equivalent +-------------- --------------- +sleep, getconf Bash has loadable versions in examples/loadables +${.sh.version} $BASH_VERSION +print -f printf +hist alias hist=fc +$HISTEDIT $FCEDIT + +Section E: How can I get bash to do certain things, and why does bash do + things the way it does? + +E1) Why is the bash builtin `test' slightly different from /bin/test? + +The specific example used here is [ ! x -o x ], which is false. + +Bash's builtin `test' implements the Posix.2 spec, which can be +summarized as follows (the wording is due to David Korn): + +Here is the set of rules for processing test arguments. + + 0 Args: False + 1 Arg: True iff argument is not null. + 2 Args: If first arg is !, True iff second argument is null. + If first argument is unary, then true if unary test is true + Otherwise error. + 3 Args: If second argument is a binary operator, do binary test of $1 $3 + If first argument is !, negate two argument test of $2 $3 + If first argument is `(' and third argument is `)', do the + one-argument test of the second argument. + Otherwise error. + 4 Args: If first argument is !, negate three argument test of $2 $3 $4. + Otherwise unspecified + 5 or more Args: unspecified. (Historical shells would use their + current algorithm). + +The operators -a and -o are considered binary operators for the purpose +of the 3 Arg case. + +As you can see, the test becomes (not (x or x)), which is false. + +E2) Why does bash sometimes say `Broken pipe'? + +If a sequence of commands appears in a pipeline, and one of the +reading commands finishes before the writer has finished, the +writer receives a SIGPIPE signal. Many other shells special-case +SIGPIPE as an exit status in the pipeline and do not report it. +For example, in: + + ps -aux | head + +`head' can finish before `ps' writes all of its output, and ps +will try to write on a pipe without a reader. In that case, bash +will print `Broken pipe' to stderr when ps is killed by a +SIGPIPE. + +You can build a version of bash that will not report SIGPIPE errors +by uncommenting the definition of DONT_REPORT_SIGPIPE in the file +config-top.h. + +E3) When I have terminal escape sequences in my prompt, why does bash + wrap lines at the wrong column? + +Readline, the line editing library that bash uses, does not know +that the terminal escape sequences do not take up space on the +screen. The redisplay code assumes, unless told otherwise, that +each character in the prompt is a `printable' character that +takes up one character position on the screen. + +You can use the bash prompt expansion facility (see the PROMPTING +section in the manual page) to tell readline that sequences of +characters in the prompt strings take up no screen space. + +Use the \[ escape to begin a sequence of non-printing characters, +and the \] escape to signal the end of such a sequence. + +E4) If I pipe the output of a command into `read variable', why doesn't + the output show up in $variable when the read command finishes? + +This has to do with the parent-child relationship between Unix +processes. It affects all commands run in pipelines, not just +simple calls to `read'. For example, piping a command's output +into a `while' loop that repeatedly calls `read' will result in +the same behavior. + +Each element of a pipeline runs in a separate process, a child of +the shell running the pipeline. A subprocess cannot affect its +parent's environment. When the `read' command sets the variable +to the input, that variable is set only in the subshell, not the +parent shell. When the subshell exits, the value of the variable +is lost. + +Many pipelines that end with `read variable' can be converted +into command substitutions, which will capture the output of +a specified command. The output can then be assigned to a +variable: + + grep ^gnu /usr/lib/news/active | wc -l | read ngroup + +can be converted into + + ngroup=$(grep ^gnu /usr/lib/news/active | wc -l) + +This does not, unfortunately, work to split the text among +multiple variables, as read does when given multiple variable +arguments. If you need to do this, you can either use the +command substitution above to read the output into a variable +and chop up the variable using the bash pattern removal +expansion operators or use some variant of the following +approach. + +Say /usr/local/bin/ipaddr is the following shell script: + +#! /bin/sh +host `hostname` | awk '/address/ {print $NF}' + +Instead of using + + /usr/local/bin/ipaddr | read A B C D + +to break the local machine's IP address into separate octets, use + + OIFS="$IFS" + IFS=. + set -- $(/usr/local/bin/ipaddr) + IFS="$OIFS" + A="$1" B="$2" C="$3" D="$4" + +Beware, however, that this will change the shell's positional +parameters. If you need them, you should save them before doing +this. + +This is the general approach -- in most cases you will not need to +set $IFS to a different value. + +Some other user-supplied alternatives include: + +read A B C D << HERE + $(IFS=.; echo $(/usr/local/bin/ipaddr)) +HERE + +and, where process substitution is available, + +read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr)) + +E5) I have a bunch of shell scripts that use backslash-escaped characters + in arguments to `echo'. Bash doesn't interpret these characters. Why + not, and how can I make it understand them? + +This is the behavior of echo on most Unix System V machines. + +The bash builtin `echo' is modeled after the 9th Edition +Research Unix version of `echo'. It does not interpret +backslash-escaped characters in its argument strings by default; +it requires the use of the -e option to enable the +interpretation. The System V echo provides no way to disable the +special characters; the bash echo has a -E option to disable +them. + +There is a configuration option that will make bash behave like +the System V echo and interpret things like `\t' by default. Run +configure with the --enable-xpg-echo-default option to turn this +on. Be aware that this will cause some of the tests run when you +type `make tests' to fail. + +There is a shell option, `xpg_echo', settable with `shopt', that will +change the behavior of echo at runtime. Enabling this option turns +on expansion of backslash-escape sequences. + +E6) Why doesn't a while or for loop get suspended when I type ^Z? + +This is a consequence of how job control works on Unix. The only +thing that can be suspended is the process group. This is a single +command or pipeline of commands that the shell forks and executes. + +When you run a while or for loop, the only thing that the shell forks +and executes are any commands in the while loop test and commands in +the loop bodies. These, therefore, are the only things that can be +suspended when you type ^Z. + +If you want to be able to stop the entire loop, you need to put it +within parentheses, which will force the loop into a subshell that +may be stopped (and subsequently restarted) as a single unit. + +E7) What about empty for loops in Makefiles? + +It's fairly common to see constructs like this in automatically-generated +Makefiles: + +SUBDIRS = @SUBDIRS@ + + ... + +subdirs-clean: + for d in ${SUBDIRS}; do \ + ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ + done + +When SUBDIRS is empty, this results in a command like this being passed to +bash: + + for d in ; do + ( cd $d && ${MAKE} ${MFLAGS} clean ) + done + +In versions of bash before bash-2.05a, this was a syntax error. If the +reserved word `in' was present, a word must follow it before the semicolon +or newline. The language in the manual page referring to the list of words +being empty referred to the list after it is expanded. These versions of +bash required that there be at least one word following the `in' when the +construct was parsed. + +The idiomatic Makefile solution is something like: + +SUBDIRS = @SUBDIRS@ + +subdirs-clean: + subdirs=$SUBDIRS ; for d in $$subdirs; do \ + ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ + done + +The latest drafts of the updated POSIX standard have changed this: the +word list is no longer required. Bash versions 2.05a and later accept +the new syntax. + +E8) Why does the arithmetic evaluation code complain about `08'? + +The bash arithmetic evaluation code (used for `let', $(()), (()), and in +other places), interprets a leading `0' in numeric constants as denoting +an octal number, and a leading `0x' as denoting hexadecimal. This is +in accordance with the POSIX.2 spec, section 2.9.2.1, which states that +arithmetic constants should be handled as signed long integers as defined +by the ANSI/ISO C standard. + +The POSIX.2 interpretation committee has confirmed this: + +http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html + +E9) Why does the pattern matching expression [A-Z]* match files beginning + with every letter except `z'? + +Bash-2.03, Bash-2.05 and later versions honor the current locale setting +when processing ranges within pattern matching bracket expressions ([A-Z]). +This is what POSIX.2 and SUSv3/XPG6 specify. + +The behavior of the matcher in bash-2.05 and later versions depends on the +current LC_COLLATE setting. Setting this variable to `C' or `POSIX' will +result in the traditional behavior ([A-Z] matches all uppercase ASCII +characters). Many other locales, including the en_US locale (the default +on many US versions of Linux) collate the upper and lower case letters like +this: + + AaBb...Zz + +which means that [A-Z] matches every letter except `z'. Others collate like + + aAbBcC...zZ + +which means that [A-Z] matches every letter except `a'. + +The portable way to specify upper case letters is [:upper:] instead of +A-Z; lower case may be specified as [:lower:] instead of a-z. + +Look at the manual pages for setlocale(3), strcoll(3), and, if it is +present, locale(1). If you have locale(1), you can use it to find +your current locale information even if you do not have any of the +LC_ variables set. + +My advice is to put + + export LC_COLLATE=C + +into /etc/profile and inspect any shell scripts run from cron for +constructs like [A-Z]. This will prevent things like + + rm [A-Z]* + +from removing every file in the current directory except those beginning +with `z' and still allow individual users to change the collation order. +Users may put the above command into their own profiles as well, of course. + +E10) Why does `cd //' leave $PWD as `//'? + +POSIX.2, in its description of `cd', says that *three* or more leading +slashes may be replaced with a single slash when canonicalizing the +current working directory. + +This is, I presume, for historical compatibility. Certain versions of +Unix, and early network file systems, used paths of the form +//hostname/path to access `path' on server `hostname'. + +E11) If I resize my xterm while another program is running, why doesn't bash + notice the change? + +This is another issue that deals with job control. + +The kernel maintains a notion of a current terminal process group. Members +of this process group (processes whose process group ID is equal to the +current terminal process group ID) receive terminal-generated signals like +SIGWINCH. (For more details, see the JOB CONTROL section of the bash +man page.) + +If a terminal is resized, the kernel sends SIGWINCH to each member of +the terminal's current process group (the `foreground' process group). + +When bash is running with job control enabled, each pipeline (which may be +a single command) is run in its own process group, different from bash's +process group. This foreground process group receives the SIGWINCH; bash +does not. Bash has no way of knowing that the terminal has been resized. + +There is a `checkwinsize' option, settable with the `shopt' builtin, that +will cause bash to check the window size and adjust its idea of the +terminal's dimensions each time a process stops or exits and returns control +of the terminal to bash. Enable it with `shopt -s checkwinsize'. + +E12) Why don't negative offsets in substring expansion work like I expect? + +When substring expansion of the form ${param:offset[:length} is used, +an `offset' that evaluates to a number less than zero counts back from +the end of the expanded value of $param. + +When a negative `offset' begins with a minus sign, however, unexpected things +can happen. Consider + + a=12345678 + echo ${a:-4} + +intending to print the last four characters of $a. The problem is that +${param:-word} already has a well-defined meaning: expand to word if the +expanded value of param is unset or null, and $param otherwise. + +To use negative offsets that begin with a minus sign, separate the +minus sign and the colon with a space. + +Section F: Things to watch out for on certain Unix versions + +F1) Why can't I use command line editing in my `cmdtool'? + +The problem is `cmdtool' and bash fighting over the input. When +scrolling is enabled in a cmdtool window, cmdtool puts the tty in +`raw mode' to permit command-line editing using the mouse for +applications that cannot do it themselves. As a result, bash and +cmdtool each try to read keyboard input immediately, with neither +getting enough of it to be useful. + +This mode also causes cmdtool to not implement many of the +terminal functions and control sequences appearing in the +`sun-cmd' termcap entry. For a more complete explanation, see +that file examples/suncmd.termcap in the bash distribution. + +`xterm' is a better choice, and gets along with bash much more +smoothly. + +If you must use cmdtool, you can use the termcap description in +examples/suncmd.termcap. Set the TERMCAP variable to the terminal +description contained in that file, i.e. + +TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:' + +Then export TERMCAP and start a new cmdtool window from that shell. +The bash command-line editing should behave better in the new +cmdtool. If this works, you can put the assignment to TERMCAP +in your bashrc file. + +F2) I built bash on Solaris 2. Why do globbing expansions and filename + completion chop off the first few characters of each filename? + +This is the consequence of building bash on SunOS 5 and linking +with the libraries in /usr/ucblib, but using the definitions +and structures from files in /usr/include. + +The actual conflict is between the dirent structure in +/usr/include/dirent.h and the struct returned by the version of +`readdir' in libucb.a (a 4.3-BSD style `struct direct'). + +Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH +when configuring and building bash. This will ensure that you +use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you +link with libc before libucb. + +If you have installed the Sun C compiler, you may also need to +put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before +/usr/ucb. + +F3) Why does bash dump core after I interrupt username completion or + `~user' tilde expansion on a machine running NIS? + +This is a famous and long-standing bug in the SunOS YP (sorry, NIS) +client library, which is part of libc. + +The YP library code keeps static state -- a pointer into the data +returned from the server. When YP initializes itself (setpwent), +it looks at this pointer and calls free on it if it's non-null. +So far, so good. + +If one of the YP functions is interrupted during getpwent (the +exact function is interpretwithsave()), and returns NULL, the +pointer is freed without being reset to NULL, and the function +returns. The next time getpwent is called, it sees that this +pointer is non-null, calls free, and the bash free() blows up +because it's being asked to free freed memory. + +The traditional Unix mallocs allow memory to be freed multiple +times; that's probably why this has never been fixed. You can +run configure with the `--without-gnu-malloc' option to use +the C library malloc and avoid the problem. + +F4) I'm running SVR4.2. Why is the line erased every time I type `@'? + +The `@' character is the default `line kill' character in most +versions of System V, including SVR4.2. You can change this +character to whatever you want using `stty'. For example, to +change the line kill character to control-u, type + + stty kill ^U + +where the `^' and `U' can be two separate characters. + +F5) Why does bash report syntax errors when my C News scripts use a + redirection before a subshell command? + +The actual command in question is something like + + < file ( command ) + +According to the grammar given in the POSIX.2 standard, this construct +is, in fact, a syntax error. Redirections may only precede `simple +commands'. A subshell construct such as the above is one of the shell's +`compound commands'. A redirection may only follow a compound command. + +This affects the mechanical transformation of commands that use `cat' +to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on +comp.unix.shell). While most commands of the form + + cat file | command + +can be converted to `< file command', shell control structures such as +loops and subshells require `command < file'. + +The file CWRU/sh-redir-hack in the bash-2.05a distribution is an +(unofficial) patch to parse.y that will modify the grammar to +support this construct. It will not apply with `patch'; you must +modify parse.y by hand. Note that if you apply this, you must +recompile with -DREDIRECTION_HACK. This introduces a large +number of reduce/reduce conflicts into the shell grammar. + +F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? + +The short answer is that Red Hat screwed up. + +The long answer is that they shipped an /etc/inputrc that only works +for emacs mode editing, and then screwed all the vi users by setting +INPUTRC to /etc/inputrc in /etc/profile. + +The short fix is to do one of the following: remove or rename +/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile, +but make sure you export it if you do), remove the assignment to +INPUTRC from /etc/profile, add + + set keymap emacs + +to the beginning of /etc/inputrc, or bracket the key bindings in +/etc/inputrc with these lines + + $if mode=emacs + [...] + $endif + +F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on + HP/UX 11.x? + +HP/UX's support for long double is imperfect at best. + +GCC will support it without problems, but the HP C library functions +like strtold(3) and printf(3) don't actually work with long doubles. +HP implemented a `long_double' type as a 4-element array of 32-bit +ints, and that is what the library functions use. The ANSI C +`long double' type is a 128-bit floating point scalar. + +The easiest fix, until HP fixes things up, is to edit the generated +config.h and #undef the HAVE_LONG_DOUBLE line. After doing that, +the compilation should complete successfully. + +Section G: How can I get bash to do certain common things? + +G1) How can I get bash to read and display eight-bit characters? + +This is a process requiring several steps. + +First, you must ensure that the `physical' data path is a full eight +bits. For xterms, for example, the `vt100' resources `eightBitInput' +and `eightBitOutput' should be set to `true'. + +Once you have set up an eight-bit path, you must tell the kernel and +tty driver to leave the eighth bit of characters alone when processing +keyboard input. Use `stty' to do this: + + stty cs8 -istrip -parenb + +For old BSD-style systems, you can use + + stty pass8 + +You may also need + + stty even odd + +Finally, you need to tell readline that you will be inputting and +displaying eight-bit characters. You use readline variables to do +this. These variables can be set in your .inputrc or using the bash +`bind' builtin. Here's an example using `bind': + + bash$ bind 'set convert-meta off' + bash$ bind 'set meta-flag on' + bash$ bind 'set output-meta on' + +The `set' commands between the single quotes may also be placed +in ~/.inputrc. + +G2) How do I write a function `x' to replace builtin command `x', but + still invoke the command from within the function? + +This is why the `command' and `builtin' builtins exist. The +`command' builtin executes the command supplied as its first +argument, skipping over any function defined with that name. The +`builtin' builtin executes the builtin command given as its first +argument directly. + +For example, to write a function to replace `cd' that writes the +hostname and current directory to an xterm title bar, use +something like the following: + + cd() + { + builtin cd "$@" && xtitle "$HOST: $PWD" + } + +This could also be written using `command' instead of `builtin'; +the version above is marginally more efficient. + +G3) How can I find the value of a shell variable whose name is the value + of another shell variable? + +Versions of Bash newer than Bash-2.0 support this directly. You can use + + ${!var} + +For example, the following sequence of commands will echo `z': + + var1=var2 + var2=z + echo ${!var1} + +For sh compatibility, use the `eval' builtin. The important +thing to remember is that `eval' expands the arguments you give +it again, so you need to quote the parts of the arguments that +you want `eval' to act on. + +For example, this expression prints the value of the last positional +parameter: + + eval echo \"\$\{$#\}\" + +The expansion of the quoted portions of this expression will be +deferred until `eval' runs, while the `$#' will be expanded +before `eval' is executed. In versions of bash later than bash-2.0, + + echo ${!#} + +does the same thing. + +This is not the same thing as ksh93 `nameref' variables, though the syntax +is similar. I may add namerefs in a future bash version. + +G4) How can I make the bash `time' reserved word print timing output that + looks like the output from my system's /usr/bin/time? + +The bash command timing code looks for a variable `TIMEFORMAT' and +uses its value as a format string to decide how to display the +timing statistics. + +The value of TIMEFORMAT is a string with `%' escapes expanded in a +fashion similar in spirit to printf(3). The manual page explains +the meanings of the escape sequences in the format string. + +If TIMEFORMAT is not set, bash acts as if the following assignment had +been performed: + + TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' + +The POSIX.2 default time format (used by `time -p command') is + + TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S' + +The BSD /usr/bin/time format can be emulated with: + + TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys' + +The System V /usr/bin/time format can be emulated with: + + TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S' + +The ksh format can be emulated with: + + TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS' + +G5) How do I get the current directory into my prompt? + +Bash provides a number of backslash-escape sequences which are expanded +when the prompt string (PS1 or PS2) is displayed. The full list is in +the manual page. + +The \w expansion gives the full pathname of the current directory, with +a tilde (`~') substituted for the current value of $HOME. The \W +expansion gives the basename of the current directory. To put the full +pathname of the current directory into the path without any tilde +subsitution, use $PWD. Here are some examples: + + PS1='\w$ ' # current directory with tilde + PS1='\W$ ' # basename of current directory + PS1='$PWD$ ' # full pathname of current directory + +The single quotes are important in the final example to prevent $PWD from +being expanded when the assignment to PS1 is performed. + +G6) How can I rename "*.foo" to "*.bar"? + +Use the pattern removal functionality described in D3. The following `for' +loop will do the trick: + + for f in *.foo; do + mv $f ${f%foo}bar + done + +G7) How can I translate a filename from uppercase to lowercase? + +The script examples/functions/lowercase, originally written by John DuBois, +will do the trick. The converse is left as an exercise. + +G8) How can I write a filename expansion (globbing) pattern that will match + all files in the current directory except "." and ".."? + +You must have set the `extglob' shell option using `shopt -s extglob' to use +this: + + echo .!(.|) * + +A solution that works without extended globbing is given in the Unix Shell +FAQ, posted periodically to comp.unix.shell. + +Section H: Where do I go from here? + +H1) How do I report bugs in bash, and where should I look for fixes and + advice? + +Use the `bashbug' script to report bugs. It is built and +installed at the same time as bash. It provides a standard +template for reporting a problem and automatically includes +information about your configuration and build environment. + +`bashbug' sends its reports to bug-bash@gnu.org, which +is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. + +Bug fixes, answers to questions, and announcements of new releases +are all posted to gnu.bash.bug. Discussions concerning bash features +and problems also take place there. + +To reach the bash maintainers directly, send mail to +bash-maintainers@gnu.org. + +H2) What kind of bash documentation is there? + +First, look in the doc directory in the bash distribution. It should +contain at least the following files: + +bash.1 an extensive, thorough Unix-style manual page +builtins.1 a manual page covering just bash builtin commands +bashref.texi a reference manual in GNU tex`info format +bashref.info an info version of the reference manual +FAQ this file +article.ms text of an article written for The Linux Journal +readline.3 a man page describing readline + +Postscript, HTML, and ASCII files created from the above source are +available in the documentation distribution. + +There is additional documentation available for anonymous FTP from host +ftp.cwru.edu in the `pub/bash' directory. + +Cameron Newham and Bill Rosenblatt have written a book on bash, published +by O'Reilly and Associates. The book is based on Bill Rosenblatt's Korn +Shell book. The title is ``Learning the Bash Shell'', and the ISBN number +is 1-56592-147-X. Look for it in fine bookstores near you. This book +covers bash-1.14, but has an appendix describing some of the new features +in bash-2.0. + +A second edition of this book is available, published in January, 1998. +The ISBN number is 1-56592-347-2. Look for it in the same fine bookstores +or on the web. + +The GNU Bash Reference Manual has been published as a printed book by +Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Feb 2003). It covers +bash-2.0 and is available from most online bookstores (see +http://www.network-theory.co.uk/bash/manual/ for details). The publisher +will donate $1 to the Free Software Foundation for each copy sold. + +H3) What's coming in future versions? + +These are features I hope to include in a future version of bash. + +a better bash debugger (a minimally-tested version is included with bash-2.05b) +associative arrays +co-processes, but with a new-style syntax that looks like function declaration + +H4) What's on the bash `wish list' for future versions? + +These are features that may or may not appear in a future version of bash. + +breaking some of the shell functionality into embeddable libraries +a module system like zsh's, using dynamic loading like builtins +better internationalization using GNU `gettext' +date-stamped command history +a bash programmer's guide with a chapter on creating loadable builtins +a better loadable interface to perl with access to the shell builtins and + variables (contributions gratefully accepted) +ksh93-like `nameref' variables +ksh93-like `+=' variable assignment operator +ksh93-like `xx.yy' variables (including some of the .sh.* variables) and + associated disipline functions +Some of the new ksh93 pattern matching operators, like backreferencing + +H5) When will the next release appear? + +The next version will appear sometime in 2003. Never make predictions. + + +This document is Copyright 1995-2003 by Chester Ramey. + +Permission is hereby granted, without written agreement and +without license or royalty fees, to use, copy, and distribute +this document for any purpose, provided that the above copyright +notice appears in all copies of this document and that the +contents of this document remain unaltered. diff --git a/bash-20060316/doc/FAQ-3.0 b/bash-20060316/doc/FAQ-3.0 new file mode 100644 index 000000000..1eb11627a --- /dev/null +++ b/bash-20060316/doc/FAQ-3.0 @@ -0,0 +1,1788 @@ +This is the Bash FAQ, version 3.31, for Bash version 3.0. + +This document contains a set of frequently-asked questions concerning +Bash, the GNU Bourne-Again Shell. Bash is a freely-available command +interpreter with advanced features for both interactive use and shell +programming. + +Another good source of basic information about shells is the collection +of FAQ articles periodically posted to comp.unix.shell. + +Questions and comments concerning this document should be sent to +chet@po.cwru.edu. + +This document is available for anonymous FTP with the URL + +ftp://ftp.cwru.edu/pub/bash/FAQ + +The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html + +---------- +Contents: + +Section A: The Basics + +A1) What is it? +A2) What's the latest version? +A3) Where can I get it? +A4) On what machines will bash run? +A5) Will bash run on operating systems other than Unix? +A6) How can I build bash with gcc? +A7) How can I make bash my login shell? +A8) I just changed my login shell to bash, and now I can't FTP into my + machine. Why not? +A9) What's the `POSIX Shell and Utilities standard'? +A10) What is the bash `posix mode'? + +Section B: The latest version + +B1) What's new in version 3.0? +B2) Are there any user-visible incompatibilities between bash-3.0 and + bash-1.14.7? + +Section C: Differences from other Unix shells + +C1) How does bash differ from sh, the Bourne shell? +C2) How does bash differ from the Korn shell, version ksh88? +C3) Which new features in ksh-93 are not in bash, and which are? + +Section D: Why does bash do some things differently than other Unix shells? + +D1) Why does bash run a different version of `command' than + `which command' says it will? +D2) Why doesn't bash treat brace expansions exactly like csh? +D3) Why doesn't bash have csh variable modifiers? +D4) How can I make my csh aliases work when I convert to bash? +D5) How can I pipe standard output and standard error from one command to + another, like csh does with `|&'? +D6) Now that I've converted from ksh to bash, are there equivalents to + ksh features like autoloaded functions and the `whence' command? + +Section E: Why does bash do certain things the way it does? + +E1) Why is the bash builtin `test' slightly different from /bin/test? +E2) Why does bash sometimes say `Broken pipe'? +E3) When I have terminal escape sequences in my prompt, why does bash + wrap lines at the wrong column? +E4) If I pipe the output of a command into `read variable', why doesn't + the output show up in $variable when the read command finishes? +E5) I have a bunch of shell scripts that use backslash-escaped characters + in arguments to `echo'. Bash doesn't interpret these characters. Why + not, and how can I make it understand them? +E6) Why doesn't a while or for loop get suspended when I type ^Z? +E7) What about empty for loops in Makefiles? +E8) Why does the arithmetic evaluation code complain about `08'? +E9) Why does the pattern matching expression [A-Z]* match files beginning + with every letter except `z'? +E10) Why does `cd //' leave $PWD as `//'? +E11) If I resize my xterm while another program is running, why doesn't bash + notice the change? +E12) Why don't negative offsets in substring expansion work like I expect? + +Section F: Things to watch out for on certain Unix versions + +F1) Why can't I use command line editing in my `cmdtool'? +F2) I built bash on Solaris 2. Why do globbing expansions and filename + completion chop off the first few characters of each filename? +F3) Why does bash dump core after I interrupt username completion or + `~user' tilde expansion on a machine running NIS? +F4) I'm running SVR4.2. Why is the line erased every time I type `@'? +F5) Why does bash report syntax errors when my C News scripts use a + redirection before a subshell command? +F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? +F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on + HP/UX 11.x? + +Section G: How can I get bash to do certain common things? + +G1) How can I get bash to read and display eight-bit characters? +G2) How do I write a function `x' to replace builtin command `x', but + still invoke the command from within the function? +G3) How can I find the value of a shell variable whose name is the value + of another shell variable? +G4) How can I make the bash `time' reserved word print timing output that + looks like the output from my system's /usr/bin/time? +G5) How do I get the current directory into my prompt? +G6) How can I rename "*.foo" to "*.bar"? +G7) How can I translate a filename from uppercase to lowercase? +G8) How can I write a filename expansion (globbing) pattern that will match + all files in the current directory except "." and ".."? + +Section H: Where do I go from here? + +H1) How do I report bugs in bash, and where should I look for fixes and + advice? +H2) What kind of bash documentation is there? +H3) What's coming in future versions? +H4) What's on the bash `wish list'? +H5) When will the next release appear? + +---------- +Section A: The Basics + +A1) What is it? + +Bash is a Unix command interpreter (shell). It is an implementation of +the Posix 1003.2 shell standard, and resembles the Korn and System V +shells. + +Bash contains a number of enhancements over those shells, both +for interactive use and shell programming. Features geared +toward interactive use include command line editing, command +history, job control, aliases, and prompt expansion. Programming +features include additional variable expansions, shell +arithmetic, and a number of variables and options to control +shell behavior. + +Bash was originally written by Brian Fox of the Free Software +Foundation. The current developer and maintainer is Chet Ramey +of Case Western Reserve University. + +A2) What's the latest version? + +The latest version is 3.0, first made available on 27 July, 2004. + +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 3.0: + +ftp://ftp.gnu.org/pub/gnu/bash/bash-3.0.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-3.0.tar.gz + +Formatted versions of the documentation are available with the URLs: + +ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-3.0.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-doc-3.0.tar.gz + +Any patches for the current version are available with the URL: + +ftp://ftp.cwru.edu/pub/bash/bash-3.0-patches/ + +A4) On what machines will bash run? + +Bash has been ported to nearly every version of Unix. All you +should have to do to build it on a machine for which a port +exists is to type `configure' and then `make'. The build process +will attempt to discover the version of Unix you have and tailor +itself accordingly, using a script created by GNU autoconf. + +More information appears in the file `INSTALL' in the distribution. + +The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html) +explains how to obtain binary versions of bash for most of the major +commercial Unix systems. + +A5) Will bash run on operating systems other than Unix? + +Configuration specifics for Unix-like systems such as QNX and +LynxOS are included in the distribution. Bash-2.05 and later +versions should compile and run on Minix 2.0 (patches were +contributed), but I don't believe anyone has built bash-2.x on +earlier Minix versions yet. + +Bash has been ported to versions of Windows implementing the Win32 +programming interface. This includes Windows 95 and Windows NT. +The port was done by Cygnus Solutions (now part of Red Hat) as part +of their CYGWIN project. For more information about the project, see +http://www.cygwin.com/. + +Cygnus originally ported bash-1.14.7, and that port was part of their +early GNU-Win32 (the original name) releases. Cygnus has also done a +port of bash-2.05b to the CYGWIN environment, and it is available as +part of their current release. Bash-3.0 is currently being tested and +should be available soon. + +Bash-2.05b and later versions should require no local Cygnus changes to +build and run under CYGWIN. + +DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part +of the DJGPP project. For more information on the project, see + +http://www.delorie.com/djgpp/ + +I have been told that the original DJGPP port was done by Daisuke Aoyama. + +Mark Elbrecht has sent me notice that bash-2.04 +is available for DJGPP V2. The files are available as: + +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source + +Mark 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. + +A6) How can I build bash with gcc? + +Bash configures to use gcc by default if it is available. Read the +file INSTALL in the distribution for more information. + +A7) How can I make bash my login shell? + +Some machines let you use `chsh' to change your login shell. Other +systems use `passwd -s' or `passwd -e'. If one of these works for +you, that's all you need. Note that many systems require the full +pathname to a shell to appear in /etc/shells before you can make it +your login shell. For this, you may need the assistance of your +friendly local system administrator. + +If you cannot do this, you can still use bash as your login shell, but +you need to perform some tricks. The basic idea is to add a command +to your login shell's startup file to replace your login shell with +bash. + +For example, if your login shell is csh or tcsh, and you have installed +bash in /usr/gnu/bin/bash, add the following line to ~/.login: + + if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login + +(the `--login' tells bash that it is a login shell). + +It's not a good idea to put this command into ~/.cshrc, because every +csh you run without the `-f' option, even ones started to run csh scripts, +reads that file. If you must put the command in ~/.cshrc, use something +like + + if ( $?prompt ) exec /usr/gnu/bin/bash --login + +to ensure that bash is exec'd only when the csh is interactive. + +If your login shell is sh or ksh, you have to do two things. + +First, create an empty file in your home directory named `.bash_profile'. +The existence of this file will prevent the exec'd bash from trying to +read ~/.profile, and re-execing itself over and over again. ~/.bash_profile +is the first file bash tries to read initialization commands from when +it is invoked as a login shell. + +Next, add a line similar to the above to ~/.profile: + + [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \ + exec /usr/gnu/bin/bash --login + +This will cause login shells to replace themselves with bash running as +a login shell. Once you have this working, you can copy your initialization +code from ~/.profile to ~/.bash_profile. + +I have received word that the recipe supplied above is insufficient for +machines running CDE. CDE has a maze of twisty little startup files, all +slightly different. + +If you cannot change your login shell in the password file to bash, you +will have to (apparently) live with CDE using the shell in the password +file to run its startup scripts. If you have changed your shell to bash, +there is code in the CDE startup files (on Solaris, at least) that attempts +to do the right thing. It is, however, often broken, and may require that +you use the $BASH_ENV trick described below. + +`dtterm' claims to use $SHELL as the default program to start, so if you +can change $SHELL in the CDE startup files, you should be able to use bash +in your terminal windows. + +Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program +to read your login shell's startup files. You may be able to use bash for +the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as +well, but I have not tried this. + +You can use the above `exec' recipe to start bash when not logging in with +CDE by testing the value of the DT variable: + + if [ -n "$DT" ]; then + [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login + fi + +If CDE starts its shells non-interactively during login, the login shell +startup files (~/.profile, ~/.bash_profile) will not be sourced at login. +To get around this problem, append a line similar to the following to your +~/.dtprofile: + + BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV + +and add the following line to the beginning of ~/.bash_profile: + + unset BASH_ENV + +A8) I just changed my login shell to bash, and now I can't FTP into my + machine. Why not? + +You must add the full pathname to bash to the file /etc/shells. As +noted in the answer to the previous question, many systems require +this before you can make bash your login shell. + +Most versions of ftpd use this file to prohibit `special' users +such as `uucp' and `news' from using FTP. + +A9) What's the `POSIX Shell and Utilities standard'? + +POSIX is a name originally coined by Richard Stallman for a +family of open system standards based on UNIX. There are a +number of aspects of UNIX under consideration for +standardization, from the basic system services at the system +call and C library level to applications and tools to system +administration and management. Each area of standardization is +assigned to a working group in the 1003 series. + +The POSIX Shell and Utilities standard was originally developed by +IEEE Working Group 1003.2 (POSIX.2). Today it has been merged with +the original 1003.1 Working Group and is maintained by the Austin +Group (a joint working group of the IEEE, The Open Group and +ISO/IEC SC22/WG15). Today the Shell and Utilities are a volume +within the set of documents that make up IEEE Std 1003.1-2001, and +thus now the former POSIX.2 (from 1992) is now part of the current +POSIX.1 standard (POSIX 1003.1-2001). + +The Shell and Utilities volume concentrates on the command +interpreter interface and utility programs commonly executed from +the command line or by other programs. The standard is freely +available on the web at http://www.UNIX-systems.org/version3/ . +Work continues at the Austin Group on maintenance issues; see +http://www.opengroup.org/austin/ to join the discussions. + +Bash is concerned with the aspects of the shell's behavior defined +by the POSIX Shell and Utilities volume. The shell command +language has of course been standardized, including the basic flow +control and program execution constructs, I/O redirection and +pipelining, argument handling, variable expansion, and quoting. + +The `special' builtins, which must be implemented as part of the +shell to provide the desired functionality, are specified as +being part of the shell; examples of these are `eval' and +`export'. Other utilities appear in the sections of POSIX not +devoted to the shell which are commonly (and in some cases must +be) implemented as builtin commands, such as `read' and `test'. +POSIX also specifies aspects of the shell's interactive +behavior as part of the UPE, including job control and command +line editing. Only vi-style line editing commands have been +standardized; emacs editing commands were left out due to +objections. + +The latest version of the POSIX Shell and Utilities standard is +available (now updated to the 2004 Edition) as part of the Single +UNIX Specification Version 3 at + +http://www.UNIX-systems.org/version3/ + +A10) What is the bash `posix mode'? + +Although bash is an implementation of the POSIX shell +specification, there are areas where the bash default behavior +differs from that spec. The bash `posix mode' changes the bash +behavior in these areas so that it obeys the spec more closely. + +Posix mode is entered by starting bash with the --posix or +'-o posix' option or executing `set -o posix' after bash is running. + +The specific aspects of bash which change when posix mode is +active are listed in the file POSIX in the bash distribution. +They are also listed in a section in the Bash Reference Manual +(from which that file is generated). + +Section B: The latest version + +B1) What's new in version 3.0? + +Bash-3.0 is the third major release of bash. The features introduced +in the intermediate releases following bash-2.05 have been completed. +Support for the bash debugger (a separate project) has been integrated. + +Bash-3.0 contains the following new features (see the manual page for +complete descriptions and the CHANGES and NEWS files in the bash-3.0 +distribution): + +o Features to support the bash debugger have been implemented, and there + is a new `extdebug' option to turn the non-default options on + +o HISTCONTROL is now a colon-separated list of options and has been + extended with a new `erasedups' option that will result in only one + copy of a command being kept in the history list + +o Brace expansion has been extended with a new {x..y} form, producing + sequences of digits or characters + +o Timestamps are now kept with history entries, with an option to save + and restore them from the history file; there is a new HISTTIMEFORMAT + variable describing how to display the timestamps when listing history + entries + +o The `[[' command can now perform extended regular expression (egrep-like) + matching, with matched subexpressions placed in the BASH_REMATCH array + variable + +o A new `pipefail' option causes a pipeline to return a failure status if + any command in it fails + +o The `jobs', `kill', and `wait' builtins now accept job control notation + in their arguments even if job control is not enabled + +o The `gettext' package and libintl have been integrated, and the shell + messages may be translated into other languages + +A short feature history dating from Bash-2.0: + +Bash-2.05b introduced the following new features: + +o support for multibyte characters has been added to both bash and readline + +o the DEBUG trap is now run *before* simple commands, ((...)) commands, + [[...]] conditional commands, and for ((...)) loops + +o the shell now performs arithmetic in the largest integer size the machine + supports (intmax_t) + +o there is a new \D{...} prompt expansion; passes the `...' to strftime(3) + and inserts the result into the expanded prompt + +o there is a new `here-string' redirection operator: <<< word + +o when displaying variables, function attributes and definitions are shown + separately, allowing them to be re-used as input (attempting to re-use + the old output would result in syntax errors). + +o `read' has a new `-u fd' option to read from a specified file descriptor + +o the bash debugger in examples/bashdb has been modified to work with the + new DEBUG trap semantics, the command set has been made more gdb-like, + and the changes to $LINENO make debugging functions work better + +o the expansion of $LINENO inside a shell function is only relative to the + function start if the shell is interactive -- if the shell is running a + script, $LINENO expands to the line number in the script. This is as + POSIX-2001 requires + +Bash-2.05a introduced the following new features: + +o The `printf' builtin has undergone major work + +o There is a new read-only `shopt' option: login_shell, which is set by + login shells and unset otherwise + +o New `\A' prompt string escape sequence; expanding to time in 24-hour + HH:MM format + +o New `-A group/-g' option to complete and compgen; goes group name + completion + +o New [+-]O invocation option to set and unset `shopt' options at startup + +o ksh-like `ERR' trap + +o `for' loops now allow empty word lists after the `in' reserved word + +o new `hard' and `soft' arguments for the `ulimit' builtin + +o Readline can be configured to place the user at the same point on the line + when retrieving commands from the history list + +o Readline can be configured to skip `hidden' files (filenames with a leading + `.' on Unix) when performing completion + +Bash-2.05 introduced the following new features: + +o This version has once again reverted to using locales and strcoll(3) when + processing pattern matching bracket expressions, as POSIX requires. +o Added a new `--init-file' invocation argument as a synonym for `--rcfile', + per the new GNU coding standards. +o The /dev/tcp and /dev/udp redirections now accept service names as well as + port numbers. +o `complete' and `compgen' now take a `-o value' option, which controls some + of the aspects of that compspec. Valid values are: + + default - perform bash default completion if programmable + completion produces no matches + dirnames - perform directory name completion if programmable + completion produces no matches + filenames - tell readline that the compspec produces filenames, + so it can do things like append slashes to + directory names and suppress trailing spaces +o A new loadable builtin, realpath, which canonicalizes and expands symlinks + in pathname arguments. +o When `set' is called without options, it prints function defintions in a + way that allows them to be reused as input. This affects `declare' and + `declare -p' as well. This only happens when the shell is not in POSIX + mode, since POSIX.2 forbids this behavior. + +Bash-2.04 introduced the following new features: + +o Programmable word completion with the new `complete' and `compgen' builtins; + examples are provided in examples/complete/complete-examples +o `history' has a new `-d' option to delete a history entry +o `bind' has a new `-x' option to bind key sequences to shell commands +o The prompt expansion code has new `\j' and `\l' escape sequences +o The `no_empty_cmd_completion' shell option, if enabled, inhibits + command completion when TAB is typed on an empty line +o `help' has a new `-s' option to print a usage synopsis +o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma) +o New ksh93-style arithmetic for command: + for ((expr1 ; expr2; expr3 )); do list; done +o `read' has new options: `-t', `-n', `-d', `-s' +o The redirection code handles several filenames specially: /dev/fd/N, + /dev/stdin, /dev/stdout, /dev/stderr +o The redirection code now recognizes /dev/tcp/HOST/PORT and + /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively, + to the specified port on the specified host +o The ${!prefix*} expansion has been implemented +o A new FUNCNAME variable, which expands to the name of a currently-executing + function +o The GROUPS variable is no longer readonly +o A new shopt `xpg_echo' variable, to control the behavior of echo with + respect to backslash-escape sequences at runtime +o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned + +The version of Readline released with Bash-2.04, Readline-4.1, had several +new features as well: + +o Parentheses matching is always compiled into readline, and controllable + with the new `blink-matching-paren' variable +o The history-search-forward and history-search-backward functions now leave + point at the end of the line when the search string is empty, like + reverse-search-history, and forward-search-history +o A new function for applications: rl_on_new_line_with_prompt() +o New variables for applications: rl_already_prompted, and rl_gnu_readline_p + + +Bash-2.03 had very few new features, in keeping with the convention +that odd-numbered releases provide mainly bug fixes. A number of new +features were added to Readline, mostly at the request of the Cygnus +folks. + +A new shopt option, `restricted_shell', so that startup files can test + whether or not the shell was started in restricted mode +Filename generation is now performed on the words between ( and ) in + compound array assignments (this is really a bug fix) +OLDPWD is now auto-exported, as POSIX.2 requires +ENV and BASH_ENV are read-only variables in a restricted shell +Bash may now be linked against an already-installed Readline library, + as long as the Readline library is version 4 or newer +All shells begun with the `--login' option will source the login shell + startup files, even if the shell is not interactive + +There were lots of changes to the version of the Readline library released +along with Bash-2.03. For a complete list of the changes, read the file +CHANGES in the Bash-2.03 distribution. + +Bash-2.02 contained the following new features: + +a new version of malloc (based on the old GNU malloc code in previous + bash versions) that is more page-oriented, more conservative + with memory usage, does not `orphan' large blocks when they + are freed, is usable on 64-bit machines, and has allocation + checking turned on unconditionally +POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.) +POSIX.2-style globbing equivalence classes +POSIX.2-style globbing collating symbols +the ksh [[...]] extended conditional command +the ksh egrep-style extended pattern matching operators +a new `printf' builtin +the ksh-like $(, &>, >|, <<<, [n]<&word-, [n]>&word- + prompt string special char translation and variable expansion + auto-export of variables in initial environment + command search finds functions before builtins + bash return builtin will exit a file sourced with `.' + builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t. + export -n/-f/-p/name=value, pwd -L/-P, + read -e/-p/-a/-t/-n/-d/-s/-u, + readonly -a/-f/name=value, trap -l, set +o, + set -b/-m/-o option/-h/-p/-B/-C/-H/-P, + unset -f/-v, ulimit -m/-p/-u, + type -a/-p/-t/-f/-P, suspend -f, kill -n, + test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S + bash reads ~/.bashrc for interactive shells, $ENV for non-interactive + bash restricted shell mode is more extensive + bash allows functions and variables with the same name + brace expansion + tilde expansion + arithmetic expansion with $((...)) and `let' builtin + the `[[...]]' extended conditional command + process substitution + aliases and alias/unalias builtins + local variables in functions and `local' builtin + readline and command-line editing with programmable completion + command history and history/fc builtins + csh-like history expansion + other new bash builtins: bind, command, compgen, complete, builtin, + declare/typeset, dirs, enable, fc, help, + history, logout, popd, pushd, disown, shopt, + printf + exported functions + filename generation when using output redirection (command >a*) + POSIX.2-style globbing character classes + POSIX.2-style globbing equivalence classes + POSIX.2-style globbing collating symbols + egrep-like extended pattern matching operators + case-insensitive pattern matching and globbing + variable assignments preceding commands affect only that command, + even for builtins and functions + posix mode + redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr, + /dev/tcp/host/port, /dev/udp/host/port + debugger support, including `caller' builtin and new variables + RETURN trap + + +Things sh has that bash does not: + uses variable SHACCT to do shell accounting + includes `stop' builtin (bash can use alias stop='kill -s STOP') + `newgrp' builtin + turns on job control if called as `jsh' + $TIMEOUT (like bash $TMOUT) + `^' is a synonym for `|' + new SVR4.2 sh builtins: mldmode, priv + +Implementation differences: + redirection to/from compound commands causes sh to create a subshell + bash does not allow unbalanced quotes; sh silently inserts them at EOF + bash does not mess with signal 11 + sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100 + bash splits only the results of expansions on IFS, using POSIX.2 + field splitting rules; sh splits all words on IFS + sh does not allow MAILCHECK to be unset (?) + sh does not allow traps on SIGALRM or SIGCHLD + bash allows multiple option arguments when invoked (e.g. -x -v); + sh allows only a single option argument (`sh -x -v' attempts + to open a file named `-v', and, on SunOS 4.1.4, dumps core. + On Solaris 2.4 and earlier versions, sh goes into an infinite + loop.) + sh exits a script if any builtin fails; bash exits only if one of + the POSIX.2 `special' builtins fails + +C2) How does bash differ from the Korn shell, version ksh88? + +Things bash has or uses that ksh88 does not: + long invocation options + [-+]O invocation option + -l invocation option + `!' reserved word + arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done + arithmetic in largest machine-supported size (intmax_t) + posix mode and posix conformance + command hashing + tilde expansion for assignment statements that look like $PATH + process substitution with named pipes if /dev/fd is not available + the ${!param} indirect parameter expansion operator + the ${!param*} prefix expansion operator + the ${param:offset[:length]} parameter substring operator + the ${param/pat[/string]} parameter pattern substitution operator + variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL, + TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, + HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND, + IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK, + PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE, + GROUPS, FUNCNAME, histchars, auto_resume + prompt expansion with backslash escapes and command substitution + redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word- + more extensive and extensible editing and programmable completion + builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable, + exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history, + jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd, + read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p, + set -o braceexpand/-o histexpand/-o interactive-comments/ + -o notify/-o physical/-o posix/-o hashall/-o onecmd/ + -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type, + typeset -a/-F/-p, ulimit -u, umask -S, alias -p, shopt, + disown, printf, complete, compgen + `!' csh-style history expansion + POSIX.2-style globbing character classes + POSIX.2-style globbing equivalence classes + POSIX.2-style globbing collating symbols + egrep-like extended pattern matching operators + case-insensitive pattern matching and globbing + `**' arithmetic operator to do exponentiation + redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr + arrays of unlimited size + TMOUT is default timeout for `read' and `select' + debugger support, including the `caller' builtin + RETURN trap + Timestamps in history entries + {x..y} brace expansion + +Things ksh88 has or uses that bash does not: + tracked aliases (alias -t) + variables: ERRNO, FPATH, EDITOR, VISUAL + co-processes (|&, >&p, <&p) + weirdly-scoped functions + typeset +f to list all function names without definitions + text of command history kept in a file, not memory + builtins: alias -x, cd old new, newgrp, print, + read -p/-s/var?prompt, set -A/-o gmacs/ + -o bgnice/-o markdirs/-o trackall/-o viraw/-s, + typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence + using environment to pass attributes of exported variables + arithmetic evaluation done on arguments to some builtins + reads .profile from $PWD when invoked as login shell + +Implementation differences: + ksh runs last command of a pipeline in parent shell context + bash has brace expansion by default (ksh88 compile-time option) + bash has fixed startup file for all interactive shells; ksh reads $ENV + bash has exported functions + bash command search finds functions before builtins + bash waits for all commands in pipeline to exit before returning status + emacs-mode editing has some slightly different key bindings + +C3) Which new features in ksh-93 are not in bash, and which are? + +New things in ksh-93 not in bash-3.0: + associative arrays + floating point arithmetic and variables + math library functions + ${!name[sub]} name of subscript for associative array + `.' is allowed in variable names to create a hierarchical namespace + more extensive compound assignment syntax + discipline functions + `sleep' and `getconf' builtins (bash has loadable versions) + typeset -n and `nameref' variables + KEYBD trap + variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version, + .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT + backreferences in pattern matching (\N) + `&' operator in pattern lists for matching + print -f (bash uses printf) + `fc' has been renamed to `hist' + `.' can execute shell functions + exit statuses between 0 and 255 + `+=' variable assignment operator + FPATH and PATH mixing + getopts -a + -I invocation option + printf %H, %P, %T, %Z modifiers, output base for %d + lexical scoping for local variables in `ksh' functions + no scoping for local variables in `POSIX' functions + +New things in ksh-93 present in bash-3.0: + [n]<&word- and [n]>&word- redirections (combination dup and close) + for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command + ?:, ++, --, `expr1 , expr2' arithmetic operators + expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]}, + ${!param*} + compound array assignment + the `!' reserved word + loadable builtins -- but ksh uses `builtin' while bash uses `enable' + `command', `builtin', `disown' builtins + new $'...' and $"..." quoting + FIGNORE (but bash uses GLOBIGNORE), HISTCMD + set -o notify/-C + changes to kill builtin + read -A (bash uses read -a) + read -t/-d + trap -p + exec -c/-a + `.' restores the positional parameters when it completes + POSIX.2 `test' + umask -S + unalias -a + command and arithmetic substitution performed on PS1, PS4, and ENV + command name completion + ENV processed only for interactive shells + set -o pipefail + +Section D: Why does bash do some things differently than other Unix shells? + +D1) Why does bash run a different version of `command' than + `which command' says it will? + +On many systems, `which' is actually a csh script that assumes +you're running csh. In tcsh, `which' and its cousin `where' +are builtins. On other Unix systems, `which' is a perl script +that uses the PATH environment variable. + +The csh script version reads the csh startup files from your +home directory and uses those to determine which `command' will +be invoked. Since bash doesn't use any of those startup files, +there's a good chance that your bash environment differs from +your csh environment. The bash `type' builtin does everything +`which' does, and will report correct results for the running +shell. If you're really wedded to the name `which', try adding +the following function definition to your .bashrc: + + which() + { + builtin type "$@" + } + +If you're moving from tcsh and would like to bring `where' along +as well, use this function: + + where() + { + builtin type -a "$@" + } + +D2) Why doesn't bash treat brace expansions exactly like csh? + +The only difference between bash and csh brace expansion is that +bash requires a brace expression to contain at least one unquoted +comma if it is to be expanded. Any brace-surrounded word not +containing an unquoted comma is left unchanged by the brace +expansion code. This affords the greatest degree of sh +compatibility. + +Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. + +D3) Why doesn't bash have csh variable modifiers? + +Posix has specified a more powerful, albeit somewhat more cryptic, +mechanism cribbed from ksh, and bash implements it. + +${parameter%word} + Remove smallest suffix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + smallest portion of the suffix matched by the pattern deleted. + + x=file.c + echo ${x%.c}.o + -->file.o + +${parameter%%word} + + Remove largest suffix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + largest portion of the suffix matched by the pattern deleted. + + x=posix/src/std + echo ${x%%/*} + -->posix + +${parameter#word} + Remove smallest prefix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + smallest portion of the prefix matched by the pattern deleted. + + x=$HOME/src/cmd + echo ${x#$HOME} + -->/src/cmd + +${parameter##word} + Remove largest prefix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + largest portion of the prefix matched by the pattern deleted. + + x=/one/two/three + echo ${x##*/} + -->three + + +Given + a=/a/b/c/d + b=b.xxx + + csh bash result + --- ---- ------ + $a:h ${a%/*} /a/b/c + $a:t ${a##*/} d + $b:r ${b%.*} b + $b:e ${b##*.} xxx + + +D4) How can I make my csh aliases work when I convert to bash? + +Bash uses a different syntax to support aliases than csh does. +The details can be found in the documentation. We have provided +a shell script which does most of the work of conversion for you; +this script can be found in ./examples/misc/aliasconv.sh. Here is +how you use it: + +Start csh in the normal way for you. (e.g., `csh') + +Pipe the output of `alias' through `aliasconv.sh', saving the +results into `bash_aliases': + + alias | bash aliasconv.sh >bash_aliases + +Edit `bash_aliases', carefully reading through any created +functions. You will need to change the names of some csh specific +variables to the bash equivalents. The script converts $cwd to +$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt +to $PS1. You may also have to add quotes to avoid unwanted +expansion. + +For example, the csh alias: + + alias cd 'cd \!*; echo $cwd' + +is converted to the bash function: + + cd () { command cd "$@"; echo $PWD ; } + +The only thing that needs to be done is to quote $PWD: + + cd () { command cd "$@"; echo "$PWD" ; } + +Merge the edited file into your ~/.bashrc. + +There is an additional, more ambitious, script in +examples/misc/cshtobash that attempts to convert your entire csh +environment to its bash equivalent. This script can be run as +simply `cshtobash' to convert your normal interactive +environment, or as `cshtobash ~/.login' to convert your login +environment. + +D5) How can I pipe standard output and standard error from one command to + another, like csh does with `|&'? + +Use + command 2>&1 | command2 + +The key is to remember that piping is performed before redirection, so +file descriptor 1 points to the pipe when it is duplicated onto file +descriptor 2. + +D6) Now that I've converted from ksh to bash, are there equivalents to + ksh features like autoloaded functions and the `whence' command? + +There are features in ksh-88 and ksh-93 that do not have direct bash +equivalents. Most, however, can be emulated with very little trouble. + +ksh-88 feature Bash equivalent +-------------- --------------- +compiled-in aliases set up aliases in .bashrc; some ksh aliases are + bash builtins (hash, history, type) +coprocesses named pipe pairs (one for read, one for write) +typeset +f declare -F +cd, print, whence function substitutes in examples/functions/kshenv +autoloaded functions examples/functions/autoload is the same as typeset -fu +read var?prompt read -p prompt var + +ksh-93 feature Bash equivalent +-------------- --------------- +sleep, getconf Bash has loadable versions in examples/loadables +${.sh.version} $BASH_VERSION +print -f printf +hist alias hist=fc +$HISTEDIT $FCEDIT + +Section E: How can I get bash to do certain things, and why does bash do + things the way it does? + +E1) Why is the bash builtin `test' slightly different from /bin/test? + +The specific example used here is [ ! x -o x ], which is false. + +Bash's builtin `test' implements the Posix.2 spec, which can be +summarized as follows (the wording is due to David Korn): + +Here is the set of rules for processing test arguments. + + 0 Args: False + 1 Arg: True iff argument is not null. + 2 Args: If first arg is !, True iff second argument is null. + If first argument is unary, then true if unary test is true + Otherwise error. + 3 Args: If second argument is a binary operator, do binary test of $1 $3 + If first argument is !, negate two argument test of $2 $3 + If first argument is `(' and third argument is `)', do the + one-argument test of the second argument. + Otherwise error. + 4 Args: If first argument is !, negate three argument test of $2 $3 $4. + Otherwise unspecified + 5 or more Args: unspecified. (Historical shells would use their + current algorithm). + +The operators -a and -o are considered binary operators for the purpose +of the 3 Arg case. + +As you can see, the test becomes (not (x or x)), which is false. + +E2) Why does bash sometimes say `Broken pipe'? + +If a sequence of commands appears in a pipeline, and one of the +reading commands finishes before the writer has finished, the +writer receives a SIGPIPE signal. Many other shells special-case +SIGPIPE as an exit status in the pipeline and do not report it. +For example, in: + + ps -aux | head + +`head' can finish before `ps' writes all of its output, and ps +will try to write on a pipe without a reader. In that case, bash +will print `Broken pipe' to stderr when ps is killed by a +SIGPIPE. + +You can build a version of bash that will not report SIGPIPE errors +by uncommenting the definition of DONT_REPORT_SIGPIPE in the file +config-top.h. + +E3) When I have terminal escape sequences in my prompt, why does bash + wrap lines at the wrong column? + +Readline, the line editing library that bash uses, does not know +that the terminal escape sequences do not take up space on the +screen. The redisplay code assumes, unless told otherwise, that +each character in the prompt is a `printable' character that +takes up one character position on the screen. + +You can use the bash prompt expansion facility (see the PROMPTING +section in the manual page) to tell readline that sequences of +characters in the prompt strings take up no screen space. + +Use the \[ escape to begin a sequence of non-printing characters, +and the \] escape to signal the end of such a sequence. + +E4) If I pipe the output of a command into `read variable', why doesn't + the output show up in $variable when the read command finishes? + +This has to do with the parent-child relationship between Unix +processes. It affects all commands run in pipelines, not just +simple calls to `read'. For example, piping a command's output +into a `while' loop that repeatedly calls `read' will result in +the same behavior. + +Each element of a pipeline, even a builtin or shell function, +runs in a separate process, a child of the shell running the +pipeline. A subprocess cannot affect its parent's environment. +When the `read' command sets the variable to the input, that +variable is set only in the subshell, not the parent shell. When +the subshell exits, the value of the variable is lost. + +Many pipelines that end with `read variable' can be converted +into command substitutions, which will capture the output of +a specified command. The output can then be assigned to a +variable: + + grep ^gnu /usr/lib/news/active | wc -l | read ngroup + +can be converted into + + ngroup=$(grep ^gnu /usr/lib/news/active | wc -l) + +This does not, unfortunately, work to split the text among +multiple variables, as read does when given multiple variable +arguments. If you need to do this, you can either use the +command substitution above to read the output into a variable +and chop up the variable using the bash pattern removal +expansion operators or use some variant of the following +approach. + +Say /usr/local/bin/ipaddr is the following shell script: + +#! /bin/sh +host `hostname` | awk '/address/ {print $NF}' + +Instead of using + + /usr/local/bin/ipaddr | read A B C D + +to break the local machine's IP address into separate octets, use + + OIFS="$IFS" + IFS=. + set -- $(/usr/local/bin/ipaddr) + IFS="$OIFS" + A="$1" B="$2" C="$3" D="$4" + +Beware, however, that this will change the shell's positional +parameters. If you need them, you should save them before doing +this. + +This is the general approach -- in most cases you will not need to +set $IFS to a different value. + +Some other user-supplied alternatives include: + +read A B C D << HERE + $(IFS=.; echo $(/usr/local/bin/ipaddr)) +HERE + +and, where process substitution is available, + +read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr)) + +E5) I have a bunch of shell scripts that use backslash-escaped characters + in arguments to `echo'. Bash doesn't interpret these characters. Why + not, and how can I make it understand them? + +This is the behavior of echo on most Unix System V machines. + +The bash builtin `echo' is modeled after the 9th Edition +Research Unix version of `echo'. It does not interpret +backslash-escaped characters in its argument strings by default; +it requires the use of the -e option to enable the +interpretation. The System V echo provides no way to disable the +special characters; the bash echo has a -E option to disable +them. + +There is a configuration option that will make bash behave like +the System V echo and interpret things like `\t' by default. Run +configure with the --enable-xpg-echo-default option to turn this +on. Be aware that this will cause some of the tests run when you +type `make tests' to fail. + +There is a shell option, `xpg_echo', settable with `shopt', that will +change the behavior of echo at runtime. Enabling this option turns +on expansion of backslash-escape sequences. + +E6) Why doesn't a while or for loop get suspended when I type ^Z? + +This is a consequence of how job control works on Unix. The only +thing that can be suspended is the process group. This is a single +command or pipeline of commands that the shell forks and executes. + +When you run a while or for loop, the only thing that the shell forks +and executes are any commands in the while loop test and commands in +the loop bodies. These, therefore, are the only things that can be +suspended when you type ^Z. + +If you want to be able to stop the entire loop, you need to put it +within parentheses, which will force the loop into a subshell that +may be stopped (and subsequently restarted) as a single unit. + +E7) What about empty for loops in Makefiles? + +It's fairly common to see constructs like this in automatically-generated +Makefiles: + +SUBDIRS = @SUBDIRS@ + + ... + +subdirs-clean: + for d in ${SUBDIRS}; do \ + ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ + done + +When SUBDIRS is empty, this results in a command like this being passed to +bash: + + for d in ; do + ( cd $d && ${MAKE} ${MFLAGS} clean ) + done + +In versions of bash before bash-2.05a, this was a syntax error. If the +reserved word `in' was present, a word must follow it before the semicolon +or newline. The language in the manual page referring to the list of words +being empty referred to the list after it is expanded. These versions of +bash required that there be at least one word following the `in' when the +construct was parsed. + +The idiomatic Makefile solution is something like: + +SUBDIRS = @SUBDIRS@ + +subdirs-clean: + subdirs=$SUBDIRS ; for d in $$subdirs; do \ + ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ + done + +The latest updated POSIX standard has changed this: the word list +is no longer required. Bash versions 2.05a and later accept the +new syntax. + +E8) Why does the arithmetic evaluation code complain about `08'? + +The bash arithmetic evaluation code (used for `let', $(()), (()), and in +other places), interprets a leading `0' in numeric constants as denoting +an octal number, and a leading `0x' as denoting hexadecimal. This is +in accordance with the POSIX.2 spec, section 2.9.2.1, which states that +arithmetic constants should be handled as signed long integers as defined +by the ANSI/ISO C standard. + +The POSIX.2 interpretation committee has confirmed this: + +http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html + +E9) Why does the pattern matching expression [A-Z]* match files beginning + with every letter except `z'? + +Bash-2.03, Bash-2.05 and later versions honor the current locale setting +when processing ranges within pattern matching bracket expressions ([A-Z]). +This is what POSIX.2 and SUSv3/XPG6 specify. + +The behavior of the matcher in bash-2.05 and later versions depends on the +current LC_COLLATE setting. Setting this variable to `C' or `POSIX' will +result in the traditional behavior ([A-Z] matches all uppercase ASCII +characters). Many other locales, including the en_US locale (the default +on many US versions of Linux) collate the upper and lower case letters like +this: + + AaBb...Zz + +which means that [A-Z] matches every letter except `z'. Others collate like + + aAbBcC...zZ + +which means that [A-Z] matches every letter except `a'. + +The portable way to specify upper case letters is [:upper:] instead of +A-Z; lower case may be specified as [:lower:] instead of a-z. + +Look at the manual pages for setlocale(3), strcoll(3), and, if it is +present, locale(1). If you have locale(1), you can use it to find +your current locale information even if you do not have any of the +LC_ variables set. + +My advice is to put + + export LC_COLLATE=C + +into /etc/profile and inspect any shell scripts run from cron for +constructs like [A-Z]. This will prevent things like + + rm [A-Z]* + +from removing every file in the current directory except those beginning +with `z' and still allow individual users to change the collation order. +Users may put the above command into their own profiles as well, of course. + +E10) Why does `cd //' leave $PWD as `//'? + +POSIX.2, in its description of `cd', says that *three* or more leading +slashes may be replaced with a single slash when canonicalizing the +current working directory. + +This is, I presume, for historical compatibility. Certain versions of +Unix, and early network file systems, used paths of the form +//hostname/path to access `path' on server `hostname'. + +E11) If I resize my xterm while another program is running, why doesn't bash + notice the change? + +This is another issue that deals with job control. + +The kernel maintains a notion of a current terminal process group. Members +of this process group (processes whose process group ID is equal to the +current terminal process group ID) receive terminal-generated signals like +SIGWINCH. (For more details, see the JOB CONTROL section of the bash +man page.) + +If a terminal is resized, the kernel sends SIGWINCH to each member of +the terminal's current process group (the `foreground' process group). + +When bash is running with job control enabled, each pipeline (which may be +a single command) is run in its own process group, different from bash's +process group. This foreground process group receives the SIGWINCH; bash +does not. Bash has no way of knowing that the terminal has been resized. + +There is a `checkwinsize' option, settable with the `shopt' builtin, that +will cause bash to check the window size and adjust its idea of the +terminal's dimensions each time a process stops or exits and returns control +of the terminal to bash. Enable it with `shopt -s checkwinsize'. + +E12) Why don't negative offsets in substring expansion work like I expect? + +When substring expansion of the form ${param:offset[:length} is used, +an `offset' that evaluates to a number less than zero counts back from +the end of the expanded value of $param. + +When a negative `offset' begins with a minus sign, however, unexpected things +can happen. Consider + + a=12345678 + echo ${a:-4} + +intending to print the last four characters of $a. The problem is that +${param:-word} already has a well-defined meaning: expand to word if the +expanded value of param is unset or null, and $param otherwise. + +To use negative offsets that begin with a minus sign, separate the +minus sign and the colon with a space. + +Section F: Things to watch out for on certain Unix versions + +F1) Why can't I use command line editing in my `cmdtool'? + +The problem is `cmdtool' and bash fighting over the input. When +scrolling is enabled in a cmdtool window, cmdtool puts the tty in +`raw mode' to permit command-line editing using the mouse for +applications that cannot do it themselves. As a result, bash and +cmdtool each try to read keyboard input immediately, with neither +getting enough of it to be useful. + +This mode also causes cmdtool to not implement many of the +terminal functions and control sequences appearing in the +`sun-cmd' termcap entry. For a more complete explanation, see +that file examples/suncmd.termcap in the bash distribution. + +`xterm' is a better choice, and gets along with bash much more +smoothly. + +If you must use cmdtool, you can use the termcap description in +examples/suncmd.termcap. Set the TERMCAP variable to the terminal +description contained in that file, i.e. + +TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:' + +Then export TERMCAP and start a new cmdtool window from that shell. +The bash command-line editing should behave better in the new +cmdtool. If this works, you can put the assignment to TERMCAP +in your bashrc file. + +F2) I built bash on Solaris 2. Why do globbing expansions and filename + completion chop off the first few characters of each filename? + +This is the consequence of building bash on SunOS 5 and linking +with the libraries in /usr/ucblib, but using the definitions +and structures from files in /usr/include. + +The actual conflict is between the dirent structure in +/usr/include/dirent.h and the struct returned by the version of +`readdir' in libucb.a (a 4.3-BSD style `struct direct'). + +Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH +when configuring and building bash. This will ensure that you +use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you +link with libc before libucb. + +If you have installed the Sun C compiler, you may also need to +put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before +/usr/ucb. + +F3) Why does bash dump core after I interrupt username completion or + `~user' tilde expansion on a machine running NIS? + +This is a famous and long-standing bug in the SunOS YP (sorry, NIS) +client library, which is part of libc. + +The YP library code keeps static state -- a pointer into the data +returned from the server. When YP initializes itself (setpwent), +it looks at this pointer and calls free on it if it's non-null. +So far, so good. + +If one of the YP functions is interrupted during getpwent (the +exact function is interpretwithsave()), and returns NULL, the +pointer is freed without being reset to NULL, and the function +returns. The next time getpwent is called, it sees that this +pointer is non-null, calls free, and the bash free() blows up +because it's being asked to free freed memory. + +The traditional Unix mallocs allow memory to be freed multiple +times; that's probably why this has never been fixed. You can +run configure with the `--without-gnu-malloc' option to use +the C library malloc and avoid the problem. + +F4) I'm running SVR4.2. Why is the line erased every time I type `@'? + +The `@' character is the default `line kill' character in most +versions of System V, including SVR4.2. You can change this +character to whatever you want using `stty'. For example, to +change the line kill character to control-u, type + + stty kill ^U + +where the `^' and `U' can be two separate characters. + +F5) Why does bash report syntax errors when my C News scripts use a + redirection before a subshell command? + +The actual command in question is something like + + < file ( command ) + +According to the grammar given in the POSIX.2 standard, this construct +is, in fact, a syntax error. Redirections may only precede `simple +commands'. A subshell construct such as the above is one of the shell's +`compound commands'. A redirection may only follow a compound command. + +This affects the mechanical transformation of commands that use `cat' +to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on +comp.unix.shell). While most commands of the form + + cat file | command + +can be converted to `< file command', shell control structures such as +loops and subshells require `command < file'. + +The file CWRU/sh-redir-hack in the bash distribution is an +(unofficial) patch to parse.y that will modify the grammar to +support this construct. It will not apply with `patch'; you must +modify parse.y by hand. Note that if you apply this, you must +recompile with -DREDIRECTION_HACK. This introduces a large +number of reduce/reduce conflicts into the shell grammar. + +F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? + +The short answer is that Red Hat screwed up. + +The long answer is that they shipped an /etc/inputrc that only works +for emacs mode editing, and then screwed all the vi users by setting +INPUTRC to /etc/inputrc in /etc/profile. + +The short fix is to do one of the following: remove or rename +/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile, +but make sure you export it if you do), remove the assignment to +INPUTRC from /etc/profile, add + + set keymap emacs + +to the beginning of /etc/inputrc, or bracket the key bindings in +/etc/inputrc with these lines + + $if mode=emacs + [...] + $endif + +F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on + HP/UX 11.x? + +HP/UX's support for long double is imperfect at best. + +GCC will support it without problems, but the HP C library functions +like strtold(3) and printf(3) don't actually work with long doubles. +HP implemented a `long_double' type as a 4-element array of 32-bit +ints, and that is what the library functions use. The ANSI C +`long double' type is a 128-bit floating point scalar. + +The easiest fix, until HP fixes things up, is to edit the generated +config.h and #undef the HAVE_LONG_DOUBLE line. After doing that, +the compilation should complete successfully. + +Section G: How can I get bash to do certain common things? + +G1) How can I get bash to read and display eight-bit characters? + +This is a process requiring several steps. + +First, you must ensure that the `physical' data path is a full eight +bits. For xterms, for example, the `vt100' resources `eightBitInput' +and `eightBitOutput' should be set to `true'. + +Once you have set up an eight-bit path, you must tell the kernel and +tty driver to leave the eighth bit of characters alone when processing +keyboard input. Use `stty' to do this: + + stty cs8 -istrip -parenb + +For old BSD-style systems, you can use + + stty pass8 + +You may also need + + stty even odd + +Finally, you need to tell readline that you will be inputting and +displaying eight-bit characters. You use readline variables to do +this. These variables can be set in your .inputrc or using the bash +`bind' builtin. Here's an example using `bind': + + bash$ bind 'set convert-meta off' + bash$ bind 'set meta-flag on' + bash$ bind 'set output-meta on' + +The `set' commands between the single quotes may also be placed +in ~/.inputrc. + +G2) How do I write a function `x' to replace builtin command `x', but + still invoke the command from within the function? + +This is why the `command' and `builtin' builtins exist. The +`command' builtin executes the command supplied as its first +argument, skipping over any function defined with that name. The +`builtin' builtin executes the builtin command given as its first +argument directly. + +For example, to write a function to replace `cd' that writes the +hostname and current directory to an xterm title bar, use +something like the following: + + cd() + { + builtin cd "$@" && xtitle "$HOST: $PWD" + } + +This could also be written using `command' instead of `builtin'; +the version above is marginally more efficient. + +G3) How can I find the value of a shell variable whose name is the value + of another shell variable? + +Versions of Bash newer than Bash-2.0 support this directly. You can use + + ${!var} + +For example, the following sequence of commands will echo `z': + + var1=var2 + var2=z + echo ${!var1} + +For sh compatibility, use the `eval' builtin. The important +thing to remember is that `eval' expands the arguments you give +it again, so you need to quote the parts of the arguments that +you want `eval' to act on. + +For example, this expression prints the value of the last positional +parameter: + + eval echo \"\$\{$#\}\" + +The expansion of the quoted portions of this expression will be +deferred until `eval' runs, while the `$#' will be expanded +before `eval' is executed. In versions of bash later than bash-2.0, + + echo ${!#} + +does the same thing. + +This is not the same thing as ksh93 `nameref' variables, though the syntax +is similar. I may add namerefs in a future bash version. + +G4) How can I make the bash `time' reserved word print timing output that + looks like the output from my system's /usr/bin/time? + +The bash command timing code looks for a variable `TIMEFORMAT' and +uses its value as a format string to decide how to display the +timing statistics. + +The value of TIMEFORMAT is a string with `%' escapes expanded in a +fashion similar in spirit to printf(3). The manual page explains +the meanings of the escape sequences in the format string. + +If TIMEFORMAT is not set, bash acts as if the following assignment had +been performed: + + TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' + +The POSIX.2 default time format (used by `time -p command') is + + TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S' + +The BSD /usr/bin/time format can be emulated with: + + TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys' + +The System V /usr/bin/time format can be emulated with: + + TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S' + +The ksh format can be emulated with: + + TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS' + +G5) How do I get the current directory into my prompt? + +Bash provides a number of backslash-escape sequences which are expanded +when the prompt string (PS1 or PS2) is displayed. The full list is in +the manual page. + +The \w expansion gives the full pathname of the current directory, with +a tilde (`~') substituted for the current value of $HOME. The \W +expansion gives the basename of the current directory. To put the full +pathname of the current directory into the path without any tilde +subsitution, use $PWD. Here are some examples: + + PS1='\w$ ' # current directory with tilde + PS1='\W$ ' # basename of current directory + PS1='$PWD$ ' # full pathname of current directory + +The single quotes are important in the final example to prevent $PWD from +being expanded when the assignment to PS1 is performed. + +G6) How can I rename "*.foo" to "*.bar"? + +Use the pattern removal functionality described in D3. The following `for' +loop will do the trick: + + for f in *.foo; do + mv $f ${f%foo}bar + done + +G7) How can I translate a filename from uppercase to lowercase? + +The script examples/functions/lowercase, originally written by John DuBois, +will do the trick. The converse is left as an exercise. + +G8) How can I write a filename expansion (globbing) pattern that will match + all files in the current directory except "." and ".."? + +You must have set the `extglob' shell option using `shopt -s extglob' to use +this: + + echo .!(.|) * + +A solution that works without extended globbing is given in the Unix Shell +FAQ, posted periodically to comp.unix.shell. + +Section H: Where do I go from here? + +H1) How do I report bugs in bash, and where should I look for fixes and + advice? + +Use the `bashbug' script to report bugs. It is built and +installed at the same time as bash. It provides a standard +template for reporting a problem and automatically includes +information about your configuration and build environment. + +`bashbug' sends its reports to bug-bash@gnu.org, which +is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. + +Bug fixes, answers to questions, and announcements of new releases +are all posted to gnu.bash.bug. Discussions concerning bash features +and problems also take place there. + +To reach the bash maintainers directly, send mail to +bash-maintainers@gnu.org. + +H2) What kind of bash documentation is there? + +First, look in the doc directory in the bash distribution. It should +contain at least the following files: + +bash.1 an extensive, thorough Unix-style manual page +builtins.1 a manual page covering just bash builtin commands +bashref.texi a reference manual in GNU tex`info format +bashref.info an info version of the reference manual +FAQ this file +article.ms text of an article written for The Linux Journal +readline.3 a man page describing readline + +Postscript, HTML, and ASCII files created from the above source are +available in the documentation distribution. + +There is additional documentation available for anonymous FTP from host +ftp.cwru.edu in the `pub/bash' directory. + +Cameron Newham and Bill Rosenblatt have written a book on bash, published +by O'Reilly and Associates. The book is based on Bill Rosenblatt's Korn +Shell book. The title is ``Learning the Bash Shell'', and the ISBN number +is 1-56592-147-X. Look for it in fine bookstores near you. This book +covers bash-1.14, but has an appendix describing some of the new features +in bash-2.0. + +A second edition of this book is available, published in January, 1998. +The ISBN number is 1-56592-347-2. Look for it in the same fine bookstores +or on the web. + +The GNU Bash Reference Manual has been published as a printed book by +Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Feb 2003). It covers +bash-2.0 and is available from most online bookstores (see +http://www.network-theory.co.uk/bash/manual/ for details). The publisher +will donate $1 to the Free Software Foundation for each copy sold. + +H3) What's coming in future versions? + +These are features I hope to include in a future version of bash. + +Rocky Bernstein's bash debugger (support is included with bash-3.0) +associative arrays +co-processes, but with a new-style syntax that looks like function declaration + +H4) What's on the bash `wish list' for future versions? + +These are features that may or may not appear in a future version of bash. + +breaking some of the shell functionality into embeddable libraries +a module system like zsh's, using dynamic loading like builtins +a bash programmer's guide with a chapter on creating loadable builtins +a better loadable interface to perl with access to the shell builtins and + variables (contributions gratefully accepted) +ksh93-like `nameref' variables +ksh93-like `+=' variable assignment operator +ksh93-like `xx.yy' variables (including some of the .sh.* variables) and + associated disipline functions +Some of the new ksh93 pattern matching operators, like backreferencing + +H5) When will the next release appear? + +The next version will appear sometime in 2005. Never make predictions. + +This document is Copyright 1995-2005 by Chester Ramey. + +Permission is hereby granted, without written agreement and +without license or royalty fees, to use, copy, and distribute +this document for any purpose, provided that the above copyright +notice appears in all copies of this document and that the +contents of this document remain unaltered. diff --git a/bash-20060316/doc/FAQ.orig b/bash-20060316/doc/FAQ.orig new file mode 100644 index 000000000..1cff3c8ef --- /dev/null +++ b/bash-20060316/doc/FAQ.orig @@ -0,0 +1,1745 @@ +This is the Bash FAQ, version 3.24, for Bash version 2.05b. + +This document contains a set of frequently-asked questions concerning +Bash, the GNU Bourne-Again Shell. Bash is a freely-available command +interpreter with advanced features for both interactive use and shell +programming. + +Another good source of basic information about shells is the collection +of FAQ articles periodically posted to comp.unix.shell. + +Questions and comments concerning this document should be sent to +chet@po.cwru.edu. + +This document is available for anonymous FTP with the URL + +ftp://ftp.cwru.edu/pub/bash/FAQ + +The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html + +---------- +Contents: + +Section A: The Basics + +A1) What is it? +A2) What's the latest version? +A3) Where can I get it? +A4) On what machines will bash run? +A5) Will bash run on operating systems other than Unix? +A6) How can I build bash with gcc? +A7) How can I make bash my login shell? +A8) I just changed my login shell to bash, and now I can't FTP into my + machine. Why not? +A9) What's the `POSIX 1003.2 standard'? +A10) What is the bash `posix mode'? + +Section B: The latest version + +B1) What's new in version 2.05b? +B2) Are there any user-visible incompatibilities between bash-2.05b and + bash-1.14.7? + +Section C: Differences from other Unix shells + +C1) How does bash differ from sh, the Bourne shell? +C2) How does bash differ from the Korn shell, version ksh88? +C3) Which new features in ksh-93 are not in bash, and which are? + +Section D: Why does bash do some things differently than other Unix shells? + +D1) Why does bash run a different version of `command' than + `which command' says it will? +D2) Why doesn't bash treat brace expansions exactly like csh? +D3) Why doesn't bash have csh variable modifiers? +D4) How can I make my csh aliases work when I convert to bash? +D5) How can I pipe standard output and standard error from one command to + another, like csh does with `|&'? +D6) Now that I've converted from ksh to bash, are there equivalents to + ksh features like autoloaded functions and the `whence' command? + +Section E: Why does bash do certain things the way it does? + +E1) Why is the bash builtin `test' slightly different from /bin/test? +E2) Why does bash sometimes say `Broken pipe'? +E3) When I have terminal escape sequences in my prompt, why does bash + wrap lines at the wrong column? +E4) If I pipe the output of a command into `read variable', why doesn't + the output show up in $variable when the read command finishes? +E5) I have a bunch of shell scripts that use backslash-escaped characters + in arguments to `echo'. Bash doesn't interpret these characters. Why + not, and how can I make it understand them? +E6) Why doesn't a while or for loop get suspended when I type ^Z? +E7) What about empty for loops in Makefiles? +E8) Why does the arithmetic evaluation code complain about `08'? +E9) Why does the pattern matching expression [A-Z]* match files beginning + with every letter except `z'? +E10) Why does `cd //' leave $PWD as `//'? +E11) If I resize my xterm while another program is running, why doesn't bash + notice the change? + +Section F: Things to watch out for on certain Unix versions + +F1) Why can't I use command line editing in my `cmdtool'? +F2) I built bash on Solaris 2. Why do globbing expansions and filename + completion chop off the first few characters of each filename? +F3) Why does bash dump core after I interrupt username completion or + `~user' tilde expansion on a machine running NIS? +F4) I'm running SVR4.2. Why is the line erased every time I type `@'? +F5) Why does bash report syntax errors when my C News scripts use a + redirection before a subshell command? +F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? +F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on + HP/UX 11.x? + +Section G: How can I get bash to do certain common things? + +G1) How can I get bash to read and display eight-bit characters? +G2) How do I write a function `x' to replace builtin command `x', but + still invoke the command from within the function? +G3) How can I find the value of a shell variable whose name is the value + of another shell variable? +G4) How can I make the bash `time' reserved word print timing output that + looks like the output from my system's /usr/bin/time? +G5) How do I get the current directory into my prompt? +G6) How can I rename "*.foo" to "*.bar"? +G7) How can I translate a filename from uppercase to lowercase? +G8) How can I write a filename expansion (globbing) pattern that will match + all files in the current directory except "." and ".."? + +Section H: Where do I go from here? + +H1) How do I report bugs in bash, and where should I look for fixes and + advice? +H2) What kind of bash documentation is there? +H3) What's coming in future versions? +H4) What's on the bash `wish list'? +H5) When will the next release appear? + +---------- +Section A: The Basics + +A1) What is it? + +Bash is a Unix command interpreter (shell). It is an implementation of +the Posix 1003.2 shell standard, and resembles the Korn and System V +shells. + +Bash contains a number of enhancements over those shells, both +for interactive use and shell programming. Features geared +toward interactive use include command line editing, command +history, job control, aliases, and prompt expansion. Programming +features include additional variable expansions, shell +arithmetic, and a number of variables and options to control +shell behavior. + +Bash was originally written by Brian Fox of the Free Software +Foundation. The current developer and maintainer is Chet Ramey +of Case Western Reserve University. + +A2) What's the latest version? + +The latest version is 2.05b, first made available on Wednesday, 17 +July, 2002. + +A3) Where can I get it? + +Bash is the GNU project's shell, and so is available from the +master GNU archive site, ftp.gnu.org, and its mirrors. The +latest version is also available for FTP from ftp.cwru.edu. +The following URLs tell how to get version 2.05b: + +ftp://ftp.gnu.org/pub/gnu/bash/bash-2.05b.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-2.05b.tar.gz + +Formatted versions of the documentation are available with the URLs: + +ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-2.05b.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-doc-2.05b.tar.gz + +A4) On what machines will bash run? + +Bash has been ported to nearly every version of UNIX. All you +should have to do to build it on a machine for which a port +exists is to type `configure' and then `make'. The build process +will attempt to discover the version of UNIX you have and tailor +itself accordingly, using a script created by GNU autoconf. + +More information appears in the file `INSTALL' in the distribution. + +The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html) +explains how to obtain binary versions of bash for most of the major +commercial Unix systems. + +A5) Will bash run on operating systems other than Unix? + +Configuration specifics for Unix-like systems such as QNX and +LynxOS are included in the distribution. Bash-2.05 and later +versions should compile and run on Minix 2.0 (patches were +contributed), but I don't believe anyone has built bash-2.x on +earlier Minix versions yet. + +Bash has been ported to versions of Windows implementing the Win32 +programming interface. This includes Windows 95 and Windows NT. +The port was done by Cygnus Solutions as part of their CYGWIN +project. For more information about the project, look at the URLs + +http://www.cygwin.com/ +http://sourceware.cygnus.com/cygwin + +Cygnus originally ported bash-1.14.7, and that port was part of their +early GNU-Win32 (the original name) releases. Cygnus has also done a +port of bash-2.05 to the CYGWIN environment, and it is available as +part of their current release. + +Bash-2.05b should require no local Cygnus changes to build and run under +CYGWIN. + +The Cygnus port works only on Intel machines. There is a port of bash +(I don't know which version) to the alpha/NT environment available from + +ftp://ftp.gnustep.org//pub/win32/bash-alpha-nt-1.01.tar.gz + +DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part +of the DJGPP project. For more information on the project, see + +http://www.delorie.com/djgpp/ + +I have been told that the original DJGPP port was done by Daisuke Aoyama. + +Mark Elbrecht has sent me notice that bash-2.04 +is available for DJGPP V2. The files are available as: + +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source + +Mark has begun to work with bash-2.05, but I don't know the status. + +Ports of bash-1.12 and bash-2.0 are available for OS/2 from + +ftp://hobbes.nmsu.edu/pub/os2/util/shell/bash_112.zip +ftp://hobbes.nmsu.edu/pub/os2/util/shell/bash-2.0(253).zip + +I haven't looked at either, but the second appears to be a binary-only +distribution. Beware. + +I have received word that Bash (I'm not sure which version, but I +believe that it's at least bash-2.02.1) is the standard shell on +BeOS. + +A6) How can I build bash with gcc? + +Bash configures to use gcc by default if it is available. Read the +file INSTALL in the distribution for more information. + +A7) How can I make bash my login shell? + +Some machines let you use `chsh' to change your login shell. Other +systems use `passwd -s' or `passwd -e'. If one of these works for +you, that's all you need. Note that many systems require the full +pathname to a shell to appear in /etc/shells before you can make it +your login shell. For this, you may need the assistance of your +friendly local system administrator. + +If you cannot do this, you can still use bash as your login shell, but +you need to perform some tricks. The basic idea is to add a command +to your login shell's startup file to replace your login shell with +bash. + +For example, if your login shell is csh or tcsh, and you have installed +bash in /usr/gnu/bin/bash, add the following line to ~/.login: + + if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login + +(the `--login' tells bash that it is a login shell). + +It's not a good idea to put this command into ~/.cshrc, because every +csh you run without the `-f' option, even ones started to run csh scripts, +reads that file. If you must put the command in ~/.cshrc, use something +like + + if ( $?prompt ) exec /usr/gnu/bin/bash --login + +to ensure that bash is exec'd only when the csh is interactive. + +If your login shell is sh or ksh, you have to do two things. + +First, create an empty file in your home directory named `.bash_profile'. +The existence of this file will prevent the exec'd bash from trying to +read ~/.profile, and re-execing itself over and over again. ~/.bash_profile +is the first file bash tries to read initialization commands from when +it is invoked as a login shell. + +Next, add a line similar to the above to ~/.profile: + + [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \ + exec /usr/gnu/bin/bash --login + +This will cause login shells to replace themselves with bash running as +a login shell. Once you have this working, you can copy your initialization +code from ~/.profile to ~/.bash_profile. + +I have received word that the recipe supplied above is insufficient for +machines running CDE. CDE has a maze of twisty little startup files, all +slightly different. + +If you cannot change your login shell in the password file to bash, you +will have to (apparently) live with CDE using the shell in the password +file to run its startup scripts. If you have changed your shell to bash, +there is code in the CDE startup files (on Solaris, at least) that attempts +to do the right thing. It is, however, often broken, and may require that +you use the $BASH_ENV trick described below. + +`dtterm' claims to use $SHELL as the default program to start, so if you +can change $SHELL in the CDE startup files, you should be able to use bash +in your terminal windows. + +Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program +to read your login shell's startup files. You may be able to use bash for +the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as +well, but I have not tried this. + +You can use the above `exec' recipe to start bash when not logging in with +CDE by testing the value of the DT variable: + + if [ -n "$DT" ]; then + [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login + fi + +If CDE starts its shells non-interactively during login, the login shell +startup files (~/.profile, ~/.bash_profile) will not be sourced at login. +To get around this problem, append a line similar to the following to your +~/.dtprofile: + + BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV + +and add the following line to the beginning of ~/.bash_profile: + + unset BASH_ENV + +A8) I just changed my login shell to bash, and now I can't FTP into my + machine. Why not? + +You must add the full pathname to bash to the file /etc/shells. As +noted in the answer to the previous question, many systems require +this before you can make bash your login shell. + +Most versions of ftpd use this file to prohibit `special' users +such as `uucp' and `news' from using FTP. + +A9) What's the `POSIX 1003.2 standard'? + +POSIX is a name originally coined by Richard Stallman for a +family of open system standards based on UNIX. There are a +number of aspects of UNIX under consideration for +standardization, from the basic system services at the system +call and C library level to applications and tools to system +administration and management. Each area of standardization is +assigned to a working group in the 1003 series. + +The POSIX Shell and Utilities standard has been developed by IEEE +Working Group 1003.2 (POSIX.2). It concentrates on the command +interpreter interface and utility programs commonly executed from +the command line or by other programs. An initial version of the +standard has been approved and published by the IEEE, and work is +currently underway to update it. + +Bash is concerned with the aspects of the shell's behavior +defined by POSIX.2. The shell command language has of course +been standardized, including the basic flow control and program +execution constructs, I/O redirection and pipelining, argument +handling, variable expansion, and quoting. + +The `special' builtins, which must be implemented as part of the +shell to provide the desired functionality, are specified as +being part of the shell; examples of these are `eval' and +`export'. Other utilities appear in the sections of POSIX.2 not +devoted to the shell which are commonly (and in some cases must +be) implemented as builtin commands, such as `read' and `test'. +POSIX.2 also specifies aspects of the shell's interactive +behavior as part of the UPE, including job control and command +line editing. Only vi-style line editing commands have been +standardized; emacs editing commands were left out due to +objections. + +The Open Group has made an older version of its Single Unix +Specification (version 2), which is very similar to POSIX.2, +available on the web at + +http://www.opengroup.org/onlinepubs/007908799/ + +The Single Unix Specification, version 3, is available on the web at + +http://www.opengroup.org/onlinepubs/007904975/ + +A10) What is the bash `posix mode'? + +Although bash is an implementation of the POSIX.2 shell +specification, there are areas where the bash default behavior +differs from that spec. The bash `posix mode' changes the bash +behavior in these areas so that it obeys the spec more closely. + +Posix mode is entered by starting bash with the --posix or +'-o posix' option or executing `set -o posix' after bash is running. + +The specific aspects of bash which change when posix mode is +active are listed in the file POSIX in the bash distribution. +They are also listed in a section in the Bash Reference Manual +(from which that file is generated). + +Section B: The latest version + +B1) What's new in version 2.05b? + +The raison d'etre for bash-2.05b is to make a second intermediate +release containing the first of the new features to be available +in bash-3.0 and get feedback on those features before proceeding. +The major new feature is multibyte character support in both Bash +and Readline. + +Bash-2.05b contains the following new features (see the manual page for +complete descriptions and the CHANGES and NEWS files in the bash-2.05b +distribution): + +o support for multibyte characters has been added to both bash and readline + +o the DEBUG trap is now run *before* simple commands, ((...)) commands, + [[...]] conditional commands, and for ((...)) loops + +o the shell now performs arithmetic in the largest integer size the machine + supports (intmax_t) + +o there is a new \D{...} prompt expansion; passes the `...' to strftime(3) + and inserts the result into the expanded prompt + +o there is a new `here-string' redirection operator: <<< word + +o when displaying variables, function attributes and definitions are shown + separately, allowing them to be re-used as input (attempting to re-use + the old output would result in syntax errors). + +o `read' has a new `-u fd' option to read from a specified file descriptor + +o the bash debugger in examples/bashdb has been modified to work with the + new DEBUG trap semantics, the command set has been made more gdb-like, + and the changes to $LINENO make debugging functions work better + +o the expansion of $LINENO inside a shell function is only relative to the + function start if the shell is interactive -- if the shell is running a + script, $LINENO expands to the line number in the script. This is as + POSIX-2001 requires + + +A short feature history dating from Bash-2.0: + +Bash-2.05a introduced the following new features: + +o The `printf' builtin has undergone major work + +o There is a new read-only `shopt' option: login_shell, which is set by + login shells and unset otherwise + +o New `\A' prompt string escape sequence; expanding to time in 24-hour + HH:MM format + +o New `-A group/-g' option to complete and compgen; goes group name + completion + +o New [+-]O invocation option to set and unset `shopt' options at startup + +o ksh-like `ERR' trap + +o `for' loops now allow empty word lists after the `in' reserved word + +o new `hard' and `soft' arguments for the `ulimit' builtin + +o Readline can be configured to place the user at the same point on the line + when retrieving commands from the history list + +o Readline can be configured to skip `hidden' files (filenames with a leading + `.' on Unix) when performing completion + +Bash-2.05 introduced the following new features: + +o This version has once again reverted to using locales and strcoll(3) when + processing pattern matching bracket expressions, as POSIX requires. +o Added a new `--init-file' invocation argument as a synonym for `--rcfile', + per the new GNU coding standards. +o The /dev/tcp and /dev/udp redirections now accept service names as well as + port numbers. +o `complete' and `compgen' now take a `-o value' option, which controls some + of the aspects of that compspec. Valid values are: + + default - perform bash default completion if programmable + completion produces no matches + dirnames - perform directory name completion if programmable + completion produces no matches + filenames - tell readline that the compspec produces filenames, + so it can do things like append slashes to + directory names and suppress trailing spaces +o A new loadable builtin, realpath, which canonicalizes and expands symlinks + in pathname arguments. +o When `set' is called without options, it prints function defintions in a + way that allows them to be reused as input. This affects `declare' and + `declare -p' as well. This only happens when the shell is not in POSIX + mode, since POSIX.2 forbids this behavior. + +Bash-2.04 introduced the following new features: + +o Programmable word completion with the new `complete' and `compgen' builtins; + examples are provided in examples/complete/complete-examples +o `history' has a new `-d' option to delete a history entry +o `bind' has a new `-x' option to bind key sequences to shell commands +o The prompt expansion code has new `\j' and `\l' escape sequences +o The `no_empty_cmd_completion' shell option, if enabled, inhibits + command completion when TAB is typed on an empty line +o `help' has a new `-s' option to print a usage synopsis +o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma) +o New ksh93-style arithmetic for command: + for ((expr1 ; expr2; expr3 )); do list; done +o `read' has new options: `-t', `-n', `-d', `-s' +o The redirection code handles several filenames specially: /dev/fd/N, + /dev/stdin, /dev/stdout, /dev/stderr +o The redirection code now recognizes /dev/tcp/HOST/PORT and + /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively, + to the specified port on the specified host +o The ${!prefix*} expansion has been implemented +o A new FUNCNAME variable, which expands to the name of a currently-executing + function +o The GROUPS variable is no longer readonly +o A new shopt `xpg_echo' variable, to control the behavior of echo with + respect to backslash-escape sequences at runtime +o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned + +The version of Readline released with Bash-2.04, Readline-4.1, had several +new features as well: + +o Parentheses matching is always compiled into readline, and controllable + with the new `blink-matching-paren' variable +o The history-search-forward and history-search-backward functions now leave + point at the end of the line when the search string is empty, like + reverse-search-history, and forward-search-history +o A new function for applications: rl_on_new_line_with_prompt() +o New variables for applications: rl_already_prompted, and rl_gnu_readline_p + + +Bash-2.03 had very few new features, in keeping with the convention +that odd-numbered releases provide mainly bug fixes. A number of new +features were added to Readline, mostly at the request of the Cygnus +folks. + +A new shopt option, `restricted_shell', so that startup files can test + whether or not the shell was started in restricted mode +Filename generation is now performed on the words between ( and ) in + compound array assignments (this is really a bug fix) +OLDPWD is now auto-exported, as POSIX.2 requires +ENV and BASH_ENV are read-only variables in a restricted shell +Bash may now be linked against an already-installed Readline library, + as long as the Readline library is version 4 or newer +All shells begun with the `--login' option will source the login shell + startup files, even if the shell is not interactive + +There were lots of changes to the version of the Readline library released +along with Bash-2.03. For a complete list of the changes, read the file +CHANGES in the Bash-2.03 distribution. + +Bash-2.02 contained the following new features: + +a new version of malloc (based on the old GNU malloc code in previous + bash versions) that is more page-oriented, more conservative + with memory usage, does not `orphan' large blocks when they + are freed, is usable on 64-bit machines, and has allocation + checking turned on unconditionally +POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.) +POSIX.2-style globbing equivalence classes +POSIX.2-style globbing collating symbols +the ksh [[...]] extended conditional command +the ksh egrep-style extended pattern matching operators +a new `printf' builtin +the ksh-like $(, &>, >|, <<<, [n]<&word-, [n]>&word- + prompt string special char translation and variable expansion + auto-export of variables in initial environment + command search finds functions before builtins + bash return builtin will exit a file sourced with `.' + builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t. + export -n/-f/-p/name=value, pwd -L/-P, + read -e/-p/-a/-t/-n/-d/-s/-u, + readonly -a/-f/name=value, trap -l, set +o, + set -b/-m/-o option/-h/-p/-B/-C/-H/-P, + unset -f/-v, ulimit -m/-p/-u, + type -a/-p/-t/-f/-P, suspend -f, kill -n, + test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S + bash reads ~/.bashrc for interactive shells, $ENV for non-interactive + bash restricted shell mode is more extensive + bash allows functions and variables with the same name + brace expansion + tilde expansion + arithmetic expansion with $((...)) and `let' builtin + the `[[...]]' extended conditional command + process substitution + aliases and alias/unalias builtins + local variables in functions and `local' builtin + readline and command-line editing with programmable completion + command history and history/fc builtins + csh-like history expansion + other new bash builtins: bind, command, compgen, complete, builtin, + declare/typeset, dirs, enable, fc, help, + history, logout, popd, pushd, disown, shopt, + printf + exported functions + filename generation when using output redirection (command >a*) + POSIX.2-style globbing character classes + POSIX.2-style globbing equivalence classes + POSIX.2-style globbing collating symbols + egrep-like extended pattern matching operators + case-insensitive pattern matching and globbing + variable assignments preceding commands affect only that command, + even for builtins and functions + posix mode + redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr, + /dev/tcp/host/port, /dev/udp/host/port + +Things sh has that bash does not: + uses variable SHACCT to do shell accounting + includes `stop' builtin (bash can use alias stop='kill -s STOP') + `newgrp' builtin + turns on job control if called as `jsh' + $TIMEOUT (like bash $TMOUT) + `^' is a synonym for `|' + new SVR4.2 sh builtins: mldmode, priv + +Implementation differences: + redirection to/from compound commands causes sh to create a subshell + bash does not allow unbalanced quotes; sh silently inserts them at EOF + bash does not mess with signal 11 + sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100 + bash splits only the results of expansions on IFS, using POSIX.2 + field splitting rules; sh splits all words on IFS + sh does not allow MAILCHECK to be unset (?) + sh does not allow traps on SIGALRM or SIGCHLD + bash allows multiple option arguments when invoked (e.g. -x -v); + sh allows only a single option argument (`sh -x -v' attempts + to open a file named `-v', and, on SunOS 4.1.4, dumps core. + On Solaris 2.4 and earlier versions, sh goes into an infinite + loop.) + sh exits a script if any builtin fails; bash exits only if one of + the POSIX.2 `special' builtins fails + +C2) How does bash differ from the Korn shell, version ksh88? + +Things bash has or uses that ksh88 does not: + long invocation options + [-+]O invocation option + -l invocation option + `!' reserved word + arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done + arithmetic in largest machine-supported size (intmax_t) + posix mode and posix conformance + command hashing + tilde expansion for assignment statements that look like $PATH + process substitution with named pipes if /dev/fd is not available + the ${!param} indirect parameter expansion operator + the ${!param*} prefix expansion operator + the ${param:offset[:length]} parameter substring operator + the ${param/pat[/string]} parameter pattern substitution operator + variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL, + TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, + HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND, + IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK, + PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE, + GROUPS, FUNCNAME, histchars, auto_resume + prompt expansion with backslash escapes and command substitution + redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word- + more extensive and extensible editing and programmable completion + builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable, + exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history, + jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd, + read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p, + set -o braceexpand/-o histexpand/-o interactive-comments/ + -o notify/-o physical/-o posix/-o hashall/-o onecmd/ + -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type, + typeset -a/-F/-p, ulimit -u, umask -S, alias -p, shopt, + disown, printf, complete, compgen + `!' csh-style history expansion + POSIX.2-style globbing character classes + POSIX.2-style globbing equivalence classes + POSIX.2-style globbing collating symbols + egrep-like extended pattern matching operators + case-insensitive pattern matching and globbing + `**' arithmetic operator to do exponentiation + redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr + arrays of unlimited size + TMOUT is default timeout for `read' and `select' + +Things ksh88 has or uses that bash does not: + tracked aliases (alias -t) + variables: ERRNO, FPATH, EDITOR, VISUAL + co-processes (|&, >&p, <&p) + weirdly-scoped functions + typeset +f to list all function names without definitions + text of command history kept in a file, not memory + builtins: alias -x, cd old new, fc -e -, newgrp, print, + read -p/-s/var?prompt, set -A/-o gmacs/ + -o bgnice/-o markdirs/-o nolog/-o trackall/-o viraw/-s, + typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence + using environment to pass attributes of exported variables + arithmetic evaluation done on arguments to some builtins + reads .profile from $PWD when invoked as login shell + +Implementation differences: + ksh runs last command of a pipeline in parent shell context + bash has brace expansion by default (ksh88 compile-time option) + bash has fixed startup file for all interactive shells; ksh reads $ENV + bash has exported functions + bash command search finds functions before builtins + bash waits for all commands in pipeline to exit before returning status + emacs-mode editing has some slightly different key bindings + +C3) Which new features in ksh-93 are not in bash, and which are? + +New things in ksh-93 not in bash-2.05b: + associative arrays + floating point arithmetic and variables + math library functions + ${!name[sub]} name of subscript for associative array + `.' is allowed in variable names to create a hierarchical namespace + more extensive compound assignment syntax + discipline functions + `sleep' and `getconf' builtins (bash has loadable versions) + typeset -n and `nameref' variables + KEYBD trap + variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version, + .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT + backreferences in pattern matching (\N) + `&' operator in pattern lists for matching + print -f (bash uses printf) + `fc' has been renamed to `hist' + `.' can execute shell functions + exit statuses between 0 and 255 + set -o pipefail + `+=' variable assignment operator + FPATH and PATH mixing + getopts -a + -I invocation option + DEBUG trap now executed before each simple command, instead of after + printf %H, %P, %T, %Z modifiers, output base for %d + lexical scoping for local variables in `ksh' functions + no scoping for local variables in `POSIX' functions + +New things in ksh-93 present in bash-2.05b: + [n]<&word- and [n]>&word- redirections (combination dup and close) + for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command + ?:, ++, --, `expr1 , expr2' arithmetic operators + expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]}, + ${!param*} + compound array assignment + the `!' reserved word + loadable builtins -- but ksh uses `builtin' while bash uses `enable' + `command', `builtin', `disown' builtins + new $'...' and $"..." quoting + FIGNORE (but bash uses GLOBIGNORE), HISTCMD + set -o notify/-C + changes to kill builtin + read -A (bash uses read -a) + read -t/-d + trap -p + exec -c/-a + `.' restores the positional parameters when it completes + POSIX.2 `test' + umask -S + unalias -a + command and arithmetic substitution performed on PS1, PS4, and ENV + command name completion + ENV processed only for interactive shells + +Section D: Why does bash do some things differently than other Unix shells? + +D1) Why does bash run a different version of `command' than + `which command' says it will? + +On many systems, `which' is actually a csh script that assumes +you're running csh. In tcsh, `which' and its cousin `where' +are builtins. On other Unix systems, `which' is a perl script +that uses the PATH environment variable. + +The csh script version reads the csh startup files from your +home directory and uses those to determine which `command' will +be invoked. Since bash doesn't use any of those startup files, +there's a good chance that your bash environment differs from +your csh environment. The bash `type' builtin does everything +`which' does, and will report correct results for the running +shell. If you're really wedded to the name `which', try adding +the following function definition to your .bashrc: + + which() + { + builtin type "$@" + } + +If you're moving from tcsh and would like to bring `where' along +as well, use this function: + + where() + { + builtin type -a "$@" + } + +D2) Why doesn't bash treat brace expansions exactly like csh? + +The only difference between bash and csh brace expansion is that +bash requires a brace expression to contain at least one unquoted +comma if it is to be expanded. Any brace-surrounded word not +containing an unquoted comma is left unchanged by the brace +expansion code. This affords the greatest degree of sh +compatibility. + +Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. + +D3) Why doesn't bash have csh variable modifiers? + +Posix has specified a more powerful, albeit somewhat more cryptic, +mechanism cribbed from ksh, and bash implements it. + +${parameter%word} + Remove smallest suffix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + smallest portion of the suffix matched by the pattern deleted. + + x=file.c + echo ${x%.c}.o + -->file.o + +${parameter%%word} + + Remove largest suffix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + largest portion of the suffix matched by the pattern deleted. + + x=posix/src/std + echo ${x%%/*} + -->posix + +${parameter#word} + Remove smallest prefix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + smallest portion of the prefix matched by the pattern deleted. + + x=$HOME/src/cmd + echo ${x#$HOME} + -->/src/cmd + +${parameter##word} + Remove largest prefix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + largest portion of the prefix matched by the pattern deleted. + + x=/one/two/three + echo ${x##*/} + -->three + + +Given + a=/a/b/c/d + b=b.xxx + + csh bash result + --- ---- ------ + $a:h ${a%/*} /a/b/c + $a:t ${a##*/} d + $b:r ${b%.*} b + $b:e ${b##*.} xxx + + +D4) How can I make my csh aliases work when I convert to bash? + +Bash uses a different syntax to support aliases than csh does. +The details can be found in the documentation. We have provided +a shell script which does most of the work of conversion for you; +this script can be found in ./examples/misc/aliasconv.sh. Here is +how you use it: + +Start csh in the normal way for you. (e.g., `csh') + +Pipe the output of `alias' through `aliasconv.sh', saving the +results into `bash_aliases': + + alias | bash aliasconv.sh >bash_aliases + +Edit `bash_aliases', carefully reading through any created +functions. You will need to change the names of some csh specific +variables to the bash equivalents. The script converts $cwd to +$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt +to $PS1. You may also have to add quotes to avoid unwanted +expansion. + +For example, the csh alias: + + alias cd 'cd \!*; echo $cwd' + +is converted to the bash function: + + cd () { command cd "$@"; echo $PWD ; } + +The only thing that needs to be done is to quote $PWD: + + cd () { command cd "$@"; echo "$PWD" ; } + +Merge the edited file into your ~/.bashrc. + +There is an additional, more ambitious, script in +examples/misc/cshtobash that attempts to convert your entire csh +environment to its bash equivalent. This script can be run as +simply `cshtobash' to convert your normal interactive +environment, or as `cshtobash ~/.login' to convert your login +environment. + +D5) How can I pipe standard output and standard error from one command to + another, like csh does with `|&'? + +Use + command 2>&1 | command2 + +The key is to remember that piping is performed before redirection, so +file descriptor 1 points to the pipe when it is duplicated onto file +descriptor 2. + +D6) Now that I've converted from ksh to bash, are there equivalents to + ksh features like autoloaded functions and the `whence' command? + +There are features in ksh-88 and ksh-93 that do not have direct bash +equivalents. Most, however, can be emulated with very little trouble. + +ksh-88 feature Bash equivalent +-------------- --------------- +compiled-in aliases set up aliases in .bashrc; some ksh aliases are + bash builtins (hash, history, type) +coprocesses named pipe pairs (one for read, one for write) +typeset +f declare -F +cd, print, whence function substitutes in examples/functions/kshenv +autoloaded functions examples/functions/autoload is the same as typeset -fu +read var?prompt read -p prompt var + +ksh-93 feature Bash equivalent +-------------- --------------- +sleep, getconf Bash has loadable versions in examples/loadables +${.sh.version} $BASH_VERSION +print -f printf +hist alias hist=fc +$HISTEDIT $FCEDIT + +Section E: How can I get bash to do certain things, and why does bash do + things the way it does? + +E1) Why is the bash builtin `test' slightly different from /bin/test? + +The specific example used here is [ ! x -o x ], which is false. + +Bash's builtin `test' implements the Posix.2 spec, which can be +summarized as follows (the wording is due to David Korn): + +Here is the set of rules for processing test arguments. + + 0 Args: False + 1 Arg: True iff argument is not null. + 2 Args: If first arg is !, True iff second argument is null. + If first argument is unary, then true if unary test is true + Otherwise error. + 3 Args: If second argument is a binary operator, do binary test of $1 $3 + If first argument is !, negate two argument test of $2 $3 + If first argument is `(' and third argument is `)', do the + one-argument test of the second argument. + Otherwise error. + 4 Args: If first argument is !, negate three argument test of $2 $3 $4. + Otherwise unspecified + 5 or more Args: unspecified. (Historical shells would use their + current algorithm). + +The operators -a and -o are considered binary operators for the purpose +of the 3 Arg case. + +As you can see, the test becomes (not (x or x)), which is false. + +E2) Why does bash sometimes say `Broken pipe'? + +If a sequence of commands appears in a pipeline, and one of the +reading commands finishes before the writer has finished, the +writer receives a SIGPIPE signal. Many other shells special-case +SIGPIPE as an exit status in the pipeline and do not report it. +For example, in: + + ps -aux | head + +`head' can finish before `ps' writes all of its output, and ps +will try to write on a pipe without a reader. In that case, bash +will print `Broken pipe' to stderr when ps is killed by a +SIGPIPE. + +You can build a version of bash that will not report SIGPIPE errors +by uncommenting the definition of DONT_REPORT_SIGPIPE in the file +config-top.h. + +E3) When I have terminal escape sequences in my prompt, why does bash + wrap lines at the wrong column? + +Readline, the line editing library that bash uses, does not know +that the terminal escape sequences do not take up space on the +screen. The redisplay code assumes, unless told otherwise, that +each character in the prompt is a `printable' character that +takes up one character position on the screen. + +You can use the bash prompt expansion facility (see the PROMPTING +section in the manual page) to tell readline that sequences of +characters in the prompt strings take up no screen space. + +Use the \[ escape to begin a sequence of non-printing characters, +and the \] escape to signal the end of such a sequence. + +E4) If I pipe the output of a command into `read variable', why doesn't + the output show up in $variable when the read command finishes? + +This has to do with the parent-child relationship between Unix +processes. It affects all commands run in pipelines, not just +simple calls to `read'. For example, piping a command's output +into a `while' loop that repeatedly calls `read' will result in +the same behavior. + +Each element of a pipeline runs in a separate process, a child of +the shell running the pipeline. A subprocess cannot affect its +parent's environment. When the `read' command sets the variable +to the input, that variable is set only in the subshell, not the +parent shell. When the subshell exits, the value of the variable +is lost. + +Many pipelines that end with `read variable' can be converted +into command substitutions, which will capture the output of +a specified command. The output can then be assigned to a +variable: + + grep ^gnu /usr/lib/news/active | wc -l | read ngroup + +can be converted into + + ngroup=$(grep ^gnu /usr/lib/news/active | wc -l) + +This does not, unfortunately, work to split the text among +multiple variables, as read does when given multiple variable +arguments. If you need to do this, you can either use the +command substitution above to read the output into a variable +and chop up the variable using the bash pattern removal +expansion operators or use some variant of the following +approach. + +Say /usr/local/bin/ipaddr is the following shell script: + +#! /bin/sh +host `hostname` | awk '/address/ {print $NF}' + +Instead of using + + /usr/local/bin/ipaddr | read A B C D + +to break the local machine's IP address into separate octets, use + + OIFS="$IFS" + IFS=. + set -- $(/usr/local/bin/ipaddr) + IFS="$OIFS" + A="$1" B="$2" C="$3" D="$4" + +Beware, however, that this will change the shell's positional +parameters. If you need them, you should save them before doing +this. + +This is the general approach -- in most cases you will not need to +set $IFS to a different value. + +Some other user-supplied alternatives include: + +read A B C D << HERE + $(IFS=.; echo $(/usr/local/bin/ipaddr)) +HERE + +and, where process substitution is available, + +read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr)) + +E5) I have a bunch of shell scripts that use backslash-escaped characters + in arguments to `echo'. Bash doesn't interpret these characters. Why + not, and how can I make it understand them? + +This is the behavior of echo on most Unix System V machines. + +The bash builtin `echo' is modeled after the 9th Edition +Research Unix version of `echo'. It does not interpret +backslash-escaped characters in its argument strings by default; +it requires the use of the -e option to enable the +interpretation. The System V echo provides no way to disable the +special characters; the bash echo has a -E option to disable +them. + +There is a configuration option that will make bash behave like +the System V echo and interpret things like `\t' by default. Run +configure with the --enable-xpg-echo-default option to turn this +on. Be aware that this will cause some of the tests run when you +type `make tests' to fail. + +There is a shell option, `xpg_echo', settable with `shopt', that will +change the behavior of echo at runtime. Enabling this option turns +on expansion of backslash-escape sequences. + +E6) Why doesn't a while or for loop get suspended when I type ^Z? + +This is a consequence of how job control works on Unix. The only +thing that can be suspended is the process group. This is a single +command or pipeline of commands that the shell forks and executes. + +When you run a while or for loop, the only thing that the shell forks +and executes are any commands in the while loop test and commands in +the loop bodies. These, therefore, are the only things that can be +suspended when you type ^Z. + +If you want to be able to stop the entire loop, you need to put it +within parentheses, which will force the loop into a subshell that +may be stopped (and subsequently restarted) as a single unit. + +E7) What about empty for loops in Makefiles? + +It's fairly common to see constructs like this in automatically-generated +Makefiles: + +SUBDIRS = @SUBDIRS@ + + ... + +subdirs-clean: + for d in ${SUBDIRS}; do \ + ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ + done + +When SUBDIRS is empty, this results in a command like this being passed to +bash: + + for d in ; do + ( cd $d && ${MAKE} ${MFLAGS} clean ) + done + +In versions of bash before bash-2.05a, this was a syntax error. If the +reserved word `in' was present, a word must follow it before the semicolon +or newline. The language in the manual page referring to the list of words +being empty referred to the list after it is expanded. These versions of +bash required that there be at least one word following the `in' when the +construct was parsed. + +The idiomatic Makefile solution is something like: + +SUBDIRS = @SUBDIRS@ + +subdirs-clean: + subdirs=$SUBDIRS ; for d in $$subdirs; do \ + ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ + done + +The latest drafts of the updated POSIX standard have changed this: the +word list is no longer required. Bash versions 2.05a and later accept +the new syntax. + +E8) Why does the arithmetic evaluation code complain about `08'? + +The bash arithmetic evaluation code (used for `let', $(()), (()), and in +other places), interprets a leading `0' in numeric constants as denoting +an octal number, and a leading `0x' as denoting hexadecimal. This is +in accordance with the POSIX.2 spec, section 2.9.2.1, which states that +arithmetic constants should be handled as signed long integers as defined +by the ANSI/ISO C standard. + +The POSIX.2 interpretation committee has confirmed this: + +http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html + +E9) Why does the pattern matching expression [A-Z]* match files beginning + with every letter except `z'? + +Bash-2.03, Bash-2.05 and later versions honor the current locale setting +when processing ranges within pattern matching bracket expressions ([A-Z]). +This is what POSIX.2 and SUSv3/XPG6 specify. + +The behavior of the matcher in bash-2.05 and later versions depends on the +current LC_COLLATE setting. Setting this variable to `C' or `POSIX' will +result in the traditional behavior ([A-Z] matches all uppercase ASCII +characters). Many other locales, including the en_US locale (the default +on many US versions of Linux) collate the upper and lower case letters like +this: + + AaBb...Zz + +which means that [A-Z] matches every letter except `z'. Others collate like + + aAbBcC...zZ + +which means that [A-Z] matches every letter except `a'. + +The portable way to specify upper case letters is [:upper:] instead of +A-Z; lower case may be specified as [:lower:] instead of a-z. + +Look at the manual pages for setlocale(3), strcoll(3), and, if it is +present, locale(1). If you have locale(1), you can use it to find +your current locale information even if you do not have any of the +LC_ variables set. + +My advice is to put + + export LC_COLLATE=C + +into /etc/profile and inspect any shell scripts run from cron for +constructs like [A-Z]. This will prevent things like + + rm [A-Z]* + +from removing every file in the current directory except those beginning +with `z' and still allow individual users to change the collation order. +Users may put the above command into their own profiles as well, of course. + +E10) Why does `cd //' leave $PWD as `//'? + +POSIX.2, in its description of `cd', says that *three* or more leading +slashes may be replaced with a single slash when canonicalizing the +current working directory. + +This is, I presume, for historical compatibility. Certain versions of +Unix, and early network file systems, used paths of the form +//hostname/path to access `path' on server `hostname'. + +E11) If I resize my xterm while another program is running, why doesn't bash + notice the change? + +This is another issue that deals with job control. + +The kernel maintains a notion of a current terminal process group. Members +of this process group (processes whose process group ID is equal to the +current terminal process group ID) receive terminal-generated signals like +SIGWINCH. (For more details, see the JOB CONTROL section of the bash +man page.) + +If a terminal is resized, the kernel sends SIGWINCH to each member of +the terminal's current process group (the `foreground' process group). + +When bash is running with job control enabled, each pipeline (which may be +a single command) is run in its own process group, different from bash's +process group. This foreground process group receives the SIGWINCH; bash +does not. Bash has no way of knowing that the terminal has been resized. + +There is a `checkwinsize' option, settable with the `shopt' builtin, that +will cause bash to check the window size and adjust its idea of the +terminal's dimensions each time a process stops or exits and returns control +of the terminal to bash. Enable it with `shopt -s checkwinsize'. + +Section F: Things to watch out for on certain Unix versions + +F1) Why can't I use command line editing in my `cmdtool'? + +The problem is `cmdtool' and bash fighting over the input. When +scrolling is enabled in a cmdtool window, cmdtool puts the tty in +`raw mode' to permit command-line editing using the mouse for +applications that cannot do it themselves. As a result, bash and +cmdtool each try to read keyboard input immediately, with neither +getting enough of it to be useful. + +This mode also causes cmdtool to not implement many of the +terminal functions and control sequences appearing in the +`sun-cmd' termcap entry. For a more complete explanation, see +that file examples/suncmd.termcap in the bash distribution. + +`xterm' is a better choice, and gets along with bash much more +smoothly. + +If you must use cmdtool, you can use the termcap description in +examples/suncmd.termcap. Set the TERMCAP variable to the terminal +description contained in that file, i.e. + +TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:' + +Then export TERMCAP and start a new cmdtool window from that shell. +The bash command-line editing should behave better in the new +cmdtool. If this works, you can put the assignment to TERMCAP +in your bashrc file. + +F2) I built bash on Solaris 2. Why do globbing expansions and filename + completion chop off the first few characters of each filename? + +This is the consequence of building bash on SunOS 5 and linking +with the libraries in /usr/ucblib, but using the definitions +and structures from files in /usr/include. + +The actual conflict is between the dirent structure in +/usr/include/dirent.h and the struct returned by the version of +`readdir' in libucb.a (a 4.3-BSD style `struct direct'). + +Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH +when configuring and building bash. This will ensure that you +use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you +link with libc before libucb. + +If you have installed the Sun C compiler, you may also need to +put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before +/usr/ucb. + +F3) Why does bash dump core after I interrupt username completion or + `~user' tilde expansion on a machine running NIS? + +This is a famous and long-standing bug in the SunOS YP (sorry, NIS) +client library, which is part of libc. + +The YP library code keeps static state -- a pointer into the data +returned from the server. When YP initializes itself (setpwent), +it looks at this pointer and calls free on it if it's non-null. +So far, so good. + +If one of the YP functions is interrupted during getpwent (the +exact function is interpretwithsave()), and returns NULL, the +pointer is freed without being reset to NULL, and the function +returns. The next time getpwent is called, it sees that this +pointer is non-null, calls free, and the bash free() blows up +because it's being asked to free freed memory. + +The traditional Unix mallocs allow memory to be freed multiple +times; that's probably why this has never been fixed. You can +run configure with the `--without-gnu-malloc' option to use +the C library malloc and avoid the problem. + +F4) I'm running SVR4.2. Why is the line erased every time I type `@'? + +The `@' character is the default `line kill' character in most +versions of System V, including SVR4.2. You can change this +character to whatever you want using `stty'. For example, to +change the line kill character to control-u, type + + stty kill ^U + +where the `^' and `U' can be two separate characters. + +F5) Why does bash report syntax errors when my C News scripts use a + redirection before a subshell command? + +The actual command in question is something like + + < file ( command ) + +According to the grammar given in the POSIX.2 standard, this construct +is, in fact, a syntax error. Redirections may only precede `simple +commands'. A subshell construct such as the above is one of the shell's +`compound commands'. A redirection may only follow a compound command. + +This affects the mechanical transformation of commands that use `cat' +to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on +comp.unix.shell). While most commands of the form + + cat file | command + +can be converted to `< file command', shell control structures such as +loops and subshells require `command < file'. + +The file CWRU/sh-redir-hack in the bash-2.05a distribution is an +(unofficial) patch to parse.y that will modify the grammar to +support this construct. It will not apply with `patch'; you must +modify parse.y by hand. Note that if you apply this, you must +recompile with -DREDIRECTION_HACK. This introduces a large +number of reduce/reduce conflicts into the shell grammar. + +F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? + +The short answer is that Red Hat screwed up. + +The long answer is that they shipped an /etc/inputrc that only works +for emacs mode editing, and then screwed all the vi users by setting +INPUTRC to /etc/inputrc in /etc/profile. + +The short fix is to do one of the following: remove or rename +/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile, +but make sure you export it if you do), remove the assignment to +INPUTRC from /etc/profile, add + + set keymap emacs + +to the beginning of /etc/inputrc, or bracket the key bindings in +/etc/inputrc with these lines + + $if mode=emacs + [...] + $endif + +F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on + HP/UX 11.x? + +HP/UX's support for long double is imperfect at best. + +GCC will support it without problems, but the HP C library functions +like strtold(3) and printf(3) don't actually work with long doubles. +HP implemented a `long_double' type as a 4-element array of 32-bit +ints, and that is what the library functions use. The ANSI C +`long double' type is a 128-bit floating point scalar. + +The easiest fix, until HP fixes things up, is to edit the generated +config.h and #undef the HAVE_LONG_DOUBLE line. After doing that, +the compilation should complete successfully. + +Section G: How can I get bash to do certain common things? + +G1) How can I get bash to read and display eight-bit characters? + +This is a process requiring several steps. + +First, you must ensure that the `physical' data path is a full eight +bits. For xterms, for example, the `vt100' resources `eightBitInput' +and `eightBitOutput' should be set to `true'. + +Once you have set up an eight-bit path, you must tell the kernel and +tty driver to leave the eighth bit of characters alone when processing +keyboard input. Use `stty' to do this: + + stty cs8 -istrip -parenb + +For old BSD-style systems, you can use + + stty pass8 + +You may also need + + stty even odd + +Finally, you need to tell readline that you will be inputting and +displaying eight-bit characters. You use readline variables to do +this. These variables can be set in your .inputrc or using the bash +`bind' builtin. Here's an example using `bind': + + bash$ bind 'set convert-meta off' + bash$ bind 'set meta-flag on' + bash$ bind 'set output-meta on' + +The `set' commands between the single quotes may also be placed +in ~/.inputrc. + +G2) How do I write a function `x' to replace builtin command `x', but + still invoke the command from within the function? + +This is why the `command' and `builtin' builtins exist. The +`command' builtin executes the command supplied as its first +argument, skipping over any function defined with that name. The +`builtin' builtin executes the builtin command given as its first +argument directly. + +For example, to write a function to replace `cd' that writes the +hostname and current directory to an xterm title bar, use +something like the following: + + cd() + { + builtin cd "$@" && xtitle "$HOST: $PWD" + } + +This could also be written using `command' instead of `builtin'; +the version above is marginally more efficient. + +G3) How can I find the value of a shell variable whose name is the value + of another shell variable? + +Versions of Bash newer than Bash-2.0 support this directly. You can use + + ${!var} + +For example, the following sequence of commands will echo `z': + + var1=var2 + var2=z + echo ${!var1} + +For sh compatibility, use the `eval' builtin. The important +thing to remember is that `eval' expands the arguments you give +it again, so you need to quote the parts of the arguments that +you want `eval' to act on. + +For example, this expression prints the value of the last positional +parameter: + + eval echo \"\$\{$#\}\" + +The expansion of the quoted portions of this expression will be +deferred until `eval' runs, while the `$#' will be expanded +before `eval' is executed. In versions of bash later than bash-2.0, + + echo ${!#} + +does the same thing. + +This is not the same thing as ksh93 `nameref' variables, though the syntax +is similar. I may add namerefs in a future bash version. + +G4) How can I make the bash `time' reserved word print timing output that + looks like the output from my system's /usr/bin/time? + +The bash command timing code looks for a variable `TIMEFORMAT' and +uses its value as a format string to decide how to display the +timing statistics. + +The value of TIMEFORMAT is a string with `%' escapes expanded in a +fashion similar in spirit to printf(3). The manual page explains +the meanings of the escape sequences in the format string. + +If TIMEFORMAT is not set, bash acts as if the following assignment had +been performed: + + TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' + +The POSIX.2 default time format (used by `time -p command') is + + TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S' + +The BSD /usr/bin/time format can be emulated with: + + TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys' + +The System V /usr/bin/time format can be emulated with: + + TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S' + +The ksh format can be emulated with: + + TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS' + +G5) How do I get the current directory into my prompt? + +Bash provides a number of backslash-escape sequences which are expanded +when the prompt string (PS1 or PS2) is displayed. The full list is in +the manual page. + +The \w expansion gives the full pathname of the current directory, with +a tilde (`~') substituted for the current value of $HOME. The \W +expansion gives the basename of the current directory. To put the full +pathname of the current directory into the path without any tilde +subsitution, use $PWD. Here are some examples: + + PS1='\w$ ' # current directory with tilde + PS1='\W$ ' # basename of current directory + PS1='$PWD$ ' # full pathname of current directory + +The single quotes are important in the final example to prevent $PWD from +being expanded when the assignment to PS1 is performed. + +G6) How can I rename "*.foo" to "*.bar"? + +Use the pattern removal functionality described in D3. The following `for' +loop will do the trick: + + for f in *.foo; do + mv $f ${f%foo}bar + done + +G7) How can I translate a filename from uppercase to lowercase? + +The script examples/functions/lowercase, originally written by John DuBois, +will do the trick. The converse is left as an exercise. + +G8) How can I write a filename expansion (globbing) pattern that will match + all files in the current directory except "." and ".."? + +You must have set the `extglob' shell option using `shopt -s extglob' to use +this: + + echo .!(.|) * + +A solution that works without extended globbing is given in the Unix Shell +FAQ, posted periodically to comp.unix.shell. + +Section H: Where do I go from here? + +H1) How do I report bugs in bash, and where should I look for fixes and + advice? + +Use the `bashbug' script to report bugs. It is built and +installed at the same time as bash. It provides a standard +template for reporting a problem and automatically includes +information about your configuration and build environment. + +`bashbug' sends its reports to bug-bash@gnu.org, which +is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. + +Bug fixes, answers to questions, and announcements of new releases +are all posted to gnu.bash.bug. Discussions concerning bash features +and problems also take place there. + +To reach the bash maintainers directly, send mail to +bash-maintainers@gnu.org. + +H2) What kind of bash documentation is there? + +First, look in the doc directory in the bash distribution. It should +contain at least the following files: + +bash.1 an extensive, thorough Unix-style manual page +builtins.1 a manual page covering just bash builtin commands +bashref.texi a reference manual in GNU tex`info format +bashref.info an info version of the reference manual +FAQ this file +article.ms text of an article written for The Linux Journal +readline.3 a man page describing readline + +Postscript, HTML, and ASCII files created from the above source are +available in the documentation distribution. + +There is additional documentation available for anonymous FTP from host +ftp.cwru.edu in the `pub/bash' directory. + +Cameron Newham and Bill Rosenblatt have written a book on bash, published +by O'Reilly and Associates. The book is based on Bill Rosenblatt's Korn +Shell book. The title is ``Learning the Bash Shell'', and the ISBN number +is 1-56592-147-X. Look for it in fine bookstores near you. This book +covers bash-1.14, but has an appendix describing some of the new features +in bash-2.0. + +A second edition of this book is available, published in January, 1998. +The ISBN number is 1-56592-347-2. Look for it in the same fine bookstores +or on the web. + +The GNU Bash Reference Manual has been published as a printed book by +Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Feb 2003). It covers +bash-2.0 and is available from most online bookstores (see +http://www.network-theory.co.uk/bash/manual/ for details). The publisher +will donate $1 to the Free Software Foundation for each copy sold. + +H3) What's coming in future versions? + +These are features I hope to include in a future version of bash. + +a better bash debugger (a minimally-tested version is included with bash-2.05b) +associative arrays +co-processes, but with a new-style syntax that looks like function declaration + +H4) What's on the bash `wish list' for future versions? + +These are features that may or may not appear in a future version of bash. + +breaking some of the shell functionality into embeddable libraries +a module system like zsh's, using dynamic loading like builtins +better internationalization using GNU `gettext' +date-stamped command history +a bash programmer's guide with a chapter on creating loadable builtins +a better loadable interface to perl with access to the shell builtins and + variables (contributions gratefully accepted) +ksh93-like `nameref' variables +ksh93-like `+=' variable assignment operator +ksh93-like `xx.yy' variables (including some of the .sh.* variables) and + associated disipline functions +Some of the new ksh93 pattern matching operators, like backreferencing + +H5) When will the next release appear? + +The next version will appear sometime in 2002. Never make predictions. + + +This document is Copyright 1995-2003 by Chester Ramey. + +Permission is hereby granted, without written agreement and +without license or royalty fees, to use, copy, and distribute +this document for any purpose, provided that the above copyright +notice appears in all copies of this document and that the +contents of this document remain unaltered. diff --git a/bash-20060316/doc/FAQ.save b/bash-20060316/doc/FAQ.save new file mode 100644 index 000000000..1cff3c8ef --- /dev/null +++ b/bash-20060316/doc/FAQ.save @@ -0,0 +1,1745 @@ +This is the Bash FAQ, version 3.24, for Bash version 2.05b. + +This document contains a set of frequently-asked questions concerning +Bash, the GNU Bourne-Again Shell. Bash is a freely-available command +interpreter with advanced features for both interactive use and shell +programming. + +Another good source of basic information about shells is the collection +of FAQ articles periodically posted to comp.unix.shell. + +Questions and comments concerning this document should be sent to +chet@po.cwru.edu. + +This document is available for anonymous FTP with the URL + +ftp://ftp.cwru.edu/pub/bash/FAQ + +The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html + +---------- +Contents: + +Section A: The Basics + +A1) What is it? +A2) What's the latest version? +A3) Where can I get it? +A4) On what machines will bash run? +A5) Will bash run on operating systems other than Unix? +A6) How can I build bash with gcc? +A7) How can I make bash my login shell? +A8) I just changed my login shell to bash, and now I can't FTP into my + machine. Why not? +A9) What's the `POSIX 1003.2 standard'? +A10) What is the bash `posix mode'? + +Section B: The latest version + +B1) What's new in version 2.05b? +B2) Are there any user-visible incompatibilities between bash-2.05b and + bash-1.14.7? + +Section C: Differences from other Unix shells + +C1) How does bash differ from sh, the Bourne shell? +C2) How does bash differ from the Korn shell, version ksh88? +C3) Which new features in ksh-93 are not in bash, and which are? + +Section D: Why does bash do some things differently than other Unix shells? + +D1) Why does bash run a different version of `command' than + `which command' says it will? +D2) Why doesn't bash treat brace expansions exactly like csh? +D3) Why doesn't bash have csh variable modifiers? +D4) How can I make my csh aliases work when I convert to bash? +D5) How can I pipe standard output and standard error from one command to + another, like csh does with `|&'? +D6) Now that I've converted from ksh to bash, are there equivalents to + ksh features like autoloaded functions and the `whence' command? + +Section E: Why does bash do certain things the way it does? + +E1) Why is the bash builtin `test' slightly different from /bin/test? +E2) Why does bash sometimes say `Broken pipe'? +E3) When I have terminal escape sequences in my prompt, why does bash + wrap lines at the wrong column? +E4) If I pipe the output of a command into `read variable', why doesn't + the output show up in $variable when the read command finishes? +E5) I have a bunch of shell scripts that use backslash-escaped characters + in arguments to `echo'. Bash doesn't interpret these characters. Why + not, and how can I make it understand them? +E6) Why doesn't a while or for loop get suspended when I type ^Z? +E7) What about empty for loops in Makefiles? +E8) Why does the arithmetic evaluation code complain about `08'? +E9) Why does the pattern matching expression [A-Z]* match files beginning + with every letter except `z'? +E10) Why does `cd //' leave $PWD as `//'? +E11) If I resize my xterm while another program is running, why doesn't bash + notice the change? + +Section F: Things to watch out for on certain Unix versions + +F1) Why can't I use command line editing in my `cmdtool'? +F2) I built bash on Solaris 2. Why do globbing expansions and filename + completion chop off the first few characters of each filename? +F3) Why does bash dump core after I interrupt username completion or + `~user' tilde expansion on a machine running NIS? +F4) I'm running SVR4.2. Why is the line erased every time I type `@'? +F5) Why does bash report syntax errors when my C News scripts use a + redirection before a subshell command? +F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? +F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on + HP/UX 11.x? + +Section G: How can I get bash to do certain common things? + +G1) How can I get bash to read and display eight-bit characters? +G2) How do I write a function `x' to replace builtin command `x', but + still invoke the command from within the function? +G3) How can I find the value of a shell variable whose name is the value + of another shell variable? +G4) How can I make the bash `time' reserved word print timing output that + looks like the output from my system's /usr/bin/time? +G5) How do I get the current directory into my prompt? +G6) How can I rename "*.foo" to "*.bar"? +G7) How can I translate a filename from uppercase to lowercase? +G8) How can I write a filename expansion (globbing) pattern that will match + all files in the current directory except "." and ".."? + +Section H: Where do I go from here? + +H1) How do I report bugs in bash, and where should I look for fixes and + advice? +H2) What kind of bash documentation is there? +H3) What's coming in future versions? +H4) What's on the bash `wish list'? +H5) When will the next release appear? + +---------- +Section A: The Basics + +A1) What is it? + +Bash is a Unix command interpreter (shell). It is an implementation of +the Posix 1003.2 shell standard, and resembles the Korn and System V +shells. + +Bash contains a number of enhancements over those shells, both +for interactive use and shell programming. Features geared +toward interactive use include command line editing, command +history, job control, aliases, and prompt expansion. Programming +features include additional variable expansions, shell +arithmetic, and a number of variables and options to control +shell behavior. + +Bash was originally written by Brian Fox of the Free Software +Foundation. The current developer and maintainer is Chet Ramey +of Case Western Reserve University. + +A2) What's the latest version? + +The latest version is 2.05b, first made available on Wednesday, 17 +July, 2002. + +A3) Where can I get it? + +Bash is the GNU project's shell, and so is available from the +master GNU archive site, ftp.gnu.org, and its mirrors. The +latest version is also available for FTP from ftp.cwru.edu. +The following URLs tell how to get version 2.05b: + +ftp://ftp.gnu.org/pub/gnu/bash/bash-2.05b.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-2.05b.tar.gz + +Formatted versions of the documentation are available with the URLs: + +ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-2.05b.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-doc-2.05b.tar.gz + +A4) On what machines will bash run? + +Bash has been ported to nearly every version of UNIX. All you +should have to do to build it on a machine for which a port +exists is to type `configure' and then `make'. The build process +will attempt to discover the version of UNIX you have and tailor +itself accordingly, using a script created by GNU autoconf. + +More information appears in the file `INSTALL' in the distribution. + +The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html) +explains how to obtain binary versions of bash for most of the major +commercial Unix systems. + +A5) Will bash run on operating systems other than Unix? + +Configuration specifics for Unix-like systems such as QNX and +LynxOS are included in the distribution. Bash-2.05 and later +versions should compile and run on Minix 2.0 (patches were +contributed), but I don't believe anyone has built bash-2.x on +earlier Minix versions yet. + +Bash has been ported to versions of Windows implementing the Win32 +programming interface. This includes Windows 95 and Windows NT. +The port was done by Cygnus Solutions as part of their CYGWIN +project. For more information about the project, look at the URLs + +http://www.cygwin.com/ +http://sourceware.cygnus.com/cygwin + +Cygnus originally ported bash-1.14.7, and that port was part of their +early GNU-Win32 (the original name) releases. Cygnus has also done a +port of bash-2.05 to the CYGWIN environment, and it is available as +part of their current release. + +Bash-2.05b should require no local Cygnus changes to build and run under +CYGWIN. + +The Cygnus port works only on Intel machines. There is a port of bash +(I don't know which version) to the alpha/NT environment available from + +ftp://ftp.gnustep.org//pub/win32/bash-alpha-nt-1.01.tar.gz + +DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part +of the DJGPP project. For more information on the project, see + +http://www.delorie.com/djgpp/ + +I have been told that the original DJGPP port was done by Daisuke Aoyama. + +Mark Elbrecht has sent me notice that bash-2.04 +is available for DJGPP V2. The files are available as: + +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source + +Mark has begun to work with bash-2.05, but I don't know the status. + +Ports of bash-1.12 and bash-2.0 are available for OS/2 from + +ftp://hobbes.nmsu.edu/pub/os2/util/shell/bash_112.zip +ftp://hobbes.nmsu.edu/pub/os2/util/shell/bash-2.0(253).zip + +I haven't looked at either, but the second appears to be a binary-only +distribution. Beware. + +I have received word that Bash (I'm not sure which version, but I +believe that it's at least bash-2.02.1) is the standard shell on +BeOS. + +A6) How can I build bash with gcc? + +Bash configures to use gcc by default if it is available. Read the +file INSTALL in the distribution for more information. + +A7) How can I make bash my login shell? + +Some machines let you use `chsh' to change your login shell. Other +systems use `passwd -s' or `passwd -e'. If one of these works for +you, that's all you need. Note that many systems require the full +pathname to a shell to appear in /etc/shells before you can make it +your login shell. For this, you may need the assistance of your +friendly local system administrator. + +If you cannot do this, you can still use bash as your login shell, but +you need to perform some tricks. The basic idea is to add a command +to your login shell's startup file to replace your login shell with +bash. + +For example, if your login shell is csh or tcsh, and you have installed +bash in /usr/gnu/bin/bash, add the following line to ~/.login: + + if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login + +(the `--login' tells bash that it is a login shell). + +It's not a good idea to put this command into ~/.cshrc, because every +csh you run without the `-f' option, even ones started to run csh scripts, +reads that file. If you must put the command in ~/.cshrc, use something +like + + if ( $?prompt ) exec /usr/gnu/bin/bash --login + +to ensure that bash is exec'd only when the csh is interactive. + +If your login shell is sh or ksh, you have to do two things. + +First, create an empty file in your home directory named `.bash_profile'. +The existence of this file will prevent the exec'd bash from trying to +read ~/.profile, and re-execing itself over and over again. ~/.bash_profile +is the first file bash tries to read initialization commands from when +it is invoked as a login shell. + +Next, add a line similar to the above to ~/.profile: + + [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \ + exec /usr/gnu/bin/bash --login + +This will cause login shells to replace themselves with bash running as +a login shell. Once you have this working, you can copy your initialization +code from ~/.profile to ~/.bash_profile. + +I have received word that the recipe supplied above is insufficient for +machines running CDE. CDE has a maze of twisty little startup files, all +slightly different. + +If you cannot change your login shell in the password file to bash, you +will have to (apparently) live with CDE using the shell in the password +file to run its startup scripts. If you have changed your shell to bash, +there is code in the CDE startup files (on Solaris, at least) that attempts +to do the right thing. It is, however, often broken, and may require that +you use the $BASH_ENV trick described below. + +`dtterm' claims to use $SHELL as the default program to start, so if you +can change $SHELL in the CDE startup files, you should be able to use bash +in your terminal windows. + +Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program +to read your login shell's startup files. You may be able to use bash for +the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as +well, but I have not tried this. + +You can use the above `exec' recipe to start bash when not logging in with +CDE by testing the value of the DT variable: + + if [ -n "$DT" ]; then + [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login + fi + +If CDE starts its shells non-interactively during login, the login shell +startup files (~/.profile, ~/.bash_profile) will not be sourced at login. +To get around this problem, append a line similar to the following to your +~/.dtprofile: + + BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV + +and add the following line to the beginning of ~/.bash_profile: + + unset BASH_ENV + +A8) I just changed my login shell to bash, and now I can't FTP into my + machine. Why not? + +You must add the full pathname to bash to the file /etc/shells. As +noted in the answer to the previous question, many systems require +this before you can make bash your login shell. + +Most versions of ftpd use this file to prohibit `special' users +such as `uucp' and `news' from using FTP. + +A9) What's the `POSIX 1003.2 standard'? + +POSIX is a name originally coined by Richard Stallman for a +family of open system standards based on UNIX. There are a +number of aspects of UNIX under consideration for +standardization, from the basic system services at the system +call and C library level to applications and tools to system +administration and management. Each area of standardization is +assigned to a working group in the 1003 series. + +The POSIX Shell and Utilities standard has been developed by IEEE +Working Group 1003.2 (POSIX.2). It concentrates on the command +interpreter interface and utility programs commonly executed from +the command line or by other programs. An initial version of the +standard has been approved and published by the IEEE, and work is +currently underway to update it. + +Bash is concerned with the aspects of the shell's behavior +defined by POSIX.2. The shell command language has of course +been standardized, including the basic flow control and program +execution constructs, I/O redirection and pipelining, argument +handling, variable expansion, and quoting. + +The `special' builtins, which must be implemented as part of the +shell to provide the desired functionality, are specified as +being part of the shell; examples of these are `eval' and +`export'. Other utilities appear in the sections of POSIX.2 not +devoted to the shell which are commonly (and in some cases must +be) implemented as builtin commands, such as `read' and `test'. +POSIX.2 also specifies aspects of the shell's interactive +behavior as part of the UPE, including job control and command +line editing. Only vi-style line editing commands have been +standardized; emacs editing commands were left out due to +objections. + +The Open Group has made an older version of its Single Unix +Specification (version 2), which is very similar to POSIX.2, +available on the web at + +http://www.opengroup.org/onlinepubs/007908799/ + +The Single Unix Specification, version 3, is available on the web at + +http://www.opengroup.org/onlinepubs/007904975/ + +A10) What is the bash `posix mode'? + +Although bash is an implementation of the POSIX.2 shell +specification, there are areas where the bash default behavior +differs from that spec. The bash `posix mode' changes the bash +behavior in these areas so that it obeys the spec more closely. + +Posix mode is entered by starting bash with the --posix or +'-o posix' option or executing `set -o posix' after bash is running. + +The specific aspects of bash which change when posix mode is +active are listed in the file POSIX in the bash distribution. +They are also listed in a section in the Bash Reference Manual +(from which that file is generated). + +Section B: The latest version + +B1) What's new in version 2.05b? + +The raison d'etre for bash-2.05b is to make a second intermediate +release containing the first of the new features to be available +in bash-3.0 and get feedback on those features before proceeding. +The major new feature is multibyte character support in both Bash +and Readline. + +Bash-2.05b contains the following new features (see the manual page for +complete descriptions and the CHANGES and NEWS files in the bash-2.05b +distribution): + +o support for multibyte characters has been added to both bash and readline + +o the DEBUG trap is now run *before* simple commands, ((...)) commands, + [[...]] conditional commands, and for ((...)) loops + +o the shell now performs arithmetic in the largest integer size the machine + supports (intmax_t) + +o there is a new \D{...} prompt expansion; passes the `...' to strftime(3) + and inserts the result into the expanded prompt + +o there is a new `here-string' redirection operator: <<< word + +o when displaying variables, function attributes and definitions are shown + separately, allowing them to be re-used as input (attempting to re-use + the old output would result in syntax errors). + +o `read' has a new `-u fd' option to read from a specified file descriptor + +o the bash debugger in examples/bashdb has been modified to work with the + new DEBUG trap semantics, the command set has been made more gdb-like, + and the changes to $LINENO make debugging functions work better + +o the expansion of $LINENO inside a shell function is only relative to the + function start if the shell is interactive -- if the shell is running a + script, $LINENO expands to the line number in the script. This is as + POSIX-2001 requires + + +A short feature history dating from Bash-2.0: + +Bash-2.05a introduced the following new features: + +o The `printf' builtin has undergone major work + +o There is a new read-only `shopt' option: login_shell, which is set by + login shells and unset otherwise + +o New `\A' prompt string escape sequence; expanding to time in 24-hour + HH:MM format + +o New `-A group/-g' option to complete and compgen; goes group name + completion + +o New [+-]O invocation option to set and unset `shopt' options at startup + +o ksh-like `ERR' trap + +o `for' loops now allow empty word lists after the `in' reserved word + +o new `hard' and `soft' arguments for the `ulimit' builtin + +o Readline can be configured to place the user at the same point on the line + when retrieving commands from the history list + +o Readline can be configured to skip `hidden' files (filenames with a leading + `.' on Unix) when performing completion + +Bash-2.05 introduced the following new features: + +o This version has once again reverted to using locales and strcoll(3) when + processing pattern matching bracket expressions, as POSIX requires. +o Added a new `--init-file' invocation argument as a synonym for `--rcfile', + per the new GNU coding standards. +o The /dev/tcp and /dev/udp redirections now accept service names as well as + port numbers. +o `complete' and `compgen' now take a `-o value' option, which controls some + of the aspects of that compspec. Valid values are: + + default - perform bash default completion if programmable + completion produces no matches + dirnames - perform directory name completion if programmable + completion produces no matches + filenames - tell readline that the compspec produces filenames, + so it can do things like append slashes to + directory names and suppress trailing spaces +o A new loadable builtin, realpath, which canonicalizes and expands symlinks + in pathname arguments. +o When `set' is called without options, it prints function defintions in a + way that allows them to be reused as input. This affects `declare' and + `declare -p' as well. This only happens when the shell is not in POSIX + mode, since POSIX.2 forbids this behavior. + +Bash-2.04 introduced the following new features: + +o Programmable word completion with the new `complete' and `compgen' builtins; + examples are provided in examples/complete/complete-examples +o `history' has a new `-d' option to delete a history entry +o `bind' has a new `-x' option to bind key sequences to shell commands +o The prompt expansion code has new `\j' and `\l' escape sequences +o The `no_empty_cmd_completion' shell option, if enabled, inhibits + command completion when TAB is typed on an empty line +o `help' has a new `-s' option to print a usage synopsis +o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma) +o New ksh93-style arithmetic for command: + for ((expr1 ; expr2; expr3 )); do list; done +o `read' has new options: `-t', `-n', `-d', `-s' +o The redirection code handles several filenames specially: /dev/fd/N, + /dev/stdin, /dev/stdout, /dev/stderr +o The redirection code now recognizes /dev/tcp/HOST/PORT and + /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively, + to the specified port on the specified host +o The ${!prefix*} expansion has been implemented +o A new FUNCNAME variable, which expands to the name of a currently-executing + function +o The GROUPS variable is no longer readonly +o A new shopt `xpg_echo' variable, to control the behavior of echo with + respect to backslash-escape sequences at runtime +o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned + +The version of Readline released with Bash-2.04, Readline-4.1, had several +new features as well: + +o Parentheses matching is always compiled into readline, and controllable + with the new `blink-matching-paren' variable +o The history-search-forward and history-search-backward functions now leave + point at the end of the line when the search string is empty, like + reverse-search-history, and forward-search-history +o A new function for applications: rl_on_new_line_with_prompt() +o New variables for applications: rl_already_prompted, and rl_gnu_readline_p + + +Bash-2.03 had very few new features, in keeping with the convention +that odd-numbered releases provide mainly bug fixes. A number of new +features were added to Readline, mostly at the request of the Cygnus +folks. + +A new shopt option, `restricted_shell', so that startup files can test + whether or not the shell was started in restricted mode +Filename generation is now performed on the words between ( and ) in + compound array assignments (this is really a bug fix) +OLDPWD is now auto-exported, as POSIX.2 requires +ENV and BASH_ENV are read-only variables in a restricted shell +Bash may now be linked against an already-installed Readline library, + as long as the Readline library is version 4 or newer +All shells begun with the `--login' option will source the login shell + startup files, even if the shell is not interactive + +There were lots of changes to the version of the Readline library released +along with Bash-2.03. For a complete list of the changes, read the file +CHANGES in the Bash-2.03 distribution. + +Bash-2.02 contained the following new features: + +a new version of malloc (based on the old GNU malloc code in previous + bash versions) that is more page-oriented, more conservative + with memory usage, does not `orphan' large blocks when they + are freed, is usable on 64-bit machines, and has allocation + checking turned on unconditionally +POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.) +POSIX.2-style globbing equivalence classes +POSIX.2-style globbing collating symbols +the ksh [[...]] extended conditional command +the ksh egrep-style extended pattern matching operators +a new `printf' builtin +the ksh-like $(, &>, >|, <<<, [n]<&word-, [n]>&word- + prompt string special char translation and variable expansion + auto-export of variables in initial environment + command search finds functions before builtins + bash return builtin will exit a file sourced with `.' + builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t. + export -n/-f/-p/name=value, pwd -L/-P, + read -e/-p/-a/-t/-n/-d/-s/-u, + readonly -a/-f/name=value, trap -l, set +o, + set -b/-m/-o option/-h/-p/-B/-C/-H/-P, + unset -f/-v, ulimit -m/-p/-u, + type -a/-p/-t/-f/-P, suspend -f, kill -n, + test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S + bash reads ~/.bashrc for interactive shells, $ENV for non-interactive + bash restricted shell mode is more extensive + bash allows functions and variables with the same name + brace expansion + tilde expansion + arithmetic expansion with $((...)) and `let' builtin + the `[[...]]' extended conditional command + process substitution + aliases and alias/unalias builtins + local variables in functions and `local' builtin + readline and command-line editing with programmable completion + command history and history/fc builtins + csh-like history expansion + other new bash builtins: bind, command, compgen, complete, builtin, + declare/typeset, dirs, enable, fc, help, + history, logout, popd, pushd, disown, shopt, + printf + exported functions + filename generation when using output redirection (command >a*) + POSIX.2-style globbing character classes + POSIX.2-style globbing equivalence classes + POSIX.2-style globbing collating symbols + egrep-like extended pattern matching operators + case-insensitive pattern matching and globbing + variable assignments preceding commands affect only that command, + even for builtins and functions + posix mode + redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr, + /dev/tcp/host/port, /dev/udp/host/port + +Things sh has that bash does not: + uses variable SHACCT to do shell accounting + includes `stop' builtin (bash can use alias stop='kill -s STOP') + `newgrp' builtin + turns on job control if called as `jsh' + $TIMEOUT (like bash $TMOUT) + `^' is a synonym for `|' + new SVR4.2 sh builtins: mldmode, priv + +Implementation differences: + redirection to/from compound commands causes sh to create a subshell + bash does not allow unbalanced quotes; sh silently inserts them at EOF + bash does not mess with signal 11 + sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100 + bash splits only the results of expansions on IFS, using POSIX.2 + field splitting rules; sh splits all words on IFS + sh does not allow MAILCHECK to be unset (?) + sh does not allow traps on SIGALRM or SIGCHLD + bash allows multiple option arguments when invoked (e.g. -x -v); + sh allows only a single option argument (`sh -x -v' attempts + to open a file named `-v', and, on SunOS 4.1.4, dumps core. + On Solaris 2.4 and earlier versions, sh goes into an infinite + loop.) + sh exits a script if any builtin fails; bash exits only if one of + the POSIX.2 `special' builtins fails + +C2) How does bash differ from the Korn shell, version ksh88? + +Things bash has or uses that ksh88 does not: + long invocation options + [-+]O invocation option + -l invocation option + `!' reserved word + arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done + arithmetic in largest machine-supported size (intmax_t) + posix mode and posix conformance + command hashing + tilde expansion for assignment statements that look like $PATH + process substitution with named pipes if /dev/fd is not available + the ${!param} indirect parameter expansion operator + the ${!param*} prefix expansion operator + the ${param:offset[:length]} parameter substring operator + the ${param/pat[/string]} parameter pattern substitution operator + variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL, + TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, + HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND, + IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK, + PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE, + GROUPS, FUNCNAME, histchars, auto_resume + prompt expansion with backslash escapes and command substitution + redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word- + more extensive and extensible editing and programmable completion + builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable, + exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history, + jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd, + read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p, + set -o braceexpand/-o histexpand/-o interactive-comments/ + -o notify/-o physical/-o posix/-o hashall/-o onecmd/ + -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type, + typeset -a/-F/-p, ulimit -u, umask -S, alias -p, shopt, + disown, printf, complete, compgen + `!' csh-style history expansion + POSIX.2-style globbing character classes + POSIX.2-style globbing equivalence classes + POSIX.2-style globbing collating symbols + egrep-like extended pattern matching operators + case-insensitive pattern matching and globbing + `**' arithmetic operator to do exponentiation + redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr + arrays of unlimited size + TMOUT is default timeout for `read' and `select' + +Things ksh88 has or uses that bash does not: + tracked aliases (alias -t) + variables: ERRNO, FPATH, EDITOR, VISUAL + co-processes (|&, >&p, <&p) + weirdly-scoped functions + typeset +f to list all function names without definitions + text of command history kept in a file, not memory + builtins: alias -x, cd old new, fc -e -, newgrp, print, + read -p/-s/var?prompt, set -A/-o gmacs/ + -o bgnice/-o markdirs/-o nolog/-o trackall/-o viraw/-s, + typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence + using environment to pass attributes of exported variables + arithmetic evaluation done on arguments to some builtins + reads .profile from $PWD when invoked as login shell + +Implementation differences: + ksh runs last command of a pipeline in parent shell context + bash has brace expansion by default (ksh88 compile-time option) + bash has fixed startup file for all interactive shells; ksh reads $ENV + bash has exported functions + bash command search finds functions before builtins + bash waits for all commands in pipeline to exit before returning status + emacs-mode editing has some slightly different key bindings + +C3) Which new features in ksh-93 are not in bash, and which are? + +New things in ksh-93 not in bash-2.05b: + associative arrays + floating point arithmetic and variables + math library functions + ${!name[sub]} name of subscript for associative array + `.' is allowed in variable names to create a hierarchical namespace + more extensive compound assignment syntax + discipline functions + `sleep' and `getconf' builtins (bash has loadable versions) + typeset -n and `nameref' variables + KEYBD trap + variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version, + .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT + backreferences in pattern matching (\N) + `&' operator in pattern lists for matching + print -f (bash uses printf) + `fc' has been renamed to `hist' + `.' can execute shell functions + exit statuses between 0 and 255 + set -o pipefail + `+=' variable assignment operator + FPATH and PATH mixing + getopts -a + -I invocation option + DEBUG trap now executed before each simple command, instead of after + printf %H, %P, %T, %Z modifiers, output base for %d + lexical scoping for local variables in `ksh' functions + no scoping for local variables in `POSIX' functions + +New things in ksh-93 present in bash-2.05b: + [n]<&word- and [n]>&word- redirections (combination dup and close) + for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command + ?:, ++, --, `expr1 , expr2' arithmetic operators + expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]}, + ${!param*} + compound array assignment + the `!' reserved word + loadable builtins -- but ksh uses `builtin' while bash uses `enable' + `command', `builtin', `disown' builtins + new $'...' and $"..." quoting + FIGNORE (but bash uses GLOBIGNORE), HISTCMD + set -o notify/-C + changes to kill builtin + read -A (bash uses read -a) + read -t/-d + trap -p + exec -c/-a + `.' restores the positional parameters when it completes + POSIX.2 `test' + umask -S + unalias -a + command and arithmetic substitution performed on PS1, PS4, and ENV + command name completion + ENV processed only for interactive shells + +Section D: Why does bash do some things differently than other Unix shells? + +D1) Why does bash run a different version of `command' than + `which command' says it will? + +On many systems, `which' is actually a csh script that assumes +you're running csh. In tcsh, `which' and its cousin `where' +are builtins. On other Unix systems, `which' is a perl script +that uses the PATH environment variable. + +The csh script version reads the csh startup files from your +home directory and uses those to determine which `command' will +be invoked. Since bash doesn't use any of those startup files, +there's a good chance that your bash environment differs from +your csh environment. The bash `type' builtin does everything +`which' does, and will report correct results for the running +shell. If you're really wedded to the name `which', try adding +the following function definition to your .bashrc: + + which() + { + builtin type "$@" + } + +If you're moving from tcsh and would like to bring `where' along +as well, use this function: + + where() + { + builtin type -a "$@" + } + +D2) Why doesn't bash treat brace expansions exactly like csh? + +The only difference between bash and csh brace expansion is that +bash requires a brace expression to contain at least one unquoted +comma if it is to be expanded. Any brace-surrounded word not +containing an unquoted comma is left unchanged by the brace +expansion code. This affords the greatest degree of sh +compatibility. + +Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. + +D3) Why doesn't bash have csh variable modifiers? + +Posix has specified a more powerful, albeit somewhat more cryptic, +mechanism cribbed from ksh, and bash implements it. + +${parameter%word} + Remove smallest suffix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + smallest portion of the suffix matched by the pattern deleted. + + x=file.c + echo ${x%.c}.o + -->file.o + +${parameter%%word} + + Remove largest suffix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + largest portion of the suffix matched by the pattern deleted. + + x=posix/src/std + echo ${x%%/*} + -->posix + +${parameter#word} + Remove smallest prefix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + smallest portion of the prefix matched by the pattern deleted. + + x=$HOME/src/cmd + echo ${x#$HOME} + -->/src/cmd + +${parameter##word} + Remove largest prefix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + largest portion of the prefix matched by the pattern deleted. + + x=/one/two/three + echo ${x##*/} + -->three + + +Given + a=/a/b/c/d + b=b.xxx + + csh bash result + --- ---- ------ + $a:h ${a%/*} /a/b/c + $a:t ${a##*/} d + $b:r ${b%.*} b + $b:e ${b##*.} xxx + + +D4) How can I make my csh aliases work when I convert to bash? + +Bash uses a different syntax to support aliases than csh does. +The details can be found in the documentation. We have provided +a shell script which does most of the work of conversion for you; +this script can be found in ./examples/misc/aliasconv.sh. Here is +how you use it: + +Start csh in the normal way for you. (e.g., `csh') + +Pipe the output of `alias' through `aliasconv.sh', saving the +results into `bash_aliases': + + alias | bash aliasconv.sh >bash_aliases + +Edit `bash_aliases', carefully reading through any created +functions. You will need to change the names of some csh specific +variables to the bash equivalents. The script converts $cwd to +$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt +to $PS1. You may also have to add quotes to avoid unwanted +expansion. + +For example, the csh alias: + + alias cd 'cd \!*; echo $cwd' + +is converted to the bash function: + + cd () { command cd "$@"; echo $PWD ; } + +The only thing that needs to be done is to quote $PWD: + + cd () { command cd "$@"; echo "$PWD" ; } + +Merge the edited file into your ~/.bashrc. + +There is an additional, more ambitious, script in +examples/misc/cshtobash that attempts to convert your entire csh +environment to its bash equivalent. This script can be run as +simply `cshtobash' to convert your normal interactive +environment, or as `cshtobash ~/.login' to convert your login +environment. + +D5) How can I pipe standard output and standard error from one command to + another, like csh does with `|&'? + +Use + command 2>&1 | command2 + +The key is to remember that piping is performed before redirection, so +file descriptor 1 points to the pipe when it is duplicated onto file +descriptor 2. + +D6) Now that I've converted from ksh to bash, are there equivalents to + ksh features like autoloaded functions and the `whence' command? + +There are features in ksh-88 and ksh-93 that do not have direct bash +equivalents. Most, however, can be emulated with very little trouble. + +ksh-88 feature Bash equivalent +-------------- --------------- +compiled-in aliases set up aliases in .bashrc; some ksh aliases are + bash builtins (hash, history, type) +coprocesses named pipe pairs (one for read, one for write) +typeset +f declare -F +cd, print, whence function substitutes in examples/functions/kshenv +autoloaded functions examples/functions/autoload is the same as typeset -fu +read var?prompt read -p prompt var + +ksh-93 feature Bash equivalent +-------------- --------------- +sleep, getconf Bash has loadable versions in examples/loadables +${.sh.version} $BASH_VERSION +print -f printf +hist alias hist=fc +$HISTEDIT $FCEDIT + +Section E: How can I get bash to do certain things, and why does bash do + things the way it does? + +E1) Why is the bash builtin `test' slightly different from /bin/test? + +The specific example used here is [ ! x -o x ], which is false. + +Bash's builtin `test' implements the Posix.2 spec, which can be +summarized as follows (the wording is due to David Korn): + +Here is the set of rules for processing test arguments. + + 0 Args: False + 1 Arg: True iff argument is not null. + 2 Args: If first arg is !, True iff second argument is null. + If first argument is unary, then true if unary test is true + Otherwise error. + 3 Args: If second argument is a binary operator, do binary test of $1 $3 + If first argument is !, negate two argument test of $2 $3 + If first argument is `(' and third argument is `)', do the + one-argument test of the second argument. + Otherwise error. + 4 Args: If first argument is !, negate three argument test of $2 $3 $4. + Otherwise unspecified + 5 or more Args: unspecified. (Historical shells would use their + current algorithm). + +The operators -a and -o are considered binary operators for the purpose +of the 3 Arg case. + +As you can see, the test becomes (not (x or x)), which is false. + +E2) Why does bash sometimes say `Broken pipe'? + +If a sequence of commands appears in a pipeline, and one of the +reading commands finishes before the writer has finished, the +writer receives a SIGPIPE signal. Many other shells special-case +SIGPIPE as an exit status in the pipeline and do not report it. +For example, in: + + ps -aux | head + +`head' can finish before `ps' writes all of its output, and ps +will try to write on a pipe without a reader. In that case, bash +will print `Broken pipe' to stderr when ps is killed by a +SIGPIPE. + +You can build a version of bash that will not report SIGPIPE errors +by uncommenting the definition of DONT_REPORT_SIGPIPE in the file +config-top.h. + +E3) When I have terminal escape sequences in my prompt, why does bash + wrap lines at the wrong column? + +Readline, the line editing library that bash uses, does not know +that the terminal escape sequences do not take up space on the +screen. The redisplay code assumes, unless told otherwise, that +each character in the prompt is a `printable' character that +takes up one character position on the screen. + +You can use the bash prompt expansion facility (see the PROMPTING +section in the manual page) to tell readline that sequences of +characters in the prompt strings take up no screen space. + +Use the \[ escape to begin a sequence of non-printing characters, +and the \] escape to signal the end of such a sequence. + +E4) If I pipe the output of a command into `read variable', why doesn't + the output show up in $variable when the read command finishes? + +This has to do with the parent-child relationship between Unix +processes. It affects all commands run in pipelines, not just +simple calls to `read'. For example, piping a command's output +into a `while' loop that repeatedly calls `read' will result in +the same behavior. + +Each element of a pipeline runs in a separate process, a child of +the shell running the pipeline. A subprocess cannot affect its +parent's environment. When the `read' command sets the variable +to the input, that variable is set only in the subshell, not the +parent shell. When the subshell exits, the value of the variable +is lost. + +Many pipelines that end with `read variable' can be converted +into command substitutions, which will capture the output of +a specified command. The output can then be assigned to a +variable: + + grep ^gnu /usr/lib/news/active | wc -l | read ngroup + +can be converted into + + ngroup=$(grep ^gnu /usr/lib/news/active | wc -l) + +This does not, unfortunately, work to split the text among +multiple variables, as read does when given multiple variable +arguments. If you need to do this, you can either use the +command substitution above to read the output into a variable +and chop up the variable using the bash pattern removal +expansion operators or use some variant of the following +approach. + +Say /usr/local/bin/ipaddr is the following shell script: + +#! /bin/sh +host `hostname` | awk '/address/ {print $NF}' + +Instead of using + + /usr/local/bin/ipaddr | read A B C D + +to break the local machine's IP address into separate octets, use + + OIFS="$IFS" + IFS=. + set -- $(/usr/local/bin/ipaddr) + IFS="$OIFS" + A="$1" B="$2" C="$3" D="$4" + +Beware, however, that this will change the shell's positional +parameters. If you need them, you should save them before doing +this. + +This is the general approach -- in most cases you will not need to +set $IFS to a different value. + +Some other user-supplied alternatives include: + +read A B C D << HERE + $(IFS=.; echo $(/usr/local/bin/ipaddr)) +HERE + +and, where process substitution is available, + +read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr)) + +E5) I have a bunch of shell scripts that use backslash-escaped characters + in arguments to `echo'. Bash doesn't interpret these characters. Why + not, and how can I make it understand them? + +This is the behavior of echo on most Unix System V machines. + +The bash builtin `echo' is modeled after the 9th Edition +Research Unix version of `echo'. It does not interpret +backslash-escaped characters in its argument strings by default; +it requires the use of the -e option to enable the +interpretation. The System V echo provides no way to disable the +special characters; the bash echo has a -E option to disable +them. + +There is a configuration option that will make bash behave like +the System V echo and interpret things like `\t' by default. Run +configure with the --enable-xpg-echo-default option to turn this +on. Be aware that this will cause some of the tests run when you +type `make tests' to fail. + +There is a shell option, `xpg_echo', settable with `shopt', that will +change the behavior of echo at runtime. Enabling this option turns +on expansion of backslash-escape sequences. + +E6) Why doesn't a while or for loop get suspended when I type ^Z? + +This is a consequence of how job control works on Unix. The only +thing that can be suspended is the process group. This is a single +command or pipeline of commands that the shell forks and executes. + +When you run a while or for loop, the only thing that the shell forks +and executes are any commands in the while loop test and commands in +the loop bodies. These, therefore, are the only things that can be +suspended when you type ^Z. + +If you want to be able to stop the entire loop, you need to put it +within parentheses, which will force the loop into a subshell that +may be stopped (and subsequently restarted) as a single unit. + +E7) What about empty for loops in Makefiles? + +It's fairly common to see constructs like this in automatically-generated +Makefiles: + +SUBDIRS = @SUBDIRS@ + + ... + +subdirs-clean: + for d in ${SUBDIRS}; do \ + ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ + done + +When SUBDIRS is empty, this results in a command like this being passed to +bash: + + for d in ; do + ( cd $d && ${MAKE} ${MFLAGS} clean ) + done + +In versions of bash before bash-2.05a, this was a syntax error. If the +reserved word `in' was present, a word must follow it before the semicolon +or newline. The language in the manual page referring to the list of words +being empty referred to the list after it is expanded. These versions of +bash required that there be at least one word following the `in' when the +construct was parsed. + +The idiomatic Makefile solution is something like: + +SUBDIRS = @SUBDIRS@ + +subdirs-clean: + subdirs=$SUBDIRS ; for d in $$subdirs; do \ + ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ + done + +The latest drafts of the updated POSIX standard have changed this: the +word list is no longer required. Bash versions 2.05a and later accept +the new syntax. + +E8) Why does the arithmetic evaluation code complain about `08'? + +The bash arithmetic evaluation code (used for `let', $(()), (()), and in +other places), interprets a leading `0' in numeric constants as denoting +an octal number, and a leading `0x' as denoting hexadecimal. This is +in accordance with the POSIX.2 spec, section 2.9.2.1, which states that +arithmetic constants should be handled as signed long integers as defined +by the ANSI/ISO C standard. + +The POSIX.2 interpretation committee has confirmed this: + +http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html + +E9) Why does the pattern matching expression [A-Z]* match files beginning + with every letter except `z'? + +Bash-2.03, Bash-2.05 and later versions honor the current locale setting +when processing ranges within pattern matching bracket expressions ([A-Z]). +This is what POSIX.2 and SUSv3/XPG6 specify. + +The behavior of the matcher in bash-2.05 and later versions depends on the +current LC_COLLATE setting. Setting this variable to `C' or `POSIX' will +result in the traditional behavior ([A-Z] matches all uppercase ASCII +characters). Many other locales, including the en_US locale (the default +on many US versions of Linux) collate the upper and lower case letters like +this: + + AaBb...Zz + +which means that [A-Z] matches every letter except `z'. Others collate like + + aAbBcC...zZ + +which means that [A-Z] matches every letter except `a'. + +The portable way to specify upper case letters is [:upper:] instead of +A-Z; lower case may be specified as [:lower:] instead of a-z. + +Look at the manual pages for setlocale(3), strcoll(3), and, if it is +present, locale(1). If you have locale(1), you can use it to find +your current locale information even if you do not have any of the +LC_ variables set. + +My advice is to put + + export LC_COLLATE=C + +into /etc/profile and inspect any shell scripts run from cron for +constructs like [A-Z]. This will prevent things like + + rm [A-Z]* + +from removing every file in the current directory except those beginning +with `z' and still allow individual users to change the collation order. +Users may put the above command into their own profiles as well, of course. + +E10) Why does `cd //' leave $PWD as `//'? + +POSIX.2, in its description of `cd', says that *three* or more leading +slashes may be replaced with a single slash when canonicalizing the +current working directory. + +This is, I presume, for historical compatibility. Certain versions of +Unix, and early network file systems, used paths of the form +//hostname/path to access `path' on server `hostname'. + +E11) If I resize my xterm while another program is running, why doesn't bash + notice the change? + +This is another issue that deals with job control. + +The kernel maintains a notion of a current terminal process group. Members +of this process group (processes whose process group ID is equal to the +current terminal process group ID) receive terminal-generated signals like +SIGWINCH. (For more details, see the JOB CONTROL section of the bash +man page.) + +If a terminal is resized, the kernel sends SIGWINCH to each member of +the terminal's current process group (the `foreground' process group). + +When bash is running with job control enabled, each pipeline (which may be +a single command) is run in its own process group, different from bash's +process group. This foreground process group receives the SIGWINCH; bash +does not. Bash has no way of knowing that the terminal has been resized. + +There is a `checkwinsize' option, settable with the `shopt' builtin, that +will cause bash to check the window size and adjust its idea of the +terminal's dimensions each time a process stops or exits and returns control +of the terminal to bash. Enable it with `shopt -s checkwinsize'. + +Section F: Things to watch out for on certain Unix versions + +F1) Why can't I use command line editing in my `cmdtool'? + +The problem is `cmdtool' and bash fighting over the input. When +scrolling is enabled in a cmdtool window, cmdtool puts the tty in +`raw mode' to permit command-line editing using the mouse for +applications that cannot do it themselves. As a result, bash and +cmdtool each try to read keyboard input immediately, with neither +getting enough of it to be useful. + +This mode also causes cmdtool to not implement many of the +terminal functions and control sequences appearing in the +`sun-cmd' termcap entry. For a more complete explanation, see +that file examples/suncmd.termcap in the bash distribution. + +`xterm' is a better choice, and gets along with bash much more +smoothly. + +If you must use cmdtool, you can use the termcap description in +examples/suncmd.termcap. Set the TERMCAP variable to the terminal +description contained in that file, i.e. + +TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:' + +Then export TERMCAP and start a new cmdtool window from that shell. +The bash command-line editing should behave better in the new +cmdtool. If this works, you can put the assignment to TERMCAP +in your bashrc file. + +F2) I built bash on Solaris 2. Why do globbing expansions and filename + completion chop off the first few characters of each filename? + +This is the consequence of building bash on SunOS 5 and linking +with the libraries in /usr/ucblib, but using the definitions +and structures from files in /usr/include. + +The actual conflict is between the dirent structure in +/usr/include/dirent.h and the struct returned by the version of +`readdir' in libucb.a (a 4.3-BSD style `struct direct'). + +Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH +when configuring and building bash. This will ensure that you +use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you +link with libc before libucb. + +If you have installed the Sun C compiler, you may also need to +put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before +/usr/ucb. + +F3) Why does bash dump core after I interrupt username completion or + `~user' tilde expansion on a machine running NIS? + +This is a famous and long-standing bug in the SunOS YP (sorry, NIS) +client library, which is part of libc. + +The YP library code keeps static state -- a pointer into the data +returned from the server. When YP initializes itself (setpwent), +it looks at this pointer and calls free on it if it's non-null. +So far, so good. + +If one of the YP functions is interrupted during getpwent (the +exact function is interpretwithsave()), and returns NULL, the +pointer is freed without being reset to NULL, and the function +returns. The next time getpwent is called, it sees that this +pointer is non-null, calls free, and the bash free() blows up +because it's being asked to free freed memory. + +The traditional Unix mallocs allow memory to be freed multiple +times; that's probably why this has never been fixed. You can +run configure with the `--without-gnu-malloc' option to use +the C library malloc and avoid the problem. + +F4) I'm running SVR4.2. Why is the line erased every time I type `@'? + +The `@' character is the default `line kill' character in most +versions of System V, including SVR4.2. You can change this +character to whatever you want using `stty'. For example, to +change the line kill character to control-u, type + + stty kill ^U + +where the `^' and `U' can be two separate characters. + +F5) Why does bash report syntax errors when my C News scripts use a + redirection before a subshell command? + +The actual command in question is something like + + < file ( command ) + +According to the grammar given in the POSIX.2 standard, this construct +is, in fact, a syntax error. Redirections may only precede `simple +commands'. A subshell construct such as the above is one of the shell's +`compound commands'. A redirection may only follow a compound command. + +This affects the mechanical transformation of commands that use `cat' +to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on +comp.unix.shell). While most commands of the form + + cat file | command + +can be converted to `< file command', shell control structures such as +loops and subshells require `command < file'. + +The file CWRU/sh-redir-hack in the bash-2.05a distribution is an +(unofficial) patch to parse.y that will modify the grammar to +support this construct. It will not apply with `patch'; you must +modify parse.y by hand. Note that if you apply this, you must +recompile with -DREDIRECTION_HACK. This introduces a large +number of reduce/reduce conflicts into the shell grammar. + +F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? + +The short answer is that Red Hat screwed up. + +The long answer is that they shipped an /etc/inputrc that only works +for emacs mode editing, and then screwed all the vi users by setting +INPUTRC to /etc/inputrc in /etc/profile. + +The short fix is to do one of the following: remove or rename +/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile, +but make sure you export it if you do), remove the assignment to +INPUTRC from /etc/profile, add + + set keymap emacs + +to the beginning of /etc/inputrc, or bracket the key bindings in +/etc/inputrc with these lines + + $if mode=emacs + [...] + $endif + +F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on + HP/UX 11.x? + +HP/UX's support for long double is imperfect at best. + +GCC will support it without problems, but the HP C library functions +like strtold(3) and printf(3) don't actually work with long doubles. +HP implemented a `long_double' type as a 4-element array of 32-bit +ints, and that is what the library functions use. The ANSI C +`long double' type is a 128-bit floating point scalar. + +The easiest fix, until HP fixes things up, is to edit the generated +config.h and #undef the HAVE_LONG_DOUBLE line. After doing that, +the compilation should complete successfully. + +Section G: How can I get bash to do certain common things? + +G1) How can I get bash to read and display eight-bit characters? + +This is a process requiring several steps. + +First, you must ensure that the `physical' data path is a full eight +bits. For xterms, for example, the `vt100' resources `eightBitInput' +and `eightBitOutput' should be set to `true'. + +Once you have set up an eight-bit path, you must tell the kernel and +tty driver to leave the eighth bit of characters alone when processing +keyboard input. Use `stty' to do this: + + stty cs8 -istrip -parenb + +For old BSD-style systems, you can use + + stty pass8 + +You may also need + + stty even odd + +Finally, you need to tell readline that you will be inputting and +displaying eight-bit characters. You use readline variables to do +this. These variables can be set in your .inputrc or using the bash +`bind' builtin. Here's an example using `bind': + + bash$ bind 'set convert-meta off' + bash$ bind 'set meta-flag on' + bash$ bind 'set output-meta on' + +The `set' commands between the single quotes may also be placed +in ~/.inputrc. + +G2) How do I write a function `x' to replace builtin command `x', but + still invoke the command from within the function? + +This is why the `command' and `builtin' builtins exist. The +`command' builtin executes the command supplied as its first +argument, skipping over any function defined with that name. The +`builtin' builtin executes the builtin command given as its first +argument directly. + +For example, to write a function to replace `cd' that writes the +hostname and current directory to an xterm title bar, use +something like the following: + + cd() + { + builtin cd "$@" && xtitle "$HOST: $PWD" + } + +This could also be written using `command' instead of `builtin'; +the version above is marginally more efficient. + +G3) How can I find the value of a shell variable whose name is the value + of another shell variable? + +Versions of Bash newer than Bash-2.0 support this directly. You can use + + ${!var} + +For example, the following sequence of commands will echo `z': + + var1=var2 + var2=z + echo ${!var1} + +For sh compatibility, use the `eval' builtin. The important +thing to remember is that `eval' expands the arguments you give +it again, so you need to quote the parts of the arguments that +you want `eval' to act on. + +For example, this expression prints the value of the last positional +parameter: + + eval echo \"\$\{$#\}\" + +The expansion of the quoted portions of this expression will be +deferred until `eval' runs, while the `$#' will be expanded +before `eval' is executed. In versions of bash later than bash-2.0, + + echo ${!#} + +does the same thing. + +This is not the same thing as ksh93 `nameref' variables, though the syntax +is similar. I may add namerefs in a future bash version. + +G4) How can I make the bash `time' reserved word print timing output that + looks like the output from my system's /usr/bin/time? + +The bash command timing code looks for a variable `TIMEFORMAT' and +uses its value as a format string to decide how to display the +timing statistics. + +The value of TIMEFORMAT is a string with `%' escapes expanded in a +fashion similar in spirit to printf(3). The manual page explains +the meanings of the escape sequences in the format string. + +If TIMEFORMAT is not set, bash acts as if the following assignment had +been performed: + + TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' + +The POSIX.2 default time format (used by `time -p command') is + + TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S' + +The BSD /usr/bin/time format can be emulated with: + + TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys' + +The System V /usr/bin/time format can be emulated with: + + TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S' + +The ksh format can be emulated with: + + TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS' + +G5) How do I get the current directory into my prompt? + +Bash provides a number of backslash-escape sequences which are expanded +when the prompt string (PS1 or PS2) is displayed. The full list is in +the manual page. + +The \w expansion gives the full pathname of the current directory, with +a tilde (`~') substituted for the current value of $HOME. The \W +expansion gives the basename of the current directory. To put the full +pathname of the current directory into the path without any tilde +subsitution, use $PWD. Here are some examples: + + PS1='\w$ ' # current directory with tilde + PS1='\W$ ' # basename of current directory + PS1='$PWD$ ' # full pathname of current directory + +The single quotes are important in the final example to prevent $PWD from +being expanded when the assignment to PS1 is performed. + +G6) How can I rename "*.foo" to "*.bar"? + +Use the pattern removal functionality described in D3. The following `for' +loop will do the trick: + + for f in *.foo; do + mv $f ${f%foo}bar + done + +G7) How can I translate a filename from uppercase to lowercase? + +The script examples/functions/lowercase, originally written by John DuBois, +will do the trick. The converse is left as an exercise. + +G8) How can I write a filename expansion (globbing) pattern that will match + all files in the current directory except "." and ".."? + +You must have set the `extglob' shell option using `shopt -s extglob' to use +this: + + echo .!(.|) * + +A solution that works without extended globbing is given in the Unix Shell +FAQ, posted periodically to comp.unix.shell. + +Section H: Where do I go from here? + +H1) How do I report bugs in bash, and where should I look for fixes and + advice? + +Use the `bashbug' script to report bugs. It is built and +installed at the same time as bash. It provides a standard +template for reporting a problem and automatically includes +information about your configuration and build environment. + +`bashbug' sends its reports to bug-bash@gnu.org, which +is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. + +Bug fixes, answers to questions, and announcements of new releases +are all posted to gnu.bash.bug. Discussions concerning bash features +and problems also take place there. + +To reach the bash maintainers directly, send mail to +bash-maintainers@gnu.org. + +H2) What kind of bash documentation is there? + +First, look in the doc directory in the bash distribution. It should +contain at least the following files: + +bash.1 an extensive, thorough Unix-style manual page +builtins.1 a manual page covering just bash builtin commands +bashref.texi a reference manual in GNU tex`info format +bashref.info an info version of the reference manual +FAQ this file +article.ms text of an article written for The Linux Journal +readline.3 a man page describing readline + +Postscript, HTML, and ASCII files created from the above source are +available in the documentation distribution. + +There is additional documentation available for anonymous FTP from host +ftp.cwru.edu in the `pub/bash' directory. + +Cameron Newham and Bill Rosenblatt have written a book on bash, published +by O'Reilly and Associates. The book is based on Bill Rosenblatt's Korn +Shell book. The title is ``Learning the Bash Shell'', and the ISBN number +is 1-56592-147-X. Look for it in fine bookstores near you. This book +covers bash-1.14, but has an appendix describing some of the new features +in bash-2.0. + +A second edition of this book is available, published in January, 1998. +The ISBN number is 1-56592-347-2. Look for it in the same fine bookstores +or on the web. + +The GNU Bash Reference Manual has been published as a printed book by +Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Feb 2003). It covers +bash-2.0 and is available from most online bookstores (see +http://www.network-theory.co.uk/bash/manual/ for details). The publisher +will donate $1 to the Free Software Foundation for each copy sold. + +H3) What's coming in future versions? + +These are features I hope to include in a future version of bash. + +a better bash debugger (a minimally-tested version is included with bash-2.05b) +associative arrays +co-processes, but with a new-style syntax that looks like function declaration + +H4) What's on the bash `wish list' for future versions? + +These are features that may or may not appear in a future version of bash. + +breaking some of the shell functionality into embeddable libraries +a module system like zsh's, using dynamic loading like builtins +better internationalization using GNU `gettext' +date-stamped command history +a bash programmer's guide with a chapter on creating loadable builtins +a better loadable interface to perl with access to the shell builtins and + variables (contributions gratefully accepted) +ksh93-like `nameref' variables +ksh93-like `+=' variable assignment operator +ksh93-like `xx.yy' variables (including some of the .sh.* variables) and + associated disipline functions +Some of the new ksh93 pattern matching operators, like backreferencing + +H5) When will the next release appear? + +The next version will appear sometime in 2002. Never make predictions. + + +This document is Copyright 1995-2003 by Chester Ramey. + +Permission is hereby granted, without written agreement and +without license or royalty fees, to use, copy, and distribute +this document for any purpose, provided that the above copyright +notice appears in all copies of this document and that the +contents of this document remain unaltered. diff --git a/bash-20060316/doc/INTRO b/bash-20060316/doc/INTRO new file mode 100644 index 000000000..29f208ace --- /dev/null +++ b/bash-20060316/doc/INTRO @@ -0,0 +1,187 @@ + BASH - The Bourne-Again Shell + +Bash is the shell, or command language interpreter, that will appear +in the GNU operating system. Bash is an sh-compatible shell that +incorporates useful features from the Korn shell (ksh) and C shell +(csh). It is intended to conform to the IEEE POSIX P1003.2/ISO 9945.2 +Shell and Tools standard. It offers functional improvements over sh +for both programming and interactive use. In addition, most sh scripts +can be run by Bash without modification. + +Bash is quite portable. It uses a configuration system that discovers +characteristics of the compilation platform at build time, and may +therefore be built on nearly every version of UNIX. Ports to +UNIX-like systems such as QNX and Minix and to non-UNIX systems such +as OS/2, Windows 95, and Windows NT are available. + +Bash includes the following features: + +Editing and Completion + +Bash offers a command-line editing facility which permits users to +edit command lines using familiar emacs or vi-style editing commands. +Editing allows corrections to be made without having to erase back +to the point of error or start the command line anew. The editing +facilities include a feature that allows users to complete command and +file names. + +The Bash line editing library is fully customizable. Users may define +their own key bindings -- the action taken when a key is pressed. A +number of variables to fine-tune editing behavior are also available. + +History and Command Re-entry + +The Bash history feature remembers commands entered to the shell and +allows them to be recalled and re-executed. The history list may be +of unlimited size. Bash allows users to search for previous commands +and reuse portions of those commands when composing new ones. The +history list may be saved across shell sessions. + +Bash allows users to control which commands are saved on the history +list. + +Job Control + +On systems that support it, Bash provides an interface to the +operating system's job control facilities, which allow processes +to be suspended and restarted, and moved between the foreground +and background. Bash allows users to selectively `forget' about +background jobs. + +Shell Functions and Aliases + +These mechanisms are available to bind a user-selected identifier to a +list of commands that will be executed when the identifier is used as +a command name. Functions allow local variables and recursion, and +have access to the environment of the calling shell. Aliases may be +used to create a mnemonic for a command name, expand a single word to +a complex command, or ensure that a command is called with a basic set +of options. + +Arrays + +Bash-2.0 supports indexed arrays of unlimited size. The subscript for +an array is an arithmetic expression. Arrays may be assigned to with +a new compound assignment syntax, and several builtins have options to +operate on array variables. Bash includes a number of built-in array +variables. + +Arithmetic + +Bash allows users to perform integer arithmetic in any base from two +to sixty-four. Nearly all of the C language arithmetic operators are +available with the same syntax and precedence as in C. Arithmetic +expansion allows an arithmetic expression to be evaluated and the +result substituted into the command line. Shell variables can be used +as operands, and the value of an expression may be assigned to a +variable. + +An arithmetic expression may be used as a command; the exit status of +the command is the value of the expression. + +ANSI-C Quoting + +There is a new quoting syntax that allows backslash-escaped characters +in strings to be expanded according to the ANSI C standard. + +Tilde Expansion + +Users' home directories may be expanded using this feature. Words +beginning with a tilde may also be expanded to the current or previous +working directory. + +Brace Expansion + +Brace expansion is a convenient way to generate a list of strings that +share a common prefix or suffix. + +Substring Capabilities + +Bash allows new strings to be created by removing leading or trailing +substrings from existing variable values, or by specifying a starting +offset and length. Portions of variable values may be matched against +shell patterns and the matching portion removed or a new value +substituted. + +Indirect Variable Expansion + +Bash makes it easy to find the value of a shell variable whose name is +the value of another variable. + +Expanded I/O Capabilities + +Bash provides several input and output features not available in sh, +including the ability to: + + o specify a file or file descriptor for both input and output + o read from or write to asynchronous processes using named pipes + o read lines ending in backslash + o display a prompt on the terminal before a read + o format menus and interpret responses to them + o echo lines exactly as input without escape processing + +Control of Builtin Commands + +Bash implements several builtin commands to give users more control +over which commands are executed. The enable builtin allows other +builtin commands to be selectively enabled or disabled. The command +and builtin builtins change the order in which the shell searches for +commands. + +On systems that provide dynamic loading, new builtins may be loaded +into a running shell from a shared object file. These new builtins +have access to all of the shell facilities. + +Help + +Bash includes a built-in help facility. + +Shell Optional Behavior + +There is a great deal of customizable shell behavior. The shopt +builtin command provides a unified interface that allows users to +alter shell defaults. + +Prompt Customization + +Bash allows the primary and secondary prompts to be customized by +interpreting a number of backslash-escaped special characters. +Parameter and variable expansion is also performed on the values of +the primary and secondary prompt strings before they are displayed. + +Security + +Bash provides a restricted shell environment. It is also possible to +control the execution of setuid/setgid scripts. + +Directory Stack + +Bash provides a `directory stack', to which directories may be added +and removed. The current directory may be changed to any directory in +the stack. It is easy to toggle between two directories in the stack. +The directory stack may be saved and restored across different shell +invocations. + +POSIX Mode + +Bash is nearly completely conformant to POSIX.2. POSIX mode changes +those few areas where the Bash default behavior differs from the +standard to match the standard. In POSIX mode, Bash is POSIX.2 +compliant. + +Internationalization + +Bash provides a new quoting syntax that allows strings to be +translated according to the current locale. The locale in which the +shell itself runs may also be changed, so that the shell messages +themselves may be language-specific. + +The command-line editing facilities allow the input of eight-bit +characters, so most of the ISO-8859 family of character sets are +supported. + +Command Timing + +Bash allows external commands, shell builtin commands and shell functions +to be timed. The format used to display the timing information may be +changed by the user. diff --git a/bash-20060316/doc/Makefile b/bash-20060316/doc/Makefile new file mode 120000 index 000000000..cdc927f6b --- /dev/null +++ b/bash-20060316/doc/Makefile @@ -0,0 +1 @@ +/usr/local/build/chet/bash/bash-current/doc/Makefile \ No newline at end of file diff --git a/bash-20060316/doc/Makefile.in b/bash-20060316/doc/Makefile.in new file mode 100644 index 000000000..270ddfd79 --- /dev/null +++ b/bash-20060316/doc/Makefile.in @@ -0,0 +1,291 @@ +# This Makefile is for the Bash/documentation directory -*- text -*-. +# +# Copyright (C) 2003 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 2, 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, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +PACKAGE = @PACKAGE_NAME@ +VERSION = @PACKAGE_VERSION@ + +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_VERSION = @PACKAGE_VERSION@ + +# +SHELL = @MAKE_SHELL@ +RM = rm -f + +topdir = @top_srcdir@ +srcdir = @srcdir@ +VPATH = .:@srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +infodir = @infodir@ + +# set this to a directory name to have the HTML files installed +htmldir = @htmldir@ + +# Support an alternate destination root directory for package building +DESTDIR = + +mandir = @mandir@ +manpfx = man + +man1ext = .1 +man1dir = $(mandir)/$(manpfx)1 +man3ext = .3 +man3dir = $(mandir)/$(manpfx)3 + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +BUILD_DIR = @BUILD_DIR@ + +SUPPORT_SRCDIR = $(topdir)/support + +# bad style +RL_LIBDIR = $(topdir)/lib/readline + +# unused +TEXINDEX = texindex +TEX = tex + +MAKEINFO = makeinfo +TEXI2DVI = ${SUPPORT_SRCDIR}/texi2dvi +TEXI2HTML = ${SUPPORT_SRCDIR}/texi2html +MAN2HTML = ${BUILD_DIR}/support/man2html +HTMLPOST = ${srcdir}/htmlpost.sh +INFOPOST = ${srcdir}/infopost.sh +QUIETPS = #set this to -q to shut up dvips +PAPERSIZE = letter # change to a4 for A4-size paper +PSDPI = 600 # could be 300 if you like +DVIPS = dvips -D ${PSDPI} $(QUIETPS) -t ${PAPERSIZE} -o $@ # tricky + +TEXINPUTDIR = $(RL_LIBDIR)/doc +SET_TEXINPUTS = TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS + +# These tools might not be available; they're not required +DVIPDF = dvipdfm -o $@ -p ${PAPERSIZE} +PSPDF = gs -sPAPERSIZE=${PAPERSIZE} -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -sOutputFile=$@ + +MKDIRS = ${SUPPORT_SRCDIR}/mkdirs + +# This should be a program that converts troff to an ascii-readable format +NROFF = groff -Tascii + +# This should be a program that converts troff to postscript +GROFF = groff + +HSUSER = $(RL_LIBDIR)/doc/hsuser.texi +RLUSER = $(RL_LIBDIR)/doc/rluser.texi + +BASHREF_FILES = $(srcdir)/bashref.texi $(srcdir)/version.texi + +.SUFFIXES: .0 .1 .3 .ms .ps .txt .dvi .html .pdf + +.1.ps: + $(RM) $@ + -${GROFF} -man $< > $@ + +.1.0: + $(RM) $@ + -${NROFF} -man $< > $@ + +.1.html: + $(RM) $@ + -${MAN2HTML} $< | ${HTMLPOST} > $@ + +.ms.ps: + $(RM) $@ + -${GROFF} -ms $< > $@ + +.ms.txt: + $(RM) $@ + -${NROFF} -ms $< > $@ + +.3.ps: + $(RM) $@ + -${GROFF} -man $< > $@ + +.3.0: + $(RM) $@ + -${NROFF} -man $< > $@ + +.3.html: + $(RM) $@ + -${MAN2HTML} $< > $@ + +.ps.pdf: + $(RM) $@ + -${PSPDF} $< + +.dvi.pdf: + $(RM) $@ + -${DVIPDF} $< + +.dvi.ps: + ${RM} $@ + -${DVIPS} $< + +all: ps info dvi text html +nodvi: ps info text html + +PSFILES = bash.ps bashbug.ps article.ps builtins.ps rbash.ps +DVIFILES = bashref.dvi bashref.ps +INFOFILES = bashref.info +MAN0FILES = bash.0 bashbug.0 builtins.0 rbash.0 +HTMLFILES = bashref.html bash.html +PDFFILES = bash.pdf bashref.pdf article.pdf rose94.pdf + +ps: ${PSFILES} +dvi: ${DVIFILES} +info: ${INFOFILES} +text: ${MAN0FILES} +html: ${HTMLFILES} +pdf: ${PDFFILES} + +bashref.dvi: $(BASHREF_FILES) $(HSUSER) $(RLUSER) + ${SET_TEXINPUTS} $(TEXI2DVI) $(srcdir)/bashref.texi + +bashref.info: $(BASHREF_FILES) $(HSUSER) $(RLUSER) + $(MAKEINFO) --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi + +bashref.html: $(BASHREF_FILES) $(HSUSER) $(RLUSER) + $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/bashref.texi + +bash.info: bashref.info + ${SHELL} ${INFOPOST} < $(srcdir)/bashref.info > $@ ; \ + +bash.txt: bash.1 +bash.ps: bash.1 +bash.html: bash.1 $(MAN2HTML) +bashbug.ps: bashbug.1 +builtins.ps: builtins.1 bash.1 +rbash.ps: rbash.1 bash.1 +bash.0: bash.1 +bashbug.0: bashbug.1 +builtins.0: builtins.1 bash.1 +rbash.0: rbash.1 bash.1 +article.ps: article.ms + +bashref.ps: bashref.dvi + +article.pdf: article.ps +bashref.pdf: bashref.dvi +bash.pdf: bash.ps +rose94.pdf: rose94.ps + +$(MAN2HTML): ${topdir}/support/man2html.c + -( cd ${BUILD_DIR}/support ; ${MAKE} ${MFLAGS} man2html) + +clean: + $(RM) *.aux *.bak *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr *.cps \ + *.pgs *.bt *.bts *.rw *.rws *.fns *.kys *.tps *.vrs *.o + ${RM} core *.core + +mostlyclean: clean + $(RM) Makefile + +distclean: clean maybe-clean + $(RM) Makefile + +maintainer-clean: clean + ${RM} ${PSFILES} ${DVIFILES} ${INFOFILES} ${MAN0FILES} ${HTMLFILES} + ${RM} ${CREATED_FAQ} + $(RM) Makefile + +maybe-clean: + -if test "X$(topdir)" != "X$(BUILD_DIR)"; then \ + $(RM) ${PSFILES} ${DVIFILES} ${INFOFILES} ${MAN0FILES} ${HTMLFILES}; \ + fi + +installdirs: + -$(SHELL) $(SUPPORT_SRCDIR)/mkinstalldirs $(DESTDIR)$(man1dir) + -$(SHELL) $(SUPPORT_SRCDIR)/mkinstalldirs $(DESTDIR)$(infodir) + -if test -n "$(htmldir)" ; then \ + $(SHELL) $(SUPPORT_SRCDIR)/mkinstalldirs $(DESTDIR)$(htmldir) ; \ + fi + +install: info installdirs bash.info + -$(INSTALL_DATA) $(srcdir)/bash.1 $(DESTDIR)$(man1dir)/bash${man1ext} + -$(INSTALL_DATA) $(srcdir)/bashbug.1 $(DESTDIR)$(man1dir)/bashbug${man1ext} +# uncomment the next line to install the builtins man page +# -$(INSTALL_DATA) $(srcdir)/builtins.1 $(DESTDIR)$(man1dir)/bash_builtins${man1ext} + -$(INSTALL_DATA) $(srcdir)/bash.info $(DESTDIR)$(infodir)/bash.info +# run install-info if it is present to update the info directory + if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \ + install-info --dir-file=$(DESTDIR)$(infodir)/dir $(DESTDIR)$(infodir)/bash.info; \ + else true; fi +# if htmldir is set, install the html files into that directory + -if test -n "${htmldir}" ; then \ + $(INSTALL_DATA) $(srcdir)/bash.html $(DESTDIR)$(htmldir) ; \ + $(INSTALL_DATA) $(srcdir)/bashref.html $(DESTDIR)$(htmldir) ; \ + fi + +uninstall: + -$(RM) $(DESTDIR)$(man1dir)/bash${man1ext} $(DESTDIR)$(man1dir)/bashbug${man1ext} + $(RM) $(DESTDIR)$(infodir)/bash.info + -if test -n "$(htmldir)" ; then \ + $(RM) $(DESTDIR)$(htmldir)/bash.html ; \ + $(RM) $(DESTDIR)$(htmldir)/bashref.html ; \ + fi + +# for use by chet +CREATED_FAQ = faq.news faq.news2 faq.mail faq.version + +faq: ${CREATED_FAQ} + +faq.version: FAQ.version FAQ + sh mkfaqvers FAQ.version > $@ + +faq.headers.mail: FAQ.headers.mail FAQ + sh mkfaqvers FAQ.headers.mail > $@ + +faq.headers.news: FAQ.headers.news FAQ + sh mkfaqvers FAQ.headers.news > $@ + +faq.headers.news2: FAQ.headers.news2 FAQ + sh mkfaqvers FAQ.headers.news2 > $@ + +faq.news: FAQ faq.headers.news faq.version + $(RM) $@ + cat faq.headers.news faq.version FAQ > $@ + +faq.news2: FAQ faq.headers.news2 faq.version + $(RM) $@ + cat faq.headers.news2 faq.version FAQ > $@ + +faq.mail: FAQ faq.headers.mail faq.version + $(RM) $@ + cat faq.headers.mail faq.version FAQ > $@ + +inst: bashref.texi + $(SHELL) ./mkinstall + cmp -s INSTALL ../INSTALL || mv INSTALL ../INSTALL + $(RM) INSTALL + +posix: bashref.texi + $(SHELL) ./mkposix + cmp -s POSIX ../POSIX || mv POSIX ../POSIX + $(RM) POSIX + +rbash: bashref.texi + $(SH) ./mkrbash + cmp -s RBASH ../RBASH || mv RBASH ../RBASH + $(RM) RBASH + +xdist: pdf inst posix rbash diff --git a/bash-20060316/doc/README b/bash-20060316/doc/README new file mode 100644 index 000000000..e3a1d248f --- /dev/null +++ b/bash-20060316/doc/README @@ -0,0 +1,36 @@ +This directory contains the bash documentation. + +FAQ - a set of frequently-asked questions about Bash with answers +INTRO - a short introduction to bash +article.ms - an article I wrote about bash for The Linux Journal +bash.1 - the bash man page +builtins.1 - a man page that documents the builtins, extracted from bash.1 +bashref.texi - the `bash reference manual' +bashref.info - the `bash reference manual' processed by `makeinfo' +readline.3 - the readline man page + +The `.ps' files are postscript versions of the above. The `.html' +files are HTML versions of the man page and reference manual. The +`.0' files are formatted manual pages. The `.txt' versions are +ascii -- the output of `groff -Tascii'. + +The rest of this file explains how to use the `builtins.1' man page. + +For each command in the list of builtins create a file in man/man1 called: + +${command}.1 + +eg. +for.1 +type.1 +alias.1 +etc. + +All these files are identical as follows: + +jaws@jaws(264)$ cat alias.1 +.so man1/builtins.1 +jaws@jaws(265)$ + +Make sure you adjust the .so line in builtins.1 to reflect where you +put it. diff --git a/bash-20060316/doc/article.ms b/bash-20060316/doc/article.ms new file mode 100644 index 000000000..517155a8b --- /dev/null +++ b/bash-20060316/doc/article.ms @@ -0,0 +1,1114 @@ +.de SE \" start example +.sp .5 +.RS +.ft CR +.nf +.. +.de EE \" end example +.fi +.sp .5 +.RE +.ft R +.. +.TL +Bash \- The GNU shell* +.AU +Chet Ramey +Case Western Reserve University +chet@po.cwru.edu +.FS +*An earlier version of this article appeared in The Linux Journal. +.FE +.NH 1 +Introduction +.PP +.B Bash +is the shell, or command language interpreter, +that will appear in the GNU operating system. +The name is an acronym for +the \*QBourne-Again SHell\*U, a pun on Steve Bourne, the author +of the direct ancestor of the current +.UX +shell \fI/bin/sh\fP, +which appeared in the Seventh Edition Bell Labs Research version +of \s-1UNIX\s+1. +.PP +Bash is an \fBsh\fP\-compatible shell that incorporates useful +features from the Korn shell (\fBksh\fP) and the C shell (\fBcsh\fP), +described later in this article. It is ultimately intended to be a +conformant implementation of the IEEE POSIX Shell and Utilities +specification (IEEE Working Group 1003.2). It offers functional +improvements over sh for both interactive and programming use. +.PP +While the GNU operating system will most likely include a version +of the Berkeley shell csh, Bash will be the default shell. +Like other GNU software, Bash is quite portable. It currently runs +on nearly every version of +.UX +and a few other operating systems \- an independently-supported +port exists for OS/2, and there are rumors of ports to DOS and +Windows NT. Ports to \s-1UNIX\s+1-like systems such as QNX and Minix +are part of the distribution. +.PP +The original author of Bash +was Brian Fox, an employee of the Free Software Foundation. The +current developer and maintainer is Chet Ramey, a volunteer who +works at Case Western Reserve University. +.NH 1 +What's POSIX, anyway? +.PP +.I POSIX +is a name originally coined by Richard Stallman for a family of open +system standards based on \s-1UNIX\s+1. There are a number of aspects of \s-1UNIX\s+1 +under consideration for standardization, from the basic system services +at the system call and C library level to applications and tools to system +administration and management. Each area of standardization is +assigned to a working group in the 1003 series. +.PP +The POSIX Shell and Utilities standard has been developed by IEEE Working +Group 1003.2 (POSIX.2).\(dd +.FS +\(ddIEEE, \fIIEEE Standard for Information Technology -- Portable +Operating System Interface (POSIX) Part 2: Shell and Utilities\fP, +1992. +.FE +It concentrates on the command interpreter +interface and utility programs +commonly executed from the command line or by other programs. +An initial version of the standard has been +approved and published by the IEEE, and work is currently underway to +update it. +There are four primary areas of work in the 1003.2 standard: +.IP \(bu +Aspects of the shell's syntax and command language. +A number of special builtins such as +.B cd +and +.B exec +are being specified as part of the shell, since their +functionality usually cannot be implemented by a separate executable; +.IP \(bu +A set of utilities to be called by shell scripts and applications. +Examples are programs like +.I sed, +.I tr, +and +.I awk. +Utilities commonly implemented as shell builtins +are described in this section, such as +.B test +and +.B kill . +An expansion of this section's scope, termed the User Portability +Extension, or UPE, has standardized interactive programs such as +.I vi +and +.I mailx; +.IP \(bu +A group of functional interfaces to services provided by the +shell, such as the traditional \f(CRsystem()\fP +C library function. There are functions to perform shell word +expansions, perform filename expansion (\fIglobbing\fP), obtain values +of POSIX.2 system configuration variables, retrieve values of +environment variables (\f(CRgetenv()\fP\^), and other services; +.IP \(bu +A suite of \*Qdevelopment\*U utilities such as +.I c89 +(the POSIX.2 version of \fIcc\fP), +and +.I yacc. +.PP +Bash is concerned with the aspects of the shell's behavior +defined by POSIX.2. The shell command language has of +course been standardized, including the basic flow control +and program execution constructs, I/O redirection and +pipelining, argument handling, variable expansion, and quoting. +The +.I special +builtins, which must be implemented as part of the shell to +provide the desired functionality, are specified as being +part of the shell; examples of these are +.B eval +and +.B export . +Other utilities appear in the sections of POSIX.2 not +devoted to the shell which are commonly (and in some +cases must be) implemented as builtin commands, such as +.B read +and +.B test . +POSIX.2 also specifies aspects of the shell's +interactive behavior as part of +the UPE, including job control and command line editing. +Interestingly enough, only \fIvi\fP-style line editing commands +have been standardized; \fIemacs\fP editing commands were left +out due to objections. +.PP +While POSIX.2 includes much of what the shell has traditionally +provided, some important things have been omitted as being +\*Qbeyond its scope.\*U There is, for instance, no mention of +a difference between a +.I login +shell and any other interactive shell (since POSIX.2 does not +specify a login program). No fixed startup files are defined, +either \- the standard does not mention +.I .profile . +.NH 1 +Basic Bash features +.PP +Since the Bourne shell +provides Bash with most of its philosophical underpinnings, +Bash inherits most of its features and functionality from sh. +Bash implements all of the traditional sh flow +control constructs (\fIfor\fP, \fIif\fP, \fIwhile\fP, etc.). +All of the Bourne shell builtins, including those not specified in +the POSIX.2 standard, appear in Bash. Shell \fIfunctions\fP, +introduced in the SVR2 version of the Bourne shell, +are similar to shell scripts, but are defined using a special +syntax and are executed in the same process as the calling shell. +Bash has shell functions +which behave in a fashion upward-compatible with sh functions. +There are certain shell +variables that Bash interprets in the same way as sh, such as +.B PS1 , +.B IFS , +and +.B PATH . +Bash implements essentially the same grammar, parameter and +variable expansion semantics, redirection, and quoting as the +Bourne shell. Where differences appear between the POSIX.2 +standard and traditional sh behavior, Bash follows POSIX. +.PP +The Korn Shell (\fBksh\fP) is a descendent of the Bourne shell written +at AT&T Bell Laboratories by David Korn\(dg. It provides a number of +useful features that POSIX and Bash have adopted. Many of the +interactive facilities in POSIX.2 have their roots in the ksh: +for example, the POSIX and ksh job control facilities are nearly +identical. Bash includes features from the Korn Shell for both +interactive use and shell programming. For programming, Bash provides +variables such as +.B RANDOM +and +.B REPLY , +the +.B typeset +builtin, +the ability to remove substrings from variables based on patterns, +and shell arithmetic. +.FS +\(dgMorris Bolsky and David Korn, \fIThe KornShell Command and +Programming Language\fP, Prentice Hall, 1989. +.FE +.B RANDOM +expands to a random number each time it is referenced; assigning a +value to +.B RANDOM +seeds the random number generator. +.B REPLY +is the default variable used by the +.B read +builtin when no variable names are supplied as arguments. +The +.B typeset +builtin is used to define variables and give them attributes +such as \fBreadonly\fP. +Bash arithmetic allows the evaluation of an expression and the +substitution of the result. Shell variables may be used as operands, +and the result of an expression may be assigned to a variable. +Nearly all of the operators from the C language are available, +with the same precedence rules: +.SE +$ echo $((3 + 5 * 32)) +163 +.EE +.LP +For interactive use, Bash implements ksh-style aliases and builtins +such as +.B fc +(discussed below) and +.B jobs . +Bash aliases allow a string to be substituted for a command name. +They can be used to create a mnemonic for a \s-1UNIX\s+1 command +name (\f(CRalias del=rm\fP), to expand a single word to a complex command +(\f(CRalias news='xterm -g 80x45 -title trn -e trn -e -S1 -N &'\fP), or to +ensure that a command is invoked with a basic set of options +(\f(CRalias ls="/bin/ls -F"\fP). +.PP +The C shell (\fBcsh\fP)\(dg, originally written by Bill Joy while at +Berkeley, is widely used and quite popular for its interactive +facilities. Bash includes a csh-compatible history expansion +mechanism (\*Q! history\*U), brace expansion, access to a stack +of directories via the +.B pushd , +.B popd , +and +.B dirs +builtins, and tilde expansion, to generate users' home directories. +Tilde expansion has also been adopted by both the Korn Shell and +POSIX.2. +.FS +\(dgBill Joy, An Introduction to the C Shell, \fIUNIX User's Supplementary +Documents\fP, University of California at Berkeley, 1986. +.FE +.PP +There were certain areas in which POSIX.2 felt standardization +was necessary, but no existing implementation provided the proper +behavior. The working group invented and standardized functionality +in these areas, which Bash implements. The +.B command +builtin was invented so that shell functions could be written to +replace builtins; it makes the capabilities of the builtin +available to the function. The reserved word \*Q!\*U was added +to negate the return value of a command or pipeline; it was nearly +impossible to express \*Qif not x\*U cleanly using the sh language. +There exist multiple incompatible implementations of the +.B test +builtin, which tests files for type and other attributes and performs +arithmetic and string comparisons. +POSIX considered none of these correct, so the standard +behavior was specified in terms of the number of arguments to the +command. POSIX.2 dictates exactly what will happen when four or +fewer arguments are given to +.B test , +and leaves the behavior undefined when more arguments are supplied. +Bash uses the POSIX.2 algorithm, which was conceived by David Korn. +.NH 2 +Features not in the Bourne Shell +.PP +There are a number of minor differences between Bash and the +version of sh present on most other versions of \s-1UNIX\s+1. The majority +of these are due to the POSIX standard, but some are the result of +Bash adopting features from other shells. For instance, Bash +includes the new \*Q!\*U reserved word, the +.B command +builtin, the ability of the +.B read +builtin to correctly return a line ending with a backslash, symbolic +arguments to the +.B umask +builtin, variable substring removal, a way to get the length of a variable, +and the new algorithm for the +.B test +builtin from the POSIX.2 standard, none of which appear in sh. +.PP +Bash also implements the \*Q$(...)\*U command substitution syntax, +which supersedes the sh `...` construct. +The \*Q$(...)\*U construct expands to the output of the command +contained within the +parentheses, with trailing newlines removed. The sh syntax is +accepted for backwards compatibility, but the \*Q$(...)\*U form +is preferred because its quoting rules are much simpler and it +is easier to nest. +.PP +The Bourne shell does not provide such features as brace expansion, +the ability +to define a variable and a function with the same name, local variables +in shell functions, the ability to enable and disable individual +builtins or write a function to replace a builtin, or a means to +export a shell function to a child process. +.PP +Bash has closed +a long-standing shell security hole by not using the +.B $IFS +variable to split each word read by the shell, but splitting only +the results of expansion (ksh and the 4.4 BSD sh have fixed this +as well). Useful behavior such as a means to abort +execution of a script read with the \*Q.\*U command using the +\fBreturn\fP builtin or automatically +exporting variables in the shell's environment to children is also +not present in the Bourne shell. Bash provides a much more powerful +environment for both interactive use and programming. +.NH 1 +Bash-specific Features +.PP +This section details a few of the features which make Bash unique. +Most of them provide improved interactive use, but a few programming +improvements are present as well. Full descriptions of these +features can be found in the Bash documentation. +.NH 2 +Startup Files +.PP +Bash executes startup files differently than other shells. The Bash +behavior is a compromise between the csh principle of startup files +with fixed names executed for each shell and the sh +\*Qminimalist\*U behavior. An interactive instance of Bash started +as a login shell reads and executes +.I ~/.bash_profile +(the file .bash_profile in the user's home directory), if it exists. +An interactive non-login shell reads and executes +.I ~/.bashrc . +A non-interactive shell (one begun to execute a shell script, for +example) reads no fixed startup file, but uses the value of the variable +.B $ENV , +if set, as the name of a startup file. The ksh practice of reading +.B $ENV +for every shell, with the accompanying difficulty of defining the +proper variables and functions for interactive and non-interactive +shells or having the file read only for interactive shells, was +considered too complex. Ease of use won out here. Interestingly, +the next release of ksh will change to reading +.B $ENV +only for interactive shells. +.NH 2 +New Builtin Commands +.PP +There are a few builtins which are new or have been extended in Bash. +The +.B enable +builtin allows builtin commands to be turned on and off arbitrarily. +To use the version of +.I echo +found in a user's search path rather than the Bash builtin, +\f(CRenable -n echo\fP suffices. The +.B help +builtin provides +quick synopses of the shell facilities without requiring +access to a manual page. +.B Builtin +is similar to +.B command +in that it bypasses shell functions and directly executes builtin +commands. Access to a csh-style stack of directories is provided +via the +.B pushd , +.B popd , +and +.B dirs +builtins. +.B Pushd +and +.B popd +insert and remove directories from the stack, respectively, and +.B dirs +lists the stack contents. On systems that allow fine-grained control +of resources, the +.B ulimit +builtin can be used to tune these settings. +.B Ulimit +allows a user to control, +among other things, whether core dumps are to be generated, +how much memory the shell or a child process is allowed to allocate, +and how large a file created by a child process can grow. The +.B suspend +command will stop the shell process when job control is active; most +other shells do not allow themselves to be stopped like that. +.B Type, +the Bash answer to +.B which +and +.B whence, +shows what will happen when a word is typed as a command: +.SE +$ type export +export is a shell builtin +$ type -t export +builtin +$ type bash +bash is /bin/bash +$ type cd +cd is a function +cd () +{ + builtin cd ${1+"$@"} && xtitle $HOST: $PWD +} +.EE +.LP +Various +modes tell what a command word is (reserved word, alias, function, builtin, +or file) or which version of a command will be executed based on +a user's search path. Some of this functionality has been adopted +by POSIX.2 and folded into the +.B command +utility. +.NH 2 +Editing and Completion +.PP +One area in which Bash shines is command line editing. Bash uses the +.I readline +library to read and edit lines when interactive. Readline is a +powerful and flexible input facility that a user can configure to +individual tastes. It allows lines to be edited using either emacs +or vi commands, where those commands are appropriate. The full +capability of emacs is not present \- there is no way to execute +a named command with M-x, for instance \- but the existing commands +are more than adequate. The vi mode is compliant with +the command line editing standardized by POSIX.2. +.PP +Readline is fully customizable. In addition to the basic commands +and key bindings, the library allows users to define additional +key bindings using a startup file. The +.I inputrc +file, which defaults to the file +.I ~/.inputrc , +is read each time readline initializes, permitting users to +maintain a consistent interface across a set of programs. Readline +includes an extensible interface, so each program using the +library can add its own bindable commands and program-specific +key bindings. Bash uses this facility to add bindings +that perform history expansion or shell word expansions on the current +input line. +.PP +Readline interprets a number of +variables which further tune its behavior. Variables +exist to control whether or not eight-bit characters are directly +read as input or converted to meta-prefixed key sequences (a +meta-prefixed key sequence consists of the character with the +eighth bit zeroed, preceded by the +.I meta-prefix +character, usually escape, which selects an alternate keymap), to +decide whether to output characters with the eighth bit set +directly or as a meta-prefixed key sequence, whether or not to +wrap to a new screen line when a line being edited is longer than +the screen width, the keymap to which subsequent key bindings should +apply, or even what happens when readline wants to +ring the terminal's bell. All of these variables can be set in +the inputrc file. +.PP +The startup file understands a set of C +preprocessor-like conditional constructs which allow variables or +key bindings to be assigned based on the application using readline, +the terminal currently being used, or the editing mode. Users can +add program-specific bindings to make their lives easier: I have +bindings that let me edit the value of +.B $PATH +and double-quote the current or previous word: +.SE +# Macros that are convenient for shell interaction +$if Bash +# edit the path +"\eC-xp": "PATH=${PATH}\ee\eC-e\eC-a\eef\eC-f" +# prepare to type a quoted word -- insert open and close double +# quotes and move to just after the open quote +"\eC-x\e"": "\e"\e"\eC-b" +# Quote the current or previous word +"\eC-xq": "\eeb\e"\eef\e"" +$endif +.EE +.LP +There is a readline +command to re-read the file, so users can edit the file, change +some bindings, and begin to use them almost immediately. +.PP +Bash implements the +.B bind +builtin for more dyamic control of readline than the startup file +permits. +.B Bind +is used in several ways. In +.I list +mode, it can display the current key bindings, list all the +readline editing directives available for binding, list which keys +invoke a given directive, or output the current set of key +bindings in a format that can be incorporated directly into an inputrc +file. In +.I batch +mode, it reads a series of key bindings directly from a file and +passes them to readline. In its most common usage, +.B bind +takes a single string and passes it directly to readline, which +interprets the line as if it had just been read from the inputrc file. +Both key bindings and variable assignments may appear in the +string given to +.B bind . +.PP +The readline library also provides an interface for \fIword completion\fP. +When the +.I completion +character (usually TAB) is typed, readline looks at the word currently +being entered and computes the set of filenames of which the current +word is a valid prefix. +If there is only one possible completion, the +rest of the characters are inserted directly, otherwise the +common prefix of the set of filenames is added to the current word. +A second TAB character entered immediately after a non-unique +completion causes readline to list the possible completions; there is +an option to have the list displayed immediately. +Readline provides hooks so that applications can provide specific types +of completion before the default filename completion is attempted. +This is quite flexible, though it is not completely user-programmable. +Bash, for example, can complete filenames, command names (including aliases, +builtins, shell reserved words, shell functions, and executables found +in the file system), shell variables, usernames, and hostnames. It +uses a set of heuristics that, while not perfect, is generally quite +good at determining what type of completion to attempt. +.NH 2 +History +.PP +Access to the list of commands previously entered (the \fIcommand history\fP) +is provided jointly by Bash and the readline library. Bash provides +variables (\fB$HISTFILE\fP, \fB$HISTSIZE\fP, and \fB$HISTCONTROL\fP) +and the +.B history +and +.B fc +builtins to manipulate the history list. +The value of +.B $HISTFILE +specifes the file where Bash writes the command history on exit and +reads it on startup. +.B $HISTSIZE +is used to limit the number of commands saved in the history. +.B $HISTCONTROL +provides a crude form of control over which commands are saved on +the history list: a value of +.I ignorespace +means to not save commands which begin with a space; a value of +.I ignoredups +means to not save commands identical to the last command saved. +\fB$HISTCONTROL\fP was named \fB$history_control\fP in earlier +versions of Bash; the old name is still accepted for backwards +compatibility. The +.B history +command can read or write files containing the history list +and display the current list contents. The +.B fc +builtin, adopted from POSIX.2 and the Korn Shell, allows display +and re-execution, with optional editing, +of commands from the history list. The readline +library offers a set of commands to search the history list for +a portion of the current input line or a string typed by the user. +Finally, the +.I history +library, generally incorporated directly into the readline library, +implements a facility for history recall, expansion, and re-execution +of previous commands very similar to csh +(\*Qbang history\*U, so called because the exclamation point +introduces a history substitution): +.SE +$ echo a b c d e +a b c d e +$ !! f g h i +echo a b c d e f g h i +a b c d e f g h i +$ !-2 +echo a b c d e +a b c d e +$ echo !-2:1-4 +echo a b c d +a b c d +.EE +.LP +The command history is only +saved when the shell is interactive, so it is not available for use +by shell scripts. +.NH 2 +New Shell Variables +.PP +There are a number of convenience variables that Bash interprets +to make life easier. These include +.B FIGNORE , +which is a set of filename suffixes identifying files to exclude when +completing filenames; +.B HOSTTYPE , +which is automatically set to a string describing the type of +hardware on which Bash is currently executing; +.B command_oriented_history , +which directs Bash to save all lines of a multiple-line +command such as a \fIwhile\fP or \fIfor\fP loop in a single +history entry, allowing easy re-editing; and +.B IGNOREEOF , +whose value indicates the number of consecutive EOF characters that +an interactive shell will read before exiting \- an easy way to keep +yourself from being logged out accidentally. The +.B auto_resume +variable alters the way the shell treats simple command names: +if job control is active, and this variable is set, single-word +simple commands without redirections cause the shell to first +look for and restart a suspended job with that name before +starting a new process. +.NH 2 +Brace Expansion +.PP +Since sh offers no convenient way to generate arbitrary strings that +share a common prefix or suffix (filename expansion requires that +the filenames exist), Bash implements \fIbrace expansion\fP, a +capability picked up from csh. +Brace expansion is similar to filename expansion, but the strings +generated need not correspond to existing files. A brace expression +consists of an optional +.I preamble , +followed by a pair of braces enclosing a series of comma-separated +strings, and an optional +.I postamble . +The preamble is prepended to each string within the braces, and the +postamble is then appended to each resulting string: +.SE +$ echo a{d,c,b}e +ade ace abe +.EE +.LP +As this example demonstrates, the results of brace expansion are not +sorted, as they are by filename expansion. +.NH 2 +Process Substitution +.PP +On systems that can support it, Bash provides a facility known as +\fIprocess substitution\fP. Process substitution is similar to command +substitution in that its specification includes a command to execute, +but the shell does not collect the command's output and insert it into +the command line. Rather, Bash opens a pipe to the command, which +is run in the background. The shell uses named pipes (FIFOs) or the +.I /dev/fd +method of naming open files to expand the process +substitution to a filename which connects to the pipe when opened. +This filename becomes the result of the expansion. Process substitution +can be used to compare the outputs of two different versions of an +application as part of a regression test: +.SE +$ cmp <(old_prog) <(new_prog) +.EE +.NH 2 +Prompt Customization +.PP +One of the more popular interactive features that Bash provides is +the ability to customize the prompt. Both +.B $PS1 +and +.B $PS2, +the primary and secondary prompts, are expanded before being +displayed. Parameter and variable expansion is performed when +the prompt string is expanded, so any shell variable can be +put into the prompt (e.g., +.B $SHLVL , +which indicates how deeply the current shell is nested). +Bash specially interprets characters in the prompt string +preceded by a backslash. Some of these backslash escapes are +replaced with +the current time, the date, the current working directory, +the username, and the command number or history number of the command +being entered. There is even a backslash escape to cause the shell +to change its prompt when running as root after an \fIsu\fP. +Before printing each primary prompt, Bash expands the variable +.B $PROMPT_COMMAND +and, if it has a value, executes the expanded value as a command, +allowing additional prompt customization. For example, this assignment +causes the current user, the current host, the time, the last +component of the current working directory, the level of shell +nesting, and the history number of the current command to be embedded +into the primary prompt: +.SE +$ PS1='\eu@\eh [\et] \eW($SHLVL:\e!)\e$ ' +chet@odin [21:03:44] documentation(2:636)$ cd .. +chet@odin [21:03:54] src(2:637)$ +.EE +.LP +The string being assigned is surrounded by single quotes so that if +it is exported, the value of +.B $SHLVL +will be updated by a child shell: +.SE +chet@odin [21:17:35] src(2:638)$ export PS1 +chet@odin [21:17:40] src(2:639)$ bash +chet@odin [21:17:46] src(3:696)$ +.EE +.LP +The \fP\e$\fP escape is displayed +as \*Q\fB$\fP\*U when running as a normal user, but as \*Q\fB#\fP\*U when +running as root. +.NH 2 +File System Views +.PP +Since Berkeley introduced symbolic links in 4.2 BSD, one of their most +annoying properties has been the \*Qwarping\*U to a completely +different area of the file system when using +.B cd , +and the resultant non-intuitive behavior of \*Q\fBcd ..\fP\*U. +The \s-1UNIX\s+1 kernel treats symbolic links +.I physically . +When the kernel is translating a pathname +in which one component is a symbolic link, it replaces all or part +of the pathname while processing the link. If the contents of the symbolic +link begin with a slash, the kernel replaces the +pathname entirely; if not, the link contents replace +the current component. In either case, the symbolic link +is visible. If the link value is an absolute pathname, +the user finds himself in a completely different part of the file +system. +.PP +Bash provides a +.I logical +view of the file system. In this default mode, command and filename +completion and builtin commands such as +.B cd +and +.B pushd +which change the current working directory transparently follow +symbolic links as if they were directories. +The +.B $PWD +variable, which holds the shell's idea of the current working directory, +depends on the path used to reach the directory rather than its +physical location in the local file system hierarchy. For example: +.SE +$ cd /usr/local/bin +$ echo $PWD +/usr/local/bin +$ pwd +/usr/local/bin +$ /bin/pwd +/net/share/sun4/local/bin +$ cd .. +$ pwd +/usr/local +$ /bin/pwd +/net/share/sun4/local +$ cd .. +$ pwd +/usr +$ /bin/pwd +/usr +.EE +.LP +One problem with this, of +course, arises when programs that do not understand the shell's logical +notion of the file system interpret \*Q..\*U differently. This generally +happens when Bash completes filenames containing \*Q..\*U according to a +logical hierarchy which does not correspond to their physical location. +For users who find this troublesome, a corresponding +.I physical +view of the file system is available: +.SE +$ cd /usr/local/bin +$ pwd +/usr/local/bin +$ set -o physical +$ pwd +/net/share/sun4/local/bin +.EE +.NH 2 +Internationalization +.PP +One of the most significant improvements in version 1.13 of Bash was the +change to \*Qeight-bit cleanliness\*U. Previous versions used the +eighth bit of characters to mark whether or not they were +quoted when performing word expansions. While this did not affect +the majority of users, most of whom used only seven-bit ASCII characters, +some found it confining. Beginning with version 1.13, Bash +implemented a different quoting mechanism that did not alter the +eighth bit of characters. This allowed Bash +to manipulate files with \*Qodd\*U characters in their names, but +did nothing to help users enter those names, so +version 1.13 introduced changes to readline that +made it eight-bit clean as well. Options exist that force readline to +attach no special significance to characters with the eighth bit set +(the default behavior is to convert these characters to meta-prefixed +key sequences) and to output these characters without conversion to +meta-prefixed sequences. These changes, along with the expansion of +keymaps to a full eight bits, enable readline to work with most of the +ISO-8859 family of character sets, used by many European countries. +.NH 2 +POSIX Mode +.PP +Although Bash is intended to be POSIX.2 conformant, there are areas in +which the default behavior is not compatible with the standard. For +users who wish to operate in a strict POSIX.2 environment, Bash +implements a \fIPOSIX mode\fP. When this mode is active, Bash modifies +its default operation where it differs from POSIX.2 to match the +standard. POSIX mode is entered when Bash is started with the +.B -posix +option. This feature is also available as an option to the +\fBset\fP builtin, \fBset -o posix\fP. +For compatibility with other GNU software that attempts to be POSIX.2 +compliant, Bash also enters POSIX mode if the variable +.B $POSIXLY_CORRECT +is set when Bash is started or assigned a value during execution. +.B $POSIX_PEDANTIC +is accepted as well, to be compatible with some older GNU utilities. +When Bash is started in POSIX mode, for example, it sources the +file named by the value of +.B $ENV +rather than the \*Qnormal\*U startup files, and does not allow +reserved words to be aliased. +.NH 1 +New Features and Future Plans +.PP +There are several features introduced in the current +version of Bash, version 1.14, and a number under consideration +for future releases. This section will briefly detail the new +features in version 1.14 and describe several features +that may appear in later versions. +.NH 2 +New Features in Bash-1.14 +.PP +The new features available in Bash-1.14 answer several of +the most common requests for enhancements. Most notably, there +is a mechanism +for including non-visible character sequences in prompts, such as +those which cause a terminal to print characters in different +colors or in standout mode. There was nothing preventing the use +of these sequences in earlier +versions, but the readline redisplay algorithm assumed each +character occupied physical screen space and would wrap lines +prematurely. +.PP +Readline has a few new +variables, several new bindable commands, and some additional +emacs mode default key bindings. A new history search +mode has been implemented: in this mode, readline searches the +history for lines beginning with the characters between the +beginning of the current line and the cursor. The existing readline +incremental search commands no longer match identical lines more +than once. +Filename completion now expands variables in directory names. +The history expansion facilities are now nearly +completely csh-compatible: missing modifiers have been added and +history substitution has been extended. +.PP +Several of the features described earlier, such as +.B "set -o posix" +and +.B $POSIX_PEDANTIC , +are new in version 1.14. +There is a new shell variable, +.B OSTYPE , +to which Bash assigns a value that identifies the +version of \s-1UNIX\s+1 it's +running on (great for putting architecture-specific binary directories +into the \fB$PATH\fP). +Two variables have been renamed: +.B $HISTCONTROL +replaces +.B $history_control , +and +.B $HOSTFILE +replaces +.B $hostname_completion_file . +In both cases, the old names are accepted for backwards +compatibility. The ksh +.I select +construct, which allows the generation of simple menus, +has been implemented. New capabilities have been added +to existing variables: +.B $auto_resume +can now take values of +.I exact +or +.I substring , +and +.B $HISTCONTROL +understands the value +.I ignoreboth , +which combines the two previously acceptable values. The +.B dirs +builtin has acquired options to print out specific members of the +directory stack. The +.B $nolinks +variable, which forces a physical view of the file system, +has been superseded by the +.B \-P +option to the +.B set +builtin (equivalent to \fBset -o physical\fP); the variable is retained +for backwards compatibility. The version string contained in +.B $BASH_VERSION +now includes an indication of the patch level as well as the +\*Qbuild version\*U. +Some little-used features have +been removed: the +.B bye +synonym for +.B exit +and the +.B $NO_PROMPT_VARS +variable are gone. There is now an organized test suite that can be +run as a regression test when building a new version of Bash. +.PP +The documentation has been thoroughly overhauled: +there is a new manual page on the readline library and the \fIinfo\fP +file has been updated to reflect the current version. +As always, as many bugs as possible have been fixed, although some +surely remain. +.NH 2 +Other Features +.PP +There are a few features that I hope to include in later Bash releases. +Some are based on work already done in other shells. +.PP +In addition to simple variables, a future release of Bash will include +one-dimensional arrays, using the ksh +implementation of arrays as a model. Additions to the ksh syntax, +such as \fIvarname\fP=( ... ) to assign a list of words directly to +an array and a mechanism to allow +the +.B read +builtin to read a list of values directly into an array, would be +desirable. Given those extensions, the ksh +.B "set \-A" +syntax may not be worth supporting (the +.B \-A +option assigns a list of values to an array, but is a rather +peculiar special case). +.PP +Some shells include a means of \fIprogrammable\fP word +completion, where the user specifies on a per-command basis how the +arguments of the command are to be treated when completion is attempted: +as filenames, hostnames, executable files, and so on. The other +aspects of the current Bash implementation could remain as-is; the +existing heuristics would still be valid. Only when completing the +arguments to a simple command would the programmable completion be +in effect. +.PP +It would also be nice to give the user finer-grained +control over which commands are saved onto the history list. One +proposal is for a variable, tentatively named +.B HISTIGNORE , +which would contain a colon-separated list of commands. Lines beginning +with these commands, after the restrictions of +.B $HISTCONTROL +have been applied, would not be placed onto the history list. The +shell pattern-matching capabilities could also be available when +specifying the contents of +.B $HISTIGNORE . +.PP +One thing that newer shells such as +.B wksh +(also known as +.B dtksh ) +provide is a command to dynamically load code +implementing additional builtin commands into a running shell. +This new builtin would take an object file or shared library +implementing the \*Qbody\*U of the +builtin (\fIxxx_builtin()\fP for those familiar with Bash internals) +and a structure containing the name of the new command, the function +to call when the new builtin is invoked (presumably defined in the +shared object specified as an argument), and the documentation to be +printed by the +.B help +command (possibly present in the shared object as well). It would +manage the details of extending the internal table of builtins. +.PP +A few other builtins would also be desirable: two are the POSIX.2 +.B getconf +command, which prints the values of system configuration variables +defined by POSIX.2, and a +.B disown +builtin, which causes a shell running +with job control active to \*Qforget about\*U one or more +background jobs in its internal jobs table. Using +.B getconf , +for example, a user could retrieve a value for +.B $PATH +guaranteed to find all of the POSIX standard utilities, or +find out how long filenames may be in the file system containing +a specified directory. +.PP +There are no implementation timetables for any of these features, nor +are there concrete plans to include them. If anyone has comments on +these proposals, feel free to send me electronic mail. +.NH 1 +Reflections and Lessons Learned +.PP +The lesson that has been repeated most often during Bash +development is that there are dark corners in the Bourne shell, +and people use all of them. In the original description of the +Bourne shell, quoting and the shell grammar are both poorly +specified and incomplete; subsequent descriptions have not helped +much. The grammar presented in Bourne's paper describing +the shell distributed with the Seventh Edition of \s-1UNIX\s+1\(dg +is so far off that it does not allow the command \f(CWwho|wc\fP. +In fact, as Tom Duff states: +.QP +Nobody really knows what the +Bourne shell's grammar is. Even examination of the source code is +little help.\(dd +.FS +\(dgS. R. Bourne, \*QUNIX Time-Sharing System: The UNIX Shell\*U, +\fIBell System Technical Journal\fP, 57(6), July-August, 1978, pp. 1971-1990. +.FE +.FS +\(ddTom Duff, \*QRc \- A Shell for Plan 9 and \s-1UNIX\s+1 systems\*U, +\fIProc. of the Summer 1990 EUUG Conference\fP, London, July, 1990, +pp. 21-33. +.FE +.LP +The POSIX.2 standard includes a \fIyacc\fP grammar that comes close +to capturing the Bourne shell's behavior, but it disallows some +constructs which sh accepts without complaint \- and there are +scripts out there that use them. It took a few versions and +several bug reports before Bash implemented sh-compatible quoting, +and there are still some \*Qlegal\*U sh constructs which Bash flags as +syntax errors. Complete sh compatibility is a tough nut. +.PP +The shell is bigger and slower than I would like, though the current +version is substantially faster than previously. The readline library +could stand a substantial rewrite. A hand-written parser to replace +the current \fIyacc\fP-generated one would probably result in a speedup, +and would solve one glaring problem: the shell could parse +commands in \*Q$(...)\*U constructs +as they are entered, rather than reporting errors when the construct +is expanded. +.PP +As always, there is some chaff to go with the wheat. +Areas of duplicated functionality need to be cleaned +up. There are several cases where Bash treats a variable specially to +enable functionality available another way (\fB$notify\fP vs. +\fBset -o notify\fP and \fB$nolinks\fP vs. \fBset -o physical\fP, for +instance); the special treatment of the variable name should probably +be removed. A few more things could stand removal; the +.B $allow_null_glob_expansion +and +.B $glob_dot_filenames +variables are of particularly questionable value. +The \fB$[...]\fP arithmetic evaluation syntax is redundant now that +the POSIX-mandated \fB$((...))\fP construct has been implemented, +and could be deleted. +It would be nice if the text output by the +.B help +builtin were external to the shell rather than compiled into it. +The behavior enabled by +.B $command_oriented_history , +which causes the shell to attempt to save all lines of a multi-line +command in a single history entry, should be made the default and +the variable removed. +.NH 1 +Availability +.PP +As with all other +GNU software, Bash is available for anonymous FTP from +.I prep.ai.mit.edu:/pub/gnu +and from other GNU software mirror sites. The current version is in +.I bash-1.14.1.tar.gz +in that directory. Use +.I archie +to find the nearest archive site. The +latest version is always available for FTP from +.I bash.CWRU.Edu:/pub/dist. +Bash documentation is available for FTP from +.I bash.CWRU.Edu:/pub/bash. +.PP +The Free Software Foundation sells tapes and CD-ROMs +containing Bash; send electronic mail to +\f(CRgnu@prep.ai.mit.edu\fP or call \f(CR+1-617-876-3296\fP +for more information. +.PP +Bash is also distributed with several versions of \s-1UNIX\s+1-compatible +systems. It is included as /bin/sh and /bin/bash on several Linux +distributions (more about the difference in a moment), and as contributed +software in BSDI's BSD/386* and FreeBSD. +.FS +*BSD/386 is a trademark of Berkeley Software Design, Inc. +.FE +.PP +The Linux distribution deserves special mention. There are two +configurations included in the standard Bash distribution: a +\*Qnormal\*U configuration, in which all of the standard features +are included, and a \*Qminimal\*U configuration, which omits job +control, aliases, history and command line editing, the directory +stack and +.B pushd/popd/dirs, +process substitution, prompt string special character decoding, and the +.I select +construct. This minimal version is designed to be a drop-in replacement +for the traditional \s-1UNIX\s+1 /bin/sh, and is included as the Linux +/bin/sh in several packagings. +.NH 1 +Conclusion +.PP +Bash is a worthy successor to sh. +It is sufficiently portable +to run on nearly every version of \s-1UNIX\s+1 from +4.3 BSD to SVR4.2, and several \s-1UNIX\s+1 workalikes. +It is robust enough to replace sh on most of those systems, +and provides more functionality. It has several thousand regular users, +and their feedback has helped to make it as good as it is today \- a +testament to the benefits of free software. diff --git a/bash-20060316/doc/article.pdf b/bash-20060316/doc/article.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d2aaf9e2c2ae7a660c4748f0f690f6599e1ce2d1 GIT binary patch literal 131900 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 Yktf;h(bh0%MIv&tZRpTR@sn-;2LzQ1xc~qF literal 0 Hc-jL100001 diff --git a/bash-20060316/doc/article.ps b/bash-20060316/doc/article.ps new file mode 100644 index 000000000..3aadf2f30 --- /dev/null +++ b/bash-20060316/doc/article.ps @@ -0,0 +1,1418 @@ +%!PS-Adobe-3.0 +%%Creator: groff version 1.16.1 +%%CreationDate: Mon Nov 19 13:06:55 2001 +%%DocumentNeededResources: font Times-Bold +%%+ font Times-Italic +%%+ font Times-Roman +%%+ font Courier +%%DocumentSuppliedResources: procset grops 1.16 1 +%%Pages: 11 +%%PageOrder: Ascend +%%Orientation: Portrait +%%EndComments +%%BeginProlog +%%BeginResource: procset grops 1.16 1 +/setpacking where{ +pop +currentpacking +true setpacking +}if +/grops 120 dict dup begin +/SC 32 def +/A/show load def +/B{0 SC 3 -1 roll widthshow}bind def +/C{0 exch ashow}bind def +/D{0 exch 0 SC 5 2 roll awidthshow}bind def +/E{0 rmoveto show}bind def +/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def +/G{0 rmoveto 0 exch ashow}bind def +/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/I{0 exch rmoveto show}bind def +/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def +/K{0 exch rmoveto 0 exch ashow}bind def +/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/M{rmoveto show}bind def +/N{rmoveto 0 SC 3 -1 roll widthshow}bind def +/O{rmoveto 0 exch ashow}bind def +/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/Q{moveto show}bind def +/R{moveto 0 SC 3 -1 roll widthshow}bind def +/S{moveto 0 exch ashow}bind def +/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/SF{ +findfont exch +[exch dup 0 exch 0 exch neg 0 0]makefont +dup setfont +[exch/setfont cvx]cvx bind def +}bind def +/MF{ +findfont +[5 2 roll +0 3 1 roll +neg 0 0]makefont +dup setfont +[exch/setfont cvx]cvx bind def +}bind def +/level0 0 def +/RES 0 def +/PL 0 def +/LS 0 def +/MANUAL{ +statusdict begin/manualfeed true store end +}bind def +/PLG{ +gsave newpath clippath pathbbox grestore +exch pop add exch pop +}bind def +/BP{ +/level0 save def +1 setlinecap +1 setlinejoin +72 RES div dup scale +LS{ +90 rotate +}{ +0 PL translate +}ifelse +1 -1 scale +}bind def +/EP{ +level0 restore +showpage +}bind def +/DA{ +newpath arcn stroke +}bind def +/SN{ +transform +.25 sub exch .25 sub exch +round .25 add exch round .25 add exch +itransform +}bind def +/DL{ +SN +moveto +SN +lineto stroke +}bind def +/DC{ +newpath 0 360 arc closepath +}bind def +/TM matrix def +/DE{ +TM currentmatrix pop +translate scale newpath 0 0 .5 0 360 arc closepath +TM setmatrix +}bind def +/RC/rcurveto load def +/RL/rlineto load def +/ST/stroke load def +/MT/moveto load def +/CL/closepath load def +/FL{ +currentgray exch setgray fill setgray +}bind def +/BL/fill load def +/LW/setlinewidth load def +/RE{ +findfont +dup maxlength 1 index/FontName known not{1 add}if dict begin +{ +1 index/FID ne{def}{pop pop}ifelse +}forall +/Encoding exch def +dup/FontName exch def +currentdict end definefont pop +}bind def +/DEFS 0 def +/EBEGIN{ +moveto +DEFS begin +}bind def +/EEND/end load def +/CNT 0 def +/level1 0 def +/PBEGIN{ +/level1 save def +translate +div 3 1 roll div exch scale +neg exch neg exch translate +0 setgray +0 setlinecap +1 setlinewidth +0 setlinejoin +10 setmiterlimit +[]0 setdash +/setstrokeadjust where{ +pop +false setstrokeadjust +}if +/setoverprint where{ +pop +false setoverprint +}if +newpath +/CNT countdictstack def +userdict begin +/showpage{}def +}bind def +/PEND{ +clear +countdictstack CNT sub{end}repeat +level1 restore +}bind def +end def +/setpacking where{ +pop +setpacking +}if +%%EndResource +%%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 +/.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 +/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 +/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex +/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y +/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft +/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl +/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut +/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash +/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen +/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft +/logicalnot/minus/registered/macron/degree/plusminus/twosuperior +/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior +/ordmasculine/guilsinglright/onequarter/onehalf/threequarters +/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE +/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex +/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis +/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn +/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla +/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis +/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash +/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 +%%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 +(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 +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 +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 +(\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 +(\), 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 +-.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 +(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 +.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 +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 +(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 +(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 +(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 +(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 +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 +(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) +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) +-.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 +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 +(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 +(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\ +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 +(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 +(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 +(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 +.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 +(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 +(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 +%%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) +-.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 +G 1.438(cution con-).15 F 1.284 +(structs, I/O redirection and pipelining, ar)72 123.6 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 +(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 +(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\ + 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 +(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 +(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 +-.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 +(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 +(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 +.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 +.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 +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 +(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 +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 +(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 +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 +(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 +(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 +(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 +(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 +(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 +(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 +(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 +(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 +(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 +(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) +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 +(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) +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.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 +(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 +%%Page: 3 3 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(-3-)282.17 48 Q(POSIX.2.)72 84 Q .148 +(There were certain areas in which POSIX.2 felt standardization w)97 +99.6 R .149(as necessary)-.1 F 2.649(,b)-.65 G .149(ut no e)-2.849 F +.149(xisting imple-)-.15 F 1.598(mentation pro)72 111.6 R 1.598 +(vided the proper beha)-.15 F(vior)-.2 E 6.598(.T)-.55 G 1.598(he w) +-6.598 F 1.597(orking group in)-.1 F -.15(ve)-.4 G 1.597 +(nted and standardized functionality in).15 F .674 +(these areas, which Bash implements.)72 123.6 R(The)5.674 E/F1 10 +/Times-Bold@0 SF(command)3.174 E F0 -.2(bu)3.174 G .674(iltin w).2 F +.674(as in)-.1 F -.15(ve)-.4 G .674 +(nted so that shell functions could be).15 F .996(written to replace b) +72 135.6 R .996(uiltins; it mak)-.2 F .996(es the capabilities of the b) +-.1 F .995(uiltin a)-.2 F -.25(va)-.2 G .995(ilable to the function.).25 +F .995(The reserv)5.995 F(ed)-.15 E -.1(wo)72 147.6 S 1.731 +(rd \231!\232 w).1 F 1.731(as added to ne)-.1 F -.05(ga)-.15 G 1.731 +(te the return v).05 F 1.731(alue of a command or pipeline; it w)-.25 F +1.732(as nearly impossible to)-.1 F -.15(ex)72 159.6 S .286 +(press \231if not x\232 cleanly using the sh language.).15 F .286 +(There e)5.286 F .286(xist multiple incompatible implementations of the) +-.15 F F1(test)72 171.6 Q F0 -.2(bu)3.163 G .663 +(iltin, which tests \214les for type and other attrib).2 F .664 +(utes and performs arithmetic and string comparisons.)-.2 F .5 +(POSIX considered none of these correct, so the standard beha)72 183.6 R +.5(vior w)-.2 F .5(as speci\214ed in terms of the number of)-.1 F(ar)72 +195.6 Q .412(guments to the command.)-.18 F .412(POSIX.2 dictates e) +5.412 F .412(xactly what will happen when four or fe)-.15 F .412(wer ar) +-.25 F .412(guments are)-.18 F(gi)72 207.6 Q -.15(ve)-.25 G 5.01(nt).15 +G(o)-5.01 E F1(test)5.01 E F0 5.01(,a)C 2.51(nd lea)-5.01 F -.15(ve)-.2 +G 5.01(st).15 G 2.51(he beha)-5.01 F 2.51(vior unde\214ned when more ar) +-.2 F 2.51(guments are supplied.)-.18 F 2.51(Bash uses the)7.51 F +(POSIX.2 algorithm, which w)72 219.6 Q(as concei)-.1 E -.15(ve)-.25 G +2.5(db).15 G 2.5(yD)-2.5 G -.2(av)-2.5 G(id K).2 E(orn.)-.35 E F1 2.5 +(3.1. F)72 243.6 R(eatur)-.25 E(es not in the Bour)-.18 E(ne Shell)-.15 +E F0 .718(There are a number of minor dif)97 259.2 R .719 +(ferences between Bash and the v)-.25 F .719 +(ersion of sh present on most other)-.15 F -.15(ve)72 271.2 S .874 +(rsions of).15 F/F2 9/Times-Roman@0 SF(UNIX)3.374 E F0 5.873(.T)C .873 +(he majority of these are due to the POSIX standard, b)-5.873 F .873 +(ut some are the result of Bash)-.2 F .386 +(adopting features from other shells.)72 283.2 R -.15(Fo)5.386 G 2.886 +(ri).15 G .386(nstance, Bash includes the ne)-2.886 F 2.886<7799>-.25 G +.386(!\232 reserv)-2.886 F .386(ed w)-.15 F .386(ord, the)-.1 F F1 +(command)2.886 E F0 -.2(bu)72 295.2 S .116(iltin, the ability of the).2 +F F1 -.18(re)2.616 G(ad).18 E F0 -.2(bu)2.615 G .115 +(iltin to correctly return a line ending with a backslash, symbolic ar) +.2 F(guments)-.18 E .798(to the)72 307.2 R F1(umask)3.298 E F0 -.2(bu) +3.298 G .798(iltin, v).2 F .798(ariable substring remo)-.25 F -.25(va) +-.15 G .798(l, a w).25 F .799(ay to get the length of a v)-.1 F .799 +(ariable, and the ne)-.25 F 3.299(wa)-.25 G(lgo-)-3.299 E(rithm for the) +72 319.2 Q F1(test)2.5 E F0 -.2(bu)2.5 G +(iltin from the POSIX.2 standard, none of which appear in sh.).2 E 1.225 +(Bash also implements the \231$\(...\)\232 command substitution syntax,\ + which supersedes the sh `...` con-)97 334.8 R 2.851(struct. The)72 +346.8 R .351(\231$\(...\)\232 construct e)2.851 F .351(xpands to the ou\ +tput of the command contained within the parentheses, with)-.15 F .664 +(trailing ne)72 358.8 R .664(wlines remo)-.25 F -.15(ve)-.15 G 3.164 +(d. The).15 F .664(sh syntax is accepted for backw)3.164 F .664 +(ards compatibility)-.1 F 3.164(,b)-.65 G .664 +(ut the \231$\(...\)\232 form is)-3.364 F(preferred because its quoting\ + rules are much simpler and it is easier to nest.)72 370.8 Q .772 +(The Bourne shell does not pro)97 386.4 R .772 +(vide such features as brace e)-.15 F .772 +(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 +(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 +(ut splitting only the results of e)-.2 F 1.255 +(xpansion \(ksh and the 4.4 BSD sh ha)-.15 F 1.555 -.15(ve \214)-.2 H +-.15(xe).15 G 3.755(dt).15 G 1.255(his as)-3.755 F 2.907(well\). Useful) +72 462 R(beha)2.907 E .407(vior such as a means to abort e)-.2 F -.15 +(xe)-.15 G .407(cution of a script read with the \231.).15 F 2.906<9a63> +-.7 G .406(ommand using the)-2.906 F F1 -.18(re)72 474 S(tur).18 E(n) +-.15 E F0 -.2(bu)2.742 G .242(iltin or automatically e).2 F .242 +(xporting v)-.15 F .243(ariables in the shell')-.25 F 2.743(se)-.55 G +-.4(nv)-2.743 G .243(ironment to children is also not present).4 F .969 +(in the Bourne shell.)72 486 R .968(Bash pro)5.968 F .968 +(vides a much more po)-.15 F .968(werful en)-.25 F .968 +(vironment for both interacti)-.4 F 1.268 -.15(ve u)-.25 H .968 +(se and pro-).15 F(gramming.)72 498 Q F1 2.5(4. Bash-speci\214c)72 522 R +-.25(Fe)2.5 G(atur).25 E(es)-.18 E F0 .491(This section details a fe)97 +537.6 R 2.991(wo)-.25 G 2.991(ft)-2.991 G .491(he features which mak) +-2.991 F 2.991(eB)-.1 G .491(ash unique.)-2.991 F .492(Most of them pro) +5.491 F .492(vide impro)-.15 F -.15(ve)-.15 G(d).15 E(interacti)72 549.6 +Q 1.182 -.15(ve u)-.25 H .882(se, b).15 F .882(ut a fe)-.2 F 3.382(wp) +-.25 G .882(rogramming impro)-3.382 F -.15(ve)-.15 G .882 +(ments are present as well.).15 F .882(Full descriptions of these fea-) +5.882 F(tures can be found in the Bash documentation.)72 561.6 Q F1 2.5 +(4.1. Startup)72 585.6 R(Files)2.5 E F0 .161(Bash e)97 601.2 R -.15(xe) +-.15 G .161(cutes startup \214les dif).15 F .161 +(ferently than other shells.)-.25 F .162(The Bash beha)5.161 F .162 +(vior is a compromise between)-.2 F .29 +(the csh principle of startup \214les with \214x)72 613.2 R .29 +(ed names e)-.15 F -.15(xe)-.15 G .29 +(cuted for each shell and the sh \231minimalist\232 beha).15 F(vior)-.2 +E(.)-.55 E 2.955(An interacti)72 625.2 R 3.255 -.15(ve i)-.25 H 2.955 +(nstance of Bash started as a login shell reads and e).15 F -.15(xe)-.15 +G(cutes).15 E/F3 10/Times-Italic@0 SF(~/.bash_pr)5.456 E(o\214le)-.45 E +F0 2.956(\(the \214le)5.456 F .954(.bash_pro\214le in the user')72 637.2 +R 3.454(sh)-.55 G .953(ome directory\), if it e)-3.454 F 3.453 +(xists. An)-.15 F(interacti)3.453 E 1.253 -.15(ve n)-.25 H .953 +(on-login shell reads and e).15 F -.15(xe)-.15 G(cutes).15 E F3 +(~/.bashr)72 649.2 Q(c)-.37 E F0 5.641(.A)C(non-interacti)-2.5 E .942 +-.15(ve s)-.25 H .642(hell \(one be).15 F .642(gun to e)-.15 F -.15(xe) +-.15 G .642(cute a shell script, for e).15 F .642 +(xample\) reads no \214x)-.15 F .642(ed startup)-.15 F .342(\214le, b)72 +661.2 R .342(ut uses the v)-.2 F .342(alue of the v)-.25 F(ariable)-.25 +E F1($ENV)2.842 E F0 2.841(,i)C 2.841(fs)-2.841 G .341 +(et, as the name of a startup \214le.)-2.841 F .341 +(The ksh practice of read-)5.341 F(ing)72 673.2 Q F1($ENV)3.114 E F0 +.614(for e)3.114 F -.15(ve)-.25 G .614(ry shell, with the accompan).15 F +.615(ying dif)-.15 F .615(\214culty of de\214ning the proper v)-.25 F +.615(ariables and functions)-.25 F .721(for interacti)72 685.2 R 1.021 +-.15(ve a)-.25 H .721(nd non-interacti).15 F 1.021 -.15(ve s)-.25 H .721 +(hells or ha).15 F .721(ving the \214le read only for interacti)-.2 F +1.02 -.15(ve s)-.25 H .72(hells, w).15 F .72(as considered)-.1 F .158 +(too comple)72 697.2 R 2.658(x. Ease)-.15 F .158(of use w)2.658 F .158 +(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 +(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 +%%Page: 4 4 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(-4-)282.17 48 Q(only for interacti)72 84 Q .3 +-.15(ve s)-.25 H(hells.).15 E/F1 10/Times-Bold@0 SF 2.5(4.2. New)72 108 +R(Builtin Commands)2.5 E F0 1.02(There are a fe)97 123.6 R 3.52(wb)-.25 +G 1.02(uiltins which are ne)-3.72 F 3.52(wo)-.25 G 3.52(rh)-3.52 G -2.25 +-.2(av e)-3.52 H 1.02(been e)3.72 F 1.02(xtended in Bash.)-.15 F(The) +6.02 E F1(enable)3.52 E F0 -.2(bu)3.52 G 1.02(iltin allo).2 F(ws)-.25 E +-.2(bu)72 135.6 S .824(iltin commands to be turned on and of).2 F 3.324 +(fa)-.25 G(rbitrarily)-3.324 E 5.824(.T)-.65 G 3.324(ou)-6.624 G .824 +(se the v)-3.324 F .824(ersion of)-.15 F/F2 10/Times-Italic@0 SF(ec) +3.324 E(ho)-.15 E F0 .825(found in a user')3.324 F 3.325(ss)-.55 G +(earch)-3.325 E .625(path rather than the Bash b)72 147.6 R(uiltin,)-.2 +E/F3 10/Courier@0 SF .625(enable -n echo)3.125 F F0(suf)3.125 E 3.125 +(\214ces. The)-.25 F F1(help)3.124 E F0 -.2(bu)3.124 G .624(iltin pro).2 +F .624(vides quick synopses)-.15 F .703(of the shell f)72 159.6 R .704 +(acilities without requiring access to a manual page.)-.1 F F1(Builtin) +5.704 E F0 .704(is similar to)3.204 F F1(command)3.204 E F0 .704 +(in that it)3.204 F .342(bypasses shell functions and directly e)72 +171.6 R -.15(xe)-.15 G .342(cutes b).15 F .342(uiltin commands.)-.2 F +.342(Access to a csh-style stack of directories)5.342 F .072(is pro)72 +183.6 R .073(vided via the)-.15 F F1(pushd)2.573 E F0(,)A F1(popd)2.573 +E F0 2.573(,a)C(nd)-2.573 E F1(dirs)2.573 E F0 -.2(bu)2.573 G(iltins.).2 +E F1(Pushd)5.073 E F0(and)2.573 E F1(popd)2.573 E F0 .073 +(insert and remo)2.573 F .373 -.15(ve d)-.15 H .073(irectories from the) +.15 F 2.858(stack, respecti)72 195.6 R -.15(ve)-.25 G(ly).15 E 5.358(,a) +-.65 G(nd)-5.358 E F1(dirs)5.358 E F0 2.858(lists the stack contents.) +5.358 F 2.858(On systems that allo)7.858 F 5.358<778c>-.25 G 2.857 +(ne-grained control of)-5.358 F 1.339(resources, the)72 207.6 R F1 +(ulimit)3.839 E F0 -.2(bu)3.839 G 1.339 +(iltin can be used to tune these settings.).2 F F1(Ulimit)6.34 E F0 +(allo)3.84 E 1.34(ws a user to control, among)-.25 F 1.086 +(other things, whether core dumps are to be generated, ho)72 219.6 R +3.586(wm)-.25 G 1.086(uch memory the shell or a child process is)-3.586 +F(allo)72 231.6 Q .496(wed to allocate, and ho)-.25 F 2.996(wl)-.25 G +(ar)-2.996 E .496(ge a \214le created by a child process can gro)-.18 F +4.296 -.65(w. T)-.25 H(he).65 E F1(suspend)2.996 E F0 .497(command will) +2.997 F .744(stop the shell process when job control is acti)72 243.6 R +-.15(ve)-.25 G 3.243(;m).15 G .743(ost other shells do not allo)-3.243 F +3.243(wt)-.25 G(hemselv)-3.243 E .743(es to be stopped)-.15 F(lik)72 +255.6 Q 2.717(et)-.1 G(hat.)-2.717 E F1 -.74(Ty)5.217 G(pe,).74 E F0 +.217(the Bash answer to)2.717 F F1(which)2.717 E F0(and)2.717 E F1 +(whence,)2.717 E F0(sho)2.717 E .218(ws what will happen when a w)-.25 F +.218(ord is typed as a)-.1 F(command:)72 267.6 Q F3 6($t)97 285.6 S +(ype export)-6 E(export is a shell builtin)97 297.6 Q 6($t)97 309.6 S +(ype -t export)-6 E(builtin)97 321.6 Q 6($t)97 333.6 S(ype bash)-6 E +(bash is /bin/bash)97 345.6 Q 6($t)97 357.6 S(ype cd)-6 E +(cd is a function)97 369.6 Q(cd \(\))97 381.6 Q({)97 393.6 Q +(builtin cd ${1+"$@"} && xtitle $HOST: $PWD)121 405.6 Q(})97 417.6 Q F0 +-1.11(Va)72 439.2 S .682(rious modes tell what a command w)1.11 F .681 +(ord is \(reserv)-.1 F .681(ed w)-.15 F .681(ord, alias, function, b)-.1 +F .681(uiltin, or \214le\) or which v)-.2 F(er)-.15 E(-)-.2 E 1.15 +(sion of a command will be e)72 451.2 R -.15(xe)-.15 G 1.15 +(cuted based on a user').15 F 3.65(ss)-.55 G 1.15(earch path.)-3.65 F +1.15(Some of this functionality has been)6.15 F +(adopted by POSIX.2 and folded into the)72 463.2 Q F1(command)2.5 E F0 +(utility)2.5 E(.)-.65 E F1 2.5(4.3. Editing)72 487.2 R(and Completion) +2.5 E F0 .682(One area in which Bash shines is command line editing.)97 +502.8 R .682(Bash uses the)5.682 F F2 -.37(re)3.182 G(adline).37 E F0 +.681(library to read and)3.181 F .942(edit lines when interacti)72 514.8 +R -.15(ve)-.25 G 5.942(.R).15 G .942(eadline is a po)-5.942 F .942 +(werful and \215e)-.25 F .942(xible input f)-.15 F .943 +(acility that a user can con\214gure to)-.1 F(indi)72 526.8 Q .732 +(vidual tastes.)-.25 F .732(It allo)5.732 F .732(ws lines to be edited \ +using either emacs or vi commands, where those commands)-.25 F .2 +(are appropriate.)72 538.8 R .2 +(The full capability of emacs is not present \255 there is no w)5.2 F .2 +(ay to e)-.1 F -.15(xe)-.15 G .2(cute a named command).15 F 1.15 +(with M-x, for instance \255 b)72 550.8 R 1.15(ut the e)-.2 F 1.149 +(xisting commands are more than adequate.)-.15 F 1.149 +(The vi mode is compliant)6.149 F +(with the command line editing standardized by POSIX.2.)72 562.8 Q 1.69 +(Readline is fully customizable.)97 578.4 R 1.691 +(In addition to the basic commands and k)6.69 F 1.991 -.15(ey b)-.1 H +1.691(indings, the library).15 F(allo)72 590.4 Q .028 +(ws users to de\214ne additional k)-.25 F .327 -.15(ey b)-.1 H .027 +(indings using a startup \214le.).15 F(The)5.027 E F2(inputr)2.527 E(c) +-.37 E F0 .027(\214le, which def)2.527 F .027(aults to the \214le)-.1 F +F2(~/.inputr)72 602.4 Q(c)-.37 E F0 3.002(,i)C 3.002(sr)-3.002 G .503(e\ +ad each time readline initializes, permitting users to maintain a consi\ +stent interf)-3.002 F .503(ace across a)-.1 F .893(set of programs.)72 +614.4 R .893(Readline includes an e)5.893 F .893(xtensible interf)-.15 F +.892(ace, so each program using the library can add its)-.1 F -.25(ow)72 +626.4 S 3.56(nb).25 G 1.06(indable commands and program-speci\214c k) +-3.56 F 1.361 -.15(ey b)-.1 H 3.561(indings. Bash).15 F 1.061 +(uses this f)3.561 F 1.061(acility to add bindings that)-.1 F +(perform history e)72 638.4 Q(xpansion or shell w)-.15 E(ord e)-.1 E +(xpansions on the current input line.)-.15 E .707 +(Readline interprets a number of v)97 654 R .706 +(ariables which further tune its beha)-.25 F(vior)-.2 E 5.706(.V)-.55 G +.706(ariables e)-6.816 F .706(xist to control)-.15 F .157 +(whether or not eight-bit characters are directly read as input or con) +72 666 R -.15(ve)-.4 G .158(rted to meta-pre\214x).15 F .158(ed k)-.15 F +.458 -.15(ey s)-.1 H .158(equences \(a).15 F(meta-pre\214x)72 678 Q .082 +(ed k)-.15 F .382 -.15(ey s)-.1 H .081(equence consists of the characte\ +r with the eighth bit zeroed, preceded by the).15 F F2(meta-pr)2.581 E +(e\214x)-.37 E F0(character)72 690 Q 3.233(,u)-.4 G .733 +(sually escape, which selects an alternate k)-3.233 F -.15(ey)-.1 G .734 +(map\), to decide whether to output characters with).15 F .624 +(the eighth bit set directly or as a meta-pre\214x)72 702 R .624(ed k) +-.15 F .924 -.15(ey s)-.1 H .623 +(equence, whether or not to wrap to a ne).15 F 3.123(ws)-.25 G .623 +(creen line)-3.123 F 1.196 +(when a line being edited is longer than the screen width, the k)72 714 +R -.15(ey)-.1 G 1.196(map to which subsequent k).15 F 1.496 -.15(ey b) +-.1 H(indings).15 E .531(should apply)72 726 R 3.031(,o)-.65 G 3.031(re) +-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 +%%Page: 5 5 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(-5-)282.17 48 Q +(can be set in the inputrc \214le.)72 84 Q .284 +(The startup \214le understands a set of C preprocessor)97 99.6 R(-lik) +-.2 E 2.785(ec)-.1 G .285(onditional constructs which allo)-2.785 F +2.785(wv)-.25 G(ariables)-3.035 E .12(or k)72 111.6 R .42 -.15(ey b)-.1 +H .119(indings to be assigned based on the application using readline, \ +the terminal currently being used, or).15 F .338(the editing mode.)72 +123.6 R .338(Users can add program-speci\214c bindings to mak)5.338 F +2.838(et)-.1 G .338(heir li)-2.838 F -.15(ve)-.25 G 2.838(se).15 G 2.838 +(asier: I)-2.838 F(ha)2.838 E .639 -.15(ve b)-.2 H .339(indings that).15 +F(let me edit the v)72 135.6 Q(alue of)-.25 E/F1 10/Times-Bold@0 SF($P) +2.5 E -.95(AT)-.74 G(H).95 E F0(and double-quote the current or pre)2.5 +E(vious w)-.25 E(ord:)-.1 E/F2 10/Courier@0 SF 6(#M)97 153.6 S +(acros that are convenient for shell interaction)-6 E($if Bash)97 165.6 +Q 6(#e)97 177.6 S(dit the path)-6 E +("\\C-xp": "PATH=${PATH}\\e\\C-e\\C-a\\ef\\C-f")97 189.6 Q 6(#p)97 201.6 +S(repare to type a quoted word -- insert open and close double)-6 E 6 +(#q)97 213.6 S(uotes and move to just after the open quote)-6 E +("\\C-x\\"": "\\"\\"\\C-b")97 225.6 Q 6(#Q)97 237.6 S +(uote the current or previous word)-6 E("\\C-xq": "\\eb\\"\\ef\\"")97 +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) +-.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 +334.8 R -.15(ve)-.25 G 2.649(sa).15 G -.25(va)-2.849 G .149 +(ilable for binding, list which k).25 F -.15(ey)-.1 G 2.649(si).15 G +-1.9 -.4(nv o)-2.649 H .349 -.1(ke a g).4 H -2.15 -.25(iv e).1 H 2.65 +(nd).25 G(irecti)-2.65 E -.15(ve)-.25 G 2.65(,o).15 G 2.65(ro)-2.65 G +.15(utput the current set of k)-2.65 F -.15(ey)-.1 G .042(bindings in a\ + format that can be incorporated directly into an inputrc \214le.)72 +346.8 R(In)5.041 E F3(batc)2.541 E(h)-.15 E F0 .041 +(mode, it reads a series of)2.541 F -.1(ke)72 358.8 S 2.858(yb)-.05 G +.359(indings directly from a \214le and passes them to readline.)-2.858 +F .359(In its most common usage,)5.359 F F1(bind)2.859 E F0(tak)2.859 E +.359(es a sin-)-.1 F 1.117(gle string and passes it directly to readlin\ +e, which interprets the line as if it had just been read from the)72 +370.8 R(inputrc \214le.)72 382.8 Q(Both k)5 E .3 -.15(ey b)-.1 H +(indings and v).15 E(ariable assignments may appear in the string gi) +-.25 E -.15(ve)-.25 G 2.5(nt).15 G(o)-2.5 E F1(bind)2.5 E F0(.)A .53 +(The readline library also pro)97 398.4 R .53(vides an interf)-.15 F .53 +(ace for)-.1 F F3(wor)3.03 E 3.03(dc)-.37 G(ompletion)-3.03 E F0 5.53 +(.W)C .53(hen the)-5.53 F F3(completion)3.03 E F0(character)3.03 E 1.261 +(\(usually T)72 410.4 R 1.261(AB\) is typed, readline looks at the w) +-.93 F 1.26(ord currently being entered and computes the set of \214le-) +-.1 F .523(names of which the current w)72 422.4 R .523(ord is a v)-.1 F +.523(alid pre\214x.)-.25 F .524 +(If there is only one possible completion, the rest of the)5.523 F .358 +(characters are inserted directly)72 434.4 R 2.858(,o)-.65 G .358(therw\ +ise the common pre\214x of the set of \214lenames is added to the curre\ +nt)-2.858 F -.1(wo)72 446.4 S 3.199(rd. A).1 F .699(second T)3.199 F +.699(AB character entered immediately after a non-unique completion cau\ +ses readline to list)-.93 F 1.814 +(the possible completions; there is an option to ha)72 458.4 R 2.113 +-.15(ve t)-.2 H 1.813(he list displayed immediately).15 F 6.813(.R)-.65 +G 1.813(eadline pro)-6.813 F(vides)-.15 E .482 +(hooks so that applications can pro)72 470.4 R .482 +(vide speci\214c types of completion before the def)-.15 F .483 +(ault \214lename completion)-.1 F .132(is attempted.)72 482.4 R .132 +(This is quite \215e)5.132 F .132 +(xible, though it is not completely user)-.15 F 2.632 +(-programmable. Bash,)-.2 F .132(for e)2.632 F .132(xample, can)-.15 F +.37(complete \214lenames, command names \(including aliases, b)72 494.4 +R .37(uiltins, shell reserv)-.2 F .37(ed w)-.15 F .37 +(ords, shell functions, and)-.1 F -.15(exe)72 506.4 S .424 +(cutables found in the \214le system\), shell v).15 F .424 +(ariables, usernames, and hostnames.)-.25 F .423 +(It uses a set of heuristics)5.424 F(that, while not perfect, is genera\ +lly quite good at determining what type of completion to attempt.)72 +518.4 Q F1 2.5(4.4. History)72 542.4 R F0 .144 +(Access to the list of commands pre)97 558 R .144(viously entered \(the) +-.25 F F3 .144(command history)2.644 F F0 2.644(\)i)C 2.644(sp)-2.644 G +(ro)-2.644 E .144(vided jointly by Bash)-.15 F .078 +(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 +(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(.) +-.65 E F1($HISTCONTR)5.642 E(OL)-.3 E F0(pro)3.142 E .642 +(vides a crude form of control o)-.15 F -.15(ve)-.15 G 3.142(rw).15 G +.642(hich com-)-3.142 F .025(mands are sa)72 618 R -.15(ve)-.2 G 2.525 +(do).15 G 2.525(nt)-2.525 G .025(he history list: a v)-2.525 F .025 +(alue of)-.25 F F3(ignor)2.525 E(espace)-.37 E F0 .025(means to not sa) +2.525 F .324 -.15(ve c)-.2 H .024(ommands which be).15 F .024 +(gin with a)-.15 F .927(space; a v)72 630 R .927(alue of)-.25 F F3 +(ignor)3.427 E(edups)-.37 E F0 .927(means to not sa)3.427 F 1.228 -.15 +(ve c)-.2 H .928(ommands identical to the last command sa).15 F -.15(ve) +-.2 G(d.).15 E F1($HIST)5.928 E(-)-.92 E(CONTR)72 642 Q(OL)-.3 E F0 -.1 +(wa)3.778 G 3.778(sn).1 G(amed)-3.778 E F1($history_contr)3.778 E(ol) +-.18 E F0 1.278(in earlier v)3.778 F 1.278 +(ersions of Bash; the old name is still accepted for)-.15 F(backw)72 654 +Q .575(ards compatibility)-.1 F 5.575(.T)-.65 G(he)-5.575 E F1(history) +3.075 E F0 .575 +(command can read or write \214les containing the history list and dis-) +3.075 F .167(play the current list contents.)72 666 R(The)5.167 E F1(fc) +2.667 E F0 -.2(bu)2.667 G .167(iltin, adopted from POSIX.2 and the K).2 +F .167(orn Shell, allo)-.35 F .167(ws display and)-.25 F(re-e)72 678 Q +-.15(xe)-.15 G .58 +(cution, with optional editing, of commands from the history list.).15 F +.58(The readline library of)5.58 F .58(fers a set of)-.25 F 1.255(comma\ +nds to search the history list for a portion of the current input line \ +or a string typed by the user)72 690 R(.)-.55 E(Finally)72 702 Q 2.535 +(,t)-.65 G(he)-2.535 E F3(history)2.535 E F0(library)2.535 E 2.535(,g) +-.65 G .036(enerally incorporated directly into the readline library) +-2.535 F 2.536(,i)-.65 G .036(mplements a f)-2.536 F .036(acility for) +-.1 F 1.023(history recall, e)72 714 R 1.022(xpansion, and re-e)-.15 F +-.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 +%%Page: 6 6 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(-6-)282.17 48 Q/F1 10/Courier@0 SF 6($e)97 84 S +(cho a b c d e)-6 E 6(abcde)97 96 S 6($!)97 108 S 6(!fghi)-6 G +(echo a b c d e f g h i)97 120 Q 6(abcdefghi)97 132 S 6($!)97 144 S(-2) +-6 E(echo a b c d e)97 156 Q 6(abcde)97 168 S 6($e)97 180 S(cho !-2:1-4) +-6 E(echo a b c d)97 192 Q 6(abcd)97 204 S F0 1.456 +(The command history is only sa)72 225.6 R -.15(ve)-.2 G 3.957(dw).15 G +1.457(hen the shell is interacti)-3.957 F -.15(ve)-.25 G 3.957(,s).15 G +3.957(oi)-3.957 G 3.957(ti)-3.957 G 3.957(sn)-3.957 G 1.457(ot a)-3.957 +F -.25(va)-.2 G 1.457(ilable for use by shell).25 F(scripts.)72 237.6 Q +/F2 10/Times-Bold@0 SF 2.5(4.5. New)72 261.6 R(Shell V)2.5 E(ariables) +-.92 E F0 .59(There are a number of con)97 277.2 R -.15(ve)-.4 G .589 +(nience v).15 F .589(ariables that Bash interprets to mak)-.25 F 3.089 +(el)-.1 G .589(ife easier)-3.089 F 5.589(.T)-.55 G .589(hese include) +-5.589 F F2(FIGNORE)72 289.2 Q F0 3.973(,w)C 1.473 +(hich is a set of \214lename suf)-3.973 F<8c78>-.25 E 1.474 +(es identifying \214les to e)-.15 F 1.474 +(xclude when completing \214lenames;)-.15 F F2(HOSTTYPE)72 301.2 Q F0 +2.932(,w)C .432 +(hich is automatically set to a string describing the type of hardw) +-2.932 F .431(are on which Bash is cur)-.1 F(-)-.2 E .335(rently e)72 +313.2 R -.15(xe)-.15 G(cuting;).15 E F2(command_oriented_history)2.835 E +F0 2.835(,w)C .335(hich directs Bash to sa)-2.835 F .635 -.15(ve a)-.2 H +.336(ll lines of a multiple-line com-).15 F 1.071(mand such as a)72 +325.2 R/F3 10/Times-Italic@0 SF(while)3.571 E F0(or)3.571 E F3(for)3.571 +E F0 1.071(loop in a single history entry)3.571 F 3.57(,a)-.65 G(llo) +-3.57 E 1.07(wing easy re-editing; and)-.25 F F2(IGNOREEOF)3.57 E F0(,)A +.747(whose v)72 337.2 R .747(alue indicates the number of consecuti)-.25 +F 1.047 -.15(ve E)-.25 H .747(OF characters that an interacti).15 F +1.048 -.15(ve s)-.25 H .748(hell will read before).15 F -.15(ex)72 349.2 +S 1.432(iting \255 an easy w).15 F 1.432(ay to k)-.1 F 1.432 +(eep yourself from being logged out accidentally)-.1 F 6.432(.T)-.65 G +(he)-6.432 E F2(auto_r)3.932 E(esume)-.18 E F0 -.25(va)3.932 G(riable) +.25 E .571(alters the w)72 361.2 R .571 +(ay the shell treats simple command names: if job control is acti)-.1 F +-.15(ve)-.25 G 3.071(,a).15 G .571(nd this v)-3.071 F .571 +(ariable is set, sin-)-.25 F(gle-w)72 373.2 Q .239(ord simple commands \ +without redirections cause the shell to \214rst look for and restart a \ +suspended job)-.1 F(with that name before starting a ne)72 385.2 Q 2.5 +(wp)-.25 G(rocess.)-2.5 E F2 2.5(4.6. Brace)72 409.2 R(Expansion)2.5 E +F0 .653(Since sh of)97 424.8 R .653(fers no con)-.25 F -.15(ve)-.4 G +.653(nient w).15 F .653 +(ay to generate arbitrary strings that share a common pre\214x or suf) +-.1 F<8c78>-.25 E 2.124(\(\214lename e)72 436.8 R 2.124 +(xpansion requires that the \214lenames e)-.15 F 2.123 +(xist\), Bash implements)-.15 F F3(br)4.623 E 2.123(ace e)-.15 F +(xpansion)-.2 E F0 4.623(,ac)C(apability)-4.623 E(pick)72 448.8 Q .773 +(ed up from csh.)-.1 F .774(Brace e)5.773 F .774 +(xpansion is similar to \214lename e)-.15 F .774(xpansion, b)-.15 F .774 +(ut the strings generated need not)-.2 F 1.211(correspond to e)72 460.8 +R 1.211(xisting \214les.)-.15 F 3.711(Ab)6.211 G 1.211(race e)-3.711 F +1.211(xpression consists of an optional)-.15 F F3(pr)3.71 E(eamble)-.37 +E F0 3.71(,f)C(ollo)-3.71 E 1.21(wed by a pair of)-.25 F 2.938 +(braces enclosing a series of comma-separated strings, and an optional) +72 472.8 R F3(postamble)5.438 E F0 7.938(.T)C 2.938(he preamble is) +-7.938 F(prepended to each string within the braces, and the postamble \ +is then appended to each resulting string:)72 484.8 Q F1 6($e)97 502.8 S +(cho a{d,c,b}e)-6 E(ade ace abe)97 514.8 Q F0 .306(As this e)72 536.4 R +.306(xample demonstrates, the results of brace e)-.15 F .305 +(xpansion are not sorted, as the)-.15 F 2.805(ya)-.15 G .305 +(re by \214lename e)-2.805 F(xpan-)-.15 E(sion.)72 548.4 Q F2 2.5 +(4.7. Pr)72 572.4 R(ocess Substitution)-.18 E F0 .457 +(On systems that can support it, Bash pro)97 588 R .457(vides a f)-.15 F +.457(acility kno)-.1 F .458(wn as)-.25 F F3(pr)2.958 E .458 +(ocess substitution)-.45 F F0 5.458(.P)C .458(rocess sub-)-5.458 F .347 +(stitution is similar to command substitution in that its speci\214cati\ +on includes a command to e)72 600 R -.15(xe)-.15 G .346(cute, b).15 F +.346(ut the)-.2 F .181(shell does not collect the command')72 612 R +2.681(so)-.55 G .181(utput and insert it into the command line.)-2.681 F +(Rather)5.181 E 2.681(,B)-.4 G .182(ash opens a pipe)-2.681 F 1.861 +(to the command, which is run in the background.)72 624 R 1.861 +(The shell uses named pipes \(FIFOs\) or the)6.861 F F3(/de)4.361 E +(v/fd)-.15 E F0 .961(method of naming open \214les to e)72 636 R .962(x\ +pand the process substitution to a \214lename which connects to the pip\ +e)-.15 F .104(when opened.)72 648 R .103 +(This \214lename becomes the result of the e)5.104 F 2.603 +(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 +%%Page: 7 7 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(-7-)282.17 48 Q/F1 10/Times-Bold@0 SF 2.5 +(4.8. Pr)72 84 R(ompt Customization)-.18 E F0 2.229 +(One of the more popular interacti)97 99.6 R 2.529 -.15(ve f)-.25 H +2.229(eatures that Bash pro).15 F 2.23 +(vides is the ability to customize the)-.15 F 3.234(prompt. Both)72 +111.6 R F1($PS1)3.234 E F0(and)3.234 E F1($PS2,)3.234 E F0 .734 +(the primary and secondary prompts, are e)3.234 F .733 +(xpanded before being displayed.)-.15 F -.15(Pa)72 123.6 S .804 +(rameter and v).15 F .804(ariable e)-.25 F .805 +(xpansion is performed when the prompt string is e)-.15 F .805 +(xpanded, so an)-.15 F 3.305(ys)-.15 G .805(hell v)-3.305 F(ariable)-.25 +E .729(can be put into the prompt \(e.g.,)72 135.6 R F1($SHL)3.228 E(VL) +-.92 E F0 3.228(,w)C .728(hich indicates ho)-3.228 F 3.228(wd)-.25 G +.728(eeply the current shell is nested\).)-3.228 F(Bash)5.728 E 1.895(s\ +pecially interprets characters in the prompt string preceded by a backs\ +lash.)72 147.6 R 1.895(Some of these backslash)6.895 F .874 +(escapes are replaced with the current time, the date, the current w)72 +159.6 R .874(orking directory)-.1 F 3.373(,t)-.65 G .873 +(he username, and the)-3.373 F .78 +(command number or history number of the command being entered.)72 171.6 +R .781(There is e)5.781 F -.15(ve)-.25 G 3.281(nab).15 G .781 +(ackslash escape to)-3.281 F .007 +(cause the shell to change its prompt when running as root after an)72 +183.6 R/F2 10/Times-Italic@0 SF(su)2.507 E F0 5.007(.B)C .007 +(efore printing each primary prompt,)-5.007 F .305(Bash e)72 195.6 R +.305(xpands the v)-.15 F(ariable)-.25 E F1($PR)2.805 E(OMPT_COMMAND)-.3 +E F0 .305(and, if it has a v)2.805 F .306(alue, e)-.25 F -.15(xe)-.15 G +.306(cutes the e).15 F .306(xpanded v)-.15 F .306(alue as)-.25 F 3.735 +(ac)72 207.6 S 1.235(ommand, allo)-3.735 F 1.234 +(wing additional prompt customization.)-.25 F -.15(Fo)6.234 G 3.734(re) +.15 G 1.234(xample, this assignment causes the current)-3.884 F(user)72 +219.6 Q 2.917(,t)-.4 G .417 +(he current host, the time, the last component of the current w)-2.917 F +.417(orking directory)-.1 F 2.917(,t)-.65 G .418(he le)-2.917 F -.15(ve) +-.25 G 2.918(lo).15 G 2.918(fs)-2.918 G .418(hell nest-)-2.918 F(ing, a\ +nd the history number of the current command to be embedded into the pr\ +imary prompt:)72 231.6 Q/F3 10/Courier@0 SF 6($P)97 249.6 S +(S1='\\u@\\h [\\t] \\W\($SHLVL:\\!\)\\$ ')-6 E +(chet@odin [21:03:44] documentation\(2:636\)$ cd ..)97 261.6 Q +(chet@odin [21:03:54] src\(2:637\)$)97 273.6 Q F0 .146(The string being\ + assigned is surrounded by single quotes so that if it is e)72 295.2 R +.146(xported, the v)-.15 F .146(alue of)-.25 F F1($SHL)2.646 E(VL)-.92 E +F0(will)2.646 E(be updated by a child shell:)72 307.2 Q F3 +(chet@odin [21:17:35] src\(2:638\)$ export PS1)97 325.2 Q +(chet@odin [21:17:40] src\(2:639\)$ bash)97 337.2 Q +(chet@odin [21:17:46] src\(3:696\)$)97 349.2 Q F0 +(The \\$ escape is displayed as \231)72 370.8 Q F1($)A F0 2.5<9a77>C +(hen running as a normal user)-2.5 E 2.5(,b)-.4 G(ut as \231)-2.7 E F1 +(#)A F0 2.5<9a77>C(hen running as root.)-2.5 E F1 2.5(4.9. File)72 394.8 +R(System V)2.5 E(iews)-.37 E F0 .029(Since Berk)97 410.4 R(ele)-.1 E +2.529(yi)-.15 G .029 +(ntroduced symbolic links in 4.2 BSD, one of their most anno)-2.529 F +.03(ying properties has been)-.1 F .764(the \231w)72 422.4 R .764 +(arping\232 to a completely dif)-.1 F .764 +(ferent area of the \214le system when using)-.25 F F1(cd)3.263 E F0 +3.263(,a)C .763(nd the resultant non-intu-)-3.263 F(iti)72 434.4 Q .704 +-.15(ve b)-.25 H(eha).15 E .405(vior of \231)-.2 F F1 .405(cd ..)B F0 +2.905(\232. The)B/F4 9/Times-Roman@0 SF(UNIX)2.905 E F0 -.1(ke)2.905 G +.405(rnel treats symbolic links).1 F F2(physically)2.905 E F0 5.405(.W)C +.405(hen the k)-5.405 F .405(ernel is translating)-.1 F 3.223(ap)72 +446.4 S .723(athname in which one component is a symbolic link, it repl\ +aces all or part of the pathname while pro-)-3.223 F .668 +(cessing the link.)72 458.4 R .668 +(If the contents of the symbolic link be)5.668 F .669 +(gin with a slash, the k)-.15 F .669(ernel replaces the pathname)-.1 F +.219(entirely; if not, the link contents replace the current component.) +72 470.4 R .219(In either case, the symbolic link is visible.)5.219 F +.058(If the link v)72 482.4 R .058(alue is an absolute pathname, the us\ +er \214nds himself in a completely dif)-.25 F .059 +(ferent part of the \214le sys-)-.25 F(tem.)72 494.4 Q .704(Bash pro)97 +510 R .704(vides a)-.15 F F2(lo)3.203 E(gical)-.1 E F0(vie)3.203 E 3.203 +(wo)-.25 G 3.203(ft)-3.203 G .703(he \214le system.)-3.203 F .703 +(In this def)5.703 F .703(ault mode, command and \214lename com-)-.1 F +.522(pletion and b)72 522 R .522(uiltin commands such as)-.2 F F1(cd) +3.022 E F0(and)3.022 E F1(pushd)3.022 E F0 .522 +(which change the current w)3.022 F .522(orking directory transpar)-.1 F +(-)-.2 E .127(ently follo)72 534 R 2.627(ws)-.25 G .127 +(ymbolic links as if the)-2.627 F 2.627(yw)-.15 G .127(ere directories.) +-2.627 F(The)5.126 E F1($PWD)2.626 E F0 -.25(va)2.626 G .126 +(riable, which holds the shell').25 F 2.626(si)-.55 G .126(dea of)-2.626 +F .366(the current w)72 546 R .366(orking directory)-.1 F 2.866(,d)-.65 +G .367 +(epends on the path used to reach the directory rather than its ph) +-2.866 F .367(ysical loca-)-.05 F +(tion in the local \214le system hierarch)72 558 Q 3.8 -.65(y. F)-.05 H +(or e).5 E(xample:)-.15 E F3 6($c)97 576 S 6(d/)-6 G(usr/local/bin)-6 E +6($e)97 588 S(cho $PWD)-6 E(/usr/local/bin)97 600 Q 6($p)97 612 S(wd)-6 +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 +%%Page: 8 8 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(-8-)282.17 48 Q/F1 10/Courier@0 SF 6($p)97 84 S +(wd)-6 E(/usr)97 96 Q 6($/)97 108 S(bin/pwd)-6 E(/usr)97 120 Q F0 .3(On\ +e problem with this, of course, arises when programs that do not unders\ +tand the shell')72 141.6 R 2.8(sl)-.55 G .3(ogical notion of)-2.8 F .217 +(the \214le system interpret \231..)72 153.6 R 2.718<9a64>-.7 G(if) +-2.718 E(ferently)-.25 E 5.218(.T)-.65 G .218 +(his generally happens when Bash completes \214lenames containing)-5.218 +F(\231..)72 165.6 Q 3.384<9a61>-.7 G .884 +(ccording to a logical hierarch)-3.384 F 3.384(yw)-.05 G .884 +(hich does not correspond to their ph)-3.384 F .883(ysical location.) +-.05 F -.15(Fo)5.883 G 3.383(ru).15 G .883(sers who)-3.383 F +(\214nd this troublesome, a corresponding)72 177.6 Q/F2 10 +/Times-Italic@0 SF(physical)2.5 E F0(vie)2.5 E 2.5(wo)-.25 G 2.5(ft)-2.5 +G(he \214le system is a)-2.5 E -.25(va)-.2 G(ilable:).25 E F1 6($c)97 +195.6 S 6(d/)-6 G(usr/local/bin)-6 E 6($p)97 207.6 S(wd)-6 E +(/usr/local/bin)97 219.6 Q 6($s)97 231.6 S(et -o physical)-6 E 6($p)97 +243.6 S(wd)-6 E(/net/share/sun4/local/bin)97 255.6 Q/F3 10/Times-Bold@0 +SF 2.5(4.10. Inter)72 285.6 R(nationalization)-.15 E F0 .145 +(One of the most signi\214cant impro)97 301.2 R -.15(ve)-.15 G .145 +(ments in v).15 F .145(ersion 1.13 of Bash w)-.15 F .145 +(as the change to \231eight-bit clean-)-.1 F 2.933(liness\232. Pre)72 +313.2 R .433(vious v)-.25 F .432 +(ersions used the eighth bit of characters to mark whether or not the) +-.15 F 2.932(yw)-.15 G .432(ere quoted when)-2.932 F 1.495(performing w) +72 325.2 R 1.495(ord e)-.1 F 3.995(xpansions. While)-.15 F 1.495 +(this did not af)3.995 F 1.496 +(fect the majority of users, most of whom used only)-.25 F(se)72 337.2 Q +-.15(ve)-.25 G 1.236(n-bit ASCII characters, some found it con\214ning.) +.15 F(Be)6.236 E 1.236(ginning with v)-.15 F 1.236 +(ersion 1.13, Bash implemented a)-.15 F(dif)72 349.2 Q .02(ferent quoti\ +ng mechanism that did not alter the eighth bit of characters.)-.25 F +.021(This allo)5.021 F .021(wed Bash to manipulate)-.25 F .427 +(\214les with \231odd\232 characters in their names, b)72 361.2 R .427 +(ut did nothing to help users enter those names, so v)-.2 F .426 +(ersion 1.13)-.15 F 1.458 +(introduced changes to readline that made it eight-bit clean as well.)72 +373.2 R 1.458(Options e)6.458 F 1.458(xist that force readline to)-.15 F +.744(attach no special signi\214cance to characters with the eighth bit\ + set \(the def)72 385.2 R .744(ault beha)-.1 F .744(vior is to con)-.2 F +-.15(ve)-.4 G .744(rt these).15 F .641(characters to meta-pre\214x)72 +397.2 R .641(ed k)-.15 F .941 -.15(ey s)-.1 H .642 +(equences\) and to output these characters without con).15 F -.15(ve)-.4 +G .642(rsion to meta-pre-).15 F<8c78>72 409.2 Q .008(ed sequences.)-.15 +F .007(These changes, along with the e)5.007 F .007(xpansion of k)-.15 F +-.15(ey)-.1 G .007(maps to a full eight bits, enable readline to).15 F +-.1(wo)72 421.2 S(rk with most of the ISO-8859 f).1 E +(amily of character sets, used by man)-.1 E 2.5(yE)-.15 G +(uropean countries.)-2.5 E F3 2.5(4.11. POSIX)72 445.2 R(Mode)2.5 E F0 +.584(Although Bash is intended to be POSIX.2 conformant, there are area\ +s in which the def)97 460.8 R .584(ault beha)-.1 F(vior)-.2 E .463 +(is not compatible with the standard.)72 472.8 R -.15(Fo)5.463 G 2.962 +(ru).15 G .462(sers who wish to operate in a strict POSIX.2 en)-2.962 F +.462(vironment, Bash)-.4 F .505(implements a)72 484.8 R F2 .505 +(POSIX mode)3.005 F F0 5.505(.W)C .505(hen this mode is acti)-5.505 F +-.15(ve)-.25 G 3.005(,B).15 G .505(ash modi\214es its def)-3.005 F .505 +(ault operation where it dif)-.1 F(fers)-.25 E .267 +(from POSIX.2 to match the standard.)72 496.8 R .266 +(POSIX mode is entered when Bash is started with the)5.267 F F3(-posix) +2.766 E F0(option.)2.766 E .149(This feature is also a)72 508.8 R -.25 +(va)-.2 G .149(ilable as an option to the).25 F F3(set)2.649 E F0 -.2 +(bu)2.649 G(iltin,).2 E F3 .149(set -o posix)2.649 F F0 5.149(.F)C .149 +(or compatibility with other GNU)-5.299 F(softw)72 520.8 Q 4.02(are tha\ +t attempts to be POSIX.2 compliant, Bash also enters POSIX mode if the \ +v)-.1 F(ariable)-.25 E F3($POSIXL)72 532.8 Q(Y_CORRECT)-.92 E F0 5.824 +(is set when Bash is started or assigned a v)8.324 F 5.825 +(alue during e)-.25 F -.15(xe)-.15 G(cution.).15 E F3($POSIX_PED)72 +544.8 Q(ANTIC)-.35 E F0 .27 +(is accepted as well, to be compatible with some older GNU utilities.) +2.77 F .27(When Bash is)5.27 F .506(started in POSIX mode, for e)72 +556.8 R .506(xample, it sources the \214le named by the v)-.15 F .507 +(alue of)-.25 F F3($ENV)3.007 E F0 .507(rather than the \231nor)3.007 F +(-)-.2 E(mal\232 startup \214les, and does not allo)72 568.8 Q 2.5(wr) +-.25 G(eserv)-2.5 E(ed w)-.15 E(ords to be aliased.)-.1 E F3 2.5(5. New) +72 592.8 R -.25(Fe)2.5 G(atur).25 E(es and Futur)-.18 E 2.5(eP)-.18 G +(lans)-2.5 E F0 1.632(There are se)97 608.4 R -.15(ve)-.25 G 1.632 +(ral features introduced in the current v).15 F 1.631(ersion of Bash, v) +-.15 F 1.631(ersion 1.14, and a number)-.15 F .241 +(under consideration for future releases.)72 620.4 R .242 +(This section will brie\215y detail the ne)5.242 F 2.742(wf)-.25 G .242 +(eatures in v)-2.742 F .242(ersion 1.14 and)-.15 F(describe se)72 632.4 +Q -.15(ve)-.25 G(ral features that may appear in later v).15 E(ersions.) +-.15 E F3 2.5(5.1. New)72 656.4 R -.25(Fe)2.5 G(atur).25 E +(es in Bash-1.14)-.18 E F0 .884(The ne)97 672 R 3.384(wf)-.25 G .884 +(eatures a)-3.384 F -.25(va)-.2 G .884(ilable in Bash-1.14 answer se).25 +F -.15(ve)-.25 G .883(ral of the most common requests for enhance-).15 F +2.931(ments. Most)72 684 R(notably)2.931 E 2.931(,t)-.65 G .432(here is\ + a mechanism for including non-visible character sequences in prompts, \ +such)-2.931 F .136 +(as those which cause a terminal to print characters in dif)72 696 R +.135(ferent colors or in standout mode.)-.25 F .135(There w)5.135 F .135 +(as noth-)-.1 F .558(ing pre)72 708 R -.15(ve)-.25 G .558 +(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 +%%Page: 9 9 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(-9-)282.17 48 Q .13(Readline has a fe)97 84 R +2.63(wn)-.25 G .63 -.25(ew va)-2.63 H .13(riables, se).25 F -.15(ve)-.25 +G .13(ral ne).15 F 2.63(wb)-.25 G .13 +(indable commands, and some additional emacs mode)-2.63 F(def)72 96 Q +.918(ault k)-.1 F 1.218 -.15(ey b)-.1 H 3.418(indings. A).15 F(ne)3.418 +E 3.418(wh)-.25 G .919(istory search mode has been implemented: in this\ + mode, readline searches)-3.418 F .336(the history for lines be)72 108 R +.336(ginning with the characters between the be)-.15 F .336 +(ginning of the current line and the cursor)-.15 F(.)-.55 E .555(The e) +72 120 R .556(xisting readline incremental search commands no longer ma\ +tch identical lines more than once.)-.15 F(File-)5.556 E 1.979 +(name completion no)72 132 R 4.479(we)-.25 G 1.979(xpands v)-4.629 F +1.979(ariables in directory names.)-.25 F 1.978(The history e)6.978 F +1.978(xpansion f)-.15 F 1.978(acilities are no)-.1 F(w)-.25 E 1.449 +(nearly completely csh-compatible: missing modi\214ers ha)72 144 R 1.749 +-.15(ve b)-.2 H 1.449(een added and history substitution has been).15 F +-.15(ex)72 156 S(tended.).15 E(Se)97 171.6 Q -.15(ve)-.25 G .474 +(ral of the features described earlier).15 F 2.973(,s)-.4 G .473(uch as) +-2.973 F/F1 10/Times-Bold@0 SF .473(set -o posix)2.973 F F0(and)2.973 E +F1($POSIX_PED)2.973 E(ANTIC)-.35 E F0 2.973(,a)C .473(re ne)-2.973 F +2.973(wi)-.25 G(n)-2.973 E -.15(ve)72 183.6 S .106(rsion 1.14.).15 F +.106(There is a ne)5.106 F 2.606(ws)-.25 G .106(hell v)-2.606 F +(ariable,)-.25 E F1(OSTYPE)2.606 E F0 2.606(,t)C 2.606(ow)-2.606 G .106 +(hich Bash assigns a v)-2.606 F .106(alue that identi\214es the v)-.25 F +(er)-.15 E(-)-.2 E 1.38(sion of)72 195.6 R/F2 9/Times-Roman@0 SF(UNIX) +3.88 E F0(it')3.88 E 3.879(sr)-.55 G 1.379(unning on \(great for puttin\ +g architecture-speci\214c binary directories into the)-3.879 F F1($P) +3.879 E -.95(AT)-.74 G(H).95 E F0(\).)A -1 -.8(Tw o)72 207.6 T -.25(va) +6.215 G 2.915(riables ha).25 F 3.215 -.15(ve b)-.2 H 2.915(een renamed:) +.15 F F1($HISTCONTR)5.416 E(OL)-.3 E F0(replaces)5.416 E F1 +($history_contr)5.416 E(ol)-.18 E F0 5.416(,a)C(nd)-5.416 E F1 +($HOSTFILE)5.416 E F0(replaces)72 219.6 Q F1 +($hostname_completion_\214le)2.521 E F0 5.021(.I)C 2.521(nb)-5.021 G +.021(oth cases, the old names are accepted for backw)-2.521 F .02 +(ards compatibil-)-.1 F(ity)72 231.6 Q 5.788(.T)-.65 G .788(he ksh) +-5.788 F/F3 10/Times-Italic@0 SF(select)3.288 E F0 .788 +(construct, which allo)3.288 F .788 +(ws the generation of simple menus, has been implemented.)-.25 F(Ne) +5.788 E(w)-.25 E 1.496(capabilities ha)72 243.6 R 1.796 -.15(ve b)-.2 H +1.496(een added to e).15 F 1.495(xisting v)-.15 F(ariables:)-.25 E F1 +($auto_r)3.995 E(esume)-.18 E F0 1.495(can no)3.995 F 3.995(wt)-.25 G +(ak)-3.995 E 3.995(ev)-.1 G 1.495(alues of)-4.245 F F3 -.2(ex)3.995 G +(act).2 E F0(or)3.995 E F3(sub-)3.995 E(string)72 255.6 Q F0 4.843(,a)C +(nd)-4.843 E F1($HISTCONTR)4.843 E(OL)-.3 E F0 2.343(understands the v) +4.843 F(alue)-.25 E F3(ignor)4.844 E(eboth)-.37 E F0 4.844(,w)C 2.344 +(hich combines the tw)-4.844 F 4.844(op)-.1 G(re)-4.844 E(viously)-.25 E +1.556(acceptable v)72 267.6 R 4.056(alues. The)-.25 F F1(dirs)4.056 E F0 +-.2(bu)4.056 G 1.556(iltin has acquired options to print out speci\214c\ + members of the directory).2 F 3.062(stack. The)72 279.6 R F1($nolinks) +3.062 E F0 -.25(va)3.062 G .562(riable, which forces a ph).25 F .562 +(ysical vie)-.05 F 3.062(wo)-.25 G 3.062(ft)-3.062 G .563 +(he \214le system, has been superseded by the)-3.062 F F172 291.6 +Q F0 .494(option to the)2.994 F F1(set)2.994 E F0 -.2(bu)2.994 G .494 +(iltin \(equi).2 F -.25(va)-.25 G .494(lent to).25 F F1 .494(set -o ph) +2.994 F(ysical)-.15 E F0 .493(\); the v)B .493 +(ariable is retained for backw)-.25 F .493(ards compati-)-.1 F(bility)72 +303.6 Q 5.196(.T)-.65 G .196(he v)-5.196 F .196 +(ersion string contained in)-.15 F F1($B)2.696 E(ASH_VERSION)-.3 E F0 +(no)2.696 E 2.696(wi)-.25 G .196(ncludes an indication of the patch le) +-2.696 F -.15(ve)-.25 G 2.696(la).15 G(s)-2.696 E .85(well as the \231b) +72 315.6 R .85(uild v)-.2 F 3.35(ersion\232. Some)-.15 F .85 +(little-used features ha)3.35 F 1.15 -.15(ve b)-.2 H .85(een remo).15 F +-.15(ve)-.15 G 3.35(d: the).15 F F1(by)3.35 E(e)-.1 E F0(synon)3.35 E +.85(ym for)-.15 F F1(exit)3.35 E F0(and)3.35 E(the)72 327.6 Q F1($NO_PR) +3.498 E(OMPT_V)-.3 E(ARS)-1.35 E F0 -.25(va)3.498 G .998 +(riable are gone.).25 F .998(There is no)5.998 F 3.498(wa)-.25 G 3.498 +(no)-3.498 G -2.19 -.18(rg a)-3.498 H .998 +(nized test suite that can be run as a).18 F(re)72 339.6 Q +(gression test when b)-.15 E(uilding a ne)-.2 E 2.5(wv)-.25 G +(ersion of Bash.)-2.65 E 1.696(The documentation has been thoroughly o) +97 355.2 R -.15(ve)-.15 G 1.696(rhauled: there is a ne).15 F 4.196(wm) +-.25 G 1.695(anual page on the readline)-4.196 F .467(library and the)72 +367.2 R F3(info)2.967 E F0 .467 +(\214le has been updated to re\215ect the current v)2.967 F 2.968 +(ersion. As)-.15 F(al)2.968 E -.1(wa)-.1 G .468(ys, as man).1 F 2.968 +(yb)-.15 G .468(ugs as possi-)-3.168 F(ble ha)72 379.2 Q .3 -.15(ve b) +-.2 H(een \214x).15 E(ed, although some surely remain.)-.15 E F1 2.5 +(5.2. Other)72 403.2 R -.25(Fe)2.5 G(atur).25 E(es)-.18 E F0 1.68 +(There are a fe)97 418.8 R 4.18(wf)-.25 G 1.68 +(eatures that I hope to include in later Bash releases.)-4.18 F 1.68 +(Some are based on w)6.68 F(ork)-.1 E(already done in other shells.)72 +430.8 Q .958(In addition to simple v)97 446.4 R .959(ariables, a future\ + release of Bash will include one-dimensional arrays, using)-.25 F .206 +(the ksh implementation of arrays as a model.)72 458.4 R .205 +(Additions to the ksh syntax, such as)5.205 F F3(varname)2.705 E F0 .205 +(=\( ... \) to assign)B 2.587(al)72 470.4 S .087(ist of w)-2.587 F .088 +(ords directly to an array and a mechanism to allo)-.1 F 2.588(wt)-.25 G +(he)-2.588 E F1 -.18(re)2.588 G(ad).18 E F0 -.2(bu)2.588 G .088 +(iltin to read a list of v).2 F .088(alues directly)-.25 F .092 +(into an array)72 482.4 R 2.592(,w)-.65 G .092(ould be desirable.)-2.692 +F(Gi)5.092 E -.15(ve)-.25 G 2.592(nt).15 G .092(hose e)-2.592 F .092 +(xtensions, the ksh)-.15 F F1 .092(set \255A)2.592 F F0 .091 +(syntax may not be w)2.591 F .091(orth support-)-.1 F(ing \(the)72 494.4 +Q F12.5 E F0(option assigns a list of v)2.5 E(alues to an array) +-.25 E 2.5(,b)-.65 G(ut is a rather peculiar special case\).)-2.7 E .76 +(Some shells include a means of)97 510 R F3(pr)3.26 E -.1(og)-.45 G -.15 +(ra).1 G(mmable).15 E F0 -.1(wo)3.26 G .76 +(rd completion, where the user speci\214es on a per).1 F(-)-.2 E .163 +(command basis ho)72 522 R 2.663(wt)-.25 G .163(he ar)-2.663 F .163(gum\ +ents of the command are to be treated when completion is attempted: as \ +\214le-)-.18 F .194(names, hostnames, e)72 534 R -.15(xe)-.15 G .194 +(cutable \214les, and so on.).15 F .195 +(The other aspects of the current Bash implementation could)5.195 F .482 +(remain as-is; the e)72 546 R .482(xisting heuristics w)-.15 F .481 +(ould still be v)-.1 F 2.981(alid. Only)-.25 F .481 +(when completing the ar)2.981 F .481(guments to a simple)-.18 F +(command w)72 558 Q(ould the programmable completion be in ef)-.1 E +(fect.)-.25 E .479(It w)97 573.6 R .479(ould also be nice to gi)-.1 F +.779 -.15(ve t)-.25 H .479(he user \214ner).15 F .479 +(-grained control o)-.2 F -.15(ve)-.15 G 2.98(rw).15 G .48 +(hich commands are sa)-2.98 F -.15(ve)-.2 G 2.98(do).15 G .48(nto the) +-2.98 F 1.786(history list.)72 585.6 R 1.786(One proposal is for a v) +6.786 F 1.786(ariable, tentati)-.25 F -.15(ve)-.25 G 1.786(ly named).15 +F F1(HISTIGNORE)4.286 E F0 4.285(,w)C 1.785(hich w)-4.285 F 1.785 +(ould contain a)-.1 F .496(colon-separated list of commands.)72 597.6 R +.496(Lines be)5.496 F .496 +(ginning with these commands, after the restrictions of)-.15 F F1($HIST) +2.997 E(-)-.92 E(CONTR)72 609.6 Q(OL)-.3 E F0(ha)2.65 E .45 -.15(ve b) +-.2 H .15(een applied, w).15 F .15 +(ould not be placed onto the history list.)-.1 F .15 +(The shell pattern-matching capa-)5.15 F(bilities could also be a)72 +621.6 Q -.25(va)-.2 G(ilable when specifying the contents of).25 E F1 +($HISTIGNORE)2.5 E F0(.)A .729(One thing that ne)97 637.2 R .729 +(wer shells such as)-.25 F F1(wksh)3.229 E F0 .729(\(also kno)3.229 F +.729(wn as)-.25 F F1(dtksh)3.23 E F0 3.23(\)p)C(ro)-3.23 E .73 +(vide is a command to dynami-)-.15 F 1.189 +(cally load code implementing additional b)72 649.2 R 1.189 +(uiltin commands into a running shell.)-.2 F 1.188(This ne)6.188 F 3.688 +(wb)-.25 G 1.188(uiltin w)-3.888 F(ould)-.1 E(tak)72 661.2 Q 2.875(ea) +-.1 G 2.875(no)-2.875 G .375 +(bject \214le or shared library implementing the \231body\232 of the b) +-2.875 F .375(uiltin \()-.2 F F3(xxx_b)A(uiltin\(\))-.2 E F0 .375 +(for those f)2.875 F(amiliar)-.1 E .052 +(with Bash internals\) and a structure containing the name of the ne)72 +673.2 R 2.552(wc)-.25 G .051(ommand, the function to call when the) +-2.552 F(ne)72 685.2 Q 3.458(wb)-.25 G .958(uiltin is in)-3.658 F -.2 +(vo)-.4 G -.1(ke).2 G 3.458(d\().1 G .959 +(presumably de\214ned in the shared object speci\214ed as an ar)-3.458 F +.959(gument\), and the docu-)-.18 F 1.352 +(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 +%%Page: 10 10 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(-10-)279.67 48 Q 3.291(Af)97 84 S 1.291 -.25 +(ew o)-3.291 H .791(ther b).25 F .791(uiltins w)-.2 F .791 +(ould also be desirable: tw)-.1 F 3.291(oa)-.1 G .791(re the POSIX.2) +-3.291 F/F1 10/Times-Bold@0 SF(getconf)3.292 E F0 .792 +(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 +(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) +-3.385 F(directory)72 144 Q(.)-.65 E 1.521 +(There are no implementation timetables for an)97 159.6 R 4.021(yo)-.15 +G 4.021(ft)-4.021 G 1.52(hese features, nor are there concrete plans to) +-4.021 F(include them.)72 171.6 Q(If an)5 E(yone has comments on these \ +proposals, feel free to send me electronic mail.)-.15 E F1 2.5 +(6. Re\215ections)72 195.6 R(and Lessons Lear)2.5 E(ned)-.15 E F0 .433 +(The lesson that has been repeated most often during Bash de)97 211.2 R +-.15(ve)-.25 G .433(lopment is that there are dark corners).15 F .181 +(in the Bourne shell, and people use all of them.)72 223.2 R .18 +(In the original description of the Bourne shell, quoting and)5.181 F +.073(the shell grammar are both poorly speci\214ed and incomplete; subs\ +equent descriptions ha)72 235.2 R .373 -.15(ve n)-.2 H .073 +(ot helped much.).15 F 1.856(The grammar presented in Bourne')72 247.2 R +4.356(sp)-.55 G 1.856(aper describing the shell distrib)-4.356 F 1.855 +(uted with the Se)-.2 F -.15(ve)-.25 G 1.855(nth Edition of).15 F/F2 9 +/Times-Roman@0 SF(UNIX)72 259.2 Q F0 2.5<8769>C 2.5(ss)-2.5 G 2.5(of) +-2.5 G(ar of)-2.6 E 2.5(ft)-.25 G(hat it does not allo)-2.5 E 2.5(wt) +-.25 G(he command)-2.5 E/F3 10/Courier@0 SF(who|wc)2.5 E F0 5(.I)C 2.5 +(nf)-5 G(act, as T)-2.6 E(om Duf)-.8 E 2.5(fs)-.25 G(tates:)-2.5 E 1.375 +(Nobody really kno)97 274.8 R 1.375(ws what the Bourne shell')-.25 F +3.875(sg)-.55 G 1.375(rammar is.)-3.875 F(Ev)6.376 E 1.376(en e)-.15 F +1.376(xamination of the source)-.15 F(code is little help.\210)97 286.8 +Q .382(The POSIX.2 standard includes a)72 302.4 R/F4 10/Times-Italic@0 +SF(yacc)2.882 E F0 .382 +(grammar that comes close to capturing the Bourne shell')2.882 F 2.882 +(sb)-.55 G(eha)-2.882 E(vior)-.2 E(,)-.4 E -.2(bu)72 314.4 S 3.246(ti).2 +G 3.246(td)-3.246 G(isallo)-3.246 E .747(ws some constructs which sh ac\ +cepts without complaint \255 and there are scripts out there that)-.25 F +.501(use them.)72 326.4 R .501(It took a fe)5.501 F 3.001(wv)-.25 G .501 +(ersions and se)-3.151 F -.15(ve)-.25 G .501(ral b).15 F .5 +(ug reports before Bash implemented sh-compatible quoting,)-.2 F .279 +(and there are still some \231le)72 338.4 R -.05(ga)-.15 G .279 +(l\232 sh constructs which Bash \215ags as syntax errors.).05 F .28 +(Complete sh compatibility)5.28 F(is a tough nut.)72 350.4 Q 1.231 +(The shell is bigger and slo)97 366 R 1.231(wer than I w)-.25 F 1.231 +(ould lik)-.1 F 1.23(e, though the current v)-.1 F 1.23 +(ersion is substantially f)-.15 F(aster)-.1 E .086(than pre)72 378 R +(viously)-.25 E 5.086(.T)-.65 G .087 +(he readline library could stand a substantial re)-5.086 F 2.587 +(write. A)-.25 F .087(hand-written parser to replace the)2.587 F +(current)72 390 Q F4(yacc)2.978 E F0 .478(-generated one w)B .477 +(ould probably result in a speedup, and w)-.1 F .477(ould solv)-.1 F +2.977(eo)-.15 G .477(ne glaring problem:)-2.977 F(the)5.477 E .384 +(shell could parse commands in \231$\(...\)\232 constructs as the)72 402 +R 2.884(ya)-.15 G .385 +(re entered, rather than reporting errors when the)-2.884 F +(construct is e)72 414 Q(xpanded.)-.15 E 1.064(As al)97 429.6 R -.1(wa) +-.1 G 1.064(ys, there is some chaf).1 F 3.564(ft)-.25 G 3.564(og)-3.564 +G 3.564(ow)-3.564 G 1.064(ith the wheat.)-3.564 F 1.063 +(Areas of duplicated functionality need to be)6.063 F .382(cleaned up.) +72 441.6 R .382(There are se)5.382 F -.15(ve)-.25 G .382 +(ral cases where Bash treats a v).15 F .382 +(ariable specially to enable functionality a)-.25 F -.25(va)-.2 G +(ilable).25 E .185(another w)72 453.6 R .185(ay \()-.1 F F1($notify)A F0 +(vs.)2.684 E F1 .184(set -o notify)5.184 F F0(and)2.684 E F1($nolinks) +2.684 E F0(vs.)2.684 E F1 .184(set -o ph)2.684 F(ysical)-.15 E F0 2.684 +(,f)C .184(or instance\); the special treatment)-2.684 F 3.421(of the v) +72 465.6 R 3.421(ariable name should probably be remo)-.25 F -.15(ve) +-.15 G 5.921(d. A).15 F(fe)5.921 E 5.921(wm)-.25 G 3.422 +(ore things could stand remo)-5.921 F -.25(va)-.15 G 3.422(l; the).25 F +F1($allo)72 477.6 Q(w_null_glob_expansion)-.1 E F0(and)4.112 E F1 +($glob_dot_\214lenames)4.112 E F0 -.25(va)4.111 G 1.611 +(riables are of particularly questionable v).25 F(alue.)-.25 E(The)72 +489.6 Q F1($[...])3.977 E F0 1.477(arithmetic e)3.977 F -.25(va)-.25 G +1.478(luation syntax is redundant no).25 F 3.978(wt)-.25 G 1.478 +(hat the POSIX-mandated)-3.978 F F1($\(\(...\)\))3.978 E F0 1.478 +(construct has)3.978 F .326(been implemented, and could be deleted.)72 +501.6 R .326(It w)5.326 F .326(ould be nice if the te)-.1 F .326 +(xt output by the)-.15 F F1(help)2.825 E F0 -.2(bu)2.825 G .325 +(iltin were e).2 F(xter)-.15 E(-)-.2 E .061 +(nal to the shell rather than compiled into it.)72 513.6 R .062 +(The beha)5.062 F .062(vior enabled by)-.2 F F1 +($command_oriented_history)2.562 E F0 2.562(,w)C(hich)-2.562 E 1.125 +(causes the shell to attempt to sa)72 525.6 R 1.424 -.15(ve a)-.2 H +1.124(ll lines of a multi-line command in a single history entry).15 F +3.624(,s)-.65 G 1.124(hould be)-3.624 F(made the def)72 537.6 Q +(ault and the v)-.1 E(ariable remo)-.25 E -.15(ve)-.15 G(d.).15 E F1 2.5 +(7. A)72 561.6 R -.1(va)-1 G(ilability).1 E F0 .047 +(As with all other GNU softw)97 577.2 R .047(are, Bash is a)-.1 F -.25 +(va)-.2 G .047(ilable for anon).25 F .047(ymous FTP from)-.15 F F4(pr) +2.547 E(ep.ai.mit.edu:/pub/gnu)-.37 E F0 1.05(and from other GNU softw) +72 589.2 R 1.05(are mirror sites.)-.1 F 1.049(The current v)6.049 F +1.049(ersion is in)-.15 F F4(bash-1.14.1.tar)3.549 E(.gz)-1.11 E F0 +1.049(in that directory)3.549 F(.)-.65 E(Use)72 601.2 Q F4(ar)5.965 E +-.15(ch)-.37 G(ie).15 E F0 3.465(to \214nd the nearest archi)5.965 F +3.766 -.15(ve s)-.25 H 5.966(ite. The).15 F 3.466(latest v)5.966 F 3.466 +(ersion is al)-.15 F -.1(wa)-.1 G 3.466(ys a).1 F -.25(va)-.2 G 3.466 +(ilable for FTP from).25 F F4(bash.CWR)72 613.2 Q -.25(U.)-.4 G +(Edu:/pub/dist.).25 E F0(Bash documentation is a)5 E -.25(va)-.2 G +(ilable for FTP from).25 E F4(bash.CWR)2.5 E -.25(U.)-.4 G +(Edu:/pub/bash.).25 E F0 1.169(The Free Softw)97 628.8 R 1.169(are F)-.1 +F 1.169(oundation sells tapes and CD-R)-.15 F 1.168 +(OMs containing Bash; send electronic mail to)-.4 F F3 +(gnu@prep.ai.mit.edu)72 640.8 Q F0(or call)2.5 E F3(+1-617-876-3296)2.5 +E F0(for more information.)2.5 E .694(Bash is also distrib)97 656.4 R +.694(uted with se)-.2 F -.15(ve)-.25 G .694(ral v).15 F .694(ersions of) +-.15 F F2(UNIX)3.194 E F0 .694(-compatible systems.)B .695 +(It is included as /bin/sh)5.694 F .948(and /bin/bash on se)72 668.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 +(\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 +2.78(,5)C .78(7\(6\), July-)-2.78 F(August, 1978, pp. 1971-1990.)72 +698.2 Q<8854>72 710 Q .431(om Duf)-.64 F .431 +(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 +%%Page: 11 11 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(-11-)279.67 48 Q(softw)72 84 Q(are in BSDI')-.1 +E 2.5(sB)-.55 G(SD/386* and FreeBSD.)-2.5 E .598(The Linux distrib)97 +99.6 R .598(ution deserv)-.2 F .598(es special mention.)-.15 F .598 +(There are tw)5.598 F 3.099(oc)-.1 G .599 +(on\214gurations included in the stan-)-3.099 F .733(dard Bash distrib) +72 111.6 R .732(ution: a \231normal\232 con\214guration, in which all o\ +f the standard features are included, and a)-.2 F .519(\231minimal\232 \ +con\214guration, which omits job control, aliases, history and command \ +line editing, the directory)72 123.6 R .886(stack and)72 135.6 R/F1 10 +/Times-Bold@0 SF(pushd/popd/dirs,)3.386 E F0 .886(process substitution,\ + prompt string special character decoding, and the)3.386 F/F2 10 +/Times-Italic@0 SF(select)3.385 E F0 3.368(construct. This)72 147.6 R +.868(minimal v)3.368 F .869 +(ersion is designed to be a drop-in replacement for the traditional)-.15 +F/F3 9/Times-Roman@0 SF(UNIX)3.369 E F0(/bin/sh,)3.369 E +(and is included as the Linux /bin/sh in se)72 159.6 Q -.15(ve)-.25 G +(ral packagings.).15 E F1 2.5(8. Conclusion)72 183.6 R F0 .8 +(Bash is a w)97 199.2 R(orth)-.1 E 3.3(ys)-.05 G .8(uccessor to sh.)-3.3 +F .8(It is suf)5.8 F .8(\214ciently portable to run on nearly e)-.25 F +-.15(ve)-.25 G .8(ry v).15 F .8(ersion of)-.15 F F3(UNIX)3.299 E F0 .31 +(from 4.3 BSD to SVR4.2, and se)72 211.2 R -.15(ve)-.25 G(ral).15 E F3 +(UNIX)2.81 E F0 -.1(wo)2.81 G(rkalik).1 E 2.81(es. It)-.1 F .311(is rob) +2.81 F .311(ust enough to replace sh on most of those)-.2 F 1.515 +(systems, and pro)72 223.2 R 1.515(vides more functionality)-.15 F 6.515 +(.I)-.65 G 4.015(th)-6.515 G 1.515(as se)-4.015 F -.15(ve)-.25 G 1.515 +(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 +(*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 +%%Trailer +end +%%EOF diff --git a/bash-20060316/doc/article.pt.ps b/bash-20060316/doc/article.pt.ps new file mode 100644 index 000000000..875a04e64 --- /dev/null +++ b/bash-20060316/doc/article.pt.ps @@ -0,0 +1,1331 @@ +%!PS-Adobe-3.0 +%%Creator: groff version 1.08 +%%DocumentNeededResources: font Palatino-Bold +%%+ font Palatino-Italic +%%+ font Palatino-Roman +%%+ font Courier +%%DocumentSuppliedResources: procset grops 1.08 0 +%%Pages: 12 +%%PageOrder: Ascend +%%Orientation: Portrait +%%EndComments +%%BeginProlog +%%BeginResource: procset grops 1.08 0 +/setpacking where{ +pop +currentpacking +true setpacking +}if +/grops 120 dict dup begin +/SC 32 def +/A/show load def +/B{0 SC 3 -1 roll widthshow}bind def +/C{0 exch ashow}bind def +/D{0 exch 0 SC 5 2 roll awidthshow}bind def +/E{0 rmoveto show}bind def +/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def +/G{0 rmoveto 0 exch ashow}bind def +/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/I{0 exch rmoveto show}bind def +/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def +/K{0 exch rmoveto 0 exch ashow}bind def +/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/M{rmoveto show}bind def +/N{rmoveto 0 SC 3 -1 roll widthshow}bind def +/O{rmoveto 0 exch ashow}bind def +/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/Q{moveto show}bind def +/R{moveto 0 SC 3 -1 roll widthshow}bind def +/S{moveto 0 exch ashow}bind def +/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/SF{ +findfont exch +[exch dup 0 exch 0 exch neg 0 0]makefont +dup setfont +[exch/setfont cvx]cvx bind def +}bind def +/MF{ +findfont +[5 2 roll +0 3 1 roll +neg 0 0]makefont +dup setfont +[exch/setfont cvx]cvx bind def +}bind def +/level0 0 def +/RES 0 def +/PL 0 def +/LS 0 def +/PLG{ +gsave newpath clippath pathbbox grestore +exch pop add exch pop +}bind def +/BP{ +/level0 save def +1 setlinecap +1 setlinejoin +72 RES div dup scale +LS{ +90 rotate +}{ +0 PL translate +}ifelse +1 -1 scale +}bind def +/EP{ +level0 restore +showpage +}bind def +/DA{ +newpath arcn stroke +}bind def +/SN{ +transform +.25 sub exch .25 sub exch +round .25 add exch round .25 add exch +itransform +}bind def +/DL{ +SN +moveto +SN +lineto stroke +}bind def +/DC{ +newpath 0 360 arc closepath +}bind def +/TM matrix def +/DE{ +TM currentmatrix pop +translate scale newpath 0 0 .5 0 360 arc closepath +TM setmatrix +}bind def +/RC/rcurveto load def +/RL/rlineto load def +/ST/stroke load def +/MT/moveto load def +/CL/closepath load def +/FL{ +currentgray exch setgray fill setgray +}bind def +/BL/fill load def +/LW/setlinewidth load def +/RE{ +findfont +dup maxlength 1 index/FontName known not{1 add}if dict begin +{ +1 index/FID ne{def}{pop pop}ifelse +}forall +/Encoding exch def +dup/FontName exch def +currentdict end definefont pop +}bind def +/DEFS 0 def +/EBEGIN{ +moveto +DEFS begin +}bind def +/EEND/end load def +/CNT 0 def +/level1 0 def +/PBEGIN{ +/level1 save def +translate +div 3 1 roll div exch scale +neg exch neg exch translate +0 setgray +0 setlinecap +1 setlinewidth +0 setlinejoin +10 setmiterlimit +[]0 setdash +/setstrokeadjust where{ +pop +false setstrokeadjust +}if +/setoverprint where{ +pop +false setoverprint +}if +newpath +/CNT countdictstack def +userdict begin +/showpage{}def +}bind def +/PEND{ +clear +countdictstack CNT sub{end}repeat +level1 restore +}bind def +end def +/setpacking where{ +pop +setpacking +}if +%%EndResource +%%IncludeResource: font Palatino-Bold +%%IncludeResource: font Palatino-Italic +%%IncludeResource: font Palatino-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/.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/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/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash +/bracketright/circumflex/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q +/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase +/guillemotleft/guillemotright/bullet/florin/fraction/perthousand/dagger +/daggerdbl/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut +/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash +/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen/brokenbar +/section/dieresis/copyright/ordfeminine/guilsinglleft/logicalnot/minus +/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu +/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guilsinglright +/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde +/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute +/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis +/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls +/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute +/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve +/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex +/udieresis/yacute/thorn/ydieresis]def/Courier@0 ENC0/Courier RE +/Palatino-Roman@0 ENC0/Palatino-Roman RE/Palatino-Italic@0 ENC0/Palatino-Italic +RE/Palatino-Bold@0 ENC0/Palatino-Bold RE +%%EndProlog +%%Page: 1 1 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 12/Palatino-Bold@0 SF(Bash \255 The GNU shell*)223.71 120 Q/F1 10 +/Palatino-Italic@0 SF(Chet Ramey)263.415 144 Q(Case W)220.45 156 Q +(estern Reserve University)-.2 E(chet@po.cwru.edu)251.305 168 Q/F2 10 +/Palatino-Bold@0 SF 2.5(1. Introduction)72 234 R(Bash)97 249.6 Q/F3 10 +/Palatino-Roman@0 SF .551(is the shell, or command language interpr)3.051 F +(eter)-.18 E 3.051(,t)-.74 G .55(hat will appear in the GNU operating)334.708 +249.6 R 4.36(system. The)72 261.6 R 1.86(name is an acr)4.36 F 1.861 +(onym for the `)-.18 F 1.861(`Bourne-Again SHell')-.37 F 1.861 +(', a pun on Steve Bourne, the)-.37 F 1.274(author of the dir)72 273.6 R 1.274 +(ect ancestor of the curr)-.18 F(ent)-.18 E/F4 9/Palatino-Roman@0 SF(UNIX)3.774 +E F3 3.773<8773>C(hell)307.862 273.6 Q F1(/bin/sh)3.773 E F3 3.773(,w)C 1.273 +(hich appear)370.458 273.6 R 1.273(ed in the Seventh)-.18 F +(Edition Bell Labs Resear)72 285.6 Q(ch version of)-.18 E F4(UNIX)2.5 E F3(.)A +.925(Bash is an)97 301.2 R F2(sh)3.425 E F3 .925 +(\255compatible shell that incorporates useful featur)B .926(es fr)-.18 F .926 +(om the Korn shell \()-.18 F F2(ksh)A F3(\))A .737(and the C shell \()72 313.2 +R F2(csh)A F3 .737(\), described later in this article.)B .737 +(It is ultimately intended to be a conformant)5.737 F .278 +(implementation of the IEEE POSIX Shell and Utilities speci\214cation \(IEEE W) +72 325.2 R .279(orking Gr)-.92 F .279(oup 1003.2\).)-.18 F(It of)72 337.2 Q +(fers functional impr)-.18 E(ovements over sh for both interactive and pr)-.18 +E(ogramming use.)-.18 E 1.299(While the GNU operating system will most likely \ +include a version of the Berkeley shell)97 352.8 R .527 +(csh, Bash will be the default shell.)72 364.8 R .527(Like other GNU softwar) +5.527 F .527(e, Bash is quite portable.)-.18 F .527(It curr)5.527 F(ently)-.18 +E -.08(ru)72 376.8 S 1.391(ns on nearly every version of).08 F F4(UNIX)3.891 E +F3 1.391(and a few other operating systems \255 an independently-)3.891 F .278 +(supported port exists for OS/2, and ther)72 388.8 R 2.779(ea)-.18 G .639 -.18 +(re r)264.36 388.8 T .279(umors of ports to DOS and W).1 F .279(indows NT)-.55 +F 5.279(.P)-.74 G .279(orts to)475.591 388.8 R F4(UNIX)72 400.8 Q F3 +(-like systems such as QNX and Minix ar)A 2.5(ep)-.18 G +(art of the distribution.)285.547 400.8 Q .897 +(The original author of Bash was Brian Fox, an employee of the Fr)97 416.4 R +.896(ee Softwar)-.18 F 3.396(eF)-.18 G(oundation.)455.63 416.4 Q 1.287 +(The curr)72 428.4 R 1.287(ent developer and maintainer is Chet Ramey)-.18 F +3.787(,av)-1.11 G 1.287(olunteer who works at Case W)335.573 428.4 R(estern) +-.92 E(Reserve University)72 440.4 Q(.)-1.11 E F2 2.5(2. What')72 464.4 R 2.5 +(sP)-.55 G(OSIX, anyway?)124.22 464.4 Q F1(POSIX)97 480 Q F3 .947 +(is a name originally coined by Richar)5.113 F 3.447(dS)-.18 G .947 +(tallman for a family of open system stan-)316.422 480 R(dar)72 492 Q .644 +(ds based on)-.18 F F4(UNIX)3.144 E F3 5.644(.T)C(her)181.403 492 Q 3.144(ea) +-.18 G 1.004 -.18(re a n)208.717 492 T .644(umber of aspects of).18 F F4(UNIX) +3.145 E F3 .645(under consideration for standar)3.145 F(d-)-.18 E .814 +(ization, fr)72 504 R .814(om the basic system services at the system call and\ + C library level to applications and)-.18 F 1.191 +(tools to system administration and management.)72 516 R 1.192(Each ar)6.191 F +1.192(ea of standar)-.18 F 1.192(dization is assigned to a)-.18 F(working gr)72 +528 Q(oup in the 1003 series.)-.18 E .426 +(The POSIX Shell and Utilities standar)97 543.6 R 2.926(dh)-.18 G .426 +(as been developed by IEEE W)279.198 543.6 R .426(orking Gr)-.92 F .426 +(oup 1003.2)-.18 F .238 +(\(POSIX.2\).\210 It concentrates on the command interpr)72 555.6 R .238 +(eter interface and utility pr)-.18 F .238(ograms commonly)-.18 F 1.212 +(executed fr)72 567.6 R 1.212(om the command line or by other pr)-.18 F 3.712 +(ograms. An)-.18 F 1.212(initial version of the standar)3.712 F 3.712(dh)-.18 G +(as)494.76 567.6 Q .695(been appr)72 579.6 R .695 +(oved and published by the IEEE, and work is curr)-.18 F .694 +(ently underway to update it.)-.18 F(Ther)5.694 E(e)-.18 E(ar)72 591.6 Q 2.5 +(ef)-.18 G(our primary ar)91.39 591.6 Q(eas of work in the 1003.2 standar)-.18 +E(d:)-.18 E 18.94<8341>72 607.2 S .397 +(spects of the shell's syntax and command language.)104.78 607.2 R 2.897(An) +5.397 G .397(umber of special builtins such as)357.913 607.2 R F2(cd)97 619.2 Q +F3(and)3.144 E F2(exec)3.144 E F3(ar)3.144 E 3.144(eb)-.18 G .644(eing speci\ +\214ed as part of the shell, since their functionality usually cannot)175.586 +619.2 R(be implemented by a separate executable;)97 631.2 Q 18.94<8341>72 646.8 +S .661(set of utilities to be called by shell scripts and applications.)107.94 +646.8 R .661(Examples ar)5.661 F 3.161(ep)-.18 G -.18(ro)447.859 646.8 S .661 +(grams like).18 F F1 3.472(sed, tr)97 658.8 R(,)-.74 E F3(and)5.972 E F1(awk.) +4.306 E F3 1.806(Utilities commonly implemented as shell builtins ar)5.972 F +4.305(ed)-.18 G 1.805(escribed in this)433.67 658.8 R .32 LW 76 668.8 72 668.8 +DL 80 668.8 76 668.8 DL 84 668.8 80 668.8 DL 88 668.8 84 668.8 DL 92 668.8 88 +668.8 DL 96 668.8 92 668.8 DL 100 668.8 96 668.8 DL 104 668.8 100 668.8 DL 108 +668.8 104 668.8 DL 112 668.8 108 668.8 DL 116 668.8 112 668.8 DL 120 668.8 116 +668.8 DL 124 668.8 120 668.8 DL 128 668.8 124 668.8 DL 132 668.8 128 668.8 DL +136 668.8 132 668.8 DL 140 668.8 136 668.8 DL 144 668.8 140 668.8 DL/F5 8 +/Palatino-Roman@0 SF(*An earlier version of this article appear)72 678.8 Q +(ed in The Linux Journal.)-.144 E<87>72 688.8 Q/F6 7/Palatino-Roman@0 SF(UNIX)2 +E F5(is a trademark of Bell Laboratories.)2 E(\210IEEE,)72 698.8 Q/F7 8 +/Palatino-Italic@0 SF 1.14(IEEE Standard for Information T)3.14 F 1.141 +(echnology -- Portable Operating System Interface \(POSIX\) Part 2: Shell and) +-.888 F(Utilities)72 708.8 Q F5 2(,1)C(992.)106.672 708.8 Q EP +%%Page: 2 2 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Palatino-Roman@0 SF 2.5(-2-)279.67 48 S .638(section, such as)97 84 R/F1 +10/Palatino-Bold@0 SF(test)3.138 E F0(and)3.138 E F1(kill)3.138 E F0 5.638(.A)C +3.138(ne)240.928 84 S .638 +(xpansion of this section's scope, termed the User Porta-)254.676 84 R +(bility Extension, or UPE, has standar)97 96 Q(dized interactive pr)-.18 E +(ograms such as)-.18 E/F2 10/Palatino-Italic@0 SF(vi)2.5 E F0(and)4.166 E F2 +(mailx;)2.5 E F0 18.94<8341>72 111.6 S(gr)108.58 111.6 Q 1.3 +(oup of functional interfaces to services pr)-.18 F 1.299 +(ovided by the shell, such as the traditional)-.18 F/F3 10/Courier@0 SF +(system\(\))97 123.6 Q F0 3.385(Cl)3.385 G .885(ibrary function.)161.77 123.6 R +(Ther)5.885 E 3.385(ea)-.18 G 1.245 -.18(re f)271.195 123.6 T .885 +(unctions to perform shell wor).18 F 3.385(de)-.18 G .885(xpansions, per) +435.555 123.6 R(-)-.18 E 1.945(form \214lename expansion \()97 135.6 R F2 +(globbing)A F0 1.945(\), obtain values of POSIX.2 system con\214guration vari-) +B(ables, r)97 147.6 Q(etrieve values of envir)-.18 E(onment variables \()-.18 E +F3(getenv\(\))A F0(\), and other services;).833 E 18.94<8341>72 163.2 S +(suite of `)107.28 163.2 Q(`development')-.37 E 2.5('u)-.37 G(tilities such as) +219.63 163.2 Q F2(c89)2.5 E F0(\(the POSIX.2 version of)4.166 E F2(cc)2.5 E F0 +(\), and)A F2(yacc.)2.5 E F0 1.326(Bash is concerned with the aspects of the s\ +hell's behavior de\214ned by POSIX.2.)97 178.8 R 1.326(The shell)6.326 F 1.156 +(command language has of course been standar)72 190.8 R 1.156 +(dized, including the basic \215ow contr)-.18 F 1.156(ol and pr)-.18 F(o-)-.18 +E 1.168(gram execution constr)72 202.8 R 1.168(ucts, I/O r)-.08 F(edir)-.18 E +1.168(ection and pipelining, ar)-.18 F 1.168(gument handling, variable expan-) +-.18 F 1(sion, and quoting.)72 214.8 R(The)6 E F2(special)3.5 E F0 .999 +(builtins, which must be implemented as part of the shell to pr)5.166 F(o-)-.18 +E .698(vide the desir)72 226.8 R .698(ed functionality)-.18 F 3.198(,a)-1.11 G +1.059 -.18(re s)213.942 226.8 T .699 +(peci\214ed as being part of the shell; examples of these ar).18 F(e)-.18 E F1 +(eval)3.199 E F0(and)72 238.8 Q F1(export)3.339 E F0 5.839(.O)C .839(ther util\ +ities appear in the sections of POSIX.2 not devoted to the shell which ar) +137.358 238.8 R(e)-.18 E .131(commonly \(and in some cases must be\) implement\ +ed as builtin commands, such as)72 250.8 R F1(read)2.632 E F0(and)2.632 E F1 +(test)2.632 E F0(.)A .408(POSIX.2 also speci\214es aspects of the shell's inte\ +ractive behavior as part of the UPE, including job)72 262.8 R(contr)72 274.8 Q +1.726(ol and command line editing.)-.18 F(Inter)6.726 E 1.726 +(estingly enough, only)-.18 F F2(vi)4.227 E F0 1.727 +(-style line editing commands)B(have been standar)72 286.8 Q(dized;)-.18 E F2 +(emacs)2.5 E F0(editing commands wer)2.5 E 2.5(el)-.18 G +(eft out due to objections.)321.07 286.8 Q .376 +(While POSIX.2 includes much of what the shell has traditionally pr)97 302.4 R +.375(ovided, some important)-.18 F .183(things have been omitted as being `)72 +314.4 R .183(`beyond its scope.')-.37 F 5.184('T)-.37 G(her)324.548 314.4 Q +2.684(ei)-.18 G .184(s, for instance, no mention of a dif-)349.312 314.4 R(fer) +72 326.4 Q 1.325(ence between a)-.18 F F2(login)3.825 E F0 1.325 +(shell and any other interactive shell \(since POSIX.2 does not specify a)5.491 +F .068(login pr)72 338.4 R 2.568(ogram\). No)-.18 F .068 +(\214xed startup \214les ar)2.568 F 2.568(ed)-.18 G .068 +(e\214ned, either \255 the standar)264.836 338.4 R 2.569(dd)-.18 G .069 +(oes not mention)398.607 338.4 R F2(.pr)2.569 E(o\214le)-.18 E F0(.)1.666 E F1 +2.5(3. Basic)72 362.4 R(Bash features)2.5 E F0 1.359(Since the Bourne shell pr) +97 378 R 1.358(ovides Bash with most of its philosophical underpinnings, Bash) +-.18 F .721(inherits most of its featur)72 390 R .721(es and functionality fr) +-.18 F .721(om sh.)-.18 F .722(Bash implements all of the traditional sh)5.721 +F 1.342(\215ow contr)72 402 R 1.342(ol constr)-.18 F 1.342(ucts \()-.08 F F2 +(for)A F0(,)A F2(if)3.842 E F0(,)A F2(while)3.842 E F0 3.842(,e)C 3.842 +(tc.\). All)245.072 402 R 1.342 +(of the Bourne shell builtins, including those not)3.842 F .034 +(speci\214ed in the POSIX.2 standar)72 414 R .034(d, appear in Bash.)-.18 F +(Shell)5.034 E F2(functions)2.534 E F0 2.534(,i)C(ntr)368.5 414 Q .035 +(oduced in the SVR2 version)-.18 F .237(of the Bourne shell, ar)72 426 R 2.736 +(es)-.18 G .236(imilar to shell scripts, but ar)181.472 426 R 2.736(ed)-.18 G +.236(e\214ned using a special syntax and ar)319.828 426 R 2.736(ee)-.18 G(xe-) +490.72 426 Q .276(cuted in the same pr)72 438 R .276 +(ocess as the calling shell.)-.18 F .277 +(Bash has shell functions which behave in a fashion)5.276 F(upwar)72 450 Q .114 +(d-compatible with sh functions.)-.18 F(Ther)5.114 E 2.614(ea)-.18 G .474 -.18 +(re c)279.8 450 T .114(ertain shell variables that Bash interpr).18 F .113 +(ets in the)-.18 F .975(same way as sh, such as)72 462 R F1(PS1)3.475 E F0(,)A +F1(IFS)3.475 E F0 3.475(,a)C(nd)235.91 462 Q F1 -.74(PA)3.475 G(TH)-.18 E F0 +5.975(.B)C .976(ash implements essentially the same grammar)293.13 462 R(,)-.74 +E .025(parameter and variable expansion semantics, r)72 474 R(edir)-.18 E .025 +(ection, and quoting as the Bourne shell.)-.18 F(Wher)5.025 E(e)-.18 E(dif)72 +486 Q(fer)-.18 E 2.74(ences appear between the POSIX.2 standar)-.18 F 5.24(da) +-.18 G 2.74(nd traditional sh behavior)314.53 486 R 5.24(,B)-.74 G 2.74 +(ash follows)451.05 486 R(POSIX.)72 498 Q .494(The Korn Shell \()97 513.6 R F1 +(ksh)A F0 2.994(\)i)C 2.994(sad)196.116 513.6 S .494 +(escendent of the Bourne shell written at A)217.454 513.6 R .494 +(T&T Bell Laboratories)-.74 F 1.435(by David Korn\207.)72 525.6 R 1.435(It pr) +6.435 F 1.435(ovides a number of useful featur)-.18 F 1.436 +(es that POSIX and Bash have adopted.)-.18 F .87 +(Many of the interactive facilities in POSIX.2 have their r)72 537.6 R .869 +(oots in the ksh: for example, the POSIX)-.18 F .85(and ksh job contr)72 549.6 +R .85(ol facilities ar)-.18 F 3.351(en)-.18 G .851 +(early identical. Bash includes featur)225.181 549.6 R .851(es fr)-.18 F .851 +(om the Korn Shell for)-.18 F .564(both interactive use and shell pr)72 561.6 R +3.063(ogramming. For)-.18 F(pr)3.063 E .563(ogramming, Bash pr)-.18 F .563 +(ovides variables such as)-.18 F F1(RANDOM)72 573.6 Q F0(and)2.768 E F1(REPL) +2.768 E(Y)-.92 E F0 2.768(,t)C(he)184.284 573.6 Q F1(typeset)2.768 E F0 .268 +(builtin, the ability to r)2.768 F .269(emove substrings fr)-.18 F .269 +(om variables based)-.18 F .582(on patterns, and shell arithmetic.)72 585.6 R +F1(RANDOM)5.582 E F0 .581(expands to a random number each time it is r)3.081 F +(efer)-.18 E(-)-.18 E 2.583(enced; assigning a value to)72 597.6 R F1(RANDOM) +5.083 E F0 2.583(seeds the random number generator)5.083 F(.)-.74 E F1(REPL) +7.583 E(Y)-.92 E F0 2.584(is the)5.083 F .034(default variable used by the)72 +609.6 R F1(read)2.534 E F0 .034(builtin when no variable names ar)2.534 F 2.534 +(es)-.18 G .034(upplied as ar)383.348 609.6 R 2.534(guments. The)-.18 F F1 +(typeset)72 621.6 Q F0 .416 +(builtin is used to de\214ne variables and give them attributes such as)2.916 F +F1(readonly)2.916 E F0 5.416(.B)C .416(ash arith-)461.754 621.6 R 1.31 +(metic allows the evaluation of an expr)72 633.6 R 1.31 +(ession and the substitution of the r)-.18 F 3.81(esult. Shell)-.18 F +(variables)3.81 E .561(may be used as operands, and the r)72 645.6 R .561 +(esult of an expr)-.18 F .561(ession may be assigned to a variable.)-.18 F +(Nearly)5.562 E(all of the operators fr)72 657.6 Q(om the C language ar)-.18 E +2.5(ea)-.18 G(vailable, with the same pr)271.68 657.6 Q(ecedence r)-.18 E +(ules:)-.08 E F3 6($e)97 675.6 S(cho $\(\(3 + 5 * 32\)\))115 675.6 Q(163)97 +687.6 Q .32 LW 76 698 72 698 DL 80 698 76 698 DL 84 698 80 698 DL 88 698 84 698 +DL 92 698 88 698 DL 96 698 92 698 DL 100 698 96 698 DL 104 698 100 698 DL 108 +698 104 698 DL 112 698 108 698 DL 116 698 112 698 DL 120 698 116 698 DL 124 698 +120 698 DL 128 698 124 698 DL 132 698 128 698 DL 136 698 132 698 DL 140 698 136 +698 DL 144 698 140 698 DL/F4 8/Palatino-Roman@0 SF +(\207Morris Bolsky and David Korn,)72 708 Q/F5 8/Palatino-Italic@0 SF +(The KornShell Command and Pr)2 E(ogramming Language)-.144 E F4 2(,P)C -.144 +(re)374.688 708 S(ntice Hall, 1989.).144 E EP +%%Page: 3 3 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Palatino-Roman@0 SF 2.5(-3-)279.67 48 S .953 +(For interactive use, Bash implements ksh-style aliases and builtins such as)72 +84 R/F1 10/Palatino-Bold@0 SF(fc)3.453 E F0 .953(\(discussed below\))3.453 F +(and)72 96 Q F1(jobs)2.603 E F0 5.103(.B)C .104 +(ash aliases allow a string to be substituted for a command name.)124.686 96 R +.104(They can be used to)5.104 F(cr)72 108 Q .936(eate a mnemonic for a)-.18 F +/F2 9/Palatino-Roman@0 SF(UNIX)3.435 E F0 .935(command name \()3.435 F/F3 10 +/Courier@0 SF .935(alias del=rm)B F0 .935(\), to expand a single wor)B 3.435 +(dt)-.18 G 3.435(oa)490.105 108 S 1.465(complex command \()72 120 R F3 1.465 +(alias news='xterm -g 80x45 -title trn -e trn -e -S1 -N)B(&')72 132 Q F0 .738 +(\), or to ensur)B 3.238(et)-.18 G .737 +(hat a command is invoked with a basic set of options \()153.612 132 R F3 .737 +(alias ls="/bin/ls)B(-F")72 144 Q F0(\).)A .4(The C shell \()97 159.6 R F1(csh) +A F0 .401(\)\207, originally written by Bill Joy while at Berkeley)B 2.901(,i) +-1.11 G 2.901(sw)396.846 159.6 S .401(idely used and quite)412.327 159.6 R .002 +(popular for its interactive facilities.)72 171.6 R .002 +(Bash includes a csh-compatible history expansion mechanism)5.002 F(\(`)72 +183.6 Q 2.058(`! history')-.37 F 2.058 +('\), brace expansion, access to a stack of dir)-.37 F 2.058(ectories via the) +-.18 F F1(pushd)4.558 E F0(,)A F1(popd)4.558 E F0 4.558(,a)C(nd)469.742 183.6 Q +F1(dirs)4.558 E F0 .648 +(builtins, and tilde expansion, to generate users' home dir)72 195.6 R 3.148 +(ectories. T)-.18 F .647(ilde expansion has also been)-.55 F +(adopted by both the Korn Shell and POSIX.2.)72 207.6 Q(Ther)97 223.2 Q 2.98 +(ew)-.18 G(er)133.62 223.2 Q 2.98(ec)-.18 G .48(ertain ar)154.39 223.2 R .48 +(eas in which POSIX.2 felt standar)-.18 F .48(dization was necessary)-.18 F +2.98(,b)-1.11 G .48(ut no exist-)453.78 223.2 R 1.061(ing implementation pr)72 +235.2 R 1.062(ovided the pr)-.18 F 1.062(oper behavior)-.18 F 6.062(.T)-.74 G +1.062(he working gr)312.43 235.2 R 1.062(oup invented and standar)-.18 F(d-) +-.18 E .279(ized functionality in these ar)72 247.2 R .279 +(eas, which Bash implements.)-.18 F(The)5.278 E F1(command)2.778 E F0 .278 +(builtin was invented so)2.778 F 1.376 +(that shell functions could be written to r)72 259.2 R 1.376 +(eplace builtins; it makes the capabilities of the builtin)-.18 F .477 +(available to the function.)72 271.2 R .477(The r)5.477 F .477(eserved wor)-.18 +F 2.977(d`)-.18 G(`!')278.12 271.2 Q 2.977('w)-.37 G .477 +(as added to negate the r)300.187 271.2 R .477(eturn value of a com-)-.18 F +1.09(mand or pipeline; it was nearly impossible to expr)72 283.2 R 1.09(ess `) +-.18 F 1.09(`if not x')-.37 F 3.59('c)-.37 G 1.09 +(leanly using the sh language.)370.99 283.2 R(Ther)72 295.2 Q 3.684(ee)-.18 G +1.183(xist multiple incompatible implementations of the)105.774 295.2 R F1 +(test)3.683 E F0 1.183(builtin, which tests \214les for type)3.683 F .38 +(and other attributes and performs arithmetic and string comparisons.)72 307.2 +R .38(POSIX consider)5.38 F .38(ed none of)-.18 F .469(these corr)72 319.2 R +.468(ect, so the standar)-.18 F 2.968(db)-.18 G .468 +(ehavior was speci\214ed in terms of the number of ar)210.762 319.2 R .468 +(guments to the)-.18 F 2.52(command. POSIX.2)72 331.2 R .021 +(dictates exactly what will happen when four or fewer ar)2.52 F .021 +(guments ar)-.18 F 2.521(eg)-.18 G .021(iven to)473.589 331.2 R F1(test)72 +343.2 Q F0 4.905(,a)C 2.405(nd leaves the behavior unde\214ned when mor)100.505 +343.2 R 4.905(ea)-.18 G -.18(rg)325.27 343.2 S 2.404(uments ar).18 F 4.904(es) +-.18 G 4.904(upplied. Bash)395.178 343.2 R 2.404(uses the)4.904 F +(POSIX.2 algorithm, which was conceived by David Korn.)72 355.2 Q F1 2.5 +(3.1. Features)72 379.2 R(not in the Bourne Shell)2.5 E F0(Ther)97 394.8 Q +3.958(ea)-.18 G 1.818 -.18(re a n)131.258 394.8 T 1.458(umber of minor dif).18 +F(fer)-.18 E 1.458(ences between Bash and the version of sh pr)-.18 F 1.458 +(esent on)-.18 F .503(most other versions of)72 406.8 R F2(UNIX)3.003 E F0 +5.503(.T)C .503(he majority of these ar)212.582 406.8 R 3.002(ed)-.18 G .502 +(ue to the POSIX standar)326.876 406.8 R .502(d, but some ar)-.18 F(e)-.18 E +1.173(the r)72 418.8 R 1.173(esult of Bash adopting featur)-.18 F 1.173(es fr) +-.18 F 1.173(om other shells.)-.18 F 1.174 +(For instance, Bash includes the new `)6.173 F(`!')-.37 E(')-.37 E -.18(re)72 +430.8 S .414(served wor).18 F .414(d, the)-.18 F F1(command)2.913 E F0 .413 +(builtin, the ability of the)2.913 F F1(read)2.913 E F0 .413(builtin to corr) +2.913 F .413(ectly r)-.18 F .413(eturn a line end-)-.18 F 1.635 +(ing with a backslash, symbolic ar)72 442.8 R 1.635(guments to the)-.18 F F1 +(umask)4.135 E F0 1.636(builtin, variable substring r)4.136 F 1.636(emoval, a) +-.18 F .791(way to get the length of a variable, and the new algorithm for the) +72 454.8 R F1(test)3.29 E F0 .79(builtin fr)3.29 F .79(om the POSIX.2)-.18 F +(standar)72 466.8 Q(d, none of which appear in sh.)-.18 E 1.408 +(Bash also implements the `)97 482.4 R(`$\(...\)')-.37 E 3.908('c)-.37 G 1.408 +(ommand substitution syntax, which supersedes the sh)255.56 482.4 R .54 +(`...` constr)72 494.4 R 3.04(uct. The)-.08 F -.37(``)3.04 G($\(...\)').37 E +3.04('c)-.37 G(onstr)193.76 494.4 Q .54 +(uct expands to the output of the command contained within the)-.08 F(par)72 +506.4 Q .708(entheses, with trailing newlines r)-.18 F 3.208(emoved. The)-.18 F +.709(sh syntax is accepted for backwar)3.208 F .709(ds compati-)-.18 F(bility) +72 518.4 Q 2.901(,b)-1.11 G .401(ut the `)104.901 518.4 R(`$\(...\)')-.37 E +2.901('f)-.37 G .401(orm is pr)169.634 518.4 R(eferr)-.18 E .401 +(ed because its quoting r)-.18 F .4(ules ar)-.08 F 2.9(em)-.18 G .4 +(uch simpler and it is easier)383.64 518.4 R(to nest.)72 530.4 Q .697 +(The Bourne shell does not pr)97 546 R .697(ovide such featur)-.18 F .698 +(es as brace expansion, the ability to de\214ne a)-.18 F 2.079(variable and a \ +function with the same name, local variables in shell functions, the ability t\ +o)72 558 R 1.933 +(enable and disable individual builtins or write a function to r)72 570 R 1.933 +(eplace a builtin, or a means to)-.18 F(export a shell function to a child pr) +72 582 Q(ocess.)-.18 E 1.019 +(Bash has closed a long-standing shell security hole by not using the)97 597.6 +R F1($IFS)3.518 E F0 1.018(variable to split)3.518 F .861(each wor)72 609.6 R +3.361(dr)-.18 G .861(ead by the shell, but splitting only the r)126.222 609.6 R +.861(esults of expansion \(ksh and the 4.4 BSD sh)-.18 F .337 +(have \214xed this as well\).)72 621.6 R .337 +(Useful behavior such as a means to abort execution of a script r)5.337 F .336 +(ead with)-.18 F .282(the `)72 633.6 R(`.')-.37 E 2.782('c)-.37 G .283 +(ommand using the)108.754 633.6 R F1(return)2.783 E F0 .283 +(builtin or automatically exporting variables in the shell's envi-)2.783 F -.18 +(ro)72 645.6 S .166(nment to childr).18 F .166(en is also not pr)-.18 F .166 +(esent in the Bourne shell.)-.18 F .165(Bash pr)5.165 F .165(ovides a much mor) +-.18 F 2.665(ep)-.18 G(owerful)469.19 645.6 Q(envir)72 657.6 Q +(onment for both interactive use and pr)-.18 E(ogramming.)-.18 E .32 LW 76 688 +72 688 DL 80 688 76 688 DL 84 688 80 688 DL 88 688 84 688 DL 92 688 88 688 DL +96 688 92 688 DL 100 688 96 688 DL 104 688 100 688 DL 108 688 104 688 DL 112 +688 108 688 DL 116 688 112 688 DL 120 688 116 688 DL 124 688 120 688 DL 128 688 +124 688 DL 132 688 128 688 DL 136 688 132 688 DL 140 688 136 688 DL 144 688 140 +688 DL/F4 8/Palatino-Roman@0 SF 1.489(\207Bill Joy)72 698 R 3.489(,A)-.888 G +3.489(nI)113.666 698 S(ntr)124.507 698 Q 1.489(oduction to the C Shell,)-.144 F +/F5 8/Palatino-Italic@0 SF 1.489(UNIX User)3.489 F 2.369 -.44('s S).296 H 1.489 +(upplementary Documents).44 F F4 3.489(,U)C 1.489(niversity of California at) +377.116 698 R(Berkeley)72 708 Q 2(,1)-.888 G(986.)109.88 708 Q EP +%%Page: 4 4 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Palatino-Roman@0 SF 2.5(-4-)279.67 48 S/F1 10/Palatino-Bold@0 SF 2.5 +(4. Bash-speci\214c)72 84 R(Features)2.5 E F0 .897 +(This section details a few of the featur)97 99.6 R .897 +(es which make Bash unique.)-.18 F .898(Most of them pr)5.898 F(ovide)-.18 E +(impr)72 111.6 Q 2.913(oved interactive use, but a few pr)-.18 F 2.912 +(ogramming impr)-.18 F 2.912(ovements ar)-.18 F 5.412(ep)-.18 G -.18(re)410.494 +111.6 S 2.912(sent as well.).18 F(Full)7.912 E(descriptions of these featur)72 +123.6 Q(es can be found in the Bash documentation.)-.18 E F1 2.5(4.1. Startup) +72 147.6 R(Files)2.5 E F0 .207(Bash executes startup \214les dif)97 163.2 R +(fer)-.18 E .207(ently than other shells.)-.18 F .207 +(The Bash behavior is a compr)5.207 F(omise)-.18 E 1.451(between the csh princ\ +iple of startup \214les with \214xed names executed for each shell and the sh) +72 175.2 R -.37(``)72 187.2 S(minimalist').37 E 2.677('b)-.37 G(ehavior)138.207 +187.2 Q 5.177(.A)-.74 G 2.678(ni)186.504 187.2 S .178 +(nteractive instance of Bash started as a login shell r)197.912 187.2 R .178 +(eads and executes)-.18 F/F2 10/Palatino-Italic@0 SF(~/.bash_pr)72 199.2 Q +(o\214le)-.18 E F0 .521(\(the \214le .bash_pr)4.687 F .52(o\214le in the user) +-.18 F .52('s home dir).74 F .52(ectory\), if it exists.)-.18 F .52 +(An interactive non-)5.52 F 1.692(login shell r)72 211.2 R 1.692 +(eads and executes)-.18 F F2(~/.bashr)4.192 E(c)-.18 E F0 6.692(.A)1.666 G +1.693(non-interactive shell \(one begun to execute a shell)271.99 211.2 R .56 +(script, for example\) r)72 223.2 R .559 +(eads no \214xed startup \214le, but uses the value of the variable)-.18 F F1 +($ENV)3.059 E F0 3.059(,i)C 3.059(fs)470.522 223.2 S .559(et, as)481.151 223.2 +R .06(the name of a startup \214le.)72 235.2 R .061(The ksh practice of r)5.06 +F(eading)-.18 E F1($ENV)2.561 E F0 .061(for every shell, with the accompany-) +2.561 F 1.309(ing dif)72 247.2 R 1.309(\214culty of de\214ning the pr)-.18 F +1.308(oper variables and functions for interactive and non-interactive)-.18 F +.385(shells or having the \214le r)72 259.2 R .385 +(ead only for interactive shells, was consider)-.18 F .385(ed too complex.)-.18 +F .385(Ease of use)5.385 F .252(won out her)72 271.2 R 2.752(e. Inter)-.18 F +(estingly)-.18 E 2.752(,t)-1.11 G .251(he next r)202.258 271.2 R .251 +(elease of ksh will change to r)-.18 F(eading)-.18 E F1($ENV)2.751 E F0 .251 +(only for interac-)2.751 F(tive shells.)72 283.2 Q F1 2.5(4.2. New)72 307.2 R +(Builtin Commands)2.5 E F0(Ther)97 322.8 Q 3.077(ea)-.18 G .937 -.18(re a f) +130.377 322.8 T .577(ew builtins which ar).18 F 3.077(en)-.18 G .578 +(ew or have been extended in Bash.)259.179 322.8 R(The)5.578 E F1(enable)3.078 +E F0(builtin)3.078 E .073(allows builtin commands to be turned on and of)72 +334.8 R 2.573(fa)-.18 G(rbitrarily)296.267 334.8 Q 5.073(.T)-1.11 G 2.573(ou) +347.87 334.8 S .073(se the version of)361.933 334.8 R F2(echo)2.573 E F0 .073 +(found in a)4.239 F -1.76(user 's)72 346.8 R(sear)2.755 E .255 +(ch path rather than the Bash builtin,)-.18 F/F3 10/Courier@0 SF .255 +(enable -n echo)2.755 F F0(suf)2.756 E 2.756(\214ces. The)-.18 F F1(help)2.756 +E F0 .256(builtin pr)2.756 F(o-)-.18 E .618 +(vides quick synopses of the shell facilities without r)72 358.8 R .618 +(equiring access to a manual page.)-.18 F F1(Builtin)5.618 E F0(is)3.118 E .955 +(similar to)72 370.8 R F1(command)3.455 E F0 .955 +(in that it bypasses shell functions and dir)3.455 F .956 +(ectly executes builtin commands.)-.18 F 2.025 +(Access to a csh-style stack of dir)72 382.8 R 2.025(ectories is pr)-.18 F +2.025(ovided via the)-.18 F F1(pushd)4.524 E F0(,)A F1(popd)4.524 E F0 4.524 +(,a)C(nd)429.142 382.8 Q F1(dirs)4.524 E F0(builtins.)4.524 E F1(Pushd)72 394.8 +Q F0(and)4.255 E F1(popd)4.255 E F0 1.755(insert and r)4.255 F 1.756(emove dir) +-.18 F 1.756(ectories fr)-.18 F 1.756(om the stack, r)-.18 F(espectively)-.18 E +4.256(,a)-1.11 G(nd)430.102 394.8 Q F1(dirs)4.256 E F0 1.756(lists the)4.256 F +.458(stack contents.)72 406.8 R .457 +(On systems that allow \214ne-grained contr)5.458 F .457(ol of r)-.18 F(esour) +-.18 E .457(ces, the)-.18 F F1(ulimit)2.957 E F0 .457(builtin can be)2.957 F +1.216(used to tune these settings.)72 418.8 R F1(Ulimit)6.216 E F0 1.216 +(allows a user to contr)3.716 F 1.216(ol, among other things, whether cor)-.18 +F(e)-.18 E .306(dumps ar)72 430.8 R 2.806(et)-.18 G 2.806(ob)125.652 430.8 S +2.806(eg)139.448 430.8 S .306 +(enerated, how much memory the shell or a child pr)152.604 430.8 R .306 +(ocess is allowed to allocate,)-.18 F .991(and how lar)72 442.8 R .991 +(ge a \214le cr)-.18 F .991(eated by a child pr)-.18 F .991(ocess can gr)-.18 F +(ow)-.18 E 5.991(.T)-.92 G(he)343.212 442.8 Q F1(suspend)3.491 E F0 .992 +(command will stop the)3.491 F .532(shell pr)72 454.8 R .532 +(ocess when job contr)-.18 F .532 +(ol is active; most other shells do not allow themselves to be stopped)-.18 F +.339(like that.)72 466.8 R F1 -.9(Ty)5.339 G(pe,).9 E F0 .339 +(the Bash answer to)2.839 F F1(which)2.839 E F0(and)2.839 E F1(whence,)2.839 E +F0 .34(shows what will happen when a wor)2.839 F 2.84(di)-.18 G(s)499.76 466.8 +Q(typed as a command:)72 478.8 Q F3 6($t)97 496.8 S(ype export)115 496.8 Q +(export is a shell builtin)97 508.8 Q 6($t)97 520.8 S(ype -t export)115 520.8 Q +(builtin)97 532.8 Q 6($t)97 544.8 S(ype bash)115 544.8 Q(bash is /bin/bash)97 +556.8 Q 6($t)97 568.8 S(ype cd)115 568.8 Q(cd is a function)97 580.8 Q(cd \(\)) +97 592.8 Q({)97 604.8 Q(builtin cd ${1+"$@"} && xtitle $HOST: $PWD)121 616.8 Q +(})97 628.8 Q F0 -.92(Va)72 650.4 S 1.138(rious modes tell what a command wor) +.92 F 3.638(di)-.18 G 3.638(s\()273.156 650.4 S -.18(re)284.364 650.4 S 1.138 +(served wor).18 F 1.138(d, alias, function, builtin, or \214le\) or)-.18 F .596 +(which version of a command will be executed based on a user)72 662.4 R .597 +('s sear).74 F .597(ch path.)-.18 F .597(Some of this func-)5.597 F +(tionality has been adopted by POSIX.2 and folded into the)72 674.4 Q F1 +(command)2.5 E F0(utility)2.5 E(.)-1.11 E EP +%%Page: 5 5 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Palatino-Roman@0 SF 2.5(-5-)279.67 48 S/F1 10/Palatino-Bold@0 SF 2.5 +(4.3. Editing)72 84 R(and Completion)2.5 E F0 1.094(One ar)97 99.6 R 1.094 +(ea in which Bash shines is command line editing.)-.18 F 1.093(Bash uses the) +6.093 F/F2 10/Palatino-Italic@0 SF -.18(re)3.593 G(adline).18 E F0 1.093 +(library to)5.259 F -.18(re)72 111.6 S .27(ad and edit lines when interactive.) +.18 F .271(Readline is a powerful and \215exible input facility that a user) +5.27 F .013(can con\214gur)72 123.6 R 2.513(et)-.18 G 2.513(oi)137.466 123.6 S +.013(ndividual tastes.)148.349 123.6 R .012 +(It allows lines to be edited using either emacs or vi commands,)5.013 F(wher) +72 135.6 Q 3.039(et)-.18 G .539(hose commands ar)105.809 135.6 R 3.039(ea)-.18 +G(ppr)202.526 135.6 Q 3.039(opriate. The)-.18 F .539 +(full capability of emacs is not pr)3.039 F .54(esent \255 ther)-.18 F 3.04(ei) +-.18 G 3.04(sn)485.44 135.6 S(o)498.54 135.6 Q .421(way to execute a named com\ +mand with M-x, for instance \255 but the existing commands ar)72 147.6 R 2.921 +(em)-.18 G(or)489.98 147.6 Q(e)-.18 E 2.773(than adequate.)72 159.6 R 2.773 +(The vi mode is compliant with the command line editing standar)7.773 F 2.774 +(dized by)-.18 F(POSIX.2.)72 171.6 Q 1.222(Readline is fully customizable.)97 +187.2 R 1.221(In addition to the basic commands and key bindings, the)6.222 F +.263(library allows users to de\214ne additional key bindings using a startup \ +\214le.)72 199.2 R(The)5.263 E F2(inputr)2.763 E(c)-.18 E F0 .263 +(\214le, which)4.429 F .519(defaults to the \214le)72 211.2 R F2(~/.inputr) +3.019 E(c)-.18 E F0 3.019(,i)1.666 G 3.019(sr)204.981 211.2 S .519 +(ead each time r)216.01 211.2 R .519 +(eadline initializes, permitting users to maintain a)-.18 F 1.084 +(consistent interface acr)72 223.2 R 1.084(oss a set of pr)-.18 F 3.585 +(ograms. Readline)-.18 F 1.085(includes an extensible interface, so each)3.585 +F(pr)72 235.2 Q .885 +(ogram using the library can add its own bindable commands and pr)-.18 F .885 +(ogram-speci\214c key bind-)-.18 F 2.844(ings. Bash)72 247.2 R .345(uses this \ +facility to add bindings that perform history expansion or shell wor)2.844 F +2.845(de)-.18 G(xpan-)478.68 247.2 Q(sions on the curr)72 259.2 Q +(ent input line.)-.18 E .164(Readline interpr)97 274.8 R .163 +(ets a number of variables which further tune its behavior)-.18 F 5.163(.V)-.74 +G .163(ariables exist to)435.264 274.8 R(contr)72 286.8 Q 2.503 +(ol whether or not eight-bit characters ar)-.18 F 5.003(ed)-.18 G(ir)300.789 +286.8 Q 2.503(ectly r)-.18 F 2.503(ead as input or converted to meta-)-.18 F +(pr)72 298.8 Q .076(e\214xed key sequences \(a meta-pr)-.18 F .076 +(e\214xed key sequence consists of the character with the eighth bit)-.18 F +(zer)72 310.8 Q .204(oed, pr)-.18 F .204(eceded by the)-.18 F F2(meta-pr)2.704 +E(e\214x)-.18 E F0(character)4.37 E 2.704(,u)-.74 G .205 +(sually escape, which selects an alternate keymap\),)282.17 310.8 R .76 +(to decide whether to output characters with the eighth bit set dir)72 322.8 R +.759(ectly or as a meta-pr)-.18 F .759(e\214xed key)-.18 F .19 +(sequence, whether or not to wrap to a new scr)72 334.8 R .191 +(een line when a line being edited is longer than the)-.18 F(scr)72 346.8 Q +.099(een width, the keymap to which subsequent key bindings should apply)-.18 F +2.598(,o)-1.11 G 2.598(re)411.096 346.8 S .098(ven what happens)422.434 346.8 R +1.031(when r)72 358.8 R 1.031(eadline wants to ring the terminal's bell.)-.18 F +1.031(All of these variables can be set in the inputr)6.031 F(c)-.18 E(\214le.) +72 370.8 Q .239(The startup \214le understands a set of C pr)97 386.4 R(epr) +-.18 E(ocessor)-.18 E .238(-like conditional constr)-.18 F .238 +(ucts which allow)-.08 F 1.431 +(variables or key bindings to be assigned based on the application using r)72 +398.4 R 1.432(eadline, the terminal)-.18 F(curr)72 410.4 Q 1.676 +(ently being used, or the editing mode.)-.18 F 1.676(Users can add pr)6.676 F +1.676(ogram-speci\214c bindings to make)-.18 F .478(their lives easier:)72 +422.4 R 2.978(Ih)5.478 G .478(ave bindings that let me edit the value of) +165.012 422.4 R F1($P)2.978 E -.92(AT)-.74 G(H).92 E F0 .479 +(and double-quote the cur)2.979 F(-)-.18 E -.18(re)72 434.4 S(nt or pr).18 E +(evious wor)-.18 E(d:)-.18 E/F3 10/Courier@0 SF 6(#M)97 452.4 S +(acros that are convenient for shell interaction)115 452.4 Q($if Bash)97 464.4 +Q 6(#e)97 476.4 S(dit the path)115 476.4 Q +("\\C-xp": "PATH=${PATH}\\e\\C-e\\C-a\\ef\\C-f")97 488.4 Q 6(#p)97 500.4 S +(repare to type a quoted word -- insert open and close double)115 500.4 Q 6(#q) +97 512.4 S(uotes and move to just after the open quote)115 512.4 Q +("\\C-x\\"": "\\"\\"\\C-b")97 524.4 Q 6(#Q)97 536.4 S +(uote the current or previous word)115 536.4 Q("\\C-xq": "\\eb\\"\\ef\\"")97 +548.4 Q($endif)97 560.4 Q F0(Ther)72 582 Q 3.06(ei)-.18 G 3.06(sar)103.27 582 S +.56(eadline command to r)122.4 582 R(e-r)-.18 E .559 +(ead the \214le, so users can edit the \214le, change some bindings,)-.18 F +(and begin to use them almost immediately)72 594 Q(.)-1.11 E .701 +(Bash implements the)97 609.6 R F1(bind)3.201 E F0 .701(builtin for mor)3.201 F +3.201(ed)-.18 G .701(yamic contr)299.567 609.6 R .702(ol of r)-.18 F .702 +(eadline than the startup \214le)-.18 F(permits.)72 621.6 Q F1(Bind)5.572 E F0 +.572(is used in several ways.)3.072 F(In)5.572 E F2(list)3.071 E F0 .571 +(mode, it can display the curr)4.737 F .571(ent key bindings, list)-.18 F .752 +(all the r)72 633.6 R .752(eadline editing dir)-.18 F .752 +(ectives available for binding, list which keys invoke a given dir)-.18 F +(ective,)-.18 E 1.327(or output the curr)72 645.6 R 1.327 +(ent set of key bindings in a format that can be incorporated dir)-.18 F 1.327 +(ectly into an)-.18 F(inputr)72 657.6 Q 3.075<638c>-.18 G 3.075(le. In)113.365 +657.6 R F2(batch)3.075 E F0 .575(mode, it r)4.741 F .575 +(eads a series of key bindings dir)-.18 F .575(ectly fr)-.18 F .576 +(om a \214le and passes them)-.18 F .751(to r)72 669.6 R 3.251(eadline. In)-.18 +F .751(its most common usage,)3.251 F F1(bind)3.251 E F0 .75 +(takes a single string and passes it dir)3.251 F .75(ectly to r)-.18 F(ead-) +-.18 E .604(line, which interpr)72 681.6 R .604 +(ets the line as if it had just been r)-.18 F .605(ead fr)-.18 F .605 +(om the inputr)-.18 F 3.105<638c>-.18 G 3.105(le. Both)406.525 681.6 R .605 +(key bindings)3.105 F +(and variable assignments may appear in the string given to)72 693.6 Q F1(bind) +2.5 E F0(.)A 1.692(The r)97 709.2 R 1.691(eadline library also pr)-.18 F 1.691 +(ovides an interface for)-.18 F F2 1.691(word completion)4.191 F F0 6.691(.W)C +1.691(hen the)419.582 709.2 R F2(completion)4.191 E F0 3.377 +(character \(usually T)72 721.2 R 3.377(AB\) is typed, r)-.74 F 3.378 +(eadline looks at the wor)-.18 F 5.878(dc)-.18 G(urr)375.406 721.2 Q 3.378 +(ently being enter)-.18 F 3.378(ed and)-.18 F EP +%%Page: 6 6 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Palatino-Roman@0 SF 2.5(-6-)279.67 48 S .089 +(computes the set of \214lenames of which the curr)72 84 R .088(ent wor)-.18 F +2.588(di)-.18 G 2.588(sav)326.968 84 S .088(alid pr)347.034 84 R 2.588 +(e\214x. If)-.18 F(ther)2.588 E 2.588(ei)-.18 G 2.588(so)437.136 84 S .088 +(nly one pos-)449.424 84 R .81(sible completion, the r)72 96 R .81 +(est of the characters ar)-.18 F 3.31(ei)-.18 G .81(nserted dir)285.2 96 R +(ectly)-.18 E 3.31(,o)-1.11 G .81(therwise the common pr)365.38 96 R .81 +(e\214x of)-.18 F .715(the set of \214lenames is added to the curr)72 108 R +.715(ent wor)-.18 F 3.215(d. A)-.18 F .714(second T)3.214 F .714 +(AB character enter)-.74 F .714(ed immediately)-.18 F .527 +(after a non-unique completion causes r)72 120 R .527 +(eadline to list the possible completions; ther)-.18 F 3.027(ei)-.18 G 3.028 +(sa)453.964 120 S 3.028(no)466.232 120 S(ption)480.54 120 Q .265 +(to have the list displayed immediately)72 132 R 5.265(.R)-1.11 G .265 +(eadline pr)255.87 132 R .264(ovides hooks so that applications can pr)-.18 F +(ovide)-.18 E 1.287(speci\214c types of completion befor)72 144 R 3.787(et)-.18 +G 1.287(he default \214lename completion is attempted.)237.284 144 R 1.287 +(This is quite)6.287 F 1.378(\215exible, though it is not completely user)72 +156 R(-pr)-.18 E 3.877(ogrammable. Bash,)-.18 F 1.377 +(for example, can complete \214le-)3.877 F 1.456 +(names, command names \(including aliases, builtins, shell r)72 168 R 1.457 +(eserved wor)-.18 F 1.457(ds, shell functions, and)-.18 F .598(executables fou\ +nd in the \214le system\), shell variables, usernames, and hostnames.)72 180 R +.598(It uses a set of)5.598 F .346(heuristics that, while not perfect, is gene\ +rally quite good at determining what type of completion)72 192 R(to attempt.)72 +204 Q/F1 10/Palatino-Bold@0 SF 2.5(4.4. History)72 228 R F0 .487 +(Access to the list of commands pr)97 243.6 R .487(eviously enter)-.18 F .487 +(ed \(the)-.18 F/F2 10/Palatino-Italic@0 SF .487(command history)2.987 F F0 +2.987(\)i)C 2.987(sp)424.717 243.6 S -.18(ro)437.954 243.6 S .486 +(vided jointly).18 F .577(by Bash and the r)72 255.6 R .577(eadline library) +-.18 F 5.577(.B)-1.11 G .578(ash pr)229.432 255.6 R .578(ovides variables \() +-.18 F F1($HISTFILE)A F0(,)A F1($HISTSIZE)3.078 E F0 3.078(,a)C(nd)456.582 +255.6 Q F1($HIST)3.078 E(-)-.92 E(CONTROL)72 267.6 Q F0 3.306(\)a)C .806 +(nd the)135.846 267.6 R F1(history)3.306 E F0(and)3.306 E F1(fc)3.306 E F0 .805 +(builtins to manipulate the history list.)3.305 F .805(The value of)5.805 F F1 +($HIST)3.305 E(-)-.92 E(FILE)72 279.6 Q F0 1.393(specifes the \214le wher)3.893 +F 3.893(eB)-.18 G 1.393(ash writes the command history on exit and r)209.125 +279.6 R 1.394(eads it on startup.)-.18 F F1($HISTSIZE)72 291.6 Q F0 1.295 +(is used to limit the number of commands saved in the history)3.795 F(.)-1.11 E +F1($HISTCONTROL)6.294 E F0(pr)72 303.6 Q .778(ovides a cr)-.18 F .779 +(ude form of contr)-.08 F .779(ol over which commands ar)-.18 F 3.279(es)-.18 G +.779(aved on the history list: a value of)349.157 303.6 R F2(ignor)72 315.6 Q +(espace)-.18 E F0 .548 +(means to not save commands which begin with a space; a value of)4.714 F F2 +(ignor)3.047 E(edups)-.18 E F0(means)4.713 E .296 +(to not save commands identical to the last command saved.)72 327.6 R F1 +($HISTCONTROL)5.296 E F0 .297(was named)2.796 F F1($his-)2.797 E(tory_control) +72 339.6 Q F0 .611 +(in earlier versions of Bash; the old name is still accepted for backwar)3.112 +F .611(ds compatibil-)-.18 F(ity)72 351.6 Q 5.678(.T)-1.11 G(he)96.928 351.6 Q +F1(history)3.178 E F0 .678(command can r)3.178 F .678 +(ead or write \214les containing the history list and display the cur)-.18 F(-) +-.18 E -.18(re)72 363.6 S .913(nt list contents.).18 F(The)5.913 E F1(fc)3.413 +E F0 .913(builtin, adopted fr)3.413 F .912 +(om POSIX.2 and the Korn Shell, allows display and)-.18 F -.18(re)72 375.6 S +.12(-execution, with optional editing, of commands fr).18 F .12 +(om the history list.)-.18 F .12(The r)5.12 F .12(eadline library of)-.18 F +(fers)-.18 E 2.518(as)72 387.6 S .018(et of commands to sear)83.758 387.6 R +.018(ch the history list for a portion of the curr)-.18 F .017 +(ent input line or a string typed)-.18 F 1.024(by the user)72 399.6 R 6.025(.F) +-.74 G(inally)136.364 399.6 Q 3.525(,t)-1.11 G(he)169.649 399.6 Q F2(history) +3.525 E F0(library)5.191 E 3.525(,g)-1.11 G 1.025(enerally incorporated dir) +257.59 399.6 R 1.025(ectly into the r)-.18 F 1.025(eadline library)-.18 F(,) +-1.11 E .709(implements a facility for history r)72 411.6 R .709 +(ecall, expansion, and r)-.18 F .709(e-execution of pr)-.18 F .709 +(evious commands very)-.18 F .711(similar to csh \(`)72 423.6 R .711 +(`bang history')-.37 F .711(', so called because the exclamation point intr) +-.37 F .712(oduces a history sub-)-.18 F(stitution\):)72 435.6 Q/F3 10 +/Courier@0 SF 6($e)97 453.6 S(cho a b c d e)115 453.6 Q 6(abcde)97 465.6 S 6 +($!)97 477.6 S 6(!fghi)115 477.6 S(echo a b c d e f g h i)97 489.6 Q 6 +(abcdefghi)97 501.6 S 6($!)97 513.6 S(-2)115 513.6 Q(echo a b c d e)97 525.6 Q +6(abcde)97 537.6 S 6($e)97 549.6 S(cho !-2:1-4)115 549.6 Q(echo a b c d)97 +561.6 Q 6(abcd)97 573.6 S F0 .555(The command history is only saved when the s\ +hell is interactive, so it is not available for use by)72 595.2 R +(shell scripts.)72 607.2 Q F1 2.5(4.5. New)72 631.2 R(Shell V)2.5 E(ariables) +-1.11 E F0(Ther)97 646.8 Q 2.916(ea)-.18 G .776 -.18(re a n)130.216 646.8 T +.416(umber of convenience variables that Bash interpr).18 F .417 +(ets to make life easier)-.18 F 5.417(.T)-.74 G(hese)484.36 646.8 Q(include)72 +658.8 Q F1(FIGNORE)3.043 E F0 3.043(,w)C .542(hich is a set of \214lename suf) +169.706 658.8 R .542(\214xes identifying \214les to exclude when complet-)-.18 +F .167(ing \214lenames;)72 670.8 R F1(HOSTTYPE)2.667 E F0 2.667(,w)C .167 +(hich is automatically set to a string describing the type of har)205.061 670.8 +R(dwar)-.18 E(e)-.18 E .333(on which Bash is curr)72 682.8 R .333 +(ently executing;)-.18 F F1(command_oriented_history)2.833 E F0 2.832(,w)C .332 +(hich dir)380.94 682.8 R .332(ects Bash to save all)-.18 F 1.264 +(lines of a multiple-line command such as a)72 694.8 R F2(while)3.765 E F0(or) +3.765 E F2(for)3.765 E F0 1.265(loop in a single history entry)3.765 F 3.765 +(,a)-1.11 G(llowing)470.09 694.8 Q .13(easy r)72 706.8 R .13(e-editing; and) +-.18 F F1(IGNOREEOF)2.63 E F0 2.63(,w)C .13 +(hose value indicates the number of consecutive EOF charac-)237.84 706.8 R .901 +(ters that an interactive shell will r)72 718.8 R .901(ead befor)-.18 F 3.401 +(ee)-.18 G .901(xiting \255 an easy way to keep yourself fr)280.258 718.8 R +.902(om being)-.18 F 3.629(logged out accidentally)72 730.8 R 8.629(.T)-1.11 G +(he)198.697 730.8 Q F1(auto_resume)6.129 E F0 3.628 +(variable alters the way the shell tr)6.128 F 3.628(eats simple)-.18 F EP +%%Page: 7 7 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Palatino-Roman@0 SF 2.5(-7-)279.67 48 S .888 +(command names: if job contr)72 84 R .889 +(ol is active, and this variable is set, single-wor)-.18 F 3.389(ds)-.18 G .889 +(imple commands)426.431 84 R .843(without r)72 96 R(edir)-.18 E .843 +(ections cause the shell to \214rst look for and r)-.18 F .842 +(estart a suspended job with that name)-.18 F(befor)72 108 Q 2.5(es)-.18 G +(tarting a new pr)106.41 108 Q(ocess.)-.18 E/F1 10/Palatino-Bold@0 SF 2.5 +(4.6. Brace)72 132 R(Expansion)2.5 E F0 .608(Since sh of)97 147.6 R .609 +(fers no convenient way to generate arbitrary strings that shar)-.18 F 3.109 +(eac)-.18 G .609(ommon pr)440.711 147.6 R(e\214x)-.18 E .036(or suf)72 159.6 R +.036(\214x \(\214lename expansion r)-.18 F(equir)-.18 E .035 +(es that the \214lenames exist\), Bash implements)-.18 F/F2 10 +/Palatino-Italic@0 SF .035(brace expansion)2.535 F F0 2.535(,a)C .716 +(capability picked up fr)72 171.6 R .716(om csh.)-.18 F .717 +(Brace expansion is similar to \214lename expansion, but the strings)5.716 F +2.557(generated need not corr)72 183.6 R 2.557(espond to existing \214les.)-.18 +F 5.057(Ab)7.557 G 2.557(race expr)322.296 183.6 R 2.557 +(ession consists of an optional)-.18 F F2(pr)72 195.6 Q(eamble)-.18 E F0 4.412 +(,f)1.666 G 1.912(ollowed by a pair of braces enclosing a series of comma-sepa\ +rated strings, and an)120.028 195.6 R(optional)72 207.6 Q F2(postamble)2.842 E +F0 5.342(.T)1.666 G .342(he pr)167.49 207.6 R .342(eamble is pr)-.18 F .342 +(epended to each string within the braces, and the postam-)-.18 F +(ble is then appended to each r)72 219.6 Q(esulting string:)-.18 E/F3 10 +/Courier@0 SF 6($e)97 237.6 S(cho a{d,c,b}e)115 237.6 Q(ade ace abe)97 249.6 Q +F0 .898(As this example demonstrates, the r)72 271.2 R .899 +(esults of brace expansion ar)-.18 F 3.399(en)-.18 G .899 +(ot sorted, as they ar)374.176 271.2 R 3.399(eb)-.18 G 3.399<798c>477.961 271.2 +S(le-)492.97 271.2 Q(name expansion.)72 283.2 Q F1 2.5(4.7. Process)72 307.2 R +(Substitution)2.5 E F0 .692(On systems that can support it, Bash pr)97 322.8 R +.692(ovides a facility known as)-.18 F F2(pr)3.192 E .692(ocess substitution) +-.18 F F0 5.692(.P)C -.18(ro)491.44 322.8 S(-).18 E .479(cess substitution is \ +similar to command substitution in that its speci\214cation includes a command) +72 334.8 R .969(to execute, but the shell does not collect the command's outpu\ +t and insert it into the command)72 346.8 R 2.925(line. Rather)72 358.8 R 2.925 +(,B)-.74 G .425(ash opens a pipe to the command, which is r)136.65 358.8 R .426 +(un in the backgr)-.08 F 2.926(ound. The)-.18 F .426(shell uses)2.926 F .659 +(named pipes \(FIFOs\) or the)72 370.8 R F2(/dev/fd)3.158 E F0 .658 +(method of naming open \214les to expand the pr)4.824 F .658(ocess substitu-) +-.18 F .559(tion to a \214lename which connects to the pipe when opened.)72 +382.8 R .56(This \214lename becomes the r)5.56 F .56(esult of)-.18 F .302 +(the expansion.)72 394.8 R(Pr)5.302 E .302 +(ocess substitution can be used to compar)-.18 F 2.801(et)-.18 G .301 +(he outputs of two dif)344.255 394.8 R(fer)-.18 E .301(ent versions)-.18 F +(of an application as part of a r)72 406.8 Q(egr)-.18 E(ession test:)-.18 E F3 +6($c)97 424.8 S(mp <\(old_prog\) <\(new_prog\))115 424.8 Q F1 2.5(4.8. Prompt) +72 454.8 R(Customization)2.5 E F0 .745(One of the mor)97 470.4 R 3.245(ep)-.18 +G .745(opular interactive featur)179.97 470.4 R .745(es that Bash pr)-.18 F +.745(ovides is the ability to customize)-.18 F 1.946(the pr)72 482.4 R 4.446 +(ompt. Both)-.18 F F1($PS1)4.446 E F0(and)4.446 E F1($PS2,)4.446 E F0 1.945 +(the primary and secondary pr)4.445 F 1.945(ompts, ar)-.18 F 4.445(ee)-.18 G +1.945(xpanded befor)432.885 482.4 R(e)-.18 E 2.168(being displayed.)72 494.4 R +2.168(Parameter and variable expansion is performed when the pr)7.168 F 2.169 +(ompt string is)-.18 F .77 +(expanded, so any shell variable can be put into the pr)72 506.4 R .77 +(ompt \(e.g.,)-.18 F F1($SHL)3.27 E(VL)-.92 E F0 3.27(,w)C .77 +(hich indicates how)419.37 506.4 R .609(deeply the curr)72 518.4 R .609 +(ent shell is nested\).)-.18 F .609(Bash specially interpr)5.609 F .609 +(ets characters in the pr)-.18 F .61(ompt string pr)-.18 F(e-)-.18 E 1.224 +(ceded by a backslash.)72 530.4 R 1.224(Some of these backslash escapes ar) +6.224 F 3.724(er)-.18 G 1.224(eplaced with the curr)348.91 530.4 R 1.224 +(ent time, the)-.18 F .542(date, the curr)72 542.4 R .542(ent working dir)-.18 +F(ectory)-.18 E 3.042(,t)-1.11 G .542 +(he username, and the command number or history number)237.3 542.4 R .623 +(of the command being enter)72 554.4 R 3.123(ed. Ther)-.18 F 3.123(ei)-.18 G +3.122(se)249.038 554.4 S .622 +(ven a backslash escape to cause the shell to change its)261.19 554.4 R(pr)72 +566.4 Q 1.098(ompt when r)-.18 F 1.098(unning as r)-.08 F 1.098(oot after an) +-.18 F F2(su)3.599 E F0 6.099(.B)C(efor)273.626 566.4 Q 3.599(ep)-.18 G 1.099 +(rinting each primary pr)305.375 566.4 R 1.099(ompt, Bash expands)-.18 F 1.458 +(the variable)72 578.4 R F1($PROMPT_COMMAND)3.958 E F0 1.457 +(and, if it has a value, executes the expanded value as a)3.957 F 1.038 +(command, allowing additional pr)72 590.4 R 1.038(ompt customization.)-.18 F +1.038(For example, this assignment causes the)6.038 F(curr)72 602.4 Q .754 +(ent user)-.18 F 3.254(,t)-.74 G .754(he curr)134.598 602.4 R .753 +(ent host, the time, the last component of the curr)-.18 F .753 +(ent working dir)-.18 F(ectory)-.18 E 3.253(,t)-1.11 G(he)493.39 602.4 Q .813 +(level of shell nesting, and the history number of the curr)72 614.4 R .813 +(ent command to be embedded into the)-.18 F(primary pr)72 626.4 Q(ompt:)-.18 E +F3 6($P)97 644.4 S(S1='\\u@\\h [\\t] \\W\($SHLVL:\\!\)\\$ ')115 644.4 Q +(chet@odin [21:03:44] documentation\(2:636\)$ cd ..)97 656.4 Q +(chet@odin [21:03:54] src\(2:637\)$)97 668.4 Q F0 1.289 +(The string being assigned is surr)72 690 R 1.289 +(ounded by single quotes so that if it is exported, the value of)-.18 F F1 +($SHL)72 702 Q(VL)-.92 E F0(will be updated by a child shell:)2.5 E F3 +(chet@odin [21:17:35] src\(2:638\)$ export PS1)97 720 Q EP +%%Page: 8 8 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Palatino-Roman@0 SF 2.5(-8-)279.67 48 S/F1 10/Courier@0 SF +(chet@odin [21:17:40] src\(2:639\)$ bash)97 84 Q +(chet@odin [21:17:46] src\(3:696\)$)97 96 Q F0 .981 +(The \\$ escape is displayed as `)72 117.6 R(`)-.37 E/F2 10/Palatino-Bold@0 SF +($)A F0 1.721 -.37('' w)D .981(hen r).37 F .981(unning as a normal user)-.08 F +3.481(,b)-.74 G .981(ut as `)382.843 117.6 R(`)-.37 E F2(#)A F0 1.721 -.37 +('' w)D .982(hen r).37 F .982(unning as)-.08 F -.18(ro)72 129.6 S(ot.).18 E F2 +2.5(4.9. File)72 153.6 R(System V)2.5 E(iews)-.55 E F0 .42(Since Berkeley intr) +97 169.2 R .42(oduced symbolic links in 4.2 BSD, one of their most annoying pr) +-.18 F(operties)-.18 E .705(has been the `)72 181.2 R(`warping')-.37 E 3.205 +('t)-.37 G 3.205(oac)185.91 181.2 S .705(ompletely dif)207.22 181.2 R(fer)-.18 +E .705(ent ar)-.18 F .705(ea of the \214le system when using)-.18 F F2(cd)3.206 +E F0 3.206(,a)C .706(nd the)474.994 181.2 R -.18(re)72 193.2 S 2.292 +(sultant non-intuitive behavior of `).18 F(`)-.37 E F2 2.292(cd ..)B F0 -.37 +('')C 7.291(.T).37 G(he)282.761 193.2 Q/F3 9/Palatino-Roman@0 SF(UNIX)4.791 E +F0 2.291(kernel tr)4.791 F 2.291(eats symbolic links)-.18 F/F4 10 +/Palatino-Italic@0 SF(physically)4.791 E F0(.)1.666 E .225(When the kernel is \ +translating a pathname in which one component is a symbolic link, it r)72 205.2 +R(eplaces)-.18 E .81(all or part of the pathname while pr)72 217.2 R .81 +(ocessing the link.)-.18 F .81(If the contents of the symbolic link begin)5.81 +F .033(with a slash, the kernel r)72 229.2 R .033(eplaces the pathname entir) +-.18 F .033(ely; if not, the link contents r)-.18 F .034(eplace the curr)-.18 F +(ent)-.18 E 2.814(component. In)72 241.2 R .314 +(either case, the symbolic link is visible.)2.814 F .313 +(If the link value is an absolute pathname,)5.314 F +(the user \214nds himself in a completely dif)72 253.2 Q(fer)-.18 E +(ent part of the \214le system.)-.18 E 1.291(Bash pr)97 268.8 R 1.291(ovides a) +-.18 F F4(logical)3.791 E F0 1.291(view of the \214le system.)5.457 F 1.292 +(In this default mode, command and \214le-)6.292 F .727 +(name completion and builtin commands such as)72 280.8 R F2(cd)3.227 E F0(and) +3.227 E F2(pushd)3.227 E F0 .727(which change the curr)3.227 F .727(ent work-) +-.18 F .245(ing dir)72 292.8 R .245(ectory transpar)-.18 F .245 +(ently follow symbolic links as if they wer)-.18 F 2.746(ed)-.18 G(ir)365.822 +292.8 Q 2.746(ectories. The)-.18 F F2($PWD)2.746 E F0(variable,)2.746 E .562 +(which holds the shell's idea of the curr)72 304.8 R .561(ent working dir)-.18 +F(ectory)-.18 E 3.061(,d)-1.11 G .561(epends on the path used to r)354.924 +304.8 R(each)-.18 E(the dir)72 316.8 Q +(ectory rather than its physical location in the local \214le system hierar) +-.18 E(chy)-.18 E 5(.F)-1.11 G(or example:)427.35 316.8 Q F1 6($c)97 334.8 S 6 +(d/)115 334.8 S(usr/local/bin)133 334.8 Q 6($e)97 346.8 S(cho $PWD)115 346.8 Q +(/usr/local/bin)97 358.8 Q 6($p)97 370.8 S(wd)115 370.8 Q(/usr/local/bin)97 +382.8 Q 6($/)97 394.8 S(bin/pwd)115 394.8 Q(/net/share/sun4/local/bin)97 406.8 +Q 6($c)97 418.8 S 6(d.)115 418.8 S(.)133 418.8 Q 6($p)97 430.8 S(wd)115 430.8 Q +(/usr/local)97 442.8 Q 6($/)97 454.8 S(bin/pwd)115 454.8 Q +(/net/share/sun4/local)97 466.8 Q 6($c)97 478.8 S 6(d.)115 478.8 S(.)133 478.8 +Q 6($p)97 490.8 S(wd)115 490.8 Q(/usr)97 502.8 Q 6($/)97 514.8 S(bin/pwd)115 +514.8 Q(/usr)97 526.8 Q F0 .094(One pr)72 548.4 R .094 +(oblem with this, of course, arises when pr)-.18 F .095 +(ograms that do not understand the shell's logical)-.18 F .805 +(notion of the \214le system interpr)72 560.4 R .805(et `)-.18 F(`..')-.37 E +3.305('d)-.37 G(if)251.245 560.4 Q(fer)-.18 E(ently)-.18 E 5.805(.T)-1.11 G +.804(his generally happens when Bash completes)304.86 560.4 R 1.864 +(\214lenames containing `)72 572.4 R(`..')-.37 E 4.364('a)-.37 G(ccor)194.902 +572.4 Q 1.864(ding to a logical hierar)-.18 F 1.865(chy which does not corr) +-.18 F 1.865(espond to their)-.18 F .584(physical location.)72 584.4 R .583 +(For users who \214nd this tr)5.584 F .583(oublesome, a corr)-.18 F(esponding) +-.18 E F4(physical)3.083 E F0 .583(view of the \214le)4.749 F +(system is available:)72 596.4 Q F1 6($c)97 614.4 S 6(d/)115 614.4 S +(usr/local/bin)133 614.4 Q 6($p)97 626.4 S(wd)115 626.4 Q(/usr/local/bin)97 +638.4 Q 6($s)97 650.4 S(et -o physical)115 650.4 Q 6($p)97 662.4 S(wd)115 662.4 +Q(/net/share/sun4/local/bin)97 674.4 Q EP +%%Page: 9 9 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Palatino-Roman@0 SF 2.5(-9-)279.67 48 S/F1 10/Palatino-Bold@0 SF 2.5 +(4.10. Internationalization)72 84 R F0 .316(One of the most signi\214cant impr) +97 99.6 R .316(ovements in version 1.13 of Bash was the change to `)-.18 F +(`eight-)-.37 E .534(bit cleanliness')72 111.6 R 3.034('. Pr)-.37 F .533 +(evious versions used the eighth bit of characters to mark whether or not they) +-.18 F(wer)72 123.6 Q 3.109(eq)-.18 G .609(uoted when performing wor)102.399 +123.6 R 3.109(de)-.18 G 3.109(xpansions. While)244.335 123.6 R .609 +(this did not af)3.109 F .61(fect the majority of users,)-.18 F 1.249 +(most of whom used only seven-bit ASCII characters, some found it con\214ning.) +72 135.6 R 1.248(Beginning with)6.248 F .251 +(version 1.13, Bash implemented a dif)72 147.6 R(fer)-.18 E .251 +(ent quoting mechanism that did not alter the eighth bit of)-.18 F 3.228 +(characters. This)72 159.6 R .727(allowed Bash to manipulate \214les with `) +3.228 F(`odd')-.37 E 3.227('c)-.37 G .727(haracters in their names, but did) +356.825 159.6 R 1.924 +(nothing to help users enter those names, so version 1.13 intr)72 171.6 R 1.925 +(oduced changes to r)-.18 F 1.925(eadline that)-.18 F .658 +(made it eight-bit clean as well.)72 183.6 R .658(Options exist that for)5.658 +F .658(ce r)-.18 F .658(eadline to attach no special signi\214cance)-.18 F .834 +(to characters with the eighth bit set \(the default behavior is to convert th\ +ese characters to meta-)72 195.6 R(pr)72 207.6 Q 2.375(e\214xed key sequences\ +\) and to output these characters without conversion to meta-pr)-.18 F +(e\214xed)-.18 E 2.924(sequences. These)72 219.6 R .424 +(changes, along with the expansion of keymaps to a full eight bits, enable r) +2.924 F(ead-)-.18 E 1.025(line to work with most of the ISO-8859 family of cha\ +racter sets, used by many Eur)72 231.6 R 1.025(opean coun-)-.18 F(tries.)72 +243.6 Q F1(4.1)72 267.6 Q 2.5(1. POSIX)-.37 F(Mode)2.5 E F0 .834 +(Although Bash is intended to be POSIX.2 conformant, ther)97 283.2 R 3.334(ea) +-.18 G 1.194 -.18(re a)374.606 283.2 T -.18(re).18 G .835 +(as in which the default).18 F .622 +(behavior is not compatible with the standar)72 295.2 R 3.121(d. For)-.18 F +.621(users who wish to operate in a strict POSIX.2)3.121 F(envir)72 307.2 Q +2.453(onment, Bash implements a)-.18 F/F2 10/Palatino-Italic@0 SF 2.453 +(POSIX mode)4.953 F F0 7.453(.W)C 2.453 +(hen this mode is active, Bash modi\214es its)305.808 307.2 R .969 +(default operation wher)72 319.2 R 3.469(ei)-.18 G 3.469(td)186.917 319.2 S(if) +199.756 319.2 Q .969(fers fr)-.18 F .969(om POSIX.2 to match the standar)-.18 F +3.468(d. POSIX)-.18 F .968(mode is enter)3.468 F(ed)-.18 E .474 +(when Bash is started with the)72 331.2 R F1(-posix)2.974 E F0 2.974 +(option. This)2.974 F(featur)2.974 E 2.974(ei)-.18 G 2.975(sa)334.31 331.2 S +.475(lso available as an option to the)346.525 331.2 R F1(set)2.975 E F0 +(builtin,)72 343.2 Q F1 1.631(set -o posix)4.131 F F0 6.631(.F)C 1.631 +(or compatibility with other GNU softwar)177.054 343.2 R 4.131(et)-.18 G 1.63 +(hat attempts to be POSIX.2)379.02 343.2 R .627 +(compliant, Bash also enters POSIX mode if the variable)72 355.2 R F1($POSIXL) +3.128 E(Y_CORRECT)-.92 E F0 .628(is set when Bash)3.128 F .891 +(is started or assigned a value during execution.)72 367.2 R F1 +($POSIX_PEDANTIC)5.891 E F0 .89(is accepted as well, to be)3.391 F .445 +(compatible with some older GNU utilities.)72 379.2 R .446 +(When Bash is started in POSIX mode, for example, it)5.445 F(sour)72 391.2 Q +.342(ces the \214le named by the value of)-.18 F F1($ENV)2.842 E F0 .342 +(rather than the `)2.842 F(`normal')-.37 E 2.842('s)-.37 G .341 +(tartup \214les, and does not)392.566 391.2 R(allow r)72 403.2 Q(eserved wor) +-.18 E(ds to be aliased.)-.18 E F1 2.5(5. New)72 427.2 R +(Features and Future Plans)2.5 E F0(Ther)97 442.8 Q 4.157(ea)-.18 G 2.017 -.18 +(re s)131.457 442.8 T 1.658(everal featur).18 F 1.658(es intr)-.18 F 1.658 +(oduced in the curr)-.18 F 1.658(ent version of Bash, version 1.14, and a)-.18 +F .714(number under consideration for futur)72 454.8 R 3.214(er)-.18 G 3.214 +(eleases. This)253.61 454.8 R .714 +(section will brie\215y detail the new featur)3.214 F(es)-.18 E +(in version 1.14 and describe several featur)72 466.8 Q +(es that may appear in later versions.)-.18 E F1 2.5(5.1. New)72 490.8 R +(Features in Bash-1.14)2.5 E F0 1.303(The new featur)97 506.4 R 1.304 +(es available in Bash-1.14 answer several of the most common r)-.18 F 1.304 +(equests for)-.18 F 2.815(enhancements. Most)72 518.4 R(notably)2.815 E 2.815 +(,t)-1.11 G(her)209.475 518.4 Q 2.815(ei)-.18 G 2.815(sam)234.37 518.4 S .314 +(echanism for including non-visible character sequences)258.07 518.4 R 1.795 +(in pr)72 530.4 R 1.796 +(ompts, such as those which cause a terminal to print characters in dif)-.18 F +(fer)-.18 E 1.796(ent colors or in)-.18 F .354(standout mode.)72 542.4 R(Ther) +5.354 E 2.854(ew)-.18 G .354(as nothing pr)183.572 542.4 R .353 +(eventing the use of these sequences in earlier versions, but)-.18 F 2.113 +(the r)72 554.4 R 2.113(eadline r)-.18 F 2.114 +(edisplay algorithm assumed each character occupied physical scr)-.18 F 2.114 +(een space and)-.18 F(would wrap lines pr)72 566.4 Q(ematur)-.18 E(ely)-.18 E +(.)-1.11 E 1.183(Readline has a few new variables, several new bindable comman\ +ds, and some additional)97 582 R 1.399(emacs mode default key bindings.)72 594 +R 3.899(An)6.399 G 1.399(ew history sear)252.724 594 R 1.4 +(ch mode has been implemented: in this)-.18 F .033(mode, r)72 606 R .033 +(eadline sear)-.18 F .032(ches the history for lines beginning with the charac\ +ters between the beginning)-.18 F .452(of the curr)72 618 R .452 +(ent line and the cursor)-.18 F 5.452(.T)-.74 G .452(he existing r)233.074 618 +R .452(eadline incr)-.18 F .452(emental sear)-.18 F .453(ch commands no longer) +-.18 F .947(match identical lines mor)72 630 R 3.447(et)-.18 G .947(han once.) +198.068 630 R .946(Filename completion now expands variables in dir)5.947 F +(ectory)-.18 E 2.516(names. The)72 642 R .016(history expansion facilities ar) +2.516 F 2.516(en)-.18 G .017 +(ow nearly completely csh-compatible: missing modi-)270.006 642 R +(\214ers have been added and history substitution has been extended.)72 654 Q +.535(Several of the featur)97 669.6 R .535(es described earlier)-.18 F 3.035 +(,s)-.74 G .535(uch as)282.59 669.6 R F1 .534(set -o posix)3.035 F F0(and)3.034 +E F1($POSIX_PEDANTIC)3.034 E F0 3.034(,a)C -.18(re)495.44 669.6 S .749 +(new in version 1.14.)72 681.6 R(Ther)5.749 E 3.249(ei)-.18 G 3.249(san)199.455 +681.6 S .749(ew shell variable,)221.013 681.6 R F1(OSTYPE)3.249 E F0 3.25(,t)C +3.25(ow)351.81 681.6 S .75(hich Bash assigns a value that)368.86 681.6 R .417 +(identi\214es the version of)72 693.6 R/F3 9/Palatino-Roman@0 SF(UNIX)2.917 E +F0 .416(it's r)2.917 F .416(unning on \(gr)-.08 F .416(eat for putting ar)-.18 +F(chitectur)-.18 E .416(e-speci\214c binary dir)-.18 F(ec-)-.18 E 2.257 +(tories into the)72 705.6 R F1($P)4.757 E -.92(AT)-.74 G(H).92 E F0 4.757 +(\). T)B 2.257(wo variables have been r)-.9 F(enamed:)-.18 E F1($HISTCONTROL) +4.758 E F0 -.18(re)4.758 G(places).18 E F1($his-)4.758 E(tory_control)72 717.6 +Q F0 5.733(,a)C(nd)140.793 717.6 Q F1($HOSTFILE)5.733 E F0 -.18(re)5.732 G +(places).18 E F1($hostname_completion_\214le)5.732 E F0 8.232(.I)C 5.732(nb) +401.622 717.6 S 3.232(oth cases, the old)418.704 717.6 R 2.337(names ar)72 +729.6 R 4.837(ea)-.18 G 2.338(ccepted for backwar)128.914 729.6 R 2.338 +(ds compatibility)-.18 F 7.338(.T)-1.11 G 2.338(he ksh)311.846 729.6 R F2 +(select)4.838 E F0(constr)6.504 E 2.338(uct, which allows the)-.08 F EP +%%Page: 10 10 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Palatino-Roman@0 SF 2.5(-1)277.17 48 S 2.5(0-)288 48 S .565 +(generation of simple menus, has been implemented.)72 84 R .564 +(New capabilities have been added to exist-)5.565 F 1.446(ing variables:)72 96 +R/F1 10/Palatino-Bold@0 SF($auto_resume)3.946 E F0 1.446 +(can now take values of)3.946 F/F2 10/Palatino-Italic@0 SF(exact)3.947 E F0(or) +5.613 E F2(substring)3.947 E F0 3.947(,a)1.666 G(nd)405.913 96 Q F1 +($HISTCONTROL)3.947 E F0 1.8(understands the value)72 108 R F2(ignor)4.3 E +(eboth)-.18 E F0 4.3(,w)1.666 G 1.799(hich combines the two pr)238.106 108 R +1.799(eviously acceptable values.)-.18 F(The)6.799 E F1(dirs)72 120 Q F0 2.612 +(builtin has acquir)5.112 F 2.613 +(ed options to print out speci\214c members of the dir)-.18 F 2.613 +(ectory stack.)-.18 F(The)7.613 E F1($nolinks)72 132 Q F0 .177 +(variable, which for)2.677 F .176 +(ces a physical view of the \214le system, has been superseded by the)-.18 F F1 +2.676 E F0 1.486(option to the)72 144 R F1(set)3.986 E F0 1.486 +(builtin \(equivalent to)3.986 F F1 1.486(set -o physical)3.986 F F0 1.486 +(\); the variable is r)B 1.486(etained for backwar)-.18 F(ds)-.18 E +(compatibility)72 156 Q 5.564(.T)-1.11 G .564(he version string contained in) +144.074 156 R F1($BASH_VERSION)3.064 E F0 .563(now includes an indication of) +3.064 F .501(the patch level as well as the `)72 168 R .501(`build version') +-.37 F 3.001('. Some)-.37 F .502(little-used featur)3.001 F .502 +(es have been r)-.18 F 3.002(emoved: the)-.18 F F1(bye)72 180 Q F0 .943 +(synonym for)3.443 F F1(exit)3.443 E F0 .943(and the)3.443 F F1($NO_PROMPT_V) +3.443 E(ARS)-1.29 E F0 .943(variable ar)3.443 F 3.443(eg)-.18 G 3.443 +(one. Ther)379.707 180 R 3.443(ei)-.18 G 3.443(sn)435.873 180 S .942(ow an or) +449.376 180 R(ga-)-.18 E(nized test suite that can be r)72 192 Q(un as a r)-.08 +E(egr)-.18 E(ession test when building a new version of Bash.)-.18 E 1.42 +(The documentation has been thor)97 207.6 R 1.421(oughly over)-.18 F 1.421 +(hauled: ther)-.18 F 3.921(ei)-.18 G 3.921(san)372.184 207.6 S 1.421 +(ew manual page on the)395.086 207.6 R -.18(re)72 219.6 S 1.142 +(adline library and the).18 F F2(info)3.642 E F0 1.142 +(\214le has been updated to r)3.642 F 1.142(e\215ect the curr)-.18 F 1.142 +(ent version.)-.18 F 1.141(As always, as)6.142 F +(many bugs as possible have been \214xed, although some sur)72 231.6 Q(ely r) +-.18 E(emain.)-.18 E F1 2.5(5.2. Other)72 255.6 R(Features)2.5 E F0(Ther)97 +271.2 Q 3.692(ea)-.18 G 1.552 -.18(re a f)130.992 271.2 T 1.192(ew featur).18 F +1.192(es that I hope to include in later Bash r)-.18 F 3.693(eleases. Some)-.18 +F(ar)3.693 E 3.693(eb)-.18 G 1.193(ased on)468.887 271.2 R(work alr)72 283.2 Q +(eady done in other shells.)-.18 E 2.717 +(In addition to simple variables, a futur)97 298.8 R 5.217(er)-.18 G 2.716 +(elease of Bash will include one-dimensional)297.159 298.8 R .575 +(arrays, using the ksh implementation of arrays as a model.)72 310.8 R .575 +(Additions to the ksh syntax, such as)5.575 F F2(varname)72 322.8 Q F0 1.116 +(=\( ... \) to assign a list of wor)B 1.115(ds dir)-.18 F 1.115 +(ectly to an array and a mechanism to allow the)-.18 F F1(read)3.615 E F0 .492 +(builtin to r)72 334.8 R .492(ead a list of values dir)-.18 F .493 +(ectly into an array)-.18 F 2.993(,w)-1.11 G .493(ould be desirable.)313.615 +334.8 R .493(Given those extensions,)5.493 F .621(the ksh)72 346.8 R F1 .621 +(set \255A)3.121 F F0 .621(syntax may not be worth supporting \(the)3.121 F F1 +3.12 E F0 .62(option assigns a list of values to an)3.12 F(array)72 358.8 +Q 2.5(,b)-1.11 G(ut is a rather peculiar special case\).)104.88 358.8 Q .522 +(Some shells include a means of)97 374.4 R F2(pr)3.022 E(ogrammable)-.18 E F0 +(wor)3.022 E 3.022(dc)-.18 G .522(ompletion, wher)331.796 374.4 R 3.023(et)-.18 +G .523(he user speci\214es on)416.561 374.4 R 3.291(ap)72 386.4 S(er)86.301 +386.4 Q .791(-command basis how the ar)-.18 F .791(guments of the command ar) +-.18 F 3.291(et)-.18 G 3.29(ob)358.98 386.4 S 3.29(et)373.26 386.4 S -.18(re) +384.6 386.4 S .79(ated when completion is).18 F .588 +(attempted: as \214lenames, hostnames, executable \214les, and so on.)72 398.4 +R .589(The other aspects of the curr)5.589 F(ent)-.18 E .649 +(Bash implementation could r)72 410.4 R .648 +(emain as-is; the existing heuristics would still be valid.)-.18 F .648 +(Only when)5.648 F 2.136(completing the ar)72 422.4 R 2.137 +(guments to a simple command would the pr)-.18 F 2.137 +(ogrammable completion be in)-.18 F(ef)72 434.4 Q(fect.)-.18 E .223 +(It would also be nice to give the user \214ner)97 450 R .223(-grained contr) +-.18 F .222(ol over which commands ar)-.18 F 2.722(es)-.18 G(aved)482.45 450 Q +1.603(onto the history list.)72 462 R 1.604(One pr)6.604 F 1.604 +(oposal is for a variable, tentatively named)-.18 F F1(HISTIGNORE)4.104 E F0 +4.104(,w)C(hich)485.01 462 Q .471 +(would contain a colon-separated list of commands.)72 474 R .471 +(Lines beginning with these commands, after)5.471 F .056(the r)72 486 R .056 +(estrictions of)-.18 F F1($HISTCONTROL)2.556 E F0 .057 +(have been applied, would not be placed onto the history list.)2.556 F 1.246(T\ +he shell pattern-matching capabilities could also be available when specifying\ + the contents of)72 498 R F1($HISTIGNORE)72 510 Q F0(.)A .612 +(One thing that newer shells such as)97 525.6 R F1(wksh)3.112 E F0 .612 +(\(also known as)3.112 F F1(dtksh)3.112 E F0 3.112(\)p)C -.18(ro)397.502 525.6 +S .612(vide is a command to).18 F 1.826 +(dynamically load code implementing additional builtin commands into a r)72 +537.6 R 1.826(unning shell.)-.08 F(This)6.826 E 1.2 +(new builtin would take an object \214le or shar)72 549.6 R 1.2 +(ed library implementing the `)-.18 F(`body')-.37 E 3.7('o)-.37 G 3.7(ft)450.03 +549.6 S 1.2(he builtin)460.32 549.6 R(\()72 561.6 Q F2(xxx_builtin\(\))A F0 +1.094(for those familiar with Bash internals\) and a str)3.595 F(uctur)-.08 E +3.594(ec)-.18 G 1.094(ontaining the name of the)386.094 561.6 R .731 +(new command, the function to call when the new builtin is invoked \(pr)72 +573.6 R .731(esumably de\214ned in the)-.18 F(shar)72 585.6 Q .881 +(ed object speci\214ed as an ar)-.18 F .881 +(gument\), and the documentation to be printed by the)-.18 F F1(help)3.38 E F0 +(com-)3.38 E .974(mand \(possibly pr)72 597.6 R .974(esent in the shar)-.18 F +.975(ed object as well\).)-.18 F .975(It would manage the details of extending) +5.975 F(the internal table of builtins.)72 609.6 Q 2.641(Af)97 625.2 S .141 +(ew other builtins would also be desirable: two ar)110.751 625.2 R 2.641(et) +-.18 G .14(he POSIX.2)337.93 625.2 R F1(getconf)2.64 E F0 .14(command, which) +2.64 F 1.518(prints the values of system con\214guration variables de\214ned b\ +y POSIX.2, and a)72 637.2 R F1(disown)4.019 E F0(builtin,)4.019 E .93 +(which causes a shell r)72 649.2 R .929(unning with job contr)-.08 F .929 +(ol active to `)-.18 F(`for)-.37 E .929(get about')-.18 F 3.429('o)-.37 G .929 +(ne or mor)397.563 649.2 R 3.429(eb)-.18 G(ackgr)456.25 649.2 Q(ound)-.18 E +.095(jobs in its internal jobs table.)72 661.2 R(Using)5.095 E F1(getconf)2.595 +E F0 2.595(,f)C .095(or example, a user could r)274.02 661.2 R .096 +(etrieve a value for)-.18 F F1($P)2.596 E -.92(AT)-.74 G(H).92 E F0 .73 +(guaranteed to \214nd all of the POSIX standar)72 673.2 R 3.23(du)-.18 G .73 +(tilities, or \214nd out how long \214lenames may be in)282.86 673.2 R +(the \214le system containing a speci\214ed dir)72 685.2 Q(ectory)-.18 E(.) +-1.11 E(Ther)97 700.8 Q 4.171(ea)-.18 G 2.031 -.18(re n)131.471 700.8 T 4.171 +(oi).18 G 1.671(mplementation timetables for any of these featur)162.563 700.8 +R 1.672(es, nor ar)-.18 F 4.172(et)-.18 G(her)443.888 700.8 Q 4.172(ec)-.18 G +(oncr)471.67 700.8 Q(ete)-.18 E .034(plans to include them.)72 712.8 R .034 +(If anyone has comments on these pr)5.034 F .034(oposals, feel fr)-.18 F .033 +(ee to send me electr)-.18 F(onic)-.18 E(mail.)72 724.8 Q EP +%%Page: 11 11 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Palatino-Roman@0 SF 2.5(-1)277.445 48 S 2.5(1-)287.725 48 S/F1 10 +/Palatino-Bold@0 SF 2.5(6. Re\215ections)72 84 R(and Lessons Learned)2.5 E F0 +1.503(The lesson that has been r)97 99.6 R 1.504 +(epeated most often during Bash development is that ther)-.18 F 4.004(ea)-.18 G +-.18(re)495.44 99.6 S 1.052 +(dark corners in the Bourne Shell, and people use all of them.)72 111.6 R 1.051 +(In the original description of the)6.052 F 1.37 +(Bourne shell, quoting and the shell grammar ar)72 123.6 R 3.87(eb)-.18 G 1.37 +(oth poorly speci\214ed and incomplete; subse-)304.61 123.6 R .387 +(quent descriptions have not helped much.)72 135.6 R .387(The grammar pr)5.387 +F .386(esented in Bourne's paper describing)-.18 F .059 +(the shell distributed with the Seventh Edition of)72 147.6 R/F2 9 +/Palatino-Roman@0 SF(UNIX)2.559 E F0 2.559<8769>C 2.559(ss)321.048 147.6 S +2.559(of)332.087 147.6 S .059(ar of)343.436 147.6 R 2.559(ft)-.18 G .059 +(hat it does not allow the com-)372.704 147.6 R(mand)72 159.6 Q/F3 10/Courier@0 +SF(who|wc)2.5 E F0 5(.I)C 2.5(nf)147.13 159.6 S(act, as T)158.78 159.6 Q +(om Duf)-.92 E 2.5(fs)-.18 G(tates:)237.21 159.6 Q .985(Nobody r)97 175.2 R +.984(eally knows what the Bourne shell's grammar is.)-.18 F .984 +(Even examination of the)5.984 F(sour)97 187.2 Q(ce code is little help.\210) +-.18 E .782(The POSIX.2 standar)72 202.8 R 3.282(di)-.18 G .782(ncludes a) +177.496 202.8 R/F4 10/Palatino-Italic@0 SF(yacc)3.282 E F0 .782 +(grammar that comes close to capturing the Bourne shell's)3.282 F(behavior)72 +214.8 Q 3.67(,b)-.74 G 1.17(ut it disallows some constr)122.07 214.8 R 1.169 +(ucts which sh accepts without complaint \255 and ther)-.08 F 3.669(ea)-.18 G +-.18(re)495.44 214.8 S .223(scripts out ther)72 226.8 R 2.723(et)-.18 G .223 +(hat use them.)149.659 226.8 R .224(It took a few versions and several bug r) +5.223 F .224(eports befor)-.18 F 2.724(eB)-.18 G .224(ash imple-)457.436 226.8 +R .427(mented sh-compatible quoting, and ther)72 238.8 R 2.927(ea)-.18 G .787 +-.18(re s)264.265 238.8 T .426(till some `).18 F(`legal')-.37 E 2.926('s)-.37 G +2.926(hc)359.87 238.8 S(onstr)373.056 238.8 Q .426(ucts which Bash \215ags as) +-.08 F(syntax err)72 250.8 Q 2.5(ors. Complete)-.18 F +(sh compatibility is a tough nut.)2.5 E .314 +(The shell is bigger and slower than I would like, though the curr)97 266.4 R +.314(ent version is substantially)-.18 F 1.507(faster than pr)72 278.4 R +(eviously)-.18 E 6.507(.T)-1.11 G 1.507(he r)185.841 278.4 R 1.507 +(eadline library could stand a substantial r)-.18 F 4.006(ewrite. A)-.18 F +(hand-written)4.006 E .574(parser to r)72 290.4 R .574(eplace the curr)-.18 F +(ent)-.18 E F4(yacc)3.074 E F0 .574(-generated one would pr)B .574(obably r) +-.18 F .575(esult in a speedup, and would)-.18 F 1.865(solve one glaring pr)72 +302.4 R 4.365(oblem: the)-.18 F 1.864(shell could parse commands in `)4.364 F +(`$\(...\)')-.37 E 4.364('c)-.37 G(onstr)408.058 302.4 Q 1.864(ucts as they ar) +-.08 F(e)-.18 E(enter)72 314.4 Q(ed, rather than r)-.18 E(eporting err)-.18 E +(ors when the constr)-.18 E(uct is expanded.)-.08 E .198(As always, ther)97 330 +R 2.698(ei)-.18 G 2.698(ss)176.004 330 S .198(ome chaf)187.182 330 R 2.699(ft) +-.18 G 2.699(og)236.659 330 S 2.699(ow)250.378 330 S .199(ith the wheat.) +266.877 330 R(Ar)5.199 E .199(eas of duplicated functionality need)-.18 F 1.009 +(to be cleaned up.)72 342 R(Ther)6.009 E 3.509(ea)-.18 G 1.369 -.18(re s) +189.785 342 T 1.009(everal cases wher).18 F 3.509(eB)-.18 G 1.009(ash tr) +300.041 342 R 1.008(eats a variable specially to enable func-)-.18 F 1.316 +(tionality available another way \()72 354 R F1($notify)A F0(vs.)3.816 E F1 +1.316(set -o notify)6.316 F F0(and)3.816 E F1($nolinks)3.816 E F0(vs.)3.816 E +F1 1.316(set -o physical)3.816 F F0 3.816(,f)C(or)494.59 354 Q .925 +(instance\); the special tr)72 366 R .925 +(eatment of the variable name should pr)-.18 F .925(obably be r)-.18 F 3.425 +(emoved. A)-.18 F .925(few mor)3.425 F(e)-.18 E 2.296(things could stand r)72 +378 R 2.296(emoval; the)-.18 F F1($allow_null_glob_expansion)4.796 E F0(and) +4.796 E F1($glob_dot_\214lenames)4.797 E F0(vari-)4.797 E .728(ables ar)72 390 +R 3.228(eo)-.18 G 3.228(fp)119.946 390 S .728(articularly questionable value.) +132.514 390 R(The)5.728 E F1($[...])3.227 E F0 .727 +(arithmetic evaluation syntax is r)3.227 F(edundant)-.18 E .804 +(now that the POSIX-mandated)72 402 R F1($\(\(...\)\))3.304 E F0(constr)3.304 E +.805(uct has been implemented, and could be deleted.)-.08 F(It)5.805 E 1.056 +(would be nice if the text output by the)72 414 R F1(help)3.556 E F0 1.055 +(builtin wer)3.556 F 3.555(ee)-.18 G 1.055 +(xternal to the shell rather than com-)339.79 414 R 1.365(piled into it.)72 426 +R 1.365(The behavior enabled by)6.365 F F1($command_oriented_history)3.865 E F0 +3.865(,w)C 1.365(hich causes the shell to)397.55 426 R 1.047 +(attempt to save all lines of a multi-line command in a single history entry)72 +438 R 3.547(,s)-1.11 G 1.047(hould be made the)418.109 438 R +(default and the variable r)72 450 Q(emoved.)-.18 E F1 2.5(7. A)72 474 R +(vailability)-.7 E F0 6.17(As with all other GNU softwar)97 489.6 R 6.17 +(e, Bash is available for anonymous FTP fr)-.18 F(om)-.18 E F4(pr)72 501.6 Q +(ep.ai.mit.edu:/pub/gnu)-.18 E F0 2.136(and fr)6.302 F 2.136 +(om other GNU softwar)-.18 F 4.635(em)-.18 G(irr)334.21 501.6 Q 2.135 +(or sites.)-.18 F 2.135(The curr)7.135 F 2.135(ent version is in)-.18 F F4 +(bash-1.14.1.tar)72 513.6 Q(.gz)-.74 E F0 .241(in that dir)4.407 F(ectory)-.18 +E 5.241(.U)-1.11 G(se)234.27 513.6 Q F4(ar)2.741 E(chie)-.18 E F0 .241 +(to \214nd the near)4.407 F .241(est ar)-.18 F .241(chive site.)-.18 F .242 +(The latest version is)5.241 F .295(always available for FTP fr)72 525.6 R(om) +-.18 E F4(bash.CWRU.Edu:/pub/dist.)2.795 E F0 .295 +(Bash documentation is available for FTP)4.461 F(fr)72 537.6 Q(om)-.18 E F4 +(bash.CWRU.Edu:/pub/bash.)2.5 E F0 1.207(The Fr)97 553.2 R 1.207(ee Softwar) +-.18 F 3.707(eF)-.18 G 1.207 +(oundation sells tapes and CD-ROMs containing Bash; send electr)188.531 553.2 R +(onic)-.18 E(mail to)72 565.2 Q F3(gnu@prep.ai.mit.edu)2.5 E F0(or call)2.5 E +F3(+1-617-876-3296)2.5 E F0(for mor)2.5 E 2.5(ei)-.18 G(nformation.)387.54 +565.2 Q .283(Bash is also distributed with several versions of)97 580.8 R F2 +(UNIX)2.782 E F0 .282(-compatible systems.)B .282(It is included as)5.282 F +.624(/bin/sh and /bin/bash on several Linux distributions \(mor)72 592.8 R +3.124(ea)-.18 G .624(bout the dif)353.78 592.8 R(fer)-.18 E .624 +(ence in a moment\),)-.18 F(and as contributed softwar)72 604.8 Q 2.5(ei)-.18 G +2.5(nB)200.83 604.8 S(SDI's BSD/386* and Fr)215.26 604.8 Q(eeBSD.)-.18 E .529 +(The Linux distribution deserves special mention.)97 620.4 R(Ther)5.529 E 3.029 +(ea)-.18 G .889 -.18(re t)354.414 620.4 T .529(wo con\214gurations included in) +.18 F .037(the standar)72 632.4 R 2.537(dB)-.18 G .038(ash distribution: a `) +136.364 632.4 R(`normal')-.37 E 2.538('c)-.37 G .038 +(on\214guration, in which all of the standar)268.256 632.4 R 2.538(df)-.18 G +(eatur)456.022 632.4 Q .038(es ar)-.18 F(e)-.18 E .451(included, and a `)72 +644.4 R(`minimal')-.37 E 2.951('c)-.37 G .451 +(on\214guration, which omits job contr)199.384 644.4 R .451 +(ol, aliases, history and command)-.18 F .356(line editing, the dir)72 656.4 R +.356(ectory stack and)-.18 F F1(pushd/popd/dirs,)2.856 E F0(pr)2.856 E .357 +(ocess substitution, pr)-.18 F .357(ompt string special)-.18 F .32 LW 76 666.4 +72 666.4 DL 80 666.4 76 666.4 DL 84 666.4 80 666.4 DL 88 666.4 84 666.4 DL 92 +666.4 88 666.4 DL 96 666.4 92 666.4 DL 100 666.4 96 666.4 DL 104 666.4 100 +666.4 DL 108 666.4 104 666.4 DL 112 666.4 108 666.4 DL 116 666.4 112 666.4 DL +120 666.4 116 666.4 DL 124 666.4 120 666.4 DL 128 666.4 124 666.4 DL 132 666.4 +128 666.4 DL 136 666.4 132 666.4 DL 140 666.4 136 666.4 DL 144 666.4 140 666.4 +DL/F5 8/Palatino-Roman@0 SF .42(\207S. R. Bourne, `)72 676.4 R .42(`UNIX T) +-.296 F .42(ime-Sharing System:)-.44 F .42(The UNIX Shell')4.42 F(',)-.296 E/F6 +8/Palatino-Italic@0 SF .42(Bell System T)2.42 F .42(echnical Journal)-.888 F F5 +2.42(,5)C .42(7\(6\), July-August,)405.004 676.4 R(1978, pp. 1971-1990.)72 +686.4 Q<8854>72 696.4 Q .209(om Duf)-.736 F .209(f, `)-.144 F .209 +(`Rc \255 A Shell for Plan 9 and)-.296 F/F7 7/Palatino-Roman@0 SF(UNIX)2.209 E +F5(systems')2.209 E(',)-.296 E F6(Pr)2.209 E .208 +(oc. of the Summer 1990 EUUG Confer)-.144 F(ence)-.144 E F5 2.208(,L)C .208 +(ondon, Ju-)430.704 696.4 R(ly)72 706.4 Q 2(,1)-.888 G(990, pp. 21-33.)85.888 +706.4 Q(*BSD/386 is a trademark of Berkeley Softwar)72 716.4 Q 2(eD)-.144 G +(esign, Inc.)243.472 716.4 Q EP +%%Page: 12 12 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Palatino-Roman@0 SF 2.5(-1)277.17 48 S 2.5(2-)288 48 S 1.319 +(character decoding, and the)72 84 R/F1 10/Palatino-Italic@0 SF(select)3.818 E +F0(constr)5.484 E 3.818(uct. This)-.08 F 1.318 +(minimal version is designed to be a dr)3.818 F(op-in)-.18 E -.18(re)72 96 S +1.292(placement for the traditional).18 F/F2 9/Palatino-Roman@0 SF(UNIX)3.792 E +F0 1.293(/bin/sh, and is included as the Linux /bin/sh in several)3.792 F +(packagings.)72 108 Q/F3 10/Palatino-Bold@0 SF 2.5(8. Conclusion)72 132 R F0 +.19(Bash is a worthy successor to sh.)97 147.6 R .19(It is suf)5.19 F .19 +(\214ciently portable to r)-.18 F .19(un on nearly every version of)-.08 F F2 +(UNIX)72 159.6 Q F0(fr)2.929 E .429(om 4.3 BSD to SVR4.2, and several)-.18 F F2 +(UNIX)2.93 E F0 2.93(workalikes. It)2.93 F .43(is r)2.93 F .43 +(obust enough to r)-.18 F .43(eplace sh on)-.18 F 1.22 +(most of those systems, and pr)72 171.6 R 1.219(ovides mor)-.18 F 3.719(ef)-.18 +G(unctionality)271.896 171.6 Q 6.219(.I)-1.11 G 3.719(th)336.255 171.6 S 1.219 +(as several thousand r)349.054 171.6 R 1.219(egular users,)-.18 F .052(and the\ +ir feedback has helped to make it as good as it is today \255 a testament to t\ +he bene\214ts of fr)72 183.6 R(ee)-.18 E(softwar)72 195.6 Q(e.)-.18 E EP +%%Trailer +end +%%EOF diff --git a/bash-20060316/doc/article.txt b/bash-20060316/doc/article.txt new file mode 100644 index 000000000..c19ff9248 --- /dev/null +++ b/bash-20060316/doc/article.txt @@ -0,0 +1,1111 @@ + + + + + + + + + + Bash - The GNU shell* + + + Chet Ramey + Case Western Reserve University + chet@po.cwru.edu + + + + + + +_1. _I_n_t_r_o_d_u_c_t_i_o_n + + _B_a_s_h is the shell, or command language interpreter, +that will appear in the GNU operating system. The name is +an acronym for the "Bourne-Again SHell", a pun on Steve +Bourne, the author of the direct ancestor of the current +UNIX|- shell /_b_i_n/_s_h, which appeared in the Seventh Edition +Bell Labs Research version of UNIX. + + Bash is an sh-compatible shell that incorporates useful +features from the Korn shell (ksh) and the C shell (csh), +described later in this article. It is ultimately intended +to be a conformant implementation of the IEEE POSIX Shell +and Utilities specification (IEEE Working Group 1003.2). It +offers functional improvements over sh for both interactive +and programming use. + + While the GNU operating system will most likely include +a version of the Berkeley shell csh, Bash will be the +default shell. Like other GNU software, Bash is quite port- +able. It currently runs on nearly every version of UNIX and +a few other operating systems - an independently-supported +port exists for OS/2, and there are rumors of ports to DOS +and Windows NT. Ports to UNIX-like systems such as QNX and +Minix are part of the distribution. + + The original author of Bash was Brian Fox, an employee +of the Free Software Foundation. The current developer and +maintainer is Chet Ramey, a volunteer who works at Case +Western Reserve University. + +_2. _W_h_a_t'_s _P_O_S_I_X, _a_n_y_w_a_y? + + _P_O_S_I_X is a name originally coined by Richard Stallman +_________________________ +*An earlier version of this article appeared in The +Linux Journal. +|- UNIX is a trademark of Bell Laboratories. + + + + + October 28, 1994 + + + + + + - 2 - + + +for a family of open system standards based on UNIX. There +are a number of aspects of UNIX under consideration for +standardization, from the basic system services at the sys- +tem call and C library level to applications and tools to +system administration and management. Each area of stan- +dardization is assigned to a working group in the 1003 +series. + + The POSIX Shell and Utilities standard has been +developed by IEEE Working Group 1003.2 (POSIX.2).|= It con- +centrates on the command interpreter interface and utility +programs commonly executed from the command line or by other +programs. An initial version of the standard has been +approved and published by the IEEE, and work is currently +underway to update it. There are four primary areas of work +in the 1003.2 standard: + +o+ Aspects of the shell's syntax and command language. A + number of special builtins such as _c_d and _e_x_e_c are + being specified as part of the shell, since their func- + tionality usually cannot be implemented by a separate + executable; + +o+ A set of utilities to be called by shell scripts and + applications. Examples are programs like _s_e_d, _t_r, and + _a_w_k. Utilities commonly implemented as shell builtins + are described in this section, such as _t_e_s_t and _k_i_l_l. + An expansion of this section's scope, termed the User + Portability Extension, or UPE, has standardized + interactive programs such as _v_i and _m_a_i_l_x; + +o+ A group of functional interfaces to services provided + by the shell, such as the traditional system() C + library function. There are functions to perform shell + word expansions, perform filename expansion (_g_l_o_b_b_i_n_g), + obtain values of POSIX.2 system configuration vari- + ables, retrieve values of environment variables + (getenv()), _a_n_d _o_t_h_e_r _s_e_r_v_i_c_e_s; + +o+ A suite of "development" utilities such as _c_8_9 (the + POSIX.2 version of _c_c), and _y_a_c_c. + + Bash is concerned with the aspects of the shell's +behavior defined by POSIX.2. The shell command language has +of course been standardized, including the basic flow con- +trol and program execution constructs, I/O redirection and +pipelining, argument handling, variable expansion, and quot- +ing. The _s_p_e_c_i_a_l builtins, which must be implemented as +part of the shell to provide the desired functionality, are +_________________________ +|=IEEE, _I_E_E_E _S_t_a_n_d_a_r_d _f_o_r _I_n_f_o_r_m_a_t_i_o_n _T_e_c_h_n_o_l_o_g_y -- +_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, 1992. + + + + + October 28, 1994 + + + + + + - 3 - + + +specified as being part of the shell; examples of these are +_e_v_a_l and _e_x_p_o_r_t. Other utilities appear in the sections of +POSIX.2 not devoted to the shell which are commonly (and in +some cases must be) implemented as builtin commands, such as +_r_e_a_d and _t_e_s_t. POSIX.2 also specifies aspects of the +shell's interactive behavior as part of the UPE, including +job control and command line editing. Interestingly enough, +only _v_i-style line editing commands have been standardized; +_e_m_a_c_s editing commands were left out due to objections. + + While POSIX.2 includes much of what the shell has trad- +itionally provided, some important things have been omitted +as being "beyond its scope." There is, for instance, no +mention of a difference between a _l_o_g_i_n shell and any other +interactive shell (since POSIX.2 does not specify a login +program). No fixed startup files are defined, either - the +standard does not mention ._p_r_o_f_i_l_e. + +_3. _B_a_s_i_c _B_a_s_h _f_e_a_t_u_r_e_s + + Since the Bourne shell provides Bash with most of its +philosophical underpinnings, Bash inherits most of its +features and functionality from sh. Bash implements all of +the traditional sh flow control constructs (_f_o_r, _i_f, _w_h_i_l_e, +etc.). All of the Bourne shell builtins, including those +not specified in the POSIX.2 standard, appear in Bash. +Shell _f_u_n_c_t_i_o_n_s, introduced in the SVR2 version of the +Bourne shell, are similar to shell scripts, but are defined +using a special syntax and are executed in the same process +as the calling shell. Bash has shell functions which behave +in a fashion upward-compatible with sh functions. There are +certain shell variables that Bash interprets in the same way +as sh, such as _P_S_1, _I_F_S, and _P_A_T_H. Bash implements essen- +tially the same grammar, parameter and variable expansion +semantics, redirection, and quoting as the Bourne shell. +Where differences appear between the POSIX.2 standard and +traditional sh behavior, Bash follows POSIX. + + The Korn Shell (ksh) is a descendent of the Bourne +shell written at AT&T Bell Laboratories by David Korn|-. It +provides a number of useful features that POSIX and Bash +have adopted. Many of the interactive facilities in POSIX.2 +have their roots in the ksh: for example, the POSIX and ksh +job control facilities are nearly identical. Bash includes +features from the Korn Shell for both interactive use and +shell programming. For programming, Bash provides variables +such as _R_A_N_D_O_M and _R_E_P_L_Y, the _t_y_p_e_s_e_t builtin, the ability +to remove substrings from variables based on patterns, and +shell arithmetic. _R_A_N_D_O_M expands to a random number each +time it is referenced; assigning a value to _R_A_N_D_O_M seeds the +_________________________ +|-Morris Bolsky and David Korn, _T_h_e _K_o_r_n_S_h_e_l_l _C_o_m_m_a_n_d +_a_n_d _P_r_o_g_r_a_m_m_i_n_g _L_a_n_g_u_a_g_e, Prentice Hall, 1989. + + + + + October 28, 1994 + + + + + + - 4 - + + +random number generator. _R_E_P_L_Y is the default variable used +by the _r_e_a_d builtin when no variable names are supplied as +arguments. The _t_y_p_e_s_e_t builtin is used to define variables +and give them attributes such as readonly. Bash arithmetic +allows the evaluation of an expression and the substitution +of the result. Shell variables may be used as operands, and +the result of an expression may be assigned to a variable. +Nearly all of the operators from the C language are avail- +able, with the same precedence rules: +9 $ echo $((3 + 5 * 32)) + 163 +9 +For interactive use, Bash implements ksh-style aliases and +builtins such as _f_c (discussed below) and _j_o_b_s. Bash +aliases allow a string to be substituted for a command name. +They can be used to create a mnemonic for a UNIX command +name (alias del=rm), to expand a single word to a complex +command (alias news='xterm -g 80x45 -title trn -e trn -e -S1 +-N &'), or to ensure that a command is invoked with a basic +set of options (alias ls="/bin/ls -F"). + + The C shell (csh)|-, originally written by Bill Joy +while at Berkeley, is widely used and quite popular for its +interactive facilities. Bash includes a csh-compatible his- +tory expansion mechanism ("! history"), brace expansion, +access to a stack of directories via the _p_u_s_h_d, _p_o_p_d, and +_d_i_r_s builtins, and tilde expansion, to generate users' home +directories. Tilde expansion has also been adopted by both +the Korn Shell and POSIX.2. + + There were certain areas in which POSIX.2 felt stan- +dardization was necessary, but no existing implementation +provided the proper behavior. The working group invented +and standardized functionality in these areas, which Bash +implements. The _c_o_m_m_a_n_d builtin was invented so that shell +functions could be written to replace builtins; it makes the +capabilities of the builtin available to the function. The +reserved word "!" was added to negate the return value of a +command or pipeline; it was nearly impossible to express "if +not x" cleanly using the sh language. There exist multiple +incompatible implementations of the _t_e_s_t builtin, which +tests files for type and other attributes and performs +arithmetic and string comparisons. POSIX considered none of +these correct, so the standard behavior was specified in +terms of the number of arguments to the command. POSIX.2 +dictates exactly what will happen when four or fewer argu- +ments are given to _t_e_s_t, and leaves the behavior undefined +when more arguments are supplied. Bash uses the POSIX.2 +_________________________ +|-Bill Joy, An Introduction to the C Shell, _U_N_I_X _U_s_e_r'_s +_S_u_p_p_l_e_m_e_n_t_a_r_y _D_o_c_u_m_e_n_t_s, University of California at +Berkeley, 1986. + + + + + October 28, 1994 + + + + + + - 5 - + + +algorithm, which was conceived by David Korn. + +_3._1. _F_e_a_t_u_r_e_s _n_o_t _i_n _t_h_e _B_o_u_r_n_e _S_h_e_l_l + + There are a number of minor differences between Bash +and the version of sh present on most other versions of +UNIX. The majority of these are due to the POSIX standard, +but some are the result of Bash adopting features from other +shells. For instance, Bash includes the new "!" reserved +word, the _c_o_m_m_a_n_d builtin, the ability of the _r_e_a_d builtin +to correctly return a line ending with a backslash, symbolic +arguments to the _u_m_a_s_k builtin, variable substring removal, +a way to get the length of a variable, and the new algorithm +for the _t_e_s_t builtin from the POSIX.2 standard, none of +which appear in sh. + + Bash also implements the "$(...)" command substitution +syntax, which supersedes the sh `...` construct. The +"$(...)" construct expands to the output of the command con- +tained within the parentheses, with trailing newlines +removed. The sh syntax is accepted for backwards compati- +bility, but the "$(...)" form is preferred because its quot- +ing rules are much simpler and it is easier to nest. + + The Bourne shell does not provide such features as +brace expansion, the ability to define a variable and a +function with the same name, local variables in shell func- +tions, the ability to enable and disable individual builtins +or write a function to replace a builtin, or a means to +export a shell function to a child process. + + Bash has closed a long-standing shell security hole by +not using the $_I_F_S variable to split each word read by the +shell, but splitting only the results of expansion (ksh and +the 4.4 BSD sh have fixed this as well). Useful behavior +such as a means to abort execution of a script read with the +"." command using the return builtin or automatically +exporting variables in the shell's environment to children +is also not present in the Bourne shell. Bash provides a +much more powerful environment for both interactive use and +programming. + +_4. _B_a_s_h-_s_p_e_c_i_f_i_c _F_e_a_t_u_r_e_s + + This section details a few of the features which make +Bash unique. Most of them provide improved interactive use, +but a few programming improvements are present as well. +Full descriptions of these features can be found in the Bash +documentation. + +_4._1. _S_t_a_r_t_u_p _F_i_l_e_s + + Bash executes startup files differently than other +shells. The Bash behavior is a compromise between the csh + + + + October 28, 1994 + + + + + + - 6 - + + +principle of startup files with fixed names executed for +each shell and the sh "minimalist" behavior. An interactive +instance of Bash started as a login shell reads and executes +~/._b_a_s_h__p_r_o_f_i_l_e (the file .bash_profile in the user's home +directory), if it exists. An interactive non-login shell +reads and executes ~/._b_a_s_h_r_c. A non-interactive shell (one +begun to execute a shell script, for example) reads no fixed +startup file, but uses the value of the variable $_E_N_V, if +set, as the name of a startup file. The ksh practice of +reading $_E_N_V for every shell, with the accompanying diffi- +culty of defining the proper variables and functions for +interactive and non-interactive shells or having the file +read only for interactive shells, was considered too com- +plex. Ease of use won out here. Interestingly, the next +release of ksh will change to reading $_E_N_V only for interac- +tive shells. + +_4._2. _N_e_w _B_u_i_l_t_i_n _C_o_m_m_a_n_d_s + + There are a few builtins which are new or have been +extended in Bash. The _e_n_a_b_l_e builtin allows builtin com- +mands to be turned on and off arbitrarily. To use the ver- +sion of _e_c_h_o found in a user's search path rather than the +Bash builtin, enable -n echo suffices. The _h_e_l_p builtin +provides quick synopses of the shell facilities without +requiring access to a manual page. _B_u_i_l_t_i_n is similar to +_c_o_m_m_a_n_d in that it bypasses shell functions and directly +executes builtin commands. Access to a csh-style stack of +directories is provided via the _p_u_s_h_d, _p_o_p_d, and _d_i_r_s buil- +tins. _P_u_s_h_d and _p_o_p_d insert and remove directories from the +stack, respectively, and _d_i_r_s lists the stack contents. On +systems that allow fine-grained control of resources, the +_u_l_i_m_i_t builtin can be used to tune these settings. _U_l_i_m_i_t +allows a user to control, among other things, whether core +dumps are to be generated, how much memory the shell or a +child process is allowed to allocate, and how large a file +created by a child process can grow. The _s_u_s_p_e_n_d command +will stop the shell process when job control is active; most +other shells do not allow themselves to be stopped like +that. _T_y_p_e, the Bash answer to _w_h_i_c_h and _w_h_e_n_c_e, shows what +will happen when a word is typed as a command: +9 $ type export + export is a shell builtin + $ type -t export + builtin + $ type bash + bash is /bin/bash + $ type cd + cd is a function + cd () + { + builtin cd ${1+"$@"} && xtitle $HOST: $PWD + } +9 + + + October 28, 1994 + + + + + + - 7 - + + +Various modes tell what a command word is (reserved word, +alias, function, builtin, or file) or which version of a +command will be executed based on a user's search path. +Some of this functionality has been adopted by POSIX.2 and +folded into the _c_o_m_m_a_n_d utility. + +_4._3. _E_d_i_t_i_n_g _a_n_d _C_o_m_p_l_e_t_i_o_n + + One area in which Bash shines is command line editing. +Bash uses the _r_e_a_d_l_i_n_e library to read and edit lines when +interactive. Readline is a powerful and flexible input +facility that a user can configure to individual tastes. It +allows lines to be edited using either emacs or vi commands, +where those commands are appropriate. The full capability +of emacs is not present - there is no way to execute a named +command with M-x, for instance - but the existing commands +are more than adequate. The vi mode is compliant with the +command line editing standardized by POSIX.2. + + Readline is fully customizable. In addition to the +basic commands and key bindings, the library allows users to +define additional key bindings using a startup file. The +_i_n_p_u_t_r_c file, which defaults to the file ~/._i_n_p_u_t_r_c, is read +each time readline initializes, permitting users to maintain +a consistent interface across a set of programs. Readline +includes an extensible interface, so each program using the +library can add its own bindable commands and program- +specific key bindings. Bash uses this facility to add bind- +ings that perform history expansion or shell word expansions +on the current input line. + + Readline interprets a number of variables which further +tune its behavior. Variables exist to control whether or +not eight-bit characters are directly read as input or con- +verted to meta-prefixed key sequences (a meta-prefixed key +sequence consists of the character with the eighth bit +zeroed, preceded by the _m_e_t_a-_p_r_e_f_i_x character, usually +escape, which selects an alternate keymap), to decide +whether to output characters with the eighth bit set +directly or as a meta-prefixed key sequence, whether or not +to wrap to a new screen line when a line being edited is +longer than the screen width, the keymap to which subsequent +key bindings should apply, or even what happens when read- +line wants to ring the terminal's bell. All of these vari- +ables can be set in the inputrc file. + + The startup file understands a set of C preprocessor- +like conditional constructs which allow variables or key +bindings to be assigned based on the application using read- +line, the terminal currently being used, or the editing +mode. Users can add program-specific bindings to make their +lives easier: I have bindings that let me edit the value of +$_P_A_T_H and double-quote the current or previous word: +9 # Macros that are convenient for shell interaction + + +9 October 28, 1994 + + + + + + - 8 - + + + $if Bash + # edit the path + "\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f" + # prepare to type a quoted word -- insert open and close double + # quotes and move to just after the open quote + "\C-x\"": "\"\"\C-b" + # Quote the current or previous word + "\C-xq": "\eb\"\ef\"" + $endif +9 +There is a readline command to re-read the file, so users +can edit the file, change some bindings, and begin to use +them almost immediately. + + Bash implements the _b_i_n_d builtin for more dyamic con- +trol of readline than the startup file permits. _B_i_n_d is +used in several ways. In _l_i_s_t mode, it can display the +current key bindings, list all the readline editing direc- +tives available for binding, list which keys invoke a given +directive, or output the current set of key bindings in a +format that can be incorporated directly into an inputrc +file. In _b_a_t_c_h mode, it reads a series of key bindings +directly from a file and passes them to readline. In its +most common usage, _b_i_n_d takes a single string and passes it +directly to readline, which interprets the line as if it had +just been read from the inputrc file. Both key bindings and +variable assignments may appear in the string given to _b_i_n_d. + + The readline library also provides an interface for +_w_o_r_d _c_o_m_p_l_e_t_i_o_n. When the _c_o_m_p_l_e_t_i_o_n character (usually +TAB) is typed, readline looks at the word currently being +entered and computes the set of filenames of which the +current word is a valid prefix. If there is only one possi- +ble completion, the rest of the characters are inserted +directly, otherwise the common prefix of the set of +filenames is added to the current word. A second TAB char- +acter entered immediately after a non-unique completion +causes readline to list the possible completions; there is +an option to have the list displayed immediately. Readline +provides hooks so that applications can provide specific +types of completion before the default filename completion +is attempted. This is quite flexible, though it is not com- +pletely user-programmable. Bash, for example, can complete +filenames, command names (including aliases, builtins, shell +reserved words, shell functions, and executables found in +the file system), shell variables, usernames, and hostnames. +It uses a set of heuristics that, while not perfect, is gen- +erally quite good at determining what type of completion to +attempt. + +_4._4. _H_i_s_t_o_r_y + + Access to the list of commands previously entered (the +_c_o_m_m_a_n_d _h_i_s_t_o_r_y) is provided jointly by Bash and the + + +9 October 28, 1994 + + + + + + - 9 - + + +readline library. Bash provides variables ($HISTFILE, +$HISTSIZE, and $HISTCONTROL) and the _h_i_s_t_o_r_y and _f_c builtins +to manipulate the history list. The value of $_H_I_S_T_F_I_L_E +specifes the file where Bash writes the command history on +exit and reads it on startup. $_H_I_S_T_S_I_Z_E is used to limit +the number of commands saved in the history. $_H_I_S_T_C_O_N_T_R_O_L +provides a crude form of control over which commands are +saved on the history list: a value of _i_g_n_o_r_e_s_p_a_c_e means to +not save commands which begin with a space; a value of +_i_g_n_o_r_e_d_u_p_s means to not save commands identical to the last +command saved. $HISTCONTROL was named $history_control in +earlier versions of Bash; the old name is still accepted for +backwards compatibility. The _h_i_s_t_o_r_y command can read or +write files containing the history list and display the +current list contents. The _f_c builtin, adopted from POSIX.2 +and the Korn Shell, allows display and re-execution, with +optional editing, of commands from the history list. The +readline library offers a set of commands to search the his- +tory list for a portion of the current input line or a +string typed by the user. Finally, the _h_i_s_t_o_r_y library, +generally incorporated directly into the readline library, +implements a facility for history recall, expansion, and +re-execution of previous commands very similar to csh ("bang +history", so called because the exclamation point introduces +a history substitution): +9 $ echo a b c d e + a b c d e + $ !! f g h i + echo a b c d e f g h i + a b c d e f g h i + $ !-2 + echo a b c d e + a b c d e + $ echo !-2:1-4 + echo a b c d + a b c d +9 +The command history is only saved when the shell is interac- +tive, so it is not available for use by shell scripts. + +_4._5. _N_e_w _S_h_e_l_l _V_a_r_i_a_b_l_e_s + + There are a number of convenience variables that Bash +interprets to make life easier. These include _F_I_G_N_O_R_E, +which is a set of filename suffixes identifying files to +exclude when completing filenames; _H_O_S_T_T_Y_P_E, which is +automatically set to a string describing the type of +hardware on which Bash is currently executing; +_c_o_m_m_a_n_d__o_r_i_e_n_t_e_d__h_i_s_t_o_r_y, which directs Bash to save all +lines of a multiple-line command such as a _w_h_i_l_e or _f_o_r loop +in a single history entry, allowing easy re-editing; and +_I_G_N_O_R_E_E_O_F, whose value indicates the number of consecutive +EOF characters that an interactive shell will read before + + + + October 28, 1994 + + + + + + - 10 - + + +exiting - an easy way to keep yourself from being logged out +accidentally. The _a_u_t_o__r_e_s_u_m_e variable alters the way the +shell treats simple command names: if job control is active, +and this variable is set, single-word simple commands +without redirections cause the shell to first look for and +restart a suspended job with that name before starting a new +process. + +_4._6. _B_r_a_c_e _E_x_p_a_n_s_i_o_n + + Since sh offers no convenient way to generate arbitrary +strings that share a common prefix or suffix (filename +expansion requires that the filenames exist), Bash imple- +ments _b_r_a_c_e _e_x_p_a_n_s_i_o_n, a capability picked up from csh. +Brace expansion is similar to filename expansion, but the +strings generated need not correspond to existing files. A +brace expression consists of an optional _p_r_e_a_m_b_l_e, followed +by a pair of braces enclosing a series of comma-separated +strings, and an optional _p_o_s_t_a_m_b_l_e. The preamble is +prepended to each string within the braces, and the postam- +ble is then appended to each resulting string: +9 $ echo a{d,c,b}e + ade ace abe +9 +As this example demonstrates, the results of brace expansion +are not sorted, as they are by filename expansion. + +_4._7. _P_r_o_c_e_s_s _S_u_b_s_t_i_t_u_t_i_o_n + + On systems that can support it, Bash provides a facil- +ity known as _p_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n. Process substitution is +similar to command substitution in that its specification +includes a command to execute, but the shell does not col- +lect the command's output and insert it into the command +line. Rather, Bash opens a pipe to the command, which is +run in the background. The shell uses named pipes (FIFOs) +or the /_d_e_v/_f_d method of naming open files to expand the +process substitution to a filename which connects to the +pipe when opened. This filename becomes the result of the +expansion. Process substitution can be used to compare the +outputs of two different versions of an application as part +of a regression test: +9 $ cmp <(old_prog) <(new_prog) +9 +_4._8. _P_r_o_m_p_t _C_u_s_t_o_m_i_z_a_t_i_o_n + + One of the more popular interactive features that Bash +provides is the ability to customize the prompt. Both $_P_S_1 +and $_P_S_2, the primary and secondary prompts, are expanded +before being displayed. Parameter and variable expansion is +performed when the prompt string is expanded, so any shell +variable can be put into the prompt (e.g., $_S_H_L_V_L, which + + + + October 28, 1994 + + + + + + - 11 - + + +indicates how deeply the current shell is nested). Bash +specially interprets characters in the prompt string pre- +ceded by a backslash. Some of these backslash escapes are +replaced with the current time, the date, the current work- +ing directory, the username, and the command number or his- +tory number of the command being entered. There is even a +backslash escape to cause the shell to change its prompt +when running as root after an _s_u. Before printing each pri- +mary prompt, Bash expands the variable $_P_R_O_M_P_T__C_O_M_M_A_N_D and, +if it has a value, executes the expanded value as a command, +allowing additional prompt customization. For example, this +assignment causes the current user, the current host, the +time, the last component of the current working directory, +the level of shell nesting, and the history number of the +current command to be embedded into the primary prompt: +9 $ PS1='\u@\h [\t] \W($SHLVL:\!)\$ ' + chet@odin [21:03:44] documentation(2:636)$ cd .. + chet@odin [21:03:54] src(2:637)$ +9 +The string being assigned is surrounded by single quotes so +that if it is exported, the value of $_S_H_L_V_L will be updated +by a child shell: +9 chet@odin [21:17:35] src(2:638)$ export PS1 + chet@odin [21:17:40] src(2:639)$ bash + chet@odin [21:17:46] src(3:696)$ +9 +The \$ escape is displayed as "$" when running as a normal +user, but as "#" when running as root. + +_4._9. _F_i_l_e _S_y_s_t_e_m _V_i_e_w_s + + Since Berkeley introduced symbolic links in 4.2 BSD, +one of their most annoying properties has been the "warping" +to a completely different area of the file system when using +_c_d, and the resultant non-intuitive behavior of "cd ..". +The UNIX kernel treats symbolic links _p_h_y_s_i_c_a_l_l_y. When the +kernel is translating a pathname in which one component is a +symbolic link, it replaces all or part of the pathname while +processing the link. If the contents of the symbolic link +begin with a slash, the kernel replaces the pathname +entirely; if not, the link contents replace the current com- +ponent. In either case, the symbolic link is visible. If +the link value is an absolute pathname, the user finds him- +self in a completely different part of the file system. + + Bash provides a _l_o_g_i_c_a_l view of the file system. In +this default mode, command and filename completion and buil- +tin commands such as _c_d and _p_u_s_h_d which change the current +working directory transparently follow symbolic links as if +they were directories. The $_P_W_D variable, which holds the +shell's idea of the current working directory, depends on +the path used to reach the directory rather than its + + + + October 28, 1994 + + + + + + - 12 - + + +physical location in the local file system hierarchy. For +example: +9 $ cd /usr/local/bin + $ echo $PWD + /usr/local/bin + $ pwd + /usr/local/bin + $ /bin/pwd + /net/share/sun4/local/bin + $ cd .. + $ pwd + /usr/local + $ /bin/pwd + /net/share/sun4/local + $ cd .. + $ pwd + /usr + $ /bin/pwd + /usr +9 +One problem with this, of course, arises when programs that +do not understand the shell's logical notion of the file +system interpret ".." differently. This generally happens +when Bash completes filenames containing ".." according to a +logical hierarchy which does not correspond to their physi- +cal location. For users who find this troublesome, a +corresponding _p_h_y_s_i_c_a_l view of the file system is available: +9 $ cd /usr/local/bin + $ pwd + /usr/local/bin + $ set -o physical + $ pwd + /net/share/sun4/local/bin +9 +_4._1_0. _I_n_t_e_r_n_a_t_i_o_n_a_l_i_z_a_t_i_o_n + + One of the most significant improvements in version +1.13 of Bash was the change to "eight-bit cleanliness". +Previous versions used the eighth bit of characters to mark +whether or not they were quoted when performing word expan- +sions. While this did not affect the majority of users, +most of whom used only seven-bit ASCII characters, some +found it confining. Beginning with version 1.13, Bash +implemented a different quoting mechanism that did not alter +the eighth bit of characters. This allowed Bash to manipu- +late files with "odd" characters in their names, but did +nothing to help users enter those names, so version 1.13 +introduced changes to readline that made it eight-bit clean +as well. Options exist that force readline to attach no +special significance to characters with the eighth bit set +(the default behavior is to convert these characters to +meta-prefixed key sequences) and to output these characters + + + + October 28, 1994 + + + + + + - 13 - + + +without conversion to meta-prefixed sequences. These +changes, along with the expansion of keymaps to a full eight +bits, enable readline to work with most of the ISO-8859 fam- +ily of character sets, used by many European countries. + +_4._1_1. _P_O_S_I_X _M_o_d_e + + Although Bash is intended to be POSIX.2 conformant, +there are areas in which the default behavior is not compa- +tible with the standard. For users who wish to operate in a +strict POSIX.2 environment, Bash implements a _P_O_S_I_X _m_o_d_e. +When this mode is active, Bash modifies its default opera- +tion where it differs from POSIX.2 to match the standard. +POSIX mode is entered when Bash is started with the -_p_o_s_i_x +option. This feature is also available as an option to the +set builtin, set -o posix. For compatibility with other GNU +software that attempts to be POSIX.2 compliant, Bash also +enters POSIX mode if the variable $_P_O_S_I_X_L_Y__C_O_R_R_E_C_T is set +when Bash is started or assigned a value during execution. +$_P_O_S_I_X__P_E_D_A_N_T_I_C is accepted as well, to be compatible with +some older GNU utilities. When Bash is started in POSIX +mode, for example, it sources the file named by the value of +$_E_N_V rather than the "normal" startup files, and does not +allow reserved words to be aliased. + +_5. _N_e_w _F_e_a_t_u_r_e_s _a_n_d _F_u_t_u_r_e _P_l_a_n_s + + There are several features introduced in the current +version of Bash, version 1.14, and a number under considera- +tion for future releases. This section will briefly detail +the new features in version 1.14 and describe several +features that may appear in later versions. + +_5._1. _N_e_w _F_e_a_t_u_r_e_s _i_n _B_a_s_h-_1._1_4 + + The new features available in Bash-1.14 answer several +of the most common requests for enhancements. Most notably, +there is a mechanism for including non-visible character +sequences in prompts, such as those which cause a terminal +to print characters in different colors or in standout mode. +There was nothing preventing the use of these sequences in +earlier versions, but the readline redisplay algorithm +assumed each character occupied physical screen space and +would wrap lines prematurely. + + Readline has a few new variables, several new bindable +commands, and some additional emacs mode default key bind- +ings. A new history search mode has been implemented: in +this mode, readline searches the history for lines beginning +with the characters between the beginning of the current +line and the cursor. The existing readline incremental +search commands no longer match identical lines more than +once. Filename completion now expands variables in direc- +tory names. The history expansion facilities are now nearly + + + + October 28, 1994 + + + + + + - 14 - + + +completely csh-compatible: missing modifiers have been added +and history substitution has been extended. + + Several of the features described earlier, such as _s_e_t +-_o _p_o_s_i_x and $_P_O_S_I_X__P_E_D_A_N_T_I_C, are new in version 1.14. +There is a new shell variable, _O_S_T_Y_P_E, to which Bash assigns +a value that identifies the version of UNIX it's running on +(great for putting architecture-specific binary directories +into the $PATH). Two variables have been renamed: $_H_I_S_T_C_O_N_- +_T_R_O_L replaces $_h_i_s_t_o_r_y__c_o_n_t_r_o_l, and $_H_O_S_T_F_I_L_E replaces +$_h_o_s_t_n_a_m_e__c_o_m_p_l_e_t_i_o_n__f_i_l_e. In both cases, the old names are +accepted for backwards compatibility. The ksh _s_e_l_e_c_t con- +struct, which allows the generation of simple menus, has +been implemented. New capabilities have been added to +existing variables: $_a_u_t_o__r_e_s_u_m_e can now take values of +_e_x_a_c_t or _s_u_b_s_t_r_i_n_g, and $_H_I_S_T_C_O_N_T_R_O_L understands the value +_i_g_n_o_r_e_b_o_t_h, which combines the two previously acceptable +values. The _d_i_r_s builtin has acquired options to print out +specific members of the directory stack. The $_n_o_l_i_n_k_s vari- +able, which forces a physical view of the file system, has +been superseded by the -_P option to the _s_e_t builtin +(equivalent to set -o physical); the variable is retained +for backwards compatibility. The version string contained +in $_B_A_S_H__V_E_R_S_I_O_N now includes an indication of the patch +level as well as the "build version". Some little-used +features have been removed: the _b_y_e synonym for _e_x_i_t and +the $_N_O__P_R_O_M_P_T__V_A_R_S variable are gone. There is now an +organized test suite that can be run as a regression test +when building a new version of Bash. + + The documentation has been thoroughly overhauled: there +is a new manual page on the readline library and the _i_n_f_o +file has been updated to reflect the current version. As +always, as many bugs as possible have been fixed, although +some surely remain. + +_5._2. _O_t_h_e_r _F_e_a_t_u_r_e_s + + There are a few features that I hope to include in +later Bash releases. Some are based on work already done in +other shells. + + In addition to simple variables, a future release of +Bash will include one-dimensional arrays, using the ksh +implementation of arrays as a model. Additions to the ksh +syntax, such as _v_a_r_n_a_m_e=( ... ) to assign a list of words +directly to an array and a mechanism to allow the _r_e_a_d buil- +tin to read a list of values directly into an array, would +be desirable. Given those extensions, the ksh _s_e_t -_A syntax +may not be worth supporting (the -_A option assigns a list of +values to an array, but is a rather peculiar special case). + + Some shells include a means of _p_r_o_g_r_a_m_m_a_b_l_e word com- +pletion, where the user specifies on a per-command basis how + + + + October 28, 1994 + + + + + + - 15 - + + +the arguments of the command are to be treated when comple- +tion is attempted: as filenames, hostnames, executable +files, and so on. The other aspects of the current Bash +implementation could remain as-is; the existing heuristics +would still be valid. Only when completing the arguments to +a simple command would the programmable completion be in +effect. + + It would also be nice to give the user finer-grained +control over which commands are saved onto the history list. +One proposal is for a variable, tentatively named _H_I_S_T_I_G_- +_N_O_R_E, which would contain a colon-separated list of com- +mands. Lines beginning with these commands, after the res- +trictions of $_H_I_S_T_C_O_N_T_R_O_L have been applied, would not be +placed onto the history list. The shell pattern-matching +capabilities could also be available when specifying the +contents of $_H_I_S_T_I_G_N_O_R_E. + + One thing that newer shells such as _w_k_s_h (also known as +_d_t_k_s_h) provide is a command to dynamically load code imple- +menting additional builtin commands into a running shell. +This new builtin would take an object file or shared library +implementing the "body" of the builtin (_x_x_x__b_u_i_l_t_i_n() for +those familiar with Bash internals) and a structure contain- +ing the name of the new command, the function to call when +the new builtin is invoked (presumably defined in the shared +object specified as an argument), and the documentation to +be printed by the _h_e_l_p command (possibly present in the +shared object as well). It would manage the details of +extending the internal table of builtins. + + A few other builtins would also be desirable: two are +the POSIX.2 _g_e_t_c_o_n_f command, which prints the values of sys- +tem configuration variables defined by POSIX.2, and a _d_i_s_o_w_n +builtin, which causes a shell running with job control +active to "forget about" one or more background jobs in its +internal jobs table. Using _g_e_t_c_o_n_f, for example, a user +could retrieve a value for $_P_A_T_H guaranteed to find all of +the POSIX standard utilities, or find out how long filenames +may be in the file system containing a specified directory. + + There are no implementation timetables for any of these +features, nor are there concrete plans to include them. If +anyone has comments on these proposals, feel free to send me +electronic mail. + +_6. _R_e_f_l_e_c_t_i_o_n_s _a_n_d _L_e_s_s_o_n_s _L_e_a_r_n_e_d + + The lesson that has been repeated most often during +Bash development is that there are dark corners in the +Bourne shell, and people use all of them. In the original +description of the Bourne shell, quoting and the shell gram- +mar are both poorly specified and incomplete; subsequent +descriptions have not helped much. The grammar presented in + + + + October 28, 1994 + + + + + + - 16 - + + +Bourne's paper describing the shell distributed with the +Seventh Edition of UNIX|- is so far off that it does not +allow the command who|wc. In fact, as Tom Duff states: + + Nobody really knows what the Bourne shell's gram- + mar is. Even examination of the source code is + little help.|= + +The POSIX.2 standard includes a _y_a_c_c grammar that comes +close to capturing the Bourne shell's behavior, but it +disallows some constructs which sh accepts without complaint +- and there are scripts out there that use them. It took a +few versions and several bug reports before Bash implemented +sh-compatible quoting, and there are still some "legal" sh +constructs which Bash flags as syntax errors. Complete sh +compatibility is a tough nut. + + The shell is bigger and slower than I would like, +though the current version is substantially faster than pre- +viously. The readline library could stand a substantial +rewrite. A hand-written parser to replace the current +_y_a_c_c-generated one would probably result in a speedup, and +would solve one glaring problem: the shell could parse com- +mands in "$(...)" constructs as they are entered, rather +than reporting errors when the construct is expanded. + + As always, there is some chaff to go with the wheat. +Areas of duplicated functionality need to be cleaned up. +There are several cases where Bash treats a variable spe- +cially to enable functionality available another way +($notify vs. set -o notify and $nolinks vs. set -o physi- +cal, for instance); the special treatment of the variable +name should probably be removed. A few more things could +stand removal; the $_a_l_l_o_w__n_u_l_l__g_l_o_b__e_x_p_a_n_s_i_o_n and +$_g_l_o_b__d_o_t__f_i_l_e_n_a_m_e_s variables are of particularly question- +able value. The $[...] arithmetic evaluation syntax is +redundant now that the POSIX-mandated $((...)) construct has +been implemented, and could be deleted. It would be nice if +the text output by the _h_e_l_p builtin were external to the +shell rather than compiled into it. The behavior enabled by +$_c_o_m_m_a_n_d__o_r_i_e_n_t_e_d__h_i_s_t_o_r_y, which causes the shell to attempt +to save all lines of a multi-line command in a single his- +tory entry, should be made the default and the variable +removed. + + +_________________________ +|-S. R. Bourne, "UNIX Time-Sharing System: The UNIX +Shell", _B_e_l_l _S_y_s_t_e_m _T_e_c_h_n_i_c_a_l _J_o_u_r_n_a_l, 57(6), July- +August, 1978, pp. 1971-1990. +|=Tom Duff, "Rc - A Shell for Plan 9 and UNIX systems", +_P_r_o_c. _o_f _t_h_e _S_u_m_m_e_r _1_9_9_0 _E_U_U_G _C_o_n_f_e_r_e_n_c_e, London, July, +1990, pp. 21-33. + + + + + October 28, 1994 + + + + + + - 17 - + + +_7. _A_v_a_i_l_a_b_i_l_i_t_y + + As with all other GNU software, Bash is available for +anonymous FTP from _p_r_e_p._a_i._m_i_t._e_d_u:/_p_u_b/_g_n_u and from other +GNU software mirror sites. The current version is in _b_a_s_h- +_1._1_4._1._t_a_r._g_z in that directory. Use _a_r_c_h_i_e to find the +nearest archive site. The latest version is always avail- +able for FTP from _b_a_s_h._C_W_R_U._E_d_u:/_p_u_b/_d_i_s_t. Bash documenta- +tion is available for FTP from _b_a_s_h._C_W_R_U._E_d_u:/_p_u_b/_b_a_s_h. + + The Free Software Foundation sells tapes and CD-ROMs +containing Bash; send electronic mail to gnu@prep.ai.mit.edu +or call +1-617-876-3296 for more information. + + Bash is also distributed with several versions of +UNIX-compatible systems. It is included as /bin/sh and +/bin/bash on several Linux distributions (more about the +difference in a moment), and as contributed software in +BSDI's BSD/386* and FreeBSD. + + The Linux distribution deserves special mention. There +are two configurations included in the standard Bash distri- +bution: a "normal" configuration, in which all of the stan- +dard features are included, and a "minimal" configuration, +which omits job control, aliases, history and command line +editing, the directory stack and _p_u_s_h_d/_p_o_p_d/_d_i_r_s, process +substitution, prompt string special character decoding, and +the _s_e_l_e_c_t construct. This minimal version is designed to +be a drop-in replacement for the traditional UNIX /bin/sh, +and is included as the Linux /bin/sh in several packagings. + +_8. _C_o_n_c_l_u_s_i_o_n + + Bash is a worthy successor to sh. It is sufficiently +portable to run on nearly every version of UNIX from 4.3 BSD +to SVR4.2, and several UNIX workalikes. It is robust enough +to replace sh on most of those systems, and provides more +functionality. It has several thousand regular users, and +their feedback has helped to make it as good as it is today +- a testament to the benefits of free software. + + + + + + + + + + +_________________________ +*BSD/386 is a trademark of Berkeley Software Design, +Inc. + + + + + October 28, 1994 + + diff --git a/bash-20060316/doc/bash.0 b/bash-20060316/doc/bash.0 new file mode 100644 index 000000000..a760983ee --- /dev/null +++ b/bash-20060316/doc/bash.0 @@ -0,0 +1,4885 @@ + +BASH(1) BASH(1) + + + +NNAAMMEE + bash - GNU Bourne-Again SHell + +SSYYNNOOPPSSIISS + bbaasshh [options] [file] + +CCOOPPYYRRIIGGHHTT + Bash is Copyright (C) 1989-2005 by the Free Software Foundation, Inc. + +DDEESSCCRRIIPPTTIIOONN + BBaasshh is an sshh-compatible command language interpreter that executes + commands read from the standard input or from a file. BBaasshh also incor- + porates useful features from the _K_o_r_n and _C shells (kksshh and ccsshh). + + BBaasshh is intended to be a conformant implementation of the Shell and + Utilities portion of the IEEE POSIX specification (IEEE Standard + 1003.1). BBaasshh can be configured to be POSIX-conformant by default. + +OOPPTTIIOONNSS + In addition to the single-character shell options documented in the + description of the sseett builtin command, 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. + --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 + (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 + 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- + ject to language translation when the current locale is not CC + 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 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- + 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 + 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 + of the eexxttddeebbuugg option to the sshhoopptt builtin below) and shell + function tracing (see the description of the --oo ffuunnccttrraaccee option + to the sseett builtin below). + ----dduummpp--ppoo--ssttrriinnggss + 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- + 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 + IINNVVOOCCAATTIIOONN below). + + ----llooggiinn + Equivalent to --ll. + + ----nnooeeddiittiinngg + 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 + 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 + 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). + + ----rreessttrriicctteedd + The shell becomes restricted (see RREESSTTRRIICCTTEEDD SSHHEELLLL below). + + ----vveerrbboossee + Equivalent to --vv. + + ----vveerrssiioonn + 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 + 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 + 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 + 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 + 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-- + 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 + 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 + shell is started to inhibit this behavior. + + 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 + _~_/_._b_a_s_h_r_c. + + 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- + 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 + 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 + 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 + 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 + 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 + startup files are read. + + BBaasshh attempts to determine when it is being run by the remote shell + daemon, usually _r_s_h_d. If bbaasshh determines it is being run by _r_s_h_d, 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. + + 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 variable, if it appears in the environment, is 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- + ment. + bbllaannkk A space or tab. + 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- + score. Also referred to as an iiddeennttiiffiieerr. + mmeettaacchhaarraacctteerr + A character that, when unquoted, separates words. One of the + following: + || && ;; (( )) << >> ssppaaccee ttaabb + ccoonnttrrooll ooppeerraattoorr + A _t_o_k_e_n that performs a control function. It is one of the fol- + lowing symbols: + |||| && &&&& ;; ;;;; (( )) || <> + +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 + word of a ccaassee or ffoorr command: + + !! ccaassee 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 + _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 + 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 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 the char- + acter ||. 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- + tions specified by the command (see RREEDDIIRREECCTTIIOONN below). + + 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 + pipeline's return status is the value of the last (rightmost) command + to exit with a non-zero status, or zero if all commands exit success- + fully. If the reserved word !! precedes a pipeline, the exit status of + that pipeline is the logical negation of the exit status as described + above. The shell waits for all commands in the pipeline to terminate + before returning a value. + + If the ttiimmee reserved word precedes a pipeline, the elapsed as well as + user and system time consumed by its execution are reported when the + pipeline terminates. The --pp option changes the output format to that + specified by POSIX. The TTIIMMEEFFOORRMMAATT variable may be set to a format + string that specifies how the timing information should be displayed; + see the description of TTIIMMEEFFOORRMMAATT under SShheellll VVaarriiaabblleess below. + + Each command in a pipeline is executed as a separate process (i.e., in + a subshell). + + LLiissttss + A _l_i_s_t is a sequence of one or more pipelines separated by one of the + operators ;;, &&, &&&&, or ||||, and optionally terminated by one of ;;, &&, or + <>. + + Of these list operators, &&&& and |||| have equal precedence, followed by ;; + and &&,, which have equal precedence. + + A sequence of one or more newlines may appear in a _l_i_s_t instead of a + semicolon to delimit commands. + + If a command is terminated by the control operator &&, the shell exe- + cutes the command in the _b_a_c_k_g_r_o_u_n_d in a subshell. The shell does not + wait for the command to finish, and the return status is 0. Commands + separated by a ;; are executed sequentially; the shell waits for each + command to terminate in turn. The return status is the exit status of + the last command executed. + + The control operators &&&& and |||| denote AND lists and OR lists, respec- + tively. An AND list has the form + + _c_o_m_m_a_n_d_1 &&&& _c_o_m_m_a_n_d_2 + + _c_o_m_m_a_n_d_2 is executed if, and only if, _c_o_m_m_a_n_d_1 returns an exit status + of zero. + + An OR list has the form + + _c_o_m_m_a_n_d_1 |||| _c_o_m_m_a_n_d_2 + + + _c_o_m_m_a_n_d_2 is executed if and only if _c_o_m_m_a_n_d_1 returns a non-zero exit + status. The return status of AND and OR lists is the exit status of + 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 + 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 + _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. + + ((_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 + 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- + tional operators such as --ff must be unquoted to be recognized as + primaries. + + 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- + 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 + 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. 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 subexpres- + sion. + + 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 + 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. + _e_x_p_r_e_s_s_i_o_n_1 &&&& _e_x_p_r_e_s_s_i_o_n_2 + True if both _e_x_p_r_e_s_s_i_o_n_1 and _e_x_p_r_e_s_s_i_o_n_2 are true. + _e_x_p_r_e_s_s_i_o_n_1 |||| _e_x_p_r_e_s_s_i_o_n_2 + 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 + 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 + parameter that is set (see PPAARRAAMMEETTEERRSS below). The return status + 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 + 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- + 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 + 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, + 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 substituion, command substitution, process sub- + stitution and quote removal. Each _p_a_t_t_e_r_n examined is expanded + using tilde expansion, parameter and variable expansion, arith- + metic substituion, command substitution, and process substitu- + tion. 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. + After the first match, no subsequent matches are attempted. 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 + _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- + tus of the last command executed, or zero if no condition tested + true. + + wwhhiillee _l_i_s_t; ddoo _l_i_s_t; ddoonnee + uunnttiill _l_i_s_t; ddoo _l_i_s_t; ddoonnee + The wwhhiillee command continuously executes the ddoo _l_i_s_t as long as + the last command in _l_i_s_t returns an exit status of zero. The + uunnttiill command is identical to the wwhhiillee command, except that the + test is negated; the ddoo _l_i_s_t is executed as long as the last + command in _l_i_s_t returns a non-zero exit status. The exit status + of the wwhhiillee and uunnttiill commands is the exit status of the last + ddoo _l_i_s_t command executed, or zero if none was executed. + + SShheellll FFuunnccttiioonn DDeeffiinniittiioonnss + A shell function is an object that is called like a simple command and + executes a compound command with a new set of positional parameters. + Shell functions are declared as follows: + + [ ffuunnccttiioonn ] _n_a_m_e () _c_o_m_p_o_u_n_d_-_c_o_m_m_a_n_d [_r_e_d_i_r_e_c_t_i_o_n] + This defines a function named _n_a_m_e. The reserved word ffuunnccttiioonn + is optional. If the ffuunnccttiioonn reserved word is supplied, the + parentheses are optional. The _b_o_d_y of the function is the com- + pound command _c_o_m_p_o_u_n_d_-_c_o_m_m_a_n_d (see CCoommppoouunndd CCoommmmaannddss above). + 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.) + +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 + 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 + 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 + 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-- + 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 + 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 + 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 + is, it is removed from the input stream and effectively ignored). + + 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 + quotes by preceding it with a backslash. If enabled, history expansion + 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 + 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 + as follows: + \\aa alert (bell) + \\bb backspace + \\ee an escape character + \\ff form feed + \\nn new line + \\rr carriage return + \\tt horizontal tab + \\vv vertical tab + \\\\ backslash + \\'' single quote + \\_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 + value _H_H (one or two hex digits) + \\cc_x a control-_x character + + The expanded result is single-quoted, as if the dollar sign had not + been present. + + A double-quoted string preceded by a dollar sign ($$) will cause the + string to be translated according to the current locale. If the cur- + rent 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- + 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). + + 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 + 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-- + 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 + 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 integer 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 + unset (as it is when using =), and new values are appended to the array + beginning at one greater than the array's maximum index. When applied + to a string-valued variable, _v_a_l_u_e is expanded and appended to the + variable's value. + + 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, + 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 + replaced when a shell function is executed (see FFUUNNCCTTIIOONNSS below). + + 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 + 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 + 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 + nothing (i.e., they are removed). + ## Expands to the number of positional parameters in decimal. + ?? Expands to the status of the most recently executed foreground + pipeline. + -- 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- + shell. + !! Expands to the process ID of the most recently executed back- + ground (asynchronous) command. + 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 + zero. + __ At shell startup, set to the absolute pathname used to invoke + the shell or shell script being executed as passed in the envi- + ronment or argument list. Subsequently, expands to the last + argument to the previous command, after expansion. Also set to + the full pathname used to invoke each command executed and + placed in the environment exported to that command. When check- + ing mail, this parameter holds the name of the mail file cur- + rently being checked. + + SShheellll VVaarriiaabblleess + The following variables are set by the shell: + + BBAASSHH Expands to the full file name used to invoke this instance of + bbaasshh. + BBAASSHH__AARRGGCC + An array variable whose values are the number of parameters in + each frame of the current bash execution call stack. The number + of parameters to the current subroutine (shell function or + script executed with .. or ssoouurrccee) is at the top of the stack. + When a subroutine is executed, the number of parameters passed + is pushed onto BBAASSHH__AARRGGCC. The shell sets BBAASSHH__AARRGGCC only when in + extended debugging mode (see the description of the eexxttddeebbuugg + option to the sshhoopptt builtin below) + BBAASSHH__AARRGGVV + An array variable containing all of the parameters in the cur- + rent bash execution call stack. The final parameter of the last + subroutine call is at the top of the stack; the first parameter + of the initial call is at the bottom. When a subroutine is exe- + cuted, the parameters supplied are pushed onto BBAASSHH__AARRGGVV. The + shell sets BBAASSHH__AARRGGVV only when in extended debugging mode (see + the description of the eexxttddeebbuugg option to the sshhoopptt builtin + below) + BBAASSHH__CCOOMMMMAANNDD + The command currently being executed or about to be executed, + unless the shell is executing a command as the result of a trap, + in which case it is the command executing at the time of the + trap. + BBAASSHH__EEXXEECCUUTTIIOONN__SSTTRRIINNGG + The command argument to the --cc invocation option. + BBAASSHH__LLIINNEENNOO + An array variable whose members are the line numbers in source + files corresponding to each member of FFUUNNCCNNAAMMEE. + $${{BBAASSHH__LLIINNEENNOO[[_$_i]]}} is the line number in the source file where + $${{FFUUNNCCNNAAMMEE[[_$_i_f_P]]}} _w_a_s _c_a_l_l_e_d_. _T_h_e _c_o_r_r_e_s_p_o_n_d_i_n_g _s_o_u_r_c_e _f_i_l_e + _n_a_m_e _i_s $${{BBAASSHH__SSOOUURRCCEE[[_$_i]]}}.. UUssee LLIINNEENNOO ttoo oobbttaaiinn tthhee ccuurrrreenntt + lliinnee nnuummbbeerr.. + BBAASSHH__RREEMMAATTCCHH + An array variable whose members are assigned by the ==~~ binary + operator to the [[[[ conditional command. The element with index + 0 is the portion of the string matching the entire regular + expression. The element with index _n is the portion of the + string matching the _nth parenthesized subexpression. This vari- + able is read-only. + BBAASSHH__SSOOUURRCCEE + An array variable whose members are the source filenames corre- + sponding to the elements in the FFUUNNCCNNAAMMEE array variable. + BBAASSHH__SSUUBBSSHHEELLLL + Incremented by one each time a subshell or subshell environment + is spawned. The initial 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 + 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[[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 + bbaasshh. + + CCOOMMPP__CCWWOORRDD + 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 + PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). + + 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 + 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 + 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 + below). + + CCOOMMPP__WWOORRDDBBRREEAAKKSS + The set of characters that the Readline 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. This variable is avail- + able only in shell functions invoked by the programmable comple- + tion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). + + 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 + to members of this array variable may be used to modify directo- + 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- + quently reset. + + 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 + 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 is "main". This variable exists only when a + shell function is executing. Assignments to FFUUNNCCNNAAMMEE have no + effect and return an error status. If FFUUNNCCNNAAMMEE is unset, it + loses its special properties, even if it is subsequently reset. + + 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, + 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- + 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 + 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_- + _p_a_n_y_-_s_y_s_t_e_m format. The default is system-dependent. + + OOLLDDPPWWDD The previous working directory as set by the ccdd command. + + 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 + 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- + dent. + + PPIIPPEESSTTAATTUUSS + 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- + 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 + reset. + + 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. + 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 + 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 + 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 + assigns a default value to a variable; these cases are noted below. + + 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. + CCDDPPAATTHH The search path for the ccdd command. This is a colon-separated + list of directories in which the shell looks for destination + directories specified by the ccdd command. A sample value is + ".:~:/usr". + CCOOLLUUMMNNSS + Used by the sseelleecctt builtin command to determine the terminal + width when printing selection lists. Automatically set upon + receipt of a SIGWINCH. + 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). + 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. + FFCCEEDDIITT The default editor for the ffcc builtin command. + FFIIGGNNOORREE + A colon-separated list of suffixes to ignore when performing + filename completion (see RREEAADDLLIINNEE below). A filename whose suf- + fix matches one of the entries in FFIIGGNNOORREE is excluded from the + list of matched filenames. A sample value is ".o:~". + GGLLOOBBIIGGNNOORREE + A colon-separated list of patterns defining the set of filenames + to be ignored by pathname expansion. If a filename matched by a + pathname expansion pattern also matches one of the patterns in + GGLLOOBBIIGGNNOORREE, it is removed from the list of matches. + HHIISSTTCCOONNTTRROOLL + A colon-separated list of values controlling how commands are + saved on the history list. If the list of values includes + _i_g_n_o_r_e_s_p_a_c_e, lines which begin with a ssppaaccee character are not + saved in the history list. A value of _i_g_n_o_r_e_d_u_p_s causes lines + matching the previous history entry to not be saved. A value of + _i_g_n_o_r_e_b_o_t_h is shorthand for _i_g_n_o_r_e_s_p_a_c_e and _i_g_n_o_r_e_d_u_p_s. A value + of _e_r_a_s_e_d_u_p_s causes all previous lines matching the current line + to be removed from the history list before that line is saved. + Any value not in the above list is ignored. If HHIISSTTCCOONNTTRROOLL is + unset, or does not include a valid value, all lines read by the + shell parser are saved on the history list, subject to the value + of HHIISSTTIIGGNNOORREE. The second and subsequent lines of a multi-line + compound command are not tested, and are added to the history + regardless of the value of HHIISSTTCCOONNTTRROOLL. + 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. + 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, 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. + HHIISSTTIIGGNNOORREE + A colon-separated list of patterns used to decide which command + lines should be saved on the history list. Each pattern is + anchored at the beginning of the line and must match the com- + plete line (no implicit `**' is appended). Each pattern is + tested against the line after the checks specified by HHIISSTTCCOONN-- + TTRROOLL are applied. In addition to the normal shell pattern + matching characters, `&&' matches the previous history line. `&&' + may be escaped using a backslash; the backslash is removed + before attempting a match. The second and subsequent lines of a + multi-line compound command are not tested, and are added to the + 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. + 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 + with each history entry displayed by the hhiissttoorryy builtin. If + this variable is set, time stamps are written to the history + file so they may be preserved across shell sessions. + HHOOMMEE The home directory of the current user; the default argument for + the ccdd builtin command. The value of this variable is also used + when performing tilde expansion. + HHOOSSTTFFIILLEE + Contains the name of a file in the same format as _/_e_t_c_/_h_o_s_t_s + that should be read when the shell needs to complete a hostname. + The list of possible hostname completions may be changed while + the shell is running; the next time hostname completion is + attempted after the value is changed, bbaasshh adds the contents of + the new file to the existing list. If HHOOSSTTFFIILLEE is set, but has + no value, bbaasshh attempts to read _/_e_t_c_/_h_o_s_t_s to obtain the list of + possible hostname completions. When HHOOSSTTFFIILLEE is unset, the + hostname list is cleared. + IIFFSS The _I_n_t_e_r_n_a_l _F_i_e_l_d _S_e_p_a_r_a_t_o_r that is used for word splitting + after expansion and to split lines into words with the rreeaadd + builtin command. The default value is ``''. + IIGGNNOORREEEEOOFF + Controls the action of an interactive shell on receipt of an EEOOFF + character as the sole input. If set, the value is the number of + consecutive EEOOFF characters which must be typed as the first + characters on an input line before bbaasshh exits. If the variable + exists but does not have a numeric value, or has no value, the + default value is 10. If it does not exist, EEOOFF signifies the + end of input to the shell. + IINNPPUUTTRRCC + The filename for the rreeaaddlliinnee startup file, overriding the + default of _~_/_._i_n_p_u_t_r_c (see RREEAADDLLIINNEE below). + LLAANNGG Used to determine the locale category for any category not + specifically selected with a variable starting with LLCC__. + LLCC__AALLLL This variable overrides the value of LLAANNGG and any other LLCC__ + variable specifying a locale category. + LLCC__CCOOLLLLAATTEE + This variable determines the collation order used when sorting + the results of pathname expansion, and determines the behavior + of range expressions, equivalence classes, and collating + sequences within pathname expansion and pattern matching. + LLCC__CCTTYYPPEE + This variable determines the interpretation of characters and + the behavior of character classes within pathname expansion and + pattern matching. + LLCC__MMEESSSSAAGGEESS + This variable determines the locale used to translate double- + quoted strings preceded by a $$. + LLCC__NNUUMMEERRIICC + This variable determines the locale category used for number + formatting. + LLIINNEESS Used by the sseelleecctt builtin command to determine the column + length for printing selection lists. Automatically set upon + receipt of a SIGWINCH. + MMAAIILL If this parameter is set to a file name and the MMAAIILLPPAATTHH vari- + able is not set, bbaasshh informs the user of the arrival of mail in + the specified file. + 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 + 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: + 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 + (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 + 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 + 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''. + 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 + the ----ppoossiixx invocation option had been supplied. If it is set + while the shell is running, bbaasshh enables _p_o_s_i_x _m_o_d_e, as if the + command _s_e_t _-_o _p_o_s_i_x had been executed. + PPRROOMMPPTT__CCOOMMMMAANNDD + If set, the value is executed as a command prior to issuing each + primary prompt. + PPSS11 The value of this parameter is expanded (see PPRROOMMPPTTIINNGG below) + and used as the primary prompt string. The default value is + ``\\ss--\\vv\\$$ ''. + PPSS22 The value of this parameter is expanded as with PPSS11 and used as + the secondary prompt string. The default is ``>> ''. + PPSS33 The value of this parameter is used as the prompt for the sseelleecctt + command (see SSHHEELLLL GGRRAAMMMMAARR above). + PPSS44 The value of this parameter is expanded as with PPSS11 and the + value is printed before each command bbaasshh displays during an + execution trace. The first character of PPSS44 is replicated mul- + tiple times, as necessary, to indicate multiple levels of indi- + rection. The default is ``++ ''. + SSHHEELLLL The full pathname to the shell is kept in this environment vari- + able. If it is not set when the shell starts, bbaasshh assigns to + it the full pathname of the current user's login shell. + TTIIMMEEFFOORRMMAATT + The value of this parameter is used as a format string specify- + ing how the timing information for pipelines prefixed with the + ttiimmee reserved word should be displayed. The %% character intro- + duces an escape sequence that is expanded to a time value or + other information. The escape sequences and their meanings are + as follows; the braces denote optional portions. + %%%% A literal %%. + %%[[_p]][[ll]]RR The elapsed time in seconds. + %%[[_p]][[ll]]UU The number of CPU seconds spent in user mode. + %%[[_p]][[ll]]SS The number of CPU seconds spent in system mode. + %%PP The CPU percentage, computed as (%U + %S) / %R. + + The optional _p is a digit specifying the _p_r_e_c_i_s_i_o_n, the number + of fractional digits after a decimal point. A value of 0 causes + no decimal point or fraction to be output. At most three places + after the decimal point may be specified; values of _p greater + than 3 are changed to 3. If _p is not specified, the value 3 is + used. + + The optional ll specifies a longer format, including minutes, of + the form _M_Mm_S_S._F_Fs. The value of _p determines whether or not + 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 + 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 + 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- + 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 + 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 + 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- + ment character causes history substitution to be skipped for 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 array variables. Any variable may be + used as an 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 contiguously. Arrays are indexed + using integers and are zero-based. + + An 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 greater than or + equal to zero. To explicitly declare an 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. Attributes may be specified for an + array variable using the ddeeccllaarree and rreeaaddoonnllyy builtins. Each attribute + applies to all members of an array. + + 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. Only _s_t_r_i_n_g is required. 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. 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. + + 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 + _s_u_b_s_c_r_i_p_t is @@ or **, the word expands to all members of _n_a_m_e. These + subscripts differ only when the word appears within double quotes. If + the word is double-quoted, ${_n_a_m_e[*]} expands to a single word with the + value of each array member separated by the first character of the IIFFSS + special variable, and ${_n_a_m_e[@]} expands each element of _n_a_m_e to a sep- + arate word. When there are no array members, ${_n_a_m_e[@]} expands to + nothing. If the double-quoted expansion occurs within a word, the + expansion of the first parameter is joined with the beginning part of + the original word, and the expansion of the last parameter is joined + with the last part of the original word. This is analogous to the + expansion of the special parameters ** and @@ (see SSppeecciiaall 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 element zero. + + 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 filename generation. 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 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 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_- + _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. + + 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. + + Only brace expansion, word splitting, and pathname expansion can change + the number of words of the expansion; other expansions expand a single + word to a single word. The only exceptions to this are the expansions + of "$$@@" and "$${{_n_a_m_e[[@@]]}}" as explained above (see PPAARRAAMMEETTEERRSS). + + BBrraaccee EExxppaannssiioonn + _B_r_a_c_e _e_x_p_a_n_s_i_o_n is a mechanism by which arbitrary strings may be gener- + ated. This mechanism is similar to _p_a_t_h_n_a_m_e _e_x_p_a_n_s_i_o_n, but the file- + names generated need not exist. Patterns to be brace expanded take the + form of an optional _p_r_e_a_m_b_l_e, followed by either a series of comma-sep- + arated strings or a sequence expression between a pair of braces, fol- + lowed by an optional _p_o_s_t_s_c_r_i_p_t. The preamble is prefixed to each + string contained within the braces, and the postscript is then appended + to each resulting string, expanding left to right. + + Brace expansions may be nested. The results of each expanded string + are not sorted; left to right order is preserved. For example, + a{{d,c,b}}e expands into `ade ace abe'. + + A sequence expression takes the form {{_x...._y}}, where _x and _y are either + integers or single characters. When integers are supplied, the expres- + sion expands to each number between _x and _y, inclusive. When charac- + ters are supplied, the expression expands to each character lexico- + graphically between _x and _y, inclusive. Note that both _x and _y must be + of the same type. + + Brace expansion is performed before any other expansions, and any char- + acters special to other expansions are preserved in the result. It is + strictly textual. BBaasshh does not apply any syntactic interpretation to + the context of the expansion or the text between the braces. + + A correctly-formed brace expansion must contain unquoted opening and + closing braces, and at least one unquoted comma or a valid sequence + expression. Any incorrectly formed brace expansion is left unchanged. + A {{ or ,, may be quoted with a backslash to prevent its being considered + part of a brace expression. To avoid conflicts with parameter expan- + sion, the string $${{ is not considered eligible for brace expansion. + + This construct is typically used as shorthand when the common prefix of + the strings to be generated is longer than in the above example: + + mkdir /usr/local/src/bash/{old,new,dist,bugs} + or + chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}} + + Brace expansion introduces a slight incompatibility with historical + versions of sshh. sshh does not treat opening or closing braces specially + when they appear as part of a word, and preserves them in the output. + BBaasshh removes braces from words as a consequence of brace expansion. + For example, a word entered to sshh as _f_i_l_e_{_1_,_2_} appears identically in + the output. The same word is output as _f_i_l_e_1 _f_i_l_e_2 after expansion by + bbaasshh. If strict compatibility with sshh is desired, start bbaasshh with the + ++BB option or disable brace expansion with the ++BB option to the sseett com- + mand (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). + + TTiillddee EExxppaannssiioonn + If a word begins with an unquoted tilde character (`~~'), all of the + characters preceding the first unquoted slash (or all characters, if + there is no unquoted slash) are considered a _t_i_l_d_e_-_p_r_e_f_i_x. If none of + the characters in the tilde-prefix are quoted, the characters in the + tilde-prefix following the tilde are treated as a possible _l_o_g_i_n _n_a_m_e. + If this login name is the null string, the tilde is replaced with the + value of the shell parameter HHOOMMEE. If HHOOMMEE is unset, the home direc- + tory of the user executing the shell is substituted instead. Other- + wise, the tilde-prefix is replaced with the home directory associated + with the specified login name. + + If the tilde-prefix is a `~+', the value of the shell variable PPWWDD + replaces the tilde-prefix. If the tilde-prefix is a `~-', the value of + the shell variable OOLLDDPPWWDD, if it is set, is substituted. If the char- + acters following the tilde in the tilde-prefix consist of a number _N, + optionally prefixed by a `+' or a `-', the tilde-prefix is replaced + with the corresponding element from the directory stack, as it would be + displayed by the ddiirrss builtin invoked with the tilde-prefix as an argu- + ment. If the characters following the tilde in the tilde-prefix con- + sist of a number without a leading `+' or `-', `+' is assumed. + + If the login name is invalid, or the tilde expansion fails, the word is + unchanged. + + 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 + assignments to PPAATTHH, MMAAIILLPPAATTHH, and CCDDPPAATTHH, and the shell assigns the + expanded value. + + PPaarraammeetteerr EExxppaannssiioonn + The `$$' character introduces parameter expansion, command substitution, + or arithmetic expansion. The parameter name or symbol to be expanded + may be enclosed in braces, which are optional but serve to protect the + variable to be expanded from characters immediately following it which + could be interpreted as part of the name. + + When braces are used, the matching ending brace is the first `}}' not + escaped by a backslash or within a quoted string, and not within an + embedded arithmetic expansion, command substitution, or parameter + expansion. + + ${_p_a_r_a_m_e_t_e_r} + 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 vari- + able 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, bbaasshh tests for a parameter that is + unset or null; omitting the colon results in a test only for a parame- + ter 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 + 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 + 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 + 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 + 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 + 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). + _l_e_n_g_t_h must evaluate to a number greater than or equal to zero. + 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 + _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. If _p_a_r_a_m_e_t_e_r is an array name indexed 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. + Note that a negative offset must be separated from the colon by + at least one space to avoid being confused with the :- expan- + sion. Substring indexing is zero-based unless the positional + parameters are used, in which case the indexing starts at 1. + + ${!!_p_r_e_f_i_x**} + ${!!_p_r_e_f_i_x@@} + Expands to the names of variables whose names begin with _p_r_e_f_i_x, + separated by the first character of the IIFFSS special variable. + + ${!!_n_a_m_e[_@]} + ${!!_n_a_m_e[_*]} + If _n_a_m_e is an array variable, expands to the list of array + indices (keys) assigned in _n_a_m_e. If _n_a_m_e is not an array, + expands to 0 if _n_a_m_e is set and null otherwise. When _@ is used + and the expansion appears within double quotes, each key expands + to a separate word. + + ${##_p_a_r_a_m_e_t_e_r} + The length in characters of the value of _p_a_r_a_m_e_t_e_r is substi- + tuted. 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 substituted is the number of + elements in the array. + + ${_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} + 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 pattern (the ``####'' case) deleted. + If _p_a_r_a_m_e_t_e_r is @@ or **, the pattern removal 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 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} + 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 pat- + tern (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 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 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} + The _p_a_t_t_e_r_n is expanded to produce a pattern 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 Ipattern + _b_e_g_i_n_s _w_i_t_h //_, _a_l_l _m_a_t_c_h_e_s _o_f _p_a_t_t_e_r_n _a_r_e _r_e_p_l_a_c_e_d _w_i_t_h _s_t_r_i_n_g_. + _N_o_r_m_a_l_l_y _o_n_l_y _t_h_e _f_i_r_s_t _m_a_t_c_h _i_s _r_e_p_l_a_c_e_d_. _I_f _p_a_t_t_e_r_n _b_e_g_i_n_s + _w_i_t_h ##_, _i_t _m_u_s_t _m_a_t_c_h _a_t _t_h_e _b_e_g_i_n_n_i_n_g _o_f _t_h_e _e_x_p_a_n_d_e_d _v_a_l_u_e _o_f + _p_a_r_a_m_e_t_e_r_. _I_f _p_a_t_t_e_r_n _b_e_g_i_n_s _w_i_t_h %%_, _i_t _m_u_s_t _m_a_t_c_h _a_t _t_h_e _e_n_d + _o_f _t_h_e _e_x_p_a_n_d_e_d _v_a_l_u_e _o_f _p_a_r_a_m_e_t_e_r_. _I_f _s_t_r_i_n_g _i_s _n_u_l_l_, _m_a_t_c_h_e_s + _o_f _p_a_t_t_e_r_n _a_r_e _d_e_l_e_t_e_d _a_n_d _t_h_e // _f_o_l_l_o_w_i_n_g _p_a_t_t_e_r_n _m_a_y _b_e _o_m_i_t_- + _t_e_d_. _I_f _p_a_r_a_m_e_t_e_r is @@ or **, the substitution 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 substitution 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`` + + BBaasshh performs the expansion by executing _c_o_m_m_a_n_d and replacing the com- + mand substitution with the standard output of the command, with any + trailing newlines deleted. Embedded newlines are not deleted, but they + may be removed during word splitting. The command substitution $$((ccaatt + _f_i_l_e)) can be replaced by the equivalent but faster $$((<< _f_i_l_e)). + + When the old-style backquote form of substitution is used, backslash + retains its literal meaning except when followed by $$, ``, or \\. The + first backquote not preceded by a backslash terminates the command sub- + stitution. When using the $(_c_o_m_m_a_n_d) form, all characters between the + parentheses make up the command; none are treated specially. + + Command substitutions may be nested. To nest when using the backquoted + form, escape the inner backquotes with backslashes. + + If the substitution appears within double quotes, word splitting and + pathname expansion are not performed on the results. + + AArriitthhmmeettiicc EExxppaannssiioonn + Arithmetic expansion allows the evaluation of an arithmetic expression + and the substitution of the result. The format for arithmetic expan- + sion is: + + $$((((_e_x_p_r_e_s_s_i_o_n)))) + + 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 + nested. + + 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- + 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 + 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 + expansion. + + WWoorrdd SSpplliittttiinngg + 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 any sequence of IIFFSS characters 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 white- + space, 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 + 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 dis- + abled, 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. + + 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 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. + ?? Matches any single character. + [[......]] Matches any one of the enclosed characters. A pair of charac- + ters separated by a hyphen denotes a _r_a_n_g_e _e_x_p_r_e_s_s_i_o_n; any char- + acter that sorts between those two characters, 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 character not enclosed is matched. The sorting order + of characters 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 charac- + ter 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 ppuunncctt + ssppaaccee uuppppeerr wwoorrdd xxddiiggiitt + A character class matches any character belonging to that class. + The wwoorrdd character class matches letters, digits, and the char- + acter _. + + 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 colla- + tion weight (as defined by the current locale) as the character + _c. + + Within [[ and ]], the syntax [[.._s_y_m_b_o_l..]] matches the collating sym- + bol _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 + 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: + + ??((_p_a_t_t_e_r_n_-_l_i_s_t)) + Matches zero or one occurrence of the given patterns + **((_p_a_t_t_e_r_n_-_l_i_s_t)) + Matches zero or more occurrences of the given patterns + ++((_p_a_t_t_e_r_n_-_l_i_s_t)) + Matches one or more occurrences of the given patterns + @@((_p_a_t_t_e_r_n_-_l_i_s_t)) + Matches one of the given patterns + !!((_p_a_t_t_e_r_n_-_l_i_s_t)) + Matches anything except one of the given patterns + + QQuuoottee RReemmoovvaall + After the preceding expansions, all unquoted occurrences of the charac- + 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. + + In the following descriptions, if the file descriptor number is omit- + ted, and the first character of the redirection operator is <<, the re- + direction refers to the standard input (file descriptor 0). If the + first character of the redirection operator is >>, the redirection + refers to the standard output (file descriptor 1). + + 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. + + 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, + 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 as standard output before the standard output 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- + cated. + //ddeevv//ssttddiinn + File descriptor 0 is duplicated. + //ddeevv//ssttddoouutt + File descriptor 1 is duplicated. + //ddeevv//ssttddeerrrr + 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. + //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. + + 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- + 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 + standard input (file descriptor 0) if _n is not specified. + + The general format for redirecting input is: + + [_n]<<_w_o_r_d + + RReeddiirreeccttiinngg OOuuttppuutt + 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 + 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 >>||, 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 + specified. If the file does not exist it is created. + + The general format for appending output is: + + [_n]>>>>_w_o_r_d + + + RReeddiirreeccttiinngg SSttaannddaarrdd OOuuttppuutt aanndd SSttaannddaarrdd EErrrroorr + BBaasshh allows both the standard output (file descriptor 1) and the stan- + dard error output (file descriptor 2) to be redirected to the file + whose name is the expansion of _w_o_r_d with this construct. + + There are two formats for redirecting standard output and standard + error: + + &&>>_w_o_r_d + and + >>&&_w_o_r_d + + Of the two forms, the first is preferred. This is semantically equiva- + lent to + + >>_w_o_r_d 2>>&&1 + + HHeerree DDooccuummeennttss + This type of redirection instructs the shell to read input from the + current source until a line containing only _w_o_r_d (with no trailing + 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: + + <<<<[--]_w_o_r_d + _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 ``. + + 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 + fashion. + + HHeerree SSttrriinnggss + A variant of here documents, the format is: + + <<<<<<_w_o_r_d + + The _w_o_r_d is expanded and supplied to the command on its standard input. + + DDuupplliiccaattiinngg FFiillee DDeessccrriippttoorrss + The redirection operator + + [_n]<<&&_w_o_r_d + + is used to duplicate input file descriptors. If _w_o_r_d expands to one or + more digits, the file descriptor denoted by _n is made to be a copy of + that file descriptor. If the digits in _w_o_r_d do not specify a file + descriptor open for input, a redirection error occurs. If _w_o_r_d evalu- + ates to --, file descriptor _n is closed. If _n is not specified, the + standard input (file descriptor 0) is used. + + The operator + + [_n]>>&&_w_o_r_d + + 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. + + 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 + input (file descriptor 0) if _n is not specified. _d_i_g_i_t is closed after + being duplicated to _n. + + Similarly, 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 + output (file descriptor 1) if _n is not specified. + + OOppeenniinngg FFiillee DDeessccrriippttoorrss ffoorr RReeaaddiinngg aanndd WWrriittiinngg + The redirection operator + + [_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 + 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 + 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 + 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 + 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 + 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 + 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- + 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- + 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 + 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 + positional parameters during its execution. The special parameter ## is + updated to reflect the change. Special parameter 0 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 between a function and its caller + with the exception that the DDEEBBUUGG and RREETTUURRNN traps (see the description + of the ttrraapp builtin under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) are not inher- + ited 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 func- + tions inherit the DDEEBBUUGG and RREETTUURRNN traps). + + 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. + + 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 + values they had prior to the function's execution. + + 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 + functions and variables with the same name may result in multiple iden- + 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. 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 + order of decreasing precedence. + + _i_d++++ _i_d---- + variable post-increment and post-decrement + ++++_i_d ----_i_d + variable pre-increment and pre-decrement + -- ++ unary minus and plus + !! ~~ logical and bitwise negation + **** exponentiation + ** // %% multiplication, division, remainder + ++ -- addition, subtraction + <<<< >>>> left and right bitwise shifts + <<== >>== << >> + comparison + ==== !!== equality and inequality + && bitwise AND + ^^ bitwise exclusive OR + || bitwise OR + &&&& logical AND + |||| logical OR + _e_x_p_r??_e_x_p_r::_e_x_p_r + conditional operator + == **== //== %%== ++== --== <<<<== >>>>== &&== ^^== ||== + assignment + _e_x_p_r_1 ,, _e_x_p_r_2 + comma + + 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 + 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 + attribute using ddeeccllaarree --ii is assigned a value. A null value evaluates + to 0. A shell variable need not have its integer 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 _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 omit- + ted, 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 + 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- + 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, + 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. + + --aa _f_i_l_e + True if _f_i_l_e exists. + --bb _f_i_l_e + True if _f_i_l_e exists and is a block special file. + --cc _f_i_l_e + True if _f_i_l_e exists and is a character special file. + --dd _f_i_l_e + True if _f_i_l_e exists and is a directory. + --ee _f_i_l_e + True if _f_i_l_e exists. + --ff _f_i_l_e + True if _f_i_l_e exists and is a regular file. + --gg _f_i_l_e + True if _f_i_l_e exists and is set-group-id. + --hh _f_i_l_e + True if _f_i_l_e exists and is a symbolic link. + --kk _f_i_l_e + True if _f_i_l_e exists and its ``sticky'' bit is set. + --pp _f_i_l_e + True if _f_i_l_e exists and is a named pipe (FIFO). + --rr _f_i_l_e + True if _f_i_l_e exists and is readable. + --ss _f_i_l_e + True if _f_i_l_e exists and has a size greater than zero. + --tt _f_d True if file descriptor _f_d is open and refers to a terminal. + --uu _f_i_l_e + True if _f_i_l_e exists and its set-user-id bit is set. + --ww _f_i_l_e + True if _f_i_l_e exists and is writable. + --xx _f_i_l_e + True if _f_i_l_e exists and is executable. + --OO _f_i_l_e + True if _f_i_l_e exists and is owned by the effective user id. + --GG _f_i_l_e + True if _f_i_l_e exists and is owned by the effective group id. + --LL _f_i_l_e + True if _f_i_l_e exists and is a symbolic link. + --SS _f_i_l_e + True if _f_i_l_e exists and is a socket. + --NN _f_i_l_e + True if _f_i_l_e exists and has been modified since it was last + read. + _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 + _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 + does not. + _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- + bers. + --oo _o_p_t_n_a_m_e + True if 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. + --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 + --nn _s_t_r_i_n_g + True if the length of _s_t_r_i_n_g is non-zero. + + _s_t_r_i_n_g_1 ==== _s_t_r_i_n_g_2 + True if the strings are equal. == may be used in place of ==== for + strict POSIX compliance. + + _s_t_r_i_n_g_1 !!== _s_t_r_i_n_g_2 + True if the strings are not equal. + + _s_t_r_i_n_g_1 << _s_t_r_i_n_g_2 + True if _s_t_r_i_n_g_1 sorts before _s_t_r_i_n_g_2 lexicographically in the + current locale. + + _s_t_r_i_n_g_1 >> _s_t_r_i_n_g_2 + True if _s_t_r_i_n_g_1 sorts after _s_t_r_i_n_g_2 lexicographically in the + current locale. + + _a_r_g_1 OOPP _a_r_g_2 + OOPP is one of --eeqq, --nnee, --lltt, --llee, --ggtt, or --ggee. These arithmetic + binary operators return true if _a_r_g_1 is equal to, not equal to, + less than, less than or equal to, greater than, or greater than + or equal to _a_r_g_2, respectively. _A_r_g_1 and _a_r_g_2 may be positive + or negative integers. + +SSIIMMPPLLEE CCOOMMMMAANNDD EEXXPPAANNSSIIOONN + When a simple command is executed, the shell performs the following + expansions, assignments, and redirections, from left to right. + + 1. The words that the parser has marked as variable assignments + (those preceding the command name) and redirections are saved + for later processing. + + 2. The words that are not variable assignments or redirections are + expanded. If any words remain after expansion, the first word + is taken to be the name of the command and the remaining words + are the arguments. + + 3. Redirections are performed as described above under RREEDDIIRREECCTTIIOONN. + + 4. The text after the == in each variable assignment undergoes tilde + expansion, parameter expansion, command substitution, arithmetic + expansion, and quote removal before being assigned to the vari- + able. + + If no command name results, the variable assignments affect the current + shell environment. Otherwise, the variables are added to the environ- + ment of the executed command and do not affect the current shell envi- + ronment. If any of the assignments attempts to assign a value to a + readonly variable, an error occurs, and the command exits with a non- + zero status. + + If no command name results, redirections are performed, but do not + affect the current shell environment. A redirection error causes the + command to exit with a non-zero status. + + If there is a command name left after expansion, execution proceeds as + described below. Otherwise, the command exits. If one of the expan- + sions contained a command substitution, the exit status of the command + is the exit status of the last command substitution performed. If + there were no command substitutions, the command exits with a status of + zero. + +CCOOMMMMAANNDD EEXXEECCUUTTIIOONN + After a command has been split into words, if it results in a simple + command and an optional list of arguments, the following actions are + taken. + + If the command name contains no slashes, the shell attempts to locate + it. If there exists a shell function by that name, that function is + invoked as described above in FFUUNNCCTTIIOONNSS. If the name does not match a + function, the shell searches for it in the list of shell builtins. If + a match is found, that builtin is invoked. + + If the name is neither a shell function nor a builtin, and contains no + slashes, bbaasshh searches each element of the PPAATTHH for a directory con- + taining an executable file by that name. BBaasshh uses a hash table to + remember the full pathnames of executable files (see hhaasshh under SSHHEELLLL + BBUUIILLTTIINN CCOOMMMMAANNDDSS below). A full search of the directories in PPAATTHH is + performed only if the command is not found in the hash table. If the + search is unsuccessful, the shell prints an error message and returns + an exit status of 127. + + If the search is successful, or if the command name contains one or + more slashes, the shell executes the named program in a separate execu- + tion environment. Argument 0 is set to the name given, and the remain- + ing arguments to the command are set to the arguments given, if any. + + If this execution fails because the file is not in executable format, + and the file is not a directory, it is assumed to be a _s_h_e_l_l _s_c_r_i_p_t, a + file containing shell commands. A subshell is spawned to execute it. + This subshell reinitializes itself, so that the effect is as if a new + shell had been invoked to handle the script, with the exception that + the locations of commands remembered by the parent (see hhaasshh below + under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS) are retained by the child. + + If the program is a file beginning with ##!!, the remainder of the first + line specifies an interpreter for the program. The shell executes the + specified interpreter on operating systems that do not handle this exe- + cutable format themselves. The arguments to the interpreter consist of + a single optional argument following the interpreter name on the first + line of the program, followed by the name of the program, followed by + the command arguments, if any. + +CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT + 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 + + +o the current working directory as set by ccdd, ppuusshhdd, or ppooppdd, or + inherited by the shell at invocation + + +o the file creation mode mask as set by uummaasskk or inherited from + the shell's parent + + +o current traps set by ttrraapp + + +o shell parameters that are set by variable assignment or with sseett + or inherited from the shell's parent in the environment + + +o shell functions defined during execution or inherited from the + shell's parent in the environment + + +o options enabled at invocation (either by default or with com- + mand-line arguments) or by sseett + + +o options enabled by sshhoopptt + + +o shell aliases defined with aalliiaass + + +o various process IDs, including those of background jobs, the + value of $$$$, and the value of $$PPPPIIDD + + When a simple command other than a builtin or shell function is to be + executed, it is invoked in a separate execution environment that con- + sists of the following. Unless otherwise noted, the values are inher- + ited from the shell. + + + +o the shell's open files, plus any modifications and additions + specified by redirections to the command + + +o the current working directory + + +o the file creation mode mask + + +o shell variables and functions marked for export, along with + variables exported for the command, passed in the environment + + +o traps caught by the shell are reset to the values inherited from + the shell's parent, and traps ignored by the shell are ignored + + A command invoked in this separate environment cannot affect the + shell's execution environment. + + Command substitution, commands grouped with parentheses, and asynchro- + nous commands are invoked in a subshell environment that is a duplicate + of the shell environment, except that traps caught by the shell are + reset to the values that the shell inherited from its parent at invoca- + tion. Builtin commands that are invoked as part of a pipeline are also + executed in a subshell environment. Changes made to the subshell envi- + ronment cannot affect the shell's execution environment. + + If a command is followed by a && and job control is not active, the + default standard input for the command is the empty file _/_d_e_v_/_n_u_l_l. + Otherwise, the invoked command inherits the file descriptors of the + calling shell as modified by redirections. + +EENNVVIIRROONNMMEENNTT + When a program is invoked it is given an array of strings called the + _e_n_v_i_r_o_n_m_e_n_t. This is a list of _n_a_m_e-_v_a_l_u_e pairs, of the form + _n_a_m_e=_v_a_l_u_e. + + The shell provides several ways to manipulate the environment. On + invocation, the shell scans its own environment and creates a parameter + for each name found, automatically marking it for _e_x_p_o_r_t to child pro- + cesses. Executed commands inherit the environment. The eexxppoorrtt and + ddeeccllaarree --xx commands allow parameters and functions to be added to and + deleted from the environment. If the value of a parameter in the envi- + ronment is modified, the new value becomes part of the environment, + replacing the old. The environment inherited by any executed command + consists of the shell's initial environment, whose values may be modi- + fied in the shell, less any pairs removed by the uunnsseett command, plus + any additions via the eexxppoorrtt and ddeeccllaarree --xx commands. + + The environment for any _s_i_m_p_l_e _c_o_m_m_a_n_d or function may be augmented + temporarily by prefixing it with parameter assignments, as described + above in PPAARRAAMMEETTEERRSS. These assignment statements affect only the envi- + ronment seen by that command. + + If the --kk option is set (see the sseett builtin command below), then _a_l_l + parameter assignments are placed in the environment for a command, not + 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. + +EEXXIITT SSTTAATTUUSS + For the shell's purposes, a command which exits with a zero exit status + has succeeded. An exit status of zero indicates success. A non-zero + exit status indicates failure. When a command terminates on a fatal + signal _N, bbaasshh uses the value of 128+_N as the exit status. + + If a command is not found, the child process created to execute it + returns a status of 127. If a command is found but is not executable, + the return status is 126. + + If a command fails because of an error during expansion or redirection, + the exit status is greater than zero. + + Shell builtin commands return a status of 0 (_t_r_u_e) if successful, and + non-zero (_f_a_l_s_e) if an error occurs while they execute. All builtins + return an exit status of 2 to indicate incorrect usage. + + BBaasshh itself returns the exit status of the last command executed, + unless a syntax error occurs, in which case it exits with a non-zero + value. See also the eexxiitt builtin command below. + +SSIIGGNNAALLSS + When bbaasshh is interactive, in the absence of any traps, it ignores + SSIIGGTTEERRMM (so that kkiillll 00 does not kill an interactive shell), and SSIIGGIINNTT + is caught and handled (so that the wwaaiitt builtin is interruptible). In + all cases, bbaasshh ignores SSIIGGQQUUIITT. If job control is in effect, bbaasshh + ignores SSIIGGTTTTIINN, SSIIGGTTTTOOUU, and SSIIGGTTSSTTPP. + + Non-builtin commands run by bbaasshh have signal handlers set to the values + inherited by the shell from its parent. When job control is not in + effect, asynchronous commands ignore SSIIGGIINNTT and SSIIGGQQUUIITT in addition to + these inherited handlers. Commands run as a result of command substi- + tution ignore the keyboard-generated job control signals SSIIGGTTTTIINN, SSIIGGTT-- + TTOOUU, and SSIIGGTTSSTTPP. + + The shell exits by default upon receipt of a SSIIGGHHUUPP. Before exiting, + an interactive shell resends the SSIIGGHHUUPP to all jobs, running or + stopped. Stopped jobs are sent SSIIGGCCOONNTT to ensure that they receive the + SSIIGGHHUUPP. To prevent the shell from sending the signal to a particular + job, it should be removed from the jobs table with the ddiissoowwnn builtin + (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) or marked to not receive SSIIGGHHUUPP + using ddiissoowwnn --hh. + + If the hhuuppoonneexxiitt shell option has been set with sshhoopptt, bbaasshh sends a + SSIIGGHHUUPP to all jobs when an interactive login shell exits. + + If bbaasshh is waiting for a command to complete and receives a signal for + which a trap has been set, the trap will not be executed until the com- + mand completes. When bbaasshh is waiting for an asynchronous command via + the wwaaiitt builtin, the reception of a signal for which a trap has been + set will cause the wwaaiitt builtin to return immediately with an exit sta- + tus greater than 128, immediately after which the trap is executed. + +JJOOBB CCOONNTTRROOLL + _J_o_b _c_o_n_t_r_o_l refers to the ability to selectively stop (_s_u_s_p_e_n_d) the + execution of processes and continue (_r_e_s_u_m_e) their execution at a later + point. A user typically employs this facility via an interactive + interface supplied jointly by the system's terminal driver and bbaasshh. + + The shell associates a _j_o_b with each pipeline. It keeps a table of + currently executing jobs, which may be listed with the jjoobbss command. + When bbaasshh starts a job asynchronously (in the _b_a_c_k_g_r_o_u_n_d), it prints a + line that looks like: + + [1] 25647 + + indicating that this job is job number 1 and that the process ID of the + last process in the pipeline associated with this job is 25647. All of + the processes in a single pipeline are members of the same job. BBaasshh + uses the _j_o_b abstraction as the basis for job control. + + To facilitate the implementation of the user interface to job control, + the operating system maintains the notion of a _c_u_r_r_e_n_t _t_e_r_m_i_n_a_l _p_r_o_c_e_s_s + _g_r_o_u_p _I_D. Members of this process group (processes whose process group + ID is equal to the current terminal process group ID) receive keyboard- + generated signals such as SSIIGGIINNTT. These processes are said to be in + the _f_o_r_e_g_r_o_u_n_d. _B_a_c_k_g_r_o_u_n_d processes are those whose process group ID + differs from the terminal's; such processes are immune to keyboard-gen- + erated signals. Only foreground processes are allowed to read from or + write to the terminal. Background processes which attempt to read from + (write to) the terminal are sent a SSIIGGTTTTIINN ((SSIIGGTTTTOOUU)) signal by the ter- + minal driver, which, unless caught, suspends the process. + + If the operating system on which bbaasshh is running supports job control, + bbaasshh contains facilities to use it. Typing the _s_u_s_p_e_n_d character (typ- + ically ^^ZZ, Control-Z) while a process is running causes that process to + be stopped and returns control to bbaasshh. Typing the _d_e_l_a_y_e_d _s_u_s_p_e_n_d + character (typically ^^YY, Control-Y) causes the process to be stopped + when it attempts to read input from the terminal, and control to be + returned to bbaasshh. The user may then manipulate the state of this job, + using the bbgg command to continue it in the background, the ffgg command + to continue it in the foreground, or the kkiillll command to kill it. A ^^ZZ + takes effect immediately, and has the additional side effect of causing + pending output and typeahead to be discarded. + + There are a number of ways to refer to a job in the shell. The charac- + ter %% introduces a job name. Job number _n may be referred to as %%nn. A + job may also be referred to using a prefix of the name used to start + it, or using a substring that appears in its command line. For exam- + ple, %%ccee refers to a stopped ccee job. If a prefix matches more than one + job, bbaasshh reports an error. Using %%??ccee, on the other hand, refers to + any job containing the string ccee in its command line. If the substring + matches more than one job, bbaasshh reports an error. The symbols %%%% and + %%++ refer to the shell's notion of the _c_u_r_r_e_n_t _j_o_b, which is the last + job stopped while it was in the foreground or started in the back- + ground. The _p_r_e_v_i_o_u_s _j_o_b may be referenced using %%--. In output per- + taining to jobs (e.g., the output of the jjoobbss command), the current job + is always flagged with a ++, and the previous job with a --. A single % + (with no accompanying job specification) also refers to the current + job. + + Simply naming a job can be used to bring it into the foreground: %%11 is + a synonym for ````ffgg %%11'''', bringing job 1 from the background into the + foreground. Similarly, ````%%11 &&'''' resumes job 1 in the background, + equivalent to ````bbgg %%11''''. + + The shell learns immediately whenever a job changes state. Normally, + bbaasshh waits until it is about to print a prompt before reporting changes + in a job's status so as to not interrupt any other output. If the --bb + option to the sseett builtin command is enabled, bbaasshh reports such changes + immediately. Any trap on SSIIGGCCHHLLDD is executed for each child that + exits. + + If an attempt to exit bbaasshh is made while jobs are stopped, the shell + prints a warning message. The jjoobbss command may then be used to inspect + their status. If a second attempt to exit is made without an interven- + ing command, the shell does not print another warning, and the stopped + jobs are terminated. + +PPRROOMMPPTTIINNGG + When executing interactively, bbaasshh displays the primary prompt PPSS11 when + it is ready to read a command, and the secondary prompt PPSS22 when it + needs more input to complete a command. BBaasshh allows these prompt + strings to be customized by inserting a number of backslash-escaped + special characters that are decoded as follows: + \\aa an ASCII bell character (07) + \\dd the date in "Weekday Month Date" format (e.g., "Tue May + 26") + \\DD{{_f_o_r_m_a_t}} + the _f_o_r_m_a_t is passed to _s_t_r_f_t_i_m_e(3) and the result is + inserted into the prompt string; an empty _f_o_r_m_a_t results + in a locale-specific time representation. The braces are + required + \\ee an ASCII escape character (033) + \\hh the hostname up to the first `.' + \\HH the hostname + \\jj the number of jobs currently managed by the shell + \\ll the basename of the shell's terminal device name + \\nn newline + \\rr carriage return + \\ss the name of the shell, the basename of $$00 (the portion + following the final slash) + \\tt the current time in 24-hour HH:MM:SS format + \\TT the current time in 12-hour HH:MM:SS format + \\@@ the current time in 12-hour am/pm format + \\AA the current time in 24-hour HH:MM format + \\uu the username of the current user + \\vv the version of bbaasshh (e.g., 2.00) + \\VV the release of bbaasshh, version + patch level (e.g., 2.00.0) + \\ww the current working directory, with $$HHOOMMEE abbreviated + with a tilde + \\WW the basename of the current working directory, with $$HHOOMMEE + abbreviated with a tilde + \\!! the history number of this command + \\## the command number of this command + \\$$ if the effective UID is 0, a ##, otherwise a $$ + \\_n_n_n the character corresponding to the octal number _n_n_n + \\\\ a backslash + \\[[ begin a sequence of non-printing characters, which could + be used to embed a terminal control sequence into the + prompt + \\]] end a sequence of non-printing characters + + The command number and the history number are usually different: the + history number of a command is its position in the history list, which + may include commands restored from the history file (see HHIISSTTOORRYY + below), while the command number is the position in the sequence of + commands executed during the current shell session. After the string + is decoded, it is expanded via parameter expansion, command substitu- + tion, arithmetic expansion, and quote removal, subject to the value of + the pprroommppttvvaarrss shell option (see the description of the sshhoopptt command + under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). + +RREEAADDLLIINNEE + This is the library that handles reading input when using an interac- + tive shell, unless the ----nnooeeddiittiinngg option is given at shell invocation. + By default, the line editing commands are similar to those of emacs. A + vi-style line editing interface is also available. To turn off line + editing after the shell is running, use the ++oo eemmaaccss or ++oo vvii options + to the sseett builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). + + RReeaaddlliinnee NNoottaattiioonn + In this section, the emacs-style notation is used to denote keystrokes. + Control keys are denoted by C-_k_e_y, e.g., C-n means Control-N. Simi- + larly, _m_e_t_a keys are denoted by M-_k_e_y, so M-x means Meta-X. (On key- + boards without a _m_e_t_a key, M-_x means ESC _x, i.e., press the Escape key + then the _x key. This makes ESC the _m_e_t_a _p_r_e_f_i_x. The combination M-C-_x + means ESC-Control-_x, or press the Escape key then hold the Control key + while pressing the _x key.) + + Readline commands may be given numeric _a_r_g_u_m_e_n_t_s, which normally act as + a repeat count. Sometimes, however, it is the sign of the argument + that is significant. Passing a negative argument to a command that + acts in the forward direction (e.g., kkiillll--lliinnee) causes that command to + act in a backward direction. Commands whose behavior with arguments + deviates from this are noted below. + + When a command is described as _k_i_l_l_i_n_g text, the text deleted is saved + for possible future retrieval (_y_a_n_k_i_n_g). The killed text is saved in a + _k_i_l_l _r_i_n_g. Consecutive kills cause the text to be accumulated into one + unit, which can be yanked all at once. Commands which do not kill text + separate the chunks of text on the kill ring. + + RReeaaddlliinnee IInniittiiaalliizzaattiioonn + Readline is customized by putting commands in an initialization file + (the _i_n_p_u_t_r_c file). The name of this file is taken from the value of + the IINNPPUUTTRRCC variable. If that variable is unset, the default is + _~_/_._i_n_p_u_t_r_c. When a program which uses the readline library starts up, + the initialization file is read, and the key bindings and variables are + set. There are only a few basic constructs allowed in the readline + initialization file. Blank lines are ignored. Lines beginning with a + ## are comments. Lines beginning with a $$ indicate conditional con- + structs. Other lines denote key bindings and variable settings. + + The default key-bindings may be changed with an _i_n_p_u_t_r_c file. Other + programs that use this library may add their own commands and bindings. + + For example, placing + + M-Control-u: universal-argument + or + C-Meta-u: universal-argument + into the _i_n_p_u_t_r_c would make M-C-u execute the readline command _u_n_i_v_e_r_- + _s_a_l_-_a_r_g_u_m_e_n_t. + + The following symbolic character names are recognized: _R_U_B_O_U_T, _D_E_L, + _E_S_C, _L_F_D, _N_E_W_L_I_N_E, _R_E_T, _R_E_T_U_R_N, _S_P_C, _S_P_A_C_E, and _T_A_B. + + In addition to command names, readline allows keys to be bound to a + string that is inserted when the key is pressed (a _m_a_c_r_o). + + RReeaaddlliinnee KKeeyy BBiinnddiinnggss + The syntax for controlling key bindings in the _i_n_p_u_t_r_c file is simple. + All that is required is the name of the command or the text of a macro + and a key sequence to which it should be bound. The name may be speci- + fied in one of two ways: as a symbolic key name, possibly with _M_e_t_a_- or + _C_o_n_t_r_o_l_- prefixes, or as a key sequence. + + When using the form kkeeyynnaammee:_f_u_n_c_t_i_o_n_-_n_a_m_e or _m_a_c_r_o, _k_e_y_n_a_m_e is the name + of a key spelled out in English. For example: + + Control-u: universal-argument + Meta-Rubout: backward-kill-word + Control-o: "> output" + + In the above example, _C_-_u is bound to the function uunniivveerrssaall--aarrgguummeenntt, + _M_-_D_E_L is bound to the function bbaacckkwwaarrdd--kkiillll--wwoorrdd, and _C_-_o is bound to + run the macro expressed on the right hand side (that is, to insert the + text ``> output'' into the line). + + In the second form, ""kkeeyysseeqq"":_f_u_n_c_t_i_o_n_-_n_a_m_e or _m_a_c_r_o, kkeeyysseeqq differs + from kkeeyynnaammee above in that strings denoting an entire key sequence may + be specified by placing the sequence within double quotes. Some GNU + Emacs style key escapes can be used, as in the following example, but + the symbolic character names are not recognized. + + "\C-u": universal-argument + "\C-x\C-r": re-read-init-file + "\e[11~": "Function Key 1" + + In this example, _C_-_u is again bound to the function uunniivveerrssaall--aarrgguummeenntt. + _C_-_x _C_-_r is bound to the function rree--rreeaadd--iinniitt--ffiillee, and _E_S_C _[ _1 _1 _~ is + bound to insert the text ``Function Key 1''. + + The full set of GNU Emacs style escape sequences is + \\CC-- control prefix + \\MM-- meta prefix + \\ee an escape character + \\\\ backslash + \\"" literal " + \\'' literal ' + + In addition to the GNU Emacs style escape sequences, a second set of + backslash escapes is available: + \\aa alert (bell) + \\bb backspace + \\dd delete + \\ff form feed + \\nn newline + \\rr carriage return + \\tt horizontal tab + \\vv vertical tab + \\_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 + value _H_H (one or two hex digits) + + When entering the text of a macro, single or double quotes must be used + to indicate a macro definition. Unquoted text is assumed to be a func- + tion name. In the macro body, the backslash escapes described above + are expanded. Backslash will quote any other character in the macro + text, including " and '. + + BBaasshh allows the current readline key bindings to be displayed or modi- + fied with the bbiinndd builtin command. The editing mode may be switched + during interactive use by using the --oo option to the sseett builtin com- + mand (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). + + RReeaaddlliinnee VVaarriiaabblleess + Readline has variables that can be used to further customize its behav- + ior. A variable may be set in the _i_n_p_u_t_r_c file with a statement of the + form + + sseett _v_a_r_i_a_b_l_e_-_n_a_m_e _v_a_l_u_e + + Except where noted, readline variables can take the values OOnn or OOffff + (without regard to case). Unrecognized variable names are ignored. + When a variable value is read, empty or null values, "on" (case-insen- + sitive), and "1" are equivalent to OOnn. All other values are equivalent + to OOffff. The variables and their default values are: + + bbeellll--ssttyyllee ((aauuddiibbllee)) + Controls what happens when readline wants to ring the terminal + bell. If set to nnoonnee, readline never rings the bell. If set to + vviissiibbllee, readline uses a visible bell if one is available. If + set to aauuddiibbllee, readline attempts to ring the terminal's bell. + bbiinndd--ttttyy--ssppeecciiaall--cchhaarrss ((OOnn)) + If set to OOnn, readline attempts to bind the control characters + treated specially by the kernel's terminal driver to their read- + line equivalents. + ccoommmmeenntt--bbeeggiinn ((````##'''')) + 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--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 + 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 + simply listed on the terminal. + ccoonnvveerrtt--mmeettaa ((OOnn)) + 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 + _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 + 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. + 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 + arrow keys. + eexxppaanndd--ttiillddee ((OOffff)) + 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-- + ttoorryy or nneexxtt--hhiissttoorryy. + hhoorriizzoonnttaall--ssccrroollll--mmooddee ((OOffff)) + 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 + 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), + 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- + 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 + value of eeddiittiinngg--mmooddee also affects the default keymap. + 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- + 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 + 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, unless the leading `.' is supplied by the + user in the filename to be completed. + oouuttppuutt--mmeettaa ((OOffff)) + 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- + 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 + screen. + sshhooww--aallll--iiff--aammbbiigguuoouuss ((OOffff)) + 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 + the bell. + sshhooww--aallll--iiff--uunnmmooddiiffiieedd ((OOffff)) + 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 + instead of ringing the bell. + 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- + 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 + 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; + 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 + emacs mode. + + 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, + 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 + 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 + Bash: + + $$iiff Bash + # Quote the current or previous word + "\C-xq": "\eb\"\ef\"" + $$eennddiiff + + $$eennddiiff This command, as seen in the previous example, terminates an $$iiff + command. + + $$eellssee Commands in this branch of the $$iiff directive are executed if the + test fails. + + $$iinncclluuddee + 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 + (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- + 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 + 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 + 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- + 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 + 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 + 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 + 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 + point and mark is referred to as the _r_e_g_i_o_n. + + CCoommmmaannddss ffoorr MMoovviinngg + bbeeggiinnnniinngg--ooff--lliinnee ((CC--aa)) + Move to the start of the current line. + eenndd--ooff--lliinnee ((CC--ee)) + Move to the end of the line. + ffoorrwwaarrdd--cchhaarr ((CC--ff)) + Move forward a character. + bbaacckkwwaarrdd--cchhaarr ((CC--bb)) + Move back a character. + ffoorrwwaarrdd--wwoorrdd ((MM--ff)) + 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 + are composed of alphanumeric characters (letters and digits). + 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 + clearing the screen. + rreeddrraaww--ccuurrrreenntt--lliinnee + Refresh the current line. + + 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 + 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 + 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 + 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. + 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. + 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 + user. + nnoonn--iinnccrreemmeennttaall--ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((MM--nn)) + 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 + 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 + non-incremental search. + yyaannkk--nntthh--aarrgg ((MM--CC--yy)) + 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 + inserts the _nth word from the end of the previous command. Once + 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 + of the previous history entry). With an argument, behave + exactly like yyaannkk--nntthh--aarrgg. Successive calls to yyaannkk--llaasstt--aarrgg + move back through the history list, inserting the last argument + of each line in turn. The history expansion facilities are used + to extract the last argument, 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--eexxppaanndd--lliinnee ((MM--^^)) + 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 + space. See HHIISSTTOORRYY EEXXPPAANNSSIIOONN below for a description of history + expansion. + aalliiaass--eexxppaanndd--lliinnee + 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 + 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 $$FFCCEEDDIITT, + $$EEDDIITTOORR, and _e_m_a_c_s as the editor, in that order. + + CCoommmmaannddss ffoorr CChhaannggiinngg TTeexxtt + 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. + bbaacckkwwaarrdd--ddeelleettee--cchhaarr ((RRuubboouutt)) + Delete the character behind the cursor. When given a numeric + argument, save the deleted text on the kill ring. + ffoorrwwaarrdd--bbaacckkwwaarrdd--ddeelleettee--cchhaarr + Delete the character under the cursor, unless the cursor is at + the end of the line, in which case the character behind the cur- + sor is deleted. + qquuootteedd--iinnsseerrtt ((CC--qq,, CC--vv)) + Add the next character typed to the line verbatim. This is how + to insert characters like CC--qq, for example. + ttaabb--iinnsseerrtt ((CC--vv TTAABB)) + Insert a tab character. + sseellff--iinnsseerrtt ((aa,, bb,, AA,, 11,, !!,, ......)) + Insert the character typed. + ttrraannssppoossee--cchhaarrss ((CC--tt)) + Drag the character before point forward over the character at + point, moving point forward as well. If point is at the end of + the line, then this transposes the two characters before point. + Negative arguments have no effect. + ttrraannssppoossee--wwoorrddss ((MM--tt)) + Drag the word before point past the word after point, moving + point over that word as well. If point is at the end of the + line, this transposes the last two words on the line. + uuppccaassee--wwoorrdd ((MM--uu)) + Uppercase the current (or following) word. With a negative + argument, uppercase the previous word, but do not move point. + ddoowwnnccaassee--wwoorrdd ((MM--ll)) + Lowercase the current (or following) word. With a negative + argument, lowercase the previous word, but do not move point. + ccaappiittaalliizzee--wwoorrdd ((MM--cc)) + Capitalize the current (or following) word. With a negative + argument, capitalize the previous word, but do not move point. + oovveerrwwrriittee--mmooddee + Toggle overwrite mode. With an explicit positive numeric argu- + ment, switches to overwrite mode. With an explicit non-positive + numeric argument, switches to insert mode. This command affects + only eemmaaccss mode; vvii mode does overwrite differently. Each call + to _r_e_a_d_l_i_n_e_(_) starts in insert mode. In overwrite mode, charac- + ters bound to sseellff--iinnsseerrtt replace the text at point rather than + pushing the text to the right. Characters bound to bbaacckk-- + wwaarrdd--ddeelleettee--cchhaarr replace the character before point with a + space. By default, this command is unbound. + + KKiilllliinngg aanndd YYaannkkiinngg + kkiillll--lliinnee ((CC--kk)) + Kill the text from point to the end of the line. + bbaacckkwwaarrdd--kkiillll--lliinnee ((CC--xx RRuubboouutt)) + Kill backward to the beginning of the line. + uunniixx--lliinnee--ddiissccaarrdd ((CC--uu)) + Kill backward from point to the beginning of the line. The + killed text is saved on the kill-ring. + kkiillll--wwhhoollee--lliinnee + Kill all characters on the current line, no matter where point + is. + kkiillll--wwoorrdd ((MM--dd)) + Kill from point to the end of the current word, or if between + words, to the end of the next word. Word boundaries are the + same as those used by ffoorrwwaarrdd--wwoorrdd. + bbaacckkwwaarrdd--kkiillll--wwoorrdd ((MM--RRuubboouutt)) + Kill the word behind point. Word boundaries are the same as + those used by bbaacckkwwaarrdd--wwoorrdd. + uunniixx--wwoorrdd--rruubboouutt ((CC--ww)) + Kill the word behind point, using white space as a word bound- + ary. The killed text is saved on the kill-ring. + uunniixx--ffiilleennaammee--rruubboouutt + Kill the word behind point, using white space and the slash + character as the word boundaries. The killed text is saved on + the kill-ring. + ddeelleettee--hhoorriizzoonnttaall--ssppaaccee ((MM--\\)) + Delete all spaces and tabs around point. + kkiillll--rreeggiioonn + Kill the text in the current region. + ccooppyy--rreeggiioonn--aass--kkiillll + Copy the text in the region to the kill buffer. + ccooppyy--bbaacckkwwaarrdd--wwoorrdd + Copy the word before point to the kill buffer. The word bound- + aries are the same as bbaacckkwwaarrdd--wwoorrdd. + ccooppyy--ffoorrwwaarrdd--wwoorrdd + Copy the word following point to the kill buffer. The word + boundaries are the same as ffoorrwwaarrdd--wwoorrdd. + yyaannkk ((CC--yy)) + Yank the top of the kill ring into the buffer at point. + yyaannkk--ppoopp ((MM--yy)) + Rotate the kill ring, and yank the new top. Only works follow- + ing yyaannkk or yyaannkk--ppoopp. + + NNuummeerriicc AArrgguummeennttss + ddiiggiitt--aarrgguummeenntt ((MM--00,, MM--11,, ......,, MM----)) + Add this digit to the argument already accumulating, or start a + new argument. M-- starts a negative argument. + uunniivveerrssaall--aarrgguummeenntt + This is another way to specify an argument. If this command is + followed by one or more digits, optionally with a leading minus + sign, those digits define the argument. If the command is fol- + lowed by digits, executing uunniivveerrssaall--aarrgguummeenntt again ends the + numeric argument, but is otherwise ignored. As a special case, + if this command is immediately followed by a character that is + neither a digit or minus sign, the argument count for the next + command is multiplied by four. The argument count is initially + one, so executing this function the first time makes the argu- + ment count four, a second time makes the argument count sixteen, + and so on. + + CCoommpplleettiinngg + ccoommpplleettee ((TTAABB)) + Attempt to perform completion on the text before point. BBaasshh + attempts completion treating the text as a variable (if the text + begins with $$), username (if the text begins with ~~), hostname + (if the text begins with @@), or command (including aliases and + functions) in turn. If none of these produces a match, filename + completion is attempted. + ppoossssiibbllee--ccoommpplleettiioonnss ((MM--??)) + List the possible completions of the text before point. + iinnsseerrtt--ccoommpplleettiioonnss ((MM--**)) + Insert all completions of the text before point that would have + been generated by ppoossssiibbllee--ccoommpplleettiioonnss. + mmeennuu--ccoommpplleettee + Similar to ccoommpplleettee, but replaces the word to be completed with + a single match from the list of possible completions. Repeated + execution of mmeennuu--ccoommpplleettee steps through the list of possible + completions, inserting each match in turn. At the end of the + list of completions, the bell is rung (subject to the setting of + bbeellll--ssttyyllee) and the original text is restored. An argument of _n + moves _n positions forward in the list of matches; a negative + argument may be used to move backward through the list. This + command is intended to be bound to TTAABB, but is unbound by + default. + ddeelleettee--cchhaarr--oorr--lliisstt + Deletes the character under the cursor if not at the beginning + or end of the line (like ddeelleettee--cchhaarr). If at the end of the + line, behaves identically to ppoossssiibbllee--ccoommpplleettiioonnss. This command + is unbound by default. + ccoommpplleettee--ffiilleennaammee ((MM--//)) + Attempt filename completion on the text before point. + ppoossssiibbllee--ffiilleennaammee--ccoommpplleettiioonnss ((CC--xx //)) + List the possible completions of the text before point, treating + it as a filename. + ccoommpplleettee--uusseerrnnaammee ((MM--~~)) + Attempt completion on the text before point, treating it as a + username. + ppoossssiibbllee--uusseerrnnaammee--ccoommpplleettiioonnss ((CC--xx ~~)) + List the possible completions of the text before point, treating + it as a username. + ccoommpplleettee--vvaarriiaabbllee ((MM--$$)) + Attempt completion on the text before point, treating it as a + shell variable. + ppoossssiibbllee--vvaarriiaabbllee--ccoommpplleettiioonnss ((CC--xx $$)) + List the possible completions of the text before point, treating + it as a shell variable. + ccoommpplleettee--hhoossttnnaammee ((MM--@@)) + Attempt completion on the text before point, treating it as a + hostname. + ppoossssiibbllee--hhoossttnnaammee--ccoommpplleettiioonnss ((CC--xx @@)) + List the possible completions of the text before point, treating + it as a hostname. + ccoommpplleettee--ccoommmmaanndd ((MM--!!)) + Attempt completion on the text before point, treating it as a + command name. Command completion attempts to match the text + against aliases, reserved words, shell functions, shell + builtins, and finally executable filenames, in that order. + ppoossssiibbllee--ccoommmmaanndd--ccoommpplleettiioonnss ((CC--xx !!)) + List the possible completions of the text before point, treating + it as a command name. + ddyynnaammiicc--ccoommpplleettee--hhiissttoorryy ((MM--TTAABB)) + Attempt completion on the text before point, comparing the text + against lines from the history list for possible completion + matches. + ccoommpplleettee--iinnttoo--bbrraacceess ((MM--{{)) + Perform filename completion and insert the list of possible com- + pletions enclosed within braces so the list is available to the + shell (see BBrraaccee EExxppaannssiioonn above). + + KKeeyybbooaarrdd MMaaccrrooss + ssttaarrtt--kkbbdd--mmaaccrroo ((CC--xx (()) + Begin saving the characters typed into the current keyboard + macro. + eenndd--kkbbdd--mmaaccrroo ((CC--xx )))) + Stop saving the characters typed into the current keyboard macro + and store the definition. + 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. + + 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 + bindings or variable assignments found there. + aabboorrtt ((CC--gg)) + 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 + 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 + 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, + 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 + 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- + 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- + quent occurrences. + iinnsseerrtt--ccoommmmeenntt ((MM--##)) + 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- + 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 + 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 + 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 + 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 + pathname expansion. + dduummpp--ffuunnccttiioonnss + 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 + _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 + 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 + 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. + + 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- + grammable completion facilities are invoked. + + First, the command name is identified. 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. + + 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 + shell variable FFIIGGNNOORREE is used to filter the matches. + + Any completions specified by a filename 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 + 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 + 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 + function is invoked, the CCOOMMPP__LLIINNEE and CCOOMMPP__PPOOIINNTT 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 + 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. + A leading !! negates the pattern; in this case any completion not match- + ing the pattern will be removed. + + Finally, any prefix and suffix specified with the --PP and --SS options are + 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 + defined, directory name completion is attempted. + + 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 + 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- + 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, + 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 + setting of the mmaarrkk--ssyymmlliinnkkeedd--ddiirreeccttoorriieess readline variable. + +HHIISSTTOORRYY + 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 + 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 + 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 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. After saving the history, the history file + is truncated to contain no more than HHIISSTTFFIILLEESSIIZZEE lines. If HHIISSTTFFIILLEE-- + SSIIZZEE is not set, no truncation is performed. + + 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-- + ttoorryy builtin may be used to display or modify the history list and + manipulate the history file. When using command-line editing, search + commands are available in each editing mode that provide access to the + history list. + + The shell allows control over which commands are saved on the history + list. The HHIISSTTCCOONNTTRROOLL and HHIISSTTIIGGNNOORREE variables may be set to cause the + shell to save only a subset of the commands entered. The ccmmddhhiisstt shell + option, if enabled, causes the shell to attempt to save each line of a + multi-line command in the same history entry, adding semicolons where + necessary to preserve syntactic correctness. The lliitthhiisstt shell option + causes the shell to save the command with embedded newlines instead of + semicolons. See the description of the sshhoopptt builtin below under SSHHEELLLL + BBUUIILLTTIINN CCOOMMMMAANNDDSS for information on setting and unsetting shell + options. + +HHIISSTTOORRYY EEXXPPAANNSSIIOONN + The shell supports a history expansion feature that is similar to the + history expansion in ccsshh.. This section describes what syntax features + are available. This feature is enabled by default for interactive + shells, and can be disabled using the ++HH option to the sseett builtin com- + mand (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). Non-interactive shells do not + perform history expansion by default. + + History expansions introduce words from the history list into the input + stream, making it easy to repeat commands, insert the arguments to a + previous command into the current input line, or fix errors in previous + commands quickly. + + History expansion is performed immediately after a complete line is + read, before the shell breaks it into words. It takes place in two + parts. The first is to determine which line from the history list to + use during substitution. The second is to select portions of that line + for inclusion into the current one. The line selected from the history + is the _e_v_e_n_t, and the portions of that line that are acted upon are + _w_o_r_d_s. Various _m_o_d_i_f_i_e_r_s are available to manipulate the selected + words. The line is broken into words in the same fashion as when read- + ing input, so that several _m_e_t_a_c_h_a_r_a_c_t_e_r-separated words surrounded by + quotes are considered one word. History expansions are introduced by + the appearance of the history expansion character, which is !! by + default. Only backslash (\\) and single quotes can quote the history + expansion character. + + Several characters inhibit history expansion if found immediately fol- + lowing the history expansion character, even if it is unquoted: space, + tab, newline, carriage return, and ==. If the eexxttgglloobb shell option is + enabled, (( will also inhibit expansion. + + Several shell options settable with the sshhoopptt builtin may be used to + tailor the behavior of history expansion. If the hhiissttvveerriiffyy shell + option is enabled (see the description of the sshhoopptt builtin), and rreeaadd-- + lliinnee is being used, history substitutions are not immediately passed to + the shell parser. Instead, the expanded line is reloaded into the + rreeaaddlliinnee editing buffer for further modification. If rreeaaddlliinnee is being + used, and the hhiissttrreeeeddiitt shell option is enabled, a failed history sub- + stitution will be reloaded into the rreeaaddlliinnee editing buffer for correc- + tion. The --pp option to the hhiissttoorryy builtin command may be used to see + what a history expansion will do before using it. The --ss option to the + hhiissttoorryy builtin may be used to add commands to the end of the history + list without actually executing them, so that they are available for + subsequent recall. + + The shell allows control of the various characters used by the history + expansion mechanism (see the description of hhiissttcchhaarrss above under SShheellll + VVaarriiaabblleess). + + EEvveenntt DDeessiiggnnaattoorrss + An event designator is a reference to a command line entry in the his- + tory list. + + !! Start a history substitution, except when followed by a bbllaannkk, + newline, carriage return, = or ( (when the eexxttgglloobb shell option + is enabled using the sshhoopptt builtin). + !!_n Refer to command line _n. + !!--_n Refer to the current command line minus _n. + !!!! Refer to the previous command. This is a synonym for `!-1'. + !!_s_t_r_i_n_g + Refer to the most recent command starting with _s_t_r_i_n_g. + !!??_s_t_r_i_n_g[[??]] + Refer to the most recent command containing _s_t_r_i_n_g. The trail- + ing ?? may be omitted if _s_t_r_i_n_g is followed immediately by a new- + line. + ^^_s_t_r_i_n_g_1^^_s_t_r_i_n_g_2^^ + Quick substitution. Repeat the last command, replacing _s_t_r_i_n_g_1 + with _s_t_r_i_n_g_2. Equivalent to ``!!:s/_s_t_r_i_n_g_1/_s_t_r_i_n_g_2/'' (see MMoodd-- + iiffiieerrss below). + !!## The entire command line typed so far. + + WWoorrdd DDeessiiggnnaattoorrss + Word designators are used to select desired words from the event. A :: + separates the event specification from the word designator. It may be + omitted if the word designator begins with a ^^, $$, **, --, or %%. Words + are numbered from the beginning of the line, with the first word being + denoted by 0 (zero). Words are inserted into the current line sepa- + rated by single spaces. + + 00 ((zzeerroo)) + 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 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_-_$'. + It is not an error to use ** if there is just one word in the + event; the empty string is returned in that case. + xx** Abbreviates _x_-_$. + xx-- Abbreviates _x_-_$ like xx**, but omits the last word. + + If a word designator is supplied without an event specification, the + previous command is used as the event. + + MMooddiiffiieerrss + 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. + 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. + qq Quote the substituted words, escaping further substitutions. + xx Quote the substituted words as with qq, but break into words at + bbllaannkkss and newlines. + ss//_o_l_d//_n_e_w// + Substitute _n_e_w for the first occurrence of _o_l_d in the event + line. Any delimiter can be used in place of /. The final + delimiter is optional if it is the last character of the event + line. The delimiter may be quoted in _o_l_d and _n_e_w with a single + backslash. If & appears in _n_e_w, it is replaced by _o_l_d. A sin- + gle backslash will quote the &. If _o_l_d is null, it is set to + the last _o_l_d substituted, or, if no previous history substitu- + tions took place, the last _s_t_r_i_n_g in a !!??_s_t_r_i_n_g[[??]] search. + && Repeat the previous substitution. + gg Cause changes to be applied over the entire event line. This is + used in conjunction with `::ss' (e.g., `::ggss//_o_l_d//_n_e_w//') or `::&&'. + If used with `::ss', any delimiter can be used in place of /, and + the final delimiter is optional if it is the last character of + the event line. An aa may be used as a synonym for gg. + GG Apply the following `ss' modifier once to each word in the event + line. + +SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS + Unless otherwise noted, each builtin command documented in this section + as accepting options preceded by -- accepts ---- to signify the end of the + options. For example, the ::, ttrruuee, ffaallssee, and tteesstt builtins do not + accept options. + :: [_a_r_g_u_m_e_n_t_s] + No effect; the command does nothing beyond expanding _a_r_g_u_m_e_n_t_s + and performing any specified redirections. A zero exit code is + returned. + + .. _f_i_l_e_n_a_m_e [_a_r_g_u_m_e_n_t_s] + 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. + 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 + searched. If any _a_r_g_u_m_e_n_t_s are supplied, they become the posi- + tional parameters when _f_i_l_e_n_a_m_e is executed. Otherwise the + positional parameters are unchanged. The return status is the + status of the last command exited within the script (0 if no + commands are executed), and false if _f_i_l_e_n_a_m_e is not found or + cannot be read. + + aalliiaass [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] + AAlliiaass with no arguments or with the --pp option prints the list of + aliases in the form aalliiaass _n_a_m_e=_v_a_l_u_e on standard output. When + arguments are supplied, an alias is defined for each _n_a_m_e whose + _v_a_l_u_e is given. A trailing space in _v_a_l_u_e causes the next word + to be checked for alias substitution when the alias is expanded. + For each _n_a_m_e in the argument list for which no _v_a_l_u_e is sup- + plied, the name and value of the alias is printed. AAlliiaass + returns true unless a _n_a_m_e is given for which no alias has been + defined. + + bbgg [_j_o_b_s_p_e_c ...] + Resume each suspended job _j_o_b_s_p_e_c in the background, as if it + had been started with &&. If _j_o_b_s_p_e_c is not present, the shell's + notion of the _c_u_r_r_e_n_t _j_o_b is used. bbgg _j_o_b_s_p_e_c returns 0 unless + run when job control is disabled or, when run with job control + 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] [--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 + bbiinndd [--mm _k_e_y_m_a_p] _k_e_y_s_e_q:_f_u_n_c_t_i_o_n_-_n_a_m_e + bbiinndd _r_e_a_d_l_i_n_e_-_c_o_m_m_a_n_d + Display current rreeaaddlliinnee key and function bindings, bind a key + sequence to a rreeaaddlliinnee function or macro, or set a rreeaaddlliinnee + variable. Each non-option argument is a command as it would + appear in _._i_n_p_u_t_r_c, but each binding or command must be passed + as a separate argument; e.g., '"\C-x\C-r": re-read-init-file'. + Options, if supplied, have the following meanings: + --mm _k_e_y_m_a_p + Use _k_e_y_m_a_p as the keymap to be affected by the subsequent + bindings. Acceptable _k_e_y_m_a_p names are _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_-_m_o_v_e_, _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. + --ll List the names of all rreeaaddlliinnee functions. + --pp Display rreeaaddlliinnee function names and bindings in such a + way that they can be re-read. + --PP List current rreeaaddlliinnee function names and bindings. + --vv Display rreeaaddlliinnee variable names and values in such a way + that they can be re-read. + --VV List current rreeaaddlliinnee variable names and values. + --ss Display rreeaaddlliinnee key sequences bound to macros and the + strings they output in such a way that they can be re- + read. + --SS Display rreeaaddlliinnee key sequences bound to macros and the + strings they output. + --ff _f_i_l_e_n_a_m_e + Read key bindings from _f_i_l_e_n_a_m_e. + --qq _f_u_n_c_t_i_o_n + Query about which keys invoke the named _f_u_n_c_t_i_o_n. + --uu _f_u_n_c_t_i_o_n + Unbind all keys bound to the named _f_u_n_c_t_i_o_n. + --rr _k_e_y_s_e_q + Remove any current binding for _k_e_y_s_e_q. + --xx _k_e_y_s_e_q::_s_h_e_l_l_-_c_o_m_m_a_n_d + Cause _s_h_e_l_l_-_c_o_m_m_a_n_d to be executed whenever _k_e_y_s_e_q is + entered. + + The return value is 0 unless an unrecognized option is given or + an error occurred. + + bbrreeaakk [_n] + Exit from within a ffoorr, wwhhiillee, uunnttiill, or sseelleecctt loop. If _n is + specified, break _n levels. _n must be >= 1. If _n is greater + than the number of enclosing loops, all enclosing loops are + exited. The return value is 0 unless the shell is not executing + a loop when bbrreeaakk is executed. + + bbuuiillttiinn _s_h_e_l_l_-_b_u_i_l_t_i_n [_a_r_g_u_m_e_n_t_s] + Execute the specified shell builtin, passing it _a_r_g_u_m_e_n_t_s, and + return its exit status. This is useful when defining a function + whose name is the same as a shell builtin, retaining the func- + tionality of the builtin within the function. The ccdd builtin is + commonly redefined this way. The return status is false if + _s_h_e_l_l_-_b_u_i_l_t_i_n is not a shell builtin command. + + ccdd [--LL||--PP] [_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. An argument of -- is equivalent to $$OOLLDDPPWWDD. If a non- + empty directory 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 success- + fully changed; false otherwise. + + ccaalllleerr [_e_x_p_r] + Returns the context of any active subroutine call (a shell func- + tion or a script executed with the .. or ssoouurrccee builtins. With- + out _e_x_p_r, ccaalllleerr displays the line number and source filename of + the current subroutine call. If a non-negative integer is sup- + plied as _e_x_p_r, ccaalllleerr displays the line number, subroutine name, + and source file corresponding to that position in the current + execution call stack. This extra information may be used, for + example, to print a stack trace. The current frame is frame 0. + The return value is 0 unless the shell is not executing a sub- + routine call or _e_x_p_r does not correspond to a valid position in + the call stack. + + 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 + 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 + 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 + 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- + 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 + 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 + 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, + or no matches were generated. + + ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_p_a_t] [--WW + _w_o_r_d_l_i_s_t] [--PP _p_r_e_f_i_x] [--SS _s_u_f_f_i_x] + [--XX _f_i_l_t_e_r_p_a_t] [--FF _f_u_n_c_t_i_o_n] [--CC _c_o_m_m_a_n_d] _n_a_m_e [_n_a_m_e _._._.] + ccoommpplleettee --pprr [_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 + 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- + pletion specifications. + + 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- + 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- + 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 + the compspec generates no matches. + ddiirrnnaammeess + 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 or suppressing 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 + line. + pplluussddiirrss + 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 + 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 + specified as --bb. + ccoommmmaanndd Command names. May also be specified as --cc. + ddiirreeccttoorryy + Directory names. May also be specified as --dd. + ddiissaabblleedd + Names of disabled shell builtins. + eennaabblleedd Names of enabled shell builtins. + eexxppoorrtt Names of exported shell variables. May also be + specified as --ee. + ffiillee File names. May also be specified as --ff. + ffuunnccttiioonn + Names of shell functions. + ggrroouupp Group names. May also be specified as --gg. + hheellppttooppiicc + Help topics as accepted by the hheellpp builtin. + hhoossttnnaammee + Hostnames, as taken from the file specified by + the HHOOSSTTFFIILLEE shell variable. + jjoobb Job names, if job control is active. May also + be specified as --jj. + 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 + builtin. + sshhoopptt Shell option names as accepted by the sshhoopptt + builtin. + ssiiggnnaall Signal names. + ssttooppppeedd Names of stopped jobs, if job control is active. + uusseerr User names. May also be specified as --uu. + vvaarriiaabbllee + Names of all shell variables. May also be spec- + ified as --vv. + --GG _g_l_o_b_p_a_t + The filename expansion pattern _g_l_o_b_p_a_t is expanded to + generate the possible completions. + --WW _w_o_r_d_l_i_s_t + The _w_o_r_d_l_i_s_t is split using the characters in the IIFFSS + special variable as delimiters, and each resultant word + is expanded. The possible completions are the members + of the resultant list which match the word being com- + pleted. + --CC _c_o_m_m_a_n_d + _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. + --XX _f_i_l_t_e_r_p_a_t + _f_i_l_t_e_r_p_a_t is a pattern as used for filename expansion. + It is applied to the list of possible completions gener- + ated by the preceding options and arguments, and each + completion matching _f_i_l_t_e_r_p_a_t is removed from the list. + A leading !! in _f_i_l_t_e_r_p_a_t negates the pattern; in this + case, any completion not matching _f_i_l_t_e_r_p_a_t is removed. + --PP _p_r_e_f_i_x + _p_r_e_f_i_x is added at the beginning of each possible com- + pletion after all other options have been applied. + --SS _s_u_f_f_i_x + _s_u_f_f_i_x is appended to each possible completion after all + other options have been applied. + + The return value is true unless an invalid option is supplied, + an option other than --pp or --rr is supplied without a _n_a_m_e argu- + ment, an attempt is made to remove a completion specification + for a _n_a_m_e for which no specification exists, or an error occurs + adding a completion specification. + + ccoonnttiinnuuee [_n] + Resume the next iteration of the enclosing ffoorr, wwhhiillee, uunnttiill, or + sseelleecctt loop. If _n is specified, resume at the _nth enclosing + loop. _n must be >= 1. If _n is greater than the number of + enclosing loops, the last enclosing loop (the ``top-level'' + loop) is resumed. The return value is 0 unless the shell is not + executing a loop when ccoonnttiinnuuee is executed. + + ddeeccllaarree [--aaffFFiirrttxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] + ttyyppeesseett [--aaffFFiirrttxx] [--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, additional options are ignored. 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 following options can be used to restrict out- + put to variables with the specified attribute or to give vari- + ables attributes: + --aa Each _n_a_m_e is an array variable (see AArrrraayyss above). + --ff Use function names only. + --ii The variable is treated as an integer; arithmetic evalua- + tion (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN )) is performed when the + variable is assigned a value. + --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 + inherit the DDEEBBUUGG and RREETTUURRNN traps from the calling + shell. The trace attribute has no special meaning for + variables. + --xx Mark _n_a_m_es for export to subsequent commands via the + environment. + + Using `+' instead of `-' turns off the attribute instead, with + the exception that ++aa may not be used to destroy an array vari- + able. When used in a function, makes each _n_a_m_e local, as with + the llooccaall command. If a variable name is followed by =_v_a_l_u_e, + the value of the variable is set to _v_a_l_u_e. The return value is + 0 unless an invalid option is encountered, an attempt is made to + define a function using ``-f foo=bar'', an attempt is made to + assign a value to a readonly variable, an attempt is made to + assign a value to an array 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. + --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. + + 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 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 + 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. + + 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: + \\aa alert (bell) + \\bb backspace + \\cc suppress trailing newline + \\ee an escape character + \\ff form feed + \\nn new line + \\rr carriage return + \\tt horizontal tab + \\vv vertical tab + \\\\ backslash + \\00_n_n_n the eight-bit character whose value is the octal value + _n_n_n (zero to three octal digits) + \\_n_n_n the eight-bit character whose value is the octal value + _n_n_n (one to three octal digits) + \\xx_H_H the eight-bit character whose value is the hexadecimal + value _H_H (one or two hex digits) + + eennaabbllee [--aaddnnppss] [--ff _f_i_l_e_n_a_m_e] [_n_a_m_e ...] + 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 + 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 + 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. + 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 + 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 + 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 + the --ll option is supplied, the shell places a dash at the begin- + ning of the zeroth arg 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 as the + zeroth argument to the executed command. If _c_o_m_m_a_n_d cannot 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 file can- + not be executed. If _c_o_m_m_a_n_d is not specified, any redirections + take effect in the current shell, and the return status 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, + 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. + + ffcc [--ee _e_n_a_m_e] [--nnllrr] [_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 --nn option suppresses the command numbers when listing. The + --rr option reverses the order of the commands. If the --ll option + is given, the commands are listed on standard output. Other- + wise, the editor given by _e_n_a_m_e is invoked on a file containing + those commands. If _e_n_a_m_e is not given, the value of the FFCCEEDDIITT + variable is used, and the value of EEDDIITTOORR if FFCCEEDDIITT is not set. + If neither variable is set, _v_i is used. When editing is com- + 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. + + 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 + lines out of range. If the --ee option is supplied, the return + value is the value of the last command executed or failure if an + error occurs with the temporary file of commands. If the second + form is used, the return status is that of the command re-exe- + cuted, unless _c_m_d does not specify a valid history line, in + which case ffcc returns failure. + + ffgg [_j_o_b_s_p_e_c] + Resume _j_o_b_s_p_e_c in the foreground, and make it the current job. + If _j_o_b_s_p_e_c is not present, the shell's notion of the _c_u_r_r_e_n_t _j_o_b + is used. The return value is that of the command placed into + the foreground, or failure if run when job control is disabled + or, when run with job control enabled, if _j_o_b_s_p_e_c does not spec- + ify a valid job or _j_o_b_s_p_e_c specifies a job that was started + without job control. + + ggeettooppttss _o_p_t_s_t_r_i_n_g _n_a_m_e [_a_r_g_s] + ggeettooppttss is used by shell procedures to parse positional parame- + ters. _o_p_t_s_t_r_i_n_g contains the option characters to be recog- + nized; if a character is followed by a colon, the option is + expected to have an argument, which should be separated from it + by white space. The colon and question mark characters may not + be used as option characters. Each time it is invoked, ggeettooppttss + places the next option in the shell variable _n_a_m_e, initializing + _n_a_m_e if it does not exist, and the index of the next argument to + be processed into the variable OOPPTTIINNDD. OOPPTTIINNDD is initialized to + 1 each time the shell or a shell script is invoked. When an + option requires an argument, ggeettooppttss places that argument into + the variable OOPPTTAARRGG. The shell does not reset OOPPTTIINNDD automati- + cally; it must be manually reset between multiple calls to + ggeettooppttss within the same shell invocation if a new set of parame- + ters is to be used. + + When the end of options is encountered, ggeettooppttss exits with a + return value greater than zero. OOPPTTIINNDD is set to the index of + the first non-option argument, and nnaammee is set to ?. + + ggeettooppttss normally parses the positional parameters, but if more + arguments are given in _a_r_g_s, ggeettooppttss parses those instead. + + 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 + 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. + + If an invalid option is seen, ggeettooppttss places ? into _n_a_m_e and, if + not silent, prints an error message and unsets OOPPTTAARRGG. If + ggeettooppttss is silent, the option character found is placed in + OOPPTTAARRGG and no diagnostic message is printed. + + If a required argument is not found, and ggeettooppttss is not silent, + a question mark (??) is placed in _n_a_m_e, OOPPTTAARRGG is unset, and a + diagnostic message is printed. If ggeettooppttss is silent, then a + colon (::) is placed in _n_a_m_e and OOPPTTAARRGG is set to the option + character found. + + ggeettooppttss returns true if an option, specified or unspecified, is + found. It returns false if the end of options is encountered or + an error occurs. + + hhaasshh [--llrr] [--pp _f_i_l_e_n_a_m_e] [--ddtt] [_n_a_m_e] + For each _n_a_m_e, the full file name of the command is determined + by searching the directories in $$PPAATTHH and remembered. 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 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 which each + _n_a_m_e corresponds is printed. If multiple _n_a_m_e arguments are + supplied with --tt, the _n_a_m_e is printed before the hashed full + pathname. The --ll option causes output to be displayed in a for- + mat that may be reused as input. If no arguments are given, or + if only --ll is supplied, information about remembered commands is + printed. The return status is true unless a _n_a_m_e is not found + or an invalid option is supplied. + + hheellpp [--ss] [_p_a_t_t_e_r_n] + Display helpful information about builtin commands. If _p_a_t_t_e_r_n + is specified, hheellpp gives detailed help on all commands matching + _p_a_t_t_e_r_n; otherwise help for all the builtins and shell control + structures is printed. The --ss option restricts the information + displayed to a short usage synopsis. The return status is 0 + unless no command matches _p_a_t_t_e_r_n. + + hhiissttoorryy [[_n]] + hhiissttoorryy --cc + hhiissttoorryy --dd _o_f_f_s_e_t + hhiissttoorryy --aannrrww [_f_i_l_e_n_a_m_e] + hhiissttoorryy --pp _a_r_g [_a_r_g _._._.] + hhiissttoorryy --ss _a_r_g [_a_r_g _._._.] + With no options, display the command history list with line num- + bers. Lines listed with a ** have been modified. An argument of + _n lists only the last _n lines. If the shell variable HHIISSTTTTIIMMEE-- + FFOORRMMAATT is set and not null, it is used as a format string for + _s_t_r_f_t_i_m_e(3) to display the time stamp associated with each dis- + played history entry. No intervening blank is printed between + the formatted time stamp and the history line. If _f_i_l_e_n_a_m_e is + supplied, it is used as the name of the history file; if not, + the value of HHIISSTTFFIILLEE is used. Options, if supplied, have the + following meanings: + --cc Clear the history list by deleting all the entries. + --dd _o_f_f_s_e_t + Delete the history entry at position _o_f_f_s_e_t. + --aa Append the ``new'' history lines (history lines entered + since the beginning of the current bbaasshh session) to the + history file. + --nn Read the history lines not already read from the history + 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. + --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 + quoted to disable normal history expansion. + --ss Store the _a_r_g_s in the history list as a single entry. + The last command in the history list is removed before + the _a_r_g_s are added. + + If the HHIISSTTTTIIMMEEFFOORRMMAATT is set, the time stamp information associ- + ated with each history entry is written to the history file. + The return value is 0 unless an invalid option is encountered, + an error occurs while reading or writing the history file, an + invalid _o_f_f_s_e_t is supplied as an argument to --dd, or the history + expansion supplied as an argument to --pp fails. + + jjoobbss [--llnnpprrss] [ _j_o_b_s_p_e_c ... ] + jjoobbss --xx _c_o_m_m_a_n_d [ _a_r_g_s ... ] + The first form lists the active jobs. The options have the fol- + lowing meanings: + --ll List process IDs in addition to the normal information. + --pp List only the process ID of the job's process group + leader. + --nn Display information only about jobs that have changed + status since the user was last notified of their status. + --rr Restrict output to running jobs. + --ss Restrict output to 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 + encountered or an invalid _j_o_b_s_p_e_c is supplied. + + If the --xx option is supplied, jjoobbss replaces any _j_o_b_s_p_e_c found in + _c_o_m_m_a_n_d or _a_r_g_s with the corresponding process group ID, and + executes _c_o_m_m_a_n_d passing it _a_r_g_s, returning its exit status. + + kkiillll [--ss _s_i_g_s_p_e_c | --nn _s_i_g_n_u_m | --_s_i_g_s_p_e_c] [_p_i_d | _j_o_b_s_p_e_c] ... + kkiillll --ll [_s_i_g_s_p_e_c | _e_x_i_t___s_t_a_t_u_s] + Send the signal named by _s_i_g_s_p_e_c or _s_i_g_n_u_m to the processes + named by _p_i_d or _j_o_b_s_p_e_c. _s_i_g_s_p_e_c is either a case-insensitive + signal name such as SSIIGGKKIILLLL (with or without the SSIIGG prefix) or + a signal number; _s_i_g_n_u_m is a signal number. If _s_i_g_s_p_e_c is not + present, then SSIIGGTTEERRMM is assumed. An argument of --ll lists the + signal names. If any arguments are supplied when --ll is given, + the names of the signals corresponding to the arguments are + listed, and the return status is 0. The _e_x_i_t___s_t_a_t_u_s argument to + --ll is a number specifying either a signal number or the exit + status of a process terminated by a signal. kkiillll returns true + if at least one signal was successfully sent, or false if an + error occurs or an invalid option is encountered. + + lleett _a_r_g [_a_r_g ...] + Each _a_r_g is an arithmetic expression to be evaluated (see AARRIITTHH-- + MMEETTIICC EEVVAALLUUAATTIIOONN). If the last _a_r_g evaluates to 0, lleett returns + 1; 0 is returned otherwise. + + llooccaall [_o_p_t_i_o_n] [_n_a_m_e[=_v_a_l_u_e] ...] + For each argument, a local variable named _n_a_m_e is created, and + assigned _v_a_l_u_e. The _o_p_t_i_o_n can be any of the options accepted + by ddeeccllaarree. When llooccaall is used within a function, it causes the + variable _n_a_m_e to have a visible scope restricted to that func- + tion and its children. With no operands, llooccaall writes a list of + local variables to the standard output. It is an error to use + llooccaall when not within a function. The return status is 0 unless + llooccaall is used outside a function, an invalid _n_a_m_e is supplied, + or _n_a_m_e is a readonly variable. + + llooggoouutt Exit a login shell. + + ppooppdd [-nn] [+_n] [-_n] + Removes entries from the directory stack. With no arguments, + removes the top directory from the stack, and performs a ccdd to + the new top directory. Arguments, if supplied, have the follow- + ing meanings: + ++_n Removes the _nth entry counting from the left of the list + shown by ddiirrss, starting with zero. For example: ``popd + +0'' removes the first directory, ``popd +1'' the second. + --_n Removes the _nth entry counting from the right of the list + shown by ddiirrss, starting with zero. For example: ``popd + -0'' removes the last directory, ``popd -1'' the next to + last. + --nn Suppresses the normal change of directory when removing + directories from the stack, so that only the stack is + manipulated. + + If the ppooppdd command is successful, a ddiirrss is performed as well, + and the return status is 0. ppooppdd returns false if an invalid + option is encountered, the directory stack is empty, a non-exis- + tent directory stack entry is specified, or the directory change + fails. + + pprriinnttff [--vv _v_a_r] _f_o_r_m_a_t [_a_r_g_u_m_e_n_t_s] + Write the formatted _a_r_g_u_m_e_n_t_s to the standard output under the + control of the _f_o_r_m_a_t. The _f_o_r_m_a_t is a character string which + contains three types of objects: plain characters, which are + simply copied to standard output, character escape sequences, + which are converted and copied to the standard output, and for- + mat specifications, each of which causes printing of the next + successive _a_r_g_u_m_e_n_t. In addition to the standard _p_r_i_n_t_f(1) for- + mats, %%bb causes pprriinnttff to expand backslash escape sequences in + the corresponding _a_r_g_u_m_e_n_t (except that \\cc terminates output, + backslashes in \\'', \\"", and \\?? are not removed, and octal escapes + beginning with \\00 may contain up to four digits), and %%qq causes + pprriinnttff to output the corresponding _a_r_g_u_m_e_n_t in a format that can + be reused as shell input. + + The --vv option causes the output to be assigned to the variable + _v_a_r rather than being printed to the standard output. + + 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 + value is zero on success, non-zero on failure. + + ppuusshhdd [--nn] [_d_i_r] + ppuusshhdd [--nn] [+_n] [-_n] + 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, + if supplied, have the following meanings: + ++_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 + zero) is at the top. + --nn Suppresses the normal change of directory when adding + directories to the stack, so that only the stack is + manipulated. + _d_i_r Adds _d_i_r to the directory stack at the top, making it the + new current working directory. + + 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 + fails. With the second form, ppuusshhdd returns 0 unless the direc- + tory stack is empty, a non-existent directory stack element is + specified, or the directory change to the specified new current + directory fails. + + ppwwdd [--LLPP] + Print the absolute pathname of the current working directory. + The pathname printed contains no symbolic links if the --PP option + is supplied or the --oo pphhyyssiiccaall option to the sseett builtin command + is enabled. If the --LL option is used, the pathname printed may + contain symbolic links. The return status is 0 unless an error + occurs while reading the name of the current directory or an + invalid option is supplied. + + rreeaadd [--eerrss] [--uu _f_d] [--tt _t_i_m_e_o_u_t] [--aa _a_n_a_m_e] [--pp _p_r_o_m_p_t] [--nn _n_c_h_a_r_s] [--dd + _d_e_l_i_m] [_n_a_m_e ...] + One line is read from the standard input, or from the file + descriptor _f_d supplied as an argument to the --uu option, and the + first word is assigned to the first _n_a_m_e, the second word to the + second _n_a_m_e, and so on, with leftover words and their interven- + 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: + --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 + 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. + --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. + --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 + 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. This + option has no effect if rreeaadd is not reading input from + the terminal or a pipe. + --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, or an invalid file descriptor is + supplied as the argument to --uu. + + rreeaaddoonnllyy [--aappff] [_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 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 vari- + able 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 func- + tion. + + 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. + + sseett [----aabbeeffhhkkmmnnppttuuvvxxBBCCHHPP] [--oo _o_p_t_i_o_n] [_a_r_g ...] + 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 the options are processed are treated + as values for the positional parameters and are assigned, in + order, to $$11, $$22, ...... $$_n. Options, if specified, have the fol- + lowing meanings: + --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- + ately, rather than before the next primary prompt. This + is effective only when job control is enabled. + --ee Exit immediately if a _s_i_m_p_l_e _c_o_m_m_a_n_d (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 in an _i_f statement, part of a &&&& or |||| + list, or if the command's return value is being inverted + via !!. A trap on EERRRR, if set, is executed before the + shell exits. + --ff Disable pathname expansion. + --hh Remember the location of commands as they are looked up + for execution. This is enabled by default. + --kk All arguments in the form of assignment statements are + placed in the environment for a command, not just those + 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. + --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. + --oo _o_p_t_i_o_n_-_n_a_m_e + The _o_p_t_i_o_n_-_n_a_m_e can be one of the following: + aalllleexxppoorrtt + Same as --aa. + bbrraacceeeexxppaanndd + Same as --BB. + eemmaaccss Use an emacs-style command line editing inter- + face. This is enabled by default when the shell + is interactive, unless the shell is started with + the ----nnooeeddiittiinngg option. + eerrrrttrraaccee + Same as --EE. + ffuunnccttrraaccee + Same as --TT. + eerrrreexxiitt Same as --ee. + hhaasshhaallll Same as --hh. + hhiisstteexxppaanndd + Same as --HH. + hhiissttoorryy Enable command history, as described above under + HHIISSTTOORRYY. This option is on by default in inter- + active shells. + iiggnnoorreeeeooff + The effect is as if the shell command + ``IGNOREEOF=10'' had been executed (see SShheellll + VVaarriiaabblleess above). + kkeeyywwoorrdd Same as --kk. + mmoonniittoorr Same as --mm. + nnoocclloobbbbeerr + Same as --CC. + nnooeexxeecc Same as --nn. + nnoogglloobb Same as --ff. nnoolloogg Currently ignored. + nnoottiiffyy Same as --bb. + nnoouunnsseett Same as --uu. + oonneeccmmdd Same as --tt. + pphhyyssiiccaall + Same as --PP. + ppiippeeffaaiill + If set, the return value of a pipeline is the + value of the last (rightmost) command to exit + with a non-zero status, or zero if all commands + in the pipeline exit successfully. This option + 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). + pprriivviilleeggeedd + Same as --pp. + vveerrbboossee Same as --vv. + vvii Use a vi-style command line editing interface. + xxttrraaccee Same as --xx. + If --oo is supplied with no _o_p_t_i_o_n_-_n_a_m_e, the values of the + current options are printed. If ++oo is supplied with no + _o_p_t_i_o_n_-_n_a_m_e, a series of sseett commands to recreate the + current option settings is displayed on the standard + output. + --pp Turn on _p_r_i_v_i_l_e_g_e_d mode. In this mode, the $$EENNVV and + $$BBAASSHH__EENNVV files are not processed, shell functions are + not inherited from the environment, and the SSHHEELLLLOOPPTTSS + variable, if it appears in the environment, is ignored. + 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, these actions are taken and the + effective user id is set to the real user id. If the --pp + option is supplied at startup, the effective user id is + not reset. Turning this option off causes the effective + user and group ids to be set to the real user and group + ids. + --tt Exit after reading and executing one command. + --uu Treat unset variables as an error when performing param- + eter expansion. If expansion is attempted on an unset + variable, the shell prints an error message, and, if not + interactive, exits with a non-zero status. + --vv Print shell input lines as they are read. + --xx After expanding each _s_i_m_p_l_e _c_o_m_m_a_n_d, ffoorr command, ccaassee + command, sseelleecctt command, or arithmetic ffoorr command, dis- + play the expanded value of PPSS44, followed by the command + and its expanded arguments or associated word list. + --BB The shell performs brace expansion (see BBrraaccee EExxppaannssiioonn + above). This is on by default. + --CC If set, bbaasshh does not overwrite an existing file with + the >>, >>&&, and <<>> redirection operators. This may be + overridden when creating output files by using the redi- + rection operator >>|| instead of >>. + --EE If set, any trap on EERRRR is inherited by shell functions, + command substitutions, and commands executed in a sub- + shell environment. The EERRRR trap is normally not inher- + 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 + executing commands such as ccdd that change the current + working directory. It uses the physical directory + structure instead. By default, bbaasshh follows the logical + chain of directories when performing commands which + change the current directory. + --TT If set, any traps on DDEEBBUUGG and RREETTUURRNN are inherited by + shell functions, command substitutions, and commands + executed in a subshell environment. The DDEEBBUUGG and + RREETTUURRNN traps are normally not inherited in such cases. + ---- If no arguments follow this option, then the positional + parameters are unset. Otherwise, the positional parame- + ters are set to the _a_r_gs, even if some of them begin + with a --. + -- Signal the end of options, cause all remaining _a_r_gs to + be assigned to the positional parameters. The --xx and --vv + options are turned off. If there are no _a_r_gs, the posi- + tional parameters remain unchanged. + + The options are off by default unless otherwise noted. Using + + rather than - causes these options to be turned off. The + options can also be specified as arguments to an invocation of + the shell. The current set of options may be found in $$--. The + return status is always true unless an invalid option is encoun- + tered. + + sshhiifftt [_n] + The positional parameters from _n+1 ... are renamed to $$11 ........ + Parameters represented by the numbers $$## down to $$##-_n+1 are + unset. _n must be a non-negative number less than or equal to + $$##. If _n is 0, no parameters are changed. If _n is not given, + it is assumed to be 1. If _n is greater than $$##, the positional + parameters are not changed. The return status is greater than + 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: + --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 + indicates whether the _o_p_t_n_a_m_e is set or unset. If multi- + ple _o_p_t_n_a_m_e arguments are given with --qq, the return sta- + tus is zero if all _o_p_t_n_a_m_e_s are enabled; non-zero other- + wise. + --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. + + 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 + options, the return status is zero unless an _o_p_t_n_a_m_e is not a + valid shell option. + + The list of sshhoopptt options is: + + ccddaabbllee__vvaarrss + If set, an argument to the ccdd builtin command that is + not a directory is assumed to be the name of a variable + whose value is the directory to change to. + ccddssppeellll If set, minor errors in the spelling of a directory com- + 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- + mand proceeds. This option is only used by interactive + shells. + cchheecckkhhaasshh + If set, bbaasshh checks that a command found in the hash ta- + ble exists before trying to execute it. If a hashed + command no longer exists, a normal path search is per- + formed. + cchheecckkwwiinnssiizzee + If set, bbaasshh checks the window size after each command + and, if necessary, updates the values of LLIINNEESS and CCOOLL-- + UUMMNNSS. + ccmmddhhiisstt If set, bbaasshh attempts to save all lines of a multiple- + line command in the same history entry. This allows + easy re-editing of multi-line commands. + 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 + exit if eexxeecc fails. + eexxppaanndd__aalliiaasseess + 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 + 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 + 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 + rreettuurrnn is simulated. + 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described + in their descriptions above. + 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 (( + _c_o_m_m_a_n_d )) inherit the EERRRROORR 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 + quotes. This option is enabled by default. + ffaaiillgglloobb + 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 + 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 + default. + 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 + exits, rather than overwriting the file. + hhiissttrreeeeddiitt + 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 + 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 + 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 + option is enabled by default. + 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 + 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- + played. + nnoo__eemmppttyy__ccmmdd__ccoommpplleettiioonn + 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 + fashion when performing pathname expansion (see PPaatthhnnaammee + EExxppaannssiioonn above). + nnooccaasseemmaattcchh + 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, + rather than themselves. + pprrooggccoommpp + If set, the programmable completion facilities (see PPrroo-- + ggrraammmmaabbllee CCoommpplleettiioonn above) are enabled. This option is + 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 + above. This option is enabled by default. + rreessttrriicctteedd__sshheellll + 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- + cover whether or not a shell is restricted. + sshhiifftt__vveerrbboossee + 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 + argument. This option is enabled by default. + xxppgg__eecchhoo + If set, the eecchhoo builtin expands backslash-escape + sequences by default. + ssuussppeenndd [--ff] + Suspend the execution of this shell until it receives a SSIIGGCCOONNTT + signal. The --ff option says not to complain if this is a login + shell; just suspend anyway. The return status is 0 unless the + shell is a login shell and --ff is not supplied, 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, + listed in decreasing order of precedence. + !! _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 + 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. + _e_x_p_r_1 -oo _e_x_p_r_2 + True if either _e_x_p_r_1 or _e_x_p_r_2 is true. + + tteesstt and [[ evaluate conditional expressions using a set of rules + based on the number of arguments. + + 0 arguments + The expression is false. + 1 argument + The expression is true if and only if the argument is not + 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 + true if the unary test is true. If the first argument is + not a valid unary conditional operator, the expression is + false. + 3 arguments + 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. 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. Otherwise, the expression is false. + The --aa and --oo operators are considered binary operators + in this case. + 4 arguments + If the first argument is !!, the result is the negation of + the three-argument expression composed of the remaining + arguments. Otherwise, the expression is parsed and eval- + uated according to precedence using the rules listed + above. + 5 or more arguments + The expression is parsed and evaluated according to + precedence using the rules listed above. + + 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 + case insensitive and the SIG 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 executed 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 EERRRR, + the command _a_r_g is executed whenever a simple 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 &&&& 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 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. Signals ignored upon entry to the shell cannot + be trapped or reset. Trapped signals are reset to their origi- + nal values in a child process when it is created. The return + status is false if any _s_i_g_s_p_e_c is invalid; otherwise ttrraapp + returns true. + + ttyyppee [--aaffttppPP] _n_a_m_e [_n_a_m_e ...] + With no options, indicate how each _n_a_m_e would be interpreted if + used as a command name. If the --tt option is used, ttyyppee prints a + string which is one of _a_l_i_a_s, _k_e_y_w_o_r_d, _f_u_n_c_t_i_o_n, _b_u_i_l_t_i_n, or + _f_i_l_e if _n_a_m_e is an alias, shell reserved word, function, + builtin, or disk file, respectively. If the _n_a_m_e is not found, + then nothing is printed, and an exit status of false is + returned. If the --pp option is used, ttyyppee either returns the + name of the disk file that would be executed if _n_a_m_e were speci- + 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 + any of the arguments are found, false if none are found. + + uulliimmiitt [--SSHHaaccddeeffiillmmnnppqqrrssttuuvvxx [_l_i_m_i_t]] + Provides control over the resources available to the shell and + to processes started by it, on systems that allow such control. + The --HH and --SS options specify that the hard or soft limit is set + for the given resource. A hard limit cannot be increased once + it is set; a soft limit may be increased up to the value of the + hard limit. If neither --HH nor --SS is specified, both the soft + and hard limits are set. The value of _l_i_m_i_t can be a number in + the unit specified for the resource or one of the special values + hhaarrdd, ssoofftt, or uunnlliimmiitteedd, which stand for the current hard + limit, the current soft limit, and no limit, respectively. If + _l_i_m_i_t is omitted, the current value of the soft limit of the + resource is printed, unless the --HH option is given. When more + than one resource is specified, the limit name and unit are + printed before the value. Other options are interpreted as fol- + lows: + --aa All current limits are reported + --cc The maximum size of core files created + --dd The maximum size of a process's data segment + --ee The maximum scheduling priority ("nice") + --ff The maximum size of files created by the shell + --ii The maximum number of pending signals + --ll The maximum size that may be locked into memory + --mm The maximum resident set size + --nn The maximum number of open file descriptors (most systems + do not allow this value to be set) + --pp The pipe size in 512-byte blocks (this may not be set) + --qq The maximum number of bytes in POSIX message queues + --rr The maximum real-time scheduling priority + --ss The maximum stack size + --tt The maximum amount of cpu time in seconds + --uu The maximum number of processes available to a single + user + --vv The maximum amount of virtual memory available to the + shell + --xx The maximum number of file locks + + 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 --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. + + 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 + a digit, it is interpreted as an octal number; otherwise it is + interpreted as a symbolic mode mask similar to that accepted by + _c_h_m_o_d(1). If _m_o_d_e is omitted, the current value of the mask is + printed. The --SS option causes the mask to be printed in sym- + bolic form; the default output is an octal number. If the --pp + option is supplied, and _m_o_d_e is omitted, the output is in a form + that may be reused as input. The return status is 0 if the mode + was successfully changed or if no _m_o_d_e argument was supplied, + and false otherwise. + + uunnaalliiaass [-aa] [_n_a_m_e ...] + Remove each _n_a_m_e from the list of defined aliases. If --aa is + 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 ...] + 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 + 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 RRAANNDDOOMM, SSEECCOONNDDSS, LLIINNEENNOO, HHIISSTTCCMMDD, + FFUUNNCCNNAAMMEE, GGRROOUUPPSS, or DDIIRRSSTTAACCKK are unset, they lose their special + properties, even if they are subsequently reset. The exit sta- + tus 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 + 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. + +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 + disallowed or not performed: + + +o changing directories with ccdd + + +o setting or unsetting the values of SSHHEELLLL, PPAATTHH, EENNVV, or BBAASSHH__EENNVV + + +o specifying command names containing // + + +o specifying a file name containing a // as an argument to the .. + builtin command + + +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 + startup + + +o parsing the value of SSHHEELLLLOOPPTTSS from the shell environment at + startup + + +o redirecting output using the >, >|, <>, >&, &>, and >> redirect- + ion operators + + +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 + to the eennaabbllee builtin command + + +o Using the eennaabbllee builtin command to enable disabled shell + builtins + + +o specifying the --pp option to the ccoommmmaanndd builtin command + + +o turning off restricted mode with sseett ++rr or sseett ++oo rreessttrriicctteedd. + + 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 + 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 + _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) + +FFIILLEESS + _/_b_i_n_/_b_a_s_h + The bbaasshh executable + _/_e_t_c_/_p_r_o_f_i_l_e + The systemwide initialization file, executed for login shells + _~_/_._b_a_s_h___p_r_o_f_i_l_e + The personal initialization file, executed for login shells + _~_/_._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 + shell exits + _~_/_._i_n_p_u_t_r_c + Individual _r_e_a_d_l_i_n_e initialization file + +AAUUTTHHOORRSS + Brian Fox, Free Software Foundation + bfox@gnu.org + + Chet Ramey, Case Western Reserve University + chet@po.cwru.edu + +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 + _f_t_p_:_/_/_f_t_p_._g_n_u_._o_r_g_/_p_u_b_/_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 + ggnnuu..bbaasshh..bbuugg. + + ALL bug reports should include: + + The version number of bbaasshh + The hardware and operating system + The compiler used to compile + 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 + 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. + +BBUUGGSS + It's too big and too slow. + + There are some subtle differences between bbaasshh and traditional versions + of sshh, mostly because of the PPOOSSIIXX specification. + + Aliases are confusing in some uses. + + 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 + unit. + + Commands inside of $$((...)) command substitution are not parsed until + substitution is attempted. This will delay error reporting until some + time after the command is entered. For example, unmatched parentheses, + even inside shell comments, will result in error messages while the + construct is being read. + + Array variables may not (yet) be exported. + + + +GNU Bash-3.2 2006 Jan 26 BASH(1) diff --git a/bash-20060316/doc/bash.1 b/bash-20060316/doc/bash.1 new file mode 100644 index 000000000..baab3772c --- /dev/null +++ b/bash-20060316/doc/bash.1 @@ -0,0 +1,8887 @@ +\" +.\" MAN PAGE COMMENTS to +.\" +.\" Chet Ramey +.\" Information Network Services +.\" Case Western Reserve University +.\" chet@po.cwru.edu +.\" +.\" Last Change: Thu Jan 26 09:04:43 EST 2006 +.\" +.\" bash_builtins, strip all but Built-Ins section +.if \n(zZ=1 .ig zZ +.if \n(zY=1 .ig zY +.TH BASH 1 "2006 Jan 26" "GNU Bash-3.2" +.\" +.\" There's some problem with having a `@' +.\" in a tagged paragraph with the BSD man macros. +.\" It has to do with `@' appearing in the }1 macro. +.\" This is a problem on 4.3 BSD and Ultrix, but Sun +.\" appears to have fixed it. +.\" If you're seeing the characters +.\" `@u-3p' appearing before the lines reading +.\" `possible-hostname-completions +.\" and `complete-hostname' down in READLINE, +.\" then uncomment this redefinition. +.\" +.de }1 +.ds ]X \&\\*(]B\\ +.nr )E 0 +.if !"\\$1"" .nr )I \\$1n +.}f +.ll \\n(LLu +.in \\n()Ru+\\n(INu+\\n()Iu +.ti \\n(INu +.ie !\\n()Iu+\\n()Ru-\w\\*(]Xu-3p \{\\*(]X +.br\} +.el \\*(]X\h|\\n()Iu+\\n()Ru\c +.}f +.. +.\" +.\" File Name macro. This used to be `.PN', for Path Name, +.\" but Sun doesn't seem to like that very much. +.\" +.de FN +\fI\|\\$1\|\fP +.. +.SH NAME +bash \- GNU Bourne-Again SHell +.SH SYNOPSIS +.B bash +[options] +[file] +.SH COPYRIGHT +.if n Bash is Copyright (C) 1989-2005 by the Free Software Foundation, Inc. +.if t Bash is Copyright \(co 1989-2005 by the Free Software Foundation, Inc. +.SH DESCRIPTION +.B Bash +is an \fBsh\fR-compatible command language interpreter that +executes commands read from the standard input or from a file. +.B Bash +also incorporates useful features from the \fIKorn\fP and \fIC\fP +shells (\fBksh\fP and \fBcsh\fP). +.PP +.B Bash +is intended to be a conformant implementation of the +Shell and Utilities portion of the IEEE POSIX specification +(IEEE Standard 1003.1). +.B Bash +can be configured to be POSIX-conformant by default. +.SH OPTIONS +In addition to the single-character shell options documented in the +description of the \fBset\fR builtin command, \fBbash\fR +interprets the following options when it is invoked: +.PP +.PD 0 +.TP 10 +.BI \-c "\| string\^" +If the +.B \-c +option is present, then commands are read from +.IR string . +If there are arguments after the +.IR string , +they are assigned to the positional parameters, starting with +.BR $0 . +.TP +.B \-i +If the +.B \-i +option is present, the shell is +.IR interactive . +.TP +.B \-l +Make +.B bash +act as if it had been invoked as a login shell (see +.SM +.B INVOCATION +below). +.TP +.B \-r +If the +.B \-r +option is present, the shell becomes +.I restricted +(see +.SM +.B "RESTRICTED SHELL" +below). +.TP +.B \-s +If the +.B \-s +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. +.TP +.B \-D +A list of all double-quoted strings preceded by \fB$\fP +is printed on the standard output. +These are the strings that +are subject to language translation when the current locale +is not \fBC\fP or \fBPOSIX\fP. +This implies the \fB\-n\fP option; no commands will be executed. +.TP +.B [\-+]O [\fIshopt_option\fP] +\fIshopt_option\fP is one of the shell options accepted by the +\fBshopt\fP builtin (see +.SM +.B SHELL BUILTIN COMMANDS +below). +If \fIshopt_option\fP is present, \fB\-O\fP sets the value of that option; +\fB+O\fP unsets it. +If \fIshopt_option\fP is not supplied, the names and values of the shell +options accepted by \fBshopt\fP are printed on the standard output. +If the invocation option is \fB+O\fP, the output is displayed in a format +that may be reused as input. +.TP +.B \-\- +A +.B \-\- +signals the end of options and disables further option processing. +Any arguments after the +.B \-\- +are treated as filenames and arguments. An argument of +.B \- +is equivalent to \fB\-\-\fP. +.PD +.PP +.B Bash +also interprets a number of multi-character options. +These options must appear on the command line before the +single-character options to be recognized. +.PP +.PD 0 +.TP +.B \-\-debugger +Arrange for the debugger profile to be executed before the shell +starts. +Turns on extended debugging mode (see the description of the +.B extdebug +option to the +.B shopt +builtin below) +and shell function tracing (see the description of the +\fB\-o functrace\fP option to the +.B set +builtin below). +.TP +.B \-\-dump\-po\-strings +Equivalent to \fB\-D\fP, but the output is in the GNU \fIgettext\fP +\fBpo\fP (portable object) file format. +.TP +.B \-\-dump\-strings +Equivalent to \fB\-D\fP. +.TP +.B \-\-help +Display a usage message on standard output and exit successfully. +.TP +\fB\-\-init\-file\fP \fIfile\fP +.PD 0 +.TP +\fB\-\-rcfile\fP \fIfile\fP +.PD +Execute commands from +.I file +instead of the standard personal initialization file +.I ~/.bashrc +if the shell is interactive (see +.SM +.B INVOCATION +below). +.TP +.B \-\-login +Equivalent to \fB\-l\fP. +.TP +.B \-\-noediting +Do not use the GNU +.B readline +library to read command lines when the shell is interactive. +.TP +.B \-\-noprofile +Do not read either the system-wide startup file +.FN /etc/profile +or any of the personal initialization files +.IR ~/.bash_profile , +.IR ~/.bash_login , +or +.IR ~/.profile . +By default, +.B bash +reads these files when it is invoked as a login shell (see +.SM +.B INVOCATION +below). +.TP +.B \-\-norc +Do not read and execute the personal initialization file +.I ~/.bashrc +if the shell is interactive. +This option is on by default if the shell is invoked as +.BR sh . +.TP +.B \-\-posix +Change the behavior of \fBbash\fP where the default operation differs +from the POSIX standard to match the standard (\fIposix mode\fP). +.TP +.B \-\-restricted +The shell becomes restricted (see +.SM +.B "RESTRICTED SHELL" +below). +.TP +.B \-\-verbose +Equivalent to \fB\-v\fP. +.TP +.B \-\-version +Show version information for this instance of +.B bash +on the standard output and exit successfully. +.PD +.SH ARGUMENTS +If arguments remain after option processing, and neither the +.B \-c +nor the +.B \-s +option has been supplied, the first argument is assumed to +be the name of a file containing shell commands. +If +.B bash +is invoked in this fashion, +.B $0 +is set to the name of the file, and the positional parameters +are set to the remaining arguments. +.B Bash +reads and executes commands from this file, then exits. +\fBBash\fP's exit status is the exit status 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 +.SM +.B PATH +for the script. +.SH INVOCATION +A \fIlogin shell\fP is one whose first character of argument zero is a +.BR \- , +or one started with the +.B \-\-login +option. +.PP +An \fIinteractive\fP shell is one started without non-option arguments +and without the +.B \-c +option +whose standard input and error are +both connected to terminals (as determined by +.IR isatty (3)), +or one started with the +.B \-i +option. +.SM +.B PS1 +is set and +.B $\- +includes +.B i +if +.B bash +is interactive, +allowing a shell script or a startup file to test this state. +.PP +The following paragraphs describe how +.B bash +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 +.B "Tilde Expansion" +in the +.SM +.B EXPANSION +section. +.PP +When +.B bash +is invoked as an interactive login shell, or as a non-interactive shell +with the \fB\-\-login\fP option, it first reads and +executes commands from the file \fI/etc/profile\fP, if that +file exists. +After reading that file, it looks for \fI~/.bash_profile\fP, +\fI~/.bash_login\fP, and \fI~/.profile\fP, in that order, and reads +and executes commands from the first one that exists and is readable. +The +.B \-\-noprofile +option may be used when the shell is started to inhibit this behavior. +.PP +When a login shell exits, +.B bash +reads and executes commands from the file \fI~/.bash_logout\fP, if it +exists. +.PP +When an interactive shell that is not a login shell is started, +.B bash +reads and executes commands from \fI~/.bashrc\fP, if that file exists. +This may be inhibited by using the +.B \-\-norc +option. +The \fB\-\-rcfile\fP \fIfile\fP option will force +.B bash +to read and execute commands from \fIfile\fP instead of \fI~/.bashrc\fP. +.PP +When +.B bash +is started non-interactively, to run a shell script, for example, it +looks for the variable +.SM +.B BASH_ENV +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. +.B Bash +behaves as if the following command were executed: +.sp .5 +.RS +.if t \f(CWif [ \-n "$BASH_ENV" ]; then . "$BASH_ENV"; fi\fP +.if n if [ \-n "$BASH_ENV" ]; then . "$BASH_ENV"; fi +.RE +.sp .5 +but the value of the +.SM +.B PATH +variable is not used to search for the file name. +.PP +If +.B bash +is invoked with the name +.BR sh , +it tries to mimic the startup behavior of historical versions of +.B sh +as closely as possible, +while conforming to the POSIX standard as well. +When invoked as an interactive login shell, or a non-interactive +shell with the \fB\-\-login\fP option, it first attempts to +read and execute commands from +.I /etc/profile +and +.IR ~/.profile , +in that order. +The +.B \-\-noprofile +option may be used to inhibit this behavior. +When invoked as an interactive shell with the name +.BR sh , +.B bash +looks for the variable +.SM +.BR ENV , +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 +.B sh +does not attempt to read and execute commands from any other startup +files, the +.B \-\-rcfile +option has no effect. +A non-interactive shell invoked with the name +.B sh +does not attempt to read any other startup files. +When invoked as +.BR sh , +.B bash +enters +.I posix +mode after the startup files are read. +.PP +When +.B bash +is started in +.I posix +mode, as with the +.B \-\-posix +command line option, it follows the POSIX standard for startup files. +In this mode, interactive shells expand the +.SM +.B ENV +variable and commands are read and executed from the file +whose name is the expanded value. +No other startup files are read. +.PP +.B Bash +attempts to determine when it is being run by the remote shell +daemon, usually \fIrshd\fP. +If +.B bash +determines it is being run by \fIrshd\fP, it reads and executes +commands from \fI~/.bashrc\fP, if that file exists and is readable. +It will not do this if invoked as \fBsh\fP. +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 +or allow them to be specified. +.PP +If the shell is started with the effective user (group) id not equal to the +real user (group) id, and the \fB\-p\fP option is not supplied, no startup +files are read, shell functions are not inherited from the environment, the +.SM +.B SHELLOPTS +variable, if it appears in the environment, is ignored, +and the effective user id is set to the real user id. +If the \fB\-p\fP option is supplied at invocation, the startup behavior is +the same, but the effective user id is not reset. +.SH DEFINITIONS +.PP +The following definitions are used throughout the rest of this +document. +.PD 0 +.TP +.B blank +A space or tab. +.TP +.B word +A sequence of characters considered as a single unit by the shell. +Also known as a +.BR token . +.TP +.B name +A +.I word +consisting only of alphanumeric characters and underscores, and +beginning with an alphabetic character or an underscore. Also +referred to as an +.BR identifier . +.TP +.B metacharacter +A character that, when unquoted, separates words. One of the following: +.br +.RS +.PP +.if t \fB| & ; ( ) < > space tab\fP +.if n \fB| & ; ( ) < > space tab\fP +.RE +.PP +.TP +.B control operator +A \fItoken\fP that performs a control function. It is one of the following +symbols: +.RS +.PP +.if t \fB\(bv\(bv & && ; ;; ( ) | \fP +.if n \fB|| & && ; ;; ( ) | \fP +.RE +.PD +.SH "RESERVED WORDS" +\fIReserved words\fP 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 +.SM +.B SHELL GRAMMAR +below) or the third word of a +.B case +or +.B for +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 t .RE +.SH "SHELL GRAMMAR" +.SS Simple Commands +.PP +A \fIsimple command\fP is a sequence of optional variable assignments +followed by \fBblank\fP-separated words and redirections, and +terminated by a \fIcontrol operator\fP. The first word +specifies the command to be executed, and is passed as argument zero. +The remaining words are passed as arguments to the invoked command. +.PP +The return value of a \fIsimple command\fP is its exit status, or +128+\fIn\^\fP if the command is terminated by signal +.IR n . +.SS Pipelines +.PP +A \fIpipeline\fP is a sequence of one or more commands separated by +the character +.BR | . +The format for a pipeline is: +.RS +.PP +[\fBtime\fP [\fB\-p\fP]] [ ! ] \fIcommand\fP [ \fB|\fP \fIcommand2\fP ... ] +.RE +.PP +The standard output of +.I command +is connected via a pipe to the standard input of +.IR command2 . +This connection is performed before any redirections specified by the +command (see +.SM +.B REDIRECTION +below). +.PP +The return status of a pipeline is the exit status of the last +command, unless the \fBpipefail\fP option is enabled. +If \fBpipefail\fP is enabled, the pipeline's return status is the +value of the last (rightmost) command to exit with a non-zero status, +or zero if all commands exit successfully. +If the reserved word +.B ! +precedes a pipeline, the exit status of that pipeline is the logical +negation of the exit status as described above. +The shell waits for all commands in the pipeline to +terminate before returning a value. +.PP +If the +.B time +reserved word precedes a pipeline, the elapsed as well as user and +system time consumed by its execution are reported when the pipeline +terminates. +The \fB\-p\fP option changes the output format to that specified by POSIX. +The +.SM +.B TIMEFORMAT +variable may be set to a format string that specifies how the timing +information should be displayed; see the description of +.SM +.B TIMEFORMAT +under +.B "Shell Variables" +below. +.PP +Each command in a pipeline is executed as a separate process (i.e., in a +subshell). +.SS Lists +.PP +A \fIlist\fP is a sequence of one or more pipelines separated by one +of the operators +.BR ; , +.BR & , +.BR && , +or +.BR \(bv\(bv , +and optionally terminated by one of +.BR ; , +.BR & , +or +.BR . +.PP +Of these list operators, +.B && +and +.B \(bv\(bv +have equal precedence, followed by +.B ; +and +.BR &, +which have equal precedence. +.PP +A sequence of one or more newlines may appear in a \fIlist\fP instead +of a semicolon to delimit commands. +.PP +If a command is terminated by the control operator +.BR & , +the shell executes the command in the \fIbackground\fP +in a subshell. The shell does not wait for the command to +finish, and the return status is 0. Commands separated by a +.B ; +are executed sequentially; the shell waits for each +command to terminate in turn. The return status is the +exit status of the last command executed. +.PP +The control operators +.B && +and +.B \(bv\(bv +denote AND lists and OR lists, respectively. +An AND list has the form +.RS +.PP +\fIcommand1\fP \fB&&\fP \fIcommand2\fP +.RE +.PP +.I command2 +is executed if, and only if, +.I command1 +returns an exit status of zero. +.PP +An OR list has the form +.RS +.PP +\fIcommand1\fP \fB\(bv\(bv\fP \fIcommand2\fP +.PP +.RE +.PP +.I command2 +is executed if and only if +.I command1 +returns a non-zero exit status. The return status of +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: +.TP +(\fIlist\fP) +\fIlist\fP is executed in a subshell environment (see +.SM +\fBCOMMAND EXECUTION ENVIRONMENT\fP +below). +Variable assignments and builtin +commands that affect the shell's environment do not remain in effect +after the command completes. The return status is the exit status of +\fIlist\fP. +.TP +{ \fIlist\fP; } +\fIlist\fP is simply executed in the current shell environment. +\fIlist\fP must be terminated with a newline or semicolon. +This is known as a \fIgroup command\fP. +The return status is the exit status of +\fIlist\fP. +Note that unlike the metacharacters \fB(\fP and \fB)\fP, \fB{\fP and +\fB}\fP are \fIreserved words\fP 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 \fIlist\fP by whitespace. +.TP +((\fIexpression\fP)) +The \fIexpression\fP is evaluated according to the rules described +below under +.SM +.BR "ARITHMETIC EVALUATION" . +If the value of the expression is non-zero, the return status is 0; +otherwise the return status is 1. This is exactly equivalent to +\fBlet "\fIexpression\fP"\fR. +.TP +\fB[[\fP \fIexpression\fP \fB]]\fP +Return a status of 0 or 1 depending on the evaluation of +the conditional expression \fIexpression\fP. +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 +substitution, and quote removal are performed. +Conditional operators such as \fB\-f\fP must be unquoted to be recognized +as primaries. +.if t .sp 0.5 +.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. +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. +.if t .sp 0.5 +.if n .sp 1 +An additional binary operator, \fB=~\fP, is available, with the same +precedence as \fB==\fP and \fB!=\fP. +When it is used, the string to the right of the operator is considered +an extended regular expression and matched accordingly (as in \fIregex\fP(3)). +The return value is 0 if the string matches +the pattern, and 1 otherwise. +If the regular expression is syntactically incorrect, the conditional +expression's return value is 2. +If the shell option +.B nocasematch +is enabled, the match is performed without regard to the case +of alphabetic characters. +Substrings matched by parenthesized subexpressions within the regular +expression are saved in the array variable \fBBASH_REMATCH\fP. +The element of \fBBASH_REMATCH\fP with index 0 is the portion of the string +matching the entire regular expression. +The element of \fBBASH_REMATCH\fP with index \fIn\fP is the portion of the +string matching the \fIn\fPth parenthesized subexpression. +.if t .sp 0.5 +.if n .sp 1 +Expressions may be combined using the following operators, listed +in decreasing order of precedence: +.if t .sp 0.5 +.if n .sp 1 +.RS +.PD 0 +.TP +.B ( \fIexpression\fP ) +Returns the value of \fIexpression\fP. +This may be used to override the normal precedence of operators. +.TP +.B ! \fIexpression\fP +True if +.I expression +is false. +.TP +\fIexpression1\fP \fB&&\fP \fIexpression2\fP +True if both +.I expression1 +and +.I expression2 +are true. +.TP +.if t \fIexpression1\fP \fB\(bv\(bv\fP \fIexpression2\fP +.if n \fIexpression1\fP \fB||\fP \fIexpression2\fP +True if either +.I expression1 +or +.I expression2 +is true. +.PD +.LP +The \fB&&\fP and +.if t \fB\(bv\(bv\fP +.if n \fB||\fP +operators do not evaluate \fIexpression2\fP if the value of +\fIexpression1\fP is sufficient to determine the return value of +the entire conditional expression. +.RE +.TP +\fBfor\fP \fIname\fP [ \fBin\fP \fIword\fP ] ; \fBdo\fP \fIlist\fP ; \fBdone\fP +The list of words following \fBin\fP is expanded, generating a list +of items. +The variable \fIname\fP is set to each element of this list +in turn, and \fIlist\fP is executed each time. +If the \fBin\fP \fIword\fP is omitted, the \fBfor\fP command executes +\fIlist\fP once for each positional parameter that is set (see +.SM +.B PARAMETERS +below). +The return status is the exit status of the last command that executes. +If the expansion of the items following \fBin\fP results in an empty +list, no commands are executed, and the return status is 0. +.TP +\fBfor\fP (( \fIexpr1\fP ; \fIexpr2\fP ; \fIexpr3\fP )) ; \fBdo\fP \fIlist\fP ; \fBdone\fP +First, the arithmetic expression \fIexpr1\fP is evaluated according +to the rules described below under +.SM +.BR "ARITHMETIC EVALUATION" . +The arithmetic expression \fIexpr2\fP is then evaluated repeatedly +until it evaluates to zero. +Each time \fIexpr2\fP evaluates to a non-zero value, \fIlist\fP is +executed and the arithmetic expression \fIexpr3\fP 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 \fIlist\fP +that is executed, or false if any of the expressions is invalid. +.TP +\fBselect\fP \fIname\fP [ \fBin\fP \fIword\fP ] ; \fBdo\fP \fIlist\fP ; \fBdone\fP +The list of words following \fBin\fP 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 \fBin\fP +\fIword\fP is omitted, the positional parameters are printed (see +.SM +.B PARAMETERS +below). The +.B PS3 +prompt is then displayed and a line read from the standard input. +If the line consists of a number corresponding to one of +the displayed words, then the value of +.I name +is set to that word. If the line is empty, the words and prompt +are displayed again. If EOF is read, the command completes. Any +other value read causes +.I name +to be set to null. The line read is saved in the variable +.BR REPLY . +The +.I list +is executed after each selection until a +.B break +command is executed. +The exit status of +.B select +is the exit status of the last command executed in +.IR list , +or zero if no commands were executed. +.TP +\fBcase\fP \fIword\fP \fBin\fP [ [(] \fIpattern\fP [ \fB|\fP \fIpattern\fP ] \ +... ) \fIlist\fP ;; ] ... \fBesac\fP +A \fBcase\fP command first expands \fIword\fP, and tries to match +it against each \fIpattern\fP in turn, using the same matching rules +as for pathname expansion (see +.B Pathname Expansion +below). +The \fIword\fP is expanded using tilde +expansion, parameter and variable expansion, arithmetic substituion, +command substitution, process substitution and quote removal. +Each \fIpattern\fP examined is expanded using tilde +expansion, parameter and variable expansion, arithmetic substituion, +command substitution, and process substitution. +If the shell option +.B nocasematch +is enabled, the match is performed without regard to the case +of alphabetic characters. +When a match is found, the +corresponding \fIlist\fP is executed. After the first match, no +subsequent matches are attempted. 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 \ +[ \fBelif\fP \fIlist\fP; \fBthen\fP \fIlist\fP; ] ... \ +[ \fBelse\fP \fIlist\fP; ] \fBfi\fP +The +.B if +.I list +is executed. If its exit status is zero, the +\fBthen\fP \fIlist\fP is executed. Otherwise, each \fBelif\fP +\fIlist\fP is executed in turn, and if its exit status is zero, +the corresponding \fBthen\fP \fIlist\fP is executed and the +command completes. Otherwise, the \fBelse\fP \fIlist\fP is +executed, if present. The exit status is the exit status of the +last command executed, or zero if no condition tested true. +.TP +\fBwhile\fP \fIlist\fP; \fBdo\fP \fIlist\fP; \fBdone\fP +.PD 0 +.TP +\fBuntil\fP \fIlist\fP; \fBdo\fP \fIlist\fP; \fBdone\fP +.PD +The \fBwhile\fP command continuously executes the \fBdo\fP +\fIlist\fP as long as the last command in \fIlist\fP returns +an exit status of zero. The \fBuntil\fP command is identical +to the \fBwhile\fP command, except that the test is negated; +the +.B do +.I list +is executed as long as the last command in +.I list +returns a non-zero exit status. +The exit status of the \fBwhile\fP and \fBuntil\fP commands +is the exit status +of the last \fBdo\fP \fIlist\fP command executed, or zero if +none was executed. +.SS Shell Function Definitions +.PP +A shell function is an object that is called like a simple command and +executes a compound command with a new set of positional parameters. +Shell functions are declared as follows: +.TP +[ \fBfunction\fP ] \fIname\fP () \fIcompound\-command\fP [\fIredirection\fP] +This defines a function named \fIname\fP. +The reserved word \fBfunction\fP is optional. +If the \fBfunction\fP reserved word is supplied, the parentheses are optional. +The \fIbody\fP of the function is the compound command +.I compound\-command +(see \fBCompound Commands\fP above). +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. +Any redirections (see +.SM +.B REDIRECTION +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 +.SM +.B FUNCTIONS +below.) +.SH COMMENTS +In a non-interactive shell, or an interactive shell in which the +.B interactive_comments +option to the +.B shopt +builtin is enabled (see +.SM +.B "SHELL BUILTIN COMMANDS" +below), a word beginning with +.B # +causes that word and all remaining characters on that line to +be ignored. An interactive shell without the +.B interactive_comments +option enabled does not allow comments. The +.B interactive_comments +option is on by default in interactive shells. +.SH QUOTING +\fIQuoting\fP 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. +.PP +Each of the \fImetacharacters\fP listed above under +.SM +.B DEFINITIONS +has special meaning to the shell and must be quoted if it is to +represent itself. +.PP +When the command history expansion facilities are being used +(see +.SM +.B HISTORY EXPANSION +below), the +\fIhistory expansion\fP character, usually \fB!\fP, must be quoted +to prevent history expansion. +.PP +There are three quoting mechanisms: the +.IR "escape character" , +single quotes, and double quotes. +.PP +A non-quoted backslash (\fB\e\fP) is the +.IR "escape character" . +It preserves the literal value of the next character that follows, +with the exception of . If a \fB\e\fP pair +appears, and the backslash is not itself quoted, the \fB\e\fP +is treated as a line continuation (that is, it is removed from the +input stream and effectively ignored). +.PP +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. +.PP +Enclosing characters in double quotes preserves the literal value +of all characters within the quotes, with the exception of +.BR $ , +.BR ` , +.BR \e , +and, when history expansion is enabled, +.BR ! . +The characters +.B $ +and +.B ` +retain their special meaning within double quotes. The backslash +retains its special meaning only when followed by one of the following +characters: +.BR $ , +.BR ` , +\^\fB"\fP\^, +.BR \e , +or +.BR . +A double quote may be quoted within double quotes by preceding it with +a backslash. +If enabled, history expansion will be performed unless an +.B ! +appearing in double quotes is escaped using a backslash. +The backslash preceding the +.B ! +is not removed. +.PP +The special parameters +.B * +and +.B @ +have special meaning when in double +quotes (see +.SM +.B PARAMETERS +below). +.PP +Words of the form \fB$\fP\(aq\fIstring\fP\(aq are treated specially. The +word expands to \fIstring\fP, with backslash-escaped characters replaced +as specified by the ANSI C standard. Backslash escape sequences, if +present, are decoded as follows: +.RS +.PD 0 +.TP +.B \ea +alert (bell) +.TP +.B \eb +backspace +.TP +.B \ee +an escape character +.TP +.B \ef +form feed +.TP +.B \en +new line +.TP +.B \er +carriage return +.TP +.B \et +horizontal tab +.TP +.B \ev +vertical tab +.TP +.B \e\e +backslash +.TP +.B \e\(aq +single quote +.TP +.B \e\fInnn\fP +the eight-bit character whose value is the octal value \fInnn\fP +(one to three digits) +.TP +.B \ex\fIHH\fP +the eight-bit character whose value is the hexadecimal value \fIHH\fP +(one or two hex digits) +.TP +.B \ec\fIx\fP +a control-\fIx\fP character +.PD +.RE +.LP +The expanded result is single-quoted, as if the dollar sign had +not been present. +.PP +A double-quoted string preceded by a dollar sign (\fB$\fP) will cause +the string to be translated according to the current locale. +If the current locale is \fBC\fP or \fBPOSIX\fP, the dollar sign +is ignored. +If the string is translated and replaced, the replacement is +double-quoted. +.SH PARAMETERS +A +.I parameter +is an entity that stores values. +It can be a +.IR name , +a number, or one of the special characters listed below under +.BR "Special Parameters" . +A +.I variable +is a parameter denoted by a +.IR name . +A variable has a \fIvalue\fP and zero or more \fIattributes\fP. +Attributes are assigned using the +.B declare +builtin command (see +.B declare +below in +.SM +.BR "SHELL BUILTIN COMMANDS" ). +.PP +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 +the +.B unset +builtin command (see +.SM +.B SHELL BUILTIN COMMANDS +below). +.PP +A +.I variable +may be assigned to by a statement of the form +.RS +.PP +\fIname\fP=[\fIvalue\fP] +.RE +.PP +If +.I value +is not given, the variable is assigned the null string. All +.I values +undergo tilde expansion, parameter and variable expansion, +command substitution, arithmetic expansion, and quote +removal (see +.SM +.B EXPANSION +below). If the variable has its +.B integer +attribute set, then +.I value +is evaluated as an arithmetic expression even if the $((...)) expansion is +not used (see +.B "Arithmetic Expansion" +below). +Word splitting is not performed, with the exception +of \fB"$@"\fP as explained below under +.BR "Special Parameters" . +Pathname expansion is not performed. +Assignment statements may also appear as arguments to the +.BR alias , +.BR declare , +.BR typeset , +.BR export , +.BR readonly , +and +.B local +builtin commands. +.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 +append to or add to the variable's previous value. +When += is applied to a variable for which the integer attribute has been +set, \fIvalue\fP 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 +.B Arrays +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. +When applied to a string-valued variable, \fIvalue\fP is expanded and +appended to the variable's value. +.SS Positional Parameters +.PP +A +.I positional parameter +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 +.B set +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 +.SM +.B FUNCTIONS +below). +.PP +When a positional parameter consisting of more than a single +digit is expanded, it must be enclosed in braces (see +.SM +.B EXPANSION +below). +.SS Special Parameters +.PP +The shell treats several parameters specially. These parameters may +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 +with the value of each parameter separated by the first character +of the +.SM +.B IFS +special variable. That is, "\fB$*\fP" is equivalent +to "\fB$1\fP\fIc\fP\fB$2\fP\fIc\fP\fB...\fP", where +.I c +is the first character of the value of the +.SM +.B IFS +variable. If +.SM +.B IFS +is unset, the parameters are separated by spaces. +If +.SM +.B IFS +is null, the parameters are joined without intervening separators. +.TP +.B @ +Expands to the positional parameters, starting from one. When the +expansion occurs within double quotes, each parameter expands to a +separate word. That is, "\fB$@\fP" is equivalent to +"\fB$1\fP" "\fB$2\fP" ... +If the double-quoted expansion occurs within a word, the expansion of +the first parameter is joined with the beginning 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, "\fB$@\fP" and +.B $@ +expand to nothing (i.e., they are removed). +.TP +.B # +Expands to the number of positional parameters in decimal. +.TP +.B ? +Expands to the status of the most recently executed foreground +pipeline. +.TP +.B \- +Expands to the current option flags as specified upon invocation, +by the +.B set +builtin command, or those set by the shell itself +(such as the +.B \-i +option). +.TP +.B $ +Expands to the process ID of the shell. In a () subshell, it +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. +.TP +.B 0 +Expands to the name of the shell or shell script. This is set at +shell initialization. If +.B bash +is invoked with a file of commands, +.B $0 +is set to the name of that file. If +.B bash +is started with the +.B \-c +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 +.BR bash , +as given by argument zero. +.TP +.B _ +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. +Subsequently, expands to the last argument to the previous command, +after expansion. +Also set to the full pathname used to invoke each command executed +and placed in the environment exported to that command. +When checking mail, this parameter holds the name of the mail file +currently being checked. +.PD +.SS Shell Variables +.PP +The following variables are set by the shell: +.PP +.PD 0 +.TP +.B BASH +Expands to the full file name used to invoke this instance of +.BR bash . +.TP +.B BASH_ARGC +An array variable whose values are the number of parameters in each +frame of the current bash execution call stack. +The number of +parameters to the current subroutine (shell function or script executed +with \fB.\fP or \fBsource\fP) is at the top of the stack. +When a subroutine is executed, the number of parameters passed is pushed onto +\fBBASH_ARGC\fP. +The shell sets \fBBASH_ARGC\fP only when in extended debugging mode +(see the description of the +.B extdebug +option to the +.B shopt +builtin below) +.TP +.B BASH_ARGV +An array variable containing all of the parameters in the current bash +execution call stack. The final parameter of the last subroutine call +is at the top of the stack; the first parameter of the initial call is +at the bottom. When a subroutine is executed, the parameters supplied +are pushed onto \fBBASH_ARGV\fP. +The shell sets \fBBASH_ARGV\fP only when in extended debugging mode +(see the description of the +.B extdebug +option to the +.B shopt +builtin below) +.TP +.B BASH_COMMAND +The command currently being executed or about to be executed, unless the +shell is executing a command as the result of a trap, +in which case it is the command executing at the time of the trap. +.TP +.B BASH_EXECUTION_STRING +The command argument to the \fB\-c\fP invocation option. +.TP +.B BASH_LINENO +An array variable whose members are the line numbers in source files +corresponding to each member of \fBFUNCNAME\fP. +\fB${BASH_LINENO[\fP\fI$i\fP\fB]}\fP is the line number in the source +file where \fB${FUNCNAME[\fP\fI$ifP\fB]}\fP was called. +The corresponding source file name is \fB${BASH_SOURCE[\fP\fI$i\fP\fB]}\fB. +Use \fBLINENO\fP to obtain the current line number. +.TP +.B BASH_REMATCH +An array variable whose members are assigned by the \fB=~\fP binary +operator to the \fB[[\fP conditional command. +The element with index 0 is the portion of the string +matching the entire regular expression. +The element with index \fIn\fP is the portion of the +string matching the \fIn\fPth parenthesized subexpression. +This variable is read-only. +.TP +.B BASH_SOURCE +An array variable whose members are the source filenames corresponding +to the elements in the \fBFUNCNAME\fP array variable. +.TP +.B BASH_SUBSHELL +Incremented by one each time a subshell or subshell environment is spawned. +The initial value is 0. +.TP +.B BASH_VERSINFO +A readonly array variable whose members hold version information for +this instance of +.BR bash . +The values assigned to the array members are as follows: +.sp .5 +.RS +.PD 0 +.TP 24 +.B BASH_VERSINFO[\fR0\fP] +The major version number (the \fIrelease\fP). +.TP +.B BASH_VERSINFO[\fR1\fP] +The minor version number (the \fIversion\fP). +.TP +.B BASH_VERSINFO[\fR2\fP] +The patch level. +.TP +.B BASH_VERSINFO[\fR3\fP] +The build version. +.TP +.B BASH_VERSINFO[\fR4\fP] +The release status (e.g., \fIbeta1\fP). +.TP +.B BASH_VERSINFO[\fR5\fP] +The value of \fBMACHTYPE\fP. +.PD +.RE +.TP +.B BASH_VERSION +Expands to a string describing the version of this instance of +.BR bash . +.TP +.B COMP_CWORD +An index into \fB${COMP_WORDS}\fP of the word containing the current +cursor position. +This variable is available only in shell functions invoked by the +programmable completion facilities (see \fBProgrammable Completion\fP +below). +.TP +.B COMP_LINE +The current command line. +This variable is available only in shell functions and external +commands invoked by the +programmable completion facilities (see \fBProgrammable Completion\fP +below). +.TP +.B COMP_POINT +The index of the current cursor position relative to the beginning 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 \fB${#COMP_LINE}\fP. +This variable is available only in shell functions and external +commands invoked by the +programmable completion facilities (see \fBProgrammable Completion\fP +below). +.TP +.B COMP_WORDBREAKS +The set of characters that the Readline library treats as word +separators when performing word completion. +If +.SM +.B COMP_WORDBREAKS +is unset, it loses its special properties, even if it is +subsequently reset. +.TP +.B COMP_WORDS +An array variable (see \fBArrays\fP below) consisting of the individual +words in the current command line. +This variable is available only in shell functions invoked by the +programmable completion facilities (see \fBProgrammable Completion\fP +below). +.TP +.B DIRSTACK +An array variable (see +.B Arrays +below) containing the current contents of the directory stack. +Directories appear in the stack in the order they are displayed by the +.B dirs +builtin. +Assigning to members of this array variable may be used to modify +directories already in the stack, but the +.B pushd +and +.B popd +builtins must be used to add and remove directories. +Assignment to this variable will not change the current directory. +If +.SM +.B DIRSTACK +is unset, it loses its special properties, even if it is +subsequently reset. +.TP +.B EUID +Expands to the effective user ID of the current user, initialized at +shell startup. This variable is readonly. +.TP +.B FUNCNAME +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 bottom-most element is "main". +This variable exists only when a shell function is executing. +Assignments to +.SM +.B FUNCNAME +have no effect and return an error status. +If +.SM +.B FUNCNAME +is unset, it loses its special properties, even if it is +subsequently reset. +.TP +.B GROUPS +An array variable containing the list of groups of which the current +user is a member. +Assignments to +.SM +.B GROUPS +have no effect and return an error status. +If +.SM +.B GROUPS +is unset, it loses its special properties, even if it is +subsequently reset. +.TP +.B HISTCMD +The history number, or index in the history list, of the current +command. +If +.SM +.B HISTCMD +is unset, it loses its special properties, even if it is +subsequently reset. +.TP +.B HOSTNAME +Automatically set to the name of the current host. +.TP +.B HOSTTYPE +Automatically set to a string that uniquely +describes the type of machine on which +.B bash +is executing. +The default is system-dependent. +.TP +.B LINENO +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 +.SM +.B LINENO +is unset, it loses its special properties, even if it is +subsequently reset. +.TP +.B MACHTYPE +Automatically set to a string that fully describes the system +type on which +.B bash +is executing, in the standard GNU \fIcpu-company-system\fP format. +The default is system-dependent. +.TP +.B OLDPWD +The previous working directory as set by the +.B cd +command. +.TP +.B OPTARG +The value of the last option argument processed by the +.B getopts +builtin command (see +.SM +.B SHELL BUILTIN COMMANDS +below). +.TP +.B OPTIND +The index of the next argument to be processed by the +.B getopts +builtin command (see +.SM +.B SHELL BUILTIN COMMANDS +below). +.TP +.B OSTYPE +Automatically set to a string that +describes the operating system on which +.B bash +is executing. +The default is system-dependent. +.TP +.B PIPESTATUS +An array variable (see +.B Arrays +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). +.TP +.B PPID +The process ID of the shell's parent. This variable is readonly. +.TP +.B PWD +The current working directory as set by the +.B cd +command. +.TP +.B RANDOM +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 +.SM +.BR RANDOM . +If +.SM +.B RANDOM +is unset, it loses its special properties, even if it is +subsequently reset. +.TP +.B REPLY +Set to the line of input read by the +.B read +builtin command when no arguments are supplied. +.TP +.B SECONDS +Each time this parameter is +referenced, the number of seconds since shell invocation is returned. If a +value is assigned to +.SM +.BR SECONDS , +the value returned upon subsequent +references is +the number of seconds since the assignment plus the value assigned. +If +.SM +.B SECONDS +is unset, it loses its special properties, even if it is +subsequently reset. +.TP +.B SHELLOPTS +A colon-separated list of enabled shell options. Each word in +the list is a valid argument for the +.B \-o +option to the +.B set +builtin command (see +.SM +.B "SHELL BUILTIN COMMANDS" +below). The options appearing in +.SM +.B SHELLOPTS +are those reported as +.I on +by \fBset \-o\fP. +If this variable is in the environment when +.B bash +starts up, each shell option in the list will be enabled before +reading any startup files. +This variable is read-only. +.TP +.B SHLVL +Incremented by one each time an instance of +.B bash +is started. +.TP +.B UID +Expands to the user ID of the current user, initialized at shell startup. +This variable is readonly. +.PD +.PP +The following variables are used by the shell. In some cases, +.B bash +assigns a default value to a variable; these cases are noted +below. +.PP +.PD 0 +.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 +initialize the shell, as in +.IR ~/.bashrc . +The value of +.SM +.B BASH_ENV +is subjected to parameter expansion, command substitution, and arithmetic +expansion before being interpreted as a file name. +.SM +.B PATH +is not used to search for the resultant file name. +.TP +.B CDPATH +The search path for the +.B cd +command. +This is a colon-separated list of directories in which the shell looks +for destination directories specified by the +.B cd +command. +A sample value is +.if t \f(CW".:~:/usr"\fP. +.if n ".:~:/usr". +.TP +.B COLUMNS +Used by the \fBselect\fP builtin command to determine the terminal width +when printing selection lists. Automatically set upon receipt of a SIGWINCH. +.TP +.B COMPREPLY +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). +.TP +.B EMACS +If \fBbash\fP finds this variable in the environment when the shell starts +with value +.if t \f(CWt\fP, +.if n "t", +it assumes that the shell is running in an emacs shell buffer and disables +line editing. +.TP +.B FCEDIT +The default editor for the +.B fc +builtin command. +.TP +.B FIGNORE +A colon-separated list of suffixes to ignore when performing +filename completion (see +.SM +.B READLINE +below). +A filename whose suffix matches one of the entries in +.SM +.B FIGNORE +is excluded from the list of matched filenames. +A sample value is +.if t \f(CW".o:~"\fP. +.if n ".o:~". +.TP +.B GLOBIGNORE +A colon-separated list of patterns defining the set of filenames to +be ignored by pathname expansion. +If a filename matched by a pathname expansion pattern also matches one +of the patterns in +.SM +.BR GLOBIGNORE , +it is removed from the list of matches. +.TP +.B HISTCONTROL +A colon-separated list of values controlling how commands are saved on +the history list. +If the list of values includes +.IR ignorespace , +lines which begin with a +.B space +character are not saved in the history list. +A value of +.I ignoredups +causes lines matching the previous history entry to not be saved. +A value of +.I ignoreboth +is shorthand for \fIignorespace\fP and \fIignoredups\fP. +A value of +.IR erasedups +causes all previous lines matching the current line to be removed from +the history list before that line is saved. +Any value not in the above list is ignored. +If \fBHISTCONTROL\fP is unset, or does not include a valid value, +all lines read by the shell parser are saved on the history list, +subject to the value of +.BR HISTIGNORE . +The second and subsequent lines of a multi-line compound command are +not tested, and are added to the history regardless of the value of +.BR HISTCONTROL . +.TP +.B HISTFILE +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. +.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, 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. +.TP +.B HISTIGNORE +A colon-separated list of patterns used to decide which command lines +should be saved on the history list. Each pattern is anchored at the +beginning of the line and must match the complete line (no implicit +`\fB*\fP' is appended). Each pattern is tested against the line +after the checks specified by +.B HISTCONTROL +are applied. +In addition to the normal shell pattern matching characters, `\fB&\fP' +matches the previous history line. `\fB&\fP' may be escaped using a +backslash; the backslash is removed before attempting a match. +The second and subsequent lines of a multi-line compound command are +not tested, and are added to the history regardless of the value of +.BR HISTIGNORE . +.TP +.B HISTSIZE +The number of commands to remember in the command history (see +.SM +.B HISTORY +below). The default value is 500. +.TP +.B HISTTIMEFORMAT +If this variable is set and not null, its value is used as a format string +for \fIstrftime\fP(3) to print the time stamp associated with each history +entry displayed by the \fBhistory\fP builtin. +If this variable is set, time stamps are written to the history file so +they may be preserved across shell sessions. +.TP +.B HOME +The home directory of the current user; the default argument for the +\fBcd\fP builtin command. +The value of this variable is also used when performing tilde expansion. +.TP +.B HOSTFILE +Contains the name of a file in the same format as +.FN /etc/hosts +that should be read when the shell needs to complete a +hostname. +The list of possible hostname completions may be changed while the +shell is running; +the next time hostname completion is attempted after the +value is changed, +.B bash +adds the contents of the new file to the existing list. +If +.SM +.B HOSTFILE +is set, but has no value, \fBbash\fP attempts to read +.FN /etc/hosts +to obtain the list of possible hostname completions. +When +.SM +.B HOSTFILE +is unset, the hostname list is cleared. +.TP +.B IFS +The +.I Internal Field Separator +that is used +for word splitting after expansion and to +split lines into words with the +.B read +builtin command. The default value is +``''. +.TP +.B IGNOREEOF +Controls the +action of an interactive shell on receipt of an +.SM +.B EOF +character as the sole input. If set, the value is the number of +consecutive +.SM +.B EOF +characters which must be +typed as the first characters on an input line before +.B bash +exits. If the variable exists but does not have a numeric value, or +has no value, the default value is 10. If it does not exist, +.SM +.B EOF +signifies the end of input to the shell. +.TP +.B INPUTRC +The filename for the +.B readline +startup file, overriding the default of +.FN ~/.inputrc +(see +.SM +.B READLINE +below). +.TP +.B LANG +Used to determine the locale category for any category not specifically +selected with a variable starting with \fBLC_\fP. +.TP +.B LC_ALL +This variable overrides the value of \fBLANG\fP and any other +\fBLC_\fP variable specifying a locale category. +.TP +.B LC_COLLATE +This variable determines the collation order used when sorting the +results of pathname expansion, and determines the behavior of range +expressions, equivalence classes, and collating sequences within +pathname expansion and pattern matching. +.TP +.B LC_CTYPE +This variable determines the interpretation of characters and the +behavior of character classes within pathname expansion and pattern +matching. +.TP +.B LC_MESSAGES +This variable determines the locale used to translate double-quoted +strings preceded by a \fB$\fP. +.TP +.B LC_NUMERIC +This variable determines the locale category used for number formatting. +.TP +.B LINES +Used by the \fBselect\fP builtin command to determine the column length +for printing selection lists. Automatically set upon receipt of a SIGWINCH. +.TP +.B MAIL +If this parameter is set to a file name and the +.SM +.B MAILPATH +variable is not set, +.B bash +informs the user of the arrival of mail in the specified file. +.TP +.B MAILCHECK +Specifies how +often (in seconds) +.B bash +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. +.TP +.B MAILPATH +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, \fB$_\fP expands to the name of +the current mailfile. +Example: +.RS +.PP +\fBMAILPATH\fP=\(aq/var/mail/bfox?"You have mail":~/shell\-mail?"$_ has mail!"\(aq +.PP +.B Bash +supplies a default value for this variable, but the location of the user +mail files that it uses is system dependent (e.g., /var/mail/\fB$USER\fP). +.RE +.TP +.B OPTERR +If set to the value 1, +.B bash +displays error messages generated by the +.B getopts +builtin command (see +.SM +.B SHELL BUILTIN COMMANDS +below). +.SM +.B OPTERR +is initialized to 1 each time the shell is invoked or a shell +script is executed. +.TP +.B PATH +The search path for commands. It +is a colon-separated list of directories in which +the shell looks for commands (see +.SM +.B COMMAND EXECUTION +below). +A zero-length (null) directory name in the value of \fBPATH\fP 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 +.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''. +.TP +.B POSIXLY_CORRECT +If this variable is in the environment when \fBbash\fP starts, the shell +enters \fIposix mode\fP before reading the startup files, as if the +.B \-\-posix +invocation option had been supplied. If it is set while the shell is +running, \fBbash\fP enables \fIposix mode\fP, as if the command +.if t \f(CWset -o posix\fP +.if n \fIset -o posix\fP +had been executed. +.TP +.B PROMPT_COMMAND +If set, the value is executed as a command prior to issuing each primary +prompt. +.TP +.B PS1 +The value of this parameter is expanded (see +.SM +.B PROMPTING +below) and used as the primary prompt string. The default value is +``\fB\es\-\ev\e$ \fP''. +.TP +.B PS2 +The value of this parameter is expanded as with +.B PS1 +and used as the secondary prompt string. The default is +``\fB> \fP''. +.TP +.B PS3 +The value of this parameter is used as the prompt for the +.B select +command (see +.SM +.B SHELL GRAMMAR +above). +.TP +.B PS4 +The value of this parameter is expanded as with +.B PS1 +and the value is printed before each command +.B bash +displays during an execution trace. The first character of +.SM +.B PS4 +is replicated multiple times, as necessary, to indicate multiple +levels of indirection. The default is ``\fB+ \fP''. +.TP +.B SHELL +The full pathname to the shell is kept in this environment variable. +If it is not set when the shell starts, +.B bash +assigns to it the full pathname of the current user's login shell. +.TP +.B TIMEFORMAT +The value of this parameter is used as a format string specifying +how the timing information for pipelines prefixed with the +.B time +reserved word should be displayed. +The \fB%\fP character introduces an escape sequence that is +expanded to a time value or other information. +The escape sequences and their meanings are as follows; the +braces denote optional portions. +.sp .5 +.RS +.PD 0 +.TP 10 +.B %% +A literal \fB%\fP. +.TP +.B %[\fIp\fP][l]R +The elapsed time in seconds. +.TP +.B %[\fIp\fP][l]U +The number of CPU seconds spent in user mode. +.TP +.B %[\fIp\fP][l]S +The number of CPU seconds spent in system mode. +.TP +.B %P +The CPU percentage, computed as (%U + %S) / %R. +.PD +.RE +.IP +The optional \fIp\fP is a digit specifying the \fIprecision\fP, +the number of fractional digits after a decimal point. +A value of 0 causes no decimal point or fraction to be output. +At most three places after the decimal point may be specified; +values of \fIp\fP greater than 3 are changed to 3. +If \fIp\fP is not specified, the value 3 is used. +.IP +The optional \fBl\fP specifies a longer format, including +minutes, of the form \fIMM\fPm\fISS\fP.\fIFF\fPs. +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. +If the value is null, no timing information is displayed. +A trailing newline is added when the format string is displayed. +.TP +.B TMOUT +If set to a value greater than zero, \fBTMOUT\fP is treated as the +default timeout for the \fBread\fP builtin. +The \fBselect\fP command terminates if input does not arrive +after \fBTMOUT\fP 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. +.B Bash +terminates after waiting for that number of seconds if input does +not arrive. +.TP +.B TMPDIR +If set, \fBBash\fP uses its value as the name of a directory in which +\fBBash\fP creates temporary files for the shell's use. +.TP +.B auto_resume +This variable controls how the shell interacts with the user and +job control. If this variable is set, single word simple +commands without redirections are treated as candidates for resumption +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 +.I name +of a stopped job, in this context, is the command line used to +start it. +If set to the value +.IR exact , +the string supplied must match the name of a stopped job exactly; +if set to +.IR substring , +the string supplied needs to match a substring of the name of a +stopped job. The +.I substring +value provides functionality analogous to the +.B %? +job identifier (see +.SM +.B JOB CONTROL +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 \fB%\fP\fIstring\fP job identifier. +.TP +.B histchars +The two or three characters which control history expansion +and tokenization (see +.SM +.B HISTORY EXPANSION +below). The first character is the \fIhistory expansion\fP character, +the character which signals the start of a history +expansion, normally `\fB!\fP'. +The second character is the \fIquick substitution\fP +character, which is used as shorthand for re-running the previous +command entered, substituting one string for another in the command. +The default is `\fB^\fP'. +The optional third character is the character +which indicates that the remainder of the line is a comment when found +as the first character of a word, normally `\fB#\fP'. The history +comment character causes history substitution to be skipped for the +remaining words on the line. It does not necessarily cause the shell +parser to treat the rest of the line as a comment. +.PD +.SS Arrays +.B Bash +provides one-dimensional array variables. Any variable may be used as +an array; the +.B declare +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 contiguously. Arrays are indexed using +integers and are zero-based. +.PP +An 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 +greater than or equal to zero. To explicitly declare an array, use +.B declare \-a \fIname\fP +(see +.SM +.B SHELL BUILTIN COMMANDS +below). +.B declare \-a \fIname\fP[\fIsubscript\fP] +is also accepted; the \fIsubscript\fP is ignored. Attributes may be +specified for an array variable using the +.B declare +and +.B readonly +builtins. Each attribute applies to all members of an array. +.PP +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. Only +\fIstring\fP is required. 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. +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. +.PP +Any element of an array may be referenced using +${\fIname\fP[\fIsubscript\fP]}. The braces are required to avoid +conflicts with pathname expansion. If +\fIsubscript\fP is \fB@\fP or \fB*\fP, the word expands to +all members of \fIname\fP. These subscripts differ only when the +word appears within double quotes. If the word is double-quoted, +${\fIname\fP[*]} expands to a single +word with the value of each array member separated by the first +character of the +.SM +.B IFS +special variable, and ${\fIname\fP[@]} expands each element of +\fIname\fP to a separate word. When there are no array members, +${\fIname\fP[@]} expands to nothing. +If the double-quoted expansion occurs within a word, the expansion of +the first parameter is joined with the beginning part of the original +word, and the expansion of the last parameter is joined with the last +part of the original word. +This is analogous to the expansion +of the special parameters \fB*\fP and \fB@\fP (see +.B Special Parameters +above). ${#\fIname\fP[\fIsubscript\fP]} expands to the length of +${\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 element zero. +.PP +The +.B unset +builtin is used to destroy arrays. \fBunset\fP \fIname\fP[\fIsubscript\fP] +destroys the array element at index \fIsubscript\fP. +Care must be taken to avoid unwanted side effects caused by filename +generation. +\fBunset\fP \fIname\fP, where \fIname\fP is an array, or +\fBunset\fP \fIname\fP[\fIsubscript\fP], where +\fIsubscript\fP is \fB*\fP or \fB@\fP, removes the entire array. +.PP +The +.BR declare , +.BR local , +and +.B readonly +builtins each accept a +.B \-a +option to specify an array. The +.B read +builtin accepts a +.B \-a +option to assign a list of words read from the standard input +to an array. The +.B set +and +.B declare +builtins display array values in a way that allows them to be +reused as assignments. +.SH EXPANSION +Expansion is performed on the command line after it has been split into +words. There are seven kinds of expansion performed: +.IR "brace expansion" , +.IR "tilde expansion" , +.IR "parameter and variable expansion" , +.IR "command substitution" , +.IR "arithmetic expansion" , +.IR "word splitting" , +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. +.PP +On systems that can support it, there is an additional expansion +available: \fIprocess substitution\fP. +.PP +Only brace expansion, word splitting, and pathname expansion +can change the number of words of the expansion; other expansions +expand a single word to a single word. +The only exceptions to this are the expansions of +"\fB$@\fP" and "\fB${\fP\fIname\fP\fB[@]}\fP" +as explained above (see +.SM +.BR PARAMETERS ). +.SS Brace Expansion +.PP +.I "Brace expansion" +is a mechanism by which arbitrary strings +may be generated. This mechanism is similar to +\fIpathname expansion\fP, but the filenames generated +need not exist. Patterns to be brace expanded take +the form of an optional +.IR preamble , +followed by either a series of comma-separated strings or +a sequence expression between a pair of braces, followed by +an optional +.IR postscript . +The preamble is prefixed to each string contained +within the braces, and the postscript is then appended +to each resulting string, expanding left to right. +.PP +Brace expansions may be nested. The results of each expanded +string are not sorted; left to right order is preserved. +For example, a\fB{\fPd,c,b\fB}\fPe expands into `ade ace abe'. +.PP +A sequence expression takes the form \fB{\fP\fIx\fP\fB..\fP\fIy\fP\fB}\fP, +where \fIx\fP and \fIy\fP are either integers or single characters. +When integers are supplied, the expression expands to each number between +\fIx\fP and \fIy\fP, inclusive. +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. +.PP +Brace expansion is performed before any other expansions, +and any characters special to other expansions are preserved +in the result. It is strictly textual. +.B Bash +does not apply any syntactic interpretation to the context of the +expansion or the text between the braces. +.PP +A correctly-formed brace expansion must contain unquoted opening +and closing braces, and at least one unquoted comma or a valid +sequence expression. +Any incorrectly formed brace expansion is left unchanged. +A \fB{\fP or \fB,\fP may be quoted with a backslash to prevent its +being considered part of a brace expression. +To avoid conflicts with parameter expansion, the string \fB${\fP +is not considered eligible for brace expansion. +.PP +This construct is typically used as shorthand when the common +prefix of the strings to be generated is longer than in the +above example: +.RS +.PP +mkdir /usr/local/src/bash/{old,new,dist,bugs} +.RE +or +.RS +chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}} +.RE +.PP +Brace expansion introduces a slight incompatibility with +historical versions of +.BR sh . +.B sh +does not treat opening or closing braces specially when they +appear as part of a word, and preserves them in the output. +.B Bash +removes braces from words as a consequence of brace +expansion. For example, a word entered to +.B sh +as \fIfile{1,2}\fP +appears identically in the output. The same word is +output as +.I file1 file2 +after expansion by +.BR bash . +If strict compatibility with +.B sh +is desired, start +.B bash +with the +.B +B +option or disable brace expansion with the +.B +B +option to the +.B set +command (see +.SM +.B SHELL BUILTIN COMMANDS +below). +.SS Tilde Expansion +.PP +If a word begins with an unquoted tilde character (`\fB~\fP'), all of +the characters preceding the first unquoted slash (or all characters, +if there is no unquoted slash) are considered a \fItilde-prefix\fP. +If none of the characters in the tilde-prefix are quoted, the +characters in the tilde-prefix following the tilde are treated as a +possible \fIlogin name\fP. +If this login name is the null string, the tilde is replaced with the +value of the shell parameter +.SM +.BR HOME . +If +.SM +.B HOME +is unset, the home directory of the user executing the shell is +substituted instead. +Otherwise, the tilde-prefix is replaced with the home directory +associated with the specified login name. +.PP +If the tilde-prefix is a `~+', the value of the shell variable +.SM +.B PWD +replaces the tilde-prefix. +If the tilde-prefix is a `~\-', the value of the shell variable +.SM +.BR OLDPWD , +if it is set, is substituted. +If the characters following the tilde in the tilde-prefix consist +of a number \fIN\fP, optionally prefixed +by a `+' or a `\-', the tilde-prefix is replaced with the corresponding +element from the directory stack, as it would be displayed by the +.B dirs +builtin invoked with the tilde-prefix as an argument. +If the characters following the tilde in the tilde-prefix consist of a +number without a leading `+' or `\-', `+' is assumed. +.PP +If the login name is invalid, or the tilde expansion fails, the word +is unchanged. +.PP +Each variable assignment is checked for unquoted tilde-prefixes immediately +following a +.B : +or the first +.BR = . +In these cases, tilde expansion is also performed. +Consequently, one may use file names with tildes in assignments to +.SM +.BR PATH , +.SM +.BR MAILPATH , +and +.SM +.BR CDPATH , +and the shell assigns the expanded value. +.SS Parameter Expansion +.PP +The `\fB$\fP' character introduces parameter expansion, +command substitution, or arithmetic expansion. The parameter name +or symbol to be expanded may be enclosed in braces, which +are optional but serve to protect the variable to be expanded from +characters immediately following it which could be +interpreted as part of the name. +.PP +When braces are used, the matching ending brace is the first `\fB}\fP' +not escaped by a backslash or within a quoted string, and not within an +embedded arithmetic expansion, command substitution, or parameter +expansion. +.PP +.PD 0 +.TP +${\fIparameter\fP} +The value of \fIparameter\fP is substituted. The braces are required +when +.I parameter +is a positional parameter with more than one digit, +or when +.I parameter +is followed by a character which is not to be +interpreted as part of its name. +.PD +.PP +If the first character of \fIparameter\fP is an exclamation point, +a level of variable indirection is introduced. +\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 +than the value of \fIparameter\fP itself. +This is known as \fIindirect expansion\fP. +The exceptions to this are the expansions of ${!\fIprefix\fP*} and +${\fB!\fP\fIname\fP[\fI@\fP]} described below. +The exclamation point must immediately follow the left brace in order to +introduce indirection. +.PP +In each of the cases below, \fIword\fP is subject to tilde expansion, +parameter expansion, command substitution, and arithmetic expansion. +When not performing substring expansion, \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 +.PD 0 +.TP +${\fIparameter\fP\fB:\-\fP\fIword\fP} +\fBUse Default Values\fP. If +.I parameter +is unset or null, the expansion of +.I word +is substituted. Otherwise, the value of +.I parameter +is substituted. +.TP +${\fIparameter\fP\fB:=\fP\fIword\fP} +\fBAssign Default Values\fP. +If +.I parameter +is unset or null, the expansion of +.I word +is assigned to +.IR parameter . +The value of +.I parameter +is then substituted. Positional parameters and special parameters may +not be assigned to in this way. +.TP +${\fIparameter\fP\fB:?\fP\fIword\fP} +\fBDisplay Error if Null or Unset\fP. +If +.I parameter +is null or unset, the expansion of \fIword\fP (or a message to that effect +if +.I word +is not present) is written to the standard error and the shell, if it +is not interactive, exits. Otherwise, the value of \fIparameter\fP is +substituted. +.TP +${\fIparameter\fP\fB:+\fP\fIword\fP} +\fBUse Alternate Value\fP. +If +.I parameter +is null or unset, nothing is substituted, otherwise the expansion of +.I word +is substituted. +.TP +${\fIparameter\fP\fB:\fP\fIoffset\fP} +.PD 0 +.TP +${\fIparameter\fP\fB:\fP\fIoffset\fP\fB:\fP\fIlength\fP} +.PD +\fBSubstring Expansion.\fP +Expands to up to \fIlength\fP characters 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. +\fIlength\fP and \fIoffset\fP are arithmetic expressions (see +.SM +.B +ARITHMETIC EVALUATION +below). +\fIlength\fP must evaluate to a number greater than or equal to zero. +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 \fIparameter\fP is \fB@\fP, the result is \fIlength\fP positional +parameters beginning at \fIoffset\fP. +If \fIparameter\fP is an array name indexed 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. +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. +.TP +${\fB!\fP\fIprefix\fP\fB*\fP} +.PD 0 +.TP +${\fB!\fP\fIprefix\fP\fB@\fP} +.PD +Expands to the names of variables whose names begin with \fIprefix\fP, +separated by the first character of the +.SM +.B IFS +special variable. +.TP +${\fB!\fP\fIname\fP[\fI@\fP]} +.PD 0 +.TP +${\fB!\fP\fIname\fP[\fI*\fP]} +.PD +If \fIname\fP is an array variable, expands to the list of array indices +(keys) assigned in \fIname\fP. +If \fIname\fP is not an array, expands to 0 if \fIname\fP is set and null +otherwise. +When \fI@\fP is used and the expansion appears within double quotes, each +key expands to a separate word. +.TP +${\fB#\fP\fIparameter\fP} +The length in characters of the value of \fIparameter\fP is substituted. +If +.I parameter +is +.B * +or +.BR @ , +the value substituted is the number of positional parameters. +If +.I parameter +is an array name subscripted by +.B * +or +.BR @ , +the value substituted is the number of elements in the array. +.TP +${\fIparameter\fP\fB#\fP\fIword\fP} +.PD 0 +.TP +${\fIparameter\fP\fB##\fP\fIword\fP} +.PD +The +.I word +is expanded to produce a pattern just as in pathname +expansion. If the pattern matches the beginning of +the value of +.IR parameter , +then the result of the expansion is the expanded value of +.I parameter +with the shortest matching pattern (the ``\fB#\fP'' case) or the +longest matching pattern (the ``\fB##\fP'' case) deleted. +If +.I parameter +is +.B @ +or +.BR * , +the pattern removal operation is applied to each positional +parameter in turn, and the expansion is the resultant list. +If +.I parameter +is an array variable subscripted with +.B @ +or +.BR * , +the pattern removal operation is applied to each member of the +array in turn, and the expansion is the resultant list. +.TP +${\fIparameter\fP\fB%\fP\fIword\fP} +.PD 0 +.TP +${\fIparameter\fP\fB%%\fP\fIword\fP} +.PD +The \fIword\fP is expanded to produce a pattern just as in +pathname expansion. +If the pattern matches a trailing portion of the expanded value of +.IR parameter , +then the result of the expansion is the expanded value of +.I parameter +with the shortest matching pattern (the ``\fB%\fP'' case) or the +longest matching pattern (the ``\fB%%\fP'' case) deleted. +If +.I parameter +is +.B @ +or +.BR * , +the pattern removal operation is applied to each positional +parameter in turn, and the expansion is the resultant list. +If +.I parameter +is an array variable subscripted with +.B @ +or +.BR * , +the pattern removal operation is applied to each member of the +array in turn, and the expansion is the resultant list. +.TP +${\fIparameter\fP\fB/\fP\fIpattern\fP\fB/\fP\fIstring\fP} +The \fIpattern\fP is expanded to produce a pattern just as in +pathname expansion. +\fIParameter\fP is expanded and the longest match of \fIpattern\fP +against its value is replaced with \fIstring\fP. +If \Ipattern\fP begins with \fB/\fP, all matches of \fIpattern\fP are +replaced with \fIstring\fP. Normally only the first match is replaced. +If \fIpattern\fP begins with \fB#\fP, it must match at the beginning +of the expanded value of \fIparameter\fP. +If \fIpattern\fP begins with \fB%\fP, it must match at the end +of the expanded value of \fIparameter\fP. +If \fIstring\fP is null, matches of \fIpattern\fP are deleted +and the \fB/\fP following \fIpattern\fP may be omitted. +If +.I parameter +is +.B @ +or +.BR * , +the substitution operation is applied to each positional +parameter in turn, and the expansion is the resultant list. +If +.I parameter +is an array variable subscripted with +.B @ +or +.BR * , +the substitution operation is applied to each member of the +array in turn, and the expansion is the resultant list. +.SS Command Substitution +.PP +\fICommand substitution\fP allows the output of a command to replace +the command name. There are two forms: +.PP +.RS +.PP +\fB$(\fP\fIcommand\fP\|\fB)\fP +.RE +or +.RS +\fB`\fP\fIcommand\fP\fB`\fP +.RE +.PP +.B Bash +performs the expansion by executing \fIcommand\fP and +replacing the command substitution with the standard output of the +command, with any trailing newlines deleted. +Embedded newlines are not deleted, but they may be removed during +word splitting. +The command substitution \fB$(cat \fIfile\fP)\fR can be replaced by +the equivalent but faster \fB$(< \fIfile\fP)\fR. +.PP +When the old-style backquote form of substitution is used, +backslash retains its literal meaning except when followed by +.BR $ , +.BR ` , +or +.BR \e . +The first backquote not preceded by a backslash terminates the +command substitution. +When using the $(\^\fIcommand\fP\|) form, all characters between the +parentheses make up the command; none are treated specially. +.PP +Command substitutions may be nested. To nest when using the backquoted form, +escape the inner backquotes with backslashes. +.PP +If the substitution appears within double quotes, word splitting and +pathname expansion are not performed on the results. +.SS Arithmetic Expansion +.PP +Arithmetic expansion allows the evaluation of an arithmetic expression +and the substitution of the result. The format for arithmetic expansion is: +.RS +.PP +\fB$((\fP\fIexpression\fP\fB))\fP +.RE +.PP +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. +Arithmetic expansions may be nested. +.PP +The evaluation is performed according to the rules listed below under +.SM +.BR "ARITHMETIC EVALUATION" . +If +.I expression +is invalid, +.B bash +prints a message indicating failure and no substitution occurs. +.SS Process Substitution +.PP +\fIProcess substitution\fP is supported on systems that support named +pipes (\fIFIFOs\fP) or the \fB/dev/fd\fP method of naming open files. +It takes the form of +\fB<(\fP\fIlist\^\fP\fB)\fP +or +\fB>(\fP\fIlist\^\fP\fB)\fP. +The process \fIlist\fP is run with its input or output connected to a +\fIFIFO\fP or some file in \fB/dev/fd\fP. The name of this file is +passed as an argument to the current command as the result of the +expansion. If the \fB>(\fP\fIlist\^\fP\fB)\fP form is used, writing to +the file will provide input for \fIlist\fP. If the +\fB<(\fP\fIlist\^\fP\fB)\fP form is used, the file passed as an +argument should be read to obtain the output of \fIlist\fP. +.PP +When available, process substitution is performed +simultaneously with parameter and variable expansion, +command substitution, +and arithmetic expansion. +.SS Word Splitting +.PP +The shell scans the results of +parameter expansion, +command substitution, +and +arithmetic expansion +that did not occur within double quotes for +.IR "word splitting" . +.PP +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 +.SM +.B IFS +is unset, or its +value is exactly +.BR , +the default, then +any sequence of +.SM +.B IFS +characters serves to delimit words. If +.SM +.B IFS +has a value other than the default, then sequences of +the whitespace characters +.B space +and +.B tab +are ignored at the beginning and end of the +word, as long as the whitespace character is in the +value of +.SM +.BR IFS +(an +.SM +.B IFS +whitespace character). +Any character in +.SM +.B IFS +that is not +.SM +.B IFS +whitespace, along with any adjacent +.SM +.B IFS +whitespace characters, delimits a field. +A sequence of +.SM +.B IFS +whitespace characters is also treated as a delimiter. +If the value of +.SM +.B IFS +is null, no word splitting occurs. +.PP +Explicit null arguments (\^\f3"\^"\fP or \^\f3\(aq\^\(aq\fP\^) 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 double quotes, a +null argument results and is retained. +.PP +Note that if no expansion occurs, no splitting +is performed. +.SS Pathname Expansion +.PP +After word splitting, +unless the +.B \-f +option has been set, +.B bash +scans each word for the characters +.BR * , +.BR ? , +and +.BR [ . +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, +and the shell option +.B nullglob +is disabled, the word is left unchanged. +If the +.B nullglob +option is set, and no matches are found, +the word is removed. +If the +.B failglob +shell option is set, and no matches are found, an error message +is printed and the command is not executed. +If the shell option +.B nocaseglob +is enabled, the match is performed without regard to the case +of alphabetic characters. +When a pattern is used for pathname expansion, +the character +.B ``.'' +at the start of a name or immediately following a slash +must be matched explicitly, unless the shell option +.B dotglob +is set. +When matching a pathname, the slash character must always be +matched explicitly. +In other cases, the +.B ``.'' +character is not treated specially. +See the description of +.B shopt +below under +.SM +.B SHELL BUILTIN COMMANDS +for a description of the +.BR nocaseglob , +.BR nullglob , +.BR failglob , +and +.B dotglob +shell options. +.PP +The +.SM +.B GLOBIGNORE +shell variable may be used to restrict the set of file names matching a +.IR pattern . +If +.SM +.B GLOBIGNORE +is set, each matching file name that also matches one of the patterns in +.SM +.B GLOBIGNORE +is removed from the list of matches. +The file names +.B ``.'' +and +.B ``..'' +are always ignored when +.SM +.B GLOBIGNORE +is set and not null. However, setting +.SM +.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 +.B ``.'' +will match. +To get the old behavior of ignoring file names beginning with a +.BR ``.'' , +make +.B ``.*'' +one of the patterns in +.SM +.BR GLOBIGNORE . +The +.B dotglob +option is disabled when +.SM +.B GLOBIGNORE +is unset. +.PP +\fBPattern Matching\fP +.PP +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 must be quoted if +they are to be matched literally. +.PP +The special pattern characters have the following meanings: +.PP +.PD 0 +.TP +.B * +Matches any string, including the null string. +.TP +.B ? +Matches any single character. +.TP +.B [...] +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, +using the current locale's collating sequence and character set, +is matched. If the first character following the +.B [ +is a +.B ! +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 \fBLC_COLLATE\fP shell variable, +if set. +A +.B \- +may be matched by including it as the first or last character +in the set. +A +.B ] +may be matched by including it as the first character +in the set. +.br +.if t .sp 0.5 +.if n .sp 1 +Within +.B [ +and +.BR ] , +\fIcharacter classes\fP can be specified using the syntax +\fB[:\fP\fIclass\fP\fB:]\fP, where \fIclass\fP is one of the +following classes defined in the POSIX standard: +.PP +.RS +.B +.if n alnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigit +.if t alnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigit +.br +A character class matches any character belonging to that class. +The \fBword\fP character class matches letters, digits, and the character _. +.br +.if t .sp 0.5 +.if n .sp 1 +Within +.B [ +and +.BR ] , +an \fIequivalence class\fP can be specified using the syntax +\fB[=\fP\fIc\fP\fB=]\fP, which matches all characters with the +same collation weight (as defined by the current locale) as +the character \fIc\fP. +.br +.if t .sp 0.5 +.if n .sp 1 +Within +.B [ +and +.BR ] , +the syntax \fB[.\fP\fIsymbol\fP\fB.]\fP matches the collating symbol +\fIsymbol\fP. +.RE +.PD +.PP +If the \fBextglob\fP shell option is enabled using the \fBshopt\fP +builtin, several extended pattern matching operators are recognized. +In the following description, a \fIpattern-list\fP is a list of one +or more patterns separated by a \fB|\fP. +Composite patterns may be formed using one or more of the following +sub-patterns: +.sp 1 +.PD 0 +.RS +.TP +\fB?(\fP\^\fIpattern-list\^\fP\fB)\fP +Matches zero or one occurrence of the given patterns +.TP +\fB*(\fP\^\fIpattern-list\^\fP\fB)\fP +Matches zero or more occurrences of the given patterns +.TP +\fB+(\fP\^\fIpattern-list\^\fP\fB)\fP +Matches one or more occurrences of the given patterns +.TP +\fB@(\fP\^\fIpattern-list\^\fP\fB)\fP +Matches one of the given patterns +.TP +\fB!(\fP\^\fIpattern-list\^\fP\fB)\fP +Matches anything except one of the given patterns +.RE +.PD +.SS Quote Removal +.PP +After the preceding expansions, all unquoted occurrences of the +characters +.BR \e , +.BR \(aq , +and \^\f3"\fP\^ that did not result from one of the above +expansions are removed. +.SH REDIRECTION +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 +operators may precede or appear anywhere within a +.I simple command +or may follow a +.IR command . +Redirections are processed in the order they appear, from +left to right. +.PP +In the following descriptions, if the file descriptor number is +omitted, and the first character of the redirection operator is +.BR < , +the redirection refers to the standard input (file descriptor +0). If the first character of the redirection operator is +.BR > , +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. +If it expands to more than one word, +.B bash +reports an error. +.PP +Note that the order of redirections is significant. For example, +the command +.RS +.PP +ls \fB>\fP dirlist 2\fB>&\fP1 +.RE +.PP +directs both standard output and standard error to the file +.IR dirlist , +while the command +.RS +.PP +ls 2\fB>&\fP1 \fB>\fP dirlist +.RE +.PP +directs only the standard output to file +.IR dirlist , +because the standard error was duplicated as standard output +before the standard output was redirected to +.IR dirlist . +.PP +\fBBash\fP handles several filenames specially when they are used in +redirections, as described in the following table: +.RS +.PP +.PD 0 +.TP +.B /dev/fd/\fIfd\fP +If \fIfd\fP is a valid integer, file descriptor \fIfd\fP is duplicated. +.TP +.B /dev/stdin +File descriptor 0 is duplicated. +.TP +.B /dev/stdout +File descriptor 1 is duplicated. +.TP +.B /dev/stderr +File descriptor 2 is duplicated. +.TP +.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. +.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. +.PD +.RE +.PP +A failure to open or create a file causes the redirection to fail. +.PP +Redirections using file descriptors greater than 9 should be used with +care, as they may conflict with file descriptors the shell uses +internally. +.SS Redirecting Input +.PP +Redirection of input causes the file whose name results from +the expansion of +.I word +to be opened for reading on file descriptor +.IR n , +or the standard input (file descriptor 0) if +.I n +is not specified. +.PP +The general format for redirecting input is: +.RS +.PP +[\fIn\fP]\fB<\fP\fIword\fP +.RE +.SS Redirecting Output +.PP +Redirection of output causes the file whose name results from +the expansion of +.I word +to be opened for writing on file descriptor +.IR n , +or the standard output (file descriptor 1) if +.I n +is not specified. If the file does not exist it is created; +if it does exist it is truncated to zero size. +.PP +The general format for redirecting output is: +.RS +.PP +[\fIn\fP]\fB>\fP\fIword\fP +.RE +.PP +If the redirection operator is +.BR > , +and the +.B noclobber +option to the +.B set +builtin has been enabled, the redirection will fail if the file +whose name results from the expansion of \fIword\fP exists and is +a regular file. +If the redirection operator is +.BR >| , +or the redirection operator is +.B > +and the +.B noclobber +option to the +.B set +builtin command is not enabled, the redirection is attempted even +if the file named by \fIword\fP exists. +.SS Appending Redirected Output +.PP +Redirection of output in this fashion +causes the file whose name results from +the expansion of +.I word +to be opened for appending on file descriptor +.IR n , +or the standard output (file descriptor 1) if +.I n +is not specified. If the file does not exist it is created. +.PP +The general format for appending output is: +.RS +.PP +[\fIn\fP]\fB>>\fP\fIword\fP +.RE +.PP +.SS Redirecting Standard Output and Standard Error +.PP +.B Bash +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 +.I word +with this construct. +.PP +There are two formats for redirecting standard output and +standard error: +.RS +.PP +\fB&>\fP\fIword\fP +.RE +and +.RS +\fB>&\fP\fIword\fP +.RE +.PP +Of the two forms, the first is preferred. +This is semantically equivalent to +.RS +.PP +\fB>\fP\fIword\fP 2\fB>&\fP1 +.RE +.SS Here Documents +.PP +This type of redirection instructs the shell to read input from the +current source until a line containing only +.I word +(with no trailing blanks) +is seen. All of +the lines read up to that point are then used as the standard +input for a command. +.PP +The format of here-documents is: +.RS +.PP +.nf +\fB<<\fP[\fB\-\fP]\fIword\fP + \fIhere-document\fP +\fIdelimiter\fP +.fi +.RE +.PP +No parameter expansion, command substitution, arithmetic expansion, +or pathname expansion is performed on +.IR word . +If any characters in +.I word +are quoted, the +.I delimiter +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 +.B \e +is ignored, and +.B \e +must be used to quote the characters +.BR \e , +.BR $ , +and +.BR ` . +.PP +If the redirection operator is +.BR <<\- , +then all leading tab characters are stripped from input lines and the +line containing +.IR delimiter . +This allows +here-documents within shell scripts to be indented in a +natural fashion. +.SS "Here Strings" +A variant of here documents, the format is: +.RS +.PP +.nf +\fB<<<\fP\fIword\fP +.fi +.RE +.PP +The \fIword\fP is expanded and supplied to the command on its standard +input. +.SS "Duplicating File Descriptors" +.PP +The redirection operator +.RS +.PP +[\fIn\fP]\fB<&\fP\fIword\fP +.RE +.PP +is used to duplicate input file descriptors. +If +.I word +expands to one or more digits, the file descriptor denoted by +.I n +is made to be a copy of that file descriptor. +If the digits in +.I word +do not specify a file descriptor open for input, a redirection error occurs. +If +.I word +evaluates to +.BR \- , +file descriptor +.I n +is closed. If +.I n +is not specified, the standard input (file descriptor 0) is used. +.PP +The operator +.RS +.PP +[\fIn\fP]\fB>&\fP\fIword\fP +.RE +.PP +is used similarly to duplicate output file descriptors. If +.I n +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. +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 +error are redirected as described previously. +.SS "Moving File Descriptors" +.PP +The redirection operator +.RS +.PP +[\fIn\fP]\fB<&\fP\fIdigit\fP\fB\-\fP +.RE +.PP +moves the file descriptor \fIdigit\fP to file descriptor +.IR n , +or the standard input (file descriptor 0) if \fIn\fP is not specified. +\fIdigit\fP is closed after being duplicated to \fIn\fP. +.PP +Similarly, the redirection operator +.RS +.PP +[\fIn\fP]\fB>&\fP\fIdigit\fP\fB\-\fP +.RE +.PP +moves the file descriptor \fIdigit\fP to file descriptor +.IR n , +or the standard output (file descriptor 1) if \fIn\fP is not specified. +.SS "Opening File Descriptors for Reading and Writing" +.PP +The redirection operator +.RS +.PP +[\fIn\fP]\fB<>\fP\fIword\fP +.RE +.PP +causes the file whose name is the expansion of +.I word +to be opened for both reading and writing on file descriptor +.IR n , +or on file descriptor 0 if +.I n +is not specified. If the file does not exist, it is created. +.SH ALIASES +\fIAliases\fP 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 +.B alias +and +.B unalias +builtin commands (see +.SM +.B SHELL BUILTIN COMMANDS +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 \fB/\fP, \fB$\fP, \fB`\fP, and \fB=\fP and +any of the shell \fImetacharacters\fP 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 +.B ls +to +.BR "ls \-F" , +for instance, and +.B bash +does not try to recursively expand the replacement text. +If the last character of the alias value is a +.IR blank , +then the next command +word following the alias is also checked for alias expansion. +.PP +Aliases are created and listed with the +.B alias +command, and removed with the +.B unalias +command. +.PP +There is no mechanism for using arguments in the replacement text. +If arguments are needed, a shell function should be used (see +.SM +.B FUNCTIONS +below). +.PP +Aliases are not expanded when the shell is not interactive, unless +the +.B expand_aliases +shell option is set using +.B shopt +(see the description of +.B shopt +under +.SM +\fBSHELL BUILTIN COMMANDS\fP +below). +.PP +The rules concerning the definition and use of aliases are +somewhat confusing. +.B Bash +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 compound 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 +.B alias +in compound commands. +.PP +For almost every purpose, aliases are superseded by +shell functions. +.SH FUNCTIONS +A shell function, defined as described above under +.SM +.BR "SHELL GRAMMAR" , +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 positional parameters +during its execution. +The special parameter +.B # +is updated to reflect the change. Special parameter 0 +is unchanged. +The first element of the +.SM +.B FUNCNAME +variable is set to the name of the function while the function +is executing. +All other aspects of the shell execution +environment are identical between a function and its caller +with the exception that the +.SM +.B DEBUG +and +.B RETURN +traps (see the description of the +.B trap +builtin under +.SM +.B SHELL BUILTIN COMMANDS +below) are not inherited unless the function has been given the +\fBtrace\fP attribute (see the description of the +.SM +.B declare +builtin below) or the +\fB\-o functrace\fP shell option has been enabled with +the \fBset\fP builtin +(in which case all functions inherit the \fBDEBUG\fP and \fBRETURN\fP traps). +.PP +Variables local to the function may be declared with the +.B local +builtin command. Ordinarily, variables and their values +are shared between the function and its caller. +.PP +If the builtin command +.B return +is executed in a function, the function completes and +execution resumes with the next command after the function +call. +Any command associated with the \fBRETURN\fP trap is executed +before execution resumes. +When a function completes, the values of the +positional parameters and the special parameter +.B # +are restored to the values they had prior to the function's +execution. +.PP +Function names and definitions may be listed with the +.B \-f +option to the +.B declare +or +.B typeset +builtin commands. The +.B \-F +option to +.B declare +or +.B typeset +will list the function names only +(and optionally the source file and line number, if the \fBextdebug\fP +shell option is enabled). +Functions may be exported so that subshells +automatically have them defined with the +.B \-f +option to the +.B export +builtin. +A function definition may be deleted using the \fB\-f\fP option to +the +.B unset +builtin. +Note that shell functions and variables with the same name may result +in multiple identically-named entries in the environment passed to the +shell's children. +Care should be taken in cases where this may cause a problem. +.PP +Functions may be recursive. No limit is imposed on the number +of recursive calls. +.SH "ARITHMETIC EVALUATION" +The shell allows arithmetic expressions to be evaluated, under +certain circumstances (see the \fBlet\fP and \fBdeclare\fP builtin +commands and \fBArithmetic Expansion\fP). +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. +.PP +.PD 0 +.TP +.B \fIid\fP++ \fIid\fP\-\- +variable post-increment and post-decrement +.TP +.B ++\fIid\fP \-\-\fIid\fP +variable pre-increment and pre-decrement +.TP +.B \- + +unary minus and plus +.TP +.B ! ~ +logical and bitwise negation +.TP +.B ** +exponentiation +.TP +.B * / % +multiplication, division, remainder +.TP +.B + \- +addition, subtraction +.TP +.B << >> +left and right bitwise shifts +.TP +.B <= >= < > +comparison +.TP +.B == != +equality and inequality +.TP +.B & +bitwise AND +.TP +.B ^ +bitwise exclusive OR +.TP +.B | +bitwise OR +.TP +.B && +logical AND +.TP +.B || +logical OR +.TP +.B \fIexpr\fP?\fIexpr\fP:\fIexpr\fP +conditional operator +.TP +.B = *= /= %= += \-= <<= >>= &= ^= |= +assignment +.TP +.B \fIexpr1\fP , \fIexpr2\fP +comma +.PD +.PP +Shell variables are allowed as operands; parameter expansion is +performed 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 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 +\fIinteger\fP attribute using \fBdeclare -i\fP is assigned a value. +A null value evaluates to 0. +A shell variable need not have its integer attribute +turned on to be used in an expression. +.PP +Constants with a leading 0 are interpreted as octal numbers. +A leading 0x or 0X denotes hexadecimal. +Otherwise, numbers take the form [\fIbase#\fP]n, where \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, +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 +and 35. +.PP +Operators are evaluated in order of precedence. Sub-expressions in +parentheses are evaluated first and may override the precedence +rules above. +.SH "CONDITIONAL EXPRESSIONS" +Conditional expressions are used by the \fB[[\fP compound command and +the \fBtest\fP and \fB[\fP builtin commands to test file attributes +and perform string and arithmetic comparisons. +Expressions are formed from the following unary or binary primaries. +If any \fIfile\fP argument to one of the primaries is of the form +\fI/dev/fd/n\fP, then file descriptor \fIn\fP is checked. +If the \fIfile\fP argument to one of the primaries is one of +\fI/dev/stdin\fP, \fI/dev/stdout\fP, or \fI/dev/stderr\fP, file +descriptor 0, 1, or 2, respectively, is checked. +.PP +Unless otherwise specified, primaries that operate on files follow symbolic +links and operate on the target of the link, rather than the link itself. +.sp 1 +.PD 0 +.TP +.B \-a \fIfile\fP +True if \fIfile\fP exists. +.TP +.B \-b \fIfile\fP +True if \fIfile\fP exists and is a block special file. +.TP +.B \-c \fIfile\fP +True if \fIfile\fP exists and is a character special file. +.TP +.B \-d \fIfile\fP +True if \fIfile\fP exists and is a directory. +.TP +.B \-e \fIfile\fP +True if \fIfile\fP exists. +.TP +.B \-f \fIfile\fP +True if \fIfile\fP exists and is a regular file. +.TP +.B \-g \fIfile\fP +True if \fIfile\fP exists and is set-group-id. +.TP +.B \-h \fIfile\fP +True if \fIfile\fP exists and is a symbolic link. +.TP +.B \-k \fIfile\fP +True if \fIfile\fP exists and its ``sticky'' bit is set. +.TP +.B \-p \fIfile\fP +True if \fIfile\fP exists and is a named pipe (FIFO). +.TP +.B \-r \fIfile\fP +True if \fIfile\fP exists and is readable. +.TP +.B \-s \fIfile\fP +True if \fIfile\fP exists and has a size greater than zero. +.TP +.B \-t \fIfd\fP +True if file descriptor +.I fd +is open and refers to a terminal. +.TP +.B \-u \fIfile\fP +True if \fIfile\fP exists and its set-user-id bit is set. +.TP +.B \-w \fIfile\fP +True if \fIfile\fP exists and is writable. +.TP +.B \-x \fIfile\fP +True if \fIfile\fP exists and is executable. +.TP +.B \-O \fIfile\fP +True if \fIfile\fP exists and is owned by the effective user id. +.TP +.B \-G \fIfile\fP +True if \fIfile\fP exists and is owned by the effective group id. +.TP +.B \-L \fIfile\fP +True if \fIfile\fP exists and is a symbolic link. +.TP +.B \-S \fIfile\fP +True if \fIfile\fP exists and is a socket. +.TP +.B \-N \fIfile\fP +True if \fIfile\fP exists and has been modified since it was last read. +.TP +\fIfile1\fP \-\fBnt\fP \fIfile2\fP +True if \fIfile1\fP is newer (according to modification date) than \fIfile2\fP, +or if \fIfile1\fP exists and \fPfile2\fP does not. +.TP +\fIfile1\fP \-\fBot\fP \fIfile2\fP +True if \fIfile1\fP is older than \fIfile2\fP, or if \fIfile2\fP exists +and \fIfile1\fP does not. +.TP +\fIfile1\fP \fB\-ef\fP \fIfile2\fP +True if \fIfile1\fP and \fIfile2\fP refer to the same device and +inode numbers. +.TP +.B \-o \fIoptname\fP +True if shell option +.I optname +is enabled. +See the list of options under the description of the +.B \-o +option to the +.B set +builtin below. +.TP +.B \-z \fIstring\fP +True if the length of \fIstring\fP is zero. +.TP +\fIstring\fP +.PD 0 +.TP +.B \-n \fIstring\fP +.PD +True if the length of +.I string +is non-zero. +.TP +\fIstring1\fP \fB==\fP \fIstring2\fP +True if the strings are equal. \fB=\fP may be used in place of +\fB==\fP for strict POSIX compliance. +.TP +\fIstring1\fP \fB!=\fP \fIstring2\fP +True if the strings are not equal. +.TP +\fIstring1\fP \fB<\fP \fIstring2\fP +True if \fIstring1\fP sorts before \fIstring2\fP lexicographically +in the current locale. +.TP +\fIstring1\fP \fB>\fP \fIstring2\fP +True if \fIstring1\fP sorts after \fIstring2\fP lexicographically +in the current locale. +.TP +.I \fIarg1\fP \fBOP\fP \fIarg2\fP +.SM +.B OP +is one of +.BR \-eq , +.BR \-ne , +.BR \-lt , +.BR \-le , +.BR \-gt , +or +.BR \-ge . +These arithmetic binary operators return true if \fIarg1\fP +is equal to, not equal to, less than, less than or equal to, +greater than, or greater than or equal to \fIarg2\fP, respectively. +.I Arg1 +and +.I arg2 +may be positive or negative integers. +.PD +.SH "SIMPLE COMMAND EXPANSION" +When a simple command is executed, the shell performs the following +expansions, assignments, and redirections, from left to right. +.IP 1. +The words that the parser has marked as variable assignments (those +preceding the command name) and redirections are saved for later +processing. +.IP 2. +The words that are not variable assignments or redirections are +expanded. If any words remain after expansion, the first word +is taken to be the name of the command and the remaining words are +the arguments. +.IP 3. +Redirections are performed as described above under +.SM +.BR REDIRECTION . +.IP 4. +The text after the \fB=\fP in each variable assignment undergoes tilde +expansion, parameter expansion, command substitution, arithmetic expansion, +and quote removal before being assigned to the variable. +.PP +If no command name results, the variable assignments affect the current +shell environment. Otherwise, the variables are added to the environment +of the executed command and do not affect the current shell environment. +If any of the assignments attempts to assign a value to a readonly variable, +an error occurs, and the command exits with a non-zero status. +.PP +If no command name results, redirections are performed, but do not +affect the current shell environment. A redirection error causes the +command to exit with a non-zero status. +.PP +If there is a command name left after expansion, execution proceeds as +described below. Otherwise, the command exits. If one of the expansions +contained a command substitution, the exit status of the command is +the exit status of the last command substitution performed. If there +were no command substitutions, the command exits with a status of zero. +.SH "COMMAND EXECUTION" +After a command has been split into words, if it results in a +simple command and an optional list of arguments, the following +actions are taken. +.PP +If the command name contains no slashes, the shell attempts to +locate it. If there exists a shell function by that name, that +function is invoked as described above in +.SM +.BR FUNCTIONS . +If the name does not match a function, the shell searches for +it in the list of shell builtins. If a match is found, that +builtin is invoked. +.PP +If the name is neither a shell function nor a builtin, +and contains no slashes, +.B bash +searches each element of the +.SM +.B PATH +for a directory containing an executable file by that name. +.B Bash +uses a hash table to remember the full pathnames of executable +files (see +.B hash +under +.SM +.B "SHELL BUILTIN COMMANDS" +below). +A full search of the directories in +.SM +.B PATH +is performed only if the command is not found in the hash table. +If the search is unsuccessful, the shell prints an error +message and returns an exit status of 127. +.PP +If the search is successful, or if the command name contains +one or more slashes, the shell executes the named program in a +separate execution environment. +Argument 0 is set to the name given, and the remaining arguments +to the command are set to the arguments given, if any. +.PP +If this execution fails because the file is not in executable +format, and the file is not a directory, it is assumed to be +a \fIshell script\fP, a file +containing shell commands. A subshell is spawned to execute +it. This subshell reinitializes itself, so +that the effect is as if a new shell had been invoked +to handle the script, with the exception that the locations of +commands remembered by the parent (see +.B hash +below under +.SM +\fBSHELL BUILTIN COMMANDS\fP) +are retained by the child. +.PP +If the program is a file beginning with +.BR #! , +the remainder of the first line specifies an interpreter +for the program. The shell executes the +specified interpreter on operating systems that do not +handle this executable format themselves. The arguments to the +interpreter consist of a single optional argument following the +interpreter name on the first line of the program, followed +by the name of the program, followed by the command +arguments, if any. +.SH COMMAND EXECUTION ENVIRONMENT +The shell has an \fIexecution environment\fP, which consists of the +following: +.sp 1 +.IP \(bu +open files inherited by the shell at invocation, as modified by +redirections supplied to the \fBexec\fP builtin +.IP \(bu +the current working directory as set by \fBcd\fP, \fBpushd\fP, or +\fBpopd\fP, or inherited by the shell at invocation +.IP \(bu +the file creation mode mask as set by \fBumask\fP or inherited from +the shell's parent +.IP \(bu +current traps set by \fBtrap\fP +.IP \(bu +shell parameters that are set by variable assignment or with \fBset\fP +or inherited from the shell's parent in the environment +.IP \(bu +shell functions defined during execution or inherited from the shell's +parent in the environment +.IP \(bu +options enabled at invocation (either by default or with command-line +arguments) or by \fBset\fP +.IP \(bu +options enabled by \fBshopt\fP +.IP \(bu +shell aliases defined with \fBalias\fP +.IP \(bu +various process IDs, including those of background jobs, the value +of \fB$$\fP, and the value of \fB$PPID\fP +.PP +When a simple command other than a builtin or shell function +is to be executed, it +is invoked in a separate execution environment that consists of +the following. Unless otherwise noted, the values are inherited +from the shell. +.sp 1 +.IP \(bu +the shell's open files, plus any modifications and additions specified +by redirections to the command +.IP \(bu +the current working directory +.IP \(bu +the file creation mode mask +.IP \(bu +shell variables and functions marked for export, along with variables +exported for the command, passed in the environment +.IP \(bu +traps caught by the shell are reset to the values inherited from the +shell's parent, and traps ignored by the shell are ignored +.PP +A command invoked in this separate environment cannot affect the +shell's execution environment. +.PP +Command substitution, commands grouped with parentheses, +and asynchronous commands are invoked in a +subshell environment that is a duplicate of the shell environment, +except that traps caught by the shell are reset to the values +that the shell inherited from its parent at invocation. Builtin +commands that are invoked as part of a pipeline are also executed in a +subshell environment. Changes made to the subshell environment +cannot affect the shell's execution environment. +.PP +If a command is followed by a \fB&\fP and job control is not active, the +default standard input for the command is the empty file \fI/dev/null\fP. +Otherwise, the invoked command inherits the file descriptors of the calling +shell as modified by redirections. +.SH ENVIRONMENT +When a program is invoked it is given an array of strings +called the +.IR environment . +This is a list of +\fIname\fP\-\fIvalue\fP pairs, of the form +.IR "name\fR=\fPvalue" . +.PP +The shell provides several ways to manipulate the environment. +On invocation, the shell scans its own environment and +creates a parameter for each name found, automatically marking +it for +.I export +to child processes. Executed commands inherit the environment. +The +.B export +and +.B declare \-x +commands allow parameters and functions to be added to and +deleted from the environment. If the value of a parameter +in the environment is modified, the new value becomes part +of the environment, replacing the old. The environment +inherited by any executed command consists of the shell's +initial environment, whose values may be modified in the shell, +less any pairs removed by the +.B unset +command, plus any additions via the +.B export +and +.B declare \-x +commands. +.PP +The environment for any +.I simple command +or function may be augmented temporarily by prefixing it with +parameter assignments, as described above in +.SM +.BR PARAMETERS . +These assignment statements affect only the environment seen +by that command. +.PP +If the +.B \-k +option is set (see the +.B set +builtin command below), then +.I all +parameter assignments are placed in the environment for a command, +not just those that precede the command name. +.PP +When +.B bash +invokes an external command, the variable +.B _ +is set to the full file name of the command and passed to that +command in its environment. +.SH "EXIT STATUS" +For the shell's purposes, a command which exits with a +zero exit status has succeeded. An exit status of zero +indicates success. A non-zero exit status indicates failure. +When a command terminates on a fatal signal \fIN\fP, \fBbash\fP uses +the value of 128+\fIN\fP as the exit status. +.PP +If a command is not found, the child process created to +execute it returns a status of 127. If a command is found +but is not executable, the return status is 126. +.PP +If a command fails because of an error during expansion or redirection, +the exit status is greater than zero. +.PP +Shell builtin commands return a status of 0 (\fItrue\fP) if +successful, and non-zero (\fIfalse\fP) if an error occurs +while they execute. +All builtins return an exit status of 2 to indicate incorrect usage. +.PP +\fBBash\fP itself returns the exit status of the last command +executed, unless a syntax error occurs, in which case it exits +with a non-zero value. See also the \fBexit\fP builtin +command below. +.SH SIGNALS +When \fBbash\fP is interactive, in the absence of any traps, it ignores +.SM +.B SIGTERM +(so that \fBkill 0\fP does not kill an interactive shell), +and +.SM +.B SIGINT +is caught and handled (so that the \fBwait\fP builtin is interruptible). +In all cases, \fBbash\fP ignores +.SM +.BR SIGQUIT . +If job control is in effect, +.B bash +ignores +.SM +.BR SIGTTIN , +.SM +.BR SIGTTOU , +and +.SM +.BR SIGTSTP . +.PP +Non-builtin commands run by \fBbash\fP have signal handlers +set to the values inherited by the shell from its parent. +When job control is not in effect, asynchronous commands +ignore +.SM +.B SIGINT +and +.SM +.B SIGQUIT +in addition to these inherited handlers. +Commands run as a result of command substitution ignore the +keyboard-generated job control signals +.SM +.BR SIGTTIN , +.SM +.BR SIGTTOU , +and +.SM +.BR SIGTSTP . +.PP +The shell exits by default upon receipt of a +.SM +.BR SIGHUP . +Before exiting, an interactive shell resends the +.SM +.B SIGHUP +to all jobs, running or stopped. +Stopped jobs are sent +.SM +.B SIGCONT +to ensure that they receive the +.SM +.BR SIGHUP . +To prevent the shell from +sending the signal to a particular job, it should be removed from the +jobs table with the +.B disown +builtin (see +.SM +.B "SHELL BUILTIN COMMANDS" +below) or marked +to not receive +.SM +.B SIGHUP +using +.BR "disown \-h" . +.PP +If the +.B huponexit +shell option has been set with +.BR shopt , +.B bash +sends a +.SM +.B SIGHUP +to all jobs when an interactive login shell exits. +.PP +If \fBbash\fP is waiting for a command to complete and receives a signal +for which a trap has been set, the trap will not be executed until +the command completes. +When \fBbash\fP is waiting for an asynchronous command via the \fBwait\fP +builtin, the reception of a signal for which a trap has been set will +cause the \fBwait\fP builtin to return immediately with an exit status +greater than 128, immediately after which the trap is executed. +.SH "JOB CONTROL" +.I Job control +refers to the ability to selectively stop (\fIsuspend\fP) +the execution of processes and continue (\fIresume\fP) +their execution at a later point. A user typically employs +this facility via an interactive interface supplied jointly +by the system's terminal driver and +.BR bash . +.PP +The shell associates a +.I job +with each pipeline. It keeps a table of currently executing +jobs, which may be listed with the +.B jobs +command. When +.B bash +starts a job asynchronously (in the +.IR background ), +it prints a line that looks like: +.RS +.PP +[1] 25647 +.RE +.PP +indicating that this job is job number 1 and that the process ID +of the last process in the pipeline associated with this job is 25647. +All of the processes in a single pipeline are members of the same job. +.B Bash +uses the +.I job +abstraction as the basis for job control. +.PP +To facilitate the implementation of the user interface to job +control, the operating system maintains the notion of a \fIcurrent terminal +process group ID\fP. Members of this process group (processes whose +process group ID is equal to the current terminal process group ID) +receive keyboard-generated signals such as +.SM +.BR SIGINT . +These processes are said to be in the +.IR foreground . +.I Background +processes are those whose process group ID differs from the terminal's; +such processes are immune to keyboard-generated signals. +Only foreground processes are allowed to read from or write to the +terminal. Background processes which attempt to read from (write to) the +terminal are sent a +.SM +.B SIGTTIN (SIGTTOU) +signal by the terminal driver, +which, unless caught, suspends the process. +.PP +If the operating system on which +.B bash +is running supports +job control, +.B bash +contains facilities to use it. +Typing the +.I suspend +character (typically +.BR ^Z , +Control-Z) while a process is running +causes that process to be stopped and returns control to +.BR bash . +Typing the +.I "delayed suspend" +character (typically +.BR ^Y , +Control-Y) causes the process to be stopped when it +attempts to read input from the terminal, and control to +be returned to +.BR bash . +The user may then manipulate the state of this job, using the +.B bg +command to continue it in the background, the +.B fg +command to continue it in the foreground, or +the +.B kill +command to kill it. A \fB^Z\fP takes effect immediately, +and has the additional side effect of causing pending output +and typeahead to be discarded. +.PP +There are a number of ways to refer to a job in the shell. +The character +.B % +introduces a job name. Job number +.I n +may be referred to as +.BR %n . +A job may also be referred to using a prefix of the name used to +start it, or using a substring that appears in its command line. +For example, +.B %ce +refers to a stopped +.B ce +job. If a prefix matches more than one job, +.B bash +reports an error. Using +.BR %?ce , +on the other hand, refers to any job containing the string +.B ce +in its command line. If the substring matches more than one job, +.B bash +reports an error. The symbols +.B %% +and +.B %+ +refer to the shell's notion of the +.IR "current job" , +which is the last job stopped while it was in +the foreground or started in the background. +The +.I "previous job" +may be referenced using +.BR %\- . +In output pertaining to jobs (e.g., the output of the +.B jobs +command), the current job is always flagged with a +.BR + , +and the previous job with a +.BR \- . +A single % (with no accompanying job specification) also refers to the +current job. +.PP +Simply naming a job can be used to bring it into the +foreground: +.B %1 +is a synonym for +\fB``fg %1''\fP, +bringing job 1 from the background into the foreground. +Similarly, +.B ``%1 &'' +resumes job 1 in the background, equivalent to +\fB``bg %1''\fP. +.PP +The shell learns immediately whenever a job changes state. +Normally, +.B bash +waits until it is about to print a prompt before reporting +changes in a job's status so as to not interrupt +any other output. If the +.B \-b +option to the +.B set +builtin command +is enabled, +.B bash +reports such changes immediately. +Any trap on +.SM +.B SIGCHLD +is executed for each child that exits. +.PP +If an attempt to exit +.B bash +is made while jobs are stopped, the shell prints a warning message. The +.B jobs +command may then be used to inspect their status. +If a second attempt to exit is made without an intervening command, +the shell does not print another warning, and the stopped +jobs are terminated. +.SH PROMPTING +When executing interactively, +.B bash +displays the primary prompt +.SM +.B PS1 +when it is ready to read a command, and the secondary prompt +.SM +.B PS2 +when it needs more input to complete a command. +.B Bash +allows these prompt strings to be customized by inserting a number of +backslash-escaped special characters that are decoded as follows: +.RS +.PD 0 +.TP +.B \ea +an ASCII bell character (07) +.TP +.B \ed +the date in "Weekday Month Date" format (e.g., "Tue May 26") +.TP +.B \eD{\fIformat\fP} +the \fIformat\fP is passed to \fIstrftime\fP(3) and the result is inserted +into the prompt string; an empty \fIformat\fP results in a locale-specific +time representation. The braces are required +.TP +.B \ee +an ASCII escape character (033) +.TP +.B \eh +the hostname up to the first `.' +.TP +.B \eH +the hostname +.TP +.B \ej +the number of jobs currently managed by the shell +.TP +.B \el +the basename of the shell's terminal device name +.TP +.B \en +newline +.TP +.B \er +carriage return +.TP +.B \es +the name of the shell, the basename of +.B $0 +(the portion following the final slash) +.TP +.B \et +the current time in 24-hour HH:MM:SS format +.TP +.B \eT +the current time in 12-hour HH:MM:SS format +.TP +.B \e@ +the current time in 12-hour am/pm format +.TP +.B \eA +the current time in 24-hour HH:MM format +.TP +.B \eu +the username of the current user +.TP +.B \ev +the version of \fBbash\fP (e.g., 2.00) +.TP +.B \eV +the release of \fBbash\fP, version + patch level (e.g., 2.00.0) +.TP +.B \ew +the current working directory, with \fB$HOME\fP abbreviated with a tilde +.TP +.B \eW +the basename of the current working directory, with \fB$HOME\fP +abbreviated with a tilde +.TP +.B \e! +the history number of this command +.TP +.B \e# +the command number of this command +.TP +.B \e$ +if the effective UID is 0, a +.BR # , +otherwise a +.B $ +.TP +.B \e\fInnn\fP +the character corresponding to the octal number \fInnn\fP +.TP +.B \e\e +a backslash +.TP +.B \e[ +begin a sequence of non-printing characters, which could be used to +embed a terminal control sequence into the prompt +.TP +.B \e] +end a sequence of non-printing characters +.PD +.RE +.PP +The command number and the history number are usually different: +the history number of a command is its position in the history +list, which may include commands restored from the history file +(see +.SM +.B HISTORY +below), while the command number is the position in the sequence +of commands executed during the current shell session. +After the string is decoded, it is expanded via +parameter expansion, command substitution, arithmetic +expansion, and quote removal, subject to the value of the +.B promptvars +shell option (see the description of the +.B shopt +command under +.SM +.B "SHELL BUILTIN COMMANDS" +below). +.SH READLINE +This is the library that handles reading input when using an interactive +shell, unless the +.B \-\-noediting +option is given at shell invocation. +By default, the line editing commands are similar to those of emacs. +A vi-style line editing interface is also available. +To turn off line editing after the shell is running, use the +.B +o emacs +or +.B +o vi +options to the +.B set +builtin (see +.SM +.B SHELL BUILTIN COMMANDS +below). +.SS "Readline Notation" +.PP +In this section, the emacs-style notation is used to denote +keystrokes. Control keys are denoted by C\-\fIkey\fR, e.g., C\-n +means Control\-N. Similarly, +.I meta +keys are denoted by M\-\fIkey\fR, so M\-x means Meta\-X. (On keyboards +without a +.I meta +key, M\-\fIx\fP means ESC \fIx\fP, i.e., press the Escape key +then the +.I x +key. This makes ESC the \fImeta prefix\fP. +The combination M\-C\-\fIx\fP means ESC\-Control\-\fIx\fP, +or press the Escape key +then hold the Control key while pressing the +.I x +key.) +.PP +Readline commands may be given numeric +.IR arguments , +which normally act as a repeat count. +Sometimes, however, it is the sign of the argument that is significant. +Passing a negative argument to a command that acts in the forward +direction (e.g., \fBkill\-line\fP) causes that command to act in a +backward direction. +Commands whose behavior with arguments deviates from this are noted +below. +.PP +When a command is described as \fIkilling\fP text, the text +deleted is saved for possible future retrieval +(\fIyanking\fP). The killed text is saved in a +\fIkill ring\fP. Consecutive kills cause the text to be +accumulated into one unit, which can be yanked all at once. +Commands which do not kill text separate the chunks of text +on the kill ring. +.SS "Readline Initialization" +.PP +Readline is customized by putting commands in an initialization +file (the \fIinputrc\fP file). +The name of this file is taken from the value of the +.SM +.B INPUTRC +variable. If that variable is unset, the default is +.IR ~/.inputrc . +When a program which uses the readline library starts up, the +initialization file is read, and the key bindings and variables +are set. +There are only a few basic constructs allowed in the +readline initialization file. +Blank lines are ignored. +Lines beginning with a \fB#\fP are comments. +Lines beginning with a \fB$\fP indicate conditional constructs. +Other lines denote key bindings and variable settings. +.PP +The default key-bindings may be changed with an +.I inputrc +file. +Other programs that use this library may add their own commands +and bindings. +.PP +For example, placing +.RS +.PP +M\-Control\-u: universal\-argument +.RE +or +.RS +C\-Meta\-u: universal\-argument +.RE +into the +.I inputrc +would make M\-C\-u execute the readline command +.IR universal\-argument . +.PP +The following symbolic character names are recognized: +.IR RUBOUT , +.IR DEL , +.IR ESC , +.IR LFD , +.IR NEWLINE , +.IR RET , +.IR RETURN , +.IR SPC , +.IR SPACE , +and +.IR TAB . +.PP +In addition to command names, readline allows keys to be bound +to a string that is inserted when the key is pressed (a \fImacro\fP). +.SS "Readline Key Bindings" +.PP +The syntax for controlling key bindings in the +.I inputrc +file is simple. All that is required is the name of the +command or the text of a macro and a key sequence to which +it should be bound. The name may be specified in one of two ways: +as a symbolic key name, possibly with \fIMeta\-\fP or \fIControl\-\fP +prefixes, or as a key sequence. +.PP +When using the form \fBkeyname\fP:\^\fIfunction\-name\fP or \fImacro\fP, +.I keyname +is the name of a key spelled out in English. For example: +.sp +.RS +Control-u: universal\-argument +.br +Meta-Rubout: backward-kill-word +.br +Control-o: "> output" +.RE +.LP +In the above example, +.I C\-u +is bound to the function +.BR universal\-argument , +.I M\-DEL +is bound to the function +.BR backward\-kill\-word , +and +.I C\-o +is bound to run the macro +expressed on the right hand side (that is, to insert the text +.if t \f(CW> output\fP +.if n ``> output'' +into the line). +.PP +In the second form, \fB"keyseq"\fP:\^\fIfunction\-name\fP or \fImacro\fP, +.B keyseq +differs from +.B keyname +above in that strings denoting +an entire key sequence may be specified by placing the sequence +within double quotes. Some GNU Emacs style key escapes can be +used, as in the following example, but the symbolic character names +are not recognized. +.sp +.RS +"\eC\-u": universal\-argument +.br +"\eC\-x\eC\-r": re\-read\-init\-file +.br +"\ee[11~": "Function Key 1" +.RE +.PP +In this example, +.I C\-u +is again bound to the function +.BR universal\-argument . +.I "C\-x C\-r" +is bound to the function +.BR re\-read\-init\-file , +and +.I "ESC [ 1 1 ~" +is bound to insert the text +.if t \f(CWFunction Key 1\fP. +.if n ``Function Key 1''. +.PP +The full set of GNU Emacs style escape sequences is +.RS +.PD 0 +.TP +.B \eC\- +control prefix +.TP +.B \eM\- +meta prefix +.TP +.B \ee +an escape character +.TP +.B \e\e +backslash +.TP +.B \e" +literal " +.TP +.B \e\(aq +literal \(aq +.RE +.PD +.PP +In addition to the GNU Emacs style escape sequences, a second +set of backslash escapes is available: +.RS +.PD 0 +.TP +.B \ea +alert (bell) +.TP +.B \eb +backspace +.TP +.B \ed +delete +.TP +.B \ef +form feed +.TP +.B \en +newline +.TP +.B \er +carriage return +.TP +.B \et +horizontal tab +.TP +.B \ev +vertical tab +.TP +.B \e\fInnn\fP +the eight-bit character whose value is the octal value \fInnn\fP +(one to three digits) +.TP +.B \ex\fIHH\fP +the eight-bit character whose value is the hexadecimal value \fIHH\fP +(one or two hex digits) +.RE +.PD +.PP +When entering the text of a macro, single or double quotes must +be used to indicate a macro definition. +Unquoted text is assumed to be a function name. +In the macro body, the backslash escapes described above are expanded. +Backslash will quote any other character in the macro text, +including " and \(aq. +.PP +.B Bash +allows the current readline key bindings to be displayed or modified +with the +.B bind +builtin command. The editing mode may be switched during interactive +use by using the +.B \-o +option to the +.B set +builtin command (see +.SM +.B SHELL BUILTIN COMMANDS +below). +.SS "Readline Variables" +.PP +Readline has variables that can be used to further customize its +behavior. A variable may be set in the +.I inputrc +file with a statement of the form +.RS +.PP +\fBset\fP \fIvariable\-name\fP \fIvalue\fP +.RE +.PP +Except where noted, readline variables can take the values +.B On +or +.B Off +(without regard to case). +Unrecognized variable names are ignored. +When a variable value is read, empty or null values, "on" (case-insensitive), +and "1" are equivalent to \fBOn\fP. All other values are equivalent to +\fBOff\fP. +The variables and their default values are: +.PP +.PD 0 +.TP +.B bell\-style (audible) +Controls what happens when readline wants to ring the terminal bell. +If set to \fBnone\fP, readline never rings the bell. If set to +\fBvisible\fP, readline uses a visible bell if one is available. +If set to \fBaudible\fP, readline attempts to ring the terminal's bell. +.TP +.B bind\-tty\-special\-chars (On) +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 comment\-begin (``#'') +The string that is inserted when the readline +.B insert\-comment +command is executed. +This command is bound to +.B M\-# +in emacs mode and to +.B # +in vi command mode. +.TP +.B completion\-ignore\-case (Off) +If set to \fBOn\fP, readline performs filename matching and completion +in a case\-insensitive fashion. +.TP +.B completion\-query\-items (100) +This determines when the user is queried about viewing +the number of possible completions +generated by the \fBpossible\-completions\fP 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 simply listed +on the terminal. +.TP +.B convert\-meta (On) +If set to \fBOn\fP, 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 \fImeta prefix\fP). +.TP +.B disable\-completion (Off) +If set to \fBOn\fP, readline will inhibit word completion. Completion +characters will be inserted into the line as if they had been +mapped to \fBself-insert\fP. +.TP +.B editing\-mode (emacs) +Controls whether readline begins with a set of key bindings similar +to \fIemacs\fP or \fIvi\fP. +.B editing\-mode +can be set to either +.B emacs +or +.BR vi . +.TP +.B enable\-keypad (Off) +When set to \fBOn\fP, readline will try to enable the application +keypad when it is called. Some systems need this to enable the +arrow keys. +.TP +.B expand\-tilde (Off) +If set to \fBon\fP, tilde expansion is performed when readline +attempts word completion. +.TP +.B history\-preserve\-point (Off) +If set to \fBon\fP, the history code attempts to place point at the +same location on each history line retrieved with \fBprevious-history\fP +or \fBnext-history\fP. +.TP +.B horizontal\-scroll\-mode (Off) +When set to \fBOn\fP, 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 new line. +.TP +.B input\-meta (Off) +If set to \fBOn\fP, 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 +.B meta\-flag +is a synonym for this variable. +.TP +.B isearch\-terminators (``C\-[C\-J'') +The string of characters that should terminate an incremental +search without subsequently executing the character as a command. +If this variable has not been given a value, the characters +\fIESC\fP and \fIC\-J\fP will terminate an incremental search. +.TP +.B keymap (emacs) +Set the current readline keymap. The set of valid keymap names is +\fIemacs, emacs\-standard, emacs\-meta, emacs\-ctlx, vi, +vi\-command\fP, and +.IR vi\-insert . +\fIvi\fP is equivalent to \fIvi\-command\fP; \fIemacs\fP is +equivalent to \fIemacs\-standard\fP. The default value is +.IR emacs ; +the value of +.B editing\-mode +also affects the default keymap. +.TP +.B mark\-directories (On) +If set to \fBOn\fP, completed directory names have a slash +appended. +.TP +.B mark\-modified\-lines (Off) +If set to \fBOn\fP, history lines that have been modified are displayed +with a preceding asterisk (\fB*\fP). +.TP +.B mark\-symlinked\-directories (Off) +If set to \fBOn\fP, completed names which are symbolic links to directories +have a slash appended (subject to the value of +\fBmark\-directories\fP). +.TP +.B match\-hidden\-files (On) +This variable, when set to \fBOn\fP, causes readline to match files whose +names begin with a `.' (hidden files) when performing filename +completion, unless the leading `.' is +supplied by the user in the filename to be completed. +.TP +.B output\-meta (Off) +If set to \fBOn\fP, readline will display characters with the +eighth bit set directly rather than as a meta-prefixed escape +sequence. +.TP +.B page\-completions (On) +If set to \fBOn\fP, readline uses an internal \fImore\fP-like pager +to display a screenful of possible completions at a time. +.TP +.B print\-completions\-horizontally (Off) +If set to \fBOn\fP, readline will display completions with matches +sorted horizontally in alphabetical order, rather than down the screen. +.TP +.B show\-all\-if\-ambiguous (Off) +This alters the default behavior of the completion functions. If +set to +.BR on , +words which have more than one possible completion cause the +matches to be listed immediately instead of ringing the bell. +.TP +.B show\-all\-if\-unmodified (Off) +This alters the default behavior of the completion functions in +a fashion similar to \fBshow\-all\-if\-ambiguous\fP. +If set to +.BR on , +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. +.TP +.B visible\-stats (Off) +If set to \fBOn\fP, a character denoting a file's type as reported +by \fIstat\fP(2) is appended to the filename when listing possible +completions. +.PD +.SS "Readline Conditional Constructs" +.PP +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. +.IP \fB$if\fP +The +.B $if +construct allows bindings to be made based on the +editing 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. +.RS +.IP \fBmode\fP +The \fBmode=\fP form of the \fB$if\fP directive is used to test +whether readline is in emacs or vi mode. +This may be used in conjunction +with the \fBset keymap\fP command, for instance, to set bindings in +the \fIemacs\-standard\fP and \fIemacs\-ctlx\fP keymaps only if +readline is starting out in emacs mode. +.IP \fBterm\fP +The \fBterm=\fP 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 +.B = +is tested against the both full name of the terminal and the portion +of the terminal name before the first \fB\-\fP. This allows +.I sun +to match both +.I sun +and +.IR sun\-cmd , +for instance. +.IP \fBapplication\fP +The \fBapplication\fP construct is used to include +application-specific settings. Each program using the readline +library sets the \fIapplication name\fP, 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 Bash: +.sp 1 +.RS +.nf +\fB$if\fP Bash +# Quote the current or previous word +"\eC\-xq": "\eeb\e"\eef\e"" +\fB$endif\fP +.fi +.RE +.RE +.IP \fB$endif\fP +This command, as seen in the previous example, terminates an +\fB$if\fP command. +.IP \fB$else\fP +Commands in this branch of the \fB$if\fP directive are executed if +the test fails. +.IP \fB$include\fP +This directive takes a single filename as an argument and reads commands +and bindings from that file. For example, the following directive +would read \fI/etc/inputrc\fP: +.sp 1 +.RS +.nf +\fB$include\fP \^ \fI/etc/inputrc\fP +.fi +.RE +.SS Searching +.PP +Readline provides commands for searching through the command history +(see +.SM +.B HISTORY +below) for lines containing a specified string. +There are two search modes: +.I incremental +and +.IR non-incremental . +.PP +Incremental searches begin before the user has finished typing the +search string. +As each character of the search string is typed, readline 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 \fBisearch-terminators\fP +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 +search string becomes the current line. +.PP +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 \fInewline\fP will terminate the search and accept +the line, thereby executing the command from the history list. +.PP +Readline remembers the last incremental search string. If two +Control-Rs are typed without any intervening characters defining a +new search string, any remembered search string is used. +.PP +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. +.SS "Readline Command Names" +.PP +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 accompanying key sequence are unbound by default. +In the following descriptions, \fIpoint\fP refers to the current cursor +position, and \fImark\fP refers to a cursor position saved by the +\fBset\-mark\fP command. +The text between the point and mark is referred to as the \fIregion\fP. +.SS Commands for Moving +.PP +.PD 0 +.TP +.B beginning\-of\-line (C\-a) +Move to the start of the current line. +.TP +.B end\-of\-line (C\-e) +Move to the end of the line. +.TP +.B forward\-char (C\-f) +Move forward a character. +.TP +.B backward\-char (C\-b) +Move back a character. +.TP +.B forward\-word (M\-f) +Move forward to the end of the next word. Words are composed of +alphanumeric characters (letters and digits). +.TP +.B backward\-word (M\-b) +Move back to the start of the current or previous word. Words are +composed of alphanumeric characters (letters and digits). +.TP +.B clear\-screen (C\-l) +Clear the screen leaving the current line at the top of the screen. +With an argument, refresh the current line without clearing the +screen. +.TP +.B redraw\-current\-line +Refresh the current line. +.PD +.SS Commands for Manipulating the History +.PP +.PD 0 +.TP +.B accept\-line (Newline, Return) +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 +.SM +.B HISTCONTROL +variable. If the line is a modified history +line, then restore the history line to its original state. +.TP +.B previous\-history (C\-p) +Fetch the previous command from the history list, moving back in +the list. +.TP +.B next\-history (C\-n) +Fetch the next command from the history list, moving forward in the +list. +.TP +.B beginning\-of\-history (M\-<) +Move to the first line in the history. +.TP +.B end\-of\-history (M\->) +Move to the end of the input history, i.e., the line currently being +entered. +.TP +.B reverse\-search\-history (C\-r) +Search backward starting at the current line and moving `up' through +the history as necessary. This is an incremental search. +.TP +.B forward\-search\-history (C\-s) +Search forward starting at the current line and moving `down' through +the history as necessary. This is an incremental search. +.TP +.B non\-incremental\-reverse\-search\-history (M\-p) +Search backward through the history starting at the current line +using a non-incremental search for a string supplied by the user. +.TP +.B non\-incremental\-forward\-search\-history (M\-n) +Search forward through the history using a non-incremental search for +a string supplied by the user. +.TP +.B history\-search\-forward +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. +.TP +.B history\-search\-backward +Search backward through the history for the string of characters +between the start of the current line and the point. +This is a non-incremental search. +.TP +.B yank\-nth\-arg (M\-C\-y) +Insert the first argument to the previous command (usually +the second word on the previous line) at point. +With an argument +.IR n , +insert the \fIn\fPth word from the previous command (the words +in the previous command begin with word 0). A negative argument +inserts the \fIn\fPth word from the end of the previous command. +Once the argument \fIn\fP is computed, the argument is extracted +as if the "!\fIn\fP" history expansion had been specified. +.TP +.B +yank\-last\-arg (M\-.\^, M\-_\^) +Insert the last argument to the previous command (the last word of +the previous history entry). With an argument, +behave exactly like \fByank\-nth\-arg\fP. +Successive calls to \fByank\-last\-arg\fP move back through the history +list, inserting the last argument of each line in turn. +The history expansion facilities are used to extract the last argument, +as if the "!$" history expansion had been specified. +.TP +.B shell\-expand\-line (M\-C\-e) +Expand the line as the shell does. This +performs alias and history expansion as well as all of the shell +word expansions. See +.SM +.B HISTORY EXPANSION +below for a description of history expansion. +.TP +.B history\-expand\-line (M\-^) +Perform history expansion on the current line. +See +.SM +.B HISTORY EXPANSION +below for a description of history expansion. +.TP +.B magic\-space +Perform history expansion on the current line and insert a space. +See +.SM +.B HISTORY EXPANSION +below for a description of history expansion. +.TP +.B alias\-expand\-line +Perform alias expansion on the current line. +See +.SM +.B ALIASES +above for a description of alias expansion. +.TP +.B history\-and\-alias\-expand\-line +Perform history and alias expansion on the current line. +.TP +.B insert\-last\-argument (M\-.\^, M\-_\^) +A synonym for \fByank\-last\-arg\fP. +.TP +.B operate\-and\-get\-next (C\-o) +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. +.TP +.B edit\-and\-execute\-command (C\-xC\-e) +Invoke an editor on the current command line, and execute the result as shell +commands. +\fBBash\fP attempts to invoke +.SM +.BR $FCEDIT , +.SM +.BR $EDITOR , +and \fIemacs\fP as the editor, in that order. +.PD +.SS Commands for Changing Text +.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 +.SM +.BR EOF . +.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. +.TP +.B forward\-backward\-delete\-char +Delete the character under the cursor, unless the cursor is at the +end of the line, in which case the character behind the cursor is +deleted. +.TP +.B quoted\-insert (C\-q, C\-v) +Add the next character typed to the line verbatim. This is +how to insert characters like \fBC\-q\fP, for example. +.TP +.B tab\-insert (C\-v TAB) +Insert a tab character. +.TP +.B self\-insert (a,\ b,\ A,\ 1,\ !,\ ...) +Insert the character typed. +.TP +.B transpose\-chars (C\-t) +Drag the character before point forward over the character at point, +moving point forward as well. +If point is at the end of the line, then this transposes +the two characters before point. +Negative arguments have no effect. +.TP +.B transpose\-words (M\-t) +Drag the word before point past the word after point, +moving point over that word as well. +If point is at the end of the line, this transposes +the last two words on the line. +.TP +.B upcase\-word (M\-u) +Uppercase the current (or following) word. With a negative argument, +uppercase the previous word, but do not move point. +.TP +.B downcase\-word (M\-l) +Lowercase the current (or following) word. With a negative argument, +lowercase the previous word, but do not move point. +.TP +.B capitalize\-word (M\-c) +Capitalize the current (or following) word. With a negative argument, +capitalize the previous word, but do not move point. +.TP +.B overwrite\-mode +Toggle overwrite mode. With an explicit positive numeric argument, +switches to overwrite mode. With an explicit non-positive numeric +argument, switches to insert mode. This command affects only +\fBemacs\fP mode; \fBvi\fP mode does overwrite differently. +Each call to \fIreadline()\fP starts in insert mode. +In overwrite mode, characters bound to \fBself\-insert\fP replace +the text at point rather than pushing the text to the right. +Characters bound to \fBbackward\-delete\-char\fP replace the character +before point with a space. By default, this command is unbound. +.PD +.SS Killing and Yanking +.PP +.PD 0 +.TP +.B kill\-line (C\-k) +Kill the text from point to the end of the line. +.TP +.B backward\-kill\-line (C\-x Rubout) +Kill backward to the beginning of the line. +.TP +.B unix\-line\-discard (C\-u) +Kill backward from point to the beginning of the line. +The killed text is saved on the kill-ring. +.\" There is no real difference between this and backward-kill-line +.TP +.B kill\-whole\-line +Kill all characters on the current line, no matter where point is. +.TP +.B kill\-word (M\-d) +Kill from point to the end of the current word, or if between +words, to the end of the next word. +Word boundaries are the same as those used by \fBforward\-word\fP. +.TP +.B backward\-kill\-word (M\-Rubout) +Kill the word behind point. +Word boundaries are the same as those used by \fBbackward\-word\fP. +.TP +.B unix\-word\-rubout (C\-w) +Kill the word behind point, using white space as a word boundary. +The killed text is saved on the kill-ring. +.TP +.B unix\-filename\-rubout +Kill the word behind point, using white space and the slash character +as the word boundaries. +The killed text is saved on the kill-ring. +.TP +.B delete\-horizontal\-space (M\-\e) +Delete all spaces and tabs around point. +.TP +.B kill\-region +Kill the text in the current region. +.TP +.B copy\-region\-as\-kill +Copy the text in the region to the kill buffer. +.TP +.B copy\-backward\-word +Copy the word before point to the kill buffer. +The word boundaries are the same as \fBbackward\-word\fP. +.TP +.B copy\-forward\-word +Copy the word following point to the kill buffer. +The word boundaries are the same as \fBforward\-word\fP. +.TP +.B yank (C\-y) +Yank the top of the kill ring into the buffer at point. +.TP +.B yank\-pop (M\-y) +Rotate the kill ring, and yank the new top. Only works following +.B yank +or +.BR yank\-pop . +.PD +.SS Numeric Arguments +.PP +.PD 0 +.TP +.B digit\-argument (M\-0, M\-1, ..., M\-\-) +Add this digit to the argument already accumulating, or start a new +argument. M\-\- starts a negative argument. +.TP +.B universal\-argument +This is another way to specify an argument. +If this command is followed by one or more digits, optionally with a +leading minus sign, those digits define the argument. +If the command is followed by digits, executing +.B universal\-argument +again ends the numeric argument, but is otherwise ignored. +As a special case, if this command is immediately followed by a +character that is neither a digit or minus sign, the argument count +for the next command is multiplied by four. +The argument count is initially one, so executing this function the +first time makes the argument count four, a second time makes the +argument count sixteen, and so on. +.PD +.SS Completing +.PP +.PD 0 +.TP +.B complete (TAB) +Attempt to perform completion on the text before point. +.B Bash +attempts completion treating the text as a variable (if the +text begins with \fB$\fP), username (if the text begins with +\fB~\fP), hostname (if the text begins with \fB@\fP), or +command (including aliases and functions) in turn. If none +of these produces a match, filename completion is attempted. +.TP +.B possible\-completions (M\-?) +List the possible completions of the text before point. +.TP +.B insert\-completions (M\-*) +Insert all completions of the text before point +that would have been generated by +\fBpossible\-completions\fP. +.TP +.B menu\-complete +Similar to \fBcomplete\fP, but replaces the word to be completed +with a single match from the list of possible completions. +Repeated execution of \fBmenu\-complete\fP steps through the list +of possible completions, inserting each match in turn. +At the end of the list of completions, the bell is rung +(subject to the setting of \fBbell\-style\fP) +and the original text is restored. +An argument of \fIn\fP moves \fIn\fP positions forward in the list +of matches; a negative argument may be used to move backward +through the list. +This command is intended to be bound to \fBTAB\fP, but is unbound +by default. +.TP +.B delete\-char\-or\-list +Deletes the character under the cursor if not at the beginning or +end of the line (like \fBdelete\-char\fP). +If at the end of the line, behaves identically to +\fBpossible\-completions\fP. +This command is unbound by default. +.TP +.B complete\-filename (M\-/) +Attempt filename completion on the text before point. +.TP +.B possible\-filename\-completions (C\-x /) +List the possible completions of the text before point, +treating it as a filename. +.TP +.B complete\-username (M\-~) +Attempt completion on the text before point, treating +it as a username. +.TP +.B possible\-username\-completions (C\-x ~) +List the possible completions of the text before point, +treating it as a username. +.TP +.B complete\-variable (M\-$) +Attempt completion on the text before point, treating +it as a shell variable. +.TP +.B possible\-variable\-completions (C\-x $) +List the possible completions of the text before point, +treating it as a shell variable. +.TP +.B complete\-hostname (M\-@) +Attempt completion on the text before point, treating +it as a hostname. +.TP +.B possible\-hostname\-completions (C\-x @) +List the possible completions of the text before point, +treating it as a hostname. +.TP +.B complete\-command (M\-!) +Attempt completion on the text before point, treating +it as a command name. Command completion attempts to +match the text against aliases, reserved words, shell +functions, shell builtins, and finally executable filenames, +in that order. +.TP +.B possible\-command\-completions (C\-x !) +List the possible completions of the text before point, +treating it as a command name. +.TP +.B dynamic\-complete\-history (M\-TAB) +Attempt completion on the text before point, comparing +the text against lines from the history list for possible +completion matches. +.TP +.B complete\-into\-braces (M\-{) +Perform filename completion and insert the list of possible completions +enclosed within braces so the list is available to the shell (see +.B Brace Expansion +above). +.PD +.SS Keyboard Macros +.PP +.PD 0 +.TP +.B start\-kbd\-macro (C\-x (\^) +Begin saving the characters typed into the current keyboard macro. +.TP +.B end\-kbd\-macro (C\-x )\^) +Stop saving the characters typed into the current keyboard macro +and store the definition. +.TP +.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. +.PD +.SS Miscellaneous +.PP +.PD 0 +.TP +.B re\-read\-init\-file (C\-x C\-r) +Read in the contents of the \fIinputrc\fP file, and incorporate +any bindings or variable assignments found there. +.TP +.B abort (C\-g) +Abort the current editing command and +ring the terminal's bell (subject to the setting of +.BR bell\-style ). +.TP +.B do\-uppercase\-version (M\-a, M\-b, M\-\fIx\fP, ...) +If the metafied character \fIx\fP is lowercase, run the command +that is bound to the corresponding uppercase character. +.TP +.B prefix\-meta (ESC) +Metafy the next character typed. +.SM +.B ESC +.B f +is equivalent to +.BR Meta\-f . +.TP +.B undo (C\-_, C\-x C\-u) +Incremental undo, separately remembered for each line. +.TP +.B revert\-line (M\-r) +Undo all changes made to this line. This is like executing the +.B undo +command enough times to return the line to its initial state. +.TP +.B tilde\-expand (M\-&) +Perform tilde expansion on the current word. +.TP +.B set\-mark (C\-@, M\-) +Set the mark to the point. If a +numeric argument is supplied, the mark is set to that position. +.TP +.B exchange\-point\-and\-mark (C\-x C\-x) +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. +.TP +.B character\-search (C\-]) +A character is read and point is moved to the next occurrence of that +character. A negative count searches for previous occurrences. +.TP +.B character\-search\-backward (M\-C\-]) +A character is read and point is moved to the previous occurrence of that +character. A negative count searches for subsequent occurrences. +.TP +.B insert\-comment (M\-#) +Without a numeric argument, the value of the readline +.B comment\-begin +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 \fBcomment\-begin\fP, the value is inserted, otherwise +the characters in \fBcomment-begin\fP are deleted from the beginning of +the line. +In either case, the line is accepted as if a newline had been typed. +The default value of +\fBcomment\-begin\fP 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. +.TP +.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. +.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. +If a numeric argument is supplied, an asterisk is appended before +pathname expansion. +.TP +.B glob\-list\-expansions (C\-x g) +The list of expansions that would have been generated by +.B glob\-expand\-word +is displayed, and the line is redrawn. +If a numeric argument is supplied, an asterisk is appended before +pathname expansion. +.TP +.B dump\-functions +Print all of the functions and their key bindings 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 +of an \fIinputrc\fP file. +.TP +.B dump\-variables +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 +of an \fIinputrc\fP file. +.TP +.B dump\-macros +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 \fIinputrc\fP file. +.TP +.B display\-shell\-version (C\-x C\-v) +Display version information about the current instance of +.BR bash . +.PD +.SS Programmable Completion +.PP +When word completion is attempted for an argument to a command for +which a completion specification (a \fIcompspec\fP) has been defined +using the \fBcomplete\fP builtin (see +.SM +.B "SHELL BUILTIN COMMANDS" +below), the programmable completion facilities are invoked. +.PP +First, the command name is identified. +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. +.PP +Once a compspec has been found, it is used to generate the list of +matching words. +If a compspec is not found, the default \fBbash\fP completion as +described above under \fBCompleting\fP is performed. +.PP +First, the actions specified by the compspec are used. +Only matches which are prefixed by the word being completed are +returned. +When the +.B \-f +or +.B \-d +option is used for filename or directory name completion, the shell +variable +.SM +.B FIGNORE +is used to filter the matches. +.PP +Any completions specified by a filename expansion pattern to the +\fB\-G\fP option are generated next. +The words generated by the pattern need not match the word +being completed. +The +.SM +.B GLOBIGNORE +shell variable is not used to filter the matches, but the +.SM +.B FIGNORE +variable is used. +.PP +Next, the string specified as the argument to the \fB\-W\fP option +is considered. +The string is first split using the characters in the +.SM +.B IFS +special 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 +.SM +.BR EXPANSION . +The results are split using the rules described above under +\fBWord Splitting\fP. +The results of the expansion are prefix-matched against the word being +completed, and the matching words become the possible completions. +.PP +After these matches have been generated, any shell function or command +specified with the \fB\-F\fP and \fB\-C\fP options is invoked. +When the command or function is invoked, the +.SM +.B COMP_LINE +and +.SM +.B COMP_POINT +variables are assigned values as described above under +\fBShell Variables\fP. +If a shell function is being invoked, the +.SM +.B COMP_WORDS +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. +No filtering of the generated completions against the word being completed +is performed; the function or command has complete freedom in generating +the matches. +.PP +Any function specified with \fB\-F\fP is invoked first. +The function may use any of the shell facilities, including the +\fBcompgen\fP builtin described below, to generate the matches. +It must put the possible completions in the +.SM +.B COMPREPLY +array variable. +.PP +Next, any command specified with the \fB\-C\fP option is invoked +in an environment 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. +.PP +After all of the possible completions are generated, any filter +specified with the \fB\-X\fP option is applied to the list. +The filter is a pattern as used for pathname expansion; a \fB&\fP +in the pattern is replaced with the text of the word being completed. +A literal \fB&\fP 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 \fB!\fP negates the pattern; in this case any completion +not matching the pattern will be removed. +.PP +Finally, any prefix and suffix specified with the \fB\-P\fP and \fB\-S\fP +options are added to each member of the completion list, and the result is +returned to the readline completion code as the list of possible +completions. +.PP +If the previously-applied actions do not generate any matches, and the +\fB\-o dirnames\fP option was supplied to \fBcomplete\fP when the +compspec was defined, directory name completion is attempted. +.PP +If the \fB\-o plusdirs\fP option was supplied to \fBcomplete\fP when the +compspec was defined, directory name completion is attempted and any +matches are added to the results of the other actions. +.PP +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 \fBbash\fP completions are not attempted, and the readline +default of filename completion is disabled. +If the \fB\-o bashdefault\fP option was supplied to \fBcomplete\fP when +the compspec was defined, the \fBbash\fP default completions are attempted +if the compspec generates no matches. +If the \fB\-o default\fP option was supplied to \fBcomplete\fP when the +compspec was defined, readline's default completion will be performed +if the compspec (and, if attempted, the default \fBbash\fP completions) +generate no matches. +.PP +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 \fBmark\-directories\fP readline variable, regardless +of the setting of the \fBmark-symlinked\-directories\fP readline variable. +.SH HISTORY +When the +.B \-o history +option to the +.B set +builtin is enabled, the shell provides access to the +\fIcommand history\fP, +the list of commands previously typed. +The value of the \fBHISTSIZE\fP variable is used as the +number of commands to save in a history list. +The text of the last +.SM +.B HISTSIZE +commands (default 500) is saved. The shell +stores each command in the history list prior to parameter and +variable expansion (see +.SM +.B EXPANSION +above) but after history expansion is performed, subject to the +values of the shell variables +.SM +.B HISTIGNORE +and +.SM +.BR HISTCONTROL . +.PP +On startup, the history is initialized from the file named by +the variable +.SM +.B HISTFILE +(default \fI~/.bash_history\fP). +The file named by the value of +.SM +.B HISTFILE +is truncated, if necessary, to contain no more than +the number of lines specified by the value of +.SM +.BR HISTFILESIZE . +When an interactive shell exits, the last +.SM +.B $HISTSIZE +lines are copied from the history list to +.SM +.BR $HISTFILE . +If the +.B histappend +shell option is enabled +(see the description of +.B shopt +under +.SM +.B "SHELL BUILTIN COMMANDS" +below), the lines are appended to the history file, +otherwise the history file is overwritten. +If +.SM +.B HISTFILE +is unset, or if the history file is unwritable, the history is +not saved. After saving the history, the history file is truncated +to contain no more than +.SM +.B HISTFILESIZE +lines. If +.SM +.B HISTFILESIZE +is not set, no truncation is performed. +.PP +The builtin command +.B fc +(see +.SM +.B SHELL BUILTIN COMMANDS +below) may be used to list or edit and re-execute a portion of +the history list. +The +.B history +builtin may be used to display or modify the history list and +manipulate the history file. +When using command-line editing, search commands +are available in each editing mode that provide access to the +history list. +.PP +The shell allows control over which commands are saved on the history +list. The +.SM +.B HISTCONTROL +and +.SM +.B HISTIGNORE +variables may be set to cause the shell to save only a subset of the +commands entered. +The +.B cmdhist +shell option, if enabled, causes the shell to attempt to save each +line of a multi-line command in the same history entry, adding +semicolons where necessary to preserve syntactic correctness. +The +.B lithist +shell option causes the shell to save the command with embedded newlines +instead of semicolons. See the description of the +.B shopt +builtin below under +.SM +.B "SHELL BUILTIN COMMANDS" +for information on setting and unsetting shell options. +.SH "HISTORY EXPANSION" +.PP +The shell supports a history expansion feature that +is similar to the history expansion in +.BR csh. +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 +option to the +.B set +builtin command (see +.SM +.B SHELL BUILTIN COMMANDS +below). Non-interactive shells do not perform history expansion +by default. +.PP +History expansions introduce words from the history list into +the input stream, making it easy to repeat commands, insert the +arguments to a previous command into the current input line, or +fix errors in previous commands quickly. +.PP +History expansion is performed immediately after a complete line +is read, before the shell breaks it into words. +It takes place in two parts. +The first is to determine which line from the history list +to use during substitution. +The second is to select portions of that line for inclusion into +the current one. +The line selected from the history is the \fIevent\fP, +and the portions of that line that are acted upon are \fIwords\fP. +Various \fImodifiers\fP are available to manipulate the selected words. +The line is broken into words in the same fashion as when reading input, +so that several \fImetacharacter\fP-separated words surrounded by +quotes are considered one word. +History expansions are introduced by the appearance of the +history expansion character, which is \^\fB!\fP\^ by default. +Only backslash (\^\fB\e\fP\^) and single quotes can quote +the history expansion character. +.PP +Several characters inhibit history expansion if found immediately +following the history expansion character, even if it is unquoted: +space, tab, newline, carriage return, and \fB=\fP. +If the \fBextglob\fP shell option is enabled, \fB(\fP will also +inhibit expansion. +.PP +Several shell options settable with the +.B shopt +builtin may be used to tailor the behavior of history expansion. +If the +.B histverify +shell option is enabled (see the description of the +.B shopt +builtin), and +.B readline +is being used, history substitutions are not immediately passed to +the shell parser. +Instead, the expanded line is reloaded into the +.B readline +editing buffer for further modification. +If +.B readline +is being used, and the +.B histreedit +shell option is enabled, a failed history substitution will be reloaded +into the +.B readline +editing buffer for correction. +The +.B \-p +option to the +.B history +builtin command may be used to see what a history expansion will +do before using it. +The +.B \-s +option to the +.B history +builtin may be used to add commands to the end of the history list +without actually executing them, so that they are available for +subsequent recall. +.PP +The shell allows control of the various characters used by the +history expansion mechanism (see the description of +.B histchars +above under +.BR "Shell Variables" ). +.SS Event Designators +.PP +An event designator is a reference to a command line entry in the +history list. +.PP +.PD 0 +.TP +.B ! +Start a history substitution, except when followed by a +.BR blank , +newline, carriage return, = +or ( (when the \fBextglob\fP shell option is enabled using +the \fBshopt\fP builtin). +.TP +.B !\fIn\fR +Refer to command line +.IR n . +.TP +.B !\-\fIn\fR +Refer to the current command line minus +.IR n . +.TP +.B !! +Refer to the previous command. This is a synonym for `!\-1'. +.TP +.B !\fIstring\fR +Refer to the most recent command starting with +.IR string . +.TP +.B !?\fIstring\fR\fB[?]\fR +Refer to the most recent command containing +.IR string . +The trailing \fB?\fP may be omitted if +.I string +is followed immediately by a newline. +.TP +.B \d\s+2^\s-2\u\fIstring1\fP\d\s+2^\s-2\u\fIstring2\fP\d\s+2^\s-2\u +Quick substitution. Repeat the last command, replacing +.I string1 +with +.IR string2 . +Equivalent to +``!!:s/\fIstring1\fP/\fIstring2\fP/'' +(see \fBModifiers\fP below). +.TP +.B !# +The entire command line typed so far. +.PD +.SS Word Designators +.PP +Word designators are used to select desired words from the event. +A +.B : +separates the event specification from the word designator. +It may be omitted if the word designator begins with a +.BR ^ , +.BR $ , +.BR * , +.BR \- , +or +.BR % . +Words are numbered from the beginning of the line, +with the first word being denoted by 0 (zero). +Words are inserted into the current line separated by single spaces. +.PP +.PD 0 +.TP +.B 0 (zero) +The zeroth word. For the shell, this is the command +word. +.TP +.I n +The \fIn\fRth word. +.TP +.B ^ +The first argument. That is, word 1. +.TP +.B $ +The last argument. +.TP +.B % +The word matched by the most recent `?\fIstring\fR?' search. +.TP +.I x\fB\-\fPy +A range of words; `\-\fIy\fR' abbreviates `0\-\fIy\fR'. +.TP +.B * +All of the words but the zeroth. This is a synonym +for `\fI1\-$\fP'. It is not an error to use +.B * +if there is just one +word in the event; the empty string is returned in that case. +.TP +.B x* +Abbreviates \fIx\-$\fP. +.TP +.B x\- +Abbreviates \fIx\-$\fP like \fBx*\fP, but omits the last word. +.PD +.PP +If a word designator is supplied without an event specification, the +previous command is used as the event. +.SS Modifiers +.PP +After the optional word designator, there may appear a sequence of +one or more of the following modifiers, each preceded by a `:'. +.PP +.PD 0 +.PP +.TP +.B h +Remove a trailing file name component, leaving only the head. +.TP +.B t +Remove all leading file name components, leaving the tail. +.TP +.B r +Remove a trailing suffix of the form \fI.xxx\fP, leaving the +basename. +.TP +.B e +Remove all but the trailing suffix. +.TP +.B p +Print the new command but do not execute it. +.TP +.B q +Quote the substituted words, escaping further substitutions. +.TP +.B x +Quote the substituted words as with +.BR q , +but break into words at +.B blanks +and newlines. +.TP +.B s/\fIold\fP/\fInew\fP/ +Substitute +.I new +for the first occurrence of +.I old +in the event line. Any delimiter can be used in place of /. The +final delimiter is optional if it is the last character of the +event line. The delimiter may be quoted in +.I old +and +.I new +with a single backslash. If & appears in +.IR new , +it is replaced by +.IR old . +A single backslash will quote the &. If +.I old +is null, it is set to the last +.I old +substituted, or, if no previous history substitutions took place, +the last +.I string +in a +.B !?\fIstring\fR\fB[?]\fR +search. +.TP +.B & +Repeat the previous substitution. +.TP +.B g +Cause changes to be applied over the entire event line. This is +used in conjunction with `\fB:s\fP' (e.g., `\fB:gs/\fIold\fP/\fInew\fP/\fR') +or `\fB:&\fP'. If used with +`\fB:s\fP', any delimiter can be used +in place of /, and the final delimiter is optional +if it is the last character of the event line. +An \fBa\fP may be used as a synonym for \fBg\fP. +.TP +.B G +Apply the following `\fBs\fP' modifier once to each word in the event line. +.PD +.SH "SHELL BUILTIN COMMANDS" +.\" start of bash_builtins +.zZ +.PP +Unless otherwise noted, each builtin command documented in this +section as accepting options preceded by +.B \- +accepts +.B \-\- +to signify the end of the options. +For example, the \fB:\fP, \fBtrue\fP, \fBfalse\fP, and \fBtest\fP builtins +do not accept options. +.sp .5 +.PD 0 +.TP +\fB:\fP [\fIarguments\fP] +.PD +No effect; the command does nothing beyond expanding +.I arguments +and performing any specified +redirections. A zero exit code is returned. +.TP +\fB .\| \fP \fIfilename\fP [\fIarguments\fP] +.PD 0 +.TP +\fBsource\fP \fIfilename\fP [\fIarguments\fP] +.PD +Read and execute commands from +.I filename +in the current +shell environment and return the exit status of the last command +executed from +.IR filename . +If +.I filename +does not contain a slash, file names in +.SM +.B PATH +are used to find the directory containing +.IR filename . +The file searched for in +.SM +.B PATH +need not be executable. +When \fBbash\fP is not in \fIposix mode\fP, the current directory is +searched if no file is found in +.SM +.BR PATH . +If the +.B sourcepath +option to the +.B shopt +builtin command is turned off, the +.SM +.B PATH +is not searched. +If any \fIarguments\fP are supplied, they become the positional +parameters when \fIfilename\fP is executed. Otherwise the positional +parameters are unchanged. +The return status is the status of the last command exited within +the script (0 if no commands are executed), and false if +.I filename +is not found or cannot be read. +.TP +\fBalias\fP [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP] ...] +\fBAlias\fP with no arguments or with the +.B \-p +option prints the list of aliases in the form +\fBalias\fP \fIname\fP=\fIvalue\fP on standard output. +When arguments are supplied, an alias is defined for +each \fIname\fP whose \fIvalue\fP is given. +A trailing space in \fIvalue\fP causes the next word to be +checked for alias substitution when the alias is expanded. +For each \fIname\fP in the argument list for which no \fIvalue\fP +is supplied, the name and value of the alias is printed. +\fBAlias\fP returns true unless a \fIname\fP is given for which +no alias has been defined. +.TP +\fBbg\fP [\fIjobspec\fP ...] +Resume each suspended job \fIjobspec\fP in the background, as if it +had been started with +.BR & . +If \fIjobspec\fP is not present, the shell's notion of the +\fIcurrent job\fP is used. +.B bg +.I jobspec +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] +.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] +.TP +\fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fB\-f\fP \fIfilename\fP +.TP +\fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fB\-x\fP \fIkeyseq\fP:\fIshell\-command\fP +.TP +\fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fIkeyseq\fP:\fIfunction\-name\fP +.TP +\fBbind\fP \fIreadline\-command\fP +.PD +Display current +.B readline +key and function bindings, bind a key sequence to a +.B readline +function or macro, or set a +.B readline +variable. +Each non-option argument is a command as it would appear in +.IR .inputrc , +but each binding or command must be passed as a separate argument; +e.g., '"\eC\-x\eC\-r": re\-read\-init\-file'. +Options, if supplied, have the following meanings: +.RS +.PD 0 +.TP +.B \-m \fIkeymap\fP +Use +.I keymap +as the keymap to be affected by the subsequent bindings. +Acceptable +.I keymap +names are +\fIemacs, emacs\-standard, emacs\-meta, emacs\-ctlx, vi, +vi\-move, vi\-command\fP, and +.IR vi\-insert . +\fIvi\fP is equivalent to \fIvi\-command\fP; \fIemacs\fP is +equivalent to \fIemacs\-standard\fP. +.TP +.B \-l +List the names of all \fBreadline\fP functions. +.TP +.B \-p +Display \fBreadline\fP function names and bindings in such a way +that they can be re-read. +.TP +.B \-P +List current \fBreadline\fP function names and bindings. +.TP +.B \-v +Display \fBreadline\fP variable names and values in such a way that they +can be re-read. +.TP +.B \-V +List current \fBreadline\fP variable names and values. +.TP +.B \-s +Display \fBreadline\fP key sequences bound to macros and the strings +they output in such a way that they can be re-read. +.TP +.B \-S +Display \fBreadline\fP key sequences bound to macros and the strings +they output. +.TP +.B \-f \fIfilename\fP +Read key bindings from \fIfilename\fP. +.TP +.B \-q \fIfunction\fP +Query about which keys invoke the named \fIfunction\fP. +.TP +.B \-u \fIfunction\fP +Unbind all keys bound to the named \fIfunction\fP. +.TP +.B \-r \fIkeyseq\fP +Remove any current binding for \fIkeyseq\fP. +.TP +.B \-x \fIkeyseq\fP:\fIshell\-command\fP +Cause \fIshell\-command\fP to be executed whenever \fIkeyseq\fP is +entered. +.PD +.PP +The return value is 0 unless an unrecognized option is given or an +error occurred. +.RE +.TP +\fBbreak\fP [\fIn\fP] +Exit from within a +.BR for , +.BR while , +.BR until , +or +.B select +loop. If \fIn\fP is specified, break \fIn\fP levels. +.I n +must be \(>= 1. If +.I n +is greater than the number of enclosing loops, all enclosing loops +are exited. The return value is 0 unless the shell is not executing +a loop when +.B break +is executed. +.TP +\fBbuiltin\fP \fIshell\-builtin\fP [\fIarguments\fP] +Execute the specified shell builtin, passing it +.IR arguments , +and return its exit status. +This is useful when defining a +function whose name is the same as a shell builtin, +retaining the functionality of the builtin within the function. +The \fBcd\fP builtin is commonly redefined this way. +The return status is false if +.I shell\-builtin +is not a shell builtin command. +.TP +\fBcd\fP [\fB\-L|-P\fP] [\fIdir\fP] +Change the current directory to \fIdir\fP. The variable +.SM +.B HOME +is the +default +.IR dir . +The variable +.SM +.B CDPATH +defines the search path for the directory containing +.IR dir . +Alternative directory names in +.SM +.B CDPATH +are separated by a colon (:). A null directory name in +.SM +.B CDPATH +is the same as the current directory, i.e., ``\fB.\fP''. If +.I dir +begins with a slash (/), +then +.SM +.B CDPATH +is not used. The +.B \-P +option says to use the physical directory structure instead of +following symbolic links (see also the +.B \-P +option to the +.B set +builtin command); the +.B \-L +option forces symbolic links to be followed. An argument of +.B \- +is equivalent to +.SM +.BR $OLDPWD . +If a non-empty directory name from \fBCDPATH\fP is used, or if +\fB\-\fP 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. +.TP +\fBcaller\fP [\fIexpr\fP] +Returns the context of any active subroutine call (a shell function or +a script executed with the \fB.\fP or \fBsource\fP builtins. +Without \fIexpr\fP, \fBcaller\fP displays the line number and source +filename of the current subroutine call. +If a non-negative integer is supplied as \fIexpr\fP, \fBcaller\fP +displays the line number, subroutine name, and source file corresponding +to that position in the current execution call stack. This extra +information may be used, for example, to print a stack trace. The +current frame is frame 0. +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 +\fBcommand\fP [\fB\-pVv\fP] \fIcommand\fP [\fIarg\fP ...] +Run +.I command +with +.I args +suppressing the normal shell function lookup. Only builtin +commands or commands found in the +.SM +.B PATH +are executed. If the +.B \-p +option is given, the search for +.I command +is performed using a default value for +.B PATH +that is guaranteed to find all of the standard utilities. +If either the +.B \-V +or +.B \-v +option is supplied, a description of +.I command +is printed. The +.B \-v +option causes a single word indicating the command or file name +used to invoke +.I command +to be displayed; the +.B \-V +option produces a more verbose description. +If the +.B \-V +or +.B \-v +option is supplied, the exit status is 0 if +.I command +was found, and 1 if not. If neither option is supplied and +an error occurred or +.I command +cannot be found, the exit status is 127. Otherwise, the exit status of the +.B command +builtin is the exit status of +.IR command . +.TP +\fBcompgen\fP [\fIoption\fP] [\fIword\fP] +Generate possible completion matches for \fIword\fP according to +the \fIoption\fPs, which may be any option accepted by the +.B complete +builtin with the exception of \fB\-p\fP and \fB\-r\fP, and write +the matches to the standard output. +When using the \fB\-F\fP or \fB\-C\fP options, the various shell variables +set by the programmable completion facilities, while available, will not +have useful values. +.sp 1 +The matches will be generated in the same way as if the programmable +completion code had generated them directly from a completion specification +with the same flags. +If \fIword\fP is specified, only those completions matching \fIword\fP +will be displayed. +.sp 1 +The return value is true unless an invalid option is supplied, or no +matches were generated. +.TP +\fBcomplete\fP [\fB\-abcdefgjksuv\fP] [\fB\-o\fP \fIcomp-option\fP] [\fB\-A\fP \fIaction\fP] [\fB\-G\fP \fIglobpat\fP] [\fB\-W\fP \fIwordlist\fP] [\fB\-P\fP \fIprefix\fP] [\fB\-S\fP \fIsuffix\fP] +.br +[\fB\-X\fP \fIfilterpat\fP] [\fB\-F\fP \fIfunction\fP] [\fB\-C\fP \fIcommand\fP] \fIname\fP [\fIname ...\fP] +.PD 0 +.TP +\fBcomplete\fP \fB\-pr\fP [\fIname\fP ...] +.PD +Specify how arguments to each \fIname\fP should be completed. +If the \fB\-p\fP 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 \fB\-r\fP option removes a completion specification for +each \fIname\fP, or, if no \fIname\fPs are supplied, all +completion specifications. +.sp 1 +The process of applying these completion specifications when word completion +is attempted is described above under \fBProgrammable Completion\fP. +.sp 1 +Other options, if specified, have the following meanings. +The arguments to the \fB\-G\fP, \fB\-W\fP, and \fB\-X\fP options +(and, if necessary, the \fB\-P\fP and \fB\-S\fP options) +should be quoted to protect them from expansion before the +.B complete +builtin is invoked. +.RS +.PD 0 +.TP 8 +\fB\-o\fP \fIcomp-option\fP +The \fIcomp-option\fP controls several aspects of the compspec's behavior +beyond the simple generation of completions. +\fIcomp-option\fP may be one of: +.RS +.TP 8 +.B bashdefault +Perform the rest of the default \fBbash\fP completions if the compspec +generates no matches. +.TP 8 +.B default +Use readline's default filename completion if the compspec generates +no matches. +.TP 8 +.B dirnames +Perform directory name completion if the compspec generates no matches. +.TP 8 +.B filenames +Tell readline that the compspec generates filenames, so it can perform any +filename\-specific processing (like adding a slash to directory names or +suppressing trailing spaces). Intended to be used with shell functions. +.TP 8 +.B nospace +Tell readline not to append a space (the default) to words completed at +the end of the line. +.TP 8 +.B plusdirs +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. +.RE +.TP 8 +\fB\-A\fP \fIaction\fP +The \fIaction\fP may be one of the following to generate a list of possible +completions: +.RS +.TP 8 +.B alias +Alias names. May also be specified as \fB\-a\fP. +.TP 8 +.B arrayvar +Array variable names. +.TP 8 +.B binding +\fBReadline\fP key binding names. +.TP 8 +.B builtin +Names of shell builtin commands. May also be specified as \fB\-b\fP. +.TP 8 +.B command +Command names. May also be specified as \fB\-c\fP. +.TP 8 +.B directory +Directory names. May also be specified as \fB\-d\fP. +.TP 8 +.B disabled +Names of disabled shell builtins. +.TP 8 +.B enabled +Names of enabled shell builtins. +.TP 8 +.B export +Names of exported shell variables. May also be specified as \fB\-e\fP. +.TP 8 +.B file +File names. May also be specified as \fB\-f\fP. +.TP 8 +.B function +Names of shell functions. +.TP 8 +.B group +Group names. May also be specified as \fB\-g\fP. +.TP 8 +.B helptopic +Help topics as accepted by the \fBhelp\fP builtin. +.TP 8 +.B hostname +Hostnames, as taken from the file specified by the +.SM +.B HOSTFILE +shell variable. +.TP 8 +.B job +Job names, if job control is active. May also be specified as \fB\-j\fP. +.TP 8 +.B keyword +Shell reserved words. May also be specified as \fB\-k\fP. +.TP 8 +.B running +Names of running jobs, if job control is active. +.TP 8 +.B service +Service names. May also be specified as \fB\-s\fP. +.TP 8 +.B setopt +Valid arguments for the \fB\-o\fP option to the \fBset\fP builtin. +.TP 8 +.B shopt +Shell option names as accepted by the \fBshopt\fP builtin. +.TP 8 +.B signal +Signal names. +.TP 8 +.B stopped +Names of stopped jobs, if job control is active. +.TP 8 +.B user +User names. May also be specified as \fB\-u\fP. +.TP 8 +.B variable +Names of all shell variables. May also be specified as \fB\-v\fP. +.RE +.TP 8 +\fB\-G\fP \fIglobpat\fP +The filename expansion pattern \fIglobpat\fP is expanded to generate +the possible completions. +.TP 8 +\fB\-W\fP \fIwordlist\fP +The \fIwordlist\fP is split using the characters in the +.SM +.B IFS +special variable as delimiters, and each resultant word is expanded. +The possible completions are the members of the resultant list which +match the word being completed. +.TP 8 +\fB\-C\fP \fIcommand\fP +\fIcommand\fP is executed in a subshell environment, and its output is +used as the possible completions. +.TP 8 +\fB\-F\fP \fIfunction\fP +The shell function \fIfunction\fP is executed in the current shell +environment. +When it finishes, the possible completions are retrieved from the value +of the +.SM +.B COMPREPLY +array variable. +.TP 8 +\fB\-X\fP \fIfilterpat\fP +\fIfilterpat\fP is a pattern as used for filename expansion. +It is applied to the list of possible completions generated by the +preceding options and arguments, and each completion matching +\fIfilterpat\fP is removed from the list. +A leading \fB!\fP in \fIfilterpat\fP negates the pattern; in this +case, any completion not matching \fIfilterpat\fP is removed. +.TP 8 +\fB\-P\fP \fIprefix\fP +\fIprefix\fP is added at the beginning of each possible completion +after all other options have been applied. +.TP 8 +\fB\-S\fP \fIsuffix\fP +\fIsuffix\fP is appended to each possible completion +after all other options have been applied. +.PD +.PP +The return value is true unless an invalid option is supplied, an option +other than \fB\-p\fP or \fB\-r\fP is supplied without a \fIname\fP +argument, an attempt is made to remove a completion specification for +a \fIname\fP for which no specification exists, or +an error occurs adding a completion specification. +.RE +.TP +\fBcontinue\fP [\fIn\fP] +Resume the next iteration of the enclosing +.BR for , +.BR while , +.BR until , +or +.B select +loop. +If +.I n +is specified, resume at the \fIn\fPth enclosing loop. +.I n +must be \(>= 1. If +.I n +is greater than the number of enclosing loops, the last enclosing loop +(the ``top-level'' loop) is resumed. The return value is 0 unless the +shell is not executing a loop when +.B continue +is executed. +.TP +\fBdeclare\fP [\fB\-afFirtx\fP] [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP] ...] +.PD 0 +.TP +\fBtypeset\fP [\fB\-afFirtx\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. +The +.B \-p +option will display the attributes and values of each +.IR name . +When +.B \-p +is used, additional options are ignored. +The +.B \-F +option inhibits the display of function definitions; only the +function name and attributes are printed. +If the \fBextdebug\fP shell option is enabled using \fBshopt\fP, +the source file name and line number where the function is defined +are displayed as well. The +.B \-F +option implies +.BR \-f . +The following options can +be used to restrict output to variables with the specified attribute or +to give variables attributes: +.RS +.PD 0 +.TP +.B \-a +Each \fIname\fP is an array variable (see +.B Arrays +above). +.TP +.B \-f +Use function names only. +.TP +.B \-i +The variable is treated as an integer; arithmetic evaluation (see +.SM +.B "ARITHMETIC EVALUATION" ") " +is performed when the variable is assigned a value. +.TP +.B \-r +Make \fIname\fPs readonly. These names cannot then be assigned values +by subsequent assignment statements or unset. +.TP +.B \-t +Give each \fIname\fP the \fItrace\fP attribute. +Traced functions inherit the \fBDEBUG\fP and \fBRETURN\fP traps from +the calling shell. +The trace attribute has no special meaning for variables. +.TP +.B \-x +Mark \fIname\fPs for export to subsequent commands via the environment. +.PD +.PP +Using `+' instead of `\-' +turns off the attribute instead, with the exception that \fB+a\fP +may not be used to destroy an array variable. When used in a function, +makes each +\fIname\fP local, as with the +.B local +command. +If a variable name is followed by =\fIvalue\fP, the value of +the variable is set to \fIvalue\fP. +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'', +.if t \f(CW\-f foo=bar\fP, +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 +.B Arrays +above), one of the \fInames\fP 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 \fB\-f\fP. +.RE +.TP +.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. +Directories are added to the list with the +.B pushd +command; the +.B popd +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. +.TP +.B \-p +Print the directory stack with one entry per line. +.TP +.B \-v +Print the directory stack with one entry per line, +prefixing each entry with its index in the stack. +.PD +.PP +The return value is 0 unless an +invalid option is supplied or \fIn\fP indexes beyond the end +of the directory stack. +.RE +.TP +\fBdisown\fP [\fB\-ar\fP] [\fB\-h\fP] [\fIjobspec\fP ...] +Without options, each +.I jobspec +is removed from the table of active jobs. +If the \fB\-h\fP option is given, each +.I jobspec +is not removed from the table, but is marked so that +.SM +.B SIGHUP +is not sent to the job if the shell receives a +.SM +.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 +.B \-r +option without a +.I jobspec +argument restricts operation to running jobs. +The return value is 0 unless a +.I jobspec +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. +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 +.B \-E +option disables the interpretation of these escape characters, +even on systems where they are interpreted by default. +The \fBxpg_echo\fP shell option may be used to +dynamically determine whether or not \fBecho\fP expands these +escape characters by default. +.B echo +does not interpret \fB\-\-\fP to mean the end of options. +.B echo +interprets the following escape sequences: +.RS +.PD 0 +.TP +.B \ea +alert (bell) +.TP +.B \eb +backspace +.TP +.B \ec +suppress trailing newline +.TP +.B \ee +an escape character +.TP +.B \ef +form feed +.TP +.B \en +new line +.TP +.B \er +carriage return +.TP +.B \et +horizontal tab +.TP +.B \ev +vertical tab +.TP +.B \e\e +backslash +.TP +.B \e0\fInnn\fP +the eight-bit character whose value is the octal value \fInnn\fP +(zero to three octal digits) +.TP +.B \e\fInnn\fP +the eight-bit character whose value is the octal value \fInnn\fP +(one to three octal digits) +.TP +.B \ex\fIHH\fP +the eight-bit character whose value is the hexadecimal value \fIHH\fP +(one or two hex digits) +.PD +.RE +.TP +\fBenable\fP [\fB\-adnps\fP] [\fB\-f\fP \fIfilename\fP] [\fIname\fP ...] +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 \fB\-n\fP is used, each \fIname\fP +is disabled; otherwise, +\fInames\fP are enabled. For example, to use the +.B test +binary found via the +.SM +.B PATH +instead of the shell builtin version, run +.if t \f(CWenable -n test\fP. +.if n ``enable -n test''. +The +.B \-f +option means to load the new builtin command +.I name +from shared object +.IR filename , +on systems that support dynamic loading. The +.B \-d +option will delete a builtin previously loaded with +.BR \-f . +If no \fIname\fP arguments are given, or if the +.B \-p +option is supplied, a list of shell builtins is printed. +With no other option arguments, the list consists of all enabled +shell builtins. +If \fB\-n\fP is supplied, only disabled builtins are printed. +If \fB\-a\fP is supplied, the list printed includes all builtins, with an +indication of whether or not each is enabled. +If \fB\-s\fP is supplied, the output is restricted to the POSIX +\fIspecial\fP builtins. +The return value is 0 unless a +.I name +is not a shell builtin or there is an error loading a new builtin +from a shared object. +.TP +\fBeval\fP [\fIarg\fP ...] +The \fIarg\fPs are read and concatenated together into a single +command. This command is then read and executed by the shell, and +its exit status is returned as the value of +.BR eval . +If there are no +.IR args , +or only null arguments, +.B eval +returns 0. +.TP +\fBexec\fP [\fB\-cl\fP] [\fB\-a\fP \fIname\fP] [\fIcommand\fP [\fIarguments\fP]] +If +.I command +is specified, it replaces the shell. +No new process is created. The +.I arguments +become the arguments to \fIcommand\fP. +If the +.B \-l +option is supplied, +the shell places a dash at the beginning of the zeroth arg passed to +.IR command . +This is what +.IR login (1) +does. The +.B \-c +option causes +.I command +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 +.I command +cannot be executed for some reason, a non-interactive shell exits, +unless the shell option +.B execfail +is enabled, in which case it returns failure. +An interactive shell returns failure if the file cannot be executed. +If +.I command +is not specified, any redirections take effect in the current shell, +and the return status is 0. If there is a redirection error, the +return status is 1. +.TP +\fBexit\fP [\fIn\fP] +Cause the shell to exit +with a status of \fIn\fP. If +.I n +is omitted, the exit status +is that of the last command executed. +A trap on +.SM +.B EXIT +is executed before the shell terminates. +.TP +\fBexport\fP [\fB\-fn\fP\^] [\fIname\fP[=\fIword\fP]] ... +.PD 0 +.TP +.B export \-p +.PD +The supplied +.I names +are marked for automatic export to the environment of +subsequently executed commands. If the +.B \-f +option is given, +the +.I names +refer to functions. +If no +.I names +are given, or if the +.B \-p +option is supplied, a list +of all names that are exported in this shell is printed. +The +.B \-n +option causes the export property to be removed from each +\fIname\fP. +If a variable name is followed by =\fIword\fP, the value of +the variable is set to \fIword\fP. +.B export +returns an exit status of 0 unless an invalid option is +encountered, +one of the \fInames\fP is not a valid shell variable name, or +.B \-f +is supplied with a +.I name +that is not a function. +.TP +\fBfc\fP [\fB\-e\fP \fIename\fP] [\fB\-nlr\fP] [\fIfirst\fP] [\fIlast\fP] +.PD 0 +.TP +\fBfc\fP \fB\-s\fP [\fIpat\fP=\fIrep\fP] [\fIcmd\fP] +.PD +Fix Command. In the first form, a range of commands from +.I first +to +.I last +is selected from the history list. +.I First +and +.I last +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 +.I last +is not specified it is set to +the current command for listing (so that +.if n ``fc \-l \-10'' +.if t \f(CWfc \-l \-10\fP +prints the last 10 commands) and to +.I first +otherwise. +If +.I first +is not specified it is set to the previous +command for editing and \-16 for listing. +.sp 1 +The +.B \-n +option suppresses +the command numbers when listing. The +.B \-r +option reverses the order of +the commands. If the +.B \-l +option is given, +the commands are listed on +standard output. Otherwise, the editor given by +.I ename +is invoked +on a file containing those commands. If +.I ename +is not given, the +value of the +.SM +.B FCEDIT +variable is used, and +the value of +.SM +.B EDITOR +if +.SM +.B FCEDIT +is not set. If neither variable is set, +.FN vi +is used. When editing is complete, the edited commands are +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. +A useful alias to use with this is +.if n ``r="fc -s"'', +.if t \f(CWr='fc \-s'\fP, +so that typing +.if n ``r cc'' +.if t \f(CWr cc\fP +runs the last command beginning with +.if n ``cc'' +.if t \f(CWcc\fP +and typing +.if n ``r'' +.if t \f(CWr\fP +re-executes the last command. +.sp 1 +If the first form is used, the return value is 0 unless an invalid +option is encountered or +.I first +or +.I last +specify history lines out of range. +If the +.B \-e +option is supplied, the return value is the value of the last +command executed or failure if an error occurs with the temporary +file of commands. If the second form is used, the return status +is that of the command re-executed, unless +.I cmd +does not specify a valid history line, in which case +.B fc +returns failure. +.TP +\fBfg\fP [\fIjobspec\fP] +Resume +.I jobspec +in the foreground, and make it the current job. +If +.I jobspec +is not present, the shell's notion of the \fIcurrent job\fP is used. +The return value is that of the command placed into the foreground, +or failure if run when job control is disabled or, when run with +job control enabled, if +.I jobspec +does not specify a valid job or +.I jobspec +specifies a job that was started without job control. +.TP +\fBgetopts\fP \fIoptstring\fP \fIname\fP [\fIargs\fP] +.B getopts +is used by shell procedures to parse positional parameters. +.I optstring +contains the option characters to be recognized; if a character +is followed by a colon, the option is expected to have an +argument, which should be separated from it by white space. +The colon and question mark characters may not be used as +option characters. +Each time it is invoked, +.B getopts +places the next option in the shell variable +.IR name , +initializing +.I name +if it does not exist, +and the index of the next argument to be processed into the +variable +.SM +.BR OPTIND . +.SM +.B OPTIND +is initialized to 1 each time the shell or a shell script +is invoked. When an option requires an argument, +.B getopts +places that argument into the variable +.SM +.BR OPTARG . +The shell does not reset +.SM +.B OPTIND +automatically; it must be manually reset between multiple +calls to +.B getopts +within the same shell invocation if a new set of parameters +is to be used. +.sp 1 +When the end of options is encountered, \fBgetopts\fP exits with a +return value greater than zero. +\fBOPTIND\fP is set to the index of the first non-option argument, +and \fBname\fP is set to ?. +.sp 1 +.B getopts +normally parses the positional parameters, but if more arguments are +given in +.IR args , +.B getopts +parses those instead. +.sp 1 +.B getopts +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 +are printed when invalid options or missing option arguments are +encountered. +If the variable +.SM +.B OPTERR +is set to 0, no error messages will be displayed, even if the first +character of +.I optstring +is not a colon. +.sp 1 +If an invalid option is seen, +.B getopts +places ? into +.I name +and, if not silent, +prints an error message and unsets +.SM +.BR OPTARG . +If +.B getopts +is silent, +the option character found is placed in +.SM +.B OPTARG +and no diagnostic message is printed. +.sp 1 +If a required argument is not found, and +.B getopts +is not silent, +a question mark (\^\fB?\fP\^) is placed in +.IR name , +.SM +.B OPTARG +is unset, and a diagnostic message is printed. +If +.B getopts +is silent, then a colon (\^\fB:\fP\^) is placed in +.I name +and +.SM +.B OPTARG +is set to the option character found. +.sp 1 +.B getopts +returns true if an option, specified or unspecified, is found. +It returns false if the end of options is encountered or an +error occurs. +.TP +\fBhash\fP [\fB\-lr\fP] [\fB\-p\fP \fIfilename\fP] [\fB\-dt\fP] [\fIname\fP] +For each +.IR name , +the full file name of the command is determined by searching +the directories in +.B $PATH +and remembered. +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. +The +.B \-r +option causes the shell to forget all +remembered locations. +The +.B \-d +option causes the shell to forget the remembered location of each \fIname\fP. +If the +.B \-t +option is supplied, the full pathname to which each \fIname\fP corresponds +is printed. If multiple \fIname\fP arguments are supplied with \fB\-t\fP, +the \fIname\fP is printed before the hashed full pathname. +The +.B \-l +option causes output to be displayed in a format that may be reused as input. +If no arguments are given, or if only \fB\-l\fP is supplied, +information about remembered commands is printed. +The return status is true unless a +.I name +is not found or an invalid option is supplied. +.TP +\fBhelp\fP [\fB\-s\fP] [\fIpattern\fP] +Display helpful information about builtin commands. If +.I pattern +is specified, +.B help +gives detailed help on all commands matching +.IR pattern ; +otherwise help for all the builtins and shell control structures +is printed. +The \fB\-s\fP option restricts the information displayed to a short +usage synopsis. +The return status is 0 unless no command matches +.IR pattern . +.TP +\fBhistory [\fIn\fP] +.PD 0 +.TP +\fBhistory\fP \fB\-c\fP +.TP +\fBhistory \-d\fP \fIoffset\fP +.TP +\fBhistory\fP \fB\-anrw\fP [\fIfilename\fP] +.TP +\fBhistory\fP \fB\-p\fP \fIarg\fP [\fIarg ...\fP] +.TP +\fBhistory\fP \fB\-s\fP \fIarg\fP [\fIarg ...\fP] +.PD +With no options, display the command +history list with line numbers. Lines listed +with a +.B * +have been modified. An argument of +.I n +lists only the last +.I n +lines. +If the shell variable \fBHISTTIMEFORMAT\fP is set and not null, +it is used as a format string for \fIstrftime\fP(3) to display +the time stamp associated with each displayed history entry. +No intervening blank is printed between the formatted time stamp +and the history line. +If \fIfilename\fP is supplied, it is used as the +name of the history file; if not, the value of +.SM +.B HISTFILE +is used. Options, if supplied, have the following meanings: +.RS +.PD 0 +.TP +.B \-c +Clear the history list by deleting all the entries. +.TP +\fB\-d\fP \fIoffset\fP +Delete the history entry at position \fIoffset\fP. +.TP +.B \-a +Append the ``new'' history lines (history lines entered since the +beginning of the current \fBbash\fP session) to the history file. +.TP +.B \-n +Read the history lines not already read from the history +file into the current history list. These are lines +appended to the history file since the beginning of the +current \fBbash\fP session. +.TP +.B \-r +Read the contents of the history file +and use them as the current history. +.TP +.B \-w +Write the current history to the history file, overwriting the +history file's contents. +.TP +.B \-p +Perform history substitution on the following \fIargs\fP and display +the result on the standard output. +Does not store the results in the history list. +Each \fIarg\fP must be quoted to disable normal history expansion. +.TP +.B \-s +Store the +.I args +in the history list as a single entry. The last command in the +history list is removed before the +.I args +are added. +.PD +.PP +If the \fBHISTTIMEFORMAT\fP is set, the time stamp information +associated with each history entry is written to the history file. +The return value is 0 unless an invalid option is encountered, an +error occurs while reading or writing the history file, an invalid +\fIoffset\fP is supplied as an argument to \fB\-d\fP, or the +history expansion supplied as an argument to \fB\-p\fP fails. +.RE +.TP +\fBjobs\fP [\fB\-lnprs\fP] [ \fIjobspec\fP ... ] +.PD 0 +.TP +\fBjobs\fP \fB\-x\fP \fIcommand\fP [ \fIargs\fP ... ] +.PD +The first form lists the active jobs. The options have the following +meanings: +.RS +.PD 0 +.TP +.B \-l +List process IDs +in addition to the normal information. +.TP +.B \-p +List only the process ID of the job's process group +leader. +.TP +.B \-n +Display information only about jobs that have changed status since +the user was last notified of their status. +.TP +.B \-r +Restrict output to running jobs. +.TP +.B \-s +Restrict output to stopped jobs. +.PD +.PP +If +.I jobspec +is given, output is restricted to information about that job. +The return status is 0 unless an invalid option is encountered +or an invalid +.I jobspec +is supplied. +.PP +If the +.B \-x +option is supplied, +.B jobs +replaces any +.I jobspec +found in +.I command +or +.I args +with the corresponding process group ID, and executes +.I command +passing it +.IR args , +returning its exit status. +.RE +.TP +\fBkill\fP [\fB\-s\fP \fIsigspec\fP | \fB\-n\fP \fIsignum\fP | \fB\-\fP\fIsigspec\fP] [\fIpid\fP | \fIjobspec\fP] ... +.PD 0 +.TP +\fBkill\fP \fB\-l\fP [\fIsigspec\fP | \fIexit_status\fP] +.PD +Send the signal named by +.I sigspec +or +.I signum +to the processes named by +.I pid +or +.IR jobspec . +.I sigspec +is either a case-insensitive signal name such as +.SM +.B SIGKILL +(with or without the +.SM +.B SIG +prefix) or a signal number; +.I signum +is a signal number. +If +.I sigspec +is not present, then +.SM +.B SIGTERM +is assumed. +An argument of +.B \-l +lists the signal names. +If any arguments are supplied when +.B \-l +is given, the names of the signals corresponding to the arguments are +listed, and the return status is 0. +The \fIexit_status\fP argument to +.B \-l +is a number specifying either a signal number or the exit status of +a process terminated by a signal. +.B kill +returns true if at least one signal was successfully sent, or false +if an error occurs or an invalid option is encountered. +.TP +\fBlet\fP \fIarg\fP [\fIarg\fP ...] +Each +.I arg +is an arithmetic expression to be evaluated (see +.SM +.BR "ARITHMETIC EVALUATION" ). +If the last +.I arg +evaluates to 0, +.B let +returns 1; 0 is returned otherwise. +.TP +\fBlocal\fP [\fIoption\fP] [\fIname\fP[=\fIvalue\fP] ...] +For each argument, a local variable named +.I name +is created, and assigned +.IR value . +The \fIoption\fP can be any of the options accepted by \fBdeclare\fP. +When +.B local +is used within a function, it causes the variable +.I name +to have a visible scope restricted to that function and its children. +With no operands, +.B local +writes a list of local variables to the standard output. It is +an error to use +.B local +when not within a function. The return status is 0 unless +.B local +is used outside a function, an invalid +.I name +is supplied, or +\fIname\fP is a readonly variable. +.TP +.B logout +Exit a login shell. +.TP +\fBpopd\fP [\-\fBn\fP] [+\fIn\fP] [\-\fIn\fP] +Removes entries from the directory stack. With no arguments, +removes the top directory from the stack, and performs a +.B cd +to the new top directory. +Arguments, if supplied, have the following meanings: +.RS +.PD 0 +.TP +\fB+\fP\fIn\fP +Removes the \fIn\fPth entry counting from the left of the list +shown by +.BR dirs , +starting with zero. For example: +.if n ``popd +0'' +.if t \f(CWpopd +0\fP +removes the first directory, +.if n ``popd +1'' +.if t \f(CWpopd +1\fP +the second. +.TP +\fB\-\fP\fIn\fP +Removes the \fIn\fPth entry counting from the right of the list +shown by +.BR dirs , +starting with zero. For example: +.if n ``popd -0'' +.if t \f(CWpopd -0\fP +removes the last directory, +.if n ``popd -1'' +.if t \f(CWpopd -1\fP +the next to last. +.TP +.B \-n +Suppresses the normal change of directory when removing directories +from the stack, so that only the stack is manipulated. +.PD +.PP +If the +.B popd +command is successful, a +.B dirs +is performed as well, and the return status is 0. +.B popd +returns false if an invalid option is encountered, the directory stack +is empty, a non-existent directory stack entry is specified, or the +directory change fails. +.RE +.TP +\fBprintf\fP [\fB\-v\fP \fIvar\fP] \fIformat\fP [\fIarguments\fP] +Write the formatted \fIarguments\fP to the standard output under the +control of the \fIformat\fP. +The \fIformat\fP is a character string which contains three types of objects: +plain characters, which are simply copied to standard output, character +escape sequences, which are converted and copied to the standard output, and +format specifications, each of which causes printing of the next successive +\fIargument\fP. +In addition to the standard \fIprintf\fP(1) formats, \fB%b\fP causes +\fBprintf\fP to expand backslash escape sequences in the corresponding +\fIargument\fP (except that \fB\ec\fP terminates output, backslashes in +\fB\e\(aq\fP, \fB\e"\fP, and \fB\e?\fP are not removed, and octal escapes +beginning with \fB\e0\fP may contain up to four digits), +and \fB%q\fP causes \fBprintf\fP to output the corresponding +\fIargument\fP in a format that can be reused as shell input. +.sp 1 +The \fB\-v\fP option causes the output to be assigned to the variable +\fIvar\fP rather than being printed to the standard output. +.sp 1 +The \fIformat\fP is reused as necessary to consume all of the \fIarguments\fP. +If the \fIformat\fP requires more \fIarguments\fP than are supplied, 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. +.TP +\fBpushd\fP [\fB\-n\fP] [\fIdir\fP] +.PD 0 +.TP +\fBpushd\fP [\fB\-n\fP] [+\fIn\fP] [\-\fIn\fP] +.PD +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, if supplied, have the following meanings: +.RS +.PD 0 +.TP +\fB+\fP\fIn\fP +Rotates the stack so that the \fIn\fPth directory +(counting from the left of the list shown by +.BR dirs , +starting with zero) +is at the top. +.TP +\fB\-\fP\fIn\fP +Rotates the stack so that the \fIn\fPth directory +(counting from the right of the list shown by +.BR dirs , +starting with zero) is at the top. +.TP +.B \-n +Suppresses the normal change of directory when adding directories +to the stack, so that only the stack is manipulated. +.TP +.I dir +Adds +.I dir +to the directory stack at the top, making it the +new current working directory. +.PD +.PP +If the +.B pushd +command is successful, a +.B dirs +is performed as well. +If the first form is used, +.B pushd +returns 0 unless the cd to +.I dir +fails. With the second form, +.B pushd +returns 0 unless the directory stack is empty, +a non-existent directory stack element is specified, +or the directory change to the specified new current directory +fails. +.RE +.TP +\fBpwd\fP [\fB\-LP\fP] +Print the absolute pathname of the current working directory. +The pathname printed contains no symbolic links if the +.B \-P +option is supplied or the +.B \-o physical +option to the +.B set +builtin command is enabled. +If the +.B \-L +option is used, the pathname printed may contain symbolic links. +The return status is 0 unless an error occurs while +reading the name of the current directory or an +invalid option is supplied. +.TP +\fBread\fP [\fB\-ers\fP] [\fB\-u\fP \fIfd\fP] [\fB\-t\fP \fItimeout\fP] [\fB\-a\fP \fIaname\fP] [\fB\-p\fP \fIprompt\fP] [\fB\-n\fP \fInchars\fP] [\fB\-d\fP \fIdelim\fP] [\fIname\fP ...] +One line is read from the standard input, or from the file descriptor +\fIfd\fP supplied as an argument to the \fB\-u\fP option, and the first word +is assigned to the first +.IR name , +the second word to the second +.IR name , +and so on, with leftover words and their intervening separators assigned +to the last +.IR name . +If there are fewer words read from the input stream than names, +the remaining names are assigned empty values. +The characters in +.SM +.B IFS +are used to split the line into words. +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: +.RS +.PD 0 +.TP +.B \-a \fIaname\fP +The words are assigned to sequential indices +of the array variable +.IR aname , +starting at 0. +.I aname +is unset before any new values are assigned. +Other \fIname\fP arguments are ignored. +.TP +.B \-d \fIdelim\fP +The first character of \fIdelim\fP is used to terminate the input line, +rather than newline. +.TP +.B \-e +If the standard input +is coming from a terminal, +.B readline +(see +.SM +.B READLINE +above) is used to obtain the line. +.TP +.B \-n \fInchars\fP +\fBread\fP returns after reading \fInchars\fP characters rather than +waiting for a complete line of input. +.TP +.B \-p \fIprompt\fP +Display \fIprompt\fP on standard error, without a +trailing newline, before attempting to read any input. The prompt +is displayed only if input is coming from a terminal. +.TP +.B \-r +Backslash does not act as an escape character. +The backslash is considered to be part of the line. +In particular, a backslash-newline pair may not be used as a line +continuation. +.TP +.B \-s +Silent mode. If input is coming from a terminal, characters are +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. +This option has no effect if \fBread\fP is not reading input from the +terminal or a pipe. +.TP +.B \-u \fIfd\fP +Read input from file descriptor \fIfd\fP. +.PD +.PP +If no +.I names +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, or an invalid file descriptor is supplied as the argument to +\fB\-u\fP. +.RE +.TP +\fBreadonly\fP [\fB\-apf\fP] [\fIname\fP[=\fIword\fP] ...] +.PD +The given +\fInames\fP are marked readonly; the values of these +.I names +may not be changed by subsequent assignment. +If the +.B \-f +option is supplied, the functions corresponding to the +\fInames\fP are so +marked. +The +.B \-a +option restricts the variables to arrays. +If no +.I name +arguments are given, or if the +.B \-p +option is supplied, a list of all readonly names is printed. +The +.B \-p +option causes output to be displayed in a format that +may be reused as input. +If a variable name is followed by =\fIword\fP, the value of +the variable is set to \fIword\fP. +The return status is 0 unless an invalid option is encountered, +one of the +.I names +is not a valid shell variable name, or +.B \-f +is supplied with a +.I name +that is not a function. +.TP +\fBreturn\fP [\fIn\fP] +Causes a function to exit with the return value specified by +.IR n . +If +.I 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 +.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. +Any command associated with the \fBRETURN\fP trap is executed +before execution resumes after the function or script. +.TP +\fBset\fP [\fB\-\-abefhkmnptuvxBCHP\fP] [\fB\-o\fP \fIoption\fP] [\fIarg\fP ...] +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. +The output is sorted according to the current locale. +When options are specified, they set or unset shell attributes. +Any arguments remaining after the options are processed are treated +as values for the positional parameters and are assigned, in order, to +.BR $1 , +.BR $2 , +.B ... +.BR $\fIn\fP . +Options, if specified, have the following meanings: +.RS +.PD 0 +.TP 8 +.B \-a +Automatically mark variables and functions which are modified or +created for export to the environment of subsequent commands. +.TP 8 +.B \-b +Report the status of terminated background jobs +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 \fIsimple command\fP (see +.SM +.B SHELL GRAMMAR +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 +or +.B until +keyword, +part of the test in an +.I if +statement, part of a +.B && +or +.B \(bv\(bv +list, or if the command's return value is +being inverted via +.BR ! . +A trap on \fBERR\fP, if set, is executed before the shell exits. +.TP 8 +.B \-f +Disable pathname expansion. +.TP 8 +.B \-h +Remember the location of commands as they are looked up for execution. +This is enabled by default. +.TP 8 +.B \-k +All arguments in the form of assignment statements +are placed in the environment for a command, not just +those that precede the command name. +.TP 8 +.B \-m +Monitor mode. Job control is enabled. This option is on +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. +.TP 8 +.B \-n +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. +.TP 8 +.B \-o \fIoption\-name\fP +The \fIoption\-name\fP can be one of the following: +.RS +.TP 8 +.B allexport +Same as +.BR \-a . +.TP 8 +.B braceexpand +Same as +.BR \-B . +.TP 8 +.B emacs +Use an emacs-style command line editing interface. This is enabled +by default when the shell is interactive, unless the shell is started +with the +.B \-\-noediting +option. +.TP 8 +.B errtrace +Same as +.BR \-E . +.TP 8 +.B functrace +Same as +.BR \-T . +.TP 8 +.B errexit +Same as +.BR \-e . +.TP 8 +.B hashall +Same as +.BR \-h . +.TP 8 +.B histexpand +Same as +.BR \-H . +.TP 8 +.B history +Enable command history, as described above under +.SM +.BR HISTORY . +This option is on by default in interactive shells. +.TP 8 +.B ignoreeof +The effect is as if the shell command +.if t \f(CWIGNOREEOF=10\fP +.if n ``IGNOREEOF=10'' +had been executed +(see +.B Shell Variables +above). +.TP 8 +.B keyword +Same as +.BR \-k . +.TP 8 +.B monitor +Same as +.BR \-m . +.TP 8 +.B noclobber +Same as +.BR \-C . +.TP 8 +.B noexec +Same as +.BR \-n . +.TP 8 +.B noglob +Same as +.BR \-f . +.B nolog +Currently ignored. +.TP 8 +.B notify +Same as +.BR \-b . +.TP 8 +.B nounset +Same as +.BR \-u . +.TP 8 +.B onecmd +Same as +.BR \-t . +.TP 8 +.B physical +Same as +.BR \-P . +.TP 8 +.B pipefail +If set, the return value of a pipeline is the value of the last +(rightmost) command to exit with a non-zero status, or zero if all +commands in the pipeline exit successfully. +This option is disabled by default. +.TP 8 +.B posix +Change the behavior of +.B bash +where the default operation differs +from the POSIX standard to match the standard (\fIposix mode\fP). +.TP 8 +.B privileged +Same as +.BR \-p . +.TP 8 +.B verbose +Same as +.BR \-v . +.TP 8 +.B vi +Use a vi-style command line editing interface. +.TP 8 +.B xtrace +Same as +.BR \-x . +.sp .5 +.PP +If +.B \-o +is supplied with no \fIoption\-name\fP, the values of the current options are +printed. +If +.B +o +is supplied with no \fIoption\-name\fP, a series of +.B set +commands to recreate the current option settings is displayed on +the standard output. +.RE +.TP 8 +.B \-p +Turn on +.I privileged +mode. In this mode, the +.SM +.B $ENV +and +.SM +.B $BASH_ENV +files are not processed, shell functions are not inherited from the +environment, and the +.SM +.B SHELLOPTS +variable, if it appears in the environment, is ignored. +If the shell is started with the effective user (group) id not equal to the +real user (group) id, and the \fB\-p\fP option is not supplied, these actions +are taken and the effective user id is set to the real user id. +If the \fB\-p\fP option is supplied at startup, the effective user id is +not reset. +Turning this option off causes the effective user +and group ids to be set to the real user and group ids. +.TP 8 +.B \-t +Exit after reading and executing one command. +.TP 8 +.B \-u +Treat unset variables as an error when performing +parameter expansion. If expansion is attempted on an +unset variable, the shell prints an error message, and, +if not interactive, exits with a non-zero status. +.TP 8 +.B \-v +Print shell input lines as they are read. +.TP 8 +.B \-x +After expanding each \fIsimple command\fP, +\fBfor\fP command, \fBcase\fP command, \fBselect\fP command, or +arithmetic \fBfor\fP command, display the expanded value of +.SM +.BR PS4 , +followed by the command and its expanded arguments +or associated word list. +.TP 8 +.B \-B +The shell performs brace expansion (see +.B Brace Expansion +above). This is on by default. +.TP 8 +.B \-C +If set, +.B bash +does not overwrite an existing file with the +.BR > , +.BR >& , +and +.B <> +redirection operators. This may be overridden when +creating output files by using the redirection operator +.B >| +instead of +.BR > . +.TP 8 +.B \-E +If set, any trap on \fBERR\fP is inherited by shell functions, command +substitutions, and commands executed in a subshell environment. +The \fBERR\fP trap is normally not inherited in such cases. +.TP 8 +.B \-H +Enable +.B ! +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 +commands such as +.B cd +that change the current working directory. It uses the +physical directory structure instead. By default, +.B bash +follows the logical chain of directories when performing commands +which change the current directory. +.TP 8 +.B \-T +If set, any traps on \fBDEBUG\fP and \fBRETURN\fP are inherited by shell +functions, command substitutions, and commands executed in a +subshell environment. +The \fBDEBUG\fP and \fBRETURN\fP traps are normally not inherited +in such cases. +.TP 8 +.B \-\- +If no arguments follow this option, then the positional parameters are +unset. Otherwise, the positional parameters are set to the +\fIarg\fPs, even if some of them begin with a +.BR \- . +.TP 8 +.B \- +Signal the end of options, cause all remaining \fIarg\fPs to be +assigned to the positional parameters. The +.B \-x +and +.B \-v +options are turned off. +If there are no \fIarg\fPs, +the positional parameters remain unchanged. +.PD +.PP +The options are off by default unless otherwise noted. +Using + rather than \- causes these options to be turned off. +The options can also be specified as arguments to an invocation of +the shell. +The current set of options may be found in +.BR $\- . +The return status is always true unless an invalid option is encountered. +.RE +.TP +\fBshift\fP [\fIn\fP] +The positional parameters from \fIn\fP+1 ... are renamed to +.B $1 +.B .... +Parameters represented by the numbers \fB$#\fP +down to \fB$#\fP\-\fIn\fP+1 are unset. +.I n +must be a non-negative number less than or equal to \fB$#\fP. +If +.I n +is 0, no parameters are changed. +If +.I n +is not given, it is assumed to be 1. +If +.I n +is greater than \fB$#\fP, the positional parameters are not changed. +The return status is greater than zero if +.I n +is greater than +.B $# +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. +With no options, or with the +.B \-p +option, a list of all settable options is displayed, with +an indication of whether or not each is set. +The \fB\-p\fP option causes output to be displayed in a form that +may be reused as input. +Other options have the following meanings: +.RS +.PD 0 +.TP +.B \-s +Enable (set) each \fIoptname\fP. +.TP +.B \-u +Disable (unset) each \fIoptname\fP. +.TP +.B \-q +Suppresses normal output (quiet mode); the return status indicates +whether the \fIoptname\fP is set or unset. +If multiple \fIoptname\fP arguments are given with +.BR \-q , +the return status is zero if all \fIoptnames\fP are enabled; non-zero +otherwise. +.TP +.B \-o +Restricts the values of \fIoptname\fP to be those defined for the +.B \-o +option to the +.B set +builtin. +.PD +.PP +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. +Unless otherwise noted, the \fBshopt\fP options are disabled (unset) +by default. +.PP +The return status when listing options is zero if all \fIoptnames\fP +are enabled, non-zero otherwise. When setting or unsetting options, +the return status is zero unless an \fIoptname\fP is not a valid shell +option. +.PP +The list of \fBshopt\fP options is: +.if t .sp .5v +.if n .sp 1v +.PD 0 +.TP 8 +.B cdable_vars +If set, an argument to the +.B cd +builtin command that +is not a directory is assumed to be the name of a variable whose +value is the directory to change to. +.TP 8 +.B cdspell +If set, minor errors in the spelling of a directory component in a +.B cd +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, +and the command proceeds. +This option is only used by interactive shells. +.TP 8 +.B checkhash +If set, \fBbash\fP checks that a command found in the hash +table exists before trying to execute it. If a hashed command no +longer exists, a normal path search is performed. +.TP 8 +.B checkwinsize +If set, \fBbash\fP checks the window size after each command +and, if necessary, updates the values of +.SM +.B LINES +and +.SM +.BR COLUMNS . +.TP 8 +.B cmdhist +If set, +.B bash +attempts to save all lines of a multiple-line +command in the same history entry. This allows +easy re-editing of multi-line commands. +.TP 8 +.B dotglob +If set, +.B bash +includes filenames beginning with a `.' in the results of pathname +expansion. +.TP 8 +.B execfail +If set, a non-interactive shell will not exit if +it cannot execute the file specified as an argument to the +.B exec +builtin command. An interactive shell does not exit if +.B exec +fails. +.TP 8 +.B expand_aliases +If set, aliases are expanded as described above under +.SM +.BR ALIASES . +This option is enabled by default for interactive shells. +.TP 8 +.B extdebug +If set, behavior intended for use by debuggers is enabled: +.RS +.TP +.B 1. +The \fB\-F\fP option to the \fBdeclare\fP builtin displays the source +file name and line number corresponding to each function name supplied +as an argument. +.TP +.B 2. +If the command run by the \fBDEBUG\fP trap returns a non-zero value, the +next command is skipped and not executed. +.TP +.B 3. +If the command run by the \fBDEBUG\fP trap returns a value of 2, and the +shell is executing in a subroutine (a shell function or a shell script +executed by the \fB.\fP or \fBsource\fP builtins), a call to +\fBreturn\fP is simulated. +.TP +.B 4. +\fBBASH_ARGC\fP and \fBBASH_ARGV\fP are updated as described in their +descriptions above. +.TP +.B 5. +Function tracing is enabled: command substitution, shell functions, and +subshells invoked with \fB(\fP \fIcommand\fP \fB)\fP inherit the +\fBDEBUG\fP and \fBRETURN\fP traps. +.TP +.B 6. +Error tracing is enabled: command substitution, shell functions, and +subshells invoked with \fB(\fP \fIcommand\fP \fB)\fP inherit the +\fBERROR\fP trap. +.RE +.TP 8 +.B extglob +If set, the extended pattern matching features described above under +\fBPathname Expansion\fP are enabled. +.TP 8 +.B extquote +If set, \fB$\fP\(aq\fIstring\fP\(aq and \fB$\fP"\fIstring\fP" quoting is +performed within \fB${\fP\fIparameter\fP\fB}\fP expansions +enclosed in double quotes. This option is enabled by default. +.TP 8 +.B failglob +If set, patterns which fail to match filenames during pathname expansion +result in an expansion error. +.TP 8 +.B force_fignore +If set, the suffixes specified by the \fBFIGNORE\fP shell variable +cause words to be ignored when performing word completion even if +the ignored words are the only possible completions. +See +.SM +\fBSHELL VARIABLES\fP +above for a description of \fBFIGNORE\fP. +This option is enabled by default. +.TP 8 +.B gnu_errfmt +If set, shell error messages are written in the standard GNU error +message format. +.TP 8 +.B histappend +If set, the history list is appended to the file named by the value +of the +.B HISTFILE +variable when the shell exits, rather than overwriting the file. +.TP 8 +.B histreedit +If set, and +.B readline +is being used, a user is given the opportunity to re-edit a +failed history substitution. +.TP 8 +.B histverify +If set, and +.B readline +is being used, the results of history substitution are not immediately +passed to the shell parser. Instead, the resulting line is loaded into +the \fBreadline\fP editing buffer, allowing further modification. +.TP 8 +.B hostcomplete +If set, and +.B readline +is being used, \fBbash\fP will attempt to perform hostname completion when a +word containing a \fB@\fP is being completed (see +.B Completing +under +.SM +.B READLINE +above). +This is enabled by default. +.TP 8 +.B huponexit +If set, \fBbash\fP will send +.SM +.B SIGHUP +to all jobs when an interactive login shell exits. +.TP 8 +.B interactive_comments +If set, allow a word beginning with +.B # +to cause that word and all remaining characters on that +line to be ignored in an interactive shell (see +.SM +.B COMMENTS +above). This option is enabled by default. +.TP 8 +.B lithist +If set, and the +.B cmdhist +option is enabled, multi-line commands are saved to the history with +embedded newlines rather than using semicolon separators where possible. +.TP 8 +.B login_shell +The shell sets this option if it is started as a login shell (see +.SM +.B "INVOCATION" +above). +The value may not be changed. +.TP 8 +.B mailwarn +If set, and a file that \fBbash\fP is checking for mail has been +accessed since the last time it was checked, the message ``The mail in +\fImailfile\fP has been read'' is displayed. +.TP 8 +.B no_empty_cmd_completion +If set, and +.B readline +is being used, +.B bash +will not attempt to search the \fBPATH\fP for possible completions when +completion is attempted on an empty line. +.TP 8 +.B nocaseglob +If set, +.B bash +matches filenames in a case\-insensitive fashion when performing pathname +expansion (see +.B Pathname Expansion +above). +.TP 8 +.B nocasematch +If set, +.B bash +matches patterns in a case\-insensitive fashion when performing matching +while executing \fBcase\fP or \fB[[\fP conditional commands. +.TP 8 +.B nullglob +If set, +.B bash +allows patterns which match no +files (see +.B Pathname Expansion +above) +to expand to a null string, rather than themselves. +.TP 8 +.B progcomp +If set, the programmable completion facilities (see +\fBProgrammable Completion\fP above) are enabled. +This option is enabled by default. +.TP 8 +.B promptvars +If set, prompt strings undergo +parameter expansion, command substitution, arithmetic +expansion, and quote removal after being expanded as described in +.SM +.B PROMPTING +above. This option is enabled by default. +.TP 8 +.B restricted_shell +The shell sets this option if it is started in restricted mode (see +.SM +.B "RESTRICTED SHELL" +below). +The value may not be changed. +This is not reset when the startup files are executed, allowing +the startup files to discover whether or not a shell is restricted. +.TP 8 +.B shift_verbose +If set, the +.B shift +builtin prints an error message when the shift count exceeds the +number of positional parameters. +.TP 8 +.B sourcepath +If set, the +\fBsource\fP (\fB.\fP) builtin uses the value of +.SM +.B PATH +to find the directory containing the file supplied as an argument. +This option is enabled by default. +.TP 8 +.B xpg_echo +If set, the \fBecho\fP builtin expands backslash-escape sequences +by default. +.RE +.TP +\fBsuspend\fP [\fB\-f\fP] +Suspend the execution of this shell until it receives a +.SM +.B SIGCONT +signal. The +.B \-f +option says not to complain if this is +a login shell; just suspend anyway. The return status is 0 unless +the shell is a login shell and +.B \-f +is not supplied, or if job control is not enabled. +.TP +\fBtest\fP \fIexpr\fP +.PD 0 +.TP +\fB[\fP \fIexpr\fP \fB]\fP +Return a status of 0 or 1 depending on +the evaluation of the conditional expression +.IR expr . +Each operator and operand must be a separate argument. +Expressions are composed of the primaries described above under +.SM +.BR "CONDITIONAL EXPRESSIONS" . +\fBtest\fP does not accept any options, nor does it accept and ignore +an argument of \fB\-\-\fP as signifying the end of options. +.if t .sp 0.5 +.if n .sp 1 +Expressions may be combined using the following operators, listed +in decreasing order of precedence. +.RS +.PD 0 +.TP +.B ! \fIexpr\fP +True if +.I expr +is false. +.TP +.B ( \fIexpr\fP ) +Returns the value of \fIexpr\fP. +This may be used to override the normal precedence of operators. +.TP +\fIexpr1\fP \-\fBa\fP \fIexpr2\fP +True if both +.I expr1 +and +.I expr2 +are true. +.TP +\fIexpr1\fP \-\fBo\fP \fIexpr2\fP +True if either +.I expr1 +or +.I expr2 +is true. +.PD +.PP +\fBtest\fP and \fB[\fP evaluate conditional +expressions using a set of rules based on the number of arguments. +.if t .sp 0.5 +.if n .sp 1 +.PD 0 +.TP +0 arguments +The expression is false. +.TP +1 argument +The expression is true if and only if the argument is not null. +.TP +2 arguments +If the first argument is \fB!\fP, the expression is true if and +only if the second argument is null. +If the first argument is one of the unary conditional operators listed above +under +.SM +.BR "CONDITIONAL EXPRESSIONS" , +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. +.TP +3 arguments +If the second argument is one of the binary conditional operators listed above +under +.SM +.BR "CONDITIONAL EXPRESSIONS" , +the result of the expression is the result of the binary test using +the first and third arguments as operands. +If the first argument is \fB!\fP, the value is the negation of +the two-argument test using the second and third arguments. +If the first argument is exactly \fB(\fP and the third argument is +exactly \fB)\fP, the result is the one-argument test of the second +argument. +Otherwise, the expression is false. +The \fB\-a\fP and \fB\-o\fP operators are considered binary operators +in this case. +.TP +4 arguments +If the first argument is \fB!\fP, the result is the negation of +the three-argument expression composed of the remaining arguments. +Otherwise, the expression is parsed and evaluated according to +precedence using the rules listed above. +.TP +5 or more arguments +The expression is parsed and evaluated according to precedence +using the rules listed above. +.RE +.PD +.TP +.B times +Print the accumulated user and system times for the shell and +for processes run from the shell. The return status is 0. +.TP +\fBtrap\fP [\fB\-lp\fP] [[\fIarg\fP] \fIsigspec\fP ...] +The command +.I arg +is to be read and executed when the shell receives +signal(s) +.IR sigspec . +If +.I arg +is absent (and there is a single \fIsigspec\fP) or +.BR \- , +each specified signal is +reset to its original disposition (the value it had +upon entrance to the shell). +If +.I arg +is the null string the signal specified by each +.I sigspec +is ignored by the shell and by the commands it invokes. +If +.I arg +is not present and +.B \-p +has been supplied, then the trap commands associated with each +.I sigspec +are displayed. +If no arguments are supplied or if only +.B \-p +is given, +.B trap +prints the list of commands associated with each signal. +The +.B \-l +option causes the shell to print a list of signal names and +their corresponding numbers. +Each +.I sigspec +is either +a signal name defined in <\fIsignal.h\fP>, or a signal number. +Signal names are case insensitive and the SIG prefix is optional. +If a +.I sigspec +is +.SM +.B EXIT +(0) the command +.I arg +is executed on exit from the shell. +If a +.I sigspec +is +.SM +.BR DEBUG , +the command +.I arg +is executed before every \fIsimple command\fP, \fIfor\fP command, +\fIcase\fP command, \fIselect\fP command, every arithmetic \fIfor\fP +command, and before the first command executes in a shell function (see +.SM +.B SHELL GRAMMAR +above). +Refer to the description of the \fBextdebug\fP option to the +\fBshopt\fP builtin for details of its effect on the \fBDEBUG\fP trap. +If a +.I sigspec +is +.SM +.BR ERR , +the command +.I arg +is executed whenever a simple command has a non\-zero exit status, +subject to the following conditions. +The +.SM +.B ERR +trap is not executed if the failed +command is part of the command list immediately following a +.B while +or +.B until +keyword, +part of the test in an +.I if +statement, part of a +.B && +or +.B \(bv\(bv +list, or if the command's return value is +being inverted via +.BR ! . +These are the same conditions obeyed by the \fBerrexit\fP option. +If a +.I sigspec +is +.SM +.BR RETURN , +the command +.I arg +is executed each time a shell function or a script executed with the +\fB.\fP or \fBsource\fP builtins finishes executing. +Signals ignored upon entry to the shell cannot be trapped or reset. +Trapped signals are reset to their original values in a child +process when it is created. +The return status is false if any +.I sigspec +is invalid; otherwise +.B trap +returns true. +.TP +\fBtype\fP [\fB\-aftpP\fP] \fIname\fP [\fIname\fP ...] +With no options, +indicate how each +.I name +would be interpreted if used as a command name. +If the +.B \-t +option is used, +.B type +prints a string which is one of +.IR alias , +.IR keyword , +.IR function , +.IR builtin , +or +.I file +if +.I name +is an alias, shell reserved word, function, builtin, or disk file, +respectively. +If the +.I name +is not found, then nothing is printed, and an exit status of false +is returned. +If the +.B \-p +option is used, +.B type +either returns the name of the disk file +that would be executed if +.I name +were specified as a command name, +or nothing if +.if t \f(CWtype -t name\fP +.if n ``type -t name'' +would not return +.IR file . +The +.B \-P +option forces a +.SM +.B PATH +search for each \fIname\fP, even if +.if t \f(CWtype -t name\fP +.if n ``type -t name'' +would not return +.IR file . +If a command is hashed, +.B \-p +and +.B \-P +print the hashed value, not necessarily the file that appears +first in +.SM +.BR PATH . +If the +.B \-a +option is used, +.B type +prints all of the places that contain +an executable named +.IR name . +This includes aliases and functions, +if and only if the +.B \-p +option is not also used. +The table of hashed commands is not consulted +when using +.BR \-a . +The +.B \-f +option suppresses shell function lookup, as with the \fBcommand\fP builtin. +.B type +returns true if any of the arguments are found, false if +none are found. +.TP +\fBulimit\fP [\fB\-SHacdefilmnpqrstuvx\fP [\fIlimit\fP]] +Provides control over the resources available to the shell and to +processes started by it, on systems that allow such control. +The \fB\-H\fP and \fB\-S\fP options specify that the hard or soft limit is +set for the given resource. A hard limit cannot be increased once it +is set; a soft limit may be increased up to the value of the hard limit. +If neither \fB\-H\fP nor \fB\-S\fP is specified, both the soft and hard +limits are set. +The value of +.I limit +can be a number in the unit specified for the resource +or one of the special values +.BR hard , +.BR soft , +or +.BR unlimited , +which stand for the current hard limit, the current soft limit, and +no limit, respectively. +If +.I limit +is omitted, the current value of the soft limit of the resource is +printed, unless the \fB\-H\fP option is given. When more than one +resource is specified, the limit name and unit are printed before the value. +Other options are interpreted as follows: +.RS +.PD 0 +.TP +.B \-a +All current limits are reported +.TP +.B \-c +The maximum size of core files created +.TP +.B \-d +The maximum size of a process's data segment +.TP +.B \-e +The maximum scheduling priority ("nice") +.TP +.B \-f +The maximum size of files created by the shell +.TP +.B \-i +The maximum number of pending signals +.TP +.B \-l +The maximum size that may be locked into memory +.TP +.B \-m +The maximum resident set size +.TP +.B \-n +The maximum number of open file descriptors (most systems do not +allow this value to be set) +.TP +.B \-p +The pipe size in 512-byte blocks (this may not be set) +.TP +.B \-q +The maximum number of bytes in POSIX message queues +.TP +.B \-r +The maximum real-time scheduling priority +.TP +.B \-s +The maximum stack size +.TP +.B \-t +The maximum amount of cpu time in seconds +.TP +.B \-u +The maximum number of processes available to a single user +.TP +.B \-v +The maximum amount of virtual memory available to the shell +.TP +.B \-x +The maximum number of file locks +.PD +.PP +If +.I limit +is given, it is the new value of the specified resource (the +.B \-a +option is display only). +If no option is given, then +.B \-f +is assumed. Values are in 1024-byte increments, except for +.BR \-t , +which is in seconds, +.BR \-p , +which is in units of 512-byte blocks, +and +.B \-n +and +.BR \-u , +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. +.RE +.TP +\fBumask\fP [\fB\-p\fP] [\fB\-S\fP] [\fImode\fP] +The user file-creation mask is set to +.IR mode . +If +.I mode +begins with a digit, it +is interpreted as an octal number; otherwise +it is interpreted as a symbolic mode mask similar +to that accepted by +.IR chmod (1). +If +.I mode +is omitted, the current value of the mask is printed. +The +.B \-S +option causes the mask to be printed in symbolic form; the +default output is an octal number. +If the +.B \-p +option is supplied, and +.I mode +is omitted, the output is in a form that may be reused as input. +The return status is 0 if the mode was successfully changed or if +no \fImode\fP argument was supplied, and false otherwise. +.TP +\fBunalias\fP [\-\fBa\fP] [\fIname\fP ...] +Remove each \fIname\fP from the list of defined aliases. If +.B \-a +is supplied, all alias definitions are removed. The return +value is true unless a supplied +.I name +is not a defined alias. +.TP +\fBunset\fP [\-\fBfv\fP] [\fIname\fP ...] +For each +.IR name , +remove the corresponding variable or function. +If no options are supplied, or the +.B \-v +option is given, each +.I name +refers to a shell variable. +Read-only variables may not be unset. +If +.B \-f +is specified, each +.I name +refers to a shell function, and the function definition +is removed. +Each unset variable or function is removed from the environment +passed to subsequent commands. +If any of +.SM +.BR RANDOM , +.SM +.BR SECONDS , +.SM +.BR LINENO , +.SM +.BR HISTCMD , +.SM +.BR FUNCNAME , +.SM +.BR GROUPS , +or +.SM +.B DIRSTACK +are unset, they lose their special properties, even if they are +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. +Each +.I 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 +.I n +is not given, all currently active child processes +are waited for, and the return status is zero. 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 +process or job waited for. +.\" bash_builtins +.if \n(zZ=1 .ig zZ +.SH "RESTRICTED SHELL" +.\" rbash.1 +.zY +.PP +If +.B bash +is started with the name +.BR rbash , +or the +.B \-r +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 +.B bash +with the exception that the following are disallowed or not performed: +.IP \(bu +changing directories with \fBcd\fP +.IP \(bu +setting or unsetting the values of +.BR SHELL , +.BR PATH , +.BR ENV , +or +.B BASH_ENV +.IP \(bu +specifying command names containing +.B / +.IP \(bu +specifying a file name containing a +.B / +as an argument to the +.B . +builtin command +.IP \(bu +Specifying a filename containing a slash as an argument to the +.B \-p +option to the +.B hash +builtin command +.IP \(bu +importing function definitions from the shell environment at startup +.IP \(bu +parsing the value of \fBSHELLOPTS\fP from the shell environment at startup +.IP \(bu +redirecting output using the >, >|, <>, >&, &>, and >> redirection operators +.IP \(bu +using the +.B exec +builtin command to replace the shell with another command +.IP \(bu +adding or deleting builtin commands with the +.B \-f +and +.B \-d +options to the +.B enable +builtin command +.IP \(bu +Using the \fBenable\fP builtin command to enable disabled shell builtins +.IP \(bu +specifying the +.B \-p +option to the +.B command +builtin command +.IP \(bu +turning off restricted mode with +\fBset +r\fP or \fBset +o restricted\fP. +.PP +These restrictions are enforced after any startup files are read. +.PP +.ie \n(zY=1 When a command that is found to be a shell script is executed, +.el \{ When a command that is found to be a shell script is executed +(see +.SM +.B "COMMAND EXECUTION" +above), +\} +.B rbash +turns off any restrictions in the shell spawned to execute the +script. +.\" end of rbash.1 +.if \n(zY=1 .ig zY +.SH "SEE ALSO" +.PD 0 +.TP +\fIBash Reference Manual\fP, Brian Fox and Chet Ramey +.TP +\fIThe Gnu Readline Library\fP, Brian Fox and Chet Ramey +.TP +\fIThe Gnu History Library\fP, Brian Fox and Chet Ramey +.TP +\fIPortable Operating System Interface (POSIX) Part 2: Shell and Utilities\fP, IEEE +.TP +\fIsh\fP(1), \fIksh\fP(1), \fIcsh\fP(1) +.TP +\fIemacs\fP(1), \fIvi\fP(1) +.TP +\fIreadline\fP(3) +.PD +.SH FILES +.PD 0 +.TP +.FN /bin/bash +The \fBbash\fP executable +.TP +.FN /etc/profile +The systemwide initialization file, executed for login shells +.TP +.FN ~/.bash_profile +The personal initialization file, executed for login shells +.TP +.FN ~/.bashrc +The individual per-interactive-shell startup file +.TP +.FN ~/.bash_logout +The individual login shell cleanup file, executed when a login shell exits +.TP +.FN ~/.inputrc +Individual \fIreadline\fP initialization file +.PD +.SH AUTHORS +Brian Fox, Free Software Foundation +.br +bfox@gnu.org +.PP +Chet Ramey, Case Western Reserve University +.br +chet@po.cwru.edu +.SH BUG REPORTS +If you find a bug in +.B bash, +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 +.BR bash . +The latest version is always available from +\fIftp://ftp.gnu.org/pub/bash/\fP. +.PP +Once you have determined that a bug actually exists, use the +.I bashbug +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 \fIbug-bash@gnu.org\fP or posted to the Usenet +newsgroup +.BR gnu.bash.bug . +.PP +ALL bug reports should include: +.PP +.PD 0 +.TP 20 +The version number of \fBbash\fR +.TP +The hardware and operating system +.TP +The compiler used to compile +.TP +A description of the bug behaviour +.TP +A short script or `recipe' which exercises the bug +.PD +.PP +.I bashbug +inserts the first three items automatically into the template +it provides for filing a bug report. +.PP +Comments and bug reports concerning +this manual page should be directed to +.IR chet@po.cwru.edu . +.SH BUGS +.PP +It's too big and too slow. +.PP +There are some subtle differences between +.B bash +and traditional versions of +.BR sh , +mostly because of the +.SM +.B POSIX +specification. +.PP +Aliases are confusing in some uses. +.PP +Shell builtin commands and functions are not stoppable/restartable. +.PP +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 unit. +.PP +Commands inside of \fB$(\fP...\fB)\fP command substitution are not +parsed until substitution is attempted. This will delay error +reporting until some time after the command is entered. For example, +unmatched parentheses, even inside shell comments, will result in +error messages while the construct is being read. +.PP +Array variables may not (yet) be exported. +.zZ +.zY diff --git a/bash-20060316/doc/bash.1.orig b/bash-20060316/doc/bash.1.orig new file mode 100644 index 000000000..828ec966b --- /dev/null +++ b/bash-20060316/doc/bash.1.orig @@ -0,0 +1,8583 @@ +.\" +.\" MAN PAGE COMMENTS to +.\" +.\" Chet Ramey +.\" Information Network Services +.\" Case Western Reserve University +.\" chet@po.CWRU.Edu +.\" +.\" Last Change: Mon Apr 14 17:57:24 EDT 2003 +.\" +.\" bash_builtins, strip all but Built-Ins section +.if \n(zZ=1 .ig zZ +.if \n(zY=1 .ig zY +.TH BASH 1 "2003 April 14" "GNU Bash-3.0" +.\" +.\" There's some problem with having a `@' +.\" in a tagged paragraph with the BSD man macros. +.\" It has to do with `@' appearing in the }1 macro. +.\" This is a problem on 4.3 BSD and Ultrix, but Sun +.\" appears to have fixed it. +.\" If you're seeing the characters +.\" `@u-3p' appearing before the lines reading +.\" `possible-hostname-completions +.\" and `complete-hostname' down in READLINE, +.\" then uncomment this redefinition. +.\" +.de }1 +.ds ]X \&\\*(]B\\ +.nr )E 0 +.if !"\\$1"" .nr )I \\$1n +.}f +.ll \\n(LLu +.in \\n()Ru+\\n(INu+\\n()Iu +.ti \\n(INu +.ie !\\n()Iu+\\n()Ru-\w\\*(]Xu-3p \{\\*(]X +.br\} +.el \\*(]X\h|\\n()Iu+\\n()Ru\c +.}f +.. +.\" +.\" File Name macro. This used to be `.PN', for Path Name, +.\" but Sun doesn't seem to like that very much. +.\" +.de FN +\fI\|\\$1\|\fP +.. +.SH NAME +bash \- GNU Bourne-Again SHell +.SH SYNOPSIS +.B bash +[options] +[file] +.SH COPYRIGHT +.if n Bash is Copyright (C) 1989-2002 by the Free Software Foundation, Inc. +.if t Bash is Copyright \(co 1989-2002 by the Free Software Foundation, Inc. +.SH DESCRIPTION +.B Bash +is an \fBsh\fR-compatible command language interpreter that +executes commands read from the standard input or from a file. +.B Bash +also incorporates useful features from the \fIKorn\fP and \fIC\fP +shells (\fBksh\fP and \fBcsh\fP). +.PP +.B Bash +is intended to be a conformant implementation of the IEEE +POSIX Shell and Tools specification (IEEE Working Group 1003\.2). +.SH OPTIONS +In addition to the single-character shell options documented in the +description of the \fBset\fR builtin command, \fBbash\fR +interprets the following options when it is invoked: +.PP +.PD 0 +.TP 10 +.BI \-c "\| string\^" +If the +.B \-c +option is present, then commands are read from +.IR string . +If there are arguments after the +.IR string , +they are assigned to the positional parameters, starting with +.BR $0 . +.TP +.B \-i +If the +.B \-i +option is present, the shell is +.IR interactive . +.TP +.B \-l +Make +.B bash +act as if it had been invoked as a login shell (see +.SM +.B INVOCATION +below). +.TP +.B \-r +If the +.B \-r +option is present, the shell becomes +.I restricted +(see +.SM +.B "RESTRICTED SHELL" +below). +.TP +.B \-s +If the +.B \-s +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. +.TP +.B \-D +A list of all double-quoted strings preceded by \fB$\fP +is printed on the standard ouput. +These are the strings that +are subject to language translation when the current locale +is not \fBC\fP or \fBPOSIX\fP. +This implies the \fB\-n\fP option; no commands will be executed. +.TP +.B [\-+]O [\fIshopt_option\fP] +\fIshopt_option\fP is one of the shell options accepted by the +\fBshopt\fP builtin (see +.SM +.B SHELL BUILTIN COMMANDS +below). +If \fIshopt_option\fP is present, \fB\-O\fP sets the value of that option; +\fB+O\fP unsets it. +If \fIshopt_option\fP is not supplied, the names and values of the shell +options accepted by \fBshopt\fP are printed on the standard output. +If the invocation option is \fB+O\fP, the output is displayed in a format +that may be reused as input. +.TP +.B \-\- +A +.B \-\- +signals the end of options and disables further option processing. +Any arguments after the +.B \-\- +are treated as filenames and arguments. An argument of +.B \- +is equivalent to \fB\-\-\fP. +.PD +.PP +.B Bash +also interprets a number of multi-character options. +These options must appear on the command line before the +single-character options to be recognized. +.PP +.PD 0 +.TP +.B \-\-debugger +Arrange for the debugger profile to be executed before the shell +starts. Turns on extended debugging mode (see the description of the +.B extdebug +option to the +.B shopt +builtin below) and shell function tracing (see the description of the +\fB\-o functrace\fP option to the +.B set +builtin below). +.TP +.B \-\-dump\-po\-strings +Equivalent to \fB\-D\fP, but the output is in the GNU \fIgettext\fP +\fBpo\fP (portable object) file format. +.TP +.B \-\-dump\-strings +Equivalent to \fB\-D\fP. +.TP +.B \-\-help +Display a usage message on standard output and exit successfully. +.TP +\fB\-\-init\-file\fP \fIfile\fP +.PD 0 +.TP +\fB\-\-rcfile\fP \fIfile\fP +.PD +Execute commands from +.I file +instead of the standard personal initialization file +.I ~/.bashrc +if the shell is interactive (see +.SM +.B INVOCATION +below). +.TP +.B \-\-login +Equivalent to \fB\-l\fP. +.TP +.B \-\-noediting +Do not use the GNU +.B readline +library to read command lines when the shell is interactive. +.TP +.B \-\-noprofile +Do not read either the system-wide startup file +.FN /etc/profile +or any of the personal initialization files +.IR ~/.bash_profile , +.IR ~/.bash_login , +or +.IR ~/.profile . +By default, +.B bash +reads these files when it is invoked as a login shell (see +.SM +.B INVOCATION +below). +.TP +.B \-\-norc +Do not read and execute the personal initialization file +.I ~/.bashrc +if the shell is interactive. +This option is on by default if the shell is invoked as +.BR sh . +.TP +.B \-\-posix +Change the behavior of \fBbash\fP where the default operation differs +from the POSIX 1003.2 standard to match the standard (\fIposix mode\fP). +.TP +.B \-\-restricted +The shell becomes restricted (see +.SM +.B "RESTRICTED SHELL" +below). +.TP +.B \-\-verbose +Equivalent to \fB\-v\fP. +.TP +.B \-\-version +Show version information for this instance of +.B bash +on the standard output and exit successfully. +.PD +.SH ARGUMENTS +If arguments remain after option processing, and neither the +.B \-c +nor the +.B \-s +option has been supplied, the first argument is assumed to +be the name of a file containing shell commands. +If +.B bash +is invoked in this fashion, +.B $0 +is set to the name of the file, and the positional parameters +are set to the remaining arguments. +.B Bash +reads and executes commands from this file, then exits. +\fBBash\fP's exit status is the exit status 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 +.SM +.B PATH +for the script. +.SH INVOCATION +A \fIlogin shell\fP is one whose first character of argument zero is a +.BR \- , +or one started with the +.B \-\-login +option. +.PP +An \fIinteractive\fP shell is one started without non-option arguments +and without the +.B \-c +option +whose standard input and output are +both connected to terminals (as determined by +.IR isatty (3)), +or one started with the +.B \-i +option. +.SM +.B PS1 +is set and +.B $\- +includes +.B i +if +.B bash +is interactive, +allowing a shell script or a startup file to test this state. +.PP +The following paragraphs describe how +.B bash +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 +.B "Tilde Expansion" +in the +.SM +.B EXPANSION +section. +.PP +When +.B bash +is invoked as an interactive login shell, or as a non-interactive shell +with the \fB\-\-login\fP option, it first reads and +executes commands from the file \fI/etc/profile\fP, if that +file exists. +After reading that file, it looks for \fI~/.bash_profile\fP, +\fI~/.bash_login\fP, and \fI~/.profile\fP, in that order, and reads +and executes commands from the first one that exists and is readable. +The +.B \-\-noprofile +option may be used when the shell is started to inhibit this behavior. +.PP +When a login shell exits, +.B bash +reads and executes commands from the file \fI~/.bash_logout\fP, if it +exists. +.PP +When an interactive shell that is not a login shell is started, +.B bash +reads and executes commands from \fI~/.bashrc\fP, if that file exists. +This may be inhibited by using the +.B \-\-norc +option. +The \fB\-\-rcfile\fP \fIfile\fP option will force +.B bash +to read and execute commands from \fIfile\fP instead of \fI~/.bashrc\fP. +.PP +When +.B bash +is started non-interactively, to run a shell script, for example, it +looks for the variable +.SM +.B BASH_ENV +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. +.B Bash +behaves as if the following command were executed: +.sp .5 +.RS +.if t \f(CWif [ \-n "$BASH_ENV" ]; then . "$BASH_ENV"; fi\fP +.if n if [ \-n "$BASH_ENV" ]; then . "$BASH_ENV"; fi +.RE +.sp .5 +but the value of the +.SM +.B PATH +variable is not used to search for the file name. +.PP +If +.B bash +is invoked with the name +.BR sh , +it tries to mimic the startup behavior of historical versions of +.B sh +as closely as possible, +while conforming to the POSIX standard as well. +When invoked as an interactive login shell, or a non-interactive +shell with the \fB\-\-login\fP option, it first attempts to +read and execute commands from +.I /etc/profile +and +.IR ~/.profile , +in that order. +The +.B \-\-noprofile +option may be used to inhibit this behavior. +When invoked as an interactive shell with the name +.BR sh , +.B bash +looks for the variable +.SM +.BR ENV , +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 +.B sh +does not attempt to read and execute commands from any other startup +files, the +.B \-\-rcfile +option has no effect. +A non-interactive shell invoked with the name +.B sh +does not attempt to read any other startup files. +When invoked as +.BR sh , +.B bash +enters +.I posix +mode after the startup files are read. +.PP +When +.B bash +is started in +.I posix +mode, as with the +.B \-\-posix +command line option, it follows the POSIX standard for startup files. +In this mode, interactive shells expand the +.SM +.B ENV +variable and commands are read and executed from the file +whose name is the expanded value. +No other startup files are read. +.PP +.B Bash +attempts to determine when it is being run by the remote shell +daemon, usually \fIrshd\fP. +If +.B bash +determines it is being run by \fIrshd\fP, it reads and executes +commands from \fI~/.bashrc\fP, if that file exists and is readable. +It will not do this if invoked as \fBsh\fP. +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 +or allow them to be specified. +.PP +If the shell is started with the effective user (group) id not equal to the +real user (group) id, and the \fB\-p\fP option is not supplied, no startup +files are read, shell functions are not inherited from the environment, the +.SM +.B SHELLOPTS +variable, if it appears in the environment, is ignored, +and the effective user id is set to the real user id. +If the \fB\-p\fP option is supplied at invocation, the startup behavior is +the same, but the effective user id is not reset. +.SH DEFINITIONS +.PP +The following definitions are used throughout the rest of this +document. +.PD 0 +.TP +.B blank +A space or tab. +.TP +.B word +A sequence of characters considered as a single unit by the shell. +Also known as a +.BR token . +.TP +.B name +A +.I word +consisting only of alphanumeric characters and underscores, and +beginning with an alphabetic character or an underscore. Also +referred to as an +.BR identifier . +.TP +.B metacharacter +A character that, when unquoted, separates words. One of the following: +.br +.RS +.PP +.if t \fB| & ; ( ) < > space tab\fP +.if n \fB| & ; ( ) < > space tab\fP +.RE +.PP +.TP +.B control operator +A \fItoken\fP that performs a control function. It is one of the following +symbols: +.RS +.PP +.if t \fB\(bv\(bv & && ; ;; ( ) | \fP +.if n \fB|| & && ; ;; ( ) | \fP +.RE +.PD +.SH "RESERVED WORDS" +\fIReserved words\fP 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 +.SM +.B SHELL GRAMMAR +below) or the third word of a +.B case +or +.B for +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 t .RE +.RE +.SH "SHELL GRAMMAR" +.SS Simple Commands +.PP +A \fIsimple command\fP is a sequence of optional variable assignments +followed by \fBblank\fP-separated words and redirections, and +terminated by a \fIcontrol operator\fP. The first word +specifies the command to be executed, and is passed as argument zero. +The remaining words are passed as arguments to the invoked command. +.PP +The return value of a \fIsimple command\fP is its exit status, or +128+\fIn\^\fP if the command is terminated by signal +.IR n . +.SS Pipelines +.PP +A \fIpipeline\fP is a sequence of one or more commands separated by +the character +.BR | . +The format for a pipeline is: +.RS +.PP +[\fBtime\fP [\fB\-p\fP]] [ ! ] \fIcommand\fP [ \fB|\fP \fIcommand2\fP ... ] +.RE +.PP +The standard output of +.I command +is connected via a pipe to the standard input of +.IR command2 . +This connection is performed before any redirections specified by the +command (see +.SM +.B REDIRECTION +below). +.PP +If the reserved word +.B ! +precedes a pipeline, the exit status of that +pipeline is the logical NOT of the exit status of the last command. +Otherwise, the status of the pipeline is the exit status of the last +command. +The shell waits for all commands in the pipeline to +terminate before returning a value. +.PP +If the +.B time +reserved word precedes a pipeline, the elapsed as well as user and +system time consumed by its execution are reported when the pipeline +terminates. +The \fB\-p\fP option changes the output format to that specified by POSIX. +The +.SM +.B TIMEFORMAT +variable may be set to a format string that specifies how the timing +information should be displayed; see the description of +.SM +.B TIMEFORMAT +under +.B "Shell Variables" +below. +.PP +Each command in a pipeline is executed as a separate process (i.e., in a +subshell). +.SS Lists +.PP +A \fIlist\fP is a sequence of one or more pipelines separated by one +of the operators +.BR ; , +.BR & , +.BR && , +or +.BR \(bv\(bv , +and optionally terminated by one of +.BR ; , +.BR & , +or +.BR . +.PP +Of these list operators, +.B && +and +.B \(bv\(bv +have equal precedence, followed by +.B ; +and +.BR &, +which have equal precedence. +.PP +A sequence of one or more newlines may appear in a \fIlist\fP instead +of a semicolon to delimit commands. +.PP +If a command is terminated by the control operator +.BR & , +the shell executes the command in the \fIbackground\fP +in a subshell. The shell does not wait for the command to +finish, and the return status is 0. Commands separated by a +.B ; +are executed sequentially; the shell waits for each +command to terminate in turn. The return status is the +exit status of the last command executed. +.PP +The control operators +.B && +and +.B \(bv\(bv +denote AND lists and OR lists, respectively. +An AND list has the form +.RS +.PP +\fIcommand1\fP \fB&&\fP \fIcommand2\fP +.RE +.PP +.I command2 +is executed if, and only if, +.I command1 +returns an exit status of zero. +.PP +An OR list has the form +.RS +.PP +\fIcommand1\fP \fB\(bv\(bv\fP \fIcommand2\fP +.PP +.RE +.PP +.I command2 +is executed if and only if +.I command1 +returns a non-zero exit status. The return status of +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: +.TP +(\fIlist\fP) +\fIlist\fP is executed in a subshell. Variable assignments and builtin +commands that affect the shell's environment do not remain in effect +after the command completes. The return status is the exit status of +\fIlist\fP. +.TP +{ \fIlist\fP; } +\fIlist\fP is simply executed in the current shell environment. +\fIlist\fP must be terminated with a newline or semicolon. +This is known as a \fIgroup command\fP. +The return status is the exit status of +\fIlist\fP. +Note that unlike the metacharacters \fB(\fP and \fB)\fP, \fB{\fP and +\fB}\fP are \fIreserved words\fP 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 \fIlist\fP by whitespace. +.TP +((\fIexpression\fP)) +The \fIexpression\fP is evaluated according to the rules described +below under +.SM +.BR "ARITHMETIC EVALUATION" . +If the value of the expression is non-zero, the return status is 0; +otherwise the return status is 1. This is exactly equivalent to +\fBlet "\fIexpression\fP"\fR. +.TP +\fB[[\fP \fIexpression\fP \fB]]\fP +Return a status of 0 or 1 depending on the evaluation of +the conditional expression \fIexpression\fP. +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 +substitution, and quote removal are performed. +Conditional operators such as \fB\-f\fP must be unquoted to be recognized +as primaries. +.if t .sp 0.5 +.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. +The return value is 0 if the string matches or does not match +the pattern, respectively, and 1 otherwise. +Any part of the pattern may be quoted to force it to be matched as a +string. +.if t .sp 0.5 +.if n .sp 1 +Expressions may be combined using the following operators, listed +in decreasing order of precedence: +.if t .sp 0.5 +.if n .sp 1 +.RS +.PD 0 +.TP +.B ( \fIexpression\fP ) +Returns the value of \fIexpression\fP. +This may be used to override the normal precedence of operators. +.TP +.B ! \fIexpression\fP +True if +.I expression +is false. +.TP +\fIexpression1\fP \fB&&\fP \fIexpression2\fP +True if both +.I expression1 +and +.I expression2 +are true. +.TP +.if t \fIexpression1\fP \fB\(bv\(bv\fP \fIexpression2\fP +.if n \fIexpression1\fP \fB||\fP \fIexpression2\fP +True if either +.I expression1 +or +.I expression2 +is true. +.PD +.LP +The \fB&&\fP and +.if t \fB\(bv\(bv\fP +.if n \fB||\fP +operators do not evaluate \fIexpression2\fP if the value of +\fIexpression1\fP is sufficient to determine the return value of +the entire conditional expression. +.RE +.TP +\fBfor\fP \fIname\fP [ \fBin\fP \fIword\fP ] ; \fBdo\fP \fIlist\fP ; \fBdone\fP +The list of words following \fBin\fP is expanded, generating a list +of items. +The variable \fIname\fP is set to each element of this list +in turn, and \fIlist\fP is executed each time. +If the \fBin\fP \fIword\fP is omitted, the \fBfor\fP command executes +\fIlist\fP once for each positional parameter that is set (see +.SM +.B PARAMETERS +below). +The return status is the exit status of the last command that executes. +If the expansion of the items following \fBin\fP results in an empty +list, no commands are executed, and the return status is 0. +.TP +\fBfor\fP (( \fIexpr1\fP ; \fIexpr2\fP ; \fIexpr3\fP )) ; \fBdo\fP \fIlist\fP ; \fBdone\fP +First, the arithmetic expression \fIexpr1\fP is evaluated according +to the rules described below under +.SM +.BR "ARITHMETIC EVALUATION" . +The arithmetic expression \fIexpr2\fP is then evaluated repeatedly +until it evaluates to zero. +Each time \fIexpr2\fP evaluates to a non-zero value, \fIlist\fP is +executed and the arithmetic expression \fIexpr3\fP 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 \fIlist\fP +that is executed, or false if any of the expressions is invalid. +.TP +\fBselect\fP \fIname\fP [ \fBin\fP \fIword\fP ] ; \fBdo\fP \fIlist\fP ; \fBdone\fP +The list of words following \fBin\fP 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 \fBin\fP +\fIword\fP is omitted, the positional parameters are printed (see +.SM +.B PARAMETERS +below). The +.B PS3 +prompt is then displayed and a line read from the standard input. +If the line consists of a number corresponding to one of +the displayed words, then the value of +.I name +is set to that word. If the line is empty, the words and prompt +are displayed again. If EOF is read, the command completes. Any +other value read causes +.I name +to be set to null. The line read is saved in the variable +.BR REPLY . +The +.I list +is executed after each selection until a +.B break +command is executed. +The exit status of +.B select +is the exit status of the last command executed in +.IR list , +or zero if no commands were executed. +.TP +\fBcase\fP \fIword\fP \fBin\fP [ [(] \fIpattern\fP [ \fB|\fP \fIpattern\fP ] \ +... ) \fIlist\fP ;; ] ... \fBesac\fP +A \fBcase\fP command first expands \fIword\fP, and tries to match +it against each \fIpattern\fP in turn, using the same matching rules +as for pathname expansion (see +.B Pathname Expansion +below). When a match is found, the +corresponding \fIlist\fP is executed. After the first match, no +subsequent matches are attempted. 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 \ +[ \fBelif\fP \fIlist\fP; \fBthen\fP \fIlist\fP; ] ... \ +[ \fBelse\fP \fIlist\fP; ] \fBfi\fP +The +.B if +.I list +is executed. If its exit status is zero, the +\fBthen\fP \fIlist\fP is executed. Otherwise, each \fBelif\fP +\fIlist\fP is executed in turn, and if its exit status is zero, +the corresponding \fBthen\fP \fIlist\fP is executed and the +command completes. Otherwise, the \fBelse\fP \fIlist\fP is +executed, if present. The exit status is the exit status of the +last command executed, or zero if no condition tested true. +.TP +\fBwhile\fP \fIlist\fP; \fBdo\fP \fIlist\fP; \fBdone\fP +.PD 0 +.TP +\fBuntil\fP \fIlist\fP; \fBdo\fP \fIlist\fP; \fBdone\fP +.PD +The \fBwhile\fP command continuously executes the \fBdo\fP +\fIlist\fP as long as the last command in \fIlist\fP returns +an exit status of zero. The \fBuntil\fP command is identical +to the \fBwhile\fP command, except that the test is negated; +the +.B do +.I list +is executed as long as the last command in +.I list +returns a non-zero exit status. +The exit status of the \fBwhile\fP and \fBuntil\fP commands +is the exit status +of the last \fBdo\fP \fIlist\fP command executed, or zero if +none was executed. +.TP +[ \fBfunction\fP ] \fIname\fP () { \fIlist\fP; } +This defines a function named \fIname\fP. The \fIbody\fP of the +function is the +.I list +of commands between { and }. This list +is executed whenever \fIname\fP is specified as the +name of a simple command. The exit status of a function is +the exit status of the last command executed in the body. (See +.SM +.B FUNCTIONS +below.) +.SH COMMENTS +In a non-interactive shell, or an interactive shell in which the +.B interactive_comments +option to the +.B shopt +builtin is enabled (see +.SM +.B "SHELL BUILTIN COMMANDS" +below), a word beginning with +.B # +causes that word and all remaining characters on that line to +be ignored. An interactive shell without the +.B interactive_comments +option enabled does not allow comments. The +.B interactive_comments +option is on by default in interactive shells. +.SH QUOTING +\fIQuoting\fP 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. +.PP +Each of the \fImetacharacters\fP listed above under +.SM +.B DEFINITIONS +has special meaning to the shell and must be quoted if it is to +represent itself. +.PP +When the command history expansion facilities are being used, the +\fIhistory expansion\fP character, usually \fB!\fP, must be quoted +to prevent history expansion. +.PP +There are three quoting mechanisms: the +.IR "escape character" , +single quotes, and double quotes. +.PP +A non-quoted backslash (\fB\e\fP) is the +.IR "escape character" . +It preserves the literal value of the next character that follows, +with the exception of . If a \fB\e\fP pair +appears, and the backslash is not itself quoted, the \fB\e\fP +is treated as a line continuation (that is, it is removed from the +input stream and effectively ignored). +.PP +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. +.PP +Enclosing characters in double quotes preserves the literal value +of all characters within the quotes, with the exception of +.BR $ , +.BR ` , +and +.BR \e . +The characters +.B $ +and +.B ` +retain their special meaning within double quotes. The backslash +retains its special meaning only when followed by one of the following +characters: +.BR $ , +.BR ` , +\^\fB"\fP\^, +.BR \e , +or +.BR . +A double quote may be quoted within double quotes by preceding it with +a backslash. +When command history is being used, the double quote may not be used to +quote the history expansion character. +.PP +The special parameters +.B * +and +.B @ +have special meaning when in double +quotes (see +.SM +.B PARAMETERS +below). +.PP +Words of the form \fB$\fP'\fIstring\fP' are treated specially. The +word expands to \fIstring\fP, with backslash-escaped characters replaced +as specifed by the ANSI C standard. Backslash escape sequences, if +present, are decoded as follows: +.RS +.PD 0 +.TP +.B \ea +alert (bell) +.TP +.B \eb +backspace +.TP +.B \ee +an escape character +.TP +.B \ef +form feed +.TP +.B \en +new line +.TP +.B \er +carriage return +.TP +.B \et +horizontal tab +.TP +.B \ev +vertical tab +.TP +.B \e\e +backslash +.TP +.B \e' +single quote +.TP +.B \e\fInnn\fP +the eight-bit character whose value is the octal value \fInnn\fP +(one to three digits) +.TP +.B \ex\fIHH\fP +the eight-bit character whose value is the hexadecimal value \fIHH\fP +(one or two hex digits) +.TP +.B \ec\fIx\fP +a control-\fIx\fP character +.PD +.RE +.LP +The expanded result is single-quoted, as if the dollar sign had +not been present. +.PP +A double-quoted string preceded by a dollar sign (\fB$\fP) will cause +the string to be translated according to the current locale. +If the current locale is \fBC\fP or \fBPOSIX\fP, the dollar sign +is ignored. +If the string is translated and replaced, the replacement is +double-quoted. +.SH PARAMETERS +A +.I parameter +is an entity that stores values. +It can be a +.IR name , +a number, or one of the special characters listed below under +.BR "Special Parameters" . +A +.I variable +is a parameter denoted by a +.IR name . +A variable has a \fIvalue\fP and zero or more \fIattributes\fP. +Attributes are assigned using the +.B declare +builtin command (see +.B declare +below in +.SM +.BR "SHELL BUILTIN COMMANDS" ). +.PP +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 +the +.B unset +builtin command (see +.SM +.B SHELL BUILTIN COMMANDS +below). +.PP +A +.I variable +may be assigned to by a statement of the form +.RS +.PP +\fIname\fP=[\fIvalue\fP] +.RE +.PP +If +.I value +is not given, the variable is assigned the null string. All +.I values +undergo tilde expansion, parameter and variable expansion, +command substitution, arithmetic expansion, and quote +removal (see +.SM +.B EXPANSION +below). If the variable has its +.B integer +attribute set, then +.I value +is evaluated as an arithmetic expression even if the $((...)) expansion is +not used (see +.B "Arithmetic Expansion" +below). +Word splitting is not performed, with the exception +of \fB"$@"\fP as explained below under +.BR "Special Parameters" . +Pathname expansion is not performed. +Assignment statements may also appear as arguments to the +.BR declare , +.BR typeset , +.BR export , +.BR readonly , +and +.B local +builtin commands. +.SS Positional Parameters +.PP +A +.I positional parameter +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 +.B set +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 +.SM +.B FUNCTIONS +below). +.PP +When a positional parameter consisting of more than a single +digit is expanded, it must be enclosed in braces (see +.SM +.B EXPANSION +below). +.SS Special Parameters +.PP +The shell treats several parameters specially. These parameters may +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 +with the value of each parameter separated by the first character +of the +.SM +.B IFS +special variable. That is, "\fB$*\fP" is equivalent +to "\fB$1\fP\fIc\fP\fB$2\fP\fIc\fP\fB...\fP", where +.I c +is the first character of the value of the +.SM +.B IFS +variable. If +.SM +.B IFS +is unset, the parameters are separated by spaces. +If +.SM +.B IFS +is null, the parameters are joined without intervening separators. +.TP +.B @ +Expands to the positional parameters, starting from one. When the +expansion occurs within double quotes, each parameter expands to a +separate word. That is, "\fB$@\fP" is equivalent to +"\fB$1\fP" "\fB$2\fP" ... +When there are no positional parameters, "\fB$@\fP" and +.B $@ +expand to nothing (i.e., they are removed). +.TP +.B # +Expands to the number of positional parameters in decimal. +.TP +.B ? +Expands to the status of the most recently executed foreground +pipeline. +.TP +.B \- +Expands to the current option flags as specified upon invocation, +by the +.B set +builtin command, or those set by the shell itself +(such as the +.B \-i +option). +.TP +.B $ +Expands to the process ID of the shell. In a () subshell, it +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. +.TP +.B 0 +Expands to the name of the shell or shell script. This is set at +shell initialization. If +.B bash +is invoked with a file of commands, +.B $0 +is set to the name of that file. If +.B bash +is started with the +.B \-c +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 +.BR bash , +as given by argument zero. +.TP +.B _ +At shell startup, set to the absolute file name of the shell or shell +script being executed as passed in the argument list. +Subsequently, expands to the last argument to the previous command, +after expansion. +Also set to the full file name of each command executed and placed in +the environment exported to that command. +When checking mail, this parameter holds the name of the mail file +currently being checked. +.PD +.SS Shell Variables +.PP +The following variables are set by the shell: +.PP +.PD 0 +.TP +.B BASH +Expands to the full file name used to invoke this instance of +.BR bash . +.TP +.B BASH_ARGC +An array variable whose values are the number of parameters in each +frame of the current bash execution call stack. The number of +parameters to the current subroutine (shell function or script executed +with \fB.\fP or \fBsource\fP) is at the top of the stack. When a +subroutine is executed, the number of parameters passed is pushed onto +\fBBASH_ARGC\fP. +.TP +.B BASH_ARGV +An array variable containing all of the parameters in the current bash +execution call stack. The final parameter of the last subroutine call +is at the top of the stack; the first parameter of the initial call is +at the bottom. When a subroutine is executed, the parameters supplied +are pushed onto \fBBASH_ARGV\fP. +.TP +.B BASH_COMMAND +The command currently being executed or about to be executed, unless the +shell is executing a command as the result of a trap, +in which case it is the command executing at the time of the trap. +.TP +.B BASH_EXECUTION_STRING +The command argument to the \fB\-c\fP invocation option. +.TP +.B BASH_LINENO +An array variable whose members are the line numbers in source files +corresponding to each member of @var{FUNCNAME}. +\fB${BASH_LINENO[\fP\fI$i\fP\fB]}\fP is the line number in the source +file where \fB${FUNCNAME[\fP\fI$i + 1\fP\fB]}\fP was called. +The corresponding source file name is \fB${BASH_SOURCE[\fP\fI$i + 1\fP\fB]}\fB. +Use \fBLINENO\fP to obtain the current line number. +.TP +.B BASH_SOURCE +An array variable whose members are the source filenames corresponding +to the elements in the \fBFUNCNAME\fP array variable. +.TP +.B BASH_SUBSHELL +Incremented by one each time a subshell or subshell environment is spawned. +The initial value is 0. +.TP +.B BASH_VERSINFO +A readonly array variable whose members hold version information for +this instance of +.BR bash . +The values assigned to the array members are as follows: +.sp .5 +.RS +.PD 0 +.TP 24 +.B BASH_VERSINFO[\fR0\fP] +The major version number (the \fIrelease\fP). +.TP +.B BASH_VERSINFO[\fR1\fP] +The minor version number (the \fIversion\fP). +.TP +.B BASH_VERSINFO[\fR2\fP] +The patch level. +.TP +.B BASH_VERSINFO[\fR3\fP] +The build version. +.TP +.B BASH_VERSINFO[\fR4\fP] +The release status (e.g., \fIbeta1\fP). +.TP +.B BASH_VERSINFO[\fR5\fP] +The value of \fBMACHTYPE\fP. +.PD +.RE +.TP +.B BASH_VERSION +Expands to a string describing the version of this instance of +.BR bash . +.TP +.B COMP_CWORD +An index into \fB${COMP_WORDS}\fP of the word containing the current +cursor position. +This variable is available only in shell functions invoked by the +programmable completion facilities (see \fBProgrammable Completion\fP +below). +.TP +.B COMP_LINE +The current command line. +This variable is available only in shell functions and external +commands invoked by the +programmable completion facilities (see \fBProgrammable Completion\fP +below). +.TP +.B COMP_POINT +The index of the current cursor position relative to the beginning 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 \fB${#COMP_LINE}\fP. +This variable is available only in shell functions and external +commands invoked by the +programmable completion facilities (see \fBProgrammable Completion\fP +below). +.TP +.B COMP_WORDBREAKS +The set of characters that the Readline library treats as word +separators when performing word completion. +If +.SM +.B COMP_WORDBREAKS +is unset, it loses its special properties, even if it is +subsequently reset. +.TP +.B COMP_WORDS +An array variable (see \fBArrays\fP below) consisting of the individual +words in the current command line. +This variable is available only in shell functions invoked by the +programmable completion facilities (see \fBProgrammable Completion\fP +below). +.TP +.B DIRSTACK +An array variable (see +.B Arrays +below) containing the current contents of the directory stack. +Directories appear in the stack in the order they are displayed by the +.B dirs +builtin. +Assigning to members of this array variable may be used to modify +directories already in the stack, but the +.B pushd +and +.B popd +builtins must be used to add and remove directories. +Assignment to this variable will not change the current directory. +If +.SM +.B DIRSTACK +is unset, it loses its special properties, even if it is +subsequently reset. +.TP +.B EUID +Expands to the effective user ID of the current user, initialized at +shell startup. This variable is readonly. +.TP +.B FUNCNAME +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 bottom-most element is "main". +This variable exists only when a shell function is executing. +Assignments to +.SM +.B FUNCNAME +have no effect and return an error status. +If +.SM +.B FUNCNAME +is unset, it loses its special properties, even if it is +subsequently reset. +.TP +.B GROUPS +An array variable containing the list of groups of which the current +user is a member. +Assignments to +.SM +.B GROUPS +have no effect and return an error status. +If +.SM +.B GROUPS +is unset, it loses its special properties, even if it is +subsequently reset. +.TP +.B HISTCMD +The history number, or index in the history list, of the current +command. +If +.SM +.B HISTCMD +is unset, it loses its special properties, even if it is +subsequently reset. +.TP +.B HOSTNAME +Automatically set to the name of the current host. +.TP +.B HOSTTYPE +Automatically set to a string that uniquely +describes the type of machine on which +.B bash +is executing. +The default is system-dependent. +.TP +.B LINENO +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 +.SM +.B LINENO +is unset, it loses its special properties, even if it is +subsequently reset. +.TP +.B MACHTYPE +Automatically set to a string that fully describes the system +type on which +.B bash +is executing, in the standard GNU \fIcpu-company-system\fP format. +The default is system-dependent. +.TP +.B OLDPWD +The previous working directory as set by the +.B cd +command. +.TP +.B OPTARG +The value of the last option argument processed by the +.B getopts +builtin command (see +.SM +.B SHELL BUILTIN COMMANDS +below). +.TP +.B OPTIND +The index of the next argument to be processed by the +.B getopts +builtin command (see +.SM +.B SHELL BUILTIN COMMANDS +below). +.TP +.B OSTYPE +Automatically set to a string that +describes the operating system on which +.B bash +is executing. +The default is system-dependent. +.TP +.B PIPESTATUS +An array variable (see +.B Arrays +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). +.TP +.B PPID +The process ID of the shell's parent. This variable is readonly. +.TP +.B PWD +The current working directory as set by the +.B cd +command. +.TP +.B RANDOM +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 +.SM +.BR RANDOM . +If +.SM +.B RANDOM +is unset, it loses its special properties, even if it is +subsequently reset. +.TP +.B REPLY +Set to the line of input read by the +.B read +builtin command when no arguments are supplied. +.TP +.B SECONDS +Each time this parameter is +referenced, the number of seconds since shell invocation is returned. If a +value is assigned to +.SM +.BR SECONDS , +the value returned upon subsequent +references is +the number of seconds since the assignment plus the value assigned. +If +.SM +.B SECONDS +is unset, it loses its special properties, even if it is +subsequently reset. +.TP +.B SHELLOPTS +A colon-separated list of enabled shell options. Each word in +the list is a valid argument for the +.B \-o +option to the +.B set +builtin command (see +.SM +.B "SHELL BUILTIN COMMANDS" +below). The options appearing in +.SM +.B SHELLOPTS +are those reported as +.I on +by \fBset \-o\fP. +If this variable is in the environment when +.B bash +starts up, each shell option in the list will be enabled before +reading any startup files. +This variable is read-only. +.TP +.B SHLVL +Incremented by one each time an instance of +.B bash +is started. +.TP +.B UID +Expands to the user ID of the current user, initialized at shell startup. +This variable is readonly. +.PD +.PP +The following variables are used by the shell. In some cases, +.B bash +assigns a default value to a variable; these cases are noted +below. +.PP +.PD 0 +.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 +initialize the shell, as in +.IR ~/.bashrc . +The value of +.SM +.B BASH_ENV +is subjected to parameter expansion, command substitution, and arithmetic +expansion before being interpreted as a file name. +.SM +.B PATH +is not used to search for the resultant file name. +.TP +.B CDPATH +The search path for the +.B cd +command. +This is a colon-separated list of directories in which the shell looks +for destination directories specified by the +.B cd +command. +A sample value is +.if t \f(CW".:~:/usr"\fP. +.if n ".:~:/usr". +.TP +.B COLUMNS +Used by the \fBselect\fP builtin command to determine the terminal width +when printing selection lists. Automatically set upon receipt of a SIGWINCH. +.TP +.B COMPREPLY +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). +.TP +.B EMACS +If \fBbash\fP finds this variable in the environment when the shell starts +with value +.if t \f(CWt\fP, +.if n "t", +it assumes that the shell is running in an emacs shell buffer and disables +line editing. +.TP +.B FCEDIT +The default editor for the +.B fc +builtin command. +.TP +.B FIGNORE +A colon-separated list of suffixes to ignore when performing +filename completion (see +.SM +.B READLINE +below). +A filename whose suffix matches one of the entries in +.SM +.B FIGNORE +is excluded from the list of matched filenames. +A sample value is +.if t \f(CW".o:~"\fP. +.if n ".o:~". +.TP +.B GLOBIGNORE +A colon-separated list of patterns defining the set of filenames to +be ignored by pathname expansion. +If a filename matched by a pathname expansion pattern also matches one +of the patterns in +.SM +.BR GLOBIGNORE , +it is removed from the list of matches. +.TP +.B HISTCONTROL +A colon-separated list of values controlling how commands are saved on +the history list. +If the list of values includes +.IR ignorespace , +lines which begin with a +.B space +character are not saved in the history list. +A value of +.I ignoredups +causes lines matching the previous history entry to not be saved. +A value of +.I ignoreboth +is shorthand for \fIignorespace\fP and \fIignoredups\fP. +A value of +.IR erasedups +causes all previous lines matching the current line to be removed from +the history list before that line is saved. +Any value not in the above list is ignored. +If \fBHISTCONTROL\fP is unset, or does not include a valid value, +all lines read by the shell parser are saved on the history list, +subject to the value of +.BR HISTIGNORE . +The second and subsequent lines of a multi-line compound command are +not tested, and are added to the history regardless of the value of +.BR HISTCONTROL . +.TP +.B HISTFILE +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. +.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, 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. +.TP +.B HISTIGNORE +A colon-separated list of patterns used to decide which command lines +should be saved on the history list. Each pattern is anchored at the +beginning of the line and must match the complete line (no implicit +`\fB*\fP' is appended). Each pattern is tested against the line +after the checks specified by +.B HISTCONTROL +are applied. +In addition to the normal shell pattern matching characters, `\fB&\fP' +matches the previous history line. `\fB&\fP' may be escaped using a +backslash; the backslash is removed before attempting a match. +The second and subsequent lines of a multi-line compound command are +not tested, and are added to the history regardless of the value of +.BR HISTIGNORE . +.TP +.B HISTSIZE +The number of commands to remember in the command history (see +.SM +.B HISTORY +below). The default value is 500. +.TP +.B HOME +The home directory of the current user; the default argument for the +\fBcd\fP builtin command. +The value of this variable is also used when performing tilde expansion. +.TP +.B HOSTFILE +Contains the name of a file in the same format as +.FN /etc/hosts +that should be read when the shell needs to complete a +hostname. +The list of possible hostname completions may be changed while the +shell is running; +the next time hostname completion is attempted after the +value is changed, +.B bash +adds the contents of the new file to the existing list. +If +.SM +.B HOSTFILE +is set, but has no value, \fBbash\fP attempts to read +.FN /etc/hosts +to obtain the list of possible hostname completions. +When +.SM +.B HOSTFILE +is unset, the hostname list is cleared. +.TP +.B IFS +The +.I Internal Field Separator +that is used +for word splitting after expansion and to +split lines into words with the +.B read +builtin command. The default value is +``''. +.TP +.B IGNOREEOF +Controls the +action of an interactive shell on receipt of an +.SM +.B EOF +character as the sole input. If set, the value is the number of +consecutive +.SM +.B EOF +characters which must be +typed as the first characters on an input line before +.B bash +exits. If the variable exists but does not have a numeric value, or +has no value, the default value is 10. If it does not exist, +.SM +.B EOF +signifies the end of input to the shell. +.TP +.B INPUTRC +The filename for the +.B readline +startup file, overriding the default of +.FN ~/.inputrc +(see +.SM +.B READLINE +below). +.TP +.B LANG +Used to determine the locale category for any category not specifically +selected with a variable starting with \fBLC_\fP. +.TP +.B LC_ALL +This variable overrides the value of \fBLANG\fP and any other +\fBLC_\fP variable specifying a locale category. +.TP +.B LC_COLLATE +This variable determines the collation order used when sorting the +results of pathname expansion, and determines the behavior of range +expressions, equivalence classes, and collating sequences within +pathname expansion and pattern matching. +.TP +.B LC_CTYPE +This variable determines the interpretation of characters and the +behavior of character classes within pathname expansion and pattern +matching. +.TP +.B LC_MESSAGES +This variable determines the locale used to translate double-quoted +strings preceded by a \fB$\fP. +.TP +.B LC_NUMERIC +This variable determines the locale category used for number formatting. +.TP +.B LINES +Used by the \fBselect\fP builtin command to determine the column length +for printing selection lists. Automatically set upon receipt of a SIGWINCH. +.TP +.B MAIL +If this parameter is set to a file name and the +.SM +.B MAILPATH +variable is not set, +.B bash +informs the user of the arrival of mail in the specified file. +.TP +.B MAILCHECK +Specifies how +often (in seconds) +.B bash +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. +.TP +.B MAILPATH +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, \fB$_\fP expands to the name of +the current mailfile. +Example: +.RS +.PP +\fBMAILPATH\fP='/var/mail/bfox?"You have mail":~/shell\-mail?"$_ has mail!"' +.PP +.B Bash +supplies a default value for this variable, but the location of the user +mail files that it uses is system dependent (e.g., /var/mail/\fB$USER\fP). +.RE +.TP +.B OPTERR +If set to the value 1, +.B bash +displays error messages generated by the +.B getopts +builtin command (see +.SM +.B SHELL BUILTIN COMMANDS +below). +.SM +.B OPTERR +is initialized to 1 each time the shell is invoked or a shell +script is executed. +.TP +.B PATH +The search path for commands. It +is a colon-separated list of directories in which +the shell looks for commands (see +.SM +.B COMMAND EXECUTION +below). +A zero-length (null) directory name in the value of \fBPATH\fP 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 +.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:.''. +.TP +.B POSIXLY_CORRECT +If this variable is in the environment when \fBbash\fP starts, the shell +enters \fIposix mode\fP before reading the startup files, as if the +.B \-\-posix +invocation option had been supplied. If it is set while the shell is +running, \fBbash\fP enables \fIposix mode\fP, as if the command +.if t \f(CWset -o posix\fP +.if n \fIset -o posix\fP +had been executed. +.TP +.B PROMPT_COMMAND +If set, the value is executed as a command prior to issuing each primary +prompt. +.TP +.B PS1 +The value of this parameter is expanded (see +.SM +.B PROMPTING +below) and used as the primary prompt string. The default value is +``\fB\es\-\ev\e$ \fP''. +.TP +.B PS2 +The value of this parameter is expanded as with +.B PS1 +and used as the secondary prompt string. The default is +``\fB> \fP''. +.TP +.B PS3 +The value of this parameter is used as the prompt for the +.B select +command (see +.SM +.B SHELL GRAMMAR +above). +.TP +.B PS4 +The value of this parameter is expanded as with +.B PS1 +and the value is printed before each command +.B bash +displays during an execution trace. The first character of +.SM +.B PS4 +is replicated multiple times, as necessary, to indicate multiple +levels of indirection. The default is ``\fB+ \fP''. +.TP +.B TIMEFORMAT +The value of this parameter is used as a format string specifying +how the timing information for pipelines prefixed with the +.B time +reserved word should be displayed. +The \fB%\fP character introduces an escape sequence that is +expanded to a time value or other information. +The escape sequences and their meanings are as follows; the +braces denote optional portions. +.sp .5 +.RS +.PD 0 +.TP 10 +.B %% +A literal \fB%\fP. +.TP +.B %[\fIp\fP][l]R +The elapsed time in seconds. +.TP +.B %[\fIp\fP][l]U +The number of CPU seconds spent in user mode. +.TP +.B %[\fIp\fP][l]S +The number of CPU seconds spent in system mode. +.TP +.B %P +The CPU percentage, computed as (%U + %S) / %R. +.PD +.RE +.IP +The optional \fIp\fP is a digit specifying the \fIprecision\fP, +the number of fractional digits after a decimal point. +A value of 0 causes no decimal point or fraction to be output. +At most three places after the decimal point may be specified; +values of \fIp\fP greater than 3 are changed to 3. +If \fIp\fP is not specified, the value 3 is used. +.IP +The optional \fBl\fP specifies a longer format, including +minutes, of the form \fIMM\fPm\fISS\fP.\fIFF\fPs. +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$'\enreal\et%3lR\enuser\et%3lU\ensys\t%3lS'\fP. +If the value is null, no timing information is displayed. +A trailing newline is added when the format string is displayed. +.TP +.B TMOUT +If set to a value greater than zero, \fBTMOUT\fP is treated as the +default timeout for the \fBread\fP builtin. +The \fBselect\fP command terminates if input does not arrive +after \fBTMOUT\fP 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. +.B Bash +terminates after waiting for that number of seconds if input does +not arrive. +.TP +.B auto_resume +This variable controls how the shell interacts with the user and +job control. If this variable is set, single word simple +commands without redirections are treated as candidates for resumption +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 +.I name +of a stopped job, in this context, is the command line used to +start it. +If set to the value +.IR exact , +the string supplied must match the name of a stopped job exactly; +if set to +.IR substring , +the string supplied needs to match a substring of the name of a +stopped job. The +.I substring +value provides functionality analogous to the +.B %? +job identifier (see +.SM +.B JOB CONTROL +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 +.B % +job identifier. +.TP +.B histchars +The two or three characters which control history expansion +and tokenization (see +.SM +.B HISTORY EXPANSION +below). The first character is the \fIhistory expansion\fP character, +the character which signals the start of a history +expansion, normally `\fB!\fP'. +The second character is the \fIquick substitution\fP +character, which is used as shorthand for re-running the previous +command entered, substituting one string for another in the command. +The default is `\fB^\fP'. +The optional third character is the character +which indicates that the remainder of the line is a comment when found +as the first character of a word, normally `\fB#\fP'. The history +comment character causes history substitution to be skipped for the +remaining words on the line. It does not necessarily cause the shell +parser to treat the rest of the line as a comment. +.PD +.SS Arrays +.B Bash +provides one-dimensional array variables. Any variable may be used as +an array; the +.B declare +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 contiguously. Arrays are indexed using +integers and are zero-based. +.PP +An 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 +greater than or equal to zero. To explicitly declare an array, use +.B declare \-a \fIname\fP +(see +.SM +.B SHELL BUILTIN COMMANDS +below). +.B declare \-a \fIname\fP[\fIsubscript\fP] +is also accepted; the \fIsubscript\fP is ignored. Attributes may be +specified for an array variable using the +.B declare +and +.B readonly +builtins. Each attribute applies to all members of an array. +.PP +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. Only +\fIstring\fP is required. 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. +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. +.PP +Any element of an array may be referenced using +${\fIname\fP[\fIsubscript\fP]}. The braces are required to avoid +conflicts with pathname expansion. If +\fIsubscript\fP is \fB@\fP or \fB*\fP, the word expands to +all members of \fIname\fP. These subscripts differ only when the +word appears within double quotes. If the word is double-quoted, +${\fIname\fP[*]} expands to a single +word with the value of each array member separated by the first +character of the +.SM +.B IFS +special variable, and ${\fIname\fP[@]} expands each element of +\fIname\fP to a separate word. When there are no array members, +${\fIname\fP[@]} expands to nothing. This is analogous to the expansion +of the special parameters \fB*\fP and \fB@\fP (see +.B Special Parameters +above). ${#\fIname\fP[\fIsubscript\fP]} expands to the length of +${\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 element zero. +.PP +The +.B unset +builtin is used to destroy arrays. \fBunset\fP \fIname\fP[\fIsubscript\fP] +destroys the array element at index \fIsubscript\fP. +\fBunset\fP \fIname\fP, where \fIname\fP is an array, or +\fBunset\fP \fIname\fP[\fIsubscript\fP], where +\fIsubscript\fP is \fB*\fP or \fB@\fP, removes the entire array. +.PP +The +.BR declare , +.BR local , +and +.B readonly +builtins each accept a +.B \-a +option to specify an array. The +.B read +builtin accepts a +.B \-a +option to assign a list of words read from the standard input +to an array. The +.B set +and +.B declare +builtins display array values in a way that allows them to be +reused as assignments. +.SH EXPANSION +Expansion is performed on the command line after it has been split into +words. There are seven kinds of expansion performed: +.IR "brace expansion" , +.IR "tilde expansion" , +.IR "parameter and variable expansion" , +.IR "command substitution" , +.IR "arithmetic expansion" , +.IR "word splitting" , +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. +.PP +On systems that can support it, there is an additional expansion +available: \fIprocess substitution\fP. +.PP +Only brace expansion, word splitting, and pathname expansion +can change the number of words of the expansion; other expansions +expand a single word to a single word. +The only exceptions to this are the expansions of +"\fB$@\fP" and "\fB${\fP\fIname\fP\fB[@]}\fP" +as explained above (see +.SM +.BR PARAMETERS ). +.SS Brace Expansion +.PP +.I "Brace expansion" +is a mechanism by which arbitrary strings +may be generated. This mechanism is similar to +\fIpathname expansion\fP, but the filenames generated +need not exist. Patterns to be brace expanded take +the form of an optional +.IR preamble , +followed by either a series of comma-separated strings or +a sequence expression between a pair of braces, followed by +an optional +.IR postscript . +The preamble is prefixed to each string contained +within the braces, and the postscript is then appended +to each resulting string, expanding left to right. +.PP +Brace expansions may be nested. The results of each expanded +string are not sorted; left to right order is preserved. +For example, a\fB{\fPd,c,b\fB}\fPe expands into `ade ace abe'. +.PP +A sequence expression takes the form \fB{\fP\fIx\fP\fB..\fP\fIy\fP\fB}\fP, +where \fIx\fP and \fIy\fP are either integers or single characters. +When integers are supplied, the expression expands to each number between +\fIx\fP and \fIy\fP, inclusive. +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. +.PP +Brace expansion is performed before any other expansions, +and any characters special to other expansions are preserved +in the result. It is strictly textual. +.B Bash +does not apply any syntactic interpretation to the context of the +expansion or the text between the braces. +.PP +A correctly-formed brace expansion must contain unquoted opening +and closing braces, and at least one unquoted comma or a valid +sequence expression. +Any incorrectly formed brace expansion is left unchanged. +A \fB{\fP or \fB,\fP may be quoted with a backslash to prevent its +being considered part of a brace expression. +To avoid conflicts with parameter expansion, the string \fB${\fP +is not considered eligible for brace expansion. +.PP +This construct is typically used as shorthand when the common +prefix of the strings to be generated is longer than in the +above example: +.RS +.PP +mkdir /usr/local/src/bash/{old,new,dist,bugs} +.RE +or +.RS +chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}} +.RE +.PP +Brace expansion introduces a slight incompatibility with +historical versions of +.BR sh . +.B sh +does not treat opening or closing braces specially when they +appear as part of a word, and preserves them in the output. +.B Bash +removes braces from words as a consequence of brace +expansion. For example, a word entered to +.B sh +as \fIfile{1,2}\fP +appears identically in the output. The same word is +output as +.I file1 file2 +after expansion by +.BR bash . +If strict compatibility with +.B sh +is desired, start +.B bash +with the +.B +B +option or disable brace expansion with the +.B +B +option to the +.B set +command (see +.SM +.B SHELL BUILTIN COMMANDS +below). +.SS Tilde Expansion +.PP +If a word begins with an unquoted tilde character (`\fB~\fP'), all of +the characters preceding the first unquoted slash (or all characters, +if there is no unquoted slash) are considered a \fItilde-prefix\fP. +If none of the characters in the tilde-prefix are quoted, the +characters in the tilde-prefix following the tilde are treated as a +possible \fIlogin name\fP. +If this login name is the null string, the tilde is replaced with the +value of the shell parameter +.SM +.BR HOME . +If +.SM +.B HOME +is unset, the home directory of the user executing the shell is +substituted instead. +Otherwise, the tilde-prefix is replaced with the home directory +associated with the specified login name. +.PP +If the tilde-prefix is a `~+', the value of the shell variable +.SM +.B PWD +replaces the tilde-prefix. +If the tilde-prefix is a `~\-', the value of the shell variable +.SM +.BR OLDPWD , +if it is set, is substituted. +If the characters following the tilde in the tilde-prefix consist +of a number \fIN\fP, optionally prefixed +by a `+' or a `\-', the tilde-prefix is replaced with the corresponding +element from the directory stack, as it would be displayed by the +.B dirs +builtin invoked with the tilde-prefix as an argument. +If the characters following the tilde in the tilde-prefix consist of a +number without a leading `+' or `\-', `+' is assumed. +.PP +If the login name is invalid, or the tilde expansion fails, the word +is unchanged. +.PP +Each variable assignment is checked for unquoted tilde-prefixes immediately +following a +.B : +or +.BR = . +In these cases, tilde expansion is also performed. +Consequently, one may use file names with tildes in assignments to +.SM +.BR PATH , +.SM +.BR MAILPATH , +and +.SM +.BR CDPATH , +and the shell assigns the expanded value. +.SS Parameter Expansion +.PP +The `\fB$\fP' character introduces parameter expansion, +command substitution, or arithmetic expansion. The parameter name +or symbol to be expanded may be enclosed in braces, which +are optional but serve to protect the variable to be expanded from +characters immediately following it which could be +interpreted as part of the name. +.PP +When braces are used, the matching ending brace is the first `\fB}\fP' +not escaped by a backslash or within a quoted string, and not within an +embedded arithmetic expansion, command substitution, or paramter +expansion. +.PP +.PD 0 +.TP +${\fIparameter\fP} +The value of \fIparameter\fP is substituted. The braces are required +when +.I parameter +is a positional parameter with more than one digit, +or when +.I parameter +is followed by a character which is not to be +interpreted as part of its name. +.PD +.PP +If the first character of \fIparameter\fP is an exclamation point, +a level of variable indirection is introduced. +\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 +than the value of \fIparameter\fP itself. +This is known as \fIindirect expansion\fP. +The exceptions to this are the expansions of ${!\fIprefix\fP*} and +${\fB!\fP\fIname\fP[\fI@\fP]} described below. +The exclamation point must immediately follow the left brace in order to +introduce indirection. +.PP +In each of the cases below, \fIword\fP is subject to tilde expansion, +parameter expansion, command substitution, and arithmetic expansion. +When not performing substring expansion, \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 +.PD 0 +.TP +${\fIparameter\fP\fB:\-\fP\fIword\fP} +\fBUse Default Values\fP. If +.I parameter +is unset or null, the expansion of +.I word +is substituted. Otherwise, the value of +.I parameter +is substituted. +.TP +${\fIparameter\fP\fB:=\fP\fIword\fP} +\fBAssign Default Values\fP. +If +.I parameter +is unset or null, the expansion of +.I word +is assigned to +.IR parameter . +The value of +.I parameter +is then substituted. Positional parameters and special parameters may +not be assigned to in this way. +.TP +${\fIparameter\fP\fB:?\fP\fIword\fP} +\fBDisplay Error if Null or Unset\fP. +If +.I parameter +is null or unset, the expansion of \fIword\fP (or a message to that effect +if +.I word +is not present) is written to the standard error and the shell, if it +is not interactive, exits. Otherwise, the value of \fIparameter\fP is +substituted. +.TP +${\fIparameter\fP\fB:+\fP\fIword\fP} +\fBUse Alternate Value\fP. +If +.I parameter +is null or unset, nothing is substituted, otherwise the expansion of +.I word +is substituted. +.TP +${\fIparameter\fP\fB:\fP\fIoffset\fP} +.PD 0 +.TP +${\fIparameter\fP\fB:\fP\fIoffset\fP\fB:\fP\fIlength\fP} +.PD +\fBSubstring Expansion.\fP +Expands to up to \fIlength\fP characters 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. +\fIlength\fP and \fIoffset\fP are arithmetic expressions (see +.SM +.B +ARITHMETIC EVALUATION +below). +\fIlength\fP must evaluate to a number greater than or equal to zero. +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 \fIparameter\fP is \fB@\fP, the result is \fIlength\fP positional +parameters beginning at \fIoffset\fP. +If \fIparameter\fP is an array name indexed by @ or *, +the result is the \fIlength\fP +members of the array beginning with ${\fIparameter\fP[\fIoffset\fP]}. +Substring indexing is zero-based unless the positional parameters +are used, in which case the indexing starts at 1. +.TP +${\fB!\fP\fIprefix\fP\fB*\fP} +.PD 0 +.TP +${\fB!\fP\fIprefix\fP\fB@\fP} +.PD +Expands to the names of variables whose names begin with \fIprefix\fP, +separated by the first character of the +.SM +.B IFS +special variable. +.TP +${\fB!\fP\fIname\fP[\fI@\fP]} +.PD 0 +.TP +${\fB!\fP\fIname\fP[\fI*\fP]} +.PD +If \fIname\fP is an array variable, expands to the list of array indices +(keys) assigned in \fIname\fP. +If \fIname\fP is not an array, expands to 0 if \fIname\fP is set and null +otherwise. +When \fI@\fP is used and the expansion appears within double quotes, each +key expands to a separate word. +.TP +${\fB#\fP\fIparameter\fP} +The length in characters of the value of \fIparameter\fP is substituted. +If +.I parameter +is +.B * +or +.BR @ , +the value substituted is the number of positional parameters. +If +.I parameter +is an array name subscripted by +.B * +or +.BR @ , +the value substituted is the number of elements in the array. +.TP +${\fIparameter\fP\fB#\fP\fIword\fP} +.PD 0 +.TP +${\fIparameter\fP\fB##\fP\fIword\fP} +.PD +The +.I word +is expanded to produce a pattern just as in pathname +expansion. If the pattern matches the beginning of +the value of +.IR parameter , +then the result of the expansion is the expanded value of +.I parameter +with the shortest matching pattern (the ``\fB#\fP'' case) or the +longest matching pattern (the ``\fB##\fP'' case) deleted. +If +.I parameter +is +.B @ +or +.BR * , +the pattern removal operation is applied to each positional +parameter in turn, and the expansion is the resultant list. +If +.I parameter +is an array variable subscripted with +.B @ +or +.BR * , +the pattern removal operation is applied to each member of the +array in turn, and the expansion is the resultant list. +.TP +${\fIparameter\fP\fB%\fP\fIword\fP} +.PD 0 +.TP +${\fIparameter\fP\fB%%\fP\fIword\fP} +.PD +The \fIword\fP is expanded to produce a pattern just as in +pathname expansion. +If the pattern matches a trailing portion of the expanded value of +.IR parameter , +then the result of the expansion is the expanded value of +.I parameter +with the shortest matching pattern (the ``\fB%\fP'' case) or the +longest matching pattern (the ``\fB%%\fP'' case) deleted. +If +.I parameter +is +.B @ +or +.BR * , +the pattern removal operation is applied to each positional +parameter in turn, and the expansion is the resultant list. +If +.I parameter +is an array variable subscripted with +.B @ +or +.BR * , +the pattern removal operation is applied to each member of the +array in turn, and the expansion is the resultant list. +.TP +${\fIparameter\fP\fB/\fP\fIpattern\fP\fB/\fP\fIstring\fP} +.PD 0 +.TP +${\fIparameter\fP\fB//\fP\fIpattern\fP\fB/\fP\fIstring\fP} +.PD +The \fIpattern\fP is expanded to produce a pattern just as in +pathname expansion. +\fIParameter\fP is expanded and the longest match of \fIpattern\fP +against its value is replaced with \fIstring\fP. +In the first form, only the first match is replaced. +The second form causes all matches of \fIpattern\fP to be +replaced with \fIstring\fP. +If \fIpattern\fP begins with \fB#\fP, it must match at the beginning +of the expanded value of \fIparameter\fP. +If \fIpattern\fP begins with \fB%\fP, it must match at the end +of the expanded value of \fIparameter\fP. +If \fIstring\fP is null, matches of \fIpattern\fP are deleted +and the \fB/\fP following \fIpattern\fP may be omitted. +If +.I parameter +is +.B @ +or +.BR * , +the substitution operation is applied to each positional +parameter in turn, and the expansion is the resultant list. +If +.I parameter +is an array variable subscripted with +.B @ +or +.BR * , +the substitution operation is applied to each member of the +array in turn, and the expansion is the resultant list. +.SS Command Substitution +.PP +\fICommand substitution\fP allows the output of a command to replace +the command name. There are two forms: +.PP +.RS +.PP +\fB$(\fP\fIcommand\fP\|\fB)\fP +.RE +or +.RS +\fB`\fP\fIcommand\fP\fB`\fP +.RE +.PP +.B Bash +performs the expansion by executing \fIcommand\fP and +replacing the command substitution with the standard output of the +command, with any trailing newlines deleted. +Embedded newlines are not deleted, but they may be removed during +word splitting. +The command substitution \fB$(cat \fIfile\fP)\fR can be replaced by +the equivalent but faster \fB$(< \fIfile\fP)\fR. +.PP +When the old-style backquote form of substitution is used, +backslash retains its literal meaning except when followed by +.BR $ , +.BR ` , +or +.BR \e . +The first backquote not preceded by a backslash terminates the +command substitution. +When using the $(\^\fIcommand\fP\|) form, all characters between the +parentheses make up the command; none are treated specially. +.PP +Command substitutions may be nested. To nest when using the backquoted form, +escape the inner backquotes with backslashes. +.PP +If the substitution appears within double quotes, word splitting and +pathname expansion are not performed on the results. +.SS Arithmetic Expansion +.PP +Arithmetic expansion allows the evaluation of an arithmetic expression +and the substitution of the result. The format for arithmetic expansion is: +.RS +.PP +\fB$((\fP\fIexpression\fP\fB))\fP +.RE +.PP +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. +Arithmetic expansions may be nested. +.PP +The evaluation is performed according to the rules listed below under +.SM +.BR "ARITHMETIC EVALUATION" . +If +.I expression +is invalid, +.B bash +prints a message indicating failure and no substitution occurs. +.SS Process Substitution +.PP +\fIProcess substitution\fP is supported on systems that support named +pipes (\fIFIFOs\fP) or the \fB/dev/fd\fP method of naming open files. +It takes the form of +\fB<(\fP\fIlist\^\fP\fB)\fP +or +\fB>(\fP\fIlist\^\fP\fB)\fP. +The process \fIlist\fP is run with its input or output connected to a +\fIFIFO\fP or some file in \fB/dev/fd\fP. The name of this file is +passed as an argument to the current command as the result of the +expansion. If the \fB>(\fP\fIlist\^\fP\fB)\fP form is used, writing to +the file will provide input for \fIlist\fP. If the +\fB<(\fP\fIlist\^\fP\fB)\fP form is used, the file passed as an +argument should be read to obtain the output of \fIlist\fP. +.PP +When available, process substitution is performed +simultaneously with parameter and variable expansion, +command substitution, +and arithmetic expansion. +.SS Word Splitting +.PP +The shell scans the results of +parameter expansion, +command substitution, +and +arithmetic expansion +that did not occur within double quotes for +.IR "word splitting" . +.PP +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 +.SM +.B IFS +is unset, or its +value is exactly +.BR , +the default, then +any sequence of +.SM +.B IFS +characters serves to delimit words. If +.SM +.B IFS +has a value other than the default, then sequences of +the whitespace characters +.B space +and +.B tab +are ignored at the beginning and end of the +word, as long as the whitespace character is in the +value of +.SM +.BR IFS +(an +.SM +.B IFS +whitespace character). +Any character in +.SM +.B IFS +that is not +.SM +.B IFS +whitespace, along with any adjacent +.SM +.B IFS +whitespace characters, delimits a field. +A sequence of +.SM +.B IFS +whitespace characters is also treated as a delimiter. +If the value of +.SM +.B IFS +is null, no word splitting occurs. +.PP +Explicit null arguments (\^\f3"\^"\fP or \^\f3'\^'\fP\^) 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 double quotes, a +null argument results and is retained. +.PP +Note that if no expansion occurs, no splitting +is performed. +.SS Pathname Expansion +.PP +After word splitting, +unless the +.B \-f +option has been set, +.B bash +scans each word for the characters +.BR * , +.BR ? , +and +.BR [ . +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, +and the shell option +.B nullglob +is disabled, the word is left unchanged. +If the +.B nullglob +option is set, and no matches are found, +the word is removed. +If the shell option +.B nocaseglob +is enabled, the match is performed without regard to the case +of alphabetic characters. +When a pattern is used for pathname expansion, +the character +.B ``.'' +at the start of a name or immediately following a slash +must be matched explicitly, unless the shell option +.B dotglob +is set. +When matching a pathname, the slash character must always be +matched explicitly. +In other cases, the +.B ``.'' +character is not treated specially. +See the description of +.B shopt +below under +.SM +.B SHELL BUILTIN COMMANDS +for a description of the +.BR nocaseglob , +.BR nullglob , +and +.B dotglob +shell options. +.PP +The +.SM +.B GLOBIGNORE +shell variable may be used to restrict the set of file names matching a +.IR pattern . +If +.SM +.B GLOBIGNORE +is set, each matching file name that also matches one of the patterns in +.SM +.B GLOBIGNORE +is removed from the list of matches. +The file names +.B ``.'' +and +.B ``..'' +are always ignored when +.SM +.B GLOBIGNORE +is set and not null. However, setting +.SM +.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 +.B ``.'' +will match. +To get the old behavior of ignoring file names beginning with a +.BR ``.'' , +make +.B ``.*'' +one of the patterns in +.SM +.BR GLOBIGNORE . +The +.B dotglob +option is disabled when +.SM +.B GLOBIGNORE +is unset. +.PP +\fBPattern Matching\fP +.PP +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 must be quoted if +they are to be matched literally. +.PP +The special pattern characters have the following meanings: +.PP +.PD 0 +.TP +.B * +Matches any string, including the null string. +.TP +.B ? +Matches any single character. +.TP +.B [...] +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, +using the current locale's collating sequence and character set, +is matched. If the first character following the +.B [ +is a +.B ! +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 \fBLC_COLLATE\fP shell variable, +if set. +A +.B \- +may be matched by including it as the first or last character +in the set. +A +.B ] +may be matched by including it as the first character +in the set. +.br +.if t .sp 0.5 +.if n .sp 1 +Within +.B [ +and +.BR ] , +\fIcharacter classes\fP can be specified using the syntax +\fB[:\fP\fIclass\fP\fB:]\fP, where \fIclass\fP is one of the +following classes defined in the POSIX.2 standard: +.PP +.RS +.B +.if n alnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigit +.if t alnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigit +.br +A character class matches any character belonging to that class. +The \fBword\fP character class matches letters, digits, and the character _. +.br +.if t .sp 0.5 +.if n .sp 1 +Within +.B [ +and +.BR ] , +an \fIequivalence class\fP can be specified using the syntax +\fB[=\fP\fIc\fP\fB=]\fP, which matches all characters with the +same collation weight (as defined by the current locale) as +the character \fIc\fP. +.br +.if t .sp 0.5 +.if n .sp 1 +Within +.B [ +and +.BR ] , +the syntax \fB[.\fP\fIsymbol\fP\fB.]\fP matches the collating symbol +\fIsymbol\fP. +.RE +.PD +.PP +If the \fBextglob\fP shell option is enabled using the \fBshopt\fP +builtin, several extended pattern matching operators are recognized. +In the following description, a \fIpattern-list\fP is a list of one +or more patterns separated by a \fB|\fP. +Composite patterns may be formed using one or more of the following +sub-patterns: +.sp 1 +.PD 0 +.RS +.TP +\fB?(\fP\^\fIpattern-list\^\fP\fB)\fP +Matches zero or one occurrence of the given patterns +.TP +\fB*(\fP\^\fIpattern-list\^\fP\fB)\fP +Matches zero or more occurrences of the given patterns +.TP +\fB+(\fP\^\fIpattern-list\^\fP\fB)\fP +Matches one or more occurrences of the given patterns +.TP +\fB@(\fP\^\fIpattern-list\^\fP\fB)\fP +Matches exactly one of the given patterns +.TP +\fB!(\fP\^\fIpattern-list\^\fP\fB)\fP +Matches anything except one of the given patterns +.RE +.PD +.SS Quote Removal +.PP +After the preceding expansions, all unquoted occurrences of the +characters +.BR \e , +.BR ' , +and \^\f3"\fP\^ that did not result from one of the above +expansions are removed. +.SH REDIRECTION +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 +operators may precede or appear anywhere within a +.I simple command +or may follow a +.IR command . +Redirections are processed in the order they appear, from +left to right. +.PP +In the following descriptions, if the file descriptor number is +omitted, and the first character of the redirection operator is +.BR < , +the redirection refers to the standard input (file descriptor +0). If the first character of the redirection operator is +.BR > , +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. +If it expands to more than one word, +.B bash +reports an error. +.PP +Note that the order of redirections is significant. For example, +the command +.RS +.PP +ls \fB>\fP dirlist 2\fB>&\fP1 +.RE +.PP +directs both standard output and standard error to the file +.IR dirlist , +while the command +.RS +.PP +ls 2\fB>&\fP1 \fB>\fP dirlist +.RE +.PP +directs only the standard output to file +.IR dirlist , +because the standard error was duplicated as standard output +before the standard output was redirected to +.IR dirlist . +.PP +\fBBash\fP handles several filenames specially when they are used in +redirections, as described in the following table: +.RS +.PP +.PD 0 +.TP +.B /dev/fd/\fIfd\fP +If \fIfd\fP is a valid integer, file descriptor \fIfd\fP is duplicated. +.TP +.B /dev/stdin +File descriptor 0 is duplicated. +.TP +.B /dev/stdout +File descriptor 1 is duplicated. +.TP +.B /dev/stderr +File descriptor 2 is duplicated. +.TP +.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. +.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. +.PD +.RE +.PP +A failure to open or create a file causes the redirection to fail. +.SS Redirecting Input +.PP +Redirection of input causes the file whose name results from +the expansion of +.I word +to be opened for reading on file descriptor +.IR n , +or the standard input (file descriptor 0) if +.I n +is not specified. +.PP +The general format for redirecting input is: +.RS +.PP +[\fIn\fP]\fB<\fP\fIword\fP +.RE +.SS Redirecting Output +.PP +Redirection of output causes the file whose name results from +the expansion of +.I word +to be opened for writing on file descriptor +.IR n , +or the standard output (file descriptor 1) if +.I n +is not specified. If the file does not exist it is created; +if it does exist it is truncated to zero size. +.PP +The general format for redirecting output is: +.RS +.PP +[\fIn\fP]\fB>\fP\fIword\fP +.RE +.PP +If the redirection operator is +.BR > , +and the +.B noclobber +option to the +.B set +builtin has been enabled, the redirection will fail if the file +whose name results from the expansion of \fIword\fP exists and is +a regular file. +If the redirection operator is +.BR >| , +or the redirection operator is +.B > +and the +.B noclobber +option to the +.B set +builtin command is not enabled, the redirection is attempted even +if the file named by \fIword\fP exists. +.SS Appending Redirected Output +.PP +Redirection of output in this fashion +causes the file whose name results from +the expansion of +.I word +to be opened for appending on file descriptor +.IR n , +or the standard output (file descriptor 1) if +.I n +is not specified. If the file does not exist it is created. +.PP +The general format for appending output is: +.RS +.PP +[\fIn\fP]\fB>>\fP\fIword\fP +.RE +.PP +.SS Redirecting Standard Output and Standard Error +.PP +.B Bash +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 +.I word +with this construct. +.PP +There are two formats for redirecting standard output and +standard error: +.RS +.PP +\fB&>\fP\fIword\fP +.RE +and +.RS +\fB>&\fP\fIword\fP +.RE +.PP +Of the two forms, the first is preferred. +This is semantically equivalent to +.RS +.PP +\fB>\fP\fIword\fP 2\fB>&\fP1 +.RE +.SS Here Documents +.PP +This type of redirection instructs the shell to read input from the +current source until a line containing only +.I word +(with no trailing blanks) +is seen. All of +the lines read up to that point are then used as the standard +input for a command. +.PP +The format of here-documents is: +.RS +.PP +.nf +\fB<<\fP[\fB\-\fP]\fIword\fP + \fIhere-document\fP +\fIdelimiter\fP +.fi +.RE +.PP +No parameter expansion, command substitution, arithmetic expansion, +or pathname expansion is performed on +.IR word . +If any characters in +.I word +are quoted, the +.I delimiter +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 +.B \e +is ignored, and +.B \e +must be used to quote the characters +.BR \e , +.BR $ , +and +.BR ` . +.PP +If the redirection operator is +.BR <<\- , +then all leading tab characters are stripped from input lines and the +line containing +.IR delimiter . +This allows +here-documents within shell scripts to be indented in a +natural fashion. +.SS "Here Strings" +A variant of here documents, the format is: +.RS +.PP +.nf +\fB<<<\fP\fIword\fP +.fi +.RE +.PP +The \fIword\fP is expanded and supplied to the command on its standard +input. +.SS "Duplicating File Descriptors" +.PP +The redirection operator +.RS +.PP +[\fIn\fP]\fB<&\fP\fIword\fP +.RE +.PP +is used to duplicate input file descriptors. +If +.I word +expands to one or more digits, the file descriptor denoted by +.I n +is made to be a copy of that file descriptor. +If the digits in +.I word +do not specify a file descriptor open for input, a redirection error occurs. +If +.I word +evaluates to +.BR \- , +file descriptor +.I n +is closed. If +.I n +is not specified, the standard input (file descriptor 0) is used. +.PP +The operator +.RS +.PP +[\fIn\fP]\fB>&\fP\fIword\fP +.RE +.PP +is used similarly to duplicate output file descriptors. If +.I n +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. +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 +error are redirected as described previously. +.SS "Moving File Descriptors" +.PP +The redirection operator +.RS +.PP +[\fIn\fP]\fB<&\fP\fIdigit\fP\fB\-\fP +.RE +.PP +moves the file descriptor \fIdigit\fP to file descriptor +.IR n , +or the standard input (file descriptor 0) if \fIn\fP is not specified. +\fIdigit\fP is closed after being duplicated to \fIn\fP. +.PP +Similarly, the redirection operator +.RS +.PP +[\fIn\fP]\fB>&\fP\fIdigit\fP\fB\-\fP +.RE +.PP +moves the file descriptor \fIdigit\fP to file descriptor +.IR n , +or the standard output (file descriptor 1) if \fIn\fP is not specified. +.SS "Opening File Descriptors for Reading and Writing" +.PP +The redirection operator +.RS +.PP +[\fIn\fP]\fB<>\fP\fIword\fP +.RE +.PP +causes the file whose name is the expansion of +.I word +to be opened for both reading and writing on file descriptor +.IR n , +or on file descriptor 0 if +.I n +is not specified. If the file does not exist, it is created. +.SH ALIASES +\fIAliases\fP 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 +.B alias +and +.B unalias +builtin commands (see +.SM +.B SHELL BUILTIN COMMANDS +below). +The first word of each 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 alias name and the replacement text may contain any valid +shell input, including the +.I metacharacters +listed above, with the exception that the alias name may not +contain \fI=\fP. 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 +.B ls +to +.BR "ls \-F" , +for instance, and +.B bash +does not try to recursively expand the replacement text. +If the last character of the alias value is a +.IR blank , +then the next command +word following the alias is also checked for alias expansion. +.PP +Aliases are created and listed with the +.B alias +command, and removed with the +.B unalias +command. +.PP +There is no mechanism for using arguments in the replacement text. +If arguments are needed, a shell function should be used (see +.SM +.B FUNCTIONS +below). +.PP +Aliases are not expanded when the shell is not interactive, unless +the +.B expand_aliases +shell option is set using +.B shopt +(see the description of +.B shopt +under +.SM +\fBSHELL BUILTIN COMMANDS\fP +below). +.PP +The rules concerning the definition and use of aliases are +somewhat confusing. +.B Bash +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 compound 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 +.B alias +in compound commands. +.PP +For almost every purpose, aliases are superseded by +shell functions. +.SH FUNCTIONS +A shell function, defined as described above under +.SM +.BR "SHELL GRAMMAR" , +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 positional parameters +during its execution. +The special parameter +.B # +is updated to reflect the change. Positional parameter 0 +is unchanged. +The first element of the +.SM +.B FUNCNAME +variable is set to the name of the function while the function +is executing. +All other aspects of the shell execution +environment are identical between a function and its caller +with the exception that the +.SM +.B DEBUG +trap (see the description of the +.B trap +builtin under +.SM +.B SHELL BUILTIN COMMANDS +below) is not inherited unless the function has been given the +\fBtrace\fP attribute (see the description of the +.SM +.B declare +builtin below) or the +\fB\-o functrace\fP shell option has been enabled with +the \fBset\fP builtin +(in which case all functions inherit the \fBDEBUG\fP trap). +.PP +Variables local to the function may be declared with the +.B local +builtin command. Ordinarily, variables and their values +are shared between the function and its caller. +.PP +If the builtin command +.B return +is executed in a function, the function completes and +execution resumes with the next command after the function +call. +Any command associated with the \fBRETURN\fP trap is executed +before execution resumes. +When a function completes, the values of the +positional parameters and the special parameter +.B # +are restored to the values they had prior to the function's +execution. +.PP +Function names and definitions may be listed with the +.B \-f +option to the +.B declare +or +.B typeset +builtin commands. The +.B \-F +option to +.B declare +or +.B typeset +will list the function names only +(and optionally the source file and line number, if the \fBextdebug\fP +shell option is enabled). +Functions may be exported so that subshells +automatically have them defined with the +.B \-f +option to the +.B export +builtin. +Note that shell functions and variables with the same name may result +in multiple identically-named entries in the environment passed to the +shell's children. +Care should be taken in cases where this may cause a problem. +.PP +Functions may be recursive. No limit is imposed on the number +of recursive calls. +.SH "ARITHMETIC EVALUATION" +The shell allows arithmetic expressions to be evaluated, under +certain circumstances (see the \fBlet\fP and \fBdeclare\fP builtin +commands and \fBArithmetic Expansion\fP). +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. +.PP +.PD 0 +.TP +.B \fIid\fP++ \fIid\fP\-\- +variable post-increment and post-decrement +.TP +.B ++\fIid\fP \-\-\fIid\fP +variable pre-increment and pre-decrement +.TP +.B \- + +unary minus and plus +.TP +.B ! ~ +logical and bitwise negation +.TP +.B ** +exponentiation +.TP +.B * / % +multiplication, division, remainder +.TP +.B + \- +addition, subtraction +.TP +.B << >> +left and right bitwise shifts +.TP +.B <= >= < > +comparison +.TP +.B == != +equality and inequality +.TP +.B & +bitwise AND +.TP +.B ^ +bitwise exclusive OR +.TP +.B | +bitwise OR +.TP +.B && +logical AND +.TP +.B || +logical OR +.TP +.B \fIexpr\fP?\fIexpr\fP:\fIexpr\fP +conditional operator +.TP +.B = *= /= %= += \-= <<= >>= &= ^= |= +assignment +.TP +.B \fIexpr1\fP , \fIexpr2\fP +comma +.PD +.PP +Shell variables are allowed as operands; parameter expansion is +performed 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 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 +\fIinteger\fP attribute using \fBdeclare -i\fP is assigned a value. +A null value evaluates to 0. +A shell variable need not have its integer attribute +turned on to be used in an expression. +.PP +Constants with a leading 0 are interpreted as octal numbers. +A leading 0x or 0X denotes hexadecimal. +Otherwise, numbers take the form [\fIbase#\fP]n, where \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, +the uppercase letters, @, and _, in that order. +If \fIbase\fP is less than or equal to 36, lowercase and uppercase +letters may be used interchangably to represent numbers between 10 +and 35. +.PP +Operators are evaluated in order of precedence. Sub-expressions in +parentheses are evaluated first and may override the precedence +rules above. +.SH "CONDITIONAL EXPRESSIONS" +Conditional expressions are used by the \fB[[\fP compound command and +the \fBtest\fP and \fB[\fP builtin commands to test file attributes +and perform string and arithmetic comparisons. +Expressions are formed from the following unary or binary primaries. +If any \fIfile\fP argument to one of the primaries is of the form +\fI/dev/fd/n\fP, then file descriptor \fIn\fP is checked. +If the \fIfile\fP argument to one of the primaries is one of +\fI/dev/stdin\fP, \fI/dev/stdout\fP, or \fI/dev/stderr\fP, file +descriptor 0, 1, or 2, respectively, is checked. +.sp 1 +.PD 0 +.TP +.B \-a \fIfile\fP +True if \fIfile\fP exists. +.TP +.B \-b \fIfile\fP +True if \fIfile\fP exists and is a block special file. +.TP +.B \-c \fIfile\fP +True if \fIfile\fP exists and is a character special file. +.TP +.B \-d \fIfile\fP +True if \fIfile\fP exists and is a directory. +.TP +.B \-e \fIfile\fP +True if \fIfile\fP exists. +.TP +.B \-f \fIfile\fP +True if \fIfile\fP exists and is a regular file. +.TP +.B \-g \fIfile\fP +True if \fIfile\fP exists and is set-group-id. +.TP +.B \-h \fIfile\fP +True if \fIfile\fP exists and is a symbolic link. +.TP +.B \-k \fIfile\fP +True if \fIfile\fP exists and its ``sticky'' bit is set. +.TP +.B \-p \fIfile\fP +True if \fIfile\fP exists and is a named pipe (FIFO). +.TP +.B \-r \fIfile\fP +True if \fIfile\fP exists and is readable. +.TP +.B \-s \fIfile\fP +True if \fIfile\fP exists and has a size greater than zero. +.TP +.B \-t \fIfd\fP +True if file descriptor +.I fd +is open and refers to a terminal. +.TP +.B \-u \fIfile\fP +True if \fIfile\fP exists and its set-user-id bit is set. +.TP +.B \-w \fIfile\fP +True if \fIfile\fP exists and is writable. +.TP +.B \-x \fIfile\fP +True if \fIfile\fP exists and is executable. +.TP +.B \-O \fIfile\fP +True if \fIfile\fP exists and is owned by the effective user id. +.TP +.B \-G \fIfile\fP +True if \fIfile\fP exists and is owned by the effective group id. +.TP +.B \-L \fIfile\fP +True if \fIfile\fP exists and is a symbolic link. +.TP +.B \-S \fIfile\fP +True if \fIfile\fP exists and is a socket. +.TP +.B \-N \fIfile\fP +True if \fIfile\fP exists and has been modified since it was last read. +.TP +\fIfile1\fP \-\fBnt\fP \fIfile2\fP +True if \fIfile1\fP is newer (according to modification date) than \fIfile2\fP, +or if \fIfile1\fP exists and \fPfile2\fP does not. +.TP +\fIfile1\fP \-\fBot\fP \fIfile2\fP +True if \fIfile1\fP is older than \fIfile2\fP, or if \fIfile2\fP exists +and \fIfile1\fP does not. +.TP +\fIfile1\fP \fB\-ef\fP \fIfile2\fP +True if \fIfile1\fP and \fIfile2\fP refer to the same device and +inode numbers. +.TP +.B \-o \fIoptname\fP +True if shell option +.I optname +is enabled. +See the list of options under the description of the +.B \-o +option to the +.B set +builtin below. +.TP +.B \-z \fIstring\fP +True if the length of \fIstring\fP is zero. +.TP +.B \-n \fIstring\fP +.TP +\fIstring\fP +True if the length of +.I string +is non-zero. +.TP +\fIstring1\fP \fB==\fP \fIstring2\fP +True if the strings are equal. \fB=\fP may be used in place of +\fB==\fP for strict POSIX compliance. +.TP +\fIstring1\fP \fB!=\fP \fIstring2\fP +True if the strings are not equal. +.TP +\fIstring1\fP \fB<\fP \fIstring2\fP +True if \fIstring1\fP sorts before \fIstring2\fP lexicographically +in the current locale. +.TP +\fIstring1\fP \fB>\fP \fIstring2\fP +True if \fIstring1\fP sorts after \fIstring2\fP lexicographically +in the current locale. +.TP +.I \fIarg1\fP \fBOP\fP \fIarg2\fP +.SM +.B OP +is one of +.BR \-eq , +.BR \-ne , +.BR \-lt , +.BR \-le , +.BR \-gt , +or +.BR \-ge . +These arithmetic binary operators return true if \fIarg1\fP +is equal to, not equal to, less than, less than or equal to, +greater than, or greater than or equal to \fIarg2\fP, respectively. +.I Arg1 +and +.I arg2 +may be positive or negative integers. +.PD +.SH "SIMPLE COMMAND EXPANSION" +When a simple command is executed, the shell performs the following +expansions, assignments, and redirections, from left to right. +.IP 1. +The words that the parser has marked as variable assignments (those +preceding the command name) and redirections are saved for later +processing. +.IP 2. +The words that are not variable assignments or redirections are +expanded. If any words remain after expansion, the first word +is taken to be the name of the command and the remaining words are +the arguments. +.IP 3. +Redirections are performed as described above under +.SM +.BR REDIRECTION . +.IP 4. +The text after the \fB=\fP in each variable assignment undergoes tilde +expansion, parameter expansion, command substitution, arithmetic expansion, +and quote removal before being assigned to the variable. +.PP +If no command name results, the variable assignments affect the current +shell environment. Otherwise, the variables are added to the environment +of the executed command and do not affect the current shell environment. +If any of the assignments attempts to assign a value to a readonly variable, +an error occurs, and the command exits with a non-zero status. +.PP +If no command name results, redirections are performed, but do not +affect the current shell environment. A redirection error causes the +command to exit with a non-zero status. +.PP +If there is a command name left after expansion, execution proceeds as +described below. Otherwise, the command exits. If one of the expansions +contained a command substitution, the exit status of the command is +the exit status of the last command substitution performed. If there +were no command substitutions, the command exits with a status of zero. +.SH "COMMAND EXECUTION" +After a command has been split into words, if it results in a +simple command and an optional list of arguments, the following +actions are taken. +.PP +If the command name contains no slashes, the shell attempts to +locate it. If there exists a shell function by that name, that +function is invoked as described above in +.SM +.BR FUNCTIONS . +If the name does not match a function, the shell searches for +it in the list of shell builtins. If a match is found, that +builtin is invoked. +.PP +If the name is neither a shell function nor a builtin, +and contains no slashes, +.B bash +searches each element of the +.SM +.B PATH +for a directory containing an executable file by that name. +.B Bash +uses a hash table to remember the full pathnames of executable +files (see +.B hash +under +.SM +.B "SHELL BUILTIN COMMANDS" +below). +A full search of the directories in +.SM +.B PATH +is performed only if the command is not found in the hash table. +If the search is unsuccessful, the shell prints an error +message and returns an exit status of 127. +.PP +If the search is successful, or if the command name contains +one or more slashes, the shell executes the named program in a +separate execution environment. +Argument 0 is set to the name given, and the remaining arguments +to the command are set to the arguments given, if any. +.PP +If this execution fails because the file is not in executable +format, and the file is not a directory, it is assumed to be +a \fIshell script\fP, a file +containing shell commands. A subshell is spawned to execute +it. This subshell reinitializes itself, so +that the effect is as if a new shell had been invoked +to handle the script, with the exception that the locations of +commands remembered by the parent (see +.B hash +below under +.SM +\fBSHELL BUILTIN COMMANDS\fP) +are retained by the child. +.PP +If the program is a file beginning with +.BR #! , +the remainder of the first line specifies an interpreter +for the program. The shell executes the +specified interpreter on operating systems that do not +handle this executable format themselves. The arguments to the +interpreter consist of a single optional argument following the +interpreter name on the first line of the program, followed +by the name of the program, followed by the command +arguments, if any. +.SH COMMAND EXECUTION ENVIRONMENT +The shell has an \fIexecution environment\fP, which consists of the +following: +.sp 1 +.IP \(bu +open files inherited by the shell at invocation, as modified by +redirections supplied to the \fBexec\fP builtin +.IP \(bu +the current working directory as set by \fBcd\fP, \fBpushd\fP, or +\fBpopd\fP, or inherited by the shell at invocation +.IP \(bu +the file creation mode mask as set by \fBumask\fP or inherited from +the shell's parent +.IP \(bu +current traps set by \fBtrap\fP +.IP \(bu +shell parameters that are set by variable assignment or with \fBset\fP +or inherited from the shell's parent in the environment +.IP \(bu +shell functions defined during execution or inherited from the shell's +parent in the environment +.IP \(bu +options enabled at invocation (either by default or with command-line +arguments) or by \fBset\fP +.IP \(bu +options enabled by \fBshopt\fP +.IP \(bu +shell aliases defined with \fBalias\fP +.IP \(bu +various process IDs, including those of background jobs, the value +of \fB$$\fP, and the value of \fB$PPID\fP +.PP +When a simple command other than a builtin or shell function +is to be executed, it +is invoked in a separate execution environment that consists of +the following. Unless otherwise noted, the values are inherited +from the shell. +.sp 1 +.IP \(bu +the shell's open files, plus any modifications and additions specified +by redirections to the command +.IP \(bu +the current working directory +.IP \(bu +the file creation mode mask +.IP \(bu +shell variables and functions marked for export, along with variables +exported for the command, passed in the environment +.IP \(bu +traps caught by the shell are reset to the values the inherited +from the shell's parent, and traps ignored by the shell are ignored +.PP +A command invoked in this separate environment cannot affect the +shell's execution environment. +.PP +Command substitution and asynchronous commands are invoked in a +subshell environment that is a duplicate of the shell environment, +except that traps caught by the shell are reset to the values +that the shell inherited from its parent at invocation. Builtin +commands that are invoked as part of a pipeline are also executed in a +subshell environment. Changes made to the subshell environment +cannot affect the shell's execution environment. +.PP +If a command is followed by a \fB&\fP and job control is not active, the +default standard input for the command is the empty file \fI/dev/null\fP. +Otherwise, the invoked command inherits the file descriptors of the calling +shell as modified by redirections. +.SH ENVIRONMENT +When a program is invoked it is given an array of strings +called the +.IR environment . +This is a list of +\fIname\fP\-\fIvalue\fP pairs, of the form +.IR "name\fR=\fPvalue" . +.PP +The shell provides several ways to manipulate the environment. +On invocation, the shell scans its own environment and +creates a parameter for each name found, automatically marking +it for +.I export +to child processes. Executed commands inherit the environment. +The +.B export +and +.B declare \-x +commands allow parameters and functions to be added to and +deleted from the environment. If the value of a parameter +in the environment is modified, the new value becomes part +of the environment, replacing the old. The environment +inherited by any executed command consists of the shell's +initial environment, whose values may be modified in the shell, +less any pairs removed by the +.B unset +command, plus any additions via the +.B export +and +.B declare \-x +commands. +.PP +The environment for any +.I simple command +or function may be augmented temporarily by prefixing it with +parameter assignments, as described above in +.SM +.BR PARAMETERS . +These assignment statements affect only the environment seen +by that command. +.PP +If the +.B \-k +option is set (see the +.B set +builtin command below), then +.I all +parameter assignments are placed in the environment for a command, +not just those that precede the command name. +.PP +When +.B bash +invokes an external command, the variable +.B _ +is set to the full file name of the command and passed to that +command in its environment. +.SH "EXIT STATUS" +For the shell's purposes, a command which exits with a +zero exit status has succeeded. An exit status of zero +indicates success. A non-zero exit status indicates failure. +When a command terminates on a fatal signal \fIN\fP, \fBbash\fP uses +the value of 128+\fIN\fP as the exit status. +.PP +If a command is not found, the child process created to +execute it returns a status of 127. If a command is found +but is not executable, the return status is 126. +.PP +If a command fails because of an error during expansion or redirection, +the exit status is greater than zero. +.PP +Shell builtin commands return a status of 0 (\fItrue\fP) if +successful, and non-zero (\fIfalse\fP) if an error occurs +while they execute. +All builtins return an exit status of 2 to indicate incorrect usage. +.PP +\fBBash\fP itself returns the exit status of the last command +executed, unless a syntax error occurs, in which case it exits +with a non-zero value. See also the \fBexit\fP builtin +command below. +.SH SIGNALS +When \fBbash\fP is interactive, in the absence of any traps, it ignores +.SM +.B SIGTERM +(so that \fBkill 0\fP does not kill an interactive shell), +and +.SM +.B SIGINT +is caught and handled (so that the \fBwait\fP builtin is interruptible). +In all cases, \fBbash\fP ignores +.SM +.BR SIGQUIT . +If job control is in effect, +.B bash +ignores +.SM +.BR SIGTTIN , +.SM +.BR SIGTTOU , +and +.SM +.BR SIGTSTP . +.PP +Synchronous jobs started by \fBbash\fP have signal handlers +set to the values inherited by the shell from its parent. +When job control is not in effect, asynchronous commands +ignore +.SM +.B SIGINT +and +.SM +.B SIGQUIT +as well. +Commands run as a result of command substitution ignore the +keyboard-generated job control signals +.SM +.BR SIGTTIN , +.SM +.BR SIGTTOU , +and +.SM +.BR SIGTSTP . +.PP +The shell exits by default upon receipt of a +.SM +.BR SIGHUP . +Before exiting, an interactive shell resends the +.SM +.B SIGHUP +to all jobs, running or stopped. +Stopped jobs are sent +.SM +.B SIGCONT +to ensure that they receive the +.SM +.BR SIGHUP . +To prevent the shell from +sending the signal to a particular job, it should be removed from the +jobs table with the +.B disown +builtin (see +.SM +.B "SHELL BUILTIN COMMANDS" +below) or marked +to not receive +.SM +.B SIGHUP +using +.BR "disown \-h" . +.PP +If the +.B huponexit +shell option has been set with +.BR shopt , +.B bash +sends a +.SM +.B SIGHUP +to all jobs when an interactive login shell exits. +.PP +When \fBbash\fP receives a signal for which a trap has been set while +waiting for a command to complete, the trap will not be executed until +the command completes. +When \fBbash\fP is waiting for an asynchronous command via the \fBwait\fP +builtin, the reception of a signal for which a trap has been set will +cause the \fBwait\fP builtin to return immediately with an exit status +greater than 128, immediately after which the trap is executed. +.SH "JOB CONTROL" +.I Job control +refers to the ability to selectively stop (\fIsuspend\fP) +the execution of processes and continue (\fIresume\fP) +their execution at a later point. A user typically employs +this facility via an interactive interface supplied jointly +by the system's terminal driver and +.BR bash . +.PP +The shell associates a +.I job +with each pipeline. It keeps a table of currently executing +jobs, which may be listed with the +.B jobs +command. When +.B bash +starts a job asynchronously (in the +.IR background ), +it prints a line that looks like: +.RS +.PP +[1] 25647 +.RE +.PP +indicating that this job is job number 1 and that the process ID +of the last process in the pipeline associated with this job is 25647. +All of the processes in a single pipeline are members of the same job. +.B Bash +uses the +.I job +abstraction as the basis for job control. +.PP +To facilitate the implementation of the user interface to job +control, the operating system maintains the notion of a \fIcurrent terminal +process group ID\fP. Members of this process group (processes whose +process group ID is equal to the current terminal process group ID) +receive keyboard-generated signals such as +.SM +.BR SIGINT . +These processes are said to be in the +.IR foreground . +.I Background +processes are those whose process group ID differs from the terminal's; +such processes are immune to keyboard-generated signals. +Only foreground processes are allowed to read from or write to the +terminal. Background processes which attempt to read from (write to) the +terminal are sent a +.SM +.B SIGTTIN (SIGTTOU) +signal by the terminal driver, +which, unless caught, suspends the process. +.PP +If the operating system on which +.B bash +is running supports +job control, +.B bash +contains facilities to use it. +Typing the +.I suspend +character (typically +.BR ^Z , +Control-Z) while a process is running +causes that process to be stopped and returns control to +.BR bash . +Typing the +.I "delayed suspend" +character (typically +.BR ^Y , +Control-Y) causes the process to be stopped when it +attempts to read input from the terminal, and control to +be returned to +.BR bash . +The user may then manipulate the state of this job, using the +.B bg +command to continue it in the background, the +.B fg +command to continue it in the foreground, or +the +.B kill +command to kill it. A \fB^Z\fP takes effect immediately, +and has the additional side effect of causing pending output +and typeahead to be discarded. +.PP +There are a number of ways to refer to a job in the shell. +The character +.B % +introduces a job name. Job number +.I n +may be referred to as +.BR %n . +A job may also be referred to using a prefix of the name used to +start it, or using a substring that appears in its command line. +For example, +.B %ce +refers to a stopped +.B ce +job. If a prefix matches more than one job, +.B bash +reports an error. Using +.BR %?ce , +on the other hand, refers to any job containing the string +.B ce +in its command line. If the substring matches more than one job, +.B bash +reports an error. The symbols +.B %% +and +.B %+ +refer to the shell's notion of the +.IR "current job" , +which is the last job stopped while it was in +the foreground or started in the background. +The +.I "previous job" +may be referenced using +.BR %\- . +In output pertaining to jobs (e.g., the output of the +.B jobs +command), the current job is always flagged with a +.BR + , +and the previous job with a +.BR \- . +.PP +Simply naming a job can be used to bring it into the +foreground: +.B %1 +is a synonym for +\fB``fg %1''\fP, +bringing job 1 from the background into the foreground. +Similarly, +.B ``%1 &'' +resumes job 1 in the background, equivalent to +\fB``bg %1''\fP. +.PP +The shell learns immediately whenever a job changes state. +Normally, +.B bash +waits until it is about to print a prompt before reporting +changes in a job's status so as to not interrupt +any other output. If the +.B \-b +option to the +.B set +builtin command +is enabled, +.B bash +reports such changes immediately. +Any trap on +.SM +.B SIGCHLD +is executed for each child that exits. +.PP +If an attempt to exit +.B bash +is made while jobs are stopped, the shell prints a warning message. The +.B jobs +command may then be used to inspect their status. +If a second attempt to exit is made without an intervening command, +the shell does not print another warning, and the stopped +jobs are terminated. +.SH PROMPTING +When executing interactively, +.B bash +displays the primary prompt +.SM +.B PS1 +when it is ready to read a command, and the secondary prompt +.SM +.B PS2 +when it needs more input to complete a command. +.B Bash +allows these prompt strings to be customized by inserting a number of +backslash-escaped special characters that are decoded as follows: +.RS +.PD 0 +.TP +.B \ea +an ASCII bell character (07) +.TP +.B \ed +the date in "Weekday Month Date" format (e.g., "Tue May 26") +.TP +.B \eD{\fIformat\fP} +the \fIformat\fP is passed to \fIstrftime\fP(3) and the result is inserted +into the prompt string; an empty \fIformat\fP results in a locale-specific +time representation. The braces are required +.TP +.B \ee +an ASCII escape character (033) +.TP +.B \eh +the hostname up to the first `.' +.TP +.B \eH +the hostname +.TP +.B \ej +the number of jobs currently managed by the shell +.TP +.B \el +the basename of the shell's terminal device name +.TP +.B \en +newline +.TP +.B \er +carriage return +.TP +.B \es +the name of the shell, the basename of +.B $0 +(the portion following the final slash) +.TP +.B \et +the current time in 24-hour HH:MM:SS format +.TP +.B \eT +the current time in 12-hour HH:MM:SS format +.TP +.B \e@ +the current time in 12-hour am/pm format +.TP +.B \eA +the current time in 24-hour HH:MM format +.TP +.B \eu +the username of the current user +.TP +.B \ev +the version of \fBbash\fP (e.g., 2.00) +.TP +.B \eV +the release of \fBbash\fP, version + patchelvel (e.g., 2.00.0) +.TP +.B \ew +the current working directory +.TP +.B \eW +the basename of the current working directory +.TP +.B \e! +the history number of this command +.TP +.B \e# +the command number of this command +.TP +.B \e$ +if the effective UID is 0, a +.BR # , +otherwise a +.B $ +.TP +.B \e\fInnn\fP +the character corresponding to the octal number \fInnn\fP +.TP +.B \e\e +a backslash +.TP +.B \e[ +begin a sequence of non-printing characters, which could be used to +embed a terminal control sequence into the prompt +.TP +.B \e] +end a sequence of non-printing characters +.PD +.RE +.PP +The command number and the history number are usually different: +the history number of a command is its position in the history +list, which may include commands restored from the history file +(see +.SM +.B HISTORY +below), while the command number is the position in the sequence +of commands executed during the current shell session. +After the string is decoded, it is expanded via +parameter expansion, command substitution, arithmetic +expansion, and quote removal, subject to the value of the +.B promptvars +shell option (see the description of the +.B shopt +command under +.SM +.B "SHELL BUILTIN COMMANDS" +below). +.SH READLINE +This is the library that handles reading input when using an interactive +shell, unless the +.B \-\-noediting +option is given at shell invocation. +By default, the line editing commands are similar to those of emacs. +A vi-style line editing interface is also available. +To turn off line editing after the shell is running, use the +.B +o emacs +or +.B +o vi +options to the +.B set +builtin (see +.SM +.B SHELL BUILTIN COMMANDS +below). +.SS "Readline Notation" +.PP +In this section, the emacs-style notation is used to denote +keystrokes. Control keys are denoted by C\-\fIkey\fR, e.g., C\-n +means Control\-N. Similarly, +.I meta +keys are denoted by M\-\fIkey\fR, so M\-x means Meta\-X. (On keyboards +without a +.I meta +key, M\-\fIx\fP means ESC \fIx\fP, i.e., press the Escape key +then the +.I x +key. This makes ESC the \fImeta prefix\fP. +The combination M\-C\-\fIx\fP means ESC\-Control\-\fIx\fP, +or press the Escape key +then hold the Control key while pressing the +.I x +key.) +.PP +Readline commands may be given numeric +.IR arguments , +which normally act as a repeat count. +Sometimes, however, it is the sign of the argument that is significant. +Passing a negative argument to a command that acts in the forward +direction (e.g., \fBkill\-line\fP) causes that command to act in a +backward direction. +Commands whose behavior with arguments deviates from this are noted +below. +.PP +When a command is described as \fIkilling\fP text, the text +deleted is saved for possible future retrieval +(\fIyanking\fP). The killed text is saved in a +\fIkill ring\fP. Consecutive kills cause the text to be +accumulated into one unit, which can be yanked all at once. +Commands which do not kill text separate the chunks of text +on the kill ring. +.SS "Readline Initialization" +.PP +Readline is customized by putting commands in an initialization +file (the \fIinputrc\fP file). +The name of this file is taken from the value of the +.SM +.B INPUTRC +variable. If that variable is unset, the default is +.IR ~/.inputrc . +When a program which uses the readline library starts up, the +initialization file is read, and the key bindings and variables +are set. +There are only a few basic constructs allowed in the +readline initialization file. +Blank lines are ignored. +Lines beginning with a \fB#\fP are comments. +Lines beginning with a \fB$\fP indicate conditional constructs. +Other lines denote key bindings and variable settings. +.PP +The default key-bindings may be changed with an +.I inputrc +file. +Other programs that use this library may add their own commands +and bindings. +.PP +For example, placing +.RS +.PP +M\-Control\-u: universal\-argument +.RE +or +.RS +C\-Meta\-u: universal\-argument +.RE +into the +.I inputrc +would make M\-C\-u execute the readline command +.IR universal\-argument . +.PP +The following symbolic character names are recognized: +.IR RUBOUT , +.IR DEL , +.IR ESC , +.IR LFD , +.IR NEWLINE , +.IR RET , +.IR RETURN , +.IR SPC , +.IR SPACE , +and +.IR TAB . +.PP +In addition to command names, readline allows keys to be bound +to a string that is inserted when the key is pressed (a \fImacro\fP). +.SS "Readline Key Bindings" +.PP +The syntax for controlling key bindings in the +.I inputrc +file is simple. All that is required is the name of the +command or the text of a macro and a key sequence to which +it should be bound. The name may be specified in one of two ways: +as a symbolic key name, possibly with \fIMeta\-\fP or \fIControl\-\fP +prefixes, or as a key sequence. +.PP +When using the form \fBkeyname\fP:\^\fIfunction\-name\fP or \fImacro\fP, +.I keyname +is the name of a key spelled out in English. For example: +.sp +.RS +Control-u: universal\-argument +.br +Meta-Rubout: backward-kill-word +.br +Control-o: "> output" +.RE +.LP +In the above example, +.I C\-u +is bound to the function +.BR universal\-argument , +.I M\-DEL +is bound to the function +.BR backward\-kill\-word , +and +.I C\-o +is bound to run the macro +expressed on the right hand side (that is, to insert the text +.if t \f(CW> output\fP +.if n ``> output'' +into the line). +.PP +In the second form, \fB"keyseq"\fP:\^\fIfunction\-name\fP or \fImacro\fP, +.B keyseq +differs from +.B keyname +above in that strings denoting +an entire key sequence may be specified by placing the sequence +within double quotes. Some GNU Emacs style key escapes can be +used, as in the following example, but the symbolic character names +are not recognized. +.sp +.RS +"\eC\-u": universal\-argument +.br +"\eC\-x\eC\-r": re\-read\-init\-file +.br +"\ee[11~": "Function Key 1" +.RE +.PP +In this example, +.I C\-u +is again bound to the function +.BR universal\-argument . +.I "C\-x C\-r" +is bound to the function +.BR re\-read\-init\-file , +and +.I "ESC [ 1 1 ~" +is bound to insert the text +.if t \f(CWFunction Key 1\fP. +.if n ``Function Key 1''. +.PP +The full set of GNU Emacs style escape sequences is +.RS +.PD 0 +.TP +.B \eC\- +control prefix +.TP +.B \eM\- +meta prefix +.TP +.B \ee +an escape character +.TP +.B \e\e +backslash +.TP +.B \e" +literal " +.TP +.B \e' +literal ' +.RE +.PD +.PP +In addition to the GNU Emacs style escape sequences, a second +set of backslash escapes is available: +.RS +.PD 0 +.TP +.B \ea +alert (bell) +.TP +.B \eb +backspace +.TP +.B \ed +delete +.TP +.B \ef +form feed +.TP +.B \en +newline +.TP +.B \er +carriage return +.TP +.B \et +horizontal tab +.TP +.B \ev +vertical tab +.TP +.B \e\fInnn\fP +the eight-bit character whose value is the octal value \fInnn\fP +(one to three digits) +.TP +.B \ex\fIHH\fP +the eight-bit character whose value is the hexadecimal value \fIHH\fP +(one or two hex digits) +.RE +.PD +.PP +When entering the text of a macro, single or double quotes must +be used to indicate a macro definition. +Unquoted text is assumed to be a function name. +In the macro body, the backslash escapes described above are expanded. +Backslash will quote any other character in the macro text, +including " and '. +.PP +.B Bash +allows the current readline key bindings to be displayed or modified +with the +.B bind +builtin command. The editing mode may be switched during interactive +use by using the +.B \-o +option to the +.B set +builtin command (see +.SM +.B SHELL BUILTIN COMMANDS +below). +.SS "Readline Variables" +.PP +Readline has variables that can be used to further customize its +behavior. A variable may be set in the +.I inputrc +file with a statement of the form +.RS +.PP +\fBset\fP \fIvariable\-name\fP \fIvalue\fP +.RE +.PP +Except where noted, readline variables can take the values +.B On +or +.BR Off . +The variables and their default values are: +.PP +.PD 0 +.TP +.B bell\-style (audible) +Controls what happens when readline wants to ring the terminal bell. +If set to \fBnone\fP, readline never rings the bell. If set to +\fBvisible\fP, readline uses a visible bell if one is available. +If set to \fBaudible\fP, readline attempts to ring the terminal's bell. +.TP +.B comment\-begin (``#'') +The string that is inserted when the readline +.B insert\-comment +command is executed. +This command is bound to +.B M\-# +in emacs mode and to +.B # +in vi command mode. +.TP +.B completion\-ignore\-case (Off) +If set to \fBOn\fP, readline performs filename matching and completion +in a case\-insensitive fashion. +.TP +.B completion\-query\-items (100) +This determines when the user is queried about viewing +the number of possible completions +generated by the \fBpossible\-completions\fP 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 simply listed +on the terminal. +.TP +.B convert\-meta (On) +If set to \fBOn\fP, 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 \fImeta prefix\fP). +.TP +.B disable\-completion (Off) +If set to \fBOn\fP, readline will inhibit word completion. Completion +characters will be inserted into the line as if they had been +mapped to \fBself-insert\fP. +.TP +.B editing\-mode (emacs) +Controls whether readline begins with a set of key bindings similar +to \fIemacs\fP or \fIvi\fP. +.B editing\-mode +can be set to either +.B emacs +or +.BR vi . +.TP +.B enable\-keypad (Off) +When set to \fBOn\fP, readline will try to enable the application +keypad when it is called. Some systems need this to enable the +arrow keys. +.TP +.B expand\-tilde (Off) +If set to \fBon\fP, tilde expansion is performed when readline +attempts word completion. +.TP +.B history-preserve-point +If set to \fBon\fP, the history code attempts to place point at the +same location on each history line retrived with \fBprevious-history\fP +or \fBnext-history\fP. +.TP +.B horizontal\-scroll\-mode (Off) +When set to \fBOn\fP, 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 new line. +.TP +.B input\-meta (Off) +If set to \fBOn\fP, 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 +.B meta\-flag +is a synonym for this variable. +.TP +.B isearch\-terminators (``C\-[C\-J'') +The string of characters that should terminate an incremental +search without subsequently executing the character as a command. +If this variable has not been given a value, the characters +\fIESC\fP and \fIC\-J\fP will terminate an incremental search. +.TP +.B keymap (emacs) +Set the current readline keymap. The set of valid keymap names is +\fIemacs, emacs\-standard, emacs\-meta, emacs\-ctlx, vi, +vi\-command\fP, and +.IR vi\-insert . +\fIvi\fP is equivalent to \fIvi\-command\fP; \fIemacs\fP is +equivalent to \fIemacs\-standard\fP. The default value is +.IR emacs ; +the value of +.B editing\-mode +also affects the default keymap. +.TP +.B mark\-directories (On) +If set to \fBOn\fP, completed directory names have a slash +appended. +.TP +.B mark\-modified\-lines (Off) +If set to \fBOn\fP, history lines that have been modified are displayed +with a preceding asterisk (\fB*\fP). +.TP +.B mark\-symlinked\-directories (Off) +If set to \fBOn\fP, completed names which are symbolic links to directories +have a slash appended (subject to the value of +\fBmark\-directories\fP). +.TP +.B match\-hidden\-files (On) +This variable, when set to \fBOn\fP, causes readline to match files whose +names begin with a `.' (hidden files) when performing filename +completion, unless the leading `.' is +supplied by the user in the filename to be completed. +.TP +.B output\-meta (Off) +If set to \fBOn\fP, readline will display characters with the +eighth bit set directly rather than as a meta-prefixed escape +sequence. +.TP +.B page\-completions (On) +If set to \fBOn\fP, readline uses an internal \fImore\fP-like pager +to display a screenful of possible completions at a time. +.TP +.B print\-completions\-horizontally (Off) +If set to \fBOn\fP, readline will display completions with matches +sorted horizontally in alphabetical order, rather than down the screen. +.TP +.B show\-all\-if\-ambiguous (Off) +This alters the default behavior of the completion functions. If +set to +.BR on , +words which have more than one possible completion cause the +matches to be listed immediately instead of ringing the bell. +.TP +.B visible\-stats (Off) +If set to \fBOn\fP, a character denoting a file's type as reported +by \fIstat\fP(2) is appended to the filename when listing possible +completions. +.PD +.SS "Readline Conditional Constructs" +.PP +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. +.IP \fB$if\fP +The +.B $if +construct allows bindings to be made based on the +editing 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. +.RS +.IP \fBmode\fP +The \fBmode=\fP form of the \fB$if\fP directive is used to test +whether readline is in emacs or vi mode. +This may be used in conjunction +with the \fBset keymap\fP command, for instance, to set bindings in +the \fIemacs\-standard\fP and \fIemacs\-ctlx\fP keymaps only if +readline is starting out in emacs mode. +.IP \fBterm\fP +The \fBterm=\fP 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 +.B = +is tested against the both full name of the terminal and the portion +of the terminal name before the first \fB\-\fP. This allows +.I sun +to match both +.I sun +and +.IR sun\-cmd , +for instance. +.IP \fBapplication\fP +The \fBapplication\fP construct is used to include +application-specific settings. Each program using the readline +library sets the \fIapplication name\fP, 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 Bash: +.sp 1 +.RS +.nf +\fB$if\fP Bash +# Quote the current or previous word +"\eC\-xq": "\eeb\e"\eef\e"" +\fB$endif\fP +.fi +.RE +.RE +.IP \fB$endif\fP +This command, as seen in the previous example, terminates an +\fB$if\fP command. +.IP \fB$else\fP +Commands in this branch of the \fB$if\fP directive are executed if +the test fails. +.IP \fB$include\fP +This directive takes a single filename as an argument and reads commands +and bindings from that file. For example, the following directive +would read \fI/etc/inputrc\fP: +.sp 1 +.RS +.nf +\fB$include\fP \^ \fI/etc/inputrc\fP +.fi +.RE +.SS Searching +.PP +Readline provides commands for searching through the command history +(see +.SM +.B HISTORY +below) for lines containing a specified string. +There are two search modes: +.I incremental +and +.IR non-incremental . +.PP +Incremental searches begin before the user has finished typing the +search string. +As each character of the search string is typed, readline 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 \fBisearch-terminators\fP +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 +search string becomes the current line. +.PP +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 \fInewline\fP will terminate the search and accept +the line, thereby executing the command from the history list. +.PP +Readline remembers the last incremental search string. If two +Control-Rs are typed without any intervening characters defining a +new search string, any remembered search string is used. +.PP +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. +.SS "Readline Command Names" +.PP +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 accompanying key sequence are unbound by default. +In the following descriptions, \fIpoint\fP refers to the current cursor +position, and \fImark\fP refers to a cursor position saved by the +\fBset\-mark\fP command. +The text between the point and mark is referred to as the \fIregion\fP. +.SS Commands for Moving +.PP +.PD 0 +.TP +.B beginning\-of\-line (C\-a) +Move to the start of the current line. +.TP +.B end\-of\-line (C\-e) +Move to the end of the line. +.TP +.B forward\-char (C\-f) +Move forward a character. +.TP +.B backward\-char (C\-b) +Move back a character. +.TP +.B forward\-word (M\-f) +Move forward to the end of the next word. Words are composed of +alphanumeric characters (letters and digits). +.TP +.B backward\-word (M\-b) +Move back to the start of the current or previous word. Words are +composed of alphanumeric characters (letters and digits). +.TP +.B clear\-screen (C\-l) +Clear the screen leaving the current line at the top of the screen. +With an argument, refresh the current line without clearing the +screen. +.TP +.B redraw\-current\-line +Refresh the current line. +.PD +.SS Commands for Manipulating the History +.PP +.PD 0 +.TP +.B accept\-line (Newline, Return) +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 +.SM +.B HISTCONTROL +variable. If the line is a modified history +line, then restore the history line to its original state. +.TP +.B previous\-history (C\-p) +Fetch the previous command from the history list, moving back in +the list. +.TP +.B next\-history (C\-n) +Fetch the next command from the history list, moving forward in the +list. +.TP +.B beginning\-of\-history (M\-<) +Move to the first line in the history. +.TP +.B end\-of\-history (M\->) +Move to the end of the input history, i.e., the line currently being +entered. +.TP +.B reverse\-search\-history (C\-r) +Search backward starting at the current line and moving `up' through +the history as necessary. This is an incremental search. +.TP +.B forward\-search\-history (C\-s) +Search forward starting at the current line and moving `down' through +the history as necessary. This is an incremental search. +.TP +.B non\-incremental\-reverse\-search\-history (M\-p) +Search backward through the history starting at the current line +using a non-incremental search for a string supplied by the user. +.TP +.B non\-incremental\-forward\-search\-history (M\-n) +Search forward through the history using a non-incremental search for +a string supplied by the user. +.TP +.B history\-search\-forward +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. +.TP +.B history\-search\-backward +Search backward through the history for the string of characters +between the start of the current line and the point. +This is a non-incremental search. +.TP +.B yank\-nth\-arg (M\-C\-y) +Insert the first argument to the previous command (usually +the second word on the previous line) at point. +With an argument +.IR n , +insert the \fIn\fPth word from the previous command (the words +in the previous command begin with word 0). A negative argument +inserts the \fIn\fPth word from the end of the previous command. +.TP +.B +yank\-last\-arg (M\-.\^, M\-_\^) +Insert the last argument to the previous command (the last word of +the previous history entry). With an argument, +behave exactly like \fByank\-nth\-arg\fP. +Successive calls to \fByank\-last\-arg\fP move back through the history +list, inserting the last argument of each line in turn. +.TP +.B shell\-expand\-line (M\-C\-e) +Expand the line as the shell does. This +performs alias and history expansion as well as all of the shell +word expansions. See +.SM +.B HISTORY EXPANSION +below for a description of history expansion. +.TP +.B history\-expand\-line (M\-^) +Perform history expansion on the current line. +See +.SM +.B HISTORY EXPANSION +below for a description of history expansion. +.TP +.B magic\-space +Perform history expansion on the current line and insert a space. +See +.SM +.B HISTORY EXPANSION +below for a description of history expansion. +.TP +.B alias\-expand\-line +Perform alias expansion on the current line. +See +.SM +.B ALIASES +above for a description of alias expansion. +.TP +.B history\-and\-alias\-expand\-line +Perform history and alias expansion on the current line. +.TP +.B insert\-last\-argument (M\-.\^, M\-_\^) +A synonym for \fByank\-last\-arg\fP. +.TP +.B operate\-and\-get\-next (C\-o) +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. +.TP +.B edit\-and\-execute\-command (C\-xC\-e) +Invoke an editor on the current command line, and execute the result as shell +commands. +\fBBash\fP attempts to invoke +.SM +.BR $FCEDIT , +.SM +.BR $EDITOR , +and \fIemacs\fP as the editor, in that order. +.PD +.SS Commands for Changing Text +.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 +.SM +.BR EOF . +.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. +.TP +.B forward\-backward\-delete\-char +Delete the character under the cursor, unless the cursor is at the +end of the line, in which case the character behind the cursor is +deleted. +.TP +.B quoted\-insert (C\-q, C\-v) +Add the next character typed to the line verbatim. This is +how to insert characters like \fBC\-q\fP, for example. +.TP +.B tab\-insert (C\-v TAB) +Insert a tab character. +.TP +.B self\-insert (a,\ b,\ A,\ 1,\ !,\ ...) +Insert the character typed. +.TP +.B transpose\-chars (C\-t) +Drag the character before point forward over the character at point, +moving point forward as well. +If point is at the end of the line, then this transposes +the two characters before point. +Negative arguments have no effect. +.TP +.B transpose\-words (M\-t) +Drag the word before point past the word after point, +moving point over that word as well. +If point is at the end of the line, this transposes +the last two words on the line. +.TP +.B upcase\-word (M\-u) +Uppercase the current (or following) word. With a negative argument, +uppercase the previous word, but do not move point. +.TP +.B downcase\-word (M\-l) +Lowercase the current (or following) word. With a negative argument, +lowercase the previous word, but do not move point. +.TP +.B capitalize\-word (M\-c) +Capitalize the current (or following) word. With a negative argument, +capitalize the previous word, but do not move point. +.TP +.B overwrite\-mode +Toggle overwrite mode. With an explicit positive numeric argument, +switches to overwrite mode. With an explicit non-positive numeric +argument, switches to insert mode. This command affects only +\fBemacs\fP mode; \fBvi\fP mode does overwrite differently. +Each call to \fIreadline()\fP starts in insert mode. +In overwrite mode, characters bound to \fBself\-insert\fP replace +the text at point rather than pushing the text to the right. +Characters bound to \fBbackward\-delete\-char\fP replace the character +before point with a space. By default, this command is unbound. +.PD +.SS Killing and Yanking +.PP +.PD 0 +.TP +.B kill\-line (C\-k) +Kill the text from point to the end of the line. +.TP +.B backward\-kill\-line (C\-x Rubout) +Kill backward to the beginning of the line. +.TP +.B unix\-line\-discard (C\-u) +Kill backward from point to the beginning of the line. +The killed text is saved on the kill-ring. +.\" There is no real difference between this and backward-kill-line +.TP +.B kill\-whole\-line +Kill all characters on the current line, no matter where point is. +.TP +.B kill\-word (M\-d) +Kill from point to the end of the current word, or if between +words, to the end of the next word. +Word boundaries are the same as those used by \fBforward\-word\fP. +.TP +.B backward\-kill\-word (M\-Rubout) +Kill the word behind point. +Word boundaries are the same as those used by \fBbackward\-word\fP. +.TP +.B unix\-word\-rubout (C\-w) +Kill the word behind point, using white space as a word boundary. +The killed text is saved on the kill-ring. +.TP +.B delete\-horizontal\-space (M\-\e) +Delete all spaces and tabs around point. +.TP +.B kill\-region +Kill the text in the current region. +.TP +.B copy\-region\-as\-kill +Copy the text in the region to the kill buffer. +.TP +.B copy\-backward\-word +Copy the word before point to the kill buffer. +The word boundaries are the same as \fBbackward\-word\fP. +.TP +.B copy\-forward\-word +Copy the word following point to the kill buffer. +The word boundaries are the same as \fBforward\-word\fP. +.TP +.B yank (C\-y) +Yank the top of the kill ring into the buffer at point. +.TP +.B yank\-pop (M\-y) +Rotate the kill ring, and yank the new top. Only works following +.B yank +or +.BR yank\-pop . +.PD +.SS Numeric Arguments +.PP +.PD 0 +.TP +.B digit\-argument (M\-0, M\-1, ..., M\-\-) +Add this digit to the argument already accumulating, or start a new +argument. M\-\- starts a negative argument. +.TP +.B universal\-argument +This is another way to specify an argument. +If this command is followed by one or more digits, optionally with a +leading minus sign, those digits define the argument. +If the command is followed by digits, executing +.B universal\-argument +again ends the numeric argument, but is otherwise ignored. +As a special case, if this command is immediately followed by a +character that is neither a digit or minus sign, the argument count +for the next command is multiplied by four. +The argument count is initially one, so executing this function the +first time makes the argument count four, a second time makes the +argument count sixteen, and so on. +.PD +.SS Completing +.PP +.PD 0 +.TP +.B complete (TAB) +Attempt to perform completion on the text before point. +.B Bash +attempts completion treating the text as a variable (if the +text begins with \fB$\fP), username (if the text begins with +\fB~\fP), hostname (if the text begins with \fB@\fP), or +command (including aliases and functions) in turn. If none +of these produces a match, filename completion is attempted. +.TP +.B possible\-completions (M\-?) +List the possible completions of the text before point. +.TP +.B insert\-completions (M\-*) +Insert all completions of the text before point +that would have been generated by +\fBpossible\-completions\fP. +.TP +.B menu\-complete +Similar to \fBcomplete\fP, but replaces the word to be completed +with a single match from the list of possible completions. +Repeated execution of \fBmenu\-complete\fP steps through the list +of possible completions, inserting each match in turn. +At the end of the list of completions, the bell is rung +(subject to the setting of \fBbell\-style\fP) +and the original text is restored. +An argument of \fIn\fP moves \fIn\fP positions forward in the list +of matches; a negative argument may be used to move backward +through the list. +This command is intended to be bound to \fBTAB\fP, but is unbound +by default. +.TP +.B delete\-char\-or\-list +Deletes the character under the cursor if not at the beginning or +end of the line (like \fBdelete\-char\fP). +If at the end of the line, behaves identically to +\fBpossible\-completions\fP. +This command is unbound by default. +.TP +.B complete\-filename (M\-/) +Attempt filename completion on the text before point. +.TP +.B possible\-filename\-completions (C\-x /) +List the possible completions of the text before point, +treating it as a filename. +.TP +.B complete\-username (M\-~) +Attempt completion on the text before point, treating +it as a username. +.TP +.B possible\-username\-completions (C\-x ~) +List the possible completions of the text before point, +treating it as a username. +.TP +.B complete\-variable (M\-$) +Attempt completion on the text before point, treating +it as a shell variable. +.TP +.B possible\-variable\-completions (C\-x $) +List the possible completions of the text before point, +treating it as a shell variable. +.TP +.B complete\-hostname (M\-@) +Attempt completion on the text before point, treating +it as a hostname. +.TP +.B possible\-hostname\-completions (C\-x @) +List the possible completions of the text before point, +treating it as a hostname. +.TP +.B complete\-command (M\-!) +Attempt completion on the text before point, treating +it as a command name. Command completion attempts to +match the text against aliases, reserved words, shell +functions, shell builtins, and finally executable filenames, +in that order. +.TP +.B possible\-command\-completions (C\-x !) +List the possible completions of the text before point, +treating it as a command name. +.TP +.B dynamic\-complete\-history (M\-TAB) +Attempt completion on the text before point, comparing +the text against lines from the history list for possible +completion matches. +.TP +.B complete\-into\-braces (M\-{) +Perform filename completion and insert the list of possible completions +enclosed within braces so the list is available to the shell (see +.B Brace Expansion +above). +.PD +.SS Keyboard Macros +.PP +.PD 0 +.TP +.B start\-kbd\-macro (C\-x (\^) +Begin saving the characters typed into the current keyboard macro. +.TP +.B end\-kbd\-macro (C\-x )\^) +Stop saving the characters typed into the current keyboard macro +and store the definition. +.TP +.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. +.PD +.SS Miscellaneous +.PP +.PD 0 +.TP +.B re\-read\-init\-file (C\-x C\-r) +Read in the contents of the \fIinputrc\fP file, and incorporate +any bindings or variable assignments found there. +.TP +.B abort (C\-g) +Abort the current editing command and +ring the terminal's bell (subject to the setting of +.BR bell\-style ). +.TP +.B do\-uppercase\-version (M\-a, M\-b, M\-\fIx\fP, ...) +If the metafied character \fIx\fP is lowercase, run the command +that is bound to the corresponding uppercase character. +.TP +.B prefix\-meta (ESC) +Metafy the next character typed. +.SM +.B ESC +.B f +is equivalent to +.BR Meta\-f . +.TP +.B undo (C\-_, C\-x C\-u) +Incremental undo, separately remembered for each line. +.TP +.B revert\-line (M\-r) +Undo all changes made to this line. This is like executing the +.B undo +command enough times to return the line to its initial state. +.TP +.B tilde\-expand (M\-&) +Perform tilde expansion on the current word. +.TP +.B set\-mark (C\-@, M\-) +Set the mark to the point. If a +numeric argument is supplied, the mark is set to that position. +.TP +.B exchange\-point\-and\-mark (C\-x C\-x) +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. +.TP +.B character\-search (C\-]) +A character is read and point is moved to the next occurrence of that +character. A negative count searches for previous occurrences. +.TP +.B character\-search\-backward (M\-C\-]) +A character is read and point is moved to the previous occurrence of that +character. A negative count searches for subsequent occurrences. +.TP +.B insert\-comment (M\-#) +Without a numeric argument, the value of the readline +.B comment\-begin +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 \fBcomment\-begin\fP, the value is inserted, otherwise +the characters in \fBcomment-begin\fP are deleted from the beginning of +the line. +In either case, the line is accepted as if a newline had been typed. +The default value of +\fBcomment\-begin\fP 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. +.TP +.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. +.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. +If a numeric argument is supplied, an asterisk is appended before +pathname expansion. +.TP +.B glob\-list\-expansions (C\-x g) +The list of expansions that would have been generated by +.B glob\-expand\-word +is displayed, and the line is redrawn. +If a numeric argument is supplied, an asterisk is appended before +pathname expansion. +.TP +.B dump\-functions +Print all of the functions and their key bindings 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 +of an \fIinputrc\fP file. +.TP +.B dump\-variables +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 +of an \fIinputrc\fP file. +.TP +.B dump\-macros +Print all of the readline key sequences bound to macros and the +strings they ouput. If a numeric argument is supplied, +the output is formatted in such a way that it can be made part +of an \fIinputrc\fP file. +.TP +.B display\-shell\-version (C\-x C\-v) +Display version information about the current instance of +.BR bash . +.PD +.SS Programmable Completion +.PP +When word completion is attempted for an argument to a command for +which a completion specification (a \fIcompspec\fP) has been defined +using the \fBcomplete\fP builtin (see +.SM +.B "SHELL BUILTIN COMMANDS" +below), the programmable completion facilities are invoked. +.PP +First, the command name is identified. +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. +.PP +Once a compspec has been found, it is used to generate the list of +matching words. +If a compspec is not found, the default \fBbash\fP completion as +described above under \fBCompleting\fP is performed. +.PP +First, the actions specified by the compspec are used. +Only matches which are prefixed by the word being completed are +returned. +When the +.B \-f +or +.B \-d +option is used for filename or directory name completion, the shell +variable +.SM +.B FIGNORE +is used to filter the matches. +.PP +Any completions specified by a filename expansion pattern to the +\fB\-G\fP option are generated next. +The words generated by the pattern need not match the word +being completed. +The +.SM +.B GLOBIGNORE +shell variable is not used to filter the matches, but the +.SM +.B FIGNORE +variable is used. +.PP +Next, the string specified as the argument to the \fB\-W\fP option +is considered. +The string is first split using the characters in the +.SM +.B IFS +special variable as delimiters. +Shell quoting is honored. +Each word is then expanded using +brace expansion, tilde expansion, parameter and variable expansion, +command substitution, arithmetic expansion, and pathname expansion, +as described above under +.SM +.BR EXPANSION . +The results are split using the rules described above under +\fBWord Splitting\fP. +The results of the expansion are prefix-matched against the word being +completed, and the matching words become the possible completions. +.PP +After these matches have been generated, any shell function or command +specified with the \fB\-F\fP and \fB\-C\fP options is invoked. +When the command or function is invoked, the +.SM +.B COMP_LINE +and +.SM +.B COMP_POINT +variables are assigned values as described above under +\fBShell Variables\fP. +If a shell function is being invoked, the +.SM +.B COMP_WORDS +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. +No filtering of the generated completions against the word being completed +is performed; the function or command has complete freedom in generating +the matches. +.PP +Any function specified with \fB\-F\fP is invoked first. +The function may use any of the shell facilities, including the +\fBcompgen\fP builtin described below, to generate the matches. +It must put the possible completions in the +.SM +.B COMPREPLY +array variable. +.PP +Next, any command specified with the \fB\-C\fP option is invoked +in an environment 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. +.PP +After all of the possible completions are generated, any filter +specified with the \fB\-X\fP option is applied to the list. +The filter is a pattern as used for pathname expansion; a \fB&\fP +in the pattern is replaced with the text of the word being completed. +A literal \fB&\fP 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 \fB!\fP negates the pattern; in this case any completion +not matching the pattern will be removed. +.PP +Finally, any prefix and suffix specified with the \fB\-P\fP and \fB\-S\fP +options are added to each member of the completion list, and the result is +returned to the readline completion code as the list of possible +completions. +.PP +If the previously-applied actions do not generate any matches, and the +\fB\-o dirnames\fP option was supplied to \fBcomplete\fP when the +compspec was defined, directory name completion is attempted. +.PP +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 \fBbash\fP completions are not attempted, and the readline +default of filename completion is disabled. +If the \fB-o default\fP option was supplied to \fBcomplete\fP when the +compspec was defined, readline's default completion will be performed +if the compspec generates no matches. +.PP +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 \fBmark\-directories\fP readline variable, regardless +of the setting of the \fBmark-symlinked\-directories\fP readline variable. +.SH HISTORY +When the +.B \-o history +option to the +.B set +builtin is enabled, the shell provides access to the +\fIcommand history\fP, +the list of commands previously typed. +The value of the \fBHISTSIZE\fP variable is used as the +number of commands to save in a history list. +The text of the last +.SM +.B HISTSIZE +commands (default 500) is saved. The shell +stores each command in the history list prior to parameter and +variable expansion (see +.SM +.B EXPANSION +above) but after history expansion is performed, subject to the +values of the shell variables +.SM +.B HISTIGNORE +and +.SM +.BR HISTCONTROL . +.PP +On startup, the history is initialized from the file named by +the variable +.SM +.B HISTFILE +(default \fI~/.bash_history\fP). +The file named by the value of +.SM +.B HISTFILE +is truncated, if necessary, to contain no more than +the number of lines specified by the value of +.SM +.BR HISTFILESIZE . +When an interactive shell exits, the last +.SM +.B $HISTSIZE +lines are copied from the history list to +.SM +.BR $HISTFILE . +If the +.B histappend +shell option is enabled +(see the description of +.B shopt +under +.SM +.B "SHELL BUILTIN COMMANDS" +below), the lines are appended to the history file, +otherwise the history file is overwritten. +If +.SM +.B HISTFILE +is unset, or if the history file is unwritable, the history is +not saved. After saving the history, the history file is truncated +to contain no more than +.SM +.B HISTFILESIZE +lines. If +.SM +.B HISTFILESIZE +is not set, no truncation is performed. +.PP +The builtin command +.B fc +(see +.SM +.B SHELL BUILTIN COMMANDS +below) may be used to list or edit and re-execute a portion of +the history list. +The +.B history +builtin may be used to display or modify the history list and +manipulate the history file. +When using command-line editing, search commands +are available in each editing mode that provide access to the +history list. +.PP +The shell allows control over which commands are saved on the history +list. The +.SM +.B HISTCONTROL +and +.SM +.B HISTIGNORE +variables may be set to cause the shell to save only a subset of the +commands entered. +The +.B cmdhist +shell option, if enabled, causes the shell to attempt to save each +line of a multi-line command in the same history entry, adding +semicolons where necessary to preserve syntactic correctness. +The +.B lithist +shell option causes the shell to save the command with embedded newlines +instead of semicolons. See the description of the +.B shopt +builtin below under +.SM +.B "SHELL BUILTIN COMMANDS" +for information on setting and unsetting shell options. +.SH "HISTORY EXPANSION" +.PP +The shell supports a history expansion feature that +is similar to the history expansion in +.BR csh. +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 +option to the +.B set +builtin command (see +.SM +.B SHELL BUILTIN COMMANDS +below). Non-interactive shells do not perform history expansion +by default. +.PP +History expansions introduce words from the history list into +the input stream, making it easy to repeat commands, insert the +arguments to a previous command into the current input line, or +fix errors in previous commands quickly. +.PP +History expansion is performed immediately after a complete line +is read, before the shell breaks it into words. +It takes place in two parts. +The first is to determine which line from the history list +to use during substitution. +The second is to select portions of that line for inclusion into +the current one. +The line selected from the history is the \fIevent\fP, +and the portions of that line that are acted upon are \fIwords\fP. +Various \fImodifiers\fP are available to manipulate the selected words. +The line is broken into words in the same fashion as when reading input, +so that several \fImetacharacter\fP-separated words surrounded by +quotes are considered one word. +History expansions are introduced by the appearance of the +history expansion character, which is \^\fB!\fP\^ by default. +Only backslash (\^\fB\e\fP\^) and single quotes can quote +the history expansion character. +.PP +Several shell options settable with the +.B shopt +builtin may be used to tailor the behavior of history expansion. +If the +.B histverify +shell option is enabled (see the description of the +.B shopt +builtin), and +.B readline +is being used, history substitutions are not immediately passed to +the shell parser. +Instead, the expanded line is reloaded into the +.B readline +editing buffer for further modification. +If +.B readline +is being used, and the +.B histreedit +shell option is enabled, a failed history substitution will be reloaded +into the +.B readline +editing buffer for correction. +The +.B \-p +option to the +.B history +builtin command may be used to see what a history expansion will +do before using it. +The +.B \-s +option to the +.B history +builtin may be used to add commands to the end of the history list +without actually executing them, so that they are available for +subsequent recall. +.PP +The shell allows control of the various characters used by the +history expansion mechanism (see the description of +.B histchars +above under +.BR "Shell Variables" ). +.SS Event Designators +.PP +An event designator is a reference to a command line entry in the +history list. +.PP +.PD 0 +.TP +.B ! +Start a history substitution, except when followed by a +.BR blank , +newline, = or ( (when the \fBextglob\fP shell option is enabled using +the \fBshopt\fP builtin). +.TP +.B !\fIn\fR +Refer to command line +.IR n . +.TP +.B !\-\fIn\fR +Refer to the current command line minus +.IR n . +.TP +.B !! +Refer to the previous command. This is a synonym for `!\-1'. +.TP +.B !\fIstring\fR +Refer to the most recent command starting with +.IR string . +.TP +.B !?\fIstring\fR\fB[?]\fR +Refer to the most recent command containing +.IR string . +The trailing \fB?\fP may be omitted if +.I string +is followed immediately by a newline. +.TP +.B \d\s+2^\s-2\u\fIstring1\fP\d\s+2^\s-2\u\fIstring2\fP\d\s+2^\s-2\u +Quick substitution. Repeat the last command, replacing +.I string1 +with +.IR string2 . +Equivalent to +``!!:s/\fIstring1\fP/\fIstring2\fP/'' +(see \fBModifiers\fP below). +.TP +.B !# +The entire command line typed so far. +.PD +.SS Word Designators +.PP +Word designators are used to select desired words from the event. +A +.B : +separates the event specification from the word designator. +It may be omitted if the word designator begins with a +.BR ^ , +.BR $ , +.BR * , +.BR \- , +or +.BR % . +Words are numbered from the beginning of the line, +with the first word being denoted by 0 (zero). +Words are inserted into the current line separated by single spaces. +.PP +.PD 0 +.TP +.B 0 (zero) +The zeroth word. For the shell, this is the command +word. +.TP +.I n +The \fIn\fRth word. +.TP +.B ^ +The first argument. That is, word 1. +.TP +.B $ +The last argument. +.TP +.B % +The word matched by the most recent `?\fIstring\fR?' search. +.TP +.I x\fB\-\fPy +A range of words; `\-\fIy\fR' abbreviates `0\-\fIy\fR'. +.TP +.B * +All of the words but the zeroth. This is a synonym +for `\fI1\-$\fP'. It is not an error to use +.B * +if there is just one +word in the event; the empty string is returned in that case. +.TP +.B x* +Abbreviates \fIx\-$\fP. +.TP +.B x\- +Abbreviates \fIx\-$\fP like \fBx*\fP, but omits the last word. +.PD +.PP +If a word designator is supplied without an event specification, the +previous command is used as the event. +.SS Modifiers +.PP +After the optional word designator, there may appear a sequence of +one or more of the following modifiers, each preceded by a `:'. +.PP +.PD 0 +.PP +.TP +.B h +Remove a trailing file name component, leaving only the head. +.TP +.B t +Remove all leading file name components, leaving the tail. +.TP +.B r +Remove a trailing suffix of the form \fI.xxx\fP, leaving the +basename. +.TP +.B e +Remove all but the trailing suffix. +.TP +.B p +Print the new command but do not execute it. +.TP +.B q +Quote the substituted words, escaping further substitutions. +.TP +.B x +Quote the substituted words as with +.BR q , +but break into words at +.B blanks +and newlines. +.TP +.B s/\fIold\fP/\fInew\fP/ +Substitute +.I new +for the first occurrence of +.I old +in the event line. Any delimiter can be used in place of /. The +final delimiter is optional if it is the last character of the +event line. The delimiter may be quoted in +.I old +and +.I new +with a single backslash. If & appears in +.IR new , +it is replaced by +.IR old . +A single backslash will quote the &. If +.I old +is null, it is set to the last +.I old +substituted, or, if no previous history substitutions took place, +the last +.I string +in a +.B !?\fIstring\fR\fB[?]\fR +search. +.TP +.B & +Repeat the previous substitution. +.TP +.B g +Cause changes to be applied over the entire event line. This is +used in conjunction with `\fB:s\fP' (e.g., `\fB:gs/\fIold\fP/\fInew\fP/\fR') +or `\fB:&\fP'. If used with +`\fB:s\fP', any delimiter can be used +in place of /, and the final delimiter is optional +if it is the last character of the event line. +An \fBa\fP may be used as a synonym for \fBg\fP. +.TP +.B G +Apply the following `\fBs\fP' modifier once to each word in the event line. +.PD +.SH "SHELL BUILTIN COMMANDS" +.\" start of bash_builtins +.zZ +.PP +Unless otherwise noted, each builtin command documented in this +section as accepting options preceded by +.B \- +accepts +.B \-\- +to signify the end of the options. +.sp .5 +.PD 0 +.TP +\fB:\fP [\fIarguments\fP] +.PD +No effect; the command does nothing beyond expanding +.I arguments +and performing any specified +redirections. A zero exit code is returned. +.TP +\fB .\| \fP \fIfilename\fP [\fIarguments\fP] +.PD 0 +.TP +\fBsource\fP \fIfilename\fP [\fIarguments\fP] +.PD +Read and execute commands from +.I filename +in the current +shell environment and return the exit status of the last command +executed from +.IR filename . +If +.I filename +does not contain a slash, file names in +.SM +.B PATH +are used to find the directory containing +.IR filename . +The file searched for in +.SM +.B PATH +need not be executable. +When \fBbash\fP is not in \fIposix mode\fP, the current directory is +searched if no file is found in +.SM +.BR PATH . +If the +.B sourcepath +option to the +.B shopt +builtin command is turned off, the +.SM +.B PATH +is not searched. +If any \fIarguments\fP are supplied, they become the positional +parameters when \fIfilename\fP is executed. Otherwise the positional +parameters are unchanged. +The return status is the status of the last command exited within +the script (0 if no commands are executed), and false if +.I filename +is not found or cannot be read. +.TP +\fBalias\fP [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP] ...] +\fBAlias\fP with no arguments or with the +.B \-p +option prints the list of aliases in the form +\fBalias\fP \fIname\fP=\fIvalue\fP on standard output. +When arguments are supplied, an alias is defined for +each \fIname\fP whose \fIvalue\fP is given. +A trailing space in \fIvalue\fP causes the next word to be +checked for alias substitution when the alias is expanded. +For each \fIname\fP in the argument list for which no \fIvalue\fP +is supplied, the name and value of the alias is printed. +\fBAlias\fP returns true unless a \fIname\fP is given for which +no alias has been defined. +.TP +\fBbg\fP [\fIjobspec\fP] +Resume the suspended job \fIjobspec\fP in the background, as if it +had been started with +.BR & . +If \fIjobspec\fP is not present, the shell's notion of the +\fIcurrent job\fP is used. +.B bg +.I jobspec +returns 0 unless run when job control is disabled or, when run with +job control enabled, if \fIjobspec\fP was not found or started without +job control. +.TP +\fBbind\fP [\fB\-m\fP \fIkeymap\fP] [\fB\-lpsvPSV\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] +.TP +\fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fB\-f\fP \fIfilename\fP +.TP +\fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fB\-x\fP \fIkeyseq\fP:\fIshell\-command\fP +.TP +\fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fIkeyseq\fP:\fIfunction\-name\fP +.TP +\fBbind\fP \fIreadline\-command\fP +.PD +Display current +.B readline +key and function bindings, bind a key sequence to a +.B readline +function or macro, or set a +.B readline +variable. +Each non-option argument is a command as it would appear in +.IR .inputrc , +but each binding or command must be passed as a separate argument; +e.g., '"\eC\-x\eC\-r": re\-read\-init\-file'. +Options, if supplied, have the following meanings: +.RS +.PD 0 +.TP +.B \-m \fIkeymap\fP +Use +.I keymap +as the keymap to be affected by the subsequent bindings. +Acceptable +.I keymap +names are +\fIemacs, emacs\-standard, emacs\-meta, emacs\-ctlx, vi, +vi\-move, vi\-command\fP, and +.IR vi\-insert . +\fIvi\fP is equivalent to \fIvi\-command\fP; \fIemacs\fP is +equivalent to \fIemacs\-standard\fP. +.TP +.B \-l +List the names of all \fBreadline\fP functions. +.TP +.B \-p +Display \fBreadline\fP function names and bindings in such a way +that they can be re-read. +.TP +.B \-P +List current \fBreadline\fP function names and bindings. +.TP +.B \-v +Display \fBreadline\fP variable names and values in such a way that they +can be re-read. +.TP +.B \-V +List current \fBreadline\fP variable names and values. +.TP +.B \-s +Display \fBreadline\fP key sequences bound to macros and the strings +they output in such a way that they can be re-read. +.TP +.B \-S +Display \fBreadline\fP key sequences bound to macros and the strings +they output. +.TP +.B \-f \fIfilename\fP +Read key bindings from \fIfilename\fP. +.TP +.B \-q \fIfunction\fP +Query about which keys invoke the named \fIfunction\fP. +.TP +.B \-u \fIfunction\fP +Unbind all keys bound to the named \fIfunction\fP. +.TP +.B \-r \fIkeyseq\fP +Remove any current binding for \fIkeyseq\fP. +.TP +.B \-x \fIkeyseq\fP:\fIshell\-command\fP +Cause \fIshell\-command\fP to be executed whenever \fIkeyseq\fP is +entered. +.PD +.PP +The return value is 0 unless an unrecognized option is given or an +error occurred. +.RE +.TP +\fBbreak\fP [\fIn\fP] +Exit from within a +.BR for , +.BR while , +.BR until , +or +.B select +loop. If \fIn\fP is specified, break \fIn\fP levels. +.I n +must be \(>= 1. If +.I n +is greater than the number of enclosing loops, all enclosing loops +are exited. The return value is 0 unless the shell is not executing +a loop when +.B break +is executed. +.TP +\fBbuiltin\fP \fIshell\-builtin\fP [\fIarguments\fP] +Execute the specified shell builtin, passing it +.IR arguments , +and return its exit status. +This is useful when defining a +function whose name is the same as a shell builtin, +retaining the functionality of the builtin within the function. +The \fBcd\fP builtin is commonly redefined this way. +The return status is false if +.I shell\-builtin +is not a shell builtin command. +.TP +\fBcd\fP [\fB\-L|-P\fP] [\fIdir\fP] +Change the current directory to \fIdir\fP. The variable +.SM +.B HOME +is the +default +.IR dir . +The variable +.SM +.B CDPATH +defines the search path for the directory containing +.IR dir . +Alternative directory names in +.SM +.B CDPATH +are separated by a colon (:). A null directory name in +.SM +.B CDPATH +is the same as the current directory, i.e., ``\fB.\fP''. If +.I dir +begins with a slash (/), +then +.SM +.B CDPATH +is not used. The +.B \-P +option says to use the physical directory structure instead of +following symbolic links (see also the +.B \-P +option to the +.B set +builtin command); the +.B \-L +option forces symbolic links to be followed. An argument of +.B \- +is equivalent to +.SM +.BR $OLDPWD . +The return value is true if the directory was successfully changed; +false otherwise. +.TP +\fBcaller\fP [\fIexpr\fP] +Returns the context of any active subroutine call (a shell function or +a script executed with the \fB.\fP or \fBsource\fP builtins. +Without \fIexpr\fP, \fBcaller\fP displays the line number and source +filename of the current subroutine call. +If a non-negative integer is supplied as \fIexpr\fP, \fBcaller\fP +displays the line number, subroutine name, and source file corresponding +to that position in the current execution call stack. This extra +information may be used, for example, to print a stack trace. The +current frame is frame 0. +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 +\fBcommand\fP [\fB\-pVv\fP] \fIcommand\fP [\fIarg\fP ...] +Run +.I command +with +.I args +suppressing the normal shell function lookup. Only builtin +commands or commands found in the +.SM +.B PATH +are executed. If the +.B \-p +option is given, the search for +.I command +is performed using a default value for +.B PATH +that is guaranteed to find all of the standard utilities. +If either the +.B \-V +or +.B \-v +option is supplied, a description of +.I command +is printed. The +.B \-v +option causes a single word indicating the command or file name +used to invoke +.I command +to be displayed; the +.B \-V +option produces a more verbose description. +If the +.B \-V +or +.B \-v +option is supplied, the exit status is 0 if +.I command +was found, and 1 if not. If neither option is supplied and +an error occurred or +.I command +cannot be found, the exit status is 127. Otherwise, the exit status of the +.B command +builtin is the exit status of +.IR command . +.TP +\fBcompgen\fP [\fIoption\fP] [\fIword\fP] +Generate possible completion matches for \fIword\fP according to +the \fIoption\fPs, which may be any option accepted by the +.B complete +builtin with the exception of \fB\-p\fP and \fB\-r\fP, and write +the matches to the standard output. +When using the \fB\-F\fP or \fB\-C\fP options, the various shell variables +set by the programmable completion facilities, while available, will not +have useful values. +.sp 1 +The matches will be generated in the same way as if the programmable +completion code had generated them directly from a completion specification +with the same flags. +If \fIword\fP is specified, only those completions matching \fIword\fP +will be displayed. +.sp 1 +The return value is true unless an invalid option is supplied, or no +matches were generated. +.TP +\fBcomplete\fP [\fB\-abcdefgjksuv\fP] [\fB\-o\fP \fIcomp-option\fP] [\fB\-A\fP \fIaction\fP] [\fB\-G\fP \fIglobpat\fP] [\fB\-W\fP \fIwordlist\fP] [\fB\-P\fP \fIprefix\fP] [\fB\-S\fP \fIsuffix\fP] +.br +[\fB\-X\fP \fIfilterpat\fP] [\fB\-F\fP \fIfunction\fP] [\fB\-C\fP \fIcommand\fP] \fIname\fP [\fIname ...\fP] +.PD 0 +.TP +\fBcomplete\fP \fB\-pr\fP [\fIname\fP ...] +.PD +Specify how arguments to each \fIname\fP should be completed. +If the \fB\-p\fP 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 \fB\-r\fP option removes a completion specification for +each \fIname\fP, or, if no \fIname\fPs are supplied, all +completion specifications. +.sp 1 +The process of applying these completion specifications when word completion +is attempted is described above under \fBProgrammable Completion\fP. +.sp 1 +Other options, if specified, have the following meanings. +The arguments to the \fB\-G\fP, \fB\-W\fP, and \fB\-X\fP options +(and, if necessary, the \fB\-P\fP and \fB\-S\fP options) +should be quoted to protect them from expansion before the +.B complete +builtin is invoked. +.RS +.PD 0 +.TP 8 +\fB\-o\fP \fIcomp-option\fP +The \fIcomp-option\fP controls several aspects of the compspec's behavior +beyond the simple generation of completions. +\fIcomp-option\fP may be one of: +.RS +.TP 8 +.B default +Use readline's default filename completion if the compspec generates +no matches. +.TP 8 +.B dirnames +Perform directory name completion if the compspec generates no matches. +.TP 8 +.B filenames +Tell readline that the compspec generates filenames, so it can perform any +filename\-specific processing (like adding a slash to directory names or +suppressing trailing spaces). Intended to be used with shell functions. +.TP 8 +.B nospace +Tell readline not to append a space (the default) to words completed at +the end of the line. +.RE +.TP 8 +\fB\-A\fP \fIaction\fP +The \fIaction\fP may be one of the following to generate a list of possible +completions: +.RS +.TP 8 +.B alias +Alias names. May also be specified as \fB\-a\fP. +.TP 8 +.B arrayvar +Array variable names. +.TP 8 +.B binding +\fBReadline\fP key binding names. +.TP 8 +.B builtin +Names of shell builtin commands. May also be specified as \fB\-b\fP. +.TP 8 +.B command +Command names. May also be specified as \fB\-c\fP. +.TP 8 +.B directory +Directory names. May also be specified as \fB\-d\fP. +.TP 8 +.B disabled +Names of disabled shell builtins. +.TP 8 +.B enabled +Names of enabled shell builtins. +.TP 8 +.B export +Names of exported shell variables. May also be specified as \fB\-e\fP. +.TP 8 +.B file +File names. May also be specified as \fB\-f\fP. +.TP 8 +.B function +Names of shell functions. +.TP 8 +.B group +Group names. May also be specified as \fB\-g\fP. +.TP 8 +.B helptopic +Help topics as accepted by the \fBhelp\fP builtin. +.TP 8 +.B hostname +Hostnames, as taken from the file specified by the +.SM +.B HOSTFILE +shell variable. +.TP 8 +.B job +Job names, if job control is active. May also be specified as \fB\-j\fP. +.TP 8 +.B keyword +Shell reserved words. May also be specified as \fB\-k\fP. +.TP 8 +.B running +Names of running jobs, if job control is active. +.TP 8 +.B service +Service names. May also be specified as \fB\-s\fP. +.TP 8 +.B setopt +Valid arguments for the \fB\-o\fP option to the \fBset\fP builtin. +.TP 8 +.B shopt +Shell option names as accepted by the \fBshopt\fP builtin. +.TP 8 +.B signal +Signal names. +.TP 8 +.B stopped +Names of stopped jobs, if job control is active. +.TP 8 +.B user +User names. May also be specified as \fB\-u\fP. +.TP 8 +.B variable +Names of all shell variables. May also be specified as \fB\-v\fP. +.RE +.TP 8 +\fB\-G\fP \fIglobpat\fP +The filename expansion pattern \fIglobpat\fP is expanded to generate +the possible completions. +.TP 8 +\fB\-W\fP \fIwordlist\fP +The \fIwordlist\fP is split using the characters in the +.SM +.B IFS +special variable as delimiters, and each resultant word is expanded. +The possible completions are the members of the resultant list which +match the word being completed. +.TP 8 +\fB\-C\fP \fIcommand\fP +\fIcommand\fP is executed in a subshell environment, and its output is +used as the possible completions. +.TP 8 +\fB\-F\fP \fIfunction\fP +The shell function \fIfunction\fP is executed in the current shell +environment. +When it finishes, the possible completions are retrieved from the value +of the +.SM +.B COMPREPLY +array variable. +.TP 8 +\fB\-X\fP \fIfilterpat\fP +\fIfilterpat\fP is a pattern as used for filename expansion. +It is applied to the list of possible completions generated by the +preceding options and arguments, and each completion matching +\fIfilterpat\fP is removed from the list. +A leading \fB!\fP in \fIfilterpat\fP negates the pattern; in this +case, any completion not matching \fIfilterpat\fP is removed. +.TP 8 +\fB\-P\fP \fIprefix\fP +\fIprefix\fP is added at the beginning of each possible completion +after all other options have been applied. +.TP 8 +\fB\-S\fP \fIsuffix\fP +\fIsuffix\fP is appended to each possible completion +after all other options have been applied. +.PD +.PP +The return value is true unless an invalid option is supplied, an option +other than \fB\-p\fP or \fB\-r\fP is supplied without a \fIname\fP +argument, an attempt is made to remove a completion specification for +a \fIname\fP for which no specification exists, or +an error occurs adding a completion specification. +.RE +.TP +\fBcontinue\fP [\fIn\fP] +Resume the next iteration of the enclosing +.BR for , +.BR while , +.BR until , +or +.B select +loop. +If +.I n +is specified, resume at the \fIn\fPth enclosing loop. +.I n +must be \(>= 1. If +.I n +is greater than the number of enclosing loops, the last enclosing loop +(the ``top-level'' loop) is resumed. The return value is 0 unless the +shell is not executing a loop when +.B continue +is executed. +.TP +\fBdeclare\fP [\fB\-afFirtx\fP] [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP] ...] +.PD 0 +.TP +\fBtypeset\fP [\fB\-afFirtx\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. +The +.B \-p +option will display the attributes and values of each +.IR name . +When +.B \-p +is used, additional options are ignored. +The +.B \-F +option inhibits the display of function definitions; only the +function name and attributes are printed. +If the \fBextdebug\fP shell option is enabled using \fBshopt\fP, +the source file name and line number where the function is defined +are displayed as well. The +.B \-F +option implies +.BR \-f . +The following options can +be used to restrict output to variables with the specified attribute or +to give variables attributes: +.RS +.PD 0 +.TP +.B \-a +Each \fIname\fP is an array variable (see +.B Arrays +above). +.TP +.B \-f +Use function names only. +.TP +.B \-i +The variable is treated as an integer; arithmetic evaluation (see +.SM +.B "ARITHMETIC EVALUATION" ") " +is performed when the variable is assigned a value. +.TP +.B \-r +Make \fIname\fPs readonly. These names cannot then be assigned values +by subsequent assignment statements or unset. +.TP +.B \-t +Give each \fIname\fP the \fItrace\fP attribute. +Traced functions inherit the \fBDEBUG\fP trap from the calling shell. +The trace attribute has no special meaning for variables. +.TP +.B \-x +Mark \fIname\fPs for export to subsequent commands via the environment. +.PD +.PP +Using `+' instead of `\-' +turns off the attribute instead, with the exception that \fB+a\fP +may not be used to destroy an array variable. When used in a function, +makes each +\fIname\fP local, as with the +.B local +command. +If a variable name is followed by =\fIvalue\fP, the value of +the variable is set to \fIvalue\fP. +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'', +.if t \f(CW\-f foo=bar\fP, +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 +.B Arrays +above), one of the \fInames\fP 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 \fB\-f\fP. +.RE +.TP +.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. +Directories are added to the list with the +.B pushd +command; the +.B popd +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. +.TP +.B \-p +Print the directory stack with one entry per line. +.TP +.B \-v +Print the directory stack with one entry per line, +prefixing each entry with its index in the stack. +.PD +.PP +The return value is 0 unless an +invalid option is supplied or \fIn\fP indexes beyond the end +of the directory stack. +.RE +.TP +\fBdisown\fP [\fB\-ar\fP] [\fB\-h\fP] [\fIjobspec\fP ...] +Without options, each +.I jobspec +is removed from the table of active jobs. +If the \fB\-h\fP option is given, each +.I jobspec +is not removed from the table, but is marked so that +.SM +.B SIGHUP +is not sent to the job if the shell receives a +.SM +.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 +.B \-r +option without a +.I jobspec +argument restricts operation to running jobs. +The return value is 0 unless a +.I jobspec +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. +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 +.B \-E +option disables the interpretation of these escape characters, +even on systems where they are interpreted by default. +The \fBxpg_echo\fP shell option may be used to +dynamically determine whether or not \fBecho\fP expands these +escape characters by default. +.B echo +does not interpret +.B \-\- +to mean the end of options. +.B echo +interprets the following escape sequences: +.RS +.PD 0 +.TP +.B \ea +alert (bell) +.TP +.B \eb +backspace +.TP +.B \ec +suppress trailing newline +.TP +.B \ee +an escape character +.TP +.B \ef +form feed +.TP +.B \en +new line +.TP +.B \er +carriage return +.TP +.B \et +horizontal tab +.TP +.B \ev +vertical tab +.TP +.B \e\e +backslash +.TP +.B \e0\fInnn\fP +the eight-bit character whose value is the octal value \fInnn\fP +(zero to three octal digits) +.TP +.B \e\fInnn\fP +the eight-bit character whose value is the octal value \fInnn\fP +(one to three octal digits) +.TP +.B \ex\fIHH\fP +the eight-bit character whose value is the hexadecimal value \fIHH\fP +(one or two hex digits) +.PD +.RE +.TP +\fBenable\fP [\fB\-adnps\fP] [\fB\-f\fP \fIfilename\fP] [\fIname\fP ...] +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 \fB\-n\fP is used, each \fIname\fP +is disabled; otherwise, +\fInames\fP are enabled. For example, to use the +.B test +binary found via the +.SM +.B PATH +instead of the shell builtin version, run +.if t \f(CWenable -n test\fP. +.if n ``enable -n test''. +The +.B \-f +option means to load the new builtin command +.I name +from shared object +.IR filename , +on systems that support dynamic loading. The +.B \-d +option will delete a builtin previously loaded with +.BR \-f . +If no \fIname\fP arguments are given, or if the +.B \-p +option is supplied, a list of shell builtins is printed. +With no other option arguments, the list consists of all enabled +shell builtins. +If \fB\-n\fP is supplied, only disabled builtins are printed. +If \fB\-a\fP is supplied, the list printed includes all builtins, with an +indication of whether or not each is enabled. +If \fB\-s\fP is supplied, the output is restricted to the POSIX +\fIspecial\fP builtins. +The return value is 0 unless a +.I name +is not a shell builtin or there is an error loading a new builtin +from a shared object. +.TP +\fBeval\fP [\fIarg\fP ...] +The \fIarg\fPs are read and concatenated together into a single +command. This command is then read and executed by the shell, and +its exit status is returned as the value of +.BR eval . +If there are no +.IR args , +or only null arguments, +.B eval +returns 0. +.TP +\fBexec\fP [\fB\-cl\fP] [\fB\-a\fP \fIname\fP] [\fIcommand\fP [\fIarguments\fP]] +If +.I command +is specified, it replaces the shell. +No new process is created. The +.I arguments +become the arguments to \fIcommand\fP. +If the +.B \-l +option is supplied, +the shell places a dash at the beginning of the zeroth arg passed to +.IR command . +This is what +.IR login (1) +does. The +.B \-c +option causes +.I command +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 +.I command +cannot be executed for some reason, a non-interactive shell exits, +unless the shell option +.B execfail +is enabled, in which case it returns failure. +An interactive shell returns failure if the file cannot be executed. +If +.I command +is not specified, any redirections take effect in the current shell, +and the return status is 0. If there is a redirection error, the +return status is 1. +.TP +\fBexit\fP [\fIn\fP] +Cause the shell to exit +with a status of \fIn\fP. If +.I n +is omitted, the exit status +is that of the last command executed. +A trap on +.SM +.B EXIT +is executed before the shell terminates. +.TP +\fBexport\fP [\fB\-fn\fP\^] [\fIname\fP[=\fIword\fP]] ... +.PD 0 +.TP +.B export \-p +.PD +The supplied +.I names +are marked for automatic export to the environment of +subsequently executed commands. If the +.B \-f +option is given, +the +.I names +refer to functions. +If no +.I names +are given, or if the +.B \-p +option is supplied, a list +of all names that are exported in this shell is printed. +The +.B \-n +option causes the export property to be removed from the +named variables. +If a variable name is followed by =\fIword\fP, the value of +the variable is set to \fIword\fP. +.B export +returns an exit status of 0 unless an invalid option is +encountered, +one of the \fInames\fP is not a valid shell variable name, or +.B \-f +is supplied with a +.I name +that is not a function. +.TP +\fBfc\fP [\fB\-e\fP \fIename\fP] [\fB\-nlr\fP] [\fIfirst\fP] [\fIlast\fP] +.PD 0 +.TP +\fBfc\fP \fB\-s\fP [\fIpat\fP=\fIrep\fP] [\fIcmd\fP] +.PD +Fix Command. In the first form, a range of commands from +.I first +to +.I last +is selected from the history list. +.I First +and +.I last +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 +.I last +is not specified it is set to +the current command for listing (so that +.if n ``fc \-l \-10'' +.if t \f(CWfc \-l \-10\fP +prints the last 10 commands) and to +.I first +otherwise. +If +.I first +is not specified it is set to the previous +command for editing and \-16 for listing. +.sp 1 +The +.B \-n +option suppresses +the command numbers when listing. The +.B \-r +option reverses the order of +the commands. If the +.B \-l +option is given, +the commands are listed on +standard output. Otherwise, the editor given by +.I ename +is invoked +on a file containing those commands. If +.I ename +is not given, the +value of the +.SM +.B FCEDIT +variable is used, and +the value of +.SM +.B EDITOR +if +.SM +.B FCEDIT +is not set. If neither variable is set, +.FN vi +is used. When editing is complete, the edited commands are +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. +A useful alias to use with this is +.if n ``r="fc -s"'', +.if t \f(CWr='fc \-s'\fP, +so that typing +.if n ``r cc'' +.if t \f(CWr cc\fP +runs the last command beginning with +.if n ``cc'' +.if t \f(CWcc\fP +and typing +.if n ``r'' +.if t \f(CWr\fP +re-executes the last command. +.sp 1 +If the first form is used, the return value is 0 unless an invalid +option is encountered or +.I first +or +.I last +specify history lines out of range. +If the +.B \-e +option is supplied, the return value is the value of the last +command executed or failure if an error occurs with the temporary +file of commands. If the second form is used, the return status +is that of the command re-executed, unless +.I cmd +does not specify a valid history line, in which case +.B fc +returns failure. +.TP +\fBfg\fP [\fIjobspec\fP] +Resume +.I jobspec +in the foreground, and make it the current job. +If +.I jobspec +is not present, the shell's notion of the \fIcurrent job\fP is used. +The return value is that of the command placed into the foreground, +or failure if run when job control is disabled or, when run with +job control enabled, if +.I jobspec +does not specify a valid job or +.I jobspec +specifies a job that was started without job control. +.TP +\fBgetopts\fP \fIoptstring\fP \fIname\fP [\fIargs\fP] +.B getopts +is used by shell procedures to parse positional parameters. +.I optstring +contains the option characters to be recognized; if a character +is followed by a colon, the option is expected to have an +argument, which should be separated from it by white space. +The colon and question mark characters may not be used as +option characters. +Each time it is invoked, +.B getopts +places the next option in the shell variable +.IR name , +initializing +.I name +if it does not exist, +and the index of the next argument to be processed into the +variable +.SM +.BR OPTIND . +.SM +.B OPTIND +is initialized to 1 each time the shell or a shell script +is invoked. When an option requires an argument, +.B getopts +places that argument into the variable +.SM +.BR OPTARG . +The shell does not reset +.SM +.B OPTIND +automatically; it must be manually reset between multiple +calls to +.B getopts +within the same shell invocation if a new set of parameters +is to be used. +.sp 1 +When the end of options is encountered, \fBgetopts\fP exits with a +return value greater than zero. +\fBOPTIND\fP is set to the index of the first non-option argument, +and \fBname\fP is set to ?. +.sp 1 +.B getopts +normally parses the positional parameters, but if more arguments are +given in +.IR args , +.B getopts +parses those instead. +.sp 1 +.B getopts +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 +are printed when invalid options or missing option arguments are +encountered. +If the variable +.SM +.B OPTERR +is set to 0, no error messages will be displayed, even if the first +character of +.I optstring +is not a colon. +.sp 1 +If an invalid option is seen, +.B getopts +places ? into +.I name +and, if not silent, +prints an error message and unsets +.SM +.BR OPTARG . +If +.B getopts +is silent, +the option character found is placed in +.SM +.B OPTARG +and no diagnostic message is printed. +.sp 1 +If a required argument is not found, and +.B getopts +is not silent, +a question mark (\^\fB?\fP\^) is placed in +.IR name , +.SM +.B OPTARG +is unset, and a diagnostic message is printed. +If +.B getopts +is silent, then a colon (\^\fB:\fP\^) is placed in +.I name +and +.SM +.B OPTARG +is set to the option character found. +.sp 1 +.B getopts +returns true if an option, specified or unspecified, is found. +It returns false if the end of options is encountered or an +error occurs. +.TP +\fBhash\fP [\fB\-lr\fP] [\fB\-p\fP \fIfilename\fP] [\fB\-dt\fP] [\fIname\fP] +For each +.IR name , +the full file name of the command is determined by searching +the directories in +.B $PATH +and remembered. +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. +The +.B \-r +option causes the shell to forget all +remembered locations. +The +.B \-d +option causes the shell to forget the remembered location of each \fIname\fP. +If the +.B \-t +option is supplied, the full pathname to which each \fIname\fP corresponds +is printed. If multiple \fIname\fP arguments are supplied with \fB\-t\fP, +the \fIname\fP is printed before the hashed full pathname. +The +.B \-l +option causes output to be displayed in a format that may be reused as input. +If no arguments are given, or if only \fB\-l\fP is supplied, +information about remembered commands is printed. +The return status is true unless a +.I name +is not found or an invalid option is supplied. +.TP +\fBhelp\fP [\fB\-s\fP] [\fIpattern\fP] +Display helpful information about builtin commands. If +.I pattern +is specified, +.B help +gives detailed help on all commands matching +.IR pattern ; +otherwise help for all the builtins and shell control structures +is printed. +The \fB\-s\fP option restricts the information displayed to a short +usage synopsis. +The return status is 0 unless no command matches +.IR pattern . +.TP +\fBhistory [\fIn\fP] +.PD 0 +.TP +\fBhistory\fP \fB\-c\fP +.TP +\fBhistory \-d\fP \fIoffset\fP +.TP +\fBhistory\fP \fB\-anrw\fP [\fIfilename\fP] +.TP +\fBhistory\fP \fB\-p\fP \fIarg\fP [\fIarg ...\fP] +.TP +\fBhistory\fP \fB\-s\fP \fIarg\fP [\fIarg ...\fP] +.PD +With no options, display the command +history list with line numbers. Lines listed +with a +.B * +have been modified. An argument of +.I n +lists only the last +.I n +lines. If \fIfilename\fP is supplied, it is used as the +name of the history file; if not, the value of +.SM +.B HISTFILE +is used. Options, if supplied, have the following meanings: +.RS +.PD 0 +.TP +.B \-c +Clear the history list by deleting all the entries. +.TP +\fB\-d\fP \fIoffset\fP +Delete the history entry at position \fIoffset\fP. +.TP +.B \-a +Append the ``new'' history lines (history lines entered since the +beginning of the current \fBbash\fP session) to the history file. +.TP +.B \-n +Read the history lines not already read from the history +file into the current history list. These are lines +appended to the history file since the beginning of the +current \fBbash\fP session. +.TP +.B \-r +Read the contents of the history file +and use them as the current history. +.TP +.B \-w +Write the current history to the history file, overwriting the +history file's contents. +.TP +.B \-p +Perform history substitution on the following \fIargs\fP and display +the result on the standard output. +Does not store the results in the history list. +Each \fIarg\fP must be quoted to disable normal history expansion. +.TP +.B \-s +Store the +.I args +in the history list as a single entry. The last command in the +history list is removed before the +.I args +are added. +.PD +.PP +The return value is 0 unless an invalid option is encountered, an +error occurs while reading or writing the history file, an invalid +\fIoffset\fP is supplied as an argument to \fB\-d\fP, or the +history expansion supplied as an argument to \fB\-p\fP fails. +.RE +.TP +\fBjobs\fP [\fB\-lnprs\fP] [ \fIjobspec\fP ... ] +.PD 0 +.TP +\fBjobs\fP \fB\-x\fP \fIcommand\fP [ \fIargs\fP ... ] +.PD +The first form lists the active jobs. The options have the following +meanings: +.RS +.PD 0 +.TP +.B \-l +List process IDs +in addition to the normal information. +.TP +.B \-p +List only the process ID of the job's process group +leader. +.TP +.B \-n +Display information only about jobs that have changed status since +the user was last notified of their status. +.TP +.B \-r +Restrict output to running jobs. +.TP +.B \-s +Restrict output to stopped jobs. +.PD +.PP +If +.I jobspec +is given, output is restricted to information about that job. +The return status is 0 unless an invalid option is encountered +or an invalid +.I jobspec +is supplied. +.PP +If the +.B \-x +option is supplied, +.B jobs +replaces any +.I jobspec +found in +.I command +or +.I args +with the corresponding process group ID, and executes +.I command +passing it +.IR args , +returning its exit status. +.RE +.TP +\fBkill\fP [\fB\-s\fP \fIsigspec\fP | \fB\-n\fP \fIsignum\fP | \fB\-\fP\fIsigspec\fP] [\fIpid\fP | \fIjobspec\fP] ... +.PD 0 +.TP +\fBkill\fP \fB\-l\fP [\fIsigspec\fP | \fIexit_status\fP] +.PD +Send the signal named by +.I sigspec +or +.I signum +to the processes named by +.I pid +or +.IR jobspec . +.I sigspec +is either a signal name such as +.SM +.B SIGKILL +or a signal number; +.I signum +is a signal number. If +.I sigspec +is a signal name, the name may be +given with or without the +.SM +.B SIG +prefix. +If +.I sigspec +is not present, then +.SM +.B SIGTERM +is assumed. +An argument of +.B \-l +lists the signal names. +If any arguments are supplied when +.B \-l +is given, the names of the signals corresponding to the arguments are +listed, and the return status is 0. +The \fIexit_status\fP argument to +.B \-l +is a number specifying either a signal number or the exit status of +a process terminated by a signal. +.B kill +returns true if at least one signal was successfully sent, or false +if an error occurs or an invalid option is encountered. +.TP +\fBlet\fP \fIarg\fP [\fIarg\fP ...] +Each +.I arg +is an arithmetic expression to be evaluated (see +.SM +.BR "ARITHMETIC EVALUATION" ). +If the last +.I arg +evaluates to 0, +.B let +returns 1; 0 is returned otherwise. +.TP +\fBlocal\fP [\fIoption\fP] [\fIname\fP[=\fIvalue\fP] ...] +For each argument, a local variable named +.I name +is created, and assigned +.IR value . +The \fIoption\fP can be any of the options accepted by \fBdeclare\fP. +When +.B local +is used within a function, it causes the variable +.I name +to have a visible scope restricted to that function and its children. +With no operands, +.B local +writes a list of local variables to the standard output. It is +an error to use +.B local +when not within a function. The return status is 0 unless +.B local +is used outside a function, an invalid +.I name +is supplied, or +\fIname\fP is a readonly variable. +.TP +.B logout +Exit a login shell. +.TP +\fBpopd\fP [\-\fBn\fP] [+\fIn\fP] [\-\fIn\fP] +Removes entries from the directory stack. With no arguments, +removes the top directory from the stack, and performs a +.B cd +to the new top directory. +Arguments, if supplied, have the following meanings: +.RS +.PD 0 +.TP +\fB+\fP\fIn\fP +Removes the \fIn\fPth entry counting from the left of the list +shown by +.BR dirs , +starting with zero. For example: +.if n ``popd +0'' +.if t \f(CWpopd +0\fP +removes the first directory, +.if n ``popd +1'' +.if t \f(CWpopd +1\fP +the second. +.TP +\fB\-\fP\fIn\fP +Removes the \fIn\fPth entry counting from the right of the list +shown by +.BR dirs , +starting with zero. For example: +.if n ``popd -0'' +.if t \f(CWpopd -0\fP +removes the last directory, +.if n ``popd -1'' +.if t \f(CWpopd -1\fP +the next to last. +.TP +.B \-n +Suppresses the normal change of directory when removing directories +from the stack, so that only the stack is manipulated. +.PD +.PP +If the +.B popd +command is successful, a +.B dirs +is performed as well, and the return status is 0. +.B popd +returns false if an invalid option is encountered, the directory stack +is empty, a non-existent directory stack entry is specified, or the +directory change fails. +.RE +.TP +\fBprintf\fP \fIformat\fP [\fIarguments\fP] +Write the formatted \fIarguments\fP to the standard output under the +control of the \fIformat\fP. +The \fIformat\fP is a character string which contains three types of objects: +plain characters, which are simply copied to standard output, character +escape sequences, which are converted and copied to the standard output, and +format specifications, each of which causes printing of the next successive +\fIargument\fP. +In addition to the standard \fIprintf\fP(1) formats, \fB%b\fP causes +\fBprintf\fP to expand backslash escape sequences in the corresponding +\fIargument\fP, and \fB%q\fP causes \fBprintf\fP to output the corresponding +\fIargument\fP in a format that can be reused as shell input. +.sp 1 +The \fIformat\fP is reused as necessary to consume all of the \fIarguments\fP. +If the \fIformat\fP requires more \fIarguments\fP than are supplied, 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. +.TP +\fBpushd\fP [\fB\-n\fP] [\fIdir\fP] +.PD 0 +.TP +\fBpushd\fP [\fB\-n\fP] [+\fIn\fP] [\-\fIn\fP] +.PD +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, if supplied, have the following meanings: +.RS +.PD 0 +.TP +\fB+\fP\fIn\fP +Rotates the stack so that the \fIn\fPth directory +(counting from the left of the list shown by +.BR dirs , +starting with zero) +is at the top. +.TP +\fB\-\fP\fIn\fP +Rotates the stack so that the \fIn\fPth directory +(counting from the right of the list shown by +.BR dirs , +starting with zero) is at the top. +.TP +.B \-n +Suppresses the normal change of directory when adding directories +to the stack, so that only the stack is manipulated. +.TP +.I dir +Adds +.I dir +to the directory stack at the top, making it the +new current working directory. +.PD +.PP +If the +.B pushd +command is successful, a +.B dirs +is performed as well. +If the first form is used, +.B pushd +returns 0 unless the cd to +.I dir +fails. With the second form, +.B pushd +returns 0 unless the directory stack is empty, +a non-existent directory stack element is specified, +or the directory change to the specified new current directory +fails. +.RE +.TP +\fBpwd\fP [\fB\-LP\fP] +Print the absolute pathname of the current working directory. +The pathname printed contains no symbolic links if the +.B \-P +option is supplied or the +.B \-o physical +option to the +.B set +builtin command is enabled. +If the +.B \-L +option is used, the pathname printed may contain symbolic links. +The return status is 0 unless an error occurs while +reading the name of the current directory or an +invalid option is supplied. +.TP +\fBread\fP [\fB\-ers\fP] [\fB\-u\fP \fIfd\fP] [\fB\-t\fP \fItimeout\fP] [\fB\-a\fP \fIaname\fP] [\fB\-p\fP \fIprompt\fP] [\fB\-n\fP \fInchars\fP] [\fB\-d\fP \fIdelim\fP] [\fIname\fP ...] +One line is read from the standard input, or from the file descriptor +\fIfd\fP supplied as an argument to the \fB\-u\fP option, and the first word +is assigned to the first +.IR name , +the second word to the second +.IR name , +and so on, with leftover words and their intervening separators assigned +to the last +.IR name . +If there are fewer words read from the input stream than names, +the remaining names are assigned empty values. +The characters in +.SM +.B IFS +are used to split the line into words. +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: +.RS +.PD 0 +.TP +.B \-a \fIaname\fP +The words are assigned to sequential indices +of the array variable +.IR aname , +starting at 0. +.I aname +is unset before any new values are assigned. +Other \fIname\fP arguments are ignored. +.TP +.B \-d \fIdelim\fP +The first character of \fIdelim\fP is used to terminate the input line, +rather than newline. +.TP +.B \-e +If the standard input +is coming from a terminal, +.B readline +(see +.SM +.B READLINE +above) is used to obtain the line. +.TP +.B \-n \fInchars\fP +\fBread\fP returns after reading \fInchars\fP characters rather than +waiting for a complete line of input. +.TP +.B \-p \fIprompt\fP +Display \fIprompt\fP on standard error, without a +trailing newline, before attempting to read any input. The prompt +is displayed only if input is coming from a terminal. +.TP +.B \-r +Backslash does not act as an escape character. +The backslash is considered to be part of the line. +In particular, a backslash-newline pair may not be used as a line +continuation. +.TP +.B \-s +Silent mode. If input is coming from a terminal, characters are +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. +This option has no effect if \fBread\fP is not reading input from the +terminal or a pipe. +.TP +.B \-u \fIfd\FP +Read input from file descriptor \fIfd\fP. +.PD +.PP +If no +.I names +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, or an invalid file descriptor is supplied as the argument to +\fB\-u\fP. +.RE +.TP +\fBreadonly\fP [\fB\-apf\fP] [\fIname\fP[=\fIword\fP] ...] +.PD +The given +\fInames\fP are marked readonly; the values of these +.I names +may not be changed by subsequent assignment. +If the +.B \-f +option is supplied, the functions corresponding to the +\fInames\fP are so +marked. +The +.B \-a +option restricts the variables to arrays. +If no +.I name +arguments are given, or if the +.B \-p +option is supplied, a list of all readonly names is printed. +The +.B \-p +option causes output to be displayed in a format that +may be reused as input. +If a variable name is followed by =\fIword\fP, the value of +the variable is set to \fIword\fP. +The return status is 0 unless an invalid option is encountered, +one of the +.I names +is not a valid shell variable name, or +.B \-f +is supplied with a +.I name +that is not a function. +.TP +\fBreturn\fP [\fIn\fP] +Causes a function to exit with the return value specified by +.IR n . +If +.I 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 +.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. +Any command associated with the \fBRETURN\fP trap is executed +before execution resumes after the function or script. +.TP +\fBset\fP [\fB\-\-abefhkmnptuvxBCHP\fP] [\fB\-o\fP \fIoption\fP] [\fIarg\fP ...] +Without options, the name and value of each shell variable are displayed +in a format that can be reused as input. +The output is sorted according to the current locale. +When options are specified, they set or unset shell attributes. +Any arguments remaining after the options are processed are treated +as values for the positional parameters and are assigned, in order, to +.BR $1 , +.BR $2 , +.B ... +.BR $\fIn\fP . +Options, if specified, have the following meanings: +.RS +.PD 0 +.TP 8 +.B \-a +Automatically mark variables and functions which are modified or created +for export to the environment of subsequent commands. +.TP 8 +.B \-b +Report the status of terminated background jobs +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 \fIsimple command\fP (see +.SM +.B SHELL GRAMMAR +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 +or +.B until +keyword, +part of the test in an +.I if +statement, part of a +.B && +or +.B \(bv\(bv +list, or if the command's return value is +being inverted via +.BR ! . +A trap on \fBERR\fP, if set, is executed before the shell exits. +.TP 8 +.B \-f +Disable pathname expansion. +.TP 8 +.B \-h +Remember the location of commands as they are looked up for execution. +This is enabled by default. +.TP 8 +.B \-k +All arguments in the form of assignment statements +are placed in the environment for a command, not just +those that precede the command name. +.TP 8 +.B \-m +Monitor mode. Job control is enabled. This option is on +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. +.TP 8 +.B \-n +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. +.TP 8 +.B \-o \fIoption\-name\fP +The \fIoption\-name\fP can be one of the following: +.RS +.TP 8 +.B allexport +Same as +.BR \-a . +.TP 8 +.B braceexpand +Same as +.BR \-B . +.TP 8 +.B emacs +Use an emacs-style command line editing interface. This is enabled +by default when the shell is interactive, unless the shell is started +with the +.B \-\-noediting +option. +.TP 8 +.B errtrace +Same as +.BR \-E . +.TP 8 +.B functrace +Same as +.BR \-T . +.TP 8 +.B errexit +Same as +.BR \-e . +.TP 8 +.B hashall +Same as +.BR \-h . +.TP 8 +.B histexpand +Same as +.BR \-H . +.TP 8 +.B history +Enable command history, as described above under +.SM +.BR HISTORY . +This option is on by default in interactive shells. +.TP 8 +.B ignoreeof +The effect is as if the shell command +.if t \f(CWIGNOREEOF=10\fP +.if n ``IGNOREEOF=10'' +had been executed +(see +.B Shell Variables +above). +.TP 8 +.B keyword +Same as +.BR \-k . +.TP 8 +.B monitor +Same as +.BR \-m . +.TP 8 +.B noclobber +Same as +.BR \-C . +.TP 8 +.B noexec +Same as +.BR \-n . +.TP 8 +.B noglob +Same as +.BR \-f . +.B nolog +Currently ignored. +.TP 8 +.B notify +Same as +.BR \-b . +.TP 8 +.B nounset +Same as +.BR \-u . +.TP 8 +.B onecmd +Same as +.BR \-t . +.TP 8 +.B physical +Same as +.BR \-P . +.TP 8 +.B posix +Change the behavior of +.B bash +where the default operation differs +from the POSIX 1003.2 standard to match the standard (\fIposix mode\fP). +.TP 8 +.B privileged +Same as +.BR \-p . +.TP 8 +.B verbose +Same as +.BR \-v . +.TP 8 +.B vi +Use a vi-style command line editing interface. +.TP 8 +.B xtrace +Same as +.BR \-x . +.sp .5 +.PP +If +.B \-o +is supplied with no \fIoption\-name\fP, the values of the current options are +printed. +If +.B +o +is supplied with no \fIoption\-name\fP, a series of +.B set +commands to recreate the current option settings is displayed on +the standard output. +.RE +.TP 8 +.B \-p +Turn on +.I privileged +mode. In this mode, the +.SM +.B $ENV +and +.SM +.B $BASH_ENV +files are not processed, shell functions are not inherited from the +environment, and the +.SM +.B SHELLOPTS +variable, if it appears in the environment, is ignored. +If the shell is started with the effective user (group) id not equal to the +real user (group) id, and the \fB\-p\fP option is not supplied, these actions +are taken and the effective user id is set to the real user id. +If the \fB\-p\fP option is supplied at startup, the effective user id is +not reset. +Turning this option off causes the effective user +and group ids to be set to the real user and group ids. +.TP 8 +.B \-t +Exit after reading and executing one command. +.TP 8 +.B \-u +Treat unset variables as an error when performing +parameter expansion. If expansion is attempted on an +unset variable, the shell prints an error message, and, +if not interactive, exits with a non-zero status. +.TP 8 +.B \-v +Print shell input lines as they are read. +.TP 8 +.B \-x +After expanding each \fIsimple command\fP, +\fBfor\fP command, \fBcase\fP command, \fBselect\fP command, or +arithmetic \fBfor\fP command, display the expanded value of +.SM +.BR PS4 , +followed by the command and its expanded arguments +or associated word list. +.TP 8 +.B \-B +The shell performs brace expansion (see +.B Brace Expansion +above). This is on by default. +.TP 8 +.B \-C +If set, +.B bash +does not overwrite an existing file with the +.BR > , +.BR >& , +and +.B <> +redirection operators. This may be overridden when +creating output files by using the redirection operator +.B >| +instead of +.BR > . +.TP 8 +.B \-E +If set, any trap on \fBERR\fP is inherited by shell functions, command +substitutions, and commands executed in a subshell environment. +The \fBERR\fP trap is normally not inherited in such cases. +.TP 8 +.B \-H +Enable +.B ! +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 +commands such as +.B cd +that change the current working directory. It uses the +physical directory structure instead. By default, +.B bash +follows the logical chain of directories when performing commands +which change the current directory. +.TP 8 +.B \-T +If set, any trap on \fBDEBUG\fP is inherited by shell functions, command +substitutions, and commands executed in a subshell environment. +The \fBDEBUG\fP trap is normally not inherited in such cases. +.TP 8 +.B \-\- +If no arguments follow this option, then the positional parameters are +unset. Otherwise, the positional parameters are set to the +\fIarg\fPs, even if some of them begin with a +.BR \- . +.TP 8 +.B \- +Signal the end of options, cause all remaining \fIarg\fPs to be +assigned to the positional parameters. The +.B \-x +and +.B \-v +options are turned off. +If there are no \fIarg\fPs, +the positional parameters remain unchanged. +.PD +.PP +The options are off by default unless otherwise noted. +Using + rather than \- causes these options to be turned off. +The options can also be specified as arguments to an invocation of +the shell. +The current set of options may be found in +.BR $\- . +The return status is always true unless an invalid option is encountered. +.RE +.TP +\fBshift\fP [\fIn\fP] +The positional parameters from \fIn\fP+1 ... are renamed to +.B $1 +.B .... +Parameters represented by the numbers \fB$#\fP +down to \fB$#\fP\-\fIn\fP+1 are unset. +.I n +must be a non-negative number less than or equal to \fB$#\fP. +If +.I n +is 0, no parameters are changed. +If +.I n +is not given, it is assumed to be 1. +If +.I n +is greater than \fB$#\fP, the positional parameters are not changed. +The return status is greater than zero if +.I n +is greater than +.B $# +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. +With no options, or with the +.B \-p +option, a list of all settable options is displayed, with +an indication of whether or not each is set. +The \fB\-p\fP option causes output to be displayed in a form that +may be reused as input. +Other options have the following meanings: +.RS +.PD 0 +.TP +.B \-s +Enable (set) each \fIoptname\fP. +.TP +.B \-u +Disable (unset) each \fIoptname\fP. +.TP +.B \-q +Suppresses normal output (quiet mode); the return status indicates +whether the \fIoptname\fP is set or unset. +If multiple \fIoptname\fP arguments are given with +.BR \-q , +the return status is zero if all \fIoptnames\fP are enabled; non-zero +otherwise. +.TP +.B \-o +Restricts the values of \fIoptname\fP to be those defined for the +.B \-o +option to the +.B set +builtin. +.PD +.PP +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. +Unless otherwise noted, the \fBshopt\fP options are disabled (unset) +by default. +.PP +The return status when listing options is zero if all \fIoptnames\fP +are enabled, non-zero otherwise. When setting or unsetting options, +the return status is zero unless an \fIoptname\fP is not a valid shell +option. +.PP +The list of \fBshopt\fP options is: +.if t .sp .5v +.if n .sp 1v +.PD 0 +.TP 8 +.B cdable_vars +If set, an argument to the +.B cd +builtin command that +is not a directory is assumed to be the name of a variable whose +value is the directory to change to. +.TP 8 +.B cdspell +If set, minor errors in the spelling of a directory component in a +.B cd +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, +and the command proceeds. +This option is only used by interactive shells. +.TP 8 +.B checkhash +If set, \fBbash\fP checks that a command found in the hash +table exists before trying to execute it. If a hashed command no +longer exists, a normal path search is performed. +.TP 8 +.B checkwinsize +If set, \fBbash\fP checks the window size after each command +and, if necessary, updates the values of +.SM +.B LINES +and +.SM +.BR COLUMNS . +.TP 8 +.B cmdhist +If set, +.B bash +attempts to save all lines of a multiple-line +command in the same history entry. This allows +easy re-editing of multi-line commands. +.TP 8 +.B dotglob +If set, +.B bash +includes filenames beginning with a `.' in the results of pathname +expansion. +.TP 8 +.B execfail +If set, a non-interactive shell will not exit if +it cannot execute the file specified as an argument to the +.B exec +builtin command. An interactive shell does not exit if +.B exec +fails. +.TP 8 +.B expand_aliases +If set, aliases are expanded as described above under +.SM +.BR ALIASES . +This option is enabled by default for interactive shells. +.TP 8 +.B extdebug +If set, behavior intended for use by debuggers is enabled: +.RS +.TP +.B 1. +The \fB\-F\fP option to the \fBdeclare\fP builtin displays the source +file name and line number corresponding to each function name supplied +as an argument. +.TP +.B 2. +If the command run by the \fBDEBUG\fP trap returns a non-zero value, the +next command is skipped and not executed. +.TP +.B 3. +If the command run by the \fBDEBUG\fP trap returns a value of 2, and the +shell is executing in a subroutine (a shell function or a shell script +executed by the \fB.\fP or \fBsource\fP builtins), a call to +\fBreturn\fP is simulated. +.RE +.TP 8 +.B extglob +If set, the extended pattern matching features described above under +\fBPathname Expansion\fP are enabled. +.TP 8 +.B extquote +If set, \fB$\fP'\fIstring\fP' and \fB$\fP"\fIstring\fP" quoting is +performed within \fB${\fP\fIparameter\fP\fB}\fP expansions +enclosed in double quotes. This option is enabled by default. +.TP 8 +.B histappend +If set, the history list is appended to the file named by the value +of the +.B HISTFILE +variable when the shell exits, rather than overwriting the file. +.TP 8 +.B histreedit +If set, and +.B readline +is being used, a user is given the opportunity to re-edit a +failed history substitution. +.TP 8 +.B histverify +If set, and +.B readline +is being used, the results of history substitution are not immediately +passed to the shell parser. Instead, the resulting line is loaded into +the \fBreadline\fP editing buffer, allowing further modification. +.TP 8 +.B hostcomplete +If set, and +.B readline +is being used, \fBbash\fP will attempt to perform hostname completion when a +word containing a \fB@\fP is being completed (see +.B Completing +under +.SM +.B READLINE +above). +This is enabled by default. +.TP 8 +.B huponexit +If set, \fBbash\fP will send +.SM +.B SIGHUP +to all jobs when an interactive login shell exits. +.TP 8 +.B interactive_comments +If set, allow a word beginning with +.B # +to cause that word and all remaining characters on that +line to be ignored in an interactive shell (see +.SM +.B COMMENTS +above). This option is enabled by default. +.TP 8 +.B lithist +If set, and the +.B cmdhist +option is enabled, multi-line commands are saved to the history with +embedded newlines rather than using semicolon separators where possible. +.TP 8 +.B login_shell +The shell sets this option if it is started as a login shell (see +.SM +.B "INVOCATION" +above). +The value may not be changed. +.TP 8 +.B mailwarn +If set, and a file that \fBbash\fP is checking for mail has been +accessed since the last time it was checked, the message ``The mail in +\fImailfile\fP has been read'' is displayed. +.TP 8 +.B no_empty_cmd_completion +If set, and +.B readline +is being used, +.B bash +will not attempt to search the \fBPATH\fP for possible completions when +completion is attempted on an empty line. +.TP 8 +.B nocaseglob +If set, +.B bash +matches filenames in a case\-insensitive fashion when performing pathname +expansion (see +.B Pathname Expansion +above). +.TP 8 +.B nullglob +If set, +.B bash +allows patterns which match no +files (see +.B Pathname Expansion +above) +to expand to a null string, rather than themselves. +.TP 8 +.B progcomp +If set, the programmable completion facilities (see +\fBProgrammable Completion\fP above) are enabled. +This option is enabled by default. +.TP 8 +.B promptvars +If set, prompt strings undergo variable and parameter expansion after +being expanded as described in +.SM +.B PROMPTING +above. This option is enabled by default. +.TP 8 +.B restricted_shell +The shell sets this option if it is started in restricted mode (see +.SM +.B "RESTRICTED SHELL" +below). +The value may not be changed. +This is not reset when the startup files are executed, allowing +the startup files to discover whether or not a shell is restricted. +.TP 8 +.B shift_verbose +If set, the +.B shift +builtin prints an error message when the shift count exceeds the +number of positional parameters. +.TP 8 +.B sourcepath +If set, the +\fBsource\fP (\fB.\fP) builtin uses the value of +.SM +.B PATH +to find the directory containing the file supplied as an argument. +This option is enabled by default. +.TP 8 +.B xpg_echo +If set, the \fBecho\fP builtin expands backslash-escape sequences +by default. +.RE +.TP +\fBsuspend\fP [\fB\-f\fP] +Suspend the execution of this shell until it receives a +.SM +.B SIGCONT +signal. The +.B \-f +option says not to complain if this is +a login shell; just suspend anyway. The return status is 0 unless +the shell is a login shell and +.B \-f +is not supplied, or if job control is not enabled. +.TP +\fBtest\fP \fIexpr\fP +.PD 0 +.TP +\fB[\fP \fIexpr\fP \fB]\fP +Return a status of 0 or 1 depending on +the evaluation of the conditional expression +.IR expr . +Each operator and operand must be a separate argument. +Expressions are composed of the primaries described above under +.SM +.BR "CONDITIONAL EXPRESSIONS" . +.if t .sp 0.5 +.if n .sp 1 +Expressions may be combined using the following operators, listed +in decreasing order of precedence. +.RS +.PD 0 +.TP +.B ! \fIexpr\fP +True if +.I expr +is false. +.TP +.B ( \fIexpr\fP ) +Returns the value of \fIexpr\fP. +This may be used to override the normal precedence of operators. +.TP +\fIexpr1\fP \-\fBa\fP \fIexpr2\fP +True if both +.I expr1 +and +.I expr2 +are true. +.TP +\fIexpr1\fP \-\fBo\fP \fIexpr2\fP +True if either +.I expr1 +or +.I expr2 +is true. +.PD +.PP +\fBtest\fP and \fB[\fP evaluate conditional +expressions using a set of rules based on the number of arguments. +.if t .sp 0.5 +.if n .sp 1 +.PD 0 +.TP +0 arguments +The expression is false. +.TP +1 argument +The expression is true if and only if the argument is not null. +.TP +2 arguments +If the first argument is \fB!\fP, the expression is true if and +only if the second argument is null. +If the first argument is one of the unary conditional operators listed above +under +.SM +.BR "CONDITIONAL EXPRESSIONS" , +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. +.TP +3 arguments +If the second argument is one of the binary conditional operators listed above +under +.SM +.BR "CONDITIONAL EXPRESSIONS" , +the result of the expression is the result of the binary test using +the first and third arguments as operands. +If the first argument is \fB!\fP, the value is the negation of +the two-argument test using the second and third arguments. +If the first argument is exactly \fB(\fP and the third argument is +exactly \fB)\fP, the result is the one-argument test of the second +argument. +Otherwise, the expression is false. +The \fB\-a\fP and \fB\-o\fP operators are considered binary operators +in this case. +.TP +4 arguments +If the first argument is \fB!\fP, the result is the negation of +the three-argument expression composed of the remaining arguments. +Otherwise, the expression is parsed and evaluated according to +precedence using the rules listed above. +.TP +5 or more arguments +The expression is parsed and evaluated according to precedence +using the rules listed above. +.RE +.PD +.TP +.B times +Print the accumulated user and system times for the shell and +for processes run from the shell. The return status is 0. +.TP +\fBtrap\fP [\fB\-lp\fP] [\fIarg\fP] [\fIsigspec\fP ...] +The command +.I arg +is to be read and executed when the shell receives +signal(s) +.IR sigspec . +If +.I arg +is absent or +.BR \- , +all specified signals are +reset to their original values (the values they had +upon entrance to the shell). +If +.I arg +is the null string the signal specified by each +.I sigspec +is ignored by the shell and by the commands it invokes. +If +.I arg +is not present and +.B \-p +has been supplied, then the trap commands associated with each +.I sigspec +are displayed. +If no arguments are supplied or if only +.B \-p +is given, +.B trap +prints the list of commands associated with each signal number. +The +.B \-l +option causes the shell to print a list of signal names and +their corresponding numbers. +Each +.I sigspec +is either +a signal name defined in <\fIsignal.h\fP>, or a signal number. +If a +.I sigspec +is +.SM +.B EXIT +(0) the command +.I arg +is executed on exit from the shell. +If a +.I sigspec +is +.SM +.BR DEBUG , +the command +.I arg +is executed before every \fIsimple command\fP, \fIfor\fP command, +\fIcase\fP command, \fIselect\fP command, every arithmetic \fIfor\fP +command, and before the first command executes in a shell function (see +.SM +.B SHELL GRAMMAR +above). +Refer to the description of the \fBextglob\fP option to the +\fBshopt\fP builtin for details of its effect on the \fBDEBUG\fP trap. +If a +.I sigspec +is +.SM +.BR ERR , +the command +.I arg +is executed whenever a simple command has a non\-zero exit status. +The +.SM +.B ERR +trap is not executed if the failed +command is part of the command list immediately following a +.B while +or +.B until +keyword, +part of the test in an +.I if +statement, part of a +.B && +or +.B \(bv\(bv +list, or if the command's return value is +being inverted via +.BR ! . +If a +.I sigspec +is +.SM +.BR RETURN , +the command +.I arg +is executed each time a shell function or a script executed with the +\fB.\fP or \fBsource\fP builtins finishes executing. +Signals ignored upon entry to the shell cannot be trapped or reset. +Trapped signals are reset to their original values in a child +process when it is created. +The return status is false if any +.I sigspec +is invalid; otherwise +.B trap +returns true. +.TP +\fBtype\fP [\fB\-aftpP\fP] \fIname\fP [\fIname\fP ...] +With no options, +indicate how each +.I name +would be interpreted if used as a command name. +If the +.B \-t +option is used, +.B type +prints a string which is one of +.IR alias , +.IR keyword , +.IR function , +.IR builtin , +or +.I file +if +.I name +is an alias, shell reserved word, function, builtin, or disk file, +respectively. +If the +.I name +is not found, then nothing is printed, and an exit status of false +is returned. +If the +.B \-p +option is used, +.B type +either returns the name of the disk file +that would be executed if +.I name +were specified as a command name, +or nothing if +.if t \f(CWtype -t name\fP +.if n ``type -t name'' +would not return +.IR file . +The +.B \-P +option forces a +.SM +.B PATH +search for each \fIname\fP, even if +.if t \f(CWtype -t name\fP +.if n ``type -t name'' +would not return +.IR file . +If a command is hashed, +.B \-p +and +.B \-P +print the hashed value, not necessarily the file that appears +first in +.SM +.BR PATH . +If the +.B \-a +option is used, +.B type +prints all of the places that contain +an executable named +.IR name . +This includes aliases and functions, +if and only if the +.B \-p +option is not also used. +The table of hashed commands is not consulted +when using +.BR \-a . +The +.B \-f +option suppresses shell function lookup, as with the \fBcommand\fP builtin. +.B type +returns true if any of the arguments are found, false if +none are found. +.TP +\fBulimit\fP [\fB\-SHacdflmnpstuv\fP [\fIlimit\fP]] +Provides control over the resources available to the shell and to +processes started by it, on systems that allow such control. +The \fB\-H\fP and \fB\-S\fP options specify that the hard or soft limit is +set for the given resource. A hard limit cannot be increased once it +is set; a soft limit may be increased up to the value of the hard limit. +If neither \fB\-H\fP nor \fB\-S\fP is specified, both the soft and hard +limits are set. +The value of +.I limit +can be a number in the unit specified for the resource +or one of the special values +.BR hard , +.BR soft , +or +.BR unlimited , +which stand for the current hard limit, the current soft limit, and +no limit, respectively. +If +.I limit +is omitted, the current value of the soft limit of the resource is +printed, unless the \fB\-H\fP option is given. When more than one +resource is specified, the limit name and unit are printed before the value. +Other options are interpreted as follows: +.RS +.PD 0 +.TP +.B \-a +All current limits are reported +.TP +.B \-c +The maximum size of core files created +.TP +.B \-d +The maximum size of a process's data segment +.TP +.B \-f +The maximum size of files created by the shell +.TP +.B \-l +The maximum size that may be locked into memory +.TP +.B \-m +The maximum resident set size +.TP +.B \-n +The maximum number of open file descriptors (most systems do not +allow this value to be set) +.TP +.B \-p +The pipe size in 512-byte blocks (this may not be set) +.TP +.B \-s +The maximum stack size +.TP +.B \-t +The maximum amount of cpu time in seconds +.TP +.B \-u +The maximum number of processes available to a single user +.TP +.B \-v +The maximum amount of virtual memory available to the shell +.PD +.PP +If +.I limit +is given, it is the new value of the specified resource (the +.B \-a +option is display only). +If no option is given, then +.B \-f +is assumed. Values are in 1024-byte increments, except for +.BR \-t , +which is in seconds, +.BR \-p , +which is in units of 512-byte blocks, +and +.B \-n +and +.BR \-u , +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. +.RE +.TP +\fBumask\fP [\fB\-p\fP] [\fB\-S\fP] [\fImode\fP] +The user file-creation mask is set to +.IR mode . +If +.I mode +begins with a digit, it +is interpreted as an octal number; otherwise +it is interpreted as a symbolic mode mask similar +to that accepted by +.IR chmod (1). +If +.I mode +is omitted, the current value of the mask is printed. +The +.B \-S +option causes the mask to be printed in symbolic form; the +default output is an octal number. +If the +.B \-p +option is supplied, and +.I mode +is omitted, the output is in a form that may be reused as input. +The return status is 0 if the mode was successfully changed or if +no \fImode\fP argument was supplied, and false otherwise. +.TP +\fBunalias\fP [\-\fBa\fP] [\fIname\fP ...] +Remove each \fIname\fP from the list of defined aliases. If +.B \-a +is supplied, all alias definitions are removed. The return +value is true unless a supplied +.I name +is not a defined alias. +.TP +\fBunset\fP [\-\fBfv\fP] [\fIname\fP ...] +For each +.IR name , +remove the corresponding variable or function. +If no options are supplied, or the +.B \-v +option is given, each +.I name +refers to a shell variable. +Read-only variables may not be unset. +If +.B \-f +is specifed, +each +.I name +refers to a shell function, and the function definition +is removed. +Each unset variable or function is removed from the environment +passed to subsequent commands. +If any of +.SM +.BR RANDOM , +.SM +.BR SECONDS , +.SM +.BR LINENO , +.SM +.BR HISTCMD , +.SM +.BR FUNCNAME , +.SM +.BR GROUPS , +or +.SM +.B DIRSTACK +are unset, they lose their special properties, even if they are +subsequently reset. The exit status is true unless a +.I name +is readonly. +.TP +\fBwait\fP [\fIn\fP] +Wait for the specified process and return its termination +status. +.I 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 +.I n +is not given, all currently active child processes +are waited for, and the return status is zero. 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 +process or job waited for. +.\" bash_builtins +.if \n(zZ=1 .ig zZ +.SH "RESTRICTED SHELL" +.\" rbash.1 +.zY +.PP +If +.B bash +is started with the name +.BR rbash , +or the +.B \-r +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 +.B bash +with the exception that the following are disallowed or not performed: +.IP \(bu +changing directories with \fBcd\fP +.IP \(bu +setting or unsetting the values of +.BR SHELL , +.BR PATH , +.BR ENV , +or +.B BASH_ENV +.IP \(bu +specifying command names containing +.B / +.IP \(bu +specifying a file name containing a +.B / +as an argument to the +.B . +builtin command +.IP \(bu +Specifying a filename containing a slash as an argument to the +.B \-p +option to the +.B hash +builtin command +.IP \(bu +importing function definitions from the shell environment at startup +.IP \(bu +parsing the value of \fBSHELLOPTS\fP from the shell environment at startup +.IP \(bu +redirecting output using the >, >|, <>, >&, &>, and >> redirection operators +.IP \(bu +using the +.B exec +builtin command to replace the shell with another command +.IP \(bu +adding or deleting builtin commands with the +.B \-f +and +.B \-d +options to the +.B enable +builtin command +.IP \(bu +Using the \fBenable\fP builtin command to enable disabled shell builtins +.IP \(bu +specifying the +.B \-p +option to the +.B command +builtin command +.IP \(bu +turning off restricted mode with +\fBset +r\fP or \fBset +o restricted\fP. +.PP +These restrictions are enforced after any startup files are read. +.PP +When a command that is found to be a shell script is executed (see +.SM +.B "COMMAND EXECUTION" +above), +.B rbash +turns off any restrictions in the shell spawned to execute the +script. +.\" end of rbash.1 +.if \n(zY=1 .ig zY +.SH "SEE ALSO" +.PD 0 +.TP +\fIBash Reference Manual\fP, Brian Fox and Chet Ramey +.TP +\fIThe Gnu Readline Library\fP, Brian Fox and Chet Ramey +.TP +\fIThe Gnu History Library\fP, Brian Fox and Chet Ramey +.TP +\fIPortable Operating System Interface (POSIX) Part 2: Shell and Utilities\fP, IEEE +.TP +\fIsh\fP(1), \fIksh\fP(1), \fIcsh\fP(1) +.TP +\fIemacs\fP(1), \fIvi\fP(1) +.TP +\fIreadline\fP(3) +.PD +.SH FILES +.PD 0 +.TP +.FN /bin/bash +The \fBbash\fP executable +.TP +.FN /etc/profile +The systemwide initialization file, executed for login shells +.TP +.FN ~/.bash_profile +The personal initialization file, executed for login shells +.TP +.FN ~/.bashrc +The individual per-interactive-shell startup file +.TP +.FN ~/.bash_logout +The individual login shell cleanup file, executed when a login shell exits +.TP +.FN ~/.inputrc +Individual \fIreadline\fP initialization file +.PD +.SH AUTHORS +Brian Fox, Free Software Foundation +.br +bfox@gnu.org +.PP +Chet Ramey, Case Western Reserve University +.br +chet@po.CWRU.Edu +.SH BUG REPORTS +If you find a bug in +.B bash, +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 +.BR bash . +The latest version is always available from +\fIftp://ftp.gnu.org/pub/bash/\fP. +.PP +Once you have determined that a bug actually exists, use the +.I bashbug +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 \fIbug-bash@gnu.org\fP or posted to the Usenet +newsgroup +.BR gnu.bash.bug . +.PP +ALL bug reports should include: +.PP +.PD 0 +.TP 20 +The version number of \fBbash\fR +.TP +The hardware and operating system +.TP +The compiler used to compile +.TP +A description of the bug behaviour +.TP +A short script or `recipe' which exercises the bug +.PD +.PP +.I bashbug +inserts the first three items automatically into the template +it provides for filing a bug report. +.PP +Comments and bug reports concerning +this manual page should be directed to +.IR chet@po.CWRU.Edu . +.SH BUGS +.PP +It's too big and too slow. +.PP +There are some subtle differences between +.B bash +and traditional versions of +.BR sh , +mostly because of the +.SM +.B POSIX +specification. +.PP +Aliases are confusing in some uses. +.PP +Shell builtin commands and functions are not stoppable/restartable. +.PP +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 unit. +.PP +Commands inside of \fB$(\fP...\fB)\fP command substitution are not +parsed until substitution is attempted. This will delay error +reporting until some time after the command is entered. +.PP +Array variables may not (yet) be exported. +.zZ +.zY diff --git a/bash-20060316/doc/bash.html b/bash-20060316/doc/bash.html new file mode 100644 index 000000000..fad585203 --- /dev/null +++ b/bash-20060316/doc/bash.html @@ -0,0 +1,11544 @@ + +BASH(1) Manual Page + + + + +
BASH(1)2006 Jan 26BASH(1) +
+
Index +


+ + + + + + + + + + + + + + + + + + + +  +

NAME

+ +bash - GNU Bourne-Again SHell +  +

SYNOPSIS

+ +bash + +[options] +[file] +  +

COPYRIGHT

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

DESCRIPTION

+ +Bash + +is an sh-compatible command language interpreter that +executes commands read from the standard input or from a file. +Bash + +also incorporates useful features from the Korn and C +shells (ksh and csh). +

+ +Bash + +is intended to be a conformant implementation of the +Shell and Utilities portion of the IEEE POSIX specification +(IEEE Standard 1003.1). +Bash + +can be configured to be POSIX-conformant by default. +  +

OPTIONS

+ +In addition to the single-character shell options documented in the +description of the set builtin command, bash +interprets the following options when it is invoked: +

+ + +

+
-c string + +
+If the +-c + +option is present, then commands are read from +string. + +If there are arguments after the +string, + +they are assigned to the positional parameters, starting with +$0. + +
-i + +
+If the +-i + +option is present, the shell is +interactive. + +
-l + +
+Make +bash + +act as if it had been invoked as a login shell (see +INVOCATION + + +below). +
-r + +
+If the +-r + +option is present, the shell becomes +restricted + +(see +RESTRICTED SHELL + + +below). +
-s + +
+If the +-s + +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. +
-D + +
+A list of all double-quoted strings preceded by $ +is printed on the standard output. +These are the strings that +are subject to language translation when the current locale +is not C or POSIX. +This implies the -n option; no commands will be executed. +
[-+]O [shopt_option] + +
+shopt_option is one of the shell options accepted by the +shopt builtin (see +SHELL BUILTIN COMMANDS + + +below). +If shopt_option is present, -O sets the value of that option; ++O unsets it. +If shopt_option is not supplied, the names and values of the shell +options accepted by shopt are printed on the standard output. +If the invocation option is +O, 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 filenames and arguments. An argument of +- + +is equivalent to --. + +
+

+ +Bash + +also interprets a number of multi-character options. +These options must appear on the command line before the +single-character options to be recognized. +

+ + +

+
--debugger + +
+Arrange for the debugger profile to be executed before the shell +starts. +Turns on extended debugging mode (see the description of the +extdebug + +option to the +shopt + +builtin below) +and shell function tracing (see the description of the +-o functrace option to the +set + +builtin below). +
--dump-po-strings + +
+Equivalent to -D, but the output is in the GNU gettext +po (portable object) file format. +
--dump-strings + +
+Equivalent to -D. +
--help + +
+Display a usage message on standard output and exit successfully. +
--init-file file
+ +
--rcfile file
+ +Execute commands from +file + +instead of the standard personal initialization file +~/.bashrc + +if the shell is interactive (see +INVOCATION + + +below). +
--login + +
+Equivalent to -l. +
--noediting + +
+Do not use the GNU +readline + +library to read command lines when the shell is interactive. +
--noprofile + +
+Do not read either the system-wide startup file + +/etc/profile + +or any of the personal initialization files +~/.bash_profile, + +~/.bash_login, + +or +~/.profile. + +By default, +bash + +reads these files when it is invoked as a login shell (see +INVOCATION + + +below). +
--norc + +
+Do not read and execute the personal initialization file +~/.bashrc + +if the shell is interactive. +This option is on by default if the shell is invoked as +sh. + +
--posix + +
+Change the behavior of bash where the default operation differs +from the POSIX standard to match the standard (posix mode). +
--restricted + +
+The shell becomes restricted (see +RESTRICTED SHELL + + +below). +
--verbose + +
+Equivalent to -v. +
--version + +
+Show version information for this instance of +bash + +on the standard output and exit successfully. + +
+  +

ARGUMENTS

+ +If arguments remain after option processing, and neither the +-c + +nor the +-s + +option has been supplied, the first argument is assumed to +be the name of a file containing shell commands. +If +bash + +is invoked in this fashion, +$0 + +is set to the name of the file, and the positional parameters +are set to the remaining arguments. +Bash + +reads and executes commands from this file, then exits. +Bash's exit status is the exit status 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 +PATH + + +for the script. +  +

INVOCATION

+ +A login shell is one whose first character of argument zero is a +-, + +or one started with the +--login + +option. +

+ +An interactive shell is one started without non-option arguments +and without the +-c + +option +whose standard input and error are +both connected to terminals (as determined by +isatty(3)), + +or one started with the +-i + +option. +PS1 + + +is set and +$- + +includes +i + +if +bash + +is interactive, +allowing a shell script or a startup file to test this state. +

+ +The following paragraphs describe how +bash + +executes its startup files. +If any of the files exist but cannot be read, +bash + +reports an error. +Tildes are expanded in file names as described below under +Tilde Expansion + +in the +EXPANSION + + +section. +

+ +When +bash + +is invoked as an interactive login shell, or as a non-interactive shell +with the --login option, it first reads and +executes commands from the file /etc/profile, if that +file exists. +After reading that file, it looks for ~/.bash_profile, +~/.bash_login, and ~/.profile, in that order, and reads +and executes commands from the first one that exists and is readable. +The +--noprofile + +option may be used when the shell is started to inhibit this behavior. +

+ +When a login shell exits, +bash + +reads and executes commands from the file ~/.bash_logout, if it +exists. +

+ +When an interactive shell that is not a login shell is started, +bash + +reads and executes commands from ~/.bashrc, if that file exists. +This may be inhibited by using the +--norc + +option. +The --rcfile file option will force +bash + +to read and execute commands from file instead of ~/.bashrc. +

+ +When +bash + +is started non-interactively, to run a shell script, for example, it +looks for the variable +BASH_ENV + + +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. +Bash + +behaves as if the following command were executed: +

+

+if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi + +
+ +

+but the value of the +PATH + + +variable is not used to search for the file name. +

+ +If +bash + +is invoked with the name +sh, + +it tries to mimic the startup behavior of historical versions of +sh + +as closely as possible, +while conforming to the POSIX standard as well. +When invoked as an interactive login shell, or a non-interactive +shell with the --login option, it first attempts to +read and execute commands from +/etc/profile + +and +~/.profile, + +in that order. +The +--noprofile + +option may be used to inhibit this behavior. +When invoked as an interactive shell with the name +sh, + +bash + +looks for the variable +ENV, + + +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 +sh + +does not attempt to read and execute commands from any other startup +files, the +--rcfile + +option has no effect. +A non-interactive shell invoked with the name +sh + +does not attempt to read any other startup files. +When invoked as +sh, + +bash + +enters +posix + +mode after the startup files are read. +

+ +When +bash + +is started in +posix + +mode, as with the +--posix + +command line option, it follows the POSIX standard for startup files. +In this mode, interactive shells expand the +ENV + + +variable and commands are read and executed from the file +whose name is the expanded value. +No other startup files are read. +

+ +Bash + +attempts to determine when it is being run by the remote shell +daemon, usually rshd. +If +bash + +determines it is being run by rshd, it reads and executes +commands from ~/.bashrc, if that file exists and is readable. +It will not do this if invoked as sh. +The +--norc + +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 +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 -p option is not supplied, no startup +files are read, shell functions are not inherited from the environment, the +SHELLOPTS + + +variable, if it appears in the environment, is ignored, +and the effective user id is set to the real user id. +If the -p option is supplied at invocation, the startup behavior is +the same, but the effective user id is not reset. +  +

DEFINITIONS

+ +

+ +The following definitions are used throughout the rest of this +document. + +

+
blank + +
+A space or tab. +
word + +
+A sequence of characters considered as a single unit by the shell. +Also known as a +token. + +
name + +
+A +word + +consisting only of alphanumeric characters and underscores, and +beginning with an alphabetic character or an underscore. Also +referred to as an +identifier. + +
metacharacter + +
+A character that, when unquoted, separates words. One of the following: +
+ +
+

+ +| & ; ( ) < > space tab + +

+ +
+

+ +

+
control operator + +
+A token that performs a control function. It is one of the following +symbols: +
+

+ +|| & && ; ;; ( ) | <newline> + +

+ + +
+  +

RESERVED WORDS

+ +Reserved words 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 +SHELL GRAMMAR + + +below) or the third word of a +case + +or +for + +command: +
+ +

+ + + + +! case do done elif else esac fi for function if in select then until while { } time [[ ]] +

+ + +  +

SHELL GRAMMAR

+ +  +

Simple Commands

+ +

+ +A simple command is a sequence of optional variable assignments +followed by blank-separated words and redirections, and +terminated by a control operator. The first word +specifies the command to be executed, and is passed as argument zero. +The remaining words are passed as arguments to the invoked command. +

+ +The return value of a simple command is its exit status, or +128+n if the command is terminated by signal +n. + +  +

Pipelines

+ +

+ +A pipeline is a sequence of one or more commands separated by +the character +|. + +The format for a pipeline is: +

+

+ +[time [-p]] [ ! ] command [ | command2 ... ] +

+ +

+ +The standard output of +command + +is connected via a pipe to the standard input of +command2. + +This connection is performed before any redirections specified by the +command (see +REDIRECTION + + +below). +

+ +The return status of a pipeline is the exit status of the last +command, unless the pipefail option is enabled. +If pipefail is enabled, the pipeline's return status is the +value of the last (rightmost) command to exit with a non-zero status, +or zero if all commands exit successfully. +If the reserved word +! + +precedes a pipeline, the exit status of that pipeline is the logical +negation of the exit status as described above. +The shell waits for all commands in the pipeline to +terminate before returning a value. +

+ +If the +time + +reserved word precedes a pipeline, the elapsed as well as user and +system time consumed by its execution are reported when the pipeline +terminates. +The -p option changes the output format to that specified by POSIX. +The +TIMEFORMAT + + +variable may be set to a format string that specifies how the timing +information should be displayed; see the description of +TIMEFORMAT + + +under +Shell Variables + +below. +

+ +Each command in a pipeline is executed as a separate process (i.e., in a +subshell). +  +

Lists

+ +

+ +A list is a sequence of one or more pipelines separated by one +of the operators +;, + +&, + +&&, + +or +||, + +and optionally terminated by one of +;, + +&, + +or +<newline>. + +

+ +Of these list operators, +&& + +and +|| + +have equal precedence, followed by +; + +and +&, + +which have equal precedence. +

+ +A sequence of one or more newlines may appear in a list instead +of a semicolon to delimit commands. +

+ +If a command is terminated by the control operator +&, + +the shell executes the command in the background +in a subshell. The shell does not wait for the command to +finish, and the return status is 0. Commands separated by a +; + +are executed sequentially; the shell waits for each +command to terminate in turn. The return status is the +exit status of the last command executed. +

+ +The control operators +&& + +and +|| + +denote AND lists and OR lists, respectively. +An AND list has the form +

+

+ +command1 && command2 +

+ +

+ +command2 + +is executed if, and only if, +command1 + +returns an exit status of zero. +

+ +An OR list has the form +

+

+ +command1 || command2 +

+ +

+ +

+ +command2 + +is executed if and only if +command1 + +returns a non-zero exit status. The return status of +AND and OR lists is the exit status of the last command +executed in the list. +  +

Compound Commands

+ +

+ +A compound command is one of the following: +

+
(list)
+list is executed in a subshell environment (see +COMMAND EXECUTION ENVIRONMENT +below). +Variable assignments and builtin +commands that affect the shell's environment do not remain in effect +after the command completes. The return status is the exit status of +list. +
{ list; }
+list is simply executed in the current shell environment. +list must be terminated with a newline or semicolon. +This is known as a group command. +The return status is the exit status of +list. +Note that unlike the metacharacters ( and ), { and +} are reserved words 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 list by whitespace. +
((expression))
+The expression is evaluated according to the rules described +below under +ARITHMETIC EVALUATION. + + +If the value of the expression is non-zero, the return status is 0; +otherwise the return status is 1. This is exactly equivalent to +let "expression". +
[[ expression ]]
+Return a status of 0 or 1 depending on the evaluation of +the conditional expression expression. +Expressions are composed of the primaries described below under +CONDITIONAL EXPRESSIONS. + + +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. +Conditional operators such as -f must be unquoted to be recognized +as primaries. +

+ + +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. +If the shell option +nocasematch + +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. +

+ + +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 expression and matched accordingly (as in regex(3)). +The return value is 0 if the string matches +the pattern, and 1 otherwise. +If the regular expression is syntactically incorrect, the conditional +expression's return value is 2. +If the shell option +nocasematch + +is enabled, the match is performed without regard to the case +of alphabetic characters. +Substrings matched by parenthesized subexpressions within the regular +expression are saved in the array variable BASH_REMATCH. +The element of BASH_REMATCH with index 0 is the portion of the string +matching the entire regular expression. +The element of BASH_REMATCH 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: +

+ + +

+ +
+
( expression ) + +
+Returns the value of expression. +This may be used to override the normal precedence of operators. +
! expression + +
+True if +expression + +is false. +
expression1 && expression2
+True if both +expression1 + +and +expression2 + +are true. +
expression1 || expression2 +
+ +True if either +expression1 + +or +expression2 + +is true. + +
+

+ +The && and +|| + +operators do not evaluate expression2 if the value of +expression1 is sufficient to determine the return value of +the entire conditional expression. +

+ +
for name [ in word ] ; do list ; done
+The list of words following in is expanded, generating a list +of items. +The variable name is set to each element of this list +in turn, and list is executed each time. +If the in word is omitted, the for command executes +list once for each positional parameter that is set (see +PARAMETERS + + +below). +The return status is the exit status of the last command that executes. +If the expansion of the items following in results in an empty +list, no commands are executed, and the return status is 0. +
for (( expr1 ; expr2 ; expr3 )) ; do list ; done
+First, the arithmetic expression expr1 is evaluated according +to the rules described below under +ARITHMETIC EVALUATION. + + +The arithmetic expression expr2 is then evaluated repeatedly +until it evaluates to zero. +Each time expr2 evaluates to a non-zero value, list is +executed and the arithmetic expression expr3 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 list +that is executed, or false if any of the expressions is invalid. +
select name [ in word ] ; do list ; done
+The list of words following in 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 in +word is omitted, the positional parameters are printed (see +PARAMETERS + + +below). The +PS3 + +prompt is then displayed and a line read from the standard input. +If the line consists of a number corresponding to one of +the displayed words, then the value of +name + +is set to that word. If the line is empty, the words and prompt +are displayed again. If EOF is read, the command completes. Any +other value read causes +name + +to be set to null. The line read is saved in the variable +REPLY. + +The +list + +is executed after each selection until a +break + +command is executed. +The exit status of +select + +is the exit status of the last command executed in +list, + +or zero if no commands were executed. +
case word in [ [(] pattern [ | pattern ] +
+A case command first expands word, and tries to match +it against each pattern in turn, using the same matching rules +as for pathname expansion (see +Pathname Expansion + +below). +The word is expanded using tilde +expansion, parameter and variable expansion, arithmetic substituion, +command substitution, process substitution and quote removal. +Each pattern examined is expanded using tilde +expansion, parameter and variable expansion, arithmetic substituion, +command substitution, and process substitution. +If the shell option +nocasematch + +is enabled, the match is performed without regard to the case +of alphabetic characters. +When a match is found, the +corresponding list is executed. After the first match, no +subsequent matches are attempted. 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
+The +if + +list + +is executed. If its exit status is zero, the +then list is executed. Otherwise, each elif +list is executed in turn, and if its exit status is zero, +the corresponding then list is executed and the +command completes. Otherwise, the else list is +executed, if present. The exit status is the exit status of the +last command executed, or zero if no condition tested true. +
while list; do list; done
+ +
until list; do list; done
+ +The while command continuously executes the do +list as long as the last command in list returns +an exit status of zero. The until command is identical +to the while command, except that the test is negated; +the +do + +list + +is executed as long as the last command in +list + +returns a non-zero exit status. +The exit status of the while and until commands +is the exit status +of the last do list command executed, or zero if +none was executed. +
+  +

Shell Function Definitions

+ +

+ +A shell function is an object that is called like a simple command and +executes a compound command with a new set of positional parameters. +Shell functions are declared as follows: +

+
[ function ] name () compound-command [redirection]
+This defines a function named name. +The reserved word function is optional. +If the function reserved word is supplied, the parentheses are optional. +The body of the function is the compound command +compound-command + +(see Compound Commands above). +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. +Any redirections (see +REDIRECTION + + +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 +FUNCTIONS + + +below.) +
+  +

COMMENTS

+ +In a non-interactive shell, or an interactive shell in which the +interactive_comments + +option to the +shopt + +builtin is enabled (see +SHELL BUILTIN COMMANDS + + +below), a word beginning with +# + +causes that word and all remaining characters on that line to +be ignored. An interactive shell without the +interactive_comments + +option enabled does not allow comments. The +interactive_comments + +option is on by default in interactive shells. +  +

QUOTING

+ +Quoting 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 metacharacters listed above under +DEFINITIONS + + +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 +HISTORY EXPANSION + + +below), the +history expansion character, usually !, must be quoted +to prevent history expansion. +

+ +There are three quoting mechanisms: the +escape character, + +single quotes, and double quotes. +

+ +A non-quoted backslash (\) is the +escape character. + +It preserves the literal value of the next character that follows, +with the exception of <newline>. If a \<newline> pair +appears, and the backslash is not itself quoted, the \<newline> +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 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 +<newline>. + +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 using a backslash. +The backslash preceding the +! + +is not removed. +

+ +The special parameters +* + +and +@ + +have special meaning when in double +quotes (see +PARAMETERS + + +below). +

+ +Words of the form $aqstringaq are treated specially. The +word expands to string, with backslash-escaped characters replaced +as specified by the ANSI C standard. Backslash escape sequences, if +present, are decoded as follows: +

+ +
+
\a + +
+alert (bell) +
\b + +
+backspace +
\e + +
+an escape character +
\f + +
+form feed +
\n + +
+new line +
\r + +
+carriage return +
\t + +
+horizontal tab +
\v + +
+vertical tab +
\\ + +
+backslash +
\aq + +
+single quote +
\nnn + +
+the eight-bit character whose value is the octal value nnn +(one to three digits) +
\xHH + +
+the eight-bit character whose value is the hexadecimal value HH +(one or two hex digits) +
\cx + +
+a control-x character + +
+ +

+ +The expanded result is single-quoted, as if the dollar sign had +not been present. +

+ +A double-quoted string preceded by a dollar sign ($) will cause +the string to be translated according to the current locale. +If the current locale is C or POSIX, the dollar sign +is ignored. +If the string is translated and replaced, the replacement is +double-quoted. +  +

PARAMETERS

+ +A +parameter + +is an entity that stores values. +It can be a +name, + +a number, or one of the special characters listed below under +Special Parameters. + +A +variable + +is a parameter denoted by a +name. + +A variable has a value and zero or more attributes. +Attributes are assigned using the +declare + +builtin command (see +declare + +below in +SHELL BUILTIN COMMANDS). + + +

+ +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 +the +unset + +builtin command (see +SHELL BUILTIN COMMANDS + + +below). +

+ +A +variable + +may be assigned to by a statement of the form +

+

+ +name=[value] +

+ +

+ +If +value + +is not given, the variable is assigned the null string. All +values + +undergo tilde expansion, parameter and variable expansion, +command substitution, arithmetic expansion, and quote +removal (see +EXPANSION + + +below). If the variable has its +integer + +attribute set, then +value + +is evaluated as an arithmetic expression even if the $((...)) expansion is +not used (see +Arithmetic Expansion + +below). +Word splitting is not performed, with the exception +of "$@" as explained below under +Special Parameters. + +Pathname expansion is not performed. +Assignment statements may also appear as arguments to the +alias, + +declare, + +typeset, + +export, + +readonly, + +and +local + +builtin commands. +

+ +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 variable for which the integer attribute has been +set, value 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 +Arrays + +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. +When applied to a string-valued variable, value is expanded and +appended to the variable's value. +  +

Positional Parameters

+ +

+ +A +positional parameter + +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 +set + +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 +FUNCTIONS + + +below). +

+ +When a positional parameter consisting of more than a single +digit is expanded, it must be enclosed in braces (see +EXPANSION + + +below). +  +

Special Parameters

+ +

+ +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 single word +with the value of each parameter separated by the first character +of the +IFS + + +special variable. That is, "$*" is equivalent +to "$1c$2c...", where +c + +is the first character of the value of the +IFS + + +variable. If +IFS + + +is unset, the parameters are separated by spaces. +If +IFS + + +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 +"$1" "$2" ... +If the double-quoted expansion occurs within a word, the expansion of +the first parameter is joined with the beginning 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 status of the most recently executed foreground +pipeline. +
- + +
+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 current shell, not the +subshell. +
! + +
+Expands to the process ID of the most recently executed background +(asynchronous) command. +
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, +$0 + +is set to the name of that file. If +bash + +is started with the +-c + +option, then +$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 +bash, + +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 environment +or argument list. +Subsequently, expands to the last argument to the previous command, +after expansion. +Also set to the full pathname used to invoke each command executed +and placed in the environment exported to that command. +When checking mail, this parameter holds the name of the mail file +currently being checked. + +
+  +

Shell Variables

+ +

+ +The following variables are set by the shell: +

+ + +

+
BASH + +
+Expands to the full file name used to invoke this instance of +bash. + +
BASH_ARGC + +
+An array variable whose values are the number of parameters in each +frame of the current bash execution call stack. +The number of +parameters to the current subroutine (shell function or script executed +with . or source) is at the top of the stack. +When a subroutine is executed, the number of parameters passed is pushed onto +BASH_ARGC. +The shell sets BASH_ARGC only when in extended debugging mode +(see the description of the +extdebug + +option to the +shopt + +builtin below) +
BASH_ARGV + +
+An array variable containing all of the parameters in the current bash +execution call stack. The final parameter of the last subroutine call +is at the top of the stack; the first parameter of the initial call is +at the bottom. When a subroutine is executed, the parameters supplied +are pushed onto BASH_ARGV. +The shell sets BASH_ARGV only when in extended debugging mode +(see the description of the +extdebug + +option to the +shopt + +builtin below) +
BASH_COMMAND + +
+The command currently being executed or about to be executed, unless the +shell is executing a command as the result of a trap, +in which case it is the command executing at the time of the trap. +
BASH_EXECUTION_STRING + +
+The command argument to the -c invocation option. +
BASH_LINENO + +
+An array variable whose members are the line numbers in source files +corresponding to each member of FUNCNAME. +${BASH_LINENO[$i]} is the line number in the source +file where ${FUNCNAME[$ifP]} was called. +The corresponding source file name is ${BASH_SOURCE[$i]}. +Use LINENO to obtain the current line number. +
BASH_REMATCH + +
+An array variable whose members are assigned by the =~ binary +operator to the [[ conditional command. +The element with index 0 is the portion of the string +matching the entire regular expression. +The element with index n is the portion of the +string matching the nth parenthesized subexpression. +This variable is read-only. +
BASH_SOURCE + +
+An array variable whose members are the source filenames corresponding +to the elements in the FUNCNAME array variable. +
BASH_SUBSHELL + +
+Incremented by one each time a subshell or subshell environment is spawned. +The initial value is 0. +
BASH_VERSINFO + +
+A readonly array variable whose members hold version information for +this instance of +bash. + +The values assigned to the array members are as follows: +

+

+ +
+
BASH_VERSINFO[0] + +
+The major version number (the release). +
BASH_VERSINFO[1] + +
+The minor version number (the version). +
BASH_VERSINFO[2] + +
+The patch level. +
BASH_VERSINFO[3] + +
+The build version. +
BASH_VERSINFO[4] + +
+The release status (e.g., beta1). +
BASH_VERSINFO[5] + +
+The value of MACHTYPE. + +
+ +
BASH_VERSION + +
+Expands to a string describing the version of this instance of +bash. + +
COMP_CWORD + +
+An index into ${COMP_WORDS} of the word containing the current +cursor position. +This variable is available only in shell functions invoked by the +programmable completion facilities (see Programmable Completion +below). +
COMP_LINE + +
+The current command line. +This variable is available only in shell functions and external +commands invoked by the +programmable completion facilities (see Programmable Completion +below). +
COMP_POINT + +
+The index of the current cursor position relative to the beginning 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 ${#COMP_LINE}. +This variable is available only in shell functions and external +commands invoked by the +programmable completion facilities (see Programmable Completion +below). +
COMP_WORDBREAKS + +
+The set of characters that the Readline library treats as word +separators when performing word completion. +If +COMP_WORDBREAKS + + +is unset, it loses its special properties, even if it is +subsequently reset. +
COMP_WORDS + +
+An array variable (see Arrays below) consisting of the individual +words in the current command line. +This variable is available only in shell functions invoked by the +programmable completion facilities (see Programmable Completion +below). +
DIRSTACK + +
+An array variable (see +Arrays + +below) containing the current contents of the directory stack. +Directories appear in the stack in the order they are displayed by the +dirs + +builtin. +Assigning to members of this array variable may be used to modify +directories already in the stack, but the +pushd + +and +popd + +builtins must be used to add and remove directories. +Assignment to this variable will not change the current directory. +If +DIRSTACK + + +is unset, it loses its special properties, even if it is +subsequently reset. +
EUID + +
+Expands to the effective user ID of the current user, initialized at +shell startup. This variable is readonly. +
FUNCNAME + +
+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 bottom-most element is "main". +This variable exists only when a shell function is executing. +Assignments to +FUNCNAME + + +have no effect and return an error status. +If +FUNCNAME + + +is unset, it loses its special properties, even if it is +subsequently reset. +
GROUPS + +
+An array variable containing the list of groups of which the current +user is a member. +Assignments to +GROUPS + + +have no effect and return an error status. +If +GROUPS + + +is unset, it loses its special properties, even if it is +subsequently reset. +
HISTCMD + +
+The history number, or index in the history list, of the current +command. +If +HISTCMD + + +is unset, it loses its special properties, even if it is +subsequently reset. +
HOSTNAME + +
+Automatically set to the name of the current host. +
HOSTTYPE + +
+Automatically set to a string that uniquely +describes the type of machine on which +bash + +is executing. +The default is system-dependent. +
LINENO + +
+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 +LINENO + + +is unset, it loses its special properties, even if it is +subsequently reset. +
MACHTYPE + +
+Automatically set to a string that fully describes the system +type on which +bash + +is executing, in the standard GNU cpu-company-system format. +The default is system-dependent. +
OLDPWD + +
+The previous working directory as set by the +cd + +command. +
OPTARG + +
+The value of the last option argument processed by the +getopts + +builtin command (see +SHELL BUILTIN COMMANDS + + +below). +
OPTIND + +
+The index of the next argument to be processed by the +getopts + +builtin command (see +SHELL BUILTIN COMMANDS + + +below). +
OSTYPE + +
+Automatically set to a string that +describes the operating system on which +bash + +is executing. +The default is system-dependent. +
PIPESTATUS + +
+An array variable (see +Arrays + +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). +
PPID + +
+The process ID of the shell's parent. This variable is readonly. +
PWD + +
+The current working directory as set by the +cd + +command. +
RANDOM + +
+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 +RANDOM. + + +If +RANDOM + + +is unset, it loses its special properties, even if it is +subsequently reset. +
REPLY + +
+Set to the line of input read by the +read + +builtin command when no arguments are supplied. +
SECONDS + +
+Each time this parameter is +referenced, the number of seconds since shell invocation is returned. If a +value is assigned to +SECONDS, + + +the value returned upon subsequent +references is +the number of seconds since the assignment plus the value assigned. +If +SECONDS + + +is unset, it loses its special properties, even if it is +subsequently reset. +
SHELLOPTS + +
+A colon-separated list of enabled shell options. Each word in +the list is a valid argument for the +-o + +option to the +set + +builtin command (see +SHELL BUILTIN COMMANDS + + +below). The options appearing in +SHELLOPTS + + +are those reported as +on + +by set -o. +If this variable is in the environment when +bash + +starts up, each shell option in the list will be enabled before +reading any startup files. +This variable is read-only. +
SHLVL + +
+Incremented by one each time an instance of +bash + +is started. +
UID + +
+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, +bash + +assigns a default value to a variable; these cases are noted +below. +

+ + +

+
BASH_ENV + +
+If this parameter is set when bash is executing a shell script, +its value is interpreted as a filename containing commands to +initialize the shell, as in +~/.bashrc. + +The value of +BASH_ENV + + +is subjected to parameter expansion, command substitution, and arithmetic +expansion before being interpreted as a file name. +PATH + + +is not used to search for the resultant file name. +
CDPATH + +
+The search path for the +cd + +command. +This is a colon-separated list of directories in which the shell looks +for destination directories specified by the +cd + +command. +A sample value is +".:~:/usr". + +
COLUMNS + +
+Used by the select builtin command to determine the terminal width +when printing selection lists. Automatically set upon receipt of a SIGWINCH. +
COMPREPLY + +
+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). +
EMACS + +
+If bash 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. +
FCEDIT + +
+The default editor for the +fc + +builtin command. +
FIGNORE + +
+A colon-separated list of suffixes to ignore when performing +filename completion (see +READLINE + + +below). +A filename whose suffix matches one of the entries in +FIGNORE + + +is excluded from the list of matched filenames. +A sample value is +".o:~". + +
GLOBIGNORE + +
+A colon-separated list of patterns defining the set of filenames to +be ignored by pathname expansion. +If a filename matched by a pathname expansion pattern also matches one +of the patterns in +GLOBIGNORE, + + +it is removed from the list of matches. +
HISTCONTROL + +
+A colon-separated list of values controlling how commands are saved on +the history list. +If the list of values includes +ignorespace, + +lines which begin with a +space + +character are not saved in the history list. +A value of +ignoredups + +causes lines matching the previous history entry to not be saved. +A value of +ignoreboth + +is shorthand for ignorespace and ignoredups. +A value of +erasedups + +causes all previous lines matching the current line to be removed from +the history list before that line is saved. +Any value not in the above list is ignored. +If HISTCONTROL is unset, or does not include a valid value, +all lines read by the shell parser are saved on the history list, +subject to the value of +HISTIGNORE. + +The second and subsequent lines of a multi-line compound command are +not tested, and are added to the history regardless of the value of +HISTCONTROL. + +
HISTFILE + +
+The name of the file in which command history is saved (see +HISTORY + + +below). The default value is ~/.bash_history. If unset, the +command history is not saved when an interactive 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, 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. +
HISTIGNORE + +
+A colon-separated list of patterns used to decide which command lines +should be saved on the history list. Each pattern is anchored at the +beginning of the line and must match the complete line (no implicit +`*' is appended). Each pattern is tested against the line +after the checks specified by +HISTCONTROL + +are applied. +In addition to the normal shell pattern matching characters, `&' +matches the previous history line. `&' may be escaped using a +backslash; the backslash is removed before attempting a match. +The second and subsequent lines of a multi-line compound command are +not tested, and are added to the history regardless of the value of +HISTIGNORE. + +
HISTSIZE + +
+The number of commands to remember in the command history (see +HISTORY + + +below). The default value is 500. +
HISTTIMEFORMAT + +
+If this variable is set and not null, its value is used as a format string +for strftime(3) to print the time stamp associated with each history +entry displayed by the history builtin. +If this variable is set, time stamps are written to the history file so +they may be preserved across shell sessions. +
HOME + +
+The home directory of the current user; the default argument for the +cd builtin command. +The value of this variable is also used when performing tilde expansion. +
HOSTFILE + +
+Contains the name of a file in the same format as + +/etc/hosts + +that should be read when the shell needs to complete a +hostname. +The list of possible hostname completions may be changed while the +shell is running; +the next time hostname completion is attempted after the +value is changed, +bash + +adds the contents of the new file to the existing list. +If +HOSTFILE + + +is set, but has no value, bash attempts to read + +/etc/hosts + +to obtain the list of possible hostname completions. +When +HOSTFILE + + +is unset, the hostname list is cleared. +
IFS + +
+The +Internal Field Separator + +that is used +for word splitting after expansion and to +split lines into words with the +read + +builtin command. The default value is +``<space><tab><newline>''. +
IGNOREEOF + +
+Controls the +action of an interactive shell on receipt of an +EOF + + +character as the sole input. If set, the value is the number of +consecutive +EOF + + +characters which must be +typed as the first characters on an input line before +bash + +exits. If the variable exists but does not have a numeric value, or +has no value, the default value is 10. If it does not exist, +EOF + + +signifies the end of input to the shell. +
INPUTRC + +
+The filename for the +readline + +startup file, overriding the default of + +~/.inputrc + +(see +READLINE + + +below). +
LANG + +
+Used to determine the locale category for any category not specifically +selected with a variable starting with LC_. +
LC_ALL + +
+This variable overrides the value of LANG and any other +LC_ variable specifying a locale category. +
LC_COLLATE + +
+This variable determines the collation order used when sorting the +results of pathname expansion, and determines the behavior of range +expressions, equivalence classes, and collating sequences within +pathname expansion and pattern matching. +
LC_CTYPE + +
+This variable determines the interpretation of characters and the +behavior of character classes within pathname expansion and pattern +matching. +
LC_MESSAGES + +
+This variable determines the locale used to translate double-quoted +strings preceded by a $. +
LC_NUMERIC + +
+This variable determines the locale category used for number formatting. +
LINES + +
+Used by the select builtin command to determine the column length +for printing selection lists. Automatically set upon receipt of a SIGWINCH. +
MAIL + +
+If this parameter is set to a file name and the +MAILPATH + + +variable is not set, +bash + +informs the user of the arrival of mail in the specified file. +
MAILCHECK + +
+Specifies how +often (in seconds) +bash + +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. +
MAILPATH + +
+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: +
+

+ +MAILPATH=aq/var/mail/bfox?"You have mail":~/shell-mail?"$_ has mail!"aq +

+ +Bash + +supplies a default value for this variable, but the location of the user +mail files that it uses is system dependent (e.g., /var/mail/$USER). +

+ +
OPTERR + +
+If set to the value 1, +bash + +displays error messages generated by the +getopts + +builtin command (see +SHELL BUILTIN COMMANDS + + +below). +OPTERR + + +is initialized to 1 each time the shell is invoked or a shell +script is executed. +
PATH + +
+The search path for commands. It +is a colon-separated list of directories in which +the shell looks for commands (see +COMMAND EXECUTION + + +below). +A zero-length (null) directory name in the value of PATH 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 +bash. + +A common value is +/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin. + +
POSIXLY_CORRECT + +
+If this variable is in the environment when bash starts, the shell +enters posix mode before reading the startup files, as if the +--posix + +invocation option had been supplied. If it is set while the shell is +running, bash enables posix mode, as if the command +set -o posix + +had been executed. +
PROMPT_COMMAND + +
+If set, the value is executed as a command prior to issuing each primary +prompt. +
PS1 + +
+The value of this parameter is expanded (see +PROMPTING + + +below) and used as the primary prompt string. The default value is +``\s-\v\$ ''. +
PS2 + +
+The value of this parameter is expanded as with +PS1 + +and used as the secondary prompt string. The default is +``> ''. +
PS3 + +
+The value of this parameter is used as the prompt for the +select + +command (see +SHELL GRAMMAR + + +above). +
PS4 + +
+The value of this parameter is expanded as with +PS1 + +and the value is printed before each command +bash + +displays during an execution trace. The first character of +PS4 + + +is replicated multiple times, as necessary, to indicate multiple +levels of indirection. The default is ``+ ''. +
SHELL + +
+The full pathname to the shell is kept in this environment variable. +If it is not set when the shell starts, +bash + +assigns to it the full pathname of the current user's login shell. +
TIMEFORMAT + +
+The value of this parameter is used as a format string specifying +how the timing information for pipelines prefixed with the +time + +reserved word should be displayed. +The % character introduces an escape sequence that is +expanded to a time value or other information. +The escape sequences and their meanings are as follows; the +braces denote optional portions. +

+

+ +
+
%% + +
+A literal %. +
%[p][l]R + +
+The elapsed time in seconds. +
%[p][l]U + +
+The number of CPU seconds spent in user mode. +
%[p][l]S + +
+The number of CPU seconds spent in system mode. +
%P + +
+The CPU percentage, computed as (%U + %S) / %R. + +
+ +
+The optional p is a digit specifying the precision, +the number of fractional digits after a decimal point. +A value of 0 causes no decimal point or fraction to be output. +At most three places after the decimal point may be specified; +values of p greater than 3 are changed to 3. +If p is not specified, the value 3 is used. +
+The optional l specifies a longer format, including +minutes, of the form MMmSS.FFs. +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. +If the value is null, no timing information is displayed. +A trailing newline is added when the format string is displayed. +
TMOUT + +
+If set to a value greater than zero, TMOUT is treated as the +default timeout for the read builtin. +The select command terminates if input does not arrive +after 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. +Bash + +terminates after waiting for that number of seconds if input does +not arrive. +
TMPDIR + +
+If set, Bash uses its value as the name of a directory in which +Bash creates temporary files for the shell's use. +
auto_resume + +
+This variable controls how the shell interacts with the user and +job control. If this variable is set, single word simple +commands without redirections are treated as candidates for resumption +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 +name + +of a stopped job, in this context, is the command line used to +start it. +If set to the value +exact, + +the string supplied must match the name of a stopped job exactly; +if set to +substring, + +the string supplied needs to match a substring of the name of a +stopped job. The +substring + +value provides functionality analogous to the +%? + +job identifier (see +JOB CONTROL + + +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 %string job identifier. +
histchars + +
+The two or three characters which control history expansion +and tokenization (see +HISTORY EXPANSION + + +below). The first character is the history expansion character, +the character which signals the start of a history +expansion, normally `!'. +The second character is the quick substitution +character, which is used as shorthand for re-running the previous +command entered, substituting one string for another in the command. +The default is `^'. +The optional third character is the character +which indicates that the remainder of the line is a comment when found +as the first character of a word, normally `#'. The history +comment character causes history substitution to be skipped for the +remaining words on the line. It does not necessarily cause the shell +parser to treat the rest of the line as a comment. + +
+  +

Arrays

+ +Bash + +provides one-dimensional array variables. Any variable may be used as +an array; the +declare + +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 contiguously. Arrays are indexed using +integers and are zero-based. +

+ +An array is created automatically if any variable is assigned to using +the syntax name[subscript]=value. The +subscript + +is treated as an arithmetic expression that must evaluate to a number +greater than or equal to zero. To explicitly declare an array, use +declare -a name + +(see +SHELL BUILTIN COMMANDS + + +below). +declare -a name[subscript] + +is also accepted; the subscript is ignored. Attributes may be +specified for an array variable using the +declare + +and +readonly + +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. Only +string is required. 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. +This syntax is also accepted by the +declare + +builtin. Individual array elements may be assigned to using the +name[subscript]=value syntax introduced above. +

+ +Any element of an array may be referenced using +${name[subscript]}. The braces are required to avoid +conflicts with pathname expansion. If +subscript is @ or *, the word expands to +all members of name. These subscripts differ only when the +word appears within double quotes. If the word is double-quoted, +${name[*]} expands to a single +word with the value of each array member separated by the first +character of the +IFS + + +special variable, and ${name[@]} expands each element of +name to a separate word. When there are no array members, +${name[@]} expands to nothing. +If the double-quoted expansion occurs within a word, the expansion of +the first parameter is joined with the beginning part of the original +word, and the expansion of the last parameter is joined with the last +part of the original word. +This is analogous to the expansion +of the special parameters * and @ (see +Special Parameters + +above). ${#name[subscript]} expands to the length of +${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 element zero. +

+ +The +unset + +builtin is used to destroy arrays. unset name[subscript] +destroys the array element at index subscript. +Care must be taken to avoid unwanted side effects caused by filename +generation. +unset name, where name is an array, or +unset name[subscript], where +subscript is * or @, removes the entire array. +

+ +The +declare, + +local, + +and +readonly + +builtins each accept a +-a + +option to specify an array. The +read + +builtin accepts a +-a + +option to assign a list of words read from the standard input +to an array. The +set + +and +declare + +builtins display array values in a way that allows them to be +reused as assignments. +  +

EXPANSION

+ +Expansion is performed on the command line after it has been split into +words. There are seven kinds of expansion performed: +brace expansion, + +tilde expansion, + +parameter and variable expansion, + +command substitution, + +arithmetic expansion, + +word splitting, + +and +pathname expansion. + +

+ +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. +

+ +On systems that can support it, there is an additional expansion +available: process substitution. +

+ +Only brace expansion, word splitting, and pathname expansion +can change the number of words of the expansion; other expansions +expand a single word to a single word. +The only exceptions to this are the expansions of +"$@" and "${name[@]}" +as explained above (see +PARAMETERS). + + +  +

Brace Expansion

+ +

+ +Brace expansion + +is a mechanism by which arbitrary strings +may be generated. This mechanism is similar to +pathname expansion, but the filenames generated +need not exist. Patterns to be brace expanded take +the form of an optional +preamble, + +followed by either a series of comma-separated strings or +a sequence expression between a pair of braces, followed by +an optional +postscript. + +The preamble is prefixed to each string contained +within the braces, and the postscript is then appended +to each resulting string, expanding left to right. +

+ +Brace expansions may be nested. The results of each expanded +string are not sorted; left to right order is preserved. +For example, a{d,c,b}e expands into `ade ace abe'. +

+ +A sequence expression takes the form {x..y}, +where x and y are either integers or single characters. +When integers are supplied, the expression expands to each number between +x and y, inclusive. +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. +

+ +Brace expansion is performed before any other expansions, +and any characters special to other expansions are preserved +in the result. It is strictly textual. +Bash + +does not apply any syntactic interpretation to the context of the +expansion or the text between the braces. +

+ +A correctly-formed brace expansion must contain unquoted opening +and closing braces, and at least one unquoted comma or a valid +sequence expression. +Any incorrectly formed brace expansion is left unchanged. +A { or , may be quoted with a backslash to prevent its +being considered part of a brace expression. +To avoid conflicts with parameter expansion, the string ${ +is not considered eligible for brace expansion. +

+ +This construct is typically used as shorthand when the common +prefix of the strings to be generated is longer than in the +above example: +

+

+ +mkdir /usr/local/src/bash/{old,new,dist,bugs} +

+ +or +
+chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}} +
+ +

+ +Brace expansion introduces a slight incompatibility with +historical versions of +sh. + +sh + +does not treat opening or closing braces specially when they +appear as part of a word, and preserves them in the output. +Bash + +removes braces from words as a consequence of brace +expansion. For example, a word entered to +sh + +as file{1,2} +appears identically in the output. The same word is +output as +file1 file2 + +after expansion by +bash. + +If strict compatibility with +sh + +is desired, start +bash + +with the ++B + +option or disable brace expansion with the ++B + +option to the +set + +command (see +SHELL BUILTIN COMMANDS + + +below). +  +

Tilde Expansion

+ +

+ +If a word begins with an unquoted tilde character (`~'), all of +the characters preceding the first unquoted slash (or all characters, +if there is no unquoted slash) are considered a tilde-prefix. +If none of the characters in the tilde-prefix are quoted, the +characters in the tilde-prefix following the tilde are treated as a +possible login name. +If this login name is the null string, the tilde is replaced with the +value of the shell parameter +HOME. + + +If +HOME + + +is unset, the home directory of the user executing the shell is +substituted instead. +Otherwise, the tilde-prefix is replaced with the home directory +associated with the specified login name. +

+ +If the tilde-prefix is a `~+', the value of the shell variable +PWD + + +replaces the tilde-prefix. +If the tilde-prefix is a `~-', the value of the shell variable +OLDPWD, + + +if it is set, is substituted. +If the characters following the tilde in the tilde-prefix consist +of a number N, optionally prefixed +by a `+' or a `-', the tilde-prefix is replaced with the corresponding +element from the directory stack, as it would be displayed by the +dirs + +builtin invoked with the tilde-prefix as an argument. +If the characters following the tilde in the tilde-prefix consist of a +number without a leading `+' or `-', `+' is assumed. +

+ +If the login name is invalid, or the tilde expansion fails, the word +is unchanged. +

+ +Each variable assignment is checked for unquoted tilde-prefixes immediately +following a +: + +or the first +=. + +In these cases, tilde expansion is also performed. +Consequently, one may use file names with tildes in assignments to +PATH, + + +MAILPATH, + + +and +CDPATH, + + +and the shell assigns the expanded value. +  +

Parameter Expansion

+ +

+ +The `$' character introduces parameter expansion, +command substitution, or arithmetic expansion. The parameter name +or symbol to be expanded may be enclosed in braces, which +are optional but serve to protect the variable to be expanded from +characters immediately following it which could be +interpreted as part of the name. +

+ +When braces are used, the matching ending brace is the first `}' +not escaped by a backslash or within a quoted string, and not within an +embedded arithmetic expansion, command substitution, or parameter +expansion. +

+ + +

+
${parameter}
+The value of parameter is substituted. The braces are required +when +parameter + +is a positional parameter with more than one digit, +or when +parameter + +is followed by a character which is not to be +interpreted as part of its name. + +
+

+ +If the first character of parameter is an exclamation point, +a level of variable indirection is introduced. +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 ${!prefix*} and +${!name[@]} described below. +The exclamation point must immediately follow the left brace in order to +introduce indirection. +

+ +In each of the cases below, word is subject to tilde expansion, +parameter expansion, command substitution, and arithmetic expansion. +When not performing substring expansion, bash tests for a parameter +that is unset or null; omitting the colon results in a test only for a +parameter that is unset. +

+ + +

+
${parameter:-word}
+Use Default Values. If +parameter + +is unset or null, the expansion of +word + +is substituted. Otherwise, the value of +parameter + +is substituted. +
${parameter:=word}
+Assign Default Values. +If +parameter + +is unset or null, the expansion of +word + +is assigned to +parameter. + +The value of +parameter + +is then substituted. Positional parameters and special parameters may +not be assigned to in this way. +
${parameter:?word}
+Display Error if Null or Unset. +If +parameter + +is null or unset, the expansion of word (or a message to that effect +if +word + +is not present) is written to the standard error and the shell, if it +is not interactive, exits. Otherwise, the value of parameter is +substituted. +
${parameter:+word}
+Use Alternate Value. +If +parameter + +is null or unset, nothing is substituted, otherwise the expansion of +word + +is substituted. +
${parameter:offset}
+ +
${parameter:offset:length}
+ +Substring Expansion. +Expands to up to length characters 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. +length and offset are arithmetic expressions (see +ARITHMETIC EVALUATION + + +below). +length must evaluate to a number greater than or equal to zero. +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 parameter is @, the result is length positional +parameters beginning at offset. +If parameter is an array name indexed 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. +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. +
${!prefix*}
+ +
${!prefix@}
+ +Expands to the names of variables whose names begin with prefix, +separated by the first character of the +IFS + + +special variable. +
${!name[@]}
+ +
${!name[*]}
+ +If name is an array variable, expands to the list of array indices +(keys) assigned in name. +If name is not an array, expands to 0 if name is set and null +otherwise. +When @ is used and the expansion appears within double quotes, each +key expands to a separate word. +
${#parameter}
+The length in characters of the value of parameter is substituted. +If +parameter + +is +* + +or +@, + +the value substituted is the number of positional parameters. +If +parameter + +is an array name subscripted by +* + +or +@, + +the value substituted is the number of elements in the array. +
${parameter#word}
+ +
${parameter##word}
+ +The +word + +is expanded to produce a pattern just as in pathname +expansion. If the pattern matches the beginning of +the value of +parameter, + +then the result of the expansion is the expanded value of +parameter + +with the shortest matching pattern (the ``#'' case) or the +longest matching pattern (the ``##'' case) deleted. +If +parameter + +is +@ + +or +*, + +the pattern removal operation is applied to each positional +parameter in turn, and the expansion is the resultant list. +If +parameter + +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. +
${parameter%word}
+ +
${parameter%%word}
+ +The word is expanded to produce a pattern just as in +pathname expansion. +If the pattern matches a trailing portion of the expanded value of +parameter, + +then the result of the expansion is the expanded value of +parameter + +with the shortest matching pattern (the ``%'' case) or the +longest matching pattern (the ``%%'' case) deleted. +If +parameter + +is +@ + +or +*, + +the pattern removal operation is applied to each positional +parameter in turn, and the expansion is the resultant list. +If +parameter + +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. +
${parameter/pattern/string}
+The pattern is expanded to produce a pattern just as in +pathname expansion. +Parameter is expanded and the longest match of pattern +against its value is replaced with string. +If Ipattern begins with /, all matches of pattern are +replaced with string. Normally only the first match is replaced. +If pattern begins with #, it must match at the beginning +of the expanded value of parameter. +If pattern begins with %, it must match at the end +of the expanded value of parameter. +If string is null, matches of pattern are deleted +and the / following pattern may be omitted. +If +parameter + +is +@ + +or +*, + +the substitution operation is applied to each positional +parameter in turn, and the expansion is the resultant list. +If +parameter + +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. +
+  +

Command Substitution

+ +

+ +Command substitution allows the output of a command to replace +the command name. There are two forms: +

+ +

+

+ +$(command) +

+ +or +
+`command` +
+ +

+ +Bash + +performs the expansion by executing command and +replacing the command substitution with the standard output of the +command, with any trailing newlines deleted. +Embedded newlines are not deleted, but they may be removed during +word splitting. +The command substitution $(cat file) can be replaced by +the equivalent but faster $(< file). +

+ +When the old-style backquote form of substitution is used, +backslash retains its literal meaning except when followed by +$, + +`, + +or +\. + +The first backquote not preceded by a backslash terminates the +command substitution. +When using the $(command) form, all characters between the +parentheses make up the command; none are treated specially. +

+ +Command substitutions may be nested. To nest when using the backquoted form, +escape the inner backquotes with backslashes. +

+ +If the substitution appears within double quotes, word splitting and +pathname expansion are not performed on the results. +  +

Arithmetic Expansion

+ +

+ +Arithmetic expansion allows the evaluation of an arithmetic expression +and the substitution of the result. The format for arithmetic expansion is: +

+

+ +$((expression)) +

+ +

+ +The +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. +Arithmetic expansions may be nested. +

+ +The evaluation is performed according to the rules listed below under +ARITHMETIC EVALUATION. + + +If +expression + +is invalid, +bash + +prints a message indicating failure and no substitution occurs. +  +

Process Substitution

+ +

+ +Process substitution is supported on systems that support named +pipes (FIFOs) or the /dev/fd method of naming open files. +It takes the form of +<(list) +or +>(list). +The process list is run with its input or output connected to a +FIFO or some file in /dev/fd. The name of this file is +passed as an argument to the current command as the result of the +expansion. If the >(list) form is used, writing to +the file will provide input for list. If the +<(list) form is used, the file passed as an +argument should be read to obtain the output of list. +

+ +When available, process substitution is performed +simultaneously with parameter and variable expansion, +command substitution, +and arithmetic expansion. +  +

Word Splitting

+ +

+ +The shell scans the results of +parameter expansion, +command substitution, +and +arithmetic expansion +that did not occur within double quotes for +word splitting. + +

+ +The shell treats each character of +IFS + + +as a delimiter, and splits the results of the other +expansions into words on these characters. If +IFS + + +is unset, or its +value is exactly +<space><tab><newline>, + +the default, then +any sequence of +IFS + + +characters serves to delimit words. If +IFS + + +has a value other than the default, then sequences of +the whitespace characters +space + +and +tab + +are ignored at the beginning and end of the +word, as long as the whitespace character is in the +value of +IFS + + +(an +IFS + + +whitespace character). +Any character in +IFS + + +that is not +IFS + + +whitespace, along with any adjacent +IFS + + +whitespace characters, delimits a field. +A sequence of +IFS + + +whitespace characters is also treated as a delimiter. +If the value of +IFS + + +is null, no word splitting occurs. +

+ +Explicit null arguments ("" or aqaq) 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 double quotes, a +null argument results and is retained. +

+ +Note that if no expansion occurs, no splitting +is performed. +  +

Pathname Expansion

+ +

+ +After word splitting, +unless the +-f + +option has been set, +bash + +scans each word for the characters +*, + +?, + +and +[. + +If one of these characters appears, then the word is +regarded as a +pattern, + +and replaced with an alphabetically sorted list of +file names matching the pattern. +If no matching file names are found, +and the shell option +nullglob + +is disabled, the word is left unchanged. +If the +nullglob + +option is set, and no matches are found, +the word is removed. +If the +failglob + +shell option is set, and no matches are found, an error message +is printed and the command is not executed. +If the shell option +nocaseglob + +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 +dotglob + +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 +shopt + +below under +SHELL BUILTIN COMMANDS + + +for a description of the +nocaseglob, + +nullglob, + +failglob, + +and +dotglob + +shell options. +

+ +The +GLOBIGNORE + + +shell variable may be used to restrict the set of file names matching a +pattern. + +If +GLOBIGNORE + + +is set, each matching file name that also matches one of the patterns in +GLOBIGNORE + + +is removed from the list of matches. +The file names +``.'' + +and +``..'' + +are always ignored when +GLOBIGNORE + + +is set and not null. However, setting +GLOBIGNORE + + +to a non-null value has the effect of enabling the +dotglob + +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 +GLOBIGNORE. + + +The +dotglob + +option is disabled when +GLOBIGNORE + + +is unset. +

+ +Pattern Matching +

+ +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 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. +
? + +
+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, +using the current locale's collating sequence and character set, +is matched. If the first character following the +[ + +is a +! + +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 LC_COLLATE 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 including it as the first character +in the set. +
+ +

+ + +Within +[ + +and +], + +character classes can be specified using the syntax +[:class:], where class is one of the +following classes defined in the POSIX standard: +

+

+ +

+ + + +alnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigit +
+ +A character class matches any character belonging to that class. +The word character class matches letters, digits, and the character _. +
+ +

+ + +Within +[ + +and +], + +an equivalence class can be specified using the syntax +[=c=], which matches all characters with the +same collation weight (as defined by the current locale) as +the character c. +
+ +

+ + +Within +[ + +and +], + +the syntax [.symbol.] matches the collating symbol +symbol. +

+ + +

+ +If the extglob shell option is enabled using the shopt +builtin, several extended pattern matching operators are recognized. +In the following description, a pattern-list is a list of one +or more patterns separated by a |. +Composite patterns may be formed using one or more of the following +sub-patterns: +

+ +

+
+
?(pattern-list)
+Matches zero or one occurrence of the given patterns +
*(pattern-list)
+Matches zero or more occurrences of the given patterns +
+(pattern-list)
+Matches one or more occurrences of the given patterns +
@(pattern-list)
+Matches one of the given patterns +
!(pattern-list)
+Matches anything except one of the given patterns +
+ + +  +

Quote Removal

+ +

+ +After the preceding expansions, all unquoted occurrences of the +characters +\, + +aq, + +and " that did not result from one of the above +expansions are removed. +  +

REDIRECTION

+ +Before a command is executed, its input and output +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 +operators may precede or appear anywhere within a +simple command + +or may follow a +command. + +Redirections are processed in the order they appear, from +left to right. +

+ +In the following descriptions, if the file descriptor number is +omitted, and the first character of the redirection operator is +<, + +the redirection refers to the standard input (file descriptor +0). If the first character of the redirection operator is +>, + +the redirection refers to the standard output (file descriptor +1). +

+ +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. +If it expands to more than one word, +bash + +reports an error. +

+ +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 +dirlist, + +while the command +

+

+ +ls 2>&1 > dirlist +

+ +

+ +directs only the standard output to file +dirlist, + +because the standard error was duplicated as standard output +before the standard output was redirected to +dirlist. + +

+ +Bash handles several filenames specially when they are used in +redirections, as described in the following table: +

+

+ + +

+
/dev/fd/fd + +
+If fd is a valid integer, file descriptor fd is duplicated. +
/dev/stdin + +
+File descriptor 0 is duplicated. +
/dev/stdout + +
+File descriptor 1 is duplicated. +
/dev/stderr + +
+File descriptor 2 is duplicated. +
/dev/tcp/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 TCP connection to the corresponding 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. + +
+ +

+ +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 +internally. +  +

Redirecting Input

+ +

+ +Redirection of input causes the file whose name results from +the expansion of +word + +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: +

+

+ +[n]<word +

+ +  +

Redirecting Output

+ +

+ +Redirection of output causes the file whose name results from +the expansion of +word + +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 size. +

+ +The general format for redirecting output is: +

+

+ +[n]>word +

+ +

+ +If the redirection operator is +>, + +and the +noclobber + +option to the +set + +builtin has been enabled, the redirection will fail if the file +whose name results from the expansion of word exists and is +a regular file. +If the redirection operator is +>|, + +or the redirection operator is +> + +and the +noclobber + +option to the +set + +builtin command is not enabled, the redirection is attempted even +if the file named by word exists. +  +

Appending Redirected Output

+ +

+ +Redirection of output in this fashion +causes the file whose name results from +the expansion of +word + +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: +

+

+ +[n]>>word +

+ +

+ +  +

Redirecting Standard Output and Standard Error

+ +

+ +Bash + +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 +word + +with this construct. +

+ +There are two formats for redirecting standard output and +standard error: +

+

+ +&>word +

+ +and +
+>&word +
+ +

+ +Of the two forms, the first is preferred. +This is semantically equivalent to +

+

+ +>word 2>&1 +

+ +  +

Here Documents

+ +

+ +This type of redirection instructs the shell to read input from the +current source until a line containing only +word + +(with no trailing 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: +

+

+ +

+<<[-]word
+        here-document
+delimiter
+
+ +
+ +

+ +No parameter expansion, command substitution, arithmetic expansion, +or pathname expansion is performed on +word. + +If any characters in +word + +are quoted, the +delimiter + +is the result of quote removal on +word, + +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 +\<newline> + +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 +delimiter. + +This allows +here-documents within shell scripts to be indented in a +natural fashion. +  +

Here Strings

+ +A variant of here documents, the format is: +
+

+ +

+<<<word
+
+ +
+ +

+ +The word is expanded and supplied to the command on its standard +input. +  +

Duplicating File Descriptors

+ +

+ +The redirection operator +

+

+ +[n]<&word +

+ +

+ +is used to duplicate input file descriptors. +If +word + +expands to one or more digits, the file descriptor denoted by +n + +is made to be a copy of that file descriptor. +If the digits in +word + +do not specify a file descriptor open for input, a redirection error occurs. +If +word + +evaluates to +-, + +file descriptor +n + +is closed. If +n + +is not specified, the standard input (file descriptor 0) is used. +

+ +The operator +

+

+ +[n]>&word +

+ +

+ +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 +word + +do not specify a file descriptor open for output, a redirection error occurs. +As a special case, if n is omitted, and word does not +expand to one or more digits, the standard output and standard +error are redirected as described previously. +  +

Moving File Descriptors

+ +

+ +The redirection operator +

+

+ +[n]<&digit- +

+ +

+ +moves the file descriptor digit to file descriptor +n, + +or the standard input (file descriptor 0) if n is not specified. +digit is closed after being duplicated to n. +

+ +Similarly, the redirection operator +

+

+ +[n]>&digit- +

+ +

+ +moves the file descriptor digit to file descriptor +n, + +or the standard output (file descriptor 1) if n is not specified. +  +

Opening File Descriptors for Reading and Writing

+ +

+ +The redirection operator +

+

+ +[n]<>word +

+ +

+ +causes the file whose name is the expansion of +word + +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. +  +

ALIASES

+ +Aliases 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 +alias + +and +unalias + +builtin commands (see +SHELL BUILTIN COMMANDS + + +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 metacharacters 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 +ls + +to +ls -F, + +for instance, and +bash + +does not try to recursively expand the replacement text. +If the last character of the alias value is a +blank, + +then the next command +word following the alias is also checked for alias expansion. +

+ +Aliases are created and listed with the +alias + +command, and removed with the +unalias + +command. +

+ +There is no mechanism for using arguments in the replacement text. +If arguments are needed, a shell function should be used (see +FUNCTIONS + + +below). +

+ +Aliases are not expanded when the shell is not interactive, unless +the +expand_aliases + +shell option is set using +shopt + +(see the description of +shopt + +under +SHELL BUILTIN COMMANDS +below). +

+ +The rules concerning the definition and use of aliases are +somewhat confusing. +Bash + +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 compound 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 +alias + +in compound commands. +

+ +For almost every purpose, aliases are superseded by +shell functions. +  +

FUNCTIONS

+ +A shell function, defined as described above under +SHELL GRAMMAR, + + +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 positional parameters +during its execution. +The special parameter +# + +is updated to reflect the change. Special parameter 0 +is unchanged. +The first element of the +FUNCNAME + + +variable is set to the name of the function while the function +is executing. +All other aspects of the shell execution +environment are identical between a function and its caller +with the exception that the +DEBUG + + +and +RETURN + +traps (see the description of the +trap + +builtin under +SHELL BUILTIN COMMANDS + + +below) are not inherited unless the function has been given the +trace attribute (see the description of the +declare + + +builtin below) or the +-o functrace shell option has been enabled with +the set builtin +(in which case all functions inherit the DEBUG and RETURN traps). +

+ +Variables local to the function may be declared with the +local + +builtin command. Ordinarily, variables and their values +are shared between the function and its caller. +

+ +If the builtin command +return + +is executed in a function, the function completes and +execution resumes with the next command after the function +call. +Any command associated with the RETURN trap is executed +before execution resumes. +When a function completes, the values of 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 +-f + +option to the +declare + +or +typeset + +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 +shell option is enabled). +Functions may be exported so that subshells +automatically have them defined with the +-f + +option to the +export + +builtin. +A function definition may be deleted using the -f option to +the +unset + +builtin. +Note that shell functions and variables with the same name may result +in multiple identically-named entries in the environment passed to the +shell's children. +Care should be taken in cases where this may cause a problem. +

+ +Functions may be recursive. No limit is imposed on the number +of recursive calls. +  +

ARITHMETIC EVALUATION

+ +The shell allows arithmetic expressions to be evaluated, under +certain circumstances (see the let and declare builtin +commands and Arithmetic Expansion). +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. +

+ + +

+
id++ id-- + +
+variable post-increment and post-decrement +
++id --id + +
+variable pre-increment and pre-decrement +
- + + +
+unary minus and plus +
! ~ + +
+logical and bitwise negation +
** + +
+exponentiation +
* / % + +
+multiplication, division, remainder +
+ - + +
+addition, subtraction +
<< >> + +
+left and right bitwise shifts +
<= >= < > + +
+comparison +
== != + +
+equality and inequality +
& + +
+bitwise AND +
^ + +
+bitwise exclusive OR +
| + +
+bitwise OR +
&& + +
+logical AND +
|| + +
+logical OR +
expr?expr:expr + +
+conditional operator +
= *= /= %= += -= <<= >>= &= ^= |= + +
+assignment +
expr1 , expr2 + +
+comma + +
+

+ +Shell variables are allowed as operands; parameter expansion is +performed 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 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 +integer attribute using declare -i is assigned a value. +A null value evaluates to 0. +A shell variable need not have its integer 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 [base#]n, where 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, +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 +and 35. +

+ +Operators are evaluated in order of precedence. Sub-expressions in +parentheses are evaluated first and may override the precedence +rules above. +  +

CONDITIONAL EXPRESSIONS

+ +Conditional expressions are used by the [[ compound command and +the test 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 file argument to one of the primaries is of the form +/dev/fd/n, then file descriptor n is checked. +If the file argument to one of the primaries is one of +/dev/stdin, /dev/stdout, or /dev/stderr, file +descriptor 0, 1, or 2, respectively, is checked. +

+ +Unless otherwise specified, primaries that operate on files follow symbolic +links and operate on the target of the link, rather than the link itself. +

+ +

+
-a file + +
+True if file exists. +
-b file + +
+True if file exists and is a block special file. +
-c file + +
+True if file exists and is a character special file. +
-d file + +
+True if file exists and is a directory. +
-e file + +
+True if file exists. +
-f file + +
+True if file exists and is a regular file. +
-g file + +
+True if file exists and is set-group-id. +
-h file + +
+True if file exists and is a symbolic link. +
-k file + +
+True if file exists and its ``sticky'' bit is set. +
-p file + +
+True if file exists and is a named pipe (FIFO). +
-r file + +
+True if file exists and is readable. +
-s file + +
+True if file exists and has a size greater than zero. +
-t fd + +
+True if file descriptor +fd + +is open and refers to a terminal. +
-u file + +
+True if file exists and its set-user-id bit is set. +
-w file + +
+True if file exists and is writable. +
-x file + +
+True if file exists and is executable. +
-O file + +
+True if file exists and is owned by the effective user id. +
-G file + +
+True if file exists and is owned by the effective group id. +
-L file + +
+True if file exists and is a symbolic link. +
-S file + +
+True if file exists and is a socket. +
-N file + +
+True if file exists and has been modified since it was last read. +
file1 -nt file2
+True if file1 is newer (according to modification date) than file2, +or if file1 exists and file2 does not. +
file1 -ot file2
+True if file1 is older than file2, or if file2 exists +and file1 does not. +
file1 -ef file2
+True if file1 and file2 refer to the same device and +inode numbers. +
-o optname + +
+True if shell option +optname + +is enabled. +See the list of options under the description of the +-o + +option to the +set + +builtin below. +
-z string + +
+True if the length of string is zero. +
string
+ +
-n string + +
+ +True if the length of +string + +is non-zero. +
string1 == string2
+True if the strings are equal. = may be used in place of +== for strict POSIX compliance. +
string1 != string2
+True if the strings are not equal. +
string1 < string2
+True if string1 sorts before string2 lexicographically +in the current locale. +
string1 > string2
+True if string1 sorts after string2 lexicographically +in the current locale. +
arg1 OP arg2 + +
+OP + + +is one of +-eq, + +-ne, + +-lt, + +-le, + +-gt, + +or +-ge. + +These arithmetic binary operators return true if arg1 +is equal to, not equal to, less than, less than or equal to, +greater than, or greater than or equal to arg2, respectively. +Arg1 + +and +arg2 + +may be positive or negative integers. + +
+  +

SIMPLE COMMAND EXPANSION

+ +When a simple command is executed, the shell performs the following +expansions, assignments, and redirections, from left to right. +
+
1.
+The words that the parser has marked as variable assignments (those +preceding the command name) and redirections are saved for later +processing. +
2.
+The words that are not variable assignments or redirections are +expanded. If any words remain after expansion, the first word +is taken to be the name of the command and the remaining words are +the arguments. +
3.
+Redirections are performed as described above under +REDIRECTION. + + +
4.
+The text after the = in each variable assignment undergoes tilde +expansion, parameter expansion, command substitution, arithmetic expansion, +and quote removal before being assigned to the variable. +
+

+ +If no command name results, the variable assignments affect the current +shell environment. Otherwise, the variables are added to the environment +of the executed command and do not affect the current shell environment. +If any of the assignments attempts to assign a value to a readonly variable, +an error occurs, and the command exits with a non-zero status. +

+ +If no command name results, redirections are performed, but do not +affect the current shell environment. A redirection error causes the +command to exit with a non-zero status. +

+ +If there is a command name left after expansion, execution proceeds as +described below. Otherwise, the command exits. If one of the expansions +contained a command substitution, the exit status of the command is +the exit status of the last command substitution performed. If there +were no command substitutions, the command exits with a status of zero. +  +

COMMAND EXECUTION

+ +After a command has been split into words, if it results in a +simple command and an optional list of arguments, the following +actions are taken. +

+ +If the command name contains no slashes, the shell attempts to +locate it. If there exists a shell function by that name, that +function is invoked as described above in +FUNCTIONS. + + +If the name does not match a function, the shell searches for +it in the list of shell builtins. If a match is found, that +builtin is invoked. +

+ +If the name is neither a shell function nor a builtin, +and contains no slashes, +bash + +searches each element of the +PATH + + +for a directory containing an executable file by that name. +Bash + +uses a hash table to remember the full pathnames of executable +files (see +hash + +under +SHELL BUILTIN COMMANDS + + +below). +A full search of the directories in +PATH + + +is performed only if the command is not found in the hash table. +If the search is unsuccessful, the shell prints an error +message and returns an exit status of 127. +

+ +If the search is successful, or if the command name contains +one or more slashes, the shell executes the named program in a +separate execution environment. +Argument 0 is set to the name given, and the remaining arguments +to the command are set to the arguments given, if any. +

+ +If this execution fails because the file is not in executable +format, and the file is not a directory, it is assumed to be +a shell script, a file +containing shell commands. A subshell is spawned to execute +it. This subshell reinitializes itself, so +that the effect is as if a new shell had been invoked +to handle the script, with the exception that the locations of +commands remembered by the parent (see +hash + +below under +SHELL BUILTIN COMMANDS) +are retained by the child. +

+ +If the program is a file beginning with +#!, + +the remainder of the first line specifies an interpreter +for the program. The shell executes the +specified interpreter on operating systems that do not +handle this executable format themselves. The arguments to the +interpreter consist of a single optional argument following the +interpreter name on the first line of the program, followed +by the name of the program, followed by the command +arguments, if any. +  +

COMMAND EXECUTION ENVIRONMENT

+ +The shell has an execution environment, which consists of the +following: +

+

+
*
+open files inherited by the shell at invocation, as modified by +redirections supplied to the exec builtin +
*
+the current working directory as set by cd, pushd, or +popd, or inherited by the shell at invocation +
*
+the file creation mode mask as set by umask or inherited from +the shell's parent +
*
+current traps set by trap +
*
+shell parameters that are set by variable assignment or with set +or inherited from the shell's parent in the environment +
*
+shell functions defined during execution or inherited from the shell's +parent in the environment +
*
+options enabled at invocation (either by default or with command-line +arguments) or by set +
*
+options enabled by shopt +
*
+shell aliases defined with alias +
*
+various process IDs, including those of background jobs, the value +of $$, and the value of $PPID +
+

+ +When a simple command other than a builtin or shell function +is to be executed, it +is invoked in a separate execution environment that consists of +the following. Unless otherwise noted, the values are inherited +from the shell. +

+

+
*
+the shell's open files, plus any modifications and additions specified +by redirections to the command +
*
+the current working directory +
*
+the file creation mode mask +
*
+shell variables and functions marked for export, along with variables +exported for the command, passed in the environment +
*
+traps caught by the shell are reset to the values inherited from the +shell's parent, and traps ignored by the shell are ignored +
+

+ +A command invoked in this separate environment cannot affect the +shell's execution environment. +

+ +Command substitution, commands grouped with parentheses, +and asynchronous commands are invoked in a +subshell environment that is a duplicate of the shell environment, +except that traps caught by the shell are reset to the values +that the shell inherited from its parent at invocation. Builtin +commands that are invoked as part of a pipeline are also executed in a +subshell environment. Changes made to the subshell environment +cannot affect the shell's execution environment. +

+ +If a command is followed by a & and job control is not active, the +default standard input for the command is the empty file /dev/null. +Otherwise, the invoked command inherits the file descriptors of the calling +shell as modified by redirections. +  +

ENVIRONMENT

+ +When a program is invoked it is given an array of strings +called the +environment. + +This is a list of +name-value pairs, of the form +name=value. + +

+ +The shell provides several ways to manipulate the environment. +On invocation, the shell scans its own environment and +creates a parameter for each name found, automatically marking +it for +export + +to child processes. Executed commands inherit the environment. +The +export + +and +declare -x + +commands allow parameters and functions to be added to and +deleted from the environment. If the value of a parameter +in the environment is modified, the new value becomes part +of the environment, replacing the old. The environment +inherited by any executed command consists of the shell's +initial environment, whose values may be modified in the shell, +less any pairs removed by the +unset + +command, plus any additions via the +export + +and +declare -x + +commands. +

+ +The environment for any +simple command + +or function may be augmented temporarily by prefixing it with +parameter assignments, as described above in +PARAMETERS. + + +These assignment statements affect only the environment seen +by that command. +

+ +If the +-k + +option is set (see the +set + +builtin command below), then +all + +parameter assignments are placed in the environment for a command, +not just those that precede the command name. +

+ +When +bash + +invokes an external command, the variable +_ + +is set to the full file name of the command and passed to that +command in its environment. +  +

EXIT STATUS

+ +For the shell's purposes, a command which exits with a +zero exit status has succeeded. An exit status of zero +indicates success. A non-zero exit status indicates failure. +When a command terminates on a fatal signal N, bash uses +the value of 128+N as the exit status. +

+ +If a command is not found, the child process created to +execute it returns a status of 127. If a command is found +but is not executable, the return status is 126. +

+ +If a command fails because of an error during expansion or redirection, +the exit status is greater than zero. +

+ +Shell builtin commands return a status of 0 (true) if +successful, and non-zero (false) if an error occurs +while they execute. +All builtins return an exit status of 2 to indicate incorrect usage. +

+ +Bash itself returns the exit status of the last command +executed, unless a syntax error occurs, in which case it exits +with a non-zero value. See also the exit builtin +command below. +  +

SIGNALS

+ +When bash is interactive, in the absence of any traps, it ignores +SIGTERM + + +(so that kill 0 does not kill an interactive shell), +and +SIGINT + + +is caught and handled (so that the wait builtin is interruptible). +In all cases, bash ignores +SIGQUIT. + + +If job control is in effect, +bash + +ignores +SIGTTIN, + + +SIGTTOU, + + +and +SIGTSTP. + + +

+ +Non-builtin commands run by bash have signal handlers +set to the values inherited by the shell from its parent. +When job control is not in effect, asynchronous commands +ignore +SIGINT + + +and +SIGQUIT + + +in addition to these inherited handlers. +Commands run as a result of command substitution ignore the +keyboard-generated job control signals +SIGTTIN, + + +SIGTTOU, + + +and +SIGTSTP. + + +

+ +The shell exits by default upon receipt of a +SIGHUP. + + +Before exiting, an interactive shell resends the +SIGHUP + + +to all jobs, running or stopped. +Stopped jobs are sent +SIGCONT + + +to ensure that they receive the +SIGHUP. + + +To prevent the shell from +sending the signal to a particular job, it should be removed from the +jobs table with the +disown + +builtin (see +SHELL BUILTIN COMMANDS + + +below) or marked +to not receive +SIGHUP + + +using +disown -h. + +

+ +If the +huponexit + +shell option has been set with +shopt, + +bash + +sends a +SIGHUP + + +to all jobs when an interactive login shell exits. +

+ +If bash is waiting for a command to complete and receives a signal +for which a trap has been set, the trap will not be executed until +the command completes. +When bash is waiting for an asynchronous command via the wait +builtin, the reception of a signal for which a trap has been set will +cause the wait builtin to return immediately with an exit status +greater than 128, immediately after which the trap is executed. +  +

JOB CONTROL

+ +Job control + +refers to the ability to selectively stop (suspend) +the execution of processes and continue (resume) +their execution at a later point. A user typically employs +this facility via an interactive interface supplied jointly +by the system's terminal driver and +bash. + +

+ +The shell associates a +job + +with each pipeline. It keeps a table of currently executing +jobs, which may be listed with the +jobs + +command. When +bash + +starts a job asynchronously (in the +background), + +it prints a line that looks like: +

+

+ +[1] 25647 +

+ +

+ +indicating that this job is job number 1 and that the process ID +of the last process in the pipeline associated with this job is 25647. +All of the processes in a single pipeline are members of the same job. +Bash + +uses the +job + +abstraction as the basis for job control. +

+ +To facilitate the implementation of the user interface to job +control, the operating system maintains the notion of a current terminal +process group ID. Members of this process group (processes whose +process group ID is equal to the current terminal process group ID) +receive keyboard-generated signals such as +SIGINT. + + +These processes are said to be in the +foreground. + +Background + +processes are those whose process group ID differs from the terminal's; +such processes are immune to keyboard-generated signals. +Only foreground processes are allowed to read from or write to the +terminal. Background processes which attempt to read from (write to) the +terminal are sent a +SIGTTIN (SIGTTOU) + + +signal by the terminal driver, +which, unless caught, suspends the process. +

+ +If the operating system on which +bash + +is running supports +job control, +bash + +contains facilities to use it. +Typing the +suspend + +character (typically +^Z, + +Control-Z) while a process is running +causes that process to be stopped and returns control to +bash. + +Typing the +delayed suspend + +character (typically +^Y, + +Control-Y) causes the process to be stopped when it +attempts to read input from the terminal, and control to +be returned to +bash. + +The user may then manipulate the state of this job, using the +bg + +command to continue it in the background, the +fg + +command to continue it in the foreground, or +the +kill + +command to kill it. A ^Z takes effect immediately, +and has the additional side effect of causing pending output +and typeahead to be discarded. +

+ +There are a number of ways to refer to a job in the shell. +The character +% + +introduces a job name. Job number +n + +may be referred to as +%n. + +A job may also be referred to using a prefix of the name used to +start it, or using a substring that appears in its command line. +For example, +%ce + +refers to a stopped +ce + +job. If a prefix matches more than one job, +bash + +reports an error. Using +%?ce, + +on the other hand, refers to any job containing the string +ce + +in its command line. If the substring matches more than one job, +bash + +reports an error. The symbols +%% + +and +%+ + +refer to the shell's notion of the +current job, + +which is the last job stopped while it was in +the foreground or started in the background. +The +previous job + +may be referenced using +%-. + +In output pertaining to jobs (e.g., the output of the +jobs + +command), the current job is always flagged with a ++, + +and the previous job with a +-. + +A single % (with no accompanying job specification) also refers to the +current job. +

+ +Simply naming a job can be used to bring it into the +foreground: +%1 + +is a synonym for +``fg %1'', +bringing job 1 from the background into the foreground. +Similarly, +``%1 &'' + +resumes job 1 in the background, equivalent to +``bg %1''. +

+ +The shell learns immediately whenever a job changes state. +Normally, +bash + +waits until it is about to print a prompt before reporting +changes in a job's status so as to not interrupt +any other output. If the +-b + +option to the +set + +builtin command +is enabled, +bash + +reports such changes immediately. +Any trap on +SIGCHLD + + +is executed for each child that exits. +

+ +If an attempt to exit +bash + +is made while jobs are stopped, the shell prints a warning message. The +jobs + +command may then be used to inspect their status. +If a second attempt to exit is made without an intervening command, +the shell does not print another warning, and the stopped +jobs are terminated. +  +

PROMPTING

+ +When executing interactively, +bash + +displays the primary prompt +PS1 + + +when it is ready to read a command, and the secondary prompt +PS2 + + +when it needs more input to complete a command. +Bash + +allows these prompt strings to be customized by inserting a number of +backslash-escaped special characters that are decoded as follows: +
+ +
+
\a + +
+an ASCII bell character (07) +
\d + +
+the date in "Weekday Month Date" format (e.g., "Tue May 26") +
\D{format} + +
+the format is passed to strftime(3) and the result is inserted +into the prompt string; an empty format results in a locale-specific +time representation. The braces are required +
\e + +
+an ASCII escape character (033) +
\h + +
+the hostname up to the first `.' +
\H + +
+the hostname +
\j + +
+the number of jobs currently managed by the shell +
\l + +
+the basename of the shell's terminal device name +
\n + +
+newline +
\r + +
+carriage return +
\s + +
+the name of the shell, the basename of +$0 + +(the portion following the final slash) +
\t + +
+the current time in 24-hour HH:MM:SS format +
\T + +
+the current time in 12-hour HH:MM:SS format +
\@ + +
+the current time in 12-hour am/pm format +
\A + +
+the current time in 24-hour HH:MM format +
\u + +
+the username of the current user +
\v + +
+the version of bash (e.g., 2.00) +
\V + +
+the release of bash, version + patch level (e.g., 2.00.0) +
\w + +
+the current working directory, with $HOME abbreviated with a tilde +
\W + +
+the basename of the current working directory, with $HOME +abbreviated with a tilde +
\! + +
+the history number of this command +
\# + +
+the command number of this command +
\$ + +
+if the effective UID is 0, a +#, + +otherwise a +$ + +
\nnn + +
+the character corresponding to the octal number nnn +
\\ + +
+a backslash +
\[ + +
+begin a sequence of non-printing characters, which could be used to +embed a terminal control sequence into the prompt +
\] + +
+end a sequence of non-printing characters + +
+ +

+ +The command number and the history number are usually different: +the history number of a command is its position in the history +list, which may include commands restored from the history file +(see +HISTORY + + +below), while the command number is the position in the sequence +of commands executed during the current shell session. +After the string is decoded, it is expanded via +parameter expansion, command substitution, arithmetic +expansion, and quote removal, subject to the value of the +promptvars + +shell option (see the description of the +shopt + +command under +SHELL BUILTIN COMMANDS + + +below). +  +

READLINE

+ +This is the library that handles reading input when using an interactive +shell, unless the +--noediting + +option is given at shell invocation. +By default, the line editing commands are similar to those of emacs. +A vi-style line editing interface is also available. +To turn off line editing after the shell is running, use the ++o emacs + +or ++o vi + +options to the +set + +builtin (see +SHELL BUILTIN COMMANDS + + +below). +  +

Readline Notation

+ +

+ +In this section, the emacs-style notation is used to denote +keystrokes. Control keys are denoted by C-key, e.g., C-n +means Control-N. Similarly, +meta + +keys are denoted by M-key, so M-x means Meta-X. (On keyboards +without a +meta + +key, M-x means ESC x, i.e., press the Escape key +then the +x + +key. This makes ESC the meta prefix. +The combination M-C-x means ESC-Control-x, +or press the Escape key +then hold the Control key while pressing the +x + +key.) +

+ +Readline commands may be given numeric +arguments, + +which normally act as a repeat count. +Sometimes, however, it is the sign of the argument that is significant. +Passing a negative argument to a command that acts in the forward +direction (e.g., kill-line) causes that command to act in a +backward direction. +Commands whose behavior with arguments deviates from this are noted +below. +

+ +When a command is described as killing text, the text +deleted is saved for possible future retrieval +(yanking). The killed text is saved in a +kill ring. Consecutive kills cause the text to be +accumulated into one unit, which can be yanked all at once. +Commands which do not kill text separate the chunks of text +on the kill ring. +  +

Readline Initialization

+ +

+ +Readline is customized by putting commands in an initialization +file (the inputrc file). +The name of this file is taken from the value of the +INPUTRC + + +variable. If that variable is unset, the default is +~/.inputrc. + +When a program which uses the readline library starts up, the +initialization file is read, and the key bindings and variables +are set. +There are only a few basic constructs allowed in the +readline initialization file. +Blank lines are ignored. +Lines beginning with a # are comments. +Lines beginning with a $ indicate conditional constructs. +Other lines denote key bindings and variable settings. +

+ +The default key-bindings may be changed with an +inputrc + +file. +Other programs that use this library may add their own commands +and bindings. +

+ +For example, placing +

+

+ +M-Control-u: universal-argument +

+ +or +
+C-Meta-u: universal-argument +
+ +into the +inputrc + +would make M-C-u execute the readline command +universal-argument. + +

+ +The following symbolic character names are recognized: +RUBOUT, + +DEL, + +ESC, + +LFD, + +NEWLINE, + +RET, + +RETURN, + +SPC, + +SPACE, + +and +TAB. + +

+ +In addition to command names, readline allows keys to be bound +to a string that is inserted when the key is pressed (a macro). +  +

Readline Key Bindings

+ +

+ +The syntax for controlling key bindings in the +inputrc + +file is simple. All that is required is the name of the +command or the text of a macro and a key sequence to which +it should be bound. The name may be specified in one of two ways: +as a symbolic key name, possibly with Meta- or Control- +prefixes, or as a key sequence. +

+ +When using the form keyname:function-name or macro, +keyname + +is the name of a key spelled out in English. For example: +

+

+Control-u: universal-argument +
+ +Meta-Rubout: backward-kill-word +
+ +Control-o: "> output" +
+ +

+ +In the above example, +C-u + +is bound to the function +universal-argument, + +M-DEL + +is bound to the function +backward-kill-word, + +and +C-o + +is bound to run the macro +expressed on the right hand side (that is, to insert the text +> output + +into the line). +

+ +In the second form, "keyseq":function-name or macro, +keyseq + +differs from +keyname + +above in that strings denoting +an entire key sequence may be specified by placing the sequence +within double quotes. Some GNU Emacs style key escapes can be +used, as in the following example, but the symbolic character names +are not recognized. +

+

+"\C-u": universal-argument +
+ +"\C-x\C-r": re-read-init-file +
+ +"\e[11~": "Function Key 1" +
+ +

+ +In this example, +C-u + +is again bound to the function +universal-argument. + +C-x C-r + +is bound to the function +re-read-init-file, + +and +ESC [ 1 1 ~ + +is bound to insert the text +Function Key 1. + +

+ +The full set of GNU Emacs style escape sequences is +

+ +
+
\C- + +
+control prefix +
\M- + +
+meta prefix +
\e + +
+an escape character +
\\ + +
+backslash +
\ + +
+literal " +
\aq + +
+literal aq +
+ + +

+ +In addition to the GNU Emacs style escape sequences, a second +set of backslash escapes is available: +

+ +
+
\a + +
+alert (bell) +
\b + +
+backspace +
\d + +
+delete +
\f + +
+form feed +
\n + +
+newline +
\r + +
+carriage return +
\t + +
+horizontal tab +
\v + +
+vertical tab +
\nnn + +
+the eight-bit character whose value is the octal value nnn +(one to three digits) +
\xHH + +
+the eight-bit character whose value is the hexadecimal value HH +(one or two hex digits) +
+ + +

+ +When entering the text of a macro, single or double quotes must +be used to indicate a macro definition. +Unquoted text is assumed to be a function name. +In the macro body, the backslash escapes described above are expanded. +Backslash will quote any other character in the macro text, +including " and aq. +

+ +Bash + +allows the current readline key bindings to be displayed or modified +with the +bind + +builtin command. The editing mode may be switched during interactive +use by using the +-o + +option to the +set + +builtin command (see +SHELL BUILTIN COMMANDS + + +below). +  +

Readline Variables

+ +

+ +Readline has variables that can be used to further customize its +behavior. A variable may be set in the +inputrc + +file with a statement of the form +

+

+ +set variable-name value +

+ +

+ +Except where noted, readline variables can take the values +On + +or +Off + +(without regard to case). +Unrecognized variable names are ignored. +When a variable value is read, empty or null values, "on" (case-insensitive), +and "1" are equivalent to On. All other values are equivalent to +Off. +The variables and their default values are: +

+ + +

+
bell-style (audible) + +
+Controls what happens when readline wants to ring the terminal bell. +If set to none, readline never rings the bell. If set to +visible, readline uses a visible bell if one is available. +If set to audible, readline attempts to ring the terminal's bell. +
bind-tty-special-chars (On) + +
+If set to On, readline attempts to bind the control characters +treated specially by the kernel's terminal driver to their readline +equivalents. +
comment-begin (``#'') + +
+The string that is inserted when the readline +insert-comment + +command is executed. +This command is bound to +M-# + +in emacs mode and to +# + +in vi command mode. +
completion-ignore-case (Off) + +
+If set to On, readline performs filename matching and completion +in a case-insensitive fashion. +
completion-query-items (100) + +
+This determines when the user is queried about viewing +the number of possible completions +generated by the possible-completions 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 simply listed +on the terminal. +
convert-meta (On) + +
+If set to On, 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 meta prefix). +
disable-completion (Off) + +
+If set to On, readline will inhibit word completion. Completion +characters will be inserted into the line as if they had been +mapped to self-insert. +
editing-mode (emacs) + +
+Controls whether readline begins with a set of key bindings similar +to emacs or vi. +editing-mode + +can be set to either +emacs + +or +vi. + +
enable-keypad (Off) + +
+When set to On, readline will try to enable the application +keypad when it is called. Some systems need this to enable the +arrow keys. +
expand-tilde (Off) + +
+If set to on, tilde expansion is performed when readline +attempts word completion. +
history-preserve-point (Off) + +
+If set to on, the history code attempts to place point at the +same location on each history line retrieved with previous-history +or next-history. +
horizontal-scroll-mode (Off) + +
+When set to On, 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 new line. +
input-meta (Off) + +
+If set to On, 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 +meta-flag + +is a synonym for this variable. +
isearch-terminators (``C-[C-J'') + +
+The string of characters that should terminate an incremental +search without subsequently executing the character as a command. +If this variable has not been given a value, the characters +ESC and C-J will terminate an incremental search. +
keymap (emacs) + +
+Set the current readline keymap. The set of valid keymap names is +emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, +vi-command, and +vi-insert. + +vi is equivalent to vi-command; emacs is +equivalent to emacs-standard. The default value is +emacs; + +the value of +editing-mode + +also affects the default keymap. +
mark-directories (On) + +
+If set to On, completed directory names have a slash +appended. +
mark-modified-lines (Off) + +
+If set to On, history lines that have been modified are displayed +with a preceding asterisk (*). +
mark-symlinked-directories (Off) + +
+If set to On, completed names which are symbolic links to directories +have a slash appended (subject to the value of +mark-directories). +
match-hidden-files (On) + +
+This variable, when set to On, causes readline to match files whose +names begin with a `.' (hidden files) when performing filename +completion, unless the leading `.' is +supplied by the user in the filename to be completed. +
output-meta (Off) + +
+If set to On, readline will display characters with the +eighth bit set directly rather than as a meta-prefixed escape +sequence. +
page-completions (On) + +
+If set to On, readline uses an internal more-like pager +to display a screenful of possible completions at a time. +
print-completions-horizontally (Off) + +
+If set to On, readline will display completions with matches +sorted horizontally in alphabetical order, rather than down the screen. +
show-all-if-ambiguous (Off) + +
+This alters the default behavior of the completion functions. If +set to +on, + +words which have more than one possible completion cause the +matches to be listed immediately instead of ringing the bell. +
show-all-if-unmodified (Off) + +
+This alters the default behavior of the completion functions in +a fashion similar to show-all-if-ambiguous. +If set to +on, + +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. +
visible-stats (Off) + +
+If set to On, a character denoting a file's type as reported +by stat(2) is appended to the filename when listing possible +completions. + +
+  +

Readline Conditional Constructs

+ +

+ +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. +

+
$if
+The +$if + +construct allows bindings to be made based on the +editing 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. +
+
+
mode
+The mode= form of the $if directive is used to test +whether readline is in emacs or vi mode. +This may be used in conjunction +with the set keymap command, for instance, to set bindings in +the emacs-standard and emacs-ctlx keymaps only if +readline is starting out in emacs mode. +
term
+The term= 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 terminal and the portion +of the terminal name before the first -. This allows +sun + +to match both +sun + +and +sun-cmd, + +for instance. +
application
+The application construct is used to include +application-specific settings. Each program using the readline +library sets the application name, 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 Bash: +

+

+
+$if Bash
+# Quote the current or previous word
+"\C-xq": "\eb\"\ef\""
+$endif
+
+ +
+ +
+ +
$endif
+This command, as seen in the previous example, terminates an +$if command. +
$else
+Commands in this branch of the $if directive are executed if +the test fails. +
$include
+This directive takes a single filename as an argument and reads commands +and bindings from that file. For example, the following directive +would read /etc/inputrc: +

+

+
+$include  /etc/inputrc
+
+ +
+ +
+  +

Searching

+ +

+ +Readline provides commands for searching through the command history +(see +HISTORY + + +below) for lines containing a specified string. +There are two search modes: +incremental + +and +non-incremental. + +

+ +Incremental searches begin before the user has finished typing the +search string. +As each character of the search string is typed, readline 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 isearch-terminators +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 +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 newline will terminate 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 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 by the user or be part of the contents of the current line. +  +

Readline Command Names

+ +

+ +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 accompanying key sequence are unbound by default. +In the following descriptions, point refers to the current cursor +position, and mark refers to a cursor position saved by the +set-mark command. +The text between the point and mark is referred to as the region. +  +

Commands for Moving

+ +

+ + +

+
beginning-of-line (C-a) + +
+Move to the start of the current line. +
end-of-line (C-e) + +
+Move to the end of the line. +
forward-char (C-f) + +
+Move forward a character. +
backward-char (C-b) + +
+Move back a character. +
forward-word (M-f) + +
+Move forward to the end of the next word. Words are composed of +alphanumeric characters (letters and digits). +
backward-word (M-b) + +
+Move back to the start of the current or previous word. Words are +composed of alphanumeric characters (letters and digits). +
clear-screen (C-l) + +
+Clear the screen leaving the current line at the top of the screen. +With an argument, refresh the current line without clearing the +screen. +
redraw-current-line + +
+Refresh the current line. + +
+  +

Commands for Manipulating the History

+ +

+ + +

+
accept-line (Newline, Return) + +
+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 +HISTCONTROL + + +variable. If the line is a modified history +line, then restore the history line to its original state. +
previous-history (C-p) + +
+Fetch the previous command from the history list, moving back in +the list. +
next-history (C-n) + +
+Fetch the next command from the history list, moving forward in the +list. +
beginning-of-history (M-<) + +
+Move to the first line in the history. +
end-of-history (M->) + +
+Move to the end of the input history, i.e., the line currently being +entered. +
reverse-search-history (C-r) + +
+Search backward starting at the current line and moving `up' through +the history as necessary. This is an incremental search. +
forward-search-history (C-s) + +
+Search forward starting at the current line and moving `down' through +the history as necessary. This is an incremental search. +
non-incremental-reverse-search-history (M-p) + +
+Search backward through the history starting at the current line +using a non-incremental search for a string supplied by the user. +
non-incremental-forward-search-history (M-n) + +
+Search forward through the history using a non-incremental search for +a string supplied by the user. +
history-search-forward + +
+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. +
history-search-backward + +
+Search backward through the history for the string of characters +between the start of the current line and the point. +This is a non-incremental search. +
yank-nth-arg (M-C-y) + +
+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 +inserts the nth word from the end of the previous command. +Once the argument n is computed, the argument is extracted +as if the "!n" history expansion had been specified. +
yank-last-arg (M-., M-_) + +
+Insert the last argument to the previous command (the last word of +the previous history entry). With an argument, +behave exactly like yank-nth-arg. +Successive calls to yank-last-arg move back through the history +list, inserting the last argument of each line in turn. +The history expansion facilities are used to extract the last argument, +as if the "!$" history expansion had been specified. +
shell-expand-line (M-C-e) + +
+Expand the line as the shell does. This +performs alias and history expansion as well as all of the shell +word expansions. See +HISTORY EXPANSION + + +below for a description of history expansion. +
history-expand-line (M-^) + +
+Perform history expansion on the current line. +See +HISTORY EXPANSION + + +below for a description of history expansion. +
magic-space + +
+Perform history expansion on the current line and insert a space. +See +HISTORY EXPANSION + + +below for a description of history expansion. +
alias-expand-line + +
+Perform alias expansion on the current line. +See +ALIASES + + +above for a description of alias expansion. +
history-and-alias-expand-line + +
+Perform history and alias expansion on the current line. +
insert-last-argument (M-., M-_) + +
+A synonym for yank-last-arg. +
operate-and-get-next (C-o) + +
+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. +
edit-and-execute-command (C-xC-e) + +
+Invoke an editor on the current command line, and execute the result as shell +commands. +Bash attempts to invoke +$FCEDIT, + + +$EDITOR, + + +and emacs as the editor, in that order. + +
+  +

Commands for Changing Text

+ +

+ + +

+
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 delete-char, +then return +EOF. + + +
backward-delete-char (Rubout) + +
+Delete the character behind the cursor. When given a numeric argument, +save the deleted text on the kill ring. +
forward-backward-delete-char + +
+Delete the character under the cursor, unless the cursor is at the +end of the line, in which case the character behind the cursor is +deleted. +
quoted-insert (C-q, C-v) + +
+Add the next character typed to the line verbatim. This is +how to insert characters like C-q, for example. +
tab-insert (C-v TAB) + +
+Insert a tab character. +
self-insert (a, b, A, 1, !, ...) + +
+Insert the character typed. +
transpose-chars (C-t) + +
+Drag the character before point forward over the character at point, +moving point forward as well. +If point is at the end of the line, then this transposes +the two characters before point. +Negative arguments have no effect. +
transpose-words (M-t) + +
+Drag the word before point past the word after point, +moving point over that word as well. +If point is at the end of the line, this transposes +the last two words on the line. +
upcase-word (M-u) + +
+Uppercase the current (or following) word. With a negative argument, +uppercase the previous word, but do not move point. +
downcase-word (M-l) + +
+Lowercase the current (or following) word. With a negative argument, +lowercase the previous word, but do not move point. +
capitalize-word (M-c) + +
+Capitalize the current (or following) word. With a negative argument, +capitalize the previous word, but do not move point. +
overwrite-mode + +
+Toggle overwrite mode. With an explicit positive numeric argument, +switches to overwrite mode. With an explicit non-positive numeric +argument, switches to insert mode. This command affects only +emacs mode; vi mode does overwrite differently. +Each call to readline() starts in insert mode. +In overwrite mode, characters bound to self-insert replace +the text at point rather than pushing the text to the right. +Characters bound to backward-delete-char replace the character +before point with a space. By default, this command is unbound. + +
+  +

Killing and Yanking

+ +

+ + +

+
kill-line (C-k) + +
+Kill the text from point to the end of the line. +
backward-kill-line (C-x Rubout) + +
+Kill backward to the beginning of the line. +
unix-line-discard (C-u) + +
+Kill backward from point to the beginning of the line. +The killed text is saved on the kill-ring. + +
kill-whole-line + +
+Kill all characters on the current line, no matter where point is. +
kill-word (M-d) + +
+Kill from point to the end of the current word, or if between +words, to the end of the next word. +Word boundaries are the same as those used by forward-word. +
backward-kill-word (M-Rubout) + +
+Kill the word behind point. +Word boundaries are the same as those used by backward-word. +
unix-word-rubout (C-w) + +
+Kill the word behind point, using white space as a word boundary. +The killed text is saved on the kill-ring. +
unix-filename-rubout + +
+Kill the word behind point, using white space and the slash character +as the word boundaries. +The killed text is saved on the kill-ring. +
delete-horizontal-space (M-\) + +
+Delete all spaces and tabs around point. +
kill-region + +
+Kill the text in the current region. +
copy-region-as-kill + +
+Copy the text in the region to the kill buffer. +
copy-backward-word + +
+Copy the word before point to the kill buffer. +The word boundaries are the same as backward-word. +
copy-forward-word + +
+Copy the word following point to the kill buffer. +The word boundaries are the same as forward-word. +
yank (C-y) + +
+Yank the top of the kill ring into the buffer at point. +
yank-pop (M-y) + +
+Rotate the kill ring, and yank the new top. Only works following +yank + +or +yank-pop. + + +
+  +

Numeric Arguments

+ +

+ + +

+
digit-argument (M-0, M-1, ..., M--) + +
+Add this digit to the argument already accumulating, or start a new +argument. M-- starts a negative argument. +
universal-argument + +
+This is another way to specify an argument. +If this command is followed by one or more digits, optionally with a +leading minus sign, those digits define the argument. +If the command is followed by digits, executing +universal-argument + +again ends the numeric argument, but is otherwise ignored. +As a special case, if this command is immediately followed by a +character that is neither a digit or minus sign, the argument count +for the next command is multiplied by four. +The argument count is initially one, so executing this function the +first time makes the argument count four, a second time makes the +argument count sixteen, and so on. + +
+  +

Completing

+ +

+ + +

+
complete (TAB) + +
+Attempt to perform completion on the text before point. +Bash + +attempts completion treating the text as a variable (if the +text begins with $), username (if the text begins with +~), hostname (if the text begins with @), or +command (including aliases and functions) in turn. If none +of these produces a match, filename completion is attempted. +
possible-completions (M-?) + +
+List the possible completions of the text before point. +
insert-completions (M-*) + +
+Insert all completions of the text before point +that would have been generated by +possible-completions. +
menu-complete + +
+Similar to complete, but replaces the word to be completed +with a single match from the list of possible completions. +Repeated execution of menu-complete steps through the list +of possible completions, inserting each match in turn. +At the end of the list of completions, the bell is rung +(subject to the setting of bell-style) +and the original text is restored. +An argument of n moves n positions forward in the list +of matches; a negative argument may be used to move backward +through the list. +This command is intended to be bound to TAB, but is unbound +by default. +
delete-char-or-list + +
+Deletes the character under the cursor if not at the beginning or +end of the line (like delete-char). +If at the end of the line, behaves identically to +possible-completions. +This command is unbound by default. +
complete-filename (M-/) + +
+Attempt filename completion on the text before point. +
possible-filename-completions (C-x /) + +
+List the possible completions of the text before point, +treating it as a filename. +
complete-username (M-~) + +
+Attempt completion on the text before point, treating +it as a username. +
possible-username-completions (C-x ~) + +
+List the possible completions of the text before point, +treating it as a username. +
complete-variable (M-$) + +
+Attempt completion on the text before point, treating +it as a shell variable. +
possible-variable-completions (C-x $) + +
+List the possible completions of the text before point, +treating it as a shell variable. +
complete-hostname (M-@) + +
+Attempt completion on the text before point, treating +it as a hostname. +
possible-hostname-completions (C-x @) + +
+List the possible completions of the text before point, +treating it as a hostname. +
complete-command (M-!) + +
+Attempt completion on the text before point, treating +it as a command name. Command completion attempts to +match the text against aliases, reserved words, shell +functions, shell builtins, and finally executable filenames, +in that order. +
possible-command-completions (C-x !) + +
+List the possible completions of the text before point, +treating it as a command name. +
dynamic-complete-history (M-TAB) + +
+Attempt completion on the text before point, comparing +the text against lines from the history list for possible +completion matches. +
complete-into-braces (M-{) + +
+Perform filename completion and insert the list of possible completions +enclosed within braces so the list is available to the shell (see +Brace Expansion + +above). + +
+  +

Keyboard Macros

+ +

+ + +

+
start-kbd-macro (C-x () + +
+Begin saving the characters typed into the current keyboard macro. +
end-kbd-macro (C-x )) + +
+Stop saving the characters typed into the current keyboard macro +and store the definition. +
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. + +
+  +

Miscellaneous

+ +

+ + +

+
re-read-init-file (C-x C-r) + +
+Read in the contents of the inputrc file, and incorporate +any bindings or variable assignments found there. +
abort (C-g) + +
+Abort the current editing command and +ring the terminal's bell (subject to the setting of +bell-style). + +
do-uppercase-version (M-a, M-b, M-x, ...) + +
+If the metafied character x is lowercase, run the command +that is bound to the corresponding uppercase character. +
prefix-meta (ESC) + +
+Metafy the next character typed. +ESC + + +f + +is equivalent to +Meta-f. + +
undo (C-_, C-x C-u) + +
+Incremental undo, separately remembered for each line. +
revert-line (M-r) + +
+Undo all changes made to this line. This is like executing the +undo + +command enough times to return the line to its initial state. +
tilde-expand (M-&) + +
+Perform tilde expansion on the current word. +
set-mark (C-@, M-<space>) + +
+Set the mark to the point. If a +numeric argument is supplied, the mark is set to that position. +
exchange-point-and-mark (C-x C-x) + +
+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. +
character-search (C-]) + +
+A character is read and point is moved to the next occurrence of that +character. A negative count searches for previous occurrences. +
character-search-backward (M-C-]) + +
+A character is read and point is moved to the previous occurrence of that +character. A negative count searches for subsequent occurrences. +
insert-comment (M-#) + +
+Without a numeric argument, the value of the readline +comment-begin + +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 comment-begin, the value is inserted, otherwise +the characters in comment-begin are deleted from the beginning of +the line. +In either case, the line is accepted as if a newline had been typed. +The default value of +comment-begin 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. +
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. +
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. +If a numeric argument is supplied, an asterisk is appended before +pathname expansion. +
glob-list-expansions (C-x g) + +
+The list of expansions that would have been generated by +glob-expand-word + +is displayed, and the line is redrawn. +If a numeric argument is supplied, an asterisk is appended before +pathname expansion. +
dump-functions + +
+Print all of the functions and their key bindings 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 +of an inputrc file. +
dump-variables + +
+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 +of an inputrc file. +
dump-macros + +
+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 inputrc file. +
display-shell-version (C-x C-v) + +
+Display version information about the current instance of +bash. + + +
+  +

Programmable Completion

+ +

+ +When word completion is attempted for an argument to a command for +which a completion specification (a compspec) has been defined +using the complete builtin (see +SHELL BUILTIN COMMANDS + + +below), the programmable completion facilities are invoked. +

+ +First, the command name is identified. +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. +

+ +Once a compspec has been found, it is used to generate the list of +matching words. +If a compspec is not found, the default bash completion as +described above under Completing 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 +-f + +or +-d + +option is used for filename or directory name completion, the shell +variable +FIGNORE + + +is used to filter the matches. +

+ +Any completions specified by a filename expansion pattern to the +-G option are generated next. +The words generated by the pattern need not match the word +being completed. +The +GLOBIGNORE + + +shell variable is not used to filter the matches, but the +FIGNORE + + +variable is used. +

+ +Next, the string specified as the argument to the -W option +is considered. +The string is first split using the characters in the +IFS + + +special 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 +EXPANSION. + + +The results are split using the rules described above under +Word Splitting. +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 -F and -C options is invoked. +When the command or function is invoked, the +COMP_LINE + + +and +COMP_POINT + + +variables are assigned values as described above under +Shell Variables. +If a shell function is being invoked, the +COMP_WORDS + + +and +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. +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 -F is invoked first. +The function may use any of the shell facilities, including the +compgen builtin described below, to generate the matches. +It must put the possible completions in the +COMPREPLY + + +array variable. +

+ +Next, any command specified with the -C option is invoked +in an environment 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 +specified with the -X option is applied to the list. +The filter is a pattern 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 matching the pattern will be removed. +

+ +Finally, any prefix and suffix specified with the -P and -S +options are 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 +-o dirnames option was supplied to complete when the +compspec was defined, directory name completion is attempted. +

+ +If the -o plusdirs option was supplied to complete 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 default bash completions are not attempted, and the readline +default of filename completion is disabled. +If the -o bashdefault option was supplied to complete when +the compspec was defined, the bash default completions are attempted +if the compspec generates no matches. +If the -o default option was supplied to complete when the +compspec was defined, readline's default completion will be performed +if the compspec (and, if attempted, the default bash 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 mark-directories readline variable, regardless +of the setting of the mark-symlinked-directories readline variable. +  +

HISTORY

+ +When the +-o history + +option to the +set + +builtin is enabled, the shell provides access to the +command history, +the list of commands previously typed. +The value of the HISTSIZE variable is used as the +number of commands to save in a history list. +The text of the last +HISTSIZE + + +commands (default 500) is saved. The shell +stores each command in the history list prior to parameter and +variable expansion (see +EXPANSION + + +above) but after history expansion is performed, subject to the +values of the shell variables +HISTIGNORE + + +and +HISTCONTROL. + + +

+ +On startup, the history is initialized from the file named by +the variable +HISTFILE + + +(default ~/.bash_history). +The file named by the value of +HISTFILE + + +is truncated, if necessary, to contain no more than +the number of lines specified by the value of +HISTFILESIZE. + + +When an interactive shell exits, the last +$HISTSIZE + + +lines are copied from the history list to +$HISTFILE. + + +If the +histappend + +shell option is enabled +(see the description of +shopt + +under +SHELL BUILTIN COMMANDS + + +below), the lines are appended to the history file, +otherwise the history file is overwritten. +If +HISTFILE + + +is unset, or if the history file is unwritable, the history is +not saved. After saving the history, the history file is truncated +to contain no more than +HISTFILESIZE + + +lines. If +HISTFILESIZE + + +is not set, no truncation is performed. +

+ +The builtin command +fc + +(see +SHELL BUILTIN COMMANDS + + +below) may be used to list or edit and re-execute a portion of +the history list. +The +history + +builtin may be used to display or modify the history list and +manipulate the history file. +When using command-line editing, search commands +are available in each editing mode that provide access to the +history list. +

+ +The shell allows control over which commands are saved on the history +list. The +HISTCONTROL + + +and +HISTIGNORE + + +variables may be set to cause the shell to save only a subset of the +commands entered. +The +cmdhist + +shell option, if enabled, causes the shell to attempt to save each +line of a multi-line command in the same history entry, adding +semicolons where necessary to preserve syntactic correctness. +The +lithist + +shell option causes the shell to save the command with embedded newlines +instead of semicolons. See the description of the +shopt + +builtin below under +SHELL BUILTIN COMMANDS + + +for information on setting and unsetting shell options. +  +

HISTORY EXPANSION

+ +

+ +The shell supports a history expansion feature that +is similar to the history expansion in +csh. + +This section describes what syntax features are available. This +feature is enabled by default for interactive shells, and can be +disabled using the ++H + +option to the +set + +builtin command (see +SHELL BUILTIN COMMANDS + + +below). Non-interactive shells do not perform history expansion +by default. +

+ +History expansions introduce words from the history list into +the input stream, making it easy to repeat commands, insert the +arguments to a previous command into the current input line, or +fix errors in previous commands quickly. +

+ +History expansion is performed immediately after a complete line +is read, before the shell breaks it into words. +It takes place in two parts. +The first is to determine which line from the history list +to use during substitution. +The second is to select portions of that line for inclusion into +the current one. +The line selected from the history is the event, +and the portions of that line that are acted upon are words. +Various modifiers are available to manipulate the selected words. +The line is broken into words in the same fashion as when reading input, +so that several metacharacter-separated words surrounded by +quotes are considered one word. +History expansions are introduced by the appearance of the +history expansion character, which is ! by default. +Only backslash (\) and single quotes can quote +the history expansion character. +

+ +Several characters inhibit history expansion if found immediately +following the history expansion character, even if it is unquoted: +space, tab, newline, carriage return, and =. +If the extglob shell option is enabled, ( will also +inhibit expansion. +

+ +Several shell options settable with the +shopt + +builtin may be used to tailor the behavior of history expansion. +If the +histverify + +shell option is enabled (see the description of the +shopt + +builtin), and +readline + +is being used, history substitutions are not immediately passed to +the shell parser. +Instead, the expanded line is reloaded into the +readline + +editing buffer for further modification. +If +readline + +is being used, and the +histreedit + +shell option is enabled, a failed history substitution will be reloaded +into the +readline + +editing buffer for correction. +The +-p + +option to the +history + +builtin command may be used to see what a history expansion will +do before using it. +The +-s + +option to the +history + +builtin may be used to add commands to the end of the history list +without actually executing them, so that they are available for +subsequent recall. +

+ +The shell allows control of the various characters used by the +history expansion mechanism (see the description of +histchars + +above under +Shell Variables). + +  +

Event Designators

+ +

+ +An event designator is a reference to a command line entry in the +history list. +

+ + +

+
! + +
+Start a history substitution, except when followed by a +blank, + +newline, carriage return, = +or ( (when the extglob shell option is enabled using +the shopt builtin). +
!n + +
+Refer to command line +n. + +
!-n + +
+Refer to the current command line minus +n. + +
!! + +
+Refer to the previous command. This is a synonym for `!-1'. +
!string + +
+Refer to the most recent command starting with +string. + +
!?string[?] + +
+Refer to the most recent command containing +string. + +The trailing ? may be omitted if +string + +is followed immediately by a newline. +
^string1^string2^ + +
+Quick substitution. Repeat the last command, replacing +string1 + +with +string2. + +Equivalent to +``!!:s/string1/string2/'' +(see Modifiers below). +
!# + +
+The entire command line typed so far. + +
+  +

Word Designators

+ +

+ +Word designators are used to select desired words from the event. +A +: + +separates the event specification from the word designator. +It may be omitted if the word designator begins with a +^, + +$, + +*, + +-, + +or +%. + +Words are numbered from the beginning of the line, +with the first word being denoted by 0 (zero). +Words are inserted into the current line separated by single spaces. +

+ + +

+
0 (zero) + +
+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 word matched by the most recent `?string?' search. +
x-y + +
+A range of words; `-y' abbreviates `0-y'. +
* + +
+All of the words but the zeroth. This is a synonym +for `1-$'. It is not an error to use +* + +if there is just one +word in the event; the empty string is returned in that case. +
x* + +
+Abbreviates x-$. +
x- + +
+Abbreviates x-$ like x*, but omits the last word. + +
+

+ +If a word designator is supplied without an event specification, the +previous command is used as the event. +  +

Modifiers

+ +

+ +After the optional word designator, there may appear a sequence of +one or more of the following modifiers, each preceded by a `:'. +

+ + +

+ +

+
h + +
+Remove a trailing file name component, leaving only the head. +
t + +
+Remove all leading file name components, leaving the tail. +
r + +
+Remove a trailing suffix of the form .xxx, leaving the +basename. +
e + +
+Remove all but the trailing suffix. +
p + +
+Print the new command but do not execute it. +
q + +
+Quote the substituted words, escaping further substitutions. +
x + +
+Quote the substituted words as with +q, + +but break into words at +blanks + +and newlines. +
s/old/new/ + +
+Substitute +new + +for the first occurrence of +old + +in the event line. Any delimiter can be used in place of /. The +final delimiter is optional if it is the last character of the +event line. The delimiter may be quoted in +old + +and +new + +with a single backslash. If & appears in +new, + +it is replaced by +old. + +A single backslash will quote the &. If +old + +is null, it is set to the last +old + +substituted, or, if no previous history substitutions took place, +the last +string + +in a +!?string[?] + +search. +
& + +
+Repeat the previous substitution. +
g + +
+Cause changes to be applied over the entire event line. This is +used in conjunction with `:s' (e.g., `:gs/old/new/') +or `:&'. If used with +`:s', any delimiter can be used +in place of /, and the final delimiter is optional +if it is the last character of the event line. +An a may be used as a synonym for g. +
G + +
+Apply the following `s' modifier once to each word in the event line. + +
+  +

SHELL BUILTIN COMMANDS

+ + + +

+ +Unless otherwise noted, each builtin command documented in this +section as accepting options preceded by +- + +accepts +-- + +to signify the end of the options. +For example, the :, true, false, and test builtins +do not accept options. +

+ +

+
: [arguments]
+ +No effect; the command does nothing beyond expanding +arguments + +and performing any specified +redirections. A zero exit code is returned. +
. filename [arguments]
+ +
source filename [arguments]
+ +Read and execute commands from +filename + +in the current +shell environment and return the exit status of the last command +executed from +filename. + +If +filename + +does not contain a slash, file names in +PATH + + +are used to find the directory containing +filename. + +The file searched for in +PATH + + +need not be executable. +When bash is not in posix mode, the current directory is +searched if no file is found in +PATH. + + +If the +sourcepath + +option to the +shopt + +builtin command is turned off, the +PATH + + +is not searched. +If any arguments are supplied, they become the positional +parameters when filename is executed. Otherwise the positional +parameters are unchanged. +The return status is the status of the last command exited within +the script (0 if no commands are executed), and false if +filename + +is not found or cannot be read. +
alias [-p] [name[=value] ...]
+Alias with no arguments or with the +-p + +option prints the list of aliases in the form +alias name=value on standard output. +When arguments are supplied, an alias is defined for +each name whose value is given. +A trailing space in value causes the next word to be +checked for alias substitution when the alias is expanded. +For each name in the argument list for which no value +is supplied, the name and value of the alias is printed. +Alias returns true unless a name is given for which +no alias has been defined. +
bg [jobspec ...]
+Resume each suspended job jobspec in the background, as if it +had been started with +&. + +If jobspec is not present, the shell's notion of the +current job is used. +bg + +jobspec + +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] [-q function] [-u function] [-r keyseq]
+
bind [-m keymap] -f filename
+
bind [-m keymap] -x keyseq:shell-command
+
bind [-m keymap] keyseq:function-name
+
bind readline-command
+ +Display current +readline + +key and function bindings, bind a key sequence to a +readline + +function or macro, or set a +readline + +variable. +Each non-option argument is a command as it would appear in +.inputrc, + +but each binding or command must be passed as a separate argument; +e.g., '"\C-x\C-r": re-read-init-file'. +Options, if supplied, have the following meanings: +
+ +
+
-m keymap + +
+Use +keymap + +as the keymap to be affected by the subsequent bindings. +Acceptable +keymap + +names are +emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, +vi-move, vi-command, and +vi-insert. + +vi is equivalent to vi-command; emacs is +equivalent to emacs-standard. +
-l + +
+List the names of all readline functions. +
-p + +
+Display readline function names and bindings in such a way +that they can be re-read. +
-P + +
+List current readline function names and bindings. +
-v + +
+Display readline variable names and values in such a way that they +can be re-read. +
-V + +
+List current readline variable names and values. +
-s + +
+Display readline key sequences bound to macros and the strings +they output in such a way that they can be re-read. +
-S + +
+Display readline key sequences bound to macros and the strings +they output. +
-f filename + +
+Read key bindings from filename. +
-q function + +
+Query about which keys invoke the named function. +
-u function + +
+Unbind all keys bound to the named function. +
-r keyseq + +
+Remove any current binding for keyseq. +
-x keyseq:shell-command + +
+Cause shell-command to be executed whenever keyseq is +entered. + +
+

+ +The return value is 0 unless an unrecognized option is given or an +error occurred. +

+ +
break [n]
+Exit from within a +for, + +while, + +until, + +or +select + +loop. If n is specified, break n levels. +n + +must be >= 1. If +n + +is greater than the number of enclosing loops, all enclosing loops +are exited. The return value is 0 unless the shell is not executing +a loop when +break + +is executed. +
builtin shell-builtin [arguments]
+Execute the specified shell builtin, passing it +arguments, + +and return its exit status. +This is useful when defining a +function whose name is the same as a shell builtin, +retaining the functionality of the builtin within the function. +The cd builtin is commonly redefined this way. +The return status is false if +shell-builtin + +is not a shell builtin command. +
cd [-L|-P] [dir]
+Change the current directory to dir. The variable +HOME + + +is the +default +dir. + +The variable +CDPATH + + +defines the search path for the directory containing +dir. + +Alternative directory names in +CDPATH + + +are separated by a colon (:). A null directory name in +CDPATH + + +is the same as the current directory, i.e., ``.''. If +dir + +begins with a slash (/), +then +CDPATH + + +is not used. The +-P + +option says to use the physical directory structure instead of +following symbolic links (see also the +-P + +option to the +set + +builtin command); the +-L + +option forces symbolic links to be followed. An argument of +- + +is equivalent to +$OLDPWD. + + +If a non-empty directory name from CDPATH 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. +
caller [expr]
+Returns the context of any active subroutine call (a shell function or +a script executed with the . or source builtins. +Without expr, caller displays the line number and source +filename of the current subroutine call. +If a non-negative integer is supplied as expr, caller +displays the line number, subroutine name, and source file corresponding +to that position in the current execution call stack. This extra +information may be used, for example, to print a stack trace. The +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. +
command [-pVv] command [arg ...]
+Run +command + +with +args + +suppressing the normal shell function lookup. Only builtin +commands or commands found in the +PATH + + +are executed. If the +-p + +option is given, the search for +command + +is performed using a default value for +PATH + +that is guaranteed to find all of the standard utilities. +If either the +-V + +or +-v + +option is supplied, a description of +command + +is printed. The +-v + +option causes a single word indicating the command or file name +used to invoke +command + +to be displayed; the +-V + +option produces a more verbose description. +If the +-V + +or +-v + +option is supplied, the exit status is 0 if +command + +was found, and 1 if not. If neither option is supplied and +an error occurred or +command + +cannot be found, the exit status is 127. Otherwise, the exit status of the +command + +builtin is the exit status of +command. + +
compgen [option] [word]
+Generate possible completion matches for word according to +the options, which may be any option accepted by the +complete + +builtin with the exception of -p and -r, and write +the matches to the standard output. +When using the -F or -C 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 programmable +completion code had generated them directly from a completion specification +with the same flags. +If word is specified, only those completions matching word +will be displayed. +

+The return value is true unless an invalid option is supplied, or no +matches were generated. +

complete [-abcdefgjksuv] [-o comp-option] [-A action] [-G globpat] [-W wordlist] [-P prefix] [-S suffix]
+
+ +[-X filterpat] [-F function] [-C command] name [name ...] + +
complete -pr [name ...]
+ +Specify how arguments to each name should be completed. +If the -p 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 -r option removes a completion specification for +each name, or, if no names are supplied, all +completion specifications. +

+The process of applying these completion specifications when word completion +is attempted is described above under Programmable Completion. +

+Other options, if specified, have the following meanings. +The arguments to the -G, -W, and -X options +(and, if necessary, the -P and -S options) +should be quoted to protect them from expansion before the +complete + +builtin is invoked. +

+ +
+
-o comp-option
+The comp-option controls several aspects of the compspec's behavior +beyond the simple generation of completions. +comp-option may be one of: +
+
+
bashdefault + +
+Perform the rest of the default bash completions if the compspec +generates no matches. +
default + +
+Use readline's default filename completion if the compspec generates +no matches. +
dirnames + +
+Perform directory name completion if the compspec generates no matches. +
filenames + +
+Tell readline that the compspec generates filenames, so it can perform any +filename-specific processing (like adding a slash to directory names or +suppressing trailing spaces). Intended to be used with shell functions. +
nospace + +
+Tell readline not to append a space (the default) to words completed at +the end of the line. +
plusdirs + +
+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. +
+ +
-A action
+The action may be one of the following to generate a list of possible +completions: +
+
+
alias + +
+Alias names. May also be specified as -a. +
arrayvar + +
+Array variable names. +
binding + +
+Readline key binding names. +
builtin + +
+Names of shell builtin commands. May also be specified as -b. +
command + +
+Command names. May also be specified as -c. +
directory + +
+Directory names. May also be specified as -d. +
disabled + +
+Names of disabled shell builtins. +
enabled + +
+Names of enabled shell builtins. +
export + +
+Names of exported shell variables. May also be specified as -e. +
file + +
+File names. May also be specified as -f. +
function + +
+Names of shell functions. +
group + +
+Group names. May also be specified as -g. +
helptopic + +
+Help topics as accepted by the help builtin. +
hostname + +
+Hostnames, as taken from the file specified by the +HOSTFILE + + +shell variable. +
job + +
+Job names, if job control is active. May also be specified as -j. +
keyword + +
+Shell reserved words. May also be specified as -k. +
running + +
+Names of running jobs, if job control is active. +
service + +
+Service names. May also be specified as -s. +
setopt + +
+Valid arguments for the -o option to the set builtin. +
shopt + +
+Shell option names as accepted by the shopt builtin. +
signal + +
+Signal names. +
stopped + +
+Names of stopped jobs, if job control is active. +
user + +
+User names. May also be specified as -u. +
variable + +
+Names of all shell variables. May also be specified as -v. +
+ +
-G globpat
+The filename expansion pattern globpat is expanded to generate +the possible completions. +
-W wordlist
+The wordlist is split using the characters in the +IFS + + +special variable as delimiters, and each resultant word is expanded. +The possible completions are the members of the resultant list which +match the word being completed. +
-C command
+command is executed in a subshell environment, and its output is +used as the possible completions. +
-F function
+The shell function function is executed in the current shell +environment. +When it finishes, the possible completions are retrieved from the value +of the +COMPREPLY + + +array variable. +
-X filterpat
+filterpat is a pattern as used for filename expansion. +It is applied to the list of possible completions generated by the +preceding options and arguments, and each completion matching +filterpat is removed from the list. +A leading ! in filterpat negates the pattern; in this +case, any completion not matching filterpat is removed. +
-P prefix
+prefix is added at the beginning of each possible completion +after all other options have been applied. +
-S suffix
+suffix is appended to each possible completion +after all other options have been applied. + +
+

+ +The return value is true unless an invalid option is supplied, an option +other than -p or -r is supplied without a name +argument, an attempt is made to remove a completion specification for +a name for which no specification exists, or +an error occurs adding a completion specification. +

+ +
continue [n]
+Resume the next iteration of the enclosing +for, + +while, + +until, + +or +select + +loop. +If +n + +is specified, resume at the nth enclosing loop. +n + +must be >= 1. If +n + +is greater than the number of enclosing loops, the last enclosing loop +(the ``top-level'' loop) is resumed. The return value is 0 unless the +shell is not executing a loop when +continue + +is executed. +
declare [-afFirtx] [-p] [name[=value] ...]
+ +
typeset [-afFirtx] [-p] [name[=value] ...]
+ +Declare variables and/or give them attributes. +If no names are given then display the values of variables. +The +-p + +option will display the attributes and values of each +name. + +When +-p + +is used, additional options are ignored. +The +-F + +option inhibits the display of function definitions; only the +function name and attributes are printed. +If the extdebug shell option is enabled using shopt, +the source file name and line number where the function is defined +are displayed as well. The +-F + +option implies +-f. + +The following options can +be used to restrict output to variables with the specified attribute or +to give variables attributes: +
+ +
+
-a + +
+Each name is an array variable (see +Arrays + +above). +
-f + +
+Use function names only. +
-i + +
+The variable is treated as an integer; arithmetic evaluation (see +ARITHMETIC EVALUATION ) + + +is performed when the variable is assigned a value. +
-r + +
+Make names readonly. These names cannot then be assigned values +by subsequent assignment statements or unset. +
-t + +
+Give each name the trace attribute. +Traced functions inherit the DEBUG and RETURN traps from +the calling shell. +The trace attribute has no special meaning for variables. +
-x + +
+Mark names for export to subsequent commands via the environment. + +
+

+ +Using `+' instead of `-' +turns off the attribute instead, with the exception that +a +may not be used to destroy an array variable. When used in a function, +makes each +name local, as with the +local + +command. +If a variable name is followed by =value, the value of +the variable is set to value. +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 +Arrays + +above), one of the names 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 -f. +

+ +
dirs [-clpv] [+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 +pushd + +command; the +popd + +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 + +
+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. +
-p + +
+Print the directory stack with one entry per line. +
-v + +
+Print the directory stack with one entry per line, +prefixing each entry with its index in the stack. + +
+

+ +The return value is 0 unless an +invalid option is supplied or n indexes beyond the end +of the directory stack. +

+ +
disown [-ar] [-h] [jobspec ...]
+Without options, each +jobspec + +is removed from the table of active jobs. +If the -h option is given, each +jobspec + +is not removed from the table, but is marked so that +SIGHUP + + +is not sent to the job if the shell receives a +SIGHUP. + + +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 + +option means to remove or mark all jobs; the +-r + +option without a +jobspec + +argument restricts operation to running jobs. +The return value is 0 unless a +jobspec + +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. +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 +-E + +option disables the interpretation of these escape characters, +even on systems where they are interpreted by default. +The xpg_echo shell option may be used to +dynamically determine whether or not echo expands these +escape characters by default. +echo + +does not interpret -- to mean the end of options. +echo + +interprets the following escape sequences: +
+ +
+
\a + +
+alert (bell) +
\b + +
+backspace +
\c + +
+suppress trailing newline +
\e + +
+an escape character +
\f + +
+form feed +
\n + +
+new line +
\r + +
+carriage return +
\t + +
+horizontal tab +
\v + +
+vertical tab +
\\ + +
+backslash +
\0nnn + +
+the eight-bit character whose value is the octal value nnn +(zero to three octal digits) +
\nnn + +
+the eight-bit character whose value is the octal value nnn +(one to three octal digits) +
\xHH + +
+the eight-bit character whose value is the hexadecimal value HH +(one or two hex digits) + +
+ +
enable [-adnps] [-f filename] [name ...]
+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 -n is used, each name +is disabled; otherwise, +names are enabled. For example, to use the +test + +binary found via the +PATH + + +instead of the shell builtin version, run +enable -n test. + +The +-f + +option means to load the new builtin command +name + +from shared object +filename, + +on systems that support dynamic loading. The +-d + +option will delete a builtin previously loaded with +-f. + +If no name arguments are given, or if the +-p + +option is supplied, a list of shell builtins is printed. +With no other option arguments, the list consists of all enabled +shell builtins. +If -n is supplied, only disabled builtins are printed. +If -a is supplied, the list printed includes all builtins, with an +indication of whether or not each is enabled. +If -s is supplied, the output is restricted to the POSIX +special builtins. +The return value is 0 unless a +name + +is not a shell builtin or there is an error loading a new builtin +from a shared object. +
eval [arg ...]
+The args are read and concatenated together into a single +command. This command is then read and executed by the shell, and +its exit status is returned as the value of +eval. + +If there are no +args, + +or only null arguments, +eval + +returns 0. +
exec [-cl] [-a name] [command [arguments]]
+If +command + +is specified, it replaces the shell. +No new process is created. The +arguments + +become the arguments to command. +If the +-l + +option is supplied, +the shell places a dash at the beginning of the zeroth arg passed to +command. + +This is what +login(1) + +does. The +-c + +option causes +command + +to be executed with an empty environment. If +-a + +is supplied, the shell passes +name + +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 +execfail + +is enabled, in which case it returns failure. +An interactive shell returns failure if the file cannot be executed. +If +command + +is not specified, any redirections take effect in the current shell, +and the return status is 0. If there is a redirection error, the +return status is 1. +
exit [n]
+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 +EXIT + + +is executed before the shell terminates. +
export [-fn] [name[=word]] ...
+ +
export -p + +
+ +The supplied +names + +are marked for automatic export to the environment of +subsequently executed commands. If the +-f + +option is given, +the +names + +refer to functions. +If no +names + +are given, or if the +-p + +option is supplied, a list +of all names that are exported in this shell is printed. +The +-n + +option causes the export property to be removed from each +name. +If a variable name is followed by =word, the value of +the variable is set to word. +export + +returns an exit status of 0 unless an invalid option is +encountered, +one of the names is not a valid shell variable name, or +-f + +is supplied with a +name + +that is not a function. +
fc [-e ename] [-nlr] [first] [last]
+ +
fc -s [pat=rep] [cmd]
+ +Fix Command. In the first form, a range of commands from +first + +to +last + +is selected from the history list. +First + +and +last + +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 +last + +is not specified it is set to +the current command for listing (so that + +fc -l -10 +prints the last 10 commands) and to +first + +otherwise. +If +first + +is not specified it is set to the previous +command for editing and -16 for listing. +

+The +-n + +option suppresses +the command numbers when listing. The +-r + +option reverses the order of +the commands. If the +-l + +option is given, +the commands are listed on +standard output. Otherwise, the editor given by +ename + +is invoked +on a file containing those commands. If +ename + +is not given, the +value of the +FCEDIT + + +variable is used, and +the value of +EDITOR + + +if +FCEDIT + + +is not set. If neither variable is set, + +vi + +is used. When editing is complete, the edited commands are +echoed and executed. +

+In the second form, command is re-executed after each instance +of pat is replaced by rep. +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 +first + +or +last + +specify history lines out of range. +If the +-e + +option is supplied, the return value is the value of the last +command executed or failure if an error occurs with the temporary +file of commands. If the second form is used, the return status +is that of the command re-executed, unless +cmd + +does not specify a valid history line, in which case +fc + +returns failure. +

fg [jobspec]
+Resume +jobspec + +in the foreground, and make it the current job. +If +jobspec + +is not present, the shell's notion of the current job is used. +The return value is that of the command placed into the foreground, +or failure if run when job control is disabled or, when run with +job control enabled, if +jobspec + +does not specify a valid job or +jobspec + +specifies a job that was started without job control. +
getopts optstring name [args]
+getopts + +is used by shell procedures to parse positional parameters. +optstring + +contains the option characters to be recognized; if a character +is followed by a colon, the option is expected to have an +argument, which should be separated from it by white space. +The colon and question mark characters may not be used as +option characters. +Each time it is invoked, +getopts + +places the next option in the shell variable +name, + +initializing +name + +if it does not exist, +and the index of the next argument to be processed into the +variable +OPTIND. + + +OPTIND + + +is initialized to 1 each time the shell or a shell script +is invoked. When an option requires an argument, +getopts + +places that argument into the variable +OPTARG. + + +The shell does not reset +OPTIND + + +automatically; it must be manually reset between multiple +calls to +getopts + +within the same shell invocation if a new set of parameters +is to be used. +

+When the end of options is encountered, getopts exits with a +return value greater than zero. +OPTIND is set to the index of the first non-option argument, +and name is set to ?. +

+getopts + +normally parses the positional parameters, but if more arguments are +given in +args, + +getopts + +parses those instead. +

+getopts + +can report errors in two ways. If the first character of +optstring + +is a colon, +silent + +error reporting is used. In normal operation diagnostic messages +are printed when invalid options or missing option arguments are +encountered. +If the variable +OPTERR + + +is set to 0, no error messages will be displayed, even if the first +character of +optstring + +is not a colon. +

+If an invalid option is seen, +getopts + +places ? into +name + +and, if not silent, +prints an error message and unsets +OPTARG. + + +If +getopts + +is silent, +the option character found is placed in +OPTARG + + +and no diagnostic message is printed. +

+If a required argument is not found, and +getopts + +is not silent, +a question mark (?) is placed in +name, + +OPTARG + + +is unset, and a diagnostic message is printed. +If +getopts + +is silent, then a colon (:) is placed in +name + +and +OPTARG + + +is set to the option character found. +

+getopts + +returns true if an option, specified or unspecified, is found. +It returns false if the end of options is encountered or an +error occurs. +

hash [-lr] [-p filename] [-dt] [name]
+For each +name, + +the full file name of the command is determined by searching +the directories in +$PATH + +and remembered. +If the +-p + +option is supplied, no path search is performed, and +filename + +is used as the full file name of the command. +The +-r + +option causes the shell to forget all +remembered locations. +The +-d + +option causes the shell to forget the remembered location of each name. +If the +-t + +option is supplied, the full pathname to which each name corresponds +is printed. If multiple name arguments are supplied with -t, +the name is printed before the hashed full pathname. +The +-l + +option causes output to be displayed in a format that may be reused as input. +If no arguments are given, or if only -l is supplied, +information about remembered commands is printed. +The return status is true unless a +name + +is not found or an invalid option is supplied. +
help [-s] [pattern]
+Display helpful information about builtin commands. If +pattern + +is specified, +help + +gives detailed help on all commands matching +pattern; + +otherwise help for all the builtins and shell control structures +is printed. +The -s option restricts the information displayed to a short +usage synopsis. +The return status is 0 unless no command matches +pattern. + +
history [n]
+ +
history -c
+
history -d offset
+
history -anrw [filename]
+
history -p arg [arg ...]
+
history -s arg [arg ...]
+ +With no options, display the command +history list with line numbers. Lines listed +with a +* + +have been modified. An argument of +n + +lists only the last +n + +lines. +If the shell variable HISTTIMEFORMAT is set and not null, +it is used as a format string for strftime(3) to display +the time stamp associated with each displayed history entry. +No intervening blank is printed between the formatted time stamp +and the history line. +If filename is supplied, it is used as the +name of the history file; if not, the value of +HISTFILE + + +is used. Options, if supplied, have the following meanings: +
+ +
+
-c + +
+Clear the history list by deleting all the entries. +
-d offset
+Delete the history entry at position offset. +
-a + +
+Append the ``new'' history lines (history lines entered since the +beginning of the current bash session) to the history file. +
-n + +
+Read the history lines not already read from the history +file into the current history list. These are lines +appended to the history file since the beginning of the +current bash session. +
-r + +
+Read the contents of the history file +and use them as the current history. +
-w + +
+Write the current history to the history file, overwriting the +history file's contents. +
-p + +
+Perform history substitution on the following args and display +the result on the standard output. +Does not store the results in the history list. +Each arg must be quoted to disable normal history expansion. +
-s + +
+Store the +args + +in the history list as a single entry. The last command in the +history list is removed before the +args + +are added. + +
+

+ +If the HISTTIMEFORMAT is set, the time stamp information +associated with each history entry is written to the history file. +The return value is 0 unless an invalid option is encountered, an +error occurs while reading or writing the history file, an invalid +offset is supplied as an argument to -d, or the +history expansion supplied as an argument to -p fails. +

+ +
jobs [-lnprs] [ jobspec ... ]
+ +
jobs -x command [ args ... ]
+ +The first form lists the active jobs. The options have the following +meanings: +
+ +
+
-l + +
+List process IDs +in addition to the normal information. +
-p + +
+List only the process ID of the job's process group +leader. +
-n + +
+Display information only about jobs that have changed status since +the user was last notified of their status. +
-r + +
+Restrict output to running jobs. +
-s + +
+Restrict output to stopped jobs. + +
+

+ +If +jobspec + +is given, output is restricted to information about that job. +The return status is 0 unless an invalid option is encountered +or an invalid +jobspec + +is supplied. +

+ +If the +-x + +option is supplied, +jobs + +replaces any +jobspec + +found in +command + +or +args + +with the corresponding process group ID, and executes +command + +passing it +args, + +returning its exit status. +

+ +
kill [-s sigspec | -n signum | -sigspec] [pid | jobspec] ...
+ +
kill -l [sigspec | exit_status]
+ +Send the signal named by +sigspec + +or +signum + +to the processes named by +pid + +or +jobspec. + +sigspec + +is either a case-insensitive signal name such as +SIGKILL + + +(with or without the +SIG + + +prefix) or a signal number; +signum + +is a signal number. +If +sigspec + +is not present, then +SIGTERM + + +is assumed. +An argument of +-l + +lists the signal names. +If any arguments are supplied when +-l + +is given, the names of the signals corresponding to the arguments are +listed, and the return status is 0. +The exit_status argument to +-l + +is a number specifying either a signal number or the exit status of +a process terminated by a signal. +kill + +returns true if at least one signal was successfully sent, or false +if an error occurs or an invalid option is encountered. +
let arg [arg ...]
+Each +arg + +is an arithmetic expression to be evaluated (see +ARITHMETIC EVALUATION). + + +If the last +arg + +evaluates to 0, +let + +returns 1; 0 is returned otherwise. +
local [option] [name[=value] ...]
+For each argument, a local variable named +name + +is created, and assigned +value. + +The option can be any of the options accepted by declare. +When +local + +is used within a function, it causes the variable +name + +to have a visible scope restricted to that function and its children. +With no operands, +local + +writes a list of local variables to the standard output. It is +an error to use +local + +when not within a function. The return status is 0 unless +local + +is used outside a function, an invalid +name + +is supplied, or +name is a readonly variable. +
logout + +
+Exit a login shell. +
popd [-n] [+n] [-n]
+Removes entries from the directory stack. With no arguments, +removes the top directory from the stack, and performs a +cd + +to the new top directory. +Arguments, if supplied, have the following meanings: +
+ +
+
+n
+Removes the nth entry counting from the left of the list +shown by +dirs, + +starting with zero. For example: + +popd +0 +removes the first directory, + +popd +1 +the second. +
-n
+Removes the nth entry counting from the right of the list +shown by +dirs, + +starting with zero. For example: + +popd -0 +removes the last directory, + +popd -1 +the next to last. +
-n + +
+Suppresses the normal change of directory when removing directories +from the stack, so that only the stack is manipulated. + +
+

+ +If the +popd + +command is successful, a +dirs + +is performed as well, and the return status is 0. +popd + +returns false if an invalid option is encountered, the directory stack +is empty, a non-existent directory stack entry is specified, or the +directory change fails. +

+ +
printf [-v var] format [arguments]
+Write the formatted arguments to the standard output under the +control of the format. +The format is a character string which contains three types of objects: +plain characters, which are simply copied to standard output, character +escape 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 printf(1) formats, %b causes +printf to expand backslash escape sequences in the corresponding +argument (except that \c terminates output, backslashes in +\aq, \", and \? are not removed, and octal escapes +beginning with \0 may contain up to four digits), +and %q causes printf to output the corresponding +argument in a format that can be reused as shell input. +

+The -v option causes the output to be assigned to the variable +var rather than being printed to the standard output. +

+The format is reused as necessary to consume all of the arguments. +If the format requires more arguments than are supplied, 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. +

pushd [-n] [dir]
+ +
pushd [-n] [+n] [-n]
+ +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, if supplied, have the following meanings: +
+ +
+
+n
+Rotates the stack so that the nth directory +(counting from the left of the list shown by +dirs, + +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 +dirs, + +starting with zero) is at the top. +
-n + +
+Suppresses the normal change of directory when adding directories +to the stack, so that only the stack is manipulated. +
dir + +
+Adds +dir + +to the directory stack at the top, making it the +new current working directory. + +
+

+ +If the +pushd + +command is successful, a +dirs + +is performed as well. +If the first form is used, +pushd + +returns 0 unless the cd to +dir + +fails. With the second form, +pushd + +returns 0 unless the directory stack is empty, +a non-existent directory stack element is specified, +or the directory change to the specified new current directory +fails. +

+ +
pwd [-LP]
+Print the absolute pathname of the current working directory. +The pathname printed contains no symbolic links if the +-P + +option is supplied or the +-o physical + +option to the +set + +builtin command is enabled. +If the +-L + +option is used, the pathname printed may contain symbolic links. +The return status is 0 unless an error occurs while +reading the name of the current directory or an +invalid option is supplied. +
read [-ers] [-u fd] [-t timeout] [-a aname] [-p prompt] [-n nchars] [-d delim] [name ...]
+One line is read from the standard input, or from the file descriptor +fd supplied as an argument to the -u option, and the first word +is assigned to the first +name, + +the second word to the second +name, + +and so on, with leftover words and their intervening separators assigned +to the last +name. + +If there are fewer words read from the input stream than names, +the remaining names are assigned empty values. +The characters in +IFS + + +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 following meanings: +
+ +
+
-a aname + +
+The words are assigned to sequential indices +of the array variable +aname, + +starting at 0. +aname + +is unset before any new values are assigned. +Other name arguments are ignored. +
-d delim + +
+The first character of delim is used to terminate the input line, +rather than newline. +
-e + +
+If the standard input +is coming from a terminal, +readline + +(see +READLINE + + +above) is used to obtain the line. +
-n nchars + +
+read returns after reading nchars characters rather than +waiting for a complete line of input. +
-p prompt + +
+Display prompt on standard error, without a +trailing newline, before attempting to read any input. The prompt +is displayed only if input is coming from a terminal. +
-r + +
+Backslash does not act as an escape character. +The backslash is considered to be part of the line. +In particular, a backslash-newline pair may not be used as a line +continuation. +
-s + +
+Silent mode. If input is coming from a terminal, characters are +not echoed. +
-t timeout + +
+Cause read to time out and return failure if a complete line of +input is not read within timeout seconds. +This option has no effect if read is not reading input from the +terminal or a pipe. +
-u fd + +
+Read input from file descriptor fd. + +
+

+ +If no +names + +are supplied, the line read is assigned to the variable +REPLY. + + +The return code is zero, unless end-of-file is encountered, read +times out, or an invalid file descriptor is supplied as the argument to +-u. +

+ +
readonly [-apf] [name[=word] ...]
+ +The given +names are marked readonly; the values of these +names + +may not be changed by subsequent assignment. +If the +-f + +option is supplied, the functions corresponding to the +names are so +marked. +The +-a + +option restricts the variables to arrays. +If no +name + +arguments are given, or if the +-p + +option is supplied, a list of all readonly names is printed. +The +-p + +option causes output to be displayed in a format that +may be reused as input. +If a variable name is followed by =word, the value of +the variable is set to word. +The return status is 0 unless an invalid option is encountered, +one of the +names + +is not a valid shell variable name, or +-f + +is supplied with a +name + +that is not a function. +
return [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 +. + +(source) 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 RETURN trap is executed +before execution resumes after the function or script. +
set [--abefhkmnptuvxBCHP] [-o option] [arg ...]
+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. +The output is sorted according to the current locale. +When options are specified, they set or unset shell attributes. +Any arguments remaining after the options are processed are treated +as values for the positional parameters and are assigned, in order, to +$1, + +$2, + +... + +$n. + +Options, if specified, have the following meanings: +
+ +
+
-a + +
+Automatically mark variables and functions which are modified or +created for export to the environment of subsequent commands. +
-b + +
+Report the status of terminated background jobs +immediately, rather than before the next primary prompt. This is +effective only when job control is enabled. +
-e + +
+Exit immediately if a simple command (see +SHELL GRAMMAR + + +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 + +or +until + +keyword, +part of the test in an +if + +statement, part of a +&& + +or +|| + +list, or if the command's return value is +being inverted via +!. + +A trap on ERR, if set, is executed before the shell exits. +
-f + +
+Disable pathname expansion. +
-h + +
+Remember the location of commands as they are looked up for execution. +This is enabled by default. +
-k + +
+All arguments in the form of assignment statements +are placed in the environment for a command, not just +those that precede the command name. +
-m + +
+Monitor mode. Job control is enabled. This option is on +by default for interactive shells on systems that support +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. +
-n + +
+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. +
-o option-name + +
+The option-name can be one of the following: +
+
+
allexport + +
+Same as +-a. + +
braceexpand + +
+Same as +-B. + +
emacs + +
+Use an emacs-style command line editing interface. This is enabled +by default when the shell is interactive, unless the shell is started +with the +--noediting + +option. +
errtrace + +
+Same as +-E. + +
functrace + +
+Same as +-T. + +
errexit + +
+Same as +-e. + +
hashall + +
+Same as +-h. + +
histexpand + +
+Same as +-H. + +
history + +
+Enable command history, as described above under +HISTORY. + + +This option is on by default in interactive shells. +
ignoreeof + +
+The effect is as if the shell command +IGNOREEOF=10 + +had been executed +(see +Shell Variables + +above). +
keyword + +
+Same as +-k. + +
monitor + +
+Same as +-m. + +
noclobber + +
+Same as +-C. + +
noexec + +
+Same as +-n. + +
noglob + +
+Same as +-f. + +nolog + +Currently ignored. +
notify + +
+Same as +-b. + +
nounset + +
+Same as +-u. + +
onecmd + +
+Same as +-t. + +
physical + +
+Same as +-P. + +
pipefail + +
+If set, the return value of a pipeline is the value of the last +(rightmost) command to exit with a non-zero status, or zero if all +commands in the pipeline exit successfully. +This option is disabled by default. +
posix + +
+Change the behavior of +bash + +where the default operation differs +from the POSIX standard to match the standard (posix mode). +
privileged + +
+Same as +-p. + +
verbose + +
+Same as +-v. + +
vi + +
+Use a vi-style command line editing interface. +
xtrace + +
+Same as +-x. + +

+

+

+ +If +-o + +is supplied with no option-name, the values of the current options are +printed. +If ++o + +is supplied with no option-name, a series of +set + +commands to recreate the current option settings is displayed on +the standard output. +

+ +
-p + +
+Turn on +privileged + +mode. In this mode, the +$ENV + + +and +$BASH_ENV + + +files are not processed, shell functions are not inherited from the +environment, and the +SHELLOPTS + + +variable, if it appears in the environment, is ignored. +If the shell is started with the effective user (group) id not equal to the +real user (group) id, and the -p option is not supplied, these actions +are taken and the effective user id is set to the real user id. +If the -p option is supplied at startup, the effective user id is +not reset. +Turning this option off causes the effective user +and group ids to be set to the real user and group ids. +
-t + +
+Exit after reading and executing one command. +
-u + +
+Treat unset variables as an error when performing +parameter expansion. If expansion is attempted on an +unset variable, the shell prints an error message, and, +if not interactive, exits with a non-zero status. +
-v + +
+Print shell input lines as they are read. +
-x + +
+After expanding each simple command, +for command, case command, select command, or +arithmetic for command, display the expanded value of +PS4, + + +followed by the command and its expanded arguments +or associated word list. +
-B + +
+The shell performs brace expansion (see +Brace Expansion + +above). This is on by default. +
-C + +
+If set, +bash + +does not overwrite an existing file with the +>, + +>&, + +and +<> + +redirection operators. This may be overridden when +creating output files by using the redirection operator +>| + +instead of +>. + +
-E + +
+If set, any trap on ERR is inherited by shell functions, command +substitutions, and commands executed in a subshell environment. +The ERR trap is normally not inherited in such cases. +
-H + +
+Enable +! + +style history substitution. This option is on by +default when the shell is interactive. +
-P + +
+If set, the shell does not follow symbolic links when executing +commands such as +cd + +that change the current working directory. It uses the +physical directory structure instead. By default, +bash + +follows the logical chain of directories when performing commands +which change the current directory. +
-T + +
+If set, any traps on DEBUG and RETURN are inherited by shell +functions, command substitutions, and commands executed in a +subshell environment. +The DEBUG and RETURN traps are normally not inherited +in such cases. +
-- + +
+If no arguments follow this option, then the positional parameters are +unset. Otherwise, the positional parameters are set to the +args, even if some of them begin with a +-. + +
- + +
+Signal the end of options, cause all remaining args to be +assigned to the positional parameters. The +-x + +and +-v + +options are turned off. +If there are no args, +the positional parameters remain unchanged. + +
+

+ +The options are off by default unless otherwise noted. +Using + rather than - causes these options to be turned off. +The options can also be specified as arguments to an invocation of +the shell. +The current set of options may be found in +$-. + +The return status is always true unless an invalid option is encountered. +

+ +
shift [n]
+The positional parameters from n+1 ... are renamed to +$1 + +.... + +Parameters represented by the numbers $# +down to $#-n+1 are unset. +n + +must be a non-negative number less than or equal to $#. +If +n + +is 0, no parameters are changed. +If +n + +is not given, it is assumed to be 1. +If +n + +is greater than $#, the positional parameters are not changed. +The return status is greater than zero if +n + +is greater than +$# + +or less than zero; otherwise 0. +
shopt [-pqsu] [-o] [optname ...]
+Toggle the values of variables controlling optional shell behavior. +With no options, or with the +-p + +option, a list of all settable options is displayed, with +an indication of whether or not each is set. +The -p option causes output to be displayed in a form that +may be reused as input. +Other options have the following meanings: +
+ +
+
-s + +
+Enable (set) each optname. +
-u + +
+Disable (unset) each optname. +
-q + +
+Suppresses normal output (quiet mode); the return status indicates +whether the optname is set or unset. +If multiple optname arguments are given with +-q, + +the return status is zero if all optnames are enabled; non-zero +otherwise. +
-o + +
+Restricts the values of optname to be those defined for the +-o + +option to the +set + +builtin. + +
+

+ +If either +-s + +or +-u + +is used with no optname arguments, the display is limited to +those options which are set or unset, respectively. +Unless otherwise noted, the shopt options are disabled (unset) +by default. +

+ +The return status when listing options is zero if all optnames +are enabled, non-zero otherwise. When setting or unsetting options, +the return status is zero unless an optname is not a valid shell +option. +

+ +The list of shopt options is: +

+ + + +

+
cdable_vars + +
+If set, an argument to the +cd + +builtin command that +is not a directory is assumed to be the name of a variable whose +value is the directory to change to. +
cdspell + +
+If set, minor errors in the spelling of a directory component in a +cd + +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, +and the command proceeds. +This option is only used by interactive shells. +
checkhash + +
+If set, bash checks that a command found in the hash +table exists before trying to execute it. If a hashed command no +longer exists, a normal path search is performed. +
checkwinsize + +
+If set, bash checks the window size after each command +and, if necessary, updates the values of +LINES + + +and +COLUMNS. + + +
cmdhist + +
+If set, +bash + +attempts to save all lines of a multiple-line +command in the same history entry. This allows +easy re-editing of multi-line commands. +
dotglob + +
+If set, +bash + +includes filenames beginning with a `.' in the results of pathname +expansion. +
execfail + +
+If set, a non-interactive shell will not exit if +it cannot execute the file specified as an argument to the +exec + +builtin command. An interactive shell does not exit if +exec + +fails. +
expand_aliases + +
+If set, aliases are expanded as described above under +ALIASES. + + +This option is enabled by default for interactive shells. +
extdebug + +
+If set, behavior intended for use by debuggers is enabled: +
+
+
1. + +
+The -F option to the declare builtin displays the source +file name and line number corresponding to each function name supplied +as an argument. +
2. + +
+If the command run by the DEBUG trap returns a non-zero value, the +next command is skipped and not executed. +
3. + +
+If the command run by the DEBUG trap returns a value of 2, and the +shell is executing in a subroutine (a shell function or a shell script +executed by the . or source builtins), a call to +return is simulated. +
4. + +
+BASH_ARGC and BASH_ARGV are updated as described in their +descriptions above. +
5. + +
+Function tracing is enabled: command substitution, shell functions, and +subshells invoked with ( command ) inherit the +DEBUG and RETURN traps. +
6. + +
+Error tracing is enabled: command substitution, shell functions, and +subshells invoked with ( command ) inherit the +ERROR trap. +
+ +
extglob + +
+If set, the extended pattern matching features described above under +Pathname Expansion are enabled. +
extquote + +
+If set, $aqstringaq and $"string" quoting is +performed within ${parameter} expansions +enclosed in double quotes. This option is enabled by default. +
failglob + +
+If set, patterns which fail to match filenames during pathname expansion +result in an expansion error. +
force_fignore + +
+If set, the suffixes specified by the FIGNORE shell variable +cause words to be ignored when performing word completion even if +the ignored words are the only possible completions. +See +SHELL VARIABLES +above for a description of FIGNORE. +This option is enabled by default. +
gnu_errfmt + +
+If set, shell error messages are written in the standard GNU error +message format. +
histappend + +
+If set, the history list is appended to the file named by the value +of the +HISTFILE + +variable when the shell exits, rather than overwriting the file. +
histreedit + +
+If set, and +readline + +is being used, a user is given the opportunity to re-edit a +failed history substitution. +
histverify + +
+If set, and +readline + +is being used, the results of history substitution are not immediately +passed to the shell parser. Instead, the resulting line is loaded into +the readline editing buffer, allowing further modification. +
hostcomplete + +
+If set, and +readline + +is being used, bash will attempt to perform hostname completion when a +word containing a @ is being completed (see +Completing + +under +READLINE + + +above). +This is enabled by default. +
huponexit + +
+If set, bash will send +SIGHUP + + +to all jobs when an interactive login shell exits. +
interactive_comments + +
+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 +COMMENTS + + +above). This option is enabled by default. +
lithist + +
+If set, and the +cmdhist + +option is enabled, multi-line commands are saved to the history with +embedded newlines rather than using semicolon separators where possible. +
login_shell + +
+The shell sets this option if it is started as a login shell (see +INVOCATION + + +above). +The value may not be changed. +
mailwarn + +
+If set, and a file that bash is checking for mail has been +accessed since the last time it was checked, the message ``The mail in +mailfile has been read'' is displayed. +
no_empty_cmd_completion + +
+If set, and +readline + +is being used, +bash + +will not attempt to search the PATH for possible completions when +completion is attempted on an empty line. +
nocaseglob + +
+If set, +bash + +matches filenames in a case-insensitive fashion when performing pathname +expansion (see +Pathname Expansion + +above). +
nocasematch + +
+If set, +bash + +matches patterns in a case-insensitive fashion when performing matching +while executing case or [[ conditional commands. +
nullglob + +
+If set, +bash + +allows patterns which match no +files (see +Pathname Expansion + +above) +to expand to a null string, rather than themselves. +
progcomp + +
+If set, the programmable completion facilities (see +Programmable Completion above) are enabled. +This option is enabled by default. +
promptvars + +
+If set, prompt strings undergo +parameter expansion, command substitution, arithmetic +expansion, and quote removal after being expanded as described in +PROMPTING + + +above. This option is enabled by default. +
restricted_shell + +
+The shell sets this option if it is started in restricted mode (see +RESTRICTED SHELL + + +below). +The value may not be changed. +This is not reset when the startup files are executed, allowing +the startup files to discover whether or not a shell is restricted. +
shift_verbose + +
+If set, the +shift + +builtin prints an error message when the shift count exceeds the +number of positional parameters. +
sourcepath + +
+If set, the +source (.) builtin uses the value of +PATH + + +to find the directory containing the file supplied as an argument. +This option is enabled by default. +
xpg_echo + +
+If set, the echo builtin expands backslash-escape sequences +by default. +
+ +
suspend [-f]
+Suspend the execution of this shell until it receives a +SIGCONT + + +signal. The +-f + +option says not to complain if this is +a login shell; just suspend anyway. The return status is 0 unless +the shell is a login shell and +-f + +is not supplied, or if job control is not enabled. +
test expr
+ +
[ expr ]
+Return a status of 0 or 1 depending on +the evaluation of the conditional expression +expr. + +Each operator and operand must be a separate argument. +Expressions are composed of the primaries described above under +CONDITIONAL EXPRESSIONS. + + +test 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. +

+ +
+
! expr + +
+True if +expr + +is false. +
( expr ) + +
+Returns the value of expr. +This may be used to override the normal precedence of operators. +
expr1 -a expr2
+True if both +expr1 + +and +expr2 + +are true. +
expr1 -o expr2
+True if either +expr1 + +or +expr2 + +is true. + +
+

+ +test and [ evaluate conditional +expressions using a set of rules based on the number of arguments. +

+ + + +

+
0 arguments
+The expression is false. +
1 argument
+The expression is true if and only if the argument is not null. +
2 arguments
+If the first argument is !, the expression is true if and +only if the second argument is null. +If the first argument is one of the unary conditional operators listed above +under +CONDITIONAL EXPRESSIONS, + + +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
+If the second argument is one of the binary conditional operators listed above +under +CONDITIONAL EXPRESSIONS, + + +the result of the expression is the result of the binary test using +the first and third arguments as operands. +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. +Otherwise, the expression is false. +The -a and -o operators are considered binary operators +in this case. +
4 arguments
+If the first argument is !, the result is the negation of +the three-argument expression composed of the remaining arguments. +Otherwise, the expression is parsed and evaluated according to +precedence using the rules listed above. +
5 or more arguments
+The expression is parsed and evaluated according to precedence +using the rules listed above. +
+ + +
times + +
+Print the accumulated user and system times for the shell and +for processes run from the shell. The return status is 0. +
trap [-lp] [[arg] sigspec ...]
+The command +arg + +is to be read and executed when the shell receives +signal(s) +sigspec. + +If +arg + +is absent (and there is a single sigspec) or +-, + +each specified signal is +reset to its original disposition (the value it had +upon entrance to the shell). +If +arg + +is the null string the signal specified by each +sigspec + +is ignored by the shell and by the commands it invokes. +If +arg + +is not present and +-p + +has been supplied, then the trap commands associated with each +sigspec + +are displayed. +If no arguments are supplied or if only +-p + +is given, +trap + +prints the list of commands associated with each signal. +The +-l + +option causes the shell to print a list of signal names and +their corresponding numbers. +Each +sigspec + +is either +a signal name defined in <signal.h>, or a signal number. +Signal names are case insensitive and the SIG prefix is optional. +If a +sigspec + +is +EXIT + + +(0) the command +arg + +is executed on exit from the shell. +If a +sigspec + +is +DEBUG, + + +the command +arg + +is executed before every simple command, for command, +case command, select command, every arithmetic for +command, and before the first command executes in a shell function (see +SHELL GRAMMAR + + +above). +Refer to the description of the extdebug option to the +shopt builtin for details of its effect on the DEBUG trap. +If a +sigspec + +is +ERR, + + +the command +arg + +is executed whenever a simple command has a non-zero exit status, +subject to the following conditions. +The +ERR + + +trap is not executed if the failed +command is part of the command list immediately following a +while + +or +until + +keyword, +part of the test in an +if + +statement, part of a +&& + +or +|| + +list, or if the command's return value is +being inverted via +!. + +These are the same conditions obeyed by the errexit option. +If a +sigspec + +is +RETURN, + + +the command +arg + +is executed each time a shell function or a script executed with the +. or source builtins finishes executing. +Signals ignored upon entry to the shell cannot be trapped or reset. +Trapped signals are reset to their original values in a child +process when it is created. +The return status is false if any +sigspec + +is invalid; otherwise +trap + +returns true. +
type [-aftpP] name [name ...]
+With no options, +indicate how each +name + +would be interpreted if used as a command name. +If the +-t + +option is used, +type + +prints a string which is one of +alias, + +keyword, + +function, + +builtin, + +or +file + +if +name + +is an alias, shell reserved word, function, builtin, or disk file, +respectively. +If the +name + +is not found, then nothing is printed, and an exit status of false +is returned. +If the +-p + +option is used, +type + +either returns the name of the disk file +that would be executed if +name + +were specified as a command name, +or nothing if +type -t name + +would not return +file. + +The +-P + +option forces a +PATH + + +search for each name, even if +type -t name + +would not return +file. + +If a command is hashed, +-p + +and +-P + +print the hashed value, not necessarily the file that appears +first in +PATH. + + +If the +-a + +option is used, +type + +prints all of the places that contain +an executable named +name. + +This includes aliases and functions, +if and only if the +-p + +option is not also used. +The table of hashed commands is not consulted +when using +-a. + +The +-f + +option suppresses shell function lookup, as with the command builtin. +type + +returns true if any of the arguments are found, false if +none are found. +
ulimit [-SHacdefilmnpqrstuvx [limit]]
+Provides control over the resources available to the shell and to +processes started by it, on systems that allow such control. +The -H and -S options specify that the hard or soft limit is +set for the given resource. A hard limit cannot be increased once it +is set; a soft limit may be increased up to the value of the hard limit. +If neither -H nor -S is specified, both the soft and hard +limits are set. +The value of +limit + +can be a number in the unit specified for the resource +or one of the special values +hard, + +soft, + +or +unlimited, + +which stand for the current hard limit, the current soft limit, and +no limit, respectively. +If +limit + +is omitted, the current value of the soft limit of the resource is +printed, unless the -H option is given. When more than one +resource is specified, the limit name and unit are printed before the value. +Other options are interpreted as follows: +
+ +
+
-a + +
+All current limits are reported +
-c + +
+The maximum size of core files created +
-d + +
+The maximum size of a process's data segment +
-e + +
+The maximum scheduling priority ("nice") +
-f + +
+The maximum size of files created by the shell +
-i + +
+The maximum number of pending signals +
-l + +
+The maximum size that may be locked into memory +
-m + +
+The maximum resident set size +
-n + +
+The maximum number of open file descriptors (most systems do not +allow this value to be set) +
-p + +
+The pipe size in 512-byte blocks (this may not be set) +
-q + +
+The maximum number of bytes in POSIX message queues +
-r + +
+The maximum real-time scheduling priority +
-s + +
+The maximum stack size +
-t + +
+The maximum amount of cpu time in seconds +
-u + +
+The maximum number of processes available to a single user +
-v + +
+The maximum amount of virtual memory available to the shell +
-x + +
+The maximum number of file locks + +
+

+ +If +limit + +is given, it is the new value of the specified resource (the +-a + +option is display only). +If no option is given, then +-f + +is assumed. Values are in 1024-byte increments, except for +-t, + +which is in seconds, +-p, + +which is in units of 512-byte blocks, +and +-n + +and +-u, + +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. +

+ +
umask [-p] [-S] [mode]
+The user file-creation mask is set to +mode. + +If +mode + +begins with a digit, it +is interpreted as an octal number; otherwise +it is interpreted as a symbolic mode mask similar +to that accepted by +chmod(1). + +If +mode + +is omitted, the current value of the mask is printed. +The +-S + +option causes the mask to be printed in symbolic form; the +default output is an octal number. +If the +-p + +option is supplied, and +mode + +is omitted, the output is in a form that may be reused as input. +The return status is 0 if the mode was successfully changed or if +no mode argument was supplied, and false otherwise. +
unalias [-a] [name ...]
+Remove each name from the list of defined aliases. If +-a + +is supplied, all alias definitions are removed. The return +value is true unless a supplied +name + +is not a defined alias. +
unset [-fv] [name ...]
+For each +name, + +remove the corresponding variable or function. +If no options are supplied, or the +-v + +option is given, each +name + +refers to a shell variable. +Read-only variables may not be unset. +If +-f + +is specified, each +name + +refers to a shell function, and the function definition +is removed. +Each unset variable or function is removed from the environment +passed to subsequent commands. +If any of +RANDOM, + + +SECONDS, + + +LINENO, + + +HISTCMD, + + +FUNCNAME, + + +GROUPS, + + +or +DIRSTACK + + +are unset, they lose their special properties, even if they are +subsequently reset. The exit status is true unless a +name + +is readonly. +
wait [n ...]
+Wait for each specified 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 processes +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. + + +
+  +

RESTRICTED SHELL

+ + + +

+ +If +bash + +is started with the name +rbash, + +or the +-r + +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 +bash + +with the exception that the following are disallowed or not performed: +

+
*
+changing directories with cd +
*
+setting or unsetting the values of +SHELL, + +PATH, + +ENV, + +or +BASH_ENV + +
*
+specifying command names containing +/ + +
*
+specifying a file name containing a +/ + +as an argument to the +. + +builtin command +
*
+Specifying a filename containing a slash as an argument to the +-p + +option to the +hash + +builtin command +
*
+importing function definitions from the shell environment at startup +
*
+parsing the value of SHELLOPTS from the shell environment at startup +
*
+redirecting output using the >, >|, <>, >&, &>, and >> redirection operators +
*
+using the +exec + +builtin command to replace the shell with another command +
*
+adding or deleting builtin commands with the +-f + +and +-d + +options to the +enable + +builtin command +
*
+Using the enable builtin command to enable disabled shell builtins +
*
+specifying the +-p + +option to the +command + +builtin command +
*
+turning off restricted mode with +set +r or set +o restricted. +
+

+ +These restrictions are enforced after any startup files are read. +

+ + + When a command that is found to be a shell script is executed +(see +COMMAND EXECUTION + + + +above), + +rbash + +turns off any restrictions in the shell spawned to execute the +script. + + +  +

SEE ALSO

+ + +
+
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
+
sh(1), ksh(1), csh(1)
+
emacs(1), vi(1)
+
readline(3)
+ +
+  +

FILES

+ + +
+
+/bin/bash + +
+The bash executable +
+/etc/profile + +
+The systemwide initialization file, executed for login shells +
+~/.bash_profile + +
+The personal initialization file, executed for login shells +
+~/.bashrc + +
+The individual per-interactive-shell startup file +
+~/.bash_logout + +
+The individual login shell cleanup file, executed when a login shell exits +
+~/.inputrc + +
+Individual readline initialization file + +
+  +

AUTHORS

+ +Brian Fox, Free Software Foundation +
+ +bfox@gnu.org +

+ +Chet Ramey, Case Western Reserve University +
+ +chet@po.cwru.edu +  +

BUG REPORTS

+ +If you find a bug in +bash, + +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 +bash. + +The latest version is always available from +ftp://ftp.gnu.org/pub/bash/. +

+ +Once you have determined that a bug actually exists, use the +bashbug + +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 bug-bash@gnu.org or posted to the Usenet +newsgroup +gnu.bash.bug. + +

+ +ALL bug reports should include: +

+ + +

+
The version number of bash
+
The hardware and operating system
+
The compiler used to compile
+
A description of the bug behaviour
+
A short script or `recipe' which exercises the bug
+ +
+

+ +bashbug + +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 +chet@po.cwru.edu. + +  +

BUGS

+ +

+ +It's too big and too slow. +

+ +There are some subtle differences between +bash + +and traditional versions of +sh, + +mostly because of the +POSIX + + +specification. +

+ +Aliases are confusing in some uses. +

+ +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 unit. +

+ +Commands inside of $(...) command substitution are not +parsed until substitution is attempted. This will delay error +reporting until some time after the command is entered. For example, +unmatched parentheses, even inside shell comments, will result in +error messages while the construct is being read. +

+ +Array variables may not (yet) be exported. + + + +


+ + + +
GNU Bash-3.22006 Jan 26BASH(1) +
+
+ 

Index

+
+
NAME
+
SYNOPSIS
+
COPYRIGHT
+
DESCRIPTION
+
OPTIONS
+
ARGUMENTS
+
INVOCATION
+
DEFINITIONS
+
RESERVED WORDS
+
SHELL GRAMMAR
+
+
Simple Commands
+
Pipelines
+
Lists
+
Compound Commands
+
Shell Function Definitions
+
+
COMMENTS
+
QUOTING
+
PARAMETERS
+
+
Positional Parameters
+
Special Parameters
+
Shell Variables
+
Arrays
+
+
EXPANSION
+
+
Brace Expansion
+
Tilde Expansion
+
Parameter Expansion
+
Command Substitution
+
Arithmetic Expansion
+
Process Substitution
+
Word Splitting
+
Pathname Expansion
+
Quote Removal
+
+
REDIRECTION
+
+
Redirecting Input
+
Redirecting Output
+
Appending Redirected Output
+
Redirecting Standard Output and Standard Error
+
Here Documents
+
Here Strings
+
Duplicating File Descriptors
+
Moving File Descriptors
+
Opening File Descriptors for Reading and Writing
+
+
ALIASES
+
FUNCTIONS
+
ARITHMETIC EVALUATION
+
CONDITIONAL EXPRESSIONS
+
SIMPLE COMMAND EXPANSION
+
COMMAND EXECUTION
+
COMMAND EXECUTION ENVIRONMENT
+
ENVIRONMENT
+
EXIT STATUS
+
SIGNALS
+
JOB CONTROL
+
PROMPTING
+
READLINE
+
+
Readline Notation
+
Readline Initialization
+
Readline Key Bindings
+
Readline Variables
+
Readline Conditional Constructs
+
Searching
+
Readline Command Names
+
Commands for Moving
+
Commands for Manipulating the History
+
Commands for Changing Text
+
Killing and Yanking
+
Numeric Arguments
+
Completing
+
Keyboard Macros
+
Miscellaneous
+
Programmable Completion
+
+
HISTORY
+
HISTORY EXPANSION
+
+
Event Designators
+
Word Designators
+
Modifiers
+
+
SHELL BUILTIN COMMANDS
+
RESTRICTED SHELL
+
SEE ALSO
+
FILES
+
AUTHORS
+
BUG REPORTS
+
BUGS
+
+
+This document was created by man2html from bash.1.
+Time: 26 January 2006 11:19:07 EST + + diff --git a/bash-20060316/doc/bash.pdf b/bash-20060316/doc/bash.pdf new file mode 100644 index 0000000000000000000000000000000000000000..cada2fbf29b105d531d520d8d7fac731d4e7c00e GIT binary patch literal 657635 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�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 z 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 z%0D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%0A(M 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 z ziy`QFQk|ocv%IB!d^2MjHW*&ma>%urEnee^!H-(B?l`N$R(@P;IFs z;9|89Kh(kirBm)kr3U-VT3`^BC=?%+E$E$G0uO>(n6s1K|VEr`-Z{`4!s z%*BD31m-kKoze|%S~bQNxHH}*s{14)Y5iqK2Xkug%7*a;MnW!W=wvJY<6dGSCMw z#k2dKc?nx-wJEs_5KJM8+$)~kY1#|ngB~{r7xrv`_LDK$Ss(G!-GYfzpVOyu7DaD| zBQ~9d!Pme^AtZGl@%c2xw^YvR@cq?TTGfWsKWn~~dQ?+81)Oe<1#Omh%`kwqEe%%p zS;Dbs%8*jR%sRR)h<_+qm65Hhw2{l;sY#M{<^!A`gzpz<3O@@e*H=t*mrFVw+fVYU ziiB{jf_!u5I5yK%M@f|GAilk|UXnBPpR#nhZ1}lJfg$@RKQRlzET}Q5aQgyXk{1t} zB0#MxS|%5avum}D)Q!4DsWO^Osb|%6Te_@xOgK!M%V{jANH_3Y7~ zML9D9iK7H(G&f;h9G@aOMVoTn7Ua$ADBZ(N&1h*ebV8^(ZK^4t%=LFvuV@=^P_@EQ zB`^7kbCc6Oqk&w5rsOD(mv&J=O*d&!RYqQv877$7B^U-hxt%bmWJ71Y^(ez*fHElK zfAj<;_T^{Je%sv~`|wLu@JtEUPi=@qqPC}a>f^rG!6zM7n<9ijQG|yDoBl+35>sk# zJ&!cx-hzjX)_K1zr^C(M!i?Y-V`(|v`LnjrQ+>0I5|!sXjjW*56@x##*B?UKa^KnO zOZr(KM6uH@zMDfZSip@H$DJ7uyOO8g5}iAq-Ut}Ahyqd)7_%49cMfo$4D``F+GGnH z1Ih>Kh5X5BN5G$`Ay^8&X9IRM#NADM%2_)WU%{TZeqQhKDFgMZA-s=;u{XVhIq{3K z^mnA^0BYqKMJS5bSwkx6?D2YjTM;Q~K5Z|u@;KM{B<(|j?+I}#8EvNUpgxGzTiXbO zBWbSB8OzNW!(aK$;W zasu&Y3BT(UZt#h!0BL2HzVeDb`E`t=;>=zumYvaSw zMnvUrhcr3~zjkOkCsI!aggn%5sbn$W%Y=w$RTO=6gOQ7i73rGn)vTIKbLuRm<@ArH zAV^b2H7TVLIM*p_yi|-R{=pRR3D^~h?iVDvq&w|iGU6CJ* zWXngjrn$Y?X;qwMTv%LK99nMevMwZu3cPQ3SC7`Vx!Sc!R374x*u8-5DI5D_-F{hv zXde=hwl9&0TeNb@@(GC$6~#6*#rJMxTUUn8Y+9G5!jd;lNCmclv5v891nz`=DlPLf zgGHUauPvxJFRb=fX9Yhnvcb) zR_FzJz1P=Vl_$j?cV%7VyJF=pqm8Gvq&q{wlmzQl;z^e+?H8=TZK>e|5H?rVC=cu0*ijN^=a)?I|w>9s@EP6RQ{4YhQzordZKYj4rQx9F;V7Q z7_rDPIL@#G>rpdc5%qh|- zdRB+kl+o;IIy0lW8tlqSa5UFF;?9~(J&;mnHg!rbTFXjST|2MF#i~|{iF>e+Su47zu&rhd1jV0rhY*e5kW-5dcMjKXMkrEhIcN z3p|rg*Y5mH2Wr18zaoz+Dz9S79f2*p$_HvX3Utjbu~vItf^fQr_pwV_dakOxt6E!o z?xXyovfY7~``9q*n5qYE%W;V7BL?<+{dU1;@Ck3ayz=8!yz-@FLrvWHfV8XDWNY#v z)zo6cHq%$loK)lbZ89Be0xchb!Ei3cn!MJA?u(DEbK5zk>Z z@LE09Vn7VKBf!Rh9&^z}&eJ1D^%6IBa}X;spRBEZx?lX*C3ohEG1^pLBiDOO=90sU z!q~~(>l*VVF4HmaMQlV=c^b?+)s)TK!M&xjJeH@nVA5p}>YcTxF3mr@kEfUZnD^nkXSanS zB_@_`c8v_WurO?FnN&VQ^5G5qYUE91RvIc2(K+Jy8kVU{n6&p}Sz8b3jkxX9&eFk` zP>_3jC*8{G(mjN?Duxa0I)s-~w1(wHUJNU5e7&KiF=}2?WfQfwDMNs#4r5>HG{5iDH zb?#?(N8PYRZrX+N2pu<#!*a%qmL)ojH#~0g4RH^lr(&k+>g(cPyYyXosCr2{OP?IKIAGvSm)hizA>+c9`T1S{n*mYr(q|qI zOy-;5jv_uRB0KhumyC|nh!*4F;=qImk-He1Ct==dVZX!<;QA=AP$VRZQX37uxZy%V ziliTPu`I=;jd*5_m!0WTr0*81B@Ymi7PDhm0Vmyhk&W$Pd1K6~)mqY#30R$w^$X() zL&rA&EW?8B!2`XriJ!y%2@rtm_RmI2=d%F7to8#w{*Xr7?ODATt+WxTMC8$@Ymc5^ zUX!P}n|xOb!Y<~c(qyT9boo%StI&b)38H0T<+7_GVZ1MAN$f7_R>fX-vyGW(VgJ4d zVY^RP=axtwO!Ulz7cU-)@Na4nE1fx-2uq9M$FnTN+{7VBPA)#E$5~Bs{{*|;<;hVk zWyzpU>c`~y!eLQuU1Z<=4kfQ~;}wfwA$xMAODd{V;PR@iP_MPrmO*1x9hH(b8dL%e z5;bb$9?Cq?Cz%6C6^EI7x%e3L4NGeAoP@;jO6Yw;}9Wj15XkmZ$GZSHf;E47>rH7<>drV%2N@Bl`l zvXWpnyt-{uSBmgZ;V$=I;R8 zKUkK(5yW%4-sb_Ave2v`(!A!CU-RVrG$DaSbs?&22Mk5|{DT!6l8Ab5-E%+PLNZRu z@gtOANoa^S=x`sp+Vnld|Bb!`P4xSl;=bC246>lT9QcOj8Mo0PZ8cJ-R@IZFGlLU%U%8&){f#%Po#~(b&%P&n46l~%|fWg)h`dDkFIsxPdqg~CWt+M#+d zRd_)`Ytx*~&StWo?}K>uDy3rWm^}a5Gi~3!r}U46l78un+^n{7Lf!@6&vfgPj=;v4 za!y+qHH<6Lw#gbP6ojB?4G%Ruk667}k&m6*@klE}L4938>u4<;rjlFYqf@aqkHj z>Rlfb=(YkFM6p>;uxn)2Ay^%P8t>RP>#Uh}l`dU|WwN{Tc>4tl>2zAY!n2LbW;oZq zcUWdqU${SQuWQcBO&smVwit^Gy`Lqd?`t0l3=J0-hD`*xxE4F?Mirj4SjT#i?_Kj> z=ZFZSWSJdH>qkO_j}Djzv;d(pS)^fOv4mbvCsiAN7G-CWK1PX-ISsEw5*KZ;nF<{z zrj{+qZuXeV)johrh38zNI?FG1P-M5*ycxN;URkbb7D{>ioWex?mEvVOF&r^r?`{{( zIRc!|8c1FGh3N(wXYry+iQuf4lE9iQ)p1vj>S)$2g4~pODC2uIiY-3$`Jrjwu z@5ObteI)0<9gq?f5*9%fbrM(2?k8~9FYd-wkI?E-OP9O3>HAyTd#yQ~k+{sqC0qTp zUS9a8KmbE#+e8lY@pW7u084PmcaO)o@XII2M{2h%_n2wSt}7x{VowOLq59g zzUFY^G8Yu}V+E6f9#FNw6>9F|!}x4OXYJ1hH)xX9qwEvY`=wW)hiTqHeFYXDGGZJy z=gg+VA$6xnmn9*)1PI$yDna!eTMak zp5Fh~R?8wVjX3S+;_s6CESW8$TAf+NHAeL9(k;^~_>-)kqTjm@W>{Fi*fx8_oXy5Z z8-+Zh-cdEwF^<~OO}#Nh@@)Q0FiKgv-CjGU>eS*^Z5eP8)H(f?P&&JL`Bi14F+P*9 zo8qM&A+bv?ncS`3Q}$WKJk8eslFTjOv&=X8<1{>va7Cm8Lk*z?O$$Zx`(xnlmMK{? znTzOqthPdIIjllk`9{Qge&md{*>?U0z@MIth$pIt^))tNpbAbM^4(&Y?R>X+e z`hHrmR5r4SPP?a$jnm|~0fao%f`|h-;`4%bn>Gjecr3IT*OctNdtT2 zQ@IL~_<>>>7{n`ZBOFtvEQe>1BF{i1&%h$jz&ozKQmouAQ4{8!`4YgRfC-(E3%#)g ze2zK%J7!P>=)}G5W1)iEuSUuAD+vy+pa-0R8_pmy&Y&7teUVW5g5PE|Bb)N*XDWK=#&UL zLuBzNnhh#O>>;uSc`2z?aSpGYR;5^b1(3T&T$2Fb30KenUfEaB64kh$BMQ@`BUDuV!bW+;99e&qJ2 zs}x{wZ`PyW_FUJc;P;lTLasNxNixF$v1d(A0FN5d9{}je?1-_nLF1-H*u?1e0g*{U z2|k|IW#EE#GOwsX+PF5=;p%8N*U6hj?ktvOC)z6HLUnF$z%BucoI8Q8j2@HC$O>!w zwx@cr;}&d3x1~@eKM!tV}YNDEBnwLP%C(7^{L7 zA&+yDqI+nXF>i&C2bonsLC{}bt@iBqYG|4ys^&1~1z`x~ z93qm*hc!rmJyHw+B*fk*mt1a5le+;NRK$T^8ze~h(>DNYl<$Yvp{pYUC0*{G{v{*ISeSvCDAV>C?ncX<~TU}hDcRHS#}dQ z=uFiTj^6-IvJKp2atg462l@49HirjhixXCou}XUtL{a35QV-=}m(q$s z52az3(28c23Qnt-ikg$Mck7ypi4$yb$v^1Cu1XyYhp8I)rGx6_>8Pw!EXHcj;bt+A z)g`%*)iMxl_ipVtkx8O{W(xUZN0^7l+IO#3>s{j|l zOg@qwMa?b^jkwg=j1;pk#x?}^G#q^Uo%z%i?Wzg9r;>q++<(E!@IPkK0KEdb+V7gZ zn0>$)EVi{=sA+?6-5<_=IU>}IdPXCq!fE?#;;e3uy?O&%XHYc ziA^R^nYxDp_9H>cqYjJ*poaz}jKY48$4QBfPk5G~*j=GuJg5Ko;?&MaHomDawdQh$y6L#o{8@PNM~3e+ZOi*nN& zs4I2{>>E7EO_>>%Q0Pd@E~guLa~(}5QFEYo`T5vUV4}+pajmuLLx$5WXE;t#xO9QL z^o}>qy^TbU)We4KUq?n(#?(D#r_+1dj-}5}lST4*TMxR&zQ&JkCV*_u|3vMw{*8nng2IqoRJ-$hMArnpMi~y1D}DBgXO;);|elz@`?)of_nvR zt&H&hQy7P&{~vvEc6z4&@Wol#{+loUPn1^y|38^t_J8~0f4kcpf4Sd(S>r6M|26h6 z(}ZIJ(c{a-o%2*|(Y{nO|E*ZjX7a;AS-;D4Lpe>>m*G{0H?%NzfvDbB+B zPuH7;jsAbl`B$BP*8W%he_7=JHpc&szxw<~?qA>Jf4SlR5r3`uS1{23YcdlD^FQOS z2L74A!t$SmA^!=K|Et-*o8e%h|2MY&H=O==-rqp`KMVY=rT;Ch|8@SSuKq76{qF_- zLony~AH-xv`v0GTdGfTyCO>lUiw`8trf^-=yqN+$P%%lIu&>z$SY5F_J#&M6mheu` zE=OVsb0iXb`-5Yz=gruKY-_IV>0zuHP>@!YVkIyruAlO)Kx?9_E?COKG{02<{CLx<8lkb z80`9hPn`6cB^~dW&lu{;ymrfm%bC&3`oQ}RgQj(+*L@OA!D<7ECid|ef#z0a;ji0# zL=ttgfN%pkDCshxmboB_qwYCiBpA=X20^uv@e}F>;QBy-Nbx|l==DsYwCM36^!=ew zW^!oIZKxonFVH^HRF#Ri`w9o^9#9>7T)3{!B*njZAh$RV9T}T+XX;{9c?zuVe z+!oGK7jU@&w{6EyzUy(Ckh1TukK^)t?~r8;i5bF6>VT`Ou#j=;jdeX}|F|MP53a?m zH%BkDX8@w4!o2=#H_|^6RH`GDR8tKlbcn_ctT(hb5N{zflz*RwR@s=)ILzcGi4Vyd z;i=wkbVCazeL=(M40|uedh2E+(5yKa%a^-=Yns&ipWX_^< zJQ5HG8jCqss(4sO(=6m2HyPBrzHSF9YpEFvkTDt6)3u=w2K17}p$jy!3?N+{3K)io zr%7y(1Bea1PSG9|u%lhzO0uqmv%5khfMxmQT<2ulpxz{E)z&`AB+AvKel=1*xh#v+ zf4zR~g1lHrm72ime?uu5Z|Jo3#6c|{5E&{wetuF3~ohi~g}vEg?5 zxi*+@%?q^^SCFEoIJq1c3>==}V5{P5*3+ZuT&a7lWjk zx|-{q`Yd1YPh0>sRRT|aDBVx7$Y{l-> zfp|q|obmH~W5)OOQ^vK-mZcttK1siBEFA^)In}< zf?o4ib3*4}`G90sg39^<+M(wE5vIus&S`++ruV|W1l0An4Sj+2jehTd*}nU}#X}g- zoL7djwrZn1IW5_J7#vF^C1XoiOyNnb8h*6KIer%;Ee1!yC*ssnrzxGM;E zE)7Yb6}v%?wDs%y*NeZ;E#~8(^eurPPnVM$2WBG2**H~yb{X4Ezz?8rAn7Zkm-iZz zmzx`Ucc!S}Vv*Jlf*bfH2w%MCFCEcMb9(U7fpqp*RoIJAs*u_Ik7#ff1o?ig$LM4| zrt|TyJzzI1>)iZS5q*{{Sk=L5J2EdE%K;i-VHxxu+~x!kx79*xLW`f|vf|c2Pxz2n ze;_kYluuBC+7RxQFzewEJ0x1f#PObe%TPGjUgl3pW#?r{7bwj^CyHsPmsa9xBy`NihJY(*WPxJUcVsu19+Ea zv8@6e_m*!$?ucICK=f)@zOWjCn1>9<(Cc5f30N98QpmoVL>xZqQxM61(7MC>5iH2OVCr6kLE zLi-S!cmg$^xD$BD!4(U7Uy24f*SSc zv|wBNEcc>sMa?|HuZ6$Zqgo1Y-CtR~(7sWvOZPFFzL1C*ARP_3N%aULg0c}KA#SRb1$=3RLN>1#!S@5AFA{qo6OJv7ml3EehnPLqzB&s#NT zvB*$}2aXYlvpU{H1%3|(`3mZDbt*dI+>MlZ)NwKp@CC@W`1t1e@&}o)_P^PsDBw!{ z9L+Ykld*r483Vq@&y@hxc;o+}(|GLz$YOFwrTobY&c!*yQ<~V8cylSP5;czbtqb17 znc4#Uz8}DE>8rWBkX;R>F?Sdf0ZuPX84eCake`gV1()I3O6^<_=p|~&H`&_s-1&-n zjEQS=rM<*weqXhM$~HPJL-L{jAo#uD)5rFNg;ZQSxeJx2SvnZ_tsbI0~JU{G1y|vQmW{MSXk`iO! z?5}mP9c-bk2y|Az*0SFCzTdJwEJAKg_iVthOPQ-)$30hjlKEQ9l}g8-7D&;UV+it4oMw>}Ysh}eGJN>6CCB}9VW@H3bJ#07T0>FT z#{VYmMP^~*tCxR|h}+yOvO`k?$c46&w>h_K73R@irMumwN2VCsvn(5e!CUvB=?5Bt z$Nlid)LqO}LH|G#7kO_NqX68YLkZ_6)?f)xMmFsMIiP6@*SBvClsD{&Y>w{r&F#cN znK;;h`e>~bPBI_P9x8EXln2w?A&uMGH`6yWBg_S4?O$xx7hdNegob*Pl`XKH&S{CU zA)7h;6xq04I6T~Fx|)AVd~^yw;pj3WBCDq3G2n0vaRvzDq{z4)jE_h#+5O}qkh4|*O5yaEXfGvRE=K1#W=Oa@%5=^d-aI)W)ajXvpy_K1w$ z^kG|y01op$n42lc<=9vq$uuGlPV^Zj>m%m!{dx@Gd;YENleP@^8`DRaR(K@}jX6>W zjozBNXwIRPN z3ciA}vJpkBrQEGCVnL9XaBtXAY_GqDltGb{HMx4|Rw<-;E}viBuu;->)>J`ydfW); zj`ZgL0S!R%zm&E~D?XkF)&EmAc4>P!2NXY6$UM4l1i&}dd5W3DzC@o)VK^zqt@fqh?-+Y zyUlDeJO}>@jPNf{n>deL^uoV98h#bl}wdQ_M$w zoBBRnw{iU`%c;4i?7v;Nc|EGF`z`zzoFzR5=Zu2~q^a^}ob*Unu>=n&P=PtaUHGHq zyU50_LU!8$G2yBVyTg@L?yAZeW0trsOE1Z6A~#lUuh6;b>s!nuSy@STlE8`+)rJAM z>1my_dH{wF8+Ak#@f-{R0d5lYk&sTbxjAct)w7~(0DdQ$4MtaGRVYk3^}2eJhzL}* zd|F+*LM;L}mmHhO#hC9xjktwM!bBtmV z%yC3QJr=ve?l1`vnFVrHS({w7@o5+_`Jl~8sg%veSD`y1CXlPHs+0@30bN9QZtzxI za^!XKvezGNow}%}%IA3O^3R^M`Z{vm-D2wvGiq00&dT2Q#K!h{>!wzA!8MzkHsDzE zRSk=_uYG~ux|MW$%TC{TJ0WS-9J#lyX6Bf*!$BT7g1gN%P%Zs7)Vy;+XJTC855#A> zH8ZD7sYu9p6JX2m=c+W~wIK44>X7aCBhjxl>Wqe@POsM)b=q)3Z>VoG+Ra)sMRjUB zgPsBScTv+E4DvcHhz84*YC4$H81&luplbmB?T|mwSci_HHXN*EyV@H4u5n$+#5lxl zSX$)DK_t1l2hR^OX9p3U4TI;;G~|cQoJWAxZqEDy?Q5aDlRveYOg&Y|%XI{?!|q2` zaJC{>oy$TV8XzA;5X$Icd=SBooE&pirN9RbrG9Ya7;^H z*;`pV>HIgn*qdGB>Z>Cz7p?l+!Jhk}?f@peI;Cm-bK~>UC(!cf%$rU>zxXa`(@A&G z*+})i+0aOKF|;{oWoo=N-)$lRZ>I>_&4&+5kKcOpJ}7?oci6CF+C1s*ZB1=(JIpTq z!F|%5H{XGb-*|sRh*o8!eRno>DKtN2_>bf;8Ur2jYUhGm#YrYp9BotD$0lN|*{DmI z;<_ePbv9I4Ri$cDC3w)(IKfpp!#_bgWo$C0L-(Ltw1KKBp%Pbj1S+cn?RK$^YiH-# z$IN#1%u~R>p{O{z3o`iZFW4fwg--`FG9814p+RP_VGy0oAc-iSN~>rFVJ_1tLR5ud zb70juM9zqeWekywj9e@xeb6x$Dl}ci+0Z>kG(HsK0cE%xsEp1jJ!`IHzd!lTVxwNP2p)fLUITGf>H zWPGX)uCg^2>78FYf6m+ux9@rRi3jnU%VsQ{u;9|k4R=jAFNv)i9zI!LKX3EeN3p~1 zdEP*y|Mr(|T65!L**!O2cl|)F#-=9|37T=Y&0li){7l*WfVI}?yv&=n=;}k4OikvW zxciph%mffzhO?lc=%YH(L!C4*4op<7rdD$X1EwYYSO@Lbx{P-q;-0`Dl{17?%&5je z$`a|A!SXV5QI(7+ncsUMQ68$qNq2@^noUxMpwt2HbCtRL)k?%8q0wMNRQVoWL|`y8ybL;EwM%Vt;F)IFovrlG?3+k|M1QJMsL z0H%n-jX0}!MsVC(mudO5&Kl5sY6T6Aok=m$ zgg0f|8r#@5eH&M2wK_~m{)8jfXsSO!wRdc|)tShAn(sb;yl`A*0W^rm(J0D)vhBbe z2My=*%*W@8m-6h#sDf;VZ2+1Pg%{;M;spodmr<@jERh>qltZYeNX#qNQc%bsnN=#H zdozkC6RNf^-ZNq1PcDsnV%M*(O8EG24K^j@>frsp*qnP8m?l0jtI`#}eY~MI72<>z zEk6D3bcn}i+4*cH?y3(8_cgLp9|=ZcY2NX~`n=aO$({5!SON{2jNjZE<_`#zq3UMrb8*m(&Pf-X*{1x6;S(EO-}K5Df`$ z5D>>`9K%(545yiUDXk5?Z?_7n5|-n7m(_Nh+fbsQ!sfxX&XG3`)@HLKRD@pKLm>K* z#g4#J!4cTu**m9M7Id05&GELnriMk6ekMe#uZbIIDpwgDzi<|6%OrR!){YsF^bLp_ zP>(~F1TKOcfCmvbDepbadVIpsrBCey4ulNkOKLy`csXRPQ1I6l#gVGzR! zh!g~-Ew%1B7zZ4D?5T&)D_n8|owEAOL&R9yyVHp+%n5lYkYap$ku+urx%9g}#hx|~ z58_Xe3y}Qsfjh|h5l z>ZyP~b8@JtsgZgpFKgZ?)&Q?gaE7e{9rg%Jm=N?1O%(t(tO`|{;oq-CFlv6O_dR(q;ZvO2W8DNi%=McG=+)DRcEm+S8!wZ?{DCO zV*lsYE*^W8^!pRn?zm*ra2Phh@_*a`4bsN zNSe|)(YRvx04zJA)9GCf=L>KH!hav^0VU4}IbWq=&Nm>E?EZG}Jp4A1K(Y;W%x*Iw zm1*Ou5P6yu6-rfwv)H9@%Id<&jpLkAc4`Q&(vh=C^||rgal+$MRnNhHTvp*_JkOW- z5`UXq1l(Xi93M8r%fS_JnFU{j-D^B+JZmLLqsnSChOI<`wjw_gI$atq)M{`Xu(;D@ zayhjcNUE%=6$a8~eV7#i=hopnOfR^e$7tkQA?f>+*ONJUnmId!MwhKe4jy7>*#>Zw zl!siBg*Ea8*b~awdkBUOQ+hPYYK=}y8u2Qq)}f_8v>BlXm?pKL*ZF@+JdYGtfgry`URbOGRsQtN{w4ZC*adOp!R8EntM9X(e}OIP`$r*3=T(bmY61$8T>_oXwN7INXA zt$lITipe)ajIFzO)5^7zlXI#2pLy(x-pT3OSZ>+gm!wZS<7`>ck9HvXc^%O{2J~Q? z=-+@tQm-P^7_J8pUTN0rai|A6oX`M>r10}_9iV^?-giWUlNz070Qy8VcvxLV{GPyw z0a*QPKqad7sBqQumHZ19_=`M>(r?!qzR_QE*)#`BxENl(D(+mtbG9R3==mb@1Eg71it zo7}L9w%Q=TVh++8wA!>fwb8*cM&p%cx0`jN5<$k21F%B$h1Czc-5Bd)9~O~TVhHSP zSWm79KC{QxZ^LXd^`}7$QGYsBYQ8eAdGV5qNY%U%GX3H4 zTc&l4lTQ5Y()^-C>e=hwz8m6e8*nwPCE=%bpW&#QJm_)7r?fw{@Du4ni+_?YRiuqJ zgzZb@21FxaaJ$G~VnpbwHI6XjwoY8-hVC{uCTch}8Qg>E!#jWjI*?L09AW%BNLedH z1jG}CEytY*Jq0|r{uiv%jND;o&!DNu4~o1H0wEg<2$#Ux!c~yN{Z)X6sN}S}t6+c# zR)G)*%J`Ht!*$nPC)(Zg^6rdvy319(l;;kOP@jKcd&-s za-_X;t8;8>(&XJAJ{xa)?1x$3E%&a!95T`=I1ZX&Z{a=8F|obl)0Kib@bSr-%buKD zea%m$H{RY+lqXT7Bjq@p4y+YDn>5?$pHlcTY8}0kx=~HgYFY=>w3;MvqzzJ{LsrfN zvR%~B03bm=40Ncb12Sb9fEqD|K`&F5q8F6-nIcXdGC#<~G~(bEtzg&#ZAfQxMM06n z?~^9n2=9@`_fBu*k?%})ao@d4ye=+b_H;EV{^CkBc00(0$o_DGEKG>|cTx{}@A2Kk z-IusG^+5Wb>^|S)iAPfVvj0fw$&@{XC5U>WPE}W4SJA9$ceF)X%iAmF;623U#4>Ud zaiy+Lf0g}8$5qaC;a$WnjpURjMa#s3>cm?2HOoK9CX zfJ2(HefHRA7^vsm*T8bY;e`=uM#+dHqnOItU0Ex(rG$1SQ%?0zdiasv?@668~zKt z89#vd!2zm74;H5>Q{16-$sTFkppBEH!R2(l%AFqxXfuP%1@l}sYC*{llL-L3*jT@@ zHCZ-ROeb4^+$d%;ZB02`-_VjwH#TI>_cvuy&5h|~o6?5;$hUbDwZQ`XV2)V!+NgJ9 zFM2orxQn8+p19qw=Pveh0^D)#@}>Xj=X5he%0MyS_jbU4^>)73;5Todak1y~QKRf( zG?h&_82O$DgdIlSN3;Bq?abl7Apg$;RA8}KO{!GoW*jF}0LUdI=u{-G!bsF18UwhB zC?|KSc7k%K1uTuZDEe!zZDz?|a)AbCcVTF#AS+2&BrCdP1E8Z*DU_FmZLkW7Jfi*F zSwd65w%-rW<>0ydr5j|P0DmLeaaNfRNgq*_8!1Q)K%Hp9%P|tLY8B?9)w{Uv(kuvb zHV-m`-Gv@Bh!C0D@~8ORb7$d}UAy2zyLKt^-HiIUQt9IoF{dI`fGjr?1g-)q5|o=E z#8jw<1VDYnNlXRH0qP`KPG~Wf2LHX2gGwiha-Be(q*31pxs$ZgNsHXYDrhDyIkyj= zh~Id>MCK&&ez>*B``eMenM_`WXf_2N6mtUYGGdk>?~C|?DG;GBOB-@1wNAUmEt;Jc zjz$VyA>_DwjDgLB9^)$Gu5@Mq8V+$AO2MDOVpvtSP6vw-DCZmO8%mrHG!)o(mkI}8H}pBH-czHrfymqlmjBE~Qmg(F{CtVpEz@ z8L=smZmxX$fk(X|JHs?`sVn*>ubNWMN5!X~PKgcabc2{8^-n%<{m*~>Vt9Ktdw17; z4J#g-8L{_7xr)~2%brv485sUtb&oPv)dgM>ud3x+)OQE=mhCOyTd_C$w(w>~?KIeP zVS6}NtEtMhwYPNa)ZCPNP^0z5F`5o04@Tg`2yBSJNL3IEvPKSa?ObF`vp6Pb0nNcc zm$oBWL&g)huiWP=*On)>?V)6-rlBS%+dAD1mB#Mznd2V}GM}zdK+E*~!kIa#!0I#= z1*hyX{mI!-|0mWd-yw_Cy^*LiR&;8)fTI|gj>y`m6uPdk zJ91e{39dSdUkUL6C1Pjiln|;4nUaIeHS6!Ft6bcFFuwSj^ph3YAavX` ze$5Xd^`rJhM(*KUkc}Ih6}|6B5Byg8#|K}%G63!K*Bsa^+$){^5j;E|UN^fkFP*%( z@aLC)4y~~ElaKG)^Y1sL{-$JQ{gMZ-dmOqus}}EHHs{W;)fI=@W8Zvt^bP4V=^y)k z``;h*^KmfVLd2v5(#2FXvBFsiJRJC|5QLD=P^MUD_ z>5g6aE@B6Llllhz4Tc+xH!!>Wy8;j54-$9j?=swFyo-6z|6m~0qHi%^6iusu!)}L| z(}_MV7bM*HqbkO2)VmE)4ToM}4A@pl+yH5HfL5uJW^|)kqluZ(H&rg&u2It* zX@D-fMnyOSkOo-N;T(X|MV(sY)HEJ28gQC#R3oRx08b##r~`Ee$J8L08Dd?9g7eGb z3|T(U%Kkp`5Nb;w4GLS1x4%r}n=it}U!if_Xz$c_ zX^NyOy2_V-M#5i`kR-#lR2pd_T{;vB)3E`V70s?$*fcS)HSlr(4^)<^V*X2bcojYBHHFir;-rtcXdcUf6eOnt@g&DPoB$?-ppbOLrbEDE(_!41 znhqhSn+`6r^kjZhj66OLBPL{ykj3Cjq>8H`Mr}J}k8q{=H(7+4a+vhqzm8>GY<^|o zmCc=r;&?V!};|c0b-Y_SaJjNW*2hoo4 znRCDp(BF;JYxk&U@PNs0yW#a|n|m70Vl6KlHW{ohJ|f&Pzo z-_$)f6gbvJyB9-s%&?&+GRFyquR%5n(n=3wThKgK8Jr zkzOnZD7R)564`B6NK2W_GBFW>lj-IHaRnTNsc81{9Nbsl{nsD<`S@efH?8H;=G84t zYq2PF{2b2Ra?PX}4}DR1{qn&4J7F&zvwMdxd+skAb+zm8+g6LTFn6Cc^8xA1{Jg)e z6u%)}N0>xG47??-SRCn#Y>VKAH?(e}25L4Ny!W$iqYJuHUYrB&Xf#A{ZaT_a?{~O? z6FO5?uhoFN{2{e79MRw*AxKyZv{5)1Oh=7r+GMp3iyX~-)`$^nq9NvXu9r@9 zAA9$;iM2iF4q$V`3VTVnIcTXgB{$9?S3(`ImW|AHax16~<`^S#DL7mz>ca znTU{1Wlk5Rmkf*?TdQZ!$U+OE!k{e1N?hxSruC*+I3<{(vhYgF!YeKdujKcI*MAdT z)fa%2=ca8YD={j@czorTres*3VloZQ8(%pgy$|Cbg%_ndL(OY2&3IQ_+Wk}My>~u8 z@;dC~kT44dq{;VmZk67b9+$q5UNIP*d=R$x)lq^#S_6xum7xs>e-2xr@8lm8x*N&y zN+8KLyUpDe!StM49hH%_MT7h}w?7(`NiQ)%dJN~bMtPQV`=Y$Sx#MWhvp5k>xEMV_ z&_+Wt6b}1rRyBfhl#tWd|?u!L~h)MJOZY6O$)XXiMHA`&CP2HuWuYvxT^&ni?nt{6DDb$RyE;+u*IzoYf+tJVowf*CK2zzzSxGQ5l$2P!?yFlmbSIH*jt<+Up6N zu*f~Om}#pWbyidx5Jw`3PvA!}9N02LO5Q>(^JPW}yUCQ)UF_a}bWZ66U_v*Q~EqhZVsAfo=FJ>?|s?V3UZfh@DR46q-4=Ar(|}ZheZ! z37S=#^$W1o*k{;ZFam3H81xvKcBs`f(nrr@1n>YBQ$OW#EAeJ!L}ZQBcf7}0(%2)K ziLu%ddD`juvYBEd=Ys@f@(NWe69;nK^WvTqBP+IgzO^YF^^aSJjbGosaN(T`RvgGY z(KZv`y;em1q1u-hn0FQ~npIttgNWnF{ir|X&?de>xhb#Jy_j9auMlnt-yC_;^Q7>R z`F9qb-961X(>ud=lW(W+p!-4JmvOY)8%Ng&gTvvCaS2CzfGgt`a5yJR+HAs*j433a zt&n5V`8*Pxea98!yO`>ik!MMj>^8J3oys^VnsMX_Iduz_5=SKfmJj1Lzo{(^_m7coU0bgSkLay8 z75ZBv)-QHl<+{mrk87Xnh)Z>WUDy%X;d0n<18%nxdfIu=nr0ElurzQ6oRgfmQwGeV zu#60tOpYbhBrEi8S(79EEfb_79KNrtM_9)PvjIgtE7}=rUeoP}II?ZfbZk!LqH|AQ zP{x94?2_}*V1&f6IY*_3Ms=|2E7X@T(lX1w_sMRsE&*$~IH8`O3lv}4oT>`uVx4P{fZzxRKXwk!YZBbp+WRJ3;sGp98 zqd0ni*F&;?HydM2vTTg_{K;a!mB|aG-=$0^=FA!946C!rB7eNCHgY>mogZY5lPdn8dhufVF4XZUpb=suE zVU8+NRL8sgQ8r1aqk*V`4j)A5oH>&(oIwDcQRcYMj2L*b;dfrf1+iHvL$4mO5Y|jD0igp?uor5Yfo%?>O!*#F+ z5ljy-XDeiDgb!jStQZ6`F_emv?GOmV($OOjO6Q**82;*=7oio}Ui`&-FG>H9e*e1~)&7SqI~x1|?g$7@HPIUx;5hfegr`Z}z^UIiohl6Mu0jtUMXfm8Oal)1kl#TO{5v!Xupxx89Ez;t0KXuXE%5OblO-lLfg0E+|?$y5{0ixEZX_T`3c(gYw`6fTGYZ@`+oHT zF6~;ES1Wv0FWp5JV~2*@=MFGg_J4pP+U7LDpOrN zR&wJ9Pb)c@NCs_@lkGvn*};ZE=3^xjSphR2i~ze32}eQ^TvejS(0`%F$Ot{!9TzAP zB;+~hQKBq)wEqW9lEvKRUFs4C%pQyz00-|2+~BuHBAw!xknFO7!ncBtVZcXlA>UP&vY+pt2)^C!7?b z`r_=Fk|J|)9O?pXS15UcRMFTNu`;lA^M88hgzIKTq^*5*jjOQSQ+>aG{R#L;WJ104 zjO1L4OpMpD6GHRRryF@!TA~U|wQXDR^_MrRh1B%Z4?N5k{#}+-g|R+TT3NI$Ffe`i z3w#jKdNs(wj3}7+jhao`o!Xtc{|S8&rn>0an(1LotD(X-Yi`zW4}YY2FD&QEQ=-1= z8gX{{vU03^Z!+zc&-mGE#2NM_cFew4utdXp4MF(RISWpt(`vEOT{QrgiALbA)-#%L zFzTjqE;ozL9r3t*?pc%^Gc@MhOj+VDiQxpEsI8tA9Dtjj1xy)(F|{?BlkfFx89eP| z-s?g5c5fMU4msJuAvt?lj<%X=8B}3QQ7}0Zr~XWj>^qJY)~r>AqcV^p%^^c@I#9>Z zP>?CK3z$(A5z%xI3LErvTr(ZUqH2vQNlXWv$v?fwJBWLVLTSX$v?$5V%J3;XQk*9# z`JQsBxf03u!_lNqITwh>;fwMLWxb^uPe(DF?Vm9IJW*cVh?PK@91U-553>&c`r6^kbN59P(d+ zH0Rc(c*`4hH|DUIfC|#INw2b`A;9!H+J*SyX{-wlKw30Vbj<8G%{T2f9W)Upbn0o) z&3PEH~A~bF6rTi7oPh{cFDq;rfmecbe~MS9%KXjRIw!maECZ|Iy=qX5S!(E49wwLj~s>9eXsjJ@O|L_ z&hnjAt+uGGE{n?=wM4BdTCJv#k*x-uKuuXvPIJ3it+kq<&+Xsr76*oJ63f-BE8ujw zl4fM2yID4dj+C2qQG{RXw5Z)qt(rm>whR{QQX7jR^w1Aw!wMcf^g}gN55NhcJ}}9@ z)sKmO2oTN5v=Yb+Au?cHg`Pr>^UI#1x1PT!jZRKxHEdx{kn(h@Tu87^=39Vdud)yX z85)rJwp5a*P)4Uw5bn0(>I8=xes3`Xg-mkUD8-t(J>`5E6d`Z1W__*jr;YwhS{mb* zD6xAS0vxKDa@U;Yg&a;~+w5a(I!xfzY^3kpR$|F*Z6uGdRu6wgtwUJXz@y@QWopO( z23lPK5P(rl4$09PO-;q@s>@u<-0NK%-1mTc;BMn?W*^uGAJHE)9$+2`KO!6khvD8gryny4vDr(9Z%O6`t^*{ZTQ8f|&KvZkUY970wCR#Bc#sp}jL zHaq~^4hH}W+2>&g*b3C}6;TraHCt=28dq)I0Q}=2ZuMMcVj7KfcY$>lQ%# zBH>h*mS&YG2d8j8f2&vj@wi=i^J>ixdd0aJsSzdgjjj4P*Y*T39r>_vtd>?%nE{qV95%$yj&Ib zR(P}7kk%W(X}5YzGKK?peMQ(x5OHO%uD1w6%#7{~WwS{$hS{>^Lda%OVRU@7RPXm` z)L4B!5vSv9L%nNk!vM68kU=pUE`Nd5<>bm@(z-HrT1*plC}|^3z##Wq{vf|QpFsSb zK%-bZD*G+RF`xc_qyzZbXB!jb!IoNeliYoYl0UF#QO%V)b| zR*m`nKV{9@q`Mt{IVIJ;O!^JHxnbJm!rqy!bAR>sDjQenA18&v>b4)jov`!$WrQH$ zYJJiZv9i)h$kvDL=9E#5#usx&u9I#poV=u57mi|VIB+-2O7ArL%biKHmXu?kDKwrx zF3s=k7dzv0E#1nta>T9nTf-PlApxB%o}yad{O=d_;2~QRgmnBXNLNQoP&kI+P;GG z%kGTg#n%>7L=?x~p*Z&SnZDyno`VwdATC5cK+hUz6aKq|y*L1(3ZCyi4-Zz|E>%ct){mjW zVY>MyxCq|-_LYR7_zQ;8yqFv_zC#?l9^7QO*MK|aq<<}dFlN>uy%saeECVcBjRvYI zn6#=flQwCgwGe2mRscoD&1uZDOh{#k8oQ`+bM!1~78tKi!uF@+_Sk1XmWZD5386qSxl8|S#p$4)f?jpz+;Bmmg z#ZUmH)hK66t5HlBFGsN;z1xXpwikX$F8%I)^ib5d7U@Meq{Jwi#o%b)^m5;zo`Gft zbDe)MZ6x0h`=u9=^y0}& z%WErTVi*Sa@bF^PFOO(|^~h==0YUEK4$JFl(1T0seN2d+(S2aCd}r72-|(C9!^k%k zK_im8OTHG)2^bY=Q(-#(LCu4;k82*+KBj*`{g(Re%-dxjt3NI~RenZ2SZ16_C(Gjw zkKgJCS)&meJ1f%FwdF~p2B@sGH5;bVW2?3F*m`Xv)mR&0w3)`ZSiUiqi64w(@c|5o znr3Ij-4bjfTEqbiKGobLhY5xXa>9E4O9XNue_D>m4HlOqC@D!wTIb1;1+VLKAfRzJ7|90O2TT#GZ`AF9it95H z%qpf?tm%QHsY=yVpPx1~xCU;);zD}%noAO%akVRY z^OsFu5^ZMP8C@-1W7m%fwLNf6>y6T?I(x+6u8g>ZS@lhU>Ww|vU@<;M4G-cklIwsI zc?~}hDAVVat8v;cqvlt?v);>dFY~|bycfBk9{o_?11nQuAXXUQ#*ZiP;2l1~U zE2>n5-DQccf4%me^y^tkf~zY(*PHtFJ@*u5HcMC$gABr;3qJ^gfCrC@owqn1rjMIG zFn!?sqv=Z@Ri#C~l6JXzxn`Mdnf+?@M$Of>tL@q-?Ql{W#^J;qP79^cllm+g?7NV$ z-{{fuSQGDeB8U!!nHIlHt>I8{j@Mi(6X{@2L%wiwWO6}q*h>j1ZZDF;0Ghpw01O=3 zX-qzg0E_{>pkyI33c)FHz|obHLZp;=cp)RDm_f&5S0722@l`sVKEPG4edxelODCu6 zJhcrQcmL?GQ1wOuJoH6s130E@|a+ve)h3N~f!e7Zgwc4u{F z|CH36AQM($5W@nkTDw+t%R^L6taHKs-xQv`a=|T4*X+9IZv3f$Eeyxjr!kzf=~x|U zz?Ri+9CQAcjg=7Nu(C1gP4#RFQU`tqbLStM8-oX~U-8*b_nt?xH#+Ew=N9vqt@NdI`P2bewqI{2uY8`j1AsUS7`P z#MK&1t-)1}S_X%BJFfD07J4nzovNRxFjb>o>vbZ7+{^q@12r=B`tgq#8G663l%Zg* z9U3gr?_f#37DhN+o@*`=aoperqzxI=RvrbWtDshaoM2aWJ1qjm%dlnrg`c5Ww+P!u|NFug7nGQ2Z7J{%oy>9PMRR0)RkkuWlAtd0uN)eqR9+~r15-@K=g33)ie^PwG=u^Nj! zxZtW^x8jrI{<_MwFRL&02aFnT=7&FiVOwXYwPlRXZ1P9Lvlm%?W$Wkvxu?A2>Q}HX zIY%GS>la8jmw{(Qd#fG(+X2-M)`77!lkt~fe1pe70MChIf-?P<1ww3t#~0ue4W3MZ z9}&ATK9Pv=tO-{|$_U101d*{esw{&%(-5DLlVrd%6-*?NA#izgluRT=fsba%jEdL` zN?e)C>jB05jIdyL3ic54CY@nN#0N+6Gi0fnyJ)5FSl9p^MP=^z-z$MjC(Ki_-Wsh< zpS;es0Bb0pwd5yb0_EeSi8Cu2=S;Y>a=O&+(T=$SKUPzPV}T3rb22qFW`R+t968nMGB@e2WBFd71eF zTUX&q=OQJQB6obG+mGdwiTe6PGQV|2joMhIwN)ezwt8qR*DJAP_1Jpl>N%69>MHn2 zqbo)j{DxYuj-m?{YwPG@pN4lzB792eQySbP3Q5`%uuXD%Ja=+By*6XxxwI6OJHt_i zg;7JoDtDv|_31Dl%2;i3f>1{3&6hG8%FHJ(t{KU_xmbVt!f~Ssjk3UmjWM$i7$asM zG{p_bBo3q9NU|{+@{2o<6>X8~s*7}L1GJB3=pa`8!w3q$S|~Kw^$@ZdL&`bbzc7_2 zl9T>8?#grsfiX5A-}LW)UelSpEPMxcXG^1o@_RJA$)=*uFFMfsbiRVi%D)$Ycx9Me z18Tsp#lE)CtU#abCfg&nuS4I3C?X&P1g<)e<7QiDmt7WEUiN@Z!v%x2W^0hQS^1zC zoNDIEt+w(qTbZ@Iyo?WW$YK|KMHVsw9|Beds$;m|smVn&wsLeG_wr>}q{6!(vNdun zf=B9dGB0Ya<(Zm*_S7+?9At*7tCek*)2ESd!o1gWTrpKfb8wWL3ZyHB2G5VA;V5}H zY=UL-#VnlfrB+;^B!sgmTuix9g6Kx*D28)#r97NcZUM2NzAR<&nC4v8k)%{OwE1kQ zI=FZBj-QV?dh6|zrDopb(Ws@jvc67<^H3F2@vqwj4D&eMP9v#4|Ll-EpmXSOkB91d zs`{@38!6U1LxZQ5{2jINgj{7 zb}Ig>CRbdg;zD_y_1xr{S;|w&GgMXLkAVr`JJD0^stjPJz@r9iVr*g_W5zJu{t0+P zF4gRby#&u8<6ngGG*KRn;`ks@2Rsu3p-`PC8sKvco-qNwv(D2U;B^6V66(^O#^z3U zPVDSx7IW39klRWUy4DF6V@2y&N5xpb-(jRCbmzy!qMAvvAkiYOOW&4yH-&Yi24K6W zZxgF?na111cSWp2L}#9DBP@~545^?pF{8-fzM;Mz`PbM+3&nt;5;ByR>2jlE&q9;vrIOS2xjdMZ5Fo1T(zk98qTu1mTl1aVBMw7)rC*S*Fm|Vno2BaAM98=-XX1E593^#bVKu{*eY#`*R^8^As@_j1g zAuLj*F`Wu~ECfzv&BoYRN5n{FE4YBBlByKKnM%U#K_mBUwKOb9I%h9T`PE z%Hakj?K>~?uSpKpUl;(ghbSt?NYu$jodPm=*@!E4K{@uU`966!KzUUD59K&I8Zg{m ztFw$zTMV%W=27_E$_dk2YA&y9k*0Uni8IF32dl+asSAGWQCH1HRLmky=5-Z*jry(` zf%3@sSEW>k2t6K6{Sx@Zj5Se5RpH%^a?FE}#6jioACS$sUs*%#0(XkZ*VJFAv3r>Z z?0c9e?B8lgJFpTC$8^pAYwcOXqpGgm`<$6`&OFY%UzyjL_aifznapI8Or9snB!uva z5P2Fv5CIi2fI+MZ(iRY_;0qA>RJ=tkwlxWl8<1ObZHl%Rt?jK=xm5c=wAb?K*P{Kb z$#B;`Gl9_0AN_G>zP;Bzd+oFLIcu-|UTd8moxF~-Wy&blkl|Ei=6sn-4oijO4sBkm z!YZ;_aM()=HAC*=WU-+*vhqPS)`pOkHixiY0U;v`Aq}#Hutf%*PH6}s69e8=fgx!w z(Q5~mMUsvf%AzYe?^Tq)rfU54(^xk4#z^5yyrAx;gS+n7wExi{wHF%;WAD9QIE(G? z;HRq=eK=G&^VSPL!s!OWLkek*Jc!i5MWf<^YDKkoPuY{f!@)!0^WiVToH8g6cLnL^ z1GqhaeVne1cV^B85^c`(2Y#DJFHIU8YL$|fCv=Hurb5uGm2%4M;F|obgQb>7RhhI# zo)1aeBw05wk$yynb%c$I`rQ-TBn{HoD>0D%szInLhEvE2HV~m%IwB8YHUOS1Oob2= zby;pZ)D0H1aWwKS=`|$P$?psvlpR!f~y{FMN zr{G*LuOrj5`rfxOe)CqH(H^P6&(Df?f4X<@ES)#1Bdszllc~NIv-U9O^y0dk@V)Ks z%8!5l77-T0NCCti1Ug624srUZ8`t=-5XGd|i^A~LMusnyN7fAUm`8O!!A-{k0Ur#; zQIpH)+2X<;SIR}Xo^a{HRu%@UEp}{=8N-3%a^UF8z+mOcGriJqG%6iT&p3bPVqb5` z=*P9pihCzXJYJdgm)Ngl=A|U{LAtmavsdiBRe0pcx~5xZcA1&&GBc%_nVFfH*=1&C zW@bpc%*yRnelY@tln$&-hF1)*>mP@E|d!WiVTGm%8v?o@B!)pen&i3087lM zuKX@#E!(sQ1z)aC*T02=qm>m^XTthtLShibehPD2ydnm0V9ZK z>HG_aDLbM|2t+=$udl_U=2z_5+;XJ3k^@Ps{5(`5yYFvr{e$ z;PZkEYRXS~A2nm%*1Ua1cJm3y`M=_EG&He=1 z#K%o~A@um&=>(@u$I#mTbZ77Oeex>d=$D)R^!9nVc8<0nT`6{(lIfW23dK%Oc0Kw% zVssP}nm9uwOBrx3IOJ5w5TQeCd5~|2?+Yck-n0U}oaVv2$7=zX`NR&OuX6T~^^D#* zHAIK2M2KLH2y%FoypDR3YhbLHo#6BFH?G6p*e^(OkisT9M2qfHN~~UzpAS1-GG}B4 zEpFSaL&1X>1V#_zC!lWZ{rs=NFwr{7w-*_6ks2$g#^xnzWSKdR;MlekS4M3VaX7RBi4$6Xq6W zYSv1RXcK)W{Rpx#9aPP01?D+cl6jyO_v}7MPcy`hjvDCfOXXG*H*KEnp3k0(5Va8J zs_Rl4Qg2cx)JtMRV&l5!XOU;A_~#TeNz2suH~a9tz1a)>4bEhW?rMg=c1`*6CMAr^ za^so517Sl#nBjMTJId8|i}Gzm9yVik{Gk>1N1N|VS*m$2x*x5w$Jg>n8CsHS1uib! zl5V<*GRz6W*Huuh0yTvQ{fw!D#Fq}LG6h~Ql=cW(Ld%-iQ5bx?$*?7%G@a!+d%C{Xtt|_T;e) z=h*C)$q`BoxdBVgBofmbQ6F5{HQ7i;h$v}I1Xbas@98d!xl()Z=u}~Iza~~?&B~Qx zgIsB0n4IA)#W9prR3?}nzv}6WQfIjdfF>^0C@YCe81Zms!*TkcCj)jv(v6jQi18}rbI-v*QH|c^#P3g@BY(XE zH;oQAw)qZC0s-~yGm3>eLgjKQG6n(CLa0VkN!Fjf=VX-oE2Ps0Zo{;<6@Q%dvL!xg zg%^h59(ycY5jU|QGbDTJgdk%NlvnU$bQfy0Wm0!4A4zVzMvRrywVqR=vt%&Ce2w26 zTOHVkbteuF%Z{oRYRQ+0@rmWuso$%c3glV!r72GSlMTOZM7k7zHHvH@Xx zs#W3`7XrEs87fD(t_DYFQ;D&WrGP&vQ;L;pkDoT5x}V;C$K6)ko*WMxm!{I;427ZA zD$eF*fn$}8Z12^H#>tw)V^k@cQ7d?+KNqm9=kX#IAN!!xb(2&VAAfKLF=w)v5U&vI zBROY#rX^@5LGpvu4(lr?#XQ%TeHkb@sb3UW;&grX!eOd4$!zA%sgPPNs5VSC)9ljY zZ^|vMSz?KmVh*vYwvou?b8k^6C1?;A62*I*F%RD521JQw3c z3$CeDQG&Cei_T4>s^S>sYLo^lzgj|hzS%GonMN+dCMIbGk%wT~IH}Q9)xZ<1&2od! zU`WsMMN#9t0hU-;V9Sj6a28rMo!nZjp>Cg|o zR%5e3CoZZnGsb2QD?Di*ef8E9F}4$z%CE8>i1$-B^>QQtO{AlbK)&2VFFuOR?t1t} zsVX`pf*5zI>)6^yosr5%#J$+Z?#GBn`<={54#bh(Y?9l2tHVS2vd0LZcrSRGFVSAZ((=nnLn^Y&LegY5Iit zl$6{Ph^b*+na)1qb*cB_5ze;i?C2{}*Q!~zC?*qqN1XxYbv|g>8k2#+#kcm?7RS1M zSut^ZSA{q;AefeqgFl40f~0ZHEL3rZPw$_{Bk?XYW?CZ_U|>lpsh2Am)F@HkyNyMInUMgTwm)xHa-Tj7oMn=86B+kmS%JCMRd96 z@Odj_C56=*hYqHQH4gL3G=;&HP9^_}bZjNGU_kZ|pI`r}ky-=mejUtg%+7_uh%t+> z@4>Qqa*xANv)U%Zz|CP-Gcdt2t|3Ie#zlLn#*Zzrxu@+Ci&wrI7GfG@#$sU`NqOLO zZq^jbm^sY_ac3zG0zOm#&n&AhN=)(SmiksM#6ly|Bv%*%f>0`VywAXI(swx5M&QS+ zbaYIT_+pH7>OutZhHL#IV2kK zArM$rZ4z{*?fY9d!b^Uw8#Ccbnu|=msBOR=->^LF*_G;X-*vYd8Lz=c>ldg2)+460 zy6#Tk%yYf#3n#W*J~v-1*CdS?Jz@4NFA%7y<9XFPTqW!iF?4B@Zc5pfM09Dd!H|ul zg{ts$j+F>X<-GoQ#7-t#tf5%Re}24_&SLNK@F3lM9_Rqz^K~Ab6N0*GGx(ACAsiNo zf{q!#^z2+XA;esLs+J5C7eYacB?F5Xq;;Y7W;0q`Qb@2hK}CqM1hOx#ICYSo z-JGcoMTf_7s-O!QQQ$VNayR5Wtu-+fRCn#n(TJ5X=uzVcx06|>N{`r22a>}SpS%m* zjz_?tY+ybb9pSlamLhm&3A+m7IYEpIT@w+`hfN5ImY1?+32_36L$YvAaGCX53$s^K zB+Sg!jhaA&q)>w^*Q}JwyJ0%1<#F~;?7Y4h+5EJ0sZ2?4^bh;(pF)#^~)J4}AzUctVusG3gGzHYLQv!vkx8%L~gl1lYfPd3oEi*$;x}0p}ay z9OCR?`mwt=_!_QWqN;Hl=|sQh`MSUG*?!g8+MPr*cdTaB=h6Aq$LV9?EBTgOgZBYV z)WUbhNsC`YU~wO}X>0shC^?o{X_~Kbia#@wTnPDS^aZ;~$X7*IrLo6UTa?2~zf~{P zcDVyw5}2GbzGxD$Pmzs(41&LLRD*9(=-5$q!+F+8meEoWW>|NYtXD5Ke-Bc2w#@;2 zCwNlinC0L;R<>NRQFR$!MeMJuo5j5hORTxJ0ook9skRY}m9j>QHguY`s~ZC-;Eane zS-#vnsE-XFMkX{#F4kR!DR_)HXV$jI#QyvH7XXFRW<&?t}>T8P+_c9 z@^RvJ0?V^UscFhy$Tu_{gscf=Z%A7Jm8s`Q*Lpud*3N)3SV|~-#AZs~6o4H3Opimp z#s{B%%ACSk4sOP}QbTV7OkFXdUW7Q?QZfV2&)1zTm=AW7Qf#!?CWR68P3Lejf17O% zP8p7RV^SWrR$LnQk$u}!rb&EGC*E1K%sO?Ky=o3_YS2GUM3L z(ZEW020K!JSPsggpJD$RaF^}!cFa%E<_(%S$K@9EYTK$JQ%n&r2myV`PeV)h8t=0Q zYqs4Y^UigRg8k)~QEl4OMT#8%q9|m-(1jsMxY3bNOA=o!s!vt;)orCkk+gUVc4^~N zi!vu!kOx>Re}FZ3%cpE~9k^CR2V@6pXvA3pQ1|p*MW?%4VGHgKtQ`LXhw%dv{#JNT z@|8TIxV!JLzod?^Ka(=VZ@~W|>I2fli0hCR-=IK0Bzo6Eb)wcr+%$Y9h7fSlhZwXb z$}3VizlQGR@l>bu!x6wRKr#5z3;pvuOVR^d?~NGIn;i5w5gvG^2eFI}ItN4>)GTVM z2E=0n3SFRr9;X052gR(77`R#WM1} zNrvtuftSKQUI)aseIY*WR3NMRpSbToihYKMPQG9>cfD)2YaG#JIpW}M1003@tdCE z^l=+;1?DbTt5w&fce(wDY582_ATv+xyAssI+xm1y>01gFMaT1wV<#=yEq?8q823Gc zG9nPs4iLm|pCOvy#8+f-DNcF)Wdh_YHiE#RYGjb(l__)=JTWY`Mhv4xp=fxzfGRsm!-(V^+E$X1$;4VEhXr_bsv~Nck}tog zsdQn`0N~QsNspvFU{idh=z1q}&}EmbJYeDEKgSAe8-w$H9wb0rd8F;yqq7mbgMIc} z9Jsi?%;J5OzYHqJMQV}c!(iKZ_1^fZ4cJ=$vE+JF_tOgv1e`9DAZfz+HZNulC0t_bYpstC#l23%4tG_bY(=)h4}f2I~G*=fLRaotIc^ z!iDoi5(x0P^L@e%1V??m3K>|sfk*ohW+7TVI`|!^P_OMz-MsTRiPJ{I4@KqC7KFBf zijlqE3VMNA4pM>czmkKuIFh6LZBN27b0Mbz^DYG69ciQ_zH5gv9}qXYm74>n3wtw^ zaxIe&psTU0yx^zzgs%W07`%u@;D|ylpG?WV5t6FG76Xdilwuk&h|*01@Vd zxfndffo9i3`fFxAUg1NO7BO-i@;;e9a;g4j`!8bS!0QZy>B1r+P8qCjhnEmko$!Je+{1!Zm<9D~>O1LS&dxa9pF{bwp7&vMTg zd%bDK2#d#ua)~@wXezyScVsWFIy}#wega|ZR^9_VJ=Z0|AsBeq_dG%os8#R%&jd*7 zyI~j+QN^G62v+VD^k3Lac^yisyTiJP8^a{be2S}W&$j&SC=P9ltKF2;xT&nOT4kxD zI<;SpIcrXOezp9Xn*-(^X#bN+iQ2}V{T zI#y;*A|?PM6A=?LfcdX12{8#7B{9W+Ol+=XZ)<4x@4zGg%uN3RlVD^03rymVdCUI- zlVE23517OsFou6Z9sXGV31aw@neYb~;&+h5@BD;6K@z{`{~u@s*gr7|{|b;`{!cuH zKhuA*7Xa*x{|bbF{g3oNunT{d|0na|PXGnrA54ee0TTZTw)kxu_IDu0zd|N{KPJaN z>iuVZelO?GvVT9PKkCQM`e)r>|A1X^F#fUpdA`5z|9xTlJ;wgeWBiT;`H#B&1C;SQ zO5*o@e*!N!f4lmB)|Z9tf2{w^`vSR{r3?v;0Q^Uv}w2srB%jgOBSwKEXrULgwfLgZ$F72LONShh2+R<{hA4e(9;i z^TwBl@L2op!Ia?SYbHS^fZy)oZR+i2@4At1@o4p1l~N{*Yt{tOLQxoGJgjCqM7}Lapui`OZi~<=mq_Wz%@{z?G{-3zgbh zsBE9xkk#7qXsD4Pe#~zvG!tcDxSc6WbK03r%TRxF1K_vdY0AS;zt^5HaJBhiOc)sM zRRPqnnIB&?GORiUYM7+dgLp)=iEI801o0LRfP*|u5&J}s#b{meNr%zk-r%?J3O-!E zh>9h+Mv&)C3~hB^r)PW!TRH&W#1LWsOf}|{wT4I0@8MD0J{$}^RnlIZi8XK1-*P`R zATL^M8o*iWAgYw?V9`~3XioK0$3R=N+9TNqv(ZCkni|Hy)zMYYbaq{GI!Bcwk^Gj- zxg`DVb4Ifd=SP+(nqkcTnacg|U%}ujvjQd{8^r9#NHOqyQHaB!#)Ip45 zRWV0gCprEj8rz@wW6hGZHa0|cGI=gg-TX&Lb9$BBPhlgbWsF7NU#gCeSQ_g#Uq+d< zM0l|leV>vm_AG?qs<@ot=*DUhck^irj}c(aknhIor8cZ5>+knv^bJ_}>9j{9XV3pUD(|JY@cbOz}r|{68a8aQ=l%@kb}|S26|Q@45|+ zzmh4~0RIk{;)gn%gYr_w`&3(d;ww@!)900C9T;L`6S$jtCU8JPj0w`dVQxY=9Q&|= zakT9vSFg}^ynuild~&lwrhnKhE!_!;zK+ud8G_~LG^+`!kTUbP6-ER}VRkY);aoK9 z9_KpZX+!sR7H;k;mV>Vc{2zYr2W{dHD5QnpR-_TbY5*0sgp^W)Jx>>JSL>)9b11({ z_Wd5xM0}b|HFlnb>tgI1>%%qm+Rggy#%DM`|3KOJqw1Opt@pm@&>@is?0kwvBVtFD z*SUO5e*(?5=?1=cz&Geyuj$2wm<3f8xu^U!fh^q0MS$j8eE#5BKE8D&j@3Ti<^uFH zw1xWIYGx^$dRCNR9&sdh6q{JTA8kB#&UY%cU9B+z_35)&CMk-@9C1JS+wLJCt`ivN zi(ZUw{IFoa(&6LY9JN>U@C@$vA?(DXkzyqnID`f|v~E3IB0 zw+C#ircoo*#`R8JuUD0hn|523mY=ITqDdX-{K{j$JMvQ-a<2epBkJc5<;w#!U4tvy z1Ue(@Wyr;W?w^K7BGpuG{v0kbVM9f?pl^|S1&uD)iC45iDfN(UneLJmvjj)}>(n2# z`;k7-AEmQAT4C^K`Nr{nS(^n9hj7m*Ov{>F%F7z5Q?MG?+R^v$+{0hGQ}_ou9??gs zdFi@rq)xpV?k|8-2`RK=g0XP%22pR3Yub#p-BDDN!;rI68f6hsnrU;CLj&LUm|y zRk6p(3(=Vg;rf%9*->4!zMqGQN3AF|XEy;iPPtDtzv(yV1LscVPnkQ$YESgWctBL) zuG_xyZB0BBR=j4jO0`?z*o`qg$zaN)?Ygun=+XMg^I63qRDak6-sj!GojIQ{4kO#r44DUYF<3J~ZEzJj?oCKyH_8FXIJ*%D;B`=X}{Jo@j zah^n-6k$OujSTV}$Q*;LxoIN0XS)uaeLP{BA0=VZ)c1qk@%@B-`f<5&f^kz7Q)DZa zjPuu$?O@k!$eO*HPAEXX1M@FU{$Z^{YdcYu&kZW`USJJrVP)@Yr^HhG#!v2=^j5c| zZ8ED-ELXhi=pi0PTYZh_#Ty<@lgd=wLzpvR$q`w!Y;GZ^z_?wEHi#j*A{iHMx6=D9 zXZ30RW12oX1idXd;Fk2juN92-&jiQ%hTWabqsqBzf!Zv~x( zwj`h7CAa7#Q%@-iN$hJ$e>#ci-*n*NX!8JqpOSplmyx>)r_7ITbf4El+vXw=V*R@o zFTxw7#EG<4wQylno(pQ1!lrk++9cSYCrIQ($76%Q~Eps+I*YwP${Nv;$*|4kn7T}n`u7o^gr8_eoy z(SdTTITV4yWh;i#N(Tg})Ha43=v3}KdQc_#W-;PZk6-Of z`8spV_L%TSv}-UM##&_pe`DIVgjPHFsf{Dv@#`{zkqbQrkK6=LTdb0YF7@$#I0s4J z9^#!{B!>*w2DXkKz%c`|r}s%N(9SvG+_ z1n9l}RAN!hy@Iv^i!48l`Ge1-UpV+F#)W5+z8i7CQ(e%>2V|X`zVXEcOzC|l_Y6&a zng&7tB{7(j&7S6*uHnF`E7yvCKQOO> zSC_T7V6pC(_v@;~+yk@|zs{WF!;fkJ;zJ^o;$0YHR3dYjlQ2JE_h`$l%QX+^EOolF9gLhE7pL`&-j3}j zv|on)sym-SXmPgS8Lhvf3M@YIgUR4*LC3RpgY>d>6ZFDI3Oqr|D{mq+ECo&cGK>{! zrkQYyG2xE7@%U0GJ)Ay~M*JSsiQ^K@F!ETz*IgjpIcd$<{k@8jU`|}vsf>^P8XfDv zfG?~r7(+Bo?NKU4(`N{VCoiYKtO2O}?4d$P*Dd&?ndL{bKI>YpWpfkTS}E%qIs01V z&WdJd(6UAg-{PThDnr4vTk-UwmW4AqYy$s|>FTiAp>Zf5;vE9)8hwZ@Lx?TZK=W9= zt>Q8}vkeVFKgr{6Jy874F^bP_eniVByDW~tN9L-;WNmY@8UK6p8{=9t?HW7P+C83h zzjZ^*&DKCCUkzAE>i{;d)hwNSSr%tP0dzC4N-f^pG5D!TNGZ4ATJ|=(61p|VgoNTS|`4xTA z{^kfAwO;CADhn^+*E~^)X@nt9>`f#HRiCTSvHgEo4TDLsaHxa2iNtdP><#kzlwp!&YuR{V7v zyH4jSTAA;DkmkZ$ckC(lAeh1h5hb>7j8i`H+RP#UI`bvb3HIP@2^}gqDc5u?ii2q6 zYi7h#Vlusa_jO&L$ex8m({)n5hO}yKf9_i!@0dIALUPLL%QpLB%j0Z{xPt^iaBkBk ze934P@Qor_%syZ?KCGg0zT?+AjA@E@oYKi+wL?q0@Xkb9KF=q83@GQ65JABa8jMEq zgjVr&<&)?r+Zx9(He5{YBu8sD9QS3Eopvpwb$jWUDx1+O%du}f<=h1_2(b#?5YpnR zB@!G})JZ|@PcVA2WVSYC5?TR?CqLAZ4LTd@*PMFx2&4nPY%vcfnmTGR(_yCyE(R=` zoP4q_WZSfA%B&%$X-RaA$LKi3r8<8R+&2L+OTv=XiC%xK`Z+OXDF)0D|321IWH0Oo z?*r$B`z(BzH4P}N6So(Q8>A<|?C|yswm+6+FU@)!ejkeYs{LVutG~ssJ*9n@0g1*Q zu)!kH2`9RebWdFKuyTRxVL!I3^r0I%_Re&WmG{=O>Ht_-E2U+5_UQzO_+?_p#$qOE zn6=V!X?=ygy^i4F|9P1(@+7D^SSQZ*l)q&mAu%YmCP*&znW2B#ggONX<|eYyRzUfEb;CRwncy4QRC~FYC9;~Vam+C+Si(9I%ke{cb(IZ;qgixHC>weN^-9m z)t$I=hbR1vv#^VPKHB9odOrX@A}zEl;r+tnf}4KFJA}vA`+|&)i~6RW)S8U2^TN}3 z1$O1-%&r&u(~Ur0?d4TEn=_1Nvlp|IW>D7~>BWuvm$Fn0W2Xn!>Vd}hy#Bsdg}+nX ze===Z*a2++jB@_BEm*++FF0QbRe23rjsG2-@9&1+UmRG#e|BJ582{RH>TMaNGb)L}NrxOHbXU7y2gMYP9I^G9Ev$O%fld9ee`shx?Q93llbTc!* zFOYxJp5jY*k2ioK!{O!bLs0|fbCXXUJCGgNda1Cjt%#H~dMu{~w;eDktWlG^WgLAO z73)yPJolhlR>d2<5$Ra7EdO3V{1}6sU9PArj%eKM4Y)Egi?5yaxnRDSYo4m?iLIjx zjBVn3tu+Z6K#2*#%FSObJzBkKQ#N>rqn22CU@3=I7)5QP9q~ZLlNyEbUKQ(E7-}o1g=8tCli$}x4@^=l( z`d5#JmF3^@Xlm3vUC=~vJ}TP}B=Sc^6on)X39<%*Wtamf1A~jfcoWEkgrK=d`O=BO z6D`2OiwX@C1hEYI;26+cy4)5@SVT6#RWybcR6VbCu5{|y2&RmebRl##XJ4vv{YQ4< z-i%+oRkt*^R2Mcxqr)K;F(p-2*O9el^fIAGm9aE`IBJigjXYDCRy?A$c*5u4C#x%#$H=d6QqWmmmceio8MLOc?1Nf1syxgejFX?aEGh&yJ=p_T{97Al^ysUQ`; z9Aa0uW@7X;XWEI8^L|_N#b|K6#rkptU7|=YTgcdHlizXr_AQ66Y~cRw9#ciE%Fyxq zJ1zte6*pX&eXq})o6cs_{F&z7bwkJiqZz_NhQ4jB%=;>>xX zUuJat#F^3pQ-~%>2U(zmp~@VOkL1xN?gA`V62Kx&1x@K*&kxvFcRX1 z;(0B5pGwQ|Bw_ZiNzal{(VxXjZc_IgR61nK%bxn6~_^!NzEI421KR~!38t@pY z%))0%B4@_w>2GJpbyz^TDl>SwhyQK|Vcj(*l;7a7XXp;5Hf}Y%ouc3K9;}b34$|%d zu5A5%UeSFe#!{V1KrN$L#aBselL%7mU4OXKId1G9yZIeyu5GRJ_w+P=tiG3>a=jqF zIC>K{T#@1e%aki17bf$`Pk(}Ho!@fNPoi9}NXmn{5m)hgxa$kr5ze@CIDZHd&SvwO z6rh&afYO+we|Lsu(L|^+zN?0LaVCaq#IiQ0S(b7mU4v~++lb@x`qX9f**gQ@#2)l{ zS>6AlEy~*iW66^b;DP^BNFW+;qqaHB{V3Ku@D=Lfmt;gSY=u@N2(4wFi-ec*v%qsp zHXTD!UBU-t4@nQ{!{|q1TGS z1I$J4FRKm9^4M?Zm4Ev=3Mcmk&CYcav`D9N6bVSw#agNP&L`g7RVYV6)Qu2@zsVpq zv4&UrSsGg^j>x=}lz@yw^fa(4r4GYL@6U}@baLc}xcuNUIMzzkWhI68Dyk4?J+ThU z-Jj0F*8(|vFb=>Nvtnb55^aiC-B`i-EGpZ2!ZuxhyZs3fl8Z@#quD~rM${T3z8+e0 zr5(E=^rW;X=~@W*q&5)k@Ez~hgLotuM%HZgRHH5>W9?Cl_WXZ$|@~pgoRLSm#SHP8a8q4;|dSvvE)o}SBQDd#AvOc zDME1v@Jl(SvznX=31yGyYN=~cJPP@(O=11qgr(kBy9Hx6-aiMN;K<*GL`Zlc%zpc3 zMiCyXGZIx{$}^NTG5{|hTrkE?V=Kja&W%|`tDY;rv>gV6TjKY&!0-hK62U#?o(@jc zd@~r~@9Qr&n-S1XR>BtCf&C&&HhQ`s$?WWX6_&6+8PG0(7sifS)rSU2gmnhR#+9#1 zdSV5%*V2hvnuxPr(4t}2nRI4Eqq~wo+M9rHF|>nyp(AD9246vm$cEz=?T z;L|JIu>*n_+ee91E*y1@+t1Rkmd4r7JOQm0c+*%%Y;z`zNs6q2p7$NiLsWZFVDiiN zHV@WtgRya$NB<}Zp4@Gho+btYLS)Pf!AN=L=cZmPB(hOQ|Dr?_U4+<5>4!KZ(2cs6 z1hqktawWXFowca6(47wHT5bpR_)CP`*#XU%@f;IOEKV|SD>5nfQMSav#<}%e9I=5e zOa136+{VbrQa^RRGmR>%PgKZsR=_P2cME2mDf|64Q+L2^OZ;+R5D+LS0vWzKrC} zH~C!WsEon;u>(hBnl&tV41J<=lF=_v`hG?04_=%QzqVCAEZ-%ao@Yoq?FM?g!YVi0 z+nnsgo(xluTpzpmH#=X!`Sd{O4Mxr&+?4sD_nzJ@K6Y|>DOg7c&%FX(uMr*rJBVQ~ z8I6!{8i7EFT#lzt#^F49JBZ}mT4H7JkB&iw6^+LObN!;Sw)k|?QMj0{gY*L#zrAVB z>e(7$%T`|-5U(u`MpK924>c&6FJ`YCObo{21O;0(hS|C`+E*U8h2MOpH{2Wcg3fG59s;^b4xz0dw5KKNuUKjN+N+F*Z_@^u^(tH5Zo3! z;^jbM)isb3SOu>wxt7YN6dJ=O)Y&*s)Bzs$P$XcGE-nn--C{MaT}Jr<@?Rr3BU$<#{GAUo6K z1Vt7k9~VV7u0pj8sH#HAqB1WUqVv;w)a7!adcIE`s3h)ZN}>^NDvgT%0756Ja$A6( zrVvqNBcFUH$i+9qDqbUHYzoFVl6ZvP%Ax2;Ghc)n0A{61&YdKsK`>ZUKB0J`vY(#E zC4yERZBqTqubHViczYB+SsN z8Zo@~z05o(ud>gm?smPec}RKNatk(Su=9WqdeL``B)%edOnC}LH}mW6_W zceL>|l4hS)mn-ZYuJFaj?(byIpQCeF7@3*>8D;xFEsOsbBa{B3nf`ktlm4?VW?}g+ zx|sc+x|p5yUv=@{{l(3~@qcyk@7IRoZ*(!s|F$mve;K{-$Bp=}!kGR4lQ0JS7h%l# zH!aJ`_*Y@f1Ylw0_+K~lg0`o@{7_fk%9eec31DSwGt1=Sq(wZD*NLzfvLBlsnKQ;o zOh5ry0hvy#7>!8@j>H2KIl+raT{=?Dx-(bl4!Nn@OCjsvs$JG6wQ{K5GcRMq!E)>6 z1vtUm^Yr8EzW3y-5GApQv>h?16e+57w8JO{4O_S>Td%f%*hO* zob?tfW4P~6>CX6LE%~pDvsDLEFmxV1Cz$~@uB-oHtzwsDO6l~gXll!iAHBH}8$IK_HOqC$gltIR0Gu+>uXk&-Y>$P@|T zDaj~MYTA;4gJBe~GupD-#evC5lrTtugov=#@WerhKs019U_2RB?;%cN|1t>^Dk%_| z8)ip$O%gLhRPW13{F*E*x@jbn2|`;2p2(B$HMpmwqC`uA`yu1Abwh|^9qEcd>DONUBlP#*Fq&}=W zq7m>4=r27i9{(QY(Hu-~AP*CA=$>X&SfA zG5b|v8%fR_QmvRVB=mE{FM4xD3f(w)Bw09FuG%xpfqx@9^`Ja5nMhZd0Ij)V5v=j# zNH5==Wgw3h$_j2UjA^dwN;|e5()b6FwEqT)Q&T>1njt@<_QWb=F)X$cmN94ibt2o? z-Y#c@&=tF8-wvICHJc_}HHVxv6l2-h?g&|eT2(R$dt$P8u}|dBWr&wq%paGXTyxrr zzJfEP6}&IscYQ>wczX!2(s_hwl_%HBTuxB~GkuJvKg#?T9?K%Hn@3rAdP+&fn)k!- zIm^&fFsB4kQxsyJ6Kc?HtYBvoHpty5-29c!ru#|fH4j|Z!cY5o-9$IeXUrOztSC_`fvyRK6D z5#Yb2tY*bjsiP+B7$8POog?&(S_h1s;SkQ-9v%I3#wvehS z33h1y;!Q6mp9UCdm*rZ!u#ZvmWd-32d!KF751^(lCG5DAkV{+bpdG`EDIiR0lEKmP zcFbSuQH?W2M+UL@0A3QX6kBU0F-%>AO8yLHv}(e3obAPyLyd7L>2;eh7FvE2o~u!z zN~Y{uva`FoA0a7kknJTDa9B1QR0+ZnFMDrcLVqFj=+ zk#T;Xd#+Ndete$v%$M@4q?CtzGWl_U9F$+y(b2^n#4(p+JsJX86l1P1R4Af=0ROds z_*-q_*prQ`t?HOrQ=5fqWpgPPT3HHOJVKGMBFOwaz16t+59%Iy#L*NFIa4O>jd@Wz zvy?*RGU(tgdR>!Fozun;8k)eE604HEZmP7J^x3D|eq2NzGFaj|hJ4uA`(s_PJer@< zoGOK$N6R6ASi*eTDwbGQ8Pow8a8a){51VcX95%o`T!}Q82|66?r+pbZGTe4@}#oeE5?RD7C5{ zSkSnY;%SlkGxgZpO2+`7y68QDpJ=}@rg&F({dR~`97Xm97Nz))JHxoDL_JJOhR+7R z53{C5DI|z7d$PE$T8c;u_DL;dU1G8#HAIG}oSb>55KLLu+B-kMJ`z{VSm18Gg`(wxHd)Hxf^!3RxKy!c0>qaMGDH{wrrk*G&MUVW(rG`^ zfi6pf5I5xVxq#0%&o%~)l+-Q4VePYt3MS`7_~aoK_5R_BW7%1%+@!$Z#3Xo!@^M9| zVU@W%wYCXlRVwtQkUSGbS>39&%eUN<9u%uTG?OrT0SP;V{qP|=u*0~gb(I$ zv}6y=FQy0vF8KO^7>2kxN>&Cm--^NXV2G$f3J=yp?Ys*{?7m497x&V6sbGvADIVd^ z|4Q;&?eKo?KrrWElHATv@dKc0nE!;||H-=hKqYP?J1~G`+n6QjYW%M=Nofe)!0r(zoyU%i za_Tu`?r{DjP)`#%r|8K7q=C;$;|7%+sT5h&JQDn{?X)j}L_4}}8X9y*`5P9~kwYP5 z8n2~4PaI!$IYOzU1hpxJ{L?f*t=u&w6^@TCMj2%|E==oH^Oyr5RQw^5ma>~U1Uw^D z%(>jn^wE}c>@l!Kn6ehqBiSJO9lCO1nI>*3tIQ@fyk@QE(V-KcZ_SmMO59QuX)vrp z22e34@>nh3c}hDDy@0|R;J8R`CaZd{p?k)6xVxlb3xy1eK|GyODB93b(9Hj0Sc5z&@+<6yMcWI@pCBHa$G|d+ottTvqw&{ z1zifizNLQ)Nv=??e4oA#pb?;_h*W$IS!JPnHmEo>YHVQp#zMlMVF_h+2EiHa9~Yx# zo1TJmSfT29jgp#&s22K4?=wxD9FeKX0z35nfmU@!?^mt_%#`~kB9+5utLPRb1Yeej zte9}7vJ6@~8y<3W7(jd4^kA?>X~1GHTegbUh#pz*P#llv_|aAmICq78KCfpZwurh5 zrq;2GQ&-p1BF-qUVAd$0XONfT?dqaf^KNU7H9oGuTj{H}paOaOW~2ksxd1C&pVEqS zyIyHd2kLM2g#g^XTVJRqnK>gmS+P+hDMNC#0`r=IAs-tQvp(TeRbN54We)$s_Wdc| z#0JrIaTI04pd2BrvQa-aZb*Cez--9UIgG-{xbZ_qyyyoxgd$d#)8JY1%MN|i_c6_4mecrzJuk%$j?zUao*eY4?DT_;6F4|bf_PiyXWotAqo zb*6K^eosSs7s1#5aRe7n<*tLXLye_m_N|pS*HyLMHb1Jz&Gg=N3DcNQHjw=;XQ0S+ zF%vH|xV*Ld6%)%WJ!pFkq1#A#Id!n(Ji+XuR1_8z*2>8P_#VuGd?;o5!Zy; zm=%DE^V&BC=E1{yiIC|j9N=tHvT|&3$oE_6j4_zB?mi`DGOKOjlJ|2J`^uiS4j;~z zV5J}>bd!Y^G{P=P?0BNuH^ zMipY#=htXhIrH){?8`Jx(13qh!>&!DsHATz z3EULP;yBM>#0C&~nw@AG3rTlJ&6ysy)OeAcr=c49hm9(P6(#zMv#T<_4udzC-u6sK zYE=<etPRJKe^2-A4b0982<_) ze!nJX-%AMp9F&XqB(iIRaXZXNjh_W8+E}4rRn5YUviuG4RdSuATLNda`L@t8VkKf_ zk)}qS+)l0_Pb+egIgkJq~Ju;_j=O)zPtU-h_LWl)4fLULb8DW zxbE8PTRy5~TZ5n)W~HuHQ@ysQaso$|Bc}K(h9<>H37gm}M@3mB)xxM$*xk?GEWWZ8 zIUsL7%@!&eAqc5I(eCqN_J|^r)pzIQFf6iu@T-TK{p>GFG^fvtd$b6%J|$l^EfOY| zFA0}Smh}IHq{!*^D1JLEvie1Ey)h`oM6- z2zAaPwsg#^^<0)oa@ta7v(kA#2l1QBw?nstz}WoCF+tPJA=u$&zMiY}7iYwaSn(F0 zKZKawsIINFs70?rB@G=6G+M4>sK*tRJfMPrizLIZwZA*TMOj#o18z#+E@0?3CF9WD zJ(O-5Y^Kgm@(jMa$|3B=#RdggfqNeMzU1o+dv&&^>W-2o?Gcz+Y zGcz+YGcz+Yq?vhk&rF~0-Dl68K6mcJJlu!WgI1(+WrU=q_?Ny<#VLEhTkoZERb^IuTAS zos~SQxdoVP^+Q5g$O#H&hg*FU-&HcV50Kuakyj_}A$_SJ?KJClGQB@EJ;XZ6fF82c z7a=Z0qV)4YeAAdr3BN5HsQB;oUzt<1>8m*h5TJyYpG<66x-dsg-|evkyb^H>ad5D3 zN}-kp(K7P=G^FJ_Wv&&2i+&WBUrN%A{rg|yb3dtE6k;D~zc*m1tW4J|K9x+{0NE$=(9f9Rk6g|<4nT%aN zyd1Xt%EZNccspq*A|(pcKB*YBQwgl2L9nKt+T!#)rim1oOTjZ1fwONAn#_R^3CIC5xvDh-)q4%Rq0JBI5J1? z{#ct|M=I-vK5SE{e6)&5clVkuDnU8l)o0trOrPUtr+U*7YgV2Ah}irN9w6}OL#7js zq4!(z_hONmdc1DDQM`-#t|e4vS4e|em;&TcPA2CvUwp`Ra(rrl9ZMu04f>$tYV+r7 zG9bO7?y8#6_I27_%SCs3zuS|K?&o^)$M;N-HoEyoK!34gg4Zo%AxLMo0l3|TD1cjtJw3TK}-Woy5y*@L7~43#8gqJ%YxZ{IHij3QAI@N80KQP*c&s#jP(Zb z1)Yg^u5TsFS9p?3UVF?3 z=$;SO0pmN1y9aSxI*f2<&uiB{#GyvJ-RlZJ!a9%OVdo>2dK)=PkyzrgQY(eh z#3CLH-cJ)o=BG0!y%(5@&qu{o&V7u6=ceO5eAo?K1`!d#F*zn;-(%$IYX6QYfeIvX z7tLSUt9s5;dkd^pf9@!3<9Kd;;~mdcIk%%!=5^*}FIjfJ?fPTk9AjJVaul}vZ7ryDL(Tvjq}a7_64 z^!b}oB-n8|^rEI*6?|d9*;Y?(h%i<&sX-o#ONX4wJ_42gPjE+*;V{G&eXa}aphsem zAXft)GT|aBq*&fuP$Dd_--y+-cWMjvU(j=*?OH|91+L#ZbAY)yM;N85X~cf-$`7Oy z9)^~mD6BPcYav<|&=%z{wgH@+duC}l^AL7T=ytL1pRCb-ys*jg>q?tKQ_J4mCBM~Y z@*|x$#SS$H8!wuVdY5%%1V5ulki=#-_K35iUr1v z%mM)(8nqDPczVi0&O&x2zh&O4{vm!y{ZO?-)9+3d4CTFlNsp4qE^ZbU_gxT;Diq?E zluBu1_fEpW%aSYMeWU~Dt0ujX38NE6pg~0)i6U`~m@{N7QM{sVcWDyc_NYXd>nqzE zTh{5t^!hZcYjQ+&M{zGy13o&0!7;e}WdsCB zeA>UV5PMAF{s&+9XddRYv{~Hs7wT;LL6hP`wLNUYHRh0<)2|5mvhfc`;Z(~-BhVwP!^Vdlws@6tlCfVzZ|E;?79Wd=7sPmXTw zXbj^zT*)y{W!S#n+G332oV87!E#U3=Y)go&8?vCla4flkp%n1wR&W0~wzP4}p%ZSP>#8h}zW#4G-u2c6 zMwco{d%zT#?1~;8Bc8@P04PzbTTfYj^1dv@V?t3WmJ;6e_32{UHPL_yd3E-deHm(5$3wxboh3#&64WP~wfFr7P(Ym*`2DNxoj0pO@t z40reySGc>Mw7k}As8VaHTgonA1NgHLBArdT{s#YO_7T<%2VAeRBsHuCi~h^@`eJ`2 zbNFU}Afa96lD`%DkY8>n_9yych{m@XIHIO_j1t`q&PY(OQbur`;zbE>cV~`Z6o)aG z7~W5(K!P+P(LPnClS2pb$uy9s$~>cD3hYXa>nS}O&IeE147L66`(iY5=2JZF`cK-; zmwIq3IJOK(^}4jO?XMV2@R8lunYQz*HX`F;oWRVD0*83w)eX78O?aIw!=AD54akEP z$wkBowP<#+3I*S`Z!);wI!k4K5mbYHtkhT)WfHmY9~d_Kc01sRdFS4cen4ErWSqwHu#QUR~d{ey4ceHI9_e$!yY5e6LW{R zWSks+9thsc;&@O^W#3yZOOG4(q*stks2NrR{E{BS?RyPzD;(?O`v`|$-Cw3}leIqp z3z~v$yq&k;=e&=-i<|=@WUO1oG!jY91kNYq7hK5#|J| z0neF7ITpcl8iJ)9^XZ0ckKY?%0%CxDU9`g~2U-H{EXuhmJYm7%+7HRs_#&@;BRRQN zYe1%tXXO7fS_!O8;1RH79WEcitFHq|bhlFZ zZI-)E0cpa#K!0yigGWHq2%mSy*SZZWX5lCrQLRl1*!afYY~jNV#ynx}C!w`ZB{KQx zQqJ~Ob6U#8d7s)|M5UelaVozJ>(JTj;ho$vdYJkF5MibH(2NKk+)*_l-HrI`3 z%;QZ=$C2t#Z+ERGOrbHxPTfI`RKOMzb52EL$Ols%5JW1;`>ZYjC-z~Cads88Q0*x~ zpI9SFr0cr(?{H0}c+(NY{fKF~Pr*ct@qrNK2nq)1OA@n7LPI;6s4;AdJJi3j^f)*` z(|RE)Rw}!okm7QdJqD8Vs)Hwf!&B+b-PtuP%b@tSFDX*&q_T$8p+Ag zsED4O<8bQo+-*XMr-I{IAH64x-BLvI8T(~sHO}9m2Vpb_ln@vjm2?kl7{AaQFRxGO z^IO3}Un#@luxzpt@7+~LwyLL-uZ{Ul%4!3@qee8RMdp|F?c!*K6WXcHm#i+GDCS#t zYGGo+J}Ur)Oz051`@|N{$9IdYX;mac>f@2xL}Bq%-P`-~l)v zZdr&h#tmjQXW7gQ2gR*!8P!nu-JhT4Ob^RPaoVr4g@0vwnp(K1d=#?tEZ`99!`8jL zO>w=*B42({zOg>B{#2`9Yd*h8IJ^x;vq+#x;CCFt5)~-~R`F^pn)f5joyJ!f{WQ6C zJsJC@=jkC1ht`=AXVS+`_;fwqOwV!l{7x9!RqJtK^5yC$2mARZAX&lfNwaL)Yt%A& zw}xw}_Ynf*E?TXqzY79?q=qh|h7K5l-U8-V%P$yrijl^2*tyaac^^#2Uou$WnJuB9 z?6tm93pF%;3Xy5nHD8w3cx(6|MnsvB_p&SQ?R+eMti6QFd^bdNB|wH2c;`;<>S9Ja z>^c^MvFFP`8E*KrQf8+*Qo}`H+wt_2z?#W0?S^yN%=1~U=nkxi?u3E9(irR+`CEj4 z#7zr0_a^7c&}QM_L@7ivrV1(j?z0h8$LoA&Qsd;+QmyMwU9wv9-g#Vq;^N{3{2KC<-(2<90=SwMjOtnC0U>)f3Bld-&N3g(IM>YH*U!l_HqcWG^kV4~V$wPTV48|&2l+ih*0yE67_OI3@#_;8NtGCt>l ztLBs^t!_IBfg0VBMHZc)H}Eb5OBMIDDXZ4>h@q*dKJp@>%%BEjr2XL;7M>w?FBl1C zJ|3%pg)UgT!(S(NKx@r5o(e%b_)oc>;A_o!o>*(md~pDvNUl(?=$vh$lP8E*uBp>1 zh?Ac>%Sv(EIUhi4@P8}XXS_h;&hb5vAAdR{KqULVY5*+okVM04BUA9=4V{ zFXbI$0uq7mvxL5oUHYOlvBH}64>0cqv>O_FqRNM`!gy~cv}g4+9>2FhOwrv|_l4(v z$Lmwi7J8=I)~0d!6{Y64^uucmCV6ruW?LvUlkw5nnEqmdiu)-fHIr*W)1`&e<#6!g z4DYpNj@hLl<4wZ8n+3gA{P(QpUGj$A;H0B<$J=8)GVYH?0Zs1e;VW|IbaShglRDJp z&gZ2&E^w?%l|5;U_g=cUae)VJ0n70Q+5GgY4V(38eLM2TG7_yr77~55;^4)wG1yEj zCp9sPCgLY>W0?EUy8&waTN`nriYvl8q+RBKN{{NW9OR4~J6IV*HSO=5guJOX&^st< z8zmfmX$VgRz3dA9Yx^sM2=@`$<5Ybg);uy%M8ofbTxVqba%ZO2Qw2Q)K@8f4kB`kP z&c?S{yKKY3#@y2rAgm{p44}aohp8LKm4N;2^LW%*lgBafs+3GewgZFt4sf9=HxXv6 zMt4LvCGPcqculud3hTeNxtQB;ad9FUOQN^Pxc7juj+7L?=Bmw@2X&a(FI> z%N`qO-C*<-fk}B%n|m~Rauc%Yo@=a_bV~3CW3agKb^Q)V2h%8ccliz`dW7NExXpzX z?OO8>yYj=-XXj_vd_U3bRgnS;B>BE-Xpqy~VT~^e8D5i1O?a1_qe2sSTwiT4sA=@dF=x;ow)Z4!2N2{sH+a2I~V`zTnCpOdM!Ml9q`mlJq zh5Z_VSy{4ml;#oe9wx3L>MaGrjc-A8iOgB<4XQNsW&<`;3A}f^-T(`Ttl?w<3SO6S zW`S3XLG17SQmh$YO|*w;1kf;I>Pkxqu*2&@-r|^OMmiAn!GTh>c!OS%*+wSvwx?&t z$UAZC4pTSiOzd?GE`)5(`6I=b+~pkG^m&Z3MlkWjAz~Aqd(jGTPgzhgS=r_&~L^uw8k{4wQRn7AH^L-d|8#hZ81%K zUrLo=VUvFtO|uw6t+J$_Ujkf(VNsL~VV6rTDVlF_7?oB_F38PN6`x_R^30Ay3Cs$v zV=`tUA}Z`3zAmw-s(29nuWgB|&X-GHkQXS+q) zvC8A|P-TAZEYG84Zek}iF5lx*_3}1;tlAZ2ZESj#F%yhAD^x6l z0j~nVDRPOwNmGY&m+G#L;nH2bcnanW+jtraMokA*-GDsz5)>!XE81+R`GhnOr;7w` z)apC4G*%Ow!usCxU^U}G_Flj7R1GM1aC=?cYZS8} zT?*eL59TYEHBDR%%hMCH%VJ620T0XU(bT3Fr zdIRGHzdgSRQa;N1Y{;#gYh01za!Gg!s7=^=hzqIp@S8R0(l2r^(GTP@()qbxq*_Ii z>>^f(sY_4tqkPdSv24*mf=aI3J}oQ|UdzQ|>+to+Tc(8S@v6D_vdxzEu-P)3%-Qz9 z&O3f6Th_Ghq+%^;GaDyg&AZ6(TD#FD!T}%Q20hdF9yP!f;wi5K`P3LJ>b&ZYO zduW}^OHG;FgZl&UgV$tZnnmxk-)G-(L*!a|!?gMK;v~f%D^n_5MGyXN1u>CqbR&#M ztfv%erVAz-T5r9V4Y&A73!3IH_t5eJqHdbSn0DY+#HL{2_hc|lq=)1CwhmzlzGk)w zMG0Jq40hMC706mdC(Y2q@#qmefvUALHt-c?obU`%L_Li zRHnijAnS@biyd8I%f&i~kc_?Nu7gi2vGu5+{%g1%#%czahcw@X0LA07(u zjv#zLAFkPx&`5cH6-k}>Bq_`Nx*EO(rXt!$OuqGi^zM_geD7q|s*6K&8J!R(`Sc>9 zboIq70WFshh3yDD{9bnKiWA+)NnP;0rZa)_2k*0YFpLagqKsU;_ppdqLFKzd%!Bf+ z%ES}0tLRRxACZ`DFD>pc)Cka7c&$C9p{LZHd8*IUhJ$XS+8y8(9Q~96h(duIbGkgZnJ4map#IV{}>G{>$A` zpOHLI>@*)(-j__b_ejT6Rzm~_zi&CVZV7p+-E4g>=B{qf zzi_TTfbovmZYf(q9H$S(E4J$oNK-@Emk9BV+FeodgJk}8FDz(OBZ0nXn=h%+g@7%9 zg2t;~OuF}Obi1kqR=za41v(yQdeqT<7a^|cpYGVOcc{Rhu^;1&|0wR*0LS(&L4f@~ zis@Yp?qJUsri*=hUDt0vc+qVs!bjyjq_Yo*czXA>Z(V4LL%2A<(4(F2T+lr9uF0am z*ToNa<6DN{1;InP`Xua*|MACTc6dsc zmvL!U!|G#3TP)S#Xx4-~yqju*Q zRS!Il6bFCL(XBQgiNj8`Yt0mR9)aLF5AHqAs4WeZ&k5u#=r7(KS6_`FSB5d`V+C#w zo=c0*1xjjbquck0_Y(%zx_R9XT36Q0X371lZsP5IBrTT2=|{b+Y~bq9i)9q8wvcGr z)Z<@vX4yU2c+>mLa?vi>);Qz$KQQ|5@>?a)2Mw1*v>5!vYj1(f& z&%M9szRb~b_sMh>5pY@^?K9rA#16x9R)G&Wamr4|R*ZM&Ms15N*rk;p=_}rBk>UPw z&DfD1cwwPS>dN z;C#GIG1u$D0!*nLcxq;lXYk7Ud?lCLUwaw$a74&q&?MSr(TsNcnww-9H}6ndAJQ#P z)d)st2%xtT>u9^sTE(+&0cf&@@(YeB^j&?uod=YZ2C|nBsg6mjnteUL4JqBK^th;c z6~~`fAEB49Hk01jE89Wh-=^An!nT(ttiK9aklytFv2o?UiU6_ z%xF1fOwf`7mhiSgt-WS%$5F(MN4U4|+I*gry`elo5ACcl?yD&QMH!kT_xu*{m@OSmpL|#{I zmwHUntMMrd3{pxdqjFwdTiqr&l!`P@$b_e{6KUSi5=x_XUV>M>AG{=j;PrGe zAxTE^IXbP81TrcX5PqepI{B(KP_BarpcVXEYs_RisJBW>%01)Lf~=A4pp#j|C4MUgRVdd0t|HD^V-)L21XV~^glviP zDTD>rMh+aiv4y|H>(V4_2V5oBcUMtd{``XIh;c$4ChPoSOmeNIJcC!##_s#88RhR_ z5fc;3-z)!Py#1Frk$;^9{*@77r28`?!bt!B$cV81nGyN#L*!442;*OQaT%HaMR3VV zPy4?gLY>O64hp}Mx)iJ1wU3MAr)XdaI+i)(qD}*NAw*Az3*sGq#h{zu`!Yfi2k`Rd zqqD{0=`!#qT;LZwf*L!{EM_`>gm*Pic2#&s&=ckFmF%-KRPaosvYyN4*W)@GEjU~~ zX@Li@)!S#-9|7Do9nZJk7Aw`Clsc;jg#<+zMSv&IFVEMcl*;@LOi_fNdf;9p$E)!2 zKS*L*z3v{VJZUtYSFH%cK@5kJ%AGAg9S=_2@(u(9H)hx88&5wf%7;SayaKonI}uif zE(CVA!FYe@H&m8{d1d5ZVh2PTdg}-+5?8m(k0CqyW zK(K$<3}0ENKsKqzh>iw}Ur=rY&ihCfh^SI1dVgXpUGL*0kp00012D`w{vQEi6zyAY{}kNzc0= zH6#MMo-AM)RVDPo;iqK|b%Y1SM~KkQe(?QI`x>^2h?f;l&SdQ&mOJwovd>acTG;d< zeLT!88v}kpVzj=yK?k-ir-2JFsNQ^9PrOzRsA=4S_=P^_Bf|PRU?t#l z@!jp}m3GcRWBb76yC=}*8kLr%`!>@JKs0WY*N^j%@A}JwS$%-*L6z5u2UbnK^W7Vg z2~VKat>BH*E3XdlQ!O_i+&(DxjI6*-PcR6@rJxrp3E zo{w4F#)@swtCu4Bj$unwo;*+A@vWl4u_3n2ltD9a10cwFCCGU-1cR3+99#UWHc6`w zpe4Mtox81Tkm zU%yT}{015y;vJ$pe0v;k=W9sO zE2BHY#G@~tKQ4yw020;ZqwlbfK3BX&ik0#`{MzR_8yH6jgn5WrrNka%sr1vw&GErnMpu|5{&L_E~{P4mZ!b zF?Pf5HP#udTjy6D>k6ZT_-Lf?a1%i+H>O3d#m$xK!*I>;^CGBVWeXSAk-HFf~I0N^M@BQjFk^& z&;l6Ak@2+2Pt)R5ZUNdcTMO}?y1l&KU6pN{X1WA+QSbNok~WsL1S%>Tj5$Z7>lbxt z{xY&awg4zMF$CvgdFj=fqrym?g+QOc{h9O_HiBMk+qOqCVtdYB2}zyu)E|jx)*mZk~L^sBink zeQrqS_~@Wzw|>Pr?#=8)9$KK;6wtHR1C)(CzA-EVhtf) zLi3dx*XfeI0Vn9~Y1me8$BXfc<1)=sO7fPCo=B8sFLw!y#%a($`{k-UFX)uL9MzDe zyyZ*3=Ic&YP1w>A%G_nUgt?nZ>>U@=fTKIhYRx3|lDOuR zTiIo|R(h&=LZ~E494#$6sz9=OO?EJx@mtj5>qqHmW~V9Yw0$Y(f@Wp$ zsCH~3ve>mFkgI!ZjTo9_wTe*ApMz{J1!;-YTnQ;7E2ac&WbH<)l*=Cv;l;%hQ!77L z>hh*>w{Sl~s|lOyT$J2mCz&@o{Jm%AueCj=tx3sJ&c~V$i3>wmdEVLCQwhRCk47<= z>!}QP*I>S4UD@h0n^|i19}VsfV27xtUC1}I0h=*uAK%66G2iXAH=Eu#7wbb4=i!-m zIkk#^gqoj*;MJtwTwoyIqUeaWL0wAXtSRV@JjnaFe(?_6DIWi z9XE7!-Nx6SR5KDyg`+wq{3;yuQv0dj?;(hJbFDu|2agvk4E&zrLD|EE>(wVuVrc5Y zI!A11#t9mid*cl%y8O%+!x*^@thf9;iC>C|2P``K{0$*}=*geh{GB9*IMN%QSa#nZ z9}@Em9HD&Z$u|UZ8(MGnITGI}^6DF%sRv6)&W$F%jnOZN$30m5f}3yFj zHE!qhuCVPvP4SVI3}+M(Zi%wSn2nnylEcmGRhw4j;s!j!AM-<6jAvH)Q`bfJYup!& zkxy${fX0u4EI@1N2mXSYBO@ zY?myfRb6MNQ6xviEv=K6-iWLgPxzp?pzRbu>?*Lsqtim=>C1F@F3pyb!Sax~mj;W!#qKN`Y*A&0JbIajEhPeP?{c@tY z;F@@}*e&aM2};7ww^6{6n~wZ#n~p+j#qf~l?z%e8y%?uyVETYA)>S#5tr;t7 z^kinS?RcfOh|h6D0e9DQx<|QbjMCDcnr#TQ706MV?ASBt2;a`Q+>%IpRNMMPTPt4! zm2@5p2=P4zvLTf4HJI&98;0q0^2ylOpT_+^N;Sn|kou%+Kb{$&>OHr9>pg4HagqjA zqxCC??po@(G@@$}22l)NYtV73!%QPFRGuoeGYzI$NH(Zd{wN@f5J- z9ufQ;Iec+*6zTDlV8hbwTIR^G&9=BU3Lf!;`3CtlB`4O%qtT{BcD1tX5I?GwoFgND z55bf5WMm4r#BrgBMoN9*hID|u6kR|5JSNz2ck`X04X zemMH~)YT8w3y1erG!QFlAVJkmR5}NHG& z{^%$g!I6*d?_ILd!#*ilxn3Z1)^10HBiDs7x*+tN-$&{2snPIZsd4Dp*T46am^bBS z-Bq?xRb^o*Pcto`ZkIvtofWmTL7F{n-<+0ysn2{?mY>y^HZA4iMTiX;Ec&U}m%M8; zS7p1+5Wi~ERy?TxRYLH0{RRUo(?8TBj4c0Ot4Ekw|HVDR#{9R;krAJcnfY(-5eCNp zW$Y?x8$6Hv z8aie8_#-xNA44j8xmIe3Du6~U1euYajJM8pGaRnkjUWcK6DGwm`BA*+6C2MR|HN$j zQ;;6l6n0H!fiwOjUFe}X9ckcMn%!p=-#K`#XMoo*2TgMyj#w0Q65)c8r5KnLdUK8-&!VviRNk%1rA$`9gvHL?{ z@Z;ym3Mw54yObj2AWvYbqm&C}cP){lw_?b5sD{WLa#b=bRZcG-$_*@Ahf-<0n{|DFEi?=x86A30QFC7$64YLAwzQDkc{=MR1JyP4M1_mGIQzc&E?i> zPM=5@ETIKsk?JgsogU*%?I9MYr0Xo3E%y65yYR~hKXJj1e3z1Dg5d4fZbJ?!ndL$(79r#fL^T%X0I- z%%7O)E2Ieo<_||a1(KcIT-_kOwVt5kK!sCb~EklslD+i9FW93v%C$YS5>aXoQOLSj!19oIs zOqUd0$V)ve;z{W%X^6WN8bTb4{5e6)Bcv9H`!UgL9$|TsC}uw*fZ7lOeC^JHQ}nj8 z3VqM4KHd!78MMr5`93s(@oL;3{-Pj0Zh~bw3?Y0<3_GK}N}gpP!Gg;S7J(Ky?Q=*h zOG0)cFXUL`&SjZrwX#UJzdgI|5_BSvH1eYc>c}_~p!G=jM)d?4*vCge&i-@o8CsIh zz>YSZ(}fG3qBeGEh8;@xfaA1y0UD2HMwv2G(%3#FnQMaKg~@}cJ2m?-JJfIGCmaSE zr8FzOt}tNPXi-exjkxpv`#1dM6 z_jav4XK1l4OZCAOAXhe=}xGhvYPjKx-YPxM()KcF*Y>GQa zT_;*AL$;?2+^oPoDOVJ#lV8^02#qd4`4rX-ZQolWyC+!p)$fykdj_II#6XG@c?E@2 zwE{s_J*47w)oy9(u@0^&`oehgx;FTsULIg5SQiBT{NMr4GmyPoeYbt<{4D&A{AoE-QkVe)p8qstN(!I{6gqR(k^GIEAj zDZ);gN)m^KF)FN-tkX?B=%yA0s46yE6Jfz;;Xs(o4>|rw+1o>{+U5w7^*(QCp?5KwFPwbJ{&Ma@I|P zuSc$k?(Ctip;=KDsUARfg;I9?MlauwbrVnnxAtu174sFcJ$bbcecpN@Hu(^kL<9cJs z>75`~Kv=3`mcT5+BEll7dummx942-phGuDRnYL-Et=rx2HR83f6<&YQee!F?RQXeC z9`v=U`|VVed&JWri(3fv@kS4jsR|Ii4KF{Xl*%T1H}`^f$Dk;WN?U~#>sK8vWFHe0 zMT^qYj=ynF&`p5OPhwB+!_m|P|?nGr|lD)&0j0J$$eT*w+9e=tz1kA&@% zP7IYH>pQKvSzxv*nU->))lf2Xut@;HuMCmKh?;j+PM5Z3(7R9`i;K_l2|I@@;6_c9 zDo<57*9W|KtklR?t-iQ=cKEH~>b}jtjM<{`ys|09l8zod8JbH$+pS!AQ6>ItzHD8+ zzl($h0GsgO^?H-i2aG8qN^y>3uC`P{-cZbhGa&ffFltpToqq7B#!fJfwwCjf4DPW7 zlT4wal2cn|^yC(~k*H?p)zNOKTCZ%{M4qC=l8&51-B`UN@mzCR@F4jTinW2oZw{P> z0F@?CaA1zSsb#rWm3wc!Do(Y%+j0v+%9N#uV+N^A#HbmrXAwUd2Nc6(1?3@nNgic*S$FNLRd#HX&d#OF|I?T<@<>r5MJ za{iEn@J2Wtw4|ldE^kj{DN4GcI9*_R__uzV5rlwAHGW0;6;-_RUTuSSj#ceF`y_SAJXtT^iGBq~2}8d8FY6*;e$`PN;1UX8A7O(eUbsN+C;E1&C(e< zG!my(0p_rmn%QJ;vVO#^} z$CndE;||qkZ11*l{BqsO3LhDll9*WY4Y}8bbx0RA3o@9Y??@>6hCRO<)nyMjlM-YF zn*ID*y$r6Iq93J2(+X_^%8hOT7?3Rvtx!DYjlEk(LDYe;m86PD{e|{>A+<9jy6B!v6d7a^dXuy0`UDQPmYz1`Kl{GK?(2~U(6&zODst^f)+vUb%of`qMQ zCw@Su?*ynlcJ3}yJ0U88`nM*JoY-OE6k<(@(WFChi=3T|oTdFk_)oc;Wt!7I@okj& zhr^lSsj!a@82v)mp*Zm!v_R>BLiqHfpi&cqr3r;)P~~h=4eVV*j{R+nhJ#wu;^m*o zUZZl@KfX4WoiEx1Y22k%kZn6eEg8+c@;Z2KM@EREM&b5Ul{@cRpWXFU)9Z0 z>t1(`91#v-F14|nU4C`(jeH_@xeAJpUw=kL>M(4-gkvUuKLdGzOBrLvedd*U-jx0F_nTRrmJuebQ~II>-oOHW7IYqbUK9L|0%eAIe{6`K4rvO+y14uPL}qdZu} zAO$M-#EP|)Gsp`%v-=7Aw1<+iUyWf?OF|!p_~v<^i}>aFpN;svCEi>?&)hGS)UdLS zBBdg_6e5ih)RFMA(wZ9u;=IxR)M4c5GwWEDYSjwFHBe=BI?!~t6Ek2rThP zPqdJO3*#SSIrJKN^@_5GzyO2aiSU>XvA+|a>>Ru{7?jwO84BLlzVr`KyQc`ey1wm| z+-ktJWhi7R;40vb*AnxL*GAkA=)jk>fgEI^zg}vLAH-^8ZaT}o$WG$G9fRzwGj;m8wP zmwIpqot)A!2O3K+>D#rO|U z)`LOl`X1em)`{R(iEtiADj!E+A4h(;8zgeojo^|s2^*~t%>!afA8(>;;fjeyV^7fc zZCEYfW_xRChR%mvrL$b^BAVGG^^hmk8rGz&mN=d6ZH{&n)MKam4|alO;Bo-MtssRU zhBRXrr0p_JISu&%k$2Lmo!~Ah+gn!=OxDNkdwrVkyd91{S0T+#*G}bulJ5y@Bqj|% zihpQTV7ANGu+LUQrm6z-ZwNn-rnEZLdzd1yMIY7qEz2?e-wVrmScFd3<|yU6 zc~q}L*G#~RBrtk+qylu&?KPnd^3$z5ZERN*mbOyZ3H&;cYhG8*_Dq zME8XSc-$=2x!hefJ7UTFzg+$^LzB1OpQ-!#`>n{x3*F{$c6- zt2Bh3ftsF$ftH2tznY2s&)45S?Z{&K$6?XTEKL8Di7@@urVJ+L|6j@aw|m30b|&rDOVc4l7}`bUr`)#ZNG{xo^Q z_3fLFAo_POi%x-F$q*W$sq>Y3H{m9z=@t#gkS{17CaaYO+YsE>afH3)8Z@g8=eMBa zC9P*jpDBo*h=-@|%i5nhq!2OpP*bIs!a{OZeIO#!_?g>04UX!!<<|m0QsEABo&BAB zz{Ft=>~m|mJ57>m!AC>|v$zmX--BP5np%N;UMX*F*hi$1 z{#$Wp0?pO>|NDlc0ZqyjNdpbUch7s9nv9jALaEG@A*2kMiUy%*kdQ)#Qjw`pB4b5J zrG%6*QYs`O{hxh)_x{c~`*H8T`&<9D?pf=!RFDsDMdkV;K8psNHYij@g(;u9E2%d{vu^4pOVX|Ap&p;O zo?wB@#)Ku!6TBx>ymO>yq&WM_`^}UOP!d}hydY*o=z5_*b>T(YQduzG5mO1N*-+F~ zx8u=`Rsx+(oHI)`13o@kH_jh7f$!mYqj{e@ZOU!i4Mn>{rxooIE0nJCnqahleCmT3?d8n+rVw$wr0*zbSn~?96ttR*UoL64zq4#IB%Bi#CeIY zBDR)Qx+QB`%qZPh)^yV6u&};)Y4=lm2}5f+ha)~|^ILr;Y%JW7W4h9BWs!W%Ox4E^ z#AF}K^fG)=>()Q5SBx;1Es3`BQ!O*u%ov2Kn+8>tkYynyO{aeH8Esm9Bv?e_`ISeZX#iMeDF&t24fu0o-_x{g9>=5hS&y~opgzqhFz4E5GoR=Y*Y zC;X{aXJ1`a&G$|X+2F_KL6Q76)AolQynHZH^``Ny`kS7ciPX`ZnTquiyXMaeR1@=2 zeJSF#d|=&2NlnY5J#A46$3%AS6&+0TmoN)B+kHCk0`Kxvk7*6dPJR%~FZgWk5K}}n z?mtwj(ix^A#+yxU){-m<+(*uuVY^^&!jZu=wHw+qrk-7$aqi>7w~HR8sjfG9;JU%$ z;=uPt|9l5(v^@^{)YFw^X z-*ub0MG>usN(i66u4AA2m;U5;tC1PJe1GDqL#r=X$he)I+Pl!^gI11{sKv0mgQJ6R zolu(UNk-mPR9K`f_@Jy`btPi6+j=f4@?=xYh4AZ}bUMxo%|2j!%D5B_J6tM9PW~gA zC!Kz*xpHizAjxUrWLi+>q#?Oel=wewU zR4$)`@MZ^Qm`{!JS00`=#cJBEFd5Ih%}Jg5RvY}N9Fq?pKYaDf(3L$Dsj*P^ev8u7 z63u0$D%7saOJeQZXZ%pe6nylx*e~H*%a4h(sG9HKBFxXh8&}RRqPK8Y8rYg?a-ZnUUZ?C&<@@Polb-36Jqu$D*d%=&6NEU?E+uI{KMn$MyZuae|)dbt&-}Jw5j>5m6EaJ%)&;-EFw5p(o#WAqhxM&#)Q4G zQx7ejb5;G^0fjl`(;t6c9UU@raK~}4kXhqP$2p##BK~Qsdi<4TJ8VwK)*Lk-Qtd21 z-q3Ax@M~h+;2XZ$EgptuUnClF9i8BH^A@=0o_b(sET*lOzCv(q<^elh0ly6?J^Q!p z&n|Q@@vW>;>)w|7tEeV5#`SOo(*4x5IIhTM6OkxlP9#U9M5nVHf=qg25@rtV&TIbTujbHF=BST&sOWLeZz2#ln z1=K;;Qq?yNcRlE@f5_^x>i7-*W!u7b8Et)j@zSMaeTv*xF+1nV=HWH=tMzTeuQsLo zTTj1%UR0U&Ox3(zC9b4VA>hR7Y|~=r-8{R1iT8ZnG*`B|fTtdTcM|<|3yji zgEOyni@AM$kI8Arryo#30l~g$CzW_r@S>5vK`Of+_R5PSZ;7L!|3X3xvyR~ zMEdwkRc^~hKA{W@Sg&mZi|O!j{G zOvKdJQ|Phc;GJ0eSII)#)@b_}y%1ljXq(EDe{Emo7^-w?!#8QwyMv30`su-p*}}T# z*KW#?ud$!)Dx4^=PV~v>`&E1W5u*U(G8sO>sEA$n>T%OW^RJ|ho?54S{Hsy%`1yB- z1#Xw>YRu%ZfHkOw~=T zKBiG0wKGwn!)Z>ErtP-LUe>n-LZ@6iyQU+^&wqJiHoqUSIq0gsrOt%*&{N50J66p3 zG_QNERLzZZFYec?pAV7Qa7^*8Rb(9R?(_8J#%r(Q%a(=I5`G_X)b54Rsi(Vwvse6Z z3tmy3fBM;)<1!!q=;@JIa>3}s$+D7zxpG|`#8oG5$IDGF&b;Z&7)l*sroP zx0i)Csrj1U$cVZX?~0n1 zzTNf3;%ms2(g!w;leKE*@~Ph8A6NPLOHbkQ%@b_*-+6Ju?`r&w((J~M5@H`3HosI= znUgo8;JJ-^P|w8qI$vkKIwsVc7n&nMyG*?LI!s?r^FBHuw|QgOcFVbFlI$Ue&e)8Y zUsnV}-e2=>IHN7NxTI?HiZVB$^m8ZlJua8;Dw8Veu3o$KxG{Zna6ySyGJl*%fkp8n zam^~8%keYCMaBtAHO0oI7Lzw;yqbP2V?q0x@+3XOejAPQ>v}4+#{*ybMD3LQlrVgI z&S*;I8x;LO_c!8GOV@6<$cZ2goMJI|Qfc(HBVfh+G! ztQYsRZR|0+v~$an_aE9sTwQi+t6uhEigKO@=Tbqr+Q|1-i=ILY$Akzuxw6--9>T4U zLeGEI$$nby^Sb>0^K#WU<)3WZ-LhOHjF~NR*;S9)C2}1Wi7vReF;V3V8a_cueaXX| zC1t1GeXbOhQ|gamOf&mz))Vs=3>T{j_L z?NP3YRL#P{ti@|K9UWS4_(zZ6=&P5+h*p*1sEYAmveWUE_V+KW+^a7;Qqp(VVV+6Z zj-nZjfg_-^vZj=$0hR%qly*X@~dBYIm?*m zZ@etkAzF6HC|s`MhO~Zq9A)>?&d|;dH<)`dNpDN+XVh_ChF7>rdBOvMQFho_E_SmTk1$qWhJ_`kjsQ zMBU|DYE6SHT3cH8ecd~w$pwEe&(F(Hy!Fxkme;M8^(GhH%`{rWl~s1k z_b{srUt$05(D+#%5);QNxBvQ*EJ^=Gng7q9%u(N@uk-H%4F5Bq%pssp$&!Ejlq^C1 z`Tt*gG~`&P8OY!Lob2gByAtV{$3Lr;O1jSo4%|JfJp7nsy@KxWIL(LBc)ZyDM-4`M z?;ew~G3)rXa%i6Kyvvh&#RpaSFpEj=AIt764i_vsnz`hqKw49qrQI8OCDi2IK2uC# zV(z%j=(tgnHsb2Mjhn~~9;x@Tt&oFJ&HV@GHP|#-j1=)LTl+9?<>!2NXyaO%d?F-^Eh=&uiF;E$D`+_o4EvR>0iemm(VRw z{<^if=0~a4;>^UY&$5)W#E8R7yrY*N-)#cU-0#cserL<3)^OO}pj3FY;|W78IC^^3;-fQj z7W^?=XK}CZiKADS?wO@NQNeijn!{n*6MCOy9M)b?E0^#Tw_cDKrm_9SvvF&ZOSh)= zo=!L>ax*Od+8!VEdX3fci8=*CF5NSB-8gjkdum^$Z{=lGFDWmxaaj-TwzX9&C|+MB zuc_w}X8P*&`k3i&y;Cg|yZR1iCudnW9@Jk~YV{yoPbBi5nTGB5;Y_2)rb`N}o1(9r zl@k?d8#g+s_sDzwr@kk@FBp3D`1@s}(f(ey9s7btgnQEkM5+{uj&y3|M|xk&+jCIE zAusz6>DUkY&ibvu}cg-R2N-Y1L1%EKi55Te*Eip?>E(`Qxu=T_g5&T+7{~ z5cxj6AsUx_BhoVWr$NKs0bcygfi3$gr>9A2U2hljYCAH&-Ss7=Tsi-Vfuv^8GGcgx z%7BOK3q>qD?dU+Q>68~j!(9d~cDXZf~54~UNdLjagc0c+SQH~rKrW<6>mC;dO zf|At(PZ9Rc5-U2wb<>triQd_t+MO=$+GLCszVPT8JcrKQmpriYoBN%gkNd5fQeB=* zK}T-%%wKF4c%e)?TFqa3DbpXpbhSq=>R62JYDx5%wIzhAqiVx)Ovn&7qN&(Tc;P_w zh4TBN&5|!8mLIyBT_GnUS{>-i#4ZyPPuO2| z+wJ0OZQUbN7o6WKe5axQsZxhSugd=-WF<$_L@Gv6_n4fU)ESzyhb8e zalfkAiujG@Ni92*I^)kqmaj6<3!EfBP-UL(jAh=Qa3eyl-PS8`2+|zFG@+-!v8bNOw;G-{U)2zm&4m5 zFZ_z>busBlSaz&=kRQ#7FdgZSCE;M{3;;yPwa@L^t^eZsxBa zni5&}ps(iE*YBskOMmrl9V#2C(h=9$F0LbskD>ueFU0mtoB>Fz@%lVM+O*~n{$;0on?F@aJM6eI2X63zwo;|fo z<}|En)!SR)7akbr8e=~?+&3Z{)+;CbCU|%DUilfO?b$-(ky(6CCR(WR)<>SXqphUz z^XTbu8=^-OivswELw4m@)r>H~n%SN=D)$^XPVhBeeAyTv(xTn$+^8jaJZ4tFI#j*i z?8(CEEmN~>V%sJz{v0Y~k-zw0(az@=_nP$xT_~ng9+yeCT)Hy6=ZUI|(eJ>+bD}aNayB0F!$l~~Y?p$;uw{l_H}_O{wN7t&+xB_6nz{9~I;E-_ zkxGyG%fg8D1Blw$(uXbJkATkABZmztT5gGHde8ryzI^frTa6t%3qy$k;cwnXgQD5R z&fEKAlC$#yC4Xu)%QSyJy&>;}d)S%av-jgqju=K|%j7;#VxoQsv{VTkdVa^o;SE1s z-x7`QK31@XYEf)Y)Hx8}w);!?k4v+@gFkGnHzs||vby@>{o;+h6vx)n|0vQ&arv+U8b9R{F^0xAu&SvtF@(aE0xiFD8;3 zD@BGHK01nfZ}~CT;o0S;gg1FLmv-en3W`|!I#_90$ekz0GJQ=3r||LlS%3 ziX~4O`)gV6x?&JfX*_3>;~fHfy^s>hd~TYF^@9VxsQ(aWFo=x)ImDf4{K{5h8) zy+t=#tX$?1nAVP-lsl2GdY?VAUIlJ`W7E@6<1U@m|LO{5ana|b%gkrCQ?H~?zB}Gq zBgwPU{agd3cZ^8tzI&o;m~XT>SlCf%_OJQ#`z96S?uoilX3#yvFjH(w}Gy1i}Swrba$yQf!sex6-@_QGi5l9*M#&S?{6BUG3&!ogvd zX0&RcpmBi`(FBdqD|o~b9&gDqFx8x_{_iIIih3?iR<4$y1xt0!Eu}YYk=`ba@Dy+bOj_U7 z+~t6$w4S==TF^FYj|0p8HXA)$tZl%oCMX_1@8ADP|Ladj>Hp0T_EVr7#zRqvq3n-I zaJ2{nF^oq-?9cQ4e`f?rF${cP0)y`XJu}IpXcE3JNy2TTcr?Ul3T_+gYq*S|;Cs;Q z3;usHgoi`zrD&W7voZP#Y8yeLBuf8AA0Q-3{7zrtD9P}C>z)D6QHMI2CaRZz$qTYFao|FctBVStzR7E zOx$NCz_W122&EAo1>51jwccoipdl?zk`Tji*p7hu1!!^jSx6{WfJH+RFvGdmBQf@v z9hV^p2{8;>=Rk`<_rP$-4^hBv@L)#3b_|I@jE0{1Uq}2P?HG0l2Hk@JE)`+~sVMoDsG>@AP0Xv!@ zVLPb3DD3N4hLI41;woUk5kZXL&Qn&4!dj9W2SJj}U>MA}YZ}2o!3o*X$QX7Q^vpnu zz*?NUrV*SXxNDGQT)zt#lxG7*as54D3^z`*S{%~SJZ{WG2zc#-wS{s0Bx}db;Q%AJ zJ{B;XTe|>8LhS`w6xM<$z+of-&wIeQu?#Sp8yf+mxVZpe3=Q9dCLk>d`AM*h*bN9S z!=b(hsUtV%2aM$UNp@Lsb1qg(!CHo!BLT05B0Pv8Gz~GF#vz80@bw62O#>|nYe^Ea z0|6L%77C@HXQAM+1fvFxB~6i#j|Ey1)>6>=U~sta0fYLUA)tI5*f9hF*&&dR1zN}t zF$BuZUr;cExbY3FEu8BUSv#%|1B}67MsxiO3aW9gKVY>8q$Lq<97GWm<&HVaxa$Zo zVhlTc3_GaaXSEcpr6|Y_OkNaXJnmQm2KjryFz&hpjKC;Z%Y(I0Oh!S;&dpy~#`RaA zr=T1J9i#RG48u@Z%Y(Hz*B^jnoPwT@O}V)3zzE(LcJvr_(4G;nV`vJt_LyUyxE{W1mp8_ogYZ)A}W1zhPb~QQZ6#Fov6-vRWv9FgOp26%0dg^Cr+M zB-CDD2ep@B;J#8TSX$hi z0WhdOVzoS23+;V@a1Qxwu(qImAJz^Ub5Osb5CiEh4%s2xJ!w|UgRh5j^EHeB4xfP; z*Y9GW9^}>}fFazy8^EBPfz=YQ7U#wkjKmpkUI!Qr%}El3WFEwzcL{(&dzP#gfwef~ zBPa~=e=OtX!0eE7^8;YVaQEPW9m37;SuNCFcI%&O2Rtmd?q(S`{$gyZ%s>o!-v}7S zjiIa-gS9v}hJu#yxb+OnAYaGu;CaBX=?cW4xXNltSWA$Q9R=lPU~Msw{{wc=crYMm zpddy;>yn`u$o~N?0%>U;Hr!JdZY_zk8`>nq5N`kBY>c8IhSIPW=k5#O2nppr zfI+zr&i>PT3Su~S{}eEayMKzan=P=G;@0*!N$QwXpfGlm@$&si-3X$dHvgVGABNdUv3egVsuJIC3wjO)YxEZ<02 zi@;iFZx|;~oPhS=!6L+9JMMllU=&vi7&(R=&GiSY7K616w}t={gW>uimO*0#suZqI z1PtyQg&|@(8z7zqiHxN;{=O_Rpx%=|0mV~tw*H7XUSVt7hC<0ps_K|U5RjDfWT_q`QPW6(Y;%b>9YF$(Ha8i)NU8{aTki^5vyT>{7~NN)UP z83Nle(E4TAgAZH=a%vu|h2}VeAkchfD5$;!Qyk&uSHKS1hXV}CV*#UJJDNAfeW7>x zzz%`VB!Ff>^&ntee^0RQw+M*g+&vzG2iJoH`+f`7QrtR#KxmXZ4*)|L*p3*(4jaRc zwNPFH+$4>U!QgxdOi7sGJlMAr z2($+P#uuKaBsV4#7(#Mm3d^{@7%-aT!Hny3*fTNQc+PI?as54kk?`{Y2E9ARNN8_~ zWi+IvkTDp>-D6}=WpMpHU<5b60*vC;Wds4%B>|rWBVY#A=L8LW2@W#?w!^qNAz&2r z%)qPhAT0{L11H&oBQ(S?uHOZWAYjIjW1J_%q3eNuVYp}C5Sp78vyAIwLE;0wpJ5p{ z*0N{mNa%Vf!R>nz0i^~5Gj7ZSj6ug>I0>H}#NhLU&>1fhbUinovyAH#*{mIbv>@ma z@VPk(K1&Dfql1hZ9pjuJ%B?TiBS2$lp|t=QbUuvD+9}A6f@(UJan~SV@R$R}%>~%A zR@}UfWYY~AI-|*>VTK^^SxyWegF$nHEi7OL`5clx=Z31!QF8z> setpagedevice +%%EndFeature +%%IncludeResource: font Times-Roman +%%IncludeResource: font Times-Bold +%%IncludeResource: font Times-Italic +%%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 +/.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 +/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 +/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex +/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y +/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft +/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl +/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut +/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash +/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen +/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft +/logicalnot/minus/registered/macron/degree/plusminus/twosuperior +/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior +/ordmasculine/guilsinglright/onequarter/onehalf/threequarters +/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE +/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex +/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis +/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn +/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla +/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis +/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash +/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def +/Courier@0 ENC0/Courier RE/Times-Italic@0 ENC0/Times-Italic RE +/Times-Bold@0 ENC0/Times-Bold RE/Times-Roman@0 ENC0/Times-Roman RE +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(1)535 768 Q 0 Cg EP +%%Page: 1 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.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-2005 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 +/F3 10/Times-Italic@0 SF -.4(Ko)2.5 G(rn).4 E F0(and)2.5 E F3(C)2.5 E F0 +(shells \()2.5 E F2(ksh)A F0(and)2.5 E F2(csh)2.5 E F0(\).)A F2(Bash)108 +211.2 Q F0 .527(is intended to be a conformant implementation of the Sh\ +ell and Utilities portion of the IEEE POSIX)3.027 F +(speci\214cation \(IEEE Standard 1003.1\).)108 223.2 Q F2(Bash)5 E F0 +(can be con\214gured to be POSIX-conformant by def)2.5 E(ault.)-.1 E F1 +(OPTIONS)72 240 Q F0 .52(In addition to the single-character shell opti\ +ons documented in the description of the)108 252 R F2(set)3.02 E F0 -.2 +(bu)3.02 G .52(iltin command,).2 F F2(bash)108 264 Q F0 +(interprets the follo)2.5 E(wing options when it is in)-.25 E -.2(vo)-.4 +G -.1(ke).2 G(d:).1 E F2108 280.8 Q F3(string)4.166 E F0 .796 +(If the)12.354 F F23.296 E F0 .796 +(option is present, then commands are read from)3.296 F F3(string)3.296 +E F0 5.796(.I).22 G 3.297(ft)-5.796 G .797(here are ar)-3.297 F .797 +(guments after)-.18 F(the)158 292.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 304.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 316.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 328.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 340.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 .616 +(are read from the standard input.)158 352.8 R .617(This option allo) +5.617 F .617(ws the positional parameters to be set when)-.25 F(in)158 +364.8 Q -.2(vo)-.4 G(king an interacti).2 E .3 -.15(ve s)-.25 H(hell.) +.15 E F2108 376.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 388.8 R F2(C)2.958 E F0(or)2.959 E F2(POSIX)2.959 +E F0(.)A(This implies the)158 400.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 412.8 Q F3(shopt_option)A F2(])A F3(shopt_option)158 +424.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 436.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.253 E F0(unsets)3.253 E 2.625 +(it. If)158 448.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 460.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 472.8 Q F2108 484.8 Q F0 +(A)38.6 E F23.364 E F0 .864 +(signals the end of options and disables further option processing.) +3.364 F(An)5.863 E 3.363(ya)-.15 G -.18(rg)-3.363 G .863(uments after) +.18 F(the)158 496.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 513.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 525.6 Q F2 +108 542.4 Q(ugger)-.2 E F0 .475(Arrange for the deb)144 +554.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 .452 +(ging mode \(see the description of the)144 566.4 R F2(extdeb)2.952 E +(ug)-.2 E F0 .452(option to the)2.952 F F2(shopt)2.952 E F0 -.2(bu)2.952 +G .452(iltin belo).2 F .452(w\) and shell func-)-.25 F +(tion tracing \(see the description of the)144 578.4 Q F2 +(\255o functrace)2.5 E F0(option to the)2.5 E F2(set)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(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 +(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-3.2)72 768 Q(2006 Jan 26)149.845 E(1)204.835 E 0 Cg EP +%%Page: 2 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/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 +/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 +(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 +/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) +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 +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 +(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 +.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\ +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\ +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 +(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 +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 +.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 +(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 +(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 +(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 +(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 +(~/.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 +(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 +(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 +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 +.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 +(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 +(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) +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-3.2)72 +768 Q(2006 Jan 26)149.845 E(2)204.835 E 0 Cg EP +%%Page: 3 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(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 +(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 +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 +(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 +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 +(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 +.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 +(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 .577(attempts to determine when it is bein\ +g run by the remote shell daemon, usually)3.077 F F2 -.1(rs)3.076 G(hd) +.1 E F0 5.576(.I)C(f)-5.576 E F1(bash)3.076 E F0(deter)3.076 E(-)-.2 E +.301(mines it is being run by)108 249.6 R F2 -.1(rs)2.801 G(hd).1 E F0 +2.801(,i)C 2.801(tr)-2.801 G .301(eads and e)-2.801 F -.15(xe)-.15 G +.301(cutes commands from).15 F F2(~/.bashr)2.801 E(c)-.37 E F0 2.801(,i) +C 2.801(ft)-2.801 G .301(hat \214le e)-2.801 F .301(xists and is read-) +-.15 F 2.97(able. It)108 261.6 R .47(will not do this if in)2.97 F -.2 +(vo)-.4 G -.1(ke).2 G 2.97(da).1 G(s)-2.97 E F1(sh)2.97 E F0 5.47(.T)C +(he)-5.47 E F12.97 E(c)-.18 E F0 .47 +(option may be used to inhibit this beha)2.97 F(vior)-.2 E 2.97(,a)-.4 G +.47(nd the)-2.97 F F1108 273.6 Q(c\214le)-.18 E F0 .886 +(option may be used to force another \214le to be read, b)3.386 F(ut)-.2 +E F2 -.1(rs)3.386 G(hd).1 E F0 .887(does not generally in)3.387 F -.2 +(vo)-.4 G 1.087 -.1(ke t).2 H .887(he shell).1 F +(with those options or allo)108 285.6 Q 2.5(wt)-.25 G +(hem to be speci\214ed.)-2.5 E 1.208 +(If the shell is started with the ef)108 302.4 R(fecti)-.25 E 1.508 -.15 +(ve u)-.25 H 1.207 +(ser \(group\) id not equal to the real user \(group\) id, and the).15 F +F13.707 E F0 .536(option is not supplied, no startup \214les are \ +read, shell functions are not inherited from the en)108 314.4 R .536 +(vironment, the)-.4 F F3(SHELLOPTS)108 326.4 Q F0 -.25(va)2.46 G .21 +(riable, if it appears in the en).25 F .21 +(vironment, is ignored, and the ef)-.4 F(fecti)-.25 E .51 -.15(ve u)-.25 +H .21(ser id is set to the real).15 F .261(user id.)108 338.4 R .261 +(If the)5.261 F F12.761 E F0 .261(option is supplied at in)2.761 F +-.2(vo)-.4 G .261(cation, the startup beha).2 F .261 +(vior is the same, b)-.2 F .261(ut the ef)-.2 F(fecti)-.25 E .561 -.15 +(ve u)-.25 H .261(ser id).15 F(is not reset.)108 350.4 Q/F5 10.95 +/Times-Bold@0 SF(DEFINITIONS)72 367.2 Q F0(The follo)108 379.2 Q +(wing de\214nitions are used throughout the rest of this document.)-.25 +E F1(blank)108 391.2 Q F0 2.5(As)11.54 G(pace or tab)-2.5 E(.)-.4 E F1 +-.1(wo)108 403.2 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 +415.2 Q F0(A)12.67 E F2(wor)3.006 E(d)-.37 E F0 .165 +(consisting only of alphanumeric characters and underscores, and be) +3.436 F .165(ginning with an alpha-)-.15 F +(betic character or an underscore.)144 427.2 Q(Also referred to as an)5 +E F1(identi\214er)2.5 E F0(.)A F1(metacharacter)108 439.2 Q F0 2.5(Ac) +144 451.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 +463.2 S 2.5(pace tab)-5 F(contr)108 475.2 Q(ol operator)-.18 E F0(A)144 +487.2 Q F2(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/F6 10/Symbol SF +144 499.2 Q F1 5(&&)5 G 5(&;;)-5 G 5(;\(\)|<)-5 G(newline>)-5 E F5 +(RESER)72 516 Q(VED W)-.602 E(ORDS)-.11 E F2 .306(Reserved wor)108 528 R +(ds)-.37 E F0 .306(are w)2.806 F .306(ords that ha)-.1 F .606 -.15 +(ve a s)-.2 H .306(pecial meaning to the shell.).15 F .307(The follo) +5.307 F .307(wing w)-.25 F .307(ords are recognized as)-.1 F(reserv)108 +540 Q .227(ed when unquoted and either the \214rst w)-.15 F .227 +(ord of a simple command \(see)-.1 F F3 .226(SHELL GRAMMAR)2.727 F F0 +(belo)2.476 E .226(w\) or)-.25 F(the third w)108 552 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.915(!c)144 568.8 S 9.416(ase do done elif else esac \214 f)-11.915 F +9.416(or function if in select then until)-.25 F 7.5 +(while { } time [[ ]])144 580.8 R F5(SHELL GRAMMAR)72 597.6 Q F1 +(Simple Commands)87 609.6 Q F0(A)108 621.6 Q F2 .389(simple command) +2.889 F F0 .389(is a sequence of optional v)2.889 F .388 +(ariable assignments follo)-.25 F .388(wed by)-.25 F F1(blank)2.888 E F0 +.388(-separated w)B .388(ords and)-.1 F .815 +(redirections, and terminated by a)108 633.6 R F2(contr)3.315 E .815 +(ol oper)-.45 F(ator)-.15 E F0 5.815(.T)C .815(he \214rst w)-5.815 F +.816(ord speci\214es the command to be e)-.1 F -.15(xe)-.15 G(cuted,).15 +E(and is passed as ar)108 645.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 .176(The return v)108 662.4 R .176 +(alue of a)-.25 F F2 .176(simple command)2.676 F F0 .175(is its e)2.676 +F .175(xit status, or 128+)-.15 F F2(n)A F0 .175 +(if the command is terminated by signal)3.508 F F2(n)2.675 E F0(.).24 E +F1(Pipelines)87 679.2 Q F0(A)108 691.2 Q F2(pipeline)2.919 E F0 .419 +(is a sequence of one or more commands separated by the character)2.919 +F F1(|)2.92 E F0 5.42(.T)C .42(he format for a pipeline)-5.42 F(is:)108 +703.2 Q([)144 720 Q F1(time)A F0([)2.5 E F1A F0(]] [ ! ])A F2 +(command)2.5 E F0([)2.5 E F1(|)2.5 E F2(command2)2.5 E F0(... ])2.5 E +(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(3)204.835 E 0 Cg EP +%%Page: 4 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 .244(The standard output of)108 84 R/F1 10/Times-Italic@0 SF +(command)2.944 E F0 .243 +(is connected via a pipe to the standard input of)3.514 F F1(command2) +2.743 E F0 5.243(.T).02 G .243(his connec-)-5.243 F +(tion is performed before an)108 96 Q 2.5(yr)-.15 G +(edirections speci\214ed by the command \(see)-2.5 E/F2 9/Times-Bold@0 +SF(REDIRECTION)2.5 E F0(belo)2.25 E(w\).)-.25 E .48 +(The return status of a pipeline is the e)108 112.8 R .48 +(xit status of the last command, unless the)-.15 F/F3 10/Times-Bold@0 SF +(pipefail)2.98 E F0 .48(option is enabled.)2.98 F(If)108 124.8 Q F3 +(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 136.8 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 F3(!)3.111 E F0 .611 +(precedes a pipeline, the)5.611 F -.15(ex)108 148.8 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 +160.8 Q(alue.)-.25 E .298(If the)108 177.6 R F3(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 189.6 S +.14(cution are reported when the pipeline terminates.).15 F(The)5.139 E +F32.639 E F0 .139(option changes the output format to that spec-) +2.639 F .779(i\214ed by POSIX.)108 201.6 R(The)5.779 E F2(TIMEFORMA) +3.279 E(T)-.855 E F0 -.25(va)3.029 G .779 +(riable may be set to a format string that speci\214es ho).25 F 3.28(wt) +-.25 G .78(he timing)-3.28 F +(information should be displayed; see the description of)108 213.6 Q F2 +(TIMEFORMA)2.5 E(T)-.855 E F0(under)2.25 E F3(Shell V)2.5 E(ariables) +-.92 E F0(belo)2.5 E -.65(w.)-.25 G(Each command in a pipeline is e)108 +230.4 Q -.15(xe)-.15 G +(cuted as a separate process \(i.e., in a subshell\).).15 E F3(Lists)87 +247.2 Q F0(A)108 259.2 Q F1(list)2.601 E F0 .101(is a sequence of one o\ +r more pipelines separated by one of the operators)2.601 F F3(;)2.6 E F0 +(,)A F3(&)2.6 E F0(,)A F3(&&)2.6 E F0 2.6(,o)C(r)-2.6 E/F4 10/Symbol SF +2.6 E F0 2.6(,a)C .1(nd option-)-2.6 F(ally terminated by one of) +108 271.2 Q F3(;)2.5 E F0(,)A F3(&)2.5 E F0 2.5(,o)C(r)-2.5 E F3 +()2.5 E F0(.)A .656(Of these list operators,)108 288 R F3(&&) +3.156 E F0(and)3.156 E F43.156 E F0(ha)3.156 E .956 -.15(ve e)-.2 +H .656(qual precedence, follo).15 F .656(wed by)-.25 F F3(;)3.156 E F0 +(and)3.156 E F3(&,)3.156 E F0 .656(which ha)3.156 F .957 -.15(ve e)-.2 H +.657(qual prece-).15 F(dence.)108 300 Q 2.5(As)108 316.8 S +(equence of one or more ne)-2.5 E(wlines may appear in a)-.25 E F1(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 333.6 R F3(&) +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 F1(bac)2.528 E(kgr)-.2 E(ound)-.45 E F0 +(in)2.528 E 2.875(as)108 345.6 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 357.6 R F3(;)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 369.6 Q(xit status of the last command e) +-.15 E -.15(xe)-.15 G(cuted.).15 E(The control operators)108 386.4 Q F3 +(&&)2.5 E F0(and)2.5 E F42.5 E F0 +(denote AND lists and OR lists, respecti)2.5 E -.15(ve)-.25 G(ly).15 E 5 +(.A)-.65 G 2.5(nA)-5 G(ND list has the form)-2.5 E F1(command1)144 403.2 +Q F3(&&)2.5 E F1(command2)2.5 E(command2)108.2 420 Q F0(is e)2.52 E -.15 +(xe)-.15 G(cuted if, and only if,).15 E F1(command1)2.7 E F0 +(returns an e)2.5 E(xit status of zero.)-.15 E(An OR list has the form) +108 436.8 Q F1(command1)144 453.6 Q F42.5 E F1(command2)2.5 E +(command2)108.2 475.2 Q F0 .728(is e)3.248 F -.15(xe)-.15 G .729 +(cuted if and only if).15 F F1(command1)3.429 E F0 .729 +(returns a non-zero e)3.229 F .729(xit status.)-.15 F .729 +(The return status of AND)5.729 F(and OR lists is the e)108 487.2 Q +(xit status of the last command e)-.15 E -.15(xe)-.15 G +(cuted in the list.).15 E F3(Compound Commands)87 504 Q F0(A)108 516 Q +F1(compound command)2.5 E F0(is one of the follo)2.5 E(wing:)-.25 E(\() +108 532.8 Q F1(list)A F0(\))A F1(list)17.11 E F0 .011(is e)2.512 F -.15 +(xe)-.15 G .011(cuted in a subshell en).15 F .011(vironment \(see)-.4 F +F2 .011(COMMAND EXECUTION ENVIR)2.511 F(ONMENT)-.27 E F0(belo)2.261 E +(w\).)-.25 E -1.11(Va)144 544.8 S 1.063(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 +556.8 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 573.6 Q F1(list)2.5 E F0 2.5(;})C F1(list)3.89 E F0 .402 +(is simply e)2.902 F -.15(xe)-.15 G .401(cuted in the current shell en) +.15 F(vironment.)-.4 E F1(list)5.401 E F0 .401 +(must be terminated with a ne)2.901 F .401(wline or)-.25 F 3.214 +(semicolon. This)144 585.6 R .714(is kno)3.214 F .714(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 .715(xit status of)-.15 F F1(list) +3.215 E F0 5.715(.N)C(ote)-5.715 E .22(that unlik)144 597.6 R 2.72(et) +-.1 G .22(he metacharacters)-2.72 F F3(\()2.72 E F0(and)2.72 E F3(\)) +2.72 E F0(,)A F3({)2.72 E F0(and)2.72 E F3(})2.719 E F0(are)2.719 E F1 +-.37(re)2.719 G .219(served wor).37 F(ds)-.37 E F0 .219 +(and must occur where a reserv)2.719 F(ed)-.15 E -.1(wo)144 609.6 S .256 +(rd is permitted to be recognized.).1 F .256(Since the)5.256 F 2.756(yd) +-.15 G 2.756(on)-2.756 G .257(ot cause a w)-2.756 F .257(ord break, the) +-.1 F 2.757(ym)-.15 G .257(ust be separated)-2.757 F(from)144 621.6 Q F1 +(list)2.5 E F0(by whitespace.)2.5 E(\(\()108 638.4 Q F1 -.2(ex)C(pr).2 E +(ession)-.37 E F0(\)\))A(The)144 650.4 Q F1 -.2(ex)2.552 G(pr).2 E +(ession)-.37 E F0 .052(is e)2.552 F -.25(va)-.25 G .051 +(luated according to the rules described belo).25 F 2.551(wu)-.25 G +(nder)-2.551 E F2 .051(ARITHMETIC EV)2.551 F(ALU)-1.215 E(A-)-.54 E +(TION)144 662.4 Q/F5 9/Times-Roman@0 SF(.)A F0 .411(If the v)4.91 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 674.4 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 691.2 Q F1 -.2(ex) +2.5 G(pr).2 E(ession)-.37 E F3(]])2.5 E F0 1.3 +(Return a status of 0 or 1 depending on the e)144 703.2 R -.25(va)-.25 G +1.299(luation of the conditional e).25 F(xpression)-.15 E F1 -.2(ex) +3.799 G(pr).2 E(ession)-.37 E F0(.)A 2.273 +(Expressions are composed of the primaries described belo)144 715.2 R +4.774(wu)-.25 G(nder)-4.774 E F2(CONDITION)4.774 E 2.274(AL EXPRES-)-.18 +F(SIONS)144 727.2 Q F5(.)A F0 -.8(Wo)5.633 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 +F3([[)3.632 E F0(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(4)204.835 E +0 Cg EP +%%Page: 5 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(and)144 84 Q/F1 10/Times-Bold@0 SF(]])2.963 E F0 2.963(;t)C .463 +(ilde e)-2.963 F .464(xpansion, parameter and v)-.15 F .464(ariable e) +-.25 F .464(xpansion, arithmetic e)-.15 F .464 +(xpansion, command substi-)-.15 F 1.081 +(tution, process substitution, and quote remo)144 96 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 F13.58 E F0 +(must be unquoted to be recognized as primaries.)144 108 Q .502 +(When the)144 126 R F1(==)3.002 E F0(and)3.002 E F1(!=)3.002 E F0 .502(\ +operators are used, the string to the right of the operator is consider\ +ed a pat-)3.002 F 1.225 +(tern and matched according to the rules described belo)144 138 R 3.724 +(wu)-.25 G(nder)-3.724 E F1 -.1(Pa)3.724 G(tter).1 E 3.724(nM)-.15 G +(atching)-3.724 E F0 6.224(.I)C 3.724(ft)-6.224 G 1.224(he shell)-3.724 +F(option)144 150 Q F1(nocasematch)3.404 E F0 .904 +(is enabled, the match is performed without re)3.404 F -.05(ga)-.15 G +.905(rd to the case of alphabetic).05 F 2.752(characters. The)144 162 R +.251(return v)2.752 F .251(alue is 0 if the string matches \()-.25 F F1 +(==)A F0 2.751(\)o)C 2.751(rd)-2.751 G .251(oes not match \()-2.751 F F1 +(!=)A F0 2.751(\)t)C .251(he pattern, and)-2.751 F 2.5(1o)144 174 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 192 R(,)-.4 E F1(=~)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 F1(==)2.743 E F0(and)2.743 E +F1(!=)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 +204 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 216 R/F2 10/Times-Italic@0 +SF -.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.346 +(otherwise. If)144 228 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.345(sr)-.55 G(eturn)-3.345 E -.25(va)144 240 S .666 +(lue is 2.).25 F .667(If the shell option)5.667 F F1(nocasematch)3.167 E +F0 .667(is enabled, the match is performed without re)3.167 F -.05(ga) +-.15 G .667(rd to).05 F .44(the case of alphabetic characters.)144 252 R +.44(Substrings matched by parenthesized sube)5.44 F .44 +(xpressions within the)-.15 F(re)144 264 Q 4.258(gular e)-.15 F 4.258 +(xpression are sa)-.15 F -.15(ve)-.2 G 6.758(di).15 G 6.758(nt)-6.758 G +4.258(he array v)-6.758 F(ariable)-.25 E F1 -.3(BA)6.758 G(SH_REMA).3 E +(TCH)-.95 E F0 9.258(.T)C 4.259(he element of)-9.258 F F1 -.3(BA)144 276 +S(SH_REMA).3 E(TCH)-.95 E F0 .87(with inde)3.37 F 3.37(x0i)-.15 G 3.37 +(st)-3.37 G .87(he portion of the string matching the entire re)-3.37 F +.87(gular e)-.15 F(xpres-)-.15 E 3.346(sion. The)144 288 R .846 +(element of)3.346 F F1 -.3(BA)3.346 G(SH_REMA).3 E(TCH)-.95 E F0 .846 +(with inde)3.346 F(x)-.15 E F2(n)3.346 E F0 .846 +(is the portion of the string matching the)3.346 F F2(n)144 300 Q F0 +(th parenthesized sube)A(xpression.)-.15 E .786 +(Expressions may be combined using the follo)144 318 R .785 +(wing operators, listed in decreasing order of prece-)-.25 F(dence:)144 +330 Q F1(\()144 348 Q F2 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F1(\))2.5 E +F0 .522(Returns the v)180 360 R .522(alue of)-.25 F F2 -.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 +372 Q F1(!)144 384 Q F2 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F0 -.35(Tr) +180 396 S(ue if).35 E F2 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F0(is f)2.74 +E(alse.)-.1 E F2 -.2(ex)144 408 S(pr).2 E(ession1)-.37 E F1(&&)2.5 E F2 +-.2(ex)2.5 G(pr).2 E(ession2)-.37 E F0 -.35(Tr)180 420 S(ue if both).35 +E F2 -.2(ex)2.5 G(pr).2 E(ession1)-.37 E F0(and)2.5 E F2 -.2(ex)2.5 G +(pr).2 E(ession2)-.37 E F0(are true.)2.52 E F2 -.2(ex)144 432 S(pr).2 E +(ession1)-.37 E/F3 10/Symbol SF2.5 E F2 -.2(ex)2.5 G(pr).2 E +(ession2)-.37 E F0 -.35(Tr)180 444 S(ue if either).35 E F2 -.2(ex)2.5 G +(pr).2 E(ession1)-.37 E F0(or)2.5 E F2 -.2(ex)2.5 G(pr).2 E(ession2)-.37 +E F0(is true.)2.52 E(The)144 460.8 Q F1(&&)3.299 E F0(and)3.299 E F3 +3.298 E F0 .798(operators do not e)3.298 F -.25(va)-.25 G(luate) +.25 E F2 -.2(ex)3.298 G(pr).2 E(ession2)-.37 E F0 .798(if the v)3.298 F +.798(alue of)-.25 F F2 -.2(ex)3.298 G(pr).2 E(ession1)-.37 E F0 .798 +(is suf)3.298 F .798(\214cient to)-.25 F(determine the return v)144 +472.8 Q(alue of the entire conditional e)-.25 E(xpression.)-.15 E F1 +-.25(fo)108 489.6 S(r).25 E 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 .423(The list of w)144 501.6 R .423(ords follo)-.1 F(wing)-.25 +E F1(in)2.923 E F0 .423(is e)2.923 F .423 +(xpanded, generating a list of items.)-.15 F .424(The v)5.424 F(ariable) +-.25 E F2(name)2.924 E F0 .424(is set to)2.924 F .653 +(each element of this list in turn, and)144 513.6 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 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 .648(command e) +144 525.6 R -.15(xe)-.15 G(cutes).15 E F2(list)3.148 E F0 .648 +(once for each positional parameter that is set \(see)3.148 F/F4 9 +/Times-Bold@0 SF -.666(PA)3.149 G(RAMETERS).666 E F0(belo)2.899 E(w\).) +-.25 E .154(The return status is the e)144 537.6 R .153 +(xit status of the last command that e)-.15 F -.15(xe)-.15 G 2.653 +(cutes. If).15 F .153(the e)2.653 F .153(xpansion of the items)-.15 F +(follo)144 549.6 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 F1 -.25(fo)108 566.4 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.235(First, the arithmetic e) +144 578.4 R(xpression)-.15 E F2 -.2(ex)3.735 G(pr1).2 E F0 1.235(is e) +3.735 F -.25(va)-.25 G 1.236 +(luated according to the rules described belo).25 F 3.736(wu)-.25 G +(nder)-3.736 E F4 .562(ARITHMETIC EV)144 590.4 R(ALU)-1.215 E -.855(AT) +-.54 G(ION).855 E/F5 9/Times-Roman@0 SF(.)A F0 .562(The arithmetic e) +5.062 F(xpression)-.15 E F2 -.2(ex)3.062 G(pr2).2 E F0 .561(is then e) +3.061 F -.25(va)-.25 G .561(luated repeatedly until).25 F .591(it e)144 +602.4 R -.25(va)-.25 G .591(luates to zero.).25 F .592(Each time)5.591 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 .592(is e) +3.092 F -.15(xe)-.15 G .592(cuted and the arith-).15 F .229(metic e)144 +614.4 R(xpression)-.15 E F2 -.2(ex)2.729 G(pr3).2 E F0 .229(is e)2.729 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.728(te)-2.729 G -.25(va)-2.978 G +.228(luates to 1.).25 F .227(The return v)144 626.4 R .227 +(alue is the e)-.25 F .227(xit status of the last command in)-.15 F F2 +(list)2.728 E F0 .228(that is e)2.728 F -.15(xe)-.15 G .228(cuted, or f) +.15 F .228(alse if an)-.1 F 2.728(yo)-.15 G 2.728(ft)-2.728 G(he)-2.728 +E -.15(ex)144 638.4 S(pressions is in).15 E -.25(va)-.4 G(lid.).25 E F1 +(select)108 655.2 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 +.433(The list of w)144 667.2 R .433(ords follo)-.1 F(wing)-.25 E F1(in) +2.933 E F0 .432(is e)2.933 F .432(xpanded, generating a list of items.) +-.15 F .432(The set of e)5.432 F .432(xpanded w)-.15 F(ords)-.1 E .842 +(is printed on the standard error)144 679.2 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 .843 +(is omitted, the posi-)3.343 F .064(tional parameters are printed \(see) +144 691.2 R F4 -.666(PA)2.564 G(RAMETERS).666 E F0(belo)2.314 E 2.564 +(w\). The)-.25 F F1(PS3)2.564 E F0 .064(prompt is then displayed and a) +2.564 F .213(line read from the standard input.)144 703.2 R .213 +(If the line consists of a number corresponding to one of the dis-)5.213 +F 1.538(played w)144 715.2 R 1.538(ords, then the v)-.1 F 1.538(alue of) +-.25 F F2(name)4.398 E F0 1.537(is set to that w)4.218 F 4.037(ord. If) +-.1 F 1.537(the line is empty)4.037 F 4.037(,t)-.65 G 1.537(he w)-4.037 +F 1.537(ords and)-.1 F .065(prompt are displayed ag)144 727.2 R 2.565 +(ain. If)-.05 F .065(EOF is read, the command completes.)2.565 F(An) +5.066 E 2.566(yo)-.15 G .066(ther v)-2.566 F .066(alue read causes)-.25 +F(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(5)204.835 E 0 Cg EP +%%Page: 6 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-Italic@0 SF(name)144 84 Q F0 .76(to be set to null.) +3.44 F .76(The line read is sa)5.76 F -.15(ve)-.2 G 3.259(di).15 G 3.259 +(nt)-3.259 G .759(he v)-3.259 F(ariable)-.25 E/F2 10/Times-Bold@0 SF +(REPL)3.259 E(Y)-.92 E F0 5.759(.T)C(he)-5.759 E F1(list)3.349 E F0 .759 +(is e)3.939 F -.15(xe)-.15 G .759(cuted after).15 F .071 +(each selection until a)144 96 R F2(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 F2(select)2.571 E F0 .071(is the e)2.571 +F .072(xit status of the)-.15 F(last command e)144 108 Q -.15(xe)-.15 G +(cuted in).15 E F1(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 F2(case) +108 124.8 Q F1(wor)2.5 E(d)-.37 E F2(in)2.5 E F0 2.5([[)2.5 G(\(])-2.5 E +F1(pattern)2.5 E F0([)2.5 E F2(|)2.5 E F1(pattern)2.5 E F0 2.5(].)2.5 G +(.. \))-2.5 E F1(list)2.5 E F0(;; ] ...)2.5 E F2(esac)2.5 E F0(A)144 +136.8 Q F2(case)3.265 E F0 .764(command \214rst e)3.265 F(xpands)-.15 E +F1(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 F1(pattern)3.264 E F0 .764 +(in turn, using the)3.264 F .595(same matching rules as for pathname e) +144 148.8 R .595(xpansion \(see)-.15 F F2 -.1(Pa)3.095 G .596 +(thname Expansion).1 F F0(belo)3.096 E 3.096(w\). The)-.25 F F1(wor) +3.096 E(d)-.37 E F0(is)3.096 E -.15(ex)144 160.8 S 1.37 +(panded using tilde e).15 F 1.37(xpansion, parameter and v)-.15 F 1.37 +(ariable e)-.25 F 1.37(xpansion, arithmetic substituion, com-)-.15 F +1.268(mand substitution, process substitution and quote remo)144 172.8 R +-.25(va)-.15 G 3.768(l. Each).25 F F1(pattern)3.768 E F0 -.15(ex)3.768 G +1.269(amined is e).15 F(xpanded)-.15 E .631(using tilde e)144 184.8 R +.631(xpansion, parameter and v)-.15 F .631(ariable e)-.25 F .631 +(xpansion, arithmetic substituion, command substi-)-.15 F 1.516 +(tution, and process substitution.)144 196.8 R 1.516 +(If the shell option)6.516 F F2(nocasematch)4.016 E F0 1.517 +(is enabled, the match is per)4.017 F(-)-.2 E 1.347(formed without re) +144 208.8 R -.05(ga)-.15 G 1.347 +(rd to the case of alphabetic characters.).05 F 1.346 +(When a match is found, the corre-)6.347 F(sponding)144 220.8 Q F1(list) +3.579 E F0 1.079(is e)3.579 F -.15(xe)-.15 G 3.579(cuted. After).15 F +1.079(the \214rst match, no subsequent matches are attempted.)3.579 F +1.08(The e)6.08 F(xit)-.15 E .006(status is zero if no pattern matches.) +144 232.8 R .006(Otherwise, it is the e)5.006 F .006 +(xit status of the last command e)-.15 F -.15(xe)-.15 G .006(cuted in) +.15 F F1(list)144 244.8 Q F0(.)A F2(if)108 261.6 Q F1(list)2.5 E F0(;)A +F2(then)2.5 E F1(list;)2.5 E F0([)2.5 E F2(elif)2.5 E F1(list)2.5 E F0 +(;)A F2(then)2.5 E F1(list)2.5 E F0 2.5(;].)C(.. [)-2.5 E F2(else)2.5 E +F1(list)2.5 E F0 2.5(;])C F2<8c>A F0(The)144 273.6 Q F2(if)2.977 E F1 +(list)3.067 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 F2(then)2.978 E +F1(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 F2(elif)2.978 E F1(list)2.978 E F0 +1.088(is e)144 285.6 R -.15(xe)-.15 G 1.088(cuted in turn, and if its e) +.15 F 1.087(xit status is zero, the corresponding)-.15 F F2(then)3.587 E +F1(list)3.587 E F0 1.087(is e)3.587 F -.15(xe)-.15 G 1.087 +(cuted and the).15 F .103(command completes.)144 297.6 R .103 +(Otherwise, the)5.103 F F2(else)2.603 E F1(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 .104(xit sta-)-.15 F +(tus of the last command e)144 309.6 Q -.15(xe)-.15 G +(cuted, or zero if no condition tested true.).15 E F2(while)108 326.4 Q +F1(list)2.5 E F0(;)A F2(do)2.5 E F1(list)2.5 E F0(;)A F2(done)2.5 E +(until)108 338.4 Q F1(list)2.5 E F0(;)A F2(do)2.5 E F1(list)2.5 E F0(;)A +F2(done)2.5 E F0(The)144 350.4 Q F2(while)3.104 E F0 .603 +(command continuously e)3.104 F -.15(xe)-.15 G .603(cutes the).15 F F2 +(do)3.103 E F1(list)3.103 E F0 .603(as long as the last command in)3.103 +F F1(list)3.103 E F0(returns)3.103 E .47(an e)144 362.4 R .47 +(xit status of zero.)-.15 F(The)5.47 E F2(until)2.97 E F0 .471 +(command is identical to the)2.97 F F2(while)2.971 E F0 .471(command, e) +2.971 F .471(xcept that the test)-.15 F .096(is ne)144 374.4 R -.05(ga) +-.15 G .096(ted; the).05 F F2(do)2.596 E F1(list)2.686 E F0 .095(is e) +3.276 F -.15(xe)-.15 G .095(cuted as long as the last command in).15 F +F1(list)2.685 E F0 .095(returns a non-zero e)3.275 F .095(xit status.) +-.15 F 1.306(The e)144 386.4 R 1.306(xit status of the)-.15 F F2(while) +3.806 E F0(and)3.806 E F2(until)3.807 E F0 1.307(commands is the e)3.807 +F 1.307(xit status of the last)-.15 F F2(do)3.807 E F1(list)3.807 E F0 +(command)3.807 E -.15(exe)144 398.4 S(cuted, or zero if none w).15 E +(as e)-.1 E -.15(xe)-.15 G(cuted.).15 E F2(Shell Function De\214nitions) +87 415.2 Q F0 2.698(As)108 427.2 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 439.2 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([)108 456 Q F2 +(function)2.5 E F0(])2.5 E 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.402(This de\214nes a function named)144 468 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 F2 +(function)3.902 E F0 1.402(is optional.)3.902 F 1.403(If the)6.402 F F2 +(function)3.903 E F0(reserv)144 480 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 492 Q F1(compound\255command)2.784 E F0(\(see)3.354 E F2 .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 504 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 F2 .044(Compound Commands) +2.544 F F0(abo)144 516 Q -.15(ve)-.15 G(.).15 E F1(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 F1(name)4.171 E F0 1.671 +(is speci\214ed as the name of a simple)4.171 F 3.009(command. An)144 +528 R 3.009(yr)-.15 G .509(edirections \(see)-3.009 F/F3 9/Times-Bold@0 +SF(REDIRECTION)3.009 E F0(belo)2.759 E .509 +(w\) speci\214ed when a function is de\214ned are)-.25 F .58 +(performed when the function is e)144 540 R -.15(xe)-.15 G 3.08 +(cuted. The).15 F -.15(ex)3.081 G .581 +(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 +552 R 2.677(xists. When)-.15 F -.15(exe)2.677 G .177(cuted, the).15 F +-.15(ex)144 564 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 F3(FUNC-)3.14 E +(TIONS)144 576 Q F0(belo)2.25 E -.65(w.)-.25 G(\)).65 E/F4 10.95 +/Times-Bold@0 SF(COMMENTS)72 592.8 Q F0 .982(In a non-interacti)108 +604.8 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 F2(interacti)3.482 E -.1 +(ve)-.1 G(_comments).1 E F0 .982(option to the)3.482 F F2(shopt)3.482 E +F0 -.2(bu)108 616.8 S .951(iltin is enabled \(see).2 F F3 .952(SHELL B) +3.451 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 F2(#)3.452 E +F0 .952(causes that w)3.452 F(ord)-.1 E .605 +(and all remaining characters on that line to be ignored.)108 628.8 R +.604(An interacti)5.605 F .904 -.15(ve s)-.25 H .604(hell without the) +.15 F F2(interacti)3.104 E -.1(ve)-.1 G(_com-).1 E(ments)108 640.8 Q F0 +1.336(option enabled does not allo)3.836 F 3.836(wc)-.25 G 3.836 +(omments. The)-3.836 F F2(interacti)3.836 E -.1(ve)-.1 G(_comments).1 E +F0 1.337(option is on by def)3.837 F 1.337(ault in)-.1 F(interacti)108 +652.8 Q .3 -.15(ve s)-.25 H(hells.).15 E F4 -.11(QU)72 669.6 S -.438(OT) +.11 G(ING).438 E F1(Quoting)108 681.6 Q F0 .478(is used to remo)2.978 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 .477(Quoting can be)5.477 F .184 +(used to disable special treatment for special characters, to pre)108 +693.6 R -.15(ve)-.25 G .185(nt reserv).15 F .185(ed w)-.15 F .185 +(ords from being recognized as)-.1 F(such, and to pre)108 705.6 Q -.15 +(ve)-.25 G(nt parameter e).15 E(xpansion.)-.15 E .289(Each of the)108 +722.4 R F1(metac)2.789 E(har)-.15 E(acter)-.15 E(s)-.1 E F0 .288 +(listed abo)2.789 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 +(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(6)204.835 E 0 Cg EP +%%Page: 7 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(quoted if it is to represent itself.)108 84 Q 1.344 +(When the command history e)108 100.8 R 1.344(xpansion f)-.15 F 1.344 +(acilities are being used \(see)-.1 F/F1 9/Times-Bold@0 SF(HIST)3.844 E +(OR)-.162 E 3.594(YE)-.315 G(XP)-3.594 E(ANSION)-.666 E F0(belo)3.595 E +1.345(w\), the)-.25 F/F2 10/Times-Italic@0 SF(history e)108 112.8 Q +(xpansion)-.2 E F0(character)2.5 E 2.5(,u)-.4 G(sually)-2.5 E/F3 10 +/Times-Bold@0 SF(!)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 129.6 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.975(An)108 146.4 S .475 +(on-quoted backslash \()-2.975 F F3(\\)A F0 2.974(\)i)C 2.974(st)-2.974 +G(he)-2.974 E F2 .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 .474(xt character that)-.15 F(follo)108 158.4 +Q 1.553(ws, with the e)-.25 F 1.553(xception of . If)-.25 F(a)4.053 E F3(\\)4.053 E F0( pair appears, and the backslash is not itself)-.25 F 1.123 +(quoted, the)108 170.4 R F3(\\)3.623 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.122(rom the input stream and)-3.622 F +(ef)108 182.4 Q(fecti)-.25 E -.15(ve)-.25 G(ly ignored\).).15 E .295 +(Enclosing characters in single quotes preserv)108 199.2 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 211.2 Q -.15(ve) +-.25 G 2.5(nw).15 G(hen preceded by a backslash.)-2.5 E .034 +(Enclosing characters in double quotes preserv)108 228 R .034 +(es the literal v)-.15 F .034 +(alue of all characters within the quotes, with the)-.25 F -.15(ex)108 +240 S .827(ception of).15 F F3($)3.327 E F0(,)A F3(`)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(`)3.328 E F0 .828 +(retain their special)3.328 F .075(meaning within double quotes.)108 252 +R .074(The backslash retains its special meaning only when follo)5.075 F +.074(wed by one of the)-.25 F(follo)108 264 Q .204(wing characters:)-.25 +F F3($)2.704 E F0(,)A F3(`)2.704 E F0(,)A F3(")3.537 E F0(,).833 E F3 +(\\)2.704 E F0 2.704(,o)C(r)-2.704 E F3()2.705 E F0 5.205(.A)C +.205(double quote may be quoted within double quotes by pre-)-2.5 F .082 +(ceding it with a backslash.)108 276 R .082(If enabled, history e)5.082 +F .082(xpansion will be performed unless an)-.15 F F3(!)2.581 E F0 .081 +(appearing in double)5.081 F(quotes is escaped using a backslash.)108 +288 Q(The backslash preceding the)5 E F3(!)2.5 E F0(is not remo)5 E -.15 +(ve)-.15 G(d.).15 E(The special parameters)108 304.8 Q F3(*)2.5 E F0 +(and)2.5 E F3(@)2.5 E F0(ha)2.5 E .3 -.15(ve s)-.2 H +(pecial meaning when in double quotes \(see).15 E F1 -.666(PA)2.5 G +(RAMETERS).666 E F0(belo)2.25 E(w\).)-.25 E -.8(Wo)108 321.6 S .211 +(rds of the form).8 F F3($)2.711 E F0<08>A F2(string)A F0 2.711<0861>C +.211(re treated specially)-2.711 F 5.211(.T)-.65 G .211(he w)-5.211 F +.211(ord e)-.1 F .212(xpands to)-.15 F F2(string)2.712 E F0 2.712(,w)C +.212(ith backslash-escaped char)-2.712 F(-)-.2 E .605 +(acters replaced as speci\214ed by the ANSI C standard.)108 333.6 R .604 +(Backslash escape sequences, if present, are decoded)5.605 F(as follo) +108 345.6 Q(ws:)-.25 E F3(\\a)144 357.6 Q F0(alert \(bell\))28.22 E F3 +(\\b)144 369.6 Q F0(backspace)27.66 E F3(\\e)144 381.6 Q F0 +(an escape character)28.78 E F3(\\f)144 393.6 Q F0(form feed)29.89 E F3 +(\\n)144 405.6 Q F0(ne)27.66 E 2.5(wl)-.25 G(ine)-2.5 E F3(\\r)144 417.6 +Q F0(carriage return)28.78 E F3(\\t)144 429.6 Q F0(horizontal tab)29.89 +E F3(\\v)144 441.6 Q F0 -.15(ve)28.22 G(rtical tab).15 E F3(\\\\)144 +453.6 Q F0(backslash)30.44 E F3<5c08>144 465.6 Q F0(single quote)30.44 E +F3(\\)144 477.6 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 F3(\\x)144 489.6 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 F3(\\c)144 501.6 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 518.4 Q(\ +xpanded result is single-quoted, as if the dollar sign had not been pre\ +sent.)-.15 E 2.985(Ad)108 535.2 S .485 +(ouble-quoted string preceded by a dollar sign \()-2.985 F F3($)A F0 +2.986(\)w)C .486(ill cause the string to be translated according to the) +-2.986 F .118(current locale.)108 547.2 R .118(If the current locale is) +5.118 F F3(C)2.618 E F0(or)2.618 E F3(POSIX)2.618 E F0 2.618(,t)C .117 +(he dollar sign is ignored.)-2.618 F .117 +(If the string is translated and)5.117 F +(replaced, the replacement is double-quoted.)108 559.2 Q/F4 10.95 +/Times-Bold@0 SF -.81(PA)72 576 S(RAMETERS).81 E F0(A)108 588 Q F2(par) +4.592 E(ameter)-.15 E F0 .842(is an entity that stores v)4.072 F 3.342 +(alues. It)-.25 F .842(can be a)3.342 F F2(name)3.343 E F0 3.343(,an).18 +G(umber)-3.343 E 3.343(,o)-.4 G 3.343(ro)-3.343 G .843 +(ne of the special characters)-3.343 F .823(listed belo)108 600 R 3.323 +(wu)-.25 G(nder)-3.323 E F3 .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 612 Q F0 .368(and zero or more)2.868 F F2(attrib)2.868 E +(utes)-.2 E F0 5.369(.A)C(ttrib)-5.369 E .369 +(utes are assigned using the)-.2 F F3(declar)2.869 E(e)-.18 E F0 -.2(bu) +2.869 G .369(iltin command \(see).2 F F3(declar)2.869 E(e)-.18 E F0 +(belo)108 624 Q 2.5(wi)-.25 G(n)-2.5 E F1(SHELL B)2.5 E(UIL)-.09 E +(TIN COMMANDS)-.828 E/F5 9/Times-Roman@0 SF(\).)A F0 2.755(Ap)108 640.8 +S .255(arameter is set if it has been assigned a v)-2.755 F 2.754 +(alue. The)-.25 F .254(null string is a v)2.754 F .254(alid v)-.25 F +2.754(alue. Once)-.25 F 2.754(av)2.754 G .254(ariable is set, it)-3.004 +F(may be unset only by using the)108 652.8 Q F3(unset)2.5 E F0 -.2(bu) +2.5 G(iltin command \(see).2 E F1(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS) +-.828 E F0(belo)2.25 E(w\).)-.25 E(A)108 669.6 Q F2(variable)2.79 E F0 +(may be assigned to by a statement of the form)2.68 E F2(name)144 686.4 +Q F0(=[)A F2(value)A F0(])A(If)108 703.2 Q F2(value)3.022 E F0 .232 +(is not gi)2.912 F -.15(ve)-.25 G .232(n, the v).15 F .232 +(ariable is assigned the null string.)-.25 F(All)5.233 E F2(values)3.023 +E F0(under)3.003 E .233(go tilde e)-.18 F .233(xpansion, parameter)-.15 +F .515(and v)108 715.2 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 F1(EXP)3.015 E(ANSION)-.666 E F0(belo)108 727.2 Q 2.698 +(w\). If)-.25 F .198(the v)2.698 F .198(ariable has its)-.25 F F3 +(integer)2.698 E F0(attrib)2.698 E .198(ute set, then)-.2 F F2(value) +2.988 E F0 .198(is e)2.878 F -.25(va)-.25 G .199 +(luated as an arithmetic e).25 F .199(xpression e)-.15 F -.15(ve)-.25 G +(n).15 E(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(7)204.835 E 0 Cg EP +%%Page: 8 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 .902(if the $\(\(...\)\) e)108 84 R .902 +(xpansion is not used \(see)-.15 F/F1 10/Times-Bold@0 SF .901 +(Arithmetic Expansion)3.401 F F0(belo)3.401 E 3.401(w\). W)-.25 F .901 +(ord splitting is not performed,)-.8 F 1.178(with the e)108 96 R 1.178 +(xception of)-.15 F F1("$@")3.678 E F0 1.178(as e)3.678 F 1.179 +(xplained belo)-.15 F 3.679(wu)-.25 G(nder)-3.679 E F1 1.179(Special P) +3.679 F(arameters)-.1 E F0 6.179(.P)C 1.179(athname e)-6.329 F 1.179 +(xpansion is not)-.15 F 3.649(performed. Assignment)108 108 R 1.149 +(statements may also appear as ar)3.649 F 1.148(guments to the)-.18 F F1 +(alias)3.648 E F0(,)A F1(declar)3.648 E(e)-.18 E F0(,)A F1(typeset)3.648 +E F0(,)A F1(export)3.648 E F0(,)A F1 -.18(re)108 120 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 +.376(In the conte)108 136.8 R .376 +(xt where an assignment statement is assigning a v)-.15 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 148.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 .372 +(for which the inte)108 160.8 R .372(ger attrib)-.15 F .372 +(ute has been set,)-.2 F/F2 10/Times-Italic@0 SF(value)2.872 E F0 .372 +(is e)2.872 F -.25(va)-.25 G .372(luated as an arithmetic e).25 F .373 +(xpression and added to the)-.15 F -.25(va)108 172.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 184.8 R F1(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 .32(appended to the array be)108 196.8 R +.32(ginning at one greater than the array')-.15 F 2.82(sm)-.55 G .32 +(aximum inde)-2.82 F 2.82(x. When)-.15 F .32(applied to a string-)2.82 F +-.25(va)108 208.8 S(lued v).25 E(ariable,)-.25 E F2(value)2.5 E F0(is e) +2.5 E(xpanded and appended to the v)-.15 E(ariable')-.25 E 2.5(sv)-.55 G +(alue.)-2.75 E F1 -.2(Po)87 225.6 S(sitional P).2 E(arameters)-.1 E F0 +(A)108 237.6 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 249.6 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 261.6 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 273.6 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 +1.403(When a positional parameter consisting of more than a single digi\ +t is e)108 290.4 R 1.404(xpanded, it must be enclosed in)-.15 F +(braces \(see)108 302.4 Q F3(EXP)2.5 E(ANSION)-.666 E F0(belo)2.25 E +(w\).)-.25 E F1(Special P)87 319.2 Q(arameters)-.1 E F0 1.675 +(The shell treats se)108 331.2 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 343.2 Q(wed.)-.25 E F1(*)108 355.2 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 367.2 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 379.2 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 391.2 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 403.2 Q F0(is null, the parameters are joined without interv) +2.25 E(ening separators.)-.15 E F1(@)108 415.2 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 427.2 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 439.2 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 +451.2 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 463.2 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 475.2 Q 2.5(ya)-.15 G(re remo)-2.5 E -.15 +(ve)-.15 G(d\).).15 E F1(#)108 487.2 Q F0 +(Expands to the number of positional parameters in decimal.)31 E F1(?) +108 499.2 Q F0(Expands to the status of the most recently e)31 E -.15 +(xe)-.15 G(cuted fore).15 E(ground pipeline.)-.15 E F1108 511.2 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 523.2 Q F12.5 E F0(option\).)2.5 E F1($)108 535.2 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 547.2 Q F1(!)108 559.2 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 571.2 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 583.2 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 595.2 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 607.2 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 619.2 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 631.2 R .692 +(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 643.2 Q .57(vious command, after e)-.25 F 3.07 +(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 655.2 +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 +667.2 Q(ed.)-.1 E F1(Shell V)87 684 Q(ariables)-.92 E F0(The follo)108 +696 Q(wing v)-.25 E(ariables are set by the shell:)-.25 E F1 -.3(BA)108 +712.8 S(SH).3 E F0(Expands to the full \214le name 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 +(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(8)204.835 E 0 Cg EP +%%Page: 9 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/F1 10/Times-Bold@0 SF -.3(BA)108 84 S(SH_ARGC).3 E F0 1.039 +(An array v)144 96 R 1.039(ariable whose v)-.25 F 1.039 +(alues are the number of parameters in each frame of the current bash) +-.25 F -.15(exe)144 108 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 120 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 1.525(parameters passed is pushed onto)144 +132 R F1 -.3(BA)4.024 G(SH_ARGC).3 E F0 6.524(.T)C 1.524(he shell sets) +-6.524 F F1 -.3(BA)4.024 G(SH_ARGC).3 E F0 1.524(only when in)4.024 F +-.15(ex)144 144 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 156 S(SH_ARGV).3 E F0 1.091(An array v)144 168 +R 1.091(ariable containing all of the parameters in the current bash e) +-.25 F -.15(xe)-.15 G 1.092(cution call stack.).15 F(The)6.092 E .275(\ +\214nal parameter of the last subroutine call is at the top of the stac\ +k; the \214rst parameter of the initial)144 180 R 1.424 +(call is at the bottom.)144 192 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 F1 -.3(BA)144 204 S(SH_ARGV).3 E F0 6.091(.T)C 1.091(he shell sets) +-6.091 F F1 -.3(BA)3.591 G(SH_ARGV).3 E F0 1.091(only when in e)3.591 F +1.091(xtended deb)-.15 F 1.09(ugging mode \(see the)-.2 F +(description of the)144 216 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 228 S(SH_COMMAND).3 E F0 1.242(The command currently being e)144 +240 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 +252 Q -.15(xe)-.15 G(cuting at the time of the trap.).15 E F1 -.3(BA)108 +264 S(SH_EXECUTION_STRING).3 E F0(The command ar)144 276 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 288 S(SH_LINENO).3 E F0 .034 +(An array v)144 300 R .034(ariable whose members are the line numbers i\ +n source \214les corresponding to each mem-)-.25 F 2.944(ber of)144 312 +R F1(FUNCN)5.444 E(AME)-.2 E F0(.)A F1(${B)7.944 E(ASH_LINENO[)-.3 E/F2 +10/Times-Italic@0 SF($i)A F1(]})A F0 2.944 +(is the line number in the source \214le where)5.444 F F1(${FUNCN)144 +324 Q(AME[)-.2 E F2($ifP)A F1(]})A F2 12.109(was called.)14.609 F 12.109 +(The corr)17.109 F 12.109(esponding sour)-.37 F 12.108 +(ce \214le name is)-.37 F F1(${B)144 336 Q(ASH_SOURCE[)-.3 E F2($i)A F1 +2.5(]}. Use)B(LINENO to obtain the curr)2.5 E(ent line number)-.18 E(.) +-1 E -.3(BA)108 348 S(SH_REMA).3 E(TCH)-.95 E F0 .005(An array v)144 360 +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 372 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 384 R(x)-.15 E +F2(n)3.497 E F0 .997(is the portion of the string matching the)3.497 F +F2(n)3.498 E F0 .998(th parenthesized sube)B(xpres-)-.15 E 2.5 +(sion. This)144 396 R -.25(va)2.5 G(riable is read-only).25 E(.)-.65 E +F1 -.3(BA)108 408 S(SH_SOURCE).3 E F0 .89(An array v)144 420 R .889(ari\ +able whose members are the source \214lenames corresponding to the elem\ +ents in the)-.25 F F1(FUNCN)144 432 Q(AME)-.2 E F0(array v)2.5 E +(ariable.)-.25 E F1 -.3(BA)108 444 S(SH_SUBSHELL).3 E F0 .401 +(Incremented by one each time a subshell or subshell en)144 456 R .401 +(vironment is spa)-.4 F 2.902(wned. The)-.15 F .402(initial v)2.902 F +.402(alue is)-.25 F(0.)144 468 Q F1 -.3(BA)108 480 S(SH_VERSINFO).3 E F0 +2.645(Ar)144 492 S .145(eadonly array v)-2.645 F .144 +(ariable whose members hold v)-.25 F .144 +(ersion information for this instance of)-.15 F F1(bash)2.644 E F0 5.144 +(.T)C(he)-5.144 E -.25(va)144 504 S +(lues assigned to the array members are as follo).25 E(ws:)-.25 E F1 -.3 +(BA)144 522 S(SH_VERSINFO[).3 E F0(0)A F1(])A F0(The major v)24.74 E +(ersion number \(the)-.15 E F2 -.37(re)2.5 G(lease).37 E F0(\).)A F1 -.3 +(BA)144 534 S(SH_VERSINFO[).3 E F0(1)A F1(])A F0(The minor v)24.74 E +(ersion number \(the)-.15 E F2(ver)2.5 E(sion)-.1 E F0(\).)A F1 -.3(BA) +144 546 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 558 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 570 S +(SH_VERSINFO[).3 E F0(4)A F1(])A F0(The release status \(e.g.,)24.74 E +F2(beta1)2.5 E F0(\).)A F1 -.3(BA)144 582 S(SH_VERSINFO[).3 E F0(5)A F1 +(])A F0(The v)24.74 E(alue of)-.25 E F1(MA)2.5 E(CHTYPE)-.55 E F0(.)A F1 +-.3(BA)108 598.8 S(SH_VERSION).3 E F0 +(Expands to a string describing the v)144 610.8 Q +(ersion of this instance of)-.15 E F1(bash)2.5 E F0(.)A F1(COMP_CW)108 +627.6 Q(ORD)-.1 E F0 .396(An inde)144 639.6 R 2.896(xi)-.15 G(nto)-2.896 +E F1(${COMP_W)2.896 E(ORDS})-.1 E F0 .396(of the w)2.896 F .396 +(ord containing the current cursor position.)-.1 F .397(This v)5.397 F +(ari-)-.25 E 1.181(able is a)144 651.6 R -.25(va)-.2 G 1.181 +(ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.681 +(db).1 G 3.681(yt)-3.681 G 1.18(he programmable completion f)-3.681 F +1.18(acilities \(see)-.1 F F1(Pr)144 663.6 Q(ogrammable Completion)-.18 +E F0(belo)2.5 E(w\).)-.25 E F1(COMP_LINE)108 680.4 Q F0 1.207 +(The current command line.)144 692.4 R 1.208(This v)6.208 F 1.208 +(ariable is a)-.25 F -.25(va)-.2 G 1.208 +(ilable only in shell functions and e).25 F 1.208(xternal com-)-.15 F +2.849(mands in)144 704.4 R -.2(vo)-.4 G -.1(ke).2 G 5.349(db).1 G 5.349 +(yt)-5.349 G 2.849(he programmable completion f)-5.349 F 2.849 +(acilities \(see)-.1 F F1(Pr)5.349 E 2.848(ogrammable Completion)-.18 F +F0(belo)144 716.4 Q(w\).)-.25 E(GNU Bash-3.2)72 768 Q(2006 Jan 26) +149.845 E(9)204.835 E 0 Cg EP +%%Page: 10 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(COMP_POINT)108 84 Q F0 .666(The inde)144 96 +R 3.166(xo)-.15 G 3.166(ft)-3.166 G .666 +(he current cursor position relati)-3.166 F .966 -.15(ve t)-.25 H 3.166 +(ot).15 G .666(he be)-3.166 F .666(ginning of the current command.)-.15 +F .667(If the)5.667 F .535 +(current cursor position is at the end of the current command, the v)144 +108 R .534(alue of this v)-.25 F .534(ariable is equal to)-.25 F F1 +(${#COMP_LINE})144 120 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 132 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_W)108 +148.8 Q(ORDBREAKS)-.1 E F0 1.284 +(The set of characters that the Readline library treats as w)144 160.8 R +1.283(ord separators when performing w)-.1 F(ord)-.1 E 3.125 +(completion. If)144 172.8 R/F2 9/Times-Bold@0 SF(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 184.8 Q F1(COMP_W) +108 201.6 Q(ORDS)-.1 E F0 .654(An array v)144 213.6 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 3.477(line. This)144 225.6 R -.25(va) +3.477 G .977(riable is a).25 F -.25(va)-.2 G .978 +(ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.478 +(db).1 G 3.478(yt)-3.478 G .978(he programmable completion)-3.478 F -.1 +(fa)144 237.6 S(cilities \(see).1 E F1(Pr)2.5 E(ogrammable Completion) +-.18 E F0(belo)2.5 E(w\).)-.25 E F1(DIRST)108 254.4 Q -.55(AC)-.9 G(K) +.55 E F0 2.26(An array v)144 266.4 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 278.4 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 290.4 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 302.4 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 314.4 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.85 +(ni).15 G(f)-2.85 E(it is subsequently reset.)144 326.4 Q F1(EUID)108 +343.2 Q F0 1.103(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 355.2 Q(.)-.65 E F1(FUNCN)108 372 Q(AME) +-.2 E F0 .479(An array v)144 384 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 396 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 .81 +(element is "main".)144 408 R .81(This v)5.81 F .81(ariable e)-.25 F .81 +(xists only when a shell function is e)-.15 F -.15(xe)-.15 G 3.31 +(cuting. Assignments).15 F(to)3.31 E F2(FUNCN)144 420 Q(AME)-.18 E F0 +(ha)2.634 E .684 -.15(ve n)-.2 H 2.884(oe).15 G -.25(ff)-2.884 G .384 +(ect and return an error status.).25 F(If)5.385 E F2(FUNCN)2.885 E(AME) +-.18 E F0 .385(is unset, it loses its special)2.635 F(properties, e)144 +432 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(GR)108 448.8 Q(OUPS)-.3 E F0 1.229 +(An array v)144 460.8 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 472.8 R F2(GR)3.096 E(OUPS)-.27 E F0(ha)2.847 E .897 +-.15(ve n)-.2 H 3.097(oe).15 G -.25(ff)-3.097 G .597 +(ect and return an error status.).25 F(If)5.597 E F2(GR)3.097 E(OUPS) +-.27 E F0 .597(is unset, it loses its spe-)2.847 F(cial properties, e) +144 484.8 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 501.6 Q F0 .356 +(The history number)144 513.6 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 F2 +(HISTCMD)2.855 E F0 .355(is unset, it)2.605 F +(loses its special properties, e)144 525.6 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 542.4 Q(AME)-.2 E F0 +(Automatically set to the name of the current host.)144 554.4 Q F1 +(HOSTTYPE)108 571.2 Q F0 .222(Automatically set to a string that unique\ +ly describes the type of machine on which)144 583.2 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 595.2 R +(def)2.5 E(ault is system-dependent.)-.1 E F1(LINENO)108 612 Q F0 1.408 +(Each time this parameter is referenced, the shell substitutes a decima\ +l number representing the)144 624 R .078(current sequential line number\ + \(starting with 1\) within a script or function.)144 636 R .079 +(When not in a script or)5.078 F .307(function, the v)144 648 R .307 +(alue substituted is not guaranteed to be meaningful.)-.25 F(If)5.306 E +F2(LINENO)2.806 E F0 .306(is unset, it loses its)2.556 F +(special properties, e)144 660 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 676.8 +Q(CHTYPE)-.55 E F0 .898(Automatically set to a string that fully descri\ +bes the system type on which)144 688.8 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 700.8 +Q/F3 10/Times-Italic@0 SF(cpu-company-system)2.5 E F0 2.5(format. The) +2.5 F(def)2.5 E(ault is system-dependent.)-.1 E(GNU Bash-3.2)72 768 Q +(2006 Jan 26)149.845 E(10)199.835 E 0 Cg EP +%%Page: 11 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(OLDPWD)108 84 Q F0(The pre)144 96 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 112.8 Q(ARG)-.9 E F0 1.627(The v)144 124.8 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 136.8 S(IL).09 E +(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1(OPTIND)108 153.6 Q +F0 1.651(The inde)144 165.6 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 177.6 S(IL).09 E(TIN COMMANDS)-.828 E F0 +(belo)2.25 E(w\).)-.25 E F1(OSTYPE)108 194.4 Q F0 .329(Automatically se\ +t to a string that describes the operating system on which)144 206.4 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 218.4 Q(ault is system-dependent.)-.1 E F1(PIPEST)108 +235.2 Q -.95(AT)-.9 G(US).95 E F0 .61(An array v)144 247.2 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 259.2 Q -.15 +(xe)-.15 G(cuted fore).15 E +(ground pipeline \(which may contain only a single command\).)-.15 E F1 +(PPID)108 276 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 292.8 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 309.6 Q F0 .566 +(Each time this parameter is referenced, a random inte)144 321.6 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 +333.6 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 345.6 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(REPL)108 362.4 Q(Y)-.92 E F0 +(Set to the line of input read by the)144 374.4 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 391.2 Q F0 .795(Each time \ +this parameter is referenced, the number of seconds since shell in)144 +403.2 R -.2(vo)-.4 G .795(cation is returned.).2 F .712(If a v)144 415.2 +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 427.2 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 439.2 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 456 Q F0 3.262(Ac)144 468 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 480 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 492 R F2 +(SHELLOPTS)2.519 E F0 .019(are those reported as)2.269 F/F4 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 .02 +(ariable is in the en)-.25 F(vironment)-.4 E(when)144 504 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 516 Q(ariable is read-only)-.25 E(.)-.65 E F1(SHL)108 532.8 +Q(VL)-.92 E F0(Incremented by one each time an instance of)144 544.8 Q +F1(bash)2.5 E F0(is started.)2.5 E F1(UID)108 561.6 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 .993(The follo)108 578.4 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 .994 +(alue to a v)-.25 F(ariable;)-.25 E(these cases are noted belo)108 590.4 +Q -.65(w.)-.25 G F1 -.3(BA)108 607.2 S(SH_ENV).3 E F0 .506 +(If this parameter is set when)144 619.2 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 631.2 R F4 +(~/.bashr)2.855 E(c)-.37 E F0 5.355(.T).31 G .355(he v)-5.355 F .355 +(alue of)-.25 F F2 -.27(BA)2.855 G(SH_ENV).27 E F0 .355(is subjected) +2.605 F .525(to parameter e)144 643.2 R .525 +(xpansion, command substitution, and arithmetic e)-.15 F .525 +(xpansion before being interpreted)-.15 F(as a \214le name.)144 655.2 Q +F2 -.666(PA)5 G(TH)-.189 E F0 +(is not used to search for the resultant \214le name.)2.25 E F1(CDP)108 +667.2 Q -.95(AT)-.74 G(H).95 E F0 1.247(The search path for the)144 +679.2 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 691.2 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 10/Courier@0 SF(".:~:/usr")144 703.2 Q F0(.)A +(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(11)199.835 E 0 Cg EP +%%Page: 12 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(COLUMNS)108 84 Q F0 .425(Used by the)144 96 +R F1(select)2.925 E F0 -.2(bu)2.925 G .425(iltin command to determine t\ +he terminal width when printing selection lists.).2 F +(Automatically set upon receipt of a SIGWINCH.)144 108 Q F1(COMPREPL)108 +120 Q(Y)-.92 E F0 .848(An array v)144 132 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 144 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 156 Q +(CS)-.55 E F0(If)144 168 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/F2 10 +/Courier@0 SF(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 180 Q +(uf)-.2 E(fer and disables line editing.)-.25 E F1(FCEDIT)108 192 Q F0 +(The def)144 204 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 216 Q F0 2.599(Ac)144 228 S .098 +(olon-separated list of suf)-2.599 F<8c78>-.25 E .098 +(es to ignore when performing \214lename completion \(see)-.15 F/F3 9 +/Times-Bold@0 SF(READLINE)2.598 E F0(belo)144 240 Q 2.704(w\). A)-.25 F +.204(\214lename whose suf)2.704 F .205 +(\214x matches one of the entries in)-.25 F F3(FIGNORE)2.705 E F0 .205 +(is e)2.455 F .205(xcluded from the list)-.15 F(of matched \214lenames.) +144 252 Q 2.5(As)5 G(ample v)-2.5 E(alue is)-.25 E F2(".o:~")2.5 E F0(.) +A F1(GLOBIGNORE)108 264 Q F0 3.118(Ac)144 276 S .618(olon-separated lis\ +t of patterns de\214ning the set of \214lenames to be ignored by pathna\ +me e)-3.118 F(xpan-)-.15 E 3.131(sion. If)144 288 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 300 Q/F4 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 312 Q(OL)-.3 E F0 2.654(Ac)144 324 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 336 R .49(alues includes)-.25 F/F5 10 +/Times-Italic@0 SF(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 348 R 3.058(Av)5.558 +G .558(alue of)-3.308 F F5(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 360 S .458(alue of)-3.208 F F5(ignor)2.968 E(eboth)-.37 E F0 +.458(is shorthand for)3.238 F F5(ignor)2.959 E(espace)-.37 E F0(and) +2.959 E F5(ignor)2.959 E(edups)-.37 E F0 5.459(.A)C -.25(va)-2.5 G .459 +(lue of).25 F F5(er)2.959 E(asedups)-.15 E F0(causes)2.959 E .699 +(all pre)144 372 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 +(sa)144 384 Q -.15(ve)-.2 G 4.296(d. An).15 F 4.296(yv)-.15 G 1.797 +(alue not in the abo)-4.546 F 2.097 -.15(ve l)-.15 H 1.797 +(ist is ignored.).15 F(If)6.797 E F1(HISTCONTR)4.297 E(OL)-.3 E F0 1.797 +(is unset, or does not)4.297 F .613(include a v)144 396 R .612(alid v) +-.25 F .612(alue, all lines read by the shell parser are sa)-.25 F -.15 +(ve)-.2 G 3.112(do).15 G 3.112(nt)-3.112 G .612 +(he history list, subject to the)-3.112 F -.25(va)144 408 S .985(lue of) +.25 F F1(HISTIGNORE)3.485 E F0 5.986(.T)C .986 +(he second and subsequent lines of a multi-line compound command)-5.986 +F(are not tested, and are added to the history re)144 420 Q -.05(ga)-.15 +G(rdless of the v).05 E(alue of)-.25 E F1(HISTCONTR)2.5 E(OL)-.3 E F0(.) +A F1(HISTFILE)108 432 Q F0 .181 +(The name of the \214le in which command history is sa)144 444 R -.15 +(ve)-.2 G 2.681(d\().15 G(see)-2.681 E F3(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 456 Q F5(~/.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 468 Q F0 1.622 +(The maximum number of lines contained in the history \214le.)144 480 R +1.623(When this v)6.623 F 1.623(ariable is assigned a)-.25 F -.25(va)144 +492 S .311(lue, the history \214le is truncated, if necessary).25 F +2.811(,t)-.65 G 2.811(oc)-2.811 G .311 +(ontain no more than that number of lines.)-2.811 F(The)5.311 E(def)144 +504 Q .386(ault v)-.1 F .386(alue is 500.)-.25 F .387(The history \214l\ +e is also truncated to this size after writing it when an interac-)5.386 +F(ti)144 516 Q .3 -.15(ve s)-.25 H(hell e).15 E(xits.)-.15 E F1 +(HISTIGNORE)108 528 Q F0 2.658(Ac)144 540 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 552 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 564 R F1(*)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 +576 Q(OL)-.3 E F0 1.154(are applied.)3.654 F 1.154 +(In addition to the normal shell pattern matching characters, `)6.154 F +F1(&)A F0(')A 2.515(matches the pre)144 588 R 2.515(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 600 +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 612 Q -.05 +(ga)-.15 G(rdless of the v).05 E(alue of)-.25 E F1(HISTIGNORE)2.5 E F0 +(.)A F1(HISTSIZE)108 624 Q F0 1.942 +(The number of commands to remember in the command history \(see)144 636 +R F3(HIST)4.442 E(OR)-.162 E(Y)-.315 E F0(belo)4.192 E 4.442(w\). The) +-.25 F(def)144 648 Q(ault v)-.1 E(alue is 500.)-.25 E F1(HISTTIMEFORMA) +108 660 Q(T)-.95 E F0 .951(If this v)144 672 R .951 +(ariable is set and not null, its v)-.25 F .952 +(alue is used as a format string for)-.25 F F5(strftime)3.452 E F0 .952 +(\(3\) to print the)B .673 +(time stamp associated with each history entry displayed by the)144 684 +R F1(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 +(set, time stamps are written to the history \214le so the)144 696 Q 2.5 +(ym)-.15 G(ay be preserv)-2.5 E(ed across shell sessions.)-.15 E +(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(12)199.835 E 0 Cg EP +%%Page: 13 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/F1 10/Times-Bold@0 SF(HOME)108 84 Q F0 1.27 +(The home directory of the current user; the def)144 96 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 108 S(lue of this v).25 E +(ariable is also used when performing tilde e)-.25 E(xpansion.)-.15 E F1 +(HOSTFILE)108 120 Q F0 1.015 +(Contains the name of a \214le in the same format as)144 132 R/F2 10 +/Times-Italic@0 SF(/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 144 R .551 +(The list of possible hostname completions may be changed while)5.551 F +1.059(the shell is running; the ne)144 156 R 1.059 +(xt time hostname completion is attempted after the v)-.15 F 1.058 +(alue is changed,)-.25 F F1(bash)144 168 Q F0 .715 +(adds the contents of the ne)3.215 F 3.215<778c>-.25 G .715(le to the e) +-3.215 F .715(xisting list.)-.15 F(If)5.716 E/F3 9/Times-Bold@0 SF +(HOSTFILE)3.216 E F0 .716(is set, b)2.966 F .716(ut has no v)-.2 F +(alue,)-.25 E F1(bash)144 180 Q F0 2.236(attempts to read)4.736 F F2 +(/etc/hosts)6.401 E F0 2.235 +(to obtain the list of possible hostname completions.)6.401 F(When)7.235 +E F3(HOSTFILE)144 192 Q F0(is unset, the hostname list is cleared.)2.25 +E F1(IFS)108 204 Q F0(The)20.44 E F2 .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 216 S(rds with the).1 E F1 -.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 228 Q +F0 .503(Controls the action of an interacti)144 240 R .803 -.15(ve s) +-.25 H .503(hell on receipt of an).15 F F3(EOF)3.003 E F0 .503 +(character as the sole input.)2.753 F .503(If set,)5.503 F .426(the v) +144 252 R .426(alue is the number of consecuti)-.25 F -.15(ve)-.25 G F3 +(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 264 R F1(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(no v)144 276 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 +F3(EOF)2.5 E F0(signi\214es the end of input to the shell.)2.25 E F1 +(INPUTRC)108 288 Q F0 1.435(The \214lename for the)144 300 R F1 -.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 F2(~/.inputr)5.602 E(c) +-.37 E F0(\(see)5.602 E F3(READLINE)3.936 E F0(belo)144 312 Q(w\).)-.25 +E F1(LANG)108 324 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 336 Q F1(LC_)2.5 E F0(.)A F1(LC_ALL)108 348 Q F0 .764 +(This v)144 360 R .764(ariable o)-.25 F -.15(ve)-.15 G .764 +(rrides the v).15 F .764(alue of)-.25 F F1(LANG)3.264 E F0 .764(and an) +3.264 F 3.264(yo)-.15 G(ther)-3.264 E F1(LC_)3.264 E F0 -.25(va)3.264 G +.764(riable specifying a locale cate-).25 F(gory)144 372 Q(.)-.65 E F1 +(LC_COLLA)108 384 Q(TE)-.95 E F0 .412(This v)144 396 R .412(ariable det\ +ermines the collation order used when sorting the results of pathname e) +-.25 F(xpansion,)-.15 E 1.464(and determines the beha)144 408 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 +420 Q(xpansion and pattern matching.)-.15 E F1(LC_CTYPE)108 432 Q F0 +1.936(This v)144 444 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 456 Q +(xpansion and pattern matching.)-.15 E F1(LC_MESSA)108 468 Q(GES)-.55 E +F0(This v)144 480 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 492 Q F0(This v)144 504 Q(ariable determines the locale cate)-.25 E +(gory used for number formatting.)-.15 E F1(LINES)108 516 Q F0 1.218 +(Used by the)5.99 F F1(select)3.718 E F0 -.2(bu)3.718 G 1.219(iltin com\ +mand to determine the column length for printing selection lists.).2 F +(Automatically set upon receipt of a SIGWINCH.)144 528 Q F1(MAIL)108 540 +Q F0 .188(If this parameter is set to a \214le name and the)8.78 F F3 +(MAILP)2.687 E -.855(AT)-.666 G(H).855 E F0 -.25(va)2.437 G .187 +(riable is not set,).25 F F1(bash)2.687 E F0 .187(informs the user)2.687 +F(of the arri)144 552 Q -.25(va)-.25 G 2.5(lo).25 G 2.5(fm)-2.5 G +(ail in the speci\214ed \214le.)-2.5 E F1(MAILCHECK)108 564 Q F0 .098 +(Speci\214es ho)144 576 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 588 R .223(If this v)5.223 F .223(ariable is unset,)-.25 F .066 +(or set to a v)144 600 R .066(alue that is not a number greater than or\ + equal to zero, the shell disables mail checking.)-.25 F F1(MAILP)108 +612 Q -.95(AT)-.74 G(H).95 E F0 2.815(Ac)144 624 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 636 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 648 R .308(used in the te) +2.808 F .308(xt of the message,)-.15 F F1($_)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 660 Q F1(MAILP)144 672 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 684 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 +(ut the location of the user mail \214les that it uses is)-.2 F +(system dependent \(e.g., /v)144 696 Q(ar/mail/)-.25 E F1($USER)A F0 +(\).)A(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(13)199.835 E 0 Cg EP +%%Page: 14 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(OPTERR)108 84 Q F0 .39(If set to the v)144 +96 R .39(alue 1,)-.25 F F1(bash)2.89 E F0 .389 +(displays error messages generated by the)2.889 F F1(getopts)2.889 E F0 +-.2(bu)2.889 G .389(iltin command \(see).2 F/F2 9/Times-Bold@0 SF .359 +(SHELL B)144 108 R(UIL)-.09 E .359(TIN COMMANDS)-.828 F F0(belo)2.609 E +(w\).)-.25 E F2(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 120 Q -.15(xe)-.15 G(cuted.) +.15 E F1 -.74(PA)108 132 S(TH)-.21 E F0 .588 +(The search path for commands.)9.91 F .587 +(It is a colon-separated list of directories in which the shell looks) +5.588 F .471(for commands \(see)144 144 R F2 .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 156 S +.345(lue of).25 F F1 -.74(PA)2.845 G(TH)-.21 E F0 .345 +(indicates the current directory)2.845 F 5.345(.A)-.65 G .344 +(null directory name may appear as tw)-2.5 F 2.844(oa)-.1 G(djacent) +-2.844 E .867(colons, or as an initial or trailing colon.)144 168 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 180 R F1(bash)28.829 E F0 +31.329(.A)C 26.328(common v)-2.501 F 26.328(alue is)-.25 F/F3 10 +/Courier@0 SF(/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin)144 192 +Q F0(.)A F1(POSIXL)108 204 Q(Y_CORRECT)-.92 E F0 .471(If this v)144 216 +R .471(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/F4 10/Times-Italic@0 SF +.472(posix mode)2.972 F F0 .472(before reading)2.972 F .011 +(the startup \214les, as if the)144 228 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 240 Q F1(bash)2.5 +E F0(enables)2.5 E F4(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 F3(set -o posix)2.5 E F0(had been e)2.5 E -.15 +(xe)-.15 G(cuted.).15 E F1(PR)108 252 Q(OMPT_COMMAND)-.3 E F0 +(If set, the v)144 264 Q(alue is e)-.25 E -.15(xe)-.15 G +(cuted as a command prior to issuing each primary prompt.).15 E F1(PS1) +108 276 Q F0 .064(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 288 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 300 Q F0 .005(The v)19.33 F .005 +(alue of this parameter is e)-.25 F .005(xpanded as with)-.15 F F1(PS1) +2.505 E F0 .004(and used as the secondary prompt string.)2.505 F(The) +5.004 E(def)144 312 Q(ault is `)-.1 E(`)-.74 E F1(>)A F0 -.74('')2.5 G +(.).74 E F1(PS3)108 324 Q F0 1.115(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 336 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E F1(PS4)108 348 Q F0 +1.099(The v)19.33 F 1.099(alue of this parameter is e)-.25 F 1.099 +(xpanded as with)-.15 F F1(PS1)3.599 E F0 1.099(and the v)3.599 F 1.098 +(alue is printed before each com-)-.25 F(mand)144 360 Q F1(bash)3.725 E +F0 1.225(displays during an e)3.725 F -.15(xe)-.15 G 1.225 +(cution trace.).15 F 1.226(The \214rst character of)6.225 F F2(PS4)3.726 +E F0 1.226(is replicated multiple)3.476 F(times, as necessary)144 372 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 384 Q F0 .664 +(The full pathname to the shell is k)144 396 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 408 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 420 Q(T)-.95 E F0 .826(The v)144 +432 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 444 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 456 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 468 Q +(ws; the braces denote optional portions.)-.25 E F1(%%)144 486 Q F0 2.5 +(Al)30 G(iteral)-2.5 E F1(%)2.5 E F0(.)A F1(%[)144 498 Q F4(p)A F1 +(][l]R)A F0(The elapsed time in seconds.)11.68 E F1(%[)144 510 Q F4(p)A +F1(][l]U)A F0(The number of CPU seconds spent in user mode.)11.68 E F1 +(%[)144 522 Q F4(p)A F1(][l]S)A F0 +(The number of CPU seconds spent in system mode.)13.34 E F1(%P)144 534 Q +F0(The CPU percentage, computed as \(%U + %S\) / %R.)33.89 E .87 +(The optional)144 550.8 R F4(p)3.37 E F0 .87(is a digit specifying the) +3.37 F F4(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 562.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 574.8 R .538(alues of)-.25 F F4 +(p)3.038 E F0 .537(greater than 3 are changed to 3.)3.037 F(If)5.537 E +F4(p)3.037 E F0 .537(is not speci\214ed,)3.037 F(the v)144 586.8 Q +(alue 3 is used.)-.25 E .667(The optional)144 603.6 R F1(l)3.167 E F0 +.668(speci\214es a longer format, including minutes, of the form)3.168 F +F4(MM)3.168 E F0(m)A F4(SS)A F0(.)A F4(FF)A F0 3.168(s. The)B -.25(va) +3.168 G(lue).25 E(of)144 615.6 Q F4(p)2.5 E F0 +(determines whether or not the fraction is included.)2.5 E .001 +(If this v)144 632.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 +644.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 +656.4 Q F1(TMOUT)108 673.2 Q F0 .718(If set to a v)144 685.2 R .717 +(alue greater than zero,)-.25 F F1(TMOUT)3.217 E F0 .717 +(is treated as the def)3.217 F .717(ault timeout for the)-.1 F F1 -.18 +(re)3.217 G(ad).18 E F0 -.2(bu)3.217 G(iltin.).2 E(The)144 697.2 Q F1 +(select)2.542 E F0 .042(command terminates if input does not arri)2.542 +F .342 -.15(ve a)-.25 H(fter).15 E F1(TMOUT)2.542 E F0 .042 +(seconds when input is com-)2.542 F .886(ing from a terminal.)144 709.2 +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 721.2 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(GNU Bash-3.2)72 768 Q(2006 Jan 26) +149.845 E(14)199.835 E 0 Cg EP +%%Page: 15 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(seconds if input does not arri)144 84 Q -.15(ve)-.25 G(.).15 E/F1 +10/Times-Bold@0 SF(TMPDIR)108 100.8 Q F0 .274(If set,)144 112.8 R F1 +(Bash)2.774 E F0 .274(uses its v)2.774 F .274 +(alue as the name of a directory in which)-.25 F F1(Bash)2.773 E F0 .273 +(creates temporary \214les for the)2.773 F(shell')144 124.8 Q 2.5(su) +-.55 G(se.)-2.5 E F1(auto_r)108 141.6 Q(esume)-.18 E F0 .53(This v)144 +153.6 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 165.6 R +.538(ord simple commands without redirections are treated as candidates\ + for resumption of an)-.1 F -.15(ex)144 177.6 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 +189.6 R(The)6.125 E/F2 10/Times-Italic@0 SF(name)3.985 E F0 1.124 +(of a stopped job, in this)3.805 F(conte)144 201.6 Q 1.132 +(xt, is the command line used to start it.)-.15 F 1.133(If set to the v) +6.133 F(alue)-.25 E F2 -.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 213.6 R .624(xactly; if set to) +-.15 F F2(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 225.6 R 5.884(.T)-.4 G(he) +-5.884 E F2(substring)3.724 E F0 -.25(va)3.604 G .885(lue pro).25 F .885 +(vides functionality analogous to)-.15 F(the)144 237.6 Q F1(%?)3.334 E +F0 .834(job identi\214er \(see)5.834 F/F3 9/Times-Bold@0 SF .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 .315 +(must be a pre\214x of a stopped job')144 249.6 R 2.816(sn)-.55 G .316 +(ame; this pro)-2.816 F .316(vides functionality analogous to the)-.15 F +F1(%)2.816 E F2(string)A F0(job)2.816 E(identi\214er)144 261.6 Q(.)-.55 +E F1(histchars)108 278.4 Q F0 2.07(The tw)144 290.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 F3(HIST)4.569 E(OR) +-.162 E(Y)-.315 E(EXP)144 302.4 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 314.4 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 326.4 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 338.4 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 350.4 R(-)-.2 E 1.294(acter of a w)144 362.4 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 374.4 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 386.4 Q F1(Arrays)87 403.2 Q +(Bash)108 415.2 Q F0(pro)2.958 E .458(vides one-dimensional array v)-.15 +F 2.958(ariables. An)-.25 F 2.958(yv)-.15 G .458 +(ariable may be used as an array; the)-3.208 F F1(declar)2.958 E(e)-.18 +E F0 -.2(bu)2.958 G(iltin).2 E .96(will e)108 427.2 R .96 +(xplicitly declare an array)-.15 F 5.96(.T)-.65 G .961 +(here is no maximum limit on the size of an array)-5.96 F 3.461(,n)-.65 +G .961(or an)-3.461 F 3.461(yr)-.15 G(equirement)-3.461 E +(that members be inde)108 439.2 Q -.15(xe)-.15 G 2.5(do).15 G 2.5(ra) +-2.5 G(ssigned contiguously)-2.5 E 5(.A)-.65 G(rrays are inde)-5 E -.15 +(xe)-.15 G 2.5(du).15 G(sing inte)-2.5 E(gers and are zero-based.)-.15 E +1.302(An array is created automatically if an)108 456 R 3.801(yv)-.15 G +1.301(ariable is assigned to using the syntax)-4.051 F F2(name)3.801 E +F0([)A F2(subscript)A F0(]=)A F2(value)A F0(.)A(The)108 468 Q F2 +(subscript)3.181 E F0 .341(is treated as an arithmetic e)3.521 F .342 +(xpression that must e)-.15 F -.25(va)-.25 G .342 +(luate to a number greater than or equal to).25 F 4.077(zero. T)108 480 +R 4.077(oe)-.8 G 1.577(xplicitly declare an array)-4.227 F 4.077(,u)-.65 +G(se)-4.077 E F1(declar)4.077 E 4.077<65ad>-.18 G(a)-4.077 E F2(name) +4.077 E F0(\(see)4.077 E F3 1.577(SHELL B)4.077 F(UIL)-.09 E 1.576 +(TIN COMMANDS)-.828 F F0(belo)3.826 E(w\).)-.25 E F1(declar)108 492 Q +3.375<65ad>-.18 G(a)-3.375 E F2(name)3.375 E F1([)A F2(subscript)A F1(]) +A F0 .875(is also accepted; the)3.375 F F2(subscript)3.375 E F0 .875 +(is ignored.)3.375 F(Attrib)5.875 E .876(utes may be speci\214ed for an) +-.2 F(array v)108 504 Q(ariable using the)-.25 E F1(declar)2.5 E(e)-.18 +E F0(and)2.5 E F1 -.18(re)2.5 G(adonly).18 E F0 -.2(bu)2.5 G 2.5 +(iltins. Each).2 F(attrib)2.5 E(ute applies to all members of an array) +-.2 E(.)-.65 E 1.647 +(Arrays are assigned to using compound assignments of the form)108 520.8 +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 532.8 Q F0 .65(is of the form [)3.15 F F2 +(subscript)A F0(]=)A F2(string)A F0 5.65(.O)C(nly)-5.65 E F2(string)3.15 +E F0 .65(is required.)3.15 F .65(If the optional brack)5.65 F .65 +(ets and subscript are)-.1 F .277(supplied, that inde)108 544.8 R 2.777 +(xi)-.15 G 2.777(sa)-2.777 G .277(ssigned to; otherwise the inde)-2.777 +F 2.777(xo)-.15 G 2.777(ft)-2.777 G .276 +(he element assigned is the last inde)-2.777 F 2.776(xa)-.15 G .276 +(ssigned to)-2.776 F 1.393(by the statement plus one.)108 556.8 R(Inde) +6.393 E 1.393(xing starts at zero.)-.15 F 1.394 +(This syntax is also accepted by the)6.394 F F1(declar)3.894 E(e)-.18 E +F0 -.2(bu)3.894 G(iltin.).2 E(Indi)108 568.8 Q +(vidual array elements may be assigned to using the)-.25 E F2(name)2.5 E +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 585.6 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 597.6 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.042 E F0(.)A 1.057 +(These subscripts dif)108 609.6 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 621.6 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.375(of the)108 633.6 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.374(to a separate w) +3.875 F 3.874(ord. When)-.1 F 2.027(there are no array members, ${)108 +645.6 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 657.6 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 .515(and the e)108 +669.6 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 681.6 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.727 E -.15(ve)-.15 G 2.727 +(\). ${#).15 F F2(name)A F0([)A F2(subscript)A F0(]})A -.15(ex)108 693.6 +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 .734(ments in the array)108 705.6 +R 5.734(.R)-.65 G .733(eferencing an array v)-5.734 F .733 +(ariable without a subscript is equi)-.25 F -.25(va)-.25 G .733 +(lent to referencing element).25 F(zero.)108 717.6 Q(GNU Bash-3.2)72 768 +Q(2006 Jan 26)149.845 E(15)199.835 E 0 Cg EP +%%Page: 16 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(The)108 84 Q/F1 10/Times-Bold@0 SF(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 10/Times-Italic@0 SF(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 96 Q F0 6.38(.C)C 1.38 +(are must be tak)-6.38 F 1.38(en to a)-.1 F -.2(vo)-.2 G 1.38(id unw).2 +F 1.38(anted side ef)-.1 F 1.38(fects caused by \214lename generation.) +-.25 F F1(unset)6.38 E F2(name)3.88 E F0(,)A(where)108 108 Q F2(name)2.5 +E F0(is an array)2.5 E 2.5(,o)-.65 G(r)-2.5 E F1(unset)2.5 E F2(name)2.5 +E 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(The)108 124.8 Q F1(declar) +3.67 E(e)-.18 E F0(,)A F1(local)3.67 E F0 3.67(,a)C(nd)-3.67 E F1 -.18 +(re)3.67 G(adonly).18 E F0 -.2(bu)3.67 G 1.17(iltins each accept a).2 F +F13.671 E F0 1.171(option to specify an array)3.671 F 6.171(.T) +-.65 G(he)-6.171 E F1 -.18(re)3.671 G(ad).18 E F0 -.2(bu)3.671 G(iltin) +.2 E .441(accepts a)108 136.8 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 F1(set)2.941 E F0(and)2.941 E F1(declar)2.94 E(e)-.18 E F0 -.2 +(bu)108 148.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 165.6 Q(ANSION)-.81 E F0 .76(Expansion is perfo\ +rmed on the command line after it has been split into w)108 177.6 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 189.6 S .37(pansion performed:).15 F F2(br) +2.869 E .369(ace e)-.15 F(xpansion)-.2 E F0(,).24 E F2 .369(tilde e) +2.869 F(xpansion)-.2 E F0(,).24 E F2(par)2.869 E .369 +(ameter and variable e)-.15 F(xpansion)-.2 E F0(,).24 E F2 .369 +(command sub-)2.869 F(stitution)108 201.6 Q F0(,).24 E F2(arithmetic e) +2.5 E(xpansion)-.2 E F0(,).24 E F2(wor)2.5 E 2.5(ds)-.37 G(plitting)-2.5 +E F0 2.5(,a).22 G(nd)-2.5 E F2(pathname e)2.5 E(xpansion)-.2 E F0(.).24 +E .47(The order of e)108 218.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 +.471(ariable and arithmetic e)-3.221 F(xpansion)-.15 E +(and command substitution \(done in a left-to-right f)108 230.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 247.2 Q +(xpansion a)-.15 E -.25(va)-.2 G(ilable:).25 E F2(pr)2.5 E +(ocess substitution)-.45 E F0(.)A 1.487(Only brace e)108 264 R 1.487 +(xpansion, w)-.15 F 1.487(ord splitting, and pathname e)-.1 F 1.487 +(xpansion can change the number of w)-.15 F 1.486(ords of the)-.1 F -.15 +(ex)108 276 S 1.164(pansion; other e).15 F 1.164(xpansions e)-.15 F +1.164(xpand a single w)-.15 F 1.165(ord to a single w)-.1 F 3.665 +(ord. The)-.1 F 1.165(only e)3.665 F 1.165(xceptions to this are the) +-.15 F -.15(ex)108 288 S(pansions of ").15 E F1($@)A F0 2.5("a)C(nd ") +-2.5 E F1(${)A F2(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 F1 +(Brace Expansion)87 304.8 Q F2(Br)108.58 316.8 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 328.8 Q F2 .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 .152(form of an optional)108 340.8 R F2(pr)2.652 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 352.8 R +.563(wed by an optional)-.25 F F2(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 364.8 R .658(xpanding left to)-.15 F(right.) +108 376.8 Q .718(Brace e)108 393.6 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 405.6 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.134(As) +108 422.4 S .634(equence e)-3.134 F .634(xpression tak)-.15 F .634 +(es the form)-.1 F F1({)3.134 E F2(x)A F1(..)A F2(y)A F1(})A F0 3.134 +(,w)C(here)-3.134 E F2(x)3.134 E F0(and)3.134 E F2(y)3.133 E F0 .633 +(are either inte)3.133 F .633(gers or single characters.)-.15 F(When) +5.633 E(inte)108 434.4 Q .401(gers are supplied, the e)-.15 F .401 +(xpression e)-.15 F .401(xpands to each number between)-.15 F F2(x)2.901 +E F0(and)2.902 E F2(y)2.902 E F0 2.902(,i)C(nclusi)-2.902 E -.15(ve)-.25 +G 5.402(.W).15 G .402(hen characters)-5.402 F .688(are supplied, the e) +108 446.4 R .688(xpression e)-.15 F .688(xpands to each character le) +-.15 F .688(xicographically between)-.15 F F2(x)3.188 E F0(and)3.188 E +F2(y)3.188 E F0 3.187(,i)C(nclusi)-3.187 E -.15(ve)-.25 G 5.687(.N).15 G +(ote)-5.687 E(that both)108 458.4 Q F2(x)2.5 E F0(and)2.5 E F2(y)2.5 E +F0(must be of the same type.)2.5 E .581(Brace e)108 475.2 R .581 +(xpansion is performed before an)-.15 F 3.081(yo)-.15 G .581(ther e) +-3.081 F .581(xpansions, and an)-.15 F 3.082(yc)-.15 G .582 +(haracters special to other e)-3.082 F(xpansions)-.15 E .016 +(are preserv)108 487.2 R .016(ed in the result.)-.15 F .016 +(It is strictly te)5.016 F(xtual.)-.15 E F1(Bash)5.016 E F0 .015 +(does not apply an)2.516 F 2.515(ys)-.15 G .015 +(yntactic interpretation to the con-)-2.515 F(te)108 499.2 Q +(xt of the e)-.15 E(xpansion or the te)-.15 E(xt between the braces.) +-.15 E 3.632(Ac)108 516 S 1.132(orrectly-formed brace e)-3.632 F 1.132(\ +xpansion must contain unquoted opening and closing braces, and at least\ + one)-.15 F 3.441(unquoted comma or a v)108 528 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.44(xpansion is left)-.15 F 2.755 +(unchanged. A)108 540 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.911 +(sion. T)108 552 R 2.911(oa)-.8 G -.2(vo)-3.111 G .411 +(id con\215icts with parameter e).2 F .411(xpansion, the string)-.15 F +F1(${)2.911 E F0 .41(is not considered eligible for brace e)2.911 F +(xpan-)-.15 E(sion.)108 564 Q 1.476(This construct is typically used as\ + shorthand when the common pre\214x of the strings to be generated is) +108 580.8 R(longer than in the abo)108 592.8 Q .3 -.15(ve ex)-.15 H +(ample:).15 E(mkdir /usr/local/src/bash/{old,ne)144 609.6 Q -.65(w,)-.25 +G(dist,b).65 E(ugs})-.2 E(or)108 621.6 Q(cho)144 633.6 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 650.4 R .618 +(xpansion introduces a slight incompatibility with historical v)-.15 F +.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 .247 +(ing or closing braces specially when the)108 662.4 R 2.747(ya)-.15 G +.247(ppear as part of a w)-2.747 F .248(ord, and preserv)-.1 F .248 +(es them in the output.)-.15 F F1(Bash)5.248 E F0(remo)108 674.4 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 F1(sh) +3.53 E F0(as)3.53 E F2(\214le{1,2})108 686.4 Q F0 .514 +(appears identically in the output.)3.014 F .515(The same w)5.515 F .515 +(ord is output as)-.1 F F2 .515(\214le1 \214le2)4.925 F F0 .515(after e) +3.035 F .515(xpansion by)-.15 F F1(bash)3.015 E F0(.)A .437 +(If strict compatibility with)108 698.4 R F1(sh)2.936 E F0 .436 +(is desired, start)2.936 F F1(bash)2.936 E F0 .436(with the)2.936 F F1 +(+B)2.936 E F0 .436(option or disable brace e)2.936 F .436 +(xpansion with the)-.15 F F1(+B)108 710.4 Q F0(option to the)2.5 E F1 +(set)2.5 E F0(command \(see)2.5 E F4(SHELL B)2.5 E(UIL)-.09 E +(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash-3.2)72 768 Q +(2006 Jan 26)149.845 E(16)199.835 E 0 Cg EP +%%Page: 17 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/F1 10/Times-Bold@0 SF -.18(Ti)87 84 S(lde Expansion).18 E F0 +1.086(If a w)108 96 R 1.086(ord be)-.1 F 1.086 +(gins with an unquoted tilde character \(`)-.15 F F1(~)A F0 1.087 +('\), all of the characters preceding the \214rst unquoted)B .185(slash\ + \(or all characters, if there is no unquoted slash\) are considered a) +108 108 R/F2 10/Times-Italic@0 SF(tilde-pr)2.685 E(e\214x)-.37 E F0 +5.185(.I)C 2.685(fn)-5.185 G .185(one of the characters)-2.685 F .725(i\ +n the tilde-pre\214x are quoted, the characters in the tilde-pre\214x f\ +ollo)108 120 R .726(wing the tilde are treated as a possible)-.25 F F2 +(lo)108 132 Q .523(gin name)-.1 F F0 5.523(.I)C 3.023(ft)-5.523 G .523 +(his login name is the null string, the tilde is replaced with the v) +-3.023 F .522(alue of the shell parameter)-.25 F/F3 9/Times-Bold@0 SF +(HOME)108 144 Q/F4 9/Times-Roman@0 SF(.)A F0(If)4.786 E F3(HOME)2.786 E +F0 .287(is unset, the home directory of the user e)2.536 F -.15(xe)-.15 +G .287(cuting the shell is substituted instead.).15 F(Other)5.287 E(-) +-.2 E(wise, the tilde-pre\214x is replaced with the home directory asso\ +ciated with the speci\214ed login name.)108 156 Q .093 +(If the tilde-pre\214x is a `~+', the v)108 172.8 R .092 +(alue of the shell v)-.25 F(ariable)-.25 E F3(PWD)2.592 E F0 .092 +(replaces the tilde-pre\214x.)2.342 F .092(If the tilde-pre\214x is) +5.092 F 3.403(a`)108 184.8 S .903(~\255', the v)-3.403 F .903 +(alue of the shell v)-.25 F(ariable)-.25 E F3(OLDPWD)3.404 E F4(,)A F0 +.904(if it is set, is substituted.)3.154 F .904(If the characters follo) +5.904 F .904(wing the)-.25 F 1.642 +(tilde in the tilde-pre\214x consist of a number)108 196.8 R F2(N)4.142 +E F0 4.142(,o)C 1.642(ptionally pre\214x)-4.142 F 1.641 +(ed by a `+' or a `\255', the tilde-pre\214x is)-.15 F 1.437(replaced w\ +ith the corresponding element from the directory stack, as it w)108 +208.8 R 1.438(ould be displayed by the)-.1 F F1(dirs)3.938 E F0 -.2(bu) +108 220.8 S .455(iltin in).2 F -.2(vo)-.4 G -.1(ke).2 G 2.955(dw).1 G +.455(ith the tilde-pre\214x as an ar)-2.955 F 2.954(gument. If)-.18 F +.454(the characters follo)2.954 F .454 +(wing the tilde in the tilde-pre\214x)-.25 F +(consist of a number without a leading `+' or `\255', `+' is assumed.) +108 232.8 Q(If the login name is in)108 249.6 Q -.25(va)-.4 G +(lid, or the tilde e).25 E(xpansion f)-.15 E(ails, the w)-.1 E +(ord is unchanged.)-.1 E .166(Each v)108 266.4 R .167 +(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.667 E F0 5.167(.I)C(n)-5.167 E +.282(these cases, tilde e)108 278.4 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 +290.4 Q F3 -.666(PA)2.5 G(TH)-.189 E F4(,)A F3(MAILP)2.25 E -.855(AT) +-.666 G(H).855 E F4(,)A F0(and)2.25 E F3(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 +(alue.)-.25 E F1 -.1(Pa)87 307.2 S(rameter Expansion).1 E F0 1.605 +(The `)108 319.2 R F1($)A F0 4.105('c)C 1.605 +(haracter introduces parameter e)-4.105 F 1.606 +(xpansion, command substitution, or arithmetic e)-.15 F 4.106 +(xpansion. The)-.15 F .407(parameter name or symbol to be e)108 331.2 R +.407(xpanded may be enclosed in braces, which are optional b)-.15 F .406 +(ut serv)-.2 F 2.906(et)-.15 G 2.906(op)-2.906 G(ro-)-2.906 E .032 +(tect the v)108 343.2 R .032(ariable to be e)-.25 F .032 +(xpanded from characters immediately follo)-.15 F .033 +(wing it which could be interpreted as part)-.25 F(of the name.)108 +355.2 Q 1.19 +(When braces are used, the matching ending brace is the \214rst `)108 +372 R F1(})A F0 3.689('n)C 1.189(ot escaped by a backslash or within a) +-3.689 F 2.15(quoted string, and not within an embedded arithmetic e)108 +384 R 2.15(xpansion, command substitution, or parameter)-.15 F -.15(ex) +108 396 S(pansion.).15 E(${)108 412.8 Q F2(par)A(ameter)-.15 E F0(})A +1.205(The v)144 424.8 R 1.205(alue of)-.25 F F2(par)3.705 E(ameter)-.15 +E F0 1.204(is substituted.)3.705 F 1.204(The braces are required when) +6.204 F F2(par)4.954 E(ameter)-.15 E F0 1.204(is a positional)4.434 F +.264(parameter with more than one digit, or when)144 436.8 R F2(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 448.8 Q 1.509 +(If the \214rst character of)108 465.6 R F2(par)4.009 E(ameter)-.15 E F0 +1.509(is an e)4.009 F 1.509(xclamation point, a le)-.15 F -.15(ve)-.25 G +4.009(lo).15 G 4.008(fv)-4.009 G 1.508 +(ariable indirection is introduced.)-4.258 F F1(Bash)108 477.6 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 F2(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 .352(able is then e)108 489.6 R .352(xpanded and that v)-.15 F .351 +(alue is used in the rest of the substitution, rather than the v)-.25 F +.351(alue of)-.25 F F2(par)2.851 E(ame-)-.15 E(ter)108 501.6 Q F0 2.519 +(itself. This)2.519 F .019(is kno)2.519 F .019(wn as)-.25 F F2(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 F2 +(pr)A(e\214x)-.37 E F0 .02(*} and)B(${)108 513.6 Q F1(!)A F2(name)A F0 +([)A F2(@)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 525.6 Q .334(In each of the cases belo)108 +542.4 R -.65(w,)-.25 G F2(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 1.418(and arithmetic e)108 554.4 +R 3.918(xpansion. When)-.15 F 1.418(not performing substring e)3.918 F +(xpansion,)-.15 E F1(bash)3.918 E F0 1.418 +(tests for a parameter that is)3.918 F(unset or null; omitting the colo\ +n results in a test only for a parameter that is unset.)108 566.4 Q(${) +108 583.2 Q F2(par)A(ameter)-.15 E F1<3aad>A F2(wor)A(d)-.37 E F0(})A F1 +.722(Use Default V)144 595.2 R(alues)-.92 E F0 5.722(.I)C(f)-5.722 E F2 +(par)4.472 E(ameter)-.15 E F0 .723(is unset or null, the e)3.952 F .723 +(xpansion of)-.15 F F2(wor)3.563 E(d)-.37 E F0 .723(is substituted.) +3.993 F(Other)5.723 E(-)-.2 E(wise, the v)144 607.2 Q(alue of)-.25 E F2 +(par)3.75 E(ameter)-.15 E F0(is substituted.)3.23 E(${)108 619.2 Q F2 +(par)A(ameter)-.15 E F1(:=)A F2(wor)A(d)-.37 E F0(})A F1 2.005 +(Assign Default V)144 631.2 R(alues)-.92 E F0 7.005(.I)C(f)-7.005 E F2 +(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 F2(wor)4.844 E(d)-.37 E F0 2.004 +(is assigned to)5.274 F F2(par)144 643.2 Q(ameter)-.15 E F0 5.278(.T).73 +G .278(he v)-5.278 F .278(alue of)-.25 F F2(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 655.2 Q(ay)-.1 E(.)-.65 E +(${)108 667.2 Q F2(par)A(ameter)-.15 E F1(:?)A F2(wor)A(d)-.37 E F0(})A +F1 .535(Display Err)144 679.2 R .535(or if Null or Unset)-.18 F F0 5.535 +(.I)C(f)-5.535 E F2(par)4.285 E(ameter)-.15 E F0 .535 +(is null or unset, the e)3.765 F .535(xpansion of)-.15 F F2(wor)3.035 E +(d)-.37 E F0 .535(\(or a mes-)3.035 F .661(sage to that ef)144 691.2 R +.661(fect if)-.25 F F2(wor)3.501 E(d)-.37 E F0 .662(is not present\) is\ + written to the standard error and the shell, if it is not)3.931 F +(interacti)144 703.2 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 F2(par)2.5 E(ameter)-.15 E F0 +(is substituted.)2.5 E(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(17) +199.835 E 0 Cg EP +%%Page: 18 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(${)108 84 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 F2 .745(Use Alter)144 96 +R .745(nate V)-.15 F(alue)-.92 E F0 5.745(.I)C(f)-5.745 E F1(par)4.495 E +(ameter)-.15 E F0 .745 +(is null or unset, nothing is substituted, otherwise the e)3.975 F +(xpan-)-.15 E(sion of)144 108 Q F1(wor)2.84 E(d)-.37 E F0 +(is substituted.)3.27 E(${)108 120 Q F1(par)A(ameter)-.15 E F2(:)A F1 +(of)A(fset)-.18 E F0(})A(${)108 132 Q F1(par)A(ameter)-.15 E F2(:)A F1 +(of)A(fset)-.18 E F2(:)A F1(length)A F0(})A F2 .796 +(Substring Expansion.)144 144 R F0 .796(Expands to up to)5.796 F F1 +(length)3.296 E F0 .796(characters of)3.296 F F1(par)3.296 E(ameter)-.15 +E F0 .797(starting at the character)3.296 F .229(speci\214ed by)144 156 +R F1(of)2.729 E(fset)-.18 E F0 5.229(.I)C(f)-5.229 E F1(length)2.729 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 .228(starting at the char)2.728 F(-)-.2 E +.432(acter speci\214ed by)144 168 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 .433(ARITHMETIC EV)2.933 F(ALU-)-1.215 E -.855(AT)144 180 S(ION).855 +E F0(belo)2.577 E(w\).)-.25 E F1(length)5.327 E F0 .327(must e)2.827 F +-.25(va)-.25 G .326(luate to a number greater than or equal to zero.).25 +F(If)5.326 E F1(of)2.826 E(fset)-.18 E F0 -.25(eva)2.826 G(luates).25 E +.015(to a number less than zero, the v)144 192 R .015 +(alue is used as an of)-.25 F .015(fset from the end of the v)-.25 F +.016(alue of)-.25 F F1(par)2.516 E(ameter)-.15 E F0 5.016(.I)C(f)-5.016 +E F1(par)144 204 Q(ameter)-.15 E F0(is)3.25 E F2(@)3.25 E F0 3.25(,t)C +.75(he result is)-3.25 F F1(length)3.25 E F0 .75 +(positional parameters be)3.25 F .75(ginning at)-.15 F F1(of)3.25 E +(fset)-.18 E F0 5.75(.I)C(f)-5.75 E F1(par)3.25 E(ameter)-.15 E F0 .75 +(is an)3.25 F 1.834(array name inde)144 216 R -.15(xe)-.15 G 4.334(db) +.15 G 4.334(y@o)-4.334 G 4.335(r*)-4.334 G 4.335(,t)-4.335 G 1.835 +(he result is the)-4.335 F F1(length)4.335 E F0 1.835 +(members of the array be)4.335 F 1.835(ginning with)-.15 F(${)144 228 Q +F1(par)A(ameter)-.15 E F0([)A F1(of)A(fset)-.18 E F0 2.611(]}. A)B(ne) +2.611 E -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G F1(of)2.761 E(fset)-.18 E +F0 .111(is tak)2.611 F .111(en relati)-.1 F .411 -.15(ve t)-.25 H 2.611 +(oo).15 G .11(ne greater than the maximum inde)-2.611 F 2.61(xo)-.15 G +(f)-2.61 E .92(the speci\214ed array)144 240 R 5.92(.N)-.65 G .92 +(ote that a ne)-5.92 F -.05(ga)-.15 G(ti).05 E 1.22 -.15(ve o)-.25 H +-.25(ff).15 G .92(set must be separated from the colon by at least one) +.25 F .641(space to a)144 252 R -.2(vo)-.2 G .641 +(id being confused with the :- e).2 F 3.141(xpansion. Substring)-.15 F +(inde)3.141 E .64(xing is zero-based unless the)-.15 F +(positional parameters are used, in which case the inde)144 264 Q +(xing starts at 1.)-.15 E(${)108 280.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2 +(*)A F0(})A(${)108 292.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2(@)A F0(})A +.42(Expands to the names of v)144 304.8 R .42(ariables whose names be) +-.25 F .42(gin with)-.15 F F1(pr)2.92 E(e\214x)-.37 E F0 2.92(,s)C .42 +(eparated by the \214rst character)-2.92 F(of the)144 316.8 Q F3(IFS)2.5 +E F0(special v)2.25 E(ariable.)-.25 E(${)108 333.6 Q F2(!)A F1(name)A F0 +([)A F1(@)A F0(]})A(${)108 345.6 Q F2(!)A F1(name)A F0([)A F1(*)A F0(]}) +A(If)144 357.6 Q F1(name)2.922 E F0 .421(is an array v)2.922 F .421 +(ariable, e)-.25 F .421(xpands to the list of array indices \(k)-.15 F +-.15(ey)-.1 G .421(s\) assigned in).15 F F1(name)2.921 E F0 5.421(.I)C +(f)-5.421 E F1(name)2.921 E F0 .237(is not an array)144 369.6 R 2.737 +(,e)-.65 G .237(xpands to 0 if)-2.887 F F1(name)2.737 E F0 .238 +(is set and null otherwise.)2.737 F(When)5.238 E F1(@)2.738 E F0 .238 +(is used and the e)2.738 F(xpansion)-.15 E +(appears within double quotes, each k)144 381.6 Q .3 -.15(ey ex)-.1 H +(pands to a separate w).15 E(ord.)-.1 E(${)108 398.4 Q F2(#)A F1(par)A +(ameter)-.15 E F0(})A 1.392(The length in characters of the v)144 410.4 +R 1.392(alue of)-.25 F F1(par)3.892 E(ameter)-.15 E F0 1.392 +(is substituted.)3.892 F(If)6.392 E F1(par)5.142 E(ameter)-.15 E F0(is) +4.622 E F2(*)3.891 E F0(or)3.891 E F2(@)3.891 E F0 3.891(,t)C(he)-3.891 +E -.25(va)144 422.4 S 1.748 +(lue substituted is the number of positional parameters.).25 F(If)6.749 +E F1(par)5.499 E(ameter)-.15 E F0 1.749(is an array name sub-)4.979 F +(scripted by)144 434.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 451.2 Q F1(par)A(ameter)-.15 E F2(#)A F1(wor)A(d) +-.37 E F0(})A(${)108 463.2 Q F1(par)A(ameter)-.15 E F2(##)A F1(wor)A(d) +-.37 E F0(})A(The)144 475.2 Q F1(wor)3.331 E(d)-.37 E F0 .491(is e)3.761 +F .491(xpanded to produce a pattern just as in pathname e)-.15 F 2.99 +(xpansion. If)-.15 F .49(the pattern matches)2.99 F .411(the be)144 +487.2 R .411(ginning of the v)-.15 F .411(alue of)-.25 F F1(par)2.911 E +(ameter)-.15 E F0 2.911(,t).73 G .411(hen the result of the e)-2.911 F +.411(xpansion is the e)-.15 F .412(xpanded v)-.15 F .412(alue of)-.25 F +F1(par)145.25 499.2 Q(ameter)-.15 E F0 .607 +(with the shortest matching pattern \(the `)3.838 F(`)-.74 E F2(#)A F0 +2.087 -.74('' c)D .607(ase\) or the longest matching pattern \(the).74 F +-.74(``)144 511.2 S F2(##).74 E F0 1.653 -.74('' c)D .173 +(ase\) deleted.).74 F(If)5.173 E F1(par)3.923 E(ameter)-.15 E F0(is) +3.403 E F2(@)2.673 E F0(or)2.673 E F2(*)2.673 E F0 2.674(,t)C .174 +(he pattern remo)-2.674 F -.25(va)-.15 G 2.674(lo).25 G .174 +(peration is applied to each posi-)-2.674 F .655 +(tional parameter in turn, and the e)144 523.2 R .654 +(xpansion is the resultant list.)-.15 F(If)5.654 E F1(par)4.404 E +(ameter)-.15 E F0 .654(is an array v)3.884 F(ariable)-.25 E .65 +(subscripted with)144 535.2 R F2(@)3.15 E F0(or)3.15 E F2(*)3.15 E F0 +3.15(,t)C .65(he pattern remo)-3.15 F -.25(va)-.15 G 3.151(lo).25 G .651 +(peration is applied to each member of the array in)-3.151 F +(turn, and the e)144 547.2 Q(xpansion is the resultant list.)-.15 E(${) +108 564 Q F1(par)A(ameter)-.15 E F2(%)A F1(wor)A(d)-.37 E F0(})A(${)108 +576 Q F1(par)A(ameter)-.15 E F2(%%)A F1(wor)A(d)-.37 E F0(})A(The)144 +588 Q F1(wor)2.619 E(d)-.37 E F0 .119(is e)2.619 F .119 +(xpanded to produce a pattern just as in pathname e)-.15 F 2.619 +(xpansion. If)-.15 F .118(the pattern matches a)2.619 F 2.401 +(trailing portion of the e)144 600 R 2.401(xpanded v)-.15 F 2.401 +(alue of)-.25 F F1(par)4.901 E(ameter)-.15 E F0 4.901(,t).73 G 2.402 +(hen the result of the e)-4.901 F 2.402(xpansion is the)-.15 F -.15(ex) +144 612 S 1.153(panded v).15 F 1.153(alue of)-.25 F F1(par)4.902 E +(ameter)-.15 E F0 1.152(with the shortest matching pattern \(the `)4.382 +F(`)-.74 E F2(%)A F0 2.632 -.74('' c)D 1.152(ase\) or the longest).74 F +.79(matching pattern \(the `)144 624 R(`)-.74 E F2(%%)A F0 2.27 -.74 +('' c)D .79(ase\) deleted.).74 F(If)5.79 E F1(par)4.54 E(ameter)-.15 E +F0(is)4.02 E F2(@)3.29 E F0(or)3.29 E F2(*)3.29 E F0 3.29(,t)C .79 +(he pattern remo)-3.29 F -.25(va)-.15 G 3.29(lo).25 G(pera-)-3.29 E +1.758(tion is applied to each positional parameter in turn, and the e) +144 636 R 1.758(xpansion is the resultant list.)-.15 F(If)6.758 E F1 +(par)145.25 648 Q(ameter)-.15 E F0 .088(is an array v)3.318 F .089 +(ariable subscripted with)-.25 F F2(@)2.589 E F0(or)2.589 E F2(*)2.589 E +F0 2.589(,t)C .089(he pattern remo)-2.589 F -.25(va)-.15 G 2.589(lo).25 +G .089(peration is applied to)-2.589 F +(each member of the array in turn, and the e)144 660 Q +(xpansion is the resultant list.)-.15 E(${)108 676.8 Q F1(par)A(ameter) +-.15 E F2(/)A F1(pattern)A F2(/)A F1(string)A F0(})A(The)144 688.8 Q F1 +(pattern)5.085 E F0 2.585(is e)5.085 F 2.585 +(xpanded to produce a pattern just as in pathname e)-.15 F(xpansion.) +-.15 E F1 -.8(Pa)7.585 G -.15(ra).8 G(meter).15 E F0(is)5.085 E -.15(ex) +144 700.8 S 1.304(panded and the longest match of).15 F F1(pattern)3.804 +E F0(ag)3.804 E 1.304(ainst its v)-.05 F 1.304(alue is replaced with) +-.25 F F1(string)3.804 E F0 6.304(.I)C 3.804(fI)-6.304 G(pattern)-3.804 +E F1(be)144 712.8 Q 1.331(gins with)-.4 F F2(/)3.831 E F1 3.831(,a)C +1.331(ll matc)-3.831 F 1.331(hes of pattern ar)-.15 F 3.831(er)-.37 G +1.331(eplaced with string)-4.201 F 6.33(.N)-.15 G 1.33 +(ormally only the \214r)-6.33 F 1.33(st matc)-.1 F 3.83(hi)-.15 G(s) +-3.83 E -.37(re)144 724.8 S 4.69(placed. If).37 F 2.19(pattern be)4.69 F +2.19(gins with)-.4 F F2(#)4.69 E F1 4.69(,i)C 4.69(tm)-4.69 G 2.19 +(ust matc)-4.69 F 4.69(ha)-.15 G 4.69(tt)-4.69 G 2.19(he be)-4.69 F 2.19 +(ginning of the e)-.4 F 2.19(xpanded value of)-.2 F F0(GNU Bash-3.2)72 +768 Q(2006 Jan 26)149.845 E(18)199.835 E 0 Cg EP +%%Page: 19 20 +%%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(par)144 84 Q(ameter)-.15 E 5.237(.I)-1.11 +G 2.737(fp)-5.237 G .237(attern be)-2.737 F .237(gins with)-.4 F/F2 10 +/Times-Bold@0 SF(%)2.737 E F1 2.737(,i)C 2.737(tm)-2.737 G .237 +(ust matc)-2.737 F 2.736(ha)-.15 G 2.736(tt)-2.736 G .236 +(he end of the e)-2.736 F .236(xpanded value of par)-.2 F(ameter)-.15 E +(.)-1.11 E 1.429(If string is null, matc)144 96 R 1.429 +(hes of pattern ar)-.15 F 3.929(ed)-.37 G 1.429(eleted and the)-3.929 F +F2(/)3.93 E F1 1.43(following pattern may be omitted.)3.93 F(If)6.43 E +(par)145.25 108 Q(ameter)-.15 E F0(is)3.329 E F2(@)2.599 E F0(or)2.598 E +F2(*)2.598 E F0 2.598(,t)C .098(he substitution operation is applied to\ + each positional parameter in turn, and)-2.598 F .64(the e)144 120 R .64 +(xpansion is the resultant list.)-.15 F(If)5.64 E F1(par)4.39 E(ameter) +-.15 E F0 .64(is an array v)3.87 F .64(ariable subscripted with)-.25 F +F2(@)3.14 E F0(or)3.14 E F2(*)3.14 E F0 3.14(,t)C(he)-3.14 E 1.446(subs\ +titution operation is applied to each member of the array in turn, and \ +the e)144 132 R 1.446(xpansion is the)-.15 F(resultant list.)144 144 Q +F2(Command Substitution)87 160.8 Q F1 1.697(Command substitution)108 +172.8 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 184.8 Q F2($\()144 206.4 Q F1 +(command)A F2(\))1.666 E F0(or)108 218.4 Q F2(`)144 230.4 Q F1(command)A +F2(`)A(Bash)108 247.2 Q F0 .02(performs the e)2.52 F .02(xpansion by e) +-.15 F -.15(xe)-.15 G(cuting).15 E F1(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 259.2 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 271.2 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 F2($\(cat)3.219 E F1(\214le)3.219 E F2 +(\))A F0 .718(can be replaced by the)3.219 F(equi)108 283.2 Q -.25(va) +-.25 G(lent b).25 E(ut f)-.2 E(aster)-.1 E F2($\(<)2.5 E F1(\214le)2.5 E +F2(\))A F0(.)A 1.724(When the old-style backquote form of substitution \ +is used, backslash retains its literal meaning e)108 300 R(xcept)-.15 E +.315(when follo)108 312 R .315(wed by)-.25 F F2($)2.815 E F0(,)A F2(`) +2.815 E F0 2.815(,o)C(r)-2.815 E F2(\\)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 324 R 1.386(using the $\()3.886 F +F1(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 336 Q(.)-.65 E .894 +(Command substitutions may be nested.)108 352.8 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 364.8 Q .422 +(If the substitution appears within double quotes, w)108 381.6 R .422 +(ord splitting and pathname e)-.1 F .423(xpansion are not performed)-.15 +F(on the results.)108 393.6 Q F2(Arithmetic Expansion)87 410.4 Q F0 +1.035(Arithmetic e)108 422.4 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 434.4 Q(xpansion is:)-.15 E F2($\(\() +144 451.2 Q F1 -.2(ex)C(pr).2 E(ession)-.37 E F2(\)\))A F0(The)108 468 Q +F1 -.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 480 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 492 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 508.8 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/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.879 E F1 -.2(ex)108 520.8 S(pr).2 E(ession)-.37 E F0(is in)2.74 E +-.25(va)-.4 G(lid,).25 E F2(bash)2.5 E F0(prints a message indicating f) +2.5 E(ailure and no substitution occurs.)-.1 E F2(Pr)87 537.6 Q +(ocess Substitution)-.18 E F1(Pr)108 549.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 F2(/de)3.47 E +(v/fd)-.15 E F0 .97(method of)3.47 F .021(naming open \214les.)108 561.6 +R .021(It tak)5.021 F .021(es the form of)-.1 F F2(<\()2.521 E F1(list)A +F2(\)).833 E F0(or)2.521 E F2(>\()2.521 E F1(list)A F2(\)).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 573.6 +R F1(FIFO)2.559 E F0 .058(or some \214le in)2.559 F F2(/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 585.6 R 2.63(xpansion. If)-.15 F(the) +2.63 E F2(>\()2.63 E F1(list)A F2(\)).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 597.6 Q F2(<\() +2.5 E F1(list)A F2(\)).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 614.4 R -.25(va)-.2 G .896(ilable, process substit\ +ution is performed simultaneously with parameter and v).25 F .896 +(ariable e)-.25 F(xpansion,)-.15 E +(command substitution, and arithmetic e)108 626.4 Q(xpansion.)-.15 E F2 +-.75(Wo)87 643.2 S(rd Splitting).75 E F0 1.142 +(The shell scans the results of parameter e)108 655.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 667.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 684 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 .627(on these characters.)108 696 R(If)5.627 E F3(IFS) +3.127 E F0 .627(is unset, or its v)2.877 F .627(alue is e)-.25 F(xactly) +-.15 E F2()3.127 E F0 3.128(,t)C .628(he def)-3.128 +F .628(ault, then an)-.1 F(y)-.15 E 2.528(sequence of)108 708 R F3(IFS) +5.028 E F0 2.527(characters serv)4.778 F 2.527(es to delimit w)-.15 F +5.027(ords. If)-.1 F F3(IFS)5.027 E F0 2.527(has a v)4.777 F 2.527 +(alue other than the def)-.25 F 2.527(ault, then)-.1 F .362 +(sequences of the whitespace characters)108 720 R F2(space)2.863 E F0 +(and)2.863 E F2(tab)2.863 E F0 .363(are ignored at the be)2.863 F .363 +(ginning and end of the w)-.15 F .363(ord, as)-.1 F(GNU Bash-3.2)72 768 +Q(2006 Jan 26)149.845 E(19)199.835 E 0 Cg EP +%%Page: 20 21 +%%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 .335(long as the whitespace character is in the v)108 84 R .334 +(alue of)-.25 F/F1 9/Times-Bold@0 SF(IFS)2.834 E F0(\(an)2.584 E F1(IFS) +2.834 E F0 .334(whitespace character\).)2.584 F(An)5.334 E 2.834(yc)-.15 +G .334(haracter in)-2.834 F F1(IFS)2.834 E F0 .295(that is not)108 96 R +F1(IFS)2.795 E F0 .295(whitespace, along with an)2.545 F 2.795(ya)-.15 G +(djacent)-2.795 E F1(IFS)2.795 E F0 .295 +(whitespace characters, delimits a \214eld.)2.545 F 2.796(As)5.296 G +(equence)-2.796 E(of)108 108 Q F1(IFS)3.753 E F0 1.252 +(whitespace characters is also treated as a delimiter)3.503 F 6.252(.I) +-.55 G 3.752(ft)-6.252 G 1.252(he v)-3.752 F 1.252(alue of)-.25 F F1 +(IFS)3.752 E F0 1.252(is null, no w)3.502 F 1.252(ord splitting)-.1 F +(occurs.)108 120 Q 1.878(Explicit null ar)108 136.8 R 1.878(guments \() +-.18 F/F2 10/Times-Bold@0 SF .833("").833 G F0(or)3.545 E F2 .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 148.8 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 160.8 Q(gument results and is retained.) +-.18 E(Note that if no e)108 177.6 Q +(xpansion occurs, no splitting is performed.)-.15 E F2 -.1(Pa)87 194.4 S +(thname Expansion).1 E F0 .37(After w)108 206.4 R .37 +(ord splitting, unless the)-.1 F F22.87 E F0 .37 +(option has been set,)2.87 F F2(bash)2.87 E F0 .371(scans each w)2.871 F +.371(ord for the characters)-.1 F F2(*)2.871 E F0(,)A F2(?)2.871 E F0 +2.871(,a)C(nd)-2.871 E F2([)2.871 E F0(.)A .678 +(If one of these characters appears, then the w)108 218.4 R .677 +(ord is re)-.1 F -.05(ga)-.15 G .677(rded as a).05 F/F3 10 +/Times-Italic@0 SF(pattern)3.177 E F0 3.177(,a).24 G .677 +(nd replaced with an alphabeti-)-3.177 F 1.456 +(cally sorted list of \214le names matching the pattern.)108 230.4 R +1.457(If no matching \214le names are found, and the shell)6.457 F +(option)108 242.4 Q F2(nullglob)3.265 E F0 .765(is disabled, the w)3.265 +F .765(ord is left unchanged.)-.1 F .765(If the)5.765 F F2(nullglob) +3.265 E F0 .765(option is set, and no matches are)3.265 F .305 +(found, the w)108 254.4 R .305(ord is remo)-.1 F -.15(ve)-.15 G 2.805 +(d. If).15 F(the)2.805 E F2(failglob)2.805 E F0 .305 +(shell option is set, and no matches are found, an error message)2.805 F +.929(is printed and the command is not e)108 266.4 R -.15(xe)-.15 G +3.428(cuted. If).15 F .928(the shell option)3.428 F F2(nocaseglob)3.428 +E F0 .928(is enabled, the match is per)3.428 F(-)-.2 E .032 +(formed without re)108 278.4 R -.05(ga)-.15 G .032 +(rd to the case of alphabetic characters.).05 F .033 +(When a pattern is used for pathname e)5.033 F(xpansion,)-.15 E .105 +(the character)108 290.4 R F2 -.63(``)2.605 G -.55(.').63 G(')-.08 E F0 +.105(at the start of a name or immediately follo)5.105 F .104 +(wing a slash must be matched e)-.25 F(xplicitly)-.15 E 2.604(,u)-.65 G +(nless)-2.604 E .887(the shell option)108 302.4 R F2(dotglob)3.387 E F0 +.887(is set.)3.387 F .888 +(When matching a pathname, the slash character must al)5.887 F -.1(wa) +-.1 G .888(ys be matched).1 F -.15(ex)108 314.4 S(plicitly).15 E 6.166 +(.I)-.65 G 3.666(no)-6.166 G 1.166(ther cases, the)-3.666 F F2 -.63(``) +3.666 G -.55(.').63 G(')-.08 E F0 1.166 +(character is not treated specially)6.166 F 6.165(.S)-.65 G 1.165 +(ee the description of)-6.165 F F2(shopt)3.665 E F0(belo)3.665 E(w)-.25 +E(under)108 326.4 Q F1 .477(SHELL B)2.977 F(UIL)-.09 E .477 +(TIN COMMANDS)-.828 F F0 .477(for a description of the)2.727 F F2 +(nocaseglob)2.978 E F0(,)A F2(nullglob)2.978 E F0(,)A F2(failglob)2.978 +E F0 2.978(,a)C(nd)-2.978 E F2(dotglob)2.978 E F0(shell options.)108 +338.4 Q(The)108 355.2 Q F1(GLOBIGNORE)2.631 E F0 .131(shell v)2.381 F +.131(ariable may be used to restrict the set of \214le names matching a) +-.25 F F3(pattern)2.63 E F0 5.13(.I).24 G(f)-5.13 E F1(GLO-)2.63 E +(BIGNORE)108 367.2 Q F0 2.015(is set, each matching \214le name that al\ +so matches one of the patterns in)4.264 F F1(GLOBIGNORE)4.515 E F0(is) +4.265 E(remo)108 379.2 Q -.15(ve)-.15 G 2.504(df).15 G .004 +(rom the list of matches.)-2.504 F .003(The \214le names)5.003 F F2 -.63 +(``)2.503 G -.55(.').63 G(')-.08 E F0(and)5.003 E F2 -.63(``)2.503 G(..) +.63 E -.63('')-.55 G F0 .003(are al)5.633 F -.1(wa)-.1 G .003 +(ys ignored when).1 F F1(GLOBIGNORE)2.503 E F0(is)2.253 E .045 +(set and not null.)108 391.2 R(Ho)5.045 E(we)-.25 E -.15(ve)-.25 G .845 +-.4(r, s).15 H(etting).4 E F1(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 F2(dotglob)2.546 E F0 .614 +(shell option, so all other \214le names be)108 403.2 R .614 +(ginning with a)-.15 F F2 -.63(``)3.114 G -.55(.').63 G(')-.08 E F0 .614 +(will match.)5.614 F 2.213 -.8(To g)5.614 H .613(et the old beha).8 F +.613(vior of ignoring)-.2 F .456(\214le names be)108 415.2 R .456 +(ginning with a)-.15 F F2 -.63(``)2.957 G -.55(.').63 G(')-.08 E F0 +2.957(,m)C(ak)-2.957 E(e)-.1 E F2 -.63(``)2.957 G(.*').63 E(')-.63 E F0 +.457(one of the patterns in)5.457 F F1(GLOBIGNORE)2.957 E/F4 9 +/Times-Roman@0 SF(.)A F0(The)4.957 E F2(dotglob)2.957 E F0 .457 +(option is)2.957 F(disabled when)108 427.2 Q F1(GLOBIGNORE)2.5 E F0 +(is unset.)2.25 E F2 -.1(Pa)108 444 S(tter).1 E 2.5(nM)-.15 G(atching) +-2.5 E F0(An)108 460.8 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 472.8 +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 484.8 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 496.8 Q(.)-.65 E +(The special pattern characters ha)108 513.6 Q .3 -.15(ve t)-.2 H +(he follo).15 E(wing meanings:)-.25 E F2(*)108 530.4 Q F0(Matches an)31 +E 2.5(ys)-.15 G(tring, including the null string.)-2.5 E F2(?)108 542.4 +Q F0(Matches an)31 E 2.5(ys)-.15 G(ingle character)-2.5 E(.)-.55 E F2 +([...])108 554.4 Q F0 .256(Matches an)21.84 F 2.756(yo)-.15 G .257 +(ne of the enclosed characters.)-2.756 F 2.757(Ap)5.257 G .257 +(air of characters separated by a h)-2.757 F .257(yphen denotes a)-.05 F +F3 -.15(ra)144 566.4 S(ng).15 E 3.29(ee)-.1 G(xpr)-3.49 E(ession)-.37 E +F0 3.29(;a)C 1.09 -.15(ny c)-3.29 H .789 +(haracter that sorts between those tw).15 F 3.289(oc)-.1 G .789 +(haracters, inclusi)-3.289 F -.15(ve)-.25 G 3.289(,u).15 G .789 +(sing the cur)-3.289 F(-)-.2 E .349(rent locale')144 578.4 R 2.849(sc) +-.55 G .349(ollating sequence and character set, is matched.)-2.849 F +.35(If the \214rst character follo)5.349 F .35(wing the)-.25 F F2([)2.85 +E F0 .564(is a)144 590.4 R F2(!)3.064 E F0 .564(or a)5.564 F F2(^)3.064 +E F0 .564(then an)3.064 F 3.064(yc)-.15 G .564 +(haracter not enclosed is matched.)-3.064 F .563 +(The sorting order of characters in range)5.564 F -.15(ex)144 602.4 S +1.102(pressions is determined by the current locale and the v).15 F +1.102(alue of the)-.25 F F2(LC_COLLA)3.602 E(TE)-.95 E F0 1.103(shell v) +3.603 F(ari-)-.25 E .089(able, if set.)144 614.4 R(A)5.089 E F22.589 +E F0 .088(may be matched by including it as the \214rst or last charact\ +er in the set.)2.589 F(A)5.088 E F2(])2.588 E F0 .088(may be)2.588 F +(matched by including it as the \214rst character in the set.)144 626.4 +Q -.4(Wi)144 644.4 S(thin).4 E F2([)2.914 E F0(and)2.914 E F2(])2.914 E +F0(,)A F3 -.15(ch)2.914 G(ar).15 E .414(acter classes)-.15 F F0 .415 +(can be speci\214ed using the syntax)2.915 F F2([:)2.915 E F3(class)A F2 +(:])A F0 2.915(,w)C(here)-2.915 E F3(class)2.915 E F0 .415(is one of) +2.915 F(the follo)144 656.4 Q +(wing classes de\214ned in the POSIX standard:)-.25 E F2 5.421 +(alnum alpha ascii blank cntrl digit graph lo)144 668.4 R 5.421 +(wer print punct space upper w)-.1 F(ord)-.1 E(xdigit)144 680.4 Q F0 +2.518(Ac)144 692.4 S .018(haracter class matches an)-2.518 F 2.518(yc) +-.15 G .019(haracter belonging to that class.)-2.518 F(The)5.019 E F2 +-.1(wo)2.519 G(rd).1 E F0 .019(character class matches)2.519 F +(letters, digits, and the character _.)144 704.4 Q -.4(Wi)144 722.4 S +(thin).4 E F2([)3.547 E F0(and)3.547 E F2(])3.547 E F0 3.547(,a)C(n) +-3.547 E F3 1.046(equivalence class)3.546 F F0 1.046 +(can be speci\214ed using the syntax)3.546 F F2([=)3.546 E F3(c)A F2(=]) +A F0 3.546(,w)C 1.046(hich matches all)-3.546 F(GNU Bash-3.2)72 768 Q +(2006 Jan 26)149.845 E(20)199.835 E 0 Cg EP +%%Page: 21 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(characters with the same collation weight \(as de\214ned by the \ +current locale\) as the character)144 84 Q/F1 10/Times-Italic@0 SF(c)2.5 +E F0(.)A -.4(Wi)144 102 S(thin).4 E/F2 10/Times-Bold@0 SF([)2.5 E F0 +(and)2.5 E F2(])2.5 E F0 2.5(,t)C(he syntax)-2.5 E F2([.)2.5 E F1 +(symbol)A F2(.])A F0(matches the collating symbol)2.5 E F1(symbol)2.5 E +F0(.)A .704(If the)108 118.8 R F2(extglob)3.204 E F0 .705 +(shell option is enabled using the)3.204 F F2(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 +130.8 R .256(In the follo)5.256 F .256(wing description, a)-.25 F F1 +(pattern-list)2.755 E F0 .255 +(is a list of one or more patterns separated by a)2.755 F F2(|)2.755 E +F0(.)A(Composite patterns may be formed using one or more of the follo) +108 142.8 Q(wing sub-patterns:)-.25 E F2(?\()144 166.8 Q F1 +(pattern-list).833 E F2(\)).833 E F0 +(Matches zero or one occurrence of the gi)180 178.8 Q -.15(ve)-.25 G 2.5 +(np).15 G(atterns)-2.5 E F2(*\()144 190.8 Q F1(pattern-list).833 E F2 +(\)).833 E F0(Matches zero or more occurrences of the gi)180 202.8 Q +-.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F2(+\()144 214.8 Q F1 +(pattern-list).833 E F2(\)).833 E F0 +(Matches one or more occurrences of the gi)180 226.8 Q -.15(ve)-.25 G +2.5(np).15 G(atterns)-2.5 E F2(@\()144 238.8 Q F1(pattern-list).833 E F2 +(\)).833 E F0(Matches one of the gi)180 250.8 Q -.15(ve)-.25 G 2.5(np) +.15 G(atterns)-2.5 E F2(!\()144 262.8 Q F1(pattern-list).833 E F2(\)) +.833 E F0(Matches an)180 274.8 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 F2(Quote Remo)87 291.6 +Q -.1(va)-.1 G(l).1 E F0 1.112(After the preceding e)108 303.6 R 1.112 +(xpansions, all unquoted occurrences of the characters)-.15 F F2(\\) +3.613 E F0(,)A F2<08>3.613 E F0 3.613(,a)C(nd)-3.613 E F2(")4.446 E F0 +1.113(that did not result)4.446 F(from one of the abo)108 315.6 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 332.4 Q F0 .545 +(Before a command is e)108 344.4 R -.15(xe)-.15 G .545 +(cuted, its input and output may be).15 F F1 -.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 356.4 R .617(Redirection may also be used to open an\ +d 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 368.4 R(follo)3.275 E +.774(wing redirection operators may precede or appear an)-.25 F .774 +(ywhere within a)-.15 F F1 .774(simple command)3.614 F F0(or)4.044 E +(may follo)108 380.4 Q 2.5(wa)-.25 G F1(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 .283(In the follo)108 +397.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 409.2 R F2(<)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 421.2 Q F2(>)2.5 E F0 2.5(,t)C +(he redirection refers to the standard output \(\214le descriptor 1\).) +-2.5 E .824(The w)108 438 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 .773 +(jected to brace e)108 450 R .773(xpansion, tilde e)-.15 F .773 +(xpansion, parameter e)-.15 F .772 +(xpansion, command substitution, arithmetic e)-.15 F(xpan-)-.15 E .843 +(sion, quote remo)108 462 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.344 E F0 +(reports an error)108 474 Q(.)-.55 E +(Note that the order of redirections is signi\214cant.)108 490.8 Q -.15 +(Fo)5 G 2.5(re).15 G(xample, the command)-2.65 E(ls)144 507.6 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 524.4 +Q F1(dirlist)2.5 E F0 2.5(,w).68 G(hile the command)-2.5 E(ls 2)144 +541.2 Q F2(>&)A F0(1)A F2(>)2.5 E F0(dirlist)2.5 E .388 +(directs only the standard output to \214le)108 558 R F1(dirlist)2.888 E +F0 2.888(,b).68 G .387(ecause the standard error w)-2.888 F .387 +(as duplicated as standard output)-.1 F(before the standard output w)108 +570 Q(as redirected to)-.1 E F1(dirlist)2.5 E F0(.).68 E F2(Bash)108 +586.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 598.8 Q F2(/de)144 615.6 Q(v/fd/)-.15 E F1(fd)A F0(If)180 +627.6 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 639.6 Q(v/stdin)-.15 E F0(File descriptor 0 is duplicated.)180 +651.6 Q F2(/de)144 663.6 Q(v/stdout)-.15 E F0 +(File descriptor 1 is duplicated.)180 675.6 Q F2(/de)144 687.6 Q +(v/stderr)-.15 E F0(File descriptor 2 is duplicated.)180 699.6 Q +(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(21)199.835 E 0 Cg EP +%%Page: 22 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/F1 10/Times-Bold@0 SF(/de)144 84 Q(v/tcp/)-.15 E/F2 10 +/Times-Italic@0 SF(host)A F1(/)A F2(port)A F0(If)180 96 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 108 Q F1(bash)2.5 +E F0(attempts to open a TCP connection to the corresponding sock)2.5 E +(et.)-.1 E F1(/de)144 120 Q(v/udp/)-.15 E F2(host)A F1(/)A F2(port)A F0 +(If)180 132 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 144 Q F1(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 160.8 S +(ailure to open or create a \214le causes the redirection to f)-2.6 E +(ail.)-.1 E .947(Redirections using \214le descriptors greater than 9 s\ +hould be used with care, as the)108 177.6 R 3.446(ym)-.15 G .946 +(ay con\215ict with \214le)-3.446 F +(descriptors the shell uses internally)108 189.6 Q(.)-.65 E F1(Redir)87 +206.4 Q(ecting Input)-.18 E F0 .391 +(Redirection of input causes the \214le whose name results from the e) +108 218.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 230.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 F2(n)2.86 E F0 +(is not speci\214ed.)2.74 E +(The general format for redirecting input is:)108 247.2 Q([)144 264 Q F2 +(n)A F0(])A F1(<)A F2(wor)A(d)-.37 E F1(Redir)87 280.8 Q(ecting Output) +-.18 E F0 .175 +(Redirection of output causes the \214le whose name results from the e) +108 292.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 304.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 316.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 333.6 Q([)144 350.4 Q +F2(n)A F0(])A F1(>)A F2(wor)A(d)-.37 E F0 .155 +(If the redirection operator is)108 367.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 379.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 391.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 +403.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 +420 S(pending Redir).25 E(ected Output)-.18 E F0 .641 +(Redirection of output in this f)108 432 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 444 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 F2(n)3.333 E F0 +.473(is not speci\214ed.)3.213 F(If)5.473 E(the \214le does not e)108 +456 Q(xist it is created.)-.15 E +(The general format for appending output is:)108 472.8 Q([)144 489.6 Q +F2(n)A F0(])A F1(>>)A F2(wor)A(d)-.37 E F1(Redir)87 511.2 Q +(ecting Standard Output and Standard Err)-.18 E(or)-.18 E(Bash)108 523.2 +Q F0(allo)3.141 E .642(ws both the standard output \(\214le descriptor \ +1\) and the standard error output \(\214le descriptor 2\) to)-.25 F +(be redirected to the \214le whose name is the e)108 535.2 Q +(xpansion of)-.15 E F2(wor)2.84 E(d)-.37 E F0(with this construct.)3.27 +E(There are tw)108 552 Q 2.5(of)-.1 G +(ormats for redirecting standard output and standard error:)-2.5 E F1 +(&>)144 568.8 Q F2(wor)A(d)-.37 E F0(and)108 580.8 Q F1(>&)144 592.8 Q +F2(wor)A(d)-.37 E F0(Of the tw)108 609.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 F1(>)144 626.4 Q F2(wor)A(d)-.37 E F0(2)2.5 +E F1(>&)A F0(1)A F1(Her)87 643.2 Q 2.5(eD)-.18 G(ocuments)-2.5 E F0 .33 +(This type of redirection instructs the shell to read input from the cu\ +rrent source until a line containing only)108 655.2 R F2(wor)108.34 +667.2 Q(d)-.37 E F0 .683(\(with no trailing blanks\) is seen.)3.953 F +.684 +(All of the lines read up to that point are then used as the standard) +5.684 F(input for a command.)108 679.2 Q +(The format of here-documents is:)108 696 Q F1(<<)144 712.8 Q F0([)A F1 +A F0(])A F2(wor)A(d)-.37 E(her)164 724.8 Q(e-document)-.37 E F0 +(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(22)199.835 E 0 Cg EP +%%Page: 23 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/F1 10/Times-Italic@0 SF(delimiter)144 84 Q F0 .128 +(No parameter e)108 100.8 R .127 +(xpansion, command substitution, arithmetic e)-.15 F .127 +(xpansion, or pathname e)-.15 F .127(xpansion is performed)-.15 F(on)108 +112.8 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 124.8 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 136.8 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 148.8 Q/F2 10/Times-Bold@0 SF(\\)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(`)2.5 E F0(.)A .602 +(If the redirection operator is)108 165.6 R F2(<<\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 177.6 Q F1(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 194.4 Q 2.5(eS)-.18 G(trings)-2.5 E F0 +2.5(Av)108 206.4 S(ariant of here documents, the format is:)-2.75 E F2 +(<<<)144 223.2 Q F1(wor)A(d)-.37 E F0(The)108 240 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 F2 +(Duplicating File Descriptors)87 256.8 Q F0(The redirection operator)108 +268.8 Q([)144 285.6 Q F1(n)A F0(])A F2(<&)A F1(wor)A(d)-.37 E F0 .126 +(is used to duplicate input \214le descriptors.)108 302.4 R(If)5.127 E +F1(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 +314.4 Q F1(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 F1(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 326.4 R(If)5.149 E F1(wor) +2.989 E(d)-.37 E F0 -.25(eva)3.419 G .149(luates to).25 F F22.649 E +F0 2.65<2c8c>C .15(le descriptor)-2.65 F F1(n)3.01 E F0 .15(is closed.) +2.89 F(If)5.15 E F1(n)3.01 E F0 .15(is not speci\214ed,)2.89 F +(the standard input \(\214le descriptor 0\) is used.)108 338.4 Q +(The operator)108 355.2 Q([)144 372 Q F1(n)A F0(])A F2(>&)A F1(wor)A(d) +-.37 E F0 .444 +(is used similarly to duplicate output \214le descriptors.)108 388.8 R +(If)5.444 E F1(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 400.8 R 1.357(If the digits in)6.357 F F1(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.597(occurs. As)108 412.8 R 2.597 +(as)2.597 G .097(pecial case, if)-2.597 F F1(n)2.596 E F0 .096 +(is omitted, and)2.596 F F1(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 424.8 Q +(viously)-.25 E(.)-.65 E F2(Mo)87 441.6 Q(ving File Descriptors)-.1 E F0 +(The redirection operator)108 453.6 Q([)144 470.4 Q F1(n)A F0(])A F2(<&) +A F1(digit)A F2A F0(mo)108 487.2 Q -.15(ve)-.15 G 3.035(st).15 G +.535(he \214le descriptor)-3.035 F F1(digit)3.035 E F0 .535 +(to \214le descriptor)3.035 F F1(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 F1 +(n)3.036 E F0 .536(is not speci-)3.036 F(\214ed.)108 499.2 Q F1(digit)5 +E F0(is closed after being duplicated to)2.5 E F1(n)2.5 E F0(.)A +(Similarly)108 516 Q 2.5(,t)-.65 G(he redirection operator)-2.5 E([)144 +532.8 Q F1(n)A F0(])A F2(>&)A F1(digit)A F2A F0(mo)108 549.6 Q -.15 +(ve)-.15 G 2.786(st).15 G .286(he \214le descriptor)-2.786 F F1(digit) +2.786 E F0 .286(to \214le descriptor)2.786 F F1(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 F1(n)2.785 E F0 +.285(is not speci-)2.785 F(\214ed.)108 561.6 Q F2 +(Opening File Descriptors f)87 578.4 Q(or Reading and Writing)-.25 E F0 +(The redirection operator)108 590.4 Q([)144 607.2 Q F1(n)A F0(])A F2(<>) +A F1(wor)A(d)-.37 E F0 1.349(causes the \214le whose name is the e)108 +624 R 1.349(xpansion of)-.15 F F1(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 636 Q F1(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 F1(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 652.8 Q F1(Aliases)108 664.8 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 +(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 676.8 R F2(alias)2.894 E F0 +(and)2.894 E F2(unalias)2.894 E F0 -.2(bu)2.894 G .394(iltin commands).2 +F(\(see)108 688.8 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 700.8 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 F2(/)2.973 E F0(,)A +F2($)2.973 E F0(,)A F2(`)2.973 E F0(,)A(and)108 712.8 Q F2(=)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 F1(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 724.8 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(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(23) +199.835 E 0 Cg EP +%%Page: 24 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 -.1(wo)108 84 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 96 R .295(xpanded a second time.)-.15 F .296 +(This means that one may alias)5.295 F/F1 10/Times-Bold@0 SF(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 108 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 10 +/Times-Italic@0 SF(blank)3.042 E F0 3.042(,t).67 G .542(hen the ne) +-3.042 F(xt)-.15 E(command w)108 120 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 136.8 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 153.6 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 165.6 Q/F3 9/Times-Bold@0 SF(FUNCTIONS)2.5 E F0(belo)2.25 E(w\).) +-.25 E 1.22(Aliases are not e)108 182.4 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 194.4 Q F1(shopt)2.5 E F0 +(\(see the description of)2.5 E F1(shopt)2.5 E F0(under)2.5 E F3 +(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 +E .435 +(The rules concerning the de\214nition and use of aliases are some)108 +211.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 223.2 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 235.2 S .904 +(ommand is read, not when it is e)-3.403 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 247.2 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 .277 +(alias de\214nition on that line are not af)108 259.2 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 +271.2 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 functio\ +n is e)-.15 F -.15(xe)-.15 G(cuted,).15 E .494 +(because a function de\214nition is itself a compound command.)108 283.2 +R .495(As a consequence, aliases de\214ned in a func-)5.494 F .085 +(tion are not a)108 295.2 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 307.2 Q F1(alias)2.5 E F0 +(in compound commands.)2.5 E -.15(Fo)108 324 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/F4 10.95/Times-Bold@0 SF(FUNCTIONS)72 340.8 Q F0 3.467(As)108 +352.8 S .967(hell function, de\214ned as described abo)-3.467 F 1.267 +-.15(ve u)-.15 H(nder).15 E F3 .967(SHELL GRAMMAR)3.467 F/F5 9 +/Times-Roman@0 SF(,)A F0 .968(stores a series of commands for)3.217 F +1.002(later e)108 364.8 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 +376.8 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 388.8 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 400.8 R -.15(xe)-.15 G .639(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 412.8 +R F1(#)3.033 E F0 .532(is updated to re\215ect the change.)3.033 F .532 +(Special parameter 0 is unchanged.)5.532 F .532(The \214rst ele-)5.532 F +1.017(ment of the)108 424.8 R F3(FUNCN)3.517 E(AME)-.18 E F0 -.25(va) +3.267 G 1.017 +(riable is set to the name of the function while the function is e).25 F +-.15(xe)-.15 G 3.518(cuting. All).15 F 1.285 +(other aspects of the shell e)108 436.8 R -.15(xe)-.15 G 1.285 +(cution en).15 F 1.285 +(vironment are identical between a function and its caller with the)-.4 +F -.15(ex)108 448.8 S 2.029(ception that the).15 F F3(DEB)4.529 E(UG) +-.09 E F0(and)4.279 E F1(RETURN)4.529 E F0 2.029 +(traps \(see the description of the)4.529 F F1(trap)4.53 E F0 -.2(bu) +4.53 G 2.03(iltin under).2 F F3(SHELL)4.53 E -.09(BU)108 460.8 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.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 472.8 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.921 E F0 -.2(bu) +108 484.8 S(iltin \(in which case all functions inherit the).2 E F1(DEB) +2.5 E(UG)-.1 E F0(and)2.5 E F1(RETURN)2.5 E F0(traps\).)2.5 E -1.11(Va) +108 501.6 S .656(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 513.6 Q(alues are shared between the function and its caller)-.25 E +(.)-.55 E .043(If the b)108 530.4 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 +.044(cution resumes with).15 F 1.012(the ne)108 542.4 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 554.4 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 566.4 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 583.2 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.858 E F1(typeset)3.858 E F0 -.2(bu)3.858 G 1.358(iltin com-).2 F +3.39(mands. The)108 595.2 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 +.327(\214le and line number)108 607.2 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 619.2 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 631.2 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 +643.2 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 655.2 Q +(en in cases where this may cause a problem.)-.1 E +(Functions may be recursi)108 672 Q -.15(ve)-.25 G 5(.N).15 G 2.5(ol)-5 +G(imit is imposed on the number of recursi)-2.5 E .3 -.15(ve c)-.25 H +(alls.).15 E F4(ARITHMETIC EV)72 688.8 Q(ALU)-1.478 E -1.04(AT)-.657 G +(ION)1.04 E F0 2.298(The shell allo)108 700.8 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 712.8 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 2.07(check for o)108 724.8 R -.15(ve)-.15 G +(r\215o).15 E 3.37 -.65(w, t)-.25 H 2.07(hough di).65 F 2.07 +(vision by 0 is trapped and \215agged as an error)-.25 F 7.07(.T)-.55 G +2.07(he operators and their)-7.07 F(GNU Bash-3.2)72 768 Q(2006 Jan 26) +149.845 E(24)199.835 E 0 Cg EP +%%Page: 25 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 .645(precedence, associati)108 84 R(vity)-.25 E 3.145(,a)-.65 G +.646(nd v)-3.145 F .646(alues are the same as in the C language.)-.25 F +.646(The follo)5.646 F .646(wing list of operators is)-.25 F +(grouped into le)108 96 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/F1 10 +/Times-Italic@0 SF(id)108 112.8 Q/F2 10/Times-Bold@0 SF(++)A F1(id)2.5 E +F2A F0 -.25(va)144 124.8 S +(riable post-increment and post-decrement).25 E F2(++)108 136.8 Q F1(id) +A F22.5 E F1(id)A F0 -.25(va)144 148.8 S +(riable pre-increment and pre-decrement).25 E F2 2.5108 160.8 S F0 +(unary minus and plus)19.6 E F2 2.5(!~)108 172.8 S F0 +(logical and bitwise ne)24.34 E -.05(ga)-.15 G(tion).05 E F2(**)108 +184.8 Q F0 -.15(ex)26 G(ponentiation).15 E F2 2.5(*/%)108 196.8 S F0 +(multiplication, di)10.72 E(vision, remainder)-.25 E F2 2.5<2bad>108 +208.8 S F0(addition, subtraction)19.6 E F2(<< >>)108 220.8 Q F0 +(left and right bitwise shifts)10.7 E F2(<= >= < >)108 232.8 Q F0 +(comparison)144 244.8 Q F2(== !=)108 256.8 Q F0(equality and inequality) +13.07 E F2(&)108 268.8 Q F0(bitwise AND)27.67 E F2(^)108 280.8 Q F0 +(bitwise e)32.67 E(xclusi)-.15 E .3 -.15(ve O)-.25 H(R).15 E F2(|)108 +292.8 Q F0(bitwise OR)33.8 E F2(&&)108 304.8 Q F0(logical AND)19.34 E F2 +(||)108 316.8 Q F0(logical OR)31.6 E F1 -.2(ex)108 328.8 S(pr).2 E F2(?) +A F1 -.2(ex)C(pr).2 E F2(:)A F1 -.2(ex)C(pr).2 E F0 +(conditional operator)144 340.8 Q F2 2.5(=*)108 352.8 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 364.8 Q F1 -.2(ex)108 376.8 S +(pr1).2 E F2(,)2.5 E F1 -.2(ex)2.5 G(pr2).2 E F0(comma)144 388.8 Q .68 +(Shell v)108 405.6 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 417.6 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 429.6 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 441.6 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 453.6 R 1.389 +(ariable which has been gi)-.25 F -.15(ve)-.25 G 3.889(nt).15 G(he) +-3.889 E F1(inte)3.889 E -.1(ge)-.4 G(r).1 E F0(attrib)3.889 E 1.389 +(ute using)-.2 F F2(declar)3.889 E 3.889(e-)-.18 G(i)-3.889 E F0(is) +3.889 E .343(assigned a v)108 465.6 R 2.843(alue. A)-.25 F .343(null v) +2.843 F .343(alue e)-.25 F -.25(va)-.25 G .343(luates to 0.).25 F 2.843 +(As)5.343 G .343(hell v)-2.843 F .343(ariable need not ha)-.25 F .643 +-.15(ve i)-.2 H .343(ts inte).15 F .344(ger attrib)-.15 F .344 +(ute turned on)-.2 F(to be used in an e)108 477.6 Q(xpression.)-.15 E +1.406(Constants with a leading 0 are interpreted as octal numbers.)108 +494.4 R 3.906(Al)6.406 G 1.406(eading 0x or 0X denotes he)-3.906 F +(xadecimal.)-.15 E .589(Otherwise, numbers tak)108 506.4 R 3.089(et)-.1 +G .589(he form [)-3.089 F F1(base#)A F0 .589(]n, where)B F1(base)3.089 E +F0 .59(is a decimal number between 2 and 64 represent-)3.089 F .093 +(ing the arithmetic base, and)108 518.4 R F1(n)2.593 E F0 .093 +(is a number in that base.)2.593 F(If)5.093 E F1(base#)2.593 E F0 .092 +(is omitted, then base 10 is used.)2.593 F .092(The digits)5.092 F .064 +(greater than 9 are represented by the lo)108 530.4 R .064 +(wercase letters, the uppercase letters, @, and _, in that order)-.25 F +5.065(.I)-.55 G(f)-5.065 E F1(base)2.565 E F0 .433 +(is less than or equal to 36, lo)108 542.4 R .432(wercase and uppercase\ + letters may be used interchangeably to represent num-)-.25 F +(bers between 10 and 35.)108 554.4 Q .234(Operators are e)108 571.2 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 583.2 S +(rride the precedence rules abo).15 E -.15(ve)-.15 G(.).15 E/F3 10.95 +/Times-Bold@0 SF(CONDITION)72 600 Q(AL EXPRESSIONS)-.219 E F0 .256 +(Conditional e)108 612 R .256(xpressions are used by the)-.15 F F2([[) +2.755 E F0 .255(compound command and the)2.755 F F2(test)2.755 E F0(and) +2.755 E F2([)2.755 E F0 -.2(bu)2.755 G .255(iltin commands to test).2 F +.77(\214le attrib)108 624 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.041 +(unary or binary primaries.)108 636 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 648 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 660 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 .722 +(Unless otherwise speci\214ed, primaries that operate on \214les follo) +108 676.8 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 688.8 +Q F2108 712.8 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(GNU Bash-3.2)72 768 Q +(2006 Jan 26)149.845 E(25)199.835 E 0 Cg EP +%%Page: 26 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/F1 10/Times-Bold@0 SF108 84 Q/F2 10/Times-Italic@0 SF +(\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 96 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 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 is a directory).15 E(.)-.65 E F1108 120 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 132 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 F1108 144 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 set-group-id.).15 E F1108 156 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 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 `).15 E(`stick)-.74 E(y')-.15 E 2.5('b)-.74 G(it is set.) +-2.5 E F1108 180 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 192 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 +204 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 +216 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 228 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 +240 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 252 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 264 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 276 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 288 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 F1 +108 300 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 F1 +108 312 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 F2(\214le1)108 324 Q F02.5 E F1(nt)A F2 +(\214le2)2.5 E F0 -.35(Tr)144 336 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 348 Q F02.5 E F1(ot)A F2(\214le2)2.5 E F0 +-.35(Tr)144 360 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 F2 +(\214le1)108 372 Q F1(\255ef)2.5 E F2(\214le2)2.5 E F0 -.35(Tr)144 384 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 F1108 +396 Q F2(optname)2.5 E F0 -.35(Tr)144 408 S 1.144(ue if shell option).35 +F F2(optname)3.874 E F0 1.144(is enabled.)3.824 F 1.143 +(See the list of options under the description of the)6.144 F F1 +3.643 E F0(option to the)144 420 Q F1(set)2.5 E F0 -.2(bu)2.5 G +(iltin belo).2 E -.65(w.)-.25 G F1108 432 Q F2(string)2.5 E F0 +-.35(Tr)144 444 S(ue if the length of).35 E F2(string)2.5 E F0(is zero.) +2.5 E F2(string)108 456 Q F1108 468 Q F2(string)2.5 E F0 -.35(Tr) +144 480 S(ue if the length of).35 E F2(string)2.84 E F0(is non-zero.) +2.72 E F2(string1)108 496.8 Q F1(==)2.5 E F2(string2)2.5 E F0 -.35(Tr) +144 508.8 S(ue if the strings are equal.).35 E F1(=)5 E F0 +(may be used in place of)2.5 E F1(==)2.5 E F0 +(for strict POSIX compliance.)2.5 E F2(string1)108 525.6 Q F1(!=)2.5 E +F2(string2)2.5 E F0 -.35(Tr)144 537.6 S +(ue if the strings are not equal.).35 E F2(string1)108 554.4 Q F1(<)2.5 +E F2(string2)2.5 E F0 -.35(Tr)144 566.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 in the current locale.)-.15 E F2(string1)108 583.2 Q F1 +(>)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 595.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 in the current locale.)-.15 E F2(ar)108.33 612 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 624 +Q F0 .385(is one of)2.634 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, less than or e\ +qual to, greater than, or greater than or equal to)144 636 R F2(ar)144 +648 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 664.8 Q(ANSION)-.81 E F0 .613 +(When a simple command is e)108 676.8 R -.15(xe)-.15 G .614 +(cuted, the shell performs the follo).15 F .614(wing e)-.25 F .614 +(xpansions, assignments, and redi-)-.15 F(rections, from left to right.) +108 688.8 Q 26(1. The)108 705.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 +(ariable assignments \(those preceding the command)-.25 F +(name\) and redirections are sa)144 717.6 Q -.15(ve)-.2 G 2.5(df).15 G +(or later processing.)-2.5 E(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E +(26)199.835 E 0 Cg EP +%%Page: 27 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 26(2. The)108 84 R -.1(wo)3.663 G 1.163(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 96 R .776(xpansion, the \214rst w)-.15 F .776 +(ord is tak)-.1 F .775 +(en to be the name of the command and the remaining w)-.1 F(ords)-.1 E +(are the ar)144 108 Q(guments.)-.18 E 26(3. Redirections)108 124.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 141.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 153.6 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 165.6 Q +.332(If no command name results, the v)108 182.4 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 194.4 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 206.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 218.4 Q(xits with a non-zero status.)-.15 E .15 +(If no command name results, redirections are performed, b)108 235.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 247.2 +Q(xit with a non-zero status.)-.15 E 1.064 +(If there is a command name left after e)108 264 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 276 +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 288 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 300 Q +(xits with a status of zero.)-.15 E/F4 10.95/Times-Bold@0 SF +(COMMAND EXECUTION)72 316.8 Q F0 .547 +(After a command has been split into w)108 328.8 R .546 +(ords, if it results in a simple command and an optional list of ar)-.1 +F(gu-)-.18 E(ments, the follo)108 340.8 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 357.6 R .379(If there e)5.379 F .379 +(xists a shell function by)-.15 F .246(that name, that function is in) +108 369.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 381.6 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 398.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 410.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 +422.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 434.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(search is unsuccessful, the shell prints an error m\ +essage and returns an e)108 446.4 Q(xit status of 127.)-.15 E 1.089(If \ +the search is successful, or if the command name contains one or more s\ +lashes, the shell e)108 463.2 R -.15(xe)-.15 G 1.09(cutes the).15 F .198 +(named program in a separate e)108 475.2 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 487.2 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 504 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 .678(assumed to be a)108 516 R/F5 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 .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 528 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 540 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 552 S(IL).09 E(TIN COMMANDS)-.828 E F2(\))A +F0(are retained by the child.)2.25 E .347(If the program is a \214le be) +108 568.8 R .347(ginning with)-.15 F F3(#!)2.847 E F0 2.847(,t)C .348(h\ +e remainder of the \214rst line speci\214es an interpreter for the pro-) +-2.847 F 3.178(gram. The)108 580.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.192(format themselv) +108 592.8 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 604.8 R +1.13(wed by the name of the program, follo)-.25 F 1.13(wed by the)-.25 F +(command ar)108 616.8 Q(guments, if an)-.18 E -.65(y.)-.15 G F4 +(COMMAND EXECUTION ENVIR)72 633.6 Q(ONMENT)-.329 E F0(The shell has an) +108 645.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.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 +F3(exec)3.906 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-3.2)72 768 Q(2006 Jan 26)149.845 E(27)199.835 E 0 Cg EP +%%Page: 28 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 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 .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 129.6 Q(vironment)-.4 E 32.5<8373>108 146.4 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 +(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 +(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 +F1($PPID)2.5 E F0 .426(When a simple command other than a b)108 230.4 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 242.4 S .134(cution en).15 F .134 +(vironment that consists of the follo)-.4 F 2.634(wing. Unless)-.25 F +.133(otherwise noted, the v)2.634 F .133(alues are inherited from)-.25 F +(the shell.)108 254.4 Q 32.5<8374>108 283.2 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 295.2 Q 32.5<8374>108 312 S(he current w)-32.5 E +(orking directory)-.1 E 32.5<8374>108 328.8 S +(he \214le creation mode mask)-32.5 E 32.5<8373>108 345.6 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 357.6 Q(vironment) +-.4 E 32.5<8374>108 374.4 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 386.4 Q +2.5(Ac)108 403.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 +(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 420 R -.2(vo)-.4 G -.1(ke) +.2 G 3.077(di).1 G(n)-3.077 E 2.744(as)108 432 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 444 R .358 +(alues that the shell inherited from its parent at in)-.25 F -.2(vo)-.4 +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 456 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 468 Q(fect the shell')-.25 E 2.5(se)-.55 G -.15 +(xe)-2.65 G(cution en).15 E(vironment.)-.4 E .405(If a command is follo) +108 484.8 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 496.8 R/F2 10/Times-Italic@0 SF(/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 508.8 Q/F3 10.95/Times-Bold@0 SF +(ENVIR)72 525.6 Q(ONMENT)-.329 E F0 2.354(When a program is in)108 537.6 +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.353(his is a list of)-7.353 F F2(name)108 549.6 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.485(The shell pro)108 566.4 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 578.4 Q .144(viron\ +ment and creates a parameter for each name found, automatically marking\ + it for)-.4 F F2 -.2(ex)2.643 G(port).2 E F0 .143(to child pro-)3.323 F +2.703(cesses. Ex)108 590.4 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 602.4 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 614.4 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 626.4 +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 638.4 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 650.4 Q 2.5<65ad>-.18 G(x)-2.5 E F0(commands.)2.5 E .563(The en)108 +667.2 R .563(vironment for an)-.4 F(y)-.15 E F2 .563(simple command) +3.403 F F0 .562 +(or function may be augmented temporarily by pre\214xing it with)3.833 F +.202(parameter assignments, as described abo)108 679.2 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 +.203(fect only the)-.25 F(en)108 691.2 Q +(vironment seen by that command.)-.4 E .81(If the)108 708 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 F2(all)3.64 E F0 .81 +(parameter assignments are placed in)3.82 F(the en)108 720 Q +(vironment for a command, not just those that precede the command name.) +-.4 E(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(28)199.835 E 0 Cg EP +%%Page: 29 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(When)108 84 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 96 Q(vironment.)-.4 E/F2 10.95 +/Times-Bold@0 SF(EXIT ST)72 112.8 Q -1.04(AT)-.986 G(US)1.04 E F0 -.15 +(Fo)108 124.8 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 136.8 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 148.8 Q/F3 10/Times-Italic@0 SF(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 .405 +(If a command is not found, the child process created to e)108 165.6 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 177.6 Q(ut is not e)-.2 E -.15(xe) +-.15 G(cutable, the return status is 126.).15 E(If a command f)108 194.4 +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 211.2 R .08 +(uiltin commands return a status of 0 \()-.2 F F3(true)A F0 2.581(\)i)C +2.581(fs)-2.581 G .081(uccessful, and non-zero \()-2.581 F F3(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 223.2 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 240 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 252 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 268.8 Q(ALS)-.219 E F0(When)108 280.8 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 9/Times-Bold@0 SF(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 +292.8 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 304.8 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 321.6 +Q 1.064(uiltin commands run by)-.2 F F1(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 +333.6 R .748(job control is not in ef)3.248 F .747 +(fect, asynchronous commands ignore)-.25 F F4(SIGINT)3.247 E F0(and) +2.997 E F4(SIGQ)3.247 E(UIT)-.09 E F0 .747(in addi-)2.997 F .652 +(tion to these inherited handlers.)108 345.6 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 357.6 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.046(The shell e)108 374.4 R 2.046 +(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.345 +-.15(ve s)-.25 H 2.045(hell resends the).15 F F4(SIGHUP)108 386.4 Q F0 +1.004(to all jobs, running or stopped.)3.254 F 1.004 +(Stopped jobs are sent)6.004 F F4(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 F4(SIGHUP)108 398.4 Q F5(.)A F0 2.53 -.8(To p)5.43 +H(re).8 E -.15(ve)-.25 G .93(nt the shell from sending the signal to a \ +particular job, it should be remo).15 F -.15(ve)-.15 G 3.429(df).15 G +.929(rom the)-3.429 F 1.356(jobs table with the)108 410.4 R F1(diso) +3.856 E(wn)-.1 E F0 -.2(bu)3.856 G 1.356(iltin \(see).2 F F4 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 F4 +(SIGHUP)108 422.4 Q F0(using)2.25 E F1(diso)2.5 E(wn \255h)-.1 E F0(.)A +.166(If the)108 439.2 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)2.666 E F0 .166 +(to all jobs when an interacti)2.416 F -.15(ve)-.25 G(login shell e)108 +451.2 Q(xits.)-.15 E(If)108 468 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 .663(will not be e)108 480 R -.15(xe)-.15 G .663 +(cuted until the command completes.).15 F(When)5.663 E F1(bash)3.163 E +F0 .662(is w)3.163 F .662(aiting for an asynchronous command)-.1 F .99 +(via the)108 492 R F1(wait)3.49 E F0 -.2(bu)3.49 G .99(iltin, the recep\ +tion 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 504 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 520.8 Q(OL)-.329 E F3 -.25 +(Jo)108 532.8 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 F3(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 544.8 Q +F3 -.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.002 -.15(ve i)-.25 H(nterf).15 E(ace) +-.1 E(supplied jointly by the system')108 556.8 Q 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 .785(The shell associates a)108 573.6 R F3(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 585.6 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 F3(bac)2.841 E(kgr)-.2 E +(ound)-.45 E F0 .341(\), it prints a line).77 F(that looks lik)108 597.6 +Q(e:)-.1 E([1] 25647)144 614.4 Q .241(indicating that this job is job n\ +umber 1 and that the process ID of the last process in the pipeline ass\ +ociated)108 631.2 R .732(with this job is 25647.)108 643.2 R .733 +(All of the processes in a single pipeline are members of the same job) +5.732 F(.)-.4 E F1(Bash)5.733 E F0(uses)3.233 E(the)108 655.2 Q F3(job) +4.24 E F0(abstraction as the basis for job control.)2.73 E 3.063 -.8 +(To f)108 672 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 684 R F3(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 +696 R .323 -.15(ve k)-.25 H -.15(ey).05 G .023 +(board-generated signals such as).15 F F4(SIG-)2.522 E(INT)108 708 Q F5 +(.)A F0 1.346(These processes are said to be in the)5.846 F F3(for)3.847 +E -.4(eg)-.37 G -.45(ro).4 G(und).45 E F0(.).77 E F3(Bac)6.927 E(kgr)-.2 +E(ound)-.45 E F0 1.347(processes are those whose process)4.617 F 1.844 +(group ID dif)108 720 R 1.844(fers from the terminal')-.25 F 1.844 +(s; such processes are immune to k)-.55 F -.15(ey)-.1 G 1.843 +(board-generated signals.).15 F(Only)6.843 E(GNU Bash-3.2)72 768 Q +(2006 Jan 26)149.845 E(29)199.835 E 0 Cg EP +%%Page: 30 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(fore)108 84 Q 1.964(ground processes are allo)-.15 F 1.964 +(wed to read from or write to the terminal.)-.25 F 1.965 +(Background processes which)6.965 F .759 +(attempt to read from \(write to\) the terminal are sent a)108 96 R/F1 9 +/Times-Bold@0 SF .758(SIGTTIN \(SIGTT)3.258 F(OU\))-.162 E F0 .758 +(signal by the terminal dri)3.008 F -.15(ve)-.25 G -.4(r,).15 G +(which, unless caught, suspends the process.)108 108 Q 1.087 +(If the operating system on which)108 124.8 R/F2 10/Times-Bold@0 SF +(bash)3.587 E F0 1.088(is running supports job control,)3.588 F F2(bash) +3.588 E F0 1.088(contains f)3.588 F 1.088(acilities to use it.)-.1 F -.8 +(Ty)108 136.8 S .302(ping the).8 F/F3 10/Times-Italic@0 SF(suspend)3.142 +E F0 .302(character \(typically)3.572 F F2(^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 148.8 R F2(bash)4.642 E F0 +7.142(.T)C 2.142(yping the)-7.942 F F3 2.142(delayed suspend)4.992 F F0 +2.143(character \(typically)5.413 F F2(^Y)4.643 E F0 4.643(,C)C +(ontrol-Y\))-4.643 E .021(causes the process to be stopped when it atte\ +mpts to read input from the terminal, and control to be returned)108 +160.8 R(to)108 172.8 Q F2(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 +F2(bg)3.392 E F0 .892(command to continue it in the)3.392 F .895 +(background, the)108 184.8 R F2(fg)3.395 E F0 .895 +(command to continue it in the fore)3.395 F .895(ground, or the)-.15 F +F2(kill)3.395 E F0 .894(command to kill it.)3.395 F(A)5.894 E F2(^Z) +3.394 E F0(tak)3.394 E(es)-.1 E(ef)108 196.8 Q .948(fect immediately) +-.25 F 3.448(,a)-.65 G .948(nd has the additional side ef)-3.448 F .948 +(fect of causing pending output and typeahead to be dis-)-.25 F(carded.) +108 208.8 Q 1.098(There are a number of w)108 225.6 R 1.097 +(ays to refer to a job in the shell.)-.1 F 1.097(The character)6.097 F +F2(%)3.597 E F0 1.097(introduces a job name.)3.597 F(Job)6.097 E(number) +108 237.6 Q F3(n)3.13 E F0 .27(may be referred to as)3.01 F F2(%n)2.77 E +F0 5.27(.A)C .27 +(job may also be referred to using a pre\214x of the name used to start) +-2.5 F .277(it, or using a substring that appears in its command line.) +108 249.6 R -.15(Fo)5.277 G 2.777(re).15 G(xample,)-2.927 E F2(%ce)2.777 +E F0 .277(refers to a stopped)2.777 F F2(ce)2.777 E F0(job)2.777 E 5.277 +(.I)-.4 G 2.777(fa)-5.277 G .38(pre\214x matches more than one job,)108 +261.6 R F2(bash)2.88 E F0 .38(reports an error)2.88 F 5.38(.U)-.55 G +(sing)-5.38 E F2(%?ce)2.88 E F0 2.88(,o)C 2.88(nt)-2.88 G .38 +(he other hand, refers to an)-2.88 F 2.88(yj)-.15 G(ob)-2.88 E .623 +(containing the string)108 273.6 R F2(ce)3.123 E F0 .622 +(in its command line.)3.123 F .622 +(If the substring matches more than one job,)5.622 F F2(bash)3.122 E F0 +.622(reports an)3.122 F(error)108 285.6 Q 5.143(.T)-.55 G .143 +(he symbols)-5.143 F F2(%%)2.643 E F0(and)2.643 E F2(%+)2.643 E F0 .143 +(refer to the shell')2.643 F 2.643(sn)-.55 G .143(otion of the)-2.643 F +F3(curr)2.643 E .143(ent job)-.37 F F0 2.643(,w).23 G .143 +(hich is the last job stopped)-2.643 F 1.209(while it w)108 297.6 R +1.209(as in the fore)-.1 F 1.208(ground or started in the background.) +-.15 F(The)6.208 E F3(pr)4.958 E -.15(ev)-.37 G 1.208(ious job).15 F F0 +1.208(may be referenced using)3.938 F F2<25ad>108 309.6 Q F0 5.486(.I)C +2.986(no)-5.486 G .486 +(utput pertaining to jobs \(e.g., the output of the)-2.986 F F2(jobs) +2.987 E F0 .487(command\), the current job is al)2.987 F -.1(wa)-.1 G +.487(ys \215agged).1 F .15(with a)108 321.6 R F2(+)2.65 E F0 2.65(,a)C +.15(nd the pre)-2.65 F .15(vious job with a)-.25 F F22.65 E F0 5.15 +(.A)C .15(single % \(with no accompan)-2.5 F .15 +(ying job speci\214cation\) also refers to)-.15 F(the current job)108 +333.6 Q(.)-.4 E .443 +(Simply naming a job can be used to bring it into the fore)108 350.4 R +(ground:)-.15 E F2(%1)2.944 E F0 .444(is a synon)2.944 F .444(ym for) +-.15 F F2 -.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 +362.4 R 3.973(ground. Similarly)-.15 F(,)-.65 E F2 -.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 374.4 Q -.25(va)-.25 G(lent to).25 E F2 -.63(``)2.5 G(bg %1') +.63 E(')-.63 E F0(.)A .13(The shell learns immediately whene)108 391.2 R +-.15(ve)-.25 G 2.63(raj).15 G .13(ob changes state.)-2.63 F(Normally) +5.131 E(,)-.65 E F2(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 403.2 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 F22.657 E F0 .157 +(option to)2.657 F(the)108 415.2 Q F2(set)3.951 E F0 -.2(bu)3.951 G +1.451(iltin command is enabled,).2 F F2(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 F1(SIGCHLD)3.952 E F0(is)3.702 E -.15 +(exe)108 427.2 S(cuted for each child that e).15 E(xits.)-.15 E 1.027 +(If an attempt to e)108 444 R(xit)-.15 E F2(bash)3.527 E F0 1.027 +(is made while jobs are stopped, the shell prints a w)3.527 F 1.026 +(arning message.)-.1 F(The)6.026 E F2(jobs)3.526 E F0 .255 +(command may then be used to inspect their status.)108 456 R .255 +(If a second attempt to e)5.255 F .256(xit is made without an interv) +-.15 F(en-)-.15 E(ing command, the shell does not print another w)108 +468 Q(arning, and the stopped jobs are terminated.)-.1 E/F4 10.95 +/Times-Bold@0 SF(PR)72 484.8 Q(OMPTING)-.329 E F0 .645(When e)108 496.8 +R -.15(xe)-.15 G .645(cuting interacti).15 F -.15(ve)-.25 G(ly).15 E(,) +-.65 E F2(bash)3.145 E F0 .645(displays the primary prompt)3.145 F F1 +(PS1)3.145 E F0 .645(when it is ready to read a command,)2.895 F 1.825 +(and the secondary prompt)108 508.8 R F1(PS2)4.325 E F0 1.825 +(when it needs more input to complete a command.)4.075 F F2(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 520.8 R(decoded as follo)108 532.8 Q(ws:)-.25 E F2(\\a)144 +544.8 Q F0(an ASCII bell character \(07\))28.22 E F2(\\d)144 556.8 Q F0 +(the date in "W)27.66 E(eekday Month Date" format \(e.g., "T)-.8 E +(ue May 26"\))-.45 E F2(\\D{)144 568.8 Q F3(format)A F2(})A F0(the)180 +580.8 Q F3(format)3.926 E F0 1.426(is passed to)3.926 F F3(strftime) +3.926 E F0 1.427 +(\(3\) and the result is inserted into the prompt string; an)B(empty)180 +592.8 Q F3(format)2.5 E F0 +(results in a locale-speci\214c time representation.)2.5 E +(The braces are required)5 E F2(\\e)144 604.8 Q F0 +(an ASCII escape character \(033\))28.78 E F2(\\h)144 616.8 Q F0 +(the hostname up to the \214rst `.)27.66 E(')-.7 E F2(\\H)144 628.8 Q F0 +(the hostname)25.44 E F2(\\j)144 640.8 Q F0 +(the number of jobs currently managed by the shell)29.89 E F2(\\l)144 +652.8 Q F0(the basename of the shell')30.44 E 2.5(st)-.55 G(erminal de) +-2.5 E(vice name)-.25 E F2(\\n)144 664.8 Q F0(ne)27.66 E(wline)-.25 E F2 +(\\r)144 676.8 Q F0(carriage return)28.78 E F2(\\s)144 688.8 Q F0 +(the name of the shell, the basename of)29.33 E F2($0)2.5 E F0 +(\(the portion follo)2.5 E(wing the \214nal slash\))-.25 E F2(\\t)144 +700.8 Q F0(the current time in 24-hour HH:MM:SS format)29.89 E F2(\\T) +144 712.8 Q F0(the current time in 12-hour HH:MM:SS format)26.55 E +(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(30)199.835 E 0 Cg EP +%%Page: 31 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/F1 10/Times-Bold@0 SF(\\@)144 84 Q F0 +(the current time in 12-hour am/pm format)23.92 E F1(\\A)144 96 Q F0 +(the current time in 24-hour HH:MM format)26 E F1(\\u)144 108 Q F0 +(the username of the current user)27.66 E F1(\\v)144 120 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 132 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 144 Q F0(the current w)26 E(orking directory)-.1 E 2.5 +(,w)-.65 G(ith)-2.5 E F1($HOME)2.5 E F0(abbre)2.5 E(viated with a tilde) +-.25 E F1(\\W)144 156 Q F0(the basename of the current w)23.22 E +(orking directory)-.1 E 2.5(,w)-.65 G(ith)-2.5 E F1($HOME)2.5 E F0 +(abbre)2.5 E(viated with a tilde)-.25 E F1(\\!)144 168 Q F0 +(the history number of this command)29.89 E F1(\\#)144 180 Q F0 +(the command number of this command)28.22 E F1(\\$)144 192 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 204 Q/F2 10 +/Times-Italic@0 SF(nnn)A F0 +(the character corresponding to the octal number)18.22 E F2(nnn)2.5 E F1 +(\\\\)144 216 Q F0 2.5(ab)30.44 G(ackslash)-2.5 E F1(\\[)144 228 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 240 Q F1(\\])144 252 Q F0(end a sequence of non-printing characters) +29.89 E .119(The command number and the history number are usually dif) +108 268.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 280.8 R/F3 9/Times-Bold@0 SF(HIST) +4.084 E(OR)-.162 E(Y)-.315 E F0(belo)108 292.8 Q .541(w\), while the co\ +mmand number is the position 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 304.8 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 316.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 328.8 Q F1(shopt)2.5 E F0(command under)2.5 E +F3(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 345.6 Q F0 .151 +(This is the library that handles reading input when using an interacti) +108 357.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 .066(is gi)108 369.6 R -.15 +(ve)-.25 G 2.566(na).15 G 2.566(ts)-2.566 G .066(hell in)-2.566 F -.2 +(vo)-.4 G 2.566(cation. By).2 F(def)2.566 E .066 +(ault, the line editing commands are similar to those of emacs.)-.1 F +2.567(Av)5.067 G(i-style)-2.567 E .566(line editing interf)108 381.6 R +.566(ace is also a)-.1 F -.25(va)-.2 G 3.065(ilable. T).25 F 3.065(ot) +-.8 G .565(urn of)-3.065 F 3.065(fl)-.25 G .565 +(ine editing after the shell is running, use the)-3.065 F F1 .565 +(+o emacs)3.065 F F0(or)108 393.6 Q 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 \(see).2 E F3(SHELL B)2.5 E(UIL) +-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1 +(Readline Notation)87 410.4 Q F0 .567 +(In this section, the emacs-style notation is used to denote k)108 422.4 +R -.15(ey)-.1 G(strok).15 E 3.068(es. Control)-.1 F -.1(ke)3.068 G .568 +(ys are denoted by C\255)-.05 F F2 -.1(ke)C(y)-.2 E F0(,)A 1.153 +(e.g., C\255n means Control\255N.)108 434.4 R(Similarly)6.153 E(,)-.65 E +F2(meta)4.033 E F0 -.1(ke)3.913 G 1.153(ys are denoted by M\255)-.05 F +F2 -.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 446.4 S .83 +(yboards without a)-.05 F F2(meta)3.71 E F0 -.1(ke)3.59 G 2.13 -.65 +(y, M)-.05 H.65 E F2(x)A F0 .83(means ESC)3.33 F F2(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 F2(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 458.4 R F2 .6(meta pr)3.1 F +(e\214x)-.37 E F0 5.6(.T)C .6(he combination M\255C\255)-5.6 F F2(x)A F0 +.599(means ESC\255Control\255)3.099 F F2(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 470.4 Q .3 -.15(ey w)-.1 H +(hile pressing the).15 E F2(x)3.27 E F0 -.1(ke)3.03 G -.65(y.)-.05 G(\)) +.65 E .619(Readline commands may be gi)108 487.2 R -.15(ve)-.25 G 3.119 +(nn).15 G(umeric)-3.119 E F2(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 499.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 +(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 511.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 523.2 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 540 R F2 +(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 F2 +(yank-)-3.311 E(ing)108 552 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 F2 +.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 564 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 576 Q F1(Readline Initialization)87 592.8 Q F0 .091(Readline is cus\ +tomized by putting commands in an initialization \214le \(the)108 604.8 +R F2(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 616.8 R .196(en from the v) +-.1 F .196(alue of the)-.25 F F3(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 us\ +es the readline library starts up, the initialization \214le is read, a\ +nd the k)108 628.8 R 1.335 -.15(ey b)-.1 H 1.035(indings and).15 F -.25 +(va)108 640.8 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 652.8 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 664.8 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 681.6 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 693.6 Q +(wn commands and bindings.)-.25 E -.15(Fo)108 710.4 S 2.5(re).15 G +(xample, placing)-2.65 E(M\255Control\255u: uni)144 727.2 Q -.15(ve)-.25 +G(rsal\255ar).15 E(gument)-.18 E(GNU Bash-3.2)72 768 Q(2006 Jan 26) +149.845 E(31)199.835 E 0 Cg EP +%%Page: 32 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(or)108 84 Q(C\255Meta\255u: uni)144 96 Q -.15(ve)-.25 G +(rsal\255ar).15 E(gument)-.18 E(into the)108 108 Q/F1 10/Times-Italic@0 +SF(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 F1 +(univer)2.5 E(sal\255ar)-.1 E(gument)-.37 E F0(.).68 E 1.26(The follo) +108 124.8 R 1.261(wing symbolic character names are recognized:)-.25 F +F1 -.4(RU)3.761 G(BOUT).4 E F0(,)1.27 E F1(DEL)3.761 E F0(,).53 E F1 +(ESC)3.761 E F0(,).72 E F1(LFD)3.761 E F0(,).28 E F1(NEWLINE)3.761 E F0 +(,).73 E F1(RET)3.761 E F0(,)1.27 E F1(RETURN)108 136.8 Q F0(,)1.1 E F1 +(SPC)2.5 E F0(,).72 E F1(SP)2.5 E -.3(AC)-.9 G(E).3 E F0 2.5(,a).73 G +(nd)-2.5 E F1 -.5(TA)2.5 G(B).5 E F0(.).27 E .209 +(In addition to command names, readline allo)108 153.6 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 165.6 Q F1(macr)2.5 E(o)-.45 E F0(\).)A/F2 +10/Times-Bold@0 SF(Readline K)87 182.4 Q(ey Bindings)-.25 E F0 .366 +(The syntax for controlling k)108 194.4 R .666 -.15(ey b)-.1 H .366 +(indings in the).15 F F1(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 206.4 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 218.4 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 F1(Meta\255)3.353 E F0(or)3.353 E F1(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 230.4 Q 1.542(When using the form)108 247.2 R F2 +-.1(ke)4.042 G(yname).1 E F0(:)A F1(function\255name).833 E F0(or)4.042 +E F1(macr)4.042 E(o)-.45 E F0(,)A F1 -.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 259.2 R(or e)-.15 E(xample:)-.15 E +(Control-u: uni)144 283.2 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 +E(Meta-Rubout: backw)144 295.2 Q(ard-kill-w)-.1 E(ord)-.1 E +(Control-o: "> output")144 307.2 Q .698(In the abo)108 324 R .998 -.15 +(ve ex)-.15 H(ample,).15 E F1(C\255u)3.038 E F0 .698 +(is bound to the function)3.448 F F2(uni)3.198 E -.1(ve)-.1 G +(rsal\255ar).1 E(gument)-.1 E F0(,)A F1(M\255DEL)3.878 E F0 .698 +(is bound to the func-)3.728 F(tion)108 336 Q F2(backward\255kill\255w) +2.759 E(ord)-.1 E F0 2.759(,a)C(nd)-2.759 E F1(C\255o)2.599 E F0 .258 +(is bound to run the macro e)2.939 F .258 +(xpressed on the right hand side \(that is, to)-.15 F(insert the te)108 +348 Q(xt)-.15 E/F3 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 364.8 R F2("k)2.555 +E(eyseq")-.1 E F0(:)A F1(function\255name).833 E F0(or)2.555 E F1(macr) +2.555 E(o)-.45 E F0(,)A F2 -.1(ke)2.555 G(yseq).1 E F0(dif)2.556 E .056 +(fers from)-.25 F F2 -.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 376.8 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 388.8 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 400.8 Q("\\C\255u": uni)144 424.8 Q -.15(ve) +-.25 G(rsal\255ar).15 E(gument)-.18 E +("\\C\255x\\C\255r": re\255read\255init\255\214le)144 436.8 Q +("\\e[11~": "Function K)144 448.8 Q .3 -.15(ey 1)-.25 H(").15 E .315 +(In this e)108 465.6 R(xample,)-.15 E F1(C\255u)2.655 E F0 .315(is ag) +3.065 F .315(ain bound to the function)-.05 F F2(uni)2.815 E -.1(ve)-.1 +G(rsal\255ar).1 E(gument)-.1 E F0(.)A F1 .315(C\255x C\255r)5.155 F F0 +.314(is bound to the func-)3.544 F(tion)108 477.6 Q F2 -.18(re)2.5 G +.18 E(ead\255init\255\214le)-.18 E F0 2.5(,a)C(nd)-2.5 E F1 +(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 494.4 Q F2 +<5c43ad>144 506.4 Q F0(control pre\214x)20.3 E F2<5c4dad>144 518.4 Q F0 +(meta pre\214x)18.08 E F2(\\e)144 530.4 Q F0(an escape character)28.78 E +F2(\\\\)144 542.4 Q F0(backslash)30.44 E F2(\\")144 554.4 Q F0 +(literal ")27.67 E F2<5c08>144 566.4 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 583.2 Q -.25(va)-.2 G(ilable:).25 E F2(\\a)144 595.2 Q +F0(alert \(bell\))28.22 E F2(\\b)144 607.2 Q F0(backspace)27.66 E F2 +(\\d)144 619.2 Q F0(delete)27.66 E F2(\\f)144 631.2 Q F0(form feed)29.89 +E F2(\\n)144 643.2 Q F0(ne)27.66 E(wline)-.25 E F2(\\r)144 655.2 Q F0 +(carriage return)28.78 E F2(\\t)144 667.2 Q F0(horizontal tab)29.89 E F2 +(\\v)144 679.2 Q F0 -.15(ve)28.22 G(rtical tab).15 E F2(\\)144 691.2 Q +F1(nnn)A F0(the eight-bit character whose v)18.22 E(alue is the octal v) +-.25 E(alue)-.25 E F1(nnn)2.5 E F0(\(one to three digits\))2.5 E F2(\\x) +144 703.2 Q F1(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 F1(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 720 R 1.141(xt of a macro, single or double q\ +uotes must be used to indicate a macro de\214nition.)-.15 F +(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(32)199.835 E 0 Cg EP +%%Page: 33 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 .09(Unquoted te)108 84 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 96 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 10/Times-Bold@0 SF(Bash)108 112.8 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 124.8 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 136.8 Q/F2 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 153.6 Q(ariables)-.92 E F0 .043(Readline has v)108 165.6 +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/F3 10/Times-Italic@0 SF(inpu-)2.554 E +(tr)108 177.6 Q(c)-.37 E F0(\214le with a statement of the form)2.81 E +F1(set)144 194.4 Q F3(variable\255name value)2.5 E F0 .79 +(Except where noted, readline v)108 211.2 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 223.2 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 235.2 Q -.15(ve)-.25 G .468 +(\), 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 +247.2 S(lues are:).25 E F1(bell\255style \(audible\))108 264 Q F0 .01 +(Controls what happens when readline w)144 276 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 288 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 300 Q 2.5(sb)-.55 G(ell.) +-2.5 E F1(bind\255tty\255special\255chars \(On\))108 312 Q F0 .055 +(If set to)144 324 R F1(On)2.555 E F0 2.555(,r)C .056(eadline attempts \ +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 336 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 348 Q(`#')-.63 E('\))-.63 E +F0 .885(The string that is inserted when the readline)144 360 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 372 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 384 Q +(e\255case \(Off\))-.18 E F0(If set to)144 396 Q F1(On)2.5 E F0 2.5(,r)C +(eadline performs \214lename matching and completion in a case\255insen\ +siti)-2.5 E .3 -.15(ve f)-.25 H(ashion.).05 E F1 +(completion\255query\255items \(100\))108 408 Q F0 .529 +(This determines when the user is queried about vie)144 420 R .53 +(wing the number of possible completions gen-)-.25 F .561(erated by the) +144 432 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 444 R +.783(If the number of possible completions is greater than or equal to \ +the v)5.782 F .783(alue of this)-.25 F -.25(va)144 456 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 468 Q F1(con)108 480 +Q -.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .612(If set to)144 492 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 504 R .541(fect, using escape as the)-.25 F F3 .541(meta pr)3.041 F +(e-)-.37 E<8c78>144 516 Q F0(\).)A F1(disable\255completion \(Off\))108 +528 Q F0 .038(If set to)144 540 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 552 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 564 Q F0 .253 +(Controls whether readline be)144 576 R .253(gins with a set of k)-.15 F +.553 -.15(ey b)-.1 H .253(indings similar to).15 F F3(emacs)2.752 E F0 +(or)2.752 E F3(vi)2.752 E F0(.)A F1(editing\255mode)5.252 E F0 +(can be set to either)144 588 Q F1(emacs)2.5 E F0(or)2.5 E F1(vi)2.5 E +F0(.)A F1(enable\255k)108 600 Q(eypad \(Off\))-.1 E F0 .892(When set to) +144 612 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 .893(Some sys-)5.893 F +(tems need this to enable the arro)144 624 Q 2.5(wk)-.25 G -.15(ey)-2.6 +G(s.).15 E F1(expand\255tilde \(Off\))108 636 Q F0(If set to)144 648 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 660 Q(eser)-.18 E -.1(ve)-.1 G +(\255point \(Off\)).1 E F0 1.493(If set to)144 672 R F1(on)3.993 E F0 +3.993(,t)C 1.493(he history code attempts to place point at the same lo\ +cation on each history line)-3.993 F(retrie)144 684 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(horizontal\255scr)108 696 Q +(oll\255mode \(Off\))-.18 E F0 .448(When set to)144 708 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 720 R(w)-.25 E(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(33) +199.835 E 0 Cg EP +%%Page: 34 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(line.)144 84 Q/F1 10/Times-Bold@0 SF(input\255meta \(Off\))108 96 +Q F0 .227(If set to)144 108 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.727 F(-)-.2 E .957(acters it reads\), re)144 120 R -.05 +(ga)-.15 G .956(rdless of what the terminal claims it can support.).05 F +.956(The name)5.956 F F1(meta\255\215ag)3.456 E F0 .956(is a)3.456 F +(synon)144 132 Q(ym for this v)-.15 E(ariable.)-.25 E F1(isear)108 144 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 156 R -.15(xe)-.15 G(cut-).15 E .935 +(ing the character as a command.)144 168 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 180 Q F2(C\255J)2.5 E F0(will terminate an incremental search.) +2.5 E F1 -.1(ke)108 192 S(ymap \(emacs\)).1 E F0 2.02 +(Set the current readline k)144 204 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 216 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 228 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.044 E F0(also)4.044 E(af)144 240 Q(fects the def)-.25 +E(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F1(mark\255dir)108 252 Q +(ectories \(On\))-.18 E F0(If set to)144 264 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 276 Q F0(If set to)144 +288 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 300 Q(ed\255dir)-.1 E +(ectories \(Off\))-.18 E F0 .175(If set to)144 312 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 324 +Q(alue of)-.25 E F1(mark\255dir)2.5 E(ectories)-.18 E F0(\).)A F1 +(match\255hidden\255\214les \(On\))108 336 Q F0 .192(This v)144 348 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 1.024 +(\214les\) when performing \214lename completion, unless the leading `.) +144 360 R 3.523('i)-.7 G 3.523(ss)-3.523 G 1.023 +(upplied by the user in the)-3.523 F(\214lename to be completed.)144 372 +Q F1(output\255meta \(Off\))108 384 Q F0 .506(If set to)144 396 R F1(On) +3.006 E F0 3.006(,r)C .507(eadline will display characters with the eig\ +hth bit set directly rather than as a meta-)-3.006 F(pre\214x)144 408 Q +(ed escape sequence.)-.15 E F1(page\255completions \(On\))108 420 Q F0 +.809(If set to)144 432 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 444 Q F1 +(print\255completions\255horizontally \(Off\))108 456 Q F0 1.318 +(If set to)144 468 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 480 Q 2.5(,r)-.4 G(ather than do)-2.5 E(wn the screen.)-.25 +E F1(sho)108 492 Q(w\255all\255if\255ambiguous \(Off\))-.1 E F0 .478 +(This alters the def)144 504 R .478(ault beha)-.1 F .478 +(vior of the completion functions.)-.2 F .477(If set to)5.477 F F1(on) +2.977 E F0 2.977(,w)C .477(ords which ha)-3.077 F .777 -.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 516 R(bell.)144 528 Q F1 +(sho)108 540 Q(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.346 +(This alters the def)144 552 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 564 Q(w\255all\255if\255ambiguous)-.1 E F0 6.922(.I)C +4.422(fs)-6.922 G 1.922(et to)-4.422 F F1(on)4.422 E F0 4.422(,w)C 1.922 +(ords which ha)-4.522 F 2.223 -.15(ve m)-.2 H 1.923 +(ore than one possible completion).15 F 1.04(without an)144 576 R 3.54 +(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 588 Q F1 +(visible\255stats \(Off\))108 600 Q F0 .846(If set to)144 612 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 624 Q F1 +(Readline Conditional Constructs)87 640.8 Q F0 .05 +(Readline implements a f)108 652.8 R .05(acility similar in spirit to t\ +he conditional compilation features of the C preprocessor)-.1 F .096 +(which allo)108 664.8 R .096(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 .097 +(There are four parser)5.096 F(directi)108 676.8 Q -.15(ve)-.25 G 2.5 +(su).15 G(sed.)-2.5 E F1($if)108 693.6 Q F0(The)24.89 E F1($if)2.963 E +F0 .463(construct allo)2.963 F .462(ws bindings to be made based on the\ + editing mode, the terminal being used,)-.25 F .477 +(or the application using readline.)144 705.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 717.6 Q(GNU Bash-3.2)72 768 Q +(2006 Jan 26)149.845 E(34)199.835 E 0 Cg EP +%%Page: 35 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(mode)144 84 Q F0(The)12.67 E F1(mode=)3.712 +E F0 1.212(form of the)3.712 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 96 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 108 R/F2 10/Times-Italic@0 SF +(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 120 Q F1(term)144 136.8 Q F0(The)15.46 E F1 +(term=)3.196 E F0 .696 +(form may be used to include terminal-speci\214c k)3.196 F .996 -.15 +(ey b)-.1 H .697(indings, perhaps to bind).15 F .654(the k)180 148.8 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 160.8 Q F1(=)3.231 +E F0 .731(is tested ag)3.231 F .732(ainst the both full name of the ter\ +minal and the portion of the terminal)-.05 F(name before the \214rst)180 +172.8 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 189.6 Q F0(The)180 +201.6 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 +213.6 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 .501(particular v) +180 225.6 R 3.001(alue. This)-.25 F .501(could be used to bind k)3.001 F +.801 -.15(ey s)-.1 H .5(equences to functions useful for a spe-).15 F +.396(ci\214c program.)180 237.6 R -.15(Fo)5.396 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 .397(equence that quotes the).15 F(current or pre)180 249.6 +Q(vious w)-.25 E(ord in Bash:)-.1 E F1($if)180 273.6 Q F0(Bash)2.5 E 2.5 +(#Q)180 285.6 S(uote the current or pre)-2.5 E(vious w)-.25 E(ord)-.1 E +("\\C\255xq": "\\eb\\"\\ef\\"")180 297.6 Q F1($endif)180 309.6 Q($endif) +108 326.4 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 343.2 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 360 Q F0 .357 +(This directi)144 372 R .657 -.15(ve t)-.25 H(ak).15 E .357 +(es a single \214lename as an ar)-.1 F .356 +(gument and reads commands and bindings from that)-.18 F 2.5(\214le. F) +144 384 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 F1 +($include)144 408 Q F2(/etc/inputr)5.833 E(c)-.37 E F1(Sear)87 424.8 Q +(ching)-.18 E F0 .834(Readline pro)108 436.8 R .834 +(vides commands for searching through the command history \(see)-.15 F +/F3 9/Times-Bold@0 SF(HIST)3.335 E(OR)-.162 E(Y)-.315 E F0(belo)3.085 E +.835(w\) for lines)-.25 F(containing a speci\214ed string.)108 448.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 .698(Incremental searches be)108 465.6 R .698 +(gin before the user has \214nished typing the search string.)-.15 F +.697(As each character of the)5.697 F .112 +(search string is typed, readline displays the ne)108 477.6 R .112 +(xt entry from the history matching the string typed so f)-.15 F(ar)-.1 +E 5.113(.A)-.55 G(n)-5.113 E .542 +(incremental search requires only as man)108 489.6 R 3.042(yc)-.15 G +.542(haracters as needed to \214nd the desired history entry)-3.042 F +5.541(.T)-.65 G .541(he char)-5.541 F(-)-.2 E .224 +(acters present in the v)108 501.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 513.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 .096(mental search.)108 525.6 R .096(Control-G will abort an incremen\ +tal search and restore the original line.)5.096 F .097 +(When the search is)5.097 F(terminated, the history entry containing th\ +e search string becomes the current line.)108 537.6 Q 2.939 -.8(To \214) +108 554.4 T 1.339(nd other matching entries in the history list, type C\ +ontrol-S or Control-R as appropriate.).8 F 1.338(This will)6.338 F .674 +(search backw)108 566.4 R .674(ard or forw)-.1 F .674 +(ard in the history for the ne)-.1 F .675 +(xt entry matching the search string typed so f)-.15 F(ar)-.1 E 5.675 +(.A)-.55 G -.15(ny)-5.675 G .175(other k)108 578.4 R .475 -.15(ey s)-.1 +H .174 +(equence bound to a readline command will terminate the search and e).15 +F -.15(xe)-.15 G .174(cute that command.).15 F -.15(Fo)5.174 G(r).15 E +.54(instance, a)108 590.4 R F2(ne)3.04 E(wline)-.15 E F0 .541 +(will terminate the search and accept the line, thereby e)3.04 F -.15 +(xe)-.15 G .541(cuting the command from the).15 F(history list.)108 +602.4 Q .653(Readline remembers the last incremental search string.)108 +619.2 R .653(If tw)5.653 F 3.153(oC)-.1 G .653 +(ontrol-Rs are typed without an)-3.153 F 3.152(yi)-.15 G(nterv)-3.152 E +(en-)-.15 E(ing characters de\214ning a ne)108 631.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 648 R(The search \ +string may be typed by the user or be part of the contents of the curre\ +nt line.)108 660 Q F1(Readline Command Names)87 676.8 Q F0 1.392 +(The follo)108 688.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.891(ya)-.15 G(re)-3.891 E 2.621(bound. Command)108 700.8 R .121 +(names without an accompan)2.621 F .121(ying k)-.15 F .421 -.15(ey s)-.1 +H .122(equence are unbound by def).15 F 2.622(ault. In)-.1 F .122 +(the follo)2.622 F(wing)-.25 E(descriptions,)108 712.8 Q F2(point)3.411 +E F0 .911(refers to the current cursor position, and)3.411 F F2(mark) +3.411 E F0 .91(refers to a cursor position sa)3.411 F -.15(ve)-.2 G 3.41 +(db).15 G 3.41(yt)-3.41 G(he)-3.41 E F1(set\255mark)108 724.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(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(35) +199.835 E 0 Cg EP +%%Page: 36 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(Commands f)87 84 Q(or Mo)-.25 E(ving)-.1 E +(beginning\255of\255line \(C\255a\))108 96 Q F0(Mo)144 108 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 120 Q F0(Mo)144 132 Q .3 -.15(ve t) +-.15 H 2.5(ot).15 G(he end of the line.)-2.5 E F1 -.25(fo)108 144 S +(rward\255char \(C\255f\)).25 E F0(Mo)144 156 Q .3 -.15(ve f)-.15 H(orw) +.15 E(ard a character)-.1 E(.)-.55 E F1(backward\255char \(C\255b\))108 +168 Q F0(Mo)144 180 Q .3 -.15(ve b)-.15 H(ack a character).15 E(.)-.55 E +F1 -.25(fo)108 192 S(rward\255w).25 E(ord \(M\255f\))-.1 E F0(Mo)144 204 +Q .822 -.15(ve f)-.15 H(orw).15 E .522(ard to the end of the ne)-.1 F +.523(xt w)-.15 F 3.023(ord. W)-.1 F .523 +(ords are composed of alphanumeric characters \(let-)-.8 F +(ters and digits\).)144 216 Q F1(backward\255w)108 228 Q(ord \(M\255b\)) +-.1 E F0(Mo)144 240 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 252 Q F1(clear\255scr)108 264 Q +(een \(C\255l\))-.18 E F0 .993(Clear the screen lea)144 276 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 288 Q F1 -.18(re)108 300 +S(draw\255curr).18 E(ent\255line)-.18 E F0(Refresh the current line.)144 +312 Q F1(Commands f)87 328.8 Q(or Manipulating the History)-.25 E +(accept\255line \(Newline, Retur)108 340.8 Q(n\))-.15 E F0 .159 +(Accept the line re)144 352.8 R -.05(ga)-.15 G .159 +(rdless of where the cursor is.).05 F .158(If this line is non-empty) +5.158 F 2.658(,a)-.65 G .158(dd it to the history list)-2.658 F .699 +(according to the state of the)144 364.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 376.8 Q F1(pr)108 +388.8 Q -.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0 +(Fetch the pre)144 400.8 Q(vious command from the history list, mo)-.25 +E(ving back in the list.)-.15 E F1(next\255history \(C\255n\))108 412.8 +Q F0(Fetch the ne)144 424.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 436.8 Q F0(Mo)144 448.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 460.8 Q F0(Mo)144 472.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 484.8 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0 +1.471(Search backw)144 496.8 R 1.471 +(ard starting at the current line and mo)-.1 F 1.47 +(ving `up' through the history as necessary)-.15 F(.)-.65 E +(This is an incremental search.)144 508.8 Q F1 -.25(fo)108 520.8 S +(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.131 +(Search forw)144 532.8 R 1.131(ard starting at the current line and mo) +-.1 F 1.132(ving `do)-.15 F 1.132(wn' through the history as necessary) +-.25 F(.)-.65 E(This is an incremental search.)144 544.8 Q F1 +(non\255incr)108 556.8 Q(emental\255r)-.18 E -2.3 -.15(ev e)-.18 H +(rse\255sear).15 E(ch\255history \(M\255p\))-.18 E F0 .165(Search backw) +144 568.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 580.8 S +(tring supplied by the user)-2.5 E(.)-.55 E F1(non\255incr)108 592.8 Q +(emental\255f)-.18 E(orward\255sear)-.25 E(ch\255history \(M\255n\))-.18 +E F0 1.353(Search forw)144 604.8 R 1.354(ard through the history using \ +a non-incremental search for a string supplied by the)-.1 F(user)144 +616.8 Q(.)-.55 E F1(history\255sear)108 628.8 Q(ch\255f)-.18 E(orward) +-.25 E F0 .249(Search forw)144 640.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 652.8 Q(This is a non-incremental search.)5 E F1 +(history\255sear)108 664.8 Q(ch\255backward)-.18 E F0 .95(Search backw) +144 676.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 688.8 Q +(This is a non-incremental search.)5 E F1(yank\255nth\255ar)108 700.8 Q +2.5(g\()-.1 G<4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144 +712.8 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 .794(at point.)144 724.8 R -.4(Wi)5.794 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 .795 +(ords in the)-.1 F(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(36) +199.835 E 0 Cg EP +%%Page: 37 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(pre)144 84 Q .292(vious command be)-.25 F .292(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/F1 10 +/Times-Italic@0 SF(n)2.791 E F0 .291(th w)B .291(ord from the end of)-.1 +F .281(the pre)144 96 R .281(vious command.)-.25 F .281(Once the ar) +5.281 F(gument)-.18 E F1(n)2.781 E F0 .281(is computed, the ar)2.781 F +.281(gument is e)-.18 F .282(xtracted as if the "!)-.15 F F1(n)A F0(")A +(history e)144 108 Q(xpansion had been speci\214ed.)-.15 E/F2 10 +/Times-Bold@0 SF(yank\255last\255ar)108 120 Q 2.5(g\()-.1 G -1.667 +(M\255. ,)-2.5 F -1.667(M\255_ \))2.5 F F0 1.308(Insert the last ar)144 +132 R 1.308(gument to the pre)-.18 F 1.307(vious command \(the last w) +-.25 F 1.307(ord of the pre)-.1 F 1.307(vious history entry\).)-.25 F +-.4(Wi)144 144 S .735(th an ar).4 F .735(gument, beha)-.18 F 1.035 -.15 +(ve ex)-.2 H .735(actly lik).15 F(e)-.1 E F2(yank\255nth\255ar)3.235 E +(g)-.1 E F0 5.736(.S)C(uccessi)-5.736 E 1.036 -.15(ve c)-.25 H .736 +(alls to).15 F F2(yank\255last\255ar)3.236 E(g)-.1 E F0(mo)3.236 E -.15 +(ve)-.15 G .728(back through the history list, inserting the last ar)144 +156 R .728(gument of each line in turn.)-.18 F .728(The history e)5.728 +F(xpan-)-.15 E .14(sion f)144 168 R .14(acilities are used to e)-.1 F +.14(xtract the last ar)-.15 F .14(gument, as if the "!$" history e)-.18 +F .14(xpansion had been speci-)-.15 F(\214ed.)144 180 Q F2 +(shell\255expand\255line \(M\255C\255e\))108 192 Q F0 .623 +(Expand the line as the shell does.)144 204 R .622 +(This performs alias and history e)5.622 F .622 +(xpansion as well as all of the)-.15 F(shell w)144 216 Q(ord e)-.1 E 2.5 +(xpansions. See)-.15 F/F3 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 +(or a description of history e)-2.5 E(xpansion.)-.15 E F2 +(history\255expand\255line \(M\255^\))108 228 Q F0 .938 +(Perform history e)144 240 R .939(xpansion on the current line.)-.15 F +(See)5.939 E F3(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.439(wf)-.25 G .939(or a descrip-) +-3.439 F(tion of history e)144 252 Q(xpansion.)-.15 E F2(magic\255space) +108 264 Q F0 1.627(Perform history e)144 276 R 1.627 +(xpansion on the current line and insert a space.)-.15 F(See)6.626 E F3 +(HIST)4.126 E(OR)-.162 E 3.876(YE)-.315 G(XP)-3.876 E(ANSION)-.666 E F0 +(belo)144 288 Q 2.5(wf)-.25 G(or a description of history e)-2.5 E +(xpansion.)-.15 E F2(alias\255expand\255line)108 300 Q F0 .394 +(Perform alias e)144 312 R .394(xpansion on the current line.)-.15 F +(See)5.395 E F3(ALIASES)2.895 E F0(abo)2.645 E .695 -.15(ve f)-.15 H +.395(or a description of alias e).15 F(xpan-)-.15 E(sion.)144 324 Q F2 +(history\255and\255alias\255expand\255line)108 336 Q F0 +(Perform history and alias e)144 348 Q(xpansion on the current line.) +-.15 E F2(insert\255last\255ar)108 360 Q(gument \(M\255.)-.1 E 2.5(,M) +.833 G -1.667(\255_ \))-2.5 F F0 2.5(As)144 372 S(ynon)-2.5 E(ym for) +-.15 E F2(yank\255last\255ar)2.5 E(g)-.1 E F0(.)A F2 +(operate\255and\255get\255next \(C\255o\))108 384 Q F0 .948 +(Accept the current line for e)144 396 R -.15(xe)-.15 G .948 +(cution and fetch the ne).15 F .948(xt line relati)-.15 F 1.247 -.15 +(ve t)-.25 H 3.447(ot).15 G .947(he current line from the)-3.447 F +(history for editing.)144 408 Q(An)5 E 2.5(ya)-.15 G -.18(rg)-2.5 G +(ument is ignored.).18 E F2 +(edit\255and\255execute\255command \(C\255xC\255e\))108 420 Q F0(In)144 +432 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 F2(Bash)6.026 E F0 +(attempts to in)144 444 Q -.2(vo)-.4 G -.1(ke).2 G F3($FCEDIT)2.6 E/F4 9 +/Times-Roman@0 SF(,)A F3($EDIT)2.25 E(OR)-.162 E F4(,)A F0(and)2.25 E F1 +(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 F2(Commands f)87 460.8 Q(or Changing T)-.25 E +(ext)-.92 E(delete\255char \(C\255d\))108 472.8 Q F0 .358 +(Delete the character at point.)144 484.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 496.8 Q(as not bound to)-.1 E +F2(delete\255char)2.5 E F0 2.5(,t)C(hen return)-2.5 E F3(EOF)2.5 E F4(.) +A F2(backward\255delete\255char \(Rubout\))108 508.8 Q F0 .552 +(Delete the character behind the cursor)144 520.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 +.553(gument, sa)-.18 F .853 -.15(ve t)-.2 H .553(he deleted te).15 F +.553(xt on)-.15 F(the kill ring.)144 532.8 Q F2 -.25(fo)108 544.8 S +(rward\255backward\255delete\255char).25 E F0 .474 +(Delete the character under the cursor)144 556.8 R 2.974(,u)-.4 G .474 +(nless the cursor is at the end of the line, in which case the)-2.974 F +(character behind the cursor is deleted.)144 568.8 Q F2 +(quoted\255insert \(C\255q, C\255v\))108 580.8 Q F0 .778(Add the ne)144 +592.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 F2(C\255q)3.279 E F0 3.279 +(,f)C(or)-3.279 E -.15(ex)144 604.8 S(ample.).15 E F2 +(tab\255insert \(C\255v T)108 616.8 Q(AB\))-.9 E F0 +(Insert a tab character)144 628.8 Q(.)-.55 E F2 +(self\255insert \(a, b, A, 1, !, ...\))108 640.8 Q F0 +(Insert the character typed.)144 652.8 Q F2 +(transpose\255chars \(C\255t\))108 664.8 Q F0 .322 +(Drag the character before point forw)144 676.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 .321 +(ving point forw)-.15 F .321(ard as well.)-.1 F 1.182 +(If point is at the end of the line, then this transposes the tw)144 +688.8 R 3.683(oc)-.1 G 1.183(haracters before point.)-3.683 F(Ne)6.183 E +-.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G(ar)144 700.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(GNU Bash-3.2) +72 768 Q(2006 Jan 26)149.845 E(37)199.835 E 0 Cg EP +%%Page: 38 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(transpose\255w)108 84 Q(ords \(M\255t\))-.1 +E F0 .024(Drag the w)144 96 R .024(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.523(rt).15 G .023(hat w)-2.523 F .023(ord as well.)-.1 F .023 +(If point)5.023 F +(is at the end of the line, this transposes the last tw)144 108 Q 2.5 +(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 120 Q +(ord \(M\255u\))-.1 E F0 1.698(Uppercase the current \(or follo)144 132 +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.999 -.15(ve a)-.25 H -.18(rg).15 G 1.699 +(ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 144 S(rd, b).1 E +(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(do)108 156 Q +(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 168 Q 1.648 +(wercase the current \(or follo)-.25 F 1.648(wing\) w)-.25 F 4.148 +(ord. W)-.1 F 1.647(ith a ne)-.4 F -.05(ga)-.15 G(ti).05 E 1.947 -.15 +(ve a)-.25 H -.18(rg).15 G 1.647(ument, lo).18 F 1.647(wercase the pre) +-.25 F(vious)-.25 E -.1(wo)144 180 S(rd, b).1 E(ut do not mo)-.2 E .3 +-.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 192 Q +(ord \(M\255c\))-.1 E F0 1.974(Capitalize the current \(or follo)144 204 +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.975 +(ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 216 S(rd, b).1 +E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1 -.1(ove)108 228 +S(rwrite\255mode).1 E F0 -.8(To)144 240 S .438(ggle o).8 F -.15(ve)-.15 +G .438(rwrite mode.).15 F -.4(Wi)5.438 G .438(th an e).4 F .438 +(xplicit positi)-.15 F .737 -.15(ve n)-.25 H .437(umeric ar).15 F .437 +(gument, switches to o)-.18 F -.15(ve)-.15 G .437(rwrite mode.).15 F -.4 +(Wi)144 252 S .78(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 .781(This command af)5.781 F(fects)-.25 E(only)144 264 Q F1 +(emacs)4.395 E F0(mode;)4.395 E F1(vi)4.395 E F0 1.894(mode does o)4.395 +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.394 G +(adline\(\)).37 E F0 1.894(starts in insert)4.394 F 3.968(mode. In)144 +276 R -.15(ove)3.968 G 1.468(rwrite mode, characters bound to).15 F F1 +(self\255insert)3.969 E F0 1.469(replace the te)3.969 F 1.469 +(xt at point rather than)-.15 F .958(pushing the te)144 288 R .958 +(xt to the right.)-.15 F .957(Characters bound to)5.958 F F1 +(backward\255delete\255char)3.457 E F0 .957(replace the character)3.457 +F(before point with a space.)144 300 Q(By def)5 E +(ault, this command is unbound.)-.1 E F1(Killing and Y)87 316.8 Q +(anking)-.85 E(kill\255line \(C\255k\))108 328.8 Q F0(Kill the te)144 +340.8 Q(xt from point to the end of the line.)-.15 E F1 +(backward\255kill\255line \(C\255x Rubout\))108 352.8 Q F0(Kill backw) +144 364.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1 +(unix\255line\255discard \(C\255u\))108 376.8 Q F0(Kill backw)144 388.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 400.8 Q F0 +(Kill all characters on the current line, no matter where point is.)144 +412.8 Q F1(kill\255w)108 424.8 Q(ord \(M\255d\))-.1 E F0 .728 +(Kill from point to the end of the current w)144 436.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 448.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 460.8 Q +(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 472.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(unix\255w)108 484.8 Q +(ord\255rubout \(C\255w\))-.1 E F0 .365(Kill the w)144 496.8 R .365 +(ord behind point, using white space as a w)-.1 F .364(ord boundary)-.1 +F 5.364(.T)-.65 G .364(he killed te)-5.364 F .364(xt is sa)-.15 F -.15 +(ve)-.2 G 2.864(do).15 G 2.864(nt)-2.864 G(he)-2.864 E(kill-ring.)144 +508.8 Q F1(unix\255\214lename\255rubout)108 520.8 Q F0 .166(Kill the w) +144 532.8 R .166 +(ord behind point, using white space and the slash character as the w) +-.1 F .167(ord boundaries.)-.1 F(The)5.167 E(killed te)144 544.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 556.8 Q F0 +(Delete all spaces and tabs around point.)144 568.8 Q F1(kill\255r)108 +580.8 Q(egion)-.18 E F0(Kill the te)144 592.8 Q(xt in the current re) +-.15 E(gion.)-.15 E F1(copy\255r)108 604.8 Q(egion\255as\255kill)-.18 E +F0(Cop)144 616.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 628.8 Q(ord)-.1 E F0(Cop)144 640.8 Q 4.801 +(yt)-.1 G 2.301(he w)-4.801 F 2.301(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.3 +(ord boundaries are the same as)-.1 F F1(back-)4.8 E(ward\255w)144 652.8 +Q(ord)-.1 E F0(.)A F1(copy\255f)108 664.8 Q(orward\255w)-.25 E(ord)-.1 E +F0(Cop)144 676.8 Q 4.507(yt)-.1 G 2.007(he w)-4.507 F 2.007(ord follo) +-.1 F 2.007(wing point to the kill b)-.25 F(uf)-.2 E(fer)-.25 E 7.008 +(.T)-.55 G 2.008(he w)-7.008 F 2.008(ord boundaries are the same as)-.1 +F F1 -.25(fo)4.508 G -.37(r-).25 G(ward\255w)144 688.8 Q(ord)-.1 E F0(.) +A F1(yank \(C\255y\))108 700.8 Q F0 -1(Ya)144 712.8 S +(nk the top of the kill ring into the b)1 E(uf)-.2 E(fer at point.)-.25 +E(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(38)199.835 E 0 Cg EP +%%Page: 39 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(yank\255pop \(M\255y\))108 84 Q F0 +(Rotate the kill ring, and yank the ne)144 96 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 F1(Numeric Ar)87 112.8 Q +(guments)-.1 E(digit\255ar)108 124.8 Q +(gument \(M\2550, M\2551, ..., M\255\255\))-.1 E F0 .642 +(Add this digit to the ar)144 136.8 R .641 +(gument already accumulating, or start a ne)-.18 F 3.141(wa)-.25 G -.18 +(rg)-3.141 G 3.141(ument. M\255\255).18 F .641(starts a ne)3.141 F(g-) +-.15 E(ati)144 148.8 Q .3 -.15(ve a)-.25 H -.18(rg).15 G(ument.).18 E F1 +(uni)108 160.8 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0 .778 +(This is another w)144 172.8 R .779(ay to specify an ar)-.1 F 3.279 +(gument. If)-.18 F .779(this command is follo)3.279 F .779 +(wed by one or more digits,)-.25 F 1.376 +(optionally with a leading minus sign, those digits de\214ne the ar)144 +184.8 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144 +196.8 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 .899(wise ignored.)144 208.8 R .898 +(As a special case, if this command is immediately follo)5.899 F .898 +(wed by a character that is)-.25 F .243 +(neither a digit or minus sign, the ar)144 220.8 R .243 +(gument count for the ne)-.18 F .243(xt command is multiplied by four) +-.15 F 5.243(.T)-.55 G(he)-5.243 E(ar)144 232.8 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 244.8 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 261.6 Q(complete \(T)108 273.6 Q(AB\))-.9 E F0 1.137 +(Attempt to perform completion on the te)144 285.6 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 297.6 Q .533(xt as a v) +-.15 F .533(ariable \(if the te)-.25 F .533(xt be)-.15 F .533(gins with) +-.15 F F1($)3.033 E F0 .533(\), username \(if the te)B .532(xt be)-.15 F +.532(gins with)-.15 F F1(~)3.032 E F0 .532(\), hostname \(if the)B(te) +144 309.6 Q .701(xt be)-.15 F .701(gins with)-.15 F F1(@)3.201 E F0 .701 +(\), or command \(including aliases and functions\) in turn.)B .702 +(If none of these pro-)5.701 F +(duces a match, \214lename completion is attempted.)144 321.6 Q F1 +(possible\255completions \(M\255?\))108 333.6 Q F0 +(List the possible completions of the te)144 345.6 Q(xt before point.) +-.15 E F1(insert\255completions \(M\255*\))108 357.6 Q F0 .783 +(Insert all completions of the te)144 369.6 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.282 E(pletions)144 +381.6 Q F0(.)A F1(menu\255complete)108 393.6 Q F0 .928(Similar to)144 +405.6 R F1(complete)3.428 E F0 3.428(,b)C .929(ut replaces the w)-3.628 +F .929(ord to be completed with a single match from the list of)-.1 F +1.194(possible completions.)144 417.6 R 1.194(Repeated e)6.194 F -.15 +(xe)-.15 G 1.194(cution of).15 F F1(menu\255complete)3.694 E F0 1.193 +(steps through the list of possible)3.694 F .828 +(completions, inserting each match in turn.)144 429.6 R .828 +(At the end of the list of completions, the bell is rung)5.828 F .727 +(\(subject to the setting of)144 441.6 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.227 E F0 1.73 +(positions forw)144 453.6 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 465.6 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(delete\255char\255or\255list)108 477.6 Q F0 .234 +(Deletes the character under the cursor if not at the be)144 489.6 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 501.6 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 513.6 Q(ault.)-.1 E F1 +(complete\255\214lename \(M\255/\))108 525.6 Q F0 +(Attempt \214lename completion on the te)144 537.6 Q(xt before point.) +-.15 E F1(possible\255\214lename\255completions \(C\255x /\))108 549.6 Q +F0(List the possible completions of the te)144 561.6 Q +(xt before point, treating it as a \214lename.)-.15 E F1 +(complete\255user)108 573.6 Q(name \(M\255~\))-.15 E F0 +(Attempt completion on the te)144 585.6 Q +(xt before point, treating it as a username.)-.15 E F1(possible\255user) +108 597.6 Q(name\255completions \(C\255x ~\))-.15 E F0 +(List the possible completions of the te)144 609.6 Q +(xt before point, treating it as a username.)-.15 E F1(complete\255v)108 +621.6 Q(ariable \(M\255$\))-.1 E F0(Attempt completion on the te)144 +633.6 Q(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E +F1(possible\255v)108 645.6 Q(ariable\255completions \(C\255x $\))-.1 E +F0(List the possible completions of the te)144 657.6 Q +(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E F1 +(complete\255hostname \(M\255@\))108 669.6 Q F0 +(Attempt completion on the te)144 681.6 Q +(xt before point, treating it as a hostname.)-.15 E F1 +(possible\255hostname\255completions \(C\255x @\))108 693.6 Q F0 +(List the possible completions of the te)144 705.6 Q +(xt before point, treating it as a hostname.)-.15 E(GNU Bash-3.2)72 768 +Q(2006 Jan 26)149.845 E(39)199.835 E 0 Cg EP +%%Page: 40 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(complete\255command \(M\255!\))108 84 Q F0 +.581(Attempt completion on the te)144 96 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 +.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 +(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 +(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 +(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 +(complete\255into\255braces \(M\255{\))108 192 Q F0 .4(Perform \214lena\ +me completion and insert the list of possible completions enclosed with\ +in braces so)144 204 R(the list is a)144 216 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 232.8 S(yboard Macr).25 E(os)-.18 +E(start\255kbd\255macr)108 244.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)) +.833 E F0(Be)144 256.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 268.8 Q 2.5(o\()-.18 G +(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 280.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 292.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5 +E F0(Re-e)144 304.8 Q -.15(xe)-.15 G 1(cute the last k).15 F -.15(ey)-.1 +G .999(board macro de\214ned, by making the characters in the macro app\ +ear as if).15 F(typed at the k)144 316.8 Q -.15(ey)-.1 G(board.).15 E F1 +(Miscellaneous)87 333.6 Q -.18(re)108 345.6 S.18 E +(ead\255init\255\214le \(C\255x C\255r\))-.18 E F0 1.776 +(Read in the contents of the)144 357.6 R/F2 10/Times-Italic@0 SF(inputr) +4.276 E(c)-.37 E F0 1.777(\214le, and incorporate an)4.276 F 4.277(yb) +-.15 G 1.777(indings or v)-4.277 F 1.777(ariable assignments)-.25 F +(found there.)144 369.6 Q F1(abort \(C\255g\))108 381.6 Q F0 3.249 +(Abort the current editing command and ring the terminal')144 393.6 R +5.748(sb)-.55 G 3.248(ell \(subject to the setting of)-5.748 F F1 +(bell\255style)144 405.6 Q F0(\).)A F1(do\255upper)108 417.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.755(If the meta\214ed character)144 429.6 R F2(x) +4.255 E F0 1.755(is lo)4.255 F 1.756 +(wercase, run the command that is bound to the corresponding)-.25 F +(uppercase character)144 441.6 Q(.)-.55 E F1(pr)108 453.6 Q +(e\214x\255meta \(ESC\))-.18 E F0(Metafy the ne)144 465.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 477.6 Q F0 +(Incremental undo, separately remembered for each line.)144 489.6 Q F1 +-2.29 -.18(re v)108 501.6 T(ert\255line \(M\255r\)).08 E F0 1.095 +(Undo all changes made to this line.)144 513.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 525.6 Q F1 +(tilde\255expand \(M\255&\))108 537.6 Q F0(Perform tilde e)144 549.6 Q +(xpansion on the current w)-.15 E(ord.)-.1 E F1 +(set\255mark \(C\255@, M\255\))108 561.6 Q F0 +(Set the mark to the point.)144 573.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 585.6 Q F0(Sw) +144 597.6 Q .282(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.783(dp).15 G .283(osition, and the old)-2.783 F(cursor position is sa) +144 609.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 621.6 Q(ch \(C\255]\))-.18 E F0 3.036(Ac)144 +633.6 S .536(haracter is read and point is mo)-3.036 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.535(.A)-.55 G(ne)-2.5 E -.05 +(ga)-.15 G(ti).05 E .835 -.15(ve c)-.25 H(ount).15 E(searches for pre) +144 645.6 Q(vious occurrences.)-.25 E F1(character\255sear)108 657.6 Q +(ch\255backward \(M\255C\255]\))-.18 E F0 3.543(Ac)144 669.6 S 1.043 +(haracter is read and point is mo)-3.543 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.044(.A)-.55 G(ne)-2.5 E +-.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G +(count searches for subsequent occurrences.)144 681.6 Q F1 +(insert\255comment \(M\255#\))108 693.6 Q F0 -.4(Wi)144 705.6 S .481 +(thout a numeric ar).4 F .481(gument, the v)-.18 F .481 +(alue of the readline)-.25 F F1(comment\255begin)2.981 E F0 -.25(va) +2.981 G .48(riable is inserted at the).25 F(be)144 717.6 Q .097 +(ginning of the current line.)-.15 F .098(If a numeric ar)5.097 F .098 +(gument is supplied, this command acts as a toggle:)-.18 F(if)5.098 E +.322(the characters at the be)144 729.6 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.821(,t)C .321(he v)-2.821 F .321(alue is) +-.25 F(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(40)199.835 E 0 Cg EP +%%Page: 41 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 1.013(inserted, otherwise the characters in)144 84 R/F1 10 +/Times-Bold@0 SF(comment-begin)3.514 E F0 1.014(are deleted from the be) +3.514 F 1.014(ginning of the line.)-.15 F 1.469 +(In either case, the line is accepted as if a ne)144 96 R 1.468 +(wline had been typed.)-.25 F 1.468(The def)6.468 F 1.468(ault v)-.1 F +1.468(alue of)-.25 F F1(com-)3.968 E(ment\255begin)144 108 Q F0 .839 +(causes this command to mak)3.339 F 3.339(et)-.1 G .839 +(he current line a shell comment.)-3.339 F .84(If a numeric ar)5.84 F +(gu-)-.18 E(ment causes the comment character to be remo)144 120 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 132 Q +(ord \(M\255g\))-.1 E F0 .792(The w)144 144 R .791 +(ord before point is treated as a pattern for pathname e)-.1 F .791 +(xpansion, with an asterisk implicitly)-.15 F 2.5(appended. This)144 156 +R(pattern is used to generate a list of matching \214le names for possi\ +ble completions.)2.5 E F1(glob\255expand\255w)108 168 Q +(ord \(C\255x *\))-.1 E F0 .371(The w)144 180 R .372 +(ord before point is treated as a pattern for pathname e)-.1 F .372 +(xpansion, and the list of matching \214le)-.15 F .516 +(names is inserted, replacing the w)144 192 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 204 Q(xpansion.)-.15 E F1(glob\255list\255expansions \(C\255x g\)) +108 216 Q F0 .923(The list of e)144 228 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 240 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 252 S(pansion.).15 E F1(dump\255functions)108 264 Q F0 .626 +(Print all of the functions and their k)144 276 R .926 -.15(ey b)-.1 H +.627(indings to the readline output stream.).15 F .627(If a numeric ar) +5.627 F(gu-)-.18 E +(ment is supplied, the output is formatted in such a w)144 288 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 300 Q(ariables)-.1 E F0 +1.8(Print all of the settable readline v)144 312 R 1.799 +(ariables and their v)-.25 F 1.799(alues to the readline output stream.) +-.25 F 1.799(If a)6.799 F .304(numeric ar)144 324 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 336 Q(c)-.37 E F0 +(\214le.)2.5 E F1(dump\255macr)108 348 Q(os)-.18 E F0 .593 +(Print all of the readline k)144 360 R .893 -.15(ey s)-.1 H .592 +(equences bound to macros and the strings the).15 F 3.092(yo)-.15 G +3.092(utput. If)-3.092 F 3.092(an)3.092 G(umeric)-3.092 E(ar)144 372 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.028 E(c)-.37 E F0 +(\214le.)144 384 Q F1(display\255shell\255v)108 396 Q +(ersion \(C\255x C\255v\))-.1 E F0(Display v)144 408 Q +(ersion information about the current instance of)-.15 E F1(bash)2.5 E +F0(.)A F1(Pr)87 424.8 Q(ogrammable Completion)-.18 E F0 .147(When w)108 +436.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 448.8 Q F0 3.828(\)h)C 1.329 +(as been de\214ned using the)-3.828 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.329(w\), the) +-.25 F(programmable completion f)108 460.8 Q(acilities are in)-.1 E -.2 +(vo)-.4 G -.1(ke).2 G(d.).1 E .334 +(First, the command name is identi\214ed.)108 477.6 R .333 +(If a compspec has been de\214ned for that command, the compspec is) +5.334 F .587 +(used to generate the list of possible completions for the w)108 489.6 R +3.087(ord. If)-.1 F .587(the command w)3.087 F .587 +(ord is a full pathname, a)-.1 F 1.181 +(compspec for the full pathname is searched for \214rst.)108 501.6 R +1.18(If no compspec is found for the full pathname, an)6.181 F +(attempt is made to \214nd a compspec for the portion follo)108 513.6 Q +(wing the \214nal slash.)-.25 E .817(Once a compspec has been found, it\ + is used to generate the list of matching w)108 530.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 +542.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 559.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 571.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 +(shell v)108 583.2 Q(ariable)-.25 E F3(FIGNORE)2.5 E F0 +(is used to \214lter the matches.)2.25 E(An)108 600 Q 2.585(yc)-.15 G +.085(ompletions speci\214ed by a \214lename e)-2.585 F .085 +(xpansion pattern to the)-.15 F F12.585 E F0 .085 +(option are generated ne)2.585 F 2.585(xt. The)-.15 F -.1(wo)2.585 G +(rds).1 E .843(generated by the pattern need not match the w)108 612 R +.844(ord being completed.)-.1 F(The)5.844 E F3(GLOBIGNORE)3.344 E F0 +.844(shell v)3.094 F .844(ariable is)-.25 F +(not used to \214lter the matches, b)108 624 Q(ut the)-.2 E F3(FIGNORE) +2.5 E F0 -.25(va)2.25 G(riable is used.).25 E(Ne)108 640.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 .412(characters in the)108 +652.8 R F3(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 664.8 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 +676.8 R 1.396(xpansion, as described abo)-.15 F 1.696 -.15(ve u)-.15 H +(nder).15 E F3(EXP)3.896 E(ANSION)-.666 E/F4 9/Times-Roman@0 SF(.)A F0 +1.396(The results are split using the rules described)5.896 F(abo)108 +688.8 Q .51 -.15(ve u)-.15 H(nder).15 E F1 -.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 700.8 Q +(ords become the possible completions.)-.1 E 1.237 +(After these matches ha)108 717.6 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 F13.738 E +F0(and)3.738 E F13.738 E F0 2.159(options is in)108 729.6 R -.2 +(vo)-.4 G -.1(ke).2 G 4.659(d. When).1 F 2.159 +(the command or function is in)4.659 F -.2(vo)-.4 G -.1(ke).2 G 2.158 +(d, the).1 F F3(COMP_LINE)4.658 E F0(and)4.408 E F3(COMP_POINT)4.658 E +F0(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(41)199.835 E 0 Cg EP +%%Page: 42 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 -.25(va)108 84 S 2.345(riables are assigned v).25 F 2.345 +(alues as described abo)-.25 F 2.645 -.15(ve u)-.15 H(nder).15 E/F1 10 +/Times-Bold@0 SF 2.345(Shell V)4.845 F(ariables)-.92 E F0 7.345(.I)C +4.846(fas)-7.345 G 2.346(hell function is being)-4.846 F(in)108 96 Q -.2 +(vo)-.4 G -.1(ke).2 G .657(d, the).1 F/F2 9/Times-Bold@0 SF(COMP_W)3.157 +E(ORDS)-.09 E F0(and)2.907 E F2(COMP_CW)3.157 E(ORD)-.09 E F0 -.25(va) +2.906 G .656(riables are also set.).25 F .656 +(When the function or command)5.656 F .527(is in)108 108 R -.2(vo)-.4 G +-.1(ke).2 G .527(d, the \214rst ar).1 F .527 +(gument is the name of the command whose ar)-.18 F .527 +(guments are being completed, the sec-)-.18 F .847(ond ar)108 120 R .847 +(gument is the w)-.18 F .847(ord being completed, and the third ar)-.1 F +.846(gument is the w)-.18 F .846(ord preceding the w)-.1 F .846 +(ord being)-.1 F .499(completed on the current command line.)108 132 R +.499(No \214ltering of the generated completions ag)5.499 F .5 +(ainst the w)-.05 F .5(ord being)-.1 F(completed is performed; the func\ +tion or command has complete freedom in generating the matches.)108 144 +Q(An)108 160.8 Q 2.938(yf)-.15 G .437(unction speci\214ed with)-2.938 F +F12.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 .437 +(acilities, including)-.1 F(the)108 172.8 Q F1(compgen)2.956 E F0 -.2 +(bu)2.956 G .456(iltin described belo).2 F 1.756 -.65(w, t)-.25 H 2.956 +(og).65 G .456(enerate the matches.)-2.956 F .457 +(It must put the possible completions in the)5.456 F F2(COMPREPL)108 +184.8 Q(Y)-.828 E F0(array v)2.25 E(ariable.)-.25 E(Ne)108 201.6 Q .081 +(xt, an)-.15 F 2.581(yc)-.15 G .081(ommand speci\214ed with the)-2.581 F +F12.581 E F0 .081(option is in)2.581 F -.2(vo)-.4 G -.1(ke).2 G +2.581(di).1 G 2.58(na)-2.581 G 2.58(ne)-2.58 G -.4(nv)-2.58 G .08 +(ironment equi).4 F -.25(va)-.25 G .08(lent to command sub-).25 F 2.858 +(stitution. It)108 213.6 R .359(should print a list of completions, one\ + per line, to the standard output.)2.858 F .359(Backslash may be used) +5.359 F(to escape a ne)108 225.6 Q(wline, if necessary)-.25 E(.)-.65 E +.377(After all of the possible completions are generated, an)108 242.4 R +2.877<798c>-.15 G .377(lter speci\214ed with the)-2.877 F F12.876 +E F0 .376(option is applied to the)2.876 F 3.181(list. The)108 254.4 R +.681(\214lter is a pattern as used for pathname e)3.181 F .681 +(xpansion; a)-.15 F F1(&)3.181 E F0 .682 +(in the pattern is replaced with the te)3.182 F .682(xt of)-.15 F .523 +(the w)108 266.4 R .523(ord being completed.)-.1 F 3.023(Al)5.523 G +(iteral)-3.023 E F1(&)3.023 E F0 .522 +(may be escaped with a backslash; the backslash is remo)3.022 F -.15(ve) +-.15 G 3.022(db).15 G(efore)-3.022 E .849(attempting a match.)108 278.4 +R(An)5.849 E 3.349(yc)-.15 G .849 +(ompletion that matches the pattern will be remo)-3.349 F -.15(ve)-.15 G +3.35(df).15 G .85(rom the list.)-3.35 F 3.35(Al)5.85 G(eading)-3.35 E F1 +(!)3.35 E F0(ne)108 290.4 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 307.2 Q 3.087(,a)-.65 G .887 -.15(ny p)-3.087 H +.587(re\214x and suf).15 F .587(\214x speci\214ed with the)-.25 F F1 +3.087 E F0(and)3.087 E F13.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 319.2 Q .246(If the pre)108 336 R .247 +(viously-applied actions do not generate an)-.25 F 2.747(ym)-.15 G .247 +(atches, and the)-2.747 F F1 .247(\255o dir)2.747 F(names)-.15 E F0 .247 +(option w)2.747 F .247(as supplied to)-.1 F F1(complete)108 348 Q F0 +(when the compspec w)2.5 E +(as de\214ned, directory name completion is attempted.)-.1 E .462 +(If the)108 364.8 R F1 .462(\255o plusdirs)2.962 F F0 .462(option w) +2.962 F .462(as supplied to)-.1 F F1(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 376.8 Q 2.5(ym)-.15 G +(atches are added to the results of the other actions.)-2.5 E .559 +(By def)108 393.6 R .559(ault, if a compspec is found, whate)-.1 F -.15 +(ve)-.25 G 3.059(ri).15 G 3.059(tg)-3.059 G .56 +(enerates is returned to the completion code as the full set)-3.059 F +.632(of possible completions.)108 405.6 R .632(The def)5.632 F(ault)-.1 +E F1(bash)3.132 E F0 .631 +(completions are not attempted, and the readline def)3.131 F .631 +(ault of \214le-)-.1 F .558(name completion is disabled.)108 417.6 R +.558(If the)5.558 F F1 .559(\255o bashdefault)3.059 F F0 .559(option w) +3.059 F .559(as supplied to)-.1 F F1(complete)3.059 E F0 .559 +(when the compspec)3.059 F -.1(wa)108 429.6 S 3.172(sd).1 G .672 +(e\214ned, the)-3.172 F F1(bash)3.172 E F0(def)3.172 E .671 +(ault completions are attempted if the compspec generates no matches.) +-.1 F .671(If the)5.671 F F13.171 E(default)108 441.6 Q F0 1.207 +(option w)3.706 F 1.207(as supplied to)-.1 F F1(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.207(ault completion)-.1 F +(will be performed if the compspec \(and, if attempted, the def)108 +453.6 Q(ault)-.1 E F1(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 470.4 R .632(tions force\ + readline to append a slash to completed names which are symbolic links\ + to directories, subject)108 482.4 R 2.762(to the v)108 494.4 R 2.762 +(alue of the)-.25 F F1(mark\255dir)5.262 E(ectories)-.18 E F0 2.761 +(readline v)5.262 F 2.761(ariable, re)-.25 F -.05(ga)-.15 G 2.761 +(rdless of the setting of the).05 F F1(mark-sym-)5.261 E(link)108 506.4 +Q(ed\255dir)-.1 E(ectories)-.18 E F0(readline v)2.5 E(ariable.)-.25 E/F3 +10.95/Times-Bold@0 SF(HIST)72 523.2 Q(OR)-.197 E(Y)-.383 E F0 .371 +(When the)108 535.2 R F1 .371(\255o history)2.871 F F0 .371 +(option to the)2.871 F F1(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 .032 +(the list of commands pre)108 547.2 R .031(viously typed.)-.25 F .031 +(The v)5.031 F .031(alue of the)-.25 F F1(HISTSIZE)2.531 E F0 -.25(va) +2.531 G .031(riable is used as the number of com-).25 F .429 +(mands to sa)108 559.2 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 F2 +(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 +571.2 R .287(ariable e)-.25 F .287(xpansion \(see)-.15 F F2(EXP)2.787 E +(ANSION)-.666 E F0(abo)2.537 E -.15(ve)-.15 G(\)).15 E -.2(bu)108 583.2 +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 F2(HISTIGNORE)4.065 E F0 +(and)3.816 E F2(HISTCONTR)108 595.2 Q(OL)-.27 E/F5 9/Times-Roman@0 SF(.) +A F0 .082 +(On startup, the history is initialized from the \214le named by the v) +108 612 R(ariable)-.25 E F2(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 +624 R .315(alue of)-.25 F F2(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 .953 +(lines speci\214ed by the v)108 636 R .953(alue of)-.25 F F2 +(HISTFILESIZE)3.453 E F5(.)A F0 .953(When an interacti)5.453 F 1.253 +-.15(ve s)-.25 H .953(hell e).15 F .953(xits, the last)-.15 F F2 +($HISTSIZE)3.452 E F0(lines)3.202 E .649 +(are copied from the history list to)108 648 R F2($HISTFILE)3.15 E F5(.) +A F0 .65(If the)5.15 F F1(histappend)3.15 E F0 .65 +(shell option is enabled \(see the descrip-)3.15 F .141(tion of)108 660 +R F1(shopt)2.641 E F0(under)2.641 E F2 .141(SHELL B)2.641 F(UIL)-.09 E +.141(TIN COMMANDS)-.828 F F0(belo)2.391 E .141 +(w\), the lines are appended to the history \214le, other)-.25 F(-)-.2 E +.572(wise the history \214le is o)108 672 R -.15(ve)-.15 G 3.073 +(rwritten. If).15 F F2(HISTFILE)3.073 E F0 .573 +(is unset, or if the history \214le is unwritable, the history is)2.823 +F 1.142(not sa)108 684 R -.15(ve)-.2 G 3.642(d. After).15 F(sa)3.642 E +1.142(ving the history)-.2 F 3.642(,t)-.65 G 1.141 +(he history \214le is truncated to contain no more than)-3.642 F F2 +(HISTFILESIZE)3.641 E F0 2.5(lines. If)108 696 R F2(HISTFILESIZE)2.5 E +F0(is not set, no truncation is performed.)2.25 E 1.293(The b)108 712.8 +R 1.293(uiltin command)-.2 F F1(fc)3.793 E F0(\(see)3.793 E F2 1.293 +(SHELL B)3.793 F(UIL)-.09 E 1.293(TIN COMMANDS)-.828 F F0(belo)3.543 E +1.294(w\) may be used to list or edit and re-)-.25 F -.15(exe)108 724.8 +S .674(cute a portion of the history list.).15 F(The)5.673 E F1(history) +3.173 E F0 -.2(bu)3.173 G .673 +(iltin may be used to display or modify the history list).2 F +(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(42)199.835 E 0 Cg EP +%%Page: 43 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 .279(and manipulate the history \214le.)108 84 R .279 +(When using command-line editing, search commands are a)5.279 F -.25(va) +-.2 G .28(ilable in each).25 F(editing mode that pro)108 96 Q +(vide access to the history list.)-.15 E 1.486(The shell allo)108 112.8 +R 1.486(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.485 E/F1 9/Times-Bold@0 +SF(HISTCONTR)3.985 E(OL)-.27 E F0(and)3.735 E F1(HISTIGNORE)108 124.8 Q +F0 -.25(va)2.707 G .457(riables may be set to cause the shell to sa).25 +F .758 -.15(ve o)-.2 H .458(nly a subset of the commands entered.).15 F +(The)5.458 E/F2 10/Times-Bold@0 SF(cmdhist)108 136.8 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 148.8 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 F2(lithist)3.577 E F0 +.374(shell option causes the shell to sa)108 160.8 R .674 -.15(ve t)-.2 +H .374(he command with embedded ne).15 F .373 +(wlines instead of semicolons.)-.25 F .373(See the)5.373 F .318 +(description of the)108 172.8 R F2(shopt)2.818 E F0 -.2(bu)2.818 G .318 +(iltin belo).2 F 2.818(wu)-.25 G(nder)-2.818 E F1 .318(SHELL B)2.818 F +(UIL)-.09 E .318(TIN COMMANDS)-.828 F F0 .319 +(for information on setting and)2.568 F(unsetting shell options.)108 +184.8 Q/F3 10.95/Times-Bold@0 SF(HIST)72 201.6 Q(OR)-.197 E 2.738(YE) +-.383 G(XP)-2.738 E(ANSION)-.81 E F0 .611 +(The shell supports a history e)108 213.6 R .611 +(xpansion feature that is similar to the history e)-.15 F .61 +(xpansion in)-.15 F F2(csh.)3.11 E F0 .61(This section)5.61 F .87 +(describes what syntax features are a)108 225.6 R -.25(va)-.2 G 3.371 +(ilable. This).25 F .871(feature is enabled by def)3.371 F .871 +(ault for interacti)-.1 F 1.171 -.15(ve s)-.25 H .871(hells, and).15 F +2.014(can be disabled using the)108 237.6 R F2(+H)4.514 E F0 2.014 +(option to the)4.514 F F2(set)4.514 E F0 -.2(bu)4.514 G 2.014 +(iltin command \(see).2 F F1 2.013(SHELL B)4.513 F(UIL)-.09 E 2.013 +(TIN COMMANDS)-.828 F F0(belo)108 249.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.305(History e)108 266.4 R 1.305 +(xpansions introduce w)-.15 F 1.306(ords from the history list into the\ + input stream, making it easy to repeat)-.1 F .21 +(commands, insert the ar)108 278.4 R .21(guments to a pre)-.18 F .209 +(vious command into the current input line, or \214x errors in pre)-.25 +F(vious)-.25 E(commands quickly)108 290.4 Q(.)-.65 E 1.163(History e)108 +307.2 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 319.2 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.367(substitution. The)108 331.2 R 1.868(second is to select por\ +tions of that line for inclusion into the current one.)4.367 F 1.868 +(The line)6.868 F .663(selected from the history is the)108 343.2 R/F4 +10/Times-Italic@0 SF -.15(ev)3.163 G(ent).15 E F0 3.163(,a)C .663 +(nd the portions of that line that are acted upon are)-3.163 F F4(wor) +3.162 E(ds)-.37 E F0 5.662(.V)C(arious)-6.772 E F4(modi\214er)108 355.2 +Q(s)-.1 E F0 .226(are a)2.726 F -.25(va)-.2 G .226 +(ilable to manipulate the selected w).25 F 2.726(ords. The)-.1 F .227 +(line is brok)2.726 F .227(en into w)-.1 F .227(ords in the same f)-.1 F +(ashion)-.1 E .352(as when reading input, so that se)108 367.2 R -.15 +(ve)-.25 G(ral).15 E F4(metac)2.852 E(har)-.15 E(acter)-.15 E F0 .351 +(-separated w)B .351(ords surrounded by quotes are considered)-.1 F .624 +(one w)108 379.2 R 3.124(ord. History)-.1 F -.15(ex)3.124 G .624 +(pansions are introduced by the appearance of the history e).15 F .625 +(xpansion character)-.15 F 3.125(,w)-.4 G(hich)-3.125 E(is)108 391.2 Q +F2(!)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 408 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 420 T 3.162 +(ni).25 G 3.162(fi)-3.162 G 3.162(ti)-3.162 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.163 E F0 +(will also inhibit e)108 432 Q(xpansion.)-.15 E(Se)108 448.8 Q -.15(ve) +-.25 G .11(ral shell options settable with the).15 F F2(shopt)2.61 E F0 +-.2(bu)2.61 G .109(iltin may be used to tailor the beha).2 F .109 +(vior of history e)-.2 F(xpansion.)-.15 E 1.258(If the)108 460.8 R F2 +(histv)3.758 E(erify)-.1 E F0 1.259 +(shell option is enabled \(see the description of the)3.758 F F2(shopt) +3.759 E F0 -.2(bu)3.759 G 1.259(iltin\), and).2 F F2 -.18(re)3.759 G +(adline).18 E F0 1.259(is being)3.759 F 1.498(used, history substitutio\ +ns are not immediately passed to the shell parser)108 472.8 R 6.497(.I) +-.55 G 1.497(nstead, the e)-6.497 F 1.497(xpanded line is)-.15 F 2.228 +(reloaded into the)108 484.8 R F2 -.18(re)4.728 G(adline).18 E F0 2.228 +(editing b)4.728 F(uf)-.2 E 2.228(fer for further modi\214cation.)-.25 F +(If)7.228 E F2 -.18(re)4.728 G(adline).18 E F0 2.228 +(is being used, and the)4.728 F F2(histr)108 496.8 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 508.8 S -.25(ff).2 G +1.16(er for correction.).25 F(The)6.16 E F23.66 E F0 1.16 +(option to the)3.66 F F2(history)3.66 E F0 -.2(bu)3.661 G 1.161 +(iltin command may be used to see what a history).2 F -.15(ex)108 520.8 +S .056(pansion will do before using it.).15 F(The)5.056 E F22.556 +E F0 .056(option to the)2.556 F F2(history)2.555 E F0 -.2(bu)2.555 G +.055(iltin may be used to add commands to the).2 F +(end of the history list without actually e)108 532.8 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 549.6 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(description of)108 561.6 +Q F2(histchars)2.5 E F0(abo)2.5 E .3 -.15(ve u)-.15 H(nder).15 E F2 +(Shell V)2.5 E(ariables)-.92 E F0(\).)A F2(Ev)87 578.4 Q +(ent Designators)-.1 E F0(An e)108 590.4 Q -.15(ve)-.25 G(nt designator\ + is a reference to a command line entry in the history list.).15 E F2(!) +108 607.2 Q F0 1.608(Start a history substitution, e)32.67 F 1.608 +(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.607(line, carriage return, = or \().25 F +(\(when the)144 619.2 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 631.2 Q F4(n)A F0(Refer to command line)27.67 E +F4(n)2.5 E F0(.).24 E F2<21ad>108 643.2 Q F4(n)A F0 +(Refer to the current command line minus)21.97 E F4(n)2.5 E F0(.).24 E +F2(!!)108 655.2 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 667.2 Q F4(string) +A F0(Refer to the most recent command starting with)9.33 E F4(string)2.5 +E F0(.).22 E F2(!?)108 679.2 Q F4(string)A F2([?])A F0 1.022 +(Refer to the most recent command containing)144 691.2 R F4(string)3.522 +E F0 6.022(.T).22 G 1.022(he trailing)-6.022 F F2(?)3.522 E F0 1.022 +(may be omitted if)3.522 F F4(string)3.862 E F0(is)3.742 E(follo)144 +703.2 Q(wed immediately by a ne)-.25 E(wline.)-.25 E(GNU Bash-3.2)72 768 +Q(2006 Jan 26)149.845 E(43)199.835 E 0 Cg EP +%%Page: 44 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/F1 12/Times-Bold@0 SF(^)108 89 Q/F2 10/Times-Italic@0 SF(string1) +-5 I F1(^)5 I F2(string2)-5 I F1(^)5 I F0 2.63(Quick substitution.)144 +96 R 2.629(Repeat the last command, replacing)7.629 F F2(string1)5.469 E +F0(with)5.129 E F2(string2)5.129 E F0 7.629(.E).02 G(qui)-7.629 E -.25 +(va)-.25 G 2.629(lent to).25 F -.74(``)144 108 S(!!:s/).74 E F2(string1) +A F0(/)A F2(string2)A F0(/')A 2.5('\()-.74 G(see)-2.5 E/F3 10 +/Times-Bold@0 SF(Modi\214ers)2.5 E F0(belo)2.5 E(w\).)-.25 E F3(!#)108 +120 Q F0(The entire command line typed so f)27.67 E(ar)-.1 E(.)-.55 E F3 +-.75(Wo)87 136.8 S(rd Designators).75 E F0 -.8(Wo)108 148.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 F3(:)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 160.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 F3(^)3.029 E F0(,)A F3 +($)3.029 E F0(,)A F3(*)3.029 E F0(,)A F33.029 E F0 3.029(,o)C(r) +-3.029 E F3(%)3.029 E F0 5.529(.W)C(ords)-6.329 E 1.3 +(are numbered from the be)108 172.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 184.8 Q +F3 2.5(0\()108 201.6 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 213.6 Q +2.5(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E +F2(n)108.36 225.6 Q F0(The)30.64 E F2(n)2.5 E F0(th w)A(ord.)-.1 E F3(^) +108 237.6 Q F0(The \214rst ar)32.67 E 2.5(gument. That)-.18 F(is, w)2.5 +E(ord 1.)-.1 E F3($)108 249.6 Q F0(The last ar)31 E(gument.)-.18 E F3(%) +108 261.6 Q F0(The w)26 E(ord matched by the most recent `?)-.1 E F2 +(string)A F0(?' search.)A F2(x)108.77 273.6 Q F3A F2(y)A F0 2.5(Ar) +20.65 G(ange of w)-2.5 E(ords; `\255)-.1 E F2(y)A F0 2.5('a)C(bbre)-2.5 +E(viates `0\255)-.25 E F2(y)A F0('.)A F3(*)108 285.6 Q F0 .316 +(All of the w)31 F .316(ords b)-.1 F .316(ut the zeroth.)-.2 F .315 +(This is a synon)5.315 F .315(ym for `)-.15 F F2(1\255$)A F0 2.815 +('. It)B .315(is not an error to use)2.815 F F3(*)2.815 E F0 .315 +(if there is)2.815 F(just one w)144 297.6 Q(ord in the e)-.1 E -.15(ve) +-.25 G(nt; the empty string is returned in that case.).15 E F3(x*)108 +309.6 Q F0(Abbre)26 E(viates)-.25 E F2(x\255$)2.5 E F0(.)A F3<78ad>108 +321.6 Q F0(Abbre)25.3 E(viates)-.25 E F2(x\255$)2.5 E F0(lik)2.5 E(e)-.1 +E F3(x*)2.5 E F0 2.5(,b)C(ut omits the last w)-2.7 E(ord.)-.1 E(If a w) +108 338.4 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 F3(Modi\214ers)87 355.2 Q F0 .183 +(After the optional w)108 367.2 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 379.2 Q F3(h) +108 396 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 F3 +(t)108 408 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 F3(r) +108 420 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 F3(e)108 432 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 F3(p)108 444 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 F3(q)108 456 Q F0(Quote the substituted w) +30.44 E(ords, escaping further substitutions.)-.1 E F3(x)108 468 Q F0 +(Quote the substituted w)31 E(ords as with)-.1 E F3(q)2.5 E F0 2.5(,b)C +(ut break into w)-2.7 E(ords at)-.1 E F3(blanks)2.5 E F0(and ne)2.5 E +(wlines.)-.25 E F3(s/)108 480 Q F2(old)A F3(/)A F2(ne)A(w)-.15 E F3(/)A +F0(Substitute)144 492 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(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 504 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 516 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 528 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 540 Q F2(string)2.84 +E F0(in a)2.72 E F3(!?)2.5 E F2(string)A F3([?])A F0(search.)5 E F3(&) +108 552 Q F0(Repeat the pre)27.67 E(vious substitution.)-.25 E F3(g)108 +564 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 F3(:s)A F0 2.897('\()C +(e.g.,)-2.897 E(`)144 576 Q F3(:gs/)A F2(old)A F3(/)A F2(ne)A(w)-.15 E +F3(/)A F0 1.218('\) or `)B F3(:&)A F0 3.718('. If)B 1.218(used with `) +3.718 F F3(: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 588 R +-.15(ve)-.25 G .089(nt line.).15 F(An)5.089 E F3(a)2.589 E F0 .089 +(may be used as a synon)2.589 F .089(ym for)-.15 F F3(g)144 600 Q F0(.)A +F3(G)108 612 Q F0(Apply the follo)28.22 E(wing `)-.25 E F3(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/F4 10.95/Times-Bold@0 SF(SHELL B)72 628.8 Q(UIL)-.11 E +(TIN COMMANDS)-1.007 E F0 .062(Unless otherwise noted, each b)108 640.8 +R .062(uiltin command documented in this section as accepting options p\ +receded by)-.2 F F3108 652.8 Q F0(accepts)3.8 E F33.8 E F0 1.3 +(to signify the end of the options.)3.8 F -.15(Fo)6.3 G 3.8(re).15 G 1.3 +(xample, the)-3.95 F F3(:)3.8 E F0(,)A F3(true)3.8 E F0(,)A F3(false)3.8 +E F0 3.8(,a)C(nd)-3.8 E F3(test)3.8 E F0 -.2(bu)3.8 G 1.3(iltins do not) +.2 F(accept options.)108 664.8 Q F3(:)108 682.8 Q F0([)2.5 E F2(ar)A +(guments)-.37 E F0(])A .451(No ef)144 694.8 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 706.8 R +(zero e)2.5 E(xit code is returned.)-.15 E(GNU Bash-3.2)72 768 Q +(2006 Jan 26)149.845 E(44)199.835 E 0 Cg EP +%%Page: 45 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(.)110.5 84 Q/F2 10/Times-Italic@0 SF +(\214lename)6.666 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A F1(sour)108 +96 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 108 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 120 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 132 +R/F3 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 F3 -.666(PA) +3.108 G(TH)-.189 E F0 .832(need not be e)144 144 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 156 R F3 -.666(PA)3.481 G(TH)-.189 E/F4 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 .981(f, the)-.25 F F3 -.666(PA)144 168 +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 180 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 192 R .716 +(xited within the script \(0 if no commands are e)-.15 F -.15(xe)-.15 G +.716(cuted\), and f).15 F .716(alse if)-.1 F F2(\214lename)145.91 204 Q +F0(is not found or cannot be read.)2.68 E F1(alias)108 220.8 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 232.8 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.224 E +F2(name)144 244.8 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 256.8 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 268.8 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 .054(is sup-)2.554 +F 1.314(plied, the name and v)144 280.8 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.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 292.8 Q F1(bg)108 309.6 Q F0([) +2.5 E F2(jobspec)A F0(...])2.5 E .847(Resume each suspended job)144 +321.6 R F2(jobspec)3.347 E F0 .847 +(in the background, as if it had been started with)3.347 F F1(&)3.347 E +F0 5.847(.I)C(f)-5.847 E F2(job-)3.348 E(spec)144 333.6 Q F0 .689 +(is not present, the shell')3.189 F 3.189(sn)-.55 G .689(otion of the) +-3.189 F F2(curr)3.189 E .689(ent job)-.37 F F0 .689(is used.)3.189 F F1 +(bg)5.689 E F2(jobspec)4.929 E F0 .688(returns 0 unless run)3.499 F .418 +(when job control is disabled or)144 345.6 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 357.6 Q(as started without job control.)-.1 +E F1(bind)108 374.4 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 386.4 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 398.4 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 410.4 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 422.4 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 434.4 Q F2 -.37(re)2.5 G +(adline\255command).37 E F0 .239(Display current)144 446.4 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 458.4 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 470.4 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 482.4 R(if supplied, ha)2.5 +E .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 +494.4 Q F2 -.1(ke)2.5 G(ymap)-.2 E F0(Use)180 506.4 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 518.4 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 530.4 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 542.4 Q(d)-.37 E F0(.)A F1144 554.4 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 566.4 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 578.4 +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 590.4 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 602.4 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 614.4 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 626.4 S 2.5(yt).1 G(hat the) +-2.5 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1144 638.4 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 650.4 Q F2(\214lename)2.5 E F0(Read k)180 +662.4 Q .3 -.15(ey b)-.1 H(indings from).15 E F2(\214lename)2.5 E F0(.)A +F1144 674.4 Q F2(function)2.5 E F0(Query about which k)180 686.4 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 698.4 Q F2(function) +2.5 E F0(Unbind all k)180 710.4 Q -.15(ey)-.1 G 2.5(sb).15 G +(ound to the named)-2.5 E F2(function)2.5 E F0(.)A(GNU Bash-3.2)72 768 Q +(2006 Jan 26)149.845 E(45)199.835 E 0 Cg EP +%%Page: 46 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 SF144 84 Q/F2 10/Times-Italic@0 SF -.1 +(ke)2.5 G(yseq)-.2 E F0(Remo)180 96 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 F1 +144 108 Q F2 -.1(ke)2.5 G(yseq)-.2 E F1(:)A F2(shell\255command)A +F0(Cause)180 120 Q F2(shell\255command)2.5 E F0(to be e)2.5 E -.15(xe) +-.15 G(cuted whene).15 E -.15(ve)-.25 G(r).15 E F2 -.1(ke)2.5 G(yseq)-.2 +E F0(is entered.)2.5 E(The return v)144 136.8 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 +153.6 Q(eak)-.18 E F0([)2.5 E F2(n)A F0(])A .054(Exit from within a)144 +165.6 R F1 -.25(fo)2.554 G(r).25 E F0(,)A F1(while)2.554 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.415 E F0 .055 +(must be)2.795 F/F3 10/Symbol SF2.555 E F0(1.)2.555 E(If)144 177.6 Q +F2(n)3.075 E F0 .215(is greater than the number of enclosing loops, all\ + enclosing loops are e)2.955 F 2.714(xited. The)-.15 F .214(return v) +2.714 F(alue)-.25 E(is 0 unless the shell is not e)144 189.6 Q -.15(xe) +-.15 G(cuting a loop when).15 E F1(br)2.5 E(eak)-.18 E F0(is e)2.5 E +-.15(xe)-.15 G(cuted.).15 E F1 -.2(bu)108 206.4 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 218.4 Q .792(ecute the speci\214ed shell b)-.15 F .792 +(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 .793(xit status.)-.15 F .793 +(This is useful)5.793 F .616 +(when de\214ning a function whose name is the same as a shell b)144 +230.4 R .615(uiltin, retaining the functionality of)-.2 F .57(the b)144 +242.4 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(is f)144 254.4 Q(alse if)-.1 +E F2(shell\255b)2.84 E(uiltin)-.2 E F0(is not a shell b)2.74 E +(uiltin command.)-.2 E F1(cd)108 271.2 Q F0([)2.5 E F1(\255L|-P)A F0 2.5 +(][)C F2(dir)-2.5 E F0(])A .21(Change the current directory to)144 283.2 +R F2(dir)2.71 E F0 5.21(.T)C .21(he v)-5.21 F(ariable)-.25 E/F4 9 +/Times-Bold@0 SF(HOME)2.71 E F0 .21(is the def)2.46 F(ault)-.1 E F2(dir) +2.71 E F0 5.21(.T).73 G .21(he v)-5.21 F(ariable)-.25 E F4(CDP)2.71 E +-.855(AT)-.666 G(H).855 E F0 .776 +(de\214nes the search path for the directory containing)144 295.2 R F2 +(dir)3.276 E F0 5.777(.A).73 G(lternati)-5.777 E 1.077 -.15(ve d)-.25 H +.777(irectory names in).15 F F4(CDP)3.277 E -.855(AT)-.666 G(H).855 E F0 +.764(are separated by a colon \(:\).)144 307.2 R 3.264(An)5.764 G .764 +(ull directory name in)-3.264 F F4(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 319.2 Q 2.973 +(,i)-.65 G .473(.e., `)-2.973 F(`)-.74 E F1(.)A F0 -.74('')C 5.473(.I) +.74 G(f)-5.473 E F2(dir)3.323 E F0(be)3.703 E .474 +(gins with a slash \(/\), then)-.15 F F4(CDP)2.974 E -.855(AT)-.666 G(H) +.855 E F0 .474(is not used. The)2.724 F F12.974 E F0 .474 +(option says to use)2.974 F .58(the ph)144 331.2 R .58 +(ysical directory structure instead of follo)-.05 F .579 +(wing symbolic links \(see also the)-.25 F F13.079 E F0 .579 +(option to the)3.079 F F1(set)144 343.2 Q F0 -.2(bu)3.383 G .883 +(iltin command\); the).2 F F13.383 E F0 .884 +(option forces symbolic links to be follo)3.384 F 3.384(wed. An)-.25 F +(ar)3.384 E .884(gument of)-.18 F F13.384 E F0(is)3.384 E(equi)144 +355.2 Q -.25(va)-.25 G .063(lent to).25 F F4($OLDPWD)2.563 E/F5 9 +/Times-Roman@0 SF(.)A F0 .063(If a non-empty directory name from)4.563 F +F1(CDP)2.562 E -.95(AT)-.74 G(H).95 E F0 .062(is used, or if)2.562 F F1 +2.562 E F0 .062(is the \214rst)2.562 F(ar)144 367.2 Q .116(gument, \ +and the directory change is successful, the absolute pathname of the ne) +-.18 F 2.616(ww)-.25 G .116(orking direc-)-2.716 F 1.165 +(tory is written to the standard output.)144 379.2 R 1.164(The return v) +6.164 F 1.164(alue is true if the directory w)-.25 F 1.164 +(as successfully)-.1 F(changed; f)144 391.2 Q(alse otherwise.)-.1 E F1 +(caller)108 408 Q F0([)2.5 E F2 -.2(ex)C(pr).2 E F0(])A .253 +(Returns the conte)144 420 R .254(xt of an)-.15 F 2.754(ya)-.15 G(cti) +-2.754 E .554 -.15(ve s)-.25 H .254 +(ubroutine call \(a shell function or a script e).15 F -.15(xe)-.15 G +.254(cuted with the).15 F F1(.)2.754 E F0(or)2.754 E F1(sour)144 432 Q +(ce)-.18 E F0 -.2(bu)3.063 G 3.063(iltins. W).2 F(ithout)-.4 E F2 -.2 +(ex)3.062 G(pr).2 E F0(,)A F1(caller)3.062 E F0 .562 +(displays the line number and source \214lename of the current)3.062 F +.253(subroutine call.)144 444 R .253(If a non-ne)5.253 F -.05(ga)-.15 G +(ti).05 E .553 -.15(ve i)-.25 H(nte).15 E .253(ger is supplied as)-.15 F +F2 -.2(ex)2.753 G(pr).2 E F0(,)A F1(caller)2.753 E F0 .254 +(displays the line number)2.754 F 2.754(,s)-.4 G(ub-)-2.754 E 1.327(rou\ +tine name, and source \214le corresponding to that position in the curr\ +ent e)144 456 R -.15(xe)-.15 G 1.327(cution call stack.).15 F(This e)144 +468 Q(xtra information may be used, for e)-.15 E .001 +(xample, to print a stack trace.)-.15 F .001(The current frame is frame) +5.001 F 3.02(0. The)144 480 R .52(return v)3.02 F .52 +(alue is 0 unless the shell is not e)-.25 F -.15(xe)-.15 G .519 +(cuting a subroutine call or).15 F F2 -.2(ex)3.019 G(pr).2 E F0 .519 +(does not corre-)3.019 F(spond to a v)144 492 Q +(alid position in the call stack.)-.25 E F1(command)108 508.8 Q F0([)2.5 +E F1(\255pVv)A F0(])A F2(command)2.5 E F0([)2.5 E F2(ar)A(g)-.37 E F0 +(...])2.5 E(Run)144 520.8 Q F2(command)2.956 E F0(with)3.527 E F2(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 .502(commands found in the)144 532.8 R F4 +-.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 F13.002 E F0 .502(option is gi)3.002 +F -.15(ve)-.25 G .501(n, the search for).15 F F2(command)3.201 E F0(is) +3.771 E .231(performed using a def)144 544.8 R .231(ault v)-.1 F .231 +(alue for)-.25 F F1 -.74(PA)2.731 G(TH)-.21 E F0 .231 +(that is guaranteed to \214nd all of the standard utilities.)2.731 F(If) +5.232 E .175(either the)144 556.8 R F12.675 E F0(or)2.675 E F1 +2.675 E F0 .175(option is supplied, a description of)2.675 F F2 +(command)2.875 E F0 .174(is printed.)3.445 F(The)5.174 E F12.674 E +F0 .174(option causes)2.674 F 3.11(as)144 568.8 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 F2(command)3.41 E F0 .61(to be displayed; the)3.88 F +F1144 580.8 Q F0 .25(option produces a more v)2.75 F .25 +(erbose description.)-.15 F .249(If the)5.25 F F12.749 E F0(or) +2.749 E F12.749 E F0 .249(option is supplied, the e)2.749 F .249 +(xit status)-.15 F 1.004(is 0 if)144 592.8 R F2(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 F2 +(command)144.2 604.8 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 F1(command)4.098 E F0 -.2(bu)144 616.8 S +(iltin is the e).2 E(xit status of)-.15 E F2(command)2.5 E F0(.).77 E F1 +(compgen)108 633.6 Q F0([)2.5 E F2(option)A F0 2.5(][)C F2(wor)-2.5 E(d) +-.37 E F0(])A .012(Generate possible completion matches for)144 645.6 R +F2(wor)2.513 E(d)-.37 E F0 .013(according to the)2.513 F F2(option)2.513 +E F0 .013(s, which may be an)B 2.513(yo)-.15 G(ption)-2.513 E .982 +(accepted by the)144 657.6 R F1(complete)3.482 E F0 -.2(bu)3.481 G .981 +(iltin with the e).2 F .981(xception of)-.15 F F13.481 E F0(and) +3.481 E F13.481 E F0 3.481(,a)C .981(nd write the matches to the) +-3.481 F 1.415(standard output.)144 669.6 R 1.415(When using the)6.415 F +F13.915 E F0(or)3.915 E F13.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 681.6 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 705.6 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 +717.6 R(If)5.02 E F2(wor)2.52 E(d)-.37 E F0 .02(is speci\214ed, only) +2.52 F(those completions matching)144 729.6 Q F2(wor)2.5 E(d)-.37 E F0 +(will be displayed.)2.5 E(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E +(46)199.835 E 0 Cg EP +%%Page: 47 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(The return v)144 84 Q(alue is true unless an in)-.25 E -.25(va) +-.4 G(lid option is supplied, or no matches were generated.).25 E/F1 10 +/Times-Bold@0 SF(complete)108 100.8 Q F0([)2.787 E F1(\255abcdefgjksuv)A +F0 2.787(][)C F1-2.787 E/F2 10/Times-Italic@0 SF(comp-option)2.786 +E F0 2.786(][)C F1-2.786 E F2(action)2.786 E F0 2.786(][)C F1 +-2.786 E F2(globpat)2.786 E F0 2.786(][)C F1-2.786 E F2(wor) +2.786 E(dlist)-.37 E F0 2.786(][)C F1-2.786 E F2(pr)2.786 E +(e\214x)-.37 E F0 2.786(][)C F1-2.786 E F2(suf-)2.786 E<8c78>108 +112.8 Q F0(])A([)144 124.8 Q F1A F2(\214lterpat)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(command) +2.5 E F0(])A F2(name)2.5 E F0([)2.5 E F2(name ...)A F0(])A F1 +(complete \255pr)108 136.8 Q F0([)2.5 E F2(name)A F0(...])2.5 E .634 +(Specify ho)144 148.8 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 +160.8 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 172.8 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(are supplied, all completion speci\214cations.)144 +184.8 Q 1.437 +(The process of applying these completion speci\214cations when w)144 +208.8 R 1.438(ord completion is attempted is)-.1 F(described abo)144 +220.8 Q .3 -.15(ve u)-.15 H(nder).15 E F1(Pr)2.5 E +(ogrammable Completion)-.18 E F0(.)A .556 +(Other options, if speci\214ed, ha)144 244.8 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.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 256.8 R 3.222(,t)-.65 G(he)-3.222 E F13.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 268.8 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 280.8 Q +F2(comp-option)2.5 E F0(The)184 292.8 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 304.8 Q F2 +(comp-option)5 E F0(may be one of:)2.5 E F1(bashdefault)184 316.8 Q F0 +.281(Perform the rest of the def)224 328.8 R(ault)-.1 E F1(bash)2.781 E +F0 .281(completions if the compspec generates no)2.781 F(matches.)224 +340.8 Q F1(default)184 352.8 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 364.8 Q F1(dir)184 376.8 Q(names)-.15 E F0(Perform directory name c\ +ompletion if the compspec generates no matches.)224 388.8 Q F1 +(\214lenames)184 400.8 Q F0 -.7(Te)224 412.8 S .137(ll readline that th\ +e compspec generates \214lenames, so it can perform an).7 F 2.637<798c> +-.15 G(le-)-2.637 E .496(name\255speci\214c processing \(lik)224 424.8 R +2.996(ea)-.1 G .496(dding a slash to directory names or suppress-)-2.996 +F(ing trailing spaces\).)224 436.8 Q +(Intended to be used with shell functions.)5 E F1(nospace)184 448.8 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 +460.8 Q F1(plusdirs)184 472.8 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 484.8 R 3.084(ym)-.15 G +.584(atches are added to the results of the other)-3.084 F(actions.)224 +496.8 Q F1144 508.8 Q F2(action)2.5 E F0(The)184 520.8 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 +532.8 Q F0(Alias names.)20.55 E(May also be speci\214ed as)5 E F1 +2.5 E F0(.)A F1(arrayv)184 544.8 Q(ar)-.1 E F0(Array v)224 556.8 Q +(ariable names.)-.25 E F1 4.7(binding Readline)184 568.8 R F0 -.1(ke)2.5 +G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 580.8 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 +592.8 Q F0(Command names.)224 604.8 Q(May also be speci\214ed as)5 E F1 +2.5 E F0(.)A F1(dir)184 616.8 Q(ectory)-.18 E F0(Directory names.) +224 628.8 Q(May also be speci\214ed as)5 E F12.5 E F0(.)A F1 +(disabled)184 640.8 Q F0(Names of disabled shell b)224 652.8 Q(uiltins.) +-.2 E F1(enabled)184 664.8 Q F0(Names of enabled shell b)6.66 E +(uiltins.)-.2 E F1(export)184 676.8 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 688.8 Q F0(File names.)27.22 E +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(function)184 +700.8 Q F0(Names of shell functions.)224 712.8 Q(GNU Bash-3.2)72 768 Q +(2006 Jan 26)149.845 E(47)199.835 E 0 Cg EP +%%Page: 48 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/Times-Bold@0 SF(gr)184 84 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 96 Q F0(Help topics as accepted by the)224 108 Q F1(help) +2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(hostname)184 120 Q F0 +(Hostnames, as tak)224 132 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 144 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 156 S(yw).1 E(ord)-.1 E F0(Shell reserv)224 168 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 180 Q F0(Names of running jobs, if job control is acti)5.54 +E -.15(ve)-.25 G(.).15 E F1(ser)184 192 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 204 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 216 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 228 Q F0 +(Signal names.)14.99 E F1(stopped)184 240 Q F0 +(Names of stopped jobs, if job control is acti)6.66 E -.15(ve)-.25 G(.) +.15 E F1(user)184 252 Q F0(User names.)21.67 E +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1 -.1(va)184 264 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 276 Q/F3 +10/Times-Italic@0 SF(globpat)2.5 E F0 1.411(The \214lename e)184 288 R +1.411(xpansion pattern)-.15 F F3(globpat)3.911 E F0 1.411(is e)3.911 F +1.411(xpanded to generate the possible comple-)-.15 F(tions.)184 300 Q +F1144 312 Q F3(wor)2.5 E(dlist)-.37 E F0(The)184 324 Q F3(wor) +3.639 E(dlist)-.37 E F0 1.14(is split using the characters in the)3.639 +F F2(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 336 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 348 Q(ord being completed.)-.1 E +F1144 360 Q F3(command)2.5 E(command)184 372 Q F0 1.055(is e)3.555 +F -.15(xe)-.15 G 1.055(cuted in a subshell en).15 F 1.056 +(vironment, and its output is used as the possible)-.4 F(completions.) +184 384 Q F1144 396 Q F3(function)2.5 E F0 1.181 +(The shell function)184 408 R F3(function)3.681 E F0 1.181(is e)3.681 F +-.15(xe)-.15 G 1.181(cuted in the current shell en).15 F 3.68 +(vironment. When)-.4 F 1.18(it \214n-)3.68 F .932 +(ishes, the possible completions are retrie)184 420 R -.15(ve)-.25 G +3.432(df).15 G .932(rom the v)-3.432 F .932(alue of the)-.25 F F2 +(COMPREPL)3.432 E(Y)-.828 E F0(array)3.182 E -.25(va)184 432 S(riable.) +.25 E F1144 444 Q F3(\214lterpat)2.5 E(\214lterpat)184 456 Q F0 +.733(is a pattern as used for \214lename e)3.234 F 3.233(xpansion. It) +-.15 F .733(is applied to the list of possible)3.233 F 1.596 +(completions generated by the preceding options and ar)184 468 R 1.596 +(guments, and each completion)-.18 F(matching)184 480 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 492 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 F1144 504 Q F3(pr)2.5 E(e\214x)-.37 E(pr) +184 516 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 528 Q F1144 540 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 .467(The return v)144 556.8 R +.467(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 568.8 R F3(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 F3(name)144 580.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(continue)108 597.6 Q F0([)2.5 E F3(n)A F0(])A 1.754(Resume the ne)144 +609.6 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.253(loop. If)4.254 F F3(n)4.613 E F0 +1.753(is speci\214ed,)4.493 F 1.208(resume at the)144 621.6 R F3(n)3.709 +E F0 1.209(th enclosing loop.)B F3(n)6.569 E F0 1.209(must be)3.949 F/F4 +10/Symbol SF3.709 E F0 3.709(1. If)3.709 F F3(n)4.069 E F0 1.209 +(is greater than the number of enclosing)3.949 F .668 +(loops, the last enclosing loop \(the `)144 633.6 R(`top-le)-.74 E -.15 +(ve)-.25 G(l').15 E 3.168('l)-.74 G .668(oop\) is resumed.)-3.168 F .667 +(The return v)5.667 F .667(alue is 0 unless the)-.25 F(shell is not e) +144 645.6 Q -.15(xe)-.15 G(cuting a loop when).15 E F1(continue)2.5 E F0 +(is e)2.5 E -.15(xe)-.15 G(cuted.).15 E F1(declar)108 662.4 Q(e)-.18 E +F0([)2.5 E F1(\255afFirtx)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F3 +(name)-2.5 E F0([=)A F3(value)A F0 2.5(].)C(..])-2.5 E F1(typeset)108 +674.4 Q F0([)2.5 E F1(\255afFirtx)A F0 2.5(][)C F1-2.5 E F0 2.5 +(][)C F3(name)-2.5 E F0([=)A F3(value)A F0 2.5(].)C(..])-2.5 E 1.264 +(Declare v)144 686.4 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 F3(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 698.4 +S 3.327(riables. The).25 F F13.327 E F0 .826 +(option will display the attrib)3.327 F .826(utes and v)-.2 F .826 +(alues of each)-.25 F F3(name)3.326 E F0 5.826(.W).18 G(hen)-5.826 E F1 +3.326 E F0 .826(is used,)3.326 F .22 +(additional options are ignored.)144 710.4 R(The)5.22 E F12.72 E +F0 .22(option inhibits the display of function de\214nitions; only the) +2.72 F .466(function name and attrib)144 722.4 R .466(utes are printed.) +-.2 F .466(If the)5.466 F F1(extdeb)2.966 E(ug)-.2 E F0 .466 +(shell option is enabled using)2.966 F F1(shopt)2.966 E F0 2.966(,t)C +(he)-2.966 E(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(48)199.835 E 0 +Cg EP +%%Page: 49 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.308(source \214le name and line number where the function is d\ +e\214ned are displayed as well.)144 84 R(The)6.309 E/F1 10/Times-Bold@0 +SF3.809 E F0 .191(option implies)144 96 R F12.691 E F0 5.191 +(.T)C .191(he follo)-5.191 F .191 +(wing options can be used to restrict output to v)-.25 F .19 +(ariables with the speci-)-.25 F(\214ed attrib)144 108 Q(ute or to gi) +-.2 E .3 -.15(ve v)-.25 H(ariables attrib)-.1 E(utes:)-.2 E F1144 +120 Q F0(Each)25.3 E/F2 10/Times-Italic@0 SF(name)2.5 E F0 +(is an array 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 132 Q F0(Use function names only) +26.97 E(.)-.65 E F1144 144 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 156 Q F0 +(is performed when the v)2.25 E(ariable is assigned a v)-.25 E(alue.) +-.25 E F1144 168 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 180 Q F1 +144 192 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 204 Q(The trace attrib)5 E(ute has no special meaning for v)-.2 E +(ariables.)-.25 E F1144 216 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 .337(Using `+' instead of `\255' turns of)144 232.8 R +2.837(ft)-.25 G .337(he attrib)-2.837 F .337(ute instead, with the e)-.2 +F .336(xception that)-.15 F F1(+a)2.836 E F0 .336(may not be used)2.836 +F .792(to destro)144 244.8 R 3.293(ya)-.1 G 3.293(na)-3.293 G .793 +(rray v)-3.293 F 3.293(ariable. When)-.25 F .793 +(used in a function, mak)3.293 F .793(es each)-.1 F F2(name)3.293 E F0 +.793(local, as with the)3.293 F F1(local)3.293 E F0 2.843(command. If) +144 256.8 R 2.843(av)2.843 G .342(ariable name is follo)-3.093 F .342 +(wed by =)-.25 F F2(value)A F0 2.842(,t)C .342(he v)-2.842 F .342 +(alue of the v)-.25 F .342(ariable is set to)-.25 F F2(value)2.842 E F0 +5.342(.T)C(he)-5.342 E .8(return v)144 268.8 R .8 +(alue is 0 unless an in)-.25 F -.25(va)-.4 G .801 +(lid option is encountered, an attempt is made to de\214ne a function) +.25 F(using)144 280.8 Q/F4 10/Courier@0 SF 1.039(\255f foo=bar)3.539 F +F0 3.539(,a)C 3.539(na)-3.539 G 1.038(ttempt is made to assign a v) +-3.539 F 1.038(alue to a readonly v)-.25 F 1.038(ariable, an attempt is) +-.25 F .974(made to assign a v)144 292.8 R .974(alue to an array v)-.25 +F .974(ariable without using the compound assignment syntax \(see)-.25 F +F1(Arrays)144 304.8 Q F0(abo)2.86 E -.15(ve)-.15 G .36(\), one of the) +.15 F F2(names)2.86 E F0 .36(is not a v)2.86 F .36(alid shell v)-.25 F +.36(ariable name, an attempt is made to turn of)-.25 F(f)-.25 E .056 +(readonly status for a readonly v)144 316.8 R .057 +(ariable, an attempt is made to turn of)-.25 F 2.557(fa)-.25 G .057 +(rray status for an array v)-2.557 F(ari-)-.25 E +(able, or an attempt is made to display a non-e)144 328.8 Q +(xistent function with)-.15 E F12.5 E F0(.)A F1 +(dirs [\255clpv] [+)108 345.6 Q F2(n)A F1 2.5(][)C-2.5 E F2(n)A F1 +(])A F0 -.4(Wi)144 357.6 S .329 +(thout options, displays the list of currently remembered directories.) +.4 F .328(The def)5.328 F .328(ault display is on a)-.1 F 1.238 +(single line with directory names separated by spaces.)144 369.6 R 1.238 +(Directories are added to the list with the)6.238 F F1(pushd)144 381.6 Q +F0(command; the)2.5 E F1(popd)2.5 E F0(command remo)2.5 E -.15(ve)-.15 G +2.5(se).15 G(ntries from the list.)-2.5 E F1(+)144 393.6 Q F2(n)A F0 +1.565(Displays the)25.3 F F2(n)4.065 E F0 1.565 +(th entry counting from the left of the list sho)B 1.564(wn by)-.25 F F1 +(dirs)4.064 E F0 1.564(when in)4.064 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E +(without options, starting with zero.)180 405.6 Q F1144 417.6 Q F2 +(n)A F0 1.194(Displays the)25.3 F F2(n)3.694 E F0 1.194 +(th entry counting from the right of the list sho)B 1.194(wn by)-.25 F +F1(dirs)3.694 E F0 1.194(when in)3.694 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E +(without options, starting with zero.)180 429.6 Q F1144 441.6 Q F0 +(Clears the directory stack by deleting all of the entries.)25.86 E F1 +144 453.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 465.6 Q(.)-.65 E F1144 477.6 Q F0 +(Print the directory stack with one entry per line.)24.74 E F1144 +489.6 Q F0 .272(Print the directory stack with one entry per line, pre\ +\214xing each entry with its inde)25.3 F 2.773(xi)-.15 G 2.773(nt)-2.773 +G(he)-2.773 E(stack.)180 501.6 Q .258(The return v)144 518.4 R .258 +(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258 +(lid option is supplied or).25 F F2(n)2.758 E F0(inde)2.758 E -.15(xe) +-.15 G 2.758(sb).15 G -.15(ey)-2.758 G .258(ond the end of the direc-) +.15 F(tory stack.)144 530.4 Q F1(diso)108 547.2 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 559.2 S .33(thout options, each).4 F F2(jobspec) +4.57 E F0 .33(is remo)3.14 F -.15(ve)-.15 G 2.83(df).15 G .331 +(rom the table of acti)-2.83 F .631 -.15(ve j)-.25 H 2.831(obs. If).15 F +(the)2.831 E F12.831 E F0 .331(option is gi)2.831 F -.15(ve)-.25 G +(n,).15 E(each)144 571.2 Q F2(jobspec)4.521 E F0 .281(is not remo)3.091 +F -.15(ve)-.15 G 2.78(df).15 G .28(rom the table, b)-2.78 F .28 +(ut is mark)-.2 F .28(ed so that)-.1 F F3(SIGHUP)2.78 E F0 .28 +(is not sent to the job if)2.53 F .223(the shell recei)144 583.2 R -.15 +(ve)-.25 G 2.724(sa).15 G F3(SIGHUP)A/F5 9/Times-Roman@0 SF(.)A F0 .224 +(If no)4.724 F F2(jobspec)4.464 E F0 .224(is present, and neither the) +3.034 F F12.724 E F0 .224(nor the)2.724 F F12.724 E F0 .224 +(option is sup-)2.724 F .652(plied, the)144 595.2 R F2(curr)3.152 E .652 +(ent job)-.37 F F0 .652(is used.)3.152 F .652(If no)5.652 F F2(jobspec) +4.892 E F0 .652(is supplied, the)3.462 F F13.152 E F0 .651 +(option means to remo)3.151 F .951 -.15(ve o)-.15 H 3.151(rm).15 G(ark) +-3.151 E .434(all jobs; the)144 607.2 R F12.934 E F0 .434 +(option without a)2.934 F F2(jobspec)4.675 E F0(ar)3.245 E .435 +(gument restricts operation to running jobs.)-.18 F .435(The return) +5.435 F -.25(va)144 619.2 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 636 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 648 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 660 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 672 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 684 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 696 R F1 +(echo)2.509 E F0 -.15(ex)2.509 G .009(pands these escape characters).15 +F .659(by def)144 708 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 720 Q +(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(49)199.835 E 0 Cg EP +%%Page: 50 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(\\a)144 84 Q F0(alert \(bell\))28.22 E F1 +(\\b)144 96 Q F0(backspace)27.66 E F1(\\c)144 108 Q F0 +(suppress trailing ne)28.78 E(wline)-.25 E F1(\\e)144 120 Q F0 +(an escape character)28.78 E F1(\\f)144 132 Q F0(form feed)29.89 E F1 +(\\n)144 144 Q F0(ne)27.66 E 2.5(wl)-.25 G(ine)-2.5 E F1(\\r)144 156 Q +F0(carriage return)28.78 E F1(\\t)144 168 Q F0(horizontal tab)29.89 E F1 +(\\v)144 180 Q F0 -.15(ve)28.22 G(rtical tab).15 E F1(\\\\)144 192 Q F0 +(backslash)30.44 E F1(\\0)144 204 Q/F2 10/Times-Italic@0 SF(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(\\) +144 216 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 octal digits\))2.5 E F1(\\x)144 228 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(enable)108 244.8 Q F0([)2.5 E +F1(\255adnps)A 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 256.8 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 268.8 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 280.8 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 292.8 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 9/Times-Bold@0 +SF -.666(PA)4.082 G(TH)-.189 E F0 .081(instead of the shell b)144 304.8 +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 316.8 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 328.8 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 340.8 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 +352.8 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 364.8 R 1.916 +(uiltins, with an indication of whether or not each is)-.2 F 2.879 +(enabled. If)144 376.8 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 388.8 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 +400.8 Q F1 -2.3 -.15(ev a)108 417.6 T(l).15 E F0([)2.5 E F2(ar)A(g)-.37 +E F0(...])2.5 E(The)144 429.6 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 441.6 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(or only null ar)144 453.6 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 470.4 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 482.4 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 494.4 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 .16(the zeroth ar)144 506.4 R 2.66(gp)-.18 G .16 +(assed to)-2.66 F F2(command)2.66 E F0 5.16(.T).77 G .159(his is what) +-5.16 F F2(lo)2.659 E(gin)-.1 E F0 .159(\(1\) does.).24 F(The)5.159 E F1 +2.659 E F0 .159(option causes)2.659 F F2(command)2.859 E F0(to) +3.429 E 1.195(be e)144 518.4 R -.15(xe)-.15 G 1.195 +(cuted with an empty en).15 F 3.695(vironment. If)-.4 F F13.696 E +F0 1.196(is supplied, the shell passes)3.696 F F2(name)4.056 E F0 1.196 +(as the zeroth)3.876 F(ar)144 530.4 Q .02(gument to the e)-.18 F -.15 +(xe)-.15 G .02(cuted command.).15 F(If)5.02 E F2(command)2.72 E F0 .02 +(cannot be e)3.29 F -.15(xe)-.15 G .02 +(cuted for some reason, a non-inter).15 F(-)-.2 E(acti)144 542.4 Q 1.066 +-.15(ve s)-.25 H .766(hell e).15 F .766(xits, unless the shell option) +-.15 F F1(execfail)3.266 E F0 .766 +(is enabled, in which case it returns f)3.266 F 3.267(ailure. An)-.1 F +(interacti)144 554.4 Q 1.519 -.15(ve s)-.25 H 1.219(hell returns f).15 F +1.219(ailure if the \214le cannot be e)-.1 F -.15(xe)-.15 G 3.719 +(cuted. If).15 F F2(command)3.918 E F0 1.218(is not speci\214ed, an) +4.488 F(y)-.15 E .133(redirections tak)144 566.4 R 2.633(ee)-.1 G -.25 +(ff)-2.633 G .134(ect in the current shell, and the return status is 0.) +.25 F .134(If there is a redirection error)5.134 F(,)-.4 E +(the return status is 1.)144 578.4 Q F1(exit)108 595.2 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 607.2 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 624 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 636 Q F0 .256(The supplied)144 648 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 660 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 672 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 684 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 696 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 708 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 720 +Q F0(that is not a function.)2.68 E(GNU Bash-3.2)72 768 Q(2006 Jan 26) +149.845 E(50)199.835 E 0 Cg EP +%%Page: 51 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/F1 10/Times-Bold@0 SF(fc)108 84 Q F0([)2.5 E F1A/F2 10 +/Times-Italic@0 SF(ename)2.5 E F0 2.5(][)C F1(\255nlr)-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 96 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 108 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 120 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 +132 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 144 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 156 R/F3 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 168 Q +(vious command for editing and \25516 for listing.)-.25 E(The)144 192 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 204 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 216 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 228 R .63(alue of the)-.25 F/F4 9/Times-Bold@0 +SF(FCEDIT)3.13 E F0 -.25(va)2.88 G .631(riable is used, and the v).25 F +.631(alue of)-.25 F F4(EDIT)3.131 E(OR)-.162 E F0(if)2.881 E F4(FCEDIT) +3.131 E F0 .631(is not set.)2.881 F .631(If nei-)5.631 F .951(ther v)144 +240 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 252 S(cuted.).15 E .039(In the second form,)144 276 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 288 R F3 .406(r='fc \255s')2.906 F F0 +2.906(,s)C 2.906(ot)-2.906 G .406(hat typing)-2.906 F F3 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 F3(cc)144 300 Q F0(and typing)2.5 E F3(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 324 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 336 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 348 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 +360 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 372 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 388.8 Q F0([)2.5 E F2(jobspec)A F0(])A(Resume) +144 400.8 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 412.8 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 424.8 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 436.8 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 F1(getopts)108 453.6 Q F2 +(optstring name)2.5 E F0([)2.5 E F2(ar)A(gs)-.37 E F0(])A F1(getopts)144 +465.6 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 477.6 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 489.6 Q .578 +(gument, which should be separated from it by white space.)-.18 F .579 +(The colon and question mark char)5.579 F(-)-.2 E 1.665 +(acters may not be used as option characters.)144 501.6 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 513.6 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 525.6 Q .085 +(gument to be processed into the v)-.18 F(ariable)-.25 E F4(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 .845 +(or a shell script is in)144 537.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 F1 +(getopts)3.346 E F0 .846(places that ar)3.346 F(gument)-.18 E .804 +(into the v)144 549.6 R(ariable)-.25 E F4(OPT)3.304 E(ARG)-.81 E F5(.)A +F0 .803(The shell does not reset)5.304 F F4(OPTIND)3.303 E F0 .803 +(automatically; it must be manually)3.053 F .293 +(reset between multiple calls to)144 561.6 R F1(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 573.6 +Q 2.044(When the end of options is encountered,)144 597.6 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 F1(OPTIND)144 609.6 Q F0 +(is set to the inde)2.5 E 2.5(xo)-.15 G 2.5(ft)-2.5 G +(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F1(name)2.5 E F0 +(is set to ?.)2.5 E F1(getopts)144 633.6 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 +645.6 Q F0(parses those instead.)2.5 E F1(getopts)144 669.6 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 681.6 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 +693.6 R .394(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 705.6 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 729.6 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(GNU Bash-3.2)72 768 +Q(2006 Jan 26)149.845 E(51)199.835 E 0 Cg EP +%%Page: 52 53 +%%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 .4(and unsets)144 84 R/F1 9/Times-Bold@0 SF(OPT)2.9 E(ARG)-.81 E +/F2 9/Times-Roman@0 SF(.)A F0(If)4.899 E/F3 10/Times-Bold@0 SF(getopts) +2.899 E F0 .399(is silent, the option character found is placed in)2.899 +F F1(OPT)2.899 E(ARG)-.81 E F0 .399(and no)2.649 F +(diagnostic message is printed.)144 96 Q 1.241(If a required ar)144 120 +R 1.241(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.742(\)i).833 +G 3.742(sp)-3.742 G 1.242(laced in)-3.742 F/F4 10/Times-Italic@0 SF +(name)144 132 Q F0(,).18 E F1(OPT)2.735 E(ARG)-.81 E F0 .234 +(is unset, and a diagnostic message is printed.)2.485 F(If)5.234 E F3 +(getopts)2.734 E F0 .234(is silent, then a colon \()2.734 F F3(:).833 E +F0(\)).833 E(is placed in)144 144 Q F4(name)2.86 E F0(and)2.68 E F1(OPT) +2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 E F3 +(getopts)144 168 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 180 Q F3(hash)108 196.8 +Q F0([)2.5 E F3(\255lr)A F0 2.5(][)C F3-2.5 E F4(\214lename)2.5 E +F0 2.5(][)C F3(\255dt)-2.5 E F0 2.5(][)C F4(name)-2.5 E F0(])A -.15(Fo) +144 208.8 S 3.555(re).15 G(ach)-3.555 E F4(name)3.555 E F0 3.555(,t).18 +G 1.054(he full \214le name of the command is determined by searching t\ +he directories in)-3.555 F F3($P)144 220.8 Q -.95(AT)-.74 G(H).95 E F0 +.349(and remembered.)2.849 F .349(If the)5.349 F F32.849 E F0 .349 +(option is supplied, no path search is performed, and)2.849 F F4 +(\214lename)4.76 E F0 .452 +(is used as the full \214le name of the command.)144 232.8 R(The)5.452 E +F32.952 E F0 .452(option causes the shell to for)2.952 F .452 +(get all remem-)-.18 F .592(bered locations.)144 244.8 R(The)5.592 E F3 +3.092 E F0 .593(option causes the shell to for)3.092 F .593 +(get the remembered location of each)-.18 F F4(name)3.093 E F0(.)A .021 +(If the)144 256.8 R F32.521 E F0 .021 +(option is supplied, the full pathname to which each)2.521 F F4(name) +2.52 E F0 .02(corresponds is printed.)2.52 F .02(If multi-)5.02 F(ple) +144 268.8 Q F4(name)3.703 E F0(ar)3.703 E 1.203 +(guments are supplied with)-.18 F F33.703 E F0 3.703(,t)C(he) +-3.703 E F4(name)3.703 E F0 1.204 +(is printed before the hashed full pathname.)3.703 F(The)144 280.8 Q F3 +3.216 E F0 .715(option causes output to be displayed in a format \ +that may be reused as input.)3.216 F .715(If no ar)5.715 F(gu-)-.18 E +1.183(ments are gi)144 292.8 R -.15(ve)-.25 G 1.183(n, or if only).15 F +F33.683 E F0 1.184 +(is supplied, information about remembered commands is printed.)3.684 F +(The return status is true unless a)144 304.8 Q F4(name)2.86 E F0 +(is not found or an in)2.68 E -.25(va)-.4 G(lid option is supplied.).25 +E F3(help)108 321.6 Q F0([)2.5 E F3A F0 2.5(][)C F4(pattern)-2.5 E +F0(])A .867(Display helpful information about b)144 333.6 R .867 +(uiltin commands.)-.2 F(If)5.867 E F4(pattern)4.617 E F0 .866 +(is speci\214ed,)3.607 F F3(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 +345.6 R F4(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 .596(tures is printed.)144 357.6 +R(The)5.596 E F33.096 E F0 .596 +(option restricts the information displayed to a short usage synopsis.) +3.096 F(The)5.596 E(return status is 0 unless no command matches)144 +369.6 Q F4(pattern)2.5 E F0(.).24 E F3(history [)108 386.4 Q F4(n)A F3 +(])A(history \255c)108 398.4 Q(history \255d)108 410.4 Q F4(of)2.5 E +(fset)-.18 E F3(history \255anrw)108 422.4 Q F0([)2.5 E F4(\214lename)A +F0(])A F3(history \255p)108 434.4 Q F4(ar)2.5 E(g)-.37 E F0([)2.5 E F4 +(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A F3(history \255s)108 446.4 Q F4(ar) +2.5 E(g)-.37 E F0([)2.5 E F4(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi) +144 458.4 S .752 +(th no options, display the command history list with line numbers.).4 F +.752(Lines listed with a)5.752 F F3(*)3.252 E F0(ha)3.252 E -.15(ve)-.2 +G 1.231(been modi\214ed.)144 470.4 R 1.231(An ar)6.231 F 1.231 +(gument of)-.18 F F4(n)4.091 E F0 1.231(lists only the last)3.971 F F4 +(n)4.091 E F0 3.73(lines. If)3.97 F 1.23(the shell v)3.73 F(ariable)-.25 +E F3(HISTTIME-)3.73 E(FORMA)144 482.4 Q(T)-.95 E F0 .249 +(is set and not null, it is used as a format string for)2.749 F F4 +(strftime)2.75 E F0 .25(\(3\) to display the time stamp)B .379 +(associated with each displayed history entry)144 494.4 R 5.379(.N)-.65 +G 2.878(oi)-5.379 G(nterv)-2.878 E .378 +(ening blank is printed between the format-)-.15 F .814 +(ted time stamp and the history line.)144 506.4 R(If)5.814 E F4 +(\214lename)3.314 E F0 .814 +(is supplied, it is used as the name of the history)3.314 F +(\214le; if not, the v)144 518.4 Q(alue of)-.25 E F1(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 F3144 530.4 Q F0 +(Clear the history list by deleting all the entries.)25.86 E F3144 +542.4 Q F4(of)2.5 E(fset)-.18 E F0(Delete the history entry at position) +180 554.4 Q F4(of)2.5 E(fset)-.18 E F0(.)A F3144 566.4 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 F3(bash)180 578.4 Q F0 +(session\) to the history \214le.)2.5 E F3144 590.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 .773 +(These are lines appended to the history \214le since the be)180 602.4 R +.772(ginning of the current)-.15 F F3(bash)3.272 E F0(ses-)3.272 E +(sion.)180 614.4 Q F3144 626.4 Q F0(Read the contents of the hist\ +ory \214le and use them as the current history)25.86 E(.)-.65 E F3 +144 638.4 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 F3144 650.4 Q F0 .625 +(Perform history substitution on the follo)24.74 F(wing)-.25 E F4(ar) +3.125 E(gs)-.37 E F0 .626(and display the result on the standard)3.125 F +2.975(output. Does)180 662.4 R .475 +(not store the results in the history list.)2.975 F(Each)5.475 E F4(ar) +2.975 E(g)-.37 E F0 .475(must be quoted to disable)2.975 F +(normal history e)180 674.4 Q(xpansion.)-.15 E F3144 686.4 Q F0 +.362(Store the)26.41 F F4(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 698.4 Q -.15 +(ve)-.15 G 2.5(db).15 G(efore the)-2.5 E F4(ar)2.83 E(gs)-.37 E F0 +(are added.)2.77 E .28(If the)144 715.2 R F3(HISTTIMEFORMA)2.78 E(T)-.95 +E F0 .28 +(is set, the time stamp information associated with each history entry) +2.78 F .216(is written to the history \214le.)144 727.2 R .216 +(The return v)5.216 F .216(alue is 0 unless an in)-.25 F -.25(va)-.4 G +.216(lid option is encountered, an error).25 F(GNU Bash-3.2)72 768 Q +(2006 Jan 26)149.845 E(52)199.835 E 0 Cg EP +%%Page: 53 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 .422(occurs while reading or writing the history \214le, an in) +144 84 R -.25(va)-.4 G(lid).25 E/F1 10/Times-Italic@0 SF(of)2.922 E +(fset)-.18 E F0 .422(is supplied as an ar)2.922 F .421(gument to)-.18 F +/F2 10/Times-Bold@0 SF2.921 E F0(,)A(or the history e)144 96 Q +(xpansion supplied as an ar)-.15 E(gument to)-.18 E F22.5 E F0 -.1 +(fa)2.5 G(ils.).1 E F2(jobs)108 112.8 Q F0([)2.5 E F2(\255lnprs)A F0 2.5 +(][)C F1(jobspec)A F0(... ])2.5 E F2(jobs \255x)108 124.8 Q F1(command) +2.5 E F0([)2.5 E F1(ar)2.5 E(gs)-.37 E F0(... ])2.5 E +(The \214rst form lists the acti)144 136.8 Q .3 -.15(ve j)-.25 H 2.5 +(obs. The).15 F(options ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F2144 148.8 Q F0 +(List process IDs in addition to the normal information.)27.52 E F2 +144 160.8 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 F2144 172.8 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 184.8 Q F2144 196.8 Q F0 +(Restrict output to running jobs.)25.86 E F2144 208.8 Q F0 +(Restrict output to stopped jobs.)26.41 E(If)144 225.6 Q F1(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 237.6 Q -.25 +(va)-.4 G(lid option is encountered or an in).25 E -.25(va)-.4 G(lid).25 +E F1(jobspec)4.24 E F0(is supplied.)2.81 E .394(If the)144 254.4 R F2 +2.894 E F0 .394(option is supplied,)2.894 F F2(jobs)2.894 E F0 +.394(replaces an)2.894 F(y)-.15 E F1(jobspec)4.634 E F0 .394(found in) +3.204 F F1(command)3.094 E F0(or)3.664 E F1(ar)3.224 E(gs)-.37 E F0 .395 +(with the corre-)3.164 F(sponding process group ID, and e)144 266.4 Q +-.15(xe)-.15 G(cutes).15 E F1(command)2.7 E F0(passing it)3.27 E F1(ar) +2.5 E(gs)-.37 E F0 2.5(,r).27 G(eturning its e)-2.5 E(xit status.)-.15 E +F2(kill)108 283.2 Q F0([)2.5 E F2A F1(sigspec)2.5 E F0(|)2.5 E F2 +2.5 E F1(signum)2.5 E F0(|)2.5 E F22.5 E F1(sigspec)A F0 2.5 +(][)C F1(pid)-2.5 E F0(|)2.5 E F1(jobspec)2.5 E F0 2.5(].)C(..)-2.5 E F2 +(kill \255l)108 295.2 Q F0([)2.5 E F1(sigspec)A F0(|)2.5 E F1 -.2(ex)2.5 +G(it_status).2 E F0(])A .12(Send the signal named by)144 307.2 R F1 +(sigspec)2.96 E F0(or)2.93 E F1(signum)2.96 E F0 .119 +(to the processes named by)2.939 F F1(pid)3.869 E F0(or)3.389 E F1 +(jobspec)2.619 E F0(.).31 E F1(sigspec)5.459 E F0(is)2.929 E .318 +(either a case-insensiti)144 319.2 R .618 -.15(ve s)-.25 H .318 +(ignal name such as).15 F/F3 9/Times-Bold@0 SF(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 331.2 Q F1(signum)4.189 E F0 +1.349(is a signal number)4.169 F 6.349(.I)-.55 G(f)-6.349 E F1(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 343.2 Q .522(gument of)-.18 +F F23.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 F23.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 355.2 +R .28(guments are listed, and the return status is 0.)-.18 F(The)5.28 E +F1 -.2(ex)2.78 G(it_status).2 E F0(ar)144 367.2 Q .377(gument to)-.18 F +F22.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 379.2 +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 391.2 Q -.25(va)-.4 G(lid option is encountered.) +.25 E F2(let)108 408 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 420 Q F1(ar)3.964 E(g)-.37 E F0 1.134 +(is an arithmetic e)3.854 F 1.134(xpression to be e)-.15 F -.25(va)-.25 +G 1.135(luated \(see).25 F F3 1.135(ARITHMETIC EV)3.635 F(ALU)-1.215 E +-.855(AT)-.54 G(ION).855 E/F4 9/Times-Roman@0 SF(\).)A F0 1.135(If the) +5.635 F(last)144 432 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 448.8 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 460.8 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 472.8 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 +484.8 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 496.8 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 508.8 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 +520.8 Q F1(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F2 +(logout)108 537.6 Q F0(Exit a login shell.)9.33 E F2(popd)108 554.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 566.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 +578.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 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 .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/F5 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 F5(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.76(st).15 G(he)-3.76 E F1(n)3.76 E F0 +1.259(th entry counting from the right of the list sho)B 1.259(wn by) +-.25 F F2(dirs)3.759 E F0 3.759(,s)C 1.259(tarting with)-3.759 F 2.5 +(zero. F)180 638.4 R(or e)-.15 E(xample:)-.15 E F5(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 F5(popd -1)2.5 E F0(the ne)2.5 E(xt to last.)-.15 E F2144 650.4 +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 662.4 Q .644(If the)144 679.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 691.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 703.2 Q +(ails.)-.1 E(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(53)199.835 E 0 +Cg EP +%%Page: 54 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(printf)108 84 Q F0([)2.5 E F1A/F2 10 +/Times-Italic@0 SF(var)2.5 E F0(])A F2(format)2.5 E F0([)2.5 E F2(ar)A +(guments)-.37 E F0(])A .372(Write the formatted)144 96 R F2(ar)2.872 E +(guments)-.37 E F0 .372(to the standard output under the control of the) +2.872 F F2(format)2.872 E F0 5.372(.T)C(he)-5.372 E F2(format)2.872 E F0 +1.804(is a character string which contains three types of objects: plai\ +n characters, which are simply)144 108 R .159 +(copied to standard output, character escape sequences, which are con) +144 120 R -.15(ve)-.4 G .158(rted and copied to the stan-).15 F .499(da\ +rd output, and format speci\214cations, each of which causes printing o\ +f the ne)144 132 R .5(xt successi)-.15 F -.15(ve)-.25 G F2(ar)3.15 E +(gu-)-.37 E(ment)144 144 Q F0 5.424(.I)C 2.924(na)-5.424 G .424 +(ddition to the standard)-2.924 F F2(printf)2.924 E F0 .424 +(\(1\) formats,)B F1(%b)2.924 E F0(causes)2.923 E F1(printf)2.923 E F0 +.423(to e)2.923 F .423(xpand backslash escape)-.15 F .976 +(sequences in the corresponding)144 156 R F2(ar)3.476 E(gument)-.37 E F0 +(\(e)3.476 E .976(xcept that)-.15 F F1(\\c)3.476 E F0 .976 +(terminates output, backslashes in)3.476 F F1<5c08>3.477 E F0(,)A F1 +(\\")3.477 E F0(,)A(and)144 168 Q F1(\\?)3.422 E F0 .922(are not remo) +3.422 F -.15(ve)-.15 G .922(d, and octal escapes be).15 F .922 +(ginning with)-.15 F F1(\\0)3.422 E F0 .921 +(may contain up to four digits\), and)3.422 F F1(%q)144 180 Q F0(causes) +3.63 E F1(printf)3.63 E F0 1.13(to output the corresponding)3.63 F F2 +(ar)3.631 E(gument)-.37 E F0 1.131 +(in a format that can be reused as shell)3.631 F(input.)144 192 Q(The) +144 216 Q F12.904 E F0 .404 +(option causes the output to be assigned to the v)2.904 F(ariable)-.25 E +F2(var)2.904 E F0 .404(rather than being printed to the)2.904 F +(standard output.)144 228 Q(The)144 252 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 264 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 .033(alue or null string,) +-.25 F(as appropriate, had been supplied.)144 276 Q(The return v)5 E +(alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E F1(pushd) +108 292.8 Q F0([)2.5 E F1A F0 2.5(][)C F2(dir)-2.5 E F0(])A F1 +(pushd)108 304.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 .639(Adds a directory to the top of th\ +e directory stack, or rotates the stack, making the ne)144 316.8 R 3.14 +(wt)-.25 G .64(op of the)-3.14 F 1.316(stack the current w)144 328.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 340.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 352.8 Q +F1(+)144 364.8 Q F2(n)A F0 1.268(Rotates the stack so that the)25.3 F F2 +(n)3.768 E F0 1.267 +(th directory \(counting from the left of the list sho)B 1.267(wn by) +-.25 F F1(dirs)180 376.8 Q F0 2.5(,s)C +(tarting with zero\) is at the top.)-2.5 E F1144 388.8 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 F1(dirs)180 400.8 Q F0 2.5(,s)C(tarting with zero\) is at the top.) +-2.5 E F1144 412.8 Q F0 .902(Suppresses the normal change of dire\ +ctory when adding directories to the stack, so that)24.74 F +(only the stack is manipulated.)180 424.8 Q F2(dir)144.35 436.8 Q F0 +(Adds)23.98 E F2(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 .488(If the)144 453.6 +R F1(pushd)2.988 E F0 .488(command is successful, a)2.988 F F1(dirs) +2.988 E F0 .488(is performed as well.)2.988 F .489 +(If the \214rst form is used,)5.488 F F1(pushd)2.989 E F0 1.04 +(returns 0 unless the cd to)144 465.6 R F2(dir)3.89 E F0 -.1(fa)4.27 G +3.539(ils. W).1 F 1.039(ith the second form,)-.4 F F1(pushd)3.539 E F0 +1.039(returns 0 unless the directory)3.539 F .846(stack is empty)144 +477.6 R 3.346(,an)-.65 G(on-e)-3.346 E .847(xistent directory stack ele\ +ment is speci\214ed, or the directory change to the)-.15 F +(speci\214ed ne)144 489.6 Q 2.5(wc)-.25 G(urrent directory f)-2.5 E +(ails.)-.1 E F1(pwd)108 506.4 Q F0([)2.5 E F1(\255LP)A F0(])A .845 +(Print the absolute pathname of the current w)144 518.4 R .845 +(orking directory)-.1 F 5.844(.T)-.65 G .844 +(he pathname printed contains no)-5.844 F .181(symbolic links if the)144 +530.4 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 .182(iltin command is).2 F 3.264 +(enabled. If)144 542.4 R(the)3.264 E F13.264 E F0 .763 +(option is used, the pathname printed may contain symbolic links.)3.264 +F .763(The return)5.763 F 1.36(status is 0 unless an error occurs while\ + reading the name of the current directory or an in)144 554.4 R -.25(va) +-.4 G(lid).25 E(option is supplied.)144 566.4 Q F1 -.18(re)108 583.2 S +(ad).18 E F0([)2.5 E F1(\255ers)A F0 2.5(][)C F1-2.5 E F2(fd)2.5 E +F0 2.5(][)C F1-2.5 E F2(timeout)2.5 E F0 2.5(][)C F1-2.5 E +F2(aname)2.5 E F0 2.5(][)C F1-2.5 E F2(pr)2.5 E(ompt)-.45 E F0 2.5 +(][)C F1-2.5 E F2(nc)2.5 E(har)-.15 E(s)-.1 E F0 2.5(][)C F1 +-2.5 E F2(delim)2.5 E F0 2.5(][)C F2(name)-2.5 E F0(...])2.5 E .516(One\ + line is read from the standard input, or from the \214le descriptor)144 +595.2 R F2(fd)3.016 E F0 .516(supplied as an ar)3.016 F .516(gument to) +-.18 F(the)144 607.2 Q F12.538 E F0 .038 +(option, and the \214rst w)2.538 F .038(ord is assigned to the \214rst) +-.1 F F2(name)2.539 E F0 2.539(,t).18 G .039(he second w)-2.539 F .039 +(ord to the second)-.1 F F2(name)2.539 E F0(,).18 E .42 +(and so on, with lefto)144 619.2 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 F2(name)2.92 E F0 5.42(.I) +.18 G 2.92(ft)-5.42 G(here)-2.92 E .54(are fe)144 631.2 R .54(wer w)-.25 +F .541(ords read from the input stream than names, the remaining names \ +are assigned empty)-.1 F -.25(va)144 643.2 S 2.511(lues. The).25 F .011 +(characters in)2.511 F/F3 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 F1(\\)A F0 2.51(\)m)C(ay)-2.51 E 1.89 +(be used to remo)144 655.2 R 2.19 -.15(ve a)-.15 H 2.19 -.15(ny s).15 H +1.891(pecial meaning for the ne).15 F 1.891 +(xt character read and for line continuation.)-.15 F +(Options, if supplied, ha)144 667.2 Q .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 679.2 Q F2(aname)2.5 E F0 1.05(The w) +180 691.2 R 1.049 +(ords are assigned to sequential indices of the array v)-.1 F(ariable) +-.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 703.2 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(GNU Bash-3.2)72 768 Q(2006 Jan 26) +149.845 E(54)199.835 E 0 Cg EP +%%Page: 55 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/F1 10/Times-Bold@0 SF144 84 Q/F2 10/Times-Italic@0 SF +(delim)2.5 E F0(The \214rst character of)180 96 Q F2(delim)2.5 E F0 +(is used to terminate the input line, rather than ne)2.5 E(wline.)-.25 E +F1144 108 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 9/Times-Bold@0 SF(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(to obtain the line.)180 120 Q F1144 132 Q F2(nc)2.5 +E(har)-.15 E(s)-.1 E F1 -.18(re)180 144 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.)180 156 Q F1144 168 Q F2(pr)2.5 E(ompt)-.45 E F0 +(Display)180 180 Q F2(pr)3.66 E(ompt)-.45 E F0 1.161(on standard error) +3.66 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 192 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 204 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 216 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 F1144 228 Q F0(Silent mode.)26.41 E +(If input is coming from a terminal, characters are not echoed.)5 E F1 +144 240 Q F2(timeout)2.5 E F0(Cause)180 252 Q F1 -.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 F2(timeout) +180 264 Q F0 2.92(seconds. This)2.92 F .42(option has no ef)2.92 F .42 +(fect if)-.25 F F1 -.18(re)2.92 G(ad).18 E F0 .42 +(is not reading input from the terminal)2.92 F(or a pipe.)180 276 Q F1 +144 288 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 304.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(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.218 +(unless end-of-\214le is encountered,)144 316.8 R F1 -.18(re)3.718 G(ad) +.18 E F0 1.217(times out, or an in)3.718 F -.25(va)-.4 G 1.217 +(lid \214le descriptor is supplied as the).25 F(ar)144 328.8 Q +(gument to)-.18 E F12.5 E F0(.)A F1 -.18(re)108 345.6 S(adonly).18 +E F0([)2.5 E F1(\255apf)A 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 357.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.097(quent assignment.)144 369.6 R +1.097(If the)6.097 F F13.597 E F0 1.097 +(option is supplied, the functions corresponding to the)3.597 F F2 +(names)3.596 E F0 1.096(are so)3.596 F(mark)144 381.6 Q 2.872(ed. The) +-.1 F F12.872 E F0 .372(option restricts the v)2.872 F .372 +(ariables to arrays.)-.25 F .372(If no)5.372 F F2(name)3.232 E F0(ar) +3.053 E .373(guments are gi)-.18 F -.15(ve)-.25 G .373(n, or if the).15 +F F1144 393.6 Q F0 .796 +(option is supplied, a list of all readonly names is printed.)3.297 F +(The)5.796 E F13.296 E F0 .796(option causes output to be)3.296 F +.828(displayed in a format that may be reused as input.)144 405.6 R .828 +(If a v)5.828 F .828(ariable name is follo)-.25 F .828(wed by =)-.25 F +F2(wor)A(d)-.37 E F0 3.328(,t)C(he)-3.328 E -.25(va)144 417.6 S .405 +(lue of the v).25 F .405(ariable is set to)-.25 F F2(wor)2.905 E(d)-.37 +E F0 5.405(.T)C .404(he return status is 0 unless an in)-5.405 F -.25 +(va)-.4 G .404(lid option is encountered,).25 F 1.069(one of the)144 +429.6 R F2(names)3.929 E F0 1.069(is not a v)3.839 F 1.069(alid shell v) +-.25 F 1.069(ariable name, or)-.25 F F13.569 E F0 1.069 +(is supplied with a)3.569 F F2(name)3.929 E F0 1.069(that is not a)3.749 +F(function.)144 441.6 Q F1 -.18(re)108 458.4 S(tur).18 E(n)-.15 E F0([) +2.5 E F2(n)A F0(])A .587(Causes a function to e)144 470.4 R .587 +(xit with the return v)-.15 F .587(alue speci\214ed by)-.25 F F2(n)3.087 +E F0 5.587(.I).24 G(f)-5.587 E F2(n)3.447 E F0 .586 +(is omitted, the return status is)3.327 F 1.335 +(that of the last command e)144 482.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 494.4 S .794(cution of a script by the).15 F F1(.)3.294 E F0(\() +5.794 E F1(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 .794 +(cuting that script).15 F .245(and return either)144 506.4 R F2(n)3.105 +E F0 .246(or the e)2.985 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 .246 +(xit sta-)-.15 F .082(tus of the script.)144 518.4 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 F1(.)2.582 E F0 2.581(,t).833 G .081 +(he return sta-)-2.581 F 2.305(tus is f)144 530.4 R 4.805(alse. An)-.1 F +4.805(yc)-.15 G 2.305(ommand associated with the)-4.805 F F1(RETURN) +4.805 E F0 2.306(trap is e)4.806 F -.15(xe)-.15 G 2.306(cuted before e) +.15 F -.15(xe)-.15 G(cution).15 E(resumes after the function or script.) +144 542.4 Q F1(set)108 559.2 Q F0([)2.5 E F1(\255\255abefhkmnptuvxBCHP)A +F0 2.5(][)C F1-2.5 E F2(option)2.5 E F0 2.5(][)C F2(ar)-2.5 E(g) +-.37 E F0(...])2.5 E -.4(Wi)144 571.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 583.2 +R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .784 +(riables cannot be).25 F 2.947(reset. In)144 595.2 R F2 .447(posix mode) +2.947 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.53 +(locale. When)144 607.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 .202 +(after the options are processed are treated as v)144 619.2 R .202 +(alues for the positional parameters and are assigned,)-.25 F(in order) +144 631.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 643.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 655.2 Q(vironment of subsequent commands.) +-.4 E F1144 667.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 679.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 691.2 Q F0 +1.693(Exit immediately if a)29.86 F F2 1.693(simple command)4.193 F F0 +(\(see)4.193 E F3 1.693(SHELL GRAMMAR)4.193 F F0(abo)3.943 E -.15(ve) +-.15 G 4.194(\)e).15 G 1.694(xits with a)-4.344 F .012(non-zero status.) +184 703.2 R .012(The shell does not e)5.012 F .011 +(xit if the command that f)-.15 F .011(ails is part of the command)-.1 F +.624(list immediately follo)184 715.2 R .624(wing a)-.25 F F1(while) +3.124 E F0(or)3.124 E F1(until)3.124 E F0 -.1(ke)3.124 G(yw)-.05 E .624 +(ord, part of the test in an)-.1 F F2(if)3.134 E F0(statement,)5.084 E +.426(part of a)184 727.2 R F1(&&)2.926 E F0(or)2.926 E/F5 10/Symbol SF +2.926 E F0 .426(list, or if the command')2.926 F 2.926(sr)-.55 G +.426(eturn v)-2.926 F .426(alue is being in)-.25 F -.15(ve)-.4 G .425 +(rted via).15 F F1(!)2.925 E F0 5.425(.A)C(trap)-2.5 E(GNU Bash-3.2)72 +768 Q(2006 Jan 26)149.845 E(55)199.835 E 0 Cg EP +%%Page: 56 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(on)184 84 Q/F1 10/Times-Bold@0 SF(ERR)2.5 E F0 2.5(,i)C 2.5(fs) +-2.5 G(et, is e)-2.5 E -.15(xe)-.15 G(cuted before the shell e).15 E +(xits.)-.15 E F1144 96 Q F0(Disable pathname e)30.97 E(xpansion.) +-.15 E F1144 108 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 120 Q(ault.)-.1 E F1 +144 132 Q F0 .514(All ar)28.74 F .514 +(guments in the form of assignment statements are placed in the en)-.18 +F .513(vironment for a)-.4 F +(command, not just those that precede the command name.)184 144 Q F1 +144 156 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 .637 +(on systems that support it \(see)184 168 R/F2 9/Times-Bold@0 SF .636 +(JOB CONTR)3.136 F(OL)-.27 E F0(abo)2.886 E -.15(ve)-.15 G 3.136 +(\). Background).15 F .636(processes run in a)3.136 F .641 +(separate process group and a line containing their e)184 180 R .642 +(xit status is printed upon their com-)-.15 F(pletion.)184 192 Q F1 +144 204 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 +216 Q(This is ignored by interacti)5 E .3 -.15(ve s)-.25 H(hells.).15 E +F1144 228 Q/F3 10/Times-Italic@0 SF(option\255name)2.5 E F0(The) +184 240 Q F3(option\255name)2.5 E F0(can be one of the follo)2.5 E +(wing:)-.25 E F1(allexport)184 252 Q F0(Same as)224 264 Q F12.5 E +F0(.)A F1(braceexpand)184 276 Q F0(Same as)224 288 Q F12.5 E F0(.) +A F1(emacs)184 300 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 312 R -.15(ve)-.25 G 3.45(,u).15 G .95 +(nless the shell is started with the)-3.45 F F1(\255\255noediting)3.45 E +F0(option.)224 324 Q F1(errtrace)184 336 Q F0(Same as)5.03 E F12.5 +E F0(.)A F1(functrace)184 348 Q F0(Same as)224 360 Q F12.5 E F0(.) +A F1(err)184 372 Q(exit)-.18 E F0(Same as)11.31 E F12.5 E F0(.)A +F1(hashall)184 384 Q F0(Same as)9.43 E F12.5 E F0(.)A F1 +(histexpand)184 396 Q F0(Same as)224 408 Q F12.5 E F0(.)A F1 +(history)184 420 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 F2(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 432 Q(ault in interacti)-.1 E +.3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184 444 Q(eeof)-.18 E F0 1.657 +(The ef)224 456 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 468 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 480 S(yw).1 E(ord)-.1 +E F0(Same as)224 492 Q F12.5 E F0(.)A F1(monitor)184 504 Q F0 +(Same as)5.56 E F12.5 E F0(.)A F1(noclob)184 516 Q(ber)-.1 E F0 +(Same as)224 528 Q F12.5 E F0(.)A F1(noexec)184 540 Q F0(Same as) +11.12 E F12.5 E F0(.)A F1(noglob)184 552 Q F0(Same as)11.1 E F1 +2.5 E F0(.)A F1(nolog)5 E F0(Currently ignored.)2.5 E F1(notify) +184 564 Q F0(Same as)15 E F12.5 E F0(.)A F1(nounset)184 576 Q F0 +(Same as)6.66 E F12.5 E F0(.)A F1(onecmd)184 588 Q F0(Same as)6.67 +E F12.5 E F0(.)A F1(ph)184 600 Q(ysical)-.15 E F0(Same as)5.14 E +F12.5 E F0(.)A F1(pipefail)184 612 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 624 +R 1.136 +(xit with a non-zero status, or zero if all commands in the pipeline) +-.15 F -.15(ex)224 636 S(it successfully).15 E 5(.T)-.65 G +(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 648 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(POSIX standard to match the standard \()224 660 Q +F3(posix mode)A F0(\).)A F1(pri)184 672 Q(vileged)-.1 E F0(Same as)224 +684 Q F12.5 E F0(.)A F1 -.1(ve)184 696 S(rbose).1 E F0(Same as) +7.33 E F12.5 E F0(.)A F1(vi)184 708 Q F0 +(Use a vi-style command line editing interf)32.22 E(ace.)-.1 E +(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(56)199.835 E 0 Cg EP +%%Page: 57 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(xtrace)184 84 Q F0(Same as)13.35 E F1 +2.5 E F0(.)A(If)184 102 Q F13.053 E F0 .553(is supplied with no) +3.053 F/F2 10/Times-Italic@0 SF(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 114 Q F0 1.071(is supplied with no)3.571 F F2 +(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 126 Q F1 +144 138 Q F0 -.45(Tu)28.74 G 1.072(rn on).45 F F2(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 +/F3 9/Times-Bold@0 SF($ENV)3.572 E F0(and)3.322 E F3($B)3.572 E(ASH_ENV) +-.27 E F0 1.071(\214les are not pro-)3.322 F 1.705 +(cessed, shell functions are not inherited from the en)184 150 R 1.705 +(vironment, and the)-.4 F F3(SHELLOPTS)4.206 E F0 -.25(va)184 162 S .019 +(riable, if it appears in the en).25 F .019(vironment, is ignored.)-.4 F +.018(If the shell is started with the ef)5.019 F(fec-)-.25 E(ti)184 174 +Q 1.158 -.15(ve u)-.25 H .859 +(ser \(group\) id not equal to the real user \(group\) id, and the).15 F +F13.359 E F0 .859(option is not sup-)3.359 F .294 +(plied, these actions are tak)184 186 R .293(en and the ef)-.1 F(fecti) +-.25 E .593 -.15(ve u)-.25 H .293(ser id is set to the real user id.).15 +F .293(If the)5.293 F F12.793 E F0 1.195 +(option is supplied at startup, the ef)184 198 R(fecti)-.25 E 1.495 -.15 +(ve u)-.25 H 1.195(ser id is not reset.).15 F -.45(Tu)6.196 G 1.196 +(rning this option of).45 F(f)-.25 E(causes the ef)184 210 Q(fecti)-.25 +E .3 -.15(ve u)-.25 H +(ser and group ids to be set to the real user and group ids.).15 E F1 +144 222 Q F0(Exit after reading and e)30.97 E -.15(xe)-.15 G +(cuting one command.).15 E F1144 234 Q F0 -.35(Tr)28.74 G .445 +(eat unset v).35 F .444 +(ariables as an error when performing parameter e)-.25 F 2.944 +(xpansion. If)-.15 F -.15(ex)2.944 G .444(pansion is).15 F .519 +(attempted on an unset v)184 246 R .519 +(ariable, the shell prints an error message, and, if not interacti)-.25 +F -.15(ve)-.25 G(,).15 E -.15(ex)184 258 S(its with a non-zero status.) +.15 E F1144 270 Q F0(Print shell input lines as the)29.3 E 2.5(ya) +-.15 G(re read.)-2.5 E F1144 282 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 294 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 F3(PS4)3.736 E/F4 9/Times-Roman@0 +SF(,)A F0(follo)3.486 E 1.236(wed by the com-)-.25 F(mand and its e)184 +306 Q(xpanded ar)-.15 E(guments or associated w)-.18 E(ord list.)-.1 E +F1144 318 Q F0 2.579(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 330 Q +(ault.)-.1 E F1144 342 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 +(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 +3.054(tors. This)184 354 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 366 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 +144 378 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 390 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 402 Q F1 +144 414 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 426 Q -.15 +(ve)-.25 G(.).15 E F1144 438 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 450 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 462 R(def)2.686 +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 474 Q(.)-.65 E F1144 +486 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 498 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 510 Q F0 +(traps are normally not inherited in such cases.)2.5 E F1144 522 Q +F0 .4(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 534 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 +546 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 558 R +F13.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 570 Q .425(The options are of)144 +586.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 598.8 R 2.677(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 610.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 622.8 Q F1(shift)108 639.6 Q F0([)2.5 E F2(n)A F0 +(])A .428(The positional parameters from)144 651.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 663.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 675.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 687.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 699.6 Q(GNU Bash-3.2)72 768 Q +(2006 Jan 26)149.845 E(57)199.835 E 0 Cg EP +%%Page: 58 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(shopt)108 84 Q F0([)2.5 E F1(\255pqsu)A F0 +2.5(][)C F1-2.5 E F0 2.5(][)C/F2 10/Times-Italic@0 SF(optname)-2.5 +E F0(...])2.5 E -.8(To)144 96 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 F12.722 +E F0 .721(option, a list of all settable options is displayed, with an \ +indication of whether or not each is set.)144 108 R(The)144 120 Q F1 +2.827 E F0 .327(option causes output to be displayed in a form th\ +at may be reused as input.)2.827 F .328(Other options)5.328 F(ha)144 132 +Q .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 +144 Q F0(Enable \(set\) each)26.41 E F2(optname)2.5 E F0(.)A F1144 +156 Q F0(Disable \(unset\) each)24.74 E F2(optname)2.5 E F0(.)A F1 +144 168 Q F0 .003(Suppresses normal output \(quiet mode\); the return s\ +tatus indicates whether the)24.74 F F2(optname)2.503 E F0(is)2.503 E +.255(set or unset.)180 180 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 192 Q F2(optnames)2.5 E F0 +(are enabled; non-zero otherwise.)2.5 E F1144 204 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 220.8 R F1 +2.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 232.8 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 244.8 Q(ault.) +-.1 E 1.544(The return status when listing options is zero if all)144 +261.6 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 273.6 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .696 +(alid shell)-.25 F(option.)144 285.6 Q(The list of)144 302.4 Q F1(shopt) +2.5 E F0(options is:)2.5 E F1(cdable_v)144 320.4 Q(ars)-.1 E F0 .156 +(If set, an ar)184 332.4 R .156(gument to the)-.18 F F1(cd)2.656 E F0 +-.2(bu)2.656 G .155 +(iltin command that is not a directory is assumed to be the).2 F +(name of a v)184 344.4 Q(ariable whose v)-.25 E +(alue is the directory to change to.)-.25 E F1(cdspell)144 356.4 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.988 +(corrected. The)184 368.4 R 1.488(errors check)3.988 F 1.487 +(ed for are transposed characters, a missing character)-.1 F 3.987(,a) +-.4 G(nd)-3.987 E .552(one character too man)184 380.4 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 392.4 Q +(This option is only used by interacti)5 E .3 -.15(ve s)-.25 H(hells.) +.15 E F1(checkhash)144 404.4 Q F0 2.08(If set,)184 416.4 R F1(bash)4.58 +E F0 2.079(checks that a command found in the hash table e)4.58 F 2.079 +(xists before trying to)-.15 F -.15(exe)184 428.4 S(cute it.).15 E +(If a hashed command no longer e)5 E +(xists, a normal path search is performed.)-.15 E F1(checkwinsize)144 +440.4 Q F0 .796(If set,)184 452.4 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 464.4 S(lues of).25 E/F3 9/Times-Bold@0 +SF(LINES)2.5 E F0(and)2.25 E F3(COLUMNS)2.5 E/F4 9/Times-Roman@0 SF(.)A +F1(cmdhist)144 476.4 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 +488.4 Q 5(.T)-.65 G(his allo)-5 E +(ws easy re-editing of multi-line commands.)-.25 E F1(dotglob)144 500.4 +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 512.4 Q F0 1.387 +(If set, a non-interacti)7.79 F 1.687 -.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.386(cute the \214le speci\214ed as an).15 F(ar)184 524.4 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 536.4 Q +F0 .716(If set, aliases are e)184 548.4 R .717(xpanded as described abo) +-.15 F 1.017 -.15(ve u)-.15 H(nder).15 E F3(ALIASES)3.217 E F4(.)A F0 +.717(This option is enabled)5.217 F(by def)184 560.4 Q +(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(extdeb)144 +572.4 Q(ug)-.2 E F0(If set, beha)184 584.4 Q +(vior intended for use by deb)-.2 E(uggers is enabled:)-.2 E F1(1.)184 +596.4 Q F0(The)28.5 E F14.251 E F0 1.751(option to the)4.251 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 608.4 +Q(gument.)-.18 E F1(2.)184 620.4 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 +632.4 Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 644.4 Q F0 .841 +(If the command run by the)28.5 F F1(DEB)3.341 E(UG)-.1 E F0 .841 +(trap returns a v)3.341 F .84(alue of 2, and the shell is)-.25 F -.15 +(exe)220 656.4 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 668.4 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 26(4. B)184 +680.4 R(ASH_ARGC)-.3 E F0(and)3.776 E F1 -.3(BA)3.776 G(SH_ARGV).3 E F0 +1.275(are updated as described in their descrip-)3.776 F(tions abo)220 +692.4 Q -.15(ve)-.15 G(.).15 E F1(5.)184 704.4 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 +716.4 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F2 +(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(GNU Bash-3.2)72 768 Q +(2006 Jan 26)149.845 E(58)199.835 E 0 Cg EP +%%Page: 59 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(6.)184 84 Q F0 .805 +(Error tracing is enabled:)28.5 F .804 +(command substitution, shell functions, and subshells)5.805 F(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 +/Times-Italic@0 SF(command)2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1 +(ERR)2.5 E(OR)-.3 E F0(trap.)2.5 E F1(extglob)144 108 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 120 Q +F0(are enabled.)2.5 E F1(extquote)144 132 Q F0 2.473(If set,)184 144 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 156 Q +(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 168 Q F0 +1.424(If set, patterns which f)7.77 F 1.425 +(ail to match \214lenames during pathname e)-.1 F 1.425 +(xpansion result in an)-.15 F -.15(ex)184 180 S(pansion error).15 E(.) +-.55 E F1 -.25(fo)144 192 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 +.585(If set, the suf)184 204 R<8c78>-.25 E .585(es speci\214ed by the) +-.15 F F1(FIGNORE)3.085 E F0 .585(shell v)3.085 F .585(ariable cause w) +-.25 F .585(ords to be ignored)-.1 F .32(when performing w)184 216 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 3.33 +(pletions. See)184 228 R/F3 9/Times-Bold@0 SF .83(SHELL V)3.33 F +(ARIABLES)-1.215 E F0(abo)3.08 E 1.13 -.15(ve f)-.15 H .829 +(or a description of).15 F F1(FIGNORE)3.329 E F0 5.829(.T)C .829 +(his option)-5.829 F(is enabled by def)184 240 Q(ault.)-.1 E F1 +(gnu_errfmt)144 252 Q F0(If set, shell error messages are written in th\ +e standard GNU error message format.)184 264 Q F1(histappend)144 276 Q +F0 .383 +(If set, the history list is appended to the \214le named by the v)184 +288 R .384(alue of the)-.25 F F1(HISTFILE)2.884 E F0 -.25(va)2.884 G +(ri-).25 E(able when the shell e)184 300 Q(xits, rather than o)-.15 E +-.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 312 Q(eedit)-.18 +E F0 .576(If set, and)184 324 R F1 -.18(re)3.076 G(adline).18 E F0 .575 +(is being used, a user is gi)3.076 F -.15(ve)-.25 G 3.075(nt).15 G .575 +(he opportunity to re-edit a f)-3.075 F .575(ailed his-)-.1 F +(tory substitution.)184 336 Q F1(histv)144 348 Q(erify)-.1 E F0 .402 +(If set, and)184 360 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 .662(passed to the shell parser)184 372 R 5.662(.I)-.55 G .661 +(nstead, the resulting line is loaded into the)-5.662 F F1 -.18(re)3.161 +G(adline).18 E F0(editing)3.161 E -.2(bu)184 384 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 396 Q F0 1.181(If set, and)184 408 R F1 -.18(re)3.681 +G(adline).18 E F0 1.181(is being used,)3.681 F F1(bash)3.682 E F0 1.182 +(will attempt to perform hostname completion)3.682 F 1.381(when a w)184 +420 R 1.381(ord containing a)-.1 F F1(@)3.881 E F0 1.381 +(is being completed \(see)3.881 F F1(Completing)3.88 E F0(under)3.88 E +F3(READLINE)3.88 E F0(abo)184 432 Q -.15(ve)-.15 G 2.5(\). This).15 F +(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 444 Q F0(If set,) +184 456 Q F1(bash)2.5 E F0(will send)2.5 E F3(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 468 Q -.1(ve)-.1 G(_comments).1 E F0 +.33(If set, allo)184 480 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 492 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 .967(option is)3.467 F(enabled by def)184 504 Q +(ault.)-.1 E F1(lithist)144 516 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 528 Q +(wlines rather than using semicolon separators where possible.)-.25 E F1 +(login_shell)144 540 Q F0 .486 +(The shell sets this option if it is started as a login shell \(see)184 +552 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 564 S(lue may not be changed.).25 +E F1(mailwar)144 576 Q(n)-.15 E F0 .814(If set, and a \214le that)184 +588 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 600 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 612 +Q F0 .146(If set, and)184 624 R F1 -.18(re)2.646 G(adline).18 E F0 .146 +(is being used,)2.646 F F1(bash)2.646 E F0 .145 +(will not attempt to search the)2.646 F F1 -.74(PA)2.645 G(TH)-.21 E F0 +.145(for possible)2.645 F +(completions when completion is attempted on an empty line.)184 636 Q F1 +(nocaseglob)144 648 Q F0 .436(If set,)184 660 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 672 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 684 Q F0 1.194(If set,)184 +696 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 708 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(GNU Bash-3.2)72 768 Q +(2006 Jan 26)149.845 E(59)199.835 E 0 Cg EP +%%Page: 60 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(nullglob)144 84 Q F0 .854(If set,)184 96 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 108 S(pand to a null string, rather than themselv) +.15 E(es.)-.15 E F1(pr)144 120 Q(ogcomp)-.18 E F0 .677 +(If set, the programmable completion f)184 132 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 144 Q +(This option is enabled by def)5 E(ault.)-.1 E F1(pr)144 156 Q(omptv) +-.18 E(ars)-.1 E F0 1.447(If set, prompt strings under)184 168 R 1.448 +(go parameter e)-.18 F 1.448(xpansion, command substitution, arithmetic) +-.15 F -.15(ex)184 180 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 192 Q(ault.)-.1 E +F1 -.18(re)144 204 S(stricted_shell).18 E F0 1.069 +(The shell sets this option if it is started in restricted mode \(see) +184 216 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 228 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 240 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 252 Q(erbose)-.1 E F0 .501(If set, the)184 264 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 276 Q F1(sour) +144 288 Q(cepath)-.18 E F0 .771(If set, the)184 300 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 312 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E(ault.) +-.1 E F1(xpg_echo)144 324 Q F0(If set, the)184 336 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 348 Q F0([)2.5 E F1A F0(])A .492 +(Suspend the e)144 360 R -.15(xe)-.15 G .492 +(cution of this shell until it recei).15 F -.15(ve)-.25 G 2.992(sa).15 G +F2(SIGCONT).001 E F0 2.993(signal. The)2.743 F F12.993 E F0 .493 +(option says not to)2.993 F .759 +(complain if this is a login shell; just suspend an)144 372 R(yw)-.15 E +(ay)-.1 E 5.758(.T)-.65 G .758 +(he return status is 0 unless the shell is a)-5.758 F(login shell and) +144 384 Q F12.5 E F0 +(is not supplied, or if job control is not enabled.)2.5 E F1(test)108 +396 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([)108 408 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 420 R 3.688 +(gument. Expressions)-.18 F 1.187(are composed of the primaries)3.688 F +1.889(described abo)144 432 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 444 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 462 R .785 +(wing operators, listed in decreasing order of prece-)-.25 F(dence.)144 +474 Q F1(!)144 486 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 498 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 510 Q F3 -.2(ex) +144 522 S(pr1).2 E F02.5 E F1(a)A F3 -.2(ex)2.5 G(pr2).2 E F0 -.35 +(Tr)180 534 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 546 S(pr1).2 E +F02.5 E F1(o)A F3 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 558 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 574.8 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 592.8 S -.18(rg)-2.5 G(uments).18 E(The e) +180 604.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 616.8 S -.18 +(rg)-2.5 G(ument).18 E(The e)180 628.8 Q +(xpression is true if and only if the ar)-.15 E(gument is not null.)-.18 +E 2.5(2a)144 640.8 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) +180 652.8 R .37(gument is)-.18 F F1(!)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 .379(If the \214rst ar)180 664.8 R .38 +(gument is one of the unary conditional operators listed abo)-.18 F .68 +-.15(ve u)-.15 H(nder).15 E F2(CONDI-)2.88 E(TION)180 676.8 Q .553 +(AL EXPRESSIONS)-.18 F F4(,)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 688.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 700.8 S -.18(rg)-2.5 G +(uments).18 E .023(If the second ar)180 712.8 R .023 +(gument is one of the binary conditional operators listed abo)-.18 F +.324 -.15(ve u)-.15 H(nder).15 E F2(CON-)2.524 E(DITION)180 724.8 Q +1.478(AL EXPRESSIONS)-.18 F F4(,)A F0 1.477(the result of the e)3.727 F +1.477(xpression is the result of the binary test)-.15 F(GNU Bash-3.2)72 +768 Q(2006 Jan 26)149.845 E(60)199.835 E 0 Cg EP +%%Page: 61 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 .397(using the \214rst and third ar)180 84 R .397 +(guments as operands.)-.18 F .398(If the \214rst ar)5.398 F .398 +(gument is)-.18 F/F1 10/Times-Bold@0 SF(!)2.898 E F0 2.898(,t)C .398 +(he v)-2.898 F .398(alue is the)-.25 F(ne)180 96 Q -.05(ga)-.15 G .263 +(tion of the tw).05 F(o-ar)-.1 E .262 +(gument test using the second and third ar)-.18 F 2.762(guments. If)-.18 +F .262(the \214rst ar)2.762 F(gu-)-.18 E .205(ment is e)180 108 R +(xactly)-.15 E F1(\()2.705 E F0 .205(and the third ar)2.705 F .205 +(gument is e)-.18 F(xactly)-.15 E F1(\))2.705 E F0 2.705(,t)C .206 +(he result is the one-ar)-2.705 F .206(gument test of)-.18 F 1.171 +(the second ar)180 120 R 3.671(gument. Otherwise,)-.18 F 1.171(the e) +3.671 F 1.171(xpression is f)-.15 F 3.671(alse. The)-.1 F F13.671 +E F0(and)3.671 E F13.67 E F0 1.17(operators are)3.67 F +(considered binary operators in this case.)180 132 Q 2.5(4a)144 144 S +-.18(rg)-2.5 G(uments).18 E .384(If the \214rst ar)180 156 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 +168 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 180 Q -.15(ve) +-.15 G(.).15 E 2.5(5o)144 192 S 2.5(rm)-2.5 G(ore ar)-2.5 E(guments)-.18 +E 1.635(The e)180 204 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 216 Q -.15(ve)-.15 G(.).15 E F1(times)108 232.8 Q F0 1.229(Pri\ +nt the accumulated user and system times for the shell and for processe\ +s run from the shell.)13.23 F(The return status is 0.)144 244.8 Q F1 +(trap)108 261.6 Q F0([)2.5 E F1(\255lp)A F0 2.5(][)C([)-2.5 E/F2 10 +/Times-Italic@0 SF(ar)A(g)-.37 E F0(])A F2(sigspec)2.5 E F0(...])2.5 E +.702(The command)144 273.6 R F2(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 F2(sigspec)3.203 E F0 5.703(.I).31 G(f)-5.703 E F2 +(ar)3.533 E(g)-.37 E F0(is)3.423 E .609(absent \(and there is a single) +144 285.6 R F2(sigspec)3.108 E F0 3.108(\)o)C(r)-3.108 E F13.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 297.6 R .658(alue it had upon entrance to the shell\).) +-.25 F(If)5.658 E F2(ar)3.488 E(g)-.37 E F0 .659 +(is the null string the signal speci\214ed by each)3.378 F F2(sigspec) +144.34 309.6 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 F2(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 321.6 R +F2(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 333.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 +(prints the list of commands associated with each)3.36 F 2.83 +(signal. The)144 345.6 R F12.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 357.6 R F2(sigspec)4.651 E F0 1.811 +(is either a signal name de\214ned in <)4.621 F F2(signal.h)A F0 1.81 +(>, or a signal number)B 6.81(.S)-.55 G(ignal)-6.81 E .745 +(names are case insensiti)144 369.6 R 1.045 -.15(ve a)-.25 H .745 +(nd the SIG pre\214x is optional.).15 F .745(If a)5.745 F F2(sigspec) +3.585 E F0(is)3.555 E/F3 9/Times-Bold@0 SF(EXIT)3.245 E F0 .745 +(\(0\) the command)2.995 F F2(ar)144.33 381.6 Q(g)-.37 E F0 1.63(is e) +4.35 F -.15(xe)-.15 G 1.63(cuted on e).15 F 1.63(xit from the shell.) +-.15 F 1.63(If a)6.63 F F2(sigspec)4.47 E F0(is)4.44 E F3(DEB)4.13 E(UG) +-.09 E/F4 9/Times-Roman@0 SF(,)A F0 1.629(the command)3.88 F F2(ar)4.459 +E(g)-.37 E F0 1.629(is e)4.349 F -.15(xe)-.15 G(cuted).15 E 1.206 +(before e)144 393.6 R -.15(ve)-.25 G(ry).15 E F2 1.206(simple command) +3.706 F F0(,)A F2(for)3.706 E F0(command,)3.706 E F2(case)3.706 E F0 +(command,)3.706 E F2(select)3.707 E F0 1.207(command, e)3.707 F -.15(ve) +-.25 G 1.207(ry arithmetic).15 F F2(for)144 405.6 Q F0 .412 +(command, and before the \214rst command e)2.913 F -.15(xe)-.15 G .412 +(cutes in a shell function \(see).15 F F3 .412(SHELL GRAMMAR)2.912 F F0 +(abo)144 417.6 Q -.15(ve)-.15 G 2.665(\). Refer).15 F .166 +(to the description of the)2.665 F F1(extdeb)2.666 E(ug)-.2 E F0 .166 +(option to the)2.666 F F1(shopt)2.666 E F0 -.2(bu)2.666 G .166 +(iltin for details of its ef).2 F(fect)-.25 E .509(on the)144 429.6 R F1 +(DEB)3.009 E(UG)-.1 E F0 3.009(trap. If)3.009 F(a)3.009 E F2(sigspec) +3.348 E F0(is)3.318 E F3(ERR)3.008 E F4(,)A F0 .508(the command)2.758 F +F2(ar)3.338 E(g)-.37 E F0 .508(is e)3.228 F -.15(xe)-.15 G .508 +(cuted whene).15 F -.15(ve)-.25 G 3.008(ras).15 G .508(imple com-)-3.008 +F 2.506(mand has a non\255zero e)144 441.6 R 2.506 +(xit status, subject to the follo)-.15 F 2.506(wing conditions.)-.25 F +(The)7.506 E F3(ERR)5.006 E F0 2.506(trap is not)4.756 F -.15(exe)144 +453.6 S .105(cuted if the f).15 F .105 +(ailed command is part of the command list immediately follo)-.1 F .105 +(wing a)-.25 F F1(while)2.605 E F0(or)2.605 E F1(until)2.605 E F0 -.1 +(ke)144 465.6 S(yw)-.05 E .936(ord, part of the test in an)-.1 F F2(if) +3.446 E F0 .936(statement, part of a)5.396 F F1(&&)3.436 E F0(or)3.436 E +/F5 10/Symbol SF3.436 E F0 .936(list, or if the command')3.436 F +3.436(sr)-.55 G(eturn)-3.436 E -.25(va)144 477.6 S 1.095 +(lue is being in).25 F -.15(ve)-.4 G 1.094(rted via).15 F F1(!)3.594 E +F0 6.094(.T)C 1.094(hese are the same conditions obe)-6.094 F 1.094 +(yed by the)-.15 F F1(err)3.594 E(exit)-.18 E F0 3.594(option. If)3.594 +F(a)3.594 E F2(sigspec)144.34 489.6 Q F0(is)3.348 E F3(RETURN)3.038 E F4 +(,)A F0 .538(the command)2.788 F F2(ar)3.368 E(g)-.37 E F0 .538(is e) +3.258 F -.15(xe)-.15 G .538 +(cuted each time a shell function or a script e).15 F -.15(xe)-.15 G +(cuted).15 E .506(with the)144 501.6 R F1(.)3.006 E F0(or)3.006 E F1 +(sour)3.006 E(ce)-.18 E F0 -.2(bu)3.006 G .506(iltins \214nishes e).2 F +-.15(xe)-.15 G 3.006(cuting. Signals).15 F .505 +(ignored upon entry to the shell cannot be)3.006 F .155 +(trapped or reset.)144 513.6 R -.35(Tr)5.155 G .155 +(apped signals are reset to their original v).35 F .156 +(alues in a child process when it is cre-)-.25 F 2.5(ated. The)144 525.6 +R(return status is f)2.5 E(alse if an)-.1 E(y)-.15 E F2(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 F1(type)108 542.4 Q F0([)2.5 E F1(\255aftpP)A F0(]) +A F2(name)2.5 E F0([)2.5 E F2(name)A F0(...])2.5 E -.4(Wi)144 554.4 S +.174(th no options, indicate ho).4 F 2.674(we)-.25 G(ach)-2.674 E F2 +(name)3.034 E F0 -.1(wo)2.854 G .173 +(uld be interpreted if used as a command name.).1 F .173(If the)5.173 F +F1144 566.4 Q F0 .842(option is used,)3.342 F F1(type)3.342 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.343 G(iltin).2 E F0 3.343(,o).24 G(r)-3.343 E F2 +(\214le)5.253 E F0(if)3.523 E F2(name)144.36 578.4 Q F0 .087 +(is an alias, shell reserv)2.767 F .087(ed w)-.15 F .087 +(ord, function, b)-.1 F .086(uiltin, or disk \214le, respecti)-.2 F -.15 +(ve)-.25 G(ly).15 E 5.086(.I)-.65 G 2.586(ft)-5.086 G(he)-2.586 E F2 +(name)2.946 E F0 .086(is not)2.766 F .118 +(found, then nothing is printed, and an e)144 590.4 R .118 +(xit status of f)-.15 F .118(alse is returned.)-.1 F .119(If the)5.119 F +F12.619 E F0 .119(option is used,)2.619 F F1(type)2.619 E F0 .855 +(either returns the name of the disk \214le that w)144 602.4 R .855 +(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F2(name)3.715 E F0 +.855(were speci\214ed as a com-)3.535 F .64(mand name, or nothing if)144 +614.4 R/F6 10/Courier@0 SF .64(type -t name)3.14 F F0 -.1(wo)3.14 G .641 +(uld not return).1 F F2(\214le)3.141 E F0 5.641(.T).18 G(he)-5.641 E F1 +3.141 E F0 .641(option forces a)3.141 F F3 -.666(PA)3.141 G(TH) +-.189 E F0 .113(search for each)144 626.4 R F2(name)2.613 E F0 2.613(,e) +C -.15(ve)-2.863 G 2.613(ni).15 G(f)-2.613 E F6 .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(fa)-5.113 G .112(command is hashed,)-.001 F F1 +2.612 E F0(and)144 638.4 Q F12.944 E F0 .444(print the hashed v) +2.944 F .444(alue, not necessarily the \214le that appears \214rst in) +-.25 F F3 -.666(PA)2.945 G(TH)-.189 E F4(.)A F0 .445(If the)4.945 F F1 +2.945 E F0(option)2.945 E .265(is used,)144 650.4 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 .426(and functions, if and only if the) +144 662.4 R F12.926 E F0 .426(option is not also used.)2.926 F +.427(The table of hashed commands is not)5.426 F .549 +(consulted when using)144 674.4 R F13.049 E F0 5.549(.T)C(he) +-5.549 E F13.049 E F0 .548 +(option suppresses shell function lookup, as with the)3.049 F F1 +(command)3.048 E F0 -.2(bu)144 686.4 S(iltin.).2 E F1(type)5 E F0 +(returns true if an)2.5 E 2.5(yo)-.15 G 2.5(ft)-2.5 G(he ar)-2.5 E +(guments are found, f)-.18 E(alse if none are found.)-.1 E F1(ulimit)108 +703.2 Q F0([)2.5 E F1(\255SHacde\214lmnpqrstuvx)A F0([)2.5 E F2(limit)A +F0(]])A(Pro)144 715.2 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 +.944(that allo)144 727.2 R 3.444(ws)-.25 G .944(uch control.)-3.444 F +(The)5.944 E F13.444 E F0(and)3.444 E F13.444 E F0 .943 +(options specify that the hard or soft limit is set for the)3.444 F +(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(61)199.835 E 0 Cg EP +%%Page: 62 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(gi)144 84 Q -.15(ve)-.25 G 2.737(nr).15 G 2.737(esource. A)-2.737 +F .238(hard limit cannot be increased once it is set; a soft limit may \ +be increased up to)2.738 F .356(the v)144 96 R .356 +(alue of the hard limit.)-.25 F .356(If neither)5.356 F/F1 10 +/Times-Bold@0 SF2.856 E F0(nor)2.856 E F12.856 E F0 .355 +(is speci\214ed, both the soft and hard limits are set.)2.855 F .402 +(The v)144 108 R .402(alue of)-.25 F/F2 10/Times-Italic@0 SF(limit)2.992 +E F0 .402(can be a number in the unit speci\214ed for the resource or o\ +ne of the special v)3.582 F(al-)-.25 E(ues)144 120 Q F1(hard)3.019 E F0 +(,)A F1(soft)3.019 E F0 3.019(,o)C(r)-3.019 E F1(unlimited)3.019 E F0 +3.018(,w)C .518 +(hich stand for the current hard limit, the current soft limit, and no) +-3.018 F .353(limit, respecti)144 132 R -.15(ve)-.25 G(ly).15 E 5.353 +(.I)-.65 G(f)-5.353 E F2(limit)2.943 E F0 .353 +(is omitted, the current v)3.533 F .354 +(alue of the soft limit of the resource is printed,)-.25 F .37 +(unless the)144 144 R F12.87 E F0 .37(option is gi)2.87 F -.15(ve) +-.25 G 2.87(n. When).15 F .37 +(more than one resource is speci\214ed, the limit name and unit)2.87 F +(are printed before the v)144 156 Q 2.5(alue. Other)-.25 F +(options are interpreted as follo)2.5 E(ws:)-.25 E F1144 168 Q F0 +(All current limits are reported)25.3 E F1144 180 Q F0 +(The maximum size of core \214les created)25.86 E F1144 192 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 204 Q F0 +(The maximum scheduling priority \("nice"\))25.86 E F1144 216 Q F0 +(The maximum size of \214les created by the shell)26.97 E F1144 +228 Q F0(The maximum number of pending signals)27.52 E F1144 240 Q +F0(The maximum size that may be lock)27.52 E(ed into memory)-.1 E F1 +144 252 Q F0(The maximum resident set size)21.97 E F1144 264 +Q F0 .791(The maximum number of open \214le descriptors \(most systems \ +do not allo)24.74 F 3.291(wt)-.25 G .791(his v)-3.291 F .791(alue to) +-.25 F(be set\))180 276 Q F1144 288 Q F0 +(The pipe size in 512-byte blocks \(this may not be set\))24.74 E F1 +144 300 Q F0(The maximum number of bytes in POSIX message queues) +24.74 E F1144 312 Q F0(The maximum real-time scheduling priority) +25.86 E F1144 324 Q F0(The maximum stack size)26.41 E F1144 +336 Q F0(The maximum amount of cpu time in seconds)26.97 E F1144 +348 Q F0(The maximum number of processes a)24.74 E -.25(va)-.2 G +(ilable to a single user).25 E F1144 360 Q F0 +(The maximum amount of virtual memory a)25.3 E -.25(va)-.2 G +(ilable to the shell).25 E F1144 372 Q F0 +(The maximum number of \214le locks)25.3 E(If)144 388.8 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 F1 +2.843 E F0 .343(option is display only\).)2.843 F .343(If no)5.343 F +.175(option is gi)144 400.8 R -.15(ve)-.25 G .175(n, then).15 F F1 +2.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 412.8 +Q F12.698 E F0 2.698(,w)C .198 +(hich is in units of 512-byte blocks, and)-2.698 F F12.698 E F0 +(and)2.698 E F12.697 E F0 2.697(,w)C .197(hich are unscaled v) +-2.697 F 2.697(alues. The)-.25 F .404(return status is 0 unless an in) +144 424.8 R -.25(va)-.4 G .404(lid option or ar).25 F .404 +(gument is supplied, or an error occurs while setting)-.18 F 2.5(an)144 +436.8 S .5 -.25(ew l)-2.5 H(imit.).25 E F1(umask)108 453.6 Q F0([)2.5 E +F1A 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 465.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 477.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 +489.6 Q F2(mode)3.263 E F0 .382(is omitted, the current v)3.063 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 .547 +(printed in symbolic form; the def)144 501.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 F13.047 E F0 .547(option is supplied, and)3.047 F F2 +(mode)144.38 513.6 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 525.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 542.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 554.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 566.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 583.2 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 595.2 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 607.2 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 619.2 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 631.2 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 643.2 Q 4.285(yo)-.15 G(f)-4.285 E/F3 9/Times-Bold@0 +SF(RANDOM)4.285 E/F4 9/Times-Roman@0 SF(,)A F3(SECONDS)4.035 E F4(,)A F3 +(LINENO)4.035 E F4(,)A F3(HISTCMD)4.035 E F4(,)A F3(FUNCN)4.035 E(AME) +-.18 E F4(,)A F3(GR)4.035 E(OUPS)-.27 E F4(,)A F0(or)4.035 E F3(DIRST) +4.284 E -.495(AC)-.81 G(K).495 E F0(are)4.034 E .328(unset, the)144 +655.2 R 2.828(yl)-.15 G .328(ose their special properties, e)-2.828 F +-.15(ve)-.25 G 2.828(ni).15 G 2.828(ft)-2.828 G(he)-2.828 E 2.828(ya) +-.15 G .328(re subsequently reset.)-2.828 F .328(The e)5.328 F .329 +(xit status is true)-.15 F(unless a)144 667.2 Q F2(name)2.86 E F0 +(is readonly)2.68 E(.)-.65 E F1(wait)108 684 Q F0([)2.5 E F2 2.5(n.)C +(..)-2.5 E F0(])A -.8(Wa)144 696 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 708 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 720 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 +(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(62)199.835 E 0 Cg EP +%%Page: 63 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 .456(speci\214es a non-e)144 84 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 96 S +(it status of the last process or job w).15 E(aited for)-.1 E(.)-.55 E +/F1 10.95/Times-Bold@0 SF(RESTRICTED SHELL)72 112.8 Q F0(If)108 124.8 Q +/F2 10/Times-Bold@0 SF(bash)4.397 E F0 1.897(is started with the name) +4.397 F F2(rbash)4.397 E F0 4.397(,o)C 4.397(rt)-4.397 G(he)-4.397 E F2 +4.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 136.8 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 148.8 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E F2 +(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 +165.6 S(hanging directories with)-32.5 E F2(cd)2.5 E F0 32.5<8373>108 +182.4 S(etting or unsetting the v)-32.5 E(alues of)-.25 E F2(SHELL)2.5 E +F0(,)A F2 -.74(PA)2.5 G(TH)-.21 E F0(,)A F2(ENV)2.5 E F0 2.5(,o)C(r)-2.5 +E F2 -.3(BA)2.5 G(SH_ENV).3 E F0 32.5<8373>108 199.2 S +(pecifying command names containing)-32.5 E F2(/)2.5 E F0 32.5<8373>108 +216 S(pecifying a \214le name containing a)-32.5 E F2(/)2.5 E F0 +(as an ar)2.5 E(gument to the)-.18 E F2(.)2.5 E F0 -.2(bu)5 G +(iltin command).2 E 32.5<8353>108 232.8 S .351 +(pecifying a \214lename containing a slash as an ar)-32.5 F .351 +(gument to the)-.18 F F22.851 E F0 .351(option to the)2.851 F F2 +(hash)2.851 E F0 -.2(bu)2.851 G .351(iltin com-).2 F(mand)144 244.8 Q +32.5<8369>108 261.6 S(mporting function de\214nitions from the shell en) +-32.5 E(vironment at startup)-.4 E 32.5<8370>108 278.4 S(arsing the v) +-32.5 E(alue of)-.25 E F2(SHELLOPTS)2.5 E F0(from the shell en)2.5 E +(vironment at startup)-.4 E 32.5<8372>108 295.2 S(edirecting output usi\ +ng the >, >|, <>, >&, &>, and >> redirection operators)-32.5 E 32.5 +<8375>108 312 S(sing the)-32.5 E F2(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 328.8 S(dding or deleting b)-32.5 E(uiltin commands with the)-.2 E +F22.5 E F0(and)2.5 E F22.5 E F0(options to the)2.5 E F2 +(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E 32.5<8355>108 345.6 S +(sing the)-32.5 E F2(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 362.4 S(pecifying the)-32.5 E F22.5 E F0(option to the)2.5 E +F2(command)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E 32.5<8374>108 379.2 +S(urning of)-32.5 E 2.5(fr)-.25 G(estricted mode with)-2.5 E F2(set +r) +2.5 E F0(or)2.5 E F2(set +o r)2.5 E(estricted)-.18 E F0(.)A +(These restrictions are enforced after an)108 396 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 412.8 R -.15 +(xe)-.15 G 1.567(cuted \(see).15 F/F3 9/Times-Bold@0 SF 1.567 +(COMMAND EXECUTION)4.067 F F0(abo)3.817 E -.15(ve)-.15 G(\),).15 E F2 +(rbash)108 424.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 F1(SEE ALSO)72 441.6 Q/F4 10/Times-Italic@0 SF +(Bash Refer)108 453.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 465.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 477.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 -.8(Po)108 489.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 F4(sh)108 501.6 Q F0(\(1\),)A F4(ksh)2.5 E +F0(\(1\),)A F4(csh)2.5 E F0(\(1\))A F4(emacs)108 513.6 Q F0(\(1\),)A F4 +(vi)2.5 E F0(\(1\))A F4 -.37(re)108 525.6 S(adline).37 E F0(\(3\))A F1 +(FILES)72 542.4 Q F4(/bin/bash)109.666 554.4 Q F0(The)144 566.4 Q F2 +(bash)2.5 E F0 -.15(exe)2.5 G(cutable).15 E F4(/etc/pr)109.666 578.4 Q +(o\214le)-.45 E F0(The systemwide initialization \214le, e)144 590.4 Q +-.15(xe)-.15 G(cuted for login shells).15 E F4(~/.bash_pr)109.666 602.4 +Q(o\214le)-.45 E F0(The personal initialization \214le, e)144 614.4 Q +-.15(xe)-.15 G(cuted for login shells).15 E F4(~/.bashr)109.666 626.4 Q +(c)-.37 E F0(The indi)144 638.4 Q(vidual per)-.25 E(-interacti)-.2 E +-.15(ve)-.25 G(-shell startup \214le).15 E F4(~/.bash_lo)109.666 650.4 Q +(gout)-.1 E F0(The indi)144 662.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 674.4 +Q(c)-.37 E F0(Indi)144 686.4 Q(vidual)-.25 E F4 -.37(re)2.5 G(adline).37 +E F0(initialization \214le)2.5 E F1 -.548(AU)72 703.2 S(THORS).548 E F0 +(Brian F)108 715.2 Q(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 E +(bfox@gnu.or)108 727.2 Q(g)-.18 E(GNU Bash-3.2)72 768 Q(2006 Jan 26) +149.845 E(63)199.835 E 0 Cg EP +%%Page: 64 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(Chet Rame)108 84 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@po.cwru.edu)108 96 Q/F1 10.95/Times-Bold@0 SF -.11(BU)72 112.8 S +2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .568(If you \214nd a b)108 +124.8 R .568(ug in)-.2 F/F2 10/Times-Bold@0 SF(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 136.8 R 5.625(ersion of)-.15 +F F2(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/F3 10/Times-Italic@0 SF(ftp://ftp.gnu.or)108 148.8 Q +(g/pub/bash/)-.37 E F0(.)A .411(Once you ha)108 165.6 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 F3(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 177.6 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 189.6 Q F3 -.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 F2(gnu.bash.b)2.5 E(ug) +-.2 E F0(.)A(ALL b)108 206.4 Q(ug reports should include:)-.2 E(The v) +108 223.2 Q(ersion number of)-.15 E F2(bash)2.5 E F0(The hardw)108 235.2 +Q(are and operating system)-.1 E(The compiler used to compile)108 247.2 +Q 2.5(Ad)108 259.2 S(escription of the b)-2.5 E(ug beha)-.2 E(viour)-.2 +E 2.5(As)108 271.2 S(hort script or `recipe' which e)-2.5 E -.15(xe)-.15 +G(rcises the b).15 E(ug)-.2 E F3(bashb)108.27 288 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 +304.8 Q(ug reports concerning this manual page should be directed to)-.2 +E F3 -.15(ch)2.5 G(et@po.cwru.edu).15 E F0(.).25 E F1 -.11(BU)72 321.6 S +(GS).11 E F0(It')108 333.6 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 350.4 R 1.869 +(ferences between)-.25 F F2(bash)4.369 E F0 1.869(and traditional v) +4.369 F 1.869(ersions of)-.15 F F2(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 362.4 Q F0 +(speci\214cation.)2.25 E(Aliases are confusing in some uses.)108 379.2 Q +(Shell b)108 396 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 412.8 R .39 +(process suspension is attempted.)108 424.8 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 436.8 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 448.8 Q .956 +(Commands inside of)108 465.6 R F2($\()3.456 E F0(...)A F2(\))A F0 .956 +(command substitution are not parsed until substitution is attempted.) +3.456 F .955(This will)5.955 F .567 +(delay error reporting until some time after the command is entered.)108 +477.6 R -.15(Fo)5.567 G 3.067(re).15 G .568 +(xample, unmatched parentheses,)-3.217 F -2.15 -.25(ev e)108 489.6 T 2.5 +(ni).25 G(nside shell comments, will result in error messages while the\ + construct is being read.)-2.5 E(Array v)108 506.4 Q +(ariables may not \(yet\) be e)-.25 E(xported.)-.15 E(GNU Bash-3.2)72 +768 Q(2006 Jan 26)149.845 E(64)199.835 E 0 Cg EP +%%Trailer +end +%%EOF diff --git a/bash-20060316/doc/bashbug.0 b/bash-20060316/doc/bashbug.0 new file mode 100644 index 000000000..fca398312 --- /dev/null +++ b/bash-20060316/doc/bashbug.0 @@ -0,0 +1,66 @@ + + + +BASHBUG(1) BASHBUG(1) + + +NNAAMMEE + bashbug - report a bug in bash + +SSYYNNOOPPSSIISS + bbaasshhbbuugg [_a_d_d_r_e_s_s] + +DDEESSCCRRIIPPTTIIOONN + bbaasshhbbuugg is a shell script to help the user compose and + mail bug reports concerning bash in a standard format. + bbaasshhbbuugg invokes the editor specified by the environment + variable EEDDIITTOORR on a temporary copy of the bug report for- + mat outline. The user must fill in the appropriate fields + and exit the editor. bbaasshhbbuugg then mails the completed + report to _b_u_g_-_b_a_s_h_@_g_n_u_._o_r_g, or _a_d_d_r_e_s_s. If the report + cannot be mailed, it is saved in the file _d_e_a_d_._b_a_s_h_b_u_g in + the invoking user's home directory. + + The bug report format outline consists of several sec- + tions. The first section provides information about the + machine, operating system, the bash version, and the com- + pilation environment. The second section should be filled + in with a description of the bug. The third section + should be a description of how to reproduce the bug. The + optional fourth section is for a proposed fix. Fixes are + encouraged. + +EENNVVIIRROONNMMEENNTT + bbaasshhbbuugg will utilize the following environment variables + if they exist: + + EEDDIITTOORR Specifies the preferred editor. If EEDDIITTOORR is not + set, bbaasshhbbuugg defaults to eemmaaccss. + + HHOOMMEE Directory in which the failed bug report is saved + if the mail fails. + + + + + + + + + + + + + + + + + + + + + + +GNU 1998 July 30 1 + + diff --git a/bash-20060316/doc/bashbug.1 b/bash-20060316/doc/bashbug.1 new file mode 100644 index 000000000..971e4c4c0 --- /dev/null +++ b/bash-20060316/doc/bashbug.1 @@ -0,0 +1,41 @@ +.TH BASHBUG 1 "1998 July 30" GNU +.SH NAME +bashbug \- report a bug in bash +.SH SYNOPSIS +\fBbashbug\fP [\fIaddress\fP] +.SH DESCRIPTION +.B bashbug +is a shell script to help the user compose and mail bug reports +concerning bash in a standard format. +.B bashbug +invokes the editor specified by the environment variable +.SM +.B EDITOR +on a temporary copy of the bug report format outline. The user must +fill in the appropriate fields and exit the editor. +.B bashbug +then mails the completed report to \fIbug-bash@gnu.org\fP, or +\fIaddress\fP. If the report cannot be mailed, it is saved in the +file \fIdead.bashbug\fP in the invoking user's home directory. +.PP +The bug report format outline consists of several sections. The first +section provides information about the machine, operating system, the +bash version, and the compilation environment. The second section +should be filled in with a description of the bug. The third section +should be a description of how to reproduce the bug. The optional +fourth section is for a proposed fix. Fixes are encouraged. +.SH ENVIRONMENT +.B bashbug +will utilize the following environment variables if they exist: +.TP +.B EDITOR +Specifies the preferred editor. If +.SM +.B EDITOR +is not set, +.B bashbug +defaults to +.BR emacs . +.TP +.B HOME +Directory in which the failed bug report is saved if the mail fails. diff --git a/bash-20060316/doc/bashbug.ps b/bash-20060316/doc/bashbug.ps new file mode 100644 index 000000000..6cfe8c5d6 --- /dev/null +++ b/bash-20060316/doc/bashbug.ps @@ -0,0 +1,251 @@ +%!PS-Adobe-3.0 +%%Creator: groff version 1.10 +%%CreationDate: Wed Sep 30 13:53:50 1998 +%%DocumentNeededResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%DocumentSuppliedResources: procset grops 1.10 0 +%%Pages: 1 +%%PageOrder: Ascend +%%Orientation: Portrait +%%EndComments +%%BeginProlog +%%BeginResource: procset grops 1.10 0 +/setpacking where{ +pop +currentpacking +true setpacking +}if +/grops 120 dict dup begin +/SC 32 def +/A/show load def +/B{0 SC 3 -1 roll widthshow}bind def +/C{0 exch ashow}bind def +/D{0 exch 0 SC 5 2 roll awidthshow}bind def +/E{0 rmoveto show}bind def +/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def +/G{0 rmoveto 0 exch ashow}bind def +/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/I{0 exch rmoveto show}bind def +/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def +/K{0 exch rmoveto 0 exch ashow}bind def +/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/M{rmoveto show}bind def +/N{rmoveto 0 SC 3 -1 roll widthshow}bind def +/O{rmoveto 0 exch ashow}bind def +/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/Q{moveto show}bind def +/R{moveto 0 SC 3 -1 roll widthshow}bind def +/S{moveto 0 exch ashow}bind def +/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/SF{ +findfont exch +[exch dup 0 exch 0 exch neg 0 0]makefont +dup setfont +[exch/setfont cvx]cvx bind def +}bind def +/MF{ +findfont +[5 2 roll +0 3 1 roll +neg 0 0]makefont +dup setfont +[exch/setfont cvx]cvx bind def +}bind def +/level0 0 def +/RES 0 def +/PL 0 def +/LS 0 def +/MANUAL{ +statusdict begin/manualfeed true store end +}bind def +/PLG{ +gsave newpath clippath pathbbox grestore +exch pop add exch pop +}bind def +/BP{ +/level0 save def +1 setlinecap +1 setlinejoin +72 RES div dup scale +LS{ +90 rotate +}{ +0 PL translate +}ifelse +1 -1 scale +}bind def +/EP{ +level0 restore +showpage +}bind def +/DA{ +newpath arcn stroke +}bind def +/SN{ +transform +.25 sub exch .25 sub exch +round .25 add exch round .25 add exch +itransform +}bind def +/DL{ +SN +moveto +SN +lineto stroke +}bind def +/DC{ +newpath 0 360 arc closepath +}bind def +/TM matrix def +/DE{ +TM currentmatrix pop +translate scale newpath 0 0 .5 0 360 arc closepath +TM setmatrix +}bind def +/RC/rcurveto load def +/RL/rlineto load def +/ST/stroke load def +/MT/moveto load def +/CL/closepath load def +/FL{ +currentgray exch setgray fill setgray +}bind def +/BL/fill load def +/LW/setlinewidth load def +/RE{ +findfont +dup maxlength 1 index/FontName known not{1 add}if dict begin +{ +1 index/FID ne{def}{pop pop}ifelse +}forall +/Encoding exch def +dup/FontName exch def +currentdict end definefont pop +}bind def +/DEFS 0 def +/EBEGIN{ +moveto +DEFS begin +}bind def +/EEND/end load def +/CNT 0 def +/level1 0 def +/PBEGIN{ +/level1 save def +translate +div 3 1 roll div exch scale +neg exch neg exch translate +0 setgray +0 setlinecap +1 setlinewidth +0 setlinejoin +10 setmiterlimit +[]0 setdash +/setstrokeadjust where{ +pop +false setstrokeadjust +}if +/setoverprint where{ +pop +false setoverprint +}if +newpath +/CNT countdictstack def +userdict begin +/showpage{}def +}bind def +/PEND{ +clear +countdictstack CNT sub{end}repeat +level1 restore +}bind def +end def +/setpacking where{ +pop +setpacking +}if +%%EndResource +%%IncludeResource: font Times-Roman +%%IncludeResource: font Times-Bold +%%IncludeResource: font Times-Italic +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 +/.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 +/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 +/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex +/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y +/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft +/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl +/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut +/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash +/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen +/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft +/logicalnot/minus/registered/macron/degree/plusminus/twosuperior +/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior +/ordmasculine/guilsinglright/onequarter/onehalf/threequarters +/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE +/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex +/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis +/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn +/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla +/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis +/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash +/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def +/Times-Italic@0 ENC0/Times-Italic RE/Times-Bold@0 ENC0/Times-Bold RE +/Times-Roman@0 ENC0/Times-Roman RE +%%EndProlog +%%Page: 1 1 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SHB).35 E 347.52(UG\(1\) B)-.1 F +(ASHB)-.35 E(UG\(1\))-.1 E/F1 9/Times-Bold@0 SF -.18(NA)72 84 S(ME).18 E +F0(bashb)108 96 Q(ug \255 report a b)-.2 E(ug in bash)-.2 E F1(SYNOPSIS) +72 112.8 Q/F2 10/Times-Bold@0 SF(bashb)108 124.8 Q(ug)-.2 E F0([)2.5 E +/F3 10/Times-Italic@0 SF(addr)A(ess)-.37 E F0(])A F1(DESCRIPTION)72 +141.6 Q F2(bashb)108 153.6 Q(ug)-.2 E F0 .446 +(is a shell script to help the user compose and mail b)2.947 F .446 +(ug reports concerning bash in a standard for)-.2 F(-)-.2 E(mat.)108 +165.6 Q F2(bashb)5.961 E(ug)-.2 E F0(in)3.461 E -.2(vo)-.4 G -.1(ke).2 G +3.461(st).1 G .962(he editor speci\214ed by the en)-3.461 F .962 +(vironment v)-.4 F(ariable)-.25 E F1(EDIT)3.462 E(OR)-.162 E F0 .962 +(on a temporary cop)3.212 F 3.462(yo)-.1 G(f)-3.462 E .374(the b)108 +177.6 R .374(ug report format outline. The user must \214ll in the appr\ +opriate \214elds and e)-.2 F .374(xit the editor)-.15 F(.)-.55 E F2 +(bashb)5.373 E(ug)-.2 E F0(then)2.873 E .439 +(mails the completed report to)108 189.6 R F3 -.2(bu)2.939 G +(g-bash@gnu.or).2 E(g)-.37 E F0 2.939(,o)C(r)-2.939 E F3(addr)2.939 E +(ess)-.37 E F0 5.439(.I)C 2.939(ft)-5.439 G .44 +(he report cannot be mailed, it is sa)-2.939 F -.15(ve)-.2 G 2.94(di).15 +G(n)-2.94 E(the \214le)108 201.6 Q F3(dead.bashb)2.5 E(ug)-.2 E F0 +(in the in)2.5 E -.2(vo)-.4 G(king user').2 E 2.5(sh)-.55 G +(ome directory)-2.5 E(.)-.65 E .354(The b)108 218.4 R .354 +(ug report format outline consists of se)-.2 F -.15(ve)-.25 G .353 +(ral sections.).15 F .353(The \214rst section pro)5.353 F .353 +(vides information about the)-.15 F .37 +(machine, operating system, the bash v)108 230.4 R .371 +(ersion, and the compilation en)-.15 F 2.871(vironment. The)-.4 F .371 +(second section should)2.871 F .209 +(be \214lled in with a description of the b)108 242.4 R 2.709(ug. The) +-.2 F .208(third section should be a description of ho)2.709 F 2.708(wt) +-.25 G 2.708(or)-2.708 G .208(eproduce the)-2.708 F -.2(bu)108 254.4 S +2.5(g. The).2 F(optional fourth section is for a proposed \214x.)2.5 E +(Fix)5 E(es are encouraged.)-.15 E F1(ENVIR)72 271.2 Q(ONMENT)-.27 E F2 +(bashb)108 283.2 Q(ug)-.2 E F0(will utilize the follo)2.5 E(wing en)-.25 +E(vironment v)-.4 E(ariables if the)-.25 E 2.5(ye)-.15 G(xist:)-2.65 E +F2(EDIT)108 300 Q(OR)-.18 E F0(Speci\214es the preferred editor)144 312 +Q 2.5(.I)-.55 G(f)-2.5 E F1(EDIT)2.5 E(OR)-.162 E F0(is not set,)2.25 E +F2(bashb)2.5 E(ug)-.2 E F0(def)2.5 E(aults to)-.1 E F2(emacs)2.5 E F0(.) +A F2(HOME)108 328.8 Q F0(Directory in which the f)144 340.8 Q(ailed b) +-.1 E(ug report is sa)-.2 E -.15(ve)-.2 G 2.5(di).15 G 2.5(ft)-2.5 G +(he mail f)-2.5 E(ails.)-.1 E 184.005(GNU 1998)72 768 R(July 30)2.5 E(1) +203.165 E EP +%%Trailer +end +%%EOF diff --git a/bash-20060316/doc/bashman.html b/bash-20060316/doc/bashman.html new file mode 120000 index 000000000..0cf709798 --- /dev/null +++ b/bash-20060316/doc/bashman.html @@ -0,0 +1 @@ +bash.html \ No newline at end of file diff --git a/bash-20060316/doc/bashref.aux b/bash-20060316/doc/bashref.aux new file mode 100644 index 000000000..b04fbcf3e --- /dev/null +++ b/bash-20060316/doc/bashref.aux @@ -0,0 +1,369 @@ +@xrdef{Introduction-title}{Introduction} +@xrdef{Introduction-pg}{1} +@xrdef{Introduction-snt}{Chapter@tie 1} +@xrdef{What is Bash?-title}{What is Bash?} +@xrdef{What is Bash?-pg}{1} +@xrdef{What is Bash?-snt}{Section@tie 1.1} +@xrdef{What is a shell?-title}{What is a shell?} +@xrdef{What is a shell?-pg}{1} +@xrdef{What is a shell?-snt}{Section@tie 1.2} +@xrdef{Definitions-title}{Definitions} +@xrdef{Definitions-pg}{3} +@xrdef{Definitions-snt}{Chapter@tie 2} +@xrdef{Basic Shell Features-title}{Basic Shell Features} +@xrdef{Basic Shell Features-pg}{5} +@xrdef{Basic Shell Features-snt}{Chapter@tie 3} +@xrdef{Shell Syntax-title}{Shell Syntax} +@xrdef{Shell Syntax-pg}{5} +@xrdef{Shell Syntax-snt}{Section@tie 3.1} +@xrdef{Shell Operation-title}{Shell Operation} +@xrdef{Shell Operation-pg}{5} +@xrdef{Shell Operation-snt}{Section@tie 3.1.1} +@xrdef{Quoting-title}{Quoting} +@xrdef{Quoting-pg}{6} +@xrdef{Quoting-snt}{Section@tie 3.1.2} +@xrdef{Escape Character-title}{Escape Character} +@xrdef{Escape Character-pg}{6} +@xrdef{Escape Character-snt}{Section@tie 3.1.2.1} +@xrdef{Single Quotes-title}{Single Quotes} +@xrdef{Single Quotes-pg}{6} +@xrdef{Single Quotes-snt}{Section@tie 3.1.2.2} +@xrdef{Double Quotes-title}{Double Quotes} +@xrdef{Double Quotes-pg}{6} +@xrdef{Double Quotes-snt}{Section@tie 3.1.2.3} +@xrdef{ANSI-C Quoting-title}{ANSI-C Quoting} +@xrdef{ANSI-C Quoting-pg}{6} +@xrdef{ANSI-C Quoting-snt}{Section@tie 3.1.2.4} +@xrdef{Locale Translation-title}{Locale-Specific Translation} +@xrdef{Locale Translation-pg}{7} +@xrdef{Locale Translation-snt}{Section@tie 3.1.2.5} +@xrdef{Comments-title}{Comments} +@xrdef{Comments-pg}{7} +@xrdef{Comments-snt}{Section@tie 3.1.3} +@xrdef{Shell Commands-title}{Shell Commands} +@xrdef{Shell Commands-pg}{8} +@xrdef{Shell Commands-snt}{Section@tie 3.2} +@xrdef{Simple Commands-title}{Simple Commands} +@xrdef{Simple Commands-pg}{8} +@xrdef{Simple Commands-snt}{Section@tie 3.2.1} +@xrdef{Pipelines-title}{Pipelines} +@xrdef{Pipelines-pg}{8} +@xrdef{Pipelines-snt}{Section@tie 3.2.2} +@xrdef{Lists-title}{Lists of Commands} +@xrdef{Lists-pg}{9} +@xrdef{Lists-snt}{Section@tie 3.2.3} +@xrdef{Compound Commands-title}{Compound Commands} +@xrdef{Compound Commands-pg}{9} +@xrdef{Compound Commands-snt}{Section@tie 3.2.4} +@xrdef{Looping Constructs-title}{Looping Constructs} +@xrdef{Looping Constructs-pg}{9} +@xrdef{Looping Constructs-snt}{Section@tie 3.2.4.1} +@xrdef{Conditional Constructs-title}{Conditional Constructs} +@xrdef{Conditional Constructs-pg}{10} +@xrdef{Conditional Constructs-snt}{Section@tie 3.2.4.2} +@xrdef{Command Grouping-title}{Grouping Commands} +@xrdef{Command Grouping-pg}{13} +@xrdef{Command Grouping-snt}{Section@tie 3.2.4.3} +@xrdef{Shell Functions-title}{Shell Functions} +@xrdef{Shell Functions-pg}{14} +@xrdef{Shell Functions-snt}{Section@tie 3.3} +@xrdef{Shell Parameters-title}{Shell Parameters} +@xrdef{Shell Parameters-pg}{15} +@xrdef{Shell Parameters-snt}{Section@tie 3.4} +@xrdef{Positional Parameters-title}{Positional Parameters} +@xrdef{Positional Parameters-pg}{15} +@xrdef{Positional Parameters-snt}{Section@tie 3.4.1} +@xrdef{Special Parameters-title}{Special Parameters} +@xrdef{Special Parameters-pg}{16} +@xrdef{Special Parameters-snt}{Section@tie 3.4.2} +@xrdef{Shell Expansions-title}{Shell Expansions} +@xrdef{Shell Expansions-pg}{17} +@xrdef{Shell Expansions-snt}{Section@tie 3.5} +@xrdef{Brace Expansion-title}{Brace Expansion} +@xrdef{Brace Expansion-pg}{17} +@xrdef{Brace Expansion-snt}{Section@tie 3.5.1} +@xrdef{Tilde Expansion-title}{Tilde Expansion} +@xrdef{Tilde Expansion-pg}{18} +@xrdef{Tilde Expansion-snt}{Section@tie 3.5.2} +@xrdef{Shell Parameter Expansion-title}{Shell Parameter Expansion} +@xrdef{Shell Parameter Expansion-pg}{19} +@xrdef{Shell Parameter Expansion-snt}{Section@tie 3.5.3} +@xrdef{Command Substitution-title}{Command Substitution} +@xrdef{Command Substitution-pg}{21} +@xrdef{Command Substitution-snt}{Section@tie 3.5.4} +@xrdef{Arithmetic Expansion-title}{Arithmetic Expansion} +@xrdef{Arithmetic Expansion-pg}{22} +@xrdef{Arithmetic Expansion-snt}{Section@tie 3.5.5} +@xrdef{Process Substitution-title}{Process Substitution} +@xrdef{Process Substitution-pg}{22} +@xrdef{Process Substitution-snt}{Section@tie 3.5.6} +@xrdef{Word Splitting-title}{Word Splitting} +@xrdef{Word Splitting-pg}{22} +@xrdef{Word Splitting-snt}{Section@tie 3.5.7} +@xrdef{Filename Expansion-title}{Filename Expansion} +@xrdef{Filename Expansion-pg}{23} +@xrdef{Filename Expansion-snt}{Section@tie 3.5.8} +@xrdef{Pattern Matching-title}{Pattern Matching} +@xrdef{Pattern Matching-pg}{23} +@xrdef{Pattern Matching-snt}{Section@tie 3.5.8.1} +@xrdef{Quote Removal-title}{Quote Removal} +@xrdef{Quote Removal-pg}{25} +@xrdef{Quote Removal-snt}{Section@tie 3.5.9} +@xrdef{Redirections-title}{Redirections} +@xrdef{Redirections-pg}{25} +@xrdef{Redirections-snt}{Section@tie 3.6} +@xrdef{Executing Commands-title}{Executing Commands} +@xrdef{Executing Commands-pg}{28} +@xrdef{Executing Commands-snt}{Section@tie 3.7} +@xrdef{Simple Command Expansion-title}{Simple Command Expansion} +@xrdef{Simple Command Expansion-pg}{28} +@xrdef{Simple Command Expansion-snt}{Section@tie 3.7.1} +@xrdef{Command Search and Execution-title}{Command Search and Execution} +@xrdef{Command Search and Execution-pg}{29} +@xrdef{Command Search and Execution-snt}{Section@tie 3.7.2} +@xrdef{Command Execution Environment-title}{Command Execution Environment} +@xrdef{Command Execution Environment-pg}{29} +@xrdef{Command Execution Environment-snt}{Section@tie 3.7.3} +@xrdef{Environment-title}{Environment} +@xrdef{Environment-pg}{30} +@xrdef{Environment-snt}{Section@tie 3.7.4} +@xrdef{Exit Status-title}{Exit Status} +@xrdef{Exit Status-pg}{31} +@xrdef{Exit Status-snt}{Section@tie 3.7.5} +@xrdef{Signals-title}{Signals} +@xrdef{Signals-pg}{31} +@xrdef{Signals-snt}{Section@tie 3.7.6} +@xrdef{Shell Scripts-title}{Shell Scripts} +@xrdef{Shell Scripts-pg}{32} +@xrdef{Shell Scripts-snt}{Section@tie 3.8} +@xrdef{Shell Builtin Commands-title}{Shell Builtin Commands} +@xrdef{Shell Builtin Commands-pg}{35} +@xrdef{Shell Builtin Commands-snt}{Chapter@tie 4} +@xrdef{Bourne Shell Builtins-title}{Bourne Shell Builtins} +@xrdef{Bourne Shell Builtins-pg}{35} +@xrdef{Bourne Shell Builtins-snt}{Section@tie 4.1} +@xrdef{Bash Builtins-title}{Bash Builtin Commands} +@xrdef{Bash Builtins-pg}{41} +@xrdef{Bash Builtins-snt}{Section@tie 4.2} +@xrdef{The Set Builtin-title}{The Set Builtin} +@xrdef{The Set Builtin-pg}{53} +@xrdef{The Set Builtin-snt}{Section@tie 4.3} +@xrdef{Special Builtins-title}{Special Builtins} +@xrdef{Special Builtins-pg}{56} +@xrdef{Special Builtins-snt}{Section@tie 4.4} +@xrdef{Shell Variables-title}{Shell Variables} +@xrdef{Shell Variables-pg}{57} +@xrdef{Shell Variables-snt}{Chapter@tie 5} +@xrdef{Bourne Shell Variables-title}{Bourne Shell Variables} +@xrdef{Bourne Shell Variables-pg}{57} +@xrdef{Bourne Shell Variables-snt}{Section@tie 5.1} +@xrdef{Bash Variables-title}{Bash Variables} +@xrdef{Bash Variables-pg}{57} +@xrdef{Bash Variables-snt}{Section@tie 5.2} +@xrdef{Bash Features-title}{Bash Features} +@xrdef{Bash Features-pg}{67} +@xrdef{Bash Features-snt}{Chapter@tie 6} +@xrdef{Invoking Bash-title}{Invoking Bash} +@xrdef{Invoking Bash-pg}{67} +@xrdef{Invoking Bash-snt}{Section@tie 6.1} +@xrdef{Bash Startup Files-title}{Bash Startup Files} +@xrdef{Bash Startup Files-pg}{69} +@xrdef{Bash Startup Files-snt}{Section@tie 6.2} +@xrdef{Interactive Shells-title}{Interactive Shells} +@xrdef{Interactive Shells-pg}{71} +@xrdef{Interactive Shells-snt}{Section@tie 6.3} +@xrdef{What is an Interactive Shell?-title}{What is an Interactive Shell?} +@xrdef{What is an Interactive Shell?-pg}{71} +@xrdef{What is an Interactive Shell?-snt}{Section@tie 6.3.1} +@xrdef{Is this Shell Interactive?-title}{Is this Shell Interactive?} +@xrdef{Is this Shell Interactive?-pg}{71} +@xrdef{Is this Shell Interactive?-snt}{Section@tie 6.3.2} +@xrdef{Interactive Shell Behavior-title}{Interactive Shell Behavior} +@xrdef{Interactive Shell Behavior-pg}{71} +@xrdef{Interactive Shell Behavior-snt}{Section@tie 6.3.3} +@xrdef{Bash Conditional Expressions-title}{Bash Conditional Expressions} +@xrdef{Bash Conditional Expressions-pg}{73} +@xrdef{Bash Conditional Expressions-snt}{Section@tie 6.4} +@xrdef{Shell Arithmetic-title}{Shell Arithmetic} +@xrdef{Shell Arithmetic-pg}{74} +@xrdef{Shell Arithmetic-snt}{Section@tie 6.5} +@xrdef{Aliases-title}{Aliases} +@xrdef{Aliases-pg}{75} +@xrdef{Aliases-snt}{Section@tie 6.6} +@xrdef{Arrays-title}{Arrays} +@xrdef{Arrays-pg}{76} +@xrdef{Arrays-snt}{Section@tie 6.7} +@xrdef{The Directory Stack-title}{The Directory Stack} +@xrdef{The Directory Stack-pg}{77} +@xrdef{The Directory Stack-snt}{Section@tie 6.8} +@xrdef{Directory Stack Builtins-title}{Directory Stack Builtins} +@xrdef{Directory Stack Builtins-pg}{77} +@xrdef{Directory Stack Builtins-snt}{Section@tie 6.8.1} +@xrdef{Printing a Prompt-title}{Controlling the Prompt} +@xrdef{Printing a Prompt-pg}{79} +@xrdef{Printing a Prompt-snt}{Section@tie 6.9} +@xrdef{The Restricted Shell-title}{The Restricted Shell} +@xrdef{The Restricted Shell-pg}{80} +@xrdef{The Restricted Shell-snt}{Section@tie 6.10} +@xrdef{Bash POSIX Mode-title}{Bash POSIX Mode} +@xrdef{Bash POSIX Mode-pg}{80} +@xrdef{Bash POSIX Mode-snt}{Section@tie 6.11} +@xrdef{Job Control-title}{Job Control} +@xrdef{Job Control-pg}{85} +@xrdef{Job Control-snt}{Chapter@tie 7} +@xrdef{Job Control Basics-title}{Job Control Basics} +@xrdef{Job Control Basics-pg}{85} +@xrdef{Job Control Basics-snt}{Section@tie 7.1} +@xrdef{Job Control Builtins-title}{Job Control Builtins} +@xrdef{Job Control Builtins-pg}{86} +@xrdef{Job Control Builtins-snt}{Section@tie 7.2} +@xrdef{Job Control Variables-title}{Job Control Variables} +@xrdef{Job Control Variables-pg}{88} +@xrdef{Job Control Variables-snt}{Section@tie 7.3} +@xrdef{Command Line Editing-title}{Command Line Editing} +@xrdef{Command Line Editing-pg}{89} +@xrdef{Command Line Editing-snt}{Chapter@tie 8} +@xrdef{Introduction and Notation-title}{Introduction to Line Editing} +@xrdef{Introduction and Notation-pg}{89} +@xrdef{Introduction and Notation-snt}{Section@tie 8.1} +@xrdef{Readline Interaction-title}{Readline Interaction} +@xrdef{Readline Interaction-pg}{89} +@xrdef{Readline Interaction-snt}{Section@tie 8.2} +@xrdef{Readline Bare Essentials-title}{Readline Bare Essentials} +@xrdef{Readline Bare Essentials-pg}{89} +@xrdef{Readline Bare Essentials-snt}{Section@tie 8.2.1} +@xrdef{Readline Movement Commands-title}{Readline Movement Commands} +@xrdef{Readline Movement Commands-pg}{90} +@xrdef{Readline Movement Commands-snt}{Section@tie 8.2.2} +@xrdef{Readline Killing Commands-title}{Readline Killing Commands} +@xrdef{Readline Killing Commands-pg}{91} +@xrdef{Readline Killing Commands-snt}{Section@tie 8.2.3} +@xrdef{Readline Arguments-title}{Readline Arguments} +@xrdef{Readline Arguments-pg}{91} +@xrdef{Readline Arguments-snt}{Section@tie 8.2.4} +@xrdef{Searching-title}{Searching for Commands in the History} +@xrdef{Searching-pg}{92} +@xrdef{Searching-snt}{Section@tie 8.2.5} +@xrdef{Readline Init File-title}{Readline Init File} +@xrdef{Readline Init File-pg}{92} +@xrdef{Readline Init File-snt}{Section@tie 8.3} +@xrdef{Readline Init File Syntax-title}{Readline Init File Syntax} +@xrdef{Readline Init File Syntax-pg}{92} +@xrdef{Readline Init File Syntax-snt}{Section@tie 8.3.1} +@xrdef{Conditional Init Constructs-title}{Conditional Init Constructs} +@xrdef{Conditional Init Constructs-pg}{97} +@xrdef{Conditional Init Constructs-snt}{Section@tie 8.3.2} +@xrdef{Sample Init File-title}{Sample Init File} +@xrdef{Sample Init File-pg}{98} +@xrdef{Sample Init File-snt}{Section@tie 8.3.3} +@xrdef{Bindable Readline Commands-title}{Bindable Readline Commands} +@xrdef{Bindable Readline Commands-pg}{101} +@xrdef{Bindable Readline Commands-snt}{Section@tie 8.4} +@xrdef{Commands For Moving-title}{Commands For Moving} +@xrdef{Commands For Moving-pg}{101} +@xrdef{Commands For Moving-snt}{Section@tie 8.4.1} +@xrdef{Commands For History-title}{Commands For Manipulating The History} +@xrdef{Commands For History-pg}{101} +@xrdef{Commands For History-snt}{Section@tie 8.4.2} +@xrdef{Commands For Text-title}{Commands For Changing Text} +@xrdef{Commands For Text-pg}{103} +@xrdef{Commands For Text-snt}{Section@tie 8.4.3} +@xrdef{Commands For Killing-title}{Killing And Yanking} +@xrdef{Commands For Killing-pg}{104} +@xrdef{Commands For Killing-snt}{Section@tie 8.4.4} +@xrdef{Numeric Arguments-title}{Specifying Numeric Arguments} +@xrdef{Numeric Arguments-pg}{105} +@xrdef{Numeric Arguments-snt}{Section@tie 8.4.5} +@xrdef{Commands For Completion-title}{Letting Readline Type For You} +@xrdef{Commands For Completion-pg}{105} +@xrdef{Commands For Completion-snt}{Section@tie 8.4.6} +@xrdef{Keyboard Macros-title}{Keyboard Macros} +@xrdef{Keyboard Macros-pg}{106} +@xrdef{Keyboard Macros-snt}{Section@tie 8.4.7} +@xrdef{Miscellaneous Commands-title}{Some Miscellaneous Commands} +@xrdef{Miscellaneous Commands-pg}{107} +@xrdef{Miscellaneous Commands-snt}{Section@tie 8.4.8} +@xrdef{Readline vi Mode-title}{Readline vi Mode} +@xrdef{Readline vi Mode-pg}{109} +@xrdef{Readline vi Mode-snt}{Section@tie 8.5} +@xrdef{Programmable Completion-title}{Programmable Completion} +@xrdef{Programmable Completion-pg}{109} +@xrdef{Programmable Completion-snt}{Section@tie 8.6} +@xrdef{Programmable Completion Builtins-title}{Programmable Completion Builtins} +@xrdef{Programmable Completion Builtins-pg}{111} +@xrdef{Programmable Completion Builtins-snt}{Section@tie 8.7} +@xrdef{Using History Interactively-title}{Using History Interactively} +@xrdef{Using History Interactively-pg}{115} +@xrdef{Using History Interactively-snt}{Chapter@tie 9} +@xrdef{Bash History Facilities-title}{Bash History Facilities} +@xrdef{Bash History Facilities-pg}{115} +@xrdef{Bash History Facilities-snt}{Section@tie 9.1} +@xrdef{Bash History Builtins-title}{Bash History Builtins} +@xrdef{Bash History Builtins-pg}{115} +@xrdef{Bash History Builtins-snt}{Section@tie 9.2} +@xrdef{History Interaction-title}{History Expansion} +@xrdef{History Interaction-pg}{117} +@xrdef{History Interaction-snt}{Section@tie 9.3} +@xrdef{Event Designators-title}{Event Designators} +@xrdef{Event Designators-pg}{117} +@xrdef{Event Designators-snt}{Section@tie 9.3.1} +@xrdef{Word Designators-title}{Word Designators} +@xrdef{Word Designators-pg}{118} +@xrdef{Word Designators-snt}{Section@tie 9.3.2} +@xrdef{Modifiers-title}{Modifiers} +@xrdef{Modifiers-pg}{119} +@xrdef{Modifiers-snt}{Section@tie 9.3.3} +@xrdef{Installing Bash-title}{Installing Bash} +@xrdef{Installing Bash-pg}{121} +@xrdef{Installing Bash-snt}{Chapter@tie 10} +@xrdef{Basic Installation-title}{Basic Installation} +@xrdef{Basic Installation-pg}{121} +@xrdef{Basic Installation-snt}{Section@tie 10.1} +@xrdef{Compilers and Options-title}{Compilers and Options} +@xrdef{Compilers and Options-pg}{122} +@xrdef{Compilers and Options-snt}{Section@tie 10.2} +@xrdef{Compiling For Multiple Architectures-title}{Compiling For Multiple Architectures} +@xrdef{Compiling For Multiple Architectures-pg}{122} +@xrdef{Compiling For Multiple Architectures-snt}{Section@tie 10.3} +@xrdef{Installation Names-title}{Installation Names} +@xrdef{Installation Names-pg}{122} +@xrdef{Installation Names-snt}{Section@tie 10.4} +@xrdef{Specifying the System Type-title}{Specifying the System Type} +@xrdef{Specifying the System Type-pg}{123} +@xrdef{Specifying the System Type-snt}{Section@tie 10.5} +@xrdef{Sharing Defaults-title}{Sharing Defaults} +@xrdef{Sharing Defaults-pg}{123} +@xrdef{Sharing Defaults-snt}{Section@tie 10.6} +@xrdef{Operation Controls-title}{Operation Controls} +@xrdef{Operation Controls-pg}{123} +@xrdef{Operation Controls-snt}{Section@tie 10.7} +@xrdef{Optional Features-title}{Optional Features} +@xrdef{Optional Features-pg}{123} +@xrdef{Optional Features-snt}{Section@tie 10.8} +@xrdef{Reporting Bugs-title}{Reporting Bugs} +@xrdef{Reporting Bugs-pg}{129} +@xrdef{Reporting Bugs-snt}{Appendix@tie @char65{}} +@xrdef{Major Differences From The Bourne Shell-title}{Major Differences From The Bourne Shell} +@xrdef{Major Differences From The Bourne Shell-pg}{131} +@xrdef{Major Differences From The Bourne Shell-snt}{Appendix@tie @char66{}} +@xrdef{Copying This Manual-title}{Copying This Manual} +@xrdef{Copying This Manual-pg}{137} +@xrdef{Copying This Manual-snt}{Appendix@tie @char67{}} +@xrdef{GNU Free Documentation License-title}{GNU Free Documentation License} +@xrdef{GNU Free Documentation License-pg}{137} +@xrdef{GNU Free Documentation License-snt}{Section@tie @char67.1} +@xrdef{Builtin Index-title}{Index of Shell Builtin Commands} +@xrdef{Builtin Index-pg}{145} +@xrdef{Builtin Index-snt}{} +@xrdef{Reserved Word Index-title}{Index of Shell Reserved Words} +@xrdef{Reserved Word Index-pg}{147} +@xrdef{Reserved Word Index-snt}{} +@xrdef{Variable Index-title}{Parameter and Variable Index} +@xrdef{Variable Index-pg}{149} +@xrdef{Variable Index-snt}{} +@xrdef{Function Index-title}{Function Index} +@xrdef{Function Index-pg}{151} +@xrdef{Function Index-snt}{} +@xrdef{Concept Index-title}{Concept Index} +@xrdef{Concept Index-pg}{153} +@xrdef{Concept Index-snt}{} diff --git a/bash-20060316/doc/bashref.bt b/bash-20060316/doc/bashref.bt new file mode 100644 index 000000000..f551e6f4f --- /dev/null +++ b/bash-20060316/doc/bashref.bt @@ -0,0 +1,56 @@ +\entry{:}{35}{\code {:}} +\entry{.}{35}{\code {.}} +\entry{break}{35}{\code {break}} +\entry{cd}{36}{\code {cd}} +\entry{continue}{36}{\code {continue}} +\entry{eval}{36}{\code {eval}} +\entry{exec}{36}{\code {exec}} +\entry{exit}{36}{\code {exit}} +\entry{export}{36}{\code {export}} +\entry{getopts}{37}{\code {getopts}} +\entry{hash}{37}{\code {hash}} +\entry{pwd}{38}{\code {pwd}} +\entry{readonly}{38}{\code {readonly}} +\entry{return}{38}{\code {return}} +\entry{shift}{38}{\code {shift}} +\entry{test}{39}{\code {test}} +\entry{[}{39}{\code {[}} +\entry{times}{40}{\code {times}} +\entry{trap}{40}{\code {trap}} +\entry{umask}{40}{\code {umask}} +\entry{unset}{41}{\code {unset}} +\entry{alias}{41}{\code {alias}} +\entry{bind}{41}{\code {bind}} +\entry{builtin}{42}{\code {builtin}} +\entry{caller}{42}{\code {caller}} +\entry{command}{43}{\code {command}} +\entry{declare}{43}{\code {declare}} +\entry{echo}{44}{\code {echo}} +\entry{enable}{45}{\code {enable}} +\entry{help}{45}{\code {help}} +\entry{let}{45}{\code {let}} +\entry{local}{45}{\code {local}} +\entry{logout}{46}{\code {logout}} +\entry{printf}{46}{\code {printf}} +\entry{read}{46}{\code {read}} +\entry{shopt}{47}{\code {shopt}} +\entry{source}{51}{\code {source}} +\entry{type}{51}{\code {type}} +\entry{typeset}{51}{\code {typeset}} +\entry{ulimit}{52}{\code {ulimit}} +\entry{unalias}{53}{\code {unalias}} +\entry{set}{53}{\code {set}} +\entry{dirs}{77}{\code {dirs}} +\entry{popd}{78}{\code {popd}} +\entry{pushd}{78}{\code {pushd}} +\entry{bg}{86}{\code {bg}} +\entry{fg}{86}{\code {fg}} +\entry{jobs}{86}{\code {jobs}} +\entry{kill}{87}{\code {kill}} +\entry{wait}{87}{\code {wait}} +\entry{disown}{87}{\code {disown}} +\entry{suspend}{87}{\code {suspend}} +\entry{compgen}{111}{\code {compgen}} +\entry{complete}{111}{\code {complete}} +\entry{fc}{115}{\code {fc}} +\entry{history}{116}{\code {history}} diff --git a/bash-20060316/doc/bashref.bts b/bash-20060316/doc/bashref.bts new file mode 100644 index 000000000..31487e837 --- /dev/null +++ b/bash-20060316/doc/bashref.bts @@ -0,0 +1,76 @@ +\initial {.} +\entry {\code {.}}{35} +\initial {:} +\entry {\code {:}}{35} +\initial {[} +\entry {\code {[}}{39} +\initial {A} +\entry {\code {alias}}{41} +\initial {B} +\entry {\code {bg}}{86} +\entry {\code {bind}}{41} +\entry {\code {break}}{35} +\entry {\code {builtin}}{42} +\initial {C} +\entry {\code {caller}}{42} +\entry {\code {cd}}{36} +\entry {\code {command}}{43} +\entry {\code {compgen}}{111} +\entry {\code {complete}}{111} +\entry {\code {continue}}{36} +\initial {D} +\entry {\code {declare}}{43} +\entry {\code {dirs}}{77} +\entry {\code {disown}}{87} +\initial {E} +\entry {\code {echo}}{44} +\entry {\code {enable}}{45} +\entry {\code {eval}}{36} +\entry {\code {exec}}{36} +\entry {\code {exit}}{36} +\entry {\code {export}}{36} +\initial {F} +\entry {\code {fc}}{115} +\entry {\code {fg}}{86} +\initial {G} +\entry {\code {getopts}}{37} +\initial {H} +\entry {\code {hash}}{37} +\entry {\code {help}}{45} +\entry {\code {history}}{116} +\initial {J} +\entry {\code {jobs}}{86} +\initial {K} +\entry {\code {kill}}{87} +\initial {L} +\entry {\code {let}}{45} +\entry {\code {local}}{45} +\entry {\code {logout}}{46} +\initial {P} +\entry {\code {popd}}{78} +\entry {\code {printf}}{46} +\entry {\code {pushd}}{78} +\entry {\code {pwd}}{38} +\initial {R} +\entry {\code {read}}{46} +\entry {\code {readonly}}{38} +\entry {\code {return}}{38} +\initial {S} +\entry {\code {set}}{53} +\entry {\code {shift}}{38} +\entry {\code {shopt}}{47} +\entry {\code {source}}{51} +\entry {\code {suspend}}{87} +\initial {T} +\entry {\code {test}}{39} +\entry {\code {times}}{40} +\entry {\code {trap}}{40} +\entry {\code {type}}{51} +\entry {\code {typeset}}{51} +\initial {U} +\entry {\code {ulimit}}{52} +\entry {\code {umask}}{40} +\entry {\code {unalias}}{53} +\entry {\code {unset}}{41} +\initial {W} +\entry {\code {wait}}{87} diff --git a/bash-20060316/doc/bashref.cp b/bash-20060316/doc/bashref.cp new file mode 100644 index 000000000..83484e2f1 --- /dev/null +++ b/bash-20060316/doc/bashref.cp @@ -0,0 +1,118 @@ +\entry{POSIX}{3}{POSIX} +\entry{builtin}{3}{builtin} +\entry{control operator}{3}{control operator} +\entry{exit status}{3}{exit status} +\entry{field}{3}{field} +\entry{filename}{3}{filename} +\entry{job}{3}{job} +\entry{job control}{3}{job control} +\entry{metacharacter}{3}{metacharacter} +\entry{name}{3}{name} +\entry{identifier}{3}{identifier} +\entry{operator, shell}{3}{operator, shell} +\entry{process group}{3}{process group} +\entry{process group ID}{3}{process group ID} +\entry{reserved word}{3}{reserved word} +\entry{return status}{3}{return status} +\entry{signal}{4}{signal} +\entry{special builtin}{4}{special builtin} +\entry{token}{4}{token} +\entry{word}{4}{word} +\entry{Bourne shell}{5}{Bourne shell} +\entry{quoting}{6}{quoting} +\entry{quoting, ANSI}{6}{quoting, ANSI} +\entry{localization}{7}{localization} +\entry{internationalization}{7}{internationalization} +\entry{native languages}{7}{native languages} +\entry{translation, native languages}{7}{translation, native languages} +\entry{comments, shell}{7}{comments, shell} +\entry{commands, shell}{8}{commands, shell} +\entry{commands, simple}{8}{commands, simple} +\entry{pipeline}{8}{pipeline} +\entry{commands, pipelines}{8}{commands, pipelines} +\entry{command timing}{8}{command timing} +\entry{commands, lists}{9}{commands, lists} +\entry{commands, compound}{9}{commands, compound} +\entry{commands, looping}{9}{commands, looping} +\entry{commands, conditional}{10}{commands, conditional} +\entry{commands, grouping}{13}{commands, grouping} +\entry{shell function}{14}{shell function} +\entry{functions, shell}{14}{functions, shell} +\entry{parameters}{15}{parameters} +\entry{variable, shell}{15}{variable, shell} +\entry{shell variable}{15}{shell variable} +\entry{parameters, positional}{15}{parameters, positional} +\entry{parameters, special}{16}{parameters, special} +\entry{expansion}{17}{expansion} +\entry{brace expansion}{17}{brace expansion} +\entry{expansion, brace}{17}{expansion, brace} +\entry{tilde expansion}{18}{tilde expansion} +\entry{expansion, tilde}{18}{expansion, tilde} +\entry{parameter expansion}{19}{parameter expansion} +\entry{expansion, parameter}{19}{expansion, parameter} +\entry{command substitution}{21}{command substitution} +\entry{expansion, arithmetic}{22}{expansion, arithmetic} +\entry{arithmetic expansion}{22}{arithmetic expansion} +\entry{process substitution}{22}{process substitution} +\entry{word splitting}{22}{word splitting} +\entry{expansion, filename}{23}{expansion, filename} +\entry{expansion, pathname}{23}{expansion, pathname} +\entry{filename expansion}{23}{filename expansion} +\entry{pathname expansion}{23}{pathname expansion} +\entry{pattern matching}{23}{pattern matching} +\entry{matching, pattern}{23}{matching, pattern} +\entry{redirection}{25}{redirection} +\entry{command expansion}{28}{command expansion} +\entry{command execution}{29}{command execution} +\entry{command search}{29}{command search} +\entry{execution environment}{29}{execution environment} +\entry{environment}{30}{environment} +\entry{exit status}{31}{exit status} +\entry{signal handling}{31}{signal handling} +\entry{shell script}{32}{shell script} +\entry{special builtin}{56}{special builtin} +\entry{login shell}{69}{login shell} +\entry{interactive shell}{69}{interactive shell} +\entry{startup files}{69}{startup files} +\entry{interactive shell}{71}{interactive shell} +\entry{shell, interactive}{71}{shell, interactive} +\entry{expressions, conditional}{73}{expressions, conditional} +\entry{arithmetic, shell}{74}{arithmetic, shell} +\entry{shell arithmetic}{74}{shell arithmetic} +\entry{expressions, arithmetic}{74}{expressions, arithmetic} +\entry{evaluation, arithmetic}{74}{evaluation, arithmetic} +\entry{arithmetic evaluation}{74}{arithmetic evaluation} +\entry{alias expansion}{75}{alias expansion} +\entry{arrays}{76}{arrays} +\entry{directory stack}{77}{directory stack} +\entry{prompting}{79}{prompting} +\entry{restricted shell}{80}{restricted shell} +\entry{POSIX Mode}{80}{POSIX Mode} +\entry{job control}{85}{job control} +\entry{foreground}{85}{foreground} +\entry{background}{85}{background} +\entry{suspending jobs}{85}{suspending jobs} +\entry{Readline, how to use}{88}{Readline, how to use} +\entry{interaction, readline}{89}{interaction, readline} +\entry{notation, readline}{89}{notation, readline} +\entry{command editing}{89}{command editing} +\entry{editing command lines}{89}{editing command lines} +\entry{killing text}{91}{killing text} +\entry{yanking text}{91}{yanking text} +\entry{kill ring}{91}{kill ring} +\entry{initialization file, readline}{92}{initialization file, readline} +\entry{variables, readline}{93}{variables, readline} +\entry{programmable completion}{109}{programmable completion} +\entry{completion builtins}{111}{completion builtins} +\entry{History, how to use}{114}{History, how to use} +\entry{command history}{115}{command history} +\entry{history list}{115}{history list} +\entry{history builtins}{115}{history builtins} +\entry{history expansion}{117}{history expansion} +\entry{event designators}{117}{event designators} +\entry{history events}{117}{history events} +\entry{installation}{121}{installation} +\entry{configuration}{121}{configuration} +\entry{Bash installation}{121}{Bash installation} +\entry{Bash configuration}{121}{Bash configuration} +\entry{FDL, GNU Free Documentation License}{137}{FDL, GNU Free Documentation License} diff --git a/bash-20060316/doc/bashref.cps b/bash-20060316/doc/bashref.cps new file mode 100644 index 000000000..1a1e0a971 --- /dev/null +++ b/bash-20060316/doc/bashref.cps @@ -0,0 +1,136 @@ +\initial {A} +\entry {alias expansion}{75} +\entry {arithmetic evaluation}{74} +\entry {arithmetic expansion}{22} +\entry {arithmetic, shell}{74} +\entry {arrays}{76} +\initial {B} +\entry {background}{85} +\entry {Bash configuration}{121} +\entry {Bash installation}{121} +\entry {Bourne shell}{5} +\entry {brace expansion}{17} +\entry {builtin}{3} +\initial {C} +\entry {command editing}{89} +\entry {command execution}{29} +\entry {command expansion}{28} +\entry {command history}{115} +\entry {command search}{29} +\entry {command substitution}{21} +\entry {command timing}{8} +\entry {commands, compound}{9} +\entry {commands, conditional}{10} +\entry {commands, grouping}{13} +\entry {commands, lists}{9} +\entry {commands, looping}{9} +\entry {commands, pipelines}{8} +\entry {commands, shell}{8} +\entry {commands, simple}{8} +\entry {comments, shell}{7} +\entry {completion builtins}{111} +\entry {configuration}{121} +\entry {control operator}{3} +\initial {D} +\entry {directory stack}{77} +\initial {E} +\entry {editing command lines}{89} +\entry {environment}{30} +\entry {evaluation, arithmetic}{74} +\entry {event designators}{117} +\entry {execution environment}{29} +\entry {exit status}{3, 31} +\entry {expansion}{17} +\entry {expansion, arithmetic}{22} +\entry {expansion, brace}{17} +\entry {expansion, filename}{23} +\entry {expansion, parameter}{19} +\entry {expansion, pathname}{23} +\entry {expansion, tilde}{18} +\entry {expressions, arithmetic}{74} +\entry {expressions, conditional}{73} +\initial {F} +\entry {FDL, GNU Free Documentation License}{137} +\entry {field}{3} +\entry {filename}{3} +\entry {filename expansion}{23} +\entry {foreground}{85} +\entry {functions, shell}{14} +\initial {H} +\entry {history builtins}{115} +\entry {history events}{117} +\entry {history expansion}{117} +\entry {history list}{115} +\entry {History, how to use}{114} +\initial {I} +\entry {identifier}{3} +\entry {initialization file, readline}{92} +\entry {installation}{121} +\entry {interaction, readline}{89} +\entry {interactive shell}{69, 71} +\entry {internationalization}{7} +\initial {J} +\entry {job}{3} +\entry {job control}{3, 85} +\initial {K} +\entry {kill ring}{91} +\entry {killing text}{91} +\initial {L} +\entry {localization}{7} +\entry {login shell}{69} +\initial {M} +\entry {matching, pattern}{23} +\entry {metacharacter}{3} +\initial {N} +\entry {name}{3} +\entry {native languages}{7} +\entry {notation, readline}{89} +\initial {O} +\entry {operator, shell}{3} +\initial {P} +\entry {parameter expansion}{19} +\entry {parameters}{15} +\entry {parameters, positional}{15} +\entry {parameters, special}{16} +\entry {pathname expansion}{23} +\entry {pattern matching}{23} +\entry {pipeline}{8} +\entry {POSIX}{3} +\entry {POSIX Mode}{80} +\entry {process group}{3} +\entry {process group ID}{3} +\entry {process substitution}{22} +\entry {programmable completion}{109} +\entry {prompting}{79} +\initial {Q} +\entry {quoting}{6} +\entry {quoting, ANSI}{6} +\initial {R} +\entry {Readline, how to use}{88} +\entry {redirection}{25} +\entry {reserved word}{3} +\entry {restricted shell}{80} +\entry {return status}{3} +\initial {S} +\entry {shell arithmetic}{74} +\entry {shell function}{14} +\entry {shell script}{32} +\entry {shell variable}{15} +\entry {shell, interactive}{71} +\entry {signal}{4} +\entry {signal handling}{31} +\entry {special builtin}{4, 56} +\entry {startup files}{69} +\entry {suspending jobs}{85} +\initial {T} +\entry {tilde expansion}{18} +\entry {token}{4} +\entry {translation, native languages}{7} +\initial {V} +\entry {variable, shell}{15} +\entry {variables, readline}{93} +\initial {W} +\entry {word}{4} +\entry {word splitting}{22} +\initial {Y} +\entry {yanking text}{91} diff --git a/bash-20060316/doc/bashref.dvi b/bash-20060316/doc/bashref.dvi new file mode 100644 index 0000000000000000000000000000000000000000..21f808438cc76260655fb16dab20fadbcca44e9d GIT binary patch literal 590960 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

\n"); +} + +print "# end of pass 1\n" if $T2H_VERBOSE; + +SetDocumentLanguage('en') unless ($T2H_LANG); +#+++############################################################################ +# # +# Stuff related to Index generation # +# # +#---############################################################################ + +sub EnterIndexEntry +{ + my $prefix = shift; + my $key = shift; + my $docu_doc = shift; + my $section = shift; + my $lines = shift; + local $_; + + warn "$ERROR Undefined index command: $_", next + unless (exists ($index_properties->{$prefix})); + $key =~ s/\s+$//; + $_ = $key; + &protect_texi; + $key = $_; + $_ = &protect_html($_); + my $html_key = substitute_style($_); + my $id; + $key = remove_style($key); + $key = remove_things($key); + $_ = $key; + &unprotect_texi; + $key = $_; + while (exists $index->{$prefix}->{$key}) {$key .= ' '}; + if ($lines->[$#lines] =~ /^$/) + { + $id = $1; + } + else + { + $id = 'IDX' . ++$idx_num; + push(@$lines, &t2h_anchor($id, '', $T2H_INVISIBLE_MARK, !$in_pre)); + } + $index->{$prefix}->{$key}->{html_key} = $html_key; + $index->{$prefix}->{$key}->{section} = $section; + $index->{$prefix}->{$key}->{href} = "$docu_doc#$id"; + print "# found ${prefix}index for '$key' with id $id\n" + if $T2H_DEBUG & $DEBUG_INDEX; +} + +sub IndexName2Prefix +{ + my $name = shift; + my $prefix; + + for $prefix (keys %$index_properties) + { + return $prefix if ($index_properties->{$prefix}->{name} eq $name); + } + return undef; +} + +sub GetIndexEntries +{ + my $normal = shift; + my $code = shift; + my ($entries, $prefix, $key) = ({}); + + for $prefix (keys %$normal) + { + for $key (keys %{$index->{$prefix}}) + { + $entries->{$key} = {%{$index->{$prefix}->{$key}}}; + } + } + + if (defined($code)) + { + for $prefix (keys %$code) + { + unless (exists $normal->{$keys}) + { + for $key (keys %{$index->{$prefix}}) + { + $entries->{$key} = {%{$index->{$prefix}->{$key}}}; + $entries->{$key}->{html_key} = "$entries->{$key}->{html_key}"; + } + } + } + } + return $entries; +} + +sub byAlpha +{ + if ($a =~ /^[A-Za-z]/) + { + if ($b =~ /^[A-Za-z]/) + { + return lc($a) cmp lc($b); + } + else + { + return 1; + } + } + elsif ($b =~ /^[A-Za-z]/) + { + return -1; + } + else + { + return lc($a) cmp lc($b); + } +} + +sub GetIndexPages +{ + my $entries = shift; + my (@Letters, $key); + my ($EntriesByLetter, $Pages, $page) = ({}, [], {}); + my @keys = sort byAlpha keys %$entries; + + for $key (@keys) + { + push @{$EntriesByLetter->{uc(substr($key,0, 1))}} , $entries->{$key}; + } + @Letters = sort byAlpha keys %$EntriesByLetter; + + $T2H_SPLIT_INDEX = 0 unless ($T2H_SPLIT); + + unless ($T2H_SPLIT_INDEX) + { + $page->{First} = $Letters[0]; + $page->{Last} = $Letters[$#Letters]; + $page->{Letters} = \@Letters; + $page->{EntriesByLetter} = $EntriesByLetter; + push @$Pages, $page; + return $Pages; + } + + if ($T2H_SPLIT_INDEX =~ /^\d+$/) + { + my $i = 0; + my ($prev_letter, $letter); + $page->{First} = $Letters[0]; + for $letter (@Letters) + { + if ($i > $T2H_SPLIT_INDEX) + { + $page->{Last} = $prev_letter; + push @$Pages, {%$page}; + $page->{Letters} = []; + $page->{EntriesByLetter} = {}; + $page->{First} = $letter; + $i=0; + } + push @{$page->{Letters}}, $letter; + $page->{EntriesByLetter}->{$letter} = [@{$EntriesByLetter->{$letter}}]; + $i += scalar(@{$EntriesByLetter->{$letter}}); + $prev_letter = $letter; + } + $page->{Last} = $Letters[$#Letters]; + push @$Pages, {%$page}; + } + return $Pages; +} + +sub GetIndexSummary +{ + my $first_page = shift; + my $Pages = shift; + my $name = shift; + my ($page, $letter, $summary, $i, $l1, $l2, $l); + + $i = 0; + $summary = '
Jump to:   '; + + for $page ($first_page, @$Pages) + { + for $letter (@{$page->{Letters}}) + { + $l = t2h_anchor('', "$page->{href}#${name}_$letter", "$letter", + 0, 'style="text-decoration:none"') . "\n   \n"; + + if ($letter =~ /^[A-Za-z]/) + { + $l2 .= $l; + } + else + { + $l1 .= $l; + } + } + } + $summary .= $l1 . "
\n" if ($l1); + $summary .= $l2 . '

'; + return $summary; +} + +sub PrintIndexPage +{ + my $lines = shift; + my $summary = shift; + my $page = shift; + my $name = shift; + + push @$lines, $summary; + + push @$lines , <

+ + + +EOT + + for $letter (@{$page->{Letters}}) + { + push @$lines, "\n"; + for $entry (@{$page->{EntriesByLetter}->{$letter}}) + { + push @$lines, + "\n"; + } + push @$lines, "\n"; + } + push @$lines, "
Index Entry Section

$letter
" . + t2h_anchor('', $entry->{href}, $entry->{html_key}) . + "" . + t2h_anchor('', sec_href($entry->{section}), clean_name($entry->{section})) . + "

"; + push @$lines, $summary; +} + +sub PrintIndex +{ + my $lines = shift; + my $name = shift; + my $section = shift; + $section = 'Top' unless $section; + my $prefix = IndexName2Prefix($name); + + warn ("$ERROR printindex: bad index name: $name"), return + unless $prefix; + + if ($index_properties->{$prefix}->{code}) + { + $index_properties->{$prefix}->{from_code}->{$prefix} = 1; + } + else + { + $index_properties->{$prefix}->{from}->{$prefix}= 1; + } + + my $Entries = GetIndexEntries($index_properties->{$prefix}->{from}, + $index_properties->{$prefix}->{from_code}); + return unless %$Entries; + + if ($T2H_IDX_SUMMARY) + { + my $key; + open(FHIDX, ">$docu_rdir$docu_name" . "_$name.idx") + || die "Can't open > $docu_rdir$docu_name" . "_$name.idx for writing: $!\n"; + print "# writing $name index summary in $docu_rdir$docu_name" . "_$name.idx...\n" if $T2H_VERBOSE; + + for $key (sort keys %$Entries) + { + print FHIDX "$key\t$Entries->{$key}->{href}\n"; + } + } + + my $Pages = GetIndexPages($Entries); + my $page; + my $first_page = shift @$Pages; + my $sec_name = $section; + # remove section number + $sec_name =~ s/.*? // if $sec_name =~ /^([A-Z]|\d+)\./; + + ($first_page->{href} = sec_href($section)) =~ s/\#.*$//; + # Update tree structure of document + if (@$Pages) + { + my $sec; + my @after; + + while (@sections && $sections[$#sections] ne $section) + { + unshift @after, pop @sections; + } + + for $page (@$Pages) + { + my $node = ($page->{First} ne $page->{Last} ? + "$sec_name: $page->{First} -- $page->{Last}" : + "$sec_name: $page->{First}"); + push @sections, $node; + $node2sec{$node} = $node; + $sec2node{$node} = $node; + $node2up{$node} = $section; + $page->{href} = next_doc(); + $page->{name} = $node; + $node2href{$node} = $page->{href}; + if ($prev_node) + { + $node2next{$prev_node} = $node; + $node2prev{$node} = $prev_node; + } + $prev_node = $node; + } + push @sections, @after; + } + + my $summary = GetIndexSummary($first_page, $Pages, $name); + PrintIndexPage($lines, $summary, $first_page, $name); + for $page (@$Pages) + { + push @$lines, ($T2H_SPLIT eq 'chapter' ? $CHAPTEREND : $SECTIONEND); + push @$lines, "

$page->{name}

\n"; + PrintIndexPage($lines, $summary, $page, $name); + } +} + + +#+++############################################################################ +# # +# Pass 2/3: handle style, menu, index, cross-reference # +# # +#---############################################################################ + +@lines2 = (); # whole document (2nd pass) +@lines3 = (); # whole document (3rd pass) +$in_menu = 0; # am I inside a menu + +while (@lines) { + $_ = shift(@lines); + # + # special case (protected sections) + # + if (/^$PROTECTTAG/o) { + push(@lines2, $_); + next; + } + # + # menu + # + if (/^\@menu\b/) + { + $in_menu = 1; + $in_menu_listing = 1; + push(@lines2, &debug("
\n", __LINE__)); + next; + } + if (/^\@end\s+menu\b/) + { + if ($in_menu_listing) + { + push(@lines2, &debug("
\n", __LINE__)); + } + else + { + push(@lines2, &debug("\n", __LINE__)); + } + $in_menu = 0; + $in_menu_listing = 0; + next; + } + if ($in_menu) + { + my ($node, $name, $descr); + if (/^\*\s+($NODERE)::/o) + { + $node = $1; + $descr = $'; + } + elsif (/^\*\s+(.+):\s+([^\t,\.\n]+)[\t,\.\n]/) + { + $name = $1; + $node = $2; + $descr = $'; + } + elsif (/^\*/) + { + warn "$ERROR Bad menu line: $_"; + } + else + { + if ($in_menu_listing) + { + $in_menu_listing = 0; + push(@lines2, &debug("\n", __LINE__)); + } + # should be like verbatim -- preseve spaces, etc + s/ /\ /g; + $_ .= "
\n"; + push(@lines2, $_); + } + if ($node) + { + if (! $in_menu_listing) + { + $in_menu_listing = 1; + push(@lines2, &debug("\n", __LINE__)); + } + # look for continuation + while ($lines[0] =~ /^\s+\w+/) + { + $descr .= shift(@lines); + } + &menu_entry($node, $name, $descr); + } + next; + } + # + # printindex + # + PrintIndex(\@lines2, $2, $1), next + if (/^\@printindex\s+(\w+)/); + # + # simple style substitutions + # + $_ = &substitute_style($_); + # + # xref + # + while (/\@(x|px|info|)ref{([^{}]+)(}?)/) { + # note: Texinfo may accept other characters + ($type, $nodes, $full) = ($1, $2, $3); + ($before, $after) = ($`, $'); + if (! $full && $after) { + warn "$ERROR Bad xref (no ending } on line): $_"; + $_ = "$before$;0${type}ref\{$nodes$after"; + next; # while xref + } + if ($type eq 'x') { + $type = "$T2H_WORDS->{$T2H_LANG}->{'See'} "; + } elsif ($type eq 'px') { + $type = "$T2H_WORDS->{$T2H_LANG}->{'see'} "; + } elsif ($type eq 'info') { + $type = "$T2H_WORDS->{$T2H_LANG}->{'See'} Info"; + } else { + $type = ''; + } + unless ($full) { + $next = shift(@lines); + $next = &substitute_style($next); + chop($nodes); # remove final newline + if ($next =~ /\}/) { # split on 2 lines + $nodes .= " $`"; + $after = $'; + } else { + $nodes .= " $next"; + $next = shift(@lines); + $next = &substitute_style($next); + chop($nodes); + if ($next =~ /\}/) { # split on 3 lines + $nodes .= " $`"; + $after = $'; + } else { + warn "$ERROR Bad xref (no ending }): $_"; + $_ = "$before$;0xref\{$nodes$after"; + unshift(@lines, $next); + next; # while xref + } + } + } + $nodes =~ s/\s+/ /g; # remove useless spaces + @args = split(/\s*,\s*/, $nodes); + $node = $args[0]; # the node is always the first arg + $node = &normalise_node($node); + $sec = $args[2] || $args[1] || $node2sec{$node}; + $href = $node2href{$node}; + if (@args == 5) { # reference to another manual + $sec = $args[2] || $node; + $man = $args[4] || $args[3]; + $_ = "${before}${type}$T2H_WORDS->{$T2H_LANG}->{'section'} `$sec' in \@cite{$man}$after"; + } elsif ($type =~ /Info/) { # inforef + warn "$ERROR Wrong number of arguments: $_" unless @args == 3; + ($nn, $_, $in) = @args; + $_ = "${before}${type} file `$in', node `$nn'$after"; + } elsif ($sec && $href && ! $T2H_SHORT_REF) { + $_ = "${before}${type}"; + $_ .= "$T2H_WORDS->{$T2H_LANG}->{'section'} " if ${type}; + $_ .= &t2h_anchor('', $href, $sec) . $after; + } + elsif ($href) + { + $_ = "${before}${type} " . + &t2h_anchor('', $href, $args[2] || $args[1] || $node) . + $after; + } + else { + warn "$ERROR Undefined node ($node): $_"; + $_ = "$before$;0xref{$nodes}$after"; + } + } + + # replace images + s[\@image\s*{(.+?)}] + { + my @args = split (/\s*,\s*/, $1); + my $base = $args[0]; + my $image = + LocateIncludeFile("$base.png") || + LocateIncludeFile("$base.jpg") || + LocateIncludeFile("$base.gif"); + warn "$ERROR no image file for $base: $_" unless ($image && -e $image); + "\"$base\""; + ($T2H_CENTER_IMAGE ? + "
\"$base\"
" : + "\"$base\""); + }eg; + + # + # try to guess bibliography references or glossary terms + # + unless (/^/) { + $done .= $pre . &t2h_anchor('', $href, $what); + } else { + $done .= "$pre$what"; + } + $_ = $post; + } + $_ = $done . $_; + } + if ($T2H_USE_GLOSSARY) { + $done = ''; + while (/\b\w+\b/) { + ($pre, $what, $post) = ($`, $&, $'); + $entry = $what; + $entry =~ tr/A-Z/a-z/ unless $entry =~ /^[A-Z\s]+$/; + $href = $gloss2href{$entry}; + if (defined($href) && $post !~ /^[^<]*<\/A>/) { + $done .= $pre . &t2h_anchor('', $href, $what); + } else { + $done .= "$pre$what"; + } + $_ = $post; + } + $_ = $done . $_; + } + } + # otherwise + push(@lines2, $_); +} +print "# end of pass 2\n" if $T2H_VERBOSE; + +# +# split style substitutions +# +while (@lines2) { + $_ = shift(@lines2); + # + # special case (protected sections) + # + if (/^$PROTECTTAG/o) { + push(@lines3, $_); + next; + } + # + # split style substitutions + # + $old = ''; + while ($old ne $_) { + $old = $_; + if (/\@(\w+)\{/) { + ($before, $style, $after) = ($`, $1, $'); + if (defined($style_map{$style})) { + $_ = $after; + $text = ''; + $after = ''; + $failed = 1; + while (@lines2) { + if (/\}/) { + $text .= $`; + $after = $'; + $failed = 0; + last; + } else { + $text .= $_; + $_ = shift(@lines2); + } + } + if ($failed) { + die "* Bad syntax (\@$style) after: $before\n"; + } else { + $text = &apply_style($style, $text); + $_ = "$before$text$after"; + } + } + } + } + # otherwise + push(@lines3, $_); +} +print "# end of pass 3\n" if $T2H_VERBOSE; + +#+++############################################################################ +# # +# Pass 4: foot notes, final cleanup # +# # +#---############################################################################ + +@foot_lines = (); # footnotes +@doc_lines = (); # final document +$end_of_para = 0; # true if last line is

+ +while (@lines3) { + $_ = shift(@lines3); + # + # special case (protected sections) + # + if (/^$PROTECTTAG/o) { + push(@doc_lines, $_); + $end_of_para = 0; + next; + } + # + # footnotes + # + while (/\@footnote([^\{\s]+)\{/) { + ($before, $d, $after) = ($`, $1, $'); + $_ = $after; + $text = ''; + $after = ''; + $failed = 1; + while (@lines3) { + if (/\}/) { + $text .= $`; + $after = $'; + $failed = 0; + last; + } else { + $text .= $_; + $_ = shift(@lines3); + } + } + if ($failed) { + die "* Bad syntax (\@footnote) after: $before\n"; + } else { + $foot_num++; + $docid = "DOCF$foot_num"; + $footid = "FOOT$foot_num"; + $foot = "($foot_num)"; + push(@foot_lines, "

" . &t2h_anchor($footid, "$d#$docid", $foot) . "

\n"); + $text = "

$text" unless $text =~ /^\s*

/; + push(@foot_lines, "$text\n"); + $_ = $before . &t2h_anchor($docid, "$docu_foot#$footid", $foot) . $after; + } + } + # + # remove unnecessary

+ # + if (/^\s*

\s*$/) { + next if $end_of_para++; + } else { + $end_of_para = 0; + } + # otherwise + push(@doc_lines, $_); +} + +print "# end of pass 4\n" if $T2H_VERBOSE; + +#+++############################################################################ +# # +# Pass 5: print things # +# # +#---############################################################################ + +$T2H_L2H = &l2h_FinishToLatex if ($T2H_L2H); +$T2H_L2H = &l2h_ToHtml if ($T2H_L2H); +$T2H_L2H = &l2h_InitFromHtml if ($T2H_L2H); + +# fix node2up, node2prev, node2next, if desired +if ($has_top_command) +{ + for $section (keys %sec2number) + { + $node = $sec2node{$section}; + $node2up{$node} = Sec2UpNode($section) unless $node2up{$node}; + $node2prev{$node} = Sec2PrevNode($section) unless $node2prev{$node}; + $node2next{$node} = Sec2NextNode($section) unless $node2next{$node}; + } +} + +# prepare %T2H_THISDOC +$T2H_THISDOC{fulltitle} = $value{'_title'} || $value{'_settitle'} || "Untitled Document"; +$T2H_THISDOC{title} = $value{'_settitle'} || $T2H_THISDOC{fulltitle}; +$T2H_THISDOC{author} = $value{'_author'}; +$T2H_THISDOC{subtitle} = $value{'_subtitle'}; +$T2H_THISDOC{shorttitle} = $value{'_shorttitle'}; +for $key (keys %T2H_THISDOC) +{ + $_ = &substitute_style($T2H_THISDOC{$key}); + &unprotect_texi; + s/\s*$//; + $T2H_THISDOC{$key} = $_; +} + +# if no sections, then simply print document as is +unless (@sections) +{ + print "# Writing content into $docu_top_file \n" if $T2H_VERBOSE; + open(FILE, "> $docu_top_file") + || die "$ERROR: Can't open $docu_top_file for writing: $!\n"; + + &$T2H_print_page_head(\*FILE); + $T2H_THIS_SECTION = \@doc_lines; + t2h_print_lines(\*FILE); + &$T2H_print_foot_navigation(\*FILE); + &$T2H_print_page_foot(\*FILE); + close(FILE); + goto Finish; +} + +# initialize $T2H_HREF, $T2H_NAME +%T2H_HREF = + ( + 'First' , sec_href($sections[0]), + 'Last', sec_href($sections[$#sections]), + 'About', $docu_about. '#SEC_About', + ); + +# prepare TOC, OVERVIEW, TOP +$T2H_TOC = \@toc_lines; +$T2H_OVERVIEW = \@stoc_lines; +if ($has_top) +{ + while (1) + { + $_ = shift @doc_lines; + last if /$TOPEND/; + push @$T2H_TOP, $_; + } + $T2H_HREF{'Top'} = $docu_top . '#SEC_Top'; +} +else +{ + $T2H_HREF{'Top'} = $T2H_HREF{First}; +} + +$node2href{Top} = $T2H_HREF{Top}; +$T2H_HREF{Contents} = $docu_toc.'#SEC_Contents' if @toc_lines; +$T2H_HREF{Overview} = $docu_stoc.'#SEC_OVERVIEW' if @stoc_lines; + +# settle on index +if ($T2H_INDEX_CHAPTER) +{ + $T2H_HREF{Index} = $node2href{normalise_node($T2H_INDEX_CHAPTER)}; + warn "$ERROR T2H_INDEX_CHAPTER '$T2H_INDEX_CHAPTER' not found\n" + unless $T2H_HREF{Index}; +} +if (! $T2H_HREF{Index} && $first_index_chapter) +{ + $T2H_INDEX_CHAPTER = $first_index_chapter; + $T2H_HREF{Index} = $node2href{$T2H_INDEX_CHAPTER}; +} + +print "# Using '" . clean_name($T2H_INDEX_CHAPTER) . "' as index page\n" + if ($T2H_VERBOSE && $T2H_HREF{Index}); + +%T2H_NAME = + ( + 'First', clean_name($sec2node{$sections[0]}), + 'Last', clean_name($sec2node{$sections[$#sections]}), + 'About', $T2H_WORDS->{$T2H_LANG}->{'About_Title'}, + 'Contents', $T2H_WORDS->{$T2H_LANG}->{'ToC_Title'}, + 'Overview', $T2H_WORDS->{$T2H_LANG}->{'Overview_Title'}, + 'Index' , clean_name($T2H_INDEX_CHAPTER), + 'Top', clean_name($T2H_TOP_HEADING || $T2H_THISDOC{'title'} || $T2H_THISDOC{'shorttitle'}), + ); + +############################################################################# +# print frame and frame toc file +# +if ( $T2H_FRAMES ) +{ + open(FILE, "> $docu_frame_file") + || die "$ERROR: Can't open $docu_frame_file for writing: $!\n"; + print "# Creating frame in $docu_frame_file ...\n" if $T2H_VERBOSE; + &$T2H_print_frame(\*FILE); + close(FILE); + + open(FILE, "> $docu_toc_frame_file") + || die "$ERROR: Can't open $docu_toc_frame_file for writing: $!\n"; + print "# Creating toc frame in $docu_frame_file ...\n" if $T2H_VERBOSE; + &$T2H_print_toc_frame(\*FILE); + close(FILE); +} + + +############################################################################# +# print Top +# +open(FILE, "> $docu_top_file") + || die "$ERROR: Can't open $docu_top_file for writing: $!\n"; +&$T2H_print_page_head(\*FILE) unless ($T2H_SPLIT); + +if ($has_top) +{ + print "# Creating Top in $docu_top_file ...\n" if $T2H_VERBOSE; + $T2H_THIS_SECTION = $T2H_TOP; + $T2H_HREF{This} = $T2H_HREF{Top}; + $T2H_NAME{This} = $T2H_NAME{Top}; + &$T2H_print_Top(\*FILE); +} + +close(FILE) if $T2H_SPLIT; + +############################################################################# +# Print sections +# +$T2H_NODE{Forward} = $sec2node{$sections[0]}; +$T2H_NAME{Forward} = &clean_name($sec2node{$sections[0]}); +$T2H_HREF{Forward} = sec_href($sections[0]); +$T2H_NODE{This} = 'Top'; +$T2H_NAME{This} = $T2H_NAME{Top}; +$T2H_HREF{This} = $T2H_HREF{Top}; +if ($T2H_SPLIT) +{ + print "# writing " . scalar(@sections) . + " sections in $docu_rdir$docu_name"."_[1..$doc_num]" + if $T2H_VERBOSE; + $previous = ($T2H_SPLIT eq 'chapter' ? $CHAPTEREND : $SECTIONEND); + undef $FH; + $doc_num = 0; +} +else +{ + print "# writing " . scalar(@sections) . " sections in $docu_top_file ..." + if $T2H_VERBOSE; + $FH = \*FILE; + $previous = ''; +} + +$counter = 0; +# loop through sections +while ($section = shift(@sections)) +{ + if ($T2H_SPLIT && ($T2H_SPLIT eq 'section' || $previous eq $CHAPTEREND)) + { + if ($FH) + { + #close previous page + &$T2H_print_chapter_footer($FH) if $T2H_SPLIT eq 'chapter'; + &$T2H_print_page_foot($FH); + close($FH); + undef $FH; + } + } + $T2H_NAME{Back} = $T2H_NAME{This}; + $T2H_HREF{Back} = $T2H_HREF{This}; + $T2H_NODE{Back} = $T2H_NODE{This}; + $T2H_NAME{This} = $T2H_NAME{Forward}; + $T2H_HREF{This} = $T2H_HREF{Forward}; + $T2H_NODE{This} = $T2H_NODE{Forward}; + if ($sections[0]) + { + $T2H_NODE{Forward} = $sec2node{$sections[0]}; + $T2H_NAME{Forward} = &clean_name($T2H_NODE{Forward}); + $T2H_HREF{Forward} = sec_href($sections[0]); + } + else + { + undef $T2H_HREF{Forward}, $T2H_NODE{Forward}, $T2H_NAME{Forward}; + } + + $node = $node2up{$T2H_NODE{This}}; + $T2H_HREF{Up} = $node2href{$node}; + if ($T2H_HREF{Up} eq $T2H_HREF{This} || ! $T2H_HREF{Up}) + { + $T2H_NAME{Up} = $T2H_NAME{Top}; + $T2H_HREF{Up} = $T2H_HREF{Top}; + $T2H_NODE{Up} = 'Up'; + } + else + { + $T2H_NAME{Up} = &clean_name($node); + $T2H_NODE{Up} = $node; + } + + $node = $T2H_NODE{This}; + $node = $node2prev{$node}; + $T2H_NAME{Prev} = &clean_name($node); + $T2H_HREF{Prev} = $node2href{$node}; + $T2H_NODE{Prev} = $node; + + $node = $T2H_NODE{This}; + if ($node2up{$node} && $node2up{$node} ne 'Top'&& + ($node2prev{$node} eq $T2H_NODE{Back} || ! $node2prev{$node})) + { + $node = $node2up{$node}; + while ($node && $node ne $node2up{$node} && ! $node2prev{$node}) + { + $node = $node2up{$node}; + } + $node = $node2prev{$node} + unless $node2up{$node} eq 'Top' || ! $node2up{$node}; + } + else + { + $node = $node2prev{$node}; + } + $T2H_NAME{FastBack} = &clean_name($node); + $T2H_HREF{FastBack} = $node2href{$node}; + $T2H_NODE{FastBack} = $node; + + $node = $T2H_NODE{This}; + $node = $node2next{$node}; + $T2H_NAME{Next} = &clean_name($node); + $T2H_HREF{Next} = $node2href{$node}; + $T2H_NODE{Next} = $node; + + $node = $T2H_NODE{This}; + if ($node2up{$node} && $node2up{$node} ne 'Top'&& + ($node2next{$node} eq $T2H_NODE{Forward} || ! $node2next{$node})) + { + $node = $node2up{$node}; + while ($node && $node ne $node2up{$node} && ! $node2next{$node}) + { + $node = $node2up{$node}; + } + } + $node = $node2next{$node}; + $T2H_NAME{FastForward} = &clean_name($node); + $T2H_HREF{FastForward} = $node2href{$node}; + $T2H_NODE{FastForward} = $node; + + if (! defined($FH)) + { + my $file = $T2H_HREF{This}; + $file =~ s/\#.*$//; + open(FILE, "> $docu_rdir$file") || + die "$ERROR: Can't open $docu_rdir$file for writing: $!\n"; + $FH = \*FILE; + &$T2H_print_page_head($FH); + t2h_print_label($FH); + &$T2H_print_chapter_header($FH) if $T2H_SPLIT eq 'chapter'; + } + else + { + t2h_print_label($FH); + } + + $T2H_THIS_SECTION = []; + while (@doc_lines) { + $_ = shift(@doc_lines); + last if ($_ eq $SECTIONEND || $_ eq $CHAPTEREND); + push(@$T2H_THIS_SECTION, $_); + } + $previous = $_; + &$T2H_print_section($FH); + + if ($T2H_VERBOSE) + { + $counter++; + print "." if $counter =~ /00$/; + } +} +if ($T2H_SPLIT) +{ + &$T2H_print_chapter_footer($FH) if $T2H_SPLIT eq 'chapter'; + &$T2H_print_page_foot($FH); + close($FH); +} +print "\n" if $T2H_VERBOSE; + +############################################################################# +# Print ToC, Overview, Footnotes +# +undef $T2H_HREF{Prev}; +undef $T2H_HREF{Next}; +undef $T2H_HREF{Back}; +undef $T2H_HREF{Forward}; +undef $T2H_HREF{Up}; + +if (@foot_lines) +{ + print "# writing Footnotes in $docu_foot_file...\n" if $T2H_VERBOSE; + open (FILE, "> $docu_foot_file") || die "$ERROR: Can't open $docu_foot_file for writing: $!\n" + if $T2H_SPLIT; + $T2H_HREF{This} = $docu_foot; + $T2H_NAME{This} = $T2H_WORDS->{$T2H_LANG}->{'Footnotes_Title'}; + $T2H_THIS_SECTION = \@foot_lines; + &$T2H_print_Footnotes(\*FILE); + close(FILE) if $T2H_SPLIT; +} + +if (@toc_lines) +{ + print "# writing Toc in $docu_toc_file...\n" if $T2H_VERBOSE; + open (FILE, "> $docu_toc_file") || die "$ERROR: Can't open $docu_toc_file for writing: $!\n" + if $T2H_SPLIT; + $T2H_HREF{This} = $T2H_HREF{Contents}; + $T2H_NAME{This} = $T2H_NAME{Contents}; + $T2H_THIS_SECTION = \@toc_lines; + &$T2H_print_Toc(\*FILE); + close(FILE) if $T2H_SPLIT; +} + +if (@stoc_lines) +{ + print "# writing Overview in $docu_stoc_file...\n" if $T2H_VERBOSE; + open (FILE, "> $docu_stoc_file") || die "$ERROR: Can't open $docu_stoc_file for writing: $!\n" + if $T2H_SPLIT; + + $T2H_HREF{This} = $T2H_HREF{Overview}; + $T2H_NAME{This} = $T2H_NAME{Overview}; + $T2H_THIS_SECTION = \@stoc_lines; + unshift @$T2H_THIS_SECTION, "

\n"; + push @$T2H_THIS_SECTION, "\n
\n"; + &$T2H_print_Overview(\*FILE); + close(FILE) if $T2H_SPLIT; +} + +if ($about_body = &$T2H_about_body()) +{ + print "# writing About in $docu_about_file...\n" if $T2H_VERBOSE; + open (FILE, "> $docu_about_file") || die "$ERROR: Can't open $docu_about_file for writing: $!\n" + if $T2H_SPLIT; + + $T2H_HREF{This} = $T2H_HREF{About}; + $T2H_NAME{This} = $T2H_NAME{About}; + $T2H_THIS_SECTION = [$about_body]; + &$T2H_print_About(\*FILE); + close(FILE) if $T2H_SPLIT; +} + +unless ($T2H_SPLIT) +{ + &$T2H_print_page_foot(\*FILE); + close (FILE); +} + +Finish: +&l2h_FinishFromHtml if ($T2H_L2H); +&l2h_Finish if($T2H_L2H); +print "# that's all folks\n" if $T2H_VERBOSE; + +exit(0); + +#+++############################################################################ +# # +# Low level functions # +# # +#---############################################################################ + +sub LocateIncludeFile +{ + my $file = shift; + my $dir; + + return $file if (-e $file && -r $file); + foreach $dir (@T2H_INCLUDE_DIRS) + { + return "$dir/$file" if (-e "$dir/$file" && -r "$dir/$file"); + } + return undef; +} + +sub clean_name +{ + local ($_); + $_ = &remove_style($_[0]); + &unprotect_texi; + return $_; +} + +sub update_sec_num { + local($name, $level) = @_; + my $ret; + + $level--; # here we start at 0 + if ($name =~ /^appendix/ || defined(@appendix_sec_num)) { + # appendix style + if (defined(@appendix_sec_num)) { + &incr_sec_num($level, @appendix_sec_num); + } else { + @appendix_sec_num = ('A', 0, 0, 0); + } + $ret = join('.', @appendix_sec_num[0..$level]); + } else { + # normal style + if (defined(@normal_sec_num)) + { + &incr_sec_num($level, @normal_sec_num); + } + else + { + @normal_sec_num = (1, 0, 0, 0); + } + $ret = join('.', @normal_sec_num[0..$level]); + } + + $ret .= "." if $level == 0; + return $ret; +} + +sub incr_sec_num { + local($level, $l); + $level = shift(@_); + $_[$level]++; + foreach $l ($level+1 .. 3) { + $_[$l] = 0; + } +} + +sub Sec2UpNode +{ + my $sec = shift; + my $num = $sec2number{$sec}; + + return '' unless $num; + return 'Top' unless $num =~ /\.\d+/; + $num =~ s/\.[^\.]*$//; + $num = $num . '.' unless $num =~ /\./; + return $sec2node{$number2sec{$num}}; +} + +sub Sec2PrevNode +{ + my $sec = shift; + my $num = $sec2number{$sec}; + my ($i, $post); + + if ($num =~ /(\w+)(\.$|$)/) + { + $num = $`; + $i = $1; + $post = $2; + if ($i eq 'A') + { + $i = $normal_sec_num[0]; + } + elsif ($i ne '1') + { + # unfortunately, -- operator is not magical + $i = chr(ord($i) + 1); + } + else + { + return ''; + } + return $sec2node{$number2sec{$num . $i . $post}} + } + return ''; +} + +sub Sec2NextNode +{ + my $sec = shift; + my $num = $sec2number{$sec}; + my $i; + + if ($num =~ /(\w+)(\.$|$)/) + { + $num = $`; + $i = $1; + $post = $2; + if ($post eq '.' && $i eq $normal_sec_num[0]) + { + $i = 'A'; + } + else + { + $i++; + } + return $sec2node{$number2sec{$num . $i . $post}} + } + return ''; +} + +sub check { + local($_, %seen, %context, $before, $match, $after); + + while (<>) { + if (/\@(\*|\.|\:|\@|\{|\})/) { + $seen{$&}++; + $context{$&} .= "> $_" if $T2H_VERBOSE; + $_ = "$`XX$'"; + redo; + } + if (/\@(\w+)/) { + ($before, $match, $after) = ($`, $&, $'); + if ($before =~ /\b[\w-]+$/ && $after =~ /^[\w-.]*\b/) { # e-mail address + $seen{'e-mail address'}++; + $context{'e-mail address'} .= "> $_" if $T2H_VERBOSE; + } else { + $seen{$match}++; + $context{$match} .= "> $_" if $T2H_VERBOSE; + } + $match =~ s/^\@/X/; + $_ = "$before$match$after"; + redo; + } + } + + foreach (sort(keys(%seen))) { + if ($T2H_VERBOSE) { + print "$_\n"; + print $context{$_}; + } else { + print "$_ ($seen{$_})\n"; + } + } +} + +sub open { + local($name) = @_; + + ++$fh_name; + if (open($fh_name, $name)) { + unshift(@fhs, $fh_name); + } else { + warn "$ERROR Can't read file $name: $!\n"; + } +} + +sub init_input { + @fhs = (); # hold the file handles to read + @input_spool = (); # spooled lines to read + $fh_name = 'FH000'; + &open($docu); +} + +sub next_line { + local($fh, $line); + + if (@input_spool) { + $line = shift(@input_spool); + return($line); + } + while (@fhs) { + $fh = $fhs[0]; + $line = <$fh>; + return($line) if $line; + close($fh); + shift(@fhs); + } + return(undef); +} + +# used in pass 1, use &next_line +sub skip_until { + local($tag) = @_; + local($_); + + while ($_ = &next_line) { + return if /^\@end\s+$tag\s*$/; + } + die "* Failed to find '$tag' after: " . $lines[$#lines]; +} + +# used in pass 1 for l2h use &next_line +sub string_until { + local($tag) = @_; + local($_, $string); + + while ($_ = &next_line) { + return $string if /^\@end\s+$tag\s*$/; +# $_ =~ s/hbox/mbox/g; + $string = $string.$_; + } + die "* Failed to find '$tag' after: " . $lines[$#lines]; +} + +# +# HTML stacking to have a better HTML output +# + +sub html_reset { + @html_stack = ('html'); + $html_element = 'body'; +} + +sub html_push { + local($what) = @_; + push(@html_stack, $html_element); + $html_element = $what; +} + +sub html_push_if { + local($what) = @_; + push(@html_stack, $html_element) + if ($html_element && $html_element ne 'P'); + $html_element = $what; +} + +sub html_pop { + $html_element = pop(@html_stack); +} + +sub html_pop_if { + local($elt); + + if (@_) { + foreach $elt (@_) { + if ($elt eq $html_element) { + $html_element = pop(@html_stack) if @html_stack; + last; + } + } + } else { + $html_element = pop(@html_stack) if @html_stack; + } +} + +sub html_debug { + local($what, $line) = @_; + if ($T2H_DEBUG & $DEBUG_HTML) + { + $what = "\n" unless $what; + return("$what") + } + return($what); +} + +# to debug the output... +sub debug { + local($what, $line) = @_; + return("$what") + if $T2H_DEBUG & $DEBUG_HTML; + return($what); +} + +sub SimpleTexi2Html +{ + local $_ = $_[0]; + &protect_texi; + &protect_html; + $_ = substitute_style($_); + $_[0] = $_; +} + +sub normalise_node { + local $_ = $_[0]; + s/\s+/ /g; + s/ $//; + s/^ //; + &protect_texi; + &protect_html; + $_ = substitute_style($_); + $_[0] = $_; +} + +sub menu_entry +{ + my ($node, $name, $descr) = @_; + my ($href, $entry); + + &normalise_node($node); + $href = $node2href{$node}; + if ($href) + { + $descr =~ s/^\s+//; + $descr =~ s/\s*$//; + $descr = SimpleTexi2Html($descr); + if ($T2H_NUMBER_SECTIONS && !$T2H_NODE_NAME_IN_MENU && $node2sec{$node}) + { + $entry = $node2sec{$node}; + $name = ''; + } + else + { + &normalise_node($name); + $entry = ($name && ($name ne $node || ! $T2H_AVOID_MENU_REDUNDANCY) + ? "$name : $node" : $node); + } + + if ($T2H_AVOID_MENU_REDUNDANCY && $descr) + { + my $clean_entry = $entry; + $clean_entry =~ s/^.*? // if ($clean_entry =~ /^([A-Z]|\d+)\.[\d\.]* /); + $clean_entry =~ s/[^\w]//g; + my $clean_descr = $descr; + $clean_descr =~ s/[^\w]//g; + $descr = '' if ($clean_entry eq $clean_descr) + } + push(@lines2,&debug('
\n", __LINE__)); + } + elsif ($node =~ /^\(.*\)\w+/) + { + push(@lines2,&debug('\n", __LINE__)) + } + else + { + warn "$ERROR Undefined node of menu_entry ($node): $_"; + } +} + +sub do_ctrl { "^$_[0]" } + +sub do_email { + local($addr, $text) = split(/,\s*/, $_[0]); + + $text = $addr unless $text; + &t2h_anchor('', "mailto:$addr", $text); +} + +sub do_sc +{ + # l2h does this much better + return &l2h_ToLatex("{\\sc ".&unprotect_html($_[0])."}") if ($T2H_L2H); + return "\U$_[0]\E"; +} + +sub do_math +{ + return &l2h_ToLatex("\$".&unprotect_html($_[0])."\$") if ($T2H_L2H); + return "".$text.""; +} + +sub do_uref { + local($url, $text, $only_text) = split(/,\s*/, $_[0]); + + $text = $only_text if $only_text; + $text = $url unless $text; + &t2h_anchor('', $url, $text); +} + +sub do_url { &t2h_anchor('', $_[0], $_[0]) } + +sub do_acronym +{ + return '' . $_[0] . ''; +} + +sub do_accent +{ + return "&$_[0]acute;" if $_[1] eq 'H'; + return "$_[0]." if $_[1] eq 'dotaccent'; + return "$_[0]*" if $_[1] eq 'ringaccent'; + return "$_[0]".'[' if $_[1] eq 'tieaccent'; + return "$_[0]".'(' if $_[1] eq 'u'; + return "$_[0]_" if $_[1] eq 'ubaraccent'; + return ".$_[0]" if $_[1] eq 'udotaccent'; + return "$_[0]<" if $_[1] eq 'v'; + return "&$_[0]cedil;" if $_[1] eq ','; + return "$_[0]" if $_[1] eq 'dotless'; + return undef; +} + +sub apply_style { + local($texi_style, $text) = @_; + local($style); + + $style = $style_map{$texi_style}; + if (defined($style)) { # known style + if ($style =~ /^\"/) { # add quotes + $style = $'; + $text = "\`$text\'"; + } + if ($style =~ /^\&/) { # custom + $style = $'; + $text = &$style($text, $texi_style); + } elsif ($style) { # good style + $text = "<$style>$text"; + } else { # no style + } + } else { # unknown style + $text = undef; + } + return($text); +} + +# remove Texinfo styles +sub remove_style { + local($_) = @_; + 1 while(s/\@\w+{([^\{\}]+)}/$1/g); + return($_); +} + +sub remove_things +{ + local ($_) = @_; + s|\@(\w+)\{\}|$1|g; + return $_; +} + +sub substitute_style { + local($_) = @_; + local($changed, $done, $style, $text); + + &simple_substitutions; + $changed = 1; + while ($changed) { + $changed = 0; + $done = ''; + while (/\@(\w+){([^\{\}]+)}/ || /\@(,){([^\{\}]+)}/) { + $text = &apply_style($1, $2); + if ($text) { + $_ = "$`$text$'"; + $changed = 1; + } else { + $done .= "$`\@$1"; + $_ = "{$2}$'"; + } + } + $_ = $done . $_; + } + return($_); +} + +sub t2h_anchor { + local($name, $href, $text, $newline, $extra_attribs) = @_; + local($result); + + $result = " + $what =~ s/\&/\&\#38;/g; + $what =~ s/\/\&\#62;/g; + # restore anything in quotes + # this fixes my problem where I had: + # < IMG SRC="leftarrow.gif" ALT="<--" > but what if I wanted < in my ALT text ?? + # maybe byte stuffing or some other technique should be used. + $what =~ s/\"([^\&]+)\&\#60;(.*)\"/"$1<$2"/g; + $what =~ s/\"([^\&]+)\&\#62;(.*)\"/"$1>$2"/g; + $what =~ s/\"([^\&]+)\&\#38;(.*)\"/"$1&$2"/g; + # but recognize some HTML things + $what =~ s/\&\#60;\/A\&\#62;/<\/A>/g; # + $what =~ s/\&\#60;A ([^\&]+)\&\#62;//g; # + $what =~ s/\&\#60;IMG ([^\&]+)\&\#62;//g; # + return($what); +} + +sub unprotect_texi { + s/$;0/\@/go; + s/$;1/\{/go; + s/$;2/\}/go; + s/$;3/\`/go; + s/$;4/\'/go; +} + +sub Unprotect_texi +{ + local $_ = shift; + &unprotect_texi; + return($_); +} + +sub unprotect_html { + local($what) = @_; + $what =~ s/\&\#38;/\&/g; + $what =~ s/\&\#60;/\/g; + return($what); +} + +sub t2h_print_label +{ + my $fh = shift; + my $href = shift || $T2H_HREF{This}; + $href =~ s/.*#(.*)$/$1/; + print $fh qq{\n}; +} + +############################################################################## + + # These next few lines are legal in both Perl and nroff. + +.00 ; # finish .ig + +'di \" finish diversion--previous line must be blank +.nr nl 0-1 \" fake up transition to first page again +.nr % 0 \" start at page 1 +'; __END__ ############# From here on it's a standard manual page ############ +.so /usr/local/man/man1/texi2html.1 diff --git a/bash-20060316/support/xenix-link.sh b/bash-20060316/support/xenix-link.sh new file mode 100755 index 000000000..ed22a08c9 --- /dev/null +++ b/bash-20060316/support/xenix-link.sh @@ -0,0 +1,84 @@ +: +# link bash for Xenix under SCO Unix +# +# For xenix 2.2: +# CC="cc -xenix -lx" ./configure +# edit config.h: +# comment out the define for HAVE_DIRENT_H +# enable the define for HAVE_SYS_NDIR_H to 1 +# make +# CC="cc -xenix -lx" ./link.sh +# +# For xenix 2.3: +# CC="cc -x2.3" ./configure +# make +# CC="cc -x2.3" ./link.sh + +# Copyright (C) 1989-2002 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 2, 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, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. + +set -x + +rm -f bash + +if [ -z "$CC" ] +then + if [ -f /unix ] && [ ! -f /xenix ] + then + CC="cc -xenix" + else + CC=gcc + fi +fi + +try_dir=no +try_23=no +try_x=yes + +case "$CC" in +*-ldir*) try_dir=yes ;; +esac + +case "$CC" in +*-lx*) try_23=no ; try_x=yes ;; +esac + +case "$CC" in +*-x2.3*|*-l2.3*) try_23=yes ; try_dir=yes ;; +esac + +libs= +try="socket" +if [ $try_dir = yes ] ; then try="$try dir" ; fi +if [ $try_23 = yes ] ; then try="$try 2.3" ; fi +if [ $try_x = yes ] ; then try="$try x" ; fi +for name in $try +do + if [ -r "/lib/386/Slib${name}.a" ] ; then libs="$libs -l$name" ; fi +done + +$CC -o bash shell.o eval.o y.tab.o \ +general.o make_cmd.o print_cmd.o dispose_cmd.o execute_cmd.o variables.o \ +copy_cmd.o error.o expr.o flags.o nojobs.o subst.o hashcmd.o hashlib.o \ +mailcheck.o trap.o input.o unwind_prot.o pathexp.o sig.o test.o \ +version.o alias.o array.o braces.o bracecomp.o bashhist.o bashline.o \ +getcwd.o siglist.o vprint.o oslib.o list.o stringlib.o locale.o \ +xmalloc.o builtins/libbuiltins.a \ +lib/readline/libreadline.a lib/readline/libhistory.a \ +-ltermcap lib/glob/libglob.a lib/tilde/libtilde.a lib/malloc/libmalloc.a \ +$libs + +ls -l bash diff --git a/bash-20060316/support/zecho.c b/bash-20060316/support/zecho.c new file mode 100644 index 000000000..cc6ae60f6 --- /dev/null +++ b/bash-20060316/support/zecho.c @@ -0,0 +1,42 @@ +/* zecho - bare-bones echo */ + +/* Copyright (C) 1996-2002 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include "bashansi.h" +#include + +int +main(argc, argv) +int argc; +char **argv; +{ + argv++; + + while (*argv) { + (void)printf("%s", *argv); + if (*++argv) + putchar(' '); + } + + putchar('\n'); + exit(0); +} diff --git a/bash-20060316/syntax.h b/bash-20060316/syntax.h new file mode 100644 index 000000000..8bf154852 --- /dev/null +++ b/bash-20060316/syntax.h @@ -0,0 +1,102 @@ +/* syntax.h -- Syntax definitions for the shell */ + +/* Copyright (C) 2000 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#ifndef _SYNTAX_H_ +#define _SYNTAX_H_ + +/* Defines for use by mksyntax.c */ + +#define slashify_in_quotes "\\`$\"\n" +#define slashify_in_here_document "\\`$" + +#define shell_meta_chars "()<>;&|" +#define shell_break_chars "()<>;&| \t\n" + +#define shell_quote_chars "\"`'" + +#if defined (PROCESS_SUBSTITUTION) +# define shell_exp_chars "$<>" +#else +# define shell_exp_chars "$" +#endif + +#if defined (EXTENDED_GLOB) +# define ext_glob_chars "@*+?!" +#else +# define ext_glob_chars "" +#endif +#define shell_glob_chars "*?[]^" + +/* Defines shared by mksyntax.c and the rest of the shell code. */ + +/* Values for character flags in syntax tables */ + +#define CWORD 0x0000 /* nothing special; an ordinary character */ +#define CSHMETA 0x0001 /* shell meta character */ +#define CSHBRK 0x0002 /* shell break character */ +#define CBACKQ 0x0004 /* back quote */ +#define CQUOTE 0x0008 /* shell quote character */ +#define CSPECL 0x0010 /* special character that needs quoting */ +#define CEXP 0x0020 /* shell expansion character */ +#define CBSDQUOTE 0x0040 /* characters escaped by backslash in double quotes */ +#define CBSHDOC 0x0080 /* characters escaped by backslash in here doc */ +#define CGLOB 0x0100 /* globbing characters */ +#define CXGLOB 0x0200 /* extended globbing characters */ +#define CXQUOTE 0x0400 /* cquote + backslash */ +#define CSPECVAR 0x0800 /* single-character shell variable name */ +#define CSUBSTOP 0x1000 /* values of OP for ${word[:]OPstuff} */ + +/* Defines for use by the rest of the shell. */ +extern int sh_syntaxtab[]; +extern int sh_syntabsiz; + +#define shellmeta(c) (sh_syntaxtab[(unsigned char)(c)] & CSHMETA) +#define shellbreak(c) (sh_syntaxtab[(unsigned char)(c)] & CSHBRK) +#define shellquote(c) (sh_syntaxtab[(unsigned char)(c)] & CQUOTE) + +#define shellxquote(c) (sh_syntaxtab[(unsigned char)(c)] & CXQUOTE) + +#define issyntype(c, t) ((sh_syntaxtab[(unsigned char)(c)] & (t)) != 0) +#define notsyntype(c,t) ((sh_syntaxtab[(unsigned char)(c)] & (t)) == 0) + +#if defined (PROCESS_SUBSTITUTION) +# define shellexp(c) ((c) == '$' || (c) == '<' || (c) == '>') +#else +# define shellexp(c) ((c) == '$') +#endif + +#if defined (EXTENDED_GLOB) +# define PATTERN_CHAR(c) \ + ((c) == '@' || (c) == '*' || (c) == '+' || (c) == '?' || (c) == '!') +#else +# define PATTERN_CHAR(c) 0 +#endif + +#define GLOB_CHAR(c) \ + ((c) == '*' || (c) == '?' || (c) == '[' || (c) == ']' || (c) == '^') + +#define CTLESC '\001' +#define CTLNUL '\177' + +#if !defined (HAVE_ISBLANK) && !defined (isblank) +# define isblank(x) ((x) == ' ' || (x) == '\t') +#endif + +#endif /* _SYNTAX_H_ */ diff --git a/bash-20060316/test.c b/bash-20060316/test.c new file mode 100644 index 000000000..f01929f70 --- /dev/null +++ b/bash-20060316/test.c @@ -0,0 +1,825 @@ +/* GNU test program (ksb and mjb) */ + +/* Modified to run with the GNU shell Apr 25, 1988 by bfox. */ + +/* Copyright (C) 1987-2005 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +/* Define PATTERN_MATCHING to get the csh-like =~ and !~ pattern-matching + binary operators. */ +/* #define PATTERN_MATCHING */ + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include + +#include "bashtypes.h" + +#if !defined (HAVE_LIMITS_H) +# include +#endif + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +#if !defined (_POSIX_VERSION) && defined (HAVE_SYS_FILE_H) +# include +#endif /* !_POSIX_VERSION */ +#include "posixstat.h" +#include "filecntl.h" + +#include "bashintl.h" + +#include "shell.h" +#include "pathexp.h" +#include "test.h" +#include "builtins/common.h" + +#include + +#if !defined (STRLEN) +# define STRLEN(s) ((s)[0] ? ((s)[1] ? ((s)[2] ? strlen(s) : 2) : 1) : 0) +#endif + +#if !defined (STREQ) +# define STREQ(a, b) ((a)[0] == (b)[0] && strcmp (a, b) == 0) +#endif /* !STREQ */ + +#if !defined (R_OK) +#define R_OK 4 +#define W_OK 2 +#define X_OK 1 +#define F_OK 0 +#endif /* R_OK */ + +#define EQ 0 +#define NE 1 +#define LT 2 +#define GT 3 +#define LE 4 +#define GE 5 + +#define NT 0 +#define OT 1 +#define EF 2 + +/* The following few defines control the truth and false output of each stage. + TRUE and FALSE are what we use to compute the final output value. + SHELL_BOOLEAN is the form which returns truth or falseness in shell terms. + Default is TRUE = 1, FALSE = 0, SHELL_BOOLEAN = (!value). */ +#define TRUE 1 +#define FALSE 0 +#define SHELL_BOOLEAN(value) (!(value)) + +#define TEST_ERREXIT_STATUS 2 + +static procenv_t test_exit_buf; +static int test_error_return; +#define test_exit(val) \ + do { test_error_return = val; longjmp (test_exit_buf, 1); } while (0) + +extern int sh_stat __P((const char *, struct stat *)); + +static int pos; /* The offset of the current argument in ARGV. */ +static int argc; /* The number of arguments present in ARGV. */ +static char **argv; /* The argument list. */ +static int noeval; + +static void test_syntax_error __P((char *, char *)) __attribute__((__noreturn__)); +static void beyond __P((void)) __attribute__((__noreturn__)); +static void integer_expected_error __P((char *)) __attribute__((__noreturn__)); + +static int unary_operator __P((void)); +static int binary_operator __P((void)); +static int two_arguments __P((void)); +static int three_arguments __P((void)); +static int posixtest __P((void)); + +static int expr __P((void)); +static int term __P((void)); +static int and __P((void)); +static int or __P((void)); + +static int filecomp __P((char *, char *, int)); +static int arithcomp __P((char *, char *, int, int)); +static int patcomp __P((char *, char *, int)); + +static void +test_syntax_error (format, arg) + char *format, *arg; +{ + builtin_error (format, arg); + test_exit (TEST_ERREXIT_STATUS); +} + +/* + * beyond - call when we're beyond the end of the argument list (an + * error condition) + */ +static void +beyond () +{ + test_syntax_error (_("argument expected"), (char *)NULL); +} + +/* Syntax error for when an integer argument was expected, but + something else was found. */ +static void +integer_expected_error (pch) + char *pch; +{ + test_syntax_error (_("%s: integer expression expected"), pch); +} + +/* Increment our position in the argument list. Check that we're not + past the end of the argument list. This check is supressed if the + argument is FALSE. Made a macro for efficiency. */ +#define advance(f) do { ++pos; if (f && pos >= argc) beyond (); } while (0) +#define unary_advance() do { advance (1); ++pos; } while (0) + +/* + * expr: + * or + */ +static int +expr () +{ + if (pos >= argc) + beyond (); + + return (FALSE ^ or ()); /* Same with this. */ +} + +/* + * or: + * and + * and '-o' or + */ +static int +or () +{ + int value, v2; + + value = and (); + if (pos < argc && argv[pos][0] == '-' && argv[pos][1] == 'o' && !argv[pos][2]) + { + advance (0); + v2 = or (); + return (value || v2); + } + + return (value); +} + +/* + * and: + * term + * term '-a' and + */ +static int +and () +{ + int value, v2; + + value = term (); + if (pos < argc && argv[pos][0] == '-' && argv[pos][1] == 'a' && !argv[pos][2]) + { + advance (0); + v2 = and (); + return (value && v2); + } + return (value); +} + +/* + * term - parse a term and return 1 or 0 depending on whether the term + * evaluates to true or false, respectively. + * + * term ::= + * '-'('a'|'b'|'c'|'d'|'e'|'f'|'g'|'h'|'k'|'p'|'r'|'s'|'u'|'w'|'x') filename + * '-'('G'|'L'|'O'|'S'|'N') filename + * '-t' [int] + * '-'('z'|'n') string + * '-o' option + * string + * string ('!='|'='|'==') string + * '-'(eq|ne|le|lt|ge|gt) + * file '-'(nt|ot|ef) file + * '(' ')' + * int ::= + * positive and negative integers + */ +static int +term () +{ + int value; + + if (pos >= argc) + beyond (); + + /* Deal with leading `not's. */ + if (argv[pos][0] == '!' && argv[pos][1] == '\0') + { + value = 0; + while (pos < argc && argv[pos][0] == '!' && argv[pos][1] == '\0') + { + advance (1); + value = 1 - value; + } + + return (value ? !term() : term()); + } + + /* A paren-bracketed argument. */ + if (argv[pos][0] == '(' && argv[pos][1] == '\0') /* ) */ + { + advance (1); + value = expr (); + if (argv[pos] == 0) /* ( */ + test_syntax_error (_("`)' expected"), (char *)NULL); + else if (argv[pos][0] != ')' || argv[pos][1]) /* ( */ + test_syntax_error (_("`)' expected, found %s"), argv[pos]); + advance (0); + return (value); + } + + /* are there enough arguments left that this could be dyadic? */ + if ((pos + 3 <= argc) && test_binop (argv[pos + 1])) + value = binary_operator (); + + /* Might be a switch type argument */ + else if (argv[pos][0] == '-' && argv[pos][2] == '\0') + { + if (test_unop (argv[pos])) + value = unary_operator (); + else + test_syntax_error (_("%s: unary operator expected"), argv[pos]); + } + else + { + value = argv[pos][0] != '\0'; + advance (0); + } + + return (value); +} + +static int +filecomp (s, t, op) + char *s, *t; + int op; +{ + struct stat st1, st2; + int r1, r2; + + if ((r1 = sh_stat (s, &st1)) < 0) + { + if (op == EF) + return (FALSE); + } + if ((r2 = sh_stat (t, &st2)) < 0) + { + if (op == EF) + return (FALSE); + } + + switch (op) + { + case OT: return (r1 < r2 || (r2 == 0 && st1.st_mtime < st2.st_mtime)); + case NT: return (r1 > r2 || (r1 == 0 && st1.st_mtime > st2.st_mtime)); + case EF: return ((st1.st_dev == st2.st_dev) && (st1.st_ino == st2.st_ino)); + } + return (FALSE); +} + +static int +arithcomp (s, t, op, flags) + char *s, *t; + int op, flags; +{ + intmax_t l, r; + int expok; + + if (flags & TEST_ARITHEXP) + { + l = evalexp (s, &expok); + if (expok == 0) + return (FALSE); /* should probably longjmp here */ + r = evalexp (t, &expok); + if (expok == 0) + return (FALSE); /* ditto */ + } + else + { + if (legal_number (s, &l) == 0) + integer_expected_error (s); + if (legal_number (t, &r) == 0) + integer_expected_error (t); + } + + switch (op) + { + case EQ: return (l == r); + case NE: return (l != r); + case LT: return (l < r); + case GT: return (l > r); + case LE: return (l <= r); + case GE: return (l >= r); + } + + return (FALSE); +} + +static int +patcomp (string, pat, op) + char *string, *pat; + int op; +{ + int m; + + m = strmatch (pat, string, FNMATCH_EXTFLAG|FNMATCH_IGNCASE); + return ((op == EQ) ? (m == 0) : (m != 0)); +} + +int +binary_test (op, arg1, arg2, flags) + char *op, *arg1, *arg2; + int flags; +{ + int patmatch; + + patmatch = (flags & TEST_PATMATCH); + + if (op[0] == '=' && (op[1] == '\0' || (op[1] == '=' && op[2] == '\0'))) + return (patmatch ? patcomp (arg1, arg2, EQ) : STREQ (arg1, arg2)); + + else if ((op[0] == '>' || op[0] == '<') && op[1] == '\0') + return ((op[0] == '>') ? (strcmp (arg1, arg2) > 0) : (strcmp (arg1, arg2) < 0)); + + else if (op[0] == '!' && op[1] == '=' && op[2] == '\0') + return (patmatch ? patcomp (arg1, arg2, NE) : (STREQ (arg1, arg2) == 0)); + + else if (op[2] == 't') + { + switch (op[1]) + { + case 'n': return (filecomp (arg1, arg2, NT)); /* -nt */ + case 'o': return (filecomp (arg1, arg2, OT)); /* -ot */ + case 'l': return (arithcomp (arg1, arg2, LT, flags)); /* -lt */ + case 'g': return (arithcomp (arg1, arg2, GT, flags)); /* -gt */ + } + } + else if (op[1] == 'e') + { + switch (op[2]) + { + case 'f': return (filecomp (arg1, arg2, EF)); /* -ef */ + case 'q': return (arithcomp (arg1, arg2, EQ, flags)); /* -eq */ + } + } + else if (op[2] == 'e') + { + switch (op[1]) + { + case 'n': return (arithcomp (arg1, arg2, NE, flags)); /* -ne */ + case 'g': return (arithcomp (arg1, arg2, GE, flags)); /* -ge */ + case 'l': return (arithcomp (arg1, arg2, LE, flags)); /* -le */ + } + } + + return (FALSE); /* should never get here */ +} + + +static int +binary_operator () +{ + int value; + char *w; + + w = argv[pos + 1]; + if ((w[0] == '=' && (w[1] == '\0' || (w[1] == '=' && w[2] == '\0'))) || /* =, == */ + ((w[0] == '>' || w[0] == '<') && w[1] == '\0') || /* <, > */ + (w[0] == '!' && w[1] == '=' && w[2] == '\0')) /* != */ + { + value = binary_test (w, argv[pos], argv[pos + 2], 0); + pos += 3; + return (value); + } + +#if defined (PATTERN_MATCHING) + if ((w[0] == '=' || w[0] == '!') && w[1] == '~' && w[2] == '\0') + { + value = patcomp (argv[pos], argv[pos + 2], w[0] == '=' ? EQ : NE); + pos += 3; + return (value); + } +#endif + + if ((w[0] != '-' || w[3] != '\0') || test_binop (w) == 0) + { + test_syntax_error (_("%s: binary operator expected"), w); + /* NOTREACHED */ + return (FALSE); + } + + value = binary_test (w, argv[pos], argv[pos + 2], 0); + pos += 3; + return value; +} + +static int +unary_operator () +{ + char *op; + intmax_t r; + + op = argv[pos]; + if (test_unop (op) == 0) + return (FALSE); + + /* the only tricky case is `-t', which may or may not take an argument. */ + if (op[1] == 't') + { + advance (0); + if (pos < argc) + { + if (legal_number (argv[pos], &r)) + { + advance (0); + return (unary_test (op, argv[pos - 1])); + } + else + return (FALSE); + } + else + return (unary_test (op, "1")); + } + + /* All of the unary operators take an argument, so we first call + unary_advance (), which checks to make sure that there is an + argument, and then advances pos right past it. This means that + pos - 1 is the location of the argument. */ + unary_advance (); + return (unary_test (op, argv[pos - 1])); +} + +int +unary_test (op, arg) + char *op, *arg; +{ + intmax_t r; + struct stat stat_buf; + + switch (op[1]) + { + case 'a': /* file exists in the file system? */ + case 'e': + return (sh_stat (arg, &stat_buf) == 0); + + case 'r': /* file is readable? */ + return (sh_eaccess (arg, R_OK) == 0); + + case 'w': /* File is writeable? */ + return (sh_eaccess (arg, W_OK) == 0); + + case 'x': /* File is executable? */ + return (sh_eaccess (arg, X_OK) == 0); + + case 'O': /* File is owned by you? */ + return (sh_stat (arg, &stat_buf) == 0 && + (uid_t) current_user.euid == (uid_t) stat_buf.st_uid); + + case 'G': /* File is owned by your group? */ + return (sh_stat (arg, &stat_buf) == 0 && + (gid_t) current_user.egid == (gid_t) stat_buf.st_gid); + + case 'N': + return (sh_stat (arg, &stat_buf) == 0 && + stat_buf.st_atime <= stat_buf.st_mtime); + + case 'f': /* File is a file? */ + if (sh_stat (arg, &stat_buf) < 0) + return (FALSE); + + /* -f is true if the given file exists and is a regular file. */ +#if defined (S_IFMT) + return (S_ISREG (stat_buf.st_mode) || (stat_buf.st_mode & S_IFMT) == 0); +#else + return (S_ISREG (stat_buf.st_mode)); +#endif /* !S_IFMT */ + + case 'd': /* File is a directory? */ + return (sh_stat (arg, &stat_buf) == 0 && (S_ISDIR (stat_buf.st_mode))); + + case 's': /* File has something in it? */ + return (sh_stat (arg, &stat_buf) == 0 && stat_buf.st_size > (off_t) 0); + + case 'S': /* File is a socket? */ +#if !defined (S_ISSOCK) + return (FALSE); +#else + return (sh_stat (arg, &stat_buf) == 0 && S_ISSOCK (stat_buf.st_mode)); +#endif /* S_ISSOCK */ + + case 'c': /* File is character special? */ + return (sh_stat (arg, &stat_buf) == 0 && S_ISCHR (stat_buf.st_mode)); + + case 'b': /* File is block special? */ + return (sh_stat (arg, &stat_buf) == 0 && S_ISBLK (stat_buf.st_mode)); + + case 'p': /* File is a named pipe? */ +#ifndef S_ISFIFO + return (FALSE); +#else + return (sh_stat (arg, &stat_buf) == 0 && S_ISFIFO (stat_buf.st_mode)); +#endif /* S_ISFIFO */ + + case 'L': /* Same as -h */ + case 'h': /* File is a symbolic link? */ +#if !defined (S_ISLNK) || !defined (HAVE_LSTAT) + return (FALSE); +#else + return ((arg[0] != '\0') && + (lstat (arg, &stat_buf) == 0) && S_ISLNK (stat_buf.st_mode)); +#endif /* S_IFLNK && HAVE_LSTAT */ + + case 'u': /* File is setuid? */ + return (sh_stat (arg, &stat_buf) == 0 && (stat_buf.st_mode & S_ISUID) != 0); + + case 'g': /* File is setgid? */ + return (sh_stat (arg, &stat_buf) == 0 && (stat_buf.st_mode & S_ISGID) != 0); + + case 'k': /* File has sticky bit set? */ +#if !defined (S_ISVTX) + /* This is not Posix, and is not defined on some Posix systems. */ + return (FALSE); +#else + return (sh_stat (arg, &stat_buf) == 0 && (stat_buf.st_mode & S_ISVTX) != 0); +#endif + + case 't': /* File fd is a terminal? */ + if (legal_number (arg, &r) == 0) + return (FALSE); + return ((r == (int)r) && isatty ((int)r)); + + case 'n': /* True if arg has some length. */ + return (arg[0] != '\0'); + + case 'z': /* True if arg has no length. */ + return (arg[0] == '\0'); + + case 'o': /* True if option `arg' is set. */ + return (minus_o_option_value (arg) == 1); + } + + /* We can't actually get here, but this shuts up gcc. */ + return (FALSE); +} + +/* Return TRUE if OP is one of the test command's binary operators. */ +int +test_binop (op) + char *op; +{ + if (op[0] == '=' && op[1] == '\0') + return (1); /* '=' */ + else if ((op[0] == '<' || op[0] == '>') && op[1] == '\0') /* string <, > */ + return (1); + else if ((op[0] == '=' || op[0] == '!') && op[1] == '=' && op[2] == '\0') + return (1); /* `==' and `!=' */ +#if defined (PATTERN_MATCHING) + else if (op[2] == '\0' && op[1] == '~' && (op[0] == '=' || op[0] == '!')) + return (1); +#endif + else if (op[0] != '-' || op[2] == '\0' || op[3] != '\0') + return (0); + else + { + if (op[2] == 't') + switch (op[1]) + { + case 'n': /* -nt */ + case 'o': /* -ot */ + case 'l': /* -lt */ + case 'g': /* -gt */ + return (1); + default: + return (0); + } + else if (op[1] == 'e') + switch (op[2]) + { + case 'q': /* -eq */ + case 'f': /* -ef */ + return (1); + default: + return (0); + } + else if (op[2] == 'e') + switch (op[1]) + { + case 'n': /* -ne */ + case 'g': /* -ge */ + case 'l': /* -le */ + return (1); + default: + return (0); + } + else + return (0); + } +} + +/* Return non-zero if OP is one of the test command's unary operators. */ +int +test_unop (op) + char *op; +{ + if (op[0] != '-') + return (0); + + switch (op[1]) + { + case 'a': case 'b': case 'c': case 'd': case 'e': + case 'f': case 'g': case 'h': case 'k': case 'n': + case 'o': case 'p': case 'r': case 's': case 't': + case 'u': case 'w': case 'x': case 'z': + case 'G': case 'L': case 'O': case 'S': case 'N': + return (1); + } + + return (0); +} + +static int +two_arguments () +{ + if (argv[pos][0] == '!' && argv[pos][1] == '\0') + return (argv[pos + 1][0] == '\0'); + else if (argv[pos][0] == '-' && argv[pos][2] == '\0') + { + if (test_unop (argv[pos])) + return (unary_operator ()); + else + test_syntax_error (_("%s: unary operator expected"), argv[pos]); + } + else + test_syntax_error (_("%s: unary operator expected"), argv[pos]); + + return (0); +} + +#define ANDOR(s) (s[0] == '-' && !s[2] && (s[1] == 'a' || s[1] == 'o')) + +/* This could be augmented to handle `-t' as equivalent to `-t 1', but + POSIX requires that `-t' be given an argument. */ +#define ONE_ARG_TEST(s) ((s)[0] != '\0') + +static int +three_arguments () +{ + int value; + + if (test_binop (argv[pos+1])) + { + value = binary_operator (); + pos = argc; + } + else if (ANDOR (argv[pos+1])) + { + if (argv[pos+1][1] == 'a') + value = ONE_ARG_TEST(argv[pos]) && ONE_ARG_TEST(argv[pos+2]); + else + value = ONE_ARG_TEST(argv[pos]) || ONE_ARG_TEST(argv[pos+2]); + pos = argc; + } + else if (argv[pos][0] == '!' && argv[pos][1] == '\0') + { + advance (1); + value = !two_arguments (); + } + else if (argv[pos][0] == '(' && argv[pos+2][0] == ')') + { + value = ONE_ARG_TEST(argv[pos+1]); + pos = argc; + } + else + test_syntax_error (_("%s: binary operator expected"), argv[pos+1]); + + return (value); +} + +/* This is an implementation of a Posix.2 proposal by David Korn. */ +static int +posixtest () +{ + int value; + + switch (argc - 1) /* one extra passed in */ + { + case 0: + value = FALSE; + pos = argc; + break; + + case 1: + value = ONE_ARG_TEST(argv[1]); + pos = argc; + break; + + case 2: + value = two_arguments (); + pos = argc; + break; + + case 3: + value = three_arguments (); + break; + + case 4: + if (argv[pos][0] == '!' && argv[pos][1] == '\0') + { + advance (1); + value = !three_arguments (); + break; + } + /* FALLTHROUGH */ + default: + value = expr (); + } + + return (value); +} + +/* + * [: + * '[' expr ']' + * test: + * test expr + */ +int +test_command (margc, margv) + int margc; + char **margv; +{ + int value; + int code; + + USE_VAR(margc); + + code = setjmp (test_exit_buf); + + if (code) + return (test_error_return); + + argv = margv; + + if (margv[0] && margv[0][0] == '[' && margv[0][1] == '\0') + { + --margc; + + if (margv[margc] && (margv[margc][0] != ']' || margv[margc][1])) + test_syntax_error (_("missing `]'"), (char *)NULL); + + if (margc < 2) + test_exit (SHELL_BOOLEAN (FALSE)); + } + + argc = margc; + pos = 1; + + if (pos >= argc) + test_exit (SHELL_BOOLEAN (FALSE)); + + noeval = 0; + value = posixtest (); + + if (pos != argc) + test_syntax_error (_("too many arguments"), (char *)NULL); + + test_exit (SHELL_BOOLEAN (value)); +} diff --git a/bash-20060316/test.h b/bash-20060316/test.h new file mode 100644 index 000000000..2ae5fc9da --- /dev/null +++ b/bash-20060316/test.h @@ -0,0 +1,38 @@ +/* test.h -- external interface to the conditional command code. */ + +/* Copyright (C) 1997 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ + +#ifndef _TEST_H_ +#define _TEST_H_ + +#include "stdc.h" + +/* Values for the flags argument to binary_test */ +#define TEST_PATMATCH 0x01 +#define TEST_ARITHEXP 0x02 + +extern int test_unop __P((char *)); +extern int test_binop __P((char *)); + +extern int unary_test __P((char *, char *)); +extern int binary_test __P((char *, char *, char *, int)); + +extern int test_command __P((int, char **)); + +#endif /* _TEST_H_ */ diff --git a/bash-20060316/tests/-i b/bash-20060316/tests/-i new file mode 100644 index 000000000..e69de29bb diff --git a/bash-20060316/tests/README b/bash-20060316/tests/README new file mode 100644 index 000000000..a1a081bec --- /dev/null +++ b/bash-20060316/tests/README @@ -0,0 +1 @@ +Type `sh run-all'. diff --git a/bash-20060316/tests/RUN-ONE-TEST b/bash-20060316/tests/RUN-ONE-TEST new file mode 100755 index 000000000..3efcf32d6 --- /dev/null +++ b/bash-20060316/tests/RUN-ONE-TEST @@ -0,0 +1,9 @@ +BUILD_DIR=/usr/local/build/chet/bash/bash-current +THIS_SH=$BUILD_DIR/bash +PATH=$PATH:$BUILD_DIR + +export THIS_SH PATH + +rm -f /tmp/xx + +/bin/sh "$@" diff --git a/bash-20060316/tests/RUN-TEST-SCRIPT b/bash-20060316/tests/RUN-TEST-SCRIPT new file mode 100755 index 000000000..75fe59471 --- /dev/null +++ b/bash-20060316/tests/RUN-TEST-SCRIPT @@ -0,0 +1,7 @@ +BUILD_DIR=/usr/local/build/chet/bash/bash-current +THIS_SH=$BUILD_DIR/bash +PATH=$PATH:$BUILD_DIR + +export THIS_SH PATH + +${THIS_SH} "$@" diff --git a/bash-20060316/tests/alias.right b/bash-20060316/tests/alias.right new file mode 100644 index 000000000..53111beb5 --- /dev/null +++ b/bash-20060316/tests/alias.right @@ -0,0 +1,4 @@ +alias: 0 +alias: 0 +./alias.tests: line 25: qfoo: command not found +quux diff --git a/bash-20060316/tests/alias.tests b/bash-20060316/tests/alias.tests new file mode 100644 index 000000000..9cfec16bb --- /dev/null +++ b/bash-20060316/tests/alias.tests @@ -0,0 +1,37 @@ +# place holder for future alias testing +shopt -s expand_aliases + +# alias/unalias tests originally in builtins.tests + +unalias -a +# this should return success, according to POSIX.2 +alias +echo alias: $? +alias foo=bar +unalias foo +# this had better return success, according to POSIX.2 +alias +echo alias: $? + +# bug in all versions through bash-2.05b + +unalias qfoo qbar qbaz quux 2>/dev/null + +alias qfoo=qbar +alias qbar=qbaz +alias qbaz=quux +alias quux=qfoo + +qfoo + +unalias qfoo qbar qbaz quux + +unalias -a + +alias foo='echo ' +alias bar=baz +alias baz=quux + +foo bar + +unalias foo bar baz diff --git a/bash-20060316/tests/appendop.right b/bash-20060316/tests/appendop.right new file mode 100644 index 000000000..1e2433323 --- /dev/null +++ b/bash-20060316/tests/appendop.right @@ -0,0 +1,18 @@ +14 +1 2 3 4 5 6 +1 2 3 4 51 6 +5 +14 +7 +42 +1 2 3 4 12 +18 +1 2 3 4 18 +1 2 7 4 5 +1 2 7 13 5 9 +14 +9 +4 +9 +16 +./appendop.tests: line 83: x: readonly variable diff --git a/bash-20060316/tests/appendop.tests b/bash-20060316/tests/appendop.tests new file mode 100644 index 000000000..7b61f3f15 --- /dev/null +++ b/bash-20060316/tests/appendop.tests @@ -0,0 +1,83 @@ +# basic cases +a=1 +a+=4 +echo $a + +x=(1 2 3) +x+=(4 5 6) + +echo ${x[@]} + +x[4]+=1 +echo ${x[@]} + +# trickier cases + +a+=5 printenv a +echo $a + +# if the integer flag is set, ksh93 appears to do arithmetic += and evaluate +# old value as an arithmetic expression +a= +typeset -i a +a+=7 +echo $a + +b=4+1 +typeset -i b +b+=37 + +echo $b + +unset x +x=(1 2 3 4 5) + +typeset -i x + +x[4]+=7 + +echo ${x[@]} + +unset x +typeset -i x + +x=([0]=7+11) +echo ${x[@]} + +unset x +x=(1 2 3 4 5) + +typeset -i x + +#x[4]=7+11 + +x=(1 2 3 4 [4]=7+11 ) +echo ${x[@]} + +x=( 1 2 [2]+=7 4 5 ) +echo ${x[@]} + +x+=( [3]+=9 [5]=9 ) +echo ${x[@]} + +unset a +a=1 +export a+=4 +printenv a +printenv a+ + +unset x +typeset -i x=4+5 +echo $x + +unset x +typeset x+=4 +echo $x + +typeset -i x+=5 +echo $x + +readonly x+=7 +echo $x + +x+=5 diff --git a/bash-20060316/tests/arith-for.right b/bash-20060316/tests/arith-for.right new file mode 100644 index 000000000..44941103f --- /dev/null +++ b/bash-20060316/tests/arith-for.right @@ -0,0 +1,74 @@ +0 +1 +2 +0 +1 +2 +0 +1 +2 +0 +2 +4 +fx is a function +fx () +{ + i=0; + for ((1; i < 3; i++ )) + do + echo $i; + done; + for ((i=0; 1; i++ )) + do + if (( i >= 3 )); then + break; + fi; + echo $i; + done; + for ((i=0; i<3; 1)) + do + echo $i; + (( i++ )); + done; + i=0; + for ((1; 1; 1)) + do + if (( i > 2 )); then + break; + fi; + echo $i; + (( i++ )); + done; + i=0; + for ((1; 1; 1)) + do + if (( i > 2 )); then + break; + fi; + echo $i; + (( i++ )); + done +} +0 +1 +2 +0 +1 +2 +0 +1 +2 +0 +1 +2 +0 +1 +2 +./arith-for.tests: line 77: syntax error: arithmetic expression required +./arith-for.tests: line 77: syntax error: `(( i=0; "i < 3" ))' +2 +./arith-for.tests: line 83: syntax error: `;' unexpected +./arith-for.tests: line 83: syntax error: `(( i=0; i < 3; i++; 7 ))' +2 +20 +20 diff --git a/bash-20060316/tests/arith-for.tests b/bash-20060316/tests/arith-for.tests new file mode 100644 index 000000000..585aa5133 --- /dev/null +++ b/bash-20060316/tests/arith-for.tests @@ -0,0 +1,94 @@ +fx() +{ +i=0 +for (( ; i < 3; i++ )) +do + echo $i +done + +for (( i=0; ; i++ )) +do + if (( i >= 3 )); then + break; + fi + echo $i +done + +for (( i=0; i<3; )) +do + echo $i + (( i++ )) +done + +i=0 +for (( ; ; )) +do + if (( i > 2 )); then + break; + fi + echo $i; + (( i++ )) +done + +i=0 +for ((;;)) +do + if (( i > 2 )); then + break; + fi + echo $i; + (( i++ )) +done +} + +for (( i=0; "i < 3" ; i++ )) +do + echo $i +done + +i=0 +for (( ; "i < 3"; i++ )) +do + echo $i +done + +for (( i=0; ; i++ )) +do + if (( i >= 3 )); then + break; + fi + echo $i +done + +for ((i = 0; ;i++ )) +do + echo $i + if (( i < 3 )); then + (( i++ )) + continue; + fi + break +done + +type fx +fx + +# errors +for (( i=0; "i < 3" )) +do + echo $i +done +echo $? + +for (( i=0; i < 3; i++; 7 )) +do + echo $i +done +echo $? + +# one-liners added in post-bash-2.04 +for ((i=0; i < 20; i++)) do : ; done +echo $i + +for ((i=0; i < 20; i++)) { : ; } +echo $i diff --git a/bash-20060316/tests/arith.right b/bash-20060316/tests/arith.right new file mode 100644 index 000000000..1365786f6 --- /dev/null +++ b/bash-20060316/tests/arith.right @@ -0,0 +1,203 @@ +163 +166 +4 +16 +8 +2 +4 +2 +2 +1 +0 +0 +0 +1 +1 +2 +-3 +-2 +1 +0 +2 +131072 +29 +33 +49 +1 +1 +0 +0 +1 +1 +1 +2 +3 +1 +58 +2 +60 +1 +256 +16 +62 +4 +29 +5 +-4 +4 +1 +32 +32 +1 +1 +32 +20 +1,i+=2 +30 +1,j+=2 +20 +1,i+=2 +30 +1,j+=2 +./arith.tests: line 108: 1 ? 20 : x+=2: attempted assignment to non-variable (error token is "+=2") +20 +6 +6,5,3 +263 +255 +255 +127 +36 +40 +10 +10 +10 +10 +10 +10 +36 +36 +62 +63 +./arith.tests: line 143: 3425#56: invalid arithmetic base (error token is "3425#56") +0 +./arith.tests: line 149: 7 = 43 : attempted assignment to non-variable (error token is "= 43 ") +./arith.tests: line 150: 2#44: value too great for base (error token is "2#44") +./arith.tests: line 151: 44 / 0 : division by 0 (error token is " ") +./arith.tests: line 152: let: jv += $iv: syntax error: operand expected (error token is "$iv") +./arith.tests: line 153: jv += $iv : syntax error: operand expected (error token is "$iv ") +./arith.tests: line 154: let: rv = 7 + (43 * 6: missing `)' (error token is "6") +./arith.tests: line 158: 0#4: invalid number (error token is "0#4") +./arith.tests: line 159: 2#110#11: invalid number (error token is "2#110#11") +abc +def +ghi +ok +6 +1 +0 +./arith.tests: line 177: 4 + : syntax error: operand expected (error token is " ") +16 +./arith.tests: line 182: 4 ? : 3 + 5 : expression expected (error token is ": 3 + 5 ") +./arith.tests: line 183: 1 ? 20 : `:' expected for conditional expression (error token is " ") +./arith.tests: line 184: 4 ? 20 : : expression expected (error token is " ") +9 +./arith.tests: line 190: 0 && B=42 : attempted assignment to non-variable (error token is "=42 ") +9 +./arith.tests: line 193: 1 || B=88 : attempted assignment to non-variable (error token is "=88 ") +9 +0 +9 +0 +9 +1 +9 +7 +7 +4 +32767 +32768 +131072 +2147483647 +1 +4 +4 +5 +5 +4 +3 +3 +4 +4 +7 +./arith.tests: line 241: 7-- : syntax error: operand expected (error token is " ") +./arith.tests: line 243: --x=7 : attempted assignment to non-variable (error token is "=7 ") +./arith.tests: line 244: ++x=7 : attempted assignment to non-variable (error token is "=7 ") +./arith.tests: line 246: x++=7 : attempted assignment to non-variable (error token is "=7 ") +./arith.tests: line 247: x--=7 : attempted assignment to non-variable (error token is "=7 ") +4 +7 +-7 +7 +7 +./arith1.sub: line 2: 4-- : syntax error: operand expected (error token is " ") +./arith1.sub: line 3: 4++ : syntax error: operand expected (error token is " ") +./arith1.sub: line 4: 4 -- : syntax error: operand expected (error token is " ") +./arith1.sub: line 5: 4 ++ : syntax error: operand expected (error token is " ") +1 +2 +1 +2 +6 +3 +7 +4 +0 +3 +7 +2 +-2 +1 +./arith1.sub: line 35: ((: ++ : syntax error: operand expected (error token is " ") +7 +7 +./arith1.sub: line 38: ((: -- : syntax error: operand expected (error token is " ") +7 +7 +7 +7 +1 +2 +1 +2 +1 +0 +5 +1 +6 +2 +3 +1 +4 +0 +./arith2.sub: line 33: ((: -- : syntax error: operand expected (error token is " ") +-7 +-7 +./arith2.sub: line 37: ((: ++ : syntax error: operand expected (error token is " ") +7 +7 +-7 +-7 +7 +7 +8 12 +./arith.tests: line 268: ((: x=9 y=41 : syntax error in expression (error token is "y=41 ") +./arith.tests: line 272: a b: syntax error in expression (error token is "b") +./arith.tests: line 273: ((: a b: syntax error in expression (error token is "b") +42 +42 +42 +42 +42 +42 +./arith.tests: line 284: b[c]d: syntax error in expression (error token is "d") diff --git a/bash-20060316/tests/arith.tests b/bash-20060316/tests/arith.tests new file mode 100644 index 000000000..33622e76b --- /dev/null +++ b/bash-20060316/tests/arith.tests @@ -0,0 +1,284 @@ +set +o posix +declare -i iv jv + +iv=$(( 3 + 5 * 32 )) +echo $iv +iv=iv+3 +echo $iv +iv=2 +jv=iv + +let "jv *= 2" +echo $jv +jv=$(( $jv << 2 )) +echo $jv + +let jv="$jv / 2" +echo $jv +jv="jv >> 2" +echo $jv + +iv=$((iv+ $jv)) +echo $iv +echo $((iv -= jv)) +echo $iv +echo $(( iv == jv )) +echo $(( iv != $jv )) +echo $(( iv < jv )) +echo $(( $iv > $jv )) +echo $(( iv <= $jv )) +echo $(( $iv >= jv )) + +echo $jv +echo $(( ~$jv )) +echo $(( ~1 )) +echo $(( ! 0 )) + +echo $(( jv % 2 )) +echo $(( $iv % 4 )) + +echo $(( iv <<= 16 )) +echo $(( iv %= 33 )) + +echo $(( 33 & 55 )) +echo $(( 33 | 17 )) + +echo $(( iv && $jv )) +echo $(( $iv || jv )) + +echo $(( iv && 0 )) +echo $(( iv & 0 )) +echo $(( iv && 1 )) +echo $(( iv & 1 )) + +echo $(( $jv || 0 )) +echo $(( jv | 0 )) +echo $(( jv | 1 )) +echo $(( $jv || 1 )) + +let 'iv *= jv' +echo $iv +echo $jv +let "jv += $iv" +echo $jv + +echo $(( jv /= iv )) +echo $(( jv <<= 8 )) +echo $(( jv >>= 4 )) + +echo $(( iv |= 4 )) +echo $(( iv &= 4 )) + +echo $(( iv += (jv + 9))) +echo $(( (iv + 4) % 7 )) + +# unary plus, minus +echo $(( +4 - 8 )) +echo $(( -4 + 8 )) + +# conditional expressions +echo $(( 4<5 ? 1 : 32)) +echo $(( 4>5 ? 1 : 32)) +echo $(( 4>(2+3) ? 1 : 32)) +echo $(( 4<(2+3) ? 1 : 32)) +echo $(( (2+2)<(2+3) ? 1 : 32)) +echo $(( (2+2)>(2+3) ? 1 : 32)) + +# check that the unevaluated part of the ternary operator does not do +# evaluation or assignment +x=i+=2 +y=j+=2 +declare -i i=1 j=1 +echo $((1 ? 20 : (x+=2))) +echo $i,$x +echo $((0 ? (y+=2) : 30)) +echo $j,$y + +x=i+=2 +y=j+=2 +declare -i i=1 j=1 +echo $((1 ? 20 : (x+=2))) +echo $i,$x +echo $((0 ? (y+=2) : 30)) +echo $i,$y + +# check precedence of assignment vs. conditional operator +# should be an error +declare -i x=2 +y=$((1 ? 20 : x+=2)) + +# check precedence of assignment vs. conditional operator +declare -i x=2 +echo $((0 ? x+=2 : 20)) + +# associativity of assignment-operator operator +declare -i i=1 j=2 k=3 +echo $((i += j += k)) +echo $i,$j,$k + +# octal, hex +echo $(( 0x100 | 007 )) +echo $(( 0xff )) +echo $(( 16#ff )) +echo $(( 16#FF/2 )) +echo $(( 8#44 )) + +echo $(( 8 ^ 32 )) + +# other bases +echo $(( 16#a )) +echo $(( 32#a )) +echo $(( 56#a )) +echo $(( 64#a )) + +echo $(( 16#A )) +echo $(( 32#A )) +echo $(( 56#A )) +echo $(( 64#A )) + +echo $(( 64#@ )) +echo $(( 64#_ )) + +# weird bases +echo $(( 3425#56 )) + +# missing number after base +echo $(( 2# )) + +# these should generate errors +echo $(( 7 = 43 )) +echo $(( 2#44 )) +echo $(( 44 / 0 )) +let 'jv += $iv' +echo $(( jv += \$iv )) +let 'rv = 7 + (43 * 6' + +# more errors +declare -i i +i=0#4 +i=2#110#11 + +((echo abc; echo def;); echo ghi) + +if (((4+4) + (4 + 7))); then + echo ok +fi + +(()) # make sure the null expression works OK + +a=(0 2 4 6) +echo $(( a[1] + a[2] )) +echo $(( (a[1] + a[2]) == a[3] )) +(( (a[1] + a[2]) == a[3] )) ; echo $? + +# test pushing and popping the expression stack +unset A +A="4 + " +echo $(( ( 4 + A ) + 4 )) +A="3 + 5" +echo $(( ( 4 + A ) + 4 )) + +# badly-formed conditional expressions +echo $(( 4 ? : $A )) +echo $(( 1 ? 20 )) +echo $(( 4 ? 20 : )) + +# precedence and short-circuit evaluation +B=9 +echo $B + +echo $(( 0 && B=42 )) +echo $B + +echo $(( 1 || B=88 )) +echo $B + +echo $(( 0 && (B=42) )) +echo $B + +echo $(( (${$} - $$) && (B=42) )) +echo $B + +echo $(( 1 || (B=88) )) +echo $B + +# until command with (( )) command +x=7 + +echo $x +until (( x == 4 )) +do + echo $x + x=4 +done + +echo $x + +# exponentiation +echo $(( 2**15 - 1)) +echo $(( 2**(16-1))) +echo $(( 2**16*2 )) +echo $(( 2**31-1)) +echo $(( 2**0 )) + +# {pre,post}-{inc,dec}rement and associated errors + +x=4 + +echo $x +echo $(( x++ )) +echo $x +echo $(( x-- )) +echo $x + +echo $(( --x )) +echo $x + +echo $(( ++x )) +echo $x + +echo $(( ++7 )) +echo $(( 7-- )) + +echo $(( --x=7 )) +echo $(( ++x=7 )) + +echo $(( x++=7 )) +echo $(( x--=7 )) + +echo $x + +echo $(( +7 )) +echo $(( -7 )) + +echo $(( ++7 )) +echo $(( --7 )) + +${THIS_SH} ./arith1.sub +${THIS_SH} ./arith2.sub + +x=4 +y=7 + +(( x=8 , y=12 )) + +echo $x $y + +# should be an error +(( x=9 y=41 )) + +# These are errors +unset b +echo $((a b)) +((a b)) + +n=42 +printf "%d\n" $n +printf "%i\n" $n +echo $(( 8#$(printf "%o\n" $n) )) +printf "%u\n" $n +echo $(( 16#$(printf "%x\n" $n) )) +echo $(( 16#$(printf "%X\n" $n) )) + +# causes longjmp botches through bash-2.05b +a[b[c]d]=e diff --git a/bash-20060316/tests/arith1.sub b/bash-20060316/tests/arith1.sub new file mode 100644 index 000000000..43cae806c --- /dev/null +++ b/bash-20060316/tests/arith1.sub @@ -0,0 +1,38 @@ +# test of redone post-increment and post-decrement code +echo $(( 4-- )) +echo $(( 4++ )) +echo $(( 4 -- )) +echo $(( 4 ++ )) + +(( array[0]++ )) +echo ${array} + +(( array[0] ++ )) +echo ${array} + +(( a++ )) +echo $a +(( a ++ )) +echo $a + +echo $(( a ++ + 4 )) +echo $a + +echo $(( a+++4 )) +echo $a + +echo $(( a---4 )) +echo $a + +echo $(( a -- + 4 )) +echo $a + +echo $(( a -- - 4 )) +echo $a + +(( ++ + 7 )) + +(( ++ )) +echo $(( +++7 )) +echo $(( ++ + 7 )) +(( -- )) diff --git a/bash-20060316/tests/arith2.sub b/bash-20060316/tests/arith2.sub new file mode 100644 index 000000000..7eac9523d --- /dev/null +++ b/bash-20060316/tests/arith2.sub @@ -0,0 +1,45 @@ +echo $(( --7 )) +echo $(( ++7 )) +echo $(( -- 7 )) +echo $(( ++ 7 )) + +((++array[0] )) +echo $array +(( ++ array[0] )) +echo $array + +(( ++a )) +echo $a +(( ++ a )) +echo $a + +(( --a )) +echo $a +(( -- a )) +echo $a + +echo $(( 4 + ++a )) +echo $a + +echo $(( 4+++a )) +echo $a + +echo $(( 4---a )) +echo $a + +echo $(( 4 - -- a )) +echo $a + +(( -- )) +echo $(( ---7 )) +echo $(( -- - 7 )) + +(( ++ )) +echo $(( ++7 )) +echo $(( ++ + 7 )) + +echo $(( ++-7 )) +echo $(( ++ - 7 )) + +echo $(( +--7 )) +echo $(( -- + 7 )) diff --git a/bash-20060316/tests/array-at-star b/bash-20060316/tests/array-at-star new file mode 100755 index 000000000..80f039d2c --- /dev/null +++ b/bash-20060316/tests/array-at-star @@ -0,0 +1,120 @@ +# test the expansion of ${array[@]} and ${array[*]}, both quoted and +# unquoted. the expansions should be exactly analogous to the +# expansions of $@ and $* quoted and unquoted +A=(a b) + +recho "${A[*]}" + +# If IFS is null, the parameters are joined without separators +IFS='' +recho "${A[*]}" + +# If IFS is unset, the parameters are separated by spaces +unset IFS +recho "${A[*]}" + +recho "${A[@]}" +recho ${A[@]} + +IFS='/' +A=(bob 'tom dick harry' joe) +set ${A[*]} +recho $# +recho $1 +recho $2 +recho $3 + +A=(bob 'tom dick harry' joe) +set ${A[*]} +recho $# +recho $1 +recho $2 +recho $3 + +A=(bob 'tom dick harry' joe) +set ${A[@]} +recho $# +recho $1 +recho $2 +recho $3 + +A=(bob 'tom dick harry' joe) +set ${A[@]} +recho $# +recho $1 +recho $2 +recho $3 + +# according to POSIX.2, unquoted $* should expand to multiple words if +# $IFS is null, just like unquoted $@ +IFS='' +A=(bob 'tom dick harry' joe) +set "${A[*]}" +recho $# +recho $1 +recho $2 +recho $3 + +A=(bob 'tom dick harry' joe) +set ${A[*]} +recho $# +recho $1 +recho $2 +recho $3 + +A=(bob 'tom dick harry' joe) +set ${A[@]} +recho $# +recho $1 +recho $2 +recho $3 + +# if IFS is unset, the individual positional parameters are split on +# " \t\n" if $* or $@ are unquoted +unset IFS +A=(bob 'tom dick harry' joe) +set ${A[*]} +recho $# +recho $1 +recho $2 +recho $3 + +A=(bob 'tom dick harry' joe) +set ${A[@]} +recho $# +recho $1 +recho $2 +recho $3 + +# but not for "$@" or "$*" +A=(bob 'tom dick harry' joe) +set "${A[*]}" +recho $# +recho $1 +recho $2 +recho $3 + +A=(bob 'tom dick harry' joe) +set "${A[@]}" +recho $# +recho $1 +recho $2 +recho $3 + +# these should both expand the value of A to multiple words +A=(a b c d e) +IFS="" +recho ${A[@]} +recho "${A[@]}" + +# this example is straight from the POSIX.2 rationale and adapted to arrays +A=(foo bar bam) + +recho "${A[@]}" +recho "${A[*]}" + +unset IFS + +recho "${A[@]}" +recho ${A[@]} +recho "${A[*]}" diff --git a/bash-20060316/tests/array.right b/bash-20060316/tests/array.right new file mode 100644 index 000000000..900e43e3b --- /dev/null +++ b/bash-20060316/tests/array.right @@ -0,0 +1,201 @@ + +./array.tests: line 15: syntax error near unexpected token `&' +./array.tests: line 15: `test=(first & second)' +1 +abcde +abcde +abcde bdef +abcde bdef +declare -a BASH_ARGC='()' +declare -a BASH_ARGV='()' +declare -a BASH_LINENO='([0]="0")' +declare -a BASH_SOURCE='([0]="./array.tests")' +declare -a DIRSTACK='()' +declare -a FUNCNAME='([0]="main")' +declare -a a='([0]="abcde" [1]="" [2]="bdef")' +declare -a b='()' +declare -ar c='()' +abcde bdef +abcde bdef +abcde +abcde +abcde + +bdef +hello world +11 +3 +bdef hello world test expression +./array.tests: line 74: readonly: `a[5]': not a valid identifier +declare -ar a='([1]="" [2]="bdef" [5]="hello world" [6]="test expression")' +declare -ar c='()' +declare -ar a='([1]="" [2]="bdef" [5]="hello world" [6]="test expression")' +declare -ar c='()' +readonly -a a='([1]="" [2]="bdef" [5]="hello world" [6]="test expression")' +readonly -a c='()' +a test +declare -a BASH_ARGC='()' +declare -a BASH_ARGV='()' +declare -a BASH_LINENO='([0]="0")' +declare -a BASH_SOURCE='([0]="./array.tests")' +declare -a DIRSTACK='()' +declare -a FUNCNAME='([0]="main")' +declare -ar a='([1]="" [2]="bdef" [5]="hello world" [6]="test expression")' +declare -a b='([0]="this" [1]="is" [2]="a" [3]="test" [4]="" [5]="/etc/passwd")' +declare -ar c='()' +declare -a d='([1]="" [2]="bdef" [5]="hello world" [6]="test" [9]="ninth element")' +declare -a e='([0]="test")' +declare -a f='([0]="" [1]="bdef" [2]="hello world" [3]="test" [4]="ninth element")' +./array.tests: line 98: a: readonly variable +./array.tests: line 100: b[]: bad array subscript +./array.tests: line 101: b[*]: bad array subscript +./array.tests: line 102: ${b[ ]}: bad substitution +./array.tests: line 104: c[-2]: bad array subscript +./array.tests: line 105: c: bad array subscript + +./array.tests: line 107: d[7]: cannot assign list to array member +./array.tests: line 109: []=abcde: bad array subscript +./array.tests: line 109: [*]=last: cannot assign to non-numeric index +./array.tests: line 109: [-65]=negative: bad array subscript +declare -a BASH_ARGC='()' +declare -a BASH_ARGV='()' +declare -a BASH_LINENO='([0]="0")' +declare -a BASH_SOURCE='([0]="./array.tests")' +declare -a DIRSTACK='()' +declare -a FUNCNAME='([0]="main")' +declare -ar a='([1]="" [2]="bdef" [5]="hello world" [6]="test expression")' +declare -a b='([0]="this" [1]="is" [2]="a" [3]="test" [4]="" [5]="/etc/passwd")' +declare -ar c='()' +declare -a d='([1]="test test")' +declare -a f='([0]="" [1]="bdef" [2]="hello world" [3]="test" [4]="ninth element")' +./array.tests: line 117: unset: ps1: not an array variable +./array.tests: line 121: declare: c: cannot destroy array variables in this way +this of +this is a test of read using arrays +this test +this is a test of arrays +declare -a BASH_ARGC='()' +declare -a BASH_ARGV='()' +declare -a BASH_LINENO='([0]="0")' +declare -a BASH_SOURCE='([0]="./array.tests")' +declare -a DIRSTACK='()' +declare -a FUNCNAME='([0]="main")' +declare -ar a='([1]="" [2]="bdef" [5]="hello world" [6]="test expression")' +declare -a b='([0]="this" [1]="is" [2]="a" [3]="test" [4]="" [5]="/etc/passwd")' +declare -ar c='()' +declare -a d='([1]="test test")' +declare -a f='([0]="" [1]="bdef" [2]="hello world" [3]="test" [4]="ninth element")' +declare -a rv='([0]="this" [1]="is" [2]="a" [3]="test" [4]="of" [5]="read" [6]="using" [7]="arrays")' +abde +abde +bbb +efgh +wxyz +wxyz +./array.tests +a +b c +d +e f g +h +./array.tests +a +b c +d +e f g +h +/bin /usr/bin /usr/ucb /usr/local/bin . /sbin /usr/sbin +bin bin ucb bin . sbin sbin +bin +/ / / / / / +/ +argv[1] = +argv[1] = +argv[1] = +argv[1] = +\bin \usr/bin \usr/ucb \usr/local/bin . \sbin \usr/sbin +\bin \usr\bin \usr\ucb \usr\local\bin . \sbin \usr\sbin +\bin \usr\bin \usr\ucb \usr\local\bin . \sbin \usr\sbin +4 -- 4 +7 -- 7 +55 +49 +6 -- 6 +42 14 44 +grep [ 123 ] * +6 7 9 +6 7 9 5 +length = 3 +value = new1 new2 new3 +./array.tests: line 237: narray: unbound variable +./array1.sub: line 1: syntax error near unexpected token `(' +./array1.sub: line 1: `printf "%s\n" -a a=(a 'b c')' +./array2.sub: line 1: syntax error near unexpected token `(' +./array2.sub: line 1: `declare -a ''=(a 'b c')' +9 +9 + + +7 8 9 +8 11 +8 11 + +a b c d e f g +for case if then else +<> < > ! +12 14 16 18 20 +4414758999202 +aaa bbb +./array.tests: line 285: syntax error near unexpected token `<>' +./array.tests: line 285: `metas=( <> < > ! )' +./array.tests: line 286: syntax error near unexpected token `<>' +./array.tests: line 286: `metas=( [1]=<> [2]=< [3]=> [4]=! )' +abc 3 +case 4 +abc case if then else 5 +abc case if then else 5 +0 +case 4 +case if then else 5 +case if then else 5 +argv[1] = <0> +argv[2] = <1> +argv[3] = <4> +argv[4] = <10> +argv[1] = <0> +argv[2] = <1> +argv[3] = <4> +argv[4] = <10> +argv[1] = <0> +argv[2] = <1> +argv[3] = <4> +argv[4] = <10> +argv[1] = <0 1 4 10> +include null element -- expect one +one +include unset element -- expect three five +three five +start at unset element -- expect five seven +five seven +too many elements -- expect three five seven +three five seven +positive offset - expect five seven +five seven +negative offset to unset element - expect seven +seven +positive offset 2 - expect seven +seven +negative offset 2 - expect seven +seven +out-of-range offset + +e +4 +1 4 7 10 +'b +b c +$0 +t +[3]=abcde r s t u v +e +9 diff --git a/bash-20060316/tests/array.tests b/bash-20060316/tests/array.tests new file mode 100644 index 000000000..b07b8e9c7 --- /dev/null +++ b/bash-20060316/tests/array.tests @@ -0,0 +1,401 @@ +# this is needed so that the bad assignments (b[]=bcde, for example) do not +# cause fatal shell errors when in posix mode +set +o posix + +set +a +# The calls to egrep -v are to filter out builtin array variables that are +# automatically set and possibly contain values that vary. + +# first make sure we handle the basics +x=() +echo ${x[@]} +unset x + +# this should be an error +test=(first & second) +echo $? +unset test + +# make sure declare -a converts an existing variable to an array +unset a +a=abcde +declare -a a +echo ${a[0]} + +unset a +a=abcde +a[2]=bdef + +unset b +declare -a b[256] + +unset c[2] +unset c[*] + +a[1]= + +_ENV=/bin/true +x=${_ENV[(_$-=0)+(_=1)-_${-%%*i*}]} + +declare -r c[100] + +echo ${a[0]} ${a[4]} +echo ${a[@]} + +echo ${a[*]} + +# this should print out values, too +declare -a | egrep -v '(BASH_VERSINFO|PIPESTATUS|GROUPS)' + +unset a[7] +echo ${a[*]} + +unset a[4] +echo ${a[*]} + +echo ${a} +echo "${a}" +echo $a + +unset a[0] +echo ${a} + +echo ${a[@]} + +a[5]="hello world" +echo ${a[5]} +echo ${#a[5]} + +echo ${#a[@]} + +a[4+5/2]="test expression" +echo ${a[@]} + +readonly a[5] +readonly a +# these two lines should output `declare' commands +readonly -a | egrep -v '(BASH_VERSINFO|PIPESTATUS|GROUPS)' +declare -ar | egrep -v '(BASH_VERSINFO|PIPESTATUS|GROUPS)' +# this line should output `readonly' commands, even for arrays +set -o posix +readonly -a | egrep -v '(BASH_VERSINFO|PIPESTATUS|GROUPS)' +set +o posix + +declare -a d='([1]="" [2]="bdef" [5]="hello world" "test")' +d[9]="ninth element" + +declare -a e[10]=test # this works in post-bash-2.05 versions +declare -a e[10]='(test)' + +pass=/etc/passwd +declare -a f='("${d[@]}")' +b=([0]=this [1]=is [2]=a [3]=test [4]="$PS1" [5]=$pass) + +echo ${b[@]:2:3} + +declare -pa | egrep -v '(BASH_VERSINFO|PIPESTATUS|GROUPS)' + +a[3]="this is a test" + +b[]=bcde +b[*]=aaa +echo ${b[ ]} + +c[-2]=4 +echo ${c[-4]} + +d[7]=(abdedfegeee) + +d=([]=abcde [1]="test test" [*]=last [-65]=negative ) + +unset d[12] +unset e[*] + +declare -a | egrep -v '(BASH_VERSINFO|PIPESTATUS|GROUPS)' + +ps1='hello' +unset ps1[2] +unset ${ps1[2]} + +declare +a ps1 +declare +a c + +# the prompt should not print when using a here doc +read -p "array test: " -a rv <' [2]='<' [3]='>' [4]='!' ) +echo ${foo[@]} + +# numbers are just words when not in a redirection context +foo=( 12 14 16 18 20 ) +echo ${foo[@]} + +foo=( 4414758999202 ) +echo ${foo[@]} + +# this was a bug in all versions of bash 2.x up to and including bash-2.04 +declare -a ddd=(aaa +bbb) +echo ${ddd[@]} + +# errors until post-bash-2.05a; now reserved words are OK +foo=(a b c for case if then else) + +foo=(for case if then else) + +# errors +metas=( <> < > ! ) +metas=( [1]=<> [2]=< [3]=> [4]=! ) + +# various expansions that didn't really work right until post-bash-2.04 +foo='abc' +echo ${foo[0]} ${#foo[0]} +echo ${foo[1]} ${#foo[1]} +echo ${foo[@]} ${#foo[@]} +echo ${foo[*]} ${#foo[*]} + +foo='' +echo ${foo[0]} ${#foo[0]} +echo ${foo[1]} ${#foo[1]} +echo ${foo[@]} ${#foo[@]} +echo ${foo[*]} ${#foo[*]} + +# new expansions added after bash-2.05b +x[0]=zero +x[1]=one +x[4]=four +x[10]=ten + +recho ${!x[@]} +recho "${!x[@]}" +recho ${!x[*]} +recho "${!x[*]}" + +# sparse array tests for code fixed in bash-3.0 +unset av +av[1]='one' +av[2]='' + +av[3]=three +av[5]=five +av[7]=seven + +echo include null element -- expect one +echo ${av[@]:1:2} # what happens when we include a null element? +echo include unset element -- expect three five +echo ${av[@]:3:2} # what happens when we include an unset element? +echo start at unset element -- expect five seven +echo ${av[@]:4:2} # what happens when we start at an unset element? + +echo too many elements -- expect three five seven +echo ${av[@]:3:5} # how about too many elements? + +echo positive offset - expect five seven +echo ${av[@]:5:2} +echo negative offset to unset element - expect seven +echo ${av[@]: -2:2} + +echo positive offset 2 - expect seven +echo ${av[@]: 6:2} +echo negative offset 2 - expect seven +echo ${av[@]: -1:2} + +echo out-of-range offset +echo ${av[@]:12} + +# parsing problems and other inconsistencies not fixed until post bash-3.0 +unset x +declare -a x=(')' $$) +[ ${x[1]} -eq $$ ] || echo bad + +unset x +declare -a x=(a b c d e) +echo ${x[4]} + +z=([1]=one [4]=four [7]=seven [10]=ten) + +echo ${#z[@]} + +echo ${!z[@]} + +unset x +declare -a x=(a \'b c\') + +echo "${x[1]}" + +unset x +declare -a x=(a 'b c') + +echo "${x[1]}" + +unset x +declare -a x=($0) +[ "${x[@]}" = $0 ] || echo double expansion of \$0 +declare -a x=(\$0) +echo "${x[@]}" + +: ${TMPDIR:=/tmp} + +mkdir $TMPDIR/bash-test-$$ +cd $TMPDIR/bash-test-$$ + +trap "cd / ; rm -rf $TMPDIR/bash-test-$$" 0 1 2 3 6 15 + +touch '[3]=abcde' + +touch r s t u v + +declare -a x=(*) + +echo ${x[3]} +echo ${x[@]} + +unset x +x=(a b c d e) + +echo ${x[*]: -1} + +unset x[4] +unset x[2] + +x[9]='9' + +echo ${x[*]: -1} diff --git a/bash-20060316/tests/array1.sub b/bash-20060316/tests/array1.sub new file mode 100644 index 000000000..86e933229 --- /dev/null +++ b/bash-20060316/tests/array1.sub @@ -0,0 +1 @@ +printf "%s\n" -a a=(a 'b c') diff --git a/bash-20060316/tests/array2.right b/bash-20060316/tests/array2.right new file mode 100644 index 000000000..b5145c251 --- /dev/null +++ b/bash-20060316/tests/array2.right @@ -0,0 +1,74 @@ +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = <3> +argv[1] = +argv[1] = +argv[1] = +argv[1] = <3> +argv[1] = +argv[1] = +argv[1] = +argv[1] = <3> +argv[1] = +argv[1] = +argv[1] = +argv[1] = <3> +argv[1] = +argv[1] = +argv[1] = +argv[1] = <1> +argv[1] = +argv[1] = <3> +argv[1] = +argv[1] = +argv[1] = +argv[1] = <3> +argv[1] = +argv[1] = +argv[1] = +argv[1] = <5> +argv[1] = +argv[1] = +argv[1] = +argv[1] = <5> +argv[1] = +argv[1] = +argv[1] = +argv[1] = <1> +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[1] = <3> +argv[1] = +argv[1] = +argv[2] = +argv[3] = +argv[1] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[1] = +argv[2] = +argv[3] = +argv[1] = +argv[1] = +argv[2] = +argv[3] = +argv[1] = +argv[2] = +argv[3] = +argv[1] = diff --git a/bash-20060316/tests/array2.sub b/bash-20060316/tests/array2.sub new file mode 100644 index 000000000..0e6417d7a --- /dev/null +++ b/bash-20060316/tests/array2.sub @@ -0,0 +1 @@ +declare -a ''=(a 'b c') diff --git a/bash-20060316/tests/array3.sub b/bash-20060316/tests/array3.sub new file mode 100644 index 000000000..579b42bdb --- /dev/null +++ b/bash-20060316/tests/array3.sub @@ -0,0 +1,9 @@ +a=(0 1 2 3 4 5 6 7 8 9) + +echo ${a[@]: -1} + +echo ${a[@]:9} +echo ${a[@]:10} +echo ${a[@]:11} + +echo ${a[@]:7:3} diff --git a/bash-20060316/tests/array4.sub b/bash-20060316/tests/array4.sub new file mode 100644 index 000000000..9d7e1afb0 --- /dev/null +++ b/bash-20060316/tests/array4.sub @@ -0,0 +1,20 @@ +# compound assignment parsing problems in bash-3.1-release +func() +{ + local -a x=() y=() +} + +a=() b=() +eval foo=() +eval foo=() bar=() qux=( "bash" ) + +foo=( "bash" ) +eval foo=( "bash" ) +eval bar=( "bash" ) bax=( "bash" ) + +let a=(5 + 3) b=(4 + 7) +echo $a $b + +typeset -i a b +a=(5+3) b=(4+7) +echo $a $b diff --git a/bash-20060316/tests/braces.right b/bash-20060316/tests/braces.right new file mode 100644 index 000000000..3d7ef8e76 --- /dev/null +++ b/bash-20060316/tests/braces.right @@ -0,0 +1,43 @@ +ffc ffb ffa +fdg feg ffg +lxyz nxyz mxyz +{abc,def} +{abc} +{a,b,c,d,e} +x} y} {a} b} c} +x,y {abc} trie +/usr/ucb/ex /usr/ucb/edit /usr/lib/ex /usr/lib/how_ex +XXXX{a,b,c} +XXXXa XXXXb XXXXc +{} +{ } +} +{ +abcd{efgh +foo 1 2 bar +foo 1 2 bar +foo 1 2 bar +foobar foobaz. +foobar foobaz +bazx bazy +vx vy +bazx bazy +1 2 3 4 5 6 7 8 9 10 +0..10 braces +0 1 2 3 4 5 6 7 8 9 10 braces +x0y x1y x2y x3y x4y x5y x6y x7y x8y x9y x10y xbracesy +3 +x3y +10 9 8 7 6 5 4 3 2 1 +10y 9y 8y 7y 6y 5y 4y 3y 2y 1y +x10y x9y x8y x7y x6y x5y x4y x3y x2y x1y +a b c d e f +f e d c b a +a ` _ ^ ] [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A +A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ] ^ _ ` a +f +{1..f} +{f..1} +01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 +-1 -2 -3 -4 -5 -6 -7 -8 -9 -10 +-20 -19 -18 -17 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 diff --git a/bash-20060316/tests/braces.tests b/bash-20060316/tests/braces.tests new file mode 100644 index 000000000..3f57829f0 --- /dev/null +++ b/bash-20060316/tests/braces.tests @@ -0,0 +1,70 @@ +echo ff{c,b,a} +echo f{d,e,f}g +echo {l,n,m}xyz +echo {abc\,def} +echo {abc} + +echo \{a,b,c,d,e} +echo {x,y,\{a,b,c}} +echo {x\,y,\{abc\},trie} + +echo /usr/{ucb/{ex,edit},lib/{ex,how_ex}} + +echo XXXX\{`echo a b c | tr ' ' ','`\} +eval echo XXXX\{`echo a b c | tr ' ' ','`\} + +echo {} +echo { } +echo } +echo { +echo abcd{efgh + +echo foo {1,2} bar +echo `zecho foo {1,2} bar` +echo $(zecho foo {1,2} bar) + +var=baz +varx=vx +vary=vy + +echo foo{bar,${var}.} +echo foo{bar,${var}} + +echo "${var}"{x,y} +echo $var{x,y} +echo ${var}{x,y} + +unset var varx vary + +# new sequence brace operators +echo {1..10} + +# this doesn't work yet +echo {0..10,braces} +# but this does +echo {{0..10},braces} +echo x{{0..10},braces}y + +echo {3..3} +echo x{3..3}y +echo {10..1} +echo {10..1}y +echo x{10..1}y + +echo {a..f} +echo {f..a} + +echo {a..A} +echo {A..a} + +echo {f..f} + +# mixes are incorrectly-formed brace expansions +echo {1..f} +echo {f..1} + +echo 0{1..9} {10..20} + +# do negative numbers work? +echo {-1..-10} +echo {-20..0} diff --git a/bash-20060316/tests/builtins.right b/bash-20060316/tests/builtins.right new file mode 100644 index 000000000..9266b5a71 --- /dev/null +++ b/bash-20060316/tests/builtins.right @@ -0,0 +1,132 @@ +a +end-1 +a +end-2 +a:x +end-a +b:x +end-b +c:x +end-c +end-3 +a:x +end +a +b +c +end-1 +a +b +c +end-2 +a:x +a:y +a:z +end-a +b:x +b:y +b:z +end-b +c:x +c:y +c:z +end-c +end-3 +a:x +b:x +c:x +end +$BVAR +$BVAR +$BVAR +$BVAR +foo +bar +xxx +0022 +u=rwx,g=rx,o=rx +0002 +u=rwx,g=rwx,o=rx +umask 0002 +umask -S u=rwx,g=rwx,o=rx +u=rwx,g=rwx,o=rwx +enable . +enable : +enable break +enable continue +enable eval +enable exec +enable exit +enable export +enable readonly +enable return +enable set +enable shift +enable source +enable times +enable trap +enable unset +enable . +enable : +enable break +enable continue +enable eval +enable exec +enable exit +enable export +enable readonly +enable return +enable set +enable shift +enable source +enable times +enable trap +enable unset +enable -n test worked +enable test worked +specialname +-specialname +FOO=BAR +FOO=BAR +hash: hash table empty +0 +AVAR +foo +in source.sub2, calling return +5 +a b c +a b c +x y z +a b c +a b c +m n o p +a b c +m n o p +/tmp/bash-dir-a +/tmp/bash-dir-a +/tmp/bash-dir-a +./source5.sub: line 10: /tmp/source-notthere: No such file or directory +after bad source 1 +./source5.sub: line 17: /tmp/source-notthere: No such file or directory +AVAR +foo +foo +AVAR +foo +foo +AVAR +foo +declare -x foo="" +declare -x FOO="\$\$" +./builtins.tests: line 207: declare: FOO: not found +declare -x FOO="\$\$" +ok +ok +./builtins.tests: line 239: kill: 4096: invalid signal specification +1 +a\n\n\nb +a + + +b +./builtins.tests: line 248: exit: status: numeric argument required diff --git a/bash-20060316/tests/builtins.tests b/bash-20060316/tests/builtins.tests new file mode 100644 index 000000000..3c286338a --- /dev/null +++ b/bash-20060316/tests/builtins.tests @@ -0,0 +1,250 @@ +# tests for miscellaneous builtins not tested elsewhere +set +p +set +o posix + +ulimit -c 0 2>/dev/null + +# check that break breaks loops +for i in a b c; do echo $i; break; echo bad-$i; done +echo end-1 +for i in a b c; do echo $i; break 1; echo bad-$i; done +echo end-2 +for i in a b c; do + for j in x y z; do + echo $i:$j + break + echo bad-$i + done + echo end-$i +done +echo end-3 + +# check that break breaks nested loops +for i in a b c; do + for j in x y z; do + echo $i:$j + break 2 + echo bad-$i + done + echo end-$i +done +echo end + +# check that continue continues loops +for i in a b c; do echo $i; continue; echo bad-$i ; done +echo end-1 +for i in a b c; do echo $i; continue 1; echo bad-$i; done +echo end-2 +for i in a b c; do + for j in x y z; do + echo $i:$j + continue + echo bad-$i-$j + done + echo end-$i +done +echo end-3 + +# check that continue breaks out of nested loops +for i in a b c; do + for j in x y z; do + echo $i:$j + continue 2 + echo bad-$i-$j + done + echo end-$i +done +echo end + +# check that `eval' re-evaluates arguments, but `builtin' and `command' do not +AVAR='$BVAR' +BVAR=foo + +echo $AVAR +builtin echo $AVAR +command echo $AVAR +eval echo \$AVAR +eval echo $AVAR + +# test out eval with a temp environment +AVAR=bar eval echo \$AVAR +BVAR=xxx eval echo $AVAR + +unset -v AVAR BVAR + +# test umask +mask=$(umask) +umask 022 +umask +umask -S +umask -S u=rwx,g=rwx,o=rx >/dev/null # 002 +umask +umask -S +umask -p +umask -p -S +umask 0 +umask -S +umask ${mask} # restore original mask + +# builtin/command without arguments should do nothing. maybe someday they will +builtin +command + +# test enable +enable -ps + +enable -aps ; enable -nps + +enable -n test +case "$(type -t test)" in +builtin) echo oops -- enable -n test failed ;; +*) echo enable -n test worked ;; +esac + +enable test +case "$(type -t test)" in +builtin) echo enable test worked ;; +*) echo oops -- enable test failed ;; +esac + +# test options to exec +(exec -a specialname ${THIS_SH} -c 'echo $0' ) +(exec -l -a specialname ${THIS_SH} -c 'echo $0' ) +# test `clean' environment. if /bin/sh is bash, and the script version of +# printenv is run, there will be variables in the environment that bash +# sets on startup. Also test code that prefixes argv[0] with a dash. +(export FOO=BAR ; exec -c -l printenv ) | grep FOO +(FOO=BAR exec -c printenv ) | grep FOO + +(export FOO=BAR ; exec printenv ) | grep FOO +(FOO=BAR exec printenv ) | grep FOO + +# ok, forget everything about hashed commands +hash -r +hash + +# this had better succeed, since command -p guarantees we will find the +# standard utilties +command -p hash rm + +# check out source/. + +# sourcing a zero-length-file had better not be an error +rm -f /tmp/zero-length-file +cp /dev/null /tmp/zero-length-file +. /tmp/zero-length-file +echo $? +rm /tmp/zero-length-file + +AVAR=AVAR + +. ./source1.sub +AVAR=foo . ./source1.sub + +. ./source2.sub +echo $? + +set -- a b c +. ./source3.sub + +# make sure source with arguments does not change the shell's positional +# parameters, but that the sourced file sees the arguments as its +# positional parameters +echo "$@" +. ./source3.sub x y z +echo "$@" + +# but if the sourced script sets the positional parameters explicitly, they +# should be reflected in the calling shell's positional parameters. this +# also tests one of the shopt options that controls source using $PATH to +# find the script +echo "$@" +shopt -u sourcepath +. source4.sub +echo "$@" + +# this is complicated when the sourced scripts gets its own positional +# parameters from arguments to `.' +set -- a b c +echo "$@" +. source4.sub x y z +echo "$@" + +# test out cd and $CDPATH +${THIS_SH} ./builtins1.sub + +# test behavior of `.' when given a non-existant file argument +${THIS_SH} ./source5.sub + +# in posix mode, assignment statements preceding special builtins are +# reflected in the shell environment. `.' and `eval' need special-case +# code. +set -o posix +echo $AVAR +AVAR=foo . ./source1.sub +echo $AVAR + +AVAR=AVAR +echo $AVAR +AVAR=foo eval echo \$AVAR +echo $AVAR + +AVAR=AVAR +echo $AVAR +AVAR=foo : +echo $AVAR +set +o posix + +# but assignment statements preceding `export' are always reflected in +# the environment +foo="" export foo +declare -p foo +unset foo + +# assignment statements preceding `declare' should be displayed correctly, +# but not persist after the command +FOO='$$' declare -p FOO +declare -p FOO +unset FOO + +# except for `declare -x', which should be equivalent to `export' +FOO='$$' declare -x FOO +declare -p FOO +unset FOO + +# test out kill -l. bash versions prior to 2.01 did `kill -l num' wrong +sigone=$(kill -l | sed -n 's:^ 1) *\([^ ]*\)[ ].*$:\1:p') + +case "$(kill -l 1)" in +${sigone/SIG/}) echo ok;; +*) echo oops -- kill -l failure;; +esac + +# kill -l and trap -l should display exactly the same output +sigonea=$(trap -l | sed -n 's:^ 1) *\([^ ]*\)[ ].*$:\1:p') + +if [ "$sigone" != "$sigonea" ]; then + echo oops -- kill -l and trap -l differ +fi + +# POSIX.2 says that exit statuses > 128 are mapped to signal names by +# subtracting 128 so you can find out what signal killed a process +case "$(kill -l $(( 128 + 1)) )" in +${sigone/SIG/}) echo ok;; +*) echo oops -- kill -l 129 failure;; +esac + +# out-of-range signal numbers should report the argument in the error +# message, not 128 less than the argument +kill -l 4096 + +# kill -l NAME should return the signal number +kill -l ${sigone/SIG/} + +# test behavior of shopt xpg_echo +${THIS_SH} ./builtins2.sub + +# this must be last -- it is a fatal error +exit status + +echo after bad exit diff --git a/bash-20060316/tests/builtins1.sub b/bash-20060316/tests/builtins1.sub new file mode 100644 index 000000000..5b7971136 --- /dev/null +++ b/bash-20060316/tests/builtins1.sub @@ -0,0 +1,14 @@ +unset CDPATH + +MYDIR=$(pwd -P) +FULLDIR=/tmp/bash-dir-a +DIR=${FULLDIR##*/} + +mkdir $FULLDIR +CDPATH=.:/tmp +cd $DIR +pwd +echo $PWD + +cd $MYDIR +rmdir $FULLDIR diff --git a/bash-20060316/tests/builtins2.sub b/bash-20060316/tests/builtins2.sub new file mode 100644 index 000000000..e4cb32ae6 --- /dev/null +++ b/bash-20060316/tests/builtins2.sub @@ -0,0 +1,10 @@ +# test behavior of shopt xpg_echo + +USG_ECHO=off +shopt -q xpg_echo && USG_ECHO=on + +shopt -u xpg_echo +echo 'a\n\n\nb' + +shopt -s xpg_echo +echo 'a\n\n\nb' diff --git a/bash-20060316/tests/cond.right b/bash-20060316/tests/cond.right new file mode 100644 index 000000000..06f36a9a6 --- /dev/null +++ b/bash-20060316/tests/cond.right @@ -0,0 +1,37 @@ +returns: 0 +returns: 0 +returns: 1 +returns: 0 +returns: 0 +returns: 0 +returns: 0 +returns: 0 +returns: 1 +returns: 0 +returns: 0 +returns: 1 +returns: 1 +returns: 1 +returns: 1 +returns: 0 +returns: 0 +returns: 0 +returns: 1 +returns: 0 +returns: 1 +returns: 0 +returns: 1 +returns: 1 +returns: 0 +./cond.tests: line 101: [[: 4+: syntax error: operand expected (error token is "+") +returns: 1 +returns: 0 +returns: 0 +returns: 1 +returns: 0 +returns: 0 +returns: 1 +returns: 0 +ok +ok 42 +ok 43 diff --git a/bash-20060316/tests/cond.tests b/bash-20060316/tests/cond.tests new file mode 100755 index 000000000..3abfa9d75 --- /dev/null +++ b/bash-20060316/tests/cond.tests @@ -0,0 +1,159 @@ +# +# the test/[ code is tested elsewhere, and the [[...]] just uses the same +# code. this tests the special features of [[...]] +# +TDIR=/usr/homes/chet + +# this one is straight out of the ksh88 book +[[ foo > bar && $PWD -ef . ]] +echo returns: $? + +# [[ x ]] is equivalent to [[ -n x ]] +[[ x ]] +echo returns: $? + +# [[ ! x ]] is equivalent to [[ ! -n x ]] +[[ ! x ]] +echo returns: $? + +# ! binds tighter than test/[ -- it binds to a term, not an expression +[[ ! x || x ]] +echo returns: $? + +# parenthesized terms didn't work right until post-2.04 +[[ a ]] +echo returns: $? + +[[ (a) ]] +echo returns: $? + +[[ -n a ]] +echo returns: $? + +[[ (-n a) ]] +echo returns: $? + +# unset variables don't need to be quoted +[[ -n $UNSET ]] +echo returns: $? + +[[ -z $UNSET ]] +echo returns: $? + +# the ==/= and != operators do pattern matching +[[ $TDIR == /usr/homes/* ]] +echo returns: $? + +# ...but you can quote any part of the pattern to have it matched as a string +[[ $TDIR == /usr/homes/\* ]] +echo returns: $? + +[[ $TDIR == '/usr/homes/*' ]] +echo returns: $? + +# if the first part of && fails, the second is not executed +[[ -n $UNSET && $UNSET == foo ]] +echo returns: $? + +[[ -z $UNSET && $UNSET == foo ]] +echo returns: $? + +# if the first part of || succeeds, the second is not executed +[[ -z $UNSET || -d $PWD ]] +echo returns: $? + +# if the rhs were executed, it would be an error +[[ -n $TDIR || $HOME -ef ${H*} ]] +echo returns: $? + +[[ -n $TDIR && -z $UNSET || $HOME -ef ${H*} ]] +echo returns: $? + +# && has a higher parsing precedence than || +[[ -n $TDIR && -n $UNSET || $TDIR -ef . ]] +echo returns: $? + +# ...but expressions in parentheses may be used to override precedence rules +[[ -n $TDIR || -n $UNSET && $PWD -ef xyz ]] +echo returns: $? + +[[ ( -n $TDIR || -n $UNSET ) && $PWD -ef xyz ]] +echo returns: $? + +# some arithmetic tests for completeness -- see what happens with missing +# operands, bad expressions, makes sure arguments are evaluated as +# arithmetic expressions, etc. + +unset IVAR A +[[ 7 -gt $IVAR ]] +echo returns: $? + +[[ $IVAR -gt 7 ]] +echo returns: $? + +IVAR=4 +[[ $IVAR -gt 7 ]] +echo returns: $? + +[[ 7 -eq 4+3 ]] +echo returns: $? + +[[ 7 -eq 4+ ]] +echo returns: $? + +IVAR=4+3 +[[ $IVAR -eq 7 ]] +echo returns: $? + +A=7 +[[ $IVAR -eq A ]] +echo returns: $? + +unset IVAR A + +# more pattern matching tests + +[[ $filename == *.c ]] +echo returns: $? + +filename=patmatch.c + +[[ $filename == *.c ]] +echo returns: $? + +# the extended globbing features may be used when matching patterns +shopt -s extglob + +arg=-7 + +[[ $arg == -+([0-9]) ]] +echo returns: $? + +arg=-H + +[[ $arg == -+([0-9]) ]] +echo returns: $? + +arg=+4 +[[ $arg == ++([0-9]) ]] +echo returns: $? + +# make sure the null string is never matched if the string is not null +STR=file.c +PAT= + +if [[ $STR = $PAT ]]; then + echo oops +fi + +# but that if the string is null, a null pattern is matched correctly +STR= +PAT= + +if [[ $STR = $PAT ]]; then + echo ok +fi + +# bug in all versions up to and including bash-2.05b +if [[ "123abc" == *?(a)bc ]]; then echo ok 42; else echo bad 42; fi +if [[ "123abc" == *?(a)bc ]]; then echo ok 43; else echo bad 43; fi diff --git a/bash-20060316/tests/cprint.right b/bash-20060316/tests/cprint.right new file mode 100644 index 000000000..5dd629d16 --- /dev/null +++ b/bash-20060316/tests/cprint.right @@ -0,0 +1,72 @@ +tf is a function +tf () +{ + echo this is ${0##*/} >/dev/null; + echo a | cat - >/dev/null; + test -f ${0##*/} && echo ${0##*/} is a regular file; + test -d ${0##*/} || echo ${0##*/} is not a directory; + echo a; + echo b; + echo c; + echo background >/dev/null & ( exit 1 ); + echo $?; + { + echo a + }; + i=0; + while (( i < 3 )); do + test -r /dev/fd/$i; + i=$(( i + 1 )); + done; + [[ -r /dev/fd/0 && -w /dev/fd/1 ]] || echo oops >/dev/null; + for name in $( echo 1 2 3 ); + do + test -r /dev/fd/$name; + done; + if [[ -r /dev/fd/0 && -w /dev/fd/1 ]]; then + echo ok >/dev/null; + else + if (( 7 > 40 )); then + echo oops; + else + echo done; + fi; + fi >/dev/null; + case $PATH in + *$PWD*) + echo \$PWD in \$PATH + ;; + *) + echo \$PWD not in \$PATH + ;; + esac >/dev/null; + while false; do + echo z; + done >/dev/null; + until true; do + echo z; + done >/dev/null; + echo \&\|'()' \{ echo abcde \; \}; + eval fu\%nc'()' \{ echo abcde \; \}; + type fu\%nc +} +tf2 is a function +tf2 () +{ + ( { + time -p echo a | cat - >/dev/null + } ) 2>&1 +} +cprint.tests is a regular file +cprint.tests is not a directory +a +b +c +1 +a +&|() { echo abcde ; } +fu%nc is a function +fu%nc () +{ + echo abcde +} diff --git a/bash-20060316/tests/cprint.right.save1 b/bash-20060316/tests/cprint.right.save1 new file mode 100644 index 000000000..6b711b8c5 --- /dev/null +++ b/bash-20060316/tests/cprint.right.save1 @@ -0,0 +1,72 @@ +tf is a function +tf () +{ + echo this is ${0##*/} >/dev/null; + echo a | cat - >/dev/null; + test -f ${0##*/} && echo ${0##*/} is a regular file; + test -d ${0##*/} || echo ${0##*/} is not a directory; + echo a; + echo b; + echo c; + echo background >/dev/null & ( exit 1 ); + echo $?; + { + echo a + }; + i=0; + while (( " i < 3 " )); do + test -r /dev/fd/$i; + i=$(( i + 1 )); + done; + [[ -r /dev/fd/0 && -w /dev/fd/1 ]] || echo oops >/dev/null; + for name in $( echo 1 2 3 ); + do + test -r /dev/fd/$name; + done; + if [[ -r /dev/fd/0 && -w /dev/fd/1 ]]; then + echo ok >/dev/null; + else + if (( " 7 > 40 " )); then + echo oops; + else + echo done; + fi; + fi >/dev/null; + case $PATH in + *$PWD*) + echo \$PWD in \$PATH + ;; + *) + echo \$PWD not in \$PATH + ;; + esac >/dev/null; + while false; do + echo z; + done >/dev/null; + until true; do + echo z; + done >/dev/null; + echo \&\|'()' \{ echo abcde \; \}; + eval fu\%nc'()' \{ echo abcde \; \}; + type fu\%nc +} +tf2 is a function +tf2 () +{ + ( { + time -p echo a | cat - >/dev/null + } ) 2>&1 +} +cprint.tests is a regular file +cprint.tests is not a directory +a +b +c +1 +a +&|() { echo abcde ; } +fu%nc is a function +fu%nc () +{ + echo abcde +} diff --git a/bash-20060316/tests/cprint.tests b/bash-20060316/tests/cprint.tests new file mode 100644 index 000000000..08ff1ebc0 --- /dev/null +++ b/bash-20060316/tests/cprint.tests @@ -0,0 +1,67 @@ +# +# a nonsense script and shell function to test out the command printing code +# +tf() +{ + # simple command with redir + echo this is ${0##*/} > /dev/null + + # pipeline + echo a | cat - > /dev/null + + test -f ${0##*/} && echo ${0##*/} is a regular file + test -d ${0##*/} || echo ${0##*/} is not a directory + + echo a ; echo b ; echo c + + echo background >/dev/null & + + ( exit 1 ) + echo $? + + { echo a ; } + + i=0 + while (( i < 3 )); do + test -r /dev/fd/$i + i=$(( i + 1 )) + done + + [[ -r /dev/fd/0 && -w /dev/fd/1 ]] || echo oops > /dev/null + + for name in $( echo 1 2 3 ); do + test -r /dev/fd/$name + done + + if [[ -r /dev/fd/0 && -w /dev/fd/1 ]] ; then + echo ok > /dev/null + elif (( 7 > 40 )) ; then + echo oops + else + echo done + fi > /dev/null + + case $PATH in + *$PWD*) echo \$PWD in \$PATH ;; + *) echo \$PWD not in \$PATH ;; + esac > /dev/null + + while false; do echo z; done > /dev/null + + until true; do echo z ; done > /dev/null + + echo \&\|'()' \{ echo abcde \; \} + # when not in POSIX mode, we can have weirdly-named functions + eval fu\%nc'()' \{ echo abcde \; \} + type fu\%nc +} + +tf2() +{ + ( { time -p echo a | cat - > /dev/null ; } ) 2>&1 +} + +type tf +type tf2 + +tf diff --git a/bash-20060316/tests/cracauer-testsuite/DOC b/bash-20060316/tests/cracauer-testsuite/DOC new file mode 100644 index 000000000..30e81507a --- /dev/null +++ b/bash-20060316/tests/cracauer-testsuite/DOC @@ -0,0 +1,13 @@ +The scripts './test01.sh' to './test05.sh' all echo to stdout what +they should do and what behaviour is expected. Test them interactivly. + +Do a 'make' first to build a sample program that makes use of SIGQUIT +and SIGINT. Links the shell to test to './testshell' or './testcsh'. + +Remember to + stty quit '^\' +after each test. It seens resetting the terminal sometimes doesn't +reset the keys as well. + +The file OBSERVATIONS contains the misbehaviour I found. + diff --git a/bash-20060316/tests/cracauer-testsuite/Makefile b/bash-20060316/tests/cracauer-testsuite/Makefile new file mode 100644 index 000000000..103bb9399 --- /dev/null +++ b/bash-20060316/tests/cracauer-testsuite/Makefile @@ -0,0 +1,12 @@ +ALL = catcher + +all: $(ALL) + +DEPSTUFF = Makefile + +CFLAGS = -O -g -Wall -D_POSIX_SOURCE + +catcher: $(DEPSTUFF) catcher.c + +clean: + -rm $(ALL) *.core core *.o diff --git a/bash-20060316/tests/cracauer-testsuite/OBSERVATIONS b/bash-20060316/tests/cracauer-testsuite/OBSERVATIONS new file mode 100644 index 000000000..b856d08af --- /dev/null +++ b/bash-20060316/tests/cracauer-testsuite/OBSERVATIONS @@ -0,0 +1,84 @@ +CRA = my diffs. +BDE = Bruce diffs. + +BDE version 19980212: + +Test 2: It should send SIGQUIT to cat, it doesn't. + +Test 9: can't break wait() + +%% older notes: + +test2: + trap '' 2 + while : ; do cat ; echo -n $? ; done +test6: + trap '' 3 + while : ; do cat ; echo -n $? ; done + +The trapped signal should be ignored. If SIGINT is ignored (test 2), +SIGQUIT exits `cat`, but not the shell (means the loop will continue +and `cat` will be called again). + +If SIGQUIT is ignored, SIGINT both exit the whole script. + +I'm not sure this asymmetric behaviour is intended, but currently CRA +and BDE versions has is. + +I think SIGTERM should exit the script in all cases immedeatly. CRA +version does this, BDE version ignores SIGTERM. + +bash1 falls over completely on these tests. + +bash2 works like CRA version. + +Other tests: +------------ + +BDE version fails on 5, the shell terminated while the forground child +is running (like the unpatched FreeBSD sh did). + +BDE version handles SIGQUIT seperately from SIGINT in test 1, and 3, +but not in test 4 and 5. + +bash2 fails on 5, it gets a SIGQUIT that was sent to a +SIGQUIT-catching process after that process exits. Reliably, it +doesn't matter how much time was passed between SIGQUIT to process and +exit or process. + +As Bruce noted, bash version 1 fails on test 2 like my version of sh +does. bash1 doesn't have the bash2 problem on test 5 (getting signals +that were caught by the child after the child exits). + +zsh fails on test 1 and 5 in a similar way bash2 failed on 5: After a +child exits that received SIGINT, it terminates immedeatly. + +I wonder how bash 2 manages to fail on test 5, but to pass test 1... + +csh fails on test 1 in two ways: +- when the SIGINT/SIGQUIT-catching child receives both SIGQUIT and + SIGINT, csh exits immedeatly, while the child is still running. +- when only one or more SIGQUIT are delivered to the child, csh gets + it after the child exits and terminates with coredump. + +csh also ignores SIGQUIT where SIGINT is caught. + +test2.csh is different from test1.sh in that all signals should be +caught. csh fails in that it sometimes gets SIGQUIT and exits with +coredump (the shell, not the child). + + +Other stuff not directly relevant to these fixes: +================================================= + +csh oddness: +------------ + +When the "catcher" program resets the terminal, there's a time-window +where C-g is mapped to SIGQUIT, but "catcher" already exited. In other +word, if you type C-g while in "catcher", then immedeatly C-d, csh +will get SIGQUIT. I thought that remapping the terminal keys should +have been done before the shell is re-entered. The same happens to +tcsh. + +With sh variants I didn't manage to deliver SIGQUIT by C-g. diff --git a/bash-20060316/tests/cracauer-testsuite/QUESTIONS b/bash-20060316/tests/cracauer-testsuite/QUESTIONS new file mode 100644 index 000000000..a1620be7f --- /dev/null +++ b/bash-20060316/tests/cracauer-testsuite/QUESTIONS @@ -0,0 +1 @@ +Should the background job be killed in test 3? diff --git a/bash-20060316/tests/cracauer-testsuite/catcher.c b/bash-20060316/tests/cracauer-testsuite/catcher.c new file mode 100644 index 000000000..f2de71c92 --- /dev/null +++ b/bash-20060316/tests/cracauer-testsuite/catcher.c @@ -0,0 +1,142 @@ +#undef VERBOSE + +#include +#include +#include +#include +#include + +#include +#include + +#include + +#define BUFSIZE 65536 + +struct termios ttystate; +struct termios oldttystate; +int cleanupP = 0; + +#ifndef CTRL +#define CTRL(x) (x&037) +#endif + +int _global_fd; + +void handler2(int sig) +{ +#define TMP "Async action on sigint (2)\n" + write(1,TMP,sizeof(TMP)-1); +#undef TMP +} + +void handler3(int sig) +{ +#define TMP "Async action on sigquit (3)\n" + write(1,TMP,sizeof(TMP)-1); +#undef TMP +} + +void cleanup() +{ + if (cleanupP) { + printf("Resettung terminal\n"); + if (tcsetattr(_global_fd, TCSANOW, &oldttystate) < 0) { + perror("ioctl reset /dev/tty"); + } + } + close(_global_fd); +} + +static void exit_handler(int sig) +#ifdef __GNUC__ + __attribute__ ((noreturn)) +#endif +; +static void exit_handler(int sig) +{ + cleanup(); + if (sig) + printf("Exiting on signal %d\n",sig); + exit(0); +} + +int main() +{ + char c[BUFSIZE]; + pid_t pgrp; + +#ifdef VERBOSE + printf("I'm PID %d\n",getpid()); +#endif + + if ( ( _global_fd = open("/dev/tty",O_RDONLY)) < 1) { + perror("open /dev/tty"); + exit_handler(0); + } + + if ( (pgrp = tcgetpgrp(_global_fd)) < 0) { + perror("Can't get pgrp\n"); + exit_handler(0); + } +#ifdef VERBOSE + printf("tty pgrp is %ld\n",(long)pgrp); +#endif + + if ( tcsetpgrp(_global_fd, pgrp) < 0) { + perror("Can't set pgrp\n"); + exit_handler(0); + } + + if (tcgetattr(_global_fd, &oldttystate) < 0) { + perror("ioctl1 /dev/tty"); + exit_handler(0); + } + ttystate = oldttystate; + ttystate.c_lflag &= ~ICANON; + ttystate.c_lflag &= ~ECHO; + ttystate.c_cc[VQUIT] = CTRL('g'); /* From sys/ttydefaults.h */ + if (tcsetattr(_global_fd, TCSANOW, &ttystate) < 0) { + perror("ioctl2 /dev/tty"); + exit_handler(0); + } + cleanupP = 1; + + { + struct sigaction siga; + + sigemptyset(&siga.sa_mask); + siga.sa_flags = 0; + + siga.sa_handler = handler2; + sigaction(SIGINT, &siga, (struct sigaction *)0); + siga.sa_handler = handler3; + sigaction(SIGQUIT, &siga, (struct sigaction *)0); + + siga.sa_handler = exit_handler; + sigaction(SIGHUP, &siga, (struct sigaction *)0); + sigaction(SIGTERM, &siga, (struct sigaction *)0); + } + + printf("Use C-c and C-g for async actions, end with C-d\n"); + while (1) { + switch (read(_global_fd,c,1)) { + case -1: + if (errno == EINTR) + continue; + perror("stdin read"); + exit_handler(0); + case 0: + printf("Exiting on stdin EOF (should happen only in cannon mode\n"); + exit_handler(0); + default: + if (c[0] == CEOF) { /* From sys/ttydefaults.h */ + printf("Exiting on stdin EOF (hopefully only in noncannon mode)\n"); + exit_handler(0); + } + printf("You typed: '%c' (0x%X)\n",c[0],c[0]); + } + } + exit_handler(0); + return 0; +} diff --git a/bash-20060316/tests/cracauer-testsuite/lib.csh b/bash-20060316/tests/cracauer-testsuite/lib.csh new file mode 100644 index 000000000..b8e8a77a3 --- /dev/null +++ b/bash-20060316/tests/cracauer-testsuite/lib.csh @@ -0,0 +1,7 @@ +# I don't have a clue about csh programming... + +alias docatcher '\ + echo "Trigger some async actions, shell should not exit" \ + echo "Then exit catcher with C-d" \ + ./catcher' + diff --git a/bash-20060316/tests/cracauer-testsuite/lib.sh b/bash-20060316/tests/cracauer-testsuite/lib.sh new file mode 100644 index 000000000..8e8756552 --- /dev/null +++ b/bash-20060316/tests/cracauer-testsuite/lib.sh @@ -0,0 +1,14 @@ +docatcher() +{ + echo 'Trigger some async actions, shell should not exit' + echo 'Then exit catcher with C-d' + if [ ! -f ./catcher ] ; then + make catcher + fi + ./catcher +} + +endless() +{ + while : ; do foo=1 ; done +} \ No newline at end of file diff --git a/bash-20060316/tests/cracauer-testsuite/test01.csh b/bash-20060316/tests/cracauer-testsuite/test01.csh new file mode 100644 index 000000000..bf50bc78e --- /dev/null +++ b/bash-20060316/tests/cracauer-testsuite/test01.csh @@ -0,0 +1,12 @@ +#!./testcsh -f + +echo 'Test 1: See whether child can work on SIGINT and SIGQUIT without' +echo ' terminating the shell around it. See if the shell is' +echo ' interruptable afterwards' + +source lib.csh + +docatcher +echo "No try to exit shell loop with C-c, C-\ or SIGTERM" +while (1) +end diff --git a/bash-20060316/tests/cracauer-testsuite/test01.sh b/bash-20060316/tests/cracauer-testsuite/test01.sh new file mode 100644 index 000000000..fabf8fb8b --- /dev/null +++ b/bash-20060316/tests/cracauer-testsuite/test01.sh @@ -0,0 +1,15 @@ +#!./testshell + +echo 'Test 1: See whether child can work on SIGINT and SIGQUIT without' +echo ' terminating the shell around it. See if the shell is' +echo ' interruptable afterwards' + +if [ $ZSH_VERSION ] ; then + source lib.sh +else + . lib.sh +fi + +docatcher +echo 'Now try to exit shell loop with C-c, C-\ or SIGTERM' +endless diff --git a/bash-20060316/tests/cracauer-testsuite/test02.csh b/bash-20060316/tests/cracauer-testsuite/test02.csh new file mode 100644 index 000000000..a60d70ade --- /dev/null +++ b/bash-20060316/tests/cracauer-testsuite/test02.csh @@ -0,0 +1,13 @@ +#!./testcsh -f + +echo 'Test 2: You should not be able to end cat using anything besides SIGKILL' + +source lib.csh + +onintr - + +while (1) + echo cat + cat + echo Exited with $? +end diff --git a/bash-20060316/tests/cracauer-testsuite/test02.sh b/bash-20060316/tests/cracauer-testsuite/test02.sh new file mode 100644 index 000000000..4c6f82d8a --- /dev/null +++ b/bash-20060316/tests/cracauer-testsuite/test02.sh @@ -0,0 +1,10 @@ +#!./testshell + +echo 'Test 2: You should not be able to exit `cat` with SIGINT.' +echo ' SIGQUIT should abort `cat` (with coredump) while' +echo ' the shell should continue and call `cat` again.' +echo ' SIGTERM should exit the whole script.' + +set -x +trap '' 2 +while : ; do cat ; echo -n $? ; done diff --git a/bash-20060316/tests/cracauer-testsuite/test03.sh b/bash-20060316/tests/cracauer-testsuite/test03.sh new file mode 100644 index 000000000..955d6dd58 --- /dev/null +++ b/bash-20060316/tests/cracauer-testsuite/test03.sh @@ -0,0 +1,18 @@ +#!./testshell + +echo 'Test 3: A background job is being started, then the shell loops.' +echo ' You should be able to break the shell loop with C-c.' +echo ' This goes wrong if the shell blocks signals when' +echo ' starting any child. It should do so only for foreground' +echo ' jobs.' + +if [ $ZSH_VERSION ] ; then + source lib.sh +else + . lib.sh +fi + +echo Starting job +gzip < /dev/zero | wc & +echo 'Now try to break this loop' +endless diff --git a/bash-20060316/tests/cracauer-testsuite/test04.sh b/bash-20060316/tests/cracauer-testsuite/test04.sh new file mode 100644 index 000000000..962aa7ab0 --- /dev/null +++ b/bash-20060316/tests/cracauer-testsuite/test04.sh @@ -0,0 +1,18 @@ +#!./testshell + +echo 'Test 4: Three shells all loop. You should be able to terminate this' +echo ' script with just one SIGINT or SIGQUIT' + +if [ $ZSH_VERSION ] ; then + source lib.sh +else + . lib.sh +fi + +( + ( + endless + ) + endless +) +endless diff --git a/bash-20060316/tests/cracauer-testsuite/test05.sh b/bash-20060316/tests/cracauer-testsuite/test05.sh new file mode 100644 index 000000000..cbef1aeb6 --- /dev/null +++ b/bash-20060316/tests/cracauer-testsuite/test05.sh @@ -0,0 +1,23 @@ +#!./testshell + +echo 'Test 5: The SIGINT/SIGQUIT-catching program is being run' +echo ' A: The shell should not exit on signals while this program runs.' +echo ' B: After you exited it via C-d, you should be able to end this' +echo ' script with its 3 subhells with just one signal' +echo ' script with just one SIGINT or SIGQUIT' + +if [ $ZSH_VERSION ] ; then + source lib.sh +else + . lib.sh +fi + +( + ( + docatcher + echo "Now try to exit with one SIGINT" + endless + ) + endless +) +endless diff --git a/bash-20060316/tests/cracauer-testsuite/test06.sh b/bash-20060316/tests/cracauer-testsuite/test06.sh new file mode 100644 index 000000000..ce1b91197 --- /dev/null +++ b/bash-20060316/tests/cracauer-testsuite/test06.sh @@ -0,0 +1,10 @@ +#!./testshell + +echo 'Test 2: You should not be able to exit `cat` with SIGQUIT.' +echo ' SIGINT should exit `cat` (without coredump) while' +echo ' the shell should continue and call `cat` again.' +echo ' SIGTERM should exit the whole script.' + +set -x +trap '' 3 +while : ; do cat ; echo -n $? ; done diff --git a/bash-20060316/tests/cracauer-testsuite/test07.csh b/bash-20060316/tests/cracauer-testsuite/test07.csh new file mode 100644 index 000000000..9909e3258 --- /dev/null +++ b/bash-20060316/tests/cracauer-testsuite/test07.csh @@ -0,0 +1,19 @@ +#!./testcsh -f + +echo 'Test 7: See whether child can work on SIGINT and SIGQUIT without' +echo ' terminating the shell around it. See if the shell' +echo ' continues the script after the child exits' + +source lib.csh + +echo +echo 'After the catching program, you should see 4 lines of text, sent' +echo 'with one second delay each' +docatcher +echo 'You should see 3 more lines' +sleep 1 +echo 'You should see 2 more lines' +sleep 1 +echo 'You should see 1 more line' +sleep 1 +echo 'Done' diff --git a/bash-20060316/tests/cracauer-testsuite/test07.sh b/bash-20060316/tests/cracauer-testsuite/test07.sh new file mode 100644 index 000000000..2f87ce45b --- /dev/null +++ b/bash-20060316/tests/cracauer-testsuite/test07.sh @@ -0,0 +1,23 @@ +#!./testshell + +echo 'Test 7: See whether child can work on SIGINT and SIGQUIT without' +echo ' terminating the shell around it. See if the shell' +echo ' continues the script after the child exits' + +if [ $ZSH_VERSION ] ; then + source lib.sh +else + . lib.sh +fi + +echo +echo 'After the catching program, you should see 4 lines of text, sent' +echo 'with one second delay each' +docatcher +echo 'You should see 3 more lines' +sleep 1 +echo 'You should see 2 more lines' +sleep 1 +echo 'You should see 1 more line' +sleep 1 +echo 'Done' diff --git a/bash-20060316/tests/cracauer-testsuite/test08.sh b/bash-20060316/tests/cracauer-testsuite/test08.sh new file mode 100644 index 000000000..87bde69d0 --- /dev/null +++ b/bash-20060316/tests/cracauer-testsuite/test08.sh @@ -0,0 +1,19 @@ +#!./testshell + +echo 'Test 8: Start a child that is to be interrupted by SIGINT.' +echo ' The shell should not continue with the script' + +if [ $ZSH_VERSION ] ; then + source lib.sh +else + . lib.sh +fi + +echo +echo 'Should exit immedeatly after you break cat by SIGINT' +echo cat +cat +sleep 1 +echo 'If you see this, you have a problem' +sleep 1 +echo 'If you see this, you have even more problems' diff --git a/bash-20060316/tests/cracauer-testsuite/test09.sh b/bash-20060316/tests/cracauer-testsuite/test09.sh new file mode 100644 index 000000000..d12cb53bb --- /dev/null +++ b/bash-20060316/tests/cracauer-testsuite/test09.sh @@ -0,0 +1,14 @@ +#!./testshell + +trap 'echo I am a trap' 2 + +echo 'Try to break wait using SIGINT before wc completes' +echo 'After you break wait, it should print "I am a trap"' +echo 'and then "Going on"' +echo 'wc &' +gzip < /kernel | wc & +p=$! +echo wait +wait +echo "Going on" +kill $p diff --git a/bash-20060316/tests/cracauer-testsuite/test10.sh b/bash-20060316/tests/cracauer-testsuite/test10.sh new file mode 100644 index 000000000..a3bdc629e --- /dev/null +++ b/bash-20060316/tests/cracauer-testsuite/test10.sh @@ -0,0 +1,4 @@ +#!./testshell + +echo 'You should be able to end the script with one SIGINT' +(while :; do wc /kernel > /dev/null ; done) diff --git a/bash-20060316/tests/cracauer-testsuite/test11.sh b/bash-20060316/tests/cracauer-testsuite/test11.sh new file mode 100644 index 000000000..b56d68ce8 --- /dev/null +++ b/bash-20060316/tests/cracauer-testsuite/test11.sh @@ -0,0 +1,13 @@ +#!./testshell + +echo 'Test 11 (variant of 9):' +echo 'Try to break wait using SIGINT before wc completes' +echo 'After you break wait, it should NOT print "Going on"' + +echo 'wc &' +gzip < /kernel | wc & +p=$! +echo wait +wait +echo "Going on" +kill $p diff --git a/bash-20060316/tests/cracauer-testsuite/test12.sh b/bash-20060316/tests/cracauer-testsuite/test12.sh new file mode 100644 index 000000000..b724eaec2 --- /dev/null +++ b/bash-20060316/tests/cracauer-testsuite/test12.sh @@ -0,0 +1,5 @@ +#!./testshell + +echo 'Test 12 (Variant of test10):' +echo 'You should be able to end the script with one SIGINT' +(while :; do ./catcher ; done) diff --git a/bash-20060316/tests/cracauer-testsuite/test13.sh b/bash-20060316/tests/cracauer-testsuite/test13.sh new file mode 100644 index 000000000..f4b8bb861 --- /dev/null +++ b/bash-20060316/tests/cracauer-testsuite/test13.sh @@ -0,0 +1,9 @@ +#!./testshell + +echo 'Test 13 (variant of Test 1):' +echo 'On SIGINT, cat should exit (and be restarted by the shell loop)' +echo 'and the Text "I am a trap" should be printed' + +set -x +trap 'echo I am a trap' 2 +while : ; do cat ; echo -n $? ; done diff --git a/bash-20060316/tests/dbg-support.right b/bash-20060316/tests/dbg-support.right new file mode 100644 index 000000000..eb7d3c3ac --- /dev/null +++ b/bash-20060316/tests/dbg-support.right @@ -0,0 +1,353 @@ +debug lineno: 63 main +debug lineno: 66 main +FUNCNAME main +debug lineno: 70 main +debug lineno: 17 fn1 +debug lineno: 18 fn1 +LINENO 18 +debug lineno: 19 fn1 +LINENO 19 +debug lineno: 20 fn1 +BASH_SOURCE[0] ./dbg-support.tests +debug lineno: 21 fn1 +FUNCNAME[0] fn1 +debug lineno: 22 fn1 +debug lineno: 22 fn1 70 ./dbg-support.tests +debug lineno: 23 fn1 +debug lineno: 23 fn1 70 main ./dbg-support.tests +debug lineno: 24 fn1 +debug lineno: 24 fn1 +debug lineno: 25 fn1 +./dbg-support.tests: line 25: caller: foo: invalid number +caller: usage: caller [EXPR] +debug lineno: 25 fn1 +debug lineno: 17 fn1 +debug lineno: 12 print_return_trap +debug lineno: 13 print_return_trap +return lineno: 17 fn1 +debug lineno: 14 print_return_trap +debug lineno: 71 main +debug lineno: 28 fn2 +debug lineno: 29 fn2 +fn2 here. Calling fn1... +debug lineno: 30 fn2 +debug lineno: 17 fn1 +debug lineno: 18 fn1 +LINENO 18 +debug lineno: 19 fn1 +LINENO 19 +debug lineno: 20 fn1 +BASH_SOURCE[0] ./dbg-support.tests +debug lineno: 21 fn1 +FUNCNAME[0] fn1 +debug lineno: 22 fn1 +debug lineno: 22 fn1 30 ./dbg-support.tests +debug lineno: 23 fn1 +debug lineno: 23 fn1 30 fn2 ./dbg-support.tests +debug lineno: 24 fn1 +debug lineno: 24 fn1 71 main ./dbg-support.tests +debug lineno: 25 fn1 +./dbg-support.tests: line 25: caller: foo: invalid number +caller: usage: caller [EXPR] +debug lineno: 25 fn1 +debug lineno: 17 fn1 +debug lineno: 12 print_return_trap +debug lineno: 13 print_return_trap +return lineno: 17 fn1 +debug lineno: 14 print_return_trap +debug lineno: 28 fn2 +debug lineno: 12 print_return_trap +debug lineno: 13 print_return_trap +return lineno: 28 fn2 +debug lineno: 14 print_return_trap +debug lineno: 72 main +debug lineno: 33 fn3 +debug lineno: 34 fn3 +LINENO 34 +debug lineno: 35 fn3 +BASH_SOURCE[0] ./dbg-support.tests +debug lineno: 38 fn3 +debug lineno: 39 fn3 +debug lineno: 40 fn3 +debug lineno: 40 fn3 +debug lineno: 41 fn3 +debug lineno: 42 fn3 +debug lineno: 43 fn3 +fn3 called from file `./dbg-support.tests' at line 0 +debug lineno: 40 fn3 +debug lineno: 40 fn3 +debug lineno: 41 fn3 +debug lineno: 42 fn3 +debug lineno: 42 fn3 +debug lineno: 43 fn3 +main called from file `./dbg-support.tests' at line 0 +debug lineno: 40 fn3 +debug lineno: 40 fn3 +debug lineno: 46 fn3 +debug lineno: 18 source +SOURCED LINENO 18 +debug lineno: 19 source +SOURCED BASH_SOURCE[0] ./dbg-support.sub +debug lineno: 20 source +debug lineno: 3 sourced_fn +debug lineno: 4 sourced_fn +debug lineno: 5 sourced_fn +SOURCED FN LINENO 5 +debug lineno: 8 sourced_fn +debug lineno: 9 sourced_fn +debug lineno: 10 sourced_fn +debug lineno: 10 sourced_fn +debug lineno: 11 sourced_fn +debug lineno: 12 sourced_fn +debug lineno: 13 sourced_fn +FUNCNAME[0]: sourced_fn called from ./dbg-support.sub at line 20 +debug lineno: 10 sourced_fn +debug lineno: 10 sourced_fn +debug lineno: 11 sourced_fn +debug lineno: 12 sourced_fn +debug lineno: 13 sourced_fn +FUNCNAME[1]: source called from ./dbg-support.tests at line 46 +debug lineno: 10 sourced_fn +debug lineno: 10 sourced_fn +debug lineno: 11 sourced_fn +debug lineno: 12 sourced_fn +debug lineno: 13 sourced_fn +FUNCNAME[2]: fn3 called from ./dbg-support.tests at line 72 +debug lineno: 10 sourced_fn +debug lineno: 10 sourced_fn +debug lineno: 11 sourced_fn +debug lineno: 12 sourced_fn +debug lineno: 12 sourced_fn +debug lineno: 13 sourced_fn +FUNCNAME[3]: main called from ./dbg-support.tests at line 0 +debug lineno: 10 sourced_fn +debug lineno: 10 sourced_fn +debug lineno: 3 sourced_fn +debug lineno: 12 print_return_trap +debug lineno: 13 print_return_trap +return lineno: 3 sourced_fn +debug lineno: 14 print_return_trap +debug lineno: 46 fn3 +debug lineno: 12 print_return_trap +debug lineno: 13 print_return_trap +return lineno: 46 fn3 +debug lineno: 14 print_return_trap +debug lineno: 33 fn3 +debug lineno: 12 print_return_trap +debug lineno: 13 print_return_trap +return lineno: 33 fn3 +debug lineno: 14 print_return_trap +debug lineno: 73 main +debug lineno: 18 source +SOURCED LINENO 18 +debug lineno: 19 source +SOURCED BASH_SOURCE[0] ./dbg-support.sub +debug lineno: 20 source +debug lineno: 3 sourced_fn +debug lineno: 4 sourced_fn +debug lineno: 5 sourced_fn +SOURCED FN LINENO 5 +debug lineno: 8 sourced_fn +debug lineno: 9 sourced_fn +debug lineno: 10 sourced_fn +debug lineno: 10 sourced_fn +debug lineno: 11 sourced_fn +debug lineno: 12 sourced_fn +debug lineno: 13 sourced_fn +FUNCNAME[0]: sourced_fn called from ./dbg-support.sub at line 20 +debug lineno: 10 sourced_fn +debug lineno: 10 sourced_fn +debug lineno: 11 sourced_fn +debug lineno: 12 sourced_fn +debug lineno: 13 sourced_fn +FUNCNAME[1]: source called from ./dbg-support.tests at line 73 +debug lineno: 10 sourced_fn +debug lineno: 10 sourced_fn +debug lineno: 11 sourced_fn +debug lineno: 12 sourced_fn +debug lineno: 12 sourced_fn +debug lineno: 13 sourced_fn +FUNCNAME[2]: main called from ./dbg-support.tests at line 0 +debug lineno: 10 sourced_fn +debug lineno: 10 sourced_fn +debug lineno: 3 sourced_fn +debug lineno: 12 print_return_trap +debug lineno: 13 print_return_trap +return lineno: 3 sourced_fn +debug lineno: 14 print_return_trap +debug lineno: 73 main +debug lineno: 12 print_return_trap +debug lineno: 13 print_return_trap +return lineno: 73 main +debug lineno: 14 print_return_trap +debug lineno: 76 main +debug lineno: 79 main +LINENO 18 +LINENO 19 +BASH_SOURCE[0] ./dbg-support.tests +FUNCNAME[0] fn1 +79 ./dbg-support.tests +79 main ./dbg-support.tests + +./dbg-support.tests: line 25: caller: foo: invalid number +caller: usage: caller [EXPR] + +debug lineno: 80 main +fn2 here. Calling fn1... +LINENO 18 +LINENO 19 +BASH_SOURCE[0] ./dbg-support.tests +FUNCNAME[0] fn1 +30 ./dbg-support.tests +30 fn2 ./dbg-support.tests +80 main ./dbg-support.tests +./dbg-support.tests: line 25: caller: foo: invalid number +caller: usage: caller [EXPR] + +debug lineno: 81 main +LINENO 34 +BASH_SOURCE[0] ./dbg-support.tests +fn3 called from file `./dbg-support.tests' at line 0 +main called from file `./dbg-support.tests' at line 0 +SOURCED LINENO 18 +SOURCED BASH_SOURCE[0] ./dbg-support.sub +SOURCED FN LINENO 5 +FUNCNAME[0]: sourced_fn called from ./dbg-support.sub at line 20 +FUNCNAME[1]: source called from ./dbg-support.tests at line 46 +FUNCNAME[2]: fn3 called from ./dbg-support.tests at line 81 +FUNCNAME[3]: main called from ./dbg-support.tests at line 0 +debug lineno: 82 main +fn4 here. Calling fn3... +LINENO 34 +BASH_SOURCE[0] ./dbg-support.tests +fn3 called from file `./dbg-support.tests' at line 82 +fn4 called from file `./dbg-support.tests' at line 0 +main called from file `./dbg-support.tests' at line 0 +SOURCED LINENO 18 +SOURCED BASH_SOURCE[0] ./dbg-support.sub +SOURCED FN LINENO 5 +FUNCNAME[0]: sourced_fn called from ./dbg-support.sub at line 20 +FUNCNAME[1]: source called from ./dbg-support.tests at line 46 +FUNCNAME[2]: fn3 called from ./dbg-support.tests at line 51 +FUNCNAME[3]: fn4 called from ./dbg-support.tests at line 82 +FUNCNAME[4]: main called from ./dbg-support.tests at line 0 +debug lineno: 83 main +SOURCED LINENO 18 +SOURCED BASH_SOURCE[0] ./dbg-support.sub +SOURCED FN LINENO 5 +FUNCNAME[0]: sourced_fn called from ./dbg-support.sub at line 20 +FUNCNAME[1]: source called from ./dbg-support.tests at line 83 +FUNCNAME[2]: main called from ./dbg-support.tests at line 0 +return lineno: 83 main +debug lineno: 86 main +debug lineno: 89 main +debug lineno: 18 source +SOURCED LINENO 18 +debug lineno: 19 source +SOURCED BASH_SOURCE[0] ./dbg-support.sub +debug lineno: 20 source +debug lineno: 3 sourced_fn +debug lineno: 4 sourced_fn +debug lineno: 5 sourced_fn +SOURCED FN LINENO 5 +debug lineno: 8 sourced_fn +debug lineno: 9 sourced_fn +debug lineno: 10 sourced_fn +debug lineno: 10 sourced_fn +debug lineno: 11 sourced_fn +debug lineno: 12 sourced_fn +debug lineno: 13 sourced_fn +FUNCNAME[0]: sourced_fn called from ./dbg-support.sub at line 20 +debug lineno: 10 sourced_fn +debug lineno: 10 sourced_fn +debug lineno: 11 sourced_fn +debug lineno: 12 sourced_fn +debug lineno: 13 sourced_fn +FUNCNAME[1]: source called from ./dbg-support.tests at line 89 +debug lineno: 10 sourced_fn +debug lineno: 10 sourced_fn +debug lineno: 11 sourced_fn +debug lineno: 12 sourced_fn +debug lineno: 12 sourced_fn +debug lineno: 13 sourced_fn +FUNCNAME[2]: main called from ./dbg-support.tests at line 0 +debug lineno: 10 sourced_fn +debug lineno: 10 sourced_fn +debug lineno: 3 sourced_fn +debug lineno: 12 print_return_trap +debug lineno: 13 print_return_trap +return lineno: 3 sourced_fn +debug lineno: 14 print_return_trap +debug lineno: 89 main +debug lineno: 12 print_return_trap +debug lineno: 13 print_return_trap +return lineno: 89 main +debug lineno: 14 print_return_trap +debug lineno: 90 main +debug lineno: 93 main +debug lineno: 93 main +debug lineno: 94 main +debug lineno: 97 main +debug lineno: 93 main +debug lineno: 93 main +debug lineno: 94 main +debug lineno: 97 main +debug lineno: 93 main +debug lineno: 93 main +debug lineno: 94 main +debug lineno: 95 main +Hit 2 +debug lineno: 97 main +debug lineno: 93 main +debug lineno: 93 main +debug lineno: 103 main +SOURCED FN LINENO 5 FUNCNAME[0]: sourced_fn called from ./dbg-support.tests at line 103 FUNCNAME[1]: main called from ./dbg-support.tests at line 0 +debug lineno: 104 main +SOURCED FN LINENO 5 FUNCNAME[0]: sourced_fn called from ./dbg-support.tests at line 104 FUNCNAME[1]: main called from ./dbg-support.tests at line 0 +debug lineno: 105 main +debug lineno: 106 main +SOURCED FN LINENO 5 +FUNCNAME[0]: sourced_fn called from ./dbg-support.tests at line 106 +FUNCNAME[1]: main called from ./dbg-support.tests at line 0 +debug lineno: 110 main +debug lineno: 111 main +debug lineno: 3 sourced_fn +debug lineno: 4 sourced_fn +debug lineno: 5 sourced_fn +SOURCED FN LINENO 5 +debug lineno: 8 sourced_fn +debug lineno: 9 sourced_fn +debug lineno: 10 sourced_fn +debug lineno: 10 sourced_fn +debug lineno: 11 sourced_fn +debug lineno: 12 sourced_fn +debug lineno: 13 sourced_fn +FUNCNAME[0]: sourced_fn called from ./dbg-support.tests at line 111 +debug lineno: 10 sourced_fn +debug lineno: 10 sourced_fn +debug lineno: 11 sourced_fn +debug lineno: 12 sourced_fn +debug lineno: 12 sourced_fn +debug lineno: 13 sourced_fn +FUNCNAME[1]: main called from ./dbg-support.tests at line 0 +debug lineno: 10 sourced_fn +debug lineno: 10 sourced_fn +debug lineno: 3 sourced_fn +debug lineno: 12 print_return_trap +debug lineno: 13 print_return_trap +return lineno: 3 sourced_fn +debug lineno: 14 print_return_trap +debug lineno: 114 main +debug lineno: 119 main +debug lineno: 123 main +got it +debug lineno: 131 main +debug lineno: 132 main +debug lineno: 133 main +debug lineno: 132 main +debug lineno: 133 main +debug lineno: 131 main +debug lineno: 132 main +debug lineno: 133 main +debug lineno: 132 main +debug lineno: 133 main diff --git a/bash-20060316/tests/dbg-support.sub b/bash-20060316/tests/dbg-support.sub new file mode 100644 index 000000000..f68f8d9b3 --- /dev/null +++ b/bash-20060316/tests/dbg-support.sub @@ -0,0 +1,26 @@ +# This file is intended to be sourced from one of the bashdb test programs + +sourced_fn() { + name="fn2" + echo "SOURCED FN LINENO $LINENO" + + # Print a stack trace + declare -i n + n=${#FUNCNAME[@]} + for (( i=0 ; (( i < $n )) ; i++ )) ; do + local -i j=i+1 + [ $j -eq $n ] && j=i # main()'s file is the same as the first caller + echo "FUNCNAME[$i]: ${FUNCNAME[$i]} called from ${BASH_SOURCE[$j]}" \ + "at line ${BASH_LINENO[$i]}" + done +} + +echo "SOURCED LINENO $LINENO" +echo "SOURCED BASH_SOURCE[0]" ${BASH_SOURCE[0]} +sourced_fn + +#;;; Local Variables: *** +#;;; mode:shell-script *** +#;;; eval: (sh-set-shell "bash") *** +#;;; End: *** + diff --git a/bash-20060316/tests/dbg-support.tests b/bash-20060316/tests/dbg-support.tests new file mode 100755 index 000000000..517591c2e --- /dev/null +++ b/bash-20060316/tests/dbg-support.tests @@ -0,0 +1,139 @@ +#!../bash +# +# Test correct functioning bash debug support not via the bashdb +# debugger but merely by printing via print_trap() +# $Id: dbg-support.tests,v 1.13 2003/02/17 22:02:25 rockyb Exp $ +shopt -s extdebug +print_debug_trap() { + echo "debug lineno: $1 ${FUNCNAME[1]}" + return +} + +print_return_trap() { + echo "return lineno: $1 ${FUNCNAME[1]}" + return +} + +fn1() { + echo "LINENO $LINENO" + echo "LINENO $LINENO" + echo "BASH_SOURCE[0]" ${BASH_SOURCE[0]} + echo "FUNCNAME[0]" ${FUNCNAME[0]} + echo `caller` + echo `caller 0` + echo `caller 1` + echo `caller foo` +} + +fn2() { + echo "fn2 here. Calling fn1..." + fn1 +} + +fn3() { + echo "LINENO $LINENO" + echo "BASH_SOURCE[0]" ${BASH_SOURCE[0]} + + # Print a stack trace + declare -i n + n=${#FUNCNAME[@]} + for (( i=0 ; (( i < $n )) ; i++ )) ; do + local -i j=i+1 + [ $j -eq $n ] && j=i # main()'s file is the same as the first caller + echo "${FUNCNAME[$i]} called from file " \ + "\`${BASH_SOURCE[$j]}' at line ${BASH_LINENO[$j]}" + done + source ./dbg-support.sub +} + +fn4() { + echo "fn4 here. Calling fn3..." + fn3 +} + + +#!../bash +# +# Test of support for debugging facilities in bash +# +# Test debugger set option functrace - set on. Not in vanilla Bash 2.05 +# +set -o functrace +trap 'print_debug_trap $LINENO' DEBUG +trap 'print_return_trap $LINENO' RETURN + +# Funcname is now an array, but you still can't see it outside a function +echo "FUNCNAME" ${FUNCNAME[0]:-main} + +# We should trace into the below. +# Start easy with a simple function. +fn1 +fn2 +fn3 +source ./dbg-support.sub + +# Test debugger set option functrace - set off +set +T + +# We should not trace into this. +fn1 +fn2 +fn3 +fn4 +source ./dbg-support.sub + +# Another way to say: set -o functrace +set -T + +# We should trace into this. +source ./dbg-support.sub +set +T + +# Test that the line numbers in the presence of conditionals are correct. +for (( i=0 ; (( i <= 2 )) ; i++ )) ; do + if [ $i -eq 2 ] ; then + echo "Hit 2" + fi + j=4 +done + +# +# Check line numbers in command substitution +# +echo $(sourced_fn) +echo `sourced_fn` +x=$((sourced_fn)) +x={ sourced_fn } + +# Make sure we step into sourced_fn as a comand when we request to do so. +# Vanilla bash 2.0 doesn't do. +set -o functrace +x={ sourced_fn } + +# Should see line number of xyzzy below. Vanilla bash 2.05b doesn't do +case xyzzy in + a ) + x=5 + ;; + xyzz? ) + case 3 in + 2 ) + x=6 ;; + 3 ) + echo "got it" ;; + * ) echo "no good" ;; + esac + ;; + * ) +esac + +# Should see line numbers for initial for lines. +for i in 0 1 ; do + for j in 3 4 ; do + ((x=i+j)) + done +done +#;;; Local Variables: *** +#;;; mode:shell-script *** +#;;; eval: (sh-set-shell "bash") *** +#;;; End: *** diff --git a/bash-20060316/tests/dbg-support2.right b/bash-20060316/tests/dbg-support2.right new file mode 100644 index 000000000..c9d884e65 --- /dev/null +++ b/bash-20060316/tests/dbg-support2.right @@ -0,0 +1,7 @@ +lineno: 17 (6) main +lineno: 18 (6) main +x is 1 +lineno: 19 (6) main +lineno: 20 (6) main +lineno: 21 (6) main +x is 1 diff --git a/bash-20060316/tests/dbg-support2.tests b/bash-20060316/tests/dbg-support2.tests new file mode 100755 index 000000000..fdc0f31eb --- /dev/null +++ b/bash-20060316/tests/dbg-support2.tests @@ -0,0 +1,26 @@ +#!../bash +# +# Test correct trap return codes = 2 means skip execution. +shopt -s extdebug +print_trap() { + echo "lineno: $1 ($LINENO) ${FUNCNAME[1]}" + if [[ $debug_exit == 2 ]] ; then + debug_exit=0 + return 2 + fi + return 0 +} + +debug_exit=0 +trap 'print_trap $LINENO' DEBUG + +x=1 +echo "x is $x" +debug_exit=2 +x=2 +echo "x is $x" + +#;;; Local Variables: *** +#;;; mode:shell-script *** +#;;; eval: (sh-set-shell "bash") *** +#;;; End: *** diff --git a/bash-20060316/tests/dollar-at-star b/bash-20060316/tests/dollar-at-star new file mode 100755 index 000000000..25c24435b --- /dev/null +++ b/bash-20060316/tests/dollar-at-star @@ -0,0 +1,226 @@ +# first, let's start with the basics + +recho "$@" +recho "$*" + +recho $@ +recho $* + +set a b + +recho "$*" + +# If IFS is null, the parameters are joined without separators +IFS='' +recho "$*" + +# If IFS is unset, the parameters are separated by spaces +unset IFS +recho "${*}" + +recho "$@" +recho $@ + +IFS='/' +set bob 'tom dick harry' joe +set $* +recho $# +recho $1 +recho $2 +recho $3 + +set bob 'tom dick harry' joe +set ${*} +recho $# +recho $1 +recho $2 +recho $3 + +set bob 'tom dick harry' joe +set $@ +recho $# +recho $1 +recho $2 +recho $3 + +set bob 'tom dick harry' joe +set ${@} +recho $# +recho $1 +recho $2 +recho $3 + +# according to POSIX.2, unquoted $* should expand to multiple words if +# $IFS is null, just like unquoted $@ +IFS='' +set bob 'tom dick harry' joe +set $* +recho $# +recho $1 +recho $2 +recho $3 + +set bob 'tom dick harry' joe +set $@ +recho $# +recho $1 +recho $2 +recho $3 + +# if IFS is unset, the individual positional parameters are split on +# " \t\n" if $* or $@ are unquoted +unset IFS +set bob 'tom dick harry' joe +set $* +recho $# +recho $1 +recho $2 +recho $3 + +set bob 'tom dick harry' joe +set $@ +recho $# +recho $1 +recho $2 +recho $3 + +# but not for "$@" or "$*" +set bob 'tom dick harry' joe +set "$*" +recho $# +recho $1 +recho $2 +recho $3 + +set bob 'tom dick harry' joe +set "$@" +recho $# +recho $1 +recho $2 +recho $3 + +# POSIX.2 says these should both expand the positional parameters +# to multiple words +set a b c d e +IFS="" +recho $@ +recho "$@" + +# this example is straight from the POSIX.2 rationale +set foo bar bam + +recho "$@" +recho "$*" + +unset IFS + +recho "$@" +recho $@ +recho "$*" + +IFS=: + +# special variables +set -- 1 2 3 4 5 6 7 8 9 10 + +bar=${*} +foo=$* +echo foo = "$foo" +echo bar = "$bar" + +foo1=$@ +bar1=${@} + +echo foo1 = "$foo1" +echo bar1 = "$bar1" + +foo2="$*" +bar2="${*}" + +echo foo2 = "$foo2" +echo bar2 = "$bar2" + +eval foo3='$*' bar3='${*}' +echo foo3 = "$foo3" +echo bar3 = "$bar3" + +case $* in +*\:*) echo ok 1;; +*) echo bad 1;; +esac + +case $@ in +*\:*) echo bad 2;; +*) echo ok 2;; +esac + +case "$*" in +*\:*) echo ok 3;; +*) echo bad 3;; +esac + +case "$@" in +*\:*) echo bad 4;; +*) echo ok 4;; +esac + +IFS=$' \t\n' + +bar=${*} +foo=$* +echo foo = "$foo" +echo bar = "$bar" + +foo1=$@ +bar1=${@} + +echo foo1 = "$foo1" +echo bar1 = "$bar1" + +foo2="$*" +bar2="${*}" + +echo foo2 = "$foo2" +echo bar2 = "$bar2" + +eval foo3='$*' bar3='${*}' +echo foo3 = "$foo3" +echo bar3 = "$bar3" + +case $* in +*\ *) echo ok 1;; +*) echo bad 1;; +esac + +case $@ in +*\ *) echo ok 2;; +*) echo bad 2;; +esac + +case "$*" in +*\ *) echo ok 3;; +*) echo bad 3;; +esac + +case "$@" in +*\ *) echo ok 4;; +*) echo bad 4;; +esac + +# tests for special expansion of "$*" and "${array[*]}" when used with other +# expansions -- bugs through bash-2.05b +${THIS_SH} ./dollar-star1.sub + +# tests for expansion of "$@" on rhs of things like ${param:+word}. Bugs +# though bash-2.05b +${THIS_SH} ./dollar-at1.sub + +# tests for expansion of other variables in double-quoted strings containing +# $@. Bugs through bash-2.05b +${THIS_SH} ./dollar-at2.sub + +# tests for various expansions of $* in different contexts -- word split, +# no splitting, etc. when $IFS is NUL +${THIS_SH} ./dollar-star2.sub + +exit 0 diff --git a/bash-20060316/tests/dollar-at1.sub b/bash-20060316/tests/dollar-at1.sub new file mode 100644 index 000000000..6d407863f --- /dev/null +++ b/bash-20060316/tests/dollar-at1.sub @@ -0,0 +1,29 @@ +echo_argc() +{ + echo $# +} + +a() +{ + shift + echo_argc "$@" + echo_argc ${1:+"$@"} + echo_argc "${1:+$@}" + echo_argc 1 2 3 +} + +b() +{ + _IFS="$IFS" + IFS="$1" + shift + echo_argc "$@" + echo_argc ${1:+"$@"} + echo_argc "${1:+$@}" + echo_argc 1 2 3 + IFS="$_IFS" +} + +a "X" foo bar hoge + +b "X" foo bar hoge diff --git a/bash-20060316/tests/dollar-at2.sub b/bash-20060316/tests/dollar-at2.sub new file mode 100644 index 000000000..c079a2951 --- /dev/null +++ b/bash-20060316/tests/dollar-at2.sub @@ -0,0 +1,19 @@ +t1() +{ + xxx="echo $@" + + recho "$xxx ; echo $@" +} + +t2() +{ + xxx="echo $@" + + recho "${xxx} ; echo $@" +} + +t1 1 +t1 1 2 + +t2 1 +t2 1 2 diff --git a/bash-20060316/tests/dollar-star1.sub b/bash-20060316/tests/dollar-star1.sub new file mode 100644 index 000000000..63a9ef86d --- /dev/null +++ b/bash-20060316/tests/dollar-star1.sub @@ -0,0 +1,31 @@ +set -- a b c +x=(a b c); IFS='|' + +echo "${*/#/x}" +echo "${x[*]/#/x}" + +echo "$*" +echo "${x[*]}" + +echo "$@" +echo "${x[@]}" + +echo "${@/#/x}" +echo "${x[@]/#/x}" + +echo "${*:1:2}" +echo "${x[*]:1:2}" + +echo "${@:1:2}" +echo "${x[@]:1:2}" + +IFS=$' \t\n' +set -- xa xb xc +x=(xa xb xc) +IFS='|' + +echo "${*#x}" +echo "${x[*]#x}" + +echo "$*" +echo "${x[*]}" diff --git a/bash-20060316/tests/dollar-star2.sub b/bash-20060316/tests/dollar-star2.sub new file mode 100644 index 000000000..844a29728 --- /dev/null +++ b/bash-20060316/tests/dollar-star2.sub @@ -0,0 +1,26 @@ +set A B + +IFS= + +x=$* +y="$*" + +recho "$x" +recho "$y" + +IFS=$' \t\n' + +set 'A B' 'C D' + +IFS= + +x=$* +y="$*" + +recho "$x" +recho "$y" + +recho $x +recho $* +recho $y +recho "$*" diff --git a/bash-20060316/tests/dollar.right b/bash-20060316/tests/dollar.right new file mode 100644 index 000000000..ff57f1c48 --- /dev/null +++ b/bash-20060316/tests/dollar.right @@ -0,0 +1,136 @@ +argv[1] = <> +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = <3> +argv[1] = +argv[1] = +argv[1] = +argv[1] = <3> +argv[1] = +argv[1] = +argv[1] = +argv[1] = <3> +argv[1] = +argv[1] = +argv[1] = +argv[1] = <3> +argv[1] = +argv[1] = +argv[1] = +argv[1] = <3> +argv[1] = +argv[1] = +argv[1] = +argv[1] = <3> +argv[1] = +argv[1] = +argv[1] = +argv[1] = <5> +argv[1] = +argv[1] = +argv[1] = +argv[1] = <5> +argv[1] = +argv[1] = +argv[1] = +argv[1] = <1> +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[1] = <3> +argv[1] = +argv[1] = +argv[2] = +argv[3] = +argv[1] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[1] = +argv[2] = +argv[3] = +argv[1] = +argv[1] = +argv[2] = +argv[3] = +argv[1] = +argv[2] = +argv[3] = +argv[1] = +foo = 1:2:3:4:5:6:7:8:9:10 +bar = 1:2:3:4:5:6:7:8:9:10 +foo1 = 1 2 3 4 5 6 7 8 9 10 +bar1 = 1 2 3 4 5 6 7 8 9 10 +foo2 = 1:2:3:4:5:6:7:8:9:10 +bar2 = 1:2:3:4:5:6:7:8:9:10 +foo3 = 1:2:3:4:5:6:7:8:9:10 +bar3 = 1:2:3:4:5:6:7:8:9:10 +ok 1 +ok 2 +ok 3 +ok 4 +foo = 1 2 3 4 5 6 7 8 9 10 +bar = 1 2 3 4 5 6 7 8 9 10 +foo1 = 1 2 3 4 5 6 7 8 9 10 +bar1 = 1 2 3 4 5 6 7 8 9 10 +foo2 = 1 2 3 4 5 6 7 8 9 10 +bar2 = 1 2 3 4 5 6 7 8 9 10 +foo3 = 1 2 3 4 5 6 7 8 9 10 +bar3 = 1 2 3 4 5 6 7 8 9 10 +ok 1 +ok 2 +ok 3 +ok 4 +xa|xb|xc +xa|xb|xc +a|b|c +a|b|c +a b c +a b c +xa xb xc +xa xb xc +a|b +b|c +a b +b c +a|b|c +a|b|c +xa|xb|xc +xa|xb|xc +3 +3 +3 +3 +3 +3 +3 +3 +argv[1] = +argv[1] = +argv[2] = <2> +argv[1] = +argv[1] = +argv[2] = <2> +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[2] = +argv[1] = +argv[1] = diff --git a/bash-20060316/tests/dstack.right b/bash-20060316/tests/dstack.right new file mode 100644 index 000000000..73a006ceb --- /dev/null +++ b/bash-20060316/tests/dstack.right @@ -0,0 +1,55 @@ +./dstack.tests: line 6: pushd: /tmp/xxx-notthere: No such file or directory +./dstack.tests: line 9: pushd: no other directory +./dstack.tests: line 10: popd: directory stack empty +./dstack.tests: line 13: pushd: -m: invalid number +pushd: usage: pushd [dir | +N | -N] [-n] +./dstack.tests: line 14: popd: -m: invalid number +popd: usage: popd [+N | -N] [-n] +./dstack.tests: line 15: dirs: -m: invalid number +dirs: usage: dirs [-clpv] [+N] [-N] +./dstack.tests: line 16: dirs: 7: invalid option +dirs: usage: dirs [-clpv] [+N] [-N] +/ +ok +/usr / +/usr / +/usr / +/usr / +/usr / +/ +/usr / +/etc /usr / +/etc /usr / +/etc /usr / + 0 /etc + 1 /usr + 2 / +/usr /etc / +/etc /usr / +/tmp /etc /usr / +/tmp +/tmp +/usr +/usr +./dstack.tests: line 58: dirs: 9: directory stack index out of range +./dstack.tests: line 58: dirs: 9: directory stack index out of range +./dstack.tests: line 59: pushd: +9: directory stack index out of range +./dstack.tests: line 59: pushd: -9: directory stack index out of range +./dstack.tests: line 60: popd: +9: directory stack index out of range +./dstack.tests: line 60: popd: -9: directory stack index out of range +/tmp /etc / +/tmp /etc / +/tmp /etc / +/tmp /usr /etc / +/tmp +/tmp /usr /etc / +/tmp /usr /etc / +/tmp +/tmp /bin /etc / +/tmp +/tmp /bin / +/tmp +/bin / /tmp +/bin / /tmp +/bin +/bin diff --git a/bash-20060316/tests/dstack.tests b/bash-20060316/tests/dstack.tests new file mode 100644 index 000000000..6c4cef142 --- /dev/null +++ b/bash-20060316/tests/dstack.tests @@ -0,0 +1,87 @@ +export LC_ALL=C +export LANG=C + +dirs -c +# error -- nonexistant directory +pushd /tmp/xxx-notthere + +# errors -- empty stack +pushd +popd + +# errors -- bad numeric arguments -- should not cause the script to exit +pushd -m +popd -m +dirs -m +dirs 7 + +MYDIR=$PWD +unalias cd 2>/dev/null + +unalias -a + +command cd -P / +command pwd -P # better be `/' + +case "$OLDPWD" in +$MYDIR) echo ok ;; +*) echo oops -- bad \$OLDPWD ;; +esac + +pushd /usr +echo $PWD $OLDPWD +dirs +echo ${DIRSTACK[@]} + +# this should not change the directory stack at all +pushd -n +0 +dirs + +popd +pushd /usr + +pushd /etc +dirs +dirs -l +dirs -v + +# two consecutive `pushd's should swap the top two stack elements, then +# swap them back, leaving the stack intact +pushd +pushd + +pushd /tmp +echo ${DIRSTACK[0]} ; dirs +0 +echo ${DIRSTACK[2]} ; dirs +2 + +# these should be errors, but not affect the directory stack +dirs +9; dirs -9 +pushd +9 ; pushd -9 +popd +9 ; popd -9 + +popd -n +2 +dirs +echo ${DIRSTACK[@]} + +pushd -n /usr +echo $PWD +dirs +echo ${DIRSTACK[@]} + +builtin pwd + +DIRSTACK[1]=/bin +dirs + +builtin pwd +popd +2 +builtin pwd -L +pushd -1 +dirs +echo ${DIRSTACK[0]} + +dirs -c +dirs + +# this is for the benefit of pure coverage +cd $MYDIR diff --git a/bash-20060316/tests/dstack2.right b/bash-20060316/tests/dstack2.right new file mode 100644 index 000000000..d682a27f6 --- /dev/null +++ b/bash-20060316/tests/dstack2.right @@ -0,0 +1,24 @@ +expect ~1 +~1 +/usr / +/tmp /usr / +/tmp /usr / +these lines should be the same +/tmp +/tmp /tmp +these lines should be the same +/usr +/usr /usr +these lines should be the same +/ +/ / +these lines should be the same +/tmp +/tmp /tmp +these lines should be the same +/usr +/usr /usr + 1 /usr +these lines should be the same +/ +/ / diff --git a/bash-20060316/tests/dstack2.tests b/bash-20060316/tests/dstack2.tests new file mode 100644 index 000000000..d902bffb4 --- /dev/null +++ b/bash-20060316/tests/dstack2.tests @@ -0,0 +1,33 @@ +cd / + +echo expect '~1' +echo ~1 + +pushd /usr +pushd /tmp +dirs + +echo these lines should be the same +dirs +0 +echo ~0 ${DIRSTACK[0]} +echo these lines should be the same +dirs +1 +echo ~1 ${DIRSTACK[1]} +echo these lines should be the same +dirs +2 +echo ~2 ${DIRSTACK[2]} + +NDIRS=$(( ${#DIRSTACK[@]} - 1 )) + +echo these lines should be the same +dirs -2 +echo ~-2 ${DIRSTACK[NDIRS-2]} + +echo these lines should be the same +dirs -1 +echo ~-1 ${DIRSTACK[NDIRS-1]} +dirs -v -1 + +echo these lines should be the same +dirs -0 +echo ~-0 ${DIRSTACK[NDIRS]} diff --git a/bash-20060316/tests/errors.right b/bash-20060316/tests/errors.right new file mode 100644 index 000000000..ac987fbdd --- /dev/null +++ b/bash-20060316/tests/errors.right @@ -0,0 +1,100 @@ +./errors.tests: line 17: alias: -x: invalid option +alias: usage: alias [-p] [name[=value] ... ] +./errors.tests: line 18: unalias: -x: invalid option +unalias: usage: unalias [-a] name [name ...] +./errors.tests: line 19: alias: hoowah: not found +./errors.tests: line 20: unalias: hoowah: not found +./errors.tests: line 23: `1': not a valid identifier +declare -fr func +./errors.tests: line 36: func: readonly function +./errors.tests: line 39: unset: -x: invalid option +unset: usage: unset [-f] [-v] [name ...] +./errors.tests: line 42: unset: func: cannot unset: readonly function +./errors.tests: line 45: declare: func: readonly function +./errors.tests: line 49: unset: XPATH: cannot unset: readonly variable +./errors.tests: line 52: unset: `/bin/sh': not a valid identifier +./errors.tests: line 55: unset: cannot simultaneously unset a function and a variable +./errors.tests: line 58: declare: -z: invalid option +declare: usage: declare [-afFirtx] [-p] [name[=value] ...] +./errors.tests: line 60: declare: `-z': not a valid identifier +./errors.tests: line 61: declare: `/bin/sh': not a valid identifier +./errors.tests: line 65: declare: cannot use `-f' to make functions +./errors.tests: line 68: exec: -i: invalid option +exec: usage: exec [-cl] [-a name] file [redirection ...] +./errors.tests: line 72: export: XPATH: not a function +./errors.tests: line 75: break: only meaningful in a `for', `while', or `until' loop +./errors.tests: line 76: continue: only meaningful in a `for', `while', or `until' loop +./errors.tests: line 79: shift: label: numeric argument required +./errors.tests: line 84: shift: too many arguments +./errors.tests: line 90: let: expression expected +./errors.tests: line 93: local: can only be used in a function +./errors.tests: line 96: logout: not login shell: use `exit' +./errors.tests: line 99: hash: notthere: not found +./errors.tests: line 102: hash: -v: invalid option +hash: usage: hash [-lr] [-p pathname] [-dt] [name ...] +./errors.tests: line 106: hash: hashing disabled +./errors.tests: line 109: export: `AA[4]': not a valid identifier +./errors.tests: line 110: readonly: `AA[4]': not a valid identifier +./errors.tests: line 113: [-2]: bad array subscript +./errors.tests: line 117: AA: readonly variable +./errors.tests: line 121: AA: readonly variable +./errors.tests: line 129: shift: 5: shift count out of range +./errors.tests: line 130: shift: -2: shift count out of range +./errors.tests: line 133: shopt: no_such_option: invalid shell option name +./errors.tests: line 134: shopt: no_such_option: invalid shell option name +./errors.tests: line 137: umask: 09: octal number out of range +./errors.tests: line 138: umask: `:': invalid symbolic mode character +./errors.tests: line 139: umask: `:': invalid symbolic mode operator +./errors.tests: line 142: umask: -i: invalid option +umask: usage: umask [-p] [-S] [mode] +./errors.tests: line 146: umask: `u': invalid symbolic mode character +./errors.tests: line 155: VAR: readonly variable +./errors.tests: line 158: declare: VAR: readonly variable +./errors.tests: line 159: declare: VAR: readonly variable +./errors.tests: line 161: declare: unset: not found +./errors.tests: line 164: VAR: readonly variable +./errors.tests: command substitution: line 168: syntax error: unexpected end of file +./errors.tests: command substitution: line 168: syntax error near unexpected token `done' +./errors.tests: command substitution: line 168: ` for z in 1 2 3; done ' +./errors.tests: line 171: cd: HOME not set +./errors.tests: line 172: cd: /tmp/xyz.bash: No such file or directory +./errors.tests: line 174: cd: OLDPWD not set +./errors.tests: line 175: cd: /bin/sh: Not a directory +./errors.tests: line 177: cd: /tmp/cd-notthere: No such file or directory +./errors.tests: line 180: .: filename argument required +.: usage: . filename [arguments] +./errors.tests: line 181: source: filename argument required +source: usage: source filename [arguments] +./errors.tests: line 184: .: -i: invalid option +.: usage: . filename [arguments] +./errors.tests: line 187: set: -q: invalid option +set: usage: set [--abefhkmnptuvxBCHP] [-o option] [arg ...] +./errors.tests: line 190: enable: sh: not a shell builtin +./errors.tests: line 190: enable: bash: not a shell builtin +./errors.tests: line 193: shopt: cannot set and unset shell options simultaneously +./errors.tests: line 196: read: var: invalid timeout specification +./errors.tests: line 199: read: `/bin/sh': not a valid identifier +./errors.tests: line 202: VAR: readonly variable +./errors.tests: line 205: readonly: -x: invalid option +readonly: usage: readonly [-af] [name[=value] ...] or readonly -p +./errors.tests: line 208: eval: -i: invalid option +eval: usage: eval [arg ...] +./errors.tests: line 209: command: -i: invalid option +command: usage: command [-pVv] command [arg ...] +./errors.tests: line 212: /bin/sh + 0: syntax error: operand expected (error token is "/bin/sh + 0") +./errors.tests: line 213: /bin/sh + 0: syntax error: operand expected (error token is "/bin/sh + 0") +./errors.tests: line 216: trap: NOSIG: invalid signal specification +./errors.tests: line 219: trap: -s: invalid option +trap: usage: trap [-lp] [arg signal_spec ...] +./errors.tests: line 225: return: can only `return' from a function or sourced script +./errors.tests: line 229: break: 0: loop count out of range +./errors.tests: line 233: continue: 0: loop count out of range +./errors.tests: line 238: builtin: bash: not a shell builtin +./errors.tests: line 242: bg: no job control +./errors.tests: line 243: fg: no job control +./errors.tests: line 246: kill: -s: option requires an argument +./errors.tests: line 248: kill: S: invalid signal specification +./errors.tests: line 250: kill: `': not a pid or valid job spec +kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec] +./errors.tests: line 255: set: trackall: invalid option name +./errors.tests: line 262: `!!': not a valid identifier diff --git a/bash-20060316/tests/errors.tests b/bash-20060316/tests/errors.tests new file mode 100644 index 000000000..4ead467b1 --- /dev/null +++ b/bash-20060316/tests/errors.tests @@ -0,0 +1,265 @@ +# These should all be safe +LC_ALL=C +LC_CTYPE=C +LC_COLLATE=C +LC_MESSAGES=C + +# these tests should all generate errors + +# make sure we don't exit prematurely +set +e +set +o posix + +# various alias/unalias errors + +# at some point, this may mean to `export' an alias, like ksh, but +# for now it is an error +alias -x foo=barz +unalias -x fooaha +alias hoowah +unalias hoowah + +# the iteration variable must be a valid identifier +for 1 in a b c; do echo $1; done + +# try to rebind a read-only function +func() +{ + echo func +} +readonly -f func +# make sure `readonly' and `declare' play well together +declare -Fr +func() +{ + echo bar +} + +# bad option +unset -x func + +# cannot unset readonly functions or variables +unset -f func +# or make them not readonly +declare -fr func +declare -f +r func + +XPATH=$PATH +declare -r XPATH +unset -v XPATH + +# cannot unset invalid identifiers +unset /bin/sh + +# cannot unset function and variable at the same time +unset -f -v SHELL + +# bad option +declare -z +# cannot declare invalid identifiers +declare -- -z +declare /bin/sh + +# this is the syntax used to export functions in the environment, but +# it cannot be used with `declare' +declare -f func='() { echo "this is func"; }' + +# bad option to exec -- this should not exit the script +exec -i /bin/sh + +# try to export -f something that is not a function -- this should be +# an error, not create an `invisible function' +export -f XPATH + +# this depends on the setting of BREAK_COMPLAINS in config.h.in +break +continue + +# this should not exit the shell; it did in versions before 2.01 +shift label + +# other shells do not complain about the extra arguments; maybe someday +# we won't either +set -- a b c +shift $# label +# and get rid of the positional parameters +shift $# + +# let without an expression is an error, though maybe it should just return +# success +let + +# local outside a function is an error +local + +# logout of a non-login shell is an error +logout + +# try to hash a non-existant command +hash notthere + +# bad option to hash, although it may mean `verbose' at some future point +hash -v + +# turn off hashing, then try to hash something +set +o hashall +hash -p ${THIS_SH} ${THIS_SH##*/} + +# bad identifiers to declare/readonly/export +export AA[4] +readonly AA[4] + +declare -a AA +unset AA[-2] + +# try to assign to a readonly array +declare -r AA +AA=( one two three ) + +# make sure `readonly -n' doesn't turn off readonly status +readonly -n AA +AA=(one two three) + +# try to assign a readonly array with bad assignment syntax +# NOTE: this works in post-bash-2.05 (at least when I write this) +# readonly -a ZZZ=bbb + +# bad counts to `shift' +shopt -s shift_verbose +shift $(( $# + 5 )) +shift -2 + +# bad shell options +shopt -s no_such_option +shopt no_such_option + +# non-octal digits for umask and other errors +umask 09 +umask -S u=rwx:g=rwx:o=rx >/dev/null # 002 +umask -S u:rwx,g:rwx,o:rx >/dev/null # 002 + +# at some point, this may mean `invert', but for now it is an error +umask -i + +# bad assignments shouldn't change the umask +mask=$(umask) +umask g=u +mask2=$(umask) +if [ "$mask" != "$mask2" ]; then + echo "umask errors change process umask" +fi + +# assignment to a readonly variable in environment +VAR=4 +readonly VAR +VAR=7 : + +# more readonly variable tests +declare VAR=88 +declare +r VAR + +declare -p unset + +# iteration variable in a for statement being readonly +for VAR in 1 2 3 ; do echo $VAR; done + +# parser errors +: $( for z in 1 2 3; do ) +: $( for z in 1 2 3; done ) + +# various `cd' errors +( unset HOME ; cd ) +( HOME=/tmp/xyz.bash ; cd ) +# errors from cd +cd - +cd /bin/sh # error - not a directory +OLDPWD=/tmp/cd-notthere +cd - + +# various `source/.' errors +. +source + +# maybe someday this will work like in rc +. -i /dev/tty + +# make sure that this gives an error rather than setting $1 +set -q + +# enable non-builtins +enable sh bash + +# try to set and unset shell options simultaneously +shopt -s -u checkhash + +# this is an error -- bad timeout spec +read -t var < /dev/null + +# try to read into an invalid identifier +read /bin/sh < /dev/null + +# try to read into a readonly variable +read VAR < /dev/null + +# bad option to readonly/export +readonly -x foo + +# someday these may mean something, but for now they're errors +eval -i "echo $-" +command -i "echo $-" + +# this caused a core dump in bash-2.01 (fixed in bash-2.01.1) +eval echo \$[/bin/sh + 0] +eval echo '$((/bin/sh + 0))' + +# error to list trap for an unknown signal +trap -p NOSIG + +# maybe someday trap will take a -s argument like kill, but not now +trap -p -s NOSIG + +# we have a ksh-like ERR trap, post-bash-2.05 +#trap 'echo [$LINENO] -- error' ERR + +# can only return from a function or sourced script +return 2 + +# break and continue with arguments <= 0 +for z in 1 2 3; do + break 0 + echo $x +done +for z in 1 2 3; do + continue 0 + echo $x +done + +# builtin with non-builtin +builtin bash + +# maybe someday you will be able to use fg/bg when job control is not really +# active, but for now they are errors +bg +fg + +# argument required +kill -s +# bad argument +kill -S +# null argument +kill -INT '' +# argument required +kill -INT + +# bad shell option names +set -o trackall # bash is not ksh + +# this must be last! +# in posix mode, a function name must be a valid identifier +# this can't go in posix2.tests, since it causes the shell to exit +# immediately +set -o posix +function !! () { fc -s "$@" ; } +set +o posix + +echo end diff --git a/bash-20060316/tests/exec.right b/bash-20060316/tests/exec.right new file mode 100644 index 000000000..d65b89df6 --- /dev/null +++ b/bash-20060316/tests/exec.right @@ -0,0 +1,54 @@ +before exec1.sub: one two three +calling exec1.sub +aa bb cc dd ee +after exec1.sub with args: 0 + +after exec1.sub without args: 0 +./execscript: line 20: notthere: command not found +127 +/tmp/bash: notthere: No such file or directory +127 +/bin/sh: /bin/sh: cannot execute binary file +126 +./execscript: line 39: /: is a directory +126 +/: /: is a directory +126 +./execscript: line 46: .: /: is a directory +1 +127 +0 +this is bashenv +./exec3.sub: line 3: /tmp/bash-notthere: No such file or directory +./exec3.sub: line 3: exec: /tmp/bash-notthere: cannot execute: No such file or directory +126 +./execscript: line 68: notthere: No such file or directory +127 +./execscript: line 71: notthere: No such file or directory +127 +./execscript: line 74: notthere: No such file or directory +127 +this is sh +this is sh +unset +ok +5 +./exec5.sub: line 4: exec: bash-notthere: not found +127 +this is ohio-state +0 +1 +1 +0 +42 +42 +0 +1 +1 +0 +0 +1 +0 +1 +testb +after diff --git a/bash-20060316/tests/exec1.sub b/bash-20060316/tests/exec1.sub new file mode 100755 index 000000000..4a12501f7 --- /dev/null +++ b/bash-20060316/tests/exec1.sub @@ -0,0 +1 @@ +echo "$@" diff --git a/bash-20060316/tests/exec2.sub b/bash-20060316/tests/exec2.sub new file mode 100644 index 000000000..c1caaead5 --- /dev/null +++ b/bash-20060316/tests/exec2.sub @@ -0,0 +1,5 @@ +# make sure an exit command in an exit trap sets the shell's exit status +trap - 0 +trap 'exit 5' 0 + +exit 0 diff --git a/bash-20060316/tests/exec3.sub b/bash-20060316/tests/exec3.sub new file mode 100644 index 000000000..4f2f8e21a --- /dev/null +++ b/bash-20060316/tests/exec3.sub @@ -0,0 +1,6 @@ +shopt -s execfail + +exec /tmp/bash-notthere +# make sure we're still around +echo $? + diff --git a/bash-20060316/tests/exec4.sub b/bash-20060316/tests/exec4.sub new file mode 100644 index 000000000..a60d8b320 --- /dev/null +++ b/bash-20060316/tests/exec4.sub @@ -0,0 +1,8 @@ +# let's test out the noexec code +set -n + +fail +whoops +wow + +set +n diff --git a/bash-20060316/tests/exec5.sub b/bash-20060316/tests/exec5.sub new file mode 100644 index 000000000..1462f9e5d --- /dev/null +++ b/bash-20060316/tests/exec5.sub @@ -0,0 +1,9 @@ +# try exec'ing a command that cannot be found in $PATH +shopt -s execfail + +exec bash-notthere +# make sure we're still around +echo $? + +# now we need to go away, but this should echo 'this is ohio-state' +exec -a ohio-state ${THIS_SH} -c 'echo this is $0' diff --git a/bash-20060316/tests/exec6.sub b/bash-20060316/tests/exec6.sub new file mode 100644 index 000000000..50d0e7012 --- /dev/null +++ b/bash-20060316/tests/exec6.sub @@ -0,0 +1,54 @@ +# builtins with exit status inverted + +( true ) +echo $? +( ! true ) +echo $? + +( false ) +echo $? +( ! false ) +echo $? + +# inverting shouldn't affect exit +(exit 42) +echo $? + +( ! exit 42 ) +echo $? + +# commands requiring an exec with exit status inverted -- broken in bash-2.04 + +( ls > /dev/null 2>&1 ) +echo $? +( ! ls > /dev/null 2>&1 ) +echo $? + +touch /tmp/notwrite +chmod 400 /tmp/notwrite + +# make sure redirection failures in commands whose exit status is inverted +# are handled correctly + +( ls > /tmp/notwrite ) 2>/dev/null +echo $? + +( ! ls > /tmp/notwrite ) 2>/dev/null +echo $? + +# now add exit traps, true and false for commands with and without exit +# status inversion + +(trap 'false' 0 ; ! ls > /tmp/notwrite ) 2>/dev/null +echo $? + +(trap 'false' 0 ; ls > /tmp/notwrite ) 2>/dev/null +echo $? + +(trap 'true' 0 ; ! ls > /tmp/notwrite ) 2>/dev/null +echo $? + +(trap 'true' 0 ; ls > /tmp/notwrite ) 2>/dev/null +echo $? + +rm -f /tmp/notwrite diff --git a/bash-20060316/tests/exec7.sub b/bash-20060316/tests/exec7.sub new file mode 100644 index 000000000..ea2fd0668 --- /dev/null +++ b/bash-20060316/tests/exec7.sub @@ -0,0 +1,20 @@ +# make sure that bash really checks the right things when deciding what +# constitutes an executable file + +[ $UID -eq 0 ] && { echo "exec7.sub: the test suite should not be run as root" >&2 ; } + +: ${TMPDIR:=/tmp} + +cd $TMPDIR || { echo "cannot cd to $TMPDIR" >&2 ; exit 2; } + +mkdir testa testb + +echo 'echo "testa"' > testa/foo +echo 'echo "testb"' > testb/foo + +chmod 655 testa/foo +chmod 755 testb/foo + +PATH=$TMPDIR/testa:$TMPDIR/testb $THIS_SH -c foo + +rm -rf testa testb diff --git a/bash-20060316/tests/execscript b/bash-20060316/tests/execscript new file mode 100644 index 000000000..09a4ba5f5 --- /dev/null +++ b/bash-20060316/tests/execscript @@ -0,0 +1,110 @@ +export LC_ALL=C +export LANG=C + +if [ $UID -eq 0 ]; then + echo "execscript: the test suite should not be run as root" >&2 +fi + +set -- one two three +echo before exec1.sub: "$@" +echo calling exec1.sub +./exec1.sub aa bb cc dd ee +echo after exec1.sub with args: $? +./exec1.sub +echo after exec1.sub without args: $? + +# set up a fixed path so we know notthere will not be found +PATH=/usr/bin:/bin:/usr/local/bin: +export PATH + +notthere +echo $? + +# this is iffy, since the error messages may vary from system to system +# and /tmp might not exist +ln -s ${THIS_SH} /tmp/bash 2>/dev/null +if [ -f /tmp/bash ]; then + /tmp/bash notthere +else + ${THIS_SH} notthere +fi +echo $? +rm -f /tmp/bash + +# /bin/sh should be there on all systems +${THIS_SH} /bin/sh +echo $? + +# try executing a directory +/ +echo $? + +${THIS_SH} / +echo $? + +# try sourcing a directory +. / +echo $? + +# try sourcing a binary file -- post-2.04 versions don't do the binary file +# check, and will probably fail with `command not found', or status 127 +. ${THIS_SH} 2>/dev/null +echo $? + +# post-bash-2.05 versions allow sourcing non-regular files +. /dev/null +echo $? + +# kill two birds with one test -- test out the BASH_ENV code +echo echo this is bashenv > /tmp/bashenv +export BASH_ENV=/tmp/bashenv +${THIS_SH} ./exec3.sub +rm -f /tmp/bashenv +unset BASH_ENV + +# we're resetting the $PATH to empty, so this should be last +PATH= + +notthere +echo $? + +command notthere +echo $? + +command -p notthere +echo $? + +# but -p should guarantee that we find all the standard utilities, even +# with an empty or unset $PATH +command -p sh -c 'echo this is $0' +unset PATH +command -p sh -c 'echo this is $0' + +# a bug in bash before bash-2.01 caused PATH to be set to the empty string +# when command -p was run with PATH unset +echo ${PATH-unset} + +echo "echo ok" | ${THIS_SH} -t + +${THIS_SH} ./exec2.sub +echo $? + +${THIS_SH} ./exec4.sub + +# try exec'ing a command that cannot be found in $PATH +${THIS_SH} ./exec5.sub + +# this was a bug in bash versions before bash-2.04 +${THIS_SH} -c 'cat /dev/null' >&- + +# checks for proper return values in subshell commands with inverted return +# values + +${THIS_SH} ./exec6.sub + +# checks for properly deciding what constitutes an executable file +${THIS_SH} ./exec7.sub + +true | `echo true` & + +echo after diff --git a/bash-20060316/tests/exp-tests b/bash-20060316/tests/exp-tests new file mode 100644 index 000000000..884b5a699 --- /dev/null +++ b/bash-20060316/tests/exp-tests @@ -0,0 +1,380 @@ +# +# A suite of tests for bash word expansions +# +# This tests parameter and variable expansion, with an empahsis on +# proper quoting behavior. +# +# Chet Ramey + +# +# If you comment out the body of this function, you can do a diff against +# `expansion-tests.right' to see if the shell is behaving correctly +# +expect() +{ + echo expect "$@" +} + +# Test the substitution quoting characters (CTLESC and CTLNUL) in different +# combinations + +expect "<^A>" +recho `echo ''` +expect "<^A>" +recho `echo ""` +expect "<^B>" +recho `echo ''` +expect "<^B>" +recho `echo ""` +expect "<^A>" +recho `echo ` +expect "<^B>" +recho `echo ` + +# Test null strings without variable expansion +expect "" +recho abcd""efgh +expect "" +recho abcd''efgh +expect "" +recho ""abcdefgh +expect "" +recho ''abcdefgh +expect "" +recho abcd"" +expect "" +recho abcd'' + +# Test the quirky behavior of $@ in "" +expect nothing +recho "$@" +expect "< >" +recho " $@" +expect "<-->" +recho "-${@}-" + +# Test null strings with variable expansion that fails +expect '<>' +recho $xxx"" +expect '<>' +recho ""$xxx +expect '<>' +recho $xxx'' +expect '<>' +recho ''$xxx +expect '<>' +recho $xxx""$yyy +expect '<>' +recho $xxx''$yyy + +# Test null strings with variable expansion that succeeds +xxx=abc +yyy=def + +expect '' +recho $xxx"" +expect '' +recho ""$xxx +expect '' +recho $xxx'' +expect '' +recho ''$xxx +expect '' +recho $xxx""$yyy +expect '' +recho $xxx''$yyy + +unset xxx yyy + +# Test the unquoted special quoting characters +expect "<^A>" +recho  +expect "<^B>" +recho  +expect "<^A>" +recho "" +expect "<^B>" +recho "" +expect "<^A>" +recho '' +expect "<^B>" +recho '' + +# Test expansion of a variable that is unset +expect nothing +recho $xxx +expect '<>' +recho "$xxx" + +expect nothing +recho "$xxx${@}" + +# Test empty string expansion +expect '<>' +recho "" +expect '<>' +recho '' + +# Test command substitution with (disabled) history substitution +expect '' +# set +H +recho "`echo \"Hello world!\"`" + +# Test some shell special characters +expect '<`>' +recho "\`" +expect '<">' +recho "\"" +expect '<\^A>' +recho "\" + +expect '<\$>' +recho "\\$" + +expect '<\\>' +recho "\\\\" + +# This should give argv[1] = a argv[2] = b +expect ' ' +FOO=`echo 'a b' | tr ' ' '\012'` +recho $FOO + +# This should give argv[1] = ^A argv[2] = ^B +expect '<^A> <^B>' +FOO=`echo ' ' | tr ' ' '\012'` +recho $FOO + +# Test quoted and unquoted globbing characters +expect '<**>' +recho "*"* + +expect '<\.\./*/>' +recho "\.\./*/" + +# Test patterns that come up when the shell quotes funny character +# combinations +expect '<^A^B^A^B>' +recho '' +expect '<^A^A>' +recho '' +expect '<^A^B>' +recho '' +expect '<^A^A^B>' +recho '' + +# More tests of "$@" +set abc def ghi jkl +expect '< abc> ' +recho " $@ " +expect '< abc> ' +recho "${1+ $@ }" + +set abc def ghi jkl +expect '<--abc> ' +recho "--$@--" + +set "a b" cd ef gh +expect ' ' +recho ${1+"$@"} +expect ' ' +recho ${foo:-"$@"} +expect ' ' +recho "${@}" + +expect '< >' +recho " " +expect '< - >' +recho " - " + +# Test combinations of different types of quoting in a fully-quoted string +# (so the WHOLLY_QUOTED tests fail and it doesn't get set) +expect '' +recho "/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*"'$'"/\1/" + +# Test the various Posix parameter expansions + +expect '' +recho "${x:-$(echo "foo bar")}" +expect ' ' +recho ${x:-$(echo "foo bar")} + +unset X +expect '' +recho ${X:=abc} +expect '' +recho $X + +set a b c +expect '' +recho ${3:+posix} + +POSIX=/usr/posix +expect '<10>' +recho ${#POSIX} + +# remove shortest trailing match +x=file.c +expect '' +recho ${x%.c}.o + +# remove longest trailing match +x=posix/src/std +expect '' +recho ${x%%/*} + +# remove shortest leading pattern +x=$HOME/src/cmd +expect '' +recho ${x#$HOME} + +# remove longest leading pattern +x=/one/two/three +expect '' +recho ${x##*/} + +# pattern removal of patterns that don't match +z=abcdef + +expect '' +recho ${z#xyz} +expect '' +recho ${z##xyz} + +expect '' +recho ${z%xyz} +expect '' +recho ${z%%xyz} + +# Command substitution and the quirky differences between `` and $() + +expect '<\$x>' +recho '\$x' + +expect '<$x>' +recho `echo '\$x'` + +expect '<\$x>' +recho $(echo '\$x') + +# The difference between $* "$*" and "$@" + +set "abc" "def ghi" "jkl" + +expect ' ' +recho $* + +expect '' +recho "$*" + +OIFS="$IFS" +IFS=":$IFS" + +# The special behavior of "$*", using the first character of $IFS as separator +expect '' +recho "$*" + +IFS="$OIFS" + +expect ' ' +recho "$@" + +expect ' ' +recho "xx$@yy" + +expect ' ' +recho "$@$@" + +foo=abc +bar=def + +expect '' +recho "$foo""$bar" + +unset foo +set $foo bar '' xyz "$foo" abc + +expect ' <> <> ' +recho "$@" + +# More tests of quoting and deferred evaluation + +foo=10 x=foo +y='$'$x +expect '<$foo>' +recho $y +eval y='$'$x +expect '<10>' +recho $y + +# case statements + +NL=' +' +x='ab +cd' + +expect '' +case "$x" in +*$NL*) recho "newline expected" ;; +esac + +expect '' +case \? in +*"?"*) recho "got it" ;; +esac + +expect '' +case \? in +*\?*) recho "got it" ;; +esac + +set one two three four five +expect ' ' +recho $1 $3 ${5} $8 ${9} + +# length tests on positional parameters and some special parameters + +expect '<5> <5>' +recho $# ${#} +expect '<3>' +recho ${#1} +expect '<1>' +recho ${##} +expect '<1>' +recho ${#?} +expect '<5>' +recho ${#@} +expect '<5>' +recho ${#*} +expect '<5>' +recho "${#@}" +expect '<5>' +recho "${#*}" + +expect '<42>' +recho $((28 + 14)) +expect '<26>' +recho $[ 13 * 2 ] + +expect '<\>' +recho `echo \\\\` + +expect '<~>' +recho '~' + +expect nothing +recho $! +expect nothing +recho ${!} + +# test word splitting of assignment statements not preceding a command +a="a b c d e" +declare b=$a +expect ' ' +recho $b + +a="a?b?c" + +echo ${a//\\?/ } + +echo ${a//\?/ } diff --git a/bash-20060316/tests/exp.right b/bash-20060316/tests/exp.right new file mode 100644 index 000000000..fdadbd910 --- /dev/null +++ b/bash-20060316/tests/exp.right @@ -0,0 +1,147 @@ +argv[1] = <^A> +argv[1] = <^A> +argv[1] = <^B> +argv[1] = <^B> +argv[1] = <^A> +argv[1] = <^B> +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = < > +argv[1] = <--> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = <^A> +argv[1] = <^B> +argv[1] = <^A> +argv[1] = <^B> +argv[1] = <^A> +argv[1] = <^B> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = +argv[1] = <`> +argv[1] = <"> +argv[1] = <\^A> +argv[1] = <\$> +argv[1] = <\\> +argv[1] = +argv[2] = +argv[1] = <^A> +argv[2] = <^B> +argv[1] = <**> +argv[1] = <\.\./*/> +argv[1] = <^A^B^A^B> +argv[1] = <^A^A> +argv[1] = <^A^B> +argv[1] = <^A^A^B> +argv[1] = < abc> +argv[2] = +argv[3] = +argv[4] = +argv[1] = < abc> +argv[2] = +argv[3] = +argv[4] = +argv[1] = <--abc> +argv[2] = +argv[3] = +argv[4] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[1] = < > +argv[1] = < - > +argv[1] = +argv[1] = +argv[1] = +argv[2] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = <10> +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = <\$x> +argv[1] = <$x> +argv[1] = <\$x> +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[1] = +argv[1] = +argv[1] = +argv[2] = +argv[3] = +argv[1] = +argv[2] = +argv[3] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[1] = +argv[1] = +argv[2] = <> +argv[3] = +argv[4] = <> +argv[5] = +argv[1] = <$foo> +argv[1] = <10> +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[2] = +argv[3] = +argv[1] = <5> +argv[2] = <5> +argv[1] = <3> +argv[1] = <1> +argv[1] = <1> +argv[1] = <5> +argv[1] = <5> +argv[1] = <5> +argv[1] = <5> +argv[1] = <42> +argv[1] = <26> +argv[1] = <\> +argv[1] = <~> +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +a?b?c +a b c diff --git a/bash-20060316/tests/extglob.right b/bash-20060316/tests/extglob.right new file mode 100644 index 000000000..301e97b22 --- /dev/null +++ b/bash-20060316/tests/extglob.right @@ -0,0 +1,89 @@ +ok 1 +ok 2 +ok 3 +ok 4 +ok 5 +ok 6 +ok 7 +ok 8 +ok 9 +ok 10 +ok 11 +ok 12 +ok 13 +ok 14 +ok 15 +ok 16 +ok 17 +ok 18 +ok 19 +ok 20 +ok 21 +ok 22 +ok 23 +ok 24 +ok 25 +ok 26 +ok 27 +ok 28 +ok 29 +ok 30 +ok 31 +ok 32 +ok 33 +ok 34 +ok 35 +ok 36 +!([*)* ++(a|b[)* +[a*(]*)z ++()c ++()x +abc ++(*)x +abc +no-file+(a|b)stuff +no-file+(a*(c)|b)stuff +abd acd +acd +abd +no +yes +yes +1: bcdef +2: def +3: abcde +4: abc +5: ef +6: ef +7: abcdef +ab abef +abcfef abef +abcdef +ab abcdef abcfef abef +abcdef abcfef abef +ok 37 +ok 38 +ok 39 +ok 40 +ok 41 +ok 42 +a b a,b a-b a.b a:b a;b a_b +a b a,b a-b a.b a:b a;b a_b +a b a,b a-b a.b a:b a;b a_b +a b a,b a-b a.b a:b a;b a_b +a.b +a b a,b a-b a:b a;b a_b +a b a,b a-b a.b a:b a;b a_b +a b a,b a-b a.b a:b a;b a_b +a b a,b a-b a.b a:b a;b a_b +argv[1] = +a.c +a.c +a.c +a.c +a.c +a.c +ok 1 +ok 2 +ok 3 diff --git a/bash-20060316/tests/extglob.tests b/bash-20060316/tests/extglob.tests new file mode 100644 index 000000000..51e33ee73 --- /dev/null +++ b/bash-20060316/tests/extglob.tests @@ -0,0 +1,365 @@ +# test the ksh-like extended globbing features: [!@*?+](patlist) + +shopt -s extglob + +expect() +{ + echo expect "$@" +} + +case "/dev/udp/129.22.8.102/45" in +/dev/@(tcp|udp)/*/*) echo ok 1;; +*) echo bad 1;; +esac + +# valid numbers +case 12 in +0|[1-9]*([0-9])) echo ok 2;; +*) echo bad 2;; +esac + +case 12abc in +0|[1-9]*([0-9])) echo bad 3;; +*) echo ok 3;; +esac + +case 1 in +0|[1-9]*([0-9])) echo ok 4;; +*) echo bad 4;; +esac + +# octal numbers +case 07 in ++([0-7])) echo ok 5;; +*) echo bad 5;; +esac + +case 0377 in ++([0-7])) echo ok 6;; +*) echo bad 6;; +esac + +case 09 in ++([0-7])) echo bad 7;; +*) echo ok 7;; +esac + +# stuff from korn's book +case paragraph in +para@(chute|graph)) echo ok 8;; +*) echo bad 8;; +esac + +case paramour in +para@(chute|graph)) echo bad 9;; +*) echo ok 9;; +esac + +case para991 in +para?([345]|99)1) echo ok 10;; +*) echo bad 10;; +esac + +case para381 in +para?([345]|99)1) echo bad 11;; +*) echo ok 11;; +esac + +case paragraph in +para*([0-9])) echo bad 12;; +*) echo ok 12;; +esac + +case para in +para*([0-9])) echo ok 13;; +*) echo bad 13;; +esac + +case para13829383746592 in +para*([0-9])) echo ok 14;; +*) echo bad 14;; +esac + +case paragraph in +para*([0-9])) echo bad 15;; +*) echo ok 15;; +esac + +case para in +para+([0-9])) echo bad 16;; +*) echo ok 16;; +esac + +case para987346523 in +para+([0-9])) echo ok 17;; +*) echo bad 17;; +esac + +case paragraph in +para!(*.[0-9])) echo ok 18;; +*) echo bad 18;; +esac + +case para.38 in +para!(*.[0-9])) echo ok 19;; +*) echo bad 19;; +esac + +case para.graph in +para!(*.[0-9])) echo ok 20;; +*) echo bad 20;; +esac + +case para39 in +para!(*.[0-9])) echo ok 21;; +*) echo bad 21;; +esac + +# tests derived from those in rosenblatt's korn shell book + +case "" in +*(0|1|3|5|7|9)) echo ok 22;; +*) echo bad 22; +esac + +case 137577991 in +*(0|1|3|5|7|9)) echo ok 23;; +*) echo bad 23; +esac + +case 2468 in +*(0|1|3|5|7|9)) echo bad 24;; +*) echo ok 24; +esac + +case file.c in +*.c?(c)) echo ok 25;; +*) echo bad 25;; +esac + +case file.C in +*.c?(c)) echo bad 26;; +*) echo ok 26;; +esac + +case file.cc in +*.c?(c)) echo ok 27;; +*) echo bad 27;; +esac + +case file.ccc in +*.c?(c)) echo bad 28;; +*) echo ok 28;; +esac + +case parse.y in +!(*.c|*.h|Makefile.in|config*|README)) echo ok 29;; +*) echo bad 29;; +esac + +case shell.c in +!(*.c|*.h|Makefile.in|config*|README)) echo bad 30;; +*) echo ok 30;; +esac + +case Makefile in +!(*.c|*.h|Makefile.in|config*|README)) echo ok 31;; +*) echo bad 31;; +esac + +case "VMS.FILE;1" in +*\;[1-9]*([0-9])) echo ok 32;; +*) echo bad 32;; +esac + +case "VMS.FILE;0" in +*\;[1-9]*([0-9])) echo bad 33;; +*) echo ok 33;; +esac +case "VMS.FILE;" in +*\;[1-9]*([0-9])) echo bad 34;; +*) echo ok 34;; +esac +case "VMS.FILE;139" in +*\;[1-9]*([0-9])) echo ok 35;; +*) echo bad 35;; +esac +case "VMS.FILE;1N" in +*\;[1-9]*([0-9])) echo bad 36;; +*) echo ok 36;; +esac + +# tests derived from the pd-ksh test suite + +MYDIR=$PWD # save where we are + +TESTDIR=/tmp/eglob-test-$$ +mkdir $TESTDIR +builtin cd $TESTDIR || { echo $0: cannot cd to $TESTDIR >&2 ; exit 1; } +rm -rf * + +touch abcx abcz bbc +expect '!([*)*' +echo !([*)* + +expect '+(a|b[)*' +echo +(a|b[)* + +expect '[a*(]*z' +echo [a*(]*)z + +rm -f abcx abcz bbc + +touch abc + +expect '+()c' +echo +()c +expect '+()x' +echo +()x +expect abc +echo +(*)c +expect '+(*)x' +echo +(*)x + +# extended globbing should not be performed on the output of substitutions +x='@(*)' +expect '@(*)' +echo $x + +expect 'no-file+(a|b)stuff' +echo no-file+(a|b)stuff +expect 'no-file+(a*(c)|b)stuff' +echo no-file+(a*(c)|b)stuff + +touch abd acd + +expect 'abd acd' +echo a+(b|c)d + +expect 'acd' +echo a!(@(b|B))d + +expect 'abd' +echo a[b*(foo|bar)]d + +# simple kleene star tests +expect no +case foo in *(a|b[)) echo yes;; *) echo no;; esac + +expect yes +case foo in *(a|b[)|f*) echo yes;; *) echo no;; esac + +# this doesn't work right yet; it is an incorrectly formed pattern +expect yes +case '*(a|b[)' in *(a|b[)) echo yes;; *) echo no;; esac + +# check extended globbing in pattern removal -- these don't work right yet +x=abcdef + +expect '1: bcdef' +echo 1: ${x#+(a|abc)} +expect '2: def' +echo 2: ${x##+(a|abc)} +expect '3: abcde' +echo 3: ${x%+(def|f)} +expect '4: abc' +echo 4: ${x%%+(f|def)} + +# these work ok + +expect '5: ef' +echo 5: ${x#*(a|b)cd} +expect '6: ef' +echo 6: "${x#*(a|b)cd}" +expect '7: abcdef' +echo 7: ${x#"*(a|b)cd"} + +# More tests derived from a bug report concerning extended glob patterns +# following a * +builtin cd $TESTDIR || { echo $0: cannot cd to $TESTDIR >&2 ; exit 1; } +rm -rf * + +touch ab abcdef abef abcfef + +expect 'ab abef' +echo ab*(e|f) + +expect 'abcfef abef' +echo ab?*(e|f) + +expect abcdef +echo ab*d+(e|f) + +expect 'ab abcdef abcfef abef' +echo ab**(e|f) + +expect 'abcdef abcfef abef' +echo ab*+(e|f) + +case 'abcfefg' in +ab**(e|f)) echo ok 37;; +*) echo bad 37;; +esac + +case 'abcfefg' in +ab**(e|f)g) echo ok 38;; +*a) echo bad 38;; +esac + +case ab in +ab*+(e|f)) echo bad 39;; +*) echo ok 39;; +esac + +case abef in +ab***ef) echo ok 40;; +*) echo bad 40;; +esac + +case abef in +ab**) echo ok 41;; +*) echo bad 41;; +esac + +# bug in all versions up to and including bash-2.05b +case "123abc" in +*?(a)bc) echo ok 42;; +*) echo bad 42;; +esac + +# clean up and do the next one + +builtin cd / +rm -rf $TESTDIR + +mkdir $TESTDIR +builtin cd $TESTDIR + +LC_COLLATE=C # have to set this; it affects the sorting +touch a.b a,b a:b a-b a\;b a\ b a_b + +echo a[^[:alnum:]]b +echo a[-.,:\;\ _]b + +echo a@([^[:alnum:]])b +echo a@([-.,:; _])b +echo a@([.])b +echo a@([^.])b +echo a@([^x])b +echo a+([^[:alnum:]])b + +echo a@(.|[^[:alnum:]])b + +builtin cd / +rm -rf $TESTDIR + +x=abcdef +recho "${x#*(a|b)cd}" + +# this is for the benefit of pure coverage, so it writes the pcv file +# in the right place +builtin cd $MYDIR + +${THIS_SH} ./extglob1.sub + +exit 0 diff --git a/bash-20060316/tests/extglob1.sub b/bash-20060316/tests/extglob1.sub new file mode 100644 index 000000000..3beec9e86 --- /dev/null +++ b/bash-20060316/tests/extglob1.sub @@ -0,0 +1,37 @@ +MYDIR=$PWD + +: ${TMPDIR:=/tmp} +GDIR=$TMPDIR/gtest-$$ + +shopt -s extglob + +mkdir $GDIR || exit 1 +cd $GDIR || exit 1 + +touch a.c + +echo +([[:alpha:].]) +echo +([[:alpha:].])+([[:alpha:].]) +echo *([[:alpha:].]) +echo *([[:alpha:].])*([[:alpha:].]) + +echo ?([[:alpha:].])?([[:alpha:].])?([[:alpha:].]) +echo @([[:alpha:].])@([[:alpha:].])@([[:alpha:].]) + +case . in +!([[:alpha:].]) ) echo bad 1;; +*) echo ok 1;; +esac + +case . in +?([[:alpha:].]) ) echo ok 2;; +*) echo bad 2;; +esac + +case . in +@([[:alpha:].]) ) echo ok 3;; +*) echo bad 3;; +esac + +cd $MYDIR +rm -rf $GDIR diff --git a/bash-20060316/tests/extglob2.right b/bash-20060316/tests/extglob2.right new file mode 100644 index 000000000..f8a09dfb5 --- /dev/null +++ b/bash-20060316/tests/extglob2.right @@ -0,0 +1,70 @@ +0: [[ fofo = *(f*(o)) ]] +0: [[ ffo = *(f*(o)) ]] +0: [[ foooofo = *(f*(o)) ]] +0: [[ foooofof = *(f*(o)) ]] +0: [[ fooofoofofooo = *(f*(o)) ]] +1: [[ foooofof = *(f+(o)) ]] +1: [[ xfoooofof = *(f*(o)) ]] +1: [[ foooofofx = *(f*(o)) ]] +0: [[ ofxoofxo = *(*(of*(o)x)o) ]] +1: [[ ofooofoofofooo = *(f*(o)) ]] +0: [[ foooxfooxfoxfooox = *(f*(o)x) ]] +1: [[ foooxfooxofoxfooox = *(f*(o)x) ]] +0: [[ foooxfooxfxfooox = *(f*(o)x) ]] +0: [[ ofxoofxo = *(*(of*(o)x)o) ]] +0: [[ ofoooxoofxo = *(*(of*(o)x)o) ]] +0: [[ ofoooxoofxoofoooxoofxo = *(*(of*(o)x)o) ]] +0: [[ ofoooxoofxoofoooxoofxoo = *(*(of*(o)x)o) ]] +1: [[ ofoooxoofxoofoooxoofxofo = *(*(of*(o)x)o) ]] +0: [[ ofoooxoofxoofoooxoofxooofxofxo = *(*(of*(o)x)o) ]] +0: [[ aac = *(@(a))a@(c) ]] +0: [[ ac = *(@(a))a@(c) ]] +1: [[ c = *(@(a))a@(c) ]] +0: [[ aaac = *(@(a))a@(c) ]] +1: [[ baaac = *(@(a))a@(c) ]] +0: [[ abcd = ?@(a|b)*@(c)d ]] +0: [[ abcd = @(ab|a*@(b))*(c)d ]] +0: [[ acd = @(ab|a*(b))*(c)d ]] +0: [[ abbcd = @(ab|a*(b))*(c)d ]] +0: [[ effgz = @(b+(c)d|e*(f)g?|?(h)i@(j|k)) ]] +0: [[ efgz = @(b+(c)d|e*(f)g?|?(h)i@(j|k)) ]] +0: [[ egz = @(b+(c)d|e*(f)g?|?(h)i@(j|k)) ]] +0: [[ egzefffgzbcdij = *(b+(c)d|e*(f)g?|?(h)i@(j|k)) ]] +1: [[ egz = @(b+(c)d|e+(f)g?|?(h)i@(j|k)) ]] +0: [[ ofoofo = *(of+(o)) ]] +0: [[ oxfoxoxfox = *(oxf+(ox)) ]] +1: [[ oxfoxfox = *(oxf+(ox)) ]] +0: [[ ofoofo = *(of+(o)|f) ]] +0: [[ foofoofo = @(foo|f|fo)*(f|of+(o)) ]] +0: [[ oofooofo = *(of|oof+(o)) ]] +0: [[ fffooofoooooffoofffooofff = *(*(f)*(o)) ]] +0: [[ fofoofoofofoo = *(fo|foo) ]] +0: [[ foo = !(x) ]] +0: [[ foo = !(x)* ]] +1: [[ foo = !(foo) ]] +0: [[ foo = !(foo)* ]] +0: [[ foobar = !(foo) ]] +0: [[ foobar = !(foo)* ]] +0: [[ moo.cow = !(*.*).!(*.*) ]] +1: [[ mad.moo.cow = !(*.*).!(*.*) ]] +1: [[ mucca.pazza = mu!(*(c))?.pa!(*(z))? ]] +0: [[ fff = !(f) ]] +0: [[ fff = *(!(f)) ]] +0: [[ fff = +(!(f)) ]] +0: [[ ooo = !(f) ]] +0: [[ ooo = *(!(f)) ]] +0: [[ ooo = +(!(f)) ]] +0: [[ foo = !(f) ]] +0: [[ foo = *(!(f)) ]] +0: [[ foo = +(!(f)) ]] +1: [[ f = !(f) ]] +1: [[ f = *(!(f)) ]] +1: [[ f = +(!(f)) ]] +0: [[ foot = @(!(z*)|*x) ]] +1: [[ zoot = @(!(z*)|*x) ]] +0: [[ foox = @(!(z*)|*x) ]] +0: [[ zoox = @(!(z*)|*x) ]] +0: [[ foo = *(!(foo)) ]] +1: [[ foob = !(foo)b* ]] +0: [[ foobb = !(foo)b* ]] +0 tests failed. diff --git a/bash-20060316/tests/extglob2.tests b/bash-20060316/tests/extglob2.tests new file mode 100755 index 000000000..f35c3e8bb --- /dev/null +++ b/bash-20060316/tests/extglob2.tests @@ -0,0 +1,90 @@ +# +# More ksh-like extended globbing tests, cribbed from zsh-3.1.5 +# +shopt -s extglob + +failed=0 +while read res str pat; do + [[ $res = '#' ]] && continue + [[ $str = ${pat} ]] + ts=$? + [[ $1 = -q ]] || echo "$ts: [[ $str = $pat ]]" + if [[ ( $ts -gt 0 && $res = t) || ($ts -eq 0 && $res = f) ]]; then + echo "Test failed: [[ $str = $pat ]]" + (( failed += 1 )) + fi +done <&2 +subshell +f is a function +f () +{ + echo f-x; + echo f-y +} 1>&2 +f2 is a function +f2 () +{ + echo f2-a; + function f3 () + { + echo f3-a; + echo f3-b + } 1>&2; + f3 +} +subshell +f2 is a function +f2 () +{ + echo f2-a; + function f3 () + { + echo f3-a; + echo f3-b + } 1>&2; + f3 +} +f4 is a function +f4 () +{ + echo f4-a; + function f5 () + { + echo f5-a; + echo f5-b + } 1>&2; + f5 +} 2>&1 +subshell +f4 is a function +f4 () +{ + echo f4-a; + function f5 () + { + echo f5-a; + echo f5-b + } 1>&2; + f5 +} 2>&1 +testgrp is a function +testgrp () +{ + echo testgrp-a; + { + echo tg-x; + echo tg-y + } 1>&2; + echo testgrp-b +} +subshell +testgrp is a function +testgrp () +{ + echo testgrp-a; + { + echo tg-x; + echo tg-y + } 1>&2; + echo testgrp-b +} +funca is a function +funca () +{ + ( echo func-a ) +} +funcb is a function +funcb () +{ + ( echo func-b ) +} +funcc is a function +funcc () +{ + ( echo func-c ) 2>&1 +} +func-a +func-b +func-c +expect 5 10 +5 10 +expect 20 +20 +expect 5 20 +5 20 +expect 5 30 +5 30 +expect 2 40 +2 40 +expect 5 20 +5 20 diff --git a/bash-20060316/tests/func.tests b/bash-20060316/tests/func.tests new file mode 100644 index 000000000..063f4e0b8 --- /dev/null +++ b/bash-20060316/tests/func.tests @@ -0,0 +1,168 @@ +a() +{ + x=$((x - 1)) + return 5 +} + +b() +{ + x=$((x - 1)) + a + echo a returns $? + return 4 +} + +c() +{ + x=$((x - 1)) + b + echo b returns $? + return 3 +} + +d() +{ + x=$((x - 1)) + c + echo c returns $? + return 2 +} + +e() +{ + d + echo d returns $? + echo in e + x=$((x - 1)) + return $x +} + +f() +{ + e + echo e returned $? + echo x is $x + return 0 +} + +x=30 +f + +# make sure unsetting a local variable preserves the `local' attribute +f1() +{ + local zz + zz=abcde + echo $zz + unset zz + zz=defghi + echo $zz +} + +zz=ZZ +echo $zz +f1 +echo $zz + +unset -f f1 +f1() +{ + return 5 +} + +( f1 ) +echo $? + +unset -f f1 +f1() +{ + sleep 5 + return 5 +} + +f1 & +wait +echo $? + +unset -f f1 + +f1() +{ + echo $AVAR + printenv AVAR +} + +AVAR=AVAR +echo $AVAR +f1 +AVAR=foo f1 +echo $AVAR + +unset -f f1 +# make sure subshells can do a `return' if we're executing in a function +f1() +{ + ( return 5 ) + status=$? + echo $status + return $status +} + +f1 +echo $? + +declare -F f1 # should print just the name +declare -f f1 # should print the definition, too + +# no functions should be exported, right? +declare -xF +declare -xf + +# FUNCNAME tests +func2() +{ + echo FUNCNAME = $FUNCNAME +} + +func() +{ + echo before: FUNCNAME = $FUNCNAME + func2 + echo after: FUNCNAME = $FUNCNAME +} + +echo before: try to assign to FUNCNAME +FUCNAME=7 + +echo outside: FUNCNAME = $FUNCNAME +func +echo outside2: FUNCNAME = $FUNCNAME + +# test exported functions (and cached exportstr) +zf() +{ + echo this is zf +} +export -f zf + +${THIS_SH} -c 'type -t zf' +${THIS_SH} -c 'type zf' + +${THIS_SH} ./func1.sub + +# tests for functions whose bodies are not group commands, with and without +# attached redirections +${THIS_SH} ./func2.sub + +# test for some posix-specific function behavior +${THIS_SH} ./func3.sub + +unset -f myfunction +myfunction() { + echo "bad shell function redirection" +} >> /dev/null + +myfunction +myfunction | cat + +exit 0 diff --git a/bash-20060316/tests/func1.sub b/bash-20060316/tests/func1.sub new file mode 100644 index 000000000..345645fd0 --- /dev/null +++ b/bash-20060316/tests/func1.sub @@ -0,0 +1,55 @@ +# +# Test that redirections attached to shell functions are printed correctly. +# This was a bug in all bash versions before bash-2.04. +# +f() +{ + echo f-x + echo f-y +} >&2 + +type f +export -f f +${THIS_SH} -c 'echo subshell; type f' + +f2() +{ + echo f2-a + f3() + { + echo f3-a + echo f3-b + } >&2 + f3 +} + +type f2 + +export -f f2 +${THIS_SH} -c 'echo subshell; type f2' + +f4() +{ + echo f4-a + f5() + { + echo f5-a + echo f5-b + } >&2 + f5 +} 2>&1 + +type f4 +export -f f4 +${THIS_SH} -c 'echo subshell; type f4' + +testgrp() +{ + echo testgrp-a + { echo tg-x; echo tg-y; } >&2 + echo testgrp-b +} +type testgrp + +export -f testgrp +${THIS_SH} -c 'echo subshell; type testgrp' diff --git a/bash-20060316/tests/func2.sub b/bash-20060316/tests/func2.sub new file mode 100644 index 000000000..2f9d5ceea --- /dev/null +++ b/bash-20060316/tests/func2.sub @@ -0,0 +1,17 @@ +funca() ( + echo func-a +) + +funcb() ( echo func-b ) + +funcc() ( + echo func-c +) 2>&1 + +type funca +type funcb +type funcc + +funca +funcb +funcc diff --git a/bash-20060316/tests/func3.sub b/bash-20060316/tests/func3.sub new file mode 100644 index 000000000..9d3d06943 --- /dev/null +++ b/bash-20060316/tests/func3.sub @@ -0,0 +1,54 @@ +# +# test some posix-mode-specific function behavior +# +set -o posix +func() +{ + return 5 +} + +myfunction () { + var=20 return +} +var=10 +echo expect 5 10 +func +echo $? $var + +myfunction +echo expect 20 +echo $var + +echo expect 5 20 +func +echo $? $var + +echo expect 5 30 +var=30 func +echo $? $var + +: ${TMPDIR:=/tmp} +TMPFILE=$TMPDIR/func3.sub.$$ + +rm -f $TMPFILE +echo 'var=40 return 2' > $TMPFILE + +# test the behavior of `return' and preceding variable assignments here +# because it's convenient +var=10 +echo expect 2 40 +. $TMPFILE +echo $? $var + +rm -f $TMPFILE + +#set -o posix +var=0 +func() +{ + var=20 return 5 +} + +echo expect 5 20 +var=30 func +echo $? $var diff --git a/bash-20060316/tests/getopts.right b/bash-20060316/tests/getopts.right new file mode 100644 index 000000000..92261038a --- /dev/null +++ b/bash-20060316/tests/getopts.right @@ -0,0 +1,56 @@ +getopts: usage: getopts optstring name [arg] +2 +getopts: usage: getopts optstring name [arg] +2 +./getopts.tests: line 10: getopts: -a: invalid option +getopts: usage: getopts optstring name [arg] +-a specified +-b bval specified +remaining args: one two three +-a specified +-b bval specified +remaining args: one two three four five six seven eight nine ten eleven twelve +./getopts1.sub: option requires an argument -- b +Usage: ./getopts1.sub [-a] [-b value] args +-a specified +-c cval specified +-d specified +-a specified +-b 3 specified +remaining args: one two three four five +-a specified +-b bval specified +remaining args: one two three +-a specified +-b bval specified +remaining args: one two three +./getopts4.sub: error: option `b' requires an argument +Usage: ./getopts4.sub [-a] [-b value] args +./getopts4.sub: error: illegal option character `c' +Usage: ./getopts4.sub [-a] [-b value] args +-a specified +remaining args: -b bval one two three +OPTERR=0 +a here +something else here +OPTIND=3 +getop: OPTERR=1 +a here +./getopts5.sub: illegal option -- c +something else here +./getopts5.sub: illegal option -- d +something else here +./getopts5.sub: illegal option -- e +something else here +getop: OPTIND=5 +OPTIND=3 +OPTERR=0 +-a specified +remaining args: +-a specified +remaining args: +-a specified +remaining args: +0 +./getopts7.sub: line 4: getopts: `opt-var': not a valid identifier +remaining args: diff --git a/bash-20060316/tests/getopts.tests b/bash-20060316/tests/getopts.tests new file mode 100644 index 000000000..1814d7864 --- /dev/null +++ b/bash-20060316/tests/getopts.tests @@ -0,0 +1,38 @@ +# getopts tests +# this should fail +getopts +echo $? +getopts opts +echo $? + +# maybe someday we will have a ksh93-like -a argument to set the name +# used in error messages, but not yet +getopts -a opts name + +${THIS_SH} ./getopts1.sub -a -b bval one two three +# make sure getopts works when there are more than 9 positional parameters +${THIS_SH} ./getopts1.sub -a -b bval one two three four five six seven eight nine ten eleven twelve +${THIS_SH} ./getopts1.sub -a -b + +${THIS_SH} ./getopts2.sub -ad -c cval three four five + +${THIS_SH} ./getopts3.sub + +# make sure that `-b bval' and `-bbval' are equivalent +${THIS_SH} ./getopts4.sub -a -b bval one two three +${THIS_SH} ./getopts4.sub -a -bbval one two three +# this tests `silent' error reporting +${THIS_SH} ./getopts4.sub -a -b +${THIS_SH} ./getopts4.sub -a -c + +# make sure that `--' can be used to end the list of options +${THIS_SH} ./getopts4.sub -a -- -b bval one two three + +${THIS_SH} ./getopts5.sub -a -c + +${THIS_SH} ./getopts6.sub -a +${THIS_SH} ./getopts6.sub -a -c +${THIS_SH} ./getopts6.sub -ac +echo $? # this should be 2 + +${THIS_SH} ./getopts7.sub -a diff --git a/bash-20060316/tests/getopts1.sub b/bash-20060316/tests/getopts1.sub new file mode 100644 index 000000000..df0a342ea --- /dev/null +++ b/bash-20060316/tests/getopts1.sub @@ -0,0 +1,26 @@ +aflag= +bflag= + +while getopts ab: name +do + case $name in + a) aflag=1 ;; + b) bflag=1 + bval=$OPTARG;; + ?) echo Usage: $0 [-a] [-b value] args + exit 2;; + esac + +done + +if [ ! -z "$aflag" ] ; then echo -a specified ; fi +if [ ! -z "$bflag" ] ; then echo -b $bval specified ; fi + +if [ "$OPTIND" -gt 1 ] +then + shift $(( $OPTIND - 1 )) +fi + +echo remaining args: "$*" + +exit 0 diff --git a/bash-20060316/tests/getopts2.sub b/bash-20060316/tests/getopts2.sub new file mode 100644 index 000000000..d91fd26a5 --- /dev/null +++ b/bash-20060316/tests/getopts2.sub @@ -0,0 +1,26 @@ +aflag= +bflag= + +while getopts ab:c:de name "$@" +do + case $name in + a) aflag=1 ;; + b) bflag=1 + bval=$OPTARG;; + c) cflag=1 + cval=$OPTARG ;; + d) dflag=1 ;; + e) eflag=1;; + ?) echo Usage: $0 [-a] [-b value] [-c value] -[de] args + exit 2;; + esac + +done + +[ ! -z "$aflag" ] && echo -a specified +[ ! -z "$bflag" ] && echo -b $bval specified +[ ! -z "$cflag" ] && echo -c $cval specified +[ ! -z "$dflag" ] && echo -d specified +[ ! -z "$eflag" ] && { echo -n - ; echo e specified; } + +exit 0 diff --git a/bash-20060316/tests/getopts3.sub b/bash-20060316/tests/getopts3.sub new file mode 100644 index 000000000..2d8b3162c --- /dev/null +++ b/bash-20060316/tests/getopts3.sub @@ -0,0 +1,27 @@ +aflag= +bflag= + +while getopts ab: name -a -b 1 -a -a -a -b 5 -b 3 -a one two three four five +do + case $name in + a) aflag=1 ;; + b) bflag=1 + bval=$OPTARG;; + ?) echo Usage: $0 [-a] [-b value] args + exit 2;; + esac + +done + +if [ ! -z "$aflag" ] ; then echo -a specified ; fi +if [ ! -z "$bflag" ] ; then echo -b $bval specified ; fi + +set -- -a -b 1 -a -a -a -b 5 -b 3 -a one two three four five +if [ "$OPTIND" -gt 1 ] +then + shift $(( $OPTIND - 1 )) +fi + +echo remaining args: "$*" + +exit 0 diff --git a/bash-20060316/tests/getopts4.sub b/bash-20060316/tests/getopts4.sub new file mode 100644 index 000000000..9cd5aef4c --- /dev/null +++ b/bash-20060316/tests/getopts4.sub @@ -0,0 +1,30 @@ +aflag= +bflag= + +while getopts :ab: name "$@" +do + case $name in + a) aflag=1 ;; + b) bflag=1 + bval=$OPTARG;; + :) echo $0: error: option \`$OPTARG\' requires an argument + echo Usage: $0 [-a] [-b value] args + exit 2;; + ?) echo $0: error: illegal option character \`$OPTARG\' + echo Usage: $0 [-a] [-b value] args + exit 2;; + esac + +done + +if [ ! -z "$aflag" ] ; then echo -a specified ; fi +if [ ! -z "$bflag" ] ; then echo -b $bval specified ; fi + +if [ "$OPTIND" -gt 1 ] +then + shift $(( $OPTIND - 1 )) +fi + +echo remaining args: "$*" + +exit 0 diff --git a/bash-20060316/tests/getopts5.sub b/bash-20060316/tests/getopts5.sub new file mode 100644 index 000000000..c6e388816 --- /dev/null +++ b/bash-20060316/tests/getopts5.sub @@ -0,0 +1,50 @@ +#!/local/bin/bash +#Time-stamp: <95/06/07 07:40:40 hrue@imf.unit.no> + +getop () { + + local OPTIND + local OPTERR=1 + + echo getop: OPTERR=$OPTERR + while getopts ab arg "$@"; do + case $arg in + a) + echo a here + ;; + b) + echo b here + ;; + :|?|*) + echo something else here + ;; + esac + done + echo getop: OPTIND=$OPTIND +} + +OPTIND= +OPTERR=0 + +echo OPTERR=$OPTERR +while getopts ab arg; do + case $arg in + a) + echo a here + ;; + b) + echo b here + ;; + :|?|*) + + echo something else here + ;; + esac +done + +echo OPTIND=$OPTIND + +getop "$@" -d -e + +echo OPTIND=$OPTIND +echo OPTERR=$OPTERR diff --git a/bash-20060316/tests/getopts6.sub b/bash-20060316/tests/getopts6.sub new file mode 100644 index 000000000..75d768c69 --- /dev/null +++ b/bash-20060316/tests/getopts6.sub @@ -0,0 +1,27 @@ +aflag= +bflag= + +while getopts :ac name "$@" +do + case $name in + a) aflag=1 ;; + c) cflag=1 ;; + ?) exit 2;; + esac + + # this came in in a bug report -- it's really a usage error + # but it shouldn't cause the shell to crash + shift +done + +if [ ! -z "$aflag" ] ; then echo -a specified ; fi +if [ ! -z "$cflag" ] ; then echo -c specified ; fi + +if [ "$OPTIND" -gt 1 ] +then + shift $(( $OPTIND - 1 )) +fi + +echo remaining args: "$*" + +exit 0 diff --git a/bash-20060316/tests/getopts7.sub b/bash-20060316/tests/getopts7.sub new file mode 100644 index 000000000..a20a6df1e --- /dev/null +++ b/bash-20060316/tests/getopts7.sub @@ -0,0 +1,30 @@ +aflag= +bflag= + +while getopts :ab: opt-var "$@" +do + case $name in + a) aflag=1 ;; + b) bflag=1 + bval=$OPTARG;; + :) echo $0: error: option \`$OPTARG\' requires an argument + echo Usage: $0 [-a] [-b value] args + exit 2;; + ?) echo $0: error: illegal option character \`$OPTARG\' + echo Usage: $0 [-a] [-b value] args + exit 2;; + esac + +done + +if [ ! -z "$aflag" ] ; then echo -a specified ; fi +if [ ! -z "$bflag" ] ; then echo -b $bval specified ; fi + +if [ "$OPTIND" -gt 1 ] +then + shift $(( $OPTIND - 1 )) +fi + +echo remaining args: "$*" + +exit 0 diff --git a/bash-20060316/tests/glob-test b/bash-20060316/tests/glob-test new file mode 100644 index 000000000..d43570832 --- /dev/null +++ b/bash-20060316/tests/glob-test @@ -0,0 +1,388 @@ +LC_COLLATE=C +# +# test the shell globbing +# +expect() +{ + echo expect "$@" +} + +# First, a test that bash-2.01.1 fails +${THIS_SH} ./glob1.sub + +MYDIR=$PWD # save where we are + +TESTDIR=/tmp/glob-test +mkdir $TESTDIR +builtin cd $TESTDIR || { echo $0: cannot cd to $TESTDIR >&2 ; exit 1; } +rm -rf * + +touch a b c d abc abd abe bb bcd ca cb dd de Beware +mkdir bdir + +# see if `regular' globbing works right +expect ' ' +recho a* X* + +expect ' ' +recho \a* + +# see if null glob expansion works +shopt -s nullglob + +expect ' ' +recho a* X* + +shopt -u nullglob + +# see if the failglob option works + +mkdir tmp +touch tmp/l1 tmp/l2 tmp/l3 +builtin echo tmp/l[12] tmp/*4 tmp/*3 +shopt -s failglob +builtin echo tmp/l[12] tmp/*4 tmp/*3 +rm -r tmp +shopt -u failglob + +# see if the code that expands directories only works +expect '' +recho b*/ + +# Test quoted and unquoted globbing characters +expect '<*>' +recho \* + +expect '' +recho 'a*' + +expect '' +recho a\* + +expect ' <*q*>' +recho c* a\* *q* + +expect '<**>' +recho "*"* + +expect '<**>' +recho \** + +expect '<\.\./*/>' +recho "\.\./*/" + +expect '' +recho 's/\..*//' + +# Pattern from Larry Wall's Configure that caused bash to blow up +expect '' +recho "/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*"'$'"/\1/" + +# Make sure character classes work properly + +expect ' ' +recho [a-c]b* + +expect '
' +recho [a-y]*[^c] + +expect ' ' +recho a*[^c] + +touch a-b aXb +expect ' ' +recho a[X-]b + +touch .x .y +expect '
+argv[9] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[3] =
+argv[4] = +argv[1] = +argv[1] = +no match +not there +argv[1] = +argv[1] = +argv[1] = +argv[1] = +match 1 +match 2 +ok 1 +ok 2 +ok 3 +ok 4 +ok 5 +argv[1] = +argv[1] = +argv[1] = +ok 1 +ok 2 +ok 3 +ok 4 +ok 5 +ok 6 +ok 7 +ok 8 +ok 9 +ok 10 +ok 11 +ok 20 +ok 21 +ok 22 +ok 23 +ok 24 +ok 25 +ok 26 +ok 27 +ok 28 +ok 29 +ok 30 +ok 31 +ok 32 +ok 33 +ok 34 +ok 35 +ok 36 +ok 37 +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[1] = <*> +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[7] = +argv[8] = +argv[9] = +argv[10] =
+argv[11] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[7] = +argv[1] = <*> +argv[1] = +argv[1] = diff --git a/bash-20060316/tests/glob1.sub b/bash-20060316/tests/glob1.sub new file mode 100644 index 000000000..8745cd99a --- /dev/null +++ b/bash-20060316/tests/glob1.sub @@ -0,0 +1,14 @@ +# bash-2.01.1 failed this test +FN=/tmp/bash-glob.$$ +mkdir $FN +cd $FN +mkdir foo +mkdir foobar +touch foo/bar +touch foobar/bar +chmod 311 foo foobar +echo f*/bar + +chmod 777 foo foobar +cd / +rm -rf $FN diff --git a/bash-20060316/tests/heredoc.right b/bash-20060316/tests/heredoc.right new file mode 100644 index 000000000..d71781e89 --- /dev/null +++ b/bash-20060316/tests/heredoc.right @@ -0,0 +1,43 @@ +there +one - alpha +two - beta +three - gamma +hi\ +there$a +stuff +hi\ +there +EO\ +F +hi +hi +tab 1 +tab 2 +tab 3 +abc +def ghi +jkl mno +fff is a function +fff () +{ + ed /tmp/foo >/dev/null </dev/null < /tmp/bash-zzz << EOF +abc +EOF +cat >> /tmp/bash-zzz << EOF +def ghi +jkl mno +EOF +cat /tmp/bash-zzz +rm -f /tmp/bash-zzz + +# make sure command printing puts the here-document as the last redirection +# on the line, and the function export code preserves syntactic correctness +fff() +{ + ed /tmp/foo </dev/null +/^name/d +w +q +ENDOFINPUT +aa=1 +} + +type fff +export -f fff +${THIS_SH} -c 'type fff' + +# check that end of file delimits a here-document +# THIS MUST BE LAST! + +cat << EOF +hi +there diff --git a/bash-20060316/tests/herestr.right b/bash-20060316/tests/herestr.right new file mode 100644 index 000000000..80b01cf7e --- /dev/null +++ b/bash-20060316/tests/herestr.right @@ -0,0 +1,28 @@ +abcde +yo +hot damn +what a fabulous window treatment +double"quote +onetwothree +first second third +f1 () +{ + cat <<< "abcde"; + cat <<< "yo"; + cat <<< "$a $b"; + cat <<< 'what a fabulous window treatment'; + cat <<< 'double"quote' +} +f2 () +{ + cat <<< onetwothree +} +f3 () +{ + cat <<< "$@" +} +echo $(echo hi) +echo ho +echo off to work we go +declare -a uu='([0]="" [1]="kghfjk" [2]="jkfzuk" [3]="i +")' diff --git a/bash-20060316/tests/herestr.tests b/bash-20060316/tests/herestr.tests new file mode 100644 index 000000000..f77b229f5 --- /dev/null +++ b/bash-20060316/tests/herestr.tests @@ -0,0 +1,39 @@ +a=hot +b=damn +f1() +{ +cat <<< "abcde" + +cat <<< "yo" + +cat <<< "$a $b" + +cat <<< 'what a fabulous window treatment' + +cat <<< 'double"quote' +} + +f2() +{ +cat <<< onetwothree +} + +f3() +{ +cat <<< "$@" +} + +f1 +f2 +f3 first second third + +typeset -f + +cat <<< 'echo $(echo hi)' + +cat <<< "echo ho" + +cat <<< "echo $(echo off to work we go)" + +IFS="/" read -r -d $'\000' -a uu <<< /kghfjk/jkfzuk/i +declare -p uu diff --git a/bash-20060316/tests/histexp.right b/bash-20060316/tests/histexp.right new file mode 100644 index 000000000..f1c9e9d9a --- /dev/null +++ b/bash-20060316/tests/histexp.right @@ -0,0 +1,129 @@ +echo $BASH_VERSION +./histexp.tests: line 24: history: !!:z: history expansion failed + 1 for i in one two three; do echo $i; done + 2 /bin/sh -c 'echo this is $0' + 3 ls + 4 echo $BASH_VERSION + 1 for i in one two three; do echo $i; done + 2 /bin/sh -c 'echo this is $0' + 3 ls + 4 echo $BASH_VERSION + 5 HISTFILE=/tmp/newhistory + 6 echo line 2 for history +echo line 2 for history +echo line 2 for history +set -H +echo line 2 for history +line 2 for history + 1 for i in one two three; do echo $i; done + 2 /bin/sh -c 'echo this is $0' + 3 ls + 4 echo $BASH_VERSION + 5 HISTFILE=/tmp/newhistory + 6 echo line 2 for history + 7 set -H + 8 echo line 2 for history +a b c d e +echo a b c d e +a b c d e +echo line 2 for history +line 2 for history +echo line 8 for history +line 8 for history +/bin/sh -c 'echo this is $0' +this is /bin/sh +echo sh +sh +echo /bin +/bin +echo e +e +a b c d e +echo b c d e +b c d e +echo b c d +b c d +echo d e +d e +echo d e +d e +echo b c d +b c d +file.c +echo file +file +echo .c +.c +echo 'file' +file +bax.c +echo $file +bax +echo .c +.c +echo '$file' +$file +a b c d e +echo 'a' 'b' 'c' 'd' 'e' +a b c d e +echo 'a b c d e' +a b c d e +foo.c foo.o foo.html foo.h +echo bar.c foo.o foo.html foo.h +bar.c foo.o foo.html foo.h +echo bar.c bar.o bar.html bar.h +bar.c bar.o bar.html bar.h +echo xbar.c xbar.o xbar.html xbar.h +xbar.c xbar.o xbar.html xbar.h +echo xbar.c xbar.o xbar.html xbar.h +xbar.c xbar.o xbar.html xbar.h +echo xwhix.c xwhix.o xwhix.html xwhix.h +xwhix.c xwhix.o xwhix.html xwhix.h +echo xwhix.c xwhix.o xwhix.html xwhix.h +echo 'xwhix' +xwhix +echo 'xwhix.h' +xwhix.h +echo 'xwhix.h' +xwhix.h +echo 'xwhix.h' +xwhix.h + 7 set -H + 8 echo line 2 for history + 9 echo a b c d e + 10 echo line 2 for history + 11 echo line 8 for history + 12 /bin/sh -c 'echo this is $0' + 13 echo sh + 14 echo /bin + 15 echo e + 16 echo a b c d e + 17 echo b c d e + 18 echo b c d + 19 echo d e + 20 echo b c d + 21 echo file.c + 22 echo file + 23 echo .c + 24 echo 'file' + 25 echo $file.c + 26 echo $file + 27 echo .c + 28 echo '$file' + 29 echo a b c d e + 30 echo 'a' 'b' 'c' 'd' 'e' + 31 echo 'a b c d e' + 32 echo foo.c foo.o foo.html foo.h + 33 echo bar.c foo.o foo.html foo.h + 34 echo bar.c bar.o bar.html bar.h + 35 echo xbar.c xbar.o xbar.html xbar.h + 36 echo xwhix.c xwhix.o xwhix.html xwhix.h + 37 echo 'xwhix' + 38 echo 'xwhix.h' +!! +!! +echo '!!' \!\! +!! !! +ok 1 +ok 2 +ok 3 diff --git a/bash-20060316/tests/histexp.tests b/bash-20060316/tests/histexp.tests new file mode 100644 index 000000000..721208cb2 --- /dev/null +++ b/bash-20060316/tests/histexp.tests @@ -0,0 +1,124 @@ +LC_ALL=C +LANG=C +trap 'rm /tmp/newhistory' 0 + +file=bax +histchars='!^#' # make sure history comment char is set correctly + +unset HISTFILESIZE + +history -c + +HISTFILE=history.list +HISTCONTROL=ignoreboth +HISTIGNORE='&:#*:history*:fc*' +# we will end up exercising the history stifling code as a result +HISTSIZE=32 + +shopt -s cmdhist +set -o history + +history -p '!!' + +# this should result in a failed history expansion error +history -p '!!:z' + +history + +HISTFILE=/tmp/newhistory +history -a + +history -w + +history -s "echo line 2 for history" +history +history -p '!e' +history -p '!!' + +set -H +!! +!e + +history + +echo a b c d e +!?ch? +!-2 +^2^8 + +!2 + +# we're selecting /bin/sh -c ...; we want `sh' +echo !-1:0:t +# we're selecting /bin/sh -c ...; we want `/bin' +echo !-2:0:h +# we're selecting `echo a b c d e'; we want `e' +echo !?d?:5 + +echo a b c d e +echo !-1:2-$ +echo !-2:2-4 +echo !-2:3* +echo !!:* + +echo !?a?:2- + +echo file.c +echo !!:$:r +echo !-2:$:e +echo !-3:$:r:q + +echo $file.c +echo !!:$:r +echo !-2:^:e +echo !-3:$:r:q + +echo a b c d e +echo !!:1-$:x +echo !-2:1-$:q + +echo foo.c foo.o foo.html foo.h +!!:s/foo/bar/ +!-2:gs/foo/bar/ +!!:gs/bar/x&/ +!-2:g& + +# make sure we can use any delimiter in the substitution, not just `/' +!!:gs+bar+whix+ + +!!:p + +# wow +echo !?.o?:%:r:q + +!!:0 !?.h?:%:q +!!:-$ +!:-$ + +history + +# make sure single quotes inhibit history expansion +echo '!!' + +# make sure backslashes can quote the history expansion character +echo \!\! + +# but other expansions on the line should still be processed + +echo '!!' !!:* +history -c +unset HISTFILE + +# make sure that the special bash cases are not history expanded +case p in +[!A-Z]) echo ok 1;; +esac + +var1='ok 2' +var2=var1 + +echo ${!var2} + +# Bash-2.01[.1] fails this test -- it attempts history expansion after the +# history_expansion_char +echo ok 3 # !1200 diff --git a/bash-20060316/tests/history.list b/bash-20060316/tests/history.list new file mode 100644 index 000000000..2a4c22292 --- /dev/null +++ b/bash-20060316/tests/history.list @@ -0,0 +1,4 @@ +for i in one two three; do echo $i; done +/bin/sh -c 'echo this is $0' +ls +echo $BASH_VERSION diff --git a/bash-20060316/tests/history.right b/bash-20060316/tests/history.right new file mode 100644 index 000000000..556a3129b --- /dev/null +++ b/bash-20060316/tests/history.right @@ -0,0 +1,111 @@ +./history.tests: line 4: history: -x: invalid option +history: usage: history [-c] [-d offset] [n] or history -awrn [filename] or history -ps arg [arg...] +./history.tests: line 6: history: cannot use more than one of -anrw +./history.tests: line 9: fc: -v: invalid option +fc: usage: fc [-e ename] [-nlr] [first] [last] or fc -s [pat=rep] [cmd] + 1 for i in one two three; do echo $i; done + 2 /bin/sh -c 'echo this is $0' + 3 ls + 4 echo $BASH_VERSION +1 for i in one two three; do echo $i; done +2 /bin/sh -c 'echo this is $0' +3 ls +4 echo $BASH_VERSION + for i in one two three; do echo $i; done + /bin/sh -c 'echo this is $0' + ls + echo $BASH_VERSION +4 echo $BASH_VERSION +3 ls +2 /bin/sh -c 'echo this is $0' +1 for i in one two three; do echo $i; done + echo $BASH_VERSION + ls + /bin/sh -c 'echo this is $0' + for i in one two three; do echo $i; done + 1 for i in one two three; do echo $i; done + 2 /bin/sh -c 'echo this is $0' + 3 ls + 4 echo $BASH_VERSION + 5 echo line for history +echo line for history + for i in one two three; do echo $i; done + /bin/sh -c 'echo this is $0' + ls + echo $BASH_VERSION + echo line for history +displaying $HISTFILE after history -a +echo line for history +HISTFILE=/tmp/newhistory + 1 for i in one two three; do echo $i; done + 2 /bin/sh -c 'echo this is $0' + 3 ls + 4 echo $BASH_VERSION + 5 echo line for history + 6 HISTFILE=/tmp/newhistory + 7 echo displaying \$HISTFILE after history -a + 8 cat $HISTFILE +for i in one two three; do echo $i; done +/bin/sh -c 'echo this is $0' +ls +echo $BASH_VERSION +echo line for history +HISTFILE=/tmp/newhistory +echo displaying \$HISTFILE after history -a +cat $HISTFILE + 1 for i in one two three; do echo $i; done + 2 /bin/sh -c 'echo this is $0' + 3 ls + 4 echo $BASH_VERSION + 5 echo line for history + 6 HISTFILE=/tmp/newhistory + 7 echo displaying \$HISTFILE after history -a + 8 cat $HISTFILE + 9 echo line 2 for history +echo line 2 for history +echo line 2 for history + 1 for i in one two three; do echo $i; done + 2 /bin/sh -c 'echo this is $0' + 3 ls + 4 echo $BASH_VERSION + 5 echo line for history + 6 HISTFILE=/tmp/newhistory + 7 echo displaying \$HISTFILE after history -a + 8 cat $HISTFILE + 9 echo line 2 for history + 10 # this should show up as one history entry + 11 for x in one two three; do :; done +set -H +echo line 2 for history +line 2 for history +4 echo $BASH_VERSION +5 echo line for history +6 HISTFILE=/tmp/newhistory +7 echo displaying \$HISTFILE after history -a +8 cat $HISTFILE +9 echo line 2 for history +10 # this should show up as one history entry +11 for x in one two three; do :; done +12 # just a basic test. a full test suite for history expansion should be +13 # created +14 set -H +15 echo line 2 for history +16 unset HISTSIZE +17 unset HISTFILE +4 echo $BASH_VERSION +5 echo line for history +6 HISTFILE=/tmp/newhistory +7 echo displaying \$HISTFILE after history -a +8 cat $HISTFILE +./history.tests: line 75: fc: history specification out of range + 14 set -H + 15 echo line 2 for history + 16 unset HISTSIZE + 17 unset HISTFILE +aa ab ac +echo xx xb xc +xx xb xc +echo 44 48 4c +44 48 4c +./history.tests: line 90: fc: no command found +1 diff --git a/bash-20060316/tests/history.tests b/bash-20060316/tests/history.tests new file mode 100644 index 000000000..833cf3a99 --- /dev/null +++ b/bash-20060316/tests/history.tests @@ -0,0 +1,98 @@ +trap 'rm /tmp/newhistory' 0 + +# bad options +history -x +# cannot use -r and -w at the same time +history -r -w /dev/null + +# bad option +fc -v + +unset HISTFILESIZE + +# all of these should result in an empty history list +history -c +history -r /dev/null +history -n /dev/null +history -c + +HISTFILE=history.list +HISTCONTROL=ignoreboth +HISTIGNORE='&:history*:fc*' +HISTSIZE=32 + +shopt -s cmdhist +set -o history + +history + +fc -l +fc -nl + +fc -lr +fc -nlr + +history -s "echo line for history" +history + +history -p '!!' + +fc -nl + +HISTFILE=/tmp/newhistory +history -a +echo displaying \$HISTFILE after history -a +cat $HISTFILE + +history +history -w +cat $HISTFILE + +history -s "echo line 2 for history" +history +history -p '!e' +history -p '!!' + +# this should show up as one history entry +for x in one two three +do + : +done +history + +# just a basic test. a full test suite for history expansion should be +# created +set -H +!! +!e + +unset HISTSIZE +unset HISTFILE + +fc -l 4 +fc -l 4 8 + +fc -l one=two three=four 502 + +history 4 + +shopt -so history +shopt -s expand_aliases + +alias r="fc -s" + +echo aa ab ac + +r a=x +r x=4 b=8 + +# this had better fail with `no command found' +r cc + +unalias -a +alias + +set +o history + +shopt -q -o history +echo $? diff --git a/bash-20060316/tests/history.tests.save b/bash-20060316/tests/history.tests.save new file mode 100644 index 000000000..4a218c301 --- /dev/null +++ b/bash-20060316/tests/history.tests.save @@ -0,0 +1,97 @@ +trap 'rm /tmp/newhistory' 0 + +# bad options +history -x +# cannot use -r and -w at the same time +history -r -w /dev/null + +# bad option +fc -v + +# all of these should result in an empty history list +history -c +history -r /dev/null +history -n /dev/null +history -c + +HISTFILE=history.list +HISTCONTROL=ignoreboth +HISTIGNORE='&:history*:fc*' +HISTSIZE=32 + +shopt -s cmdhist +set -o history + +history + +fc -l +fc -nl + +fc -lr +fc -nlr + +history -s "echo line for history" +history + +history -p '!!' + +fc -nl + +HISTFILE=/tmp/newhistory +history -a +echo displaying \$HISTFILE after history -a +cat $HISTFILE + +history +history -w +cat $HISTFILE + +history -s "echo line 2 for history" +history +history -p '!e' +history -p '!!' + +# this should show up as one history entry +for x in one two three +do + : +done +history + +# just a basic test. a full test suite for history expansion should be +# created +set -H +!! +!e + +unset HISTSIZE +unset HISTFILE + +fc -l 4 +fc -l 4 8 + +fc -l 502 +fc -l one=two three=four 502 + +history 4 + +shopt -so history +shopt -s expand_aliases + +alias r="fc -s" + +echo aa ab ac + +r a=x +r x=4 b=8 + +# this had better fail with `no command found' +r cc + +unalias -a +alias + +set +o history + +shopt -q -o history +echo $? diff --git a/bash-20060316/tests/ifs-posix.right b/bash-20060316/tests/ifs-posix.right new file mode 100644 index 000000000..f3bdccc6c --- /dev/null +++ b/bash-20060316/tests/ifs-posix.right @@ -0,0 +1 @@ +# tests 6856 passed 6856 failed 0 diff --git a/bash-20060316/tests/ifs-posix.tests b/bash-20060316/tests/ifs-posix.tests new file mode 100644 index 000000000..cf9a89874 --- /dev/null +++ b/bash-20060316/tests/ifs-posix.tests @@ -0,0 +1,257 @@ +# Usage: $SHELL ifs.sh +# +# This script generates 6856 tests for the set(1) and read(1) +# builtins w.r.t. IFS whitespace and non-whitespace characters. +# Each failed test produces one line on the standard output that +# contains the test along with the expected and actual results. +# The last output line contains the test result counts. ordered>0 +# are the number of tests where IFS=": " produced different results +# than IFS=" :". If a test fails the same way for IFS=": " and +# IFS=" :" then the second output line is suppressed. + +TESTS=6856 + +ksh_read=0 +echo 1 | read ksh_read +ksh_arith=0 +eval '((ksh_arith+=1))' 2>/dev/null + +failed=0 +ordered=0 +passed=0 + +split() +{ + i=$1 s=$2 r=$3 S='' R='' + for ifs in ': ' ' :' + do IFS=$ifs + set x $i + shift + IFS=' ' + g="[$#]" + while : + do case $# in + 0) break ;; + esac + g="$g($1)" + shift + done + case $g in + "$s") case $ksh_arith in + 1) ((passed+=1)) ;; + *) passed=`expr $passed + 1` ;; + esac + case $S in + '') S=$g + ;; + "$g") ;; + *) case $ksh_arith in + 1) ((ordered+=1)) ;; + *) ordered=`expr $ordered + 1` ;; + esac + ;; + esac + ;; + "$S") case $ksh_arith in + 1) ((failed+=1)) ;; + *) failed=`expr $failed + 1` ;; + esac + ;; + *) case $ksh_arith in + 1) ((failed+=1)) ;; + *) failed=`expr $failed + 1` ;; + esac + case $s in + "$S") ;; + ?0*) echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#]\" # expected \"$s\" got \"$g\"" ;; + ?1*) echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#](\$1)\" # expected \"$s\" got \"$g\"" ;; + ?2*) echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#](\$1)(\$2)\" # expected \"$s\" got \"$g\"" ;; + ?3*) echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#](\$1)(\$2)(\$3)\" # expected \"$s\" got \"$g\"" ;; + *) echo TEST ERROR i="'$i'" s="'$s'" ;; + esac + case $S in + '') S=$g + ;; + "$g") ;; + *) case $ksh_arith in + 1) ((ordered+=1)) ;; + *) ordered=`expr $ordered + 1` ;; + esac + ;; + esac + esac + case $ksh_read in + 1) echo "$i" | IFS=$ifs read x y; g="($x)($y)" ;; + *) g=`export ifs; echo "$i" | ( IFS=$ifs; read x y; echo "($x)($y)" )` ;; + esac + case $g in + "$r") case $ksh_arith in + 1) ((passed+=1)) ;; + *) passed=`expr $passed + 1` ;; + esac + case $R in + '') R=$g + ;; + "$g") ;; + *) case $ksh_arith in + 1) ((ordered+=1)) ;; + *) ordered=`expr $ordered + 1` ;; + esac + ;; + esac + ;; + "$R") case $ksh_arith in + 1) ((failed+=1)) ;; + *) failed=`expr $failed + 1` ;; + esac + ;; + *) case $ksh_arith in + 1) ((failed+=1)) ;; + *) failed=`expr $failed + 1` ;; + esac + case $r in + "$R") ;; + *) echo "echo \"$i\" | ( IFS=\"$ifs\" read x y; echo \"(\$x)(\$y)\" ) # expected \"$r\" got \"$g\"" ;; + esac + case $R in + '') R=$g + ;; + "$g") ;; + *) case $ksh_arith in + 1) ((ordered+=1)) ;; + *) ordered=`expr $ordered + 1` ;; + esac + ;; + esac + ;; + esac + done +} + +for str in \ + '-' \ + 'a' \ + '- -' \ + '- a' \ + 'a -' \ + 'a b' \ + '- - -' \ + '- - a' \ + '- a -' \ + '- a b' \ + 'a - -' \ + 'a - b' \ + 'a b -' \ + 'a b c' \ + +do + IFS=' ' + set x $str + + shift + case $# in + 0) continue ;; + esac + + f1=$1 + case $f1 in + '-') f1='' ;; + esac + + shift + case $# in + 0) for d0 in '' ' ' + do + for d1 in '' ' ' ':' ' :' ': ' ' : ' + do + case $f1$d1 in + '') split "$d0$f1$d1" "[0]" "()()" ;; + ' ') ;; + *) split "$d0$f1$d1" "[1]($f1)" "($f1)()" ;; + esac + done + done + continue + ;; + esac + f2=$1 + case $f2 in + '-') f2='' ;; + esac + + shift + case $# in + 0) for d0 in '' ' ' + do + for d1 in ' ' ':' ' :' ': ' ' : ' + do + case ' ' in + $f1$d1|$d1$f2) continue ;; + esac + for d2 in '' ' ' ':' ' :' ': ' ' : ' + do + case $f2$d2 in + '') split "$d0$f1$d1$f2$d2" "[1]($f1)" "($f1)()" ;; + ' ') ;; + *) split "$d0$f1$d1$f2$d2" "[2]($f1)($f2)" "($f1)($f2)" ;; + esac + done + done + done + continue + ;; + esac + f3=$1 + case $f3 in + '-') f3='' ;; + esac + + shift + case $# in + 0) for d0 in '' ' ' + do + for d1 in ':' ' :' ': ' ' : ' + do + case ' ' in + $f1$d1|$d1$f2) continue ;; + esac + for d2 in ' ' ':' ' :' ': ' ' : ' + do + case $f2$d2 in + ' ') continue ;; + esac + case ' ' in + $f2$d2|$d2$f3) continue ;; + esac + for d3 in '' ' ' ':' ' :' ': ' ' : ' + do + case $f3$d3 in + '') split "$d0$f1$d1$f2$d2$f3$d3" "[2]($f1)($f2)" "($f1)($f2)" ;; + ' ') ;; + *) x=$f2$d2$f3$d3 + x=${x#' '} + x=${x%' '} + split "$d0$f1$d1$f2$d2$f3$d3" "[3]($f1)($f2)($f3)" "($f1)($x)" + ;; + esac + done + done + done + done + continue + ;; + esac +done +case $ksh_arith in +1) ((tests=passed+failed)) ;; +*) tests=`expr $passed + $failed` ;; +esac +case $ordered in +0) ordered="" ;; +*) ordered=" ordered $ordered" ;; +esac +case $tests in +$TESTS) fatal="" ;; +*) fatal=" -- fundamental IFS error -- $TESTS tests expected" +esac +echo "# tests $tests passed $passed failed $failed$ordered$fatal" diff --git a/bash-20060316/tests/ifs.right b/bash-20060316/tests/ifs.right new file mode 100644 index 000000000..512f6ee5a --- /dev/null +++ b/bash-20060316/tests/ifs.right @@ -0,0 +1,10 @@ +a:b:c +a:b:c +a:b:c +a b c d e +a:b:c:d:e +a b c d e +a:b:c:d:e +a:b:c:d:e +a b c d e +a b c d e diff --git a/bash-20060316/tests/ifs.tests b/bash-20060316/tests/ifs.tests new file mode 100644 index 000000000..763e2a001 --- /dev/null +++ b/bash-20060316/tests/ifs.tests @@ -0,0 +1,61 @@ +OIFS="$IFS" +IFS=":$IFS" +eval foo="a:b:c" +IFS="$OIFS" +echo $foo + +OIFS=$IFS +IFS=":$IFS" +foo=$(echo a:b:c) +IFS=$OIFS + +for i in $foo +do + echo $i +done + +OIFS=$IFS +IFS=":$IFS" +foo=`echo a:b:c` +IFS=$OIFS + +for i in $foo +do + echo $i +done + +DEFIFS=$' \t\n' + +# local copy of IFS that shadows global version +function f +{ + typeset IFS=: + + echo $1 +} + +function ff +{ + echo $1 +} + +f a:b:c:d:e +x=a:b:c:d:e +echo $x + +IFS=: ff a:b:c:d:e +echo $x + +# doesn't get word split +IFS=$DEFIFS +# variable assignment doesn't use new value for word splitting +IFS=: echo $x +# but does this time because of the eval +IFS=: eval echo \$x + +# in posix mode, assignments preceding special builtins and functions are global +set -o posix +IFS=: export x +echo $x + +IFS="$DEFIFS" diff --git a/bash-20060316/tests/input-line.sh b/bash-20060316/tests/input-line.sh new file mode 100644 index 000000000..3f66c8172 --- /dev/null +++ b/bash-20060316/tests/input-line.sh @@ -0,0 +1,4 @@ +echo before calling input-line.sub +${THIS_SH} ./input-line.sub +this line for input-line.sub +echo finished with input-line.sub diff --git a/bash-20060316/tests/input-line.sub b/bash-20060316/tests/input-line.sub new file mode 100644 index 000000000..7bc8df297 --- /dev/null +++ b/bash-20060316/tests/input-line.sub @@ -0,0 +1,2 @@ +read line +echo line read by $0 was \`$line\' diff --git a/bash-20060316/tests/input.right b/bash-20060316/tests/input.right new file mode 100644 index 000000000..8733febea --- /dev/null +++ b/bash-20060316/tests/input.right @@ -0,0 +1,3 @@ +before calling input-line.sub +line read by ./input-line.sub was `this line for input-line.sub' +finished with input-line.sub diff --git a/bash-20060316/tests/intl.right b/bash-20060316/tests/intl.right new file mode 100644 index 000000000..21a3b4fd2 --- /dev/null +++ b/bash-20060316/tests/intl.right @@ -0,0 +1,10 @@ +é +1 +AéB +B +B +ok 1 +ok 2 +aéb +0000000 141 303 251 142 +0000004 diff --git a/bash-20060316/tests/intl.tests b/bash-20060316/tests/intl.tests new file mode 100644 index 000000000..0dc33cbb0 --- /dev/null +++ b/bash-20060316/tests/intl.tests @@ -0,0 +1,38 @@ +export LANG=en_US.UTF-8 + +a=$'\303\251' + +echo "$a" + +echo ${#a} + +b=$'A\303\251B' + +echo "$b" + +echo ${b: -1} + +c=AeB + +echo ${c: -1} + +unset a +a=$(printf '%b' 'A\303\251B') +IFS=$(printf '%b' '\303\251') + +case "$a" in +"A${IFS}B") echo ok 1 ;; +*) echo bad 1 ;; +esac + +set $a + +case $1 in +A) echo ok 2 ;; +*) echo bad 2 ;; +esac + +set a b + +printf '%s\n' "$*" +printf '%s' "$*" | od -b diff --git a/bash-20060316/tests/invert.right b/bash-20060316/tests/invert.right new file mode 100644 index 000000000..5a9239aa6 --- /dev/null +++ b/bash-20060316/tests/invert.right @@ -0,0 +1,10 @@ +1 +1 +1 +0 +0 +1 +0 +1 +0 +1 diff --git a/bash-20060316/tests/invert.tests b/bash-20060316/tests/invert.tests new file mode 100644 index 000000000..8393d95a4 --- /dev/null +++ b/bash-20060316/tests/invert.tests @@ -0,0 +1,19 @@ +# tests of return value inversion +# placeholder for future expansion + +# user subshells (...) did this wrong in bash versions before 2.04 + +! ( echo hello | grep h >/dev/null 2>&1 ); echo $? +! echo hello | grep h >/dev/null 2>&1 ; echo $? + +! true ; echo $? +! false; echo $? + +! (false) ; echo $? +! (true); echo $? + +! true | false ; echo $? +! false | true ; echo $? + +! (true | false) ; echo $? +! (false | true) ; echo $? diff --git a/bash-20060316/tests/iquote.right b/bash-20060316/tests/iquote.right new file mode 100644 index 000000000..d164f1051 --- /dev/null +++ b/bash-20060316/tests/iquote.right @@ -0,0 +1,61 @@ +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = <--> +argv[1] = <-^?-> +argv[1] = <> +argv[1] = <> +argv[1] = <^?> +argv[1] = <^?yy> +0x7f +0x7f +0x7f +argv[1] = <^?> +argv[1] = <^?@> +argv[1] = <@^?@> +argv[1] = <@^?> +argv[1] = <^?> +argv[1] = <^?@> +argv[1] = <@^?@> +argv[1] = <@^?> +argv[1] = <1> +argv[2] = <^?> +argv[3] = <^?> +argv[1] = <2> +argv[2] = <^?a> +argv[3] = <^?a> +argv[1] = <2> +argv[2] = <^?a> +argv[3] = <^?a> +argv[1] = <3> +argv[2] = <^?aa> +argv[3] = <^?aa> +argv[1] = <> +argv[1] = <--> +argv[1] = <--> +argv[1] = <^?> +argv[1] = <-^?-> +argv[1] = <^?> +argv[1] = <-^?-> +ok +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = diff --git a/bash-20060316/tests/iquote.tests b/bash-20060316/tests/iquote.tests new file mode 100644 index 000000000..a2cdf4f71 --- /dev/null +++ b/bash-20060316/tests/iquote.tests @@ -0,0 +1,143 @@ +# bug in bash up to and including bash-3.0 (including patches) +# +# problem is conflict between CTLNUL used internally to denote quoted null +# characters and its value (0x7f) appearing in the expansion of a variable +# +unset x +recho "xxx${x}yyy" + +y=$'\177' +recho "xxx${y}yyy" + +unset y + +unset undef + +set "" +recho ${undef-"x$*y"} + +set $'\177' +recho ${undef-"x$*y"} + +shift $# + +f() +{ + recho "-${*-x}-" +} + +f '' +f $'\177' + +unset -f f + +x=12345 + +recho "${x:6:1}" + +x= +recho "${x:0:1}" + +y=$'\177' +recho "${y:0:1}" + +y=xxx$'\177'yyy +recho "${y:3:3}" + +unset x y + +eval tmp=`printf "$'\\\\\x%x'\n" 127` +printf "%#1x\n" "'$tmp" + +x=$'\177' +printf "%#1x\n" "'$x" + +a=127 +eval c=\$\'\\$(printf '%o' $a)\' +printf "%#1x\n" "'$c" + +recho "$c" +recho "$c"@ +recho @"$c"@ +recho @"$c" + +recho "$c" +recho "$c@" +recho "@$c@" +recho "@$c" + +unset tmp x a c + +qtest() +{ + recho ${#q} "${q}" ${q} +} + +q=$'\x7f' +qtest + +q=${q}a +qtest + +q=$'\x7fa' +qtest + +q="${q}a" +qtest + +unset -f qtest +unset q + +set -- '' +recho "${*:1}" +recho ${*:1} +recho -${*:1}- +recho -"${*:1}"- + +set $'\177' +recho "${*:1}" +recho "-${*:1}-" + +recho ${*:1} +recho -${*:1}- + +shift $# + +DEL=`awk 'END{printf("%c", 0+127)}' &2 +exec 2>/dev/null +kill -n 9 $pid +wait # make sure we reap the processes while stderr is still redirected +exec 2>&5 + +echo wait-for-pid +sleep 10 & +wait $! + +echo wait-errors +wait 1-1 +wait -- -4 + +echo wait-for-background-pids +sleep 5 & +sleep 8 & +wait + +echo async list wait-for-background-pids +sleep 5 & sleep 8 & +wait + +echo async list wait for child +sleep 5 & echo forked +wait + +echo wait-when-no-children +wait + +set -m + +echo wait-for-job +sleep 5 & +wait %2 # this should be a no-such-job error +echo $? +wait %1 + +echo async list wait-for-job +sleep 5 & echo forked +wait %1 + +echo fg-bg 1 +sleep 5 & +%1 + +echo fg-bg 2 +sleep 5 & +fg %% + +echo fg-bg 3 +sleep 5 & +fg %s + +echo fg-bg 4 +sleep 5 & +fg %?ee + +# these next two are error cases +echo fg-bg 5 +sleep 15 & +fg %2 # this should be a no-such-job error +bg %1 # this should be a `bg background job?' error +wait + +# these may someday mean to start the jobs, but not print the line +# describing the status, but for now they are errors +echo fg-bg 6 +sleep 5 & +fg -s %1 +bg -s %1 +wait + +# someday this may mean to disown all stopped jobs, but for now it is +# an error +disown -s + +# this is an error -- the job with the pid that is the value of $! is +# retained only until a `wait' is performed +disown %1 + +# this, however, is an error +disown %2 + +echo wait-for-non-child +wait 1 +echo $? + +exit 1 | exit 2 | exit 3 +echo $? -- ${PIPESTATUS[@]} -- ${PIPESTATUS[0]} - ${PIPESTATUS[1]} - ${PIPESTATUS[2]} + +sleep 300 & +sleep 350 & +sleep 400 & + +jobs + +echo running jobs: +jobs -r + +# should be an error +kill -n 1 %4 +# should be an error +jobs %4 +echo current job: +jobs %+ +echo previous job: +jobs %- + +kill -STOP %2 +sleep 5 # give time for the shell to get the stop notification +echo after kill -STOP +echo running jobs: +jobs -r +echo stopped jobs: +jobs -s + +disown %1 + +echo after disown +jobs +echo running jobs: +jobs -r +echo stopped jobs: +jobs -s + +kill -s CONT %2 +echo after kill -s CONT +echo running jobs: +jobs -r +echo stopped jobs: +jobs -s + +kill -STOP %3 +sleep 5 # give time for the shell to get the stop notification +echo after kill -STOP, backgrounding %3: +bg %3 + +disown -h %2 + +# make sure the killed processes don't cause a message +exec 5>&2 +exec 2>/dev/null + +echo killing... +kill -n 9 %2 %3 +wait # make sure we reap the processes while stderr is still redirected +echo done + +exec 2>&5 + +sleep 10 & +kill -STOP %1 +sleep 5 # give time for the shell to get the stop notification +echo after KILL -STOP, foregrounding %1 +fg %1 + +echo done diff --git a/bash-20060316/tests/jobs1.sub b/bash-20060316/tests/jobs1.sub new file mode 100644 index 000000000..aa9a37261 --- /dev/null +++ b/bash-20060316/tests/jobs1.sub @@ -0,0 +1,17 @@ +# make sure that jobs -p, %+, and $! all agree +set -m +sleep 60 & + +FN=/tmp/jobs-pid.$$ + +pid1=$! +jobs -p %+ > $FN +pid2=$(< $FN) +rm $FN + +if [ $pid1 -ne $pid2 ]; then + echo 'oops - $! and jobs -p %+ disagree!' +fi + +exec 2>/dev/null +kill -9 $pid1 diff --git a/bash-20060316/tests/jobs2.sub b/bash-20060316/tests/jobs2.sub new file mode 100644 index 000000000..496519b01 --- /dev/null +++ b/bash-20060316/tests/jobs2.sub @@ -0,0 +1,13 @@ +# make sure fg and bg don't work on jobs started without job control, +# even if they are executed when job control is active +set +o monitor + +sleep 30 & +pid=$! + +set -m +fg %1 +echo fg: $? + +exec 2>/dev/null +kill -9 $pid diff --git a/bash-20060316/tests/jobs3.sub b/bash-20060316/tests/jobs3.sub new file mode 100644 index 000000000..6efd58b09 --- /dev/null +++ b/bash-20060316/tests/jobs3.sub @@ -0,0 +1,26 @@ +#! /bin/bash +NJOB=8 +i=0 + +while [ $i -lt $NJOB ] +do + /bin/sh -c "sleep 4; exit 0" & + rv=$? + pid=$! + eval bg_pid_$i=$pid +# echo $$: Job $i: pid is $pid rv=$rv + i=$((i + 1)) +done + + + +i=0 +while [ $i -lt $NJOB ] +do + eval wpid=\$bg_pid_$i + echo Waiting for job $i #'('pid $wpid')' + wait $wpid + rv=$? + echo job $i returns $rv + i=$((i + 1)) +done diff --git a/bash-20060316/tests/jobs4.sub b/bash-20060316/tests/jobs4.sub new file mode 100644 index 000000000..2eb4197a9 --- /dev/null +++ b/bash-20060316/tests/jobs4.sub @@ -0,0 +1,24 @@ +# test being able to use job control notation in jobs/kill/wait without +# job control active, as the SUS requires + +sleep 5 & + +sleep 5 & +sleep 5 & +sleep 5 & +(sleep 5 ; exit 4) & + +jobs + +wait %% +echo $? + +wait %1 +echo $? + +wait + +# the sleep is intended to give the kill time to execute before the job +# exits +(sleep 1 ; cat ) & +kill -1 %% && echo i killed it || echo could not kill it diff --git a/bash-20060316/tests/misc/dev-tcp.tests b/bash-20060316/tests/misc/dev-tcp.tests new file mode 100644 index 000000000..0f3a2281d --- /dev/null +++ b/bash-20060316/tests/misc/dev-tcp.tests @@ -0,0 +1,16 @@ +exec 9<>/dev/tcp/129.22.8.162/25 + +read banner <&9 +echo "$banner" + +echo quit >&9 + +read msg <&9 +echo "$msg" + +exec 9<&- + +# nifty date command that queries the date/time server +cat < /dev/tcp/129.22.8.102/13 + +exit 0 diff --git a/bash-20060316/tests/misc/input-line-2.sh b/bash-20060316/tests/misc/input-line-2.sh new file mode 100644 index 000000000..b3e126ec8 --- /dev/null +++ b/bash-20060316/tests/misc/input-line-2.sh @@ -0,0 +1,4 @@ +echo before calling input-line.sub +${THIS_SH} < ./input-line.sub +this line for input-line.sub +echo finished with input-line.sub diff --git a/bash-20060316/tests/misc/minus-e b/bash-20060316/tests/misc/minus-e new file mode 100644 index 000000000..be67ec58f --- /dev/null +++ b/bash-20060316/tests/misc/minus-e @@ -0,0 +1,6 @@ +set -e +if set +e +then + false +fi +echo hi diff --git a/bash-20060316/tests/misc/minus-e.right b/bash-20060316/tests/misc/minus-e.right new file mode 100644 index 000000000..45b983be3 --- /dev/null +++ b/bash-20060316/tests/misc/minus-e.right @@ -0,0 +1 @@ +hi diff --git a/bash-20060316/tests/misc/perf-script b/bash-20060316/tests/misc/perf-script new file mode 100644 index 000000000..e1172a9df --- /dev/null +++ b/bash-20060316/tests/misc/perf-script @@ -0,0 +1,81 @@ +#!/bin/bash + +typeset -i m2 m1 M n2 n1 N m n +typeset -i MM=5 NN=5 + +case $# in + 0) : + ;; + 1) MM=$1; NN=$1 + ;; + 2) MM=$1; NN=$2 + ;; + *) echo 1>&2 "Usage: $0 [m [n]]" + ;; +esac + +EMPTYLINE=: # echo +echo 'a = { ' # mathematica + +let "M=1" # for (M=1; M<=MM; M++) +while let "M <= MM"; do + let "N=1" # for (N=1; N<=NN; N++) + while let "N <= NN"; do + + let "m1 = M - 1" + let "m2 = M + 1" + let "n1 = N - 1" + let "n2 = N + 1" + + + echo -n '{ ' # math + let "m=1" # for(m=1; m<=MM; m++) + while let "m <= MM"; do + let "n=1" # for(n=1; n<=NN; n++) + while let "n <= NN"; do + + let "x = (m-m1)*(m-M)*(m-m2)" + let "y = (n-n1)*(n-N)*(n-n2)" + + if let "(x*x + (n-N)*(n-N)) * ((m-M)*(m-M) + y*y)"; then + echo -n "0," + else # neighbour + echo -n "1," + fi + + let "n=n+1" + done + echo -n " "; let "m=m+1" # ". " + done + echo '},' + + + let "N=N+1" + $EMPTYLINE + done + $EMPTYLINE + let "M=M+1" +done + +echo '}' + + + +echo -n 'o = { ' +let "m=1" +while let "m <= MM"; do + let "n=1" + while let "n <= NN"; do + echo -n "1," + let "n=n+1" + done + let "m=m+1" +done +echo " }" + + +echo 'x = LinearSolve[a,o] ' + +exit 0 + + diff --git a/bash-20060316/tests/misc/perftest b/bash-20060316/tests/misc/perftest new file mode 100644 index 000000000..ee3f2c66a --- /dev/null +++ b/bash-20060316/tests/misc/perftest @@ -0,0 +1,10 @@ +# originally from Mike Haertel +foo() { case $1 in a*) ;; *) ;; esac ;} +bar() { case $1 in [abc]*) ;; *);; esac ;} +baz() { case $1 in xyzzy) ;; *) ;; esac ;} +for x in /usr/lib/*/* +do + foo $x + bar $x + baz $x +done diff --git a/bash-20060316/tests/misc/read-nchars-int.tests b/bash-20060316/tests/misc/read-nchars-int.tests new file mode 100644 index 000000000..40b1f982a --- /dev/null +++ b/bash-20060316/tests/misc/read-nchars-int.tests @@ -0,0 +1,11 @@ +# interactive + +# from tty +read -n 3 -p 'enter three chars: ' xyz +echo +echo $xyz + +# using readline +read -p 'enter 3 chars: ' -e -n 3 abc +# readline outputs a newline for us, so we don't need the extra echo +echo $abc diff --git a/bash-20060316/tests/misc/read-nchars.tests b/bash-20060316/tests/misc/read-nchars.tests new file mode 100644 index 000000000..40b1f982a --- /dev/null +++ b/bash-20060316/tests/misc/read-nchars.tests @@ -0,0 +1,11 @@ +# interactive + +# from tty +read -n 3 -p 'enter three chars: ' xyz +echo +echo $xyz + +# using readline +read -p 'enter 3 chars: ' -e -n 3 abc +# readline outputs a newline for us, so we don't need the extra echo +echo $abc diff --git a/bash-20060316/tests/misc/redir-t2.sh b/bash-20060316/tests/misc/redir-t2.sh new file mode 100644 index 000000000..44b2624ee --- /dev/null +++ b/bash-20060316/tests/misc/redir-t2.sh @@ -0,0 +1,17 @@ +read line1 + +echo read line 1 \"$line1\" + +exec 4<&0 + +exec 0 <920725204@umunk.GUN.de> + <9207260813.30@rmkhome.UUCP> <1992Jul27.200244.2456@acme.gen.nz> + <9207291604.00@rmkhome.UUCP> + <9208011403.38@rmkhome.UUCP> + +I've reevaluated the allegedly-sh-compatible shells I have on hand (sh, +bash, ash, zsh and a redistributable ksh). bash seems to have improved +since I last looked at it and seems to run inews and subordinates +correctly, and passes the diagnostic tests I extracted from inews and +anne.jones. ash, zsh and redistributable ksh each fail three of the six +tests. This saddens me, as ash is an elegant and relatively small piece +of work, whereas bash is bloated and complicated. + +I've enclosed the test scripts (shx?), driver script (shx) and results +(log) below. A couple caveats: shx4 (a quoting test) uses the C News +getdate command; there may be newer versions of the shells tested - this +evaluation is decidedly informal. Here's a quick summary: sh and bash +passed all tests; ash can't parse "<&$fd" and doesn't understand quoting; +redistributable ksh dumps core on a newline inside backquotes, doesn't +understand quoting, and botches waiting on background processes; zsh +doesn't understand sh quoting (in particular, it sees ! as a job control +character, even inside quotes), and botches waiting for background +processes. + + +# To unbundle, sh this file +echo log 1>&2 +sed 's/^X//' >log <<'!' +X:; ./shx + +sh: +X<&$fd ok +nlbq Mon Aug 3 02:45:00 EDT 1992 +bang geoff +quote 712824302 +setbq defmsgid=<1992Aug3.024502.6176@host> +bgwait sleep done... wait 6187 + + +bash: +X<&$fd ok +nlbq Mon Aug 3 02:45:09 EDT 1992 +bang geoff +quote 712824311 +setbq defmsgid=<1992Aug3.024512.6212@host> +bgwait sleep done... wait 6223 + + +ash: +X<&$fd shx1: 4: Syntax error: Bad fd number +nlbq Mon Aug 3 02:45:19 EDT 1992 +bang geoff +quote getdate: `"now"' not a valid date + +setbq defmsgid=<1992Aug3.` echo 024521 +bgwait sleep done... wait 6241 + + +ksh: +X<&$fd ok +nlbq ./shx: 6248 Memory fault - core dumped +bang geoff +quote getdate: `"now"' not a valid date + +setbq defmsgid=<1992Aug3.024530.6257@host> +bgwait no such job: 6265 +wait 6265 +sleep done... + +zsh: +X<&$fd ok +nlbq Mon Aug 3 02:45:36 EDT 1992 +bang shx3: event not found: /s/ [4] +quote 712824337 +setbq defmsgid=<..6290@host> +bgwait shx7: unmatched " [9] +sleep done... +X:; +! +echo shx 1>&2 +sed 's/^X//' >shx <<'!' +X#! /bin/sh +for cmd in sh bash ash ksh zsh +do +X echo +X echo $cmd: +X for demo in shx? +X do +X $cmd $demo +X done +done +! +echo shx1 1>&2 +sed 's/^X//' >shx1 <<'!' +X# ash fails this one +echo -n '<&$fd ' +fd=3 +echo ok <&$fd +! +echo shx2 1>&2 +sed 's/^X//' >shx2 <<'!' +X# pd ksh fails this one +echo -n "nlbq " +date=` +date` +echo "$date" +! +echo shx3 1>&2 +sed 's/^X//' >shx3 <<'!' +X# zsh fails this one +echo -n 'bang ' +echo 'geoff tty?? Aug 3 02:35' | +X sed -e 's/[ ].*//' -e '/!/s/^.*!//' +! +echo shx4 1>&2 +sed 's/^X//' >shx4 <<'!' +X# ash, pd ksh fail this one +echo -n "quote " +expiry="now" +timet="` getdate \"$expiry\" `" +echo "$timet" +! +echo shx5 1>&2 +sed 's/^X//' >shx5 <<'!' +X# ash, zsh fail this one +echo -n "setbq " +host=host +date="`date`" +echo defmsgid="`set $date; echo \<$6$2$3.\` echo $4 | tr -d : \`.$$@$host\>`" +! +echo shx7 1>&2 +sed 's/^X//' >shx7 <<'!' +X# pd ksh and zsh fail this one +echo -n "bgwait " +X( +X sleep 2 +X echo -n "sleep done... " +X) & +waitcmd="wait $!" +eval $waitcmd +echo "$waitcmd" +! +echo shx8 1>&2 +sed 's/^X//' >shx8 <<'!' +X# in case gcx7 is really breaks this shell +sleep 3 +echo +! +exit 0 diff --git a/bash-20060316/tests/misc/regress/getdate.mk b/bash-20060316/tests/misc/regress/getdate.mk new file mode 100644 index 000000000..543242e84 --- /dev/null +++ b/bash-20060316/tests/misc/regress/getdate.mk @@ -0,0 +1,9 @@ +all: getdate + +getdate.c: getdate.y + yacc getdate.y + mv y.tab.c getdate.c + +getdate: getdate.c + $(CC) -o $@ getdate.c + rm -f getdate.c getdate.o diff --git a/bash-20060316/tests/misc/regress/getdate.y b/bash-20060316/tests/misc/regress/getdate.y new file mode 100644 index 000000000..1df37738d --- /dev/null +++ b/bash-20060316/tests/misc/regress/getdate.y @@ -0,0 +1,553 @@ +%token ID MONTH DAY MERIDIAN NUMBER UNIT MUNIT SUNIT ZONE DAYZONE AGO +%{ + /* Steven M. Bellovin (unc!smb) */ + /* Dept. of Computer Science */ + /* University of North Carolina at Chapel Hill */ + /* @(#)getdate.y 2.13 9/16/86 */ + +#include +#include +#include +#include +#define timezone tmzn /* ugly hack for obscure name clash */ +#include + +#define daysec (24L*60L*60L) + + static int timeflag, zoneflag, dateflag, dayflag, relflag; + static time_t relsec, relmonth; + static int hh, mm, ss, merid, daylight; + static int dayord, dayreq; + static int month, day, year; + static int ourzone; + +#define AM 1 +#define PM 2 +#define DAYLIGHT 1 +#define STANDARD 2 +#define MAYBE 3 +%} + +%% +timedate: /* empty */ + | timedate item; + +item: tspec = + {timeflag++;} + | zone = + {zoneflag++;} + | dtspec = + {dateflag++;} + | dyspec = + {dayflag++;} + | rspec = + {relflag++;} + | nspec; + +nspec: NUMBER = + {if (timeflag && dateflag && !relflag) year = $1; + else {timeflag++;hh = $1/100;mm = $1%100;ss = 0;merid = 24;}}; + +tspec: NUMBER MERIDIAN = + {hh = $1; mm = 0; ss = 0; merid = $2;} + | NUMBER ':' NUMBER = + {hh = $1; mm = $3; merid = 24;} + | NUMBER ':' NUMBER MERIDIAN = + {hh = $1; mm = $3; merid = $4;} + | NUMBER ':' NUMBER NUMBER = + {hh = $1; mm = $3; merid = 24; + daylight = STANDARD; ourzone = $4%100 + 60*$4/100;} + | NUMBER ':' NUMBER ':' NUMBER = + {hh = $1; mm = $3; ss = $5; merid = 24;} + | NUMBER ':' NUMBER ':' NUMBER MERIDIAN = + {hh = $1; mm = $3; ss = $5; merid = $6;} + | NUMBER ':' NUMBER ':' NUMBER NUMBER = + {hh = $1; mm = $3; ss = $5; merid = 24; + daylight = STANDARD; ourzone = $6%100 + 60*$6/100;}; + +zone: ZONE = + {ourzone = $1; daylight = STANDARD;} + | DAYZONE = + {ourzone = $1; daylight = DAYLIGHT;}; + +dyspec: DAY = + {dayord = 1; dayreq = $1;} + | DAY ',' = + {dayord = 1; dayreq = $1;} + | NUMBER DAY = + {dayord = $1; dayreq = $2;}; + +dtspec: NUMBER '/' NUMBER = + {month = $1; day = $3;} + | NUMBER '/' NUMBER '/' NUMBER = + {month = $1; day = $3; year = $5;} + | MONTH NUMBER = + {month = $1; day = $2;} + | MONTH NUMBER ',' NUMBER = + {month = $1; day = $2; year = $4;} + | NUMBER MONTH = + {month = $2; day = $1;} + | NUMBER MONTH NUMBER = + {month = $2; day = $1; year = $3;}; + + +rspec: NUMBER UNIT = + {relsec += 60L * $1 * $2;} + | NUMBER MUNIT = + {relmonth += $1 * $2;} + | NUMBER SUNIT = + {relsec += $1;} + | UNIT = + {relsec += 60L * $1;} + | MUNIT = + {relmonth += $1;} + | SUNIT = + {relsec++;} + | rspec AGO = + {relsec = -relsec; relmonth = -relmonth;}; +%% + +static int mdays[12] = + {31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; +#define epoch 1970 + +extern struct tm *localtime(); + +static time_t +dateconv(mm, dd, yy, h, m, s, mer, zone, dayflag) +int mm, dd, yy, h, m, s, mer, zone, dayflag; +{ + time_t tod, jdate; + register int i; + time_t timeconv(); + + if (yy < 0) yy = -yy; + if (yy < 100) yy += 1900; + mdays[1] = 28 + (yy%4 == 0 && (yy%100 != 0 || yy%400 == 0)); + if (yy < epoch || yy > 1999 || mm < 1 || mm > 12 || + dd < 1 || dd > mdays[--mm]) return (-1); + jdate = dd-1; + for (i=0; itm_isdst)) + jdate += -1*60*60; + return (jdate); +} + +static time_t +dayconv(ord, day, now) +int ord, day; time_t now; +{ + register struct tm *loctime; + time_t tod; + time_t daylcorr(); + + tod = now; + loctime = localtime(&tod); + tod += daysec * ((day - loctime->tm_wday + 7) % 7); + tod += 7*daysec*(ord<=0?ord:ord-1); + return daylcorr(tod, now); +} + +static time_t +timeconv(hh, mm, ss, mer) +register int hh, mm, ss, mer; +{ + if (mm < 0 || mm > 59 || ss < 0 || ss > 59) return (-1); + switch (mer) { + case AM: if (hh < 1 || hh > 12) return(-1); + return (60L * ((hh%12)*60L + mm)+ss); + case PM: if (hh < 1 || hh > 12) return(-1); + return (60L * ((hh%12 +12)*60L + mm)+ss); + case 24: if (hh < 0 || hh > 23) return (-1); + return (60L * (hh*60L + mm)+ss); + default: return (-1); + } +} + +static time_t +monthadd(sdate, relmonth) +time_t sdate, relmonth; +{ + struct tm *ltime; + time_t dateconv(); + time_t daylcorr(); + int mm, yy; + + if (relmonth == 0) return 0; + ltime = localtime(&sdate); + mm = 12*ltime->tm_year + ltime->tm_mon + relmonth; + yy = mm/12; + mm = mm%12 + 1; + return daylcorr(dateconv(mm, ltime->tm_mday, yy, ltime->tm_hour, + ltime->tm_min, ltime->tm_sec, 24, ourzone, MAYBE), sdate); +} + +static time_t +daylcorr(future, now) +time_t future, now; +{ + int fdayl, nowdayl; + + nowdayl = (localtime(&now)->tm_hour+1) % 24; + fdayl = (localtime(&future)->tm_hour+1) % 24; + return (future-now) + 60L*60L*(nowdayl-fdayl); +} + +static char *lptr; + +yylex() +{ + extern int yylval; + int sign; + register char c; + register char *p; + char idbuf[20]; + int pcnt; + + for (;;) { + while (isspace(*lptr)) lptr++; + + if (isdigit(c = *lptr) || c == '-' || c == '+') { + if (c== '-' || c == '+') { + if (c=='-') sign = -1; + else sign = 1; + if (!isdigit(*++lptr)) { + /* yylval = sign; return (NUMBER); */ + return yylex(); /* skip the '-' sign */ + } + } else sign = 1; + yylval = 0; + while (isdigit(c = *lptr++)) yylval = 10*yylval + c - '0'; + yylval *= sign; + lptr--; + return (NUMBER); + + } else if (isalpha(c)) { + p = idbuf; + while (isalpha(c = *lptr++) || c=='.') + if (p < &idbuf[sizeof(idbuf)-1]) + *p++ = c; + *p = '\0'; + lptr--; + return (lookup(idbuf)); + } + + else if (c == '(') { + pcnt = 0; + do { + c = *lptr++; + if (c == '\0') return(c); + else if (c == '(') pcnt++; + else if (c == ')') pcnt--; + } while (pcnt > 0); + } + + else return (*lptr++); + } +} + +struct table { + char *name; + int type, value; +}; + +static struct table mdtab[] = { + {"January", MONTH, 1}, + {"February", MONTH, 2}, + {"March", MONTH, 3}, + {"April", MONTH, 4}, + {"May", MONTH, 5}, + {"June", MONTH, 6}, + {"July", MONTH, 7}, + {"August", MONTH, 8}, + {"September", MONTH, 9}, + {"Sept", MONTH, 9}, + {"October", MONTH, 10}, + {"November", MONTH, 11}, + {"December", MONTH, 12}, + + {"Sunday", DAY, 0}, + {"Monday", DAY, 1}, + {"Tuesday", DAY, 2}, + {"Tues", DAY, 2}, + {"Wednesday", DAY, 3}, + {"Wednes", DAY, 3}, + {"Thursday", DAY, 4}, + {"Thur", DAY, 4}, + {"Thurs", DAY, 4}, + {"Friday", DAY, 5}, + {"Saturday", DAY, 6}, + {0, 0, 0}}; + +#define HRS *60 +#define HALFHR 30 +static struct table mztab[] = { + {"a.m.", MERIDIAN, AM}, + {"am", MERIDIAN, AM}, + {"p.m.", MERIDIAN, PM}, + {"pm", MERIDIAN, PM}, + {"nst", ZONE, 3 HRS + HALFHR}, /* Newfoundland */ + {"n.s.t.", ZONE, 3 HRS + HALFHR}, + {"ast", ZONE, 4 HRS}, /* Atlantic */ + {"a.s.t.", ZONE, 4 HRS}, + {"adt", DAYZONE, 4 HRS}, + {"a.d.t.", DAYZONE, 4 HRS}, + {"est", ZONE, 5 HRS}, /* Eastern */ + {"e.s.t.", ZONE, 5 HRS}, + {"edt", DAYZONE, 5 HRS}, + {"e.d.t.", DAYZONE, 5 HRS}, + {"cst", ZONE, 6 HRS}, /* Central */ + {"c.s.t.", ZONE, 6 HRS}, + {"cdt", DAYZONE, 6 HRS}, + {"c.d.t.", DAYZONE, 6 HRS}, + {"mst", ZONE, 7 HRS}, /* Mountain */ + {"m.s.t.", ZONE, 7 HRS}, + {"mdt", DAYZONE, 7 HRS}, + {"m.d.t.", DAYZONE, 7 HRS}, + {"pst", ZONE, 8 HRS}, /* Pacific */ + {"p.s.t.", ZONE, 8 HRS}, + {"pdt", DAYZONE, 8 HRS}, + {"p.d.t.", DAYZONE, 8 HRS}, + {"yst", ZONE, 9 HRS}, /* Yukon */ + {"y.s.t.", ZONE, 9 HRS}, + {"ydt", DAYZONE, 9 HRS}, + {"y.d.t.", DAYZONE, 9 HRS}, + {"hst", ZONE, 10 HRS}, /* Hawaii */ + {"h.s.t.", ZONE, 10 HRS}, + {"hdt", DAYZONE, 10 HRS}, + {"h.d.t.", DAYZONE, 10 HRS}, + + {"gmt", ZONE, 0 HRS}, + {"g.m.t.", ZONE, 0 HRS}, + {"ut", ZONE, 0 HRS}, + {"u.t.", ZONE, 0 HRS}, + {"bst", DAYZONE, 0 HRS}, /* British Summer Time */ + {"b.s.t.", DAYZONE, 0 HRS}, + {"eet", ZONE, 0 HRS}, /* European Eastern Time */ + {"e.e.t.", ZONE, 0 HRS}, + {"eest", DAYZONE, 0 HRS}, /* European Eastern Summer Time */ + {"e.e.s.t.", DAYZONE, 0 HRS}, + {"met", ZONE, -1 HRS}, /* Middle European Time */ + {"m.e.t.", ZONE, -1 HRS}, + {"mest", DAYZONE, -1 HRS}, /* Middle European Summer Time */ + {"m.e.s.t.", DAYZONE, -1 HRS}, + {"wet", ZONE, -2 HRS }, /* Western European Time */ + {"w.e.t.", ZONE, -2 HRS }, + {"west", DAYZONE, -2 HRS}, /* Western European Summer Time */ + {"w.e.s.t.", DAYZONE, -2 HRS}, + + {"jst", ZONE, -9 HRS}, /* Japan Standard Time */ + {"j.s.t.", ZONE, -9 HRS}, /* Japan Standard Time */ + /* No daylight savings time */ + + {"aest", ZONE, -10 HRS}, /* Australian Eastern Time */ + {"a.e.s.t.", ZONE, -10 HRS}, + {"aesst", DAYZONE, -10 HRS}, /* Australian Eastern Summer Time */ + {"a.e.s.s.t.", DAYZONE, -10 HRS}, + {"acst", ZONE, -(9 HRS + HALFHR)}, /* Australian Central Time */ + {"a.c.s.t.", ZONE, -(9 HRS + HALFHR)}, + {"acsst", DAYZONE, -(9 HRS + HALFHR)}, /* Australian Central Summer */ + {"a.c.s.s.t.", DAYZONE, -(9 HRS + HALFHR)}, + {"awst", ZONE, -8 HRS}, /* Australian Western Time */ + {"a.w.s.t.", ZONE, -8 HRS}, /* (no daylight time there, I'm told */ + {0, 0, 0}}; + +static struct table unittb[] = { + {"year", MUNIT, 12}, + {"month", MUNIT, 1}, + {"fortnight", UNIT, 14*24*60}, + {"week", UNIT, 7*24*60}, + {"day", UNIT, 1*24*60}, + {"hour", UNIT, 60}, + {"minute", UNIT, 1}, + {"min", UNIT, 1}, + {"second", SUNIT, 1}, + {"sec", SUNIT, 1}, + {0, 0, 0}}; + +static struct table othertb[] = { + {"tomorrow", UNIT, 1*24*60}, + {"yesterday", UNIT, -1*24*60}, + {"today", UNIT, 0}, + {"now", UNIT, 0}, + {"last", NUMBER, -1}, + {"this", UNIT, 0}, + {"next", NUMBER, 2}, + {"first", NUMBER, 1}, + /* {"second", NUMBER, 2}, */ + {"third", NUMBER, 3}, + {"fourth", NUMBER, 4}, + {"fifth", NUMBER, 5}, + {"sixth", NUMBER, 6}, + {"seventh", NUMBER, 7}, + {"eigth", NUMBER, 8}, + {"ninth", NUMBER, 9}, + {"tenth", NUMBER, 10}, + {"eleventh", NUMBER, 11}, + {"twelfth", NUMBER, 12}, + {"ago", AGO, 1}, + {0, 0, 0}}; + +static struct table milzone[] = { + {"a", ZONE, 1 HRS}, + {"b", ZONE, 2 HRS}, + {"c", ZONE, 3 HRS}, + {"d", ZONE, 4 HRS}, + {"e", ZONE, 5 HRS}, + {"f", ZONE, 6 HRS}, + {"g", ZONE, 7 HRS}, + {"h", ZONE, 8 HRS}, + {"i", ZONE, 9 HRS}, + {"k", ZONE, 10 HRS}, + {"l", ZONE, 11 HRS}, + {"m", ZONE, 12 HRS}, + {"n", ZONE, -1 HRS}, + {"o", ZONE, -2 HRS}, + {"p", ZONE, -3 HRS}, + {"q", ZONE, -4 HRS}, + {"r", ZONE, -5 HRS}, + {"s", ZONE, -6 HRS}, + {"t", ZONE, -7 HRS}, + {"u", ZONE, -8 HRS}, + {"v", ZONE, -9 HRS}, + {"w", ZONE, -10 HRS}, + {"x", ZONE, -11 HRS}, + {"y", ZONE, -12 HRS}, + {"z", ZONE, 0 HRS}, + {0, 0, 0}}; + +static +lookup(id) +char *id; +{ +#define gotit (yylval=i->value, i->type) +#define getid for(j=idvar, k=id; *j++ = *k++; ) + + char idvar[20]; + register char *j, *k; + register struct table *i; + int abbrev; + + getid; + if (strlen(idvar) == 3) abbrev = 1; + else if (strlen(idvar) == 4 && idvar[3] == '.') { + abbrev = 1; + idvar[3] = '\0'; + } + else abbrev = 0; + + if (islower(*idvar)) *idvar = toupper(*idvar); + + for (i = mdtab; i->name; i++) { + k = idvar; + for (j = i->name; *j++ == *k++;) { + if (abbrev && j==i->name+3) return gotit; + if (j[-1] == 0) return gotit; + } + } + + getid; + for (i = mztab; i->name; i++) + if (strcmp(i->name, idvar) == 0) return gotit; + + for (j = idvar; *j; j++) + if (isupper(*j)) *j = tolower(*j); + for (i=mztab; i->name; i++) + if (strcmp(i->name, idvar) == 0) return gotit; + + getid; + for (i=unittb; i->name; i++) + if (strcmp(i->name, idvar) == 0) return gotit; + + if (idvar[strlen(idvar)-1] == 's') + idvar[strlen(idvar)-1] = '\0'; + for (i=unittb; i->name; i++) + if (strcmp(i->name, idvar) == 0) return gotit; + + getid; + for (i = othertb; i->name; i++) + if (strcmp(i->name, idvar) == 0) return gotit; + + getid; + if (strlen(idvar) == 1 && isalpha(*idvar)) { + if (isupper(*idvar)) *idvar = tolower(*idvar); + for (i = milzone; i->name; i++) + if (strcmp(i->name, idvar) == 0) return gotit; + } + + return(ID); +} + +time_t +getdate(p, now) +char *p; +struct timeb *now; +{ +#define mcheck(f) if (f>1) err++ + time_t monthadd(); + int err; + struct tm *lt; + struct timeb ftz; + + time_t sdate, tod; + + lptr = p; + if (now == ((struct timeb *) NULL)) { + now = &ftz; + ftime(&ftz); + } + lt = localtime(&now->time); + year = lt->tm_year; + month = lt->tm_mon+1; + day = lt->tm_mday; + relsec = 0; relmonth = 0; + timeflag=zoneflag=dateflag=dayflag=relflag=0; + ourzone = now->timezone; + daylight = MAYBE; + hh = mm = ss = 0; + merid = 24; + + if (err = yyparse()) return (-1); + + mcheck(timeflag); + mcheck(zoneflag); + mcheck(dateflag); + mcheck(dayflag); + + if (err) return (-1); + if (dateflag || timeflag || dayflag) { + sdate = dateconv(month,day,year,hh,mm,ss,merid,ourzone,daylight); + if (sdate < 0) return -1; + } + else { + sdate = now->time; + if (relflag == 0) + sdate -= (lt->tm_sec + lt->tm_min*60 + + lt->tm_hour*(60L*60L)); + } + + sdate += relsec; + sdate += monthadd(sdate, relmonth); + + if (dayflag && !dateflag) { + tod = dayconv(dayord, dayreq, sdate); + sdate += tod; + } + + return sdate; +} + +yyerror(s) char *s; +{} + +main(c, v) +int c; +char **v; +{ + printf("%d\n", getdate(v[1], (struct timeb *)0)); +} diff --git a/bash-20060316/tests/misc/regress/log.orig b/bash-20060316/tests/misc/regress/log.orig new file mode 100644 index 000000000..c1f1e1991 --- /dev/null +++ b/bash-20060316/tests/misc/regress/log.orig @@ -0,0 +1,50 @@ +:; ./shx + +sh: +<&$fd ok +nlbq Mon Aug 3 02:45:00 EDT 1992 +bang geoff +quote 712824302 +setbq defmsgid=<1992Aug3.024502.6176@host> +bgwait sleep done... wait 6187 + + +bash: +<&$fd ok +nlbq Mon Aug 3 02:45:09 EDT 1992 +bang geoff +quote 712824311 +setbq defmsgid=<1992Aug3.024512.6212@host> +bgwait sleep done... wait 6223 + + +ash: +<&$fd shx1: 4: Syntax error: Bad fd number +nlbq Mon Aug 3 02:45:19 EDT 1992 +bang geoff +quote getdate: `"now"' not a valid date + +setbq defmsgid=<1992Aug3.` echo 024521 +bgwait sleep done... wait 6241 + + +ksh: +<&$fd ok +nlbq ./shx: 6248 Memory fault - core dumped +bang geoff +quote getdate: `"now"' not a valid date + +setbq defmsgid=<1992Aug3.024530.6257@host> +bgwait no such job: 6265 +wait 6265 +sleep done... + +zsh: +<&$fd ok +nlbq Mon Aug 3 02:45:36 EDT 1992 +bang shx3: event not found: /s/ [4] +quote 712824337 +setbq defmsgid=<..6290@host> +bgwait shx7: unmatched " [9] +sleep done... +:; diff --git a/bash-20060316/tests/misc/regress/shx b/bash-20060316/tests/misc/regress/shx new file mode 100644 index 000000000..feb2bc8f1 --- /dev/null +++ b/bash-20060316/tests/misc/regress/shx @@ -0,0 +1,15 @@ +#! /bin/sh + +if ksh -c 'echo ""' >/dev/null 2>&1; then + ksh=ksh +fi + +for cmd in sh ../../bash $ksh +do + echo + echo $cmd: + for demo in shx[0-9] + do + $cmd $demo + done +done diff --git a/bash-20060316/tests/misc/regress/shx.orig b/bash-20060316/tests/misc/regress/shx.orig new file mode 100644 index 000000000..4b3bf2b82 --- /dev/null +++ b/bash-20060316/tests/misc/regress/shx.orig @@ -0,0 +1,10 @@ +#! /bin/sh +for cmd in sh bash ash ksh zsh +do + echo + echo $cmd: + for demo in shx? + do + $cmd $demo + done +done diff --git a/bash-20060316/tests/misc/regress/shx1 b/bash-20060316/tests/misc/regress/shx1 new file mode 100644 index 000000000..73c5e8a4b --- /dev/null +++ b/bash-20060316/tests/misc/regress/shx1 @@ -0,0 +1,4 @@ +# ash fails this one +echo -n '<&$fd ' +fd=3 +echo ok <&$fd diff --git a/bash-20060316/tests/misc/regress/shx2 b/bash-20060316/tests/misc/regress/shx2 new file mode 100644 index 000000000..03cff5bbb --- /dev/null +++ b/bash-20060316/tests/misc/regress/shx2 @@ -0,0 +1,5 @@ +# pd ksh fails this one +echo -n "nlbq " +date=` +date` +echo "$date" diff --git a/bash-20060316/tests/misc/regress/shx3 b/bash-20060316/tests/misc/regress/shx3 new file mode 100644 index 000000000..1fbbb3700 --- /dev/null +++ b/bash-20060316/tests/misc/regress/shx3 @@ -0,0 +1,4 @@ +# zsh fails this one +echo -n 'bang ' +echo 'geoff tty?? Aug 3 02:35' | + sed -e 's/[ ].*//' -e '/!/s/^.*!//' diff --git a/bash-20060316/tests/misc/regress/shx4 b/bash-20060316/tests/misc/regress/shx4 new file mode 100644 index 000000000..9ae77817d --- /dev/null +++ b/bash-20060316/tests/misc/regress/shx4 @@ -0,0 +1,5 @@ +# ash, pd ksh fail this one +echo -n "quote " +expiry="now" +timet="` getdate \"$expiry\" `" +echo "$timet" diff --git a/bash-20060316/tests/misc/regress/shx5 b/bash-20060316/tests/misc/regress/shx5 new file mode 100644 index 000000000..bd7ad0e2d --- /dev/null +++ b/bash-20060316/tests/misc/regress/shx5 @@ -0,0 +1,5 @@ +# ash, zsh fail this one +echo -n "setbq " +host=host +date="`date`" +echo defmsgid="`set $date; echo \<$6$2$3.\` echo $4 | tr -d : \`.$$@$host\>`" diff --git a/bash-20060316/tests/misc/regress/shx7 b/bash-20060316/tests/misc/regress/shx7 new file mode 100644 index 000000000..12ba1ec15 --- /dev/null +++ b/bash-20060316/tests/misc/regress/shx7 @@ -0,0 +1,9 @@ +# pd ksh and zsh fail this one +echo -n "bgwait " +( + sleep 2 + echo -n "sleep done... " +) & +waitcmd="wait $!" +eval $waitcmd +echo "$waitcmd" diff --git a/bash-20060316/tests/misc/regress/shx8 b/bash-20060316/tests/misc/regress/shx8 new file mode 100644 index 000000000..b466ec1ef --- /dev/null +++ b/bash-20060316/tests/misc/regress/shx8 @@ -0,0 +1,3 @@ +# in case gcx7 is really breaks this shell +sleep 3 +echo diff --git a/bash-20060316/tests/misc/run-input-test-2 b/bash-20060316/tests/misc/run-input-test-2 new file mode 100644 index 000000000..ffbac4c65 --- /dev/null +++ b/bash-20060316/tests/misc/run-input-test-2 @@ -0,0 +1,2 @@ +cat ./input-line-2.sh | ${THIS_SH} > /tmp/xx +diff /tmp/xx input.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/misc/run-minus-e b/bash-20060316/tests/misc/run-minus-e new file mode 100644 index 000000000..2a91a3d22 --- /dev/null +++ b/bash-20060316/tests/misc/run-minus-e @@ -0,0 +1,2 @@ +${THIS_SH} ./minus-e > /tmp/xx +diff /tmp/xx minus-e.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/misc/run-r2.sh b/bash-20060316/tests/misc/run-r2.sh new file mode 100755 index 000000000..0321a1bdd --- /dev/null +++ b/bash-20060316/tests/misc/run-r2.sh @@ -0,0 +1 @@ +../../bash ./redir-t2.sh < /etc/passwd diff --git a/bash-20060316/tests/misc/sigint-1.sh b/bash-20060316/tests/misc/sigint-1.sh new file mode 100755 index 000000000..7b74c3073 --- /dev/null +++ b/bash-20060316/tests/misc/sigint-1.sh @@ -0,0 +1,9 @@ +echo before trap +trap 'echo caught sigint' 2 +echo after trap + +for i in 1 2 3 +do + echo $i + sleep 5 +done diff --git a/bash-20060316/tests/misc/sigint-2.sh b/bash-20060316/tests/misc/sigint-2.sh new file mode 100755 index 000000000..69eaf56a0 --- /dev/null +++ b/bash-20060316/tests/misc/sigint-2.sh @@ -0,0 +1,7 @@ +echo before loop + +for i in 1 2 3 +do + echo $i + sleep 5 +done diff --git a/bash-20060316/tests/misc/sigint-3.sh b/bash-20060316/tests/misc/sigint-3.sh new file mode 100755 index 000000000..2627fe6cb --- /dev/null +++ b/bash-20060316/tests/misc/sigint-3.sh @@ -0,0 +1,11 @@ +sleep 5 & +sleep 5 & +sleep 5 & + +echo wait 1 +wait + +echo wait 2 +wait + +exit diff --git a/bash-20060316/tests/misc/sigint-4.sh b/bash-20060316/tests/misc/sigint-4.sh new file mode 100755 index 000000000..587dd2651 --- /dev/null +++ b/bash-20060316/tests/misc/sigint-4.sh @@ -0,0 +1,13 @@ +trap 'echo sigint' 2 + +sleep 5 & +sleep 5 & +sleep 5 & + +echo wait 1 +wait + +echo wait 2 +wait + +exit diff --git a/bash-20060316/tests/misc/test-minus-e.1 b/bash-20060316/tests/misc/test-minus-e.1 new file mode 100644 index 000000000..77cc3f26c --- /dev/null +++ b/bash-20060316/tests/misc/test-minus-e.1 @@ -0,0 +1,9 @@ +touch .file +while set -e ; test -r .file ; do + echo -n "stop loop? " + read reply + case "$reply" in + y*) rm .file non-dash-file ;; + esac + set +e +done diff --git a/bash-20060316/tests/misc/test-minus-e.2 b/bash-20060316/tests/misc/test-minus-e.2 new file mode 100644 index 000000000..f66966eba --- /dev/null +++ b/bash-20060316/tests/misc/test-minus-e.2 @@ -0,0 +1,11 @@ +touch .file +set -e +while set +e ; test -r .file ; do + echo -n "stop loop? [yes to quit] " + read reply + if [ "$reply" = yes ] ; then + rm .file non-dash-file + fi + set -e +done +rm -f .file diff --git a/bash-20060316/tests/misc/test.patmatch b/bash-20060316/tests/misc/test.patmatch new file mode 100644 index 000000000..88b563167 --- /dev/null +++ b/bash-20060316/tests/misc/test.patmatch @@ -0,0 +1,15 @@ +# these will work only if test.c has been compiled with -DPATTERN_MATCHING +# to get =~ and !~ + +[ a =\~ a ] && echo OK || echo BAD +[ a !~ b ] && echo OK || echo BAD + +[ a =\~ \* ] && echo OK || echo BAD +[ a =\~ \? ] && echo OK || echo BAD +[ abc !~ \? ] && echo OK || echo BAD + +[ '' =\~ \* ] && echo OK || echo BAD +[ '' !~ \?\* ] && echo OK || echo BAD + +[ a =\~ \[abc] ] && echo OK || echo BAD +[ x !~ \[abc] ] && echo OK || echo BAD diff --git a/bash-20060316/tests/misc/wait-bg.tests b/bash-20060316/tests/misc/wait-bg.tests new file mode 100644 index 000000000..95c98b087 --- /dev/null +++ b/bash-20060316/tests/misc/wait-bg.tests @@ -0,0 +1,25 @@ +#! /bin/bash + +i=0 +while [ $i -lt $1 ] +do + /bin/sh -c "sleep 4; exit 0" & + rv=$? + pid=$! + eval bg_pid_$i=$pid + echo $$: Job $i: pid is $pid rv=$rv + i=$((i + 1)) +done + + + +i=0 +while [ $i -lt $1 ] +do + eval wpid=\$bg_pid_$i + echo Waiting for job $i '('pid $wpid')' + wait $wpid + rv=$? + echo Return value is $rv + i=$((i + 1)) +done diff --git a/bash-20060316/tests/more-exp.right b/bash-20060316/tests/more-exp.right new file mode 100644 index 000000000..91a375cbc --- /dev/null +++ b/bash-20060316/tests/more-exp.right @@ -0,0 +1,214 @@ +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[1] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[1] = +argv[1] = <~> +argv[1] = <~> +argv[1] = <\~> +argv[1] = <\ \~> +argv[1] = <\ \ \~> +argv[1] = +argv[1] = +argv[1] = +argv[1] = <$HOME> +argv[1] = <\ $HOME> +argv[1] = <\ \ $HOME> +argv[1] = <'bar'> +argv[1] = <'bar'> +argv[1] = <*@> +argv[1] = <*@> +argv[1] = <*@> +argv[1] = <*@> +argv[1] = <*@*> +argv[1] = <*@*> +argv[1] = <*@*> +argv[1] = <*@*> +argv[1] = +argv[1] = +argv[1] = <4> +argv[2] = <2> +argv[1] = <1> +argv[1] = +argv[1] = <2> +argv[1] = +argv[1] = <2> +argv[1] = <4> +argv[1] = <--\> +argv[2] = <--> +argv[1] = <--\^J--> +argv[1] = <--+\> +argv[2] = <+--> +argv[1] = <--+\^J+--> +argv[1] = <-+\> +argv[2] = <+-\> +argv[3] = <-> +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = <> +argv[1] = <> +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = <> +argv[1] = <> +argv[1] = +argv[1] = +argv[1] = <> +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = <^?> +argv[1] = <^?> +argv[1] = +argv[1] = +argv[1] = <> +argv[2] = +argv[3] = +argv[1] = <> +argv[2] = +argv[3] = <> +argv[1] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +./more-exp.tests: line 272: abc=def: command not found +argv[1] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[1] = +argv[1] = +argv[1] = <\a> +argv[1] = <\a> +argv[1] = <\a> +argv[1] = <\a> +argv[1] = <\\a> +argv[1] = +argv[1] = <\a> +argv[1] = <\a> +argv[1] = <\a> +argv[1] = <\a> +argv[1] = <\\a> +argv[1] = +argv[1] = +argv[1] = <\a> +argv[1] = <\a> +argv[1] = <\a> +argv[1] = <\a> +argv[1] = <$a> +argv[1] = <\foo> +argv[1] = <$a> +argv[1] = <\foo> +argv[1] = <\$a> +argv[1] = <\\$a> +argv[1] = +argv[1] = +argv[1] = <\a> +argv[1] = <\a> +argv[1] = <\a> +argv[1] = <\a> +argv[1] = +argv[2] = <{> +argv[3] = +argv[4] = +argv[5] = <}> +argv[1] = +argv[2] = +argv[3] = <}> +argv[1] = +Number of args: 0 +<${*-x}>: +<${@-x}>: +Number of args: 1 +<${*-x}>: <> +<${@-x}>: <> +Number of args: 2 +<${*-x}>: < > +<${@-x}>: < > +argv[1] = <5> +argv[1] = <5> +argv[1] = <5> +argv[1] = <5> +argv[1] = <5> +argv[1] = <0> +argv[1] = <0> +argv[1] = <0> +argv[1] = <0> +argv[1] = <0> +argv[1] = <0> +argv[1] = +argv[1] = +argv[1] = <2> +argv[1] = <0> +argv[1] = <0> +argv[1] = <1> +argv[1] = <5> +argv[1] = <5> +argv[1] = <0> +./more-exp.tests: line 423: ${#:}: bad substitution +./more-exp.tests: line 425: ${#/}: bad substitution +./more-exp.tests: line 427: ${#%}: bad substitution +./more-exp.tests: line 429: ${#=}: bad substitution +./more-exp.tests: line 431: ${#+}: bad substitution +./more-exp.tests: line 433: ${#1xyz}: bad substitution +./more-exp.tests: line 436: #: %: syntax error: operand expected (error token is "%") +argv[1] = <0> +argv[1] = +argv[1] = <+> +argv[1] = <+> +argv[1] = <+> +argv[1] = +argv[2] = +argv[3] = <}> +argv[1] = +argv[2] = +argv[3] = <}> +argv[1] = +argv[2] = +1 +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <:a:> +argv[1] = <:b:> +argv[1] = <> +argv[1] = <> diff --git a/bash-20060316/tests/more-exp.tests b/bash-20060316/tests/more-exp.tests new file mode 100644 index 000000000..4a3cb7f54 --- /dev/null +++ b/bash-20060316/tests/more-exp.tests @@ -0,0 +1,504 @@ +expect() +{ + echo expect "$@" +} + +tool_var() { + eval $1=\"\${$1:-$2}\" + export $1 +} + +A="aaa bbb ccc" + +unset B + +tool_var B ${B:-"$A"} + +expect '' +recho "$A" +expect '' +recho "$B" + +eto_prepend() { + eval $1=\'$2\''${'$1':+":"${'$1'}}'; export $1 +} + +foo=bar; export foo +eto_prepend foo baz +expect '' +recho $foo +expect '' +recho ${foo-"bar"} + +aa='aaa bbb ccc' + +expect '' +recho ${zzz-"$aa"} +expect '' +recho ${zzz:-"bar"} +expect '' +recho "${zzz:-bar}" +expect '' +recho "${zzz:-"bar"}" + +var=abcde +expect '' +recho "${var:-xyz}" +expect '' +recho "${var:=xyz}" +expect '' +recho "${var:+xyz}" + +set 'a b' c d e f +expect ' ' +recho ${1+"$@"} +expect '' +recho "${1-"$@"}" +expect ' ' +recho ${1-"$@"} +expect ' ' +recho "${1+$@}" +expect ' ' +recho "${1+"$@"}" + +HOME=/usr/homes/chet +somevar= +expect "<$HOME>" +recho ${somevar:-~} +# This changed after bash-3.0, when the tilde implementation was redone. It's +# not backward compatible, but it's very hard to be backward-compatible here, +# and I think the old behavior was a bug +expect '<~>' +recho "${somevar:-~}" +expect '<~>' +recho "${somevar:-"~"}" +expect '<\~>' +recho "${somevar:-\~}" +expect '<\ \~>' +recho "${somevar:-\ \~}" +expect '<\ \ \~>' +recho "${somevar:-\ \ \~}" + +expect "<$HOME>" +recho ${somevar:-$HOME} +expect "<$HOME>" +recho "${somevar:-$HOME}" +expect "<$HOME>" +recho "${somevar:-"$HOME"}" +expect '<$HOME>' +recho "${somevar:-\$HOME}" +expect '<\ $HOME>' +recho "${somevar:-\ \$HOME}" +expect '<\ \ $HOME>' +recho "${somevar:-\ \ \$HOME}" + +foo=bar +expect "<'bar'>" +recho "${foo+'$foo'}" +expect "<'bar'>" +recho "${fox='$foo'}" + +P='*@*' +expect '<*@>' +recho "${P%"*"}" +expect '<*@>' +recho "${P%'*'}" + +expect '<*@>' +recho ${P%"*"} +expect '<*@>' +recho ${P%'*'} + +expect '<*@*>' +recho ${P%""} +expect '<*@*>' +recho ${P#""} + +expect '<*@*>' +recho ${P#"$foobar"} +expect '<*@*>' +recho ${P%"$foobar"} + +s1=abcdefghijkl +s2=efgh + +first=${s1/$s2*/} +expect '' +recho $first + +last=${s1##$first} +expect '' +recho $last + +shift $# +UNAME_RELEASE=${1:-4.2MP} + +RELEASE=`expr "$UNAME_RELEASE" : '[^0-9]*\([0-9]*\)'` # 4 +case "$RELEASE" in +"") RELEASE=0 ;; +*) RELEASE=`expr "$RELEASE" + 0` ;; +esac +REL_LEVEL=`expr "$UNAME_RELEASE" : '[^0-9]*[0-9]*.\([0-9]*\)'` # 1 +REL_SUBLEVEL=`expr "$UNAME_RELEASE" : '[^0-9]*[0-9]*.[0-9]*.\([0-9]*\)'` # 2 + +expect '<4> <2>' +recho $RELEASE $REL_LEVEL $REL_SUBLEVEL + +b1() +{ + b2 ${1+"$@"} +} + +b2() +{ + recho $* + recho $# +} + +expect '<1>' +b1 '' + +expect ' <2>' +b1 bar '' + +expect ' <2>' +b1 '' bar + +expect '<4>' +b1 '' '' '' '' + +NL="\\ +" + +NNL="+$NL+" + +expect '<--\> <-->' +recho --$NL-- +expect '<--\^J-->' +recho "--$NL--" + +expect '<--+\> <+-->' +recho --$NNL-- +expect '<--+\^J+-->' +recho "--$NNL--" + +expect '<-+\> <+-\> <->' +recho -$NNL-$NL- + +set '' +expect '' +recho "$*xy" +expect '' +recho "x$*y" +expect '' +recho "xy$*" +expect '' +recho x"$*"y +expect '' +recho xy"$*" +expect '' +recho "$*"xy +expect '<>' +recho "$*" +expect nothing +recho $* + +unset undef ; set "" + +expect '<>' +recho ${undef-"$*"} +expect '' +recho ${undef-"x$*y"} +expect '' +recho ${undef-"$*xy"} +expect '' +recho ${undef-"xy$*"} +expect '' +recho ${undef-x"$*"y} +expect '' +recho ${undef-xy"$*"} +expect '' +recho ${undef-"$*"xy} +expect '<>' +recho "${undef-$*}" +expect nothing +recho ${undef-$*} + +expect '<>' +recho ${undef-"$zzz"} +expect '' +recho x${undef-"$zzz"} +expect '' +recho x${undef-"$@"} +expect nothing +recho ${undef-"$@"} +expect '' +recho ${undef-"$zzz"}x +expect '' +recho ${undef-"$@"}x +expect '' +recho "$@"x +expect '' +recho "$zzz"x +expect '<^?>' +recho ${undef-} +expect '<^?>' +recho ${undef-""} + +yyy="" +recho "$xxx"x +recho "$yyy"x + +set "" "abd" "" +recho "$@"x +recho "$@"$xxx + +OIFS="$IFS" + +arg=a,b,c,d,e,f + +IFS=, + +export z=$arg + +eval z1=\"$arg\" + +IFS="$OIFS" + +recho $z +recho $z1 + +# should give an error +abc\=def + +zz="a b c d e" +declare a=$zz + +recho "$a" +recho $a + +recho $(echo "foo$(echo ")")") + +# test backslash escapes + +recho \a +recho \\a + +recho "\a" +recho "\\a" + +recho '\a' +recho '\\a' + +recho $(zecho \a) +recho $(zecho \\a) + +recho $(zecho "\a") +recho $(zecho "\\a") + +recho $(zecho '\a') +recho $(zecho '\\a') + +recho `zecho \a` +recho `zecho \\a` + +recho `zecho "\a"` +recho `zecho "\\a"` + +recho `zecho '\a'` +recho `zecho '\\a'` + +a=foo + +recho \$a +recho \\$a + +recho "\$a" +recho "\\$a" + +recho '\$a' +recho '\\$a' + +recho $(zecho `zecho \a`) +recho $(zecho `zecho \\a`) + +recho $(zecho `zecho "\a"`) +recho $(zecho `zecho "\\a"`) + +recho $(zecho `zecho '\a'`) +recho $(zecho `zecho '\\a'`) + +# should echo G { I K } +recho ${abc:-G { I } K } + +abc=hi + +# should echo hi K } +recho ${abc:-G { I } K } + +# should echo a* +unset foo +recho "${foo:-"a"}*" + +f () +{ + echo "Number of args: $#" + echo "<\${*-x}>: <${*-x}>" + echo "<\${@-x}>: <${@-x}>" +} + +f +f '' +f '' '' + +set 1 2 3 4 5 + +expect '<5>' +recho ${#} +expect '<5>' +recho ${#:foo} +expect '<5>' +recho ${#:-foo} +expect '<5>' +recho ${#-posparams} +expect '<5>' +recho ${#:-posparams} + +expect '<0>' +recho ${#!} + +expect nothing +recho $! +expect nothing +recho ${!} + +expect nothing +recho $8 +expect nothing +recho ${8} + +shift $# + +expect '<0>' +recho ${#} +expect '<0>' +recho ${#:foo} +expect '<0>' +recho ${#:-foo} +expect '<0>' +recho ${#-posparams} +expect '<0>' +recho ${#:-posparams} + +expect '' +recho ${!-posparams} +expect '' +recho ${!:-posparams} + +expect '<2>' +recho ${#-} + +expect '<0>' +recho ${#-posparams} + +expect '<0>' +recho ${#?:-xyz} + +expect '<1>' +recho ${#?} + +set a b c d e + +expect '<5>' +recho ${#} +expect '<5>' +recho ${#?:-xyz} + +shift $# + +expect '<0>' +recho ${#:-foo} + +expect a bad substitution error +recho ${#:} +expect a bad substitution error +recho ${#/} +expect a bad substitution error +recho ${#%} +expect a bad substitution error +recho ${#=} +expect a bad substitution error +recho ${#+} +expect a bad substitution error +recho ${#1xyz} + +expect a math syntax error +recho ${#:%} + +expect '<0>' +recho ${#:-} + +set -- +unset a b + +x=a +y=b + +IFS=+ + +expect '' +recho $x+$y +expect '<+>' +recho $a+$b + +expect '<+>' +recho + "$@" +expect '<+>' +recho +"$@" + +# variants of nested curly braces inside ${...} expressions + +# IFS is not the standard one + +expect '' '' '<}>' +recho ${gik:-G { I } K } + +abc=hi + +expect '' '' '<}>' +recho ${abc:-G { I } K } + +# reset IFS to the default +IFS=' +' + +# nested ${...} inside ${...} are handled specially +unset XXX FOO BAR +expect '' '' +XXX=xxx +FOO=${BAR:-${XXX} yyy} +recho $FOO + +# this was a bug in versions of bash prior to bash-2.04-release +set -- '' +expect 1 +echo $# +expect '<>' +recho "${@}" +expect '<>' +recho "${@-}" +expect '<>' +recho "${@:-}" + +# this was a bug in bash-2.04, fixed in 2.05 +set -- a b +expect '<:a:>' '<:b:>' +for i in "${@-}"; do recho :$i:; done + +# I believe that ksh93 does these wrong -- we're using the rhs, so shouldn't +# it behave the same as ""? +set -- +expect '<>' +recho "${@-}" +expect '<>' +recho "${@:-}" diff --git a/bash-20060316/tests/new-exp.right b/bash-20060316/tests/new-exp.right new file mode 100644 index 000000000..9136132d5 --- /dev/null +++ b/bash-20060316/tests/new-exp.right @@ -0,0 +1,505 @@ +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +./new-exp.tests: line 24: HOME: }: syntax error: operand expected (error token is "}") +unset +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = <*@> +argv[1] = <*@> +argv[1] = <@*> +argv[1] = <)> +argv[1] = <")"> +argv[1] = <-abcd> +argv[2] = <-> +argv[1] = <-abcd> +argv[2] = <-> +argv[1] = <-abcd-> +bar foo +bar foo +bar foo +barfoo +barfoo +\x +argv[1] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[3] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = <4> +argv[1] = +argv[1] = +argv[1] = +./new-exp.tests: line 172: ABX: unbound variable +./new-exp.tests: line 176: $6: cannot assign in this way +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[1] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[1] = +argv[1] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = + +This +string +has +multiple +lines. +This-string-has-multiple-lines. +this is a test of proc subst +this is test 2 +./new-exp2.sub: line 31: /tmp/bashtmp.x*: No such file or directory +./new-exp2.sub: line 35: /tmp/redir-notthere: No such file or directory +1 +argv[1] = <6> +./new-exp.tests: line 277: ${#:}: bad substitution +argv[1] = <'> +argv[1] = <"> +argv[1] = <"hello"> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[2] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = <"2 3"> +argv[1] = <"2:3"> +argv[1] = <"34"> +argv[1] = <"3456"> +argv[1] = <"3456"> +argv[1] = <"3456"> +argv[1] = <^A> +argv[2] = <^B> +argv[3] = <^?> +argv[1] = <^A> +argv[2] = <^B> +argv[3] = <^?> +argv[1] = <^A> +argv[2] = <^B> +argv[3] = <^?> +argv[1] = <^A> +argv[2] = <^B> +argv[3] = <^?> +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +./new-exp.tests: line 421: -2: substring expression < 0 +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[7] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[7] = +argv[8] = +argv[9] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[7] = +argv[8] = +argv[9] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[7] = +argv[8] = +argv[9] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[7] = +argv[8] = +argv[9] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[7] = +argv[8] = +argv[9] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[7] = +argv[8] = +argv[9] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[7] = +argv[8] = +argv[9] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[7] = +argv[8] = +argv[9] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[7] = +argv[8] = +argv[9] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[7] = +argv[8] = +argv[9] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[7] = +argv[8] = +argv[9] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[7] = +argv[8] = +argv[9] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[7] = +argv[8] = +argv[9] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[7] = +argv[8] = +argv[9] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[7] = +argv[8] = +argv[9] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[7] = +argv[8] = +argv[9] = +./new-exp.tests: line 480: $9: unbound variable +./new-exp.tests: line 481: 9: unbound variable +./new-exp.tests: line 482: UNSET: unbound variable +./new-exp.tests: line 483: UNSET: unbound variable +./new-exp.tests: line 484: UNSET: unbound variable +./new-exp.tests: line 485: UNSET: unbound variable +./new-exp.tests: line 486: UNSET: unbound variable +argv[1] = <5> +argv[1] = <#> +argv[1] = <#> +argv[1] = <> +argv[1] = <_QUANTITY> +argv[2] = <_QUART> +argv[3] = <_QUEST> +argv[4] = <_QUILL> +argv[5] = <_QUOTA> +argv[6] = <_QUOTE> +argv[1] = <_QUANTITY> +argv[2] = <_QUART> +argv[3] = <_QUEST> +argv[4] = <_QUILL> +argv[5] = <_QUOTA> +argv[6] = <_QUOTE> +argv[1] = <_QUANTITY-_QUART-_QUEST-_QUILL-_QUOTA-_QUOTE> +./new-exp3.sub: line 19: ${!_Q* }: bad substitution +./new-exp3.sub: line 24: ${!1*}: bad substitution +./new-exp3.sub: line 26: ${!@*}: bad substitution +Case01---3---A:B:C--- +Case02---1---A B C::--- +Case03---3---A:B:C--- +Case04---3---A:B:C--- +Case05---3---A:B:C--- +Case06---1---A B C::--- +Case07---3---A:B:C--- +Case08---3---A:B:C--- +./new-exp.tests: line 506: /${$(($#-1))}: bad substitution +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[7] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[1] = +argv[1] = +argv[2] = +argv[1] = <> +./new-exp.tests: line 525: $(($# - 2)): substring expression < 0 +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = <.> +argv[6] = +argv[7] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = <.> +argv[6] = +argv[7] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = <.> +argv[6] = +argv[7] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +two +one +ne +one + +one +one +one +1 2 3 4 5 6 7 8 9 +9 +9 +0 +9 +8 9 +123456789 +9 +9 +h +h +--blah +--blah +lah +lah +./new-exp.tests: line 558: ABXD: parameter unset diff --git a/bash-20060316/tests/new-exp.tests b/bash-20060316/tests/new-exp.tests new file mode 100644 index 000000000..5932ed360 --- /dev/null +++ b/bash-20060316/tests/new-exp.tests @@ -0,0 +1,558 @@ +# must do this because posix mode causes process substitution to be disabled +# and flagged as a syntax error, which causes the shell to exit +set +o posix + +expect() +{ + echo expect "$@" +} + +HOME=/usr/homes/chet # to make the check against new-exp.right work +expect '' +recho "${undef-"foo bar"}" # should be foo bar +expect '' +recho "${und="foo"}" # should be foo + +expect "<$HOME>" +recho ${HOME-"}"} +expect "<$HOME>" +recho "${HOME-'}'}" +expect "<$HOME>" +recho "${HOME-"}"}" + +expect $0: 'HOME: }: syntax error: operand expected (error token is "}")' +recho "${HOME:`echo }`}" # should be a math error -- bad substring substitution + +expect unset +_ENV=oops +x=${_ENV[(_$-=0)+(_=1)-_${-%%*i*}]} +echo ${x:-unset} + +expect "<$HOME>" +recho ${HOME} +expect "<$HOME>" +recho ${HOME:-`echo }`} +expect "<$HOME>" +recho ${HOME:-`echo "}"`} +expect "<$HOME>" +recho "${HOME:-`echo "}"`}" +expect "<$HOME>" +recho "$(echo "${HOME}")" +expect "<$HOME>" +recho "$(echo "$(echo ${HOME})")" +expect "<$HOME>" +recho "$(echo "$(echo "${HOME}")")" + +P=*@* +expect '<*@>' +recho "${P%"*"}" # +expect '<*@>' +recho "${P%'*'}" # +expect '<@*>' +recho "${P#\*}" # should be @* + +expect '<)>' +recho "$(echo ")")" # should be ) +expect '<")">' +recho "$(echo "\")\"")" # should be ")" + +foo='abcd ' +expect '<-abcd> <->' +recho -${foo}- # should be -abcd - +expect '<-abcd> <->' +recho -${foo% *}- # should be -abcd - +expect '<-abcd->' +recho -${foo%% *}- # should be -abcd- + +foo=bar +expect '' +echo -n $foo' ' ; echo foo + +expect '' +echo -n $foo" " ; echo foo + +expect '' +echo -n "$foo " ; echo foo + +expect '' +echo -e "$foo\c " ; echo foo + +expect '' +echo -e $foo"\c " ; echo foo + +# make sure backslashes are preserved in front of characters that are not +# valid backslash escapes +expect '<\x>' +echo -e '\x' + +# substring tests +z=abcdefghijklmnop +expect '' +recho ${z:0:4} + +expect ' ' +recho ${z:4:3} ${z:${#z}-3:3} + +expect ' ' +recho ${z:4:3} ${z: -3:3} + +expect '' +recho ${z:7:30} + +expect '' +recho ${z:0:100} + +expect '' +recho ${z:0:${#z}} + +set 'ab cd' 'ef' 'gh ij' 'kl mn' 'op' +expect ' ' +recho "${@:1:2}" + +expect ' ' +recho "${@:3:2}" + +expect ' ' +recho "${@:3:4}" + +expect ' ' +recho "${@:1:$#}" + +# code to ad-hoc parse arithmetic expressions in substring expansions was +# broken until post-2.04 +base=/home/chet/foo//bar +string1=$base/abcabcabc +x=1 j=4 + +expect '' +recho ${string1:0} + +expect '' +recho ${string1:1} + +expect '' +recho ${string1:(j?1:0):j} + +expect '' +recho ${string1:j?1:0:j} + +expect '' +recho ${string1:(j?(x?1:0):0):j} + +expect '' +recho ${string1:j?(x?1:0):0:j} + +unset base string1 x j + +# indirect variable references +expect '' +recho ${!9:-$z} + +ef=4 +expect '<4>' +recho ${!2} + +expect '' +recho ${!#} + +set a b c d e +a= +expect '' +recho ${a:-$z} +expect '' +recho ${!1:-$z} + +expect nothing +recho ${a-$z} +expect nothing +recho ${!1-$z} + +set -u +expect $0: ABX: unbound variable +( recho ${ABX} ) +set +u + +expect $0: '$6: cannot assign in this way' +recho ${6="arg6"} + +v=abcde + +# sed-like variable substitution +expect '' +recho ${v/a[a-z]/xx} +expect '' +recho ${v/a??/axx} +expect '' +recho ${v/c??/xyz} +expect '' +recho ${v/#a/ab} +expect '' +recho ${v/#d/ab} +expect '' +recho ${v/d/ab} +expect '' +recho ${v/%?/last} +expect '' +recho ${v/%x/last} + +av=(abcd efgh ijkl mnop qrst uvwx) + +expect '' +recho ${av/??/xx} +expect '' +recho ${av/%??/xx} +expect '' +recho ${av[1]/??/xx} +expect '' +recho ${av[1]/%ab/xx} +expect '' +recho ${av[1]/#?/xx} +expect '' +recho ${av[1]/??/za} +expect '' +recho ${av[1]//??/za} +expect '' +recho ${av[1]/#??/za} +expect '' +recho ${av[1]/%??/za} + +expect ' ' +recho ${av[@]/*/yyy} +expect ' ' +recho ${av[@]/#*/yyy} +expect ' ' +recho ${av[@]/%*/yyy} +expect ' ' +recho ${av[@]/a*/yyy} +expect ' ' +recho ${av[@]/%??/xx} + +set abcd efgh ijkl mnop qrst uvwx + +expect '' +recho ${1/??/xx} +expect ' ' +recho ${@/??/xx} +expect ' ' +recho ${@/%??/xx} +expect '' +recho ${3//??/za} +expect '' +recho ${3/%??/za} +expect ' ' +recho ${@//??/za} +expect ' ' +recho ${@/#??/za} +expect ' ' +recho ${@//*/yyy} +expect ' ' +recho ${@//a*/yyy} +expect ' ' +recho ${@/%x*/yyy} + +expect a newline +echo $abmcde + +# sneaky way to replace a newline in a variable value with something else +AVAR=$'This\nstring\nhas\nmultiple\nlines.' +echo "${AVAR}" + +eval BVAR=\"\${AVAR//$'\n'/-}\" +echo "$BVAR" + +unset AVAR BVAR + +# run process substitution tests in a subshell so that syntax errors +# caused by a shell not implementing process substitution (e.g., one +# built on a NeXT) will not cause the whole test to exit prematurely +${THIS_SH} ./new-exp1.sub + +# run the tests of $(' +recho ${#:-foo} +expect $0: '${#:}: bad substitution' +echo ${#:} + +expect "<'>" +recho "'" +expect '<">' +recho '"' +expect '<"hello">' +recho "\"hello\"" + +shift $# +unset foo +z=abcdef +z1='abc def' + +expect '<>' +recho ${foo:-""} +expect nothing +recho ${foo:-"$@"} +expect '<>' +recho "${foo:-$@}" + +# unset var +expect '<>' +recho ${foo:-"$zbcd"} +expect nothing +recho ${foo:-$zbcd} + +# set var +expect '' +recho ${foo:-"$z"} +expect '' +recho ${foo:-"$z1"} + +expect '' +recho ${foo:-$z} +expect ' ' +recho ${foo:-$z1} + +expect '' +recho "${foo:-$z}" +expect '' +recho "${foo:-$z1}" + +expect '' +recho "${foo:-"$z"}" +# this disagrees with sh and ksh, but I think it is right according +# to posix.2. +expect '' +recho "${foo:-"$z1"}" + +set ab cd ef gh +expect ' ' +recho ${foo:-"$@"} +expect ' ' +recho "${foo:-$@}" +expect ' ' +recho "${foo:-"$@"}" + +shift $# +expect nothing +recho $xxx"$@" +expect nothing +recho ${foo:-$xxx"$@"} +expect '<>' +recho "${foo:-$xxx$@}" +expect '<>' +recho "${foo:-$xxx"$@"}" + +expect nothing +recho $xxx"$@" +expect nothing +recho "$xxx$@" +expect nothing +recho "$@"$xxx + +expect '<>' +recho $xxx"" +expect '<>' +recho $xxx'' +expect '<>' +recho ''$xxx +expect '<>' +recho ""$xxx + +AB='abcdefghijklmnopqrstuvwxyz' + +recho ${AB:7:15} +recho ${AB:15:7} + +recho ${AB:20} + +recho ${AB:0} +recho ${AB:0:20} + +recho ${AB:10:7} +recho ${AB:10:3+4} +recho ${AB:20/2:3+4} + +set 1 2 3 4 5 6 +recho \""${*:2:2}"\" + +IFS=: +recho \""${*:2:2}"\" + +IFS=$' \t\n' + +z=123456 + +recho \""${z:2:2}"\" +recho \""${z:2}"\" +recho \""${z:2:4}"\" +recho \""${z:2:6}"\" + +set $'\1' $'\2' $'\177' + +recho $* +recho $@ + +recho ${*} +recho ${@} + +xx=one/two/two +recho ${xx%/*} +recho ${xx/\/two} + +yy=oneonetwo +recho ${yy//one} +recho ${yy/\/one} + +xx=oneonetwo + +recho ${xx/one} +recho ${xx//one} +recho ${xx/\/one} + +# out-of-range substrings +var=abc +c=${var:3} +expect nothing +recho $c +c=${var:4} +expect nothing +recho $c +expect '<./new-exp.tests: -2: substring expression < 0>' +c=${var:0:-2} + +var=abcdefghi +c=${var:3:12} +recho $c +c=${var:4:20} +recho $c + +# make sure null patterns work +xxx=endocrine +yyy=n +unset zzz + +recho ${xxx/$yyy/*} +recho ${xxx//$yyy/*} + +recho ${xxx/$zzz/*} +recho ${xxx//$zzz/*} + +recho ${xxx//%${zzz}/} +recho ${xxx//%${zzz}} +recho ${xxx//#${zzz}/} +recho ${xxx//#${zzz}} + +# another case that caused a core dump in bash-2.0 +XPATH=/usr/bin:/bin:/usr/local/bin:/usr/gnu/bin::/usr/bin/X11:/sbin:/usr/sbin + +recho ${XPATH//:/ } + +xx=(ar as at au av aw ax ay az) + +recho ${xx[@]/a/} +recho ${xx[@]//a/} + +recho ${xx[*]/a/} +recho ${xx[*]//a/} + +recho ${xx[@]%?} +recho ${xx[*]%?} + +recho ${xx[@]#?} +recho ${xx[*]#?} + +set -- ar as at au av aw ax ay az + +recho ${@/a/} +recho ${@//a/} + +recho ${*/a/} +recho ${*//a/} + +recho ${@%?} +recho ${*%?} + +recho ${@#?} +recho ${*#?} + +shift $# +set -u +( recho $9 ; echo after 1) +( recho ${9} ; echo after 2) +( recho $UNSET ; echo after 3) +( recho ${UNSET} ; echo after 4) +( recho "$UNSET" ; echo after 5) +( recho "${UNSET}" ; echo after 6) +( recho "${#UNSET}" ; echo after 7) +set +u + +RECEIVED="12345" +recho "${RECEIVED:$((${#RECEIVED}-1)):1}" +RECEIVED="12345#" +recho "${RECEIVED:$((${#RECEIVED}-1)):1}" +RECEIVED="#" +recho "${RECEIVED:$((${#RECEIVED}-1)):1}" +RECEIVED="" +recho "${RECEIVED:$((${#RECEIVED}-1)):1}" + +# tests of new prefix expansion ${!prefix*} +${THIS_SH} ./new-exp3.sub + +# bug with indirect expansion through bash-2.05b +${THIS_SH} ./new-exp4.sub + +# these caused errors and core dumps in versions before bash-2.04 +c="" +echo ${c//${$(($#-1))}/x/} + +set a b c d e f g +recho "$@" + +set -- ${@:1:$(($# - 2))} +recho "$@" + +set a b +recho ${@:1:$(($# - 2))} + +recho ${@:1:0} +recho ${@:1:1} +recho ${@:1:2} + +recho "${*:1:0}" + +# this is an error -- negative expression +set a +recho ${@:1:$(($# - 2))} + +XPATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:.:/sbin:/usr/sbin +set $( IFS=: ; echo $XPATH ) + +recho ${@##*/} +recho ${@%%[!/]*} + +recho ${@#/*} +recho ${@%*/} + +set /full/path/to/x16 /another/full/path + +recho ${1%/*} +recho ${1%%[!/]*} +recho ${1#*/} +recho ${1##*/} + +${THIS_SH} ./new-exp5.sub + +unset var +var=blah + +# these had better agree +echo ${var[@]:3} +echo ${var:3} +echo ${var[@]/#/--} +echo ${var/#/--} +echo ${var[@]##?} +echo ${var##?} + +# this must be last! +expect $0: 'ABXD: parameter unset' +recho ${ABXD:?"parameter unset"} diff --git a/bash-20060316/tests/new-exp1.sub b/bash-20060316/tests/new-exp1.sub new file mode 100644 index 000000000..c015c2239 --- /dev/null +++ b/bash-20060316/tests/new-exp1.sub @@ -0,0 +1,11 @@ +expect() +{ + echo expect "$@" +} + +expect this is a test of proc subst +cat <(echo this is a test of proc subst) +echo this is test 2 > /tmp/x +expect this is test 2 +cat <(cat /tmp/x) +rm -f /tmp/x diff --git a/bash-20060316/tests/new-exp2.sub b/bash-20060316/tests/new-exp2.sub new file mode 100644 index 000000000..5e922aac6 --- /dev/null +++ b/bash-20060316/tests/new-exp2.sub @@ -0,0 +1,36 @@ +export LC_ALL=C +export LANG=C + +# test out the new $(< filename) code +# it should be exactly equivalent to $(cat filename) + +FILENAME=/tmp/bashtmp.x$$ + +trap 'rm -f $FILENAME' 0 + +cat >$FILENAME << EOF +line 1 +line 2 +line 3 +EOF + +LINES1=$(cat $FILENAME) +LINES2=$(< $FILENAME) + +if [[ $LINES1 != $LINES2 ]]; then + echo 'whoops: $(< filename) failed' +fi + +LINES2=$(< /tmp/bashtmp.x*) +if [[ $LINES1 != $LINES2 ]]; then + echo 'whoops: $(< filename) with glob expansion failed' +fi + +# but the glob expansion in the redirection should fail in posix mode +set -o posix +LINES2=$(< /tmp/bashtmp.x*) +set +o posix + +# now see what happens when we try it with a non-existant file +LINES3=$(< /tmp/redir-notthere) +echo $? diff --git a/bash-20060316/tests/new-exp3.sub b/bash-20060316/tests/new-exp3.sub new file mode 100644 index 000000000..3107ef14a --- /dev/null +++ b/bash-20060316/tests/new-exp3.sub @@ -0,0 +1,26 @@ +: +# Set up some dummy variables beginning with _Q +_QUANTITY= +_QUOTA= +_QUOTE= +_QUILL= +_QUEST= +_QUART= + +recho ${!_Q*} + +IFS="-$IFS" + +recho ${!_Q*} +recho "${!_Q*}" + +recho ${!_Y*} + +recho "${!_Q* }" + +IFS=$' \t\n' + +set a b c d e f g h i j k l m n o p +recho ${!1*} + +recho ${!@*} diff --git a/bash-20060316/tests/new-exp4.sub b/bash-20060316/tests/new-exp4.sub new file mode 100644 index 000000000..45439a060 --- /dev/null +++ b/bash-20060316/tests/new-exp4.sub @@ -0,0 +1,31 @@ +#!/bin/bash + +arrayA=("A" "B" "C") + +arrayB=( ${arrayA[*]} ) +echo "Case01---${#arrayB[*]}---${arrayB[0]}:${arrayB[1]}:${arrayB[2]}---" + +arrayB=( "${arrayA[*]}" ) +echo "Case02---${#arrayB[*]}---${arrayB[0]}:${arrayB[1]}:${arrayB[2]}---" + +arrayB=( ${arrayA[@]} ) +echo "Case03---${#arrayB[@]}---${arrayB[0]}:${arrayB[1]}:${arrayB[2]}---" + +arrayB=( "${arrayA[@]}" ) +echo "Case04---${#arrayB[@]}---${arrayB[0]}:${arrayB[1]}:${arrayB[2]}---" + +xx="arrayA[*]" + +arrayB=( ${!xx} ) +echo "Case05---${#arrayB[*]}---${arrayB[0]}:${arrayB[1]}:${arrayB[2]}---" + +arrayB=( "${!xx}" ) +echo "Case06---${#arrayB[*]}---${arrayB[0]}:${arrayB[1]}:${arrayB[2]}---" + +xx="arrayA[@]" + +arrayB=( ${!xx} ) +echo "Case07---${#arrayB[@]}---${arrayB[0]}:${arrayB[1]}:${arrayB[2]}---" + +arrayB=( "${!xx}" ) +echo "Case08---${#arrayB[@]}---${arrayB[0]}:${arrayB[1]}:${arrayB[2]}---" diff --git a/bash-20060316/tests/new-exp5.sub b/bash-20060316/tests/new-exp5.sub new file mode 100644 index 000000000..9b3e1b350 --- /dev/null +++ b/bash-20060316/tests/new-exp5.sub @@ -0,0 +1,30 @@ +x=(one two) +echo ${x[@]:1} +echo ${x[@]:0:1} + +x=(one) +echo ${x[0]:1} +echo ${x[0]:0} +echo ${x[@]:1} +echo ${x[@]:0} + +echo ${x[@]: -1} +echo ${x[@]: ${#x[@]}-1} + +x=(0 1 2 3 4 5 6 7 8 9) +echo ${x[@]:1} + +echo ${x[@]: -1} +echo ${x[@]: ${#x[@]}-1} + +set -- ${x[@]} + +echo $1 +echo ${@: -1} +echo ${@: $#-1} + +a=0123456789 + +echo ${a:1} +echo ${a: -1} +echo ${a: ${#a}-1} diff --git a/bash-20060316/tests/nquote.right b/bash-20060316/tests/nquote.right new file mode 100644 index 000000000..6d936d5e1 --- /dev/null +++ b/bash-20060316/tests/nquote.right @@ -0,0 +1,37 @@ +argv[1] = <^J^J^J> +argv[1] = <++^J++> +argv[1] = <> +argv[1] = <^J^I > +argv[1] = +argv[1] = <^M^[^Gabc> +argv[1] = +argv[2] = +argv[1] = +argv[1] = <> +argv[1] = <$hello, world> +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = <$hello, chet> +argv[1] = +ok +'abcd' +'abcd' +\'abcd\' +\'abcd\' +argv[1] = +argv[1] = +argv[1] = +A\CB +A\CB +A\CB +argv[1] = +argv[1] = +argv[1] = +argv[1] = +1 +1 +;foo +argv[1] = <^I> +argv[1] = <'A^IB'> diff --git a/bash-20060316/tests/nquote.tests b/bash-20060316/tests/nquote.tests new file mode 100644 index 000000000..62d90b99a --- /dev/null +++ b/bash-20060316/tests/nquote.tests @@ -0,0 +1,116 @@ +expect() +{ + echo expect "$@" +} + +expect '<^J^J^J>' +recho $'\n\n\n' + +expect '<++^J++>' +f=$'\n' +recho "++$f++" +unset f + +z1=$'' +expect '<>' +recho "$z1" + +ZIFS=$'\n'$'\t'$' ' + +expect '<^J^I >' +recho "$ZIFS" + +expect '' +recho $'abc' + +expect '<^M^[^Gabc>' +recho $'\r\e\aabc' + +D=$"hello"," "$"world" + +expect ' ' +recho $D + +expect '' +recho "$D" + +D=$"" +expect '<>' +recho "$D" + +world=chet + +expect '<$hello, world>' +recho \$"hello, world" + +expect '' +recho $"hello, \$world" + +expect '' +recho $"hello, \"world\"" + +expect '' +recho $"hello"', $"world"' + +expect '' +recho $'hello, $"world"' + +expect '<$hello, chet>' +recho \$"hello, $world" + +expect '' +recho $"hello, $world" + +z=$'\v\f\a\b' +case "$z" in +$'\v\f\a\b') echo ok;; +*) echo bad;; +esac + +# Dave Korn says this should be allowed and echo 'abcd' +echo $'\'abcd\'' + +# printf translates \' to ' ... +printf "\'abcd\'\n" + +# but echo -e doesn't +echo -e "\'abcd\'" +echo -e "\\'abcd\\'" + +# and what do we do about unrecognized escape sequences? + +shopt -s xpg_echo + +recho $'A\CB' + +recho "A\CB" + +cde=c +recho $'ab$cde' + +printf "%b\n" 'A\CB' +printf 'A\CB\n' + +echo 'A\CB' + +world=chet + +recho $'hello, $"world"' +recho $'hello, \$"world"' +recho $'hello, $\"world"' + +recho "hello, $"world"" + +# ansi quoting inside double-quoted command subst - bash-3.1 bug +echo $(set -- $'a b'; echo $#) +echo "$(set -- $'a b'; echo $#)" + +echo "$(echo $';foo')" + +args () +{ + for a in "$@";do echo "'$a'";done +} +unset mytab +recho "${mytab:-$'\t'}" +recho "$( args $'A\tB' )" diff --git a/bash-20060316/tests/nquote1.right b/bash-20060316/tests/nquote1.right new file mode 100644 index 000000000..26e16b918 --- /dev/null +++ b/bash-20060316/tests/nquote1.right @@ -0,0 +1,121 @@ +argv[1] = +argv[2] = +argv[3] = <3> +argv[1] = <1> +argv[2] = +argv[3] = <3> +argv[1] = +argv[2] = +argv[3] = <3> +argv[1] = +argv[2] = +argv[3] = <3> +argv[1] = +argv[2] = +argv[3] = <3> +argv[1] = +argv[2] = +argv[3] = <3> +argv[1] = <1> +argv[2] = +argv[3] = <3> +argv[1] = +argv[2] = +argv[3] = <3> +argv[1] = +argv[2] = +argv[3] = <3> +argv[1] = +argv[2] = +argv[3] = <3> +argv[1] = +argv[2] = +argv[3] = <3> +argv[1] = <1> +argv[2] = +argv[3] = <3> +argv[1] = +argv[2] = +argv[3] = <3> +argv[1] = +argv[2] = +argv[3] = <3> +argv[1] = +argv[2] = +argv[3] = <3> +argv[1] = +argv[2] = +argv[3] = <3> +argv[1] = <1> +argv[2] = +argv[3] = <3> +argv[1] = +argv[2] = +argv[3] = <3> +argv[1] = +argv[2] = +argv[3] = <3> +argv[1] = +argv[2] = +argv[3] = <3> +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[3] = +argv[1] = +argv[2] = +argv[3] = +argv[1] = +argv[2] = +argv[3] = +argv[1] = +argv[2] = +argv[3] = +argv[1] = +argv[2] = +argv[3] = +argv[1] = +argv[2] = +argv[1] = +argv[1] = +argv[1] = +^A +^A +^B +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = <^Aw> +argv[1] = +argv[2] = <^Aw> +argv[1] = <@1> +argv[2] = +argv[3] = +argv[1] = <@2> +argv[2] = +argv[3] = diff --git a/bash-20060316/tests/nquote1.tests b/bash-20060316/tests/nquote1.tests new file mode 100644 index 000000000..0970e77c1 --- /dev/null +++ b/bash-20060316/tests/nquote1.tests @@ -0,0 +1,97 @@ +a=$'a\001b' + +set $a + +b=$a +c=$1 +d="$1" + +e=$'uv\001\001wx' + +recho a $a ${#a} +recho 1 $1 ${#1} +recho b $b ${#b} +recho c $c ${#c} +recho d $d ${#d} + +recho a ${a} ${#a} +recho 1 ${1} ${#1} +recho b ${b} ${#b} +recho c ${c} ${#c} +recho d ${d} ${#d} + +recho a "$a" ${#a} +recho 1 "$1" ${#1} +recho b "$b" ${#b} +recho c "$c" ${#c} +recho d "$d" ${#d} + +recho a "${a}" ${#a} +recho 1 "${1}" ${#1} +recho b "${b}" ${#b} +recho c "${c}" ${#c} +recho d "${d}" ${#d} + +set $e + +recho e1 ${e:1:3} +recho e2 "${e:1:3}" +recho e3 ${1:1:3} +recho e4 "${1:1:3}" + +arr[0]=$e +arr[1]=$e + +recho a1 ${arr:0:4} +recho a2 "${arr:0:4}" + +recho a3 ${arr[@]:0:2} +recho a4 "${arr[@]:0:2}" + +set $e $e + +recho p1 ${@:1:2} +recho p2 "${@:1:2}" + +recho p1 ${*:1:2} +recho p2 "${*:1:2}" + +recho $e + +recho 'uvwx' + +f='uvwx' + +recho $f + +echo -en "\01" | cat -v +echo + +huhu() { echo "$1"; }; + +huhu $(echo -en "\01") | cat -v +huhu $(echo -en "\02") | cat -v + +f=$'uv\001w\001xy' + +set $f $f + +recho f1 ${f:1:3} +recho f2 "${f:1:3}" + +arr[0]=$f +arr[1]=$f + +recho a1 ${arr:0:4} +recho a2 "${arr:0:4}" +recho a3 ${arr[0]:0:4} +recho a4 "${arr[0]:0:4}" + +recho e1 ${f:0:4} +recho e2 "${f:0:4}" + +recho d1 ${1:2:2} +recho d2 "${1:2:2}" + +recho @1 ${@:1:2} +recho @2 "${@:1:2}" diff --git a/bash-20060316/tests/nquote2.right b/bash-20060316/tests/nquote2.right new file mode 100644 index 000000000..e7fb21ef3 --- /dev/null +++ b/bash-20060316/tests/nquote2.right @@ -0,0 +1,76 @@ +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = diff --git a/bash-20060316/tests/nquote2.tests b/bash-20060316/tests/nquote2.tests new file mode 100644 index 000000000..c07bd9b82 --- /dev/null +++ b/bash-20060316/tests/nquote2.tests @@ -0,0 +1,82 @@ +a=$'a\001b' + +e=$'uv\001\001wx' + +recho $a +recho $e + +recho ${a/$'\001'/A} +recho "${a/$'\001'/A}" +recho ${e/$'\001'/A} +recho "${e/$'\001'/A}" + +recho ${a/b/B} +recho "${a/b/B}" +recho ${e/w/W} +recho "${e/w/W}" + +recho ${a//$'\001'/A} +recho "${a//$'\001'/A}" +recho ${e//$'\001'/A} +recho "${e//$'\001'/A}" + +recho ${a//b/B} +recho "${a//b/B}" +recho ${e//w/W} +recho "${e//w/W}" + +# pos params pat subst + +set $e $e + +recho ${@/$'\001'/A} +recho "${@/$'\001'/A}" +recho ${@/w/W} +recho "${@/w/W}" + +recho ${@//$'\001'/A} +recho "${@//$'\001'/A}" +recho ${@//w/W} +recho "${@//w/W}" + +arr[0]=$a +arr[1]=$e + +recho ${arr[0]} +recho ${arr[1]} + +recho ${arr[0]/$'\001'/A} +recho "${arr[0]/$'\001'/A}" +recho ${arr[1]/$'\001'/A} +recho "${arr[1]/$'\001'/A}" + +recho ${arr[0]/b/B} +recho "${arr[0]/b/B}" +recho ${arr[1]/w/W} +recho "${arr[1]/w/W}" + +recho ${arr[0]//$'\001'/A} +recho "${arr[0]//$'\001'/A}" +recho ${arr[1]//$'\001'/A} +recho "${arr[1]//$'\001'/A}" + +recho ${arr[0]//b/B} +recho "${arr[0]//b/B}" +recho ${arr[1]//w/W} +recho "${arr[1]//w/W}" + +recho ${arr[@]/$'\001'/A} +recho "${arr[@]/$'\001'/A}" + +recho ${arr[@]/b/B} +recho "${arr[@]/b/B}" +recho ${arr[@]/w/W} +recho "${arr[@]/w/W}" + +recho ${arr[@]//$'\001'/A} +recho "${arr[@]//$'\001'/A}" + +recho ${arr[@]//b/B} +recho "${arr[@]//b/B}" +recho ${arr[@]//w/W} +recho "${arr[@]//w/W}" diff --git a/bash-20060316/tests/nquote3.right b/bash-20060316/tests/nquote3.right new file mode 100644 index 000000000..d01eecca1 --- /dev/null +++ b/bash-20060316/tests/nquote3.right @@ -0,0 +1,60 @@ +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = <^Ab> +argv[1] = <^Ab> +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = <^Awx> +argv[1] = <^Awx> +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = <^Awx> +argv[1] = <^Awx> +argv[1] = +argv[1] = +argv[1] = <^Awx> +argv[1] = <^Awx> +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = <^Awx> +argv[1] = <^Awx> +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = <^Awx> +argv[2] = +argv[1] = <^Awx> +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = <^Awx> +argv[2] = +argv[1] = <^Awx> +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = diff --git a/bash-20060316/tests/nquote3.tests b/bash-20060316/tests/nquote3.tests new file mode 100644 index 000000000..a83ff56d5 --- /dev/null +++ b/bash-20060316/tests/nquote3.tests @@ -0,0 +1,85 @@ +a=$'a\001b' + +set $a + +b=$a +c=$1 +d="$1" + +e=$'uv\001\001wx' +f=$'uv\001w\001xy' + +set $e $e + +recho ${e%%??} +recho "${e%%??}" + +recho ${e%%???} +recho "${e%%???}" + +recho ${a#?} +recho "${a#?}" + +# simple variables + +recho ${f##*$'\001'} +recho "${f##*$'\001'}" +recho ${f##*''} # literal ^A +recho "${f##*'^A'}" # two characters, `^' and `A' + +recho ${e%$'\001'*} +recho "${e%$'\001'*}" +recho ${e#*$'\001'} +recho "${e#*$'\001'}" + +# array members + +arr[0]=$e +arr[1]=$f + +recho ${arr[1]##*$'\001'} +recho "${arr[1]##*$'\001'}" +recho ${arr[1]##*''} # literal ^A +recho "${arr[1]##*'^A'}" # two characters, `^' and `A' + +recho ${arr[0]%$'\001'*} +recho "${arr[0]%$'\001'*}" +recho ${arr[0]#*$'\001'} +recho "${arr[0]#*$'\001'}" + +recho ${arr%$'\001'*} +recho "${arr%$'\001'*}" +recho ${arr#*$'\001'} +recho "${arr#*$'\001'}" + +# positional parameters + +set $e $f + +recho ${2##*$'\001'} +recho "${2##*$'\001'}" +recho ${2##*''} # literal ^A +recho "${2##*''}" # literal ^A +recho ${2##*'^A'} # two characters, `^' and `A' +recho "${2##*'^A'}" # two characters, `^' and `A' + +recho ${1%$'\001'*} +recho "${1%$'\001'*}" +recho ${1#*$'\001'} +recho "${1#*$'\001'}" + +recho ${@%$'\001'*} +recho "${@%$'\001'*}" +recho ${@#*$'\001'} +recho "${@#*$'\001'}" +recho ${@##*''} # literal ^A +recho "${@##*'^A'}" # two characters, `^' and `A' + +# arrays treated as a whole + +recho ${arr[@]%$'\001'*} +recho "${arr[@]%$'\001'*}" +recho ${arr[@]#*$'\001'} +recho "${arr[@]#*$'\001'}" +recho ${arr[@]##*''} # literal ^A +recho "${arr[@]##*'^A'}" # two characters, `^' and `A' diff --git a/bash-20060316/tests/nquote4.right b/bash-20060316/tests/nquote4.right new file mode 100644 index 000000000..1f7ae1703 --- /dev/null +++ b/bash-20060316/tests/nquote4.right @@ -0,0 +1,18 @@ +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = <¼X> +argv[1] = <«cX> +argv[1] = <> +argv[1] = <> +argv[1] = +argv[1] = +argv[1] = <> +argv[1] = <^Abcd> +argv[1] = <Þ> diff --git a/bash-20060316/tests/nquote4.tests b/bash-20060316/tests/nquote4.tests new file mode 100644 index 000000000..ed7346770 --- /dev/null +++ b/bash-20060316/tests/nquote4.tests @@ -0,0 +1,24 @@ +recho $'ab\x{}cd' +recho $'ab\x{41}cd' +recho $'ab\x41cd' + +recho $'ab\x{4}cd' +recho $'ab\x4cd' + +recho $'ab\x{cde' + +recho $'ab\x{cde' +recho $'ab\x{cd}e' +recho $'ab\x{c}de' + +recho $'\x{abcX' +recho $'\x{ab}cX' +recho $'\x{}X' +recho $'\x{X' +recho $'\x{01234567X' + +recho $'\x{41}b' +recho $'\x{}bc' +recho $'\x{1}bcd' + +recho $'\x{bde' diff --git a/bash-20060316/tests/posix-ifs.sh b/bash-20060316/tests/posix-ifs.sh new file mode 100644 index 000000000..cf9a89874 --- /dev/null +++ b/bash-20060316/tests/posix-ifs.sh @@ -0,0 +1,257 @@ +# Usage: $SHELL ifs.sh +# +# This script generates 6856 tests for the set(1) and read(1) +# builtins w.r.t. IFS whitespace and non-whitespace characters. +# Each failed test produces one line on the standard output that +# contains the test along with the expected and actual results. +# The last output line contains the test result counts. ordered>0 +# are the number of tests where IFS=": " produced different results +# than IFS=" :". If a test fails the same way for IFS=": " and +# IFS=" :" then the second output line is suppressed. + +TESTS=6856 + +ksh_read=0 +echo 1 | read ksh_read +ksh_arith=0 +eval '((ksh_arith+=1))' 2>/dev/null + +failed=0 +ordered=0 +passed=0 + +split() +{ + i=$1 s=$2 r=$3 S='' R='' + for ifs in ': ' ' :' + do IFS=$ifs + set x $i + shift + IFS=' ' + g="[$#]" + while : + do case $# in + 0) break ;; + esac + g="$g($1)" + shift + done + case $g in + "$s") case $ksh_arith in + 1) ((passed+=1)) ;; + *) passed=`expr $passed + 1` ;; + esac + case $S in + '') S=$g + ;; + "$g") ;; + *) case $ksh_arith in + 1) ((ordered+=1)) ;; + *) ordered=`expr $ordered + 1` ;; + esac + ;; + esac + ;; + "$S") case $ksh_arith in + 1) ((failed+=1)) ;; + *) failed=`expr $failed + 1` ;; + esac + ;; + *) case $ksh_arith in + 1) ((failed+=1)) ;; + *) failed=`expr $failed + 1` ;; + esac + case $s in + "$S") ;; + ?0*) echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#]\" # expected \"$s\" got \"$g\"" ;; + ?1*) echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#](\$1)\" # expected \"$s\" got \"$g\"" ;; + ?2*) echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#](\$1)(\$2)\" # expected \"$s\" got \"$g\"" ;; + ?3*) echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#](\$1)(\$2)(\$3)\" # expected \"$s\" got \"$g\"" ;; + *) echo TEST ERROR i="'$i'" s="'$s'" ;; + esac + case $S in + '') S=$g + ;; + "$g") ;; + *) case $ksh_arith in + 1) ((ordered+=1)) ;; + *) ordered=`expr $ordered + 1` ;; + esac + ;; + esac + esac + case $ksh_read in + 1) echo "$i" | IFS=$ifs read x y; g="($x)($y)" ;; + *) g=`export ifs; echo "$i" | ( IFS=$ifs; read x y; echo "($x)($y)" )` ;; + esac + case $g in + "$r") case $ksh_arith in + 1) ((passed+=1)) ;; + *) passed=`expr $passed + 1` ;; + esac + case $R in + '') R=$g + ;; + "$g") ;; + *) case $ksh_arith in + 1) ((ordered+=1)) ;; + *) ordered=`expr $ordered + 1` ;; + esac + ;; + esac + ;; + "$R") case $ksh_arith in + 1) ((failed+=1)) ;; + *) failed=`expr $failed + 1` ;; + esac + ;; + *) case $ksh_arith in + 1) ((failed+=1)) ;; + *) failed=`expr $failed + 1` ;; + esac + case $r in + "$R") ;; + *) echo "echo \"$i\" | ( IFS=\"$ifs\" read x y; echo \"(\$x)(\$y)\" ) # expected \"$r\" got \"$g\"" ;; + esac + case $R in + '') R=$g + ;; + "$g") ;; + *) case $ksh_arith in + 1) ((ordered+=1)) ;; + *) ordered=`expr $ordered + 1` ;; + esac + ;; + esac + ;; + esac + done +} + +for str in \ + '-' \ + 'a' \ + '- -' \ + '- a' \ + 'a -' \ + 'a b' \ + '- - -' \ + '- - a' \ + '- a -' \ + '- a b' \ + 'a - -' \ + 'a - b' \ + 'a b -' \ + 'a b c' \ + +do + IFS=' ' + set x $str + + shift + case $# in + 0) continue ;; + esac + + f1=$1 + case $f1 in + '-') f1='' ;; + esac + + shift + case $# in + 0) for d0 in '' ' ' + do + for d1 in '' ' ' ':' ' :' ': ' ' : ' + do + case $f1$d1 in + '') split "$d0$f1$d1" "[0]" "()()" ;; + ' ') ;; + *) split "$d0$f1$d1" "[1]($f1)" "($f1)()" ;; + esac + done + done + continue + ;; + esac + f2=$1 + case $f2 in + '-') f2='' ;; + esac + + shift + case $# in + 0) for d0 in '' ' ' + do + for d1 in ' ' ':' ' :' ': ' ' : ' + do + case ' ' in + $f1$d1|$d1$f2) continue ;; + esac + for d2 in '' ' ' ':' ' :' ': ' ' : ' + do + case $f2$d2 in + '') split "$d0$f1$d1$f2$d2" "[1]($f1)" "($f1)()" ;; + ' ') ;; + *) split "$d0$f1$d1$f2$d2" "[2]($f1)($f2)" "($f1)($f2)" ;; + esac + done + done + done + continue + ;; + esac + f3=$1 + case $f3 in + '-') f3='' ;; + esac + + shift + case $# in + 0) for d0 in '' ' ' + do + for d1 in ':' ' :' ': ' ' : ' + do + case ' ' in + $f1$d1|$d1$f2) continue ;; + esac + for d2 in ' ' ':' ' :' ': ' ' : ' + do + case $f2$d2 in + ' ') continue ;; + esac + case ' ' in + $f2$d2|$d2$f3) continue ;; + esac + for d3 in '' ' ' ':' ' :' ': ' ' : ' + do + case $f3$d3 in + '') split "$d0$f1$d1$f2$d2$f3$d3" "[2]($f1)($f2)" "($f1)($f2)" ;; + ' ') ;; + *) x=$f2$d2$f3$d3 + x=${x#' '} + x=${x%' '} + split "$d0$f1$d1$f2$d2$f3$d3" "[3]($f1)($f2)($f3)" "($f1)($x)" + ;; + esac + done + done + done + done + continue + ;; + esac +done +case $ksh_arith in +1) ((tests=passed+failed)) ;; +*) tests=`expr $passed + $failed` ;; +esac +case $ordered in +0) ordered="" ;; +*) ordered=" ordered $ordered" ;; +esac +case $tests in +$TESTS) fatal="" ;; +*) fatal=" -- fundamental IFS error -- $TESTS tests expected" +esac +echo "# tests $tests passed $passed failed $failed$ordered$fatal" diff --git a/bash-20060316/tests/posix2.right b/bash-20060316/tests/posix2.right new file mode 100644 index 000000000..df30c4f19 --- /dev/null +++ b/bash-20060316/tests/posix2.right @@ -0,0 +1,2 @@ +Testing for POSIX.2 conformance +All tests passed diff --git a/bash-20060316/tests/posix2.tests b/bash-20060316/tests/posix2.tests new file mode 100644 index 000000000..a186e7819 --- /dev/null +++ b/bash-20060316/tests/posix2.tests @@ -0,0 +1,179 @@ +#! /bin/sh +# posix-2.sh - Simple identification tests for POSIX.2 features +# commonly missing or incorrectly implemented. +# Time-stamp: <96/04/10 16:43:48 gildea> +# By Stephen Gildea March 1995 +# +# Copyright (c) 1995 Stephen Gildea +# Permission is hereby granted to deal in this Software without restriction. +# THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND. +# +# MODIFIED BY chet@po.cwru.edu to make part of the bash test suite. +# last change: Wed Jun 19 12:24:24 EDT 1996 +# +# some of the tests: +# +# shell functions (do we care?) +# var=${var:-val} +# unset +# set -- +# IFS parsing +## not exiting with -e and failed "if", the way Ultrix does (Ultrix 4.2?) +# "$@" expands to zero arguments if passed zero arguments +# $SHELL -c 'echo $1' bad good +# test -x +# positional parameters greater than 9 +# arithmetic expansion $(( ... )) +# getopts + +# For some tests we must run a sub-shell; $TESTSHELL says what to use. +# If set, TESTSHELL must be an absolute pathname. +# For example, on HP-UX 9, /bin/posix/sh is the supposedly-compliant shell. +TESTSHELL=${THIS_SH:-$PWD/../bash} + +# these tests create temp files with names $TMPDIR/conf* +: ${TMPDIR:=/tmp} + +exitval=0 +numtests=0 + +echo "Testing for POSIX.2 conformance" + +newtest() +{ + numtests=$(($numtests + 1)) +} + +testfail() +{ + echo "$1 test failed" + exitval=$(($exitval + 1)) +} + +newtest +empty="" +test "${empty:-ok}" = ok || testfail "empty var colon" +newtest +test "${empty-bad}" = "" || testfail "got \"${empty-bad}\": empty var nocolon" +newtest +test "${unsetvar-ok}" = ok || testfail "unset var" +newtest +unset empty +test "${empty-ok}" = ok || testfail "unset" + +newtest +set -- -Z +test "x$1" = x-Z || testfail '\"set -- arg\"' +# this should empty the argument list +newtest +set -- +test $# = 0 || testfail "still $# args: \"set --\"" + +# IFS parsing: +newtest +names=one/good/three +saved_ifs="$IFS" +IFS=/ +set $names lose +test "$2" = good || testfail "got \"$2\": IFS parsing" +IFS="$saved_ifs" + +# "$@" with 0 arguments should expand to 0 arguments +newtest +cat > $TMPDIR/conftest1 << EOF +$TMPDIR/conftest2 "\$@" +EOF +cat > $TMPDIR/conftest2 << "EOF" +#! /bin/sh +echo $# +EOF +chmod +x $TMPDIR/conftest1 $TMPDIR/conftest2 +numargs=$($TESTSHELL $TMPDIR/conftest1) +if [ "$?" != 0 ]; then + testfail 'running $@' +else + test "$numargs" = 0 || testfail '"$@" got '"$numargs args: expansion w 0 args" +fi +rm -f $TMPDIR/conftest1 $TMPDIR/conftest2 + +newtest +val=$("$TESTSHELL" -c 'echo $1' csh good) +test "$val" = good || testfail "got \"$val\": sh -c" + +newtest +# do these tests in a sub-shell because failure will exit +val=$("$TESTSHELL" -c 'echo ${10}' 0 1 2 3 4 5 6 7 8 9 ten 11 2> /dev/null) +test "$val" = ten || testfail "accessing more than 9 positional params" + +a=abc_def_ghi +export a +newtest; val=`"$TESTSHELL" -c 'echo "${a%_*}"' 2> /dev/null` +test "$val" = abc_def || testfail "parameter % op" +newtest; val=`"$TESTSHELL" -c 'echo "${a%%_*}"' 2> /dev/null` +test "$val" = abc || testfail "parameter %% op" +newtest; val=`"$TESTSHELL" -c 'echo "${a#*_}"' 2> /dev/null` +test "$val" = def_ghi || testfail "parameter # op" +newtest; val=`"$TESTSHELL" -c 'echo "${a##*_}"' 2> /dev/null` +test "$val" = ghi || testfail "parameter ## op" + +newtest +"$TESTSHELL" -c 'export a=value' 2> /dev/null || testfail "export with value" + +newtest +a=5; test "$(( ($a+1)/2 ))" = 3 || testfail "arithmetic expansion" + +# does "test" support the -x switch? +newtest +touch $TMPDIR/conftest +chmod -x $TMPDIR/conftest +test -x $TMPDIR/conftest && testfail "negative test -x" +chmod +x $TMPDIR/conftest +test -x $TMPDIR/conftest || testfail "positive test -x" +rm -f $TMPDIR/conftest + +newtest +test "$OPTIND" = 1 || testfail "OPTIND initial value" + +newtest +getopts a: store -a aoptval +if [ "$OPTIND" != 3 ] || [ "$store" != a ] || [ "$OPTARG" != aoptval ]; then + testfail "getopts" +fi + +# if I change the default quoting style for variable values, these +# next four must change + +newtest +SQUOTE="'" +val1=$(set | sed -n 's:^SQUOTE=::p') +if [ "$val1" != "''\\'''" ]; then + testfail "variable quoting 1" +fi + +newtest +VTILDE='~' +val1=$(set | sed -n 's:^VTILDE=::p') +if [ "$val1" != "'~'" ]; then + testfail "variable quoting 2" +fi + +newtest +VHASH=ab#cd +val1=$(set | sed -n 's:^VHASH=::p') +if [ "$val1" != "ab#cd" ]; then + testfail "variable quoting 3" +fi + +newtest +VHASH2=#abcd +val1=$(set | sed -n 's:^VHASH2=::p') +if [ "$val1" != "'#abcd'" ]; then + testfail "variable quoting 4" +fi + +if [ $exitval = 0 ]; then + echo "All tests passed" +else + echo "$exitval of $numtests tests failed" +fi +exit $exitval diff --git a/bash-20060316/tests/posixpat.right b/bash-20060316/tests/posixpat.right new file mode 100644 index 000000000..deb01bf2d --- /dev/null +++ b/bash-20060316/tests/posixpat.right @@ -0,0 +1,42 @@ +ok 1 +ok 2 +ok 3 +ok 4 +ok 5 +ok 6 +ok 7 +ok 8 +ok 9 +ok 10 +ok 11 +ok 12 +ok 13 +ok 14 +ok 15 +ok 16 +ok 17 +ok 18 +ok 19 +ok 20 +ok 21 +ok -- space +ok -- blank +ok 1 +ok 2 +ok 3 +ok 4 +ok 5 +ok 6 +ok 7 +ok 8 +ok 9 +ok 10 +ok 11 +ok 12 +ok 13 +ok 14 +ok 15 +ok 16 +ok 1 +ok 2 +ok 3 diff --git a/bash-20060316/tests/posixpat.tests b/bash-20060316/tests/posixpat.tests new file mode 100644 index 000000000..91fac3b87 --- /dev/null +++ b/bash-20060316/tests/posixpat.tests @@ -0,0 +1,233 @@ +# A test suite for the POSIX.2 (BRE) pattern matching code +LC_ALL=C +LANG=C + +# First, test POSIX.2 character classes + +case e in +[[:xdigit:]]) echo ok 1;; +esac + +case a in +[[:alpha:]123]) echo ok 2;; +esac + +case 1 in +[[:alpha:]123]) echo ok 3;; +esac + +case 9 in +[![:alpha:]]) echo ok 4;; +esac + +# invalid character class expressions are just characters to be matched +case a in +[:al:]) echo ok 5;; +esac + +case a in +[[:al:]) echo ok 6;; +esac + +case '!' in +[abc[:punct:][0-9]) echo ok 7;; +esac + +# let's try to match the start of a valid sh identifier +case 'PATH' in +[_[:alpha:]]*) echo ok 8;; +esac + +# let's try to match the first two characters of a valid sh identifier +case PATH in +[_[:alpha:]][_[:alnum:]]*) echo ok 9;; +esac + +# is ^C a cntrl character? +case $'\003' in +[[:cntrl:]]) echo ok 10;; +esac + +# how about A? +case A in +[[:cntrl:]]) echo oops -- cntrl ;; +*) echo ok 11;; +esac + +case 9 in +[[:digit:]]) echo ok 12;; +esac + +case X in +[[:digit:]]) echo oops -- digit;; +*) echo ok 13;; +esac + +case $'\033' in +[[:graph:]]) echo oops -- graph;; +*) echo ok 14;; +esac + +case $'\040' in +[[:graph:]]) echo oops -- graph 2;; +*) echo ok 15;; +esac + +case ' ' in +[[:graph:]]) echo oops -- graph 3;; +*) echo ok 16;; +esac + +case 'aB' in +[[:lower:]][[:upper:]]) echo ok 17;; +esac + +case $'\040' in +[[:print:]]) echo ok 18;; +*) echo oops -- print;; +esac + +case PS3 in +[_[:alpha:]][_[:alnum:]][_[:alnum:]]*) echo ok 19;; +esac + +case a in +[[:alpha:][:digit:]]) echo ok 20;; +*) echo oops - skip brackpat ;; +esac + +case a in +[[:alpha:]\]) echo oops -- dangling backslash in brackpat ;; +*) echo ok 21 ;; +esac + +# what's a newline? is it a blank? a space? +case $'\n' in +[[:blank:]]) echo ok -- blank ;; +[[:space:]]) echo ok -- space ;; +*) echo oops newline ;; +esac + +# OK, what's a tab? is it a blank? a space? +case $'\t' in +[[:blank:]]) echo ok -- blank ;; +[[:space:]]) echo ok -- space ;; +*) echo oops newline ;; +esac + +# let's check out characters in the ASCII range +case $'\377' in +[[:ascii:]]) echo oops -- ascii\?;; +esac + +case 9 in +[1[:alpha:]123]) echo oops 1;; +esac + +# however, an unterminated brace expression containing a valid char class +# that matches had better fail +case a in +[[:alpha:]) echo oops 2;; +esac + +case $'\b' in +[[:graph:]]) echo oops 3;; +esac + +case $'\b' in +[[:print:]]) echo oops 4;; +esac + +case $' ' in +[[:punct:]]) echo oops 5;; +esac + +# Next, test POSIX.2 collating symbols + +case 'a' in +[[.a.]]) echo ok 1;; +esac + +case '-' in +[[.hyphen.]-9]) echo ok 2;; +esac + +case 'p' in +[[.a.]-[.z.]]) echo ok 3;; +esac + +case '-' in +[[.-.]]) echo ok 4;; +esac + +case ' ' in +[[.space.]]) echo ok 5;; +esac + +case ' ' in +[[.grave-accent.]]) echo oops - grave;; +*) echo ok 6;; +esac + +case '4' in +[[.-.]-9]) echo ok 7;; +esac + +# an invalid collating symbol cannot be the first part of a range +case 'c' in +[[.yyz.]-[.z.]]) echo oops - yyz;; +*) echo ok 8;; +esac + +case 'c' in +[[.yyz.][.a.]-z]) echo ok 9;; +esac + +# but when not part of a range is not an error +case 'c' in +[[.yyz.][.a.]-[.z.]]) echo ok 10 ;; +esac + +case 'p' in +[[.a.]-[.Z.]]) echo oops -- bad range ;; +*) echo ok 11;; +esac + +case p in +[[.a.]-[.zz.]p]) echo ok 12;; +*) echo oops -- bad range 2;; +esac + +case p in +[[.aa.]-[.z.]p]) echo ok 13;; +*) echo oops -- bad range 3;; +esac + +case c in +[[.yyz.]cde]) echo ok 14;; +esac + +case abc in +[[.cb.]a-Za]*) echo ok 15;; +esac + +case $'\t' in +[[.space.][.tab.][.newline.]]) echo ok 16;; +esac + +# and finally, test POSIX.2 equivalence classes + +case "abc" in +[[:alpha:]][[=b=]][[:ascii:]]) echo ok 1;; +esac + +case "abc" in +[[:alpha:]][[=B=]][[:ascii:]]) echo oops -- =B=;; +*) echo ok 2 ;; +esac + +case a in +[[=b=]) echo oops;; # an incomplete equiv class is just a string +*) echo ok 3;; +esac + diff --git a/bash-20060316/tests/prec.right b/bash-20060316/tests/prec.right new file mode 100644 index 000000000..e6af552c5 --- /dev/null +++ b/bash-20060316/tests/prec.right @@ -0,0 +1,28 @@ +`Say' echos its argument. Its return value is of no interest. +`Truth' echos its argument and returns a TRUE result. +`False' echos its argument and returns a FALSE result. + + Truth 1 && Truth 2 || Say 3 output=12 +( Truth 1 && Truth 2 ) || Say 3 output=12 + + Truth 1 && False 2 || Say 3 output=123 +( Truth 1 && False 2 ) || Say 3 output=123 + + False 1 && Truth 2 || Say 3 output=13 +( False 1 && Truth 2 ) || Say 3 output=13 + + False 1 && False 2 || Say 3 output=13 +( False 1 && False 2 ) || Say 3 output=13 + +Truth 1 || Truth 2 && Say 3 output=13 +Truth 1 || ( Truth 2 && Say 3 ) output=1 + +Truth 1 || False 2 && Say 3 output=13 +Truth 1 || ( False 2 && Say 3 ) output=1 + +False 1 || Truth 2 && Say 3 output=123 +False 1 || ( Truth 2 && Say 3 ) output=123 + +False 1 || False 2 && Say 3 output=12 +False 1 || ( False 2 && Say 3 ) output=12 + diff --git a/bash-20060316/tests/precedence b/bash-20060316/tests/precedence new file mode 100755 index 000000000..9bbdb971c --- /dev/null +++ b/bash-20060316/tests/precedence @@ -0,0 +1,75 @@ +# @(#)precedence_test 1.0 91/07/24 Maarten Litmaath +# test of relative precedences for `&&' and `||' operators + +echo "\`Say' echos its argument. Its return value is of no interest." +case `echo -n` in + '') Say () { echo -n "$*" ; } ;; + *) Say () { echo "$*\c" ; } ;; +esac + +echo "\`Truth' echos its argument and returns a TRUE result." +Truth () { + Say $1; + return 0; +} + +echo "\`False' echos its argument and returns a FALSE result." +False () { + Say $1; + return 1; +} + +echo "" + +cmd1='$open $test1 && $test2 $close || $test3' +cmd2='$test1 || $open $test2 && $test3 $close' + +grouping_sh= +grouping_C='( )' + +test3='Say 3' + +for i in 1 2 +do + eval proto=\$cmd$i + + for test1 in 'Truth 1' 'False 1' + do + for test2 in 'Truth 2' 'False 2' + do + for precedence in sh C + do + eval set x \$grouping_$precedence + shift + open=${1-' '} + close=${2-' '} + eval cmd=\""$proto"\" + Say "$cmd output=" + output=`eval "$cmd"` + Say "$output" + read correct || { echo 'Input fubar. Abort.' >&2; exit 1; } + test "X$output" = "X$correct" || echo " correct=$correct" + echo '' + done + + echo '' + done + done +done << EOF +12 +12 +123 +123 +13 +13 +13 +13 +13 +1 +13 +1 +123 +123 +12 +12 +EOF diff --git a/bash-20060316/tests/printf.right b/bash-20060316/tests/printf.right new file mode 100644 index 0000000000000000000000000000000000000000..656b1985dda5410c798d1a4121fe5e24ec3339b3 GIT binary patch literal 1287 zc-oay+iu%14DDM{egzSrON&9Cd`Vp7Wyr8~Put5dpg>h%iY;G;M$T+GasPgjV#jV8 zFPLPJhetk?%rKiWmnvCcUGY>baAQM!BwO6_@(GioTyuqwyiDu0kg9ru&3`Lg3Ri^` zpcjkOu7H3!9>@Zv*gfY`pe%MBhHEopSVArT)P)l90pM}0M@y+Juh=`4aRn}V=wpC0 zH0M=HUoS;!=5g#$3WNlXhlC6PT->=9TrGRI3|~EjunAv9F`L*|*whA78*tWW?|j%- z#!>pvYJv7c@4T*H3tZ<_W$u!R2ID-x>H95qKRWJv?G{UFhDR zDbb10j4$sgJp`f+IkX&oVmrUUG+^9G6}&GO%; z2-`MO=-LOE^_}zP?Q^o1JUZ{2>DRSOr+rVgf5Ir^C6AOS$1;S24Bxaqms|dv$8Ys~ zbvlDf2N_=em0?8h_xi8jfA)G=uUA?{$8^Ct9f6yqDDd`X#Y?=^geg5nF^U8cTpup= Mya?e^z~m$R1w*(}O8@`> literal 0 Hc-jL100001 diff --git a/bash-20060316/tests/printf.tests b/bash-20060316/tests/printf.tests new file mode 100644 index 000000000..9cd730262 --- /dev/null +++ b/bash-20060316/tests/printf.tests @@ -0,0 +1,248 @@ +LC_ALL=C +LC_NUMERIC=C + +# these should output error messages -- the format is required +printf +printf -- + +# these should output nothing +printf "" +printf -- "" + +# in the future this may mean to put the output into VAR, but for +# now it is an error +# 2005-03-15 no longer an error +unset var +printf -v var "%10d" $RANDOM +echo ${#var} + +# this should expand escape sequences in the format string, nothing else +printf "\tone\n" + +# this should not cut off output after the \c +printf "one\ctwo\n" + +# and unrecognized backslash escapes should have the backslash preserverd +printf "4\.2\n" + +printf "no newline " ; printf "now newline\n" + +# %% -> % +printf "%%\n" + +# this was a bug caused by pre-processing the string for backslash escapes +# before doing the `%' format processing -- all versions before bash-2.04 +printf "\045" ; echo +printf "\045d\n" + +# simple character output +printf "%c\n" ABCD + +# test simple string output +printf "%s\n" unquoted + +# test quoted string output +printf "%s %q\n" unquoted quoted +printf "%s%10q\n" unquoted quoted + +printf "%q\n" 'this&that' + +# make sure the format string is reused to use up arguments +printf "%d " 1 2 3 4 5; printf "\n" + +# make sure that extra format characters get null arguments +printf "%s %d %d %d\n" onestring + +printf "%s %d %u %4.2f\n" onestring + +printf -- "--%s %s--\n" 4.2 '' +printf -- "--%s %s--\n" 4.2 + +# test %b escapes + +# 8 is a non-octal digit, so the `81' should be output +printf -- "--%b--\n" '\n\081' + +printf -- "--%b--\n" '\t\0101' +printf -- "--%b--\n" '\t\101' + +# these should all display `A7' +echo -e "\1017" +echo -e "\x417" + +printf "%b\n" '\01017' +printf "%b\n" '\1017' +printf "%b\n" '\x417' + +printf -- "--%b--\n" '\"abcd\"' +printf -- "--%b--\n" "\'abcd\'" + +printf -- "--%b--\n" 'a\\x' + +printf -- "--%b--\n" '\x' + +Z1=$(printf -- "%b\n" '\a\b\e\f\r\v') +Z2=$'\a\b\e\f\r\v' + +if [ "$Z1" != "$Z2" ]; then + echo "whoops: printf %b and $'' differ" >&2 +fi +unset Z1 Z2 + +printf -- "--%b--\n" '' +printf -- "--%b--\n" + +# the stuff following the \c should be ignored, as well as the rest +# of the format string +printf -- "--%b--\n" '4.2\c5.4\n'; printf "\n" + +# unrecognized escape sequences should by displayed unchanged +printf -- "--%b--\n" '4\.2' + +# a bare \ should not be processed as an escape sequence +printf -- "--%b--\n" '\' + +# make sure extra arguments are ignored if the format string doesn't +# actually use them +printf "\n" 4.4 BSD +printf " " 4.4 BSD ; printf "\n" + +# make sure that a fieldwidth and precision of `*' are handled right +printf "%10.8s\n" 4.4BSD +printf "%*.*s\n" 10 8 4.4BSD + +printf "%10.8q\n" 4.4BSD +printf "%*.*q\n" 10 8 4.4BSD + +printf "%6b\n" 4.4BSD +printf "%*b\n" 6 4.4BSD + +# we handle this crap with homemade code in printf.def +printf "%10b\n" 4.4BSD +printf -- "--%-10b--\n" 4.4BSD +printf "%4.2b\n" 4.4BSD +printf "%.3b\n" 4.4BSD +printf -- "--%-8b--\n" 4.4BSD + +# test numeric conversions -- these four lines should echo identically +printf "%d %u %i 0%o 0x%x 0x%X\n" 255 255 255 255 255 255 +printf "%d %u %i %#o %#x %#X\n" 255 255 255 255 255 255 + +printf "%ld %lu %li 0%o 0x%x 0x%X\n" 255 255 255 255 255 255 +printf "%ld %lu %li %#o %#x %#X\n" 255 255 255 255 255 255 + +printf "%10d\n" 42 +printf "%10d\n" -42 + +printf "%*d\n" 10 42 +printf "%*d\n" 10 -42 + +# test some simple floating point formats +printf "%4.2f\n" 4.2 +printf "%#4.2f\n" 4.2 +printf "%#4.1f\n" 4.2 + +printf "%*.*f\n" 4 2 4.2 +printf "%#*.*f\n" 4 2 4.2 +printf "%#*.*f\n" 4 1 4.2 + +printf "%E\n" 4.2 +printf "%e\n" 4.2 +printf "%6.1E\n" 4.2 +printf "%6.1e\n" 4.2 + +printf "%G\n" 4.2 +printf "%g\n" 4.2 +printf "%6.2G\n" 4.2 +printf "%6.2g\n" 4.2 + +# test some of the more esoteric features of POSIX.1 printf +printf "%d\n" "'string'" +printf "%d\n" '"string"' + +printf "%#o\n" "'string'" +printf "%#o\n" '"string"' + +printf "%#x\n" "'string'" +printf "%#X\n" '"string"' + +printf "%6.2f\n" "'string'" +printf "%6.2f\n" '"string"' + +# output from these two lines had better be the same +printf -- "--%6.4s--\n" abcdefghijklmnopqrstuvwxyz +printf -- "--%6.4b--\n" abcdefghijklmnopqrstuvwxyz + +# and these two also +printf -- "--%12.10s--\n" abcdefghijklmnopqrstuvwxyz +printf -- "--%12.10b--\n" abcdefghijklmnopqrstuvwxyz + +# tests for translating \' to ' and \\ to \ +# printf translates \' to ' in the format string... +printf "\'abcd\'\n" + +# but not when the %b format specification is used +printf "%b\n" \\\'abcd\\\' + +# but both translate \\ to \ +printf '\\abcd\\\n' +printf "%b\n" '\\abcd\\' + +# this was reported as a bug in bash-2.03 +# these three lines should all echo `26' +printf "%d\n" 0x1a +printf "%d\n" 032 +printf "%d\n" 26 + +# error messages + +# this should be an overflow, but error messages vary between systems +# printf "%lu\n" 4294967296 + +# ...but we cannot use this because some systems (SunOS4, for example), +# happily ignore overflow conditions in strtol(3) +#printf "%ld\n" 4294967296 + +printf "%10" +printf "ab%Mcd\n" + +# this caused an infinite loop in older versions of printf +printf "%y" 0 + +# these should print a warning and `0', according to POSIX.2 +printf "%d\n" GNU +printf "%o\n" GNU + +# failures in all bash versions through bash-2.05 +printf "%.0s" foo +printf "%.*s" 0 foo + +printf '%.0b-%.0s\n' foo bar +printf '(%*b)(%*s)\n' -4 foo -4 bar + +format='%'`printf '%0100384d' 0`'d\n' +printf $format 0 + +# failures in all bash versions through bash-3.0 - undercounted characters +unset vv +printf " %s %s %s \n%n" ab cd ef vv +echo "$vv" + +# this doesn't work with printf(3) on all systems +#printf "%'s\n" foo + +# test cases from an austin-group list discussion +# prints ^G as an extension +printf '%b\n' '\7' + +# prints ^G +printf '%b\n' '\0007' + +# prints NUL then 7 +printf '\0007\n' + +# prints no more than two hex digits +printf '\x07e\n' + +# additional backslash escapes +printf '\"\?\n' diff --git a/bash-20060316/tests/printf1.sub b/bash-20060316/tests/printf1.sub new file mode 100644 index 000000000..72d86a219 --- /dev/null +++ b/bash-20060316/tests/printf1.sub @@ -0,0 +1,338 @@ +LC_ALL=C +LC_NUMERIC=C + +unset vv + +# this should expand escape sequences in the format string, nothing else +printf -v vv "\tone\n" +printf "%s" "$vv" + +# this should not cut off output after the \c +printf -v vv "one\ctwo\n" +printf "%s" "$vv" + +# and unrecognized backslash escapes should have the backslash preserverd +printf -v vv "4\.2\n" +printf "%s" "$vv" + +printf -v vv "no newline " ; printf "%s" "$vv" ; printf -v vv "now newline\n" +printf "%s" "$vv" + +# %% -> % +printf -v vv "%%\n" +printf "%s" "$vv" + +# this was a bug caused by pre-processing the string for backslash escapes +# before doing the `%' format processing -- all versions before bash-2.04 +printf -v vv "\045" +printf "%s" "$vv" +echo +printf -v vv "\045d\n" +printf "%s" "$vv" + +# simple character output +printf -v vv "%c\n" ABCD +printf "%s" "$vv" + +# test simple string output +printf -v vv "%s\n" unquoted +printf "%s" "$vv" + +# test quoted string output +printf -v vv "%s %q\n" unquoted quoted +printf "%s" "$vv" +printf -v vv "%s%10q\n" unquoted quoted +printf "%s" "$vv" + +printf -v vv "%q\n" 'this&that' +printf "%s" "$vv" + +# make sure the format string is reused to use up arguments +printf -v vv "%d " 1 2 3 4 5 +printf "%s" "$vv" +echo + +# make sure that extra format characters get null arguments +printf -v vv "%s %d %d %d\n" onestring +printf "%s" "$vv" + +printf -v vv "%s %d %u %4.2f\n" onestring +printf "%s" "$vv" + +printf -v vv -- "--%s %s--\n" 4.2 '' +printf "%s" "$vv" +printf -v vv -- "--%s %s--\n" 4.2 +printf "%s" "$vv" + +# test %b escapes + +# 8 is a non-octal digit, so the `81' should be output +printf -v vv -- "--%b--\n" '\n\081' +printf "%s" "$vv" + +printf -v vv -- "--%b--\n" '\t\0101' +printf "%s" "$vv" +printf -v vv -- "--%b--\n" '\t\101' +printf "%s" "$vv" + +# these should all display `A7' +echo -e "\1017" +echo -e "\x417" + +printf -v vv "%b\n" '\01017' +printf "%s" "$vv" +printf -v vv "%b\n" '\1017' +printf "%s" "$vv" +printf -v vv "%b\n" '\x417' +printf "%s" "$vv" + +printf -v vv -- "--%b--\n" '\"abcd\"' +printf "%s" "$vv" +printf -v vv -- "--%b--\n" "\'abcd\'" +printf "%s" "$vv" + +printf -v vv -- "--%b--\n" 'a\\x' +printf "%s" "$vv" + +printf -v vv -- "--%b--\n" '\x' +printf "%s" "$vv" + +Z1=$(printf -- "%b\n" '\a\b\e\f\r\v') +Z2=$'\a\b\e\f\r\v' + +if [ "$Z1" != "$Z2" ]; then + printf "%s" "whoops: printf -v vv %b and $'' differ" >&2 +fi +unset Z1 Z2 + +printf -v vv -- "--%b--\n" '' +printf "%s" "$vv" +printf -v vv -- "--%b--\n" +printf "%s" "$vv" + +# the stuff following the \c should be ignored, as well as the rest +# of the format string +printf -v vv -- "--%b--\n" '4.2\c5.4\n' +printf "%s" "$vv" +echo + +# unrecognized escape sequences should by displayed unchanged +printf -v vv -- "--%b--\n" '4\.2' +printf "%s" "$vv" + +# a bare \ should not be processed as an escape sequence +printf -v vv -- "--%b--\n" '\' +printf "%s" "$vv" + +# make sure extra arguments are ignored if the format string doesn't +# actually use them +printf -v vv "\n" 4.4 BSD +printf "%s" "$vv" +printf -v vv " " 4.4 BSD +printf "%s" "$vv" +echo + +# make sure that a fieldwidth and precision of `*' are handled right +printf -v vv "%10.8s\n" 4.4BSD +printf "%s" "$vv" +printf -v vv "%*.*s\n" 10 8 4.4BSD +printf "%s" "$vv" + +printf -v vv "%10.8q\n" 4.4BSD +printf "%s" "$vv" +printf -v vv "%*.*q\n" 10 8 4.4BSD +printf "%s" "$vv" + +printf -v vv "%6b\n" 4.4BSD +printf "%s" "$vv" +printf -v vv "%*b\n" 6 4.4BSD +printf "%s" "$vv" + +# we handle this crap with homemade code in printf -v vv.def +printf -v vv "%10b\n" 4.4BSD +printf "%s" "$vv" +printf -v vv -- "--%-10b--\n" 4.4BSD +printf "%s" "$vv" +printf -v vv "%4.2b\n" 4.4BSD +printf "%s" "$vv" +printf -v vv "%.3b\n" 4.4BSD +printf "%s" "$vv" +printf -v vv -- "--%-8b--\n" 4.4BSD +printf "%s" "$vv" + +# test numeric conversions -- these four lines should printf "%s" identically +printf -v vv "%d %u %i 0%o 0x%x 0x%X\n" 255 255 255 255 255 255 +printf "%s" "$vv" +printf -v vv "%d %u %i %#o %#x %#X\n" 255 255 255 255 255 255 +printf "%s" "$vv" + +printf -v vv "%ld %lu %li 0%o 0x%x 0x%X\n" 255 255 255 255 255 255 +printf "%s" "$vv" +printf -v vv "%ld %lu %li %#o %#x %#X\n" 255 255 255 255 255 255 +printf "%s" "$vv" + +printf -v vv "%10d\n" 42 +printf "%s" "$vv" +printf -v vv "%10d\n" -42 +printf "%s" "$vv" + +printf -v vv "%*d\n" 10 42 +printf "%s" "$vv" +printf -v vv "%*d\n" 10 -42 +printf "%s" "$vv" + +# test some simple floating point formats +printf -v vv "%4.2f\n" 4.2 +printf "%s" "$vv" +printf -v vv "%#4.2f\n" 4.2 +printf "%s" "$vv" +printf -v vv "%#4.1f\n" 4.2 +printf "%s" "$vv" + +printf -v vv "%*.*f\n" 4 2 4.2 +printf "%s" "$vv" +printf -v vv "%#*.*f\n" 4 2 4.2 +printf "%s" "$vv" +printf -v vv "%#*.*f\n" 4 1 4.2 +printf "%s" "$vv" + +printf -v vv "%E\n" 4.2 +printf "%s" "$vv" +printf -v vv "%e\n" 4.2 +printf "%s" "$vv" +printf -v vv "%6.1E\n" 4.2 +printf "%s" "$vv" +printf -v vv "%6.1e\n" 4.2 +printf "%s" "$vv" + +printf -v vv "%G\n" 4.2 +printf "%s" "$vv" +printf -v vv "%g\n" 4.2 +printf "%s" "$vv" +printf -v vv "%6.2G\n" 4.2 +printf "%s" "$vv" +printf -v vv "%6.2g\n" 4.2 +printf "%s" "$vv" + +# test some of the more esoteric features of POSIX.1 printf -v vv +printf -v vv "%d\n" "'string'" +printf "%s" "$vv" +printf -v vv "%d\n" '"string"' +printf "%s" "$vv" + +printf -v vv "%#o\n" "'string'" +printf "%s" "$vv" +printf -v vv "%#o\n" '"string"' +printf "%s" "$vv" + +printf -v vv "%#x\n" "'string'" +printf "%s" "$vv" +printf -v vv "%#X\n" '"string"' +printf "%s" "$vv" + +printf -v vv "%6.2f\n" "'string'" +printf "%s" "$vv" +printf -v vv "%6.2f\n" '"string"' +printf "%s" "$vv" + +# output from these two lines had better be the same +printf -v vv -- "--%6.4s--\n" abcdefghijklmnopqrstuvwxyz +printf "%s" "$vv" +printf -v vv -- "--%6.4b--\n" abcdefghijklmnopqrstuvwxyz +printf "%s" "$vv" + +# and these two also +printf -v vv -- "--%12.10s--\n" abcdefghijklmnopqrstuvwxyz +printf "%s" "$vv" +printf -v vv -- "--%12.10b--\n" abcdefghijklmnopqrstuvwxyz +printf "%s" "$vv" + +# tests for translating \' to ' and \\ to \ +# printf -v vv translates \' to ' in the format string... +printf -v vv "\'abcd\'\n" +printf "%s" "$vv" + +# but not when the %b format specification is used +printf -v vv "%b\n" \\\'abcd\\\' +printf "%s" "$vv" + +# but both translate \\ to \ +printf -v vv '\\abcd\\\n' +printf "%s" "$vv" +printf -v vv "%b\n" '\\abcd\\' +printf "%s" "$vv" + +# this was reported as a bug in bash-2.03 +# these three lines should all printf "%s" `26' +printf -v vv "%d\n" 0x1a +printf "%s" "$vv" +printf -v vv "%d\n" 032 +printf "%s" "$vv" +printf -v vv "%d\n" 26 +printf "%s" "$vv" + +# error messages + +# this should be an overflow, but error messages vary between systems +# printf -v vv "%lu\n" 4294967296 + +# ...but we cannot use this because some systems (SunOS4, for example), +# happily ignore overflow conditions in strtol(3) +#printf -v vv "%ld\n" 4294967296 + +printf -v vv "%10" +printf -v vv "ab%Mcd\n" + +# this caused an infinite loop in older versions of printf -v vv +printf -v vv "%y" 0 + +# these should print a warning and `0', according to POSIX.2 +printf -v vv "%d\n" GNU +printf "%s" "$vv" +printf -v vv "%o\n" GNU +printf "%s" "$vv" + +# failures in all bash versions through bash-2.05 +printf -v vv "%.0s" foo +printf "%s" "$vv" +printf -v vv "%.*s" 0 foo +printf "%s" "$vv" + +printf -v vv '%.0b-%.0s\n' foo bar +printf "%s" "$vv" +printf -v vv '(%*b)(%*s)\n' -4 foo -4 bar +printf "%s" "$vv" + +format='%'`printf '%0100384d' 0`'d\n' +printf -v vv $format 0 +printf "%s" "$vv" + +# failures in all bash versions through bash-3.0 - undercounted characters +unset vv +printf -v vv " %s %s %s \n%n" ab cd ef vvv +printf "%s" "$vv" +echo $vvv + +# this doesn't work with printf -v vv(3) on all systems +#printf -v vv "%'s\n" foo + +# test cases from an austin-group list discussion +# prints ^G as an extension +printf -v vv '%b\n' '\7' +printf "%s" "$vv" + +# prints ^G +printf -v vv '%b\n' '\0007' +printf "%s" "$vv" + +# prints NUL then 7 +printf -v vv '\0007\n' +printf "%s" "$vv" + +# prints no more than two hex digits +printf -v vv '\x07e\n' +printf "%s" "$vv" + +# additional backslash escapes +printf -v vv '\"\?\n' +printf "%s" "$vv" diff --git a/bash-20060316/tests/quote.right b/bash-20060316/tests/quote.right new file mode 100644 index 000000000..424d1a043 --- /dev/null +++ b/bash-20060316/tests/quote.right @@ -0,0 +1,68 @@ +Single Quote +foo +bar +foo +bar +foo\ +bar +Double Quote +foo +bar +foo +bar +foobar +Backslash Single Quote +foo bar +foo bar +foobar +Backslash Double Quote +foo bar +foo bar +foobar +Double Quote Backslash Single Quote +foo +bar +foo +bar +foobar +Dollar Paren Single Quote +foo bar +foo bar +foo\ bar +Dollar Paren Double Quote +foo bar +foo bar +foobar +Double Quote Dollar Paren Single Quote +foo +bar +foo +bar +foo\ +bar +argv[1] = +argv[1] = +argv[1] = argv[2] = <-e> argv[3] = +argv[1] = argv[2] = <-e> argv[3] = +argv[1] = +argv[1] = +argv[1] = +b +a +b +c +argv[1] = +argv[2] = +argv[1] = <$> +argv[2] = +argv[1] = <$foo> +argv[2] = +argv[1] = <$foo> +argv[2] = +argv[1] = <`> +argv[2] = +argv[1] = <\> +argv[2] = +${ +argv[1] = <(")> +argv[1] = <(")> diff --git a/bash-20060316/tests/quote.tests b/bash-20060316/tests/quote.tests new file mode 100644 index 000000000..46edea751 --- /dev/null +++ b/bash-20060316/tests/quote.tests @@ -0,0 +1,111 @@ +echo "Single Quote" +echo 'foo +bar' +echo 'foo +bar' +echo 'foo\ +bar' + +echo "Double Quote" +echo "foo +bar" +echo "foo +bar" +echo "foo\ +bar" + +echo "Backslash Single Quote" +echo `echo 'foo +bar'` +echo `echo 'foo +bar'` +echo `echo 'foo\ +bar'` + +echo "Backslash Double Quote" +echo `echo "foo +bar"` +echo `echo "foo +bar"` +echo `echo "foo\ +bar"` + +echo "Double Quote Backslash Single Quote" +echo "`echo 'foo +bar'`" +echo "`echo 'foo +bar'`" +echo "`echo 'foo\ +bar'`" + +echo "Dollar Paren Single Quote" +echo $(echo 'foo +bar') +echo $(echo 'foo +bar') +echo $(echo 'foo\ +bar') + +echo "Dollar Paren Double Quote" +echo $(echo "foo +bar") +echo $(echo "foo +bar") +echo $(echo "foo\ +bar") + +echo "Double Quote Dollar Paren Single Quote" +echo "$(echo 'foo +bar')" +echo "$(echo 'foo +bar')" +echo "$(echo 'foo\ +bar')" + +# old-style command substitution parsing compatibility tests -- post bash-3.1 +recho 'foo \\ +bar' + +recho 'foo \ +bar' + +echo `recho sed -e 's/[ :]/\\ +/g'` + +echo `recho sed -e 's/[ :]/\ +/g'` + +echo `recho 'foo\\ +bar'` + +echo `recho 'foo\ +bar'` + +echo $(recho 'foo\ +bar') + +a=`echo 'a b c' | sed 's/ /\\ +/g' | grep 'b'` +echo $a +a=`echo 'a b c' | sed 's/ /\\ +/g'` +echo "$a" + +recho `echo 'a\' b` + +recho `echo '\$' bab` +recho `echo '\$foo' bab` +recho `echo '$foo' bab` + +recho `echo '\`' ab` + +recho `echo '\\' ab` + +echo `echo '${'` + +recho `echo "(\\")"` +# produces no output +: `: "\\""` +# ultimate workaround +recho `echo "(\")"` + diff --git a/bash-20060316/tests/read.right b/bash-20060316/tests/read.right new file mode 100644 index 000000000..8f0b2bffd --- /dev/null +++ b/bash-20060316/tests/read.right @@ -0,0 +1,62 @@ +a. +-a-b- +-a-b - +-a b- +-a b- +-a-b\- +-a b\- +-\-a b\- +-\ a b\- +-\-a b\- +-\ a b\- +argv[1] = <^A> +argv[1] = <^A> +argv[1] = <^?> +argv[1] = <^?> +argv[1] = +1: x[A] y[B] z[] +1a: +2: x[A B] +[A B ] +[ A B ] +==aa== +==== +==== +argv[1] = < foo> +argv[1] = < foo> +argv[1] = +argv[1] = < foo> +argv[1] = +argv[1] = +argv[1] = < foo> +a = abcdefg +a = xyz +a = -xyz 123- +a = abc +1 +4 +1 +4 +./read2.sub: line 13: read: -3: invalid timeout specification +1 +4 +abcde +./read3.sub: line 4: read: -1: invalid number +abc +ab +# +while read -u 3 var +do +echo "$var" +done 3<$0 +argv[1] = <> +argv[1] = <> +argv[1] = <> +FOO +argv[1] = <> +argv[1] = <3> +argv[1] = <> +argv[2] = <> +argv[3] = <> +FOO + 0 0 0 diff --git a/bash-20060316/tests/read.tests b/bash-20060316/tests/read.tests new file mode 100644 index 000000000..f9c78c5a9 --- /dev/null +++ b/bash-20060316/tests/read.tests @@ -0,0 +1,95 @@ +echo " a " | (read x; echo "$x.") + +echo " a b " | ( read x y ; echo -"$x"-"$y"- ) +echo " a b\ " | ( read x y ; echo -"$x"-"$y"- ) +echo " a b " | ( read x ; echo -"$x"- ) +echo " a b\ " | ( read x ; echo -"$x"- ) + +echo " a b\ " | ( read -r x y ; echo -"$x"-"$y"- ) +echo " a b\ " | ( read -r x ; echo -"$x"- ) + +echo "\ a b\ " | ( read -r x y ; echo -"$x"-"$y"- ) +echo "\ a b\ " | ( read -r x ; echo -"$x"- ) +echo " \ a b\ " | ( read -r x y ; echo -"$x"-"$y"- ) +echo " \ a b\ " | ( read -r x ; echo -"$x"- ) + +# make sure that CTLESC and CTLNUL are passed through correctly +echo $'\001' | ( read var ; recho "$var" ) +echo $'\001' | ( read ; recho "$REPLY" ) + +echo $'\177' | ( read var ; recho "$var" ) +echo $'\177' | ( read ; recho "$REPLY" ) + +# make sure a backslash-quoted \\n still disappears from the input when +# we're not reading in `raw' mode, and no stray CTLESC chars are left in +# the input stream +echo $'ab\\\ncd' | ( read ; recho "$REPLY" ) + +echo "A B " > /tmp/IN +unset x y z +read x y z < /tmp/IN +echo 1: "x[$x] y[$y] z[$z]" +echo 1a: ${z-z not set} +read x < /tmp/IN +echo 2: "x[$x]" +rm /tmp/IN + +# this is where the bash `read' behavior with respect to $REPLY differs +# from ksh93 +echo "A B " > /tmp/IN + +read < /tmp/IN +echo "[$REPLY]" + +rm /tmp/IN + +echo " A B " > /tmp/IN + +read < /tmp/IN +echo "[$REPLY]" + +rm /tmp/IN + +# make sure that read with more variables than words sets the extra +# variables to the empty string + +bvar=bvar +cvar=cvar +echo aa > /tmp/IN +read avar bvar cvar < /tmp/IN +echo =="$avar"== +echo =="$bvar"== +echo =="$cvar"== + +rm /tmp/IN + +# test behavior of read with various settings of IFS + +echo " foo" | { IFS= read line; recho "$line"; } + +echo " foo" | { IFS= ; read line; recho "$line"; } + +echo " foo" | { unset IFS ; read line; recho "$line"; } + +echo " foo" | { IFS=$'\n' ; read line; recho "$line"; } + +echo " foo" | { IFS=$' \n' ; read line; recho "$line"; } + +echo " foo" | { IFS=$' \t\n' ; read line; recho "$line"; } + +echo " foo" | { IFS=$':' ; read line; recho "$line"; } + +# test read -d delim behavior +${THIS_SH} ./read1.sub + +# test read -t timeout behavior +${THIS_SH} ./read2.sub + +# test read -n nchars behavior +${THIS_SH} ./read3.sub + +# test read -u fd behavior +${THIS_SH} ./read4.sub + +# test behavior when IFS is not the default -- bug through bash-2.05b +${THIS_SH} ./read5.sub diff --git a/bash-20060316/tests/read1.sub b/bash-20060316/tests/read1.sub new file mode 100644 index 000000000..2a36449b8 --- /dev/null +++ b/bash-20060316/tests/read1.sub @@ -0,0 +1,23 @@ +a=7 +echo 'abcdefg|xyz' | { + read -d '|' a + echo a = "${a-unset}" +} + +echo xyz 123 | { + read -d ' ' a + echo a = "${a-unset}" +} + +echo xyz 123 | { + read -d $'\n' a + echo a = -"${a-unset}"- +} + +a=44 +echo abcd | { + read -d d a + echo a = $a +} + +exit 0 diff --git a/bash-20060316/tests/read2.sub b/bash-20060316/tests/read2.sub new file mode 100644 index 000000000..176cf8636 --- /dev/null +++ b/bash-20060316/tests/read2.sub @@ -0,0 +1,22 @@ +a=4 + +read -t 2 a < /dev/tty +echo $? + +echo $a + +sleep 5 | read -t 1 a +echo $? + +echo $a + +read -t -3 a < /dev/tty +echo $? + +echo $a + +# the above should all time out +echo abcde | { + read -t 2 a + echo $a +} diff --git a/bash-20060316/tests/read3.sub b/bash-20060316/tests/read3.sub new file mode 100644 index 000000000..22088cbf3 --- /dev/null +++ b/bash-20060316/tests/read3.sub @@ -0,0 +1,19 @@ +# non-interactive + +# error +read -n -1 + +# from pipe -- should work, but doesn't change tty attributes +echo abcdefg | { + read -n 3 xyz + echo $xyz +} + +# fewer chars than specified +echo ab | { + read -n 3 xyz + echo $xyz +} + +read -n 1 < $0 +echo "$REPLY" diff --git a/bash-20060316/tests/read4.sub b/bash-20060316/tests/read4.sub new file mode 100644 index 000000000..80bc9fca4 --- /dev/null +++ b/bash-20060316/tests/read4.sub @@ -0,0 +1,4 @@ +while read -u 3 var +do + echo "$var" +done 3<$0 diff --git a/bash-20060316/tests/read5.sub b/bash-20060316/tests/read5.sub new file mode 100644 index 000000000..58b992dce --- /dev/null +++ b/bash-20060316/tests/read5.sub @@ -0,0 +1,36 @@ +IFS=: read x y z << EOF +::: +EOF +recho $x +recho "$x" +recho $y +recho "$y" +recho $z +recho "$z" + +if [ -z "$x" ]; then + echo FOO +else + echo BAR +fi + +IFS=: read -a A << EOF +::: +EOF + +recho ${A[0]} +recho "${A[0]}" + +recho ${#A[@]} + +recho "${A[@]}" + +if [ -z "${A[0]}" ]; then + echo FOO +else + echo BAR +fi + +echo -n ${A[0]} | cat -vet +echo -n ${A[0]} | wc + diff --git a/bash-20060316/tests/redir.right b/bash-20060316/tests/redir.right new file mode 100644 index 000000000..68bea526c --- /dev/null +++ b/bash-20060316/tests/redir.right @@ -0,0 +1,102 @@ +abc +./redir.tests: line 13: /tmp/redir-test: cannot overwrite existing file +abc +def +def +./redir.tests: line 29: $z: ambiguous redirect +Point 1 +Point 2 +to a +to b +Point 3 +to a +to a +to b +to b +Point 4 +to c +Point 5 +this is redir1.sub +this is redir2.sub +read line1 "ab" +read line2 "root" +read line3 "cd" +read line4 "daemon" +from stdin: aa +to stdout +./redir4.sub: line 32: $fd: ambiguous redirect +./redir4.sub: line 33: $fd: ambiguous redirect +/tmp/err-and-out: +to stdout +to stderr +/tmp/err-and-out: +to stdout +to stderr +0 -- 3 0 +0 -- 4 0 +ab +cd +ef +gh +ij +kl +0 +ab +cd +cd +./redir.tests: line 152: redir1.*: No such file or directory +# tests of ksh93-like dup-and-close redirection operators +exec 9<$0 + +f() +{ +exec 5<$0 + +exec 0<&5- + +while read line; do +echo "$line" +done +} + +f + +typeset -f f + +# make sure it was closed +read -u 5 foo +echo after read + +exec 5<&0 + +exec <&- + +read abcde + +exec 0<&9- +read line +echo $line +f () +{ + exec 5<$0; + exec 0<&5-; + while read line; do + echo "$line"; + done +} +./redir5.sub: line 20: read: 5: invalid file descriptor: Bad file descriptor +after read +./redir5.sub: line 27: read: read error: 0: Bad file descriptor +# tests of ksh93-like dup-and-close redirection operators +/ +/ +/ +0 +0 +0 +before block +after block +c1 is 1 +c2 is 2 +c3 is 3 +c4 is 4 diff --git a/bash-20060316/tests/redir.tests b/bash-20060316/tests/redir.tests new file mode 100644 index 000000000..2669cd406 --- /dev/null +++ b/bash-20060316/tests/redir.tests @@ -0,0 +1,174 @@ +export LC_ALL=C +export LANG=C + +# catch-all for remaining untested redirection stuff +set +o posix + +echo abc > /tmp/redir-test +cat /tmp/redir-test + +set -o noclobber + +#this should be an error +echo def > /tmp/redir-test +cat /tmp/redir-test + +# but this should succeed +echo def > /tmp/redir-test-2 +cat /tmp/redir-test-2 + +# and so should this +echo def >| /tmp/redir-test +cat /tmp/redir-test + +set +o noclobber +rm /tmp/redir-test /tmp/redir-test-2 + +# this should be an error +z="a b" +cat < $z + +echo "Point 1" + +exec 3/tmp/bash-a +exec 5>/tmp/bash-b +echo "Point 2" + +echo to a 1>&4 +echo to b 1>&5 +cat /tmp/bash-a +cat /tmp/bash-b +exec 11&4 +echo to b 1>&5 +cat /tmp/bash-a +cat /tmp/bash-b + +exec 11<&- +echo "Point 4" + +exec 6<>/tmp/bash-c +echo to c 1>&6 +cat /tmp/bash-c +echo "Point 5" + +rm -f /tmp/bash-a /tmp/bash-b /tmp/bash-c + +# +# Test the effect of input buffering on the shell's input +# +${THIS_SH} < redir1.sub + +# more open, close, duplicate file descriptors +${THIS_SH} ./redir3.sub < ./redir3.in1 + +# still more redirections +${THIS_SH} ./redir4.sub < redir4.in1 + +# various forms of null redirection +testf() +{ + if [ -f "$1" ]; then + rm -f "$1" + else + echo oops -- $1 not found + fi +} + +> /tmp/null-redir-a +testf /tmp/null-redir-a + +$EXIT > /tmp/null-redir-b +testf /tmp/null-redir-b + +( > /tmp/null-redir-c ) +testf /tmp/null-redir-c + +$EXIT > /tmp/null-redir-d & +wait +testf /tmp/null-redir-d + +exit 3 | $EXIT > /tmp/null-redir-e +echo $? -- ${PIPESTATUS[@]} +testf /tmp/null-redir-e + +exit 4 | > /tmp/null-redir-f +echo $? -- ${PIPESTATUS[@]} +testf /tmp/null-redir-f + +> /tmp/null-redir-g & +wait +testf /tmp/null-redir-g + +exec >/tmp/null-redir-h & +wait +testf /tmp/null-redir-h + +# make sure async commands don't get /dev/null as stdin when an explicit +# input redirection is supplied +for x in 1 2 3; do + { read line ; echo $line ; } & + wait + { read line ; echo $line ; } & + wait +done << EOF +ab +cd +ef +gh +ij +kl +EOF + +# make sure async commands get /dev/null as stdin in the absence of any +# input redirection +/bin/cat & +wait +echo $? + +# make sure that loops work OK with here documents and are not run in +# subshells +while read line; do + echo $line + l2=$line +done << EOF +ab +cd +EOF +echo $l2 + +# These should not echo anything -- bug in versions before 2.04 +( ( echo hello 1>&3 ) 3>&1 ) >/dev/null 2>&1 + +( ( echo hello 1>&3 ) 3>&1 ) >/dev/null 2>&1 | cat + +# in posix mode, non-interactive shells are not allowed to perform +# filename expansion on input redirections, even if they expand to +# a single filename +set -o posix +cat < redir1.* + +# test ksh93 dup-and-close (move fd) redirections +${THIS_SH} ./redir5.sub + +# test behavior after a write error with a builtin command +${THIS_SH} ./redir6.sub + +# problem with redirections using fds bash uses internally +: ${TMPDIR:=/tmp} + +trap 'rm -f $TMPDIR/bash-redir-$$' 0 1 2 3 6 15 + +echo before block +{ + echo before redir + exec 10>&1 + echo after redir +} > $TMPDIR/bash-redir-$$ + +echo after block + +${THIS_SH} ./redir7.sub diff --git a/bash-20060316/tests/redir1.sub b/bash-20060316/tests/redir1.sub new file mode 100644 index 000000000..f1082e9fa --- /dev/null +++ b/bash-20060316/tests/redir1.sub @@ -0,0 +1,8 @@ +# +# Test the effect of input buffering on the shell's input +# +echo this is redir1.sub + +exec 0< redir2.sub + +echo BUG: after exec in redir1.sub diff --git a/bash-20060316/tests/redir2.sub b/bash-20060316/tests/redir2.sub new file mode 100644 index 000000000..0820f701b --- /dev/null +++ b/bash-20060316/tests/redir2.sub @@ -0,0 +1 @@ +echo this is redir2.sub diff --git a/bash-20060316/tests/redir3.in1 b/bash-20060316/tests/redir3.in1 new file mode 100644 index 000000000..dbd1fc364 --- /dev/null +++ b/bash-20060316/tests/redir3.in1 @@ -0,0 +1,2 @@ +ab +cd diff --git a/bash-20060316/tests/redir3.in2 b/bash-20060316/tests/redir3.in2 new file mode 100644 index 000000000..5a1c32b01 --- /dev/null +++ b/bash-20060316/tests/redir3.in2 @@ -0,0 +1,2 @@ +root +daemon diff --git a/bash-20060316/tests/redir3.sub b/bash-20060316/tests/redir3.sub new file mode 100644 index 000000000..c486253e6 --- /dev/null +++ b/bash-20060316/tests/redir3.sub @@ -0,0 +1,26 @@ +read line1 + +echo read line1 \"$line1\" + +exec 4<./redir3.in2 + +exec 5<&0 +exec 0<&4 + +read line2 + +echo read line2 \"$line2\" + +exec 0<&5 + +read line3 + +echo read line3 \"$line3\" + +exec 0<&4 + +read line4 + +echo read line4 \"$line4\" + +exec 4<&- diff --git a/bash-20060316/tests/redir4.in1 b/bash-20060316/tests/redir4.in1 new file mode 100644 index 000000000..e61ef7b96 --- /dev/null +++ b/bash-20060316/tests/redir4.in1 @@ -0,0 +1 @@ +aa diff --git a/bash-20060316/tests/redir4.sub b/bash-20060316/tests/redir4.sub new file mode 100644 index 000000000..47344554e --- /dev/null +++ b/bash-20060316/tests/redir4.sub @@ -0,0 +1,56 @@ +minus=- + +# standard input +fd=0 + +exec 3<&$fd + +read line <&3 +echo from stdin: $line + +# close fd 3 +exec 3<&${minus} + +# should give `bad fd', but exact error messages vary +# read line <&3 + +# standard output +fd=1 + +exec 4>&$fd + +echo to stdout >&4 + +exec 4>&$minus + +# should give `bad fd', but exact error messages vary +# echo to stdout >&4 + +unset fd + +# these are ambiguous redirects +exec 3<&$fd +exec 4>&$fd + +exec 3>&1 4>&2 + +exec >&/tmp/err-and-out +echo to stdout +echo to stderr >&2 + +exec 1>&3 2>&4 +echo /tmp/err-and-out: +cat /tmp/err-and-out + +rm /tmp/err-and-out + +fd=/tmp/err-and-out +exec >&$fd +echo to stdout +echo to stderr >&2 + +exec 1>&3 2>&4 +echo /tmp/err-and-out: +cat /tmp/err-and-out + +rm /tmp/err-and-out diff --git a/bash-20060316/tests/redir5.sub b/bash-20060316/tests/redir5.sub new file mode 100644 index 000000000..5d59d39c5 --- /dev/null +++ b/bash-20060316/tests/redir5.sub @@ -0,0 +1,31 @@ +# tests of ksh93-like dup-and-close redirection operators +exec 9<$0 + +f() +{ +exec 5<$0 + +exec 0<&5- + +while read line; do + echo "$line" +done +} + +f + +typeset -f f + +# make sure it was closed +read -u 5 foo +echo after read + +exec 5<&0 + +exec <&- + +read abcde + +exec 0<&9- +read line +echo $line diff --git a/bash-20060316/tests/redir6.sub b/bash-20060316/tests/redir6.sub new file mode 100644 index 000000000..60cc68b0a --- /dev/null +++ b/bash-20060316/tests/redir6.sub @@ -0,0 +1,8 @@ +cd / +pwd +help >&- +pwd +pwd +echo $? +echo $? +echo $? diff --git a/bash-20060316/tests/redir7.sub b/bash-20060316/tests/redir7.sub new file mode 100644 index 000000000..3fd371c70 --- /dev/null +++ b/bash-20060316/tests/redir7.sub @@ -0,0 +1,69 @@ +# weird redirections that caused trouble and were fixed in post-3.0 bash +stuff() +{ + c=1 + ( sleep 5 < /dev/null >/dev/null 2>&1 & ) & +} + +exec 3>&1 +eval ` +exec 4>&1 >&3 3>&- +{ + stuff 4>&- + echo "c=$c" >&4 +}` +echo c1 is $c + +unset -f stuff + +stuff() +{ + c=2 + ( sleep 5 < /dev/null >/dev/null 2>&1 & ) +} + +exec 3>&1 +eval ` +exec 4>&1 >&3 3>&- +{ + stuff 4>&- + echo "c=$c" >&4 +}` +echo c2 is $c + +unset -f stuff + +stuff() +{ + c=3 + { sleep 5 < /dev/null >/dev/null 2>&1 & } & +} + +exec 3>&1 +eval ` +exec 4>&1 >&3 3>&- +{ + stuff 4>&- + echo "c=$c" >&4 +}` +echo c3 is $c + +unset -f stuff + +stuff() +{ + c=4 + { sleep 5 < /dev/null >/dev/null 2>&1 & } +} + +exec 3>&1 +eval ` +exec 4>&1 >&3 3>&- +{ + stuff 4>&- + echo "c=$c" >&4 +}` +echo c4 is $c + +# fixed in bash-3.1 +echo 'exec <&3' | ${THIS_SH} 3<&0 diff --git a/bash-20060316/tests/rhs-exp.right b/bash-20060316/tests/rhs-exp.right new file mode 100644 index 000000000..c5dca4288 --- /dev/null +++ b/bash-20060316/tests/rhs-exp.right @@ -0,0 +1,74 @@ +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[2] = <=> +argv[3] = <-DSELECT_VECS=$selvecs> +argv[1] = +argv[2] = <=> +argv[3] = <-DSELECT_VECS='&m68kcoff_vec'> +argv[1] = +argv[2] = <=> +argv[3] = <-DSELECT_VECS=&m68kcoff_vec> +argv[1] = +argv[2] = <=> +argv[3] = <-DSELECT_VECS="&m68kcoff_vec"> +argv[1] = +argv[2] = <=> +argv[3] = <-DSELECT_VECS=\&m68kcoff_vec\> +argv[1] = +argv[2] = <=> +argv[3] = <-DSELECT_VECS=&m68kcoff_vec> +argv[1] = +argv[2] = <=> +argv[3] = <-DSELECT_VECS=$selvecs> +argv[1] = +argv[2] = <=> +argv[3] = <-DSELECT_VECS=$selvecs> +argv[1] = +argv[2] = <=> +argv[3] = <-DSELECT_VECS=$selvecs> +argv[1] = +argv[2] = <=> +argv[3] = <-DSELECT_VECS=\&m68kcoff_vec> +argv[1] = +argv[2] = <=> +argv[3] = <-DSELECT_VECS=\'&m68kcoff_vec\'> +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[2] = <=> +argv[3] = <-DSELECT_VECS=\'> +a*b +ab +a?b +ab +a/b +ab diff --git a/bash-20060316/tests/rhs-exp.tests b/bash-20060316/tests/rhs-exp.tests new file mode 100644 index 000000000..d457198d9 --- /dev/null +++ b/bash-20060316/tests/rhs-exp.tests @@ -0,0 +1,49 @@ +selvecs='&m68kcoff_vec' +recho "TDEFAULTS = ${selvecs:+-DSELECT_VECS='$selvecs'}" +recho "TDEFAULTS = ${selvecs:+-DSELECT_VECS=\'$selvecs\'}" +recho "TDEFAULTS = ${selvecs:+-DSELECT_VECS="$selvecs"}" +recho "TDEFAULTS = ${selvecs:+-DSELECT_VECS=\"$selvecs\"}" +recho "TDEFAULTS = ${selvecs:+-DSELECT_VECS=\\$selvecs\\}" +recho "TDEFAULTS = ${selvecs:+-DSELECT_VECS=$selvecs}" +recho "TDEFAULTS = ${selvecs:+-DSELECT_VECS=\$selvecs}" +recho "TDEFAULTS = ${selvecs:+-DSELECT_VECS="\$selvecs"}" +recho "TDEFAULTS = ${selvecs:+-DSELECT_VECS='$selvecs'"$null"}" +recho "TDEFAULTS = ${selvecs:+-DSELECT_VECS="\\$selvecs"}" +recho "TDEFAULTS = ${selvecs:+-DSELECT_VECS="\'$selvecs\'"}" + +recho TDEFAULTS = ${selvecs:+-DSELECT_VECS='$selvecs'} +recho TDEFAULTS = ${selvecs:+-DSELECT_VECS=\'$selvecs\'} +recho TDEFAULTS = ${selvecs:+-DSELECT_VECS="$selvecs"} +recho TDEFAULTS = ${selvecs:+-DSELECT_VECS=\"$selvecs\"} +recho TDEFAULTS = ${selvecs:+-DSELECT_VECS=\\$selvecs\\} +recho TDEFAULTS = ${selvecs:+-DSELECT_VECS=$selvecs} +recho TDEFAULTS = ${selvecs:+-DSELECT_VECS=\$selvecs} +recho TDEFAULTS = ${selvecs:+-DSELECT_VECS="\$selvecs"} +recho TDEFAULTS = ${selvecs:+-DSELECT_VECS='$selvecs'"$null"} +recho TDEFAULTS = ${selvecs:+-DSELECT_VECS="\\$selvecs"} +recho TDEFAULTS = ${selvecs:+-DSELECT_VECS="\'$selvecs\'"} + +recho "TDEFAULTS = ${selvecs:+-DSELECT_VECS="\p"}" +recho "TDEFAULTS = ${selvecs:+-DSELECT_VECS=\p}" +recho "TDEFAULTS = ${selvecs:+-DSELECT_VECS="\\"}" +recho "TDEFAULTS = ${selvecs:+-DSELECT_VECS=\\}" +recho "TDEFAULTS = ${selvecs:+-DSELECT_VECS=\'}" +recho "TDEFAULTS = ${selvecs:+-DSELECT_VECS="\'"}" + +recho TDEFAULTS = ${selvecs:+-DSELECT_VECS="\p"} +recho TDEFAULTS = ${selvecs:+-DSELECT_VECS=\p} +recho TDEFAULTS = ${selvecs:+-DSELECT_VECS="\\"} +recho TDEFAULTS = ${selvecs:+-DSELECT_VECS=\\} +recho TDEFAULTS = ${selvecs:+-DSELECT_VECS=\'} +recho TDEFAULTS = ${selvecs:+-DSELECT_VECS="\'"} + +# more tests for bash-3.0 behavior + +var="a*b" ; echo "${var//\\*/}" +var="a*b" ; echo "${var//\*/}" + +var="a?b" ; echo "${var//\\?/}" +var="a?b" ; echo "${var//\?/}" + +var="a/b" ; echo "${var//\\//}" +var="a/b" ; echo "${var//\//}" diff --git a/bash-20060316/tests/rsh.right b/bash-20060316/tests/rsh.right new file mode 100644 index 000000000..e673b94d4 --- /dev/null +++ b/bash-20060316/tests/rsh.right @@ -0,0 +1,13 @@ +./rsh.tests: line 9: cd: restricted +./rsh.tests: line 10: PATH: readonly variable +./rsh.tests: line 11: SHELL: readonly variable +./rsh.tests: line 12: /bin/sh: restricted: cannot specify `/' in command names +./rsh.tests: line 14: .: ./source.sub3: restricted +./rsh.tests: line 17: /tmp/restricted: restricted: cannot redirect output +./rsh.tests: line 21: /tmp/restricted: restricted: cannot redirect output +./rsh.tests: line 26: command: -p: restricted +./rsh.tests: line 28: set: +r: invalid option +set: usage: set [--abefhkmnptuvxBCHP] [-o option] [arg ...] +./rsh.tests: line 29: set: restricted: invalid option name +./rsh.tests: line 31: exec: restricted +./rsh.tests: after exec diff --git a/bash-20060316/tests/rsh.tests b/bash-20060316/tests/rsh.tests new file mode 100644 index 000000000..ffdf6e553 --- /dev/null +++ b/bash-20060316/tests/rsh.tests @@ -0,0 +1,33 @@ +# test restricted shell mode -- these should all be errors +# +# things not tested for: +# adding builtins dynamically with enable -f +# importing function definitions from environment + +set -r + +cd / +PATH=$PATH:/usr/local/bin +SHELL=/bin/sh +/bin/sh -c 'echo /bin/sh executed' + +. ./source.sub3 + +rm -f /tmp/restricted +echo abc > /tmp/restricted +if [ -f /tmp/restricted ]; then + echo oops 1 -- output +fi +echo abc >> /tmp/restricted +if [ -f /tmp/restricted ]; then + echo oops 2 -- append +fi + +command -p date + +set +r +set +o restricted + +exec /bin/date + +echo $0: after exec diff --git a/bash-20060316/tests/run-alias b/bash-20060316/tests/run-alias new file mode 100644 index 000000000..6a20b06e9 --- /dev/null +++ b/bash-20060316/tests/run-alias @@ -0,0 +1,2 @@ +${THIS_SH} ./alias.tests > /tmp/xx 2>&1 +diff /tmp/xx alias.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-all b/bash-20060316/tests/run-all new file mode 100644 index 000000000..d3f3a0e9c --- /dev/null +++ b/bash-20060316/tests/run-all @@ -0,0 +1,29 @@ +#! /bin/sh + +PATH=.:$PATH # just to get recho/zecho/printenv if not run via `make tests' +export PATH + +# unset BASH_ENV only if it is set +[ "${BASH_ENV+set}" = "set" ] && unset BASH_ENV +# ditto for SHELLOPTS +#[ "${SHELLOPTS+set}" = "set" ] && unset SHELLOPTS + +: ${THIS_SH:=../bash} +export THIS_SH + +${THIS_SH} ./version + +rm -f /tmp/xx + +echo Any output from any test, unless otherwise noted, indicates a possible anomaly + +for x in run-* +do + case $x in + $0|run-minimal|run-gprof) ;; + *.orig|*~) ;; + *) echo $x ; sh $x ;; + esac +done + +exit 0 diff --git a/bash-20060316/tests/run-appendop b/bash-20060316/tests/run-appendop new file mode 100644 index 000000000..c5bffbc1b --- /dev/null +++ b/bash-20060316/tests/run-appendop @@ -0,0 +1,2 @@ +${THIS_SH} ./appendop.tests > /tmp/xx 2>&1 +diff /tmp/xx appendop.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-arith b/bash-20060316/tests/run-arith new file mode 100644 index 000000000..f9f573c6e --- /dev/null +++ b/bash-20060316/tests/run-arith @@ -0,0 +1,2 @@ +${THIS_SH} ./arith.tests > /tmp/xx 2>&1 +diff /tmp/xx arith.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-arith-for b/bash-20060316/tests/run-arith-for new file mode 100644 index 000000000..1d1307526 --- /dev/null +++ b/bash-20060316/tests/run-arith-for @@ -0,0 +1,2 @@ +${THIS_SH} ./arith-for.tests > /tmp/xx 2>&1 +diff /tmp/xx arith-for.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-array b/bash-20060316/tests/run-array new file mode 100644 index 000000000..44207d9cc --- /dev/null +++ b/bash-20060316/tests/run-array @@ -0,0 +1,4 @@ +echo "warning: all of these tests will fail if arrays have not" >&2 +echo "warning: been compiled into the shell" >&2 +${THIS_SH} ./array.tests > /tmp/xx 2>&1 +diff /tmp/xx array.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-array2 b/bash-20060316/tests/run-array2 new file mode 100644 index 000000000..dd94ec824 --- /dev/null +++ b/bash-20060316/tests/run-array2 @@ -0,0 +1,4 @@ +echo "warning: all of these tests will fail if arrays have not" >&2 +echo "warning: been compiled into the shell" >&2 +${THIS_SH} ./array-at-star > /tmp/xx 2>&1 +diff /tmp/xx array2.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-braces b/bash-20060316/tests/run-braces new file mode 100644 index 000000000..53d4f1b77 --- /dev/null +++ b/bash-20060316/tests/run-braces @@ -0,0 +1,2 @@ +${THIS_SH} ./braces.tests > /tmp/xx +diff /tmp/xx braces.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-builtins b/bash-20060316/tests/run-builtins new file mode 100644 index 000000000..53d963ebf --- /dev/null +++ b/bash-20060316/tests/run-builtins @@ -0,0 +1,2 @@ +${THIS_SH} ./builtins.tests > /tmp/xx 2>&1 +diff /tmp/xx builtins.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-cond b/bash-20060316/tests/run-cond new file mode 100644 index 000000000..6b119a621 --- /dev/null +++ b/bash-20060316/tests/run-cond @@ -0,0 +1,7 @@ +echo "warning: all of these tests will fail if the conditional command has not" >&2 +echo "warning: been compiled into the shell" >&2 +echo "warning: some of these tests will fail if extended pattern matching has not" >&2 +echo "warning: been compiled into the shell" >&2 + +${THIS_SH} ./cond.tests > /tmp/xx 2>&1 +diff /tmp/xx cond.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-cprint b/bash-20060316/tests/run-cprint new file mode 100644 index 000000000..5f202e437 --- /dev/null +++ b/bash-20060316/tests/run-cprint @@ -0,0 +1,2 @@ +${THIS_SH} ./cprint.tests > /tmp/xx 2>&1 +diff /tmp/xx cprint.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-dbg-support b/bash-20060316/tests/run-dbg-support new file mode 100755 index 000000000..9e9c649c6 --- /dev/null +++ b/bash-20060316/tests/run-dbg-support @@ -0,0 +1,11 @@ +#!../bash +#$Id: run-dbg-support,v 1.5 2002/11/14 06:08:16 rockyb Exp $ + +TEST_NAME='dbg-support' +TEST_FILE="/tmp/${TEST_NAME}.check" +${THIS_SH} ./${TEST_NAME}.tests > $TEST_FILE 2>&1 < /dev/null +set -f +diff $TEST_FILE ${TEST_NAME}.right && rm -f $TEST_FILE + +# Return code tells testing mechanism whether passed or not. +exit $? diff --git a/bash-20060316/tests/run-dbg-support2 b/bash-20060316/tests/run-dbg-support2 new file mode 100755 index 000000000..f62583f8b --- /dev/null +++ b/bash-20060316/tests/run-dbg-support2 @@ -0,0 +1,16 @@ +#!../bash +#$Id: run-dbg-support2,v 1.3 2002/11/14 06:08:16 rockyb Exp $ + +TEST_NAME='dbg-support2' +TEST_FILE="/tmp/${TEST_NAME}.check" +${THIS_SH} ./${TEST_NAME}.tests > $TEST_FILE 2>&1 < /dev/null +set -f +diff $TEST_FILE ${TEST_NAME}.right && rm -f $TEST_FILE + +# Return code tells testing mechanism whether passed or not. +exit $? + +#;;; Local Variables: *** +#;;; mode:shell-script *** +#;;; eval: (sh-set-shell "bash") *** +#;;; End: *** diff --git a/bash-20060316/tests/run-dirstack b/bash-20060316/tests/run-dirstack new file mode 100644 index 000000000..6390d1b75 --- /dev/null +++ b/bash-20060316/tests/run-dirstack @@ -0,0 +1,5 @@ +${THIS_SH} ./dstack.tests > /tmp/xx 2>&1 +diff /tmp/xx dstack.right && rm -f /tmp/xx + +${THIS_SH} ./dstack2.tests > /tmp/xx 2>&1 +diff /tmp/xx dstack2.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-dollars b/bash-20060316/tests/run-dollars new file mode 100644 index 000000000..0ced4145a --- /dev/null +++ b/bash-20060316/tests/run-dollars @@ -0,0 +1,2 @@ +${THIS_SH} ./dollar-at-star > /tmp/xx 2>&1 +diff /tmp/xx dollar.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-errors b/bash-20060316/tests/run-errors new file mode 100644 index 000000000..6be4e0c7b --- /dev/null +++ b/bash-20060316/tests/run-errors @@ -0,0 +1,2 @@ +${THIS_SH} ./errors.tests > /tmp/xx 2>&1 +diff /tmp/xx errors.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-execscript b/bash-20060316/tests/run-execscript new file mode 100644 index 000000000..f97ab21b1 --- /dev/null +++ b/bash-20060316/tests/run-execscript @@ -0,0 +1,9 @@ +echo "warning: the text of a system error message may vary between systems and" >&2 +echo "warning: produce diff output." >&2 +echo "warning: if the text of the error messages concerning \`notthere' or" >&2 +echo "warning: \`/tmp/bash-notthere' not being found or \`/' being a directory" >&2 +echo "warning: produce diff output, please do not consider this a test failure" >&2 +echo "warning: if diff output differing only in the location of the bash" >&2 +echo "warning: binary appears, please do not consider this a test failure" >&2 +${THIS_SH} ./execscript > /tmp/xx 2>&1 +diff /tmp/xx exec.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-exp-tests b/bash-20060316/tests/run-exp-tests new file mode 100644 index 000000000..c55f7147b --- /dev/null +++ b/bash-20060316/tests/run-exp-tests @@ -0,0 +1,2 @@ +${THIS_SH} ./exp-tests | grep -v '^expect' > /tmp/xx +diff /tmp/xx exp.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-extglob b/bash-20060316/tests/run-extglob new file mode 100644 index 000000000..06316ad3c --- /dev/null +++ b/bash-20060316/tests/run-extglob @@ -0,0 +1,4 @@ +PATH=$PATH:`pwd` +export PATH +${THIS_SH} ./extglob.tests | grep -v '^expect' > /tmp/xx +diff /tmp/xx extglob.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-extglob2 b/bash-20060316/tests/run-extglob2 new file mode 100644 index 000000000..0a6f728ec --- /dev/null +++ b/bash-20060316/tests/run-extglob2 @@ -0,0 +1,4 @@ +PATH=$PATH:`pwd` +export PATH +${THIS_SH} ./extglob2.tests | grep -v '^expect' > /tmp/xx +diff /tmp/xx extglob2.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-extglob3 b/bash-20060316/tests/run-extglob3 new file mode 100644 index 000000000..267519686 --- /dev/null +++ b/bash-20060316/tests/run-extglob3 @@ -0,0 +1,4 @@ +PATH=$PATH:`pwd` +export PATH +${THIS_SH} ./extglob3.tests > /tmp/xx +diff /tmp/xx extglob3.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-func b/bash-20060316/tests/run-func new file mode 100644 index 000000000..f449eb866 --- /dev/null +++ b/bash-20060316/tests/run-func @@ -0,0 +1,5 @@ +echo "warning: if you have exported functions defined in your environment," >&2 +echo "warning: they may show up as diff output." >&2 +echo "warning: if so, please do not consider this a test failure" >&2 +${THIS_SH} ./func.tests > /tmp/xx 2>&1 +diff /tmp/xx func.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-getopts b/bash-20060316/tests/run-getopts new file mode 100644 index 000000000..1e8b5fb73 --- /dev/null +++ b/bash-20060316/tests/run-getopts @@ -0,0 +1,2 @@ +${THIS_SH} ./getopts.tests > /tmp/xx 2>&1 +diff /tmp/xx getopts.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-glob-test b/bash-20060316/tests/run-glob-test new file mode 100644 index 000000000..659112a36 --- /dev/null +++ b/bash-20060316/tests/run-glob-test @@ -0,0 +1,4 @@ +PATH=$PATH:`pwd` +export PATH +${THIS_SH} ./glob-test 2>&1 | grep -v '^expect' > /tmp/xx +diff /tmp/xx glob.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-gprof b/bash-20060316/tests/run-gprof new file mode 100644 index 000000000..87d508673 --- /dev/null +++ b/bash-20060316/tests/run-gprof @@ -0,0 +1,53 @@ +#! /bin/sh + +PATH=.:$PATH # just to get recho/zecho/printenv if not run via `make tests' +export PATH + +# unset BASH_ENV only if it is set +[ "${BASH_ENV+set}" = "set" ] && unset BASH_ENV +# ditto for SHELLOPTS +#[ "${SHELLOPTS+set}" = "set" ] && unset SHELLOPTS + +: ${THIS_SH:=../bash} +export THIS_SH + +rm -f gmon.sum + +${THIS_SH} ./version + +rm -f /tmp/xx + +# prime the pump; gprof complains if gmon.sum is empty +[ -f bash.gmon ] && gprof -s ${THIS_SH} bash.gmon >/dev/null + +echo Any output from any test, unless otherwise noted, indicates a possible anomaly + +for x in run-* +do + case $x in + $0|run-all|run-minimal|run-gprof) ;; + *.orig|*~) ;; + *) echo $x ; sh $x + if [ -f /tmp/bash.gmon ]; then + if [ -f bash.gmon ]; then + gprof -s ${THIS_SH} gmon.sum bash.gmon /tmp/bash.gmon >/dev/null + else + gprof -s ${THIS_SH} gmon.sum /tmp/bash.gmon >/dev/null + fi + else + gprof -s ${THIS_SH} gmon.sum bash.gmon >/dev/null + fi + rm -f /tmp/bash.gmon bash.gmon + ;; + esac +done + +gprof -s ${THIS_SH} gmon.sum ./-specialname.gmon ./ohio-state.gmon > /dev/null +rm -f ./-specialname.gmon ./ohio-state.gmon + +if [ -f specialname.gmon ]; then + gprof -s ${THIS_SH} gmon.sum ./specialname.gmon > /dev/null + rm -f specialname.gmon +fi + +exit 0 diff --git a/bash-20060316/tests/run-heredoc b/bash-20060316/tests/run-heredoc new file mode 100644 index 000000000..c4e3168c1 --- /dev/null +++ b/bash-20060316/tests/run-heredoc @@ -0,0 +1,2 @@ +${THIS_SH} ./heredoc.tests > /tmp/xx 2>&1 +diff /tmp/xx heredoc.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-herestr b/bash-20060316/tests/run-herestr new file mode 100644 index 000000000..8c5b36d32 --- /dev/null +++ b/bash-20060316/tests/run-herestr @@ -0,0 +1,2 @@ +${THIS_SH} ./herestr.tests > /tmp/xx 2>&1 +diff /tmp/xx herestr.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-histexpand b/bash-20060316/tests/run-histexpand new file mode 100644 index 000000000..06a415bd9 --- /dev/null +++ b/bash-20060316/tests/run-histexpand @@ -0,0 +1,4 @@ +echo "warning: all of these tests will fail if history has not been compiled" >&2 +echo "warning: into the shell" >&2 +${THIS_SH} ./histexp.tests > /tmp/xx 2>&1 +diff /tmp/xx histexp.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-history b/bash-20060316/tests/run-history new file mode 100644 index 000000000..ea356b199 --- /dev/null +++ b/bash-20060316/tests/run-history @@ -0,0 +1,4 @@ +echo "warning: all of these tests will fail if history has not been compiled" >&2 +echo "warning: into the shell" >&2 +${THIS_SH} ./history.tests > /tmp/xx 2>&1 +diff /tmp/xx history.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-ifs b/bash-20060316/tests/run-ifs new file mode 100644 index 000000000..3f9d82097 --- /dev/null +++ b/bash-20060316/tests/run-ifs @@ -0,0 +1,2 @@ +${THIS_SH} ./ifs.tests > /tmp/xx 2>&1 +diff /tmp/xx ifs.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-ifs-posix b/bash-20060316/tests/run-ifs-posix new file mode 100644 index 000000000..e578e8dd3 --- /dev/null +++ b/bash-20060316/tests/run-ifs-posix @@ -0,0 +1,2 @@ +${THIS_SH} ./ifs-posix.tests > /tmp/xx 2>&1 +diff /tmp/xx ifs-posix.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-input-test b/bash-20060316/tests/run-input-test new file mode 100644 index 000000000..aaa5d35d8 --- /dev/null +++ b/bash-20060316/tests/run-input-test @@ -0,0 +1,2 @@ +${THIS_SH} < ./input-line.sh > /tmp/xx +diff /tmp/xx input.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-intl b/bash-20060316/tests/run-intl new file mode 100644 index 000000000..6a9234a3b --- /dev/null +++ b/bash-20060316/tests/run-intl @@ -0,0 +1,8 @@ +# See whether or not we can use `diff -a' +( diff -a ./intl.right ./intl.right >/dev/null 2>&1 ) && AFLAG=-a + +echo "warning: some of these tests will fail if you do not have UTF-8" >&2 +echo "warning: locales installed on your system." >&2 +echo "warning: please ignore any differences consisting only of white space" >&2 +${THIS_SH} ./intl.tests > /tmp/xx +diff $AFLAG /tmp/xx intl.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-invert b/bash-20060316/tests/run-invert new file mode 100644 index 000000000..67e08792a --- /dev/null +++ b/bash-20060316/tests/run-invert @@ -0,0 +1,2 @@ +${THIS_SH} ./invert.tests | grep -v '^expect' > /tmp/xx +diff /tmp/xx invert.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-iquote b/bash-20060316/tests/run-iquote new file mode 100644 index 000000000..61a8aa772 --- /dev/null +++ b/bash-20060316/tests/run-iquote @@ -0,0 +1,2 @@ +${THIS_SH} ./iquote.tests >/tmp/xx 2>&1 +diff /tmp/xx iquote.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-jobs b/bash-20060316/tests/run-jobs new file mode 100644 index 000000000..bfd4fa039 --- /dev/null +++ b/bash-20060316/tests/run-jobs @@ -0,0 +1,7 @@ +echo "warning: some of these tests may fail if job control has not been compiled" >&2 +echo "warning: into the shell" >&2 +echo "warning: there may be a message regarding a cat process dying due to a" >&2 +echo "warning: SIGHUP. Please disregard." >&2 + +${THIS_SH} ./jobs.tests > /tmp/xx 2>&1 +diff /tmp/xx jobs.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-minimal b/bash-20060316/tests/run-minimal new file mode 100644 index 000000000..5c5dcc498 --- /dev/null +++ b/bash-20060316/tests/run-minimal @@ -0,0 +1,36 @@ +#! /bin/sh +# +# run-minimal - a version of run-all for shells configured with +# --enable-minimal-config +# +PATH=.:$PATH # just to get the right version of printenv +export PATH + +# unset BASH_ENV only if it is set +[ "${BASH_ENV+set}" = "set" ] && unset BASH_ENV +# ditto for SHELLOPTS +#[ "${SHELLOPTS+set}" = "set" ] && unset SHELLOPTS + +: ${THIS_SH:=../bash} +export THIS_SH + +${THIS_SH} ./version.mini + +rm -f /tmp/xx + +echo Testing ${THIS_SH} +echo Any output from any test, unless otherwise noted, indicates a possible anomaly +for x in run-* +do + case $x in + $0) ;; + *.orig|*~) ;; + run-dollars|run-execscript|run-func|run-getopts|run-heredoc) echo $x ; sh $x ;; + run-ifs-tests|run-input-test|run-invert|run-more-exp|run-nquote) echo $x ; sh $x ;; + run-ifs-0posix|run-posix2|run-posixpat) echo $x ; sh $x ;; + run-precedence|run-quote|run-read|run-rhs-exp|run-strip|run-tilde) echo $x ; sh $x ;; + *) ;; + esac +done + +exit 0 diff --git a/bash-20060316/tests/run-more-exp b/bash-20060316/tests/run-more-exp new file mode 100644 index 000000000..60f55cb69 --- /dev/null +++ b/bash-20060316/tests/run-more-exp @@ -0,0 +1,2 @@ +${THIS_SH} ./more-exp.tests 2>&1 | grep -v '^expect' > /tmp/xx +diff /tmp/xx more-exp.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-new-exp b/bash-20060316/tests/run-new-exp new file mode 100644 index 000000000..2e3d7c9da --- /dev/null +++ b/bash-20060316/tests/run-new-exp @@ -0,0 +1,10 @@ +echo "warning: two of these tests will fail if your OS does not support" >&2 +echo "warning: named pipes or the /dev/fd filesystem. If the tests of the" >&2 +echo "warning: process substitution mechanism fail, please do not consider" >&2 +echo "warning: this a test failure" >&2 +echo "warning: if you have exported variables beginning with the string _Q," >&2 +echo "warning: diff output may be generated. If so, please do not consider" >&2 +echo "warning: this a test failure" >&2 + +${THIS_SH} ./new-exp.tests 2>&1 | grep -v '^expect' > /tmp/xx +diff /tmp/xx new-exp.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-nquote b/bash-20060316/tests/run-nquote new file mode 100644 index 000000000..006872c85 --- /dev/null +++ b/bash-20060316/tests/run-nquote @@ -0,0 +1,2 @@ +${THIS_SH} ./nquote.tests 2>&1 | grep -v '^expect' > /tmp/xx +diff /tmp/xx nquote.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-nquote1 b/bash-20060316/tests/run-nquote1 new file mode 100644 index 000000000..a71740fd2 --- /dev/null +++ b/bash-20060316/tests/run-nquote1 @@ -0,0 +1,4 @@ +echo "warning: several of these tests will fail if arrays have not" >&2 +echo "warning: been compiled into the shell." >&2 +${THIS_SH} ./nquote1.tests 2>&1 | grep -v '^expect' > /tmp/xx +diff /tmp/xx nquote1.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-nquote2 b/bash-20060316/tests/run-nquote2 new file mode 100644 index 000000000..80d1a8da3 --- /dev/null +++ b/bash-20060316/tests/run-nquote2 @@ -0,0 +1,4 @@ +echo "warning: several of these tests will fail if arrays have not" >&2 +echo "warning: been compiled into the shell." >&2 +${THIS_SH} ./nquote2.tests 2>&1 | grep -v '^expect' > /tmp/xx +diff /tmp/xx nquote2.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-nquote3 b/bash-20060316/tests/run-nquote3 new file mode 100644 index 000000000..45ba5f7e4 --- /dev/null +++ b/bash-20060316/tests/run-nquote3 @@ -0,0 +1,4 @@ +echo "warning: several of these tests will fail if arrays have not" >&2 +echo "warning: been compiled into the shell." >&2 +${THIS_SH} ./nquote3.tests 2>&1 | grep -v '^expect' > /tmp/xx +diff /tmp/xx nquote3.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-nquote4 b/bash-20060316/tests/run-nquote4 new file mode 100644 index 000000000..f7d05bb29 --- /dev/null +++ b/bash-20060316/tests/run-nquote4 @@ -0,0 +1,4 @@ +echo warning: some of these tests will fail if you do not have UTF-8 >&2 +echo warning: locales installed on your system +${THIS_SH} ./nquote4.tests 2>&1 | grep -v '^expect' > /tmp/xx +diff /tmp/xx nquote4.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-posix2 b/bash-20060316/tests/run-posix2 new file mode 100644 index 000000000..52eea2faa --- /dev/null +++ b/bash-20060316/tests/run-posix2 @@ -0,0 +1,2 @@ +${THIS_SH} ./posix2.tests 2>&1 | grep -v '^expect' > /tmp/xx +diff /tmp/xx posix2.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-posixpat b/bash-20060316/tests/run-posixpat new file mode 100644 index 000000000..ef2b140da --- /dev/null +++ b/bash-20060316/tests/run-posixpat @@ -0,0 +1,2 @@ +${THIS_SH} ./posixpat.tests > /tmp/xx +diff /tmp/xx posixpat.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-precedence b/bash-20060316/tests/run-precedence new file mode 100644 index 000000000..d81a86887 --- /dev/null +++ b/bash-20060316/tests/run-precedence @@ -0,0 +1,2 @@ +${THIS_SH} ./precedence > /tmp/xx +diff /tmp/xx prec.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-printf b/bash-20060316/tests/run-printf new file mode 100644 index 000000000..4555c6267 --- /dev/null +++ b/bash-20060316/tests/run-printf @@ -0,0 +1,5 @@ +# See whether or not we can use `diff -a' +( diff -a ./printf.tests ./printf.tests >/dev/null 2>&1 ) && AFLAG=-a + +${THIS_SH} ./printf.tests > /tmp/xx 2>&1 +diff $AFLAG /tmp/xx printf.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-quote b/bash-20060316/tests/run-quote new file mode 100644 index 000000000..69050428e --- /dev/null +++ b/bash-20060316/tests/run-quote @@ -0,0 +1,2 @@ +${THIS_SH} ./quote.tests >/tmp/xx 2>&1 +diff /tmp/xx quote.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-read b/bash-20060316/tests/run-read new file mode 100644 index 000000000..47e4188b9 --- /dev/null +++ b/bash-20060316/tests/run-read @@ -0,0 +1,4 @@ +echo "warning: please do not consider output differing only in the amount of" >&2 +echo "warning: white space to be an error." >&2 +${THIS_SH} ./read.tests > /tmp/xx 2>&1 +diff /tmp/xx read.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-redir b/bash-20060316/tests/run-redir new file mode 100644 index 000000000..2be45dd68 --- /dev/null +++ b/bash-20060316/tests/run-redir @@ -0,0 +1,7 @@ +echo "warning: the text of a system error message may vary between systems and" >&2 +echo "warning: produce diff output." >&2 +echo "warning: if the text of an error message concerning \`redir1.*' not being" >&2 +echo "warning: found or messages concerning bad file descriptors produce diff" >&2 +echo "warning: output, please do not consider it a test failure" >&2 +${THIS_SH} ./redir.tests > /tmp/xx 2>&1 +diff /tmp/xx redir.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-rhs-exp b/bash-20060316/tests/run-rhs-exp new file mode 100644 index 000000000..1f89d0b61 --- /dev/null +++ b/bash-20060316/tests/run-rhs-exp @@ -0,0 +1,2 @@ +${THIS_SH} ./rhs-exp.tests 2>&1 > /tmp/xx +diff /tmp/xx rhs-exp.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-rsh b/bash-20060316/tests/run-rsh new file mode 100644 index 000000000..ef2358370 --- /dev/null +++ b/bash-20060316/tests/run-rsh @@ -0,0 +1,2 @@ +${THIS_SH} ./rsh.tests > /tmp/xx 2>&1 +diff /tmp/xx rsh.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-set-e b/bash-20060316/tests/run-set-e new file mode 100644 index 000000000..cca61cd40 --- /dev/null +++ b/bash-20060316/tests/run-set-e @@ -0,0 +1,2 @@ +${THIS_SH} ./set-e-test > /tmp/xx +diff /tmp/xx set-e.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-set-x b/bash-20060316/tests/run-set-x new file mode 100755 index 000000000..b999e6980 --- /dev/null +++ b/bash-20060316/tests/run-set-x @@ -0,0 +1,11 @@ +#!../bash +#$Id: run-set-x,v 1.1 2002/12/09 13:12:37 rockyb Exp $ + +TEST_NAME='set-x' +TEST_FILE="/tmp/${TEST_NAME}.check" +${THIS_SH} ./${TEST_NAME}.tests > $TEST_FILE 2>&1 < /dev/null +set -f +diff $TEST_FILE ${TEST_NAME}.right && rm -f $TEST_FILE + +# Return code tells testing mechanism whether passed or not. +exit $? diff --git a/bash-20060316/tests/run-shopt b/bash-20060316/tests/run-shopt new file mode 100644 index 000000000..100a3de02 --- /dev/null +++ b/bash-20060316/tests/run-shopt @@ -0,0 +1,2 @@ +${THIS_SH} ./shopt.tests > /tmp/xx 2>&1 +diff /tmp/xx shopt.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-strip b/bash-20060316/tests/run-strip new file mode 100644 index 000000000..0d321152e --- /dev/null +++ b/bash-20060316/tests/run-strip @@ -0,0 +1,2 @@ +${THIS_SH} ./strip.tests > /tmp/xx +diff /tmp/xx strip.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-test b/bash-20060316/tests/run-test new file mode 100644 index 000000000..b2482c3f0 --- /dev/null +++ b/bash-20060316/tests/run-test @@ -0,0 +1,4 @@ +unset GROUPS UID 2>/dev/null + +${THIS_SH} ./test.tests >/tmp/xx 2>&1 +diff /tmp/xx test.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-tilde b/bash-20060316/tests/run-tilde new file mode 100644 index 000000000..b8569c11c --- /dev/null +++ b/bash-20060316/tests/run-tilde @@ -0,0 +1,2 @@ +${THIS_SH} ./tilde.tests > /tmp/xx +diff /tmp/xx tilde.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-tilde2 b/bash-20060316/tests/run-tilde2 new file mode 100644 index 000000000..4446989df --- /dev/null +++ b/bash-20060316/tests/run-tilde2 @@ -0,0 +1,2 @@ +${THIS_SH} ./tilde2.tests > /tmp/xx +diff /tmp/xx tilde2.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-trap b/bash-20060316/tests/run-trap new file mode 100644 index 000000000..b44844356 --- /dev/null +++ b/bash-20060316/tests/run-trap @@ -0,0 +1,6 @@ +echo "warning: UNIX versions number signals differently. If output differing" >&2 +echo "warning: only in line numbers is produced, please do not consider this" >&2 +echo "warning: a test failure." >&2 + +${THIS_SH} ./trap.tests > /tmp/xx 2>&1 +diff /tmp/xx trap.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-type b/bash-20060316/tests/run-type new file mode 100644 index 000000000..4d195b01b --- /dev/null +++ b/bash-20060316/tests/run-type @@ -0,0 +1,2 @@ +${THIS_SH} ./type.tests > /tmp/xx 2>&1 +diff /tmp/xx type.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/run-varenv b/bash-20060316/tests/run-varenv new file mode 100644 index 000000000..f0ce19529 --- /dev/null +++ b/bash-20060316/tests/run-varenv @@ -0,0 +1,2 @@ +${THIS_SH} ./varenv.sh | grep -v '^expect' > /tmp/xx +diff /tmp/xx varenv.right && rm -f /tmp/xx diff --git a/bash-20060316/tests/set-e-test b/bash-20060316/tests/set-e-test new file mode 100644 index 000000000..fe1549c41 --- /dev/null +++ b/bash-20060316/tests/set-e-test @@ -0,0 +1,84 @@ +if : ; then + set -e + N=95 + while :; do + # expr returns 1 if expression is null or 0 + set +e + N_MOD_100=`expr $N % 100` + set -e + echo $N_MOD_100 + N=`expr $N + 1` + if [ $N -eq 110 ]; then + break + fi + done + set +e +fi + +( +set -e +false +echo bad +) +echo $? + +x=$( +set -e +false +echo bad +) +echo $? $x + +# command subst should not inherit -e +set -e +echo $(false; echo ok) + +if set +e +then + false +fi +echo hi + +set -e + +# a failing command in the compound list following a while, until, or +# if should not cause the shell to exit + +while false; do + echo hi +done +echo while succeeded + +x=1 +until (( x == 4 )); do + x=4 +done +echo until succeeded: $x + +if false; then + echo oops +fi +echo if succeeded + +# failing commands that are part of an AND or OR list should not +# cause the shell to exit +false && echo AND list failed +echo AND list succeeded + +false || echo OR list succeeded + +! false +echo ! succeeded + +# make sure eval preserves the state of the -e flag and `!' reserved word +set -e +if eval false; then + echo oops +fi +echo eval succeeded + +! eval false +echo ! eval succeeded -- 1 + +! eval '(exit 5)' +echo ! eval succeeded -- 2 diff --git a/bash-20060316/tests/set-e.right b/bash-20060316/tests/set-e.right new file mode 100644 index 000000000..644841352 --- /dev/null +++ b/bash-20060316/tests/set-e.right @@ -0,0 +1,28 @@ +95 +96 +97 +98 +99 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +1 +1 +ok +hi +while succeeded +until succeeded: 4 +if succeeded +AND list succeeded +OR list succeeded +! succeeded +eval succeeded +! eval succeeded -- 1 +! eval succeeded -- 2 diff --git a/bash-20060316/tests/set-x.right b/bash-20060316/tests/set-x.right new file mode 100644 index 000000000..fc55bd887 --- /dev/null +++ b/bash-20060316/tests/set-x.right @@ -0,0 +1,28 @@ ++ (( i=0 )) ++ (( i<=5 )) ++ x=0 ++ (( i++ )) ++ (( i<=5 )) ++ x=0 ++ (( i++ )) ++ (( i<=5 )) ++ x=0 ++ (( i++ )) ++ (( i<=5 )) ++ x=0 ++ (( i++ )) ++ (( i<=5 )) ++ x=0 ++ (( i++ )) ++ (( i<=5 )) ++ x=0 ++ (( i++ )) ++ (( i<=5 )) ++ for i in 0 1 2 ++ x=i ++ for i in 0 1 2 ++ x=i ++ for i in 0 1 2 ++ x=i ++ case x in ++ x=i diff --git a/bash-20060316/tests/set-x.tests b/bash-20060316/tests/set-x.tests new file mode 100755 index 000000000..323b772db --- /dev/null +++ b/bash-20060316/tests/set-x.tests @@ -0,0 +1,21 @@ +#!../bash +# $Id: set-x.tests,v 1.1 2002/12/09 13:12:37 rockyb Exp $ +# +# Test that "set -x" shows what we think it should. +# +set -x +for ((i=0; i<=5; i++ )) ; do + x=0 +done +for i in 0 1 2 ; do + x=i +done +case x in + 0) x=i ;; + *) x=i ;; +esac + +#;;; Local Variables: *** +#;;; mode:shell-script *** +#;;; eval: (sh-set-shell "bash") *** +#;;; End: *** diff --git a/bash-20060316/tests/shopt.right b/bash-20060316/tests/shopt.right new file mode 100644 index 000000000..b2fc219c2 --- /dev/null +++ b/bash-20060316/tests/shopt.right @@ -0,0 +1,238 @@ +./shopt.tests: line 2: shopt: -z: invalid option +shopt: usage: shopt [-pqsu] [-o long-option] optname [optname...] +-- +shopt -u cdable_vars +shopt -s cdspell +shopt -u checkhash +shopt -u checkwinsize +shopt -s cmdhist +shopt -u dotglob +shopt -u execfail +shopt -s expand_aliases +shopt -u extdebug +shopt -u extglob +shopt -s extquote +shopt -u failglob +shopt -s force_fignore +shopt -u gnu_errfmt +shopt -u histappend +shopt -u histreedit +shopt -u histverify +shopt -s hostcomplete +shopt -u huponexit +shopt -s interactive_comments +shopt -u lithist +shopt -u login_shell +shopt -u mailwarn +shopt -u no_empty_cmd_completion +shopt -u nocaseglob +shopt -u nocasematch +shopt -u nullglob +shopt -s progcomp +shopt -s promptvars +shopt -u restricted_shell +shopt -u shift_verbose +shopt -s sourcepath +shopt -u xpg_echo +-- +shopt -u huponexit +shopt -u checkwinsize +shopt -s sourcepath +-- +shopt -s cdspell +shopt -s cmdhist +shopt -s expand_aliases +shopt -s extquote +shopt -s force_fignore +shopt -s hostcomplete +shopt -s interactive_comments +shopt -s progcomp +shopt -s promptvars +shopt -s sourcepath +-- +shopt -u cdable_vars +shopt -u checkhash +shopt -u checkwinsize +shopt -u dotglob +shopt -u execfail +shopt -u extdebug +shopt -u extglob +shopt -u failglob +shopt -u gnu_errfmt +shopt -u histappend +shopt -u histreedit +shopt -u histverify +shopt -u huponexit +shopt -u lithist +shopt -u login_shell +shopt -u mailwarn +shopt -u no_empty_cmd_completion +shopt -u nocaseglob +shopt -u nocasematch +shopt -u nullglob +shopt -u restricted_shell +shopt -u shift_verbose +shopt -u xpg_echo +-- +cdable_vars off +checkhash off +checkwinsize off +dotglob off +execfail off +extdebug off +extglob off +failglob off +gnu_errfmt off +histappend off +histreedit off +histverify off +huponexit off +lithist off +login_shell off +mailwarn off +no_empty_cmd_completion off +nocaseglob off +nocasematch off +nullglob off +restricted_shell off +shift_verbose off +xpg_echo off +-- +set +o allexport +set -o braceexpand +set -o emacs +set +o errexit +set +o errtrace +set +o functrace +set -o hashall +set -o histexpand +set -o history +set +o ignoreeof +set -o interactive-comments +set +o keyword +set -o monitor +set +o noclobber +set +o noexec +set +o noglob +set +o nolog +set +o notify +set +o nounset +set +o onecmd +set +o physical +set +o pipefail +set +o posix +set -o privileged +set +o verbose +set +o vi +set +o xtrace +-- +allexport off +braceexpand on +emacs on +errexit off +errtrace off +functrace off +hashall on +histexpand on +history on +ignoreeof off +interactive-comments on +keyword off +monitor on +noclobber off +noexec off +noglob off +nolog off +notify off +nounset off +onecmd off +physical off +pipefail off +posix off +privileged on +verbose off +vi off +xtrace off +-- +set +o allexport +set -o braceexpand +set -o emacs +set +o errexit +set +o errtrace +set +o functrace +set -o hashall +set -o histexpand +set -o history +set +o ignoreeof +set -o interactive-comments +set +o keyword +set -o monitor +set +o noclobber +set +o noexec +set +o noglob +set +o nolog +set +o notify +set +o nounset +set +o onecmd +set +o physical +set +o pipefail +set +o posix +set -o privileged +set +o verbose +set +o vi +set +o xtrace +-- +set -o history +set +o verbose +-- +set -o braceexpand +set -o emacs +set -o hashall +set -o histexpand +set -o history +set -o interactive-comments +set -o monitor +set -o privileged +-- +set +o allexport +set +o errexit +set +o errtrace +set +o functrace +set +o ignoreeof +set +o keyword +set +o noclobber +set +o noexec +set +o noglob +set +o nolog +set +o notify +set +o nounset +set +o onecmd +set +o physical +set +o pipefail +set +o posix +set +o verbose +set +o vi +set +o xtrace +-- +allexport off +errexit off +errtrace off +functrace off +ignoreeof off +keyword off +noclobber off +noexec off +noglob off +nolog off +notify off +nounset off +onecmd off +physical off +pipefail off +posix off +verbose off +vi off +xtrace off +-- +./shopt.tests: line 93: shopt: xyz1: invalid shell option name +./shopt.tests: line 94: shopt: xyz1: invalid option name diff --git a/bash-20060316/tests/shopt.tests b/bash-20060316/tests/shopt.tests new file mode 100644 index 000000000..d4f2a8b1f --- /dev/null +++ b/bash-20060316/tests/shopt.tests @@ -0,0 +1,94 @@ +# let's try an error message first +shopt -z + +# first, set up a known environment +shopt -u cdable_vars +shopt -s cdspell +shopt -u checkhash +shopt -u checkwinsize +shopt -s cmdhist +shopt -u dotglob +shopt -u execfail +shopt -s expand_aliases +shopt -u extglob +shopt -u histreedit +shopt -u histappend +shopt -u histverify +shopt -s hostcomplete +shopt -u huponexit +shopt -s interactive_comments +shopt -u lithist +shopt -u mailwarn +shopt -u nocaseglob +shopt -u nullglob +shopt -s promptvars +shopt -u shift_verbose +shopt -s sourcepath +shopt -u xpg_echo + +# Now, start checking the output +builtin printf -- "--\n" +shopt -p # list 'em all +builtin printf -- "--\n" +# test specific variables +shopt -p huponexit +shopt -p checkwinsize +shopt -p sourcepath + +builtin printf -- "--\n" +shopt -s -p +builtin printf -- "--\n" +shopt -u -p +builtin printf -- "--\n" +shopt -u + +# Now set up another known environment +set +o allexport +set -o braceexpand +set +o errexit +set -o hashall +set -o histexpand +set +o keyword +set -o monitor +set +o noclobber +set +o noexec +set +o noglob +set +o notify +set +o nounset +set +o onecmd +set +o physical +set -o privileged +set +o verbose +set +o xtrace +set -o history +set +o ignoreeof +set -o interactive-comments +set +o posix +set -o emacs +set +o vi + +# list 'em all +builtin printf -- "--\n" +shopt -o -p + +builtin printf -- "--\n" +set -o +builtin printf -- "--\n" +set +o + +# test specific variables +builtin printf -- "--\n" +shopt -p -o history +shopt -p -o verbose + +builtin printf -- "--\n" +shopt -s -p -o +builtin printf -- "--\n" +shopt -u -p -o +builtin printf -- "--\n" +shopt -u -o + +# errors +builtin printf -- "--\n" +shopt -p xyz1 +shopt -o -p xyz1 diff --git a/bash-20060316/tests/source1.sub b/bash-20060316/tests/source1.sub new file mode 100644 index 000000000..8b8586f17 --- /dev/null +++ b/bash-20060316/tests/source1.sub @@ -0,0 +1 @@ +echo $AVAR diff --git a/bash-20060316/tests/source2.sub b/bash-20060316/tests/source2.sub new file mode 100644 index 000000000..7a031a11a --- /dev/null +++ b/bash-20060316/tests/source2.sub @@ -0,0 +1,5 @@ +echo in source.sub2, calling return + +return 5 + +echo oops -- return in source.sub2 failed diff --git a/bash-20060316/tests/source3.sub b/bash-20060316/tests/source3.sub new file mode 100644 index 000000000..4a12501f7 --- /dev/null +++ b/bash-20060316/tests/source3.sub @@ -0,0 +1 @@ +echo "$@" diff --git a/bash-20060316/tests/source4.sub b/bash-20060316/tests/source4.sub new file mode 100644 index 000000000..717c1ab91 --- /dev/null +++ b/bash-20060316/tests/source4.sub @@ -0,0 +1 @@ +set -- m n o p diff --git a/bash-20060316/tests/source5.sub b/bash-20060316/tests/source5.sub new file mode 100644 index 000000000..813ffaed1 --- /dev/null +++ b/bash-20060316/tests/source5.sub @@ -0,0 +1,19 @@ +LC_ALL=en_US +unset LC_ALL +unset LANG +export LC_ALL=C +export LANG=C + +set +o posix + +# attempting to source a non-existant file is not an error... +. /tmp/source-notthere + +echo after bad source 1 + +set -o posix + +# ...unless you're in posix mode +. /tmp/source-notthere + +echo after bad source 2 diff --git a/bash-20060316/tests/strip.right b/bash-20060316/tests/strip.right new file mode 100644 index 000000000..dfab897f4 --- /dev/null +++ b/bash-20060316/tests/strip.right @@ -0,0 +1,12 @@ +'' +' ab ' +' ' +'' +'' +'' +'ababababababab' +'ababababababab ' +'ababababababab ' +'abababa +bababab ' +'' diff --git a/bash-20060316/tests/strip.tests b/bash-20060316/tests/strip.tests new file mode 100644 index 000000000..b669b52ee --- /dev/null +++ b/bash-20060316/tests/strip.tests @@ -0,0 +1,22 @@ +v=`echo "" ; echo "" ; echo ""` +echo "'$v'" +v=`echo -n " ab "` +echo "'$v'" +v=`echo -n " "` +echo "'$v'" +v=`echo -n ""` +echo "'$v'" +v=`echo ""` +echo "'$v'" +v=`echo` +echo "'$v'" +v=`echo ababababababab` +echo "'$v'" +v=`echo "ababababababab "` +echo "'$v'" +v=`echo -n "ababababababab "` +echo "'$v'" +v=`echo -ne "abababa\nbababab "` +echo "'$v'" +v="`echo -e '\n\n\n\n'`" +echo "'$v'" diff --git a/bash-20060316/tests/test.right b/bash-20060316/tests/test.right new file mode 100644 index 000000000..beb3af6b2 --- /dev/null +++ b/bash-20060316/tests/test.right @@ -0,0 +1,284 @@ +t -a noexist +1 +t -a run-all +0 +t -b run-all +1 +t -b /dev/jb1a +1 +t -c run-all +1 +t -c /dev/tty +0 +t -d run-all +1 +t -d /etc +0 +t -d "" +1 +b -d "" +1 +t -e noexist +1 +t -e run-all +0 +t -f noexist +1 +t -f /dev/tty +1 +t -f run-all +0 +t -g run-all +1 +t -g /tmp/test.setgid +0 +t -k run-all +1 +t -n "" +1 +t -n "hello" +0 +t -p run-all +1 +t -r noexist +1 +t -r /tmp/test.noread +1 +t -r run-all +0 +t -s noexist +1 +t -s /dev/null +1 +t -s run-all +0 +t -t 20 +1 +t -t 0 +0 +t -u noexist +1 +t -u run-all +1 +t -u /tmp/test.setuid +0 +t -w noexist +1 +t -w /tmp/test.nowrite +1 +t -w /dev/null +0 +t -x noexist +1 +t -x /tmp/test.exec +0 +t -x /tmp/test.noexec +1 +t -z "" +0 +t -z "foo" +1 +t "foo" +0 +t "" +1 +t -O /tmp/test.owner +0 +t -S /tmp/test.socket +1 +t -N /tmp/test.newer +0 +t "hello" = "hello" +0 +t "hello" = "goodbye" +1 +t "hello" == "hello" +0 +t "hello" == "goodbye" +1 +t "hello" != "hello" +1 +t "hello" != "goodbye" +0 +t "hello" < "goodbye" +1 +t "hello" > "goodbye" +0 +t ! "hello" > "goodbye" +1 +t 200 -eq 200 +0 +t 34 -eq 222 +1 +t -32 -eq 32 +1 +t 200 -ne 200 +1 +t 34 -ne 222 +0 +t 200 -gt 200 +1 +t 340 -gt 222 +0 +t 200 -ge 200 +0 +t 34 -ge 222 +1 +t 200 -lt 200 +1 +t 34 -lt 222 +0 +t 200 -le 200 +0 +t 340 -le 222 +1 +t 700 -le 1000 -a -n "1" -a "20" = "20" +0 +t ! \( 700 -le 1000 -a -n "1" -a "20" = "20" \) +1 +t /tmp/abc -nt /tmp/def +1 +t /tmp/abc -ot /tmp/def +0 +t /tmp/def -nt /tmp/abc +0 +t /tmp/def -ot /tmp/abc +1 +t /tmp/abc -ef /tmp/def +1 +t /tmp/abc -ef /tmp/ghi +0 +t -r /dev/fd/0 +0 +t -w /dev/fd/1 +0 +t -w /dev/fd/2 +0 +t -r /dev/stdin +0 +t -w /dev/stdout +0 +t -w /dev/stderr +0 +t +1 +b +1 +t 12 -eq 34 +1 +t ! 12 -eq 34 +0 +t -n abcd -o aaa +0 +t -n abcd -o -z aaa +0 +t -n abcd -a aaa +0 +t -n abcd -a -z aaa +1 +t -o allexport +1 +t ! -o allexport +0 +t xx -a yy +0 +t xx -o "" +0 +t xx -a "" +1 +t -X -a -X +0 +t -X -o -X +0 +t -X -o "" +0 +t -X -a "" +1 +t "" -a -X +1 +t "" -o -X +0 +t "" -a "" +1 +t "" -o "" +1 +t true -o -X +0 +t true -a -X +0 +t ( -E ) +0 +t ( "" ) +1 +t ! -z "$z" +0 +t ! -n "$z" +1 +t "$zero" +1 +t ! "$zero" +0 +b "$zero" +1 +b ! "$zero" +0 +t -G /tmp/test.group +0 +t -h /tmp/test.symlink +0 +t 4+3 -eq 7 +./test.tests: line 13: test: 4+3: integer expression expected +2 +b 4-5 -eq 7 +./test.tests: line 7: [: 4+3: integer expression expected +2 +t 9 -eq 4+5 +./test.tests: line 13: test: 4+5: integer expression expected +2 +b 9 -eq 4+5 +./test.tests: line 7: [: 4+5: integer expression expected +2 +t A -eq 7 +./test.tests: line 13: test: A: integer expression expected +2 +b A -eq 7 +./test.tests: line 7: [: A: integer expression expected +2 +t 9 -eq B +./test.tests: line 13: test: B: integer expression expected +2 +b 9 -eq B +./test.tests: line 7: [: B: integer expression expected +2 +t ( 1 = 2 +./test.tests: line 13: test: `)' expected +2 +b ( 1 = 2 +./test.tests: line 7: [: `)' expected, found ] +2 +./test.tests: line 13: test: a: unary operator expected +2 +./test.tests: line 13: test: b: binary operator expected +2 +./test.tests: line 13: test: -A: unary operator expected +2 +./test.tests: line 13: test: too many arguments +2 +./test.tests: line 13: test: too many arguments +2 +./test.tests: line 406: [: missing `]' +2 +./test.tests: line 13: test: (: unary operator expected +2 +t -t a +1 +t -t addsds +1 +t -t 42 +1 +t -t /dev/tty +1 +t -t /dev/tty4 +1 +t -t /dev/tty4444444... +1 diff --git a/bash-20060316/tests/test.tests b/bash-20060316/tests/test.tests new file mode 100644 index 000000000..a915c4e40 --- /dev/null +++ b/bash-20060316/tests/test.tests @@ -0,0 +1,423 @@ +if (( $UID == 0 )); then + echo "test-tests: the test suite should not be run as root" >&2 +fi + +b() +{ + [ "$@" ] + echo $? +} + +t() +{ + test "$@" + echo $? +} + +echo 't -a noexist' +t -a noexist +echo 't -a run-all' +t -a run-all + +echo 't -b run-all' +t -b run-all +echo 't -b /dev/jb1a' +t -b /dev/jb1a + +echo 't -c run-all' +t -c run-all +echo 't -c /dev/tty' +t -c /dev/tty + +echo 't -d run-all' +t -d run-all +echo 't -d /etc' +t -d /etc +echo 't -d ""' +t -d "" +echo 'b -d ""' +b -d "" + +echo 't -e noexist' +t -e noexist +echo 't -e run-all' +t -e run-all + +echo 't -f noexist' +t -f noexist +echo 't -f /dev/tty' +t -f /dev/tty +echo 't -f run-all' +t -f run-all + +echo 't -g run-all' +t -g run-all + +touch /tmp/test.setgid +chgrp ${GROUPS[0]} /tmp/test.setgid +chmod ug+x /tmp/test.setgid +chmod g+s /tmp/test.setgid +echo 't -g /tmp/test.setgid' +t -g /tmp/test.setgid +rm -f /tmp/test.setgid + +echo 't -k run-all' +t -k run-all + +echo 't -n ""' +t -n "" +echo 't -n "hello"' +t -n "hello" + +echo 't -p run-all' +t -p run-all + +echo 't -r noexist' +t -r noexist + +if (( $UID != 0 )); then + touch /tmp/test.noread + chmod a-r /tmp/test.noread + echo 't -r /tmp/test.noread' + t -r /tmp/test.noread + rm -f /tmp/test.noread +else + echo 't -r /tmp/test.noread' + echo 1 +fi + +echo 't -r run-all' +t -r run-all + +echo 't -s noexist' +t -s noexist +echo 't -s /dev/null' +t -s /dev/null +echo 't -s run-all' +t -s run-all + +echo 't -t 20' +t -t 20 +echo 't -t 0' +t -t 0 < /dev/tty + +echo 't -u noexist' +t -u noexist + +echo 't -u run-all' +t -u run-all + +touch /tmp/test.setuid +chmod u+x /tmp/test.setuid # some systems require this to turn on setuid bit +chmod u+s /tmp/test.setuid +echo 't -u /tmp/test.setuid' +t -u /tmp/test.setuid +rm -f /tmp/test.setuid + +echo 't -w noexist' +t -w noexist + +if (( $UID != 0 )); then + touch /tmp/test.nowrite + chmod a-w /tmp/test.nowrite + echo 't -w /tmp/test.nowrite' + t -w /tmp/test.nowrite + rm -f /tmp/test.nowrite +else + echo 't -w /tmp/test.nowrite' + echo 1 +fi + +echo 't -w /dev/null' +t -w /dev/null + +echo 't -x noexist' +t -x noexist + +touch /tmp/test.exec +chmod u+x /tmp/test.exec +echo 't -x /tmp/test.exec' +t -x /tmp/test.exec +rm -f /tmp/test.exec + +touch /tmp/test.noexec +chmod u-x /tmp/test.noexec +echo 't -x /tmp/test.noexec' +t -x /tmp/test.noexec +rm -f /tmp/test.noexec + +echo 't -z ""' +t -z "" +echo 't -z "foo"' +t -z "foo" + +echo 't "foo"' +t "foo" +echo 't ""' +t "" + +touch /tmp/test.owner +echo 't -O /tmp/test.owner' +t -O /tmp/test.owner +rm -f /tmp/test.owner + +touch /tmp/test.socket +echo 't -S /tmp/test.socket' +t -S /tmp/test.socket # false +rm -f /tmp/test.socket + +touch /tmp/test.newer +echo 't -N /tmp/test.newer' +t -N /tmp/test.newer +rm -f /tmp/test.newer + +echo 't "hello" = "hello"' +t "hello" = "hello" +echo 't "hello" = "goodbye"' +t "hello" = "goodbye" + +echo 't "hello" == "hello"' +t "hello" == "hello" +echo 't "hello" == "goodbye"' +t "hello" == "goodbye" + +echo 't "hello" != "hello"' +t "hello" != "hello" +echo 't "hello" != "goodbye"' +t "hello" != "goodbye" + +echo 't "hello" < "goodbye"' +t "hello" \< "goodbye" +echo 't "hello" > "goodbye"' +t "hello" \> "goodbye" + +echo 't ! "hello" > "goodbye"' +t "! hello" \> "goodbye" + +echo 't 200 -eq 200' +t 200 -eq 200 +echo 't 34 -eq 222' +t 34 -eq 222 +echo 't -32 -eq 32' +t -32 -eq 32 + +echo 't 200 -ne 200' +t 200 -ne 200 +echo 't 34 -ne 222' +t 34 -ne 222 + +echo 't 200 -gt 200' +t 200 -gt 200 +echo 't 340 -gt 222' +t 340 -gt 222 + +echo 't 200 -ge 200' +t 200 -ge 200 +echo 't 34 -ge 222' +t 34 -ge 222 + +echo 't 200 -lt 200' +t 200 -lt 200 +echo 't 34 -lt 222' +t 34 -lt 222 + +echo 't 200 -le 200' +t 200 -le 200 +echo 't 340 -le 222' +t 340 -le 222 + +echo 't 700 -le 1000 -a -n "1" -a "20" = "20"' +t 700 -le 1000 -a -n "1" -a "20" = "20" +echo 't ! \( 700 -le 1000 -a -n "1" -a "20" = "20" \)' +t ! \( 700 -le 1000 -a -n "1" -a "20" = "20" \) + +touch /tmp/abc +sleep 2 +touch /tmp/def + +echo 't /tmp/abc -nt /tmp/def' +t /tmp/abc -nt /tmp/def +echo 't /tmp/abc -ot /tmp/def' +t /tmp/abc -ot /tmp/def +echo 't /tmp/def -nt /tmp/abc' +t /tmp/def -nt /tmp/abc +echo 't /tmp/def -ot /tmp/abc' +t /tmp/def -ot /tmp/abc + +echo 't /tmp/abc -ef /tmp/def' +t /tmp/abc -ef /tmp/def +ln /tmp/abc /tmp/ghi +echo 't /tmp/abc -ef /tmp/ghi' +t /tmp/abc -ef /tmp/ghi + +rm /tmp/abc /tmp/def /tmp/ghi + +echo 't -r /dev/fd/0' +t -r /dev/fd/0 +echo 't -w /dev/fd/1' +t -w /dev/fd/1 +echo 't -w /dev/fd/2' +t -w /dev/fd/2 + +echo 't -r /dev/stdin' +t -r /dev/stdin +echo 't -w /dev/stdout' +t -w /dev/stdout +echo 't -w /dev/stderr' +t -w /dev/stderr + +echo 't' +t +echo 'b' +b + +echo 't 12 -eq 34' +t 12 -eq 34 +echo 't ! 12 -eq 34' +t ! 12 -eq 34 + +echo 't -n abcd -o aaa' +t -n abcd -o aaa +echo 't -n abcd -o -z aaa' +t -n abcd -o -z aaa + +echo 't -n abcd -a aaa' +t -n abcd -a aaa +echo 't -n abcd -a -z aaa' +t -n abcd -a -z aaa + +set +o allexport +echo 't -o allexport' +t -o allexport +echo 't ! -o allexport' +t ! -o allexport + +echo 't xx -a yy' +t xx -a yy +echo 't xx -o ""' +t xx -o "" +echo 't xx -a ""' +t xx -a "" + +echo 't -X -a -X' +t -X -a -X +echo 't -X -o -X' +t -X -o -X +echo 't -X -o ""' +t -X -o "" +echo 't -X -a ""' +t -X -a "" +echo 't "" -a -X' +t "" -a -X +echo 't "" -o -X' +t "" -o -X +echo 't "" -a ""' +t "" -a "" +echo 't "" -o ""' +t "" -o "" +echo 't true -o -X' +t true -o -X +echo 't true -a -X' +t true -a -X + +echo 't ( -E )' +t \( -E \) +echo 't ( "" )' +t \( "" \) + +z=42 + +echo 't ! -z "$z"' +t ! -z "$z" + +echo 't ! -n "$z"' +t ! -n "$z" + +zero= +echo 't "$zero"' +t "$zero" +echo 't ! "$zero"' +t ! "$zero" +echo 'b "$zero"' +b "$zero" +echo 'b ! "$zero"' +b ! "$zero" + +touch /tmp/test.group +chgrp ${GROUPS[0]} /tmp/test.group +echo 't -G /tmp/test.group' +t -G /tmp/test.group +rm /tmp/test.group + +case "${THIS_SH}" in +/*) SHNAME=${THIS_SH} ;; +*) SHNAME=${PWD}/${THIS_SH} ;; +esac + +if ln -s ${SHNAME} /tmp/test.symlink 2>/dev/null; then + chgrp ${GROUPS[0]} /tmp/test.symlink 2>/dev/null + echo 't -h /tmp/test.symlink' + t -h /tmp/test.symlink + # some systems don't let you remove this + rm -f /tmp/test.symlink 2>/dev/null +else + echo 't -h /tmp/test.symlink' + echo 0 +fi + +# arithmetic constant errors +echo "t 4+3 -eq 7" +t 4+3 -eq 7 +echo "b 4-5 -eq 7" +b 4+3 -eq 7 + +echo "t 9 -eq 4+5" +t 9 -eq 4+5 +echo "b 9 -eq 4+5" +b 9 -eq 4+5 + +A=7 +echo "t A -eq 7" +t A -eq 7 +echo "b A -eq 7" +b A -eq 7 + +B=9 +echo "t 9 -eq B" +t 9 -eq B +echo "b 9 -eq B" +b 9 -eq B + +# badly formed expressions +echo 't ( 1 = 2' +t \( 1 = 2 +echo 'b ( 1 = 2' +b \( 1 = 2 + +# more errors +t a b +t a b c +t -A v +# too many arguments -- argument expected is also reasonable +t 4 -eq 4 -a 2 -ne 5 -a 4 -ne +# too many arguments +t 4 -eq 4 -a 3 4 + +[ +echo $? + +t \( \) + +# non-numeric arguments to `test -t' should return failure -- fix in 2.05 +echo 't -t a' +t -t a +echo 't -t addsds' +t -t addsds +echo 't -t 42' +t -t 42 +echo 't -t /dev/tty' +t -t /dev/tty +echo 't -t /dev/tty4' +t -t /dev/tty4 +echo 't -t /dev/tty4444444...' +t -t /dev/tty4444444... diff --git a/bash-20060316/tests/tilde.right b/bash-20060316/tests/tilde.right new file mode 100644 index 000000000..fe58ae34e --- /dev/null +++ b/bash-20060316/tests/tilde.right @@ -0,0 +1,25 @@ +~chet +/usr/xyz/foo +~chet/foo +~chet/foo +~chet/bar +~chet/bar +~chet/bar +:~chet/ +abcd~chet +SHELL=~/bash +/usr/xyz/bash +abcd:~chet +/usr/ucb:/bin:/usr/xyz/bin:/usr/xyz/tmp/bin:/usr/bin +/usr +/tmp +/bin:/usr/bin:.:/usr/xyz/bin +/bin:/usr/bin:.:~/bin +/bin:/usr/bin:.:/usr/xyz/bin +/bin:/usr/bin:.:/usr/xyz/bin +/bin:/usr/bin:.:~/bin +/bin:/usr/bin:.:~/bin +ok 1 +ok 2 +ok 3 +~root diff --git a/bash-20060316/tests/tilde.tests b/bash-20060316/tests/tilde.tests new file mode 100644 index 000000000..8b2bdb8b2 --- /dev/null +++ b/bash-20060316/tests/tilde.tests @@ -0,0 +1,69 @@ +# this is needed because posix mode restricts tilde expansion to assignment +# statements preceding a command, instead of the default of expanding all +# assignment statements on the line (e.g., after `export'). Without this, +# the next-to-last test fails +set +o posix + +HOME=/usr/xyz +SHELL=~/bash +echo ~ch\et +echo ~/"foo" +echo "~chet"/"foo" +echo \~chet/"foo" +echo \~chet/bar +echo ~\chet/bar +echo ~chet""/bar +echo ":~chet/" +echo abcd~chet +echo "SHELL=~/bash" +echo $SHELL +echo abcd:~chet +path=/usr/ucb:/bin:~/bin:~/tmp/bin:/usr/bin +echo $path + +cd /usr +cd /tmp +echo ~- +echo ~+ + +XPATH=/bin:/usr/bin:. + +# yes tilde expansion +PPATH=$XPATH:~/bin +echo "$PPATH" + +# no tilde expansion +PPATH="$XPATH:~/bin" +echo "$PPATH" + +# yes tilde expansion +export PPATH=$XPATH:~/bin +echo "$PPATH" +declare -x PPATH=$XPATH:~/bin +echo "$PPATH" + +# no tilde expansion +export PPATH="$XPATH:~/bin" +echo "$PPATH" +declare -x PPATH="$XPATH:~/bin" +echo "$PPATH" + +# more tests of tilde expansion when executing case commands +case ~ in +$HOME) echo ok 1;; +*) echo bad 1 ;; +esac + +case ~ in +~) echo ok 2 ;; +\~) echo bad 2a ;; +*) echo bad 2b ;; +esac + +case $unset in +"") echo ok 3 ;; +*) echo bad 3 ;; +esac + +USER=root # should exist just about everywhere +echo ~$USER diff --git a/bash-20060316/tests/tilde2.right b/bash-20060316/tests/tilde2.right new file mode 100644 index 000000000..fce04687e --- /dev/null +++ b/bash-20060316/tests/tilde2.right @@ -0,0 +1,24 @@ +PATH=~/bin:/bin:/usr/bin:. +/usr/xyz/bin:~/bin2:/bin:/usr/bin:. +PATH=~/bin:~/bin2:/bin:/usr/bin:. +~/bin +~ +/usr/xyz +~ +~ +~ +argv[1] = <\a> +argv[1] = <\a> +/usr/xyz/bash +ok +~ +~ +make -k FOO=/usr/xyz/mumble +/usr/xyz/mumble +HOME=~ +HOME=~ +/usr/$x/abc +HOME=~ +/usr/$x/abc +HOME=/usr/$x/abc +/usr/$x/abc diff --git a/bash-20060316/tests/tilde2.tests b/bash-20060316/tests/tilde2.tests new file mode 100644 index 000000000..ff6c76f0c --- /dev/null +++ b/bash-20060316/tests/tilde2.tests @@ -0,0 +1,70 @@ +HOME=/usr/xyz +XPATH=/bin:/usr/bin:. + +ADDPATH=PATH=~/bin:$XPATH + +echo $ADDPATH + +unset ADDPATH +: ${ADDPATH:=~/bin:~/bin2:$XPATH} +echo $ADDPATH + +unset ADDPATH +: ${ADDPATH:=PATH=~/bin:~/bin2:$XPATH} +echo $ADDPATH + +cat << ! +~/bin +! + +echo "~" + +echo ${TPATH:-~} +echo "${TPATH:-~}" +echo "${TPATH:-"~"}" + +echo "${XPATH+~}" + +recho "\a" +recho "${TPATH:-\a}" + +SHELL=~/bash +echo $SHELL + +case $SHELL in +~/bash) echo ok;; +*) echo bad;; +esac + +somevar= +echo "${somevar:-~}" +echo "${somevar:-"~"}" + +echo make -k FOO=~/mumble + +typeset FOO=~/mumble +echo "$FOO" + +h=HOME=~ +echo $h + +export h=HOME=~ +echo $h + +x=1234 +HOME='/usr/$x/abc' + +echo ~ + +# behavior differs here in posix mode +set -o posix + +eval echo $h +eval $h +echo $HOME + +set +o posix + +eval echo $h +eval $h +echo $HOME diff --git a/bash-20060316/tests/time.tests b/bash-20060316/tests/time.tests new file mode 100644 index 000000000..06881e95a --- /dev/null +++ b/bash-20060316/tests/time.tests @@ -0,0 +1,22 @@ +printf "time /dev/null:\n" +time ${THIS_SH} /dev/null + +printf "\nPOSIX: time -p /dev/null:\n" +time -p ${THIS_SH} /dev/null + +printf "\nBSD time /dev/null:\n" +TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys' +time ${THIS_SH} /dev/null + +printf "\nSYSV time /dev/null:\n" +TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S' +time ${THIS_SH} /dev/null + +printf "\nksh time /dev/null:\n" +TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS' +time ${THIS_SH} /dev/null + +printf "\ntimes:\n" +times + +exit 0 diff --git a/bash-20060316/tests/trap.right b/bash-20060316/tests/trap.right new file mode 100644 index 000000000..72f3b6d28 --- /dev/null +++ b/bash-20060316/tests/trap.right @@ -0,0 +1,74 @@ +subshell exit +trap -- 'echo exiting' EXIT +trap -- 'echo aborting' SIGHUP +trap -- 'echo aborting' SIGINT +trap -- 'echo aborting' SIGQUIT +trap -- 'echo aborting' SIGABRT +trap -- 'echo aborting' SIGTERM +[20] debug +debug line +[22] debug +trap -- 'echo exiting' EXIT +trap -- 'echo aborting' SIGHUP +trap -- 'echo aborting' SIGINT +trap -- 'echo aborting' SIGQUIT +trap -- 'echo aborting' SIGABRT +trap -- 'echo aborting' SIGTERM +trap -- 'echo [$LINENO] debug' DEBUG +[24] debug +func[16] funcdebug +funcdebug line +[26] debug +trap -- 'echo exiting' EXIT +trap -- 'echo aborting' SIGHUP +trap -- 'echo aborting' SIGINT +trap -- 'echo aborting' SIGQUIT +trap -- 'echo aborting' SIGABRT +trap -- 'echo aborting' SIGTERM +trap -- 'echo [$LINENO] debug' DEBUG +[28] debug +./trap.tests[33] debug +./trap.tests[34] debug +func2[30] debug +func2[31] debug +func2debug line +./trap.tests[36] debug +./trap.tests[38] debug +trap -- 'echo exiting' EXIT +trap -- 'echo aborting' SIGHUP +trap -- 'echo aborting' SIGINT +trap -- 'echo aborting' SIGQUIT +trap -- 'echo aborting' SIGABRT +trap -- 'echo aborting' SIGTERM +trap -- '' DEBUG +trap -- 'echo exiting' EXIT +trap -- 'echo aborting' SIGHUP +trap -- 'echo aborting' SIGINT +trap -- 'echo aborting' SIGQUIT +trap -- 'echo aborting' SIGABRT +trap -- 'echo aborting' SIGTERM +trap -- 'echo exiting' EXIT +trap -- '' SIGINT +trap -- 'echo aborting' SIGQUIT +trap -- 'echo aborting' SIGABRT +trap -- 'echo aborting' SIGTERM +0 +ERRTRAP +ERRTRAP +ERRTRAP +after falses +if negation ok +after negation +after while +before false in trap2a.sub +after false in trap2a.sub +command substitution +caught a child death +caught a child death +caught a child death +trap -- 'echo caught a child death' SIGCHLD +trap -- 'echo exiting' EXIT +trap -- 'echo aborting' SIGABRT +trap -- 'echo caught a child death' SIGCHLD +trap -- '' SIGUSR2 +exiting diff --git a/bash-20060316/tests/trap.tests b/bash-20060316/tests/trap.tests new file mode 100644 index 000000000..9aac72545 --- /dev/null +++ b/bash-20060316/tests/trap.tests @@ -0,0 +1,86 @@ +# test the trap code + +trap 'echo exiting' 0 +trap 'echo aborting' 1 2 3 6 15 + +# make sure a user-specified subshell runs the exit trap, but does not +# inherit the exit trap from a parent shell +( trap 'echo subshell exit' 0; exit 0 ) +( exit 0 ) + +trap + +func() +{ + trap 'echo ${FUNCNAME:-$0}[$LINENO] funcdebug' DEBUG + echo funcdebug line +} + +trap 'echo [$LINENO] debug' DEBUG +echo debug line + +trap + +func + +trap + +trap 'echo ${FUNCNAME:-$0}[$LINENO] debug' DEBUG +func2() +{ + echo func2debug line +} +declare -ft func2 +func2 + +unset -f func2 + +trap '' DEBUG + +trap + +trap - debug + +trap + +trap - HUP +trap hup +trap '' INT +trap '' int + +trap + +# exit 0 in exit trap should set exit status +( +set -e +trap 'exit 0' EXIT +false +echo bad +) +echo $? + +# hmmm...should this set the handling to SIG_IGN for children, too? +trap '' USR2 +./trap1.sub + +# test ERR trap +./trap2.sub + +# +# show that setting a trap on SIGCHLD is not disastrous. +# +set -o monitor + +trap 'echo caught a child death' SIGCHLD + +sleep 7 & sleep 6 & sleep 5 & + +wait + +trap -p SIGCHLD + +# Now reset some of the signals the shell handles specially back to +# their default values (with or without the SIG prefix) +trap - SIGINT QUIT TERM + +trap diff --git a/bash-20060316/tests/trap1.sub b/bash-20060316/tests/trap1.sub new file mode 100755 index 000000000..48f853022 --- /dev/null +++ b/bash-20060316/tests/trap1.sub @@ -0,0 +1,4 @@ +# signals ignored at shell startup cannot be trapped or reset +trap 'echo USR2' USR2 + +trap -p USR2 diff --git a/bash-20060316/tests/trap2.sub b/bash-20060316/tests/trap2.sub new file mode 100755 index 000000000..73357df2a --- /dev/null +++ b/bash-20060316/tests/trap2.sub @@ -0,0 +1,25 @@ +set +e +trap 'echo ERRTRAP' ERR + +false +false +false + +echo after falses + +if ! false; then + echo if negation ok +fi + +! false +echo after negation + +while false; do + echo while negation ok +done + +echo after while + +./trap2a.sub + +echo $(false ; echo command substitution) diff --git a/bash-20060316/tests/trap2a.sub b/bash-20060316/tests/trap2a.sub new file mode 100755 index 000000000..44d6b50ef --- /dev/null +++ b/bash-20060316/tests/trap2a.sub @@ -0,0 +1,3 @@ +echo before false in trap2a.sub +false +echo after false in trap2a.sub diff --git a/bash-20060316/tests/type.right b/bash-20060316/tests/type.right new file mode 100644 index 000000000..dbd51caf2 --- /dev/null +++ b/bash-20060316/tests/type.right @@ -0,0 +1,48 @@ +./type.tests: line 9: type: -r: invalid option +type: usage: type [-afptP] name [name ...] +./type.tests: line 12: type: notthere: not found +function +keyword +builtin +file +file +file +func is a function +func () +{ + echo this is func +} +while is a shell keyword +while is a shell keyword +builtin is a shell builtin +/bin/sh is /bin/sh +func +func is a function +func () +{ + echo this is func +} +while +while is a shell keyword +./type.tests: line 43: type: m: not found +alias m='more' +alias m='more' +m is aliased to `more' +alias +alias m='more' +alias m='more' +alias m='more' +m is aliased to `more' +builtin +builtin is a shell builtin +/bin/sh +/bin/sh is /bin/sh +./type.tests: line 65: type: func: not found +./type.tests: line 67: type: m: not found +/bin/sh +/tmp/bash +bash is hashed (/tmp/bash) +file +hits command + 3 /tmp/bash + 1 /bin/sh diff --git a/bash-20060316/tests/type.tests b/bash-20060316/tests/type.tests new file mode 100644 index 000000000..d47ae647b --- /dev/null +++ b/bash-20060316/tests/type.tests @@ -0,0 +1,82 @@ +set +o posix + +hash -r +unalias -a + +# this should echo nothing +type +# this should be a usage error +type -r ${THIS_SH} + +# these should behave identically +type notthere +command -v notthere + +alias m=more + +unset -f func 2>/dev/null +func() { echo this is func; } + +type -t func +type -t while +type -t builtin +type -t /bin/sh +type -t ${THIS_SH} +type -t mv + +type func +# the following two should produce identical output +type while +type -a while +type builtin +type /bin/sh + +command -v func +command -V func +command -v while +command -V while + +# the following two lines should produce the same output +# post-3.0 patch makes command -v silent, as posix specifies +# first test with alias expansion off (should all fail or produce no output) +type -t m +type m +command -v m +alias -p +alias m + +# then test with alias expansion on +shopt -s expand_aliases +type m +type -t m +command -v m +alias -p +alias m + +command -V m +shopt -u expand_aliases + +command -v builtin +command -V builtin +command -v /bin/sh +command -V /bin/sh + +unset -f func +type func +unalias m +type m + +hash -r + +hash -p /bin/sh sh +type -p sh + +SHBASE=${THIS_SH##*/} +hash -p /tmp/$SHBASE $SHBASE +type -p $SHBASE +type $SHBASE + +type -t $SHBASE + +# make sure the hash table looks right +hash diff --git a/bash-20060316/tests/varenv.right b/bash-20060316/tests/varenv.right new file mode 100644 index 000000000..df8086dc6 --- /dev/null +++ b/bash-20060316/tests/varenv.right @@ -0,0 +1,56 @@ +3 4 +5 6 7 8 9 +7 8 9 +/usr/chet +/usr/chet +/usr/chet +/a/b/c +/usr/chet +/usr/chet 7 +/a/b/c 9 /a/b/c +/a/b/c 9 /a/b/c +/a/b/c /a/b/c +1 2 +1 1 +unset +toronto airport +AVAR +song by rush +BVAR +toronto airport +AVAR +AVAR +42 +/bin:/usr/bin:/usr/local/bin:. +avar=([0]="/bin:/usr/bin:/usr/local/bin:.") +z=yy +42 +declare -i ivar="10" +unset +declare -x ivar="42" +hB +braceexpand:hashall:interactive-comments +hBP +braceexpand:hashall:interactive-comments:physical +declare -r SHELLOPTS="braceexpand:hashall:interactive-comments:physical" +abcde +20 +30 +40 +50 +|0|10| +10 +|0|10| +10 +|0|10| +10 +|4| +4 +|0|11| +after fff3: x=4 +|0|12| +|y| +|y| +a=z +a=b +a=z diff --git a/bash-20060316/tests/varenv.sh b/bash-20060316/tests/varenv.sh new file mode 100644 index 000000000..77776f9b1 --- /dev/null +++ b/bash-20060316/tests/varenv.sh @@ -0,0 +1,206 @@ +# +# varenv.sh +# +# Test the behavior of the shell with respect to variable and environment +# assignments +# +expect() +{ + echo expect "$@" +} + +a=1 +b=2 +c=3 +d=4 +e=5 +f=6 g=7 h=8 + +a=3 b=4 $CHMOD $MODE $FN + +# This should echo "3 4" according to Posix.2 +expect "3 4" +echo $a $b + +set -k + +# Assignment statements made when no words are left affect the shell's +# environment +a=5 b=6 $CHMOD c=7 $MODE d=8 $FN e=9 + +expect "5 6 7 8 9" +echo $a $b $c $d $e + +$CHMOD f=7 $MODE g=8 $FN h=9 +expect "7 8 9" +echo $f $g $h + +set +k + +# The temporary environment does not affect variable expansion, only the +# environment given to the command + +export HOME=/usr/chet +expect $HOME +echo $HOME + +expect $HOME +HOME=/a/b/c /bin/echo $HOME + +expect $HOME +echo $HOME + +# This should echo /a/b/c +expect /a/b/c +HOME=/a/b/c printenv HOME + +set -k + +# This should echo $HOME 9, NOT /a/b/c 9 + +expect "$HOME" +HOME=/a/b/c /bin/echo $HOME c=9 +expect "$HOME 7" +echo $HOME $c + +# I claim the next two echo calls should give identical output. +# ksh agrees, the System V.3 sh does not + +expect "/a/b/c 9 /a/b/c" +HOME=/a/b/c $ECHO a=$HOME c=9 +echo $HOME $c $a + +expect "/a/b/c 9 /a/b/c" +HOME=/a/b/c a=$HOME c=9 +echo $HOME $c $a +set +k + +# How do assignment statements affect subsequent assignments on the same +# line? +expect "/a/b/c /a/b/c" +HOME=/a/b/c a=$HOME +echo $HOME $a + +# The system V.3 sh does this wrong; the last echo should output "1 1", +# but the system V.3 sh has it output "2 2". Posix.2 says the assignment +# statements are processed left-to-right. bash and ksh output the right +# thing +c=1 +d=2 +expect "1 2" +echo $c $d +d=$c c=$d +expect "1 1" +echo $c $d + +# just for completeness +unset d c +expect unset +echo ${d-unset} + +# no output +export a +a=bcde +export a +/bin/true 2>/dev/null + +func() +{ + local YYZ + + YYZ="song by rush" + echo $YYZ + echo $A +} + +YYZ="toronto airport" +A="AVAR" +echo $YYZ +echo $A +A=BVAR func +echo $YYZ +echo $A + +export A +# Make sure expansion doesn't use assignment statements preceding a builtin +A=ZVAR echo $A + +XPATH=/bin:/usr/bin:/usr/local/bin:. +func2() +{ + local z=yy + local -a avar=( ${XPATH//: } ) + echo ${avar[@]} + local +} + +avar=42 +echo $avar +func2 +echo $avar + +# try to set an attribute for an unset variable; make sure it persists +# when the variable is assigned a value +declare -i ivar + +ivar=10 + +declare -p ivar +unset ivar + +# export an unset variable, make sure it is not suddenly set, but make +# sure the export attribute persists when the variable is assigned a +# value +export ivar +echo ${ivar-unset} + +ivar=42 +declare -p ivar + +# make sure set [-+]o ignoreeof and $IGNOREEOF are reflected +unset IGNOREEOF +set +o ignoreeof +set -o ignoreeof +if [ "$IGNOREEOF" -ne 10 ]; then + echo "./varenv.sh: set -o ignoreeof is not reflected in IGNOREEOF" >&2 +fi +unset IGNOREEOF +set +o ignoreeof + +# older versions of bash used to not reset RANDOM in subshells correctly +[[ $RANDOM -eq $(echo $RANDOM) ]] && echo "RANDOM: problem with subshells" + +# make sure that shopt -o is reflected in $SHELLOPTS +# first, get rid of things that might be set automatically via shell +# variables +set +o posix +set +o ignoreeof +set +o monitor +echo $- +echo ${SHELLOPTS} +shopt -so physical +echo $- +echo ${SHELLOPTS} + +# and make sure it is readonly +readonly -p | grep SHELLOPTS + +# This was an error in bash versions prior to bash-2.04. The `set -a' +# should cause the assignment statement that's an argument to typeset +# to create an exported variable +unset FOOFOO +FOOFOO=bar +set -a +typeset FOOFOO=abcde + +printenv FOOFOO + +# test out export behavior of variable assignments preceding builtins and +# functions +$THIS_SH ./varenv1.sub + +# more tests; bugs in bash up to version 2.05a +$THIS_SH ./varenv2.sub + +# make sure variable scoping is done right +tt() { typeset a=b;echo a=$a; };a=z;echo a=$a;tt;echo a=$a diff --git a/bash-20060316/tests/varenv1.sub b/bash-20060316/tests/varenv1.sub new file mode 100644 index 000000000..168f87b14 --- /dev/null +++ b/bash-20060316/tests/varenv1.sub @@ -0,0 +1,28 @@ +# test out the export behavior of variable assignments preceding `eval', `.' +# and shell functions + +func() +{ + printenv var +} + +export var=10 +echo expect 20 +var=20 eval printenv var + +: ${TMPDIR:=/tmp} +TMPFILE=$TMPDIR/evalsub.$$ + +rm -f $TMPFILE +echo 'printenv var' > $TMPFILE + +echo expect 30 +var=30 . $TMPFILE + +rm -f $TMPFILE + +echo expect 40 +var=40 func + +echo expect 50 +var=50 command printenv var diff --git a/bash-20060316/tests/varenv2.sub b/bash-20060316/tests/varenv2.sub new file mode 100644 index 000000000..b2935726d --- /dev/null +++ b/bash-20060316/tests/varenv2.sub @@ -0,0 +1,44 @@ +fff() +{ + typeset i=0 x=10 + echo "|$i|$x|" + export x + printenv x +} + +fff2() +{ + echo "|$x|" + export x + printenv x +} + +fff3() +{ + typeset i=0 x="${x-10}" + echo "|$i|$x|" +} + +fff4() +{ + typeset i=0 x + x="${x-10}" + echo "|$i|$x|" +} + +fff5() +{ + z=y typeset z + echo "|$z|" +} + +fff +x=10 fff +x=1 fff +x=4 fff2 +x=11 fff3 +echo after fff3: x=$x +x=12 fff4 + +fff5 +z=42 fff5 diff --git a/bash-20060316/tests/version b/bash-20060316/tests/version new file mode 100644 index 000000000..bd7402053 --- /dev/null +++ b/bash-20060316/tests/version @@ -0,0 +1,8 @@ +echo Testing ${THIS_SH} + +echo version: $BASH_VERSION +echo versinfo: ${BASH_VERSINFO[@]} + +echo HOSTTYPE = $HOSTTYPE +echo OSTYPE = $OSTYPE +echo MACHTYPE = $MACHTYPE diff --git a/bash-20060316/tests/version.mini b/bash-20060316/tests/version.mini new file mode 100644 index 000000000..72e4bf963 --- /dev/null +++ b/bash-20060316/tests/version.mini @@ -0,0 +1,8 @@ +echo Testing ${THIS_SH} + +echo version: $BASH_VERSION +#echo versinfo: ${BASH_VERSINFO[@]} + +echo HOSTTYPE = $HOSTTYPE +echo OSTYPE = $OSTYPE +echo MACHTYPE = $MACHTYPE diff --git a/bash-20060316/trap.c b/bash-20060316/trap.c new file mode 100644 index 000000000..64cdbd086 --- /dev/null +++ b/bash-20060316/trap.c @@ -0,0 +1,984 @@ +/* trap.c -- Not the trap command, but useful functions for manipulating + those objects. The trap command is in builtins/trap.def. */ + +/* Copyright (C) 1987-2006 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#include "config.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "bashtypes.h" +#include "bashansi.h" + +#include +#include + +#include "bashintl.h" + +#include "trap.h" + +#include "shell.h" +#include "flags.h" +#include "input.h" /* for save_token_state, restore_token_state */ +#include "signames.h" +#include "builtins.h" +#include "builtins/common.h" +#include "builtins/builtext.h" + +#ifndef errno +extern int errno; +#endif + +/* Flags which describe the current handling state of a signal. */ +#define SIG_INHERITED 0x0 /* Value inherited from parent. */ +#define SIG_TRAPPED 0x1 /* Currently trapped. */ +#define SIG_HARD_IGNORE 0x2 /* Signal was ignored on shell entry. */ +#define SIG_SPECIAL 0x4 /* Treat this signal specially. */ +#define SIG_NO_TRAP 0x8 /* Signal cannot be trapped. */ +#define SIG_INPROGRESS 0x10 /* Signal handler currently executing. */ +#define SIG_CHANGED 0x20 /* Trap value changed in trap handler. */ +#define SIG_IGNORED 0x40 /* The signal is currently being ignored. */ + +#define SPECIAL_TRAP(s) ((s) == EXIT_TRAP || (s) == DEBUG_TRAP || (s) == ERROR_TRAP || (s) == RETURN_TRAP) + +/* An array of such flags, one for each signal, describing what the + shell will do with a signal. DEBUG_TRAP == NSIG; some code below + assumes this. */ +static int sigmodes[BASH_NSIG]; + +static void free_trap_command __P((int)); +static void change_signal __P((int, char *)); + +static void get_original_signal __P((int)); + +static int _run_trap_internal __P((int, char *)); + +static void reset_signal __P((int)); +static void restore_signal __P((int)); +static void reset_or_restore_signal_handlers __P((sh_resetsig_func_t *)); + +/* Variables used here but defined in other files. */ +extern int interrupt_immediately; +extern int last_command_exit_value; +extern int line_number; + +extern char *this_command_name; +extern sh_builtin_func_t *this_shell_builtin; +extern procenv_t wait_intr_buf; +extern int return_catch_flag, return_catch_value; +extern int subshell_level; + +/* The list of things to do originally, before we started trapping. */ +SigHandler *original_signals[NSIG]; + +/* For each signal, a slot for a string, which is a command to be + executed when that signal is recieved. The slot can also contain + DEFAULT_SIG, which means do whatever you were going to do before + you were so rudely interrupted, or IGNORE_SIG, which says ignore + this signal. */ +char *trap_list[BASH_NSIG]; + +/* A bitmap of signals received for which we have trap handlers. */ +int pending_traps[NSIG]; + +/* Set to the number of the signal we're running the trap for + 1. + Used in execute_cmd.c and builtins/common.c to clean up when + parse_and_execute does not return normally after executing the + trap command (e.g., when `return' is executed in the trap command). */ +int running_trap; + +/* Set to last_command_exit_value before running a trap. */ +int trap_saved_exit_value; + +/* The (trapped) signal received while executing in the `wait' builtin */ +int wait_signal_received; + +/* A value which can never be the target of a trap handler. */ +#define IMPOSSIBLE_TRAP_HANDLER (SigHandler *)initialize_traps + +#define GETORIGSIG(sig) \ + do { \ + original_signals[sig] = (SigHandler *)set_signal_handler (sig, SIG_DFL); \ + set_signal_handler (sig, original_signals[sig]); \ + if (original_signals[sig] == SIG_IGN) \ + sigmodes[sig] |= SIG_HARD_IGNORE; \ + } while (0) + +#define GET_ORIGINAL_SIGNAL(sig) \ + if (sig && sig < NSIG && original_signals[sig] == IMPOSSIBLE_TRAP_HANDLER) \ + GETORIGSIG(sig) + +void +initialize_traps () +{ + register int i; + + initialize_signames(); + + trap_list[EXIT_TRAP] = trap_list[DEBUG_TRAP] = trap_list[ERROR_TRAP] = trap_list[RETURN_TRAP] = (char *)NULL; + sigmodes[EXIT_TRAP] = sigmodes[DEBUG_TRAP] = sigmodes[ERROR_TRAP] = sigmodes[RETURN_TRAP] = SIG_INHERITED; + original_signals[EXIT_TRAP] = IMPOSSIBLE_TRAP_HANDLER; + + for (i = 1; i < NSIG; i++) + { + pending_traps[i] = 0; + trap_list[i] = (char *)DEFAULT_SIG; + sigmodes[i] = SIG_INHERITED; + original_signals[i] = IMPOSSIBLE_TRAP_HANDLER; + } + + /* Show which signals are treated specially by the shell. */ +#if defined (SIGCHLD) + GETORIGSIG (SIGCHLD); + sigmodes[SIGCHLD] |= (SIG_SPECIAL | SIG_NO_TRAP); +#endif /* SIGCHLD */ + + GETORIGSIG (SIGINT); + sigmodes[SIGINT] |= SIG_SPECIAL; + +#if defined (__BEOS__) + /* BeOS sets SIGINT to SIG_IGN! */ + original_signals[SIGINT] = SIG_DFL; + sigmodes[SIGINT] &= ~SIG_HARD_IGNORE; +#endif + + GETORIGSIG (SIGQUIT); + sigmodes[SIGQUIT] |= SIG_SPECIAL; + + if (interactive) + { + GETORIGSIG (SIGTERM); + sigmodes[SIGTERM] |= SIG_SPECIAL; + } +} + +#ifdef INCLUDE_UNUSED +/* Return a printable representation of the trap handler for SIG. */ +static char * +trap_handler_string (sig) + int sig; +{ + if (trap_list[sig] == (char *)DEFAULT_SIG) + return "DEFAULT_SIG"; + else if (trap_list[sig] == (char *)IGNORE_SIG) + return "IGNORE_SIG"; + else if (trap_list[sig] == (char *)IMPOSSIBLE_TRAP_HANDLER) + return "IMPOSSIBLE_TRAP_HANDLER"; + else if (trap_list[sig]) + return trap_list[sig]; + else + return "NULL"; +} +#endif + +/* Return the print name of this signal. */ +char * +signal_name (sig) + int sig; +{ + char *ret; + + /* on cygwin32, signal_names[sig] could be null */ + ret = (sig >= BASH_NSIG || sig < 0 || signal_names[sig] == NULL) + ? _("invalid signal number") + : signal_names[sig]; + + return ret; +} + +/* Turn a string into a signal number, or a number into + a signal number. If STRING is "2", "SIGINT", or "INT", + then (int)2 is returned. Return NO_SIG if STRING doesn't + contain a valid signal descriptor. */ +int +decode_signal (string, flags) + char *string; + int flags; +{ + intmax_t sig; + char *name; + + if (legal_number (string, &sig)) + return ((sig >= 0 && sig < NSIG) ? (int)sig : NO_SIG); + + /* A leading `SIG' may be omitted. */ + for (sig = 0; sig < BASH_NSIG; sig++) + { + name = signal_names[sig]; + if (name == 0 || name[0] == '\0') + continue; + + /* Check name without the SIG prefix first case sensitivly or + insensitively depending on whether flags includes DSIG_NOCASE */ + if (STREQN (name, "SIG", 3)) + { + name += 3; + + if ((flags & DSIG_NOCASE) && strcasecmp (string, name) == 0) + return ((int)sig); + else if ((flags & DSIG_NOCASE) == 0 && strcmp (string, name) == 0) + return ((int)sig); + /* If we can't use the `SIG' prefix to match, punt on this + name now. */ + else if ((flags & DSIG_SIGPREFIX) == 0) + continue; + } + + /* Check name with SIG prefix case sensitively or insensitively + depending on whether flags includes DSIG_NOCASE */ + name = signal_names[sig]; + if ((flags & DSIG_NOCASE) && strcasecmp (string, name) == 0) + return ((int)sig); + else if ((flags & DSIG_NOCASE) == 0 && strcmp (string, name) == 0) + return ((int)sig); + } + + return (NO_SIG); +} + +/* Non-zero when we catch a trapped signal. */ +static int catch_flag; + +void +run_pending_traps () +{ + register int sig; + int old_exit_value, *token_state; + + if (catch_flag == 0) /* simple optimization */ + return; + + catch_flag = 0; + + /* Preserve $? when running trap. */ + old_exit_value = last_command_exit_value; + + for (sig = 1; sig < NSIG; sig++) + { + /* XXX this could be made into a counter by using + while (pending_traps[sig]--) instead of the if statement. */ + if (pending_traps[sig]) + { +#if defined (HAVE_POSIX_SIGNALS) + sigset_t set, oset; + + sigemptyset (&set); + sigemptyset (&oset); + + sigaddset (&set, sig); + sigprocmask (SIG_BLOCK, &set, &oset); +#else +# if defined (HAVE_BSD_SIGNALS) + int oldmask = sigblock (sigmask (sig)); +# endif +#endif /* HAVE_POSIX_SIGNALS */ + + if (sig == SIGINT) + { + run_interrupt_trap (); + CLRINTERRUPT; + } + else if (trap_list[sig] == (char *)DEFAULT_SIG || + trap_list[sig] == (char *)IGNORE_SIG || + trap_list[sig] == (char *)IMPOSSIBLE_TRAP_HANDLER) + { + /* This is possible due to a race condition. Say a bash + process has SIGTERM trapped. A subshell is spawned + using { list; } & and the parent does something and kills + the subshell with SIGTERM. It's possible for the subshell + to set pending_traps[SIGTERM] to 1 before the code in + execute_cmd.c eventually calls restore_original_signals + to reset the SIGTERM signal handler in the subshell. The + next time run_pending_traps is called, pending_traps[SIGTERM] + will be 1, but the trap handler in trap_list[SIGTERM] will + be invalid (probably DEFAULT_SIG, but it could be IGNORE_SIG). + Unless we catch this, the subshell will dump core when + trap_list[SIGTERM] == DEFAULT_SIG, because DEFAULT_SIG is + usually 0x0. */ + internal_warning (_("run_pending_traps: bad value in trap_list[%d]: %p"), + sig, trap_list[sig]); + if (trap_list[sig] == (char *)DEFAULT_SIG) + { + internal_warning (_("run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"), sig, signal_name (sig)); + kill (getpid (), sig); + } + } + else + { + token_state = save_token_state (); + parse_and_execute (savestring (trap_list[sig]), "trap", SEVAL_NONINT|SEVAL_NOHIST); + restore_token_state (token_state); + free (token_state); + } + + pending_traps[sig] = 0; + +#if defined (HAVE_POSIX_SIGNALS) + sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL); +#else +# if defined (HAVE_BSD_SIGNALS) + sigsetmask (oldmask); +# endif +#endif /* POSIX_VERSION */ + } + } + + last_command_exit_value = old_exit_value; +} + +sighandler +trap_handler (sig) + int sig; +{ + int oerrno; + + if ((sig >= NSIG) || + (trap_list[sig] == (char *)DEFAULT_SIG) || + (trap_list[sig] == (char *)IGNORE_SIG)) + programming_error (_("trap_handler: bad signal %d"), sig); + else + { + oerrno = errno; +#if defined (MUST_REINSTALL_SIGHANDLERS) + set_signal_handler (sig, trap_handler); +#endif /* MUST_REINSTALL_SIGHANDLERS */ + + catch_flag = 1; + pending_traps[sig]++; + + if (interrupt_immediately && this_shell_builtin && (this_shell_builtin == wait_builtin)) + { + wait_signal_received = sig; + longjmp (wait_intr_buf, 1); + } + + if (interrupt_immediately) + run_pending_traps (); + + errno = oerrno; + } + + SIGRETURN (0); +} + +#if defined (JOB_CONTROL) && defined (SIGCHLD) + +#ifdef INCLUDE_UNUSED +/* Make COMMAND_STRING be executed when SIGCHLD is caught. */ +void +set_sigchld_trap (command_string) + char *command_string; +{ + set_signal (SIGCHLD, command_string); +} +#endif + +/* Make COMMAND_STRING be executed when SIGCHLD is caught iff SIGCHLD + is not already trapped. */ +void +maybe_set_sigchld_trap (command_string) + char *command_string; +{ + if ((sigmodes[SIGCHLD] & SIG_TRAPPED) == 0) + set_signal (SIGCHLD, command_string); +} +#endif /* JOB_CONTROL && SIGCHLD */ + +void +set_debug_trap (command) + char *command; +{ + set_signal (DEBUG_TRAP, command); +} + +void +set_error_trap (command) + char *command; +{ + set_signal (ERROR_TRAP, command); +} + +void +set_return_trap (command) + char *command; +{ + set_signal (RETURN_TRAP, command); +} + +#ifdef INCLUDE_UNUSED +void +set_sigint_trap (command) + char *command; +{ + set_signal (SIGINT, command); +} +#endif + +/* Reset the SIGINT handler so that subshells that are doing `shellsy' + things, like waiting for command substitution or executing commands + in explicit subshells ( ( cmd ) ), can catch interrupts properly. */ +SigHandler * +set_sigint_handler () +{ + if (sigmodes[SIGINT] & SIG_HARD_IGNORE) + return ((SigHandler *)SIG_IGN); + + else if (sigmodes[SIGINT] & SIG_IGNORED) + return ((SigHandler *)set_signal_handler (SIGINT, SIG_IGN)); /* XXX */ + + else if (sigmodes[SIGINT] & SIG_TRAPPED) + return ((SigHandler *)set_signal_handler (SIGINT, trap_handler)); + + /* The signal is not trapped, so set the handler to the shell's special + interrupt handler. */ + else if (interactive) /* XXX - was interactive_shell */ + return (set_signal_handler (SIGINT, sigint_sighandler)); + else + return (set_signal_handler (SIGINT, termsig_sighandler)); +} + +/* Return the correct handler for signal SIG according to the values in + sigmodes[SIG]. */ +SigHandler * +trap_to_sighandler (sig) + int sig; +{ + if (sigmodes[sig] & (SIG_IGNORED|SIG_HARD_IGNORE)) + return (SIG_IGN); + else if (sigmodes[sig] & SIG_TRAPPED) + return (trap_handler); + else + return (SIG_DFL); +} + +/* Set SIG to call STRING as a command. */ +void +set_signal (sig, string) + int sig; + char *string; +{ + if (SPECIAL_TRAP (sig)) + { + change_signal (sig, savestring (string)); + if (sig == EXIT_TRAP && interactive == 0) + initialize_terminating_signals (); + return; + } + + /* A signal ignored on entry to the shell cannot be trapped or reset, but + no error is reported when attempting to do so. -- Posix.2 */ + if (sigmodes[sig] & SIG_HARD_IGNORE) + return; + + /* Make sure we have original_signals[sig] if the signal has not yet + been trapped. */ + if ((sigmodes[sig] & SIG_TRAPPED) == 0) + { + /* If we aren't sure of the original value, check it. */ + if (original_signals[sig] == IMPOSSIBLE_TRAP_HANDLER) + GETORIGSIG (sig); + if (original_signals[sig] == SIG_IGN) + return; + } + + /* Only change the system signal handler if SIG_NO_TRAP is not set. + The trap command string is changed in either case. The shell signal + handlers for SIGINT and SIGCHLD run the user specified traps in an + environment in which it is safe to do so. */ + if ((sigmodes[sig] & SIG_NO_TRAP) == 0) + { + set_signal_handler (sig, SIG_IGN); + change_signal (sig, savestring (string)); + set_signal_handler (sig, trap_handler); + } + else + change_signal (sig, savestring (string)); +} + +static void +free_trap_command (sig) + int sig; +{ + if ((sigmodes[sig] & SIG_TRAPPED) && trap_list[sig] && + (trap_list[sig] != (char *)IGNORE_SIG) && + (trap_list[sig] != (char *)DEFAULT_SIG) && + (trap_list[sig] != (char *)IMPOSSIBLE_TRAP_HANDLER)) + free (trap_list[sig]); +} + +/* If SIG has a string assigned to it, get rid of it. Then give it + VALUE. */ +static void +change_signal (sig, value) + int sig; + char *value; +{ + if ((sigmodes[sig] & SIG_INPROGRESS) == 0) + free_trap_command (sig); + trap_list[sig] = value; + + sigmodes[sig] |= SIG_TRAPPED; + if (value == (char *)IGNORE_SIG) + sigmodes[sig] |= SIG_IGNORED; + else + sigmodes[sig] &= ~SIG_IGNORED; + if (sigmodes[sig] & SIG_INPROGRESS) + sigmodes[sig] |= SIG_CHANGED; +} + +static void +get_original_signal (sig) + int sig; +{ + /* If we aren't sure the of the original value, then get it. */ + if (original_signals[sig] == (SigHandler *)IMPOSSIBLE_TRAP_HANDLER) + GETORIGSIG (sig); +} + +/* Restore the default action for SIG; i.e., the action the shell + would have taken before you used the trap command. This is called + from trap_builtin (), which takes care to restore the handlers for + the signals the shell treats specially. */ +void +restore_default_signal (sig) + int sig; +{ + if (SPECIAL_TRAP (sig)) + { + if ((sig != DEBUG_TRAP && sig != ERROR_TRAP && sig != RETURN_TRAP) || + (sigmodes[sig] & SIG_INPROGRESS) == 0) + free_trap_command (sig); + trap_list[sig] = (char *)NULL; + sigmodes[sig] &= ~SIG_TRAPPED; + if (sigmodes[sig] & SIG_INPROGRESS) + sigmodes[sig] |= SIG_CHANGED; + return; + } + + GET_ORIGINAL_SIGNAL (sig); + + /* A signal ignored on entry to the shell cannot be trapped or reset, but + no error is reported when attempting to do so. Thanks Posix.2. */ + if (sigmodes[sig] & SIG_HARD_IGNORE) + return; + + /* If we aren't trapping this signal, don't bother doing anything else. */ + if ((sigmodes[sig] & SIG_TRAPPED) == 0) + return; + + /* Only change the signal handler for SIG if it allows it. */ + if ((sigmodes[sig] & SIG_NO_TRAP) == 0) + set_signal_handler (sig, original_signals[sig]); + + /* Change the trap command in either case. */ + change_signal (sig, (char *)DEFAULT_SIG); + + /* Mark the signal as no longer trapped. */ + sigmodes[sig] &= ~SIG_TRAPPED; +} + +/* Make this signal be ignored. */ +void +ignore_signal (sig) + int sig; +{ + if (SPECIAL_TRAP (sig) && ((sigmodes[sig] & SIG_IGNORED) == 0)) + { + change_signal (sig, (char *)IGNORE_SIG); + return; + } + + GET_ORIGINAL_SIGNAL (sig); + + /* A signal ignored on entry to the shell cannot be trapped or reset. + No error is reported when the user attempts to do so. */ + if (sigmodes[sig] & SIG_HARD_IGNORE) + return; + + /* If already trapped and ignored, no change necessary. */ + if (sigmodes[sig] & SIG_IGNORED) + return; + + /* Only change the signal handler for SIG if it allows it. */ + if ((sigmodes[sig] & SIG_NO_TRAP) == 0) + set_signal_handler (sig, SIG_IGN); + + /* Change the trap command in either case. */ + change_signal (sig, (char *)IGNORE_SIG); +} + +/* Handle the calling of "trap 0". The only sticky situation is when + the command to be executed includes an "exit". This is why we have + to provide our own place for top_level to jump to. */ +int +run_exit_trap () +{ + char *trap_command; + int code, function_code, retval; + + trap_saved_exit_value = last_command_exit_value; + function_code = 0; + + /* Run the trap only if signal 0 is trapped and not ignored, and we are not + currently running in the trap handler (call to exit in the list of + commands given to trap 0). */ + if ((sigmodes[EXIT_TRAP] & SIG_TRAPPED) && + (sigmodes[EXIT_TRAP] & (SIG_IGNORED|SIG_INPROGRESS)) == 0) + { + trap_command = savestring (trap_list[EXIT_TRAP]); + sigmodes[EXIT_TRAP] &= ~SIG_TRAPPED; + sigmodes[EXIT_TRAP] |= SIG_INPROGRESS; + + retval = trap_saved_exit_value; + running_trap = 1; + + code = setjmp (top_level); + + /* If we're in a function, make sure return longjmps come here, too. */ + if (return_catch_flag) + function_code = setjmp (return_catch); + + if (code == 0 && function_code == 0) + { + reset_parser (); + parse_and_execute (trap_command, "exit trap", SEVAL_NONINT|SEVAL_NOHIST); + } + else if (code == ERREXIT) + retval = last_command_exit_value; + else if (code == EXITPROG) + retval = last_command_exit_value; + else if (function_code != 0) + retval = return_catch_value; + else + retval = trap_saved_exit_value; + + running_trap = 0; + return retval; + } + + return (trap_saved_exit_value); +} + +void +run_trap_cleanup (sig) + int sig; +{ + sigmodes[sig] &= ~(SIG_INPROGRESS|SIG_CHANGED); +} + +/* Run a trap command for SIG. SIG is one of the signals the shell treats + specially. Returns the exit status of the executed trap command list. */ +static int +_run_trap_internal (sig, tag) + int sig; + char *tag; +{ + char *trap_command, *old_trap; + int trap_exit_value, *token_state; + int save_return_catch_flag, function_code; + procenv_t save_return_catch; + + trap_exit_value = function_code = 0; + /* Run the trap only if SIG is trapped and not ignored, and we are not + currently executing in the trap handler. */ + if ((sigmodes[sig] & SIG_TRAPPED) && ((sigmodes[sig] & SIG_IGNORED) == 0) && + (trap_list[sig] != (char *)IMPOSSIBLE_TRAP_HANDLER) && + ((sigmodes[sig] & SIG_INPROGRESS) == 0)) + { + old_trap = trap_list[sig]; + sigmodes[sig] |= SIG_INPROGRESS; + sigmodes[sig] &= ~SIG_CHANGED; /* just to be sure */ + trap_command = savestring (old_trap); + + running_trap = sig + 1; + trap_saved_exit_value = last_command_exit_value; + + token_state = save_token_state (); + + /* If we're in a function, make sure return longjmps come here, too. */ + save_return_catch_flag = return_catch_flag; + if (return_catch_flag) + { + COPY_PROCENV (return_catch, save_return_catch); + function_code = setjmp (return_catch); + } + + if (function_code == 0) + parse_and_execute (trap_command, tag, SEVAL_NONINT|SEVAL_NOHIST); + + restore_token_state (token_state); + free (token_state); + + trap_exit_value = last_command_exit_value; + last_command_exit_value = trap_saved_exit_value; + running_trap = 0; + + sigmodes[sig] &= ~SIG_INPROGRESS; + + if (sigmodes[sig] & SIG_CHANGED) + { +#if 0 + /* Special traps like EXIT, DEBUG, RETURN are handled explicitly in + the places where they can be changed using unwind-protects. For + example, look at execute_cmd.c:execute_function(). */ + if (SPECIAL_TRAP (sig) == 0) +#endif + free (old_trap); + sigmodes[sig] &= ~SIG_CHANGED; + } + + if (save_return_catch_flag) + { + return_catch_flag = save_return_catch_flag; + return_catch_value = trap_exit_value; + COPY_PROCENV (save_return_catch, return_catch); + if (function_code) + longjmp (return_catch, 1); + } + } + + return trap_exit_value; +} + +int +run_debug_trap () +{ + int trap_exit_value; + + /* XXX - question: should the DEBUG trap inherit the RETURN trap? */ + trap_exit_value = 0; + if ((sigmodes[DEBUG_TRAP] & SIG_TRAPPED) && ((sigmodes[DEBUG_TRAP] & SIG_IGNORED) == 0) && ((sigmodes[DEBUG_TRAP] & SIG_INPROGRESS) == 0)) + { + trap_exit_value = _run_trap_internal (DEBUG_TRAP, "debug trap"); + +#if defined (DEBUGGER) + /* If we're in the debugger and the DEBUG trap returns 2 while we're in + a function or sourced script, we force a `return'. */ + if (debugging_mode && trap_exit_value == 2 && return_catch_flag) + { + return_catch_value = trap_exit_value; + longjmp (return_catch, 1); + } +#endif + } + return trap_exit_value; +} + +void +run_error_trap () +{ + if ((sigmodes[ERROR_TRAP] & SIG_TRAPPED) && ((sigmodes[ERROR_TRAP] & SIG_IGNORED) == 0) && (sigmodes[ERROR_TRAP] & SIG_INPROGRESS) == 0) + _run_trap_internal (ERROR_TRAP, "error trap"); +} + +void +run_return_trap () +{ + int old_exit_value; + +#if 0 + if ((sigmodes[DEBUG_TRAP] & SIG_TRAPPED) && (sigmodes[DEBUG_TRAP] & SIG_INPROGRESS)) + return; +#endif + + if ((sigmodes[RETURN_TRAP] & SIG_TRAPPED) && ((sigmodes[RETURN_TRAP] & SIG_IGNORED) == 0) && (sigmodes[RETURN_TRAP] & SIG_INPROGRESS) == 0) + { + old_exit_value = last_command_exit_value; + _run_trap_internal (RETURN_TRAP, "return trap"); + last_command_exit_value = old_exit_value; + } +} + +/* Run a trap set on SIGINT. This is called from throw_to_top_level (), and + declared here to localize the trap functions. */ +void +run_interrupt_trap () +{ + _run_trap_internal (SIGINT, "interrupt trap"); +} + +#ifdef INCLUDE_UNUSED +/* Free all the allocated strings in the list of traps and reset the trap + values to the default. */ +void +free_trap_strings () +{ + register int i; + + for (i = 0; i < BASH_NSIG; i++) + { + free_trap_command (i); + trap_list[i] = (char *)DEFAULT_SIG; + sigmodes[i] &= ~SIG_TRAPPED; + } + trap_list[DEBUG_TRAP] = trap_list[EXIT_TRAP] = trap_list[ERROR_TRAP] = trap_list[RETURN_TRAP] = (char *)NULL; +} +#endif + +/* Reset the handler for SIG to the original value. */ +static void +reset_signal (sig) + int sig; +{ + set_signal_handler (sig, original_signals[sig]); + sigmodes[sig] &= ~SIG_TRAPPED; +} + +/* Set the handler signal SIG to the original and free any trap + command associated with it. */ +static void +restore_signal (sig) + int sig; +{ + set_signal_handler (sig, original_signals[sig]); + change_signal (sig, (char *)DEFAULT_SIG); + sigmodes[sig] &= ~SIG_TRAPPED; +} + +static void +reset_or_restore_signal_handlers (reset) + sh_resetsig_func_t *reset; +{ + register int i; + + /* Take care of the exit trap first */ + if (sigmodes[EXIT_TRAP] & SIG_TRAPPED) + { + sigmodes[EXIT_TRAP] &= ~SIG_TRAPPED; + if (reset != reset_signal) + { + free_trap_command (EXIT_TRAP); + trap_list[EXIT_TRAP] = (char *)NULL; + } + } + + for (i = 1; i < NSIG; i++) + { + if (sigmodes[i] & SIG_TRAPPED) + { + if (trap_list[i] == (char *)IGNORE_SIG) + set_signal_handler (i, SIG_IGN); + else + (*reset) (i); + } + else if (sigmodes[i] & SIG_SPECIAL) + (*reset) (i); + } + + /* Command substitution and other child processes don't inherit the + debug, error, or return traps. If we're in the debugger, and the + `functrace' or `errtrace' options have been set, then let command + substitutions inherit them. Let command substitution inherit the + RETURN trap if we're in the debugger and tracing functions. */ + if (function_trace_mode == 0) + { + sigmodes[DEBUG_TRAP] &= ~SIG_TRAPPED; + sigmodes[RETURN_TRAP] &= ~SIG_TRAPPED; + } + if (error_trace_mode == 0) + sigmodes[ERROR_TRAP] &= ~SIG_TRAPPED; +} + +/* Reset trapped signals to their original values, but don't free the + trap strings. Called by the command substitution code. */ +void +reset_signal_handlers () +{ + reset_or_restore_signal_handlers (reset_signal); +} + +/* Reset all trapped signals to their original values. Signals set to be + ignored with trap '' SIGNAL should be ignored, so we make sure that they + are. Called by child processes after they are forked. */ +void +restore_original_signals () +{ + reset_or_restore_signal_handlers (restore_signal); +} + +/* If a trap handler exists for signal SIG, then call it; otherwise just + return failure. */ +int +maybe_call_trap_handler (sig) + int sig; +{ + /* Call the trap handler for SIG if the signal is trapped and not ignored. */ + if ((sigmodes[sig] & SIG_TRAPPED) && ((sigmodes[sig] & SIG_IGNORED) == 0)) + { + switch (sig) + { + case SIGINT: + run_interrupt_trap (); + break; + case EXIT_TRAP: + run_exit_trap (); + break; + case DEBUG_TRAP: + run_debug_trap (); + break; + case ERROR_TRAP: + run_error_trap (); + break; + default: + trap_handler (sig); + break; + } + return (1); + } + else + return (0); +} + +int +signal_is_trapped (sig) + int sig; +{ + return (sigmodes[sig] & SIG_TRAPPED); +} + +int +signal_is_special (sig) + int sig; +{ + return (sigmodes[sig] & SIG_SPECIAL); +} + +int +signal_is_ignored (sig) + int sig; +{ + return (sigmodes[sig] & SIG_IGNORED); +} + +void +set_signal_ignored (sig) + int sig; +{ + sigmodes[sig] |= SIG_HARD_IGNORE; + original_signals[sig] = SIG_IGN; +} + +int +signal_in_progress (sig) + int sig; +{ + return (sigmodes[sig] & SIG_INPROGRESS); +} diff --git a/bash-20060316/trap.h b/bash-20060316/trap.h new file mode 100644 index 000000000..d1600e030 --- /dev/null +++ b/bash-20060316/trap.h @@ -0,0 +1,98 @@ +/* trap.h -- data structures used in the trap mechanism. */ + +/* Copyright (C) 1993 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#if !defined (_TRAP_H_) +#define _TRAP_H_ + +#include "stdc.h" + +#if !defined (SIG_DFL) +#include "bashtypes.h" +#include +#endif /* SIG_DFL */ + +#if !defined (NSIG) +#define NSIG 64 +#endif /* !NSIG */ + +#define NO_SIG -1 +#define DEFAULT_SIG SIG_DFL +#define IGNORE_SIG SIG_IGN + +/* Special shell trap names. */ +#define DEBUG_TRAP NSIG +#define ERROR_TRAP NSIG+1 +#define RETURN_TRAP NSIG+2 +#define EXIT_TRAP 0 + +/* system signals plus special bash traps */ +#define BASH_NSIG NSIG+3 + +/* Flags values for decode_signal() */ +#define DSIG_SIGPREFIX 0x01 /* don't alllow `SIG' PREFIX */ +#define DSIG_NOCASE 0x02 /* case-insensitive comparison */ + +#define signal_object_p(x,f) (decode_signal (x,f) != NO_SIG) + +#define TRAP_STRING(s) \ + (signal_is_trapped (s) && signal_is_ignored (s) == 0) ? trap_list[s] \ + : (char *)NULL + +extern char *trap_list[]; + +/* Externally-visible functions declared in trap.c. */ +extern void initialize_traps __P((void)); + +extern void run_pending_traps __P((void)); + +extern void maybe_set_sigchld_trap __P((char *)); +extern void set_sigchld_trap __P((char *)); + +extern void set_debug_trap __P((char *)); +extern void set_error_trap __P((char *)); +extern void set_return_trap __P((char *)); + +extern void set_sigint_trap __P((char *)); +extern void set_signal __P((int, char *)); + +extern void restore_default_signal __P((int)); +extern void ignore_signal __P((int)); +extern int run_exit_trap __P((void)); +extern void run_trap_cleanup __P((int)); +extern int run_debug_trap __P((void)); +extern void run_error_trap __P((void)); +extern void run_return_trap __P((void)); + +extern void free_trap_strings __P((void)); +extern void reset_signal_handlers __P((void)); +extern void restore_original_signals __P((void)); + +extern char *signal_name __P((int)); + +extern int decode_signal __P((char *, int)); +extern void run_interrupt_trap __P((void)); +extern int maybe_call_trap_handler __P((int)); +extern int signal_is_trapped __P((int)); +extern int signal_is_ignored __P((int)); +extern int signal_is_special __P((int)); +extern void set_signal_ignored __P((int)); +extern int signal_in_progress __P((int)); + +#endif /* _TRAP_H_ */ diff --git a/bash-20060316/unwind_prot.c b/bash-20060316/unwind_prot.c new file mode 100644 index 000000000..4bb7a78f0 --- /dev/null +++ b/bash-20060316/unwind_prot.c @@ -0,0 +1,320 @@ +/* I can't stand it anymore! Please can't we just write the + whole Unix system in lisp or something? */ + +/* Copyright (C) 1987-2002 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Bash is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with Bash; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +/* **************************************************************** */ +/* */ +/* Unwind Protection Scheme for Bash */ +/* */ +/* **************************************************************** */ +#include "config.h" + +#include "bashtypes.h" +#include "bashansi.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#if STDC_HEADERS +# include +#endif + +#ifndef offsetof +# define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) +#endif + +#include "command.h" +#include "general.h" +#include "unwind_prot.h" +#include "quit.h" +#include "sig.h" + +/* Structure describing a saved variable and the value to restore it to. */ +typedef struct { + char *variable; + int size; + char desired_setting[1]; /* actual size is `size' */ +} SAVED_VAR; + +/* If HEAD.CLEANUP is null, then ARG.V contains a tag to throw back to. + If HEAD.CLEANUP is restore_variable, then SV.V contains the saved + variable. Otherwise, call HEAD.CLEANUP (ARG.V) to clean up. */ +typedef union uwp { + struct uwp_head { + union uwp *next; + Function *cleanup; + } head; + struct { + struct uwp_head uwp_head; + char *v; + } arg; + struct { + struct uwp_head uwp_head; + SAVED_VAR v; + } sv; +} UNWIND_ELT; + + +extern int interrupt_immediately; + +static void without_interrupts __P((VFunction *, char *, char *)); +static void unwind_frame_discard_internal __P((char *, char *)); +static void unwind_frame_run_internal __P((char *, char *)); +static void add_unwind_protect_internal __P((Function *, char *)); +static void remove_unwind_protect_internal __P((char *, char *)); +static void run_unwind_protects_internal __P((char *, char *)); +static void clear_unwind_protects_internal __P((char *, char *)); +static inline void restore_variable __P((SAVED_VAR *)); +static void unwind_protect_mem_internal __P((char *, char *)); + +static UNWIND_ELT *unwind_protect_list = (UNWIND_ELT *)NULL; + +#define uwpalloc(elt) (elt) = (UNWIND_ELT *)xmalloc (sizeof (UNWIND_ELT)) +#define uwpfree(elt) free(elt) + +/* Run a function without interrupts. This relies on the fact that the + FUNCTION cannot change the value of interrupt_immediately. (I.e., does + not call QUIT (). */ +static void +without_interrupts (function, arg1, arg2) + VFunction *function; + char *arg1, *arg2; +{ + int old_interrupt_immediately; + + old_interrupt_immediately = interrupt_immediately; + interrupt_immediately = 0; + + (*function)(arg1, arg2); + + interrupt_immediately = old_interrupt_immediately; +} + +/* Start the beginning of a region. */ +void +begin_unwind_frame (tag) + char *tag; +{ + add_unwind_protect ((Function *)NULL, tag); +} + +/* Discard the unwind protects back to TAG. */ +void +discard_unwind_frame (tag) + char *tag; +{ + if (unwind_protect_list) + without_interrupts (unwind_frame_discard_internal, tag, (char *)NULL); +} + +/* Run the unwind protects back to TAG. */ +void +run_unwind_frame (tag) + char *tag; +{ + if (unwind_protect_list) + without_interrupts (unwind_frame_run_internal, tag, (char *)NULL); +} + +/* Add the function CLEANUP with ARG to the list of unwindable things. */ +void +add_unwind_protect (cleanup, arg) + Function *cleanup; + char *arg; +{ + without_interrupts (add_unwind_protect_internal, (char *)cleanup, arg); +} + +/* Remove the top unwind protect from the list. */ +void +remove_unwind_protect () +{ + if (unwind_protect_list) + without_interrupts + (remove_unwind_protect_internal, (char *)NULL, (char *)NULL); +} + +/* Run the list of cleanup functions in unwind_protect_list. */ +void +run_unwind_protects () +{ + if (unwind_protect_list) + without_interrupts + (run_unwind_protects_internal, (char *)NULL, (char *)NULL); +} + +/* Erase the unwind-protect list. If flags is 1, free the elements. */ +void +clear_unwind_protect_list (flags) + int flags; +{ + char *flag; + + if (unwind_protect_list) + { + flag = flags ? "" : (char *)NULL; + without_interrupts + (clear_unwind_protects_internal, flag, (char *)NULL); + } +} + +/* **************************************************************** */ +/* */ +/* The Actual Functions */ +/* */ +/* **************************************************************** */ + +static void +add_unwind_protect_internal (cleanup, arg) + Function *cleanup; + char *arg; +{ + UNWIND_ELT *elt; + + uwpalloc (elt); + elt->head.next = unwind_protect_list; + elt->head.cleanup = cleanup; + elt->arg.v = arg; + unwind_protect_list = elt; +} + +static void +remove_unwind_protect_internal (ignore1, ignore2) + char *ignore1, *ignore2; +{ + UNWIND_ELT *elt; + + elt = unwind_protect_list; + if (elt) + { + unwind_protect_list = unwind_protect_list->head.next; + uwpfree (elt); + } +} + +static void +run_unwind_protects_internal (ignore1, ignore2) + char *ignore1, *ignore2; +{ + unwind_frame_run_internal ((char *) NULL, (char *) NULL); +} + +static void +clear_unwind_protects_internal (flag, ignore) + char *flag, *ignore; +{ + if (flag) + { + while (unwind_protect_list) + remove_unwind_protect_internal ((char *)NULL, (char *)NULL); + } + unwind_protect_list = (UNWIND_ELT *)NULL; +} + +static void +unwind_frame_discard_internal (tag, ignore) + char *tag, *ignore; +{ + UNWIND_ELT *elt; + + while (elt = unwind_protect_list) + { + unwind_protect_list = unwind_protect_list->head.next; + if (elt->head.cleanup == 0 && (STREQ (elt->arg.v, tag))) + { + uwpfree (elt); + break; + } + else + uwpfree (elt); + } +} + +/* Restore the value of a variable, based on the contents of SV. + sv->desired_setting is a block of memory SIZE bytes long holding the + value itself. This block of memory is copied back into the variable. */ +static inline void +restore_variable (sv) + SAVED_VAR *sv; +{ + FASTCOPY (sv->desired_setting, sv->variable, sv->size); +} + +static void +unwind_frame_run_internal (tag, ignore) + char *tag, *ignore; +{ + UNWIND_ELT *elt; + + while (elt = unwind_protect_list) + { + unwind_protect_list = elt->head.next; + + /* If tag, then compare. */ + if (!elt->head.cleanup) + { + if (tag && STREQ (elt->arg.v, tag)) + { + uwpfree (elt); + break; + } + } + else + { + if (elt->head.cleanup == (Function *) restore_variable) + restore_variable (&elt->sv.v); + else + (*(elt->head.cleanup)) (elt->arg.v); + } + + uwpfree (elt); + } +} + +static void +unwind_protect_mem_internal (var, psize) + char *var; + char *psize; +{ + int size, allocated; + UNWIND_ELT *elt; + + size = *(int *) psize; + allocated = size + offsetof (UNWIND_ELT, sv.v.desired_setting[0]); + elt = (UNWIND_ELT *)xmalloc (allocated); + elt->head.next = unwind_protect_list; + elt->head.cleanup = (Function *) restore_variable; + elt->sv.v.variable = var; + elt->sv.v.size = size; + FASTCOPY (var, elt->sv.v.desired_setting, size); + unwind_protect_list = elt; +} + +/* Save the value of a variable so it will be restored when unwind-protects + are run. VAR is a pointer to the variable. SIZE is the size in + bytes of VAR. */ +void +unwind_protect_mem (var, size) + char *var; + int size; +{ + without_interrupts (unwind_protect_mem_internal, var, (char *) &size); +} diff --git a/bash-20060316/unwind_prot.h b/bash-20060316/unwind_prot.h new file mode 100644 index 000000000..8033a0500 --- /dev/null +++ b/bash-20060316/unwind_prot.h @@ -0,0 +1,48 @@ +/* unwind_prot.h - Macros and functions for hacking unwind protection. */ + +/* Copyright (C) 1993 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#if !defined (_UNWIND_PROT_H) +#define _UNWIND_PROT_H + +/* Run a function without interrupts. */ +extern void begin_unwind_frame __P((char *)); +extern void discard_unwind_frame __P((char *)); +extern void run_unwind_frame __P((char *)); +extern void add_unwind_protect (); /* Not portable to arbitrary C99 hosts. */ +extern void remove_unwind_protect __P((void)); +extern void run_unwind_protects __P((void)); +extern void clear_unwind_protect_list __P((int)); +extern void uwp_init __P((void)); + +/* Define for people who like their code to look a certain way. */ +#define end_unwind_frame() + +/* How to protect a variable. */ +#define unwind_protect_var(X) unwind_protect_mem ((char *)&(X), sizeof (X)) +extern void unwind_protect_mem __P((char *, int)); + +/* Backwards compatibility */ +#define unwind_protect_int unwind_protect_var +#define unwind_protect_short unwind_protect_var +#define unwind_protect_string unwind_protect_var +#define unwind_protect_pointer unwind_protect_var +#define unwind_protect_jmp_buf unwind_protect_var + +#endif /* _UNWIND_PROT_H */ diff --git a/bash-20060316/variables.c b/bash-20060316/variables.c new file mode 100644 index 000000000..f9b9de79e --- /dev/null +++ b/bash-20060316/variables.c @@ -0,0 +1,4282 @@ +/* variables.c -- Functions for hacking shell variables. */ + +/* Copyright (C) 1987-2005 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + Bash is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with Bash; see the file COPYING. If not, write to the Free + Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#include "config.h" + +#include "bashtypes.h" +#include "posixstat.h" +#include "posixtime.h" + +#if defined (qnx) +# if defined (qnx6) +# include +# else +# include +# endif /* !qnx6 */ +#endif /* qnx */ + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include +#include "chartypes.h" +#include +#include "bashansi.h" +#include "bashintl.h" + +#include "shell.h" +#include "flags.h" +#include "execute_cmd.h" +#include "findcmd.h" +#include "mailcheck.h" +#include "input.h" +#include "hashcmd.h" +#include "pathexp.h" + +#include "builtins/getopt.h" +#include "builtins/common.h" + +#if defined (READLINE) +# include "bashline.h" +# include +#else +# include +#endif + +#if defined (HISTORY) +# include "bashhist.h" +# include +#endif /* HISTORY */ + +#if defined (PROGRAMMABLE_COMPLETION) +# include "pcomplete.h" +#endif + +#define TEMPENV_HASH_BUCKETS 4 /* must be power of two */ + +#define ifsname(s) ((s)[0] == 'I' && (s)[1] == 'F' && (s)[2] == 'S' && (s)[3] == '\0') + +extern char **environ; + +/* Variables used here and defined in other files. */ +extern int posixly_correct; +extern int line_number; +extern int subshell_environment, indirection_level, subshell_level; +extern int build_version, patch_level; +extern int expanding_redir; +extern char *dist_version, *release_status; +extern char *shell_name; +extern char *primary_prompt, *secondary_prompt; +extern char *current_host_name; +extern sh_builtin_func_t *this_shell_builtin; +extern SHELL_VAR *this_shell_function; +extern char *the_printed_command_except_trap; +extern char *this_command_name; +extern char *command_execution_string; +extern time_t shell_start_time; + +#if defined (READLINE) +extern int no_line_editing; +extern int perform_hostname_completion; +#endif + +/* The list of shell variables that the user has created at the global + scope, or that came from the environment. */ +VAR_CONTEXT *global_variables = (VAR_CONTEXT *)NULL; + +/* The current list of shell variables, including function scopes */ +VAR_CONTEXT *shell_variables = (VAR_CONTEXT *)NULL; + +/* The list of shell functions that the user has created, or that came from + the environment. */ +HASH_TABLE *shell_functions = (HASH_TABLE *)NULL; + +#if defined (DEBUGGER) +/* The table of shell function definitions that the user defined or that + came from the environment. */ +HASH_TABLE *shell_function_defs = (HASH_TABLE *)NULL; +#endif + +/* The current variable context. This is really a count of how deep into + executing functions we are. */ +int variable_context = 0; + +/* The set of shell assignments which are made only in the environment + for a single command. */ +HASH_TABLE *temporary_env = (HASH_TABLE *)NULL; + +/* Set to non-zero if an assignment error occurs while putting variables + into the temporary environment. */ +int tempenv_assign_error; + +/* Some funky variables which are known about specially. Here is where + "$*", "$1", and all the cruft is kept. */ +char *dollar_vars[10]; +WORD_LIST *rest_of_args = (WORD_LIST *)NULL; + +/* The value of $$. */ +pid_t dollar_dollar_pid; + +/* An array which is passed to commands as their environment. It is + manufactured from the union of the initial environment and the + shell variables that are marked for export. */ +char **export_env = (char **)NULL; +static int export_env_index; +static int export_env_size; + +#if defined (READLINE) +static int winsize_assignment; /* currently assigning to LINES or COLUMNS */ +static int winsize_assigned; /* assigned to LINES or COLUMNS */ +#endif + +/* Non-zero means that we have to remake EXPORT_ENV. */ +int array_needs_making = 1; + +/* The number of times BASH has been executed. This is set + by initialize_variables (). */ +int shell_level = 0; + +/* Some forward declarations. */ +static void set_machine_vars __P((void)); +static void set_home_var __P((void)); +static void set_shell_var __P((void)); +static char *get_bash_name __P((void)); +static void initialize_shell_level __P((void)); +static void uidset __P((void)); +#if defined (ARRAY_VARS) +static void make_vers_array __P((void)); +#endif + +static SHELL_VAR *null_assign __P((SHELL_VAR *, char *, arrayind_t)); +#if defined (ARRAY_VARS) +static SHELL_VAR *null_array_assign __P((SHELL_VAR *, char *, arrayind_t)); +#endif +static SHELL_VAR *get_self __P((SHELL_VAR *)); + +#if defined (ARRAY_VARS) +static SHELL_VAR *init_dynamic_array_var __P((char *, sh_var_value_func_t *, sh_var_assign_func_t *, int)); +#endif + +static SHELL_VAR *assign_seconds __P((SHELL_VAR *, char *, arrayind_t)); +static SHELL_VAR *get_seconds __P((SHELL_VAR *)); +static SHELL_VAR *init_seconds_var __P((void)); + +static int brand __P((void)); +static void sbrand __P((unsigned long)); /* set bash random number generator. */ +static SHELL_VAR *assign_random __P((SHELL_VAR *, char *, arrayind_t)); +static SHELL_VAR *get_random __P((SHELL_VAR *)); + +static SHELL_VAR *assign_lineno __P((SHELL_VAR *, char *, arrayind_t)); +static SHELL_VAR *get_lineno __P((SHELL_VAR *)); + +static SHELL_VAR *assign_subshell __P((SHELL_VAR *, char *, arrayind_t)); +static SHELL_VAR *get_subshell __P((SHELL_VAR *)); + +#if defined (HISTORY) +static SHELL_VAR *get_histcmd __P((SHELL_VAR *)); +#endif + +#if defined (PUSHD_AND_POPD) && defined (ARRAY_VARS) +static SHELL_VAR *assign_dirstack __P((SHELL_VAR *, char *, arrayind_t)); +static SHELL_VAR *get_dirstack __P((SHELL_VAR *)); +#endif + +#if defined (ARRAY_VARS) +static SHELL_VAR *get_groupset __P((SHELL_VAR *)); +#endif + +static SHELL_VAR *get_funcname __P((SHELL_VAR *)); +static SHELL_VAR *init_funcname_var __P((void)); + +static void initialize_dynamic_variables __P((void)); + +static SHELL_VAR *hash_lookup __P((const char *, HASH_TABLE *)); +static SHELL_VAR *new_shell_variable __P((const char *)); +static SHELL_VAR *make_new_variable __P((const char *, HASH_TABLE *)); +static SHELL_VAR *bind_variable_internal __P((const char *, char *, HASH_TABLE *, int, int)); + +static void free_variable_hash_data __P((PTR_T)); + +static VARLIST *vlist_alloc __P((int)); +static VARLIST *vlist_realloc __P((VARLIST *, int)); +static void vlist_add __P((VARLIST *, SHELL_VAR *, int)); + +static void flatten __P((HASH_TABLE *, sh_var_map_func_t *, VARLIST *, int)); + +static int qsort_var_comp __P((SHELL_VAR **, SHELL_VAR **)); + +static SHELL_VAR **vapply __P((sh_var_map_func_t *)); +static SHELL_VAR **fapply __P((sh_var_map_func_t *)); + +static int visible_var __P((SHELL_VAR *)); +static int visible_and_exported __P((SHELL_VAR *)); +static int local_and_exported __P((SHELL_VAR *)); +static int variable_in_context __P((SHELL_VAR *)); +#if defined (ARRAY_VARS) +static int visible_array_vars __P((SHELL_VAR *)); +#endif + +static SHELL_VAR *bind_tempenv_variable __P((const char *, char *)); +static void push_temp_var __P((PTR_T)); +static void propagate_temp_var __P((PTR_T)); +static void dispose_temporary_env __P((sh_free_func_t *)); + +static inline char *mk_env_string __P((const char *, const char *)); +static char **make_env_array_from_var_list __P((SHELL_VAR **)); +static char **make_var_export_array __P((VAR_CONTEXT *)); +static char **make_func_export_array __P((void)); +static void add_temp_array_to_env __P((char **, int, int)); + +static int n_shell_variables __P((void)); +static int set_context __P((SHELL_VAR *)); + +static void push_func_var __P((PTR_T)); +static void push_exported_var __P((PTR_T)); + +static inline int find_special_var __P((const char *)); + +/* Initialize the shell variables from the current environment. + If PRIVMODE is nonzero, don't import functions from ENV or + parse $SHELLOPTS. */ +void +initialize_shell_variables (env, privmode) + char **env; + int privmode; +{ + char *name, *string, *temp_string; + int c, char_index, string_index, string_length; + SHELL_VAR *temp_var; + + if (shell_variables == 0) + { + shell_variables = global_variables = new_var_context ((char *)NULL, 0); + shell_variables->scope = 0; + shell_variables->table = hash_create (0); + } + + if (shell_functions == 0) + shell_functions = hash_create (0); + +#if defined (DEBUGGER) + if (shell_function_defs == 0) + shell_function_defs = hash_create (0); +#endif + + for (string_index = 0; string = env[string_index++]; ) + { + char_index = 0; + name = string; + while ((c = *string++) && c != '=') + ; + if (string[-1] == '=') + char_index = string - name - 1; + + /* If there are weird things in the environment, like `=xxx' or a + string without an `=', just skip them. */ + if (char_index == 0) + continue; + + /* ASSERT(name[char_index] == '=') */ + name[char_index] = '\0'; + /* Now, name = env variable name, string = env variable value, and + char_index == strlen (name) */ + + /* If exported function, define it now. Don't import functions from + the environment in privileged mode. */ + if (privmode == 0 && read_but_dont_execute == 0 && STREQN ("() {", string, 4)) + { + string_length = strlen (string); + temp_string = (char *)xmalloc (3 + string_length + char_index); + + strcpy (temp_string, name); + temp_string[char_index] = ' '; + strcpy (temp_string + char_index + 1, string); + + parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST); + + /* Ancient backwards compatibility. Old versions of bash exported + functions like name()=() {...} */ + if (name[char_index - 1] == ')' && name[char_index - 2] == '(') + name[char_index - 2] = '\0'; + + if (temp_var = find_function (name)) + { + VSETATTR (temp_var, (att_exported|att_imported)); + array_needs_making = 1; + } + else + report_error (_("error importing function definition for `%s'"), name); + + /* ( */ + if (name[char_index - 1] == ')' && name[char_index - 2] == '\0') + name[char_index - 2] = '('; /* ) */ + } +#if defined (ARRAY_VARS) +# if 0 + /* Array variables may not yet be exported. */ + else if (*string == '(' && string[1] == '[' && string[strlen (string) - 1] == ')') + { + string_length = 1; + temp_string = extract_array_assignment_list (string, &string_length); + temp_var = assign_array_from_string (name, temp_string); + FREE (temp_string); + VSETATTR (temp_var, (att_exported | att_imported)); + array_needs_making = 1; + } +# endif +#endif + else + { + temp_var = bind_variable (name, string, 0); + VSETATTR (temp_var, (att_exported | att_imported)); + array_needs_making = 1; + } + + name[char_index] = '='; + /* temp_var can be NULL if it was an exported function with a syntax + error (a different bug, but it still shouldn't dump core). */ + if (temp_var && function_p (temp_var) == 0) /* XXX not yet */ + { + CACHE_IMPORTSTR (temp_var, name); + } + } + + set_pwd (); + + /* Set up initial value of $_ */ +#if 0 + temp_var = bind_variable ("_", dollar_vars[0], 0); +#else + temp_var = set_if_not ("_", dollar_vars[0]); +#endif + + /* Remember this pid. */ + dollar_dollar_pid = getpid (); + + /* Now make our own defaults in case the vars that we think are + important are missing. */ + temp_var = set_if_not ("PATH", DEFAULT_PATH_VALUE); +#if 0 + set_auto_export (temp_var); /* XXX */ +#endif + + temp_var = set_if_not ("TERM", "dumb"); +#if 0 + set_auto_export (temp_var); /* XXX */ +#endif + +#if defined (qnx) + /* set node id -- don't import it from the environment */ + { + char node_name[22]; +# if defined (qnx6) + netmgr_ndtostr(ND2S_LOCAL_STR, ND_LOCAL_NODE, node_name, sizeof(node_name)); +# else + qnx_nidtostr (getnid (), node_name, sizeof (node_name)); +# endif + temp_var = bind_variable ("NODE", node_name, 0); + set_auto_export (temp_var); + } +#endif + + /* set up the prompts. */ + if (interactive_shell) + { +#if defined (PROMPT_STRING_DECODE) + set_if_not ("PS1", primary_prompt); +#else + if (current_user.uid == -1) + get_current_user_info (); + set_if_not ("PS1", current_user.euid == 0 ? "# " : primary_prompt); +#endif + set_if_not ("PS2", secondary_prompt); + } + set_if_not ("PS4", "+ "); + + /* Don't allow IFS to be imported from the environment. */ + temp_var = bind_variable ("IFS", " \t\n", 0); + setifs (temp_var); + + /* Magic machine types. Pretty convenient. */ + set_machine_vars (); + + /* Default MAILCHECK for interactive shells. Defer the creation of a + default MAILPATH until the startup files are read, because MAIL + names a mail file if MAILPATH is not set, and we should provide a + default only if neither is set. */ + if (interactive_shell) + { + temp_var = set_if_not ("MAILCHECK", posixly_correct ? "600" : "60"); + VSETATTR (temp_var, att_integer); + } + + /* Do some things with shell level. */ + initialize_shell_level (); + + set_ppid (); + + /* Initialize the `getopts' stuff. */ + temp_var = bind_variable ("OPTIND", "1", 0); + VSETATTR (temp_var, att_integer); + getopts_reset (0); + bind_variable ("OPTERR", "1", 0); + sh_opterr = 1; + + if (login_shell == 1 && posixly_correct == 0) + set_home_var (); + + /* Get the full pathname to THIS shell, and set the BASH variable + to it. */ + name = get_bash_name (); + temp_var = bind_variable ("BASH", name, 0); + free (name); + + /* Make the exported environment variable SHELL be the user's login + shell. Note that the `tset' command looks at this variable + to determine what style of commands to output; if it ends in "csh", + then C-shell commands are output, else Bourne shell commands. */ + set_shell_var (); + + /* Make a variable called BASH_VERSION which contains the version info. */ + bind_variable ("BASH_VERSION", shell_version_string (), 0); +#if defined (ARRAY_VARS) + make_vers_array (); +#endif + + if (command_execution_string) + bind_variable ("BASH_EXECUTION_STRING", command_execution_string, 0); + + /* Find out if we're supposed to be in Posix.2 mode via an + environment variable. */ + temp_var = find_variable ("POSIXLY_CORRECT"); + if (!temp_var) + temp_var = find_variable ("POSIX_PEDANTIC"); + if (temp_var && imported_p (temp_var)) + sv_strict_posix (temp_var->name); + +#if defined (HISTORY) + /* Set history variables to defaults, and then do whatever we would + do if the variable had just been set. Do this only in the case + that we are remembering commands on the history list. */ + if (remember_on_history) + { + name = bash_tilde_expand (posixly_correct ? "~/.sh_history" : "~/.bash_history", 0); + + set_if_not ("HISTFILE", name); + free (name); + +#if 0 + set_if_not ("HISTSIZE", "500"); + sv_histsize ("HISTSIZE"); +#endif + } +#endif /* HISTORY */ + + /* Seed the random number generator. */ + sbrand (dollar_dollar_pid + shell_start_time); + + /* Handle some "special" variables that we may have inherited from a + parent shell. */ + if (interactive_shell) + { + temp_var = find_variable ("IGNOREEOF"); + if (!temp_var) + temp_var = find_variable ("ignoreeof"); + if (temp_var && imported_p (temp_var)) + sv_ignoreeof (temp_var->name); + } + +#if defined (HISTORY) + if (interactive_shell && remember_on_history) + { + sv_history_control ("HISTCONTROL"); + sv_histignore ("HISTIGNORE"); + } +#endif /* HISTORY */ + +#if defined (READLINE) && defined (STRICT_POSIX) + /* POSIXLY_CORRECT will only be 1 here if the shell was compiled + -DSTRICT_POSIX */ + if (interactive_shell && posixly_correct && no_line_editing == 0) + rl_prefer_env_winsize = 1; +#endif /* READLINE && STRICT_POSIX */ + + /* + * 24 October 2001 + * + * I'm tired of the arguing and bug reports. Bash now leaves SSH_CLIENT + * and SSH2_CLIENT alone. I'm going to rely on the shell_level check in + * isnetconn() to avoid running the startup files more often than wanted. + * That will, of course, only work if the user's login shell is bash, so + * I've made that behavior conditional on SSH_SOURCE_BASHRC being defined + * in config-top.h. + */ +#if 0 + temp_var = find_variable ("SSH_CLIENT"); + if (temp_var && imported_p (temp_var)) + { + VUNSETATTR (temp_var, att_exported); + array_needs_making = 1; + } + temp_var = find_variable ("SSH2_CLIENT"); + if (temp_var && imported_p (temp_var)) + { + VUNSETATTR (temp_var, att_exported); + array_needs_making = 1; + } +#endif + + /* Get the user's real and effective user ids. */ + uidset (); + + /* Initialize the dynamic variables, and seed their values. */ + initialize_dynamic_variables (); +} + +/* **************************************************************** */ +/* */ +/* Setting values for special shell variables */ +/* */ +/* **************************************************************** */ + +static void +set_machine_vars () +{ + SHELL_VAR *temp_var; + + temp_var = set_if_not ("HOSTTYPE", HOSTTYPE); + temp_var = set_if_not ("OSTYPE", OSTYPE); + temp_var = set_if_not ("MACHTYPE", MACHTYPE); + + temp_var = set_if_not ("HOSTNAME", current_host_name); +} + +/* Set $HOME to the information in the password file if we didn't get + it from the environment. */ + +/* This function is not static so the tilde and readline libraries can + use it. */ +char * +sh_get_home_dir () +{ + if (current_user.home_dir == 0) + get_current_user_info (); + return current_user.home_dir; +} + +static void +set_home_var () +{ + SHELL_VAR *temp_var; + + temp_var = find_variable ("HOME"); + if (temp_var == 0) + temp_var = bind_variable ("HOME", sh_get_home_dir (), 0); +#if 0 + VSETATTR (temp_var, att_exported); +#endif +} + +/* Set $SHELL to the user's login shell if it is not already set. Call + get_current_user_info if we haven't already fetched the shell. */ +static void +set_shell_var () +{ + SHELL_VAR *temp_var; + + temp_var = find_variable ("SHELL"); + if (temp_var == 0) + { + if (current_user.shell == 0) + get_current_user_info (); + temp_var = bind_variable ("SHELL", current_user.shell, 0); + } +#if 0 + VSETATTR (temp_var, att_exported); +#endif +} + +static char * +get_bash_name () +{ + char *name; + + if ((login_shell == 1) && RELPATH(shell_name)) + { + if (current_user.shell == 0) + get_current_user_info (); + name = savestring (current_user.shell); + } + else if (ABSPATH(shell_name)) + name = savestring (shell_name); + else if (shell_name[0] == '.' && shell_name[1] == '/') + { + /* Fast path for common case. */ + char *cdir; + int len; + + cdir = get_string_value ("PWD"); + if (cdir) + { + len = strlen (cdir); + name = (char *)xmalloc (len + strlen (shell_name) + 1); + strcpy (name, cdir); + strcpy (name + len, shell_name + 1); + } + else + name = savestring (shell_name); + } + else + { + char *tname; + int s; + + tname = find_user_command (shell_name); + + if (tname == 0) + { + /* Try the current directory. If there is not an executable + there, just punt and use the login shell. */ + s = file_status (shell_name); + if (s & FS_EXECABLE) + { + tname = make_absolute (shell_name, get_string_value ("PWD")); + if (*shell_name == '.') + { + name = sh_canonpath (tname, PATH_CHECKDOTDOT|PATH_CHECKEXISTS); + if (name == 0) + name = tname; + else + free (tname); + } + else + name = tname; + } + else + { + if (current_user.shell == 0) + get_current_user_info (); + name = savestring (current_user.shell); + } + } + else + { + name = full_pathname (tname); + free (tname); + } + } + + return (name); +} + +void +adjust_shell_level (change) + int change; +{ + char new_level[5], *old_SHLVL; + intmax_t old_level; + SHELL_VAR *temp_var; + + old_SHLVL = get_string_value ("SHLVL"); + if (old_SHLVL == 0 || *old_SHLVL == '\0' || legal_number (old_SHLVL, &old_level) == 0) + old_level = 0; + + shell_level = old_level + change; + if (shell_level < 0) + shell_level = 0; + else if (shell_level > 1000) + { + internal_warning (_("shell level (%d) too high, resetting to 1"), shell_level); + shell_level = 1; + } + + /* We don't need the full generality of itos here. */ + if (shell_level < 10) + { + new_level[0] = shell_level + '0'; + new_level[1] = '\0'; + } + else if (shell_level < 100) + { + new_level[0] = (shell_level / 10) + '0'; + new_level[1] = (shell_level % 10) + '0'; + new_level[2] = '\0'; + } + else if (shell_level < 1000) + { + new_level[0] = (shell_level / 100) + '0'; + old_level = shell_level % 100; + new_level[1] = (old_level / 10) + '0'; + new_level[2] = (old_level % 10) + '0'; + new_level[3] = '\0'; + } + + temp_var = bind_variable ("SHLVL", new_level, 0); + set_auto_export (temp_var); +} + +static void +initialize_shell_level () +{ + adjust_shell_level (1); +} + +/* If we got PWD from the environment, update our idea of the current + working directory. In any case, make sure that PWD exists before + checking it. It is possible for getcwd () to fail on shell startup, + and in that case, PWD would be undefined. If this is an interactive + login shell, see if $HOME is the current working directory, and if + that's not the same string as $PWD, set PWD=$HOME. */ + +void +set_pwd () +{ + SHELL_VAR *temp_var, *home_var; + char *temp_string, *home_string; + + home_var = find_variable ("HOME"); + home_string = home_var ? value_cell (home_var) : (char *)NULL; + + temp_var = find_variable ("PWD"); + if (temp_var && imported_p (temp_var) && + (temp_string = value_cell (temp_var)) && + same_file (temp_string, ".", (struct stat *)NULL, (struct stat *)NULL)) + set_working_directory (temp_string); + else if (home_string && interactive_shell && login_shell && + same_file (home_string, ".", (struct stat *)NULL, (struct stat *)NULL)) + { + set_working_directory (home_string); + temp_var = bind_variable ("PWD", home_string, 0); + set_auto_export (temp_var); + } + else + { + temp_string = get_working_directory ("shell-init"); + if (temp_string) + { + temp_var = bind_variable ("PWD", temp_string, 0); + set_auto_export (temp_var); + free (temp_string); + } + } + + /* According to the Single Unix Specification, v2, $OLDPWD is an + `environment variable' and therefore should be auto-exported. + Make a dummy invisible variable for OLDPWD, and mark it as exported. */ + temp_var = bind_variable ("OLDPWD", (char *)NULL, 0); + VSETATTR (temp_var, (att_exported | att_invisible)); +} + +/* Make a variable $PPID, which holds the pid of the shell's parent. */ +void +set_ppid () +{ + char namebuf[INT_STRLEN_BOUND(pid_t) + 1], *name; + SHELL_VAR *temp_var; + + name = inttostr (getppid (), namebuf, sizeof(namebuf)); + temp_var = find_variable ("PPID"); + if (temp_var) + VUNSETATTR (temp_var, (att_readonly | att_exported)); + temp_var = bind_variable ("PPID", name, 0); + VSETATTR (temp_var, (att_readonly | att_integer)); +} + +static void +uidset () +{ + char buff[INT_STRLEN_BOUND(uid_t) + 1], *b; + register SHELL_VAR *v; + + b = inttostr (current_user.uid, buff, sizeof (buff)); + v = find_variable ("UID"); + if (v == 0) + { + v = bind_variable ("UID", b, 0); + VSETATTR (v, (att_readonly | att_integer)); + } + + if (current_user.euid != current_user.uid) + b = inttostr (current_user.euid, buff, sizeof (buff)); + + v = find_variable ("EUID"); + if (v == 0) + { + v = bind_variable ("EUID", b, 0); + VSETATTR (v, (att_readonly | att_integer)); + } +} + +#if defined (ARRAY_VARS) +static void +make_vers_array () +{ + SHELL_VAR *vv; + ARRAY *av; + char *s, d[32], b[INT_STRLEN_BOUND(int) + 1]; + + unbind_variable ("BASH_VERSINFO"); + + vv = make_new_array_variable ("BASH_VERSINFO"); + av = array_cell (vv); + strcpy (d, dist_version); + s = xstrchr (d, '.'); + if (s) + *s++ = '\0'; + array_insert (av, 0, d); + array_insert (av, 1, s); + s = inttostr (patch_level, b, sizeof (b)); + array_insert (av, 2, s); + s = inttostr (build_version, b, sizeof (b)); + array_insert (av, 3, s); + array_insert (av, 4, release_status); + array_insert (av, 5, MACHTYPE); + + VSETATTR (vv, att_readonly); +} +#endif /* ARRAY_VARS */ + +/* Set the environment variables $LINES and $COLUMNS in response to + a window size change. */ +void +sh_set_lines_and_columns (lines, cols) + int lines, cols; +{ + char val[INT_STRLEN_BOUND(int) + 1], *v; + +#if defined (READLINE) + /* If we are currently assigning to LINES or COLUMNS, don't do anything. */ + if (winsize_assignment) + return; +#endif + + v = inttostr (lines, val, sizeof (val)); + bind_variable ("LINES", v, 0); + + v = inttostr (cols, val, sizeof (val)); + bind_variable ("COLUMNS", v, 0); +} + +/* **************************************************************** */ +/* */ +/* Printing variables and values */ +/* */ +/* **************************************************************** */ + +/* Print LIST (a list of shell variables) to stdout in such a way that + they can be read back in. */ +void +print_var_list (list) + register SHELL_VAR **list; +{ + register int i; + register SHELL_VAR *var; + + for (i = 0; list && (var = list[i]); i++) + if (invisible_p (var) == 0) + print_assignment (var); +} + +/* Print LIST (a list of shell functions) to stdout in such a way that + they can be read back in. */ +void +print_func_list (list) + register SHELL_VAR **list; +{ + register int i; + register SHELL_VAR *var; + + for (i = 0; list && (var = list[i]); i++) + { + printf ("%s ", var->name); + print_var_function (var); + printf ("\n"); + } +} + +/* Print the value of a single SHELL_VAR. No newline is + output, but the variable is printed in such a way that + it can be read back in. */ +void +print_assignment (var) + SHELL_VAR *var; +{ + if (var_isset (var) == 0) + return; + + if (function_p (var)) + { + printf ("%s", var->name); + print_var_function (var); + printf ("\n"); + } +#if defined (ARRAY_VARS) + else if (array_p (var)) + print_array_assignment (var, 0); +#endif /* ARRAY_VARS */ + else + { + printf ("%s=", var->name); + print_var_value (var, 1); + printf ("\n"); + } +} + +/* Print the value cell of VAR, a shell variable. Do not print + the name, nor leading/trailing newline. If QUOTE is non-zero, + and the value contains shell metacharacters, quote the value + in such a way that it can be read back in. */ +void +print_var_value (var, quote) + SHELL_VAR *var; + int quote; +{ + char *t; + + if (var_isset (var) == 0) + return; + + if (quote && posixly_correct == 0 && ansic_shouldquote (value_cell (var))) + { + t = ansic_quote (value_cell (var), 0, (int *)0); + printf ("%s", t); + free (t); + } + else if (quote && sh_contains_shell_metas (value_cell (var))) + { + t = sh_single_quote (value_cell (var)); + printf ("%s", t); + free (t); + } + else + printf ("%s", value_cell (var)); +} + +/* Print the function cell of VAR, a shell variable. Do not + print the name, nor leading/trailing newline. */ +void +print_var_function (var) + SHELL_VAR *var; +{ + if (function_p (var) && var_isset (var)) + printf ("%s", named_function_string ((char *)NULL, function_cell(var), 1)); +} + +/* **************************************************************** */ +/* */ +/* Dynamic Variables */ +/* */ +/* **************************************************************** */ + +/* DYNAMIC VARIABLES + + These are variables whose values are generated anew each time they are + referenced. These are implemented using a pair of function pointers + in the struct variable: assign_func, which is called from bind_variable + and, if arrays are compiled into the shell, some of the functions in + arrayfunc.c, and dynamic_value, which is called from find_variable. + + assign_func is called from bind_variable_internal, if + bind_variable_internal discovers that the variable being assigned to + has such a function. The function is called as + SHELL_VAR *temp = (*(entry->assign_func)) (entry, value, ind) + and the (SHELL_VAR *)temp is returned as the value of bind_variable. It + is usually ENTRY (self). IND is an index for an array variable, and + unused otherwise. + + dynamic_value is called from find_variable_internal to return a `new' + value for the specified dynamic varible. If this function is NULL, + the variable is treated as a `normal' shell variable. If it is not, + however, then this function is called like this: + tempvar = (*(var->dynamic_value)) (var); + + Sometimes `tempvar' will replace the value of `var'. Other times, the + shell will simply use the string value. Pretty object-oriented, huh? + + Be warned, though: if you `unset' a special variable, it loses its + special meaning, even if you subsequently set it. + + The special assignment code would probably have been better put in + subst.c: do_assignment_internal, in the same style as + stupidly_hack_special_variables, but I wanted the changes as + localized as possible. */ + +#define INIT_DYNAMIC_VAR(var, val, gfunc, afunc) \ + do \ + { \ + v = bind_variable (var, (val), 0); \ + v->dynamic_value = gfunc; \ + v->assign_func = afunc; \ + } \ + while (0) + +#define INIT_DYNAMIC_ARRAY_VAR(var, gfunc, afunc) \ + do \ + { \ + v = make_new_array_variable (var); \ + v->dynamic_value = gfunc; \ + v->assign_func = afunc; \ + } \ + while (0) + +static SHELL_VAR * +null_assign (self, value, unused) + SHELL_VAR *self; + char *value; + arrayind_t unused; +{ + return (self); +} + +#if defined (ARRAY_VARS) +static SHELL_VAR * +null_array_assign (self, value, ind) + SHELL_VAR *self; + char *value; + arrayind_t ind; +{ + return (self); +} +#endif + +/* Degenerate `dynamic_value' function; just returns what's passed without + manipulation. */ +static SHELL_VAR * +get_self (self) + SHELL_VAR *self; +{ + return (self); +} + +#if defined (ARRAY_VARS) +/* A generic dynamic array variable initializer. Intialize array variable + NAME with dynamic value function GETFUNC and assignment function SETFUNC. */ +static SHELL_VAR * +init_dynamic_array_var (name, getfunc, setfunc, attrs) + char *name; + sh_var_value_func_t *getfunc; + sh_var_assign_func_t *setfunc; + int attrs; +{ + SHELL_VAR *v; + + v = find_variable (name); + if (v) + return (v); + INIT_DYNAMIC_ARRAY_VAR (name, getfunc, setfunc); + if (attrs) + VSETATTR (v, attrs); + return v; +} +#endif + + +/* The value of $SECONDS. This is the number of seconds since shell + invocation, or, the number of seconds since the last assignment + the + value of the last assignment. */ +static intmax_t seconds_value_assigned; + +static SHELL_VAR * +assign_seconds (self, value, unused) + SHELL_VAR *self; + char *value; + arrayind_t unused; +{ + if (legal_number (value, &seconds_value_assigned) == 0) + seconds_value_assigned = 0; + shell_start_time = NOW; + return (self); +} + +static SHELL_VAR * +get_seconds (var) + SHELL_VAR *var; +{ + time_t time_since_start; + char *p; + + time_since_start = NOW - shell_start_time; + p = itos(seconds_value_assigned + time_since_start); + + FREE (value_cell (var)); + + VSETATTR (var, att_integer); + var_setvalue (var, p); + return (var); +} + +static SHELL_VAR * +init_seconds_var () +{ + SHELL_VAR *v; + + v = find_variable ("SECONDS"); + if (v) + { + if (legal_number (value_cell(v), &seconds_value_assigned) == 0) + seconds_value_assigned = 0; + } + INIT_DYNAMIC_VAR ("SECONDS", (v ? value_cell (v) : (char *)NULL), get_seconds, assign_seconds); + return v; +} + +/* The random number seed. You can change this by setting RANDOM. */ +static unsigned long rseed = 1; +static int last_random_value; +static int seeded_subshell = 0; + +/* A linear congruential random number generator based on the example + one in the ANSI C standard. This one isn't very good, but a more + complicated one is overkill. */ + +/* Returns a pseudo-random number between 0 and 32767. */ +static int +brand () +{ + rseed = rseed * 1103515245 + 12345; + return ((unsigned int)((rseed >> 16) & 32767)); /* was % 32768 */ +} + +/* Set the random number generator seed to SEED. */ +static void +sbrand (seed) + unsigned long seed; +{ + rseed = seed; + last_random_value = 0; +} + +static SHELL_VAR * +assign_random (self, value, unused) + SHELL_VAR *self; + char *value; + arrayind_t unused; +{ + sbrand (strtoul (value, (char **)NULL, 10)); + if (subshell_environment) + seeded_subshell = 1; + return (self); +} + +int +get_random_number () +{ + int rv; + + /* Reset for command and process substitution. */ + if (subshell_environment && seeded_subshell == 0) + { + sbrand (rseed + getpid() + NOW); + seeded_subshell = 1; + } + + do + rv = brand (); + while (rv == last_random_value); + return rv; +} + +static SHELL_VAR * +get_random (var) + SHELL_VAR *var; +{ + int rv; + char *p; + + rv = get_random_number (); + last_random_value = rv; + p = itos (rv); + + FREE (value_cell (var)); + + VSETATTR (var, att_integer); + var_setvalue (var, p); + return (var); +} + +static SHELL_VAR * +assign_lineno (var, value, unused) + SHELL_VAR *var; + char *value; + arrayind_t unused; +{ + intmax_t new_value; + + if (value == 0 || *value == '\0' || legal_number (value, &new_value) == 0) + new_value = 0; + line_number = new_value; + return var; +} + +/* Function which returns the current line number. */ +static SHELL_VAR * +get_lineno (var) + SHELL_VAR *var; +{ + char *p; + int ln; + + ln = executing_line_number (); + p = itos (ln); + FREE (value_cell (var)); + var_setvalue (var, p); + return (var); +} + +static SHELL_VAR * +assign_subshell (var, value, unused) + SHELL_VAR *var; + char *value; + arrayind_t unused; +{ + intmax_t new_value; + + if (value == 0 || *value == '\0' || legal_number (value, &new_value) == 0) + new_value = 0; + subshell_level = new_value; + return var; +} + +static SHELL_VAR * +get_subshell (var) + SHELL_VAR *var; +{ + char *p; + + p = itos (subshell_level); + FREE (value_cell (var)); + var_setvalue (var, p); + return (var); +} + +static SHELL_VAR * +get_bash_command (var) + SHELL_VAR *var; +{ + char *p; + + + if (the_printed_command_except_trap) + p = savestring (the_printed_command_except_trap); + else + { + p = (char *)xmalloc (1); + p[0] = '\0'; + } + FREE (value_cell (var)); + var_setvalue (var, p); + return (var); +} + +#if defined (HISTORY) +static SHELL_VAR * +get_histcmd (var) + SHELL_VAR *var; +{ + char *p; + + p = itos (history_number ()); + FREE (value_cell (var)); + var_setvalue (var, p); + return (var); +} +#endif + +#if defined (READLINE) +/* When this function returns, VAR->value points to malloced memory. */ +static SHELL_VAR * +get_comp_wordbreaks (var) + SHELL_VAR *var; +{ + char *p; + + /* If we don't have anything yet, assign a default value. */ + if (rl_completer_word_break_characters == 0 && bash_readline_initialized == 0) + enable_hostname_completion (perform_hostname_completion); + +#if 0 + FREE (value_cell (var)); + p = savestring (rl_completer_word_break_characters); + + var_setvalue (var, p); +#else + var_setvalue (var, rl_completer_word_break_characters); +#endif + + return (var); +} + +/* When this function returns, rl_completer_word_break_characters points to + malloced memory. */ +static SHELL_VAR * +assign_comp_wordbreaks (self, value, unused) + SHELL_VAR *self; + char *value; + arrayind_t unused; +{ + if (rl_completer_word_break_characters && + rl_completer_word_break_characters != rl_basic_word_break_characters) + free (rl_completer_word_break_characters); + + rl_completer_word_break_characters = savestring (value); + return self; +} +#endif /* READLINE */ + +#if defined (PUSHD_AND_POPD) && defined (ARRAY_VARS) +static SHELL_VAR * +assign_dirstack (self, value, ind) + SHELL_VAR *self; + char *value; + arrayind_t ind; +{ + set_dirstack_element (ind, 1, value); + return self; +} + +static SHELL_VAR * +get_dirstack (self) + SHELL_VAR *self; +{ + ARRAY *a; + WORD_LIST *l; + + l = get_directory_stack (0); + a = array_from_word_list (l); + array_dispose (array_cell (self)); + dispose_words (l); + var_setarray (self, a); + return self; +} +#endif /* PUSHD AND POPD && ARRAY_VARS */ + +#if defined (ARRAY_VARS) +/* We don't want to initialize the group set with a call to getgroups() + unless we're asked to, but we only want to do it once. */ +static SHELL_VAR * +get_groupset (self) + SHELL_VAR *self; +{ + register int i; + int ng; + ARRAY *a; + static char **group_set = (char **)NULL; + + if (group_set == 0) + { + group_set = get_group_list (&ng); + a = array_cell (self); + for (i = 0; i < ng; i++) + array_insert (a, i, group_set[i]); + } + return (self); +} +#endif /* ARRAY_VARS */ + +/* If ARRAY_VARS is not defined, this just returns the name of any + currently-executing function. If we have arrays, it's a call stack. */ +static SHELL_VAR * +get_funcname (self) + SHELL_VAR *self; +{ +#if ! defined (ARRAY_VARS) + char *t; + if (variable_context && this_shell_function) + { + FREE (value_cell (self)); + t = savestring (this_shell_function->name); + var_setvalue (self, t); + } +#endif + return (self); +} + +void +make_funcname_visible (on_or_off) + int on_or_off; +{ + SHELL_VAR *v; + + v = find_variable ("FUNCNAME"); + if (v == 0 || v->dynamic_value == 0) + return; + + if (on_or_off) + VUNSETATTR (v, att_invisible); + else + VSETATTR (v, att_invisible); +} + +static SHELL_VAR * +init_funcname_var () +{ + SHELL_VAR *v; + + v = find_variable ("FUNCNAME"); + if (v) + return v; +#if defined (ARRAY_VARS) + INIT_DYNAMIC_ARRAY_VAR ("FUNCNAME", get_funcname, null_array_assign); +#else + INIT_DYNAMIC_VAR ("FUNCNAME", (char *)NULL, get_funcname, null_assign); +#endif + VSETATTR (v, att_invisible|att_noassign); + return v; +} + +static void +initialize_dynamic_variables () +{ + SHELL_VAR *v; + + v = init_seconds_var (); + + INIT_DYNAMIC_VAR ("BASH_COMMAND", (char *)NULL, get_bash_command, (sh_var_assign_func_t *)NULL); + INIT_DYNAMIC_VAR ("BASH_SUBSHELL", (char *)NULL, get_subshell, assign_subshell); + + INIT_DYNAMIC_VAR ("RANDOM", (char *)NULL, get_random, assign_random); + VSETATTR (v, att_integer); + INIT_DYNAMIC_VAR ("LINENO", (char *)NULL, get_lineno, assign_lineno); + VSETATTR (v, att_integer); + +#if defined (HISTORY) + INIT_DYNAMIC_VAR ("HISTCMD", (char *)NULL, get_histcmd, (sh_var_assign_func_t *)NULL); + VSETATTR (v, att_integer); +#endif + +#if defined (READLINE) + INIT_DYNAMIC_VAR ("COMP_WORDBREAKS", (char *)NULL, get_comp_wordbreaks, assign_comp_wordbreaks); +#endif + +#if defined (PUSHD_AND_POPD) && defined (ARRAY_VARS) + v = init_dynamic_array_var ("DIRSTACK", get_dirstack, assign_dirstack, 0); +#endif /* PUSHD_AND_POPD && ARRAY_VARS */ + +#if defined (ARRAY_VARS) + v = init_dynamic_array_var ("GROUPS", get_groupset, null_array_assign, att_noassign); + +# if defined (DEBUGGER) + v = init_dynamic_array_var ("BASH_ARGC", get_self, null_array_assign, att_noassign|att_nounset); + v = init_dynamic_array_var ("BASH_ARGV", get_self, null_array_assign, att_noassign|att_nounset); +# endif /* DEBUGGER */ + v = init_dynamic_array_var ("BASH_SOURCE", get_self, null_array_assign, att_noassign|att_nounset); + v = init_dynamic_array_var ("BASH_LINENO", get_self, null_array_assign, att_noassign|att_nounset); +#endif + + v = init_funcname_var (); +} + +/* **************************************************************** */ +/* */ +/* Retrieving variables and values */ +/* */ +/* **************************************************************** */ + +/* How to get a pointer to the shell variable or function named NAME. + HASHED_VARS is a pointer to the hash table containing the list + of interest (either variables or functions). */ + +static SHELL_VAR * +hash_lookup (name, hashed_vars) + const char *name; + HASH_TABLE *hashed_vars; +{ + BUCKET_CONTENTS *bucket; + + bucket = hash_search (name, hashed_vars, 0); + return (bucket ? (SHELL_VAR *)bucket->data : (SHELL_VAR *)NULL); +} + +SHELL_VAR * +var_lookup (name, vcontext) + const char *name; + VAR_CONTEXT *vcontext; +{ + VAR_CONTEXT *vc; + SHELL_VAR *v; + + v = (SHELL_VAR *)NULL; + for (vc = vcontext; vc; vc = vc->down) + if (v = hash_lookup (name, vc->table)) + break; + + return v; +} + +/* Look up the variable entry named NAME. If SEARCH_TEMPENV is non-zero, + then also search the temporarily built list of exported variables. + The lookup order is: + temporary_env + shell_variables list +*/ + +SHELL_VAR * +find_variable_internal (name, force_tempenv) + const char *name; + int force_tempenv; +{ + SHELL_VAR *var; + int search_tempenv; + + var = (SHELL_VAR *)NULL; + + /* If explicitly requested, first look in the temporary environment for + the variable. This allows constructs such as "foo=x eval 'echo $foo'" + to get the `exported' value of $foo. This happens if we are executing + a function or builtin, or if we are looking up a variable in a + "subshell environment". */ + search_tempenv = force_tempenv || (expanding_redir == 0 && subshell_environment); + + if (search_tempenv && temporary_env) + var = hash_lookup (name, temporary_env); + + if (var == 0) + var = var_lookup (name, shell_variables); + + if (var == 0) + return ((SHELL_VAR *)NULL); + + return (var->dynamic_value ? (*(var->dynamic_value)) (var) : var); +} + +/* Look up the variable entry named NAME. Returns the entry or NULL. */ +SHELL_VAR * +find_variable (name) + const char *name; +{ + return (find_variable_internal (name, (expanding_redir == 0 && this_shell_builtin != 0))); +} + +/* Look up the function entry whose name matches STRING. + Returns the entry or NULL. */ +SHELL_VAR * +find_function (name) + const char *name; +{ + return (hash_lookup (name, shell_functions)); +} + +/* Find the function definition for the shell function named NAME. Returns + the entry or NULL. */ +FUNCTION_DEF * +find_function_def (name) + const char *name; +{ + return ((FUNCTION_DEF *)hash_lookup (name, shell_function_defs)); +} + +/* Return the value of VAR. VAR is assumed to have been the result of a + lookup without any subscript, if arrays are compiled into the shell. */ +char * +get_variable_value (var) + SHELL_VAR *var; +{ + if (var == 0) + return ((char *)NULL); +#if defined (ARRAY_VARS) + else if (array_p (var)) + return (array_reference (array_cell (var), 0)); +#endif + else + return (value_cell (var)); +} + +/* Return the string value of a variable. Return NULL if the variable + doesn't exist. Don't cons a new string. This is a potential memory + leak if the variable is found in the temporary environment. Since + functions and variables have separate name spaces, returns NULL if + var_name is a shell function only. */ +char * +get_string_value (var_name) + const char *var_name; +{ + SHELL_VAR *var; + + var = find_variable (var_name); + return ((var) ? get_variable_value (var) : (char *)NULL); +} + +/* This is present for use by the tilde and readline libraries. */ +char * +sh_get_env_value (v) + const char *v; +{ + return get_string_value (v); +} + +/* **************************************************************** */ +/* */ +/* Creating and setting variables */ +/* */ +/* **************************************************************** */ + +/* Set NAME to VALUE if NAME has no value. */ +SHELL_VAR * +set_if_not (name, value) + char *name, *value; +{ + SHELL_VAR *v; + + v = find_variable (name); + if (v == 0) + v = bind_variable_internal (name, value, global_variables->table, HASH_NOSRCH, 0); + return (v); +} + +/* Create a local variable referenced by NAME. */ +SHELL_VAR * +make_local_variable (name) + const char *name; +{ + SHELL_VAR *new_var, *old_var; + VAR_CONTEXT *vc; + int was_tmpvar; + char *tmp_value; + + /* local foo; local foo; is a no-op. */ + old_var = find_variable (name); + if (old_var && local_p (old_var) && old_var->context == variable_context) + { + VUNSETATTR (old_var, att_invisible); + return (old_var); + } + + was_tmpvar = old_var && tempvar_p (old_var); + if (was_tmpvar) + tmp_value = value_cell (old_var); + + for (vc = shell_variables; vc; vc = vc->down) + if (vc_isfuncenv (vc) && vc->scope == variable_context) + break; + + if (vc == 0) + { + internal_error (_("make_local_variable: no function context at current scope")); + return ((SHELL_VAR *)NULL); + } + else if (vc->table == 0) + vc->table = hash_create (TEMPENV_HASH_BUCKETS); + + /* Since this is called only from the local/declare/typeset code, we can + call builtin_error here without worry (of course, it will also work + for anything that sets this_command_name). Variables with the `noassign' + attribute may not be made local. The test against old_var's context + level is to disallow local copies of readonly global variables (since I + believe that this could be a security hole). Readonly copies of calling + function local variables are OK. */ + if (old_var && (noassign_p (old_var) || + (readonly_p (old_var) && old_var->context == 0))) + { + if (readonly_p (old_var)) + sh_readonly (name); + return ((SHELL_VAR *)NULL); + } + + if (old_var == 0) + new_var = bind_variable_internal (name, "", vc->table, HASH_NOSRCH, 0); + else + { + new_var = make_new_variable (name, vc->table); + + /* If we found this variable in one of the temporary environments, + inherit its value. Watch to see if this causes problems with + things like `x=4 local x'. */ + if (was_tmpvar) + var_setvalue (new_var, savestring (tmp_value)); + + new_var->attributes = exported_p (old_var) ? att_exported : 0; + } + + vc->flags |= VC_HASLOCAL; + + new_var->context = variable_context; + VSETATTR (new_var, att_local); + + if (ifsname (name)) + setifs (new_var); + + return (new_var); +} + +#if defined (ARRAY_VARS) +SHELL_VAR * +make_local_array_variable (name) + char *name; +{ + SHELL_VAR *var; + ARRAY *array; + + var = make_local_variable (name); + if (var == 0 || array_p (var)) + return var; + + array = array_create (); + + FREE (value_cell(var)); + var_setarray (var, array); + VSETATTR (var, att_array); + return var; +} +#endif /* ARRAY_VARS */ + +/* Create a new shell variable with name NAME. */ +static SHELL_VAR * +new_shell_variable (name) + const char *name; +{ + SHELL_VAR *entry; + + entry = (SHELL_VAR *)xmalloc (sizeof (SHELL_VAR)); + + entry->name = savestring (name); + var_setvalue (entry, (char *)NULL); + CLEAR_EXPORTSTR (entry); + + entry->dynamic_value = (sh_var_value_func_t *)NULL; + entry->assign_func = (sh_var_assign_func_t *)NULL; + + entry->attributes = 0; + + /* Always assume variables are to be made at toplevel! + make_local_variable has the responsibilty of changing the + variable context. */ + entry->context = 0; + + return (entry); +} + +/* Create a new shell variable with name NAME and add it to the hash table + TABLE. */ +static SHELL_VAR * +make_new_variable (name, table) + const char *name; + HASH_TABLE *table; +{ + SHELL_VAR *entry; + BUCKET_CONTENTS *elt; + + entry = new_shell_variable (name); + + /* Make sure we have a shell_variables hash table to add to. */ + if (shell_variables == 0) + { + shell_variables = global_variables = new_var_context ((char *)NULL, 0); + shell_variables->scope = 0; + shell_variables->table = hash_create (0); + } + + elt = hash_insert (savestring (name), table, HASH_NOSRCH); + elt->data = (PTR_T)entry; + + return entry; +} + +#if defined (ARRAY_VARS) +SHELL_VAR * +make_new_array_variable (name) + char *name; +{ + SHELL_VAR *entry; + ARRAY *array; + + entry = make_new_variable (name, global_variables->table); + array = array_create (); + var_setarray (entry, array); + VSETATTR (entry, att_array); + return entry; +} +#endif + +char * +make_variable_value (var, value, flags) + SHELL_VAR *var; + char *value; + int flags; +{ + char *retval, *oval; + intmax_t lval, rval; + int expok, olen; + + /* If this variable has had its type set to integer (via `declare -i'), + then do expression evaluation on it and store the result. The + functions in expr.c (evalexp()) and bind_int_variable() are responsible + for turning off the integer flag if they don't want further + evaluation done. */ + if (integer_p (var)) + { + if (flags & ASS_APPEND) + { + oval = value_cell (var); + lval = evalexp (oval, &expok); /* ksh93 seems to do this */ + if (expok == 0) + jump_to_top_level (DISCARD); + } + rval = evalexp (value, &expok); + if (expok == 0) + jump_to_top_level (DISCARD); + if (flags & ASS_APPEND) + rval += lval; + retval = itos (rval); + } + else if (value) + { + if (flags & ASS_APPEND) + { + oval = get_variable_value (var); + if (oval == 0) /* paranoia */ + oval = ""; + olen = STRLEN (oval); + retval = (char *)xmalloc (olen + (value ? STRLEN (value) : 0) + 1); + strcpy (retval, oval); + if (value) + strcpy (retval+olen, value); + } + else if (*value) + retval = savestring (value); + else + { + retval = (char *)xmalloc (1); + retval[0] = '\0'; + } + } + else + retval = (char *)NULL; + + return retval; +} + +/* Bind a variable NAME to VALUE in the HASH_TABLE TABLE, which may be the + temporary environment (but usually is not). */ +static SHELL_VAR * +bind_variable_internal (name, value, table, hflags, aflags) + const char *name; + char *value; + HASH_TABLE *table; + int hflags, aflags; +{ + char *newval; + SHELL_VAR *entry; + + entry = (hflags & HASH_NOSRCH) ? (SHELL_VAR *)NULL : hash_lookup (name, table); + + if (entry == 0) + { + entry = make_new_variable (name, table); + var_setvalue (entry, make_variable_value (entry, value, 0)); /* XXX */ + } + else if (entry->assign_func) /* array vars have assign functions now */ + { + INVALIDATE_EXPORTSTR (entry); + newval = (aflags & ASS_APPEND) ? make_variable_value (entry, value, aflags) : value; + entry = (*(entry->assign_func)) (entry, newval, -1); + if (newval != value) + free (newval); + return (entry); + } + else + { + if (readonly_p (entry) || noassign_p (entry)) + { + if (readonly_p (entry)) + err_readonly (name); + return (entry); + } + + /* Variables which are bound are visible. */ + VUNSETATTR (entry, att_invisible); + + newval = make_variable_value (entry, value, aflags); /* XXX */ + + /* Invalidate any cached export string */ + INVALIDATE_EXPORTSTR (entry); + +#if defined (ARRAY_VARS) + /* XXX -- this bears looking at again -- XXX */ + /* If an existing array variable x is being assigned to with x=b or + `read x' or something of that nature, silently convert it to + x[0]=b or `read x[0]'. */ + if (array_p (entry)) + { + array_insert (array_cell (entry), 0, newval); + free (newval); + } + else +#endif + { + FREE (value_cell (entry)); + var_setvalue (entry, newval); + } + } + + if (mark_modified_vars) + VSETATTR (entry, att_exported); + + if (exported_p (entry)) + array_needs_making = 1; + + return (entry); +} + +/* Bind a variable NAME to VALUE. This conses up the name + and value strings. If we have a temporary environment, we bind there + first, then we bind into shell_variables. */ + +SHELL_VAR * +bind_variable (name, value, flags) + const char *name; + char *value; + int flags; +{ + SHELL_VAR *v; + VAR_CONTEXT *vc; + + if (shell_variables == 0) + { + shell_variables = global_variables = new_var_context ((char *)NULL, 0); + shell_variables->scope = 0; + shell_variables->table = hash_create (0); + } + + /* If we have a temporary environment, look there first for the variable, + and, if found, modify the value there before modifying it in the + shell_variables table. This allows sourced scripts to modify values + given to them in a temporary environment while modifying the variable + value that the caller sees. */ + if (temporary_env) + bind_tempenv_variable (name, value); + + /* XXX -- handle local variables here. */ + for (vc = shell_variables; vc; vc = vc->down) + { + if (vc_isfuncenv (vc) || vc_isbltnenv (vc)) + { + v = hash_lookup (name, vc->table); + if (v) + return (bind_variable_internal (name, value, vc->table, 0, flags)); + } + } + return (bind_variable_internal (name, value, global_variables->table, 0, flags)); +} + +/* Make VAR, a simple shell variable, have value VALUE. Once assigned a + value, variables are no longer invisible. This is a duplicate of part + of the internals of bind_variable. If the variable is exported, or + all modified variables should be exported, mark the variable for export + and note that the export environment needs to be recreated. */ +SHELL_VAR * +bind_variable_value (var, value, aflags) + SHELL_VAR *var; + char *value; + int aflags; +{ + char *t; + + VUNSETATTR (var, att_invisible); + + if (var->assign_func) + { + /* If we're appending, we need the old value, so use + make_variable_value */ + t = (aflags & ASS_APPEND) ? make_variable_value (var, value, aflags) : value; + (*(var->assign_func)) (var, t, -1); + if (t != value && t) + free (t); + } + else + { + t = make_variable_value (var, value, aflags); + FREE (value_cell (var)); + var_setvalue (var, t); + } + + INVALIDATE_EXPORTSTR (var); + + if (mark_modified_vars) + VSETATTR (var, att_exported); + + if (exported_p (var)) + array_needs_making = 1; + + return (var); +} + +/* Bind/create a shell variable with the name LHS to the RHS. + This creates or modifies a variable such that it is an integer. + + This used to be in expr.c, but it is here so that all of the + variable binding stuff is localized. Since we don't want any + recursive evaluation from bind_variable() (possible without this code, + since bind_variable() calls the evaluator for variables with the integer + attribute set), we temporarily turn off the integer attribute for each + variable we set here, then turn it back on after binding as necessary. */ + +SHELL_VAR * +bind_int_variable (lhs, rhs) + char *lhs, *rhs; +{ + register SHELL_VAR *v; + char *t; + int isint, isarr; + + isint = isarr = 0; +#if defined (ARRAY_VARS) +# if 0 + if (t = xstrchr (lhs, '[')) /*]*/ +# else + if (valid_array_reference (lhs)) +# endif + { + isarr = 1; + v = array_variable_part (lhs, (char **)0, (int *)0); + } + else +#endif + v = find_variable (lhs); + + if (v) + { + isint = integer_p (v); + VUNSETATTR (v, att_integer); + } + +#if defined (ARRAY_VARS) + if (isarr) + v = assign_array_element (lhs, rhs, 0); + else +#endif + v = bind_variable (lhs, rhs, 0); + + if (isint) + VSETATTR (v, att_integer); + + return (v); +} + +SHELL_VAR * +bind_var_to_int (var, val) + char *var; + intmax_t val; +{ + char ibuf[INT_STRLEN_BOUND (intmax_t) + 1], *p; + + p = fmtulong (val, 10, ibuf, sizeof (ibuf), 0); + return (bind_int_variable (var, p)); +} + +/* Do a function binding to a variable. You pass the name and + the command to bind to. This conses the name and command. */ +SHELL_VAR * +bind_function (name, value) + const char *name; + COMMAND *value; +{ + SHELL_VAR *entry; + + entry = find_function (name); + if (entry == 0) + { + BUCKET_CONTENTS *elt; + + elt = hash_insert (savestring (name), shell_functions, HASH_NOSRCH); + entry = new_shell_variable (name); + elt->data = (PTR_T)entry; + } + else + INVALIDATE_EXPORTSTR (entry); + + if (var_isset (entry)) + dispose_command (function_cell (entry)); + + if (value) + var_setfunc (entry, copy_command (value)); + else + var_setfunc (entry, 0); + + VSETATTR (entry, att_function); + + if (mark_modified_vars) + VSETATTR (entry, att_exported); + + VUNSETATTR (entry, att_invisible); /* Just to be sure */ + + if (exported_p (entry)) + array_needs_making = 1; + +#if defined (PROGRAMMABLE_COMPLETION) + set_itemlist_dirty (&it_functions); +#endif + + return (entry); +} + +/* Bind a function definition, which includes source file and line number + information in addition to the command, into the FUNCTION_DEF hash table.*/ +void +bind_function_def (name, value) + const char *name; + FUNCTION_DEF *value; +{ + FUNCTION_DEF *entry; + BUCKET_CONTENTS *elt; + COMMAND *cmd; + + entry = find_function_def (name); + if (entry) + { + dispose_function_def_contents (entry); + entry = copy_function_def_contents (value, entry); + } + else + { + cmd = value->command; + value->command = 0; + entry = copy_function_def (value); + value->command = cmd; + + elt = hash_insert (savestring (name), shell_function_defs, HASH_NOSRCH); + elt->data = (PTR_T *)entry; + } +} + +/* Add STRING, which is of the form foo=bar, to the temporary environment + HASH_TABLE (temporary_env). The functions in execute_cmd.c are + responsible for moving the main temporary env to one of the other + temporary environments. The expansion code in subst.c calls this. */ +int +assign_in_env (word) + WORD_DESC *word; +{ + int offset; + char *name, *temp, *value; + SHELL_VAR *var; + const char *string; + + string = word->word; + + offset = assignment (string, 0); + name = savestring (string); + value = (char *)NULL; + + if (name[offset] == '=') + { + name[offset] = 0; + + /* ignore the `+' when assigning temporary environment */ + if (name[offset - 1] == '+') + name[offset - 1] = '\0'; + + var = find_variable (name); + if (var && (readonly_p (var) || noassign_p (var))) + { + if (readonly_p (var)) + err_readonly (name); + free (name); + return (0); + } + + temp = name + offset + 1; +#if 0 + temp = (xstrchr (temp, '~') != 0) ? bash_tilde_expand (temp, 1) : savestring (temp); + value = expand_string_unsplit_to_string (temp, 0); + free (temp); +#else + value = expand_assignment_string_to_string (temp, 0); +#endif + } + + if (temporary_env == 0) + temporary_env = hash_create (TEMPENV_HASH_BUCKETS); + + var = hash_lookup (name, temporary_env); + if (var == 0) + var = make_new_variable (name, temporary_env); + else + FREE (value_cell (var)); + + if (value == 0) + { + value = (char *)xmalloc (1); /* like do_assignment_internal */ + value[0] = '\0'; + } + + var_setvalue (var, value); + var->attributes |= (att_exported|att_tempvar); + var->context = variable_context; /* XXX */ + + INVALIDATE_EXPORTSTR (var); + var->exportstr = mk_env_string (name, value); + + array_needs_making = 1; + + if (ifsname (name)) + setifs (var); + + if (echo_command_at_execute) + /* The Korn shell prints the `+ ' in front of assignment statements, + so we do too. */ + xtrace_print_assignment (name, value, 0, 1); + + free (name); + return 1; +} + +/* **************************************************************** */ +/* */ +/* Copying variables */ +/* */ +/* **************************************************************** */ + +#ifdef INCLUDE_UNUSED +/* Copy VAR to a new data structure and return that structure. */ +SHELL_VAR * +copy_variable (var) + SHELL_VAR *var; +{ + SHELL_VAR *copy = (SHELL_VAR *)NULL; + + if (var) + { + copy = (SHELL_VAR *)xmalloc (sizeof (SHELL_VAR)); + + copy->attributes = var->attributes; + copy->name = savestring (var->name); + + if (function_p (var)) + var_setfunc (copy, copy_command (function_cell (var))); +#if defined (ARRAY_VARS) + else if (array_p (var)) + var_setarray (copy, dup_array (array_cell (var))); +#endif + else if (value_cell (var)) + var_setvalue (copy, savestring (value_cell (var))); + else + var_setvalue (copy, (char *)NULL); + + copy->dynamic_value = var->dynamic_value; + copy->assign_func = var->assign_func; + + copy->exportstr = COPY_EXPORTSTR (var); + + copy->context = var->context; + } + return (copy); +} +#endif + +/* **************************************************************** */ +/* */ +/* Deleting and unsetting variables */ +/* */ +/* **************************************************************** */ + +/* Dispose of the information attached to VAR. */ +void +dispose_variable (var) + SHELL_VAR *var; +{ + if (var == 0) + return; + + if (function_p (var)) + dispose_command (function_cell (var)); +#if defined (ARRAY_VARS) + else if (array_p (var)) + array_dispose (array_cell (var)); +#endif + else + FREE (value_cell (var)); + + FREE_EXPORTSTR (var); + + free (var->name); + + if (exported_p (var)) + array_needs_making = 1; + + free (var); +} + +/* Unset the shell variable referenced by NAME. */ +int +unbind_variable (name) + const char *name; +{ + return makunbound (name, shell_variables); +} + +/* Unset the shell function named NAME. */ +int +unbind_func (name) + const char *name; +{ + BUCKET_CONTENTS *elt; + SHELL_VAR *func; + + elt = hash_remove (name, shell_functions, 0); + + if (elt == 0) + return -1; + +#if defined (PROGRAMMABLE_COMPLETION) + set_itemlist_dirty (&it_functions); +#endif + + func = (SHELL_VAR *)elt->data; + if (func) + { + if (exported_p (func)) + array_needs_making++; + dispose_variable (func); + } + + free (elt->key); + free (elt); + + return 0; +} + +int +unbind_function_def (name) + const char *name; +{ + BUCKET_CONTENTS *elt; + FUNCTION_DEF *funcdef; + + elt = hash_remove (name, shell_function_defs, 0); + + if (elt == 0) + return -1; + + funcdef = (FUNCTION_DEF *)elt->data; + if (funcdef) + dispose_function_def (funcdef); + + free (elt->key); + free (elt); + + return 0; +} + +/* Make the variable associated with NAME go away. HASH_LIST is the + hash table from which this variable should be deleted (either + shell_variables or shell_functions). + Returns non-zero if the variable couldn't be found. */ +int +makunbound (name, vc) + const char *name; + VAR_CONTEXT *vc; +{ + BUCKET_CONTENTS *elt, *new_elt; + SHELL_VAR *old_var; + VAR_CONTEXT *v; + char *t; + + for (elt = (BUCKET_CONTENTS *)NULL, v = vc; v; v = v->down) + if (elt = hash_remove (name, v->table, 0)) + break; + + if (elt == 0) + return (-1); + + old_var = (SHELL_VAR *)elt->data; + + if (old_var && exported_p (old_var)) + array_needs_making++; + + /* If we're unsetting a local variable and we're still executing inside + the function, just mark the variable as invisible. The function + eventually called by pop_var_context() will clean it up later. This + must be done so that if the variable is subsequently assigned a new + value inside the function, the `local' attribute is still present. + We also need to add it back into the correct hash table. */ + if (old_var && local_p (old_var) && variable_context == old_var->context) + { +#if defined (ARRAY_VARS) + if (array_p (old_var)) + array_dispose (array_cell (old_var)); + else +#endif + FREE (value_cell (old_var)); + /* Reset the attributes. Preserve the export attribute if the variable + came from a temporary environment. Make sure it stays local, and + make it invisible. */ + old_var->attributes = (exported_p (old_var) && tempvar_p (old_var)) ? att_exported : 0; + VSETATTR (old_var, att_local); + VSETATTR (old_var, att_invisible); + var_setvalue (old_var, (char *)NULL); + INVALIDATE_EXPORTSTR (old_var); + + new_elt = hash_insert (savestring (old_var->name), v->table, 0); + new_elt->data = (PTR_T)old_var; + stupidly_hack_special_variables (old_var->name); + + free (elt->key); + free (elt); + return (0); + } + + /* Have to save a copy of name here, because it might refer to + old_var->name. If so, stupidly_hack_special_variables will + reference freed memory. */ + t = savestring (name); + + free (elt->key); + free (elt); + + dispose_variable (old_var); + stupidly_hack_special_variables (t); + free (t); + + return (0); +} + +/* Get rid of all of the variables in the current context. */ +void +kill_all_local_variables () +{ + VAR_CONTEXT *vc; + + for (vc = shell_variables; vc; vc = vc->down) + if (vc_isfuncenv (vc) && vc->scope == variable_context) + break; + if (vc == 0) + return; /* XXX */ + + if (vc->table && vc_haslocals (vc)) + { + delete_all_variables (vc->table); + hash_dispose (vc->table); + } + vc->table = (HASH_TABLE *)NULL; +} + +static void +free_variable_hash_data (data) + PTR_T data; +{ + SHELL_VAR *var; + + var = (SHELL_VAR *)data; + dispose_variable (var); +} + +/* Delete the entire contents of the hash table. */ +void +delete_all_variables (hashed_vars) + HASH_TABLE *hashed_vars; +{ + hash_flush (hashed_vars, free_variable_hash_data); +} + +/* **************************************************************** */ +/* */ +/* Setting variable attributes */ +/* */ +/* **************************************************************** */ + +#define FIND_OR_MAKE_VARIABLE(name, entry) \ + do \ + { \ + entry = find_variable (name); \ + if (!entry) \ + { \ + entry = bind_variable (name, "", 0); \ + if (!no_invisible_vars) entry->attributes |= att_invisible; \ + } \ + } \ + while (0) + +/* Make the variable associated with NAME be readonly. + If NAME does not exist yet, create it. */ +void +set_var_read_only (name) + char *name; +{ + SHELL_VAR *entry; + + FIND_OR_MAKE_VARIABLE (name, entry); + VSETATTR (entry, att_readonly); +} + +#ifdef INCLUDE_UNUSED +/* Make the function associated with NAME be readonly. + If NAME does not exist, we just punt, like auto_export code below. */ +void +set_func_read_only (name) + const char *name; +{ + SHELL_VAR *entry; + + entry = find_function (name); + if (entry) + VSETATTR (entry, att_readonly); +} + +/* Make the variable associated with NAME be auto-exported. + If NAME does not exist yet, create it. */ +void +set_var_auto_export (name) + char *name; +{ + SHELL_VAR *entry; + + FIND_OR_MAKE_VARIABLE (name, entry); + set_auto_export (entry); +} + +/* Make the function associated with NAME be auto-exported. */ +void +set_func_auto_export (name) + const char *name; +{ + SHELL_VAR *entry; + + entry = find_function (name); + if (entry) + set_auto_export (entry); +} +#endif + +/* **************************************************************** */ +/* */ +/* Creating lists of variables */ +/* */ +/* **************************************************************** */ + +static VARLIST * +vlist_alloc (nentries) + int nentries; +{ + VARLIST *vlist; + + vlist = (VARLIST *)xmalloc (sizeof (VARLIST)); + vlist->list = (SHELL_VAR **)xmalloc ((nentries + 1) * sizeof (SHELL_VAR *)); + vlist->list_size = nentries; + vlist->list_len = 0; + vlist->list[0] = (SHELL_VAR *)NULL; + + return vlist; +} + +static VARLIST * +vlist_realloc (vlist, n) + VARLIST *vlist; + int n; +{ + if (vlist == 0) + return (vlist = vlist_alloc (n)); + if (n > vlist->list_size) + { + vlist->list_size = n; + vlist->list = (SHELL_VAR **)xrealloc (vlist->list, (vlist->list_size + 1) * sizeof (SHELL_VAR *)); + } + return vlist; +} + +static void +vlist_add (vlist, var, flags) + VARLIST *vlist; + SHELL_VAR *var; + int flags; +{ + register int i; + + for (i = 0; i < vlist->list_len; i++) + if (STREQ (var->name, vlist->list[i]->name)) + break; + if (i < vlist->list_len) + return; + + if (i >= vlist->list_size) + vlist = vlist_realloc (vlist, vlist->list_size + 16); + + vlist->list[vlist->list_len++] = var; + vlist->list[vlist->list_len] = (SHELL_VAR *)NULL; +} + +/* Map FUNCTION over the variables in VAR_HASH_TABLE. Return an array of the + variables for which FUNCTION returns a non-zero value. A NULL value + for FUNCTION means to use all variables. */ +SHELL_VAR ** +map_over (function, vc) + sh_var_map_func_t *function; + VAR_CONTEXT *vc; +{ + VAR_CONTEXT *v; + VARLIST *vlist; + SHELL_VAR **ret; + int nentries; + + for (nentries = 0, v = vc; v; v = v->down) + nentries += HASH_ENTRIES (v->table); + + if (nentries == 0) + return (SHELL_VAR **)NULL; + + vlist = vlist_alloc (nentries); + + for (v = vc; v; v = v->down) + flatten (v->table, function, vlist, 0); + + ret = vlist->list; + free (vlist); + return ret; +} + +SHELL_VAR ** +map_over_funcs (function) + sh_var_map_func_t *function; +{ + VARLIST *vlist; + SHELL_VAR **ret; + + if (shell_functions == 0 || HASH_ENTRIES (shell_functions) == 0) + return ((SHELL_VAR **)NULL); + + vlist = vlist_alloc (HASH_ENTRIES (shell_functions)); + + flatten (shell_functions, function, vlist, 0); + + ret = vlist->list; + free (vlist); + return ret; +} + +/* Flatten VAR_HASH_TABLE, applying FUNC to each member and adding those + elements for which FUNC succeeds to VLIST->list. FLAGS is reserved + for future use. Only unique names are added to VLIST. If FUNC is + NULL, each variable in VAR_HASH_TABLE is added to VLIST. If VLIST is + NULL, FUNC is applied to each SHELL_VAR in VAR_HASH_TABLE. If VLIST + and FUNC are both NULL, nothing happens. */ +static void +flatten (var_hash_table, func, vlist, flags) + HASH_TABLE *var_hash_table; + sh_var_map_func_t *func; + VARLIST *vlist; + int flags; +{ + register int i; + register BUCKET_CONTENTS *tlist; + int r; + SHELL_VAR *var; + + if (var_hash_table == 0 || (HASH_ENTRIES (var_hash_table) == 0) || (vlist == 0 && func == 0)) + return; + + for (i = 0; i < var_hash_table->nbuckets; i++) + { + for (tlist = hash_items (i, var_hash_table); tlist; tlist = tlist->next) + { + var = (SHELL_VAR *)tlist->data; + + r = func ? (*func) (var) : 1; + if (r && vlist) + vlist_add (vlist, var, flags); + } + } +} + +void +sort_variables (array) + SHELL_VAR **array; +{ + qsort (array, strvec_len ((char **)array), sizeof (SHELL_VAR *), (QSFUNC *)qsort_var_comp); +} + +static int +qsort_var_comp (var1, var2) + SHELL_VAR **var1, **var2; +{ + int result; + + if ((result = (*var1)->name[0] - (*var2)->name[0]) == 0) + result = strcmp ((*var1)->name, (*var2)->name); + + return (result); +} + +/* Apply FUNC to each variable in SHELL_VARIABLES, adding each one for + which FUNC succeeds to an array of SHELL_VAR *s. Returns the array. */ +static SHELL_VAR ** +vapply (func) + sh_var_map_func_t *func; +{ + SHELL_VAR **list; + + list = map_over (func, shell_variables); + if (list /* && posixly_correct */) + sort_variables (list); + return (list); +} + +/* Apply FUNC to each variable in SHELL_FUNCTIONS, adding each one for + which FUNC succeeds to an array of SHELL_VAR *s. Returns the array. */ +static SHELL_VAR ** +fapply (func) + sh_var_map_func_t *func; +{ + SHELL_VAR **list; + + list = map_over_funcs (func); + if (list /* && posixly_correct */) + sort_variables (list); + return (list); +} + +/* Create a NULL terminated array of all the shell variables. */ +SHELL_VAR ** +all_shell_variables () +{ + return (vapply ((sh_var_map_func_t *)NULL)); +} + +/* Create a NULL terminated array of all the shell functions. */ +SHELL_VAR ** +all_shell_functions () +{ + return (fapply ((sh_var_map_func_t *)NULL)); +} + +static int +visible_var (var) + SHELL_VAR *var; +{ + return (invisible_p (var) == 0); +} + +SHELL_VAR ** +all_visible_functions () +{ + return (fapply (visible_var)); +} + +SHELL_VAR ** +all_visible_variables () +{ + return (vapply (visible_var)); +} + +/* Return non-zero if the variable VAR is visible and exported. Array + variables cannot be exported. */ +static int +visible_and_exported (var) + SHELL_VAR *var; +{ + return (invisible_p (var) == 0 && exported_p (var)); +} + +/* Return non-zero if VAR is a local variable in the current context and + is exported. */ +static int +local_and_exported (var) + SHELL_VAR *var; +{ + return (invisible_p (var) == 0 && local_p (var) && var->context == variable_context && exported_p (var)); +} + +SHELL_VAR ** +all_exported_variables () +{ + return (vapply (visible_and_exported)); +} + +SHELL_VAR ** +local_exported_variables () +{ + return (vapply (local_and_exported)); +} + +static int +variable_in_context (var) + SHELL_VAR *var; +{ + return (invisible_p (var) == 0 && local_p (var) && var->context == variable_context); +} + +SHELL_VAR ** +all_local_variables () +{ + VARLIST *vlist; + SHELL_VAR **ret; + VAR_CONTEXT *vc; + + vc = shell_variables; + for (vc = shell_variables; vc; vc = vc->down) + if (vc_isfuncenv (vc) && vc->scope == variable_context) + break; + + if (vc == 0) + { + internal_error (_("all_local_variables: no function context at current scope")); + return (SHELL_VAR **)NULL; + } + if (vc->table == 0 || HASH_ENTRIES (vc->table) == 0 || vc_haslocals (vc) == 0) + return (SHELL_VAR **)NULL; + + vlist = vlist_alloc (HASH_ENTRIES (vc->table)); + + flatten (vc->table, variable_in_context, vlist, 0); + + ret = vlist->list; + free (vlist); + if (ret) + sort_variables (ret); + return ret; +} + +#if defined (ARRAY_VARS) +/* Return non-zero if the variable VAR is visible and an array. */ +static int +visible_array_vars (var) + SHELL_VAR *var; +{ + return (invisible_p (var) == 0 && array_p (var)); +} + +SHELL_VAR ** +all_array_variables () +{ + return (vapply (visible_array_vars)); +} +#endif /* ARRAY_VARS */ + +char ** +all_variables_matching_prefix (prefix) + const char *prefix; +{ + SHELL_VAR **varlist; + char **rlist; + int vind, rind, plen; + + plen = STRLEN (prefix); + varlist = all_visible_variables (); + for (vind = 0; varlist && varlist[vind]; vind++) + ; + if (varlist == 0 || vind == 0) + return ((char **)NULL); + rlist = strvec_create (vind + 1); + for (vind = rind = 0; varlist[vind]; vind++) + { + if (plen == 0 || STREQN (prefix, varlist[vind]->name, plen)) + rlist[rind++] = savestring (varlist[vind]->name); + } + rlist[rind] = (char *)0; + free (varlist); + + return rlist; +} + +/* **************************************************************** */ +/* */ +/* Managing temporary variable scopes */ +/* */ +/* **************************************************************** */ + +/* Make variable NAME have VALUE in the temporary environment. */ +static SHELL_VAR * +bind_tempenv_variable (name, value) + const char *name; + char *value; +{ + SHELL_VAR *var; + + var = temporary_env ? hash_lookup (name, temporary_env) : (SHELL_VAR *)NULL; + + if (var) + { + FREE (value_cell (var)); + var_setvalue (var, savestring (value)); + INVALIDATE_EXPORTSTR (var); + } + + return (var); +} + +/* Find a variable in the temporary environment that is named NAME. + Return the SHELL_VAR *, or NULL if not found. */ +SHELL_VAR * +find_tempenv_variable (name) + const char *name; +{ + return (temporary_env ? hash_lookup (name, temporary_env) : (SHELL_VAR *)NULL); +} + +/* Push the variable described by (SHELL_VAR *)DATA down to the next + variable context from the temporary environment. */ +static void +push_temp_var (data) + PTR_T data; +{ + SHELL_VAR *var, *v; + HASH_TABLE *binding_table; + + var = (SHELL_VAR *)data; + + binding_table = shell_variables->table; + if (binding_table == 0) + { + if (shell_variables == global_variables) + /* shouldn't happen */ + binding_table = shell_variables->table = global_variables->table = hash_create (0); + else + binding_table = shell_variables->table = hash_create (TEMPENV_HASH_BUCKETS); + } + + v = bind_variable_internal (var->name, value_cell (var), binding_table, 0, 0); + + /* XXX - should we set the context here? It shouldn't matter because of how + assign_in_env works, but might want to check. */ + if (binding_table == global_variables->table) /* XXX */ + var->attributes &= ~(att_tempvar|att_propagate); + else + { + var->attributes |= att_propagate; + if (binding_table == shell_variables->table) + shell_variables->flags |= VC_HASTMPVAR; + } + v->attributes |= var->attributes; + + dispose_variable (var); +} + +static void +propagate_temp_var (data) + PTR_T data; +{ + SHELL_VAR *var; + + var = (SHELL_VAR *)data; + if (tempvar_p (var) && (var->attributes & att_propagate)) + push_temp_var (data); + else + dispose_variable (var); +} + +/* Free the storage used in the hash table for temporary + environment variables. PUSHF is a function to be called + to free each hash table entry. It takes care of pushing variables + to previous scopes if appropriate. */ +static void +dispose_temporary_env (pushf) + sh_free_func_t *pushf; +{ + hash_flush (temporary_env, pushf); + hash_dispose (temporary_env); + temporary_env = (HASH_TABLE *)NULL; + + array_needs_making = 1; + + sv_ifs ("IFS"); /* XXX here for now */ +} + +void +dispose_used_env_vars () +{ + if (temporary_env) + dispose_temporary_env (propagate_temp_var); +} + +/* Take all of the shell variables in the temporary environment HASH_TABLE + and make shell variables from them at the current variable context. */ +void +merge_temporary_env () +{ + if (temporary_env) + dispose_temporary_env (push_temp_var); +} + +/* **************************************************************** */ +/* */ +/* Creating and manipulating the environment */ +/* */ +/* **************************************************************** */ + +static inline char * +mk_env_string (name, value) + const char *name, *value; +{ + int name_len, value_len; + char *p; + + name_len = strlen (name); + value_len = STRLEN (value); + p = (char *)xmalloc (2 + name_len + value_len); + strcpy (p, name); + p[name_len] = '='; + if (value && *value) + strcpy (p + name_len + 1, value); + else + p[name_len + 1] = '\0'; + return (p); +} + +#ifdef DEBUG +/* Debugging */ +static int +valid_exportstr (v) + SHELL_VAR *v; +{ + char *s; + + s = v->exportstr; + if (legal_variable_starter ((unsigned char)*s) == 0) + { + internal_error (_("invalid character %d in exportstr for %s"), *s, v->name); + return (0); + } + for (s = v->exportstr + 1; s && *s; s++) + { + if (*s == '=') + break; + if (legal_variable_char ((unsigned char)*s) == 0) + { + internal_error (_("invalid character %d in exportstr for %s"), *s, v->name); + return (0); + } + } + if (*s != '=') + { + internal_error (_("no `=' in exportstr for %s"), v->name); + return (0); + } + return (1); +} +#endif + +static char ** +make_env_array_from_var_list (vars) + SHELL_VAR **vars; +{ + register int i, list_index; + register SHELL_VAR *var; + char **list, *value; + + list = strvec_create ((1 + strvec_len ((char **)vars))); + +#define USE_EXPORTSTR (value == var->exportstr) + + for (i = 0, list_index = 0; var = vars[i]; i++) + { +#if defined (__CYGWIN__) + /* We don't use the exportstr stuff on Cygwin at all. */ + INVALIDATE_EXPORTSTR (var); +#endif + if (var->exportstr) + value = var->exportstr; + else if (function_p (var)) + value = named_function_string ((char *)NULL, function_cell (var), 0); +#if defined (ARRAY_VARS) + else if (array_p (var)) +# if 0 + value = array_to_assignment_string (array_cell (var)); +# else + continue; /* XXX array vars cannot yet be exported */ +# endif +#endif + else + value = value_cell (var); + + if (value) + { + /* Gee, I'd like to get away with not using savestring() if we're + using the cached exportstr... */ + list[list_index] = USE_EXPORTSTR ? savestring (value) + : mk_env_string (var->name, value); + + if (USE_EXPORTSTR == 0) + SAVE_EXPORTSTR (var, list[list_index]); + + list_index++; +#undef USE_EXPORTSTR + +#if 0 /* not yet */ +#if defined (ARRAY_VARS) + if (array_p (var)) + free (value); +#endif +#endif + } + } + + list[list_index] = (char *)NULL; + return (list); +} + +/* Make an array of assignment statements from the hash table + HASHED_VARS which contains SHELL_VARs. Only visible, exported + variables are eligible. */ +static char ** +make_var_export_array (vcxt) + VAR_CONTEXT *vcxt; +{ + char **list; + SHELL_VAR **vars; + + vars = map_over (visible_and_exported, vcxt); + + if (vars == 0) + return (char **)NULL; + + list = make_env_array_from_var_list (vars); + + free (vars); + return (list); +} + +static char ** +make_func_export_array () +{ + char **list; + SHELL_VAR **vars; + + vars = map_over_funcs (visible_and_exported); + if (vars == 0) + return (char **)NULL; + + list = make_env_array_from_var_list (vars); + + free (vars); + return (list); +} + +/* Add ENVSTR to the end of the exported environment, EXPORT_ENV. */ +#define add_to_export_env(envstr,do_alloc) \ +do \ + { \ + if (export_env_index >= (export_env_size - 1)) \ + { \ + export_env_size += 16; \ + export_env = strvec_resize (export_env, export_env_size); \ + environ = export_env; \ + } \ + export_env[export_env_index++] = (do_alloc) ? savestring (envstr) : envstr; \ + export_env[export_env_index] = (char *)NULL; \ + } while (0) + +/* Add ASSIGN to EXPORT_ENV, or supercede a previous assignment in the + array with the same left-hand side. Return the new EXPORT_ENV. */ +char ** +add_or_supercede_exported_var (assign, do_alloc) + char *assign; + int do_alloc; +{ + register int i; + int equal_offset; + + equal_offset = assignment (assign, 0); + if (equal_offset == 0) + return (export_env); + + /* If this is a function, then only supersede the function definition. + We do this by including the `=() {' in the comparison, like + initialize_shell_variables does. */ + if (assign[equal_offset + 1] == '(' && + strncmp (assign + equal_offset + 2, ") {", 3) == 0) /* } */ + equal_offset += 4; + + for (i = 0; i < export_env_index; i++) + { + if (STREQN (assign, export_env[i], equal_offset + 1)) + { + free (export_env[i]); + export_env[i] = do_alloc ? savestring (assign) : assign; + return (export_env); + } + } + add_to_export_env (assign, do_alloc); + return (export_env); +} + +static void +add_temp_array_to_env (temp_array, do_alloc, do_supercede) + char **temp_array; + int do_alloc, do_supercede; +{ + register int i; + + if (temp_array == 0) + return; + + for (i = 0; temp_array[i]; i++) + { + if (do_supercede) + export_env = add_or_supercede_exported_var (temp_array[i], do_alloc); + else + add_to_export_env (temp_array[i], do_alloc); + } + + free (temp_array); +} + +/* Make the environment array for the command about to be executed, if the + array needs making. Otherwise, do nothing. If a shell action could + change the array that commands receive for their environment, then the + code should `array_needs_making++'. + + The order to add to the array is: + temporary_env + list of var contexts whose head is shell_variables + shell_functions + + This is the shell variable lookup order. We add only new variable + names at each step, which allows local variables and variables in + the temporary environments to shadow variables in the global (or + any previous) scope. +*/ + +static int +n_shell_variables () +{ + VAR_CONTEXT *vc; + int n; + + for (n = 0, vc = shell_variables; vc; vc = vc->down) + n += HASH_ENTRIES (vc->table); + return n; +} + +void +maybe_make_export_env () +{ + register char **temp_array; + int new_size; + VAR_CONTEXT *tcxt; + + if (array_needs_making) + { + if (export_env) + strvec_flush (export_env); + + /* Make a guess based on how many shell variables and functions we + have. Since there will always be array variables, and array + variables are not (yet) exported, this will always be big enough + for the exported variables and functions. */ + new_size = n_shell_variables () + HASH_ENTRIES (shell_functions) + 1 + + HASH_ENTRIES (temporary_env); + if (new_size > export_env_size) + { + export_env_size = new_size; + export_env = strvec_resize (export_env, export_env_size); + environ = export_env; + } + export_env[export_env_index = 0] = (char *)NULL; + + /* Make a dummy variable context from the temporary_env, stick it on + the front of shell_variables, call make_var_export_array on the + whole thing to flatten it, and convert the list of SHELL_VAR *s + to the form needed by the environment. */ + if (temporary_env) + { + tcxt = new_var_context ((char *)NULL, 0); + tcxt->table = temporary_env; + tcxt->down = shell_variables; + } + else + tcxt = shell_variables; + + temp_array = make_var_export_array (tcxt); + if (temp_array) + add_temp_array_to_env (temp_array, 0, 0); + + if (tcxt != shell_variables) + free (tcxt); + +#if defined (RESTRICTED_SHELL) + /* Restricted shells may not export shell functions. */ + temp_array = restricted ? (char **)0 : make_func_export_array (); +#else + temp_array = make_func_export_array (); +#endif + if (temp_array) + add_temp_array_to_env (temp_array, 0, 0); + + array_needs_making = 0; + } +} + +/* This is an efficiency hack. PWD and OLDPWD are auto-exported, so + we will need to remake the exported environment every time we + change directories. `_' is always put into the environment for + every external command, so without special treatment it will always + cause the environment to be remade. + + If there is no other reason to make the exported environment, we can + just update the variables in place and mark the exported environment + as no longer needing a remake. */ +void +update_export_env_inplace (env_prefix, preflen, value) + char *env_prefix; + int preflen; + char *value; +{ + char *evar; + + evar = (char *)xmalloc (STRLEN (value) + preflen + 1); + strcpy (evar, env_prefix); + if (value) + strcpy (evar + preflen, value); + export_env = add_or_supercede_exported_var (evar, 0); +} + +/* We always put _ in the environment as the name of this command. */ +void +put_command_name_into_env (command_name) + char *command_name; +{ + update_export_env_inplace ("_=", 2, command_name); +} + +#if 0 /* UNUSED -- it caused too many problems */ +void +put_gnu_argv_flags_into_env (pid, flags_string) + intmax_t pid; + char *flags_string; +{ + char *dummy, *pbuf; + int l, fl; + + pbuf = itos (pid); + l = strlen (pbuf); + + fl = strlen (flags_string); + + dummy = (char *)xmalloc (l + fl + 30); + dummy[0] = '_'; + strcpy (dummy + 1, pbuf); + strcpy (dummy + 1 + l, "_GNU_nonoption_argv_flags_"); + dummy[l + 27] = '='; + strcpy (dummy + l + 28, flags_string); + + free (pbuf); + + export_env = add_or_supercede_exported_var (dummy, 0); +} +#endif + +/* **************************************************************** */ +/* */ +/* Managing variable contexts */ +/* */ +/* **************************************************************** */ + +/* Allocate and return a new variable context with NAME and FLAGS. + NAME can be NULL. */ + +VAR_CONTEXT * +new_var_context (name, flags) + char *name; + int flags; +{ + VAR_CONTEXT *vc; + + vc = (VAR_CONTEXT *)xmalloc (sizeof (VAR_CONTEXT)); + vc->name = name ? savestring (name) : (char *)NULL; + vc->scope = variable_context; + vc->flags = flags; + + vc->up = vc->down = (VAR_CONTEXT *)NULL; + vc->table = (HASH_TABLE *)NULL; + + return vc; +} + +/* Free a variable context and its data, including the hash table. Dispose + all of the variables. */ +void +dispose_var_context (vc) + VAR_CONTEXT *vc; +{ + FREE (vc->name); + + if (vc->table) + { + delete_all_variables (vc->table); + hash_dispose (vc->table); + } + + free (vc); +} + +/* Set VAR's scope level to the current variable context. */ +static int +set_context (var) + SHELL_VAR *var; +{ + return (var->context = variable_context); +} + +/* Make a new variable context with NAME and FLAGS and a HASH_TABLE of + temporary variables, and push it onto shell_variables. This is + for shell functions. */ +VAR_CONTEXT * +push_var_context (name, flags, tempvars) + char *name; + int flags; + HASH_TABLE *tempvars; +{ + VAR_CONTEXT *vc; + + vc = new_var_context (name, flags); + vc->table = tempvars; + if (tempvars) + { + /* Have to do this because the temp environment was created before + variable_context was incremented. */ + flatten (tempvars, set_context, (VARLIST *)NULL, 0); + vc->flags |= VC_HASTMPVAR; + } + vc->down = shell_variables; + shell_variables->up = vc; + + return (shell_variables = vc); +} + +static void +push_func_var (data) + PTR_T data; +{ + SHELL_VAR *var, *v; + + var = (SHELL_VAR *)data; + + if (tempvar_p (var) && (posixly_correct || (var->attributes & att_propagate))) + { + /* XXX - should we set v->context here? */ + v = bind_variable_internal (var->name, value_cell (var), shell_variables->table, 0, 0); + if (shell_variables == global_variables) + var->attributes &= ~(att_tempvar|att_propagate); + else + shell_variables->flags |= VC_HASTMPVAR; + v->attributes |= var->attributes; + } + + dispose_variable (var); +} + +/* Pop the top context off of VCXT and dispose of it, returning the rest of + the stack. */ +void +pop_var_context () +{ + VAR_CONTEXT *ret, *vcxt; + + vcxt = shell_variables; + if (vc_isfuncenv (vcxt) == 0) + { + internal_error (_("pop_var_context: head of shell_variables not a function context")); + return; + } + + if (ret = vcxt->down) + { + ret->up = (VAR_CONTEXT *)NULL; + shell_variables = ret; + if (vcxt->table) + hash_flush (vcxt->table, push_func_var); + dispose_var_context (vcxt); + } + else + internal_error (_("pop_var_context: no global_variables context")); +} + +/* Delete the HASH_TABLEs for all variable contexts beginning at VCXT, and + all of the VAR_CONTEXTs except GLOBAL_VARIABLES. */ +void +delete_all_contexts (vcxt) + VAR_CONTEXT *vcxt; +{ + VAR_CONTEXT *v, *t; + + for (v = vcxt; v != global_variables; v = t) + { + t = v->down; + dispose_var_context (v); + } + + delete_all_variables (global_variables->table); + shell_variables = global_variables; +} + +/* **************************************************************** */ +/* */ +/* Pushing and Popping temporary variable scopes */ +/* */ +/* **************************************************************** */ + +VAR_CONTEXT * +push_scope (flags, tmpvars) + int flags; + HASH_TABLE *tmpvars; +{ + return (push_var_context ((char *)NULL, flags, tmpvars)); +} + +static void +push_exported_var (data) + PTR_T data; +{ + SHELL_VAR *var, *v; + + var = (SHELL_VAR *)data; + + /* If a temp var had its export attribute set, or it's marked to be + propagated, bind it in the previous scope before disposing it. */ + /* XXX - This isn't exactly right, because all tempenv variables have the + export attribute set. */ +#if 0 + if (exported_p (var) || (var->attributes & att_propagate)) +#else + if (tempvar_p (var) && exported_p (var) && (var->attributes & att_propagate)) +#endif + { + var->attributes &= ~att_tempvar; /* XXX */ + v = bind_variable_internal (var->name, value_cell (var), shell_variables->table, 0, 0); + if (shell_variables == global_variables) + var->attributes &= ~att_propagate; + v->attributes |= var->attributes; + } + + dispose_variable (var); +} + +void +pop_scope (is_special) + int is_special; +{ + VAR_CONTEXT *vcxt, *ret; + + vcxt = shell_variables; + if (vc_istempscope (vcxt) == 0) + { + internal_error (_("pop_scope: head of shell_variables not a temporary environment scope")); + return; + } + + ret = vcxt->down; + if (ret) + ret->up = (VAR_CONTEXT *)NULL; + + shell_variables = ret; + + /* Now we can take care of merging variables in VCXT into set of scopes + whose head is RET (shell_variables). */ + FREE (vcxt->name); + if (vcxt->table) + { + if (is_special) + hash_flush (vcxt->table, push_func_var); + else + hash_flush (vcxt->table, push_exported_var); + hash_dispose (vcxt->table); + } + free (vcxt); + + sv_ifs ("IFS"); /* XXX here for now */ +} + +/* **************************************************************** */ +/* */ +/* Pushing and Popping function contexts */ +/* */ +/* **************************************************************** */ + +static WORD_LIST **dollar_arg_stack = (WORD_LIST **)NULL; +static int dollar_arg_stack_slots; +static int dollar_arg_stack_index; + +/* XXX - we might want to consider pushing and popping the `getopts' state + when we modify the positional parameters. */ +void +push_context (name, is_subshell, tempvars) + char *name; /* function name */ + int is_subshell; + HASH_TABLE *tempvars; +{ + if (is_subshell == 0) + push_dollar_vars (); + variable_context++; + push_var_context (name, VC_FUNCENV, tempvars); +} + +/* Only called when subshell == 0, so we don't need to check, and can + unconditionally pop the dollar vars off the stack. */ +void +pop_context () +{ + pop_dollar_vars (); + variable_context--; + pop_var_context (); + + sv_ifs ("IFS"); /* XXX here for now */ +} + +/* Save the existing positional parameters on a stack. */ +void +push_dollar_vars () +{ + if (dollar_arg_stack_index + 2 > dollar_arg_stack_slots) + { + dollar_arg_stack = (WORD_LIST **) + xrealloc (dollar_arg_stack, (dollar_arg_stack_slots += 10) + * sizeof (WORD_LIST **)); + } + dollar_arg_stack[dollar_arg_stack_index++] = list_rest_of_args (); + dollar_arg_stack[dollar_arg_stack_index] = (WORD_LIST *)NULL; +} + +/* Restore the positional parameters from our stack. */ +void +pop_dollar_vars () +{ + if (!dollar_arg_stack || dollar_arg_stack_index == 0) + return; + + remember_args (dollar_arg_stack[--dollar_arg_stack_index], 1); + dispose_words (dollar_arg_stack[dollar_arg_stack_index]); + dollar_arg_stack[dollar_arg_stack_index] = (WORD_LIST *)NULL; + set_dollar_vars_unchanged (); +} + +void +dispose_saved_dollar_vars () +{ + if (!dollar_arg_stack || dollar_arg_stack_index == 0) + return; + + dispose_words (dollar_arg_stack[dollar_arg_stack_index]); + dollar_arg_stack[dollar_arg_stack_index] = (WORD_LIST *)NULL; +} + +/* Manipulate the special BASH_ARGV and BASH_ARGC variables. */ + +void +push_args (list) + WORD_LIST *list; +{ +#if defined (ARRAY_VARS) && defined (DEBUGGER) + SHELL_VAR *bash_argv_v, *bash_argc_v; + ARRAY *bash_argv_a, *bash_argc_a; + WORD_LIST *l; + arrayind_t i; + char *t; + + GET_ARRAY_FROM_VAR ("BASH_ARGV", bash_argv_v, bash_argv_a); + GET_ARRAY_FROM_VAR ("BASH_ARGC", bash_argc_v, bash_argc_a); + + for (l = list, i = 0; l; l = l->next, i++) + array_push (bash_argv_a, l->word->word); + + t = itos (i); + array_push (bash_argc_a, t); + free (t); +#endif /* ARRAY_VARS && DEBUGGER */ +} + +/* Remove arguments from BASH_ARGV array. Pop top element off BASH_ARGC + array and use that value as the count of elements to remove from + BASH_ARGV. */ +void +pop_args () +{ +#if defined (ARRAY_VARS) && defined (DEBUGGER) + SHELL_VAR *bash_argv_v, *bash_argc_v; + ARRAY *bash_argv_a, *bash_argc_a; + ARRAY_ELEMENT *ce; + intmax_t i; + + GET_ARRAY_FROM_VAR ("BASH_ARGV", bash_argv_v, bash_argv_a); + GET_ARRAY_FROM_VAR ("BASH_ARGC", bash_argc_v, bash_argc_a); + + ce = array_shift (bash_argc_a, 1, 0); + if (ce == 0 || legal_number (element_value (ce), &i) == 0) + i = 0; + + for ( ; i > 0; i--) + array_pop (bash_argv_a); + array_dispose_element (ce); +#endif /* ARRAY_VARS && DEBUGGER */ +} + +/************************************************* + * * + * Functions to manage special variables * + * * + *************************************************/ + +/* Extern declarations for variables this code has to manage. */ +extern int eof_encountered, eof_encountered_limit, ignoreeof; + +#if defined (READLINE) +extern int hostname_list_initialized; +#endif + +/* An alist of name.function for each special variable. Most of the + functions don't do much, and in fact, this would be faster with a + switch statement, but by the end of this file, I am sick of switch + statements. */ + +#define SET_INT_VAR(name, intvar) intvar = find_variable (name) != 0 + +/* This table will be sorted with qsort() the first time it's accessed. */ +struct name_and_function { + char *name; + sh_sv_func_t *function; +}; + +static struct name_and_function special_vars[] = { +#if defined (READLINE) +# if defined (STRICT_POSIX) + { "COLUMNS", sv_winsize }, +# endif + { "COMP_WORDBREAKS", sv_comp_wordbreaks }, +#endif + + { "GLOBIGNORE", sv_globignore }, + +#if defined (HISTORY) + { "HISTCONTROL", sv_history_control }, + { "HISTFILESIZE", sv_histsize }, + { "HISTIGNORE", sv_histignore }, + { "HISTSIZE", sv_histsize }, + { "HISTTIMEFORMAT", sv_histtimefmt }, +#endif + +#if defined (__CYGWIN__) + { "HOME", sv_home }, +#endif + +#if defined (READLINE) + { "HOSTFILE", sv_hostfile }, +#endif + + { "IFS", sv_ifs }, + { "IGNOREEOF", sv_ignoreeof }, + + { "LANG", sv_locale }, + { "LC_ALL", sv_locale }, + { "LC_COLLATE", sv_locale }, + { "LC_CTYPE", sv_locale }, + { "LC_MESSAGES", sv_locale }, + { "LC_NUMERIC", sv_locale }, + { "LC_TIME", sv_locale }, + +#if defined (READLINE) && defined (STRICT_POSIX) + { "LINES", sv_winsize }, +#endif + + { "MAIL", sv_mail }, + { "MAILCHECK", sv_mail }, + { "MAILPATH", sv_mail }, + + { "OPTERR", sv_opterr }, + { "OPTIND", sv_optind }, + + { "PATH", sv_path }, + { "POSIXLY_CORRECT", sv_strict_posix }, + +#if defined (READLINE) + { "TERM", sv_terminal }, + { "TERMCAP", sv_terminal }, + { "TERMINFO", sv_terminal }, +#endif /* READLINE */ + + { "TEXTDOMAIN", sv_locale }, + { "TEXTDOMAINDIR", sv_locale }, + +#if defined (HAVE_TZSET) && defined (PROMPT_STRING_DECODE) + { "TZ", sv_tz }, +#endif + +#if defined (HISTORY) && defined (BANG_HISTORY) + { "histchars", sv_histchars }, +#endif /* HISTORY && BANG_HISTORY */ + + { "ignoreeof", sv_ignoreeof }, + + { (char *)0, (sh_sv_func_t *)0 } +}; + +#define N_SPECIAL_VARS (sizeof (special_vars) / sizeof (special_vars[0]) - 1) + +static int +sv_compare (sv1, sv2) + struct name_and_function *sv1, *sv2; +{ + int r; + + if ((r = sv1->name[0] - sv2->name[0]) == 0) + r = strcmp (sv1->name, sv2->name); + return r; +} + +static inline int +find_special_var (name) + const char *name; +{ + register int i, r; + + for (i = 0; special_vars[i].name; i++) + { + r = special_vars[i].name[0] - name[0]; + if (r == 0) + r = strcmp (special_vars[i].name, name); + if (r == 0) + return i; + else if (r > 0) + /* Can't match any of rest of elements in sorted list. Take this out + if it causes problems in certain environments. */ + break; + } + return -1; +} + +/* The variable in NAME has just had its state changed. Check to see if it + is one of the special ones where something special happens. */ +void +stupidly_hack_special_variables (name) + char *name; +{ + static int sv_sorted = 0; + int i; + + if (sv_sorted == 0) /* shouldn't need, but it's fairly cheap. */ + { + qsort (special_vars, N_SPECIAL_VARS, sizeof (special_vars[0]), + (QSFUNC *)sv_compare); + sv_sorted = 1; + } + + i = find_special_var (name); + if (i != -1) + (*(special_vars[i].function)) (name); +} + +void +sv_ifs (name) + char *name; +{ + SHELL_VAR *v; + + v = find_variable ("IFS"); + setifs (v); +} + +/* What to do just after the PATH variable has changed. */ +void +sv_path (name) + char *name; +{ + /* hash -r */ + phash_flush (); +} + +/* What to do just after one of the MAILxxxx variables has changed. NAME + is the name of the variable. This is called with NAME set to one of + MAIL, MAILCHECK, or MAILPATH. */ +void +sv_mail (name) + char *name; +{ + /* If the time interval for checking the files has changed, then + reset the mail timer. Otherwise, one of the pathname vars + to the users mailbox has changed, so rebuild the array of + filenames. */ + if (name[4] == 'C') /* if (strcmp (name, "MAILCHECK") == 0) */ + reset_mail_timer (); + else + { + free_mail_files (); + remember_mail_dates (); + } +} + +/* What to do when GLOBIGNORE changes. */ +void +sv_globignore (name) + char *name; +{ + setup_glob_ignore (name); +} + +#if defined (READLINE) +void +sv_comp_wordbreaks (name) + char *name; +{ + SHELL_VAR *sv; + + sv = find_variable (name); + if (sv == 0) + rl_completer_word_break_characters = (char *)NULL; +} + +/* What to do just after one of the TERMxxx variables has changed. + If we are an interactive shell, then try to reset the terminal + information in readline. */ +void +sv_terminal (name) + char *name; +{ + if (interactive_shell && no_line_editing == 0) + rl_reset_terminal (get_string_value ("TERM")); +} + +void +sv_hostfile (name) + char *name; +{ + SHELL_VAR *v; + + v = find_variable (name); + if (v == 0) + clear_hostname_list (); + else + hostname_list_initialized = 0; +} + +#if defined (STRICT_POSIX) +/* In strict posix mode, we allow assignments to LINES and COLUMNS (and values + found in the initial environment) to override the terminal size reported by + the kernel. */ +void +sv_winsize (name) + char *name; +{ + SHELL_VAR *v; + intmax_t xd; + int d; + + if (posixly_correct == 0 || interactive_shell == 0 || no_line_editing) + return; + + v = find_variable (name); + if (v == 0 || var_isnull (v)) + rl_reset_screen_size (); + else + { + if (legal_number (value_cell (v), &xd) == 0) + return; + winsize_assignment = winsize_assigned = 1; + d = xd; /* truncate */ + if (name[0] == 'L') /* LINES */ + rl_set_screen_size (d, -1); + else /* COLUMNS */ + rl_set_screen_size (-1, d); + winsize_assignment = 0; + } +} +#endif /* STRICT_POSIX */ +#endif /* READLINE */ + +/* Update the value of HOME in the export environment so tilde expansion will + work on cygwin. */ +#if defined (__CYGWIN__) +sv_home (name) + char *name; +{ + array_needs_making = 1; + maybe_make_export_env (); +} +#endif + +#if defined (HISTORY) +/* What to do after the HISTSIZE or HISTFILESIZE variables change. + If there is a value for this HISTSIZE (and it is numeric), then stifle + the history. Otherwise, if there is NO value for this variable, + unstifle the history. If name is HISTFILESIZE, and its value is + numeric, truncate the history file to hold no more than that many + lines. */ +void +sv_histsize (name) + char *name; +{ + char *temp; + intmax_t num; + int hmax; + + temp = get_string_value (name); + + if (temp && *temp) + { + if (legal_number (temp, &num)) + { + hmax = num; + if (name[4] == 'S') + { + stifle_history (hmax); + hmax = where_history (); + if (history_lines_this_session > hmax) + history_lines_this_session = hmax; + } + else + { + history_truncate_file (get_string_value ("HISTFILE"), hmax); + if (hmax <= history_lines_in_file) + history_lines_in_file = hmax; + } + } + } + else if (name[4] == 'S') + unstifle_history (); +} + +/* What to do after the HISTIGNORE variable changes. */ +void +sv_histignore (name) + char *name; +{ + setup_history_ignore (name); +} + +/* What to do after the HISTCONTROL variable changes. */ +void +sv_history_control (name) + char *name; +{ + char *temp; + char *val; + int tptr; + + history_control = 0; + temp = get_string_value (name); + + if (temp == 0 || *temp == 0) + return; + + tptr = 0; + while (val = extract_colon_unit (temp, &tptr)) + { + if (STREQ (val, "ignorespace")) + history_control |= HC_IGNSPACE; + else if (STREQ (val, "ignoredups")) + history_control |= HC_IGNDUPS; + else if (STREQ (val, "ignoreboth")) + history_control |= HC_IGNBOTH; + else if (STREQ (val, "erasedups")) + history_control |= HC_ERASEDUPS; + + free (val); + } +} + +#if defined (BANG_HISTORY) +/* Setting/unsetting of the history expansion character. */ +void +sv_histchars (name) + char *name; +{ + char *temp; + + temp = get_string_value (name); + if (temp) + { + history_expansion_char = *temp; + if (temp[0] && temp[1]) + { + history_subst_char = temp[1]; + if (temp[2]) + history_comment_char = temp[2]; + } + } + else + { + history_expansion_char = '!'; + history_subst_char = '^'; + history_comment_char = '#'; + } +} +#endif /* BANG_HISTORY */ + +void +sv_histtimefmt (name) + char *name; +{ + SHELL_VAR *v; + + v = find_variable (name); + history_write_timestamps = (v != 0); +} +#endif /* HISTORY */ + +#if defined (HAVE_TZSET) && defined (PROMPT_STRING_DECODE) +void +sv_tz (name) + char *name; +{ + tzset (); +} +#endif + +/* If the variable exists, then the value of it can be the number + of times we actually ignore the EOF. The default is small, + (smaller than csh, anyway). */ +void +sv_ignoreeof (name) + char *name; +{ + SHELL_VAR *tmp_var; + char *temp; + + eof_encountered = 0; + + tmp_var = find_variable (name); + ignoreeof = tmp_var != 0; + temp = tmp_var ? value_cell (tmp_var) : (char *)NULL; + if (temp) + eof_encountered_limit = (*temp && all_digits (temp)) ? atoi (temp) : 10; + set_shellopts (); /* make sure `ignoreeof' is/is not in $SHELLOPTS */ +} + +void +sv_optind (name) + char *name; +{ + char *tt; + int s; + + tt = get_string_value ("OPTIND"); + if (tt && *tt) + { + s = atoi (tt); + + /* According to POSIX, setting OPTIND=1 resets the internal state + of getopt (). */ + if (s < 0 || s == 1) + s = 0; + } + else + s = 0; + getopts_reset (s); +} + +void +sv_opterr (name) + char *name; +{ + char *tt; + + tt = get_string_value ("OPTERR"); + sh_opterr = (tt && *tt) ? atoi (tt) : 1; +} + +void +sv_strict_posix (name) + char *name; +{ + SET_INT_VAR (name, posixly_correct); + posix_initialize (posixly_correct); +#if defined (READLINE) + if (interactive_shell) + posix_readline_initialize (posixly_correct); +#endif /* READLINE */ + set_shellopts (); /* make sure `posix' is/is not in $SHELLOPTS */ +} + +void +sv_locale (name) + char *name; +{ + char *v; + + v = get_string_value (name); + if (name[0] == 'L' && name[1] == 'A') /* LANG */ + set_lang (name, v); + else + set_locale_var (name, v); /* LC_*, TEXTDOMAIN* */ +} + +#if defined (ARRAY_VARS) +void +set_pipestatus_array (ps, nproc) + int *ps; + int nproc; +{ + SHELL_VAR *v; + ARRAY *a; + ARRAY_ELEMENT *ae; + register int i; + char *t, tbuf[INT_STRLEN_BOUND(int) + 1]; + + v = find_variable ("PIPESTATUS"); + if (v == 0) + v = make_new_array_variable ("PIPESTATUS"); + if (array_p (v) == 0) + return; /* Do nothing if not an array variable. */ + a = array_cell (v); + + if (a == 0 || array_num_elements (a) == 0) + { + for (i = 0; i < nproc; i++) /* was ps[i] != -1, not i < nproc */ + { + t = inttostr (ps[i], tbuf, sizeof (tbuf)); + array_insert (a, i, t); + } + return; + } + + /* Fast case */ + if (array_num_elements (a) == nproc && nproc == 1) + { + ae = element_forw (a->head); + free (element_value (ae)); + ae->value = itos (ps[0]); + } + else if (array_num_elements (a) <= nproc) + { + /* modify in array_num_elements members in place, then add */ + ae = a->head; + for (i = 0; i < array_num_elements (a); i++) + { + ae = element_forw (ae); + free (element_value (ae)); + ae->value = itos (ps[i]); + } + /* add any more */ + for ( ; i < nproc; i++) + { + t = inttostr (ps[i], tbuf, sizeof (tbuf)); + array_insert (a, i, t); + } + } + else + { + /* deleting elements. it's faster to rebuild the array. */ + array_flush (a); + for (i = 0; ps[i] != -1; i++) + { + t = inttostr (ps[i], tbuf, sizeof (tbuf)); + array_insert (a, i, t); + } + } +} +#endif + +void +set_pipestatus_from_exit (s) + int s; +{ +#if defined (ARRAY_VARS) + static int v[2] = { 0, -1 }; + + v[0] = s; + set_pipestatus_array (v, 1); +#endif +} diff --git a/bash-20060316/variables.h b/bash-20060316/variables.h new file mode 100644 index 000000000..eec26c31a --- /dev/null +++ b/bash-20060316/variables.h @@ -0,0 +1,366 @@ +/* variables.h -- data structures for shell variables. */ + +/* Copyright (C) 1987-2005 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + Bash is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with Bash; see the file COPYING. If not, write to the Free + Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#if !defined (_VARIABLES_H_) +#define _VARIABLES_H_ + +#include "stdc.h" +#include "array.h" + +/* Shell variables and functions are stored in hash tables. */ +#include "hashlib.h" + +#include "conftypes.h" + +/* A variable context. */ +typedef struct var_context { + char *name; /* empty or NULL means global context */ + int scope; /* 0 means global context */ + int flags; + struct var_context *up; /* previous function calls */ + struct var_context *down; /* down towards global context */ + HASH_TABLE *table; /* variables at this scope */ +} VAR_CONTEXT; + +/* Flags for var_context->flags */ +#define VC_HASLOCAL 0x01 +#define VC_HASTMPVAR 0x02 +#define VC_FUNCENV 0x04 /* also function if name != NULL */ +#define VC_BLTNENV 0x08 /* builtin_env */ +#define VC_TEMPENV 0x10 /* temporary_env */ + +#define VC_TEMPFLAGS (VC_FUNCENV|VC_BLTNENV|VC_TEMPENV) + +/* Accessing macros */ +#define vc_isfuncenv(vc) (((vc)->flags & VC_FUNCENV) != 0) +#define vc_isbltnenv(vc) (((vc)->flags & VC_BLTNENV) != 0) +#define vc_istempenv(vc) (((vc)->flags & (VC_TEMPFLAGS)) == VC_TEMPENV) + +#define vc_istempscope(vc) (((vc)->flags & (VC_TEMPENV|VC_BLTNENV)) != 0) + +#define vc_haslocals(vc) (((vc)->flags & VC_HASLOCAL) != 0) +#define vc_hastmpvars(vc) (((vc)->flags & VC_HASTMPVAR) != 0) + +/* What a shell variable looks like. */ + +typedef struct variable *sh_var_value_func_t __P((struct variable *)); +typedef struct variable *sh_var_assign_func_t __P((struct variable *, char *, arrayind_t)); + +/* For the future */ +union _value { + char *s; /* string value */ + intmax_t i; /* int value */ + COMMAND *f; /* function */ + ARRAY *a; /* array */ + HASH_TABLE *h; /* associative array */ + double d; /* floating point number */ +#if defined (HAVE_LONG_DOUBLE) + long double ld; /* long double */ +#endif + struct variable *v; /* possible indirect variable use */ + void *opaque; /* opaque data for future use */ +}; + +typedef struct variable { + char *name; /* Symbol that the user types. */ + char *value; /* Value that is returned. */ + char *exportstr; /* String for the environment. */ + sh_var_value_func_t *dynamic_value; /* Function called to return a `dynamic' + value for a variable, like $SECONDS + or $RANDOM. */ + sh_var_assign_func_t *assign_func; /* Function called when this `special + variable' is assigned a value in + bind_variable. */ + int attributes; /* export, readonly, array, invisible... */ + int context; /* Which context this variable belongs to. */ +} SHELL_VAR; + +typedef struct _vlist { + SHELL_VAR **list; + int list_size; /* allocated size */ + int list_len; /* current number of entries */ +} VARLIST; + +/* The various attributes that a given variable can have. */ +/* First, the user-visible attributes */ +#define att_exported 0x0000001 /* export to environment */ +#define att_readonly 0x0000002 /* cannot change */ +#define att_array 0x0000004 /* value is an array */ +#define att_function 0x0000008 /* value is a function */ +#define att_integer 0x0000010 /* internal representation is int */ +#define att_local 0x0000020 /* variable is local to a function */ +#define att_assoc 0x0000040 /* variable is an associative array */ +#define att_trace 0x0000080 /* function is traced with DEBUG trap */ + +#define attmask_user 0x0000fff + +/* Internal attributes used for bookkeeping */ +#define att_invisible 0x0001000 /* cannot see */ +#define att_nounset 0x0002000 /* cannot unset */ +#define att_noassign 0x0004000 /* assignment not allowed */ +#define att_imported 0x0008000 /* came from environment */ +#define att_special 0x0010000 /* requires special handling */ + +#define attmask_int 0x00ff000 + +/* Internal attributes used for variable scoping. */ +#define att_tempvar 0x0100000 /* variable came from the temp environment */ +#define att_propagate 0x0200000 /* propagate to previous scope */ + +#define attmask_scope 0x0f00000 + +#define exported_p(var) ((((var)->attributes) & (att_exported))) +#define readonly_p(var) ((((var)->attributes) & (att_readonly))) +#define array_p(var) ((((var)->attributes) & (att_array))) +#define function_p(var) ((((var)->attributes) & (att_function))) +#define integer_p(var) ((((var)->attributes) & (att_integer))) +#define local_p(var) ((((var)->attributes) & (att_local))) +#define assoc_p(var) ((((var)->attributes) & (att_assoc))) +#define trace_p(var) ((((var)->attributes) & (att_trace))) + +#define invisible_p(var) ((((var)->attributes) & (att_invisible))) +#define non_unsettable_p(var) ((((var)->attributes) & (att_nounset))) +#define noassign_p(var) ((((var)->attributes) & (att_noassign))) +#define imported_p(var) ((((var)->attributes) & (att_imported))) +#define specialvar_p(var) ((((var)->attributes) & (att_special))) + +#define tempvar_p(var) ((((var)->attributes) & (att_tempvar))) + +/* Acessing variable values: rvalues */ +#define value_cell(var) ((var)->value) +#define function_cell(var) (COMMAND *)((var)->value) +#define array_cell(var) (ARRAY *)((var)->value) + +#define var_isnull(var) ((var)->value == 0) +#define var_isset(var) ((var)->value != 0) + +/* Assigning variable values: lvalues */ +#define var_setvalue(var, str) ((var)->value = (str)) +#define var_setfunc(var, func) ((var)->value = (char *)(func)) +#define var_setarray(var, arr) ((var)->value = (char *)(arr)) + +/* Make VAR be auto-exported. */ +#define set_auto_export(var) \ + do { (var)->attributes |= att_exported; array_needs_making = 1; } while (0) + +#define SETVARATTR(var, attr, undo) \ + ((undo == 0) ? ((var)->attributes |= (attr)) \ + : ((var)->attributes &= ~(attr))) + +#define VSETATTR(var, attr) ((var)->attributes |= (attr)) +#define VUNSETATTR(var, attr) ((var)->attributes &= ~(attr)) + +#define VGETFLAGS(var) ((var)->attributes) + +#define VSETFLAGS(var, flags) ((var)->attributes = (flags)) +#define VCLRFLAGS(var) ((var)->attributes = 0) + +/* Macros to perform various operations on `exportstr' member of a SHELL_VAR. */ +#define CLEAR_EXPORTSTR(var) (var)->exportstr = (char *)NULL +#define COPY_EXPORTSTR(var) ((var)->exportstr) ? savestring ((var)->exportstr) : (char *)NULL +#define SET_EXPORTSTR(var, value) (var)->exportstr = (value) +#define SAVE_EXPORTSTR(var, value) (var)->exportstr = (value) ? savestring (value) : (char *)NULL + +#define FREE_EXPORTSTR(var) \ + do { if ((var)->exportstr) free ((var)->exportstr); } while (0) + +#define CACHE_IMPORTSTR(var, value) \ + (var)->exportstr = savestring (value) + +#define INVALIDATE_EXPORTSTR(var) \ + do { \ + if ((var)->exportstr) \ + { \ + free ((var)->exportstr); \ + (var)->exportstr = (char *)NULL; \ + } \ + } while (0) + +/* Stuff for hacking variables. */ +typedef int sh_var_map_func_t __P((SHELL_VAR *)); + +/* Where we keep the variables and functions */ +extern VAR_CONTEXT *global_variables; +extern VAR_CONTEXT *shell_variables; + +extern HASH_TABLE *shell_functions; +extern HASH_TABLE *temporary_env; + +extern int variable_context; +extern char *dollar_vars[]; +extern char **export_env; + +extern void initialize_shell_variables __P((char **, int)); +extern SHELL_VAR *set_if_not __P((char *, char *)); + +extern void sh_set_lines_and_columns __P((int, int)); +extern void set_pwd __P((void)); +extern void set_ppid __P((void)); +extern void make_funcname_visible __P((int)); + +extern SHELL_VAR *var_lookup __P((const char *, VAR_CONTEXT *)); + +extern SHELL_VAR *find_function __P((const char *)); +extern FUNCTION_DEF *find_function_def __P((const char *)); +extern SHELL_VAR *find_variable __P((const char *)); +extern SHELL_VAR *find_variable_internal __P((const char *, int)); +extern SHELL_VAR *find_tempenv_variable __P((const char *)); +extern SHELL_VAR *copy_variable __P((SHELL_VAR *)); +extern SHELL_VAR *make_local_variable __P((const char *)); +extern SHELL_VAR *bind_variable __P((const char *, char *, int)); +extern SHELL_VAR *bind_function __P((const char *, COMMAND *)); + +extern void bind_function_def __P((const char *, FUNCTION_DEF *)); + +extern SHELL_VAR **map_over __P((sh_var_map_func_t *, VAR_CONTEXT *)); +SHELL_VAR **map_over_funcs __P((sh_var_map_func_t *)); + +extern SHELL_VAR **all_shell_variables __P((void)); +extern SHELL_VAR **all_shell_functions __P((void)); +extern SHELL_VAR **all_visible_variables __P((void)); +extern SHELL_VAR **all_visible_functions __P((void)); +extern SHELL_VAR **all_exported_variables __P((void)); +extern SHELL_VAR **local_exported_variables __P((void)); +extern SHELL_VAR **all_local_variables __P((void)); +#if defined (ARRAY_VARS) +extern SHELL_VAR **all_array_variables __P((void)); +#endif +extern char **all_variables_matching_prefix __P((const char *)); + +extern char **make_var_array __P((HASH_TABLE *)); +extern char **add_or_supercede_exported_var __P((char *, int)); + +extern char *get_variable_value __P((SHELL_VAR *)); +extern char *get_string_value __P((const char *)); +extern char *sh_get_env_value __P((const char *)); +extern char *make_variable_value __P((SHELL_VAR *, char *, int)); + +extern SHELL_VAR *bind_variable_value __P((SHELL_VAR *, char *, int)); +extern SHELL_VAR *bind_int_variable __P((char *, char *)); +extern SHELL_VAR *bind_var_to_int __P((char *, intmax_t)); + +extern int assign_in_env __P((WORD_DESC *)); + +extern int unbind_variable __P((const char *)); +extern int unbind_func __P((const char *)); +extern int unbind_function_def __P((const char *)); +extern int makunbound __P((const char *, VAR_CONTEXT *)); +extern int kill_local_variable __P((const char *)); +extern void delete_all_variables __P((HASH_TABLE *)); +extern void delete_all_contexts __P((VAR_CONTEXT *)); + +extern VAR_CONTEXT *new_var_context __P((char *, int)); +extern void dispose_var_context __P((VAR_CONTEXT *)); +extern VAR_CONTEXT *push_var_context __P((char *, int, HASH_TABLE *)); +extern void pop_var_context __P((void)); +extern VAR_CONTEXT *push_scope __P((int, HASH_TABLE *)); +extern void pop_scope __P((int)); + +extern void push_context __P((char *, int, HASH_TABLE *)); +extern void pop_context __P((void)); +extern void push_dollar_vars __P((void)); +extern void pop_dollar_vars __P((void)); +extern void dispose_saved_dollar_vars __P((void)); + +extern void push_args __P((WORD_LIST *)); +extern void pop_args __P((void)); + +extern void adjust_shell_level __P((int)); +extern void non_unsettable __P((char *)); +extern void dispose_variable __P((SHELL_VAR *)); +extern void dispose_used_env_vars __P((void)); +extern void dispose_function_env __P((void)); +extern void dispose_builtin_env __P((void)); +extern void merge_temporary_env __P((void)); +extern void merge_builtin_env __P((void)); +extern void kill_all_local_variables __P((void)); + +extern void set_var_read_only __P((char *)); +extern void set_func_read_only __P((const char *)); +extern void set_var_auto_export __P((char *)); +extern void set_func_auto_export __P((const char *)); + +extern void sort_variables __P((SHELL_VAR **)); + +extern void maybe_make_export_env __P((void)); +extern void update_export_env_inplace __P((char *, int, char *)); +extern void put_command_name_into_env __P((char *)); +extern void put_gnu_argv_flags_into_env __P((intmax_t, char *)); + +extern void print_var_list __P((SHELL_VAR **)); +extern void print_func_list __P((SHELL_VAR **)); +extern void print_assignment __P((SHELL_VAR *)); +extern void print_var_value __P((SHELL_VAR *, int)); +extern void print_var_function __P((SHELL_VAR *)); + +#if defined (ARRAY_VARS) +extern SHELL_VAR *make_new_array_variable __P((char *)); +extern SHELL_VAR *make_local_array_variable __P((char *)); + +extern void set_pipestatus_array __P((int *, int)); +#endif + +extern void set_pipestatus_from_exit __P((int)); + +/* The variable in NAME has just had its state changed. Check to see if it + is one of the special ones where something special happens. */ +extern void stupidly_hack_special_variables __P((char *)); + +extern int get_random_number __P((void)); + +/* The `special variable' functions that get called when a particular + variable is set. */ +extern void sv_ifs __P((char *)); +extern void sv_path __P((char *)); +extern void sv_mail __P((char *)); +extern void sv_comp_wordbreaks __P((char *)); +extern void sv_globignore __P((char *)); +extern void sv_ignoreeof __P((char *)); +extern void sv_strict_posix __P((char *)); +extern void sv_optind __P((char *)); +extern void sv_opterr __P((char *)); +extern void sv_locale __P((char *)); + +#if defined (READLINE) +extern void sv_comp_wordbreaks __P((char *)); +extern void sv_terminal __P((char *)); +extern void sv_hostfile __P((char *)); +extern void sv_winsize __P((char *)); +#endif + +#if defined (__CYGWIN__) +extern void sv_home __P((char *)); +#endif + +#if defined (HISTORY) +extern void sv_histsize __P((char *)); +extern void sv_histignore __P((char *)); +extern void sv_history_control __P((char *)); +# if defined (BANG_HISTORY) +extern void sv_histchars __P((char *)); +# endif +extern void sv_histtimefmt __P((char *)); +#endif /* HISTORY */ + +#if defined (HAVE_TZSET) && defined (PROMPT_STRING_DECODE) +extern void sv_tz __P((char *)); +#endif + +#endif /* !_VARIABLES_H_ */ diff --git a/bash-20060316/version.c b/bash-20060316/version.c new file mode 100644 index 000000000..f37337276 --- /dev/null +++ b/bash-20060316/version.c @@ -0,0 +1,83 @@ +/* version.c -- distribution and version numbers. */ + +/* Copyright (C) 1989-2005 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#include + +#include + +#include "stdc.h" + +#include "version.h" +#include "patchlevel.h" +#include "conftypes.h" + +#include "bashintl.h" + +extern char *shell_name; + +/* Defines from version.h */ +const char *dist_version = DISTVERSION; +int patch_level = PATCHLEVEL; +int build_version = BUILDVERSION; +#ifdef RELSTATUS +const char *release_status = RELSTATUS; +#else +const char *release_status = (char *)0; +#endif +const char *sccs_version = SCCSVERSION; + +/* Functions for getting, setting, and displaying the shell version. */ + +/* Forward declarations so we don't have to include externs.h */ +extern char *shell_version_string __P((void)); +extern void show_shell_version __P((int)); + +/* Give version information about this shell. */ +char * +shell_version_string () +{ + static char tt[32] = { '\0' }; + + if (tt[0] == '\0') + { + if (release_status) +#if defined (HAVE_SNPRINTF) + snprintf (tt, sizeof (tt), "%s.%d(%d)-%s", dist_version, patch_level, build_version, release_status); +#else + sprintf (tt, "%s.%d(%d)-%s", dist_version, patch_level, build_version, release_status); +#endif + else +#if defined (HAVE_SNPRINTF) + snprintf (tt, sizeof (tt), "%s.%d(%d)", dist_version, patch_level, build_version); +#else + sprintf (tt, "%s.%d(%d)", dist_version, patch_level, build_version); +#endif + } + return tt; +} + +void +show_shell_version (extended) + int extended; +{ + printf ("GNU bash, version %s (%s)\n", shell_version_string (), MACHTYPE); + if (extended) + printf (_("Copyright (C) 2005 Free Software Foundation, Inc.\n")); +} diff --git a/bash-20060316/xmalloc.c b/bash-20060316/xmalloc.c new file mode 100644 index 000000000..93d192810 --- /dev/null +++ b/bash-20060316/xmalloc.c @@ -0,0 +1,193 @@ +/* xmalloc.c -- safe versions of malloc and realloc */ + +/* Copyright (C) 1991 Free Software Foundation, Inc. + + This file is part of GNU Readline, a library for reading lines + of text with interactive input and history editing. + + Readline is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. + + Readline 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 Readline; see the file COPYING. If not, write to the Free + Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#if defined (HAVE_CONFIG_H) +#include +#endif + +#include "bashtypes.h" +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#include "error.h" + +#include "bashintl.h" + +#if !defined (PTR_T) +# if defined (__STDC__) +# define PTR_T void * +# else +# define PTR_T char * +# endif /* !__STDC__ */ +#endif /* !PTR_T */ + +#if defined (HAVE_SBRK) && !HAVE_DECL_SBRK +extern char *sbrk(); +#endif + +static PTR_T lbreak; +static int brkfound; +static size_t allocated; + +/* **************************************************************** */ +/* */ +/* Memory Allocation and Deallocation. */ +/* */ +/* **************************************************************** */ + +#if defined (HAVE_SBRK) +static size_t +findbrk () +{ + if (brkfound == 0) + { + lbreak = (PTR_T)sbrk (0); + brkfound++; + } + return (char *)sbrk (0) - (char *)lbreak; +} +#endif + +/* Return a pointer to free()able block of memory large enough + to hold BYTES number of bytes. If the memory cannot be allocated, + print an error message and abort. */ +PTR_T +xmalloc (bytes) + size_t bytes; +{ + PTR_T temp; + + temp = malloc (bytes); + + if (temp == 0) + { +#if defined (HAVE_SBRK) + allocated = findbrk (); + fatal_error (_("xmalloc: cannot allocate %lu bytes (%lu bytes allocated)"), (unsigned long)bytes, (unsigned long)allocated); +#else + fatal_error (_("xmalloc: cannot allocate %lu bytes"), (unsigned long)bytes); +#endif /* !HAVE_SBRK */ + } + + return (temp); +} + +PTR_T +xrealloc (pointer, bytes) + PTR_T pointer; + size_t bytes; +{ + PTR_T temp; + + temp = pointer ? realloc (pointer, bytes) : malloc (bytes); + + if (temp == 0) + { +#if defined (HAVE_SBRK) + allocated = findbrk (); + fatal_error (_("xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)"), (unsigned long)bytes, (unsigned long)allocated); +#else + fatal_error (_("xrealloc: cannot allocate %lu bytes"), (unsigned long)bytes); +#endif /* !HAVE_SBRK */ + } + + return (temp); +} + +/* Use this as the function to call when adding unwind protects so we + don't need to know what free() returns. */ +void +xfree (string) + PTR_T string; +{ + if (string) + free (string); +} + +#ifdef USING_BASH_MALLOC +#include + +PTR_T +sh_xmalloc (bytes, file, line) + size_t bytes; + char *file; + int line; +{ + PTR_T temp; + + temp = sh_malloc (bytes, file, line); + + if (temp == 0) + { +#if defined (HAVE_SBRK) + allocated = findbrk (); + fatal_error (_("xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"), file, line, (unsigned long)bytes, (unsigned long)allocated); +#else + fatal_error (_("xmalloc: %s:%d: cannot allocate %lu bytes"), file, line, (unsigned long)bytes); +#endif /* !HAVE_SBRK */ + } + + return (temp); +} + +PTR_T +sh_xrealloc (pointer, bytes, file, line) + PTR_T pointer; + size_t bytes; + char *file; + int line; +{ + PTR_T temp; + + temp = pointer ? sh_realloc (pointer, bytes, file, line) : sh_malloc (bytes, file, line); + + if (temp == 0) + { +#if defined (HAVE_SBRK) + allocated = findbrk (); + fatal_error (_("xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)"), file, line, (unsigned long)bytes, (unsigned long)allocated); +#else + fatal_error (_("xrealloc: %s:%d: cannot allocate %lu bytes"), file, line, (unsigned long)bytes); +#endif /* !HAVE_SBRK */ + } + + return (temp); +} + +void +sh_xfree (string, file, line) + PTR_T string; + char *file; + int line; +{ + if (string) + sh_free (string, file, line); +} +#endif diff --git a/bash-20060316/xmalloc.h b/bash-20060316/xmalloc.h new file mode 100644 index 000000000..5ae8294ce --- /dev/null +++ b/bash-20060316/xmalloc.h @@ -0,0 +1,58 @@ +/* xmalloc.h -- defines for the `x' memory allocation functions */ + +/* Copyright (C) 2001 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + Bash is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with Bash; see the file COPYING. If not, write to the Free Software + Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ + +#if !defined (_XMALLOC_H_) +#define _XMALLOC_H_ + +#include "stdc.h" +#include "bashansi.h" + +/* Generic pointer type. */ +#ifndef PTR_T + +#if defined (__STDC__) +# define PTR_T void * +#else +# define PTR_T char * +#endif + +#endif /* PTR_T */ + +/* Allocation functions in xmalloc.c */ +extern PTR_T xmalloc __P((size_t)); +extern PTR_T xrealloc __P((void *, size_t)); +extern void xfree __P((void *)); + +#if defined(USING_BASH_MALLOC) && !defined (DISABLE_MALLOC_WRAPPERS) +extern PTR_T sh_xmalloc __P((size_t, const char *, int)); +extern PTR_T sh_xrealloc __P((void *, size_t, const char *, int)); +extern void sh_xfree __P((void *, const char *, int)); + +#define xmalloc(x) sh_xmalloc((x), __FILE__, __LINE__) +#define xrealloc(x, n) sh_xrealloc((x), (n), __FILE__, __LINE__) +#define xfree(x) sh_xfree((x), __FILE__, __LINE__) + +#ifdef free +#undef free +#endif +#define free(x) sh_xfree((x), __FILE__, __LINE__) +#endif /* USING_BASH_MALLOC */ + +#endif /* _XMALLOC_H_ */ diff --git a/bashline.c b/bashline.c index 809fe32b6..cc330d084 100644 --- a/bashline.c +++ b/bashline.c @@ -1,6 +1,6 @@ /* bashline.c -- Bash's interface to the readline library. */ -/* Copyright (C) 1987-2006 Free Software Foundation, Inc. +/* Copyright (C) 1987-2005 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -1236,7 +1236,7 @@ command_word_completion_function (hint_text, state) static char *filename_hint = (char *)NULL; static char *dequoted_hint = (char *)NULL; static int path_index, hint_len, dequoted_len, istate, igncase; - static int mapping_over, local_index, searching_path, hint_is_dir; + static int mapping_over, local_index; static SHELL_VAR **varlist = (SHELL_VAR **)NULL; #if defined (ALIAS) static alias_t **alias_list = (alias_t **)NULL; @@ -1252,8 +1252,7 @@ command_word_completion_function (hint_text, state) if (hint) free (hint); - mapping_over = searching_path = 0; - hint_is_dir = CMD_IS_DIR (hint_text); + mapping_over = 0; val = (char *)NULL; temp = rl_variable_value ("completion-ignore-case"); @@ -1392,16 +1391,6 @@ command_word_completion_function (hint_text, state) mapping_over++; } - /* If the text passed is a directory in the current directory, return it - as a possible match. Executables in directories in the current - directory can be specified using relative pathnames and successfully - executed even when `.' is not in $PATH. */ - if (hint_is_dir) - { - hint_is_dir = 0; /* only return the hint text once */ - return (savestring (hint_text)); - } - /* Repeatedly call filename_completion_function while we have members of PATH left. Question: should we stat each file? Answer: we call executable_file () on each file. */ @@ -1419,7 +1408,6 @@ command_word_completion_function (hint_text, state) (current_path = extract_colon_unit (path, &path_index)) == 0) return ((char *)NULL); - searching_path = 1; if (*current_path == 0) { free (current_path); @@ -1461,9 +1449,7 @@ command_word_completion_function (hint_text, state) else { int match, freetemp; -#if 0 - char *temp; /* shadows previous declaration */ -#endif + char *temp; if (absolute_program (hint)) { @@ -1515,18 +1501,9 @@ command_word_completion_function (hint_text, state) 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))) -#endif { free (val); val = ""; /* So it won't be NULL. */ @@ -1762,9 +1739,8 @@ bash_servicename_completion_function (text, state) if (snamelen == 0 || (STREQN (sname, srvent->s_name, snamelen))) break; /* Not primary, check aliases */ - for (alist = srvent->s_aliases; *alist; alist++) + for (alist = srvent->s_aliases; aentry = *alist; alist++) { - aentry = *alist; if (STREQN (sname, aentry, snamelen)) { afound = 1; diff --git a/braces.c b/braces.c index 34a72be43..3f5c5e85f 100644 --- a/braces.c +++ b/braces.c @@ -55,7 +55,7 @@ */ /* The character which is used to separate arguments. */ -static const int brace_arg_separator = ','; +int brace_arg_separator = ','; #if defined (__P) static int brace_gobbler __P((char *, size_t, int *, int)); @@ -71,18 +71,6 @@ static char **mkseq(); static char **array_concat (); #endif -#if 0 -static void -dump_result (a) - char **a; -{ - int i; - - for (i = 0; a[i]; i++) - printf ("dump_result: a[%d] = -%s-\n", i, a[i]); -} -#endif - /* Return an array of strings; the brace expansion of TEXT. */ char ** brace_expand (text) diff --git a/builtins/Makefile.in b/builtins/Makefile.in index 65c4d23e8..e027f7aaa 100644 --- a/builtins/Makefile.in +++ b/builtins/Makefile.in @@ -39,12 +39,9 @@ prefix = @prefix@ srcdir = @srcdir@ VPATH = .:@srcdir@ topdir = @top_srcdir@ - -datarootdir = @datarootdir@ - includedir = @includedir@ datadir = @datadir@ -localedir = @localedir@ +localedir = $(datadir)/locale # Support an alternate destination root directory for package building DESTDIR = @@ -77,10 +74,7 @@ RL_INCLUDEDIR = @RL_INCLUDEDIR@ INTL_LIBSRC = ${topdir}/lib/intl INTL_BUILDDIR = ${LIBBUILD}/intl -INTL_LIBDIR = ${INTL_BUILDDIR} -INTL_LIBRARY = ${INTL_BUILDDIR}/libintl.a INTL_INC = @INTL_INC@ -INTL_DEP = @INTL_DEP@ LIBINTL_H = @LIBINTL_H@ HELPDIR = @HELPDIR@ @@ -242,11 +236,6 @@ $(OFILES): $(MKBUILTINS) ../config.h po: builtins.c xgettext -L C -o $(topdir)/po/builtins.pot --keyword='N_' builtins.c 2>/dev/null -${LIBINTL_H}: - @echo making $@ in ${INTL_BUILDDIR} - @(cd ${INTL_BUILDDIR} && \ - $(MAKE) $(MFLAGS) libintl.h) || exit 1 - # dependencies alias.o: alias.def @@ -620,7 +609,7 @@ inlib.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h jobs.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h kill.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h let.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h -mkbuiltins.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +mkbuiltins.c: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h printf.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h pushd.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h read.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h diff --git a/builtins/bind.def b/builtins/bind.def index ce246dde5..4711031e1 100644 --- a/builtins/bind.def +++ b/builtins/bind.def @@ -1,7 +1,7 @@ This file is bind.def, from which is created bind.c. It implements the builtin "bind" in Bash. -Copyright (C) 1987-2006 Free Software Foundation, Inc. +Copyright (C) 1987-2003 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -29,10 +29,10 @@ $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] Bind a key sequence to a Readline function or a macro, or set a Readline variable. The non-option argument syntax is equivalent -to that found in ~/.inputrc, but must be passed as a single argument: e.g., +to that found in ~/.inputrc, but must be passed as a single argument: bind '"\C-x\C-r": re-read-init-file'. bind accepts the following options: - -m keymap Use KEYMAP as the keymap for the duration of this + -m keymap Use `keymap' as the keymap for the duration of this command. Acceptable keymap names are emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move, vi-command, and vi-insert. @@ -40,18 +40,18 @@ bind accepts the following options: -P List function names and bindings. -p List functions and bindings in a form that can be reused as input. - -S List key sequences that invoke macros and their values - -s List key sequences that invoke macros and their values - in a form that can be reused as input. - -V List variable names and values - -v List variable names and values in a form that can - be reused as input. - -q function-name Query about which keys invoke the named function. - -u function-name Unbind all keys which are bound to the named function. -r keyseq Remove the binding for KEYSEQ. - -f filename Read key bindings from FILENAME. -x keyseq:shell-command Cause SHELL-COMMAND to be executed when KEYSEQ is entered. + -f filename Read key bindings from FILENAME. + -q function-name Query about which keys invoke the named function. + -u function-name Unbind all keys which are bound to the named function. + -V List variable names and values + -v List variable names and values in a form that can + be reused as input. + -S List key sequences that invoke macros and their values + -s List key sequences that invoke macros and their values + in a form that can be reused as input. $END #if defined (READLINE) @@ -310,7 +310,7 @@ unbind_command (name) function = rl_named_function (name); if (function == 0) { - builtin_error (_("`%s': unknown function name"), name); + builtin_error ("`%s': unknown function name", name); return EXECUTION_FAILURE; } diff --git a/builtins/break.def b/builtins/break.def index 7d7ebe95b..e61d5027e 100644 --- a/builtins/break.def +++ b/builtins/break.def @@ -1,7 +1,7 @@ This file is break.def, from which is created break.c. It implements the builtins "break" and "continue" in Bash. -Copyright (C) 1987-2006 Free Software Foundation, Inc. +Copyright (C) 1987-2003 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -70,7 +70,7 @@ break_builtin (list) if (newbreak <= 0) { - sh_erange (list->word->word, _("loop count")); + sh_erange (list->word->word, "loop count"); breaking = loop_level; return (EXECUTION_FAILURE); } @@ -105,7 +105,7 @@ continue_builtin (list) if (newcont <= 0) { - sh_erange (list->word->word, _("loop count")); + sh_erange (list->word->word, "loop count"); breaking = loop_level; return (EXECUTION_FAILURE); } diff --git a/builtins/builtin.def b/builtins/builtin.def index 4e38fb4e7..dfa58bc97 100644 --- a/builtins/builtin.def +++ b/builtins/builtin.def @@ -1,7 +1,7 @@ This file is builtin.def, from which is created builtin.c. It implements the builtin "builtin" in Bash. -Copyright (C) 1987-2006 Free Software Foundation, Inc. +Copyright (C) 1987-2002 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -24,10 +24,9 @@ $PRODUCES builtin.c $BUILTIN builtin $FUNCTION builtin_builtin $SHORT_DOC builtin [shell-builtin [arg ...]] -Execute SHELL-BUILTIN with arguments ARGs without performing shell function -lookup. This is useful when you wish to reimplement a shell builtin as a -shell function, but need the functionality of the builtin within the function -itself. +Run a shell builtin. This is useful when you wish to rename a +shell builtin to be a function, but need the functionality of the +builtin within the function itself. $END #include diff --git a/builtins/caller.def b/builtins/caller.def index 63a25f3dd..5142cab9a 100644 --- a/builtins/caller.def +++ b/builtins/caller.def @@ -24,13 +24,13 @@ $PRODUCES caller.c $BUILTIN caller $FUNCTION caller_builtin $DEPENDS_ON DEBUGGER -$SHORT_DOC caller [expr] +$SHORT_DOC caller [EXPR] Returns the context of the current subroutine call. -Without EXPR, returns "$line $filename". With EXPR, +Without EXPR, returns returns "$line $filename". With EXPR, returns "$line $subroutine $filename"; this extra information -can be used to provide a stack trace. +can be used used to provide a stack trace. The value of EXPR indicates how many call frames to go back before the current one; the top frame is frame 0. @@ -76,6 +76,7 @@ caller_builtin (list) SHELL_VAR *funcname_v, *bash_source_v, *bash_lineno_v; ARRAY *funcname_a, *bash_source_a, *bash_lineno_a; char *funcname_s, *source_s, *lineno_s; + ARRAY_ELEMENT *ae; intmax_t num; GET_ARRAY_FROM_VAR ("FUNCNAME", funcname_v, funcname_a); @@ -128,14 +129,14 @@ caller_builtin (list) #ifdef LOADABLE_BUILTIN static char *caller_doc[] = { -N_("Returns the context of the current subroutine call.\n\ - \n\ - Without EXPR, returns \"$line $filename\". With EXPR,\n\ - returns \"$line $subroutine $filename\"; this extra information\n\ - can be used used to provide a stack trace.\n\ - \n\ - The value of EXPR indicates how many call frames to go back before the\n\ - current one; the top frame is frame 0."), + N_("Returns the context of the current subroutine call."), + N_(" "), + N_("Without EXPR, returns returns \"$line $filename\". With EXPR,"), + N_("returns \"$line $subroutine $filename\"; this extra information"), + N_("can be used used to provide a stack trace."), + N_(" "), + N_("The value of EXPR indicates how many call frames to go back before the"), + N_("current one; the top frame is frame 0."), (char *)NULL }; diff --git a/builtins/cd.def b/builtins/cd.def index 7d3ff4617..025e4f5e1 100644 --- a/builtins/cd.def +++ b/builtins/cd.def @@ -56,11 +56,10 @@ extern int errno; extern int posixly_correct; extern int array_needs_making; -extern const char * const bash_getcwd_errstr; +extern char *bash_getcwd_errstr; static int bindpwd __P((int)); static void setpwd __P((char *)); -static char *resetpwd __P((char *)); static int change_to_directory __P((char *, int)); static char *cdspell __P((char *)); @@ -73,11 +72,11 @@ int cdable_vars; $BUILTIN cd $FUNCTION cd_builtin $SHORT_DOC cd [-L|-P] [dir] -Change the current directory to DIR. The default for DIR is the value -of the HOME shell variable. The variable CDPATH defines the search -path for the directory containing DIR. Alternative directory names in -CDPATH are separated by a colon (:). A null directory name is the same -as the current directory, i.e., `.'. If DIR begins with a slash (/), +Change the current directory to DIR. The variable $HOME is the +default DIR. The variable CDPATH defines the search path for +the directory containing DIR. Alternative directory names in CDPATH +are separated by a colon (:). A null directory name is the same as +the current directory, i.e. `.'. If DIR begins with a slash (/), then CDPATH is not used. If the directory is not found, and the shell option `cdable_vars' is set, then try the word as a variable name. If that variable has a value, then cd to the value of that diff --git a/builtins/common.c b/builtins/common.c index 5d9b189fc..9d8f09ab4 100644 --- a/builtins/common.c +++ b/builtins/common.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1987-2007 Free Software Foundation, Inc. +/* Copyright (C) 1987-2005 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -69,7 +69,7 @@ extern int last_command_exit_value; extern int running_trap; extern int posixly_correct; extern char *this_command_name, *shell_name; -extern const char * const bash_getcwd_errstr; +extern char *bash_getcwd_errstr; /* Used by some builtins and the mainline code. */ sh_builtin_func_t *last_shell_builtin = (sh_builtin_func_t *)NULL; @@ -100,7 +100,7 @@ builtin_error (format, va_alist) fprintf (stderr, "%s: ", name); if (interactive_shell == 0) - fprintf (stderr, _("line %d: "), executing_line_number ()); + fprintf (stderr, "line %d: ", executing_line_number ()); if (this_command_name && *this_command_name) fprintf (stderr, "%s: ", this_command_name); @@ -117,7 +117,7 @@ void builtin_usage () { if (this_command_name && *this_command_name) - fprintf (stderr, _("%s: usage: "), this_command_name); + fprintf (stderr, "%s: usage: ", this_command_name); fprintf (stderr, "%s\n", current_builtin->short_doc); fflush (stderr); } @@ -131,7 +131,6 @@ no_args (list) if (list) { builtin_error (_("too many arguments")); - top_level_cleanup (); jump_to_top_level (DISCARD); } } @@ -396,10 +395,7 @@ get_numeric_arg (list, fatal) if (fatal) throw_to_top_level (); else - { - top_level_cleanup (); - jump_to_top_level (DISCARD); - } + jump_to_top_level (DISCARD); } no_args (list->next); } @@ -471,6 +467,9 @@ char * get_working_directory (for_whom) char *for_whom; { + char *directory; + size_t dsize; + if (no_symbolic_links) { FREE (the_current_working_directory); @@ -479,11 +478,7 @@ get_working_directory (for_whom) if (the_current_working_directory == 0) { -#if defined (GETCWD_BROKEN) - the_current_working_directory = getcwd (0, PATH_MAX); -#else the_current_working_directory = getcwd (0, 0); -#endif if (the_current_working_directory == 0) { fprintf (stderr, _("%s: error retrieving current directory: %s: %s\n"), @@ -647,7 +642,7 @@ display_signal_list (list, forcecols) { printf ("%2d) %s", i, name); - if (++column < 5) + if (++column < 4) printf ("\t"); else { diff --git a/builtins/complete.def b/builtins/complete.def index 56f875494..a859b88f0 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" and "compgen" in Bash. -Copyright (C) 1999-2006 Free Software Foundation, Inc. +Copyright (C) 1999-2003 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -24,14 +24,12 @@ $PRODUCES complete.c $BUILTIN complete $DEPENDS_ON PROGRAMMABLE_COMPLETION $FUNCTION complete_builtin -$SHORT_DOC complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...] +$SHORT_DOC complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W wordlist] [-P prefix] [-S suffix] [-X filterpat] [-F function] [-C command] [name ...] For each NAME, specify how arguments are to be completed. If the -p 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 -r option removes a completion specification for each NAME, or, if no NAMEs are supplied, all completion specifications. -When completion is attempted, the actions are applied in the order the -uppercase-letter options are listed above. $END #include @@ -73,8 +71,8 @@ static int print_cmd_completions __P((WORD_LIST *)); static char *Garg, *Warg, *Parg, *Sarg, *Xarg, *Farg, *Carg; -static const struct _compacts { - const char * const actname; +static struct _compacts { + char *actname; int actflag; int actopt; } compacts[] = { @@ -106,8 +104,8 @@ static const struct _compacts { }; /* This should be a STRING_INT_ALIST */ -const static struct _compopt { - const char * const optname; +static struct _compopt { + char *optname; int optflag; } compopts[] = { { "bashdefault", COPT_BASHDEFAULT }, @@ -533,7 +531,7 @@ print_cmd_completions (list) $BUILTIN compgen $DEPENDS_ON PROGRAMMABLE_COMPLETION $FUNCTION compgen_builtin -$SHORT_DOC compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word] +$SHORT_DOC compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-P prefix] [-S suffix] [-X filterpat] [-F function] [-C command] [word] Display the possible completions depending on the options. Intended to be used from within a shell function generating possible completions. If the optional WORD argument is supplied, matches against WORD are diff --git a/builtins/declare.def b/builtins/declare.def index a806f10a5..4d94face6 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-2006 Free Software Foundation, Inc. +Copyright (C) 1987-2004 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -24,29 +24,30 @@ $PRODUCES declare.c $BUILTIN declare $FUNCTION declare_builtin $SHORT_DOC declare [-afFirtx] [-p] [name[=value] ...] -Declare variables and give them attributes. If no NAMEs are -given, then display the values of variables instead. When -displaying variable values, the -f option restricts the display -to function names and definitions; the -F option restricts the -display to function names only (plus line number and source file -when debugging). The -p option will display the attributes and -values of each NAME. +Declare variables and/or give them attributes. If no NAMEs are +given, then display the values of variables instead. The -p option +will display the attributes and values of each NAME. -The options which set attributes are: +The flags are: -a to make NAMEs arrays (if supported) + -f to select from among function names only + -F to display function names (and line number and source file name if + debugging) without definitions -i to make NAMEs have the `integer' attribute -r to make NAMEs readonly -t to make NAMEs have the `trace' attribute -x to make NAMEs export -Using `+' instead of `-' turns off the given attribute. - Variables with the integer attribute have arithmetic evaluation (see -the `let' command) done when the variable is assigned a value. +`let') done when the variable is assigned to. + +When displaying values of variables, -f displays a function's name +and definition. The -F option restricts the display to function +name only. -When used in a function, `declare' makes NAMEs local, as with the `local' -command. +Using `+' instead of `-' turns off the given attribute instead. When +used in a function, makes NAMEs local, as with the `local' command. $END $BUILTIN typeset @@ -89,11 +90,10 @@ declare_builtin (list) $BUILTIN local $FUNCTION local_builtin -$SHORT_DOC local [option] name[=value] ... +$SHORT_DOC local name[=value] ... Create a local variable called NAME, and give it VALUE. LOCAL can only be used within a function; it makes the variable NAME have a visible scope restricted to that function and its children. -OPTION can be any of the options accepted by `declare'. $END int local_builtin (list) diff --git a/builtins/echo.def b/builtins/echo.def index 4291d7c16..6792659a7 100644 --- a/builtins/echo.def +++ b/builtins/echo.def @@ -31,8 +31,6 @@ $PRODUCES echo.c #include #include "../shell.h" -#include "common.h" - $BUILTIN echo $FUNCTION echo_builtin $DEPENDS_ON V9_ECHO @@ -43,17 +41,14 @@ following backslash-escaped characters is turned on: \a alert (bell) \b backspace \c suppress trailing newline - \e escape character + \E escape character \f form feed \n new line \r carriage return \t horizontal tab \v vertical tab \\ backslash - \0nnn the character whose ASCII code is NNN (octal). NNN can be - 0 to 3 octal digits - \xHH the eight-bit character whose value is HH (hexadecimal). HH - can be one or two hex digits + \num the character whose ASCII code is NUM (octal). You can explicitly turn off the interpretation of the above characters with the -E option. diff --git a/builtins/enable.def b/builtins/enable.def index 3570be5ef..823c38f9b 100644 --- a/builtins/enable.def +++ b/builtins/enable.def @@ -1,7 +1,7 @@ This file is enable.def, from which is created enable.c. It implements the builtin "enable" in Bash. -Copyright (C) 1987-2006 Free Software Foundation, Inc. +Copyright (C) 1987-2003 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -23,7 +23,7 @@ $PRODUCES enable.c $BUILTIN enable $FUNCTION enable_builtin -$SHORT_DOC enable [-a] [-dnps] [-f filename] [name ...] +$SHORT_DOC enable [-pnds] [-a] [-f filename] [name ...] Enable and disable builtin shell commands. This allows you to use a disk command which has the same name as a shell builtin without specifying a full pathname. If -n is used, the @@ -32,7 +32,7 @@ to use the `test' found in $PATH instead of the shell builtin version, type `enable -n test'. On systems supporting dynamic loading, the -f option may be used to load new builtins from the shared object FILENAME. The -d option will delete a builtin -previously loaded with -f. If no non-option NAMEs are given, or +previously loaded with -f. If no non-option names are given, or the -p option is supplied, a list of builtins is printed. The -a option means to print every builtin with an indication of whether or not it is enabled. The -s option restricts the output to the POSIX.2 diff --git a/builtins/evalfile.c b/builtins/evalfile.c index ac29ae803..81be017bd 100644 --- a/builtins/evalfile.c +++ b/builtins/evalfile.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996-2006 Free Software Foundation, Inc. +/* Copyright (C) 1996-2003 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -45,8 +45,6 @@ # include "../bashhist.h" #endif -#include - #include "common.h" #if !defined (errno) @@ -65,7 +63,7 @@ extern int errno; #define FEVAL_NOPUSHARGS 0x100 extern int posixly_correct; -extern int indirection_level, subshell_environment; +extern int indirection_level, startup_state, subshell_environment; extern int return_catch_flag, return_catch_value; extern int last_command_exit_value; @@ -80,7 +78,6 @@ _evalfile (filename, flags) volatile int old_interactive; procenv_t old_return_catch; int return_val, fd, result, pflags; - ssize_t nr; /* return value from read(2) */ char *string; struct stat finfo; size_t file_size; @@ -150,27 +147,21 @@ file_error_and_exit: setmode (fd, O_TEXT); #endif - if (S_ISREG (finfo.st_mode) && file_size <= SSIZE_MAX) - { - string = (char *)xmalloc (1 + file_size); - nr = read (fd, string, file_size); - if (nr >= 0) - string[nr] = '\0'; - } - else - nr = zmapfd (fd, &string, 0); + string = (char *)xmalloc (1 + file_size); + result = read (fd, string, file_size); + string[result] = '\0'; return_val = errno; close (fd); errno = return_val; - if (nr < 0) /* XXX was != file_size, not < 0 */ + if (result < 0) /* XXX was != file_size, not < 0 */ { free (string); goto file_error_and_exit; } - if (nr == 0) + if (result == 0) { free (string); return ((flags & FEVAL_BUILTIN) ? EXECUTION_SUCCESS : 1); @@ -180,7 +171,7 @@ file_error_and_exit: check_binary_file (string, (result > 80) ? 80 : result)) { free (string); - (*errfunc) (_("%s: cannot execute binary file"), filename); + (*errfunc) ("%s: cannot execute binary file", filename); return ((flags & FEVAL_BUILTIN) ? EX_BINARY_FILE : -1); } diff --git a/builtins/evalstring.c b/builtins/evalstring.c index 36f0ad398..04afac3d7 100644 --- a/builtins/evalstring.c +++ b/builtins/evalstring.c @@ -56,7 +56,7 @@ extern int errno; #define IS_BUILTIN(s) (builtin_address_internal(s, 0) != (struct builtin *)NULL) -extern int indirection_level, subshell_environment; +extern int indirection_level, startup_state, subshell_environment; extern int line_number; extern int last_command_exit_value; extern int running_trap; @@ -316,8 +316,9 @@ static int cat_file (r) REDIRECT *r; { - char *fn; + char lbuf[128], *fn; int fd, rval; + ssize_t nr; if (r->instruction != r_input_direction) return -1; diff --git a/builtins/exec.def b/builtins/exec.def index dd34ad53a..0818a25e2 100644 --- a/builtins/exec.def +++ b/builtins/exec.def @@ -24,12 +24,12 @@ $PRODUCES exec.c $BUILTIN exec $FUNCTION exec_builtin $SHORT_DOC exec [-cl] [-a name] file [redirection ...] -Execute FILE, replacing this shell with the specified program. +Exec FILE, replacing this shell with the specified program. If FILE is not specified, the redirections take effect in this shell. If the first argument is `-l', then place a dash in the zeroth arg passed to FILE, as login does. If the `-c' option is supplied, FILE is executed with a null environment. The `-a' -option means set argv[0] of the executed process to NAME. +option means to make set argv[0] of the executed process to NAME. If the file cannot be executed and the shell is not interactive, then the shell exits, unless the shell option `execfail' is set. $END diff --git a/builtins/exit.def b/builtins/exit.def index 3c0bfdf7f..ddaa5d315 100644 --- a/builtins/exit.def +++ b/builtins/exit.def @@ -1,7 +1,7 @@ This file is exit.def, from which is created exit.c. It implements the builtins "exit", and "logout" in Bash. -Copyright (C) 1987-2006 Free Software Foundation, Inc. +Copyright (C) 1987-2005 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -45,7 +45,6 @@ $END #include "common.h" #include "builtext.h" /* for jobs_builtin */ -extern int check_jobs_at_exit; extern int last_command_exit_value; extern int running_trap, trap_saved_exit_value; extern int subshell_environment; @@ -61,7 +60,7 @@ exit_builtin (list) { if (interactive) { - fprintf (stderr, login_shell ? _("logout\n") : "exit\n"); + fprintf (stderr, login_shell ? "logout\n" : "exit\n"); fflush (stderr); } @@ -95,7 +94,7 @@ exit_or_logout (list) int exit_value; #if defined (JOB_CONTROL) - int exit_immediate_okay, stopmsg; + int exit_immediate_okay; exit_immediate_okay = (interactive == 0 || last_shell_builtin == exit_builtin || @@ -103,32 +102,21 @@ exit_or_logout (list) last_shell_builtin == jobs_builtin); /* Check for stopped jobs if the user wants to. */ - if (exit_immediate_okay == 0) + if (!exit_immediate_okay) { register int i; - for (i = stopmsg = 0; i < js.j_jobslots; i++) + for (i = 0; i < js.j_jobslots; i++) if (jobs[i] && STOPPED (i)) - stopmsg = JSTOPPED; - else if (check_jobs_at_exit && stopmsg == 0 && RUNNING (i)) - stopmsg = JRUNNING; - - if (stopmsg == JSTOPPED) - fprintf (stderr, _("There are stopped jobs.\n")); - else if (stopmsg == JRUNNING) - fprintf (stderr, _("There are running jobs.\n")); - - if (stopmsg && check_jobs_at_exit) - list_all_jobs (JLIST_STANDARD); - - if (stopmsg) - { - /* This is NOT superfluous because EOF can get here without - going through the command parser. Set both last and this - so that either `exit', `logout', or ^D will work to exit - immediately if nothing intervenes. */ - this_shell_builtin = last_shell_builtin = exit_builtin; - return (EXECUTION_FAILURE); - } + { + fprintf (stderr, _("There are stopped jobs.\n")); + + /* This is NOT superfluous because EOF can get here without + going through the command parser. Set both last and this + so that either `exit', `logout', or ^D will work to exit + immediately if nothing intervenes. */ + this_shell_builtin = last_shell_builtin = exit_builtin; + return (EXECUTION_FAILURE); + } } #endif /* JOB_CONTROL */ diff --git a/builtins/fc.def b/builtins/fc.def index a807309da..ebe368326 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-2006 Free Software Foundation, Inc. +Copyright (C) 1987-2005 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -24,7 +24,7 @@ $PRODUCES fc.c $BUILTIN fc $FUNCTION fc_builtin $DEPENDS_ON HISTORY -$SHORT_DOC fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command] +$SHORT_DOC fc [-e ename] [-nlr] [first] [last] or fc -s [pat=rep] [cmd] fc is used to list or edit and re-execute commands from the history list. FIRST and LAST can be numbers specifying the range, or FIRST can be a string, which means the most recent command beginning with that @@ -37,7 +37,7 @@ string. -n means no line numbers listed. -r means reverse the order of the lines (making it newest listed first). -With the `fc -s [pat=rep ...] [command]' format, COMMAND is +With the `fc -s [pat=rep ...] [command]' format, the command is re-executed after the substitution OLD=NEW is performed. A useful alias to use with this is r='fc -s', so that typing `r cc' @@ -81,6 +81,7 @@ $END extern int errno; #endif /* !errno */ +extern int echo_input_at_read; extern int current_command_line_count; extern int literal_history; extern int posixly_correct; diff --git a/builtins/fg_bg.def b/builtins/fg_bg.def index 2f86c8bd7..c14381b6d 100644 --- a/builtins/fg_bg.def +++ b/builtins/fg_bg.def @@ -1,7 +1,7 @@ This file is fg_bg.def, from which is created fg_bg.c. It implements the builtins "bg" and "fg" in Bash. -Copyright (C) 1987-2006 Free Software Foundation, Inc. +Copyright (C) 1987-2005 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -137,7 +137,7 @@ fg_bg (list, foreground) if (INVALID_JOB (job)) { if (job != DUP_JOB) - sh_badjob (list ? list->word->word : _("current")); + sh_badjob (list ? list->word->word : "current"); goto failure; } diff --git a/builtins/hash.def b/builtins/hash.def index 8c827e170..697ffd0a9 100644 --- a/builtins/hash.def +++ b/builtins/hash.def @@ -158,7 +158,7 @@ hash_builtin (list) #ifdef EISDIR builtin_error ("%s: %s", pathname, strerror (EISDIR)); #else - builtin_error (_("%s: is a directory"), pathname); + builtin_error ("%s: is a directory", pathname); #endif opt = EXECUTION_FAILURE; } @@ -233,7 +233,7 @@ print_hashed_commands (fmt) return (0); if (fmt == 0) - printf (_("hits\tcommand\n")); + printf ("hits\tcommand\n"); hash_walk (hashed_filenames, fmt ? print_portable_hash_info : print_hash_info); return (1); } diff --git a/builtins/help.def b/builtins/help.def index 059f98660..35a6de9cc 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-2006 Free Software Foundation, Inc. +Copyright (C) 1987-2003 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -176,8 +176,7 @@ static void show_builtin_command_help () { int i, j; - int height, width; - char *t, blurb[128]; + char blurb[36]; printf ( _("These shell commands are defined internally. Type `help' to see this list.\n\ @@ -188,42 +187,21 @@ Use `man -k' or `info' to find out more about commands not in this list.\n\ A star (*) next to a name means that the command is disabled.\n\ \n")); - t = get_string_value ("COLUMNS"); - width = (t && *t) ? atoi (t) : 80; - if (width <= 0) - width = 80; - - width /= 2; - if (width > sizeof (blurb)) - width = sizeof (blurb); - height = (num_shell_builtins + 1) / 2; /* number of rows */ - - for (i = 0; i < height; i++) + for (i = 0; i < num_shell_builtins; i++) { 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'; + strncpy (blurb + 1, shell_builtins[i].short_doc, 34); + blurb[35] = '\0'; printf ("%s", blurb); - if ((i << 1) == 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 (i % 2) + printf ("\n"); + else + for (j = strlen (blurb); j < 35; j++) + putc (' ', stdout); } + if (i % 2) + printf ("\n"); } #endif /* HELP_BUILTIN */ diff --git a/builtins/history.def b/builtins/history.def index 972079221..efee00521 100644 --- a/builtins/history.def +++ b/builtins/history.def @@ -1,7 +1,7 @@ This file is history.def, from which is created history.c. It implements the builtin "history" in Bash. -Copyright (C) 1987-2006 Free Software Foundation, Inc. +Copyright (C) 1987-2003 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -24,7 +24,7 @@ $PRODUCES history.c $BUILTIN history $FUNCTION history_builtin $DEPENDS_ON HISTORY -$SHORT_DOC history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...] +$SHORT_DOC history [-c] [-d offset] [n] or history -awrn [filename] or history -ps arg [arg...] Display the history list with line numbers. Lines listed with with a `*' have been modified. Argument of N says to list only the last N lines. The `-c' option causes the history list to be @@ -36,7 +36,7 @@ to append history lines from this session to the history file. Argument `-n' means to read all history lines not already read from the history file and append them to the history list. -If FILENAME is given, then that is used as the history file. Otherwise, +If FILENAME is given, then that is used as the history file else if $HISTFILE has a value, that is used, else ~/.bash_history. If the -s option is supplied, the non-option ARGs are appended to the history list as a single entry. The -p option means to perform diff --git a/builtins/inlib.def b/builtins/inlib.def index 958c72e6e..094c4b949 100644 --- a/builtins/inlib.def +++ b/builtins/inlib.def @@ -64,7 +64,7 @@ inlib_builtin (list) if (status.all != status_$ok) { - builtin_error (_("%s: inlib failed"), list->word->word); + builtin_error ("%s: inlib failed", list->word->word); return_value = EXECUTION_FAILURE; } diff --git a/builtins/jobs.def b/builtins/jobs.def index ff1f3a80b..4c3ba6a73 100644 --- a/builtins/jobs.def +++ b/builtins/jobs.def @@ -1,7 +1,7 @@ This file is jobs.def, from which is created jobs.c. It implements the builtins "jobs" and "disown" in Bash. -Copyright (C) 1987-2006 Free Software Foundation, Inc. +Copyright (C) 1987-2005 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -261,7 +261,7 @@ disown_builtin (list) if (job == NO_JOB || jobs == 0 || INVALID_JOB (job)) { - sh_badjob (list ? list->word->word : _("current")); + sh_badjob (list ? list->word->word : "current"); retval = EXECUTION_FAILURE; } else if (nohup_only) diff --git a/builtins/mkbuiltins.c b/builtins/mkbuiltins.c index 3923b8a06..ff0bdc090 100644 --- a/builtins/mkbuiltins.c +++ b/builtins/mkbuiltins.c @@ -1224,7 +1224,7 @@ write_builtins (defs, structfile, externfile) document_name (builtin)); fprintf - (structfile, " N_(\"%s\"), (char *)NULL },\n", + (structfile, " \"%s\", (char *)NULL },\n", builtin->shortdoc ? builtin->shortdoc : builtin->name); } diff --git a/builtins/printf.def b/builtins/printf.def index e283323ce..e4e31704f 100644 --- a/builtins/printf.def +++ b/builtins/printf.def @@ -1,7 +1,7 @@ This file is printf.def, from which is created printf.c. It implements the builtin "printf" in Bash. -Copyright (C) 1997-2007 Free Software Foundation, Inc. +Copyright (C) 1997-2005 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -26,8 +26,8 @@ $FUNCTION printf_builtin $SHORT_DOC printf [-v var] format [arguments] printf formats and prints ARGUMENTS under control of the FORMAT. FORMAT is a character string which contains three types of objects: plain -characters, which are simply copied to standard output; character escape -sequences, which are converted and copied to the standard output; and +characters, which are simply copied to standard output, character escape +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 printf(1) formats, %b means to expand backslash escape sequences in the corresponding argument, and %q @@ -49,12 +49,6 @@ $END # define INT_MIN (-2147483647-1) #endif -#if defined (PREFER_STDARG) -# include -#else -# include -#endif - #include #include @@ -70,10 +64,6 @@ $END #include "bashgetopt.h" #include "common.h" -#if defined (PRI_MACROS_BROKEN) -# undef PRIdMAX -#endif - #if !defined (PRIdMAX) # if HAVE_LONG_LONG # define PRIdMAX "lld" @@ -101,7 +91,6 @@ extern int errno; do { \ char *b = 0; \ int nw; \ - clearerr (stdout); \ if (have_fieldwidth && have_precision) \ nw = asprintf(&b, f, fieldwidth, precision, func); \ else if (have_fieldwidth) \ @@ -117,12 +106,6 @@ extern int errno; (void)vbadd (b, nw); \ else \ (void)fputs (b, stdout); \ - if (ferror (stdout)) \ - { \ - sh_wrerror (); \ - clearerr (stdout); \ - return (EXECUTION_FAILURE); \ - } \ free (b); \ } \ } while (0) @@ -149,11 +132,6 @@ extern int errno; vbuf = 0; \ } \ fflush (stdout); \ - if (ferror (stdout)) \ - { \ - clearerr (stdout); \ - return (EXECUTION_FAILURE); \ - } \ return (value); \ } \ while (0) @@ -161,10 +139,6 @@ extern int errno; #define SKIP1 "#'-+ 0" #define LENMODS "hjlLtz" -#ifndef HAVE_ASPRINTF -extern int asprintf __P((char **, const char *, ...)) __attribute__((__format__ (printf, 2, 3))); -#endif - static void printf_erange __P((char *)); static int printstr __P((char *, char *, int, int, int)); static int tescape __P((char *, char *, int *)); @@ -433,9 +407,7 @@ printf_builtin (list) r = 0; p = getstr (); - if (p && *p == 0) /* XXX - getstr never returns null */ - xp = savestring ("''"); - else if (ansic_shouldquote (p)) + if (ansic_shouldquote (p)) xp = ansic_quote (p, 0, (int *)0); else xp = sh_backslash_quote (p); @@ -554,7 +526,7 @@ static void printf_erange (s) char *s; { - builtin_error (_("warning: %s: %s"), s, strerror(ERANGE)); + builtin_error ("warning: %s: %s", s, strerror(ERANGE)); } /* We duplicate a lot of what printf(3) does here. */ @@ -844,7 +816,7 @@ vbadd (buf, blen) #ifdef DEBUG if (strlen (vbuf) != vblen) - internal_error ("printf:vbadd: vblen (%d) != strlen (vbuf) (%d)", vblen, (int)strlen (vbuf)); + internal_error ("printf:vbadd: vblen (%d) != strlen (vbuf) (%d)", vblen, strlen (vbuf)); #endif return vbuf; diff --git a/builtins/pushd.def b/builtins/pushd.def index 86f0b9459..86c0bddb5 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-2006 Free Software Foundation, Inc. +Copyright (C) 1987-2004 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -24,14 +24,11 @@ $PRODUCES pushd.c $BUILTIN pushd $FUNCTION pushd_builtin $DEPENDS_ON PUSHD_AND_POPD -$SHORT_DOC pushd [-n] [+N | -N | dir] +$SHORT_DOC pushd [dir | +N | -N] [-n] 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. --n Suppresses the normal change of directory when adding directories - to the stack, so only the stack is manipulated. - +N Rotates the stack so that the Nth directory (counting from the left of the list shown by `dirs', starting with zero) is at the top. @@ -40,7 +37,10 @@ directory. With no arguments, exchanges the top two directories. from the right of the list shown by `dirs', starting with zero) is at the top. -dir Adds DIR to the directory stack at the top, making it the +-n suppress the normal change of directory when adding directories + to the stack, so only the stack is manipulated. + +dir adds DIR to the directory stack at the top, making it the new current working directory. You can see the directory stack with the `dirs' command. @@ -49,22 +49,22 @@ $END $BUILTIN popd $FUNCTION popd_builtin $DEPENDS_ON PUSHD_AND_POPD -$SHORT_DOC popd [-n] [+N | -N] +$SHORT_DOC popd [+N | -N] [-n] Removes entries from the directory stack. With no arguments, removes the top directory from the stack, and cd's to the new top directory. --n Suppresses the normal change of directory when removing directories - from the stack, so only the stack is manipulated. - -+N Removes the Nth entry counting from the left of the list ++N removes the Nth entry counting from the left of the list shown by `dirs', starting with zero. For example: `popd +0' removes the first directory, `popd +1' the second. --N Removes the Nth entry counting from the right of the list +-N removes the Nth entry counting from the right of the list shown by `dirs', starting with zero. For example: `popd -0' removes the last directory, `popd -1' the next to last. +-n suppress the normal change of directory when removing directories + from the stack, so only the stack is manipulated. + You can see the directory stack with the `dirs' command. $END @@ -76,18 +76,18 @@ Display the list of currently remembered directories. Directories find their way onto the list with the `pushd' command; you can get back up through the list with the `popd' command. -The -c flag clears the directory stack by deleting all of the elements. The -l flag specifies that `dirs' should not print shorthand versions of directories which are relative to your home directory. This means -that `~/bin' might be displayed as `/homes/bfox/bin'. The -p flag -causes `dirs' to print the directory stack with one entry per line. -The -v flag does the same thing, prefixing each directory name with its -position in the stack. +that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag +causes `dirs' to print the directory stack with one entry per line, +prepending the directory name with its position in the stack. The -p +flag does the same thing, but the stack position is not prepended. +The -c flag clears the directory stack by deleting all of the elements. -+N Displays the Nth entry counting from the left of the list shown by ++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 +-N displays the Nth entry counting from the right of the list shown by dirs when invoked without options, starting with zero. $END @@ -483,9 +483,9 @@ pushd_error (offset, arg) char *arg; { if (offset == 0) - builtin_error (_("directory stack empty")); + builtin_error ("directory stack empty"); else - sh_erange (arg, _("directory stack index")); + sh_erange (arg, "directory stack index"); } static void @@ -660,66 +660,66 @@ get_directory_stack (flags) #ifdef LOADABLE_BUILTIN char * const dirs_doc[] = { -N_("Display the list of currently remembered directories. Directories\n\ - find their way onto the list with the `pushd' command; you can get\n\ - back up through the list with the `popd' command.\n\ - \n\ - The -c flag clears the directory stack by deleting all of the elements.\n\ - The -l flag specifies that `dirs' should not print shorthand versions\n\ - of directories which are relative to your home directory. This means\n\ - that `~/bin' might be displayed as `/homes/bfox/bin'. The -p flag\n\ - causes `dirs' to print the directory stack with one entry per line.\n\ - The -v flag does the same thing, prefixing each directory name with its\n\ - position in the stack.\n\ - \n\ - +N Displays the Nth entry counting from the left of the list shown by\n\ - dirs when invoked without options, starting with zero.\n\ - \n\ - -N Displays the Nth entry counting from the right of the list shown by\n\ - dirs when invoked without options, starting with zero."), + N_("Display the list of currently remembered directories. Directories"), + N_("find their way onto the list with the `pushd' command; you can get"), + N_("back up through the list with the `popd' command."), + N_(" "), + N_("The -l flag specifies that `dirs' should not print shorthand versions"), + N_("of directories which are relative to your home directory. This means"), + N_("that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag"), + N_("causes `dirs' to print the directory stack with one entry per line,"), + N_("prepending the directory name with its position in the stack. The -p"), + N_("flag does the same thing, but the stack position is not prepended."), + N_("The -c flag clears the directory stack by deleting all of the elements."), + N_(" "), + N_("+N displays the Nth entry counting from the left of the list shown by"), + N_(" dirs when invoked without options, starting with zero."), + N_(" "), + N_("-N displays the Nth entry counting from the right of the list shown by"), + N_(" dirs when invoked without options, starting with zero."), (char *)NULL }; char * const pushd_doc[] = { -N_("Adds a directory to the top of the directory stack, or rotates\n\ - the stack, making the new top of the stack the current working\n\ - directory. With no arguments, exchanges the top two directories.\n\ - \n\ - -n Suppresses the normal change of directory when adding directories\n\ - to the stack, so only the stack is manipulated.\n\ - \n\ - +N Rotates the stack so that the Nth directory (counting\n\ - from the left of the list shown by `dirs', starting with\n\ - zero) is at the top.\n\ - \n\ - -N Rotates the stack so that the Nth directory (counting\n\ - from the right of the list shown by `dirs', starting with\n\ - zero) is at the top.\n\ - \n\ - dir Adds DIR to the directory stack at the top, making it the\n\ - new current working directory.\n\ - \n\ - You can see the directory stack with the `dirs' command."), + N_("Adds a directory to the top of the directory stack, or rotates"), + N_("the stack, making the new top of the stack the current working"), + N_("directory. With no arguments, exchanges the top two directories."), + N_(" "), + N_("+N Rotates the stack so that the Nth directory (counting"), + N_(" from the left of the list shown by `dirs', starting with"), + N_(" zero) is at the top."), + N_(" "), + N_("-N Rotates the stack so that the Nth directory (counting"), + N_(" from the right of the list shown by `dirs', starting with"), + N_(" zero) is at the top."), + N_(" "), + N_("-n suppress the normal change of directory when adding directories"), + N_(" to the stack, so only the stack is manipulated."), + N_(" "), + N_("dir adds DIR to the directory stack at the top, making it the"), + N_(" new current working directory."), + N_(" "), + N_("You can see the directory stack with the `dirs' command."), (char *)NULL }; char * const popd_doc[] = { -N_("Removes entries from the directory stack. With no arguments,\n\ - removes the top directory from the stack, and cd's to the new\n\ - top directory.\n\ - \n\ - -n Suppresses the normal change of directory when removing directories\n\ - from the stack, so only the stack is manipulated.\n\ - \n\ - +N Removes the Nth entry counting from the left of the list\n\ - shown by `dirs', starting with zero. For example: `popd +0'\n\ - removes the first directory, `popd +1' the second.\n\ - \n\ - -N Removes the Nth entry counting from the right of the list\n\ - shown by `dirs', starting with zero. For example: `popd -0'\n\ - removes the last directory, `popd -1' the next to last.\n\ - \n\ - You can see the directory stack with the `dirs' command."), + N_("Removes entries from the directory stack. With no arguments,"), + N_("removes the top directory from the stack, and cd's to the new"), + N_("top directory."), + N_(" "), + N_("+N removes the Nth entry counting from the left of the list"), + N_(" shown by `dirs', starting with zero. For example: `popd +0'"), + N_(" removes the first directory, `popd +1' the second."), + N_(" "), + N_("-N removes the Nth entry counting from the right of the list"), + N_(" shown by `dirs', starting with zero. For example: `popd -0'"), + N_(" removes the last directory, `popd -1' the next to last."), + N_(" "), + N_("-n suppress the normal change of directory when removing directories"), + N_(" from the stack, so only the stack is manipulated."), + N_(" "), + N_("You can see the directory stack with the `dirs' command."), (char *)NULL }; diff --git a/builtins/read.def b/builtins/read.def index d6d4c4dae..e844906c1 100644 --- a/builtins/read.def +++ b/builtins/read.def @@ -23,7 +23,7 @@ $PRODUCES read.c $BUILTIN read $FUNCTION read_builtin -$SHORT_DOC read [-ers] [-a array] [-d delim] [-n nchars] [-p prompt] [-t timeout] [-u fd] [name ...] +$SHORT_DOC read [-ers] [-u fd] [-t timeout] [-p prompt] [-a array] [-n nchars] [-d delim] [name ...] One line is read from the standard input, or from file descriptor FD if the -u option is supplied, and the first word is assigned to the first NAME, the second word to the second NAME, and so on, with leftover words assigned @@ -329,10 +329,8 @@ read_builtin (list) } old_alrm = set_signal_handler (SIGALRM, sigalrm); add_unwind_protect (reset_alarm, (char *)NULL); -#if defined (READLINE) if (edit) add_unwind_protect (reset_attempted_completion_function, (char *)NULL); -#endif alarm (tmout); } @@ -534,10 +532,7 @@ add_char: alist = list_string (input_string, ifs_chars, 0); if (alist) { - if (saw_escape) - dequote_list (alist); - else - word_list_remove_quoted_nulls (alist); + word_list_remove_quoted_nulls (alist); assign_array_var_from_word_list (var, alist, 0); dispose_words (alist); } diff --git a/builtins/reserved.def b/builtins/reserved.def index 8b598b046..e968ec7cf 100644 --- a/builtins/reserved.def +++ b/builtins/reserved.def @@ -57,12 +57,12 @@ until a break command is executed. $END $BUILTIN time -$SHORT_DOC time [-p] pipeline +$SHORT_DOC time [-p] PIPELINE Execute PIPELINE and print a summary of the real time, user CPU time, and system CPU time spent executing PIPELINE when it terminates. The return status is the return status of PIPELINE. The `-p' option -prints the timing summary in the portable Posix format; otherwise, the -the value of the TIMEFORMAT variable is used as the output format. +prints the timing summary in a slightly different format. This uses +the value of the TIMEFORMAT variable as the output format. $END $BUILTIN case @@ -110,7 +110,7 @@ $END $BUILTIN % $DOCNAME fg_percent -$SHORT_DOC job_spec [&] +$SHORT_DOC JOB_SPEC [&] Equivalent to the JOB_SPEC argument to the `fg' command. Resume a stopped or background job. JOB_SPEC can specify either a job name or a job number. Following JOB_SPEC with a `&' places the job in @@ -145,7 +145,7 @@ $END $BUILTIN variables $DOCNAME variable_help -$SHORT_DOC variables - Names and meanings of some shell variables +$SHORT_DOC variables - Some variable names and meanings BASH_VERSION Version information for this Bash. CDPATH A colon-separated list of directories to search for directries given as arguments to `cd'. diff --git a/builtins/set.def b/builtins/set.def index 9de094c25..3bb327040 100644 --- a/builtins/set.def +++ b/builtins/set.def @@ -60,10 +60,7 @@ extern int no_line_editing; $BUILTIN set $FUNCTION set_builtin -$SHORT_DOC set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...] -Change the value of shell attributes and positional parameters, or display -the names and values of shell variables. Available -shell options are: +$SHORT_DOC set [--abefhkmnptuvxBCHP] [-o option] [arg ...] -a Mark variables which are modified or created for export. -b Notify of job termination immediately. -e Exit immediately if a command exits with a non-zero status. @@ -164,13 +161,13 @@ static int get_edit_mode __P((char *)); static int bash_set_history __P((int, char *)); #endif -static const char * const on = "on"; -static const char * const off = "off"; +static char *on = "on"; +static char *off = "off"; /* A struct used to match long options for set -o to the corresponding option letter or internal variable. The functions can be called to dynamically generate values. */ -const struct { +struct { char *name; int letter; int *variable; @@ -581,6 +578,7 @@ set_builtin (list) WORD_LIST *list; { int on_or_off, flag_name, force_assignment, opts_changed; + WORD_LIST *l; register char *arg; char s[3]; diff --git a/builtins/setattr.def b/builtins/setattr.def index d4fe9871e..28102bc47 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-2006 Free Software Foundation, Inc. +Copyright (C) 1987-2004 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -52,7 +52,7 @@ extern int declare_builtin __P((WORD_LIST *)); $BUILTIN export $FUNCTION export_builtin -$SHORT_DOC export [-fn] [name[=value] ...] or export -p +$SHORT_DOC export [-nf] [name[=value] ...] or export -p NAMEs are marked for automatic export to the environment of subsequently executed commands. If the -f option is given, the NAMEs refer to functions. If no NAMEs are given, or if `-p' diff --git a/builtins/shopt.def b/builtins/shopt.def index 8055473e5..ae100ace4 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-2006 Free Software Foundation, Inc. +Copyright (C) 1994-2005 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -23,7 +23,7 @@ $PRODUCES shopt.c $BUILTIN shopt $FUNCTION shopt_builtin -$SHORT_DOC shopt [-pqsu] [-o] [optname ...] +$SHORT_DOC shopt [-pqsu] [-o long-option] optname [optname...] Toggle the values of variables controlling optional behavior. The -s flag means to enable (set) each OPTNAME; the -u flag unsets each OPTNAME. The -q flag suppresses output; the exit @@ -68,8 +68,6 @@ extern int glob_ignore_case, match_ignore_case; extern int hup_on_exit; extern int xpg_echo; extern int gnu_error_format; -extern int check_jobs_at_exit; -extern int autocd; #if defined (EXTENDED_GLOB) extern int extended_glob; @@ -116,11 +114,9 @@ static struct { int *value; shopt_set_func_t *set_func; } shopt_vars[] = { - { "autocd", &autocd, (shopt_set_func_t *)NULL }, { "cdable_vars", &cdable_vars, (shopt_set_func_t *)NULL }, { "cdspell", &cdspelling, (shopt_set_func_t *)NULL }, { "checkhash", &check_hashed_filenames, (shopt_set_func_t *)NULL }, - { "checkjobs", &check_jobs_at_exit, (shopt_set_func_t *)NULL }, { "checkwinsize", &check_window_size, (shopt_set_func_t *)NULL }, #if defined (HISTORY) { "cmdhist", &command_oriented_history, (shopt_set_func_t *)NULL }, @@ -174,8 +170,8 @@ static struct { { (char *)0, (int *)0, (shopt_set_func_t *)NULL } }; -static const char * const on = "on"; -static const char * const off = "off"; +static char *on = "on"; +static char *off = "off"; static int find_shopt __P((char *)); static int toggle_shopts __P((int, WORD_LIST *, int)); diff --git a/builtins/source.def b/builtins/source.def index 0a8eb0ffa..f9f812f89 100644 --- a/builtins/source.def +++ b/builtins/source.def @@ -38,6 +38,7 @@ in $PATH are used to find the directory containing FILENAME. If any ARGUMENTS are supplied, they become the positional parameters when FILENAME is executed. $END +/* source.c - Implements the `.' and `source' builtins. */ #include @@ -67,7 +68,9 @@ $END extern int errno; #endif /* !errno */ -static void maybe_pop_dollar_vars __P((void)); +#if defined (RESTRICTED_SHELL) +extern int restricted; +#endif /* If non-zero, `.' uses $PATH to look up the script to be sourced. */ int source_uses_path = 1; diff --git a/builtins/suspend.def b/builtins/suspend.def index ea86ae22c..d616d775b 100644 --- a/builtins/suspend.def +++ b/builtins/suspend.def @@ -48,15 +48,13 @@ $END #include "common.h" #include "bashgetopt.h" -static sighandler suspend_continue __P((int)); - static SigHandler *old_cont; #if 0 static SigHandler *old_stop; #endif /* Continue handler. */ -static sighandler +sighandler suspend_continue (sig) int sig; { diff --git a/builtins/test.def b/builtins/test.def index f74cb0aa4..e51d00b7a 100644 --- a/builtins/test.def +++ b/builtins/test.def @@ -1,7 +1,7 @@ This file is test.def, from which is created test.c. It implements the builtin "test" in Bash. -Copyright (C) 1987-2006 Free Software Foundation, Inc. +Copyright (C) 1987-2002 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -109,7 +109,6 @@ $END #endif #include "../bashansi.h" -#include "../bashintl.h" #include "../shell.h" #include "../test.h" @@ -132,7 +131,7 @@ test_builtin (list) { if (this_command_name[0] == '[' && !this_command_name[1]) { - builtin_error (_("missing `]'")); + builtin_error ("missing `]'"); return (EX_BADUSAGE); } diff --git a/builtins/times.def b/builtins/times.def index db54558d0..22304fc2f 100644 --- a/builtins/times.def +++ b/builtins/times.def @@ -24,8 +24,8 @@ $PRODUCES times.c $BUILTIN times $FUNCTION times_builtin $SHORT_DOC times -Print the accumulated user and system times for the shell and all of its -child processes. +Print the accumulated user and system times for processes run from +the shell. $END #include diff --git a/builtins/trap.def b/builtins/trap.def index 9e7d76361..426833a15 100644 --- a/builtins/trap.def +++ b/builtins/trap.def @@ -23,14 +23,14 @@ $PRODUCES trap.c $BUILTIN trap $FUNCTION trap_builtin -$SHORT_DOC trap [-lp] [[arg] signal_spec ...] +$SHORT_DOC trap [-lp] [arg signal_spec ...] The command ARG is to be read and executed when the shell receives signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC is supplied) or `-', each specified signal is reset to its original value. If ARG is the null string each SIGNAL_SPEC is ignored by the shell and by the commands it invokes. If a SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from the shell. If a SIGNAL_SPEC -is DEBUG, ARG is executed before every simple command. If the`-p' option +is DEBUG, ARG is executed after every simple command. If the`-p' option is supplied then the trap commands associated with each SIGNAL_SPEC are displayed. If no arguments are supplied or if only `-p' is given, trap prints the list of commands associated with each signal. Each SIGNAL_SPEC @@ -87,7 +87,7 @@ int trap_builtin (list) WORD_LIST *list; { - int list_signal_names, display, result, opt; + int list_signal_names, display, result, opt, first_signal; list_signal_names = display = 0; result = EXECUTION_SUCCESS; diff --git a/builtins/type.def b/builtins/type.def index 39a43162b..d03ccb2d9 100644 --- a/builtins/type.def +++ b/builtins/type.def @@ -390,7 +390,7 @@ describe_command (command, dflags) if (dflags & CDESC_TYPE) puts ("file"); else if (dflags & CDESC_SHORTDESC) - printf (_("%s is %s\n"), command, full_path); + printf ("%s is %s\n", command, full_path); else if (dflags & (CDESC_REUSABLE|CDESC_PATH_ONLY)) printf ("%s\n", full_path); diff --git a/builtins/ulimit.def b/builtins/ulimit.def index 2307c4650..17898699f 100644 --- a/builtins/ulimit.def +++ b/builtins/ulimit.def @@ -1,7 +1,7 @@ This file is ulimit.def, from which is created ulimit.c. It implements the builtin "ulimit" in Bash. -Copyright (C) 1987-2006 Free Software Foundation, Inc. +Copyright (C) 1987-2005 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -24,7 +24,7 @@ $PRODUCES ulimit.c $BUILTIN ulimit $FUNCTION ulimit_builtin $DEPENDS_ON !_MINIX -$SHORT_DOC ulimit [-SHacdefilmnpqrstuvx] [limit] +$SHORT_DOC ulimit [-SHacdfilmnpqstuvx] [limit] Ulimit provides control over the resources available to processes started by the shell, on systems that allow such control. If an option is given, it is interpreted as follows: @@ -35,7 +35,7 @@ option is given, it is interpreted as follows: -c the maximum size of core files created -d the maximum size of a process's data segment -e the maximum scheduling priority (`nice') - -f the maximum size of files written by the shell and its children + -f the maximum size of files created by the shell -i the maximum number of pending signals -l the maximum size a process may lock into memory -m the maximum resident set size @@ -193,8 +193,8 @@ typedef struct { int option; /* The ulimit option for this limit. */ int parameter; /* Parameter to pass to get_limit (). */ int block_factor; /* Blocking factor for specific limit. */ - const char * const description; /* Descriptive string to output. */ - const char * const units; /* scale */ + char *description; /* Descriptive string to output. */ + char *units; /* scale */ } RESOURCE_LIMITS; static RESOURCE_LIMITS limits[] = { @@ -430,7 +430,7 @@ ulimit_internal (cmd, cmdarg, mode, multiple) if ((real_limit / block_factor) != limit) { - sh_erange (cmdarg, _("limit")); + sh_erange (cmdarg, "limit"); return (EXECUTION_FAILURE); } } @@ -740,7 +740,7 @@ set_all_limits (mode, newlim) for (retval = i = 0; limits[i].option > 0; i++) if (set_limit (i, newlim, mode) < 0) { - builtin_error (_("%s: cannot modify limit: %s"), limits[i].description, + builtin_error ("%s: cannot modify limit: %s", limits[i].description, strerror (errno)); retval = 1; } diff --git a/builtins/wait.def b/builtins/wait.def index 94e525f54..22a92bea0 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-2006 Free Software Foundation, Inc. +Copyright (C) 1987-2005 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -37,7 +37,8 @@ $DEPENDS_ON !JOB_CONTROL $SHORT_DOC wait [n] Wait for the specified process and report its termination status. If N is not given, all currently active child processes are waited for, -and the return code is zero. N must be a process ID. +and the return code is zero. N is a process ID; if it is not given, +all child processes of the shell are waited for. $END #include @@ -58,6 +59,7 @@ $END #include "common.h" #include "bashgetopt.h" +extern int interrupt_immediately; extern int wait_signal_received; procenv_t wait_intr_buf; diff --git a/command.h b/command.h index 37cfcb6c9..75e4990d0 100644 --- a/command.h +++ b/command.h @@ -88,7 +88,6 @@ enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select, #define W_HASQUOTEDNULL 0x040000 /* word contains a quoted null character */ #define W_DQUOTE 0x080000 /* word should be treated as if double-quoted */ #define W_NOPROCSUB 0x100000 /* don't perform process substitution */ -#define W_HASCTLESC 0x200000 /* word contains literal CTLESC characters */ /* Possible values for subshell_environment */ #define SUBSHELL_ASYNC 0x01 /* subshell caused by `command &' */ diff --git a/config-bot.h b/config-bot.h index 4efa63c59..d4eceabe5 100644 --- a/config-bot.h +++ b/config-bot.h @@ -1,7 +1,7 @@ /* config-bot.h */ /* modify settings or make new ones based on what autoconf tells us. */ -/* Copyright (C) 1989-2007 Free Software Foundation, Inc. +/* Copyright (C) 1989-2002 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -70,11 +70,9 @@ # define TERMIOS_MISSING #endif -/* If we have a getcwd(3), but one that does not dynamically allocate memory, - #undef HAVE_GETCWD so the replacement in getcwd.c will be built. We do - not do this on Solaris, because their implementation of loopback mounts - breaks the traditional file system assumptions that getcwd uses. */ -#if defined (HAVE_GETCWD) && defined (GETCWD_BROKEN) && !defined (SOLARIS) +/* If we have a getcwd(3), but it calls popen(), #undef HAVE_GETCWD so + the replacement in getcwd.c will be built. */ +#if defined (HAVE_GETCWD) && defined (GETCWD_BROKEN) # undef HAVE_GETCWD #endif @@ -132,22 +130,10 @@ /* For platforms which support the ISO C amendement 1 functionality we support user defined character classes. */ /* Solaris 2.5 has a bug: must be included before . */ -#if defined (HAVE_WCTYPE_H) && defined (HAVE_WCHAR_H) && defined (HAVE_LOCALE_H) +#if defined (HAVE_WCTYPE_H) && defined (HAVE_WCHAR_H) # include # include -# if defined (HAVE_ISWCTYPE) && \ - defined (HAVE_ISWLOWER) && \ - defined (HAVE_ISWUPPER) && \ - defined (HAVE_MBSRTOWCS) && \ - defined (HAVE_MBRTOWC) && \ - defined (HAVE_MBRLEN) && \ - defined (HAVE_TOWLOWER) && \ - defined (HAVE_TOWUPPER) && \ - defined (HAVE_WCHAR_T) && \ - defined (HAVE_WCTYPE_T) && \ - defined (HAVE_WINT_T) && \ - defined (HAVE_WCWIDTH) && \ - defined (HAVE_WCTYPE) +# if defined (HAVE_MBSRTOWCS) && defined (HAVE_MBRTOWC) && defined (HAVE_MBRLEN) && defined (HAVE_WCWIDTH) && defined (HAVE_WCTYPE) /* system is supposed to support XPG5 */ # define HANDLE_MULTIBYTE 1 # endif diff --git a/config.h.in b/config.h.in index c418a77a7..4ce6d8c5a 100644 --- a/config.h.in +++ b/config.h.in @@ -1,6 +1,6 @@ /* config.h -- Configuration file for bash. */ -/* Copyright (C) 1987-2006 Free Software Foundation, Inc. +/* Copyright (C) 1987-2004 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -305,20 +305,9 @@ /* Define to `unsigned int' if doesn't define. */ #undef socklen_t -#undef HAVE_MBSTATE_T - /* Define if you have quad_t in . */ #undef HAVE_QUAD_T -/* Define if you have wchar_t in . */ -#undef HAVE_WCHAR_T - -/* Define if you have wctype_t in . */ -#undef HAVE_WCTYPE_T - -/* Define if you have wint_t in . */ -#undef HAVE_WINT_T - #undef RLIMTYPE /* Define to the type of elements in the array set by `getgroups'. @@ -413,10 +402,10 @@ #undef HAVE_DECL_STRTOLD -#undef PRI_MACROS_BROKEN - #undef STRTOLD_BROKEN +#undef HAVE_MBSTATE_T + /* Define if WCONTINUED is defined in system headers, but rejected by waitpid */ #undef WCONTINUED_BROKEN @@ -594,27 +583,15 @@ /* Define if you have the isgraph function. */ #undef HAVE_ISGRAPH -/* Define if you have the isinf function in libc */ +/* Define if you have the isint 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 /* Define if you have the isspace function. */ #undef HAVE_ISSPACE -/* Define if you have the iswctype function. */ -#undef HAVE_ISWCTYPE - -/* Define if you have the iswlower function. */ -#undef HAVE_ISWLOWER - -/* Define if you have the iswupper function. */ -#undef HAVE_ISWUPPER - /* Define if you have the isxdigit function. */ #undef HAVE_ISXDIGIT @@ -763,12 +740,6 @@ /* Define if you have the times function. */ #undef HAVE_TIMES -/* Define if you have the towlower function. */ -#undef HAVE_TOWLOWER - -/* Define if you have the towupper function. */ -#undef HAVE_TOWUPPER - /* Define if you have the ttyname function. */ #undef HAVE_TTYNAME @@ -799,15 +770,12 @@ /* Define if you have the wait3 function. */ #undef HAVE_WAIT3 -/* Define if you have the wcrtomb function. */ -#undef HAVE_WCRTOMB - -/* Define if you have the wcscoll function. */ -#undef HAVE_WCSCOLL - /* Define if you have the wcsdup function. */ #undef HAVE_WCSDUP +/* Define if you have the wctomb function. */ +#undef HAVE_WCTOMB + /* Define if you have the wctype function. */ #undef HAVE_WCTYPE @@ -1008,9 +976,6 @@ /* Define if you have the `dcgettext' function. */ #undef HAVE_DCGETTEXT -/* Define if you have the `localeconv' function. */ -#undef HAVE_LOCALECONV - /* Define if your system has a working `malloc' function. */ /* #undef HAVE_MALLOC */ diff --git a/configure b/configure index 8f539eb16..a227da7f4 100755 --- a/configure +++ b/configure @@ -1,12 +1,11 @@ #! /bin/sh -# From configure.in for Bash 3.2, version 3.194. +# From configure.in for Bash 3.2, version 3.187. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.60 for bash 3.2-maint. +# Generated by GNU Autoconf 2.59 for bash 3.2-devel. # # Report bugs to . # -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# Copyright (C) 2003 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## @@ -20,35 +19,11 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then # Zsh 3.x and 4.x performs 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 +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix fi -BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh - -# 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 - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset @@ -57,43 +32,8 @@ else fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -as_nl=' -' -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -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 -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (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 -done +$as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' @@ -107,19 +47,18 @@ do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + $as_unset $as_var fi done # Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then +if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false @@ -127,386 +66,157 @@ fi # Name of the executable. -as_me=`$as_basename -- "$0" || +as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# CDPATH. -$as_unset CDPATH - - -if test "x$CONFIG_SHELL" = x; then - if (eval ":") 2>/dev/null; then - as_have_required=yes -else - as_have_required=no -fi - - 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 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` -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 +# PATH needs CR, and LINENO needs CR and PATH. +# 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 as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh 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 + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + 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 -( - 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= + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /usr/bin/posix$PATH_SEPARATOR/bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +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 + 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 - - - 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 -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs 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 -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -: -_ASEOF -}; then - CONFIG_SHELL=$as_shell - as_have_required=yes - if { "$as_shell" 2> /dev/null <<\_ASEOF -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs 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 -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -: -(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 autoconf@gnu.org about your system, - echo including any error possibly output before this - echo message -} - - - + if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac # 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. + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, 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 | + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop - s/-\n.*// + s,-$,, + s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && - chmod +x "$as_me.lineno" || + chmod +x $as_me.lineno || { 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" + # original and so on. Autoconf is especially sensible 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';; +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then +if expr a : '\(a\)' >/dev/null 2>&1; 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 -fi echo >conf$$.file 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 || + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null +rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: @@ -515,19 +225,7 @@ else as_mkdir_p=false fi -# Find out whether ``test -x'' works. Don't use a zero-byte file, as -# systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - as_executable_p="test -x" -else - as_executable_p=: -fi -rm -f conf$$.file +as_executable_p="test -f" # 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'" @@ -536,32 +234,44 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH -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` +exec 6>&1 + # # 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} +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + # Identity of this package. PACKAGE_NAME='bash' PACKAGE_TARNAME='bash' -PACKAGE_VERSION='3.2-maint' -PACKAGE_STRING='bash 3.2-maint' +PACKAGE_VERSION='3.2-devel' +PACKAGE_STRING='bash 3.2-devel' PACKAGE_BUGREPORT='bug-bash@gnu.org' ac_unique_file="shell.h" @@ -593,178 +303,17 @@ ac_includes_default="\ #endif #if HAVE_INTTYPES_H # include -#endif -#if HAVE_STDINT_H -# include +#else +# if HAVE_STDINT_H +# include +# endif #endif #if HAVE_UNISTD_H # include #endif" -ac_subst_vars='SHELL -PATH_SEPARATOR -PACKAGE_NAME -PACKAGE_TARNAME -PACKAGE_VERSION -PACKAGE_STRING -PACKAGE_BUGREPORT -exec_prefix -prefix -program_transform_name -bindir -sbindir -libexecdir -datarootdir -datadir -sysconfdir -sharedstatedir -localstatedir -includedir -oldincludedir -docdir -infodir -htmldir -dvidir -pdfdir -psdir -libdir -localedir -mandir -DEFS -ECHO_C -ECHO_N -ECHO_T -LIBS -build_alias -host_alias -target_alias -build -build_cpu -build_vendor -build_os -host -host_cpu -host_vendor -host_os -EMACS -lispdir -DEBUGGER_START_FILE -TESTSCRIPT -PURIFY -MALLOC_TARGET -MALLOC_SRC -MALLOC_LIB -MALLOC_LIBRARY -MALLOC_LDFLAGS -MALLOC_DEP -HELPDIR -HELPDIRDEFINE -HELPINSTALL -HELPSTRINGS -CC -CFLAGS -LDFLAGS -CPPFLAGS -ac_ct_CC -EXEEXT -OBJEXT -CPP -GREP -EGREP -CROSS_COMPILE -SIGNAMES_H -SIGNAMES_O -CC_FOR_BUILD -STATIC_LD -CFLAGS_FOR_BUILD -CPPFLAGS_FOR_BUILD -LDFLAGS_FOR_BUILD -RL_VERSION -RL_MAJOR -RL_MINOR -READLINE_LIB -READLINE_DEP -RL_LIBDIR -RL_INCLUDEDIR -RL_INCLUDE -HISTORY_LIB -HISTORY_DEP -HIST_LIBDIR -TILDE_LIB -INSTALL_PROGRAM -INSTALL_SCRIPT -INSTALL_DATA -AR -RANLIB -YACC -YFLAGS -SET_MAKE -MAKE_SHELL -SIZE -MKINSTALLDIRS -USE_NLS -MSGFMT -GMSGFMT -XGETTEXT -MSGMERGE -ALLOCA -GLIBC21 -LIBICONV -LTLIBICONV -INTLBISON -BUILD_INCLUDED_LIBINTL -USE_INCLUDED_LIBINTL -CATOBJEXT -DATADIRNAME -INSTOBJEXT -GENCAT -INTLOBJS -INTL_LIBTOOL_SUFFIX_PREFIX -INTLLIBS -LIBINTL -LTLIBINTL -POSUB -LIBOBJS -INTL_DEP -INTL_INC -LIBINTL_H -SIGLIST_O -TERMCAP_LIB -TERMCAP_DEP -JOBS_O -SHOBJ_CC -SHOBJ_CFLAGS -SHOBJ_LD -SHOBJ_LDFLAGS -SHOBJ_XLDFLAGS -SHOBJ_LIBS -SHOBJ_STATUS -PROFILE_FLAGS -incdir -BUILD_DIR -ARFLAGS -BASHVERS -RELSTATUS -DEBUG -MALLOC_DEBUG -LOCAL_LIBS -LOCAL_CFLAGS -LOCAL_LDFLAGS -LOCAL_DEFS -LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os EMACS lispdir DEBUGGER_START_FILE TESTSCRIPT PURIFY MALLOC_TARGET MALLOC_SRC MALLOC_LIB MALLOC_LIBRARY MALLOC_LDFLAGS MALLOC_DEP htmldir HELPDIR HELPDIRDEFINE HELPINSTALL HELPSTRINGS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP CROSS_COMPILE SIGNAMES_H SIGNAMES_O CC_FOR_BUILD STATIC_LD CFLAGS_FOR_BUILD CPPFLAGS_FOR_BUILD LDFLAGS_FOR_BUILD RL_VERSION RL_MAJOR RL_MINOR READLINE_LIB READLINE_DEP RL_LIBDIR RL_INCLUDEDIR RL_INCLUDE HISTORY_LIB HISTORY_DEP HIST_LIBDIR TILDE_LIB INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA AR RANLIB ac_ct_RANLIB YACC SET_MAKE MAKE_SHELL SIZE MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE ALLOCA GLIBC21 LIBICONV LTLIBICONV INTLBISON BUILD_INCLUDED_LIBINTL USE_INCLUDED_LIBINTL CATOBJEXT DATADIRNAME INSTOBJEXT GENCAT INTLOBJS INTL_LIBTOOL_SUFFIX_PREFIX INTLLIBS LIBINTL LTLIBINTL POSUB LIBOBJS INTL_DEP INTL_INC LIBINTL_H SIGLIST_O TERMCAP_LIB TERMCAP_DEP JOBS_O SHOBJ_CC SHOBJ_CFLAGS SHOBJ_LD SHOBJ_LDFLAGS SHOBJ_XLDFLAGS SHOBJ_LIBS SHOBJ_STATUS PROFILE_FLAGS incdir BUILD_DIR ARFLAGS BASHVERS RELSTATUS DEBUG MALLOC_DEBUG LOCAL_LIBS LOCAL_CFLAGS LOCAL_LDFLAGS LOCAL_DEFS LTLIBOBJS' ac_subst_files='' - ac_precious_vars='build_alias -host_alias -target_alias -DEBUGGER_START_FILE -CC -CFLAGS -LDFLAGS -CPPFLAGS -CPP -YACC -YFLAGS' - # Initialize some variables set by options. ac_init_help= @@ -791,48 +340,34 @@ x_libraries=NONE # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' +datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' +infodir='${prefix}/info' +mandir='${prefix}/man' ac_prev= -ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option + eval "$ac_prev=\$ac_option" ac_prev= continue fi - case $ac_option in - *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *) ac_optarg=yes ;; - esac + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` # Accept the important Cygnus configure options, so we can diagnose typos. - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; + case $ac_option in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; @@ -854,18 +389,12 @@ do --config-cache | -C) cache_file=config.cache ;; - -datadir | --datadir | --datadi | --datad) + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) datadir=$ac_optarg ;; - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. @@ -873,17 +402,7 @@ do { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval enable_$ac_feature=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; + eval "enable_$ac_feature=no" ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` @@ -892,7 +411,11 @@ do { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval enable_$ac_feature=\$ac_optarg ;; + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ @@ -919,12 +442,6 @@ do -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; @@ -949,16 +466,13 @@ do | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) @@ -1023,16 +537,6 @@ do | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; @@ -1089,7 +593,11 @@ do { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package| sed 's/-/_/g'` - eval with_$ac_package=\$ac_optarg ;; + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` @@ -1098,7 +606,7 @@ do { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/-/_/g'` - eval with_$ac_package=no ;; + eval "with_$ac_package=no" ;; --x) # Obsolete; use --with-x. @@ -1129,7 +637,8 @@ Try \`$0 --help' for more information." >&2 expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } - eval $ac_envvar=\$ac_optarg + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" export $ac_envvar ;; *) @@ -1149,19 +658,27 @@ if test -n "$ac_prev"; then { (exit 1); exit 1; }; } fi -# Be sure to have absolute directory names. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix do - eval ac_val=\$$ac_var + eval ac_val=$`echo $ac_var` case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; esac - { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; } done # There might be people who depend on the old broken behavior: `$host' @@ -1188,76 +705,78 @@ test -n "$host_alias" && ac_tool_prefix=$host_alias- 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 .` || - { echo "$as_me: error: Working directory cannot be determined" >&2 - { (exit 1); exit 1; }; } -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - { echo "$as_me: error: pwd does not report name of working directory" >&2 - { (exit 1); exit 1; }; } - - # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$0" || + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then + if test ! -r $srcdir/$ac_unique_file; then srcdir=.. fi else ac_srcdir_defaulted=no fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 { (exit 1); exit 1; }; } -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_DEBUGGER_START_FILE_set=${DEBUGGER_START_FILE+set} +ac_env_DEBUGGER_START_FILE_value=$DEBUGGER_START_FILE +ac_cv_env_DEBUGGER_START_FILE_set=${DEBUGGER_START_FILE+set} +ac_cv_env_DEBUGGER_START_FILE_value=$DEBUGGER_START_FILE +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP # # Report the --help message. @@ -1266,7 +785,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 3.2-maint to adapt to many kinds of systems. +\`configure' configures bash 3.2-devel to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1286,6 +805,9 @@ Configuration: -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] +_ACEOF + + cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] @@ -1303,22 +825,15 @@ Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/bash] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] _ACEOF cat <<\_ACEOF @@ -1331,7 +846,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of bash 3.2-maint:";; + short | recursive ) echo "Configuration of bash 3.2-devel:";; esac cat <<\_ACEOF @@ -1421,100 +936,129 @@ Some influential environment variables: CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory - CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if - you have headers in a nonstandard directory + CPPFLAGS 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'. - 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. Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF -ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. + ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || continue + test -d $ac_dir || continue ac_builddir=. -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) +if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi case $srcdir in - .) # We are building in place. + .) # No --srcdir option. We are building in place. ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } + fi + cd $ac_popdir done fi -test -n "$ac_init_help" && exit $ac_status +test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF -bash configure 3.2-maint -generated by GNU Autoconf 2.60 +bash configure 3.2-devel +generated by GNU Autoconf 2.59 -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +Copyright (C) 2003 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 + exit 0 fi -cat >config.log <<_ACEOF +exec 5>config.log +cat >&5 <<_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 3.2-maint, which was -generated by GNU Autoconf 2.60. Invocation command line was +It was created by bash $as_me 3.2-devel, which was +generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ _ACEOF -exec 5>>config.log { cat <<_ASUNAME ## --------- ## @@ -1533,7 +1077,7 @@ uname -v = `(uname -v) 2>/dev/null || echo unknown` /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` +hostinfo = `(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` @@ -1547,7 +1091,6 @@ do test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done -IFS=$as_save_IFS } >&5 @@ -1569,6 +1112,7 @@ _ACEOF ac_configure_args= ac_configure_args0= ac_configure_args1= +ac_sep= ac_must_keep_next=false for ac_pass in 1 2 do @@ -1579,7 +1123,7 @@ do -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; - *\'*) + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in @@ -1601,7 +1145,9 @@ do -* ) ac_must_keep_next=true ;; esac fi - ac_configure_args="$ac_configure_args '$ac_arg'" + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " ;; esac done @@ -1612,8 +1158,8 @@ $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_ # 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. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { @@ -1626,34 +1172,20 @@ trap 'exit_status=$? _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_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - *) $as_unset $ac_var ;; - esac ;; - esac - done +{ (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; - esac | - sort -) + esac; +} echo cat <<\_ASBOX @@ -1664,28 +1196,22 @@ _ASBOX echo for ac_var in $ac_subst_vars do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - echo "$ac_var='\''$ac_val'\''" + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX -## ------------------- ## -## File substitutions. ## -## ------------------- ## +## ------------- ## +## Output files. ## +## ------------- ## _ASBOX echo for ac_var in $ac_subst_files do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - echo "$ac_var='\''$ac_val'\''" + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo fi @@ -1697,24 +1223,26 @@ _ASBOX ## ----------- ## _ASBOX echo - cat confdefs.h + sed "/^$/d" confdefs.h | sort echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + rm -f core *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status -' 0 + ' 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 # confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h # Predefined preprocessor variables. @@ -1745,17 +1273,14 @@ _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. -if test -n "$CONFIG_SITE"; then - set x "$CONFIG_SITE" -elif test "x$prefix" != xNONE; then - set x "$prefix/share/config.site" "$prefix/etc/config.site" -else - set x "$ac_default_prefix/share/config.site" \ - "$ac_default_prefix/etc/config.site" +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi fi -shift -for ac_site_file -do +for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} @@ -1771,8 +1296,8 @@ if test -r "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; esac fi else @@ -1784,11 +1309,12 @@ fi # 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 +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; 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 + 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,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 @@ -1813,7 +1339,8 @@ echo "$as_me: current value: $ac_new_val" >&2;} # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in - *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in @@ -1830,6 +1357,12 @@ echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start ov { (exit 1); exit 1; }; } 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 + @@ -1854,11 +1387,6 @@ 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 @@ -1866,128 +1394,93 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_aux_dir= -for ac_dir in ./support "$srcdir"/./support; do - if test -f "$ac_dir/install-sh"; then +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 + 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 + 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 - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in ./support \"$srcdir\"/./support" >&5 -echo "$as_me: error: cannot find install-sh or install.sh in ./support \"$srcdir\"/./support" >&2;} + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in ./support $srcdir/./support" >&5 +echo "$as_me: error: cannot find install-sh or install.sh in ./support $srcdir/./support" >&2;} { (exit 1); exit 1; }; } fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. -# 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" + ac_config_headers="$ac_config_headers config.h" BASHVERS=3.2 -RELSTATUS=maint +RELSTATUS=devel case "$RELSTATUS" in -alp*|bet*|dev*|rc*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; +alp*|bet*|dev*|rc*) 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 || - { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 -echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} { (exit 1); exit 1; }; } -{ echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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 && + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 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` || - { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 -echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi -{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 -echo "$as_me: error: invalid value of canonical build" >&2;} - { (exit 1); exit 1; }; };; -esac +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 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 - - -{ echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6; } +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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` || - { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 -echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} { (exit 1); exit 1; }; } -fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 -echo "$as_me: error: invalid value of canonical host" >&2;} - { (exit 1); exit 1; }; };; -esac +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 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 +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` @@ -2033,13 +1526,14 @@ sco3.2v5*|sco3.2v4*) opt_memscramble=no ;; esac -# Check whether --with-lispdir was given. +# Check whether --with-lispdir or --without-lispdir was given. if test "${with_lispdir+set}" = set; then - withval=$with_lispdir; lispdir="$withval" - { echo "$as_me:$LINENO: checking where .elc files should go" >&5 -echo $ECHO_N "checking where .elc files should go... $ECHO_C" >&6; } - { echo "$as_me:$LINENO: result: $lispdir" >&5 -echo "${ECHO_T}$lispdir" >&6; } + withval="$with_lispdir" + lispdir="$withval" + echo "$as_me:$LINENO: checking where .elc files should go" >&5 +echo $ECHO_N "checking where .elc files should go... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $lispdir" >&5 +echo "${ECHO_T}$lispdir" >&6 else # If set to t, that means we are running in a shell under Emacs. @@ -2049,8 +1543,8 @@ else do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_EMACS+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2063,35 +1557,33 @@ 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_EMACS="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi EMACS=$ac_cv_prog_EMACS if test -n "$EMACS"; then - { echo "$as_me:$LINENO: result: $EMACS" >&5 -echo "${ECHO_T}$EMACS" >&6; } + echo "$as_me:$LINENO: result: $EMACS" >&5 +echo "${ECHO_T}$EMACS" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - test -n "$EMACS" && break done test -n "$EMACS" || EMACS="no" if test $EMACS != "no"; then if test x${lispdir+set} != xset; then - { echo "$as_me:$LINENO: checking where .elc files should go" >&5 -echo $ECHO_N "checking where .elc files should go... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking where .elc files should go" >&5 +echo $ECHO_N "checking where .elc files should go... $ECHO_C" >&6 if test "${am_cv_lispdir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2101,60 +1593,59 @@ else fi fi -{ echo "$as_me:$LINENO: result: $am_cv_lispdir" >&5 -echo "${ECHO_T}$am_cv_lispdir" >&6; } +echo "$as_me:$LINENO: result: $am_cv_lispdir" >&5 +echo "${ECHO_T}$am_cv_lispdir" >&6 lispdir="$am_cv_lispdir" fi fi -fi - +fi; -# Check whether --with-afs was given. +# Check whether --with-afs or --without-afs was given. if test "${with_afs+set}" = set; then - withval=$with_afs; opt_afs=$withval -fi + withval="$with_afs" + opt_afs=$withval +fi; - -# Check whether --with-bash-malloc was given. +# Check whether --with-bash-malloc or --without-bash-malloc was given. if test "${with_bash_malloc+set}" = set; then - withval=$with_bash_malloc; opt_bash_malloc=$withval -fi + withval="$with_bash_malloc" + opt_bash_malloc=$withval +fi; - -# Check whether --with-curses was given. +# Check whether --with-curses or --without-curses was given. if test "${with_curses+set}" = set; then - withval=$with_curses; opt_curses=$withval -fi + withval="$with_curses" + opt_curses=$withval +fi; - -# Check whether --with-gnu-malloc was given. +# Check whether --with-gnu-malloc or --without-gnu-malloc was given. if test "${with_gnu_malloc+set}" = set; then - withval=$with_gnu_malloc; opt_bash_malloc=$withval -fi + withval="$with_gnu_malloc" + opt_bash_malloc=$withval +fi; - -# Check whether --with-installed-readline was given. +# Check whether --with-installed-readline or --without-installed-readline was given. if test "${with_installed_readline+set}" = set; then - withval=$with_installed_readline; opt_with_installed_readline=$withval -fi + withval="$with_installed_readline" + opt_with_installed_readline=$withval +fi; - -# Check whether --with-purecov was given. +# Check whether --with-purecov or --without-purecov was given. if test "${with_purecov+set}" = set; then - withval=$with_purecov; opt_purecov=$withval -fi + withval="$with_purecov" + opt_purecov=$withval +fi; - -# Check whether --with-purify was given. +# Check whether --with-purify or --without-purify was given. if test "${with_purify+set}" = set; then - withval=$with_purify; opt_purify=$withval -fi - + withval="$with_purify" + opt_purify=$withval +fi; if test "$opt_bash_malloc" = yes; then MALLOC_TARGET=malloc @@ -2202,7 +1693,7 @@ if test "$opt_curses" = yes; then fi if test -z "${DEBUGGER_START_FILE}"; then - DEBUGGER_START_FILE='${datadir}/bashdb/bashdb-main.inc' + DEBUGGER_START_FILE=${ac_default_prefix}/lib/bashdb/bashdb-main.inc fi opt_minimal_config=no @@ -2239,11 +1730,11 @@ opt_single_longdoc_strings=yes opt_static_link=no opt_profiling=no -# Check whether --enable-minimal-config was given. +# Check whether --enable-minimal-config or --disable-minimal-config was given. if test "${enable_minimal_config+set}" = set; then - enableval=$enable_minimal_config; opt_minimal_config=$enableval -fi - + enableval="$enable_minimal_config" + opt_minimal_config=$enableval +fi; if test $opt_minimal_config = yes; then opt_job_control=no opt_alias=no opt_readline=no @@ -2256,167 +1747,167 @@ if test $opt_minimal_config = yes; then opt_multibyte=yes opt_cond_regexp=no fi -# Check whether --enable-alias was given. +# Check whether --enable-alias or --disable-alias was given. if test "${enable_alias+set}" = set; then - enableval=$enable_alias; opt_alias=$enableval -fi - -# Check whether --enable-arith-for-command was given. + enableval="$enable_alias" + opt_alias=$enableval +fi; +# Check whether --enable-arith-for-command or --disable-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 - -# Check whether --enable-array-variables was given. + enableval="$enable_arith_for_command" + opt_arith_for_command=$enableval +fi; +# Check whether --enable-array-variables or --disable-array-variables was given. if test "${enable_array_variables+set}" = set; then - enableval=$enable_array_variables; opt_array_variables=$enableval -fi - -# Check whether --enable-bang-history was given. + enableval="$enable_array_variables" + opt_array_variables=$enableval +fi; +# Check whether --enable-bang-history or --disable-bang-history was given. if test "${enable_bang_history+set}" = set; then - enableval=$enable_bang_history; opt_bang_history=$enableval -fi - -# Check whether --enable-brace-expansion was given. + enableval="$enable_bang_history" + opt_bang_history=$enableval +fi; +# Check whether --enable-brace-expansion or --disable-brace-expansion was given. if test "${enable_brace_expansion+set}" = set; then - enableval=$enable_brace_expansion; opt_brace_expansion=$enableval -fi - -# Check whether --enable-command-timing was given. + enableval="$enable_brace_expansion" + opt_brace_expansion=$enableval +fi; +# Check whether --enable-command-timing or --disable-command-timing was given. if test "${enable_command_timing+set}" = set; then - enableval=$enable_command_timing; opt_command_timing=$enableval -fi - -# Check whether --enable-cond-command was given. + enableval="$enable_command_timing" + opt_command_timing=$enableval +fi; +# Check whether --enable-cond-command or --disable-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. + enableval="$enable_cond_command" + opt_cond_command=$enableval +fi; +# Check whether --enable-cond-regexp or --disable-cond-regexp was given. if test "${enable_cond_regexp+set}" = set; then - enableval=$enable_cond_regexp; opt_cond_regexp=$enableval -fi - -# Check whether --enable-debugger was given. + enableval="$enable_cond_regexp" + opt_cond_regexp=$enableval +fi; +# Check whether --enable-debugger or --disable-debugger was given. if test "${enable_debugger+set}" = set; then - enableval=$enable_debugger; opt_debugger=$enableval -fi - -# Check whether --enable-directory-stack was given. + enableval="$enable_debugger" + opt_debugger=$enableval +fi; +# Check whether --enable-directory-stack or --disable-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. + enableval="$enable_directory_stack" + opt_dirstack=$enableval +fi; +# Check whether --enable-disabled-builtins or --disable-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. + enableval="$enable_disabled_builtins" + opt_disabled_builtins=$enableval +fi; +# Check whether --enable-dparen-arithmetic or --disable-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. + enableval="$enable_dparen_arithmetic" + opt_dparen_arith=$enableval +fi; +# Check whether --enable-extended-glob or --disable-extended-glob was given. if test "${enable_extended_glob+set}" = set; then - enableval=$enable_extended_glob; opt_extended_glob=$enableval -fi - -# Check whether --enable-help-builtin was given. + enableval="$enable_extended_glob" + opt_extended_glob=$enableval +fi; +# Check whether --enable-help-builtin or --disable-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. + enableval="$enable_help_builtin" + opt_help=$enableval +fi; +# Check whether --enable-history or --disable-history was given. if test "${enable_history+set}" = set; then - enableval=$enable_history; opt_history=$enableval -fi - -# Check whether --enable-job-control was given. + enableval="$enable_history" + opt_history=$enableval +fi; +# Check whether --enable-job-control or --disable-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. + enableval="$enable_job_control" + opt_job_control=$enableval +fi; +# Check whether --enable-multibyte or --disable-multibyte was given. if test "${enable_multibyte+set}" = set; then - enableval=$enable_multibyte; opt_multibyte=$enableval -fi - -# Check whether --enable-net-redirections was given. + enableval="$enable_multibyte" + opt_multibyte=$enableval +fi; +# Check whether --enable-net-redirections or --disable-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. + enableval="$enable_net_redirections" + opt_net_redirs=$enableval +fi; +# Check whether --enable-process-substitution or --disable-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. + enableval="$enable_process_substitution" + opt_process_subst=$enableval +fi; +# Check whether --enable-progcomp or --disable-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. + enableval="$enable_progcomp" + opt_progcomp=$enableval +fi; +# Check whether --enable-prompt-string-decoding or --disable-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. + enableval="$enable_prompt_string_decoding" + opt_prompt_decoding=$enableval +fi; +# Check whether --enable-readline or --disable-readline was given. if test "${enable_readline+set}" = set; then - enableval=$enable_readline; opt_readline=$enableval -fi - -# Check whether --enable-restricted was given. + enableval="$enable_readline" + opt_readline=$enableval +fi; +# Check whether --enable-restricted or --disable-restricted was given. if test "${enable_restricted+set}" = set; then - enableval=$enable_restricted; opt_restricted=$enableval -fi - -# Check whether --enable-select was given. + enableval="$enable_restricted" + opt_restricted=$enableval +fi; +# Check whether --enable-select or --disable-select was given. if test "${enable_select+set}" = set; then - enableval=$enable_select; opt_select=$enableval -fi - -# Check whether --enable-separate-helpfiles was given. + enableval="$enable_select" + opt_select=$enableval +fi; +# Check whether --enable-separate-helpfiles or --disable-separate-helpfiles was given. if test "${enable_separate_helpfiles+set}" = set; then - enableval=$enable_separate_helpfiles; opt_separate_help=$enableval -fi - -# Check whether --enable-single-help-strings was given. + enableval="$enable_separate_helpfiles" + opt_separate_help=$enableval +fi; +# Check whether --enable-single-help-strings or --disable-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. + enableval="$enable_single_help_strings" + opt_single_longdoc_strings=$enableval +fi; +# Check whether --enable-strict-posix-default or --disable-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. + enableval="$enable_strict_posix_default" + opt_strict_posix=$enableval +fi; +# Check whether --enable-usg-echo-default or --disable-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. + enableval="$enable_usg_echo_default" + opt_xpg_echo=$enableval +fi; +# Check whether --enable-xpg-echo-default or --disable-xpg-echo-default was given. if test "${enable_xpg_echo_default+set}" = set; then - enableval=$enable_xpg_echo_default; opt_xpg_echo=$enableval -fi + enableval="$enable_xpg_echo_default" + opt_xpg_echo=$enableval +fi; - -# Check whether --enable-mem-scramble was given. +# Check whether --enable-mem-scramble or --disable-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. + enableval="$enable_mem_scramble" + opt_memscramble=$enableval +fi; +# Check whether --enable-profiling or --disable-profiling was given. if test "${enable_profiling+set}" = set; then - enableval=$enable_profiling; opt_profiling=$enableval -fi - -# Check whether --enable-static-link was given. + enableval="$enable_profiling" + opt_profiling=$enableval +fi; +# Check whether --enable-static-link or --disable-static-link was given. if test "${enable_static_link+set}" = set; then - enableval=$enable_static_link; opt_static_link=$enableval -fi - + enableval="$enable_static_link" + opt_static_link=$enableval +fi; @@ -2610,8 +2101,8 @@ 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 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2624,34 +2115,32 @@ 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - fi 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 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2664,51 +2153,36 @@ 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6; } + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi + CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi 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. + 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 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2721,34 +2195,74 @@ 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + 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 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2762,7 +2276,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_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 @@ -2773,7 +2287,6 @@ do fi done done -IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. @@ -2791,23 +2304,22 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe + for ac_prog in cl 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 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2820,38 +2332,36 @@ 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC - for ac_prog in cl.exe + for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2864,45 +2374,29 @@ 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6; } + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - test -n "$ac_ct_CC" && break done - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi + CC=$ac_ct_CC fi fi @@ -2915,35 +2409,21 @@ See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. -echo "$as_me:$LINENO: checking for C compiler version" >&5 +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` -{ (ac_try="$ac_compiler --version >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler --version >&5") 2>&5 +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -v >&5") 2>&5 +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -V >&5") 2>&5 +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } @@ -2968,70 +2448,46 @@ ac_clean_files="$ac_clean_files a.out 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. -{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -# -# List of possible output files, starting from the most likely. -# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) -# only as a last resort. b.out is created by i960 compilers. -ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' -# -# The IRIX 6 linker writes into existing files which may not be -# executable, retaining their permissions. Remove them first so a -# subsequent execution test works. -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { (ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link_default") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; 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, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext break;; * ) break;; esac done -test "$ac_cv_exeext" = no && ac_cv_exeext= - else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 @@ -3044,23 +2500,19 @@ See \`config.log' for more details." >&2;} fi ac_exeext=$ac_cv_exeext -{ echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6; } +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 -# Check that the compiler produces executables we can run. If not, either +# Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&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 - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3079,27 +2531,22 @@ See \`config.log' for more details." >&2;} fi fi fi -{ echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 rm -f a.out 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 +# Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } -{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6; } - -{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then @@ -3110,8 +2557,9 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext break;; * ) break;; esac @@ -3125,14 +2573,14 @@ See \`config.log' for more details." >&2;} fi rm -f conftest$ac_cv_exeext -{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT -{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3152,20 +2600,14 @@ main () } _ACEOF rm -f conftest.o conftest.obj -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac @@ -3183,12 +2625,12 @@ fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3211,36 +2653,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3249,28 +2679,24 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS -{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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 + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -3286,36 +2712,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3324,278 +2738,285 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - CFLAGS="" - cat >conftest.$ac_ext <<_ACEOF +ac_cv_prog_cc_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ - -int -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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +#include +#include +#include +#include +/* 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); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std1 is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std1. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - : + ac_cv_prog_cc_stdc=$ac_arg +break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF +fi +rm -f conftest.err conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ - +$ac_declaration +#include int main () { - +exit (42); ; 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_prog_cc_g=yes + : else 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 -{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi +continue fi -{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 -echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } -if test "${ac_cv_prog_cc_c89+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF +rm -f 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 /* end confdefs.h. */ -#include -#include -#include -#include -/* 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); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; +$ac_declaration int main () { -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; +exit (42); ; return 0; } _ACEOF -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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_prog_cc_c89=$ac_arg + break else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done -rm -f conftest.$ac_ext -CC=$ac_save_CC - +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6; } ;; - xno) - { echo "$as_me:$LINENO: result: unsupported" >&5 -echo "${ECHO_T}unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; -esac +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -3605,8 +3026,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu - { echo "$as_me:$LINENO: checking for strerror in -lcposix" >&5 -echo $ECHO_N "checking for strerror in -lcposix... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for strerror in -lcposix" >&5 +echo $ECHO_N "checking for strerror in -lcposix... $ECHO_C" >&6 if test "${ac_cv_lib_cposix_strerror+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3619,52 +3040,40 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char strerror (); int main () { -return strerror (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3673,15 +3082,14 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_cposix_strerror" >&5 -echo "${ECHO_T}$ac_cv_lib_cposix_strerror" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_cposix_strerror" >&5 +echo "${ECHO_T}$ac_cv_lib_cposix_strerror" >&6 if test $ac_cv_lib_cposix_strerror = yes; then LIBS="$LIBS -lcposix" fi @@ -3693,8 +3101,8 @@ 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 -{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -3728,13 +3136,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -3759,10 +3162,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi - rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether nonexistent headers + # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -3772,13 +3174,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -3805,7 +3202,6 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_preproc_ok=: break fi - rm -f conftest.err conftest.$ac_ext done @@ -3823,8 +3219,8 @@ fi else ac_cv_prog_CPP=$CPP fi -{ echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6; } +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do @@ -3847,13 +3243,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -3878,10 +3269,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi - rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether nonexistent headers + # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -3891,13 +3281,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -3924,7 +3309,6 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_preproc_ok=: break fi - rm -f conftest.err conftest.$ac_ext done @@ -3947,170 +3331,23 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 -echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } -if test "${ac_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Extract the first word of "grep ggrep" to use in msg output -if test -z "$GREP"; then -set dummy grep ggrep; ac_prog_name=$2 -if test "${ac_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_path_GREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -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_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_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 -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - 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` - 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" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - - $ac_path_GREP_found && break 3 - done -done - -done -IFS=$as_save_IFS - - -fi - -GREP="$ac_cv_path_GREP" -if test -z "$GREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } -fi - -else - ac_cv_path_GREP=$GREP -fi - - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 -echo "${ECHO_T}$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } -if test "${ac_cv_path_EGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - # Extract the first word of "egrep" to use in msg output -if test -z "$EGREP"; then -set dummy egrep; ac_prog_name=$2 -if test "${ac_cv_path_EGREP+set}" = set; then +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_path_EGREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -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_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_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 -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - 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` - 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" - ac_path_EGREP_max=$ac_count + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - - $ac_path_EGREP_found && break 3 - done -done - -done -IFS=$as_save_IFS - - -fi - -EGREP="$ac_cv_path_EGREP" -if test -z "$EGREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep -else - ac_cv_path_EGREP=$EGREP -fi - - - fi -fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 -echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - -{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4134,36 +3371,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4172,10 +3397,9 @@ else 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 +rm -f 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. @@ -4231,7 +3455,6 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include -#include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) @@ -4251,27 +3474,18 @@ main () for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) - return 2; - return 0; + exit(2); + 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4284,14 +3498,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @@ -4314,9 +3526,9 @@ 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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -4330,36 +3542,24 @@ $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4368,14 +3568,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_Header=no" +eval "$as_ac_Header=no" fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 @@ -4387,17 +3585,17 @@ done if test "${ac_cv_header_minix_config_h+set}" = set; then - { echo "$as_me:$LINENO: checking for minix/config.h" >&5 -echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for minix/config.h" >&5 +echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6 if test "${ac_cv_header_minix_config_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 -echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 +echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking minix/config.h usability" >&5 -echo $ECHO_N "checking minix/config.h usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking minix/config.h usability" >&5 +echo $ECHO_N "checking minix/config.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -4408,36 +3606,24 @@ $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4446,16 +3632,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking minix/config.h presence" >&5 -echo $ECHO_N "checking minix/config.h presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking minix/config.h presence" >&5 +echo $ECHO_N "checking minix/config.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -4464,13 +3649,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -4494,10 +3674,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -4521,23 +3700,25 @@ echo "$as_me: WARNING: minix/config.h: section \"Present But Cannot Be Compi echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: minix/config.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: minix/config.h: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## ------------------------------- ## ## Report this to bug-bash@gnu.org ## ## ------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for minix/config.h" >&5 -echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for minix/config.h" >&5 +echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6 if test "${ac_cv_header_minix_config_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_minix_config_h=$ac_header_preproc fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 -echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 +echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6 fi if test $ac_cv_header_minix_config_h = yes; then @@ -4566,15 +3747,15 @@ _ACEOF fi -# Check whether --enable-largefile was given. +# Check whether --enable-largefile or --disable-largefile was given. if test "${enable_largefile+set}" = set; then - enableval=$enable_largefile; -fi + enableval="$enable_largefile" +fi; if test "$enable_largefile" != no; then - { echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5 -echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5 +echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6 if test "${ac_cv_sys_largefile_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4582,8 +3763,8 @@ else if test "$GCC" != yes; then ac_save_CC=$CC 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. + # 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 @@ -4607,37 +3788,25 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4646,42 +3815,28 @@ else 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +rm -f conftest.err conftest.$ac_objext + CC="$CC -n32" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4690,24 +3845,22 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - fi - -rm -f core conftest.err conftest.$ac_objext +rm -f conftest.err conftest.$ac_objext break done CC=$ac_save_CC rm -f conftest.$ac_ext fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5 -echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5 +echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6 if test "$ac_cv_sys_largefile_CC" != no; then CC=$CC$ac_cv_sys_largefile_CC fi - { echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5 -echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6 if test "${ac_cv_sys_file_offset_bits+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4737,36 +3890,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4775,10 +3916,8 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -4804,36 +3943,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4842,15 +3969,13 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext break done fi -{ echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5 -echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5 +echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6 if test "$ac_cv_sys_file_offset_bits" != no; then cat >>confdefs.h <<_ACEOF @@ -4859,8 +3984,8 @@ _ACEOF fi rm -f conftest* - { echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5 -echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5 +echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6 if test "${ac_cv_sys_large_files+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4890,36 +4015,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4928,10 +4041,8 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -4957,36 +4068,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4995,15 +4094,13 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext break done fi -{ echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5 -echo "${ECHO_T}$ac_cv_sys_large_files" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5 +echo "${ECHO_T}$ac_cv_sys_large_files" >&6 if test "$ac_cv_sys_large_files" != no; then cat >>confdefs.h <<_ACEOF @@ -5021,7 +4118,6 @@ SIGNAMES_H=lsignames.h -CROSS_COMPILE= if test "x$cross_compiling" = "xyes"; then case "${host}" in *-cygwin*) @@ -5102,8 +4198,8 @@ test -z "$CFLAGS_FOR_BUILD" && CFLAGS_FOR_BUILD="-g" if test $ac_cv_c_compiler_gnu = yes; then - { echo "$as_me:$LINENO: checking whether $CC needs -traditional" >&5 -echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking whether $CC needs -traditional" >&5 +echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6 if test "${ac_cv_prog_gcc_traditional+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5144,8 +4240,8 @@ rm -f conftest* fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_prog_gcc_traditional" >&5 -echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_prog_gcc_traditional" >&5 +echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6 if test $ac_cv_prog_gcc_traditional = yes; then CC="$CC -traditional" fi @@ -5163,15 +4259,15 @@ then if test "X$bash_cv_termcap_lib" = "X"; then _bash_needmsg=yes else -{ echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 -echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 _bash_needmsg= fi if test "${bash_cv_termcap_lib+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - { echo "$as_me:$LINENO: checking for tgetent" >&5 -echo $ECHO_N "checking for tgetent... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for tgetent" >&5 +echo $ECHO_N "checking for tgetent... $ECHO_C" >&6 if test "${ac_cv_func_tgetent+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5198,59 +4294,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_tgetent) || defined (__stub___tgetent) choke me +#else +char (*f) () = tgetent; +#endif +#ifdef __cplusplus +} #endif int main () { -return tgetent (); +return f != 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -5259,19 +4349,18 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func_tgetent=no +ac_cv_func_tgetent=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_tgetent" >&5 -echo "${ECHO_T}$ac_cv_func_tgetent" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func_tgetent" >&5 +echo "${ECHO_T}$ac_cv_func_tgetent" >&6 if test $ac_cv_func_tgetent = yes; then bash_cv_termcap_lib=libc else - { echo "$as_me:$LINENO: checking for tgetent in -ltermcap" >&5 -echo $ECHO_N "checking for tgetent in -ltermcap... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for tgetent in -ltermcap" >&5 +echo $ECHO_N "checking for tgetent in -ltermcap... $ECHO_C" >&6 if test "${ac_cv_lib_termcap_tgetent+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5284,52 +4373,40 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char tgetent (); int main () { -return tgetent (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -5338,20 +4415,19 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_termcap_tgetent" >&5 -echo "${ECHO_T}$ac_cv_lib_termcap_tgetent" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_termcap_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_termcap_tgetent" >&6 if test $ac_cv_lib_termcap_tgetent = yes; then bash_cv_termcap_lib=libtermcap else - { echo "$as_me:$LINENO: checking for tgetent in -ltinfo" >&5 -echo $ECHO_N "checking for tgetent in -ltinfo... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for tgetent in -ltinfo" >&5 +echo $ECHO_N "checking for tgetent in -ltinfo... $ECHO_C" >&6 if test "${ac_cv_lib_tinfo_tgetent+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5364,52 +4440,40 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char tgetent (); int main () { -return tgetent (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -5418,20 +4482,19 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_tinfo_tgetent" >&5 -echo "${ECHO_T}$ac_cv_lib_tinfo_tgetent" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_tinfo_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_tinfo_tgetent" >&6 if test $ac_cv_lib_tinfo_tgetent = yes; then bash_cv_termcap_lib=libtinfo else - { echo "$as_me:$LINENO: checking for tgetent in -lcurses" >&5 -echo $ECHO_N "checking for tgetent in -lcurses... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for tgetent in -lcurses" >&5 +echo $ECHO_N "checking for tgetent in -lcurses... $ECHO_C" >&6 if test "${ac_cv_lib_curses_tgetent+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5444,52 +4507,40 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char tgetent (); int main () { -return tgetent (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -5498,20 +4549,19 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_curses_tgetent" >&5 -echo "${ECHO_T}$ac_cv_lib_curses_tgetent" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_curses_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_curses_tgetent" >&6 if test $ac_cv_lib_curses_tgetent = yes; then bash_cv_termcap_lib=libcurses else - { echo "$as_me:$LINENO: checking for tgetent in -lncurses" >&5 -echo $ECHO_N "checking for tgetent in -lncurses... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for tgetent in -lncurses" >&5 +echo $ECHO_N "checking for tgetent in -lncurses... $ECHO_C" >&6 if test "${ac_cv_lib_ncurses_tgetent+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5524,52 +4574,40 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char tgetent (); int main () { -return tgetent (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -5578,15 +4616,14 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_ncurses_tgetent" >&5 -echo "${ECHO_T}$ac_cv_lib_ncurses_tgetent" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_ncurses_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_ncurses_tgetent" >&6 if test $ac_cv_lib_ncurses_tgetent = yes; then bash_cv_termcap_lib=libncurses else @@ -5604,11 +4641,11 @@ fi fi if test "X$_bash_needmsg" = "Xyes"; then -{ echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 -echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 fi -{ echo "$as_me:$LINENO: result: using $bash_cv_termcap_lib" >&5 -echo "${ECHO_T}using $bash_cv_termcap_lib" >&6; } +echo "$as_me:$LINENO: result: using $bash_cv_termcap_lib" >&5 +echo "${ECHO_T}using $bash_cv_termcap_lib" >&6 if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then LDFLAGS="$LDFLAGS -L./lib/termcap" TERMCAP_LIB="./lib/termcap/libtermcap.a" @@ -5633,8 +4670,8 @@ fi -{ echo "$as_me:$LINENO: checking version of installed readline library" >&5 -echo $ECHO_N "checking version of installed readline library... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking version of installed readline library" >&5 +echo $ECHO_N "checking version of installed readline library... $ECHO_C" >&6 # What a pain in the ass this is. @@ -5692,22 +4729,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -5720,10 +4748,8 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_rl_version='0.0' fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi @@ -5768,8 +4794,8 @@ elif test $RL_MAJOR -gt 4 || { test $RL_MAJOR = 4 && test $RL_MINOR -gt 2 ; } ; RL_PREFIX=$ac_cv_rl_prefix RL_LIBDIR=$ac_cv_rl_libdir RL_INCLUDEDIR=$ac_cv_rl_includedir - { echo "$as_me:$LINENO: result: $ac_cv_rl_version" >&5 -echo "${ECHO_T}$ac_cv_rl_version" >&6; } + echo "$as_me:$LINENO: result: $ac_cv_rl_version" >&5 +echo "${ECHO_T}$ac_cv_rl_version" >&6 else @@ -5797,8 +4823,8 @@ RL_PREFIX=$ac_cv_rl_prefix RL_LIBDIR=$ac_cv_rl_libdir RL_INCLUDEDIR=$ac_cv_rl_includedir -{ echo "$as_me:$LINENO: result: $ac_cv_rl_version" >&5 -echo "${ECHO_T}$ac_cv_rl_version" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_rl_version" >&5 +echo "${ECHO_T}$ac_cv_rl_version" >&6 fi @@ -5917,8 +4943,8 @@ fi # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. -{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -5940,7 +4966,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_executable_p "$as_dir/$ac_prog$ac_exec_ext"; }; then + if $as_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. @@ -5959,22 +4985,21 @@ case $as_dir/ in ;; esac done -IFS=$as_save_IFS fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is - # removed, or if the value is a relative name. + # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi -{ echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6; } +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. @@ -5986,8 +5011,8 @@ 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 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6000,34 +5025,32 @@ 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi 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 - { echo "$as_me:$LINENO: result: $AR" >&5 -echo "${ECHO_T}$AR" >&6; } + echo "$as_me:$LINENO: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 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 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6040,34 +5063,32 @@ 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then - { echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6; } + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - fi 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 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6080,41 +5101,27 @@ 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then - { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6; } + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi + RANLIB=$ac_ct_RANLIB else RANLIB="$ac_cv_prog_RANLIB" fi @@ -6123,8 +5130,8 @@ 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 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_YACC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6137,58 +5144,55 @@ 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_YACC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi YACC=$ac_cv_prog_YACC if test -n "$YACC"; then - { echo "$as_me:$LINENO: result: $YACC" >&5 -echo "${ECHO_T}$YACC" >&6; } + echo "$as_me:$LINENO: result: $YACC" >&5 +echo "${ECHO_T}$YACC" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - test -n "$YACC" && break done test -n "$YACC" || YACC="yacc" -{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } -set x ${MAKE-make}; ac_make=`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 +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF -SHELL = /bin/sh all: - @echo '@@@%%%=$(MAKE)=@@@%%%' + @echo 'ac_maketemp="$(MAKE)"' _ACEOF # 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;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi rm -f conftest.make fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 SET_MAKE= else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 SET_MAKE="MAKE=${MAKE-make}" fi @@ -6225,8 +5229,8 @@ cat >>confdefs.h <<\_ACEOF _ACEOF -{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 -echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 if test "${ac_cv_c_const+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6266,7 +5270,6 @@ main () char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; - if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; @@ -6285,9 +5288,7 @@ main () } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; - if (!foo) return 0; } - return !x[0] && !zero.x; #endif ; @@ -6295,36 +5296,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -6333,13 +5322,12 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 -echo "${ECHO_T}$ac_cv_c_const" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +echo "${ECHO_T}$ac_cv_c_const" >&6 if test $ac_cv_c_const = no; then cat >>confdefs.h <<\_ACEOF @@ -6348,8 +5336,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for inline" >&5 -echo $ECHO_N "checking for inline... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for inline" >&5 +echo $ECHO_N "checking for inline... $ECHO_C" >&6 if test "${ac_cv_c_inline+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6369,54 +5357,39 @@ $ac_kw foo_t 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_c_inline=$ac_kw + ac_cv_c_inline=$ac_kw; break else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 -echo "${ECHO_T}$ac_cv_c_inline" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 +echo "${ECHO_T}$ac_cv_c_inline" >&6 case $ac_cv_c_inline in @@ -6434,8 +5407,8 @@ _ACEOF ;; esac -{ echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 -echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 +echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 if test "${ac_cv_c_bigendian+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6461,36 +5434,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -6516,36 +5477,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -6554,15 +5503,14 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - # It does not; compile a test program. +# It does not; compile a test program. if test "$cross_compiling" = yes; then # try to guess the endianness by grepping values into an object file ac_cv_c_bigendian=unknown @@ -6572,11 +5520,11 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; -short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; +short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; +short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } -short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; -short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; +short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; +short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } int main () @@ -6587,36 +5535,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -6635,10 +5571,8 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -6646,41 +5580,27 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_includes_default int main () { - /* Are we little or big endian? From Harbison&Steele. */ union { - long int l; - char c[sizeof (long int)]; + long l; + char c[sizeof (long)]; } u; u.l = 1; - return u.c[sizeof (long int) - 1] == 1; - - ; - return 0; + exit (u.c[sizeof (long) - 1] == 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -6693,16 +5613,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_c_bigendian=yes fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 -echo "${ECHO_T}$ac_cv_c_bigendian" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 +echo "${ECHO_T}$ac_cv_c_bigendian" >&6 case $ac_cv_c_bigendian in yes) @@ -6720,8 +5637,8 @@ presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} { (exit 1); exit 1; }; } ;; esac -{ echo "$as_me:$LINENO: checking for preprocessor stringizing operator" >&5 -echo $ECHO_N "checking for preprocessor stringizing operator... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for preprocessor stringizing operator" >&5 +echo $ECHO_N "checking for preprocessor stringizing operator... $ECHO_C" >&6 if test "${ac_cv_c_stringize+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6744,8 +5661,8 @@ fi rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_stringize" >&5 -echo "${ECHO_T}$ac_cv_c_stringize" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_c_stringize" >&5 +echo "${ECHO_T}$ac_cv_c_stringize" >&6 if test $ac_cv_c_stringize = yes; then cat >>confdefs.h <<\_ACEOF @@ -6754,11 +5671,9 @@ _ACEOF fi - - - { echo "$as_me:$LINENO: checking for long double with more range or precision than double" >&5 -echo $ECHO_N "checking for long double with more range or precision than double... $ECHO_C" >&6; } -if test "${ac_cv_type_long_double_wider+set}" = set; then +echo "$as_me:$LINENO: checking for working long double with more range or precision than double" >&5 +echo $ECHO_N "checking for working long double with more range or precision than double... $ECHO_C" >&6 +if test "${ac_cv_c_long_double+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -6768,27 +5683,13 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include - long double const a[] = - { - 0.0L, DBL_MIN, DBL_MAX, DBL_EPSILON, - LDBL_MIN, LDBL_MAX, LDBL_EPSILON - }; - long double - f (long double x) - { - return ((x + (unsigned long int) 10) * (-1 / x) + a[0] - + (x ? f (x) : 'c')); - } - + long double foo = 0.0; int main () { -static int test_array [1 - 2 * !((0 < ((DBL_MAX_EXP < LDBL_MAX_EXP) - + (DBL_MANT_DIG < LDBL_MANT_DIG) - - (LDBL_MAX_EXP < DBL_MAX_EXP) - - (LDBL_MANT_DIG < DBL_MANT_DIG))) - && (int) LDBL_EPSILON == 0 - )]; +static int test_array [1 - 2 * !(/* Using '|' rather than '||' catches a GCC 2.95.2 x86 bug. */ + (DBL_MAX < LDBL_MAX) | (LDBL_EPSILON < DBL_EPSILON) + | (DBL_MAX_EXP < LDBL_MAX_EXP) | (DBL_MANT_DIG < LDBL_MANT_DIG))]; test_array [0] = 0 ; @@ -6796,73 +5697,51 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_type_long_double_wider=yes + ac_cv_c_long_double=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_long_double_wider=no +ac_cv_c_long_double=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_long_double_wider" >&5 -echo "${ECHO_T}$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 - - fi - - ac_cv_c_long_double=$ac_cv_type_long_double_wider - if test $ac_cv_c_long_double = yes; then +echo "$as_me:$LINENO: result: $ac_cv_c_long_double" >&5 +echo "${ECHO_T}$ac_cv_c_long_double" >&6 +if test $ac_cv_c_long_double = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_LONG_DOUBLE 1 _ACEOF - fi +fi -{ echo "$as_me:$LINENO: checking for function prototypes" >&5 -echo $ECHO_N "checking for function prototypes... $ECHO_C" >&6; } -if test "$ac_cv_prog_cc_c89" != no; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } +echo "$as_me:$LINENO: checking for function prototypes" >&5 +echo $ECHO_N "checking for function prototypes... $ECHO_C" >&6 +if test "$ac_cv_prog_cc_stdc" != no; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 cat >>confdefs.h <<\_ACEOF #define PROTOTYPES 1 @@ -6874,13 +5753,13 @@ cat >>confdefs.h <<\_ACEOF _ACEOF else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi -{ echo "$as_me:$LINENO: checking whether char is unsigned" >&5 -echo $ECHO_N "checking whether char is unsigned... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether char is unsigned" >&5 +echo $ECHO_N "checking whether char is unsigned... $ECHO_C" >&6 if test "${ac_cv_c_char_unsigned+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6902,36 +5781,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -6940,13 +5807,12 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_char_unsigned" >&5 -echo "${ECHO_T}$ac_cv_c_char_unsigned" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_c_char_unsigned" >&5 +echo "${ECHO_T}$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 @@ -6969,17 +5835,17 @@ fi - { echo "$as_me:$LINENO: checking whether NLS is requested" >&5 -echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6; } - # Check whether --enable-nls was given. + echo "$as_me:$LINENO: checking whether NLS is requested" >&5 +echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 + # Check whether --enable-nls or --disable-nls was given. if test "${enable_nls+set}" = set; then - enableval=$enable_nls; USE_NLS=$enableval + enableval="$enable_nls" + USE_NLS=$enableval else USE_NLS=yes -fi - - { echo "$as_me:$LINENO: result: $USE_NLS" >&5 -echo "${ECHO_T}$USE_NLS" >&6; } +fi; + echo "$as_me:$LINENO: result: $USE_NLS" >&5 +echo "${ECHO_T}$USE_NLS" >&6 @@ -7016,8 +5882,8 @@ 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 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_MSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7047,17 +5913,17 @@ esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then - { echo "$as_me:$LINENO: result: $MSGFMT" >&5 -echo "${ECHO_T}$MSGFMT" >&6; } + echo "$as_me:$LINENO: result: $MSGFMT" >&5 +echo "${ECHO_T}$MSGFMT" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_GMSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7072,31 +5938,30 @@ 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT + if test -n "$GMSGFMT"; then - { echo "$as_me:$LINENO: result: $GMSGFMT" >&5 -echo "${ECHO_T}$GMSGFMT" >&6; } + echo "$as_me:$LINENO: result: $GMSGFMT" >&5 +echo "${ECHO_T}$GMSGFMT" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then @@ -7127,8 +5992,8 @@ 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 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_XGETTEXT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7158,11 +6023,11 @@ esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then - { echo "$as_me:$LINENO: result: $XGETTEXT" >&5 -echo "${ECHO_T}$XGETTEXT" >&6; } + echo "$as_me:$LINENO: result: $XGETTEXT" >&5 +echo "${ECHO_T}$XGETTEXT" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi rm -f messages.po @@ -7198,8 +6063,8 @@ 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 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_MSGMERGE+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7228,11 +6093,11 @@ esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then - { echo "$as_me:$LINENO: result: $MSGMERGE" >&5 -echo "${ECHO_T}$MSGMERGE" >&6; } + echo "$as_me:$LINENO: result: $MSGMERGE" >&5 +echo "${ECHO_T}$MSGMERGE" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi @@ -7242,8 +6107,8 @@ fi : ; else GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` - { echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 -echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6; } + echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 +echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6 GMSGFMT=":" fi fi @@ -7253,18 +6118,18 @@ echo "${ECHO_T}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 - { echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 -echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6; } + echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 +echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 XGETTEXT=":" fi rm -f messages.po fi - ac_config_commands="$ac_config_commands default-1" + ac_config_commands="$ac_config_commands default-1" -{ echo "$as_me:$LINENO: checking for off_t" >&5 -echo $ECHO_N "checking for off_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for off_t" >&5 +echo $ECHO_N "checking for off_t... $ECHO_C" >&6 if test "${ac_cv_type_off_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7275,49 +6140,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef off_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((off_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -7326,25 +6178,24 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_off_t=no +ac_cv_type_off_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 -echo "${ECHO_T}$ac_cv_type_off_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 +echo "${ECHO_T}$ac_cv_type_off_t" >&6 if test $ac_cv_type_off_t = yes; then : else cat >>confdefs.h <<_ACEOF -#define off_t long int +#define off_t long _ACEOF fi -{ echo "$as_me:$LINENO: checking for size_t" >&5 -echo $ECHO_N "checking for size_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for size_t" >&5 +echo $ECHO_N "checking for size_t... $ECHO_C" >&6 if test "${ac_cv_type_size_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7355,49 +6206,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef size_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((size_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -7406,27 +6244,26 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_size_t=no +ac_cv_type_size_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 -echo "${ECHO_T}$ac_cv_type_size_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +echo "${ECHO_T}$ac_cv_type_size_t" >&6 if test $ac_cv_type_size_t = yes; then : else cat >>confdefs.h <<_ACEOF -#define size_t unsigned int +#define size_t unsigned _ACEOF fi # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! -{ echo "$as_me:$LINENO: checking for working alloca.h" >&5 -echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for working alloca.h" >&5 +echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 if test "${ac_cv_working_alloca_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7441,42 +6278,29 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -7485,14 +6309,13 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 -echo "${ECHO_T}$ac_cv_working_alloca_h" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 if test $ac_cv_working_alloca_h = yes; then cat >>confdefs.h <<\_ACEOF @@ -7501,8 +6324,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for alloca" >&5 -echo $ECHO_N "checking for alloca... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for alloca" >&5 +echo $ECHO_N "checking for alloca... $ECHO_C" >&6 if test "${ac_cv_func_alloca_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7537,42 +6360,29 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -7581,14 +6391,13 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 -echo "${ECHO_T}$ac_cv_func_alloca_works" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 if test $ac_cv_func_alloca_works = yes; then @@ -7602,15 +6411,15 @@ else # 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 +ALLOCA=alloca.$ac_objext cat >>confdefs.h <<\_ACEOF #define C_ALLOCA 1 _ACEOF -{ echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 -echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 if test "${ac_cv_os_cray+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7620,7 +6429,7 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#if defined CRAY && ! defined CRAY2 +#if defined(CRAY) && ! defined(CRAY2) webecray #else wenotbecray @@ -7636,14 +6445,14 @@ fi rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 -echo "${ECHO_T}$ac_cv_os_cray" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +echo "${ECHO_T}$ac_cv_os_cray" >&6 if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -7669,59 +6478,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -7730,15 +6533,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @@ -7751,8 +6552,8 @@ fi done fi -{ echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 -echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 if test "${ac_cv_c_stack_direction+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7765,7 +6566,6 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_includes_default int find_stack_direction () { @@ -7783,26 +6583,17 @@ find_stack_direction () int main () { - return find_stack_direction () < 0; + exit (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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -7815,13 +6606,11 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_c_stack_direction=-1 fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 -echo "${ECHO_T}$ac_cv_c_stack_direction" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 cat >>confdefs.h <<_ACEOF #define STACK_DIRECTION $ac_cv_c_stack_direction @@ -7835,19 +6624,18 @@ fi for ac_header in stdlib.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -7858,36 +6646,24 @@ $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -7896,16 +6672,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -7914,13 +6689,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -7944,10 +6714,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -7971,24 +6740,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## ------------------------------- ## ## Report this to bug-bash@gnu.org ## ## ------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -8004,9 +6774,9 @@ done for ac_func in getpagesize do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -8032,59 +6802,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -8093,15 +6857,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -8110,8 +6872,8 @@ _ACEOF fi done -{ echo "$as_me:$LINENO: checking for working mmap" >&5 -echo $ECHO_N "checking for working mmap... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for working mmap" >&5 +echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8206,15 +6968,15 @@ main () /* First, make a file with some known garbage in it. */ data = (char *) malloc (pagesize); if (!data) - return 1; + exit (1); for (i = 0; i < pagesize; ++i) *(data + i) = rand (); umask (0); fd = creat ("conftest.mmap", 0600); if (fd < 0) - return 1; + exit (1); if (write (fd, data, pagesize) != pagesize) - return 1; + exit (1); close (fd); /* Next, try to mmap the file at a fixed address which already has @@ -8222,17 +6984,17 @@ main () we see the same garbage. */ fd = open ("conftest.mmap", O_RDWR); if (fd < 0) - return 1; + exit (1); data2 = (char *) malloc (2 * pagesize); if (!data2) - return 1; - data2 += (pagesize - ((long int) data2 & (pagesize - 1))) & (pagesize - 1); + exit (1); + data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1); if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FIXED, fd, 0L)) - return 1; + exit (1); for (i = 0; i < pagesize; ++i) if (*(data + i) != *(data2 + i)) - return 1; + exit (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 @@ -8241,33 +7003,24 @@ main () *(data2 + i) = *(data2 + i) + 1; data3 = (char *) malloc (pagesize); if (!data3) - return 1; + exit (1); if (read (fd, data3, pagesize) != pagesize) - return 1; + exit (1); for (i = 0; i < pagesize; ++i) if (*(data + i) != *(data3 + i)) - return 1; + exit (1); close (fd); - return 0; + 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -8280,13 +7033,11 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_mmap_fixed_mapped=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 -echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 +echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6 if test $ac_cv_func_mmap_fixed_mapped = yes; then cat >>confdefs.h <<\_ACEOF @@ -8297,8 +7048,8 @@ fi rm -f conftest.mmap - { echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5 -echo $ECHO_N "checking whether we are using the GNU C Library 2.1 or newer... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5 +echo $ECHO_N "checking whether we are using the GNU C Library 2.1 or newer... $ECHO_C" >&6 if test "${ac_cv_gnu_library_2_1+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8328,16 +7079,16 @@ rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2_1" >&5 -echo "${ECHO_T}$ac_cv_gnu_library_2_1" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2_1" >&5 +echo "${ECHO_T}$ac_cv_gnu_library_2_1" >&6 GLIBC21="$ac_cv_gnu_library_2_1" - { echo "$as_me:$LINENO: checking whether integer division by zero raises SIGFPE" >&5 -echo $ECHO_N "checking whether integer division by zero raises SIGFPE... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking whether integer division by zero raises SIGFPE" >&5 +echo $ECHO_N "checking whether integer division by zero raises SIGFPE... $ECHO_C" >&6 if test "${gt_cv_int_divbyzero_sigfpe+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8398,22 +7149,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -8426,14 +7168,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) gt_cv_int_divbyzero_sigfpe=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $gt_cv_int_divbyzero_sigfpe" >&5 -echo "${ECHO_T}$gt_cv_int_divbyzero_sigfpe" >&6; } +echo "$as_me:$LINENO: result: $gt_cv_int_divbyzero_sigfpe" >&5 +echo "${ECHO_T}$gt_cv_int_divbyzero_sigfpe" >&6 case "$gt_cv_int_divbyzero_sigfpe" in *yes) value=1;; *) value=0;; @@ -8445,8 +7185,8 @@ _ACEOF - { echo "$as_me:$LINENO: checking for inttypes.h" >&5 -echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for inttypes.h" >&5 +echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 if test "${jm_ac_cv_header_inttypes_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8467,36 +7207,24 @@ uintmax_t i = (uintmax_t) -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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -8505,13 +7233,12 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $jm_ac_cv_header_inttypes_h" >&5 -echo "${ECHO_T}$jm_ac_cv_header_inttypes_h" >&6; } +echo "$as_me:$LINENO: result: $jm_ac_cv_header_inttypes_h" >&5 +echo "${ECHO_T}$jm_ac_cv_header_inttypes_h" >&6 if test $jm_ac_cv_header_inttypes_h = yes; then cat >>confdefs.h <<_ACEOF @@ -8521,8 +7248,8 @@ _ACEOF fi - { echo "$as_me:$LINENO: checking for stdint.h" >&5 -echo $ECHO_N "checking for stdint.h... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for stdint.h" >&5 +echo $ECHO_N "checking for stdint.h... $ECHO_C" >&6 if test "${jm_ac_cv_header_stdint_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8543,36 +7270,24 @@ uintmax_t i = (uintmax_t) -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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -8581,13 +7296,12 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $jm_ac_cv_header_stdint_h" >&5 -echo "${ECHO_T}$jm_ac_cv_header_stdint_h" >&6; } +echo "$as_me:$LINENO: result: $jm_ac_cv_header_stdint_h" >&5 +echo "${ECHO_T}$jm_ac_cv_header_stdint_h" >&6 if test $jm_ac_cv_header_stdint_h = yes; then cat >>confdefs.h <<_ACEOF @@ -8597,8 +7311,8 @@ _ACEOF fi - { echo "$as_me:$LINENO: checking for unsigned long long" >&5 -echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for unsigned long long" >&5 +echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6 if test "${ac_cv_type_unsigned_long_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8619,36 +7333,24 @@ unsigned long long ullmax = (unsigned long long) -1; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -8657,14 +7359,13 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long" >&5 -echo "${ECHO_T}$ac_cv_type_unsigned_long_long" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long" >&5 +echo "${ECHO_T}$ac_cv_type_unsigned_long_long" >&6 if test $ac_cv_type_unsigned_long_long = yes; then cat >>confdefs.h <<\_ACEOF @@ -8695,8 +7396,8 @@ _ACEOF fi - { echo "$as_me:$LINENO: checking for inttypes.h" >&5 -echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for inttypes.h" >&5 +echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 if test "${gt_cv_header_inttypes_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8718,36 +7419,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -8756,14 +7445,13 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $gt_cv_header_inttypes_h" >&5 -echo "${ECHO_T}$gt_cv_header_inttypes_h" >&6; } +echo "$as_me:$LINENO: result: $gt_cv_header_inttypes_h" >&5 +echo "${ECHO_T}$gt_cv_header_inttypes_h" >&6 if test $gt_cv_header_inttypes_h = yes; then cat >>confdefs.h <<_ACEOF @@ -8775,8 +7463,8 @@ _ACEOF if test $gt_cv_header_inttypes_h = yes; then - { echo "$as_me:$LINENO: checking whether the inttypes.h PRIxNN macros are broken" >&5 -echo $ECHO_N "checking whether the inttypes.h PRIxNN macros are broken... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking whether the inttypes.h PRIxNN macros are broken" >&5 +echo $ECHO_N "checking whether the inttypes.h PRIxNN macros are broken... $ECHO_C" >&6 if test "${gt_cv_inttypes_pri_broken+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8801,36 +7489,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -8839,14 +7515,13 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $gt_cv_inttypes_pri_broken" >&5 -echo "${ECHO_T}$gt_cv_inttypes_pri_broken" >&6; } +echo "$as_me:$LINENO: result: $gt_cv_inttypes_pri_broken" >&5 +echo "${ECHO_T}$gt_cv_inttypes_pri_broken" >&6 fi if test "$gt_cv_inttypes_pri_broken" = yes; then @@ -8873,13 +7548,13 @@ _ACEOF prefix="$acl_save_prefix" -# Check whether --with-gnu-ld was given. +# Check whether --with-gnu-ld or --without-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no -fi - +fi; # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then @@ -8896,8 +7571,8 @@ fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. - { echo "$as_me:$LINENO: checking for ld used by GCC" >&5 -echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for ld used by GCC" >&5 +echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw @@ -8926,11 +7601,11 @@ echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6; } ;; esac elif test "$with_gnu_ld" = yes; then - { echo "$as_me:$LINENO: checking for GNU ld" >&5 -echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 else - { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 -echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 fi if test "${acl_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -8959,17 +7634,17 @@ fi LD="$acl_cv_path_LD" if test -n "$LD"; then - { echo "$as_me:$LINENO: result: $LD" >&5 -echo "${ECHO_T}$LD" >&6; } + echo "$as_me:$LINENO: result: $LD" >&5 +echo "${ECHO_T}$LD" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } -{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 -echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 if test "${acl_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8980,14 +7655,14 @@ else acl_cv_prog_gnu_ld=no fi fi -{ echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5 -echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6; } +echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5 +echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6 with_gnu_ld=$acl_cv_prog_gnu_ld - { echo "$as_me:$LINENO: checking for shared library run path origin" >&5 -echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for shared library run path origin" >&5 +echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6 if test "${acl_cv_rpath+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8999,8 +7674,8 @@ else acl_cv_rpath=done fi -{ echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5 -echo "${ECHO_T}$acl_cv_rpath" >&6; } +echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5 +echo "${ECHO_T}$acl_cv_rpath" >&6 wl="$acl_cv_wl" libext="$acl_cv_libext" shlibext="$acl_cv_shlibext" @@ -9008,13 +7683,13 @@ echo "${ECHO_T}$acl_cv_rpath" >&6; } hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" hardcode_direct="$acl_cv_hardcode_direct" hardcode_minus_L="$acl_cv_hardcode_minus_L" - # Check whether --enable-rpath was given. + # Check whether --enable-rpath or --disable-rpath was given. if test "${enable_rpath+set}" = set; then - enableval=$enable_rpath; : + enableval="$enable_rpath" + : else enable_rpath=yes -fi - +fi; @@ -9036,9 +7711,10 @@ fi prefix="$acl_save_prefix" -# Check whether --with-libiconv-prefix was given. +# Check whether --with-libiconv-prefix or --without-libiconv-prefix was given. if test "${with_libiconv_prefix+set}" = set; then - withval=$with_libiconv_prefix; + withval="$with_libiconv_prefix" + if test "X$withval" = "Xno"; then use_additional=no else @@ -9061,8 +7737,7 @@ if test "${with_libiconv_prefix+set}" = set; then fi fi -fi - +fi; LIBICONV= LTLIBICONV= INCICONV= @@ -9415,19 +8090,18 @@ 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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -9438,36 +8112,24 @@ $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -9476,16 +8138,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -9494,13 +8155,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -9524,10 +8180,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -9551,24 +8206,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## ------------------------------- ## ## Report this to bug-bash@gnu.org ## ## ------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -9600,18 +8256,17 @@ done - for ac_func in feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ -geteuid getgid getuid mempcpy munmap putenv setenv setlocale localeconv stpcpy \ +geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next \ __fsetlocking do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -9637,59 +8292,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; #endif - -int +#ifdef __cplusplus +} +#endif + +int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -9698,15 +8347,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -9746,8 +8393,8 @@ done done - { echo "$as_me:$LINENO: checking for iconv" >&5 -echo $ECHO_N "checking for iconv... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for iconv" >&5 +echo $ECHO_N "checking for iconv... $ECHO_C" >&6 if test "${am_cv_func_iconv+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -9773,36 +8420,24 @@ iconv_t cd = iconv_open("",""); } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -9811,10 +8446,8 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" @@ -9838,36 +8471,24 @@ iconv_t cd = iconv_open("",""); } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -9877,17 +8498,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi -{ echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 -echo "${ECHO_T}$am_cv_func_iconv" >&6; } +echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 +echo "${ECHO_T}$am_cv_func_iconv" >&6 if test "$am_cv_func_iconv" = yes; then cat >>confdefs.h <<\_ACEOF @@ -9896,10 +8515,10 @@ _ACEOF fi if test "$am_cv_lib_iconv" = yes; then - { echo "$as_me:$LINENO: checking how to link with libiconv" >&5 -echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6; } - { echo "$as_me:$LINENO: result: $LIBICONV" >&5 -echo "${ECHO_T}$LIBICONV" >&6; } + echo "$as_me:$LINENO: checking how to link with libiconv" >&5 +echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $LIBICONV" >&5 +echo "${ECHO_T}$LIBICONV" >&6 else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= @@ -9909,8 +8528,8 @@ echo "${ECHO_T}$LIBICONV" >&6; } if test "$am_cv_func_iconv" = yes; then - { echo "$as_me:$LINENO: checking for iconv declaration" >&5 -echo $ECHO_N "checking for iconv declaration... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for iconv declaration" >&5 +echo $ECHO_N "checking for iconv declaration... $ECHO_C" >&6 if test "${am_cv_proto_iconv+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -9943,36 +8562,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -9981,18 +8588,17 @@ else 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 +rm -f 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/( /(/'` - { echo "$as_me:$LINENO: result: ${ac_t:- + echo "$as_me:$LINENO: result: ${ac_t:- }$am_cv_proto_iconv" >&5 echo "${ECHO_T}${ac_t:- - }$am_cv_proto_iconv" >&6; } + }$am_cv_proto_iconv" >&6 cat >>confdefs.h <<_ACEOF #define ICONV_CONST $am_cv_proto_iconv_arg1 @@ -10001,8 +8607,8 @@ _ACEOF fi - { echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 -echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 +echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6 if test "${am_cv_langinfo_codeset+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -10022,36 +8628,24 @@ char* cs = nl_langinfo(CODESET); } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -10060,15 +8654,14 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $am_cv_langinfo_codeset" >&5 -echo "${ECHO_T}$am_cv_langinfo_codeset" >&6; } +echo "$as_me:$LINENO: result: $am_cv_langinfo_codeset" >&5 +echo "${ECHO_T}$am_cv_langinfo_codeset" >&6 if test $am_cv_langinfo_codeset = yes; then cat >>confdefs.h <<\_ACEOF @@ -10079,8 +8672,8 @@ _ACEOF if test $ac_cv_header_locale_h = yes; then - { echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 -echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 +echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6 if test "${am_cv_val_LC_MESSAGES+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -10100,36 +8693,24 @@ return LC_MESSAGES } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -10138,14 +8719,13 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 -echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6; } +echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 +echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6 if test $am_cv_val_LC_MESSAGES = yes; then cat >>confdefs.h <<\_ACEOF @@ -10160,8 +8740,8 @@ _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 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_INTLBISON+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -10174,35 +8754,33 @@ 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_INTLBISON="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi INTLBISON=$ac_cv_prog_INTLBISON if test -n "$INTLBISON"; then - { echo "$as_me:$LINENO: result: $INTLBISON" >&5 -echo "${ECHO_T}$INTLBISON" >&6; } + echo "$as_me:$LINENO: result: $INTLBISON" >&5 +echo "${ECHO_T}$INTLBISON" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - test -n "$INTLBISON" && break done if test -z "$INTLBISON"; then ac_verc_fail=yes else - { echo "$as_me:$LINENO: checking version of bison" >&5 -echo $ECHO_N "checking version of bison... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking version of bison" >&5 +echo $ECHO_N "checking version of bison... $ECHO_C" >&6 ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` case $ac_prog_version in '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; @@ -10210,8 +8788,8 @@ echo $ECHO_N "checking version of bison... $ECHO_C" >&6; } ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; esac - { echo "$as_me:$LINENO: result: $ac_prog_version" >&5 -echo "${ECHO_T}$ac_prog_version" >&6; } + echo "$as_me:$LINENO: result: $ac_prog_version" >&5 +echo "${ECHO_T}$ac_prog_version" >&6 fi if test $ac_verc_fail = yes; then INTLBISON=: @@ -10232,17 +8810,17 @@ echo "${ECHO_T}$ac_prog_version" >&6; } - { echo "$as_me:$LINENO: checking whether NLS is requested" >&5 -echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6; } - # Check whether --enable-nls was given. + echo "$as_me:$LINENO: checking whether NLS is requested" >&5 +echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 + # Check whether --enable-nls or --disable-nls was given. if test "${enable_nls+set}" = set; then - enableval=$enable_nls; USE_NLS=$enableval + enableval="$enable_nls" + USE_NLS=$enableval else USE_NLS=yes -fi - - { echo "$as_me:$LINENO: result: $USE_NLS" >&5 -echo "${ECHO_T}$USE_NLS" >&6; } +fi; + echo "$as_me:$LINENO: result: $USE_NLS" >&5 +echo "${ECHO_T}$USE_NLS" >&6 @@ -10257,18 +8835,18 @@ echo "${ECHO_T}$USE_NLS" >&6; } if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no - { echo "$as_me:$LINENO: checking whether included gettext is requested" >&5 -echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking whether included gettext is requested" >&5 +echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6 -# Check whether --with-included-gettext was given. +# Check whether --with-included-gettext or --without-included-gettext was given. if test "${with_included_gettext+set}" = set; then - withval=$with_included_gettext; nls_cv_force_use_gnu_gettext=$withval + withval="$with_included_gettext" + nls_cv_force_use_gnu_gettext=$withval else nls_cv_force_use_gnu_gettext=no -fi - - { echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5 -echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6; } +fi; + echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5 +echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6 nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then @@ -10278,8 +8856,8 @@ echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6; } - { echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 -echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 +echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6 if test "${gt_cv_func_gnugettext2_libc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -10302,36 +8880,24 @@ return (int) gettext ("") + (int) ngettext ("", "", 0) + _nl_msg_cat_cntr + *_nl } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -10340,14 +8906,13 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext2_libc" >&5 -echo "${ECHO_T}$gt_cv_func_gnugettext2_libc" >&6; } +echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext2_libc" >&5 +echo "${ECHO_T}$gt_cv_func_gnugettext2_libc" >&6 if test "$gt_cv_func_gnugettext2_libc" != "yes"; then @@ -10367,9 +8932,10 @@ echo "${ECHO_T}$gt_cv_func_gnugettext2_libc" >&6; } prefix="$acl_save_prefix" -# Check whether --with-libintl-prefix was given. +# Check whether --with-libintl-prefix or --without-libintl-prefix was given. if test "${with_libintl_prefix+set}" = set; then - withval=$with_libintl_prefix; + withval="$with_libintl_prefix" + if test "X$withval" = "Xno"; then use_additional=no else @@ -10392,8 +8958,7 @@ if test "${with_libintl_prefix+set}" = set; then fi fi -fi - +fi; LIBINTL= LTLIBINTL= INCINTL= @@ -10729,8 +9294,8 @@ fi done fi - { echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5 -echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5 +echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6 if test "${gt_cv_func_gnugettext2_libintl+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -10761,36 +9326,24 @@ return (int) gettext ("") + (int) ngettext ("", "", 0) + _nl_msg_cat_cntr + *_nl } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -10799,10 +9352,9 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - gt_cv_func_gnugettext2_libintl=no +gt_cv_func_gnugettext2_libintl=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f 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" @@ -10829,36 +9381,24 @@ return (int) gettext ("") + (int) ngettext ("", "", 0) + _nl_msg_cat_cntr + *_nl } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -10870,17 +9410,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" fi -{ echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext2_libintl" >&5 -echo "${ECHO_T}$gt_cv_func_gnugettext2_libintl" >&6; } +echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext2_libintl" >&5 +echo "${ECHO_T}$gt_cv_func_gnugettext2_libintl" >&6 fi if test "$gt_cv_func_gnugettext2_libc" = "yes" \ @@ -10926,13 +9464,13 @@ _ACEOF fi fi - { echo "$as_me:$LINENO: checking whether to use NLS" >&5 -echo $ECHO_N "checking whether to use NLS... $ECHO_C" >&6; } - { echo "$as_me:$LINENO: result: $USE_NLS" >&5 -echo "${ECHO_T}$USE_NLS" >&6; } + echo "$as_me:$LINENO: checking whether to use NLS" >&5 +echo $ECHO_N "checking whether to use NLS... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $USE_NLS" >&5 +echo "${ECHO_T}$USE_NLS" >&6 if test "$USE_NLS" = "yes"; then - { echo "$as_me:$LINENO: checking where the gettext function comes from" >&5 -echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking where the gettext function comes from" >&5 +echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&6 if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext2_libintl" = "yes"; then gt_source="external libintl" @@ -10942,18 +9480,18 @@ echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&6; } else gt_source="included intl directory" fi - { echo "$as_me:$LINENO: result: $gt_source" >&5 -echo "${ECHO_T}$gt_source" >&6; } + echo "$as_me:$LINENO: result: $gt_source" >&5 +echo "${ECHO_T}$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 - { echo "$as_me:$LINENO: checking how to link with libintl" >&5 -echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6; } - { echo "$as_me:$LINENO: result: $LIBINTL" >&5 -echo "${ECHO_T}$LIBINTL" >&6; } + echo "$as_me:$LINENO: checking how to link with libintl" >&5 +echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $LIBINTL" >&5 +echo "${ECHO_T}$LIBINTL" >&6 for element in $INCINTL; do haveit= @@ -11040,9 +9578,9 @@ _ACEOF ac_header_dirent=no for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 -echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 +echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -11064,36 +9602,24 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -11102,14 +9628,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_Header=no" +eval "$as_ac_Header=no" fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 @@ -11121,12 +9645,13 @@ fi done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then - { echo "$as_me:$LINENO: checking for library containing opendir" >&5 -echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for library containing opendir" >&5 +echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 if test "${ac_cv_search_opendir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS +ac_cv_search_opendir=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -11134,99 +9659,126 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char opendir (); int main () { -return opendir (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_search_opendir=$ac_res + ac_cv_search_opendir="none required" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search_opendir" = no; then + for ac_lib in dir; do + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if test "${ac_cv_search_opendir+set}" = set; then - break -fi -done -if test "${ac_cv_search_opendir+set}" = set; then - : +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +int +main () +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_opendir="-l$ac_lib" +break else - ac_cv_search_opendir=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done fi -rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 -echo "${ECHO_T}$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" +echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 +echo "${ECHO_T}$ac_cv_search_opendir" >&6 +if test "$ac_cv_search_opendir" != no; then + test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" fi else - { echo "$as_me:$LINENO: checking for library containing opendir" >&5 -echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for library containing opendir" >&5 +echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 if test "${ac_cv_search_opendir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS +ac_cv_search_opendir=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -11234,96 +9786,122 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char opendir (); int main () { -return opendir (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_search_opendir=$ac_res + ac_cv_search_opendir="none required" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search_opendir" = no; then + for ac_lib in x; do + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if test "${ac_cv_search_opendir+set}" = set; then - break -fi -done -if test "${ac_cv_search_opendir+set}" = set; then - : +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +int +main () +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_opendir="-l$ac_lib" +break else - ac_cv_search_opendir=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done fi -rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 -echo "${ECHO_T}$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" +echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 +echo "${ECHO_T}$ac_cv_search_opendir" >&6 +if test "$ac_cv_search_opendir" != no; then + test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" fi fi -{ echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 -echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 +echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6 if test "${ac_cv_header_time+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -11347,36 +9925,24 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -11385,13 +9951,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_header_time=no +ac_cv_header_time=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 -echo "${ECHO_T}$ac_cv_header_time" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 +echo "${ECHO_T}$ac_cv_header_time" >&6 if test $ac_cv_header_time = yes; then cat >>confdefs.h <<\_ACEOF @@ -11406,19 +9971,18 @@ fi for ac_header in inttypes.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -11429,36 +9993,24 @@ $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -11467,16 +10019,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -11485,13 +10036,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -11515,10 +10061,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -11542,24 +10087,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## ------------------------------- ## ## Report this to bug-bash@gnu.org ## ## ------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -11597,19 +10143,18 @@ for ac_header in unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \ stddef.h stdint.h netdb.h pwd.h grp.h strings.h regex.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -11620,36 +10165,24 @@ $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -11658,16 +10191,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -11676,13 +10208,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -11706,10 +10233,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -11733,24 +10259,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## ------------------------------- ## ## Report this to bug-bash@gnu.org ## ## ------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -11779,19 +10306,18 @@ for ac_header in sys/pte.h sys/stream.h sys/select.h sys/file.h \ sys/time.h sys/times.h sys/types.h sys/wait.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -11802,36 +10328,24 @@ $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -11840,16 +10354,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -11858,13 +10371,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -11888,10 +10396,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -11915,24 +10422,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## ------------------------------- ## ## Report this to bug-bash@gnu.org ## ## ------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -11949,19 +10457,18 @@ done for ac_header in netinet/in.h arpa/inet.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -11972,36 +10479,24 @@ $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -12010,16 +10505,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -12028,13 +10522,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -12058,10 +10547,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -12085,24 +10573,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## ------------------------------- ## ## Report this to bug-bash@gnu.org ## ## ------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -12115,8 +10604,8 @@ fi done -{ echo "$as_me:$LINENO: checking for sys/ptem.h" >&5 -echo $ECHO_N "checking for sys/ptem.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for sys/ptem.h" >&5 +echo $ECHO_N "checking for sys/ptem.h... $ECHO_C" >&6 if test "${ac_cv_header_sys_ptem_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -12135,36 +10624,24 @@ cat >>conftest.$ac_ext <<_ACEOF #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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -12173,20 +10650,19 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_header_sys_ptem_h=no +ac_cv_header_sys_ptem_h=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_sys_ptem_h" >&5 -echo "${ECHO_T}$ac_cv_header_sys_ptem_h" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_header_sys_ptem_h" >&5 +echo "${ECHO_T}$ac_cv_header_sys_ptem_h" >&6 # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! -{ echo "$as_me:$LINENO: checking for working alloca.h" >&5 -echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for working alloca.h" >&5 +echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 if test "${ac_cv_working_alloca_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -12201,42 +10677,29 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -12245,14 +10708,13 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 -echo "${ECHO_T}$ac_cv_working_alloca_h" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 if test $ac_cv_working_alloca_h = yes; then cat >>confdefs.h <<\_ACEOF @@ -12261,8 +10723,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for alloca" >&5 -echo $ECHO_N "checking for alloca... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for alloca" >&5 +echo $ECHO_N "checking for alloca... $ECHO_C" >&6 if test "${ac_cv_func_alloca_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -12297,42 +10759,29 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -12341,14 +10790,13 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 -echo "${ECHO_T}$ac_cv_func_alloca_works" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 if test $ac_cv_func_alloca_works = yes; then @@ -12362,15 +10810,15 @@ else # 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 +ALLOCA=alloca.$ac_objext cat >>confdefs.h <<\_ACEOF #define C_ALLOCA 1 _ACEOF -{ echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 -echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 if test "${ac_cv_os_cray+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -12380,7 +10828,7 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#if defined CRAY && ! defined CRAY2 +#if defined(CRAY) && ! defined(CRAY2) webecray #else wenotbecray @@ -12396,14 +10844,14 @@ fi rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 -echo "${ECHO_T}$ac_cv_os_cray" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +echo "${ECHO_T}$ac_cv_os_cray" >&6 if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -12429,59 +10877,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -12490,15 +10932,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @@ -12511,8 +10951,8 @@ fi done fi -{ echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 -echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 if test "${ac_cv_c_stack_direction+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -12525,7 +10965,6 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_includes_default int find_stack_direction () { @@ -12543,26 +10982,17 @@ find_stack_direction () int main () { - return find_stack_direction () < 0; + exit (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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -12575,13 +11005,11 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_c_stack_direction=-1 fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 -echo "${ECHO_T}$ac_cv_c_stack_direction" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 cat >>confdefs.h <<_ACEOF #define STACK_DIRECTION $ac_cv_c_stack_direction @@ -12590,8 +11018,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether getpgrp requires zero arguments" >&5 -echo $ECHO_N "checking whether getpgrp requires zero arguments... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether getpgrp requires zero arguments" >&5 +echo $ECHO_N "checking whether getpgrp requires zero arguments... $ECHO_C" >&6 if test "${ac_cv_func_getpgrp_void+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -12612,36 +11040,24 @@ getpgrp (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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -12650,14 +11066,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func_getpgrp_void=yes +ac_cv_func_getpgrp_void=yes fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_getpgrp_void" >&5 -echo "${ECHO_T}$ac_cv_func_getpgrp_void" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func_getpgrp_void" >&5 +echo "${ECHO_T}$ac_cv_func_getpgrp_void" >&6 if test $ac_cv_func_getpgrp_void = yes; then cat >>confdefs.h <<\_ACEOF @@ -12666,8 +11081,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether setvbuf arguments are reversed" >&5 -echo $ECHO_N "checking whether setvbuf arguments are reversed... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether setvbuf arguments are reversed" >&5 +echo $ECHO_N "checking whether setvbuf arguments are reversed... $ECHO_C" >&6 if test "${ac_cv_func_setvbuf_reversed+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -12691,36 +11106,24 @@ char buf; return setvbuf (stdout, _IOLBF, &buf, 1); } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -12743,36 +11146,24 @@ char buf; return setvbuf (stdout, &buf, _IOLBF, 1); } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -12788,7 +11179,7 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_includes_default +#include int main () { @@ -12797,30 +11188,21 @@ main () is not _IOLBF, _IONBF, or _IOFBF, and return nonzero. */ char buf; if (setvbuf (stdout, _IOLBF, &buf, 1) != 0) - return 1; + exit (1); putchar ('\r'); - return 0; /* Non-reversed systems SEGV here. */ + exit (0); /* Non-reversed systems SEGV here. */ ; 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -12830,33 +11212,29 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 +( exit $ac_status ) +rm -f core *.core fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - ac_cv_func_setvbuf_reversed=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_setvbuf_reversed" >&5 -echo "${ECHO_T}$ac_cv_func_setvbuf_reversed" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func_setvbuf_reversed" >&5 +echo "${ECHO_T}$ac_cv_func_setvbuf_reversed" >&6 if test $ac_cv_func_setvbuf_reversed = yes; then cat >>confdefs.h <<\_ACEOF @@ -12869,9 +11247,9 @@ fi for ac_func in vprintf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -12897,59 +11275,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -12958,22 +11330,20 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF -{ echo "$as_me:$LINENO: checking for _doprnt" >&5 -echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for _doprnt" >&5 +echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6 if test "${ac_cv_func__doprnt+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -13000,59 +11370,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub__doprnt) || defined (__stub____doprnt) choke me +#else +char (*f) () = _doprnt; +#endif +#ifdef __cplusplus +} #endif int main () { -return _doprnt (); +return f != _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -13061,14 +11425,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func__doprnt=no +ac_cv_func__doprnt=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5 -echo "${ECHO_T}$ac_cv_func__doprnt" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5 +echo "${ECHO_T}$ac_cv_func__doprnt" >&6 if test $ac_cv_func__doprnt = yes; then cat >>confdefs.h <<\_ACEOF @@ -13081,8 +11444,8 @@ fi done -{ echo "$as_me:$LINENO: checking for working strcoll" >&5 -echo $ECHO_N "checking for working strcoll... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for working strcoll" >&5 +echo $ECHO_N "checking for working strcoll... $ECHO_C" >&6 if test "${ac_cv_func_strcoll_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -13099,7 +11462,7 @@ $ac_includes_default int main () { -return (strcoll ("abc", "def") >= 0 || +exit (strcoll ("abc", "def") >= 0 || strcoll ("ABC", "DEF") >= 0 || strcoll ("123", "456") >= 0) ; @@ -13107,22 +11470,13 @@ return (strcoll ("abc", "def") >= 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -13135,13 +11489,11 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_strcoll_works=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_strcoll_works" >&5 -echo "${ECHO_T}$ac_cv_func_strcoll_works" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func_strcoll_works" >&5 +echo "${ECHO_T}$ac_cv_func_strcoll_works" >&6 if test $ac_cv_func_strcoll_works = yes; then cat >>confdefs.h <<\_ACEOF @@ -13163,8 +11515,8 @@ if test "$ac_cv_func_alloca_works" = "no" && test "$opt_bash_malloc" = "no"; the fi if test "$ac_cv_func_vprintf" = no; then - { echo "$as_me:$LINENO: checking for declaration of vprintf in stdio.h" >&5 -echo $ECHO_N "checking for declaration of vprintf in stdio.h... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for declaration of vprintf in stdio.h" >&5 +echo $ECHO_N "checking for declaration of vprintf in stdio.h... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -13180,8 +11532,8 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | fi rm -f conftest* - { echo "$as_me:$LINENO: result: $ac_cv_func_vprintf" >&5 -echo "${ECHO_T}$ac_cv_func_vprintf" >&6; } + echo "$as_me:$LINENO: result: $ac_cv_func_vprintf" >&5 +echo "${ECHO_T}$ac_cv_func_vprintf" >&6 if test $ac_cv_func_vprintf = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_VPRINTF 1 @@ -13191,16 +11543,18 @@ _ACEOF fi if test "$ac_cv_func_vprintf" = no && test "$ac_cv_func__doprnt" = "yes"; then - case " $LIBOBJS " in + case $LIBOBJS in + "vprint.$ac_objext" | \ + *" vprint.$ac_objext" | \ + "vprint.$ac_objext "* | \ *" vprint.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS vprint.$ac_objext" - ;; + *) LIBOBJS="$LIBOBJS vprint.$ac_objext" ;; esac fi -{ echo "$as_me:$LINENO: checking return type of signal handlers" >&5 -echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking return type of signal handlers" >&5 +echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 if test "${ac_cv_type_signal+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -13212,61 +11566,56 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include +#ifdef signal +# undef signal +#endif +#ifdef __cplusplus +extern "C" void (*signal (int, void (*)(int)))(int); +#else +void (*signal ()) (); +#endif int main () { -return *(signal (0, 0)) (0) == 1; +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_type_signal=int + ac_cv_type_signal=void else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_signal=void +ac_cv_type_signal=int fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 -echo "${ECHO_T}$ac_cv_type_signal" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 +echo "${ECHO_T}$ac_cv_type_signal" >&6 cat >>confdefs.h <<_ACEOF #define RETSIGTYPE $ac_cv_type_signal @@ -13274,8 +11623,8 @@ _ACEOF -{ echo "$as_me:$LINENO: checking for __setostype" >&5 -echo $ECHO_N "checking for __setostype... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for __setostype" >&5 +echo $ECHO_N "checking for __setostype... $ECHO_C" >&6 if test "${ac_cv_func___setostype+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -13302,59 +11651,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub___setostype) || defined (__stub_____setostype) choke me +#else +char (*f) () = __setostype; +#endif +#ifdef __cplusplus +} #endif int main () { -return __setostype (); +return f != __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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -13363,14 +11706,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func___setostype=no +ac_cv_func___setostype=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func___setostype" >&5 -echo "${ECHO_T}$ac_cv_func___setostype" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func___setostype" >&5 +echo "${ECHO_T}$ac_cv_func___setostype" >&6 if test $ac_cv_func___setostype = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_SETOSTYPE 1 @@ -13378,8 +11720,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for wait3" >&5 -echo $ECHO_N "checking for wait3... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for wait3" >&5 +echo $ECHO_N "checking for wait3... $ECHO_C" >&6 if test "${ac_cv_func_wait3+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -13406,59 +11748,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_wait3) || defined (__stub___wait3) choke me +#else +char (*f) () = wait3; +#endif +#ifdef __cplusplus +} #endif int main () { -return wait3 (); +return f != 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -13467,14 +11803,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func_wait3=no +ac_cv_func_wait3=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_wait3" >&5 -echo "${ECHO_T}$ac_cv_func_wait3" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func_wait3" >&5 +echo "${ECHO_T}$ac_cv_func_wait3" >&6 if test $ac_cv_func_wait3 = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_WAIT3 1 @@ -13482,8 +11817,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for isinf" >&5 -echo $ECHO_N "checking for isinf... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for isinf" >&5 +echo $ECHO_N "checking for isinf... $ECHO_C" >&6 if test "${ac_cv_func_isinf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -13510,189 +11845,78 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#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 "echo \"\$as_me:$LINENO: $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 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_isinf=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_isinf=no -fi - -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_isinf" >&5 -echo "${ECHO_T}$ac_cv_func_isinf" >&6; } -if test $ac_cv_func_isinf = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_ISINF_IN_LIBC 1 -_ACEOF - -fi - -{ echo "$as_me:$LINENO: checking for isnan" >&5 -echo $ECHO_N "checking for isnan... $ECHO_C" >&6; } -if test "${ac_cv_func_isnan+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&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 +char (*f) () = isinf; #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 f != 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_func_isnan=yes + ac_cv_func_isinf=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func_isnan=no +ac_cv_func_isinf=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_isnan" >&5 -echo "${ECHO_T}$ac_cv_func_isnan" >&6; } -if test $ac_cv_func_isnan = yes; then +echo "$as_me:$LINENO: result: $ac_cv_func_isinf" >&5 +echo "${ECHO_T}$ac_cv_func_isinf" >&6 +if test $ac_cv_func_isinf = yes; then cat >>confdefs.h <<\_ACEOF -#define HAVE_ISNAN_IN_LIBC 1 +#define HAVE_ISINF_IN_LIBC 1 _ACEOF fi -{ echo "$as_me:$LINENO: checking for mkfifo" >&5 -echo $ECHO_N "checking for mkfifo... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for mkfifo" >&5 +echo $ECHO_N "checking for mkfifo... $ECHO_C" >&6 if test "${ac_cv_func_mkfifo+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -13719,59 +11943,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_mkfifo) || defined (__stub___mkfifo) choke me +#else +char (*f) () = mkfifo; +#endif +#ifdef __cplusplus +} #endif int main () { -return mkfifo (); +return f != 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -13780,14 +11998,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func_mkfifo=no +ac_cv_func_mkfifo=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_mkfifo" >&5 -echo "${ECHO_T}$ac_cv_func_mkfifo" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func_mkfifo" >&5 +echo "${ECHO_T}$ac_cv_func_mkfifo" >&6 if test $ac_cv_func_mkfifo = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_MKFIFO 1 @@ -13829,9 +12046,9 @@ for ac_func in dup2 eaccess fcntl getdtablesize getgroups gethostname \ tcgetpgrp uname ulimit waitpid do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -13857,59 +12074,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -13918,15 +12129,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -13939,9 +12148,9 @@ done for ac_func in rename do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -13967,59 +12176,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -14028,25 +12231,25 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else - case " $LIBOBJS " in + case $LIBOBJS in + "$ac_func.$ac_objext" | \ + *" $ac_func.$ac_objext" | \ + "$ac_func.$ac_objext "* | \ *" $ac_func.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" - ;; + *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" ;; esac fi @@ -14088,9 +12291,9 @@ for ac_func in bcopy bzero confstr fnmatch \ sysconf tcgetattr times ttyname tzset unsetenv do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -14116,59 +12319,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -14177,15 +12374,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -14202,9 +12397,9 @@ done for ac_func in vsnprintf snprintf vasprintf asprintf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -14230,59 +12425,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -14291,15 +12480,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -14317,9 +12504,9 @@ done for ac_func in isascii isblank isgraph isprint isspace isxdigit do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -14345,59 +12532,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -14406,15 +12587,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -14429,9 +12608,9 @@ done for ac_func in getpwent getpwnam getpwuid do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -14457,59 +12636,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -14518,15 +12691,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -14546,9 +12717,9 @@ done for ac_func in getcwd memset strcasecmp strerror strftime strnlen strpbrk strstr do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -14574,59 +12745,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -14635,25 +12800,25 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else - case " $LIBOBJS " in + case $LIBOBJS in + "$ac_func.$ac_objext" | \ + *" $ac_func.$ac_objext" | \ + "$ac_func.$ac_objext "* | \ *" $ac_func.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" - ;; + *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" ;; esac fi @@ -14670,9 +12835,9 @@ done for ac_func in strtod strtol strtoul strtoll strtoull strtoimax strtoumax do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -14698,59 +12863,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -14759,25 +12918,25 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else - case " $LIBOBJS " in + case $LIBOBJS in + "$ac_func.$ac_objext" | \ + *" $ac_func.$ac_objext" | \ + "$ac_func.$ac_objext "* | \ *" $ac_func.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" - ;; + *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" ;; esac fi @@ -14785,8 +12944,8 @@ done -{ echo "$as_me:$LINENO: checking whether confstr is declared" >&5 -echo $ECHO_N "checking whether confstr is declared... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether confstr is declared" >&5 +echo $ECHO_N "checking whether confstr is declared... $ECHO_C" >&6 if test "${ac_cv_have_decl_confstr+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -14802,7 +12961,6 @@ main () { #ifndef confstr char *p = (char *) confstr; - return !p; #endif ; @@ -14810,36 +12968,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -14848,13 +12994,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_have_decl_confstr=no +ac_cv_have_decl_confstr=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_confstr" >&5 -echo "${ECHO_T}$ac_cv_have_decl_confstr" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_have_decl_confstr" >&5 +echo "${ECHO_T}$ac_cv_have_decl_confstr" >&6 if test $ac_cv_have_decl_confstr = yes; then cat >>confdefs.h <<_ACEOF @@ -14871,8 +13016,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether printf is declared" >&5 -echo $ECHO_N "checking whether printf is declared... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether printf is declared" >&5 +echo $ECHO_N "checking whether printf is declared... $ECHO_C" >&6 if test "${ac_cv_have_decl_printf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -14888,7 +13033,6 @@ main () { #ifndef printf char *p = (char *) printf; - return !p; #endif ; @@ -14896,36 +13040,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -14934,13 +13066,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_have_decl_printf=no +ac_cv_have_decl_printf=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_printf" >&5 -echo "${ECHO_T}$ac_cv_have_decl_printf" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_have_decl_printf" >&5 +echo "${ECHO_T}$ac_cv_have_decl_printf" >&6 if test $ac_cv_have_decl_printf = yes; then cat >>confdefs.h <<_ACEOF @@ -14957,8 +13088,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether sbrk is declared" >&5 -echo $ECHO_N "checking whether sbrk is declared... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether sbrk is declared" >&5 +echo $ECHO_N "checking whether sbrk is declared... $ECHO_C" >&6 if test "${ac_cv_have_decl_sbrk+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -14974,7 +13105,6 @@ main () { #ifndef sbrk char *p = (char *) sbrk; - return !p; #endif ; @@ -14982,36 +13112,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -15020,13 +13138,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_have_decl_sbrk=no +ac_cv_have_decl_sbrk=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_sbrk" >&5 -echo "${ECHO_T}$ac_cv_have_decl_sbrk" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_have_decl_sbrk" >&5 +echo "${ECHO_T}$ac_cv_have_decl_sbrk" >&6 if test $ac_cv_have_decl_sbrk = yes; then cat >>confdefs.h <<_ACEOF @@ -15043,8 +13160,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether setregid is declared" >&5 -echo $ECHO_N "checking whether setregid is declared... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether setregid is declared" >&5 +echo $ECHO_N "checking whether setregid is declared... $ECHO_C" >&6 if test "${ac_cv_have_decl_setregid+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15060,7 +13177,6 @@ main () { #ifndef setregid char *p = (char *) setregid; - return !p; #endif ; @@ -15068,36 +13184,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -15106,13 +13210,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_have_decl_setregid=no +ac_cv_have_decl_setregid=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_setregid" >&5 -echo "${ECHO_T}$ac_cv_have_decl_setregid" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_have_decl_setregid" >&5 +echo "${ECHO_T}$ac_cv_have_decl_setregid" >&6 if test $ac_cv_have_decl_setregid = yes; then cat >>confdefs.h <<_ACEOF @@ -15129,8 +13232,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether strcpy is declared" >&5 -echo $ECHO_N "checking whether strcpy is declared... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether strcpy is declared" >&5 +echo $ECHO_N "checking whether strcpy is declared... $ECHO_C" >&6 if test "${ac_cv_have_decl_strcpy+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15146,7 +13249,6 @@ main () { #ifndef strcpy char *p = (char *) strcpy; - return !p; #endif ; @@ -15154,36 +13256,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -15192,13 +13282,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_have_decl_strcpy=no +ac_cv_have_decl_strcpy=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_strcpy" >&5 -echo "${ECHO_T}$ac_cv_have_decl_strcpy" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_have_decl_strcpy" >&5 +echo "${ECHO_T}$ac_cv_have_decl_strcpy" >&6 if test $ac_cv_have_decl_strcpy = yes; then cat >>confdefs.h <<_ACEOF @@ -15215,8 +13304,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether strsignal is declared" >&5 -echo $ECHO_N "checking whether strsignal is declared... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether strsignal is declared" >&5 +echo $ECHO_N "checking whether strsignal is declared... $ECHO_C" >&6 if test "${ac_cv_have_decl_strsignal+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15232,7 +13321,6 @@ main () { #ifndef strsignal char *p = (char *) strsignal; - return !p; #endif ; @@ -15240,36 +13328,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -15278,13 +13354,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_have_decl_strsignal=no +ac_cv_have_decl_strsignal=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_strsignal" >&5 -echo "${ECHO_T}$ac_cv_have_decl_strsignal" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_have_decl_strsignal" >&5 +echo "${ECHO_T}$ac_cv_have_decl_strsignal" >&6 if test $ac_cv_have_decl_strsignal = yes; then cat >>confdefs.h <<_ACEOF @@ -15302,8 +13377,8 @@ fi -{ echo "$as_me:$LINENO: checking whether strtold is declared" >&5 -echo $ECHO_N "checking whether strtold is declared... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether strtold is declared" >&5 +echo $ECHO_N "checking whether strtold is declared... $ECHO_C" >&6 if test "${ac_cv_have_decl_strtold+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15319,7 +13394,6 @@ main () { #ifndef strtold char *p = (char *) strtold; - return !p; #endif ; @@ -15327,36 +13401,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -15365,13 +13427,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_have_decl_strtold=no +ac_cv_have_decl_strtold=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_strtold" >&5 -echo "${ECHO_T}$ac_cv_have_decl_strtold" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_have_decl_strtold" >&5 +echo "${ECHO_T}$ac_cv_have_decl_strtold" >&6 if test $ac_cv_have_decl_strtold = yes; then cat >>confdefs.h <<_ACEOF @@ -15379,8 +13440,8 @@ cat >>confdefs.h <<_ACEOF _ACEOF - { echo "$as_me:$LINENO: checking for broken strtold" >&5 -echo $ECHO_N "checking for broken strtold... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for broken strtold" >&5 +echo $ECHO_N "checking for broken strtold... $ECHO_C" >&6 if test "${bash_cv_strtold_broken+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15400,36 +13461,24 @@ int main() { long double r; char *foo, bar; r = strtold(foo, &bar);} } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -15438,16 +13487,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - bash_cv_strtold_broken=yes +bash_cv_strtold_broken=yes fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - { echo "$as_me:$LINENO: result: $bash_cv_strtold_broken" >&5 -echo "${ECHO_T}$bash_cv_strtold_broken" >&6; } + echo "$as_me:$LINENO: result: $bash_cv_strtold_broken" >&5 +echo "${ECHO_T}$bash_cv_strtold_broken" >&6 if test "$bash_cv_strtold_broken" = "yes" ; then cat >>confdefs.h <<\_ACEOF #define STRTOLD_BROKEN 1 @@ -15469,8 +13517,8 @@ fi -{ echo "$as_me:$LINENO: checking for declaration of strtoimax" >&5 -echo $ECHO_N "checking for declaration of strtoimax... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for declaration of strtoimax" >&5 +echo $ECHO_N "checking for declaration of strtoimax... $ECHO_C" >&6 if test "${bash_cv_decl_strtoimax+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15497,36 +13545,24 @@ return !strtoimax; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -15535,14 +13571,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - bash_cv_decl_strtoimax=no +bash_cv_decl_strtoimax=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_decl_strtoimax" >&5 -echo "${ECHO_T}$bash_cv_decl_strtoimax" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoimax" >&5 +echo "${ECHO_T}$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 @@ -15559,8 +13594,8 @@ fi -{ echo "$as_me:$LINENO: checking for declaration of strtol" >&5 -echo $ECHO_N "checking for declaration of strtol... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for declaration of strtol" >&5 +echo $ECHO_N "checking for declaration of strtol... $ECHO_C" >&6 if test "${bash_cv_decl_strtol+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15587,36 +13622,24 @@ return !strtol; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -15625,14 +13648,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - bash_cv_decl_strtol=no +bash_cv_decl_strtol=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_decl_strtol" >&5 -echo "${ECHO_T}$bash_cv_decl_strtol" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_decl_strtol" >&5 +echo "${ECHO_T}$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 @@ -15649,8 +13671,8 @@ fi -{ echo "$as_me:$LINENO: checking for declaration of strtoll" >&5 -echo $ECHO_N "checking for declaration of strtoll... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for declaration of strtoll" >&5 +echo $ECHO_N "checking for declaration of strtoll... $ECHO_C" >&6 if test "${bash_cv_decl_strtoll+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15677,36 +13699,24 @@ return !strtoll; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -15715,14 +13725,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - bash_cv_decl_strtoll=no +bash_cv_decl_strtoll=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_decl_strtoll" >&5 -echo "${ECHO_T}$bash_cv_decl_strtoll" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoll" >&5 +echo "${ECHO_T}$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 @@ -15739,8 +13748,8 @@ fi -{ echo "$as_me:$LINENO: checking for declaration of strtoul" >&5 -echo $ECHO_N "checking for declaration of strtoul... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for declaration of strtoul" >&5 +echo $ECHO_N "checking for declaration of strtoul... $ECHO_C" >&6 if test "${bash_cv_decl_strtoul+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15767,36 +13776,24 @@ return !strtoul; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -15805,14 +13802,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - bash_cv_decl_strtoul=no +bash_cv_decl_strtoul=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_decl_strtoul" >&5 -echo "${ECHO_T}$bash_cv_decl_strtoul" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoul" >&5 +echo "${ECHO_T}$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 @@ -15829,8 +13825,8 @@ fi -{ echo "$as_me:$LINENO: checking for declaration of strtoull" >&5 -echo $ECHO_N "checking for declaration of strtoull... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for declaration of strtoull" >&5 +echo $ECHO_N "checking for declaration of strtoull... $ECHO_C" >&6 if test "${bash_cv_decl_strtoull+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15857,36 +13853,24 @@ return !strtoull; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -15895,14 +13879,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - bash_cv_decl_strtoull=no +bash_cv_decl_strtoull=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_decl_strtoull" >&5 -echo "${ECHO_T}$bash_cv_decl_strtoull" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoull" >&5 +echo "${ECHO_T}$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 @@ -15919,8 +13902,8 @@ fi -{ echo "$as_me:$LINENO: checking for declaration of strtoumax" >&5 -echo $ECHO_N "checking for declaration of strtoumax... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for declaration of strtoumax" >&5 +echo $ECHO_N "checking for declaration of strtoumax... $ECHO_C" >&6 if test "${bash_cv_decl_strtoumax+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15947,36 +13930,24 @@ return !strtoumax; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -15985,14 +13956,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - bash_cv_decl_strtoumax=no +bash_cv_decl_strtoumax=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_decl_strtoumax" >&5 -echo "${ECHO_T}$bash_cv_decl_strtoumax" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_decl_strtoumax" >&5 +echo "${ECHO_T}$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 @@ -16013,19 +13983,18 @@ fi for ac_header in stdlib.h sys/time.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -16036,36 +14005,24 @@ $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -16074,16 +14031,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -16092,13 +14048,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -16122,10 +14073,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -16149,24 +14099,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## ------------------------------- ## ## Report this to bug-bash@gnu.org ## ## ------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -16182,9 +14133,9 @@ done for ac_func in alarm do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -16210,59 +14161,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -16271,15 +14216,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -16288,8 +14231,8 @@ _ACEOF fi done -{ echo "$as_me:$LINENO: checking for working mktime" >&5 -echo $ECHO_N "checking for working mktime... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for working mktime" >&5 +echo $ECHO_N "checking for working mktime... $ECHO_C" >&6 if test "${ac_cv_func_working_mktime+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -16339,9 +14282,9 @@ static char *tz_strings[] = { }; #define N_STRINGS (sizeof (tz_strings) / sizeof (tz_strings[0])) -/* Return 0 if mktime fails to convert a date in the spring-forward gap. +/* Fail if mktime fails to convert a date in the spring-forward gap. Based on a problem report from Andreas Jaeger. */ -static int +static void spring_forward_gap () { /* glibc (up to about 1998-10-07) failed this test. */ @@ -16360,27 +14303,29 @@ spring_forward_gap () tm.tm_min = 0; tm.tm_sec = 0; tm.tm_isdst = -1; - return mktime (&tm) != (time_t) -1; + if (mktime (&tm) == (time_t)-1) + exit (1); } -static int +static void mktime_test1 (now) time_t now; { struct tm *lt; - return ! (lt = localtime (&now)) || mktime (lt) == now; + if ((lt = localtime (&now)) && mktime (lt) != now) + exit (1); } -static int +static void 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))); + mktime_test1 (now); + mktime_test1 ((time_t) (time_t_max - now)); + mktime_test1 ((time_t) (time_t_min + now)); } -static int +static void irix_6_4_bug () { /* Based on code from Ariel Faigon. */ @@ -16393,10 +14338,11 @@ irix_6_4_bug () tm.tm_sec = 0; tm.tm_isdst = -1; mktime (&tm); - return tm.tm_mon == 2 && tm.tm_mday == 31; + if (tm.tm_mon != 2 || tm.tm_mday != 31) + exit (1); } -static int +static void bigtime_test (j) int j; { @@ -16418,9 +14364,8 @@ bigtime_test (j) && 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; + exit (1); } - return 1; } int @@ -16447,39 +14392,28 @@ main () 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; + mktime_test (t); + mktime_test ((time_t) 1); + mktime_test ((time_t) (60 * 60)); + mktime_test ((time_t) (60 * 60 * 24)); for (j = 1; 0 < j; j *= 2) - if (! bigtime_test (j)) - return 1; - if (! bigtime_test (j - 1)) - return 1; + bigtime_test (j); + bigtime_test (j - 1); } - return ! (irix_6_4_bug () && spring_forward_gap ()); + irix_6_4_bug (); + spring_forward_gap (); + 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -16492,18 +14426,18 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_working_mktime=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_working_mktime" >&5 -echo "${ECHO_T}$ac_cv_func_working_mktime" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func_working_mktime" >&5 +echo "${ECHO_T}$ac_cv_func_working_mktime" >&6 if test $ac_cv_func_working_mktime = no; then - case " $LIBOBJS " in + case $LIBOBJS in + "mktime.$ac_objext" | \ + *" mktime.$ac_objext" | \ + "mktime.$ac_objext "* | \ *" mktime.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS mktime.$ac_objext" - ;; + *) LIBOBJS="$LIBOBJS mktime.$ac_objext" ;; esac fi @@ -16518,19 +14452,18 @@ fi for ac_header in argz.h errno.h fcntl.h malloc.h stdio_ext.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -16541,36 +14474,24 @@ $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -16579,16 +14500,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -16597,13 +14517,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -16627,10 +14542,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -16654,24 +14568,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## ------------------------------- ## ## Report this to bug-bash@gnu.org ## ## ------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -16689,19 +14604,18 @@ done for ac_header in stdlib.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -16712,36 +14626,24 @@ $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -16750,16 +14652,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -16768,13 +14669,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -16798,10 +14694,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -16825,24 +14720,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## ------------------------------- ## ## Report this to bug-bash@gnu.org ## ## ------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -16858,9 +14754,9 @@ done for ac_func in getpagesize do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -16886,59 +14782,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -16947,15 +14837,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -16964,8 +14852,8 @@ _ACEOF fi done -{ echo "$as_me:$LINENO: checking for working mmap" >&5 -echo $ECHO_N "checking for working mmap... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for working mmap" >&5 +echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -17060,15 +14948,15 @@ main () /* First, make a file with some known garbage in it. */ data = (char *) malloc (pagesize); if (!data) - return 1; + exit (1); for (i = 0; i < pagesize; ++i) *(data + i) = rand (); umask (0); fd = creat ("conftest.mmap", 0600); if (fd < 0) - return 1; + exit (1); if (write (fd, data, pagesize) != pagesize) - return 1; + exit (1); close (fd); /* Next, try to mmap the file at a fixed address which already has @@ -17076,17 +14964,17 @@ main () we see the same garbage. */ fd = open ("conftest.mmap", O_RDWR); if (fd < 0) - return 1; + exit (1); data2 = (char *) malloc (2 * pagesize); if (!data2) - return 1; - data2 += (pagesize - ((long int) data2 & (pagesize - 1))) & (pagesize - 1); + exit (1); + data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1); if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FIXED, fd, 0L)) - return 1; + exit (1); for (i = 0; i < pagesize; ++i) if (*(data + i) != *(data2 + i)) - return 1; + exit (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 @@ -17095,33 +14983,24 @@ main () *(data2 + i) = *(data2 + i) + 1; data3 = (char *) malloc (pagesize); if (!data3) - return 1; + exit (1); if (read (fd, data3, pagesize) != pagesize) - return 1; + exit (1); for (i = 0; i < pagesize; ++i) if (*(data + i) != *(data3 + i)) - return 1; + exit (1); close (fd); - return 0; + 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -17134,13 +15013,11 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_mmap_fixed_mapped=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 -echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 +echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6 if test $ac_cv_func_mmap_fixed_mapped = yes; then cat >>confdefs.h <<\_ACEOF @@ -17163,9 +15040,9 @@ for ac_func in __argz_count __argz_next __argz_stringify dcgettext mempcpy \ munmap stpcpy strcspn strdup do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -17191,59 +15068,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -17252,15 +15123,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -17286,19 +15155,18 @@ fi for ac_header in wctype.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -17309,36 +15177,24 @@ $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -17347,16 +15203,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -17365,13 +15220,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -17395,10 +15245,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -17422,24 +15271,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## ------------------------------- ## ## Report this to bug-bash@gnu.org ## ## ------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -17455,19 +15305,18 @@ done for ac_header in wchar.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -17478,36 +15327,24 @@ $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -17516,16 +15353,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -17534,13 +15370,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -17564,10 +15395,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -17591,24 +15421,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## ------------------------------- ## ## Report this to bug-bash@gnu.org ## ## ------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -17624,19 +15455,18 @@ done for ac_header in langinfo.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -17647,36 +15477,24 @@ $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -17685,16 +15503,15 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -17703,13 +15520,8 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -17733,10 +15545,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -17760,24 +15571,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## ------------------------------- ## ## Report this to bug-bash@gnu.org ## ## ------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -17790,8 +15602,8 @@ fi done -{ echo "$as_me:$LINENO: checking for mbsrtowcs" >&5 -echo $ECHO_N "checking for mbsrtowcs... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for mbsrtowcs" >&5 +echo $ECHO_N "checking for mbsrtowcs... $ECHO_C" >&6 if test "${ac_cv_func_mbsrtowcs+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -17818,59 +15630,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_mbsrtowcs) || defined (__stub___mbsrtowcs) choke me +#else +char (*f) () = mbsrtowcs; +#endif +#ifdef __cplusplus +} #endif int main () { -return mbsrtowcs (); +return f != 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -17879,14 +15685,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func_mbsrtowcs=no +ac_cv_func_mbsrtowcs=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_mbsrtowcs" >&5 -echo "${ECHO_T}$ac_cv_func_mbsrtowcs" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func_mbsrtowcs" >&5 +echo "${ECHO_T}$ac_cv_func_mbsrtowcs" >&6 if test $ac_cv_func_mbsrtowcs = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_MBSRTOWCS 1 @@ -17894,9 +15699,9 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for mbrlen" >&5 -echo $ECHO_N "checking for mbrlen... $ECHO_C" >&6; } -if test "${ac_cv_func_mbrlen+set}" = set; then +echo "$as_me:$LINENO: checking for mbrtowc" >&5 +echo $ECHO_N "checking for mbrtowc... $ECHO_C" >&6 +if test "${ac_cv_func_mbrtowc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -17905,12 +15710,12 @@ _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. +/* Define mbrtowc to an innocuous variant, in case declares mbrtowc. For example, HP-UX 11i declares gettimeofday. */ -#define mbrlen innocuous_mbrlen +#define mbrtowc innocuous_mbrtowc /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char mbrlen (); below. + which can conflict with char mbrtowc (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ @@ -17920,88 +15725,80 @@ cat >>conftest.$ac_ext <<_ACEOF # include #endif -#undef mbrlen +#undef mbrtowc -/* 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif -char mbrlen (); +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char mbrtowc (); /* 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 +#if defined (__stub_mbrtowc) || defined (__stub___mbrtowc) choke me +#else +char (*f) () = mbrtowc; +#endif +#ifdef __cplusplus +} #endif int main () { -return mbrlen (); +return f != mbrtowc; ; 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_func_mbrlen=yes + ac_cv_func_mbrtowc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func_mbrlen=no +ac_cv_func_mbrtowc=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_mbrlen" >&5 -echo "${ECHO_T}$ac_cv_func_mbrlen" >&6; } -if test $ac_cv_func_mbrlen = yes; then +echo "$as_me:$LINENO: result: $ac_cv_func_mbrtowc" >&5 +echo "${ECHO_T}$ac_cv_func_mbrtowc" >&6 +if test $ac_cv_func_mbrtowc = yes; then cat >>confdefs.h <<\_ACEOF -#define HAVE_MBRLEN 1 +#define HAVE_MBRTOWC 1 _ACEOF fi - -{ echo "$as_me:$LINENO: checking for wcrtomb" >&5 -echo $ECHO_N "checking for wcrtomb... $ECHO_C" >&6; } -if test "${ac_cv_func_wcrtomb+set}" = set; then +echo "$as_me:$LINENO: checking for mbrlen" >&5 +echo $ECHO_N "checking for mbrlen... $ECHO_C" >&6 +if test "${ac_cv_func_mbrlen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -18010,12 +15807,12 @@ _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. +/* Define mbrlen to an innocuous variant, in case declares mbrlen. For example, HP-UX 11i declares gettimeofday. */ -#define wcrtomb innocuous_wcrtomb +#define mbrlen innocuous_mbrlen /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char wcrtomb (); below. + which can conflict with char mbrlen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ @@ -18025,87 +15822,80 @@ cat >>conftest.$ac_ext <<_ACEOF # include #endif -#undef wcrtomb +#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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif -char wcrtomb (); +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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_wcrtomb || defined __stub___wcrtomb +#if defined (__stub_mbrlen) || defined (__stub___mbrlen) choke me +#else +char (*f) () = mbrlen; +#endif +#ifdef __cplusplus +} #endif int main () { -return wcrtomb (); +return f != 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_func_wcrtomb=yes + ac_cv_func_mbrlen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func_wcrtomb=no +ac_cv_func_mbrlen=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_wcrtomb" >&5 -echo "${ECHO_T}$ac_cv_func_wcrtomb" >&6; } -if test $ac_cv_func_wcrtomb = yes; then +echo "$as_me:$LINENO: result: $ac_cv_func_mbrlen" >&5 +echo "${ECHO_T}$ac_cv_func_mbrlen" >&6 +if test $ac_cv_func_mbrlen = yes; then cat >>confdefs.h <<\_ACEOF -#define HAVE_WCRTOMB 1 +#define HAVE_MBRLEN 1 _ACEOF fi -{ echo "$as_me:$LINENO: checking for wcscoll" >&5 -echo $ECHO_N "checking for wcscoll... $ECHO_C" >&6; } -if test "${ac_cv_func_wcscoll+set}" = set; then +echo "$as_me:$LINENO: checking for wctomb" >&5 +echo $ECHO_N "checking for wctomb... $ECHO_C" >&6 +if test "${ac_cv_func_wctomb+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -18114,12 +15904,12 @@ _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. +/* Define wctomb to an innocuous variant, in case declares wctomb. For example, HP-UX 11i declares gettimeofday. */ -#define wcscoll innocuous_wcscoll +#define wctomb innocuous_wctomb /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char wcscoll (); below. + which can conflict with char wctomb (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ @@ -18129,87 +15919,80 @@ cat >>conftest.$ac_ext <<_ACEOF # include #endif -#undef wcscoll +#undef wctomb -/* 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif -char wcscoll (); +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char wctomb (); /* 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 +#if defined (__stub_wctomb) || defined (__stub___wctomb) choke me +#else +char (*f) () = wctomb; +#endif +#ifdef __cplusplus +} #endif int main () { -return wcscoll (); +return f != wctomb; ; 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_func_wcscoll=yes + ac_cv_func_wctomb=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func_wcscoll=no +ac_cv_func_wctomb=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_wcscoll" >&5 -echo "${ECHO_T}$ac_cv_func_wcscoll" >&6; } -if test $ac_cv_func_wcscoll = yes; then +echo "$as_me:$LINENO: result: $ac_cv_func_wctomb" >&5 +echo "${ECHO_T}$ac_cv_func_wctomb" >&6 +if test $ac_cv_func_wctomb = yes; then cat >>confdefs.h <<\_ACEOF -#define HAVE_WCSCOLL 1 +#define HAVE_WCTOMB 1 _ACEOF fi -{ echo "$as_me:$LINENO: checking for wcsdup" >&5 -echo $ECHO_N "checking for wcsdup... $ECHO_C" >&6; } -if test "${ac_cv_func_wcsdup+set}" = set; then +echo "$as_me:$LINENO: checking for wcwidth" >&5 +echo $ECHO_N "checking for wcwidth... $ECHO_C" >&6 +if test "${ac_cv_func_wcwidth+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -18218,12 +16001,12 @@ _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. +/* Define wcwidth to an innocuous variant, in case declares wcwidth. For example, HP-UX 11i declares gettimeofday. */ -#define wcsdup innocuous_wcsdup +#define wcwidth innocuous_wcwidth /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char wcsdup (); below. + which can conflict with char wcwidth (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ @@ -18233,87 +16016,80 @@ cat >>conftest.$ac_ext <<_ACEOF # include #endif -#undef wcsdup +#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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif -char wcsdup (); +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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_wcsdup || defined __stub___wcsdup +#if defined (__stub_wcwidth) || defined (__stub___wcwidth) choke me +#else +char (*f) () = wcwidth; +#endif +#ifdef __cplusplus +} #endif int main () { -return wcsdup (); +return f != 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_func_wcsdup=yes + ac_cv_func_wcwidth=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func_wcsdup=no +ac_cv_func_wcwidth=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_wcsdup" >&5 -echo "${ECHO_T}$ac_cv_func_wcsdup" >&6; } -if test $ac_cv_func_wcsdup = yes; then +echo "$as_me:$LINENO: result: $ac_cv_func_wcwidth" >&5 +echo "${ECHO_T}$ac_cv_func_wcwidth" >&6 +if test $ac_cv_func_wcwidth = yes; then cat >>confdefs.h <<\_ACEOF -#define HAVE_WCSDUP 1 +#define HAVE_WCWIDTH 1 _ACEOF fi -{ echo "$as_me:$LINENO: checking for wcwidth" >&5 -echo $ECHO_N "checking for wcwidth... $ECHO_C" >&6; } -if test "${ac_cv_func_wcwidth+set}" = set; then +echo "$as_me:$LINENO: checking for wcsdup" >&5 +echo $ECHO_N "checking for wcsdup... $ECHO_C" >&6 +if test "${ac_cv_func_wcsdup+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -18322,12 +16098,12 @@ _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. +/* Define wcsdup to an innocuous variant, in case declares wcsdup. For example, HP-UX 11i declares gettimeofday. */ -#define wcwidth innocuous_wcwidth +#define wcsdup innocuous_wcsdup /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char wcwidth (); below. + which can conflict with char wcsdup (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ @@ -18337,86 +16113,79 @@ cat >>conftest.$ac_ext <<_ACEOF # include #endif -#undef wcwidth +#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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif -char wcwidth (); +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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_wcwidth || defined __stub___wcwidth +#if defined (__stub_wcsdup) || defined (__stub___wcsdup) choke me +#else +char (*f) () = wcsdup; +#endif +#ifdef __cplusplus +} #endif int main () { -return wcwidth (); +return f != 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_func_wcwidth=yes + ac_cv_func_wcsdup=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func_wcwidth=no +ac_cv_func_wcsdup=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_wcwidth" >&5 -echo "${ECHO_T}$ac_cv_func_wcwidth" >&6; } -if test $ac_cv_func_wcwidth = yes; then +echo "$as_me:$LINENO: result: $ac_cv_func_wcsdup" >&5 +echo "${ECHO_T}$ac_cv_func_wcsdup" >&6 +if test $ac_cv_func_wcsdup = yes; then cat >>confdefs.h <<\_ACEOF -#define HAVE_WCWIDTH 1 +#define HAVE_WCSDUP 1 _ACEOF fi -{ echo "$as_me:$LINENO: checking for wctype" >&5 -echo $ECHO_N "checking for wctype... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for wctype" >&5 +echo $ECHO_N "checking for wctype... $ECHO_C" >&6 if test "${ac_cv_func_wctype+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -18443,59 +16212,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_wctype) || defined (__stub___wctype) choke me +#else +char (*f) () = wctype; +#endif +#ifdef __cplusplus +} #endif int main () { -return wctype (); +return f != 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -18504,14 +16267,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func_wctype=no +ac_cv_func_wctype=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_wctype" >&5 -echo "${ECHO_T}$ac_cv_func_wctype" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func_wctype" >&5 +echo "${ECHO_T}$ac_cv_func_wctype" >&6 if test $ac_cv_func_wctype = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_WCTYPE 1 @@ -18520,10 +16282,9 @@ _ACEOF fi - - { echo "$as_me:$LINENO: checking whether mbrtowc and mbstate_t are properly declared" >&5 -echo $ECHO_N "checking whether mbrtowc and mbstate_t are properly declared... $ECHO_C" >&6; } -if test "${ac_cv_func_mbrtowc+set}" = set; then +echo "$as_me:$LINENO: checking for mbstate_t" >&5 +echo $ECHO_N "checking for mbstate_t... $ECHO_C" >&6 +if test "${bash_cv_have_mbstate_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -18532,198 +16293,62 @@ _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 "echo \"\$as_me:$LINENO: $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 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_mbrtowc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_mbrtowc=no -fi - -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_mbrtowc" >&5 -echo "${ECHO_T}$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 + mbstate_t ps; + mbstate_t *psp; + psp = (mbstate_t *)0; -fi - - - - - - -for ac_func in iswlower iswupper towlower towupper iswctype -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - eval "$as_ac_var=yes" + bash_cv_have_mbstate_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +bash_cv_have_mbstate_t=no fi - -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +echo "$as_me:$LINENO: result: $bash_cv_have_mbstate_t" >&5 +echo "${ECHO_T}$bash_cv_have_mbstate_t" >&6 +if test $bash_cv_have_mbstate_t = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_MBSTATE_T 1 _ACEOF fi -done - -{ echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 -echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 +echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6 if test "${bash_cv_langinfo_codeset+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -18743,36 +16368,24 @@ char* cs = nl_langinfo(CODESET); } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -18781,14 +16394,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - bash_cv_langinfo_codeset=no +bash_cv_langinfo_codeset=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_langinfo_codeset" >&5 -echo "${ECHO_T}$bash_cv_langinfo_codeset" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_langinfo_codeset" >&5 +echo "${ECHO_T}$bash_cv_langinfo_codeset" >&6 if test $bash_cv_langinfo_codeset = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_LANGINFO_CODESET 1 @@ -18796,244 +16408,12 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for wchar_t in wchar.h" >&5 -echo $ECHO_N "checking for wchar_t in wchar.h... $ECHO_C" >&6; } -if test "${bash_cv_type_wchar_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&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 "echo \"\$as_me:$LINENO: $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 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - bash_cv_type_wchar_t=yes -else - 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 -{ echo "$as_me:$LINENO: result: $bash_cv_type_wchar_t" >&5 -echo "${ECHO_T}$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 - -{ echo "$as_me:$LINENO: checking for wctype_t in wctype.h" >&5 -echo $ECHO_N "checking for wctype_t in wctype.h... $ECHO_C" >&6; } -if test "${bash_cv_type_wctype_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&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 "echo \"\$as_me:$LINENO: $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 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - bash_cv_type_wctype_t=yes -else - 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 -{ echo "$as_me:$LINENO: result: $bash_cv_type_wctype_t" >&5 -echo "${ECHO_T}$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 - -{ echo "$as_me:$LINENO: checking for wint_t in wctype.h" >&5 -echo $ECHO_N "checking for wint_t in wctype.h... $ECHO_C" >&6; } -if test "${bash_cv_type_wint_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&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 "echo \"\$as_me:$LINENO: $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 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - bash_cv_type_wint_t=yes -else - 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 -{ echo "$as_me:$LINENO: result: $bash_cv_type_wint_t" >&5 -echo "${ECHO_T}$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 "$opt_static_link" != yes; then -{ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -19046,52 +16426,40 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char dlopen (); int main () { -return dlopen (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -19100,15 +16468,14 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_dl_dlopen=no +ac_cv_lib_dl_dlopen=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBDL 1 @@ -19124,9 +16491,9 @@ fi for ac_func in dlopen dlclose dlsym do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -19152,59 +16519,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -19213,15 +16574,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -19232,8 +16591,8 @@ done fi -{ echo "$as_me:$LINENO: checking whether sys_siglist is declared" >&5 -echo $ECHO_N "checking whether sys_siglist is declared... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether sys_siglist is declared" >&5 +echo $ECHO_N "checking whether sys_siglist is declared... $ECHO_C" >&6 if test "${ac_cv_have_decl_sys_siglist+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -19255,7 +16614,6 @@ main () { #ifndef sys_siglist char *p = (char *) sys_siglist; - return !p; #endif ; @@ -19263,36 +16621,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -19301,13 +16647,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_have_decl_sys_siglist=no +ac_cv_have_decl_sys_siglist=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_sys_siglist" >&5 -echo "${ECHO_T}$ac_cv_have_decl_sys_siglist" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_have_decl_sys_siglist" >&5 +echo "${ECHO_T}$ac_cv_have_decl_sys_siglist" >&6 if test $ac_cv_have_decl_sys_siglist = yes; then cat >>confdefs.h <<_ACEOF @@ -19328,8 +16673,8 @@ fi if test "$ac_cv_func_inet_aton" != 'yes'; then -{ echo "$as_me:$LINENO: checking for inet_aton" >&5 -echo $ECHO_N "checking for inet_aton... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for inet_aton" >&5 +echo $ECHO_N "checking for inet_aton... $ECHO_C" >&6 if test "${bash_cv_func_inet_aton+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -19353,36 +16698,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -19391,24 +16724,25 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - bash_cv_func_inet_aton=no +bash_cv_func_inet_aton=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_func_inet_aton" >&5 -echo "${ECHO_T}$bash_cv_func_inet_aton" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_func_inet_aton" >&5 +echo "${ECHO_T}$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 + case $LIBOBJS in + "inet_aton.$ac_objext" | \ + *" inet_aton.$ac_objext" | \ + "inet_aton.$ac_objext "* | \ *" inet_aton.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS inet_aton.$ac_objext" - ;; + *) LIBOBJS="$LIBOBJS inet_aton.$ac_objext" ;; esac fi @@ -19417,8 +16751,8 @@ fi case "$host_os" in irix4*) -{ echo "$as_me:$LINENO: checking for getpwent in -lsun" >&5 -echo $ECHO_N "checking for getpwent in -lsun... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for getpwent in -lsun" >&5 +echo $ECHO_N "checking for getpwent in -lsun... $ECHO_C" >&6 if test "${ac_cv_lib_sun_getpwent+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -19431,52 +16765,40 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char getpwent (); int main () { -return getpwent (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -19485,15 +16807,14 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_sun_getpwent=no +ac_cv_lib_sun_getpwent=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_sun_getpwent" >&5 -echo "${ECHO_T}$ac_cv_lib_sun_getpwent" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_sun_getpwent" >&5 +echo "${ECHO_T}$ac_cv_lib_sun_getpwent" >&6 if test $ac_cv_lib_sun_getpwent = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBSUN 1 @@ -19510,15 +16831,15 @@ if test "$ac_cv_func_getpeername" = no; then if test "X$bash_cv_have_socklib" = "X"; then _bash_needmsg= else -{ echo "$as_me:$LINENO: checking for socket library" >&5 -echo $ECHO_N "checking for socket library... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for socket library" >&5 +echo $ECHO_N "checking for socket library... $ECHO_C" >&6 _bash_needmsg=yes fi if test "${bash_cv_have_socklib+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - { echo "$as_me:$LINENO: checking for getpeername in -lsocket" >&5 -echo $ECHO_N "checking for getpeername in -lsocket... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for getpeername in -lsocket" >&5 +echo $ECHO_N "checking for getpeername in -lsocket... $ECHO_C" >&6 if test "${ac_cv_lib_socket_getpeername+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -19531,52 +16852,40 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char getpeername (); int main () { -return getpeername (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -19585,15 +16894,14 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_socket_getpeername=no +ac_cv_lib_socket_getpeername=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_getpeername" >&5 -echo "${ECHO_T}$ac_cv_lib_socket_getpeername" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_socket_getpeername" >&5 +echo "${ECHO_T}$ac_cv_lib_socket_getpeername" >&6 if test $ac_cv_lib_socket_getpeername = yes; then bash_cv_have_socklib=yes else @@ -19603,8 +16911,8 @@ fi fi if test "X$_bash_needmsg" = Xyes; then - { echo "$as_me:$LINENO: result: $bash_cv_have_socklib" >&5 -echo "${ECHO_T}$bash_cv_have_socklib" >&6; } + echo "$as_me:$LINENO: result: $bash_cv_have_socklib" >&5 +echo "${ECHO_T}$bash_cv_have_socklib" >&6 _bash_needmsg= fi if test $bash_cv_have_socklib = yes; then @@ -19612,15 +16920,15 @@ if test $bash_cv_have_socklib = yes; then if test "X$bash_cv_have_libnsl" = "X"; then _bash_needmsg= else - { echo "$as_me:$LINENO: checking for libnsl" >&5 -echo $ECHO_N "checking for libnsl... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for libnsl" >&5 +echo $ECHO_N "checking for libnsl... $ECHO_C" >&6 _bash_needmsg=yes fi if test "${bash_cv_have_libnsl+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - { echo "$as_me:$LINENO: checking for t_open in -lnsl" >&5 -echo $ECHO_N "checking for t_open in -lnsl... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for t_open in -lnsl" >&5 +echo $ECHO_N "checking for t_open in -lnsl... $ECHO_C" >&6 if test "${ac_cv_lib_nsl_t_open+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -19633,52 +16941,40 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char t_open (); int main () { -return t_open (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -19687,15 +16983,14 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_nsl_t_open=no +ac_cv_lib_nsl_t_open=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_t_open" >&5 -echo "${ECHO_T}$ac_cv_lib_nsl_t_open" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_t_open" >&5 +echo "${ECHO_T}$ac_cv_lib_nsl_t_open" >&6 if test $ac_cv_lib_nsl_t_open = yes; then bash_cv_have_libnsl=yes else @@ -19705,8 +17000,8 @@ fi fi if test "X$_bash_needmsg" = Xyes; then - { echo "$as_me:$LINENO: result: $bash_cv_have_libnsl" >&5 -echo "${ECHO_T}$bash_cv_have_libnsl" >&6; } + echo "$as_me:$LINENO: result: $bash_cv_have_libnsl" >&5 +echo "${ECHO_T}$bash_cv_have_libnsl" >&6 _bash_needmsg= fi if test $bash_cv_have_libnsl = yes; then @@ -19729,8 +17024,8 @@ if test "$ac_cv_func_gethostbyname" = no; then if test "X$bash_cv_have_gethostbyname" = "X"; then _bash_needmsg=yes else -{ echo "$as_me:$LINENO: checking for gethostbyname in socket library" >&5 -echo $ECHO_N "checking for gethostbyname in socket library... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for gethostbyname in socket library" >&5 +echo $ECHO_N "checking for gethostbyname in socket library... $ECHO_C" >&6 _bash_needmsg= fi if test "${bash_cv_have_gethostbyname+set}" = set; then @@ -19754,36 +17049,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -19792,20 +17075,19 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - bash_cv_have_gethostbyname=no +bash_cv_have_gethostbyname=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi if test "X$_bash_needmsg" = Xyes; then - { echo "$as_me:$LINENO: checking for gethostbyname in socket library" >&5 -echo $ECHO_N "checking for gethostbyname in socket library... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for gethostbyname in socket library" >&5 +echo $ECHO_N "checking for gethostbyname in socket library... $ECHO_C" >&6 fi -{ echo "$as_me:$LINENO: result: $bash_cv_have_gethostbyname" >&5 -echo "${ECHO_T}$bash_cv_have_gethostbyname" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_have_gethostbyname" >&5 +echo "${ECHO_T}$bash_cv_have_gethostbyname" >&6 if test "$bash_cv_have_gethostbyname" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_GETHOSTBYNAME 1 @@ -19815,8 +17097,8 @@ fi fi -{ echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5 -echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5 +echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6 if test "${ac_cv_type_uid_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -19838,8 +17120,8 @@ fi rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 -echo "${ECHO_T}$ac_cv_type_uid_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 +echo "${ECHO_T}$ac_cv_type_uid_t" >&6 if test $ac_cv_type_uid_t = no; then cat >>confdefs.h <<\_ACEOF @@ -19853,8 +17135,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking type of array argument to getgroups" >&5 -echo $ECHO_N "checking type of array argument to getgroups... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking type of array argument to getgroups" >&5 +echo $ECHO_N "checking type of array argument to getgroups... $ECHO_C" >&6 if test "${ac_cv_type_getgroups+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -19868,7 +17150,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Thanks to Mike Rendell for this test. */ -$ac_includes_default +#include #define NGID 256 #undef MAX #define MAX(x, y) ((x) > (y) ? (x) : (y)) @@ -19878,7 +17160,7 @@ main () { gid_t gidset[NGID]; int i, n; - union { gid_t gval; long int lval; } val; + union { gid_t gval; long lval; } val; val.lval = -1; for (i = 0; i < NGID; i++) @@ -19886,28 +17168,18 @@ main () 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; + happens when gid_t is short but getgroups modifies an array of ints. */ + exit ((n > 0 && gidset[n] != val.gval) ? 1 : 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -19920,10 +17192,8 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_type_getgroups=int fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core 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. */ @@ -19944,16 +17214,16 @@ rm -f conftest* fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_getgroups" >&5 -echo "${ECHO_T}$ac_cv_type_getgroups" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_getgroups" >&5 +echo "${ECHO_T}$ac_cv_type_getgroups" >&6 cat >>confdefs.h <<_ACEOF #define GETGROUPS_T $ac_cv_type_getgroups _ACEOF -{ echo "$as_me:$LINENO: checking for off_t" >&5 -echo $ECHO_N "checking for off_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for off_t" >&5 +echo $ECHO_N "checking for off_t... $ECHO_C" >&6 if test "${ac_cv_type_off_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -19964,49 +17234,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef off_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((off_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -20015,25 +17272,24 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_off_t=no +ac_cv_type_off_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 -echo "${ECHO_T}$ac_cv_type_off_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 +echo "${ECHO_T}$ac_cv_type_off_t" >&6 if test $ac_cv_type_off_t = yes; then : else cat >>confdefs.h <<_ACEOF -#define off_t long int +#define off_t long _ACEOF fi -{ echo "$as_me:$LINENO: checking for mode_t" >&5 -echo $ECHO_N "checking for mode_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for mode_t" >&5 +echo $ECHO_N "checking for mode_t... $ECHO_C" >&6 if test "${ac_cv_type_mode_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -20044,49 +17300,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef mode_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((mode_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -20095,13 +17338,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_mode_t=no +ac_cv_type_mode_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5 -echo "${ECHO_T}$ac_cv_type_mode_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5 +echo "${ECHO_T}$ac_cv_type_mode_t" >&6 if test $ac_cv_type_mode_t = yes; then : else @@ -20112,8 +17354,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5 -echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5 +echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6 if test "${ac_cv_type_uid_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -20135,8 +17377,8 @@ fi rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 -echo "${ECHO_T}$ac_cv_type_uid_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 +echo "${ECHO_T}$ac_cv_type_uid_t" >&6 if test $ac_cv_type_uid_t = no; then cat >>confdefs.h <<\_ACEOF @@ -20150,8 +17392,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for pid_t" >&5 -echo $ECHO_N "checking for pid_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for pid_t" >&5 +echo $ECHO_N "checking for pid_t... $ECHO_C" >&6 if test "${ac_cv_type_pid_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -20162,49 +17404,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef pid_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((pid_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -20213,13 +17442,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_pid_t=no +ac_cv_type_pid_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 -echo "${ECHO_T}$ac_cv_type_pid_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 +echo "${ECHO_T}$ac_cv_type_pid_t" >&6 if test $ac_cv_type_pid_t = yes; then : else @@ -20230,8 +17458,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for size_t" >&5 -echo $ECHO_N "checking for size_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for size_t" >&5 +echo $ECHO_N "checking for size_t... $ECHO_C" >&6 if test "${ac_cv_type_size_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -20242,49 +17470,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef size_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((size_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -20293,25 +17508,24 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_size_t=no +ac_cv_type_size_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 -echo "${ECHO_T}$ac_cv_type_size_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +echo "${ECHO_T}$ac_cv_type_size_t" >&6 if test $ac_cv_type_size_t = yes; then : else cat >>confdefs.h <<_ACEOF -#define size_t unsigned int +#define size_t unsigned _ACEOF fi -{ echo "$as_me:$LINENO: checking for ssize_t" >&5 -echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for ssize_t" >&5 +echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6 if test "${ac_cv_type_ssize_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -20322,49 +17536,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef ssize_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((ssize_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -20373,13 +17574,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_ssize_t=no +ac_cv_type_ssize_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5 -echo "${ECHO_T}$ac_cv_type_ssize_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5 +echo "${ECHO_T}$ac_cv_type_ssize_t" >&6 if test $ac_cv_type_ssize_t = yes; then : else @@ -20390,8 +17590,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for time_t" >&5 -echo $ECHO_N "checking for time_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for time_t" >&5 +echo $ECHO_N "checking for time_t... $ECHO_C" >&6 if test "${ac_cv_type_time_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -20402,49 +17602,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef time_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((time_t *) 0) return 0; -if (sizeof (ac__type_new_)) +if (sizeof (time_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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -20453,13 +17640,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_time_t=no +ac_cv_type_time_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_time_t" >&5 -echo "${ECHO_T}$ac_cv_type_time_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_time_t" >&5 +echo "${ECHO_T}$ac_cv_type_time_t" >&6 if test $ac_cv_type_time_t = yes; then : else @@ -20472,8 +17658,8 @@ fi -{ echo "$as_me:$LINENO: checking for long long" >&5 -echo $ECHO_N "checking for long long... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for long long" >&5 +echo $ECHO_N "checking for long long... $ECHO_C" >&6 if test "${bash_cv_type_long_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -20497,36 +17683,24 @@ return ll << i | ll >> i | llm / ll | llm % ll; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -20535,14 +17709,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - bash_cv_type_long_long='long' +bash_cv_type_long_long='long' fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_type_long_long" >&5 -echo "${ECHO_T}$bash_cv_type_long_long" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_type_long_long" >&5 +echo "${ECHO_T}$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 @@ -20551,8 +17724,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for unsigned long long" >&5 -echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for unsigned long long" >&5 +echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6 if test "${bash_cv_type_unsigned_long_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -20576,36 +17749,24 @@ return ull << i | ull >> i | ullmax / ull | ullmax % ull; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -20614,14 +17775,13 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - bash_cv_type_unsigned_long_long='unsigned long' +bash_cv_type_unsigned_long_long='unsigned long' fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_type_unsigned_long_long" >&5 -echo "${ECHO_T}$bash_cv_type_unsigned_long_long" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_type_unsigned_long_long" >&5 +echo "${ECHO_T}$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 @@ -20630,8 +17790,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking return type of signal handlers" >&5 -echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking return type of signal handlers" >&5 +echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 if test "${ac_cv_type_signal+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -20643,61 +17803,56 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include +#ifdef signal +# undef signal +#endif +#ifdef __cplusplus +extern "C" void (*signal (int, void (*)(int)))(int); +#else +void (*signal ()) (); +#endif int main () { -return *(signal (0, 0)) (0) == 1; +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_type_signal=int + ac_cv_type_signal=void else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_signal=void +ac_cv_type_signal=int fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 -echo "${ECHO_T}$ac_cv_type_signal" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 +echo "${ECHO_T}$ac_cv_type_signal" >&6 cat >>confdefs.h <<_ACEOF #define RETSIGTYPE $ac_cv_type_signal @@ -20705,8 +17860,8 @@ _ACEOF -{ echo "$as_me:$LINENO: checking for char" >&5 -echo $ECHO_N "checking for char... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for char" >&5 +echo $ECHO_N "checking for char... $ECHO_C" >&6 if test "${ac_cv_type_char+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -20717,49 +17872,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef char ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((char *) 0) return 0; -if (sizeof (ac__type_new_)) +if (sizeof (char)) 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -20768,21 +17910,20 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_char=no +ac_cv_type_char=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_char" >&5 -echo "${ECHO_T}$ac_cv_type_char" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_char" >&5 +echo "${ECHO_T}$ac_cv_type_char" >&6 -{ echo "$as_me:$LINENO: checking size of char" >&5 -echo $ECHO_N "checking size of char... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking size of char" >&5 +echo $ECHO_N "checking size of char... $ECHO_C" >&6 if test "${ac_cv_sizeof_char+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$ac_cv_type_char" = yes; then - # The cast to long int works around a bug in the HP C Compiler + # The cast to unsigned long 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. @@ -20795,11 +17936,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef char ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; +static int test_array [1 - 2 * !(((long) (sizeof (char))) >= 0)]; test_array [0] = 0 ; @@ -20807,36 +17947,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -20849,11 +17977,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef char ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long) (sizeof (char))) <= $ac_mid)]; test_array [0] = 0 ; @@ -20861,36 +17988,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -20899,32 +18014,30 @@ else 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` +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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF +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 - typedef char ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; +static int test_array [1 - 2 * !(((long) (sizeof (char))) < 0)]; test_array [0] = 0 ; @@ -20932,36 +18045,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -20974,11 +18075,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef char ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; +static int test_array [1 - 2 * !(((long) (sizeof (char))) >= $ac_mid)]; test_array [0] = 0 ; @@ -20986,36 +18086,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21024,27 +18112,24 @@ else 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_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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo= ac_hi= +ac_lo= ac_hi= fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f 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` @@ -21055,11 +18140,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef char ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long) (sizeof (char))) <= $ac_mid)]; test_array [0] = 0 ; @@ -21067,36 +18151,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21105,19 +18177,25 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo=`expr '(' $ac_mid ')' + 1` +ac_lo=`expr '(' $ac_mid ')' + 1` fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_char=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (char) +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (char), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (char) +echo "$as_me: error: cannot compute sizeof (char), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } ;; + { (exit 1); exit 1; }; } ;; esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -21126,9 +18204,8 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef char ac__type_sizeof_; -static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } -static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } +long longval () { return (long) (sizeof (char)); } +unsigned long ulongval () { return (long) (sizeof (char)); } #include #include int @@ -21137,44 +18214,35 @@ main () FILE *f = fopen ("conftest.val", "w"); if (! f) - return 1; - if (((long int) (sizeof (ac__type_sizeof_))) < 0) + exit (1); + if (((long) (sizeof (char))) < 0) { - long int i = longval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + long i = longval (); + if (i != ((long) (sizeof (char)))) + exit (1); fprintf (f, "%ld\n", i); } else { - unsigned long int i = ulongval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + unsigned long i = ulongval (); + if (i != ((long) (sizeof (char)))) + exit (1); fprintf (f, "%lu\n", i); } - return ferror (f) || fclose (f) != 0; + exit (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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21185,28 +18253,29 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (char) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (char), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (char) +echo "$as_me: error: cannot compute sizeof (char), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val else ac_cv_sizeof_char=0 fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_char" >&5 -echo "${ECHO_T}$ac_cv_sizeof_char" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_sizeof_char" >&5 +echo "${ECHO_T}$ac_cv_sizeof_char" >&6 cat >>confdefs.h <<_ACEOF #define SIZEOF_CHAR $ac_cv_sizeof_char _ACEOF -{ echo "$as_me:$LINENO: checking for short" >&5 -echo $ECHO_N "checking for short... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for short" >&5 +echo $ECHO_N "checking for short... $ECHO_C" >&6 if test "${ac_cv_type_short+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -21217,49 +18286,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef short ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((short *) 0) return 0; -if (sizeof (ac__type_new_)) +if (sizeof (short)) 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21268,21 +18324,20 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_short=no +ac_cv_type_short=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_short" >&5 -echo "${ECHO_T}$ac_cv_type_short" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_short" >&5 +echo "${ECHO_T}$ac_cv_type_short" >&6 -{ echo "$as_me:$LINENO: checking size of short" >&5 -echo $ECHO_N "checking size of short... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking size of short" >&5 +echo $ECHO_N "checking size of short... $ECHO_C" >&6 if test "${ac_cv_sizeof_short+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$ac_cv_type_short" = yes; then - # The cast to long int works around a bug in the HP C Compiler + # The cast to unsigned long 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. @@ -21295,11 +18350,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef short ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; +static int test_array [1 - 2 * !(((long) (sizeof (short))) >= 0)]; test_array [0] = 0 ; @@ -21307,36 +18361,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21349,11 +18391,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef short ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)]; test_array [0] = 0 ; @@ -21361,36 +18402,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21399,32 +18428,30 @@ else 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` +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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF +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 - typedef short ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; +static int test_array [1 - 2 * !(((long) (sizeof (short))) < 0)]; test_array [0] = 0 ; @@ -21432,36 +18459,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21474,11 +18489,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef short ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; +static int test_array [1 - 2 * !(((long) (sizeof (short))) >= $ac_mid)]; test_array [0] = 0 ; @@ -21486,36 +18500,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21524,27 +18526,24 @@ else 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_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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo= ac_hi= +ac_lo= ac_hi= fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f 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` @@ -21555,11 +18554,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef short ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)]; test_array [0] = 0 ; @@ -21567,36 +18565,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21605,19 +18591,25 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo=`expr '(' $ac_mid ')' + 1` +ac_lo=`expr '(' $ac_mid ')' + 1` fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_short=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (short) +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (short) +echo "$as_me: error: cannot compute sizeof (short), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } ;; + { (exit 1); exit 1; }; } ;; esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -21626,9 +18618,8 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef short ac__type_sizeof_; -static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } -static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } +long longval () { return (long) (sizeof (short)); } +unsigned long ulongval () { return (long) (sizeof (short)); } #include #include int @@ -21637,44 +18628,35 @@ main () FILE *f = fopen ("conftest.val", "w"); if (! f) - return 1; - if (((long int) (sizeof (ac__type_sizeof_))) < 0) + exit (1); + if (((long) (sizeof (short))) < 0) { - long int i = longval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + long i = longval (); + if (i != ((long) (sizeof (short)))) + exit (1); fprintf (f, "%ld\n", i); } else { - unsigned long int i = ulongval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + unsigned long i = ulongval (); + if (i != ((long) (sizeof (short)))) + exit (1); fprintf (f, "%lu\n", i); } - return ferror (f) || fclose (f) != 0; + exit (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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21685,28 +18667,29 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (short) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (short) +echo "$as_me: error: cannot compute sizeof (short), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val else ac_cv_sizeof_short=0 fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5 -echo "${ECHO_T}$ac_cv_sizeof_short" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5 +echo "${ECHO_T}$ac_cv_sizeof_short" >&6 cat >>confdefs.h <<_ACEOF #define SIZEOF_SHORT $ac_cv_sizeof_short _ACEOF -{ echo "$as_me:$LINENO: checking for int" >&5 -echo $ECHO_N "checking for int... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for int" >&5 +echo $ECHO_N "checking for int... $ECHO_C" >&6 if test "${ac_cv_type_int+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -21717,49 +18700,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef int ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((int *) 0) return 0; -if (sizeof (ac__type_new_)) +if (sizeof (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;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21768,21 +18738,20 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_int=no +ac_cv_type_int=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5 -echo "${ECHO_T}$ac_cv_type_int" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5 +echo "${ECHO_T}$ac_cv_type_int" >&6 -{ echo "$as_me:$LINENO: checking size of int" >&5 -echo $ECHO_N "checking size of int... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking size of int" >&5 +echo $ECHO_N "checking size of int... $ECHO_C" >&6 if test "${ac_cv_sizeof_int+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$ac_cv_type_int" = yes; then - # The cast to long int works around a bug in the HP C Compiler + # The cast to unsigned long 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. @@ -21795,11 +18764,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef int ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; +static int test_array [1 - 2 * !(((long) (sizeof (int))) >= 0)]; test_array [0] = 0 ; @@ -21807,36 +18775,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21849,11 +18805,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef int ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)]; test_array [0] = 0 ; @@ -21861,36 +18816,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21899,32 +18842,30 @@ else 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` +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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF +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 - typedef int ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; +static int test_array [1 - 2 * !(((long) (sizeof (int))) < 0)]; test_array [0] = 0 ; @@ -21932,36 +18873,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -21974,11 +18903,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef int ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; +static int test_array [1 - 2 * !(((long) (sizeof (int))) >= $ac_mid)]; test_array [0] = 0 ; @@ -21986,36 +18914,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -22024,27 +18940,24 @@ else 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_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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo= ac_hi= +ac_lo= ac_hi= fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f 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` @@ -22055,11 +18968,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef int ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)]; test_array [0] = 0 ; @@ -22067,36 +18979,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -22105,19 +19005,25 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo=`expr '(' $ac_mid ')' + 1` +ac_lo=`expr '(' $ac_mid ')' + 1` fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_int=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int) +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (int) +echo "$as_me: error: cannot compute sizeof (int), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } ;; + { (exit 1); exit 1; }; } ;; esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -22126,9 +19032,8 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef int ac__type_sizeof_; -static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } -static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } +long longval () { return (long) (sizeof (int)); } +unsigned long ulongval () { return (long) (sizeof (int)); } #include #include int @@ -22137,44 +19042,35 @@ main () FILE *f = fopen ("conftest.val", "w"); if (! f) - return 1; - if (((long int) (sizeof (ac__type_sizeof_))) < 0) + exit (1); + if (((long) (sizeof (int))) < 0) { - long int i = longval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + long i = longval (); + if (i != ((long) (sizeof (int)))) + exit (1); fprintf (f, "%ld\n", i); } else { - unsigned long int i = ulongval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + unsigned long i = ulongval (); + if (i != ((long) (sizeof (int)))) + exit (1); fprintf (f, "%lu\n", i); } - return ferror (f) || fclose (f) != 0; + exit (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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -22185,28 +19081,29 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (int) +echo "$as_me: error: cannot compute sizeof (int), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val else ac_cv_sizeof_int=0 fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 -echo "${ECHO_T}$ac_cv_sizeof_int" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 +echo "${ECHO_T}$ac_cv_sizeof_int" >&6 cat >>confdefs.h <<_ACEOF #define SIZEOF_INT $ac_cv_sizeof_int _ACEOF -{ echo "$as_me:$LINENO: checking for long" >&5 -echo $ECHO_N "checking for long... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for long" >&5 +echo $ECHO_N "checking for long... $ECHO_C" >&6 if test "${ac_cv_type_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -22217,49 +19114,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef long ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((long *) 0) return 0; -if (sizeof (ac__type_new_)) +if (sizeof (long)) 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -22268,21 +19152,20 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_long=no +ac_cv_type_long=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5 -echo "${ECHO_T}$ac_cv_type_long" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5 +echo "${ECHO_T}$ac_cv_type_long" >&6 -{ echo "$as_me:$LINENO: checking size of long" >&5 -echo $ECHO_N "checking size of long... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking size of long" >&5 +echo $ECHO_N "checking size of long... $ECHO_C" >&6 if test "${ac_cv_sizeof_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$ac_cv_type_long" = yes; then - # The cast to long int works around a bug in the HP C Compiler + # The cast to unsigned long 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. @@ -22295,11 +19178,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef long ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; +static int test_array [1 - 2 * !(((long) (sizeof (long))) >= 0)]; test_array [0] = 0 ; @@ -22307,36 +19189,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -22349,11 +19219,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef long ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)]; test_array [0] = 0 ; @@ -22361,36 +19230,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -22399,32 +19256,30 @@ else 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` +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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF +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 - typedef long ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; +static int test_array [1 - 2 * !(((long) (sizeof (long))) < 0)]; test_array [0] = 0 ; @@ -22432,36 +19287,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -22474,11 +19317,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef long ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; +static int test_array [1 - 2 * !(((long) (sizeof (long))) >= $ac_mid)]; test_array [0] = 0 ; @@ -22486,36 +19328,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -22524,27 +19354,24 @@ else 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_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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo= ac_hi= +ac_lo= ac_hi= fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f 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` @@ -22555,11 +19382,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef long ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)]; test_array [0] = 0 ; @@ -22567,36 +19393,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -22605,19 +19419,25 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo=`expr '(' $ac_mid ')' + 1` +ac_lo=`expr '(' $ac_mid ')' + 1` fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_long=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long) +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long) +echo "$as_me: error: cannot compute sizeof (long), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } ;; + { (exit 1); exit 1; }; } ;; esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -22626,9 +19446,8 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef long ac__type_sizeof_; -static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } -static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } +long longval () { return (long) (sizeof (long)); } +unsigned long ulongval () { return (long) (sizeof (long)); } #include #include int @@ -22637,44 +19456,35 @@ main () FILE *f = fopen ("conftest.val", "w"); if (! f) - return 1; - if (((long int) (sizeof (ac__type_sizeof_))) < 0) + exit (1); + if (((long) (sizeof (long))) < 0) { - long int i = longval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + long i = longval (); + if (i != ((long) (sizeof (long)))) + exit (1); fprintf (f, "%ld\n", i); } else { - unsigned long int i = ulongval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + unsigned long i = ulongval (); + if (i != ((long) (sizeof (long)))) + exit (1); fprintf (f, "%lu\n", i); } - return ferror (f) || fclose (f) != 0; + exit (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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -22685,28 +19495,29 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long) +echo "$as_me: error: cannot compute sizeof (long), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val else ac_cv_sizeof_long=0 fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 -echo "${ECHO_T}$ac_cv_sizeof_long" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long" >&6 cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG $ac_cv_sizeof_long _ACEOF -{ echo "$as_me:$LINENO: checking for char *" >&5 -echo $ECHO_N "checking for char *... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for char *" >&5 +echo $ECHO_N "checking for char *... $ECHO_C" >&6 if test "${ac_cv_type_char_p+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -22717,49 +19528,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef char * ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((char * *) 0) return 0; -if (sizeof (ac__type_new_)) +if (sizeof (char *)) 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -22768,21 +19566,20 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_char_p=no +ac_cv_type_char_p=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_char_p" >&5 -echo "${ECHO_T}$ac_cv_type_char_p" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_char_p" >&5 +echo "${ECHO_T}$ac_cv_type_char_p" >&6 -{ echo "$as_me:$LINENO: checking size of char *" >&5 -echo $ECHO_N "checking size of char *... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking size of char *" >&5 +echo $ECHO_N "checking size of char *... $ECHO_C" >&6 if test "${ac_cv_sizeof_char_p+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$ac_cv_type_char_p" = yes; then - # The cast to long int works around a bug in the HP C Compiler + # The cast to unsigned long 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. @@ -22795,11 +19592,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef char * ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; +static int test_array [1 - 2 * !(((long) (sizeof (char *))) >= 0)]; test_array [0] = 0 ; @@ -22807,36 +19603,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -22849,11 +19633,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef char * ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long) (sizeof (char *))) <= $ac_mid)]; test_array [0] = 0 ; @@ -22861,36 +19644,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -22899,32 +19670,30 @@ else 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` +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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF +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 - typedef char * ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; +static int test_array [1 - 2 * !(((long) (sizeof (char *))) < 0)]; test_array [0] = 0 ; @@ -22932,36 +19701,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -22974,11 +19731,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef char * ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; +static int test_array [1 - 2 * !(((long) (sizeof (char *))) >= $ac_mid)]; test_array [0] = 0 ; @@ -22986,36 +19742,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -23024,27 +19768,24 @@ else 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_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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo= ac_hi= +ac_lo= ac_hi= fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f 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` @@ -23055,11 +19796,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef char * ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long) (sizeof (char *))) <= $ac_mid)]; test_array [0] = 0 ; @@ -23067,36 +19807,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -23105,19 +19833,25 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo=`expr '(' $ac_mid ')' + 1` +ac_lo=`expr '(' $ac_mid ')' + 1` fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_char_p=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (char *) +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (char *), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (char *) +echo "$as_me: error: cannot compute sizeof (char *), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } ;; + { (exit 1); exit 1; }; } ;; esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -23126,9 +19860,8 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef char * ac__type_sizeof_; -static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } -static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } +long longval () { return (long) (sizeof (char *)); } +unsigned long ulongval () { return (long) (sizeof (char *)); } #include #include int @@ -23137,44 +19870,35 @@ main () FILE *f = fopen ("conftest.val", "w"); if (! f) - return 1; - if (((long int) (sizeof (ac__type_sizeof_))) < 0) + exit (1); + if (((long) (sizeof (char *))) < 0) { - long int i = longval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + long i = longval (); + if (i != ((long) (sizeof (char *)))) + exit (1); fprintf (f, "%ld\n", i); } else { - unsigned long int i = ulongval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + unsigned long i = ulongval (); + if (i != ((long) (sizeof (char *)))) + exit (1); fprintf (f, "%lu\n", i); } - return ferror (f) || fclose (f) != 0; + exit (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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -23185,28 +19909,29 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (char *) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (char *), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (char *) +echo "$as_me: error: cannot compute sizeof (char *), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val else ac_cv_sizeof_char_p=0 fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_char_p" >&5 -echo "${ECHO_T}$ac_cv_sizeof_char_p" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_sizeof_char_p" >&5 +echo "${ECHO_T}$ac_cv_sizeof_char_p" >&6 cat >>confdefs.h <<_ACEOF #define SIZEOF_CHAR_P $ac_cv_sizeof_char_p _ACEOF -{ echo "$as_me:$LINENO: checking for double" >&5 -echo $ECHO_N "checking for double... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for double" >&5 +echo $ECHO_N "checking for double... $ECHO_C" >&6 if test "${ac_cv_type_double+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -23217,49 +19942,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef double ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((double *) 0) return 0; -if (sizeof (ac__type_new_)) +if (sizeof (double)) 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -23268,21 +19980,20 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_double=no +ac_cv_type_double=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_double" >&5 -echo "${ECHO_T}$ac_cv_type_double" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_double" >&5 +echo "${ECHO_T}$ac_cv_type_double" >&6 -{ echo "$as_me:$LINENO: checking size of double" >&5 -echo $ECHO_N "checking size of double... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking size of double" >&5 +echo $ECHO_N "checking size of double... $ECHO_C" >&6 if test "${ac_cv_sizeof_double+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$ac_cv_type_double" = yes; then - # The cast to long int works around a bug in the HP C Compiler + # The cast to unsigned long 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. @@ -23295,11 +20006,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; +static int test_array [1 - 2 * !(((long) (sizeof (double))) >= 0)]; test_array [0] = 0 ; @@ -23307,36 +20017,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -23349,11 +20047,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long) (sizeof (double))) <= $ac_mid)]; test_array [0] = 0 ; @@ -23361,36 +20058,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -23399,32 +20084,30 @@ else 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` +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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF +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 - typedef double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; +static int test_array [1 - 2 * !(((long) (sizeof (double))) < 0)]; test_array [0] = 0 ; @@ -23432,36 +20115,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -23474,11 +20145,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; +static int test_array [1 - 2 * !(((long) (sizeof (double))) >= $ac_mid)]; test_array [0] = 0 ; @@ -23486,36 +20156,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -23524,27 +20182,24 @@ else 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_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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo= ac_hi= +ac_lo= ac_hi= fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f 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` @@ -23555,11 +20210,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef double ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long) (sizeof (double))) <= $ac_mid)]; test_array [0] = 0 ; @@ -23567,36 +20221,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -23605,19 +20247,25 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo=`expr '(' $ac_mid ')' + 1` +ac_lo=`expr '(' $ac_mid ')' + 1` fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_double=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (double) +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (double) +echo "$as_me: error: cannot compute sizeof (double), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } ;; + { (exit 1); exit 1; }; } ;; esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -23626,9 +20274,8 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef double ac__type_sizeof_; -static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } -static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } +long longval () { return (long) (sizeof (double)); } +unsigned long ulongval () { return (long) (sizeof (double)); } #include #include int @@ -23637,44 +20284,35 @@ main () FILE *f = fopen ("conftest.val", "w"); if (! f) - return 1; - if (((long int) (sizeof (ac__type_sizeof_))) < 0) + exit (1); + if (((long) (sizeof (double))) < 0) { - long int i = longval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + long i = longval (); + if (i != ((long) (sizeof (double)))) + exit (1); fprintf (f, "%ld\n", i); } else { - unsigned long int i = ulongval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + unsigned long i = ulongval (); + if (i != ((long) (sizeof (double)))) + exit (1); fprintf (f, "%lu\n", i); } - return ferror (f) || fclose (f) != 0; + exit (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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -23685,28 +20323,29 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (double) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (double) +echo "$as_me: error: cannot compute sizeof (double), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val else ac_cv_sizeof_double=0 fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_double" >&5 -echo "${ECHO_T}$ac_cv_sizeof_double" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_sizeof_double" >&5 +echo "${ECHO_T}$ac_cv_sizeof_double" >&6 cat >>confdefs.h <<_ACEOF #define SIZEOF_DOUBLE $ac_cv_sizeof_double _ACEOF -{ echo "$as_me:$LINENO: checking for long long" >&5 -echo $ECHO_N "checking for long long... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for long long" >&5 +echo $ECHO_N "checking for long long... $ECHO_C" >&6 if test "${ac_cv_type_long_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -23717,49 +20356,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef long long ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((long long *) 0) return 0; -if (sizeof (ac__type_new_)) +if (sizeof (long long)) 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -23768,21 +20394,20 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_long_long=no +ac_cv_type_long_long=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 -echo "${ECHO_T}$ac_cv_type_long_long" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 +echo "${ECHO_T}$ac_cv_type_long_long" >&6 -{ echo "$as_me:$LINENO: checking size of long long" >&5 -echo $ECHO_N "checking size of long long... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking size of long long" >&5 +echo $ECHO_N "checking size of long long... $ECHO_C" >&6 if test "${ac_cv_sizeof_long_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$ac_cv_type_long_long" = yes; then - # The cast to long int works around a bug in the HP C Compiler + # The cast to unsigned long 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. @@ -23795,11 +20420,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef long long ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; +static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= 0)]; test_array [0] = 0 ; @@ -23807,36 +20431,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -23849,11 +20461,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef long long ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)]; test_array [0] = 0 ; @@ -23861,36 +20472,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -23899,32 +20498,30 @@ else 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` +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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF +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 - typedef long long ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; +static int test_array [1 - 2 * !(((long) (sizeof (long long))) < 0)]; test_array [0] = 0 ; @@ -23932,36 +20529,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -23974,11 +20559,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef long long ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; +static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= $ac_mid)]; test_array [0] = 0 ; @@ -23986,36 +20570,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -24024,27 +20596,24 @@ else 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_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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo= ac_hi= +ac_lo= ac_hi= fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f 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` @@ -24055,11 +20624,10 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef long long ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)]; test_array [0] = 0 ; @@ -24067,36 +20635,24 @@ test_array [0] = 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -24105,19 +20661,25 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo=`expr '(' $ac_mid ')' + 1` +ac_lo=`expr '(' $ac_mid ')' + 1` fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_long_long=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long) +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long long) +echo "$as_me: error: cannot compute sizeof (long long), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } ;; + { (exit 1); exit 1; }; } ;; esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -24126,9 +20688,8 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default - typedef long long ac__type_sizeof_; -static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } -static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } +long longval () { return (long) (sizeof (long long)); } +unsigned long ulongval () { return (long) (sizeof (long long)); } #include #include int @@ -24137,44 +20698,35 @@ main () FILE *f = fopen ("conftest.val", "w"); if (! f) - return 1; - if (((long int) (sizeof (ac__type_sizeof_))) < 0) + exit (1); + if (((long) (sizeof (long long))) < 0) { - long int i = longval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + long i = longval (); + if (i != ((long) (sizeof (long long)))) + exit (1); fprintf (f, "%ld\n", i); } else { - unsigned long int i = ulongval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + unsigned long i = ulongval (); + if (i != ((long) (sizeof (long long)))) + exit (1); fprintf (f, "%lu\n", i); } - return ferror (f) || fclose (f) != 0; + exit (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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -24185,29 +20737,30 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long long) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long long) +echo "$as_me: error: cannot compute sizeof (long long), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val else ac_cv_sizeof_long_long=0 fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5 -echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6 cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long _ACEOF -{ echo "$as_me:$LINENO: checking for u_int" >&5 -echo $ECHO_N "checking for u_int... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for u_int" >&5 +echo $ECHO_N "checking for u_int... $ECHO_C" >&6 if test "${ac_cv_type_u_int+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -24218,49 +20771,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef u_int ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((u_int *) 0) return 0; -if (sizeof (ac__type_new_)) +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;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -24269,13 +20809,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_u_int=no +ac_cv_type_u_int=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_u_int" >&5 -echo "${ECHO_T}$ac_cv_type_u_int" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_u_int" >&5 +echo "${ECHO_T}$ac_cv_type_u_int" >&6 if test $ac_cv_type_u_int = yes; then : else @@ -24286,8 +20825,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for u_long" >&5 -echo $ECHO_N "checking for u_long... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for u_long" >&5 +echo $ECHO_N "checking for u_long... $ECHO_C" >&6 if test "${ac_cv_type_u_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -24298,49 +20837,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef u_long ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((u_long *) 0) return 0; -if (sizeof (ac__type_new_)) +if (sizeof (u_long)) 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -24349,13 +20875,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_u_long=no +ac_cv_type_u_long=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_u_long" >&5 -echo "${ECHO_T}$ac_cv_type_u_long" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_u_long" >&5 +echo "${ECHO_T}$ac_cv_type_u_long" >&6 if test $ac_cv_type_u_long = yes; then : else @@ -24369,8 +20894,8 @@ fi if test "$ac_cv_sizeof_short" = 2; then - { echo "$as_me:$LINENO: checking for bits16_t" >&5 -echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for bits16_t" >&5 +echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6 if test "${ac_cv_type_bits16_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -24381,49 +20906,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef bits16_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((bits16_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -24432,13 +20944,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_bits16_t=no +ac_cv_type_bits16_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits16_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits16_t" >&6 if test $ac_cv_type_bits16_t = yes; then : else @@ -24450,8 +20961,8 @@ _ACEOF fi elif test "$ac_cv_sizeof_char" = 2; then - { echo "$as_me:$LINENO: checking for bits16_t" >&5 -echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for bits16_t" >&5 +echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6 if test "${ac_cv_type_bits16_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -24462,49 +20973,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef bits16_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((bits16_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -24513,13 +21011,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_bits16_t=no +ac_cv_type_bits16_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits16_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits16_t" >&6 if test $ac_cv_type_bits16_t = yes; then : else @@ -24531,8 +21028,8 @@ _ACEOF fi else - { echo "$as_me:$LINENO: checking for bits16_t" >&5 -echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for bits16_t" >&5 +echo $ECHO_N "checking for bits16_t... $ECHO_C" >&6 if test "${ac_cv_type_bits16_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -24543,49 +21040,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef bits16_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((bits16_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -24594,13 +21078,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_bits16_t=no +ac_cv_type_bits16_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits16_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits16_t" >&6 if test $ac_cv_type_bits16_t = yes; then : else @@ -24615,8 +21098,8 @@ fi if test "$ac_cv_sizeof_short" = 2; then - { echo "$as_me:$LINENO: checking for u_bits16_t" >&5 -echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for u_bits16_t" >&5 +echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6 if test "${ac_cv_type_u_bits16_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -24627,49 +21110,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef u_bits16_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((u_bits16_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -24678,13 +21148,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_u_bits16_t=no +ac_cv_type_u_bits16_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 -echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6 if test $ac_cv_type_u_bits16_t = yes; then : else @@ -24696,8 +21165,8 @@ _ACEOF fi elif test "$ac_cv_sizeof_char" = 2; then - { echo "$as_me:$LINENO: checking for u_bits16_t" >&5 -echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for u_bits16_t" >&5 +echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6 if test "${ac_cv_type_u_bits16_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -24708,49 +21177,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef u_bits16_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((u_bits16_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -24759,13 +21215,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_u_bits16_t=no +ac_cv_type_u_bits16_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 -echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6 if test $ac_cv_type_u_bits16_t = yes; then : else @@ -24777,8 +21232,8 @@ _ACEOF fi else - { echo "$as_me:$LINENO: checking for u_bits16_t" >&5 -echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for u_bits16_t" >&5 +echo $ECHO_N "checking for u_bits16_t... $ECHO_C" >&6 if test "${ac_cv_type_u_bits16_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -24789,49 +21244,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef u_bits16_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((u_bits16_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -24840,13 +21282,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_u_bits16_t=no +ac_cv_type_u_bits16_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 -echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits16_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits16_t" >&6 if test $ac_cv_type_u_bits16_t = yes; then : else @@ -24861,8 +21302,8 @@ fi if test "$ac_cv_sizeof_int" = 4; then - { echo "$as_me:$LINENO: checking for bits32_t" >&5 -echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for bits32_t" >&5 +echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6 if test "${ac_cv_type_bits32_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -24873,49 +21314,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef bits32_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((bits32_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -24924,13 +21352,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_bits32_t=no +ac_cv_type_bits32_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits32_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits32_t" >&6 if test $ac_cv_type_bits32_t = yes; then : else @@ -24942,8 +21369,8 @@ _ACEOF fi elif test "$ac_cv_sizeof_long" = 4; then - { echo "$as_me:$LINENO: checking for bits32_t" >&5 -echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for bits32_t" >&5 +echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6 if test "${ac_cv_type_bits32_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -24954,49 +21381,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef bits32_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((bits32_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -25005,13 +21419,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_bits32_t=no +ac_cv_type_bits32_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits32_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits32_t" >&6 if test $ac_cv_type_bits32_t = yes; then : else @@ -25023,8 +21436,8 @@ _ACEOF fi else - { echo "$as_me:$LINENO: checking for bits32_t" >&5 -echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for bits32_t" >&5 +echo $ECHO_N "checking for bits32_t... $ECHO_C" >&6 if test "${ac_cv_type_bits32_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -25035,49 +21448,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef bits32_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((bits32_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -25086,13 +21486,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_bits32_t=no +ac_cv_type_bits32_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits32_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits32_t" >&6 if test $ac_cv_type_bits32_t = yes; then : else @@ -25107,8 +21506,8 @@ fi if test "$ac_cv_sizeof_int" = 4; then - { echo "$as_me:$LINENO: checking for u_bits32_t" >&5 -echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for u_bits32_t" >&5 +echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6 if test "${ac_cv_type_u_bits32_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -25119,49 +21518,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef u_bits32_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((u_bits32_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -25170,13 +21556,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_u_bits32_t=no +ac_cv_type_u_bits32_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 -echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6 if test $ac_cv_type_u_bits32_t = yes; then : else @@ -25188,8 +21573,8 @@ _ACEOF fi elif test "$ac_cv_sizeof_long" = 4; then - { echo "$as_me:$LINENO: checking for u_bits32_t" >&5 -echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for u_bits32_t" >&5 +echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6 if test "${ac_cv_type_u_bits32_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -25200,49 +21585,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef u_bits32_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((u_bits32_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -25251,13 +21623,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_u_bits32_t=no +ac_cv_type_u_bits32_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 -echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6 if test $ac_cv_type_u_bits32_t = yes; then : else @@ -25269,8 +21640,8 @@ _ACEOF fi else - { echo "$as_me:$LINENO: checking for u_bits32_t" >&5 -echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for u_bits32_t" >&5 +echo $ECHO_N "checking for u_bits32_t... $ECHO_C" >&6 if test "${ac_cv_type_u_bits32_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -25281,49 +21652,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef u_bits32_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((u_bits32_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -25332,13 +21690,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_u_bits32_t=no +ac_cv_type_u_bits32_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 -echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_u_bits32_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_bits32_t" >&6 if test $ac_cv_type_u_bits32_t = yes; then : else @@ -25353,8 +21710,8 @@ fi if test "$ac_cv_sizeof_char_p" = 8; then - { echo "$as_me:$LINENO: checking for bits64_t" >&5 -echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 if test "${ac_cv_type_bits64_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -25365,49 +21722,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef bits64_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((bits64_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -25416,13 +21760,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_bits64_t=no +ac_cv_type_bits64_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits64_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 if test $ac_cv_type_bits64_t = yes; then : else @@ -25434,8 +21777,8 @@ _ACEOF fi elif test "$ac_cv_sizeof_double" = 8; then - { echo "$as_me:$LINENO: checking for bits64_t" >&5 -echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 if test "${ac_cv_type_bits64_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -25446,49 +21789,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef bits64_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((bits64_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -25497,13 +21827,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_bits64_t=no +ac_cv_type_bits64_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits64_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 if test $ac_cv_type_bits64_t = yes; then : else @@ -25515,8 +21844,8 @@ _ACEOF fi elif test -n "$ac_cv_type_long_long" && test "$ac_cv_sizeof_long_long" = 8; then - { echo "$as_me:$LINENO: checking for bits64_t" >&5 -echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 if test "${ac_cv_type_bits64_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -25527,49 +21856,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef bits64_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((bits64_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -25578,13 +21894,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_bits64_t=no +ac_cv_type_bits64_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits64_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 if test $ac_cv_type_bits64_t = yes; then : else @@ -25596,8 +21911,8 @@ _ACEOF fi elif test "$ac_cv_sizeof_long" = 8; then - { echo "$as_me:$LINENO: checking for bits64_t" >&5 -echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 if test "${ac_cv_type_bits64_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -25608,49 +21923,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef bits64_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((bits64_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -25659,13 +21961,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_bits64_t=no +ac_cv_type_bits64_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits64_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 if test $ac_cv_type_bits64_t = yes; then : else @@ -25677,8 +21978,8 @@ _ACEOF fi else - { echo "$as_me:$LINENO: checking for bits64_t" >&5 -echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for bits64_t" >&5 +echo $ECHO_N "checking for bits64_t... $ECHO_C" >&6 if test "${ac_cv_type_bits64_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -25689,49 +21990,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef bits64_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((bits64_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -25740,13 +22028,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_bits64_t=no +ac_cv_type_bits64_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 -echo "${ECHO_T}$ac_cv_type_bits64_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_bits64_t" >&5 +echo "${ECHO_T}$ac_cv_type_bits64_t" >&6 if test $ac_cv_type_bits64_t = yes; then : else @@ -25762,8 +22049,8 @@ fi if test "$ac_cv_sizeof_int" = "$ac_cv_sizeof_char_p"; then - { echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 -echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 if test "${ac_cv_type_ptrdiff_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -25774,49 +22061,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef ptrdiff_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((ptrdiff_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -25825,13 +22099,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_ptrdiff_t=no +ac_cv_type_ptrdiff_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 -echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 if test $ac_cv_type_ptrdiff_t = yes; then : else @@ -25843,8 +22116,8 @@ _ACEOF fi elif test "$ac_cv_sizeof_long" = "$ac_cv_sizeof_char_p"; then - { echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 -echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 if test "${ac_cv_type_ptrdiff_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -25855,49 +22128,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef ptrdiff_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((ptrdiff_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -25906,13 +22166,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_ptrdiff_t=no +ac_cv_type_ptrdiff_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 -echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 if test $ac_cv_type_ptrdiff_t = yes; then : else @@ -25924,8 +22183,8 @@ _ACEOF fi elif test "$ac_cv_type_long_long" = yes && test "$ac_cv_sizeof_long_long" = "$ac_cv_sizeof_char_p"; then - { echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 -echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 if test "${ac_cv_type_ptrdiff_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -25936,49 +22195,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef ptrdiff_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((ptrdiff_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -25987,13 +22233,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_ptrdiff_t=no +ac_cv_type_ptrdiff_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 -echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 if test $ac_cv_type_ptrdiff_t = yes; then : else @@ -26005,8 +22250,8 @@ _ACEOF fi else - { echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 -echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 if test "${ac_cv_type_ptrdiff_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -26017,49 +22262,36 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef ptrdiff_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((ptrdiff_t *) 0) return 0; -if (sizeof (ac__type_new_)) +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -26068,13 +22300,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_ptrdiff_t=no +ac_cv_type_ptrdiff_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 -echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 if test $ac_cv_type_ptrdiff_t = yes; then : else @@ -26088,8 +22319,8 @@ fi fi -{ echo "$as_me:$LINENO: checking whether stat file-mode macros are broken" >&5 -echo $ECHO_N "checking whether stat file-mode macros are broken... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether stat file-mode macros are broken" >&5 +echo $ECHO_N "checking whether stat file-mode macros are broken... $ECHO_C" >&6 if test "${ac_cv_header_stat_broken+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -26102,25 +22333,25 @@ cat >>conftest.$ac_ext <<_ACEOF #include #include -#if defined S_ISBLK && defined S_IFDIR +#if defined(S_ISBLK) && defined(S_IFDIR) # if S_ISBLK (S_IFDIR) You lose. # endif #endif -#if defined S_ISBLK && defined S_IFCHR +#if defined(S_ISBLK) && defined(S_IFCHR) # if S_ISBLK (S_IFCHR) You lose. # endif #endif -#if defined S_ISLNK && defined S_IFREG +#if defined(S_ISLNK) && defined(S_IFREG) # if S_ISLNK (S_IFREG) You lose. # endif #endif -#if defined S_ISSOCK && defined S_IFREG +#if defined(S_ISSOCK) && defined(S_IFREG) # if S_ISSOCK (S_IFREG) You lose. # endif @@ -26136,8 +22367,8 @@ fi rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_stat_broken" >&5 -echo "${ECHO_T}$ac_cv_header_stat_broken" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_header_stat_broken" >&5 +echo "${ECHO_T}$ac_cv_header_stat_broken" >&6 if test $ac_cv_header_stat_broken = yes; then cat >>confdefs.h <<\_ACEOF @@ -26147,8 +22378,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether #! works in shell scripts" >&5 -echo $ECHO_N "checking whether #! works in shell scripts... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether #! works in shell scripts" >&5 +echo $ECHO_N "checking whether #! works in shell scripts... $ECHO_C" >&6 if test "${ac_cv_sys_interpreter+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -26164,8 +22395,8 @@ else fi rm -f conftest fi -{ echo "$as_me:$LINENO: result: $ac_cv_sys_interpreter" >&5 -echo "${ECHO_T}$ac_cv_sys_interpreter" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_sys_interpreter" >&5 +echo "${ECHO_T}$ac_cv_sys_interpreter" >&6 interpval=$ac_cv_sys_interpreter if test $ac_cv_sys_interpreter = yes; then @@ -26176,8 +22407,8 @@ _ACEOF fi if test "$ac_cv_func_lstat" = "no"; then -{ echo "$as_me:$LINENO: checking for lstat" >&5 -echo $ECHO_N "checking for lstat... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for lstat" >&5 +echo $ECHO_N "checking for lstat... $ECHO_C" >&6 if test "${bash_cv_func_lstat+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -26200,36 +22431,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -26238,14 +22457,13 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_func_lstat" >&5 -echo "${ECHO_T}$bash_cv_func_lstat" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_func_lstat" >&5 +echo "${ECHO_T}$bash_cv_func_lstat" >&6 if test $bash_cv_func_lstat = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_LSTAT 1 @@ -26256,8 +22474,8 @@ fi fi -{ echo "$as_me:$LINENO: checking whether the ctype macros accept non-ascii characters" >&5 -echo $ECHO_N "checking whether the ctype macros accept non-ascii characters... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether the ctype macros accept non-ascii characters" >&5 +echo $ECHO_N "checking whether the ctype macros accept non-ascii characters... $ECHO_C" >&6 if test "${bash_cv_func_ctype_nonascii+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -26306,22 +22524,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -26334,14 +22543,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_func_ctype_nonascii=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_func_ctype_nonascii" >&5 -echo "${ECHO_T}$bash_cv_func_ctype_nonascii" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_func_ctype_nonascii" >&5 +echo "${ECHO_T}$bash_cv_func_ctype_nonascii" >&6 if test $bash_cv_func_ctype_nonascii = yes; then cat >>confdefs.h <<\_ACEOF #define CTYPE_NON_ASCII 1 @@ -26349,8 +22556,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking if dup2 fails to clear the close-on-exec flag" >&5 -echo $ECHO_N "checking if dup2 fails to clear the close-on-exec flag... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking if dup2 fails to clear the close-on-exec flag" >&5 +echo $ECHO_N "checking if dup2 fails to clear the close-on-exec flag... $ECHO_C" >&6 if test "${bash_cv_dup2_broken+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -26384,22 +22591,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -26412,15 +22610,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_dup2_broken=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_dup2_broken" >&5 -echo "${ECHO_T}$bash_cv_dup2_broken" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_dup2_broken" >&5 +echo "${ECHO_T}$bash_cv_dup2_broken" >&6 if test $bash_cv_dup2_broken = yes; then cat >>confdefs.h <<\_ACEOF #define DUP2_BROKEN 1 @@ -26429,8 +22625,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether pgrps need synchronization" >&5 -echo $ECHO_N "checking whether pgrps need synchronization... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether pgrps need synchronization" >&5 +echo $ECHO_N "checking whether pgrps need synchronization... $ECHO_C" >&6 if test "${bash_cv_pgrp_pipe+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -26496,22 +22692,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -26524,15 +22711,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_pgrp_pipe=yes fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_pgrp_pipe" >&5 -echo "${ECHO_T}$bash_cv_pgrp_pipe" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_pgrp_pipe" >&5 +echo "${ECHO_T}$bash_cv_pgrp_pipe" >&6 if test $bash_cv_pgrp_pipe = yes; then cat >>confdefs.h <<\_ACEOF #define PGRP_PIPE 1 @@ -26541,8 +22726,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for type of signal functions" >&5 -echo $ECHO_N "checking for type of signal functions... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for type of signal functions" >&5 +echo $ECHO_N "checking for type of signal functions... $ECHO_C" >&6 if test "${bash_cv_signal_vintage+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -26569,36 +22754,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -26627,36 +22800,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -26688,36 +22849,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -26726,27 +22875,24 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_signal_vintage" >&5 -echo "${ECHO_T}$bash_cv_signal_vintage" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_signal_vintage" >&5 +echo "${ECHO_T}$bash_cv_signal_vintage" >&6 if test "$bash_cv_signal_vintage" = posix; then cat >>confdefs.h <<\_ACEOF #define HAVE_POSIX_SIGNALS 1 @@ -26765,8 +22911,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for sys_errlist and sys_nerr" >&5 -echo $ECHO_N "checking for sys_errlist and sys_nerr... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for sys_errlist and sys_nerr" >&5 +echo $ECHO_N "checking for sys_errlist and sys_nerr... $ECHO_C" >&6 if test "${bash_cv_sys_errlist+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -26788,36 +22934,24 @@ extern char *sys_errlist[]; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -26826,14 +22960,13 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_sys_errlist" >&5 -echo "${ECHO_T}$bash_cv_sys_errlist" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_sys_errlist" >&5 +echo "${ECHO_T}$bash_cv_sys_errlist" >&6 if test $bash_cv_sys_errlist = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_SYS_ERRLIST 1 @@ -26842,8 +22975,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for sys_siglist in system C library" >&5 -echo $ECHO_N "checking for sys_siglist in system C library... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for sys_siglist in system C library" >&5 +echo $ECHO_N "checking for sys_siglist in system C library... $ECHO_C" >&6 if test "${bash_cv_sys_siglist+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -26864,7 +22997,7 @@ cat >>conftest.$ac_ext <<_ACEOF #ifdef HAVE_UNISTD_H #include #endif -#if !HAVE_DECL_SYS_SIGLIST +#ifndef SYS_SIGLIST_DECLARED extern char *sys_siglist[]; #endif main() @@ -26874,22 +23007,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -26902,14 +23026,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_sys_siglist=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_sys_siglist" >&5 -echo "${ECHO_T}$bash_cv_sys_siglist" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_sys_siglist" >&5 +echo "${ECHO_T}$bash_cv_sys_siglist" >&6 if test $bash_cv_sys_siglist = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_SYS_SIGLIST 1 @@ -26917,8 +23039,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for _sys_siglist in signal.h or unistd.h" >&5 -echo $ECHO_N "checking for _sys_siglist in signal.h or unistd.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for _sys_siglist in signal.h or unistd.h" >&5 +echo $ECHO_N "checking for _sys_siglist in signal.h or unistd.h... $ECHO_C" >&6 if test "${bash_cv_decl_under_sys_siglist+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -26943,36 +23065,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -26981,13 +23091,12 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_decl_under_sys_siglist" >&5 -echo "${ECHO_T}$bash_cv_decl_under_sys_siglist" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_decl_under_sys_siglist" >&5 +echo "${ECHO_T}$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 @@ -26996,8 +23105,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for _sys_siglist in system C library" >&5 -echo $ECHO_N "checking for _sys_siglist in system C library... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for _sys_siglist in system C library" >&5 +echo $ECHO_N "checking for _sys_siglist in system C library... $ECHO_C" >&6 if test "${bash_cv_under_sys_siglist+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -27028,22 +23137,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -27056,14 +23156,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_under_sys_siglist=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_under_sys_siglist" >&5 -echo "${ECHO_T}$bash_cv_under_sys_siglist" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_under_sys_siglist" >&5 +echo "${ECHO_T}$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 @@ -27072,8 +23170,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether signal handlers are of type void" >&5 -echo $ECHO_N "checking whether signal handlers are of type void... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether signal handlers are of type void" >&5 +echo $ECHO_N "checking whether signal handlers are of type void... $ECHO_C" >&6 if test "${bash_cv_void_sighandler+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -27101,36 +23199,24 @@ int i; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -27139,13 +23225,12 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_void_sighandler" >&5 -echo "${ECHO_T}$bash_cv_void_sighandler" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_void_sighandler" >&5 +echo "${ECHO_T}$bash_cv_void_sighandler" >&6 if test $bash_cv_void_sighandler = yes; then cat >>confdefs.h <<\_ACEOF #define VOID_SIGHANDLER 1 @@ -27155,8 +23240,8 @@ fi -{ echo "$as_me:$LINENO: checking for clock_t" >&5 -echo $ECHO_N "checking for clock_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for clock_t" >&5 +echo $ECHO_N "checking for clock_t... $ECHO_C" >&6 if test "${bash_cv_type_clock_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -27187,8 +23272,8 @@ rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $bash_cv_type_clock_t" >&5 -echo "${ECHO_T}$bash_cv_type_clock_t" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_type_clock_t" >&5 +echo "${ECHO_T}$bash_cv_type_clock_t" >&6 if test $bash_cv_type_clock_t = no; then cat >>confdefs.h <<_ACEOF @@ -27199,8 +23284,8 @@ fi -{ echo "$as_me:$LINENO: checking for sigset_t" >&5 -echo $ECHO_N "checking for sigset_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for sigset_t" >&5 +echo $ECHO_N "checking for sigset_t... $ECHO_C" >&6 if test "${bash_cv_type_sigset_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -27231,8 +23316,8 @@ rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $bash_cv_type_sigset_t" >&5 -echo "${ECHO_T}$bash_cv_type_sigset_t" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_type_sigset_t" >&5 +echo "${ECHO_T}$bash_cv_type_sigset_t" >&6 if test $bash_cv_type_sigset_t = no; then cat >>confdefs.h <<_ACEOF @@ -27243,8 +23328,8 @@ fi -{ echo "$as_me:$LINENO: checking for quad_t" >&5 -echo $ECHO_N "checking for quad_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for quad_t" >&5 +echo $ECHO_N "checking for quad_t... $ECHO_C" >&6 if test "${bash_cv_type_quad_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -27275,8 +23360,8 @@ rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $bash_cv_type_quad_t" >&5 -echo "${ECHO_T}$bash_cv_type_quad_t" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_type_quad_t" >&5 +echo "${ECHO_T}$bash_cv_type_quad_t" >&6 if test $bash_cv_type_quad_t = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_QUAD_T 1 @@ -27292,8 +23377,8 @@ fi -{ echo "$as_me:$LINENO: checking for intmax_t" >&5 -echo $ECHO_N "checking for intmax_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for intmax_t" >&5 +echo $ECHO_N "checking for intmax_t... $ECHO_C" >&6 if test "${bash_cv_type_intmax_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -27324,8 +23409,8 @@ rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $bash_cv_type_intmax_t" >&5 -echo "${ECHO_T}$bash_cv_type_intmax_t" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_type_intmax_t" >&5 +echo "${ECHO_T}$bash_cv_type_intmax_t" >&6 if test $bash_cv_type_intmax_t = no; then cat >>confdefs.h <<_ACEOF @@ -27336,8 +23421,8 @@ fi -{ echo "$as_me:$LINENO: checking for uintmax_t" >&5 -echo $ECHO_N "checking for uintmax_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for uintmax_t" >&5 +echo $ECHO_N "checking for uintmax_t... $ECHO_C" >&6 if test "${bash_cv_type_uintmax_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -27368,8 +23453,8 @@ rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $bash_cv_type_uintmax_t" >&5 -echo "${ECHO_T}$bash_cv_type_uintmax_t" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_type_uintmax_t" >&5 +echo "${ECHO_T}$bash_cv_type_uintmax_t" >&6 if test $bash_cv_type_uintmax_t = no; then cat >>confdefs.h <<_ACEOF @@ -27381,8 +23466,8 @@ fi if test "$ac_cv_header_sys_socket_h" = "yes"; then -{ echo "$as_me:$LINENO: checking for socklen_t" >&5 -echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for socklen_t" >&5 +echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6 if test "${bash_cv_type_socklen_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -27413,8 +23498,8 @@ rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $bash_cv_type_socklen_t" >&5 -echo "${ECHO_T}$bash_cv_type_socklen_t" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_type_socklen_t" >&5 +echo "${ECHO_T}$bash_cv_type_socklen_t" >&6 if test $bash_cv_type_socklen_t = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_SOCKLEN_T 1 @@ -27429,8 +23514,8 @@ _ACEOF fi fi -{ echo "$as_me:$LINENO: checking for size and type of struct rlimit fields" >&5 -echo $ECHO_N "checking for size and type of struct rlimit fields... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for size and type of struct rlimit fields" >&5 +echo $ECHO_N "checking for size and type of struct rlimit fields... $ECHO_C" >&6 if test "${bash_cv_type_rlimit+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -27451,36 +23536,24 @@ rlim_t xxx; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -27516,22 +23589,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -27544,18 +23608,15 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_type_rlimit=long fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_type_rlimit" >&5 -echo "${ECHO_T}$bash_cv_type_rlimit" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_type_rlimit" >&5 +echo "${ECHO_T}$bash_cv_type_rlimit" >&6 if test $bash_cv_type_rlimit = quad_t; then cat >>confdefs.h <<\_ACEOF #define RLIMTYPE quad_t @@ -27570,8 +23631,8 @@ fi -{ echo "$as_me:$LINENO: checking for struct termios.c_line" >&5 -echo $ECHO_N "checking for struct termios.c_line... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for struct termios.c_line" >&5 +echo $ECHO_N "checking for struct termios.c_line... $ECHO_C" >&6 if test "${ac_cv_member_struct_termios_c_line+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -27597,36 +23658,24 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -27635,7 +23684,7 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -27657,36 +23706,24 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -27695,16 +23732,14 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_member_struct_termios_c_line=no +ac_cv_member_struct_termios_c_line=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_termios_c_line" >&5 -echo "${ECHO_T}$ac_cv_member_struct_termios_c_line" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_member_struct_termios_c_line" >&5 +echo "${ECHO_T}$ac_cv_member_struct_termios_c_line" >&6 if test $ac_cv_member_struct_termios_c_line = yes; then cat >>confdefs.h <<\_ACEOF #define TERMIOS_LDISC 1 @@ -27714,8 +23749,8 @@ fi -{ echo "$as_me:$LINENO: checking for struct termio.c_line" >&5 -echo $ECHO_N "checking for struct termio.c_line... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for struct termio.c_line" >&5 +echo $ECHO_N "checking for struct termio.c_line... $ECHO_C" >&6 if test "${ac_cv_member_struct_termio_c_line+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -27741,36 +23776,24 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -27779,7 +23802,7 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -27801,36 +23824,24 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -27839,16 +23850,14 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_member_struct_termio_c_line=no +ac_cv_member_struct_termio_c_line=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_termio_c_line" >&5 -echo "${ECHO_T}$ac_cv_member_struct_termio_c_line" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_member_struct_termio_c_line" >&5 +echo "${ECHO_T}$ac_cv_member_struct_termio_c_line" >&6 if test $ac_cv_member_struct_termio_c_line = yes; then cat >>confdefs.h <<\_ACEOF #define TERMIO_LDISC 1 @@ -27858,8 +23867,8 @@ fi -{ echo "$as_me:$LINENO: checking for struct dirent.d_ino" >&5 -echo $ECHO_N "checking for struct dirent.d_ino... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for struct dirent.d_ino" >&5 +echo $ECHO_N "checking for struct dirent.d_ino... $ECHO_C" >&6 if test "${bash_cv_dirent_has_dino+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -27901,36 +23910,24 @@ struct dirent d; int z; z = d.d_ino; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -27939,14 +23936,13 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_dirent_has_dino" >&5 -echo "${ECHO_T}$bash_cv_dirent_has_dino" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_dirent_has_dino" >&5 +echo "${ECHO_T}$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 @@ -27955,8 +23951,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for struct dirent.d_fileno" >&5 -echo $ECHO_N "checking for struct dirent.d_fileno... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for struct dirent.d_fileno" >&5 +echo $ECHO_N "checking for struct dirent.d_fileno... $ECHO_C" >&6 if test "${bash_cv_dirent_has_d_fileno+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -27998,36 +23994,24 @@ struct dirent d; int z; z = d.d_fileno; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -28036,14 +24020,13 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_dirent_has_d_fileno" >&5 -echo "${ECHO_T}$bash_cv_dirent_has_d_fileno" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_dirent_has_d_fileno" >&5 +echo "${ECHO_T}$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 @@ -28052,8 +24035,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for struct dirent.d_namlen" >&5 -echo $ECHO_N "checking for struct dirent.d_namlen... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for struct dirent.d_namlen" >&5 +echo $ECHO_N "checking for struct dirent.d_namlen... $ECHO_C" >&6 if test "${bash_cv_dirent_has_d_namlen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -28095,36 +24078,24 @@ struct dirent d; int z; z = d.d_namlen; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -28133,14 +24104,13 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_dirent_has_d_namlen" >&5 -echo "${ECHO_T}$bash_cv_dirent_has_d_namlen" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_dirent_has_d_namlen" >&5 +echo "${ECHO_T}$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 @@ -28148,8 +24118,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for struct winsize in sys/ioctl.h and termios.h" >&5 -echo $ECHO_N "checking for struct winsize in sys/ioctl.h and termios.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for struct winsize in sys/ioctl.h and termios.h" >&5 +echo $ECHO_N "checking for struct winsize in sys/ioctl.h and termios.h... $ECHO_C" >&6 if test "${bash_cv_struct_winsize_header+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -28170,36 +24140,24 @@ struct winsize x; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -28208,7 +24166,7 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -28225,36 +24183,24 @@ struct winsize x; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -28263,37 +24209,35 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $bash_cv_struct_winsize_header = ioctl_h; then - { echo "$as_me:$LINENO: result: sys/ioctl.h" >&5 -echo "${ECHO_T}sys/ioctl.h" >&6; } + echo "$as_me:$LINENO: result: sys/ioctl.h" >&5 +echo "${ECHO_T}sys/ioctl.h" >&6 cat >>confdefs.h <<\_ACEOF #define STRUCT_WINSIZE_IN_SYS_IOCTL 1 _ACEOF elif test $bash_cv_struct_winsize_header = termios_h; then - { echo "$as_me:$LINENO: result: termios.h" >&5 -echo "${ECHO_T}termios.h" >&6; } + echo "$as_me:$LINENO: result: termios.h" >&5 +echo "${ECHO_T}termios.h" >&6 cat >>confdefs.h <<\_ACEOF #define STRUCT_WINSIZE_IN_TERMIOS 1 _ACEOF else - { echo "$as_me:$LINENO: result: not found" >&5 -echo "${ECHO_T}not found" >&6; } + echo "$as_me:$LINENO: result: not found" >&5 +echo "${ECHO_T}not found" >&6 fi -{ echo "$as_me:$LINENO: checking for struct timeval in sys/time.h and time.h" >&5 -echo $ECHO_N "checking for struct timeval in sys/time.h and time.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for struct timeval in sys/time.h and time.h" >&5 +echo $ECHO_N "checking for struct timeval in sys/time.h and time.h... $ECHO_C" >&6 if test "${bash_cv_struct_timeval+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -28334,8 +24278,8 @@ rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $bash_cv_struct_timeval" >&5 -echo "${ECHO_T}$bash_cv_struct_timeval" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_struct_timeval" >&5 +echo "${ECHO_T}$bash_cv_struct_timeval" >&6 if test $bash_cv_struct_timeval = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_TIMEVAL 1 @@ -28343,8 +24287,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for struct stat.st_blocks" >&5 -echo $ECHO_N "checking for struct stat.st_blocks... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for struct stat.st_blocks" >&5 +echo $ECHO_N "checking for struct stat.st_blocks... $ECHO_C" >&6 if test "${ac_cv_member_struct_stat_st_blocks+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -28366,36 +24310,24 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -28404,7 +24336,7 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -28422,36 +24354,24 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -28460,16 +24380,14 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_member_struct_stat_st_blocks=no +ac_cv_member_struct_stat_st_blocks=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_blocks" >&5 -echo "${ECHO_T}$ac_cv_member_struct_stat_st_blocks" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_blocks" >&5 +echo "${ECHO_T}$ac_cv_member_struct_stat_st_blocks" >&6 if test $ac_cv_member_struct_stat_st_blocks = yes; then cat >>confdefs.h <<_ACEOF @@ -28479,8 +24397,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5 -echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5 +echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6 if test "${ac_cv_struct_tm+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -28502,36 +24420,24 @@ struct tm *tp; tp->tm_sec; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -28540,13 +24446,12 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_struct_tm=sys/time.h +ac_cv_struct_tm=sys/time.h fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5 -echo "${ECHO_T}$ac_cv_struct_tm" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5 +echo "${ECHO_T}$ac_cv_struct_tm" >&6 if test $ac_cv_struct_tm = sys/time.h; then cat >>confdefs.h <<\_ACEOF @@ -28555,8 +24460,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for struct tm.tm_zone" >&5 -echo $ECHO_N "checking for struct tm.tm_zone... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for struct tm.tm_zone" >&5 +echo $ECHO_N "checking for struct tm.tm_zone... $ECHO_C" >&6 if test "${ac_cv_member_struct_tm_tm_zone+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -28581,36 +24486,24 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -28619,7 +24512,7 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -28632,167 +24525,66 @@ cat >>conftest.$ac_ext <<_ACEOF 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 "echo \"\$as_me:$LINENO: $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 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_member_struct_tm_tm_zone=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_member_struct_tm_tm_zone=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 -{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_zone" >&5 -echo "${ECHO_T}$ac_cv_member_struct_tm_tm_zone" >&6; } -if test $ac_cv_member_struct_tm_tm_zone = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_TM_TM_ZONE 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 - { echo "$as_me:$LINENO: checking whether tzname is declared" >&5 -echo $ECHO_N "checking whether tzname is declared... $ECHO_C" >&6; } -if test "${ac_cv_have_decl_tzname+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&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 tzname - char *p = (char *) tzname; - return !p; -#endif - +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_have_decl_tzname=yes + ac_cv_member_struct_tm_tm_zone=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_have_decl_tzname=no +ac_cv_member_struct_tm_tm_zone=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_tzname" >&5 -echo "${ECHO_T}$ac_cv_have_decl_tzname" >&6; } -if test $ac_cv_have_decl_tzname = yes; then +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_zone" >&5 +echo "${ECHO_T}$ac_cv_member_struct_tm_tm_zone" >&6 +if test $ac_cv_member_struct_tm_tm_zone = yes; then cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_TZNAME 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_TZNAME 0 +#define HAVE_STRUCT_TM_TM_ZONE 1 _ACEOF fi +if test "$ac_cv_member_struct_tm_tm_zone" = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_TM_ZONE 1 +_ACEOF - { echo "$as_me:$LINENO: checking for tzname" >&5 -echo $ECHO_N "checking for tzname... $ECHO_C" >&6; } +else + echo "$as_me:$LINENO: checking for tzname" >&5 +echo $ECHO_N "checking for tzname... $ECHO_C" >&6 if test "${ac_cv_var_tzname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -28803,49 +24595,37 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include -#if !HAVE_DECL_TZNAME -extern char *tzname[]; +#ifndef tzname /* For SGI. */ +extern char *tzname[]; /* RS6000 and others reject char **tzname. */ #endif int main () { -return tzname[0][0]; +atoi(*tzname); ; 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -28854,14 +24634,13 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_var_tzname" >&5 -echo "${ECHO_T}$ac_cv_var_tzname" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_var_tzname" >&5 +echo "${ECHO_T}$ac_cv_var_tzname" >&6 if test $ac_cv_var_tzname = yes; then cat >>confdefs.h <<\_ACEOF @@ -28871,8 +24650,8 @@ _ACEOF fi fi -{ echo "$as_me:$LINENO: checking for struct timezone in sys/time.h and time.h" >&5 -echo $ECHO_N "checking for struct timezone in sys/time.h and time.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for struct timezone in sys/time.h and time.h" >&5 +echo $ECHO_N "checking for struct timezone in sys/time.h and time.h... $ECHO_C" >&6 if test "${bash_cv_struct_timezone+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -28913,8 +24692,8 @@ rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $bash_cv_struct_timezone" >&5 -echo "${ECHO_T}$bash_cv_struct_timezone" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_struct_timezone" >&5 +echo "${ECHO_T}$bash_cv_struct_timezone" >&6 if test $bash_cv_struct_timezone = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_STRUCT_TIMEZONE 1 @@ -28923,8 +24702,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for the existence of strsignal" >&5 -echo $ECHO_N "checking for the existence of strsignal... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for the existence of strsignal" >&5 +echo $ECHO_N "checking for the existence of strsignal... $ECHO_C" >&6 if test "${bash_cv_have_strsignal+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -28945,36 +24724,24 @@ char *s = (char *)strsignal(2); } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -28983,15 +24750,14 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_have_strsignal" >&5 -echo "${ECHO_T}$bash_cv_have_strsignal" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_have_strsignal" >&5 +echo "${ECHO_T}$bash_cv_have_strsignal" >&6 if test $bash_cv_have_strsignal = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_STRSIGNAL 1 @@ -28999,8 +24765,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking if opendir() opens non-directories" >&5 -echo $ECHO_N "checking if opendir() opens non-directories... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking if opendir() opens non-directories" >&5 +echo $ECHO_N "checking if opendir() opens non-directories... $ECHO_C" >&6 if test "${bash_cv_opendir_not_robust+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -29057,22 +24823,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -29085,14 +24842,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_opendir_not_robust=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_opendir_not_robust" >&5 -echo "${ECHO_T}$bash_cv_opendir_not_robust" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_opendir_not_robust" >&5 +echo "${ECHO_T}$bash_cv_opendir_not_robust" >&6 if test $bash_cv_opendir_not_robust = yes; then cat >>confdefs.h <<\_ACEOF #define OPENDIR_NOT_ROBUST 1 @@ -29100,8 +24855,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether ulimit can substitute for getdtablesize" >&5 -echo $ECHO_N "checking whether ulimit can substitute for getdtablesize... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether ulimit can substitute for getdtablesize" >&5 +echo $ECHO_N "checking whether ulimit can substitute for getdtablesize... $ECHO_C" >&6 if test "${bash_cv_ulimit_maxfds+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -29126,22 +24881,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -29154,14 +24900,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_ulimit_maxfds=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_ulimit_maxfds" >&5 -echo "${ECHO_T}$bash_cv_ulimit_maxfds" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_ulimit_maxfds" >&5 +echo "${ECHO_T}$bash_cv_ulimit_maxfds" >&6 if test $bash_cv_ulimit_maxfds = yes; then cat >>confdefs.h <<\_ACEOF #define ULIMIT_MAXFDS 1 @@ -29169,8 +24913,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking to see if getenv can be redefined" >&5 -echo $ECHO_N "checking to see if getenv can be redefined... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking to see if getenv can be redefined" >&5 +echo $ECHO_N "checking to see if getenv can be redefined... $ECHO_C" >&6 if test "${bash_cv_getenv_redef+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -29220,22 +24964,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -29248,14 +24983,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_getenv_redef=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_getenv_redef" >&5 -echo "${ECHO_T}$bash_cv_getenv_redef" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_getenv_redef" >&5 +echo "${ECHO_T}$bash_cv_getenv_redef" >&6 if test $bash_cv_getenv_redef = yes; then cat >>confdefs.h <<\_ACEOF #define CAN_REDEFINE_GETENV 1 @@ -29264,8 +24997,8 @@ _ACEOF fi if test "$ac_cv_func_getcwd" = "yes"; then -{ echo "$as_me:$LINENO: checking if getcwd() will dynamically allocate memory with 0 size" >&5 -echo $ECHO_N "checking if getcwd() will dynamically allocate memory with 0 size... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking if getcwd() will dynamically allocate memory" >&5 +echo $ECHO_N "checking if getcwd() will dynamically allocate memory... $ECHO_C" >&6 if test "${bash_cv_getcwd_malloc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -29296,22 +25029,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -29324,31 +25048,31 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_getcwd_malloc=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_getcwd_malloc" >&5 -echo "${ECHO_T}$bash_cv_getcwd_malloc" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_getcwd_malloc" >&5 +echo "${ECHO_T}$bash_cv_getcwd_malloc" >&6 if test $bash_cv_getcwd_malloc = no; then cat >>confdefs.h <<\_ACEOF #define GETCWD_BROKEN 1 _ACEOF -case " $LIBOBJS " in +case $LIBOBJS in + "getcwd.$ac_objext" | \ + *" getcwd.$ac_objext" | \ + "getcwd.$ac_objext "* | \ *" getcwd.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS getcwd.$ac_objext" - ;; + *) LIBOBJS="$LIBOBJS getcwd.$ac_objext" ;; esac fi fi -{ echo "$as_me:$LINENO: checking for presence of POSIX-style sigsetjmp/siglongjmp" >&5 -echo $ECHO_N "checking for presence of POSIX-style sigsetjmp/siglongjmp... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for presence of POSIX-style sigsetjmp/siglongjmp" >&5 +echo $ECHO_N "checking for presence of POSIX-style sigsetjmp/siglongjmp... $ECHO_C" >&6 if test "${bash_cv_func_sigsetjmp+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -29404,22 +25128,13 @@ exit(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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -29432,14 +25147,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_func_sigsetjmp=missing fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_func_sigsetjmp" >&5 -echo "${ECHO_T}$bash_cv_func_sigsetjmp" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_func_sigsetjmp" >&5 +echo "${ECHO_T}$bash_cv_func_sigsetjmp" >&6 if test $bash_cv_func_sigsetjmp = present; then cat >>confdefs.h <<\_ACEOF #define HAVE_POSIX_SIGSETJMP 1 @@ -29448,8 +25161,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether or not strcoll and strcmp differ" >&5 -echo $ECHO_N "checking whether or not strcoll and strcmp differ... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether or not strcoll and strcmp differ" >&5 +echo $ECHO_N "checking whether or not strcoll and strcmp differ... $ECHO_C" >&6 if test "${bash_cv_func_strcoll_broken+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -29503,22 +25216,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -29531,14 +25235,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_func_strcoll_broken=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_func_strcoll_broken" >&5 -echo "${ECHO_T}$bash_cv_func_strcoll_broken" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_func_strcoll_broken" >&5 +echo "${ECHO_T}$bash_cv_func_strcoll_broken" >&6 if test $bash_cv_func_strcoll_broken = yes; then cat >>confdefs.h <<\_ACEOF #define STRCOLL_BROKEN 1 @@ -29552,8 +25254,8 @@ if test "$ac_cv_func_putenv" = "yes"; then -{ echo "$as_me:$LINENO: checking for standard-conformant putenv declaration" >&5 -echo $ECHO_N "checking for standard-conformant putenv declaration... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for standard-conformant putenv declaration" >&5 +echo $ECHO_N "checking for standard-conformant putenv declaration... $ECHO_C" >&6 if test "${bash_cv_std_putenv+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -29588,36 +25290,24 @@ return (putenv == 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -29626,15 +25316,14 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_std_putenv" >&5 -echo "${ECHO_T}$bash_cv_std_putenv" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_std_putenv" >&5 +echo "${ECHO_T}$bash_cv_std_putenv" >&6 if test $bash_cv_std_putenv = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_STD_PUTENV 1 @@ -29652,8 +25341,8 @@ if test "$ac_cv_func_unsetenv" = "yes"; then -{ echo "$as_me:$LINENO: checking for standard-conformant unsetenv declaration" >&5 -echo $ECHO_N "checking for standard-conformant unsetenv declaration... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for standard-conformant unsetenv declaration" >&5 +echo $ECHO_N "checking for standard-conformant unsetenv declaration... $ECHO_C" >&6 if test "${bash_cv_std_unsetenv+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -29688,36 +25377,24 @@ return (unsetenv == 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -29726,15 +25403,14 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_std_unsetenv" >&5 -echo "${ECHO_T}$bash_cv_std_unsetenv" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_std_unsetenv" >&5 +echo "${ECHO_T}$bash_cv_std_unsetenv" >&6 if test $bash_cv_std_unsetenv = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_STD_UNSETENV 1 @@ -29749,8 +25425,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for printf floating point output in hex notation" >&5 -echo $ECHO_N "checking for printf floating point output in hex notation... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for printf floating point output in hex notation" >&5 +echo $ECHO_N "checking for printf floating point output in hex notation... $ECHO_C" >&6 if test "${bash_cv_printf_a_format+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -29782,22 +25458,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -29810,14 +25477,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_printf_a_format=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_printf_a_format" >&5 -echo "${ECHO_T}$bash_cv_printf_a_format" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_printf_a_format" >&5 +echo "${ECHO_T}$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 @@ -29828,8 +25493,8 @@ fi -{ echo "$as_me:$LINENO: checking if signal handlers must be reinstalled when invoked" >&5 -echo $ECHO_N "checking if signal handlers must be reinstalled when invoked... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking if signal handlers must be reinstalled when invoked" >&5 +echo $ECHO_N "checking if signal handlers must be reinstalled when invoked... $ECHO_C" >&6 if test "${bash_cv_must_reinstall_sighandlers+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -29891,22 +25556,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -29919,14 +25575,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_must_reinstall_sighandlers=yes fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_must_reinstall_sighandlers" >&5 -echo "${ECHO_T}$bash_cv_must_reinstall_sighandlers" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_must_reinstall_sighandlers" >&5 +echo "${ECHO_T}$bash_cv_must_reinstall_sighandlers" >&6 if test $bash_cv_must_reinstall_sighandlers = yes; then cat >>confdefs.h <<\_ACEOF #define MUST_REINSTALL_SIGHANDLERS 1 @@ -29935,8 +25589,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for presence of necessary job control definitions" >&5 -echo $ECHO_N "checking for presence of necessary job control definitions... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for presence of necessary job control definitions" >&5 +echo $ECHO_N "checking for presence of necessary job control definitions... $ECHO_C" >&6 if test "${bash_cv_job_control_missing+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -29998,22 +25652,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -30026,14 +25671,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_job_control_missing=missing fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_job_control_missing" >&5 -echo "${ECHO_T}$bash_cv_job_control_missing" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_job_control_missing" >&5 +echo "${ECHO_T}$bash_cv_job_control_missing" >&6 if test $bash_cv_job_control_missing = missing; then cat >>confdefs.h <<\_ACEOF #define JOB_CONTROL_MISSING 1 @@ -30041,8 +25684,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for presence of named pipes" >&5 -echo $ECHO_N "checking for presence of named pipes... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for presence of named pipes" >&5 +echo $ECHO_N "checking for presence of named pipes... $ECHO_C" >&6 if test "${bash_cv_sys_named_pipes+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -30098,22 +25741,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -30126,14 +25760,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_sys_named_pipes=missing fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_sys_named_pipes" >&5 -echo "${ECHO_T}$bash_cv_sys_named_pipes" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_sys_named_pipes" >&5 +echo "${ECHO_T}$bash_cv_sys_named_pipes" >&6 if test $bash_cv_sys_named_pipes = missing; then cat >>confdefs.h <<\_ACEOF #define NAMED_PIPES_MISSING 1 @@ -30142,8 +25774,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether termios.h defines TIOCGWINSZ" >&5 -echo $ECHO_N "checking whether termios.h defines TIOCGWINSZ... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether termios.h defines TIOCGWINSZ" >&5 +echo $ECHO_N "checking whether termios.h defines TIOCGWINSZ... $ECHO_C" >&6 if test "${ac_cv_sys_tiocgwinsz_in_termios_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -30169,12 +25801,12 @@ fi rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $ac_cv_sys_tiocgwinsz_in_termios_h" >&5 -echo "${ECHO_T}$ac_cv_sys_tiocgwinsz_in_termios_h" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_sys_tiocgwinsz_in_termios_h" >&5 +echo "${ECHO_T}$ac_cv_sys_tiocgwinsz_in_termios_h" >&6 if test $ac_cv_sys_tiocgwinsz_in_termios_h != yes; then - { echo "$as_me:$LINENO: checking whether sys/ioctl.h defines TIOCGWINSZ" >&5 -echo $ECHO_N "checking whether sys/ioctl.h defines TIOCGWINSZ... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking whether sys/ioctl.h defines TIOCGWINSZ" >&5 +echo $ECHO_N "checking whether sys/ioctl.h defines TIOCGWINSZ... $ECHO_C" >&6 if test "${ac_cv_sys_tiocgwinsz_in_sys_ioctl_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -30200,8 +25832,8 @@ fi rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&5 -echo "${ECHO_T}$ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&5 +echo "${ECHO_T}$ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&6 if test $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h = yes; then @@ -30212,8 +25844,8 @@ _ACEOF fi fi -{ echo "$as_me:$LINENO: checking for TIOCSTAT in sys/ioctl.h" >&5 -echo $ECHO_N "checking for TIOCSTAT in sys/ioctl.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for TIOCSTAT in sys/ioctl.h" >&5 +echo $ECHO_N "checking for TIOCSTAT in sys/ioctl.h... $ECHO_C" >&6 if test "${bash_cv_tiocstat_in_ioctl+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -30234,36 +25866,24 @@ int x = TIOCSTAT; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -30272,14 +25892,13 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_tiocstat_in_ioctl" >&5 -echo "${ECHO_T}$bash_cv_tiocstat_in_ioctl" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_tiocstat_in_ioctl" >&5 +echo "${ECHO_T}$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 @@ -30287,8 +25906,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for FIONREAD in sys/ioctl.h" >&5 -echo $ECHO_N "checking for FIONREAD in sys/ioctl.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for FIONREAD in sys/ioctl.h" >&5 +echo $ECHO_N "checking for FIONREAD in sys/ioctl.h... $ECHO_C" >&6 if test "${bash_cv_fionread_in_ioctl+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -30309,36 +25928,24 @@ int x = FIONREAD; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -30347,14 +25954,13 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_fionread_in_ioctl" >&5 -echo "${ECHO_T}$bash_cv_fionread_in_ioctl" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_fionread_in_ioctl" >&5 +echo "${ECHO_T}$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 @@ -30364,8 +25970,8 @@ fi -{ echo "$as_me:$LINENO: checking whether WCONTINUED flag to waitpid is unavailable or available but broken" >&5 -echo $ECHO_N "checking whether WCONTINUED flag to waitpid is unavailable or available but broken... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether WCONTINUED flag to waitpid is unavailable or available but broken" >&5 +echo $ECHO_N "checking whether WCONTINUED flag to waitpid is unavailable or available but broken... $ECHO_C" >&6 if test "${bash_cv_wcontinued_broken+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -30403,22 +26009,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -30431,14 +26028,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_wcontinued_broken=yes fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_wcontinued_broken" >&5 -echo "${ECHO_T}$bash_cv_wcontinued_broken" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_wcontinued_broken" >&5 +echo "${ECHO_T}$bash_cv_wcontinued_broken" >&6 if test $bash_cv_wcontinued_broken = yes; then cat >>confdefs.h <<\_ACEOF #define WCONTINUED_BROKEN 1 @@ -30447,8 +26042,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for speed_t in sys/types.h" >&5 -echo $ECHO_N "checking for speed_t in sys/types.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for speed_t in sys/types.h" >&5 +echo $ECHO_N "checking for speed_t in sys/types.h... $ECHO_C" >&6 if test "${bash_cv_speed_t_in_sys_types+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -30468,36 +26063,24 @@ speed_t x; } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -30506,14 +26089,13 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_speed_t_in_sys_types" >&5 -echo "${ECHO_T}$bash_cv_speed_t_in_sys_types" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_speed_t_in_sys_types" >&5 +echo "${ECHO_T}$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 @@ -30521,8 +26103,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether getpw functions are declared in pwd.h" >&5 -echo $ECHO_N "checking whether getpw functions are declared in pwd.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether getpw functions are declared in pwd.h" >&5 +echo $ECHO_N "checking whether getpw functions are declared in pwd.h... $ECHO_C" >&6 if test "${bash_cv_getpw_declared+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -30550,8 +26132,8 @@ rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $bash_cv_getpw_declared" >&5 -echo "${ECHO_T}$bash_cv_getpw_declared" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_getpw_declared" >&5 +echo "${ECHO_T}$bash_cv_getpw_declared" >&6 if test $bash_cv_getpw_declared = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_GETPW_DECLS 1 @@ -30559,8 +26141,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for unusable real-time signals due to large values" >&5 -echo $ECHO_N "checking for unusable real-time signals due to large values... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for unusable real-time signals due to large values" >&5 +echo $ECHO_N "checking for unusable real-time signals due to large values... $ECHO_C" >&6 if test "${bash_cv_unusable_rtsigs+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -30597,22 +26179,13 @@ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -30625,14 +26198,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) bash_cv_unusable_rtsigs=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $bash_cv_unusable_rtsigs" >&5 -echo "${ECHO_T}$bash_cv_unusable_rtsigs" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_unusable_rtsigs" >&5 +echo "${ECHO_T}$bash_cv_unusable_rtsigs" >&6 if test $bash_cv_unusable_rtsigs = yes; then cat >>confdefs.h <<\_ACEOF #define UNUSABLE_RT_SIGNALS 1 @@ -30653,8 +26224,8 @@ fi case "$host_os" in -hpux*) { echo "$as_me:$LINENO: checking whether $host_os needs _KERNEL for RLIMIT defines" >&5 -echo $ECHO_N "checking whether $host_os needs _KERNEL for RLIMIT defines... $ECHO_C" >&6; } +hpux*) echo "$as_me:$LINENO: checking whether $host_os needs _KERNEL for RLIMIT defines" >&5 +echo $ECHO_N "checking whether $host_os needs _KERNEL for RLIMIT defines... $ECHO_C" >&6 if test "${bash_cv_kernel_rlimit+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -30680,36 +26251,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -30718,7 +26277,7 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -30742,36 +26301,24 @@ main () } _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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -30780,18 +26327,16 @@ else 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 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $bash_cv_kernel_rlimit" >&5 -echo "${ECHO_T}$bash_cv_kernel_rlimit" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_kernel_rlimit" >&5 +echo "${ECHO_T}$bash_cv_kernel_rlimit" >&6 if test $bash_cv_kernel_rlimit = yes; then cat >>confdefs.h <<\_ACEOF #define RLIMIT_NEEDS_KERNEL 1 @@ -30809,15 +26354,15 @@ esac if test "X$bash_cv_termcap_lib" = "X"; then _bash_needmsg=yes else -{ echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 -echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 _bash_needmsg= fi if test "${bash_cv_termcap_lib+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - { echo "$as_me:$LINENO: checking for tgetent" >&5 -echo $ECHO_N "checking for tgetent... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for tgetent" >&5 +echo $ECHO_N "checking for tgetent... $ECHO_C" >&6 if test "${ac_cv_func_tgetent+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -30844,59 +26389,53 @@ cat >>conftest.$ac_ext <<_ACEOF #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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ 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 +#if defined (__stub_tgetent) || defined (__stub___tgetent) choke me +#else +char (*f) () = tgetent; +#endif +#ifdef __cplusplus +} #endif int main () { -return tgetent (); +return f != 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -30905,19 +26444,18 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func_tgetent=no +ac_cv_func_tgetent=no fi - -rm -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_tgetent" >&5 -echo "${ECHO_T}$ac_cv_func_tgetent" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func_tgetent" >&5 +echo "${ECHO_T}$ac_cv_func_tgetent" >&6 if test $ac_cv_func_tgetent = yes; then bash_cv_termcap_lib=libc else - { echo "$as_me:$LINENO: checking for tgetent in -ltermcap" >&5 -echo $ECHO_N "checking for tgetent in -ltermcap... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for tgetent in -ltermcap" >&5 +echo $ECHO_N "checking for tgetent in -ltermcap... $ECHO_C" >&6 if test "${ac_cv_lib_termcap_tgetent+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -30930,52 +26468,40 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char tgetent (); int main () { -return tgetent (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -30984,20 +26510,19 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_termcap_tgetent" >&5 -echo "${ECHO_T}$ac_cv_lib_termcap_tgetent" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_termcap_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_termcap_tgetent" >&6 if test $ac_cv_lib_termcap_tgetent = yes; then bash_cv_termcap_lib=libtermcap else - { echo "$as_me:$LINENO: checking for tgetent in -ltinfo" >&5 -echo $ECHO_N "checking for tgetent in -ltinfo... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for tgetent in -ltinfo" >&5 +echo $ECHO_N "checking for tgetent in -ltinfo... $ECHO_C" >&6 if test "${ac_cv_lib_tinfo_tgetent+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -31010,52 +26535,40 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char tgetent (); int main () { -return tgetent (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -31064,20 +26577,19 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_tinfo_tgetent" >&5 -echo "${ECHO_T}$ac_cv_lib_tinfo_tgetent" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_tinfo_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_tinfo_tgetent" >&6 if test $ac_cv_lib_tinfo_tgetent = yes; then bash_cv_termcap_lib=libtinfo else - { echo "$as_me:$LINENO: checking for tgetent in -lcurses" >&5 -echo $ECHO_N "checking for tgetent in -lcurses... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for tgetent in -lcurses" >&5 +echo $ECHO_N "checking for tgetent in -lcurses... $ECHO_C" >&6 if test "${ac_cv_lib_curses_tgetent+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -31090,52 +26602,40 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char tgetent (); int main () { -return tgetent (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -31144,20 +26644,19 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_curses_tgetent" >&5 -echo "${ECHO_T}$ac_cv_lib_curses_tgetent" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_curses_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_curses_tgetent" >&6 if test $ac_cv_lib_curses_tgetent = yes; then bash_cv_termcap_lib=libcurses else - { echo "$as_me:$LINENO: checking for tgetent in -lncurses" >&5 -echo $ECHO_N "checking for tgetent in -lncurses... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for tgetent in -lncurses" >&5 +echo $ECHO_N "checking for tgetent in -lncurses... $ECHO_C" >&6 if test "${ac_cv_lib_ncurses_tgetent+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -31170,52 +26669,40 @@ 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. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char tgetent (); int main () { -return tgetent (); +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -31224,15 +26711,14 @@ else 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 -f core conftest.err conftest.$ac_objext \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_ncurses_tgetent" >&5 -echo "${ECHO_T}$ac_cv_lib_ncurses_tgetent" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_ncurses_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_ncurses_tgetent" >&6 if test $ac_cv_lib_ncurses_tgetent = yes; then bash_cv_termcap_lib=libncurses else @@ -31250,11 +26736,11 @@ fi fi if test "X$_bash_needmsg" = "Xyes"; then -{ echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 -echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 +echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 fi -{ echo "$as_me:$LINENO: result: using $bash_cv_termcap_lib" >&5 -echo "${ECHO_T}using $bash_cv_termcap_lib" >&6; } +echo "$as_me:$LINENO: result: using $bash_cv_termcap_lib" >&5 +echo "${ECHO_T}using $bash_cv_termcap_lib" >&6 if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then LDFLAGS="$LDFLAGS -L./lib/termcap" TERMCAP_LIB="./lib/termcap/libtermcap.a" @@ -31280,32 +26766,30 @@ fi -{ echo "$as_me:$LINENO: checking whether /dev/fd is available" >&5 -echo $ECHO_N "checking whether /dev/fd is available... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether /dev/fd is available" >&5 +echo $ECHO_N "checking whether /dev/fd is available... $ECHO_C" >&6 if test "${bash_cv_dev_fd+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - bash_cv_dev_fd="" -if test -d /dev/fd && (exec test -r /dev/fd/0 < /dev/null) ; then + if test -d /dev/fd && test -r /dev/fd/0 < /dev/null; then # check for systems like FreeBSD 5 that only provide /dev/fd/[012] - if (exec test -r /dev/fd/3 3&5 -echo "${ECHO_T}$bash_cv_dev_fd" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_dev_fd" >&5 +echo "${ECHO_T}$bash_cv_dev_fd" >&6 if test $bash_cv_dev_fd = "standard"; then cat >>confdefs.h <<\_ACEOF #define HAVE_DEV_FD 1 @@ -31326,14 +26810,14 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether /dev/stdin stdout stderr are available" >&5 -echo $ECHO_N "checking whether /dev/stdin stdout stderr are available... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether /dev/stdin stdout stderr are available" >&5 +echo $ECHO_N "checking whether /dev/stdin stdout stderr are available... $ECHO_C" >&6 if test "${bash_cv_dev_stdin+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test -d /dev/fd && (exec test -r /dev/stdin < /dev/null) ; then + if test -d /dev/fd && test -r /dev/stdin < /dev/null; then bash_cv_dev_stdin=present - elif test -d /proc/self/fd && (exec test -r /dev/stdin < /dev/null) ; then + elif test -d /proc/self/fd && test -r /dev/stdin < /dev/null; then bash_cv_dev_stdin=present else bash_cv_dev_stdin=absent @@ -31341,8 +26825,8 @@ else fi -{ echo "$as_me:$LINENO: result: $bash_cv_dev_stdin" >&5 -echo "${ECHO_T}$bash_cv_dev_stdin" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_dev_stdin" >&5 +echo "${ECHO_T}$bash_cv_dev_stdin" >&6 if test $bash_cv_dev_stdin = "present"; then cat >>confdefs.h <<\_ACEOF #define HAVE_DEV_STDIN 1 @@ -31350,8 +26834,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for default mail directory" >&5 -echo $ECHO_N "checking for default mail directory... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for default mail directory" >&5 +echo $ECHO_N "checking for default mail directory... $ECHO_C" >&6 if test "${bash_cv_mail_dir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -31369,8 +26853,8 @@ else fi -{ echo "$as_me:$LINENO: result: $bash_cv_mail_dir" >&5 -echo "${ECHO_T}$bash_cv_mail_dir" >&6; } +echo "$as_me:$LINENO: result: $bash_cv_mail_dir" >&5 +echo "${ECHO_T}$bash_cv_mail_dir" >&6 cat >>confdefs.h <<_ACEOF #define DEFAULT_MAIL_DIRECTORY "$bash_cv_mail_dir" _ACEOF @@ -31424,8 +26908,7 @@ 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*) LOCAL_CFLAGS=-DSOLARIS ;; +solaris2.5*) LOCAL_CFLAGS=-DSunOS5 ;; lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading case "`uname -r`" in @@ -31475,8 +26958,8 @@ esac # if test "$ac_cv_func_dlopen" = "yes" && test -f ${srcdir}/support/shobj-conf then - { echo "$as_me:$LINENO: checking shared object configuration for loadable builtins" >&5 -echo $ECHO_N "checking shared object configuration for loadable builtins... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking shared object configuration for loadable builtins" >&5 +echo $ECHO_N "checking shared object configuration for loadable builtins... $ECHO_C" >&6 eval `${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c "${host_cpu}" -o "${host_os}" -v "${host_vendor}"` @@ -31485,8 +26968,8 @@ echo $ECHO_N "checking shared object configuration for loadable builtins... $ECH - { echo "$as_me:$LINENO: result: $SHOBJ_STATUS" >&5 -echo "${ECHO_T}$SHOBJ_STATUS" >&6; } + echo "$as_me:$LINENO: result: $SHOBJ_STATUS" >&5 +echo "${ECHO_T}$SHOBJ_STATUS" >&6 fi # try to create a directory tree if the source is elsewhere @@ -31536,10 +27019,8 @@ esac #AC_SUBST(ALLOCA_SOURCE) #AC_SUBST(ALLOCA_OBJECT) -ac_config_files="$ac_config_files Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile lib/intl/Makefile lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in examples/loadables/Makefile examples/loadables/perl/Makefile" - -ac_config_commands="$ac_config_commands default" - + ac_config_files="$ac_config_files Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile lib/intl/Makefile lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in examples/loadables/Makefile examples/loadables/perl/Makefile pathnames.h" + ac_config_commands="$ac_config_commands default" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure @@ -31558,58 +27039,39 @@ _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. +# So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. -( - 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_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - *) $as_unset $ac_var ;; - esac ;; - esac - done - +{ (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) # `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" - ;; #( + ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; - esac | - sort -) | + esac; +} | sed ' - /^ac_cv_env_/b end t clear - :clear + : clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\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" && - { echo "$as_me:$LINENO: updating cache $cache_file" >&5 -echo "$as_me: updating cache $cache_file" >&6;} + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\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" && echo "updating cache $cache_file" cat confcache >$cache_file else - { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 -echo "$as_me: not updating unwritable cache $cache_file" >&6;} + echo "not updating unwritable cache $cache_file" fi fi rm -f confcache @@ -31618,18 +27080,32 @@ test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ 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/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= 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=`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' + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' done LIBOBJS=$ac_libobjs @@ -31667,35 +27143,11 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then # Zsh 3.x and 4.x performs 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 +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix fi -BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh - -# 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 - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset @@ -31704,43 +27156,8 @@ else fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -as_nl=' -' -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -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 -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (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 -done +$as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' @@ -31754,19 +27171,18 @@ do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + $as_unset $as_var fi done # Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then +if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false @@ -31774,120 +27190,159 @@ fi # Name of the executable. -as_me=`$as_basename -- "$0" || +as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` -# CDPATH. -$as_unset CDPATH + +# PATH needs CR, and LINENO needs CR and PATH. +# 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 + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + 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 + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + 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=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac # 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. + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, 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 | + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop - s/-\n.*// + s,-$,, + s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +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" + # original and so on. Autoconf is especially sensible 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';; + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then +if expr a : '\(a\)' >/dev/null 2>&1; 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 -fi echo >conf$$.file 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 || + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null +rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: @@ -31896,19 +27351,7 @@ else as_mkdir_p=false fi -# Find out whether ``test -x'' works. Don't use a zero-byte file, as -# systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - as_executable_p="test -x" -else - as_executable_p=: -fi -rm -f conf$$.file +as_executable_p="test -f" # 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'" @@ -31917,14 +27360,31 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + exec 6>&1 -# Save the log message, to keep $[0] and so on meaningful, and to +# Open the log real soon, 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 3.2-maint, which was -generated by GNU Autoconf 2.60. Invocation command line was +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by bash $as_me 3.2-devel, which was +generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -31932,20 +27392,30 @@ generated by GNU Autoconf 2.60. Invocation command line was CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF # Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" -config_commands="$ac_config_commands" +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi -_ACEOF +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi cat >>$CONFIG_STATUS <<\_ACEOF + ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. @@ -31972,21 +27442,19 @@ Configuration commands: $config_commands Report bugs to ." - _ACEOF + cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -bash config.status 3.2-maint -configured by $0, generated by GNU Autoconf 2.60, - with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" +bash config.status 3.2-devel +configured by $0, generated by GNU Autoconf 2.59, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" -Copyright (C) 2006 Free Software Foundation, Inc. +Copyright (C) 2003 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' +srcdir=$srcdir +INSTALL="$INSTALL" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF @@ -31997,24 +27465,39 @@ while test $# != 0 do case $1 in --*=*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` ac_shift=: ;; - *) + -*) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; esac case $ac_option in # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - echo "$ac_cs_version"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift @@ -32024,24 +27507,18 @@ do $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - { echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. - -*) { echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2 + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; } ;; - *) ac_config_targets="$ac_config_targets $1" - ac_need_defaults=false ;; + *) ac_config_targets="$ac_config_targets $1" ;; esac shift @@ -32057,28 +27534,17 @@ fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then - echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - CONFIG_SHELL=$SHELL - export CONFIG_SHELL - exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - echo "$ac_log" -} >&5 -_ACEOF cat >>$CONFIG_STATUS <<_ACEOF # -# INIT-COMMANDS +# INIT-COMMANDS section. # + # Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it # from automake. @@ -32089,37 +27555,37 @@ cat >>$CONFIG_STATUS <<_ACEOF _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -# Handling of arguments. + +cat >>$CONFIG_STATUS <<\_ACEOF for ac_config_target in $ac_config_targets do - case $ac_config_target in - "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "builtins/Makefile") CONFIG_FILES="$CONFIG_FILES builtins/Makefile" ;; - "lib/readline/Makefile") CONFIG_FILES="$CONFIG_FILES lib/readline/Makefile" ;; - "lib/glob/Makefile") CONFIG_FILES="$CONFIG_FILES lib/glob/Makefile" ;; - "lib/intl/Makefile") CONFIG_FILES="$CONFIG_FILES lib/intl/Makefile" ;; - "lib/malloc/Makefile") CONFIG_FILES="$CONFIG_FILES lib/malloc/Makefile" ;; - "lib/sh/Makefile") CONFIG_FILES="$CONFIG_FILES lib/sh/Makefile" ;; - "lib/termcap/Makefile") CONFIG_FILES="$CONFIG_FILES lib/termcap/Makefile" ;; - "lib/tilde/Makefile") CONFIG_FILES="$CONFIG_FILES lib/tilde/Makefile" ;; - "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; - "support/Makefile") CONFIG_FILES="$CONFIG_FILES support/Makefile" ;; - "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; - "examples/loadables/Makefile") CONFIG_FILES="$CONFIG_FILES examples/loadables/Makefile" ;; - "examples/loadables/perl/Makefile") CONFIG_FILES="$CONFIG_FILES examples/loadables/perl/Makefile" ;; - "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; - + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "builtins/Makefile" ) CONFIG_FILES="$CONFIG_FILES builtins/Makefile" ;; + "lib/readline/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/readline/Makefile" ;; + "lib/glob/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/glob/Makefile" ;; + "lib/intl/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/intl/Makefile" ;; + "lib/malloc/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/malloc/Makefile" ;; + "lib/sh/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/sh/Makefile" ;; + "lib/termcap/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/termcap/Makefile" ;; + "lib/tilde/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/tilde/Makefile" ;; + "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "support/Makefile" ) CONFIG_FILES="$CONFIG_FILES support/Makefile" ;; + "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "examples/loadables/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/loadables/Makefile" ;; + "examples/loadables/perl/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/loadables/perl/Makefile" ;; + "pathnames.h" ) CONFIG_FILES="$CONFIG_FILES pathnames.h" ;; + "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done - # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely @@ -32131,506 +27597,398 @@ if $ac_need_defaults; then fi # Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, +# simply because there is no reason to put it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. +# Create a temporary directory, and hook for its removal unless debugging. $debug || { - tmp= - trap 'exit_status=$? - { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status -' 0 + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } + # Create a (secure) tmp directory for tmp files. { - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + # -# Set up the sed scripts for CONFIG_FILES section. +# CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h -if test -n "$CONFIG_FILES"; then - -_ACEOF - - - -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF -SHELL!$SHELL$ac_delim -PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim -PACKAGE_NAME!$PACKAGE_NAME$ac_delim -PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim -PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim -PACKAGE_STRING!$PACKAGE_STRING$ac_delim -PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim -exec_prefix!$exec_prefix$ac_delim -prefix!$prefix$ac_delim -program_transform_name!$program_transform_name$ac_delim -bindir!$bindir$ac_delim -sbindir!$sbindir$ac_delim -libexecdir!$libexecdir$ac_delim -datarootdir!$datarootdir$ac_delim -datadir!$datadir$ac_delim -sysconfdir!$sysconfdir$ac_delim -sharedstatedir!$sharedstatedir$ac_delim -localstatedir!$localstatedir$ac_delim -includedir!$includedir$ac_delim -oldincludedir!$oldincludedir$ac_delim -docdir!$docdir$ac_delim -infodir!$infodir$ac_delim -htmldir!$htmldir$ac_delim -dvidir!$dvidir$ac_delim -pdfdir!$pdfdir$ac_delim -psdir!$psdir$ac_delim -libdir!$libdir$ac_delim -localedir!$localedir$ac_delim -mandir!$mandir$ac_delim -DEFS!$DEFS$ac_delim -ECHO_C!$ECHO_C$ac_delim -ECHO_N!$ECHO_N$ac_delim -ECHO_T!$ECHO_T$ac_delim -LIBS!$LIBS$ac_delim -build_alias!$build_alias$ac_delim -host_alias!$host_alias$ac_delim -target_alias!$target_alias$ac_delim -build!$build$ac_delim -build_cpu!$build_cpu$ac_delim -build_vendor!$build_vendor$ac_delim -build_os!$build_os$ac_delim -host!$host$ac_delim -host_cpu!$host_cpu$ac_delim -host_vendor!$host_vendor$ac_delim -host_os!$host_os$ac_delim -EMACS!$EMACS$ac_delim -lispdir!$lispdir$ac_delim -DEBUGGER_START_FILE!$DEBUGGER_START_FILE$ac_delim -TESTSCRIPT!$TESTSCRIPT$ac_delim -PURIFY!$PURIFY$ac_delim -MALLOC_TARGET!$MALLOC_TARGET$ac_delim -MALLOC_SRC!$MALLOC_SRC$ac_delim -MALLOC_LIB!$MALLOC_LIB$ac_delim -MALLOC_LIBRARY!$MALLOC_LIBRARY$ac_delim -MALLOC_LDFLAGS!$MALLOC_LDFLAGS$ac_delim -MALLOC_DEP!$MALLOC_DEP$ac_delim -HELPDIR!$HELPDIR$ac_delim -HELPDIRDEFINE!$HELPDIRDEFINE$ac_delim -HELPINSTALL!$HELPINSTALL$ac_delim -HELPSTRINGS!$HELPSTRINGS$ac_delim -CC!$CC$ac_delim -CFLAGS!$CFLAGS$ac_delim -LDFLAGS!$LDFLAGS$ac_delim -CPPFLAGS!$CPPFLAGS$ac_delim -ac_ct_CC!$ac_ct_CC$ac_delim -EXEEXT!$EXEEXT$ac_delim -OBJEXT!$OBJEXT$ac_delim -CPP!$CPP$ac_delim -GREP!$GREP$ac_delim -EGREP!$EGREP$ac_delim -CROSS_COMPILE!$CROSS_COMPILE$ac_delim -SIGNAMES_H!$SIGNAMES_H$ac_delim -SIGNAMES_O!$SIGNAMES_O$ac_delim -CC_FOR_BUILD!$CC_FOR_BUILD$ac_delim -STATIC_LD!$STATIC_LD$ac_delim -CFLAGS_FOR_BUILD!$CFLAGS_FOR_BUILD$ac_delim -CPPFLAGS_FOR_BUILD!$CPPFLAGS_FOR_BUILD$ac_delim -LDFLAGS_FOR_BUILD!$LDFLAGS_FOR_BUILD$ac_delim -RL_VERSION!$RL_VERSION$ac_delim -RL_MAJOR!$RL_MAJOR$ac_delim -RL_MINOR!$RL_MINOR$ac_delim -READLINE_LIB!$READLINE_LIB$ac_delim -READLINE_DEP!$READLINE_DEP$ac_delim -RL_LIBDIR!$RL_LIBDIR$ac_delim -RL_INCLUDEDIR!$RL_INCLUDEDIR$ac_delim -RL_INCLUDE!$RL_INCLUDE$ac_delim -HISTORY_LIB!$HISTORY_LIB$ac_delim -HISTORY_DEP!$HISTORY_DEP$ac_delim -HIST_LIBDIR!$HIST_LIBDIR$ac_delim -TILDE_LIB!$TILDE_LIB$ac_delim -INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim -INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim -INSTALL_DATA!$INSTALL_DATA$ac_delim -AR!$AR$ac_delim -RANLIB!$RANLIB$ac_delim -YACC!$YACC$ac_delim -YFLAGS!$YFLAGS$ac_delim -_ACEOF - - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then - break - elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -if test -n "$ac_eof"; then - ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` - ac_eof=`expr $ac_eof + 1` -fi - -cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -_ACEOF -sed ' -s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -s/^/s,@/; s/!/@,|#_!!_#|/ -:n -t n -s/'"$ac_delim"'$/,g/; t -s/$/\\/; p -N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF -CEOF$ac_eof -_ACEOF - - -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF -SET_MAKE!$SET_MAKE$ac_delim -MAKE_SHELL!$MAKE_SHELL$ac_delim -SIZE!$SIZE$ac_delim -MKINSTALLDIRS!$MKINSTALLDIRS$ac_delim -USE_NLS!$USE_NLS$ac_delim -MSGFMT!$MSGFMT$ac_delim -GMSGFMT!$GMSGFMT$ac_delim -XGETTEXT!$XGETTEXT$ac_delim -MSGMERGE!$MSGMERGE$ac_delim -ALLOCA!$ALLOCA$ac_delim -GLIBC21!$GLIBC21$ac_delim -LIBICONV!$LIBICONV$ac_delim -LTLIBICONV!$LTLIBICONV$ac_delim -INTLBISON!$INTLBISON$ac_delim -BUILD_INCLUDED_LIBINTL!$BUILD_INCLUDED_LIBINTL$ac_delim -USE_INCLUDED_LIBINTL!$USE_INCLUDED_LIBINTL$ac_delim -CATOBJEXT!$CATOBJEXT$ac_delim -DATADIRNAME!$DATADIRNAME$ac_delim -INSTOBJEXT!$INSTOBJEXT$ac_delim -GENCAT!$GENCAT$ac_delim -INTLOBJS!$INTLOBJS$ac_delim -INTL_LIBTOOL_SUFFIX_PREFIX!$INTL_LIBTOOL_SUFFIX_PREFIX$ac_delim -INTLLIBS!$INTLLIBS$ac_delim -LIBINTL!$LIBINTL$ac_delim -LTLIBINTL!$LTLIBINTL$ac_delim -POSUB!$POSUB$ac_delim -LIBOBJS!$LIBOBJS$ac_delim -INTL_DEP!$INTL_DEP$ac_delim -INTL_INC!$INTL_INC$ac_delim -LIBINTL_H!$LIBINTL_H$ac_delim -SIGLIST_O!$SIGLIST_O$ac_delim -TERMCAP_LIB!$TERMCAP_LIB$ac_delim -TERMCAP_DEP!$TERMCAP_DEP$ac_delim -JOBS_O!$JOBS_O$ac_delim -SHOBJ_CC!$SHOBJ_CC$ac_delim -SHOBJ_CFLAGS!$SHOBJ_CFLAGS$ac_delim -SHOBJ_LD!$SHOBJ_LD$ac_delim -SHOBJ_LDFLAGS!$SHOBJ_LDFLAGS$ac_delim -SHOBJ_XLDFLAGS!$SHOBJ_XLDFLAGS$ac_delim -SHOBJ_LIBS!$SHOBJ_LIBS$ac_delim -SHOBJ_STATUS!$SHOBJ_STATUS$ac_delim -PROFILE_FLAGS!$PROFILE_FLAGS$ac_delim -incdir!$incdir$ac_delim -BUILD_DIR!$BUILD_DIR$ac_delim -ARFLAGS!$ARFLAGS$ac_delim -BASHVERS!$BASHVERS$ac_delim -RELSTATUS!$RELSTATUS$ac_delim -DEBUG!$DEBUG$ac_delim -MALLOC_DEBUG!$MALLOC_DEBUG$ac_delim -LOCAL_LIBS!$LOCAL_LIBS$ac_delim -LOCAL_CFLAGS!$LOCAL_CFLAGS$ac_delim -LOCAL_LDFLAGS!$LOCAL_LDFLAGS$ac_delim -LOCAL_DEFS!$LOCAL_DEFS$ac_delim -LTLIBOBJS!$LTLIBOBJS$ac_delim -_ACEOF - - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 54; then - break - elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@EMACS@,$EMACS,;t t +s,@lispdir@,$lispdir,;t t +s,@DEBUGGER_START_FILE@,$DEBUGGER_START_FILE,;t t +s,@TESTSCRIPT@,$TESTSCRIPT,;t t +s,@PURIFY@,$PURIFY,;t t +s,@MALLOC_TARGET@,$MALLOC_TARGET,;t t +s,@MALLOC_SRC@,$MALLOC_SRC,;t t +s,@MALLOC_LIB@,$MALLOC_LIB,;t t +s,@MALLOC_LIBRARY@,$MALLOC_LIBRARY,;t t +s,@MALLOC_LDFLAGS@,$MALLOC_LDFLAGS,;t t +s,@MALLOC_DEP@,$MALLOC_DEP,;t t +s,@htmldir@,$htmldir,;t t +s,@HELPDIR@,$HELPDIR,;t t +s,@HELPDIRDEFINE@,$HELPDIRDEFINE,;t t +s,@HELPINSTALL@,$HELPINSTALL,;t t +s,@HELPSTRINGS@,$HELPSTRINGS,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@CPP@,$CPP,;t t +s,@EGREP@,$EGREP,;t t +s,@CROSS_COMPILE@,$CROSS_COMPILE,;t t +s,@SIGNAMES_H@,$SIGNAMES_H,;t t +s,@SIGNAMES_O@,$SIGNAMES_O,;t t +s,@CC_FOR_BUILD@,$CC_FOR_BUILD,;t t +s,@STATIC_LD@,$STATIC_LD,;t t +s,@CFLAGS_FOR_BUILD@,$CFLAGS_FOR_BUILD,;t t +s,@CPPFLAGS_FOR_BUILD@,$CPPFLAGS_FOR_BUILD,;t t +s,@LDFLAGS_FOR_BUILD@,$LDFLAGS_FOR_BUILD,;t t +s,@RL_VERSION@,$RL_VERSION,;t t +s,@RL_MAJOR@,$RL_MAJOR,;t t +s,@RL_MINOR@,$RL_MINOR,;t t +s,@READLINE_LIB@,$READLINE_LIB,;t t +s,@READLINE_DEP@,$READLINE_DEP,;t t +s,@RL_LIBDIR@,$RL_LIBDIR,;t t +s,@RL_INCLUDEDIR@,$RL_INCLUDEDIR,;t t +s,@RL_INCLUDE@,$RL_INCLUDE,;t t +s,@HISTORY_LIB@,$HISTORY_LIB,;t t +s,@HISTORY_DEP@,$HISTORY_DEP,;t t +s,@HIST_LIBDIR@,$HIST_LIBDIR,;t t +s,@TILDE_LIB@,$TILDE_LIB,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@AR@,$AR,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@YACC@,$YACC,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@MAKE_SHELL@,$MAKE_SHELL,;t t +s,@SIZE@,$SIZE,;t t +s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t +s,@USE_NLS@,$USE_NLS,;t t +s,@MSGFMT@,$MSGFMT,;t t +s,@GMSGFMT@,$GMSGFMT,;t t +s,@XGETTEXT@,$XGETTEXT,;t t +s,@MSGMERGE@,$MSGMERGE,;t t +s,@ALLOCA@,$ALLOCA,;t t +s,@GLIBC21@,$GLIBC21,;t t +s,@LIBICONV@,$LIBICONV,;t t +s,@LTLIBICONV@,$LTLIBICONV,;t t +s,@INTLBISON@,$INTLBISON,;t t +s,@BUILD_INCLUDED_LIBINTL@,$BUILD_INCLUDED_LIBINTL,;t t +s,@USE_INCLUDED_LIBINTL@,$USE_INCLUDED_LIBINTL,;t t +s,@CATOBJEXT@,$CATOBJEXT,;t t +s,@DATADIRNAME@,$DATADIRNAME,;t t +s,@INSTOBJEXT@,$INSTOBJEXT,;t t +s,@GENCAT@,$GENCAT,;t t +s,@INTLOBJS@,$INTLOBJS,;t t +s,@INTL_LIBTOOL_SUFFIX_PREFIX@,$INTL_LIBTOOL_SUFFIX_PREFIX,;t t +s,@INTLLIBS@,$INTLLIBS,;t t +s,@LIBINTL@,$LIBINTL,;t t +s,@LTLIBINTL@,$LTLIBINTL,;t t +s,@POSUB@,$POSUB,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@INTL_DEP@,$INTL_DEP,;t t +s,@INTL_INC@,$INTL_INC,;t t +s,@LIBINTL_H@,$LIBINTL_H,;t t +s,@SIGLIST_O@,$SIGLIST_O,;t t +s,@TERMCAP_LIB@,$TERMCAP_LIB,;t t +s,@TERMCAP_DEP@,$TERMCAP_DEP,;t t +s,@JOBS_O@,$JOBS_O,;t t +s,@SHOBJ_CC@,$SHOBJ_CC,;t t +s,@SHOBJ_CFLAGS@,$SHOBJ_CFLAGS,;t t +s,@SHOBJ_LD@,$SHOBJ_LD,;t t +s,@SHOBJ_LDFLAGS@,$SHOBJ_LDFLAGS,;t t +s,@SHOBJ_XLDFLAGS@,$SHOBJ_XLDFLAGS,;t t +s,@SHOBJ_LIBS@,$SHOBJ_LIBS,;t t +s,@SHOBJ_STATUS@,$SHOBJ_STATUS,;t t +s,@PROFILE_FLAGS@,$PROFILE_FLAGS,;t t +s,@incdir@,$incdir,;t t +s,@BUILD_DIR@,$BUILD_DIR,;t t +s,@ARFLAGS@,$ARFLAGS,;t t +s,@BASHVERS@,$BASHVERS,;t t +s,@RELSTATUS@,$RELSTATUS,;t t +s,@DEBUG@,$DEBUG,;t t +s,@MALLOC_DEBUG@,$MALLOC_DEBUG,;t t +s,@LOCAL_LIBS@,$LOCAL_LIBS,;t t +s,@LOCAL_CFLAGS@,$LOCAL_CFLAGS,;t t +s,@LOCAL_LDFLAGS@,$LOCAL_LDFLAGS,;t t +s,@LOCAL_DEFS@,$LOCAL_DEFS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat fi -done - -ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -if test -n "$ac_eof"; then - ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` - ac_eof=`expr $ac_eof + 1` -fi +fi # test -n "$CONFIG_FILES" -cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end -_ACEOF -sed ' -s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -s/^/s,@/; s/!/@,|#_!!_#|/ -:n -t n -s/'"$ac_delim"'$/,g/; t -s/$/\\/; p -N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF -:end -s/|#_!!_#|//g -CEOF$ac_eof _ACEOF - - -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ 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/ -s/:*$// -s/^[^=]*=[ ]*$// -}' -fi - cat >>$CONFIG_STATUS <<\_ACEOF -fi # test -n "$CONFIG_FILES" - - -for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 -echo "$as_me: error: Invalid tag $ac_tag." >&2;} - { (exit 1); exit 1; }; };; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$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 `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 -echo "$as_me: error: cannot find input file: $ac_f" >&2;} - { (exit 1); exit 1; }; };; - esac - ac_file_inputs="$ac_file_inputs $ac_f" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input="Generated from "`IFS=: - echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - fi - - case $ac_tag in - *:-:* | *:-) cat >"$tmp/stdin";; - esac - ;; +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; esac - ac_dir=`$as_dirname -- "$ac_file" || + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - 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"; } || { + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || 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 + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -echo "$as_me: error: cannot create directory $as_dir" >&2;} + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } + ac_builddir=. -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) +if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi case $srcdir in - .) # We are building in place. + .) # No --srcdir option. We are building in place. ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac - case $ac_mode in - :F) - # - # CONFIG_FILE - # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -# 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= - -case `sed -n '/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p -' $ac_file_inputs` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } _ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub @@ -32638,140 +27996,365 @@ _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s&@configure_input@&$configure_input&;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -$ac_datarootdir_hack -" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out - -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"; } && - { 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 -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;} - - rm -f "$tmp/stdin" +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - -) cat "$tmp/out"; rm -f "$tmp/out";; - *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; esac - ;; - :H) - # - # CONFIG_HEADER - # -_ACEOF - -# Transform confdefs.h into a sed script `conftest.defines', that -# substitutes the proper values into config.h.in to produce config.h. -rm -f conftest.defines conftest.tail -# First, append a space to every undef/define line, to ease matching. -echo 's/$/ /' >conftest.defines -# Then, protect against being on the right side of a sed subst, or in -# an unquoted here document, in config.status. If some macros were -# called several times there might be several #defines for the same -# symbol, which is useless. But do not sort them, since the last -# AC_DEFINE must be honored. -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where -# NAME is the cpp macro being defined, VALUE is the value it is being given. -# PARAMS is the parameter list in the macro definition--in most cases, it's -# just an empty string. -ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' -ac_dB='\\)[ (].*,\\1define\\2' -ac_dC=' ' -ac_dD=' ,' - -uniq confdefs.h | - sed -n ' - t rset - :rset - s/^[ ]*#[ ]*define[ ][ ]*// - t ok - d - :ok - s/[\\&,]/\\&/g - s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p - s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p - ' >>conftest.defines - -# Remove the space that was appended to ease matching. -# Then replace #undef with comments. This is necessary, for + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + # Do quote $f, to prevent DOS paths from being IFS'd. + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. -# (The regexp can be short, since the line contains either #define or #undef.) -echo 's/ $// -s,^[ #]*u.*,/* & */,' >>conftest.defines - -# Break up conftest.defines: -ac_max_sed_lines=50 - -# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" -# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" -# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" -# et cetera. -ac_in='$ac_file_inputs' -ac_out='"$tmp/out1"' -ac_nxt='"$tmp/out2"' - -while : +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null do - # Write a here document: - cat >>$CONFIG_STATUS <<_ACEOF - # First, check the format of the line: - cat >"\$tmp/defines.sed" <<\\CEOF -/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def -/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def -b -:def -_ACEOF - sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF - sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS - ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in - sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail - grep . conftest.tail >/dev/null || break + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail rm -f conftest.defines mv conftest.tail conftest.defines done -rm -f conftest.defines conftest.tail +rm -f conftest.defines +echo ' fi # grep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs -echo "ac_result=$ac_in" >>$CONFIG_STATUS cat >>$CONFIG_STATUS <<\_ACEOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in if test x"$ac_file" != x-; then - echo "/* $configure_input */" >"$tmp/config.h" - cat "$ac_result" >>"$tmp/config.h" - if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + rm -f $ac_file - mv "$tmp/config.h" $ac_file + mv $tmp/config.h $ac_file fi else - echo "/* $configure_input */" - cat "$ac_result" + cat $tmp/config.h + rm -f $tmp/config.h fi - rm -f "$tmp/out12" - ;; +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF - :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 -echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac - case $ac_file$ac_mode in - "default-1":C) + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + default-1 ) for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in @@ -32872,14 +28455,15 @@ echo "$as_me: executing $ac_file commands" >&6;} ;; esac done ;; - "default":C) + default ) # Makefile uses this timestamp file to record whether config.h is up to date. echo timestamp > stamp-h ;; - esac -done # for ac_tag +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF diff --git a/configure.in b/configure.in index 40bfcc60a..4bfcc8cbd 100644 --- a/configure.in +++ b/configure.in @@ -5,7 +5,7 @@ dnl report bugs to chet@po.cwru.edu dnl dnl Process this file with autoconf to produce a configure script. -# Copyright (C) 1987-2007 Free Software Foundation, Inc. +# Copyright (C) 1987-2006 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 @@ -22,10 +22,10 @@ dnl Process this file with autoconf to produce a configure script. # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. -AC_REVISION([for Bash 3.2, version 3.194])dnl +AC_REVISION([for Bash 3.2, version 3.187])dnl define(bashvers, 3.2) -define(relstatus, maint) +define(relstatus, devel) AC_INIT([bash], bashvers-relstatus, [bug-bash@gnu.org]) @@ -43,7 +43,7 @@ RELSTATUS=relstatus dnl defaults for debug settings case "$RELSTATUS" in -alp*|bet*|dev*|rc*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; +alp*|bet*|dev*|rc*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; *) DEBUG= MALLOC_DEBUG= ;; esac @@ -149,7 +149,7 @@ if test "$opt_curses" = yes; then fi if test -z "${DEBUGGER_START_FILE}"; then - DEBUGGER_START_FILE='${datadir}/bashdb/bashdb-main.inc' + DEBUGGER_START_FILE=${ac_default_prefix}/lib/bashdb/bashdb-main.inc fi dnl optional shell features in config.h.in @@ -383,7 +383,6 @@ 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*) @@ -689,7 +688,6 @@ 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)) AC_CHECK_FUNC(isinf, AC_DEFINE(HAVE_ISINF_IN_LIBC)) -AC_CHECK_FUNC(isnan, AC_DEFINE(HAVE_ISNAN_IN_LIBC)) dnl checks for missing libc functions AC_CHECK_FUNC(mkfifo,AC_DEFINE(HAVE_MKFIFO),AC_DEFINE(MKFIFO_MISSING)) @@ -782,7 +780,7 @@ AC_CHECK_LIB(dl, dlopen) AC_CHECK_FUNCS(dlopen dlclose dlsym) fi -dnl this defines HAVE_DECL_SYS_SIGLIST +dnl this defines SYS_SIGLIST_DECLARED AC_DECL_SYS_SIGLIST dnl network functions -- check for inet_aton again @@ -991,8 +989,7 @@ 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*) LOCAL_CFLAGS=-DSOLARIS ;; +solaris2.5*) LOCAL_CFLAGS=-DSunOS5 ;; lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading case "`uname -r`" in @@ -1104,7 +1101,8 @@ 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], + examples/loadables/Makefile examples/loadables/perl/Makefile \ + pathnames.h], [ # 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 dd3ea566a..71702653d 100644 --- a/doc/FAQ +++ b/doc/FAQ @@ -1,4 +1,4 @@ -This is the Bash FAQ, version 3.35, for Bash version 3.2. +This is the Bash FAQ, version 3.33, for Bash version 3.1. This document contains a set of frequently-asked questions concerning Bash, the GNU Bourne-Again Shell. Bash is a freely-available command @@ -9,7 +9,7 @@ Another good source of basic information about shells is the collection of FAQ articles periodically posted to comp.unix.shell. Questions and comments concerning this document should be sent to -chet.ramey@case.edu. +chet@po.cwru.edu. This document is available for anonymous FTP with the URL @@ -36,8 +36,8 @@ A10) What is the bash `posix mode'? Section B: The latest version -B1) What's new in version 3.2? -B2) Are there any user-visible incompatibilities between bash-3.2 and +B1) What's new in version 3.1? +B2) Are there any user-visible incompatibilities between bash-3.1 and bash-2.05b? Section C: Differences from other Unix shells @@ -78,7 +78,6 @@ E10) Why does `cd //' leave $PWD as `//'? E11) If I resize my xterm while another program is running, why doesn't bash notice the change? E12) Why don't negative offsets in substring expansion work like I expect? -E13) Why does filename completion misbehave if a colon appears in the filename? Section F: Things to watch out for on certain Unix versions @@ -141,26 +140,26 @@ of Case Western Reserve University. A2) What's the latest version? -The latest version is 3.2, first made available on 12 October, 2006. +The latest version is 3.1, first made available on 09 December, 2005. 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 3.2: +The following URLs tell how to get version 3.1: -ftp://ftp.gnu.org/pub/gnu/bash/bash-3.2.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-3.2.tar.gz +ftp://ftp.gnu.org/pub/gnu/bash/bash-3.1.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-3.1.tar.gz Formatted versions of the documentation are available with the URLs: -ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-3.2.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-doc-3.2.tar.gz +ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-3.1.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-doc-3.1.tar.gz Any patches for the current version are available with the URL: -ftp://ftp.cwru.edu/pub/bash/bash-3.2-patches/ +ftp://ftp.cwru.edu/pub/bash/bash-3.1-patches/ A4) On what machines will bash run? @@ -193,7 +192,7 @@ http://www.cygwin.com/. Cygnus originally ported bash-1.14.7, and that port was part of their early GNU-Win32 (the original name) releases. Cygnus has also done ports of bash-2.05b and bash-3.0 to the CYGWIN environment, and both -are available as part of their current release. Bash-3.2 is currently +are available as part of their current release. Bash-3.1 is currently being tested and should be available soon. Bash-2.05b and later versions should require no local Cygnus changes to @@ -217,7 +216,7 @@ 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-3.1 or bash-3.2. +with building bash-3.1. A6) How can I build bash with gcc? @@ -386,22 +385,12 @@ They are also listed in a section in the Bash Reference Manual Section B: The latest version -B1) What's new in version 3.2? +B1) What's new in version 3.1? -Bash-3.2 is the second maintenance release of the third major release of +Bash-3.1 is the first maintenance release of the third major release of bash. It contains the following significant new features (see the manual page for complete descriptions and the CHANGES and NEWS files in the -bash-3.2 distribution). - -o Bash-3.2 now checks shell scripts for NUL characters rather than non-printing - characters when deciding whether or not a script is a binary file. - -o Quoting the string argument to the [[ command's =~ (regexp) operator now - forces string matching, as with the other pattern-matching operators. - -A short feature history dating from Bash-2.0: - -Bash-3.1 contained the following new features: +bash-3.1 distribution). o Bash-3.1 may now be configured and built in a mode that enforces strict POSIX compliance. @@ -412,6 +401,8 @@ o The `+=' assignment operator, which appends to the value of a string or o It is now possible to ignore case when matching in contexts other than filename generation using the new `nocasematch' shell option. +A short feature history dating from Bash-2.0: + Bash-3.0 contained the following new features: o Features to support the bash debugger have been implemented, and there @@ -649,10 +640,10 @@ grammar tighter and smaller (66 reduce-reduce conflicts gone) lots of code now smaller and faster test suite greatly expanded -B2) Are there any user-visible incompatibilities between bash-3.2 and +B2) Are there any user-visible incompatibilities between bash-3.1 and bash-2.05b? -There are a few incompatibilities between version 2.05b and version 3.2. +There are a few incompatibilities between version 2.05b and version 3.1. They are detailed in the file COMPAT in the bash distribution. That file is not meant to be all-encompassing; send mail to bash-maintainers@gnu.org if if you find something that's not mentioned there. @@ -846,7 +837,7 @@ Implementation differences: C3) Which new features in ksh-93 are not in bash, and which are? -New things in ksh-93 not in bash-3.2: +New things in ksh-93 not in bash-3.0: associative arrays floating point arithmetic and variables math library functions @@ -872,7 +863,7 @@ New things in ksh-93 not in bash-3.2: lexical scoping for local variables in `ksh' functions no scoping for local variables in `POSIX' functions -New things in ksh-93 present in bash-3.2: +New things in ksh-93 present in bash-3.0: [n]<&word- and [n]>&word- redirections (combination dup and close) for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command ?:, ++, --, `expr1 , expr2' arithmetic operators @@ -908,9 +899,7 @@ D1) Why does bash run a different version of `command' than On many systems, `which' is actually a csh script that assumes you're running csh. In tcsh, `which' and its cousin `where' are builtins. On other Unix systems, `which' is a perl script -that uses the PATH environment variable. Many Linux distributions -use GNU `which', which is a C program that can understand shell -aliases. +that uses the PATH environment variable. The csh script version reads the csh startup files from your home directory and uses those to determine which `command' will @@ -1124,7 +1113,7 @@ will try to write on a pipe without a reader. In that case, bash will print `Broken pipe' to stderr when ps is killed by a SIGPIPE. -As of bash-3.1, bash does not report SIGPIPE errors by default. You +As of bash-3.1, bash will not report SIGPIPE errors by default. You can build a version of bash that will report such errors. E3) When I have terminal escape sequences in my prompt, why does bash @@ -1401,32 +1390,6 @@ expanded value of param is unset or null, and $param otherwise. To use negative offsets that begin with a minus sign, separate the minus sign and the colon with a space. -E13) Why does filename completion misbehave if a colon appears in the filename? - -Filename completion (and word completion in general) may appear to behave -improperly if there is a colon in the word to be completed. - -The colon is special to readline's word completion code: it is one of the -characters that breaks words for the completer. Readline uses these characters -in sort of the same way that bash uses $IFS: they break or separate the words -the completion code hands to the application-specific or default word -completion functions. The original intent was to make it easy to edit -colon-separated lists (such as $PATH in bash) in various applications using -readline for input. - -This is complicated by the fact that some versions of the popular -`bash-completion' programmable completion package have problems with the -default completion behavior in the presence of colons. - -The current set of completion word break characters is available in bash as -the value of the COMP_WORDBREAKS variable. Removing `:' from that value is -enough to make the colon not special to completion: - -COMP_WORDBREAKS=${COMP_WORDBREAKS//:} - -You can also quote the colon with a backslash to achieve the same result -temporarily. - Section F: Things to watch out for on certain Unix versions F1) Why can't I use command line editing in my `cmdtool'? @@ -1793,8 +1756,8 @@ it in fine bookstores near you. This edition of the book has been updated to cover bash-3.0. The GNU Bash Reference Manual has been published as a printed book by -Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Nov. 2006). It covers -bash-3.2 and is available from most online bookstores (see +Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Feb 2003). It covers +bash-2.0 and is available from most online bookstores (see http://www.network-theory.co.uk/bash/manual/ for details). The publisher will donate $1 to the Free Software Foundation for each copy sold. @@ -1832,9 +1795,9 @@ Some of the new ksh93 pattern matching operators, like backreferencing H5) When will the next release appear? -The next version will appear sometime in 2007. Never make predictions. +The next version will appear sometime in 2006. Never make predictions. -This document is Copyright 1995-2006 by Chester Ramey. +This document is Copyright 1995-2005 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 2ddd8c1a4..270ddfd79 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -35,8 +35,6 @@ VPATH = .:@srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ -datarootdir = @datarootdir@ - infodir = @infodir@ # set this to a directory name to have the HTML files installed diff --git a/doc/bash.0 b/doc/bash.0 index 06643833f..a760983ee 100644 --- a/doc/bash.0 +++ b/doc/bash.0 @@ -1,3 +1,4 @@ + BASH(1) BASH(1) @@ -9,7 +10,7 @@ SSYYNNOOPPSSIISS bbaasshh [options] [file] CCOOPPYYRRIIGGHHTT - Bash is Copyright (C) 1989-2007 by the Free Software Foundation, Inc. + Bash is Copyright (C) 1989-2005 by the Free Software Foundation, Inc. DDEESSCCRRIIPPTTIIOONN BBaasshh is an sshh-compatible command language interpreter that executes @@ -420,109 +421,108 @@ SSHHEELLLL GGRRAAMMMMAARR 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 - 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 - executed. After the first match, no subsequent matches are - attempted. The exit status is zero if no pattern matches. Oth- - erwise, it is the exit status of the last command executed in - _l_i_s_t. + sion, arithmetic substituion, command substitution, process sub- + stitution and quote removal. Each _p_a_t_t_e_r_n examined is expanded + using tilde expansion, parameter and variable expansion, arith- + metic substituion, command substitution, and process substitu- + tion. 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. + After the first match, no subsequent matches are attempted. 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 + 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; ddoo _l_i_s_t; ddoonnee uunnttiill _l_i_s_t; ddoo _l_i_s_t; ddoonnee - The wwhhiillee command continuously executes the ddoo _l_i_s_t as long as - the last command in _l_i_s_t returns an exit status of zero. The + The wwhhiillee command continuously executes the ddoo _l_i_s_t as long as + the last command in _l_i_s_t returns an exit status of zero. The uunnttiill command is identical to the wwhhiillee command, except that the - test is negated; the ddoo _l_i_s_t is executed as long as the last + test is negated; the ddoo _l_i_s_t is executed as long as the last command in _l_i_s_t returns a non-zero exit status. The exit status - of the wwhhiillee and uunnttiill commands is the exit status of the last + of the wwhhiillee and uunnttiill commands is the exit status of the last ddoo _l_i_s_t command executed, or zero if none was executed. SShheellll FFuunnccttiioonn DDeeffiinniittiioonnss - A shell function is an object that is called like a simple command and - executes a compound command with a new set of positional parameters. + A shell function is an object that is called like a simple command and + executes a compound command with a new set of positional parameters. Shell functions are declared as follows: [ ffuunnccttiioonn ] _n_a_m_e () _c_o_m_p_o_u_n_d_-_c_o_m_m_a_n_d [_r_e_d_i_r_e_c_t_i_o_n] - This defines a function named _n_a_m_e. The reserved word ffuunnccttiioonn - is optional. If the ffuunnccttiioonn reserved word is supplied, the - parentheses are optional. The _b_o_d_y of the function is the com- - pound command _c_o_m_p_o_u_n_d_-_c_o_m_m_a_n_d (see CCoommppoouunndd CCoommmmaannddss above). - 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_- + This defines a function named _n_a_m_e. The reserved word ffuunnccttiioonn + is optional. If the ffuunnccttiioonn reserved word is supplied, the + parentheses are optional. The _b_o_d_y of the function is the com- + pound command _c_o_m_p_o_u_n_d_-_c_o_m_m_a_n_d (see CCoommppoouunndd CCoommmmaannddss above). + 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 + 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 + 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 @@ -534,195 +534,187 @@ QQUUOOTTIINNGG \\vv vertical tab \\\\ backslash \\'' single 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) \\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 ($$) will cause the - string to be translated according to the current locale. If the cur- - rent locale is CC or PPOOSSIIXX, the dollar sign is ignored. If the string + A double-quoted string preceded by a dollar sign ($$) will cause the + string to be translated according to the current locale. If the cur- + rent 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, + 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 + 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 integer 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 integer 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. When applied - to a string-valued variable, _v_a_l_u_e is expanded and appended to the + beginning at one greater than the array's maximum index. When applied + to a string-valued variable, _v_a_l_u_e is expanded and appended to the variable's value. 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- + ** 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 + 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 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 status of the most recently executed foreground + ?? Expands to the status of the most recently executed foreground 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- + !! Expands to the process ID of the most recently executed back- ground (asynchronous) command. - 00 Expands to the name of the shell or shell script. This is set + 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 + 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 zero. - __ At shell startup, set to the absolute pathname used to invoke - the shell or shell script being executed as passed in the envi- - ronment or argument list. Subsequently, expands to the last - argument to the previous command, after expansion. Also set to - the full pathname used to invoke each command executed and + __ At shell startup, set to the absolute pathname used to invoke + the shell or shell script being executed as passed in the envi- + ronment or argument list. Subsequently, expands to the last + argument to the previous command, after expansion. Also set to + the full pathname used to invoke each command executed and placed in the environment exported to that command. When check- - ing mail, this parameter holds the name of the mail file cur- + ing mail, this parameter holds the name of the mail file cur- rently being checked. 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 file name used to invoke this instance of bbaasshh. - BBAASSHHPPIIDD - Expands to the process id of the current bash process. This - differs from $$$$ under certain circumstances, such as subshells - that do not require bash to be re-initialized. BBAASSHH__AARRGGCC - An array variable whose values are the number of parameters in + An array variable whose values are the number of parameters in each frame of the current bash execution call stack. The number - of parameters to the current subroutine (shell function or - script executed with .. or ssoouurrccee) is at the top of the stack. - When a subroutine is executed, the number of parameters passed + of parameters to the current subroutine (shell function or + script executed with .. or ssoouurrccee) is at the top of the stack. + When a subroutine is executed, the number of parameters passed is pushed onto BBAASSHH__AARRGGCC. The shell sets BBAASSHH__AARRGGCC only when in - extended debugging mode (see the description of the eexxttddeebbuugg + extended debugging mode (see the description of the eexxttddeebbuugg option to the sshhoopptt builtin below) BBAASSHH__AARRGGVV - An array variable containing all of the parameters in the cur- + An array variable containing all of the parameters in the cur- rent bash execution call stack. The final parameter of the last - subroutine call is at the top of the stack; the first parameter + subroutine call is at the top of the stack; the first parameter of the initial call is at the bottom. When a subroutine is exe- - cuted, the parameters supplied are pushed onto BBAASSHH__AARRGGVV. The - shell sets BBAASSHH__AARRGGVV only when in extended debugging mode (see - the description of the eexxttddeebbuugg option to the sshhoopptt builtin + cuted, the parameters supplied are pushed onto BBAASSHH__AARRGGVV. The + shell sets BBAASSHH__AARRGGVV only when in extended debugging mode (see + the description of the eexxttddeebbuugg option to the sshhoopptt builtin below) BBAASSHH__CCOOMMMMAANNDD - The command currently being executed or about to be executed, + The command currently being executed or about to be executed, unless the shell is executing a command as the result of a trap, - in which case it is the command executing at the time of the + in which case it is the command executing at the time of the trap. BBAASSHH__EEXXEECCUUTTIIOONN__SSTTRRIINNGG The command argument to the --cc invocation option. BBAASSHH__LLIINNEENNOO - An array variable whose members are the line numbers in source - files corresponding to each member of FFUUNNCCNNAAMMEE. - $${{BBAASSHH__LLIINNEENNOO[[_$_i]]}} is the line number in the source file where - $${{FFUUNNCCNNAAMMEE[[_$_i_f_P]]}} _w_a_s _c_a_l_l_e_d_. _T_h_e _c_o_r_r_e_s_p_o_n_d_i_n_g _s_o_u_r_c_e _f_i_l_e - _n_a_m_e _i_s $${{BBAASSHH__SSOOUURRCCEE[[_$_i]]}}.. UUssee LLIINNEENNOO ttoo oobbttaaiinn tthhee ccuurrrreenntt + An array variable whose members are the line numbers in source + files corresponding to each member of FFUUNNCCNNAAMMEE. + $${{BBAASSHH__LLIINNEENNOO[[_$_i]]}} is the line number in the source file where + $${{FFUUNNCCNNAAMMEE[[_$_i_f_P]]}} _w_a_s _c_a_l_l_e_d_. _T_h_e _c_o_r_r_e_s_p_o_n_d_i_n_g _s_o_u_r_c_e _f_i_l_e + _n_a_m_e _i_s $${{BBAASSHH__SSOOUURRCCEE[[_$_i]]}}.. UUssee LLIINNEENNOO ttoo oobbttaaiinn tthhee ccuurrrreenntt lliinnee nnuummbbeerr.. BBAASSHH__RREEMMAATTCCHH - An array variable whose members are assigned by the ==~~ binary - operator to the [[[[ conditional command. The element with index - 0 is the portion of the string matching the entire regular - expression. The element with index _n is the portion of the + An array variable whose members are assigned by the ==~~ binary + operator to the [[[[ conditional command. The element with index + 0 is the portion of the string matching the entire regular + expression. The element with index _n is the portion of the string matching the _nth parenthesized subexpression. This vari- able is read-only. BBAASSHH__SSOOUURRCCEE - An array variable whose members are the source filenames corre- + An array variable whose members are the source filenames corre- sponding to the elements in the FFUUNNCCNNAAMMEE array variable. BBAASSHH__SSUUBBSSHHEELLLL - Incremented by one each time a subshell or subshell environment + Incremented by one each time a subshell or subshell environment is spawned. The initial 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- @@ -738,17 +730,6 @@ PPAARRAAMMEETTEERRSS 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 - below). - CCOOMMPP__WWOORRDDBBRREEAAKKSS The set of characters that the Readline library treats as word separators when performing word completion. If CCOOMMPP__WWOORRDDBBRREEAAKKSS @@ -757,11 +738,9 @@ PPAARRAAMMEETTEERRSS CCOOMMPP__WWOORRDDSS An array variable (see AArrrraayyss below) consisting of the individ- - ual words in the current command line. The words are split on - shell metacharacters as the shell parser would separate them. - This variable is available only in shell functions invoked by - the programmable completion facilities (see PPrrooggrraammmmaabbllee CCoommppllee-- - ttiioonn below). + ual words in the current command line. This variable is avail- + able only in shell functions invoked by the programmable comple- + tion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). DDIIRRSSTTAACCKK An array variable (see AArrrraayyss below) containing the current con- @@ -928,10 +907,10 @@ PPAARRAAMMEETTEERRSS 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. + cated, if necessary, 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. HHIISSTTIIGGNNOORREE A colon-separated list of patterns used to decide which command lines should be saved on the history list. Each pattern is @@ -952,9 +931,7 @@ PPAARRAAMMEETTEERRSS format string for _s_t_r_f_t_i_m_e(3) to print the time stamp associated with each history entry displayed by the hhiissttoorryy builtin. If this variable is set, time stamps are written to the history - file so they may be preserved across shell sessions. This uses - the history comment character to distinguish timestamps from - other history lines. + file so they may be preserved across shell sessions. HHOOMMEE The home directory of the current user; the default argument for the ccdd builtin command. The value of this variable is also used when performing tilde expansion. @@ -1357,16 +1334,12 @@ EEXXPPAANNSSIIOONN Note that a negative offset must be separated from the colon by at least one space to avoid being confused with the :- expan- sion. 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 prefixed to the list. + parameters are used, in which case the indexing starts at 1. ${!!_p_r_e_f_i_x**} ${!!_p_r_e_f_i_x@@} Expands to the names of variables whose names begin with _p_r_e_f_i_x, - separated by the first character of the IIFFSS special variable. - When _@ is used and the expansion appears within double quotes, - each variable name expands to a separate word. + separated by the first character of the IIFFSS special variable. ${!!_n_a_m_e[_@]} ${!!_n_a_m_e[_*]} @@ -1494,99 +1467,96 @@ EEXXPPAANNSSIIOONN 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 + then any sequence of IIFFSS characters 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 white- + space, 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 dis- - abled, 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-- + 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 dis- + abled, 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 + 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 + 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 + 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. 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. ?? Matches any single character. - [[......]] Matches any one of the enclosed characters. A pair of charac- + [[......]] Matches any one of the enclosed characters. A pair of charac- ters separated by a hyphen denotes a _r_a_n_g_e _e_x_p_r_e_s_s_i_o_n; any char- - acter that sorts between those two characters, 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 character not enclosed is matched. The sorting order - of characters 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 charac- + acter that sorts between those two characters, 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 character not enclosed is matched. The sorting order + of characters 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 charac- ter 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 + 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 ppuunncctt + 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 char- + The wwoorrdd character class matches letters, digits, and the char- acter _. - 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 colla- - tion weight (as defined by the current locale) as the character + 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 colla- + tion weight (as defined by the current locale) as the character _c. Within [[ and ]], the syntax [[.._s_y_m_b_o_l..]] matches the collating sym- bol _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: @@ -1604,48 +1574,48 @@ 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 + 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. - In the following descriptions, if the file descriptor number is omit- - ted, and the first character of the redirection operator is <<, the re- - direction refers to the standard input (file descriptor 0). If the - first character of the redirection operator is >>, the redirection + In the following descriptions, if the file descriptor number is omit- + ted, and the first character of the redirection operator is <<, the re- + direction refers to the standard input (file descriptor 0). If the + first character of the redirection operator is >>, the redirection refers to the standard output (file descriptor 1). - The word following the redirection operator in the following descrip- - tions, unless otherwise noted, is subjected to brace expansion, tilde + 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 + sion, 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 as standard output before the standard output was + directs only the standard output to file _d_i_r_l_i_s_t, because the standard + error was duplicated as standard output before the standard output 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. @@ -1655,22 +1625,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 + is an integer port number or service name, bbaasshh attempts to open a TCP connection to the corresponding 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 + is an integer port number or service name, bbaasshh attempts to open a UDP connection to the corresponding 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: @@ -1678,27 +1648,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: @@ -1707,11 +1677,11 @@ RREEDDIIRREECCTTIIOONN RReeddiirreeccttiinngg SSttaannddaarrdd OOuuttppuutt aanndd SSttaannddaarrdd EErrrroorr - BBaasshh allows both the standard output (file descriptor 1) and the stan- - dard error output (file descriptor 2) to be redirected to the file + BBaasshh allows both the standard output (file descriptor 1) and the stan- + dard error output (file descriptor 2) to be redirected to the file whose name is the expansion of _w_o_r_d with this construct. - 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 @@ -1724,9 +1694,9 @@ RREEDDIIRREECCTTIIOONN >>_w_o_r_d 2>>&&1 HHeerree DDooccuummeennttss - This type of redirection instructs the shell to read input from the - current source until a line containing only _w_o_r_d (with no trailing - blanks) is seen. All of the lines read up to that point are then used + This type of redirection instructs the shell to read input from the + current source until a line containing only _w_o_r_d (with no trailing + 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: @@ -1735,18 +1705,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 + 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 + 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 ``. 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 @@ -1762,20 +1732,20 @@ RREEDDIIRREECCTTIIOONN [_n]<<&&_w_o_r_d is used to duplicate input file descriptors. If _w_o_r_d expands to one or - more digits, the file descriptor denoted by _n is made to be a copy of - that file descriptor. If the digits in _w_o_r_d do not specify a file - descriptor open for input, a redirection error occurs. If _w_o_r_d evalu- - ates to --, file descriptor _n is closed. If _n is not specified, the + more digits, the file descriptor denoted by _n is made to be a copy of + that file descriptor. If the digits in _w_o_r_d do not specify a file + descriptor open for input, a redirection error occurs. If _w_o_r_d evalu- + ates to --, file descriptor _n is closed. If _n is not specified, the standard input (file descriptor 0) is used. The operator [_n]>>&&_w_o_r_d - 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 + 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. @@ -1784,7 +1754,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 input (file descriptor 0) if _n is not specified. _d_i_g_i_t is closed after being duplicated to _n. @@ -1792,7 +1762,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 @@ -1800,108 +1770,108 @@ 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 0 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 between a function and its caller + updated to reflect the change. Special parameter 0 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 between a function and its caller with the exception that the DDEEBBUUGG and RREETTUURRNN traps (see the description - of the ttrraapp builtin under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) are not inher- - ited 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 func- + of the ttrraapp builtin under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) are not inher- + ited 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 func- tions inherit the DDEEBBUUGG and RREETTUURRNN traps). - 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. - 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. No limit is imposed on the number of + Functions may be recursive. 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---- @@ -1929,39 +1899,39 @@ 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 integer attribute turned on + to 0. A shell variable need not have its integer 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 _b_a_s_e is a decimal number between 2 and 64 representing + 0x or 0X denotes hexadecimal. Otherwise, numbers take the form + [_b_a_s_e_#]n, where _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 omit- - ted, 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 + ted, 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 + 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- @@ -2008,20 +1978,20 @@ CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS --SS _f_i_l_e True if _f_i_l_e exists and is a socket. --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. _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. _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. --oo _o_p_t_n_a_m_e - True if 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 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. --zz _s_t_r_i_n_g True if the length of _s_t_r_i_n_g is zero. @@ -2037,111 +2007,111 @@ CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS True if the strings are not equal. _s_t_r_i_n_g_1 << _s_t_r_i_n_g_2 - True if _s_t_r_i_n_g_1 sorts before _s_t_r_i_n_g_2 lexicographically in the + True if _s_t_r_i_n_g_1 sorts before _s_t_r_i_n_g_2 lexicographically in the current locale. _s_t_r_i_n_g_1 >> _s_t_r_i_n_g_2 - True if _s_t_r_i_n_g_1 sorts after _s_t_r_i_n_g_2 lexicographically in the + True if _s_t_r_i_n_g_1 sorts after _s_t_r_i_n_g_2 lexicographically in the current locale. _a_r_g_1 OOPP _a_r_g_2 - OOPP is one of --eeqq, --nnee, --lltt, --llee, --ggtt, or --ggee. These arithmetic - binary operators return true if _a_r_g_1 is equal to, not equal to, - less than, less than or equal to, greater than, or greater than - or equal to _a_r_g_2, respectively. _A_r_g_1 and _a_r_g_2 may be positive + OOPP is one of --eeqq, --nnee, --lltt, --llee, --ggtt, or --ggee. These arithmetic + binary operators return true if _a_r_g_1 is equal to, not equal to, + less than, less than or equal to, greater than, or greater than + or equal to _a_r_g_2, respectively. _A_r_g_1 and _a_r_g_2 may be positive or negative integers. SSIIMMPPLLEE CCOOMMMMAANNDD EEXXPPAANNSSIIOONN - When a simple command is executed, the shell performs the following + When a simple command is executed, the shell performs the following expansions, assignments, and redirections, from left to right. - 1. The words that the parser has marked as variable assignments - (those preceding the command name) and redirections are saved + 1. The words that the parser has marked as variable assignments + (those preceding the command name) and redirections are saved for later processing. - 2. The words that are not variable assignments or redirections are - expanded. If any words remain after expansion, the first word - is taken to be the name of the command and the remaining words + 2. The words that are not variable assignments or redirections are + expanded. If any words remain after expansion, the first word + is taken to be the name of the command and the remaining words are the arguments. 3. Redirections are performed as described above under RREEDDIIRREECCTTIIOONN. 4. The text after the == in each variable assignment undergoes tilde expansion, parameter expansion, command substitution, arithmetic - expansion, and quote removal before being assigned to the vari- + expansion, and quote removal before being assigned to the vari- able. If no command name results, the variable assignments affect the current - shell environment. Otherwise, the variables are added to the environ- - ment of the executed command and do not affect the current shell envi- - ronment. If any of the assignments attempts to assign a value to a - readonly variable, an error occurs, and the command exits with a non- + shell environment. Otherwise, the variables are added to the environ- + ment of the executed command and do not affect the current shell envi- + ronment. If any of the assignments attempts to assign a value to a + readonly variable, an error occurs, and the command exits with a non- zero status. - If no command name results, redirections are performed, but do not - affect the current shell environment. A redirection error causes the + If no command name results, redirections are performed, but do not + affect the current shell environment. A redirection error causes the command to exit with a non-zero status. - If there is a command name left after expansion, execution proceeds as - described below. Otherwise, the command exits. If one of the expan- - sions contained a command substitution, the exit status of the command - is the exit status of the last command substitution performed. If + If there is a command name left after expansion, execution proceeds as + described below. Otherwise, the command exits. If one of the expan- + sions contained a command substitution, the exit status of the command + is the exit status of the last command substitution performed. If there were no command substitutions, the command exits with a status of zero. CCOOMMMMAANNDD EEXXEECCUUTTIIOONN - After a command has been split into words, if it results in a simple - command and an optional list of arguments, the following actions are + After a command has been split into words, if it results in a simple + command and an optional list of arguments, the following actions are taken. - If the command name contains no slashes, the shell attempts to locate - it. If there exists a shell function by that name, that function is - invoked as described above in FFUUNNCCTTIIOONNSS. If the name does not match a - function, the shell searches for it in the list of shell builtins. If + If the command name contains no slashes, the shell attempts to locate + it. If there exists a shell function by that name, that function is + invoked as described above in FFUUNNCCTTIIOONNSS. If the name does not match a + function, the shell searches for it in the list of shell builtins. If a match is found, that builtin is invoked. - If the name is neither a shell function nor a builtin, and contains no - slashes, bbaasshh searches each element of the PPAATTHH for a directory con- - taining an executable file by that name. BBaasshh uses a hash table to - remember the full pathnames of executable files (see hhaasshh under SSHHEELLLL - BBUUIILLTTIINN CCOOMMMMAANNDDSS below). A full search of the directories in PPAATTHH is - performed only if the command is not found in the hash table. If the - search is unsuccessful, the shell prints an error message and returns + If the name is neither a shell function nor a builtin, and contains no + slashes, bbaasshh searches each element of the PPAATTHH for a directory con- + taining an executable file by that name. BBaasshh uses a hash table to + remember the full pathnames of executable files (see hhaasshh under SSHHEELLLL + BBUUIILLTTIINN CCOOMMMMAANNDDSS below). A full search of the directories in PPAATTHH is + performed only if the command is not found in the hash table. If the + search is unsuccessful, the shell prints an error message and returns an exit status of 127. - If the search is successful, or if the command name contains one or + If the search is successful, or if the command name contains one or more slashes, the shell executes the named program in a separate execu- tion environment. Argument 0 is set to the name given, and the remain- ing arguments to the command are set to the arguments given, if any. - If this execution fails because the file is not in executable format, - and the file is not a directory, it is assumed to be a _s_h_e_l_l _s_c_r_i_p_t, a - file containing shell commands. A subshell is spawned to execute it. - This subshell reinitializes itself, so that the effect is as if a new - shell had been invoked to handle the script, with the exception that - the locations of commands remembered by the parent (see hhaasshh below + If this execution fails because the file is not in executable format, + and the file is not a directory, it is assumed to be a _s_h_e_l_l _s_c_r_i_p_t, a + file containing shell commands. A subshell is spawned to execute it. + This subshell reinitializes itself, so that the effect is as if a new + shell had been invoked to handle the script, with the exception that + the locations of commands remembered by the parent (see hhaasshh below under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS) are retained by the child. - If the program is a file beginning with ##!!, the remainder of the first - line specifies an interpreter for the program. The shell executes the + If the program is a file beginning with ##!!, the remainder of the first + line specifies an interpreter for the program. The shell executes the specified interpreter on operating systems that do not handle this exe- cutable format themselves. The arguments to the interpreter consist of - a single optional argument following the interpreter name on the first - line of the program, followed by the name of the program, followed by + a single optional argument following the interpreter name on the first + line of the program, followed by the name of the program, followed by the command arguments, if any. CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT - 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- + 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 + +o open files inherited by the shell at invocation, as modified by redirections supplied to the eexxeecc builtin - +o the current working directory as set by ccdd, ppuusshhdd, or ppooppdd, or + +o the current working directory as set by ccdd, ppuusshhdd, or ppooppdd, or inherited by the shell at invocation - +o the file creation mode mask as set by uummaasskk or inherited from + +o the file creation mode mask as set by uummaasskk or inherited from the shell's parent +o current traps set by ttrraapp @@ -2149,227 +2119,225 @@ CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENN +o shell parameters that are set by variable assignment or with sseett or inherited from the shell's parent in the environment - +o shell functions defined during execution or inherited from the + +o shell functions defined during execution or inherited from the shell's parent in the environment - +o options enabled at invocation (either by default or with com- + +o options enabled at invocation (either by default or with com- mand-line arguments) or by sseett +o options enabled by sshhoopptt +o shell aliases defined with aalliiaass - +o various process IDs, including those of background jobs, the + +o various process IDs, including those of background jobs, the value of $$$$, and the value of $$PPPPIIDD - When a simple command other than a builtin or shell function is to be - executed, it is invoked in a separate execution environment that con- - sists of the following. Unless otherwise noted, the values are inher- + When a simple command other than a builtin or shell function is to be + executed, it is invoked in a separate execution environment that con- + sists of the following. Unless otherwise noted, the values are inher- ited from the shell. - +o the shell's open files, plus any modifications and additions + +o the shell's open files, plus any modifications and additions specified by redirections to the command +o the current working directory +o the file creation mode mask - +o shell variables and functions marked for export, along with + +o shell variables and functions marked for export, along with variables exported for the command, passed in the environment +o traps caught by the shell are reset to the values inherited from the shell's parent, and traps ignored by the shell are ignored - A command invoked in this separate environment cannot affect the + A command invoked in this separate environment cannot affect the shell's execution environment. - Command substitution, commands grouped with parentheses, and asynchro- + Command substitution, commands grouped with parentheses, and asynchro- nous commands are invoked in a subshell environment that is a duplicate - of the shell environment, except that traps caught by the shell are + of the shell environment, except that traps caught by the shell are reset to the values that the shell inherited from its parent at invoca- tion. Builtin commands that are invoked as part of a pipeline are also executed in a subshell environment. Changes made to the subshell envi- ronment cannot affect the shell's execution environment. - If a command is followed by a && and job control is not active, the - default standard input for the command is the empty file _/_d_e_v_/_n_u_l_l. - Otherwise, the invoked command inherits the file descriptors of the + If a command is followed by a && and job control is not active, the + default standard input for the command is the empty file _/_d_e_v_/_n_u_l_l. + Otherwise, the invoked command inherits the file descriptors of the calling shell as modified by redirections. EENNVVIIRROONNMMEENNTT - When a program is invoked it is given an array of strings called the + When a program is invoked it is given an array of strings called the _e_n_v_i_r_o_n_m_e_n_t. This is a list of _n_a_m_e-_v_a_l_u_e pairs, of the form _n_a_m_e=_v_a_l_u_e. - The shell provides several ways to manipulate the environment. On + The shell provides several ways to manipulate the environment. On invocation, the shell scans its own environment and creates a parameter - for each name found, automatically marking it for _e_x_p_o_r_t to child pro- - cesses. Executed commands inherit the environment. The eexxppoorrtt and - ddeeccllaarree --xx commands allow parameters and functions to be added to and + for each name found, automatically marking it for _e_x_p_o_r_t to child pro- + cesses. Executed commands inherit the environment. The eexxppoorrtt and + ddeeccllaarree --xx commands allow parameters and functions to be added to and deleted from the environment. If the value of a parameter in the envi- - ronment is modified, the new value becomes part of the environment, - replacing the old. The environment inherited by any executed command - consists of the shell's initial environment, whose values may be modi- - fied in the shell, less any pairs removed by the uunnsseett command, plus + ronment is modified, the new value becomes part of the environment, + replacing the old. The environment inherited by any executed command + consists of the shell's initial environment, whose values may be modi- + fied in the shell, less any pairs removed by the uunnsseett command, plus any additions via the eexxppoorrtt and ddeeccllaarree --xx commands. - The environment for any _s_i_m_p_l_e _c_o_m_m_a_n_d or function may be augmented - temporarily by prefixing it with parameter assignments, as described + The environment for any _s_i_m_p_l_e _c_o_m_m_a_n_d or function may be augmented + temporarily by prefixing it with parameter assignments, as described above in PPAARRAAMMEETTEERRSS. These assignment statements affect only the envi- ronment seen by that command. - If the --kk option is set (see the sseett builtin command below), then _a_l_l - parameter assignments are placed in the environment for a command, not + If the --kk option is set (see the sseett builtin command below), then _a_l_l + parameter assignments are placed in the environment for a command, not 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- + 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. EEXXIITT SSTTAATTUUSS For the shell's purposes, a command which exits with a zero exit status - has succeeded. An exit status of zero indicates success. A non-zero - exit status indicates failure. When a command terminates on a fatal + has succeeded. An exit status of zero indicates success. A non-zero + exit status indicates failure. When a command terminates on a fatal signal _N, bbaasshh uses the value of 128+_N as the exit status. - If a command is not found, the child process created to execute it - returns a status of 127. If a command is found but is not executable, + If a command is not found, the child process created to execute it + returns a status of 127. If a command is found but is not executable, the return status is 126. If a command fails because of an error during expansion or redirection, the exit status is greater than zero. - Shell builtin commands return a status of 0 (_t_r_u_e) if successful, and - non-zero (_f_a_l_s_e) if an error occurs while they execute. All builtins + Shell builtin commands return a status of 0 (_t_r_u_e) if successful, and + non-zero (_f_a_l_s_e) if an error occurs while they execute. All builtins return an exit status of 2 to indicate incorrect usage. - BBaasshh itself returns the exit status of the last command executed, - unless a syntax error occurs, in which case it exits with a non-zero + BBaasshh itself returns the exit status of the last command executed, + unless a syntax error occurs, in which case it exits with a non-zero value. See also the eexxiitt builtin command below. SSIIGGNNAALLSS - When bbaasshh is interactive, in the absence of any traps, it ignores + When bbaasshh is interactive, in the absence of any traps, it ignores SSIIGGTTEERRMM (so that kkiillll 00 does not kill an interactive shell), and SSIIGGIINNTT - is caught and handled (so that the wwaaiitt builtin is interruptible). In - all cases, bbaasshh ignores SSIIGGQQUUIITT. If job control is in effect, bbaasshh + is caught and handled (so that the wwaaiitt builtin is interruptible). In + all cases, bbaasshh ignores SSIIGGQQUUIITT. If job control is in effect, bbaasshh ignores SSIIGGTTTTIINN, SSIIGGTTTTOOUU, and SSIIGGTTSSTTPP. Non-builtin commands run by bbaasshh have signal handlers set to the values - inherited by the shell from its parent. When job control is not in - effect, asynchronous commands ignore SSIIGGIINNTT and SSIIGGQQUUIITT in addition to - these inherited handlers. Commands run as a result of command substi- + inherited by the shell from its parent. When job control is not in + effect, asynchronous commands ignore SSIIGGIINNTT and SSIIGGQQUUIITT in addition to + these inherited handlers. Commands run as a result of command substi- tution ignore the keyboard-generated job control signals SSIIGGTTTTIINN, SSIIGGTT-- TTOOUU, and SSIIGGTTSSTTPP. - The shell exits by default upon receipt of a SSIIGGHHUUPP. Before exiting, - an interactive shell resends the SSIIGGHHUUPP to all jobs, running or + The shell exits by default upon receipt of a SSIIGGHHUUPP. Before exiting, + an interactive shell resends the SSIIGGHHUUPP to all jobs, running or stopped. Stopped jobs are sent SSIIGGCCOONNTT to ensure that they receive the - SSIIGGHHUUPP. To prevent the shell from sending the signal to a particular - job, it should be removed from the jobs table with the ddiissoowwnn builtin - (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) or marked to not receive SSIIGGHHUUPP + SSIIGGHHUUPP. To prevent the shell from sending the signal to a particular + job, it should be removed from the jobs table with the ddiissoowwnn builtin + (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) or marked to not receive SSIIGGHHUUPP using ddiissoowwnn --hh. - If the hhuuppoonneexxiitt shell option has been set with sshhoopptt, bbaasshh sends a + If the hhuuppoonneexxiitt shell option has been set with sshhoopptt, bbaasshh sends a SSIIGGHHUUPP to all jobs when an interactive login shell exits. - If bbaasshh is waiting for a command to complete and receives a signal for + If bbaasshh is waiting for a command to complete and receives a signal for which a trap has been set, the trap will not be executed until the com- - mand completes. When bbaasshh is waiting for an asynchronous command via - the wwaaiitt builtin, the reception of a signal for which a trap has been + mand completes. When bbaasshh is waiting for an asynchronous command via + the wwaaiitt builtin, the reception of a signal for which a trap has been set will cause the wwaaiitt builtin to return immediately with an exit sta- tus greater than 128, immediately after which the trap is executed. JJOOBB CCOONNTTRROOLL - _J_o_b _c_o_n_t_r_o_l refers to the ability to selectively stop (_s_u_s_p_e_n_d) the + _J_o_b _c_o_n_t_r_o_l refers to the ability to selectively stop (_s_u_s_p_e_n_d) the execution of processes and continue (_r_e_s_u_m_e) their execution at a later - point. A user typically employs this facility via an interactive + point. A user typically employs this facility via an interactive interface supplied jointly by the system's terminal driver and bbaasshh. - The shell associates a _j_o_b with each pipeline. It keeps a table of - currently executing jobs, which may be listed with the jjoobbss command. - When bbaasshh starts a job asynchronously (in the _b_a_c_k_g_r_o_u_n_d), it prints a + The shell associates a _j_o_b with each pipeline. It keeps a table of + currently executing jobs, which may be listed with the jjoobbss command. + When bbaasshh starts a job asynchronously (in the _b_a_c_k_g_r_o_u_n_d), it prints a line that looks like: [1] 25647 indicating that this job is job number 1 and that the process ID of the last process in the pipeline associated with this job is 25647. All of - the processes in a single pipeline are members of the same job. BBaasshh + the processes in a single pipeline are members of the same job. BBaasshh uses the _j_o_b abstraction as the basis for job control. - To facilitate the implementation of the user interface to job control, + To facilitate the implementation of the user interface to job control, the operating system maintains the notion of a _c_u_r_r_e_n_t _t_e_r_m_i_n_a_l _p_r_o_c_e_s_s _g_r_o_u_p _I_D. Members of this process group (processes whose process group ID is equal to the current terminal process group ID) receive keyboard- - generated signals such as SSIIGGIINNTT. These processes are said to be in - the _f_o_r_e_g_r_o_u_n_d. _B_a_c_k_g_r_o_u_n_d processes are those whose process group ID + generated signals such as SSIIGGIINNTT. These processes are said to be in + the _f_o_r_e_g_r_o_u_n_d. _B_a_c_k_g_r_o_u_n_d processes are those whose process group ID differs from the terminal's; such processes are immune to keyboard-gen- - erated signals. Only foreground processes are allowed to read from or + erated signals. Only foreground processes are allowed to read from or write to the terminal. Background processes which attempt to read from (write to) the terminal are sent a SSIIGGTTTTIINN ((SSIIGGTTTTOOUU)) signal by the ter- minal driver, which, unless caught, suspends the process. - If the operating system on which bbaasshh is running supports job control, + If the operating system on which bbaasshh is running supports job control, bbaasshh contains facilities to use it. Typing the _s_u_s_p_e_n_d character (typ- ically ^^ZZ, Control-Z) while a process is running causes that process to - be stopped and returns control to bbaasshh. Typing the _d_e_l_a_y_e_d _s_u_s_p_e_n_d - character (typically ^^YY, Control-Y) causes the process to be stopped - when it attempts to read input from the terminal, and control to be - returned to bbaasshh. The user may then manipulate the state of this job, - using the bbgg command to continue it in the background, the ffgg command + be stopped and returns control to bbaasshh. Typing the _d_e_l_a_y_e_d _s_u_s_p_e_n_d + character (typically ^^YY, Control-Y) causes the process to be stopped + when it attempts to read input from the terminal, and control to be + returned to bbaasshh. The user may then manipulate the state of this job, + using the bbgg command to continue it in the background, the ffgg command to continue it in the foreground, or the kkiillll command to kill it. A ^^ZZ takes effect immediately, and has the additional side effect of causing pending output and typeahead to be discarded. There are a number of ways to refer to a job in the shell. The charac- ter %% introduces a job name. Job number _n may be referred to as %%nn. A - job may also be referred to using a prefix of the name used to start - it, or using a substring that appears in its command line. For exam- + job may also be referred to using a prefix of the name used to start + it, or using a substring that appears in its command line. For exam- ple, %%ccee refers to a stopped ccee job. If a prefix matches more than one - job, bbaasshh reports an error. Using %%??ccee, on the other hand, refers to + job, bbaasshh reports an error. Using %%??ccee, on the other hand, refers to any job containing the string ccee in its command line. If the substring - matches more than one job, bbaasshh reports an error. The symbols %%%% and - %%++ refer to the shell's notion of the _c_u_r_r_e_n_t _j_o_b, which is the last - job stopped while it was in the foreground or started in the back- - ground. The _p_r_e_v_i_o_u_s _j_o_b may be referenced using %%--. In output per- + matches more than one job, bbaasshh reports an error. The symbols %%%% and + %%++ refer to the shell's notion of the _c_u_r_r_e_n_t _j_o_b, which is the last + job stopped while it was in the foreground or started in the back- + ground. The _p_r_e_v_i_o_u_s _j_o_b may be referenced using %%--. In output per- taining to jobs (e.g., the output of the jjoobbss command), the current job - is always flagged with a ++, and the previous job with a --. A single % - (with no accompanying job specification) also refers to the current + is always flagged with a ++, and the previous job with a --. A single % + (with no accompanying job specification) also refers to the current job. - Simply naming a job can be used to bring it into the foreground: %%11 is - a synonym for ````ffgg %%11'''', bringing job 1 from the background into the - foreground. Similarly, ````%%11 &&'''' resumes job 1 in the background, + Simply naming a job can be used to bring it into the foreground: %%11 is + a synonym for ````ffgg %%11'''', bringing job 1 from the background into the + foreground. Similarly, ````%%11 &&'''' resumes job 1 in the background, equivalent to ````bbgg %%11''''. - The shell learns immediately whenever a job changes state. Normally, + The shell learns immediately whenever a job changes state. Normally, bbaasshh waits until it is about to print a prompt before reporting changes - in a job's status so as to not interrupt any other output. If the --bb + in a job's status so as to not interrupt any other output. If the --bb option to the sseett builtin command is enabled, bbaasshh reports such changes - immediately. Any trap on SSIIGGCCHHLLDD is executed for each child that + immediately. Any trap on SSIIGGCCHHLLDD is executed for each child that exits. - If an attempt to exit bbaasshh is made while jobs are stopped (or, if the - cchheecckkjjoobbss shell option has been enabled using the sshhoopptt builtin, run- - ning), the shell prints a warning message, and, if the cchheecckkjjoobbss option - is enabled, lists the jobs and their statuses. The jjoobbss command may - then be used to inspect their status. If a second attempt to exit is - made without an intervening command, the shell does not print another - warning, and any stopped jobs are terminated. + If an attempt to exit bbaasshh is made while jobs are stopped, the shell + prints a warning message. The jjoobbss command may then be used to inspect + their status. If a second attempt to exit is made without an interven- + ing command, the shell does not print another warning, and the stopped + jobs are terminated. PPRROOMMPPTTIINNGG When executing interactively, bbaasshh displays the primary prompt PPSS11 when - it is ready to read a command, and the secondary prompt PPSS22 when it - needs more input to complete a command. BBaasshh allows these prompt - strings to be customized by inserting a number of backslash-escaped + it is ready to read a command, and the secondary prompt PPSS22 when it + needs more input to complete a command. BBaasshh allows these prompt + strings to be customized by inserting a number of backslash-escaped special characters that are decoded as follows: \\aa an ASCII bell character (07) - \\dd the date in "Weekday Month Date" format (e.g., "Tue May + \\dd the date in "Weekday Month Date" format (e.g., "Tue May 26") \\DD{{_f_o_r_m_a_t}} - the _f_o_r_m_a_t is passed to _s_t_r_f_t_i_m_e(3) and the result is - inserted into the prompt string; an empty _f_o_r_m_a_t results + the _f_o_r_m_a_t is passed to _s_t_r_f_t_i_m_e(3) and the result is + inserted into the prompt string; an empty _f_o_r_m_a_t results in a locale-specific time representation. The braces are required \\ee an ASCII escape character (033) @@ -2379,7 +2347,7 @@ PPRROOMMPPTTIINNGG \\ll the basename of the shell's terminal device name \\nn newline \\rr carriage return - \\ss the name of the shell, the basename of $$00 (the portion + \\ss the name of the shell, the basename of $$00 (the portion following the final slash) \\tt the current time in 24-hour HH:MM:SS format \\TT the current time in 12-hour HH:MM:SS format @@ -2388,7 +2356,7 @@ PPRROOMMPPTTIINNGG \\uu the username of the current user \\vv the version of bbaasshh (e.g., 2.00) \\VV the release of bbaasshh, version + patch level (e.g., 2.00.0) - \\ww the current working directory, with $$HHOOMMEE abbreviated + \\ww the current working directory, with $$HHOOMMEE abbreviated with a tilde \\WW the basename of the current working directory, with $$HHOOMMEE abbreviated with a tilde @@ -2397,63 +2365,63 @@ PPRROOMMPPTTIINNGG \\$$ if the effective UID is 0, a ##, otherwise a $$ \\_n_n_n the character corresponding to the octal number _n_n_n \\\\ a backslash - \\[[ begin a sequence of non-printing characters, which could - be used to embed a terminal control sequence into the + \\[[ begin a sequence of non-printing characters, which could + be used to embed a terminal control sequence into the prompt \\]] end a sequence of non-printing characters - The command number and the history number are usually different: the - history number of a command is its position in the history list, which - may include commands restored from the history file (see HHIISSTTOORRYY - below), while the command number is the position in the sequence of - commands executed during the current shell session. After the string - is decoded, it is expanded via parameter expansion, command substitu- - tion, arithmetic expansion, and quote removal, subject to the value of - the pprroommppttvvaarrss shell option (see the description of the sshhoopptt command + The command number and the history number are usually different: the + history number of a command is its position in the history list, which + may include commands restored from the history file (see HHIISSTTOORRYY + below), while the command number is the position in the sequence of + commands executed during the current shell session. After the string + is decoded, it is expanded via parameter expansion, command substitu- + tion, arithmetic expansion, and quote removal, subject to the value of + the pprroommppttvvaarrss shell option (see the description of the sshhoopptt command under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). RREEAADDLLIINNEE - This is the library that handles reading input when using an interac- + This is the library that handles reading input when using an interac- tive shell, unless the ----nnooeeddiittiinngg option is given at shell invocation. By default, the line editing commands are similar to those of emacs. A - vi-style line editing interface is also available. To turn off line - editing after the shell is running, use the ++oo eemmaaccss or ++oo vvii options + vi-style line editing interface is also available. To turn off line + editing after the shell is running, use the ++oo eemmaaccss or ++oo vvii options to the sseett builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). RReeaaddlliinnee NNoottaattiioonn In this section, the emacs-style notation is used to denote keystrokes. - Control keys are denoted by C-_k_e_y, e.g., C-n means Control-N. Simi- - larly, _m_e_t_a keys are denoted by M-_k_e_y, so M-x means Meta-X. (On key- - boards without a _m_e_t_a key, M-_x means ESC _x, i.e., press the Escape key + Control keys are denoted by C-_k_e_y, e.g., C-n means Control-N. Simi- + larly, _m_e_t_a keys are denoted by M-_k_e_y, so M-x means Meta-X. (On key- + boards without a _m_e_t_a key, M-_x means ESC _x, i.e., press the Escape key then the _x key. This makes ESC the _m_e_t_a _p_r_e_f_i_x. The combination M-C-_x - means ESC-Control-_x, or press the Escape key then hold the Control key + means ESC-Control-_x, or press the Escape key then hold the Control key while pressing the _x key.) Readline commands may be given numeric _a_r_g_u_m_e_n_t_s, which normally act as - a repeat count. Sometimes, however, it is the sign of the argument - that is significant. Passing a negative argument to a command that - acts in the forward direction (e.g., kkiillll--lliinnee) causes that command to - act in a backward direction. Commands whose behavior with arguments + a repeat count. Sometimes, however, it is the sign of the argument + that is significant. Passing a negative argument to a command that + acts in the forward direction (e.g., kkiillll--lliinnee) causes that command to + act in a backward direction. Commands whose behavior with arguments deviates from this are noted below. - When a command is described as _k_i_l_l_i_n_g text, the text deleted is saved + When a command is described as _k_i_l_l_i_n_g text, the text deleted is saved for possible future retrieval (_y_a_n_k_i_n_g). The killed text is saved in a _k_i_l_l _r_i_n_g. Consecutive kills cause the text to be accumulated into one unit, which can be yanked all at once. Commands which do not kill text separate the chunks of text on the kill ring. RReeaaddlliinnee IInniittiiaalliizzaattiioonn - Readline is customized by putting commands in an initialization file - (the _i_n_p_u_t_r_c file). The name of this file is taken from the value of - the IINNPPUUTTRRCC variable. If that variable is unset, the default is - _~_/_._i_n_p_u_t_r_c. When a program which uses the readline library starts up, + Readline is customized by putting commands in an initialization file + (the _i_n_p_u_t_r_c file). The name of this file is taken from the value of + the IINNPPUUTTRRCC variable. If that variable is unset, the default is + _~_/_._i_n_p_u_t_r_c. When a program which uses the readline library starts up, the initialization file is read, and the key bindings and variables are - set. There are only a few basic constructs allowed in the readline - initialization file. Blank lines are ignored. Lines beginning with a - ## are comments. Lines beginning with a $$ indicate conditional con- + set. There are only a few basic constructs allowed in the readline + initialization file. Blank lines are ignored. Lines beginning with a + ## are comments. Lines beginning with a $$ indicate conditional con- structs. Other lines denote key bindings and variable settings. - The default key-bindings may be changed with an _i_n_p_u_t_r_c file. Other + The default key-bindings may be changed with an _i_n_p_u_t_r_c file. Other programs that use this library may add their own commands and bindings. For example, placing @@ -2461,19 +2429,19 @@ RREEAADDLLIINNEE M-Control-u: universal-argument or C-Meta-u: universal-argument - into the _i_n_p_u_t_r_c would make M-C-u execute the readline command _u_n_i_v_e_r_- + into the _i_n_p_u_t_r_c would make M-C-u execute the readline command _u_n_i_v_e_r_- _s_a_l_-_a_r_g_u_m_e_n_t. - The following symbolic character names are recognized: _R_U_B_O_U_T, _D_E_L, + The following symbolic character names are recognized: _R_U_B_O_U_T, _D_E_L, _E_S_C, _L_F_D, _N_E_W_L_I_N_E, _R_E_T, _R_E_T_U_R_N, _S_P_C, _S_P_A_C_E, and _T_A_B. - In addition to command names, readline allows keys to be bound to a + In addition to command names, readline allows keys to be bound to a string that is inserted when the key is pressed (a _m_a_c_r_o). RReeaaddlliinnee KKeeyy BBiinnddiinnggss - The syntax for controlling key bindings in the _i_n_p_u_t_r_c file is simple. - All that is required is the name of the command or the text of a macro - and a key sequence to which it should be bound. The name may be speci- + The syntax for controlling key bindings in the _i_n_p_u_t_r_c file is simple. + All that is required is the name of the command or the text of a macro + and a key sequence to which it should be bound. The name may be speci- fied in one of two ways: as a symbolic key name, possibly with _M_e_t_a_- or _C_o_n_t_r_o_l_- prefixes, or as a key sequence. @@ -2484,15 +2452,15 @@ RREEAADDLLIINNEE Meta-Rubout: backward-kill-word Control-o: "> output" - In the above example, _C_-_u is bound to the function uunniivveerrssaall--aarrgguummeenntt, - _M_-_D_E_L is bound to the function bbaacckkwwaarrdd--kkiillll--wwoorrdd, and _C_-_o is bound to - run the macro expressed on the right hand side (that is, to insert the + In the above example, _C_-_u is bound to the function uunniivveerrssaall--aarrgguummeenntt, + _M_-_D_E_L is bound to the function bbaacckkwwaarrdd--kkiillll--wwoorrdd, and _C_-_o is bound to + run the macro expressed on the right hand side (that is, to insert the text ``> output'' into the line). - In the second form, ""kkeeyysseeqq"":_f_u_n_c_t_i_o_n_-_n_a_m_e or _m_a_c_r_o, kkeeyysseeqq differs - from kkeeyynnaammee above in that strings denoting an entire key sequence may - be specified by placing the sequence within double quotes. Some GNU - Emacs style key escapes can be used, as in the following example, but + In the second form, ""kkeeyysseeqq"":_f_u_n_c_t_i_o_n_-_n_a_m_e or _m_a_c_r_o, kkeeyysseeqq differs + from kkeeyynnaammee above in that strings denoting an entire key sequence may + be specified by placing the sequence within double quotes. Some GNU + Emacs style key escapes can be used, as in the following example, but the symbolic character names are not recognized. "\C-u": universal-argument @@ -2500,7 +2468,7 @@ RREEAADDLLIINNEE "\e[11~": "Function Key 1" In this example, _C_-_u is again bound to the function uunniivveerrssaall--aarrgguummeenntt. - _C_-_x _C_-_r is bound to the function rree--rreeaadd--iinniitt--ffiillee, and _E_S_C _[ _1 _1 _~ is + _C_-_x _C_-_r is bound to the function rree--rreeaadd--iinniitt--ffiillee, and _E_S_C _[ _1 _1 _~ is bound to insert the text ``Function Key 1''. The full set of GNU Emacs style escape sequences is @@ -2511,7 +2479,7 @@ RREEAADDLLIINNEE \\"" literal " \\'' literal ' - In addition to the GNU Emacs style escape sequences, a second set of + In addition to the GNU Emacs style escape sequences, a second set of backslash escapes is available: \\aa alert (bell) \\bb backspace @@ -2521,20 +2489,20 @@ RREEAADDLLIINNEE \\rr carriage return \\tt horizontal tab \\vv vertical tab - \\_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) When entering the text of a macro, single or double quotes must be used to indicate a macro definition. Unquoted text is assumed to be a func- - tion name. In the macro body, the backslash escapes described above - are expanded. Backslash will quote any other character in the macro + tion name. In the macro body, the backslash escapes described above + are expanded. Backslash will quote any other character in the macro text, including " and '. - BBaasshh allows the current readline key bindings to be displayed or modi- - fied with the bbiinndd builtin command. The editing mode may be switched - during interactive use by using the --oo option to the sseett builtin com- + BBaasshh allows the current readline key bindings to be displayed or modi- + fied with the bbiinndd builtin command. The editing mode may be switched + during interactive use by using the --oo option to the sseett builtin com- mand (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). RReeaaddlliinnee VVaarriiaabblleess @@ -2544,44 +2512,44 @@ RREEAADDLLIINNEE sseett _v_a_r_i_a_b_l_e_-_n_a_m_e _v_a_l_u_e - Except where noted, readline variables can take the values OOnn or OOffff - (without regard to case). Unrecognized variable names are ignored. - When a variable value is read, empty or null values, "on" (case-insen- + Except where noted, readline variables can take the values OOnn or OOffff + (without regard to case). Unrecognized variable names are ignored. + When a variable value is read, empty or null values, "on" (case-insen- sitive), and "1" are equivalent to OOnn. All other values are equivalent to OOffff. The variables and their default values are: bbeellll--ssttyyllee ((aauuddiibbllee)) - Controls what happens when readline wants to ring the terminal + Controls what happens when readline wants to ring the terminal bell. If set to nnoonnee, readline never rings the bell. If set to - vviissiibbllee, readline uses a visible bell if one is available. If + vviissiibbllee, readline uses a visible bell if one is available. If set to aauuddiibbllee, readline attempts to ring the terminal's bell. bbiinndd--ttttyy--ssppeecciiaall--cchhaarrss ((OOnn)) - If set to OOnn, readline attempts to bind the control characters + If set to OOnn, readline attempts to bind the control characters treated specially by the kernel's terminal driver to their read- line equivalents. 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--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- @@ -2589,111 +2557,111 @@ RREEAADDLLIINNEE vvii. 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. 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. 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. 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, unless the leading `.' is supplied by the + This variable, when set to OOnn, causes readline to match files + whose names begin with a `.' (hidden files) when performing + filename completion, unless the leading `.' is supplied by the user in the filename to be completed. 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. 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. 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 Bash: $$iiff Bash @@ -2708,51 +2676,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 @@ -2768,11 +2736,11 @@ 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). 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. @@ -2780,132 +2748,132 @@ 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 - of the previous history entry). With an argument, behave - exactly like yyaannkk--nntthh--aarrgg. Successive calls to yyaannkk--llaasstt--aarrgg - move back through the history list, inserting the last argument + Insert the last argument to the previous command (the last word + of the previous history entry). With an argument, behave + exactly like yyaannkk--nntthh--aarrgg. Successive calls to yyaannkk--llaasstt--aarrgg + move back through the history list, inserting the last argument of each line in turn. The history expansion facilities are used - to extract the last argument, as if the "!$" history expansion + to extract the last argument, 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 $$FFCCEEDDIITT, + Invoke an editor on the current command line, and execute the + result as shell commands. BBaasshh attempts to invoke $$FFCCEEDDIITT, $$EEDDIITTOORR, and _e_m_a_c_s as the editor, in that order. CCoommmmaannddss ffoorr CChhaannggiinngg TTeexxtt 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 + 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. bbaacckkwwaarrdd--ddeelleettee--cchhaarr ((RRuubboouutt)) - Delete the character behind the cursor. When given a numeric + Delete the character behind the cursor. When given a numeric argument, save the deleted text on the kill ring. ffoorrwwaarrdd--bbaacckkwwaarrdd--ddeelleettee--cchhaarr - Delete the character under the cursor, unless the cursor is at + Delete the character under the cursor, unless the cursor is at the end of the line, in which case the character behind the cur- sor is deleted. qquuootteedd--iinnsseerrtt ((CC--qq,, CC--vv)) - Add the next character typed to the line verbatim. This is how + Add the next character typed to the line verbatim. This is how to insert characters like CC--qq, for example. ttaabb--iinnsseerrtt ((CC--vv TTAABB)) Insert a tab character. sseellff--iinnsseerrtt ((aa,, bb,, AA,, 11,, !!,, ......)) Insert the character typed. ttrraannssppoossee--cchhaarrss ((CC--tt)) - Drag the character before point forward over the character at - point, moving point forward as well. If point is at the end of - the line, then this transposes the two characters before point. + Drag the character before point forward over the character at + point, moving point forward as well. If point is at the end of + the line, then this transposes the two characters before point. Negative arguments have no effect. ttrraannssppoossee--wwoorrddss ((MM--tt)) - Drag the word before point past the word after point, moving - point over that word as well. If point is at the end of the + Drag the word before point past the word after point, moving + point over that word as well. If point is at the end of the line, this transposes the last two words on the line. uuppccaassee--wwoorrdd ((MM--uu)) - Uppercase the current (or following) word. With a negative + Uppercase the current (or following) word. With a negative argument, uppercase the previous word, but do not move point. ddoowwnnccaassee--wwoorrdd ((MM--ll)) - Lowercase the current (or following) word. With a negative + Lowercase the current (or following) word. With a negative argument, lowercase the previous word, but do not move point. ccaappiittaalliizzee--wwoorrdd ((MM--cc)) - Capitalize the current (or following) word. With a negative + Capitalize the current (or following) word. With a negative argument, capitalize the previous word, but do not move point. oovveerrwwrriittee--mmooddee - Toggle overwrite mode. With an explicit positive numeric argu- + Toggle overwrite mode. With an explicit positive numeric argu- ment, switches to overwrite mode. With an explicit non-positive numeric argument, switches to insert mode. This command affects - only eemmaaccss mode; vvii mode does overwrite differently. Each call + only eemmaaccss mode; vvii mode does overwrite differently. Each call to _r_e_a_d_l_i_n_e_(_) starts in insert mode. In overwrite mode, charac- - ters bound to sseellff--iinnsseerrtt replace the text at point rather than - pushing the text to the right. Characters bound to bbaacckk-- - wwaarrdd--ddeelleettee--cchhaarr replace the character before point with a + ters bound to sseellff--iinnsseerrtt replace the text at point rather than + pushing the text to the right. Characters bound to bbaacckk-- + wwaarrdd--ddeelleettee--cchhaarr replace the character before point with a space. By default, this command is unbound. KKiilllliinngg aanndd YYaannkkiinngg @@ -2914,24 +2882,24 @@ RREEAADDLLIINNEE bbaacckkwwaarrdd--kkiillll--lliinnee ((CC--xx RRuubboouutt)) Kill backward to the beginning of the line. uunniixx--lliinnee--ddiissccaarrdd ((CC--uu)) - Kill backward from point to the beginning of the line. The + Kill backward from point to the beginning of the line. The killed text is saved on the kill-ring. kkiillll--wwhhoollee--lliinnee - Kill all characters on the current line, no matter where point + Kill all characters on the current line, no matter where point is. kkiillll--wwoorrdd ((MM--dd)) - Kill from point to the end of the current word, or if between - words, to the end of the next word. Word boundaries are the + Kill from point to the end of the current word, or if between + words, to the end of the next word. Word boundaries are the same as those used by ffoorrwwaarrdd--wwoorrdd. bbaacckkwwaarrdd--kkiillll--wwoorrdd ((MM--RRuubboouutt)) - Kill the word behind point. Word boundaries are the same as + Kill the word behind point. Word boundaries are the same as those used by bbaacckkwwaarrdd--wwoorrdd. uunniixx--wwoorrdd--rruubboouutt ((CC--ww)) - Kill the word behind point, using white space as a word bound- + Kill the word behind point, using white space as a word bound- ary. The killed text is saved on the kill-ring. uunniixx--ffiilleennaammee--rruubboouutt - Kill the word behind point, using white space and the slash - character as the word boundaries. The killed text is saved on + Kill the word behind point, using white space and the slash + character as the word boundaries. The killed text is saved on the kill-ring. ddeelleettee--hhoorriizzoonnttaall--ssppaaccee ((MM--\\)) Delete all spaces and tabs around point. @@ -2940,61 +2908,61 @@ RREEAADDLLIINNEE ccooppyy--rreeggiioonn--aass--kkiillll Copy the text in the region to the kill buffer. ccooppyy--bbaacckkwwaarrdd--wwoorrdd - Copy the word before point to the kill buffer. The word bound- + Copy the word before point to the kill buffer. The word bound- aries are the same as bbaacckkwwaarrdd--wwoorrdd. ccooppyy--ffoorrwwaarrdd--wwoorrdd - Copy the word following point to the kill buffer. The word + Copy the word following point to the kill buffer. The word boundaries are the same as ffoorrwwaarrdd--wwoorrdd. yyaannkk ((CC--yy)) Yank the top of the kill ring into the buffer at point. yyaannkk--ppoopp ((MM--yy)) - Rotate the kill ring, and yank the new top. Only works follow- + Rotate the kill ring, and yank the new top. Only works follow- ing yyaannkk or yyaannkk--ppoopp. NNuummeerriicc AArrgguummeennttss ddiiggiitt--aarrgguummeenntt ((MM--00,, MM--11,, ......,, MM----)) - Add this digit to the argument already accumulating, or start a + Add this digit to the argument already accumulating, or start a new argument. M-- starts a negative argument. uunniivveerrssaall--aarrgguummeenntt - This is another way to specify an argument. If this command is - followed by one or more digits, optionally with a leading minus - sign, those digits define the argument. If the command is fol- - lowed by digits, executing uunniivveerrssaall--aarrgguummeenntt again ends the - numeric argument, but is otherwise ignored. As a special case, - if this command is immediately followed by a character that is - neither a digit or minus sign, the argument count for the next - command is multiplied by four. The argument count is initially - one, so executing this function the first time makes the argu- + This is another way to specify an argument. If this command is + followed by one or more digits, optionally with a leading minus + sign, those digits define the argument. If the command is fol- + lowed by digits, executing uunniivveerrssaall--aarrgguummeenntt again ends the + numeric argument, but is otherwise ignored. As a special case, + if this command is immediately followed by a character that is + neither a digit or minus sign, the argument count for the next + command is multiplied by four. The argument count is initially + one, so executing this function the first time makes the argu- ment count four, a second time makes the argument count sixteen, and so on. CCoommpplleettiinngg ccoommpplleettee ((TTAABB)) - Attempt to perform completion on the text before point. BBaasshh + Attempt to perform completion on the text before point. BBaasshh attempts completion treating the text as a variable (if the text - begins with $$), username (if the text begins with ~~), hostname - (if the text begins with @@), or command (including aliases and + begins with $$), username (if the text begins with ~~), hostname + (if the text begins with @@), or command (including aliases and functions) in turn. If none of these produces a match, filename completion is attempted. ppoossssiibbllee--ccoommpplleettiioonnss ((MM--??)) List the possible completions of the text before point. iinnsseerrtt--ccoommpplleettiioonnss ((MM--**)) - Insert all completions of the text before point that would have + Insert all completions of the text before point that would have been generated by ppoossssiibbllee--ccoommpplleettiioonnss. mmeennuu--ccoommpplleettee - Similar to ccoommpplleettee, but replaces the word to be completed with - a single match from the list of possible completions. Repeated - execution of mmeennuu--ccoommpplleettee steps through the list of possible - completions, inserting each match in turn. At the end of the + Similar to ccoommpplleettee, but replaces the word to be completed with + a single match from the list of possible completions. Repeated + execution of mmeennuu--ccoommpplleettee steps through the list of possible + completions, inserting each match in turn. At the end of the list of completions, the bell is rung (subject to the setting of bbeellll--ssttyyllee) and the original text is restored. An argument of _n - moves _n positions forward in the list of matches; a negative - argument may be used to move backward through the list. This - command is intended to be bound to TTAABB, but is unbound by + moves _n positions forward in the list of matches; a negative + argument may be used to move backward through the list. This + command is intended to be bound to TTAABB, but is unbound by default. ddeelleettee--cchhaarr--oorr--lliisstt - Deletes the character under the cursor if not at the beginning - or end of the line (like ddeelleettee--cchhaarr). If at the end of the + Deletes the character under the cursor if not at the beginning + or end of the line (like ddeelleettee--cchhaarr). If at the end of the line, behaves identically to ppoossssiibbllee--ccoommpplleettiioonnss. This command is unbound by default. ccoommpplleettee--ffiilleennaammee ((MM--//)) @@ -3003,197 +2971,197 @@ RREEAADDLLIINNEE List the possible completions of the text before point, treating it as a filename. ccoommpplleettee--uusseerrnnaammee ((MM--~~)) - Attempt completion on the text before point, treating it as a + Attempt completion on the text before point, treating it as a username. ppoossssiibbllee--uusseerrnnaammee--ccoommpplleettiioonnss ((CC--xx ~~)) List the possible completions of the text before point, treating it as a username. ccoommpplleettee--vvaarriiaabbllee ((MM--$$)) - Attempt completion on the text before point, treating it as a + Attempt completion on the text before point, treating it as a shell variable. ppoossssiibbllee--vvaarriiaabbllee--ccoommpplleettiioonnss ((CC--xx $$)) List the possible completions of the text before point, treating it as a shell variable. ccoommpplleettee--hhoossttnnaammee ((MM--@@)) - Attempt completion on the text before point, treating it as a + Attempt completion on the text before point, treating it as a hostname. ppoossssiibbllee--hhoossttnnaammee--ccoommpplleettiioonnss ((CC--xx @@)) List the possible completions of the text before point, treating it as a hostname. ccoommpplleettee--ccoommmmaanndd ((MM--!!)) - Attempt completion on the text before point, treating it as a - command name. Command completion attempts to match the text - against aliases, reserved words, shell functions, shell + Attempt completion on the text before point, treating it as a + command name. Command completion attempts to match the text + against aliases, reserved words, shell functions, shell builtins, and finally executable filenames, in that order. ppoossssiibbllee--ccoommmmaanndd--ccoommpplleettiioonnss ((CC--xx !!)) List the possible completions of the text before point, treating it as a command name. ddyynnaammiicc--ccoommpplleettee--hhiissttoorryy ((MM--TTAABB)) - Attempt completion on the text before point, comparing the text - against lines from the history list for possible completion + Attempt completion on the text before point, comparing the text + against lines from the history list for possible completion matches. ccoommpplleettee--iinnttoo--bbrraacceess ((MM--{{)) Perform filename completion and insert the list of possible com- - pletions enclosed within braces so the list is available to the + pletions enclosed within braces so the list is available to the shell (see BBrraaccee EExxppaannssiioonn above). KKeeyybbooaarrdd MMaaccrrooss ssttaarrtt--kkbbdd--mmaaccrroo ((CC--xx (()) - Begin saving the characters typed into the current keyboard + Begin saving the characters typed into the current keyboard macro. eenndd--kkbbdd--mmaaccrroo ((CC--xx )))) Stop saving the characters typed into the current keyboard macro and store the definition. ccaallll--llaasstt--kkbbdd--mmaaccrroo ((CC--xx ee)) - Re-execute the last keyboard macro defined, by making the char- + Re-execute the last keyboard macro defined, by making the char- acters in the macro appear as if typed at the keyboard. 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. 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 file names 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 file names 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 a compspec has been defined + First, the command name is identified. 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 + 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. - 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 filename expansion pattern to the --GG + Any completions specified by a filename 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 - 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 + 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 and CCOOMMPP__PPOOIINNTT 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 + 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. @@ -3201,129 +3169,120 @@ 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. 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- + 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 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 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 history lines. - After saving the history, the history file is truncated to contain no - more than HHIISSTTFFIILLEESSIIZZEE lines. If HHIISSTTFFIILLEESSIIZZEE is not set, no trunca- - tion is performed. - - The builtin command ffcc (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) may be used + 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. After saving the history, the history file + is truncated to contain no more than HHIISSTTFFIILLEESSIIZZEE lines. If HHIISSTTFFIILLEE-- + SSIIZZEE is not set, no truncation is performed. + + 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-- - ttoorryy builtin may be used to display or modify the history list and - manipulate the history file. When using command-line editing, search - commands are available in each editing mode that provide access to the + ttoorryy builtin may be used to display or modify the history list and + manipulate the history file. When using command-line editing, search + commands are available in each editing mode that provide access to the history list. - The shell allows control over which commands are saved on the history + The shell allows control over which commands are saved on the history list. The HHIISSTTCCOONNTTRROOLL and HHIISSTTIIGGNNOORREE variables may be set to cause the shell to save only a subset of the commands entered. The ccmmddhhiisstt shell - option, if enabled, causes the shell to attempt to save each line of a - multi-line command in the same history entry, adding semicolons where - necessary to preserve syntactic correctness. The lliitthhiisstt shell option - causes the shell to save the command with embedded newlines instead of + option, if enabled, causes the shell to attempt to save each line of a + multi-line command in the same history entry, adding semicolons where + necessary to preserve syntactic correctness. The lliitthhiisstt shell option + causes the shell to save the command with embedded newlines instead of semicolons. See the description of the sshhoopptt builtin below under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS for information on setting and unsetting shell options. HHIISSTTOORRYY EEXXPPAANNSSIIOONN - The shell supports a history expansion feature that is similar to the - history expansion in ccsshh.. This section describes what syntax features - are available. This feature is enabled by default for interactive + The shell supports a history expansion feature that is similar to the + history expansion in ccsshh.. This section describes what syntax features + are available. This feature is enabled by default for interactive shells, and can be disabled using the ++HH option to the sseett builtin com- mand (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). Non-interactive shells do not perform history expansion by default. History expansions introduce words from the history list into the input - stream, making it easy to repeat commands, insert the arguments to a + stream, making it easy to repeat commands, insert the arguments to a previous command into the current input line, or fix errors in previous commands quickly. - History expansion is performed immediately after a complete line is - read, before the shell breaks it into words. It takes place in two - parts. The first is to determine which line from the history list to + History expansion is performed immediately after a complete line is + read, before the shell breaks it into words. It takes place in two + parts. The first is to determine which line from the history list to use during substitution. The second is to select portions of that line for inclusion into the current one. The line selected from the history - is the _e_v_e_n_t, and the portions of that line that are acted upon are - _w_o_r_d_s. Various _m_o_d_i_f_i_e_r_s are available to manipulate the selected + is the _e_v_e_n_t, and the portions of that line that are acted upon are + _w_o_r_d_s. Various _m_o_d_i_f_i_e_r_s are available to manipulate the selected words. The line is broken into words in the same fashion as when read- - ing input, so that several _m_e_t_a_c_h_a_r_a_c_t_e_r-separated words surrounded by - quotes are considered one word. History expansions are introduced by - the appearance of the history expansion character, which is !! by - default. Only backslash (\\) and single quotes can quote the history + ing input, so that several _m_e_t_a_c_h_a_r_a_c_t_e_r-separated words surrounded by + quotes are considered one word. History expansions are introduced by + the appearance of the history expansion character, which is !! by + default. Only backslash (\\) and single quotes can quote the history expansion character. - Several characters inhibit history expansion if found immediately fol- - lowing the history expansion character, even if it is unquoted: space, - tab, newline, carriage return, and ==. If the eexxttgglloobb shell option is + Several characters inhibit history expansion if found immediately fol- + lowing the history expansion character, even if it is unquoted: space, + tab, newline, carriage return, and ==. If the eexxttgglloobb shell option is enabled, (( will also inhibit expansion. - Several shell options settable with the sshhoopptt builtin may be used to - tailor the behavior of history expansion. If the hhiissttvveerriiffyy shell + Several shell options settable with the sshhoopptt builtin may be used to + tailor the behavior of history expansion. If the hhiissttvveerriiffyy shell option is enabled (see the description of the sshhoopptt builtin), and rreeaadd-- lliinnee is being used, history substitutions are not immediately passed to - the shell parser. Instead, the expanded line is reloaded into the + the shell parser. Instead, the expanded line is reloaded into the rreeaaddlliinnee editing buffer for further modification. If rreeaaddlliinnee is being used, and the hhiissttrreeeeddiitt shell option is enabled, a failed history sub- stitution will be reloaded into the rreeaaddlliinnee editing buffer for correc- - tion. The --pp option to the hhiissttoorryy builtin command may be used to see + tion. The --pp option to the hhiissttoorryy builtin command may be used to see what a history expansion will do before using it. The --ss option to the - hhiissttoorryy builtin may be used to add commands to the end of the history - list without actually executing them, so that they are available for + hhiissttoorryy builtin may be used to add commands to the end of the history + list without actually executing them, so that they are available for subsequent recall. - The shell allows control of the various characters used by the history + The shell allows control of the various characters used by the history expansion mechanism (see the description of hhiissttcchhaarrss above under SShheellll - VVaarriiaabblleess). The shell uses the history comment character to mark his- - tory timestamps when writing the history file. + VVaarriiaabblleess). EEvveenntt DDeessiiggnnaattoorrss An event designator is a reference to a command line entry in the his- @@ -3469,14 +3428,14 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS --pp Display rreeaaddlliinnee function names and bindings in such a way that they can be re-read. --PP List current rreeaaddlliinnee function names and bindings. - --ss Display rreeaaddlliinnee key sequences bound to macros and the - strings they output in such a way that they can be re- - read. - --SS Display rreeaaddlliinnee key sequences bound to macros and the - strings they output. - --vv Display rreeaaddlliinnee variable names and values in such a way + --vv Display rreeaaddlliinnee variable names and values in such a way that they can be re-read. --VV List current rreeaaddlliinnee variable names and values. + --ss Display rreeaaddlliinnee key sequences bound to macros and the + strings they output in such a way that they can be re- + read. + --SS Display rreeaaddlliinnee key sequences bound to macros and the + strings they output. --ff _f_i_l_e_n_a_m_e Read key bindings from _f_i_l_e_n_a_m_e. --qq _f_u_n_c_t_i_o_n @@ -3569,8 +3528,8 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS or no matches were generated. ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--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 _._._.] + _w_o_r_d_l_i_s_t] [--PP _p_r_e_f_i_x] [--SS _s_u_f_f_i_x] + [--XX _f_i_l_t_e_r_p_a_t] [--FF _f_u_n_c_t_i_o_n] [--CC _c_o_m_m_a_n_d] _n_a_m_e [_n_a_m_e _._._.] ccoommpplleettee --pprr [_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 @@ -3728,67 +3687,64 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS environment. 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 wwiillll nnoott rreemmoovvee tthhee rreeaaddoonnllyy aattttrriibbuuttee.. WWhheenn uusseedd - iinn aa ffuunnccttiioonn,, mmaakkeess eeaacchh _n_a_m_e llooccaall,, aass wwiitthh tthhee llooccaall command. - If a variable name is followed by =_v_a_l_u_e, the value of the vari- - able is set to _v_a_l_u_e. The return value is 0 unless an invalid - option is encountered, an attempt is made to define a function - using ``-f foo=bar'', an attempt is made to assign a value to a - readonly variable, an attempt is made to assign a value to an - array 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 readonly status for a read- - only variable, an attempt is made to turn off array status for - an array variable, or an attempt is made to display a non-exis- - tent function with --ff. - - ddiirrss [[++_n]] [[--_n]] [[--ccppllvv]] - 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 + the exception that ++aa may not be used to destroy an array vari- + able. When used in a function, makes each _n_a_m_e local, as with + the llooccaall command. If a variable name is followed by =_v_a_l_u_e, + the value of the variable is set to _v_a_l_u_e. The return value is + 0 unless an invalid option is encountered, an attempt is made to + define a function using ``-f foo=bar'', an attempt is made to + assign a value to a readonly variable, an attempt is made to + assign a value to an array 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 + --_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 + --ll Produces a longer listing; 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- + --vv Print the directory stack with one entry per line, pre- fixing each entry with its index in the stack. - The return value is 0 unless an invalid option is supplied or _n + 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 nnoorr --rr - iiss ssuupppplliieedd,, tthhee sshheellll''ss nnoottiioonn ooff tthhee _c_u_r_r_e_n_t _j_o_b iiss uusseedd.. IIff - tthhee --hh ooppttiioonn iiss ggiivveenn,, eeaacchh _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, each _j_o_b_s_p_e_c is removed from the table of + active jobs. 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 + 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. eecchhoo [--nneeEE] [_a_r_g ...] - Output the _a_r_gs, separated by spaces, followed by a newline. + 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 + 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: \\aa alert (bell) \\bb backspace @@ -3800,12 +3756,14 @@ 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) + \\_n_n_n the eight-bit character whose value is the octal value + _n_n_n (one to three octal digits) \\xx_H_H the eight-bit character whose value is the hexadecimal value _H_H (one or two hex digits) - eennaabbllee [--aa] [--ddnnppss] [--ff _f_i_l_e_n_a_m_e] [_n_a_m_e ...] + eennaabbllee [--aaddnnppss] [--ff _f_i_l_e_n_a_m_e] [_n_a_m_e ...] 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 @@ -3836,150 +3794,150 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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 - _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 - 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 - 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. + ning of the zeroth arg 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 as the + zeroth argument to the executed command. If _c_o_m_m_a_n_d cannot 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 file can- + not be executed. If _c_o_m_m_a_n_d is not specified, any redirections + take effect in the current shell, and the return status 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 + 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. - ffcc [--ee _e_n_a_m_e] [--llnnrr] [_f_i_r_s_t] [_l_a_s_t] + ffcc [--ee _e_n_a_m_e] [--nnllrr] [_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 + 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 + 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 + ified it is set to the previous command 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 - is given, the commands are listed on standard output. Other- - wise, the editor given by _e_n_a_m_e is invoked on a file containing - those commands. If _e_n_a_m_e is not given, the value of the FFCCEEDDIITT - variable is used, and the value of EEDDIITTOORR if FFCCEEDDIITT is not set. - If neither variable is set, _v_i is used. When editing is com- + The --nn option suppresses the command numbers when listing. The + --rr option reverses the order of the commands. If the --ll option + is given, the commands are listed on standard output. Other- + wise, the editor given by _e_n_a_m_e is invoked on a file containing + those commands. If _e_n_a_m_e is not given, the value of the FFCCEEDDIITT + variable is used, and the value of EEDDIITTOORR if FFCCEEDDIITT is not set. + If neither variable is set, _v_i is used. When editing is com- 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 + 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. - 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 - lines out of range. If the --ee option is supplied, the return + 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 + lines out of range. If the --ee option is supplied, the return value is the value of the last command executed or failure if an error occurs with the temporary file of commands. If the second - form is used, the return status is that of the command re-exe- - cuted, unless _c_m_d does not specify a valid history line, in + form is used, the return status is that of the command re-exe- + cuted, unless _c_m_d does not specify a valid history line, in which case ffcc returns failure. ffgg [_j_o_b_s_p_e_c] - Resume _j_o_b_s_p_e_c in the foreground, and make it the current job. + Resume _j_o_b_s_p_e_c in the foreground, and make it the current job. If _j_o_b_s_p_e_c is not present, the shell's notion of the _c_u_r_r_e_n_t _j_o_b - is used. The return value is that of the command placed into - the foreground, or failure if run when job control is disabled + is used. The return value is that of the command placed into + the foreground, or failure if run when job control is disabled or, when run with job control enabled, if _j_o_b_s_p_e_c does not spec- - ify a valid job or _j_o_b_s_p_e_c specifies a job that was started + ify a valid job or _j_o_b_s_p_e_c specifies a job that was started without job control. ggeettooppttss _o_p_t_s_t_r_i_n_g _n_a_m_e [_a_r_g_s] - ggeettooppttss is used by shell procedures to parse positional parame- - ters. _o_p_t_s_t_r_i_n_g contains the option characters to be recog- - nized; if a character is followed by a colon, the option is - expected to have an argument, which should be separated from it - by white space. The colon and question mark characters may not - be used as option characters. Each time it is invoked, ggeettooppttss - places the next option in the shell variable _n_a_m_e, initializing + ggeettooppttss is used by shell procedures to parse positional parame- + ters. _o_p_t_s_t_r_i_n_g contains the option characters to be recog- + nized; if a character is followed by a colon, the option is + expected to have an argument, which should be separated from it + by white space. The colon and question mark characters may not + be used as option characters. Each time it is invoked, ggeettooppttss + places the next option in the shell variable _n_a_m_e, initializing _n_a_m_e if it does not exist, and the index of the next argument to be processed into the variable OOPPTTIINNDD. OOPPTTIINNDD is initialized to - 1 each time the shell or a shell script is invoked. When an - option requires an argument, ggeettooppttss places that argument into - the variable OOPPTTAARRGG. The shell does not reset OOPPTTIINNDD automati- - cally; it must be manually reset between multiple calls to + 1 each time the shell or a shell script is invoked. When an + option requires an argument, ggeettooppttss places that argument into + the variable OOPPTTAARRGG. The shell does not reset OOPPTTIINNDD automati- + cally; it must be manually reset between multiple calls to ggeettooppttss within the same shell invocation if a new set of parame- ters is to be used. - When the end of options is encountered, ggeettooppttss exits with a - return value greater than zero. OOPPTTIINNDD is set to the index of + When the end of options is encountered, ggeettooppttss exits with a + return value greater than zero. OOPPTTIINNDD is set to the index of the first non-option argument, and nnaammee is set to ?. - ggeettooppttss normally parses the positional parameters, but if more + ggeettooppttss normally parses the positional parameters, but if more arguments are given in _a_r_g_s, ggeettooppttss parses those instead. - 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 - options or missing option arguments are encountered. If the - variable OOPPTTEERRRR is set to 0, no error messages will be dis- + 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 + 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. If an invalid option is seen, ggeettooppttss places ? into _n_a_m_e and, if - not silent, prints an error message and unsets OOPPTTAARRGG. If - ggeettooppttss is silent, the option character found is placed in + not silent, prints an error message and unsets OOPPTTAARRGG. If + ggeettooppttss is silent, the option character found is placed in OOPPTTAARRGG and no diagnostic message is printed. - If a required argument is not found, and ggeettooppttss is not silent, - a question mark (??) is placed in _n_a_m_e, OOPPTTAARRGG is unset, and a - diagnostic message is printed. If ggeettooppttss is silent, then a - colon (::) is placed in _n_a_m_e and OOPPTTAARRGG is set to the option + If a required argument is not found, and ggeettooppttss is not silent, + a question mark (??) is placed in _n_a_m_e, OOPPTTAARRGG is unset, and a + diagnostic message is printed. If ggeettooppttss is silent, then a + colon (::) is placed in _n_a_m_e and OOPPTTAARRGG is set to the option character found. - ggeettooppttss returns true if an option, specified or unspecified, is + ggeettooppttss returns true if an option, specified or unspecified, is found. It returns false if the end of options is encountered or an error occurs. hhaasshh [--llrr] [--pp _f_i_l_e_n_a_m_e] [--ddtt] [_n_a_m_e] - For each _n_a_m_e, the full file name of the command is determined + For each _n_a_m_e, the full file name of the command is determined by searching the directories in $$PPAATTHH and remembered. 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 causes - the shell to forget all remembered locations. The --dd option + 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 which each - _n_a_m_e corresponds is printed. If multiple _n_a_m_e arguments are - supplied with --tt, the _n_a_m_e is printed before the hashed full + If the --tt option is supplied, the full pathname to which each + _n_a_m_e corresponds is printed. If multiple _n_a_m_e arguments are + supplied with --tt, the _n_a_m_e is printed before the hashed full pathname. The --ll option causes output to be displayed in a for- - mat that may be reused as input. If no arguments are given, or + mat that may be reused as input. If no arguments are given, or if only --ll is supplied, information about remembered commands is - printed. The return status is true unless a _n_a_m_e is not found + printed. The return status is true unless a _n_a_m_e is not found or an invalid option is supplied. hheellpp [--ss] [_p_a_t_t_e_r_n] - Display helpful information about builtin commands. If _p_a_t_t_e_r_n - is specified, hheellpp gives detailed help on all commands matching - _p_a_t_t_e_r_n; otherwise help for all the builtins and shell control - structures is printed. The --ss option restricts the information - displayed to a short usage synopsis. The return status is 0 + Display helpful information about builtin commands. If _p_a_t_t_e_r_n + is specified, hheellpp gives detailed help on all commands matching + _p_a_t_t_e_r_n; otherwise help for all the builtins and shell control + structures is printed. The --ss option restricts the information + displayed to a short usage synopsis. The return status is 0 unless no command matches _p_a_t_t_e_r_n. hhiissttoorryy [[_n]] @@ -3990,193 +3948,189 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS hhiissttoorryy --ss _a_r_g [_a_r_g _._._.] With no options, display the command history list with line num- bers. Lines listed with a ** have been modified. An argument of - _n lists only the last _n lines. If the shell variable HHIISSTTTTIIMMEE-- - FFOORRMMAATT is set and not null, it is used as a format string for - _s_t_r_f_t_i_m_e(3) to display the time stamp associated with each dis- - played history entry. No intervening blank is printed between - the formatted time stamp and the history line. If _f_i_l_e_n_a_m_e is - supplied, it is used as the name of the history file; if not, - the value of HHIISSTTFFIILLEE is used. Options, if supplied, have the + _n lists only the last _n lines. If the shell variable HHIISSTTTTIIMMEE-- + FFOORRMMAATT is set and not null, it is used as a format string for + _s_t_r_f_t_i_m_e(3) to display the time stamp associated with each dis- + played history entry. No intervening blank is printed between + the formatted time stamp and the history line. If _f_i_l_e_n_a_m_e is + supplied, it is used as the name of the history file; if not, + the value of HHIISSTTFFIILLEE is used. Options, if supplied, have the following meanings: --cc Clear the history list by deleting all the entries. --dd _o_f_f_s_e_t Delete the history entry at position _o_f_f_s_e_t. - --aa Append the ``new'' history lines (history lines entered - since the beginning of the current bbaasshh session) to the + --aa Append the ``new'' history lines (history lines entered + since the beginning of the current bbaasshh session) to the history file. - --nn Read the history lines not already read from the history - file into the current history list. These are lines - appended to the history file since the beginning of the + --nn Read the history lines not already read from the history + 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- + --ww Write the current history to the history file, overwrit- ing 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 + --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 quoted to disable normal history expansion. - --ss Store the _a_r_g_s in the history list as a single entry. - The last command in the history list is removed before + --ss Store the _a_r_g_s in the history list as a single entry. + The last command in the history list is removed before the _a_r_g_s are added. If the HHIISSTTTTIIMMEEFFOORRMMAATT is set, the time stamp information associ- - ated with each history entry is written to the history file, - marked with the history comment character. When the history - file is read, lines beginning with the history comment character - followed immediately by a digit are interpreted as timestamps - for the previous history line. The return value is 0 unless an - invalid option is encountered, an error occurs while reading or - writing the history file, an invalid _o_f_f_s_e_t is supplied as an - argument to --dd, or the history expansion supplied as an argument - to --pp fails. + ated with each history entry is written to the history file. + The return value is 0 unless an invalid option is encountered, + an error occurs while reading or writing the history file, an + invalid _o_f_f_s_e_t is supplied as an argument to --dd, or the history + expansion supplied as an argument to --pp fails. jjoobbss [--llnnpprrss] [ _j_o_b_s_p_e_c ... ] jjoobbss --xx _c_o_m_m_a_n_d [ _a_r_g_s ... ] The first form lists the active jobs. The options have the fol- lowing meanings: --ll List process IDs in addition to the normal information. - --pp List only the process ID of the job's process group + --pp List only the process ID of the job's process group leader. - --nn Display information only about jobs that have changed - status since the user was last notified of their status. + --nn Display information only about jobs that have changed + status since the user was last notified of their status. --rr Restrict output to running jobs. --ss Restrict output to 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 + 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 encountered or an invalid _j_o_b_s_p_e_c is supplied. If the --xx option is supplied, jjoobbss replaces any _j_o_b_s_p_e_c found in - _c_o_m_m_a_n_d or _a_r_g_s with the corresponding process group ID, and + _c_o_m_m_a_n_d or _a_r_g_s with the corresponding process group ID, and executes _c_o_m_m_a_n_d passing it _a_r_g_s, returning its exit status. kkiillll [--ss _s_i_g_s_p_e_c | --nn _s_i_g_n_u_m | --_s_i_g_s_p_e_c] [_p_i_d | _j_o_b_s_p_e_c] ... kkiillll --ll [_s_i_g_s_p_e_c | _e_x_i_t___s_t_a_t_u_s] - Send the signal named by _s_i_g_s_p_e_c or _s_i_g_n_u_m to the processes - named by _p_i_d or _j_o_b_s_p_e_c. _s_i_g_s_p_e_c is either a case-insensitive - signal name such as SSIIGGKKIILLLL (with or without the SSIIGG prefix) or - a signal number; _s_i_g_n_u_m is a signal number. If _s_i_g_s_p_e_c is not - present, then SSIIGGTTEERRMM is assumed. An argument of --ll lists the - signal names. If any arguments are supplied when --ll is given, - the names of the signals corresponding to the arguments are + Send the signal named by _s_i_g_s_p_e_c or _s_i_g_n_u_m to the processes + named by _p_i_d or _j_o_b_s_p_e_c. _s_i_g_s_p_e_c is either a case-insensitive + signal name such as SSIIGGKKIILLLL (with or without the SSIIGG prefix) or + a signal number; _s_i_g_n_u_m is a signal number. If _s_i_g_s_p_e_c is not + present, then SSIIGGTTEERRMM is assumed. An argument of --ll lists the + signal names. If any arguments are supplied when --ll is given, + the names of the signals corresponding to the arguments are listed, and the return status is 0. The _e_x_i_t___s_t_a_t_u_s argument to - --ll is a number specifying either a signal number or the exit - status of a process terminated by a signal. kkiillll returns true - if at least one signal was successfully sent, or false if an + --ll is a number specifying either a signal number or the exit + status of a process terminated by a signal. kkiillll returns true + if at least one signal was successfully sent, or false if an error occurs or an invalid option is encountered. lleett _a_r_g [_a_r_g ...] Each _a_r_g is an arithmetic expression to be evaluated (see AARRIITTHH-- - MMEETTIICC EEVVAALLUUAATTIIOONN). If the last _a_r_g evaluates to 0, lleett returns + MMEETTIICC EEVVAALLUUAATTIIOONN). If the last _a_r_g evaluates to 0, lleett returns 1; 0 is returned otherwise. llooccaall [_o_p_t_i_o_n] [_n_a_m_e[=_v_a_l_u_e] ...] - For each argument, a local variable named _n_a_m_e is created, and - assigned _v_a_l_u_e. The _o_p_t_i_o_n can be any of the options accepted + For each argument, a local variable named _n_a_m_e is created, and + assigned _v_a_l_u_e. The _o_p_t_i_o_n can be any of the options accepted by ddeeccllaarree. When llooccaall is used within a function, it causes the - variable _n_a_m_e to have a visible scope restricted to that func- + variable _n_a_m_e to have a visible scope restricted to that func- tion and its children. With no operands, llooccaall writes a list of - local variables to the standard output. It is an error to use + local variables to the standard output. It is an error to use llooccaall when not within a function. The return status is 0 unless - llooccaall is used outside a function, an invalid _n_a_m_e is supplied, + llooccaall is used outside a function, an invalid _n_a_m_e is supplied, or _n_a_m_e is a readonly variable. llooggoouutt Exit a login shell. ppooppdd [-nn] [+_n] [-_n] - Removes entries from the directory stack. With no arguments, - removes the top directory from the stack, and performs a ccdd to + Removes entries from the directory stack. With no arguments, + removes the top directory from the stack, and performs a ccdd to the new top directory. Arguments, if supplied, have the follow- ing meanings: - --nn Suppresses the normal change of directory when removing - directories from the stack, so that only the stack is - manipulated. - ++_n Removes the _nth entry counting from the left of the list - shown by ddiirrss, starting with zero. For example: ``popd + ++_n Removes the _nth entry counting from the left of the list + shown by ddiirrss, starting with zero. For example: ``popd +0'' removes the first directory, ``popd +1'' the second. --_n Removes the _nth entry counting from the right of the list - shown by ddiirrss, starting with zero. For example: ``popd - -0'' removes the last directory, ``popd -1'' the next to + shown by ddiirrss, starting with zero. For example: ``popd + -0'' removes the last directory, ``popd -1'' the next to last. + --nn Suppresses the normal change of directory when removing + directories from the stack, so that only the stack is + manipulated. - If the ppooppdd command is successful, a ddiirrss is performed as well, - and the return status is 0. ppooppdd returns false if an invalid + If the ppooppdd command is successful, a ddiirrss is performed as well, + and the return status is 0. ppooppdd returns false if an invalid option is encountered, the directory stack is empty, a non-exis- tent directory stack entry is specified, or the directory change fails. pprriinnttff [--vv _v_a_r] _f_o_r_m_a_t [_a_r_g_u_m_e_n_t_s] - Write the formatted _a_r_g_u_m_e_n_t_s to the standard output under the - control of the _f_o_r_m_a_t. The _f_o_r_m_a_t is a character string which - contains three types of objects: plain characters, which are - simply copied to standard output, character escape sequences, - which are converted and copied to the standard output, and for- - mat specifications, each of which causes printing of the next + Write the formatted _a_r_g_u_m_e_n_t_s to the standard output under the + control of the _f_o_r_m_a_t. The _f_o_r_m_a_t is a character string which + contains three types of objects: plain characters, which are + simply copied to standard output, character escape sequences, + which are converted and copied to the standard output, and for- + mat specifications, each of which causes printing of the next successive _a_r_g_u_m_e_n_t. In addition to the standard _p_r_i_n_t_f(1) for- - mats, %%bb causes pprriinnttff to expand backslash escape sequences in - the corresponding _a_r_g_u_m_e_n_t (except that \\cc terminates output, + mats, %%bb causes pprriinnttff to expand backslash escape sequences in + the corresponding _a_r_g_u_m_e_n_t (except that \\cc terminates output, backslashes in \\'', \\"", and \\?? are not removed, and octal escapes - beginning with \\00 may contain up to four digits), and %%qq causes + beginning with \\00 may contain up to four digits), and %%qq causes pprriinnttff to output the corresponding _a_r_g_u_m_e_n_t in a format that can be reused as shell input. - The --vv option causes the output to be assigned to the variable + The --vv option causes the output to be assigned to the variable _v_a_r rather than being printed to the standard output. - 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 + ppuusshhdd [--nn] [+_n] [-_n] + 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 - 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. + --nn Suppresses the normal change of directory when adding + directories to the stack, so that only the stack is + manipulated. _d_i_r Adds _d_i_r to the directory stack at the top, making it the new current working directory. 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 - fails. With the second form, ppuusshhdd returns 0 unless the direc- - tory stack is empty, a non-existent directory stack element is - specified, or the directory change to the specified new current + If the first form is used, ppuusshhdd returns 0 unless the cd to _d_i_r + fails. With the second form, ppuusshhdd returns 0 unless the direc- + tory stack is empty, a non-existent directory stack element is + specified, or the directory change to the specified new current directory fails. ppwwdd [--LLPP] - Print the absolute pathname of the current working directory. + Print the absolute pathname of the current working directory. The pathname printed contains no symbolic links if the --PP option is supplied or the --oo pphhyyssiiccaall option to the sseett builtin command - is enabled. If the --LL option is used, the pathname printed may - contain symbolic links. The return status is 0 unless an error - occurs while reading the name of the current directory or an + is enabled. If the --LL option is used, the pathname printed may + contain symbolic links. The return status is 0 unless an error + occurs while reading the name of the current directory or an invalid option is supplied. - rreeaadd [--eerrss] [--aa _a_n_a_m_e] [--dd _d_e_l_i_m] [--nn _n_c_h_a_r_s] [--pp _p_r_o_m_p_t] [--tt _t_i_m_e_o_u_t] - [--uu _f_d] [_n_a_m_e ...] - One line is read from the standard input, or from the file - descriptor _f_d supplied as an argument to the --uu option, and the + rreeaadd [--eerrss] [--uu _f_d] [--tt _t_i_m_e_o_u_t] [--aa _a_n_a_m_e] [--pp _p_r_o_m_p_t] [--nn _n_c_h_a_r_s] [--dd + _d_e_l_i_m] [_n_a_m_e ...] + One line is read from the standard input, or from the file + descriptor _f_d supplied as an argument to the --uu option, and the first word is assigned to the first _n_a_m_e, the second word to the - second _n_a_m_e, and so on, with leftover words and their interven- - ing separators assigned to the last _n_a_m_e. If there are fewer + second _n_a_m_e, and so on, with leftover words and their interven- + 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- + 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: --aa _a_n_a_m_e The words are assigned to sequential indices of the array @@ -4184,101 +4138,100 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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. --nn _n_c_h_a_r_s - rreeaadd returns after reading _n_c_h_a_r_s characters rather than + rreeaadd returns after reading _n_c_h_a_r_s characters rather than waiting for a complete line of input. --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. This - option has no effect if rreeaadd is not reading input from + 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. This + option has no effect if rreeaadd is not reading input from the terminal or a pipe. --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, or an invalid file descriptor is + able RREEPPLLYY. The return code is zero, unless end-of-file is + encountered, rreeaadd times out, or an invalid file descriptor is supplied as the argument to --uu. rreeaaddoonnllyy [--aappff] [_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 + 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 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 vari- - able 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 + _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 vari- + able 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 func- tion. 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 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 + _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. + executed before execution resumes after the function or script. - sseett [----aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [--oo _o_p_t_i_o_n] [_a_r_g ...] - sseett [++aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [++oo _o_p_t_i_o_n] [_a_r_g ...] - Without options, the name and value of each shell variable are + sseett [----aabbeeffhhkkmmnnppttuuvvxxBBCCHHPP] [--oo _o_p_t_i_o_n] [_a_r_g ...] + 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 the options are processed are treated - as values for the positional parameters and are assigned, in + 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 the options are processed are treated + as values for the positional parameters and are assigned, in order, to $$11, $$22, ...... $$_n. Options, if specified, have the fol- lowing 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 _s_i_m_p_l_e _c_o_m_m_a_n_d (see SSHHEELLLL GGRRAAMMMMAARR + --ee Exit immediately if a _s_i_m_p_l_e _c_o_m_m_a_n_d (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 in an iiff statement, part of a &&&& or |||| - list, any command in a pipeline but the last, or if the - command's return value is being inverted via !!. A trap - on EERRRR, if set, is executed before the shell exits. + exit if the command that fails 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 &&&& or |||| + list, or if the command's return value is being inverted + via !!. A trap on EERRRR, if set, is executed before the + shell exits. --ff Disable pathname expansion. - --hh Remember the location of commands as they are looked up + --hh Remember the location of commands as they are looked up for execution. This is enabled by default. - --kk All arguments in the form of assignment statements are - placed in the environment for a command, not just those + --kk All arguments in the form of assignment statements are + placed in the environment for a command, not just those 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- + --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. --nn Read commands but do not execute them. This may be used - to check a shell script for syntax errors. This is + to check a shell script for syntax errors. This is ignored by interactive shells. --oo _o_p_t_i_o_n_-_n_a_m_e The _o_p_t_i_o_n_-_n_a_m_e can be one of the following: @@ -4286,7 +4239,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS Same as --aa. bbrraacceeeexxppaanndd Same as --BB. - eemmaaccss Use an emacs-style command line editing inter- + eemmaaccss Use an emacs-style command line editing inter- face. This is enabled by default when the shell is interactive, unless the shell is started with the ----nnooeeddiittiinngg option. @@ -4302,8 +4255,8 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS HHIISSTTOORRYY. This option is on by default in inter- active shells. iiggnnoorreeeeooff - The effect is as if the shell command - ``IGNOREEOF=10'' had been executed (see SShheellll + The effect is as if the shell command + ``IGNOREEOF=10'' had been executed (see SShheellll VVaarriiaabblleess above). kkeeyywwoorrdd Same as --kk. mmoonniittoorr Same as --mm. @@ -4317,13 +4270,13 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS pphhyyssiiccaall Same as --PP. ppiippeeffaaiill - If set, the return value of a pipeline is the - value of the last (rightmost) command to exit - with a non-zero status, or zero if all commands - in the pipeline exit successfully. This option + If set, the return value of a pipeline is the + value of the last (rightmost) command to exit + with a non-zero status, or zero if all commands + in the pipeline exit successfully. This option is disabled by default. - ppoossiixx Change the behavior of bbaasshh where the default - operation differs from the POSIX standard to + 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). pprriivviilleeggeedd Same as --pp. @@ -4331,134 +4284,124 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS vvii Use a vi-style command line editing interface. xxttrraaccee Same as --xx. If --oo is supplied with no _o_p_t_i_o_n_-_n_a_m_e, the values of the - current options are printed. If ++oo is supplied with no - _o_p_t_i_o_n_-_n_a_m_e, a series of sseett commands to recreate the - current option settings is displayed on the standard + current options are printed. If ++oo is supplied with no + _o_p_t_i_o_n_-_n_a_m_e, a series of sseett commands to recreate the + current option settings is displayed on the standard output. - --pp Turn on _p_r_i_v_i_l_e_g_e_d mode. In this mode, the $$EENNVV and - $$BBAASSHH__EENNVV files are not processed, shell functions are - not inherited from the environment, and the SSHHEELLLLOOPPTTSS - variable, if it appears in the environment, is ignored. - 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, these actions are taken and the + --pp Turn on _p_r_i_v_i_l_e_g_e_d mode. In this mode, the $$EENNVV and + $$BBAASSHH__EENNVV files are not processed, shell functions are + not inherited from the environment, and the SSHHEELLLLOOPPTTSS + variable, if it appears in the environment, is ignored. + 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, these actions are taken and the effective user id is set to the real user id. If the --pp - option is supplied at startup, the effective user id is + option is supplied at startup, the effective user id is not reset. Turning this option off causes the effective - user and group ids to be set to the real user and group + user and group ids to be set to the real user and group ids. --tt Exit after reading and executing one command. --uu Treat unset variables as an error when performing param- - eter expansion. If expansion is attempted on an unset + eter expansion. If expansion is attempted on an unset variable, the shell prints an error message, and, if not interactive, exits with a non-zero status. --vv Print shell input lines as they are read. - --xx After expanding each _s_i_m_p_l_e _c_o_m_m_a_n_d, ffoorr command, ccaassee + --xx After expanding each _s_i_m_p_l_e _c_o_m_m_a_n_d, ffoorr command, ccaassee command, sseelleecctt command, or arithmetic ffoorr command, dis- - play the expanded value of PPSS44, followed by the command + play the expanded value of PPSS44, followed by the command and its expanded arguments or associated word list. - --BB The shell performs brace expansion (see BBrraaccee EExxppaannssiioonn + --BB The shell performs brace expansion (see BBrraaccee EExxppaannssiioonn above). This is on by default. - --CC If set, bbaasshh does not overwrite an existing file with - the >>, >>&&, and <<>> redirection operators. This may be + --CC If set, bbaasshh does not overwrite an existing file with + the >>, >>&&, and <<>> redirection operators. This may be overridden when creating output files by using the redi- rection operator >>|| instead of >>. --EE If set, any trap on EERRRR is inherited by shell functions, - command substitutions, and commands executed in a sub- - shell environment. The EERRRR trap is normally not inher- + command substitutions, and commands executed in a sub- + shell environment. The EERRRR trap is normally not inher- 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 - executing commands such as ccdd that change the current + --PP If set, the shell does not follow 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 - chain of directories when performing commands which + chain of directories when performing commands which change the current directory. - --TT If set, any traps on DDEEBBUUGG and RREETTUURRNN are inherited by - shell functions, command substitutions, and commands - executed in a subshell environment. The DDEEBBUUGG and + --TT If set, any traps on DDEEBBUUGG and RREETTUURRNN are inherited by + shell functions, command substitutions, and commands + executed in a subshell environment. The DDEEBBUUGG and RREETTUURRNN traps are normally not inherited in such cases. - ---- If no arguments follow this option, then the positional + ---- If no arguments follow this option, then the positional parameters are unset. Otherwise, the positional parame- - ters are set to the _a_r_gs, even if some of them begin + ters are set to the _a_r_gs, even if some of them begin with a --. - -- Signal the end of options, cause all remaining _a_r_gs to + -- Signal the end of options, cause all remaining _a_r_gs to be assigned to the positional parameters. The --xx and --vv options are turned off. If there are no _a_r_gs, the posi- tional parameters remain unchanged. - The options are off by default unless otherwise noted. Using + - rather than - causes these options to be turned off. The - options can also be specified as arguments to an invocation of - the shell. The current set of options may be found in $$--. The + The options are off by default unless otherwise noted. Using + + rather than - causes these options to be turned off. The + options can also be specified as arguments to an invocation of + the shell. The current set of options may be found in $$--. The return status is always true unless an invalid option is encoun- tered. sshhiifftt [_n] - The positional parameters from _n+1 ... are renamed to $$11 ........ - Parameters represented by the numbers $$## down to $$##-_n+1 are - unset. _n must be a non-negative number less than or equal to - $$##. If _n is 0, no parameters are changed. If _n is not given, - it is assumed to be 1. If _n is greater than $$##, the positional - parameters are not changed. The return status is greater than + The positional parameters from _n+1 ... are renamed to $$11 ........ + Parameters represented by the numbers $$## down to $$##-_n+1 are + unset. _n must be a non-negative number less than or equal to + $$##. If _n is 0, no parameters are changed. If _n is not given, + it is assumed to be 1. If _n is greater than $$##, the positional + parameters are not changed. The return status is greater than 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- + 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: --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 + --qq Suppresses normal output (quiet mode); the return status indicates whether the _o_p_t_n_a_m_e is set or unset. If multi- - ple _o_p_t_n_a_m_e arguments are given with --qq, the return sta- - tus is zero if all _o_p_t_n_a_m_e_s are enabled; non-zero other- + ple _o_p_t_n_a_m_e arguments are given with --qq, the return sta- + tus is zero if all _o_p_t_n_a_m_e_s are enabled; non-zero other- wise. - --oo Restricts the values of _o_p_t_n_a_m_e to be those defined for + --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- + 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 + tively. 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 - options, the return status is zero unless an _o_p_t_n_a_m_e is not a + 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 + options, the return status is zero unless an _o_p_t_n_a_m_e is not a valid shell option. The list of sshhoopptt options is: - aauuttooccdd If set, a command name that is the name of a directory - is executed as if it were the argument to the ccdd com- - mand. This option is only used by interactive shells. ccddaabbllee__vvaarrss - If set, an argument to the ccdd builtin command that is - not a directory is assumed to be the name of a variable + If set, an argument to the ccdd builtin command that is + not a directory is assumed to be the name of a variable whose value is the directory to change to. ccddssppeellll If set, minor errors in the spelling of a directory com- - ponent in a ccdd command will be corrected. The errors + 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- - mand proceeds. This option is only used by interactive + ter, and one character too many. If a correction is + found, the corrected file name is printed, and the com- + mand proceeds. This option is only used by interactive shells. cchheecckkhhaasshh If set, bbaasshh checks that a command found in the hash ta- - ble exists before trying to execute it. If a hashed - command no longer exists, a normal path search is per- + ble exists before trying to execute it. If a hashed + command no longer exists, a normal path search is per- formed. - cchheecckkjjoobbss - If set, bash lists the status of any stopped and running - jobs before exiting an interactive shell. If any jobs - are running, this causes the exit to be deferred until a - second exit is attempted without an intervening command - (see JJOOBB CCOONNTTRROOLL above). The shell always postpones - exiting if any jobs are stopped. cchheecckkwwiinnssiizzee If set, bbaasshh checks the window size after each command and, if necessary, updates the values of LLIINNEESS and CCOOLL-- @@ -4697,10 +4640,10 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS _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. Signals ignored upon entry to the shell cannot - be trapped or reset. Trapped signals that are not being ignored - are reset to their original values in a child process when it is - created. The return status is false if any _s_i_g_s_p_e_c is invalid; - otherwise ttrraapp returns true. + be trapped or reset. Trapped signals are reset to their origi- + nal values in a child process when it is created. The return + status is false if any _s_i_g_s_p_e_c is invalid; otherwise ttrraapp + returns true. ttyyppee [--aaffttppPP] _n_a_m_e [_n_a_m_e ...] With no options, indicate how each _n_a_m_e would be interpreted if @@ -4743,8 +4686,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS --cc The maximum size of core files created --dd The maximum size of a process's data segment --ee The maximum scheduling priority ("nice") - --ff The maximum size of files written by the shell and its - children + --ff The maximum size of files created by the shell --ii The maximum number of pending signals --ll The maximum size that may be locked into memory --mm The maximum resident set size @@ -4755,64 +4697,64 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS --rr The maximum real-time scheduling priority --ss The maximum stack size --tt The maximum amount of cpu time in seconds - --uu The maximum number of processes available to a single + --uu The maximum number of processes available to a single user - --vv The maximum amount of virtual memory available to the + --vv The maximum amount of virtual memory available to the shell --xx The maximum number of file locks 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 --nn and --uu, which are unscaled values. The return status is - 0 unless an invalid option or argument is supplied, or an error + 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 --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. 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 - a digit, it is interpreted as an octal number; otherwise it is - interpreted as a symbolic mode mask similar to that accepted by - _c_h_m_o_d(1). If _m_o_d_e is omitted, the current value of the mask is - printed. The --SS option causes the mask to be printed in sym- - bolic form; the default output is an octal number. If the --pp + a digit, it is interpreted as an octal number; otherwise it is + interpreted as a symbolic mode mask similar to that accepted by + _c_h_m_o_d(1). If _m_o_d_e is omitted, the current value of the mask is + printed. The --SS option causes the mask to be printed in sym- + bolic form; the default output is an octal number. If the --pp option is supplied, and _m_o_d_e is omitted, the output is in a form that may be reused as input. The return status is 0 if the mode - was successfully changed or if no _m_o_d_e argument was supplied, + was successfully changed or if no _m_o_d_e argument was supplied, and false otherwise. uunnaalliiaass [-aa] [_n_a_m_e ...] - Remove each _n_a_m_e from the list of defined aliases. If --aa is - supplied, all alias definitions are removed. The return value + Remove each _n_a_m_e from the list of defined aliases. If --aa is + 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 ...] - For each _n_a_m_e, remove the corresponding variable or function. + 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 - 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 RRAANNDDOOMM, SSEECCOONNDDSS, LLIINNEENNOO, HHIISSTTCCMMDD, + refers to a shell variable. 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 RRAANNDDOOMM, SSEECCOONNDDSS, LLIINNEENNOO, HHIISSTTCCMMDD, FFUUNNCCNNAAMMEE, GGRROOUUPPSS, or DDIIRRSSTTAACCKK are unset, they lose their special - properties, even if they are subsequently reset. The exit sta- + properties, even if they are subsequently reset. The exit sta- tus 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 - 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 + Wait for each specified process and return its termination sta- + tus. 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. 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 @@ -4821,16 +4763,16 @@ RREESSTTRRIICCTTEEDD SSHHEELLLL +o specifying command names containing // - +o specifying a file name containing a // as an argument to the .. + +o specifying a file name 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- @@ -4839,10 +4781,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 @@ -4852,14 +4794,14 @@ 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_- + _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 _s_h(1), _k_s_h(1), _c_s_h(1) _e_m_a_c_s(1), _v_i(1) @@ -4875,7 +4817,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 @@ -4889,14 +4831,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_/_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: @@ -4907,7 +4849,7 @@ 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 @@ -4924,20 +4866,20 @@ 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. - Commands inside of $$((...)) command substitution are not parsed until - substitution is attempted. This will delay error reporting until some + Commands inside of $$((...)) command substitution are not parsed until + substitution is attempted. This will delay error reporting until some time after the command is entered. For example, unmatched parentheses, - even inside shell comments, will result in error messages while the + even inside shell comments, will result in error messages while the construct is being read. Array variables may not (yet) be exported. -GNU Bash-3.2 2007 January 12 BASH(1) +GNU Bash-3.2 2006 Jan 26 BASH(1) diff --git a/doc/bash.1 b/doc/bash.1 index cbcd50148..baab3772c 100644 --- a/doc/bash.1 +++ b/doc/bash.1 @@ -1,4 +1,4 @@ -.\" +\" .\" MAN PAGE COMMENTS to .\" .\" Chet Ramey @@ -6,12 +6,12 @@ .\" Case Western Reserve University .\" chet@po.cwru.edu .\" -.\" Last Change: Fri Jan 12 16:29:22 EST 2007 +.\" Last Change: Thu Jan 26 09:04:43 EST 2006 .\" .\" bash_builtins, strip all but Built-Ins section .if \n(zZ=1 .ig zZ .if \n(zY=1 .ig zY -.TH BASH 1 "2007 January 12" "GNU Bash-3.2" +.TH BASH 1 "2006 Jan 26" "GNU Bash-3.2" .\" .\" There's some problem with having a `@' .\" in a tagged paragraph with the BSD man macros. @@ -51,8 +51,8 @@ bash \- GNU Bourne-Again SHell [options] [file] .SH COPYRIGHT -.if n Bash is Copyright (C) 1989-2007 by the Free Software Foundation, Inc. -.if t Bash is Copyright \(co 1989-2007 by the Free Software Foundation, Inc. +.if n Bash is Copyright (C) 1989-2005 by the Free Software Foundation, Inc. +.if t Bash is Copyright \(co 1989-2005 by the Free Software Foundation, Inc. .SH DESCRIPTION .B Bash is an \fBsh\fR-compatible command language interpreter that @@ -809,10 +809,10 @@ as for pathname expansion (see .B Pathname Expansion below). The \fIword\fP is expanded using tilde -expansion, parameter and variable expansion, arithmetic substitution, +expansion, parameter and variable expansion, arithmetic substituion, command substitution, process substitution and quote removal. Each \fIpattern\fP examined is expanded using tilde -expansion, parameter and variable expansion, arithmetic substitution, +expansion, parameter and variable expansion, arithmetic substituion, command substitution, and process substitution. If the shell option .B nocasematch @@ -1245,11 +1245,6 @@ The following variables are set by the shell: Expands to the full file name used to invoke this instance of .BR bash . .TP -.B BASHPID -Expands to the process id of the current bash process. -This differs from \fB$$\fP under certain circumstances, such as subshells -that do not require bash to be re-initialized. -.TP .B BASH_ARGC An array variable whose values are the number of parameters in each frame of the current bash execution call stack. @@ -1351,10 +1346,6 @@ This variable is available only in shell functions invoked by the programmable completion facilities (see \fBProgrammable Completion\fP below). .TP -.B COMP_KEY -The key (or final key of a key sequence) used to invoke the current -completion function. -.TP .B COMP_LINE The current command line. This variable is available only in shell functions and external @@ -1372,20 +1363,6 @@ commands invoked by the programmable completion facilities (see \fBProgrammable Completion\fP below). .TP -.B COMP_TYPE -Set to an integer value corresponding to the type of completion attempted -that caused a completion function to be called: -\fITAB\fP, for normal completion, -\fI?\fP, for listing completions after successive tabs, -\fI!\fP, for listing alternatives on partial word completion, -\fI@\fP, to list completions if the word is not unmodified, -or -\fI%\fP, for menu completion. -This variable is available only in shell functions and external -commands invoked by the -programmable completion facilities (see \fBProgrammable Completion\fP -below). -.TP .B COMP_WORDBREAKS The set of characters that the Readline library treats as word separators when performing word completion. @@ -1398,8 +1375,6 @@ subsequently reset. .B COMP_WORDS An array variable (see \fBArrays\fP below) consisting of the individual words in the current command line. -The words are split on shell metacharacters as the shell parser would -separate them. This variable is available only in shell functions invoked by the programmable completion facilities (see \fBProgrammable Completion\fP below). @@ -1433,9 +1408,7 @@ 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 bottom-most element is -.if t \f(CW"main"\fP. -.if n "main". +The bottom-most element is "main". This variable exists only when a shell function is executing. Assignments to .SM @@ -1720,8 +1693,7 @@ command history is not saved when an interactive shell exits. .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 +necessary, 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. .TP @@ -1752,8 +1724,6 @@ for \fIstrftime\fP(3) to print the time stamp associated with each history entry displayed by the \fBhistory\fP builtin. If this variable is set, time stamps are written to the history file so they may be preserved across shell sessions. -This uses the history comment character to distinguish timestamps from -other history lines. .TP .B HOME The home directory of the current user; the default argument for the @@ -2457,9 +2427,7 @@ index of the specified array. 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 \fIoffset\fP is 0, and the positional parameters are used, \fB$0\fP is -prefixed to the list. +are used, in which case the indexing starts at 1. .TP ${\fB!\fP\fIprefix\fP\fB*\fP} .PD 0 @@ -2471,8 +2439,6 @@ separated by the first character of the .SM .B IFS special variable. -When \fI@\fP is used and the expansion appears within double quotes, each -variable name expands to a separate word. .TP ${\fB!\fP\fIname\fP[\fI@\fP]} .PD 0 @@ -2699,18 +2665,10 @@ is unset, or its value is exactly .BR , the default, then -sequences of -.BR , -.BR , -and -.B -at the beginning and end of the results of the previous -expansions are ignored, and any sequence of .SM .B IFS -characters not at the beginning or end serves to delimit words. -If +characters serves to delimit words. If .SM .B IFS has a value other than the default, then sequences of @@ -4211,15 +4169,11 @@ is executed for each child that exits. .PP If an attempt to exit .B bash -is made while jobs are stopped (or, if the \fBcheckjobs\fP shell option has -been enabled using the \fBshopt\fP builtin, running), the shell prints a -warning message, and, if the \fBcheckjobs\fP option is enabled, lists the -jobs and their statuses. -The +is made while jobs are stopped, the shell prints a warning message. The .B jobs -command may then be used to inspect their status. +command may then be used to inspect their status. If a second attempt to exit is made without an intervening command, -the shell does not print another warning, and any stopped +the shell does not print another warning, and the stopped jobs are terminated. .SH PROMPTING When executing interactively, @@ -5496,14 +5450,10 @@ After these matches have been generated, any shell function or command specified with the \fB\-F\fP and \fB\-C\fP options is invoked. When the command or function is invoked, the .SM -.BR COMP_LINE , -.SM -.BR COMP_POINT , -.SM -.BR COMP_KEY , +.B COMP_LINE and .SM -.B COMP_TYPE +.B COMP_POINT variables are assigned values as described above under \fBShell Variables\fP. If a shell function is being invoked, the @@ -5613,13 +5563,6 @@ is truncated, if necessary, to contain no more than the number of lines specified by the value of .SM .BR HISTFILESIZE . -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. -These timestamps are optionally displayed depending on the value of the -.SM -.B HISTTIMEFORMAT -variable. When an interactive shell exits, the last .SM .B $HISTSIZE @@ -5640,16 +5583,7 @@ If .SM .B HISTFILE is unset, or if the history file is unwritable, the history is -not saved. -If the -.SM -.HISTTIMEFORMAT -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 history lines. -After saving the history, the history file is truncated +not saved. After saving the history, the history file is truncated to contain no more than .SM .B HISTFILESIZE @@ -5783,9 +5717,6 @@ history expansion mechanism (see the description of .B histchars above under .BR "Shell Variables" ). -The shell uses -the history comment character to mark history timestamps when -writing the history file. .SS Event Designators .PP An event designator is a reference to a command line entry in the @@ -6045,9 +5976,8 @@ no alias has been defined. Resume each suspended job \fIjobspec\fP in the background, as if it had been started with .BR & . -If -.I jobspec -is not present, the shell's notion of the \fIcurrent job\fP is used. +If \fIjobspec\fP is not present, the shell's notion of the +\fIcurrent job\fP is used. .B bg .I jobspec returns 0 unless run when job control is disabled or, when run with @@ -6105,6 +6035,13 @@ that they can be re-read. .B \-P List current \fBreadline\fP function names and bindings. .TP +.B \-v +Display \fBreadline\fP variable names and values in such a way that they +can be re-read. +.TP +.B \-V +List current \fBreadline\fP variable names and values. +.TP .B \-s Display \fBreadline\fP key sequences bound to macros and the strings they output in such a way that they can be re-read. @@ -6113,13 +6050,6 @@ they output in such a way that they can be re-read. Display \fBreadline\fP key sequences bound to macros and the strings they output. .TP -.B \-v -Display \fBreadline\fP variable names and values in such a way that they -can be re-read. -.TP -.B \-V -List current \fBreadline\fP variable names and values. -.TP .B \-f \fIfilename\fP Read key bindings from \fIfilename\fP. .TP @@ -6292,9 +6222,9 @@ will be displayed. The return value is true unless an invalid option is supplied, or no matches were generated. .TP -\fBcomplete\fP [\fB\-abcdefgjksuv\fP] [\fB\-o\fP \fIcomp-option\fP] [\fB\-A\fP \fIaction\fP] [\fB\-G\fP \fIglobpat\fP] [\fB\-W\fP \fIwordlist\fP] [\fB\-F\fP \fIfunction\fP] [\fB\-C\fP \fIcommand\fP] +\fBcomplete\fP [\fB\-abcdefgjksuv\fP] [\fB\-o\fP \fIcomp-option\fP] [\fB\-A\fP \fIaction\fP] [\fB\-G\fP \fIglobpat\fP] [\fB\-W\fP \fIwordlist\fP] [\fB\-P\fP \fIprefix\fP] [\fB\-S\fP \fIsuffix\fP] .br -[\fB\-X\fP \fIfilterpat\fP] [\fB\-P\fP \fIprefix\fP] [\fB\-S\fP \fIsuffix\fP] \fIname\fP [\fIname ...\fP] +[\fB\-X\fP \fIfilterpat\fP] [\fB\-F\fP \fIfunction\fP] [\fB\-C\fP \fIcommand\fP] \fIname\fP [\fIname ...\fP] .PD 0 .TP \fBcomplete\fP \fB\-pr\fP [\fIname\fP ...] @@ -6560,11 +6490,8 @@ Mark \fIname\fPs for export to subsequent commands via the environment. .PD .PP Using `+' instead of `\-' -turns off the attribute instead, -with the exceptions that \fB+a\fP -may not be used to destroy an array variable and \fB+r\fB will not -remove the readonly attribute. -When used in a function, +turns off the attribute instead, with the exception that \fB+a\fP +may not be used to destroy an array variable. When used in a function, makes each \fIname\fP local, as with the .B local @@ -6585,7 +6512,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\-cplv\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. @@ -6633,10 +6560,6 @@ of the directory stack. Without options, each .I jobspec is removed from the table of active jobs. -If -.I jobspec -is not present, and neither \fB\-a\fB nor \fB\-r\fP is supplied, -the shell's notion of 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 @@ -6718,13 +6641,17 @@ backslash the eight-bit character whose value is the octal value \fInnn\fP (zero to three octal digits) .TP +.B \e\fInnn\fP +the eight-bit character whose value is the octal value \fInnn\fP +(one to three octal digits) +.TP .B \ex\fIHH\fP the eight-bit character whose value is the hexadecimal value \fIHH\fP (one or two hex digits) .PD .RE .TP -\fBenable\fP [\fB\-a\fP] [\fB\-dnps\fP] [\fB\-f\fP \fIfilename\fP] [\fIname\fP ...] +\fBenable\fP [\fB\-adnps\fP] [\fB\-f\fP \fIfilename\fP] [\fIname\fP ...] 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, @@ -6785,7 +6712,7 @@ become the arguments to \fIcommand\fP. If the .B \-l option is supplied, -the shell places a dash at the beginning of the zeroth argument passed to +the shell places a dash at the beginning of the zeroth arg passed to .IR command . This is what .IR login (1) @@ -6856,7 +6783,7 @@ is supplied with a .I name that is not a function. .TP -\fBfc\fP [\fB\-e\fP \fIename\fP] [\fB\-lnr\fP] [\fIfirst\fP] [\fIlast\fP] +\fBfc\fP [\fB\-e\fP \fIename\fP] [\fB\-nlr\fP] [\fIfirst\fP] [\fIlast\fP] .PD 0 .TP \fBfc\fP \fB\-s\fP [\fIpat\fP=\fIrep\fP] [\fIcmd\fP] @@ -7190,11 +7117,7 @@ are added. .PD .PP If the \fBHISTTIMEFORMAT\fP is set, the time stamp information -associated with each history entry is written to the history file, -marked with the history comment character. -When the history file is read, lines beginning with the history -comment character followed immediately by a digit are interpreted -as timestamps for the previous history line. +associated with each history entry is written to the history file. The return value is 0 unless an invalid option is encountered, an error occurs while reading or writing the history file, an invalid \fIoffset\fP is supplied as an argument to \fB\-d\fP, or the @@ -7346,10 +7269,6 @@ Arguments, if supplied, have the following meanings: .RS .PD 0 .TP -.B \-n -Suppresses the normal change of directory when removing directories -from the stack, so that only the stack is manipulated. -.TP \fB+\fP\fIn\fP Removes the \fIn\fPth entry counting from the left of the list shown by @@ -7373,6 +7292,10 @@ removes the last directory, .if n ``popd -1'' .if t \f(CWpopd -1\fP the next to last. +.TP +.B \-n +Suppresses the normal change of directory when removing directories +from the stack, so that only the stack is manipulated. .PD .PP If the @@ -7411,10 +7334,10 @@ 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. .TP -\fBpushd\fP [\fB\-n\fP] [+\fIn\fP] [\-\fIn\fP] +\fBpushd\fP [\fB\-n\fP] [\fIdir\fP] .PD 0 .TP -\fBpushd\fP [\fB\-n\fP] [\fIdir\fP] +\fBpushd\fP [\fB\-n\fP] [+\fIn\fP] [\-\fIn\fP] .PD Adds a directory to the top of the directory stack, or rotates the stack, making the new top of the stack the current working @@ -7424,10 +7347,6 @@ Arguments, if supplied, have the following meanings: .RS .PD 0 .TP -.B \-n -Suppresses the normal change of directory when adding directories -to the stack, so that only the stack is manipulated. -.TP \fB+\fP\fIn\fP Rotates the stack so that the \fIn\fPth directory (counting from the left of the list shown by @@ -7441,6 +7360,10 @@ Rotates the stack so that the \fIn\fPth directory .BR dirs , starting with zero) is at the top. .TP +.B \-n +Suppresses the normal change of directory when adding directories +to the stack, so that only the stack is manipulated. +.TP .I dir Adds .I dir @@ -7481,7 +7404,7 @@ The return status is 0 unless an error occurs while reading the name of the current directory or an invalid option is supplied. .TP -\fBread\fP [\fB\-ers\fP] [\fB\-a\fP \fIaname\fP] [\fB\-d\fP \fIdelim\fP] [\fB\-n\fP \fInchars\fP] [\fB\-p\fP \fIprompt\fP] [\fB\-t\fP \fItimeout\fP] [\fB\-u\fP \fIfd\fP] [\fIname\fP ...] +\fBread\fP [\fB\-ers\fP] [\fB\-u\fP \fIfd\fP] [\fB\-t\fP \fItimeout\fP] [\fB\-a\fP \fIaname\fP] [\fB\-p\fP \fIprompt\fP] [\fB\-n\fP \fInchars\fP] [\fB\-d\fP \fIdelim\fP] [\fIname\fP ...] One line is read from the standard input, or from the file descriptor \fIfd\fP supplied as an argument to the \fB\-u\fP option, and the first word is assigned to the first @@ -7617,11 +7540,7 @@ the return status is false. Any command associated with the \fBRETURN\fP trap is executed before execution resumes after the function or script. .TP -\fBset\fP [\fB\-\-abefhkmnptuvxBCEHPT\fP] [\fB\-o\fP \fIoption\fP] [\fIarg\fP ...] -.PD 0 -.TP -\fBset\fP [\fB+abefhkmnptuvxBCEHPT\fP] [\fB+o\fP \fIoption\fP] [\fIarg\fP ...] -.PD +\fBset\fP [\fB\-\-abefhkmnptuvxBCHP\fP] [\fB\-o\fP \fIoption\fP] [\fIarg\fP ...] 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. @@ -7660,14 +7579,12 @@ or .B until keyword, part of the test in an -.B if +.I if statement, part of a .B && or .B \(bv\(bv -list, -any command in a pipeline but the last, -or if the command's return value is +list, or if the command's return value is being inverted via .BR ! . A trap on \fBERR\fP, if set, is executed before the shell exits. @@ -8023,11 +7940,6 @@ The list of \fBshopt\fP options is: .if n .sp 1v .PD 0 .TP 8 -.B autocd -If set, a command name that is the name of a directory is executed as if -it were the argument to the \fBcd\fP command. -This option is only used by interactive shells. -.TP 8 .B cdable_vars If set, an argument to the .B cd @@ -8050,13 +7962,6 @@ If set, \fBbash\fP checks that a command found in the hash table exists before trying to execute it. If a hashed command no longer exists, a normal path search is performed. .TP 8 -.B checkjobs -If set, bash lists the status of any stopped and running jobs before -exiting an interactive shell. If any jobs are running, this causes -the exit to be deferred until a second exit is attempted without an -intervening command (see \fBJOB CONTROL\fP above). The shell always -postpones exiting if any jobs are stopped. -.TP 8 .B checkwinsize If set, \fBbash\fP checks the window size after each command and, if necessary, updates the values of @@ -8501,8 +8406,8 @@ the command is executed each time a shell function or a script executed with the \fB.\fP or \fBsource\fP builtins finishes executing. Signals ignored upon entry to the shell cannot be trapped or reset. -Trapped signals that are not being ignored are reset to their original -values in a child process when it is created. +Trapped signals are reset to their original values in a child +process when it is created. The return status is false if any .I sigspec is invalid; otherwise @@ -8625,7 +8530,7 @@ The maximum size of a process's data segment The maximum scheduling priority ("nice") .TP .B \-f -The maximum size of files written by the shell and its children +The maximum size of files created by the shell .TP .B \-i The maximum number of pending signals diff --git a/doc/bash.html b/doc/bash.html index 7cb8d77b9..fad585203 100644 --- a/doc/bash.html +++ b/doc/bash.html @@ -3,7 +3,7 @@
' +recho [^a-c]* + +# Make sure that filenames with embedded globbing characters are handled +# properly +mkdir a\*b +> a\*b/ooo + +expect '' +recho a\*b/* + +expect '' +recho a\*?/* + +expect '' +cmd='echo !7' +case "$cmd" in +*\\!*) echo match ;; +*) echo no match ;; +esac + +expect '' +file='r.*' +case $file in +*.\*) echo not there ;; +*) echo there ;; +esac + +# examples from the Posix.2 spec (d11.2, p. 243) +expect '' +recho a[b]c + +expect '' +recho a["b"]c + +expect '' +recho a[\b]c + +expect '' +recho a?c + +expect '' +case abc in +a"b"c) echo 'match 1' ;; +*) echo 'BAD match 1' ;; +esac + +expect '' +case abc in +a*c) echo 'match 2' ;; +*) echo 'BAD match 2' ;; +esac + +expect '' +case abc in +"a?c") echo 'bad 1' ;; +*) echo 'ok 1' ;; +esac + +expect '' +case abc in +a\*c) echo 'bad 2' ;; +*) echo 'ok 2' ;; +esac + +expect '' +case abc in +a\[b]c) echo 'bad 3' ;; +*) echo 'ok 3' ;; +esac + +expect '' +case "$nosuchvar" in +"") echo 'ok 4' ;; +*) echo 'bad 4' ;; +esac + +# This is very odd, but sh and ksh seem to agree +expect '' +case abc in +a["\b"]c) echo 'ok 5' ;; +*) echo 'bad 5' ;; +esac + +mkdir man +mkdir man/man1 +touch man/man1/bash.1 +expect '' +recho */man*/bash.* +expect '' +recho $(echo */man*/bash.*) +expect '' +recho "$(echo */man*/bash.*)" + +# tests with multiple `*'s +case abc in +a***c) echo ok 1;; +esac + +case abc in +a*****?c) echo ok 2;; +esac + +case abc in +?*****??) echo ok 3;; +esac + +case abc in +*****??) echo ok 4;; +esac + +case abc in +*****??c) echo ok 5;; +esac + +case abc in +?*****?c) echo ok 6;; +esac + +case abc in +?***?****c) echo ok 7;; +esac + +case abc in +?***?****?) echo ok 8;; +esac + +case abc in +?***?****) echo ok 9;; +esac + +case abc in +*******c) echo ok 10;; +esac + +case abc in +*******?) echo ok 11;; +esac + +case abcdecdhjk in +a*cd**?**??k) echo ok 20;; +esac + +case abcdecdhjk in +a**?**cd**?**??k) echo ok 21;; +esac + +case abcdecdhjk in +a**?**cd**?**??k***) echo ok 22;; +esac + +case abcdecdhjk in +a**?**cd**?**??***k) echo ok 23;; +esac + +case abcdecdhjk in +a**?**cd**?**??***k**) echo ok 24;; +esac + +case abcdecdhjk in +a****c**?**??*****) echo ok 25;; +esac + +case '-' in +[-abc]) echo ok 26 ;; +esac + +case '-' in +[abc-]) echo ok 27 ;; +esac + +case '\' in +\\) echo ok 28 ;; +esac + +case '\' in +[\\]) echo ok 29 ;; +esac + +case '\' in +'\') echo ok 30 ;; +esac + +case '[' in +[[]) echo ok 31 ;; +esac + +# a `[' without a closing `]' is just another character to match, in the +# bash implementation +case '[' in +[) echo ok 32 ;; +esac + +case '[abc' in +[*) echo 'ok 33';; +esac + +# a right bracket shall lose its special meaning and represent itself in +# a bracket expression if it occurs first in the list. -- POSIX.2 2.8.3.2 +case ']' in +[]]) echo ok 34 ;; +esac + +case '-' in +[]-]) echo ok 35 ;; +esac + +# a backslash should just escape the next character in this context +case p in +[a-\z]) echo ok 36 ;; +esac + +# this was a bug in all versions up to bash-2.04-release +case "/tmp" in +[/\\]*) echo ok 37 ;; +esac + +# none of these should output anything + +case abc in +??**********?****?) echo bad 1;; +esac + +case abc in +??**********?****c) echo bad 2;; +esac + +case abc in +?************c****?****) echo bad 3;; +esac + +case abc in +*c*?**) echo bad 4;; +esac + +case abc in +a*****c*?**) echo bad 5;; +esac + +case abc in +a********???*******) echo bad 6;; +esac + +case 'a' in +[]) echo bad 7 ;; +esac + +case '[' in +[abc) echo bad 8;; +esac + +# let's start testing the case-insensitive globbing code +recho b* + +shopt -s nocaseglob +recho b* + +recho [b]* +shopt -u nocaseglob + +# make sure set -f works right +set -f +recho * +set +f + +# test out the GLOBIGNORE code +GLOBIGNORE='.*:*c:*e:?' +recho * + +GLOBIGNORE='.*:*b:*d:?' +recho * + +# see if GLOBIGNORE can substitute for `set -f' +GLOBIGNORE='.*:*' +recho * + +unset GLOBIGNORE +expect '' +recho */man*/bash.* + +# make sure null values for GLOBIGNORE have no effect +GLOBIGNORE= +expect '' +recho */man*/bash.* + +# this is for the benefit of pure coverage, so it writes the pcv file +# in the right place, and for gprof +builtin cd $MYDIR + +rm -rf $TESTDIR + +exit 0 diff --git a/bash-20060316/tests/glob.right b/bash-20060316/tests/glob.right new file mode 100644 index 000000000..46ac4d3d8 --- /dev/null +++ b/bash-20060316/tests/glob.right @@ -0,0 +1,135 @@ +foo/bar foobar/bar +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +tmp/l1 tmp/l2 tmp/*4 tmp/l3 +./glob-test: line 44: no match: tmp/*4 +argv[1] = +argv[1] = <*> +argv[1] = +argv[1] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = <*q*> +argv[1] = <**> +argv[1] = <**> +argv[1] = <\.\./*/> +argv[1] = +argv[1] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[7] = +argv[8] =
' . + &t2h_anchor('', $href, $entry) . + '  ' . + $descr . + "
' . + $entry . + '' . $descr . + "
-
BASH(1)2007 January 12BASH(1) +BASH(1)2006 Jan 26BASH(1)

Index @@ -42,7 +42,7 @@ bash - GNU Bourne-Again SHell

COPYRIGHT

-Bash is Copyright © 1989-2007 by the Free Software Foundation, Inc. +Bash is Copyright © 1989-2005 by the Free Software Foundation, Inc.  

DESCRIPTION

@@ -1051,10 +1051,10 @@ as for pathname expansion (see below). The word is expanded using tilde -expansion, parameter and variable expansion, arithmetic substitution, +expansion, parameter and variable expansion, arithmetic substituion, command substitution, process substitution and quote removal. Each pattern examined is expanded using tilde -expansion, parameter and variable expansion, arithmetic substitution, +expansion, parameter and variable expansion, arithmetic substituion, command substitution, and process substitution. If the shell option nocasematch @@ -1625,12 +1625,6 @@ The following variables are set by the shell: Expands to the full file name used to invoke this instance of bash. -
BASHPID - -
-Expands to the process id of the current bash process. -This differs from $$ under certain circumstances, such as subshells -that do not require bash to be re-initialized.
BASH_ARGC
@@ -1757,11 +1751,6 @@ cursor position. This variable is available only in shell functions invoked by the programmable completion facilities (see Programmable Completion below). -
COMP_KEY - -
-The key (or final key of a key sequence) used to invoke the current -completion function.
COMP_LINE
@@ -1781,21 +1770,6 @@ This variable is available only in shell functions and external commands invoked by the programmable completion facilities (see Programmable Completion below). -
COMP_TYPE - -
-Set to an integer value corresponding to the type of completion attempted -that caused a completion function to be called: -TAB, for normal completion, -?, for listing completions after successive tabs, -!, for listing alternatives on partial word completion, -@, 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 -programmable completion facilities (see Programmable Completion -below).
COMP_WORDBREAKS
@@ -1812,8 +1786,6 @@ subsequently reset.
An array variable (see Arrays below) consisting of the individual words in the current command line. -The words are split on shell metacharacters as the shell parser would -separate them. This variable is available only in shell functions invoked by the programmable completion facilities (see Programmable Completion below). @@ -1855,9 +1827,7 @@ 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 bottom-most element is -"main". - +The bottom-most element is "main". This variable exists only when a shell function is executing. Assignments to FUNCNAME @@ -2222,8 +2192,7 @@ command history is not saved when an interactive shell exits.
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 +necessary, 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.
HISTIGNORE @@ -2260,8 +2229,6 @@ for strftime(3) to print the time stamp associated with each history entry displayed by the history builtin. If this variable is set, time stamps are written to the history file so they may be preserved across shell sessions. -This uses the history comment character to distinguish timestamps from -other history lines.
HOME
@@ -3151,9 +3118,7 @@ index of the specified array. 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 -prefixed to the list. +are used, in which case the indexing starts at 1.
${!prefix*}
${!prefix@}
@@ -3164,8 +3129,6 @@ separated by the first character of the special variable. -When @ is used and the expansion appears within double quotes, each -variable name expands to a separate word.
${!name[@]}
${!name[*]}
@@ -3452,22 +3415,11 @@ value is exactly <space><tab><newline>, the default, then -sequences of -<space>, - -<tab>, - -and -<newline> - -at the beginning and end of the results of the previous -expansions are ignored, and any sequence of IFS -characters not at the beginning or end serves to delimit words. -If +characters serves to delimit words. If IFS @@ -5457,16 +5409,12 @@ is executed for each child that exits. If an attempt to exit bash -is made while jobs are stopped (or, if the checkjobs shell option has -been enabled using the shopt builtin, running), the shell prints a -warning message, and, if the checkjobs option is enabled, lists the -jobs and their statuses. -The +is made while jobs are stopped, the shell prints a warning message. The jobs -command may then be used to inspect their status. +command may then be used to inspect their status. If a second attempt to exit is made without an intervening command, -the shell does not print another warning, and any stopped +the shell does not print another warning, and the stopped jobs are terminated.  

PROMPTING

@@ -7136,17 +7084,11 @@ completed, and the matching words become the possible completions. After these matches have been generated, any shell function or command specified with the -F and -C options is invoked. When the command or function is invoked, the -COMP_LINE, - - -COMP_POINT, - - -COMP_KEY, +COMP_LINE and -COMP_TYPE +COMP_POINT variables are assigned values as described above under @@ -7281,14 +7223,6 @@ the number of lines specified by the value of HISTFILESIZE. -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. -These timestamps are optionally displayed depending on the value of the -HISTTIMEFORMAT - - -variable. When an interactive shell exits, the last $HISTSIZE @@ -7315,16 +7249,7 @@ If is unset, or if the history file is unwritable, the history is -not saved. -If the - - -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 history lines. -After saving the history, the history file is truncated +not saved. After saving the history, the history file is truncated to contain no more than HISTFILESIZE @@ -7497,9 +7422,6 @@ history expansion mechanism (see the description of above under Shell Variables). -The shell uses -the history comment character to mark history timestamps when -writing the history file.  

Event Designators

@@ -7849,10 +7771,8 @@ Resume each suspended job jobspec in the background, as if it had been started with &. -If -jobspec - -is not present, the shell's notion of the current job is used. +If jobspec is not present, the shell's notion of the +current job is used. bg jobspec @@ -7917,6 +7837,15 @@ that they can be re-read.
List current readline function names and bindings. +
-v + +
+Display readline variable names and values in such a way that they +can be re-read. +
-V + +
+List current readline variable names and values.
-s
@@ -7927,15 +7856,6 @@ they output in such a way that they can be re-read.
Display readline key sequences bound to macros and the strings they output. -
-v - -
-Display readline variable names and values in such a way that they -can be re-read. -
-V - -
-List current readline variable names and values.
-f filename
@@ -8152,10 +8072,10 @@ will be displayed.

The return value is true unless an invalid option is supplied, or no matches were generated. -

complete [-abcdefgjksuv] [-o comp-option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command]
+
complete [-abcdefgjksuv] [-o comp-option] [-A action] [-G globpat] [-W wordlist] [-P prefix] [-S suffix]

-[-X filterpat] [-P prefix] [-S suffix] name [name ...] +[-X filterpat] [-F function] [-C command] name [name ...]
complete -pr [name ...]
@@ -8475,13 +8395,10 @@ Mark names for export to subsequent commands via the environment.

Using `+' instead of `-' -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, +turns off the attribute instead, with the exception that +a +may not be used to destroy an array variable. When used in a function, makes each -name local, as with the +name local, as with the local command. @@ -8502,7 +8419,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] [-cplv] +
dirs [-clpv] [+n] [-n]
Without options, displays the list of currently remembered directories. @@ -8562,11 +8479,6 @@ Without options, each jobspec is removed 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. If the -h option is given, each jobspec @@ -8672,6 +8584,11 @@ backslash
the eight-bit character whose value is the octal value nnn (zero to three octal digits) +
\nnn + +
+the eight-bit character whose value is the octal value nnn +(one to three octal digits)
\xHH
@@ -8680,7 +8597,7 @@ the eight-bit character whose value is the hexadecimal value HH -
enable [-a] [-dnps] [-f filename] [name ...]
+
enable [-adnps] [-f filename] [name ...]
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, @@ -8754,7 +8671,7 @@ If the -l option is supplied, -the shell places a dash at the beginning of the zeroth argument passed to +the shell places a dash at the beginning of the zeroth arg passed to command. This is what @@ -8843,7 +8760,7 @@ is supplied with a name that is not a function. -
fc [-e ename] [-lnr] [first] [last]
+
fc [-e ename] [-nlr] [first] [last]
fc -s [pat=rep] [cmd]
@@ -9251,11 +9168,7 @@ are added.

If the HISTTIMEFORMAT is set, the time stamp information -associated with each history entry is written to the history file, -marked with the history comment character. -When the history file is read, lines beginning with the history -comment character followed immediately by a digit are interpreted -as timestamps for the previous history line. +associated with each history entry is written to the history file. The return value is 0 unless an invalid option is encountered, an error occurs while reading or writing the history file, an invalid offset is supplied as an argument to -d, or the @@ -9448,11 +9361,6 @@ Arguments, if supplied, have the following meanings:

-
-n - -
-Suppresses the normal change of directory when removing directories -from the stack, so that only the stack is manipulated.
+n
Removes the nth entry counting from the left of the list shown by @@ -9477,6 +9385,11 @@ removes the last directory, popd -1 the next to last. +
-n + +
+Suppresses the normal change of directory when removing directories +from the stack, so that only the stack is manipulated.

@@ -9519,10 +9432,10 @@ If the format requires more arguments than are supplied, 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. -

pushd [-n] [+n] [-n]
-
pushd [-n] [dir]
+
pushd [-n] [+n] [-n]
+ 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 @@ -9531,11 +9444,6 @@ Arguments, if supplied, have the following meanings:
-
-n - -
-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 @@ -9549,6 +9457,11 @@ Rotates the stack so that the nth directory dirs, starting with zero) is at the top. +
-n + +
+Suppresses the normal change of directory when adding directories +to the stack, so that only the stack is manipulated.
dir
@@ -9602,7 +9515,7 @@ option is used, the pathname printed may contain symbolic links. The return status is 0 unless an error occurs while reading the name of the current directory or an invalid option is supplied. -
read [-ers] [-a aname] [-d delim] [-n nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
+
read [-ers] [-u fd] [-t timeout] [-a aname] [-p prompt] [-n nchars] [-d delim] [name ...]
One line is read from the standard input, or from the file descriptor fd supplied as an argument to the -u option, and the first word is assigned to the first @@ -9771,10 +9684,7 @@ function and not during execution of a script by ., the return status is false. Any command associated with the RETURN trap is executed before execution resumes after the function or script. -
set [--abefhkmnptuvxBCEHPT] [-o option] [arg ...]
- -
set [+abefhkmnptuvxBCEHPT] [+o option] [arg ...]
- +
set [--abefhkmnptuvxBCHP] [-o option] [arg ...]
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. @@ -9824,7 +9734,7 @@ or keyword, part of the test in an -if +if statement, part of a && @@ -9832,9 +9742,7 @@ statement, part of a or || -list, -any command in a pipeline but the last, -or if the command's return value is +list, or if the command's return value is being inverted via !. @@ -10311,12 +10219,6 @@ The list of shopt options is:
-
autocd - -
-If set, a command name that is the name of a directory is executed as if -it were the argument to the cd command. -This option is only used by interactive shells.
cdable_vars
@@ -10344,14 +10246,6 @@ This option is only used by interactive shells. If set, bash checks that a command found in the hash table exists before trying to execute it. If a hashed command no longer exists, a normal path search is performed. -
checkjobs - -
-If set, bash lists the status of any stopped and running jobs before -exiting an interactive shell. If any jobs are running, this causes -the exit to be deferred until a second exit is attempted without an -intervening command (see JOB CONTROL above). The shell always -postpones exiting if any jobs are stopped.
checkwinsize
@@ -10907,8 +10801,8 @@ the command is executed each time a shell function or a script executed with the . or source builtins finishes executing. Signals ignored upon entry to the shell cannot be trapped or reset. -Trapped signals that are not being ignored are reset to their original -values in a child process when it is created. +Trapped signals are reset to their original values in a child +process when it is created. The return status is false if any sigspec @@ -11069,7 +10963,7 @@ The maximum scheduling priority ("nice")
-f
-The maximum size of files written by the shell and its children +The maximum size of files created by the shell
-i
@@ -11541,7 +11435,7 @@ Array variables may not (yet) be exported.
-
GNU Bash-3.22007 January 12BASH(1) +GNU Bash-3.22006 Jan 26BASH(1)

@@ -11645,6 +11539,6 @@ Array variables may not (yet) be exported.

This document was created by man2html from bash.1.
-Time: 16 January 2007 11:15:22 EST +Time: 26 January 2006 11:19:07 EST diff --git a/doc/bash.pdf b/doc/bash.pdf index fbfe77a9a3fbd5b9f9839627106723261becfe6d..cada2fbf29b105d531d520d8d7fac731d4e7c00e 100644 GIT binary patch literal 657635 zc-pkQbC7OZvOQY1UA4=*Y}>YN+qP}nw(Z(w+qSEA*;Vg!_qp%&y{F%M-4XZq&su9{ zW@P3ZGrw5z#Tc=O<%C42>1i0DhzF1EjxI{?^JWK!p&0P#@NEq&pt!j3X{C&9Or6Z| znf@>-;M0njTR9m!{BgI^cQO_-HncS|#^>RIa&&Sq*0+XoTc=clP$B~{^lsG>1Wok{ z<^!N_0=a@RwlVrM;*Y1lC1(1w00ZNHS?K?%q>{UxF+Q!FzUkku4#qZ4_^kgZuVCzG z>+E1??1<0!4}+ksjnf}~M|_5Vtfh^O%=HCq-Jmq-{xC4JGvl){F=+p-#XsvX{!<+} z2U|l$V<&vgKOTid@U`)2)npAUj18Ue|K=63rpIUgdsZHve@ejoS8Uk+QTrcl|5plH zMP~!2zgt9X9jyOx{d)vGKCQqX9peAD4x#>OYb^f()Jn6iv@A+uv|w{0`0M0C{j+?4 zApS|^_2mKW^*O=8#0X?ThZLusnCF-j7!*N81qB5qWdet^naa&|0g@GqBK4o4IRTj$20tY#mmY`{{i_wMKk^N0O?u&)9L>C=X7^~ zT>lk8dX~SAH{*Xe-}KD?W5DT|{>=%eXZ{aH{Ewqy{TC;|`Y$kI|KFW*dbWQL^JHz! zM6FhPpOIQM9ak3<=dgEU(GsJ14H|YW@)#pd`(c@!gbJmj{-bZ*tB#v}x6c7vRSBKB-WTfA%D71sLy7D2*6&Ua z*IE+i;u@d#o64z)%*vgw=kwB?J_4v1w)7D5`}4=lR@$1_%;0>CU*g>2)`}WwAoShX zatH6r^}tFn$X`%g24Be41HleBZ{|3(Y&{FP0vTQp^ufX2Ih&O$mk&u%s{I@~dLx-v z*DXl`1T4h|DAE&_V2NJ)3@#1&dq`JdnKvb_BU6&)OhHfMwt?(6I=%JuHPx66^X3UJ zdI-@~$KGC!UG9uJJy49c+n7}^oyg^8B{Za^TGBex++&^IaVF27_K6w&gCD_pq!&`} zpq}C;vvTTin^4s2H?(4+y2n8$tguwaaem3U6()x z)3;v5GeIQFc^cen1ADjdSb4EoX?;FEW3LBBVtv^JHn#Ct-!(lqKZ>Y*ys2-Vb63qV z)AKxu`rbMXJ;9Rw(Cc(N?Oir!FKFt)v{2oJ*W#H0?KhM5#)$*c%V&W&W_r%Is3S zLWs0TQlxBM>=YO0%*o&!9pMyva6`6c6|d&X(vQydZ0u zFy7Hth>Yeg>%MZu&g2#^RH#%T)n|ZN7G#6ani6QDvlcfo6Ty;6WQ~G#${D zMN?Tj9kQC53eA2%?($@Sy|RfFw|yMwLkxyA5q-B1Y_4^M$|S09DQ8+NrRR$m8)5$;&QkB)HPAJ(U$nT`xyT*dvT)**TVEh zISBvKrIzV4SDk1TWIIxXn>g`PiaSaZJ%SEVg|8HUGAz!j`9Gq zL5vO82&+|7i-Oe`8NVutm2#R zA<#IY`cxmgYTx%@{PxqdvhXA#N=N<{KX{>Y=tlK6E*oDBHImL@l?qc-vY>hrYzQX* z7L4Qgu;(`gIrPmL-XVXyYD@P|hG~H;)X1~})B_V!bqf`~>eS$!Njysv16OdI>yGXW zZ|XYGM!=I(dv94*b|Z9 zHq#)>_^tlz0n3%c(x{XBQJ20XVv)8gdY<^XRgA4k=G>6RK9-X%2UiO1%?S+R*mGj+ zRO_DR*Cd>~#2TNDW;K`98RulWyD0sDocI{!oj2%QWeO^k#o2}k4Y;xasV%Q}SuY=G zHyZCwlK0=XhO}T9g#6|v;%}vT45PhC{()DkP)w7memFO21N?KXztiU$6Ud!EQm8Uf6F$aSfJhlhznKJgnJWqs zVyWk&!;J#f#RhkD!-B8t?ZC==u+N!&7kR5H(ZOcB0pA;-Q0Fa5rlALkp4(#TdOJK< z*x}bX1Q9wXpzoeGJCbRnbF)C3Y4R!-)DoP#daHYsUwmbs{aI0NJthmEy0>LN{*fsT zb%2LuZJ#^JoM*M2hBPj}WV3E>DCbG#x6O1sfl#K$g$b0XU*CB0!+s_gg1MyKm0Ri7 zw0tDItKSp$fmwmTzyM+F<>}77u4n~1=6P4(#ukm6BiJ%K_V$?eaF*t73+HaPXhq-k zE{Mx}_4di?Gx?>hdvNP2mRY2^aNSG0)5wa=rr&))dDcYKq0TOAgm&j?qGJ{mu_5OQ zx9%#JFxC#ka(u}ax4hmZhSQ7>dsrVW7@I;pgT4+uGZX$3LA}zCRiF5@Th$z7&z_j@&iJGFyk!40D<1J*t+-VTw&&6`=aM+ zVx=F_=8V{LN&)5k?@D*)p{&| zFHdLg_GNzO2gx^xJ}b@3mK<$)b$oTCIAVnX9Q%}@&pg7_>sJ{)=gg2axc=ro@W6Jr zkRG)ke7Ky6{8?dyvKf@lW{@9eZv89u0D=W(bm!V_$L2Im;_)Zd+##wiUs0jcE}qw?}FAHy%e686t;8VSbEr7R9E5>m;Q_PQLn^D!oo>v%NU z_qF5+gF>q)WHe`cb?y`~J7fOmsBUs6clLQ)LrEF>$qDMJ{?-P~u?g=iuR#Z_cJUHD z=qXhVupKW>r%VDTDdbHlI@t0v%c*v`$f2_kCmBFtJZ|FVBj>|HYy@4fhkJh3i-jlq z2~?NzK~Vdq#CBTBRatvHu;|y96pfh34sx@bOzWPcluwp9(5}{EN z?#~5;+zAp&zr?C&nTZs2`?U_JkT)WUb^9|Rz$y20YD8xH1&s#mE`jC_+7(b|`+0k2 zc1wYn(Od&RBCKKJL!C`2UNJBo*cN6Pl?<1PObi##V~|BD`QVr|^CNs1y;HH*aD^I_sWDvf)Y0l(&kmCt-7nHu;Cm)7?gn~^HWg3kU;NU8FA?% zmRcK~k<4eVNfP1Pj-AJXo)KVcaBa~;%OL0clTp1-e;L7xwXHL`>{p)0a(p>L?;DkY zU|Ud>6fIKqYq?Dej<%>dr%pNu`DIU|YKjgK#-eq2!z4j4++8ql#?ji=J`Wr=yNuuV zVbw+mC#u%qISZ&`)ITI3(E9+$`Z(^fiwg~+ocbd(a;}Do4V-?Lyt~254KCCxF;wJ2 zSRM0T`d@4pu;ogC(VIogDq-7w5=PP-iJ+Dz;u%C;Q9LeR?x&1^;hMxZ9F)5qBOi!N zNIlqb9ZF-7Gn`P(-lH^j)-1criP5Chus}V=Nwdb1!Ef{&Xv)nA6A)XMVZImP1_0n0 zU@823{+LsA5^Hs)d_4CU$QzlL#--_+tEbqS2ktBYR`L$JBIZ5RYe!mxOn2=6EfVLq6!-`JlH1^oFaJmm6AO2m`v zc+r-<_Y*}XIQzh4wnZu=&Jw$s4vhPe&X7+X>H*dHy4+W-dVB8Dd7nwriU$trM+BYm z3>(@*`G*J`|Hy5aY9{Z8)8~Mm5+CnP<4je0WZ|$Y?NReD-;t?_l>r}T1?$$yysh(G zusJ<6G>i*N>B70!7*_z|!|N?km7g4E%~BL>^7aHmjI6R%B`KpWL1+=-FnYJ@CuWQk z3e%oQWfA<~8?!l@OY0lti$hr)=M~D;6t@FI;=1!QWxws}T&)T-SnZBWGCi(MjG(Y+ z#$`MTJJR@K_^Z@|5xAl(kxl(EHfzw3grV>P`4N_`C)?D)T z)IpzS&ayx&UO#A?BgdDP@$TqMX*vM03R6huvfEj-tW($T1O*H+q_pa)zNEsjnn)r%Py+~=f{)gEfJ7sxFq zq?8Sg-_QuW)*~6sRd#5f18ek|U*nuOD{bwG+P$ZUtA`~I6o92G3Yw7~Gp3v8_>KDa z0TMc1-%8=4(Ffv;k}okMZS=mF=<%PMDom-ao78IN#g}@GnysJwg9F<&>5`f#gF!gz z0)dxX5I0#Uju%2|a>cDPWEp8zHL8@-U4FbW`7sdPbldQH0$~IOCa{@TDMvr=!mm{E zI*2_f$XN~-!dMSzGzFE!b83_Pc+ySZgv^bCbF4D|aj&kyPjvS_o8XHKgOEfr7ae*1 z^TL01eQbeWbBqY0oe@xx@bSzfoa-`1?sCAi1&$y-{6fUY>L|fZ=v3IGC3Xo^!k(h_ zTztLAS#WAgI6ous7n0_BFAN>UBlGj35jy8n3+x@Dbq1;fs}IuAc7>)MC5%18k(r17 zZ|jHU)v;BZ6KE?!j>^Ui^?is;Icqfk3L^x{BLWPpNvyhR#UV7?-&Y<+rbfji6gsh@ zBN!U)Wg25kOJUSZ z0tdj+r&y<`Rw1`9+8HAkVXTsV%tUE;wbsXiJDG2Z>`Ytl?hMOd|y;#=jx zWL6cw(I8`=HA9G&i#IOIdt@)%A~@e4F?>W8wDS#Jo>6L;eWt)^yIgKVNXFE<1VR9hGk1Ob+}-Cy;F)Yy zZn?@c)zyd82|eD(2ySg3z{9Q19JF^EJ&;aGk~%K%aOmo&kBl5>BQlbbnz6jA6?THJ zyd0I>d`&L$WOFKQO3^r}JkjebkfM$t>J0KqrRvI)B05%CW}Z=TDr_lx<{Cv;T1nZA zt;O4vuV92jOVVudXIz8{BM|w40JR9gYzCy}oY#~5kT-@_8ye|FlHW?X3FpvME$~7R z>R?_5`=jWjYzmrDBj7-v6*)VyB1(Qpj~PmpN0-N}rgJb=?xJ3&XM(l^m& zsVZC(x0vm(ozqRpDmWqL)P2x&$-dO>)H1b@=w8U(foEVUmJfEAx*mR{J&xt6)B%Dn zJf47f)t^q-U7`097uB~~n0_$@WAdt1NosT{R)B<%%!^G_*U4vxeYs{sUVFZF&)xgR>2|V{ySem6ZMn!dDg*BUixRUt*e7LM+ zTN4a8D9R++GGdZE2S)I1;YUj}*89m*9uk8#7^cu*WMaw3SW%trJtp;hC~PQRs%_RA z%UwpCAx_sHk=n0{!R-O8pXPrk-Jgz8L)7K8rPXS~ad9XEbi-#ae~<4_lvqT;Wp7hX zu{+V$%Pk>J^f(7gAhNW_EW+ikL)EvIPzO!{^LZ)cwn8`vLfN;F_u@SEd1&p%U6=z;> zLVU5M(dkYAwJ>z&3CQ@2vHMJzy+Mzp2M?bxr6;QkODu=hlZovQw@wT=u@?bWPlDGJ z*tj;A?C63j@YC$eWA2royANW+(W}E`Jbo2TZZO12MA6#SEiV*}Q)8P}VZ}9S(Nwec zPA7dJgJ1Ey>Wsa?__;yl(!Zs_ct#~{smr(6%>BL81Db5~>ag5%{4A=VUF!*r6*U)n4%{bi+|ymJGSt_H41_l7BAo0$_p5-2orA-AKR(RM(pAzEp3`Gd z@oPaP)PFoIeC7dAlL|HD+$RhJ)d3NoxY1+XvGnZtvTfF2h{Zuv@Yv zMzmIEguON7iE}@CEC~@u{EVm?E3%D~?4hkyv&hdau~W(MIdfCu8t4X%Kq=iDd#&J9Fag?gob`P4<}r~2urL8P zcYIi4FuM|1f<3xmJXK?=vIe3n?3Ad=u8w^*xWQTeyzwe*#r~YB3s2Gfz*Pd<@x5Lw zQSJPI)uf&&GI^6Yx3=2RdM|MCoBFkvIo3YHT=fb|- zIwslDh1+20k*O;%;A-trFBtXlUQ3p>SJK+dbY+1)=2|9v__0dNNV~U=&%8&vmriBO zfxj2)+(CRN_(t^2*g?4_bF-nMcSdycHQv5?0-Y20%H|6gu(+7_;1Y#V4=2y-6g2^2 zT&ObnQ%bhra?xMr_F6gW=5>M2!*od48tWQ5AQyUZ2guMOMUt*0zeWf7tuA%|y{Pb! z_=Zs*<|C`o>3S9hi$;5~bQ|K#b9f&zrw{KHkXe*Msx|Aj09k_C@W;#K6A(yo#bKY> zAV7c$Ri&_cK%VU42Q=={j88uFChCM&#t5{uA?Vm6B?LNaS_mX@VOy81sUb^$3v$(S zxN7t$W6gD9*`3hcfmhaxd)^NhiJpBFSz(b97^1U&XNFXVtUc&3cC8K~&X7I9;0zj4 zz>-WC;#&pvG`QJjOHnLH*+p0@M=?w&+O(}4@6h<`+BJ|_1=?8493`a+_$##fsYH_A zr7cMP%|KDme0F9E%)#U7a~xMwT$(J3$e^kV!~n?my68PyV^z)P16Z!^J5g$(=sucH zKIn13GbzTf{Gx-l#q(@s|Fy0Az}@N4tqs@O5MGFh1>mbG58E|>6Nij~cThAe`x)%& zxqKYwp~Vs=uM6TI)%ncqC2mY7OedDlAB8*Qid(Htvxb9&(Vy3p|5S zi(Z{)$!dD)lcnreN?^8dXI_}{o#}56jM0Nfq8$yMe5=kC`+MX zVffqPzdZj$QPPUA(9lCM{KTa^c@+K2ObL_S*7zeTA-l%<%p$9m>u1*}~}V-}(J>O`5`HygjMz_3@hp z?|RaR#pM3N*S1CVhPC(W<~Y|E6lO{9a162N>hXfrR=3-8n+9TvG@vE1r6&ngoM1i~ z0QTU$&&N;DFTJ>Yw^kaeTw9Eb`cPR|t4BX7)1ZXx975F8NGe?m@&Nqu3^@0CK2?y% z%YzLr?+vi4l5sNg5V&{gyC%0)1}~@8)u08-V?7OySd!@|OJKd*y>&v)0S z*TI&({QHmGdqyvmueQL}&QL*v=Sg(#S2iz?_vq|0T73tS7EcB7N$6Q)34(c?O`f|E z-=f;81nNYvQzvro{zJ_qWN-46p7{{3yyDuKk8~_>NpZf+&%+j1uBK;z>|xqs6Y>Z_ z7!QY`8!0F>>6~K>`#Es?>63-(%eRBTu zq(nPX&x_9}>~(OadtF+_IP>~OPvd0ZkL)2H!VTJ(voXse>Whnyoey(=CP%Ppna{jZf* z{0JItj!7&`@UT>&e6@5yu};~Bw-O~6$W++gA^F^xuge?VE}dLjAh{1l)wnLi?M`By zSzj%jL{~({{l7R8XyvOHSOU{ZFZadr?E=n&Tb>Cu7d3uXz;Ug;AS`@cfdfBG-Hlw9 z?uR0Rys@+cGzo{#`_ksB7n1vk7?D({oNWZag}`|AX`Q}9S6->d`Sce{J`LAbDle1H zs#3sTJsrP(-aj?xx%6?{E9+yERIZP;km*y{tYYppsO8NYnLJa# zZ;2&(9MkMQQN|pD^-6R$f#fFeDM%s#`BDhppd4729wC565yY&NW)Hsq1xh;1=>12f zv)>mBs9%X{exVdXFgnNQF( z2Z<}g<@U9A=cPigGGA zVB||bR6C~K-DuOQqwgk0=wnT~^EIt*>`z%u;bu6a~ZNWz7T>_YwoDc0~1^%Eyv!%K`bQ_nfuLlIj55`CMb~5=d z3!y2+-}4ZLdUEh@klbj?H}EXn*dL#BlSY@lK~H#U`d4ieKs;SOhP+(8xtEsDrL4z~ zx!;qXEeY9Hem^KCWm>@Jc#W!;RH)M^hxJ5C8(T8{RyxgI@Lf|PvWzk1REiY_oxAub z8wh+6Wl-3xV%aXz@LXM4#l!60Q-}QW=c!EAT6#Y+_W~!utU^xhU2tmh6w@I}#DmZB zUDrB+!SY|z*h}z}1nP$)83{|slZ8lKeUPb7O;O|55St6Co16fj^1*~ickG4F3WV8Z z(P5k3XgW@L5_z_HMmMfBSlSq8sM*%&O(BbWU!DwE}*;x7T7^$CQ17xw&OTj&hM&86FpaNoz zlypYdX(6ILXJLV6E0Uk1?@itzE(c(dQ3QH$UHbcIW-Es&-T7!Qb0A+8^N6BnBiwY+ z&7@ecM$qo0k&l@Gnbb*cN&qe##zVFz2hXE;fKgH7NI*1JdFAAy?g18R?Nw~RRbZpW z!GNfUlR$ydd4rJ7K(}`MxZWCmnZa&wQNE~U>|P@cNMSc3RyFwqNX9wlf7=c z+_1CYkVfaw0BO3HW34f5HUK6$4v=vAgBC9UQQnIx>iP0{PZ;UN@CIm2EuU8vu}9@g zNWJ_%Kzmy_hDM{mENDTb&2M^M^TlM@@t8bodhqlLLvvz{-ptvOC(K4NNqyauvwh^r zrx*+t>1Xn11ZYmnyQIP%@OMn;NGmBY^t2Jp-fiox{)V_QssrY>Gdlhq#=mVO03S8_ zgmtC=@(#pspT~kqhX$p-XVqr64}qxxs6jaZ^m_S$vPThJ?F7#NLjU%IwXlwuq1HxZdy_i@k+Nu3A8l6_a&-8`SASKxL*~Q_# z>=1(rjC|CKoV_l@h6)W6xqUEUS%Z%(8G88ySjT_%S4Hz9;9hAKEH}D{+j~|WM9>|M zjk}rzxWn9RX1weBK%H$`>gnF`JUIY5q@@*F5dT5v22cIuyuJtGo2I5-y!tPm0rkS1 z9e!WbUxIX+f}{>cDN$?CU1O8$0^mFzr+&3qY)Nc>4iUlRY8i^Ck#H{GdJ9*3@^TgX zN_?=9M%lddSed|)%gWMqz|J0rD``t<6$!Kc{4;rh22A9S~`_~18j4t7IPEx=qq3cy875{^%**+jtX21W^gMz-UqXX_j3 z-NR%~rFW`18+H*a-WKY07hWUbbnCC!7{%#TC7l^FCTYqKG8PDwN?zkx01Q_*BPq)2yGpjxJ&9+1m)un)8fq(e)EO zj*et$xqxQ~+4wGNhEj^SL;sD`x5y$vIw1U%Upzg>RB@5ccQ;6X4-9R$%cxsbYEO_) z8EBA!TYjS7K%e)tA%jeh8LLBr7`m zaVwt7bodx;n#_o_LiY=O^Zlw2e`K=(MnQcG*5oIfX|_8W>ORqpeDX9rE9WHj2pL@l ztpGmEJ!Rtv(54Tx4v@a@y~@nk5@&w`sQN`{dsZ}pp+~f>i`{Jn6KVGdj~BP;;QWZF8|BnBup(H@)}zeDM(=$Os}zMh_*a z16u=oi3kFI8}Su|<=WdA0XkDUAmngQUQ_B6qQxn)l#P1E9en*88xSiOTh|(73Jj}1 zfT`NP4Bs|fkqap?Uz!1H$`6$C-Dp14x&rOId z-SUeFq={r|Jm5Uth}f(#mSCj;b2VQK#nG%db0v4Fh7HcZUy^AH zFuaO^yFUN%vZvK5Y-Qf)$_~_+IOp4g5W(lh^G7XL;RZCxf!+EbP!A?wr*^~*Ck#75 z=A`?`r>~E{9Fo^4Be2#W<<;taY&tv0ZmuX9p-Q^4NuOfLiwyF+Ud8QjB`hy4YKp4E zbu?S!q1`UHXbD!4gbCRcnLV(}-x{5{VP?=FL4`I`@@)784jXzm`<8`f2~tB`#SnL! z*)}yc8Q%DuAOkvhrs&YwWy-y7^jo6V)-`J#k7TwrG<@^j{loscPJ~x@>MB|;HkXmi z((J?ax3wdn)Tqz%waO^PEFVHVA#Kv<)3fW%FoqvE$2<>8z^JqS?e@SYT<|seh^%~5 z!I9vzUC}-$D8Lais<}NqoHtI5cF`- zk`-$W-8l*;&Hgww6rPf{pravYAOXt5iD_jV?uGKCuQs!vZS`HV>GM9q;*TlQ{muA= z&@onR{PNG9#OhGEmKlr$^<0a7Wr}A`4JS|LjLT;$KDSs~|&5Go(=@+_!{pggH z+6h~PB>9A&CYjBK&ZWx6oOMCnw_bqtHT|ASUA2Q%MbN6hN@iwlHdEe32;zafmA|33 z2*Y{HB|2b-p7;};%lI=)xJI5;6o}^oi28H1T zE>LYs7BUU$uPH2V-HesFL7V2CKXq2s=iE1kHF{RSQWI?7b#od(b}P1#}(+D=f*`t(bHx6D=XWoBfx zv7;ZIZl7rSRhQeKvB~y4!tDKYzaA2S~!ajyJ-GU zURMxDu0|J2USE*YlqXP4*M)3j?KzfW+$3j!LOhT*pIhi6jqtl;Lk7u-%tIL(HQ^BN zB*{)w1uyjU=%0d&x7y54K8|YY!gS^s5#*P`z6$jnnOYjOb)e@ndk@j_hy}GoZRCCl z^ZQk%h**);0>2OsirO55ThKOGnFa4b2_Y{+U>b%%<@8$cG2&L57f`VQN<{SPnR;-N zTfe9)vge-bq_OI-&MgzAKZ)8R5Tbxu=_F0iPc~+!bJ^K4p20-WTVUls=EPwMqWj6* zpUdqW9;$g*{ML>;hLSoI3=7zKWag$Wts1TM+)*XdG8WA_U&zylW^d5*vrC4@{jN)_ zKx3dZyqrKDWX$Y>SS(KY;aNKajXI4kv#n&IRZ?*{<08iNf8xC1OVlA^{;u-T(1{_R z#!_(Xp8u-zMS(!4yff_O(+uZ)=ttj?yaf0~XleNt@J|D_@I$h`vb zqe72Z*%QoR?C4jbV6P;wtO~5`u#h!XHm^C+TPydEJyBbKbN-vAS)6`D(4@0r)NN(G zi(|T6CgtNcFUiqf%9eGAns)`B1)8lzFOmpi9`u5YG`(`1RE;J_c2l&`C$T+LN$(Xw zsJag^m0HyEZQ8tu8(gKj@FI~RSIk7!mf4AGXPO)Y48`$OIa@Lu zNhB0s+rFoWVnbwIP+$2fT1jU{?s83`+uEr;?ut0*DmCX|7!DAx0Hgec3Y%)Oe&yr= zp~nVXSh+Mv$aO(*AAV^_p5sXUZ+l(%sEawato0~nWvGnKjnk9JcpBcXQ} zu`eR}+@ENdkPCh)W7AJ{_Ig6Dd87j8S|DkL+HyR!e&Lh_EzBEDfr5nF+`Thj@~7wr z_34$<)YG)A3P!W~7ePPEI1Fz9iT%4*q(yu_K|vZU$PWTa4`v&q!gHryT)74SD8{kw zNjGSV9APki1Pzf*o`d^y?t6Nbf6pRqr6MWp!6ZO$eYD7S#=@lj`k;z@`vMvrDw>Oz zvrt?Ho4sUzZW&UzT7()bWhd>_mU%C(t5V-%PQXlW#$V*@COfV;+h! zzg3q2GT45N<}*u4VVIVftn*>RdiKh_tTf#XBIas74*`0qxP)(LXg;@+CHVZ zirL=2>3&PWTX<37TP}2$U{N)~N2|jM@dS>5LZV%gSGl)jpq0WOj6E`l=;|hCR@{BC zX`qiGBh1VNNFc(i#4}{v4{; zz`|bG-dL;p^k;>_(ava5`>Jc3i~xMmUm=5bqV?TL38ea9|bYG%LUXD7NT# zoKawSudWEDhrMN&AX1iL<{kF4=^=%pgY2|xX%0(Q-n;G*xMyg8Ocyh3E+c-|`5Q&wKIL zq5gh0R123(24!h}Ul!IOz4i+H#wfAUZX*+WjAoCaRun!!vkd_%-Xk08S_oIv#0?0K z<+&I3Q#56wGn`v2p3ET`!YeBR{S>X<%rNd*0R$1629fSsC}IvJ!X*)K&<*n^nI?4L zT9#wCBRu6&>tXreVocRC3<YA-*_Vkl|!u+mjISeRx0ddZ0p2^ql80f z!}c@@O%HBIF88Z2Gb85&rz8&&UaOWiGjjr!+d|0{v2>{GFnAGOB`77EQ40nVikOse zY7$j7Fai=fPK21cKhy3?%JaQZ%JiIahp=V5oLMa#A`UFEy?X=BVpJ;c+b*!Tw!O+v)K@^gd6BinWcuiNH zSCyaZ40JSm?>55LQ|3R#7-*%<1#J<}ElJs>2J71od`RujStM0t)WvO3JF3Y8S$XrI zP87T|mZoT9QZjtZhSG*w@%pM>_ z)#L}Qi(jtejrD9nbP%GEp4*q3>acOf=VcCgnaba;1E3)s3n0>Xlmcn0fMgL5Y0Fj$ z>UxNLns*6?;6>b~K&FRh<5v!Rh#PfA?Crs*ddxreFCAz~iAA zfCDc=wmb21y$wO#Wgch?gUQLKInX8so5sz2RIPgy(_GAF|I-l41)W2Y!NU*2sha)$ zSC65I<-r{8SImUsKtddfBw?M-Bq?ybiUW9ci>|9|tCrd3N=Z&gpY1Ao75_4L7KAzx z9=7N`DF~y~drf7vBI$}a9YzG~r( zKxo*9BtCC7x)xR2$(dSNY2U@)De&8)4d%Raq|A(CDrtLj(-Kz7VB@V*S4LgPP=3It z?w?#OJG&g5mm>WSi1%o@%tVIwt%#!_x^6ciHAlcvp~U*)l{{Cu8WL^8q|p5k_Vt;y z2$~fey9S-QomOoz26@Fm7qVA*Ql?EAZ8oD}TD?LixAet6U0YYxJJHci$pbtKeFL4= zzran>BsEYype8_H&MkYC+0}O^a~x&#%mK?@eHamvv3B@w*F*PqF_m$UYnyDR#loF` zHa9^k)p~vLadQA8`{i)UO_Kf!4SMt5=b|o#fZshGaA&ZB=x669Bz zmAVbUoqZ%vu(Gx|7Ro_JF)%_~?b!K;SlaOx0A-bkU7h1X&$v`B){Gt6v z8Z(EoeF&{t#piD3Me7Y+PNYiz!`@Xh%gXXA>q`E&ucJ4y8{&zC1oqDFSPLjyRD<3N zIB9WfSm}a119TKC$`sg!OfZ!4qs-MftfUT~({$7e&U$Q0LmYVrMmSUb`0Kc|zB2w8 ztR?-rEdtB+0_V|g4z+n4g(XpWW(}%2bs)>b9%6D5j;kS)FOrnYK2?Zq@q?@%-%AMd zS)%@zUf1`pn@rh7_>loc_t{tsCZ6U)CTD`H~(4`fA5_)P5o0weanV#G}U zzbh+Zru%olXRu+L)oJg0qD!C~Lw$4Zb^KZ2e5u4wwAK(s!b2*fP)x0n2MYB-F!~Mu z!1|%0;lQ@3d=Rv776I+{v})jHxL@Ivt#>iieuR8 zB)vHF!5c@>w)vF#R}TQ^O}Yj2!P@Ef?@qbbB4#Ibr&MYNV{>r7;cq^MM1=Aw-66NpW^NScUDRSorx7GEYZe|MEb5W8%6_@H$G31=FKm&- z3MS}y*`?OQo?H-#e0k}p@cd}!rqmFH3$JP!yHad3Fv2EMVj@_|s+qP|YpEFf6 zr>5pSHTAw#GhfyZSnKOu*UE4x-@F>$M(J>dC{q7q5f*L+fE))l4K@W&YLXBwu%nus zg8w=0<=8{?or~edI*~DSAxAlwrhkM{M9iG&j?ooSXvmIJ71#Y z{LMC!LyE&-l)wT!zWn!0fSg%4#vNHyD`>bN^^+`kj=8UxCeqxo9*C@{DOH4Hb}AEiE`9r~ zp&|;43_)rhl>nV3s3&ai-jLNmVlPNCD9| zL-Y5)ynPpwFBP!IQ|*$jq&lxW2t_EdbC{}9yj*#p&9)xY zm(1Y?%zL4W&FvtufxqSjlK#fW#iZ>nH_KgscZ@Chd{tj@-14nMOy-5HsfIYb8lup> zG~6i`E#%5T@k%IR-vn*grNK;W!C^#}7CrI>8ksLjyGj$*2L`v{b*`3jLF6&9$?^5V zK0#y8pzzk94QlIm*K~Kcx;12++~{jee!$Z6@&>#DmB?x61POg>vp>J=F39)qmuTl3 zf`-!==N)-^6b5WH<&W4j_=cgk{bs^~ST| zr<%xqAE5H3ItZx49FZuT$yv@JFoXb!KGRf&qdHIm=YsuHQ^V52WEVGQQ*p$Gxbm_cez#9XQ*qdl7nUr6S8 zL9?)IZ>=h#I}nv~sehr?XXFm(YZU_wDogWJS-PKU0(Iz&pTS{4o!Hr(DDMvSS~-#& zT9`b;Nx>SX5N+5q|7GlMT={QhY+bE@?9=cYKiudjJbL}uQ41ffomNG9S#R| zWpk0UvPj@P-`z<;(i3EcVsHOHIAM~%a~^Zr9}Swy9kFvkcJ@ZJ15nq(OKl|j$nNo+sR6Eg-RgoOBbFlc+qTr3 z+ey&GZn zWxyi|3(c)*hg+2f_s8Vir-Iio9zxmMsa<}q~R%9-_=9O z$UgzC22Psj#F1w&nhwzeje|2Gr+8?;lo6|_Na;X$a$~LiHf~&RrutzU4&P3u>>^#pCOY{-E3>-fDYtw?CZTX*6$i#D5#jG7n{P7j;(zR zoLZa>nI69xGz*#rcq>+pE4^XH50H8#!$fM5I{pkoQ(lo2fr$Rg3@7EDWH5o>1fqtaECL`9>t=YDh2xp-&aa)ywh@Iz&KQ%R*L@i{1vF$0MfqnMEK!E|Bc+I**W z7=~b+LY_t=-{oallLzjX!aOyDE%0j~giYF^F=2p1q%&JYUUZV$lZD|}H0+y_*{UKm zz`?Uw3HgqKcCwo(q_9(A{s*Sfg`pVAiJx|+J6QT-(6Xxds<&XR!EXhxth2VsgDM+kd7EpV?o+EJa4o8@b%Kb!F-N z;vTR9PAhn)a|h;!5DhEQG1&w+kp< z5y5E0ypX`L#vdAF^az{@|3+9(wPML>s}*|zS=v7{*}K`=N1M4{{$3xl|)41$h$*HG7_frz#Mi2#fN-CaStMOw9({H-g?0NEry=r1atiPpmq_b9`A3Brg^g%3LWVA)U?wO49-v59J5yE z8DYoeJdca=;k7xBtrHn;-JZi?E(+0+staakqAjyCtaOfgM&lHr9|@(|?XA-n!h1=j z^T*Q4hM(New@M0u4)lEf{Ndjry?*$>Xw=!`!A#nwoIh@~3%OOekh&$#B z_T^0x-djm6*bAbH4Mm0lj>OPkC;~P_=#`^S8jErik z>r8~bFxGPpwm7y{*ij5^Fp=BA({2VfJb=?|5z1Hwy(>X80<6J7!s z0R_u^&%(pk{@l_AOg2A(odq1~){gtc{H#o07e~DiO23-8fxqSqLjmU)<*yv2VQqr7(>lEX zly(>&NtEx9m(o}4LDy@i#-GkEzGwB2C(7UB6kZ%wmeD28D42*P9Wy^jb(G@mhwdE| z`V8}%!||cUDlvVH4H>F{O5U>Y{eKEhb(;b|lwa;p)N<+uVi3 z&!S$E8*<@zM&$u}K~+UerjCq#r_N=t&)mi5`*}hoJj5_?h)B?wtNiY5n!G&Rtq%w3 z5(@pkP1=8;HDZ*!vTwY`1A}9nIs0le-X4#o`K~9oa zPnNS}!+3(t(x|zVi9e;@qyohx9wuA?+TtHLX7eWid1@eY9m;K6#XNuO_k}8tWj@A#fK#*hzwBi1Z? zBQ}hA>}w!UP}7H9OWzrwbR|~G(!Qf3ZEe{)*ljZ>8AyIJeqiKB9rq?&)I@z>^8S6I ze`t@M!VQzdV{1y>&73?(==A;14Xqs%R)FbjSf2il=g6TaJ7@@NSI8z~gyVORT!>K? zdGQ5(DT>7A4veQ+W&EG&pa~IHMOp%+fyqSVogkDJWdSw8-s~T}#nx@_!A7nFi^Qf1 zu~h1buP~HWrfLsp*hNS7lapmj+6rg>2Vp2iuMeG*r0I8Xho)`X>1@I`C2NJa&#JrW zA@Sco;pP}3(vgF(#r7i{+dqZPFhT+=7VJ~rCU;7nELoAf8 z=9nspqv4e2Y9SW-$sKWo(~h%Du{bS1j=w4+AVp{)aJgFl?S^D?SdKmG5+G8`R%ru969RW|5QCuvL;uXl=ITSc>z&1*5#@Q)9< z(Ox?@;;6IeQ4niFtYmCB_i$F71{?(y7+{eRV?6(|SA5$U&}>_ifm53{jeNTl=&18h4@NTslnQ^OwR1z5GnJQ=hPGc zr%lanqE>X!nO*oa#s}-cNppp$1DYBi4I@+w=p+8z>9tXRS6QXr{tXAZ^h&ApU$-g1 z%Gy7%7@4Obc-sOZajj)T zNPShdyrz<`;$Lr^Ww$kCqj@rC#Cf96-j}eAqb0NHpd^H+vK3gG@G+WusS$tA*Lyi)!Z;Hj{3g~HB>7$L~DXd zkJYTz!YO75PU^Ig#ic0EWG7swVdj&&06L#ZPPX~iC(vo<=ieUvJT95{{6!G7ZRg10 zLUWt}Yd`8k-?ELA&+Qs-SN8aJUrqA&d(%3e6!TUrG8^GfCJh)x)(1}E=G9SyrM7>S z=~^4UfWUw^VN!oseduL8t#cI+0_E7R7>FoQh34WH`mfrec95= z>g6>quib?CB}1-@_S7AQd1NCpsgXrvTC08U83k71BPfXf5)6E{y;?r_FPl73zCUpj zsgs+qD}Bp3xAmDbvmm)k^7z`=30zytE7=;L)hH(10dBmq+L2$c)|T2(y?JIDG^%~U zOB5)3xh>&HL}iS>&0Rb1SV4`CQ!Cib=nvqpW z;@Mrxly_bv_RNY{ZO;c|>>5ok8WjnZD9#tqH`cWAtK?O?_GJ2{(+3D93+z>((RfL# zP1c;CQTYxG3zg7TFc4s$nF8vKrAc_NdA`*jCc!+C$;EzU{k zPzoD-nY};9Upo)}w9km+J=#_s1TBQuRohJQ#8!aRWTjvVC7lR<;pZ!T1JaU-6^$%% zbb_>Yy8%MWjg(5M#f4FeA{QM~MQhb{O*c*iGaij#8duFc3IlFKh3}0^!sv8y#(Vq1mi7vMRF)foRu$Abr>4l_^0kC1t_pyw~A7t2ap$)0xowPG4qWVD*4lSa-`;B9$|$L)GRY#;X}`AV_* zjfjnS^6UDEn0UL(-QE0uPM^DlD(01SQV$mY?ghh{C>xq#j40k{fu3>?>xNM6h<7B# znVo0rQcqQt{+9f|UrE6B#um2<(gqkOR~$u~gAl6rKTwFDdkR*AjgstkPdTJ1*P1J` z%GWF72l-St1J87$U(o*O)r|O-u_v=j%`9U?lGSEAN1^?oK{wZ|F(0a@U*=X^?ym%h zuayo8hhccnk3QcsD1;V$N3Du{KKYBGt?pN*1$SDkUbdnGtR6Msvf3R8mbZpN5p4O_ zkleTroi7-3n6X}d6HT{7Kq_!MgCwP{Xna`7OjFKold+BrvUI#$>M~sbC`Z>AX zaOez!%~qkCtzUFhS}KbjktQY4m)?YjOIQ^cZfK!XrSnVK)Ft0S?(BJur*EPgAI=-_ z)m@vuQV;ncuDl4`GwTJgBvPu@mBL!r!qSo)613TiudPp_bYT%=$YIa#7?`W(r(CH^ z+E&=0x2mso`AA_T+e8(M;n$Fh3@BEj_3Fv-TIISsSGjNT=>^81?l6$E+KNB&!Q)J| zeqQc#R8R;}XSW6RD)vFmZnfOSOaiXIA-s%?>emq#0SnjYbW4Z#@in>cEL^>;Jk*rj zDyOrc`UHFf)_IYdWh_F&b+;(2pOkEVqa`ON=&|;!Y-yc$aSW(l8*^g{?|0_rIWH(no}4>*s<+*U9OaSf7*_he<_ zTffSly=i~FJPdRTjtochz9!Qp}WNCAH+%U;*qvQe`z9h>=m$wht2 zUx-^sPRBlE#>L16yNhGS18b4OE=3g15x-K;yFa8aV%P5C-J?v1z?)EnpR+)hE?nMIne$J%Nf z=8~JJ<4en_ZG`L>4WdKYrFNSh_N$Vla*V!j6~iX&gZ_Uhnlcsv@!1}trX!`t0PFEO zfbu|0jY1)&!si9cLSC3;O6I;fWBhsp9jy}o+G5Qmv&Pv+*p}M)&A;tQbp!gz~^z($0PH|aKfCDBg>_i-A+dvx`Lg&DXqZO!SU4b z(o7a5YTb^woJoEzKXP?tR^`!Q)y1yH)Mw1+zWjaELugH9`4E;-++gdkr;+A?MFw#_ ztI{q*2?|H(I4j-2(6%bi-4gCnKmTvzZ!8Z(X3BEk&@Vu@#0#arf6*#NeaO9As&uC# zvWD7TYt>u8aZ{F!+GI5-LwkC%W@qXGGxB%*``EMO-LLr7LD&o5PiuNYy=?)J=aj__=@gc z{k**aVZ@x7T-keLhJz@|sAg?Ww(dJ8ZF8$5cF;W@htl~wK0mbijfwTuyl8*|z$t8Z zSsMV#gRDBsUA)W4SJT5?q^-ERHf)+*56?tUl-4q$CUKcB-8@M|0L@B{rbk4@cH2+d zEqoOx1BlBIP_$vQUT5i})FzY*N~QpxS=Bf@KUkk!07)N=D70jiE)MP)6bH$l!YJ=w z6B;#o-8gSQC^`AgwVXHw*23I;`%6Tp(&Q2nhTf)h-YUFsuIzj3AKaeAhcjO%;Jn-t z!s%>FZuqn|P*fG1#i7{z5NUOAKlRltflBxe{zZc~y_jlqJ_|dR3|(QVSI{KXv;^TlS@lJR#jeD2P79pXe{*H|w z?Vo?yw>0=~m>v@uNDw>4rOn{CA04(`4u5<`Ze6!ngh4{NkP)vvdlBcIh5|WzxLCdW z`FBEXvg4vsLF^8`aq2YC^4VRmARXZ#f8ZU(sl%apS2%x>ttR7&%twk96|Ab59&@9f z;U_oq7?&^)7-{4{JZ`rZN=1U#cntk(lhAA#b?G4vd zAJAr=>yE8|@zMK6%hi&3n>E1Feew3wVV0dh2~A}9$5I^cj}|+kX+yl<6dTx9=6vU$ z`=+!TD-#scND^czXZuBqXNfpBjxB5=cO-WSWNT%FyQGUewbjBmRwDl{cZcj%ifS7CXxjHOLNQa$vK6U2Q?!ju31J?d7B7o^Sy0N(G;vZ-zo4o}+>40pW%OoS#e+9mw1>Y|^iwy(omI8;NmWuN z5N~SEmHZr|>3s5Rub0wpWc`WRNz>}RG?wCTh}ATIfR0~QmA=z>G4%uzP;^1WC1{X( zqKw{xN~{6!i?75bT`9&k$rwCf3zEtisv?gl<~cQ+Z^DzwaIm3dlx=f=d#}!}7hYDA z^1ghNO$$3TwxZ9274Gt&WUh$c$mWM5{CvI|!~&t%!uf>0EueFq_oZ&xPwwPd4Hn@b z7}eSIN(U*=(Lbj`Ev?xEBnn8!Af6G<*e*`Kofwt*vW6PZ6%;imm~cM@^VS#_xl`~Q z93=dn`Tnyr?vkK`PLfn8K3ilc)7QbMA_vjLG||9Xgs-qMri@y~?QXbUmfAULR5i0G z<{<4igLVEcpO$iTu-TalMS->f@WuiQscr7GdfNAR9sluR(pVe@?N;v3ZZ05Uv^)6I zLk71VV`Ab%#CpUG1(Q41IHmB>+ z;nEw`pKOV9CpmP^zdtqKT&EbyR4ERhD|}#S*M%=f6l9tTiy0KMO?r&p@D%6!;XW@Y zenskWjc~pL(p`$kfX1s2)uVsLjBzD*zg&3M2l8m>QZl2<&206>o`3n&e4slsv%3xR z)@|vNwWOYdsi);U?QoEy?wh&~SgKJ&9iHeXn4=WmmO3 zcg-}IEb=XkTW`@_K+IXuZmwwB)IwmVTw&0Z7mb))s;b&x_jK5r#|D+7R(kz zpnq#&8$?D^J~D6U93R-_Q)csXXx8Tj#v&g`WE$-$$JGjpwLL&`)tfTkU$NItoH-$p zm+$?wux(AB0-QHS8EgFu70YiceN{|WZa_c^o2434?dHuA5rdY+OI>kx&v@DRK5L2= zR|1CBc{e`ZI&71PtcuT^k%~1his0<3%(jxW)TcI$UL>8g=>B&js`MR;Mu!g#)sz8V z3tIJidO1lAKx3eiFb;Rypm~6f6OzJZ?#!&(+&+Uzpliudbp}G)8uIPnF`^h)E;x|4 zd-X0pkDyPbx2WnvCg6<2L~?W78L5TyxA=K8@^S!-U{8(2uLMZy zES}^DEU_+pZ0}{p*M-KV!l%6-)7`#byka&KSWufkOS{;Pm~eJ2sA^-63Kl41gQ z^9%2W1)cg;`D%U{KmEPVGkbdRo6k%A`}w*sev0)K&Ie*V<4r0}od{hInv5et+_Xx!f3`nf+<*)pR63O&cr+tAV(eH$$bKYQ}W8-Zo^ z6*lV47~)wFsysCwx<3G3QaKZBuCi<(MLTw7Y<`*CB9? z(sZ9I;6(rw+Yr~b;XmV`Z9(5=KRiv8xrDP`j=z+_54v#iLODOD+I|Eb>*k8dtTz~P zwNpQNHV>cnF1Mgl^g(Z)!12bK8X79{!OWV)@>nsM%}E!0!wy@q*;$nO-W#$e%uNrk zABFQhF&9`=N5el(EQgL`(x~>i4OgIITMRJ;WlPPghp80AZ;IHv5{BO7#We2$cvjz_ z{@!uo=I=M8l9|nLMKy`8uw2(CIEphNnh+G(zA1+IGFJdTK)QXnz+aWj5E?*g%ztXx z-s!g$TUw$|n6l)DU8rsqj4-Vx&c#XCJTIkAZa%5xvi2|VOeJ-~Wv$VboSPAJX0Ho_ z*wJr4al2tQ|M1dUtl9zT^Jya#|yH;qb zRjhWzF7^*=u2ibun5E%16>PM#b~R?En;&%4JynD2pO8crAo1s=!4z#Pjd947wAGlu zdW0_s5}%L~jbQjd8rSw>?KDh7$=sQI0oW!=l8B+$<+|4K|NXNLzo9pI7q* zAJx4S&ABod#QFIz^l^F4C#Xj`iFP}vehK^rFD zd4P7K#e0LBO`nyw`5g9-Mj9JuL;4&MQ?#zQ^Uq=KQuG4cyw%#gAxhp8b9;fO z?rns2QgEF0={9GPicC&KLz!#Lg{5169X4`9T((HePr<;v;Cfga_qoHuq$>xy)N1?R z%{m<6EmV}aMts6{a6;eLKqd!!-%5jt^bHnwCXC6K#kl6ZILkL6fPp6VTM^AGzNMaI zdK0I-(v7t+A6i62tgTPTvI&fRS};Lw$flXdzSLsSNyj#X5Hq3L8y^sjw+&7K{l5#B$@EOdi&2ZFPS%SJlKx1xSv&h$KeBAqH#;4oOMOhcp>5}~b zcmana{WAF@{|j7-e~>3MvA8o-oaCJq# zuPlTPzX?_6;gn{so?{ma=)*d;6e}PM?w~XkbvKlbXjP!-3g6XEOe0j&MgkVjix{qc ziHB9RXR&QFL&WCi;W>dK(p;^{-*0>_6TQ(BsRf@OIsz(DF{w%Dx5mS(uoE0z+w%qM zf=+EF(ckGg;ePHlp)bD|f@h-w$NPQt#bg3cf_B#(tbnt#L`ytO4ftM>_?S`wm5XWRuF-~__Ydia`|VmBq$^@1);?ArVdu(^I>fEi4~sQ8vYB5ad{w3+4C> z=jDD%I5cCZB}$jxDhdOJRw!hVc#>GH?N-e!>BX00$fL$Ib~g6KxW|%m<+fC*NGIcF z`x8*dLW%H zW|yqj#T#}Kb%`1Fd-gS}7EXmPN&2`KX3=o(eah|4H#$O2o0YvtrEfb= zNNy`6!Fo2VRL&E0M!0t1=t(LkZBkcnC^c>u{YmKod&N&{tzUeYQekDhwW#@51l(q3 z&zb!L$X_2D_KHPDf5dotjVH>@tM(%-U|V z3H%Jga;87JoP~Gocbv-<^m3#gMZv!xa=?nbm0`~avyl|Yy2BwzR3X+?F8$dPwUZ(J z&?N?MxXFX5LWWa};K*;k7@Z7Ekd5TC-6XcC`djS@82CJ?P;6#asrq?^kn(+L+$%G( zi+Yeqt^vOmQj7nMpr-Bodsbq?5U#ocwv{nX#3A#qm2N9G-?@&&zkOHiUP3YC@9Aj$ zyxMrdse$&Dm7*`PSY4@VHMAhMw55vUx_lt%5}SiJQN1#!!j~P?fqOOK_&!!!*yfoj z__z(vtLh$3#iAXY9SAZ#A%HAY)3A=O=R{9Qz8S`1e|HZX4NX z1ft!YS|AJMJq=^SZ52N-hFl`)IDCYC9-{xj8k{IF#y(8X5>&9M=6Hj`O$y}BUTJOjVd?y(=YwN^_kh^F8i}R0+!Pq?^nc+Xo#Z^o@V%>iJxbH}qa1-1sPI5#YKZtF zWV5`GcIQch<<1O|@5!~-pay*yh95LJg)`#oKE@Pa{J^Ib@C^=aOi5Z5M{=6ZSzRPBKSQ zhA;QAw~Ih67xltb@6zp>vep%Q(J5v9X$4>zN--YkNrkjB{h=8_%I8fAvVi}?O;!aB zR4bIdjob|Usot{Tzs-LluJyjacMe$$i?+NB828XhcPKukSpsZ-`vcl&3eQ0^pSF+& zqyISozHSMdCMr2G0sFl%$HE*uU>%S8T6|NZcqed zYSmd&ZI2GaeZ*vmlM?q14pDwrlrVUK_Bry5M({c7I9(oEVvF@mh%TrQP4_#yMyL8yvQfKP%d+RLNv;vm=Lw67vw|&;u$*vJ{_!@3<%JOHeJ1X1gqe%@fEXr& z@?DW)4}Im#Jze-L z=dj)?0=44CP*LQ1wjM_C&2z?=h_F@c-{N!j$X7o;M;SlJ5~VLB*2TT&0@9f-1i|Wc z>B4gNl-Cn$mM|&%q_$|uQ9*z%9n9;kP|=)E#BWYxnrJcg+DCR-HeXmlhk(MH=x9~u z=HNR>iyEjU5w$m31ax$*T==G#a{bvWMKrU?5vsKG^R1X*Cbl48w<%KO5t_s~cgeS`G$`)Q`FtwBAX zhBca0OM`60G+0mA!F`b@Y=o!(Be$me&STRPu<%u1zmF<7R4tDg17=wjh}_3m!nsuG zD~)uFy6f-J`b5hfpT_Ha#wy3-R!eoPEXQ|N?XaM^57mHJG8bcBIw?4JZYF68ZIo1D zh_quoS7^kK7Q5Fj+ue4zkcNfF1=sKFbJqjgW0sT?WHXIxP4e*HyL?iIzSU&LNnl!+ zBp9lQ%zdlJLyDXgD^>fXUdjfiyYx0Ss=Zl0>SLP!*wYMK^d> zJSKs*(>A2ekQ$;?)_bJbM#Z~t&Ep<~2k1(W_}VcS_CDhDyY1!T)IX49o;Pe`23jCY z06)2$2}L6=tk+f*9eUh!iT-qZ`ns{g)#k^5G-771o{n!b<5`o9NUsbS9OiOVMHJ0E zJ{Q55KW2g)OTgOaVzn0z-`b;JoMOMsB_rfi>QA~0(~37pzn#-Lm1a5D9Oj% zuGe`a{iKc`htX>&@CwcW=Mrlu2r{@kKIN%OVO&z~k7B0jfecaz{zNeDViKKGmnO)W z0-|2}3%Q<^B0Lm0?({q(+1 z%{jZl+fwe=w4B8k;$XS?Ecll3npR$Z0rV|%gYiuSgd zU3%k?ddq547c{`yxUy7l6pe6%467a^CeRF$6B#4(uWh;xA_# zz7M~!mt+$LTNt895NwdbGWVaI5qm0B6zehV9JB$`>UBJ^eOBj#3LSphhO@w6{fUc+ zbD%<3B*LBh=#nUJ&Q^X5q2@ok4#`yO;^>7vy?OUOuYBxJbf0{ zbN%-tATpy|*9gOuyXp*%jo0pK7{!P=lWj?=THESJr%ge9odw&iu~)MGii#L|z`Ier zu%m?s{&@jlizPKBhvnJ#B)8^I>DN&HJFHf4Z~hN#bVo}RZkZp>X|Iw@$K!Y|+5x{9 z|E=jJOZ+}XpXPPBp3p~KV5Y)BZ$b{w$c?^}sN_%KQaI!96I z3=Q?POE|b1kZ)`%%trtFLed=LB*t&H;gTzmUuY`v8g|13AylS%_+1MJZD!YlAoEK)oa$Bs@YbLGuuC-9tBkY%N6#+pf z|5PJulfgw6X20qWNWyDv4maRlSS!8uZBABKzbb`MWZzZesLNWVej87EAb?A+uY*-g zs#hH9;f=4{V_%~bm;$BtCcEJEHTGRB%`>HyJB7)?f7}NgT!D8J*%&A;ZD#bnk7P3N zH$I=g#;%9quc8Ske9=^HnnVXbe()H6ShU~i&h3^Ou=9oV{T`t&FcuT=UJRx4mhW?t z)^YCd9dh<3B6q%b^-rqs!3roWe7Cj)**ectVos#;+!mCtNko@qg)0_`>iuy#%xfvK zuvJipT`l0vU?A@O8T5PTBCiZG$VQ%T@*iMBd6(xKH0x?SK!YBmRrsd7STMcr3!g(f z&U;gq5$_6WX*_?KV{?@rlR*39b*{)=IudH9tQ`SjDrs35~;A*@lR|dO370 zP2i%BRxXV@HuXuAoJB^QH6h0){j!#Uw-PHDD@{b^VP8YP_y72+@}N%>cKHbOuGmz1|#$W(-zfa46)&KU|^ljJp?^h3fsq zpQd5!xpD?w;xBx*VzC`Z7tG)nQ#^kCeRu3;mYdS{yr&>ZU-dmczhBarx!FcsC}4<@=CKcLsbON$Uo*U?fQ4%_ zRAOfMT`~^Mv6bsnW0_vUTNFiHs2&A+|A(hbB!HiDkf534ePuYSUSd*cSg3FTe1CDi zw66P|;naPSK$6Lvpd(pn?+0@v^e9O#!C4<+iE*?oIY#EF#`sn%hhQpH7+}jBSHp2W z42f1oFDd1n(K3)r!8+30@)x_ge@W!)0L|momP~obnzk3IS6$2Yi+P|Q&v~?CZ^e-j zIaBh&7%ti~zPQnu82?-aJ#t>YX)R?*y1IboCB6`)m-{*d&N48AY%Vr|$%FG5Q@*fj zw~Dc_>6Qb&K;lfk(y3*fJ6w;5*|OqGyEWyCd>g^;G?jBPs_bVAzNho%v)^FPCdH|q zOGO27v73d%S~#@ajbS~3%#|!ueGY`i)tV-fEefP^sJ22#5#Dwhu5aL5LS{GzvHHnJ z@^t}1V0-=a+@!Z_uZxMc_N&iHkNnbY+py)%|>YUk%CI)=wz^Vs9r4pR%Zm zkCh7@sI(g6cWXtcv>v>uEw6eC!mBF@H9Vrdb^$&{ET$A=APLq7z`l+{drJS1Yfwhl z%MT+UNqj1&g=VZQL#8_Sly3(v%dCd28yzi1Y!XG3cdO{ld%M^wt^*eR>ocVg2Z+M3 z*dn&yaJaEcN=H}t~`clk4#z@>8ywOa*6X?cqPQccd5=7K1o9GI(e?S2aDV=|>% z`IL!;6$4Mv)bls24YutfCiA48m<{Enym!P6q3IU?*>BVaQ9J#%N29IYYx#H%DlW7 z6Y;`dugXgvAqYqD^x-5{Ga3j}k^HCBo~|8q6XMOv@YD);6#b!8xGil(p=11TflT%e zdDaS5rt*E4b}Y`QSKMzI|A)9b_S2q>*T3^`MZOMwlXI?(hx%Xqa2y59xxAqw{Uj-+ zfpfH+82Ls&#aOXyHmO&CZd{DX>oh_;YTyoPKjy|dEVBm948Y>^@F`m%?;t8~sM6nz zY2Kk;Pv5-&I6=R}&ZtlYUrERWqvGk#b8lLEg;3@ZeO>cgyZ`M&mOHO9ryADw3n9NM zN@I5My@R10B2*QO%OJZ z;<>ZGecweVB|Rx9XvpTCkM)N3?5NY00B)#e!0l?-^Xq+^$C(I;!p|#4y4*c!_zGyCV#J zb|kqx__Uitp`i!4%C3Yl8-blt zlz%;?nOC;mIN2kJ$KC2kLuCac^$TCDc<~j>;`L7z(IIf|?BF$g&Wz5IfJ-jVXkzZa*h0sC6`A;Sz-^+Sb; z)9tX-72NncOtr3)WIz+IHEdFYnfgZ*_-&FJC|vmnqv$rM!e-Y#eXmp1@=X=YP=IS}ZBaJGbL?7|D(@MIS_=`6G1dVTf=HL%(N$K{NKU{}A%_voI ztR~I3dK4Pq{(Qotc-o_G?j{B2C5g7YLUq@5^VI?}*=^I}<-FN=g5pADDmjAOAbK_U z2x>;^CB+DJ-=}y|u+t!)Df!v}ZS}NpRyA@_6WhPq`A1d(OgqH9dqx;YK2_$HT>q%0 zpB$U6LGtw&S;$Ej+!X~G8>~4mxt)W)EZ`b=Z>@fHjqDn{ey=>D-5oFyJBr+%I)QYQ z*_?H6WzUQ*1f5*CSzESc_ZH)orBq4JvXv$%w}EULzKcqQ;_0v0+kSw*sR7wlN2MqH zlde21hUl-nKeFoKj(5TGxc>0t6SL!%+8lMcxgbD3xv&u%;-Bj;a`$5d3$W`i#xJ6r zXzlBBGzG@XG?9s4kM7oS0 z6tSpy<}Wc1#o)=GN^)Vcgl#4z_I3|s!d}Wv7NT{5yimKw+IO&UD$l*4-jwQ}yVZwc z+XKk05WEuT_cV`@a{Uol=4%_aPDgq0NRL?rTjG*EyGp(~#f3zlGJ#^|i;s)Ybx}Fx zv?gI@tCbC5AmnQ_w}d*u4oNF#urb-f#;h&S7APlfaU%*58oaG+LJdEViKI$p;+w@x zU>|Y%_00&wN_o_7hG!YGxfw<4=CIQyaa-S0Tezvd4Y2qx5gp6}^;z zADS|Zm}6tSnfob4jJU=nEtbfrfEWtpFcL`Y{e}DjbJoIIg=}M#*5ljl>Gvja&|2Pg zpl&q*SDC5oV~3N56JEjeVSX;d~KUP|Cp4>Lj&2 z#J4>o`!qAf0`_T3V779OS#kI8l*!`Ts?lZ^Z)Cpo#sA>#E@LVU);xhX?oQ*bjk~)a z+}+*X-Q67y4hMIqac!V+ZQR}6q4&;Yc9Pk9lbuO6`{_+8sV`6JO;zRjcUW-(u%xlIqxd8!8;SOeLsjV*_qg{6Ny5zJGQ-nbm z{331h-4cDnOnv)C^0I%yD`ctoO8`0&ts28CxCw?+*K=2L=eB>lMiU{*N0g`?&NU)M zV(k1rp4Nqg3_rt(413=;Nj9Mm-<_BIzRvod7ll5EfmNoB|J?KE{NF@^i<^z*Kl|uB z|3BQsf5`*-FK*($r2eq}TT&3qKf8(l()s6P{TH2o_W!AlVEYdpF%Nn7FDk|UPdb8= z<$tInINAOW9l^=^-_#NRKJ&k;BREMo|Aipo{1<|Rlk5Mjj^O0{?PN_*L`BnbHSIj!`E@ai|y_6{tTDo_D<#(g>UM=2LNq+d<1e`Ur(7hOis=G^>=;W zyZp!3_x^K+{XYVL)-&sS{XeI2j@R#ljxa>lC3FpcdnXMRVq;hVw_$D}=D(SD8?t}S z0!3{i>^4GQz%ZuvT6b@*uP;p&1NOHAg>bX63B!|*$$bL^ zKCfRj+jfyYU<;qS(RvUE8+-cVoVMrf4N&8Y=t%!^F2!>p%!gFH{?5 zH{E5Np`G@l*GrGgkT}ULhEhzDaFnSg4-0BW_#g74kQ4%g*U4jNQhl2VfO7IFN9dQK zVvB;tB2>;*k1SqOqELBj>2aij7taz;a5C%mF!5aB$Ju2eYg~1PJf%CkJEGbpI8LT< zmz8+_de_)!0!~c|eB%l9r|y=5Rd{?vV`r+g$%L!vbzl2}k0ESaA(3Q3tlq+H>*pjV z=^TC);izHad1lFlc1}L~c5;Qx7My}u)7W+3s3(LIb2w}b;(}va6Rfj1({O}nVDt6$ zezamB8!k?!6`Pl=&<#CazD86zvKxl+n^{}e@%nMQo8m9^I10$E)1khaz{R=JzMTSm z-det#{HXnxOKdbG;C1$sa6rIuo^T~l_{`a@zsnONIAyEE^4kQX^IH7~J##jJ!}9&Qn`a}SAUJV?O_Nlp z5nC=RBg70f97Q~1HGzu-i{}@Gl@cglO6~lYjl{$?!3(s8J|+BUdh65dcvRFRR4>v) zOtaZ*l@8yW3G~wx_?%_n#pt@*FGdh1ZrcP*pMOhq$62T_SHL)_Nb*?(s#6`SA<`XZ zHs!kWFtv7yr7V1ubgk5%h@VyoQ#_ruRN`oglFJ{bdZg@{=SA+4k3EuJ*0?DM@OinFC)#-DM;kJFW?h@Z9;b zhfw1W2$rhBS@A(36J_>mr{ZhB>Eev`@*O~R!ibv<$^%9ANvggK;1YF&@nheAqgU3@ zdAh0FH6o2+s80vwwXhVnJ8>B5^xVv$vDHWOvIb^AjzV@jN3?t+5tSzMN|8@R8pqC@ zrz9G1oU2OZUl)m$acR{Y9!Ke6U`gpgklf!Wwmb19{*=SnC32QbDQ8HsI=yo_?8lZp z37v`ok%-T?HkiNYo?M_`?WmTP%#spw^=d5S&<1WtCBgTihB-9nD?&X3 ziHcF+nR>m2meT)}-h*$+3Mkc|>5AXvPvKq<$nJ=cYou5Ll&E};6;M^tG-gmH(c-UW z)@)~&%-VhD%*0Zu0yI4CG|_=$iu#Bn^l))BqoL+M&}LpRyQip6ia!C2b3PP;COb5T zj=PDiQytO~Ia1ODDk}7BWM$+1mQx+Zty3|b^SB=jJW)^B29c8DO(UOlu#&<$#s@W* zrl#c(#?MdCTjaSC_+>M=FtRVOtBsGI@qsHZpkOtt1f!;OLjZJW2j2<|LoNnQ3&LeU zAzHa7_#cupI_n?-R@G^4fG>IVu%SCdK08-}k*#C~Z{@UlIsM_E{60l%II7GVM$;;4 zj~%!WQ;y16r5GUuUeChuM`ok5_uAawVsazP&s1Fya?H$@x+el>vul^-Eswdic@H6? zJJtj*D$8&H9)p-j)pEn7NH`RV`Rk&@EnQK{hDV>4NH$-pnpY<$))oU8^!&t!`WD+< zROt1aP>tiU^&@)hO{o(JZ3&V^*`2jjILQRPBw#cwX)v zV3=I}#PO1^B+-~Lr_f98{`tZf5M=HGPX#Ahf40S!q1r*w**mLaY^QR9*&@|tNp2S& z=~T0zBdj58udeUPi=u<;w_j%1r3|1y7)F7;HfIZe%(7m0IXP)G^;K`uxmj}&ow3_g zPwYazOO-KuWie$E;JI1CIBXG*A4#L8LMrYPOo z-HbfLa-{|k{&|Wew~2Md1fNKST_Vp<9>m*{NocLY#qLQOrVaR7Vp4sd{Kt{C8`w#` z%SF?OxRN57sp{ku!aa6J#ZXq{{_lNgsE)=R~ys;i{V;h5LLg=pABdwu) zU}oKNHErqYvNhj5H&E}AdnX7fWt0Vhb&IqkDT1Y*E2TL!Da9+yv|)VQ8A1Ga?y+iL z9}2bPvrCjL*%@-M`6#Smy{XwArXAsoB?a-X>Ep@5+LLjLGT|Sl zzXbBLU(bd5yxDZlA{UsTWF~JKvrDfEOXo>Tkqz84e56hT=E~MoIQ10pZn9B%CB6`C zFuEpWH@%j#(CzT*w3h+b!Z1o$Yp84|-f+0@kWI|la6W^;MRR2T$y?E-JdWl`ZSO;k z^KIBb^g@vRIRMXOVj3~l=K>v*`$()i0Y4j7?q)Y?W%NM&uPi1xKz{-**wsVFMJt4P z45y@a4+j$2I~uhGt%JgI0zLDAyk(3sd0o;*6@gz29^x>xA$8{cc4BxG0U}IE;c-W3 zBi5pij)Spq3TnL$-RKFzE`B+Vjjt209_B<0B&h}u3s)$;7BDsfkUwvsILerGf~cMR zE=Hu(%PRNHUmX;2kU<%sJQCsOa0ztLF=5Hx-WvWH^~2P;Qcn`WY#Y*^li>R`4 zZ)_xOMY0qymEXI8E(Wy~{rlIIv5CcWXQgmtMrCQ=|o+6~-+)>t3X}iY4 zL00={vFMqq6jg_fFF>%-$*T{NQS!zY%6CW>LiC|_k&Z3kjEHhz9H)@0HsfpdJyuy< zi}0+%Cqp)oL44SLW@Rhyj0rDQhHCnnzlH|gWAXO~zKVXMRR;7ZLtdmA)wI~>TOeN(y!@Ox8#S5tf?esb< zcbfLVmKEU1ZqJB(GJYJP8sH!0ucu@EQ2xy%znZ`m+TIq>;ZcXUQI~8+Bqzp;Ly;|Ho))i*&)K* z)?*8C!KlbXBV1{y?7PX^Lg(PBc5}16@%F3qP5P@Sq}UU7B&F_o^hyRvT9j9h!*jz- zcvs&}IGl5e7>%q9#>3toa|55zfDReQh)3w+8rV>v80}X_=RH`#<|o4p337%Uy`BBI zz>9TZgc>P66`)K}>$}yd;DvTc5O0BLoDio2rSYcBxf| z_(>5P`{`95A|5n2{>~EOOS$zM7rHPwjL`j$IjyFsQanMc!HUB02sLkeCv05xa*Pu^ z8p{HnTN;jNeLSRN2O+Cpto8 z7b#FCc)KbL<-;5xeHzKTlITxth{_3|3Wf z$(;X;ApVLqpssA>`$WHHmh#eqw1lFK)&y<*7Nn!aGbOc#neztjXOQ3I^eR5Hji?Q? zx17+nw$xu%nkxRft+t%c{g_QtKmeG?Y7#JD&@^J{Q61Y{o2U&HRicoxz2QvhBf<`q zCQkrO^p_2(dvi{$Q$73z*sFA~$b<=YdJVFNFpO{FN40bh7Ar(s+MW*{~(K}*z z4}_q4Js@BKAolCkb!}O#phyKR+uVCaIAtu2+vnn`>gn_`aoMqrOr8=JhzQYZ*ynG= zQF^vBRV0gtY@j6bM8=BpqN2(+C=-B=x{_7L-7oMKs7tAJI3Z5;$%-pw!AClRgpaL& z=)pG5ct70m(xF>z_#0CiTv*e+D{{L#;M4DYZ)x~Z#w7!`;%|h_GdoXg%S?IIDmfX( zoA0BFBh>s8g#ZLTO{9_%tSs~wu39b51#&{x@Nv4UYjlDNsdA0aPBy2gP3A4A=6*9@ z`_W>Lv<%5ime=xc-uU-rKSmV{c-`eSB;GtLSo&Y%@)gnQXHjNjpnVAGa}0s$;Y4yc zuC^xXaYfXrH4zA1^YQ9BONw^KGD$M|kk^qC{RAs1v2pc8@ z1wz2u%w?^-XsIAQCSh`|EAFO$g~FS0q{4bRm5KYjKWpyhEVb_qBcZ$#b`pK8T{WAh z2&Ick*={5@Xeu)uh#iO5Nqs{Ei(U{mKO@;@#%Y;GL_L?@96Bk!Y{)~2IY|_du1Yj5 z>Me9D|H00Z0d5`69p4*4phvT*7-KepZf`8cNE9lHzM2nwQ=H0*r?g$y_&BvKLn$XY z9!TmY@eR<@C9dzxWD_T=Buh@DMDBSs)JSc7#v0J()*ptMPm(4uvUHGlsVdurkrv$v z#h^GQrYcSyt5^Fv&Aq7kSSX-+UG*3rcwFz41mcLU4~|Y}4THk~`9H9%Uc={n!3FO)Bc9Lc_a>V37?Ye|Szfa~09s8_cqOt+i{(c8<3qr|Em zqJ6>NL87=*w$k77vOp@@@imYt6(rGdJfbGOP6+zM3%i)JIN)%XE2#vrZ*o8g>9=-t z$e~wy^)}YEhov&5Ogc1$aHxma{Bszu-%#wqa3N#Jm}XVB7m-cvG`?fqdLbz((9@c(h!T6@b18Cmm$(W3l)DEtNk(q#(bN{G^DAO7y! zqcC`C?k+fI4NUF{KP>frYy#(kIR!L-BS@*?RLm3OjMhL^mo*K6t7xq_L=MXUZ@HD0 z(HJpf=hsrLMNx8q|Je5{p;nG(GO18LChXvW7g_mC8`rG<#%ld7)0C2ZD^c)7oT2YM z%WQC#kwGijG==+{sxDtj+}@K)nW?l4{);>yiRb2vxf3;iZ$v&1p2}wKq{uyZmbEFb zak2UZXFdu|d&z64U$X@rkz0j5P{hSl_H1#{;14yl=?QjoWp_~lJo4S9x)!|Tl~*+J zx;zlYg`iI=P|5j}_x<01hoXW_}mhhI-46O}1tn+*%==4*1XHSErgqbMwYv4CW# zw21%M0jiV0(cWvFWFPN8)ym~NYY4&T2F|%sqnLh=@2&j`gQ^Za1jZS5waz>fFX&{7 zCKdd-w7^HwmKhLV@(m&XV86hm!iA5A{VrXE0MUS&Me-CSNd<92oeh!PKe!edeL18- z&&+)DQAOlMYzx$$q{(q+8JEb;gaUydKQaFqi#%LOvns58AlHhTS~N#>FCrJx)?$b9*CrCLeU9%W+N3`|O(^H_CO*C}(~FE%vqndv&=n(EZC1qj zd+_31=4GB-bER=7W1fBYzvL)-$hplc{5lrA08J*2ulaznZ?2Tx+XxefUxDBGqYR*n?0U-Sd}wWZ?O zRv6{esCKa|-K$K>#!~3I#sKpdkI&#EH5WY5>cw2_pLDC7fio55a0x%SU_uY=;wVv} zUrGxHz9-TS3P@%NvtM%n5wA3<5dmcbN!HBA;z&M#V!(3u_h>$=;Pn{>%=N++@~#T* zgxAVwu};Je+d%WY8dQ8#uh@twBj@Ic47J+dglK)y6+f@Af67(0?U6E$3AO;w4loGC zF4gx`{M0U4t~fw zS=;qI#A!;J{+KdD5c@4e$8{$`g(_N5Li)lJeoE9v3Oun*iUx{bd3$rh1ghmP(w;n| z>?bGBie=bMG~y;}Ej&Mcb{`zdRq0x%(YPT zgTQZ6LLu6&le`y4+%>b#YZfbCJ;BdR2E9%7TY-G;Vwjn3CfhcX*=v+)^dBwG+ibOj zKJTYfnH-d280Qk+muP+#?OK;^-KWBlWIpaql7OiZES-}}hi0~v;9cw#Q375#9szOd zUM*yrqlXT;VrKS2TOt)e#2Qy$&U5wbE7TewL7UorX}L)o0FAeuYb^PTNRd!YBy!f@91a8w!kGCjnf1CD=IMyJ8CJ_$BK&A?ltqYeVU7O8X)`De3( zRwvUT0<+zVC_^OkolamrneS8gj1g=Fw#)5)CPfTV=W{7a11pj)?{A7jHY^z}bTw|o z^16YbKQ4eq@0x+3A6u+;br~DOq~1FazV!UaS@#ZEU-uL{vmhoZ- z>ce^7{sLV@{ZSP8cXugc1&QW0`xHIs9==!F zGpN`}Re7s&r6@SO$o#!Sp(7G@4v8L0itY`KG+_7Xf0``^BwkpR@3RiX=k#S21Z#jp z^#*;ps{Z!qj9>{DGpNKA_3`g^_&b{*EmKY8fnL{&rw#K#Ys3CwOwWM${`PBdHwPQ> z*I;x~v=xtuRU=I*;|=OV>Wo4CEEvb1i^&meM1GkK2Ad3@lPfrgjE^|z5nS*2&!hzm z=n!KuPU#cLidPKilRa_ZSA+If*ucOtxb-sprvJKup(Hp$-tOn%jghaL89x9g z)s2lF+|U*-v5E@J6<|J#Ng-{Enz~HtZucQgLI@I9SzBsIuz8(}@GwtzH=hOKX1G`Q zf&{1G=T$$IF=nDoDYA~4LHU-NS3^I>&)fT3Pa=prnA@Tl90L5}C>c+hdLF_C1!*0H@lKROn)~ku|f!L4H!hj56~rBvL8;Hj|8}hXyealJ9Sl;MyO34hHWod zMvQ&gh21mbotA304`RsLx-Q=1+2YYq+h>?EsoTr*Aq*CmnxyJPIq0D)k~|MEYz8;O z;q^G5EFVf~InUX0Y7#+316Og3X_@F|T|w&wlSFjv3vRExIZ}OS7~k*yKFqL}kq|Gm z?XM_GSRYQkv zT{Z&)OzRb@_}NsuW#P8k%R+T>aLbv2LMC&kfQ}5}gEX=39qp)neCS^11sQnTs-P3B zM`N2H0?^&}A0Y~XW+_tJh66Gv3jEl<9{|O z4FJOU1PYF|(1kt>t)MjeQ0z3WgVQ8tX}{EMzn{aG@*PGBOE`G7zz$OwzEg31)wh1R z)kO?{tWtnOSjPE$G}x(trd?3_Sgv&K%`(#cZx*h3vJ_m-lk$4Kk*Mbg-xI;JG6i=` zFZYmo6FiTF8{)>w^q0YJz`>MLqxzKsa@V9Zw;%b07o>L{Y~ovPL@c3^TWT0S&4XB} zIc*KHWqbne{zvFr3x&i_wQV0R=y5Y%pQhaObFh+g(LLzcRd>M4ChJ)_xj z*h!@u1s%ObhL2u?&6qqR!pg@FEGlDhEsf#MxIJ;|p1??cO#D#IOC{Z7p(|t(FF;f~gD-8Y=jn4PI zb|;7>IpV=KN3wzaVQfk4h5xirco@wsdpmnFEO90(Y3uSIr%MZjrzGuO!pgdO-4#{6 zjqSqWw{mv`vyw(*mo@KNU6MAy@iv&^85VqWWB<`71yT0ExuHW?{vQT2p>H$3W=r5^ zd2{zkCkff+pW|lEXVE5`K~CM=tJ>$B`7n? zSBs?-6{Q3_hitvL#ReR9pxkLmU@yKD5t?$lWCcVY0VXXtzLbK+6khVW1W=(v90qeu zhH~RPg(~2AJItC5A>xIhY{wur4e=!n&gJzQur`K2DVGUHRtqQ`(A4a+Y%t^RfT@HM z;=fqs<`gb^p1*(^1t~91bG><=X(SHIBCQ`$kYh8g4AkvgYIQLQz@l-tI5Q1>YxMRP zj-0zPTb$gK_v`F??CDzP7wAhbNYiATFs1Szgm3Z|l|y`kSv8Ii`NE8NFE}~Hb1lcx zsa?iVD<1PZ)J$_-j!Y^hk}}YU?YB*8_}yTlV)8A%9PAK(0Lti6b=F;2!T~uqm=lYFcP*- zjPkf%qB74y`z-KXszF$PN}@NJ&33KKcq^9k9Hm+F`)Kep z&I#RIJT15aZz&foN1ktNo-9;F3bb6ke?}1>@3m@XDtsTn?EFEvPII19u%35gWhlHr zaX`Z{t77?XhFW>K%PHCbm6$29aCuDPcqkmpB;e$KVCNe-jS_N|5V@$|^odGyj>tej zzM8Yymitfvd1@ABa69-lmu?`nFeJ^?xeVhS+s;6MX4D~0$4NAIAYQ#8EWx8FIIuOj zFe}WsYIak^_9M--=mGOuX%TYi;8jssb8jQ**2j)i$M@^GL_jYG7e42!hGQ-U(f3QyJ-p+eR1;ZmKEQ2{K?XIx;qgHiLtM5tw( zNDSfAv9q>J(|e?dXpv}chpx*|9&2q7=VxTOkyeoT70Z6Y&v6mmjLdE@=Om!l8QM^9 zJ)XQdpfM&tbnkv*y{Iz$uxm7^zONW3rokjv#l#UhOn0G{&Hm0f2z0ndT%kqLd!|?; z5!vtb-lzJh-GgzrofrQpV=)t*vPS@J5b5agGD_Ts9crwjNqEFx`GQw2=_o?J8_^a&ECq0ya2@&TzK1(!@IuJ7mMXRZ0%#wS#5d zU;p07l-f7-2}vI%W6Ck(d8VC-bKP@y#*oTE9v~}g)WLG4LaBh;u&lU&x{VovXsl!^-iWgPi~0jn#jNqxmlhG#vkCthoL!2{fGl z;sr4-mj9`-a{UiuwE}tn&z0h0`DbIr{eLl5?EfdS;$r?kkrmH>6IpRF{|}HA7YP^Z zKNpGXUqCc2j{mpFii_>Pi>!1V^|(?3j_Z}|s2x1%sJjgpBQUHQQV6u+SyKs_EI6{f zSG6y|-I zslQ1Kp!7}ucV?yc`4p%rw2?icmtDR6<=pCXzkAmHx96>W+bYaP@?fM} znW=jJKbe(t(qJLiKQk*XbYy(*b{gATQ>u)S2h;CjgBsWEOL4z_Sn6(=>I?*5kg))4 zBaEx&mpB){93#DJ6%am&jn2{4P;Bl@{0W5f#$RJQ)Xz^bO%8PRKTp>Z5u$y@X%L%_ z4B!&~~JlJ5O4L=1fawC@`h$b3{+na+g{mgyEw1iC=%9J z$-QhHj?C_6C*PQRh0F`i{EYV1_J95zqb9`8!|M&Bz@lDQ=JHTyC>7 z7+b(htr!KumNnJ6%;*iz0Y*k^{S~fXvF(Pc^RZ07R@nGfX7WE$nphHQPkG`)mge$k ze&NlWI&^K}?TVti*n#BPYR-Y`*H`w=fhg2H3_Q0@nzhG0Uepa`Gs;GFC%2B+iWje~~nxy*h)M1-3 zH5o+(7vs}nqkObqFp$v9)uP4Tipp4`x2HOOD(wA^qx_&`OAyFk8|8AO=8V?$BZ#QO z@=g{fpyYK;^83;z6#o~}SA01~lnJi)k1-y!q zxw!mPCF$4u?U!BKxyojnBTdO!bntrGw`2Ku3uT)X<bDwen5 z`ugsLnv%(smT?!#Kq8V2JXP_3&z9L)(Ze zME$x-V1R1^@+R1!hg5_`RA@UWU4gru64@rowaGp2P*q&S3||`p{;aocEXK~+2z+Ep z`LFhu-1u<4>TT8ExQe?JAnJ)^Lt;%E=c@*W3e36oD7$E)0ltbYR*7sQ;)8WhZJA7c zEjL+n4XG`!k@C-nVHv*JyeZ5-<8Ti<)}h18E(Z_7SgC-9{HH8Gn*5SaR*fT5ZFuWl z#Miu-Q^=Auvy^8B9{lZmp+K?5C@V&!Z^&>|3fpAm+qB(eH1N8u*1qy9(uw zn~o|)@5&%3=v!KLNO@vA$}lJRDAeywiqW*ZJ43)WR% zq5gh2yF#xqcE$qdHWtJ|xKu-{ybhM$T!qj=wP)&G{{3Mn@k8aw(yNI;9tXNE|BvE0 z9OE-BOEEF5oYOm$e(fh1OcNcG)m{yF!gKBms7ykIpWWgs3_l0JJ>MAK3v@MALBVcf ziB%SO5Kq9Yp+ItFbJ(!9px7Uu-Xqs>m?Y0^`BIA5l=%~RF*4F6qp*2_@m7|~`jfVZ z@F5OAl~61s9+5?`2OEh+9Oqskt3Xu2a~IH&{5$VeL($397U0wAF&2m4{-!-|^uE@h z+zczl49e^n%V_;8$t?xy<&yU?s6i%zK<}JGydmqN=G;fT7{}7!@XNV>1=!RN{d9Nr z^m~uBlTQUK4bKwbzuo5v`(=Q{NHCfW({Ub`aJPbTUt{Y0r^zI_f(_T)Myy;s%e9kIH5!g<~)GsvA(XmI)lo{nGnHb>@^AB8yh?- zQo3F*0o3toPvOF~6d5C{)GW?Z5#H3`Nvd9BFm-pOMRG*GsqwuFeW%G^e&}KGq(5^2 zqa1`UOK15VL7ckE+nmdxmYz2r#iBWS>EAeg_0}VIHOOLQ-e6B!Ah7tkGSbjQIqiCh zTJp(NK_`=~?L#ez=kZ1)NdPjcP4H@I06an7(X^lAxu2{21GTe~dMZcDOhWx3P<)MQL#pH%=ZT*^zSDN#X9FF%u0gcEF;s-Pi>>IR%K3Q}C zf9@I*0$PeHMhB=@aZk$-PBHuzC%HKSNaahzHOfQM%+Oz}Rvugx_a5J!L~qPFps=i@@Z2w))vHk1R z0*|PcGem^Fi};B;xOs59Mb@<=%t-o=__tc8c`t=^j6ZEMo}0M+CNU8q+76yFQG%u% zxMV8xkno`!BUL}Ss?6rsKe=lQQ_;>?Q*@D&Yzou%?cHEAo?W+g>}rzk4kpl>DC6a@ z6&eG`SZpYg9)|jRZ|OG0eG51P9%lL@ewcYu^)A(V(XroFO+L|@lO{jfauldeD^SEp zKmspaGcLtEi+&aOo(M9T2eP?p!IE}xVJFR}Q%e%47{zL&pnpppTX6qr7MTCQy`M5| z7uc1Xw)?h5nZ!7KnxHE`+9H^^h(FZMEsaZ2rI0LE9eqQx->^1k0COEtgPv|9n=5_ufqsn`^goj(#%!zqGo zbcK(viB3X41W}6DEzbHw*v4(fyFZA&CMb^A+E~S_{?|0wOXmRfd(rVL^2aHk;4AN) z=S^NNV1jc2icVRPEW>7(@d|qC0u3pUk}%_}i24ckRK~2xh5g|vD&?+5q&p-2?bQKj zQYmXS;HmRl!)bk2&xUG3A}1bnMmqnSi|#}w3a-;AB0Kxex#DZKk*X9Dnz2%YiavTa z8RrM4wsa49ZM)=$?}>H-6eidFBF__}N%&YgX`VOe&Z)4Sr?#^=Q)@4Jg7POp687~c zK&k1gB)MoGmvriZSkWeKCV-^NyUAC6{uVXIgZsGzT2Oh4J+8_l3rGcV$xj9fNr`5* z{1Km|K1m@gCFR|EGhjlerO^7(iN`S zsg)zb5+0H!TV|Y<^eJ}V>9z3_%#yPQ4AG!hq$B#+n4y%^MliZD6J?c<{c#rsmQP1D~N;v!2S4%W8i%n zL<~pK4=s|^p>4Cia2N^sMepJbW36KmT!|hSSu?tv%i+N>mZ9H1Tk^nGAjrBassS3` zS319goGp#QSHbT_`c2fPHnHgQ0B-A&zcHP8@7fz!iy7_7HhDQFn_%$AY=fwKA6Va8 z5XH?qx^Nb8)$6$~9bQ2>SNPeWTFJh)ASe$Y$ZXb?ikt8q*2B>NxzMHr%$*n?MIS{~ zDN|56=fcJn7v|Oi(Q_5T#kcf6X|XREaWG%f!5rtWb_9^Ou#7#a_qfB5MG5)k;!(>8 z2e~veg(`2*YwXvwja3B{8SD^79Z>uV<;|||M5)nfyC50%n9@ZYYHwLfD(ik+#Lh|$ zC-0J3>g_0QI|@hp$&a z?XuvpJE1d<^9!Q(I8tpnxf$_uF0WWj6eVGDCPIcc8WDfT06g(PcoHdVg&m3yvm14zUZf;_#*Ba~ z%aEdy$`Qc2epAmy8xyQ>O`&lByQNGR*^u5ZTiOXB$%`UbW|H{zSyAj2+&T+Vg+l zQlW;9<>XI-xa@?5vlYSM!jsp+X_zby35Pz4G0()XxjJ2!;{)W`>LA0S@&J@j`apc$71eQo znFQmU7V`$O-aI|v+x3~gkJ9w6T8SpeN(Ln$dq)ff@0bn&4nsEAVVHs=KH;a@p`e@} zjO*vHHD2+qeNMphig`pc>VeuNeLJ#HN_A>mx#wLopHgyo;eCA2llCU4`jUWvPq9(< zyM6(PE|gz_wu+`f9G+q*KC2x%eLe$SN(Ie9pm6~;(t3c5IvL7ssO1v3a)N@|hA|4^ zU`+8jMUNSj41@h^0Kz(|-FSwOd86x|YpWzYXOsy4L>qE-5nb2|u(H91P1b3%HDL^w zD_JAHArHmFEvo^L9m{vH;o9+D;~nn$O&*>efHpM7bBStM4TcZHcz5}Hx<5+%_vPMx za=mMvIB(+#od8=6qf2`}8;ibzJ1#tK{qu){RlBa={act}eM0Sg*tvG91_!itRU1A> zWht4n9ItF}5^u;BF106TjlUgWD)DkyddyAI7+rc7S%Ebn84b6J_yD%tQ1GKXa3f&^ z#!6e0FbJu^ilH!CVmkfXD(jL`iP&FX?xxEoRK~ESYP-Kp4;Y^LJQA92 z&^p*TE^e)?D4;<6Lj=lt`!;1hzF-hD1{vHWOgMUb+}V;H^pwJ`)EJ!UhDhzsnF;vg z@o{31mp3ARGI&lB#~<+cCO_xccAX&|5ki@&_|_yq%0Z`}WE6t#{5D~J?~v_eB!5g% zc&;beK{;oxVmBV#Zj{wZDLV#tfM8IYiESLVMvao1A*&Y?-x2V)$>-i-eko^IX+Bqn zsjwjQ>O@H=;AN$tj*?3g(VZz6Oh_&Z@y>0`1R&+)uI$O{W)-)DwC!KM8GoNbm-B$1 z6VX#M5<<;twjN)RikBcELs9wccYI>`NTNxyY|!elF$9H;F-UwBP&~i-MZMHEhRo4B z^3no5U6jT53ru&6v9b9V|49Y@Yo|ttLD(Wk1+pLIb80_!43m_VJ+=L5GR`4cs3w~S zT}LiBZ^7+8|9(~2X(a~1pj|o_UnSL_^OrCR7NIzFA9B>$y-6<$U#=*;OUXn@qJ7Tk zViAta0{R*sJ+i#KLTJ^`w_v+4hZb?9j@i1!oYmmpi%P0r@`G)>R`$fhWoIIp#un1G z)VnD?xWZgVM^w}_ng}ug#yUcl$5N6;!BS>=ASU6pRlmie&i6MlvZ`rK3iT1PJ2jih zAksr&Kb!gAV;I{_c8m0V{iO54f0pSa(WL6qx9GW2qvo%E%Pu~wl>(~7T28RIYn1B5 z(2prPJ>(W&ACTd1G(Lc<7 zeO_#WJ^cJZ)k6MsntL7%!-k5xu3|=pZ?DH1?LzXNHxNtM1+ZU;rr#i1w43BbSQQG6 zyG*+Ml0@kf^yYJkx8;a*QpVF9Lx@Hoct1B{oQ9eX?R@VjY4%V%4?liI0ZX6ySrPC} zr) zp<~EY4HU(o1Ih>2ma$oj$cGVeyzaHc0`1YF3*Q$9{0SM)7@-H28M@jq$$&+1h6Ump zs__&F+@}W{aB#LR--*Z-F0*CyYz_00_cIl}Sk)E?e#a0Cs>3$=o`aVre@ZLl&PKf~ zfzJ}9&$wQ@NZ*J)N-q zRHuIuT9K2=$wKcW&>L|qpn^Q)BqpJrGf6wR!hG4A+=1sZ>T!93yZ;lTHQTJJab9^; z=PJ=s_9)W`+nA?v64jK=VUfNU7L18?p_oon;6s;Zy=<+!PG%eVW8tF*-BH)7_5Plp z;@pt%H1(yr(i$tlzv47E0bhsKZ)^BjwGv)*2{c2d9(5|#o@6#@ zvx^jI5wKUlcN~E}#78IgXjBNHyszZ_34?YHX{vvGeeXUf*1{XUA6m3Dd7~ z8y7)BX(6_9)MM&aAWaMYs%N}_dbRc^x|Oq#< zvaNXhSN5m!w7x-I+W>^=d0B>IQI&e0_)j}Z>;?}0hjf`(g6U;FAon3a71bf*B#oRA zN0L99CI_r1wcB1<{nk-0V~tSrZ7<=EXeg~_U(2~t5TWmv?`sLpx?9BAiQnIX}@$aWLngup)@&Rm@}$8v2~(A zTy;xphcpn9JQpC6;<3`%={}`&WAR zA3@wV*4aC2kY=Q%(B?Ox$_fv!r&O{1)tM;|wnx}K0o$~PCqrQ&{h!$g`lQ&iG>65M z-}!;Df)WA`%^zFTc;lI9J{s@6sRLfbg^>l%vMYw2`oQ!SkCA-a@g0CbOV)2WAVc=n z<>VQpt(17xi8E=6W-<;Z{CKpoTcHao9vY$GY5$r!Mi`Yu01ip?qmp4ifv}~0nV1N( zUyON%g*5Xpr|;yrfac8?ZnxU!Bpa9wy@_{ti2{0|7a`9;^Z%ml9b^H<^nJNYSx2*K+-Hc>_3&V4^I;y zrfT<2V@5y$+3J_VM16-b&ESI8LL-G*f)VXB4yQPGk(Nt~o8_c!|5MoV9_tv^Rs(fn zBb&>{Xh+e10@B%g*Zf87wkSkqMmuPv_077&%U`fweIN2$MgTxd+w)N!E zcdrU_?GpY#H;jYNAHFeL@A~z%?ZbC}#robsVn}Q)Dsw0={+gdqL(oo)-+&fAA`nat zQ{}R!NH2h3){0~5>(gt}bSKYs%F8eZr*9{Z&r@DTAzg%v-_JSF!+PucZh?W$6CKE_ zV0aRBKpzA3yUr?9js<=y4qN$SwB-_4kUd+6@5B9}ZAEk7B`lld3Rj@GUw zR#uHjOfCxam5uCKlH`BBL-n@a`c?ZMcO1a#xU%AP?EZcWXW(Fp+`6)uo}1D*+QJiokJdqF$U)IxRcnU+~U zc^naM$(%IgAqI_lrCR8 z0Cc=PW&SHLQtPNVb0yl!~UU)fg2V=bgw?dL=SJ0JV-FA4|a9FL3z6aj=O=+QwpdRm6(jH@U zH{^B-0Y8c~e8S(v?&0e>HPSngw-xct)*KIJw-r|`zDgfES?m^iR#?mWDk@3{LO>;{y^tP^x6`)e4A+bSW5JV(eBig5a&h7GFbsNpCeSel?b$PR1 z6=@lv1jUx&IFI?LokyjHw$DQa-c}nQRyG>0+Omywmk3(yc6zIJ#>q1S)96CRM03w4 zV|UKouk!Jlh`W{C^LdFbNA1-GRT#1QD;5N9l1y_-?8MDc-Yo!ocVhe^$c`1DA6y)f zb60TL6Wk2+#w1n^#9VplnZw44U27$y;u%6P6lN$t&N7imo|zg?z*0Fu{BHo=ewD$_ zq_f#Ml5^Q;(4xRqB5d(y&nMT;)GXc|I#W7`wRK>gs%FoRAy@eLK)vVW|pKoSW z#>eyHDS4RG_%6=pwFir?5W{p|SC=uk;{3Xz7&sfufb{tbOyHEM8G>0}B#ePC>oC9U zm2eb_5v1lmz-Q*_4MmFK7$-UFzId-pasa|5<3Z;>d;Onu6&( zXC5Mh!$oE1=767w8T61l}1M=cuAJj#nmV9Xh zCqnRI#-+?EHONiAn*zVfZ%+4!#Ol~nlVA34AX`>?EOf`tA=rB zZRU3N6bMEo17O>@PzfDh0)Eiwa)KN>o_!RJ>l2nR>r-$=8J4upcXyNtJGrh@!ylw2!|6q9i&k!n3W)_bB zRb>8un|C=}VpTszp|8U`0|LbnI|EziagA2#;Z@X|X|HFmb0ekwdo#Obf zE*$&6?ZR>V?=Bqsf7gZM_;*}54nmH9aN#)q!G+^s`M>MJar`%3xNIGZB-~Mlubo~) zhnqaF<+6{pd_m|$3>X@8Xb1yA)#!m|jKvZfG0LYOlFtUulFrzw^x|@T0aE75%7zE` z^c0oHmr8=#Z(qRkApg`xv)+Sl9nWeTd=6aVM_a!Q;hJdvmu0AQzPcY8!rd$hdz z)3w3t=L7(xRr-BH#}XYvHrD)grPuB8{JMIt+r(^;Q_nZemyX6+6p)_fUc%f}e+I<` zH9a{M_tWvXWKQLms%L)*%kCZA_4?$+bM=pdU}}qKkGU zYH?TQMb|c6y)~+Zv9HdqeX))Ublax-I1+-|h$42SNCh;rOm!lx5@cT2skgRDhFLl? z(7RegArJ@qr&j!(ovhisf3EZL`T88T!A#0v0mWq1QbDLwGW2|Vuk-p&{ITroNMRKQ zEKg_iZADvpui*@5Mm;sUu9RI@TDb8)EJ-deiTR`&LEd8HH+Yx;u42g3)0DQJp6vH} zAx5da`#F`PE~OXCGZLk~O2%0S85?m5Wd6#`0YbfvddusjtDO!=N008* zYR9c&1&bUdaWs6+j^OzpFB&c~mFtKf+=rePV~BcFvR1!E(+@S1+&o$2A+AeD&*j33 zMnNwH_CpI+@^LxTj_v`|q$Bo9Ri+$JAV{#EO&NxUcBL3yd#K)|V5RKur0wS?o>%tq z`QgUH$FN%6nAD=Pj5p-s6j{lJfxpFx?sfb8Y=7Pd=m_5hH7M;V_WE!tVVQ}oM6*;Y zLRu(%st)U%!tX!^Xh!+Fun4|QpbwoJ8?ugS8AvY2MWs?#@jlX=P#dy-;&D!A@%W&L z>NVYZz@gZV1@#o>R-22wN9X%2ICP{eD;$9RgN27`N46e~EGgNpzvUHooy!J=bYg7O zi`7PE1Vb}27&9Q&InEINq*KUHhim*vSnORG1YDBL=_U@_8Er(@qofU)5egdjC=z->uj#yxIiuYs^c%?8_WRuf%g6XZpGD#YF)(7B7p z&|}%EXaO)an}3Ceq($#&s8!ojRXBeNRg@zVKQQ6=_G=SpC5iO>ie8^{W9C1iLRJ^Y zc#;EB5Pv>3_ZeO@$BW|L_wX@S_tGp4&P)k{3{Bi>y_c6@*P_^5{>^-X=n}*?Mi}s7 z^`3x*eYrfsmV}S9Tbo7kWFq}XqS7iXLz!SC9#SH27yoBU^kf&g^6g%Lx4lnmH(FzNURMwJo4i;pDnZbe9}A^ZUJ z)0bFZQ6}T5IZM{vZH=fNd16b?kMEL}k@aZZHhq=gNf>ca@u2GWq+#f-*0_|s+Qof5 z^<*eZjA_ff7epJRfK;@VV~0|Kt``hk*tL;Fr}6c58$6XV!{y83!%Q(Un0giSad0~i zi1@JJk-r=cUZ#ltZ8zm;C3AQ)TZ}xaGL1PmR$Rd5Gnq*OXVqVjy=0#B2`VfO@ikE3 ziX!I2L7B^8!@mi^T7wlpLEJnm1UC8l!G&0~3@jRIaMN5tKxY2Oo%sp@v)PIaCK#cx z-bU{IfrH86Lq|8zDotruVHGGa099SCD}1pv{Xn*ZeZdOl_$@yM=blB>0)eUg@q96*)v7q+SGe7sB^|&zDHvqIzB_=7c8mf@4 z&NFE$bb#>qyaV|pBN~W;G()~Vr-h;}H1J5YB3qGFO6_>)(^b~=d033k-!b2IQOHb&TR*BK{EQj`@UdswGQTA=Aq%d3uw(EYI>?=Lsm#^)dmLDlCy-Cj!yB zYZ*KyqJxQhL-2)%SnGwkxM3d697rcoVk18Xy=Sy{E)RTiuZAulr-n@7JJ{UodJGZ> zQ?VBk;PFGv7dv!23S#Wo%X0TN_ogO0)k)Newn`3ejPN_4S z*$#Cecr#Fn>0e_a&L~jy91rs$&U@J1h8LoLC9J3PJ6I9E-KhsZ7W@$iCCv!jSqkZZ zr^;=OiTEmTQl7FgNqAMdwg2!vAw}c`K_feGdLtZ{47$OAsBV7&twdhl{Mk=X8_sKrUS0Ce3(miT#fEg4YN z^DKWSB;Bg$Rhrzq&0vcZ6rQpFHCGcyw=U>$qy@-fN`@j>ujrSRh>I1F-Jg*B45=2E z4Z_XuBwMHX6bWU>c?%D_)l>YD7aU)G?7AX6=ivux*X2D967~?v)t7J!_?hSQOcTIR z7}e_*y2>afY50cb?gpbylx&R#U^FgCkXV9oc~QIRIL|zg2=iWX(JI&-c&hMel8SXTPl*(3?#M+pOt0PR2V%n9$ni477YJ5!~+kjw!`RS%w;Wy6N&-#OGUvFbzW^v8FIOs0*kSZnf2$iB> zX~oK9Uu$Tt14S2wpNrg^3)lX*Tl(SJBCT#cq z?mR341JB8Fa5toe-3>Lzobh?Y&}DQ6GDHDHKHBX>duN!95wK)s$K=IcEm5c-XV$b- zh~t%!xty-R;oU1GawRWa`c|K>C2}PctNOHrT?`D?>Cg!M=v z>^dTxT|Z*bFHg4Ca=io)k__2t_}Oem9cKVjFz1bGtl1~pyH4*twvVv3ksfTlC-%BV zwv=1Nl&H$XxbU;4S1vizP--1;Ly*6&ODxAbn!zHU&0%lPDL$Q}bL(uCg;9`cF%g|V z;Jl%K%26~Y$)lx2qF*g@rp}^d+m#s07Kt zTNu}+*y7SgwmUlnQWF#MsqVf`K}*B1f1F`kwvds?Cf?CxCnP*qA-Dr5M4 zZdA3hZqd=`3{I$gh>U1tP3W@zcMUoV!7@1?vgoa1Wrc!r4y5@^G6t~=8tw~hgOX;V z(iBHMOV(CKAj+An7EWLdEt7%P8J@Xm*{#fY;Dfn>7^J*CvOnkERIx08PQ`Yqn^{}( zI7K**ay+FS?r_lJeHaO03g>VYR(cSNbrnJuX&nJHo-vRxTrh zId#twHK=)1g|I3EL(lPh9jbWxW%$Vx+K?@q`45jvL5sLO`JuIAhdwHD)M{}4fXgY@ z(Yue{*26^4Y~lX#2dr7_w)l(fzTQl&4}+|8&$h+lW5Ud?ffQP)HuJs$f$ASVKTc+p z0H|daS+wO*DJ^}jo$x&Dr(uC{x^TVDSjZhcWWVutAFWKft)%)ro*-J|BIoiq*$bqT zOyX8Dszr^3PN~icXsxlD_1LiwQ8P-d9jRh^8*^9S`YTj~G`1$U(|b|MAB_B$WYcRg z|0I}AYR`8a%^4er-Htf|c~n6o6Kze!r5*mNBwl*D4)t^23WMy=j(#m+l2+4*$-DtJiMXPXqWfLhhr&S^GkTOs?8yk6^5Pd ztLuHZl#E8USp;^&0l%*m3k@*s5acz-E2B+yPtu@JbOZ^X-g{mQW&2nmchhM2#I$kY zHO=s1npf_12R1S*+NjlY%oMtKf?JJUuhW;sH*-_Pi-AfMzu;b;ZK8jj9I5x`3oAF@ z0#5Z__fq1+V|iPS_EUbUVrMo}_uce-CY&af<*FyzpZA+_)!$QXK?{V8pb$tnRRJ95 zhoGSl#9bUR@1W{MPe9R&PXKF-KOSbHc$c#P3^v0>*6ReFfj1z3yc@MCyApeTmQ7Ki zwCH=ljY}!BTw$80L+(l)=)>@?xXhO&xW}lFMl@3w$kAIP3|}cg_A@BbyHoon3c@g)lqC{otJ?A}jv^+Z8rQ#D?hx*WYAiBgh z^hg^zRaqk68;vs-cGN67wajGI$|>1Sz9*UH3qNACEPM=jcPIK~v=Nl>(+HH4Ov;Qv zAumOV%lRA%-2FI(g@5RruVAnIn2y#F$9Lm*O;}V-w!4YcM)gPcOjb;2NNHJ%0)4wz z3WrwYM2q(RSn7Ln(Sm}gYohg{7g-+NQ;$kd1?ktx093ZgP?qBv&#!zk-fyBPj~x2N zl15T2%$f@-$PyYLZOXF5zc$CNESfH5R$5~>2FWOXbQ#n>!lDy;M`DEa&s9R!0(}*Z z0{u@^@xvXC%xy_p9k8dxfrV4QlnWt{O>hXi(yI~d!P^gbcp!&e!R0Y9x?K*b$VQvbpLo%a!4@>}!5XX5zcuhqw4<4wby$=Sij3QI}2X@s_rdWH#WOAJoWfJ>#GG?nDF z2cDy!9#P6;tLJNAW?^@#W`*3q*|m){x{biQs9TuFEB{q;UeHgUiXDlh-GC51b&Tto zO)l6L4WD`RGG!3R(m3KNEZeE$LyvD2OsuY>sK}mju6?J*mfJsPB?PpDw4)jo_*6RE zy%JakbQmuWhc#L{lPO5d%Li%r>HDLvo+sjC=Vln@bNj4ljFSN1$Q-MjiF;!$hd}P@oFMeoJE+OTQT+a#@ zYQcpLU!JHJXsqGVRq9MSOhXZw^Z17|g0~?vCZ%4qWiei?=Eh}i=^}sWL_YT)=P()} zb;b4=W#Sj5?P$z#T8(SToR2#-g04-uU7y`OnmnG`NhrXSHm9dcz4qmk?R#MSPt7Au z1}Fz?C=Fqz%C=25C@qI1$5K`g3NoslC z?LuZx4f66>i3s{7-PnpL$4Net*exXL zS*T=enm6$_!lPv3uZlk$Pu%DE){Q{#4QXy`@^0dH^C#$c)p|vXJ-9B)zEv5MVMcVK z80=u}H8Jm@=ZbaCmx-S3oQw~%!kx|*1!#wMD88NRgfO<+|-N9 zHe)z9`1SjDyRBJEwydjXy+FhR4*hfAOZN^_?gck02|L7i4+WyjfFtOR%Uj)Gxl8+bKTu@AT@=<+P4;DcPI_gNRTKL{FUiqO-i zlu%t6JKhbe@w`!iKC>{L3&Hc&u%B=-l2T-&51Eg;UETspJ`+Vv&gD$yG13{G zGFJ=Uac+Xb10pf9WVP{ z@!tkK5loBQOTpW}FPVsA+2#^2Qz0fDbSBsfWDu&53HY@2`T4x~1T59|kk$6=^~jp5 zx5Z|zpvxJP`{~Hud12PY@hNLPF8ld&4R{z4SE-}$GSkzTn|Gf}kJZ>8HbRZ+3q~XT zgX0{_WA#eT1+5qUyO7^{3*<5`6fPS6&Sy16K8df+O?4idkh9D^ssj;|s)C+&=L^I2 z8J=a&Awgvw*gs;^FX3=cEGer!IbImC3l8l3fC|WnqhMc~eC*ag>6-{?97fpJcUyoz zl$BBnMbD5^zgd@3E1RpX``mVSWUjSv3_2(?sHqewavQg*-qV z8Lo|qWB5J{vr@uDyS=(^+}ow?FL=p{-XfD-?$^zg>bvvM=}Psd^Xf2*y&>n@-IFp} ztUA$ZO;1X$l!N)G{pB$3_*fN%aW*{vE1(z z7PRX={1U47Y+@i|FIRM&yn>e-0Ug?U9C1bZAh_u!AFuq-$SnJ&Y3cX7D17V15b=)L z4okt-Wtq-6nk_-gQ}50R@EhkE67>!_w9NHh$beqFKh1Dvf#u8f3&*S8c3@2KQFtr7 zCVXnP#gbX5`ZWOMI)p9o>&x4#XTB}wWt%a9L3PUuS(J3LXd-GT*vsLUIBP*3h;8eG zjODEM2b?qR^Oqsj?gL9DXJuEEd&x;>3 z#-;V`{SA*_#%_n^2Lw+DjLwr)@5*^oAU2ywDoy%q?tXpj5qx&u)aDK+FS@nbTrHK! zfyYyx?Z0OE8oYO+cO_*{00Rh^HTd((zs3pK35(R6!@(&%8> zlfjG8FDg4;w)Z?)#pKV^+|URudK6Y#j1s=3^6&9@cDEMTTA406pYgKhC>Leea2I7F zVx9Ma2VQ7sY0MTVK||SJw5Z(DF99ZdqKy{2)h=9WMo)K@1R9PsFYK}n+r_svnhji= zrY4U?Xm#I?OZDQ8dee9DU1!hn0R;TLr<15p!I84P3|jU*Kijw8*L5Fm8=+=?#)3q= z8!8WUK7T5}*G8oR z^;-|9(t7-@k-_?Y{ks4Dx=>T|>wSM8kg#?RsCmH4nBBJpv!fyPW0wIhd5&>C&zR&B%pZp(s_{KQ-$n1h&`SWtZJtwdF1Cf&wcX`H#%)(mt4J->m7Sb1s!g8AZ~`vy$X z=jP<>bYW4%`34|v0J~(C*)9&Zi9{Pd#I@qAk;4og?TieEC`Te?Zp9YS(e0!q4sYqZ z;n5P5|LP@VB!$v!9sY1Q@Q)J44Da0{Ry`T#eFu{QyBhE9d93vB-aW46E9r{b4G#$@ z&BqGceg8ZkeBR95-fpEdEe7U&m6GdBiP}&)-X7NBvokUgU|Yw z%_cb4HjEDPR_AZPmUs=HADr6U%yR7nQ;222oJ9V6cTwQ4Pu&!s?#z-AOGbm0o!9lp z&+LnNhyN_l#$p~b1I|~xGgCp!TO%Ialgw6GVGjAvGR@+mEDOw}ZX?%5T%3ES73(DK zxRa)0umRDtY;JdQNN^DeTeb9$yzi$V-nkFC?fbWx=KPlRFOsAAg}+QRvb*gR*kOSm z1a^<)0VOk7=mZVmjIAX^rnN*Xi6&TL-gAKQ`4#Vmn$zXxAg`x)NWw>4;qgSV-)_CH z@dvgaH#kJ)@mqUr-wnx=0c*k;Qp8*2|T^+<>yEDqVC2l%?(K(MN#^+VQfrX}es`%8z> z?2aYJ8m8dDoBa2THFC&LPlR;OOpOu(;qk0nhl0$4vn@-zi%|&MQwCc)r{O)49V0^P zf|0A4zv54)KN8r6!AY3nxHe>VHbUKNg?sL6RlI|6E zAtWjjI7N8;bHeW@&Q4Y71)Ca*;`GURV(v;DKQd%E`(^9-ZvVn}iI{W65xM|f?J+&u zAfaAWy&&77`nCRYA)5Ud6*nlrq=ewM+w<`VMo|}Oh7GDqf88@6Do^DDhrQRZ0g&g)Lq{?93`_U_Gu8# z(}e0szXYr$Jc6A8+h($*fkVQh!!`K>G!;1rWs_%{;}D1`gN~EJPq_b9-$6nIMpP^I z05`sx0w}vr0^b&b1-3tFS4A5=dH2!{k`v+x5!$jN8&W$aD$lB+XpgkF6X(c%mDCY8 zo4xTk2U21L#u2uVWNSx%Ca7@|9@AlZu=07t9N|#B``+U5fh`Ug6gD>6=H8LfwQKq9 zS=@NF8!;~C1-hpXSA*rKE5iP1$Q`9l?6jED$6J06Pv?TgO+iKNpi_IDLj31-5&Q#5 zVs?dA6T~AkdjKU&{Kk!xmmjX|k>6H8!Ff`O=+CXixC@pA6d{Hg6gr@Zc*sDOEdX+i z{AnmM8d;p8G8U8yl(UV1m$NMFOqY=nxY4*VDf%%ofoQcEjPvwF*WnqNO7eb2`}<9L zwSXS9w}_SfS6KYjx4kKfm7wF{pt#Rc8Nt#f${LYS5ATPcX zzU0Zaqaf$<9uK491}lhd3y29X#n*`*l54&$mn8g@SM<~ij>&Wtc~l8bB6SvCn+(GO z5qKN;!6T$E%w1yr06w^;%HZ`c*Y{l40rEyO6nR&9^UXRHMNGY*!zlAW&M>3C@NS zmrBJxARTsA@iaOoBq1V-{!W@%M-YfHB5jT=3b{sLP>LtR@omx)vvJHnmw0-K4u1h> z%uqm}=~ZuS-4V560?{{RF?Rq_l%ohT1?k%sOWT_GdO`szj7RfayXv41DfA$H-$Sk0 zAb4Er2xs7DVR$IbH=L3KNMiyu_%o%Z+g867;o7QZ__07t#&_0rRVF4h1Jn9$1UuA6 zATOGf;T{&6VTp_2!2;7riGuF9^p~aVe7r}fbWw*h?dSzKTCq=?D^*<6Fj6RRUL^F?zBX{(n9(b5@#Bj#YQg-BWPUmc*(?MZy%Thv2hSraQ!<1=L97<<13)rvg3cU52vFxERnK%a}oe4R|)U-+hNW>eI|rJ-Wa zgc(a8j)+^b(KU@noch~F4lL8E6L9YMw)BOc4e)bwWLk*E;%df;w#ewTUb>~KCf zhxRuY6=bw|f>xo&%~n-RzgWTs5%J_}x2OQs+JD7T_oFFZ6FQ0djeW=+p?pMzxl3=x z({b312rnsxaVAD1QW8xL6o;ovA#p2Pn7VKd(}yq`oQvu1ZeKmz+-zQV+L7lZ9!?OI zg%{(v_vD$;PrIP%1i2(nDfzM8&yJHw=HpQoPy4p?&K)x}vPpV%iw?8n7{P}L(*?HyEH`gRu@zef z4f}K3<&KV_wgWI91gbiENkiwoKx)7EtVF#P(BFpBgGz; zCrC_iE{AiIE;^)uJ`x%B2jx{(QVgY-Ur)VGRo@FzsogL|EfRD!8HW)803xUK5R@!# zBR!4HY|wUwKk~3@{h~}HiK-B_&!YVVSzkG>^vWQx_9^sK0T@k6ozw3ye03og;6v07 zRN9CYNarW2dcyYF)QG;bqFUkDS0*82Sl!wmnoFNWtHJLbbO?r9b~C0mOi?%*b1C1h zbTHb4=a)Xqapoq1gocjxF#N3NVw7&Qg^+>k{n0b0MJF8kST!w`zm2X0wM`LpQ*XlJb7_ve>Sw@J_y-s&+iw_0btZ7R2 zg3`Go0{Dk=;wl{63lcm-iBdhS-P`c|vSlO`=x?!?r@qdbD;Wel`h+hHrRbbdisLXu zsz;8uYxKp9ZM{7|#`pAgyWS7OMdTUq0nTk>STkm{Q-U7ivej{k!vs57)dgfuf?*Nq zL_Ewl+%mDajKn52b#@V~w^35ZSqSs#IS*NqiPriPgGbearlB419gl?=B>1$}i>{@j zY$zTf_(q7A4Q`St8oJivQ)98tch%JRBq<0p@I#(u$glH6Lq&B8>VD2r5(y^dg<0&S9{s$e*>A;=SPeP7n$y1t*1=+|z}>8p7tXkmT~nT2uWnVpS?%2s#EP|vLcK(xpsrGD!=n} z*R~O-35@;H#Ep=yTJ!w5o?w}(wIeNkU(po%Nj+}w;d$2ynFQ!1>tHzasZMVZ+ZCcy zH>4WYAnC(0PpjG=AV=xoB7OPVv&kB0^x^o?6&A7WkCfJC40;p6L=zrs4ALDV^MJig-ieGlijJI>ip+3s$q zGqW{vofELBW|VwQG`cWJ`E7L z<>-?xKpWn=a6;k2TYzaFjHwWeh;RO@6fnsuFFhb>IU%&1aH;Y;hfep71kl47+NRhB z2i)OcO4~3%rZ^9gx4a>77Q-=HRdZ3U++D062XT>AQk-J5&?4~!C{j?e^Sdh!N;WD zcR|PEr|AsbA+`b0d6nG=1uquO%M`L!*BGW^24=T@DffRQ4J=9O)~CP{L4B8zFFcVi zw9|+}eXQa1{5E*){fRur zhQeS4QB(Tz^<)6e;d{4a+f;vsEHw`9&2;{^L)3 z1|wRd-;3XaH=Xf}lC80@2)(v|-AfbXPqt|ksZ4^-5g%4SK>Z3rjFj}IFa$ztka8=* zY#-a~g|=9_A9YuP?4c=bf~9p3gQOT+j8#!=O_ar7#*%%W$MXDJ5NtI`fuK9X##xy8 z=!M#MY0{t)R=8uDXob$&6dG0DA%-ccP@?rpv<3&TAk_;kp{ypOK{De9Ppt)*`l#T1 zlfU?FWg7741xqvDY?cXihw5+|S@+a`5#ZI5^4+&tb%Fb$)u~GRp>JqWi5m^c_}bDR z6q~ZzO)KjabEuwS-klGo6gDWP~e2SfJTSC-So$3s-Vq z&jPK?xHD{utA-rt7v~tCgLcS~oZw_#i&o@1Hw591PI7wQl{}%a(p{bNxg(3R=t|Kf z)`Z<4{W4Eb6Z+(T>)~1cDAW=?W<{KbTsJHZ&kiyUFUF-a`z-q3X01(rxe93}kwIQt z;Aht)aM^R3pOgJ~ZEFz55YKi|@N(!(bk+!{_Hbh#$3XB)((~z4U^JCf+Q-^cnx@4JK2x4v4xDywqWfc%vvF7Qah`yIC9V+Tk~RZa5Bll88s=% zbqkaYX?cV_r&lh=K95NRZns`m)0C7M?&KMu?pDN#Vg(iO0TV?<5uh*&7afm#WLo^K zJ9tA1Wc)c;oU}(%0BG`Xil_v8#6lVN&4*S)*tmvncR-gKUFIeWF>ep!^x~h89NmL* zj0yz1Zb}o*h~BUeG~WW z3Hz8VpDMiHI)~U7F+ZVagK32#{bpsJ!Pie*?XSh0V`*9(P1}N2kd^*a)GRDK<^?2c z5)v}7I2spVcc?IF&SvdSK?+@>(5gtOp~ot5hyQL)KgUU%4hou+t2)QQGLTCWnxw9d z%vAaNhHz0bG%0fW~6J*{;s^#odjiVZWgCjy+KVJUFk~Bi&C_;hh)N*XrqugBaStX0<5yd=fLUuYz7Q& zttg2^SfGG^+hQ({tp)a*WiN|FVbio!c0~73JpNa*6w)9a7cv-hgO=YEZsy&LKTE0W z&v*(W!!sf`u$@|{QZ%l2@KQ|`S2IR|9AYOWvU;esbCged&YcB;=3;TmX8dqP*d^>O zMU2|mm!ETGwiPYyTnJf5o3J3V5tXy?J zFN!+{slL{-d0}#N%G%UB@*o~*-GmprcY9_q!83J-Ezbw?JJaRwb1{gSYCP%D{@vMa-a4AJttwBW zNS7|_(Vp38E<_LC);uUSZq0jL*l1ov?PwSy<#V#`m)9h=t(LQ`L1;P=e)qYclF$8W z_8apS_>eEB8{Fvc)N*7B5isD?cY08j(!4UAno0Q<=hNrEp|<;-K<~Ejg5E_D$CMsM zO;$4BCfO@660DEz1R5n@9$IRi1a0K{bAON1-Zq;_HF*u(Mr+%2p_&&;1x`s=mS&A1 zi`n(7s_;`tg(f+zzki=D2NSHS2dw!~NR|AEA{Shn;hB_sK19g!!8RC&x=KgDuKtOr zH2_@oH#a!+!C~Z8)2~784(@aI?F``|yd!T^=w7KiJ}^-|ikYl&7I_+SFhAyoRLVE@ z8MCeEW%jFdJV$I68G0?i*YtF4^L#&t3-xYU?+zZuwCZm^Pe*wl^BE+S>o7yGZR>Is z7^A`Pv6te?``c#O%AW7h7Fdk4SV=aRaKf$4mFqzs(jy#U<~K20q9eC&vyE2Ke=!+U zinO(7%lTEPptP{Mt$a5vScFCSL!Et0Dmms;lu`?GA3x8RZf+;-h@|xrDCOx5+SxYg z;(w~NjU}XqDptx)Y{ABXQeGn`&-~Ty=?kyiFPq=^%&$B~`AS{dcH)$_&!XN*x^XHM z_`V`9N5|zSHg=1gW{J!l z^-2>Fsi0Xi259Cj$1pV}M)dHZ*~nVdn97!C5hZ&ouG>PZ6HJxhXFH#@NZuOgzO6+rXkwBR1D3by9vgmfBUskE?? z+GyVZesmgvljoMw3AuH3TWO$2eB74lxc1N-T%J+IK}?|3@>;5rwsxD)c8%W(4v`ao z0Dfb=YRcZi+c{%`xF30+netr2^Q4YfHM;qFF(6 zT!Sc8GU1v|1fsh(1v?aR<#>$jI6DE%60ZL# z)k8_novLb)vg3m6`-4ZvVpOEY&K*ud2@v?VA(=}PoE}MCsLA>`pcW^MMAPp$GmJb)DZ_p&8Bn5ZDh?L-R^+2Tnm3L z?UlUjG|oZX1il`xBs{>}fL68;$}Qi*79L?u1GHMMR5#O`9H8c-wBe9$xR&^@+DW#4 z1DAGpoIP2{06RqnYrJm74V$yx`ZJw%C1Z4;@pD{wOlGfumd|hY-=C0v9AqX#7}>zY zd6c`kfB4*+(ALpz%W~1*X3fwJD(~R(neH~(Mj0YD`~Y@&XLu1&tAf^$`6iX_9Sm^SQmGN!X_gvp+jl+^0QA_soST6)&EJg&WO&YJIr(B#d~!+6%sVgR|f5)a)Ve?h1dPppBS zwf>=&xHX1lJ|K6yMXHIw^#~GpH|MPwF7z?ZgP7;m;;>|`*v73?Y(6iIu~;^hbt%(d zx456lB>-jsD8XNPFG5uyy9bcuJfgbIXl-uEwljEa%c4$RlzsQUZ@xJ*&ls(s*0S4< zv&8c`Dp9FyAL@b!Y0##FCHtD7<%hZ6IKSV;z@W-wp{J_G!#d|h)X|b zX|W^)d1tusIT^vM0-!4-wp7FEHDU0BD~BK3(5@A565*Nrj!xa$}X$7YKV zrfUI)9eh@;vh_^a>z|SEf<$D4r4cHi-w`E()U#j@2aERH+72evPKN<0et zs``G##Xj3a#Z|@Pc*kaP};Zt+XU!QSb8ytvsOb-j|eyFQL} zogxM33SWILpPs*LI^0ujrj^teCvXSOR)hpsIXSN!#-^B`L(Z5!-vy6CbPCix9}3Xz zto$6TMDmlNzdzD7GB~nHOHK8b2eTZy6e}`$qT9b8p__7pg~nuHCu%JpB;P zg8oH!2K&EvXRy<;GyTUP-TyCO6z4DC z{CnDq;XlzZ{IdZtcBa1zfUz_Fg8?vhrhg&;_BXEVEPsLNFJf}+Z2yN7V66XOvk3QB ztQM+FN~4BvqHDtZDN<-j(?OkQrdC5IvpY!GdIjd*vxF^( zS*nO>AXu|kS2`&}b?Dq6s)yLH^?H*bw)O2gqX0PNCGZg+Rw>5D%0?wBs+@}f$Q639 z9xEqkmE+idh&R}&^23do#u+2|T8!Gnq8 z(RlrG!bJgYlWn@A;jRucX6?YKRFe<8(pFA9E5elWbbRDwSM-YJ+FHCp9>Y}7OOk=o zY;1ufFBzCF7RtaDqz6A=NX!{zXPg^W%O4KS#vrqii=`9TcUOB&RPGMokrw8c*7b2b zrqj+w)h#%ktdOTCw8H4dp;AE%n)+lyq&Cu~F#)|_DJz*{OC{1^!NO7uuCS&3h@(-tMxo_rxIJB(XSZI zmsq>t4TK^^g3i4-^a!^zqb`nr=UK4?U^Ffp0Brl@XUSg)Q{kGZcid$IY)DhSe-GJ=A<8hw&c9WH}gYmAxsWQs)(8b+@|8_-6Y$_?;hCM#HCe^Rzies$Bq^Uv-kn@ zKgMn(K@j>aKC@wA`KbfEkfD1XsmKL)cC2tHwCCXa&TT|8v@$!UT03ljefU$hx z`=TP)mm|!|WeLstm)HJ`?%tl{l8_}k=;RBiiKeCnGAafJfv-i%zKAn+ z3A+Kvdq&(Q%#|ZVz>ZW+TJd8wVr!pRP$=nf2pUVXkti6*0t%JC_Hd=Y;PcBMUWiVy z0l2I5$pZCIt%W4B7qC^F9r>cI_CDe)smf-1RkX?iqTZF&&^0nx1z>fR zYAc(GhFc0_G>Fhmg%%a)h$F!OF6J3X1mb5g#`IM&kP*5tYMulNQr}e^~*tU zO?|NF-pgEc38yOA}d-9#!SKL~>+H$fMPj3ivB zY+~ZAIvhO+M6g}Szxlor8f@LH6-!P&m)A^h=0;4B3%;2Y$g{lf~Exikg_ruk8{>&86&vs z9$?t5P)2F?B6o&fXe4QXWJWT&yvNKNt-@$F@{*$6*saS8U zebzSH#l6XVSUl!EA1UA6k*k&c?91L8qNtMefe~iVTQ5)I}N8Z9)xLhtgj+sDC zsShAy+n`} z2h)%eAYpTjP}ot9g0(F@8YM!ERe`_hOwb_W(F{VQIXbOwm&Y3rYCvv+)2U1+shXHE zP!w4O`?A@E=hrQrpB!e%F+s)^n9sOpfm4! zkw5j*_=i9u-N+43aSLfK@?2q1QkLY@#udCU-f|Z6u-{Ks* zfWQbh)qh)bk>7+>UgHVB;4;0fH`=4cH^$QSVC$L&m~nB}x;84s9C==Vr}TwE!e!Y) zl@BRe7u=y^EM%WXIGaeveHoW>EKY$5$%-j*w?s0C);+t-D|69ctmSxyc}>hH2Mx?< zzt0Rh8#-E2X?@(ScdoX(XGyJU;C%Xyab^3*VH}xQc;w?-G)!?O1`lmYjBG5g?CCh#(BmS@HkAmS7hijJp#ie)G9)jUj}$cDC~z5 z)Z`crxJR>Ni0gO564gHa671+<{40F!`Zyn=O!zPhODTkcm#o2lOOb;u&E5+YiTk$? zz&r{t`f)K6KZ1iaG3A7}S3O{R{L0fl%duU*H!z=4TpWHOoYI9tsXK$AcNJkXX#8S`)^#~0vCpf;L-bu5hTx$a>03))vestuq>!#?A7*tfvfSP76)8%`=hn^C9OT{ULgzeALd+=2wC(b8t`AkM ziaRlzj6`zq2=jlmITxiHJfL~d<(y+^!j(J=y1Fyl;29f>9kQ!G47<$yzMaAYeWM|E z_+6qgpS$hi`>E+VNm$TP_sM4BW3mvLF5YL&quf10hECk!pG*y&K~z)-$Rh()-zH7b zo5-wpJAccpV4)>wP6{BRYbMoTwK7`f-5NnI;R$gq6vr1&DKHbR5*?4wxPC(ldd|JA z!+wEk8Cw%oqR2WWTE6=H7owcz(%pL+KnXk!$cDLEEx+Bl*?sO*Zm*bQa)mx6Xv-$7_%4E| zy#CblU;2G1$R@!!8q#HujFp9 zqj7_?66*A@XCjt)H3E0m@rwWX`R!dABMQ?fB&te{#9IQlW6L`Xhv(~qz3wW-vKc%404*qRO*?@)?8s%LG{G*xUiQlp zUo>1vUzyp-R*(ELbHwY)J*MCsdq_Y)RG#qB5n0n<4!BWcTt1@QnP&G8{y4leVxBYv>*CpEh*Qh){32f6NM4&Zg z$Kre+NKm1H&h=#-N=+sk6B@!==BmAzI!K5RrW8l2PrDH+0y%}qa6Dixk24pze7@o- zsS7B*4lcur=e5N=zGYprS(ug2f(j*}OMK?kQFe`wCc!K<%iruXo<53@g_J8hlG;w$9Z1^MY3M)IEpOq=j#XKdiPTIpI( zM8(ofYyG`};(<&Bhr>$kK2kV?61X|+A=9%~M|bNSOjlbG2Z=hAC$dw-ax2mu1v4mA zD>H#pe5!`dzp<42Cf>zS$pL{?5`D&5r)MEO%~Wp4${x(pu{cil_Jv7zfh(NuW+q{( z<7N`?AlQwXS?%*E639zt|F$?N^68IoAvN3Q`wSy#ckfND0!oY_AS%KSQ<}|oyl%AH@N0?=!=mL=uV*UG`C6qi5ErEQ%fSW>V zH%Y#gF`q}%u8On#7^n2oNZyfS_ZXV0-{O&pwJC5ig6=e&Av?>QX71*_cg?~eQKnNX z$#%SpAiYjBgJfPMrA4**D>*)iqw8#1ADGq`+W5t9IMEd<&m-?YcaxHSBaMUhJZus9UHUxACuoFBem}@YH@SC`kJA-(;j~8ZwwM3KrY+m5^cgfn z5L<`rE+xNCk1ctEQ9s0BX8Wnvomr{g3J~d8%Yl@-h2WK}L=X@881I0iUA0rD5Ym2BYFOZ~p* z$tXHQ`)4-h7jcxpUNjce(RHwWYglWJ3ahw zr@QN?>#Im!T^gxJWT}<2@$Q6ZM3~5+-dl-N5?Eu!;9lV9}nMWTrxF2H#1NQ~}tEHz@a1u!HH+ zCgYb3GS{rYTV3~|hnZkBkT%jy$k>(h&@;mCC9o^!6A^`>=JF zgs63onTR}=sync1ay1S~%G4&XpevMc^OSZ?a?_e@mS#MN(7#r%jV|1?5*_#*C}= zFK5WROy=aYx?HaC#cH4OoN`#0{qjV)hs50-uKOd}QW=82hvbD8r9X+Moy!JD$8FoD zA{F7tHO|xi_glLS74js~JnqPIqp8cNohD}RsWAff#ebX1aO|5BE8xuHIV?XYxY(YO&J_>BgcG36`T&Pv%L*;NQJ%8JSz&S)E55HPG63KO%4YwquX zBB*`}l4iUD+2Zv|!Vb8$#OWb5|9sB!P8{xxR9zP7nN4e!&?C7_vjndn(-+lF_BxEG(_A`(daeG#S1lZ?dwcvz z!om;bK|^uZPXo>l_XloDiN%rp>PxvjU0P8-r-pzy;ss!Z=-)|DK-o4k{^~R{scZ*R&^PQFEA|-g?twyr z70}Y zW_w)n<~RjA?Az1~#5D|{yjRSh=Bs0S^OSF%2qXE$ptc`cn9>jlGT22**gPU*cIKa; zni*bND&CrkqVVZWKLQ4*`T6Q#Zfx6I476xq%L7bcRqHjox0!;RaA=x9f1k1kAY#{W zQ51|o6vZ%;i~3F|XX^kwmg9>$Oe7SL8+KhDzuTl&fGigAznhF!T%??_z<5Xcc$Xlj zX_0w;+IY2S_F%K9e$(diy4ac$VOpD{;qiLEw`{%dfFp;XITUZEw#X=|Fz@FBy-)lA zyACHU{Dt=U_kI5?4D2lbG06IV$BD81OK(2oUls5Feb@e9I&ggU?B=nRv?50=MVjhp`7eq?HlVy%{oF zr8Z!uIw_nuDgy!M{(Qd~ ze_bCPC!_RObm|i0O;=i;-G*xVu4*v;UMEg>!&OR6-z>a2Ruy%lkQ|rCV%crz%!r}} zotU+#Hg>89@@Vo&%bVEuUKV*e&8`!-{7lHkGx1?q_GsbUi|uIS31Dq(CiJPiV)MR_ zl*N&!Fx)(|UMIc^0hCE4F10URKAEDazpD6xFGWjy4d{+2vZwKrXJ6hSL(oJu9WItK z>UHlB%9PksN{w9vZ3#M*(3pZd6LUgijOjt1j-+MP$-x4WnomPtGIXG6V}swqYDhw+ zv*hjZLC;^_DAmmA`VsRPHyp5Am(11 z>cmjB0zO{Ma1sJXaTWqHSj~2g#V)s^pM_1w2W4@fL$6QMFD{*7T^^l-G*oqevJTzz zQnxCfpGUat6~P+;9HLz{8{~VtMY}(3jRWm}O3Ka&`3L9^ELX1Kk2M=| zzqs1zXBxD)4|s}ffY73*V99e>w-;h_FMRtdY+82Ef?6Z}`b&qlt&wNJ0Aj%0^?tkT z@;G1g1wxm&x=zc3$sK(&@VQ9S#0w!?JFz}>j;+Eiv4R%UX&-A_*AqLG27nII^0e%I zUn{A?#0EdTd(}oz8Pd*a83w)z8x}lqJ@4Koum4n9)Y0EWu3dYmD>I#MX!+(%*3+?<_L_D3udQw(DzE=T?5Em44R15dfcUR%~4*`GQtukYKBBv&}z zQLU`KkaIqlrXMyLZ5$q-KsIAUA~3h7f!(K2*W5!#uE8*K6aS&%HKJT zun;U)3s=K7Ie8o+C??su1~60~_#K*arXbN;W_=dtj3V#EnaBp@OTW0ZjFA9_J$+%u8SAoql3YTcm*c!IG-A|zu zwk&E4OgQhY>gm4!~EyGG59^AhX7qT=v=<4f^rT7UzZ?|MtHaLHhKw`I$X!oeNGOo%+uh z9HaD-ob+|&8q`SK+02a9VqK9uLEA#hK!?N#OV_+0mzv-G6AToX&B%Vs*8dK)C3S~^ z3p~^yUtQSl+_ds;HHu+KvJsmi{f_cojiA-jehc|SI+lN{8Fm^BFZ-l zO(g5;YF5d70d7U^!qE1}I^I`EE;uObLTzzzU$?uU-{Ih1)*bZ--4*jwe zx9hwh+eLqo2MoWQ?!zZ}u=4V<@za)k!0%vjARIBZMIJfDKL-=^ack3`HxN^q7E?Zim`;nMVq!b7?qBrZe z6B@j7h-g3Jo_pBnol(>+EtPa+JCc>~+o1+5gt(1jc*`$bub+@NZ5qs5oR0d@XP#(m z>rr7G8MclvUzOX5aqQ`kI7kT5SAXk719H=gyPz~2UZTX|2St+Nw1eO!&+&Y zv=wLwl1aBkYumBzxi6M7zIb$C)v|JJ(;`JJuj(E`SDL_4w#LXGe7u=_MQ_tULM(i0 z@((?*IpqlYo(?b_nd$1Ez(_exve1qhak4vl4Yr5^=KF zdXerS>k0ENH!Z^X5ZUvcE&ZU9e^BJ0OLb5u*vo{TPCghpl`*F?E$ht=Zsc|a9!xA@ zi2h>{ovq$5IrUs#r4>zLQn0ePo|$nP8ubid0`z@5vRzE!P~RZ!p9Mdia>6;j_?L(?uJe~a4} zmrNqmD4ZsJziO?X#&9H295B$~G-=*SAfy4Td!>;h09tm4=lQv}qv z_jYd3@!yh0o?cSRyjP8J@xNx1K{=_%hd8lnli zPlv6puRn()v@8)o?qr>O0ytV(VcW-`<>>oP^8JC^Ai0}uT&leK8X)_5Kuw2CR&j&e zV4O0Ho$TxsrH39D`pI8ZZmmw0b}!5IJ&}~N%Pv6^cMfibUbp>WqC*`=XR#=&I5R-= zL8=^jMn)RDCNe!~jbZa8en)vdr)GZCV+wuqOI=-}y@>M!JQ*QydMPW0a(#_#byXFS zc|k(Vap7%Hkk2u_#g&7M^|TMa{T{|%2vCxqT{?VW@@&{D5z~;6DP+?$bdqT?M{uW& zm4mOdF@0_D4XHtyZ&+nV*K7e^Wa7rlXPTmW$v2yEgo2RXivV8=bT2qSPwg$8QwqMG zYiJ!5bP|2syyedh-Vc@Lk(BJCNrW4q;pdsVM@I^k&Zzzk2upf~Sd^V8>ni6gCVH9$ ze%jz81@~gm-E(?3i^oY^6~aS?LpEr{G`VbxdjmQVSY|qNg#%d}#Wx9MWeAmxRj#F} zItuT)S`p0q3-#BY(ry3VD7hp$6AW8v;o4Z2@-5Sca3xfiGATdsO+?LHXs(U#i@a8< zxXajDbl{AHX~s5LdkKjCQt6KO>#h8AITeM=pCS4mj9Y8$gkn1bb9`fMCN44cASXPTcSF|~((UzNPk6SZe&s+`)^njU@ zGpWgAU}@fmQwTg+tK8R>aCXzKhq?xG1){~nLRZy3T!5V$5?PuOQjtIFwsJ|BWd_lA z8D?B4ll96SY`gA^c^&75r5KPcurGEmJ9Z6unTo}t*FqUxMrE? zjQR6KdK$bbs-8!rV6-s3vA_3Wn%Ify%DNQMmx;UzZj_t#?yyHrJTt2ojH4v^9+|f2 z=K(n4(X5^S0v+NpCl0qT!Ax~iu5_)S=P9gaM{7G(<$&T6>$Zh#Tc?Po^_eATA# zkvgI}LCLOD=-`G6R;%0db{#?UoMcAw$@(1PH!O5`P!`#R@6(h%WEH-OZIWB7`)Zxd!Gc89u|hMeyF6<{`uhMx zivk5jbL?;&mOQ!NG$m7y>gkWN`bF=b)`jN^i_-iAqeS#qfor1~2vig$4OoEiptQZRe#YSTgppFN86l zpyJF$m(@FY>oH;O^L|*L-2mROw+$(Ni4L!(nXR)e8QxISt}X3Er3go(GsUiYTKhp# z@|e*kwq(vSjh}bufu{?i4!&aMfsrgPQWwd^0o*eLt`0C!_6vlqwC%Z_kaKi#M)Rns z$ZN<3RUC6lXCb7IvfoF9N+jF{Nhil?JeqYJ54%#ETX*;^1lD6NJ12ilcWR;_`ls7v;O^{3 zG7Afd7)YrVZ!-cdW?MKW&6G`G)hPxb-HF-6hPvcLCn#PcLsFKk@mZfVZ5bxM$XV@F z1etKKw{}i!kdfYxj6lqaY+{86&DbU%(<-D&qH@ylzOY~0&UpoUt%7nAW~z31E<%HY zGKk+B(^kgZQZHYP)B|WTuBJ+vMAC~pd>B&0Ml0!SffHm(&F4Uzj5}OrH^-M$L#ww7 zPGm87m>moY%hH0kG_M$DA*VUi#Q}~pnhYE`ja!kT`<9J=|hH3|##_<*K z4%t3j9Gro!<1zLeG*qVb4!P6+b|IXx?w1a(3H8%S$CCTvJ5JK@hB)ua9aXuby02m+ zVZYyggW?H7A`RR*b3KIC`q)vS%2H?~v^izDZk{kwZBjNG5sTNNjj!Knn#^KjvVq9x9)4n(zzVwY z?}?QvdZmu6GR_XP-8c$ax5RzAiUSY$B*fMq@eAkR1t=T&OU3u#C|`*#R@do0A!!V8 zGAi6&$F;#8XlXZX4=d}H$8(CLxWE(J8YL-9lO`$#p<%=aRcB{yKKtn{U=4{3RQMZ( zht*3jJr3etzLT1Yr76>wXE4>c-gBCihaBsOYvvKG+4yCVv5RA`(UVoM2fI$g0Uw@a`sK1h5a>q8!`hm}W-y&W`Jj)xaheWxC-ys$`6 z(;3dnT&;9{>K$%9DJcRtz@=j^O^(O4;lolIHRJUJn{ zz7KPR$850`nVrEC1kRs{Kh^l;%^#!d7-J#09+%YGqXlTl?f8i?f_y+m!TwK0G1o+O z*(q~KOxRA|P&uTl`Imc}57|B`grV=tV5MJFrZT}!BfS>fd-j9J%|Y|BRP8yB=n@4T z12|4D3Dffv*o)emePgO9xTblQc|-PfhZ^q+4Ica&bd~e|X6(J7*ZB($K5IP(vyA6M zrHI^HqQxht@3c|NBFPog4K*aKNV$~ruCVD3`_kj;Q$@D-T-XAp&7I=B%67O38Dev; zTrTw5GQ){9Ot@ptb@)qcSsr=a_}9%%c`9Lm>t`euTq??|ULOUhvT@m3VGh(Ds7|J$ zwm2+M@nv=ik{&tqak|7#T!{QQI_z!nG)&!ky%P`EHwUaMGleq-#G0kvv6*Y8>E?falz9NYRsl(t_iea zK2bmpaPk)~?HxUdhyZMY*w*?;lCFr%&d_oB=lL_4rJ85?RbQ3u2mCB>BRN1`?fIDk z9fyt%h6+68tu9-g-SunR-!_Q%nL`_sFJ305#1!7`-WD*Vi&eTwxKKa?j2hlKc~IQ5 zjC3H$asABUkM))Ykq<4jUR{ox(DI=cH${n~%bd%fNU@0wq2;P~qMyTuhNkCVE+@GI zg*^|q+ndbBRq%GpKr4CG=No1BNSD;cQXDX<+Pdc=qiJ&szajF&$usQZG9I~_GXx+k zLT><2ZAX=D`(X4u#Q#Ro;ysGDCjx$}@6Cj;Xv`8@PNQty6a|;-vOh632Z2QtEuq%O zD#stI8C?}cHZ*(D&Jr#H%cQ2nE!D+@^o+#;K5_4G4dU0R;#D{C;Wq=tXTE7UId(p9 z7f<}!WN4XbXN-hx?}vTu@=pB2?jTRJM=sR^wQi4Wi1690m(jOD%g#gb`5pL-h($;# z5V-R#+H?4WV+d7y%p;X{Z1ya~rwH7B8d%LUEtK3qg&VN$P2|}paHtE#v~`i-Jb(`| z7nq;(f}w+Y8Y?@!+1xhFZL}GWGgG>4ywyWC@^;XBKY;EZInt*L%n7pP(|qm37$jo5fUbN3cqvc|ix8%@U{DQBwz1>B#Ku$D++*+8w?wKkj3)x=N|8U1%>-2@!{L zZFlD1dP02ZO>Pq3m-3nBnv$q#gUQ;z~B>hj(AXPXCysD8WfP*}NAyhqRT$wRFbPo?uab?ph-a-qoi zFTu;sIlC83{9&)Hq1TL15*1+TBXtd(0W(GEGOLlvpK=e=b50L3^ZoTa6^PXq<`0^T zzw)f0ts#HxKHjGe)d@XdWn2rFBlYdy(j>y3%p z+a#fWMqAO_zaq`$gSH^9I0dc*aqp%9I-i|FDA>7P7N5b6Y}UntcRGQH1>jsrHWYpY z9~C4rXoNl>6?tQ*p1j;VYXQ-L?v{Y9*Vq0n>w|!h+?mjwh zcC5!AUDbr@=IkLmi^OjXZCx73dNj_3svV}lVDY;XXr_%NN8E>H`ajmMVB2#^RDN<- zdDgg{&sd8Wx61}DfPbG&yfd%Te4Z`9C4SNe58}7m99n!0#PWV`OuX-uQ+%JxCWfeM z^Jc7$s+L+J^Zwx3PWe&)mG%1fonb7@OpO0I%Jlzm-`wBnEY`o$S?vF`{3HA~`4E8EXYAkK0RJ1v|B8$LuUzTBeT)Bd_K*G_Joh|V zYb{2rE#CV?wdh&NbqMRZpc2 z%Z&dNLWcp}-oW_V@af_luM*DnhpF=Cjr7O-Z6>#;HcIEN=aq0>dD2FL+_dNY+qV*~ z#e{*f;r)B3@@e9w^5&=Gz2#3wPg?FRNDIR7hw0f$a z_vT4-(Zo}2r%M$map^YK`v(F{;Z&;+d<|nJgRLvX}iuIFl00o~u`dF5K?7ij688&t58x4p>`< zQN~9#qk-;3E4IV@IHSf_8H(3cK6zIu*PgJo_T~Jc$G{EUtgL5su7=q*$a*YLXEfRj zNb%-JY?P%O zVs)35%e9hbdCFP-GbmL;=-lvZEnH1QXG%KXT!`DJ6;+e3Y)Puw(8M>i`^OrNT%SND zjeO%c2#a%;j7+%TG9y_sj*=ds4l(;?^rd|Vq97Gu!et5}KaapgfV;!E*3i^}JoGpX z$fZWBmpOpo5sgrX$gtFKX8H80;6;|dG=z}Ou!&dTL?U1sWZEPX?NEu^0duE(L-}yA zei5HpWO@mKy{m^H7?E8$HtQ80#1_zYBw8C##u8QI33}Hm758^(LY(7qlI@ZBp%O}i zUsfe5yS@%Qms7d$H0$$~{@1%k-N@y1>g9xvZhDu`=HxAGaX-wlpTeQu1*6Bjt@5S=?+4q^cg%Qz#?2QIR)T{!)3@9aso zJipUg_x!kyp37WW@ALt9MvZ{{8hOmh-7>GHZj4lfesK4uAezk=R9^x=EfrgMEchod<^_n;yF|MQ7nG* z3L_o~QTBxC@NwcE;k}J?Zz-9jYTK90uCqE(1T2sK0$Bm~V&Koq{jlkADI?Rur{ zp{d>;D$%_S3QY(ka9&tSB1?zX+lbEsaEfs=*7AB6+4?uln!xrWZ3sXdq0ol`u`x0~K2%Aw-63~Aooqpv;e5l3X9 z*!jaSY1M)vS8!s>@X)WxQ`+X$8WksoNkQmtrL|q@^5=eH zB+Hg@GNLZoetpX*Sgr>@kD^_o#9X3$SM+{=z4rce=c$*{ka8n*Ha7UuYHrIy5IKICp>2 zy?d0*2^`DS6<_+2GqgmPKVpT??CP(>HeaU!#hy9Sk|HV-`C6F3SNwL$Uz6@E7fG+sMCTnK{iWS&PbY8G1h|HHC|Wg%d1jh zt;%B?oI_spOC3;}wsfb5toQA{p6JbtUC8(T_enH66UJi`v0LEf1*^{z8kdZ%3mVEf zyaUHo8MVBVwZBg(W}t+bri?9!7{IlNbSn>KSqhJV74x4!ea4B0P5~sW-!|e_ijke!{HE(2b}GhtJwH+RAVrV_wd;D)?Lk*MzeMZ#zRr10jz`PfyMZqZ|?!doNruUZ%@=B;|ccO)CC6#Tt#E39@IB#)MwBi*^9$3EB1@qQ)M&yIMWMd)8` z@g{nmAm)3*!Xh*i8^ledCUxk?TEU(!{yryX6|`(TLV@x2aumz%dcU7~7{aG$iM2~S zaVfJdNB4J4##w&iq5`$C9@Oq_2 z#PTk;ld&Enm2*!3f-NjPSWse8rSoC8VF%bjPR3KMbCly}B=cN(JyaN}-*EdPf`wNv zJY+48+N%@ehg6(A?KqRlV|lNSfCyo8J6NbQkiR>%wk9bdEMt#_P`I{=U^avn2K9Jz zGhBnCB(k|t0<<@T)Ur>JWkqNyd7P|?v&k+N@|u}u2kyAGGKG{ryea#1+B=!bdOU9& zwFFIu!z>7m9&`>YTp0oSu$Qkr-+S%*r5ylmg>upqGY@KFStjyx>eFl<-~n;2`U8(L zGh1dP)hq(=S@HENlbo~diTz|!ECFRx9cK861zt(qJ@ZY*t#KI%9x)JCQeWHPc(ym> zHx?_5n^65a-StT+x?Dkg%}{@kcG6=%y3ixjt}7}ISs z)IoVNEH>BRLHj+WAFE$G`UO&{N>c2FIS>ysEHguIS<(ihBM7B7*Q2hh&(Qv!qLJ8y z?q^I?uQlzxWFJVKv#U~X>@O19ldfr%kNf%~B>?Y)okG1yERrO$qs{trmN$jy zV27o)S{@Hc1Jpgg_CnJ$MtTjkmd$bf1CdF>;OMcfNZTGZAxFPvNqf6bgb~V`rydOv z4e^QP;4O~_v@G6wy=fh=H&h6p?GsU`gY!%6YDyGq_uvDls-C@Es7EAylXr)m;+a&N z@AO9_e{8B21=gY~zrPKIWub`Pz;FDnO3Glck&9oa5NAj1wB<7z-AT#X@MpwjldW@B zSQ!}arKXUanx-{pcjNtm%SxA_rHv2L{2-$k^7dzo7a_O0dY1M)m=&|KLUMEL>&+K! z?_5`cc2+eZx8P+v<@Ugvf0<8{csp0Yn|qKvG)ZRT5*iy@^k+sg@)6I#V8s2D5{I3S zbGb;K=QW4@)za!A8ka3Az7w!p{o`n;<5_^U5t-Gzd?g-RTb)B_&c6Hcnp-2RBie+_xT`7cY_Jtb4k6C{YQf%WAIs!ub7za!>f|`-ET_JU zz_Zu*r23w1-bak6b&n--##t7l0u@>q0>8;aNo^G1l7)5Akmp6fqb73xmeXnx>bq%s z((zo}Z`-nUQwgESxES^I7lJgGDe%a)qL=L~c8dI0i8{M0d;egqvpkd!OMfkBslu1) zG`qE4BlryzP7b}L8xIyB8L}OS{wnMey=IrViLwovE3oe~$^J=;#aaNcau)G|(H>2Z z2RtkCjOUKx&jOc*C4FFBtl4MVlCSeYSLSQ8b5KSAtTRje%nWtkb8RuLZlS6L!}`!V zv;c-_e!N4znx%AA+_$MSyWQZquJw3yjyAI&_=rD=xqg_a@O|-7j|iT9_z~u~gd||o z!iMuEC~T%{gMR5T7Bt4H=-zrw7`sbhT6>Pbz->(cZlLuXT(n7Vh`i&*Gpi1FJ?4QpJN$S6&*l-+WrM-9h-6Q>%AV~Cjm#9T%cWyZ5-@cyu-wv`eJR|%PRJr4z7ND_83X3?t<5h z+AaNBskVY1VWKY`Qb=f9cd+#yN;jvuPXF_*N(Bq<1exbnSA;R@24$MvbXEUPn%K-3 zUiag4$5+&EO11!eL}Tk~VQ1-bOPLH6NUk=sYeJ*Z6cv_2FDvY~tuHT3dDV#*N{~2) z`zB41aLvsdIw^4ekY$hOlQ`V+!0g|vCJ?U+DRfx6-BQ&Xxes-;e5kWTp>Pc4#2jQr zow2Lh?9Ok7F8OF0`l=72VIgK~5yuNGYi!DvFIz&hLxnQi*oZFU6MElFCe8PSLhG#MyjBiRXERo@AS zj-M}sl|s}hu)+21Ez2KfNYnu%qU!M<)(R;~Dj9W?ZkeTR2Cm}SM(#yQY@pR*XX?t8 zwBpgx3AV|?k;boEHymU43g+D>Ntgt0PWDglpveLlrF5)x^lb?}Ia8QMlsWt&2`V<$ zIrVR>d_a~tX{QI_36sC`n6Sp}sp2QlO`$?k>j z^mr{#F9Q*L3xx;~Et82*e{uJ<;GWBb%YYIpl|Ir}Yl-RZ0vN%EV}h^ruG zOVB`C8js1-KPh;T5{SCbw5g3ZB{jCO_4k}rvK>}vkyp*2+rO8%TFzB?!`)=p#yl!( zuiS~cRGdxZHg(R`zsioN2ARznpPqJ%oW3N9jfEW@InaRBjoVoox0`UrYE0FPFJMUR zpRi=ib56gxr*y?u`icF-80a3IEe;f4DCYJ0GnD_jq56IpbooKYILE{VrlE_6Jv@8m z*rRsU?#a)9Emu{4lu5JV38V#Bwkk}3(F#7CwJu#LssBp%;?Yy(p#T|r4Y%6ZHe+P7 zjuPQEdfUO6I8=?kC^2kQVBdF00Xv<9(w!N)@Q5vZ@3w>L*l2lT@pPz;@!=LDoS>hX zJvqi{pEQbd(W%R}Pad8&o4wUEfKjTF2UiCpy13`x!N75INU$heACX zWU@oK;QyX!^8V;QpR=FdmLP^cPfov#{C#;o6|$X>9S=6dn0a>*`1>$vfOz@$sAV^D z_h<(p5Vufg@cp3Ry7xz*@u~G6N}c|{cisQiV&`OK`tQBW|K9)&00T1-8_WMO>51dt zKK_S1Cz$_ZRajQi_Wu=p z{FnLvhrkCj`+o*}u>Nc4f8s>U|HO${nEr2rkN;p{-fBG^d%X64OM8l=uVuejY4M=m zVZ$9=lQUUwz{}FRWr&lFJ0gdKP6!=-|0`IrR*2o8X=53%RtJtN#=+?Nej)r28`-P- z<#>N{xH~m$@K;=b{`>2GGk6~J3D-~53%OB8d1Bqb`*Sza-QA2C^Wt` zzJvt$U@vO43p1_`c=UFKYGi0Jy;vNn8**l#RBYvL3D z4*^L%rAwS+mh)@v=B(dXx38S|?3%5ji4DfveqF$;(`Y~dz0N7j;}!AHNP>@@L_KBs z^l9f1FvQQYPuqtvM23zj{TnsUH-wJI@Z=F zDOf}#`}^FFo4QPdPR`ukzb_u|owq$<-e!s&vEPSl5CfhbYu#SXYd%QJvC#gNE6;Ua zJP9|Yx94<|Z>GI=Bd5cms;xA;X;s-|*zT}zc>zj)8Dgo5hpptR>u$O5YgA?%R*J|W z=5k#9%%6=F;LPp`J~im?M>F3XNH3$}lyXa39z6w0-cP)=%<~jOZ6uX9TTYvsnYL%W z<0jJE@+9v=8v3|9Me(tZt8-3&>(UQ{@zRgK+g&QMZc`9Zr-PTXN5)V^*vx}))h+5X z0V8c0IbM9xQlcs{(}}7o4A@W#_51>!JmuaMl-}m;9?=iH_3UP?`L|lRio_ZvPMDBK z1j`a6`?h(VdC9+a4w5ogo=gI4L-XT)Wenq zO)^KfkS||cXdKf67p+vKZo-l6P7mo~h@Cw3oaO^4toh+8_QN2uh|I%$4Lh6IN92yc za-k9!_7ZxN@4%%*;Q*YtVeM79x10U%ujfnNZ=}Dz?Vlg_kfJc|0ueNsS1B{`uX6(^ zk}QQpcDgQM+h)F9A0)MJ^8!WJ-2Xa2kvlnLf$M;W z`E}UCv4yaE1k9<#$`Kz8<3yI+EeTeC$Ox8M4A5&K@Z02XLPg4{OK^zAEfGNUj zvi^i%u(Hh?dSZ|ew~n+Q#KvXGy+IO`LVo=vg=S4ss9Ph+n4h1^V8hQ0P&5tDhKC~- zQV^wVs+QYzH?$0bTDv*ab%8=)MK49ZAqA-E*h#%}!x`SqPU5<^rL!)-B= zb-yyzL5?AvP0tZ5UArereYzguoVrT*MYqfspk~3(MYL)1aGzrHLbMl4u;py6>`4fL z>V9VFeos?aI7C6f@lH1!i9ucU$^Z3kTdA$t>0aN{d2pF~O%3${u=PM=^60X`J2px2 z2n=371-+v;+G2B3C)U_*#B*+EqCuX84rjE5(E-M@l^$WqYFRJcIot=oL8vmuc|n2R z+=!iqr5eIh(Rm7DY6C;sI(w|!P*sz~nDAAIR5s$&19G$v=F@LIqk-X}UGzBs(FnEz zOit?|3AlK!65g;F#b=K2HDQLS5a8);4+``(PU&&6$e6EdOaYk$LU;V*_7ko$%bry} zs7qI2Z|_uquUXS;7GaA>E?DGwX?;8>3ai_lE;mAi)!L8-H{>R*%nD2qcT^;yA?HcT zt(|;GROD4H!z9pqdLA@qyRzlSD|?Gj7c=-{e4~U|9+SpH`uOK3x;&}af?Whf+X+?@ zc!Pmd8{LB-ReI|)b+KOd{MtYMW)F@RwaN2*@}Hr&LV4LjN5_1G+wwdBbx<5WzF~`7 zFkn|$uH5$==eSB3B6(P&$}22-5?j%mMkr@er%qcyQMA*MaJG#1s>x-?@-B-=vpuXE zw0>u_9MTurT@uPYLt`>d{;q$;>|^uCN8FSTdKP#8WL0Wh2k|(th&`RQ$m~h2sJ(G; z3eKB&9Qf8loSrH{af@kK^8O7ZfHV=g)%tQkY_S0At}xSOtzfs-6SL{C$qFX3wKYy+hEw`MYI9-0F<7eF_&wvO2o0U@(*y$7QTDCR>fxWIMVyD=m?}& z+Ap*XWEAO%bkTgiCA90eBf+l0aa_Y9a@3(g{5E-J(o;&fo)ooF2t5*N8CBA;Y3IJO)&1nZZh?GVz?kl@WpiXj53)danQU7JNbxW(iD8dD~6dBsl`|K z%7}uGJar$eus706v`_}a`gWIxFm=Yzn%gVKTZ8irms54luJF;v_ z3LKL;fdE}U^VCX>m+d|Q@pqOCaXag$-_O5b3dBu;_GE=VJ z#NiZMz%h`Kji&nS<&(q>ExUTlm|}y;P|F^^^)+YF=T}t;UPF`@H|43hgb#?*kZoCNd>SvI!dd|Y6^RoLx2e4jjz z36wtN9;4>&T)dm%9I?&GpUZM1yIh9%%yXJ|p2sO)SBF!zlMkB`;T)%`(5-dcsxNf|B~PW^8Yq(>78UGK z$VL!M?mRZON<=$?u#PybU>DYd#WT{BEXlstYKnBi$G0AB+jJNwWd z^cGI0JlEq_;FH85g1TRS=ppYegUF+Ko_1esSal+tVMPm zqCd?%2x^OJEc4^jG+Y9Yh&+QwcXKPTV`4~^@{i0y>S)g1-3TBkHf)f?SS$G=XpWzh zoX2eqc;4xQUZw!1+h`d(qpl?u^OMwf+U~>wuTqTPQ+CC##fgR{tI%?}r{C0IZVQg6 zO7rURZp2Hvw`eYVimwf&qbK0hKeW&lsdjVtYpTLLRA8E$tcw^K4&7`j!xyI;%WE2+ z@w_crQ$ebR)DZwjmimxdhGz935Nt6A%xU}RYH|O(%%in}pOLJqs_W?y62XFtv9DqT z%du%#=ND!|o&5CcO|<$)bLqh^~QJv6YBVl=tHi` zm;g};-9H?d+ml%kDj!Wd?@|?&b|Z_2zTGsen`LIf1&#{6n}mgVOi8@kzp$(D<9e>% zz*~On8@9j(Vs(g1ygGyn^fZl%WZ@+`&0G~zX!$RN<}ybc9^PKQbQ)U6&+a7ZG}Xhn z+frZ~U9vxyd^N-lJdC64Fde&|OxTk05ZhkfI^HmeU!zIHNuymc4GGMZ;MuC@#YE~X z!tA^_+vB2ej6esMW^)Dtei_;&xuSXW90qU^*0=-5H$2urLE0XJLkN=CoKh6B6Q?S~ z-zDaQptsh|I%9&*NkOp=@*p#wCGm(=u^<|VHOi59ROB8aI5NK?>?0ySWt2aa@J~uL zrb*JxAQ1vsJxC+db$^#2b66ZrE>bjg`X7Zq@%e7w^kMax#k{L;#88jTd90j(6(MtC z@>d9Ch6G2&EiLoHQ=gO0gmHCatF$NXf2|(n-*OK3*hMEK0D@xPUh_$VGUAkKKTZ?# zRPn4f$l%DrP5Dd6UbHuW8-#I<*r26FWGM}JZt@b$!Opg+ifDi&V%je?jF)ZU6qRs@ zo*HrSKuN%L3SQ`)x8&U*Xu&iOKuR+6(4<|(Fkhya>yjC)@i^9|zxlUeB53+HXdaL1{(Qu^NQrh$D> zNQ8ZX{c9ev*{^#00>R2aw0jNlGfVtCWH?|>u|A~i_Nf=-ZrncXfs(QElqH^sQN`0Qirsa~`@#YcJ5U4K(A!u2U(nU$YANW+@meJV%&01~_shj|DePz1c z|5?0`(tiJY-m~P8Xo%kIknk!LTbcG~Pv{KPg_XpvyN)PZY)T&DCp zCT1<~oz94z`7=~EQJI2p^(Xx;)w5!vKmMY+A}behm2k%f zG6g-kG(7j`SbTvm#Y*#jP_8licR|nvx=#~+eNz1F5vStOz39XPE+0z+>`=+@q+ZBq32L|F38rWTG1=^w|Ta}Jv+P;!Sa zco|l)j;BQ`CQZF?2-_gr$AP$`5FEUxGUDLbaW#LRvuZUt!$Ioa3>%H*#HH9ILdme7 zNBTY4?o{hD2ejSYF8F5-BWXbrDnq&u76TC-eLrWqc&>KzyL-Cu%cw$sv#sR%5L-3i zEAWk#^SI!!m8w%}^jd5sJ^(Dyl`)6gVv~S_ujZg7uQTA?=7=f8 zpb}YdS>U4D4VtdYAt!*MD{jk{@1f}NuVU>GRh3ygj{TitzgK-RtD)z%(catBm!OF< zjqI?E(4Ik5t=GkNp67SLl@iLpAgWbcs^(YQ2-V+4DEGPai{qA%WW3$meh#OdS=_p+ zi0+#T;i%?>!a~>!lcrbSEC{@ur7$Tyvv3RDCB5k1o-xiyNN3NIHR~f^;1py0UHQVo zkd|Zs`SmtsMvZ=#zXv_~@sAb8N&h%0Bpy#xKtGGJSZdA?5p%FRR6(2oKt)!kjE~p}u(KDR6H9}H$-ZQJ zr>OQCPON!bMxMi3rc=82$hZKvV68wgvC8W z>9oN%z6w45pg60sZ)eMvUoPNTR3c>8tBsrBg9OiEhrMmW;>cfg>g(`Db1oiHnfG$@ zj^Ru!5>QOnF+dcSuBvbj?}FWC5*IICsyi9u#*BtZiX2vM{XJX;H*tQszgv5-luQ30|qR<kL{?>yO8L$;QH*JHp_GvZ!g8 z3XT!*4{n6KYxfGE`vj;6^G@m~KS{ER`UBfIQ6J=Acv-N3x-K!yR*koo{&#A@=RW@~7}-NAD_r)I;d z{1n$V!R43*9O_Su4e78Bmf~yM5nJxjU0Mu9tn_0y9{wWn_BGt44#FIen%8B_Zx>0* z1$CUk7G=a-wX^cjP?sqEsPK_`00QE<2~(fv4Z?Yud|CNGzS(L&F}^tosXA^c)p?x! z6PVV<&0k9t%@);oBD}E*a)NCkLCl}38)+HB;K5-Y477m>s`Saa`yy=UDffkReeC!KzyHqs?hQ21@lM znwMVm3;q8l@F89wg_tk?B@9$v)E$Ubs(*)D%v~9^dwIM=ub=DO>anP6)Q9d!9$p1jiztuNb zt89~CS1TT1KelYwBZkDzR2p(&{BFnZXGxm9R%#MQ2pfO~OYbhyU$bkk*Dh`V z?F(97`;22Gsk|t|0m0W@5~^ft3oTk;aR{`Ds4h`S7dFCKM1nT0q4=d-#A57dk)#-z zZ~e3$4#5>dBAV}ZRN~bEuid7#jGhAa#IV^jyht$?3xyYDRFv@iXm;NbrYmyUCMWl>CsxlZVt znfJ@GasN`~@v_#*a|@h1QQiJ-(qOH`|Y(A0zg= z4O*;4X4HgejNx+9*Str=;GpYM8KxnqmmSkfA3Ab-AvQAb_s+Q%l;Cf_pl?Lkh;}^xO(1 zEM2ayoCZT#lQ}LP6oZIXZ8#HIQH9|isle)Q@9{tzdPt48iNR(Krr9rUQR(>RT?R}9 z7Y#=Wc-u$u{VDZde85mHfndkHIGw2XTU{BK~hSZwC0nU@T|p0 z;-{){W+DcfX}!EcvFaf)F26&!KHiinMp?L7<<5vcKnOB>l+*%w?;fDiMNCRJFqC_6 zf9Z)AL0387r?@-a%KlQdOb`}?uGW;V*GqD2wg+t4xSDJu!u+CEHL-2-$TsnHM5l8K zh~2@LNY0fuoGm#K#Xc`^f`Qja3jA0V_0QhX(vmXJ|B^O`n+NA=#_Q=*WVsB{N3Vp+ zm8!HhU=Za-QIXe!pWzC9K$8&bqFC}H-1*9+=TLMFJX}5t<*%P6^nC=cOw~hPb*!e=3Teh-Ghx4smkRK^nKve$kcv(t-=f+Q)10A>~8Iry3ay5%z2T;if0|}tq+6E#r_CjfHT8syWI1^XBZqTv=GlD{YI(uw zrrqL`enLFdaekxXD;+_ee3EkH(6{-(e2o$~Ly`vj>`-&}Uthn(o1MS0-s;gtiWD3& zWBLk-U7C3d(jv75>W4bH@}DepUX*n53eXyI{F832WX(dTeyfX^w9cq}Tpk5mRId41 z&Kxb*E*3UaR)**4i=L1zA`nesd$fTfrwkEyX#Hui`bf)^*X1!~uYo3vWoS}CC9jxW z3<2Vbo1!JnR?8TL)1F@xgfOsroRU@_<=r@4sInOXEk&dL>dxsQeAApit&9Q)6W?bfY5pJ{ zR$5$Vqq)8xt%Ena;GUX{LiqRh2@`MJKKL+PC)&yazZjV@jnHK?cd7@EX@CTIe~@sf0Yyd z%l!XCasmtMe@0GV``6I_By+H^|5Lm;|1Zl4EdN0}q*(7W7Oyq_r~7Y2d{cs3CntRm zAx}8bTHCU8<#K-u1I!=5(I3zoAWEUDx0|1z&j>!AMLG=gl`v3|dOefGVNdU8qSMo9 z_sm>Q`<=f9oPWPzzb(&Z?R#vRHs=1`Nw8(6U1urJ_&y%nXL7cBuHbgRKNw_Ao@!(= z3fTP|!-~UIB3riD%pFHYrqY#syZ;}^Af0_EMUi^~dr5mE2Rc{?~ zpKtrDX0gvaj~;K7mrnOoOTB0zclG2TYPNZ(uCoFiNeiAYU-|7vp2g=xjH<*;*$n4Cw%XRt7zd=G$i zv!(8FD_g|V6YI`$TZrRPPQP}|atoaoVaJi?<y%Cl7>Th|=1KVM+&=!a zhOF7*3Iz2F<1qY5yAeFAfspDb$aJ?-eOml0v>FrU`XxOM;6A9Lnj z(R97;TYmi->v~DM)x;b;rDkL$qAP(XY#>Y3&f@xw2#Y9CtoQ(AB@*R2Be*E7i$ZUv z_)yQV?*z*=MnvrI$qN38u4mM0MwI~{0ZU1FXYItrmHHC0sjT&>|bm8qRN z2Iox0`s0uX0L?lQ96}l@fDEm>+N&B%j@_2 zk!%syrYvZtf0d7pXI(sU6}Uh@YHm8={x>QBO9?`MRQX5D-fc_k4pFDR>}f5O`ro=<#G zx(!iQ5hc5AL?Y1}P=a>r(D2EUR};=dJbF?GMYqx-8m9Ri5xfEyk`>8qGkzQ}lxk-N z-|jwQiMq}HUf$VsT4=pk3_}s%(n?6oYW2b)$pOA}%kK5Zv#GxsXWx|!m1k+`w$|9m zr(Ui!jtIXbM0q3)%Tx(M$O>N3(6H$!Z(YhtGVC!$Q#~HXmcIQe8>+o=;SyP7RT^|S zC@pindJ6Io8W@iK+8o#pvcWstrQt*yZA!o+Vh?1>Pi`xf*Je(q)anMFcHBCYXhdbb zjEXrco&pB)SCjRGW2Y-3r;bosRUGODnQ!di;k175`BnfEDf0(3BlF{6$AlIwGP zl4P3=`kvadQ1qvPt*pQ1`=oSoA%62dKQg`|THbV35>h#y{T>KKAJA9C@UhHH(v%^5 zE8KglZos+w!ZNahrwDd09c`xG{1lIc*|FD>y0<56o;Z9q4P~1H%jUWOO>n!p3pN z@4rs7)JTli0Dbx|E#r1KN#Csko8vVbFFJ{EUHvK_KyF$xff9K7`mDOcM4&%AM98&h zH1wT_Aq;&u+~|y1X&oe-#^4HyPFAb|&XZZc@C*RIbq|zG-Bb$~ibdl=@hs01wSurPEwsUL*Vygl&Cd@3>mcybHQ$YBD>Gu5*)|bD#BYg)O94ZQy(yX$_plHJbg*rDjD{WVxcOnm*IGU^JnPEeO zEc8zkB^UqHcbnmu;}{RBD$73?*9>M%5LC}U*_VsZ!KN$XrAECT>P%BJH)j6nm~ZKT4T9j-v{~p-oJcubOR7i5b-*LRBI33o?MVVAZWYn+tfR z1=w#q#oCuUNq4J4B_|DR_-&cscyN_q!DcDqwY%m`^8f{hi*4l2 zgjF!BI>0i_=XsiIeD05vB*8twUwO4DB>Xz|Mq3C1E9^@Wu|R)11nN&gpjsSVWyS4* zB=Df90A0c1k76eB(X1r)i4vT~2*9|-7hRy+-q2CT^!L}H3+qm2?^heXyN2JpQcMU$ zR3Xug8nSuNbA*3wosJvV#nI5dlYu96J9XMloq_ zq36JcX@clZ_j_@gmp_TzXDXwOtG99H*AbB>qojGlSO6o5lLiX}!9A*BSxYKm73$aG zw;#_UR)(Iq;k1~C6mGE|QGi=C^pqJSQR&cLoSIEZb`sc<3dw8SLZ8^9xVw>$@K#vi zdJ6IdYz@8Q0jaYsiNAM4OgSh2G3#cLY6HX*Z$i!-0!SP6C-2gb(M~K(0fQw!bD%qU zW_Gy?4xl(~8l;93LNk0``@60a#UzlMudMUWqI-hX`X~E&ox+;jjs9zuOo(eZfA--n zKXqF9(>&9rR0mizRKC``O42xv3_~qGjfF}kP2LQGch~y-=jCrd`Xw{NBH=&c%er23 ziK-=0jZQV`+H_4onV`oM4Az^ioXTcfJeoOm`r_80A>I0e^wx{1Eh8NL0VbL67_+4S zYO&*FZdZg7hw$~rsO(HP#!*(D{HLK>ECnyvYv6D+OEWP5M-nKy#498QDW^4vq(5=U zuxwODpK@ioVC!2aaR?oe>LppJZAQ7En*F_0J1Z)cG_(!rCDyX5@g~q_{t;Klge;Te&cMW%SzB-p`P(V`2F{|WqAJIAnj&h-oL%AgZPoJ-y$Qh$+W)5}G&7(AH?+1MdPNLVl-OyPqwn#C&@!6S?F8I6%$^wQWY;Hx*f{C? z*fbuH2lv$9m>2}=MzIswM|HkLcT$OGuT((Uv_ziEaCE^pCFGS=F$@fr4}wLIvB+yH z%gJ8_s!D_P6c-O+umZXQySp-fH#hW7(JG<%jt-x^8Y{Ff*nOZ0jMYwsY!*S4XPD#VkbP!5;l!J@ttt14=O&Ox22 z1AEi+Dj=9Rt^3GoBlZRo#c#rqdmJE)eRa?$ye8Z>OTbn3Zs)zOR({MbRq_$>3u*t++zUh2mUyax_bS| z&eY!1$5QI$!4CM>F3&!EK4{;%>te`{ht;JwC6ao(=*Fhwv$)TPUfccW17F~S4asuc z99&{v>2`9wIatGb3NQL#kU@>oDC}-Fg1#n{*3cUdgn35b%%clcc{32+Qk`4WO_^mt zY6-+B!}T`$bk2&q_*FJ4O8?5y-2n?3nQyl=Apkp=sE>~RGWHqow0;}5+2>mrjU5xJ zmYr2s-@RftxSshr_-gs6$guthubVZ2;R^j}df53BVWikE9TciCl|vkg%*g;UNW7lF z-brx2<>H-=Bue36V(%dw? z7AE-CrCc(gY(N&%P#}BZE9;aPvl1`oC1A&c4t~Lo81H<{BKc}m^{0)bhl%}B4Amxj z;DtA{W#W06{Mm%Jq;h=MtqQ`Zb;0v{NKTovc~!oh(iX+ApR$vJK-=W61WqVe;QjzB?TZI;7O*TC z1wDIb7Xisi>Ai`xTX&$uVElK#sY)|oEXvVJ$INVgZr(fH%{ip`h6cX$?=FwgTT~W?ch%B){3(X zyOV{UL?*v~FG%l|36q7J+i02BgsKfw?G=%jkK49Z6q5Gobx%@ya9VHK$UypOP!(l# z274&3aE{J3F1hGTE8;52?bI*vFE00-prOU|kCov3jGc_7K7y%<4h3To2=VG{Xk+tG zqlr$t91q)e{F#{)g;^ot0F7Ah^`U(>X#?wm61vk(AEGd~DUPol*(Lmh=$?!Yif4T) zHAJfBuX?;Xg71V5j~koBhoJKj$d2qgcl0Feq~z-LeZBE`waytqTz->rcC_Q1c^%L^ zj}X?x(emcI38HtYDIk#F5QgtP6UkGlDiPT0Z^wLSnCWL_Odn4v=v|z0T-aCA~dMiGN9F{WROspR7*A#=-+`H2!qSu6)Um)o1-S zmRW`b=yOkWSAPV9b(j_4zx{>d0OdKmtqDvGEpdkUhGAtd zJ_%XGKsnb{0LWe?@Q?9Co0iJv;m(Q_pvpfZJafBTU-Xe=#MWtAPiBnR7P#bU^nL{M zLE)sGWsPnL4C852lh=+S#b`F@(I|Z^W?VtsExs2my#%-lwOoYh%_NGiiayRT@c*bl zwP=Bk8-p6JZ^J+L;(jd-wsnsV?W4soYL_`-j?SJe-#lb}7Ql99WBfv%2*uXfKlHqz zrO7i_L}Y)4rm{yWNtmpKRK*A^FV_GUdnE486y={M#*`_SpZ z^#2g|&N03)ZG&d(v~AnAZQFLAwr$(C-KTBawyj^=Jl(zTOlH5C%sk0{@8;X=zg0<9 z<*rJqD%W*afkfKL=b28L`2PV9i$((|vWebzV(z>x-}T4DMo%DGuhJySf9EgE7vldY zSe+YsYh)J`GSKVyUJWQ2e(AcY?2ss9Fw9Z8%$MJtugPPxlHgj0)v>z%2@>1J2Mzv} zo4SegcL%ImW?6cP@kip1bgjiEc0II+eMRAI-1o}O1)V0f!ASwJ`n`b-i^QoJ6Qtl9 zF@le_afv4Q8b`(4jlOR8hTaT?0+7mjGIYj?p|T`Sp(KacOOfQU2=HR!=H)QKi7kyD4IEUdif!gZ_`spBM#p%h>9H_5!)yEy8{0ck>$pi90F zPQ|UeWpC6dAUnU$eY3qTa5BpN+w5+T!IH=&-d?4di>+9e%^}4N<#@l-fit}?p;MKo)79x ze4DU+o|ubZ#C9XR8I*#!8ZvalH&}N~U^RNdfMGwyb+WWghznp6h;AU!X>m{vp2SwL zUM^m3rFrpLIjPumwPa|5BTBkBq+h(@rBPn(b4;>y%D(|Q-6AA6gtsbpdS2i})OG4Qw14ElvAAjKFf^H@z*hhwKgknR3?|3hvNl#Yn( zq}ZZaJd0zVhnA|-ODVl`ukUCbUY^|THAXt>@E3b6!LuSUr}-Es*{&`J^k7}Gk&29% zumzuSWy*__L&5dS_ENNimQp_W7K61s+7=jbN4Z0k#sYHtZ|}28!LtQ-GXU z@9+a_q0LVkjZ;PreJ3si?d{M3Xfc!Rh|4<1&!uR7m4w^84mD*_AwG|p01L^iRfP&h zAy_~@Z#|z2wYqtsx%1xSnt#OmAU(lohTDl&Qz=o6hNeEggEY~om!pD*Q1B+Y?x8{L zN9Jv3TLLRBBY!8?=R%>a>W$Bnp_0PxSeZ(M(rTRXoVhR4kIO|Txi2rR{Sc|Xbl>@d zXTFCPLTwxG6ZamXkBKHvy&dE+hPHCY*@%Rme)UbP$C=KOfu*p^9%lGEa&lYL# zNrBPBo3MQ-Z?mgv)>C3rv}*GsI809?5?$q(_WUq~Ex^f=y)(1N`#u#~Rx7zz<0;p! zMY65b#4s6#qXL)g(bq=u=jqS>IwF<#Uc!ySyULgl*`RxDh+pE~vvZ0MkzUHW1YO!O*nUNzNL)+`{s;GpeIh!TXNiWbS|WFBO0k-1iP+y^4WJ&H#aGE4xGWd9 z<8{QPWtQY8Uql?krj~wOn+ap@%uJL+t2y&i4XJREzn98(6(c&xjPxwe$WF6zbZ6&f z(J#G3I|heHH+B8E2Z($}J9;^Gi|Sd&C`=balrFJKAO7}| zm_1(Y8*Zutz?lq?h1icu^g@eUo`KiuF((!8OCX>RzAyTQ(euWNEJ}bP)5&WyOqAIy z%I*@u_(<}l1bT+XoCUUW4V+Zgpj}Ba7ykm?U#YgclS7C@ajMP67!*DG>+(FU9Gl23 zaPMJ_pt3A2a4pN9twi6W%ARlyL}>&9Opb2-hKUWb(8GWoB(t@Wo%&Gv2I_PvdU=+j zkTGuo#W}BbsVP}WfYTx=8k#So-FDOrBoJHX=Hu#<%OBfjV}WF;)=XV1rP6e@fN|cf z!p~y-P@X4M9rbH^8Z2yhj)|f*xa=Q1qaz5W3srJvtM^rWJu(?ni}v~GwQs5gb7Asv zb)_M3^p(6}4k^c!NN0N}5zUjxDo}YeZ*3$D3->ZY5oo&yY@d8-iJF;U;`JtMy%Q1- zWrk@g*5R^8T9{{(M^{&7WC@zmVpvXt@ksY|S~E}_2`){uuVczB@}5}ELc$3!CuD-h}IcQ#zn-+!0Qv6{d21K6f*oAuXY_2#z-I66x3vW>!MGa#49(k z9nTRuvmM!Kh7bmOZf&oMfW^u%n#sft?7nQi~)a8|{P zb_+kg9#+_oetF?;_oG6o<_iyHqf0M=dOM{ZlIOXfx5x4uI0Kd?oxjyY!FN$-n<0wA z)a-i+Sz!=X46&;m!^-rD(jBAhB`{N=hlTd99j;%m<^VhQ9x;He$Dr*~jXz)Aa**^+ z6+8&dpR{Zwu{J(JLbhvtLH_ahd4Q~dE7FE?Ra(w%XSyvLlZ7FP2GlwIo1^^WjEcZ& z?%#6+c=XjkN5M#h?Ikn)Ie0-EgMwHC9wjNMeF}&Hlbe1PjZtl_<04UB2 zP^2Gfc;bs+U$m8D3d8BsuWZ=d*YBb-D;l0c7IPPK~^v~@ShJ) zA5KsI5dO4Pqdhq%f6f&|Nl;;ar3Qc&ac4s2Kx!fO?)w2Zbw>-$Vb~G}5k$gO;ncm>yv0TZ zNm(;)u-3S9k58^=UO*poLYJZKanD3v3o&%Gi>oKXCHUR|2tS`PKk4q1Urd~Z<78vC zsKPewH0qpf#O}OQA0GmKAD=(hY3{oKf}h9ozC22OjOY{Ld-TBR;Qc9kRP zU(&$jA?D$S#rRW~*`(rVbW?!{W34>)Z;82xKPOVLY|jqkfiN6A0e#KNq?x_&0b-!B znwh)S_N(-KA}4AGZe4N|Z`vPZIrH<%B30`cXDLM*G;5%pZFz?E<5u2|c-xVS#h_6! zay>m06W9I&<>rSbaSdOtVjq#Is5-xRaRfx0SUF(zu9KGvo=_!8O-En&Tk)(*B`pif zV>D@%l^LQ9E=P|>xDU$7X~j0;WE^;18Ad_w+o@x`d2Dw;pK13vy)_gkX6ZnT7HHpv_$WS=!9P`0vnWwtscT{15SB`6oKh!unrKoB!jl*Z-$C zfc12ebvT^-#_9@KlfsBQEFAh0v^Ua@u%wqc-L6`y*taKd(rBd3nh@gf|GqB8iaY?t zjvkom=_F0?=K^b-g%2s4YsP<4#V z{pfD*R1489AD;c_(&qQ+|NXlced`AfujDX1fLL}i^WRwW4t_d{$UPLrGhvIIr7`mO zQ@04*kNT4y190lyTr zrKsH3@3qU+w(GmmvVnIit;_)(lV>Z7*Vu7c?n)AJGc%7Cr)2iX1F%x%K@zOlX2r*z$+!u@ zwI2sBCWTmMp_q}3KKP)`NjuWmN^F*K*Oo zEJXx45?BlM?Dw6o$M<`Zi>8tjgzAvAumpPLY09tB5$E_f1{keaMV>TdgSr=XwFWi)G2Nkd{ z4LSF~r=Zz*#j_F!$V^!-F2X|vON@s@Af_fe;#?8~!ZDL;3Wb4I6s+(tpHB%2IJA8X zEj_I?f)h8JP+P7dvA8p&YHiBr9a6|fcciSxvB!n3`WWA=Wi?5LF8cGLt=+hLZMBAM z{i|Vu0x-V*3adQt*`V*$xUNE~i(qK-TY8kh`1RuTE8G>VQdFrB2hh-@tucY(Au>#_qrK~74M z-6@z_@8o6g9dJAJ;+x_loq^Az@j57Mr|&2U_}#(;SUTAIwn{J8a$udO;_)6O0w?)Nh`wQ z<)kNYU?};s(ufQS3zc%Nb`kdP7G$X};)n)~W2Hj0X&1^iBaZ3HT4zMfZKSawD+eO8 z0@*5U_N2I&-;S#A)sNRhv#w}Ya#q}6?n?2n7J}r`?3S!{yka2>46@CScR=$SMdA>x zofd)~spNnH4n%n3zxwLn3mC5a^6v1mh>oj5d>*vibExA$HH`*;D+E>7ceY834EV}@~wc>|bJ zehq(6nuqwgtP&v+Ir9mK#PqXUPgA^|ecS4l5YArPDAE&9&|~C9^ajf_mFRCGL@MUT zh5~J=EkU%L%2VO>mf%!sMPMhfK3w;Kch*Va!`ccIDpppP%TQPTpo?0eF}K{mVnQWU z?ZXkVTV9di@0O84b^M6aUTsl{V)cW+S$X9wo=dzK&|_uCDQk0du)ulPfi{O_pTbgc z)MXUvi;BdzX*&i>fyowQ``<3Ye_^1-+Hr(}a?TPSC+ouy??3CF!d8QEp(V*-0EU}) zMg)3g@2{KE`G2M~?0dgYs{sZ}YxZAH_IK$vOf$rcFb!G~7YuqE;Y)?kv-2VNAYHzm zK3_9yJ6B`lH49~;&2@gbcDFbBuwLr4{iS#UTL`w$Q4q}d%)bYJt&V1NLkIjN#FlSn zp$-6sW9C%=*9X*d_r}GdLyi-Mp`w+ZA^V*e&SGB|le5t+4l#={Mm(`bL(>37o*?Kf zo}Oqe@ul7`vWxgbYiCJ7lZb^SqAR9abKF}Y<|;tj8G3Zu z?gs@2fxSWs4yxv1P2m?UVGUE~xm&chO;Vi?txOZrR;*hmEr`^^7vxqh9nxLL&+6i2 z@Ukz$Aux_*MtPf_d^BBs(y(g~RR2hx`ZBocq&hR_qJ&uKZPva7*qc9!9i(;;o6N z%b;SE!oJF8$QznA7Ub{&FQ0P}4N1DpzyU$th+_+pPMa2B^>HmqKZ%V3dyCVf zZKv)H4m0#Z74N2WO|YJ5MjjOU3yZPx&x)>XTL8qX&tVMw;N-dk(+-4(@JYXH^eGq3Gc%zUiQj?^MORw#+s3>F>$JSC=3;ZW%sO-=D{KspIT$R-Q586Zx3!>Lkcf;-hJ4@ zc)-AlAm?oMb0ou{I2hs#XSvJOBvGwQfis)I52A)ljnDFOv1U9LR85>p)08^I^mKy= zQOz1PM$qUi$QwgEO^u9Qi_f+&Cz>-)qeHLGx!?PctZUpsX?b1r>603;AKm&XGa&-x zGR{Y$e5!!gcpd14h8S%oIrkk{1{D>vU2@Y&iO7Mpo=A*EZalgnhsvMFV3tUSdN@>U zNa5ca>kDN-iZI7U)Q!}nrwA7{A?N2frzb;nOMgtj@sf&~Osd_*g%{W0t5;J!6#6Fy zWJRo+ooCoD#|>NTP-mG(#1YG6;I2nXu=a_IOVQb|zqbz<=@(Zv62R4J;JL-L;_5RH zICKS`;~wuc7gV2&YsF(uVC>XQV&70ML!042j|u4JM(BQ4CxnTwa+Xc4@Qh&>3Q#J) zB`wkOIcmn6<9{n^E6Mwl1rOhJpR=|%-eCMZJ74Uh_ct)N?5U=UkM^;ZJG<3a8gVVO z5CqJF8Av@Jr}b3id&fA~RCh9+=I8F)dhTvuk}!@+p3MhHw{~EX=vcMtX&G5VpT`mn z=VAsQZAPlPTn1s91f`SR`@|q&nl!t@Nl=VxN<#4xwfNisVOc0DLkRO>n3y_oC%H1~ z&r{k+C8>HK7_|XhoWQOuMOZQxatXL&as3!~EyZ2s)f0Ap&et4kH_+;?g|d8sbK)$@ z*DaO6h8D!fyn=kwIjNfEdrX=ZPX>v7egh=Z*WK;4-Yc^ufyPdHE-&fBq3tC%-1DjcpMg{vXCz}vIDN}V0h4-J4|I85J+9h7jNCMa=~ zLGsJ$N!W5*4f(=xziO@3$5EFXe$en3^!6tTveg}<<;qp9tK_+qRF8DQI^D4GLN39R zUAWkLni`?(gW_|yFo6pCyI4PXceD%F@XM00)0C8(D&)iS;NVp#o=o_rjOYc9Pwfeq zYE=mm-RJDTwK-z|PGa&{pibr`R!<(CAKl5%-dFleKwBpst|ZFIx_AataWbHMA$Nu7 zXbkIQmt(|b40J6$xpk(bMhb1i#7Dos-CL0%h3h=a`Lp#SlNRP)|ZYvzr_tvWF7WL zA^Fad??#1G2M`xoa*(bAje$yCT<8@7SqA&luq^@I)Fy_11>FSI)ALbx(oCUDJU1e$ zmhux2hyy>Uq|F;NhB-E;P<3kVLI3t;f|2%xS<;3NbAwD5dyzyrkG_cZ1Eao}`n>SR zsjNd%2a{Wa)m@&(;HVK-1r=6&C!vT#Qch4$-jzIBcE@KvDv6r>YEz$W+IoMpY@s||9?xo6BJ>jsGK9}tOfr|6M?(>Co)>{NGI z+Gct6H6v8L35e*Rw|>9tUIg*?>!eH~;y-HfdU=>2cqpXXOQ35Tna503gP-fEx8mN% z#lmWiHdYedZ1;xXNu%Ab8+u$^^6L*f=#IkEjugx9MFmMnWVA@EC~rX`i{u0tjPjo= zx~8Q;>_RmKp`L#HCm1O-B|O93IPEh>!fd|>z0ptlkKKm=F>HugmK}1K0yni;s)hg`wV?G&@Q6y zH02ban(6F1(>-}q62H;bMPX)pZPa??F0}{HRAEM4wx`#yxN{x^vJshiFF%-J3)664 zt9$G_MVYUR;>kM3tF#oBaXE+BZIAswkV+w{o{SHDzYVesJpYu^Z$ zQWcqQ?b=V|J~tp$o^o@Tk;y=Y%g-WwPr}`de@Z!vd_&LHM8!@4l=5D>-kJMy1MlTV zwHN!70|6uYLA>CCmC>Cn|H`Om^1^ZdhPBDE2yHH z=1v8Ex__RD_V4QH0_YOMyf*}BA_&^4C!_oS&AAe-&I^zCuss_jJFSM-Pak$xgD6mA z4l+|4zT%R`CNzl7irM0-9)nweyVrF@$)Oo#uyLDV#&eteV&zSIKS(J=W|LcX^t((bRL&q6Je0-r>n zpx%+_tHB3;5%o84%p7yo*#Kq7lf16&%_ez(P|=p8z}s!tgNgoBvSA8XvA@;Z zJbWQL)PDR#kVIB#R&$mXZ6eDCQcW0H+qG33lc5Jl0L%PFRXx1s@_;~F?? zARQMB&{#7+RK_e{6Rf_!LrRWWx9(C=g1`gqi$v<6t!53P;L83j)2e2Nk;X&`HjWzS^w9YNJvbL zDIk1{F^^#DO>a3QV@@Y$B+m_|}ZUD@Vzpa%xx_e{1p2k9H7WEJ1= zKHe=X$c|go|UTlc2+h}rRm0kFG&fzqg z_UT`HE`d5)QHzWI=v2YABPPIoww{dZl`qQW0-sLKg~^uug!K&hTQENIfxy4LE8-wx zp5W0874CG}u*S(=VAf^xtgiCO6cC}!&31-HM^##kZ15xs=TrdA#SW+d9__1mr(;9Cad$#8g+Wc{KEMFYGF8cn%c zZ>*S#L%1yxryc+s>|=c0L&SXTR)PYe(e3Nis}%mgvotT$~X}=6<+wOFoU+D;}4`8gpSS)wFYqG zTNVDiT2P-vhClS>bhT~5DA>-G7u0=-qUOKk=c3 zt=ch#0|-&BzdL*jw0n?M^lyEc*9o=e?#6vQT{wI`xsoE!CF^D&n>j@?qP{v0I*kh# zBGh!CWx8Z8jA}=o7NLj6?8PJpG>q`qjNfdjjx}<_(U2DMP%gvwCUmwgtky3L3kAHG zr=lC4jR;2tA*+KUty_#}MB}v(Cn&-Jkq;Q7 zhL6=E11X@j88>XncS6u8lLzp3Msuiy3z{bIq9df4qBo#}@azPYZ+&U6r1g(0m!gD_(Ss zjknjeM7Z#S19cO^z{*{b%{O-gdBYYiw8>q>4&jQ8yOX8+7HBEf z^e?r_8}$nuyDxY#G8vQREBeCK9hFapDU(R&(Z=o6W4b*c6WpEZcnuf82Y` z-?RO;0QL8LM{uJI(0}X4`ZyKGRG=!9K*ZY3tYOc852T35Q(~}Ez7QG#7+q#~n^?ZHS2C44V=VW)$TW#vc$FaOIwm_U|N6*dZIQAOy#pZd}&C01!<_MF0+}<2J z_6P8t%|6Xs>(B8;$4;-?_rDj!X#jhs>+W!@J~+QCk9~mtwI2(#9$AXWavJHKLCGx_ z@jFCGDIw%$9kwAM`aXpAz?bGJy`i&eLzD$9wjb-6Jdy-ZiHL>?tjzm&)5dLT*uyo| zU0(~v-ilSEd47l2POp0xkE35T0=?N0mg27DHPYQXkp`C1*8z7Z8EJi6+A4x+EJS^u zzypvf*-e^m19fcg$y(3Pv4@INt;Rlz_Te&N{flvwI@^+TOd*WRg|vAit5S-#58HAf z9^v?pp}uUGkp_Tl9|!;wX-d5SH6;)se5=$Q?SeL1T8>su)t^>?b_O(s#X1$p+GK31S=)x zQ@=AOG)B-;2b>t_+*bzkH_NPyYvn_4;iu;5ol0HLd0h{~5@e8`_j9e$^@Y6v!o##eyTGC6reG@y91wE@bPa}We8!{Iw6>Pif;ZkLj!ql-LIm^>)gMz zxM1k+2IjYY6Ja znmvp+lGm?Nfd=g>r@mP50tvqtTGZztY3f4==R*c!7E+_p-u*IS>j%Gj`%`%ttgWO9 zdKl4n(J(ic$!?ASmG?sC+twTN>Z%9|ht>6(KrHT(`YAy5^%i1vD*>{cQJ>DM@)ucV z>njjAK2_qWlz;#B>)zT;K z9ARk3@!h9ox7~oh*JMuU9+n3?A~WQ1r)}?h%<)|#Mt#l?pgN@TU4g`Q*7U=j{PX6| z&hy&yPZ*u`KeF0c+5cxL%m1%g?f=W~!v9@5fc_8Z;D33U|9^w%?EeJOIsa|xfaQNk z2Zg^#{wZ3V|EF}o!uJ0{I^g)ca zn}A$BPkYlb$DcldUoAA26Id6Ox533VXk5D|QB!cJ6TAIoiI|eK!}Ugx@&Tmz{Lhyh z67H_guxL=orDm>u{1?3+<<+;few`l=*L%||@%}>!(fNCS9n7B4zRL(E^h*!Za%7-1 z1pb~}OmUbqX`Eh!3+U_hwRe0RC}{M31d3Ofi|XUzxO_b<&GG*nuPi-V3O+^_To?Ue zIAN7EnvaHJow*Hu1GWrc-et)8E@BH^hTZspxV~vqSOdU)9ov04jSQAN z3LFNLM+y`sQ{4IuG~X{X--}sF19ZFZZp+`i?zf$D6+;152kY_WFiCo z_C$6mE(zQ=d-2b}g}an_dD@P}6^lSLbPu+?y|eM{Mr0hxXo+}im**sy>?aRZI|KH3KDu;l#&|S6#=CFY#aZ-Yl|Y;o5e-p%IX2{v)6g|5W1N;GgsOoTfmtB` zY(C@IhU>twAAGm;VLRNxf-(uxC1>&M?0)3@5F$hxMONZ8I>iHHQylUfL9~%FDZ6)x{wd?yzFr9VV_Mh(f+674W_Q@UPVj@Ft zuof@p>;-uL>u4mnNM)O6_b`qPdmuTQq$&_#x-)x0dxwXCju*zKyJv;uNoUIyuhZ*C z!!pGvTYD-i#~?Z|O!JvZ!yG$5g4{)_YW68>cXoYh#9_CLB#i@cY)+%lwT0HcQTAv? z0Y_#0@bI;Rw5 z03wCwcN(<*8q$>3zT=S!67*@4rrD4E>1l@g%0-`-LRy^{c|0&o9n6KyPNO7|hK?ao zkZFRprY@d`PGlDUxlN8N1JZ-EimoHyZ&5LjU{&L*#8=b$3WAorDw#5Owo^9NWsY?5 zubOj0IBu3Zh_AQyO72=gYtpbVxgc~_RHL|-EcjAP_MYeJc7;t_iI!l+sSaKnBNH-c zV*K=@`ft6|?$_cMU~&mk?DuUD@+4`I46&r*JpgE~OlSVMtMFJscxoMTQ?MF8QuV8+ zX5_QZqepl$QbPKhqI{=-92vkQ&}9ZO2;L|EhWDZh(wHx3E`(!2B(VLmP@v>G&cW9( zvR}Wgwkvq=U-z5bJ`7cdL;Z!8yNmuFQzIeGoNgR`!bvZ)T)iTC(5Kh7UFj$fePt+6 z7vyQ+-}!dD80BMHku#Y|+Vd;u9zLB?3njS);7jBr8;CwHajc7c~<{5x-v%^=ijFY|Kv$<7j;mTpoHsbCgC zhBpie9@k`0s8ZP^!WC*McuzNwJJ~px!k*%SbCA%^&6x;z%WGWqSD|+4V;m zP8@T{j{$Qmy&!9O?pT485Pnwv!Il-{-NOzca2uLL(^`)UC0sE*C+9$pov*`?Sk;v`5@hE3`7BhpuNgldQkUh>r2HE1k(3N_N6 zMOSNiMW!PX61p-JkbesyL;D>P=G4)s%m$v}F2rWqaquMNof*yHzrAm847{>-vVa ziLj*kPs?Zf2H!Tcc)`G;&N+acCt^K_CCir9dS%6s9LQ4@J(o{Vugd!(!BpmKV6rGO1S;WEUII+utr>(<~aC7_j& zY}^mtCp+~nlL_!3oCf^6wvU%Cxq>2g>eMfqZp61&Ccn??-Q^1~JPj;SUx_`+{)1}_ z;!HT>$H|zO!7B6yX*YVKMNUENAY#!U?Pl1tY@F{>i0&f(9Vlu{NFvveoS}99%gQ&5_I4kKrq`V+2^#DJ6I?cg zYnz3Xkaz3oH8~@T5*Tv!q!yHknkWdTc9 z29yTtZeo@Sl`e~W5N?VDVy=AhKpSvZ-eu9Mq~BMg=HFb*V5XxfK>D8c5cJrf!+#6sJMbq&O$rDLG6x1aEh+f56$C>|#0K(AWZi_bFpPNc%WjO9f*6>H9i3puS>ExF1CY%&lAKwk8q1ix4Bs+~)J^+Q6 z6R7KBJrNxDl(G5DNZ3%2i`LWz_p@uQPz`X!l@v%S$I9)7GOj2sF-DVTX4bwv&%R+? zr>-JnB~2LPQqhkR(QeGmj(FTs->)ViGuK+ukNT2kM`q|7RU>0&hKHFb!+5d352Zf` z#2EkHh`5si-}56JJ9A(Sn8j8cS7yQ@A56ioa;rL}vL`hWS!JOM@CGJX;G)8i-#L97d3o*#04?Gn%5V!} zj~$8Dq8(kNYYnb-w-+1PBK;Tz;#DGV(h;^aT;W>Z9;(f&fr5xzfw4!`d7z`h2hm|= zb02BwAh6?*WV~00#;e5=O@ynAv<|XFvlZ3YQM%FGiMJa|3cA{dUxVI!CU z`rEY+2{S4S6Kr>hY5ob2SgYdhbuu$NrBaf*#4M{}rBQTEfYSp%bYd7F& zU7J+9t((_(p3kH*xW@PsuBOLY3;D;HRIKnvz6-AlZ^y?pgD`0@Ja=465rg+3NaaF< zQv8>#V3OIPcmBle%K8EoO>1~E#nBW+QV@gwt{Kr=fGX(}e+$wH-Znbfhz(}*%9etF zf2ZF)VEC#)hQUSM%4>McB$)!TM7i@{2ZIHN#!fR-?Cd|Jt+KEnPIu7nD!RCU1RdAWIFLo&R5%#`}`d=Y$n ze<6LPF4TbVF>W~S2KmI5@3tvb z=dILNH2icI&Rz0VGUR%#+!eFV$vHr(Olj~y){9z4QwGdGql;Yfx-3_$Rs2pkQI>_5 zf(wpP!&)_@gx#2f-`vgA8T)S7+EzTxTR^zp+mLD95CSzf3%I0^oOpM>*neu0AJJ-0 z-X;QUhuhKRooC@3p>y;IrSJXX$+y#wZRWh@I3`*Y3_#jg{&!Bakw&`zxrIbtqmKTr zZ)LTPxBT;%hiPiZ>doZ~h))S8GGJP&JE{xuLa#9QP%AN4Q!ek=8AVP?vN z^H!VP>p!iMyPX(jmZY^u8+edhsccHwq9mO15Z1o+WfKinmEGDHL;NE)w#=B)aW>ah z7p?c$04TK}H)ns@qMlf7Vw6Uc&zuu$L?nhz55^|=U6NQ|xd~%3>@3W$$*+&%y2P4h zmM(`#NXRYhn#9K81XXn2^P1olyJ>sE(s0EZ*!pBa62+ZON2^Ngku1>&e)%59p3lb; z#lgDy8NO;pkXnmH2jXn)S{Xu5k>$+wiR(HSstn01w-cJJP63wg8o_J4HJS#6zh{KKS^SGaFp2ffBp8g z8mi)&GklLt%E`mp5WoNGTxjq8;b&)p7}?+~*uG(h()wWJwk7f$W;%+Yht`k_kz(qC zUs*E_gmFUUQ`lc&au<$%H{LhbDjjkh*1e*%mUL|)LIcm;_Vq%1JV#0)Pn#>J0B%6x zqZr-^-w+F$21D}gvTK)0Iq^g|Fh(?xEg2FKmm%DmU?lPSvMPhM78*fB!TyS4ODdFB z#S!76+-hFQNm&%YIeVKmHg>?|w)*hdbwxus&~psCI|J@yFrZn4p-qoK%S_m4#mAjj(f2%iS593o-Eg2%VCjmQZ-~nt-xq8)z~AVA+yu z8iN9AYoTuOhYM%?!BLUybHhI=nqOEL3Fv+fzB85khu;xfi(ip%EhG3W;v7APZ6b~? zja~4p6tMXgI74g0881vv*Uc?49Oq$HvuP*LHw~zEPqDF)JC!^nVK=_-rm&%BpIfT~ z$4jG33C?F#?tqS3z7vgNAOWEwgH=-m8)-h(GnW_xQV?zkVNSYjnIY1buTU-t7 zB*P=4^5W-&j~lQ0lD?i#7;Ki+B;{b!=*8Y$7?Pc&KLr<5uge8?Fe4*>$wt40{SmR* zc$?E8_>mHEV_vHVU6jHH1goe7N5xVyAs1@IX@ApV)}d|%*`7F)vwt#l4!@ST(?FV_Q%5YzU^@+lLZWR{*A=WcWeh#t$F$p2`_SfgRj zw;Jlbx;G&|q3>&cpbGvqa@K@qixmBRqPH>8ZhLey_PCbJ^ub6o$wQM8h{+6ye_7AI z{AMQgg6L$6rOOXME|vEiN|mYlbM_J{Sg@A}i{fG%y>^oo4uVB$cj%lts$zq7C_v(X z(J~yS2s7_mMH*K)k`%-&aE9h%bH9Hj5fiLWWuh2$0j%KetD_+&36bnwc{(+OQo+~` zav75U+3v6;tbA>_AE}*e+MUX;#g}j4z)}`&=*b{CnO+gH6+A)v_sSS81qln5f+Zmf z@sgfX5#df79B^_-_5o7XiWqfCy?NdXkW3JSMv1 z6+x>ix2^L-jBk9e;_$BPHf%!-JpSDik3}Z zRYDlk>cGuVY+w2XH}RrgLFkjU2MIeE5qMg62v&|WX8ksjOB7Zft6DNFF2YWPJM$S~ z6C8Iwo}D738kxjsxZKsTIiPu?(2vk@+k;O|E4suB$IWZ?C$06cFgfRv28?&1^(e)` zjPFAN8B!9W$_bdBlIt~wR8&@Q)-DO*5i-d(a4uCDNj5T7xU=$>f(j2?iz-vTFgTAa zAOtOI#?~x$5W8Iz;(P{u!C6w+l%w=_^M?6-Qi=$ZsH@M5$~3g(;jY}KNFUgR@K*C# z?eG9~mC@tbHWcr1r|L{e@QVt9r^C_Y%}B5ab_aUFOe=PjrFwD9B%RzR0<4m;*f_RR zmBgL5y{kv(hK&W;1qE)n3e%Ek@1_DnE+Gh#Z4<0ZSz^&#M6}CdRd^b8F{mjAZx`SB zPy+&N^#XOoOenCQiQ9)`lMF)R)C9(2vN4ae+y&&qB@*`B9WaOOUVGIA-nds&C z&@qZ0U$U`*__<{=sVPr!3B$duG(cw9xyeolYXzRZV$(PJR;4DjRtwc<#k=`*WHD4y zfD4}X6c|aTam0E4+PZDaCm}RJqSNe9)4Q;Ia6mL(rgd;VnOocRL3BYXUQoH`{91-N z)nG<%Jz3$_8LjVQN)!d&8hy=Y$iN2BE?REyV0j;yVAp%pR=Kc6{M(uXa-V8tpxvu{T_PfPQXYHYA8PniI^bGszrj+^sIthCmC8JN)7?Mj$*r#W3CIO zO>hY^%xpyqEi3%v%@dYA?h{SBp8Wp2xcMyEks@f=Q~ps#3#kW)-Z&k8=3t=h%Z{kK z5PB32yLGF69KUHSdVC4M{SKpB$aa+?Q+L02XKhh*0s-dQ=dXIVB6s*MGwanhaa$u& z5bee!+oxmtCj(M`bhS!L*P=SMToiIbb*yUDmtjA0bfsaRo6sC>-YXJLUGd+X)e-; z@Sfw-_gu34-U;^fOl$hyRNCYFtZzr!9rkNHul9?lq=_&1kD=80|3%w9#c0+=`@-+C zZJS-TZM)01ZQC}VvTav&@u})Ex@_CVdB2@=vXk?@7kejXU#@vEGUmu!S((W%{{@ie zYa-wu)Y!LCUwf&QU9si^O*;Lj(-doO!*~KH0WduqRh9X}Nvj%TqR+#UyJ*Xwu3!OW zd*)L&R(;zBK&u}%0yA7UHKP`%n5ww$GBUq4CcR*cUc@d*Jla#d8EF??I$1V;_dthI zx090*0=(1hc90o4=JdHB*;^tP=QKIavg!Ekju9@D=H;nJsdoPiPcUEg+daNW^0xkmPNS3yfRLb9QZ=nd9d@Gd6qEYBHQXRA|=igh&-F4}{6#TY;XZ`t<128rOf^NUR;<__%6n}h=yZ4R%O?emmjM(vxIJN!=lb4=q&Z(jN|uphW!_HiB0v$>vT@UQxSz0G-~r#y z2gZe6{L$UB!FD4m{EMa1q(*Nd{?{}{jBkPii$V(jCN$kCrN6neyj8uacWNm=dn+73Ec(@>9|B3k;E4 zSA0NzKceB!1v`cFmRo6gt3rp;+08K>%t!&YWOmt-fDz2anU%w!eO(f{C0kwQh^kDB zROQ-DMD$1Xr4^JpZ`%(pF1?6YkHq$&O0bwSW;^NEH0x?w!Wf9u#C%J5u2^Cr>6A>|AA zzFoYgQKduY^;En2$eSOM-&Fa;TFv76yx)5mh29sCD9S_iK&F4% z&8noAvC}^+#BK6@cqfY>pGURr=p)+;1YNIGeOG8Y-j>g&L3UPuj>9kxx-7tKkM;XXhD4DfI-A zL!e0%Z{X6tIi()6mzDlv3!{tlLJxByGf6FTU?Rurk*+x4`wbb#2;rf{ECGQb_D~PBiQ0QO&>;y^~81F@}z2<#ZyK3Ncz|NcCI=OjHWK2e9mEc$jK)HVrgk z)b&@JIa%bRU;M-1JYlA0k}M{ZQQj#Bh1XBzofK84y1d(ys?>ZHlBJa}7te~P1b(ri z@$nl+V>IH#Z8E!c<a4w6X#0ah_RaF~PifY&I;xphcS12RQ%hG)&5%9KGF2R~Ysj~*X1s!d4`PUc1GlfLh?3KN3mUh!izp$%;+BStVrg=CqSRy^@ z{5NuVOrA0@{O&%Ejc@2_3yx;b01-Mo`FBf&Neg~*f~<|6tNY=RbaT%l2K(xKJH zloVqy&roP28!wLfM+fMvjiGUF8~;v5C(VwFF&9V}|9y_{w=wAko+R<$8w04X8gO-WyzJ;)Hhwy%&T_j0WgkVw`kbe~+6-dpJ^@5x zBNpQOi4i)Pd!2w{##jRrZp*aXTfOhOOkC;#WkEEV-#P7^7zh zMs$c@k*M)AbvP^WSne@V7MrBwYSFLxAN0Lvu!o~-hHqfqPYV*agP}%1pIP~ z7hSG$9g4hjw4%Im6ko~6NT0kFa;PALRn@z#vkiPNpX6=#6@((ql?3O- zz3>s_TChEbp$UqA^WmrssVhv}-*DMuGc_E`oK-vne!81BBx5no14O z70k(YMzmiN_PEd@DDZWKQEYhx;N6BDUPz4Zs~*O-;h*Iv!Y_p=R$wZ&jM_W1quJgp zCLzxJC9$@}ytdxW0&%xDhQb&|8jZn6H*)hX(M_1WLz9;RuZwf>q#4A=&pKIvKAJs~Pbu+?3`sCXzC({z!@+HkBeQ zeo{*vV#~8vdbCs63p{*X<|K%>Exqr(Vu8F2T%s;mv7KOY^)$Pva%9flQkIhZ&{0ZC z@}PE{A@>DI#&w=%+z+@F*XpkH?JRK+fSu3`vy1GW)VZa4fWnO7;Vgl1Y|V5c*buM@S1`&esYEVjown2%HJ`|h+EeP!*-;#te7<8`1;0hcQuSJKa3Ji%kNXBZ_Lvp!9?;rJ&(OUX#>nUcKKwX;PbPPtC_t0o z=E*Qm2%mVP2Diw}+b{1IiDY$xjrFJ!cIe$ZX|3l8QD`s(J?S-9K=ZF$X=RH<|9L^x zlpqL(MG($0zGZMS@#Tkgv;seN)04!=0(wtN(jQT#u)MLyJ)J5xI(8m$8C?~7jleft z({`@$Ajy8Td`8z+3UY(ojru@h<(o~AF9j+ZaR?wIC8hsIk(0`M(8I6MAah*hsF+Au?j_* zxk`~nk9VJy38)Y`AV+(2_R4>LnVwZ638LrJPv?iN^|zhGdSJ!xDP5b(JK1x=7LH)y z>#n+JR`P(#tJv{YXZMf9pUGW==D148PL zcj@9c6niBliE^~G2*C2iL9EA2v9bGZZ>0Vpu6j7$yER9rL))gODki4!rohLjbb&ir zq7OeV$fQG@;!3@%5bXTvl|0d_*6Xr@y2#|gx!`&Lb*E<00dfgE1L0PJ+^rvnte!SdbBKR(SZ5W zSAJO%Lu#ZxC2|d=fAA=^wruhAY@e(RTMcrEPcSiA^-H*r;w8QR1X^N~>P^**J+Y|* z7N8bHH(*Xs+*_r90B5~AE$;mEh>$S+%h#Hey~~u&i8~;v$jEIF1MN-qK6Kh*9V*i= zbN@sST_zf%i9FT~U-RzvMRRh&4vD79$GNOo2Cf_H{7aDen8`vuCeT!^@-j zdtKmFl}@UH;l`3*ClReXB5{jPXyUcjkw3ToZA?e9N+t95M?w|^;-DT)wUgG3f zVmWj~*7UP!gfDu{uRP>@;&^e^X=+*Kf>0QoOyvEn?)DQhDU^GzHqxMDI6<3_KkQ*H z7ivcylSr172S(Xthql&hPDM+^8Gl~E(F(!rXr$00;Vk^ZL^OkXp2I)IbD5L))qx?JoVl?0`Cu+I$Trwx= z@k`(}0_?@(8;U#;Kl@+&AKU*49pdKV{Lg;?u`&J6XvzP25YvBZNsj+dOa2@9V`Kd{ z@W=k&29hrS8%UNzkpJ6&*#G}Pl8xoR4l{Y(Ac{W`lvPTjzanMa`B7W~KGf33JeIK^} zWd@FK(a~h)a@~3T&EG~VJ7XR~MNUy%7;Z_pYH-8woR5i63#hQw&V`umIXHODbvF-x zM_j>eJ~4Gsp}*081}xKoJkvBeT^nub(9efM^dHO?`=WC$c(;pTS)VkG0@qIWKcq*c zUm$E=u_jLSmdeY)O(S9=EM0cSzd}FEr_tUUw4L&FV$lSA1zzcq|Lj?~K0w)fS%8ZEv<}R~+Nge8*n`oS1i!>2@=i_Q-we9t^4{t0TsHvwU4^-P zI)eLmFunLnQsVcGhJ|4$2u%LKrO!(!=?`Os{&i$Q zmcVxRDC#pqIU~;%q$XQ#XqIZyrny&Hof0EQ1C!WQU3M;uDz$D!u;Cu?ZIY`mtEO4m zOhYWD#+=oZtmj~^yABBGKN9}_21q?Bc+o@RQ0R~F?t-5RNB*XUDO^2kL1-mdboy|j zaKVV&i=iR{lC$cFK$joAf%bsOfo&u}k~H#KbM1n1;#3erhE&hr0bGy2v9<9xo*2iA zLyGo{QvT&mqI3}&-P~KxR9BYIH^XFjxb{#ii1nVS96_~rn1s*0JC1~y_+5A(PS$lb z`z(5-fW@SRv7o-)#EPQgm^Ohaq;^N+K}IpYS%0UsSg%v-i~)JYWLH_K(K52vABYz% z32Q*P$Y)+y_kuiQgM*A!DW;L!7cc#eKZqR+3_EBAj=hUew~+k6is}>V&xy6^+&^-|44U8dv1K$!P`SH&~(j;!Ba~9|Z8o_Z~c+?>9TBy4UylyE( z-av`X5utwk*A5Ic@{SYy*J1sZ1k6JZ5hJ9k?J@byk#NV<_D#v9NmnetmxraB1p|IQ zq7%u*)x`E#7@hOBRr4V$X zZ7QYD*TMF%dT@|PG+uS;5+c*jlrZ-sUN}XTIj}0k3Z$eRE9Ab6V~Btr#QOs-1lpln2?g4R{c?>t7#v-F;fG|59xUq&uJp+SFdM z-h+FhqbnRyvq0?OJhp61shzE0rd8=9jJ0f(C+YESV?MoIJx2U>$j$;EBhYm<=Za3A4R{&PZ!TqpOZK^9<{m+evH zChL0D7cAjcqk$(T4p*w(NNu&UuUg%htRfGEn%X&40+}=qaAF%;B+J>$0$uZug+gRZkCPsH{Gj znt znly_~tCeoI(KB{#-}GDVMw@-meIfp86u+%&xt>j$`)?jV2rrN?GK7^yr8ThH%t&k% zhf6OOB3JVFeZFlhqzUn^lF{HCZ?rwRZm-PZZfgR5pLthOp4@L{KrP-<;-!Rlgk<(C z!vnt0GVe5PuA!;VUE#?UzIdxin!8lcFOay1f+BZpHD}|P)hdE#r#|TebAC@9GewNo zy~x%z7-BbaFfQm3Y9(6u71ZC!#+c2YTY>$OxsgYlG>Kpcd`ej>6e8>)XsoNc2@7Ik{UFjYHOU zqj@CHE~5+V4OkCE8gA^V3bJh`6qp87lKSZHW4#Q1yPqtC>{x+>I~?Hh8urbF;v0Ie z;EXcN)x?>Bzkdp~6$?b8IoaL}u1IMnB4_7S;z550!WMB1jDG34KJ(jnN3_c=Qr^Y& z6Trbb^V_cWP*Cav{j8cZhRInb5E6>u!%)R&Wk zo3NSoz^->9Y^05sL#v9`d*|eD_xNq~dXueRc3cmF7>rUNMaFp#vL9?H)arkCALr@3 zv74!QQeyz}N^MPw51UKm;?px~Pb)0;f|5UuQo37cVR_JG%Wo^sv;;IFqVdnFKa}nt z?7j1N)G_KO7LjMp>U^4A0a6wfK21ge9R2=VQ*&c#(|i5KqH=w_48lca6SzZ5${pyi4ALPLCPD;&{E0QPuCKzA*1xP>dTHjSTA78 zNhXoGcqhYKenQTkTYBZf8{y6##zt}GYsX+HhtjwGu9_K}QKs3^k;l>jk7thqW|D&& zkgdo!EP&*(nl$mb`9R)6>R-P$p`y`u zSAiD=vTYjJ`FZ#^HzUuei;h7B9Jzc46iDf*hVz0*6Oz}Ejl0OH_D0H`DCnY#V@epL zNN+IOFanXq7L>K1B{-ftE9C%e9Nwxh0sYC~VysIku+JB#FHwsbEOx$!hMDWj2Wrbb zArziI32ZbUIr7?(D8ZY#v?{wfrh-GE(;X@#3=hq;`i@zt( z5;UQSieyaUI6lA%b>Y)Ao~mK0fmVq_uRA#9lQZY|`Ci~^ z>TJf>rye-V`+|(RarLS1gEz#kE!iHT%a5MLK#JE=kX7$A?12QP80zfVSo9)`ub5I? zn`!cX@_Xo>XFJC#px4~>0lzr9FeMRpd}ce|eWUQ77qNI5OC$LOq0aA%>w4Ep;7yDW zc*~KKgJ*Xe;PkD;M`$XV*Mxg@O?J7HnlGsvn%&9{lXml{^G7K0+Jfbmn-IA=iJzbp ziP+ruSb;I^!6($}FG)I6?$UY_FNpV+)@ z$kOcTO&KG@w~oE>nUK5-25y;p`AueiSbe9ADO6cR&XC@GU1VJ%)5masRq_Pf#5J|1 zpB#iitH+Fv@Cu0_bjL!zIia^)Y z3X>nK4WyuH!Kk80W#T{QjNq+#pr9i}>hJ?B+tjh%M?x(|nWxv02YnR^wjdX<1c8Cl z4t4p6Yr-d>&1WvWkoMH8Q#UYEF<-27HJbkxiK7pn$~HMB4#y9@2Cqfcr6$@k*@IUW zoV6%~B#!LmCO?c|dQ21cI%mr_zH09lJ4dj2bX8jIQgOVF-Tk@+e1nxi$tZ5=QXCRf zXUo2sj{m-PCLwnBeAi%`xVpa#$$C;1Xmb{jy-dySfpV~ zzeLIX)tFIQ1ZrPn@96b3JoEh&BZ#!18ONZazD2;kLNKo&a_3t~_RN~LUh`}Q#*YM0 z=4Re3fwU$p^(_R-l19#{XBYh(oDxpW7|t#HBgOG^GfFfS$l-SX+7~iu`Jt?-o9#gW z9U>ZU21hl{ral0+23Pq0v5s>_05p4vWm#4=lSa0@0d#O~a~Fy)rt|6ZU;L~W=<)s> z?R&j3iz$YNk}~v+S7~16U6qn*JeZ8h61Z_fyglbExH@vEe{SDKM3dyVFR)XAp2k`1 z_vS|ywgUNEB;AOyZwZ$~cQH~@F1n;hth_Dc;4>lp%*=Cxv3R;5f}vEDN+D29$PfWx zduILsUZOVkT8V_DYRVxT;lu!4$zITs`RB)Voe8kv04U-gHEn^&zk2-a z78*LtACsNewmEK*(weX)#%DoGZ64F1W-p#CG(8}w&TF^q{Buw<`T%;`cYhju+bU*S zWwg`c#ZkMY{=%SxTjaNAUDT%VN$@nAcP+et&iXm-KG_{RvOT@hc)i%yzn}y@~?&dD> z3h_ePvWFc(_3so;hNy{l_A`iJA`El1sT3~!Zkch2{vXhe&?g=K3 zN|027Bf||0%$Gc^oCq&zwXBZF-4AfsoZSS-4Kip2*bk?COR+bRYHUo5hoL) zC#;U#rd4Y{iHTKG6qTzPOzgw6FNF#Al4N=lP&}VAn{y`vP}+X_jVbgnC2oDZ*z^ps6Ue6x6Sk7B7Gm9Hr)%5dN|k*k2$w{@kfi;YLsxXThP90 z)#4Lrv}B6senSuaeqf8#DozgM9ZS%aQi2>WT}&t1oMK8^EQ;T(c?oNMt6%}&yx{03 z6Nt%x+ab(I*5?qFZX+21cnvG6Jvn=;jnfNqcc#za^`N3{4P1b0WOZu!WG{YS)&YVLTEuu zC;D0$zKSglc6m^bb6>>eKi?O}sTh?k!_i)n>lo|YQ0lg3$5%q~PY*{4Llad9q|o0U zL5kI;dg_HVDA1S0?5B(Mt&>_QKXSc{3*8p6sKKJXK_3?0r6Bbs?}d2&wRW)K*@zrg z38&Cj-8>OjH7H+@xu2g0r3V>8rZy_EAd}2Lu$5~MX+k^yBU0$(r;Iw`KEkO#m3Rh= z%)O<^-u`opeKy3izu0@6&>NqGEsB~le;4DKAn)2T)d|>~L?Qam76Hj(xvK*_nGyD6 zF^Q|19B-#p%64o{>;@ni{ARCwWbt(rV~f2cD;)_5|yoYyG+ zB5Z1AR81uWsVuJkuE!@|CRZf|Sj41uF(`}3F%ZPA>{=GqVwBoi7Q6~iuO+X2(NXW= zcrDx(TXD&&`{uHk;j|6Ri)Vtet4R6sB39~e+(sNn`ewes9)>Dh&$=@S=(Kr+91&m) zb$9v4Jh(S(Pl|goU>;Jl;$x3G(!>m`K^DuMVGV_I4B~L`WC=RwZi@}rbV3h9?%zMS zrtBD{ZkxsZB)MHws6y2JunNRZYGm1N)~@Xe@bvZc7nIsTj6jtL_xrjiFdHIR*6ru} zx*#sb*ekqh*!)!fsxDQ++?L(DP}z}s_(+IC)rs*fP%{2{FQ4l9(B-o{?ip|*A1lQ0 z4^}VoTjRKobUm5c0Yfd^vgJr7ofE=(S8L&-FZDBDFiMn^Lqvyax%Kf(Y}QoLUId7; zC$sgMR!)=?r286$P&1Uu5?5D3?n0;$C@phODOSf1t{RbZVP?$S#C(5lJLA#Jms9*{ zX7^-0aX3|~E=(64QbY{iPd$VfX|O_>8QrfK9#9E~EI0#{X7F$=oL)iik07WtCh;{D zl2?WE>8nJ`KW2J%K1^0~s?}LImOAsnygPrG2fWf^&4ZS%BayuYK{2Wl<=M+hRg9n7 z2~mLbNkSW1yt0i><;FLq zulhvyEr+NicGayl2RNiiSxhREOC^yx#{qQ0Opvr`#VQ(goamJ{Ml=Y#;vE6VWQ&y@ zaEjO_S?2Kird@b`jzqhZ+O)13^bg@DPmAsKk$ZD5RhLvabEB@md_O7~jA|i-<28Kx zlt_*d>l1hM5V{Hjbp~W{TP!B=OWRbkBAWHV@IFpZ((ZRy*=xupT|->8D1$g;?}Q}u zV?4DeQBHH{0#xl_yc#k3V} zlfDrjRd=9xt*ym`g$3@fwH=~)(i(SEcv%ExOA&BHkA<_++}Ps*rdl46y#RhIOBZTfs!?qGZ$CW5Ya7|>-OY5ML(8UD$=pbhQDO#InJc;g& zAg;C^a&EpQ4dRx_fGiK?%cI%|jGw9$m`3%ICY$6}T>_F^6%KwTUXW!oYEun@jLOcT^*#l6d1+cP^9N%I=sZS@- zjt3>Jqyq|_S>np@samc_-Z#%R?ICy#QR^HuTRw%G z{hb^S4EZ9?-57Hm8OgbyV|Xv*KdsHK=?D;#Pa5rQPDtH4mA5`tpJcS1c4g4cu_#o=AWmzfU8@~G^=^a@+4FGS7lI&v5(J7kX$b=6XNriM-dKN zLVZ%>MJT9SMQpjYkTLiT1;a;84_wd;^K7|GF`(jIaJVw%jS=oY*nOE- zbIiRG*1TS)d09C|%s7D)O4nzO;d*G&&r7}h1I6j9QL!Iqc*j0zd@>L|J8eZ9d`#(F zT_Of<;i6qC!h#2&zFjQ}IvMtHy~i*W)ED5j%XVVCkt+*G_SeZvq3zCw1(nT8>UeOE z*{~DZH%ZswYhjp!#-*@|b9Ev~s|bv}g++9$q10PkHzeDlU~3qJdXnkERNZ zvUm2~qzXEkB!z+b0<_W}^p?R^n8q2<`?8aQZ6SyZn`>pXzSRj84oBhUpmv>32nc-q zkFB+oa}dj-a16%QD6wzkQ#~Mg;OR_~Mn-SiEVo{8e}(GVl1tj{@!jC*gG+F{(J@rj zET9S-LY*>J(dcteV*Cx)c)CMW4;OZYO0PiHc!qBDyN%RDEG%NJ2L%zk^U1uhCm|(^ z->4_O)m7d{%y;f_BKf)=VuQR>7Q=?$D|W+tWPpOEsb%>25!5`a8=g*)FaXk4FktSz@C03g?U!+{n zR6Zk?0>e*W|M;$@^@13od%ULBlV5&f(O;B`pC*QQq~@^71vr6-?vDMls?eU|^K+a# zss7Y2C^VCWI64T~iK_bi4?_a|1%v^d9N5D_%c9UD2ZEO|(a1r$;NVkVhudNjZOnC$U>$J|JgeOeZIM zli9-^=i~rkqojhepM#AS8J{R<%t||RCdkb(3LhN+I>pq>h%jG|_#7;^%i!N~zr?}( zm*M*&Ne+g?3`~}PM)dEGbBq_ z!{C}5bss2qcX1XH;}xh)ibn-LT`HPv#Lr{}=0XTWYm8M9{f#s|OqJ z4`6)+$0LtiWBCRo=CJRPcd;ZY7H%@keGBRJ>VmCL(rYxwPAL7BzTFH)7ft<1K)p@% zob-3SLzCDHY8PMNO!iKI0V&NdP<#WBaz8>Qt{p zN*~o`WjyYzXidRf03*D1ml11A3A9=GJpa;H)syV0fpZy!ildpA7NW|pI8@~O6ha5Q zqF$MeiWL07ly9T2c1K?bJU@1_BZjR8@dFK8 zBauQ!uBbHh)L!78>HwwdP+jF*K%yOwV@pyQ_)|sZW*tMv_NJ=xL4tXkAY~lt@z|=s zS0u-X@8`aOTUUT%h`B)0)>EsP;*@6yVl4HcaZAP3@~ri23tc)FzjqfNJum+y6FH+B|p~a-LIMQ@7Mka8~$V6cv0`q zm@aQoxC(a{o<%oDgLX!!C3$eh`W&kSNqp6f=Sr@{$Ar6VI#Kjq$aqjbl3n4}fr`Eh zWmiGiLVZbxq?5pKqZpQk6`J@%u!+Yf%fSf0OB2?QiZE%bkR-kK4do{pI;4jizml#M z;8SVc!%9*Ne}`JWPON$g&dK1<(ylVkaVvrbH61C03l)*gn#~?*-_d_Iy_y+vRE{oK zF4eFHPEnG}>&*anO)Rjv{DXU3?jT!E+{qS?W1cUtPV854g)l!-K7`wDLmO2*m2j^_ zG5koMi7fhFT58%!a~tTK8wUW8hsX@+X+-kxET16M8`ht0w9_~nbs*to~D@t#P z>V8HeLbPj3O=O1kMp8gr%@3wwX#_U-&tT7W6jjdI=8IFX{@G$3{4Nw0I@PgZQoMwl z{lAQ|ibR%y?GO5k-=}SRleV}re``S<*EV}7bb7^*A(RF|lz8|(?kSE(xHrbx$Yg}a zw5Y<#q~Tk{q<+TPUPI;+duPKq%-eH>sPWG`Czg<|_b$MJ5A_-4<3hOIe~$pXMKTB` zd|O3=l%U#7S{v}!Q(Aa##r`Tu{!;a0QQyj+yLTbo zXfl5MQaY-9RT(id4Hv!EzN$c~Ms1vgbb0tq z9(9wlG|&#IsymT%;5Ctm-OmCF?Rx|emn_Beol zXXRw(`f$UxX=uE3j($i(#fo|s8O!&R{t-mH^UjJ^4P4#OxOi)iQSNi5j0~5L=8o|4Y^;{$VO~y;jGY#fABMtWOsTu zGeo4mIE}DtpM#|#!iGyK#+G44h6<=S$8A1|Od?h(qyq7L^lbIbYl4=UDM5U^ zi0}}W6=~}#gG>mX*Gwqq$r8y!QE{Mm{y*RS7U6PV?;fNy;9y*bDM*Mz;+=p|JLSzo?pDZp5Gp;88N4p_z3nbmzY= zjAmbwupyL?q%ToDJVHi4D2SNH(Cef$P+nw&1$6}YuJsFRZu`F811=ez!j`)y_Lq2G5!mo|1}igSb&z#aU3^bNAo%p~=18tVVV#c?yUu>a>O=l={B z<6>YYW@Y`K2-jn0`WFku&hp>3V{rf5j@3d?{L8f1S^mY2asT)27(4U-ZO8tj|NoL5 zV`u*F*fFkuO0)jky#CGFv9td_wqxvU|5ZC?lYrmpwEg2>HRW2)UFfHSAy zJHDU(%m3TUSpPe>)e!Xn7Dd`BJs-8J}ZhHAk+@zh`xIbAL+* zwmvt?<)LmCW&49vWm=1K-IgohhhkNj;1>%v^f`8%huN^EV4t_)ut(h=hLU7zWfyZD zkHP5?pC*jfrFML_H*U$HvdwMB=&qV$Y?s16ZbhfV;hyKmsbFMhc;`f)e$Giwp$U%4 zt!8A?(8|GY7e|SHvP$YOXNusT)=Uk5M$2!xSFC1kM3pmgEjW+Ho5_rtr0ddRRk!3n z*07<_r+4AI9RY3lsF;5h9s^Msv5|d&votf3?mKKtTY8DvbuxYSa(f#labY%u&=tRj zntsQ*`ZH)}X5Pm=5@U%Fzq@EBLZfKr$x)9ZwF+f$Stv#+&+K7Xc-ZV(TiU_A)Y;b_ z!yX4t1SxBE(`^qfT=i{2f5KBDQWVktyHHX5KNC`aqVu{2T27DU$dKgk4h)h3r zmODythBhX|;LP2Ldp5$G3itn9qDhe;pU2}@5WDz2xil2c`Va$kk!?J2Vw8*F_>j4* z7$AaD*e}&xf`KXnv$s+yh-$w_2bhEOt;+drc7BNHNl*s&T9E1m!C1QgfV9k3Jp!B2 zy^Y$>6b7^T)pPdTj7E-n(#zcuYx{SQVK3yT(RsQJdOaWwLjNbnzMiGwQg$1-CGxlL zo42)?zvUu&U}sk>j5dd%5USiuWu^X+XUAlqT!*8zu4YgYW}s~F8%FsN>BP|QHveju z<)U#%$7#n~ob4@o4Tw$&o{qsh6YjA^#V(3=$E-rDvN)$Jx zT06*R)-$qTu)(nY?8UE}wK0}ArQE_Idg=_E2k-qT1V^4@X%T=22;X4HW@w>9MJV7- z!5_3CdIykY@=zAL)`--BP4jR(e~|~pg5XU6vQGhkI zn}ratgvMW`o-96ddVEr2J3�FjyRpv5DG`cR!ly?Y~DZy>f(F!0mufedBEix_KAW zY&;MW$zqP7ls4X>$*rh^@CuHhSWFsA(4cU0o>PeLqi{7SLJ?LuZ2XCw0OA5Z%W;XT z44w)#McUxyX$U(DRB)F1KL6F(BR0r75UwHNq#!KuP^c6{F!jxj%LpA9M%PYO+e7UG zTolM7K=^GAiFfkiz^q2oCox3+%)v8KZ~^2)To@gRfj!f$bM*4V;@Xy_^Z+;?XUDVY z-aGi$r~bOfMkk$@f;66@gj8YF1Uhh*eWyaYCjkISF$K5KE<+tTivKHvpNUp2>z>*U7fEkFOJ{C)>Z!6zRU7co|WKc@g#!Z-_ zZN7oxdkZI(q;~5TVkQ{PydNd!<>!@tpTgje0<6D;ew&v>OxnZ=fiZYNFAtF6K~XAX zZ37HKORP6~*?b$3G7E72G9uR){%V{z(*LUN zWbL+^Pq1Q!!Rt7U3y=eQ#_^3qmRtMa`7`Jz!Jl{o%K8Th3?(XrK3HOOEX}f$S$YKe ziu}($VpFm#Ly9>b6U%yt%-b**Q=Q3P1J;K;AUsAYZolFjG*}2)4gFFG=tA=4QU#zy z#g{D8Z=gRJkm98H!{Ebl%J}_qDkj3qWt~?diPe@F>roX_DltN02pNk(7J(TD z%cXwf$qu&6r)azzIRJ0`j>bINz{&*AJsou5f~!^+^Yr^EegH*Ht|io-H^+S#jpxkk zmpH0t)#Qg^bBX?3_2vE3jDkLWaBp!?uB$DYlm5ZbFnFD4I5hX8sF}Rcz#e4vgnPr; z@6uZU2Kz<4U917FIHWNwP04MU0FVU?K{iE|rD{8cn3Ydo4&G3AqxTL69|zqE-QDeZ zXZp|R*}-&i9U9KyZwMgAYue>Kez41qt(UV1HOsO}Qip_;#R1~r`qskqR;y#oEcVMG z#0oe-9qAJZ2NxdphW=z@d#fv4NCqF80mPFf2+?+44@m^TJjD=(4()8LgerfXd&>jBTy)Bmlc_=uMJvk&XAekt+xv>Y+nipul<36B zGM^h-7{&D#v&ecn^N5dZO%YnOcc0(6e-(%nhdeo*qkalaBbcU*GvtoP! zfiaC1)tj54eR)B=Ok50Rh#=-x!bWZYBBLL8k#%A1=%#>KUY-UCfwLptq>_qc1+@ci zz_!aO5C?{3iOp!5Yt8KD=s_66oi|Wp)9?!b%mF6w82rXe94py$tns;2hW(V^i6czs zt1+&H4WKoiHgiFjfH2~&+mkm>fkxA4NJ9|REPkoHRJb@z+tE1556%}?Lm`mjYufC82U9dhG2PJJ zMUc4FH~_m=HW0AYa)RjDp&E>Z4&4WeS~CfbG+`*IDQX`V@Ggg|$ZI5lJK8F)I~Dmo z>oEd9v3u!#57%_63&1m$2K9x@9Taz5NbB+rXe|kwSIa-IZX=-dfuLWi zz(GthX(-eXsiAWu)S&eT>w3`zX0RkGJs5wKUsNcjt!Be37nv^X zr|~FfaGw+?6v8AM(=e9N^(QffG!*$C70oahm$dK~@#!dy-Z-kw~CEa!Y)9!)!U z$VA0uy&)Gu#~BK4(Px@B4FOEK@WNrL-$G2rY?+>hlodY{sf`fpxC9S;X>Opw3-l(g zez6E-GWatX{>5cC|G>!7A;8chhl1m$YLG?hn@;YYGdK8Vecv?JQuDz^*fcnJ&uzS* zofT(TE1dvEDMpYI(;E$H>*5QicV7U17KawEFt7GU3seOuPgZP<^bVGnu*_0ehJr=I z8HWgxV}sVWV#;BQ*g6bd@|0?IA-wkbU%cF7aBsoFCi*1**vXD<+qP}nwyho8*|BZg z_Kt1aPUg(iyft^;_e|Y$s^;ErU8}lQuX?(wSAY1`!yO;KD->u2ma-*(e>M$2BMDgE zPf>?QA?6^Zn;%xriG>>K6dcYRoHFYy;Od?g*vEiq=o?ntEzNfukTIexuKA?z9L2`7 z7{a_2vBvRZL%5+45Ee0p}xh>##<#76_3_+tpK6#uOn2-NDzG|0e|;6 z!1u>EWsisZ6NjiDM&c02%|s{Gx~rx&w+AKypW*s?KV-NCkI^am1X%WEI;nq#vt6)T zG|h$85oO?JJ_@go=29mxfMs-ck_?>C(mN#LZ6Qa5N%yTWMBHx+{z%w$nmMb&VN9^gtC2ZPAGZQ${(;)rt4EFJ{aQUUDI0 zHZlxNIPhz)u=qA{vr5xj-o0%y>6QdMi%MbEWtn|Dh`=8qu|+zmz2V1juj`CFP`GV&?;Ri2x0LJ@KKL*STI*_~6H7_%uA zcunUWNu39qxsN}co%CSlg=DfhYdj@Ys-|k}ghYgL z?i7wsx#ob)2dEfbPy@{gD2f(w*#@(ZC;fRUAP^|6JJpJumm>v9KVgYc6kCnQQ{alH zz#u=ir2>1to1IVHOs&4!mf!ous7*z=ghq4^k46E+y2!Kgx&IKU|Gi2CugGv5ME1Ag z$+X|s{@c@yoKEGs3~iRK;8$mRmwhyuNW8>1Y-NZqecedlje$*@(av(vmt{6<rpt5uM&Nzkhkq~ z?+1!gH0_6j2slpFEtno;v@-XovU((yU{8Z5EvBD&Xs=!R8%9{;+c%oE7C*0wE_xLW z&{Y?b+Y{)hL8e7_NoR0VNioS(KAg_q2h=8myDT^M0b*y03Ihh49gFao7?G3QPz)_J z!bcJXafNKyXu0|w5_9i<-F6^jR*%EMYGK<*oZ>tkb|J5AV|l3feVv4TDLGAS(8ANJ zTm=x>+q}HJ%bGqlKrQ|-y&5b*^)Q=RS@14NzRxEX7{OAKNH=~E+`Gp3<`8C*B+R*> z6s*UB9+?UmCBf*`sxcY4n*$X{%kVq1hH8B|WF?3vl z7AC}#Up9!|LuRf`mIgcKFK;FI%=9D!1E3i-$%@QNahZc_TTVKWlN zYv6%y=zl{dw(JxSfvkFw^(XWz6U-t?dkR3)vRwYDa?(2xB}3v z*E1{qr}|-Y56T|K!g~<;S_czy?Yk5}p<1jYQqs70gOPV9aJa!OX*RF+hQFaPuc7)n zn5(!%Ot0~W8Z2(<5_&r_hIKesqYbhlYQ0uVx4!ShplOX0nBUbBWUk}D_#d;0j#)Tf zg;3i?+Ff?7RPb%~ZiSE1`{_K$$llf7lSoF)qUbjW7LhU_r0t)|H{TXfKOBWN1GmUWer4I@y)F5mu8pO(Rv* zZ=Ag*V{U?tjXW-gPL}IMz~4T-US0?5QBjbb12{0W9-(2jrRI>N@3fMa7&R!so^E@% zM_=t*kA+_g>O6-rz2eD)hvW9Py3YDLSH7#i0x2xu>Dzr@z2FJr!^JgNx!kILyR`&w zRm~N#NjYG(hvX4jn8W&8HraA1#Bu(7sJ-QCu?3j!A>-HY%X0aoLJ8xnopVg46O&25 zgQ@Y@UHXvO7#%tq3r4Wwd?${^)DzCi3z`_oq_|R-^`Q4rxi8PiO&gBM``2k}?#+?6 ze*DF9^E_*3fqvW2hd6RAcX9#9VHcmCS+8M0Op+PA*8bxpnYdoMzA*d{Gsm#A%{x2E zpY~lv+4a_|j7cvq;g|{SGw6lQB{fyN&q+jL}a?7>wFYYRFHhxd`t`fL8T zO$41Q-c7|FvHys$vu7?97+WQ1G-{$w|8)NV-v_=}m$fqFm*Qp0F9{!TZ??6va{Nl{ z!|?LllU1$ zyL$_2ez7O(nfc(i6D32QUSlj+Fm>ASQ{bIbO4@`d!@SmHtG|Ks8?e~mhK!-9btd`v z4l|HcN)mqYsv-UxKs~(hqKlUz1JKZ6s(39dv!enl1gYu-9E36P(fZWm*?DxXlvhv=$1tbsWzA$ z`-c+Z*Z=^{1}Ta+1*+-Oqu%XYEVQRh+^4H7u*k*eqL_k&p$C}m&LjzNGUpjzA!krA z>Bs(jBpH$5Cn|0*C=SR<_uABwrF^m&t~EJyO7LIGM;8H}{sUQ+9yyAJK!)uGE|iJv z^K2s{H1BW+AE?fbKG&I=)hEzE8tv#d*KOi$mN`^|gvOn#q?4G;%ebl*e04XOmyS6p z$jL(ROYI1AEXshJl%j;79~hxyA_`usPPRS??)3@Qh5pzG%9$0G%d zCA5d&GI)n5;jTI3RWv;p#ota|Zqcaz{!_}!GG1A5`~YBl&}yR_PLMIQMzN#D+Hzhp z0r|XAk)&G=ZsR9e2^YP7H9(@NgGZxLDfwYQpK9OoFfYX~yCo6lS6>v|v*jYTbi5B8 zY;Y=Qjl6VugD7MTw9+HOtUTRllQg%mYD};sQ2l0uYVZU2?YcHH1K)5<=Zqk{4>D|< z_~ik3*>aR)M9RmqJ=!)LtdOpPM?4jmA>po0KrfjH>TRH3p8*eNP=mKd3QqvmtNsb_ zU^+eIfJLR5#a`#_fZzSw^FbhQk@(7pH&_4jN2cOKs7A$)C}T1g4%uaD7TO?L-nqgk2Wb97RhE9P%$s9^bZ&q%repI+B=h52j)%CHe*$Ap1=T4W4TR#fuo66ehC7=BL5T-vNysF*bj?z@jE!=UCrVr01TXyS)={U%~lQ< znm7#0hjBPV#PcCt^N+{|Rq)W0Nt_bE&LP@3bb&nS=c?8pNpt03)W|B{XY9=jk(%Dr zE$~G%VX(I%|Anh`R63GUEDkdyw?F8g$4*D0* zX(mR%AOPQk?0X|ul%3}c=bhH>=Ihbo7ul33W1Lfv0=|JJj!t$?%Bsbj)TP)a+@<_w zqI~|6fLDQK)RsN%uo*W6=7<+Ie)M^Nu{$IhcCre34opE>+1m~fjt_AZHp+QxOTh=m}}Rl4Qe z*$8%0+>TgPr)H*5>#C81lRW)rRe@QX?&Wp?ECb}G zC?A8KRYf$fMz%df1vM(I8yws+v(Staq4~^eT(Yr8JIw-a#+Y~p*$ev_x7mk=&v@`; zb72b|uPpxd@y#g!{*o3~LC$Ti7Z-!CrYD#KKrj1u$4`QNQ2l$}h?Q#%#Gbeii=O&J zA`EtYY*(8qiJ}S1KS#@uz(=tsRZV)5&}q!OC-h!+-8zU} zK6EfJLEeXBCk-fHI%xPv%cinVL^ENle)QG~w1LHCUt?r<1xIm|#yol(G7!4?+9)G7 z@b}f)_E$tXqDIUj^Nk%o&=7D~Rwo^Dffe;2q;qM{WmsR9V?t?>KdhQEuI~?}th{YO zqvYQeCRo_*x1a6up2wa&$8L#pt#=`dFm_xs0YKd(8I10lKY>@K^SNQq47b#n-I zUJ&0K^_g@6^c4zl1A)yjkZU7t`B=+m28NC2X&4j(KvutcWfuTD6BDp>BJ((D)KV1n z-N~)}$VJN !gVli$thhYh)Bv>8z72t82cO2g67;1@lA>KxJ!3`ml@K*68$IK&P zxL|0_2Efno(cgNpW>!(t;uNdylQ=b z2vuoI%ODsqYuRJ!1YTx?ptRu;7J39kb2GX}VF z{pyp5`R{@3>6?E{6KekCNmwzgAdvYp2sNwzE zyqPD*UIhJul=<6%j*0WP6ha{wWN3L8sP#6^-WB;;o={ycbwWGG*qkIy1JoW!!B&)Q zBIYBr8=_1{t2|*?FJ7 z73+B6)`~W1@hj=;_0fqxjtr=d%d?_jn*)a-7Wx1`!~@*?+Re!c2`1|7`ZN-4XDQrU0po74M97Sduy&>Sh#^1 zry;n8QBa(5Pq8n^Z=P#C_<0V}8f2s>$2*@ID@{##PqSq|d|8z(dC=Mj%}pkyqYtcT z2~%<0AqcpuUzG4O*Xa%cdnZukv)*fU=FY zK^xqQ#}ta!DY)V>4u3&eWtgl7Q)eg~XQbtpa4(altMv&D-JrWhqRzd4SX_Q!e{7%I zO7FHH`+6|?GUz_8A#v83ka_j7^Yguv+xinoFWB>buxqPU9%aUKU-`pH_ZapAArfny z{m-D$f0R^laI!J{ucs{k->@v^|E{Y3gJu1TM(clLS^v4;>;GW1*#DV1;{3Obmh}HL zT8&_2|13Jr|7x^Y+5TUQ78}!lHCi11#b~kr%SMai-!WR8|5%^lpX9~%&rBN|^Z#X| z#m4xrZ9wsVH(KMiI~VFxXC{_zW?L06#wRr7CnoZxDL5RF)9ee((=_Bd*B|-jfltpG^{@)qdI~YLcf;&9mJdFd)7Y8e!4CW=f&1@zq z#++SzbA(oS$Pw)zxeykC{GKxZqbDCPyKXqlx|JFUoL+&;OU8!)Wv;@`D8@W zeNk#V#ZxScv5V?A6^q+ZsyzuyrRzA7-V7O+9=xT{7iNVjVg-1cT;U?FLE3zoOw|qP zZNQ@>9OOn=o2yg(LoM0mpcty2Fku#ObN!F ze%QK8mODP&iNU@HzTJo6Jw4mrxcNJ;zem4#BmKvxKm~Yra0<8#vqq8|@EG$D&B%6B4{2-c= z-TBN+x3e@uOm=L(9B^e z`~cf%Oz3c~<>d#TTkc(-Vcooe(eMEC8_4|qD~KM!Rh|8LuZ3D!i9MGC>y4#(*WyqP zWs161@SQGKC3Y?l2L}!&%iq^HbR3=2K$r(I>4L`+5I!=3s)Lm32?p1fu52eb?0!VV zqs~!6OrF)uJ=x>HVcZ}fZSqcip%n5H-~?R7H-S!$sezXgRZ*BQU0p{vhr}XImgcQS zT~+DPb|v7>)krrH%cCJ@uv=z}0^ki;HwwEDSRR&2-6dL0L5q&_>-)nPD5fJ*!?-}L zj)N%&nn|OUpPe;@#Epj9&%@@ic-Rw8j5cQ~pnt)>%!n9Dtkrj^N#TOc<17*?OX#U8 z_-8ZCL1dTTfOkNmp*MrLfoCWXF?0iVDv&F8xX;`7k3b;~M2$5T3_7$bm{q8eU@X*$}$0303-{#|f`g|qKM{^HX4TA)`*HaKCP z-dfPeCdn(-%8Xepf03xnJFx&9>TwHUG!NIuE3D#oLYOk?TM*}#6L!@(C^45Cbo-o} zs<-!I-=0jfr_RM;Xa{7E%W>?|j{c9d-c$8Ifq|>ii+`$`{O{OrzUL&;VcG;zxrePNQpU3gzHLa3w=>oK#_U#f4VuFW)xhP33f9As#97O!^99ir4s_aVI=ku zx=g`ZAwhF^Fz<5G*zp*Y=1eOgG3}(N5QsSP6h+aHNl~?=4RTIWTE~^@p}AzoKu@K3 zFbmUAXwr=|x%lpD(if>Z+?lKVI+kjX& z3AJIFoill7gJk^C5MedRgQI9%ioO(>PMAN+61@Tlj*-O@a|eZ;+XxgEK$xcghG+*g ziV2}5UVu8lV%3&}dGoyg8f<1k1RpaAY7wvGXVQU*d2u}cex8Yj#6uG}7cuDe9xcPa zCOYEQ_~PhLz>&aBXREc_8`y;g*EqA@KO0?XW#7gT=fks@7B>KoyjI^e>q#`@f0C`C zLHvc4Q%%~bRSyB6c%ww1_obb|h(~EA`}hSCv!v$iwfgs4tgU-UU8!|J8$}QA$E{t}` zz&jAcXU|kP0!%r|aw*B-t$GNeAX8*+?kYR1sY5|q5d8?@D?`q}1D_EyW>iF%P{@mO z2^>whon*rZy+v1M7OYtp7TG^{TnDOw5_=a(5l253cN>^p`fy;T z$^$bJf%n|9HwT;U0(?VG;gn$)r4NkCvb&784S$3DVC7Un7Yx4+eAYmv5gP$i>Faa@ z3Ya9=QseH){8}k^;W`S@tAy7|-w67)s9dQF_8Waau{xGw0X#lr8~B1l>siX(ng?Pg zN@I}y=;Lvj%&owPS#ep=l2yIFow?6-VgDr~AiWB^_{107i-v7VT=lJaLj@StN7@53 zSGMg@fw|q-WHsU6G#iCh}HlXCsc4Mn#nMwobb0LF!MZ5Z5AM z36IWT5dwpKV=K{EVb|lqn+P1&@LgAez${arZhDe<(bqMBLYs)li-;oxr33qg;^kW% zxIOr%$-Q*NHr$deybl!NK(I86-Kx<=RH)0ajuOVFU^FYUI&wv0!&TC5wnNH2=s4qa zVYRmJ&5WQ>vF{7JnFoXRqY-eZD?%VUErd@dbC_@qMPpsW%aLz~hb*+U=)(!3a3Tt2y`TIZnD z$qplYE~#{wUrFyEH6e6xb*UV37)8G7YuBL(EBbVerH!e_M0!kej6uo}z5#m4=VdD~CTVPKJhcvH9qRB`b%tv?RYC zSRxO8`$xwC{3;tBllmjP*laRZ(@!pHMCQQW3a?P))YK+W&0J4y3thB45`^DhC)S@&ov9Rd4T zHy;afHd|V2-T*Uyj#wzi(<;~iUJ%#;Au6=~TRIs$r;B-BKAaqkZ&XHy(6>l+3&vZJ z=t(21!gE0cqZ%8AgQ48t&?r@FnE9^zPJ$q1O(<%FM~-A7&6ATHPf2cZHa;M#T{;V$ z@4yz$3}$6HN_|B@LHr{dafTYk(Ji3Qxgdp>hG-Lz=fAU55ryiY#Pb*}VVyDgZl^>z zOf}X*&nnXL=q|*mLXU>7i&QP@j{;Z^NsoNfG*>1J4zJZP3ewg>|JbZV4 zJc6n`yYvaANQt0UURDR61M9%7>h&&0Fa4Pfg#i+NI|tN8ocgR$GdRQjYMX}c!OJo` z<>!AOrY)m*h_XdL_sJ823KN~c6O-Z@^$Zb&U#d-NRiUoqbJ=6}U<*4`**9QpO@Y;M zxVPuI_C1EMLwB4?OI5u+dX^4$)pBsMv^x45ny^(|4@Pw&P5m_%BTem+?KAxKUX1D) ztk(DCV<|c^9v9R)rbi;oe;W!i<7HV##D!jqp-DxEg4A4cY^>xVM}^LPhNlw2r<_eT zX#>!`lL-YZ1DANM!~b!l*NTG@`^P@5f#_mS@h}GRt-5&hOm3<%y+>6fU%|g^b@O>G z%Nh!Jyl2Lq@hl@?W{)urOJH91XawJv2gi-ajCji^H>Lkw8kD-8%%1dYC~o-uoQEBE zt)!MQ9iXJPai1r#933Ez>YGfR2=7B*<*Ul z*8T_nYw+qZm6Vjl2pRGic^Rp>Cs-CRqzx>a9G?Su^`5(T6bBE zmi@Jk4BYlgJD`i_K}n%mDPCZwrkw?F=IrB16QuK?5mH;7A4Qjd+rNe|wWwjX+i*&r ze+PVeM1U}aI`7&WDGNAv)R}3|SLsX9?O(Yq7xRH9?gh$MOQ_GBPhu8o7oD9tfe_rr z_9KW>VC50KIPNN;_Jx+rD*;Ech4JIgHk7h`bSY1r!B~KzR#Ju>1jnRjw16E8s=i@o z7XhWO#f(i%j4?4fyE0b)6`*E1`c56 zeN%*bBJkmfhXnS23MMEMET8N*3F7J}HUL3GNAULa_L**bsat0MBV&2!Av5ndGZ_Be zXABs-62Gi&V{%q z4Y1$mc>3Ap-jkZ19ztIgocbCjUfO2gPx@`xp9&gmmj0#=OY%p=J2xt%)%~ykO^Pbbe*@PffTeiO&g>IE>z{^qsJmPOz1k&Cl}+@RFR@6MJ~i zW-CMGx$(Du9LE>rzJ+i}`zBCe9tm$OUV!!_21^pSV7|!Pi6rb#W=3{`kmb3OPDXIP zWa@dwZVBoTZE$gNJ>nXZgP&E$#<(SJ1Fc)FpyJ;uSnoN|AKWAWuLZsa2=|$GGRwDA z1lz>~@I$esR3EsRY{F5hrw@Z`u$Tl}Q>xD!Csi5N+s1AECKCK8JD?)|p-lq`cuUe_ z&pR>5iIVAq{BoTkY`n}%GPcfXes<9-@f}mu@;o#{x?6zT<8jj%KAksQ45sUe$=HEz0 z3r>9wCr^``R%EY$OwvQ^dNPV|IZFEmhm6`mEqil?TKgK!uNhF1OtN;3Vo^X-q3W-P ztofu6x`rKkpoj9fuq4RPs?04)w8AKZY`9}M!43N%e%%o?&x2gJk)l2nP=X}ey_?!u zW*i4L4=d?A`#W00WeDs&j39Tc?#lC-MAO2-ASqWhM1<&KOgLDpQZZH!nQUdZC)+IW?T&_01M_W2t*T#aqK#+ASSVs=RS(WtwZ*3(rg zOJ+W8gL_P7SDDZhhoGZ>VBT>>`6@TWVQNgtF(klUDzBME-yzjN!tWlW0jTJo|4dr` zmT<>|1<0prUm!=Uw+&u&N+P*-f~9&oMcyDpSh+Qhm_-fv$+MSrn!_dUWG8Mo6A6=) z?t44Ww5y%kUbDFwb4%zD903nUUVyFjZ>!{Tu?IB?vRd1?2a;T{P<;RTQ6gryX>@HA z8hWchVcW<&v@2hC$*cCZVZDtjH0q+c)uwc(Sf?zF9_s+vSq#96av zSO~NmgHiU~9~m)IPlVEqF)~)}Ot5Nlk_wYfZ!&X+nc|%Iyev4|#jEl&&%r1r=7w#1 z>6007V9di$jN!wP%Y$sIhXQufWaXWC{+T)+nyJpyl3;CR&6}aJ(FxWoH4_^F8N%7X zV&@nve_*>=TbF!X(Khzd`n7p;`2-d0^I}<>Cg;mF0zy@`GzL{O;H=?QVuRO~T4*NV4fQHul$o{pNthyY*K8kcBztr@v}fnF zc_!J7ka<;VCsj90qJ$5>rbNU<#l?}8MR34Fls*5kf)<=wN7^z?e7Y^Q^8P@Fo8Fqv z;IX5ya8q(9!&$YCAk|mzegnAAxwDg?yHc z699bX!f$)jL>s5wwQj4MP_dlaufoGUg}Ia)-f5DQa^L#bay{1^<9THGcfi|#e^LVAmG(G^&G zw$#wcmQ}=7Ikc7rjox4n&>WN$CsIn!vA6Xv2@FNM2?XRQyl0T6z*>Wui?iqFqmp(( z)0EP`-2Peu3K$P-0IF8NW)r1p$&JIHOtf8qH;#~S6cc1H(f3EW3{w!E=;0;DjzAFL z>&dPo%}t;Oz6%BgnW=~MfN1GG9jl>|TK+<=o|Jjg#c-|zrDpdr17k&VF>LMB+N-g^ zEW%1Vtj~=#64^YJX=yzg>A$zi)@^NvYn>`!RVR)yAi?H1{#j7lKlp`-C$nN^@^tc%NL-MZ7R> zb*OQ@3AfiSsW!w@x<_VU1iD2($l51pA^}=Cg_gcW7c5T z&FkxGp)&iyS|Las3|%EC9)3jf3RDQEZsDqp2;xmzyjaaBRXg9~Zn3jqXhVn-A+)F% zsV@WR?lH&UqFViQs;|V0-REMm03uZqA?n(0u=)yJrB;;IpQD4@MA2O*fF9n+5{6QQ z?pG#j&SZT&>Aojuc^N+!~0=T}KvCg&2TAj^3CvLMRYhR=)Lp#M>h1 z*SIZ@OHnTdqWYG>Z~QX8mHJMxa~)yl7>0DrZmsgi+a=uAE&L0eGb9xV zKj+iY!l1RTQYiL) z-0B|cws)eg!pt6h%W6`aVei)U0C(U!NeoZGepIe8;ujL>kTJ5=^bIMDEz$ODhiR2< zGrCI^*j}HA-Jbn7B8}f6)uCazf9jO%PU7u+SAfUx zl#aV%UR9Lut^zpQDrhUY^D}u58EE>z?gbXc`$Q9oy!W#1d)#VqOP+kTx^kt}nF3RZ z$Te7NSuyfx+mILBV61#&r>4!XK-dI|UBwh_!l`WQkUU%2^_Mqrwf}K7hXAeq4QE`1 z2U0s`m6c=E5ckTK{I8iv=?4qKu zQhyiq!=w%bE;}aV)-Ta}GmPW%i(HSbQ|SSPM)W7NTA6=U5rXP&`br&ff>C#A7+@*;ssoNX}I#qjwQQkn=XOBMsuWyEg;d|o~(LIU!c^m^`i!`p=N-h$U_6zo`Fca2Id z&pIqrQ}UIRpiKgy&V!1Zpw@XHF=wEZY?$$t&J}(oW%b$$p%Z0fM1ZjP_>8q^MzFAi zK&+y-Ld!xicaB9RO*ZGdrILdpRQ;8&(p++CK<_$RwY+Qt)6a6Li&!NC$$u{uNVlpb zuBRAnW3(N>z9r$BKpUM1gGtJgKxJ9ghccga zDqz+K%C?^PQSh|_d)Ya9PSXMz2zDf&yd$i}?x3#1Z)qeGj;K~E@7$WOkrgG?*(9JP z+p0$#rb0xVIaS5OC4a$|p$4jwJg%BT1!1Bivw9Sx82h+*Sfo0QB=~ni^tekn3S@P8 zs22LKG$g5sx8bioP5`etI=pUlHUlbPKO83|D!fDM;VQb2*_n0c)S1pK;E5VeQ2ca6 zLm@h@7d8yV=#0_zH9i}8JP;f$)bfqt45wkxMV37}p1Aml+kln46Q2-N`s7g1gU5hw zhYo3x)prgUa1m-}ig<3bPI!)%W>o&o)-Z#?rg{n{s3uJKCMHlek<4)U(}>7JV{RyR zk~3Iplcsl7Kb4wS8kZAWBcu$2@-CPLRDp#G^f?BxT$A{*F$E+rzv3T{UZoZrA| zR6tk0EJAt@;zn@ss^Dud7kn)jKY-|LgNgqHM9|%WDpaYKuobEvMvC$x71pS`bidy}`Z^8Q95cKy_Th1c*uUXFpI`3y=QO^k&9R9i+!bfs#4j4FTLhQEu)dEx7~V^~_ge94fTDuq|3-2|3y2}5mI zJs-uPY(h2)5m*Dhw32V_Pxp95wP8r$C4{)Zzu$|H<{Dfk0&5XEw!0^=U- z)fpzNOg37UufNjX{orxREddv4!q9%JvzgPdK!W2%E@r$NPdM zTI9nWf^W94%kVq=euJNTrb3v(r8&O4?cv_F&v_XzXJD)*RpVQ|sZ@1&MZ>jp$|ICK zS-bKd^k+a2rS!|~+}WLP=V`kUWTXX{aQ5_|HyY^D0SdNpz-ji z1~|?#f?;>T_}jG=Zl6a#v~1W=gIW2kS?zVc%C#wJ?a2!e%{XX|n7e zKE?Ey8lN)?I46Ez#{?Qh?Oa)7l^yxk{`0Ol4-zv{E%5OT1C^?&7L|(aqO&8Vl&e-AZgb{dv6>Rt z(@Oy^CNZ3`MQtYHfZdz`>DetqI1>my?=%D<9K@mM$`WsO?%4^(Ks{qFFwVNENm??t zKEN%Daq_l-s_=?;e0|;~w z>TUpyW6m#R)v#`I%#sU|yBHZg6UW zjE~O^PUkWQfZJVToUrIbB<@43wrm*$PCM*gg9=}W4mDAXUuyPnVNLI^PFP^*PJK8d z_&ul_PDbu6Z8AzL zpU>*O?<*%?_;VXSOE<4T#HkqpesbV`PpxULeh>cV0JDRCB9++wql1Z);s4RS#m4ym zclXx+rnml2$m>7RB-VdMli2@V%0&$LpOh;E4DX)>#Qt9?7aPmJPr2CG{xjwJAK(8k zQ7$&Ne}i%{G5q7z9RDmYj(?IDJH!8N%JnZ=x)@zedmQmZzgc}jX{NQR0%=eDEj-V> z{(A;dxUT1D8`{9F((E;0w5UM*e=uL9L`@@^aox}RUi2ILr2@LeVfr86dQWHHyGee!?<@3Z z#NqI^bhEkRt4@3R-gd9;DnO(>M>%@At<(j9VDL6<8Dp>OB}5yrkY=aEXE1BKg56Ly z8_`MYWh)9es5aa*b>@N#D_p2Z=jyjL_KxC0LU|FosgU>=F~7T0)RW+!(D!F8hDEIj zQqhfR+7oJ;Z{4X}im@2IE+wU?KRhy*T1~1^?iJdT4^I!rTStygjz!N_33O5$3jRM` z?OwC9_>4lF<>!U|{+05r&)obBu7Hh;?+E_dL-Z>bZU^RFt?a)Aa~NB-Imx<2N!sZ~H_`z;#O=e|EhO*D3l?0Wg^ zA?D8c3k}({4kS3PLK0YhtppRRL{wg>lljT-cG9=`R=6`^mH^J8Kc| zxI&`YvVSY{ajD!eWqR~sr>A%jX%k~qWRLdiN4a*mn^XO=YY}g*)jonb_e6r8oSS5S z@}W2Oqg$TElu;6)toHOwV~e6ygq}39)wwCtZlWHF;}Kt(-I+6G^L`N&Pg^0cwFGf* zVti^IucW;oy_D|{y&nO|7?!$!$>MXXeYEET@1%vAxXy3yEl~{wZ!DcrE6eTYf26^< z?kPEVFIEH?HnYc=j8x4*6rPMiOwFNar< z3Rl+oz7yL!0EP6=0EB_*hW4MOho>$W?q20rd~=n zXKjcL!Q&=8hO@Kr>#FM+#13R7+i@8+Vj+JIc#IhiUAY_t`_d-Q({g4jg`)6_2j&-m zbL4M<`#SZ!q=(A_oN-xs>&Ei4!z7h@TT6a>a%N|qg1uN(Tb}tKTlStnr9o7 z&DpA(vSup_-s03`+{)9qgIynsSveeSFhkW5a-CT77Q?DeKqWw^7sF92uOZ-V&`jb^ zioWGa@df=SUiBScT7?AOl#X+Fhdz<-!oP@@w?Qt(?Ou|W7s7(HvW8~+Su#W4VS4o; zA^T*7;i{?zL8I37Tb8^hcj(A28pLs1I;FfXS4;qGQOa=Bd7X6!zIch+9<#K$JvLkh zoapuqeQ|Vv5#hS}JvfFxQmT^kx?7;%R}>`!AJrxc8iBSYd|j0|{OXJ7&PE#5~{5Fw~k z8y;t(vY#foIkkqbZ0}T1xKE(0loJ7r0s>E3&z9xku_Gp3 z-7d@J?O2vuHT>ca`r9g^gc)%)JeHqBi1TdTAVCdhM1?tXBKdWEL#Kjl=WFay&bdZPn-oo39w_p1Eeq5^Z8S3uH$EA$Rs*b( zg7K>)Tee2e5)_c_3wIYtoQ_XLkk9V>t7)&y*D=K50sLpCSrF;zC-#o|=-Cci-g_rF zRqs{B@!fHJt!~Uu&Da>yn{sV)+!$S4w@Ol<5mOB^9rD(9s^?{|s|6j8qYA^Y+AHA> zZ-dlu`b&G~go~=y;mPmCLVq~3MAj%l~??=uwyT&Irz`K)BfYWwHcTF!pb=}pb4I>szO1nHcgyZ|F3it{qyK?#2p*3&rNLj%sd;sPQvV(4Tvmo8ZL3Wb z0@kIKSe^3sRz6(_T8g#VE&b1IwftJ~N&pK^n->mk_8B0^pX;Z4g)--B-o#Z$-wCdL zcm<+DhUpd!7eg|uxjEp%_Hg__@mAc$2bZB<-EO{>1PzDS%XgUa$D!2`HQf%u22SiDU*DJcr3^6$j zUWO!<3!ekxwAJNAA0t2-Md)&ePpe=+KLsKV5}gUNGnwj0x6o+81t2sPIT5+@RF=7d z?LqZIMe6f)M_F#F@nQN3ie`ojjmCD|GZMl688{KK*rEiB^IPfYa|r1QNsh6JwoO>T z#P`w(3#H1p<;lpr7vUmqh>Njo^L*j=qfsDF)el9=A?M%d2hj<-**4@UciS^vh%!id zwjg4v%a3!bO9y(rR2@c&JPhHEb<&kYhyGU)qA|ULxgqCIo4^MM3Kp*s*H_FeCq zMhdm1XJlc6{7dxcS__Gl=>X^h=qS&@!q1LrhfF)q58|0ZgZYi3RabU!W@bjstSVtc zrwW6yd7&9mEa37qJghNm8V)=Hke8bR{WB>C&WuIUOY)+tlVP{*tRRAmEuadr^AC+&=$*%>4U!A6 zzs=TL6EqlnPpz?Uj(6M;mYqY{L*2%+Jwqph3Hn{4qeg8aK{zXThk_p+5#5da^ZEao>3L8DeNI3wIG(*t@ zN=p_&7Kk?8Os&0-I{APm=JJU|Cyq{ZM8zsj5gMMU*h-Y1YSpyoV5D9uBp9euY zJW2Mlne0ys8EJj-`V)*7npAa1f%)Q2AX6!@vd(<{94-Y&QCRrVC*3}&~=rM2D&zzZrk=W5f0j!?=l{X0dhII8@OLR5+E?2 zmsh|Be>}%np3|yCC!Wy;Wb_y2yTu5cJmy*HUuO3G<(m;J8#sGd^f@FjCC{fe2+OJP z9P3pF9DkI;Q?w3sC?JqxcCY%SIq=rPx%9(kdDiNZ2af4npRyAIp>phlCqJ~zqTIQt zG&Lw0^yRPoZd)mS&)ARdz$vZ7sDpd#s7R*;g;p<=4?|dY`75B06hcFkGqVEzHXg4x5g7h~%z-3zAt{U)ui2HFL{S zgi+-X)_vt+WPM-Wwv~n-O4TN$v*I8DYvSK(3Z1DR+D0mInXOvf7PX~|3i2&QWwel`AZvq5PZh*{X^}NEQ} z#@Jz)=XC3?Q*J?n-9iZ<&GpXE(u%D zOe0}O3m(C*vFmnRT~fM%OCbiY1aWsx{zYU(&(gL`8*P^HK}FQJ6m9a5<8Op^G)%#% z1@ycWFTLJ7BDc7kt}Lh2ossH6md5L#juc?{RJ4nkwfrjh^O4L&d?1BSibE-}@-nLf zdqdKnEjYKi+jc=i9?!*SaP)zLfD<6%SaNy0rj`JR3Tnd0tZ7UEttYn6%9MO&`m#9f)9f!y;S!gT$dKv! zcy@BJa>Z(fj*R?s(V_YZYc|bpj`2JSQ?OSr-W?_PXd_mN{m~SG$q|Fx0KiEU-bcgL#N4 z^zOK&X#{kmXmdh`7D36&@{fNjG;&ILzUtW}QR4kxE3KiI3_}+7XA5KPc8pWCbf-#= zFaWMy%`d+5-imo`{^UB#&A_$o2t5pPtz(pdeORjQo|f;G@44DocSNx2e< z{evhkYrHZDWMrL&X@Aj^Wfv_nKQhxdCiFHi`XFN2HXr}VBA$Lg_GnE~_A?cF3>oWT zGPOC(jL;98A5`|yx;S?u6PYl|KFvx~ZW9i!W@#&N<9$vNRhBAw=^u}N!9 zxpecQICFrRiMbes6Td{E5)k#R8#e)Qfm!t2pGNSn?frd+@rCxn&;~`1`;05Ripbx! z89xzF#Oh)Q%bEG;bT?~_xRP0rg|x#H!wdvIC5&#TstTA5QWsx&T0gu-2(!taM!3Jq zYpF00`%2ih_{%Hxqmk3f^()5vaQk7eZ55v^248{@Lh_iHPzvmZPooeGY*Ms}jitJ& zc&^5brG>S#c#WAxX`B=u(QJ_q;#M-Tuuo4))M$mBeaefu8iutbY84r7{+ty|Yvc+` z2%l6Sam&qRI?kuWUCEl;{2jHD06yNT!gARC?i#cwT?yhDQIwa_F*Y9a&jGZ955Rw{Dh}e)1t_B(MDvw7a@hC*mf& zv2rqYuhCY8czujJuxN{$h z=LS3EyD_g=E(3y0o(<1)b~swrEk%19ohCDymvfw0-J!5>wszM!`V=OGKA0jIa|EkL zCanP*8T)o3y<}wFzK25CA}C~(7rL<+UaY@>^YJ+@hS=?tk+s@tpxz*%i}cDJEJYKe@2g4 z=sY%|Q=4=hE}f7X#s~<$JvqItey+NBx2f5vL>Hu)RPKceVyCrql4HDc)ka231*>>H zcm16F;}1{jkoqo&0|^71v_1amOI}4c5M0O?T`0N?st22MRUT1e|M{v1K=d}@!Bs%_ zb~CzY0L9%I=hMHuPa1aJ73=+{@o=2T|2$vgp>IOjPI}fTW!b@dRP9xiL`@!ryw6%< zgC#zOo=Kmw5jT`g&HHrQpmP{E-PL$_`;DsO)6hO+E8i+)f~cBu7$(D(BpjpcC|y}o zY-~U+h(ckZ2k6A0RmGi=Sjcku!yX!VdpU0gg9mWDL>0%P1 zz;HVD=pgCO;IJLQPqlPDH03o%#qd5Pc1tpytB#1{mk7m#T&UZb?=q9j;bBS14C{Nc zBMXk&9vh+LgqrYb(v`7$6hjjmTSyw}=$$mN3zw~XYP2xJHQ-|eZfGh;$(8{!bO&@d?OX^ircGw$n=nn%TJ zigMnz;|f;k-h1E<6Ewjj5PYJw6D3{Mp{Y!>r{=gZ%`?wzP2RsSl$7FRDRx{#=v9@J z3KvgpwJjXeZ^c38SP4*xF=@hFe#U7(L@;_IiBjQZZ*BX8A`Wq>nMb?m?7OsF_~$RT z7r)NV$y{L-n36X|)UG8^+pm)cYYR{E?3E7U*2xIBcX3)I^gh&=l`eok^djh|4+Vri zv~5+-R*`b9*k)MeU@$0194ews{k1OhIF>puE=~<-ND+{8q4G>bN-C#>-vER66<3_e z&h(Rmo)YTJ+h#8)}& zov@0tQH`R9jni(mJy7%Np;?s=GU_==dUYcxm=zSAQ@lRgA=k5X=~Gv5pouU@nl*8h zWO`&I!bNtiY(4+vKMu9lS#)$5G7jqKmeh(yQLh&-4xnt>!8BEa-75gnF z_hw0*r6ikhaEGaUL1J(9E!dIxHqj-UEwXEwxxnBex)9_>QHms~tgsxS3Ip+RxsH}< zEck2%7*3M2u7J9Az0t~TM1C%7x1&XrL~_;g(UwMOMUVJ4#v!FZ8lzCt#x$(lx3!M! zmQxG`h7V-Hbat2KJ1005`=3PL6<5LEBpPXRtB)ct^<71n#II^V zwl-zgVrX4A1rr;-+qmaU=k?wGImSXVKj{kpHW3MoBZnM}hg5|yKY3SfUI!v}3QX~V0}vcBZLIWT=5h@+nxNL-d{5D;E5Y6)sR z5}id|wIUU| zx1^E!==FTfM`cGs>Z>Cfneg`&HpADH?|?kcwI)3-Z+uX0wE1;<)ml%{OPPq(na6b&&V(;0 zB`hnPc&e4A^7OxuEH;rlGFs!wX}A#J<|wf~pINxuO(Ifovk+IpEi~kYX3BxV9N>m) z34D2f-s~VqOO&Y5se(quX8LsND8Z7M>AcdGLS!i`4u(!;R5a+i7y2@R=JpdUP^Jju zLtqnBUM9~HNQ~Tm=1$ni223AEA#2x14Ix~@yGp|-ID|8G6C)!|0(y(h|lt?WUl-7IjC+Cm=QCn{4 zOft#=+Xx=0=Mgs$U-WW6Xo@Bu(%yXe(yqz)iVYK&G2*NJ0}9c4OQ%L2;WYEdpi0Sf zy4c|ymm@l9B=llm6VMecw~YgNXSZERa9}G+XLBi2r_Ny?v~q{=YNDncD*{Yg8!w7SC=n%B4E1E=Tl%=Jwd zY-#FQ;h^*dAM!(s+LF)IPcWeI6kU9KW8>!}(FIOnRqc<+%YZ9p>tS| za(8BU&PewCI8BsUVPpbK@4iSueyAn-V6%vYlu_U)s!l0zBV?VHVf~4TrQv>pg{4vn zg9HRg;w#EXj2MfGPMBOleRm#Oj_y7|guFI8JUv5t22FRaPW+MPbtyq1CMw&ZtPIH( z+?y|1hP)A=6{}#abEqoKOny2S9+z#NJiE5_S3jYB=EhmZrxT>Ca@B5=KhKp)$eV4Bo0XkEKb`GdmO zDw#}eBAm$eeJ{mXc62H<$q!mR3B7LimRR`78rERs-ZIP(c6z zUS9EcW_ZZKeTby>(JAy5Gaksl*zjuW@!jpgJi~rnm-pi6E(JdJS;v$L%Kvo+_#3-~V5d2<*)NiA4A(RrY_)>)+%C zJNy4(iNMbGU;6<$I#zMnZ7yH4dJV0{R;*3FBk!U{5~0zTwauDsu{j*FnC6R!HB0$0 zf%$^|U$41g%-q8G_`OZF@aiDm<3xyapTMuD{r9Lo-R{oUtd5ttzCAz`|IVko!6W!r z34dab#0V{C8Va57$4!*lswpGp@&4F%d;7=7(Ma64%Uu3oXx3x=hc6zrr4Fb+F)OU+SY}OLHs$#Y_ue$Mk2R)mD zi(MXw(St0w10kAD4_WyEj>P6H($gA{E?*=MMW(y2sGkFdrA2IFa|;`&GSg=l#>OBuU1H7V^Mv$Aiq0v7N_U z3f-(lqi;%n&%NI|a%l{o3M)!dalZiF`iW6WQXY2-#tH<3ii(le>&)c23uE2pd4KgP zmY>8zwI>^dYBV7E#Vv z>*zaOa$j5@(W)w=&^?kAH;duJ_H82mwA)ZypArTbA1AR!6VloF$UR%ICuWg1>`5~v z^c{$dcot?BH|??Ci(7k>!A2fpWHmE7Sw6f1i$1c7^KD{7k%yZiRNbPMKxgUOzMeR;Iw!Sxve1NEW>XI^@8&#Z<@DjP(}&`ZG~ZUThH;U~-lX9@s{6$v zFZQbvS=4!sgVuOaKNOR99971is;Vq1fja+y7wmKCCpfGT){vlS)mqik1)#ZV(*)cG zNr)v(rM8dxgLAFr9p*UwW?mb~@-OJdxbV5)v^q{N^~9Y`)PUQ7TBs zJ|ie^BxeEC9YxT;o@GzG_7G0r{y;!!^7>IGEXRUYAypa&oLKQGB%XEdfxrN>J$-yjyAnlyLl#+OE@_okrR?yXqGXklR_SbBQ zhGXB6p+v^HJ_T|&W?F?T0F#(uCqUc@py@*GPG&N(jd-g!$+f-9Fj8ODYWyrt=O7`$ zJxIFo9al&R#(36zl4fI}H1*t?o0}dzo|5$Gfz&LrXy6^nkI0{o-&37F@S~}yCmw(? z4qbrR5Y5A;dfzc_8$0w#U$bMA_z zKwV8jWEAe^nr0-?`nNvbo-tpDVULS(JZig4!wn?=mUv(AsS9p=Gb^??tpvz#Ek_ej zuRyD+8*zQkD)DX9$orm)|$=RvDv7bBHI&%4Os68-#Y zkv35f9#Foot-7+!mxcBg6TsO)?2r}V{K_jiFM|YKRFlqf`Msy9TpEk( ziL)til@&pBEcup#(b;&G;2UBN4OcCYShu5hZ(GS7>7F0PLEs!9bxPrJ^GcJ z8{Tk=tQqYi=$X)H8DJK`+ippew%6~AQX+YXkEydvp8VZJ>oilDHOqGb9dXit~c}L z-!4d@x_9@0N}FG`a;E`S!nwI3*#e!o7f5Q5_Sw29)R3p6VGbHWdsE9iC_~ z)mP3MQVyWi`njA+r|1tqEPEu>5st~%lS2Z=Vp67=(`Q}WTtz7rai;dii>E&{hGlAq z@f5pHZobaBvYY3CBT+L=CrX?Z5&UZ%vrY_*2Z`ff$ETGT_?W?|wjz9s;eS^>oXGX3 z#8D&;cS*(G3=OA}I3f6rcqX8vxWE?J<;=4_-YkVPozn&@_e8Z}BisyYWoPZc@X3=( zj(t5(Yg!dwM!^)VNA|!81};pT{=y85qFFYtHuc2a8^s%CRHG*TuFzwcpkZXD&05aC#bcAXF!!F14(26FnXZw#nT5@k&j zd>TVT*+HiMLCAQ2YUAcy8A$TjCXj>keh~<*rNdQP{oAfZv@Uh-ADzF4>$Naw6yQ7Y z2!*TKI2I^+DT`RYL7n#iv!msO3{^mGxsmmdBtwGDb|{stYR`SN6;{{R`~K!h+@&kB zV=SjJwAy4no8G^?t+hhi*)6*PkNc`6n56Zai2Y+WB2M{2A%%1?h2v6$+iMy7^`}YT zjd_u9>k?OML$YX%g{>WNmmzRfNS_(?Y0Qv#W0iv`RGVjbYb?8%ypS+*);eSOEr7(E zimgFwHe2zKgt-Is7}}T!Z^r63>?-m;s*cPJE_T8mB?oZ41C2Kyp6{T1F~KQ(00V;N zuAH2GZfOs0C>5=OI3q_wvoY!#yo4~=(mAh{E}BjPs)nH%^tV%{#P1a+Cui)NKLJxJ z!KM)lE%lbOWDpi4Xm~)JD56vms+D;nWkhNikjB#~_a37D>R&Fht&rnIS`5%JR?4&X z<}E1tVzESKDB;%Mh^tA#M4TXxZ@$CNB-m#9Z+GvlEvC;KTM2cePaP0ZFYm41Dk($d z^Mc}}2;r$6@iHOj`iRX$9YncsJnYxryF%AgYv7D}V-mvqLdm?~d*jitRmjTK!Ksv( zztQv*aZiOeQlGN!_*4pAesh$7;ACUmLKY;AvK$XXF0Gom*BH~*(TNz!w|KYU>|?vtk*!1 z75C4C5B2E(vH^|Jw!n=g!9Y*Q&=3j}a$#Wx_a(>S*T7kuMa5}qB#$OyC+uw^t33cx z$sXbV&W*i<9$`~&VKR`4cVUT7bR(xu!iJVi5=AGPoil_N>m%BRfwNLMhFYg%vRWM1 zm1IKZsrJRe^6Ab+YXm>_)|<&k;2ZZS4U))j3$KmC+mW`GYi04MqkUnlFNit3M%_8( zv8K;rKfJU;TRn*QjVJ|O%hfZxU4H5BCZtoiV2+O^NZN)|(m2vqZ%IInT$q~LoU>)s z*{J7Rksj3hwh)Yxm198~BSi0I*vE}C2Ot^niA)i_s;a4Y*31bq}b ztWP;GbV`Vb9I=2Lnk8im5tf#|bWUn|fK|NiNrW3_inedczF5865hfng?Ip`~kG>BQ z2%d*=kaSR<1dTxndn50)A3@4uy6sInY_!$S?T(jxf0O4(&&oN(o#LjyLQs6os zpI15|)C_R{xexCda31J-vVP6xN*)<^3JX`DKPv&2xJ;x*cO}4XRG6Z@A)%Qn9EoN< z(LHHgKn9`R5i}usZ|%@BF0jN4{oTC&`U~&4_lG4Z%&_QbkO3#4(jTOU&x7;hk$r5u zz_KJk$Ix-U=t80bLGZWc8PUoSn_a6=vX0i_-rlX-`!)`d)DQZR+aK}KDoBGI|Lr;?*%wmuLYz6vFp zZf{Zp`Z(Uv)`0#PSX{A%&8j&sST{l=84wUD`wdENP)4_-chZ3>I~wq8t4*hwR7pvK zU>vGq%^AFsIhefh%fi2!>gW}gzc=L z_&OxYZU?qe3Zy(UFq6!@+6_`gGGCULQ_ng^VWARi$n@7sKXa!?Ugbdwk3^aft1P181zyIAKHSQo6TaSgq$#c>zvw{h30BC;u6;d z`}IcUEr>~OG*3VMVAt!R73ZoQG8q%C`e>_SmV;-2Iyil3nxlWgz0KGCAqFyM0X-o; z*4m0l&+nzRM?ho~^QQw#8L^|=9eDXLw~4vb>1U&mJ9Dk2C$!g_7zBq&DE8R(*w=zw zmF?{Mw@Ilc{x>Hqf@LBDpC^>r~36h}^h2ha;U-IuVm zw5dxrss*qSb|E#W~f)3O70)Jj%kqo!Ul8JRHwLlh)t2HKB5RKS;mmcpa^Cn zQyT|m3ovitTqzEX(7sTVXW8hv+aLSjI|TY8yik?`T&|#J+uF zbF1U}L!HO-V>}Ye^F@-}har7A={+r_^f8~W>xJj!kY55spMQ+Z2q;mBhwYL-SEhMR~uM&e<%9I1T(je>_PAzIg3D0vjW)8iThUs@v!E|exN((8^C-*2-h@N z$aueQt?y2`41S-QBbd&c@wdxRQWnMbrwEJZI9H1}-M)o*A!nc~CVVr`Dy$eUM8_+} zGQg~Icv`^DWabJqu$uR@7pIHwPj4djjTd2doFgVtqwO&E78^e<`m%XFG3!wzuYXn9 zogNeH=deRcv3zA?JZey9ylL&tdUY;&NWU3$LpG4;$R8XeDih())>je_R16&U)jPM$ zAmXW|1lT!QKCP1Gt-PU|)uKSsHm)*_g)raCFR5X;Dk7cb+=~-H9+}TreE|0DVJ{IX zWhyQp-x305+ZAc}-bJCidBSiW{yu7R>PvtCr=Udv_!w5*SQbyf)1j{^ElbD*_?j%TPp;-Sk_=le%;nwf)}1&yci~+5Ar(Lg z#wQKO;Q(sxm}>PjvF<;AgLpe4B4%o+J*RKiy*VE-7@q%bG)?t;X#Ww~xu#Mw2(<-x zRhx814#CL-VuK9y1v$UCjGMpavfvB-PLeqV2+(i9%~_lwrfhm8okDGmHk%%r`asF`9XMr!BjJ6|jIDOH;+AK{_K-Y0 zl#FpMPyXxbLmF?t=}0PHvG)n&ev=$txE{-KfpfV6&zlow-Z+%)sxme&XctRjvT@tQ zbd|K>z@HiKXuk$`&#!m_hzY%j21Muc7>}b0gFq~;v&j2uJBK?(PjI3te8qFGEx?c| z9AG5bK(-=><lIM73KzY{+_wCc=bR4~>BXSPaKip%^gejJu7AUi2rZfwlY@m*_*H z1>#nM=pesPso@@c73;5h6E2w=e5#ghH+M6ile6B!Qwj|Bq*$=>qC-fZB_Kni(X-$v zf8uqveQ3x@>05(f6Krkq$-bR1CSA5yXg0`OuE3Z=vSoc4S!#eMGIjC8{? z(KvSbwRD+fq_r0#aXWu7L_8N#Pz@sU>L>z)hf)Q)PO@TpSu)k@A4QORlvPj|fMq+% z$tB^=uSl8=4iyhIn`y_6;aiM)o(5ovTr#tyfF|;syhLTTFy~bEPlb?t-o=&7*mKQx zODrIlhq>s;!`~O<0E1}Z&d>I9Xb?~n@`)7N2@(Bt{VM(~|5>P)iZ-j{;poF`lk2VkAQnP`Gx z14dm}u_+4wG*=}OynQ+YB}t+xxq+X@?2TEmzDNBGyh;cZ5Lf0BInVGm!$?Dmde0{S zzqc`CWlki8R8~lVE|m5?OP-DMaBE z`w9%{eMl$!yd|r+-q3JA&ZsTzeCpx}zGEoK*m;&dE z_d(8s&_a$Cg3Q#ez(N%nT3-He%Q_^U3S`ZS&Xlx`?4{!1iGsHJ;je!dJ`*;`B=X)^ z2(GWzSqExeZf;fpBw%y2BwMVR8ae3g#p&r<&Ee3b3ITl!SIBh!NuC`?x8o%uS=gUF z5F`T8)>nh_$ow{#P@rg$r~8=`;^8WZQfSVYqghylGR5F25u&14`IgjS)kVLXud}wh zilRW$nZNa5DC!ic62pfqdE!F;tIyhtycvlrzhx4{a?BN4Tq>QIIegnC*q@2dDl2!VhEr1Q>a{wr~p*B z52O}7GtH1gfN)<|&D?4eup?JRgkOknsk~$k%X}MNcqy$9u_SbkU&{=~6g9gITJzpkvTgK!xf49dg z_leLAA-0&};7;qV!lF}UFxWvzrNbdSlNyC$bF}?bb7`(*@ZtBwvAOazHedmnzSuZ}-;6`!ag)SV?Xep6p>|wm&%`=u#PXNorDWFQ) zK}?HRQS9?|CUPZ1XOv&K_imCMGpB0M)ZA3pu=@Ia*>m*@oN zc6cr-z~(#!EPU9uLt0+{vc0OZ>nH!K4eO{5_~m5LeE{2$bxR-jM41$aLxh7xjNkit z#_Iy(5>d{E=dWO*Hnu_LmNsM4;~=`q2ix+!({wi)rzRfM=>F6<&cUslL;G>0rnZHE zI?AKl1G&98gT%=5G#}Y(Ly=Otw$Hp-LNn?hLGcP)Dg*R!2_s(_k`|iW{t3UeF_jLh zGpvB{D)Eghh0H6WN2z@?iZCEMba09u8dcn|!h@;ftUTP-Vrf-(1u+I*H*Uksq`X_Y zGUFE6q^CiyjFq&@NS(LK)u>0m7{g~geyG>6PeiVizq|pI%@~6s5xfy7WdZ!YJ|KHN z!Ri8i#utpGy2_cSqcgp{9|J>P#I5s3nR@!mq%SeeRm4wYwjNK%Eyk>SQQ3bA7i%H= zo)CyP#&|&awgrNXUIl0GlwfLtd1ugk*fi1+{@gk2;b+Ye=uT$hrce$B&NRd4%9!)0 zdeu_0a7ub^Zk(GX?O|I$tE@eVzur%UP0i&2U|EHxFUh$E9&Q;lG@`^es-Q6WS*JQh z%aA?q&-kK^8iy*#gepS`mGI|Tn$WcIvV}L-1nW3fDGdpS?SV?SGEcEJ;wI?igf?#f zY|=%Lg^UmV4G7tFGnbLahguJ>;l&pYtWl0oB<(tD59ZmI>Vm+hnGALvFaGpOY$43w zi$ei&YYMovLfRQh-at29gq_jntUsZCtzs>&TErIuNW6a_my}L$_F9@si8LXtK)40s_sYI8 zuxdopUQOPix(i`v1kmkOnU)2CH8k|V@^5|1gh2NewK}#BnftN+(KP?*!R!UbJOJ(U z`C1BuTIUj(^nTzZ)tcsx9AZ6;_ZGXu+*jwdK0v<9R4$xC3IkU}TN6IEL;0br{~E zg4o-p3-)B4DpNhoc5?;ha>-g&_8c-WNo)@?ctbdZ03=_J6;rCfE;x#7vG67?c^Rgo zP~ecdjkz=6X)srM`x}JLQK^OfF?0WUzn^8tm#01!ETcIWXPO64Va(Vjy3ONeZ^yD+ zPcT4-yqpYp)y!QJBH(k){8MwJo-@z3d&d+<(4}^ISlkvQx)1;h4dwojyD5S2rjAoo ze4~b?r!!$Y&?Je+){rlb@&MJdT42VHW2*m4#PViFfPguYf>X0ffBWhtx zKtQf1Z^<>SIMgHVjTxM^KzBJ3%s0lP;?j;_Fu~YJfZ6E*n6mQ99TZ9AyF6DGo{N@$xl#goK};e#E;9^@|) zAPqO}kR(&&79_)iA20c4{O*TPI>eqE8xp;ET)0Wt2ozx?1svmIkwzIP3v=HAj?<)$1`0=gHCjc_O@7{W`Vi!+!=; zR=R5Ls%HMidWgXa-#?r8))5SkJ}vsTuf$h;`Ljh@-$1I$&!SR|F=^ULelKPI?~l(1 z#J;Z=gd;?fW_BRZ&B|6t`Lqg6(&zoD3vs6hor)Vi)ZAqX3V2*~rDb63^9ex^)DzjY zwNX(2>nCJXo1D)0`^8n)t?ElHY30V+=$(%5!_yC~_@f7;M!ehitu4AfJi~+20rH1RZA0w4Jf@%s{RFnQqr}Ae$rF13xEIKd$@S2`f@6BO zZ!_=A!@oAnm&e}1tEkV_bVLFktSwzg!xX1%_cV<_I_yX=i-Hho*|y1qvmTDL_N%#6fPJ!U^qJkmAC zTa-id#B=jRwoza%nu4F>l2X+VRb3pdzm@vXrbaZqe+>jrSDccNklS>&mU;^tnq@7t zJ-Zw`OE5d?;3!Cc%^2qFMUjJrQz;71wi%!`{?)g)*H+AtSax6Xb(2WiL6N+?P5b3p z?OD!wyFhiL7U?_Ozx=~JmBHgZuXN% zZD>PM*6-mH={S^b7W9kFagO3GZVHN58f)b>pU_9i*vakzkMT%NtIfmLC4FIuyq?$e zx}IPoE8Oy)wLB3|&tVi>F+A=4m+`5e1k8Q`4Bk(}*nl2pmUk#w2Z^U9;hY$I@N(Aj zymgb}j3gI(yHm`H4C>%Hmi?*DPo3d*l!op&=vD{6n+kI0y@es`%3s-yvwZ+j4O$(2 z*puxJu0M|GMnk00%)+fG4U3Pt+ZDCXV z{#JbNS0o+seWyq@`_u#jec$|cpqI=4Mzj7$kr+-UHn#uS%l7|`UHgB%5RLHvz7XyI zaR=IeQ*AK+UA6r$7K`&=EEWgje{9!?|GQm_2PgcOfH)Zc#jbJu=XQ;Q;eWGhoc~q3 z#=-EP*tLJM=V1Dmyg2^N`f;%QAGT{8%>PBZ#$y$y)#b4BN^PvS`X{%@EA?iK%H?O* zpKDzYJTRAoEM-Bhe2IB9S>(f^&-a|YgxK*t`9z~3-Tqu6&KtaWgDzmF`< z&ojFhrGq&{JvFJ?TlNnqPxQnLLz#)1-mjZ;-!ifm#i}|#?HawEe>yy#&ZzanL5Sr- z32Xe^9}w;Idbq3Sphhs{&Lu6g7O^D>7cUT4s_pQ)eufbyw zxvTSsULDtO+g=**BGBJH>yC0*2eI7xvAxUy>wUR@>?ZY~P8UQwD8VUadd9uy=%hbI z@@6+!Hi}70BhP8G0nh6BHhcJU?dqCaA!bpJe8Vx)BTq8FFGP^N#L5oQ3Jbj3cREa} z;Qx8sEN)4x^c$V4F86<^(q9bx{YTG(!;H*=)K*@g?hj$IzI*hKK}0d-+h^_`+*2b+ zTG^i=%0)l%48?G!QRC7-4r>a@Y1}@XMbN+)WhoiL&9-@)xC5o8!&zg*@qFxBhcNNy zMkUGTavvoQ$NFy55t3Dy)6G8J-{S`_Xpk55#d$SO=EJ>k-=@e_dz^)OoGF1Ck4)Cj zI9=th)>;2dKDr2QOpVo$4zm3tKoMNtnTqO&BxbgduL>?H`k`b+0Y{c{R>IKB8Q;Hn zTY5h$`?I^L1OZIPX>6t-d_#fg-V+D6oY#IWIPT5_WNA#2;GGnbzu4JEf!U0*d_k)x z$%sv1Jb_V3ROL{W`Z%`?Y}8gU1BE*4nS1t_3wI`Js)X*m9!Rhz8NZtN=8uTwX_Sbg z@Ph_8<)F(+tJ2`MKia(xpWsi^Y3e7G4w=0W-9B1J<$f{b5Q>CAS$=KCn{;OyGfg0o zMW@1#kCs8>l2O>hf5q_2_}f>=N{St4tO!?Olbt~iZ)Fz`>E0G1^(K)z`>ty~B!}qK z*~Vnbn4fuLwIUtHMyerM3UWrrNFu*n@^O6jPZRe;1S`M(7`83JufuLv9H9$pU4d|C z2wzdUFAZ36rSF0Es|Vnbg9zC(rnonuGDbUePC%|&C+Lv2KvI(5^zViLa)rcKxfc{9 z{l9p*tJq4KwmsBlW@hFw+sn+%%*@Qp%uHjCnVFe+Ok=i}$IQ&klrK@DB!Av5{ohuU zlRl_Ymr8dZbk|i+H4Jr?_NTLPIgKeYg$qXkKyyIRW8*w2SG;k{H}Fse$R!w!)2>t4ntIb=tUfP%*O?3RVXgtpkTzvCn@6BV$}h9wS5V>;ZKC-_|n zPb&>_T1xv*1I7M9eD0Gtd=^OC_H9!i1hWGNN8^H>Y~!-r_22wb3;aHl?kslthe)5jS6eH3Hi7LAilQS9kA+2K;=S=p5#&$TSz^b>o)Ra z&W;^y0{Pmn#kRL|o5lsT7%cl{5VmFkOMPaI$b`$Fv^ezo_6xBkNijck2V&q0=dGPy ztQsEw_`RC;K;Q&n0Uo4Va&7FAYgFUSAYD%S>!s370umP)C?@T;GiqokY!{|e_;sep z)^4FzyNc~5?R}cuC0Fx|m?r)*HPvcdjdRd9)fPDZtVQav`|e~~KM{$2^=}GCSo}5f zq-mc0Q>61pQ|ZjjyVwuvazeQFjq)FQFrvRyqVc*cyOfCOvmUZ3*Kp(@hdd}=g!-=$t?jpT=U)RCLsfxJ^6jXW3j7ukxgib})l(ZSN1iFB0le!f1$#yCs*1DORBJ&-4vQZN?w}!gN5`LBse|lGA%l662`R^O86@OOLg*N zJpF{}<~d`vhS*5%DFz99!*pG!c)1N`61$qG zuXyf_&Hl`X-K))N1x<=N5{tBx5&Nc1XL;)Is)L-0n_p%4qxDHlsJ7$1e%_#yKXyix z$&K_c@x03J%RxZgS|XZ1060-f*-sd`lRVL@AO`YGbFPG)nmf;#QD8kVYd>$sVpWc8 zAkidijqQgzjfm82yYP738(2$I_Hz{QWN>KtgMZpgGT5_QAsxUMf?>NZS4XQBAS3ZAJbQfDUMTZOGt@p zjB7FVpu-?VGOcHWC{@!6wY`WBttO3$mACbE%5CGSU0FNr!5&HYHLPWmCwG z57_mc;b)zNO8AEjH4Plk7_pyL_N*_=Ua=UpFdpqQb?h z;n<)j(5_Baa_M!MPgC3>M0X2@%Ty`5qRKJ_bV<^th}0}PV9%mOr7Rg|)E;`@-5o?i z;4&-4YRP16vcvxQMJfUc2Ou(^d>@NHtfOe8LZG4@dL85A{Tm{xVn(4cbikZDL_fWp z3@BZKm^VgjV;Ac}rpVaA#=l(cQLy%7yS?{Ta`d^>FspA4P3=+@nSKH%5Z%_P7XP*| z)TSZw59e^LGZi9ojLw#iaM+oCBB4960p5&98xS7&KmCU6>JacPEtFD5G{L-6R0oEp z`|=)*$M~e=_5c-ELWfRCIKbn)qESl8tNV}1u_}VZtc1DJr^A*x%?GPn@%cR8X$T(l z_$0eSnZs6tMsL;sFe!H$D5=_#N(Py^FX6KVZ>G5*(&SeNb45zoz+6C@|Hhb5$0@qD zZ@gxQezbWtnJPIOC9K9mgy4#;bP31wu*;;hw-TCdX}h#hdfE6<#auW0ZIZt(yGoYs zE$=IosP%aJTSV}I^=9r3f zH2auc;x5nuW8b*sSfJ@j=x0C-d0s1TnvEX4q*aF#bQ@ZQ1p&Ba!5Ct`+ax#qlBUzO8Mqb2;A^IKUnKIBlC5fYa6;M1yA+!$y9yd8!a zSF*7@6F-v;v3a9jRYO{|QduL?lJHP24O6huCyvCVfe%zQrZ96#ueCE={hmv4kHzOW z7Z=3OY2~|yOL1(=0WtO9TgL(}xoS;Znry;=p{QLWY3*ZTvfy!xHyP- z`ay9=5HJ^p8;XV05k>5@DgU2v=vHM9VRQCTa>#I#jN`Ofj|_rvPGK12;a0h?@vC$ zVF=j#Yqh}+x)VS9nQDL;Ymm{z-S$f?Lys~u!vjiYsOVR1s_=c)_`g2W@l*40Ik9%` zNAk&I@88M_U*dMG`Gfn+KvyiJ5uwWMg!T^xHcqvPc$tpDsw_n5ut($D#=J9p4sS^# z82ZjXHY&jh`s!`xe!1aOr`iqpR6!wL(j$are2h+Q58dTNdne8&+OQ@cD$1pW^h_QM zuKGBa)eT#d!;2?S+e`}n9t1UqJ|xulWcx)$rDY_c!l>LgeH~%745~63#&l9Kx0=xU zd;I_lFYIfhlTbzrYKbD<`<2-tpyz<)j^8NQJD{`nG8DMZ7vZC&Tl;F^tpH;_bXKHe zeMKF6Rrg{7YUCb~+q9lZUHzwz1xv8&jNP=28Ol+_@?=Fp+6I{5@`;}n;Z?dvD9&5{ z_&#VS=y?G=l8t}_R9{mQX$X^9j&qzVL_`f=j7H<7XMh^8jParBiQYSJSxp6;(DorP zAke?e&Xk_Gz9Xx6_jK8#w}-9H7YS%)zH=^XXslk( zFz-w$Zy%Lf*AX9om>CLK#b{{MZ%R9amidoj96Z66`@JR3IZ2Qf`m^B21`rQ;Z5P!N zbCT+4C_+dNsJ->|RT`$>Vd zJ}v!X%v}>qpa#f7=`usOd=@|xa49(VtdRw7M(y}bEZ|?t`o`wh7JPJV_PNQW0)l1k zBNTMA$}uJ~ozrauD;fzah8$U^GB%dQV?7O&=m0g2V!DXfnHnvU^-_^OCBi?$tPDj3 zJ?cUz-vp%CZLL23BG~+aHj@M0I72>|>u_p%JeUlHZm%i2r*MjUXZEApb^bo*IK;rJy@S+;#=Ay! z9L&t8Fx7q!I_ri%>L923@?Z>%_>WaCp;^4|7KTkIwS$C$x8HKnq&?(k7R+rBttVb} zE|2OF-GL&O5Wqkb+Yo)XuN9-%Vb$r*swfq>vl5l-ZU8NmjHoUHfW$nVc-t;iwt!>k!Fc z`;7u&%0Eva`XVN9XB{I`GRJx2@!&7dyfA$ZU$Udhuk-0smxL(pj?+N<( zBCm`xIH3?*#Pq-4GBS=0yFQy<=fPH|7@j(_c|5P~+~mw(5w1UN)!Te5C`6~Pp4DFQ*+Cu7G5Ap< z4>>}NOBIYfve@_?Uw~-@=sN&4Lvmw~*7vfAo?_U4J5Q&OmI`S z*ZunYj!#@fFq``v_wJvDA$vzI)lxnx1tEQYzTM6xk#${0_jp9Lr;^dB&;c{kHWhF2 z7`F0H`{gF9hZ#(`7s=9^1M9W^)s=qp#XsB4#-OoHmx0_q0ZDhz!yYimO6?q=U>cZn zg?zp|+~M5+`4Nm6I|>~QRSs=Cg-k5?^=|x0ypr$txIVKSVd1lf%XWSgIr1y;{`*D1 zkL{nN^naZ41uz3R|7R=P{{u??-%dXNZz4nP_BPlk4^u(9;ZW+{!=Dg z|EC^v0sepJG3S5Of2RaXVtR#{q_MHANKc8pW91E{a*@#fKR`d9%UENz#H-tc`1t+7RvV555esAL>m?S z*4K~x?8|D-?Ah<$*YepN6iCS&x#5=2w`@Vb_oefF4`Z4#Cly7N^)xIhVYzxJAkH?A z2UvnIjV*QbcLNpnpZJqWiGV<)3%x(D6WK9<`iuO)#IMh5KH0QXRfQ@K4$sWX%WB7a z8S$~~p%SuT-I}y~_EK8oLKy_=pY?qK{CYR1UNyD{^cGvliQqHr-q=>10Ly;$o0u5Q zNeG5U{_7%r>awU3+HhlS)q(zDLn@2$OZx z?TOF93juBBs4P-p(h>*HuAg1__+U9?C-4h34#ZP~Hm1n@q0Xucb%w8tscr9{t|LOa z0AYEJOpTTGTyGO`JCmFu>z|?W*#$o>(8!T` zXtTc()>)0cmz2i6SuIT}oK+r7?o5zzu=?q_VexNneyRwJGgxwiF5VeK?(t4|(79^9 zG3&icuLnH)Rz?juGL40v#nt_=W$c~(Vc1s8r?+gAg^hU?z@eqJ^3AWS#EU;Il1@1_qE6J$f(dvCIAnZ2^Ui0oku@> z&M*xNdG^!|ja5n1YjGm_hLQlhsarcg)NE#NW9pOYa(27w=OR!WJ4RH4$n~)st^CC6 z)l3bI@r9#o`-VJxiQnNU<%?}h4GT@m(a!sZ+9cVYFuU-5HZ@NaRyXkE@myo>?oI3df1A0f|*) zq4G}u9h^rFmFm2U!kLTCxOE`PujngR+ej^G=hxgu-5of;`$YoS2j=ATEI+Qb3CQ-f zL*pIe`CoVhc9_yrh=fcCQ%L}Sf3K+0(U_+(;{y)A6sok|gq%~@O0s+GW-Q=smys_K zA|i&b56tts_SpvI2hA5%Q2UW1y8{jmSXjyOk1h;6)&!mrL1mc(LBKpi#jpTA}Z(pX&^zNnj;v*BE4m>nZl6^rRZqb$luNO$*Op zSXA(AeZ5Zk^HT?iw>YbRlq|hc=Qfk>ANr3l&f@Yz;_I~5GwsKO7t+IR?48J1;J5cT zvk~M&n22^MI`>(w@bcrEGfe z*=qxT{s!PmgnKFDp?6tuX*!!74lOuoA)`}L2VCPuG)|`kKEkM_2O@}7K8~qvu&z0E zs3fC9PaY0qA_lX^Xol2C?ZYQd?Fw!XAnm4z$?>rXy zbh&m)W{&$OO)Qz;uqHCvh5Ez(M1G`pdb+&bVNiOeNwv3*RllYIu%%g*hlF+ew0wUx zJzz2sB$W=0{;>x_ z$t_!<2;n{OP;#bICXN8cObIRvN-;DR!==Z$5R;Rz3(Tf+WlcYDj2tc!XU)@2*5ghy zfFsOqRCm5XpL3bcD}-cPTJECKJn4`&4Af=J9OTYgb1ax%If(wQ8S@_3toI8=k;JwJ zieuVuk1DFQQ;7bz3cM?1gBW5%-1K?1^pdfJ)^tZy9E$kQ0~1VR?ikM?yt8@lu%B#Y zFb}Py@A}RgMvn9!;x3fM9gxPt*LR0C*ehi8&LUbM!XWDa`|$d77;c5NQHNvrKASyN za0a$CgX&Z07drVrXfw5?1N%QVynl2DOTNIJ8I`ydmDSyEY$0_-|^8Vu947E;_} zgoc7awSzNdO^tTgE%WZEJAH;nG0$JOf89JcL=JB(7gi77M%fQqPNjpECW_z)r`i-I zHSm*AqO}XbQg=AQHOqD_J|#|>X@mLI`?EA-O9y$mL|fQkus2J2om-TWMTP!a!AAL^1aSw!CWzQM}W)wv2ZiUnJ}_WW(J>~M|)tf z0SOQ;u+bKfEwmFlr%E<=M>#*c8m9a*OhxAMB1&zHZo(ROT?ZwE`Ir$Vw8`#{@;kzk z8^#1DLuj8<;5=!VWSMOX52n*216ElkME(p_^e#ddx~;8D#zGx52I38Hf0K{z?V89lv<1oAEA)J;hQ0@%%LCwj`nH-* zp7dO!h6D~Ame93`*=8{8f#lR$K!PI_B2zlq z`qe=}FSB7>V19j;LtCI`8s^AIKfaCIWddAqtht0l$%RX9K?#6VSrphRz4$e56CySPW(HQ zZg}74U;tP)K7($72{^?GqaiLcQt!Ti42x2xf$Rx=e2x=EAyb$R5m?^JCO@2%9Dt>Y zNXT;J2Ui09brvOgNY2W`L9-LC17YVQ3SKQuzhN%{tt&~O<_Q~*0)?ILa@>H`i0iE- zz{=5{OtZv{@JBN3SL5K%F&A6V=sR{I0X}xNTSyA@M~qfo)u=&OrC~TS_T?OG&~|>? zFuof9?us?!=u)?c>izZX;Z|X<-{h6#n~%w|3h!YGm=6VpV0}v6F@6p{%FgAI$)HFA zhXjW^DoEs^A0Fg&hB8E_DwA4reQbns6{5*vN@*zi{Rm{xXlW*Yr)vG+90*;GQx5jv zBfQPQ!=w5NiA5O-PuzZ<<3K6N4oa_C>D)CH?zYbkr_-S~N7ry`*HE5WvKtGu_{a{2 zDT^{_uyUiNPgOYB&7@e%OnJkV*y!}894!l*ELIx6lO;f@Nqbp}zqV%oHpVD=rIB@x z(j`lYAG8ob=p~2^kQ;Wh)<&@NdBg+bhUQF@WgC91HPZgG!j~dj3ZYjxlyixw2C4QZrd7^e^QV0_dZngf20(Fe0aQPR zw#|&t?1dR@Y;2)~z%6llZ8E;cBg~*I$c$(kNr}m&y9`mlxR2Pz>|ePdNE)OXH{D|? zU>|l55*)W~Az!8Bc~x3NYlaD&ZEAmqtCy{w6(oSWm6tdmm&w7e@8W}|x>0W+xC%7= zT+=&3WHn**IR{H$F`)R0w$9=$HqpU3witQd-OY^Y`N7}?T-*<-Dlge{@)B5%7>QXQ zO#{aD*SPoc(8ruPr8Sx#XlG0Co(D^N@LoR`~)_PJ=5X6D=ru`0O7K$-98TZuSeBz9)Cm~4`2f?ceODy+Lr9wBjd??#PyBa|C? ze!>2x?9`&wfR-Vna<8t7B6|jFGw`eK0%Hg3zR*F`tyBl^nrj~N2-d62s;UFk?8Owp zS)rFS*4J7R>=TK_N4O~)<2`QT?*yNq*`#-oF{KI<~ zB!sZB=)|U0X`zkCAM^Bwv-;zPOTt!Yl2J0JT?ncapvFc+O_zZ0kUhdQ_`{sz8f?@+wbHxrUurKxdbd2qI^9Li>GEkMOlPG+0hwAL%Blq?Zk!aWVYy( zS7+p86=g1?K693^HZbZv^7ymc_2rKG!~S)X^ZJFwSfTvjjfHqSUKq|^2nQ41h1Z8b zPTd^wBnB}9L7j(Af_tt-XdB-FFT_ULWiteBe|{hDW?}CY^3+f>UC7t#+r@Lp0tVTCJFel&jSTdKN(VS`=VlKQPhX_BvYX;3KJbtXmRQlx-G{%{Z#3YfsRf$&{$dC6mVN{eL0=)wF#ybr zINSxGgYDi;7OdA2AG|p4Uue^42awL{4;-`aca~PV?H2jsCcFcYT-VocFq+Q(#yt{p zLq52c5X~scLvQN9SX15@R7KL8>?rf2OJWo9hdKOh@+&jdnl1TL*=n{>&8?kCaThE6 zYu2I2eDQvLn_KXKZ2GHU3I0ADQaNhwsD;6QSv24qi@W}lES+(jaZ!`HQxDB+kN;f<{??duwU=rgAQft7B-~M{#{1R(muvVG%mW{;G z3$4?tcaNHu&DrkGp{{}x+<)rHbieYw_IzHS6)im6jE=aE_0ViW$^*mfW@Gzv=JCA0 ze@d4Qr*WBLkmDvAhcSgKW`o(v^<(AhwF66pLeO%1tu*~9a>PVMo>W3_WS8ji3j<`s z_8rEbFdPJLYXEe&#rKoe(Bv)9QSkC#E08%~uZk~6x|`l5Tx?0q?BD=gh$kB`due{^ ztRg_<{=`+iKBHK~lV3)+j^#CT0he%D-fh(rYRPRKW0ZvPiLAUezBgpSut=|VhqADk zKE17``uq+Vh>>N3<5iiy%iT@>`(KcZNkaqazkW1xbs&o-9Ei}>VSS&X<0cnP`MfyY z#rx+MwBco~xi(zFFv<Ft2+H~Ni(7!`Sm#eC z(ZnF89Y_&YRYfM6p9gofk*?w$fdQ#7_fG6FoDFGo^p-;9wZE zoog`1H(ozYC9a#vAU-C5ep<6Cl&vU@8u{2$qSP_lSv}KC8)GA6BEj_HKQ6+$T z?%&1#$`yQ4pm--we%IzZ^b!srK>%wv@-e#HPN5{iT#rrG4hP2- zXX4_g>B`)`lqIM=*utiT%Su3g6I$n0G>G2n*UA-zFsdk4AN|__SK+YD5n&#=t{qR<~)}_ZAPx{kYLr)(G_a>U`!Z$uf03? z7MZ9lz0XxW`8uy$(=)Q=J>px5X2&H@H1w--KK+g> zL-=mQ@8#<~P|)E!R3PDbDIZ#$Eb~|~+ve?Z*u04N8$0;j*zF(Gn)`p$JOkJPZ2z;B z`TuoM`2RQSbNtt$@PA@zZnl47YQVqE`sn|i^>ZM}{wW~9|H=B?tp7gibF=?P*8gww z|4*?#H~YWC`t1K2n&Y4H`loFWZm$2^tk3zM{h_IDq8_J9z;V6RWD{_apWEbi#@g6y ze0)l(*twz66Vn%8Dk;(n^}o9Q__iXZqT#s7t=o^gP?F-9$c!#OchdLkYQfsCKA-0o zWUbFzc4y6jt!GV z)d{Sd;;cVE&xyDEo;~^n*wpfG*5uYYa%SaXei@rI-PpX{c;68s~yKeIzCnrY*01s|OqwCV$zn z!i(RtT9;)9y$N+D5cB-l%!p7X z#C4A3w@O*F5Y9iGEr_EYt6X|BE^zg6X`TU?Izj;}V7RzsBt-4U-t3e=R#u+x=*VMe z6E1Px9V5tc9nT{C`^0%4;w-Fu8$|sCpcHw6=Yv@!yx&IGV4JAPUu#2*mEP^|HtQ7b zdgkJI;d8pM;^I$%YMEALaZR8X7m19B{xQxlJ(j-GMD_wd|Oy6fKD z$E-HtGkw`(vFY*_KrZ`S!e)F!Xdsckv}kWZ5#tf;nB@4p3UwyW>jeIGe62X9yLK$F z=_~0rp>h+$J^sn7K{cUI^+q};4O#?|$T~vhN%||UuoavaJPZ-M9<4ksa86vbha}zT z0s{qvYH5M0C8BpARJ1oN;J}I(6{-cJVADNS=srmH+{#h8<1;lN0^8Cvm%cbO3k1%? zz5@b0%mW^Dj`W0NfRo{N)>Gb41kPikWRpDa!wHk!mloo@q zLfr2k*Wa`KuM2V#y941~i$fR|%&1W-ZCQLyLsXipn4W}(Y?ch}3G%9$En7GU%t-{B zS1^N4_9tQa^W2=TEeVWMA?Odv+eqehA7OC+n-#9Ri<6D|(mO^vFS2-uVfR zIG@$xyn`pz)+TJjZ)3IO_@!iqr@<3!mPpA;S^=LH&pB{6IH^IeX?0;FEjz;m|4vq~mVqh&NUu?vS=l?5@s-=tG}!gLu3S@2|I?jCSZUACZBZy@|wjJ&4cUV-HS&-A3Hf$^1SwHd9AQ zPYgZWd+CtT^yEHim<01b^(R8Xg$Nvz^Z>v|>3$*%&Z(&mlQ>Jgmw$_ z5VC3`FtkrOno^X5+c>YR*no1m`Jf>C>BSNFxvJn?C3veoo5sC1VIrg?H;A(MKlKdX#n1QRPdUye zrWsYTFEfM%Qe-+y$S&Lb(|_1NwUd!tMEiMwdsmVcmVxm$z#=Wg2w^481+rE9pl<{v zFKlJbI<^_E6P2MQ$>nIF;Kq_AfMz?C*UznSqf#G(Jf_bSCZo#mMZuAh!Z}JCwj?Ec zsJ%`1;Xl(xX!ZP%E#-2V%A*Uh^QQKq6Mv=Z^m$ezZz-OeCM=luWmc}c~l7hGR^BO>>u(l%{oO0ft(dA&AM z4b~;L6J^2}S9~;J_r($Ryq^ob0Eq&+0Dk|{f_u;L@$AOUa*PDC?=ewvl18qu5-VMr z8acigOjWWG**Oa}ZRR}>-cS#HiPLkKq`>#Crahh=*=^S20TZ3cVKSaGHb!N6mr}O* zfnmbGUIgK*xv23ZOOIv_9ma%rCoCE|LPI>#vHkX!EqW6KhM#m@K>(_cR<&#>?(st! zz6^g;@<5kP4gKeE2OUT|%sTHg0rAzlbFV16qxq(~e@JQ!X4`gA>=D0GB@{W>QtYD* z&0ogR3F`IC!qI^r>6G)S`SVh?kXJeS4c8TrC(pAB&m=EMa9Rv2Y=^i*{%EL098u4B zCWBN(+u#LMN$D=Mt~OH6s*N3p$ay_!8~_in{8n>W;Os2(Z?`-L>V;*;AK`S5o zTW`RtdaY1e!S8#pHr1x10_{u~H0ZBFyrqes$tkN8lkChg2uqd03BWg5c zu?`Qp>CW_T7j`C3ewZ0|lUV*T%mTguy}lg7Hke71k{OKA69ohF8*vN>+wjU5AK$9L zB0ii=X9n())lt&)iB1buO<`(JI(KAC+OP;Da-t72Pn%h3Q>Pbm5LK47B}!I9jkw~~ z$<%0LX%>S?Y4H|66gUJeJ=FT@bfd6oc^mFqD-l+={aFVQ3?0J-_c^A+l+))3`ocrq zzb6-q<&f)o7lP*e>o1|^kx%EGE=QEgF7s{VdO58j2x)fvcC{h2FYJN8y3&BqgG(PmgByx9DXX#Nhyf? zMp2{fX{l9QRc{imajv}yq{vwi^QO%*o(KFXmCT^EWciB2{74iei!lO*^rLS#N~0LN zkcMlWbJyvCu3R*zR3hGJFeD=>I8H!BhJTEETJO_d)2P6R$xDP(L3XZLD1(WKY2jB0 znjQ1`aXib-d?}lX{%>Q3$1r4U@>Vg`J{WNGON>kx_UP`Ivo@v;Ms(V zJAWI|Azk_mQAVCch?$n~f)r)qt_bxlVS77fj-(pmgR|g^6J)kl@g~<@*25EfF!nOo zB~B=N!d~G2{szCI1YG3*^?|vEHpqt?R>o(xta}YO^aw)b50@i+J>kKKK)_*Z0oq{w zl}D=qf#Xz)DJAT^ysudw9BZ+a$?iZUAN`MMIvVlLs!b^vp$=9G@+{O5B#$}*ypkh3gu;&% zOwmoFHgbN9lNWVbL0mo!g(-M9%S98ad_J)@cb7##sSzj|emA(4CB9iDpJNBi@C=hq z0XLy*5tEUF!yA|XX;LMm{m zcqmTsF0PxExDI^l9Zzj#4k%yQ=a=yuFPNJlAzt5Oe^f8^K0WB2D)_-`x2AiZ)Lh^U z(VQ2KGdBS;BOq@jOG|&-)8tih4H%49hU6pAd0uh~ESd_w#Hl6{w>e&~-$rVJPD_=U zV|Y-3dh+AhQbvPDB)Cpp4t3ykgGpyYx|=nku~bKA!V#;&w+t=%6S0MKZARV2zlN6h z!RdT zF!}p1LeV$LM~KkUhHA(n2~;FjL*yYDq1`yzJ-JpdJ~yvaW5$TrJ_Uc6VYC+Z6QFxY zLM^Phj#iq|ul$n+5j|I%2eQ%&E}BQ4#f|VZ1!XZUL%Smah?_{4yg22jA;fQfDjX57H{UNOP6??RX4b~Xxa*L>})k*F02apk=-@3 z))0~U#Yf4mHAh+BQ+vk=q0fvPjdkX-xIPirbG`(X=&te@Ppv@j2xuA93o%rJrhqGf zO^@h$zl{dB4~*5Vq{E?NHqach##w4lbNX1&Q*^16keX6qiMx%Ih3pzWjZ8r&FCc)R zX~Pp?(Yc6L)gLlJd^|(L5w%%TNgUJ~SmNd25H+n*-!CA{pFaH1^Ts2E5NQ0dgCn*m z-!OzvMl)1ArSRO`V^pK|(`6piCje^vppUnJC_11J`&_HS-EDgnmRP^SbiU7GJ$ei! zxl%Q9Vq=$gqfl5|=6%A74i7Noi%7O8p0J7yt(d8V-6F<6kO37#&ppYw-a3}lS1*$^bHcO$&ya(ZrObU!3><iO6KFG8O}YIcP< zg5Hm(caYv4Sg3aPW#vgGBQaCIF`k|t_F_y7RvJf$2V38*0S%w8af!Ii*og{muxKb&7?q6hQ1cAWpB1^K;uq` zgZLOQeo{Y)2gALxV$gcCfn{`cg;3}*h`jpvNNLK+2;t3mL#JMzzptw;U6qv-1K4Vq z1!Z3jgfo2=5mQ@w%2C-FpEc@(Tj1P)hTqgscK-WFNP_hlg$PN-abV(|{<19vYx?( zJ4sSpfy8t!11w`RP+E{JR#x|%)h%ip#u6tC6E_f}pv^!jTmKt=wa8z{_xdPDM-Hjd zgC2<;wyp89_wm zAKq;7h$@#)+@!uY=fL~3$YsGeqdzfgD(+X?ST8b(7CoyyxMoZ2;umq9J_SGXuCx#b zWWbaF`)|%5e`y{br#ZuB(B17+LpM?uCRsu*p?xA#4MOZHJw=MsXVl7e(o(3|-87>Z zv2&!<-yL%1gypW^=GfLQ8D+Lm$T4}te;+lX=GQluUV69m%FDvO$(ib^FhCyc(2R|Y zrWw%DF$qJ-Xt1|9Q};n%{h2P+KkkL+_ zTOW-B<6Lo09hEBZJAm3;g!Ry$+z_~nn#2T8YiI*XrRuczD(+{(k@l|@!0GOMejQ@^ zS`PZ9w){s^^kE?dDb=LarHtxpvT(cupDFzX7%{i_?k_~R$k@xMA@m~Pn1tq5HYg{p zL&;7u(E}&aNIz8_BSZV=%MQ(xsjt&^q+-R7GO-fGN*olchu?=)vc3p)f!Y~10|Kh3 zefpU|p!oy{W!t;av2i%>z+Vtu>|QX+EO>%{($KL_Zj2&fcBr;8MKH} zNts&gUn*WK4eWW^Hi6*@_a95M#K+eO4!cwZx*f&WSB_Bi7PFo)+5W-5JQ_LQkcPJh z+TIKPu9rsY|C#(KU-WBsf2=zeiDQp&h%I*_JDU6kHTZtnj~vR3m7gj_1mMb^l$hwm z4nzCA(m*Vx2wXY_)F9o7#T)#3L$Q;!f8yNEwNQd#@u50|tJB|qczVA!^tTMec}Ou` z!8u)1>;}HoY@G13BPiGI_neQl8$uv1U9g=QsY2sI%XcD5*=ZCVtJ)L$JXsq9QjSF- z#4EAKtMtbT`jHW%68+{k?tf+=D{V=c#8e{NSN14S$WG)V}EO-{SXrZ8|8Y0ydHlJAFiP;=8M;h-f zW%->g4dSjnGA$-;Z=PZe)uz_qJ@gxHK|)H-8}=(dnvWIG^9Q=au2S7%nVRyGGc=SxaaMY~W5uGyVlg-$R;hIQz7&RPFhc*4BA+-axh(?<*Scxn~> zHdF@XE653hiN4kUQig9~eLz}2arO3!WP zL>TW%<4<$kVfK(s_)t(%Kk@qTrTPS#zF|4LJfJz~kV=n>t~MQBGTbeSL#UEfSVr{8 zf!5o3$kj+B@OKpzIq*B$=D^Bob-b824v)d!Zdp@g<`!KIc02^I?xoOqIK3_mAzUx3 ztv2-p^Y^-~*f#DV+hlIm{vo8EHqjM4GbU>{K8Ksm{br8~>W+k8Hucn*O7y8CU0sBB zZxQImkE|!&_psvTOv#d7Y)XLPD_bvV%jVs3bcx4Y(vK_VB=pIfqvy%r5!{r$gsPcq z(P|9k6Ob=GL@Hv9F1!k^c|EV{7ZDHL`u=a&HpQ)k_fHVZIsKlsZCLyh0H&2swmp5#^T(QH~gDHI-l%gxx zSaVQt^3g0hgK4FlN?aiI%*IfT#EpOIbS91H1pf2BC4qwY5&FOI_Krcm1nZt|d$n!b zwr$(Szir#L?e5jKR@=61o2!kxDGBLpk#(gisgkE)h8wNiUUfw|oTpD3>sMYHVtK;r+&r;c8u+Z7SlAmoka> z^$y#f2*9U;jwF71=FhZB&!#o(6!aQTu5E4n!tA;=J3lR+6Vj6Z%GpyiR^PUV7CJMH znmxwET|lXgoV<$Ow4Fh}o!om-{xTItHhm$ziZa59DLWa1=^@L!KJ}I`WhIOg_DV!) zi$h%)QEM)parJ;c&HwHG@waOFdFAJLa#Y9|^z6NJKZn5o{e1W3@`up*e%oMZD6{S9 zPkw73m%@?%yMT8PW&6JZg#Yv04?8F8|7r=z#qodpEYyF(ssE|0*8i?0Br_x9KNCS_ zM&|!EK~?!51hoj9q6e^K~( zeSSWC#5Qrf$_PaDQqj@2w5Hkl{q%C=-)tY)ZB5_)Je~}0#&h)kd`#E%ERWC@V}1>FGB*3!cM-bztb7r|dT&y|UO zgk5@<(C#FykVCfQ^mk}<@W8W$}W4w9h8r`Yo(j^ zzMSF&U@T92rk_)G9e;fE%QWqDc?B1almZykb@8FjCl-I_iDwK( zoP7z0Q;1(xXYejKa_SuSg9lz{~r;is(_Vyn(%*h1Q0!PPNi zQ9!rTjgx_PBExBqJ4j=$Ef%pmOooHbMbSY>?7x|C{`~z&uI=vZlkPz(` zmt7#3-nEn<2z6-8+IUY#&!su3VJCtr%giZZo*STi$jqKk7Ms{r-a<0wG1GVL=Muz1 z+S{D;D(BbnLIL$zrsJ3<*qHEzTzoj%l(x-N;0dY|2UCPL%eOieIdR%rj^ zy8 z=HBzW@}{gU^dzhczU(h{_RUQJ`88DFVUKf2eA_MP16g|7oZC=t-0?2TpEH0@*^2z3tY1*@ufU&Ct)zj~0QhrJDCPpu2K)-HDVH zhO{+>2U7T%{D37B)4Ba%02z;Z+!7e4h&n-;@OPGSbWVpm2B$tKw@2HE^vCDcdjHS@ zDPLjUo5Wzrcj2VIwG^^;!Y-rE zmGxa&dr?$%U_ul`^t@rP&VkV`ef}z(RO;|T`9j6R_D*@Rz1PN2a(uQO|1(LonY|2u z%C_xp=}g&!{sZy`zWGVk(6d74^>xU2VnH~$PZK_G!S%j)FFyM5;iG7D5aYVc(_ht? zqgieYO@yC2*(aB#nO{Al2=OYVwBB4V4sqg$MWD83{8qkky}tAE3%GxN*_NZWe&HOG z8VDgKOR+tnl{a#L7in~n6D^dQM3X%AflUi}63S2;8If2hx+JF{bXkD;#*x|xuk+J9 z!(+kg=@Cej`@yZEpKf5cCI@UQ$f}+*Gn#_U!fyl{<0Ea>kpAEb z^bt<^CB@4$>jzvU@gdp(>Q9OUU_wN+A+mkMA?r`q@lUyB3-kcS=Omxn!CIXTlEIFJ zy50wgwLP!ETe{qiW7igBPPV8|ae_nQjnUVvLy{+5PXUQqTagm9dWs??a$XGcR^B+) zsm!PoUR4L&w|XAZb$4&F5U&^fQp{a*8r4-pq6Yj6dE4kyUuCwsFh?sCR-&4oQgro} z5RZ5F(+39p-=8N4l^GA2At+ksv9k^*63tOo6dO()%E(HK_0i$^49pBZv@OBO#tC+^ zp6($qrVcP3a2OpEisSXV!PwiDqG3J<1P&4IMA%q&q>R$+o3 z2S>)_%=wz!mT#B#x{Mqm)uabUQRF+Zs2GhYL;8Bcp;+Y{c_9s>jY@nr)>|M)%}JCHu> zn@2a$wZ8o|2gOp!5m}Z!qz1`{dMfon6blFY28RCIs)tHRId^G;@ zqD8?HN5g6^6U<`i|0wRM0t00xHnv`i``%gpqh=g0Xvy`M45u*vtJWsV&H(x45ebY1 zc0O0lj)+dGkN?80<%JZ=M$!}P$Av%x-x%&MpKX@vV9IOXqghB%Qm=yPk7y^pC47&j zSdQjvkBVU@(XnVE#T>YWKFa`g9+}5rgkF>-hjpl-t*Z9|pXGSwAPuxoL|$4yLfBEM zZ=PfluEhf>;(<^s;Yu^9vTqd9n)7aEPA#z5fm4g>cPyLlXoWyFDo}kYZ|}LBS|lYP zC?_*MTS6=fQBHIYjHfyFMB7~kUW>WZJE)@d~Ys zu)S5dv%oQ``85fvI`G_A<4_(;kU~=$F?qFU8h$jWY3<|>G8u3YcvhR>3~T|}78lul zAJTg|WkKX-5?PHRvGK^b5CLW@*F9q5R8^u#@^7AolJOFIdhgcp*CV&eLV4Xl)C%0S ztLy?RW&CP(welFyKlqwZrlv{okYsm|-5NgRbFm_~-ALT5R8Ra8|G3<2wTe;;aq9$N zA<*T97NJ4ZLW3q3(GERi&EkQY6DdhEgV8h8y@1bO?VYN^G_{zYa1U72FFmm(m)aI^_WFlpY)C>C{!UxJ*) zsGgExUS5GM^0&30qsJ8jXSY_B!^do6(rO5Ux*adk(c*7A@1o$BCvlCXUl4C7y5R=@ z`K;V@aS(p(7)f)EgP#?GmZ9M{Yo+IV1-Ex?(31V+R8o*UBox6=AIAPvgG-E2{*!|@ zm|e@B5e-eOyFE`9n3vtz`RAS_SwOqiv}cICwM0&TY(jy^(PgJejpRz(ASz(nE-y6z zec)xNnaj1Rh&!|v0NJ%^Ly;4F7KJ#Q8KRnjMz5*ereOn{)dRDK7MO>R)UO-q&a1i&C*@S)AY9GXsn5G@EhdSugGMr z^ld6`(C1IQ!UVdrjxyE3mF^naut1oiQN;ndT7~>WPzt>tEm=nC;OR3w!joE2+})A8|ykZx2OoYcFO1(SxGO@by$_W;uM ziKy2w=YeToc8ja(IR9A5LHSWpCV^#SJE}a$2Vz4WacqPp)fEgv)PxoCgAYsO7ET~Z zdi$VU5ICcDlX6b-fEdj?(mo16_H>M<+4B@x+HtAgz@Ab!O--< zJxj?^91IRA;%4-Uq!NPI$I8$3WN`^}*v$1SNjB^7rwmlWatX~Dgz53#bg(PHNQ5LO zCltJRNvR`>klHQy>*VMxG>I@+Sxx-l)L__9v$lSI(@4b3R;WC7JKohD`S=R(9Fg^y zw|Yf}N&ZYJd%5i)A?a^JgGXvay0zlwH+>Z+b?SqDh$T4o~gED`2`!(;)Y(XeFjcN!9mb)vAFjyt>rFVu{gH2!`Rv+%fY=PVor#KpKCf=p$xCK(Xk7W*jb43=tdCZ30+)aPR94YWymt*n7pSsxqT1b;QgP0+WHlOyWRX;q!dQtLh~s{8K^tL< zT1m;F^jR4rFm0fB?jV-#E{;tN-5i)aUdWKA$T|kFKQ^PP3cdcG(z`f0Hi>mghFdm) zG>QQwhle_Xn~#h>zkO-{i0J?=>d~62(b08~A@77>$9N-W4x$#uw{eT5VKcQ>=L9qM zQ~Lyi(NGFyA)MLnqDT{>JXWEDeQiv~xY-bwyjchQ@CVXAK^eTtU$c5g(3T{v1EgBz zh$l*xO?9ZVeLLF)9>`c$yw)+f?taT(6*VV_D`9V*lKzIFD}2*&$yfeggm2c zvLz{|JKJA0iMgicea4e6+VCXfi%*k=85k#Z#(qD-C?)qcZTiKE*p9Aji}l8CXI*_4 ziB#^6j}bhUL^Kfahwt|NmBeV7-f%M`zN2azU%@xmisjqA?>vtT&R87;yp>0UtVKwN z?30w)`l_Y4D;pNuPREb{CU_b(qfZGu^gP2?6d>wwJ(RAQ@r{1#OYqVwKs|Xj_SpVo zE1e%9IUr&UCX_Tt!PU7_U6}4jBI+BYUn)?2+@UkXN08tSmkODlFwH-M9(pEGkI+pw z^7eaQn+#%!P! zxTB0>opBL={8Jk;bnFHz{3}iudHV@L21*KcPDL1pyRzEo1z3kJ=9*+&XLV>u8{JGH zkI*&zT8-teiMuK(d&SZENkXF-WFAd$-UeL%FKuTd(50-+9mwCU1HX4LIwLFq+RR!b z#{Lt{ScMykuU!X}u#F6o;q*Svn?b08Qe5ag{mO5yIV5kq#)|2tI&iS~?lpf%A+L3b z$cGq328$wC3&h>XC>k2o7ATdVWP=JbH5w?d8=A=42VI!T}mn>qc^K?w2#x|hUb_gV-c*9*FH41TWDPD7%4Zz&n=xZ|( z-|-(gs5=Q#Qt$hm_Bj)?xQXGM!V1bIim_`67X2ssIJ4s1-@frbs_Yl5(MaU4m&`%L zhlFfYINDjR?cI%L&J*kw)2Z3kZZR9#*pX37crqZNr>T@#!RZCuu%H!p->}?e@@E8W zbw=^{Qr+swkSIu$q{@wYH%~6VxDnvJN&qa+7863XBDTPSVYGN5YrDyh{9)TPr9Nv+ z>7)#eT^Wp%o0NMk55`G8WMdT+cu=@qI+T=Hg%q*i%t%OG2Y`^C$7d-Tpi49YQA8W3 zQooJlfQUP-_=GZL-~H+Ep!l&j>>Z05!vyAIuQ+TSFsqvzA5~0UIKHI`b}9FtYW1ge z>Xk1P#1;G2#$suP*<^{vMK7iP^L*{qxVS#R#K1hDj zmZbT{O?23)1^K;zoB9ga3VEyQkeux+yVi-|61z;@2B>7!+ryUiec|aBG5whLq}cuX?B1e!LE zqE)~*zZpCda0W}WRwxhJNdkJ2$JPmBXYB_H86xBMDG<-43J^i{H3oM8g4*My6O^)& z?%9E#Zq$IhlQ;vy*ehE3jw=d0=<8B#_h>edgobN-qb>2fHJUAy?^aIR@c>j-iI%m2e^o%y++k6+qJbwW#2axKl z0Civ8rm8(s(DHnDJd*QY2yq0uib|IhQ(Jy?`Wr9&DjN}7r??$_EOw&PzT|wRZulI! zq}<&{QdCH+U<3*NY%@Rldr@2%!knfF@plxaN+PPmA5-&}b<$Y`Q09#d(AheZkgyKL zeKA<`L{~4|llJ1_m^#t<$cbsepiQ&)I^H!)7+%~=h;eF{m(N)UeG3HPuwHx=;l>?En%B>=txE79E;cPLPm>)X!(m8izgTxD;q_Lpgt>FbwjExl zHr;P28qrUx7(QiARlW*4zxNpLeQ>3oicUbEtROISj3yU2QJmZpYB+@LN-OQX>H={I z(MDNXy!6~!kyVXe`ngSAU^JJH=c^iJbU_t#pddO_Z=*WEYOxE@e?J^%RpIYhwR+Qp z10%GRQkO!U@k&k=>Ng;RwI{l(uYaGMd$<4XKRh#wdx+CcldIx>JB7t*sM%l&EUIR zzfBDa1qq}VT=sjQE11MgVd{MLl2(>&vV|3 zDAFluB0{2O{gMhTu8O+CTIVqoVha{wfBz^i1fq1^*?DN2_ol<` z7&Ng`bZ|{;^FzrdX;Y3m^_dUb@Rtq2KL^^k4Lp7)^A|M`K7@Z+LfL~5eA&paE0hp& zs}QE^3s1@Xylx2ux-(stNx_L#pZAH{0jC`9n^GTr$kdyAJ>y8LwV+up=D^jHy1I(c zq4`@KX2=?7+QDIX%s9pEy>oMG^Fbpxxd-%5Y6mes=a+{y`E3YZv&mrL&igu8*{E{w z)d@?*iIMXGG_GZ0zZ9dBA#<+%b5{-3*Pz;TF8PLkXJ2^2VT<8fWX{#N(FjOt^Y5J@9<2NRBE@Qt-)dZw42yHq6H2ltxe0d3DWg zuEN9f)yg_z8@M1UQ@IOK$|+ozSTtL_xL?|gR_eo@v={+R@mZ>61?+(BTlq zK(PD$WeeuJ$lE5!SEFl91V50W@W|!H5>_y=o^&HdcCe$Wed2mSNwn=ZWAKBLOs1WW zcCXwd!LmD^ortFMbF(%rr@ID~qcJ46JHz!O_E%Rr`+JL+4_ig5Tm#r-IkzIP56Y+N zJb%q$=hlW~;21<%9hq-X*}CR<_>vgNd@nvXt+1lGHniS15KORwr|msJZ|G7;`q*1? z#-Iib)f)@Z^fUZ50RM_Ct*B0n`N2It(gr;VGgSlW_CTt}9b2WXJy;%<>%c%b{$Awi z`VsTAq8`;<+sO0(NWubdq(7JuMjKnO2b_Gd?kii+3mV`d$Vog)dWbQ1i?(v6&O=;* zMoJ$vriOicI0t<9-fcz~c4px(g9saIFFQ^t%0YJsO7wl7biha`7t{rkjLqRT={}(W zX&}3|W=0QzO_q!$QW(EO{qSz3QEcok0ycHN>K1<+#4UL3Zs@5g-xWp2y&@XI6 zR3W=*49i)SB8o&(Fo)ecgwZ%zqMMyh>_lqjcvVlCMox%j3E&?ollHnQKBycfh7Mm< zq2-O@t%Qj<`%h0?C5=x-EbRN=A zSZQQM@$ITA<13&zS@MsB8}sg2))T)%Rkxz=)T;W0eLh8Oc%niwbnp-JvW1j+;5!@r zrBeZ4k*%CL$sorQHqCCna?`<|9tE9{R7SyUqDvLPX;DiPCw@0%T8g^`7wDO|?SAr$ z)hiH{b+&vvt?A~*(QxG1GruEEI%ah{A|#2oz-ld#gU{u(ZCj&loCH}kibU;u|NWTm zEuYi0*+Dx_b`fXREy}FUP*th5g)`G*EiqT&oywErWnQZ7K?M!32sRe4=<#rveoH#n zqjge^v!o5o8Y2VXJa7)BIg|8@m@RH;a^NJlnc!OAIbSLit3TfC=poiL#4D#m==;Jk zGmZcEiYc>v^ZRzif%D=nNBYg8=JV!%Z50s4olQ4Rfg zdFp#69<88>pEbk-o*HxTM~Wb8POWb0^hVZCea4G)TN@&=wrwIz_Jxne2~NN|H8u|w z(vy|_F010@k{meDzkT9z+I)y2jxq9W04x=G1WaR~A1>3OKhjdhJ9%Qte%uY~g!- z>B2k1MPOK+MT_yWGlBM#k%U%3TdyEL>MoI}{j6N6x2M$QolYpQ>u{5O8Cv ztVX?i{!IUS6^xv7=Iz~kW0&hqrRGr3uP)Z7TJk$3zBi?Ng%G0l^RmE$m_YSpA+b+t z?xm`i1==LH87yI;J{ojK)gU`L zWQC>jsfdvMUp2u?d!(`*tE54Gd04b056SjglGn>?DMgsQInJTi$?E|Zl?k2p-0s=P z7eqn&U!VGU?#3!t#HeM-u}t~{_m)aX+a;+TVAFOPo(IkkV+a9~l7FMhM&IPiLFaGNMCA17-GSS?CdTWSPKHwpzF z5Z*)-qT7X{o@k@M!h-r4t`rbwsj-~ zsa{;^!m{929T(`lADveS2>MYCVuJmdqZ~f$mz|IwfTM-c`YW>K5R^O34RT_lgD7ps;2Jn zX5rPRAx24{cL~Ot`1Kv}?Ib95s(>ebdckKoAENe;pbtkdop{c`S2cKtgo#)x`TwFYf_p#6A&4rQyZ8RHEO73~9?fitelbM#Ax0!ZNUu1l% zUd8@wCJX@fSW&51*-_7)yGXHsNk1kC!Wd*)N6tgzbvzPCa$Z2c%LE0lPod6q(Xq zlAOxs#5}95`U5U26spmV{Y$GF$5)>UdYpL^LiN^ zqEaAK<`jP}&KAxZU{=Xj)AB-yQ zs@pKV7X2Rii|OeCch8{g)>`BA)zhA0dtb5$>Eqz^K@|2mk@LPQ0w*2{>DKV_{c)sM zn!@!ibxT|0Maz$2^o7{W;3~$L`tHP$QFyjn;I*g!FQ~q@FIO}4C76c?G9b7h9emgG z`*-xt=1J#_46%)BX6HZKhk46gc)U=X`vm0nwBA1C53Axoi1?W!fyClv^MK z+&^|V42x4dqT}mJZVzMR&~xApbhDEFqx%W z$(SK$NL_(P0W&+rUkX%^2tx<&QR3X0V)%3fsTLrCc^cAv(ok=arTvWpy zsH%|C$B?C}dg7A(dr1m=mQ&~#okd9|M#GV`CD4|BdCn3kz|*rlD>+p-&S{CEY46qr zGW@YaR1wU7>a!oVZLW3Y+c=jwx$D-|l8QQK(9jeB5fJO$q%>k@)vb!eWCLaR9_O=n z&%P_6N*f-$Y3+v%)@1rn(tsUnKy+sr&ytB~E}L3mL1mP^O35=8!2MzS0^&Zu&ZceG zm_%9~H#a3%@w2JwPd2pmSJ`MmIZGXmpa+!5-Py}pA$@Gt8QNN}S*CjoeMVTRI}RZ;m6UL?G5C+|Bc_Zw0y(3Z>Dyly=NS#Z+_XuZ#A%Ue=#6u*Aq&~N@Mf8^RW<6 z$VU-o4{EdRT1EJIGD!-WOVhQbA#o`a+f0##Uz`2)nbT-2OTL)&e8Dy4u2>wok$DOVAZ%} z8U1cc-U2#WHEpd$(2~i$+@a~%W8CR0`3rr{+|G>sgLqY@H}EG=`U70HD-NJU@U@dnKMK9FSzq66)&6cMNhDKlUih}YBRmqJsr zF6H1C%IDmKZ;_ehK;< z4|BysO$?m}Y7gYus8e8MZ6ShfZmSnPzgF)VG6%hmcYMdw4aKMNPo;WFnX=?5KF~79 zf!8P^#wb;yqhFa>`gL@SE-nRs_z;&sptuO=T7UNrA4;7@n_yH~X5lKixou!7Ek}`h zYfsGr_OH-|Sc1f7D^_I+9cQDiX~~Jw{5$>dGaiZ+`wo=AtA1qgdI0QD4E5*;!tRb( z@48mq@z>$o3VUzOJcUrvCR56_Ys3Y4^et{mh%eN34~cvLlD{s0w~t5X`p$3vw`Z|g zSm9{~t<}8P&xh6C@0WChA5f0F69boF22GzOvqACiTawq^Z-Ql3k+^^5QU1^REliBe zj2!=KnDzg5t)Bndv-Lj}?)l%Crkwx6oMdABZ=0qp|HCvb2Pgd(2{AGLlWF>or2c=H zrdO>$K`O^eWMX?wV8IS z)A12#y(P^*x*F`P>bswaixu)w3?hYhfP^2}Ci>x5yUMg|)XZ7u`3Mf#rglsG>zDBU zc+xqY&rxUZr;`2i4)?S4dfHhQn}qX8@D1sO^8dDQwaxo(_VleGZ&AuF``NM)=v?Fd znmx(S0}?^SbYupz{CJyW=<&I?YSTlCQsAthsIZl$NfIoX<({kWalQJ*306QW3-z-J zh5?;IV|#mD!}juQr?B>pbbN4>np`=6v}uHU?2CEQm-IU+uc$;b`#RppPXtj^d`?hX zk!}F5vr8SotS>DW$=o&#(VVE#7}p0v^*J#j#}C|GUKn0}wN`t*V47r8j^9jY_`(D0 z20c~-?bOqJT`46m-D-m!E&+y)Rv%a#vB2IZB2zPOw~&ad#YmTPpA1MlvS5>!n<+yb z_x$P!eX?Sn|1GH=3;GGTdk$11q6s7rXV=_iY1XtA+SPrav02Hp#ws>#x2?%bavx7x zwhy{@@igkrN4*=Kg9~xAvy8NAoM-EM=-4lilMInnjW|kO9;9`hlr$IoOr=2}vuBOz zVy?Ba*SiOrWmDzxPECT_OYdK>TbEO9lHMZQQ&fwkN z^0EPMf}Y|kfsolofmyIfx=&){NO*H5=(ZVIszAjNim0vXEBbYUlZOLz8%)PE%)+0g zB$rXWcrEdT^cNh-*evj+RS1~#85Ah?6d0shSZeb^iH8_)7~)Nh_yWNJ+Zhdc)sb{~ z6$E_3s}1UvsVDqxbb|SPM;dQv#>h3xcNQvk2BsVR785+f%S={j0iX41;-EN!^Uiis zz+$T|w@~IE(K=NOS&n}Y-J30eMtq#uN*BFnKD)1|j}c=nLA_ot0WA7JXWYMmB4H>a z>IF6d`#x>=ff<91z!Q0qf;WS6mnvTCa^;q?eYWEonvC$c%X7v41jDKvyAb|CbYr=# z7xG3P(}!ZB^-~4sVQbmIYJN3dApBsCfFq>XKtkxQbA4y3`46)!nJqVgG^i;$3eQ>%x!w+5+pgVusdh$d zA-rUknZt(OoP8(=bbq~>vm7z@Rm*{;Dbs?#+>5!)6%#%bQ0cPsL!t-n2YDRj7kGV?^g1)Sk~6LU4}wz1#}uAH*FMmM>x7kpuiYT zkdwly$%wh5?89q985i+Hs-EV<|Fwzb$GMA?+I7ha~M2^A%lt&Y%4Q5-x>*lrIyLO zP&a5#P*F9G<4mSJGF3UbtcR%<_Gekd507E9>c~6u+_+sY0AG%3+R`cwp%Y*1&(CPS z6|>o*?SXB^yHF<^vWoz<$+y1kTQO#2Hjp_(c{7^6)!V)F$)MbQYAdc?w=Bg^329f; zW~HTf!oXn4y5b2VMo6bQCa1- z#8O`?Wnwg7_QiKGUeJ<;0gbQ|q=tIe3UqVIE+>a;EFT|`aNA*{LxdwLS#1!)(xNFN z%1PcxojVYfn6;eaUaj74aS|S7%q+)=8QqtwD#|b)4?!=`=ZkB+UOs08XOu?8RISy+ zEW#y#T`y`~y#sZgJ!=}L7qCXs>MGO@*ib-%Z6~P*oHH)8V*lZ?#@@q8psqM+%?F?8 zeHyp&U}M%}i%>u$C+$#~spfP*My3Tfo0=EQr@S{S9Xvb8dAcz|4y2D^J@*leOOTCb z>|uJm+b=98_H%-&PAYfg9v1@f1e;v)DO`Yel$~w(Db2ceYX*g1z=EcWGWK137$JA+ z{Pf|Pijf$;Xt8=8U$caBBJBU5Zmd-r0y(P91UTd%)EH)L;cwn@Ka{JieEhb&i9PV-S-}q`btQicTZ+ zgm$$zhuM}>)S<2KK#`ad!QNNs<*^8BJqAXqR%?-f(fc%ttI*%r&b6~*UX5_^gxIa% zgcoTGIlDp1&JnMenjurBaS1XzTp^X#51g$PfWgnG%^jE)l*6HO(q4$P@R|pU7G`UY zL!5fM5sMMvY5>!Cv4dZw!u71v&df2sN5ZR`DCz>A3PEwFgH-rfAvjv7{hA?}c;@xH zs%&tkb1?#qOzl&`C&3ZMYyuFsTJwz@qtWm{fG4@0QlF`~P>g913NRLNof@5_pbQ|i zV76iR$Wiodifxbn-+%I9(+N>wv zG~`kofxz}rT@|Dx>^4;70eN~rGw^IoSO*h?pU!NAqo{)Q`d)$r?d8<=RiUGQ2WA8i zN*Q-3*XW^EKc?)gu(;9214#%i^qtbWn$j9b846 z)vpnS6GBcsHRR=t619>XMMCOu-O*GA@k8Jv$a1J$RiPnm!h@BiM*+L2g1O}vCuD^Q zo0~zM#c!uovZmQ2#ilp+hs5H$mes%*DbDSM3^hdrFph;?HJ+W>>`OPB87(bomSeHbaM*y!sQWq_$&-olfZi4|9zDYIWPSE4D$I&}3cjumI6af>G zChK0Y*~WbXzmUksWl=;Rk4j{-t{xiA^^Q?##>Ul4a+k^+Tl`b9NXulo-wDk3Wto?#yDI)iWL2~ibp|AqGE?DwjkK9@LB1^6#k62 z$Kn=GsBfE>!VP-=a>_`Gj=TChC8{@utWKj-i&uHiSQrEBWiC!%pl`HWsegniE|7z} z8(_a#Z;x>d>~A^Z$p}l(KnTEw^(^lmBE3k9qjqGM4HP;8W+zo9au)T(u46ZS_n3`>X*XN2=mnfJO zt&5Y55W-O*kAkqud6<}%WiNq$o$i?^GX{lK8hhyin)9BG#-`x%DpBT)xe)3weX#ez z8%QNPx0i6tI^cuHd30wa2opNjON^*wBde`>4Go@2c}IzQ{a%Gu@RE09i7cs#S!gHk zAwX(+DsbHQ%T&c;#+#wn$80?;EYq9Iw1u1538wFHIw=MvdcQ$ujkwE1nFVs^qBLEO zIsJRionpE6ebWC?j*Qc>GH0X6q#58w;ff89j4OE#tz88v)MpxGWw^eM2VDkVP6rR zD82zFfr)Hcu+~Ycu^}L}CZ`m|jpg?2Ii)J6ZbHI{N1MP>iPP1(&PIs0o99_2&i~Vm@?K_;RTMR7H z5t8Ara#XFIAnvpKIH>9V4NVndmvHR*4^mf)2qg^-2`5Q+8sP!_rN{ApSc5Qipzpfe zp$1K&h8Qph`4wZq&=;W#z3gSbL>kR5n?q0eWY`@% zuVF}&1K4393&L-qdZ(7+je|Bki>~TykzuRrOL?J-?z!=$O>AeuW4t=)i=Y~kwxM1St! zSV>_q9=*_OmTObc_dy0(#dr!N$JPT#8hI>OA1)!ay&=N{#z_(E7$=dv^%p9T9-n=j zHRYdk%*-K6uH{CiOMz@W!d13)TAtYxlIMv2*=6gde>@ZzH^Wkf)U-mJiEIk7yJ%~? zG}$|W%D$oeJxmJm;K*1tFd2y37i0v6UAo=NMQX~$BE&@ug>8UxA-97*$_qopm)GOY zIxTo#>f{+=mp4a;YIceiJn$wN!6R14Q!lv5ZvF6@)&SIPM7I7dgIaOkccWi^AxX{K z83Mb^`Q8;>3CKB+U7s5YeR>|c&EL2X3W8B8+K@(O&Kkfi7g)CVH|h8h)+W~gn{kuV zRf(`$wG(DF`w#-=WUL);vOMM+Jk`AE>*UEZ19Aq!4SPaPA2=Cq2#!RfD@c-i!UnQj zap~IeX$iPlI~N1Gx{^Xh@a?--tT-Rif)3SIj!zcbfPu30^?f6+r!U_?G7|eR9r-e0 zAfg6HEa!e!x*9ogz)>`B?mqUJ>F>zk2JR3Njbo+8KxUaZ`lgZ zE-;k~K)WkDPmMqq+>+u0I(;B$)k=HHU#&!c0PR%?a^^6^Sd>&@_aa{zH#oP)!I_f;0NQ?5Y*s@+Sv>dT!t1mokzGA zmeU?^0T*deFRxs6F{Tda_MbIi7&)4Ko#8s9bE&}88^kDgD3M4FIi6I&tsk{u%U(Y? z(-s^HzvC_!p6Bh|HUm;u^U>#^ZDrCOkw0XSg|BmQW0#Y$xTMUT){r*74dG!>k(!f@ zKA|yb;mGH)F#Jm#mz?5+dVmYNh$8m^!$-%${bEsF)7me#&*=gZ*Kx98GwO^1&O|I= z^Oz&hC!v%x%7Kku{TvAK8!Xyg&nhK(+n_5jx2uwJaOHMPznIA_^vVkx{2R{_D83%# zhQXo%3%bPMIEzG420Pc-9!YoUw5Qg&kPpTWc#U9zbx$yrn4-0ZVcxp|Mux^CzhLW7 zAfGYb^PO<^OT(0j2^Ne;8R^~IeUo=5bAVq7s_NJzTknVpHnsBb@HVe}ye|nn_h4w! zN#3NdvM&+sa_0#!wxW}V$wRQ@=BZsSH7T@l=h`O+Jn$!V-E1 zhn$7O4m!FPBVhHqMhWMcZRKH5HxU_i!Z>RxLZV6qnSx=gGEl`gx*}`|F149F@-e$3 z4fc7XVmTRRIfytrVx~o0uWI_+;lTLTZ+(*MfdT>E@ml!34VLw!y|n{HKV*xV)jW^xh$v?ss60;sE`2$BMQf zCPI`(z8uFBJ5oSHxUSuOHQwM07s7|cea2QL zEywH{lY=``XEsP&i%G#7XP_1+vl}eDvb7I&Iln956F8$*1#Yd)l)U|mR04QLi}?z~ zq;}U%lJyV?-9WLNV`!5i$7@0_TbcX)*|H@FDc_%__b&D0VY!*75(_K-*Qx!(7!(7h zd#*J6pPx^CJcdxc3uHI_aVXPw{%nJWK;WJL(+8A@vNIantgJ5RmLazy)xBl+j-z4$QGX=m6y^ zvt8TW-Ro9{8#k^!pL7Fc+`211Pq0tUX{5(FTOq}lfda6aav*pV zW}?l;)LOrl$iZ%z>~5gm{ahdF_w=)Lda(Bzjg;70Sfr4-;F;vfF3+2Au%1~H!Gs5;;V|NiuJ9`yyXVv${x{gNR^}CNrzh9 zK0WvCbsoR2;Nn;0A6PNU*;+KRH_k1(586$-{%OM8DZVh?gg4Ai!;&#p3YtaQXE%ID z7kJq|t1DgYx;7v3IQR4L7}K_L5d*uHig~~J{?vEd3zS+3ZD0S z{bN>EC-HZ+#=k8)!OF?W@$aKd|95&H4mw5x=6`J({=sr1Q2*<4BLsh20x`1wU8%wT zk4qrue=UJ(K}r8EE%yIh0x`1u^Ad=W?SC(U{^$Mwmr5W;wtrFrvHx{yj=#(6?@BW! zhX3voi1Qz8*wB{nFB>-K8ntwik9F&p0!vo)7o}86x^tWxL-?i)go;wM*4={inl&=J^)$jS)cBkLTZeu3E9CYAx ztPoBYgb}32t|{=h9S5WUn4Xpe{Ikw+s3dqL8;^b@AyhsAmIkB=GKuXV4qTF+O(^y> z5fKfdg=JwUpb8(^iLMnG&-RAIS+|mR-f;mS9F*P>uTA;nd5LEc4Lm}TU}W`9C!hwv z3wt$*o`9#m4L+9nV2Oo60&^}sV$;|8ZRo#qvxGQ2j6b{is68jopV#*3?d!x1Z&R`& z;mC+tYmMoWCnp04-_i1XFiYg|9f}6TF~=!h&PItmMscOQSDIgM%a9PfVFUXFtpsIh zvG;%^4ppT!&Im=VbKo)_G+13)|3qr0*b5zsIIcE@PHA&ND9G0;W2ju2TzGeGNA6x0 zoEk-gW(GC5G}SzAbZ5Jv$Q13YQDN?+L76#}hm8ZqZsQ57b5dUt7>wiA5^s#-CK2m0 zZVE@OX#~a@EzqjfJHD>~&pEmeCE@sXR?LUn?jufD`D7#nnuhx<37!aqsdoE~*W&}1 z%r2;FeA~w%rw=qCYDhUh-)}f}E=4GgYfg9+<5J!7DlNnqCFbgyZP(+YK4xi7qTTSC zCDkj@N#8818!UH5sO$#7T7YhF_EEDEEZ8LO^6OW ziYfkKWI)5c47TWjaExhC!(unNP8>sfLfnH=@|6JACZ8*8QJ#0$VFRi!DdtO@iycy) zrdSW6tRyW7*#2t6iSBwdcR(la6a#wi3PXOTSVE!Sbj-qXFW(sClRgyZu!AyO$1VC7 z{G>XU7!=1DMgj->5!Tol)w@*g?el=f#7K|h7=81SI-a2XPW2w5w8s&4#>DOB1S^QS z8(3pQ`6<@&y3?@CTs88t>NqG~Ls|LkQGei(78(W{-f~8*Pk>2H`E2v?rMPR@@dM(I z)1RCBuT*b$F8dy3{?{I)r_&|p?!+CG{&ngMx-6=_2z8>sADHmSg&}|%SUbZ_KwwFTne-6rr&7k1-8Ysd7W+wfa2HrKyaIZG@&>xz!~tI zCg4sIe1mXDUhlPT1ZGEE+!V*e-IW`>R&SdNF29| zx1Es=Ob2Itwo-eQzFN!9xSM6vdjfjORADjd2%_q}FMPH_+TDJ5G#Yezk`xv0W83ex z+~(~^qu3C*tLS$+LDZNotJQ+e_*7dGkeP$9UL@L(9A06G@Ei(V$kwJ^Ir;U=jk<6O zKCA~C$F;+zTOFIa#yqd=@oPXaMxY-KZOW(DyUjM#yaJ68w(GNXZ(oiO$ zA9$s9RGP8rO2IA66Hb-#TNWxHwH?Lbrm5DIj{q?7)X?%XNxZ5cvztXbdBt7)4w7S> zQnD9~CyCP}8q%^D!Ip$vRzmzkw=JDY;uqkw`~0{bCJ1*Y3l%xHh+w#p3YYIjR9iA> z_}r)M=N{BdvdVML4#11OLb0|620NS%#SH2OVeIut9KC_-SezQ^!odjJO90epMs?WT zV38#=VR0jzhq0#(^*j&o_uX()>%ZYFtnzKDFKZGhQP+?e512r|LC2x?_Q=Y6sKc{$ zCE7T2fUt2)Fu}L2-fMAW0&Hf)EP6JM*QK2L`{D zcC3>=!VqNMTl1x~ych_(kyh*%q$lq&l706ANjZ*374&QZD}#6HFg~Zu}^C?ddUMUr(JPK&BRO$`94gi3& z11}Vd)y%r@SD*q>oO z>aw$gjIY_;A|c!rfS{Kifyq&Cd(BWK*pw(?xBSs$|%^g>Z zP*>fbvu9mV!+%eRO(T^N5CGGpJ5w^$1Y_kiUGP;w_UGc`IDib`Dj0-69p!8qd_HE} zngJQ;_}u<+;0)1vYBkypjE`qw(5-`?kzI?#c>G0ErYemyfYmt>P%`2B1nUpY2l$ns zM{5R?3TZ%f^0_mCF7(d4qi52;enUhQnMkN`$TqsFxf$!pb#uWPlWq=JoSFrP(7!7< ztt$8k99?C=ez<3losQ9|f3pBh##5U!>DbYN{retv)#-{MCwL!-;S!(pj&C-(1AGKdGgnX zF9NDyjAvY2-(Nqbq=$DZ>j2 zCk5G6JV|{YHF=yD;zgdLFdc9#-$e~Lw$G9_FnA&LJcOQ9Lp7yAwcq>UqHm%Y?zGJB zDWxq_bz)fhz@?4&6gz5iABfXUYvm7zZd)wEj^>(!Tw?HYpZ4h6Ye)FG&6WfIbo@H) zMLr!bZqQ>f4#iUF10WOKk>7-2IX2ys3e>HaLn(X8^B$f==(e*7XUyRqQe;vwG*b|M zM?fZ3p74=NAlx{XYc#I2(0b_fU>4Xb-nu{>7p|_bEx>x}!bqrQ2IsEZ#?15$dOX51 z8mdTt9V-gUeWVPvprz(7AyA&is*?r~@39j&w1HgvWl}5l7y`_(OZw#N%w|uv{#=%8LFyYxQ%!$38Ar?wKyF0j&<&AoXx}LknRyvYEE)=*?Bx zyp%w8`T7S=M`oKVV2TBypsAa+Z>&1u1P3o)$IbmCgZuJAx{yL^)u9p1L3%AG)bjv! z(I;1Hgc?1@m@>2i6}@17!@4HYM_K~)ZXpEG*<=tri6O#RJb`Y(|&qVoPimvW^=h)SI3xwbpVJ)lC^bwD`Q>e zI@GJI43zioaE?ug>J>Da4hP3L*cx{@YkCeVYijSN16uS4oh~VRjhqOhNlks%Rlleg zbzD+uGJCsU9BU+5f((wy>xf<-;Z8B>I>K0wH>f+%$mL!(2Q$X1_S21_@Vi8^StF5T_8W#V0rWyOnY3~|B;t`4Q#S;&f)`;r+!eVL3`aA@js#2aTGH&K;Z8SgJA1Zo zAp>Mt_zr=wl?14+k63owqhLOV!0oiAoVYgGLEu&V-cWZxP`kOg-LgFW?uz1%l;MG- zYytZ5g!?1?3JHPC6#oTpm4bT3jOkUnqu;gUE!1Fs4`)_=Z7bs_t@ByT3~6-+n{If{ zPy}}qX;+#}GS%Md&C!f!LO8u%2rMODeZNgYY{To5W(>1#=>w-N%D0?>ldx0!2s6EWoPESpBSps)ZeVbt$=f* z1ZmFKoXcdUgCxn*3ft6Z_0!0?=Gy=^Q>co55AljnfO^I^9VzVwlhh^qK_yKZQV(~v z;_;P)b)Wv36@_3ary{Ii6eHiA6OyoyEw(Z@MMdOgR`Ul(D0*Nmtje0`=%JT z%3P>cd=AXs3t&g3-1#5?T0=z{oES>jIyb@?`YVVa9922 z*zs#%v!A|g*}`onp{hd5PM`TO)2@IQT5*+!rJgdaOuY`Q+{eCC+xQh?Tyr4#^skj9lDs4x|`Q`yNi{mhsf1Kst!^(M!Ubnma7#hs;(BUX&bcE2E}RMj%J?C z4~C>`9vl#YCPdyDC3h@9IIuHoHGR_PSV#R`#s&5vGwct)inPC?rDe+=r)tAXcQ2)t zLBbKnIjjUosyf7+_bK!|Egp89Se(por5)TRTM}+mj4^Bj(gBs3E~N*0wRkn_v#NWt`)?%yKg{>JeI$uh{e49UNV>Q_Dh<2j0ZHZgkI&N zF!S{9wRFXcE1a7lCXHL>jKvOCB+zrZtY$n-tMhwYL2oLTSEEzL#Zv$u>IVD?l5 zYWt55Ruc*ACA_zKeE@NLEVFSO{XJnFvHe;D?A<$eKtS-|!9!p2`tK|?8?>Qf=8PD9 zrm=3e4|~Xeo08w(5d6O0;9@!)#>YPtO=oIHNGldS&QYc(I-oTQZcT2rLHWMZ?O<%* zvOKIia#oJc;HkqpWT$<)XU2rb1T>V}$WBm)WaxO<1JEhpdf@tXfP`h8Fa>V-0h|^m z0s=ZUNXRyx#+x;I%~$A{G%C+}B8yMpcmjLaiVPkyg?^9x%qAi@N)}CZy1+oQ225DK z&xihS`7L*Sp9zjg6{vkQ`YXt{>w8D@xqO+>NW&3ZSauXdu{`GhzZ6?YV&7S^gpX_S zBbJH;*y;w=ziHU@0zQ%dK=X8H--%g>%iG<;j|Z7%{$SMi{A46;C495Fx5Z=?rV+6_ zzY5B;Ek?d+@MlugKvS76&YMY`kq=DQQX7IAei;?7y9F`1ViPGWu!2$jO!;@|D>r7J zjbe2f$d43#`>giZYUHqVi2=}tQ)ScGUq4Byp}v4X?oa%ds~-~SEBqsrV zbEDkKFYnMjjQhIanyg`4{CYP;RG@gbKWS2OR|QJ=dMUq^NVqz>U%9p%3sDMK$GX@{ zz-|LiGktJM4^M8SAj?hJvx5yYmBLqN3S|8&PDkH-H`v?czjghZrjEljcsRChvA`F3 z#0ZFPs}U;>Pw@%B0xe5pu(e}=eLFCsN@C)k)POfTs<6kJO#CMi(K|IhpXFF|Z3=6?dQ zIsQ8J-{$pq(Es0J{%?cWOl<$P2auv`8CTrq_%o}&P^D{W-X(tfz*ma6o{+%F!wt=m z+9Svy7({>$G#s#B_j6wn?wc@juxSiAFZ5fOEv{2j^)`>aZ}ZFZ@qM4(>~YtBAP>#| z=WA;84ECp#KXJSGAT?VWGE4u*{_%Z>#>|+l?`!qsq)Yy<5%)*#PcCO-&Xr2+dOSGxTL&Om zUtVplaX*TMBGr@O0nDbse%|zd#G<2ODqyPIpZCB$prj!z+w1aI$6FbnrdQku9P++a38vT5^wwn?ocMk&DN5*LGHxh)beiI zwf!1e$`npvHjErd8PBiF6PtBQMUj~XesQSy1&OI7)ZEoyZ}&+ggYzi#wGsr6wdWUN z*5e`j+d@o(wiO|$)b(mO_jw9hGELE`qg$lYLav$iWjKpZMCqhsjlFt^yp!|tmtnQ% z-r>;!1JRzE51tz(bczA3B2tYgEJ$aTG~{VJL7nxkmS%yuaA^dXusd*3#m8CH7k6gF zX0a$T&ocJ+VWp*G&`QRiB1LhV2(C;Z5O^Dv?eUzp*Nt9}&Q@B+ouXadO%aqBfB)|# zS+`Dka|y|^L9<0*@I5l{P}9a7V@{uq%2GD9pN)nox-Q zc~bIAjoJiREEl_cHf3Wp9o2yfIsdx6E*4XG12DwmAl1u66T2maJ~g>|wqOEm z#-Mf(r9TouMt%i0>2(=48*w=c{>sdsIvC_|PmRoso=CKbv?(f&$&4mHUBN$Ys$#-2WrEoiX z3+BYU+_~I3ACOAxR|*znk5}^RGu43(#IDp*XVqY3qu%XxAttV8242NRWm=rss>5dDY}CEg9>7lER< zI6bAhVyF-rnAQu2}fqCOi>(H+UIvO$!Hdd^t#dNqv z9>B7a8owO@!{9cLiqJeVyLsXO%UD@#!TBd^`1THi$<~!v z50<$_1XeVZG@@BbovQka7&#j{yeC|p+Qwh4$rGtH+9y0U-q?R1S?SUugR*GZ zsm@X!P9as&ufk^ySHnuS2Px?BR$paLlh8tB4!6EkrAxYj zwiM9n^If9*!{Ss%iYa}=uK&RP?iz|BDMS2GtR+s3h$j?bwsyP{nV=?Y2AH>{y~!I= zQKUimFy)i?kue-^Pz|Q#5s{khEmnPVpZP9Vieennlz7+JCU6Bqxefc3DX=vwq#?y%=VY(hdbX(xG`zut$}GroJ7XdlN(3+_-eO;sbuY2wHjc)<>9g zBV<#ibB}2t18%Dlej=ZC#kou#5}t`zqwCh{D52Dj1!@y;s_~FCz8)50XTv^zFm>%M zL1<%f%9i*p|Ap`Bc>My>B42wUREeoo)kAM6WMuw8F2%h&EkDt&trU8lotRXJfCf!^ zyhJ1_Yk$6KJiWc`W|a#%)cseQpfndAMlK+vKJd>;uUl8>wmvsEe=7Bn#@{3-j@R(E zKB=?uexXY|Jd^n6wwZzN7N7&huQ-8h9*}Y!E|g@X5BIZD=BueeP&X5}@uGrcd;z@; znU{0z)E-TGI4_NU4-a~mL6X40;7xj;solkm_plkJyPz;%*oavKpT^+PPht(@M0|ib zyu21ETJu`Urh(lZ=>qUr!eZurFUSri6<1{kikzM1hLNLYs20PGry3BG)xzuHDq*br zs1_rLM`K-koH+PVK|&k;vbe`vI=rp+d(o5F5{zKtWdG`SgQ@di$d;vr#2Yqvj2$}; zB*z{|543{JekP#=k=lacC*o_Mf|o_38JcwD&XZWOmQKgxmGsF6CE^3PG!`o`(ddhReuk4WiF;_df!DeSj&{tC0l50EVZ?AN$(K#_pc@8~O`EdOT@!>(Au6KL;iB$WHA96vbgJ=+tz=K)x(S zt#a#he7$BOrp1LIkT(*U$Jc>7RX4t;6Tr4$TwQLdmCl0-G7LsXb6H20MTbc1Yx|}( zj|f{uJso{`RemoH_7KlCvT3k|q4ld(o=)kZiNktQO&}2CrrG=3&$s*SRvq8hcldEa z*%nK5z9oEdRwgIiJKpWFi`;?BAvJ$CSY@Q`wVdMn4Y?ZLtEE|zp^eMiW=(Qd4!ZuH z#j6I>U?<5)(X!pMPILq7s|r$r6QDlp6bll?}yXyUm!hrPZIAYz>reK^Q0^t`1deIO^3qg9k-;E6Sa|j!P zHvugiaamu&lM{J&cA^UTDFkGNJuzuqF~@JQ1X+41*xSn=v1$Z765(r{yZi!S| zyz3C7OE%8^W0GPha3t!6b~K(Qq`RAZYb^}zrkqlQcqr^~x=aSy3SquEP)*lO!l_9b_yWDqm=Yu&)xISE2dksdD1g5>| zFhcDj;mVYNB5{|*8SY3VuLyO5)vlhb7{Dl56`YNTSRd` zJ79j3ky~;+7RjOHu|u@zLaPpqWHOj$k`uCp3=|?0wgwyQ_!XhrRSq;RK++l1U7OaN=ujVUTq3kS#@Q$_zy5PFGG@PESHKnlW zbE?8l-P(|waRp+?^!50e_zM5XphRIoFN&zKSs)TXdad84dLV30A3byjf^CAy0&W7B z5q31m!gAP{#L;_Xk%kg;uvgXD$y4wHrj3SEHa$`PK0fZ_hktq_I*eY9qKS0CRJ zsI00NLKRaNZbL;-603`?6A9!(*60eeO%asi!k_HSw)T%%K>cKYPhkuj zmpe5kano=5rjh$I-NbukPYV8ReByGJExw_!kV7A zQa8aAZXH0HK&654?f#|mYQ1I53tJv9$by6aG$G;a__aK=1BWat;!pcgTtsQ(ze^?= zMWKo3FEQmN0!Q=#pM<11h`{A);p!YoAUiSEMb{u9ha3x-TPP_GeBjRvg$L4o_x*z#)NHbk{O0NiK|2 z#|1iAmx0PMy2!||vz;bp;$@slsQ}npI>)fWv!rUuW#JkKT9BFbddr#Oweoz0tyH{iEwWdwO8s!v z3*A0-%AJh)N3Xd5t4ge>) zP$2;=AY3&gjfJRU+<1d0HYSFpW%PBpAW0c5y2lv(w~;s?G2KEq(l}%KEPj&@n0s&# zwkOv{(XXW969>6AlE;v7V9$;TZm|aMj=j)i!j8G2&{xT#G7w23^`vm@dXjCu@r)*G zFi5}tWV5uw6hq!$yxLca(9l#_5r&j5RK*2cciV3MQQoO~Bod;U4hrn~kUNz>q6x(0 z(G|!%7I#{~xlUx2Lar{UbH1U>v?9b4^lohSXOW0Nm_ndS>v{rnnM%3EdW|nbT>fjG zoYJVcl;iyt{^8E^am=W&4M{vPsx~%5f=!)n@qwZXUvEtp3{T#V`>TCFs%2LSeu940 zl+^4#qh{i4Wvtorc>4U`T0vSci#Hi0aEi44GP_i`;HP%4BVM;p z0bS|?>G|9T)94A3R?o>`u~Il+xE}nNJckYUQz5V9+O{oq2BFx1G3BWa#gk@y=1| z*_XszS+rq0>;+(Oc7yL+o=RjRBcajEZe+G^B&**lS*#B?r~JN}_jd@V?k0U>K^SXV zMy>QPm1G0h`q+vXY&A4CRVpl;mStY;D7}Pv!`@3wO&OccCya1WJ`MT2*uKoLblGU}ZdUWj97)y1ztkEnW`0@%kV8Av1}?e#0p=`KX2e zUdyy|dcLxX;>%e>(;voz9bbMLe=%!Y<5hMq!8DU(gaILiPH~~JziDIl-dPf&bKq+o2jFTP0QSh3~ULQ6V}aYY)jsvHK3;Go2Ri z^2MYjC{Ez+CV%x1Jj#k5#$^^5b0FR@5BoscC3eT7HGk2gX(IwGL*6{3xz8wXaXCx5 z42&`IAxN1oGG_&6D_jo4HM58IR@HwMWdoTw!t-l+0*A3h2sFR+;i_CJ;wfBu(Bb47V^3;yg3Ws4~S7t6&EW zSJ>6?*OygzKkMy;3|=YR^_*-{Y@;X`fquprsFp``q_S{kGCF~`S`DJy=T*2S7iQi!arp>m-YHR0O^$J*VqK7^nw z#K7vxzzr241E~Tw%UT-(P^JnuclDJ7gw;6Y6Anc;bUe3#kYW3yb!xd95TfwXS?y+= zS7ylb79nJ|u0ZCiU@-QAeyW7UK!SgwxF>T)Ml}^~(yUD8wc3$ui@%M9yh9svA>$3O z(*ofPSGNH$VH;sFNW+GpXSj*04d<^frP%G-7Q_9sxz~N1@t^(2l@6LE&7%-KneVzU zhtHp9G5=(IWSWV({IT6mgwG^{kFMZaE?7-VDvKO(aW_9;XV2=)$=LkEjmhFxTR^3$ z7XGqY-bEsGV`|}1uW85w!y9< zQvHnGZW14aT=@x@uAa?F({Yog^>~=w+u*fe#t%_+d#26OBcc38)^xPalijk7mvNNQ zH2t!k*NGz5&^g#YelE9?VsGiR{9TerT%A^%l_J>fo$tIEuB#&Pj`p3hPa!0Ewit%I zhDj1vs9+ zt6zn*!MGwUz{(X2Ldm>XTk6EQ=vTuMB}7AU!ue&m#TT|)rZgbC2B=vyy1qw=2hatD(1zR=t##>|lqXD#iVMU)&q1aTJU7!p`Y~ z>S7Aa3LSDl>s89_<^iDx+cu49lM}mCJwaTIxQ$-!Y=Myofreedc{3;q+cd4ntNr>p z^TfRxVQ=;d+=xATS1L$R`EnPCj!!8eP)_F&`tqLbsN4KSfMSIG{NQhql`-7Sir)Fc zhfz3}BFu<$^ZvBhK)b#iASCalvA<&|q*TSyD$644k5}vbl4iueQ$m!G^|376KP{dX z=9yZ3F#RCaE}ftcYj49CD`0&Ug_JBSCU-tK%lsfRX~|whzJmlM3NGw)yr%TeF4YUY zn%aNO?A`3`UBmM(QF-7I;k8%x`)b@6Z#vPuST6Q_ke6dJ=|UHKn_FGAl%wUe+E`*vowlHu&(~zEZ1c15mk;Ju{oN`F*!Oo^l8;iT{7)I>Jqjly0>|ows7Rb85Kq@!Pomj_TLIqJ2u}aR;cfBq(@+XQMc?EluIdA+D&% zr}PR&R=%9?hvRMEfHV!47$7W6S}rArqs&(m7#oL7gw%Y_+n!*>Kcpf&L?&fqI(t7i zJ&x=%f#%$Uvy6uIA!DWa z4XJc`}Kmj$*!am++L#~7TO7Zz( zl3C_pE<^@#P(WbGtjdvjwTj+1>1ueIRMZ;Wc4 z!kk)=j=oSzmS)MMJHoZeu`@~%!M?oNtX|s$-)0T_DtZ%-eBf%?x$C5ue(po zG_>O|2A0v1Q7+C3e00J@F)Ec3Nhd*hqhQnG)QPFS)7@aC&N_?9XOXQapTHIYE}f6* zdJJ6w5hjS*3XOct)jU3<_*zB*MlIoq^OW1XydxAR`D*U&Qk)xNjukHSXy*(>+G2WD z>}zyML4~u2XH^NAHKgT69SYJlUZ*TuA3mUO8Nw3}#PyAn!a9NuQ!a zrm~34%e%Iu_0@(`9+Z*A+xyOfLvb4wU}vbBIzhf+YA6P#BR^102HAPjP`wjr#R#}v zR*BXQ!&QmKd0fs)ihB;f8~bHhcnMeWjN5z*80idad&g8$M1Xd z){{3&bcTb_YC+cX{&w>n?!MT_8!Gmd2C5@6e491=zVU9){r=@rg4@M8QzSRHUiRyH zqFf8L%hLaQ)Xx4DU*Ep>GrkR<3_n`zj~a=Q%b}l74o_=gu)08@f1C72VB}0oO0LNeX{zDU%#f|n&i4WVhZ-o0@8)po7Ke<_Or)&nuiL!RnpK(V7UXb>NBy$A z4c-Acw7x7?D=`^#S{POC16aorlQgAIGthbe8sy=UT_%BuxCJ0eb>KV(6Q6m!wf#D%~E z)40YYsg{?Yf>PZ-AE?q}FI^w&2u~?Xe9vQj%>`RH+ zeXtJ%;1!btx+lgh-@?z}nZ0lXCz;1Q);{545*BV7GfS1*Z!D6v)rTn9?zCY#)VU*h z+&f1@_V)fhnQqEdbT+kLMw<$hvA|^X<9m0A)Y@`%{cMkg#P>BxjgsNDYsVHZGLPG`qIUD9|`<_PT2o^cs<%jc=mlB zlAt2Pk{VhzB=~b7PTc)<|Gr_|KBTS{x3GkfACEHH&uf3 zZ&V3p#(%7qNdK!^(g{lbH<>Uq{*79~@z2!~W`_TymT>-8)e>fgf1;Lf{&g{?zsZaF z?^GOSmj7n8Uszlm`#k@)E9R#;&+88I=2H?rX8xGa79AIHc0`@EAA|38ubT3?T4^z350 zd%JhyjqDZeq^C-QGiiOhK0XXl9gOVyKc^=z*Wp?8f7~B$^#O!gF+3eX&R@FR{Xc$Y zKGQa#g&rgGuM2DFkAsR4&aVNmR$c|a0zv?|rKJb@?35&6C;NtvV_re*{7+Y7sKKxw z5@iah{eAAtk$MvNk-m)p>8XP}3T(sT_%!*ilicXr<~{)aeDloc>)VyRAG^K$b%`|i z*8@nU3&_np!n{_ZV4jqk5UCClDN&Ofs& zBR!trX)w)&OF1LD9%<N@+YP^>XR zXfgh@9HA%46vL+YrGL9}>@&5xR>xJ;6kr4`Z=pDcH5=J5eft{<-W~ z-mE2GJtoyex!chdKJd2!8Y4%W^VOC(m{-RnDj)W|XMnui7gjBU1o>X22AG(9j%HB6 z#dZR0cNG^x1oQF?+znbW1IC(W)3CrYSJRt8mpw1;cg8JmIfuQzny=p-JkfiOWK<-W zNUx?blV_hEd8MR7;?v{f5gZ{ocyUg(Pr@wiLdL;HN}*uk?Ct6@39&wI8W6b~+|nTE zGb_}q3%x@Y;!R6`A2kuEHdwDPjxNfLCM*u}HLq^r<_kQ0oXg=ayDji~Os%dg{?2>k zLMxWp2%(i)!?dI!SQuhVZI za_Hp*odBChBf#}PhE6#M%Nm){;Tps)^W>|d*aR1|7v%gyeP3UBkK`!3Wj1iCJvX;c zFo^~D@%p7@bqiL90XY7P^!NzPmBsdr074{&zXWSG{8_R(4+LO=kjfkKAq44`XiWE> z@fkst@O+cyha3b2x^wQb#~vjU62YqwmGa%&e0%c&DTiN-moDiAtO!~+RbcKE?`r$i zf7^zrzJE>SxNoJnTbrbMb#F!rd#y=1SwwJ+bMoFYy-vY;7*e8j79^P+^YL?lje>&J zsi(;GIH&bH*KhI(0L%^&=b)p=?U;}Lq(+8K6sHiU>o(Qzf;Pc%F42&e<-c}48GQd}E zrK?=I4theYCp!A5l4D8W4|Jlz(NWvs7dcR0s7=jJM7Y1X0>Fkr=Tkbr75H1?>VFb+ z{@L>nl3Rx1ny^L(&TTX+!|~`W2`I~2+gKFXCtGVXXXo^uHoE#orG@sPiw^^F!U#i! zqjjzk>|1i5uY_hx=c9wBke#0ArvI49+_QsD)uw=pzYplv$@p+@&NC&IIHS zbj~>GiAR9ShY7Slb6hAg(89Dqp^%$nBPtG7(nN9yQs=!2p4CKyi#S3DH%uU{;t$Gu z^o%cZMX0xk8r(Saalzao<(xtqOjHJ1{9UB-`I2rXDOx&$I7T-3IJ?4NJbU*^&q%*V|Vv=e0siPn?~q9w8OZiCLiU^7R8ytFnCutgp+|Zt<6!%yF~J3t0$|lwq$c;R zpZ2i|U3>-aXmelyuqrTUU6B7$7>feNAvaspbqT+tBn8VNQ{@Y-W<^Cz9`MNT^a-iS zOx^3HSi1*MP#5IKs6Jent7b<(3^STMz_ zaGZ@pobua-@MD7c|_T-EhzCZa|~ z)pbubf&3>(W_uLnM15qb_o*|xnXR0S-U#@WbI)US7Tb0UsV#3ya=uPM3B zZ*sxI&Job*lb7ZxEYM)8O^8V}7a%~r$JuGnr6{n&Bd@^;b+}#qM$5pqIvvk=W9Zq& zF0lkXoQuz7M}wFvuRinIW}4f z$Sx3b?Rmm*&UU-{Wt;WD@jyApwL-xNGI6n4(E5D9Wdm^DST`M@oq80#YA0jfk}zWtG|xP&E$B@6om~)(tNb@6tS)aRJ`CI z&x$@|B5`xT)bBDm!z{iBDOC0701u}od$Xu@RRXGF^BP=BZo?|_Ot{bZ)a9JQ%*&{Z zcGwZB8-(LAt5bD*P(at}hUQsX>aA>qWn!ZyT($v02`7JXmgBL(8XO)F>#EN-tppJS zZ||0Dq_v##5x$%}9eDxFd3J5uqTU0^NiO4W zubMM{Mrht813^iH^D^9m@xpRouCEge#p==ufXlD)9aHs8*Hfq=JX()7l7IO2lF7EJ z<<4j=eKpjOx()=?n9leF>O-39@lAg=*JU03g3vXHuu`CPvk+%Yen2t{3}_WC{~RvbV+H1)4K74LK{?^D=ndZ2ce1y@PWv&ZDLo+sTP- z+qQjT+d8prC!g3(PHfw@ZQIWNW_D(G=H74B-n%t5HUB_Y*IU)7dY*oJ1Dz`5Z`QF9 z1O&DJK0ODY&9Bm^g%yY;A>*s4-njQ=MgnXrXLk_w6>3xi9A_&gNfyh4AMLzQ*ic|t zGM-Bwxr(4=RIyVo8(#I00=ACHJB+{$=Z4(>Wv>IvJLzly+cqPv zJyb^Zfw{{jF_7}je#^u!Gd=bms z%(iNy$O;NhkKv3pO5T3TXTjDHX+as24D{|H1TdZCA{oP$bm@@c>3N22AjMUS1`)y} z?Gwxl8VRhN8#vaKw9$kr=!Kf)L)5xq3IU+#=|S?H`amL5Xv0*+%Bcw7(-YmrOLPnY zW@E!377eJMu#0VDG3@|k5gTjeEY@+=`1xV9>eB(`w4s-pY;&iQFaCu95pw;vJ3Gg@ z8ApY(v1IU5IX(qQBEFLVedU&#gs&m;1|7aVUtOk))LAtim+TCTFw!*Uk`f~=>fnCP zJY^OgXki^kI#oS@RNo;6IlxmTM=C*kP0q#EYt!SFlPKU|zSr)x@s*qCjrweBoCFyZ zB-OuuTPUuc(v}h##Z2F`lRT=R`In8P#u=;i#pDbxNMA7N>kM5PHl;{ZI$`(e0wr6J zCrGBKDk6iZF&pgJ>wIUj4BHYyF6VGzQEe@9-!G7g!*!@;0{8A~*4E`(jmw*}xYcGy z#PJ+_aD)Xlu)F!c^a+h>>ek<#J9y3eQD1-hezkL5E^KJi4Msx0hjhZ~By|PQWTG5GvBQcG+>hZDnny{&4gx!cgG*-#0(9fH!ooZtvr`rBe!%HugzlTwd>5osd#=_GWMmQ z20hJme0|l<75QVR8rPwpu+2R5@wa2wK89nQO$XIW_0O(3PC9&>XppyobCoug%gDcq zxVN~0UVzwy4E0sM^2h0a@Y;aWKKU5^ROu_=RSRPn*mg(2nJ%tbd*LhM2%)~m5;>({ z@zT&j_!K6-i|oW|g&x4jEq_zfz}Z@bA&1~olF)8wz*Ip90a&UbW)dp-n0v}FMI_1M zo$yhA33C(G*dF-0i*#NeTH({|d1}9Q$o8S+ z5Mc_Vqvr}~q+<1q`B2qPAYnD|$#Jb5bEb5G{-Clb9b%VHc+zpZRyV;tOsxN<_Vlhc z@DJLsN~qQoyGp0(`!m=r)9@~Bt8ZF^X%JBeNBhL&dsWWOw%d3;+rc5w?fokG$DY0w zLO21XQvC|1uN zAtxFSXI-uPhYX7!R0hm>aUZdk49j!Cx7Yl&lExE;@4S^^snWu+du;tok5a_4GCNsM z_%Dpw2n^b*g$1nks7D+LzS*C9sY;)}c%0OR`69?0WPR;Q7K%4PDUhJF<~R;w-nD02 z4*o$3DfMHB47Mza7j8U?sw${mKI$cIH;@XzdnK4NdTuMXN_l^?U$;_yJ5YsrWbG(M zT7_m!HBwu8p;N4t=d(kC1VK`6d3v+V@Xx>qp*1`J5#(N&=e{;?9jD(DcwLzjq;7`m z>vhWqZPxUBWkf6cWzX6IlXe2|#!#|UPx>7?t9H`pnLLW5WjSO3z1+jdbXlz3U$ZcTcNOtU%6Xt|l4}@VmmJ|tU z^{Vbzx5f=-Olv6jKg_ZYW(WLaAnO<-#@>4K%muvl5{MxQ)?BmXe>JM}HMRg0vj;hx zT;PNdKPgk8YwK+|ADtOkW%FLFKm$~bQ0;ovhrBhRe$P*v{537$53Jd8<%>+StZRxK zZ8cfl08%G-Tk4^HA^<6=^cvKMB!lQ&@^7w&v=3TVd$DG9$Nk)3G@wQZn|#{zt;~W! z-0G{EnGMsdX@s7$Dx1EL1eo;27SW%bWKgfwj zhFG1#_eELQrx$O&_h=-z$$)!huZdI+BRYbCo}7t<|X@6zC#tAPC++UWTms|eC(*ei#pcQJH`!-Ef<-z2f$+a_qmVNK;fIHc0Jt#tH7B?8Ws>=GK}LiP2@+6>82%$9T=r%58hg#ZL977!&wt?(gXz$3?0QII_p}hF)j$Yr_O`k1}LzS+Jlw~ zauOX&Ch;ju1FT+x2Ae;Y-^j5Y<#sW|nf$m#MlL=JdUA%4TekbFt(dfF#sh*w<4pW0 z)A%(dL42>5#S+=8cDQoFBul>)yyGF(;Sa(Ep(#9WwvFmS>3FR+g@$ahr-R+qyWDPh zZ#5ap+Ys(f!upEjUlBI>wo*^+BAWYRc-8RJN%9weet2Ps(8VZRrPBg~P>pQi0pB*ap;bj0F7x=q(!|@^UssRMN8t z7fhfCvY0x`3gz_r4fT0ambhLhHFBq@3H6)`8%S`&iT)ZKi%!$PybU&PfE}pyO)aHh z`h;Q=w_qCnC0mJbT8`vda5&I=FuF=$6-}Y?X?xoUya@zomMUzQ7d8$Q&8(8|r-oB0ltb^$jurc$%r~s!5>z^r1~G+E%JyqQA~u{ip82PvO?Ss# zAnB(}R5bKrHh#9&%g?&uYWY^7*0xcqp&Gx_-gYTI&Fu^I!PrD&mh;TTX4olN<`F@) ziMekf(corSFPk*Dk}S{-;=j@$FWH|xQ#6idBK^5Fh2>t{Jgq}BTpORs9W(<)W!)Bp z%(=)iKeiE^#kI;P2F=;ba|ZH0wvO!q?IB>7v4*HxK2POjKoPcTZho2xiVY101#{Tc zk7Im?M%)Eg|LukMxJxBAT#APK&R7pR*w(Ag(N&3Coiu2iNJ)h9_tn zF~tY^hP~(D0W~%kqk#_}vuBzghxywQ9nmjKsT2hwl1AZkU_P{BK^F61EC8FkJptcJ zklDU27sW3ooOT;-^x%(bpZ+4@g`W&ymP0%C3cjWTNxybwyir26W+r^^gN_mZ07t21 zqwt`%7~43lDmrad6NYpMvZaw$W2nd{QvUFxndVj2zPRVAtA>Rpbz> zZU%?SEC`lV-(1yZDZ38}d#B${yp|J+(x9nQ-;*Q|yks2R>%t4}?aad@oPjwy(;9^GG4b|8{N8`=BS~^6&Bykb_#QkHiWLEFJ6m}NcZxO9VQKK zfNby6FR^eo+%SX`sOBsxXswz<9WI1k4=yul-9MvTCB}|pUwlEL8R0FooJ(v6V8GO5 z^VR2utiCY4P$rO5)??@;bP`nlvUqm6 zHutspeB52R-CTCW`JwO!YUUO=T?!agCt2$Z?z}G4eU005&P$y3j1ZYU4>qj$QcUyU z65klN{CEfid<)tgO~Y{3a}Q%`z4iskWNi^RMt_4;#NN{MwoE>hT#@FtRGv2yo`kDLn%KLg%u;7Nr-?Hh+s%eDi z$_4Y3GpiXzcS++-l(nqLdn+8|ym!L*89~sxr`WEb+d1$AnKw9+IwaOeow^|T=17Z= z?QhLa_VY}fqIVj&GawdzWitYOceyj!DeyD7Twc^G6SVbVtZb1?l6_>_g^e?z6gf1EDE{68%Q z|3lfqzd@($|AbCC|Ffvs81%oP<|uH2e@ct<-=k(0w*Mcfnd9H0=KnhX{}^iK_)nl_ z7RG-K{f~M56Pjmb`d^HiSsDMMEe4uSCM_<$BQ?9U8E0*Bx`z6z&yx5fxUr*3<78u~ zJhC#w+vsB&(yzKj&-D4-_QK2yW7|*+L+Y^zK*OO?zff{ete!Xb1j0c#1EJ1gfi7@ zdORQYuMUoR^WH>fU6+~Nu&wv* z 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 z%0Dp1wZ>M@c&Gv+OIv3scK9P+r0l_VT91bG%P^x_16>-h0Ly~Z?kPc|8U@8gDw63j zox>W|#_@S*l`@2n0t|P5?2H^oC6qx8s#W$Ze;;JNC+qnZN`!bz9iqkz)<>G;AJOUN z>B$4EGz!ogJ?*Mz=|{m`7`3uIsMrNXO?uX8*-yP*<6iM;lDTIg52ZV(f`x9Aj<;5W z8CibiunqXmc+$T$M#L;NZ~5M%`X(1N~Ocq4I?P^=jW)KY}*Z89aH{n1P4+dN=cqKVm{-3Pl@^^{e zi3!5`+k$N=>D4|HxGsgT87(oG^C$OuXQzZ<<>GY*+Scbi%$%l#yhdR^4)faU&ESuTyb^>fSl{+`OhikTwUb87Jo!uaUm!J{s zn3xuYBfFZ4!753Ts1ah+WODG>D0f1=3mfrYRXO&f{tQEdO+!!RWF%>s&EvI6)s=ur52+h$97PgBHIxyY?UMU))j*xbjI4y z2beauaR?xB47S&f!MfJ&b*zd2dPMq~BQ*_bi!< z{cR}_9RXGF7_54CookPB;7+?}PT5Zlw|b-d6B=mhC6WjxSN_EAg(EHJXxK3n%fHp_ zN1nn-r=J>-vVPS2(csWuREv>Sep!~ga`}r_X>|t=_Y;B0;P^OwTTJDzw?8TJg9am! zTqWg8As1RX#)uc150Uz&Bt8CSAcP!N_c1TcOH9EQS?Nsb`Q_ac_+Sr;5C~jKl#{+2 zVA-md>Tn`n^T>nXwwN+J(%vkqUCnS*ad2Kyh#-rW)2`qlC&knvBx@g#fkUrSJh^AR z-lW;Drhq1NFPi-@E8I^Eofw4Bo_|&#P(U|S%_h#1z~w^CJVG;107e?|m)C@%G`po; zIzortZTWB9Wr??bcVCxl)QmX1$V^ecrfw#ai8J$*fRI!FQWQqDD!bzLikCE0?8sVP z?A+%$e#@rVF}2!QCZ^xWJ_Qe`UA(4}T{+j%N(|r(zuW~X_}bf-`lC!&4x4&?c*V2M zhx3NOyAwElywp7=L!x#$`ccnPThgsNNib?NQmI+n%ys zd52cSgj7yRr!itdf2+0m@az;R(jtd&i%}GJIww3N#80aT5aC2n+*|c!vvw*s3W%E* zhz9i-IN&`F8Y*~X&i-A+wLF#N9G@4{MBr(_fb3#3tmBh-gYkjf zVlw%j?d$3jy-ftR~vQ0ukss6nQe(r0{TRa7sRS2INyOPUPU4*OGBnMc18! zT*knDW81);WtUL6!gI0h64i6aaQd)4Us=8Wn8^vYC_izIBF_tdq4E|ecBTJwTDkirNCJvy=ylK!!6B57>$= zcXKs=PTOh;LzKHNs=)SoS&|;A7`KdRZ)F7;w{HX`cPwuCtav0(>M8y}V0$C_%Qhzm31NCS}ZAVjPb0~t%R4VJJ=83c{&qkfad58oD3Ix6a z8Qwc0A_`%@8bttfT<|Wh7b@-p_PU*1;oM&fH(F`jI}+Lvkn8YgW@AMhAAnw29Gm4& zAJLXo--9!$P1V&dN@G1K^C}i>EOVpcR#qAmPhAy4OFBXU{Qb}{_fzs&dg>f{U@Bom zvm`+My5E@I@yWH|ds^#ftO@tm&#^zbn~8sy*|~G2)c*@_?-;Aw^RDTxHEr9r?YXAk zY1_8#HEr9rZQHhO+x_cKcki=z|4*`a(&u~}BN>&-ld4oI*EOD-osnnaj_JG|M_Hh4 z)E>6T+{gn&60IP9(2da4U^B;>9<P46s?!KI(b1<+|f`*02G3Un{g8gooL7~0%&1nTVm=W{K4 zVGp`S*$_rt|7_5TgVYtt!P26ou$?A?M9eY9;F=O-o+E{TFx=P3`??WOG5Bjnk7!;8<^TRKsSGKO_Y&W z(Y&mugHByqs)yiV<@3?tHQ^RLfjH$SkT#}eR{HKw0gHDm1JB*F^Uk+o`UT`V0R(Yn zrtpgR;T@;$`J8H}&J>fj8SOCT#V52-$u)< z;&AkH)@mu2$LTnU1tHi?Cx!JGmL1|L2-otSiw0ehZ(eV&=8i}j@UEA@ z*{g+Kgx!3oXBC84;%awRaOfoB2NckbGCl-FZ{^2xhoepgeY?6tpW=xLb;Of!%UE)U zX&1ljh;K;jF9lwe!iHnLtk4AeGYGXrQwc(Hp6d5Wx&Ee>;55pT%s7R`xXVAY78HYZ z;+lJxIM+czJsIJH?2BIPn)E*p-3C&Z=t~&*6@%$T(ZnOLvU22K6D28ji&f7SVL;VUNlyROD^au?k&Tx?f>v zBvBG%lYVGuRKV7U`pyDlJE|aAPu3~%7_Md%PFB$6Z&jMW&t&f`MAN>7d|GuJ?*&)4 z$T|2fq{rhz!(qhYXay!YPV)S>oYWzmm?p(Cnyfe9-ObXnoU2noFo2RZx=2m-1auA+ z)r5BomG8bPQ1$UJzNHbKl#-}k{Nq`fvZa$0)6!yWy>qCLPp<-E^Ig^o4tDm0loNC$Jv+u2QDw@-N#AHy*Skto=Yks z<8%!F*W=5;GyJ)w_md~NjfNKfR~Iqq$<7QoNY6KaynnjRzhXiE>&G58W(M|ud&~6y zM?=v6S9136VA+2zf0m8yUy&e=|1vov{-5Nm5|rd$Rg2^QBxh`_|8;W4#{M74+5edT ze~O&3vHw@d8Ph*QbN;J(asG>Xu`~W(CTHybNpzXzt!ca27Qe&IA7nB-QgF6x{@^3e zJ$)@jG?9F{6_BP59_lasR|M(O28iaFHiz%Yuw~Jxu3Xbm52GrC=x4~FPR;duV@bFA z`|5ma#Mf2z=VIsX;_l*=f~-3 zgJ1XSWXCKJQ*=>VFQD4j?V+S)=j+wU8;ikt1H z5!0^@Ysk0INpl0+1G=Mry%+X7P-|wweeI2-bCXwB*SjE|ov>HW92Y*Yf#9st^Og_P z7CBcsrbV{B?_V4UJ0*<~MQSZH1+O2@>k2M>BZ%#aJ_p8&mYYk1bEDUiFdtV;?zc86 z1r6H_ji9r;uB@sPCCx2!3sfyJ`(T0b=1R?JQSV+YKDo!*k9}axv-YkhO-S-CV<{^1 zH#Pde6VuHV{Ec04YGq3nxa3Kl@N+5JRLYwnDQ#2CcFlu`?t7v2NhfqJrb6b{#fu%> zKlT14W1AU3q|Y zmaqmdhNlUTG9~<7=S0^uS-9p8w|u0$tb~Scl};xab6)X3u*~FqJ-VHjpJZLggh`{o zDf+{W2~-EESw!<7^w^jdt!PUY#`$;NCdJIsxOU@JZ=j37o+@lv%d~Jx+)S1zAkal- ziQWt#h+VS7i6m_mlwJ#AFZLqfY;|9->cgW$c#${RY6878KjV6@YC$A;tgx1R4#cM3 zLCrV4K)q6e8Dh+ZubnvsJR`X(jI=y#F>n!@>_s*wZ> z?HbtBc>$gev3b~7ARnRJ>DpQ|^xcaFCILzR#Jcy1S%8`w2d7RqqjzSUARl>)Jl1aE zvOhaWcwCB5-%O{$6oHy9M5TKA5_7>50Q=BXS;((F_apMHLfdf}F7JAoz*9Nr57@BY z&&DJhCm@{wx;R)?7PuoEqEB%~2dNiDT4G}Zg$B#GuTEN|+5nP7l15HgTIh;P_IBF? zA2<{zvI0p5xGF$htEWp5M5qC{0K+#ahKUBeTzs&S1jlBjlX{CtP1)~wq2b0LMKc@cn@*QbUA>KD;=CxG?vA`Yr>XTSsQC#Ota1PveoiJ&3ShQzuJA~7ZnI4Ji zjaX-&IN%P0!;8yf*VF={En2uo9S}nhuVXef-9W}2DVx0JLe5mvf z_<5r6X$NDRM&@+kvG<|euQA{qGd4x34}B+Q!y?zB$6&hRXp<9NXsc&+(lS^oj>*&> zDz$ZTq02^2u3XfFD9M~p_tnc-^7oCzT`6!1pe2g#vI~VDtT5BZkZH{M zV$Ydd9r|9S1X)f%wHP-D9kT{R-hsX)8nzPh@rh9ooUiKF;GQbu%hIbGw=ng@FXw2N z_9L^4(Lms1^sxJs?<8HR)n%kl;_mQH$4{87V`*RhI{q1l1Xq=^-^65nJ6^>CRpgni zvUb!^6I(P6W!I*gqJ@5xUoo*eNJ?TyH3_&V7U(kGl~3u^=b=HjQN+*E&KU#i*?6(}RjO0WYG1a3t1Ca`NP8vKKrO^QqWYUj`6aG4?vng5eI4ZPPm zNoytF5@-?R-0*kC<*oeBpOnZTeP{6|Dr+$>7<~tmwc{XmNteRB$yzA-SXA4D2ERES zQ?S#!G1ZLK&-n2iATI|ro$`a6NjS?)0GS1_3HT1*4DY8Fl1CJ7E)!QsU+nnmKa`-#GVDR;p0@nzMT}M=uBrv@NLY*OPsiY6LT0iDL zQn1GKiXww|7n*KarMrFjsa-`7@Iv{MvE4c+)5}LN3?#4$?Wp%y{2_t%f{F!2r^H~o zOS=;D6n!UKZXbtf#T#8cR2vl_1Ta8DGQ`;ozaA12;oA1?FK>Xi1F3kV0#bBHXe(F#3Jk#`?lJIaosDf?xnmsMq+3ROEiBg1qE)Nb4KA`Ek5-(~6aOk!jQyb;)Ee0x>XM=%$Eu1l(oI6XC=3i)ObxaejvR9W;E@ond50{0FbHgIYYFJ0?_Lb=xp`D_X+$OqP%V|6-&ug8C-( z4+1uz%h{?MGjV{w-H<_7P_zfeKt);Z_zD~sfXLS$tjXN!c$}lhHyoZq<}suqGGFZ>BUGnF@&LSuKekv}!Zzz?w?6XekKUgtsV_hXS1Fd7l9 zO=ORoCJ1N-Jf0Zi&txFrW5JtAscWd%0L`~c{?7-8Oz7c0AEM(1N6=|52V#BRy1aQ~ z&3#k~leoES_g$C9Eq2&J&b%p!`MZC(N8Ark-(X186?7=vaM|J6D-xs7qCs%VAl*E% z@r?-4>xE1vIlA1HP3-<2nc)5`wi29S5nS=SbV3B{r5O9G3s~V$gB%Uo$A2slnxp-8 zZ;r9YE>ePPKhq-djLahI!$;bnb1EMiu@w5#^AF7EsC~9Ap`A z;XND?yNieX?LNJgpD|1U8NsnqCcRtJ`3VpZ`X>E|+^_LJM#bh4MSjgkbgU6v>pL5c zO)ytJ8|PMYLl*2)K6~WmDnw;+B)i;}B&01&pNHajM#eJ`aY|!6}=czVh2e6wQLn45cn!si>?{=1XHwG$? z7k<%=J42!Bk2NlGn>AA@atrV!Gn)x5p|ENCXLW4$Oyox`nvR-{a-keF_N#U+XNvy4L-R^087MTwVxXJx(*ftvYwANMm zJMIl$v}+-xr$@<#L>L8Zx2~*d@4gda;p1~`g>6mMQ3fMdaoWonrE8RjNY?L6Fe-O8 zt9w`Pch?#N22*Qh{-X5h6tlvwTD3gqjWSN4m}hCLW-PzeUD|>$3RTV`-<-UqNS<>F z{y|%dzVxbXY4J^JA#T;Kz{J@{)jbuhZ7?K>c8d0GxwvtDAl#mS^Uh37zVBBORM4+4 z1OFs0(5#hMgUETXngi5j*NrH#5aj@Kd&mbnjMohYUPI=nn1uyjBbfF>)+VrDx|swj z{wYl~@0}Y*vU$(O2SIfJq7`gbmU2>sYyeYpbrHRUZF2iJNAecg9WcF7@hR*!s> zSQjbFEYA{;qI&msY;>F`y`ZtIwgYk%LndBh--6UaCyIr97H9K95UDWN?q8Ez9)p7F zk~7f$w!fs!pNtO^G+1*cp9w5Vt&$}RCq>N0poxb7sc|@)2#a(Lvf@+7<9^Pb>VR0Q zqboeou8-m%Hj*z+{tTR6qA`MP0KRXRlOBcJlWL_E{lSkc7VGN~51Em@J(2hgGf!aE z!$bb6DvYDaoh&9DDvc;cDnfLX?|gwi^7(G~U8yb=I=|e+Yn6%6cl|<59Asl3+oc3$ zbi&hQU_ZOwF=b<7)>q_LNYZ-Al<}HeWRjY)DII#$o69cPE+|`0KAlY%Lq1I7@mG?% zHqkBf?A*~PHT07#Q-rHkABexS6`OJd=-s0*BO^{)$_9etu=>8Mc#7ImP*loUl~~&% zlbL2qb3+sRn)C#;9@@g$tE|skJZ0J-3-6@{}`YSJ3Hcji2WL6M7$~zizx^KA?_%S2RpJmWHeFeG1vKQ+P$A+NdxU z6Q`2|`SB=s6L2F|FnZw+k40kp#lvGJmGze_`w)8M>6jlf>OKvR}CLD{# z^4(1MSJdF1gCGC4m5@)#>dNnxjA^`|dvocp7s!{_dJM`52x)*q`zXd1L-U!l6=Im+ zba4{xCOQreDeebHu(zNMa=aEvT_8;X=DW1mX(Yw%pYqoT2Y7*zdBYjz$I3K*RW^c_ zN&4E-MxWbqtf%+%WQ{isheR{uVmps$@NYw@r`$Wl9QqkkcVaEcBcdsP@& zcu{UWCKR9N06-7t{mN>L3c3e3wjeH?NGtfE4{WshyGR7?PMb%ov^9D~NYhtXPxlh< zx=X6{$D~kp!ecS>?{d$kM^t&hfC<@JX=?Y|MoCWR`sVOa<#k+}&&NcJptiWbedTSj z9$nxi6Ss_{0a^mv@3UgFCF0omQcn9*me|)ntfbK>CS2jOGxgryv$-Ilg5OaT{sfUxl@TZjnDlML-eHpd8rs6gqwi4Ivr|eXnkDHWn<;Nz4=h*Al~DC z2W==yscmvF8fey4Y3j=~Ej5xq2yb5c6^U>yF%-!2;fRf|Uh-y)z;w)rfzgi}qL5DV|uRV0EmlqpUTXQSQ~;E{zNqwrF=Jp z-_4Wxkn`7$a3T=6XEYq<&N=Ep&U$7!0(r6h*nrk4%+MLyp!+ z{z0?6-BB3CP&+B;TMGt74?$qJrB7wK7)&S6;n|q_>hTy$u z=eLVwW!1Z3owyhuy1%xpb&%n~r1E{Z{W-PsIl}jBtQ2I5_$K@ycG+>``?~kx>Hyph zh&(`Tk);P;na&C!pO7+KG7?pQHhl4vp1m8P+#8r2Vks*$9^@b59%@>UbxiNpZ*&qg zgQcZUi1_^rX`<-eIPb;&V|SuzQ==hwu%UhpyyQJ1hvCnIh&% zajg{mK6aeV_xvH?GVu?#tfupH?fraQg78VI*^CN_@E7gQXq0B|k z+r!pK`DS&uXD_DCL3kqyevF0u<4wjK3EUR?UM4xn#vG*y7eh)2+|X2STbArs+L3b^ap3#+;&$2jdgr`bm~0} z?2(H+K+$fE(~s7u$ILp~af9=tjhrLSzHs4g$V+F#{8)hpyG$HuP&fm(=OJB7K!HU; z+RmBNx6TZK6|1RoRu{De#6DIQ#mi^n+bx`M*@#??HSi z6+k3+OW~nr$5aIzrod%z)vNQ=_}Eq%fh!4{@>NJlvHASglh^pew-+<7f$@~{xa7?Eg zPh43?jsTfUmicE}6?C8kWpD9zbjpNyOSmCB*CM$0kzf@9@Gxp9a?J zN%hFBt*j#HcxIDVJUYCN3KnOe?m}QPLTY|AArBGz179C`99uG+I?%@0PpHI<@pp|KB_Ui^OqTEU>1TvBi(m3TE4Nm({{Xs zF~=sm%g}HJkK+=gGm6-6N{=eaYX^-<(BgjCg_Z=&{dG@c(u}lOlNh`i$xpoO^g%j} zt)ObRw{OA{F*6)##?SlX$v9(3C<4meDdg5a;t2L3-5I}CSW8|TmfW!+&d> z)-=YGB0E^Nqj0x?YOj*yE2*#P6$Gn#BP82FC47H(#Oo)2s9adKIFP%QqBV>7S(N1M zc$ch`&w=`Q4aW$ILfs+A^2o1`_xqsg6j}tQaufx1Ah*M*Cm#qdHtJ*WQ6?L!MyvMz zAiP2MR~`1tua(ns0Ky&k_+080xVU&F>pr1Utc6SMLD<7C`wFzG-C z$;kB@^NK9mt*)?wre}}1Y|-&*+Cd^?uMQRM0_Kr8KQgm2Du{Ji>#utpy(p`)+=Z?H zafX==)COl{m@X75!;pk6LKSxo{iI|yfD6i>@Lcj=*tY@>_5@a_1N}$}drW8jx02M&28olL3Yf^wbermR&Hy+&d9t<$U4 zd}bNRS665(znNZ%(p4dD?Y~VjrjRz@?SJs!pKfQBg-P}FI{sGY8jM@g#?5pfZnc0M zoXwU@;6lR@CK=lc$+=f!3C$};Cpr41`tKwZHsoNg0VoR0O(Xak#NqE`IJ+WLQm5X! z@a8-6P0cc;Z!D-Ej~?l2bvo77FPXxR9w5B z$>&fvxEw+~w!Ob|JDDYQMPwt~oi(Z`fwCAK#=D4w!`UKz@HhhjE#usNvyNU8dfV>C zDabnW)m-}M!TTA4;8Nw?SJr31B><)MEak=v$T$H@Tnyf=IS}jB&B2Po_3|1f1iQ;J z&4*f{s4uqlRh=&lY2 zf(NqdTm>{59qdwT0YS73KvoT_sLLTfo1g0ZV<$~|lVkf+Yh12u0O6P&9 z!>Ay38WT9W)a=vsqyZ*-+xX|wV12D(#u7sBqMq`;lw))$l+L(16|DMD(_5jZq(k$j zP)X34V*IO+gsM2XM6P}BVtgErW1}3*Mnp#dz~pJsw41XM%gJm>R@3lxnF4k%Hcvqu zNQtdu(**@DK2g;ybyBkqsO!+)F>-%b(7v(-Zr(Xt)v8_O99MT|K)US3fVwMr**qqz zM^(FEU)!%UR>KNA;<#X{EsisCeh2~)>m)9SbB0>f3{WLS=h6LVK6i#J*(Di^LTo(X z*`sQLckM6yoAMF_Q@aTK?(tzz+DF(vRqnRZLTUI={z0 zOv+DrJxmT_50Gs~WyWufld{u07((3xcFr;)G^bT|2qK5(@hJZuJW#Hh4x8Z|CCbe0wv2r@;{WMzI_G?h=LD*9Vc`vI&}z zdnNFi*pVhm)5C(=12}erp;ZkJug}XnJLh;{%j^LZttQ=IzR_Q}S`Bid!g(UUoGFjn z9{?r%>AN~Wg@LBu+nr#Hk^;_n#p?KBM{P|c14_qT4ed>yRzMswjQoLVshQ&RK-F@8 zftuSoxtt>~mud$J z6IaIj1kubpoiZq)=AI%)xz$H*)`1=(V_AL`i9URdm45Ax>hIF?t*f2Q&sV3fFKl<7 zdBY6}-e+yXC)AnjUhA@WZSz2_+fdKvpe&I3aiF|1y|woV?(R^tbYypv96PA(hX!-y z9J>$`HS;hYz2!!Ps%eFlN?x=8j%(qDT6rQZw=DLz;s&v{g$?FHQ5EEEBQ#85Wp4ct zJgo(*ODs3WPgtUv9)M_JDwLU{aV}W!vgjO?VbsK=1aTt*A%+(#GYbx%PS|jX&=5(6 z?l_*XD2o<3b78&!l1RUx7;%aC(+bt4MEA+B$k?R-6Ow9w*Ahexj;KWbc_?oKd=9s9 ze%g<<2WPLxxIXCLcus%pNGO3dPrcW^tKYKC+w$6zM(CO<1&SPn;+n@ZSfSK8-3G{; z^%ox`w_D;yD|p0UXY>y|zoeyd&*-XFrJK@1%8^t?Jh7{(Kas~0wN5r?xx)o=@D|mL zok+g2?uN27;&A8d5gX3Uk40f1)zAF(+KgtNyQjK$Tv9+L;&HZEZy*N@T^`Rxg$NZd zG~+f~eJ%=tT$CJ!)I{yN?wBlEKKq6)ua21$ry4Y-9YvwMp!_x`Gp!Q?~MTjm<} zm@yk|{&RpjguDsq1m);Ok)(SI87TO7GfP*X2bt_o3@(!=@e?q}HWMZuLq4y`jwNX# zsaA7Eha}=><&F@K1z)w`^h$ggz$7hH*&Kxog?Az{a58 z?fbXu5#@72(?CYQe2YdC^mkuH&p>|W8%{s6dkJX|YoCipdi|aEwj?go(Z?5UmDW%N zYh*S6bDmw==WKKOxV;?~QLFU`a(|@}6|@zl)F6{!mk0^g=DUw0N576YKYc$ERxt2K zM|Qa_4Paom1enV-N#*G>A=f6#WC3B7(B~SgkRNJQCvv)O6|_k7^uiDy5B=qSk2xl~ z?r)IQ^au|D(Gh;ltT7=@lHM!J10rPmO%2EXxJ4AeYM&kr$Ig6&;W63?spj#9$Z5q% zG-n^kntnJ{`xW<_W9Cztc9be9cMYk@LNcOTC|j{+)OfAS&-7BK=T?k&(@grejn1pV zt*6Azx_~zks;~aafDlhUPo>)%Pqo^xBv4)aJ0jE1Vo-?NY;-W)NgQz0euGrBQQ`!2 zg4LmcY#`ejn-0}82%3+RKsHaNiA)ikJ7};O;v!k2aB5!Eve!=hDqR0y`uyS$T3-fc zx0$}we$ZwUHvil72Bn+JkL0KRnfA$SiBsRX=}&-M1*!r6{er^JV@r<(uGy`R3VQ5! zJ^Rk&l-YeB)on`G8|B_uw=sC(AoAmIXjzmbhT?Nm35x;c1<^TZ9PC*iSo%sE_w6E_ z0`|~Z`TI2v-2yL7ju4e}Y+bxR0QZ}L>ms$PEa&cp7$RQN? z&Q)V8_XYmGiWg9&`%Ec+8+#6Nr2HtNCcAg?l9qG@XEeiX$tjqY-J4GORzZ%zE;Zll zGE4w$w=4Yq1J~1%5D7-O#W9;rXRHAi5@kdiZEi6 z38>!;F@&4ZwQrYn$T1SL@yR1k`A7(W6-C>AGmL1Zc$qT-1%}0TQ@o<$wU9wK7)GL=++cs^FPWDjYu8D)@gwGlIoKqyE!336LisRQdNJ#@7d4qZ zqZnvQ_p-9y9d-=oMr%Ce;w1=>^OW@cNcUD~POvBV^xw8W7z|mr7`$Mm-!&z5CarMx z_Yr^lB+_XudIeCg+EB%DSq%TY z9ENi1Y0M{ra=PTeHz#{Mr>54W8P;>7ZX6JRs3%>@L<%UI?$Q>n2RT zBP!E@I+>RDJ;XSbl&hy7mS`Z-G+W#T7=NJ8cc2Y-QK-m+Ay)7cmo-Zu$#3=rq&R(Z zq{5zObd>_ed42CLX#-$-0bDfTyss)z_t`bD6Nl)T6~{#xEatTrs}ZuTamEc3#_#8K zT%F-J{*spQpE-c9A%jU6s&~DH5$zr+Pfhj$0hjVWf6`gU`(GF1Uj^W7|NJ!v5&b!; z-2q6O$crKAt4t?A=ix5a#ZeFxxPnDlh@B(N%DM+9R~!NLr?G;{AaP)@%kqoUX>_Kl z&f=PHi@9Z7FKML>41h$Mst`-c%~;eNM{xC+YZrT*%mmTrCx~*|5N2a$?Nvy5+ zBk!3JW4%R`)B+#3uR9BxoPSV*+6k{x3r|EEnI1(WG*2VxO*UtDwmh;~37wjHJWuH_ zNS{eTI%hmV?BSb`XFmD00E+Z_JO%_j7y& z7NxkBm!>qA@+{(Fvq#E~zwDQysoAm3;EVHi&r(l5AZ4MHL!~1JlYRA+&f@Ck5Yb#g zgux^m$}jD_40J_d?I@SUurLYcWVx>E&$AV>ntJpzEx1Jf3R+3s8gk1z~F;fk(k(} z^f@N0m9Ul7p_CJ=O7-nAfdOZoh@z!i|EsFqYc8Nxr298GueSR>&tnQYx`LLet5;*^ z3M_v~2&K7DQ?5S_)+EbFnHtlh*874|jDy2^ooI|5ByWrR*8I%Pi|&i^BznG(02RX| zfbCrn70ZvEXNK43**UmE20S*{cpbT9I+$i-AFjr2?FI3F++{^Du6T2p055* z!ngr7mTa9L`NwwIJD?VNs5m52r(dV?7@an^??q5|jI=;&(7?b5u7$Wjzo z*kdf^Iz4^4OSFG$3w$ouu77$=W(KUp4>?uCY$iYguH_O1^F@c_z|V=5=@E(hmqJ4Q zs7b4S6oB+g0oS~v@HqJx*o|UHNpCTPrNOY(Eg?i@8 ztl66rIlW9#!A$4Gq=NV|PFA4+l%^cU8?CPE!E8BT~p6^N=2$Gv4J1n=+>er(b zU$6G>8#_tg7kGz4U|t3fizS|Wd|kLc-EV$9x)X?hp%AnGua-5844mx$mYTuN@c&V2 z#(%f0|97y(zYE9se{>=G5B~K(-$4CuGyC7AYy3NboAaLs7N&pI6zSgtZm55+9kVn4 zEA5!|zpQB+{!dN29+dQ7)tL4F)U?@|{_C1HJIjC6wExHa|5KVaJIjAX(`No>XtsZ$ zX|w+;t(~3Y|F)*h{-14dbQXi#X8+%FHyTq!Yes0dM>>NL%ns%*yVIPPJDPz^aYp`T zf&2zqy>0n?D#PEI;|brAofqVemm4CB7;0Bj{`{DdW%uoI|JcJnKkoVV%faH``Ee*X zg#9kS7uX3jI>u0RVDI_7nc4tnt-yAEnDE`+^tn4ePWfqjd!i2{go@W+XVZyaa&s@#?POLfQ- z2z8gnM)yA#&M=fJiT(8}N2)2da~mh;ox5P>K^KkkWbv1Hev=5V+G@3f@9LZu2lM2< zlv?t=UVJ?Rg)93_>Qil{$=N~N!5oez)LO67KZIt=^$iPkz(*#P#_3&+xR+;cE0cM! zcR0AV8^27C-S&sTA$w6iSif(3LxK6Z%M`3c+1X|%Su3QRpqTBc3+=-mp8IqgXQ^Fu zf)gbG;#6}4=g|54h)HR*V3#(nT~WAp zd?t#nR9OmzkT6c#yzpD}v*z_;S~U7Y;v+m&68!nul(6MFoM&S1n_Nip`N6p2Jq(s* z9dXoW&8ABY(@o7HBIoA$I@IXu{E(w)VQ>^ zpDz;NE2~h=-LKP+;uMq2+`IjzKH4K9TkDMGP3#q`qEjHE3u}~VSxEdflcY(inyA$0 zWrSYFR|BJH_9R)~E6%oFI*HLqv#6F1=&YW3Z*<}h>%}t6ALlwkPDUpP%SPSiNvrkv zHS$3)iw%l{5Zx~S;6!F+Ujv?_N%FNt4FBT zg5MWco$=Bq026;U<-qjW#}WTx((kCd zac0=fhh5uKM73g?llfv-B5+5^Ww*4`pq{{Ez%;`Slc#>Y$_*wOI>{ogwnk|2$3oyG zgDwZNhqM^|@Q%%#5yF~7uxVhs?$y}$aHy6RY7)rR)~shE`Ao&?M9bbc(7@2};D@)& z23vtTWQm;>BslSplkKB-O^#_HUPe(0isiqf@f6dr6>*eN zI0GdN3Ym0qKl|KDU?VvgQ;WI+6dDJI^iv1^7^ARG%Q}NJ5B~KYd!cmi-DNf8t z;iJoVC@QO*wk<&1<@Rf8ZjJb!1R{~?sgdJFn>hN!iMzhgk);+QlE`xtoD@sL8WTj$ zT%{y?v`ApKgEw8v3|d4@_I6GN9QXP~K~_8UcNtf>PaD`thAAf_UO-|)cst3mJY!GB z^K)BIQBeXLa!J|ZG=Rwljz+H{!+O^tzp|wvp&Hv6{389SGxVvEIM4&%hW~cfX&wmE zAP>{WSM@cfNK?2+GamlhBeB?>rPn{^?@=HwrgH~lL130wJ3xy2W?fS)9^_*DXShvA zH;mfIGoU5(FMKDYbGlK)3gGXDo$ZW2E_&<*4AvE=6@@r1i=4zl<3r#bxUv00OSfnipKX+f z-cOI_$|5>XU0%A&+!e3^bY>nGLp!~NM9|E9YrX)D4MEFdV*B*z_6=MQxA}U8vov)| z0VUsF7=`jc7pU_~w#yNyyw(&Ee!w<02_KI1QFi)%ynG3YKh4si=%TPjxow_^kn}Y00pyt` zCPg*3*rHbRsk#%+lA&>k5IV%ZMpHE z4n!tamFY3zqT$Smq8-8kHP;YJuZW;b(RU@QP}*RF*wkszigdr10cc}sAHHEU)PA-Ui^7%mSvr00!^n4X|sszKG zYD;$M^EE!Wb3VCB5wT9f4c!s;3o^@@cW4r(w0n^KxkI2u9oVVE4xvhsijA_Dwpk!d z9+sGBS{?6~@17YtcH$%)N*3L`P{Sl7I@#izwM#BB(^d8y{U;P!IbyTm12uskx7rs^ zwlj3hr>j-?_?9Mp?RYpVv7P27>q2E7wI7jGV>C`pR81?BIV2*RZ^N)rlD|4c z^68@{R^U@dKN#tb!jX+fv8*p3#0js|C>L|=IEBz6oMIN->WRf@NUIR2WLsS#w)o?yyf=U<);K8YP_QPf zTJ>IHZ@j=c!+^14A$Idhas0tPAuf)%Azh=2_PbyC1~5 z=N=wl0i1=TRugnYO4^IF3Trz+PorALQI|$%d-7^Bw;G4kl_gpCf>UmhWWuNmG^_8@ zffc)DZ@O1`vpX3Q>Pl=b-MQ3caj5nchIy>JEbdMLp>W2k&kA}zO`7m|deW>TW^_bR z%_TZ<-xglq7*afZ(VfJ*Xp7Y}tD3P&WE+pnxeth>6yn6dse)P%o~Y+Y9-YsnzZ~u5 zvK-{c@%z$PRDzSY4QwiKY3S0unVGS#eeq%Rpsfr@6j7^=zdMqg?q$2q21FxGH_aM! zX$H-It>OnCWg|VHv9c(d$Jx1b=%*1qNLES&BTK`a%2L!V(DTc<22j=0e8Ngs3g|dV zVO@g2<{;Z(4PHT5rW(pwE`0TBnqI4U;@Jc%ekGp)a=lr{I*S5G-FZ6(>BE+8^J!wl zD)A)@DuuLjZ&5J zl~Io6d=12E7Z_;cH>pYw@TIM?)Ck2=!$Zcpj!+79w^=|8k#WQp&V2Sbg7TF-=SDRV zoS%R5zH*Q#MFxQFwC z=45~|C2X;81;;_+Nt>q4b*dWB4~aB##CkElcs|PRTTh|>>^5>wh&X}{Yo#oUZ`mo} zmKY_a49B@i{)i7_N25Ba!!9EPGO5zW5#x>Qnr`mZ4&^+)XebE02Z4)(Morr@@{F1S~KUl3t&|eNgI*c zBO*4PEfQWa1L*@5ZWd}^#tI?kJYW+Ltd)%Be6A@)KeS0p_9x=SA?@-QpU%2~BXxhK z6{ay2oKH3apO@}Juol|+vjFQRa(gZ15R>fgEC<-n=8QPlG$*1Sn5xgzfZxE<3sKmziG)tbDS*rj_d#{2S-dk~2O_uybx63e7zTO#NO%2` zyMS;k$)pMCx(hA9e50Q^R)HgM3)khR8>XyC!FH}?l18}`@t1?U31pAxmSH;-V@?4e zA4nQT<1Kuvl82D{JovF|3AXxv+}Uxk6lMhK1HVGzjHXh2e>BkW*ka|W|4!CsX=kE| z%y4!bU5D+EUy1t>tS`>p)Mr)vK>sCjXzI%si>CDX9Qsy$7-q*7!d-u*klM!OS$iPo zd2g6`sB`cpCfXq@))vo0DBbk^@GRr+%8riJt7On zoiNQDICX5{vKvfjp-QSHJhM4oph}c+xIOPb6Q^cF%hfpWHVDPZ{-`JuGXVy<0{%|S zLX4D)Zyy`BY%#QvyT~x6@N#jg4s=fn98qeQF^8x>$b2*Hm#(MvIQLykQ7I%Y1nT*# zk=7`?6DLy(eJif2W76L*zD%|jZgNCnr%$H> zA~Y24T>MWHOt0T{ka|%=LWr5!mqtJ1M321jf91Vi+_n*u`D71#!AQT#h$A^CYBx08 zIv=tKIuQM|Un`jdHl4qo4P2U&r{7kkbCJmVsWnXS{H6PZE|$GX*KMl>W$`B2o=Z@e zd>3&Zz1i)_1@I0@yt_Uyy>&I{VYcbTTu#KV9WkndYPz500XiQ`AxwOer9tAn$~7as zKp(!T7Tx|M4q-K+5@h$Sro8HDfgC-`3Ebv0^rAOQfnO_;*uq|Y)%IRyX6C}q^^$MM zn{lEq2D5ci3xX@Ob+E7^W1Sf28+W^YC_=lI&?xK2G!aQ<@XJz(BTpN9s-=9Dq^Rtt zH#aJ_Pl1B4Dv-1`=NEQtXZU;8Vb!&DxiAofP^(+CTrb)COosf)UZvJT?i(~Yw&;Nd zmP_cRD-({;%7{%PRGT)4NeR+g6fgF8Pa1|qH5FqDY?>sylvOD*$?-JA1K7=7hi$LlY-9FX7BC^05`E2kfhxG}QM#lNV3Ggvnkc+a@C+Dkcyd z(n&RSSAv^<->>oJ6iz-kxRsOw0p4 zk2UG{uhMh^CP;;gmXxodWk;=dSXNRS6{_}R#|bk{6-UnIPS%$V7*;SVbz&+zE(%yU zEhiMg@@S8Uq|eJsC!FfXRmh`8V@_qj7UgPGibg=7P+C|V+$_ZIr)8(1HG><&%9Y9X z)|)`)br`u8_Ki^13gKudqS<|IX_}A0cHquelDX?#JRPKrahw+u3F-_Y*~w=ZOoRHK zFjOR1X?ahta_k(QWE7Wg@D;`0(D`8KmZQB=^9wIgjqz6atkfa(6Q=p?ibS{K_fuAA zR4gZHvv~8-?qF+K5(ytGmYrf<=I5A&fLdd7%t;4fh(#c~qanW?@)w%pDakRN$1Rpx z`uwa$I2GBmii%o^AO{;M6Mq8taI0@}v@U}Xz$`@VTcg_!5!|~NIJ&E)qOa^nLGY$! zD^Xc{14GZkwYS6DTG8(Yu2Hc2NdcCsu|C6#0pP#@jDlN z08!9rCg$8@8tr5fx4b@dnNcL2)P|<%RQgwXEhL)| zv378jZKa)dU*H&mN#))1e{bACz0gR|QqGHLB+)`3GqZS-$5|8f#WwM2k@NeO00CIb zqhR*9%a&JXm&lr*nov%R@uCq(^dPW~oZapq0MzaRb2LRRlFag~CX_X*BJ6E`dTpW) z$ht$yS(aLkqzwT5j+l4`VSZ{0m&cXLT}5s!QtpR?6l$r(REbmXJY6RRbA%u7FAP1F(!FVZu+SS(RCYQQseOeSaN&yNS_M6S zDK6Y<(OH{>ARa(Ea6__|ud^X_5BJS`2y}l764A_$Z|Kkz(Q+24ZKS*`f^nWqG$rbA zHf~idlLnP(EOri|L|JT!`=ZUhAF9NW2uhBloPQ*Hzj)tB@v9V2Qw62y&xoE8c6;fk zx_utSjVb0YW$Dq?TwsU7(z25S+42qvi1L1$e|=7PYR&!tMT#N>P5wl3Ft7-O@oA%v z__6A3b~H^@R~e2Zi^1MeV2QR-7iqU@d!`2g`fK+}2u9b!ZBilp3!0KzxlZ8~WEfMk zCXphW(w;8w!|I^wEfp-BOo&i?v0gY`=WA(mIcGo*5gBH&YznGJubRWO*lesV2Qhk= zz+miJQ`Kk8_|T-!>0c0fp=ouP%358?A;onaPOa~pj*S`ftA?r2Z;IXBZ|^O~qoD`7 zU>Tdg)sCS>r{n-*NRn)6v8O`gZ>R+xD+0V*%b`S&naH7xXANA7477mrh2JPlKA@D6 zM~K?Hf^vN_$>tO#Olbx<&=yFDKHasPA}4zX)Ww;?Jce+$i9umb%QTMY{8Gug9xQ0; z#3-H%(7AZCapGOAbqah#B~@ui1y6n2l!I2yG*n5!58iQg1+QquFD9Yd8+}y@0ux|B zDYQefJX&pFy_r4M(R7Es0YhsyL@%2^2rb@7C(YhTs0*V`e)w2P_jSQ;JSIsu+lR27{vUJsB%a2JQm4QQY!VB=3=p|EPq^cy%!aD$j)+mijz1Lw`^T;6@ z4~uRxRmG(Nm?vXQt`A4%!7e~!E?E}}mMs1>L%VilULFdBD+Jc8%@bSH$ANf`Ru{Kx z*QJ$M@)6a4KZEtjeFd)c`%uClmF0Hel5T8`Kg658R+#dXkzGUL5iw$-TD48bL$AZp zJCb*3h2Bdj0;&!pug^}BAIIm3j1vB7sW`{gq1+kqTk3(m%)s$G`)+N3evXiy5Yv=6 ztulf^ef;?87*(hq?eA4?%p$>B`x-O3)QbD1duGAmRzt2QP@}~2v8yNnl%)M&T=0nm zelR7C05|HHK>i&>pBA^sOqEYO?3+BxvI00%DVo$D2>2?_C}T~RnOY+WIuLsIp$%9* zMThO(FtwA^h>_)5FvQ_OA2yo7hl@yr+9%P$Fa;2F7l`2%Is_~w`Iv|0Qw(CAbLgNX zZ7dqTUtP8<4KP`gIMRy^U?g!l9a%(T(Q$6;e1JUL-t5CT>P6Z5AS$DYUpR$I649Cp zf%-^Kw@<=k?Rw0-|kFmhR$jA=92IOVV~uLrFz{MPK&HX()D zh(DP!ClwPqDw-VWmRRxyYhABDS{GOvv_mu}OBffclpsvLg^HRz>&ZGTmZ+J!{PheM z11Sf)#>{0s@gZhVTnAh#%i!tjxfar=3peQI0?Niuq$EN8i$n%-@7%~dGIU!8uZ>9G zZrTOF^jhleYz?csT?S^}4YQ2h(Vt}n9XLtEJLr!N3H*>0Y`+hz|pM{XyynT-3PLpTU|b^uke_P3eW)JAv@0jMU}glBG_J;O{oH)3znHv zT_9y4%9QxB%T?HwHBq&h*&P-0eHLqEOa$=+a{AuD+1NB`evb@qGy#S`^i&ab9Gcuw z5?`jI*GX_|33ap$I)>p3;?2|)MFjv&f7DTH9AQC+2G%KU?o;42NjCai|8|hvobG~Q zZ7}jAsOPg6`SBe-cmbB1lJ|3DAK#Hi$R25F5R7U;c1-lxuomtkqaT=%bBk+LRuhea`a zDW*=jto=Y>;P-^&@qN8an_b&R30laQ1qiuP2u#1;K8{D9W}$6T`{=Ckyb_{*JcIg5 zygnVw3SNP}!|dX7?(Bm_2cL zx;g2;(`R9nYNXe4(K>+_CH*RehGLa zVsKr>)&H)vi=2sb0}|I^VA`aWM+1PHc*M9hBX6$Rqky?x(=bmV#O4 zG_Qx<5z~Cr*RW;5J3EX=KK6;pi~RZ>TMZvaruxgM){INqU{%0A(M z8!Vbaau|iS?Mu45HXrXPba+rCR_UTKRc!fe2d2?7kfuJY)}Dh{nXe5E4lPJ~zKHan zl+G^frX)TXk;uY>IZ$}K#Dl|q7IieCfW>AfPgLM*9=Fc)Wp7RvLF3^S*8*z)B9BR+|oW8n|FlGF^ED}b#5&~`MHt*gJn(OST*fi zQyXkzhQgp+D-9Qil7%1-QX$kyRJ1>W;!-y<9i>&{t--`&0swOcOX)?X-u&IbwIODD zU<~8;;ksK|_qy7~x(RrNMvH!rbM5XNmPPGqM#oN4x-QHgtP@C^uBBSS#7ermbpVFWn-N-Q#|6TWNX#aA?Xtjk3b&c@a+U_9i99Ii&{H8SGrQiQy;r;z4~ z{QA*IQxHFx8z^xJu*HjRkX|P~S7u6}t8`O<*|_0j@(KjRAOUB?a-*3{&Wk!+$_`}i zK~)$X3RRvQG-j8BfittJcj1bm%E)7uQXoq-SngHAe~za4&ghTgRrQHGq9<|~$|LuZ z4N_tlcv7$|LHN{K5taaQc{*y3dQu#?1Q7rl;3lS@>WeG}1atU!d}}O2{aJkfSGoch zt}FB=+x9MSv!PKAB4KniuMtl${2Ie96i!>K2`-gv+~L04D*dP_$Ovr-%9r2{UR1iP z`f>YEnnyDX3Uccijmh-?%w@d}dcZL*FR z@8x*04?stD=xRXUps-gBk))W^f;mqJYOI0{j*jd0o^#xt%3tCn-Bd!73 zBCf%(O}hVwstN`s8XQoY@HhF*kFgP0d(iP9IJL^!aC$OcD>h>(W;2Uo7W~JBcs5wP z!)H=3boi~xaSSo@jtdyp1~hSnN|PxosKc7T{LzfM)K9sy_`$ds7%_Q%NJ8y%b0!o( zocxkaI_lGgyuyv_pD8ozp)+>aY0JL7DfYMIoKrJI8sOQC?D+SfvWt{nL6w6;`d-be zqXlRaz&UOy*NfM#RgvF0?5H~BBD#@rXVq38yS0FPsc&!!`}R^}&IBS3cw#-k?%cKU zRBI#Vx}*r)Dp{ZUY_>4OKkYwK5JHgJbGEz<4^$>Dxa{%WK4{qyARA-$B`{SaxFCNk zzsF2wGI#C=zx52}i?9P2%0rZ+TW^U2*#p@v4Ly91hYSn#4__z`P9p54_%P&uTF{Nm6J#3}1>0ylu=xYi*Yqe{Lku-k)! z0VD7+ju}yIGSTk>_JLxvk99xkKLxJvRJ5GwU#S#(`^L77yrKLEiOqwIWyzF>Ob7x- z;@CBF-nX+1IjPu_6%+TtUNuu5vqkSC-NTeNL6G)+!)G(l=AMm%6rhF108FHxq$eoQ zVXNg?6vGdhB0TKp&D{{?zf%x!pF}Jyk7(vC-y0qIg4t@CW+f^4(cV$iGHCV%p{LEM z;&8>&Nj-FjpU+Ak(zD)`htR>I#^!0W72No>fHTXL( z&^(?mcerHEqT^8(){*I|!~^#btq=&xdwG>OcWa;ra^2Y14E`;rICHjL+zgs5mO0Ns zm;s>?O>ygRJCF9Qf^=lMJ9gQV2HSg1=M(TgncQ<>$h;5?Wnrhzn&yeE) zJmB#J1QW6h@|S@gE02q>ay#KbGho|1SOU}sii3^=j(VC<^uZD?MhR52iU24{H92*- zwFb3(lA@KXaCj?hcO1C~3sjWvkCoXAZqV&dwK|BFszf3C2*ifiJG;d0jkLsbZ_<&` z-o6@sNir)YwOQ15qFg;fB?K-b{T4q$JuPg za1p<|q0R6_S|g;D)UUaWsLMVT0;k6HD6q8+V(^pbpQ%Iz0MJ5yy zp}Sh~qYc4QHf+VA&YE(vB^-b}K$T$_s?5ZF z^|8pM#e9BDjcCfdUruvVdC6;{u{9dD3U~vx$ZyKjRYxB6eVd)``34ow*jv{#zZ7J{ z49q6f=b-^0c+G4yac!OD{c;orz3!ZU#d!AvB+^aYTwy1G+AKYGU*&wib;f|)i+*_M z;IML;r1Q-6s}*B%oHDMDn+@ae1V%gzDBLH?PfdZo1KBD_0kw14x_Bz8i)cxwc|42KVS2a@pg#z-klryQ4FqtqPLi3t z%K#$c(OW!%Xsa}fFh5crF#Hlm!ndZKkp}KDz25D1@fKAVrLQiN7RUD+gQ%|;gD0ad zyFSuG2hp<5@1lNT|%`ABs2IlV3I4p zH+y_s?+&&IMhRN#xNMZQeH*9w@#!%-#V(RjrvrTplw#S<*}%wtk?1n1!J5VD)GvX@ zRMTUtx+2kWWMiQ*2zg7}k7c>>#>#=draZoqw7yAo-*!G8gj`$CC$g0j!0oe}IlH%f zFDcku!^K!5)4AT7veL<@vAQw=ClS-YdpIqVJ{(ibHA8u7uQ<5 zPG`9pWMjkQ4P;d_=~`amfZyCegJP6Krj41|lGM}wVp9V~c>>O&jgi;;Ag9}`t+Ds0 z!-;7035=+FkD6aFA-)QbMWO-`cR28}1njrQ@VZ!klI0QR#ip;iD!M>apOdL3!Kc;Z z`O9J|UQ?(b0VBMPsE6F7uuC~^ZKQ$T%QINM9K5*XW#M8^++c5rux-56aCBOd!zD83 zrfnVdm|phapm(=&gmU{h7MJN_y9ZZMg4w7%fO|dd6EB;a%{RHZAGGwNlDV**YZY%N zQpO8OV};q17Vu=H&N$as7WXDSKmd@;myOTXs3VE6CyH&K!?k45>{K4HfC|Sty(M-*j5RFn!ww7?Y z9=X_ELm>szOFFnWS9yce(t8LW=zW*53dya=zD_99Pmr&|08ZvLP!f?i?xWb^z{IW^ zHq5?WDHzcanBVGmEE5o{4>nG@d9*z!;GcSsUZb{56+`&?Ed9S)=(MDuu?Gy~D7G$v zH<_Dy5!>|!I?t~Gut(Td(w%O?rhHjhF&9i5g@Y=Q1~u)dYW)f*xg7p*goz>tzF~Cr zbnv|=GoWFYNRND1ap05Xp*uOOFtKqeWl}=Hjw2p+H)ckaJi1xA!06?j{hA^%fo7REZC0U*Ce6^jU& z)^%>BO|!6Qn^oP_4w|elM_t?~fuObxJHyK0OoB(DcEM>hA6L3%eTMs}YHCwFja9&g z9}X>Qq1SNyM<1V(h?ddT*Y%wNc_N-(9}7_mq*yzb_+;L5tPYjnLTyY?9@jiK#m8F1sC2!d|V)W@J4#Lr_4#!66ht1O6+;t*ptCZR5hW zvd_z4?TOm++S=OACrWo`Mg0$9vSBZSy8Ao2T{E&Ge48EA`D#;}kK6M-V(Y>1dD`u- zuJ&Cq9a=;EqkL$is;*&4AJm#v<+Ezs$;G&MD~0}O9#$0L z{DEs(Mw(E`F3vej`!2nj(tER?Kby~qZ~$!;bDV5LFR{B;$aF%~mceMFG@s(!o)tge z!4N&c+Patt1Gg_oXGo!2(|@X?=Nz~0FQ0)&smie4R8t4z(tP<*(SLg(KWti;kiV9m z;0b|qcf3h{q`H9hC=VqO7YPY1N$QIh!U>`PeRIvJj?VEN)rAlV-Y;a0V;FNH$CB>24S)*l z^p3L%DLe6C<`%-#v<7Mo`!rak;2R=III~Q-u!|&4%wgOw+ttD}0kukBh*goIzE$sIdB!IoLsR!~PSo>;?Jdm>wvhSOWzV4s?lAf%2= z2BD#_Ng6)mqs-q5*K1cvmq{EB^Rpe59282PhM7467B8JA$+g+ZBn7!ECF-(rfCSA2Dm$ft7HglwG1q1VY9_yV(IS6ZmtpON&j+V=C6_w%i9UyN_*bW}28l*I*!CgEI^ zqw{}ntGcibvc?xKA3`3*x3wrt3+hE7C;xg~zImFVPY)N7J6Aud-dv)rX$~+qGG;s& zq-tG21nlezZ>w+}g~I3eD6XiMv9JOyp1TW}B;Zgu(_k|hK*r9c>&3mlknOnYY28R& zPk9LC**r2$9ue95(!)dp++Em2i5#1>vSj2<^bL@R_hu`dgR**7Exl$PCbr^@l5?vK zz(D)<@hL=OsHWs5Mg@3jmPCK9QOgA>U+A#?qx`AqU~NL;k7TM?4VVmEw#eDTgvn_vY2fBQd64 z6+=UWcN(E9xjqq!&|OyQ>aQE2YQj87wy1!Bq$+)@HHzD(Rr8qUSbnR=H-!m2|+>CFKOY30roI)G#W#gH;fKWCQkmgwDP0*P{APT(TwM2wRwP;Gg_ z4HZ+fo#Y0l#Bg!Yyl>48f`A>XLXP=uVO zoBTBs(6U_xOBd_`V4pGbsBN~>eWX{Mz*TjYaJ~GuTefgX)tfdHva9a}lBk+UbZ5-) z5`>0K#k_=N-XjJX9i18{QGJ0Y0KY*+pGs6mWKUG{9)Q^ckbb$*VF%_gqj(AVJ|+?sJabySbnFDT1w(U?$OaG#V^%d}s zE0a!D-hHH#YOOFEcHBEVE3QkfJoDNrDwO4;4FmPfd=+jNGuHi9jgSh6g08uK-8R=t z-yGblB#BXgzF^dZ1Ea+UuFhFNu{zpBtPKmyD0v12Bg_?khDiDA=cY~A`KN+`0!--# zhlLi9I}(jaMan8y0h{rxCqb5TTKTlyxhfTj1XLc_&*B`zS*sE>4K$UEFkfh7|3QZPAO1l#%up{(Zo0$KCb zpG_V8DLg2@tTh~r_6k_Kn-J!0 z(rjbxguyHlT|0;Slz}l7y7S1NhAr)8@N^XFokWpy4oMQpZ902g&X|cF76vCcx@hML8hJdVh2YiO5|698 zQY*Q~KVe0x0J|RQBqI&zDQ&hV?C=xmn-FO&xpSHurWD(bty~M`Av%*!4o52;4&2|i zfzawbigt!YNFK4}`M?&iZJPr+xWP(C9G+)5FF3Bq>64QEhK+>_$eN%KL?oGV(aqzI z?3bgTCGy=QRq@ImCLI?KgN0fWj-}Y;G&G~$&wY@86Hn3wsxH=wA!iy*5M}h$g1yPI3)>@G%IRMv1>OeIW@yC>7YQkiMCzbYi~6-9T3(5 z9;xQCnI{Wd9`m-9^>T&7PPUA&!9XXUnhry?&NZMWE#J_e))1ahc7)9WY{e?s4PYd8 zL|qI;^4S)M3b#aCEk#ln@-NfA=nk&Dn-~i=&+G}HCT-?R%mn-0bB_m2g8C5MT`-{CKuUJswB8n@;s_dW(|ip~U!F3Dzu_F=++JUB-Jf7e(_8j^KENiOju3cEWT za?qdYL#VFTsAx_2VR^zd4kElNQcX^6btT<<1M1IVMM$;Xxms;$k{bB~*Vth=*3VM{NvT z1uyVI7C5AeQZsEFL(^Tz8ie>zbx1o8c&e@NbFGOM7DDAASn1ao@DqvW3-%FrgSR@!* zTzInKpk?M0L3Op?7^@o}@--BgY?dinZbrG3^7Nefvjh{*zIA3kvUe59!MFb1I*KeF z2!>Cr5iM09tNnpy4zr1;Q;c|F;mLqI_ZY6(X2rs$m0CcG$td2T$yGd5594PI1e^ul zq#FAyoZ)!rC($@JYo!b#llKg*2EiXkB+YCp2E57Lx$U#6KsLpuqOK*5(2 zvc#qiW5`c6OlLABm6g!f3h8D-YkK@UG z?rmr~SY2jd+KH2$muaq;pVM}?W9<(vU;z|UE4Bdnu|?dgkT7J!4V~PUSMXNeIFrdpMY_S|q6FiD=R0v+s4DNmk8Y*pcvtmRHnVJu zkzlHdEQ`n9P~J2$zv_qn7(Af@gpjLoIWJ=%+zofDKq95YK)lY^$$TzaKbHSi+EVn9 zEk)LAhn<@trx$f!?JVpkcV+&A7khKbnT@=KXxXOxg9wOx)+WpLDRyA4dI& zzS9PRd8uGeI$mRcuv^_V7thf7>7@IUt*lc1O<1DdNTvz=vI8DOw}p8StW&)v?du~f z`MCV?>HB-N*SrhW%kC{#ryTflu)R-=Md!=?Y8LEhSL4++8sCkGU|3DjOv-`m2XC0~ zhwrkoisGNJ8XSMq8ZmJ&bNu~NhW|?iivBg)=YL{)*#4Alar`^o!ol=6ZpHcMDJwpm zq`8sf&yN2>Vfb~G>92AjDCS>iEWgASHQ z!>>(cp%{Lf&hT67#qitse}rYEXZep|e>;(p{#TGNGW;4+#^2U6{<0pQ@wfGVfMsU? zPhlBN5Ve{tvK!c%=Rumid2x{q01?-~D2u|E1z%`fWYa zFYED{82>qjnV6XWQ&^_oPGn+Y{r%YdDu>1N+j=IJ-|)Y!{{t)=+kXuE+lfqUzs8t} z{nuv6OuwyX{$>5oBild0GBeWur?AYwoyg3{`1{E5YnJ$JJu~xf_}|w5ahGPMe-D=B z@36m}_-kY7pU1yeE>rle_xyRz{?F6IulW4`hhzCiIHtdw`3voLsk2}6jl%B<;4hEU z??7W_{}WK=e-HGh|Nbk0e^bG~g7Ggy`|G*+HCzh+#ghLK?|+;f{z#Lv{(RA}ar}jQ z{yn7s;M~83%rEal{jvRjrtXFGo%F42P5%b;H-rB1pZ@Hd29Do^{;%`De97^1R{THG z-t&pRN{RazgIy2ae3Q4Gb zOpPW6k_{_03=dpRa2Oma)v>J=b{tMZ8`H;wQm_mchS-CuPv37A@VHDrF48+L-FYXS zy{ldxCc&Y;tIc)e8;dBr!whV>$Y&-Uenr7r=&z!vbnWxOnL+|)DJvZ@v>@!eK&r5x zKauvkNp!^n8}r_IP^qM@I^yZ{VBCri{Romk=+Tug>bFJpbugZ9jo6L-!Fg@{v|U!F z8gB@Ri_#_O<*WQOfZ3(XL;g;2y}KB%TEXo*3Ov1|i{Ps;zLLOFAUnx@%s)-OODV9nLsQY5vs? zEZ9zzt{?ImNPK>A)DsX@q7=2l8G9j5ktIhlYH|4lZK+CgPKBG)J9$qkCLWla;k;Nd zmG_InAy#WQ_}mFuwT?(OYJo?j4t(MCnN~lwD{kTlIry|i=?@ZJikrFYc%4wbU7(pe zYHG1O9a=VX zJ})41IuC&>bZ>O=8xKS%FV$i{ykluYlxD+?h-e0lz0}_orR&JeZ9103YOq8uFsS8e z)GpWQ3`rPfb5^2FQrA74(>pV^$(^UegucdQ7r7NI`HkAhnI7Y=g?V@@D>Uv(H_11R zxCyt=wCd2{;UH1lg;kGQ_X%U9fVk5oV5IE9W{cx242RHHoNNsm?sk^b9oyOBQm*mN zSAlh4=)_t$g0sj~adtQvl@QQL<6JYgU&rR@3|tQ-eyt!{ij2q3I^-0kl8TCgILW6| z2661vK-_F#CvboEZN5h6e8h(e*k$d3aXLF4xGuGgN} zN1+imHaexVwOVe3Fv-69%%R-LammIq6(ahzJ&-jrp zZIdoV!eXStq$I+mAlRSgQA>3L_Kc{fWueu;UpA@QKK-7ph;YW9gX& zE^o2fxTJzQ_D+K7RbJvJ1qwHn>jp(X8JXNqjEQTLvV6)o*G7$tsimeM;2}^bAS-j) z4}?QWzRv+#cc)pcCp%XF?d56PWbg899=u?mXZVysLSzk}u^a55=kz@k{V47pmn$)s z5Q)fn0haD90O{T7LXMY1NZWRkhv3$`;B~E<&a2tP^DBX9JEGEi#fFtyaB7vt3|8m2J`f{*k%7|WFxFq$YKg8b9QqM!=nJbEgv{ErO z-0l|g7@<9}z2H6kCqVZE zuPki*50Or>PDvetkI(mUANVgrU3I3udEOY8*+7-;6{gk!lJ%RUbg>QG2IGa8H<>LF^^xEX3bjQ&-Gua9;iHOW-SRD9<>Ib@_Q8GHx=fl$ zN-#c?&bJ|yckzS1?4TCkp_TjTcfe(<@MVS;Q9JZ^=S=Nj` zhs3oJG1hMKgw9Kp4XxqmIXK%DZU8B{%Rjq{Q1flQg7wgQ50wMls+1-V_jGwoDXrLw z_>zRJdhygz?7_Jro!F7Y^t^a5U4_A6a>4HYQa>MTKK%`I!UtwmC4!~-bG^lc56h|v zN`Nh+EJ@2Ztc0PI$dEKh>ea6=ZH6_dxSTZdxEveOv=J-(d}_s z{60a{_=j;%M7}YJJ~8`~d9i~y-r(mPMzkrt8%DF88DoS@!^?ZtMql?>YY)nK!d|&k zL??(9MdGStSD1!0hm0IJZ-Qpcd?V8(Ho_?sf~jmzrMICvLR}C!FpvU69iY)$Fj4~{ z=XQ<5!@ba!e`Mt#ioJ+3vbs9qtnuqiw(^ZDG3+_-6$yq%Pp5>4mrN%#&FAjhq|oUw zTZTjR=Qd+iSQAguo8QW8U0})@V`Iofk_<-c=V$%s-e}ECuLNt)`_A?4Av&gwHnN_C zsz{*njSi5r`nn*B^B7@6?t{&L%2 zuF)|5Z09fUb5lns=3gxc{xuE3r(s}a`*r!}vW^L#{b%N^{p$u9ee0iKDoS#Sfn~D_;iX+#?~r7J4h$3@1|;Q^fRSkp#Qnjpi}$Z3Fe=T z|FyB7DTOg3{;wqDAJY;R`oE>Unt#o8Sbi?@wEupQ;h%FB7W#kjH%r=bqZYmN@a?Bm z_sO{a>FE(U`5<0q3MU7^$mUiccM|3M0Uw>Qm z-H0kR*<7TPCw9b#)*ebMtINU#b#6BaKeVz7pdo^00!Cef8M-j|G*vyGFbU6EBZ{*ev5ua!mty@(M(=$Y9o zg~uzmEsA;%QIz7#uN=dbgzn-zRjp{clWsovU)7XYd;mUL4F~@@Tz()D`R^TP`m;f0{$nD_%Eb0BB%< z3Z%ivWXe>H&Bfo8>no^jI%+NIcTgH=y$DlYGMIn`(K^apE7~qv>lWX;-X0%59`AX% z4g=8<`W5IPl~z`kXM*mf(cMw!XIAQ_pKsszxC2;A7g}>IjSrEq@TPO#P)>xX7Oiyb zjnY3L(T_-W4p&w+61#L)-O1#=m==^84e@C=o8jJgjt(1LZPw!PXK;?F?spf;Ev<8y z&hVeRL^h|EYfDDASaNYbIG-09XfmvCaaTK#-(;toTq|r(HD1(RY2*bN<;Tp!85DMc zX=dcPr$n)du%{aoNlQagNwEo__Lv4SqT7p5`s~-I;$|~? z;CQ7I(!9kRl^W`VXJr$c^o}8Fj93hfVh)3pRs5i6i%^-;e-3=y1dCj^L@T}00o1=dp)JlU;@(O!{v{)2o}^o2fRYSl{mkvLRI%<>q%qrdQL zmcI@rxAY=1;Wvw$DXCPL(J*rgn&5umA4r_ztiesevV=lBuL%mEJ07u-1Obv(h^y3d zke&>R!8c%Ue*JZ=SN>PiSCUtX{L0n)MZxkeGq{}Mva_I=h9p+FT-X;7Rd9ULu#Xl+ zFGmC(={{0jIaTTej@O}HIDGy~j3poA+?oTUuLy`` z`+nUhbUl`QhT_O)fJRcMpfW`%_oESYkHy&ry4;n$>3#LrgZH6sFAl}>WP8Qiru!~| zi{ifvrS>B_$%Mc(sQZpQDxmD}2=r`TQtu4z2U+~Xkzt|!XKK()#;w5thh-2}-~vE* zmfE{BfDx`UZZU=QTm5dbvzh2ZSa)RTY^|HR_K@d z==HB5sC5Na9H+)@OAkx4w}#bo^`d}&Caft?9`AlQE(wHp}R2Nqr;gaNvE;7K}Vx| zIrpj&TnF>&vG(ob-?naa?P8<0v2g}*vxMD2_mSVY)V#sl*uLFlu^XaA@2U<>LPQdY zEX#+r<|$iI-r~1`l1Es9PKctl#aWAB=y@*t(ECR71jVt0V^`5s)i{!0*1<*JiMT+z zliec5t6NMo-FmvyN#K0|$_(kh6OJVHxasFs%Qb5+QJ*1XBKnZF6MBVsYvn+i-JAOq za8!^~6nChvmadn3%e@etBb-y5r>)$!YOU+Pb2Hc+ zsN2uec5~Rs^>Fd0%Y`F{W>Z&q1S$yPo3oj-={sPRL$$zEAr-l7fiA|2oZqJHTU+}7 zIJL(hUw|z!;A7jy9ox2f$F^#o?Y41km?FkE^RfBDTpv9!(+buV@QB|Q?yPA~Oeqhg999H6@nwVbA zrgBK#;BmFGS4q&xHiR*2E&72RyKN7zr?A<${4CdOE4*no2vW&Wy=@HNU{=YYvAalc z%kF7lCn|g{u8urL9&Us_D3r0&(98#)X8{Pr=p4nBZS`E@>fg83B*@~aoxd2bTmP&n zAj;ga(#Ih6)MdSkm#6}u01k*#KF)oOnG_34Xm0agcgqG zOAyQ4u8d->ZGkYpbbWsAJ2!KXd%!h~G`ZW*=KUs`woO_rc48 z7)(7L`?$zs3nN2hu{ULjt$2v))?Q|^8Nk1$Kvq4ixY@Lg zTsbm>%}h*IAG#BMM^2qo&_ zrhN+_ibGb&36vBVI<`R5Y6-+q1{h$n@|3D2U{~!%s_%N+TF}O+?vUTw2Rs{ zin5?*VE(vDJ^j5$vL~oWmX_14!u~2dzAt-&9m`OB7={f$te8qkr3CZCdo< zfFCSZl{Sr_q%ke}{F=YG#iamK<@=7LRS$+vT3UTpZsbN9QKx2C4ej?2zI)}MB<3Ca27 zf@y&U3&zL?L{(U<_MK`1!F1SCt`}?h;GZ(k4Ei+5tCC(=^ZY)00%v zxTw=_;Kqa&Y+2S1GKEo=L()gtpZEI5xrwOGcE8n9j?|XsCM1LpSDz=!*bhle1wDtU-xiKTtlFKMM%5A zSeOThz$hZ0LVjFBt)M8vU5H482Z%tj#6AK<^h2${Mk1g5eoRB2z<{_La4g|Z0zdwt zRuC6r9}Yp>gFnEm#693dL9b>&hZq;v`hC=e<;tFJ58BwC8$)YlF}gmoeU? z)3J*-H1uZV6gkq@pj8Q!iuI(g*|X2tzZy0lO!nMl;sps5e#8 zDTX_K%eVjLvrF8rF8c&0G$ChKPEN0oO-}eKQS3bf@3rjRUAp9;yU%p`D%n88=rgYj z->#jot=KAQs?1je73*#ML~_8XyZ)JZu-YV&Pvnr70m0~6Tc{U-D%g@~8ghk_94eT4se|K_b*l*R;9C%N4 zJslK42GX0Hz3zu;nu~rLa5)Kzm+C$2cVem!y@$Qt3Wt>7UFcUz;-KPI4LsIx!GEWT zL5e8=_R{U7%q@PCoXHHVeN-adx9zlOQok~MT_nUd57iN`Z3wS2kfh4*RJOq}8RI=iA9*b;<-(ye4+n$X z9)K#T^oJ}rt3ny_m&)U1y!Tjqb|*0VIv1!xayBZEW<0!PBxCNck0hN0G`Cz+GpF(k z<6@K7pAspwUb_kOUK~91UeRvO0z44S&q|gdJf(`)a%Yv#H7>=jJz7)&C!FCI9k;t` zfAb{C)87^vqmlO9sKXpyhePW4g$K}Ct-GvOsIfe$;j@Q+c=5tGePgfYdv97V4t6{(rCSI8)$Tx$;?Wk@moy^1Z>S0%W%2AEeJuJiAKYl$dg9;@ojUZkI@BsCurc;D%a)k@sYOPe-SQX zbZm6vwXJpkB50$u*QAJEw-(1&+KkU*A4H*~@sP{C9EEZ8FA{53DF!4DQ|F%hB+wMa zsd1OZsS#te!-&qCqhTVP*)Ph^tDjCj4Zrht|IRI*U82Ap!JY~Mh-CF!Fk-ntMEm28 z#o@u^CORd5@N1f@36?4rg(&~k51JqZo`K6UTPe8%!hRJg+f*bJ+z#1@^guk{F4I=v z$bZg*7&wWcu9N`y?ef{gu-+VN7X)g*K3iDx?4sG)9`ISwfT?(agqkJX^W&Su78O6r z%4D+JSsAHzpFk9FQN#9r6n}Mtb1Zb1j5h=b^mUrw>NkG&hf9-W9oa+4DezNB0LU0# zJj4OPAm1a%Ejj8QCp3pP-J^)jniV+k_b_FOi69E7P8JG^g+jy)Kua#-P8C*i*@}vT`3g@OkW!4~QWa_*AQuWv8WJ7> zRi(oJb2lC8JpO>WPfu!XqT5))<}|jt2k=}HTqykX zy6#G2&LP?z9r8Qr0>+{sSXSnV`j37{sm{Ii{Uv~6A z(wln399XCR+lXP6cskN;&a)e2>-F7eV_Ilqg2%nB`oS!)^7{H$r1I}|LRKa=&i`0t z`!5R|8{>ZxxPRi;e+b+^H~*!;{j=mx$I8e_#KghDMa0C+#rB^GPE=k|N=1%F#nRT) znNHZ=#^k@kaGZ=R|G{woG@Jj0;r=_p{AY$^|DO!U#>W0{^M7GDj(;UKoc~3Ji|e-< zB0>te;UC8PgBTfZjy#bPjJHAm`vXXPl!&zu%Xw^5-L@l`z|7$IN8kTPsF7j?wr=OIvDG#$H?!WJqdp5gXgiP+Gtjr*U$# z36p!q{-ZnorrDO!=KwgB$Y>HsWDW02!C|Ey5Y zxGke)M*Mh<^1Yif-1v7Qf`L=0@}o3Ne$fRj`%kUX{QIy3X=Aan`xaj;eWiu-)KkI!x)81%)Gu_}vLpvHk z!x0eSH}Q)af+VcUq6{)x8rIVI? z_vGpG&hx9KwY0Lsx}%c+%JTp(3?LuPdc1lhc2uE8-b46+!Qet6=R_ z8E6k2D6X1jMX%{S+jYMZSb;a}nTDamBR22m zM6Cd||0&srCP`PNYyRY2^C02!E;Qn!|d!}H3z^8+_!+$;d605tX{3UQ!F~G zN6okEyne7enY+{Tp{pVga{k?%%Amjb{elV#L`wpcmy+j4p?2#dBy@A6j&(jh=g z0r9>M3`dYe(%&i$2pI`7 zFR49X{yZ=@18|T%L3{&2+&n=Z2Vfk&dH5(GP=q)Lvpq-*1#l1|FepI~TqqDecd`O4 zI)}JMe`x*a4gdN=iyx3HUz%w`ns{s^20o@|-&^YNjpXjn(LjnhfF7i}|L?L-UB-ZG zT;S|7`B?w6JVLzCUpSZ$*WjB9oyujcx_cJ)yDF~ z6Kn-Mwh$b`zzriFF^z|{3M^^^0hvSH`H4o1-!5uZMA>Oe1r_&h=Jf-#NM59DK;W4qa(b4Ypq zdAvxFG?*FC)IgefRJXv?KK@$omT~Uk2!D1KCwMD zmtADm1AYHO3mydiP%RBaZ3Bian41vD{ZI`^g3;FfSya|Df)D#4DFR2vfEFv!T92h0 z*goMpEWS64TPOg|(;bZiOv4-`OC3IckfR2cwtsa$f`Kow!-3hs>zcZgJmU~Fj3RTS z#|~IYzAbyfCIn-UhYM~S>YW|t`MR-z007hRSeX+=9(MM(i#gfaYjC;I(`=2crZ zR+95P;ef@(S*lbxFCc_5QKeRsUV@YFwK)|AWCNgVQcr3ce@2bZBaE85p*? zO1vYr32)H}%?tD#Fd84k2kR4+;|0a{ak2+`3+?eu*q^IFDBdr1ySoQRS)gY@9L)|} zC7ek(g1nr8r0%)@=76LJ$uWq#hXJ5DKm57{e}(aaRBV9F423tytjnxZuh%yqG#agA zs1q>!8B*m8eFz(|N7WtjI-pXLrzfo?=182Sb{bAB_Oi4)8(1(nGdEsJ^Py#C=WMaO z{4gd7tMpB#Di_tV6w$&G;@%8A!xz}aR%S``4!EsXy{&4Lh95Dp0xbZH@RkLg3hQN+YiB+P<8>4)75b|BUPRv&P^ zwF1E798OzwqVL3rzae>H@I&tU>Gvnzq8TxSTQZRx_Zx+==&so`(TO|N;dDZ5hHU#^ z4Lutm8hFfUg<-0ub2Zzp{Ek^kC_S?nVei-3;drAs*fw7QSM4 zg<*!nDH6?))DU0)(xZqexT-CRmrZE?YvY9N4(*Q3C3;PoOP)(1KrBz=6k#ZxXQs4U zY**l>EFX9i*xJV@xk&!g9YVYG^L(Rs3-`=Y1^S8biLAH>QH60P2k!;(i1N@6Y~o!} zXJ4m#i%+V_XF%nJp%Gs_I7ZNypFRACq#MFGH{ToWN4FK+yzr81DjjVLy zzO0(IV#>rKv7NhU!fBS4qLKs|B?@ze%8uk6^cNcx6-;9$qhAglJ{>xcqQHRnoGYJk z-h}hS7@y`nX+cw*MBlZdO3{u$r6azw1cJXyD;2qg`>E2sjp})0xkQnJu&jaIYm_n}oDwykV!1(G;Sajy>-L0v@L(|DUi10tNpvQjd>qyruC=IWFvA6{7>YFAyS~i~ zs%+L3z;ACfO5*^vtv~44{LIB5(DfMXF!r?Rdjv6Y+n{cQ+Nu+p&#H~e z;PX&p%I8H6ru91C-RH}RW@MHoRYn$V9N?F&uuKMChudD|a=^6~;CdEaOY1Tq8nw?6 zXKT9Dn`@9Y!O(=#>jha{W8pxsaNN)G;2rcZ{oUf`74d!m^J!bBdStMx^_YPRF|+&3 z*L_@@?M8{cGOn#WK^}h|);^$HsLwI4r6K%r5PAEA{9tqH1nm_W%}Ga92~?5@vSW=f zoK-?R@8boAFIIck(1Q(0St&3(ttI^Rs|rW0nGUDmf;1z+N9z{O8y*QacwQje)6DTG zYCzr>zNld6653yAb#!uY{?vgq01)%qh*uBoS}nyNA3X{YnmwSk!Ez~D1kxQA6ZvtG z5O&SWP=9%hj7%$(ygz+1OS8&n5dPp!L|*tcxc2L8;`@#!Wql!e`cR#`r$ZP5C4*aS1zzOh$HBeb%Nwl7h>t{YndgQJ%KnPb-&k8hkf#;Vkj`sA_|!=Y zOfwuT<91TQ#qdqR7X{vXrAzg+ z(Vjqn_L+wwV)EnTV$R!X!5iw0U*zi)0aN|jq23G9CGeM3QtT5EIi$x)wtzjrxzkz0 z=0-wR?7f~a-c=wW@Y`pp!mXh6w9OJ-`^*{mshvFl#`UOkO87;v^^_2YdNmI1nh?hc zK`KJ8CRXtF3f1Un2rACr&&3eT?mC&l76VY~BD@Dq;9A*>&sRZkHrwVG;}`OiJ`kNq zwH4&CNvYiS_Co>_`GX77`dLf4^`1+$74p7Ct=RVUBLMS9wt%sZw6_=u$t`tGyRz(8 z8G;}+HzQ|&m?&xtXmh~1Uti78EkeSndh&C>3@~o7JUbe$S>Ei~FvQ%JAf_U^_mT>% z_zsq6r&K&Hm#)N$kFy1sfJ+I+*cimuzL*oaM+)xey95G|tH**JVgE|F_=p+%JeajX zHfPCloT}=AW`<)t40?Y#7Yd{qtW=aiYNS=_qG4k~AN)4ST5>^8<;2WEmXf~^s)&*k zY_ggJu2dijbumT>ee{lBB@>OYVRTS}Qm5Dx&6-vaB>Wn>0PFoP?Hb25^w~~#`TN^Z zb3AjrrcX-~nBag<;0#;%KywHUZISsE#&%idqH1Dknc#cm46rQu%pk9gq>-a+l)t)+ z<2-7<{S1)O@`Sp8C4kFqM!&vpyW^nZ;yi4OmaqF!Gp@qbg#N(dZNLJFgCU1ki%U<_ zpHzYjHF{#O08qy&*dP0Q$_S%#h06yH$N6D@9@Vsf=6Yaz->a+^uB+5j2BxZ8#Fp)~ zF74uIB8(Ll80R&-DN{bX$^n!HlXC9t(!o`w6YKf6a~C?%8YVP^fDF%oh%9at6|E`p z&@Y0*PDNX`gJbo&N#r6J;th!R0Y)23#}Gr^?IZrq)4!#h+*i7Esk98ANaigHGJ0?Tt`WOaKZnQN=kLh zD4KYzE)St3VmZ=nn@;lU2b(f;I!jtkkyoa-C=38@+E;_7rwT}lOTF+Xf+8i(nLKF# zfWYVl58E_uK)9C`GiZ8Lu3)!$&DiTLthsn$?sk&vUxcjeWzgK9n0tM>npkbcM+9~A z`CMM*kZs@#ry?SQf^Hw%oW>M%YubhkL({BH3kf6jGdnI++M`y0EkaXT>5J$*G{? zwBi^?;h;&;LKg$~dGzXW z!CjHj3(LtxZnlb+8ZL7jDPo%7o2%Gui}p}B_xI_1GX=n0Cp`Wv6_sWpSw3))XZ8oU z7nzvB1b$9@21l=}cyrb{xNeRt_$KG*@;tO~5C;Bk6@YwlZt|4gb$?ham9bCuA&dR7 zlnuTSb;}36M7prA>X6#PAM&NjL8{M?lTb^wow(<;oB1hc!}Iiqt^6?wf&bkj*VR}| zej$kIs<~s+f<0&$B%;n|4{NR$yeNdP10LnD9Ep#=)Sb=ptjfJDNGPDm>weFfK()aX z@jVCGeFl^;ka+s(NRq()=At=;#Y#)ckB&TPMomVl-9k=@iL`8MYKhtxDYnE& zbtg*A-~HK-y-1*m<0NLM7yp}kJD=NVTp=j(=|;;WtKM912cz9IqzCEc&fg8b=kn8L zi(;=@O`jXNp2HIa@d)okU}V%wvG;9R^*18;8~X@Z1uB8EdEbLd+=Bj-_eNsPadM%h z_X9XQvRcUrTd}eOM+7(>(Sr!vXr*2VzhD14gO(WjD9L6k&M7eT`UxF7jna}){;36? zD^N#Rj95!a2Qz0dFa%lgcwRiQ81A@9L-k9}2|L@}lU4Hg?3SiLqx;)VS$u5!1qwGt zHVnkXeHWUYgyOIJg+Ai*BFa6LW;){)jQWo^2CmV7iHyP zOOaks5^%Qkx~nLuB{+Rf5=S#3PX3|-#9vDtXkviFXuYb?+Yh?q;^{4R_|3?&me`jxP&u3id)pq0(s_C1On44>-e&`jZ3X*qDi1OW%+t71cOsST_ zr6BO|=R8QRblrlrWa)g81o`2}i$8gm_^vpIbhRFv>dPYNW2VcJ$q|JWcJ!I~WzmoAl-u2>+ zYILBK{a0e7J-{R!pf7Lo{zCXQx%D|9X)`4GfDnC_+)3aGA-wZ*-0%!vU7fK!X{Xt0 z=+O~_QgO25_L>ul^~YXSc*I^l%G-Z>w3Ya)$$yPMPpCplNnA?A7U!sPtr%#K9@tD} zc~g`1U_MdI(ofQ|pR{$uU2=@Uh$C zm+0}a`eOsf#K`=dZbZ?5k243VhommA`p1)J=_a^r#3%Sb`~!9v%GG z(L~*ZSk&}UJ~juB@0tDGCQdwr=`Huh)p(ukT)YVr6TDvq!Dcez7Rbn@+LP$?{tlKe78O)K`7ceQ@K- z?-*i}G@dlkcvPu*MQ#`r=m;A@Mhtt5`ED?tLN{bNL8)>!-wj(xa<(yhdxD0?ypi+*SX&QIEVwP3x zF0Hb!tz*fyK!T`L5mqX4Qaw?od`vW*?DWQ!F8VN_rrpB`4;^|N# zHqW46fAo7R=*lA$~s>er^n%Msi|E9>I?pWRPmMQ1(BABQ7%cY8m2ZsdAX^tHL~hOj8V-i9mz$XtyX%_(XLxTSUs z-gmJJcZj}hboKt7PljvXG--h_r}1CGq=SFGB||KcfDt1i?H@0px={MObNuFtFYc#| zPuA7@lP{$|ns2G^#k1KLu%ClPE?}-t9Dh z@4hklPNBeSS_Tf=_S2@6abtY_!On{7v-fXnoP!@X)$H>kClyE|)iU}%QJ=EHgD2T*0zm^I@nW%LA8HX9aBySqT+%wWe222zwhg&(bAs*XzC3E1l-fLxxT1 zY=L+nxip0%vztsPc_W`1Tm>GXgG^&W+lw4gm+iH!{;>d$CSPD7h|U~YeCI4x2f@+ycDW>c>aSn>tY>xe z`Ee|lZl~FX5~RNxBkfqb%r6##JK>-f-FTF_X|t6g9t*qjC#&@fe{u*`&BLRn(xSLC zxl)-VARuDLRs>;;$?r-B5@y99h#&{PDc7($xxyJvLmCu;!;ZoPE+86C zwDfq>Cgrfs8sT7aj*#vX56%8ar}Nyl97c)_;aUAIt&^CeJpZ~_v1g8Rv{Sp24QAlQ zZ8q~}HU^MX;#wGakqK#f7j_I)UWmw+YN}J4*t*OVk-0P41tKOi3L)_Rx>s3=FjSj5 zk5yY$wU@n_rUZ#6!n}3npJBk(U54^fgp0sIORf}9>Hd`<5dF6R8KLzZ)IW$gX|Os! zXky7)k{Gdwz<;}-h8-t-1j&E4X$wcjm)|f3dBsAoB*e{YpOdPcCESMM z$j_=FFSd{;6Sm}N?hJ2`w$vqKzwJ@`F;3V7jhAvPj+X8FqkqO`E^A_Kiw2C_bsw@= zKDYO)`^$E>*65No5+Yka++E#GJ2m@d8ozj#*J;yS3_!(|S@-CXY7c5ZYCbAkFGE_AS@9njuHbZ|^aI^;UF7YuZKQ3n ztQY$Ok5|@y9CJ(uj`wlMkD)O1(p%J+v zq3DMAL)tMu(O@V{+p#5Q_;eh9qJ?NZSP>L0<*_6)Nte{rpg@pgbTGt+!l{0^kn0H( z<_6*P-`?de=G^B8E?QOf#2Bh8NWY0;;jK<_>PuS9+RS{T3rZT>OQh&bAw>&P*W~kh z$z7cnO@0>qF4yaU)mB)ke$UMjT`|uHSu_+Fp7tR~1_Ns-GOh!EWum^f&e|VgQk&K1 z8*VZCOfqT}ZIR4mPHeE#(<}iN@~cWd*HOtep`XrU-ZY$2YR7wUF0@M2mTrIFKE6fA zERw_Br0IM8c=;wCmK=-`Rj|*}#-rO#jhgNbE1TVXE^q^+7!9lHPv@Xr?*~`{Sy;_n z@nav#>i+=q>SZuwmmQG}Cz(Q}erAHgh4WG4A6cySRJm(@#2n*a5pNTB!<9uO+JnDYJXXJrzT)ost&*5o~aU|B?UWTk|ZHcB-93 zOS9f?f-=jnC{}uQPFX&?kUt`S-$l;lU{===F6Zv3H{*#vEHRJuWe|y_be_C|FnOpp za9&3&S;*mxkv(xXcbI~t@~VnZx;S|1;_(CZDd^HxjUkKfR5>Po$z7|933X{^))1KfM-tG?0BLih0J#*6ijI`xJTvpI6hg|Qb^ zZk&{Py2`}htG7@8$;$^=mtt+L(;-gGqEQ}GL}*({ol*zd%sUt+DuTIg4MrnX=8Oq8 zd1kU{Ad+c5(lXtFi9BU_z9?nHmdjrtZ_$BY64X*eQdFqnLjcY&e$sd;$#}vD$mB9U z8RYQ0U$RMbZr=hH`rHEhkVmKs0ZrriMs-y_4TwwXK*le4RUNadry9o8wi)$oJm3U> zFXx3F5p{4f*ed~Tv)Hy1cuh8}`x;y8eEI(S5E2Uv)QR>=m&|2mq;IIc`J*B7p(Mi(@ZsUwko>C zo2472p6X96*ZSPuF?YyXO0kb~7bv8ZhwzMMjj|^d;_9i0RKNDTqz4#E6}Q2}k$hbH zd=a1+V9&u01k-dNFd&fv@*?3;iq_-_Q!L(dFExjCk{|3*>ONZ5xordH4y!BnH+&sk zge-0!34f+V?_lGkluo61B;v7j9y(fFJkud48>+yiZi8R9x5Z!mt~IyiAKU&B6IP`z zVkrJ<@#^_UrhwVXD`SA37UbW%H_&g+;?lSi1u7)vUg=ICZ zVQaOX2z~4qk#D$2U&Uvzeh797E|7^KeZOA7yIjG?6sRivNS7+Z=6LLgk4#T20146; z-y@ooHFa3ZTT@%u~%n z?=g-*Uf4{MV<)t>Pk%rPPrfWM+&Ntd*}O?HtS_wQsIc&^E>H}jO*6w&Vx=%&h$pcyafB-6EBfsXz3zi)vkQ%AUCxwGQ{Xm|vy5vfT~v zA}I6Sq-KnebZ|b4))7_N-juM)@CMDVuUNZiiT;UASA%Z#)Qo}O|8V>!z}LuvlO+e2 z<-S3l0h7>~a$gW=oE!HN$KsE`+3&a3y$k?#M&&Ufbc#b$q1GgaYOIrEgVoN+8K?w<`4$3?Y&*(W97khb~nmsyrm_Y$hkDTa8;zFc%M* z!GQtm>HtXAt{MiYW1pEWh)O>*QMqzIRa;oAgb+Bj(73a&vgMpce23DiA35W8pZWFp zR}FQUHl^fB@+K{6j=e+Ng`1GXeZ2w7$TG!HV_KgF7GD@V94DrWb?e*nm#vhR0eVu= zn)mgcC%k}7)n&GfO==9Mke!l>=XkHWkGW;c?=Ynl2=A6SHgqDuCA^r)NNsIz+Fh!o zrnvMb4RZph04jr-Aryvz+&bck#PR4mbE+tP44up_-fqTD^1O_av43+*7Gv@i+A);# zfpg{RVDv=(RJW!#5!!vdTQ`@5`CS#$sarZ$xA63aa$DRa8_Q|M-h;zB9oIF@Lt##B z6iJ)Jr!wVrf@xLQ7>#0EdpovR3q|CxqE?0my$uPf zVz;c1O8osrf)+ElWN&x$3gN3fvy{{#mna!7IWS2s?>NcbFJM!y-@sBw?G`hHc%{_J)-XAI-x{p4b%dS9QrE2^k6*d)b7)u`-2-{Le5! z-j+3+4Xu2fyL7iK=B6c!yIuMimQo`(l-_zcs-Uu3o6=o=CfcyfdxQt@%6D=fKs`9V zOm8V4g7=7a#RXP%FpC9wtR>@Et~%l)(?Z03;EVNWsq7;I*zko*Ax-g&B#>hH3L2=9 z?pTHK$OG8+qC8=)Vl6>~LY>Ti9oFh)xzSWYMD%!R;<{_Hm~f3wgYF;>L&di&vXX!@ z#+uM!#Vt`pVge>$92#ERyGBfuNYU`k$9$(=ePl@D_-(l77^!Tz=r3=#nsmt4wPz*| z6IH+_J!N0M?_+2Npr2L_cFEAW3R#=v150l-c<=YNKJ+Rx7F6Gd)9Eg#f;(KTq=LO; zd~d=p7#LxTEtr(mP|RCdsF1p9506e#O}fdRmgKTV-6~}ovu&bT&IXIqAfSv1QCQbu z8|u_9Z$O=s8|h#x)F?S9If80pbn$z|D%F?}%wSF{I{de0Y&fox%TNd(z_Uh`xkm;T7?5D_#jF`ZqRo-Pt8cyf(6bQ<;El8AW7D!<1tubfBE{Ro+B^A zR)A6q2jhfw#E8v97HTX}ImOr`CFuBK%_I0ZpKAbj}ImE*ihf@Z5PDQid?Bd?b=bFAatrI3e|lU9|v z2(GdNE1Q(zA>~3+gVvC`hb0ZdF1R-csMJo9p z^aQ1p7#{&mIimT%8;bQrP-c$5=>Y5wDK{9gm;SCKm|#>GhiMSsMEsB+mlr2P_IdVQ ziJ6}3`vu3pXeD}DcqxY1il-j_0Z+vz<2A65GjUxc7S?;WP6$^g#=S~yf47c14@&Tv z!X&huVl;@uFfhKO}MiaLrhAV95$#vv zCM+8#;x`CV-0aRy-S;u0J=rGCE8N;Vg=7rPSC21xy)36LerbW)%*8t*AFUO>Zfagx zTRpQr^m6&r!Ba$mV@IdI?^5Pa;rE_bfO;y)*Q8i@Z>}jyCp~=siA-I)Y`m1Y41C7D zEE2M3v`A3fuyP>!=HiYu3MPLHoo7cePAo*i3rH_}U&1yB|* z43Z|Fn>0t8^2sK-iX!VdN!mmXp@y4@7b`VVliAfG@Yvw6iTS@mbxA*(F!TGf15JGk zv8IQKt1OSxCeKkGGBrm>a}Km4zj7#=6Pn~A7yh8TkDzWA5cv1HOR<%Ck>6R|tG-H@ z@WICc+bqfD8c9T!Uj8F@5Ip1gjs%Ym8>-7>F{BeA8gk=HT#E!cD9QM38b&Eb$b{%A z6@>)ak)pq6rCOnP3vCqaxCMHK z()=A-Q1lEI(2n~Uxbc~~QUh?|ag5h?AZn*Kf;8@C=3s2giMzt1X^E}fnU@RLt!BLf zu6CJp5e%PfP|331kUj#O$+x(~182^D*Yqqp--gb@Ar0(bJI#1rx|%fN#KW-(w!Zqo zP=Zc0F&A1vfeWX5o+n8c!$5~_%Mtf%fCBq6T8KF%%pBd9Cs89o9Xq9a?aXTY#yh<4 z|?`HWi|hMsfw2hHPSBX-4jze3$8)d&qkyP`|6w|ko&@jW~yGSGoj_dZf^C#5l7_M(U+u%`_XH#?rV_iGDoPu zuAtN`wCi_XM$WV-kQ48Zs;I^VHZmDi&G??BlMbSS1i{|hTA@|Bt@qwOj_uf#($T?y zQ5&+St|K9!woE}?hR8e~%-~2m!^| zg16U4Wd%&im=(n2@IjJX9D3Gt`5qnCREDk5qZ7fhWvqW7FlsOEC=U7B4k*kxwa}mI zYH%lE!Xl8hv)GlhiQHZL*2q-LTrqFbl-P)OG|9f&U)fmUpM{y#Th*KGd6YCG^`!Ks zbf&akxJ^*8f<_Oqet=7y?Zl29H8ifQH-ID?c@r%a&{wXuvR;r(z7|atQCwX(JA>mo zRhvB`m^wUDl94H!4Q@XQhKr6Fyl<#aEDRh~Snn@5@DB&XQmvV^Cnvlnzu~(VXBG3V z=D@EZCB$Pu3?wC26d6w5N@Sc{hO|sr<>=@obVguKoGh%VSC5DO(OHb&={9!$WwjWu zCY-NXI=~b_MDL*a2@ySE#7I5;PVRQ(3hujBZfwTk+G<)cyL*3radQ~+Y#+lnxA_$- zpRgkDyCTObCJLb!S;UQT}mqs56k)f*>e zm6!e_A4BvPJY8QM=1@wX8k533he7qaYkrtl`|_rO5V#T zXq9ZnfuW`Mv7vj*%dKBm5yG%6>SP`b>?k#}SthOWu8tP&ZRxASXa2lcWXbN1q+>Rn z`emErO%I`WkbNg@;uL9D3Xd^csvPY{7j1w zCI4#SS(qz%2y3XZ#G(E{l9sXUFe^5G1m?24YIVupi@0&TC@b!?*aMfnZUMh`ZsqJB z_s$@CeR;dNy6D~N^~CMO&C2ynC)RIt$AHg@Yx$?ri-;#-TD|5Fcb30s6&^a`wJ^q8 zH7yFn1c%T=RUr9{D6(`n2qWF6XgmE&D;?Oit5+Zu2Ds=GrFAVK=Skw~tCzNj?Ptw; zr%!HWJR7sB_EJ-FF$;;LzxB#U4`c4o26`v)zud&eA)U;fnI#K>ooJ6JRhbLM`qwCb zn;M2^8BtD^$xqYkk*;w;DUqh@51zn-tGIps5G=n>Y_h~NCP`;m+ zi%yj5)UHbLGHg$=ZP1D9ysxpY6?lIOzu%B^yhH>bCM;4TL1Yd;FaWEA!nw}du+%al zX0)cae*DQqL?T3`2=hhKO7JsEQ?Kl9;s{eNNN;tSw{`oip{~A+9$#_IssKPMFp59m z8`ejI5o2ZUnb43XRR)(clRORY_?w7P}-Em-ov`MF~f5oVOCFH2TY_sB`y6&hG6_7M$7_^#8wwFWzQorDQi>l zDH0whl!sULWsHUFr-~LeQ<~mUbI%338^8CubzuX9>=%rT%~m_{8Lk(5S2%6AcPuBv zbC<=roTKHcJuLP#v>ipxT+T*WDsUFQAf6FRIFQa5HhPgcryjBei*H;>=FYSn2DqU=} zudpN9!L#qXV#r4#*)UsJGru8JCRYvy8tLMfPFy|~`BcG>Q_^z|8_ddQmsD%xcGE?O zm13XwEZzx1uFU6`$q2Nw`)U(R%IBu=x|!?&>f`XRieurTPO>9Q@tzgcQfShv9CREh zQpTkoZVxA|DXMQ8v2Ki?WywCM$EiEWxQJ?(N@*^d0yTG+Mr1~k>-aVvWrUh)IVSI-Z9Z<*yBvZi^Q zR|3_$+e{6yJ>N!q1_X#!{mmRiyCR&{b-2_^t!plRt*T*)nYNa<968JncXnp+i?rj<1S4QHgIG zFtUZhJWt)Yy=B+4;8mN>nyI}6-l3M^_4`}9iGKgLi6%|>x-&`uO3^!tP=yr6idxy) z>Q^4ff8*>OqhxEoblDAwad0`+qQMz-QE8_efspc_m1-+GG@$} z^T}K}a>ZEr<@dBwwiW!56Px#W?gIYYu@N>U%J~fw!d*_ZVR+7T$88%=*yPt)<2Les z?#t37lV1dT9bPywr@`c=`zs9Di++=TV*}1jb;WrbS_G$(C(c^gLL56^KD%x2h{KH~ z$IP-W#l2xipII~;dNpOKK?$PsqP|?RaJ**a$MMR8YZ{^U48vqmT)f%kZdFYkl>!L1 z46sA^2k+UzHF!ux<-<^&x_LRSx0hygW258Aw+oj|%*XeS8WYe-_+3UB!bN%hqzx_X zv4FTx?eF-c9dyYzi^-AKIxcU%+pn##5AUNjh=|>bc#jCY5^;~|_>hmJKfK;NlDSwz z$tL=o?&6aDgj&)AwMhpUPnTHUR3W)KjQWM$BJ=+8!z#C4E-riaK0d3UJ9AXx4K1m) zu4P`9C2nHSl2dS5qtj_iSG74p)aVD03eqGQeo|;opfLi4)##d4?|Z=XSo6wu(;1(}mrG9BOB z7a>0R3i?c`PYdhQGV9mWP3XuFy=cC z90p2LKVgbRG)AJD&ak34s3$k4GzfNRrL4WDWE=Lx4n&F}4l%T98pyZHR{7!%5bHwQ zPSw?4zG9>#{LH&s$}G`MyF-L$jk+^V!uU2NxHPOl1zTdWGZdQwE7tF$7swxC(3Qyc zxVrJX5D#(u=O2sU>Z8WJWPGsBKHVfQ{#E7pY&zw<@{$pDoz7L)ddpVFmK$G7*v`S$ zfmftgq~G{Q@(t=W>Nn~QRd=q|PIK2(_e9r3&xOy*OY=|RsMs8G0`i<6Bwh+YWksty zcZNRINN`d~%qdfOElv_x-w5XwkX2oqP1=+>s`Yr2y-7GyG7qQuY&~J$Ni2Cqw6h8h zR5w;oLWvn8mk9yUpqXhz)`fRz%75dYOQILm!`h9z)za>-HxV&L%j25RD) zg?SB0^0jiOxdq;8l_?onIC_0WVCwM6yap7Z4P}x7)H&-^yze?^KH#FW4?GqoYlH~hC%_8wqoLbzS>B;z{c+OUSKtaipZEGPY`U^8V z>qnPute90?af`pO%tWwi?5^>o1?SShBirT8uYW<-x3qqe#AE=3EYbTycr%*Hn3b@5 z?U#gqP!f;e&`3_TgjO--2=AYk;jU{--u9B0XO=O{5-vnJ%+ew2TDQv5&AFp`Pl96Osbi?){$3|oWDm!%aGo;4o3U18hz`yHy4S`E(yN$-x7+~Y0x1LQCG2%Y7% zAvqV>VMA9LgC{E1`B>4Ql|U6M3(^aBv!kJ%4=z^(3)qWKeSsgH2mBE@%gGFa7_T!F z70vfi6Su4(X?#Ks#C!$sXqfg4Apt*~zAR|HO?SE5yWQ^HjlPz1Kito{TZgUybCQfe zm9|i8BQ>WUQ`rNs71m?fDA6RPBMoyKlEFOkMbv#mtkqGb3>Hg)1talNZ5(41(A;`` zhzJ4RMO;glVkHW;gMIDMnDBy3fv;bO)nJmssgo;c3yn?_tu#2(Z`xNiq%}0O{Yy*Z zZRWo#RbVY6DtC@>Y6?YaR0fi~4^WQ}!#HSbe0nAA~@gpU%@;bnqUSD^l1H zEP1ZXbEl`Oa@G!P$RaKllVdL0I;)8{RwH$|gV-FnV?CBEDaGT9(`%{SM@MH2m}-#h z!Yg2`4;V)>UOnzSjrigD;EP$R>=)jwPI%v~f?FKJb8Gk5fO#TK(Ib>NBPiBwb$UEv zo#I!tAJHric~~{h~ngsvgwYy%=I`f=f~9e za)j^q$KPEgJNpS2 z7Tgk|V%$y|+ev$Q36^!ar}#(wC;dD4Oj+8BF|%5iF#F*xngIubfuVgA9kJlOX|OL| zcJ^hqbq1FhO0=2t&?Qr836yS+sWh4cXoQsBqRO_gQlkRF*~(DC#}-7F4l2e4uk=*= zQ2S!@(tEbt-j(GeLr~N+!LHh_0fzOccs2>C(2?xC^-y0dGcHc{9vsz(_-)0UH0j=E zg|mK9gO%@8&VygCUf`AE_1Edl8VVRYM-n|*iTr-?+A9Nz+q~UA zE}~hQHlbc$7?t<4dUg#z-7F0~bspWa4h776GnAGOo5)Se=kGU%iKOPP&D;n(h=vUR zWA@lgh>(b4Au!|^?na<`1U9b$ckRGRu)z3v1Srrm*ht$*i~!I2aUsfn4^^Yt3t*RN zkU&8a8LB+NgwJJ4R*nFj;{@RK;@mI$=vXtXylh?#)5XIxG)xE;UrK&fFhxbG+?vVE zBAU*_VVR`+h-D|ntyQ`})($VTGmmgk+yj-H2!9bTR0B}@Q&z#deE zS6zqUOoLS`e-H^pDDn}5J(la9U_rrF@?+Lk`VcPeeZOYE;6XL5rRsL3 zqZ>*waqJx2LPtUiB5

50pr(Q{)xv72-A9wbZpxtz36?_&e2417dE_rpml6`-P#t+YzroIuQ}VZLC|vJ%=*EiP9CDPUY5EDE^JsS;*uRH8L51p zdvT8_nK>hNo@B|N;tb4xlFE5D>`X{fTGf=|*^RmTs;u+z*I8}+*w})CqUO+XAlNSx zbku`6KMs`a*uC2A>Z0GZ8o~#ZiZZ(hXn4!KcR&)EI1;6&vome^yxD1%bNaRHPs)ui zj>rOr7{v-WHdM66uhL7@K}YXL9Ck-7uEX7fJ40^%uD5h|vAR@)=eR7f$+-_JuSyy< zatyz-mAGncFN^n9#kwUtBjV@pCm2CWIV&wFoB#-KXY8UHQ}4{ZOb;dxRq6&s@BAL zq36@oC~d7dTn8paoaS!FS@+*DHe$78Ch4bCBfS;|8YSw)7mDy$@=LW&@Ny)Oo+xG* zOk4V!IV3k0&s56>scuHwpTyTy)Ykl$8zlvrECHV3R|*| z?x9T3bqIgfg{RDsGo2y&UI&Hh%e-@aTr zji-9TS@HhhAKuO4JDJt2ziW`DoEax#z7Anl~I^*xYu$T2hNvp z<=+T$eo>IDTaS9!LjOD=UcgUr#&{Jk5~7|CqRt_w69Lk-lFMKgfAEW%` z>D_#0Fd1Uhf+7k!_z+|U?PyB`(WboSVM+y+YWZ-@>bcX}$a`PE6m{}u)u!gr9tTJD zZwtDSnWE3+#{~P&Nd>YhWeOqR^!_A^=rSrA_1|zLB3#?4CrT#%(8jr>g)|mp!SREK zdS4j?UgO410&5Fv(i~)bXJ%aEYqX3WzTT#KKQyi}fmL)gqR&Ec7LdRu60BAlI<4fs z`D*l-yRL$j$`tz8PrPeJr72)7(R++#t1= z8nrtWeqNl#bC%9U>6T4RU|J8=PMUOw5*vhibPbm&v>y&T5ruY z$IY}cNEb_^D;t;dZKpU z1fl-IRAWjhO}t7u0r9^2Vxoxi1p(T{&Tx5YpP|x2j3k7*5wp-st~8bCzq04AtDbh^ z>C?3hd{*}qt0P>wh|uDe82M0do;+v*{GmmL;bPLG`A%Che(bDPfHoFgLT7lopS$3? zeMudxM~+uL-pFJH_xTCP;xm5(%L3~{1b~PJL?gWe38K#fSV&@vBR9EdY^WexbV#PC zo0l;#x0k{H(h{Mc|fACL}|0-kFGkUIW+BZf5jP zB!31=yi#6>Le?#K<=N2`c4x|x6}45W>+iPYo|zvOWiqq&q=|$3Pq0-t?tlvUxcwDu z5p>nfZELkW>RqrDnJQYt;+Jkr9TPwsvS;Y@Hr7=meNK?(v)`(Lq#H-H&=AGVlv=Y? zziHuV-!FeFsn{1}W*s>(vFOdzr)*GTeEBBuwh;EK@~@bCJBe!9tpyy?RZCAF_-T1D zb?bcmrcQvy0ZkXpmeBi_aI$@SSw7!v%OYKvD@r@kInshI8LqwdqS-Zj zF!S_Pen@l0rWD&qCJm7lL)5!2uEjlO;p9n#O)Q!PkH(QL6|5Cc4U-==s&{`PoZE*z zDnjQKtp(LKQ|rS)^8~z%V}ny_*&<8FS+QC@_*FODm#{5thsWa3tTlaQu!Us%RXd`# z%k=3y*i>-4gsTR7{!pVmGrJ7!?sbsV*(y51hVDk^ZoCi&>cCTLLD3D}QN;tS{cbGI zn%oK&Dp<=qMEpr&PLQ8}b?_^eKbjhZ(hV z9skBSGxfSRs8TPPm@l7-S~*}qCpCN%@VdZ5SS#X7E8l(E@WbLu>jE9yJIsFxF_HS! zvPTQM$;-ujL>DXgS$gw6ir_Uze8Su01_Pfv4~5`MvTDn|`Ibe%|5{z_=7_KP!pqFZ zg-NL`pXhtp%XPyFve0xqEi=sseiD4TA;nXY7=j9{Q5^gB5+l2CY#5f1Eyi2OQK2z8 zL&)Vwa3sAf8>TZPKDK=GSYmR>vi}uH5mU6+_yT^l-YE)c8t-pe(sP~Nl$i~F^1PnC z!=D(`dQxGKWi102aaI=?b7Y$perTGrx~}WTLAT2+v6QMawZ?*tJw+>(p4FY@*Xma| zLTR^_d+l=WTzoX5w8O)1m%Dj4mR)k*Hwb+O`HRlq8GTnlJLMH>yq*6KKbqhh z`zW9RQ#%;%cA;E%BZM_nkC|wVQ(GBEoiX^!>y0++Y1eu2WZLLAOAqfe^Rm?DEZq97v^H$2SSm_AZR?+jCNWFa z*|L6Y#90y692%G!TN+_k)z5Uenb|JWdd7CnsIA|Zc)IE`kz-Uj(A&ry?OExYW)G3~ zruQFEoX|DzhK_pq>g?JiXiX*CZis?n31B+>br=blzJ$TSJJ1`5GgUZ$N>V#xyOX-| z+Z#ntYN08~-o zfz_40QF^QPi2=w^;Q=vJK7aWa?TZ1xQ1Zgm@ejcR7nQps@Yn8#0qo+q0r1P;5dvgK z!ULJBcmw#WIq><54#5NQo4o_Dquzk?Q(mh``{Rrd@`&+~5l}W^x`Vp$tp|}@+m^5~ zbj6;*luSuKn7xR1yofhhY=W0z-~Ud#HssV{aFy~qPc>~XmfD)<+M3tWX0rqg%Cx9X zoFkHH60b+IC=#i#O#q@%RDgDQLPr7nfLYKjL8sI(ILoYibWnf)MJ*FtTvOM`PJI+c zn(~oih?(fiL-J)UPKlA|7)J7f;1jp6q0|6*rgtKnZ)$&Qz^y2~z3UsxjX=7$9qXk_ z-UN3I1a;5+qY5?CCo1HCwB+>WUt7Q$N}eEBbfk5VKq`FHJV;Chz&b*l4Ul~|ism2d zZp_784=AFZ(%fnmx~SQziqSJyVWlY3n5Q6p2iKeAU%78gzGxf1Vn^QOS%bF3v@U7h zhC3_5rAy_IPQjL{3?Dp`Z^Yuw9{11jZWTkSN>Y`$6xxxbo3(u zKVbq9Rp@Sr^;c}t18*6lglxje7$iQG$J$6%G^xc1PX)xSb>dg_q&6>2<)$3j7{d+< zW}Zyoi_mVKUJlXAN<;IFRKF~yWzZ9?N2oP9e3B}DWzX_Jm0M$dvl@7*c+%u&SRV8y ziN&LI0%tl)6@qD*#BnOwmMWPOYOn_tzDY<_VnQ;1_>fK2jqj;xw;_>7QJDLMTjGnBXL4_w@CklEDOp}=M?<>iQ&VmWauUCQ}D7d0sM9p*ZjJ~xaP z4J`x80bbl$DBEx=#*45kOu%*BhIJRqGuDNqluFqiUs*N9RS(Bnj}z!mHS!9M$1QhN ziC%vd`KCvSoE+3)B)={qMxh5TLP0cwN$@XH;aZ3}l)md&o{dghBkRpAMCe)J{;fG2 zs^T4K_Asm4$l*{YchZp9n3GxN8Vl>ff9w8^f9v~4XS>`hR`4f9d~A_pi?1>-?Agf9yg1jsF*#lHq?c z6ZsE6#Q$$JW%88m20cRXjV~1LhLFBS2NkKmK%O{aZ`gO9Ek1whDL+3A^dG0&4L8%| z5)n8f{Yjm~o%sEChZhevxD~@MA6~Z)Z<^SF)tNU(-}DY`ocjm*8djA#_^qdXPcz>p8NMe< zc(o#JlI5olhzmXzrL|WS=vGbJSDw-ED;v1&-zuM-GHqptY!j*NPPueS8%J%pxeu0F zsTLoP$*LZgJFp^c&N#8P#Y7yk)W0!+y+w(X((FwK2oeTk zN7gSi{3pDKMYC7dc>3ed1gLrrN&qV54O|(~V#*GtifmWx(q{>6CkOpcIKT{3MYbLK z`Zqmb|2NJEGt_6f3q=E}j94+pt)kU6a)whyuVvr_uZ&t@M}?E@SEdB3yx`BaU|09q zGpYM$({5_@pTcbd0!|Wj)S#syt%Q}n^L>~5eMgD945)v0X374pp8}VLHq4XsUG6wN z>RW>qkOGAI+qoG@NDPvd3_KybGa|@o1`(uCCTS3as1Kn%l4q5jE4_KSpJ2r7WwNW@@R ziXcV<92 zG)b0Ig4CEW7yuARB2UAZfnbyo0Yn57714PXQ`sJKD8@mEIJ3_N!$id%R2$4C2NCy) zq2ZOjHNK{^r2@G(-OTsqChp}yQCV$EE9Km4=4;!j`(#rImH>bsbQur_Wk!SBt6W=N zJH%2~^n=UEQ_Vfc=X4t$(7y$k-}9KR%kd7F%9j+F{~3mI$MdLQ=>eZC6b>Ly7Knao zfywT9vq!t54Ah^Bys$^^DG$m;{*9Qjum`+5XNan%tzq$%hw>%gOt-;&ENktU4onY3 zUjRbK&*kpYDs>!R0Z-(pR({Rt>2m0S?9=rF6@WUqkg>)2t+QCoucZnur4ZoPwulQt z_>~we0HZwuu0}kl!Y&wMZvc`!oM9dWhyZLE*nt3WyC%#h0f1xxx;sBp8K{ds5J3PQ zbKo2SCm`r0KVY&ypsYL? zJw2*3AnYuW1gAWev_F7@JY;)YUejBU_GLI$_%5bL@<$ue(~VSrtzO*OkZHHTuU+I;^HYdK51v*mZdhJ_ z79qL359`xRQAEVWNJ^47hO#(ZaWtkr?Z-i}-ojm-R?pMaeB!dOWM*2EG99j7-o+qj zdO)>;L<#_Wq28^bslFJA32B^S@6WCEAtLyYv8y5^j-i2eVpcjY#}vR z8hlT{7)Q2Kz#fp6!0O$WU6)(p=w1xfNSeMJAseTHgb1mboIuS70LvMHTLxu8mMoy! z(8@i$SDxjN8*EL^M*=K0zJ4jJr%TjZEOxMMP`yH~lv&7&JwtbpjR@>Jn%5v>y0=RN zwntRUonOI;dIXR*AT#+Nd?300Gkq_+;EUkc#(CIi10>Wz)pgi5T)R#fvDG84`dsyZ z+Oa=qe8OcRGhw{AoN+}+{Oq&>iI^cItKoI4q!RWV>&-+OT|nRd!{-=@s}%NNHhTU& zfOE$h2W`c~?xYETNns2CI0Tpg$~t;ZMei+B}E2lK=ct zuV@y*aU`}W^V_kea2*ayh%KJ|D`(kuK$e4G#cMMAgv?Q1{DsOu{eXV}b^@GsfiQyE zNeDwU`H3MN=z~RzF-m4t;XGCYHRqv53LMV;l@y}d_oUg;Yl3=0djjb4u2f#JxPg9P zdO~;lpcSbkq(eljL9Ir}46N#_%{M~2;=u22AkYyB-S>_5smJ1vjM+Tc-WsI^uBLpb zE>WIg5QU7wSmAltAHQeW%tNtesqw;0`%uf^rR4Ed34GkZR|A`?&AlMT?%g29J`iHz z@)&pno7v`EaXt|xo|u?D&E}qWAdG;^;`s8uDH5U|GT95FnF}n`fwARp$nvX^r^Qy) zq15`C%r{_eg5U|q_`q`cN7sYi-QS*BKatnFgZ1)tbA!<3dt}scY>bL|; zYE=b@u`ZUxJsp@Y8g4!LjfPfr=p%^MAAF3&7&Tf5Bm~XOz0J+KLDBsg4a{* zQpx)>r#qMftcG?Is>M^y?luPkHEzu6VTCY^E=S*$!tfhn~0F;T#G%e?N1#qDFCT3TOQ-eRV7PzCnb`o(?T&WI+` zFUl%T%G(Mbozc}i5(>AE8{-4BGP`Paf>mVI+T-xN*$sJ>9RmxOdKD@1v0KKmiR$BD zd9xrA`lJ2H1>f#sNdA7U?i{e{YoF;!%l6Xji>J*X#huC1)c~KnwG=jm)FXs{*5C;1 zv&^EmN{cEsjb+z!X^4Mpm%(GFgp4$0Q}{5XVQBGuRkp}E7K9g7eRF;pbkT7i6ThBw zGsIn^P?g>^yHL7&-j*W+ZAO?L6p`J5kz;Xa%I5qO0GZu!*{MT0Sny%9qE;{d>%+*U zp7Tz9XuW0z|Ho0O`@0L6@~k_^PjF;80{sYR$ZlU#p6P?zsfcb*UW;ll&I46{Aq&bG z`+Wsefe!tVLUd|fSgoMvocN3RWbIMTA1o64_4$OQAIbI{?z z`rg_yy<=?Q@Js+$_O+O}o!(AK4adby@dW6Rqb=#`paTb8?!?7KrQk$(@C0GriPa^a zoEpcsU+@g_6p+JNiFrLz7$t3XZF{Yyrf+V9&6zNP;1lPcgd2cFeI@i3YR9Ugvvx-> z>*g`h;;}kL_TYnDdT>qv-dvM~QukoJ4>+rhqczfrK=&qmUythT0O}XNCqSSipEjF7 zdt$8?9sH)-tb3IBCzTH?zO6C@26t0#-rQ0WKX~a2mi%z30wp<0n2d0bQm0`=w5~ z$GlT5FB^7Zv8)Qp%P^EU-0pQn7~(dA9GwuUq!UVzg5XNYRnhym{>q|0{&Yj)RS9;3 zkX?mvzUA{uppqGO$yRBhL^+%EwE0pL!3_4f4Ca*2$(uXfjGc5s)1e;~XJwTI6}ra2 ztF!O`2pAmjG4rq=WGY$;J;^!I@;rf-IyB@y^*=8O-o3(1FiRleMAfXCN zddDUVj`bEnVISU-6oQb^*saeP4j!YKNH32^H^c~dF0u-gbqitl%RPut*(8>+s;cT& z%6!Tw%zm-qouWj-yC&&jm$|BHRqu6woj9MjjT&;?lhIRWg$SDSzC+M*0D9p)G>xS0 ziN2EL8Jd;Hr}Is(1hx`S@9OEcKqkvW1WQn?v>mM#SF7u*BpT$6^)pz-Rv!KihBxWi9HYyBTea z<>5AIa|>0w*AB={K2taOuDwNK_pW5D@Vsx!-t%|PB?tO*Yio6Ekuy$Wbvqtf{DhUVGWCzzAzz(&RRm%Q36nw}M4=?1R+MK*UG2+9YW10L1@i;x>^+O%EylPMED zY;5V(GPyYT3x!0HTsdVD#4)|o5*pDAcQkSVBeEY1O_N9s_!EbOQBy%61*_oE`l5a# z6_?+G?0;w~qe5toOD9{us-~N|iCFesSDdb8c5^fua~Xetxm~KPTOUQn{+5)4=j*b+ z%Q<%l^3#sRjoi|d(2}~#!PdRq`w$Jc)AWQ^@W6U z=$XH&X<4a%npF1UJ9KT?D3!h%Dd<>}SUD`t5+brSiX}Q5g3snoDV~W;T-I7Zs!14? z>wLlUx$e@m0Ek~6H5o)!pzyy>CNYx?EwUIIS2_|IElr6K5dsSTh0lsbPr8LkZ8SCN zn}_`i{SVElZ>2N}dtj%v`fVB9jeW}0)jg+CAsJI~&E)1ghgu^SkzEbix5npk!btAh z7A`%<5F$kml$*3{iObZRvOR%8tXqA9IY=1g&c_(-Eu> z1u!O;ewscud16rzGAS~=MsI87zug&s3?3TY*t%y7r^|&km#EQhkQ#@ab^QJz@>!bj z3o?4J2`^+_EM&zH;JHZ>YQsa;ktjw>z**GmHy6F4msR4eY|5NOU!87ybIqE7Z6PLR zIV3WsA0%jH3sy$*yQ5Obx| zO5b+;p6Orn_Da>~{A4@4%0so@w9VHMc7sNS!7X!h1Er) zvK`-Q9r^fTWhoC?cdtkjmR@PV>mpg5<`)p_qXqwSC)y$ai|WM18l#Zb>{nI(Aa{k} zi#0I=t1qV$++CeBtrM04jOpzzL5wT5P%cQ*3FFevdK!~-iD&OKjZY#k1?G6Cr(80T z#BXxCDZmDoG+D%Cj@m1cn4seT58;z=CX$>L;R2tsfTP>$KWga31BFJ&!a@kotpizoyTGEUp9%LK zyx6%#%IV3p8ZK(hF7M-+Vs;3+`%&aE3|5PW$*Ij6J=%}2p>u|V9oW;on)Rv)CwHS_ zfiRGlAZzf*9cz`OdAY?sAa~8kWwm9QTetXua8|gZ2g>^=WqOndyD>z#=%iw3m6w)N z@B@B4^S&g10&*X&qBcE)rKDzX-n~zis({z5a9-WF%mEm*VIGn|hWCX(NtApxMRPeK zcm=qTX9(yco3EN^fI31pUzNb`G53Yc?%2j$!VT*40$*yEt66IsYn*um_zd2&ZNijl zIw$xI-59Ve8$uRreZxYiPh#--(x>Lk;={o$!G%B08^YT=r0FVr(>377NgFRLAV&(! z5Q2NmEw3FfGO@A5plf+u50GoCckFNI-1K@XSxx5T$#cAlE;QWFM^18nbi?(LV{P~z zLvK^-o>r6GstrG zCqAi9N`^@51wRekbrKbsjTTH1!ruScIZo;R-6a1JcL!RxEAmP$Z-}M)#t1p)_Zmq& zzq_8*eRx77ik(4A}Q)k#rA4DUsY971B-j=a0t| zz@5t!xwwumcqm`K}YnWlee$7biA7M2|^Sks9{A?};PTfc3A$5P|9f;sVZ1){yZ&Y9CX22fs zoq(IZ=RL=8gH{QNTXrkO4EvXq{%*DW)Y$Z5GE7>Gk|Qjy+<5oaK$50^_*Gq z$*dfaW4H&akm9Y-0;O5@vpJWGV0cg%CH<+k15xPv*n``ON-(w@)NhC{Jt_8ZSlHd# z1RjWumIuzZ`F!Uxdty7mSk7u>fogBKxldDM3+6oE$+gN-NNXm=-?*Ji`3xB_r!{B} zyzPfR_rUjVhpnCXuGh_9!+AF&$CuBo!n3(0A?HEO%}&4?4*WLZ_665R`F!*Q!@?vx zELPa@y))uENwc)DF1kM$8d=5Es)BYv1&lE)%CT?d^<6KiV_Op=+@2sC^XXhj9~U~a zM3-&$14;PN+g;wzSuz2Fg_E;vADhu(O@5q7zShi7#RNU$_X0h9+YUtb6R^oK-yj$sgKR*F{ za5ILHbionU@WfAoXx`4C2UjCU3m+EML8y`e$1}jG_F=QoPc8h$;dAdt?J*h2RalfT zJsr_}-xF?I7>na1ikiPAUa#9$LIBO%0cwXB^j33ZXg+O@PC1m6;(lI{mXQ#qyTr;( z&e^uVj=8CWn6)`>1F)k96K{zV@zsa9j)uZZP&1WXjq4xz)Dz|uHLh4c;Hxlr6Ae`! z0er@sBTNl~H+1o+6JgdqkLMmlqtjat)Fvm?j&yMuY}9jr#dmIilit$SPZ}_nK&Hxk zRO@L7hhm-7M;$JbJYY~C@kTRS~|6414+E1&fs z`emvw=vY7c2Y&idmRp)6oq{mlvsT5KficYwo-krNU_lrs5!zu5r3>*hyP*-yoOfNO zf}xTSM_GU!F)2#pS(AY1_aCotxs&i36`X^~n3x43z|B?pnW%|bkE2(6L#!f>`JjFJ zYZ}r#vrwW0xvzK(Ik#zsu%X>yk5cz+ql2L^OX8y}19{T{?>0+0m=z|i(_4`j=(322 z&}I9?c6`vgZ@)iwcQ)dTFf7@E*#%l*Nhnyn(P>?PoA4{_F-7Cq?~ed1f6{-9K2Ymm zzQP8Fp;runIf(1=zG>X9sd2!`KRMj+n*10t^jhNC3hL=Vojjrhi5J#b+_|q^+?g~_ zpLd? zG(FQ~o_3YgMr{b&>~+9EuMYLC?4zJd9|MCI@Lhx!*u>igj(HSjoG?h#9w zODr;V$g9TKWHUCDNY~73#u!adlIg;DsXq7oDP~|Xi(bgW?69;XXWsPMsy3m8t)AnG zYIPR!%4D|X3geCMA{nw93CRAeVlgnUq_w*wLPG%Ii&d%2{Ic*^JhG$hD`-l%L!?&3 zZt6cSlVy>`rBjWeQaDIwq|b&?}P(kdtPX;c#xSuCIxoGS1u+5}{ zsk%zcpsFOSiM*(Njy`||8UBR;wfthMI52z%1HlbAsWA!}SnnX8IMB4v*kq#$RChRb zeI7mQO}_nEBG>NM3xwY~3Af)fH3>rPl;DI_X)v8%M`z%GQl;3>evAB*Iyd{WlD+5} z=a?CTEEmzE4^ij+HT z`amZVhRXs9`lE$Zp{~OPK+yKTgWkXTj~VI%QMeOBN7jc~kI*Koi&Nf<;-f8aRJ4=m zfxUoz;rP&i1i3VjwdE$e?Y(b+sMAT(7_}q>_FSw!4}27opvV%kMAC^fq(9;J(cwt$ zkZuWfXcsb?9%!(c*(~9$j2W+pKKgI5K7OY@q~iCZAOgXK&4`8KNaBm3pkqZ3kzD9u z(5>mhoEdhzTikIC2|LsajSZ_vR?$z>!?ji7(|QP$Mrp>(oh|!bj(0)oNw7#f8ad_4 zB@f3%#Zvj`0(omcQdkVKlY}Hr<>1an{SgA46G0dv2}JjRBd}3haOjcR7nNiC z)@a!fCmT4}>Dsd$d`*0K;d$b9-D?L|vyD@R7~8yhJ`L)5b9Y8T7uK2Qd<5ixACnh8 z&-{!Y3bkTc!Lp@o)oWjXCq$%J#2Dz znAXho($&PofNTiA&1q}!#Ik_LLEY)K{}2~DfFQBW&NKjZ3B1J>yaQD_ZH+eVMwXho zo!DkMgSZMe()ERv-cl;de6vCfLnH%cd(`3i^E39Gq(ize z`e+)nHk*H4H={Juuyejy(5>ag=JVS?s}Ihrr(~xb{m$Y%@pf$pv1kcZtOB56I7T!n zE4>DJ?&QUB;Pl}`be1iUOEY=mCzM5QdyO`@fY^3cN*YW?s;gltQ=;K&)zSSbq3c5y z0{%pG03TZH>Z8Q<+YQ;;IdQRre19j#4ZG|R`>P+jpUv;}^c@OfZ$A#Nb+>5|ZvO4N zkVE_rgp|Ob8~j~9-WE%HrjOf)>+9&fzLUM>?YO>OyfWY-&FoQ12u=kp+-iOoerEFu z&Vt0+PQXUJ#6k#B|>bhpVr5f!=3jP zKPwwSXqf)?4d9yan#ufvli??R!~_u_G^+58?tKE`#+jU&M@KlgWDuPXAMxF$i#4Og z+U;gpP7vRuq}=!yOGGA5_5iX{n$s&=pCqCG)}yuUrIQ-@nmn>3->3gb2xuq+mef=(e@sYkK5HnN`8D@&#Da!qy6a zvefeC4KMi?R%XaMc1wkGkXN{QUY$`R$;BqH%Qj~q9tpumCYX^VZJG#T#-e=oL;#n2 zE1;lmpA8Pr_vYNROSx7#lO`QwB{Jrr@Nb&WnD+E;#;AiT2a}{?3#MTr@ z>eykC^D#j>V36=Q{rV{B0S3Fz^NYcqU69frY8*B)92c=2tw3bM=5(%hxfXsWYO8by zZRw2)$NKjQqNDqJev+C!RG4GVdcIL_f~r3ynks4gCP^2~yn`Z)?sqjF!d7LpTon>xL0v6(1srf(Wx-?Gq%!4qtdEo;%3Rl&eV&gXRrM$$9gfUeH!DnaMN zpWDYfwR*R^xScP3Qw8qYs2qe?I6wo5wvOik>i~hq7#rvi=)Ey~oFIowrr_cP??8~% zNx7mq?*|VZ!mzCq*f1R5T(w2U2t*nq7!GURX2wr$(CZQHhO+f}=4f+D!dl!4;#JG)f*ke+1bJ|couJGOWLD>G35h2-|@MM6^uCG<$j~Q zQZVP}%neu~Q;I3E`^{>?JGcqAEn>^(0dWd%oq(wMJ96D2vcjc115s}kKiiLukI!?M z8_gUES+iN;=K&8zQb7z#!j{DISFh=PE*;c&SMsj4^im~as3N||xL#C#MULeZb(Of@ zs^Zn^Jgi04E0U_FxJ+taN7*vgb6+sRi!bRAYow=nX8VzRCZcvQap&q>UAp2pe---? zYNhjgDl@Fa487fa$z*65#9f#SqmF3E6@*X9$@!F9s-$FV`98-n>~5 zUsu^zUV2P@;DT7AE?SWEFyYQzutci~vgUxsK+SQwD>cOl^BlMd%@m=e`-a1P(Sd~mJp-9r^>gXwga*L@X(Ts zMYsKDplPZIiix&#K)k?YTCaoP{j61x;T-6|d(#Qvs*GH+@{X^h^$4 zpwx-;)!gV2kXWI6+zQVG+xswr-Fa5iXhsvQ(D$v%Fp^5JM7a`q3szht{tLM>Yh^Zk zDFp=i0}8BnDl;x_Zmh%DY{EGh&RAvh^?n){j*Wd3WL$f)ZkrTKRBu!p^a#F2(rIwI#(0oGIQ%zKUO6Of4RX<+K!dUfbclGk z$OdqUf+aFK10_WLoh#$i)!8u6J=#k@hf9YxUlnbSTMZgTw?Mh5Y^j5*!#g(A*YTsh z!L`dATBDw`r6?%Fu# z4jeR%6xc_qdsz2$_q}DlOWw6VJ8nDgh1vvQ4had078o>46jqR@DqkvxtRJkSk&lrj z-7VcR8mO-O8*Re-BilAWj<`Sa;nKskLkwOW0uG~VGRCopiZZ4`DnlMab<7TdTsBkuO|r)Lz!l{R0x_q zsk1G8GHrh9=GV=SjIH>pkEkcq>naC6O;<{0+3a6~@yIZ-1c}X1Ieh%zZQr^IdLUN7Lm; zvW9#XtUDRHnnezB#5-M)pN_nXrm9dLFWt#`@uK91VvAU$ri=C1uhF*}>c{wIW9*&^ z3*oE^qdmz1|HqI{E(vaco~K5@9nD%uRWsm^iMp#DqS@G;wC(|Aj7t)kyJ zLz5X@hoGEtXa$*fMtolGk;#qx^Df_CA9y9UZYtA%8*USBTZxk z5qbngEP9<9wlXWTrg>x_<|<)hgNJhkTUf@%HYZff@{;fv7j_D^h^ZhmQ&oA4-U|OP zzQ8JA!cX66gHR7R*B#4_0yP*oy%ddT517ajH>~6(D!Lt2Pg7>g?t23RY7gk$PjL)V zQLzy1c*J1TrQuIC5|Vg>K1Yvz@@$EiNXhq`Yokb}!-q9z6|g25wfd3-as6-A?v@IB zV}0%yo&?Q@xl`cZHlXHm5a0b^Ro|9NmdusSVjdx6OL%2H^WVdEJ9!G|E9mq+1MxXv zIQjtZ3|6WcbQhtRIk0GVE?`Wvf55rs{9D74tM#SH1wWE?Dxw0CbUaVsG~!wg9NQ!+Wm6ERASm?Y;hbV(4NMxof`qrsNi6y*BV^A7a2^8qtAqk zmw4j~84~VgxX~dx+z(N(gE#Cxqb*N4&~sG&W9quIqp9e&{XTegh3D0A>7AV#uUZPV z+f!-k+;IT+qOIQjnLFUh!nPFD6g6O|sMPP4`rN{|Nr{ z@?)<4ae0uCZivJ}<+4Qwt!B*`@aQ={dXJr>gs-L9U+85{*6w%7V$FhpHT^Xte_+Vu zuU^ehwQ5Q68?LX3GE{`-rtx>IcYt?_Hy7jj*BZ9Y>>=#)3%Y}ZX+$lg0q{yJ&B1ii zyY`#Qbm#jnmfjZqV%^YfmOnqH!8~p}gU0Y}6O9k9_~Zz*Nn^VI7C$J?14h$nqXFzy zZ2HDOZkt*(9F{(jdCLws9w_nR6~??qNz6{ zt)RBskp_lwqYDK>VIk5_hFMwOxYzJkm5b;uTmM5dKoO#jor0_bH>o#;ezY;~a(F|v z6{8aqAi29qLa$cwQ^;o&qAFq7X^7wI)u?aaSK6 zy4l&G=J(7uMvyxEWn=(Au?dQbjXrvpUz;*+xF=Q3ULU&dmGBr*1RmMpn!B#2v>2g4}3bDjN1U!sZDv zJTz^kqHuWOFLhS(f>OfWft~h_m?Aw1m}N+b?Kb#pbL-hO`s1K3g~6L8UisBN8S3+4nhi3rIf$PoeZNCP*B;(D&Z1_SiHC}t^6uXn~O zcHC(4*Mx?H1Gg?Iq-D`{F`=8)i!bBv`v#@Y+wm9T2eM&OSuqPPT3o9sF>(^JdT)8| z0}(~ygqc~sV+4nwsF<*+H2RXErepn~Bg=b9#zB8@`G~DB;?-!1)N#f^$C z=WJ!n_oQd0bnbzsK4p7S6SR}kAhM=`ktX^bb^j8%1cww0c0<~5=Y-ibFWMtZ`Ib6H z?F`K*9xL*u(rAk#U^$PMH7JJ9K784(UEJiR*a!1yE-grIRlW`q(#GeN11x_N+A^t?d;Wl*y=f#Wn_5x+#L?bva~V4gsz0PK`XfPC8BqU|V$H^U@)9n0}xcpptGl9HA07Qy}` zmNu>@KH9ZW_M)d?z#1Kg1k0j~$G0luAT0A_kDJJklP(LNSvW-osgAqTsrKcLeL_~T?KieAKU&&z4dMfq#uA@4<`j5yV_cjB8g zb+g#Os;*;GqVX$KHmdgjUMuPV&XGz;5e!_V#QwPv?jf({N6FZQd^y$8PDvnQQ>%eE zpZH~GHT&K`>pM|2^I=%C|1<#}7J&BJo*hB^JM~V&j^t9Fnx2}zhP8^7@;FH=1JGrJ zcAp3SmdVExpP%B&N2DgM6Q4Qlu5J*Ve&yJ1ve0b_w~i|PRH~P)+xi_kI;%V^|Cdw| z$3ZMgxX#8kdE<6q%SS(p|JAX$w1Tuu>W_|`h+m#N#Cjj!j~B0+2D6B|UCyfT|IbQd z^9Yd$|AZn0jNB5brjQmkksXgkdK4)F$H(P9^YBABUh5m|?^=#XqT?*+MJ%A%%M)_< z=4U#cDlfPn$3Cy<=;KY}#v%$+@sTtkB9al&9xK%Hl8MET8EgZyE6&Mo8MsJ0Nj!{{ z%U_G9%k}dL-{*m1ZEq~jXtl|P@O$V(_~HNz-cRh_Cr5YtQ_4gNCX4kIsSdUASUwsw z!_pV>nd;@!g>H0jE2n#;wU^7Y%53&U&}C-$Eb7%OQi<^ji68s-r+D3$(;brPcW00a5k^a@r;7&MS20J@Y;!vdFF^pw3`B ztsq+jXw9L4qpl#Yv}xMTdGZY;?aO=a}W{ zmV9k}n{~@VTbvVFCK9Fbyhq{`&7Gv3%=Q+|Dw?!%pCLR!fL)4d>r40&{Ap|+yjj9G zE=y(3B0&iL{-Kd2&3)!Yoc~yL<--5W4U5iJYs}-s{}lX84r`&B$UJsvR@qG{%Xs`l zG+U#kzg!Vb>RM7v&Ol?O=&Yrz%Js%(_al)?06@yY{ODLcMesZ z+${anohia{iDVY3sUN}20b^WK0XyTc%%~N9!VvnIK;IyX*++oN-0^!yf5U9Yl*fwG zir3<6;88X)faT39KH%;Ct>o=QIShHy9JYf4O?8+9irFSx(Z4eqTTY5qp>5Y#b^Mhp zPM7*#KUlXCqSKAd=^uCIK0oNPSnXGWq4kbv;yo>G$hp_xIzYnhWm?jfDZQk5gg`_h zIsTUQt+Wn(v$grx>%qWEIoB@Q_vzWt#Uvgrc}4f&>f@hGIA4~{td9gYb~gA{;h-B> zhyj3HEdj5AQRL!+Ye={+v>y0<*`sdFw-`T;1B%Ce#mDU&8y85n;numvIPdk(g44J^ zX{Tf|)($fIrS=c&IHU^G0|3M9)DAFT*bw3if{WnhDX6WK@O@pxF%k% z+>4;;*ynBl-gAKh25tvZCy}Bj=JnT{8`e$`ke6@UU}}s&APR;qHGGaVzE=s%q8!p&!vkW ze)6#SU6LpE%8pk`E!bfNJAfFNmV;JxU`a#D2ffM350(|+YTjX${fzq|37Xt*MsI;* z#YBjvkvbVGzkymgA?e;7HNcQ}dmeSmakxtyYcQjOccFYAMGj%lbK!MO9WdSC2$cG^ zUqD74V!KG63pNn;r(0#-(}c$T$DEkE=;aj0+;Bel^z@4I*}QzqJ!0AlXBv#^kZHAr zZjJKO55;iY9;qTsSHD)kVL$4`*m%aWGdGIkH2|z4&^P#~pxgD@4csQqijaL@jAIgTXNV=GAt6_PUkTe!j% zx0e1wixUkkj2_A&G~Db8p!=C7lNZmph>0)q*wHvVel=M-RR=Z! zx+<+L8}4K^<>h&Vvq$a0$Wd8bamtid`f5YD8{f4kh}xq6`U2N;^wBg$N|No4!M1X% zraFtnYd5>oTAx9g@cTW19>o_gx)PJU&u9+N=g9R8TcfmtA0<9HkhOL2*a?-LFvX$6 z+FM}}IRi0+(?q9?%}Meor6gDOfhAJ%;uNP0(POIN+BEDK)o)i7y>PheHR*{LYNhMM{T{YD4? zW0RScMcGA91+t`M<;v=$OMjG(Y_%ND3hsrVlGRz_bMMb(ABR!5hhrGqx{Qf6k$P0F z*xSLoKK$|h%xd3;thFhaNC4;Hg}Xt55R0P$dyQwi;0QHQ`Km&JCcd%`>wQbjt6=-% z3IHJ|n(oHI{j;3Zddi;pgeJGqd53gOOv}VM!&SL5)(Q=tJoF{s9CJFIBhl?&%THFj0HD=o)U5j|X7x0C(u zg)lqj#>P?pPn``K)yt?DJjT(|SU!5=S07m&!~HquK+}LxPV9j;bpGM%o#`L3Euh(V z#zQ^(UdZxbA$@>8(dx#}dX$k95fs#rmDKo98#FGJBzh328j#i7DK;0sCVyGV=8?J8 z9_w5rrjS*C(0o**YFx8&1+(PuiKSQrV|-37H-B1x6W0 zhCqVQm=p&>EP51yz67J_&{B)=nTm_woiY~uYD=@CkLxai9^QkNMHzC<6xBH@2rO!iS5%kL(h#L8X{REoY8$AHkak1-zEw*P?iHE_GN>rhiZ+rW zfhqqvC~K2^nm>aA9-$tfF6qm(n`%#RE>6 z ziy`QFQk|ocv%IB!d^2MjHW*&ma>%urEnee^!H-(B?l`N$R(@P;IFs z;9|89Kh(kirBm)kr3U-VT3`^BC=?%+E$E$G0uO>(n6s1K|VEr`-Z{`4!s z%*BD31m-kKoze|%S~bQNxHH}*s{14)Y5iqK2Xkug%7*a;MnW!W=wvJY<6dGSCMw z#k2dKc?nx-wJEs_5KJM8+$)~kY1#|ngB~{r7xrv`_LDK$Ss(G!-GYfzpVOyu7DaD| zBQ~9d!Pme^AtZGl@%c2xw^YvR@cq?TTGfWsKWn~~dQ?+81)Oe<1#Omh%`kwqEe%%p zS;Dbs%8*jR%sRR)h<_+qm65Hhw2{l;sY#M{<^!A`gzpz<3O@@e*H=t*mrFVw+fVYU ziiB{jf_!u5I5yK%M@f|GAilk|UXnBPpR#nhZ1}lJfg$@RKQRlzET}Q5aQgyXk{1t} zB0#MxS|%5avum}D)Q!4DsWO^Osb|%6Te_@xOgK!M%V{jANH_3Y7~ zML9D9iK7H(G&f;h9G@aOMVoTn7Ua$ADBZ(N&1h*ebV8^(ZK^4t%=LFvuV@=^P_@EQ zB`^7kbCc6Oqk&w5rsOD(mv&J=O*d&!RYqQv877$7B^U-hxt%bmWJ71Y^(ez*fHElK zfAj<;_T^{Je%sv~`|wLu@JtEUPi=@qqPC}a>f^rG!6zM7n<9ijQG|yDoBl+35>sk# zJ&!cx-hzjX)_K1zr^C(M!i?Y-V`(|v`LnjrQ+>0I5|!sXjjW*56@x##*B?UKa^KnO zOZr(KM6uH@zMDfZSip@H$DJ7uyOO8g5}iAq-Ut}Ahyqd)7_%49cMfo$4D``F+GGnH z1Ih>Kh5X5BN5G$`Ay^8&X9IRM#NADM%2_)WU%{TZeqQhKDFgMZA-s=;u{XVhIq{3K z^mnA^0BYqKMJS5bSwkx6?D2YjTM;Q~K5Z|u@;KM{B<(|j?+I}#8EvNUpgxGzTiXbO zBWbSB8OzNW!(aK$;W zasu&Y3BT(UZt#h!0BL2HzVeDb`E`t=;>=zumYvaSw zMnvUrhcr3~zjkOkCsI!aggn%5sbn$W%Y=w$RTO=6gOQ7i73rGn)vTIKbLuRm<@ArH zAV^b2H7TVLIM*p_yi|-R{=pRR3D^~h?iVDvq&w|iGU6CJ* zWXngjrn$Y?X;qwMTv%LK99nMevMwZu3cPQ3SC7`Vx!Sc!R374x*u8-5DI5D_-F{hv zXde=hwl9&0TeNb@@(GC$6~#6*#rJMxTUUn8Y+9G5!jd;lNCmclv5v891nz`=DlPLf zgGHUauPvxJFRb=fX9Yhnvcb) zR_FzJz1P=Vl_$j?cV%7VyJF=pqm8Gvq&q{wlmzQl;z^e+?H8=TZK>e|5H?rVC=cu0*ijN^=a)?I|w>9s@EP6RQ{4YhQzordZKYj4rQx9F;V7Q z7_rDPIL@#G>rpdc5%qh|- zdRB+kl+o;IIy0lW8tlqSa5UFF;?9~(J&;mnHg!rbTFXjST|2MF#i~|{iF>e+Su47zu&rhd1jV0rhY*e5kW-5dcMjKXMkrEhIcN z3p|rg*Y5mH2Wr18zaoz+Dz9S79f2*p$_HvX3Utjbu~vItf^fQr_pwV_dakOxt6E!o z?xXyovfY7~``9q*n5qYE%W;V7BL?<+{dU1;@Ck3ayz=8!yz-@FLrvWHfV8XDWNY#v z)zo6cHq%$loK)lbZ89Be0xchb!Ei3cn!MJA?u(DEbK5zk>Z z@LE09Vn7VKBf!Rh9&^z}&eJ1D^%6IBa}X;spRBEZx?lX*C3ohEG1^pLBiDOO=90sU z!q~~(>l*VVF4HmaMQlV=c^b?+)s)TK!M&xjJeH@nVA5p}>YcTxF3mr@kEfUZnD^nkXSanS zB_@_`c8v_WurO?FnN&VQ^5G5qYUE91RvIc2(K+Jy8kVU{n6&p}Sz8b3jkxX9&eFk` zP>_3jC*8{G(mjN?Duxa0I)s-~w1(wHUJNU5e7&KiF=}2?WfQfwDMNs#4r5>HG{5iDH zb?#?(N8PYRZrX+N2pu<#!*a%qmL)ojH#~0g4RH^lr(&k+>g(cPyYyXosCr2{OP?IKIAGvSm)hizA>+c9`T1S{n*mYr(q|qI zOy-;5jv_uRB0KhumyC|nh!*4F;=qImk-He1Ct==dVZX!<;QA=AP$VRZQX37uxZy%V ziliTPu`I=;jd*5_m!0WTr0*81B@Ymi7PDhm0Vmyhk&W$Pd1K6~)mqY#30R$w^$X() zL&rA&EW?8B!2`XriJ!y%2@rtm_RmI2=d%F7to8#w{*Xr7?ODATt+WxTMC8$@Ymc5^ zUX!P}n|xOb!Y<~c(qyT9boo%StI&b)38H0T<+7_GVZ1MAN$f7_R>fX-vyGW(VgJ4d zVY^RP=axtwO!Ulz7cU-)@Na4nE1fx-2uq9M$FnTN+{7VBPA)#E$5~Bs{{*|;<;hVk zWyzpU>c`~y!eLQuU1Z<=4kfQ~;}wfwA$xMAODd{V;PR@iP_MPrmO*1x9hH(b8dL%e z5;bb$9?Cq?Cz%6C6^EI7x%e3L4NGeAoP@;jO6Yw;}9Wj15XkmZ$GZSHf;E47>rH7<>drV%2N@Bl`l zvXWpnyt-{uSBmgZ;V$=I;R8 zKUkK(5yW%4-sb_Ave2v`(!A!CU-RVrG$DaSbs?&22Mk5|{DT!6l8Ab5-E%+PLNZRu z@gtOANoa^S=x`sp+Vnld|Bb!`P4xSl;=bC246>lT9QcOj8Mo0PZ8cJ-R@IZFGlLU%U%8&){f#%Po#~(b&%P&n46l~%|fWg)h`dDkFIsxPdqg~CWt+M#+d zRd_)`Ytx*~&StWo?}K>uDy3rWm^}a5Gi~3!r}U46l78un+^n{7Lf!@6&vfgPj=;v4 za!y+qHH<6Lw#gbP6ojB?4G%Ruk667}k&m6*@klE}L4938>u4<;rjlFYqf@aqkHj z>Rlfb=(YkFM6p>;uxn)2Ay^%P8t>RP>#Uh}l`dU|WwN{Tc>4tl>2zAY!n2LbW;oZq zcUWdqU${SQuWQcBO&smVwit^Gy`Lqd?`t0l3=J0-hD`*xxE4F?Mirj4SjT#i?_Kj> z=ZFZSWSJdH>qkO_j}Djzv;d(pS)^fOv4mbvCsiAN7G-CWK1PX-ISsEw5*KZ;nF<{z zrj{+qZuXeV)johrh38zNI?FG1P-M5*ycxN;URkbb7D{>ioWex?mEvVOF&r^r?`{{( zIRc!|8c1FGh3N(wXYry+iQuf4lE9iQ)p1vj>S)$2g4~pODC2uIiY-3$`Jrjwu z@5ObteI)0<9gq?f5*9%fbrM(2?k8~9FYd-wkI?E-OP9O3>HAyTd#yQ~k+{sqC0qTp zUS9a8KmbE#+e8lY@pW7u084PmcaO)o@XII2M{2h%_n2wSt}7x{VowOLq59g zzUFY^G8Yu}V+E6f9#FNw6>9F|!}x4OXYJ1hH)xX9qwEvY`=wW)hiTqHeFYXDGGZJy z=gg+VA$6xnmn9*)1PI$yDna!eTMak zp5Fh~R?8wVjX3S+;_s6CESW8$TAf+NHAeL9(k;^~_>-)kqTjm@W>{Fi*fx8_oXy5Z z8-+Zh-cdEwF^<~OO}#Nh@@)Q0FiKgv-CjGU>eS*^Z5eP8)H(f?P&&JL`Bi14F+P*9 zo8qM&A+bv?ncS`3Q}$WKJk8eslFTjOv&=X8<1{>va7Cm8Lk*z?O$$Zx`(xnlmMK{? znTzOqthPdIIjllk`9{Qge&md{*>?U0z@MIth$pIt^))tNpbAbM^4(&Y?R>X+e z`hHrmR5r4SPP?a$jnm|~0fao%f`|h-;`4%bn>Gjecr3IT*OctNdtT2 zQ@IL~_<>>>7{n`ZBOFtvEQe>1BF{i1&%h$jz&ozKQmouAQ4{8!`4YgRfC-(E3%#)g ze2zK%J7!P>=)}G5W1)iEuSUuAD+vy+pa-0R8_pmy&Y&7teUVW5g5PE|Bb)N*XDWK=#&UL zLuBzNnhh#O>>;uSc`2z?aSpGYR;5^b1(3T&T$2Fb30KenUfEaB64kh$BMQ@`BUDuV!bW+;99e&qJ2 zs}x{wZ`PyW_FUJc;P;lTLasNxNixF$v1d(A0FN5d9{}je?1-_nLF1-H*u?1e0g*{U z2|k|IW#EE#GOwsX+PF5=;p%8N*U6hj?ktvOC)z6HLUnF$z%BucoI8Q8j2@HC$O>!w zwx@cr;}&d3x1~@eKM!tV}YNDEBnwLP%C(7^{L7 zA&+yDqI+nXF>i&C2bonsLC{}bt@iBqYG|4ys^&1~1z`x~ z93qm*hc!rmJyHw+B*fk*mt1a5le+;NRK$T^8ze~h(>DNYl<$Yvp{pYUC0*{G{v{*ISeSvCDAV>C?ncX<~TU}hDcRHS#}dQ z=uFiTj^6-IvJKp2atg462l@49HirjhixXCou}XUtL{a35QV-=}m(q$s z52az3(28c23Qnt-ikg$Mck7ypi4$yb$v^1Cu1XyYhp8I)rGx6_>8Pw!EXHcj;bt+A z)g`%*)iMxl_ipVtkx8O{W(xUZN0^7l+IO#3>s{j|l zOg@qwMa?b^jkwg=j1;pk#x?}^G#q^Uo%z%i?Wzg9r;>q++<(E!@IPkK0KEdb+V7gZ zn0>$)EVi{=sA+?6-5<_=IU>}IdPXCq!fE?#;;e3uy?O&%XHYc ziA^R^nYxDp_9H>cqYjJ*poaz}jKY48$4QBfPk5G~*j=GuJg5Ko;?&MaHomDawdQh$y6L#o{8@PNM~3e+ZOi*nN& zs4I2{>>E7EO_>>%Q0Pd@E~guLa~(}5QFEYo`T5vUV4}+pajmuLLx$5WXE;t#xO9QL z^o}>qy^TbU)We4KUq?n(#?(D#r_+1dj-}5}lST4*TMxR&zQ&JkCV*_u|3vMw{*8nng2IqoRJ-$hMArnpMi~y1D}DBgXO;);|elz@`?)of_nvR zt&H&hQy7P&{~vvEc6z4&@Wol#{+loUPn1^y|38^t_J8~0f4kcpf4Sd(S>r6M|26h6 z(}ZIJ(c{a-o%2*|(Y{nO|E*ZjX7a;AS-;D4Lpe>>m*G{0H?%NzfvDbB+B zPuH7;jsAbl`B$BP*8W%he_7=JHpc&szxw<~?qA>Jf4SlR5r3`uS1{23YcdlD^FQOS z2L74A!t$SmA^!=K|Et-*o8e%h|2MY&H=O==-rqp`KMVY=rT;Ch|8@SSuKq76{qF_- zLony~AH-xv`v0GTdGfTyCO>lUiw`8trf^-=yqN+$P%%lIu&>z$SY5F_J#&M6mheu` zE=OVsb0iXb`-5Yz=gruKY-_IV>0zuHP>@!YVkIyruAlO)Kx?9_E?COKG{02<{CLx<8lkb z80`9hPn`6cB^~dW&lu{;ymrfm%bC&3`oQ}RgQj(+*L@OA!D<7ECid|ef#z0a;ji0# zL=ttgfN%pkDCshxmboB_qwYCiBpA=X20^uv@e}F>;QBy-Nbx|l==DsYwCM36^!=ew zW^!oIZKxonFVH^HRF#Ri`w9o^9#9>7T)3{!B*njZAh$RV9T}T+XX;{9c?zuVe z+!oGK7jU@&w{6EyzUy(Ckh1TukK^)t?~r8;i5bF6>VT`Ou#j=;jdeX}|F|MP53a?m zH%BkDX8@w4!o2=#H_|^6RH`GDR8tKlbcn_ctT(hb5N{zflz*RwR@s=)ILzcGi4Vyd z;i=wkbVCazeL=(M40|uedh2E+(5yKa%a^-=Yns&ipWX_^< zJQ5HG8jCqss(4sO(=6m2HyPBrzHSF9YpEFvkTDt6)3u=w2K17}p$jy!3?N+{3K)io zr%7y(1Bea1PSG9|u%lhzO0uqmv%5khfMxmQT<2ulpxz{E)z&`AB+AvKel=1*xh#v+ zf4zR~g1lHrm72ime?uu5Z|Jo3#6c|{5E&{wetuF3~ohi~g}vEg?5 zxi*+@%?q^^SCFEoIJq1c3>==}V5{P5*3+ZuT&a7lWjk zx|-{q`Yd1YPh0>sRRT|aDBVx7$Y{l-> zfp|q|obmH~W5)OOQ^vK-mZcttK1siBEFA^)In}< zf?o4ib3*4}`G90sg39^<+M(wE5vIus&S`++ruV|W1l0An4Sj+2jehTd*}nU}#X}g- zoL7djwrZn1IW5_J7#vF^C1XoiOyNnb8h*6KIer%;Ee1!yC*ssnrzxGM;E zE)7Yb6}v%?wDs%y*NeZ;E#~8(^eurPPnVM$2WBG2**H~yb{X4Ezz?8rAn7Zkm-iZz zmzx`Ucc!S}Vv*Jlf*bfH2w%MCFCEcMb9(U7fpqp*RoIJAs*u_Ik7#ff1o?ig$LM4| zrt|TyJzzI1>)iZS5q*{{Sk=L5J2EdE%K;i-VHxxu+~x!kx79*xLW`f|vf|c2Pxz2n ze;_kYluuBC+7RxQFzewEJ0x1f#PObe%TPGjUgl3pW#?r{7bwj^CyHsPmsa9xBy`NihJY(*WPxJUcVsu19+Ea zv8@6e_m*!$?ucICK=f)@zOWjCn1>9<(Cc5f30N98QpmoVL>xZqQxM61(7MC>5iH2OVCr6kLE zLi-S!cmg$^xD$BD!4(U7Uy24f*SSc zv|wBNEcc>sMa?|HuZ6$Zqgo1Y-CtR~(7sWvOZPFFzL1C*ARP_3N%aULg0c}KA#SRb1$=3RLN>1#!S@5AFA{qo6OJv7ml3EehnPLqzB&s#NT zvB*$}2aXYlvpU{H1%3|(`3mZDbt*dI+>MlZ)NwKp@CC@W`1t1e@&}o)_P^PsDBw!{ z9L+Ykld*r483Vq@&y@hxc;o+}(|GLz$YOFwrTobY&c!*yQ<~V8cylSP5;czbtqb17 znc4#Uz8}DE>8rWBkX;R>F?Sdf0ZuPX84eCake`gV1()I3O6^<_=p|~&H`&_s-1&-n zjEQS=rM<*weqXhM$~HPJL-L{jAo#uD)5rFNg;ZQSxeJx2SvnZ_tsbI0~JU{G1y|vQmW{MSXk`iO! z?5}mP9c-bk2y|Az*0SFCzTdJwEJAKg_iVthOPQ-)$30hjlKEQ9l}g8-7D&;UV+it4oMw>}Ysh}eGJN>6CCB}9VW@H3bJ#07T0>FT z#{VYmMP^~*tCxR|h}+yOvO`k?$c46&w>h_K73R@irMumwN2VCsvn(5e!CUvB=?5Bt z$Nlid)LqO}LH|G#7kO_NqX68YLkZ_6)?f)xMmFsMIiP6@*SBvClsD{&Y>w{r&F#cN znK;;h`e>~bPBI_P9x8EXln2w?A&uMGH`6yWBg_S4?O$xx7hdNegob*Pl`XKH&S{CU zA)7h;6xq04I6T~Fx|)AVd~^yw;pj3WBCDq3G2n0vaRvzDq{z4)jE_h#+5O}qkh4|*O5yaEXfGvRE=K1#W=Oa@%5=^d-aI)W)ajXvpy_K1w$ z^kG|y01op$n42lc<=9vq$uuGlPV^Zj>m%m!{dx@Gd;YENleP@^8`DRaR(K@}jX6>W zjozBNXwIRPN z3ciA}vJpkBrQEGCVnL9XaBtXAY_GqDltGb{HMx4|Rw<-;E}viBuu;->)>J`ydfW); zj`ZgL0S!R%zm&E~D?XkF)&EmAc4>P!2NXY6$UM4l1i&}dd5W3DzC@o)VK^zqt@fqh?-+Y zyUlDeJO}>@jPNf{n>deL^uoV98h#bl}wdQ_M$w zoBBRnw{iU`%c;4i?7v;Nc|EGF`z`zzoFzR5=Zu2~q^a^}ob*Unu>=n&P=PtaUHGHq zyU50_LU!8$G2yBVyTg@L?yAZeW0trsOE1Z6A~#lUuh6;b>s!nuSy@STlE8`+)rJAM z>1my_dH{wF8+Ak#@f-{R0d5lYk&sTbxjAct)w7~(0DdQ$4MtaGRVYk3^}2eJhzL}* zd|F+*LM;L}mmHhO#hC9xjktwM!bBtmV z%yC3QJr=ve?l1`vnFVrHS({w7@o5+_`Jl~8sg%veSD`y1CXlPHs+0@30bN9QZtzxI za^!XKvezGNow}%}%IA3O^3R^M`Z{vm-D2wvGiq00&dT2Q#K!h{>!wzA!8MzkHsDzE zRSk=_uYG~ux|MW$%TC{TJ0WS-9J#lyX6Bf*!$BT7g1gN%P%Zs7)Vy;+XJTC855#A> zH8ZD7sYu9p6JX2m=c+W~wIK44>X7aCBhjxl>Wqe@POsM)b=q)3Z>VoG+Ra)sMRjUB zgPsBScTv+E4DvcHhz84*YC4$H81&luplbmB?T|mwSci_HHXN*EyV@H4u5n$+#5lxl zSX$)DK_t1l2hR^OX9p3U4TI;;G~|cQoJWAxZqEDy?Q5aDlRveYOg&Y|%XI{?!|q2` zaJC{>oy$TV8XzA;5X$Icd=SBooE&pirN9RbrG9Ya7;^H z*;`pV>HIgn*qdGB>Z>Cz7p?l+!Jhk}?f@peI;Cm-bK~>UC(!cf%$rU>zxXa`(@A&G z*+})i+0aOKF|;{oWoo=N-)$lRZ>I>_&4&+5kKcOpJ}7?oci6CF+C1s*ZB1=(JIpTq z!F|%5H{XGb-*|sRh*o8!eRno>DKtN2_>bf;8Ur2jYUhGm#YrYp9BotD$0lN|*{DmI z;<_ePbv9I4Ri$cDC3w)(IKfpp!#_bgWo$C0L-(Ltw1KKBp%Pbj1S+cn?RK$^YiH-# z$IN#1%u~R>p{O{z3o`iZFW4fwg--`FG9814p+RP_VGy0oAc-iSN~>rFVJ_1tLR5ud zb70juM9zqeWekywj9e@xeb6x$Dl}ci+0Z>kG(HsK0cE%xsEp1jJ!`IHzd!lTVxwNP2p)fLUITGf>H zWPGX)uCg^2>78FYf6m+ux9@rRi3jnU%VsQ{u;9|k4R=jAFNv)i9zI!LKX3EeN3p~1 zdEP*y|Mr(|T65!L**!O2cl|)F#-=9|37T=Y&0li){7l*WfVI}?yv&=n=;}k4OikvW zxciph%mffzhO?lc=%YH(L!C4*4op<7rdD$X1EwYYSO@Lbx{P-q;-0`Dl{17?%&5je z$`a|A!SXV5QI(7+ncsUMQ68$qNq2@^noUxMpwt2HbCtRL)k?%8q0wMNRQVoWL|`y8ybL;EwM%Vt;F)IFovrlG?3+k|M1QJMsL z0H%n-jX0}!MsVC(mudO5&Kl5sY6T6Aok=m$ zgg0f|8r#@5eH&M2wK_~m{)8jfXsSO!wRdc|)tShAn(sb;yl`A*0W^rm(J0D)vhBbe z2My=*%*W@8m-6h#sDf;VZ2+1Pg%{;M;spodmr<@jERh>qltZYeNX#qNQc%bsnN=#H zdozkC6RNf^-ZNq1PcDsnV%M*(O8EG24K^j@>frsp*qnP8m?l0jtI`#}eY~MI72<>z zEk6D3bcn}i+4*cH?y3(8_cgLp9|=ZcY2NX~`n=aO$({5!SON{2jNjZE<_`#zq3UMrb8*m(&Pf-X*{1x6;S(EO-}K5Df`$ z5D>>`9K%(545yiUDXk5?Z?_7n5|-n7m(_Nh+fbsQ!sfxX&XG3`)@HLKRD@pKLm>K* z#g4#J!4cTu**m9M7Id05&GELnriMk6ekMe#uZbIIDpwgDzi<|6%OrR!){YsF^bLp_ zP>(~F1TKOcfCmvbDepbadVIpsrBCey4ulNkOKLy`csXRPQ1I6l#gVGzR! zh!g~-Ew%1B7zZ4D?5T&)D_n8|owEAOL&R9yyVHp+%n5lYkYap$ku+urx%9g}#hx|~ z58_Xe3y}Qsfjh|h5l z>ZyP~b8@JtsgZgpFKgZ?)&Q?gaE7e{9rg%Jm=N?1O%(t(tO`|{;oq-CFlv6O_dR(q;ZvO2W8DNi%=McG=+)DRcEm+S8!wZ?{DCO zV*lsYE*^W8^!pRn?zm*ra2Phh@_*a`4bsN zNSe|)(YRvx04zJA)9GCf=L>KH!hav^0VU4}IbWq=&Nm>E?EZG}Jp4A1K(Y;W%x*Iw zm1*Ou5P6yu6-rfwv)H9@%Id<&jpLkAc4`Q&(vh=C^||rgal+$MRnNhHTvp*_JkOW- z5`UXq1l(Xi93M8r%fS_JnFU{j-D^B+JZmLLqsnSChOI<`wjw_gI$atq)M{`Xu(;D@ zayhjcNUE%=6$a8~eV7#i=hopnOfR^e$7tkQA?f>+*ONJUnmId!MwhKe4jy7>*#>Zw zl!siBg*Ea8*b~awdkBUOQ+hPYYK=}y8u2Qq)}f_8v>BlXm?pKL*ZF@+JdYGtfgry`URbOGRsQtN{w4ZC*adOp!R8EntM9X(e}OIP`$r*3=T(bmY61$8T>_oXwN7INXA zt$lITipe)ajIFzO)5^7zlXI#2pLy(x-pT3OSZ>+gm!wZS<7`>ck9HvXc^%O{2J~Q? z=-+@tQm-P^7_J8pUTN0rai|A6oX`M>r10}_9iV^?-giWUlNz070Qy8VcvxLV{GPyw z0a*QPKqad7sBqQumHZ19_=`M>(r?!qzR_QE*)#`BxENl(D(+mtbG9R3==mb@1Eg71it zo7}L9w%Q=TVh++8wA!>fwb8*cM&p%cx0`jN5<$k21F%B$h1Czc-5Bd)9~O~TVhHSP zSWm79KC{QxZ^LXd^`}7$QGYsBYQ8eAdGV5qNY%U%GX3H4 zTc&l4lTQ5Y()^-C>e=hwz8m6e8*nwPCE=%bpW&#QJm_)7r?fw{@Du4ni+_?YRiuqJ zgzZb@21FxaaJ$G~VnpbwHI6XjwoY8-hVC{uCTch}8Qg>E!#jWjI*?L09AW%BNLedH z1jG}CEytY*Jq0|r{uiv%jND;o&!DNu4~o1H0wEg<2$#Ux!c~yN{Z)X6sN}S}t6+c# zR)G)*%J`Ht!*$nPC)(Zg^6rdvy319(l;;kOP@jKcd&-s za-_X;t8;8>(&XJAJ{xa)?1x$3E%&a!95T`=I1ZX&Z{a=8F|obl)0Kib@bSr-%buKD zea%m$H{RY+lqXT7Bjq@p4y+YDn>5?$pHlcTY8}0kx=~HgYFY=>w3;MvqzzJ{LsrfN zvR%~B03bm=40Ncb12Sb9fEqD|K`&F5q8F6-nIcXdGC#<~G~(bEtzg&#ZAfQxMM06n z?~^9n2=9@`_fBu*k?%})ao@d4ye=+b_H;EV{^CkBc00(0$o_DGEKG>|cTx{}@A2Kk z-IusG^+5Wb>^|S)iAPfVvj0fw$&@{XC5U>WPE}W4SJA9$ceF)X%iAmF;623U#4>Ud zaiy+Lf0g}8$5qaC;a$WnjpURjMa#s3>cm?2HOoK9CX zfJ2(HefHRA7^vsm*T8bY;e`=uM#+dHqnOItU0Ex(rG$1SQ%?0zdiasv?@668~zKt z89#vd!2zm74;H5>Q{16-$sTFkppBEH!R2(l%AFqxXfuP%1@l}sYC*{llL-L3*jT@@ zHCZ-ROeb4^+$d%;ZB02`-_VjwH#TI>_cvuy&5h|~o6?5;$hUbDwZQ`XV2)V!+NgJ9 zFM2orxQn8+p19qw=Pveh0^D)#@}>Xj=X5he%0MyS_jbU4^>)73;5Todak1y~QKRf( zG?h&_82O$DgdIlSN3;Bq?abl7Apg$;RA8}KO{!GoW*jF}0LUdI=u{-G!bsF18UwhB zC?|KSc7k%K1uTuZDEe!zZDz?|a)AbCcVTF#AS+2&BrCdP1E8Z*DU_FmZLkW7Jfi*F zSwd65w%-rW<>0ydr5j|P0DmLeaaNfRNgq*_8!1Q)K%Hp9%P|tLY8B?9)w{Uv(kuvb zHV-m`-Gv@Bh!C0D@~8ORb7$d}UAy2zyLKt^-HiIUQt9IoF{dI`fGjr?1g-)q5|o=E z#8jw<1VDYnNlXRH0qP`KPG~Wf2LHX2gGwiha-Be(q*31pxs$ZgNsHXYDrhDyIkyj= zh~Id>MCK&&ez>*B``eMenM_`WXf_2N6mtUYGGdk>?~C|?DG;GBOB-@1wNAUmEt;Jc zjz$VyA>_DwjDgLB9^)$Gu5@Mq8V+$AO2MDOVpvtSP6vw-DCZmO8%mrHG!)o(mkI}8H}pBH-czHrfymqlmjBE~Qmg(F{CtVpEz@ z8L=smZmxX$fk(X|JHs?`sVn*>ubNWMN5!X~PKgcabc2{8^-n%<{m*~>Vt9Ktdw17; z4J#g-8L{_7xr)~2%brv485sUtb&oPv)dgM>ud3x+)OQE=mhCOyTd_C$w(w>~?KIeP zVS6}NtEtMhwYPNa)ZCPNP^0z5F`5o04@Tg`2yBSJNL3IEvPKSa?ObF`vp6Pb0nNcc zm$oBWL&g)huiWP=*On)>?V)6-rlBS%+dAD1mB#Mznd2V}GM}zdK+E*~!kIa#!0I#= z1*hyX{mI!-|0mWd-yw_Cy^*LiR&;8)fTI|gj>y`m6uPdk zJ91e{39dSdUkUL6C1Pjiln|;4nUaIeHS6!Ft6bcFFuwSj^ph3YAavX` ze$5Xd^`rJhM(*KUkc}Ih6}|6B5Byg8#|K}%G63!K*Bsa^+$){^5j;E|UN^fkFP*%( z@aLC)4y~~ElaKG)^Y1sL{-$JQ{gMZ-dmOqus}}EHHs{W;)fI=@W8Zvt^bP4V=^y)k z``;h*^KmfVLd2v5(#2FXvBFsiJRJC|5QLD=P^MUD_ z>5g6aE@B6Llllhz4Tc+xH!!>Wy8;j54-$9j?=swFyo-6z|6m~0qHi%^6iusu!)}L| z(}_MV7bM*HqbkO2)VmE)4ToM}4A@pl+yH5HfL5uJW^|)kqluZ(H&rg&u2It* zX@D-fMnyOSkOo-N;T(X|MV(sY)HEJ28gQC#R3oRx08b##r~`Ee$J8L08Dd?9g7eGb z3|T(U%Kkp`5Nb;w4GLS1x4%r}n=it}U!if_Xz$c_ zX^NyOy2_V-M#5i`kR-#lR2pd_T{;vB)3E`V70s?$*fcS)HSlr(4^)<^V*X2bcojYBHHFir;-rtcXdcUf6eOnt@g&DPoB$?-ppbOLrbEDE(_!41 znhqhSn+`6r^kjZhj66OLBPL{ykj3Cjq>8H`Mr}J}k8q{=H(7+4a+vhqzm8>GY<^|o zmCc=r;&?V!};|c0b-Y_SaJjNW*2hoo4 znRCDp(BF;JYxk&U@PNs0yW#a|n|m70Vl6KlHW{ohJ|f&Pzo z-_$)f6gbvJyB9-s%&?&+GRFyquR%5n(n=3wThKgK8Jr zkzOnZD7R)564`B6NK2W_GBFW>lj-IHaRnTNsc81{9Nbsl{nsD<`S@efH?8H;=G84t zYq2PF{2b2Ra?PX}4}DR1{qn&4J7F&zvwMdxd+skAb+zm8+g6LTFn6Cc^8xA1{Jg)e z6u%)}N0>xG47??-SRCn#Y>VKAH?(e}25L4Ny!W$iqYJuHUYrB&Xf#A{ZaT_a?{~O? z6FO5?uhoFN{2{e79MRw*AxKyZv{5)1Oh=7r+GMp3iyX~-)`$^nq9NvXu9r@9 zAA9$;iM2iF4q$V`3VTVnIcTXgB{$9?S3(`ImW|AHax16~<`^S#DL7mz>ca znTU{1Wlk5Rmkf*?TdQZ!$U+OE!k{e1N?hxSruC*+I3<{(vhYgF!YeKdujKcI*MAdT z)fa%2=ca8YD={j@czorTres*3VloZQ8(%pgy$|Cbg%_ndL(OY2&3IQ_+Wk}My>~u8 z@;dC~kT44dq{;VmZk67b9+$q5UNIP*d=R$x)lq^#S_6xum7xs>e-2xr@8lm8x*N&y zN+8KLyUpDe!StM49hH%_MT7h}w?7(`NiQ)%dJN~bMtPQV`=Y$Sx#MWhvp5k>xEMV_ z&_+Wt6b}1rRyBfhl#tWd|?u!L~h)MJOZY6O$)XXiMHA`&CP2HuWuYvxT^&ni?nt{6DDb$RyE;+u*IzoYf+tJVowf*CK2zzzSxGQ5l$2P!?yFlmbSIH*jt<+Up6N zu*f~Om}#pWbyidx5Jw`3PvA!}9N02LO5Q>(^JPW}yUCQ)UF_a}bWZ66U_v*Q~EqhZVsAfo=FJ>?|s?V3UZfh@DR46q-4=Ar(|}ZheZ! z37S=#^$W1o*k{;ZFam3H81xvKcBs`f(nrr@1n>YBQ$OW#EAeJ!L}ZQBcf7}0(%2)K ziLu%ddD`juvYBEd=Ys@f@(NWe69;nK^WvTqBP+IgzO^YF^^aSJjbGosaN(T`RvgGY z(KZv`y;em1q1u-hn0FQ~npIttgNWnF{ir|X&?de>xhb#Jy_j9auMlnt-yC_;^Q7>R z`F9qb-961X(>ud=lW(W+p!-4JmvOY)8%Ng&gTvvCaS2CzfGgt`a5yJR+HAs*j433a zt&n5V`8*Pxea98!yO`>ik!MMj>^8J3oys^VnsMX_Iduz_5=SKfmJj1Lzo{(^_m7coU0bgSkLay8 z75ZBv)-QHl<+{mrk87Xnh)Z>WUDy%X;d0n<18%nxdfIu=nr0ElurzQ6oRgfmQwGeV zu#60tOpYbhBrEi8S(79EEfb_79KNrtM_9)PvjIgtE7}=rUeoP}II?ZfbZk!LqH|AQ zP{x94?2_}*V1&f6IY*_3Ms=|2E7X@T(lX1w_sMRsE&*$~IH8`O3lv}4oT>`uVx4P{fZzxRKXwk!YZBbp+WRJ3;sGp98 zqd0ni*F&;?HydM2vTTg_{K;a!mB|aG-=$0^=FA!946C!rB7eNCHgY>mogZY5lPdn8dhufVF4XZUpb=suE zVU8+NRL8sgQ8r1aqk*V`4j)A5oH>&(oIwDcQRcYMj2L*b;dfrf1+iHvL$4mO5Y|jD0igp?uor5Yfo%?>O!*#F+ z5ljy-XDeiDgb!jStQZ6`F_emv?GOmV($OOjO6Q**82;*=7oio}Ui`&-FG>H9e*e1~)&7SqI~x1|?g$7@HPIUx;5hfegr`Z}z^UIiohl6Mu0jtUMXfm8Oal)1kl#TO{5v!Xupxx89Ez;t0KXuXE%5OblO-lLfg0E+|?$y5{0ixEZX_T`3c(gYw`6fTGYZ@`+oHT zF6~;ES1Wv0FWp5JV~2*@=MFGg_J4pP+U7LDpOrN zR&wJ9Pb)c@NCs_@lkGvn*};ZE=3^xjSphR2i~ze32}eQ^TvejS(0`%F$Ot{!9TzAP zB;+~hQKBq)wEqW9lEvKRUFs4C%pQyz00-|2+~BuHBAw!xknFO7!ncBtVZcXlA>UP&vY+pt2)^C!7?b z`r_=Fk|J|)9O?pXS15UcRMFTNu`;lA^M88hgzIKTq^*5*jjOQSQ+>aG{R#L;WJ104 zjO1L4OpMpD6GHRRryF@!TA~U|wQXDR^_MrRh1B%Z4?N5k{#}+-g|R+TT3NI$Ffe`i z3w#jKdNs(wj3}7+jhao`o!Xtc{|S8&rn>0an(1LotD(X-Yi`zW4}YY2FD&QEQ=-1= z8gX{{vU03^Z!+zc&-mGE#2NM_cFew4utdXp4MF(RISWpt(`vEOT{QrgiALbA)-#%L zFzTjqE;ozL9r3t*?pc%^Gc@MhOj+VDiQxpEsI8tA9Dtjj1xy)(F|{?BlkfFx89eP| z-s?g5c5fMU4msJuAvt?lj<%X=8B}3QQ7}0Zr~XWj>^qJY)~r>AqcV^p%^^c@I#9>Z zP>?CK3z$(A5z%xI3LErvTr(ZUqH2vQNlXWv$v?fwJBWLVLTSX$v?$5V%J3;XQk*9# z`JQsBxf03u!_lNqITwh>;fwMLWxb^uPe(DF?Vm9IJW*cVh?PK@91U-553>&c`r6^kbN59P(d+ zH0Rc(c*`4hH|DUIfC|#INw2b`A;9!H+J*SyX{-wlKw30Vbj<8G%{T2f9W)Upbn0o) z&3PEH~A~bF6rTi7oPh{cFDq;rfmecbe~MS9%KXjRIw!maECZ|Iy=qX5S!(E49wwLj~s>9eXsjJ@O|L_ z&hnjAt+uGGE{n?=wM4BdTCJv#k*x-uKuuXvPIJ3it+kq<&+Xsr76*oJ63f-BE8ujw zl4fM2yID4dj+C2qQG{RXw5Z)qt(rm>whR{QQX7jR^w1Aw!wMcf^g}gN55NhcJ}}9@ z)sKmO2oTN5v=Yb+Au?cHg`Pr>^UI#1x1PT!jZRKxHEdx{kn(h@Tu87^=39Vdud)yX z85)rJwp5a*P)4Uw5bn0(>I8=xes3`Xg-mkUD8-t(J>`5E6d`Z1W__*jr;YwhS{mb* zD6xAS0vxKDa@U;Yg&a;~+w5a(I!xfzY^3kpR$|F*Z6uGdRu6wgtwUJXz@y@QWopO( z23lPK5P(rl4$09PO-;q@s>@u<-0NK%-1mTc;BMn?W*^uGAJHE)9$+2`KO!6khvD8gryny4vDr(9Z%O6`t^*{ZTQ8f|&KvZkUY970wCR#Bc#sp}jL zHaq~^4hH}W+2>&g*b3C}6;TraHCt=28dq)I0Q}=2ZuMMcVj7KfcY$>lQ%# zBH>h*mS&YG2d8j8f2&vj@wi=i^J>ixdd0aJsSzdgjjj4P*Y*T39r>_vtd>?%nE{qV95%$yj&Ib zR(P}7kk%W(X}5YzGKK?peMQ(x5OHO%uD1w6%#7{~WwS{$hS{>^Lda%OVRU@7RPXm` z)L4B!5vSv9L%nNk!vM68kU=pUE`Nd5<>bm@(z-HrT1*plC}|^3z##Wq{vf|QpFsSb zK%-bZD*G+RF`xc_qyzZbXB!jb!IoNeliYoYl0UF#QO%V)b| zR*m`nKV{9@q`Mt{IVIJ;O!^JHxnbJm!rqy!bAR>sDjQenA18&v>b4)jov`!$WrQH$ zYJJiZv9i)h$kvDL=9E#5#usx&u9I#poV=u57mi|VIB+-2O7ArL%biKHmXu?kDKwrx zF3s=k7dzv0E#1nta>T9nTf-PlApxB%o}yad{O=d_;2~QRgmnBXNLNQoP&kI+P;GG z%kGTg#n%>7L=?x~p*Z&SnZDyno`VwdATC5cK+hUz6aKq|y*L1(3ZCyi4-Zz|E>%ct){mjW zVY>MyxCq|-_LYR7_zQ;8yqFv_zC#?l9^7QO*MK|aq<<}dFlN>uy%saeECVcBjRvYI zn6#=flQwCgwGe2mRscoD&1uZDOh{#k8oQ`+bM!1~78tKi!uF@+_Sk1XmWZD5386qSxl8|S#p$4)f?jpz+;Bmmg z#ZUmH)hK66t5HlBFGsN;z1xXpwikX$F8%I)^ib5d7U@Meq{Jwi#o%b)^m5;zo`Gft zbDe)MZ6x0h`=u9=^y0}& z%WErTVi*Sa@bF^PFOO(|^~h==0YUEK4$JFl(1T0seN2d+(S2aCd}r72-|(C9!^k%k zK_im8OTHG)2^bY=Q(-#(LCu4;k82*+KBj*`{g(Re%-dxjt3NI~RenZ2SZ16_C(Gjw zkKgJCS)&meJ1f%FwdF~p2B@sGH5;bVW2?3F*m`Xv)mR&0w3)`ZSiUiqi64w(@c|5o znr3Ij-4bjfTEqbiKGobLhY5xXa>9E4O9XNue_D>m4HlOqC@D!wTIb1;1+VLKAfRzJ7|90O2TT#GZ`AF9it95H z%qpf?tm%QHsY=yVpPx1~xCU;);zD}%noAO%akVRY z^OsFu5^ZMP8C@-1W7m%fwLNf6>y6T?I(x+6u8g>ZS@lhU>Ww|vU@<;M4G-cklIwsI zc?~}hDAVVat8v;cqvlt?v);>dFY~|bycfBk9{o_?11nQuAXXUQ#*ZiP;2l1~U zE2>n5-DQccf4%me^y^tkf~zY(*PHtFJ@*u5HcMC$gABr;3qJ^gfCrC@owqn1rjMIG zFn!?sqv=Z@Ri#C~l6JXzxn`Mdnf+?@M$Of>tL@q-?Ql{W#^J;qP79^cllm+g?7NV$ z-{{fuSQGDeB8U!!nHIlHt>I8{j@Mi(6X{@2L%wiwWO6}q*h>j1ZZDF;0Ghpw01O=3 zX-qzg0E_{>pkyI33c)FHz|obHLZp;=cp)RDm_f&5S0722@l`sVKEPG4edxelODCu6 zJhcrQcmL?GQ1wOuJoH6s130E@|a+ve)h3N~f!e7Zgwc4u{F z|CH36AQM($5W@nkTDw+t%R^L6taHKs-xQv`a=|T4*X+9IZv3f$Eeyxjr!kzf=~x|U zz?Ri+9CQAcjg=7Nu(C1gP4#RFQU`tqbLStM8-oX~U-8*b_nt?xH#+Ew=N9vqt@NdI`P2bewqI{2uY8`j1AsUS7`P z#MK&1t-)1}S_X%BJFfD07J4nzovNRxFjb>o>vbZ7+{^q@12r=B`tgq#8G663l%Zg* z9U3gr?_f#37DhN+o@*`=aoperqzxI=RvrbWtDshaoM2aWJ1qjm%dlnrg`c5Ww+P!u|NFug7nGQ2Z7J{%oy>9PMRR0)RkkuWlAtd0uN)eqR9+~r15-@K=g33)ie^PwG=u^Nj! zxZtW^x8jrI{<_MwFRL&02aFnT=7&FiVOwXYwPlRXZ1P9Lvlm%?W$Wkvxu?A2>Q}HX zIY%GS>la8jmw{(Qd#fG(+X2-M)`77!lkt~fe1pe70MChIf-?P<1ww3t#~0ue4W3MZ z9}&ATK9Pv=tO-{|$_U101d*{esw{&%(-5DLlVrd%6-*?NA#izgluRT=fsba%jEdL` zN?e)C>jB05jIdyL3ic54CY@nN#0N+6Gi0fnyJ)5FSl9p^MP=^z-z$MjC(Ki_-Wsh< zpS;es0Bb0pwd5yb0_EeSi8Cu2=S;Y>a=O&+(T=$SKUPzPV}T3rb22qFW`R+t968nMGB@e2WBFd71eF zTUX&q=OQJQB6obG+mGdwiTe6PGQV|2joMhIwN)ezwt8qR*DJAP_1Jpl>N%69>MHn2 zqbo)j{DxYuj-m?{YwPG@pN4lzB792eQySbP3Q5`%uuXD%Ja=+By*6XxxwI6OJHt_i zg;7JoDtDv|_31Dl%2;i3f>1{3&6hG8%FHJ(t{KU_xmbVt!f~Ssjk3UmjWM$i7$asM zG{p_bBo3q9NU|{+@{2o<6>X8~s*7}L1GJB3=pa`8!w3q$S|~Kw^$@ZdL&`bbzc7_2 zl9T>8?#grsfiX5A-}LW)UelSpEPMxcXG^1o@_RJA$)=*uFFMfsbiRVi%D)$Ycx9Me z18Tsp#lE)CtU#abCfg&nuS4I3C?X&P1g<)e<7QiDmt7WEUiN@Z!v%x2W^0hQS^1zC zoNDIEt+w(qTbZ@Iyo?WW$YK|KMHVsw9|Beds$;m|smVn&wsLeG_wr>}q{6!(vNdun zf=B9dGB0Ya<(Zm*_S7+?9At*7tCek*)2ESd!o1gWTrpKfb8wWL3ZyHB2G5VA;V5}H zY=UL-#VnlfrB+;^B!sgmTuix9g6Kx*D28)#r97NcZUM2NzAR<&nC4v8k)%{OwE1kQ zI=FZBj-QV?dh6|zrDopb(Ws@jvc67<^H3F2@vqwj4D&eMP9v#4|Ll-EpmXSOkB91d zs`{@38!6U1LxZQ5{2jINgj{7 zb}Ig>CRbdg;zD_y_1xr{S;|w&GgMXLkAVr`JJD0^stjPJz@r9iVr*g_W5zJu{t0+P zF4gRby#&u8<6ngGG*KRn;`ks@2Rsu3p-`PC8sKvco-qNwv(D2U;B^6V66(^O#^z3U zPVDSx7IW39klRWUy4DF6V@2y&N5xpb-(jRCbmzy!qMAvvAkiYOOW&4yH-&Yi24K6W zZxgF?na111cSWp2L}#9DBP@~545^?pF{8-fzM;Mz`PbM+3&nt;5;ByR>2jlE&q9;vrIOS2xjdMZ5Fo1T(zk98qTu1mTl1aVBMw7)rC*S*Fm|Vno2BaAM98=-XX1E593^#bVKu{*eY#`*R^8^As@_j1g zAuLj*F`Wu~ECfzv&BoYRN5n{FE4YBBlByKKnM%U#K_mBUwKOb9I%h9T`PE z%Hakj?K>~?uSpKpUl;(ghbSt?NYu$jodPm=*@!E4K{@uU`966!KzUUD59K&I8Zg{m ztFw$zTMV%W=27_E$_dk2YA&y9k*0Uni8IF32dl+asSAGWQCH1HRLmky=5-Z*jry(` zf%3@sSEW>k2t6K6{Sx@Zj5Se5RpH%^a?FE}#6jioACS$sUs*%#0(XkZ*VJFAv3r>Z z?0c9e?B8lgJFpTC$8^pAYwcOXqpGgm`<$6`&OFY%UzyjL_aifznapI8Or9snB!uva z5P2Fv5CIi2fI+MZ(iRY_;0qA>RJ=tkwlxWl8<1ObZHl%Rt?jK=xm5c=wAb?K*P{Kb z$#B;`Gl9_0AN_G>zP;Bzd+oFLIcu-|UTd8moxF~-Wy&blkl|Ei=6sn-4oijO4sBkm z!YZ;_aM()=HAC*=WU-+*vhqPS)`pOkHixiY0U;v`Aq}#Hutf%*PH6}s69e8=fgx!w z(Q5~mMUsvf%AzYe?^Tq)rfU54(^xk4#z^5yyrAx;gS+n7wExi{wHF%;WAD9QIE(G? z;HRq=eK=G&^VSPL!s!OWLkek*Jc!i5MWf<^YDKkoPuY{f!@)!0^WiVToH8g6cLnL^ z1GqhaeVne1cV^B85^c`(2Y#DJFHIU8YL$|fCv=Hurb5uGm2%4M;F|obgQb>7RhhI# zo)1aeBw05wk$yynb%c$I`rQ-TBn{HoD>0D%szInLhEvE2HV~m%IwB8YHUOS1Oob2= zby;pZ)D0H1aWwKS=`|$P$?psvlpR!f~y{FMN zr{G*LuOrj5`rfxOe)CqH(H^P6&(Df?f4X<@ES)#1Bdszllc~NIv-U9O^y0dk@V)Ks z%8!5l77-T0NCCti1Ug624srUZ8`t=-5XGd|i^A~LMusnyN7fAUm`8O!!A-{k0Ur#; zQIpH)+2X<;SIR}Xo^a{HRu%@UEp}{=8N-3%a^UF8z+mOcGriJqG%6iT&p3bPVqb5` z=*P9pihCzXJYJdgm)Ngl=A|U{LAtmavsdiBRe0pcx~5xZcA1&&GBc%_nVFfH*=1&C zW@bpc%*yRnelY@tln$&-hF1)*>mP@E|d!WiVTGm%8v?o@B!)pen&i3087lM zuKX@#E!(sQ1z)aC*T02=qm>m^XTthtLShibehPD2ydnm0V9ZK z>HG_aDLbM|2t+=$udl_U=2z_5+;XJ3k^@Ps{5(`5yYFvr{e$ z;PZkEYRXS~A2nm%*1Ua1cJm3y`M=_EG&He=1 z#K%o~A@um&=>(@u$I#mTbZ77Oeex>d=$D)R^!9nVc8<0nT`6{(lIfW23dK%Oc0Kw% zVssP}nm9uwOBrx3IOJ5w5TQeCd5~|2?+Yck-n0U}oaVv2$7=zX`NR&OuX6T~^^D#* zHAIK2M2KLH2y%FoypDR3YhbLHo#6BFH?G6p*e^(OkisT9M2qfHN~~UzpAS1-GG}B4 zEpFSaL&1X>1V#_zC!lWZ{rs=NFwr{7w-*_6ks2$g#^xnzWSKdR;MlekS4M3VaX7RBi4$6Xq6W zYSv1RXcK)W{Rpx#9aPP01?D+cl6jyO_v}7MPcy`hjvDCfOXXG*H*KEnp3k0(5Va8J zs_Rl4Qg2cx)JtMRV&l5!XOU;A_~#TeNz2suH~a9tz1a)>4bEhW?rMg=c1`*6CMAr^ za^so517Sl#nBjMTJId8|i}Gzm9yVik{Gk>1N1N|VS*m$2x*x5w$Jg>n8CsHS1uib! zl5V<*GRz6W*Huuh0yTvQ{fw!D#Fq}LG6h~Ql=cW(Ld%-iQ5bx?$*?7%G@a!+d%C{Xtt|_T;e) z=h*C)$q`BoxdBVgBofmbQ6F5{HQ7i;h$v}I1Xbas@98d!xl()Z=u}~Iza~~?&B~Qx zgIsB0n4IA)#W9prR3?}nzv}6WQfIjdfF>^0C@YCe81Zms!*TkcCj)jv(v6jQi18}rbI-v*QH|c^#P3g@BY(XE zH;oQAw)qZC0s-~yGm3>eLgjKQG6n(CLa0VkN!Fjf=VX-oE2Ps0Zo{;<6@Q%dvL!xg zg%^h59(ycY5jU|QGbDTJgdk%NlvnU$bQfy0Wm0!4A4zVzMvRrywVqR=vt%&Ce2w26 zTOHVkbteuF%Z{oRYRQ+0@rmWuso$%c3glV!r72GSlMTOZM7k7zHHvH@Xx zs#W3`7XrEs87fD(t_DYFQ;D&WrGP&vQ;L;pkDoT5x}V;C$K6)ko*WMxm!{I;427ZA zD$eF*fn$}8Z12^H#>tw)V^k@cQ7d?+KNqm9=kX#IAN!!xb(2&VAAfKLF=w)v5U&vI zBROY#rX^@5LGpvu4(lr?#XQ%TeHkb@sb3UW;&grX!eOd4$!zA%sgPPNs5VSC)9ljY zZ^|vMSz?KmVh*vYwvou?b8k^6C1?;A62*I*F%RD521JQw3c z3$CeDQG&Cei_T4>s^S>sYLo^lzgj|hzS%GonMN+dCMIbGk%wT~IH}Q9)xZ<1&2od! zU`WsMMN#9t0hU-;V9Sj6a28rMo!nZjp>Cg|o zR%5e3CoZZnGsb2QD?Di*ef8E9F}4$z%CE8>i1$-B^>QQtO{AlbK)&2VFFuOR?t1t} zsVX`pf*5zI>)6^yosr5%#J$+Z?#GBn`<={54#bh(Y?9l2tHVS2vd0LZcrSRGFVSAZ((=nnLn^Y&LegY5Iit zl$6{Ph^b*+na)1qb*cB_5ze;i?C2{}*Q!~zC?*qqN1XxYbv|g>8k2#+#kcm?7RS1M zSut^ZSA{q;AefeqgFl40f~0ZHEL3rZPw$_{Bk?XYW?CZ_U|>lpsh2Am)F@HkyNyMInUMgTwm)xHa-Tj7oMn=86B+kmS%JCMRd96 z@Odj_C56=*hYqHQH4gL3G=;&HP9^_}bZjNGU_kZ|pI`r}ky-=mejUtg%+7_uh%t+> z@4>Qqa*xANv)U%Zz|CP-Gcdt2t|3Ie#zlLn#*Zzrxu@+Ci&wrI7GfG@#$sU`NqOLO zZq^jbm^sY_ac3zG0zOm#&n&AhN=)(SmiksM#6ly|Bv%*%f>0`VywAXI(swx5M&QS+ zbaYIT_+pH7>OutZhHL#IV2kK zArM$rZ4z{*?fY9d!b^Uw8#Ccbnu|=msBOR=->^LF*_G;X-*vYd8Lz=c>ldg2)+460 zy6#Tk%yYf#3n#W*J~v-1*CdS?Jz@4NFA%7y<9XFPTqW!iF?4B@Zc5pfM09Dd!H|ul zg{ts$j+F>X<-GoQ#7-t#tf5%Re}24_&SLNK@F3lM9_Rqz^K~Ab6N0*GGx(ACAsiNo zf{q!#^z2+XA;esLs+J5C7eYacB?F5Xq;;Y7W;0q`Qb@2hK}CqM1hOx#ICYSo z-JGcoMTf_7s-O!QQQ$VNayR5Wtu-+fRCn#n(TJ5X=uzVcx06|>N{`r22a>}SpS%m* zjz_?tY+ybb9pSlamLhm&3A+m7IYEpIT@w+`hfN5ImY1?+32_36L$YvAaGCX53$s^K zB+Sg!jhaA&q)>w^*Q}JwyJ0%1<#F~;?7Y4h+5EJ0sZ2?4^bh;(pF)#^~)J4}AzUctVusG3gGzHYLQv!vkx8%L~gl1lYfPd3oEi*$;x}0p}ay z9OCR?`mwt=_!_QWqN;Hl=|sQh`MSUG*?!g8+MPr*cdTaB=h6Aq$LV9?EBTgOgZBYV z)WUbhNsC`YU~wO}X>0shC^?o{X_~Kbia#@wTnPDS^aZ;~$X7*IrLo6UTa?2~zf~{P zcDVyw5}2GbzGxD$Pmzs(41&LLRD*9(=-5$q!+F+8meEoWW>|NYtXD5Ke-Bc2w#@;2 zCwNlinC0L;R<>NRQFR$!MeMJuo5j5hORTxJ0ook9skRY}m9j>QHguY`s~ZC-;Eane zS-#vnsE-XFMkX{#F4kR!DR_)HXV$jI#QyvH7XXFRW<&?t}>T8P+_c9 z@^RvJ0?V^UscFhy$Tu_{gscf=Z%A7Jm8s`Q*Lpud*3N)3SV|~-#AZs~6o4H3Opimp z#s{B%%ACSk4sOP}QbTV7OkFXdUW7Q?QZfV2&)1zTm=AW7Qf#!?CWR68P3Lejf17O% zP8p7RV^SWrR$LnQk$u}!rb&EGC*E1K%sO?Ky=o3_YS2GUM3L z(ZEW020K!JSPsggpJD$RaF^}!cFa%E<_(%S$K@9EYTK$JQ%n&r2myV`PeV)h8t=0Q zYqs4Y^UigRg8k)~QEl4OMT#8%q9|m-(1jsMxY3bNOA=o!s!vt;)orCkk+gUVc4^~N zi!vu!kOx>Re}FZ3%cpE~9k^CR2V@6pXvA3pQ1|p*MW?%4VGHgKtQ`LXhw%dv{#JNT z@|8TIxV!JLzod?^Ka(=VZ@~W|>I2fli0hCR-=IK0Bzo6Eb)wcr+%$Y9h7fSlhZwXb z$}3VizlQGR@l>bu!x6wRKr#5z3;pvuOVR^d?~NGIn;i5w5gvG^2eFI}ItN4>)GTVM z2E=0n3SFRr9;X052gR(77`R#WM1} zNrvtuftSKQUI)aseIY*WR3NMRpSbToihYKMPQG9>cfD)2YaG#JIpW}M1003@tdCE z^l=+;1?DbTt5w&fce(wDY582_ATv+xyAssI+xm1y>01gFMaT1wV<#=yEq?8q823Gc zG9nPs4iLm|pCOvy#8+f-DNcF)Wdh_YHiE#RYGjb(l__)=JTWY`Mhv4xp=fxzfGRsm!-(V^+E$X1$;4VEhXr_bsv~Nck}tog zsdQn`0N~QsNspvFU{idh=z1q}&}EmbJYeDEKgSAe8-w$H9wb0rd8F;yqq7mbgMIc} z9Jsi?%;J5OzYHqJMQV}c!(iKZ_1^fZ4cJ=$vE+JF_tOgv1e`9DAZfz+HZNulC0t_bYpstC#l23%4tG_bY(=)h4}f2I~G*=fLRaotIc^ z!iDoi5(x0P^L@e%1V??m3K>|sfk*ohW+7TVI`|!^P_OMz-MsTRiPJ{I4@KqC7KFBf zijlqE3VMNA4pM>czmkKuIFh6LZBN27b0Mbz^DYG69ciQ_zH5gv9}qXYm74>n3wtw^ zaxIe&psTU0yx^zzgs%W07`%u@;D|ylpG?WV5t6FG76Xdilwuk&h|*01@Vd zxfndffo9i3`fFxAUg1NO7BO-i@;;e9a;g4j`!8bS!0QZy>B1r+P8qCjhnEmko$!Je+{1!Zm<9D~>O1LS&dxa9pF{bwp7&vMTg zd%bDK2#d#ua)~@wXezyScVsWFIy}#wega|ZR^9_VJ=Z0|AsBeq_dG%os8#R%&jd*7 zyI~j+QN^G62v+VD^k3Lac^yisyTiJP8^a{be2S}W&$j&SC=P9ltKF2;xT&nOT4kxD zI<;SpIcrXOezp9Xn*-(^X#bN+iQ2}V{T zI#y;*A|?PM6A=?LfcdX12{8#7B{9W+Ol+=XZ)<4x@4zGg%uN3RlVD^03rymVdCUI- zlVE23517OsFou6Z9sXGV31aw@neYb~;&+h5@BD;6K@z{`{~u@s*gr7|{|b;`{!cuH zKhuA*7Xa*x{|bbF{g3oNunT{d|0na|PXGnrA54ee0TTZTw)kxu_IDu0zd|N{KPJaN z>iuVZelO?GvVT9PKkCQM`e)r>|A1X^F#fUpdA`5z|9xTlJ;wgeWBiT;`H#B&1C;SQ zO5*o@e*!N!f4lmB)|Z9tf2{w^`vSR{r3?v;0Q^Uv}w2srB%jgOBSwKEXrULgwfLgZ$F72LONShh2+R<{hA4e(9;i z^TwBl@L2op!Ia?SYbHS^fZy)oZR+i2@4At1@o4p1l~N{*Yt{tOLQxoGJgjCqM7}Lapui`OZi~<=mq_Wz%@{z?G{-3zgbh zsBE9xkk#7qXsD4Pe#~zvG!tcDxSc6WbK03r%TRxF1K_vdY0AS;zt^5HaJBhiOc)sM zRRPqnnIB&?GORiUYM7+dgLp)=iEI801o0LRfP*|u5&J}s#b{meNr%zk-r%?J3O-!E zh>9h+Mv&)C3~hB^r)PW!TRH&W#1LWsOf}|{wT4I0@8MD0J{$}^RnlIZi8XK1-*P`R zATL^M8o*iWAgYw?V9`~3XioK0$3R=N+9TNqv(ZCkni|Hy)zMYYbaq{GI!Bcwk^Gj- zxg`DVb4Ifd=SP+(nqkcTnacg|U%}ujvjQd{8^r9#NHOqyQHaB!#)Ip45 zRWV0gCprEj8rz@wW6hGZHa0|cGI=gg-TX&Lb9$BBPhlgbWsF7NU#gCeSQ_g#Uq+d< zM0l|leV>vm_AG?qs<@ot=*DUhck^irj}c(aknhIor8cZ5>+knv^bJ_}>9j{9XV3pUD(|JY@cbOz}r|{68a8aQ=l%@kb}|S26|Q@45|+ zzmh4~0RIk{;)gn%gYr_w`&3(d;ww@!)900C9T;L`6S$jtCU8JPj0w`dVQxY=9Q&|= zakT9vSFg}^ynuild~&lwrhnKhE!_!;zK+ud8G_~LG^+`!kTUbP6-ER}VRkY);aoK9 z9_KpZX+!sR7H;k;mV>Vc{2zYr2W{dHD5QnpR-_TbY5*0sgp^W)Jx>>JSL>)9b11({ z_Wd5xM0}b|HFlnb>tgI1>%%qm+Rggy#%DM`|3KOJqw1Opt@pm@&>@is?0kwvBVtFD z*SUO5e*(?5=?1=cz&Geyuj$2wm<3f8xu^U!fh^q0MS$j8eE#5BKE8D&j@3Ti<^uFH zw1xWIYGx^$dRCNR9&sdh6q{JTA8kB#&UY%cU9B+z_35)&CMk-@9C1JS+wLJCt`ivN zi(ZUw{IFoa(&6LY9JN>U@C@$vA?(DXkzyqnID`f|v~E3IB0 zw+C#ircoo*#`R8JuUD0hn|523mY=ITqDdX-{K{j$JMvQ-a<2epBkJc5<;w#!U4tvy z1Ue(@Wyr;W?w^K7BGpuG{v0kbVM9f?pl^|S1&uD)iC45iDfN(UneLJmvjj)}>(n2# z`;k7-AEmQAT4C^K`Nr{nS(^n9hj7m*Ov{>F%F7z5Q?MG?+R^v$+{0hGQ}_ou9??gs zdFi@rq)xpV?k|8-2`RK=g0XP%22pR3Yub#p-BDDN!;rI68f6hsnrU;CLj&LUm|y zRk6p(3(=Vg;rf%9*->4!zMqGQN3AF|XEy;iPPtDtzv(yV1LscVPnkQ$YESgWctBL) zuG_xyZB0BBR=j4jO0`?z*o`qg$zaN)?Ygun=+XMg^I63qRDak6-sj!GojIQ{4kO#r44DUYF<3J~ZEzJj?oCKyH_8FXIJ*%D;B`=X}{Jo@j zah^n-6k$OujSTV}$Q*;LxoIN0XS)uaeLP{BA0=VZ)c1qk@%@B-`f<5&f^kz7Q)DZa zjPuu$?O@k!$eO*HPAEXX1M@FU{$Z^{YdcYu&kZW`USJJrVP)@Yr^HhG#!v2=^j5c| zZ8ED-ELXhi=pi0PTYZh_#Ty<@lgd=wLzpvR$q`w!Y;GZ^z_?wEHi#j*A{iHMx6=D9 zXZ30RW12oX1idXd;Fk2juN92-&jiQ%hTWabqsqBzf!Zv~x( zwj`h7CAa7#Q%@-iN$hJ$e>#ci-*n*NX!8JqpOSplmyx>)r_7ITbf4El+vXw=V*R@o zFTxw7#EG<4wQylno(pQ1!lrk++9cSYCrIQ($76%Q~Eps+I*YwP${Nv;$*|4kn7T}n`u7o^gr8_eoy z(SdTTITV4yWh;i#N(Tg})Ha43=v3}KdQc_#W-;PZk6-Of z`8spV_L%TSv}-UM##&_pe`DIVgjPHFsf{Dv@#`{zkqbQrkK6=LTdb0YF7@$#I0s4J z9^#!{B!>*w2DXkKz%c`|r}s%N(9SvG+_ z1n9l}RAN!hy@Iv^i!48l`Ge1-UpV+F#)W5+z8i7CQ(e%>2V|X`zVXEcOzC|l_Y6&a zng&7tB{7(j&7S6*uHnF`E7yvCKQOO> zSC_T7V6pC(_v@;~+yk@|zs{WF!;fkJ;zJ^o;$0YHR3dYjlQ2JE_h`$l%QX+^EOolF9gLhE7pL`&-j3}j zv|on)sym-SXmPgS8Lhvf3M@YIgUR4*LC3RpgY>d>6ZFDI3Oqr|D{mq+ECo&cGK>{! zrkQYyG2xE7@%U0GJ)Ay~M*JSsiQ^K@F!ETz*IgjpIcd$<{k@8jU`|}vsf>^P8XfDv zfG?~r7(+Bo?NKU4(`N{VCoiYKtO2O}?4d$P*Dd&?ndL{bKI>YpWpfkTS}E%qIs01V z&WdJd(6UAg-{PThDnr4vTk-UwmW4AqYy$s|>FTiAp>Zf5;vE9)8hwZ@Lx?TZK=W9= zt>Q8}vkeVFKgr{6Jy874F^bP_eniVByDW~tN9L-;WNmY@8UK6p8{=9t?HW7P+C83h zzjZ^*&DKCCUkzAE>i{;d)hwNSSr%tP0dzC4N-f^pG5D!TNGZ4ATJ|=(61p|VgoNTS|`4xTA z{^kfAwO;CADhn^+*E~^)X@nt9>`f#HRiCTSvHgEo4TDLsaHxa2iNtdP><#kzlwp!&YuR{V7v zyH4jSTAA;DkmkZ$ckC(lAeh1h5hb>7j8i`H+RP#UI`bvb3HIP@2^}gqDc5u?ii2q6 zYi7h#Vlusa_jO&L$ex8m({)n5hO}yKf9_i!@0dIALUPLL%QpLB%j0Z{xPt^iaBkBk ze934P@Qor_%syZ?KCGg0zT?+AjA@E@oYKi+wL?q0@Xkb9KF=q83@GQ65JABa8jMEq zgjVr&<&)?r+Zx9(He5{YBu8sD9QS3Eopvpwb$jWUDx1+O%du}f<=h1_2(b#?5YpnR zB@!G})JZ|@PcVA2WVSYC5?TR?CqLAZ4LTd@*PMFx2&4nPY%vcfnmTGR(_yCyE(R=` zoP4q_WZSfA%B&%$X-RaA$LKi3r8<8R+&2L+OTv=XiC%xK`Z+OXDF)0D|321IWH0Oo z?*r$B`z(BzH4P}N6So(Q8>A<|?C|yswm+6+FU@)!ejkeYs{LVutG~ssJ*9n@0g1*Q zu)!kH2`9RebWdFKuyTRxVL!I3^r0I%_Re&WmG{=O>Ht_-E2U+5_UQzO_+?_p#$qOE zn6=V!X?=ygy^i4F|9P1(@+7D^SSQZ*l)q&mAu%YmCP*&znW2B#ggONX<|eYyRzUfEb;CRwncy4QRC~FYC9;~Vam+C+Si(9I%ke{cb(IZ;qgixHC>weN^-9m z)t$I=hbR1vv#^VPKHB9odOrX@A}zEl;r+tnf}4KFJA}vA`+|&)i~6RW)S8U2^TN}3 z1$O1-%&r&u(~Ur0?d4TEn=_1Nvlp|IW>D7~>BWuvm$Fn0W2Xn!>Vd}hy#Bsdg}+nX ze===Z*a2++jB@_BEm*++FF0QbRe23rjsG2-@9&1+UmRG#e|BJ582{RH>TMaNGb)L}NrxOHbXU7y2gMYP9I^G9Ev$O%fld9ee`shx?Q93llbTc!* zFOYxJp5jY*k2ioK!{O!bLs0|fbCXXUJCGgNda1Cjt%#H~dMu{~w;eDktWlG^WgLAO z73)yPJolhlR>d2<5$Ra7EdO3V{1}6sU9PArj%eKM4Y)Egi?5yaxnRDSYo4m?iLIjx zjBVn3tu+Z6K#2*#%FSObJzBkKQ#N>rqn22CU@3=I7)5QP9q~ZLlNyEbUKQ(E7-}o1g=8tCli$}x4@^=l( z`d5#JmF3^@Xlm3vUC=~vJ}TP}B=Sc^6on)X39<%*Wtamf1A~jfcoWEkgrK=d`O=BO z6D`2OiwX@C1hEYI;26+cy4)5@SVT6#RWybcR6VbCu5{|y2&RmebRl##XJ4vv{YQ4< z-i%+oRkt*^R2Mcxqr)K;F(p-2*O9el^fIAGm9aE`IBJigjXYDCRy?A$c*5u4C#x%#$H=d6QqWmmmceio8MLOc?1Nf1syxgejFX?aEGh&yJ=p_T{97Al^ysUQ`; z9Aa0uW@7X;XWEI8^L|_N#b|K6#rkptU7|=YTgcdHlizXr_AQ66Y~cRw9#ciE%Fyxq zJ1zte6*pX&eXq})o6cs_{F&z7bwkJiqZz_NhQ4jB%=;>>xX zUuJat#F^3pQ-~%>2U(zmp~@VOkL1xN?gA`V62Kx&1x@K*&kxvFcRX1 z;(0B5pGwQ|Bw_ZiNzal{(VxXjZc_IgR61nK%bxn6~_^!NzEI421KR~!38t@pY z%))0%B4@_w>2GJpbyz^TDl>SwhyQK|Vcj(*l;7a7XXp;5Hf}Y%ouc3K9;}b34$|%d zu5A5%UeSFe#!{V1KrN$L#aBselL%7mU4OXKId1G9yZIeyu5GRJ_w+P=tiG3>a=jqF zIC>K{T#@1e%aki17bf$`Pk(}Ho!@fNPoi9}NXmn{5m)hgxa$kr5ze@CIDZHd&SvwO z6rh&afYO+we|Lsu(L|^+zN?0LaVCaq#IiQ0S(b7mU4v~++lb@x`qX9f**gQ@#2)l{ zS>6AlEy~*iW66^b;DP^BNFW+;qqaHB{V3Ku@D=Lfmt;gSY=u@N2(4wFi-ec*v%qsp zHXTD!UBU-t4@nQ{!{|q1TGS z1I$J4FRKm9^4M?Zm4Ev=3Mcmk&CYcav`D9N6bVSw#agNP&L`g7RVYV6)Qu2@zsVpq zv4&UrSsGg^j>x=}lz@yw^fa(4r4GYL@6U}@baLc}xcuNUIMzzkWhI68Dyk4?J+ThU z-Jj0F*8(|vFb=>Nvtnb55^aiC-B`i-EGpZ2!ZuxhyZs3fl8Z@#quD~rM${T3z8+e0 zr5(E=^rW;X=~@W*q&5)k@Ez~hgLotuM%HZgRHH5>W9?Cl_WXZ$|@~pgoRLSm#SHP8a8q4;|dSvvE)o}SBQDd#AvOc zDME1v@Jl(SvznX=31yGyYN=~cJPP@(O=11qgr(kBy9Hx6-aiMN;K<*GL`Zlc%zpc3 zMiCyXGZIx{$}^NTG5{|hTrkE?V=Kja&W%|`tDY;rv>gV6TjKY&!0-hK62U#?o(@jc zd@~r~@9Qr&n-S1XR>BtCf&C&&HhQ`s$?WWX6_&6+8PG0(7sifS)rSU2gmnhR#+9#1 zdSV5%*V2hvnuxPr(4t}2nRI4Eqq~wo+M9rHF|>nyp(AD9246vm$cEz=?T z;L|JIu>*n_+ee91E*y1@+t1Rkmd4r7JOQm0c+*%%Y;z`zNs6q2p7$NiLsWZFVDiiN zHV@WtgRya$NB<}Zp4@Gho+btYLS)Pf!AN=L=cZmPB(hOQ|Dr?_U4+<5>4!KZ(2cs6 z1hqktawWXFowca6(47wHT5bpR_)CP`*#XU%@f;IOEKV|SD>5nfQMSav#<}%e9I=5e zOa136+{VbrQa^RRGmR>%PgKZsR=_P2cME2mDf|64Q+L2^OZ;+R5D+LS0vWzKrC} zH~C!WsEon;u>(hBnl&tV41J<=lF=_v`hG?04_=%QzqVCAEZ-%ao@Yoq?FM?g!YVi0 z+nnsgo(xluTpzpmH#=X!`Sd{O4Mxr&+?4sD_nzJ@K6Y|>DOg7c&%FX(uMr*rJBVQ~ z8I6!{8i7EFT#lzt#^F49JBZ}mT4H7JkB&iw6^+LObN!;Sw)k|?QMj0{gY*L#zrAVB z>e(7$%T`|-5U(u`MpK924>c&6FJ`YCObo{21O;0(hS|C`+E*U8h2MOpH{2Wcg3fG59s;^b4xz0dw5KKNuUKjN+N+F*Z_@^u^(tH5Zo3! z;^jbM)isb3SOu>wxt7YN6dJ=O)Y&*s)Bzs$P$XcGE-nn--C{MaT}Jr<@?Rr3BU$<#{GAUo6K z1Vt7k9~VV7u0pj8sH#HAqB1WUqVv;w)a7!adcIE`s3h)ZN}>^NDvgT%0756Ja$A6( zrVvqNBcFUH$i+9qDqbUHYzoFVl6ZvP%Ax2;Ghc)n0A{61&YdKsK`>ZUKB0J`vY(#E zC4yERZBqTqubHViczYB+SsN z8Zo@~z05o(ud>gm?smPec}RKNatk(Su=9WqdeL``B)%edOnC}LH}mW6_W zceL>|l4hS)mn-ZYuJFaj?(byIpQCeF7@3*>8D;xFEsOsbBa{B3nf`ktlm4?VW?}g+ zx|sc+x|p5yUv=@{{l(3~@qcyk@7IRoZ*(!s|F$mve;K{-$Bp=}!kGR4lQ0JS7h%l# zH!aJ`_*Y@f1Ylw0_+K~lg0`o@{7_fk%9eec31DSwGt1=Sq(wZD*NLzfvLBlsnKQ;o zOh5ry0hvy#7>!8@j>H2KIl+raT{=?Dx-(bl4!Nn@OCjsvs$JG6wQ{K5GcRMq!E)>6 z1vtUm^Yr8EzW3y-5GApQv>h?16e+57w8JO{4O_S>Td%f%*hO* zob?tfW4P~6>CX6LE%~pDvsDLEFmxV1Cz$~@uB-oHtzwsDO6l~gXll!iAHBH}8$IK_HOqC$gltIR0Gu+>uXk&-Y>$P@|T zDaj~MYTA;4gJBe~GupD-#evC5lrTtugov=#@WerhKs019U_2RB?;%cN|1t>^Dk%_| z8)ip$O%gLhRPW13{F*E*x@jbn2|`;2p2(B$HMpmwqC`uA`yu1Abwh|^9qEcd>DONUBlP#*Fq&}=W zq7m>4=r27i9{(QY(Hu-~AP*CA=$>X&SfA zG5b|v8%fR_QmvRVB=mE{FM4xD3f(w)Bw09FuG%xpfqx@9^`Ja5nMhZd0Ij)V5v=j# zNH5==Wgw3h$_j2UjA^dwN;|e5()b6FwEqT)Q&T>1njt@<_QWb=F)X$cmN94ibt2o? z-Y#c@&=tF8-wvICHJc_}HHVxv6l2-h?g&|eT2(R$dt$P8u}|dBWr&wq%paGXTyxrr zzJfEP6}&IscYQ>wczX!2(s_hwl_%HBTuxB~GkuJvKg#?T9?K%Hn@3rAdP+&fn)k!- zIm^&fFsB4kQxsyJ6Kc?HtYBvoHpty5-29c!ru#|fH4j|Z!cY5o-9$IeXUrOztSC_`fvyRK6D z5#Yb2tY*bjsiP+B7$8POog?&(S_h1s;SkQ-9v%I3#wvehS z33h1y;!Q6mp9UCdm*rZ!u#ZvmWd-32d!KF751^(lCG5DAkV{+bpdG`EDIiR0lEKmP zcFbSuQH?W2M+UL@0A3QX6kBU0F-%>AO8yLHv}(e3obAPyLyd7L>2;eh7FvE2o~u!z zN~Y{uva`FoA0a7kknJTDa9B1QR0+ZnFMDrcLVqFj=+ zk#T;Xd#+Ndete$v%$M@4q?CtzGWl_U9F$+y(b2^n#4(p+JsJX86l1P1R4Af=0ROds z_*-q_*prQ`t?HOrQ=5fqWpgPPT3HHOJVKGMBFOwaz16t+59%Iy#L*NFIa4O>jd@Wz zvy?*RGU(tgdR>!Fozun;8k)eE604HEZmP7J^x3D|eq2NzGFaj|hJ4uA`(s_PJer@< zoGOK$N6R6ASi*eTDwbGQ8Pow8a8a){51VcX95%o`T!}Q82|66?r+pbZGTe4@}#oeE5?RD7C5{ zSkSnY;%SlkGxgZpO2+`7y68QDpJ=}@rg&F({dR~`97Xm97Nz))JHxoDL_JJOhR+7R z53{C5DI|z7d$PE$T8c;u_DL;dU1G8#HAIG}oSb>55KLLu+B-kMJ`z{VSm18Gg`(wxHd)Hxf^!3RxKy!c0>qaMGDH{wrrk*G&MUVW(rG`^ zfi6pf5I5xVxq#0%&o%~)l+-Q4VePYt3MS`7_~aoK_5R_BW7%1%+@!$Z#3Xo!@^M9| zVU@W%wYCXlRVwtQkUSGbS>39&%eUN<9u%uTG?OrT0SP;V{qP|=u*0~gb(I$ zv}6y=FQy0vF8KO^7>2kxN>&Cm--^NXV2G$f3J=yp?Ys*{?7m497x&V6sbGvADIVd^ z|4Q;&?eKo?KrrWElHATv@dKc0nE!;||H-=hKqYP?J1~G`+n6QjYW%M=Nofe)!0r(zoyU%i za_Tu`?r{DjP)`#%r|8K7q=C;$;|7%+sT5h&JQDn{?X)j}L_4}}8X9y*`5P9~kwYP5 z8n2~4PaI!$IYOzU1hpxJ{L?f*t=u&w6^@TCMj2%|E==oH^Oyr5RQw^5ma>~U1Uw^D z%(>jn^wE}c>@l!Kn6ehqBiSJO9lCO1nI>*3tIQ@fyk@QE(V-KcZ_SmMO59QuX)vrp z22e34@>nh3c}hDDy@0|R;J8R`CaZd{p?k)6xVxlb3xy1eK|GyODB93b(9Hj0Sc5z&@+<6yMcWI@pCBHa$G|d+ottTvqw&{ z1zifizNLQ)Nv=??e4oA#pb?;_h*W$IS!JPnHmEo>YHVQp#zMlMVF_h+2EiHa9~Yx# zo1TJmSfT29jgp#&s22K4?=wxD9FeKX0z35nfmU@!?^mt_%#`~kB9+5utLPRb1Yeej zte9}7vJ6@~8y<3W7(jd4^kA?>X~1GHTegbUh#pz*P#llv_|aAmICq78KCfpZwurh5 zrq;2GQ&-p1BF-qUVAd$0XONfT?dqaf^KNU7H9oGuTj{H}paOaOW~2ksxd1C&pVEqS zyIyHd2kLM2g#g^XTVJRqnK>gmS+P+hDMNC#0`r=IAs-tQvp(TeRbN54We)$s_Wdc| z#0JrIaTI04pd2BrvQa-aZb*Cez--9UIgG-{xbZ_qyyyoxgd$d#)8JY1%MN|i_c6_4mecrzJuk%$j?zUao*eY4?DT_;6F4|bf_PiyXWotAqo zb*6K^eosSs7s1#5aRe7n<*tLXLye_m_N|pS*HyLMHb1Jz&Gg=N3DcNQHjw=;XQ0S+ zF%vH|xV*Ld6%)%WJ!pFkq1#A#Id!n(Ji+XuR1_8z*2>8P_#VuGd?;o5!Zy; zm=%DE^V&BC=E1{yiIC|j9N=tHvT|&3$oE_6j4_zB?mi`DGOKOjlJ|2J`^uiS4j;~z zV5J}>bd!Y^G{P=P?0BNuH^ zMipY#=htXhIrH){?8`Jx(13qh!>&!DsHATz z3EULP;yBM>#0C&~nw@AG3rTlJ&6ysy)OeAcr=c49hm9(P6(#zMv#T<_4udzC-u6sK zYE=<etPRJKe^2-A4b0982<_) ze!nJX-%AMp9F&XqB(iIRaXZXNjh_W8+E}4rRn5YUviuG4RdSuATLNda`L@t8VkKf_ zk)}qS+)l0_Pb+egIgkJq~Ju;_j=O)zPtU-h_LWl)4fLULb8DW zxbE8PTRy5~TZ5n)W~HuHQ@ysQaso$|Bc}K(h9<>H37gm}M@3mB)xxM$*xk?GEWWZ8 zIUsL7%@!&eAqc5I(eCqN_J|^r)pzIQFf6iu@T-TK{p>GFG^fvtd$b6%J|$l^EfOY| zFA0}Smh}IHq{!*^D1JLEvie1Ey)h`oM6- z2zAaPwsg#^^<0)oa@ta7v(kA#2l1QBw?nstz}WoCF+tPJA=u$&zMiY}7iYwaSn(F0 zKZKawsIINFs70?rB@G=6G+M4>sK*tRJfMPrizLIZwZA*TMOj#o18z#+E@0?3CF9WD zJ(O-5Y^Kgm@(jMa$|3B=#RdggfqNeMzU1o+dv&&^>W-2o?Gcz+Y zGcz+YGcz+Yq?vhk&rF~0-Dl68K6mcJJlu!WgI1(+WrU=q_?Ny<#VLEhTkoZERb^IuTAS zos~SQxdoVP^+Q5g$O#H&hg*FU-&HcV50Kuakyj_}A$_SJ?KJClGQB@EJ;XZ6fF82c z7a=Z0qV)4YeAAdr3BN5HsQB;oUzt<1>8m*h5TJyYpG<66x-dsg-|evkyb^H>ad5D3 zN}-kp(K7P=G^FJ_Wv&&2i+&WBUrN%A{rg|yb3dtE6k;D~zc*m1tW4J|K9x+{0NE$=(9f9Rk6g|<4nT%aN zyd1Xt%EZNccspq*A|(pcKB*YBQwgl2L9nKt+T!#)rim1oOTjZ1fwONAn#_R^3CIC5xvDh-)q4%Rq0JBI5J1? z{#ct|M=I-vK5SE{e6)&5clVkuDnU8l)o0trOrPUtr+U*7YgV2Ah}irN9w6}OL#7js zq4!(z_hONmdc1DDQM`-#t|e4vS4e|em;&TcPA2CvUwp`Ra(rrl9ZMu04f>$tYV+r7 zG9bO7?y8#6_I27_%SCs3zuS|K?&o^)$M;N-HoEyoK!34gg4Zo%AxLMo0l3|TD1cjtJw3TK}-Woy5y*@L7~43#8gqJ%YxZ{IHij3QAI@N80KQP*c&s#jP(Zb z1)Yg^u5TsFS9p?3UVF?3 z=$;SO0pmN1y9aSxI*f2<&uiB{#GyvJ-RlZJ!a9%OVdo>2dK)=PkyzrgQY(eh z#3CLH-cJ)o=BG0!y%(5@&qu{o&V7u6=ceO5eAo?K1`!d#F*zn;-(%$IYX6QYfeIvX z7tLSUt9s5;dkd^pf9@!3<9Kd;;~mdcIk%%!=5^*}FIjfJ?fPTk9AjJVaul}vZ7ryDL(Tvjq}a7_64 z^!b}oB-n8|^rEI*6?|d9*;Y?(h%i<&sX-o#ONX4wJ_42gPjE+*;V{G&eXa}aphsem zAXft)GT|aBq*&fuP$Dd_--y+-cWMjvU(j=*?OH|91+L#ZbAY)yM;N85X~cf-$`7Oy z9)^~mD6BPcYav<|&=%z{wgH@+duC}l^AL7T=ytL1pRCb-ys*jg>q?tKQ_J4mCBM~Y z@*|x$#SS$H8!wuVdY5%%1V5ulki=#-_K35iUr1v z%mM)(8nqDPczVi0&O&x2zh&O4{vm!y{ZO?-)9+3d4CTFlNsp4qE^ZbU_gxT;Diq?E zluBu1_fEpW%aSYMeWU~Dt0ujX38NE6pg~0)i6U`~m@{N7QM{sVcWDyc_NYXd>nqzE zTh{5t^!hZcYjQ+&M{zGy13o&0!7;e}WdsCB zeA>UV5PMAF{s&+9XddRYv{~Hs7wT;LL6hP`wLNUYHRh0<)2|5mvhfc`;Z(~-BhVwP!^Vdlws@6tlCfVzZ|E;?79Wd=7sPmXTw zXbj^zT*)y{W!S#n+G332oV87!E#U3=Y)go&8?vCla4flkp%n1wR&W0~wzP4}p%ZSP>#8h}zW#4G-u2c6 zMwco{d%zT#?1~;8Bc8@P04PzbTTfYj^1dv@V?t3WmJ;6e_32{UHPL_yd3E-deHm(5$3wxboh3#&64WP~wfFr7P(Ym*`2DNxoj0pO@t z40reySGc>Mw7k}As8VaHTgonA1NgHLBArdT{s#YO_7T<%2VAeRBsHuCi~h^@`eJ`2 zbNFU}Afa96lD`%DkY8>n_9yych{m@XIHIO_j1t`q&PY(OQbur`;zbE>cV~`Z6o)aG z7~W5(K!P+P(LPnClS2pb$uy9s$~>cD3hYXa>nS}O&IeE147L66`(iY5=2JZF`cK-; zmwIq3IJOK(^}4jO?XMV2@R8lunYQz*HX`F;oWRVD0*83w)eX78O?aIw!=AD54akEP z$wkBowP<#+3I*S`Z!);wI!k4K5mbYHtkhT)WfHmY9~d_Kc01sRdFS4cen4ErWSqwHu#QUR~d{ey4ceHI9_e$!yY5e6LW{R zWSks+9thsc;&@O^W#3yZOOG4(q*stks2NrR{E{BS?RyPzD;(?O`v`|$-Cw3}leIqp z3z~v$yq&k;=e&=-i<|=@WUO1oG!jY91kNYq7hK5#|J| z0neF7ITpcl8iJ)9^XZ0ckKY?%0%CxDU9`g~2U-H{EXuhmJYm7%+7HRs_#&@;BRRQN zYe1%tXXO7fS_!O8;1RH79WEcitFHq|bhlFZ zZI-)E0cpa#K!0yigGWHq2%mSy*SZZWX5lCrQLRl1*!afYY~jNV#ynx}C!w`ZB{KQx zQqJ~Ob6U#8d7s)|M5UelaVozJ>(JTj;ho$vdYJkF5MibH(2NKk+)*_l-HrI`3 z%;QZ=$C2t#Z+ERGOrbHxPTfI`RKOMzb52EL$Ols%5JW1;`>ZYjC-z~Cads88Q0*x~ zpI9SFr0cr(?{H0}c+(NY{fKF~Pr*ct@qrNK2nq)1OA@n7LPI;6s4;AdJJi3j^f)*` z(|RE)Rw}!okm7QdJqD8Vs)Hwf!&B+b-PtuP%b@tSFDX*&q_T$8p+Ag zsED4O<8bQo+-*XMr-I{IAH64x-BLvI8T(~sHO}9m2Vpb_ln@vjm2?kl7{AaQFRxGO z^IO3}Un#@luxzpt@7+~LwyLL-uZ{Ul%4!3@qee8RMdp|F?c!*K6WXcHm#i+GDCS#t zYGGo+J}Ur)Oz051`@|N{$9IdYX;mac>f@2xL}Bq%-P`-~l)v zZdr&h#tmjQXW7gQ2gR*!8P!nu-JhT4Ob^RPaoVr4g@0vwnp(K1d=#?tEZ`99!`8jL zO>w=*B42({zOg>B{#2`9Yd*h8IJ^x;vq+#x;CCFt5)~-~R`F^pn)f5joyJ!f{WQ6C zJsJC@=jkC1ht`=AXVS+`_;fwqOwV!l{7x9!RqJtK^5yC$2mARZAX&lfNwaL)Yt%A& zw}xw}_Ynf*E?TXqzY79?q=qh|h7K5l-U8-V%P$yrijl^2*tyaac^^#2Uou$WnJuB9 z?6tm93pF%;3Xy5nHD8w3cx(6|MnsvB_p&SQ?R+eMti6QFd^bdNB|wH2c;`;<>S9Ja z>^c^MvFFP`8E*KrQf8+*Qo}`H+wt_2z?#W0?S^yN%=1~U=nkxi?u3E9(irR+`CEj4 z#7zr0_a^7c&}QM_L@7ivrV1(j?z0h8$LoA&Qsd;+QmyMwU9wv9-g#Vq;^N{3{2KC<-(2<90=SwMjOtnC0U>)f3Bld-&N3g(IM>YH*U!l_HqcWG^kV4~V$wPTV48|&2l+ih*0yE67_OI3@#_;8NtGCt>l ztLBs^t!_IBfg0VBMHZc)H}Eb5OBMIDDXZ4>h@q*dKJp@>%%BEjr2XL;7M>w?FBl1C zJ|3%pg)UgT!(S(NKx@r5o(e%b_)oc>;A_o!o>*(md~pDvNUl(?=$vh$lP8E*uBp>1 zh?Ac>%Sv(EIUhi4@P8}XXS_h;&hb5vAAdR{KqULVY5*+okVM04BUA9=4V{ zFXbI$0uq7mvxL5oUHYOlvBH}64>0cqv>O_FqRNM`!gy~cv}g4+9>2FhOwrv|_l4(v z$Lmwi7J8=I)~0d!6{Y64^uucmCV6ruW?LvUlkw5nnEqmdiu)-fHIr*W)1`&e<#6!g z4DYpNj@hLl<4wZ8n+3gA{P(QpUGj$A;H0B<$J=8)GVYH?0Zs1e;VW|IbaShglRDJp z&gZ2&E^w?%l|5;U_g=cUae)VJ0n70Q+5GgY4V(38eLM2TG7_yr77~55;^4)wG1yEj zCp9sPCgLY>W0?EUy8&waTN`nriYvl8q+RBKN{{NW9OR4~J6IV*HSO=5guJOX&^st< z8zmfmX$VgRz3dA9Yx^sM2=@`$<5Ybg);uy%M8ofbTxVqba%ZO2Qw2Q)K@8f4kB`kP z&c?S{yKKY3#@y2rAgm{p44}aohp8LKm4N;2^LW%*lgBafs+3GewgZFt4sf9=HxXv6 zMt4LvCGPcqculud3hTeNxtQB;ad9FUOQN^Pxc7juj+7L?=Bmw@2X&a(FI> z%N`qO-C*<-fk}B%n|m~Rauc%Yo@=a_bV~3CW3agKb^Q)V2h%8ccliz`dW7NExXpzX z?OO8>yYj=-XXj_vd_U3bRgnS;B>BE-Xpqy~VT~^e8D5i1O?a1_qe2sSTwiT4sA=@dF=x;ow)Z4!2N2{sH+a2I~V`zTnCpOdM!Ml9q`mlJq zh5Z_VSy{4ml;#oe9wx3L>MaGrjc-A8iOgB<4XQNsW&<`;3A}f^-T(`Ttl?w<3SO6S zW`S3XLG17SQmh$YO|*w;1kf;I>Pkxqu*2&@-r|^OMmiAn!GTh>c!OS%*+wSvwx?&t z$UAZC4pTSiOzd?GE`)5(`6I=b+~pkG^m&Z3MlkWjAz~Aqd(jGTPgzhgS=r_&~L^uw8k{4wQRn7AH^L-d|8#hZ81%K zUrLo=VUvFtO|uw6t+J$_Ujkf(VNsL~VV6rTDVlF_7?oB_F38PN6`x_R^30Ay3Cs$v zV=`tUA}Z`3zAmw-s(29nuWgB|&X-GHkQXS+q) zvC8A|P-TAZEYG84Zek}iF5lx*_3}1;tlAZ2ZESj#F%yhAD^x6l z0j~nVDRPOwNmGY&m+G#L;nH2bcnanW+jtraMokA*-GDsz5)>!XE81+R`GhnOr;7w` z)apC4G*%Ow!usCxU^U}G_Flj7R1GM1aC=?cYZS8} zT?*eL59TYEHBDR%%hMCH%VJ620T0XU(bT3Fr zdIRGHzdgSRQa;N1Y{;#gYh01za!Gg!s7=^=hzqIp@S8R0(l2r^(GTP@()qbxq*_Ii z>>^f(sY_4tqkPdSv24*mf=aI3J}oQ|UdzQ|>+to+Tc(8S@v6D_vdxzEu-P)3%-Qz9 z&O3f6Th_Ghq+%^;GaDyg&AZ6(TD#FD!T}%Q20hdF9yP!f;wi5K`P3LJ>b&ZYO zduW}^OHG;FgZl&UgV$tZnnmxk-)G-(L*!a|!?gMK;v~f%D^n_5MGyXN1u>CqbR&#M ztfv%erVAz-T5r9V4Y&A73!3IH_t5eJqHdbSn0DY+#HL{2_hc|lq=)1CwhmzlzGk)w zMG0Jq40hMC706mdC(Y2q@#qmefvUALHt-c?obU`%L_Li zRHnijAnS@biyd8I%f&i~kc_?Nu7gi2vGu5+{%g1%#%czahcw@X0LA07(u zjv#zLAFkPx&`5cH6-k}>Bq_`Nx*EO(rXt!$OuqGi^zM_geD7q|s*6K&8J!R(`Sc>9 zboIq70WFshh3yDD{9bnKiWA+)NnP;0rZa)_2k*0YFpLagqKsU;_ppdqLFKzd%!Bf+ z%ES}0tLRRxACZ`DFD>pc)Cka7c&$C9p{LZHd8*IUhJ$XS+8y8(9Q~96h(duIbGkgZnJ4map#IV{}>G{>$A` zpOHLI>@*)(-j__b_ejT6Rzm~_zi&CVZV7p+-E4g>=B{qf zzi_TTfbovmZYf(q9H$S(E4J$oNK-@Emk9BV+FeodgJk}8FDz(OBZ0nXn=h%+g@7%9 zg2t;~OuF}Obi1kqR=za41v(yQdeqT<7a^|cpYGVOcc{Rhu^;1&|0wR*0LS(&L4f@~ zis@Yp?qJUsri*=hUDt0vc+qVs!bjyjq_Yo*czXA>Z(V4LL%2A<(4(F2T+lr9uF0am z*ToNa<6DN{1;InP`Xua*|MACTc6dsc zmvL!U!|G#3TP)S#Xx4-~yqju*Q zRS!Il6bFCL(XBQgiNj8`Yt0mR9)aLF5AHqAs4WeZ&k5u#=r7(KS6_`FSB5d`V+C#w zo=c0*1xjjbquck0_Y(%zx_R9XT36Q0X371lZsP5IBrTT2=|{b+Y~bq9i)9q8wvcGr z)Z<@vX4yU2c+>mLa?vi>);Qz$KQQ|5@>?a)2Mw1*v>5!vYj1(f& z&%M9szRb~b_sMh>5pY@^?K9rA#16x9R)G&Wamr4|R*ZM&Ms15N*rk;p=_}rBk>UPw z&DfD1cwwPS>dN z;C#GIG1u$D0!*nLcxq;lXYk7Ud?lCLUwaw$a74&q&?MSr(TsNcnww-9H}6ndAJQ#P z)d)st2%xtT>u9^sTE(+&0cf&@@(YeB^j&?uod=YZ2C|nBsg6mjnteUL4JqBK^th;c z6~~`fAEB49Hk01jE89Wh-=^An!nT(ttiK9aklytFv2o?UiU6_ z%xF1fOwf`7mhiSgt-WS%$5F(MN4U4|+I*gry`elo5ACcl?yD&QMH!kT_xu*{m@OSmpL|#{I zmwHUntMMrd3{pxdqjFwdTiqr&l!`P@$b_e{6KUSi5=x_XUV>M>AG{=j;PrGe zAxTE^IXbP81TrcX5PqepI{B(KP_BarpcVXEYs_RisJBW>%01)Lf~=A4pp#j|C4MUgRVdd0t|HD^V-)L21XV~^glviP zDTD>rMh+aiv4y|H>(V4_2V5oBcUMtd{``XIh;c$4ChPoSOmeNIJcC!##_s#88RhR_ z5fc;3-z)!Py#1Frk$;^9{*@77r28`?!bt!B$cV81nGyN#L*!442;*OQaT%HaMR3VV zPy4?gLY>O64hp}Mx)iJ1wU3MAr)XdaI+i)(qD}*NAw*Az3*sGq#h{zu`!Yfi2k`Rd zqqD{0=`!#qT;LZwf*L!{EM_`>gm*Pic2#&s&=ckFmF%-KRPaosvYyN4*W)@GEjU~~ zX@Li@)!S#-9|7Do9nZJk7Aw`Clsc;jg#<+zMSv&IFVEMcl*;@LOi_fNdf;9p$E)!2 zKS*L*z3v{VJZUtYSFH%cK@5kJ%AGAg9S=_2@(u(9H)hx88&5wf%7;SayaKonI}uif zE(CVA!FYe@H&m8{d1d5ZVh2PTdg}-+5?8m(k0CqyW zK(K$<3}0ENKsKqzh>iw}Ur=rY&ihCfh^SI1dVgXpUGL*0kp00012D`w{vQEi6zyAY{}kNzc0= zH6#MMo-AM)RVDPo;iqK|b%Y1SM~KkQe(?QI`x>^2h?f;l&SdQ&mOJwovd>acTG;d< zeLT!88v}kpVzj=yK?k-ir-2JFsNQ^9PrOzRsA=4S_=P^_Bf|PRU?t#l z@!jp}m3GcRWBb76yC=}*8kLr%`!>@JKs0WY*N^j%@A}JwS$%-*L6z5u2UbnK^W7Vg z2~VKat>BH*E3XdlQ!O_i+&(DxjI6*-PcR6@rJxrp3E zo{w4F#)@swtCu4Bj$unwo;*+A@vWl4u_3n2ltD9a10cwFCCGU-1cR3+99#UWHc6`w zpe4Mtox81Tkm zU%yT}{015y;vJ$pe0v;k=W9sO zE2BHY#G@~tKQ4yw020;ZqwlbfK3BX&ik0#`{MzR_8yH6jgn5WrrNka%sr1vw&GErnMpu|5{&L_E~{P4mZ!b zF?Pf5HP#udTjy6D>k6ZT_-Lf?a1%i+H>O3d#m$xK!*I>;^CGBVWeXSAk-HFf~I0N^M@BQjFk^& z&;l6Ak@2+2Pt)R5ZUNdcTMO}?y1l&KU6pN{X1WA+QSbNok~WsL1S%>Tj5$Z7>lbxt z{xY&awg4zMF$CvgdFj=fqrym?g+QOc{h9O_HiBMk+qOqCVtdYB2}zyu)E|jx)*mZk~L^sBink zeQrqS_~@Wzw|>Pr?#=8)9$KK;6wtHR1C)(CzA-EVhtf) zLi3dx*XfeI0Vn9~Y1me8$BXfc<1)=sO7fPCo=B8sFLw!y#%a($`{k-UFX)uL9MzDe zyyZ*3=Ic&YP1w>A%G_nUgt?nZ>>U@=fTKIhYRx3|lDOuR zTiIo|R(h&=LZ~E494#$6sz9=OO?EJx@mtj5>qqHmW~V9Yw0$Y(f@Wp$ zsCH~3ve>mFkgI!ZjTo9_wTe*ApMz{J1!;-YTnQ;7E2ac&WbH<)l*=Cv;l;%hQ!77L z>hh*>w{Sl~s|lOyT$J2mCz&@o{Jm%AueCj=tx3sJ&c~V$i3>wmdEVLCQwhRCk47<= z>!}QP*I>S4UD@h0n^|i19}VsfV27xtUC1}I0h=*uAK%66G2iXAH=Eu#7wbb4=i!-m zIkk#^gqoj*;MJtwTwoyIqUeaWL0wAXtSRV@JjnaFe(?_6DIWi z9XE7!-Nx6SR5KDyg`+wq{3;yuQv0dj?;(hJbFDu|2agvk4E&zrLD|EE>(wVuVrc5Y zI!A11#t9mid*cl%y8O%+!x*^@thf9;iC>C|2P``K{0$*}=*geh{GB9*IMN%QSa#nZ z9}@Em9HD&Z$u|UZ8(MGnITGI}^6DF%sRv6)&W$F%jnOZN$30m5f}3yFj zHE!qhuCVPvP4SVI3}+M(Zi%wSn2nnylEcmGRhw4j;s!j!AM-<6jAvH)Q`bfJYup!& zkxy${fX0u4EI@1N2mXSYBO@ zY?myfRb6MNQ6xviEv=K6-iWLgPxzp?pzRbu>?*Lsqtim=>C1F@F3pyb!Sax~mj;W!#qKN`Y*A&0JbIajEhPeP?{c@tY z;F@@}*e&aM2};7ww^6{6n~wZ#n~p+j#qf~l?z%e8y%?uyVETYA)>S#5tr;t7 z^kinS?RcfOh|h6D0e9DQx<|QbjMCDcnr#TQ706MV?ASBt2;a`Q+>%IpRNMMPTPt4! zm2@5p2=P4zvLTf4HJI&98;0q0^2ylOpT_+^N;Sn|kou%+Kb{$&>OHr9>pg4HagqjA zqxCC??po@(G@@$}22l)NYtV73!%QPFRGuoeGYzI$NH(Zd{wN@f5J- z9ufQ;Iec+*6zTDlV8hbwTIR^G&9=BU3Lf!;`3CtlB`4O%qtT{BcD1tX5I?GwoFgND z55bf5WMm4r#BrgBMoN9*hID|u6kR|5JSNz2ck`X04X zemMH~)YT8w3y1erG!QFlAVJkmR5}NHG& z{^%$g!I6*d?_ILd!#*ilxn3Z1)^10HBiDs7x*+tN-$&{2snPIZsd4Dp*T46am^bBS z-Bq?xRb^o*Pcto`ZkIvtofWmTL7F{n-<+0ysn2{?mY>y^HZA4iMTiX;Ec&U}m%M8; zS7p1+5Wi~ERy?TxRYLH0{RRUo(?8TBj4c0Ot4Ekw|HVDR#{9R;krAJcnfY(-5eCNp zW$Y?x8$6Hv z8aie8_#-xNA44j8xmIe3Du6~U1euYajJM8pGaRnkjUWcK6DGwm`BA*+6C2MR|HN$j zQ;;6l6n0H!fiwOjUFe}X9ckcMn%!p=-#K`#XMoo*2TgMyj#w0Q65)c8r5KnLdUK8-&!VviRNk%1rA$`9gvHL?{ z@Z;ym3Mw54yObj2AWvYbqm&C}cP){lw_?b5sD{WLa#b=bRZcG-$_*@Ahf-<0n{|DFEi?=x86A30QFC7$64YLAwzQDkc{=MR1JyP4M1_mGIQzc&E?i> zPM=5@ETIKsk?JgsogU*%?I9MYr0Xo3E%y65yYR~hKXJj1e3z1Dg5d4fZbJ?!ndL$(79r#fL^T%X0I- z%%7O)E2Ieo<_||a1(KcIT-_kOwVt5kK!sCb~EklslD+i9FW93v%C$YS5>aXoQOLSj!19oIs zOqUd0$V)ve;z{W%X^6WN8bTb4{5e6)Bcv9H`!UgL9$|TsC}uw*fZ7lOeC^JHQ}nj8 z3VqM4KHd!78MMr5`93s(@oL;3{-Pj0Zh~bw3?Y0<3_GK}N}gpP!Gg;S7J(Ky?Q=*h zOG0)cFXUL`&SjZrwX#UJzdgI|5_BSvH1eYc>c}_~p!G=jM)d?4*vCge&i-@o8CsIh zz>YSZ(}fG3qBeGEh8;@xfaA1y0UD2HMwv2G(%3#FnQMaKg~@}cJ2m?-JJfIGCmaSE zr8FzOt}tNPXi-exjkxpv`#1dM6 z_jav4XK1l4OZCAOAXhe=}xGhvYPjKx-YPxM()KcF*Y>GQa zT_;*AL$;?2+^oPoDOVJ#lV8^02#qd4`4rX-ZQolWyC+!p)$fykdj_II#6XG@c?E@2 zwE{s_J*47w)oy9(u@0^&`oehgx;FTsULIg5SQiBT{NMr4GmyPoeYbt<{4D&A{AoE-QkVe)p8qstN(!I{6gqR(k^GIEAj zDZ);gN)m^KF)FN-tkX?B=%yA0s46yE6Jfz;;Xs(o4>|rw+1o>{+U5w7^*(QCp?5KwFPwbJ{&Ma@I|P zuSc$k?(Ctip;=KDsUARfg;I9?MlauwbrVnnxAtu174sFcJ$bbcecpN@Hu(^kL<9cJs z>75`~Kv=3`mcT5+BEll7dummx942-phGuDRnYL-Et=rx2HR83f6<&YQee!F?RQXeC z9`v=U`|VVed&JWri(3fv@kS4jsR|Ii4KF{Xl*%T1H}`^f$Dk;WN?U~#>sK8vWFHe0 zMT^qYj=ynF&`p5OPhwB+!_m|P|?nGr|lD)&0j0J$$eT*w+9e=tz1kA&@% zP7IYH>pQKvSzxv*nU->))lf2Xut@;HuMCmKh?;j+PM5Z3(7R9`i;K_l2|I@@;6_c9 zDo<57*9W|KtklR?t-iQ=cKEH~>b}jtjM<{`ys|09l8zod8JbH$+pS!AQ6>ItzHD8+ zzl($h0GsgO^?H-i2aG8qN^y>3uC`P{-cZbhGa&ffFltpToqq7B#!fJfwwCjf4DPW7 zlT4wal2cn|^yC(~k*H?p)zNOKTCZ%{M4qC=l8&51-B`UN@mzCR@F4jTinW2oZw{P> z0F@?CaA1zSsb#rWm3wc!Do(Y%+j0v+%9N#uV+N^A#HbmrXAwUd2Nc6(1?3@nNgic*S$FNLRd#HX&d#OF|I?T<@<>r5MJ za{iEn@J2Wtw4|ldE^kj{DN4GcI9*_R__uzV5rlwAHGW0;6;-_RUTuSSj#ceF`y_SAJXtT^iGBq~2}8d8FY6*;e$`PN;1UX8A7O(eUbsN+C;E1&C(e< zG!my(0p_rmn%QJ;vVO#^} z$CndE;||qkZ11*l{BqsO3LhDll9*WY4Y}8bbx0RA3o@9Y??@>6hCRO<)nyMjlM-YF zn*ID*y$r6Iq93J2(+X_^%8hOT7?3Rvtx!DYjlEk(LDYe;m86PD{e|{>A+<9jy6B!v6d7a^dXuy0`UDQPmYz1`Kl{GK?(2~U(6&zODst^f)+vUb%of`qMQ zCw@Su?*ynlcJ3}yJ0U88`nM*JoY-OE6k<(@(WFChi=3T|oTdFk_)oc;Wt!7I@okj& zhr^lSsj!a@82v)mp*Zm!v_R>BLiqHfpi&cqr3r;)P~~h=4eVV*j{R+nhJ#wu;^m*o zUZZl@KfX4WoiEx1Y22k%kZn6eEg8+c@;Z2KM@EREM&b5Ul{@cRpWXFU)9Z0 z>t1(`91#v-F14|nU4C`(jeH_@xeAJpUw=kL>M(4-gkvUuKLdGzOBrLvedd*U-jx0F_nTRrmJuebQ~II>-oOHW7IYqbUK9L|0%eAIe{6`K4rvO+y14uPL}qdZu} zAO$M-#EP|)Gsp`%v-=7Aw1<+iUyWf?OF|!p_~v<^i}>aFpN;svCEi>?&)hGS)UdLS zBBdg_6e5ih)RFMA(wZ9u;=IxR)M4c5GwWEDYSjwFHBe=BI?!~t6Ek2rThP zPqdJO3*#SSIrJKN^@_5GzyO2aiSU>XvA+|a>>Ru{7?jwO84BLlzVr`KyQc`ey1wm| z+-ktJWhi7R;40vb*AnxL*GAkA=)jk>fgEI^zg}vLAH-^8ZaT}o$WG$G9fRzwGj;m8wP zmwIpqot)A!2O3K+>D#rO|U z)`LOl`X1em)`{R(iEtiADj!E+A4h(;8zgeojo^|s2^*~t%>!afA8(>;;fjeyV^7fc zZCEYfW_xRChR%mvrL$b^BAVGG^^hmk8rGz&mN=d6ZH{&n)MKam4|alO;Bo-MtssRU zhBRXrr0p_JISu&%k$2Lmo!~Ah+gn!=OxDNkdwrVkyd91{S0T+#*G}bulJ5y@Bqj|% zihpQTV7ANGu+LUQrm6z-ZwNn-rnEZLdzd1yMIY7qEz2?e-wVrmScFd3<|yU6 zc~q}L*G#~RBrtk+qylu&?KPnd^3$z5ZERN*mbOyZ3H&;cYhG8*_Dq zME8XSc-$=2x!hefJ7UTFzg+$^LzB1OpQ-!#`>n{x3*F{$c6- zt2Bh3ftsF$ftH2tznY2s&)45S?Z{&K$6?XTEKL8Di7@@urVJ+L|6j@aw|m30b|&rDOVc4l7}`bUr`)#ZNG{xo^Q z_3fLFAo_POi%x-F$q*W$sq>Y3H{m9z=@t#gkS{17CaaYO+YsE>afH3)8Z@g8=eMBa zC9P*jpDBo*h=-@|%i5nhq!2OpP*bIs!a{OZeIO#!_?g>04UX!!<<|m0QsEABo&BAB zz{Ft=>~m|mJ57>m!AC>|v$zmX--BP5np%N;UMX*F*hi$1 z{#$Wp0?pO>|NDlc0ZqyjNdpbUch7s9nv9jALaEG@A*2kMiUy%*kdQ)#Qjw`pB4b5J zrG%6*QYs`O{hxh)_x{c~`*H8T`&<9D?pf=!RFDsDMdkV;K8psNHYij@g(;u9E2%d{vu^4pOVX|Ap&p;O zo?wB@#)Ku!6TBx>ymO>yq&WM_`^}UOP!d}hydY*o=z5_*b>T(YQduzG5mO1N*-+F~ zx8u=`Rsx+(oHI)`13o@kH_jh7f$!mYqj{e@ZOU!i4Mn>{rxooIE0nJCnqahleCmT3?d8n+rVw$wr0*zbSn~?96ttR*UoL64zq4#IB%Bi#CeIY zBDR)Qx+QB`%qZPh)^yV6u&};)Y4=lm2}5f+ha)~|^ILr;Y%JW7W4h9BWs!W%Ox4E^ z#AF}K^fG)=>()Q5SBx;1Es3`BQ!O*u%ov2Kn+8>tkYynyO{aeH8Esm9Bv?e_`ISeZX#iMeDF&t24fu0o-_x{g9>=5hS&y~opgzqhFz4E5GoR=Y*Y zC;X{aXJ1`a&G$|X+2F_KL6Q76)AolQynHZH^``Ny`kS7ciPX`ZnTquiyXMaeR1@=2 zeJSF#d|=&2NlnY5J#A46$3%AS6&+0TmoN)B+kHCk0`Kxvk7*6dPJR%~FZgWk5K}}n z?mtwj(ix^A#+yxU){-m<+(*uuVY^^&!jZu=wHw+qrk-7$aqi>7w~HR8sjfG9;JU%$ z;=uPt|9l5(v^@^{)YFw^X z-*ub0MG>usN(i66u4AA2m;U5;tC1PJe1GDqL#r=X$he)I+Pl!^gI11{sKv0mgQJ6R zolu(UNk-mPR9K`f_@Jy`btPi6+j=f4@?=xYh4AZ}bUMxo%|2j!%D5B_J6tM9PW~gA zC!Kz*xpHizAjxUrWLi+>q#?Oel=wewU zR4$)`@MZ^Qm`{!JS00`=#cJBEFd5Ih%}Jg5RvY}N9Fq?pKYaDf(3L$Dsj*P^ev8u7 z63u0$D%7saOJeQZXZ%pe6nylx*e~H*%a4h(sG9HKBFxXh8&}RRqPK8Y8rYg?a-ZnUUZ?C&<@@Polb-36Jqu$D*d%=&6NEU?E+uI{KMn$MyZuae|)dbt&-}Jw5j>5m6EaJ%)&;-EFw5p(o#WAqhxM&#)Q4G zQx7ejb5;G^0fjl`(;t6c9UU@raK~}4kXhqP$2p##BK~Qsdi<4TJ8VwK)*Lk-Qtd21 z-q3Ax@M~h+;2XZ$EgptuUnClF9i8BH^A@=0o_b(sET*lOzCv(q<^elh0ly6?J^Q!p z&n|Q@@vW>;>)w|7tEeV5#`SOo(*4x5IIhTM6OkxlP9#U9M5nVHf=qg25@rtV&TIbTujbHF=BST&sOWLeZz2#ln z1=K;;Qq?yNcRlE@f5_^x>i7-*W!u7b8Et)j@zSMaeTv*xF+1nV=HWH=tMzTeuQsLo zTTj1%UR0U&Ox3(zC9b4VA>hR7Y|~=r-8{R1iT8ZnG*`B|fTtdTcM|<|3yji zgEOyni@AM$kI8Arryo#30l~g$CzW_r@S>5vK`Of+_R5PSZ;7L!|3X3xvyR~ zMEdwkRc^~hKA{W@Sg&mZi|O!j{G zOvKdJQ|Phc;GJ0eSII)#)@b_}y%1ljXq(EDe{Emo7^-w?!#8QwyMv30`su-p*}}T# z*KW#?ud$!)Dx4^=PV~v>`&E1W5u*U(G8sO>sEA$n>T%OW^RJ|ho?54S{Hsy%`1yB- z1#Xw>YRu%ZfHkOw~=T zKBiG0wKGwn!)Z>ErtP-LUe>n-LZ@6iyQU+^&wqJiHoqUSIq0gsrOt%*&{N50J66p3 zG_QNERLzZZFYec?pAV7Qa7^*8Rb(9R?(_8J#%r(Q%a(=I5`G_X)b54Rsi(Vwvse6Z z3tmy3fBM;)<1!!q=;@JIa>3}s$+D7zxpG|`#8oG5$IDGF&b;Z&7)l*sroP zx0i)Csrj1U$cVZX?~0n1 zzTNf3;%ms2(g!w;leKE*@~Ph8A6NPLOHbkQ%@b_*-+6Ju?`r&w((J~M5@H`3HosI= znUgo8;JJ-^P|w8qI$vkKIwsVc7n&nMyG*?LI!s?r^FBHuw|QgOcFVbFlI$Ue&e)8Y zUsnV}-e2=>IHN7NxTI?HiZVB$^m8ZlJua8;Dw8Veu3o$KxG{Zna6ySyGJl*%fkp8n zam^~8%keYCMaBtAHO0oI7Lzw;yqbP2V?q0x@+3XOejAPQ>v}4+#{*ybMD3LQlrVgI z&S*;I8x;LO_c!8GOV@6<$cZ2goMJI|Qfc(HBVfh+G! ztQYsRZR|0+v~$an_aE9sTwQi+t6uhEigKO@=Tbqr+Q|1-i=ILY$Akzuxw6--9>T4U zLeGEI$$nby^Sb>0^K#WU<)3WZ-LhOHjF~NR*;S9)C2}1Wi7vReF;V3V8a_cueaXX| zC1t1GeXbOhQ|gamOf&mz))Vs=3>T{j_L z?NP3YRL#P{ti@|K9UWS4_(zZ6=&P5+h*p*1sEYAmveWUE_V+KW+^a7;Qqp(VVV+6Z zj-nZjfg_-^vZj=$0hR%qly*X@~dBYIm?*m zZ@etkAzF6HC|s`MhO~Zq9A)>?&d|;dH<)`dNpDN+XVh_ChF7>rdBOvMQFho_E_SmTk1$qWhJ_`kjsQ zMBU|DYE6SHT3cH8ecd~w$pwEe&(F(Hy!Fxkme;M8^(GhH%`{rWl~s1k z_b{srUt$05(D+#%5);QNxBvQ*EJ^=Gng7q9%u(N@uk-H%4F5Bq%pssp$&!Ejlq^C1 z`Tt*gG~`&P8OY!Lob2gByAtV{$3Lr;O1jSo4%|JfJp7nsy@KxWIL(LBc)ZyDM-4`M z?;ew~G3)rXa%i6Kyvvh&#RpaSFpEj=AIt764i_vsnz`hqKw49qrQI8OCDi2IK2uC# zV(z%j=(tgnHsb2Mjhn~~9;x@Tt&oFJ&HV@GHP|#-j1=)LTl+9?<>!2NXyaO%d?F-^Eh=&uiF;E$D`+_o4EvR>0iemm(VRw z{<^if=0~a4;>^UY&$5)W#E8R7yrY*N-)#cU-0#cserL<3)^OO}pj3FY;|W78IC^^3;-fQj z7W^?=XK}CZiKADS?wO@NQNeijn!{n*6MCOy9M)b?E0^#Tw_cDKrm_9SvvF&ZOSh)= zo=!L>ax*Od+8!VEdX3fci8=*CF5NSB-8gjkdum^$Z{=lGFDWmxaaj-TwzX9&C|+MB zuc_w}X8P*&`k3i&y;Cg|yZR1iCudnW9@Jk~YV{yoPbBi5nTGB5;Y_2)rb`N}o1(9r zl@k?d8#g+s_sDzwr@kk@FBp3D`1@s}(f(ey9s7btgnQEkM5+{uj&y3|M|xk&+jCIE zAusz6>DUkY&ibvu}cg-R2N-Y1L1%EKi55Te*Eip?>E(`Qxu=T_g5&T+7{~ z5cxj6AsUx_BhoVWr$NKs0bcygfi3$gr>9A2U2hljYCAH&-Ss7=Tsi-Vfuv^8GGcgx z%7BOK3q>qD?dU+Q>68~j!(9d~cDXZf~54~UNdLjagc0c+SQH~rKrW<6>mC;dO zf|At(PZ9Rc5-U2wb<>triQd_t+MO=$+GLCszVPT8JcrKQmpriYoBN%gkNd5fQeB=* zK}T-%%wKF4c%e)?TFqa3DbpXpbhSq=>R62JYDx5%wIzhAqiVx)Ovn&7qN&(Tc;P_w zh4TBN&5|!8mLIyBT_GnUS{>-i#4ZyPPuO2| z+wJ0OZQUbN7o6WKe5axQsZxhSugd=-WF<$_L@Gv6_n4fU)ESzyhb8e zalfkAiujG@Ni92*I^)kqmaj6<3!EfBP-UL(jAh=Qa3eyl-PS8`2+|zFG@+-!v8bNOw;G-{U)2zm&4m5 zFZ_z>busBlSaz&=kRQ#7FdgZSCE;M{3;;yPwa@L^t^eZsxBa zni5&}ps(iE*YBskOMmrl9V#2C(h=9$F0LbskD>ueFU0mtoB>Fz@%lVM+O*~n{$;0on?F@aJM6eI2X63zwo;|fo z<}|En)!SR)7akbr8e=~?+&3Z{)+;CbCU|%DUilfO?b$-(ky(6CCR(WR)<>SXqphUz z^XTbu8=^-OivswELw4m@)r>H~n%SN=D)$^XPVhBeeAyTv(xTn$+^8jaJZ4tFI#j*i z?8(CEEmN~>V%sJz{v0Y~k-zw0(az@=_nP$xT_~ng9+yeCT)Hy6=ZUI|(eJ>+bD}aNayB0F!$l~~Y?p$;uw{l_H}_O{wN7t&+xB_6nz{9~I;E-_ zkxGyG%fg8D1Blw$(uXbJkATkABZmztT5gGHde8ryzI^frTa6t%3qy$k;cwnXgQD5R z&fEKAlC$#yC4Xu)%QSyJy&>;}d)S%av-jgqju=K|%j7;#VxoQsv{VTkdVa^o;SE1s z-x7`QK31@XYEf)Y)Hx8}w);!?k4v+@gFkGnHzs||vby@>{o;+h6vx)n|0vQ&arv+U8b9R{F^0xAu&SvtF@(aE0xiFD8;3 zD@BGHK01nfZ}~CT;o0S;gg1FLmv-en3W`|!I#_90$ekz0GJQ=3r||LlS%3 ziX~4O`)gV6x?&JfX*_3>;~fHfy^s>hd~TYF^@9VxsQ(aWFo=x)ImDf4{K{5h8) zy+t=#tX$?1nAVP-lsl2GdY?VAUIlJ`W7E@6<1U@m|LO{5ana|b%gkrCQ?H~?zB}Gq zBgwPU{agd3cZ^8tzI&o;m~XT>SlCf%_OJQ#`z96S?uoilX3#yvFjH(w}Gy1i}Swrba$yQf!sex6-@_QGi5l9*M#&S?{6BUG3&!ogvd zX0&RcpmBi`(FBdqD|o~b9&gDqFx8x_{_iIIih3?iR<4$y1xt0!Eu}YYk=`ba@Dy+bOj_U7 z+~t6$w4S==TF^FYj|0p8HXA)$tZl%oCMX_1@8ADP|Ladj>Hp0T_EVr7#zRqvq3n-I zaJ2{nF^oq-?9cQ4e`f?rF${cP0)y`XJu}IpXcE3JNy2TTcr?Ul3T_+gYq*S|;Cs;Q z3;usHgoi`zrD&W7voZP#Y8yeLBuf8AA0Q-3{7zrtD9P}C>z)D6QHMI2CaRZz$qTYFao|FctBVStzR7E zOx$NCz_W122&EAo1>51jwccoipdl?zk`Tji*p7hu1!!^jSx6{WfJH+RFvGdmBQf@v z9hV^p2{8;>=Rk`<_rP$-4^hBv@L)#3b_|I@jE0{1Uq}2P?HG0l2Hk@JE)`+~sVMoDsG>@AP0Xv!@ zVLPb3DD3N4hLI41;woUk5kZXL&Qn&4!dj9W2SJj}U>MA}YZ}2o!3o*X$QX7Q^vpnu zz*?NUrV*SXxNDGQT)zt#lxG7*as54D3^z`*S{%~SJZ{WG2zc#-wS{s0Bx}db;Q%AJ zJ{B;XTe|>8LhS`w6xM<$z+of-&wIeQu?#Sp8yf+mxVZpe3=Q9dCLk>d`AM*h*bN9S z!=b(hsUtV%2aM$UNp@Lsb1qg(!CHo!BLT05B0Pv8Gz~GF#vz80@bw62O#>|nYe^Ea z0|6L%77C@HXQAM+1fvFxB~6i#j|Ey1)>6>=U~sta0fYLUA)tI5*f9hF*&&dR1zN}t zF$BuZUr;cExbY3FEu8BUSv#%|1B}67MsxiO3aW9gKVY>8q$Lq<97GWm<&HVaxa$Zo zVhlTc3_GaaXSEcpr6|Y_OkNaXJnmQm2KjryFz&hpjKC;Z%Y(I0Oh!S;&dpy~#`RaA zr=T1J9i#RG48u@Z%Y(Hz*B^jnoPwT@O}V)3zzE(LcJvr_(4G;nV`vJt_LyUyxE{W1mp8_ogYZ)A}W1zhPb~QQZ6#Fov6-vRWv9FgOp26%0dg^Cr+M zB-CDD2ep@B;J#8TSX$hi z0WhdOVzoS23+;V@a1Qxwu(qImAJz^Ub5Osb5CiEh4%s2xJ!w|UgRh5j^EHeB4xfP; z*Y9GW9^}>}fFazy8^EBPfz=YQ7U#wkjKmpkUI!Qr%}El3WFEwzcL{(&dzP#gfwef~ zBPa~=e=OtX!0eE7^8;YVaQEPW9m37;SuNCFcI%&O2Rtmd?q(S`{$gyZ%s>o!-v}7S zjiIa-gS9v}hJu#yxb+OnAYaGu;CaBX=?cW4xXNltSWA$Q9R=lPU~Msw{{wc=crYMm zpddy;>yn`u$o~N?0%>U;Hr!JdZY_zk8`>nq5N`kBY>c8IhSIPW=k5#O2nppr zfI+zr&i>PT3Su~S{}eEayMKzan=P=G;@0*!N$QwXpfGlm@$&si-3X$dHvgVGABNdUv3egVsuJIC3wjO)YxEZ<02 zi@;iFZx|;~oPhS=!6L+9JMMllU=&vi7&(R=&GiSY7K616w}t={gW>uimO*0#suZqI z1PtyQg&|@(8z7zqiHxN;{=O_Rpx%=|0mV~tw*H7XUSVt7hC<0ps_K|U5RjDfWT_q`QPW6(Y;%b>9YF$(Ha8i)NU8{aTki^5vyT>{7~NN)UP z83Nle(E4TAgAZH=a%vu|h2}VeAkchfD5$;!Qyk&uSHKS1hXV}CV*#UJJDNAfeW7>x zzz%`VB!Ff>^&ntee^0RQw+M*g+&vzG2iJoH`+f`7QrtR#KxmXZ4*)|L*p3*(4jaRc zwNPFH+$4>U!QgxdOi7sGJlMAr z2($+P#uuKaBsV4#7(#Mm3d^{@7%-aT!Hny3*fTNQc+PI?as54kk?`{Y2E9ARNN8_~ zWi+IvkTDp>-D6}=WpMpHU<5b60*vC;Wds4%B>|rWBVY#A=L8LW2@W#?w!^qNAz&2r z%)qPhAT0{L11H&oBQ(S?uHOZWAYjIjW1J_%q3eNuVYp}C5Sp78vyAIwLE;0wpJ5p{ z*0N{mNa%Vf!R>nz0i^~5Gj7ZSj6ug>I0>H}#NhLU&>1fhbUinovyAH#*{mIbv>@ma z@VPk(K1&Dfql1hZ9pjuJ%B?TiBS2$lp|t=QbUuvD+9}A6f@(UJan~SV@R$R}%>~%A zR@}UfWYY~AI-|*>VTK^^SxyWegF$nHEi7OL`5clx=Z31!QF8z>G0!pA; z!Nm8!qM-7x_iW3U3h2tN?{pY<@ulC(A-`xJFZqEG`1`{q0&0nKkha*DP)?9oL9m}v zk8M%0buE64vA}pdZrD3MY10zhkmbXA*LOs9_(8;ImdW;dBUc8Ej=jo(5$2h?zI9Fr)t|w87K6k>b!E} zy8q3L2Ihaic3 z$X%wQnV3p{gSuLG-38qB1x~{`Oe3<^=JK6`N#;&)b{FKLr}ZrESjxAmlrQ7N;eOEN z!y1rhpF$k)@rS9IwJ>+P^Wl*3>>+z}Vg!79c3Yu5A?`=!>&?E_)~QDCACAV?izBsy zKSQC;&aX9>&sKY0tkMwW_~5j#u`ZTS{tJO(mZ>%kyK1Cd{nUg3SUw{I%Z^fkn)dau%67PDdKXF7GR}XF>z89DqxMZmZNVZhEdf( zD~o@Uxlc|l5%uU2cxa?r^-mv~4Wp*oy0$QkJ33}BY{N3?oWxjPligY_=3WiC9R+&o zF{UeLUO^=~f1!)AGBR3=UiMK6CT0xnGmE6<9z_2xO2wqRD)&0bgk=|aVT4eqBn{_e z^YvQ!Ek1eF!6o*d@*5#~>hDAptzIav``7E(VsE&`mh` zJ!^pBcn6Os@;Vwmv_9PBa;;$E+I|pp^F|&z<*ImbJe4jG zd7~lKMV%S?ie!H%s(3_KSOmAEu|nnnfk8*0`JnPfWFdvfX^7=+%Np@OmMP-=DdHon z@rzGTGp}XOb6t;IixKh>)JlaIh>NW6t*To=W7`^WQ+w5fK9U=FD~Bi8Y4U~weYYYz zJDoz1N*P!?e@9$`Z_XLyv9=)*nJ@E2{J-=qcL1Z;pO7-qw~I~SonS|yCCb-$=krjPnVJh%{(>M zl=bP|XP7*?pg$Uw_dtFqSgTLU>{n3{+3c2$Xwkk(P8lTx;;dl=C5lfA{M^s^BL$D- zhpaGp!Tlvb1E>^&U`s<&BLf;}YOtx_h7U~VBtC*}dOXe7ukm>IJc82&FVD}u_ulR; zZT`UDtIx9nJOfBz41a&u!V6k@8qIaKVtdd|!X>c!x_|;UqT-pDQ7rg7EcLZbdBJ%8a&O5uioB zO1^7VWU-J6*rgMRZYBXs9>Ws!!|_o>=D?_-QBVR8%YI@!-5KMOD3YTrgX&>;AM_{x zHiqy4*S`8g3Fr?gpyN4XDI@5BIWD2DN5Q2Ds_A=Zs_H~VYHW4%b+MHO;rV!xfo{~D zSgGVia9wU;UjVj*B>9;WHITsBi{cg@4-E`~k@R5%HzFobsiOXE#uIyH-Er&yQjT|E z_j%GfGf}F@7mk+tc2Zeo6UaeTsRl94j-{(!Q&sH6i)16u0VVcpxO7Fe<&q{`S|q^6 zrvUibQ@x`+87i8)M81xWDB&8DU8AgmKx{4XY|0~Bmw?yj*IU3a@1Ko(qV%OoaVWS* z?nvA&etsd%{FQr2dgFqRm%Hsworje|JAz*&M8hZeaGzz&Gg@$OgBb4~Gbk#C*FA)} z^u{irr0GT;h8s&S9comv5#C!iW>u+ce^A~@cFeKz*9dTK(KLS%+%M`>B}IcyVKVmq z;aU)pF6XosjasrSS;=0X&63Rcwq@#6vWymvW;OqEb^ClcKAwgx6C38rs6iwNn@m3j zvg?BpHwRE);D+X7^YP(F6E;}kN4U$I!z3MAmtPl7#}C$oTt$xbz=v2-2uRF3N5@x zV1bnu2I1c{`KU`JrY_83b3S`eI;LZ-4dFl^JnYY|BmOci1)<%1jVU_|HwnRw{_2+< zgtb!&Kv|FQQ>LN%ecU=*1LxDcC;yZ)27{fB*iaOHIskq33rqD-wdoe4@V8_zD>rp| zA?A6SdOk4C5VymN*o)S*F*6ylG37IY-DIJ1Rp6gVev;{xBAY!nTh8hk>|_cwXPrYt z3(}Vo0CRn#hX0Jt8n=Wyagrzu&f1uH*aQ|ZB}k&CWuL&lFE(XxxNQdxKDLt2f+PN6 z;Hv3JN!GNZkIcTv;}IgjMjmzcwo0a`_(Q!t54?iPc;i{B_-)_S5NMeMD;v`@MC8#0 zp}%tfSx9)PwLnYhikNJT`+2u|@3aC_+7FNlLPb;FI+ zwC>N)xWSmv%{neaM$k@RQcf_bh`dL^G_EUP+rOC2(G;gr-yAyb9c}l&~-=m1f($ zQW=1NJS;M5x!o}QVy#gVmMo)?9e9XtWc`YiuZ@aV0NB0p9Y7><(Kchdb7`>x!l~(< z0Hg%*n)wO#RD#CcfE0ME#|7>rs}>hEolm5?qgldWh>bd`kAV2kYXyuc1eN?6FHGLt zW1e|K(2R#vxR2dUcptgJ%ivM*iB`E||84+AFHd%5%;&D|-2SPrL+D^}?WpY$XkV$0 z7Ri&)V*3uMzGyz{GZ8o1#C~=@TGOL3S&4!7+kPCJ26#NNwe>Zdj9s^1#=11xigB7atFNnBYGV{Pekw^?yf= zUmRmfqX_F=;^eReh9(LSN#G*WE^6(rO$L=9NW>Edgnd{qqK7RVBR9qJGczcd;J}Lu zM|4eXf{G3VNdXOyC+hvR6Y&3K@LIKGPHraO%B`0SUtrwJMlaOxt0=9h;j0)nJZS|^ znJYDvtRCihFf!?r=3R&3zP%f32e;(AGOEYORvVW-Yi0B;fZ;-X26SGLN#fZ?=p$)i) z8Q^=S((ngK*xZLWvK2j90tW^ej0y!<2m z7kD`T1s@h>Hl}~im{|UQ4Jk7*!!R-b(?ZHjj4(`${~g(2*#0a0!$SW)!}%YAV&eM0 z5UNId)Bf-ugnHFLiUFzurbSrC)Mr=78b4WPw_o=t)d$7oy=~>Z@r3(g6drPGAVy zzi~}>uE{B}k#O28A+=Z6G)wa{^8ZKybQ<#up_7OyO zx>P=oi6-}0y|d>$kY*1V#WqpzO8DqM&gTxAaC_M0?frM($s>`{nB!r8bK-F;U@NOT z-lQS?oqIm^_cy57zwNR7JS3`@VYXrnUZsmO&`6AJBS&uv2DzG ziBD-|fppQ8oB#F0qmQxwWXU8hV#HL)Mky5Z29<6*yKQbDM z1tjO}c}v+xLfEwK_(Olu;+bH#lF{sCB>BdpyIOwPl@oJd5GgSKWks~{qZ;?@bq>id zGcvBNFTolpdi)ZJ`GoLX8FawO!qP6HChGaIQ|CT2YivF`k%@#D&T65X8ZIJga~+gE_ugDiC*h$QM$b- z;pSzLMmDTvhsDR~!I=4)s>q-P%XruN)2m1GL(8 zG4AkswCwDEl17sDW+i+ zUpHQES}&*D?5Y$mxYp`wveL`U2?eWINRLe$Ggs zob;zBeMUK`_nXm=TKfQslJqB*4A1Z`hm2!We3v$1bl*Rq%t{(T?Uz1EhS_4XPcY{f zc!8>GNSkiz;#)M?FR1g(H{oydCkeiAPnRpi(H*iltOt8@%Ue{_x0^QYRJ}i3H|~gU zf*=~c(qs|s#nQseOKUSu8U#J>_qVIJ7#s>3DACf45WDulMa%Z`cC5aiZ1sY zOj$JbYBVu@z{C{|)543&Z~9gC(54YPq%W4j8gPSy0cgF?^I%cSSKnwEv{^Y{gIfm^ zT>{Av;C}73%_}EUSIVzH66|G=0J{1xMuowo{^y>XFqm``ke1pX;wX zF%9B|*sW@MCk>RNU*^H4fgA{x=ZejDstH=lI9S>%Cx*|D9_q7`rb2OM{n*NM{@PfVEPGqhn5~1fu zX5>1laC*E2HDkZN!o3V`S{SxESQ!J2zD7TT8^mb)#M)rL2KqSP12`0UVu-{=KMFKF`dgwIt{-?e#H}1qlqx+AGCmku-2Iy$37tt&@yskHQoB*wiQ++8R zEg#oy{k)?P^W++SmpRZ(BXd3f;JTm&xd}d{fElAyQVV%ZeXq*p)De~ir!|s#wWFz( zu@tatZRkpN>cT4rZfS#lYaPSf@XR%GJ1DqKu*LO@KaF;(6Ax9HaF)}>$_^&j9pX#n ze~rBvO7To|#WYkd?Xkf&`62^Rp?T$mQ^@cMJf@pJK|$76YJLrf=&=c7n20E;`0zu- zVPf;nsv=jB*;>nBQd-}VPq&%&Sr?#C#o9)#d$I>$7JwQ0 z^SDXjGHER2poq2qB8jks!vdDNLDs}9sdX$yRc%R4vx~_UCu}hTkj6-qxlHB{WJpKMOTkt&KWK(jTpDCeU&Ft-j@|9)@N>g9l>6{<98%O>r+#Y4 z3gsFqZ06e{;>OJsEQ~>uk?HD<@^c8TM-5*|?2Lc`-8!=H|CN1W-E$WLb{vgD^V2w@iZ`4J^w_}sGF4lH<7VX|Dtb6pShVbu3c1z2_C zLA~ChHWtt8)KH#a>@n8vx-?#6r3iKFUZ5{-2R}+5a!0nvfRb@bnlI=^oR@`$jJcBg ztpJQ5m$`4z!dKayVCS?(?0gSLIOet-v5d!o(2-w$rRracY}0?htLe{dEQzqGL#(~`rO-xq$qRmn=Q|dzoW_*exLp?%U3kgQ|~xZI)? zA!7~HC@k)abT`TQ&RrAB(&N6)r%c_US5~+Ul+Kq-M4_&qBHWkyCOv4-2Wpq^Mpy&M zFegN5GuI@e=r(2pb~R1;x*srZ;bm(yR7BUN$rE4$AIp};;|#uZ7K^}B?6%89k~;|$ zCP`)SFD~u@Fcb)^_)@ob%n|e$Oo4 z05kh~Q_(L>;Jqm)I~M79H<%rvMeBhRDDpB#(UZ)?c-g+saaXrX$l%azilO@=!8w@R zD)Lw{(Mqe~W|CB4b-|+bLPs~~LM6P4i>3GI<9IX`g!4IhcMKIN_kVyRlw`@W=k%o9dI%M+JE1WW>!>2ojpyfKB)MY2DvZ zK;-m<``dXd#8TJ%^Oa9JUL%>EzbsVZg=!WS#OTsvR%>mFsUZbY z5g`}r;*iQH$L&sXb+dGS)51q(VMIp4Z0NkC#r%z~yFJvjLjO=7(R94`g@~ z7JsTc#Lyvt5LL?$Ki!bBb*+O%{c9Z%EMk;J_M^mG0{XG*=knuU_CMKl4NJJZdQX~E zypf}oJn|A4IATiD@9P<{Y@#D4QQr{^tgve?7Pf`cEkP#KO(?39&t9rveDQiKd4OmI z&mFWUMng*9oAj&u#!IL0em&QAOd*zTkqhy38qK+ec5)+|Yd&S(Dijm$_qe-f*UE@} zb3sMX9u4SGl0Gh*E`gT}w|jM(U=fQwGUrZmH#{%7?Ba4o48V0w&TiP@Mv2JtM&&wX zkrmuE)_#j%t&q+z4;P+JBH}XS(+D``*$Cx`*((<>&Wfg=8XEh*h^0Br9tIWBo|MWC z4=4`js}Z~ea_a?gp8mc#)b#02l3|l6{SgAAakL0R7&HzbM90=FEN33cJ-2YoCXZeT$0(tsr=o<0ptgACIeQsqIea1;-fM;_=rZ zV6#HLzh-*~KtOeIA!c%$(-&&8Bab=Gc&p%lIQP;k=ufD{>_@~D(EUPW zs(QHl519W`&;OJ;Co9*#hs<36L*~q!FwFn`N~z4u2E)wuugDC;{BN(b!!WV`Z>F=b z{0GxnSpP3fFVWsi-egDd%dhL}X*<$}CigrgPo=gvlq;ofK%KR1RBI*RL@^&~5uG44 zTi3ev4+KuPJ$K!15q zyO%?K1X{u5oBtq{a%pS2FH3!0A!Wmma4ltp?v45c7bhPmtAYI&8EXKxb{5VxKqFSrk3j#ln$MM+SIYT(zp!BBkhWA zoZY?4IHdxAlkQBCScw7U3+AMm`rSI8u)z7qQI2P3z##F=UhA3EQL%h?2YQ{nnryd( zMa3Yh{T|}V(OfPD!*ICPrgFzwh6`BPOXLdauF=|Ti5bano$x{#?(Yh=`1r$Ew?UKi zNd4@x2A}Y|DJ1@mvCRcv!~1DH0uf+Rg^302tDIGT?oI->n!`rovx`VlHL7Iq@jLoJ zf2F?rI$CO?AvC5K4lciYJ{vvVy{Wn#8hq7%h;hT-h!SRyl!5Ci=4JD$KD(Di5%@>tI^njHNhPi(d*WF198$b@`WXkCmL4tCZcng&TjMN35>BZn5pwxYAUZxXoMb)4@(o7 z?r%6%03>q-<+3b4ZXZs}gUnvRfRG=jWTP_-BvPOi_JELnYCZ&H82gUQq$P8>&MqmP z0(xFiC|ibI=kL3z6C-64GG-eAE&G0=2Cb{oOML`5L7nx&3n_J>$n0NrpQSw;oQKrl zF!iQ91HVUmH=vhvfKz8?1Q5v;j98o>SAau&e+Lyt7qL2G%?IIufDq0KiVJheINKbV zGq8=AM@OwCt3e&0tVU`f<YZM;hqtz`?oEt)RBXGD`8xSE`9) znV|w1Cx$Fc6P@m)%cuhlOl35W*7pzN0{J>qnS>s+R3m{}$5+%Kb>`h$i*oMB0)2@e z65LLj;~8mj7}Gvl_tf&R7BG+*yRKQ0<4f1Glo|*0U(<5>)e#?2hnuI`!x9k*;5ODl zntAmC$x~Bn*q)`S3#RUJVULnwL^hc!GVs3G<8>9!R#%<5oJ%$RK;qev*mw@mwOnyC z6K%Y)VhphB2du)F!@=fLNAr>OmWO;tXMssd*{l8;6jBT$#H=$I+%PmYk<`1jDAHS2}d+`q+92YHGxd1q=uNdIQ~LL2wHZUc|4=< z$9^2376e+|f|6%r=<6xzH>XQv$SiF7Lr31w9$%G7Q{$55fl26S8}@y-zvS81i8}d< zHNHV^QMlWQ^s8gjmRqIES%uRgf+$fRHd<;7J&ETnT)JW&GZkAo@HZzt4U{j-m6r@$ zf;vY~3QC)P7Vf@OEydltB5#fQ2*glIPyzo-PmwUMQ{e#?m1ElyY3r=ulYOA5GcHM~ zsh6G#eiR`QF&i3=kgfzeo({L{6H^Tmh7)*ddE?rZ3syyyBzpyMYiV6M!u}4S0cW+4 z1Zsq(FEL2vl;ju*J~0X+5W?N-e5Jk9F zqm?9IqD(~>GUpHPEN*s8sVx;H+Y-p|NgwmHges+WX&KyaQ`Oy7s^KK6oOZ?2iU^CUqJ9YYhs z8P&%J=t1{6dQ=hnp5g~nFD8jpKw89qL9hZV)i7q(jH$cqO<|95f!2n|mH#IEicPHW zZcDGHy>6p@$lkUeX@T$$9)Sv{2hFOMLdB4HI4;Qg9eyDSw5|Sz^n)v&3$)HE`)6Z( zP@X>fb%9aRQ4GCPnLV%K zwoRRrr^_N}%A3FawC(@;#c!i-ZE{3Y9#fi)FyGjpnB^~V9eY?ll9ksvv;~d~97Y9# zf5o=jXo@lbA2w3Id(95-E+^=hXNu}_-FWHOSqwkO@unkbyv~7oA!5r%RWFpYDSOlD z4ohw9FZ+yfqLPw>DZu-2KT08BpbvIA&a9t`pZ9}(851V)aT4n-`fN{eiJy?iYXTmc zW|!vON}RC^v?cWioL!WVil17TSXF5eh|7%Z#_Kor0-=NeZaI62AUA5d1n8gllp z%J|xjV|$iItY<_lGF+daIkRv;aSkTvcPQhwXZil_Ctx>a}sCK4)j3FI{>3%Kf% z$XVHWF&V5uAN57RzzmZKjnIs$tuo7%dbKvHHH{M58wk_VFUoi_E4Dxp!g@O)B5}$} z_2Ln!*!YoWVZ2*#cs}b{bPam3B30rrX_-UvvvJ!pc1B9tKO}=993txpd}*ql5Du;5 zml0u|tUg!^kk+o2B6LnD>V06KL1&W8F&TnD3OKQG>|-oNX5iRf{NlH6q&!zp#=3hI$mI^c!GK2Uw4mxub` z9R&$XO)xtY_u^oAgt4xHrkxU<5ftP}b5@1K6j(A)8JG!aDG#|N?Are0H18=p* zg*`CJdHmY&ckJsrrVF;S#8+ylu5w^=1%9Bw)vY<=ef@9qoYNgYj&?K*DkKz-rV%Rb zyk6Pn=>Too5aXcksJ&cDzeNkNTB}qP2=sWpE5*m}jKeF&d-*@&zs;+ZZO#22o;qU; zIqEx1Q%4`YP>>gWVZs^%;?T0$vFbL9&84dLJ+qywt{QgmT<18+qwZ^y!;oWuM#YDn z#%G_u6d!CZuLZ&-Sft8-#r-PS$P#Md!Yn?KD0_lEWbD2r$dK ze#DzmDh!?3t?znjS|5@Ej5ik$0?Y+)EKK)_bhdK9w&dJ3Djfg@lE6 zGa=xvd0ecU+ave|K^s`6f|KB~Ih&WTtx>gOT%SMZgZcj6Z>+RbNZIV(wZ$tgTps?w zTp~{OlHfZtl4WBFrJ!-ZB#1aOwwGg?_$&GaAmV+igV4aYTmn;EK#e49PTS`gDT|v; zNSTI0QfrVT0{Hz_QLpZ35vt1Ja;|SH9#+8%k}tIR5eImM-WFbTYacp zOENEcNibAGT-XD!G|gDze3az`0K*Y1WGreE5o6-`Koe5-6&UzE*TGAHt6p2%)?_}P z5&bUCApEch-1!KroaVM!5zTbECGaa(D}&5as2&BBzv8x+)PFW&3#%!lB{oyzNI=g7Ws2nn=nHqT+B1pAD`9%a}I-=37t&-Cvs8_!oE|qfCSEmd%h=b5mQ-4ds&tFN69&14j@J8tojdr*nnU<;C{@got z!ZEabXrBzjzQlfqbwjbkGSF~l@S*>l-<3ln8Iv`U7ts#$`aDrs{5_$aI(g*I2l}Sw?6qE5eH+R&m+%q-mm$}N`LvJaAHK+BG5 zF_FQS!dK9Kg8!iYwDk+)iwG#9q>ziD_fCo@OFDh!+2t~owM07%IJtH9dH6Z<6J2(A znRNzqYv+7jbIaYO4{t~Lr;7)R6-i3!i^g1!^O8d+U`(d0S2bbA{LPsQy+hO2sg^hX z;u?qjGIHX~-1fb97vJrP)Zh1^G9g{Pot~LO{qoBjsW--%PLZt<(yZ*&uQpqHHtVL| zR9m|G-0n%p;`ss-or;STlU^WZnWWFY#@OMg)1*@tPacqls-m!du8c{O)0;G7(3p>? zjGeI5xHetlP`Y){U6yz)0Vk`*x}6+|Lp9#n^VX@y*22m@=Dm+)*WvLxnV^)KkxC++ z&tZN<8Qap3!|RXXS>Iv1#sKS0y%S)jwrR1>K^1zgjI|`-YyN;9m)IOvTMoXc*T;0@ zX|MM0AIAT6A)bA9U7ey_HFQ|6s0}M#zWnj=)f992xEd2vH7R&cOEOT&(V3bpKAxB) zoUx1GV1QIpx<`6kZVu63hzmyEy5nHh>tORF)_dCrIUm6Hx7a z3+rp4;@-V{!Md>uSg%OPwI3-VCLa)|ym8S`&lYR~h|L6ssasWD|ELxF%9c8j9i9h2^e10CI==%QI zwZ*@ijt%};GB5H*Ww{rw5thozvVbl;S=Xzp8NtFMqY5{r&@sycBW7=C09toZoJ1!@ zr5D^#!!lm4-@IZ7nsrewzDL4J%y%Z^VK`B+o0~yh3=Mu6u&vq zjhN%)n($9n%0B7QPRlN5kC&A+R}Z!`?w1>%Wjq0`O54HOzvx%Gg!uz{T! z5_PO_#=2g3V(6^q4Gf;A`0*=J7BoZnTr7S}y`=qwUWEU75oi|j&y7(G6l#~xnRk1f zB6+pOwtp2YB$hfA%&-BP^rDoh^d!au6T-Q5?^e|sRjQJQT#VU!eOe)6H7K{428If; zt*7xg)FT~aMpMGyPT1;5wY4yY!l>5tpy%U`>e~`|Xc7MU6X5~MaG-z&`x(eva$_J? zq9^UvYJWF3m;2mgEWw!3gUG(HBo2>iW2gI*ug9uOj%YI{;PA$=1}HQt$sEPW;J%}& z;`ni89CIrjBjl*oW6&X|C8-h>tLMuP4A6~pC~4Pu?GnmC-AOua;p%sf3Z9}n$?_ZdQ%~jUjY#ZG=9G~zg*_LWiT~mV|mjN7Yh1H^!;LF~Nl; z5$NZqF5OzaAaF&T6vA9J!ZT`vWvV8(2>S?|oW;L*#7>T+@}i4>T%MaUV)cQOjTR)M1b z`N@OnZ8)t|VKAY;UhCv6=V7y=BE?<=P&GxT1qZM;`1^4QM(e!4<3s}}-;){xz_EoO z$d=@u%fk?&A(hdgf7td+XE%ELsq0WhRgyjNjEVMq#Z~LXv7N>M2F1KXC_iN8{Ik6Hs z<*yc7oM-{Kmq5hiVaOjLcEy6Zyny%Ji)VktoH<1Z$!?W$3;?{9;zQGt@V*cizaqO4 zkoOgG0?9d`8T(gU0@dgFx$63WG%rszO`vp5W6|kX#)NTYBa|ve&_pXm#4lMr1%8!q z#d{>gB*Wjg)hudEfEK;1WV{H5!L}fX%`bjS)Ib!GTOHTz#A33@hetafx~m%T6=M>h`}1$LPA3ikUIJlCm=d0%X0&lZ=vcI`3s= zQ67_9rz(NTE=yOZ1xKPJyKAA^cgMhxPN6+v3jo-nup|sw%qX(T6!q+?;TGvaXuVe$E6Wa(VqX|s zt1+(f@?5m^Gmv>uz3CZP!4b$Nc)kB{CNC1jOt>6yPnob?S0qDpt>IW`&tpkd{|0si zFkY`8TT~9XQ}fr=J`2b@@iz_jmoDIE^iIzlf`SvgT6k-MO$(!pLNHBd>`xVU)EHqL zUfu=ik3~X+Np>P+X9LNeKo>xx=lR9$T4sQ(7j&>#`41KUzoadQ}$p) z+tM(Ft~K#QUC0lLs(^xq27no#L;=1MTAq#_wJ(|ld$XWXLht4iN9PN2YfS~cc->~L z0VoPwMC15>1bB!uVpuP$*?UKaYtDdvIv6hu-2f`I;rY%ZH{N@P2T+WiLhs6 zA=5+gfl1x({$?l$wzWa!qO=p$B$JfY*JQLww1dy-aQgCd&qR=}+>IuNhFyoIuaY25 zIjKJeKnU@C4Q^A^Fo4=?z3oE`+eeh}H>%yfHuuM4F2@Ch$zmt%7idp5Wtx5T$uaH7DJSlcaq=A1N0+#&N%{XH$-qZ z&6pKgOkK!@fV>nApduM){M_X{2@a*v^_`_+I)&R!D=j?b@BK|W^F&mFy_Bk_u}u@^+TOWr zpfqsph$=AevgFrt-Y;k$T{GfY0ul(~>158<8$!*6gzFYO1T1F4v3=M^m`5ljBK&Av zUh<*zE%a%{>gUmFz!vS$>Z}ti7=F>Hn@Ec9P3ct@Lr*|`)(@qz1Dt}Bq&$@v*F0#D zCH#95e;AX1SZ$K(%G*VXn=QDPOLw3G^B*r)!BjID6R_!I-~JFV#<^wz zamC_~AAXY<9&PozSJ$}S>!Ae1L?>775WPf&i%)6Gc?pwQ7aCB8TrkO*qD>ff4#Z7~+9$rVJuB)}x zWpRIvOBIy`D0ZYB_lT%Hb1~;>dP;oG+tEyV+{os+B(IyJVlLZzt!4S{k3$W?ceR_q z*foMp$>&a+d)T42(#|QN^$N9y`|uYGU4y<=1xL5jOqV;;V~r0*BFIDSQ~KZY&Ufl0 z9*#eH+V-%NTiCqGf*8!dJWJKfEMT4-V9HNG*kLY40s2De?gFyV6gl1mCAhNZlrFB{ zp17#}>uiq9>!elNb%hPf2UYxHs<$1A0~Y&}M1hAn-HoDO-Bq2hu6c!G``lcqwXhbh z!|j`zE@Or<9cC~w>wdequ|rq!cyfI{09q)~O7{O4j<=RHlm<5* zeD|_0@9vp1v=>3EuL5LvX+*kC1cvFIf3?}P3^M+;OY!;`JGwVp>I->MbaVa)&kQ`{ z+I!1sk15C3KKOzfFlIZ)~oR<>ukd|p1bz{IfQ1YA(VRB^qnr_ZGXxcT{;6i~-Cz&A>|f$r{r zDU$IDvxHUhdi>$-d-^z-=mmtlYjHnt%b`q)b!}CJjdgLUt$-cx7=~#I#VW|e)`1`x9x_U z_+gN~D_S>U&j)$F6hDWexSH31H8B&n_3Z2eyUjM4>cLWY;_#7*7Qk&FYLM^i_aIPn zHXHpPp#P_{|NGYg*Z;Qe}SHr1%{R7UsGlnHs=2gdba;u zuV(u{?N?vxOeb%(BKO>?%wbxnw#c9Y2?aa7*E^3lR2~Re;Sw~~qIrZ@nOTS9rr_4C zMDPmflg*xJNOIr=fX@6#UFInBkKrT>{toE*>6o8TPBVSWe|Kr&dp|x(4?W+#BB-)^ zaQ1pw2TiYgL?x)u$Ww`Ioc~qVEiE()Z3lKmR%Zug>5_oRv&^esV@1|m=5zjoyWX%8h zV&QWW#;_u)sw^7it$`^F`}7@nRi$o+3Y}cQ%@47?Hs2rLn-yk`embX z*WM}JDS%7hws+;NUOLm+8Z6}i|ISfm(Mu(@K`i+l{9nLK5?h;YHk=I^&;7>r zCp1E{%FyT7`PK+RuC)r!657fGwsd3(d7QV~n0_`+V%#m+eydm#0X zZ?HUtEGnYP)J0cu?=0l`6Pl2fde6=+4_r&jN#&RPcKdN`_zj~jiZ=XoGbG~D8+00S^g7nY6@XVYty!b+Z%Tgr_^@#} zmY25raV{{-j(L+1)%ZHS{?p3lR?i^!PgG7t1Yf5=^G4paJ`gvQlSZJ1)dNF=mL02s>9AB_RoQoh>uTW!&Y2A@DcS;AaQ6{YHaSipzC~a&ddJ@!ad5 zPLf^Jyp@m;EE0I!zZgWzhcupBFmP*ms8!YLD;^}kJ_mQ%a;?^8kVP)JK zV`Bf0v3rWH1dP&z9VaI?DzYN+qP}n#!0GT+eXFaKQpVlSI^%!bGz@qi}(39 zf=~qgt<dP?W&j79T`5rT+Y0^cU4#*G4cUaOeS`3iniV8YZ=aUkc{R9%Z7^K{NtM1WPK@`6c-r2ENC0GYe8T(+ZA zLvf6(Sb}MUlayl8%37w&*Ms{8uaYtYd%-@Vp@SY}i-pZy6)UM~U5)LCbuuRow;=h0 zo<3sfl!b&GSl>(w4dpA}LBSU(>X7-|j7Lm7RCw7KvQtTAP&S+}c~-Ij#Cok$ikRCo zr2Lv$)5y>AcBf+6Yxi$j?9;WZKpOM3$wj4p)pt?gWeNF+MV*u=k~OdP54>^$g#^dc zp&VbcjbS&qa^u4EVIw81w%O~1(wuVAvjOCw$=Sc^T`-I=wU-jNxEg;EH^x9Hh_p%f zvSgsfzL-W&0Y#3xXgEAoyS=)I%4Jw!G8=fcXo~1PZcqO2_VW0Ec)X!DYRvlky?8L% z*$<`$r4t_o^bV?;kYcwcTwCZVs;GDZtjaQaXw0PqI3LDe|9qEy~ARfdW1^lM@G1WE$v(COP9<+?``%|b9o<|M_h zya8_h76dHYuSCm%4GD7A>5HduuY~epP281!8P`MW$cyO~uu5ic@fcOsi@c+PtCC55 z?DLDAgI6KNLoT8-P)zV&sZE8s4G)!KbK1d(z2dV@HS5pq{Mm0 zKejA?y;cv<8jHW2rv$+8z4jikT6!?w#jiiPEb)1Wg;3yu3RU@~KxSp|SM7b#t`T2* z$)a(V(`v#A^dA4#iStv^@=I^&*bzNCAdt4acmWi)ZAwSKL+_3va|3S;L_jc$^K`dY zyWjhP;~Fut^{=i0P+yr8r)|Q|d~}?SK&8(@Pj{<@ zOW%o{wK=hZf&A0K3#_@L_m(q9S8?RJ#vOb5YcYwLE?o*sVnirrN=+Rv)L(ek#N4)b z&=K^wrLdNOH6|?!fNpeCd2voX!Yj+X3jw5EBgx)L8UsBeh`muwO_45hfb%14EacyN z%UPXl04*^H$m)I1q4v-0lhMold6EcW?|LjMCd+&DwGtd?{4(A6dGgrhc~TSix%PKY zn(3@DoFe~si~@Ja1e?StY^6Al42!PV>daIlhS+|7!3Wte zWFm7Tvf*Kpr(td@8TD5fsa~j~I%T~OX7Nmf6e^dtf#F~8l%i^_)>x26Dzijcj@jB> zV-||@3Z6yomfrD~uA4q0C|8%x*P&Hca{Z54g7JEPU+C;PJR+~n{MD*@;)Eh3x0Z>Ab547BMVG8vKsR|i<~%$-~XWU8tRMDc#vF&w~v%A zdz?TKV%9{sEx?C3A?kBQ40%CIb62>s!GO9su2+A6yRuhP1{2BMbYz&<^3pCYJfo8V znw(YEr+#W+2jcSn&XCWJ@--qsh3tp&x8R?@cjCm1yZebU*s2Sr0cx5Xze;k5ImS22SwGcsil-GqluSj) zGH(H8+YUArcU>d}nPj>vr-3{8a)I+%F?!)0@5!lZxwLFZN#6$VmiK`o^0-@4c#}-~ zFE!je;Df!}b!1Y)y%96KGwSzVeS{W5`W(p~SKwuj6`xy34`gj-6cf7X8UEQ%kcDMy zU8Ckh7tmL+Bkwozt;x%**j8{u{|9VBu)ax!Y}DCcL6013RshH-8Fqu~vX#Y~1v2ay zaaW?4X7)k2y}Ucqws&P~bjT#@zn&Uz0p*S-y4l8ENc*tW2XlJO1IFF&%--7ZOV+(c z?+)0&2?D>Ny8`WAJNHD`xqz+(9}J>_<_5{n^JSK|{iBGKAFvnhm(>5^8SGsD)u6z} z@t;MG|JGli%)tW7@gMUN989nr|GD3Q9hUt+1}Zq%U^&?SZ_nW1{vV#f$@Kr?8Ou7` z_M2-c{VyuWXK|R0GszJ@(`hN5I^bFsDO{T9Qi_VG_%0e07)jB|t$rcB(z{K&xd8;y z(OcJY^Kc&2_ftPpoGui^F~N!772gckv;6sf@FaJ#KU!PR3idPpzG=sgM<>s+{kV|a zNcSw}VmMn{1;1gna-le5TGmry2<`oOV~o=&JpY+{VJ;kYQk@S?U)w&vH{6)d_YekC zKI#v1(;oS>z&*kJ{<*`5&v+yl(;7Y?8#K7n*4bXY#~49X2!jxfJECOsC*OzSV932;&Q zv(q+o5CzWUX|oppQ$iSE7~c=-LG&fno7_S+Z=jY_p52gY>s4$TBa&|Vo~Ds8z*n(L z?3iC|5%7?j#7dB+{Z};^BIimRIh2MqgR=49ocDl^k!?tA5oza52}m-6yrf>^BDB1^ zd0MqYHb3TGnIYuHyM*g~sFWLQ2@H`y$xw%Xkff@v$Mk4CsMd#Bv;@1vXgbigHv0t-!_hi~zhxUjVAP!ILQFx{VVP-8X)Bf8Y0d8lQccEl;((|{h4#jT&hr@F7k-*Q zsrgg@x@73~od=(ASn^K05MEuxDT||H(nS#hc^+)AOs7A5isbL5TxyTi&ZeV+2}vslr|e#3gor3I zlSe%SCR7#WzfhE-jkwpF-$8=y?pLj9kFJQXKoX==06GsRY(?C?bX zj5)EocxoBrabdUTJoBwR%Y6)$W0F-SV{yz^Ot6;L5~%61h&MR2(>7{94cT=71pmcH z_eXEH8j6dQj^x9R@Ro`UI3J9S0z2o18Pgc1l1lIngo~i0&Xfx-r8Gw+al0$0F4Lw& zvxd-_;g*GZJOna@_p-6Zx{g#HFpr7Bu?{5jX3G$R%8-$y!*&_z6WdeI^Z5{^G_y*z z=+oqhHEb&_*Jq1f5n4fIppSqBt|zi8U)92N_laB>uAd^eGma4|*yLSrq3v-yPUO@cERKD?j%!#1r?5ksH0Iw3 zLme1@FyI&}W{~C&m_G6!EUL&m$I1RoknyERHg-cpw9SDR7R5^76zfZulx&D23Pvw# z`U*6eDHj*!Tgoi>bgiaG5#1u|@Bov|;}SKBI~&dANHI(=NZ$<$erMSd?Y$+%KhT28 z2Y=V=*9F`E&YWv4Lt{2t5Z+Wu##|qr%^-&p!KfQmVj#w9-A#U+bP% z^s0snL}z3$y4#Y*qP(Xwt@Xing_d*M1SO!(hE1(pq9{@H9)~`TZ$jeYkda;-1^f}3 ztJSW%sqUKlJU}eh9Zc?1RShQy&d@I9N|OG5suwrZl(O%!t0~oS&5^4UW(-4hPLVPH z>bA*nq!M@|4Nf+p2ffg?)P#9huvB}3vhsCy2m~tmHS9fxU862QXg1zfC5jdg!z#@J z?vhxS2|L_s2$ZQoA4@v>3~Z<*sDmY%xaEOAaYK`mPZU|~A=16n_X8@u!-_OILY6R} z%Lnpllx%PdngF)4oZxl1+x~TSKR@}gHL*)biJWxJdy_;0*(T3X)B23Dk}n}Ebh4(6zXumh~~N+<1*QRj&S zAc7&3*<}a`Q4?4YcN-gBv=pS2JmxqV=Wr zqLS71P&8zuEk|oQgycS=lP91->)vj-K7!?^Tn_rY`;59jWs;#7n281HCMa&v@f%*xr8MuHn~oJJYW5 z|HX$U`OAr|^_W?wN5aAS?^_>0n_v^K@>gqhTbVcGa5+pWHMyDi0l22v*F|R~JNn=1 z5V7K+&B3xtQz*wUYu&SS#O=%i|C>jm zACV}5Y@VnA*DHU^-pzVHGUcwTpL2eiJWt#dcS)C}fh8RB%Jv02aaP{Nbq|Zfbj!h` zGfOC;8qG`;{YwMk!86^Egs*snSM)3#*uuQa^}~hiMJ`&N(ayO~0yexd=)ACc#uk$} zW#BLu;drPrOXI>3hi5w*=MjxONN_r0R0_%nn*W&QB&V=7=!ueCDUl|%i zIiW}kFa+8Al z^%gbUI*Mu&JWZNWN@5K>9JB#Rai~fb7f~AB*AiNUyKu9DMWB|nMHb&KgI+1!k{7Y6 z3>Ih`11@t!LeOrPmYU|@$6>2~A_7+&DP(!z8@D%|g6DXk+{atJ$vI5ajCIDyq-k)sQm>=D<_5*fsuy-~B=NpEXyhOxH%I_e#== z62?8$w2_^T3$g0>!dyOxS)XfiIc`K|KU>q~HuAC;lRMgPj26Ot@LpSX!~GOlN(#t> zcG21<8L9=NV|(}!?lE9FteC*yfgw^QariSp=gLkco`OyeaFTc_{inRc*ZE3@HOZR1 z_HsoOqhyadDf_YW)9`^LHxth-0s6>{NDZKOPk z*(iz8yl;wGYO#v$>f)E?99$`J2|BUn2Cg&PqtUrH4ID$M zLn_^J4#oxfJ%Wl!?{S}Mo^lENa&>EhNjv&0uUUI%f48su)5ZPy^m2@i0*fhXKK?p+ zAqE)jwY>gm*B`0WI&yL`YPJj)l^!i(l%4LKGg>L05d|mMukzRecwG}et&@K}7?rzd z8eF|M>6nXtoEoELP~9i`cANEQ^_|K0;gUP<7SIqb=X+ln?v?z|Pv+oTJM@^Fatbj0 zs6P36F;}LN$d;*ClSksi8Pynl<>r*R>LynkYU!6!P6Cf~uWE5VDjOiVhU+46Vf!lV zSmvfV=Emj$_u9~D@g=aXxJ@u=&xYV#4!$@sVLQ-mEXD`%i>^h}A}yvFEN%ItJJYJJ zzv*FXR{1Z8bq(<1X(dyntlXWS5pr!;%;;Cjd}l4! z1nF@YM-d`|j*?F+82!KB?%&Oa1Bx4vtd}JVt>#%&8xxchsddHwptRBoysOrP zL%h-+l1^T_RLvuQQE#;0&9lAVNBAT0XVZ1}*kF42C=$zAP4_KDw##^^A|@)1+dp{R za}V+k*cVr$V`kJH!}#td!ZV{~b5snB)c8ZngYdC*+++;;_NURsiL}V7Noym-O~pIY zni^zR(9*gfgfMn#+Yk7D>(;k}`(J|b`nWvlu5N7&F4tTJ>Yg3EXWa;UU0<2tS0bF= zR_1}3Rb{;(hv!djrEv=$i!8RcQkM3ZYJ^FCK?Q&RaoEu`HqVW*-i-O<$SyfdEys&D zOd^aXTstGn45z~GCRPx2tQ{*Rm&0Ynf_V4>pf#aVPBb z9`OGBM-nt$sezYaR-$k=pGsGs@%jp<_IM_E^PHgIm4H!23l)qqQ?{KER`Ozau!AdI zLi?vqAbEo4hT|ZK&M+fb%pgFKBQuw5`n+Oj-NN2q8ef zWM#F4h<3Pz(Tq~h`~yZu#E=HJA;Mxe?ap55RHsN`2efgE&pNVgj!3xRc!pK2M8PCC zINRROWq^Wg?5TrrElmA9#y!?^GQFg*gPTuae8eMS0J_~=yfgZLOdK%9{)3vCwByW- zvCuKKd>(LE1ZAd4AAh7Et3wc9ten7r3Hl5nP>SV(8|!O(@1Ow-SFhRYuNOU2R#A6= zg1D!O=B%!Yh!*Zc6pt!e-Ly3hP|&Xf5fwLQC^d!0q%v`VjA%|yi&Bv$UAD6Z&5&b! z#$a~tpl}a=QkmT0_G?Wy%%Ws6;O;`>U4ln*${O1k%G)e7l6w@L$g|9h5Psg2 z^FXQ^)pqGS<8PhTm>-a2CIt&!e>LvfT_DNnoaLmmP+T)5-9sK3tYo7q+bj{rh;V>HafCoy!9jWQX3X0h;J*+Vth}^(_X9rVW6U_Pruc*1K@vB5NLZ`@@ zUDjJxFdlJpGaC7zA8fm~)}IT5naZ0RU}1&&nS9FGlUm;W9gUMAAG%;|FT^F3yZYo^ zd2`A{$!O{&kZ4U^&_TgH||UIXM4sTH*Ykw8F*o|F%cc&S7%`<=gwV!7#>O5jJN0`0{=Z)2&|I zgeYTcjAskOEofnB!&oK>R!ZycEByOx=IV+eLq_VZOpKqbsI#Z#;eLvh72fv*@>SwX z&z_NA-}f=oxBQ2uW9M>tY?ZJXzMz(X;Y{zutSI9+Y1YM|txprmKh?A5-uUkQV)?=V zi|#%JTVJP+5zH6w4v(-F5i4es(*w@^<*!fN&6v@di?@SQng7t~Bv&B5i33iVHIn9= z(=MX%KQ$zMc2Bh%gu2xzJxcHS!Ji2IB_w_Z#9ne4BOT2NLo}Y}ia5(&BhudHZTlGW ze|FXWmOT~sR8V)M4GjS7JdWL89i;>Ejkvt+X(14c-Wf4Gp2w z?8r7OYNvEXSya;6g7YXS3xIN-mVKgFLIQdbj(TMwx76!+BzOZ(a-1 zN%_4bqS$(0Yx}5M<|(7G7h6q+X}GY~YP8bm<=8Ku`rI+&DV#DHK^9 z``nitKZF_yvzZ4jFf#$SXUuDT>zYXcWPF$ZGlv@~WD#RifV~4u59VAvI zGDZ@7_@Jl`qt?;Y29j0^6{R*X2d~DLl$6g@Kn3HHC7(IXpWw5SAP)HrV zq1x}F8YSSq4_EkbNm2Xe}V_j z7h1C7;>DH-C`h$oW~Zdsl!cKgIU}w`+Z?kgAjP|1(0oF#eJT^1SILkFBe9In7gnkP zRCgUqdEW!Bm8#dX3e}3TeIeE;^@ABn0nC8Fav*jPrs&h@tI(HYwZH7Md0W~{ZQ5SI z^LKQs7(y~>7!FwGGb!=Qgt)8^@-b0JdK{7f(r9Yog++t6?S_2qjXnyMkgqr<1*9WN zaPDP!?Iyw93YQNOm``7v+m1avGjK?3;m9`;lFlhu7X26)O$i?zJrNm}M+bR>fQtX3 zRqxoM;g}4K_DhjnhD6#Z5YINbB<^;n-7}qFBmKBPM3oaS)bZM*3R@AeDX(8}nMa8Y z`Z!99Yit&ZT|JtenK7dU&Lw^%OmGYM2+U#^ zUn21$rt-ARbz6#ibsa|7f0EU=6y@SPA~vzSZ+Xo_yW8+#$P)ux+a&H4oLbIWtmH%E zY(=4AQK`-VRIYUsC*e3iETLOpLw`&Q-SU_v7!bHfv%%oI+`|qBPh8)*6i!ija8!<^ zy$tZ~sy?*Z-O>`Zt45Z2B3#4~s0*7h!BNf5sgFm1Qsxuxl;OdAu+0(!Xl80l5TZn& zC*JtA{)L^h>LBaj0~-BYl(feeOk}AZTerb8(XO+27z`T?;)1YJ`L0cF2*qHWaU^hI{2%FKu|q`kMV z0Ft!Q7or$hiIxvAvlzD{*^oqKLWXR#-{E6?0@MTl{zhwB8=I@8GFD2g_7iJ)anN%h zFkKNzcO1Y-8i!SjoV>)x3IgR1O)hNyF@9gwg1^jRZK6w`O~BaMqrZx#6$r|z(aAr= ze=ZAg0IXRX_*dfo0CR?ts1xy3S6(#idBaj)_b+-bm!BeZuqsFdWLs+p&#Mht!P7ldnO8y?-7kUdju^BZ+I#Lv7`~pbptw9^gmjp}?aVu#< z=2Q(Ek1_E!)x;!UFjqDIC^n0Mn_SL(U|x`RYR@Yjk%*XgM-FaN_4RWQm1HCJy>?>B zMa8yx->Q;6D!Zqw6x#*`;tt1c$`vAt;$(poW;yM8Z9pCW0(11x=%ij-I%qqCg5iUS z&d%;!p;#Nof9Vuxi%|VQbaiv@;-VHVQDZ%4%ilWNUlPZ5-w8oxn2^hu)z0(wDoMpHr-c|c; zAAam-_A-x{(~hN@*^I2T#UM*dW3cHwH)fNqLoez%7Up`}@L0-cJGJZqXZj>kqdj$b zfkG4N6&h}Jkg$cscKe5$DW`I88W+pt?MDJ!G$$}0NAgD%Bv(zRE+g}>_FT+63t-iP zz96&d6(S44oFi`ClO=u;TOO&fqiyyR%iDKvP3_o!Ti(O^TPRV3P^YH*LxsRLxJVvg0-K4_|_cvNV_kl89|8zwi^EtB%^N zB>KQo#n+4jH_>gR+;1S;;+bO3)su2TwMQW8vyE-WkVXb^C>+^k1z9Rj0iuB1`c(QM z+o?fkrslgDG_n|qa5f_@s`M1mDpCcS;~|m?y63*c4h=9N$sN+HVCl+oe>*KONM(Vn zZx!qhq1^bZU}o$7)Q|d+KNj0ym9SM!=zn6}zj2kH9@!hCWnP2Qt>OGHx7c31QgOyD zw{2m=?Cs67b_WLf-qyv&1{IX+>Qbxflc$8UW*@9n0DN&2u_`YhoXTIi)qTO(hRj(z zO4O?D{r@W@nX`H_1#YJPSjto2-e(ut9TRnFw1qko?sm5($Z6$K(`nCMDU$>X=AoZf zSOXky62-zf8R~V(z*lBmr>^6t(o8{5tMM?;H`o$?Qokdf*p`k(*!d>C;v>Si(WOz9 zTk~8*lIKuVkzY7ciG3xCK(V&F_D(_)2uFL5hhkIJ|hQKGdD=c5Eq+kWExnl zSa@%q>(pS8nKKJ#I#L3W!C3SYD^utay4SH_AijV!K-#JKCFV@q6nwMYg<1?M&DRhJ z10Fct_t!5-ebpbi-VKB(vq>Jpbf??(0NQsLd#ap{eN0oZ2C=oL_A;7)d7iC2{wWir z^fA;Aw6}_43&u!?6)(Tdt#~kyc|%azb$}90wo^Vi49=X$&Fx|4D zSFi75GIFJr71?+3LFG5W2O?eARe}7PbUIbLaLI?JKb#S`a%LreP&`Yitg)g2S5bnD zylJdH)djrlZ^?0~qW4DFzU>$FBUC3Yj?FtF@3M7pB%GA84aPC|X-%MpjW_&tUhFQh ztb*6BVjQCG)>QZsucT}NI@oE`;{HNTB~$sw0d}?{CtPiDMs0=m+6NQ{={Pos5M`f0 z>uaCxL3n_1f6}Y71Z6#m8GJB-IlHz+M+bc+ZI1l# zC3G!k0g$xhR?D44wocmFzb-P_hf;zgp9cv69_@RF_zA)7ZO??tpt&jof`pzAdsms@ zB}V0%ztaFyXWH>m7)rz1M@k2>5U$!jw=(_Uq%2ZHDI#)aksD{%CE<4?Im~#=x}XsA zrDjfQtMy96UfHpvH%BLUm8fWo`8zhiprqUcPI86^7;-039-b1oNdR1oJL z2#FU=Mrlps`wC#JW9`Lq+jK?n)ECY5f~e-ez)eu@HS`<0IwCGt2hH+0AaPxbO(z!4 zYOV~LyqU+)WbAqY@Bx=DxZYBJkK~U)DcAJ|K@6&2)8JUwKN5Omb>;iWJ7tz?(s**Z zsFUsTMPL5C07y2j9ta0JRbj+N0@u#S4stcRE4I!==;xk8pf_EHKXB6L2!z?X;!wsj zMEgY=7>cYN0uy(b1qc~t{g!PNTXB^+3+CRZjAQ?(2NM!sxb1uEt;%|nMocr~^JYQk zcAk+uhh@#LNWM$`cz%WyL6Cd^jmgIsbpLnd^VXX72yDjs)$^I?i$__G*r@)4te zRlrx@pCxeL_j2-n5JR{CF`(ZndFgYK)0jY*Z=(%3{3}X zwDxo|JU%N#b2swzHFhx4!3pR8u;CMOC`_y=eTb>?j`i6O>!->5s4i5yVz_{1?cVkD zuD7qZLuZc}+my4~s2s#voH}Myo8ir6>ZZZbrs1x?{kYRa%dsxh>F=-=dghR^~SxIf$PmwhXGj2ocrPR|@q?f~k!CY2px# z@t`U@1**wO0%P!ojFlXsS5V{~F~hy*4n~S5CTs6^Y8KyQ*9@9Dz`-%>PA3SU=;mnR zrKH!wtKRtVL`(j)_-l-?sC!lE?Fb>`5JUBq4r7DLV^g~szQ}OYaS}cvkOKTX zc-;&uSNK3pE?@0>;n@ONzLI=JLfeNfLt#_{^tY#1%dW*!xe06{DheEQtWj@qDpAz( zUPs$OXm6EIu=}vG{lrDl%e9A?j;9uaBdg;R9Tm#`BmNuJ!!}$l8bQHe)G|^;Px)|W9umdGCaY{^vUBG+#G&yA!Q#}; zueJ6wk-w3k7AP5{1zOfQJA*XN6mg^W)ddqN-)lqMvlVlLXXHw^8Ap-<0S$^EoLrD#3y|P%XgC-Y z%9BHNLa~DUr%O)K8&}t@>tHByRD@AeWKrxOgrd-&Y0(ft*a_~PhE4FgxtQqO{Yk0y`)j+$fs+0eCd29MMPu=wbf}*xv2IAYXAYPz;$^r5q<*CS2b6QNoR`k? z_JWPzJ}FfRn)!UR%PNufWga2cQ4n9GjEyWV~ zQF%ic1<>51D8xOe>@$W#Ivd23Ps(H&)NvYSpG$n#qg(YP!*6DlL zKbna|)I|G>czb_=vIHozN8F@6%$oA>seRC2je?v9SqdYKK|$lQOaYvK_!gH7)=&#P zw-AIaLE2fyJURILzI0r6?Dl=^twBbzOUseFQ@FF#K~h;32U!g2_$KdB@~l$Z8IsSZ zD;Rx=d3TWLX!u6r>vnjB(_}G$|YT*77Ylv|E(6w(?BS{JA$EQUDlM6)9omH zyDoJ%o>+Xs8TiIZdy8tWonhPY199tu2!jL-2xNG^_Ntfou};Bsjuwj$$>5wN!+`2^;DVpt#Man$YyeXd*rcuBV$U8?KSr zd;-DFiOGRy9Mef)Ns@lIe^9nxsjV;`E)*nS{PUb47W?2s?*6*MUh2Q_NR}=zfx08u zJt!RG41!kaiIBJNRf|C#1NX-Df&x~Zuq?hef^koHw_S!qm!1KxGZf6Ac!VO0V(Ev$ z)9woqBn7gXmMWzkyPdjWaiTi$HmMt_J6IeC;^w5%&6ys3liq%FRINbH`_#f2jR(v0 zHB0w%FiE%0h`K>i{WP9tU{KLHNIJOI0%3A+&4LN(v78|au<-?gThmNT6ExAF9K<78SQ=m^) zF4$HjjkGa0c&<1f2R4wIp9jEUl#`=u>(miOnBd%Lmp!P1#{ zT7l{=kJiMfRS$T$a50?#wwRwrJjPBJgh+n?5GCSo=xAkvnwxTT0q*jt#EeyZ-vv{f zM>#g;$zWKuWZS6R=JaK5qR1Fmq6K!E;6_rKh?I3qxaNZE<16ruGhSDiQDNs_bm8&jdQ|g3xS|K)Z)rM8dEFG)Z*D_;OVs(tb9>S?cBpwRJk^+jsgzyr`<1`RBP} z0|#scwLjfC^2@t@E_2CNIWZA_W4oXBH*b7aW;`C@V2YHNaOSFsK~uS zVsvfpVynQDL!{n`!MDphCTug=51Tc~yV)qWkH57?5d>+P$CdVh6(cqXR3jr6J0F2 zNps^pg&{E=UgBo1`Bv9EzWyxoNr)r&vD=Y$2qYl4LoPoFlB0mY9h8t0qI` zmG@|@s86cBN$A5w&Hac`31s0H;v2|(=c}vgzVeS{z9ppM6KZMT9M`fMTj~9e+A0#W`D!473*J{^OMNo0C>ZFI+(|kgi=%L8( z5*@*srk9iB07I_VR`wAPY#QRyr+_Ed1wNC&Jq~$CF0Kf>`09Sme%kv4m~TJzYWYHW z2+{0#zI+&CszVRCwsUhUM24a@b&I5n3&}pJVYyTba1uLD9w%^g$1$}M8P4OfA5|C7 z=I8#9jiwgd4)h3Yyo2AH?eiK6LQ}R!JrY@GQ2>sHJa#uUcWtK6^)&Qem3RV^gBZ_K zp--|CztW);nkGT$GZ`rvAU|HihRrj3*A`CIObu{P+i$-4U2D zN7riT%+13BJ6~sgL0PnWB+`4t;|JpB!!IT`B2H&;YBMpaTI9g|IGkdBKfix|0e4?x z0id~4O{V_?7r6iHPo9a5<-dym9T&LSV7dPT7r0qqx&H$fxHw_C{(rc@{XcPmnd$#Y z7q+#howqnp`!A_IZ-eUZi9le!4LhERtS~m!(vKudOgm~*V^~G3G94!Xf0B+$n-vl@ z);+d>jLc;03lscy=R_C)usGnVLBKY$_~^)i#7}+$qCfBJH0gcT8@qv*#A3(|gC||S ztOMeb=E2xfj8`D)wVVbtT5RxK&J5CL$;j%W0itA}Fw{tS3^*MDGyn^!`~~{^xW}eI zci=gGluMjidWq{taR6m@pob{)0+JGbp<8~y(_`UR`0!|E%8C~cEz6C+7JHUA;s46n99rN87WzF?z0NJ! zW^EeVo|moi8d^EaaTyu<=`$HSah@bQQArPSdKPAv(+lR*6nV%~C{d&)cvlHj8sqZAx$R&!eziR*YHFlalFKu-F#qtM(By2*~P_N3mTz+#M9XqW>TXQ$a#k4Gsf1H!> z=Dq8wF5CfXKGVH3t95LgQA+3$KAJLvcN-hF``f4gngfRSUNV*Km@o2lVbBcg6V@6o zzQ-X*3DCZ}t2mrNq!Rr&X1!S{sG_)6#g)+kABNzo4KB>c{qX->t8%CGitLt&qNN-% zRIgEeH`Hxh*0!t2AmZg_?-p6Wx4QUeaTT=xP!A`y*Sgf*(@C)HZ^h9ZFK}*xq(-14 zN7ACY2O?Dk$A$#DZLm2KH9mTSQ}*9hH`hV!n1LFDwqW)VJ!-}p_m#n189GyC|HavJ z1ow~-MNsrtWwLE*7$}en152ng)o%OBiq5XbniSnqRk!Wmqte={QD3p0=Vjc+on$xt|@dezj!6 z;3}P76xIyl?O?%=?u)We+f=9RLYVkTr}aqGj)h6czvRhS%5|~gxO7VragB=Y32CGV zbs6<~bOYHupaV3-w-9OBIR!)vZ0C+44-N6>F8{B$P21=-aZGo75*f^hK+pHs8A%F! zsu~U=Ah!`7x&b1)cc$0vC;c0_MZvZ85z~H2?=9HT1p%OdcY{d6Z4`oZ2n zMx#m)CK*zuC#o$pXf(ApSHiU&KS91_wCt{a4sM>LQ-F%$*zw&{ao;)sXec`P4~Y;| zdXwk#XoA{gK*6u@<)HkDaw&fd63QC=BcOOuJGbNSDSsG3M8t^1;%i}ocn+~BTqQU~ zwgSyk+Vo&O=q2jhh~u1xsR4gXe2Q4zLsp!yA`Ga-tnaBcQ6+cIIYqHf%H>UfY;f#2 zTB%s+Fo&S1Htk`wX!v^Y+`!OMN<1uttGPUiDW!UH;nXa62L1x2drC+wv)Jt8!`H=u z`&k?Y)X$m6DP(%e%hwnALoJpERlER_l`;Gd*lyM0~XKOJXQd zRTPR@fl8$R(JRDPRFd*L97$?{fuHABZP*ax(IbOHIY3yPf}s9Bdmt=3&$su zmPr7HeEIzy|IcC^gkt+;+hDB3yntTmGrGZ0wVbv@)1gT=3B`Uuz+#zvPX#BDqREBE zn3q4RU@gH*z!xeks7iZ;8xP8X1{Q%6@Po@a!7U-veO zWla++2@!L@p9U}^JK3ZRQ2C4GRWay{aaFF^D+CgGv+KApe=ZV2MJWG-pmn)d+4}AI z^b0yce?Os*O~hQgph(RX7L8~QaF&Ld><@Q8iWCK>IgmKM4X3Cv&jWK4SASoHx}E>g2WD*EsRE zrf?5~5d3=1Zx;(`xd+K<8*Z@7IlqktL)cz!&Q^djP?}p#%v}4Y(kB0b`UFlI&uE>x zc-pNTpZD6eW~ge#M{oA3(`F(uj$;rgPHtAdg+>JuU3M-dDnXT@@ zTdO=OU|%QaujW(XjkFBi%0O9nb54z+c}V39Wc6^2TDScVo06*t!B~Hy$?VWgnGu59 zimbbWGG@#AAH4jvxo!!uswZ@gByLy-YNzLQOHiNdxZ-GzhDK={AyU&69zw|Ap3LsC zg;Ku?KyXYf?mB&V;lRL&g3o5%yhF+dBl+W!XOy<)-mKvHVx(SBt`5*R4&vsu`two`3#Gsmg;-xD`VDK27dChw_89hM<+v@nQu3{$k(3HUKT4Pb z7gRl=Q7abka!FKqFx7Fs_JcwZm1e1QzKXRsp3Cc${1^^D{n4t@PlVm!N}nRjhf{`t zd$?bIeNt?T4(RseX`fXqJW!V!z@{oaIy3C=m>!Z}f+#oP-t09uRbo1IrK|4t%DGj^ zt+4tfk+P?fCOWaR^l{l^H-NZ#OeY?eQF2J*fEmz*aSbDi3ofw6qUOyS-KzWohhS@f z6`eW2WGhx5evvqm^v~5u#F@i$0=g@?tm7(QegDF=+x(4EInlw&gv-ZXR&iV<1R&?D zr#u)t&6TH^ejK(}8Q=#F=?R;J&i(Rc4-wj!pGpI(^kDlnD(0J@kmOXaUSKc61H_;C zGCZ4tS<6JDP3DaVu00Z*;n^Tvh)4`KUx9mM)i5&@+rL0yRPnPL^HOx?8g&J@&GapaI3jDEXNhx;>=i*JX!p@Cn3ts_99 zf8R96@GmMbak8=fXZl~Qz{tSzPr~xAJ@8Eb4FAUqoa|7X|IG`G4F3Zd82?vbnAXy^ z-yB2reXS#C^-%z@p2#3H=ZKR#u#2|6s;)6mBoGjkG|tkEP;rkaLi@huHMc947C-(doVA4vT<{G5X5;?Apln;rql`OeUlAs#2H z;22kFUdx>}9$d6&;L7Uhb#Hk)#XKgFHCQ+DK|3_grSz_M=gQjd`D7`|(-W<8)E&ea zzv^5M`2@`y3P|n%K9z*&BA?HOZn~MC{)GR1b8vR;ai9*etT%wG+b48^{rmW_4Jui%SSivcue2!?E zogSk9YlMkh+6_qA_8xD~WxE@4J=K{!#B^epx+>bcWx*ruck>{-q?QD-53@jPymPmn z_xnwrMB>-g+50uiAz4h4ARThMvFK;|L=(v{2#LA!#m20iR&* zc1zzOOO{DlB9^t8j)vVNt!noYU#0k1&YpGFORaupx`vf)O(cRWDso}`)3WRe3FjDV zX9F|9S1W`&6^Vo|Jy@coX`jJb-5B~jTjBB3)jG=w55{bC+o-pJLcRm+l~+fDU0Nl- ztgFkr#JLvs3M~8w+m`8c$8Jcnu$x+a1gueteZEYy=$Yd$CGphp&6V)=%+UfbCe8yH z4ig+tOcTQUx{|%kI&|R|oqV2Nf~6g$Bt~f}06*y4`?Lr*X~gT$^!4UyTN--bR*ZZO zwa(F?;DD^8e~DOI`dig#_l!Ei6qr^2@?y=*YF6RWe5uBYM^D^_)+ueV5HfEDO|X$$ z?htRsdQ;_U{VANAHTBxnxnkP9-0G`pkEo4%Bjs>-a&P+{Y!)jfu}~-w5QkCiLlC>9 zi|a18`2I2o@x-Xf9x6rrTb7+9;dLWkbUJk~*@cwDq=!oLe5n-yHdMQ7(_$466K*5q zO^~G14U~|Ads<9A8o|oIAALu6(x`gVeMB}m2mSVEong3kbF?XDqQ<3LM(fP`s#Nq& z)1p&2A>{nZJqc~_JnnvBifgT*^@2 zY$Kg%6R|{%XU;6H(BV$P`N2f2;;ykZh`n5@Fr#GHK?%t#4n+AGYl=Bs0i^y$;iDS6 zN5O`Zn1<;eFxAzw4RrE3|39Y7wnC~_-iFpp1jxapz3yoJbaXyU0N6LTPquIo0m3$0 z;xfaG&fxyPUu?TZ1d~MJt4iPUB!PeN<|NA7025$B4x=PUVtjB0aM@~l1<9Rr1pxX5 zbIHlGjig_HC1_L{g^fJCT)oUqAcB-o268H3w@0wcl$hhh`eYCU4-W7=6^u9xa0`GS z@PCjL09K~o9@FCyGJLU-Ho6%;p6b&l(SF$Q$X7&b)cbWl%LBMRx7}^zl%dM!AI+<2 z7<*i!7zf|&${sh2Lp;`h!TljrN|4)C2qoP4BvPhFd~R^CACC}VldEW0VDkxfFI}6r zKDR@Cg+5@kaBdhKk;|FL5*5#Bx`GxOViH>>!-W78k#t#P@BMp+T7Zyb-(;GEFxs&h zgP!T6I9Rc5p4}oij$57y04ZElBJAhxV9lcb9uK0e(7GHmB6+DmDBqv-Ic;W zpj8g6flcLsiae$Up!!4&V@e*Ci#DzUP!g%qL+gOQssQAssYV$!dC!5nVqDDV$+#P4 ze5B^;WawMSTOpH5P&}c7XO@dI1GdbU`4+<6!BG0=02A3)naXbSl zj^z3SoGW=!Ab^$)eF{+nn9?-@2e+^Qw)z{wUi9B0dZppl?cik?wpSL%uG9D3)b~Wm z00~stMkfek`oZ5*>vWbJ76(7LWkX1=cc^9@fNO|vBP}tg+mF`ps00*=Pem*dm-naj z8=lHhnPb8~f}W0}1uA_(TS0taQBwg>U9@hlCy2o4M&Gq*Jn^y}A>$(_r%70XrK}>e zA0SMiDWg*KZd)s_N^^@s?fhPjUb3&=u+m$bq2JPzKf&dgdEr`lubK%jR<+ByflOgmfeiW^Ac@JP z)H4quG_O3*7g~`q7y4+!=G-S$ zGxYf;u>0E*dj5M{%B#Gcm@@~7-bPr-BF(24G1n(#rlNsr%jNccOoth?i2+uXK;QF^ zTsBEPAI3urC6x+7FF@!at100mM6`l~&$_}|YHlqy!bzZ)IL}G%h*}a(Y{U2qgeq5X zp`IELgZYbRiks%ZH$d&J%?&IS)D?s{EYcq@U@&h)?sW&$v8t~rB>M7en5 zHfBl&IF~Cg;9G3CkcVvN{*?15Dr#qQc&aG#1!ni^BSX^?o!;)ouO2-WO-ch!Ze1-V zRA0VtaBqjsOdE;xKqaJy`qWrxF~TvC)n5lt&@=i_rIYRD?Stu0V=bpSh~j{gfMl6G zT{pf>(te3{jT14r)0Dgj_i6U3ZQf)FaV7g}cS;7xn?t_(=fDkg>-AWCk7l_bg*!DP z&^-Q6Q)vOGl35aUC|&>G_u#5Tl!FvpNpfYUn$Vug;a}O1jjISo_WI8H~1R^|-eIP?1!^@CMs0na*zRRF6jv zK$5w-Zu?ElN0B<*?1<>x)LS2NtfR`JBp7p6!TKzf0UyQD4nlTu#G5ktjTq4gj&zfg z?Z0dlpQX#2?^?GkOEw-P5bN<(_sAE|)8_~Ve=IBBnZ(s-TQ_1U9rk*bYe-kLcC8^k zrMhMZYEgr)Y@%AN9rHm9HBq%Gh@hqJCg6};ZEzEcARY1F)}9Uc@^mtdQ8RDN?9$|! z7wt1=_16~n_<8z&l`(8#E$e|D74Tbuc|sLJIu`BAha8=p-XdXRwAX{GKl3kNvAw@S zTUjANEP6d&SM`hH?xMrsy46}Y;Br#2o+M(WPI@;n7BPOhplaoaab5BOk>rBm9E9I^ zM52zFJ(qS82YZRHxFg(^Lh97`=?)+xfiL*RceNG4r||jAd$~h-_QGxQFPTz$P`nBJ zk&hZu&H&C(F6IXI-Z(BClmi0Vd0-!(ytEIUUo*hh;6x6}?;VtPoN`t#&rUDncIJkE zt0I%%Brk1RE>GSv$mn04y~Z2nGYE2Dd2{#GFS=pl*}isu!w9CWdM$EGhZm4BaC^YO zX9U$VuT`M#Uj{?>`$pOqyH;2L5GSv2CfM@aAY<;=kBL5>uU4CWf%06d>;K&(jQ{s< zBm*1kf2RMBNf`ez3FE&^!uXF#82`2Snt}Zvg#34vF#ZoJVfx>FlGGfx+mb-)xug#7 zmBCaf$$)OlO|pTu1=L$o>i~zvz^JcmBym$uU_qbE6!sJRo%lKwF)<<2G?8@6GXvvF zj+Zg}`*1Ka7=KSN%>UWNnf?E}#G&cLmo02>w3n586F9dB*VlKts2gJ zGJc#w!*&LZo-Vh>m-{eL6sonR)tr!Sl4U4l`Fs7~M4ro<--`V(Yz zUx@H3L>hJQoJwP2?aJ%-Wcit2Z(Uc9#=ZS$P!D3Y`o=|p9jk3TUNoZTNLumP*1POG+Ia4@_u}pHrt|P zcr+v=(P)0({Dr3}Oj-kn8`%5Z;?>!jMj*;D4O)Zx3-k?YB&Ff*=xBsT_N^DL3bzXB z+NmwNimSScX*~PMghB(0E7I-@xUQQ)r&ZCWnms$Tt5-| z8}#*2v;9$SFo95;&Bk5z@M2E^XC&T+Ly$}i+Yr#sm1nxumZRLOB0G&_d89u8<{9tq zIag#utAJuac}dR$Ij~D!w{dQ9GMYsHv-~rMHI} zkP?Ya;~kyvu8evq1nxeFd6q6nvyGU)vqhi|@91MxK#!oYyA{hwrF2_Rv=dbOCT4IUnIZI=gRT(x{ z7o~L@g*0uxhmF(!SIw}W1q4_G&;kyu)y9$O$tVC0vta+@0tI?;xoQApV3|6NZIioa z_jh^?A7aH3kIYl0xaJ%(Y1BOqq7~K%Wlj&{7ieu%GC}SwF)8M4Sj@y0n#kX`=#iEx zw(AgOZB@#ra8QDD(4+WyywFm?bCI2b0#zLG?#!=&BXR03ANd>j?(VZqUeOdKsfONJ zKvErtB^>Oe@{x@HOpe{8D+dgg-O~%M-Ez-Lz+2HR8QWtJr|QsAMPqv~%X)j;T6d6m zN=%8QpT=RMhAzQ`bvzCusu*KRayT_qM$q@gD0CRT=4Y#jAe@d`d>wzK(-L-YHT^59 zcIxhbp;rf+kumnNva|was7n?-Nn;)j&@}3Va@N%Z17}of1r8!est_u$I@R1 zkMGcIHjSfIO@mD+9oo3@Qf8ZO1i#NHKh7=}q%coSQT&$5=R+EV4|DqM-l%Ja@Gj}6r6 zcgJKr=)y^0Ws2p(YqLaLl7xL67_&AajIiy0?i)Drun-nFPJz#S7Q+n?jhP&=Kz(4T zTJau(B(+go87k+qg@qy$6oB|H|OmEREn%IB{tYvN?U7f3-NqJ@uDk<_HPA;`uW4k3QBPmvL8*Z zrjAvLpe-*SV*~+tOS?TC8%;ns(I?kQo^=q=sldf<2i&(%FDvx$JQNtW^gj6AzL-iY z@7egpCB4_2o2XOoY&b-SKAng(*EWkyzA+J$F<4k;afsB8er z)H;z_(7!YNe=}%3n!i%bn6Am?frPB#T0BQnr{}9cq5Y1ykUJ$1z z2#FYYNVo}bTO&30Kn0e@0AEo6T)jVsRTjfMqH-yXGj7-|OVr9pIGYs7-13Lejr6=q zsPi~9qTEktFE;bL3S%k9#=Q!9L+TbAb-y6lkBBB+ga zYdX9C*fC+X4kc~4EPWm2jL1prmDnJP1#$OIChWw;4-c=!NrzPPS+OxDQSb+Et9l)9 z-8o!A-r*HUs+Y=8xO$T>cYQOklfp_kxfAZ+giuq|QaRj`g&7@sU&Ly}f;Ghj>!Ey1 z%320v&d1LBGc+xois0lV3>yF*pQ7Yf<4jO9tGPT9;>ndC-e1ryUtR{Cr1n6vphJziC=NsGf&I+Uxy3K5WyI&(*$Jupo%l0_43yNGz9G zz?WgnClP`sJ}4fa{VmYsq43-~TsR0wvgFygZug$Gxl17ON2bi|y@f+9<(MNx0l7G))Uom66+vPFoBD`pBZf%^*f_@v z(9(|Hde#UmAJl;7{Q-**@MT{i$N$(x^d&=&Jzzj9@9=9&OCa?k=xt`aSPoqp=28M~7gR~Zxz}P@ zzGv7$=Iy@>)G7yjMMwS-i_?i&ZD?jl^1Jrg{?fTZD-%m|nH>QTjAOl(zV@wb<>?h?jy1+)I*O9Nc$T(z$kYsdcc~3t8(#{ywhG3=2hw)Z)^hP{ zZKetwW5d>+Zvo$Lqj9sJt?!0ZDmZwgZg8UeNWl_e8gJ*@qkEut%SiEp{edr|O&ko` zI9q3(i)L~pO2}ai7(TeCIIDE(1GDD*dEekW@R4HwUiq2+^BIDH=|5BU|62K(*#1fW z&*oT0rhocB)4%#Z(?9*6>0kYy@t^+B_}}|KGvmMae`cotP5&MTXY zy;!QS;%cqO`I7(5z?=Qy_#8sI!2C_Xt5MHtx~&btJ}jF4i3WqFcBx@Vbwkn4I$Ymq zD6zL)Xj-mHqi5^OfwcU@gW0^A!SSXk!oat=nN`Ez*{U9%hQ36NebiZvwb;5S`2o!v z3S3x(uH^+cd#!GPS!!QZxA*gS{RzS|djajM4XILV=3P~{{$4QQw*E9|3A5p`-CX1N=7O^2k2H2Ba?MQB)y7R?lTRvi_kY!@ z;vTSeO*MP3XsPT;(ZHwk`+9!(zGQ!yitO>}54`p5?0q|@jlBofwxa$rw(@U*4!y0x z@*un}YEJBw!>i^#7MgX#ePNA`SV}LRNwQ7Q{Osf!40wEE*j6C1`2wfykM`a)tD z*(+}{S*0+}tt=gPv|@Oz7@Kp7am`B6%xONl9=3whRMhyaRS8u^L)9|@ceD@E;f1rs z{Oibaf3M5>aF0a{lJ}cC?@VcY7xOXQ0{PNa6Uh6M#P*fHM`AERs5F+~9@*JhgWNy) zMzWGyn$TK?u0d+4cXS=(3QUnxum-JichH_^)sqkNoHPJcHw~ps4Ncxi-1@*qy)-Xs zFv>IeJsk!5&mnmYqdo5BM0r7+$CP_=K`9&pFEiEYUKb^ewTF8(-4GEC^ym%BImf^a zrbm?siS1eNN^l3cHr%m75pu$FWN`TbR+#!bCod~`%uJ;XBZ?q+WwVxSfeE1ztH{v! zaOA;woaZs^LA-@rL3jyHR{HGv5tm@^Ju^Qo#*fFefx2GWYMl;GkDM~T}gp^i-p}nt)$W1 z?t=OC;Sz7X4%MI9fj+%I{9#Dr@9pdCb^l=5)2+vz`CuYF+^EHm!No)tRTEXM&ALiP za3uUB4r4zG#Aq0PdV5nGZ5 z0+4_-3w^{~(+ofmdQ>y@zbY3}3w0ROTS8#EZLV}I>Zn||-iZk9uwaFOn;aHs6378W z@Z8H_?&-q0QY zm`^Ht?!O{%C7|RhFQUu>CgLHF%$N$UZKiugh60ZIOyH(SG8$lUE5qDoq$7MhDlrln z5x^YdlFVUSF!BQ|KAcz)7m+qnB`Q-w($UG+|NU0^p|TetL$cvXNtG5|)R~e8+w~rQ<~h zQ`UP#F05`v2TimI@3s2Ix2$C>F701xzcw|%h=HV)yAjKssZW|<#qXLUa(=^m+Nt}; z3e5)X%{!mv9IFNxJJPrGMOpSLTxrb&iUXE3qO1D?D@cFp0$$?B;)*sb&OfD_!IRE6 zG$#a=vb7~zp+tn&P=J=PIo5pCj)w?lmVA`olx#Fs^eH=|Rh64w(VMky9&5UwQm`_} zb7v7`h!m*40^QdUVPHn24rOB7MJqt?00&}Gf?3E^RVN|6fOl3l>F3ZWVEJ5E zMRg6GNG|6cpd}}@KqmeB5IS-&pRZtdNX3Y*Rv@NhKK0=pm{Uo&XN+tdvV|g5IojdU zLilbiE`CbtM+DkfIe{#=fjEder|uXdo!rUDPX>vBh3@6(xyRQ>D`IJ~VoVg9=vn}>_hV-nagGI^|-oDxX^>6;a5pxK4v zKW7~2*jBN4+~rTJROR(7wOkk#lfJGBfSfEaWUP2q0c_R+^0`&#_nM7ELJ3nQHswwD zZ&TOUqi~v+YTD9r)h(5OL|0gJh$xoc0;ZXqGxMSmjW=CldO@BwVE8qOCmeUd z15}a;Mj|Jv@Sei8v~~UhI95B(v2`A*)ND!MGk63E2(gXfsV}sv)OM-TnRx}TZgE*F zgDe{MzC+c7@2_-dIH0 z@^d>h?5g86H|@uj1D|ySm{#kfPKraQaQ5-4Y&%jr{uE-JdD|%2T3`@_R88&X69CzJ zrG1$ioZ*qya`w%nnNrAWYT7XQu`nm>G3`&Q@0mY7jNNMV+0ISsb zHZO|^c*}7T3V1@=wSD4ps_Y04!2+Lov=#uUIzI#x%MQZg&!T{_AF@Q?@}&DQ4Mju~ zw(kKI{`ram-n-f+{LAIqV~VG(i$Z^Np+E3?#x^xpRy2P+NxchH5KI zQ-UjeHTW9yS4Pf2OZWawsfB)uVtbZa(dFcVPyAAjA~9Cd&sNmIalF&9VECS(Akwk-Be^)LXJ@a+PNL%({sq9mmrwhvB+Lh`#U{JmDLd}xQ`(6*RCU%ats}R6-<3e2l26Vx@6y>wf z-uPHcj3nN;K^8i|oRxrq5DGoBb#Ta9_yr+)v+donLfjhZeOhX#TOhgIz84JN7Ql8S zNQw)hMIz+=?lI{Qvcx;(MCzk_G8Tq)pxv)`GD|suhv&TjI~6H+TtZ$Y6lsQ~{n-7( z7!s>&L;r1gcrR16y=QA#*fS2$t+*rUoL9{4uAu*=6u+(w+7Rg;sHKxHAu zQoTdYziqH+;bFhL<)$35DhbG>nyl*9We4?&6+}c!9oCO}5kP;x&FrId09u6#=GpZ6 zQ@>h0o?~UfZCR_P%-v})kCzpcqDdDpjdr|b6q za6Iz)lI!ht3P_RfyEYj=Li3FR6FcwmI2gVPOnry1^!R?BEY&uM4ahsoAI#q&`(&;4=x_J*1FC|+7?~*EhMG%l2t9PCG;|i+dit5W93bb1pvR@ zPrC)(>ZP&va<;NU;nK5Gr&Tqi?4@v==nohsez~@cs8&1!d03|&+p2||cC42h9q$EF z6j1EOl+iub>bIw| zmwK9$+NyCSq|zNqVb^pd-k{O96l8OEoE!0Y=};0)N(o_x%#S7_m#r>A=${;!YR4IqWtQ$sWY0M9U$*4{i(qqCX1?Z143 zTN>F$|DbePV8KcSwVCJu(+f-Ar)!qnQRoGSR0(lKd#jkgE@&TA?L7@Ar5&9|uA>P_Kbj-Na zZVlK~tzKC1P+c;0qC{47h~dP24tso5|3>GZ#2|R4dZ$@{-G9((A`{&q;idM_{&r># z4@5?utRhUiYkKX8UjU{s)>tG1!Dgqn*f<>Fzvt$zd|jl&{*janox&DgiVEr9>=@=y zj)?JoCQSCS z#n0{KdjIl$e!iIouS_*O|I95_Gnsv_ObfY`paLCTSbGoYta1dh!t&%ZW|5I@YZstl zp$lSo{|8_>SEL)bE9hrIbNPX?h$=LyxT5Dg7h7WNgP}Fis%DOFOnKylofI;_YBK*y zusx}ro-vK|be+|Zx{3@SMgwjOX{_9MLR&2${(GJxb(nT@8Wjh&4PeFc$;lcA^npP} z%opf2nhvTXPKHIIiJ=?u&0NIc0Tc50xFVxEFE0K`m$A#d#1J9~xkjm3qDd{tfl7AUb4fSm;ELJ32F5SPw+^+TvFc12EJK z1h95!`rUdz=uta^TVcU2+~|A8OL!AKGvEtX#jXjv=!>W`m{mS-Ipho#alVApjWvjW zVY95S1 zDLoj$SUIJ9Rk{j_px267Yd z)<2Qwht>1OFo6V}x|{buPj9!U=IF>BAd=7%)^l~b=iMw4_Szxq+oQLo`>>>R^>sP; z`rV!qcm>J(YKOoV$YYtP&5~>SR;dxkN`fQws*|2OVOHVQ`|N9z#&8T7AONIjegy-6 zeFh$1rJ2J37`7rh*BjK=44@Z5uA`n8R6H|$0HGhe2x4{U8iYW_?RO#y8gU9sG0+Wg_-e>X*1D7I%Vg?rVZxCj`P_vPf{_mcr0Ry3#_Z~gVp za>R;`Z@nU*dlRm(L)c#l7IovScE4ii1$gG%zJ5K1hWHETs_@5YEPz+ZnuW#Pof5{w zQYaQ4EHyy#`OW01Y9!LfH!Ud0&##$@*|%u8qnDhMcWU3GE~W_Yn_(9Q-X(TJS%vS1 z3*vr!^U)crae#gs!cc3Z-kL*!GnXCKdsT1$cFK_rxYMcG)-9J>E%F(PMS&l~N@~Vd zNA(iyF52^6s>OQHip&MOri|(vgj&0YBw4xDf z6vo>C1i&f)?hlL%I5675_;kTsUTcQp`#e4b3&R}JRzg+jd_DArg*Pytg@N){PKW*n zWXcL08UctvUc+TBhN1Nl&PL~8XgA%kSc|m#wHZFp9)u}5FB*TJmrHYMrkP(nl!Bb% zY0VPD4RD2kED%SdYO6B_gsK%Rc);Me{=$A1tP1^M4Dq@?hb-LJZ(H9^ww|67Cm@n` zxsNN?`PHd_pCiA@Iwi>}KH%AyIT%!H=%v=!5||U%N{Y4y-)}Q*f>CBGSP{0O;ZSoR zxcaM*EJG5*eDd%XOsBSYF?+w?0SDs>rsSOmtwGGvAf0Q zO&szQ!H)mBKp78*H6YL{m=RERt2hpjM(IK&I@vSi$*9BV6Ll!4J3*ZKpHeVoOyIft zZ4@AZL$G0By`De_>}mmI21mz>Vd6TEND#!*E>eeXTj@Jxvu6qF*5&dFv^4WNU#>0= zj~?@LVlsLQbRxgtdoz?80Yt?25?%S<^6!QHyy!JIuMm$O#=*b71q@1TlU;EH z#Tta~gnXX@@Z|a29u5y5Pe=H1l%nj%iJeC|*bQV&^{fzHL5nUN+t32a*Y(G)&`|rt z?QmaxG*PO|-<{}!{#|GMC?IXvVx5%Ye>zqs{a96$u9uLj&SW26Y>u>!#K<%ZN%@M1rE1X>I zpOO3r!~hx8Tstb<1CN6mBZR%QDT8t{kLH6;-)_p^5w=A(F)kO;^Z7Cnow?H2QW{my z6}KR5RLkPw!WCLFW;E<3k699HsqVLbwIo6vWWB~Rg$A9Bv^ zhwuUyakKqznA{=APAZV4zUqzLl1XmQk4wg<3GiZEdED$W(nh)mD7%D^TJ@sA2?9tgb`1%Er*{9M;-=q% zOsUD5)ep5ul`5bT)~^mkbog3<@-s}bsk7>?c^h2q9YH~c@fbU|68l?AXn7jZkHIo+ zlf&R-zzOX$wS0YiX^XGXbG{K$p{I=#FC4@%2u&EL`b1iPc_CdUvF`Q4T{Xee$0ZhMSGdi;7IG1PQ#(`iMIP4+;L#>aq{cCL2&Wg~+r&1_4Q5 zANKh{zFm!Avb0gmj6uuAGxvogEf|aVU6V<#!{nSZmSRwA=iP=0p31>TRKb+JZ52w*v$&;k>XSkW<_W^OR4erG>R= zL#aec*>%o-r2Y|Se%+x|e8e%rIVMb#aB#Jr*0QoQ)NigQ@cZ;zH9d|`?&mJ!YyP8c z+g*oFK1;7LbyhVp9nqQLLHWAC^VGDZZ6kLQfd6;L$d&2yW8^eyS5D(>6wyw*S{~?w zYs%@v=-z>;>&uSQcyhLA90esP3eL%G|aaoHiL$IWR$!$s%W&0p(; zd5>CqjkN7nsvXx{i_Ow!w!+Iu?Rk&3LNwd?sFpw9u`Bp>gNajdfg1eBYERRxw`5&V z-xMs;1LHa$Z=T|>$A6s{hSpj(Tr~gDd`;$bY5D4o(@Mm^LWhgR7!!YNQ@{`sZl?OK zUmXzg0o-L!Rnx7hf^l96S7p=4y7ldG*5f03-LDU4E0?TythhCJWMx91+!xRCE-wxL ztGL)earpUU7%>i^qGowpw9De=b$27(XJh$9-=6hwrbnU1wues#BGb)wPC1qQPT7^j z*BFhduIKJmhl`x3;O;No(ko%10kNF^^bpV8;})kPm|$iw4aHOCb|q~aFD+eOQfcy- z8>lLy-vz0=Sz0`NR*l;jo}UsN%z0X{nJy1FW5MQb<%F>>Q+4dL7D2H^( zJoG~{g_gUW_S2soShs?t@<&z4Fkh^{H-9oJ89TawUe#oIZ--kIB=u8tZ&}%QI&DTO z?KhMZ0J_7v5{-<9lvt;4nJ!OH-q|RL31Dg%nvV?l%meU2N=sekJnMYDpC7CoUrwIg zUup6mVq?w8NA;~trIh78Q_OuQqO}b%lU9F`Y?H=) z-%fd=zk|ht#vD@sUqdDU*d_o1c|kKlRHmmv$`#BDCfDMofm1(t*kdU!T|0!1xG=Mq zYi&ihyQas)ojACbU2%ulOnd59q`$LcY~o6;kJ1{{*+#hQ*6b4O^#V}wQMw)YCuCum zzMo1Jq>FeC_T5(cP^mS_r5GgvVLPOAXcWgOlN!07u{vZFvCH%6KUyiO8hceUs+4%f z0o%~__rhA@<=``>Ui*1;Q)C*dJXLAR{cm(vqo%!STMPAu>Xqa6(&+pHaDb;g`oH|0 zjj4q&oJ?&RcKW;F+y>++lEGHod=yo;Ic{izUTKl=O(;a9#DQDGc<@D_vZfXYT_v!c zuIr~uD^OJf^A45_a*HPxv=T8Hpok>^@+)>`uHI{{^LAIdPFGF8OTH9Xs|ua)|5RPl zZ~0;q!rfH4vB z3zOKsR4@;4w4F~KaV16Z7#l=b*kKuzUB`gCnQX0KS7C$yQ;3J1hY)->Y6P}7KE;Rd z)+&C&RXpr0Y7G<*@*z%8K*4-smsR_#8VdtFDDZrflq2O9WJU*#9NSj z*4G8JAr-!H>9%RBYE^4ucvKcKuNrQaf{F*JdF4DQ0R=73DlY=exR8>`9o^cQke>c7$&iQ)av3Q$s)|z- z8nZ&oKaG8Ba2Nmbw{GQCXxyFOG4cZc0?Pz2!|?J`h#g7L!esw_bA&!~7ampK%C9Q; zw<76V@kqOSNuiWRTmb3EF;$wX0my4JRfG)SvUU?ON8&!ho*i_|Zj&v`)=y+;#I7#w zN`Sv;pH#xAYVOFa{JS1fkHRt^A$oXK41oOVM+4zw%MH`d&ajbV3w5|*((c;pq>K!- z>h%IX%+MXf5IHzKpF_my_FDB1y|L&&gMScNf3 z&g%OxtEucW=m6QNl_H&DIte5~1Jt#iA8X_R)1Mas2u8cuAR@#d0 zTn(3(tkCu4#1%@!$dEUrXhiwr?-Yzdw+_-k&=bFJr>XLyhb~2uSk2fyJ-SmuhN~v}&ZrM@TS3D%~0lX~(E_eZHCCLa4H6=Bs z2)Nf6-L{Nf-D%Ugt-0CzM&7shr`&QZGO?jmW$9L$w#E7^U2b`(QgdW=adcTprjo4x++T5Fwo!Xc21Jm*ItP_^ zNlsfzSGv`{AVcL$4T0mgiNaF%`el^%y=P8Gn%q_IsYrigIGrgs|~q&T`%3 zc`n+I4=qFXmW|#io*YN6Xdn>VLJ>1_-&U=j$Z~r+%{juw6L)tsEW}wzYM2bub;Bs= zFvTYI2m0==UQU7>y-SOvdXaNNOlwUz$gt@^RndSRw7J)1lhdF7D?4vM<1k8i5n4NK zjV|Z!OaKlP#L%QlP&i?fFoOH;j%vd1(iA~5@ht5bhBne}X2lDX#r@el_dPjHIJ)Ju?Nt70w5{?mZ`9Le=GI6Z|~ z+wet_x z4W+rNKM9B+F}hu*)T;nQMoDql4Yfw%sz^w_3g8lgXS71TV^-?V1>9={C2cO{u3R=g z_~-Li;liMYow_Cwfha2=-qXtcd^uj;pdj!V+;Z+W3!bCAC}!wJte*|q*L&H;={X@@ zQ=pz`F;%Pb5mP^iWMdP@9(nt|pZ@G}*j0sFmKCL3cbZ*YG;1(>%Mp%{CgMh3 zH(@br4%E~a37$jf<2S5eK9!9HmUTCwL~x0^xsthufMGH`8D8dHD{Q_}9(M?3|CmKR zd@eeurjpeROt(rvF-eMH>dVm~Bw9>LaKT=%=_+w}FOlJi)`sUiu^!g~W{m)}rX+~c zXM-6QC9Vm4JujR}@at-^Fg^{*;gfE4pJM!Uy*L`|DND}cudO}Sy9W-gTsVOu+>V=jldO;4-n5_hlE*YzkDqE%f(zD<-iKJ__JC3oyjXGZ)SxIy*LklsS4NZ!|a=&;Dno?PRluAnx zG7!8b#Iek&xs=8Nu2Gx=2TMKd@B4eO9MWzk%lo~roC{|_2P9^P$+gHwmK|B&!5L#t zvl`|4x&e`kw8hiXMq%PYQ>DB@W8j2EWussa+jzFKz*M6^d^t8H*1Uj3PT)i_NunN!DIhGEJfvUqaT_odb`wcC7;edvO0{PjxSRLdra7& zLFv>`HdkVRdfdZW&U;2Lahn-{v+&Ud+yjEb<#6@1jWPlV*h@tFY)BffU#$CtOjTaR~XPUHokL?-dM z^=?w*luWcFU*JwGtSs|Qn6*7ba>ZVGLR#M{2KuGs0wC*{+4Z) z`U&%!R-s!~&j;Ww0s=~$2vRuJIEfkI+@Wha_AYe*OP)8saJsE z+8&#cf}>m|=4?Ccnn*&XC#`Lbb_KlU7z`NAW^y>BrYNEvH9Td_8Jw}%xot9)c_wQW z*D8H{!vKhP8vq{!bxVqlSMh;{Hl1iD^uolKuo%Yd)rtHCf(UmcOqF7`2b-&Ec(i=* zKDGTUsi(vj3E8^$ohVvQ^iLGIl1H-b(Gi^?;~jTZA+JN@@Z`UsM*F~m|5eJY|CTa4 z)Bin?$Hw^oN}2T^DYO1d%4`h(JZAVm1J-}o%=#}jv;M zer=CN6MppM285B^aU^(N;1gvq21K(s{@Ks5-&3`78~eB|!ITv63dc&$NICAYuX!bV zja6OLTC$DLONj-7gc7C;yROF7RrXfek~f4SeTDthzMAdk`QSr-M*mj7&R1PF`F(2| zL*eV}=60lsCQnk(D_cjNdHT5~3{%C_u9{V;rRC}Rd66k+Te@F+I;HLznLv5l`}nnb zevWjdxW8IFLG3Ooj*j-Ubr$R0y@yOVS386FS-`$E)~(nyofmzuRb~x2gtOT!i_36} zn5-_lY9)+X+^hg61S6mOg!G{{u!t(mnKJSTwZK%k5H^yqX@K|%5~X^%d@tksc|EiC zO|i+pC34joez!F<#@?g;C-6+@|H1iNSJSH zPhi&X;8s;w7awYk%yiTfy|z&n%j&FJ5#Hntv?=_w>DiefMbuvq;-iM@uxYuebOf*n zwe&OZLPGng5Blx4;oe&3l031fj!L#^xM*9peTDoX5zS7(H@@ng!_NsbQ~~J+D5KL! zKy^TJH&nq3d+Fousue8b0<8LJuREbSYLFD)EtXPG(y_B*qHHIg2C0#Eb@6DbBJy9J zYw6cR9w&cGH8`y2P_LLr<9|`)KXi z*QxF-{CiN%aJ8`{Y<`zW1-O$53Dw6qN|&74AZt=y?O>qD?sj+6qa!jFaROk~C9|~p z8MN%)N6(llzl0`KQHA4w(RxmpU1?r_vr90ya%bAppf7OiX8s1;Ymu-T&*DmqWE$Ob zVSwnhVjWKpKtN%;4NqXd1b@9Rukl9%A3{DhKfTk8q%>yY zTgJz&I&7?b>$+M`G;tV{zO%EAEzf`o^DWCK%F^zSd{ssDm@Q3rFr6XoTDY6bVt%(d z$Ab1)JcNb|BJ}wI3g8?(ZZ8i{pyeqVQu|Hs_58tQC8jIEj;GEuZ@Fzx7cjYU)|vro zv_3}lsuq}6uDyt`q6!XNIusfp?0tqsBeztl=D77B1dMMiCvd`PAy$3FrlT^kEj84I z@>@&t(AAKAY+#WkNTsc;jBrdqeLc9#YZ@7F)i?;9cIcu@K$0C^O>M5lspl}9Txd3ZzitOb+6yJP z`5{fsI&jSk5xMGMpfWj&b!AjzNc#k(QfDk+1}8=;>*&v&$)HZYine7g)&_$!p%50X zXggRHQ8}k8ppSgD(!8c1u=QlTc_Ht7XHH2P$HWw1lmRHOGtEklj{TUORcz_Nu~D)K zN3$mAFPqy9Be|WO1a8;Dm))q1Jp5EKm8Jy3us7+*7<+q_&bp}27O%KKdzUvR-uiAVohJXxuBc| zTVsTX!0uEkNz%+D?Yz$bzIV)(D^By7EVS*p2IVTSg3&;;k8&;RMbQJ%8xp<}caym= zE5y&sKr1Mm5f?bCg^T|7rgg{<0&qiI$m%j2_5_tXk__L&Vjn3<_^*2Zv#-epR=Ro- zK)^5h%_!PE<52#Icp%wxx-ykp!`NgMQ4o9x6N8D|RDvuS)m2p@-)q6Lod7R!({2=v z!fmbvrTE?&%#Ai{Wd(K8nODuFdP!hnpJ1%IrNXuXI07g?y(mK;qL3p)volX4>q7Eb4U ztdJqd@``$C_T=T6guSc=Xfl#9s*u7naY=o8Uj1?bPVWsAo|OhhzEX$YolxLK1T6lr z^s{RN2?{GNKE$Tz>_BOZ=xpe-+@^b<7NUTeN>Oe{`G)A63d4~V^(DeYEhwY9o^E%2 zeF)H!>C8VF=+l*)s@Me(alG)O6b0+e;NXqP{woor*rOkSuB+DjN(c4n{pg5B5_m(y z$WXFXsxgv_6;LwJyk~8RK;YJ2?|?5B#PEbJc~%hAN1Qog0Gbm7^?quS*YSr>=2g z*X6c+S3@M)8cvKkH52<>XWhU#s)8|TFuhfmr_Q1L0HlfsFHX~7LgGQ`WGyP2js+jK z^}EJIuXp+D7;nCb9z4u;@6Q0M+W;DqLc_zkEH|3Z4niGu>2YDc@v1@^fUoSyE}!dE zKe^HnlqFFx#$HN0TC!NeOaa`wt=_d=JWZe#M$69I9}ZLEC1>k3(auSfAdS~UImUI$EHTY`z19gRihHyVA?6Guw&(IAcT zA`JMcv$pZ=9D}-^!z_MfZBIL;S0=9x1%OjxYy!QtT$F1Mi61fB3J)m{+%=xW(+1gn z=2#$y5`8*J`5Flkj8y#}F5I?q5!pZ_YNRYw$IS+_g*kpU;rDv;*nIV)z{7_l0T_2A z^rXHi{yY>bZe?}1X9Gq-AhDzMclJI_dyD+@2=@C={ZJQ02s3Ni1~m-iiwccAKp?uj zB$-2Rn=9d#Vni#BnU;G^_)Q{TUy)fDipoQgneeKBq17*u69urDQY~>42PT z8Uo8$jF|Zx)Y2jYD|A5?;?@28h|uWK(tfIg1rQ*VNbZ!EWYPlk`hsfr?06Go<&q97 zg1pJtej*OwgUVVN-czF}mOQb~Mk)Y&*|kXWsKIv2XTM~iV*HboC_DhxtQqFK^!t}j%&w%ky29-DZT=@*uEgo6=p^7dAjos;b!e% zy$(7Y->W)^{l!3YJ=;FaZ$G^U)N?ql1CpsaP9okv>Vsc|S58tb^yfSId*52L)PK@~OESvwD z2?Tjt{$QKK)Y*G3R2v@8nlTf#+LecvOIF|j+dly|<6j(J9y$l@0Qhi^z3C+WX~-+v zt<5I<8a@Ksc)tyI^}13HBJSM5z!0F@6dari1pA}7b3z>IG!~eia4J7IW)zrxu_P=5 zD|kVU>Lb}KC@lv!n*L4G2wd@*iRG~)6mH1VJjjb<dA zB23Zx7X9fyd)~%qssQd{1%=vlI4mm^=ld1?u3CAJupWR`M?NUHwQ^Mzf%~K zcRh|K38>0KT613qe(3Ty(aunwAMY;)vGQY`jay-llJDO4#q8K72ZVM_uu}1RC$K&vgy0H+du`GX%U91QVaH~_b|!J-F5J$bd_eJ51w@jbn6 zPYjNFets3)`WGW8MwT|>0Hp(L69yhAa{CyiVlGA4ZbRMka)hd)9YQYPW%-0xPa zmqlGi263?t9E^CKivy6LjJW3(-4)Eau4SOuv)gO?*id9SdHqi0Mg}oAYiiDO?>1V* ztM~Ix!WjxeM*T>SHdDa3ADgQARr`$ksj?NK_N>65M4j=3Js5Ja=e@x_#0Q|EOeROj zKw3cG3IXpiUk76u=oC5rIYEN!z>eLoBV!J;qs7-sWP#FIlJeUq(S7XzO<6< zIaVY0H>g@@3bbDUrW)W*;RRb}X-bFK5`J5hdF2Cig-BSG(xDl?aJFCAc9NQ2O=75m zx?174lt9H&e%p!VWHSa)=LWV zifSW@v*>+q(y7hUq44(C+#Et5Sw%$>$^|-6TX@o~eYlM!0|4E|-v!ct+X9&|I{f$6 zY}#ul*Q~~Sr`>O8D9f};xU0Vbmgo?|C<2%Rh7&SpgQ@wM`+pP8h-3_TTQ~arzE2_S z=(Nk#H47q9uBKCj$RyEvM$Q9TnpkWZ2(C@cULz&$*H2gH^JadWUw(my$4LHbQ2O6- z=YRj8f|Zf;-?QxhAtSt&vHv#>iT!`nkb1N(Yqwev zfBbR-DS(_8Zx)DL?EIQtFWJD5%3|c^fn4S+)p*R7%}Zj6pYI3%Vi(6PxLv`76_-zP zy3Q9u#1B(P;LIFn*_odCL!<5SpY(+-PQSA6G8gzY{c>inMQvu8?S``q=h@!co|z0N zjxX>WY0TKlv3L20F?R88S?lure!bwc6CF8#)NQA-1ODKca{kzV+BbPTj%>!be{y;S z+=?nbMDJ|!u*==O>Y(&TB5sC6__}&2zcEiFXmB#&MJ{=JS$MLpu~!!}h4M~g6XY*F zT+_d4+PW<-3^b7}52`%NvsPcMm#C3qYpPcIo@suOM7d+6*OAEG1FPR?o*hcj1ubbg zEV_)eoH}KgOf0&~oY1Hzcr2ojw{RryNgC$*l5}>R}UC7u2dyohN;F-UrvrpMdSgB%WvDAJqBSVkt7i3 zbTf8Fyk|kSCMV%lPr=hBV-=TnPq!d^w|lD1?_NvNIUCboDO9?0J_m1Av!>`Ba!U#~ zQ;n+>RI>Urk^P6$DZ}l0!Guj^oNhYkhs5c@I?@!N@4QNp(IpK2FdkeL*6o7f=}O*w zcSCPIu0;sC$!od17NfFNgCjaziLQ_wmkjfJ-{_~2ly(TysO&JT=wfN2(Bo~X5D`6M z5o}auHZpWeFs!A1M>M~l6dYQ*)dt=fk1?|R*3@SKrRUEhr9)!^MMw7(T4$yc%)JGjad*Lo>y6RP% z*>F*ah;I$t%C1Y2R?&ESOwBLUWS+MgUldM~X1s<%>igo#gNjO3kk%~z3R1<`aVh}% z4A5?W@nK;Jqi;nMgf!&YGE*+m=;az^lI3pKrKK^ne7H^`1TJj)R30W3-VJalTl zT+dxULusK>K$1VzCwZm%z2a#qezgJW2tDp)Il%GTVr~k0%J7~*xK`U@1X*6Lpf*5= zloy&oS|Aw{d|q?K$HASTcyp9FVNpBkFqBit4G#8VJfR>0K*2bSm&bZP`S5Yt_o}yJ97`*f{Pn3GS{OB@qH$WDT)tz0f+yNwKe0vaKFU~-~{+}!W#cn|t>a6v| ze>>C!lm(bkA80s&`Mfaz&c|uoB{u-Sqnfm`It|BbE;$L~k)A&)U~sKGk$x>)MEY-G zM$*Pf4zTPmUS|5e|1SP*>ef*0(WCiua!Qzve%x5;;Q2nn^BzboA>RH%)=`4@fetPq z@?oq$IQ3(h(wlgTtFS%u8Yx&iMa!e?Vvz>+@z$sPA$?EMyfMWn3l$UBdsll_X{eXg z(-eJLEB1E#3bu`Wqc!W~%_AMq6H1JWU%AgzeO;pGWlf()KFAqLoL$8=r$FG`^w!4} z5o2R01@LSrrZ%y DA`j}1c%ko5_Q2w+HT22x2-_KYza4aMOQ?7VcX4I?gdd!7$T z)+NVJ(LkC}!h;n6z7Qk%jj#a|h_eNZ1T(^Mgf0$q4dDk0U)5#6-rQB&$q#oGI|pFwGO&!lpVXFTCj*6;Uasv(mMr?ZX6aDY ziehLiAgj%!o(|9-s$2Pnh48rnf3c*b%O#+COMmLL2^bEqCE^WWsKl3I5&}+X8N}E= zyM;2WMs$7vwpck}eOP7)RvWLXa1Tw8VwB^+#(*UnU<7zA`1~z06vYKthoiZSa`qH{2eZNK0K#_9FSU-#Or)Z~tp%{pcXQy+l=fLCePuWj{yO z30c@p3b~VP4za$ZZ4L?H#Y@;J8)j%y;C|MrUQf5r`*ha5z9%9Anf>{}^=Z`05?wUF zts%dtg`nOUhacx3XW}~umar03dM+h6^-_S8@cr`GzXfKqz-9@2gu>hi;(jLNAr5-a zyT2RJywGiiAodzh)sA7Q9Jy#pnhjnN+wkKIuObX z;MALkFxP=7{Sn$a(0sP{2BYu?U&!h47>l(L?bkb{I*b)L4dEc|%rc|CJOoxKKUKIe z-lGJ%EE=fu$dPI@hT#n)OB|sw&KDhG2o^*Wr{wvTD6#~D zEljRq!hsFZ!}$bA!Owt1kbB%IyR|jUp{@XyE%ByF*}`5b*#z{p3~3U& zrbOv~*D{5W52izxP69r437U2FVByuv(h&Sn<(jtGeA03~6^Ri#`c*Q>QzRmZn!C8#dKvQU zV-^D5fD1_-zm?zfLSAIzNLcBs4di|d#jy@`RQF0wT39f~EnH(7x8w^fp1kEE%VP zJLlj^GWvS$7gBlu;{_yUoN)nlp?(YCT40YQ&U6-9xhRb6r4hTECe*46HE|t+g zhY-c)ZR|60u3dF41x_~0ATT;MTE9b_$e* z)w%ib3M56sqSm0sPufad-<2E_3QGv^_d4%&^xEWz9-AR8_q`&3HH^*~jl`_7^))Jv{M%{fG;eds+2>=ZtcCZ&?9Uc8xg7F3-v&)~s=FJ^-RA;6c+TUxHKxnoc=?51yaVzdQz#>mcX-xlHir; z`mnM>;xtuVM1|1jab&{-L3nioQWK4z&4VzCG*q!G0}X;auZ&p_!M4)6a7d4Tmov@; z{ZpcJy}bmxUqiSo?pE~ zDJzQM^AXpNpqOw9wF39Yz$}LYS#+f}I#8k$-H5fgaDsUp%7Po+7%fG1EjaK-Lw0CV z3`r(B8Y@@F>U00P8rsyS7uk(B5&GIj;o{XC671i`fFa@#WTqO+Lf)+>6~(GSwahib zMNSw5PO$C(*J8MZ&_4=w+tU#`i|3;A_@}O`ve%;&0r^-h)`X4;n$Z}MvfM6khFL_bX6c8SCt#YHiTUQiLQLC>ONv}ik^ z8PIwR&=7T5ob5n{B(tGc5D*^cNjbxbIYANH8K2|Y@~x{!bxP*ZInSr_pO3~%Tq&4I zJ2|m*Lzn9%?>`HM%S%9dt2}7j11?dL?t_nj$d)R5Pb~^!u7G%F^~BB0`fY`^ljTs% zI#)}C0%xJ!qB!hbjll-yRt>IK%tSh(z znw~@_@pJIsyQx!vcsrAiA}w&Tf|SHj-aZ~Z2>h$*HqfrP0qY~RU-UY1f$+^9En+^o zMolZbU;+IIETj{RtOG`{*9`PiOKF8S=Au9?COuVK`Q3W&07**6>QPD2m;u7gR^r@*FYG}+hen+m#c%IW%YVILcWKYk!aE)a`8_sd5mIb|ao z-1Z*oEXw7zEU!EiII*SIg|~$u2vE>sWT;A^vr1~gn^!_g=-6j|%h_9DIjg9C3!pND zA1ZDg_x=XN!#jqu50?1Dj^Q|Rw6+Q!)=IKeTMc|@&cLS){j7suP)OKewWye|e%04d zf3l?NqP?U3F3+|$JBE7<)_$>b5gPXTJcB1Hg?`+`i>DwZ)X0}8&yDdLfztQ4Hq~UI z3yy_I;A+$Li838?ImAlAbUl8rBlV zYM{Za_fZXsG#Ioo3VL}G*l7OSU&=P!>7$cI<6vQQm58YjcwVeYXtvZdnZjfH*>IW5 zt{VE{T1oBiirAE>kauKvPVd4cY9$M>xsP$9pQ)(8^ojI`gws1!@l|NBG*4;9a zlmqa`Zv~Pvpx5}1MnWKI5ybG7fPO#|du@D#O`tOt_q}Qjrs>XAm9o#W!B8PSfhBq_U^Ro! z1I)sup2ZbTsv6Y5OGZ_v?~frN5<<%TAhAvy$Zx23iCw@OtH6wt7G9yJ>Eq|v%W4{J zJxr5qCy_7+(Z|TVyNr{GV0YE6zVCBnF)*Ol@6q+d5o&Rx->b>vNmQDiucY5HXtxeW z$?y4cTB)fcJ33oioo>^v_xG~etlsa-wD&E`3NgG9qsa*eq+7-DfV9~&2NTfR_6TKJ zANS+us-IzaNmu-(IRfX^#oj-A`STbqc&S$qlhPo>>U3r`d1lZXZ~mKpUV)(e^Z7y*#7_S{(Axf z>&6E8@02sS9oD)RST(U9fO*2S;s{e2jr^1henDRoFtWMV#4 zjk`kr$U&RB3M5Z}Dv2GAkTu6ig<{sdXf7=1P?pRsD;fdPHS3}rS!_!a-ByvgK6wg* zFsU4oEI%ue2h*6i<>5vTX)hh1O66)JS7*Hz%TD=nB2v*`)$FOfkkwZE4xzAYsN22D z>fH+OElgQO7uBl%Y(%A3r9UNyLZ(%!wkdr#>E)ztnQ*c~+t41&^13_NZ=h(^n$M2< zF>Dqgr`vSYv90_-<#*q8?b(Hw@hu#bCQIOF&|o;>?6R5H(T|duWQJG5i;7gU_@m%b zXdC)?PkpBsAbtt9vaLTShVp{qp)Xg!)Q&cpF5IXhOQ*$VNQZ3WN59*r^9GjR7#24z zwr}+wZ2)Q&>?%cy{CU-#%Ws5Ho!P0q5qVuuBrQgTca=b8bXa+^Z`-zpo41Jb?QZ)5 zTr`_?-MTManh=fDg*#<;<#X+AEHC8rYNHXa69u={W!+iJwVCQU?Qgi*9s)t+T-bEKvzWJaK)6ht%=(1q)eVdiiG2# z=VoFzWk269mIWoa!G0aXz1|DVU7s{ak|=3DE%0S(|J~aBm3nL&6uNsC6>#af%PoM( zZLn?YxALsgM=l+Z|IxU1S1`npU|@)@;q#|qnogd{b&Pv|FI>N#WZcJIeb4py9_SjJ zmz&#W-etPeF#MBn+oYp*=P(UWxO)sBicA8+dXhjbHW|KJD?F{w`(w|&U$LA52gih- za5!i|J`j34y_G6d-3bqz+a%!dRr{PMt?yplwo`Bd+(GCp7gy zf@*d_Qw#tNu)y6ym_@n>67He@Xi3i(S4#-^&f*177$Jwm4NC|dprq-vO^-KYEl^wp zLgVwx-L@2?Yc-ZdRf0@q_N+KPy>MxRDurutM%9C%VL9B1cfd45x#2PBP{nAJCjkrW z?wmJ5D0g~cKCy)}j?jWF`S(lO0O$?R?o?bBfY*rz$1f{&6=PJ_& zt_GUlpN&Ks!;OUML=S5qJ13iTCp33zv%e9tXA)p&HR4V@88HtJxmPqHl1vIzhr_3~ zZn2wlxuuH7Mf2dt!$|97c>Tf_XflxB07sYv)4gNxTE?)Mn?!LA;(o~YuDCM|8ILW{ z%N0}%aO3_{?ssA1wrU~EXiZnG8>;e}>dqYKT@(=|%&QaQo(BKC@YJJk%e8cP{bj#= z#h>ru15Wy(-e+pBKxEVr{S${BNaUdNvXPI$2^9a8D&Ie;#$gvK(+NQutLVocEs$2m1D~u(Cq@7%v+G&B-(akid(S6*lTd(VhQIFmTj4RE` zq*G-P0=l;BdNgK|JyhZs7#3sxCvA1hs=~#@?U>_8T>ftU?(-=}Wdl7D5)KFN_#?n^ zFR^5MHeF)cskAT`cj$vw5#l5Kfaed>czEkOb4tdGgb<6?LKCJDh!^tISCQCACI`IT ze*juXaP1ODdL23xB&lLeQqL^p5wY??Gd;*~8-efg)DL<6jNOn*#@)%w^kx=lpb81p zNi@0Lj+E|J<8pnTw^r0N!+d*a*Z^P8mdc1vtKX#%h62<+CbMr=nXqXurmdOn!{{@A z--FqaiS)|9dm1hiuB#t%LA zsb}wXt!o^;J_*J9_w0#7kT3-OBERW2K;zFmPO6{AiD-JRAYf|os;^5MDQmsO3oAcc z*RLd7KRPEgAv0&Aa5hwUA_k2p!nR{+u8*;Qr8bI1%k@hwZA=vbB?Mz$*m5KzmB?2l z5-$}f@idfRv<{5}Sv#|~HJU`-6Bg<}r;BC1za>bnRSAC;1s3N#du+Jq!iF{eIDV^Z z>nZEIRrX<54Gv@8VjpW`aqQ}wSW;HRnur4nR}rD|}C zg4ZY0BBk0W^i%hwWXZo7a2@k&nc-BP3Q0ZjoQ*{-ya(U{OtjRb=*-vAt0!WaOay5= z1$1dnu7wv6;Ph4R&}vz{=U+C9s7xX%YQcjl>ELC;vh`4Oxj393y<&>gTO_lJ5i3wJ zh)EFQG3ilJ*KRQeS*5J2LWoMoXl!@2P!zPW9W{ty?P~GdpX3K}!AnGzv{Yw^|kN*L0GwyQEG>o)H+0ix@Zxbf6@eacJkLce%soH90 z?@`#g8dHYPKXPv8vDxtc86zIZrS3@P9(IJBTMYQ8Am<(I0ySv7UC7f2p2?WX>#Zg z65lG(&v{tp$>eHakyx*Lz*R}#CWrt7JP2FqG-MSK&F_ZPc!W`fDtU6R%ZTlKA0G8i z%A^SZoy6Iwo!n9f3IoCpw%g3A`g)OD#keB^F*cth-Tq$X0)|fYuKhg{a&$Sflq^uU zXMEZ1()%52#CVX9Kn4!^?LnsKShaBx(&_MdRED=197?`+;`<+;s?7L~GPN6C$mIYUHO zPg**~^pxJ7tU~Oza>RWL=~TW+P3olD(M{evInmU?pX~_>P6SW7IdL&MpiJ%UUz^Ga zeOoSi;iIm|YxlPx)4|2K^3Tpm$-$Jzo%Zr-3)d~evTtR;c(?OHIHAzBBYVrafRlHROV2uV!aq4g|zc$k~MOCw4BT5ao)}cPYV&TfO~I!e=746 zkQbu&u-AaG5v2^uO+iHdZ|U6rr&yw=GxTSNxvR=8J^1Q0+MU?Jnw{6;I1;Z}Lgv1Y zJ)u)Thxy}AZ6X1;Jd*dzrQ@LfFnS+oOzc0}MCXbSKp9+{ z9ui4cSc^?!Bo8%GpIimINLS*C))MBJy8bs{*~e+vQpS4(c~J&$>M@yCAW|^iW$h~P zR?YSv{1Af^yyw)o#Wzk1_~b9edbqu-8KeNuV&CfTjs1z08wF4HBFavd&+wBtDeyho z#@-15#Ci!N4Uf+{J70vQ4=zDhM(m)=Ewd8p=0 z)SUk#Q%`GY#chtF`tIrt5W!NFtpqy}awe6niEdz+FOsb{!@Ky~w>(8gh}1|<=(hdk z{~LG1>2xZyvAt%akk3frc(T=Zo1Gy8DWmw6_kC;XcmHwVBJ|Asnm5ho;p=gK&aUj> z?fiZ**e#tDNE&h=QhDU)*B}cyn>aZ=a`E0op2n{$FUtg2r=zP^{FeSF1fFhJx4QTH z;W)C_JCSGX6~ss+^Hp{BivG=;R#9Dn#47i4*Z0%TJJL{sI`m<8JGExJv0kfo!e?2n z<~_Ki;yW0%nBodM@7uRie61en<)vGj-7NI5aISX~yr%vbvyp zI%HY?%LM0Qhz#elR)*RIokeVyj-z>!(W1)tVln5_W@m@wUfPZO^0SNIRn=t~Bv0)| z8*4f2uS7Fdv;t9w*2PV$^~%P6_g*k)mW7wgbAcorvS>S8%;%>hk}AkNF<``wh9Ske z55GXZOffl6By*9DpyMfP{ps)_*JPo(7CL9a*RT9Zy*ABb#<8o4)1uv&RMYX*1Sw*M zqJnS5U^1GsO;o@eC>UBOJZ4=L0ah}#%$-SX-_os~o1~vaY}?&$($;>kl!KAbswf4K zwx~8Jf1w5!K7tbc91Hn`+T>>!A*oOWvh7?dGRY}jmbH&k^pU82#GZClQBP{NJxs8! zLb-S8MHi--nUoD1H(>a~#m7ia;*Q`_o&T2?z+M z{jGX7jA+8Qs|7JzIpvFRw_C0-p6kQfoNJTZfsj!7^&mZbH zcQJk{*MfhfQJ2VWrd|vaS>i1lCC-Pu_2#r=N@}Cm5UR9ggKw(q2#f^u@|Y-D(IQkf z1j{je0!lXe-)mwCXdMFA6C1xdtdiSS<%h-Zg*I_qR=pHdd6lCejO14;)cmP+ zZl#cbL@#G|Sxjf*U6&I`=0SUoWPIlf@Br|L+WOR1hUo!jw0a~CGd#wzRd0d2Z>8NO zg{4VZnr^A6lb;Wf6U0_^8kZhGvRg|8KK@NCUXR}SKFvBSKj zPF$Q?hAgtXa+xZLh=>Hxg3eVF#8O^;O8SI?7CdEIGPe`*FD0Vtq=VR5F+FER*H&A9 z?JqK8c7L9Io%kM@P`3K|o+X*rVVfkV)&}Q%CTr(n-RW+?7#PEtUwso6bI0;C0X~`@ z7DqS?n!SYt$fz1jRvg>^cp$FLy=$9>H<;R~NN6=cDIm8`~xT?1h3g=vTdmu5ho71xzaex&RuGM$#< zl>{TX)`mYbIKb9|*EUDbYX$imSKkjME5?34aynxo-aOxb&76!2iCrOeNEv;L9rv?rx1f$@B%3W7#a|C5>2k2;5Cpl_*^d~!lkT?>9{U- z_>42OP}uHj9mF~k>UB1vp6hD`K)47%i&T`>P8jrPEdJfOeZ4=q&-ot_7`9>}9?d-+#>)b$5M)YVpwiUJ}Srn^|9h z&5Bx{$&}s5(=;3dkInxu#v%Nce^^0>VP@yco3u-kvE+DGwT947 znWJ@_S}*929FsxuAX`Hpb&}*<4B+e5C^jBwJ(9B-Y<`C@wcgr?80uM zYtk5}DN5zRS<0lqf4(n;WSE!J4cs9D`)spOlTf)5Zv+VPQdvQ2ezmEQah! z;M#HUkb$S>D#@taNfdUtd3ZEgB13z?mYo1$K&4kA83>+|S7yJ5m|Tbs#5{b>B9Mqs zZ;J?zeXb&Di)bsPDATsf2LspVt)rE= zHzck#r1P>5PWGPEZKD_g*`sO6(rCSp6_L_>7P8Dy-#UpMbivG~lUyuw!%+V@vl@3q zxN^b?=She)hD}BsG)wSR=w#TI$?vciSCylqzA^0xxxEOn=1>NOzh2SJ=zwBgrFfto ziV=-I3tvV{v6%tI9)55I?a>r0votJP;#9}u5rRvqlA3A^EY{h#Vk?6*75eUp$R|b& zp`6&v4=`toNS~0o{fdCUoAsvTeGaJ{o!89?MZAPcjBs94m_ z7sHwceTa3SGIvUSP>L@2pU+vG3V#c`6w}`>;E$mUto>Y#XXoLOtJs2AaV@duz=TVn zJxFN_+cHr_@@-fW^03H~{_sm{bBS$L|ZOR#`4$6J#~3mx2Z4nCLFK7z?DX*y;U$*%{d#&Xkng)~P!F8ens=)E(& z1y0@Y>jQBSka1whSV6zG1|fkB@8Fgj7ZeUPNLD!)3QfT z%L7pCaO$uW@J9FQaA4&qDMgYwKonfC9GK(!@A=};2;;t;jVG1wOs12<#3juv>Plb` z_r#i@|r8YR}d0*gG+h@vX|qzf($*>CIm=IfZ~BASH=ESuvBin&E2bFS5h*cM*=KO;xa! zOKRPx?(k;URN+fz?&Rh;f&ZSV&vFW?;9w#tgpDhHX_z>BT*TAYaT?=>=%BYO+BJBX zTft{GEwUQ>eIL;EM?0LE%prNOzwiACID@zCVEKcnrJ=rW9{9uL&i$p} z{QNF^ifcZ{$<5>gB394QcE1|qPJ2+vEy_i}Bb%>j@u@p_%ozDHp>0vJH@e8e4Em0a5=QTQR^5w~atxdR z?Yp@`hr$52p#3QT7&xqW@=LxG-B4t2_@Ps-9F!7|y^dy~yjsGZ*-|=sziqhS)8QT> z!zCJGS$I?&w>cCB=9Fh_S-la;hG)!q3v(PJutVSn!XqFWZl9ovTRD}=o0B)d)(f*F|=VF!l4Ec$GsF#ZRdVurjS-J3JI_3x5GFQ3)m||UqyUz zAi1)y-5kZJRv#EjE6c4{A^_MAf{8H`F@zjALcu(Jjd-PrZ1H#T_pDzGv(-%mgY z$L7X;#e!dw^r~lKU6a&03-DJ6U{4!p2!qTNC>+H!nmE;;L$wTR22z!C0WcgOnb=- z__PQDOR2cvo9t>ZQNSq@=*a-6P86(u7<5SarZ@Kv_#S7o0}=s#)v}+j-alX44SPNc zsBwv&w{W(d(*QhQz`1Vt0K^Mqe_l4Ke-vLvW5-;ROV3A~?P6RAEEElC0$Q0@?>N8j zlkR=zCBWLF!Za|otnoH#FBisF8yI%ZV7$msgG0rwR^jV1dgAaRy7t#MD9pE&(SKKZ z&VMUC2j{t3Pi2BM|8u!BwRb+S6fTfqem!%H)Y;bMbr%fto438IXTOhGLN(!7 z%f!>cyHzV(Xr%Az*y`!{DYfOND@kh*Ic&?WR>-TWF^ga`r&jHz+p{O>rU!0&wpD^U z@ve2r`Xel7At+tfp*mUOl&V*suatPR+KJzE=>3v>w}(4Mi=KlhF4cu>ovC#1D13KE>b0}&YtFiHvb%Xwu4dUfyO7HYH(>X;O7CHN{ zFxW^CCjfnd_qi3`0f*~sGZ0!KT@$uiZxTN(f^{-$OZ{caZzs$0#!f$cAKC#rLpbzj zJHvT`YG}Ux>+m?oHqn$MGK+~X{=yN=3W(F4pnU!9*f~FG@!-_{p%xh;{imICsz;3M zaJ=jL;qzb>m}VFaq8&n^d~|+M){0nEyD7oyqXSUc-d&l&Wf6B&&iE5l8-3uY--oD+ z`e(=t6E71`;69X-Ff@W#!FBqs>?^y?95!JH6oqEpmQW=j?KwHFLv{z%P^}vWku?t3 zaTnbJ|ERcHn{-T$YBDo>8!FS*V#)_vX5lZCrqmol~Y%wRbm0L_!=n(eCD}JY>qmY#e8~2pLUebi zB*$i(SRDay^>yZI^4BzB;m|e=HXFsf zQFqQX5vtr|iP~E7NrHlAbArHf>TI0hiWVRyP{m}d3Qzq>zY*X!hvWh+-5@p#bB*Gm z5(n~7Zt8d&MpLSCqXvV{XoQ@#wfQ}sMBUGusXV=v?2Ajfu-1|wl~g=0{(#_;ee}j5 zUCq|3@Kx8V2NRp5&r`HxM;1CAenq3k2m}op-mr+pm7GRC&t$JHGP$lH0bJ0w3_4c= zZS1F=1t5)yJMKL8gh2&ihWN!fVsS_=ha;c8U_8fRUL_~mTuQ%;_lfN>ocr`e!zT+_qRYBhBf1_JocXV*utw|ck7?+t{t ztz1Z-)BSY1dnaOS2ePl93}Y$ts?1_C80=B0D3$utH%s;9EavA8*9~4lsZI3ET>eK{ zb%;SFw7g^i@#RZxR3NOC>pm|=H+6;I%C7WEP6x5BP&Pt0S1)~LkkvhXlG$T#HpV!4pQDgemnq`8i{aI@D2Zu4u@NB{)H6n5pVYqhbS<*I)aVl-$_8zrjH(9x zcDH3CtIG;~t_pz6{n7XO3hOcl9K*yA61|G_AT~nhRAV61wG8<1g9S0EHl^;&R39p! z@%_O@fm8d;92kO}_YBlj7-M7#VQ7|dof0wu+b+_4>kDop;kE>Ah5>EQVcCFYwN+iV z2PftDs6IDMY?+X~3skl^n%Z?R`z<3_HY`<$e6#SFZevxF#M{E58hY{J(fqcP(L}&v zVnpL*+nH_iP1}9JdY}#S7N}K`Alsapv9?klS|`4Cfb2!vM`9b+Z4^wDhndbT7^6upZ(Pt5c!(~K8= zJsM@F#Mq#$>5f%2RrH>P8VHwS5=8uX==8dUvd`v66(aW?QeQ~(igyM`oQo|PQk+d< zVvndX#yTNw+X?U=CHm3%KDMgP8RDpy*NR8X z3)0C|)rt}si^3uzWt{k`ad{gn+9_6&CLYN<{H%p~NpC!fn5zft%|ug3yT6>l!Lk{1 zSP5!^6=`&=$t1Io=LDIh7urDqOwv^V*sXxW897A zt$%_NKn>O+Cl@WRNjEgYXpAVI{Cy8tfma0MQUb_kW(4ck0xo0$R%wRszH1qF@RIpS z>5BQC5-x|0e&eBYZ7u8kS;K#Xfx}(xp57I5dcOCLpELctySmC}}YV#o7*wCV-fPpW^ zGLw+4<5aD`EKU~Ksk2PTWXk%t|LHB1z|y=dd)KF=e9JD)gkS!)=|C(*-TA6xIb>AE zq8S+i*p4{+)_|uC_anpjl4n0{e0$i)fw^au_=4QZ>O*5Mb~C~AQRSUSjA~E_l8>x@ zzaL-RtcUJ}TVo~g)7w6_9T6wAJ&cz(Qcf0mAFDisqOiG7HhR^&!Y2*3UEU3S6(|HC zB`1DBpaHB;E5@W84H)niL!hd22KS&*r;yt*{<3;=6$9O#F{;>1W-^@Wq!TG2{?_JP zQ}R&cCz;O9(d*L5U>|uDW|A9hstXBoavjmL3d7n&_WSN9fAIEwg0wME0vWNXcFfK= zO|Mjp#^IQ84~mHTY(BOi9iSIsW#-QFJ-1a)T!&G$%?PDjVcTS_8A}WH8&FJUis3X~ zJSsV`4mPSsKW`Bwo&1#t@vIU&7Yq=*0{YZw$XtAL`6~CrP3ohOJg3JoXNjg*n=B}C zVIsjXW7-hFpj%J*tG##4Ob(s7=q!!peC>ORxLDmljp8HTZlf|hPwvHcib&l2SWGv? zFYz)qRUSHfRBYqd6O6dAab{Pc5HaIjg3@-{kTCD|X$Z||IA2J&t~eV8K4m+}Hm zkyQ!VWX~C#37V{NHbhr9{xtECzVL24{9yK0BD~2N`M_m_x%`v#FQWSTUKy0$9}KV7 zz}Mh3GuFOEfoU2{!P4+dQP^g;mB$bI7DHInpecM;s8V<3iFrz#@s1O0`4g%~A>OM@ zGGXHdk?xd%T9%xA*$Q6WGCgh_ZB~BBw>33LXMPPf-wuDH8XPO|s2p)U!iq6;rY6DZ zx9j6&^s{t(jCZcS9K}qt4KR{at{WXnx+pUN=3Lp%MQ#*MCc??q5;%*hyW|dQm%sG5 zXHD?iZ3q*ave3R46Wo^mMS|!89kj@*R}dXoFY=ea1c!g8h=8MWujffF9>JVrLnsg% z6q{i%qC`$*mT+WdWw>kG%F>RG4n#lQ7VoAy^5{(FzVWJ5)4I!`i?K6TtIBx=b;zfq zeiAK#Jr%9VTnq;1?0Z?6D9g6^7+>QSp#l$>LIk9~TQ_9Z?&wOWu4A&Jy|@6Y;nR3m z0=vlz<$@ZmLp+Vx+6>i*K--!Q*|vo~z|-&kWIg;Y;L2q8k^l{mlrm)WFoF5;=*V(Kny6^ig- zfs4J)4nH}Q%Q*cl1x#LUe_`nUF?0m6wZ+v}=e0%LDBw z!u1{_*_e1D9{UC0smDgIyM7j*?{xHN>J4ac!buvepsx);Dis&YoZIa@u`}b?oE8CQ z;m$$eKV<5$WTAp+bEs)ln{q}jw@Dk-yYhN?*D2YbQ%#GtG?yWyKEW@T2`~sb5p9sS zfS|0JJcV`5eq1TR^t%seD)x;Bw&(!*S=3indg$~j%S0Uuji|Lddwx7i;1|I=Qk|G)M!Gjja1 z?_b)>^pEy3G5*VeS^io1uiDG>KWH!0|4MtSwQcSH(cW*IQ}w#HeP<%uF_HeMB0J@%kp-r`M9d^}&7VGh@}GJZZtjT|ZcR&ge?}iN_mih|bF-ChC?3L} z)t-l~wHxyu@4&a%pK?vC5gsLqQ|o2SeB zv!`0~Komu&THV?ipHEG4>Td^McYxQ|RHo|farq0}4s0gzL9O>qu^mURF{;@n}{qkRs{Cr4}u zVWaA#U7$-(Kwnk)jq``Z@Z9KfWgmvKq;LW&7yYRy)*y*&vpcc`idsLv!m3~9lf`=b z*@<)k&)vXyxSVJD^k4oL=7WWfh8-`H^?$hZmSH-^_4L6;W-uf!m2blsNB$62Yx^8Tj%KjuecOUs>5B-BpQp&`_Y}Z!E z;ircpd_+!kB>D>v0;3W+F@*@ee^qr4o@^7JhH#WAjD4dp)KmCMir}?nCjxu-qYh$4 z6-fXyY{R4F5>1c6l7nqFsFtsRCdmo$h~yJ8lBRzKXSr3DIKlGV!*fNX!1y|9Em!nf zYR9{OU1&4Al86!=^eub(S#Tc+5c(|wahZLQ$xXe_?DU;@u4U?WPGU)bh7Dysw}j&l zYMgXw!oMfhd6Dg^FxG1=Os_E4VNb5SA11$P)h94ZRomn%5K(l$ z9#fY}AW;-%E6fa@u3_kDKWb`XqD>hLYiL^6`c?V!vtrR5*;&T+LKZr<)^Sc7HeV~` zuXV|8Tq3!TeFsEJ?goI33k!HEbrvEeNoJIgBJYK!<(cI!>8>pzac&dzd#a~-umLrZ zKLvs9_e<@oJ&RgkdT4uqk!lrbITu*@M2Y!Z%c4p7y7!5dF(lujj|Bdu7bK>KeiA2c+Z{YQ&jW915B#Tnb?L`*a86^-GPEbe^bi>jlYMD>d zeMEq3gD~H3QGv=!6S}4t@8gDE!?UaCXQ>hI8j%Zszn)LmvBO8OP^xv@k!01K{b1-( z`(-HWq}wL=7W;=QL;wd`a+?j>>VCtNxu)mWy6nRBCB%VFn*@o@h;3LLliAm_SY(=! zN>6oP#K~FR3n0OwO!)~uGAn6C> z>W>E>U2qC{Y+`k^?EH`@_E+@{x{h@Z+1S4@Pd5~*tQ$Aca04hgNad^mSfWRgFhpbC zWM~SZ#e^WFL_Wcx>LsbEJfo!=TU)@rbZ#Y#53aMqWh23$rU+fxKwbe9OBOJwKQPUD z3ee~VU{$>rb6KW6fabDgO?EC7GX#~7s4BOv90Xa+q=Kii!n@X5s|rPR?a89~C4eAJ zE4yXl-6uLSI;BAfwx3^Lqz5He)0#%AE<{-?A7K^&Xuiq*7+-CaEMg=gvht2r zgp}~!r&}{81SB&GLN_5PmNCd>xP<{-zZt1^q9%}8kfH}|Zj8;<>0^X|;s~?urBXiZ zQ!cGbWDlLoe7V1fdmecA!#D+PJT2lc&L~8$1a%o855lG)BzCpYf8FE!U>b6v+tk6pbTXyEA5Dt*Oxl69=fW%Y^_pfq6aTbJ+B5p|X zF+1VMA7h)gNU2h?v;=h&sHncnI9XG09A0?_ZJ>~UW>@zB?BCdsON@|dyZPqu5 z8_e|7f#q-AAOkLOFZ}8-uqB3T;;L*2RkpPG%9Tg7s^w=8bqq?fYx4QgI7Thz6E%|$ z=ZJHto)_EC)LzUlhCoNPm7=lS)_3`;>#M!{d>vvlrnVoB85?>J0d2IGoV|RPcds?Lg_LWJo zm#sif)x^?+8PfM_N|39clRrr3QDLNb;0jUCQFi$t`ITszAVgYHd1k!%{@ajgb}kY( zs^7y^*Tqv?DH|)E(58T##EEIymKX`Mi3WpDo=A-y+&tAlRm~lPAb*}at|_R1B`j)D z?S1w4{%kIV8_@gb5G;)e1vG%?5KzaRGx zc!0JAh1UZ%VMxkz=`F-^T@{E|w4$R%b{+DdE}pboJ0XXeokgytF{Ur5EY9R=GW6c; zDwFbQin1ek9u9xME!Dh&Cmoc4KX((!WMRH=`b=qDy#+N%Zk}6Lz1UFtPOJ5UFAO5L zjB6Eo+B$iY!Y@BwSD_0sH zb?9!(*3S-Rl~w)LOdrN&21c@2Ta*rS?`v1LP!W09a@->M=yWHR`0&0d**Z;LAR2>O zSzkl5Xo$mr#qjB)Tcg9UTC>;CdcCxwi2cCKDmGEO{vB2pxB0rVTLXxchk6S{0#(>S z$d7={S9#%F2#v1#SWz(ex&>88G^Z9*-PCJ=3#bK{qR&%osPf;2S^^(}cAzM%Cx`)b z@U)bR-O{x8t_NH5IO>0ArE7jzVO~zy{Kbq!?e)Ri{`PZCt(IhD-(wAa zTt-#{-#6tRh?Lr0zoxB+32U#c5KgQwikYI-eGU0+Xh`_yd9H|;aE&>by$I}Jkk#-X zK3Wp|Mi<#isE8!%)=R?2yR0&gW(u;hTfwJbV1J6ofH2xE;vNe-uShj;?z-ZpLTjoVW z8LlBKnuXq-@tZzARn};qJi{a7`bDN_k!=5CISVeuRS$pJhrx(S!JL4eiAvRk+lmsS z)byuCq|Wj;t}O_1^gQPyqFPklHdmw{hS2B59~Ff*8(;m1R4Gb*o9GK);{nE;SC`)^ z%^;V{2D#jXP{tu8b3T0&U9re3mm8A|@GRJ&I_kSqATlYL-T^W6;6&S0iNO?qI$peG zrd<^e&R!d0yA?dh@W>|w^{ux#HXbr)lVm1qp-Vkd~WS_w4^yjsM?Jw zSD7<@y@3-#i1~3%&?9l@HwM0MPqb+bEpTJk`TwDuQfhM|)Ql2g1*vNq8~vN$xnF3nnt&r9rvt&JcK%I5{mE z)}A(d?B!eCSJC9G3OsLxCWRcHJ6$vz^dAEyFgu6mH?sH2c(bc8unbdi53593cTzEC zZIv+|DJ!9U`@%Bv(=pP>*0orBT+6YF(qNS1%F@eCR0E5}S{7{$Rf2m@_#?jU+I$`<^1M z5X1qNa}FO(Pau(dobd(4@Kt6L)dv1y6} zna!4-k3gESY0W>#bQ}4MtG^C97*g-?c{(48mbPot*a0_Y8^Ey>9!?(fSiCo-*T?Lg za1&(Cuv&c}IJ`QMkVvx+r>>)7dpOcj>wH4);5&#nHIOv;qf>E-_lFaD)rP9kbVfZy zc3uDurW39i?xJym@3NbbD!4Wo(s)S0s&in@+t2C!R5j&KnspmG56ki zB0M?_=B$O)-eK}Z3378C|Nhb?14t|H(N!Sz8{`Tb4ZoN3rzQToqINxD>BhtLrkE`V zA%S(4*b2VO(?i03zF*QeCFAEiot@VkFgQip65$(c8}__OVp6*nUTOXS7t4VS!gD-} z$Tm>lfRvT(W!Qq%&A%s7Ch=ydd3@c?9!jBVGa;nmj&f}Nk%ZW0C`l@xp_7vNFVAShR zn-C?Ucw$Y0%-rqSWs-oWdK8g`fQqPXy;5;u_kq7PhQ<1PAZ3DY9@rCJx zZ{P9XBN?WDf7oYXW&Zap^M8tDm>K_>`Bw_V#PQFef9EqS{|x?XB*XkaL^90(yLKR& zvdISk(ze{5743WKJq`FE=oqgA8z?S*tu)?s`wZMd)oNd61&>8ySo3*kK|rI(>^p9 z)SJ}bdlsy2IW|AF5;k<$H2Xa~Rdx`n^`965)ovZpBKkk0hVpOfs$Jatc=ces)UM+C z{7OioJnnj0d4~S(eku(301obPL)1vepQo7O+G@H~a)DgNXSH4^G}F{gu~c6~?>ODx zo2~zFU2o9wuW*@mlYcaFv%}GKt*UBlT6Ey+6zu7cz0-JPsrP$V97Mes;BuD7hXF?P zDc&@;vxx%_KhjRzjR%qxi1=(I5&@Gxgi3UEr=sboyy3J#y%u$w@t=x^GXyQh)3W^g zOHI79<#gv^iSH$RDJgSe-Q`tl@}Sk=2QE9*CvI(V@cFE@a^ekv zd9VA%K|3uyW=e-}fq~n?Tk$xl5|VALg0+L^Zw?uZ-oM^uElO(&PIy-$IZE{HXAC&n#TH#>3b&KWGD!;NQLRUF= z;4=&^3wxUOdtMz+SytrRRlfFJ>NdN^5+W6Lx@>WwDvv`XEp6Bq(>aDbI3ot$7m`i6 z@mqSe8%Wj9YGCb(b*ZdDCkepas(#e~gvkBeHvt)^Gt)URJOP_NP0Q z7EyMt$27ire4#nKk5+7L^_xa_z~*^%h)2*%3v(X2f4lz79#{)W zdBMpY-Y9SbsUx&mgby4r5~&H5PQ#Pu7klP5|9Od6_-O4Uqw8|Vv%xD12!yxbB9~RA zTocR>XOtQ206H4j3&eom%a2H(jy0k%_W<#C0mmyUo}WK__@VP2P=eloAZ00@;DoY<$=nFE{)x#}k;10P5q zGCiK0BtqZ*DE|GTqAW3?ZzRluTCPlPJGlT;Yl2T(LI6ndA`$xX&CGA4r)oZwn=n4Y zs0K#y(qjwtB@8dHC?K6P1>lCiyF#xjFx}h1*oT|YFvZi}L`i9s^&9thf7Iwz`Y^_c zpkke$fMdsNkEZf+Fbl+jVh}?*>OM@*aLxvv%({6%GDT;gdfvyD_~Jtp>2N{B^Rlu= z_h}p01iG6xe$2Xgdn-XOQ=oFmUfYG&>pMp^Ro(Mg*PYj}`!I!!DEpc&uQT5{5K3Ld z)p00!QW`yi_`*|s7G;t-hWnWmbstxCVOfMmLL}(=J}_Zxv*H7HX;>Ah1ghhMZlAAO z*jwy-+B)7oIzo}~2f?Yunl56uNvlipO5(*Wh$WJffPqtCxqN-50he%s07KE0h61i^ z?lA486NH}?s1$Hrp|a>ina+jN;(kyJk(lx)K2k{W=R zo);5h;q2R~Gj^ulE|i&rn>iOEQm0(+D|6_tPnejJj?eP9?W` z^Mj2nKBTOpFGrL9<7h2#s3+7Eeg;aqdRpZiTIK9Mc^W42vP4l2v%(jSR1n5UL9SbJ zTc?S*my7g=?JwFOZ3v`01~2>P8E^Y*v9QgTBugEA=`q?k+FHceC-s^4ucWqF*iOJ- zgFQfH<4RnROLyXaXmywo-c1Urp4cvt)zcWpRV`(EWsEYQ%Kht)jNC1oCKe0(KPo zSpge$HB=9KsumOGDE0#m?+%MtXkt(_1UjA*s&0&pS5enC;bia*40H_4>{HP7`S{gt zuEP09r@B%>y-AGMLgx)DEXb@4cM82G9Ex2=ioHp_uQ~;^TlxKS)c{kqS84g#=xBU+ za^J)O4GVd42Z+s#^7%Wea^mQyX&YEmgW2L%Te*CxSn|_>D6*X)1)8#C2Q*vQ#ONuj z%c4;RTSRI4_|B^1G0%!j1Z~`s%;7(!5nML*tT0hFGgquz++gWomkQ_s5E+iZeH?TI z75mC5YGLhtOWihzPWv6}WC?e0G*tl_1E&9@UKgo!rT~dPfbJmUQ7E721 z6RoMwSZ1+DNeb)fKdsHW%PR?3&Bm%~u4PJHrcAx%0#FOSu~M@KKVS_n5F4*@A&sX_ zR@(j=7%?74u&Yx+0TTKZ8Su(Rk%`*zw2@i95Wyas&M{?w_Pi1+v{%#xi2`D3z4D`S z74W!&9r}$St6|3Wj)2geY$4!e+gla_L497QGd53<*>`Z*gro!y{hJkKaC@R3^~Wo z4*5mAN`S)&tu56y(K%U}oD9@KKAfR^-k#80C*#)3tfxg%WNPC|9TsD*Mwua$H^*q? z2jqsqwne#Z9DT9R5=Z&E3|4>Cq*0qcvz#C($D7Yo%}iW=j0q2!bD&Y3r{dGp;=%M| zTfn$t(!Wh~_%o6P(Ko$Na0*B~9Uw(aMEKUqXP3xHQ=lm!E7|_QpvSeiUw)l`o%i_R zX&nD|l4brE$uhGs{=3T^Gs}M_*?-`b`CstL@(KHKu>D8rsok++6-`FqAh1N&w(;#EHa|(W`g^n+(C`qkO@$&EB?5UX{=N_DkNAyP z*xLCRifvbNRX4>}*7g}rUm(aoi9kQj{$}Az;Y*PHlk7j@ZbbHgO3a>H#zFawt#Jf1 z5hoH=2~<%)_!32)p$K5j>g)K4eZ#*-LxL1|0PsfBJ7ZXIJMe7R?DsP8@!R_c-ZS_B z?1Z)cV7Yed*DF4|%w||7BL*uP*f;Be-r>4UpCw*{aqs!p*KV#Xr8r?zW*xr_KbkG;zVAEo8rnP7v&5Z*&jN+!Wk zVyHDp#Y7N5@13E{-(P3%YV2T`Bui%wp#I?sT3fq}LsW>Lf$XoQsA3c|4AOy`AI6E6 zL8TsizoH^6_Gi440Uw@KKxq+gJ}%jOcpWJ&zsuv>gNkf_-rbXyREryH%4k3HH>_Xh z1-#;1|6(rDTV7ncCu^@tzc;&xr}jpJ;6!wHn+Lj&&j86QF?`4Of*OQhD(()&gWlLo ziT9%FBXsihVFtQme6j4_T?9~01I7E2AAY@WDJM``Qk9NwghUoeBx9i=cMsT!Dd^we zovN^+EV^p_DHVJ95GH95E6om*;7hHu_p)-e7P4^BV-;56*4CXpSS2i>vIXN|6~7dQ zDnkK~^}ty-9WL%`I;85fXe#4%v|ElgDB0{k)B6y}~)KwjNseHnW)4<4{?2Y7|}@fRwZFQz=9D=>x#&fJ?hL8GZ2 z%x6vlDSPJy-g1G36;ws=7hNHHgZoe79D|fGqAY{XZ*ld5+nT{ z#B#}FzK?{rASy#a#IqM%1Uyc4)_itVQ|qK>&9Z*xBeF!q;_znh-1MHziz8n`vKvwc zZbsauQ#ttqLfQMv%<~3@MWIuX`qjcpy1jNm6nUzU3#H z7dE3#K8+g-q$@7k3*18BvE5O77nYq=$-Ls9F1|RpO`k6)2EeAZaAj&7Moq=!UoeL; z*)n!Y?=X{oHVn?|R3PXENNtzGzOgf!E^60rpB&WB+1#dJj&i+6l!l!&up=N*WSWAnBo4h&%Z?j9|CfdTSZKUVlZIqxp&Vh zCGZ3@v&d*{82K4AP$iBFnKnZQ#DOGr(48P1%q0bwyXrq$TtVCUWdgEG>R?tS-N4dj zki$%JzP04aKo-&r4bW2x^RNP5IgAExp`R=vf!B`chP@DE_k#T*^(|Y7%)`j!m57k; zYnve`r&!Z=9yQfE`-y#tUEP6M+>0ZuD$W*ui?9}6H=5`*HC>CB1a-NiJcoFjVb>=- zAeypCl(SHWSHv)5lHCEE<^;bvdO7g^;5lF0Wr({k#Pr`W8<l-qO<)*!@hd4!E{aFBy_4lt^&DN~v$S1=^;{_qnjJLS9_YoJ!Bd z;VX%Jn0*JNK#3kHhv1*iecbgIfzD~G)9dguzX*+rg0Qbq2jR*p`9OBEbW;gf<~Gsb zV(S4>7TE1>GhCBDfEd)2dVaeFau`q%Dj%$&3^-i)j{AC{imw{-bcdB51^(^|*6#6o z=HHmk-KD(1v6T~E<6q{_Sy*0=osqR(JXt-(H<>y^1Z8-cT{H6C`%w$dJd1+UCyxAf zV4fE0yV5~O8GS=`M>S%p>|}6V;*5}o1>KH|-!bdHMOgKY|E=H3Q>#C7oIE^a5REj~ zCzmtoSErYpzm!9v>wiKPGL&3oUJ9Dkql>0Gx5_%SSHI+DkoU z2&B)x)u?mxs{s`aJ!yNnlw#o!44iJyNeKhJ`&C_6O9fDy3Of+)7}MXrY$_t$1HlQX ze(zF^f?=%;j3&7DP%c@zp$C|Yq}0$|1NGC~=^p;Zs{{azcxZd~F3edGKK2^x_RhtW zUGDK&<=iZ|k+cC|1E`T_am?boC=^%4x|G?Oz#6+R-s!=DPyl1T*uIUr30v}hZ%%=A z`NH3TG_JFnpSIWS*_R{OuTQ1FdFcB+6R$?s_+EX%Pt^ea4Ul{&KdcsH;^u{)=Yv|X zOzQ544A;DLmgQsyD5HD1f##vl1x$Gvb#e1meW|we=dYB{&UeozeQ6zW`~S{vEdORV z7MB0VZmj=_-B|y@HP(OO8p}T*$MSEGWBHGB|ApOH{|9zs{a>-$lGc{pW-EI4i}Gy& z6@@?;tu>(dwj%e+ZZ{ek;v#9? z#e5>91iP(f8pHmVp6-v=uu=xJhFcex^sQqBjE}>Y1EBSN&#cc*FR`Un&Oz?4ZcD3! z{VgX!*=FDbD<&&Cm|un~ZC81VYwe4lAr~E)bjm=O2c4--1}HzkME!cAI!r!dINnLD z*kPZ(`*OUba^v`S`T7;WMy-f@)6I8_(CeXTbL9(%uZH%6Njb|*X{y`q#X+XWZkMQ| zE}@AkO&LU@FoyLTRLR|>^u_(kuTs6$CmlvkIi(-Hb*|xN>)P2a^z1TYy>IDIAVv^eFU1vSk%?HF>tf7JeooUL+EAeP+9I>SRTZzie{ux$oPxBTD=f4Xh;SgMxByJ zNxuqCmB(^n(4QmgZ9M}4%*1h*9_K;_$zr=6MT=}%#^XwM%Yrp|u21Xc$!SR~yxPty zsKRc2yN%Z(1$~^5Hi@qFL8_LjtuqrlgOq}2XFBg#(WKV z$XPoM0^`i#ptCMh(Bh|}k43#GH(y9GO`8`LeRm8E+oQi+fw)YASPU7Fi&-zhRK-#A z)%#e~B&I>!v7%w2uOroxqTGZ=XSk}yCn8bKpYOEfJ~4q@E*phs^5XsYxN{D%td+e{ zAwc^?m~1gO!_A&`tEz+>#OBy@)$uyjf!e-%=y~?(P%T;5+|||?<_3%GrsRW#xIBRp zad-E10JyeP-+SWAjv~z$xC|d0W|Ip(5m$U%g6MPj`aS-vhI)6B2);Q*3CqtBVI0-$ z|1fqBQKBsi)~M6D)3$Bf=1$wTZQHhO+qP}nHsARh_tv{r)u_g5M2v|3{ANUqHRbGn zN^hck+y4vytI7Y{5LzWaivlklGrLAeH3$-LrGur{MbO0;N~S^+Y>0H_IcH#wDmGPx=^FT+wnq+2J2udQS(E zyeoWwtaMzpx3JiJ28-qLf6;^ zu+z5JMM;F(z&ydoHyGNh2{6LIzzsm3A}gu#ezQbdOFwi#Qo&V!^$&e=Hd97%{L$&@ zDN_Uj_oaGT_Y}+ow5HCiBBLU+y990=!CBwdhPzN7d8%Dl@X@x7qNX3i+(91ZI?7t- z<$kI|Zv!k(YZ1s;gs`ux-*iR8DEhl&_xw?IOU~kr=?bI#%y)F`2#XIQ(!%g=Nd$(F zxFb+2s&6hN@6XNGD^oC3MiCuD0SE%1Mr^$4R1fTcstn%-;E<}^yoDS>a~3^d%ZY4; zV?e+OH=WMF55OEG$9@6S_pkvwc#hH#J)py>sLc~1(!F(Ie1@$ibkc|7b)gY8&sVEJ zi2gdTs1+;x{pKi#3y7EVs9x>J|bc9kLwI522%E9)!hQOm&1x zwSLC7jOz0?QJJX$?w^X04N>DJcq=`ZDa1}LsiL!#J}uGxvRBWqo(k9<5djn36r5K% z`K~!3(A*U8jTP`SGRl?X6M*|bAC5@#Fa;o({+Tb%-16s2>#e(qlP}Am@QmD>Pu2 zsFNcT2K)G<6BK(hV`AwM_4D4CN!uTyHtId=s7ai;3hDM;?ihp)o~Kg$jKOq9G}*Me zu|+~(pe-d#&^maXoOqh?F(a9*_~{hZoJHgUhO|sT3w2@s#D;K*d=O=S1x`tC#0uL#851AT9jMpY{msWyt~~ZV=ofp0yg=Ff^d#3yu7(FtwhP z`lB;PUf^+B5fb`QJ|=DXx;97vDjYl1W4K(V1DbEfrk!Be4+RgaZMB<1t?o|ABV|)q z_Tn)j_ELU)O)(9ngjUbcg6V;cq~pI(mCP>b%GDNakJQ05`OGqIQO1$gWE}5v+Kyj0 zIRGN1!g817b#1* zc^qO_Yr4&bT5@l;m(#|`&?dizbCSVK_h%cRv8lOWE+jH=rYHZdt^rVi?tWeDvGe-D zRVN&NNC{@=z6I%z!eCPvY$rU}zBgYF(dUKp`+}QxKDaM{!B3MG zcURt za{98W$0GpjT|=oB85*Q>JRI#Ow6H{uMp%$i1H&4swIaVC8ry< z7ALxm?Nf{~CfximutFd5-{b4lAuw6!y}9JIxCOmiG?_Xj728NnCVVEqDDk?kuMdl(Ban;JEO3vz#=}1!a-m7P zXt`d^`{>t!ThUnq1$L)VJivG{=&qLmhf8ujFnVSU&$d5$E4%kE>Y~i3twEF#<*?Q% z8rXEN;%DYlE}Ia@Glwvs3dv7Dy8uPXC&HwJ0>HOz?EnVTHGEA{%3Jb5)I>fNXE#Un zlZaQ^ueQz~;;n zZM>=nxk!0RLgHTcHd6+jIE$Kh2{;P;GEkC7on3m{x#OJx8RsvS+vHk@gPhYTZPwoL z4vyA$)|k(c*s+dU5O_UoJGn6h#kpnxJi(f&zTDSt3$Ow zZ%=2&FjR?o>x~MR?qs>G3M97Po;w^{ExCQR7yBGI?H~kb4_;Q_--(BM%d-Xz*)CwH z1+y?qa2>f1p*>JjbtOyf@5QThgc0AeU-hMOGHz}6=y3=xI11XAC#*neWHxaJi!S%C&bhFk6@W$7T@Y|MhNigOD737TH_83jN3G2f1=c%gdio>=FkkLK4UN}h>k=Tm4=vw=QYJj0rA>0;4Sb;ZDKv8TW-FzhNWNk z(fx#`l#XpmC%eo;14itbisLbYG$dULLgoW#a z;|#T#hkM-#?h-|{b9=qMg1cxspAmB~IU=mmDyj84v$W2&Yg=38EF6qy{PL9iuOE?f zy?v#9I6u#?c2iD2&HtxBnE(AWg`WAp1j6#40{I6W%>P0M%Rd}p`4>l+{}BlDe-{YL z{~{2U|C2zHHMbqMSQ~m)73(gvu8JfF2mpRo+7lWb4l0Jq*AAznD_hDi#1GVAIS4pX zo?*uek8oPCwgLM0qZn(n*l`p13w?WjIRa)T6T1X-x_Hpzx2Po znm^tSPm{mCw4cCs|0W@VcDHsMlf8XPBMwGLI2AH^xdbvET+C)`YeSR=EE~p4TBF^z z%D=)#%aUG9_ms1mm~Jp&!uTkg6pXz$F0V3FfVbyMBhkn^NOlKrk4;V>O^@j z+Xw`B)RnG)UO`24`J-K-R!m)?TC+Wz7L#Xz{9ICEPL)^+M0l76dBZHBaY0qB$l|Zh zC|&bAxKxL`EJHzr))sn0nd-6|X?4(G{%)=J3Qs4I@Zoh1zviWReQ{!8m%N<&BqPh2v2$d4&{tEt(D9LjUtL>{!M>2K9IcDbG z%VYeF=K?iDXoS}lL+JL@gOgG|;GrjI9UacFKrftDTvpATf1-sR`|XiiA|_m<-KaRx zo71OKQABObU=9jryY*IV{^ckhb3l|&d>3WRRpDIfOEj;>uFkhZtAE+yQYZ>klXM^6 ze6;G=hD|mKq@@tK>gkvBJj)pI$d(aKcnma!t~>8@t1~&{$1{1vQ=qOoh{6lu#vo57 zA2iC%ztO-FXQKp+0zT)b3Q`C{l3&g=Tg-&K2NtomfFhZFehYG-E+7PbUC?+;eD+9qo6e@P(_+oIyhh~OTUT*(Afu~pl{*+fRNq<8H_OK>h8sO`u? z0TIxGZ>GhUzSE(;2?*ft+VWi2IKc;PR$oDe(Hxg9R5=O^2C`PigGNk=YRn4w=avO3 zf&C@Mrgcn2W2D~6|M1AsGoMA%5J0LHK{{7zQ5Y`N#ZibCpqxl`cuP#o4#BOFi&?YJ zl^ss)_tAph-{fy(Du6ll#HQ?RuWs+>@%O0Vw4jV!xf6rwShqlCvFq*ZZhVC?ZlvJ2 z#OjK@e9jz$cgGmMHZs9YUSvmFk>N^Epfgk%;GF#8O5XkvknWNtMy>3A9&LCUt01pKZd>_Ra+^2p+V4n2f;q!n&!kx8?pGykEO6_=*~c z9%V#$qn~IsOLa+$$=VZ(^(GH?t(K&C8d?o>eKX5FvGC{H;kGOv0>=WV_*K>G z`L--=;t_9cuP2`O@8m4sZqM)OK=FeTadF2`G4mCYkPO5C+k86IZW*5+3{f5$)?zEH zaqCHJOUng+5YXm531%%*Mfn2k@O!sAnQ}P7L@?=Wb?& z*tKg^_;QT3)cdWdz)IlIbZH8H(a|ucTd(Ux45^?x!oFWn#oQS6v&0e%E@`Jm5tn>7G)00Dms~a(rOJLOZ#iHP5tqXwCr#O5Glz{o8>! z$~s;`UXqAh<`FXPC?`z!jA`M8zaWVHhW;@yHaPdy4+%F+LDN$?PHWl$`diKn@bDcJ zK5&Ge48Jq-9Kx|Uquwr(H;krds$GL`d3}{$gPOh!h99ct>CjW`sXm+Egp>tGHZK*0 zoA(pHaY(QBRbKr$d9`@phyMgUD%gE7y4d2Xp~@R zvo_Y1B^fxW12+sh?J4XyzrOc!(1FDL_hLerF+-RoY3E&Z*r^M^N;)h6sAb8%1Zv&8 z3dagiiU^J|`{l%riJV)PAq3b@ijFaK1Dq~T8CZxR$kwg}ThCR=(NgfIq zv(`g>9Y8rCBj_4=K^V3l#nL->r^Qn*ar$af8<(A zkteK1in3bBRk4BSB-_I#asD_dJa?dguxbV>&nV3EGBUik`Q~6pE1|n{@{b9nBMs1K z8k+FU#r;bCGgfDmCR)M0h5@%HN`<{qv`5XoiY}zW)lK^R6NMvK1G4l1>{1+*?l8$o zr;Q0`SbPq-L3}ZTOZtP$GY`W|p#Caf+bw?w)5{U z*J@NWSXj#TxQk90)PX$7RVGX>%J$c84EYT0C--2W*R>I>di_fci7R(ZprgzNMwH5( z__BcGf?8^CDBI^uW9Y0te@jw-RK^M9NU0Qq#8)f|pypGLpRHyKeK_qI4~D#S3Yg>8{*-%h4QzMod?6zEB#EH%f6tWVYhk zdvfm7WX=>O{7OJ7XIO`O!i9E3=)i&@R_9oSD{V6T`{0x(2#~8;Ki*Tbc z1c5G(;rg&%*I3GUH!HckU3@zD<6g0Uij+VI{Bk}CI9FS_)>BvepuDTYcImXx5!E$h zXsu9OeDQ;)HRzmyZIH4p?nv6n6Sn|sNLX-fCkbJo5mT8(zK5K6?dL@_<&fYh*SA(f zC1mnHEtu$$!Y%*V0CqrG)PFj=`>s)D)8Ai6 zC7Z;No!~%sx51qq+z-K&PdYI!iRB1n&Un02Hi8gF8BUTVM>Qs>7`h{q_NWHFT#=9y z+%nK!+XOq*&k{N=SxqxI+i^^z1m?>IX`++EF7)+4sK)RT2#{_LzUceVZw~kE{#!^F0wC_~emD7Aov*3l3p1QXb|0D^5@Vep0GbS9 z45NJ1tuF^2mPL|u&wnUSe7KVxP%QV9A5zZ1@wGdE% zM(5fj8-JtE1swlFX(uk(U*m!rV*CtbsG6$N@Yw79^6XM))d~s}bP^Ff#CXwsZQeo9 z8Oh4X6FG*?#z(%SQS0(WO=*m*LD6cmMAaVX(hiNxP4pNelB^0dXyFvaqriaynLK>R zTtV)LswV?^rj*%*h0cZ-H$Bpz8{Xl9o2tk0c~gFLy%Vw>9<);?c;TE{C7m|6=6nkU zBX4C(1O(K;(A-D%XgLD9t;Ujp8ma-{#k0#uk4soHv_-{?JmG67P1s~}P=CuBca_@9 z-GEHeG^{21g(n6*hW`ssvZ3GXTA#Z*6r@Ua z??zjgsdL{j)q{rva%Etz^Y=W+C*xAzcZjfdvo%| zJlHqaDqdX3@Z8~%c`*B;fuZ%A$}I!{n5FinDVq~^F@$LdP^+1x2UMUHOs`(8lrO~X z@4m1IlH6yPetEROAbacOFQfu2)L-zYa_^w^l_EMPidPY5DGZ%Xae<~&r_s~qxDq1- z!BkyK^c+;K<*i_gn<=$*+3eD|vahN#W+Fg~o#GUWBp1v1JO~;5kpV$IIz*5cG8h&| z-fSHvEqFphKNi64J6^EHfr;*1J1~z#9HZ;rts6Ue{KEJsl3BaPiL(~TjCwt4HuHM9 z1RMRiEHcbqrj_pP{UUyrErmGic8a+khL9FozG(Ir(bxV}(h^&^`*=yI`I3*W43IWL zurY7r>I5TndLT>FEo^zUx0N}uiGf(g=UKs0sQ~Xc;OH{$rZ(~q(b+FNo11Yh?Xjb- zLigUg{*bOo1LvE1Ev`|R{nkdz!woRL1;>JLK_tcf!E$0;9UK3<0N{yz?m?vStqT5{Zpl6S)3I9b6_Os(O-OBn!j(4+aKGn^V_}D zTfl>p-^=ZrxmK&t0j&3mc4Zy!84K4LvUH6Oq6<6U4fvOAB-jKwCjJw^BO7dPR6Pud zs4rlYWa88U1c-jID_A`N=`u}N0JvU0btfQXFb;lnwzO@wbJ&zzvh~>`W`-a2f@qbW z)B0j)M}fF!gzx?H4O{M}jUXsve>mNXS)hhRW7vSUj3*=0|0szclf1#q9w2Rp>@OAn z3WBnE+mcQ1w*TE4H2^qY>F?zUqnIPG7js=w@QXUx1_qIMk3cHRa{NZE1rAX2UCZIn zNx4U(ZDE^zM%Al3X(t+LcuJkYtFNjjUw7Hs=08f;qCVLN)=_U&ExNWGUxMg8is{eA zN&Q_%j#8Jb8(GE3t>t(&?cqM4?nea3;^7t1e1*d;3SIAyIn*KKvLBdmo=x5Tt-{4~ zXWkYqxeYg)U_|4X%-I}92wIWiGN}TtrE&3GRFw;UKd3!v_sR(a5@eVs1lY#g@r}5% zIfMC<%-rv-x0_I5Xqyvj#ETxLRF3mC@ITO%xNGfne!5()Rs97OW;)#dpKTM%zhB+3 zurmC6mi0f{CRY0Yca!m7Z4>)HoBmxrG5s_6?`;$7|I#+G{-4^WVvS3itr3);+S0T< zv%30b!x`w>>SPs{s1<&Fw)y}t@r-~CoNLDY1WO%as6QVdJ}AA0v*}EO`w5*5+kN!J zj}9kWv#&UudjX(tqd!{LGdnrm#sgZ8d@5WoR~J{~u8b;f=NBhYxTw_e)Z@sqOfJn_ znqXQYR~F7KZZ7Z3%XFrK_vAsNH7lloIx6NNXf-!8sJ1^pi-KQID4rp+!3qyaIhtA< zTyEYNVE7D1e^Ib7xM2++UwY=Lx>uGZa~r#?FO}n6L3`puxM2*aE?UlRqA>|(L9`XM z^8U=-akI4o;TGMC4~sOLw4TTSiE>D|uV1DdN1JS`G_vlRv!|dWzn?m)oGh2jvSnnV z9Y&evvv}Hr!fh=Xs~^%N+ZAU`brx*YHJEX!?ACeIW_DF#!EazrCIb~GCeZ{pb@;Dm zmfXC0z<|55P_gi$2L_7cv+Kq^+D>OjO)^h5)LR=znx40M>(F*XeeW0XnNcLfe>lZO zx#9Dj5;_UFa1Yr9crYm0Uc&gdwhy09pTkxL-6_;Xw+R_b(*QnZ_0mglYQPgh@y!|{ik(iGSG=_nR% zv*&WMW-V2Z50b~!a*^>cX>@*$LDLZ&C>;$&>1t~Te`u6Uj4x+-c7OccLwhdW+IO4f z{h~~nHzTrCc70VhH=&*U8Rl49(W+$|e$+*C%L$HT{NNn)^CQ6jil|_lsnVl$HnYH6 ztv?d#Wq4QuR5~*F+%Son@^v;8|G|v!b3~#QluY{WhuO!Tk2&D*3ah)NmjP%g8JAvxkM))A-QhZQO@1&x#^eaXND3d>po_@B z&l7?Snt>3v&Cw@4^J9#uJ!Y&o3rcN{N8Uk`H{aDTP5*eedkLmE(MbpR=NMOj0V4Yl zyL~c$Jk=V;WN@i#9%ew@Zh)sUj%2If-Fdfu2SDd(d{53W^pDVu{LiR9pc((yczaKG zZO2!3|7;&uk|D=f1OJq<<$G-A-O;eT133sH_&A`(2~J4q#eR8*zW4IQ%m|{1A0nKH zWknVJMhXu|iE*C>kW1_GGH?x}O+0{IfPNZ3h=Ic=0$YLs27Zg0)T6^u76`o=GpVr= z?~(Xb8*Bo%5jn>;l;Ic*!+rFmMi)jyB6_T)u;^LA>DsHvtE6@P{O_PG zMv2_nC7f9<*K<@o0H}&5C)5~1`?Ao>e@)9QF^99*M9RU&{|tYf~f|g515zeXe&pGM=xq{#if?ZN^jWDJ5;J%m0(pA zkI;aDHE`Ll7y=*|EiP3uuW2sh80AvTu1(?s&aq?To9R1}ARQWZJ>%RMk{9MxC||*D z@kidd=liYxb%jDIxWszus%#(*Uctb%(dJy-`b@9)#0lzLddK9_&;w(<*!3gdB)Cup539UzUEQcLF-nSJRafWFteRX9!4HGW zjKNX4iE~{;3BX&^2s|Wc(A-??Co4DfyLBk@Ge}J}ijV~40U0>85^jFN^so!u``)4$ z>-bVl6u;*$M1iwfcS3z{U*A^me)E$G6wP3|1hK>(>g^narGUu?E?F{z=D-&ZAX0#!E#6)6-%kiyw`Z|< zE*s~VNT;*ZL+8R*kxrKGdp01KW9N6bu1+z*gJ{H(-LuIf2Hx~^XW~KVa3=<5_SsrQ zm<cV^e)%%XjRBd`fJfO`{T&VK1EGd z?g$d2CQOXBkks3>p2<`AkV(k}pgziIg8_+sII)RGd4BN6u7Tt;Uut>+z_T`D zHhZ0Lf1w}POA#k6nsvI0tEiFQ- zE0EzkE@I%_W6ji%xLhCdC%y61&YpW66)K#I9xaaT`*~rSosCl-Ya%M2FEg8mUyR-j z$|SZ4>CPZ!gbZa0tj#rV@3W*>8u=|9kvl;v$dO-nm$Qy ^#cTCpmeA-d&3+BR&% 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 z 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 P>G|~2PyhJ$KR^8iPS5#Y diff --git a/doc/bash.ps b/doc/bash.ps index e3a221b83..a6d6ec859 100644 --- a/doc/bash.ps +++ b/doc/bash.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.19.1 -%%CreationDate: Tue Jan 16 11:15:08 2007 +%%CreationDate: Thu Jan 26 11:18:52 2006 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic @@ -234,12 +234,17 @@ def/PL 841.89 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron %%BeginPageSetup BP %%EndPageSetup +/F0 10/Times-Roman@0 SF(1)535 768 Q 0 Cg EP +%%Page: 1 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.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-2007 by the Free Softw)-.1 E(are F)-.1 E +(yright \251 1989-2005 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 @@ -332,8 +337,8 @@ E F2(po)2.5 E F0(\(portable object\) \214le format.)2.5 E F2 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-3.2)72 768 Q(2007 January 12)140.96 E(1)195.95 E 0 Cg EP -%%Page: 2 2 +(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(1)204.835 E 0 Cg EP +%%Page: 2 3 %%BeginPageSetup BP %%EndPageSetup @@ -454,8 +459,8 @@ F(ariable)-.25 E F3 -.27(BA)108 679.2 S(SH_ENV).27 E F0 1.01(in the en) 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-3.2)72 -768 Q(2007 January 12)140.96 E(2)195.95 E 0 Cg EP -%%Page: 3 3 +768 Q(2006 Jan 26)149.845 E(2)204.835 E 0 Cg EP +%%Page: 3 4 %%BeginPageSetup BP %%EndPageSetup @@ -579,8 +584,8 @@ F1(Pipelines)87 679.2 Q F0(A)108 691.2 Q F2(pipeline)2.919 E F0 .419 F F1(|)2.92 E F0 5.42(.T)C .42(he format for a pipeline)-5.42 F(is:)108 703.2 Q([)144 720 Q F1(time)A F0([)2.5 E F1A F0(]] [ ! ])A F2 (command)2.5 E F0([)2.5 E F1(|)2.5 E F2(command2)2.5 E F0(... ])2.5 E -(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 E(3)195.95 E 0 Cg EP -%%Page: 4 4 +(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(3)204.835 E 0 Cg EP +%%Page: 4 5 %%BeginPageSetup BP %%EndPageSetup @@ -699,9 +704,9 @@ A({)108 573.6 Q F1(list)2.5 E F0 2.5(;})C F1(list)3.89 E F0 .402 F(SIONS)144 727.2 Q F5(.)A F0 -.8(Wo)5.633 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 -F3([[)3.632 E F0(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 E(4)195.95 -E 0 Cg EP -%%Page: 5 5 +F3([[)3.632 E F0(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(4)204.835 E +0 Cg EP +%%Page: 5 6 %%BeginPageSetup BP %%EndPageSetup @@ -838,8 +843,8 @@ F 1.538(played w)144 715.2 R 1.538(ords, then the v)-.1 F 1.538(alue of) F 1.537(ords and)-.1 F .065(prompt are displayed ag)144 727.2 R 2.565 (ain. If)-.05 F .065(EOF is read, the command completes.)2.565 F(An) 5.066 E 2.566(yo)-.15 G .066(ther v)-2.566 F .066(alue read causes)-.25 -F(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 E(5)195.95 E 0 Cg EP -%%Page: 6 6 +F(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(5)204.835 E 0 Cg EP +%%Page: 6 7 %%BeginPageSetup BP %%EndPageSetup @@ -864,14 +869,14 @@ F1(wor)3.264 E(d)-.37 E F0 3.264(,a)C .764(nd tries to match it ag) (in turn, using the)3.264 F .595(same matching rules as for pathname e) 144 148.8 R .595(xpansion \(see)-.15 F F2 -.1(Pa)3.095 G .596 (thname Expansion).1 F F0(belo)3.096 E 3.096(w\). The)-.25 F F1(wor) -3.096 E(d)-.37 E F0(is)3.096 E -.15(ex)144 160.8 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 +3.096 E(d)-.37 E F0(is)3.096 E -.15(ex)144 160.8 S 1.37 +(panded using tilde e).15 F 1.37(xpansion, parameter and v)-.15 F 1.37 +(ariable e)-.25 F 1.37(xpansion, arithmetic substituion, com-)-.15 F 1.268(mand substitution, process substitution and quote remo)144 172.8 R -.25(va)-.15 G 3.768(l. Each).25 F F1(pattern)3.768 E F0 -.15(ex)3.768 G -1.269(amined is e).15 F(xpanded)-.15 E .353(using tilde e)144 184.8 R -.353(xpansion, parameter and v)-.15 F .353(ariable e)-.25 F .353 -(xpansion, arithmetic substitution, command substi-)-.15 F 1.516 +1.269(amined is e).15 F(xpanded)-.15 E .631(using tilde e)144 184.8 R +.631(xpansion, parameter and v)-.15 F .631(ariable e)-.25 F .631 +(xpansion, arithmetic substituion, command substi-)-.15 F 1.516 (tution, and process substitution.)144 196.8 R 1.516 (If the shell option)6.516 F F2(nocasematch)4.016 E F0 1.517 (is enabled, the match is per)4.017 F(-)-.2 E 1.347(formed without re) @@ -978,8 +983,8 @@ F0 1.337(option is on by def)3.837 F 1.337(ault in)-.1 F(interacti)108 722.4 R F1(metac)2.789 E(har)-.15 E(acter)-.15 E(s)-.1 E F0 .288 (listed abo)2.789 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 -(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 E(6)195.95 E 0 Cg EP -%%Page: 7 7 +(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(6)204.835 E 0 Cg EP +%%Page: 7 8 %%BeginPageSetup BP %%EndPageSetup @@ -1094,9 +1099,8 @@ F .515(and v)108 715.2 R .515(ariable e)-.25 F .515 (integer)2.698 E F0(attrib)2.698 E .198(ute set, then)-.2 F F2(value) 2.988 E F0 .198(is e)2.878 F -.25(va)-.25 G .199 (luated as an arithmetic e).25 F .199(xpression e)-.15 F -.15(ve)-.25 G -(n).15 E(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 E(7)195.95 E 0 Cg -EP -%%Page: 8 8 +(n).15 E(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(7)204.835 E 0 Cg EP +%%Page: 8 9 %%BeginPageSetup BP %%EndPageSetup @@ -1227,6323 +1231,6233 @@ S 1.6(cuted and placed in the en).15 F 1.6(vironment e)-.4 F 1.6 696 Q(wing v)-.25 E(ariables are set by the shell:)-.25 E F1 -.3(BA)108 712.8 S(SH).3 E F0(Expands to the full \214le name 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 -(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 E(8)195.95 E 0 Cg EP -%%Page: 9 9 +(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(8)204.835 E 0 Cg EP +%%Page: 9 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/F1 10/Times-Bold@0 SF -.3(BA)108 84 S(SHPID).3 E F0 .465 -(Expands to the process id of the current bash process.)144 96 R .466 -(This dif)5.466 F .466(fers from)-.25 F F1($$)2.966 E F0 .466 -(under certain circum-)2.966 F(stances, such as subshells that do not r\ -equire bash to be re-initialized.)144 108 Q F1 -.3(BA)108 120 S(SH_ARGC) -.3 E F0 1.04(An array v)144 132 R 1.04(ariable whose v)-.25 F 1.039 +-.35 E/F1 10/Times-Bold@0 SF -.3(BA)108 84 S(SH_ARGC).3 E F0 1.039 +(An array v)144 96 R 1.039(ariable whose v)-.25 F 1.039 (alues are the number of parameters in each frame of the current bash) --.25 F -.15(exe)144 144 S .535(cution call stack.).15 F .535(The number\ +-.25 F -.15(exe)144 108 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 156 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 1.524(parameters passed is pushed onto)144 -168 R F1 -.3(BA)4.024 G(SH_ARGC).3 E F0 6.524(.T)C 1.524(he shell sets) --6.524 F F1 -.3(BA)4.024 G(SH_ARGC).3 E F0 1.525(only when in)4.024 F --.15(ex)144 180 S(tended deb).15 E +5.535 F -.15(exe)144 120 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 1.525(parameters passed is pushed onto)144 +132 R F1 -.3(BA)4.024 G(SH_ARGC).3 E F0 6.524(.T)C 1.524(he shell sets) +-6.524 F F1 -.3(BA)4.024 G(SH_ARGC).3 E F0 1.524(only when in)4.024 F +-.15(ex)144 144 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 192 S(SH_ARGV).3 E F0 1.092(An array v)144 204 +(w\))-.25 E F1 -.3(BA)108 156 S(SH_ARGV).3 E F0 1.091(An array v)144 168 R 1.091(ariable containing all of the parameters in the current bash e) --.25 F -.15(xe)-.15 G 1.091(cution call stack.).15 F(The)6.091 E .275(\ +-.25 F -.15(xe)-.15 G 1.092(cution call stack.).15 F(The)6.092 E .275(\ \214nal parameter of the last subroutine call is at the top of the stac\ -k; the \214rst parameter of the initial)144 216 R 1.424 -(call is at the bottom.)144 228 R 1.424(When a subroutine is e)6.424 F +k; the \214rst parameter of the initial)144 180 R 1.424 +(call is at the bottom.)144 192 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 F1 -.3(BA)144 240 S(SH_ARGV).3 E F0 6.09(.T)C 1.09(he shell sets)-6.09 -F F1 -.3(BA)3.591 G(SH_ARGV).3 E F0 1.091(only when in e)3.591 F 1.091 -(xtended deb)-.15 F 1.091(ugging mode \(see the)-.2 F -(description of the)144 252 Q F1(extdeb)2.5 E(ug)-.2 E F0(option to the) +F F1 -.3(BA)144 204 S(SH_ARGV).3 E F0 6.091(.T)C 1.091(he shell sets) +-6.091 F F1 -.3(BA)3.591 G(SH_ARGV).3 E F0 1.091(only when in e)3.591 F +1.091(xtended deb)-.15 F 1.09(ugging mode \(see the)-.2 F +(description of the)144 216 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 264 S(SH_COMMAND).3 E F0 1.243(The command currently being e)144 -276 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) +(BA)108 228 S(SH_COMMAND).3 E F0 1.242(The command currently being e)144 +240 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 -288 Q -.15(xe)-.15 G(cuting at the time of the trap.).15 E F1 -.3(BA)108 -300 S(SH_EXECUTION_STRING).3 E F0(The command ar)144 312 Q +252 Q -.15(xe)-.15 G(cuting at the time of the trap.).15 E F1 -.3(BA)108 +264 S(SH_EXECUTION_STRING).3 E F0(The command ar)144 276 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 324 S(SH_LINENO).3 E F0 .034 -(An array v)144 336 R .034(ariable whose members are the line numbers i\ -n source \214les corresponding to each mem-)-.25 F 2.945(ber of)144 348 -R F1(FUNCN)5.445 E(AME)-.2 E F0(.)A F1(${B)7.944 E(ASH_LINENO[)-.3 E/F2 +(cation option.).2 E F1 -.3(BA)108 288 S(SH_LINENO).3 E F0 .034 +(An array v)144 300 R .034(ariable whose members are the line numbers i\ +n source \214les corresponding to each mem-)-.25 F 2.944(ber of)144 312 +R F1(FUNCN)5.444 E(AME)-.2 E F0(.)A F1(${B)7.944 E(ASH_LINENO[)-.3 E/F2 10/Times-Italic@0 SF($i)A F1(]})A F0 2.944 (is the line number in the source \214le where)5.444 F F1(${FUNCN)144 -360 Q(AME[)-.2 E F2($ifP)A F1(]})A F2 12.108(was called.)14.608 F 12.109 -(The corr)17.109 F 12.109(esponding sour)-.37 F 12.109 -(ce \214le name is)-.37 F F1(${B)144 372 Q(ASH_SOURCE[)-.3 E F2($i)A F1 +324 Q(AME[)-.2 E F2($ifP)A F1(]})A F2 12.109(was called.)14.609 F 12.109 +(The corr)17.109 F 12.109(esponding sour)-.37 F 12.108 +(ce \214le name is)-.37 F F1(${B)144 336 Q(ASH_SOURCE[)-.3 E F2($i)A F1 2.5(]}. Use)B(LINENO to obtain the curr)2.5 E(ent line number)-.18 E(.) --1 E -.3(BA)108 384 S(SH_REMA).3 E(TCH)-.95 E F0 .006(An array v)144 396 -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 408 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 420 R(x)-.15 E -F2(n)3.498 E F0 .997(is the portion of the string matching the)3.498 F -F2(n)3.497 E F0 .997(th parenthesized sube)B(xpres-)-.15 E 2.5 -(sion. This)144 432 R -.25(va)2.5 G(riable is read-only).25 E(.)-.65 E -F1 -.3(BA)108 444 S(SH_SOURCE).3 E F0 .889(An array v)144 456 R .889(ar\ -iable whose members are the source \214lenames corresponding to the ele\ -ments in the)-.25 F F1(FUNCN)144 468 Q(AME)-.2 E F0(array v)2.5 E -(ariable.)-.25 E F1 -.3(BA)108 480 S(SH_SUBSHELL).3 E F0 .402 -(Incremented by one each time a subshell or subshell en)144 492 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 504 Q F1 -.3(BA)108 516 S(SH_VERSINFO).3 E F0 -2.644(Ar)144 528 S .144(eadonly array v)-2.644 F .144 +-1 E -.3(BA)108 348 S(SH_REMA).3 E(TCH)-.95 E F0 .005(An array v)144 360 +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 372 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 384 R(x)-.15 E +F2(n)3.497 E F0 .997(is the portion of the string matching the)3.497 F +F2(n)3.498 E F0 .998(th parenthesized sube)B(xpres-)-.15 E 2.5 +(sion. This)144 396 R -.25(va)2.5 G(riable is read-only).25 E(.)-.65 E +F1 -.3(BA)108 408 S(SH_SOURCE).3 E F0 .89(An array v)144 420 R .889(ari\ +able whose members are the source \214lenames corresponding to the elem\ +ents in the)-.25 F F1(FUNCN)144 432 Q(AME)-.2 E F0(array v)2.5 E +(ariable.)-.25 E F1 -.3(BA)108 444 S(SH_SUBSHELL).3 E F0 .401 +(Incremented by one each time a subshell or subshell en)144 456 R .401 +(vironment is spa)-.4 F 2.902(wned. The)-.15 F .402(initial v)2.902 F +.402(alue is)-.25 F(0.)144 468 Q F1 -.3(BA)108 480 S(SH_VERSINFO).3 E F0 +2.645(Ar)144 492 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 540 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 504 S (lues assigned to the array members are as follo).25 E(ws:)-.25 E F1 -.3 -(BA)144 558 S(SH_VERSINFO[).3 E F0(0)A F1(])A F0(The major v)24.74 E +(BA)144 522 S(SH_VERSINFO[).3 E F0(0)A F1(])A F0(The major v)24.74 E (ersion number \(the)-.15 E F2 -.37(re)2.5 G(lease).37 E F0(\).)A F1 -.3 -(BA)144 570 S(SH_VERSINFO[).3 E F0(1)A F1(])A F0(The minor v)24.74 E +(BA)144 534 S(SH_VERSINFO[).3 E F0(1)A F1(])A F0(The minor v)24.74 E (ersion number \(the)-.15 E F2(ver)2.5 E(sion)-.1 E F0(\).)A F1 -.3(BA) -144 582 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 594 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 606 S +144 546 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 558 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 570 S (SH_VERSINFO[).3 E F0(4)A F1(])A F0(The release status \(e.g.,)24.74 E -F2(beta1)2.5 E F0(\).)A F1 -.3(BA)144 618 S(SH_VERSINFO[).3 E F0(5)A F1 +F2(beta1)2.5 E F0(\).)A F1 -.3(BA)144 582 S(SH_VERSINFO[).3 E F0(5)A F1 (])A F0(The v)24.74 E(alue of)-.25 E F1(MA)2.5 E(CHTYPE)-.55 E F0(.)A F1 --.3(BA)108 634.8 S(SH_VERSION).3 E F0 -(Expands to a string describing the v)144 646.8 Q +-.3(BA)108 598.8 S(SH_VERSION).3 E F0 +(Expands to a string describing the v)144 610.8 Q (ersion of this instance of)-.15 E F1(bash)2.5 E F0(.)A F1(COMP_CW)108 -663.6 Q(ORD)-.1 E F0 .397(An inde)144 675.6 R 2.897(xi)-.15 G(nto)-2.897 +627.6 Q(ORD)-.1 E F0 .396(An inde)144 639.6 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 687.6 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 651.6 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 699.6 Q(ogrammable Completion)-.18 -E F0(belo)2.5 E(w\).)-.25 E(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 -E(9)195.95 E 0 Cg EP -%%Page: 10 10 +(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 663.6 Q(ogrammable Completion)-.18 +E F0(belo)2.5 E(w\).)-.25 E F1(COMP_LINE)108 680.4 Q F0 1.207 +(The current command line.)144 692.4 R 1.208(This v)6.208 F 1.208 +(ariable is a)-.25 F -.25(va)-.2 G 1.208 +(ilable only in shell functions and e).25 F 1.208(xternal com-)-.15 F +2.849(mands in)144 704.4 R -.2(vo)-.4 G -.1(ke).2 G 5.349(db).1 G 5.349 +(yt)-5.349 G 2.849(he programmable completion f)-5.349 F 2.849 +(acilities \(see)-.1 F F1(Pr)5.349 E 2.848(ogrammable Completion)-.18 F +F0(belo)144 716.4 Q(w\).)-.25 E(GNU Bash-3.2)72 768 Q(2006 Jan 26) +149.845 E(9)204.835 E 0 Cg EP +%%Page: 10 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(COMP_KEY)108 84 Q F0(The k)144 96 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 112.8 Q F0 1.208 -(The current command line.)144 124.8 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 136.8 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 148.8 Q(w\).)-.25 E F1(COMP_POINT)108 165.6 Q F0 .667 -(The inde)144 177.6 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 +-.35 E/F1 10/Times-Bold@0 SF(COMP_POINT)108 84 Q F0 .666(The inde)144 96 +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 -189.6 R .535(alue of this v)-.25 F .535(ariable is equal to)-.25 F F1 -(${#COMP_LINE})144 201.6 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 213.6 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(db).1 G 2.5(yt)-2.5 G +108 R .534(alue of this v)-.25 F .534(ariable is equal to)-.25 F F1 +(${#COMP_LINE})144 120 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 132 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 -230.4 Q F0 .041(Set to an inte)144 242.4 R .041(ger v)-.15 F .041(alue \ -corresponding to the type of completion attempted that caused a complet\ -ion)-.25 F .338(function to be called:)144 254.4 R/F2 10/Times-Italic@0 -SF -.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 266.4 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 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 278.4 R F2(%) -4.053 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 290.4 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 -302.4 Q F0(belo)2.5 E(w\).)-.25 E F1(COMP_W)108 319.2 Q(ORDBREAKS)-.1 E -F0 1.284(The set of characters that the Readline library treats as w)144 -331.2 R 1.283(ord separators when performing w)-.1 F(ord)-.1 E 3.125 -(completion. If)144 343.2 R/F3 9/Times-Bold@0 SF(COMP_W)3.125 E +(ogrammable Completion)-.18 E F0(belo)2.5 E(w\).)-.25 E F1(COMP_W)108 +148.8 Q(ORDBREAKS)-.1 E F0 1.284 +(The set of characters that the Readline library treats as w)144 160.8 R +1.283(ord separators when performing w)-.1 F(ord)-.1 E 3.125 +(completion. If)144 172.8 R/F2 9/Times-Bold@0 SF(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 355.2 Q F1(COMP_W) -108 372 Q(ORDS)-.1 E F0 .654(An array v)144 384 R .654(ariable \(see) --.25 F F1(Arrays)3.154 E F0(belo)3.154 E .654 +G 3.126(ss)-3.126 G(ubse-)-3.126 E(quently reset.)144 184.8 Q F1(COMP_W) +108 201.6 Q(ORDS)-.1 E F0 .654(An array v)144 213.6 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 3.566(line. The)144 396 R -.1(wo) -3.566 G 1.067 -(rds are split on shell metacharacters as the shell parser w).1 F 1.067 -(ould separate them.)-.1 F(This)6.067 E -.25(va)144 408 S .004 -(riable is a).25 F -.25(va)-.2 G .004(ilable only in shell functions in) -.25 F -.2(vo)-.4 G -.1(ke).2 G 2.504(db).1 G 2.504(yt)-2.504 G .004 -(he programmable completion f)-2.504 F .003(acilities \(see)-.1 F F1(Pr) -144 420 Q(ogrammable Completion)-.18 E F0(belo)2.5 E(w\).)-.25 E F1 -(DIRST)108 436.8 Q -.55(AC)-.9 G(K).55 E F0 2.26(An array v)144 448.8 R -2.26(ariable \(see)-.25 F F1(Arrays)4.76 E F0(belo)4.76 E 2.26 +(ords in the current command)-.1 F 3.477(line. This)144 225.6 R -.25(va) +3.477 G .977(riable is a).25 F -.25(va)-.2 G .978 +(ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.478 +(db).1 G 3.478(yt)-3.478 G .978(he programmable completion)-3.478 F -.1 +(fa)144 237.6 S(cilities \(see).1 E F1(Pr)2.5 E(ogrammable Completion) +-.18 E F0(belo)2.5 E(w\).)-.25 E F1(DIRST)108 254.4 Q -.55(AC)-.9 G(K) +.55 E F0 2.26(An array v)144 266.4 R 2.26(ariable \(see)-.25 F F1 +(Arrays)4.76 E F0(belo)4.76 E 2.26 (w\) containing the current contents of the directory stack.)-.25 F -1.095(Directories appear in the stack in the order the)144 460.8 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 472.8 R 1.432 +1.094(Directories appear in the stack in the order the)144 278.4 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 290.4 R 1.432 (ariable may be used to modify directories already in the stack, b)-.25 -F 1.432(ut the)-.2 F F1(pushd)144 484.8 Q F0(and)2.746 E F1(popd)2.746 E +F 1.431(ut the)-.2 F F1(pushd)144 302.4 Q F0(and)2.746 E F1(popd)2.746 E F0 -.2(bu)2.746 G .246(iltins must be used to add and remo).2 F .546 -.15(ve d)-.15 H 2.746(irectories. Assignment).15 F .246(to this v)2.746 -F(ariable)-.25 E .35(will not change the current directory)144 496.8 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.851 -(ni).15 G(f)-2.851 E(it is subsequently reset.)144 508.8 Q F1(EUID)108 -525.6 Q F0 1.104(Expands to the ef)11 F(fecti)-.25 E 1.403 -.15(ve u) +F(ariable)-.25 E .351(will not change the current directory)144 314.4 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.85 +(ni).15 G(f)-2.85 E(it is subsequently reset.)144 326.4 Q F1(EUID)108 +343.2 Q F0 1.103(Expands to the ef)11 F(fecti)-.25 E 1.403 -.15(ve u) -.25 H 1.103(ser ID of the current user).15 F 3.603(,i)-.4 G 1.103 -(nitialized at shell startup.)-3.603 F 1.103(This v)6.103 F 1.103 -(ariable is)-.25 F(readonly)144 537.6 Q(.)-.65 E F1(FUNCN)108 554.4 Q -(AME)-.2 E F0 .478(An array v)144 566.4 R .479 +(nitialized at shell startup.)-3.603 F 1.104(This v)6.103 F 1.104 +(ariable is)-.25 F(readonly)144 355.2 Q(.)-.65 E F1(FUNCN)108 372 Q(AME) +-.2 E F0 .479(An array v)144 384 R .479 (ariable containing the names of all shell functions currently in the e) --.25 F -.15(xe)-.15 G .479(cution call stack.).15 F .277 -(The element with inde)144 578.4 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 -.25(element is)144 590.4 R/F4 10/Courier@0 SF("main")2.75 E F0 5.25(.T)C -.25(his v)-5.25 F .25(ariable e)-.25 F .25 -(xists only when a shell function is e)-.15 F -.15(xe)-.15 G 2.75 -(cuting. Assignments).15 F(to)2.75 E F3(FUNCN)144 602.4 Q(AME)-.18 E F0 -(ha)2.635 E .685 -.15(ve n)-.2 H 2.885(oe).15 G -.25(ff)-2.885 G .385 -(ect and return an error status.).25 F(If)5.385 E F3(FUNCN)2.885 E(AME) --.18 E F0 .384(is unset, it loses its special)2.634 F(properties, e)144 -614.4 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(GR)108 631.2 Q(OUPS)-.3 E F0 1.228 -(An array v)144 643.2 R 1.228(ariable containing the list of groups of \ -which the current user is a member)-.25 F 6.229(.A)-.55 G(ssign-)-6.229 -E .597(ments to)144 655.2 R F3(GR)3.097 E(OUPS)-.27 E F0(ha)2.847 E .897 +-.25 F -.15(xe)-.15 G .478(cution call stack.).15 F .276 +(The element with inde)144 396 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 .81 +(element is "main".)144 408 R .81(This v)5.81 F .81(ariable e)-.25 F .81 +(xists only when a shell function is e)-.15 F -.15(xe)-.15 G 3.31 +(cuting. Assignments).15 F(to)3.31 E F2(FUNCN)144 420 Q(AME)-.18 E F0 +(ha)2.634 E .684 -.15(ve n)-.2 H 2.884(oe).15 G -.25(ff)-2.884 G .384 +(ect and return an error status.).25 F(If)5.385 E F2(FUNCN)2.885 E(AME) +-.18 E F0 .385(is unset, it loses its special)2.635 F(properties, e)144 +432 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(GR)108 448.8 Q(OUPS)-.3 E F0 1.229 +(An array v)144 460.8 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 472.8 R F2(GR)3.096 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) +(ect and return an error status.).25 F(If)5.597 E F2(GR)3.097 E(OUPS) -.27 E F0 .597(is unset, it loses its spe-)2.847 F(cial properties, e) -144 667.2 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 684 Q F0 .355 -(The history number)144 696 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 F3 -(HISTCMD)2.856 E F0 .356(is unset, it)2.606 F -(loses its special properties, e)144 708 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 -(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 E(10)190.95 E 0 Cg EP -%%Page: 11 11 +144 484.8 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 501.6 Q F0 .356 +(The history number)144 513.6 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 F2 +(HISTCMD)2.855 E F0 .355(is unset, it)2.605 F +(loses its special properties, e)144 525.6 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 542.4 Q(AME)-.2 E F0 +(Automatically set to the name of the current host.)144 554.4 Q F1 +(HOSTTYPE)108 571.2 Q F0 .222(Automatically set to a string that unique\ +ly describes the type of machine on which)144 583.2 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 595.2 R +(def)2.5 E(ault is system-dependent.)-.1 E F1(LINENO)108 612 Q F0 1.408 +(Each time this parameter is referenced, the shell substitutes a decima\ +l number representing the)144 624 R .078(current sequential line number\ + \(starting with 1\) within a script or function.)144 636 R .079 +(When not in a script or)5.078 F .307(function, the v)144 648 R .307 +(alue substituted is not guaranteed to be meaningful.)-.25 F(If)5.306 E +F2(LINENO)2.806 E F0 .306(is unset, it loses its)2.556 F +(special properties, e)144 660 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 676.8 +Q(CHTYPE)-.55 E F0 .898(Automatically set to a string that fully descri\ +bes the system type on which)144 688.8 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 700.8 +Q/F3 10/Times-Italic@0 SF(cpu-company-system)2.5 E F0 2.5(format. The) +2.5 F(def)2.5 E(ault is system-dependent.)-.1 E(GNU Bash-3.2)72 768 Q +(2006 Jan 26)149.845 E(10)199.835 E 0 Cg EP +%%Page: 11 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(HOSTN)108 84 Q(AME)-.2 E F0 -(Automatically set to the name of the current host.)144 96 Q F1 -(HOSTTYPE)108 112.8 Q F0 .223(Automatically set to a string that unique\ -ly describes the type of machine on which)144 124.8 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 136.8 R -(def)2.5 E(ault is system-dependent.)-.1 E F1(LINENO)108 153.6 Q F0 -1.408(Each time this parameter is referenced, the shell substitutes a d\ -ecimal number representing the)144 165.6 R .078(current sequential line\ - number \(starting with 1\) within a script or function.)144 177.6 R -.078(When not in a script or)5.078 F .306(function, the v)144 189.6 R -.306(alue substituted is not guaranteed to be meaningful.)-.25 F(If) -5.307 E/F2 9/Times-Bold@0 SF(LINENO)2.807 E F0 .307 -(is unset, it loses its)2.557 F(special properties, e)144 201.6 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 218.4 Q(CHTYPE)-.55 E F0 .898(Auto\ -matically set to a string that fully describes the system type on which) -144 230.4 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 242.4 Q/F3 10/Times-Italic@0 SF -(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(OLDPWD)108 259.2 Q F0(The pre)144 -271.2 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 288 Q(ARG)-.9 E F0 1.626(The v)144 300 R +-.35 E/F1 10/Times-Bold@0 SF(OLDPWD)108 84 Q F0(The pre)144 96 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 112.8 Q(ARG)-.9 E F0 1.627(The v)144 124.8 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 F2(SHELL)4.127 E -.09(BU)144 312 S(IL).09 E(TIN COMMANDS)-.828 E F0 -(belo)2.25 E(w\).)-.25 E F1(OPTIND)108 328.8 Q F0 1.652(The inde)144 -340.8 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 F2(SHELL)4.151 -E -.09(BU)144 352.8 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).) --.25 E F1(OSTYPE)108 369.6 Q F0 .329(Automatically set to a string that\ - describes the operating system on which)144 381.6 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 393.6 Q -(ault is system-dependent.)-.1 E F1(PIPEST)108 410.4 Q -.95(AT)-.9 G(US) -.95 E F0 .61(An array v)144 422.4 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 434.4 Q -.15(xe)-.15 G(cuted fore).15 E +-.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 136.8 S(IL).09 E +(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1(OPTIND)108 153.6 Q +F0 1.651(The inde)144 165.6 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 177.6 S(IL).09 E(TIN COMMANDS)-.828 E F0 +(belo)2.25 E(w\).)-.25 E F1(OSTYPE)108 194.4 Q F0 .329(Automatically se\ +t to a string that describes the operating system on which)144 206.4 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 218.4 Q(ault is system-dependent.)-.1 E F1(PIPEST)108 +235.2 Q -.95(AT)-.9 G(US).95 E F0 .61(An array v)144 247.2 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 259.2 Q -.15 +(xe)-.15 G(cuted fore).15 E (ground pipeline \(which may contain only a single command\).)-.15 E F1 -(PPID)108 451.2 Q F0(The process ID of the shell')12.67 E 2.5(sp)-.55 G +(PPID)108 276 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 468 Q F0(The current w)12.67 E +F1(PWD)108 292.8 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 484.8 Q F0 .565 -(Each time this parameter is referenced, a random inte)144 496.8 R .566 -(ger between 0 and 32767 is generated.)-.15 F(The)5.566 E .01 +(RANDOM)108 309.6 Q F0 .566 +(Each time this parameter is referenced, a random inte)144 321.6 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 -508.8 R .01(alue to)-.25 F F2(RANDOM)2.51 E/F4 9/Times-Roman@0 SF(.)A F0 +333.6 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 520.8 Q -.15(ve)-.25 G +(unset, it loses its special properties, e)144 345.6 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(REPL)108 537.6 Q(Y)-.92 E F0 -(Set to the line of input read by the)144 549.6 Q F1 -.18(re)2.5 G(ad) +(ubsequently reset.)-2.5 E F1(REPL)108 362.4 Q(Y)-.92 E F0 +(Set to the line of input read by the)144 374.4 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 566.4 Q F0 .795(Each time \ +(guments are supplied.)-.18 E F1(SECONDS)108 391.2 Q F0 .795(Each time \ this parameter is referenced, the number of seconds since shell in)144 -578.4 R -.2(vo)-.4 G .795(cation is returned.).2 F .713(If a v)144 590.4 -R .712(alue is assigned to)-.25 F F2(SECONDS)3.212 E F4(,)A F0 .712 +403.2 R -.2(vo)-.4 G .795(cation is returned.).2 F .712(If a v)144 415.2 +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 .407 -(of seconds since the assignment plus the v)144 602.4 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 614.4 Q -.15 +(alue returned upon subsequent references is the number)-.25 F .408 +(of seconds since the assignment plus the v)144 427.2 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 439.2 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 631.2 Q F0 3.263(Ac)144 -643.2 S .763(olon-separated list of enabled shell options.)-3.263 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 655.2 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 667.2 -R F2(SHELLOPTS)2.52 E F0 .019(are those reported as)2.27 F F3(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 679.2 Q F1(bash)3.141 E F0 .642(starts up, each shell option \ -in the list will be enabled before reading an)3.141 F 3.142(ys)-.15 G -.642(tartup \214les.)-3.142 F(This v)144 691.2 Q(ariable is read-only) --.25 E(.)-.65 E(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 E(11)190.95 -E 0 Cg EP -%%Page: 12 12 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(SHL)108 84 Q(VL)-.92 E F0 -(Incremented by one each time an instance of)144 96 Q F1(bash)2.5 E F0 -(is started.)2.5 E F1(UID)108 112.8 Q F0 +(ubsequently reset.)-2.5 E F1(SHELLOPTS)108 456 Q F0 3.262(Ac)144 468 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 480 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 492 R F2 +(SHELLOPTS)2.519 E F0 .019(are those reported as)2.269 F/F4 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 .02 +(ariable is in the en)-.25 F(vironment)-.4 E(when)144 504 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 516 Q(ariable is read-only)-.25 E(.)-.65 E F1(SHL)108 532.8 +Q(VL)-.92 E F0(Incremented by one each time an instance of)144 544.8 Q +F1(bash)2.5 E F0(is started.)2.5 E F1(UID)108 561.6 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 129.6 R .994(wing v)-.25 F .994 +E(.)-.65 E .993(The follo)108 578.4 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 141.6 -Q -.65(w.)-.25 G F1 -.3(BA)108 158.4 S(SH_ENV).3 E F0 .505 -(If this parameter is set when)144 170.4 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 182.4 R/F2 10 -/Times-Italic@0 SF(~/.bashr)2.855 E(c)-.37 E F0 5.354(.T).31 G .354 -(he v)-5.354 F .354(alue of)-.25 F/F3 9/Times-Bold@0 SF -.27(BA)2.854 G -(SH_ENV).27 E F0 .354(is subjected)2.604 F .525(to parameter e)144 194.4 -R .525(xpansion, command substitution, and arithmetic e)-.15 F .525 -(xpansion before being interpreted)-.15 F(as a \214le name.)144 206.4 Q -F3 -.666(PA)5 G(TH)-.189 E F0 +(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 590.4 +Q -.65(w.)-.25 G F1 -.3(BA)108 607.2 S(SH_ENV).3 E F0 .506 +(If this parameter is set when)144 619.2 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 631.2 R F4 +(~/.bashr)2.855 E(c)-.37 E F0 5.355(.T).31 G .355(he v)-5.355 F .355 +(alue of)-.25 F F2 -.27(BA)2.855 G(SH_ENV).27 E F0 .355(is subjected) +2.605 F .525(to parameter e)144 643.2 R .525 +(xpansion, command substitution, and arithmetic e)-.15 F .525 +(xpansion before being interpreted)-.15 F(as a \214le name.)144 655.2 Q +F2 -.666(PA)5 G(TH)-.189 E F0 (is not used to search for the resultant \214le name.)2.25 E F1(CDP)108 -218.4 Q -.95(AT)-.74 G(H).95 E F0 1.248(The search path for the)144 -230.4 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 242.4 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 10/Courier@0 SF(".:~:/usr")144 254.4 Q F0(.)A F1 -(COLUMNS)108 266.4 Q F0 .425(Used by the)144 278.4 R F1(select)2.925 E -F0 -.2(bu)2.925 G .425(iltin command to determine the terminal width wh\ -en printing selection lists.).2 F -(Automatically set upon receipt of a SIGWINCH.)144 290.4 Q F1(COMPREPL) -108 302.4 Q(Y)-.92 E F0 .847(An array v)144 314.4 R .848 -(ariable from which)-.25 F F1(bash)3.348 E F0 .848 +667.2 Q -.95(AT)-.74 G(H).95 E F0 1.247(The search path for the)144 +679.2 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 691.2 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 10/Courier@0 SF(".:~:/usr")144 703.2 Q F0(.)A +(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(11)199.835 E 0 Cg EP +%%Page: 12 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(COLUMNS)108 84 Q F0 .425(Used by the)144 96 +R F1(select)2.925 E F0 -.2(bu)2.925 G .425(iltin command to determine t\ +he terminal width when printing selection lists.).2 F +(Automatically set upon receipt of a SIGWINCH.)144 108 Q F1(COMPREPL)108 +120 Q(Y)-.92 E F0 .848(An array v)144 132 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 326.4 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(db).1 G 2.5(yt)-2.5 G +(in)144 144 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 338.4 -Q(CS)-.55 E F0(If)144 350.4 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 362.4 Q(uf)-.2 E -(fer and disables line editing.)-.25 E F1(FCEDIT)108 374.4 Q F0(The def) -144 386.4 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 398.4 Q F0 2.598(Ac)144 410.4 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 422.4 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 434.4 Q 2.5 -(As)5 G(ample v)-2.5 E(alue is)-.25 E F4(".o:~")2.5 E F0(.)A F1 -(GLOBIGNORE)108 446.4 Q F0 3.118(Ac)144 458.4 S .618(olon-separated lis\ +(ogrammable Completion)-.18 E F0(belo)2.5 E(w\).)-.25 E F1(EMA)108 156 Q +(CS)-.55 E F0(If)144 168 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/F2 10 +/Courier@0 SF(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 180 Q +(uf)-.2 E(fer and disables line editing.)-.25 E F1(FCEDIT)108 192 Q F0 +(The def)144 204 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 216 Q F0 2.599(Ac)144 228 S .098 +(olon-separated list of suf)-2.599 F<8c78>-.25 E .098 +(es to ignore when performing \214lename completion \(see)-.15 F/F3 9 +/Times-Bold@0 SF(READLINE)2.598 E F0(belo)144 240 Q 2.704(w\). A)-.25 F +.204(\214lename whose suf)2.704 F .205 +(\214x matches one of the entries in)-.25 F F3(FIGNORE)2.705 E F0 .205 +(is e)2.455 F .205(xcluded from the list)-.15 F(of matched \214lenames.) +144 252 Q 2.5(As)5 G(ample v)-2.5 E(alue is)-.25 E F2(".o:~")2.5 E F0(.) +A F1(GLOBIGNORE)108 264 Q F0 3.118(Ac)144 276 S .618(olon-separated lis\ t of patterns de\214ning the set of \214lenames to be ignored by pathna\ -me e)-3.118 F(xpan-)-.15 E 3.132(sion. If)144 470.4 R 3.132<618c>3.132 G +me e)-3.118 F(xpan-)-.15 E 3.131(sion. If)144 288 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 482.4 Q/F5 9/Times-Roman@0 SF(,)A F0(it is remo)2.25 E +(GLOBIGNORE)144 300 Q/F4 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 494.4 Q(OL)-.3 E F0 2.653(Ac)144 506.4 S .153 -(olon-separated list of v)-2.653 F .153(alues controlling ho)-.25 F +(HISTCONTR)108 312 Q(OL)-.3 E F0 2.654(Ac)144 324 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 .154(If the list) -5.153 F .491(of v)144 518.4 R .491(alues includes)-.25 F F2(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 530.4 R 3.057(Av)5.557 G .557(alue of)-3.307 F F2(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 542.4 S .459(alue of)-3.209 F F2(ignor)2.969 E(eboth)-.37 E F0 -.459(is shorthand for)3.239 F F2(ignor)2.959 E(espace)-.37 E F0(and) -2.959 E F2(ignor)2.958 E(edups)-.37 E F0 5.458(.A)C -.25(va)-2.5 G .458 -(lue of).25 F F2(er)2.958 E(asedups)-.15 E F0(causes)2.958 E .698 -(all pre)144 554.4 R .698 +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 336 R .49(alues includes)-.25 F/F5 10 +/Times-Italic@0 SF(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 348 R 3.058(Av)5.558 +G .558(alue of)-3.308 F F5(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 360 S .458(alue of)-3.208 F F5(ignor)2.968 E(eboth)-.37 E F0 +.458(is shorthand for)3.238 F F5(ignor)2.959 E(espace)-.37 E F0(and) +2.959 E F5(ignor)2.959 E(edups)-.37 E F0 5.459(.A)C -.25(va)-2.5 G .459 +(lue of).25 F F5(er)2.959 E(asedups)-.15 E F0(causes)2.959 E .699 +(all pre)144 372 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 566.4 Q -.15(ve)-.2 G 4.297(d. An).15 F 4.297(yv)-.15 G 1.797 -(alue not in the abo)-4.547 F 2.097 -.15(ve l)-.15 H 1.797 +3.198(df).15 G .698(rom the history list before that line is)-3.198 F +(sa)144 384 Q -.15(ve)-.2 G 4.296(d. An).15 F 4.296(yv)-.15 G 1.797 +(alue not in the abo)-4.546 F 2.097 -.15(ve l)-.15 H 1.797 (ist is ignored.).15 F(If)6.797 E F1(HISTCONTR)4.297 E(OL)-.3 E F0 1.797 -(is unset, or does not)4.297 F .612(include a v)144 578.4 R .612(alid v) +(is unset, or does not)4.297 F .613(include a v)144 396 R .612(alid v) -.25 F .612(alue, all lines read by the shell parser are sa)-.25 F -.15 (ve)-.2 G 3.112(do).15 G 3.112(nt)-3.112 G .612 -(he history list, subject to the)-3.112 F -.25(va)144 590.4 S .986 -(lue of).25 F F1(HISTIGNORE)3.486 E F0 5.986(.T)C .986 +(he history list, subject to the)-3.112 F -.25(va)144 408 S .985(lue of) +.25 F F1(HISTIGNORE)3.485 E F0 5.986(.T)C .986 (he second and subsequent lines of a multi-line compound command)-5.986 -F(are not tested, and are added to the history re)144 602.4 Q -.05(ga) --.15 G(rdless of the v).05 E(alue of)-.25 E F1(HISTCONTR)2.5 E(OL)-.3 E -F0(.)A F1(HISTFILE)108 614.4 Q F0 .181 -(The name of the \214le in which command history is sa)144 626.4 R -.15 +F(are not tested, and are added to the history re)144 420 Q -.05(ga)-.15 +G(rdless of the v).05 E(alue of)-.25 E F1(HISTCONTR)2.5 E(OL)-.3 E F0(.) +A F1(HISTFILE)108 432 Q F0 .181 +(The name of the \214le in which command history is sa)144 444 R -.15 (ve)-.2 G 2.681(d\().15 G(see)-2.681 E F3(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 638.4 Q F2(~/.bash_history)2.5 E F0 5(.I)C 2.5 +-.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 456 Q F5(~/.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 650.4 Q F0 1.623 -(The maximum number of lines contained in the history \214le.)144 662.4 -R 1.622(When this v)6.623 F 1.622(ariable is assigned a)-.25 F -.25(va) -144 674.4 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 686.4 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 698.4 Q .3 -.15(ve s)-.25 H -(hell e).15 E(xits.)-.15 E(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 -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(HISTIGNORE)108 84 Q F0 2.657(Ac)144 96 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 108 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 120 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 +(xits.)-.15 E F1(HISTFILESIZE)108 468 Q F0 1.622 +(The maximum number of lines contained in the history \214le.)144 480 R +1.623(When this v)6.623 F 1.623(ariable is assigned a)-.25 F -.25(va)144 +492 S .311(lue, the history \214le is truncated, if necessary).25 F +2.811(,t)-.65 G 2.811(oc)-2.811 G .311 +(ontain no more than that number of lines.)-2.811 F(The)5.311 E(def)144 +504 Q .386(ault v)-.1 F .386(alue is 500.)-.25 F .387(The history \214l\ +e is also truncated to this size after writing it when an interac-)5.386 +F(ti)144 516 Q .3 -.15(ve s)-.25 H(hell e).15 E(xits.)-.15 E F1 +(HISTIGNORE)108 528 Q F0 2.658(Ac)144 540 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 552 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 564 R F1(*)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 -132 Q(OL)-.3 E F0 1.155(are applied.)3.655 F 1.154 +576 Q(OL)-.3 E F0 1.154(are applied.)3.654 F 1.154 (In addition to the normal shell pattern matching characters, `)6.154 F -F1(&)A F0(')A 2.514(matches the pre)144 144 R 2.514(vious history line.) +F1(&)A F0(')A 2.515(matches the pre)144 588 R 2.515(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 156 -Q -.15(ve)-.15 G 3.353(db).15 G .853(efore attempting a match.)-3.353 F +(ay be escaped using a backslash; the backslash is)-5.014 F(remo)144 600 +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 168 Q -.05 +(command are not tested, and are added to the history re)144 612 Q -.05 (ga)-.15 G(rdless of the v).05 E(alue of)-.25 E F1(HISTIGNORE)2.5 E F0 -(.)A F1(HISTSIZE)108 180 Q F0 1.942 -(The number of commands to remember in the command history \(see)144 192 -R/F2 9/Times-Bold@0 SF(HIST)4.443 E(OR)-.162 E(Y)-.315 E F0(belo)4.193 E -4.443(w\). The)-.25 F(def)144 204 Q(ault v)-.1 E(alue is 500.)-.25 E F1 -(HISTTIMEFORMA)108 216 Q(T)-.95 E F0 .952(If this v)144 228 R .952 -(ariable is set and not null, its v)-.25 F .951 -(alue is used as a format string for)-.25 F/F3 10/Times-Italic@0 SF -(strftime)3.451 E F0 .951(\(3\) to print the)B .672 -(time stamp associated with each history entry displayed by the)144 240 -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 252 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 264 Q -F1(HOME)108 276 Q F0 1.27 -(The home directory of the current user; the def)144 288 R 1.27(ault ar) +(.)A F1(HISTSIZE)108 624 Q F0 1.942 +(The number of commands to remember in the command history \(see)144 636 +R F3(HIST)4.442 E(OR)-.162 E(Y)-.315 E F0(belo)4.192 E 4.442(w\). The) +-.25 F(def)144 648 Q(ault v)-.1 E(alue is 500.)-.25 E F1(HISTTIMEFORMA) +108 660 Q(T)-.95 E F0 .951(If this v)144 672 R .951 +(ariable is set and not null, its v)-.25 F .952 +(alue is used as a format string for)-.25 F F5(strftime)3.452 E F0 .952 +(\(3\) to print the)B .673 +(time stamp associated with each history entry displayed by the)144 684 +R F1(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 +(set, time stamps are written to the history \214le so the)144 696 Q 2.5 +(ym)-.15 G(ay be preserv)-2.5 E(ed across shell sessions.)-.15 E +(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(12)199.835 E 0 Cg EP +%%Page: 13 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/F1 10/Times-Bold@0 SF(HOME)108 84 Q F0 1.27 +(The home directory of the current user; the def)144 96 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 300 S(lue of this v).25 E +(iltin command.).2 F(The)6.27 E -.25(va)144 108 S(lue of this v).25 E (ariable is also used when performing tilde e)-.25 E(xpansion.)-.15 E F1 -(HOSTFILE)108 312 Q F0 1.015 -(Contains the name of a \214le in the same format as)144 324 R F3 -(/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 336 R .551 +(HOSTFILE)108 120 Q F0 1.015 +(Contains the name of a \214le in the same format as)144 132 R/F2 10 +/Times-Italic@0 SF(/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 144 R .551 (The list of possible hostname completions may be changed while)5.551 F -1.059(the shell is running; the ne)144 348 R 1.059 +1.059(the shell is running; the ne)144 156 R 1.059 (xt time hostname completion is attempted after the v)-.15 F 1.058 -(alue is changed,)-.25 F F1(bash)144 360 Q F0 .715 +(alue is changed,)-.25 F F1(bash)144 168 Q F0 .715 (adds the contents of the ne)3.215 F 3.215<778c>-.25 G .715(le to the e) --3.215 F .715(xisting list.)-.15 F(If)5.716 E F2(HOSTFILE)3.216 E F0 -.716(is set, b)2.966 F .716(ut has no v)-.2 F(alue,)-.25 E F1(bash)144 -372 Q F0 2.236(attempts to read)4.736 F F3(/etc/hosts)6.401 E F0 2.235 +-3.215 F .715(xisting list.)-.15 F(If)5.716 E/F3 9/Times-Bold@0 SF +(HOSTFILE)3.216 E F0 .716(is set, b)2.966 F .716(ut has no v)-.2 F +(alue,)-.25 E F1(bash)144 180 Q F0 2.236(attempts to read)4.736 F F2 +(/etc/hosts)6.401 E F0 2.235 (to obtain the list of possible hostname completions.)6.401 F(When)7.235 -E F2(HOSTFILE)144 384 Q F0(is unset, the hostname list is cleared.)2.25 -E F1(IFS)108 396 Q F0(The)20.44 E F3 .555(Internal F)3.635 F .555 +E F3(HOSTFILE)144 192 Q F0(is unset, the hostname list is cleared.)2.25 +E F1(IFS)108 204 Q F0(The)20.44 E F2 .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 408 S(rds with the).1 E F1 -.18(re)2.5 G(ad).18 E F0 -.2 +F -.1(wo)144 216 S(rds with the).1 E F1 -.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 420 Q -F0 .503(Controls the action of an interacti)144 432 R .803 -.15(ve s) --.25 H .503(hell on receipt of an).15 F F2(EOF)3.003 E F0 .503 +(`')-.25 E('.)-.74 E F1(IGNOREEOF)108 228 Q +F0 .503(Controls the action of an interacti)144 240 R .803 -.15(ve s) +-.25 H .503(hell on receipt of an).15 F F3(EOF)3.003 E F0 .503 (character as the sole input.)2.753 F .503(If set,)5.503 F .426(the v) -144 444 R .426(alue is the number of consecuti)-.25 F -.15(ve)-.25 G F2 +144 252 R .426(alue is the number of consecuti)-.25 F -.15(ve)-.25 G F3 (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 456 R F1(bash)2.802 E F0 -.15(ex)2.802 G +(on an input line before)144 264 R F1(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(no v)144 468 Q(alue, the def) +(umeric v).15 F .302(alue, or has)-.25 F(no v)144 276 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 -F2(EOF)2.5 E F0(signi\214es the end of input to the shell.)2.25 E F1 -(INPUTRC)108 480 Q F0 1.435(The \214lename for the)144 492 R F1 -.18(re) +F3(EOF)2.5 E F0(signi\214es the end of input to the shell.)2.25 E F1 +(INPUTRC)108 288 Q F0 1.435(The \214lename for the)144 300 R F1 -.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(~/.inputr)5.602 E(c) --.37 E F0(\(see)5.602 E F2(READLINE)3.936 E F0(belo)144 504 Q(w\).)-.25 -E F1(LANG)108 516 Q F0 1.24(Used to determine the locale cate)7.11 F +1.436(rriding the def).15 F 1.436(ault of)-.1 F F2(~/.inputr)5.602 E(c) +-.37 E F0(\(see)5.602 E F3(READLINE)3.936 E F0(belo)144 312 Q(w\).)-.25 +E F1(LANG)108 324 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 528 Q F1(LC_)2.5 E F0(.)A F1(LC_ALL)108 540 Q F0 .764 -(This v)144 552 R .764(ariable o)-.25 F -.15(ve)-.15 G .764 +(starting with)144 336 Q F1(LC_)2.5 E F0(.)A F1(LC_ALL)108 348 Q F0 .764 +(This v)144 360 R .764(ariable o)-.25 F -.15(ve)-.15 G .764 (rrides the v).15 F .764(alue of)-.25 F F1(LANG)3.264 E F0 .764(and an) 3.264 F 3.264(yo)-.15 G(ther)-3.264 E F1(LC_)3.264 E F0 -.25(va)3.264 G -.764(riable specifying a locale cate-).25 F(gory)144 564 Q(.)-.65 E F1 -(LC_COLLA)108 576 Q(TE)-.95 E F0 .412(This v)144 588 R .412(ariable det\ +.764(riable specifying a locale cate-).25 F(gory)144 372 Q(.)-.65 E F1 +(LC_COLLA)108 384 Q(TE)-.95 E F0 .412(This v)144 396 R .412(ariable det\ ermines the collation order used when sorting the results of pathname e) --.25 F(xpansion,)-.15 E 1.464(and determines the beha)144 600 R 1.464 +-.25 F(xpansion,)-.15 E 1.464(and determines the beha)144 408 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 -612 Q(xpansion and pattern matching.)-.15 E F1(LC_CTYPE)108 624 Q F0 -1.936(This v)144 636 R 1.936 +420 Q(xpansion and pattern matching.)-.15 E F1(LC_CTYPE)108 432 Q F0 +1.936(This v)144 444 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 648 Q -(xpansion and pattern matching.)-.15 E F1(LC_MESSA)108 660 Q(GES)-.55 E -F0(This v)144 672 Q(ariable determines the locale used to translate dou\ +1.935(vior of character classes)-.2 F(within pathname e)144 456 Q +(xpansion and pattern matching.)-.15 E F1(LC_MESSA)108 468 Q(GES)-.55 E +F0(This v)144 480 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 684 Q F0(This v)144 696 Q(ariable determines the locale cate)-.25 E -(gory used for number formatting.)-.15 E F1(LINES)108 708 Q F0 1.218 +108 492 Q F0(This v)144 504 Q(ariable determines the locale cate)-.25 E +(gory used for number formatting.)-.15 E F1(LINES)108 516 Q F0 1.218 (Used by the)5.99 F F1(select)3.718 E F0 -.2(bu)3.718 G 1.219(iltin com\ mand to determine the column length for printing selection lists.).2 F -(Automatically set upon receipt of a SIGWINCH.)144 720 Q(GNU Bash-3.2)72 -768 Q(2007 January 12)140.96 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/F1 10/Times-Bold@0 SF(MAIL)108 84 Q F0 .188 -(If this parameter is set to a \214le name and the)8.78 F/F2 9 -/Times-Bold@0 SF(MAILP)2.687 E -.855(AT)-.666 G(H).855 E F0 -.25(va) -2.437 G .187(riable is not set,).25 F F1(bash)2.687 E F0 .187 -(informs the user)2.687 F(of the arri)144 96 Q -.25(va)-.25 G 2.5(lo).25 -G 2.5(fm)-2.5 G(ail in the speci\214ed \214le.)-2.5 E F1(MAILCHECK)108 -108 Q F0 .098(Speci\214es ho)144 120 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 befo\ -re displaying the primary prompt.)144 132 R .223(If this v)5.223 F .223 -(ariable is unset,)-.25 F .066(or set to a v)144 144 R .066(alue that i\ -s not a number greater than or equal to zero, the shell disables mail c\ -hecking.)-.25 F F1(MAILP)108 156 Q -.95(AT)-.74 G(H).95 E F0 2.815(Ac) -144 168 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 180 Q -.15(ve)-.25 G 3.42(si).15 G 3.42(nap)-3.42 G .92(artic\ +(Automatically set upon receipt of a SIGWINCH.)144 528 Q F1(MAIL)108 540 +Q F0 .188(If this parameter is set to a \214le name and the)8.78 F F3 +(MAILP)2.687 E -.855(AT)-.666 G(H).855 E F0 -.25(va)2.437 G .187 +(riable is not set,).25 F F1(bash)2.687 E F0 .187(informs the user)2.687 +F(of the arri)144 552 Q -.25(va)-.25 G 2.5(lo).25 G 2.5(fm)-2.5 G +(ail in the speci\214ed \214le.)-2.5 E F1(MAILCHECK)108 564 Q F0 .098 +(Speci\214es ho)144 576 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 588 R .223(If this v)5.223 F .223(ariable is unset,)-.25 F .066 +(or set to a v)144 600 R .066(alue that is not a number greater than or\ + equal to zero, the shell disables mail checking.)-.25 F F1(MAILP)108 +612 Q -.95(AT)-.74 G(H).95 E F0 2.815(Ac)144 624 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 636 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 192 R .308(used in the te) +essage with a)-3.42 F 2.808(`?'. When)144 648 R .308(used in the te) 2.808 F .308(xt of the message,)-.15 F F1($_)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 204 Q F1(MAILP)144 216 Q -.95(AT)-.74 G(H).95 E F0(=\010/v)A +(ple:)144 660 Q F1(MAILP)144 672 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 228 Q F0 .388 +(ail":~/shell\255mail?"$_ has mail!"\010).15 E F1(Bash)144 684 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 (ut the location of the user mail \214les that it uses is)-.2 F -(system dependent \(e.g., /v)144 240 Q(ar/mail/)-.25 E F1($USER)A F0 -(\).)A F1(OPTERR)108 252 Q F0 .39(If set to the v)144 264 R .39(alue 1,) --.25 F F1(bash)2.89 E F0 .389(displays error messages generated by the) -2.889 F F1(getopts)2.889 E F0 -.2(bu)2.889 G .389(iltin command \(see).2 -F F2 .359(SHELL B)144 276 R(UIL)-.09 E .359(TIN COMMANDS)-.828 F F0 -(belo)2.609 E(w\).)-.25 E F2(OPTERR)5.359 E F0 .36 +(system dependent \(e.g., /v)144 696 Q(ar/mail/)-.25 E F1($USER)A F0 +(\).)A(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(13)199.835 E 0 Cg EP +%%Page: 14 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(OPTERR)108 84 Q F0 .39(If set to the v)144 +96 R .39(alue 1,)-.25 F F1(bash)2.89 E F0 .389 +(displays error messages generated by the)2.889 F F1(getopts)2.889 E F0 +-.2(bu)2.889 G .389(iltin command \(see).2 F/F2 9/Times-Bold@0 SF .359 +(SHELL B)144 108 R(UIL)-.09 E .359(TIN COMMANDS)-.828 F F0(belo)2.609 E +(w\).)-.25 E F2(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 288 Q -.15(xe)-.15 G(cuted.) -.15 E F1 -.74(PA)108 300 S(TH)-.21 E F0 .588 +(ke).2 G(d).1 E(or a shell script is e)144 120 Q -.15(xe)-.15 G(cuted.) +.15 E F1 -.74(PA)108 132 S(TH)-.21 E F0 .588 (The search path for commands.)9.91 F .587 (It is a colon-separated list of directories in which the shell looks) -5.588 F .471(for commands \(see)144 312 R F2 .471(COMMAND EXECUTION) +5.588 F .471(for commands \(see)144 144 R F2 .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 324 S +(zero-length \(null\) directory name in the)2.972 F -.25(va)144 156 S .345(lue of).25 F F1 -.74(PA)2.845 G(TH)-.21 E F0 .345 (indicates the current directory)2.845 F 5.345(.A)-.65 G .344 (null directory name may appear as tw)-2.5 F 2.844(oa)-.1 G(djacent) --2.844 E .867(colons, or as an initial or trailing colon.)144 336 R .868 +-2.844 E .867(colons, or as an initial or trailing colon.)144 168 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 348 R F1(bash)28.829 E F0 +-.1 F 26.329(administrator who installs)144 180 R F1(bash)28.829 E F0 31.329(.A)C 26.328(common v)-2.501 F 26.328(alue is)-.25 F/F3 10 -/Courier@0 SF(/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin)144 360 -Q F0(.)A F1(POSIXL)108 372 Q(Y_CORRECT)-.92 E F0 .471(If this v)144 384 +/Courier@0 SF(/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin)144 192 +Q F0(.)A F1(POSIXL)108 204 Q(Y_CORRECT)-.92 E F0 .471(If this v)144 216 R .471(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/F4 10/Times-Italic@0 SF .472(posix mode)2.972 F F0 .472(before reading)2.972 F .011 -(the startup \214les, as if the)144 396 R F1(\255\255posix)2.511 E F0 +(the startup \214les, as if the)144 228 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 408 Q F1(bash)2.5 +(If it is set while the shell is)5.011 F(running,)144 240 Q F1(bash)2.5 E F0(enables)2.5 E F4(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 F3(set -o posix)2.5 E F0(had been e)2.5 E -.15 -(xe)-.15 G(cuted.).15 E F1(PR)108 420 Q(OMPT_COMMAND)-.3 E F0 -(If set, the v)144 432 Q(alue is e)-.25 E -.15(xe)-.15 G +(xe)-.15 G(cuted.).15 E F1(PR)108 252 Q(OMPT_COMMAND)-.3 E F0 +(If set, the v)144 264 Q(alue is e)-.25 E -.15(xe)-.15 G (cuted as a command prior to issuing each primary prompt.).15 E F1(PS1) -108 444 Q F0 .064(The v)19.33 F .065(alue of this parameter is e)-.25 F +108 276 Q F0 .064(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 456 R +.065(w\) and used as the primary prompt)-.25 F 2.5(string. The)144 288 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 468 Q F0 .005(The v)19.33 F .005 +-.74('')2.5 G(.).74 E F1(PS2)108 300 Q F0 .005(The v)19.33 F .005 (alue of this parameter is e)-.25 F .005(xpanded as with)-.15 F F1(PS1) 2.505 E F0 .004(and used as the secondary prompt string.)2.505 F(The) -5.004 E(def)144 480 Q(ault is `)-.1 E(`)-.74 E F1(>)A F0 -.74('')2.5 G -(.).74 E F1(PS3)108 492 Q F0 1.115(The v)19.33 F 1.115 +5.004 E(def)144 312 Q(ault is `)-.1 E(`)-.74 E F1(>)A F0 -.74('')2.5 G +(.).74 E F1(PS3)108 324 Q F0 1.115(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 504 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E F1(PS4)108 516 Q F0 +144 336 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E F1(PS4)108 348 Q F0 1.099(The v)19.33 F 1.099(alue of this parameter is e)-.25 F 1.099 (xpanded as with)-.15 F F1(PS1)3.599 E F0 1.099(and the v)3.599 F 1.098 -(alue is printed before each com-)-.25 F(mand)144 528 Q F1(bash)3.725 E +(alue is printed before each com-)-.25 F(mand)144 360 Q F1(bash)3.725 E F0 1.225(displays during an e)3.725 F -.15(xe)-.15 G 1.225 (cution trace.).15 F 1.226(The \214rst character of)6.225 F F2(PS4)3.726 -E F0 1.226(is replicated multiple)3.476 F(times, as necessary)144 540 Q +E F0 1.226(is replicated multiple)3.476 F(times, as necessary)144 372 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 552 Q F0 .664 -(The full pathname to the shell is k)144 564 R .664(ept in this en)-.1 F +-.74('')2.5 G(.).74 E F1(SHELL)108 384 Q F0 .664 +(The full pathname to the shell is k)144 396 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 576 Q F1(bash)2.5 E F0 +(it is not set when the shell)3.164 F(starts,)144 408 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 588 Q(T)-.95 E F0 .826(The v)144 -600 R .826 +G(ogin shell.)-2.5 E F1(TIMEFORMA)108 420 Q(T)-.95 E F0 .826(The v)144 +432 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 612 R .649(ed with the)-.15 F F1(time)3.149 E F0 +(pipelines pre\214x)144 444 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 624 R .711(xpanded to a time v)-.15 F +(an escape sequence that is e)144 456 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 636 Q -(ws; the braces denote optional portions.)-.25 E F1(%%)144 654 Q F0 2.5 -(Al)30 G(iteral)-2.5 E F1(%)2.5 E F0(.)A F1(%[)144 666 Q F4(p)A F1 -(][l]R)A F0(The elapsed time in seconds.)11.68 E F1(%[)144 678 Q F4(p)A +(and their meanings are as follo)144 468 Q +(ws; the braces denote optional portions.)-.25 E F1(%%)144 486 Q F0 2.5 +(Al)30 G(iteral)-2.5 E F1(%)2.5 E F0(.)A F1(%[)144 498 Q F4(p)A F1 +(][l]R)A F0(The elapsed time in seconds.)11.68 E F1(%[)144 510 Q F4(p)A F1(][l]U)A F0(The number of CPU seconds spent in user mode.)11.68 E F1 -(%[)144 690 Q F4(p)A F1(][l]S)A F0 -(The number of CPU seconds spent in system mode.)13.34 E F1(%P)144 702 Q +(%[)144 522 Q F4(p)A F1(][l]S)A F0 +(The number of CPU seconds spent in system mode.)13.34 E F1(%P)144 534 Q F0(The CPU percentage, computed as \(%U + %S\) / %R.)33.89 E .87 -(The optional)144 718.8 R F4(p)3.37 E F0 .87(is a digit specifying the) +(The optional)144 550.8 R F4(p)3.37 E F0 .87(is a digit specifying the) 3.37 F F4(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 730.8 R -.25(va)2.525 G .025 +144 562.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(GNU Bash-3.2)72 768 Q -(2007 January 12)140.96 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 .538(decimal point may be speci\214ed; v)144 84 R .538(alues of) --.25 F/F1 10/Times-Italic@0 SF(p)3.038 E F0 .537 -(greater than 3 are changed to 3.)3.037 F(If)5.537 E F1(p)3.037 E F0 -.537(is not speci\214ed,)3.037 F(the v)144 96 Q(alue 3 is used.)-.25 E -.667(The optional)144 112.8 R/F2 10/Times-Bold@0 SF(l)3.167 E F0 .668 -(speci\214es a longer format, including minutes, of the form)3.168 F F1 -(MM)3.168 E F0(m)A F1(SS)A F0(.)A F1(FF)A F0 3.168(s. The)B -.25(va) -3.168 G(lue).25 E(of)144 124.8 Q F1(p)2.5 E F0 +(At most three places after the)5.025 F .538 +(decimal point may be speci\214ed; v)144 574.8 R .538(alues of)-.25 F F4 +(p)3.038 E F0 .537(greater than 3 are changed to 3.)3.037 F(If)5.537 E +F4(p)3.037 E F0 .537(is not speci\214ed,)3.037 F(the v)144 586.8 Q +(alue 3 is used.)-.25 E .667(The optional)144 603.6 R F1(l)3.167 E F0 +.668(speci\214es a longer format, including minutes, of the form)3.168 F +F4(MM)3.168 E F0(m)A F4(SS)A F0(.)A F4(FF)A F0 3.168(s. The)B -.25(va) +3.168 G(lue).25 E(of)144 615.6 Q F4(p)2.5 E F0 (determines whether or not the fraction is included.)2.5 E .001 -(If this v)144 141.6 R .001(ariable is not set,)-.25 F F2(bash)2.501 E -F0 .001(acts as if it had the v)2.501 F(alue)-.25 E F2($\010\\nr)2.5 E +(If this v)144 632.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 -153.6 R .494(alue is null, no timing information is displayed.)-.25 F +644.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 -165.6 Q F2(TMOUT)108 182.4 Q F0 .718(If set to a v)144 194.4 R .717 -(alue greater than zero,)-.25 F F2(TMOUT)3.217 E F0 .717 -(is treated as the def)3.217 F .717(ault timeout for the)-.1 F F2 -.18 -(re)3.217 G(ad).18 E F0 -.2(bu)3.217 G(iltin.).2 E(The)144 206.4 Q F2 +656.4 Q F1(TMOUT)108 673.2 Q F0 .718(If set to a v)144 685.2 R .717 +(alue greater than zero,)-.25 F F1(TMOUT)3.217 E F0 .717 +(is treated as the def)3.217 F .717(ault timeout for the)-.1 F F1 -.18 +(re)3.217 G(ad).18 E F0 -.2(bu)3.217 G(iltin.).2 E(The)144 697.2 Q F1 (select)2.542 E F0 .042(command terminates if input does not arri)2.542 -F .342 -.15(ve a)-.25 H(fter).15 E F2(TMOUT)2.542 E F0 .042 -(seconds when input is com-)2.542 F .886(ing from a terminal.)144 218.4 +F .342 -.15(ve a)-.25 H(fter).15 E F1(TMOUT)2.542 E F0 .042 +(seconds when input is com-)2.542 F .886(ing from a terminal.)144 709.2 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 230.4 S .546(it for input after issuing the primary prompt.).1 F -F2(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 -242.4 Q -.15(ve)-.25 G(.).15 E F2(TMPDIR)108 259.2 Q F0 .274(If set,)144 -271.2 R F2(Bash)2.774 E F0 .274(uses its v)2.774 F .274 -(alue as the name of a directory in which)-.25 F F2(Bash)2.773 E F0 .273 -(creates temporary \214les for the)2.773 F(shell')144 283.2 Q 2.5(su) --.55 G(se.)-2.5 E F2(auto_r)108 300 Q(esume)-.18 E F0 .53(This v)144 312 -R .53(ariable controls ho)-.25 F 3.03(wt)-.25 G .531 +(wa)144 721.2 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(GNU Bash-3.2)72 768 Q(2006 Jan 26) +149.845 E(14)199.835 E 0 Cg EP +%%Page: 15 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(seconds if input does not arri)144 84 Q -.15(ve)-.25 G(.).15 E/F1 +10/Times-Bold@0 SF(TMPDIR)108 100.8 Q F0 .274(If set,)144 112.8 R F1 +(Bash)2.774 E F0 .274(uses its v)2.774 F .274 +(alue as the name of a directory in which)-.25 F F1(Bash)2.773 E F0 .273 +(creates temporary \214les for the)2.773 F(shell')144 124.8 Q 2.5(su) +-.55 G(se.)-2.5 E F1(auto_r)108 141.6 Q(esume)-.18 E F0 .53(This v)144 +153.6 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 324 R +(If this v)5.531 F .531(ariable is set,)-.25 F .539(single w)144 165.6 R .538(ord simple commands without redirections are treated as candidates\ - for resumption of an)-.1 F -.15(ex)144 336 S .366(isting stopped job) + for resumption of an)-.1 F -.15(ex)144 177.6 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 -348 R(The)6.125 E F1(name)3.985 E F0 1.124(of a stopped job, in this) -3.805 F(conte)144 360 Q 1.132(xt, is the command line used to start it.) --.15 F 1.133(If set to the v)6.133 F(alue)-.25 E F1 -.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 372 R .624(xactly; if set to)-.15 -F F1(substring)3.124 E F0 3.124(,t).22 G .624 +189.6 R(The)6.125 E/F2 10/Times-Italic@0 SF(name)3.985 E F0 1.124 +(of a stopped job, in this)3.805 F(conte)144 201.6 Q 1.132 +(xt, is the command line used to start it.)-.15 F 1.133(If set to the v) +6.133 F(alue)-.25 E F2 -.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 213.6 R .624(xactly; if set to) +-.15 F F2(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 384 R 5.884(.T)-.4 G(he) --5.884 E F1(substring)3.724 E F0 -.25(va)3.604 G .885(lue pro).25 F .885 -(vides functionality analogous to)-.15 F(the)144 396 Q F2(%?)3.334 E F0 -.834(job identi\214er \(see)5.834 F/F3 9/Times-Bold@0 SF .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 +(substring of the name of a stopped job)144 225.6 R 5.884(.T)-.4 G(he) +-5.884 E F2(substring)3.724 E F0 -.25(va)3.604 G .885(lue pro).25 F .885 +(vides functionality analogous to)-.15 F(the)144 237.6 Q F1(%?)3.334 E +F0 .834(job identi\214er \(see)5.834 F/F3 9/Times-Bold@0 SF .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 .315 -(must be a pre\214x of a stopped job')144 408 R 2.816(sn)-.55 G .316 +(must be a pre\214x of a stopped job')144 249.6 R 2.816(sn)-.55 G .316 (ame; this pro)-2.816 F .316(vides functionality analogous to the)-.15 F -F2(%)2.816 E F1(string)A F0(job)2.816 E(identi\214er)144 420 Q(.)-.55 E -F2(histchars)108 436.8 Q F0 2.07(The tw)144 448.8 R 4.57(oo)-.1 G 4.57 +F1(%)2.816 E F2(string)A F0(job)2.816 E(identi\214er)144 261.6 Q(.)-.55 +E F1(histchars)108 278.4 Q F0 2.07(The tw)144 290.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 F3(HIST)4.569 E(OR) --.162 E(Y)-.315 E(EXP)144 460.8 Q(ANSION)-.666 E F0(belo)3.465 E 3.715 -(w\). The)-.25 F 1.215(\214rst character is the)3.715 F F1 1.216 +-.162 E(Y)-.315 E(EXP)144 302.4 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 472.8 R .798(xpansion, normally `)-.15 F F2(!)A F0 3.298('. The)B -.798(second character is the)3.298 F F1(quic)3.298 E 3.298(ks)-.2 G -(ubstitu-)-3.298 E(tion)144 484.8 Q F0(character)2.739 E 2.739(,w)-.4 G +144 314.4 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 326.4 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 496.8 R .575(The def) -5.575 F .575(ault is `)-.1 F F2(^)A F0 3.075('. The)B .575 +(ing one string for another in the command.)144 338.4 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 508.8 R(-)-.2 E 1.294(acter of a w)144 520.8 R 1.294 -(ord, normally `)-.1 F F2(#)A F0 3.794('. The)B 1.293 +char)144 350.4 R(-)-.2 E 1.294(acter of a w)144 362.4 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 532.8 R .379(ords on the line.)-.1 +.379(skipped for the remaining w)144 374.4 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 544.8 Q F2(Arrays)87 561.6 Q -(Bash)108 573.6 Q F0(pro)2.958 E .458(vides one-dimensional array v)-.15 +(the rest of the line as a comment.)144 386.4 Q F1(Arrays)87 403.2 Q +(Bash)108 415.2 Q F0(pro)2.958 E .458(vides one-dimensional array v)-.15 F 2.958(ariables. An)-.25 F 2.958(yv)-.15 G .458 -(ariable may be used as an array; the)-3.208 F F2(declar)2.958 E(e)-.18 -E F0 -.2(bu)2.958 G(iltin).2 E .96(will e)108 585.6 R .96 +(ariable may be used as an array; the)-3.208 F F1(declar)2.958 E(e)-.18 +E F0 -.2(bu)2.958 G(iltin).2 E .96(will e)108 427.2 R .96 (xplicitly declare an array)-.15 F 5.96(.T)-.65 G .961 (here is no maximum limit on the size of an array)-5.96 F 3.461(,n)-.65 G .961(or an)-3.461 F 3.461(yr)-.15 G(equirement)-3.461 E -(that members be inde)108 597.6 Q -.15(xe)-.15 G 2.5(do).15 G 2.5(ra) +(that members be inde)108 439.2 Q -.15(xe)-.15 G 2.5(do).15 G 2.5(ra) -2.5 G(ssigned contiguously)-2.5 E 5(.A)-.65 G(rrays are inde)-5 E -.15 (xe)-.15 G 2.5(du).15 G(sing inte)-2.5 E(gers and are zero-based.)-.15 E -1.302(An array is created automatically if an)108 614.4 R 3.801(yv)-.15 -G 1.301(ariable is assigned to using the syntax)-4.051 F F1(name)3.801 E -F0([)A F1(subscript)A F0(]=)A F1(value)A F0(.)A(The)108 626.4 Q F1 +1.302(An array is created automatically if an)108 456 R 3.801(yv)-.15 G +1.301(ariable is assigned to using the syntax)-4.051 F F2(name)3.801 E +F0([)A F2(subscript)A F0(]=)A F2(value)A F0(.)A(The)108 468 Q F2 (subscript)3.181 E F0 .341(is treated as an arithmetic e)3.521 F .342 (xpression that must e)-.15 F -.25(va)-.25 G .342 -(luate to a number greater than or equal to).25 F 4.077(zero. T)108 -638.4 R 4.077(oe)-.8 G 1.577(xplicitly declare an array)-4.227 F 4.077 -(,u)-.65 G(se)-4.077 E F2(declar)4.077 E 4.077<65ad>-.18 G(a)-4.077 E F1 -(name)4.077 E F0(\(see)4.077 E F3 1.577(SHELL B)4.077 F(UIL)-.09 E 1.576 -(TIN COMMANDS)-.828 F F0(belo)3.826 E(w\).)-.25 E F2(declar)108 650.4 Q -3.375<65ad>-.18 G(a)-3.375 E F1(name)3.375 E F2([)A F1(subscript)A F2(]) -A F0 .875(is also accepted; the)3.375 F F1(subscript)3.375 E F0 .875 +(luate to a number greater than or equal to).25 F 4.077(zero. T)108 480 +R 4.077(oe)-.8 G 1.577(xplicitly declare an array)-4.227 F 4.077(,u)-.65 +G(se)-4.077 E F1(declar)4.077 E 4.077<65ad>-.18 G(a)-4.077 E F2(name) +4.077 E F0(\(see)4.077 E F3 1.577(SHELL B)4.077 F(UIL)-.09 E 1.576 +(TIN COMMANDS)-.828 F F0(belo)3.826 E(w\).)-.25 E F1(declar)108 492 Q +3.375<65ad>-.18 G(a)-3.375 E F2(name)3.375 E F1([)A F2(subscript)A F1(]) +A F0 .875(is also accepted; the)3.375 F F2(subscript)3.375 E F0 .875 (is ignored.)3.375 F(Attrib)5.875 E .876(utes may be speci\214ed for an) --.2 F(array v)108 662.4 Q(ariable using the)-.25 E F2(declar)2.5 E(e) --.18 E F0(and)2.5 E F2 -.18(re)2.5 G(adonly).18 E F0 -.2(bu)2.5 G 2.5 +-.2 F(array v)108 504 Q(ariable using the)-.25 E F1(declar)2.5 E(e)-.18 +E F0(and)2.5 E F1 -.18(re)2.5 G(adonly).18 E F0 -.2(bu)2.5 G 2.5 (iltins. Each).2 F(attrib)2.5 E(ute applies to all members of an array) -.2 E(.)-.65 E 1.647 -(Arrays are assigned to using compound assignments of the form)108 679.2 -R F1(name)4.147 E F0(=)A F2(\()A F0 -.25(va)C(lue).25 E F1(1)A F0 1.647 -(... v)4.147 F(alue)-.25 E F1(n)A F2(\))A F0 4.147(,w)C 1.647(here each) --4.147 F F1(value)108 691.2 Q F0 .65(is of the form [)3.15 F F1 -(subscript)A F0(]=)A F1(string)A F0 5.65(.O)C(nly)-5.65 E F1(string)3.15 +(Arrays are assigned to using compound assignments of the form)108 520.8 +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 532.8 Q F0 .65(is of the form [)3.15 F F2 +(subscript)A F0(]=)A F2(string)A F0 5.65(.O)C(nly)-5.65 E F2(string)3.15 E F0 .65(is required.)3.15 F .65(If the optional brack)5.65 F .65 -(ets and subscript are)-.1 F .277(supplied, that inde)108 703.2 R 2.777 +(ets and subscript are)-.1 F .277(supplied, that inde)108 544.8 R 2.777 (xi)-.15 G 2.777(sa)-2.777 G .277(ssigned to; otherwise the inde)-2.777 F 2.777(xo)-.15 G 2.777(ft)-2.777 G .276 (he element assigned is the last inde)-2.777 F 2.776(xa)-.15 G .276 -(ssigned to)-2.776 F 1.393(by the statement plus one.)108 715.2 R(Inde) +(ssigned to)-2.776 F 1.393(by the statement plus one.)108 556.8 R(Inde) 6.393 E 1.393(xing starts at zero.)-.15 F 1.394 -(This syntax is also accepted by the)6.394 F F2(declar)3.894 E(e)-.18 E -F0 -.2(bu)3.894 G(iltin.).2 E(Indi)108 727.2 Q -(vidual array elements may be assigned to using the)-.25 E F1(name)2.5 E -F0([)A F1(subscript)A F0(]=)A F1(value)A F0(syntax introduced abo)2.5 E --.15(ve)-.15 G(.).15 E(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 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(An)108 84 Q 3.576(ye)-.15 G 1.076 -(lement of an array may be referenced using ${)-3.576 F/F1 10 -/Times-Italic@0 SF(name)A F0([)A F1(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 96 R 4.041(xpansion. If)-.15 F F1 -(subscript)4.041 E F0(is)4.041 E/F2 10/Times-Bold@0 SF(@)4.041 E F0(or) -4.041 E F2(*)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 F1(name)4.042 E F0(.)A 1.057 -(These subscripts dif)108 108 R 1.057(fer only when the w)-.25 F 1.057 +(This syntax is also accepted by the)6.394 F F1(declar)3.894 E(e)-.18 E +F0 -.2(bu)3.894 G(iltin.).2 E(Indi)108 568.8 Q +(vidual array elements may be assigned to using the)-.25 E F2(name)2.5 E +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 585.6 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 597.6 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.042 E F0(.)A 1.057 +(These subscripts dif)108 609.6 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 120 Q F1(name)A F0 .52([*]} e)B .52 -(xpands to a single w)-.15 F .52(ord with the v)-.1 F .521 +(ord is double-quoted,)-.1 F(${)108 621.6 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.375(of the)108 132 R/F3 9/Times-Bold@0 SF(IFS)3.875 E F0 1.375 -(special v)3.625 F 1.375(ariable, and ${)-.25 F F1(name)A F0 1.375 -([@]} e)B 1.375(xpands each element of)-.15 F F1(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 144 R F1(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 156 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 .515(and the e) -108 168 R .516(xpansion of the last parameter is joined with the last p\ -art of the original w)-.15 F 3.016(ord. This)-.1 F .516(is analogous) -3.016 F .228(to the e)108 180 R .228(xpansion of the special parameters) --.15 F F2(*)2.728 E F0(and)2.728 E F2(@)2.728 E F0(\(see)2.728 E F2 .228 +1.375(of the)108 633.6 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.374(to a separate w) +3.875 F 3.874(ord. When)-.1 F 2.027(there are no array members, ${)108 +645.6 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 657.6 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 .515(and the e)108 +669.6 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 681.6 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.727 E -.15(ve)-.15 G 2.727 -(\). ${#).15 F F1(name)A F0([)A F1(subscript)A F0(]})A -.15(ex)108 192 S -.886(pands to the length of ${).15 F F1(name)A F0([)A F1(subscript)A F0 -3.386(]}. If)B F1(subscript)3.386 E F0(is)3.386 E F2(*)3.386 E F0(or) -3.386 E F2(@)3.386 E F0 3.386(,t)C .886(he e)-3.386 F .886 -(xpansion is the number of ele-)-.15 F .734(ments in the array)108 204 R -5.734(.R)-.65 G .733(eferencing an array v)-5.734 F .733 +(\). ${#).15 F F2(name)A F0([)A F2(subscript)A F0(]})A -.15(ex)108 693.6 +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 .734(ments in the array)108 705.6 +R 5.734(.R)-.65 G .733(eferencing an array v)-5.734 F .733 (ariable without a subscript is equi)-.25 F -.25(va)-.25 G .733 -(lent to referencing element).25 F(zero.)108 216 Q(The)108 232.8 Q F2 -(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 F2(unset)5.267 E F1(name)2.767 E F0([)A F1 -(subscript)A F0 2.767(]d)C(estro)-2.767 E .267 -(ys the array element at inde)-.1 F(x)-.15 E F1(sub-)2.767 E(script)108 -244.8 Q F0 6.38(.C)C 1.38(are must be tak)-6.38 F 1.38(en to a)-.1 F -.2 -(vo)-.2 G 1.38(id unw).2 F 1.38(anted side ef)-.1 F 1.38 -(fects caused by \214lename generation.)-.25 F F2(unset)6.38 E F1(name) -3.88 E F0(,)A(where)108 256.8 Q F1(name)2.5 E F0(is an array)2.5 E 2.5 -(,o)-.65 G(r)-2.5 E F2(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 273.6 Q F2(declar)3.67 E(e)-.18 -E F0(,)A F2(local)3.67 E F0 3.67(,a)C(nd)-3.67 E F2 -.18(re)3.67 G -(adonly).18 E F0 -.2(bu)3.67 G 1.17(iltins each accept a).2 F F2 -3.671 E F0 1.171(option to specify an array)3.671 F 6.171(.T)-.65 G(he) --6.171 E F2 -.18(re)3.671 G(ad).18 E F0 -.2(bu)3.671 G(iltin).2 E .441 -(accepts a)108 285.6 R F22.941 E F0 .441 +(lent to referencing element).25 F(zero.)108 717.6 Q(GNU Bash-3.2)72 768 +Q(2006 Jan 26)149.845 E(15)199.835 E 0 Cg EP +%%Page: 16 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(The)108 84 Q/F1 10/Times-Bold@0 SF(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 10/Times-Italic@0 SF(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 96 Q F0 6.38(.C)C 1.38 +(are must be tak)-6.38 F 1.38(en to a)-.1 F -.2(vo)-.2 G 1.38(id unw).2 +F 1.38(anted side ef)-.1 F 1.38(fects caused by \214lename generation.) +-.25 F F1(unset)6.38 E F2(name)3.88 E F0(,)A(where)108 108 Q F2(name)2.5 +E F0(is an array)2.5 E 2.5(,o)-.65 G(r)-2.5 E F1(unset)2.5 E F2(name)2.5 +E 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(The)108 124.8 Q F1(declar) +3.67 E(e)-.18 E F0(,)A F1(local)3.67 E F0 3.67(,a)C(nd)-3.67 E F1 -.18 +(re)3.67 G(adonly).18 E F0 -.2(bu)3.67 G 1.17(iltins each accept a).2 F +F13.671 E F0 1.171(option to specify an array)3.671 F 6.171(.T) +-.65 G(he)-6.171 E F1 -.18(re)3.671 G(ad).18 E F0 -.2(bu)3.671 G(iltin) +.2 E .441(accepts a)108 136.8 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.94 E(e)-.18 E F0 -.2 -(bu)108 297.6 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/F4 10.95 -/Times-Bold@0 SF(EXP)72 314.4 Q(ANSION)-.81 E F0 .76(Expansion is perfo\ -rmed on the command line after it has been split into w)108 326.4 R 3.26 +-5.441 E F1(set)2.941 E F0(and)2.941 E F1(declar)2.94 E(e)-.18 E F0 -.2 +(bu)108 148.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 165.6 Q(ANSION)-.81 E F0 .76(Expansion is perfo\ +rmed on the command line after it has been split into w)108 177.6 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 338.4 S .37(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 .369 -(command sub-)2.869 F(stitution)108 350.4 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 .47(The order of e)108 367.2 R .471(xpansions is: brace e)-.15 F .471 +(inds of)-3.26 F -.15(ex)108 189.6 S .37(pansion performed:).15 F F2(br) +2.869 E .369(ace e)-.15 F(xpansion)-.2 E F0(,).24 E F2 .369(tilde e) +2.869 F(xpansion)-.2 E F0(,).24 E F2(par)2.869 E .369 +(ameter and variable e)-.15 F(xpansion)-.2 E F0(,).24 E F2 .369 +(command sub-)2.869 F(stitution)108 201.6 Q F0(,).24 E F2(arithmetic e) +2.5 E(xpansion)-.2 E F0(,).24 E F2(wor)2.5 E 2.5(ds)-.37 G(plitting)-2.5 +E F0 2.5(,a).22 G(nd)-2.5 E F2(pathname e)2.5 E(xpansion)-.2 E F0(.).24 +E .47(The order of e)108 218.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 .471(ariable and arithmetic e)-3.221 F(xpansion)-.15 E -(and command substitution \(done in a left-to-right f)108 379.2 Q +(and command substitution \(done in a left-to-right f)108 230.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 396 Q -(xpansion a)-.15 E -.25(va)-.2 G(ilable:).25 E F1(pr)2.5 E -(ocess substitution)-.45 E F0(.)A 1.487(Only brace e)108 412.8 R 1.487 +(On systems that can support it, there is an additional e)108 247.2 Q +(xpansion a)-.15 E -.25(va)-.2 G(ilable:).25 E F2(pr)2.5 E +(ocess substitution)-.45 E F0(.)A 1.487(Only brace e)108 264 R 1.487 (xpansion, w)-.15 F 1.487(ord splitting, and pathname e)-.1 F 1.487 (xpansion can change the number of w)-.15 F 1.486(ords of the)-.1 F -.15 -(ex)108 424.8 S 1.164(pansion; other e).15 F 1.164(xpansions e)-.15 F +(ex)108 276 S 1.164(pansion; other e).15 F 1.164(xpansions e)-.15 F 1.164(xpand a single w)-.15 F 1.165(ord to a single w)-.1 F 3.665 (ord. The)-.1 F 1.165(only e)3.665 F 1.165(xceptions to this are the) --.15 F -.15(ex)108 436.8 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 -(xplained abo)-2.65 E .3 -.15(ve \()-.15 H(see).15 E F3 -.666(PA)2.5 G -(RAMETERS).666 E/F5 9/Times-Roman@0 SF(\).)A F2(Brace Expansion)87 453.6 -Q F1(Br)108.58 465.6 Q .606(ace e)-.15 F(xpansion)-.2 E F0 .606 +-.15 F -.15(ex)108 288 S(pansions of ").15 E F1($@)A F0 2.5("a)C(nd ") +-2.5 E F1(${)A F2(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 F1 +(Brace Expansion)87 304.8 Q F2(Br)108.58 316.8 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 477.6 Q F1 .415 +.606(This mechanism is similar)5.606 F(to)108 328.8 Q F2 .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 .152(form of an optional)108 489.6 R F1(pr)2.652 E(eamble) +(he)-2.915 E .152(form of an optional)108 340.8 R F2(pr)2.652 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 501.6 R -.563(wed by an optional)-.25 F F1(postscript)3.063 E F0 5.563(.T).68 G +F(xpres-)-.15 E .563(sion between a pair of braces, follo)108 352.8 R +.563(wed by an optional)-.25 F F2(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 513.6 R .658(xpanding left to)-.15 F(right.) -108 525.6 Q .718(Brace e)108 542.4 R .719(xpansions may be nested.)-.15 +ch resulting string, e)108 364.8 R .658(xpanding left to)-.15 F(right.) +108 376.8 Q .718(Brace e)108 393.6 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 554.4 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.134(As) -108 571.2 S .634(equence e)-3.134 F .634(xpression tak)-.15 F .634 -(es the form)-.1 F F2({)3.134 E F1(x)A F2(..)A F1(y)A F2(})A F0 3.134 -(,w)C(here)-3.134 E F1(x)3.134 E F0(and)3.134 E F1(y)3.133 E F0 .633 +108 405.6 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.134(As) +108 422.4 S .634(equence e)-3.134 F .634(xpression tak)-.15 F .634 +(es the form)-.1 F F1({)3.134 E F2(x)A F1(..)A F2(y)A F1(})A F0 3.134 +(,w)C(here)-3.134 E F2(x)3.134 E F0(and)3.134 E F2(y)3.133 E F0 .633 (are either inte)3.133 F .633(gers or single characters.)-.15 F(When) -5.633 E(inte)108 583.2 Q .401(gers are supplied, the e)-.15 F .401 -(xpression e)-.15 F .401(xpands to each number between)-.15 F F1(x)2.901 -E F0(and)2.902 E F1(y)2.902 E F0 2.902(,i)C(nclusi)-2.902 E -.15(ve)-.25 +5.633 E(inte)108 434.4 Q .401(gers are supplied, the e)-.15 F .401 +(xpression e)-.15 F .401(xpands to each number between)-.15 F F2(x)2.901 +E F0(and)2.902 E F2(y)2.902 E F0 2.902(,i)C(nclusi)-2.902 E -.15(ve)-.25 G 5.402(.W).15 G .402(hen characters)-5.402 F .688(are supplied, the e) -108 595.2 R .688(xpression e)-.15 F .688(xpands to each character le) --.15 F .688(xicographically between)-.15 F F1(x)3.188 E F0(and)3.188 E -F1(y)3.188 E F0 3.187(,i)C(nclusi)-3.187 E -.15(ve)-.25 G 5.687(.N).15 G -(ote)-5.687 E(that both)108 607.2 Q F1(x)2.5 E F0(and)2.5 E F1(y)2.5 E -F0(must be of the same type.)2.5 E .581(Brace e)108 624 R .581 +108 446.4 R .688(xpression e)-.15 F .688(xpands to each character le) +-.15 F .688(xicographically between)-.15 F F2(x)3.188 E F0(and)3.188 E +F2(y)3.188 E F0 3.187(,i)C(nclusi)-3.187 E -.15(ve)-.25 G 5.687(.N).15 G +(ote)-5.687 E(that both)108 458.4 Q F2(x)2.5 E F0(and)2.5 E F2(y)2.5 E +F0(must be of the same type.)2.5 E .581(Brace e)108 475.2 R .581 (xpansion is performed before an)-.15 F 3.081(yo)-.15 G .581(ther e) -3.081 F .581(xpansions, and an)-.15 F 3.082(yc)-.15 G .582 (haracters special to other e)-3.082 F(xpansions)-.15 E .016 -(are preserv)108 636 R .016(ed in the result.)-.15 F .016 -(It is strictly te)5.016 F(xtual.)-.15 E F2(Bash)5.016 E F0 .015 +(are preserv)108 487.2 R .016(ed in the result.)-.15 F .016 +(It is strictly te)5.016 F(xtual.)-.15 E F1(Bash)5.016 E F0 .015 (does not apply an)2.516 F 2.515(ys)-.15 G .015 -(yntactic interpretation to the con-)-2.515 F(te)108 648 Q(xt of the e) --.15 E(xpansion or the te)-.15 E(xt between the braces.)-.15 E 3.632(Ac) -108 664.8 S 1.132(orrectly-formed brace e)-3.632 F 1.132(xpansion must \ -contain unquoted opening and closing braces, and at least one)-.15 F -3.441(unquoted comma or a v)108 676.8 R 3.441(alid sequence e)-.25 F -5.941(xpression. An)-.15 F 5.941(yi)-.15 G 3.441 +(yntactic interpretation to the con-)-2.515 F(te)108 499.2 Q +(xt of the e)-.15 E(xpansion or the te)-.15 E(xt between the braces.) +-.15 E 3.632(Ac)108 516 S 1.132(orrectly-formed brace e)-3.632 F 1.132(\ +xpansion must contain unquoted opening and closing braces, and at least\ + one)-.15 F 3.441(unquoted comma or a v)108 528 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.44(xpansion is left)-.15 F 2.755 -(unchanged. A)108 688.8 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 540 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.911 -(sion. T)108 700.8 R 2.911(oa)-.8 G -.2(vo)-3.111 G .411 +(sion. T)108 552 R 2.911(oa)-.8 G -.2(vo)-3.111 G .411 (id con\215icts with parameter e).2 F .411(xpansion, the string)-.15 F -F2(${)2.911 E F0 .41(is not considered eligible for brace e)2.911 F -(xpan-)-.15 E(sion.)108 712.8 Q 1.476(This construct is typically used \ -as shorthand when the common pre\214x of the strings to be generated is) -108 729.6 R(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 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(longer than in the abo)108 84 Q .3 -.15(ve ex)-.15 H(ample:).15 E -(mkdir /usr/local/src/bash/{old,ne)144 100.8 Q -.65(w,)-.25 G(dist,b).65 -E(ugs})-.2 E(or)108 112.8 Q(cho)144 124.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 141.6 R .618 +F1(${)2.911 E F0 .41(is not considered eligible for brace e)2.911 F +(xpan-)-.15 E(sion.)108 564 Q 1.476(This construct is typically used as\ + shorthand when the common pre\214x of the strings to be generated is) +108 580.8 R(longer than in the abo)108 592.8 Q .3 -.15(ve ex)-.15 H +(ample:).15 E(mkdir /usr/local/src/bash/{old,ne)144 609.6 Q -.65(w,)-.25 +G(dist,b).65 E(ugs})-.2 E(or)108 621.6 Q(cho)144 633.6 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 650.4 R .618 (xpansion introduces a slight incompatibility with historical v)-.15 F -.618(ersions of)-.15 F/F1 10/Times-Bold@0 SF(sh)3.118 E F0(.)A F1(sh) -5.618 E F0 .618(does not treat open-)3.118 F .247 -(ing or closing braces specially when the)108 153.6 R 2.747(ya)-.15 G +.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 .247 +(ing or closing braces specially when the)108 662.4 R 2.747(ya)-.15 G .247(ppear as part of a w)-2.747 F .248(ord, and preserv)-.1 F .248 -(es them in the output.)-.15 F F1(Bash)5.248 E F0(remo)108 165.6 Q -.15 +(es them in the output.)-.15 F F1(Bash)5.248 E F0(remo)108 674.4 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 F1(sh) -3.53 E F0(as)3.53 E/F2 10/Times-Italic@0 SF(\214le{1,2})108 177.6 Q F0 -.514(appears identically in the output.)3.014 F .515(The same w)5.515 F -.515(ord is output as)-.1 F F2 .515(\214le1 \214le2)4.925 F F0 .515 -(after e)3.035 F .515(xpansion by)-.15 F F1(bash)3.015 E F0(.)A .437 -(If strict compatibility with)108 189.6 R F1(sh)2.936 E F0 .436 +3.53 E F0(as)3.53 E F2(\214le{1,2})108 686.4 Q F0 .514 +(appears identically in the output.)3.014 F .515(The same w)5.515 F .515 +(ord is output as)-.1 F F2 .515(\214le1 \214le2)4.925 F F0 .515(after e) +3.035 F .515(xpansion by)-.15 F F1(bash)3.015 E F0(.)A .437 +(If strict compatibility with)108 698.4 R F1(sh)2.936 E F0 .436 (is desired, start)2.936 F F1(bash)2.936 E F0 .436(with the)2.936 F F1 (+B)2.936 E F0 .436(option or disable brace e)2.936 F .436 -(xpansion with the)-.15 F F1(+B)108 201.6 Q F0(option to the)2.5 E F1 -(set)2.5 E F0(command \(see)2.5 E/F3 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 -.18(Ti) -87 218.4 S(lde Expansion).18 E F0 1.086(If a w)108 230.4 R 1.086(ord be) --.1 F 1.086(gins with an unquoted tilde character \(`)-.15 F F1(~)A F0 -1.087('\), all of the characters preceding the \214rst unquoted)B .185(\ -slash \(or all characters, if there is no unquoted slash\) are consider\ -ed a)108 242.4 R F2(tilde-pr)2.685 E(e\214x)-.37 E F0 5.185(.I)C 2.685 -(fn)-5.185 G .185(one of the characters)-2.685 F .725(in the tilde-pre\ -\214x are quoted, the characters in the tilde-pre\214x follo)108 254.4 R -.726(wing the tilde are treated as a possible)-.25 F F2(lo)108 266.4 Q -.523(gin name)-.1 F F0 5.523(.I)C 3.023(ft)-5.523 G .523 +(xpansion with the)-.15 F F1(+B)108 710.4 Q F0(option to the)2.5 E F1 +(set)2.5 E F0(command \(see)2.5 E F4(SHELL B)2.5 E(UIL)-.09 E +(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash-3.2)72 768 Q +(2006 Jan 26)149.845 E(16)199.835 E 0 Cg EP +%%Page: 17 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/F1 10/Times-Bold@0 SF -.18(Ti)87 84 S(lde Expansion).18 E F0 +1.086(If a w)108 96 R 1.086(ord be)-.1 F 1.086 +(gins with an unquoted tilde character \(`)-.15 F F1(~)A F0 1.087 +('\), all of the characters preceding the \214rst unquoted)B .185(slash\ + \(or all characters, if there is no unquoted slash\) are considered a) +108 108 R/F2 10/Times-Italic@0 SF(tilde-pr)2.685 E(e\214x)-.37 E F0 +5.185(.I)C 2.685(fn)-5.185 G .185(one of the characters)-2.685 F .725(i\ +n the tilde-pre\214x are quoted, the characters in the tilde-pre\214x f\ +ollo)108 120 R .726(wing the tilde are treated as a possible)-.25 F F2 +(lo)108 132 Q .523(gin name)-.1 F F0 5.523(.I)C 3.023(ft)-5.523 G .523 (his login name is the null string, the tilde is replaced with the v) --3.023 F .522(alue of the shell parameter)-.25 F F3(HOME)108 278.4 Q/F4 -9/Times-Roman@0 SF(.)A F0(If)4.786 E F3(HOME)2.786 E F0 .287 -(is unset, the home directory of the user e)2.536 F -.15(xe)-.15 G .287 -(cuting the shell is substituted instead.).15 F(Other)5.287 E(-)-.2 E(w\ -ise, the tilde-pre\214x is replaced with the home directory associated \ -with the speci\214ed login name.)108 290.4 Q .093 -(If the tilde-pre\214x is a `~+', the v)108 307.2 R .092 +-3.023 F .522(alue of the shell parameter)-.25 F/F3 9/Times-Bold@0 SF +(HOME)108 144 Q/F4 9/Times-Roman@0 SF(.)A F0(If)4.786 E F3(HOME)2.786 E +F0 .287(is unset, the home directory of the user e)2.536 F -.15(xe)-.15 +G .287(cuting the shell is substituted instead.).15 F(Other)5.287 E(-) +-.2 E(wise, the tilde-pre\214x is replaced with the home directory asso\ +ciated with the speci\214ed login name.)108 156 Q .093 +(If the tilde-pre\214x is a `~+', the v)108 172.8 R .092 (alue of the shell v)-.25 F(ariable)-.25 E F3(PWD)2.592 E F0 .092 (replaces the tilde-pre\214x.)2.342 F .092(If the tilde-pre\214x is) -5.092 F 3.403(a`)108 319.2 S .903(~\255', the v)-3.403 F .903 +5.092 F 3.403(a`)108 184.8 S .903(~\255', the v)-3.403 F .903 (alue of the shell v)-.25 F(ariable)-.25 E F3(OLDPWD)3.404 E F4(,)A F0 .904(if it is set, is substituted.)3.154 F .904(If the characters follo) 5.904 F .904(wing the)-.25 F 1.642 -(tilde in the tilde-pre\214x consist of a number)108 331.2 R F2(N)4.142 +(tilde in the tilde-pre\214x consist of a number)108 196.8 R F2(N)4.142 E F0 4.142(,o)C 1.642(ptionally pre\214x)-4.142 F 1.641 (ed by a `+' or a `\255', the tilde-pre\214x is)-.15 F 1.437(replaced w\ ith the corresponding element from the directory stack, as it w)108 -343.2 R 1.438(ould be displayed by the)-.1 F F1(dirs)3.938 E F0 -.2(bu) -108 355.2 S .455(iltin in).2 F -.2(vo)-.4 G -.1(ke).2 G 2.955(dw).1 G +208.8 R 1.438(ould be displayed by the)-.1 F F1(dirs)3.938 E F0 -.2(bu) +108 220.8 S .455(iltin in).2 F -.2(vo)-.4 G -.1(ke).2 G 2.955(dw).1 G .455(ith the tilde-pre\214x as an ar)-2.955 F 2.954(gument. If)-.18 F .454(the characters follo)2.954 F .454 (wing the tilde in the tilde-pre\214x)-.25 F (consist of a number without a leading `+' or `\255', `+' is assumed.) -108 367.2 Q(If the login name is in)108 384 Q -.25(va)-.4 G +108 232.8 Q(If the login name is in)108 249.6 Q -.25(va)-.4 G (lid, or the tilde e).25 E(xpansion f)-.15 E(ails, the w)-.1 E -(ord is unchanged.)-.1 E .166(Each v)108 400.8 R .167 +(ord is unchanged.)-.1 E .166(Each v)108 266.4 R .167 (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.667 E F0 5.167(.I)C(n)-5.167 E -.282(these cases, tilde e)108 412.8 R .282(xpansion is also performed.) +.282(these cases, tilde e)108 278.4 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 -424.8 Q F3 -.666(PA)2.5 G(TH)-.189 E F4(,)A F3(MAILP)2.25 E -.855(AT) +290.4 Q F3 -.666(PA)2.5 G(TH)-.189 E F4(,)A F3(MAILP)2.25 E -.855(AT) -.666 G(H).855 E F4(,)A F0(and)2.25 E F3(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 -(alue.)-.25 E F1 -.1(Pa)87 441.6 S(rameter Expansion).1 E F0 1.605 -(The `)108 453.6 R F1($)A F0 4.105('c)C 1.605 +(alue.)-.25 E F1 -.1(Pa)87 307.2 S(rameter Expansion).1 E F0 1.605 +(The `)108 319.2 R F1($)A F0 4.105('c)C 1.605 (haracter introduces parameter e)-4.105 F 1.606 (xpansion, command substitution, or arithmetic e)-.15 F 4.106 -(xpansion. The)-.15 F .407(parameter name or symbol to be e)108 465.6 R +(xpansion. The)-.15 F .407(parameter name or symbol to be e)108 331.2 R .407(xpanded may be enclosed in braces, which are optional b)-.15 F .406 (ut serv)-.2 F 2.906(et)-.15 G 2.906(op)-2.906 G(ro-)-2.906 E .032 -(tect the v)108 477.6 R .032(ariable to be e)-.25 F .032 +(tect the v)108 343.2 R .032(ariable to be e)-.25 F .032 (xpanded from characters immediately follo)-.15 F .033 (wing it which could be interpreted as part)-.25 F(of the name.)108 -489.6 Q 1.19 +355.2 Q 1.19 (When braces are used, the matching ending brace is the \214rst `)108 -506.4 R F1(})A F0 3.689('n)C 1.189 -(ot escaped by a backslash or within a)-3.689 F 2.15 -(quoted string, and not within an embedded arithmetic e)108 518.4 R 2.15 -(xpansion, command substitution, or parameter)-.15 F -.15(ex)108 530.4 S -(pansion.).15 E(${)108 547.2 Q F2(par)A(ameter)-.15 E F0(})A 1.205 -(The v)144 559.2 R 1.205(alue of)-.25 F F2(par)3.705 E(ameter)-.15 E F0 -1.204(is substituted.)3.705 F 1.204(The braces are required when)6.204 F -F2(par)4.954 E(ameter)-.15 E F0 1.204(is a positional)4.434 F .264 -(parameter with more than one digit, or when)144 571.2 R F2(par)4.014 E -(ameter)-.15 E F0 .264(is follo)3.494 F .264 +372 R F1(})A F0 3.689('n)C 1.189(ot escaped by a backslash or within a) +-3.689 F 2.15(quoted string, and not within an embedded arithmetic e)108 +384 R 2.15(xpansion, command substitution, or parameter)-.15 F -.15(ex) +108 396 S(pansion.).15 E(${)108 412.8 Q F2(par)A(ameter)-.15 E F0(})A +1.205(The v)144 424.8 R 1.205(alue of)-.25 F F2(par)3.705 E(ameter)-.15 +E F0 1.204(is substituted.)3.705 F 1.204(The braces are required when) +6.204 F F2(par)4.954 E(ameter)-.15 E F0 1.204(is a positional)4.434 F +.264(parameter with more than one digit, or when)144 436.8 R F2(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 583.2 Q 1.509 -(If the \214rst character of)108 600 R F2(par)4.009 E(ameter)-.15 E F0 +(be interpreted as part of its name.)144 448.8 Q 1.509 +(If the \214rst character of)108 465.6 R F2(par)4.009 E(ameter)-.15 E F0 1.509(is an e)4.009 F 1.509(xclamation point, a le)-.15 F -.15(ve)-.25 G 4.009(lo).15 G 4.008(fv)-4.009 G 1.508 -(ariable indirection is introduced.)-4.258 F F1(Bash)108 612 Q F0 .106 +(ariable indirection is introduced.)-4.258 F F1(Bash)108 477.6 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 F2(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 .352(able is then e)108 624 R .352(xpanded and that v)-.15 F .351 +E .352(able is then e)108 489.6 R .352(xpanded and that v)-.15 F .351 (alue is used in the rest of the substitution, rather than the v)-.25 F -.351(alue of)-.25 F F2(par)2.851 E(ame-)-.15 E(ter)108 636 Q F0 2.519 +.351(alue of)-.25 F F2(par)2.851 E(ame-)-.15 E(ter)108 501.6 Q F0 2.519 (itself. This)2.519 F .019(is kno)2.519 F .019(wn as)-.25 F F2(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 F2 -(pr)A(e\214x)-.37 E F0 .02(*} and)B(${)108 648 Q F1(!)A F2(name)A F0([)A -F2(@)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 660 Q -.334(In each of the cases belo)108 676.8 R -.65(w,)-.25 G F2(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 1.418(and arithmetic e)108 688.8 R 3.918(xpansion. When)-.15 F 1.418 -(not performing substring e)3.918 F(xpansion,)-.15 E F1(bash)3.918 E F0 -1.418(tests for a parameter that is)3.918 F(unset or null; omitting the\ - colon results in a test only for a parameter that is unset.)108 700.8 Q -(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 E(17)190.95 E 0 Cg EP -%%Page: 18 18 +(pr)A(e\214x)-.37 E F0 .02(*} and)B(${)108 513.6 Q F1(!)A F2(name)A F0 +([)A F2(@)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 525.6 Q .334(In each of the cases belo)108 +542.4 R -.65(w,)-.25 G F2(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 1.418(and arithmetic e)108 554.4 +R 3.918(xpansion. When)-.15 F 1.418(not performing substring e)3.918 F +(xpansion,)-.15 E F1(bash)3.918 E F0 1.418 +(tests for a parameter that is)3.918 F(unset or null; omitting the colo\ +n results in a test only for a parameter that is unset.)108 566.4 Q(${) +108 583.2 Q F2(par)A(ameter)-.15 E F1<3aad>A F2(wor)A(d)-.37 E F0(})A F1 +.722(Use Default V)144 595.2 R(alues)-.92 E F0 5.722(.I)C(f)-5.722 E F2 +(par)4.472 E(ameter)-.15 E F0 .723(is unset or null, the e)3.952 F .723 +(xpansion of)-.15 F F2(wor)3.563 E(d)-.37 E F0 .723(is substituted.) +3.993 F(Other)5.723 E(-)-.2 E(wise, the v)144 607.2 Q(alue of)-.25 E F2 +(par)3.75 E(ameter)-.15 E F0(is substituted.)3.23 E(${)108 619.2 Q F2 +(par)A(ameter)-.15 E F1(:=)A F2(wor)A(d)-.37 E F0(})A F1 2.005 +(Assign Default V)144 631.2 R(alues)-.92 E F0 7.005(.I)C(f)-7.005 E F2 +(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 F2(wor)4.844 E(d)-.37 E F0 2.004 +(is assigned to)5.274 F F2(par)144 643.2 Q(ameter)-.15 E F0 5.278(.T).73 +G .278(he v)-5.278 F .278(alue of)-.25 F F2(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 655.2 Q(ay)-.1 E(.)-.65 E +(${)108 667.2 Q F2(par)A(ameter)-.15 E F1(:?)A F2(wor)A(d)-.37 E F0(})A +F1 .535(Display Err)144 679.2 R .535(or if Null or Unset)-.18 F F0 5.535 +(.I)C(f)-5.535 E F2(par)4.285 E(ameter)-.15 E F0 .535 +(is null or unset, the e)3.765 F .535(xpansion of)-.15 F F2(wor)3.035 E +(d)-.37 E F0 .535(\(or a mes-)3.035 F .661(sage to that ef)144 691.2 R +.661(fect if)-.25 F F2(wor)3.501 E(d)-.37 E F0 .662(is not present\) is\ + written to the standard error and the shell, if it is not)3.931 F +(interacti)144 703.2 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 F2(par)2.5 E(ameter)-.15 E F0 +(is substituted.)2.5 E(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(17) +199.835 E 0 Cg EP +%%Page: 18 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(${)108 84 Q/F1 10/Times-Italic@0 SF(par)A(ameter)-.15 E/F2 10 -/Times-Bold@0 SF<3aad>A F1(wor)A(d)-.37 E F0(})A F2 .722(Use Default V) -144 96 R(alues)-.92 E F0 5.722(.I)C(f)-5.722 E F1(par)4.472 E(ameter) --.15 E F0 .723(is unset or null, the e)3.952 F .723(xpansion of)-.15 F -F1(wor)3.563 E(d)-.37 E F0 .723(is substituted.)3.993 F(Other)5.723 E(-) --.2 E(wise, the v)144 108 Q(alue of)-.25 E F1(par)3.75 E(ameter)-.15 E -F0(is substituted.)3.23 E(${)108 120 Q F1(par)A(ameter)-.15 E F2(:=)A F1 -(wor)A(d)-.37 E F0(})A F2 2.005(Assign Default V)144 132 R(alues)-.92 E -F0 7.005(.I)C(f)-7.005 E F1(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 F1(wor)4.844 E -(d)-.37 E F0 2.004(is assigned to)5.274 F F1(par)144 144 Q(ameter)-.15 E -F0 5.278(.T).73 G .278(he v)-5.278 F .278(alue of)-.25 F F1(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 156 Q(ay)-.1 E(.)-.65 E(${) -108 168 Q F1(par)A(ameter)-.15 E F2(:?)A F1(wor)A(d)-.37 E F0(})A F2 -.535(Display Err)144 180 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 .661(sage to that ef)144 192 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 shell, if it is not)3.931 F -(interacti)144 204 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 216 Q F1(par)A(ameter)-.15 E F2(:+)A F1 -(wor)A(d)-.37 E F0(})A F2 .745(Use Alter)144 228 R .745(nate V)-.15 F -(alue)-.92 E F0 5.745(.I)C(f)-5.745 E F1(par)4.495 E(ameter)-.15 E F0 -.745(is null or unset, nothing is substituted, otherwise the e)3.975 F -(xpan-)-.15 E(sion of)144 240 Q F1(wor)2.84 E(d)-.37 E F0 -(is substituted.)3.27 E(${)108 252 Q F1(par)A(ameter)-.15 E F2(:)A F1 -(of)A(fset)-.18 E F0(})A(${)108 264 Q F1(par)A(ameter)-.15 E F2(:)A F1 +/Times-Bold@0 SF(:+)A F1(wor)A(d)-.37 E F0(})A F2 .745(Use Alter)144 96 +R .745(nate V)-.15 F(alue)-.92 E F0 5.745(.I)C(f)-5.745 E F1(par)4.495 E +(ameter)-.15 E F0 .745 +(is null or unset, nothing is substituted, otherwise the e)3.975 F +(xpan-)-.15 E(sion of)144 108 Q F1(wor)2.84 E(d)-.37 E F0 +(is substituted.)3.27 E(${)108 120 Q F1(par)A(ameter)-.15 E F2(:)A F1 +(of)A(fset)-.18 E F0(})A(${)108 132 Q F1(par)A(ameter)-.15 E F2(:)A F1 (of)A(fset)-.18 E F2(:)A F1(length)A F0(})A F2 .796 -(Substring Expansion.)144 276 R F0 .796(Expands to up to)5.796 F F1 +(Substring Expansion.)144 144 R F0 .796(Expands to up to)5.796 F F1 (length)3.296 E F0 .796(characters of)3.296 F F1(par)3.296 E(ameter)-.15 -E F0 .797(starting at the character)3.296 F .229(speci\214ed by)144 288 +E F0 .797(starting at the character)3.296 F .229(speci\214ed by)144 156 R F1(of)2.729 E(fset)-.18 E F0 5.229(.I)C(f)-5.229 E F1(length)2.729 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 .228(starting at the char)2.728 F(-)-.2 E -.432(acter speci\214ed by)144 300 R F1(of)2.933 E(fset)-.18 E F0(.)A F1 +.432(acter speci\214ed by)144 168 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 .433(ARITHMETIC EV)2.933 F(ALU-)-1.215 E -.855(AT)144 312 S(ION).855 +SF .433(ARITHMETIC EV)2.933 F(ALU-)-1.215 E -.855(AT)144 180 S(ION).855 E F0(belo)2.577 E(w\).)-.25 E F1(length)5.327 E F0 .327(must e)2.827 F -.25(va)-.25 G .326(luate to a number greater than or equal to zero.).25 F(If)5.326 E F1(of)2.826 E(fset)-.18 E F0 -.25(eva)2.826 G(luates).25 E -.015(to a number less than zero, the v)144 324 R .015 +.015(to a number less than zero, the v)144 192 R .015 (alue is used as an of)-.25 F .015(fset from the end of the v)-.25 F .016(alue of)-.25 F F1(par)2.516 E(ameter)-.15 E F0 5.016(.I)C(f)-5.016 -E F1(par)144 336 Q(ameter)-.15 E F0(is)3.25 E F2(@)3.25 E F0 3.25(,t)C +E F1(par)144 204 Q(ameter)-.15 E F0(is)3.25 E F2(@)3.25 E F0 3.25(,t)C .75(he result is)-3.25 F F1(length)3.25 E F0 .75 (positional parameters be)3.25 F .75(ginning at)-.15 F F1(of)3.25 E (fset)-.18 E F0 5.75(.I)C(f)-5.75 E F1(par)3.25 E(ameter)-.15 E F0 .75 -(is an)3.25 F 1.834(array name inde)144 348 R -.15(xe)-.15 G 4.334(db) +(is an)3.25 F 1.834(array name inde)144 216 R -.15(xe)-.15 G 4.334(db) .15 G 4.334(y@o)-4.334 G 4.335(r*)-4.334 G 4.335(,t)-4.335 G 1.835 (he result is the)-4.335 F F1(length)4.335 E F0 1.835 -(members of the array be)4.335 F 1.835(ginning with)-.15 F(${)144 360 Q +(members of the array be)4.335 F 1.835(ginning with)-.15 F(${)144 228 Q F1(par)A(ameter)-.15 E F0([)A F1(of)A(fset)-.18 E F0 2.611(]}. A)B(ne) 2.611 E -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G F1(of)2.761 E(fset)-.18 E F0 .111(is tak)2.611 F .111(en relati)-.1 F .411 -.15(ve t)-.25 H 2.611 (oo).15 G .11(ne greater than the maximum inde)-2.611 F 2.61(xo)-.15 G -(f)-2.61 E .92(the speci\214ed array)144 372 R 5.92(.N)-.65 G .92 +(f)-2.61 E .92(the speci\214ed array)144 240 R 5.92(.N)-.65 G .92 (ote that a ne)-5.92 F -.05(ga)-.15 G(ti).05 E 1.22 -.15(ve o)-.25 H -.25(ff).15 G .92(set must be separated from the colon by at least one) -.25 F .641(space to a)144 384 R -.2(vo)-.2 G .641 +.25 F .641(space to a)144 252 R -.2(vo)-.2 G .641 (id being confused with the :- e).2 F 3.141(xpansion. Substring)-.15 F -(inde)3.141 E .64(xing is zero-based unless the)-.15 F .299 -(positional parameters are used, in which case the inde)144 396 R .299 -(xing starts at 1 by def)-.15 F 2.799(ault. If)-.1 F F1(of)2.799 E(fset) --.18 E F0 .299(is 0, and)2.799 F(the positional parameters are used,)144 -408 Q F2($0)2.5 E F0(is pre\214x)2.5 E(ed to the list.)-.15 E(${)108 -424.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2(*)A F0(})A(${)108 436.8 Q F2(!)A -F1(pr)A(e\214x)-.37 E F2(@)A F0(})A .42(Expands to the names of v)144 -448.8 R .42(ariables whose names be)-.25 F .42(gin with)-.15 F F1(pr) -2.92 E(e\214x)-.37 E F0 2.92(,s)C .42(eparated by the \214rst character) --2.92 F .098(of the)144 460.8 R F3(IFS)2.598 E F0 .098(special v)2.348 F -2.598(ariable. When)-.25 F F1(@)2.598 E F0 .099(is used and the e)2.598 -F .099(xpansion appears within double quotes, each)-.15 F -.25(va)144 -472.8 S(riable name e).25 E(xpands to a separate w)-.15 E(ord.)-.1 E(${) -108 489.6 Q F2(!)A F1(name)A F0([)A F1(@)A F0(]})A(${)108 501.6 Q F2(!)A -F1(name)A F0([)A F1(*)A F0(]})A(If)144 513.6 Q F1(name)2.922 E F0 .421 -(is an array v)2.922 F .421(ariable, e)-.25 F .421 -(xpands to the list of array indices \(k)-.15 F -.15(ey)-.1 G .421 -(s\) assigned in).15 F F1(name)2.921 E F0 5.421(.I)C(f)-5.421 E F1(name) -2.921 E F0 .237(is not an array)144 525.6 R 2.737(,e)-.65 G .237 -(xpands to 0 if)-2.887 F F1(name)2.737 E F0 .238 +(inde)3.141 E .64(xing is zero-based unless the)-.15 F +(positional parameters are used, in which case the inde)144 264 Q +(xing starts at 1.)-.15 E(${)108 280.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2 +(*)A F0(})A(${)108 292.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2(@)A F0(})A +.42(Expands to the names of v)144 304.8 R .42(ariables whose names be) +-.25 F .42(gin with)-.15 F F1(pr)2.92 E(e\214x)-.37 E F0 2.92(,s)C .42 +(eparated by the \214rst character)-2.92 F(of the)144 316.8 Q F3(IFS)2.5 +E F0(special v)2.25 E(ariable.)-.25 E(${)108 333.6 Q F2(!)A F1(name)A F0 +([)A F1(@)A F0(]})A(${)108 345.6 Q F2(!)A F1(name)A F0([)A F1(*)A F0(]}) +A(If)144 357.6 Q F1(name)2.922 E F0 .421(is an array v)2.922 F .421 +(ariable, e)-.25 F .421(xpands to the list of array indices \(k)-.15 F +-.15(ey)-.1 G .421(s\) assigned in).15 F F1(name)2.921 E F0 5.421(.I)C +(f)-5.421 E F1(name)2.921 E F0 .237(is not an array)144 369.6 R 2.737 +(,e)-.65 G .237(xpands to 0 if)-2.887 F F1(name)2.737 E F0 .238 (is set and null otherwise.)2.737 F(When)5.238 E F1(@)2.738 E F0 .238 (is used and the e)2.738 F(xpansion)-.15 E -(appears within double quotes, each k)144 537.6 Q .3 -.15(ey ex)-.1 H -(pands to a separate w).15 E(ord.)-.1 E(${)108 554.4 Q F2(#)A F1(par)A -(ameter)-.15 E F0(})A 1.392(The length in characters of the v)144 566.4 +(appears within double quotes, each k)144 381.6 Q .3 -.15(ey ex)-.1 H +(pands to a separate w).15 E(ord.)-.1 E(${)108 398.4 Q F2(#)A F1(par)A +(ameter)-.15 E F0(})A 1.392(The length in characters of the v)144 410.4 R 1.392(alue of)-.25 F F1(par)3.892 E(ameter)-.15 E F0 1.392 (is substituted.)3.892 F(If)6.392 E F1(par)5.142 E(ameter)-.15 E F0(is) 4.622 E F2(*)3.891 E F0(or)3.891 E F2(@)3.891 E F0 3.891(,t)C(he)-3.891 -E -.25(va)144 578.4 S 1.748 +E -.25(va)144 422.4 S 1.748 (lue substituted is the number of positional parameters.).25 F(If)6.749 E F1(par)5.499 E(ameter)-.15 E F0 1.749(is an array name sub-)4.979 F -(scripted by)144 590.4 Q F2(*)2.5 E F0(or)2.5 E F2(@)2.5 E F0 2.5(,t)C +(scripted by)144 434.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 607.2 Q F1(par)A(ameter)-.15 E F2(#)A F1(wor)A(d) --.37 E F0(})A(${)108 619.2 Q F1(par)A(ameter)-.15 E F2(##)A F1(wor)A(d) --.37 E F0(})A(The)144 631.2 Q F1(wor)3.331 E(d)-.37 E F0 .491(is e)3.761 +-.25 E(.)-.65 E(${)108 451.2 Q F1(par)A(ameter)-.15 E F2(#)A F1(wor)A(d) +-.37 E F0(})A(${)108 463.2 Q F1(par)A(ameter)-.15 E F2(##)A F1(wor)A(d) +-.37 E F0(})A(The)144 475.2 Q F1(wor)3.331 E(d)-.37 E F0 .491(is e)3.761 F .491(xpanded to produce a pattern just as in pathname e)-.15 F 2.99 (xpansion. If)-.15 F .49(the pattern matches)2.99 F .411(the be)144 -643.2 R .411(ginning of the v)-.15 F .411(alue of)-.25 F F1(par)2.911 E +487.2 R .411(ginning of the v)-.15 F .411(alue of)-.25 F F1(par)2.911 E (ameter)-.15 E F0 2.911(,t).73 G .411(hen the result of the e)-2.911 F .411(xpansion is the e)-.15 F .412(xpanded v)-.15 F .412(alue of)-.25 F -F1(par)145.25 655.2 Q(ameter)-.15 E F0 .607 +F1(par)145.25 499.2 Q(ameter)-.15 E F0 .607 (with the shortest matching pattern \(the `)3.838 F(`)-.74 E F2(#)A F0 2.087 -.74('' c)D .607(ase\) or the longest matching pattern \(the).74 F --.74(``)144 667.2 S F2(##).74 E F0 1.653 -.74('' c)D .173 +-.74(``)144 511.2 S F2(##).74 E F0 1.653 -.74('' c)D .173 (ase\) deleted.).74 F(If)5.173 E F1(par)3.923 E(ameter)-.15 E F0(is) 3.403 E F2(@)2.673 E F0(or)2.673 E F2(*)2.673 E F0 2.674(,t)C .174 (he pattern remo)-2.674 F -.25(va)-.15 G 2.674(lo).25 G .174 (peration is applied to each posi-)-2.674 F .655 -(tional parameter in turn, and the e)144 679.2 R .654 +(tional parameter in turn, and the e)144 523.2 R .654 (xpansion is the resultant list.)-.15 F(If)5.654 E F1(par)4.404 E (ameter)-.15 E F0 .654(is an array v)3.884 F(ariable)-.25 E .65 -(subscripted with)144 691.2 R F2(@)3.15 E F0(or)3.15 E F2(*)3.15 E F0 +(subscripted with)144 535.2 R F2(@)3.15 E F0(or)3.15 E F2(*)3.15 E F0 3.15(,t)C .65(he pattern remo)-3.15 F -.25(va)-.15 G 3.151(lo).25 G .651 (peration is applied to each member of the array in)-3.151 F -(turn, and the e)144 703.2 Q(xpansion is the resultant list.)-.15 E -(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 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(${)108 84 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 96 Q F1(par)A -(ameter)-.15 E F2(%%)A F1(wor)A(d)-.37 E F0(})A(The)144 108 Q F1(wor) -2.619 E(d)-.37 E F0 .119(is e)2.619 F .119 +(turn, and the e)144 547.2 Q(xpansion is the resultant list.)-.15 E(${) +108 564 Q F1(par)A(ameter)-.15 E F2(%)A F1(wor)A(d)-.37 E F0(})A(${)108 +576 Q F1(par)A(ameter)-.15 E F2(%%)A F1(wor)A(d)-.37 E F0(})A(The)144 +588 Q F1(wor)2.619 E(d)-.37 E F0 .119(is e)2.619 F .119 (xpanded to produce a pattern just as in pathname e)-.15 F 2.619 (xpansion. If)-.15 F .118(the pattern matches a)2.619 F 2.401 -(trailing portion of the e)144 120 R 2.401(xpanded v)-.15 F 2.401 +(trailing portion of the e)144 600 R 2.401(xpanded v)-.15 F 2.401 (alue of)-.25 F F1(par)4.901 E(ameter)-.15 E F0 4.901(,t).73 G 2.402 (hen the result of the e)-4.901 F 2.402(xpansion is the)-.15 F -.15(ex) -144 132 S 1.153(panded v).15 F 1.153(alue of)-.25 F F1(par)4.902 E +144 612 S 1.153(panded v).15 F 1.153(alue of)-.25 F F1(par)4.902 E (ameter)-.15 E F0 1.152(with the shortest matching pattern \(the `)4.382 F(`)-.74 E F2(%)A F0 2.632 -.74('' c)D 1.152(ase\) or the longest).74 F -.79(matching pattern \(the `)144 144 R(`)-.74 E F2(%%)A F0 2.27 -.74 +.79(matching pattern \(the `)144 624 R(`)-.74 E F2(%%)A F0 2.27 -.74 ('' c)D .79(ase\) deleted.).74 F(If)5.79 E F1(par)4.54 E(ameter)-.15 E F0(is)4.02 E F2(@)3.29 E F0(or)3.29 E F2(*)3.29 E F0 3.29(,t)C .79 (he pattern remo)-3.29 F -.25(va)-.15 G 3.29(lo).25 G(pera-)-3.29 E 1.758(tion is applied to each positional parameter in turn, and the e) -144 156 R 1.758(xpansion is the resultant list.)-.15 F(If)6.758 E F1 -(par)145.25 168 Q(ameter)-.15 E F0 .088(is an array v)3.318 F .089 +144 636 R 1.758(xpansion is the resultant list.)-.15 F(If)6.758 E F1 +(par)145.25 648 Q(ameter)-.15 E F0 .088(is an array v)3.318 F .089 (ariable subscripted with)-.25 F F2(@)2.589 E F0(or)2.589 E F2(*)2.589 E F0 2.589(,t)C .089(he pattern remo)-2.589 F -.25(va)-.15 G 2.589(lo).25 G .089(peration is applied to)-2.589 F -(each member of the array in turn, and the e)144 180 Q -(xpansion is the resultant list.)-.15 E(${)108 196.8 Q F1(par)A(ameter) --.15 E F2(/)A F1(pattern)A F2(/)A F1(string)A F0(})A(The)144 208.8 Q F1 +(each member of the array in turn, and the e)144 660 Q +(xpansion is the resultant list.)-.15 E(${)108 676.8 Q F1(par)A(ameter) +-.15 E F2(/)A F1(pattern)A F2(/)A F1(string)A F0(})A(The)144 688.8 Q F1 (pattern)5.085 E F0 2.585(is e)5.085 F 2.585 (xpanded to produce a pattern just as in pathname e)-.15 F(xpansion.) -.15 E F1 -.8(Pa)7.585 G -.15(ra).8 G(meter).15 E F0(is)5.085 E -.15(ex) -144 220.8 S 1.304(panded and the longest match of).15 F F1(pattern)3.804 +144 700.8 S 1.304(panded and the longest match of).15 F F1(pattern)3.804 E F0(ag)3.804 E 1.304(ainst its v)-.05 F 1.304(alue is replaced with) -.25 F F1(string)3.804 E F0 6.304(.I)C 3.804(fI)-6.304 G(pattern)-3.804 -E F1(be)144 232.8 Q 1.331(gins with)-.4 F F2(/)3.831 E F1 3.831(,a)C +E F1(be)144 712.8 Q 1.331(gins with)-.4 F F2(/)3.831 E F1 3.831(,a)C 1.331(ll matc)-3.831 F 1.331(hes of pattern ar)-.15 F 3.831(er)-.37 G 1.331(eplaced with string)-4.201 F 6.33(.N)-.15 G 1.33 (ormally only the \214r)-6.33 F 1.33(st matc)-.1 F 3.83(hi)-.15 G(s) --3.83 E -.37(re)144 244.8 S 2.691(placed. If).37 F .191(pattern be)2.691 -F .191(gins with)-.4 F F2(#)2.691 E F1 2.691(,i)C 2.691(tm)-2.691 G .191 -(ust matc)-2.691 F 2.691(ha)-.15 G 2.691(tt)-2.691 G .191(he be)-2.691 F -.191(ginning of the e)-.4 F .192(xpanded value of par)-.2 F(am-)-.15 E -(eter)144 256.8 Q 6.049(.I)-1.11 G 3.549(fp)-6.049 G 1.049(attern be) --3.549 F 1.049(gins with)-.4 F F2(%)3.549 E F1 3.549(,i)C 3.548(tm) --3.549 G 1.048(ust matc)-3.548 F 3.548(ha)-.15 G 3.548(tt)-3.548 G 1.048 -(he end of the e)-3.548 F 1.048(xpanded value of par)-.2 F(ameter)-.15 E -6.048(.I)-1.11 G(f)-6.048 E 2.056(string is null, matc)144 268.8 R 2.057 -(hes of pattern ar)-.15 F 4.557(ed)-.37 G 2.057(eleted and the)-4.557 F -F2(/)4.557 E F1 2.057(following pattern may be omitted.)4.557 F(If)7.057 -E(par)145.25 280.8 Q(ameter)-.15 E F0(is)3.329 E F2(@)2.599 E F0(or) -2.598 E F2(*)2.598 E F0 2.598(,t)C .098(he substitution operation is ap\ -plied to each positional parameter in turn, and)-2.598 F .64(the e)144 -292.8 R .64(xpansion is the resultant list.)-.15 F(If)5.64 E F1(par)4.39 -E(ameter)-.15 E F0 .64(is an array v)3.87 F .64 -(ariable subscripted with)-.25 F F2(@)3.14 E F0(or)3.14 E F2(*)3.14 E F0 -3.14(,t)C(he)-3.14 E 1.446(substitution operation is applied to each me\ -mber of the array in turn, and the e)144 304.8 R 1.446(xpansion is the) --.15 F(resultant list.)144 316.8 Q F2(Command Substitution)87 333.6 Q F1 -1.697(Command substitution)108 345.6 R F0(allo)4.197 E 1.697 +-3.83 E -.37(re)144 724.8 S 4.69(placed. If).37 F 2.19(pattern be)4.69 F +2.19(gins with)-.4 F F2(#)4.69 E F1 4.69(,i)C 4.69(tm)-4.69 G 2.19 +(ust matc)-4.69 F 4.69(ha)-.15 G 4.69(tt)-4.69 G 2.19(he be)-4.69 F 2.19 +(ginning of the e)-.4 F 2.19(xpanded value of)-.2 F F0(GNU Bash-3.2)72 +768 Q(2006 Jan 26)149.845 E(18)199.835 E 0 Cg EP +%%Page: 19 20 +%%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(par)144 84 Q(ameter)-.15 E 5.237(.I)-1.11 +G 2.737(fp)-5.237 G .237(attern be)-2.737 F .237(gins with)-.4 F/F2 10 +/Times-Bold@0 SF(%)2.737 E F1 2.737(,i)C 2.737(tm)-2.737 G .237 +(ust matc)-2.737 F 2.736(ha)-.15 G 2.736(tt)-2.736 G .236 +(he end of the e)-2.736 F .236(xpanded value of par)-.2 F(ameter)-.15 E +(.)-1.11 E 1.429(If string is null, matc)144 96 R 1.429 +(hes of pattern ar)-.15 F 3.929(ed)-.37 G 1.429(eleted and the)-3.929 F +F2(/)3.93 E F1 1.43(following pattern may be omitted.)3.93 F(If)6.43 E +(par)145.25 108 Q(ameter)-.15 E F0(is)3.329 E F2(@)2.599 E F0(or)2.598 E +F2(*)2.598 E F0 2.598(,t)C .098(he substitution operation is applied to\ + each positional parameter in turn, and)-2.598 F .64(the e)144 120 R .64 +(xpansion is the resultant list.)-.15 F(If)5.64 E F1(par)4.39 E(ameter) +-.15 E F0 .64(is an array v)3.87 F .64(ariable subscripted with)-.25 F +F2(@)3.14 E F0(or)3.14 E F2(*)3.14 E F0 3.14(,t)C(he)-3.14 E 1.446(subs\ +titution operation is applied to each member of the array in turn, and \ +the e)144 132 R 1.446(xpansion is the)-.15 F(resultant list.)144 144 Q +F2(Command Substitution)87 160.8 Q F1 1.697(Command substitution)108 +172.8 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 357.6 Q F2($\()144 379.2 Q F1 -(command)A F2(\))1.666 E F0(or)108 391.2 Q F2(`)144 403.2 Q F1(command)A -F2(`)A(Bash)108 420 Q F0 .02(performs the e)2.52 F .02(xpansion by e) +(There are tw)6.698 F(o)-.1 E(forms:)108 184.8 Q F2($\()144 206.4 Q F1 +(command)A F2(\))1.666 E F0(or)108 218.4 Q F2(`)144 230.4 Q F1(command)A +F2(`)A(Bash)108 247.2 Q F0 .02(performs the e)2.52 F .02(xpansion by e) -.15 F -.15(xe)-.15 G(cuting).15 E F1(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 432 R 3.268(yt)-.15 G .768 +(dard output of the command, with an)108 259.2 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 444 Q 3.219(ym) --.15 G .719(ay be remo)-3.219 F -.15(ve)-.15 G 3.219(dd).15 G .719 +F .768(wlines are not deleted, b)-.25 F(ut)-.2 E(the)108 271.2 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 F2($\(cat)3.219 E F1(\214le)3.219 E F2 -(\))A F0 .718(can be replaced by the)3.219 F(equi)108 456 Q -.25(va)-.25 -G(lent b).25 E(ut f)-.2 E(aster)-.1 E F2($\(<)2.5 E F1(\214le)2.5 E F2 -(\))A F0(.)A 1.724(When the old-style backquote form of substitution is\ - used, backslash retains its literal meaning e)108 472.8 R(xcept)-.15 E -.315(when follo)108 484.8 R .315(wed by)-.25 F F2($)2.815 E F0(,)A F2(`) +(\))A F0 .718(can be replaced by the)3.219 F(equi)108 283.2 Q -.25(va) +-.25 G(lent b).25 E(ut f)-.2 E(aster)-.1 E F2($\(<)2.5 E F1(\214le)2.5 E +F2(\))A F0(.)A 1.724(When the old-style backquote form of substitution \ +is used, backslash retains its literal meaning e)108 300 R(xcept)-.15 E +.315(when follo)108 312 R .315(wed by)-.25 F F2($)2.815 E F0(,)A F2(`) 2.815 E F0 2.815(,o)C(r)-2.815 E F2(\\)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 496.8 R 1.386(using the $\()3.886 -F F1(command).833 E F0 3.886(\)f)1.666 G 1.387 +b-)-5.315 F 3.886(stitution. When)108 324 R 1.386(using the $\()3.886 F +F1(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 508.8 Q(.)-.65 E .894 -(Command substitutions may be nested.)108 525.6 R 2.494 -.8(To n)5.894 H +(mand; none are treated specially)108 336 Q(.)-.65 E .894 +(Command substitutions may be nested.)108 352.8 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 537.6 Q .422 -(If the substitution appears within double quotes, w)108 554.4 R .422 +(quotes with backslashes.)108 364.8 Q .422 +(If the substitution appears within double quotes, w)108 381.6 R .422 (ord splitting and pathname e)-.1 F .423(xpansion are not performed)-.15 -F(on the results.)108 566.4 Q F2(Arithmetic Expansion)87 583.2 Q F0 -1.035(Arithmetic e)108 595.2 R 1.035(xpansion allo)-.15 F 1.035 +F(on the results.)108 393.6 Q F2(Arithmetic Expansion)87 410.4 Q F0 +1.035(Arithmetic e)108 422.4 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 607.2 Q(xpansion is:)-.15 E F2($\(\() -144 624 Q F1 -.2(ex)C(pr).2 E(ession)-.37 E F2(\)\))A F0(The)108 640.8 Q +(The format for arithmetic e)108 434.4 Q(xpansion is:)-.15 E F2($\(\() +144 451.2 Q F1 -.2(ex)C(pr).2 E(ession)-.37 E F2(\)\))A F0(The)108 468 Q F1 -.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 652.8 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 664.8 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 681.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/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.879 E F1 -.2(ex)108 693.6 S(pr).2 E(ession)-.37 E F0(is in) -2.74 E -.25(va)-.4 G(lid,).25 E F2(bash)2.5 E F0 -(prints a message indicating f)2.5 E(ailure and no substitution occurs.) --.1 E(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 E(19)190.95 E 0 Cg EP -%%Page: 20 20 -%%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)87 84 Q(ocess Substitution)-.18 E/F2 10 -/Times-Italic@0 SF(Pr)108 96 Q .971(ocess substitution)-.45 F F0 .971 -(is supported on systems that support named pipes \()3.471 F F2(FIFOs)A -F0 3.47(\)o)C 3.47(rt)-3.47 G(he)-3.47 E F1(/de)3.47 E(v/fd)-.15 E F0 -.97(method of)3.47 F .021(naming open \214les.)108 108 R .021(It tak) -5.021 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 .059(nected to a)108 120 R -F2(FIFO)2.559 E F0 .058(or some \214le in)2.559 F F1(/de)2.558 E(v/fd) +(treated specially)108 480 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 492 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 508.8 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/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.879 E F1 -.2(ex)108 520.8 S(pr).2 E(ession)-.37 E F0(is in)2.74 E +-.25(va)-.4 G(lid,).25 E F2(bash)2.5 E F0(prints a message indicating f) +2.5 E(ailure and no substitution occurs.)-.1 E F2(Pr)87 537.6 Q +(ocess Substitution)-.18 E F1(Pr)108 549.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 F2(/de)3.47 E +(v/fd)-.15 E F0 .97(method of)3.47 F .021(naming open \214les.)108 561.6 +R .021(It tak)5.021 F .021(es the form of)-.1 F F2(<\()2.521 E F1(list)A +F2(\)).833 E F0(or)2.521 E F2(>\()2.521 E F1(list)A F2(\)).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 573.6 +R F1(FIFO)2.559 E F0 .058(or some \214le in)2.559 F F2(/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 132 R 2.63(xpansion. If)-.15 F(the)2.63 -E F1(>\()2.63 E F2(list)A F1(\)).833 E F0 .13 +(mand as the result of the e)108 585.6 R 2.63(xpansion. If)-.15 F(the) +2.63 E F2(>\()2.63 E F1(list)A F2(\)).833 E F0 .13 (form is used, writing to the \214le will pro)2.63 F .131 -(vide input for)-.15 F F2(list)2.631 E F0(.)A(If the)108 144 Q F1(<\() -2.5 E F2(list)A F1(\)).833 E F0 +(vide input for)-.15 F F1(list)2.631 E F0(.)A(If the)108 597.6 Q F2(<\() +2.5 E F1(list)A F2(\)).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 .897(When a)108 160.8 R -.25(va)-.2 G .896(ilable, process substit\ +(gument should be read to obtain the output of)-.18 E F1(list)2.5 E F0 +(.)A .897(When a)108 614.4 R -.25(va)-.2 G .896(ilable, process substit\ ution is performed simultaneously with parameter and v).25 F .896 (ariable e)-.25 F(xpansion,)-.15 E -(command substitution, and arithmetic e)108 172.8 Q(xpansion.)-.15 E F1 --.75(Wo)87 189.6 S(rd Splitting).75 E F0 1.142 -(The shell scans the results of parameter e)108 201.6 R 1.143 +(command substitution, and arithmetic e)108 626.4 Q(xpansion.)-.15 E F2 +-.75(Wo)87 643.2 S(rd Splitting).75 E F0 1.142 +(The shell scans the results of parameter e)108 655.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 213.6 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 230.4 R/F3 9/Times-Bold@0 SF -(IFS)2.563 E F0 .063(as a delimiter)2.313 F 2.563(,a)-.4 G .063 +(xpansion that)-.15 F(did not occur within double quotes for)108 667.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 684 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 242.4 R(If)6.788 E F3 -(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 F1()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 254.4 R F1 -()2.522 E F0(,)A F1()2.522 E F0 2.521(,a)C(nd)-2.521 E F1 -()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 266.4 R 3.086(ys)-.15 G -.586(equence of)-3.086 F F3(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 278.4 Q F3(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 F1(space)3.617 -E F0(and)3.617 E F1(tab)3.617 E F0(are)3.617 E .315(ignored at the be) -108 290.4 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 F3(IFS)2.815 E F0(\(an)2.566 E F3(IFS)108 302.4 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 F3(IFS)3.554 E F0 1.053(that is not)3.303 F F3 -(IFS)3.553 E F0 1.053(whitespace, along with an)3.303 F 3.553(ya)-.15 G -(djacent)-3.553 E F3(IFS)3.553 E F0 .331 -(whitespace characters, delimits a \214eld.)108 314.4 R 2.831(As)5.331 G -.332(equence of)-2.831 F F3(IFS)2.832 E F0 .332 -(whitespace characters is also treated as a delim-)2.582 F(iter)108 -326.4 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.879 -(Explicit null ar)108 343.2 R 1.879(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.878 -(guments, resulting from the)-.18 F -.15(ex)108 355.2 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 367.2 Q -(gument results and is retained.)-.18 E(Note that if no e)108 384 Q -(xpansion occurs, no splitting is performed.)-.15 E F1 -.1(Pa)87 400.8 S -(thname Expansion).1 E F0 .371(After w)108 412.8 R .371 -(ord splitting, unless the)-.1 F F12.871 E F0 .371 -(option has been set,)2.871 F F1(bash)2.871 E F0 .37(scans each w)2.87 F -.37(ord for the characters)-.1 F F1(*)2.87 E F0(,)A F1(?)2.87 E F0 2.87 -(,a)C(nd)-2.87 E F1([)2.87 E F0(.)A .677 -(If one of these characters appears, then the w)108 424.8 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 .678(nd replaced with an alphabeti-)-3.177 F 1.457 -(cally sorted list of \214le names matching the pattern.)108 436.8 R -1.456(If no matching \214le names are found, and the shell)6.457 F -(option)108 448.8 Q F1(nullglob)3.265 E F0 .765(is disabled, the w)3.265 -F .765(ord is left unchanged.)-.1 F .765(If the)5.765 F F1(nullglob) -3.265 E F0 .765(option is set, and no matches are)3.265 F .306 -(found, the w)108 460.8 R .306(ord is remo)-.1 F -.15(ve)-.15 G 2.806 -(d. If).15 F(the)2.805 E F1(failglob)2.805 E F0 .305 +-.15 F(ords)-.1 E .627(on these characters.)108 696 R(If)5.627 E F3(IFS) +3.127 E F0 .627(is unset, or its v)2.877 F .627(alue is e)-.25 F(xactly) +-.15 E F2()3.127 E F0 3.128(,t)C .628(he def)-3.128 +F .628(ault, then an)-.1 F(y)-.15 E 2.528(sequence of)108 708 R F3(IFS) +5.028 E F0 2.527(characters serv)4.778 F 2.527(es to delimit w)-.15 F +5.027(ords. If)-.1 F F3(IFS)5.027 E F0 2.527(has a v)4.777 F 2.527 +(alue other than the def)-.25 F 2.527(ault, then)-.1 F .362 +(sequences of the whitespace characters)108 720 R F2(space)2.863 E F0 +(and)2.863 E F2(tab)2.863 E F0 .363(are ignored at the be)2.863 F .363 +(ginning and end of the w)-.15 F .363(ord, as)-.1 F(GNU Bash-3.2)72 768 +Q(2006 Jan 26)149.845 E(19)199.835 E 0 Cg EP +%%Page: 20 21 +%%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 .335(long as the whitespace character is in the v)108 84 R .334 +(alue of)-.25 F/F1 9/Times-Bold@0 SF(IFS)2.834 E F0(\(an)2.584 E F1(IFS) +2.834 E F0 .334(whitespace character\).)2.584 F(An)5.334 E 2.834(yc)-.15 +G .334(haracter in)-2.834 F F1(IFS)2.834 E F0 .295(that is not)108 96 R +F1(IFS)2.795 E F0 .295(whitespace, along with an)2.545 F 2.795(ya)-.15 G +(djacent)-2.795 E F1(IFS)2.795 E F0 .295 +(whitespace characters, delimits a \214eld.)2.545 F 2.796(As)5.296 G +(equence)-2.796 E(of)108 108 Q F1(IFS)3.753 E F0 1.252 +(whitespace characters is also treated as a delimiter)3.503 F 6.252(.I) +-.55 G 3.752(ft)-6.252 G 1.252(he v)-3.752 F 1.252(alue of)-.25 F F1 +(IFS)3.752 E F0 1.252(is null, no w)3.502 F 1.252(ord splitting)-.1 F +(occurs.)108 120 Q 1.878(Explicit null ar)108 136.8 R 1.878(guments \() +-.18 F/F2 10/Times-Bold@0 SF .833("").833 G F0(or)3.545 E F2 .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 148.8 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 160.8 Q(gument results and is retained.) +-.18 E(Note that if no e)108 177.6 Q +(xpansion occurs, no splitting is performed.)-.15 E F2 -.1(Pa)87 194.4 S +(thname Expansion).1 E F0 .37(After w)108 206.4 R .37 +(ord splitting, unless the)-.1 F F22.87 E F0 .37 +(option has been set,)2.87 F F2(bash)2.87 E F0 .371(scans each w)2.871 F +.371(ord for the characters)-.1 F F2(*)2.871 E F0(,)A F2(?)2.871 E F0 +2.871(,a)C(nd)-2.871 E F2([)2.871 E F0(.)A .678 +(If one of these characters appears, then the w)108 218.4 R .677 +(ord is re)-.1 F -.05(ga)-.15 G .677(rded as a).05 F/F3 10 +/Times-Italic@0 SF(pattern)3.177 E F0 3.177(,a).24 G .677 +(nd replaced with an alphabeti-)-3.177 F 1.456 +(cally sorted list of \214le names matching the pattern.)108 230.4 R +1.457(If no matching \214le names are found, and the shell)6.457 F +(option)108 242.4 Q F2(nullglob)3.265 E F0 .765(is disabled, the w)3.265 +F .765(ord is left unchanged.)-.1 F .765(If the)5.765 F F2(nullglob) +3.265 E F0 .765(option is set, and no matches are)3.265 F .305 +(found, the w)108 254.4 R .305(ord is remo)-.1 F -.15(ve)-.15 G 2.805 +(d. If).15 F(the)2.805 E F2(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 472.8 R -.15(xe)-.15 G -3.428(cuted. If).15 F .928(the shell option)3.428 F F1(nocaseglob)3.428 -E F0 .929(is enabled, the match is per)3.429 F(-)-.2 E .033 -(formed without re)108 484.8 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 496.8 R F1 -.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 508.8 R F1(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 520.8 S(plicitly).15 E 6.165 -(.I)-.65 G 3.665(no)-6.165 G 1.165(ther cases, the)-3.665 F F1 -.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 F1(shopt)3.666 E F0(belo)3.666 E(w)-.25 -E(under)108 532.8 Q F3 .478(SHELL B)2.978 F(UIL)-.09 E .478 -(TIN COMMANDS)-.828 F F0 .477(for a description of the)2.728 F F1 -(nocaseglob)2.977 E F0(,)A F1(nullglob)2.977 E F0(,)A F1(failglob)2.977 -E F0 2.977(,a)C(nd)-2.977 E F1(dotglob)2.977 E F0(shell options.)108 -544.8 Q(The)108 561.6 Q F3(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 F2(pattern)2.631 E F0 5.131(.I).24 G(f)-5.131 E F3(GLO-)2.631 E -(BIGNORE)108 573.6 Q F0 2.015(is set, each matching \214le name that al\ -so matches one of the patterns in)4.265 F F3(GLOBIGNORE)4.515 E F0(is) -4.264 E(remo)108 585.6 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 F1 -.63 -(``)2.503 G -.55(.').63 G(')-.08 E F0(and)5.003 E F1 -.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 F3(GLOBIGNORE)2.504 E F0(is)2.254 E .046 -(set and not null.)108 597.6 R(Ho)5.046 E(we)-.25 E -.15(ve)-.25 G .846 --.4(r, s).15 H(etting).4 E F3(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 F1(dotglob)2.545 E F0 .613 -(shell option, so all other \214le names be)108 609.6 R .614 -(ginning with a)-.15 F F1 -.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 621.6 R .457 -(ginning with a)-.15 F F1 -.63(``)2.957 G -.55(.').63 G(')-.08 E F0 -2.957(,m)C(ak)-2.957 E(e)-.1 E F1 -.63(``)2.957 G(.*').63 E(')-.63 E F0 -.457(one of the patterns in)5.457 F F3(GLOBIGNORE)2.957 E/F4 9 -/Times-Roman@0 SF(.)A F0(The)4.957 E F1(dotglob)2.956 E F0 .456 -(option is)2.956 F(disabled when)108 633.6 Q F3(GLOBIGNORE)2.5 E F0 -(is unset.)2.25 E F1 -.1(Pa)108 650.4 S(tter).1 E 2.5(nM)-.15 G(atching) --2.5 E F0(An)108 667.2 Q 3.138(yc)-.15 G .638(haracter that appears in \ +.929(is printed and the command is not e)108 266.4 R -.15(xe)-.15 G +3.428(cuted. If).15 F .928(the shell option)3.428 F F2(nocaseglob)3.428 +E F0 .928(is enabled, the match is per)3.428 F(-)-.2 E .032 +(formed without re)108 278.4 R -.05(ga)-.15 G .032 +(rd to the case of alphabetic characters.).05 F .033 +(When a pattern is used for pathname e)5.033 F(xpansion,)-.15 E .105 +(the character)108 290.4 R F2 -.63(``)2.605 G -.55(.').63 G(')-.08 E F0 +.105(at the start of a name or immediately follo)5.105 F .104 +(wing a slash must be matched e)-.25 F(xplicitly)-.15 E 2.604(,u)-.65 G +(nless)-2.604 E .887(the shell option)108 302.4 R F2(dotglob)3.387 E F0 +.887(is set.)3.387 F .888 +(When matching a pathname, the slash character must al)5.887 F -.1(wa) +-.1 G .888(ys be matched).1 F -.15(ex)108 314.4 S(plicitly).15 E 6.166 +(.I)-.65 G 3.666(no)-6.166 G 1.166(ther cases, the)-3.666 F F2 -.63(``) +3.666 G -.55(.').63 G(')-.08 E F0 1.166 +(character is not treated specially)6.166 F 6.165(.S)-.65 G 1.165 +(ee the description of)-6.165 F F2(shopt)3.665 E F0(belo)3.665 E(w)-.25 +E(under)108 326.4 Q F1 .477(SHELL B)2.977 F(UIL)-.09 E .477 +(TIN COMMANDS)-.828 F F0 .477(for a description of the)2.727 F F2 +(nocaseglob)2.978 E F0(,)A F2(nullglob)2.978 E F0(,)A F2(failglob)2.978 +E F0 2.978(,a)C(nd)-2.978 E F2(dotglob)2.978 E F0(shell options.)108 +338.4 Q(The)108 355.2 Q F1(GLOBIGNORE)2.631 E F0 .131(shell v)2.381 F +.131(ariable may be used to restrict the set of \214le names matching a) +-.25 F F3(pattern)2.63 E F0 5.13(.I).24 G(f)-5.13 E F1(GLO-)2.63 E +(BIGNORE)108 367.2 Q F0 2.015(is set, each matching \214le name that al\ +so matches one of the patterns in)4.264 F F1(GLOBIGNORE)4.515 E F0(is) +4.265 E(remo)108 379.2 Q -.15(ve)-.15 G 2.504(df).15 G .004 +(rom the list of matches.)-2.504 F .003(The \214le names)5.003 F F2 -.63 +(``)2.503 G -.55(.').63 G(')-.08 E F0(and)5.003 E F2 -.63(``)2.503 G(..) +.63 E -.63('')-.55 G F0 .003(are al)5.633 F -.1(wa)-.1 G .003 +(ys ignored when).1 F F1(GLOBIGNORE)2.503 E F0(is)2.253 E .045 +(set and not null.)108 391.2 R(Ho)5.045 E(we)-.25 E -.15(ve)-.25 G .845 +-.4(r, s).15 H(etting).4 E F1(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 F2(dotglob)2.546 E F0 .614 +(shell option, so all other \214le names be)108 403.2 R .614 +(ginning with a)-.15 F F2 -.63(``)3.114 G -.55(.').63 G(')-.08 E F0 .614 +(will match.)5.614 F 2.213 -.8(To g)5.614 H .613(et the old beha).8 F +.613(vior of ignoring)-.2 F .456(\214le names be)108 415.2 R .456 +(ginning with a)-.15 F F2 -.63(``)2.957 G -.55(.').63 G(')-.08 E F0 +2.957(,m)C(ak)-2.957 E(e)-.1 E F2 -.63(``)2.957 G(.*').63 E(')-.63 E F0 +.457(one of the patterns in)5.457 F F1(GLOBIGNORE)2.957 E/F4 9 +/Times-Roman@0 SF(.)A F0(The)4.957 E F2(dotglob)2.957 E F0 .457 +(option is)2.957 F(disabled when)108 427.2 Q F1(GLOBIGNORE)2.5 E F0 +(is unset.)2.25 E F2 -.1(Pa)108 444 S(tter).1 E 2.5(nM)-.15 G(atching) +-2.5 E F0(An)108 460.8 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 679.2 +-3.138 F 1.938 -.65(w, m)-.25 H(atches).65 E 3.62(itself. The)108 472.8 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 691.2 R .576 +.576(escaping backslash is discarded when matching.)108 484.8 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 703.2 Q(.)-.65 E -(The special pattern characters ha)108 720 Q .3 -.15(ve t)-.2 H -(he follo).15 E(wing meanings:)-.25 E(GNU Bash-3.2)72 768 Q -(2007 January 12)140.96 E(20)190.95 E 0 Cg EP -%%Page: 21 21 +-.15 G(re)-3.076 E(to be matched literally)108 496.8 Q(.)-.65 E +(The special pattern characters ha)108 513.6 Q .3 -.15(ve t)-.2 H +(he follo).15 E(wing meanings:)-.25 E F2(*)108 530.4 Q F0(Matches an)31 +E 2.5(ys)-.15 G(tring, including the null string.)-2.5 E F2(?)108 542.4 +Q F0(Matches an)31 E 2.5(ys)-.15 G(ingle character)-2.5 E(.)-.55 E F2 +([...])108 554.4 Q F0 .256(Matches an)21.84 F 2.756(yo)-.15 G .257 +(ne of the enclosed characters.)-2.756 F 2.757(Ap)5.257 G .257 +(air of characters separated by a h)-2.757 F .257(yphen denotes a)-.05 F +F3 -.15(ra)144 566.4 S(ng).15 E 3.29(ee)-.1 G(xpr)-3.49 E(ession)-.37 E +F0 3.29(;a)C 1.09 -.15(ny c)-3.29 H .789 +(haracter that sorts between those tw).15 F 3.289(oc)-.1 G .789 +(haracters, inclusi)-3.289 F -.15(ve)-.25 G 3.289(,u).15 G .789 +(sing the cur)-3.289 F(-)-.2 E .349(rent locale')144 578.4 R 2.849(sc) +-.55 G .349(ollating sequence and character set, is matched.)-2.849 F +.35(If the \214rst character follo)5.349 F .35(wing the)-.25 F F2([)2.85 +E F0 .564(is a)144 590.4 R F2(!)3.064 E F0 .564(or a)5.564 F F2(^)3.064 +E F0 .564(then an)3.064 F 3.064(yc)-.15 G .564 +(haracter not enclosed is matched.)-3.064 F .563 +(The sorting order of characters in range)5.564 F -.15(ex)144 602.4 S +1.102(pressions is determined by the current locale and the v).15 F +1.102(alue of the)-.25 F F2(LC_COLLA)3.602 E(TE)-.95 E F0 1.103(shell v) +3.603 F(ari-)-.25 E .089(able, if set.)144 614.4 R(A)5.089 E F22.589 +E F0 .088(may be matched by including it as the \214rst or last charact\ +er in the set.)2.589 F(A)5.088 E F2(])2.588 E F0 .088(may be)2.588 F +(matched by including it as the \214rst character in the set.)144 626.4 +Q -.4(Wi)144 644.4 S(thin).4 E F2([)2.914 E F0(and)2.914 E F2(])2.914 E +F0(,)A F3 -.15(ch)2.914 G(ar).15 E .414(acter classes)-.15 F F0 .415 +(can be speci\214ed using the syntax)2.915 F F2([:)2.915 E F3(class)A F2 +(:])A F0 2.915(,w)C(here)-2.915 E F3(class)2.915 E F0 .415(is one of) +2.915 F(the follo)144 656.4 Q +(wing classes de\214ned in the POSIX standard:)-.25 E F2 5.421 +(alnum alpha ascii blank cntrl digit graph lo)144 668.4 R 5.421 +(wer print punct space upper w)-.1 F(ord)-.1 E(xdigit)144 680.4 Q F0 +2.518(Ac)144 692.4 S .018(haracter class matches an)-2.518 F 2.518(yc) +-.15 G .019(haracter belonging to that class.)-2.518 F(The)5.019 E F2 +-.1(wo)2.519 G(rd).1 E F0 .019(character class matches)2.519 F +(letters, digits, and the character _.)144 704.4 Q -.4(Wi)144 722.4 S +(thin).4 E F2([)3.547 E F0(and)3.547 E F2(])3.547 E F0 3.547(,a)C(n) +-3.547 E F3 1.046(equivalence class)3.546 F F0 1.046 +(can be speci\214ed using the syntax)3.546 F F2([=)3.546 E F3(c)A F2(=]) +A F0 3.546(,w)C 1.046(hich matches all)-3.546 F(GNU Bash-3.2)72 768 Q +(2006 Jan 26)149.845 E(20)199.835 E 0 Cg EP +%%Page: 21 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/F1 10/Times-Bold@0 SF(*)108 84 Q F0(Matches an)31 E 2.5(ys)-.15 G -(tring, including the null string.)-2.5 E F1(?)108 96 Q F0(Matches an)31 -E 2.5(ys)-.15 G(ingle character)-2.5 E(.)-.55 E F1([...])108 108 Q F0 -.257(Matches an)21.84 F 2.757(yo)-.15 G .257 -(ne of the enclosed characters.)-2.757 F 2.757(Ap)5.257 G .257 -(air of characters separated by a h)-2.757 F .256(yphen denotes a)-.05 F -/F2 10/Times-Italic@0 SF -.15(ra)144 120 S(ng).15 E 3.289(ee)-.1 G(xpr) --3.489 E(ession)-.37 E F0 3.289(;a)C 1.089 -.15(ny c)-3.289 H .789 -(haracter that sorts between those tw).15 F 3.289(oc)-.1 G .789 -(haracters, inclusi)-3.289 F -.15(ve)-.25 G 3.29(,u).15 G .79 -(sing the cur)-3.29 F(-)-.2 E .35(rent locale')144 132 R 2.85(sc)-.55 G -.35(ollating sequence and character set, is matched.)-2.85 F .349 -(If the \214rst character follo)5.349 F .349(wing the)-.25 F F1([)2.849 -E F0 .563(is a)144 144 R F1(!)3.063 E F0 .563(or a)5.563 F F1(^)3.063 E -F0 .564(then an)3.063 F 3.064(yc)-.15 G .564 -(haracter not enclosed is matched.)-3.064 F .564 -(The sorting order of characters in range)5.564 F -.15(ex)144 156 S -1.102(pressions is determined by the current locale and the v).15 F -1.102(alue of the)-.25 F F1(LC_COLLA)3.602 E(TE)-.95 E F0 1.102(shell v) -3.602 F(ari-)-.25 E .088(able, if set.)144 168 R(A)5.088 E F12.588 E -F0 .088(may be matched by including it as the \214rst or last character\ - in the set.)2.588 F(A)5.089 E F1(])2.589 E F0 .089(may be)2.589 F -(matched by including it as the \214rst character in the set.)144 180 Q --.4(Wi)144 198 S(thin).4 E F1([)2.915 E F0(and)2.915 E F1(])2.915 E F0 -(,)A F2 -.15(ch)2.915 G(ar).15 E .415(acter classes)-.15 F F0 .415 -(can be speci\214ed using the syntax)2.915 F F1([:)2.915 E F2(class)A F1 -(:])A F0 2.914(,w)C(here)-2.914 E F2(class)2.914 E F0 .414(is one of) -2.914 F(the follo)144 210 Q -(wing classes de\214ned in the POSIX standard:)-.25 E F1 5.421 -(alnum alpha ascii blank cntrl digit graph lo)144 222 R 5.421 -(wer print punct space upper w)-.1 F(ord)-.1 E(xdigit)144 234 Q F0 2.519 -(Ac)144 246 S .019(haracter class matches an)-2.519 F 2.519(yc)-.15 G -.019(haracter belonging to that class.)-2.519 F(The)5.018 E F1 -.1(wo) -2.518 G(rd).1 E F0 .018(character class matches)2.518 F -(letters, digits, and the character _.)144 258 Q -.4(Wi)144 276 S(thin) -.4 E F1([)3.546 E F0(and)3.546 E F1(])3.546 E F0 3.546(,a)C(n)-3.546 E -F2 1.046(equivalence class)3.546 F F0 1.046 -(can be speci\214ed using the syntax)3.546 F F1([=)3.547 E F2(c)A F1(=]) -A F0 3.547(,w)C 1.047(hich matches all)-3.547 F(characters with the sam\ -e collation weight \(as de\214ned by the current locale\) as the charac\ -ter)144 288 Q F2(c)2.5 E F0(.)A -.4(Wi)144 306 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 .705(If the)108 322.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 -334.8 R .255(In the follo)5.255 F .255(wing description, a)-.25 F F2 +-.35 E(characters with the same collation weight \(as de\214ned by the \ +current locale\) as the character)144 84 Q/F1 10/Times-Italic@0 SF(c)2.5 +E F0(.)A -.4(Wi)144 102 S(thin).4 E/F2 10/Times-Bold@0 SF([)2.5 E F0 +(and)2.5 E F2(])2.5 E F0 2.5(,t)C(he syntax)-2.5 E F2([.)2.5 E F1 +(symbol)A F2(.])A F0(matches the collating symbol)2.5 E F1(symbol)2.5 E +F0(.)A .704(If the)108 118.8 R F2(extglob)3.204 E F0 .705 +(shell option is enabled using the)3.204 F F2(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 +130.8 R .256(In the follo)5.256 F .256(wing description, a)-.25 F F1 (pattern-list)2.755 E F0 .255 -(is a list of one or more patterns separated by a)2.755 F F1(|)2.756 E +(is a list of one or more patterns separated by a)2.755 F F2(|)2.755 E F0(.)A(Composite patterns may be formed using one or more of the follo) -108 346.8 Q(wing sub-patterns:)-.25 E F1(?\()144 370.8 Q F2 -(pattern-list).833 E F1(\)).833 E F0 -(Matches zero or one occurrence of the gi)180 382.8 Q -.15(ve)-.25 G 2.5 -(np).15 G(atterns)-2.5 E F1(*\()144 394.8 Q F2(pattern-list).833 E F1 -(\)).833 E F0(Matches zero or more occurrences of the gi)180 406.8 Q --.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F1(+\()144 418.8 Q F2 -(pattern-list).833 E F1(\)).833 E F0 -(Matches one or more occurrences of the gi)180 430.8 Q -.15(ve)-.25 G -2.5(np).15 G(atterns)-2.5 E F1(@\()144 442.8 Q F2(pattern-list).833 E F1 -(\)).833 E F0(Matches one of the gi)180 454.8 Q -.15(ve)-.25 G 2.5(np) -.15 G(atterns)-2.5 E F1(!\()144 466.8 Q F2(pattern-list).833 E F1(\)) -.833 E F0(Matches an)180 478.8 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 495.6 -Q -.1(va)-.1 G(l).1 E F0 1.113(After the preceding e)108 507.6 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 519.6 Q .3 +108 142.8 Q(wing sub-patterns:)-.25 E F2(?\()144 166.8 Q F1 +(pattern-list).833 E F2(\)).833 E F0 +(Matches zero or one occurrence of the gi)180 178.8 Q -.15(ve)-.25 G 2.5 +(np).15 G(atterns)-2.5 E F2(*\()144 190.8 Q F1(pattern-list).833 E F2 +(\)).833 E F0(Matches zero or more occurrences of the gi)180 202.8 Q +-.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F2(+\()144 214.8 Q F1 +(pattern-list).833 E F2(\)).833 E F0 +(Matches one or more occurrences of the gi)180 226.8 Q -.15(ve)-.25 G +2.5(np).15 G(atterns)-2.5 E F2(@\()144 238.8 Q F1(pattern-list).833 E F2 +(\)).833 E F0(Matches one of the gi)180 250.8 Q -.15(ve)-.25 G 2.5(np) +.15 G(atterns)-2.5 E F2(!\()144 262.8 Q F1(pattern-list).833 E F2(\)) +.833 E F0(Matches an)180 274.8 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 F2(Quote Remo)87 291.6 +Q -.1(va)-.1 G(l).1 E F0 1.112(After the preceding e)108 303.6 R 1.112 +(xpansions, all unquoted occurrences of the characters)-.15 F F2(\\) +3.613 E F0(,)A F2<08>3.613 E F0 3.613(,a)C(nd)-3.613 E F2(")4.446 E F0 +1.113(that did not result)4.446 F(from one of the abo)108 315.6 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 536.4 Q F0 .545 -(Before a command is e)108 548.4 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 .617 -(by the shell.)108 560.4 R .617(Redirection may also be used to open an\ -d close \214les for the current shell e)5.617 F -.15(xe)-.15 G .616 -(cution en).15 F(viron-)-.4 E 3.274(ment. The)108 572.4 R(follo)3.274 E +10.95/Times-Bold@0 SF(REDIRECTION)72 332.4 Q F0 .545 +(Before a command is e)108 344.4 R -.15(xe)-.15 G .545 +(cuted, its input and output may be).15 F F1 -.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 356.4 R .617(Redirection may also be used to open an\ +d 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 368.4 R(follo)3.275 E .774(wing redirection operators may precede or appear an)-.25 F .774 -(ywhere within a)-.15 F F2 .775(simple command)3.615 F F0(or)4.045 E -(may follo)108 584.4 Q 2.5(wa)-.25 G F2(command)A F0 5(.R).77 G +(ywhere within a)-.15 F F1 .774(simple command)3.614 F F0(or)4.044 E +(may follo)108 380.4 Q 2.5(wa)-.25 G F1(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 .284(In the follo)108 -601.2 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 613.2 R F1(<)3.012 E F0 3.012(,t)C .512 +-2.5 E 2.5(,f)-.4 G(rom left to right.)-2.5 E .283(In the follo)108 +397.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 409.2 R F2(<)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 625.2 Q F1(>)2.5 E F0 2.5(,t)C +(redirection operator is)108 421.2 Q F2(>)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 642 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 654 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 666 R -.25(va)-.15 G .843(l, pathname e).25 F .843 +-2.5 E .824(The w)108 438 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 .773 +(jected to brace e)108 450 R .773(xpansion, tilde e)-.15 F .773 +(xpansion, parameter e)-.15 F .772 +(xpansion, command substitution, arithmetic e)-.15 F(xpan-)-.15 E .843 +(sion, quote remo)108 462 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 F1(bash)3.343 E F0 -(reports an error)108 678 Q(.)-.55 E -(Note that the order of redirections is signi\214cant.)108 694.8 Q -.15 -(Fo)5 G 2.5(re).15 G(xample, the command)-2.65 E(ls)144 711.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 728.4 -Q F2(dirlist)2.5 E F0 2.5(,w).68 G(hile the command)-2.5 E(GNU Bash-3.2) -72 768 Q(2007 January 12)140.96 E(21)190.95 E 0 Cg EP -%%Page: 22 22 +.843(xpands to more than one w)-.15 F(ord,)-.1 E F2(bash)3.344 E F0 +(reports an error)108 474 Q(.)-.55 E +(Note that the order of redirections is signi\214cant.)108 490.8 Q -.15 +(Fo)5 G 2.5(re).15 G(xample, the command)-2.65 E(ls)144 507.6 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 524.4 +Q F1(dirlist)2.5 E F0 2.5(,w).68 G(hile the command)-2.5 E(ls 2)144 +541.2 Q F2(>&)A F0(1)A F2(>)2.5 E F0(dirlist)2.5 E .388 +(directs only the standard output to \214le)108 558 R F1(dirlist)2.888 E +F0 2.888(,b).68 G .387(ecause the standard error w)-2.888 F .387 +(as duplicated as standard output)-.1 F(before the standard output w)108 +570 Q(as redirected to)-.1 E F1(dirlist)2.5 E F0(.).68 E F2(Bash)108 +586.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 598.8 Q F2(/de)144 615.6 Q(v/fd/)-.15 E F1(fd)A F0(If)180 +627.6 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 639.6 Q(v/stdin)-.15 E F0(File descriptor 0 is duplicated.)180 +651.6 Q F2(/de)144 663.6 Q(v/stdout)-.15 E F0 +(File descriptor 1 is duplicated.)180 675.6 Q F2(/de)144 687.6 Q +(v/stderr)-.15 E F0(File descriptor 2 is duplicated.)180 699.6 Q +(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(21)199.835 E 0 Cg EP +%%Page: 22 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(ls 2)144 84 Q/F1 10/Times-Bold@0 SF(>&)A F0(1)A F1(>)2.5 E F0 -(dirlist)2.5 E .387(directs only the standard output to \214le)108 100.8 -R/F2 10/Times-Italic@0 SF(dirlist)2.887 E F0 2.887(,b).68 G .388 -(ecause the standard error w)-2.887 F .388 -(as duplicated as standard output)-.1 F(before the standard output w)108 -112.8 Q(as redirected to)-.1 E F2(dirlist)2.5 E F0(.).68 E F1(Bash)108 -129.6 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 141.6 Q F1(/de)144 158.4 Q(v/fd/)-.15 E F2(fd)A F0(If)180 -170.4 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 182.4 Q(v/stdin)-.15 E F0(File descriptor 0 is duplicated.)180 -194.4 Q F1(/de)144 206.4 Q(v/stdout)-.15 E F0 -(File descriptor 1 is duplicated.)180 218.4 Q F1(/de)144 230.4 Q -(v/stderr)-.15 E F0(File descriptor 2 is duplicated.)180 242.4 Q F1(/de) -144 254.4 Q(v/tcp/)-.15 E F2(host)A F1(/)A F2(port)A F0(If)180 266.4 Q -F2(host)2.996 E F0 .496(is a v)2.996 F .496 +-.35 E/F1 10/Times-Bold@0 SF(/de)144 84 Q(v/tcp/)-.15 E/F2 10 +/Times-Italic@0 SF(host)A F1(/)A F2(port)A F0(If)180 96 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 108 Q F1(bash)2.5 +E F0(attempts to open a TCP connection to the corresponding sock)2.5 E +(et.)-.1 E F1(/de)144 120 Q(v/udp/)-.15 E F2(host)A F1(/)A F2(port)A F0 +(If)180 132 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 278.4 Q F1(bash)2.5 E F0 -(attempts to open a TCP connection to the corresponding sock)2.5 E(et.) --.1 E F1(/de)144 290.4 Q(v/udp/)-.15 E F2(host)A F1(/)A F2(port)A F0(If) -180 302.4 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 314.4 Q F1(bash)2.5 E F0 +(vice name,)180 144 Q F1(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 331.2 S +-.1 E 2.5(Af)108 160.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 348 R 3.447(ym)-.15 G .947 -(ay con\215ict with \214le)-3.447 F -(descriptors the shell uses internally)108 360 Q(.)-.65 E F1(Redir)87 -376.8 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 177.6 R 3.446(ym)-.15 G .946 +(ay con\215ict with \214le)-3.446 F +(descriptors the shell uses internally)108 189.6 Q(.)-.65 E F1(Redir)87 +206.4 Q(ecting Input)-.18 E F0 .391 (Redirection of input causes the \214le whose name results from the e) -108 388.8 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 400.8 Q F2 +108 218.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 230.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 F2(n)2.86 E F0 (is not speci\214ed.)2.74 E -(The general format for redirecting input is:)108 417.6 Q([)144 434.4 Q -F2(n)A F0(])A F1(<)A F2(wor)A(d)-.37 E F1(Redir)87 451.2 Q -(ecting Output)-.18 E F0 .174 +(The general format for redirecting input is:)108 247.2 Q([)144 264 Q F2 +(n)A F0(])A F1(<)A F2(wor)A(d)-.37 E F1(Redir)87 280.8 Q(ecting Output) +-.18 E F0 .175 (Redirection of output causes the \214le whose name results from the e) -108 463.2 R .175(xpansion of)-.15 F F2(wor)3.015 E(d)-.37 E F0 .175 -(to be opened for writ-)3.445 F .825(ing on \214le descriptor)108 475.2 -R F2(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 F2(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 487.2 S(ist it is created; if it does e).15 E +108 292.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 304.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 316.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 504 Q([)144 520.8 Q -F2(n)A F0(])A F1(>)A F2(wor)A(d)-.37 E F0 .154 -(If the redirection operator is)108 537.6 R F1(>)2.654 E F0 2.654(,a)C -.154(nd the)-2.654 F F1(noclob)2.654 E(ber)-.1 E F0 .154(option to the) -2.654 F F1(set)2.655 E F0 -.2(bu)2.655 G .155 -(iltin has been enabled, the redirection).2 F .658(will f)108 549.6 R -.658(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 .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 561.6 R F1(>|)2.909 E F0 2.909(,o)C +(The general format for redirecting output is:)108 333.6 Q([)144 350.4 Q +F2(n)A F0(])A F1(>)A F2(wor)A(d)-.37 E F0 .155 +(If the redirection operator is)108 367.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 379.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 391.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.909 G .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 -573.6 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214le named by) +403.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 -590.4 S(pending Redir).25 E(ected Output)-.18 E F0 .642 -(Redirection of output in this f)108 602.4 R .642 -(ashion causes the \214le whose name results from the e)-.1 F .641 -(xpansion of)-.15 F F2(wor)3.481 E(d)-.37 E F0 .641(to be)3.911 F .473 -(opened for appending on \214le descriptor)108 614.4 R F2(n)2.973 E F0 +420 S(pending Redir).25 E(ected Output)-.18 E F0 .641 +(Redirection of output in this f)108 432 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 444 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 F2(n)3.334 E F0 -.474(is not speci\214ed.)3.214 F(If)5.474 E(the \214le does not e)108 -626.4 Q(xist it is created.)-.15 E -(The general format for appending output is:)108 643.2 Q([)144 660 Q F2 -(n)A F0(])A F1(>>)A F2(wor)A(d)-.37 E F1(Redir)87 681.6 Q -(ecting Standard Output and Standard Err)-.18 E(or)-.18 E(Bash)108 693.6 -Q F0(allo)3.142 E .642(ws both the standard output \(\214le descriptor \ +(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 +456 Q(xist it is created.)-.15 E +(The general format for appending output is:)108 472.8 Q([)144 489.6 Q +F2(n)A F0(])A F1(>>)A F2(wor)A(d)-.37 E F1(Redir)87 511.2 Q +(ecting Standard Output and Standard Err)-.18 E(or)-.18 E(Bash)108 523.2 +Q F0(allo)3.141 E .642(ws both the standard output \(\214le descriptor \ 1\) and the standard error output \(\214le descriptor 2\) to)-.25 F -(be redirected to the \214le whose name is the e)108 705.6 Q +(be redirected to the \214le whose name is the e)108 535.2 Q (xpansion of)-.15 E F2(wor)2.84 E(d)-.37 E F0(with this construct.)3.27 -E(There are tw)108 722.4 Q 2.5(of)-.1 G -(ormats for redirecting standard output and standard error:)-2.5 E -(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 E(22)190.95 E 0 Cg EP -%%Page: 23 23 +E(There are tw)108 552 Q 2.5(of)-.1 G +(ormats for redirecting standard output and standard error:)-2.5 E F1 +(&>)144 568.8 Q F2(wor)A(d)-.37 E F0(and)108 580.8 Q F1(>&)144 592.8 Q +F2(wor)A(d)-.37 E F0(Of the tw)108 609.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 F1(>)144 626.4 Q F2(wor)A(d)-.37 E F0(2)2.5 +E F1(>&)A F0(1)A F1(Her)87 643.2 Q 2.5(eD)-.18 G(ocuments)-2.5 E F0 .33 +(This type of redirection instructs the shell to read input from the cu\ +rrent source until a line containing only)108 655.2 R F2(wor)108.34 +667.2 Q(d)-.37 E F0 .683(\(with no trailing blanks\) is seen.)3.953 F +.684 +(All of the lines read up to that point are then used as the standard) +5.684 F(input for a command.)108 679.2 Q +(The format of here-documents is:)108 696 Q F1(<<)144 712.8 Q F0([)A F1 +A F0(])A F2(wor)A(d)-.37 E(her)164 724.8 Q(e-document)-.37 E F0 +(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(22)199.835 E 0 Cg EP +%%Page: 23 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/F1 10/Times-Bold@0 SF(&>)144 84 Q/F2 10/Times-Italic@0 SF(wor)A -(d)-.37 E F0(and)108 96 Q F1(>&)144 108 Q F2(wor)A(d)-.37 E F0 -(Of the tw)108 124.8 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 F1(>)144 -141.6 Q F2(wor)A(d)-.37 E F0(2)2.5 E F1(>&)A F0(1)A F1(Her)87 158.4 Q -2.5(eD)-.18 G(ocuments)-2.5 E F0 .33(This type of redirection instructs\ - the shell to read input from the current source until a line containin\ -g only)108 170.4 R F2(wor)108.34 182.4 Q(d)-.37 E F0 .684 -(\(with no trailing blanks\) is seen.)3.954 F .684 -(All of the lines read up to that point are then used as the standard) -5.684 F(input for a command.)108 194.4 Q -(The format of here-documents is:)108 211.2 Q F1(<<)144 228 Q F0([)A F1 -A F0(])A F2(wor)A(d)-.37 E(her)164 240 Q(e-document)-.37 E -(delimiter)144 252 Q F0 .127(No parameter e)108 268.8 R .127 +-.35 E/F1 10/Times-Italic@0 SF(delimiter)144 84 Q F0 .128 +(No parameter e)108 100.8 R .127 (xpansion, command substitution, arithmetic e)-.15 F .127 -(xpansion, or pathname e)-.15 F .128(xpansion is performed)-.15 F(on)108 -280.8 Q F2(wor)3.275 E(d)-.37 E F0 5.775(.I).77 G 3.275(fa)-5.775 G -1.075 -.15(ny c)-3.275 H .774(haracters in).15 F F2(wor)3.614 E(d)-.37 E -F0 .774(are quoted, the)4.044 F F2(delimiter)3.624 E F0 .774 -(is the result of quote remo)4.004 F -.25(va)-.15 G 3.274(lo).25 G(n) --3.274 E F2(wor)3.274 E(d)-.37 E F0 3.274(,a).77 G(nd)-3.274 E .904 -(the lines in the here-document are not e)108 292.8 R 3.405(xpanded. If) --.15 F F2(wor)3.405 E(d)-.37 E F0 .905 -(is unquoted, all lines of the here-document are)3.405 F .695 -(subjected to parameter e)108 304.8 R .695 -(xpansion, command substitution, and arithmetic e)-.15 F 3.194 -(xpansion. In)-.15 F .694(the latter case, the)3.194 F -(character sequence)108 316.8 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(`)2.5 E F0(.)A .601 -(If the redirection operator is)108 333.6 R F1(<<\255)3.101 E F0 3.101 +(xpansion, or pathname e)-.15 F .127(xpansion is performed)-.15 F(on)108 +112.8 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 124.8 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 136.8 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 148.8 Q/F2 10/Times-Bold@0 SF(\\)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(`)2.5 E F0(.)A .602 +(If the redirection operator is)108 165.6 R F2(<<\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 345.6 Q F2(delimiter)2.5 E F0 5 + and the line)-3.101 F(containing)108 177.6 Q F1(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 F1(Her)87 362.4 Q 2.5(eS)-.18 G(trings)-2.5 E F0 -2.5(Av)108 374.4 S(ariant of here documents, the format is:)-2.75 E F1 -(<<<)144 391.2 Q F2(wor)A(d)-.37 E F0(The)108 408 Q F2(wor)2.5 E(d)-.37 +-.25 E(ashion.)-.1 E F2(Her)87 194.4 Q 2.5(eS)-.18 G(trings)-2.5 E F0 +2.5(Av)108 206.4 S(ariant of here documents, the format is:)-2.75 E F2 +(<<<)144 223.2 Q F1(wor)A(d)-.37 E F0(The)108 240 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 F1 -(Duplicating File Descriptors)87 424.8 Q F0(The redirection operator)108 -436.8 Q([)144 453.6 Q F2(n)A F0(])A F1(<&)A F2(wor)A(d)-.37 E F0 .127 -(is used to duplicate input \214le descriptors.)108 470.4 R(If)5.127 E -F2(wor)2.967 E(d)-.37 E F0 -.15(ex)3.397 G .126 +(xpanded and supplied to the command on its standard input.)-.15 E F2 +(Duplicating File Descriptors)87 256.8 Q F0(The redirection operator)108 +268.8 Q([)144 285.6 Q F1(n)A F0(])A F2(<&)A F1(wor)A(d)-.37 E F0 .126 +(is used to duplicate input \214le descriptors.)108 302.4 R(If)5.127 E +F1(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 -482.4 Q F2(n)3.317 E F0 .457(is made to be a cop)3.197 F 2.957(yo)-.1 G -2.957(ft)-2.957 G .457(hat \214le descriptor)-2.957 F 5.457(.I)-.55 G -2.957(ft)-5.457 G .457(he digits in)-2.957 F F2(wor)3.298 E(d)-.37 E F0 -.458(do not specify a \214le descriptor open)3.728 F .15 -(for input, a redirection error occurs.)108 494.4 R(If)5.15 E F2(wor) -2.99 E(d)-.37 E F0 -.25(eva)3.42 G .15(luates to).25 F F12.65 E F0 -2.649<2c8c>C .149(le descriptor)-2.649 F F2(n)3.009 E F0 .149 -(is closed.)2.889 F(If)5.149 E F2(n)3.009 E F0 .149(is not speci\214ed,) -2.889 F(the standard input \(\214le descriptor 0\) is used.)108 506.4 Q -(The operator)108 523.2 Q([)144 540 Q F2(n)A F0(])A F1(>&)A F2(wor)A(d) --.37 E F0 .443 -(is used similarly to duplicate output \214le descriptors.)108 556.8 R -(If)5.443 E F2(n)3.304 E F0 .444 -(is not speci\214ed, the standard output \(\214le descrip-)3.184 F 1.358 -(tor 1\) is used.)108 568.8 R 1.358(If the digits in)6.358 F F2(wor) -4.198 E(d)-.37 E F0 1.357(do not specify a \214le descriptor open for o\ -utput, a redirection error)4.628 F 2.596(occurs. As)108 580.8 R 2.596 -(as)2.596 G .096(pecial case, if)-2.596 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) +314.4 Q F1(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 F1(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 326.4 R(If)5.149 E F1(wor) +2.989 E(d)-.37 E F0 -.25(eva)3.419 G .149(luates to).25 F F22.649 E +F0 2.65<2c8c>C .15(le descriptor)-2.65 F F1(n)3.01 E F0 .15(is closed.) +2.89 F(If)5.15 E F1(n)3.01 E F0 .15(is not speci\214ed,)2.89 F +(the standard input \(\214le descriptor 0\) is used.)108 338.4 Q +(The operator)108 355.2 Q([)144 372 Q F1(n)A F0(])A F2(>&)A F1(wor)A(d) +-.37 E F0 .444 +(is used similarly to duplicate output \214le descriptors.)108 388.8 R +(If)5.444 E F1(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 400.8 R 1.357(If the digits in)6.357 F F1(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.597(occurs. As)108 412.8 R 2.597 +(as)2.597 G .097(pecial case, if)-2.597 F F1(n)2.596 E F0 .096 +(is omitted, and)2.596 F F1(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 592.8 Q -(viously)-.25 E(.)-.65 E F1(Mo)87 609.6 Q(ving File Descriptors)-.1 E F0 -(The redirection operator)108 621.6 Q([)144 638.4 Q F2(n)A F0(])A F1(<&) -A F2(digit)A F1A F0(mo)108 655.2 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 667.2 Q F2(digit)5 -E F0(is closed after being duplicated to)2.5 E F2(n)2.5 E F0(.)A -(Similarly)108 684 Q 2.5(,t)-.65 G(he redirection operator)-2.5 E([)144 -700.8 Q F2(n)A F0(])A F1(>&)A F2(digit)A F1A F0(mo)108 717.6 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 729.6 Q(GNU Bash-3.2)72 768 Q -(2007 January 12)140.96 E(23)190.95 E 0 Cg EP -%%Page: 24 24 +(put and standard error are redirected as described pre)108 424.8 Q +(viously)-.25 E(.)-.65 E F2(Mo)87 441.6 Q(ving File Descriptors)-.1 E F0 +(The redirection operator)108 453.6 Q([)144 470.4 Q F1(n)A F0(])A F2(<&) +A F1(digit)A F2A F0(mo)108 487.2 Q -.15(ve)-.15 G 3.035(st).15 G +.535(he \214le descriptor)-3.035 F F1(digit)3.035 E F0 .535 +(to \214le descriptor)3.035 F F1(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 F1 +(n)3.036 E F0 .536(is not speci-)3.036 F(\214ed.)108 499.2 Q F1(digit)5 +E F0(is closed after being duplicated to)2.5 E F1(n)2.5 E F0(.)A +(Similarly)108 516 Q 2.5(,t)-.65 G(he redirection operator)-2.5 E([)144 +532.8 Q F1(n)A F0(])A F2(>&)A F1(digit)A F2A F0(mo)108 549.6 Q -.15 +(ve)-.15 G 2.786(st).15 G .286(he \214le descriptor)-2.786 F F1(digit) +2.786 E F0 .286(to \214le descriptor)2.786 F F1(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 F1(n)2.785 E F0 +.285(is not speci-)2.785 F(\214ed.)108 561.6 Q F2 +(Opening File Descriptors f)87 578.4 Q(or Reading and Writing)-.25 E F0 +(The redirection operator)108 590.4 Q([)144 607.2 Q F1(n)A F0(])A F2(<>) +A F1(wor)A(d)-.37 E F0 1.349(causes the \214le whose name is the e)108 +624 R 1.349(xpansion of)-.15 F F1(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 636 Q F1(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 F1(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 652.8 Q F1(Aliases)108 664.8 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 +(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 676.8 R F2(alias)2.894 E F0 +(and)2.894 E F2(unalias)2.894 E F0 -.2(bu)2.894 G .394(iltin commands).2 +F(\(see)108 688.8 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 700.8 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 F2(/)2.973 E F0(,)A +F2($)2.973 E F0(,)A F2(`)2.973 E F0(,)A(and)108 712.8 Q F2(=)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 F1(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 724.8 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(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(23) +199.835 E 0 Cg EP +%%Page: 24 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/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 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 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 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(`)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 +-.35 E -.1(wo)108 84 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 96 R .295(xpanded a second time.)-.15 F .296 +(This means that one may alias)5.295 F/F1 10/Times-Bold@0 SF(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 108 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 10 +/Times-Italic@0 SF(blank)3.042 E F0 3.042(,t).67 G .542(hen the ne) +-3.042 F(xt)-.15 E(command w)108 120 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 295.2 Q F1(alias)2.5 E F0 +E(Aliases are created and listed with the)108 136.8 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 312 R .284 +(There is no mechanism for using ar)108 153.6 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 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 +108 165.6 Q/F3 9/Times-Bold@0 SF(FUNCTIONS)2.5 E F0(belo)2.25 E(w\).) +-.25 E 1.22(Aliases are not e)108 182.4 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 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 option is set)3.72 F(using)108 194.4 Q F1(shopt)2.5 E F0 +(\(see the description of)2.5 E F1(shopt)2.5 E F0(under)2.5 E F3 (SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 -E .436 +E .435 (The rules concerning the de\214nition and use of aliases are some)108 -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 +211.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 223.2 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 .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 +(he commands on that line.)-2.838 F .337(Aliases are e)5.337 F .337 +(xpanded when)-.15 F 3.403(ac)108 235.2 S .904 +(ommand is read, not when it is e)-3.403 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.161 -(another command does not tak)108 405.6 R 3.662(ee)-.1 G -.25(ff)-3.662 +(an alias de\214nition appearing on the same line as)3.404 F 1.162 +(another command does not tak)108 247.2 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.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 +1.161(The commands follo)6.161 F 1.161(wing the)-.25 F .277 +(alias de\214nition on that line are not af)108 259.2 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 .698(are e)108 -429.6 R -.15(xe)-.15 G 3.198(cuted. Aliases).15 F .698(are e)3.198 F +2.777 E .277(vior is also an issue when functions)-.2 F .699(are e)108 +271.2 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 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 +n is e)-.15 F -.15(xe)-.15 G(cuted,).15 E .494 +(because a function de\214nition is itself a compound command.)108 283.2 +R .495(As a consequence, aliases de\214ned in a func-)5.494 F .085 +(tion are not a)108 295.2 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 .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 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 +-.1(wa)-.1 G .084(ys put alias de\214nitions on a sepa-).1 F +(rate line, and do not use)108 307.2 Q F1(alias)2.5 E F0 +(in compound commands.)2.5 E -.15(Fo)108 324 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/F4 10.95/Times-Bold@0 SF(FUNCTIONS)72 340.8 Q F0 3.467(As)108 +352.8 S .967(hell function, de\214ned as described abo)-3.467 F 1.267 +-.15(ve u)-.15 H(nder).15 E F3 .967(SHELL GRAMMAR)3.467 F/F5 9 +/Times-Roman@0 SF(,)A F0 .968(stores a series of commands for)3.217 F +1.002(later e)108 364.8 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 +376.8 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 388.8 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 400.8 R -.15(xe)-.15 G .639(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 .532(The special parameter)108 571.2 -R F1(#)3.032 E F0 .532(is updated to re\215ect the change.)3.032 F .533 -(Special parameter 0 is unchanged.)5.532 F .533(The \214rst ele-)5.533 F -1.018(ment of the)108 583.2 R F4(FUNCN)3.518 E(AME)-.18 E F0 -.25(va) -3.268 G 1.017 +-.18 F -.15(xe)-.15 G(cution.).15 E .533(The special parameter)108 412.8 +R F1(#)3.033 E F0 .532(is updated to re\215ect the change.)3.033 F .532 +(Special parameter 0 is unchanged.)5.532 F .532(The \214rst ele-)5.532 F +1.017(ment of the)108 424.8 R F3(FUNCN)3.517 E(AME)-.18 E F0 -.25(va) +3.267 G 1.017 (riable is set to the name of the function while the function is e).25 F --.15(xe)-.15 G 3.517(cuting. All).15 F 1.285 -(other aspects of the shell e)108 595.2 R -.15(xe)-.15 G 1.285 +-.15(xe)-.15 G 3.518(cuting. All).15 F 1.285 +(other aspects of the shell e)108 436.8 R -.15(xe)-.15 G 1.285 (cution en).15 F 1.285 (vironment are identical between a function and its caller with the)-.4 -F -.15(ex)108 607.2 S 2.03(ception that the).15 F F4(DEB)4.53 E(UG)-.09 -E F0(and)4.28 E F1(RETURN)4.53 E F0 2.029 -(traps \(see the description of the)4.53 F F1(trap)4.529 E F0 -.2(bu) -4.529 G 2.029(iltin under).2 F F4(SHELL)4.529 E -.09(BU)108 619.2 S(IL) -.09 E .478(TIN COMMANDS)-.828 F F0(belo)2.728 E .479 +F -.15(ex)108 448.8 S 2.029(ception that the).15 F F3(DEB)4.529 E(UG) +-.09 E F0(and)4.279 E F1(RETURN)4.529 E F0 2.029 +(traps \(see the description of the)4.529 F F1(trap)4.53 E F0 -.2(bu) +4.53 G 2.03(iltin under).2 F F3(SHELL)4.53 E -.09(BU)108 460.8 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 631.2 R F4(declar) +-.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 472.8 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 643.2 S(iltin \(in which case all functions inherit the).2 E F1(DEB) +(shell option has been enabled with the)2.92 F F1(set)2.921 E F0 -.2(bu) +108 484.8 S(iltin \(in which case all functions inherit the).2 E F1(DEB) 2.5 E(UG)-.1 E F0(and)2.5 E F1(RETURN)2.5 E F0(traps\).)2.5 E -1.11(Va) -108 660 S .655(riables local to the function may be declared with the) -1.11 F F1(local)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 672 Q(alues are shared between the function and its caller)-.25 E(.) --.55 E .044(If the b)108 688.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 +108 501.6 S .656(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 513.6 Q(alues are shared between the function and its caller)-.25 E +(.)-.55 E .043(If the b)108 530.4 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 700.8 R 1.011 +.044(cution resumes with).15 F 1.012(the ne)108 542.4 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.512 E F0 1.012 -(trap is e)3.512 F -.15(xe)-.15 G(cuted).15 E .214(before e)108 712.8 R --.15(xe)-.15 G .214(cution resumes.).15 F .213 -(When a function completes, the v)5.214 F .213 +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 554.4 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 724.8 Q F1(#)2.5 E F0(are restored to the v)2.5 E(alues the)-.25 E +108 566.4 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(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 E(24) -190.95 E 0 Cg EP -%%Page: 25 25 +-2.65 G(cution.).15 E 1.359 +(Function names and de\214nitions may be listed with the)108 583.2 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.858 E F1(typeset)3.858 E F0 -.2(bu)3.858 G 1.358(iltin com-).2 F +3.39(mands. The)108 595.2 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 +.327(\214le and line number)108 607.2 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 619.2 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 631.2 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 +643.2 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 655.2 Q +(en in cases where this may cause a problem.)-.1 E +(Functions may be recursi)108 672 Q -.15(ve)-.25 G 5(.N).15 G 2.5(ol)-5 +G(imit is imposed on the number of recursi)-2.5 E .3 -.15(ve c)-.25 H +(alls.).15 E F4(ARITHMETIC EV)72 688.8 Q(ALU)-1.478 E -1.04(AT)-.657 G +(ION)1.04 E F0 2.298(The shell allo)108 700.8 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 712.8 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 2.07(check for o)108 724.8 R -.15(ve)-.15 G +(r\215o).15 E 3.37 -.65(w, t)-.25 H 2.07(hough di).65 F 2.07 +(vision by 0 is trapped and \215agged as an error)-.25 F 7.07(.T)-.55 G +2.07(he operators and their)-7.07 F(GNU Bash-3.2)72 768 Q(2006 Jan 26) +149.845 E(24)199.835 E 0 Cg EP +%%Page: 25 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 1.358(Function names and de\214nitions may be listed with the)108 -84 R/F1 10/Times-Bold@0 SF3.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 96 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 108 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 120 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 132 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 144 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 156 Q -(en in cases where this may cause a problem.)-.1 E -(Functions may be recursi)108 172.8 Q -.15(ve)-.25 G 5(.N).15 G 2.5(ol) --5 G(imit is imposed on the number of recursi)-2.5 E .3 -.15(ve c)-.25 H -(alls.).15 E/F2 10.95/Times-Bold@0 SF(ARITHMETIC EV)72 189.6 Q(ALU) --1.478 E -1.04(AT)-.657 G(ION)1.04 E F0 2.297(The shell allo)108 201.6 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 213.6 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 225.6 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 -237.6 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 249.6 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/F3 10 -/Times-Italic@0 SF(id)108 266.4 Q F1(++)A F3(id)2.5 E F1A F0 -.25 -(va)144 278.4 S(riable post-increment and post-decrement).25 E F1(++)108 -290.4 Q F3(id)A F12.5 E F3(id)A F0 -.25(va)144 302.4 S -(riable pre-increment and pre-decrement).25 E F1 2.5108 314.4 S F0 -(unary minus and plus)19.6 E F1 2.5(!~)108 326.4 S F0 -(logical and bitwise ne)24.34 E -.05(ga)-.15 G(tion).05 E F1(**)108 -338.4 Q F0 -.15(ex)26 G(ponentiation).15 E F1 2.5(*/%)108 350.4 S F0 -(multiplication, di)10.72 E(vision, remainder)-.25 E F1 2.5<2bad>108 -362.4 S F0(addition, subtraction)19.6 E F1(<< >>)108 374.4 Q F0 -(left and right bitwise shifts)10.7 E F1(<= >= < >)108 386.4 Q F0 -(comparison)144 398.4 Q F1(== !=)108 410.4 Q F0(equality and inequality) -13.07 E F1(&)108 422.4 Q F0(bitwise AND)27.67 E F1(^)108 434.4 Q F0 -(bitwise e)32.67 E(xclusi)-.15 E .3 -.15(ve O)-.25 H(R).15 E F1(|)108 -446.4 Q F0(bitwise OR)33.8 E F1(&&)108 458.4 Q F0(logical AND)19.34 E F1 -(||)108 470.4 Q F0(logical OR)31.6 E F3 -.2(ex)108 482.4 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 494.4 Q F1 2.5(=*)108 506.4 S 2.5(=/)-2.5 G +-.35 E .645(precedence, associati)108 84 R(vity)-.25 E 3.145(,a)-.65 G +.646(nd v)-3.145 F .646(alues are the same as in the C language.)-.25 F +.646(The follo)5.646 F .646(wing list of operators is)-.25 F +(grouped into le)108 96 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/F1 10 +/Times-Italic@0 SF(id)108 112.8 Q/F2 10/Times-Bold@0 SF(++)A F1(id)2.5 E +F2A F0 -.25(va)144 124.8 S +(riable post-increment and post-decrement).25 E F2(++)108 136.8 Q F1(id) +A F22.5 E F1(id)A F0 -.25(va)144 148.8 S +(riable pre-increment and pre-decrement).25 E F2 2.5108 160.8 S F0 +(unary minus and plus)19.6 E F2 2.5(!~)108 172.8 S F0 +(logical and bitwise ne)24.34 E -.05(ga)-.15 G(tion).05 E F2(**)108 +184.8 Q F0 -.15(ex)26 G(ponentiation).15 E F2 2.5(*/%)108 196.8 S F0 +(multiplication, di)10.72 E(vision, remainder)-.25 E F2 2.5<2bad>108 +208.8 S F0(addition, subtraction)19.6 E F2(<< >>)108 220.8 Q F0 +(left and right bitwise shifts)10.7 E F2(<= >= < >)108 232.8 Q F0 +(comparison)144 244.8 Q F2(== !=)108 256.8 Q F0(equality and inequality) +13.07 E F2(&)108 268.8 Q F0(bitwise AND)27.67 E F2(^)108 280.8 Q F0 +(bitwise e)32.67 E(xclusi)-.15 E .3 -.15(ve O)-.25 H(R).15 E F2(|)108 +292.8 Q F0(bitwise OR)33.8 E F2(&&)108 304.8 Q F0(logical AND)19.34 E F2 +(||)108 316.8 Q F0(logical OR)31.6 E F1 -.2(ex)108 328.8 S(pr).2 E F2(?) +A F1 -.2(ex)C(pr).2 E F2(:)A F1 -.2(ex)C(pr).2 E F0 +(conditional operator)144 340.8 Q F2 2.5(=*)108 352.8 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 518.4 Q F3 -.2(ex)108 530.4 S -(pr1).2 E F1(,)2.5 E F3 -.2(ex)2.5 G(pr2).2 E F0(comma)144 542.4 Q .68 -(Shell v)108 559.2 R .68(ariables are allo)-.25 F .68 +(<= >>= &= ^= |=)-2.5 E F0(assignment)144 364.8 Q F1 -.2(ex)108 376.8 S +(pr1).2 E F2(,)2.5 E F1 -.2(ex)2.5 G(pr2).2 E F0(comma)144 388.8 Q .68 +(Shell v)108 405.6 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 571.2 R 1.008(ithin an e)-.4 -F 1.008(xpression, shell v)-.15 F 1.007 +-.25(va)-.25 G(lu-).25 E 3.507(ated. W)108 417.6 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 583.2 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 595.2 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 607.2 R 1.389 -(ariable which has been gi)-.25 F -.15(ve)-.25 G 3.89(nt).15 G(he)-3.89 -E F3(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 .344 -(assigned a v)108 619.2 R 2.844(alue. A)-.25 F .343(null v)2.843 F .343 -(alue e)-.25 F -.25(va)-.25 G .343(luates to 0.).25 F 2.843(As)5.343 G -.343(hell v)-2.843 F .343(ariable need not ha)-.25 F .643 -.15(ve i)-.2 -H .343(ts inte).15 F .343(ger attrib)-.15 F .343(ute turned on)-.2 F -(to be used in an e)108 631.2 Q(xpression.)-.15 E 1.406 -(Constants with a leading 0 are interpreted as octal numbers.)108 648 R -3.906(Al)6.406 G 1.407(eading 0x or 0X denotes he)-3.906 F(xadecimal.) --.15 E .59(Otherwise, numbers tak)108 660 R 3.09(et)-.1 G .59(he form [) --3.09 F F3(base#)A F0 .59(]n, where)B F3(base)3.089 E F0 .589 -(is a decimal number between 2 and 64 represent-)3.089 F .092 -(ing the arithmetic base, and)108 672 R F3(n)2.592 E F0 .093 -(is a number in that base.)2.592 F(If)5.093 E F3(base#)2.593 E F0 .093 -(is omitted, then base 10 is used.)2.593 F .093(The digits)5.093 F .065 -(greater than 9 are represented by the lo)108 684 R .064 +-.25 F -.15(ex)108 429.6 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 441.6 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 453.6 R 1.389 +(ariable which has been gi)-.25 F -.15(ve)-.25 G 3.889(nt).15 G(he) +-3.889 E F1(inte)3.889 E -.1(ge)-.4 G(r).1 E F0(attrib)3.889 E 1.389 +(ute using)-.2 F F2(declar)3.889 E 3.889(e-)-.18 G(i)-3.889 E F0(is) +3.889 E .343(assigned a v)108 465.6 R 2.843(alue. A)-.25 F .343(null v) +2.843 F .343(alue e)-.25 F -.25(va)-.25 G .343(luates to 0.).25 F 2.843 +(As)5.343 G .343(hell v)-2.843 F .343(ariable need not ha)-.25 F .643 +-.15(ve i)-.2 H .343(ts inte).15 F .344(ger attrib)-.15 F .344 +(ute turned on)-.2 F(to be used in an e)108 477.6 Q(xpression.)-.15 E +1.406(Constants with a leading 0 are interpreted as octal numbers.)108 +494.4 R 3.906(Al)6.406 G 1.406(eading 0x or 0X denotes he)-3.906 F +(xadecimal.)-.15 E .589(Otherwise, numbers tak)108 506.4 R 3.089(et)-.1 +G .589(he form [)-3.089 F F1(base#)A F0 .589(]n, where)B F1(base)3.089 E +F0 .59(is a decimal number between 2 and 64 represent-)3.089 F .093 +(ing the arithmetic base, and)108 518.4 R F1(n)2.593 E F0 .093 +(is a number in that base.)2.593 F(If)5.093 E F1(base#)2.593 E F0 .092 +(is omitted, then base 10 is used.)2.593 F .092(The digits)5.092 F .064 +(greater than 9 are represented by the lo)108 530.4 R .064 (wercase letters, the uppercase letters, @, and _, in that order)-.25 F -5.064(.I)-.55 G(f)-5.064 E F3(base)2.564 E F0 .432 -(is less than or equal to 36, lo)108 696 R .433(wercase and uppercase l\ -etters may be used interchangeably to represent num-)-.25 F -(bers between 10 and 35.)108 708 Q .235(Operators are e)108 724.8 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(GNU Bash-3.2)72 768 Q(2007 January 12) -140.96 E(25)190.95 E 0 Cg EP -%%Page: 26 26 +5.065(.I)-.55 G(f)-5.065 E F1(base)2.565 E F0 .433 +(is less than or equal to 36, lo)108 542.4 R .432(wercase and uppercase\ + letters may be used interchangeably to represent num-)-.25 F +(bers between 10 and 35.)108 554.4 Q .234(Operators are e)108 571.2 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 583.2 S +(rride the precedence rules abo).15 E -.15(ve)-.15 G(.).15 E/F3 10.95 +/Times-Bold@0 SF(CONDITION)72 600 Q(AL EXPRESSIONS)-.219 E F0 .256 +(Conditional e)108 612 R .256(xpressions are used by the)-.15 F F2([[) +2.755 E F0 .255(compound command and the)2.755 F F2(test)2.755 E F0(and) +2.755 E F2([)2.755 E F0 -.2(bu)2.755 G .255(iltin commands to test).2 F +.77(\214le attrib)108 624 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.041 +(unary or binary primaries.)108 636 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 648 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 660 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 .722 +(Unless otherwise speci\214ed, primaries that operate on \214les follo) +108 676.8 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 688.8 +Q F2108 712.8 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(GNU Bash-3.2)72 768 Q +(2006 Jan 26)149.845 E(25)199.835 E 0 Cg EP +%%Page: 26 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 -.15(ove)108 84 S(rride the precedence rules abo).15 E -.15(ve) --.15 G(.).15 E/F1 10.95/Times-Bold@0 SF(CONDITION)72 100.8 Q -(AL EXPRESSIONS)-.219 E F0 .255(Conditional e)108 112.8 R .255 -(xpressions are used by the)-.15 F/F2 10/Times-Bold@0 SF([[)2.755 E F0 -.255(compound command and the)2.755 F F2(test)2.755 E F0(and)2.755 E F2 -([)2.756 E F0 -.2(bu)2.756 G .256(iltin commands to test).2 F .77 -(\214le attrib)108 124.8 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 136.8 R 1.04(If an)6.04 F(y)-.15 E/F3 10 -/Times-Italic@0 SF(\214le)3.54 E F0(ar)3.54 E 1.041 -(gument to one of the primaries is of the form)-.18 F F3(/de)3.541 E -(v/fd/n)-.15 E F0 3.541(,t)C 1.041(hen \214le)-3.541 F(descriptor)108 -148.8 Q F3(n)3.789 E F0 1.289(is check)3.789 F 3.789(ed. If)-.1 F(the) -3.789 E F3(\214le)3.789 E F0(ar)3.789 E 1.289 -(gument to one of the primaries is one of)-.18 F F3(/de)3.789 E(v/stdin) --.15 E F0(,)A F3(/de)3.788 E(v/stdout)-.15 E F0 3.788(,o)C(r)-3.788 E F3 -(/de)108 160.8 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 -(Unless otherwise speci\214ed, primaries that operate on \214les follo) -108 177.6 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 189.6 -Q F2108 213.6 Q F3(\214le)2.5 E F0 -.35(Tr)10.58 G(ue if).35 E F3 -(\214le)2.5 E F0 -.15(ex)2.5 G(ists.).15 E F2108 225.6 Q F3 -(\214le)2.5 E F0 -.35(Tr)10.02 G(ue if).35 E F3(\214le)2.5 E F0 -.15(ex) -2.5 G(ists and is a block special \214le.).15 E F2108 237.6 Q F3 -(\214le)2.5 E F0 -.35(Tr)11.14 G(ue if).35 E F3(\214le)2.5 E F0 -.15(ex) -2.5 G(ists and is a character special \214le.).15 E F2108 249.6 Q -F3(\214le)2.5 E F0 -.35(Tr)10.02 G(ue if).35 E F3(\214le)2.5 E F0 -.15 -(ex)2.5 G(ists and is a directory).15 E(.)-.65 E F2108 261.6 Q F3 -(\214le)2.5 E F0 -.35(Tr)11.14 G(ue if).35 E F3(\214le)2.5 E F0 -.15(ex) -2.5 G(ists.).15 E F2108 273.6 Q F3(\214le)2.5 E F0 -.35(Tr)12.25 G -(ue if).35 E F3(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a re).15 E -(gular \214le.)-.15 E F2108 285.6 Q F3(\214le)2.5 E F0 -.35(Tr) -10.58 G(ue if).35 E F3(\214le)2.5 E F0 -.15(ex)2.5 G -(ists and is set-group-id.).15 E F2108 297.6 Q F3(\214le)2.5 E F0 --.35(Tr)10.02 G(ue if).35 E F3(\214le)2.5 E F0 -.15(ex)2.5 G -(ists and is a symbolic link.).15 E F2108 309.6 Q F3(\214le)2.5 E -F0 -.35(Tr)10.02 G(ue if).35 E F3(\214le)2.5 E F0 -.15(ex)2.5 G +-.35 E/F1 10/Times-Bold@0 SF108 84 Q/F2 10/Times-Italic@0 SF +(\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 96 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 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 is a directory).15 E(.)-.65 E F1108 120 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 132 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 F1108 144 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 set-group-id.).15 E F1108 156 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 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 `).15 E(`stick)-.74 E(y')-.15 E 2.5('b)-.74 G(it is set.) --2.5 E F2108 321.6 Q F3(\214le)2.5 E F0 -.35(Tr)10.02 G(ue if).35 -E F3(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a named pipe \(FIFO\).) -.15 E F2108 333.6 Q F3(\214le)2.5 E F0 -.35(Tr)11.14 G(ue if).35 E -F3(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is readable.).15 E F2108 -345.6 Q F3(\214le)2.5 E F0 -.35(Tr)11.69 G(ue if).35 E F3(\214le)2.5 E -F0 -.15(ex)2.5 G(ists and has a size greater than zero.).15 E F2 -108 357.6 Q F3(fd)2.5 E F0 -.35(Tr)16.69 G(ue if \214le descriptor).35 E -F3(fd)4.47 E F0(is open and refers to a terminal.)3.27 E F2108 -369.6 Q F3(\214le)2.5 E F0 -.35(Tr)10.02 G(ue if).35 E F3(\214le)2.5 E -F0 -.15(ex)2.5 G(ists and its set-user).15 E(-id bit is set.)-.2 E F2 -108 381.6 Q F3(\214le)2.5 E F0 -.35(Tr)8.36 G(ue if).35 E F3 -(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is writable.).15 E F2108 -393.6 Q F3(\214le)2.5 E F0 -.35(Tr)10.58 G(ue if).35 E F3(\214le)2.5 E -F0 -.15(ex)2.5 G(ists and is e).15 E -.15(xe)-.15 G(cutable.).15 E F2 -108 405.6 Q F3(\214le)2.5 E F0 -.35(Tr)7.8 G(ue if).35 E F3 -(\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 F2108 417.6 Q F3 -(\214le)2.5 E F0 -.35(Tr)7.8 G(ue if).35 E F3(\214le)2.5 E F0 -.15(ex) +-2.5 E F1108 180 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 192 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 +204 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 +216 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 228 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 +240 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 252 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 264 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 F2108 429.6 Q F3(\214le)2.5 E F0 -.35 -(Tr)8.91 G(ue if).35 E F3(\214le)2.5 E F0 -.15(ex)2.5 G -(ists and is a symbolic link.).15 E F2108 441.6 Q F3(\214le)2.5 E -F0 -.35(Tr)10.02 G(ue if).35 E F3(\214le)2.5 E F0 -.15(ex)2.5 G -(ists and is a sock).15 E(et.)-.1 E F2108 453.6 Q F3(\214le)2.5 E -F0 -.35(Tr)8.36 G(ue if).35 E F3(\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 -(\214le1)108 465.6 Q F02.5 E F2(nt)A F3(\214le2)2.5 E F0 -.35(Tr)144 -477.6 S .039(ue if).35 F F3(\214le1)2.539 E F0 .039(is ne)2.539 F .039 -(wer \(according to modi\214cation date\) than)-.25 F F3(\214le2)2.539 E -F0 2.539(,o)C 2.539(ri)-2.539 G(f)-2.539 E F3(\214le1)2.539 E F0 -.15 -(ex)2.539 G .039(ists and).15 F F3(\214le2)2.539 E F0 .038(does not.) -2.538 F F3(\214le1)108 489.6 Q F02.5 E F2(ot)A F3(\214le2)2.5 E F0 --.35(Tr)144 501.6 S(ue if).35 E F3(\214le1)2.5 E F0(is older than)2.5 E -F3(\214le2)2.5 E F0 2.5(,o)C 2.5(ri)-2.5 G(f)-2.5 E F3(\214le2)2.5 E F0 --.15(ex)2.5 G(ists and).15 E F3(\214le1)2.5 E F0(does not.)2.5 E F3 -(\214le1)108 513.6 Q F2(\255ef)2.5 E F3(\214le2)2.5 E F0 -.35(Tr)144 -525.6 S(ue if).35 E F3(\214le1)2.5 E F0(and)2.5 E F3(\214le2)2.5 E F0 -(refer to the same de)2.5 E(vice and inode numbers.)-.25 E F2108 -537.6 Q F3(optname)2.5 E F0 -.35(Tr)144 549.6 S 1.143 -(ue if shell option).35 F F3(optname)3.873 E F0 1.143(is enabled.)3.823 -F 1.144(See the list of options under the description of the)6.143 F F2 -3.644 E F0(option to the)144 561.6 Q F2(set)2.5 E F0 -.2(bu)2.5 G -(iltin belo).2 E -.65(w.)-.25 G F2108 573.6 Q F3(string)2.5 E F0 --.35(Tr)144 585.6 S(ue if the length of).35 E F3(string)2.5 E F0 -(is zero.)2.5 E F3(string)108 597.6 Q F2108 609.6 Q F3(string)2.5 -E F0 -.35(Tr)144 621.6 S(ue if the length of).35 E F3(string)2.84 E F0 -(is non-zero.)2.72 E F3(string1)108 638.4 Q F2(==)2.5 E F3(string2)2.5 E -F0 -.35(Tr)144 650.4 S(ue if the strings are equal.).35 E F2(=)5 E F0 -(may be used in place of)2.5 E F2(==)2.5 E F0 -(for strict POSIX compliance.)2.5 E F3(string1)108 667.2 Q F2(!=)2.5 E -F3(string2)2.5 E F0 -.35(Tr)144 679.2 S -(ue if the strings are not equal.).35 E F3(string1)108 696 Q F2(<)2.5 E -F3(string2)2.5 E F0 -.35(Tr)144 708 S(ue if).35 E F3(string1)2.5 E F0 -(sorts before)2.5 E F3(string2)2.5 E F0(le)2.5 E -(xicographically in the current locale.)-.15 E(GNU Bash-3.2)72 768 Q -(2007 January 12)140.96 E(26)190.95 E 0 Cg EP -%%Page: 27 27 +(ve u)-.25 H(ser id.).15 E F1108 276 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 288 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 F1 +108 300 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 F1 +108 312 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 F2(\214le1)108 324 Q F02.5 E F1(nt)A F2 +(\214le2)2.5 E F0 -.35(Tr)144 336 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 348 Q F02.5 E F1(ot)A F2(\214le2)2.5 E F0 +-.35(Tr)144 360 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 F2 +(\214le1)108 372 Q F1(\255ef)2.5 E F2(\214le2)2.5 E F0 -.35(Tr)144 384 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 F1108 +396 Q F2(optname)2.5 E F0 -.35(Tr)144 408 S 1.144(ue if shell option).35 +F F2(optname)3.874 E F0 1.144(is enabled.)3.824 F 1.143 +(See the list of options under the description of the)6.144 F F1 +3.643 E F0(option to the)144 420 Q F1(set)2.5 E F0 -.2(bu)2.5 G +(iltin belo).2 E -.65(w.)-.25 G F1108 432 Q F2(string)2.5 E F0 +-.35(Tr)144 444 S(ue if the length of).35 E F2(string)2.5 E F0(is zero.) +2.5 E F2(string)108 456 Q F1108 468 Q F2(string)2.5 E F0 -.35(Tr) +144 480 S(ue if the length of).35 E F2(string)2.84 E F0(is non-zero.) +2.72 E F2(string1)108 496.8 Q F1(==)2.5 E F2(string2)2.5 E F0 -.35(Tr) +144 508.8 S(ue if the strings are equal.).35 E F1(=)5 E F0 +(may be used in place of)2.5 E F1(==)2.5 E F0 +(for strict POSIX compliance.)2.5 E F2(string1)108 525.6 Q F1(!=)2.5 E +F2(string2)2.5 E F0 -.35(Tr)144 537.6 S +(ue if the strings are not equal.).35 E F2(string1)108 554.4 Q F1(<)2.5 +E F2(string2)2.5 E F0 -.35(Tr)144 566.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 in the current locale.)-.15 E F2(string1)108 583.2 Q F1 +(>)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 595.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 in the current locale.)-.15 E F2(ar)108.33 612 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 624 +Q F0 .385(is one of)2.634 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, less than or e\ +qual to, greater than, or greater than or equal to)144 636 R F2(ar)144 +648 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 664.8 Q(ANSION)-.81 E F0 .613 +(When a simple command is e)108 676.8 R -.15(xe)-.15 G .614 +(cuted, the shell performs the follo).15 F .614(wing e)-.25 F .614 +(xpansions, assignments, and redi-)-.15 F(rections, from left to right.) +108 688.8 Q 26(1. The)108 705.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 +(ariable assignments \(those preceding the command)-.25 F +(name\) and redirections are sa)144 717.6 Q -.15(ve)-.2 G 2.5(df).15 G +(or later processing.)-2.5 E(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E +(26)199.835 E 0 Cg EP +%%Page: 27 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-Italic@0 SF(string1)108 84 Q/F2 10/Times-Bold@0 SF(>) -2.5 E F1(string2)2.5 E F0 -.35(Tr)144 96 S(ue if).35 E F1(string1)2.5 E -F0(sorts after)2.5 E F1(string2)2.5 E F0(le)2.5 E -(xicographically in the current locale.)-.15 E F1(ar)108.33 112.8 Q(g1) --.37 E F2(OP)2.5 E F1(ar)2.5 E(g2)-.37 E/F3 9/Times-Bold@0 SF(OP)144 -124.8 Q F0 .385(is one of)2.635 F F2(\255eq)2.885 E F0(,)A F2(\255ne) -2.885 E F0(,)A F2(\255lt)2.885 E F0(,)A F2(\255le)2.885 E F0(,)A F2 -(\255gt)2.885 E F0 2.885(,o)C(r)-2.885 E F2(\255ge)2.885 E F0 5.385(.T)C -.385(hese arithmetic binary operators return true if)-5.385 F F1(ar) -2.884 E(g1)-.37 E F0 .845(is equal to, not equal to, less than, less th\ -an or equal to, greater than, or greater than or equal to)144 136.8 R F1 -(ar)144 148.8 Q(g2)-.37 E F0 2.5(,r)C(especti)-2.5 E -.15(ve)-.25 G(ly) -.15 E(.)-.65 E F1(Ar)6.01 E(g1)-.37 E F0(and)2.5 E F1(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 165.6 Q(ANSION)-.81 E F0 -.614(When a simple command is e)108 177.6 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 189.6 Q 26(1. The)108 206.4 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 218.4 Q -.15(ve)-.2 G 2.5(df).15 G -(or later processing.)-2.5 E 26(2. The)108 235.2 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.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 -247.2 R .775(xpansion, the \214rst w)-.15 F .775(ord is tak)-.1 F .775 +-.35 E 26(2. The)108 84 R -.1(wo)3.663 G 1.163(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 96 R .776(xpansion, the \214rst w)-.15 F .776 +(ord is tak)-.1 F .775 (en to be the name of the command and the remaining w)-.1 F(ords)-.1 E -(are the ar)144 259.2 Q(guments.)-.18 E 26(3. Redirections)108 276 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 292.8 R -(te)3.217 E .717(xt after the)-.15 F F2(=)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 304.8 R .339 +(are the ar)144 108 Q(guments.)-.18 E 26(3. Redirections)108 124.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 141.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 153.6 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 316.8 Q -.332(If no command name results, the v)108 333.6 R .332 +(efore being assigned to the v)-2.839 F(ari-)-.25 E(able.)144 165.6 Q +.332(If no command name results, the v)108 182.4 R .332 (ariable assignments af)-.25 F .332(fect the current shell en)-.25 F -2.832(vironment. Otherwise,)-.4 F(the)2.832 E -.25(va)108 345.6 S .757 +2.833(vironment. Otherwise,)-.4 F(the)2.833 E -.25(va)108 194.4 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.177(ronment. If)108 357.6 -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 369.6 Q(xits with a non-zero status.)-.15 E .149 -(If no command name results, redirections are performed, b)108 386.4 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 398.4 +(fect the current shell en)-.25 F(vi-)-.4 E 3.176(ronment. If)108 206.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 218.4 Q(xits with a non-zero status.)-.15 E .15 +(If no command name results, redirections are performed, b)108 235.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 247.2 Q(xit with a non-zero status.)-.15 E 1.064 -(If there is a command name left after e)108 415.2 R 1.064(xpansion, e) +(If there is a command name left after e)108 264 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 .068(command e)108 -427.2 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 439.2 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 451.2 -Q(xits with a status of zero.)-.15 E F4(COMMAND EXECUTION)72 468 Q F0 -.546(After a command has been split into w)108 480 R .547 +4.864 -.65(w. O)-.25 H 1.064(therwise, the).65 F .069(command e)108 276 +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 288 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 300 Q +(xits with a status of zero.)-.15 E/F4 10.95/Times-Bold@0 SF +(COMMAND EXECUTION)72 316.8 Q F0 .547 +(After a command has been split into w)108 328.8 R .546 (ords, if it results in a simple command and an optional list of ar)-.1 -F(gu-)-.18 E(ments, the follo)108 492 Q(wing actions are tak)-.25 E(en.) --.1 E .379(If the command name contains no slashes, the shell attempts \ -to locate it.)108 508.8 R .379(If there e)5.379 F .379 +F(gu-)-.18 E(ments, the follo)108 340.8 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 357.6 R .379(If there e)5.379 F .379 (xists a shell function by)-.15 F .246(that name, that function is in) -108 520.8 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 532.8 Q 2.5 +108 369.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 381.6 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 .31 -(If the name is neither a shell function nor a b)108 549.6 R .309 -(uiltin, and contains no slashes,)-.2 F F2(bash)2.809 E F0 .309 -(searches each element of)2.809 F(the)108 561.6 Q F3 -.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 F2(Bash)5.662 E F0 .663 -(uses a hash table to remember)3.162 F 1.915(the full pathnames of e)108 -573.6 R -.15(xe)-.15 G 1.915(cutable \214les \(see).15 F F2(hash)4.415 E -F0(under)4.415 E F3 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 585.6 R F3 -.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(search is unsuccessful, the shell prints an e\ -rror message and returns an e)108 597.6 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 614.4 R -.15(xe)-.15 G 1.089(cutes the) -.15 F .197(named program in a separate e)108 626.4 R -.15(xe)-.15 G .197 +(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 398.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 410.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 +422.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 434.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(search is unsuccessful, the shell prints an error m\ +essage and returns an e)108 446.4 Q(xit status of 127.)-.15 E 1.089(If \ +the search is successful, or if the command name contains one or more s\ +lashes, the shell e)108 463.2 R -.15(xe)-.15 G 1.09(cutes the).15 F .198 +(named program in a separate e)108 475.2 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 .198 -(n, and the remain-).15 F(ing ar)108 638.4 Q +(gument 0 is set to the name gi)-.18 F -.15(ve)-.25 G .197 +(n, and the remain-).15 F(ing ar)108 487.2 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 655.2 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 504 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 667.2 R F1 .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 516 R/F5 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 679.2 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 691.2 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 528 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 540 R 1.219 (xception that the locations of commands remembered by the parent \(see) --.15 F F2(hash)3.719 E F0(belo)3.719 E 3.719(wu)-.25 G(nder)-3.719 E F3 -(SHELL)3.719 E -.09(BU)108 703.2 S(IL).09 E(TIN COMMANDS)-.828 E F5(\))A -F0(are retained by the child.)2.25 E 1.375 -(If the program is a \214le be)108 720 R 1.374(ginning with)-.15 F F2 -(#!)3.874 E F0 3.874(,t)C 1.374 -(he remainder of the \214rst line speci\214es an interpreter for the) --3.874 F(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 E(27)190.95 E 0 Cg -EP -%%Page: 28 28 +-.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 552 S(IL).09 E(TIN COMMANDS)-.828 E F2(\))A +F0(are retained by the child.)2.25 E .347(If the program is a \214le be) +108 568.8 R .347(ginning with)-.15 F F3(#!)2.847 E F0 2.847(,t)C .348(h\ +e remainder of the \214rst line speci\214es an interpreter for the pro-) +-2.847 F 3.178(gram. The)108 580.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.192(format themselv) +108 592.8 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 604.8 R +1.13(wed by the name of the program, follo)-.25 F 1.13(wed by the)-.25 F +(command ar)108 616.8 Q(guments, if an)-.18 E -.65(y.)-.15 G F4 +(COMMAND EXECUTION ENVIR)72 633.6 Q(ONMENT)-.329 E F0(The shell has an) +108 645.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.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 +F3(exec)3.906 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-3.2)72 768 Q(2006 Jan 26)149.845 E(27)199.835 E 0 Cg EP +%%Page: 28 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 5.485(program. The)108 84 R 2.985(shell e)5.485 F -.15(xe)-.15 G -2.986(cutes the speci\214ed interpreter on operating systems that do no\ -t handle this).15 F -.15(exe)108 96 S .762(cutable format themselv).15 F -3.262(es. The)-.15 F(ar)3.262 E .761 -(guments to the interpreter consist of a single optional ar)-.18 F .761 -(gument fol-)-.18 F(lo)108 108 Q .156 -(wing the interpreter name on the \214rst line of the program, follo) --.25 F .157(wed by the name of the program, follo)-.25 F(wed)-.25 E -(by the command ar)108 120 Q(guments, if an)-.18 E -.65(y.)-.15 G/F1 -10.95/Times-Bold@0 SF(COMMAND EXECUTION ENVIR)72 136.8 Q(ONMENT)-.329 E -F0(The shell has an)108 148.8 Q/F2 10/Times-Italic@0 SF -.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 177.6 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 10 -/Times-Bold@0 SF(exec)3.905 E F0 -.2(bu)144 189.6 S(iltin).2 E 32.5 -<8374>108 206.4 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 32.5<8374>108 223.2 S -(he \214le creation mode mask as set by)-32.5 E F3(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 240 S(urrent traps set by)-32.5 E F3(trap)2.5 E F0 32.5<8373> -108 256.8 S .256(hell parameters that are set by v)-32.5 F .256 -(ariable assignment or with)-.25 F F3(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 268.8 Q(vironment)-.4 E 32.5<8373>108 285.6 S +-.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 .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 129.6 Q(vironment)-.4 E 32.5<8373>108 146.4 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 302.4 S +(arent in the en)-2.5 E(vironment)-.4 E 32.5<836f>108 163.2 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 F3(set)2.5 E -F0 32.5<836f>108 319.2 S(ptions enabled by)-32.5 E F3(shopt)2.5 E F0 -32.5<8373>108 336 S(hell aliases de\214ned with)-32.5 E F3(alias)2.5 E -F0 32.5<8376>108 352.8 S +(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 (arious process IDs, including those of background jobs, the v)-32.75 E -(alue of)-.25 E F3($$)2.5 E F0 2.5(,a)C(nd the v)-2.5 E(alue of)-.25 E -F3($PPID)2.5 E F0 .427(When a simple command other than a b)108 369.6 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 381.6 S .133(cution en).15 F .133 +(alue of)-.25 E F1($$)2.5 E F0 2.5(,a)C(nd the v)-2.5 E(alue of)-.25 E +F1($PPID)2.5 E F0 .426(When a simple command other than a b)108 230.4 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 242.4 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 393.6 Q 32.5<8374>108 422.4 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 254.4 Q 32.5<8374>108 283.2 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 434.4 Q 32.5<8374>108 451.2 S(he current w)-32.5 E -(orking directory)-.1 E 32.5<8374>108 468 S -(he \214le creation mode mask)-32.5 E 32.5<8373>108 484.8 S .856(hell v) +-3.556 F(mand)144 295.2 Q 32.5<8374>108 312 S(he current w)-32.5 E +(orking directory)-.1 E 32.5<8374>108 328.8 S +(he \214le creation mode mask)-32.5 E 32.5<8373>108 345.6 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 496.8 Q(vironment) --.4 E 32.5<8374>108 513.6 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 525.6 Q -2.5(Ac)108 542.4 S(ommand in)-2.5 E -.2(vo)-.4 G -.1(ke).2 G 2.5(di).1 G +(xported for the command,)-.15 F(passed in the en)144 357.6 Q(vironment) +-.4 E 32.5<8374>108 374.4 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 386.4 Q +2.5(Ac)108 403.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 (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 559.2 R -.2(vo)-.4 G -.1 -(ke).2 G 3.078(di).1 G(n)-3.078 E 2.745(as)108 571.2 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 583.2 R .358 +ntheses, and asynchronous commands are in)108 420 R -.2(vo)-.4 G -.1(ke) +.2 G 3.077(di).1 G(n)-3.077 E 2.744(as)108 432 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 444 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 595.2 -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 607.2 Q(fect the shell')-.25 E 2.5(se)-.55 G --.15(xe)-2.65 G(cution en).15 E(vironment.)-.4 E .404 -(If a command is follo)108 624 R .404(wed by a)-.25 F F3(&)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 636 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 648 Q F1(ENVIR)72 664.8 Q(ONMENT) --.329 E F0 2.353(When a program is in)108 676.8 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 +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 456 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 468 Q(fect the shell')-.25 E 2.5(se)-.55 G -.15 +(xe)-2.65 G(cution en).15 E(vironment.)-.4 E .405(If a command is follo) +108 484.8 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 496.8 R/F2 10/Times-Italic@0 SF(/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 508.8 Q/F3 10.95/Times-Bold@0 SF +(ENVIR)72 525.6 Q(ONMENT)-.329 E F0 2.354(When a program is in)108 537.6 +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 688.8 Q +E F0 7.353(.T).68 G 2.353(his is a list of)-7.353 F F2(name)108 549.6 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 705.6 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 717.6 Q .144(viron\ +(value)A F0(.).18 E 1.485(The shell pro)108 566.4 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 578.4 Q .144(viron\ ment 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 -5.289(cesses. Ex)108 729.6 R 2.789(ecuted commands inherit the en)-.15 F -5.288(vironment. The)-.4 F F3(export)5.288 E F0(and)5.288 E F3(declar) -5.288 E 5.288<65ad>-.18 G(x)-5.288 E F0 2.788(commands allo)5.288 F(w) --.25 E(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 E(28)190.95 E 0 Cg -EP -%%Page: 29 29 + it for)-.4 F F2 -.2(ex)2.643 G(port).2 E F0 .143(to child pro-)3.323 F +2.703(cesses. Ex)108 590.4 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 602.4 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 614.4 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 626.4 +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 638.4 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 650.4 Q 2.5<65ad>-.18 G(x)-2.5 E F0(commands.)2.5 E .563(The en)108 +667.2 R .563(vironment for an)-.4 F(y)-.15 E F2 .563(simple command) +3.403 F F0 .562 +(or function may be augmented temporarily by pre\214xing it with)3.833 F +.202(parameter assignments, as described abo)108 679.2 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 +.203(fect only the)-.25 F(en)108 691.2 Q +(vironment seen by that command.)-.4 E .81(If the)108 708 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 F2(all)3.64 E F0 .81 +(parameter assignments are placed in)3.82 F(the en)108 720 Q +(vironment for a command, not just those that precede the command name.) +-.4 E(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(28)199.835 E 0 Cg EP +%%Page: 29 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 .646 -(parameters and functions to be added to and deleted from the en)108 84 -R 3.147(vironment. If)-.4 F .647(the v)3.147 F .647 -(alue of a parameter in)-.25 F .514(the en)108 96 R .513 -(vironment is modi\214ed, the ne)-.4 F 3.013(wv)-.25 G .513 -(alue becomes part of the en)-3.263 F .513 -(vironment, replacing the old.)-.4 F .513(The en)5.513 F(vi-)-.4 E .522 -(ronment inherited by an)108 108 R 3.022(ye)-.15 G -.15(xe)-3.172 G .522 -(cuted command consists of the shell').15 F 3.022(si)-.55 G .522 -(nitial en)-3.022 F .522(vironment, whose v)-.4 F .523(alues may)-.25 F -.579(be modi\214ed in the shell, less an)108 120 R 3.078(yp)-.15 G .578 -(airs remo)-3.078 F -.15(ve)-.15 G 3.078(db).15 G 3.078(yt)-3.078 G(he) --3.078 E/F1 10/Times-Bold@0 SF(unset)3.078 E F0 .578(command, plus an) -3.078 F 3.078(ya)-.15 G .578(dditions via the)-3.078 F F1(export)3.078 E -F0(and)108 132 Q F1(declar)2.5 E 2.5<65ad>-.18 G(x)-2.5 E F0(commands.) -2.5 E .562(The en)108 148.8 R .562(vironment for an)-.4 F(y)-.15 E/F2 10 -/Times-Italic@0 SF .562(simple command)3.402 F F0 .563 -(or function may be augmented temporarily by pre\214xing it with)3.833 F -.203(parameter assignments, as described abo)108 160.8 R .502 -.15(ve i) --.15 H(n).15 E/F3 9/Times-Bold@0 SF -.666(PA)2.702 G(RAMETERS).666 E/F4 -9/Times-Roman@0 SF(.)A F0 .202(These assignment statements af)4.702 F -.202(fect only the)-.25 F(en)108 172.8 Q -(vironment seen by that command.)-.4 E .81(If the)108 189.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 201.6 Q -(vironment for a command, not just those that precede the command name.) --.4 E(When)108 218.4 Q F1(bash)3.397 E F0(in)3.397 E -.2(vo)-.4 G -.1 -(ke).2 G 3.397(sa).1 G 3.397(ne)-3.397 G .897(xternal command, the v) --3.547 F(ariable)-.25 E F1(_)3.397 E F0 .897 +-.35 E(When)108 84 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 230.4 Q(vironment.)-.4 E/F5 10.95 -/Times-Bold@0 SF(EXIT ST)72 247.2 Q -1.04(AT)-.986 G(US)1.04 E F0 -.15 -(Fo)108 259.2 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 271.2 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 283.2 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 .404 -(If a command is not found, the child process created to e)108 300 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 312 Q(ut is not e)-.2 E -.15(xe) --.15 G(cutable, the return status is 126.).15 E(If a command f)108 328.8 +(passed to that command in its en)108 96 Q(vironment.)-.4 E/F2 10.95 +/Times-Bold@0 SF(EXIT ST)72 112.8 Q -1.04(AT)-.986 G(US)1.04 E F0 -.15 +(Fo)108 124.8 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 136.8 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 148.8 Q/F3 10/Times-Italic@0 SF(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 .405 +(If a command is not found, the child process created to e)108 165.6 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 177.6 Q(ut is not e)-.2 E -.15(xe) +-.15 G(cutable, the return status is 126.).15 E(If a command f)108 194.4 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 345.6 R .081 -(uiltin commands return a status of 0 \()-.2 F F2(true)A F0 2.581(\)i)C -2.581(fs)-2.581 G .08(uccessful, and non-zero \()-2.581 F F2(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 357.6 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 374.4 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 386.4 -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 F5 -(SIGN)72 403.2 Q(ALS)-.219 E F0(When)108 415.2 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 F3(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 427.2 Q .757 -.15 -(ve s)-.25 H .457(hell\), and).15 F F3(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 439.2 Q F0(ignores)2.5 E F3(SIGQ)2.5 E(UIT)-.09 E F4(.)A F0 -(If job control is in ef)4.5 E(fect,)-.25 E F1(bash)2.5 E F0(ignores)2.5 -E F3(SIGTTIN)2.5 E F4(,)A F3(SIGTT)2.25 E(OU)-.162 E F4(,)A F0(and)2.25 -E F3(SIGTSTP)2.5 E F4(.)A F0(Non-b)108 456 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 468 -R .747(job control is not in ef)3.247 F .747 -(fect, asynchronous commands ignore)-.25 F F3(SIGINT)3.248 E F0(and) -2.998 E F3(SIGQ)3.248 E(UIT)-.09 E F0 .748(in addi-)2.998 F .653 -(tion to these inherited handlers.)108 480 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 492 Q F3 -(SIGTTIN)2.5 E F4(,)A F3(SIGTT)2.25 E(OU)-.162 E F4(,)A F0(and)2.25 E F3 -(SIGTSTP)2.5 E F4(.)A F0 2.045(The shell e)108 508.8 R 2.045 -(xits by def)-.15 F 2.045(ault upon receipt of a)-.1 F F3(SIGHUP)4.545 E -F4(.)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 F3(SIGHUP)108 520.8 Q F0 -1.005(to all jobs, running or stopped.)3.255 F 1.004 -(Stopped jobs are sent)6.005 F F3(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 F3(SIGHUP)108 532.8 Q F4(.)A F0 2.529 -.8(To p) -5.429 H(re).8 E -.15(ve)-.25 G .93(nt the shell 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 544.8 R F1(diso) -3.857 E(wn)-.1 E F0 -.2(bu)3.857 G 1.357(iltin \(see).2 F F3 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 F3 -(SIGHUP)108 556.8 Q F0(using)2.25 E F1(diso)2.5 E(wn \255h)-.1 E F0(.)A -.166(If the)108 573.6 R F1(huponexit)2.666 E F0 .166 +-.15 E .08(Shell b)108 211.2 R .08 +(uiltin commands return a status of 0 \()-.2 F F3(true)A F0 2.581(\)i)C +2.581(fs)-2.581 G .081(uccessful, and non-zero \()-2.581 F F3(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 223.2 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 240 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 252 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 268.8 Q(ALS)-.219 E F0(When)108 280.8 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 9/Times-Bold@0 SF(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 +292.8 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 304.8 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 321.6 +Q 1.064(uiltin commands run by)-.2 F F1(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 +333.6 R .748(job control is not in ef)3.248 F .747 +(fect, asynchronous commands ignore)-.25 F F4(SIGINT)3.247 E F0(and) +2.997 E F4(SIGQ)3.247 E(UIT)-.09 E F0 .747(in addi-)2.997 F .652 +(tion to these inherited handlers.)108 345.6 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 357.6 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.046(The shell e)108 374.4 R 2.046 +(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.345 +-.15(ve s)-.25 H 2.045(hell resends the).15 F F4(SIGHUP)108 386.4 Q F0 +1.004(to all jobs, running or stopped.)3.254 F 1.004 +(Stopped jobs are sent)6.004 F F4(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 F4(SIGHUP)108 398.4 Q F5(.)A F0 2.53 -.8(To p)5.43 +H(re).8 E -.15(ve)-.25 G .93(nt the shell from sending the signal to a \ +particular job, it should be remo).15 F -.15(ve)-.15 G 3.429(df).15 G +.929(rom the)-3.429 F 1.356(jobs table with the)108 410.4 R F1(diso) +3.856 E(wn)-.1 E F0 -.2(bu)3.856 G 1.356(iltin \(see).2 F F4 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 F4 +(SIGHUP)108 422.4 Q F0(using)2.25 E F1(diso)2.5 E(wn \255h)-.1 E F0(.)A +.166(If the)108 439.2 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 F3(SIGHUP)2.666 E F0 .166 +2.666 E F0 .166(sends a)2.666 F F4(SIGHUP)2.666 E F0 .166 (to all jobs when an interacti)2.416 F -.15(ve)-.25 G(login shell e)108 -585.6 Q(xits.)-.15 E(If)108 602.4 Q F1(bash)3.047 E F0 .547(is w)3.047 F +451.2 Q(xits.)-.15 E(If)108 468 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 614.4 R -.15(xe)-.15 G .662 +-3.046 F .663(will not be e)108 480 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 626.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 +F0 .662(is w)3.163 F .662(aiting for an asynchronous command)-.1 F .99 +(via the)108 492 R F1(wait)3.49 E F0 -.2(bu)3.49 G .99(iltin, the recep\ +tion 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 638.4 Q +(return immediately with an e)108 504 Q (xit status greater than 128, immediately after which the trap is e)-.15 -E -.15(xe)-.15 G(cuted.).15 E F5(JOB CONTR)72 655.2 Q(OL)-.329 E F2 -.25 -(Jo)108 667.2 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 F2(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 679.2 Q -F2 -.37(re)C(sume).37 E F0 3.202(\)t)C .702(heir e)-3.202 F -.15(xe)-.15 +E -.15(xe)-.15 G(cuted.).15 E F2(JOB CONTR)72 520.8 Q(OL)-.329 E F3 -.25 +(Jo)108 532.8 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 F3(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 544.8 Q +F3 -.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 system')108 691.2 Q 2.5(st)-.55 G +(acility via an interacti)-.1 F 1.002 -.15(ve i)-.25 H(nterf).15 E(ace) +-.1 E(supplied jointly by the system')108 556.8 Q 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 708 R F2(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 720 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 F2(bac)2.84 E(kgr)-.2 E -(ound)-.45 E F0 .34(\), it prints a line).77 F(GNU Bash-3.2)72 768 Q -(2007 January 12)140.96 E(29)190.95 E 0 Cg EP -%%Page: 30 30 +F0(.)A .785(The shell associates a)108 573.6 R F3(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 585.6 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 F3(bac)2.841 E(kgr)-.2 E +(ound)-.45 E F0 .341(\), it prints a line).77 F(that looks lik)108 597.6 +Q(e:)-.1 E([1] 25647)144 614.4 Q .241(indicating that this job is job n\ +umber 1 and that the process ID of the last process in the pipeline ass\ +ociated)108 631.2 R .732(with this job is 25647.)108 643.2 R .733 +(All of the processes in a single pipeline are members of the same job) +5.732 F(.)-.4 E F1(Bash)5.733 E F0(uses)3.233 E(the)108 655.2 Q F3(job) +4.24 E F0(abstraction as the basis for job control.)2.73 E 3.063 -.8 +(To f)108 672 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 684 R F3(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 +696 R .323 -.15(ve k)-.25 H -.15(ey).05 G .023 +(board-generated signals such as).15 F F4(SIG-)2.522 E(INT)108 708 Q F5 +(.)A F0 1.346(These processes are said to be in the)5.846 F F3(for)3.847 +E -.4(eg)-.37 G -.45(ro).4 G(und).45 E F0(.).77 E F3(Bac)6.927 E(kgr)-.2 +E(ound)-.45 E F0 1.347(processes are those whose process)4.617 F 1.844 +(group ID dif)108 720 R 1.844(fers from the terminal')-.25 F 1.844 +(s; such processes are immune to k)-.55 F -.15(ey)-.1 G 1.843 +(board-generated signals.).15 F(Only)6.843 E(GNU Bash-3.2)72 768 Q +(2006 Jan 26)149.845 E(29)199.835 E 0 Cg EP +%%Page: 30 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(that looks lik)108 84 Q(e:)-.1 E([1] 25647)144 100.8 Q .241(indi\ -cating that this job is job number 1 and that the process ID of the las\ -t process in the pipeline associated)108 117.6 R .733 -(with this job is 25647.)108 129.6 R .732 -(All of the processes in a single pipeline are members of the same job) -5.733 F(.)-.4 E/F1 10/Times-Bold@0 SF(Bash)5.732 E F0(uses)3.232 E(the) -108 141.6 Q/F2 10/Times-Italic@0 SF(job)4.24 E F0 -(abstraction as the basis for job control.)2.73 E 3.062 -.8(To f)108 -158.4 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 170.4 R F2(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 -(group ID is equal to the current terminal process group ID\) recei)108 -182.4 R .323 -.15(ve k)-.25 H -.15(ey).05 G .023 -(board-generated signals such as).15 F/F3 9/Times-Bold@0 SF(SIG-)2.523 E -(INT)108 194.4 Q/F4 9/Times-Roman@0 SF(.)A F0 1.347 -(These processes are said to be in the)5.847 F F2(for)3.846 E -.4(eg) --.37 G -.45(ro).4 G(und).45 E F0(.).77 E F2(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 206.4 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 .042 -(ground processes are allo)108 218.4 R .042 -(wed to read from or write to the terminal.)-.25 F .042 -(Background processes which attempt to)5.042 F 1.639 -(read from \(write to\) the terminal are sent a)108 230.4 R F3 1.64 -(SIGTTIN \(SIGTT)4.14 F(OU\))-.162 E F0 1.64(signal by the terminal dri) -3.89 F -.15(ve)-.25 G 2.44 -.4(r, w).15 H(hich,).4 E -(unless caught, suspends the process.)108 242.4 Q 1.088 -(If the operating system on which)108 259.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 271.2 S -.301(ping the).8 F F2(suspend)3.141 E F0 .301(character \(typically) -3.571 F F1(^Z)2.801 E F0 2.801(,C)C .301 +-.35 E(fore)108 84 Q 1.964(ground processes are allo)-.15 F 1.964 +(wed to read from or write to the terminal.)-.25 F 1.965 +(Background processes which)6.965 F .759 +(attempt to read from \(write to\) the terminal are sent a)108 96 R/F1 9 +/Times-Bold@0 SF .758(SIGTTIN \(SIGTT)3.258 F(OU\))-.162 E F0 .758 +(signal by the terminal dri)3.008 F -.15(ve)-.25 G -.4(r,).15 G +(which, unless caught, suspends the process.)108 108 Q 1.087 +(If the operating system on which)108 124.8 R/F2 10/Times-Bold@0 SF +(bash)3.587 E F0 1.088(is running supports job control,)3.588 F F2(bash) +3.588 E F0 1.088(contains f)3.588 F 1.088(acilities to use it.)-.1 F -.8 +(Ty)108 136.8 S .302(ping the).8 F/F3 10/Times-Italic@0 SF(suspend)3.142 +E F0 .302(character \(typically)3.572 F F2(^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.143(stopped and returns control to)108 283.2 R F1(bash)4.642 E F0 -7.142(.T)C 2.142(yping the)-7.942 F F2 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\ +F 2.142(stopped and returns control to)108 148.8 R F2(bash)4.642 E F0 +7.142(.T)C 2.142(yping the)-7.942 F F3 2.142(delayed suspend)4.992 F F0 +2.143(character \(typically)5.413 F F2(^Y)4.643 E F0 4.643(,C)C +(ontrol-Y\))-4.643 E .021(causes the process to be stopped when it atte\ mpts to read input from the terminal, and control to be returned)108 -295.2 R(to)108 307.2 Q F1(bash)3.392 E F0 5.892(.T)C .892 +160.8 R(to)108 172.8 Q F2(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 -F1(bg)3.392 E F0 .892(command to continue it in the)3.392 F .894 -(background, the)108 319.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 331.2 Q .949(fect immediately) --.25 F 3.449(,a)-.65 G .948(nd has the additional side ef)-3.449 F .948 +F2(bg)3.392 E F0 .892(command to continue it in the)3.392 F .895 +(background, the)108 184.8 R F2(fg)3.395 E F0 .895 +(command to continue it in the fore)3.395 F .895(ground, or the)-.15 F +F2(kill)3.395 E F0 .894(command to kill it.)3.395 F(A)5.894 E F2(^Z) +3.394 E F0(tak)3.394 E(es)-.1 E(ef)108 196.8 Q .948(fect immediately) +-.25 F 3.448(,a)-.65 G .948(nd has the additional side ef)-3.448 F .948 (fect of causing pending output and typeahead to be dis-)-.25 F(carded.) -108 343.2 Q 1.097(There are a number of w)108 360 R 1.097 +108 208.8 Q 1.098(There are a number of w)108 225.6 R 1.097 (ays to refer to a job in the shell.)-.1 F 1.097(The character)6.097 F -F1(%)3.597 E F0 1.098(introduces a job name.)3.597 F(Job)6.098 E(number) -108 372 Q F2(n)3.13 E F0 .27(may be referred to as)3.01 F F1(%n)2.77 E +F2(%)3.597 E F0 1.097(introduces a job name.)3.597 F(Job)6.097 E(number) +108 237.6 Q F3(n)3.13 E F0 .27(may be referred to as)3.01 F F2(%n)2.77 E F0 5.27(.A)C .27 (job may also be referred to using a pre\214x of the name used to start) -2.5 F .277(it, or using a substring that appears in its command line.) -108 384 R -.15(Fo)5.277 G 2.777(re).15 G(xample,)-2.927 E F1(%ce)2.777 E -F0 .277(refers to a stopped)2.777 F F1(ce)2.777 E F0(job)2.778 E 5.278 -(.I)-.4 G 2.778(fa)-5.278 G .38(pre\214x matches more than one job,)108 -396 R F1(bash)2.88 E F0 .38(reports an error)2.88 F 5.38(.U)-.55 G(sing) --5.38 E F1(%?ce)2.88 E F0 2.88(,o)C 2.88(nt)-2.88 G .38 -(he other hand, refers to an)-2.88 F 2.88(yj)-.15 G(ob)-2.88 E .622 -(containing the string)108 408 R F1(ce)3.122 E F0 .622 -(in its command line.)3.122 F .622 -(If the substring matches more than one job,)5.622 F F1(bash)3.123 E F0 -.623(reports an)3.123 F(error)108 420 Q 5.143(.T)-.55 G .143(he symbols) --5.143 F F1(%%)2.643 E F0(and)2.643 E F1(%+)2.643 E F0 .143 +108 249.6 R -.15(Fo)5.277 G 2.777(re).15 G(xample,)-2.927 E F2(%ce)2.777 +E F0 .277(refers to a stopped)2.777 F F2(ce)2.777 E F0(job)2.777 E 5.277 +(.I)-.4 G 2.777(fa)-5.277 G .38(pre\214x matches more than one job,)108 +261.6 R F2(bash)2.88 E F0 .38(reports an error)2.88 F 5.38(.U)-.55 G +(sing)-5.38 E F2(%?ce)2.88 E F0 2.88(,o)C 2.88(nt)-2.88 G .38 +(he other hand, refers to an)-2.88 F 2.88(yj)-.15 G(ob)-2.88 E .623 +(containing the string)108 273.6 R F2(ce)3.123 E F0 .622 +(in its command line.)3.123 F .622 +(If the substring matches more than one job,)5.622 F F2(bash)3.122 E F0 +.622(reports an)3.122 F(error)108 285.6 Q 5.143(.T)-.55 G .143 +(he symbols)-5.143 F F2(%%)2.643 E F0(and)2.643 E F2(%+)2.643 E F0 .143 (refer to the shell')2.643 F 2.643(sn)-.55 G .143(otion of the)-2.643 F -F2(curr)2.643 E .143(ent job)-.37 F F0 2.643(,w).23 G .143 -(hich is the last job stopped)-2.643 F 1.208(while it w)108 432 R 1.208 -(as in the fore)-.1 F 1.208(ground or started in the background.)-.15 F -(The)6.208 E F2(pr)4.958 E -.15(ev)-.37 G 1.208(ious job).15 F F0 1.209 -(may be referenced using)3.939 F F1<25ad>108 444 Q F0 5.487(.I)C 2.987 -(no)-5.487 G .487(utput pertaining to jobs \(e.g., the output of the) --2.987 F F1(jobs)2.987 E F0 .486(command\), the current job is al)2.987 -F -.1(wa)-.1 G .486(ys \215agged).1 F .15(with a)108 456 R F1(+)2.65 E -F0 2.65(,a)C .15(nd the pre)-2.65 F .15(vious job with a)-.25 F F1 -2.65 E F0 5.15(.A)C .15(single % \(with no accompan)-2.5 F .15 +F3(curr)2.643 E .143(ent job)-.37 F F0 2.643(,w).23 G .143 +(hich is the last job stopped)-2.643 F 1.209(while it w)108 297.6 R +1.209(as in the fore)-.1 F 1.208(ground or started in the background.) +-.15 F(The)6.208 E F3(pr)4.958 E -.15(ev)-.37 G 1.208(ious job).15 F F0 +1.208(may be referenced using)3.938 F F2<25ad>108 309.6 Q F0 5.486(.I)C +2.986(no)-5.486 G .486 +(utput pertaining to jobs \(e.g., the output of the)-2.986 F F2(jobs) +2.987 E F0 .487(command\), the current job is al)2.987 F -.1(wa)-.1 G +.487(ys \215agged).1 F .15(with a)108 321.6 R F2(+)2.65 E F0 2.65(,a)C +.15(nd the pre)-2.65 F .15(vious job with a)-.25 F F22.65 E F0 5.15 +(.A)C .15(single % \(with no accompan)-2.5 F .15 (ying job speci\214cation\) also refers to)-.15 F(the current job)108 -468 Q(.)-.4 E .444 -(Simply naming a job can be used to bring it into the fore)108 484.8 R -(ground:)-.15 E F1(%1)2.943 E F0 .443(is a synon)2.943 F .443(ym for) --.15 F F1 -.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 -496.8 R 3.972(ground. Similarly)-.15 F(,)-.65 E F1 -.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 508.8 Q -.25(va)-.25 G(lent to).25 E F1 -.63(``)2.5 G(bg %1') -.63 E(')-.63 E F0(.)A .131(The shell learns immediately whene)108 525.6 -R -.15(ve)-.25 G 2.631(raj).15 G .131(ob changes state.)-2.631 F -(Normally)5.131 E(,)-.65 E F1(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 537.6 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 F12.658 E F0 .158 -(option to)2.658 F(the)108 549.6 Q F1(set)3.952 E F0 -.2(bu)3.952 G -1.452(iltin command is enabled,).2 F F1(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 F3(SIGCHLD)3.951 E F0(is)3.701 E -.15 -(exe)108 561.6 S(cuted for each child that e).15 E(xits.)-.15 E .032 -(If an attempt to e)108 578.4 R(xit)-.15 E F1(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 F1(checkjobs)2.533 E F0 .033 -(shell option has been enabled)2.533 F 2.02(using the)108 590.4 R F1 -(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 F1(checkjobs)4.519 E F0 2.019 -(option is)4.519 F .458(enabled, lists the jobs and their statuses.)108 -602.4 R(The)5.458 E F1(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 614.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 626.4 Q 2.5(ys)-.15 G(topped jobs are terminated.)-2.5 E/F5 -10.95/Times-Bold@0 SF(PR)72 643.2 Q(OMPTING)-.329 E F0 .644(When e)108 -655.2 R -.15(xe)-.15 G .644(cuting interacti).15 F -.15(ve)-.25 G(ly).15 -E(,)-.65 E F1(bash)3.144 E F0 .645(displays the primary prompt)3.145 F -F3(PS1)3.145 E F0 .645(when it is ready to read a command,)2.895 F 1.826 -(and the secondary prompt)108 667.2 R F3(PS2)4.326 E F0 1.825 -(when it needs more input to complete a command.)4.076 F F1(Bash)6.825 E -F0(allo)4.325 E 1.825(ws these)-.25 F 1.499(prompt strings to be custom\ +333.6 Q(.)-.4 E .443 +(Simply naming a job can be used to bring it into the fore)108 350.4 R +(ground:)-.15 E F2(%1)2.944 E F0 .444(is a synon)2.944 F .444(ym for) +-.15 F F2 -.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 +362.4 R 3.973(ground. Similarly)-.15 F(,)-.65 E F2 -.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 374.4 Q -.25(va)-.25 G(lent to).25 E F2 -.63(``)2.5 G(bg %1') +.63 E(')-.63 E F0(.)A .13(The shell learns immediately whene)108 391.2 R +-.15(ve)-.25 G 2.63(raj).15 G .13(ob changes state.)-2.63 F(Normally) +5.131 E(,)-.65 E F2(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 403.2 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 F22.657 E F0 .157 +(option to)2.657 F(the)108 415.2 Q F2(set)3.951 E F0 -.2(bu)3.951 G +1.451(iltin command is enabled,).2 F F2(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 F1(SIGCHLD)3.952 E F0(is)3.702 E -.15 +(exe)108 427.2 S(cuted for each child that e).15 E(xits.)-.15 E 1.027 +(If an attempt to e)108 444 R(xit)-.15 E F2(bash)3.527 E F0 1.027 +(is made while jobs are stopped, the shell prints a w)3.527 F 1.026 +(arning message.)-.1 F(The)6.026 E F2(jobs)3.526 E F0 .255 +(command may then be used to inspect their status.)108 456 R .255 +(If a second attempt to e)5.255 F .256(xit is made without an interv) +-.15 F(en-)-.15 E(ing command, the shell does not print another w)108 +468 Q(arning, and the stopped jobs are terminated.)-.1 E/F4 10.95 +/Times-Bold@0 SF(PR)72 484.8 Q(OMPTING)-.329 E F0 .645(When e)108 496.8 +R -.15(xe)-.15 G .645(cuting interacti).15 F -.15(ve)-.25 G(ly).15 E(,) +-.65 E F2(bash)3.145 E F0 .645(displays the primary prompt)3.145 F F1 +(PS1)3.145 E F0 .645(when it is ready to read a command,)2.895 F 1.825 +(and the secondary prompt)108 508.8 R F1(PS2)4.325 E F0 1.825 +(when it needs more input to complete a command.)4.075 F F2(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 679.2 R(decoded as follo)108 691.2 Q(ws:)-.25 E F1(\\a)144 -703.2 Q F0(an ASCII bell character \(07\))28.22 E F1(\\d)144 715.2 Q F0 + are)108 520.8 R(decoded as follo)108 532.8 Q(ws:)-.25 E F2(\\a)144 +544.8 Q F0(an ASCII bell character \(07\))28.22 E F2(\\d)144 556.8 Q F0 (the date in "W)27.66 E(eekday Month Date" format \(e.g., "T)-.8 E -(ue May 26"\))-.45 E(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 E(30) -190.95 E 0 Cg EP -%%Page: 31 31 +(ue May 26"\))-.45 E F2(\\D{)144 568.8 Q F3(format)A F2(})A F0(the)180 +580.8 Q F3(format)3.926 E F0 1.426(is passed to)3.926 F F3(strftime) +3.926 E F0 1.427 +(\(3\) and the result is inserted into the prompt string; an)B(empty)180 +592.8 Q F3(format)2.5 E F0 +(results in a locale-speci\214c time representation.)2.5 E +(The braces are required)5 E F2(\\e)144 604.8 Q F0 +(an ASCII escape character \(033\))28.78 E F2(\\h)144 616.8 Q F0 +(the hostname up to the \214rst `.)27.66 E(')-.7 E F2(\\H)144 628.8 Q F0 +(the hostname)25.44 E F2(\\j)144 640.8 Q F0 +(the number of jobs currently managed by the shell)29.89 E F2(\\l)144 +652.8 Q F0(the basename of the shell')30.44 E 2.5(st)-.55 G(erminal de) +-2.5 E(vice name)-.25 E F2(\\n)144 664.8 Q F0(ne)27.66 E(wline)-.25 E F2 +(\\r)144 676.8 Q F0(carriage return)28.78 E F2(\\s)144 688.8 Q F0 +(the name of the shell, the basename of)29.33 E F2($0)2.5 E F0 +(\(the portion follo)2.5 E(wing the \214nal slash\))-.25 E F2(\\t)144 +700.8 Q F0(the current time in 24-hour HH:MM:SS format)29.89 E F2(\\T) +144 712.8 Q F0(the current time in 12-hour HH:MM:SS format)26.55 E +(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(30)199.835 E 0 Cg EP +%%Page: 31 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/F1 10/Times-Bold@0 SF(\\D{)144 84 Q/F2 10/Times-Italic@0 SF -(format)A F1(})A F0(the)180 96 Q F2(format)3.927 E F0 1.427 -(is passed to)3.927 F F2(strftime)3.927 E F0 1.427 -(\(3\) and the result is inserted into the prompt string; an)B(empty)180 -108 Q F2(format)2.5 E F0 -(results in a locale-speci\214c time representation.)2.5 E -(The braces are required)5 E F1(\\e)144 120 Q F0 -(an ASCII escape character \(033\))28.78 E F1(\\h)144 132 Q F0 -(the hostname up to the \214rst `.)27.66 E(')-.7 E F1(\\H)144 144 Q F0 -(the hostname)25.44 E F1(\\j)144 156 Q F0 -(the number of jobs currently managed by the shell)29.89 E F1(\\l)144 -168 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 180 Q F0(ne)27.66 E(wline)-.25 E F1 -(\\r)144 192 Q F0(carriage return)28.78 E F1(\\s)144 204 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 -216 Q F0(the current time in 24-hour HH:MM:SS format)29.89 E F1(\\T)144 -228 Q F0(the current time in 12-hour HH:MM:SS format)26.55 E F1(\\@)144 -240 Q F0(the current time in 12-hour am/pm format)23.92 E F1(\\A)144 252 -Q F0(the current time in 24-hour HH:MM format)26 E F1(\\u)144 264 Q F0 -(the username of the current user)27.66 E F1(\\v)144 276 Q F0(the v) +-.35 E/F1 10/Times-Bold@0 SF(\\@)144 84 Q F0 +(the current time in 12-hour am/pm format)23.92 E F1(\\A)144 96 Q F0 +(the current time in 24-hour HH:MM format)26 E F1(\\u)144 108 Q F0 +(the username of the current user)27.66 E F1(\\v)144 120 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 288 Q F0(the release of)26 E F1(bash)2.5 E F0 2.5(,v)C +144 132 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 300 Q F0(the current w)26 E(orking directory)-.1 E 2.5 +-2.5 E F1(\\w)144 144 Q F0(the current w)26 E(orking directory)-.1 E 2.5 (,w)-.65 G(ith)-2.5 E F1($HOME)2.5 E F0(abbre)2.5 E(viated with a tilde) --.25 E F1(\\W)144 312 Q F0(the basename of the current w)23.22 E +-.25 E F1(\\W)144 156 Q F0(the basename of the current w)23.22 E (orking directory)-.1 E 2.5(,w)-.65 G(ith)-2.5 E F1($HOME)2.5 E F0 -(abbre)2.5 E(viated with a tilde)-.25 E F1(\\!)144 324 Q F0 -(the history number of this command)29.89 E F1(\\#)144 336 Q F0 -(the command number of this command)28.22 E F1(\\$)144 348 Q F0 +(abbre)2.5 E(viated with a tilde)-.25 E F1(\\!)144 168 Q F0 +(the history number of this command)29.89 E F1(\\#)144 180 Q F0 +(the command number of this command)28.22 E F1(\\$)144 192 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 360 Q F2(nnn)A -F0(the character corresponding to the octal number)18.22 E F2(nnn)2.5 E -F1(\\\\)144 372 Q F0 2.5(ab)30.44 G(ackslash)-2.5 E F1(\\[)144 384 Q F0 +(#)2.5 E F0 2.5(,o)C(therwise a)-2.5 E F1($)2.5 E(\\)144 204 Q/F2 10 +/Times-Italic@0 SF(nnn)A F0 +(the character corresponding to the octal number)18.22 E F2(nnn)2.5 E F1 +(\\\\)144 216 Q F0 2.5(ab)30.44 G(ackslash)-2.5 E F1(\\[)144 228 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 396 Q F1(\\])144 408 Q F0(end a sequence of non-printing characters) -29.89 E .12(The command number and the history number are usually dif) -108 424.8 R .119(ferent: the history number of a command is its)-.25 F +180 240 Q F1(\\])144 252 Q F0(end a sequence of non-printing characters) +29.89 E .119(The command number and the history number are usually dif) +108 268.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 436.8 R/F3 9/Times-Bold@0 SF(HIST) -4.085 E(OR)-.162 E(Y)-.315 E F0(belo)108 448.8 Q .541(w\), while the co\ + from the history \214le \(see)108 280.8 R/F3 9/Times-Bold@0 SF(HIST) +4.084 E(OR)-.162 E(Y)-.315 E F0(belo)108 292.8 Q .541(w\), while the co\ mmand 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 460.8 R .546 +(xe)-.15 G .541(cuted during the cur).15 F(-)-.2 E .546 +(rent shell session.)108 304.8 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 -.352(tion, arithmetic e)108 472.8 R .352(xpansion, and quote remo)-.15 F +.351(tion, arithmetic e)108 316.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 .351(shell option \(see the)2.852 -F(description of the)108 484.8 Q F1(shopt)2.5 E F0(command under)2.5 E +(pr)2.852 E(omptv)-.18 E(ars)-.1 E F0 .352(shell option \(see the)2.852 +F(description of the)108 328.8 Q F1(shopt)2.5 E F0(command under)2.5 E F3(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 501.6 Q F0 .15 +-.25 E/F4 10.95/Times-Bold@0 SF(READLINE)72 345.6 Q F0 .151 (This is the library that handles reading input when using an interacti) -108 513.6 R .451 -.15(ve s)-.25 H .151(hell, unless the).15 F F1 -(\255\255noediting)2.651 E F0(option)2.651 E .067(is gi)108 525.6 R -.15 -(ve)-.25 G 2.567(na).15 G 2.566(ts)-2.567 G .066(hell in)-2.566 F -.2 +108 357.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 .066(is gi)108 369.6 R -.15 +(ve)-.25 G 2.566(na).15 G 2.566(ts)-2.566 G .066(hell in)-2.566 F -.2 (vo)-.4 G 2.566(cation. By).2 F(def)2.566 E .066 (ault, the line editing commands are similar to those of emacs.)-.1 F -2.566(Av)5.066 G(i-style)-2.566 E .565(line editing interf)108 537.6 R -.565(ace is also a)-.1 F -.25(va)-.2 G 3.065(ilable. T).25 F 3.065(ot) +2.567(Av)5.067 G(i-style)-2.567 E .566(line editing interf)108 381.6 R +.566(ace is also a)-.1 F -.25(va)-.2 G 3.065(ilable. T).25 F 3.065(ot) -.8 G .565(urn of)-3.065 F 3.065(fl)-.25 G .565 -(ine editing after the shell is running, use the)-3.065 F F1 .566 -(+o emacs)3.066 F F0(or)108 549.6 Q F1(+o vi)2.5 E F0(options to the)2.5 +(ine editing after the shell is running, use the)-3.065 F F1 .565 +(+o emacs)3.065 F F0(or)108 393.6 Q 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 \(see).2 E F3(SHELL B)2.5 E(UIL) -.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1 -(Readline Notation)87 566.4 Q F0 .568 -(In this section, the emacs-style notation is used to denote k)108 578.4 -R -.15(ey)-.1 G(strok).15 E 3.067(es. Control)-.1 F -.1(ke)3.067 G .567 -(ys are denoted by C\255)-.05 F F2 -.1(ke)C(y)-.2 E F0(,)A 1.152 -(e.g., C\255n means Control\255N.)108 590.4 R(Similarly)6.152 E(,)-.65 E -F2(meta)4.032 E F0 -.1(ke)3.913 G 1.153(ys are denoted by M\255)-.05 F -F2 -.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 602.4 S .831 -(yboards without a)-.05 F F2(meta)3.711 E F0 -.1(ke)3.591 G 2.131 -.65 -(y, M)-.05 H.65 E F2(x)A F0 .831(means ESC)3.331 F F2(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 F2(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 614.4 R F2 .599(meta pr)3.099 F -(e\214x)-.37 E F0 5.599(.T)C .599(he combination M\255C\255)-5.599 F F2 -(x)A F0 .599(means ESC\255Control\255)3.099 F F2(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 626.4 Q .3 -.15(ey w)-.1 H +(Readline Notation)87 410.4 Q F0 .567 +(In this section, the emacs-style notation is used to denote k)108 422.4 +R -.15(ey)-.1 G(strok).15 E 3.068(es. Control)-.1 F -.1(ke)3.068 G .568 +(ys are denoted by C\255)-.05 F F2 -.1(ke)C(y)-.2 E F0(,)A 1.153 +(e.g., C\255n means Control\255N.)108 434.4 R(Similarly)6.153 E(,)-.65 E +F2(meta)4.033 E F0 -.1(ke)3.913 G 1.153(ys are denoted by M\255)-.05 F +F2 -.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 446.4 S .83 +(yboards without a)-.05 F F2(meta)3.71 E F0 -.1(ke)3.59 G 2.13 -.65 +(y, M)-.05 H.65 E F2(x)A F0 .83(means ESC)3.33 F F2(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 F2(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 458.4 R F2 .6(meta pr)3.1 F +(e\214x)-.37 E F0 5.6(.T)C .6(he combination M\255C\255)-5.6 F F2(x)A F0 +.599(means ESC\255Control\255)3.099 F F2(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 470.4 Q .3 -.15(ey w)-.1 H (hile pressing the).15 E F2(x)3.27 E F0 -.1(ke)3.03 G -.65(y.)-.05 G(\)) -.65 E .62(Readline commands may be gi)108 643.2 R -.15(ve)-.25 G 3.119 +.65 E .619(Readline commands may be gi)108 487.2 R -.15(ve)-.25 G 3.119 (nn).15 G(umeric)-3.119 E F2(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 655.2 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 +.619(hich normally act as a repeat count.)-3.119 F(Sometimes,)5.62 E(ho) +108 499.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 (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.019(acts in the forw)108 667.2 R 1.018 +(ument to a command that).18 F 1.018(acts in the forw)108 511.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.018 -(ard direction.)-.1 F(Com-)6.018 E(mands whose beha)108 679.2 Q +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 523.2 Q (vior with ar)-.2 E(guments de)-.18 E(viates from this are noted belo) --.25 E -.65(w.)-.25 G .811(When a command is described as)108 696 R F2 +-.25 E -.65(w.)-.25 G .812(When a command is described as)108 540 R F2 (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 .812 -(or possible future retrie)-3.311 F -.25(va)-.25 G 3.312(l\().25 G F2 -(yank-)-3.312 E(ing)108 708 Q F0 2.529(\). The)B .029(killed te)2.529 F +(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 F2 +(yank-)-3.311 E(ing)108 552 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 F2 .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 720 R .567(ed all at once.)-.1 F .567 +-.15 F .567(which can be yank)108 564 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 -(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 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(ring.)108 84 Q/F1 10/Times-Bold@0 SF(Readline Initialization)87 -100.8 Q F0 .091(Readline is customized by putting commands in an initia\ -lization \214le \(the)108 112.8 R/F2 10/Times-Italic@0 SF(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 124.8 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 .197(hen a)-5.196 F 1.034(program which uses the readline library sta\ -rts up, the initialization \214le is read, and the k)108 136.8 R 1.334 --.15(ey b)-.1 H 1.034(indings and).15 F -.25(va)108 148.8 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 160.8 R .737(Lines be)5.737 F .737 +(xt separate the chunks of te)-.15 F .567(xt on the kill)-.15 F(ring.) +108 576 Q F1(Readline Initialization)87 592.8 Q F0 .091(Readline is cus\ +tomized by putting commands in an initialization \214le \(the)108 604.8 +R F2(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 616.8 R .196(en from the v) +-.1 F .196(alue of the)-.25 F F3(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 us\ +es the readline library starts up, the initialization \214le is read, a\ +nd the k)108 628.8 R 1.335 -.15(ey b)-.1 H 1.035(indings and).15 F -.25 +(va)108 640.8 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 652.8 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 .736 -(indicate conditional)3.236 F 2.5(constructs. Other)108 172.8 R +(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 664.8 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 189.6 R .986(ault k)-.1 F +(ariable settings.)-.25 E .987(The def)108 681.6 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 201.6 Q -(wn commands and bindings.)-.25 E -.15(Fo)108 218.4 S 2.5(re).15 G -(xample, placing)-2.65 E(M\255Control\255u: uni)144 235.2 Q -.15(ve)-.25 -G(rsal\255ar).15 E(gument)-.18 E(or)108 247.2 Q(C\255Meta\255u: uni)144 -259.2 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E(into the)108 271.2 -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.261(The follo) -108 288 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.76 E F0(,).73 -E F2(RET)3.76 E F0(,)1.27 E F2(RETURN)108 300 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 316.8 R .209(ws k)-.25 +(programs that use this library may)3.487 F(add their o)108 693.6 Q +(wn commands and bindings.)-.25 E -.15(Fo)108 710.4 S 2.5(re).15 G +(xample, placing)-2.65 E(M\255Control\255u: uni)144 727.2 Q -.15(ve)-.25 +G(rsal\255ar).15 E(gument)-.18 E(GNU Bash-3.2)72 768 Q(2006 Jan 26) +149.845 E(31)199.835 E 0 Cg EP +%%Page: 32 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(or)108 84 Q(C\255Meta\255u: uni)144 96 Q -.15(ve)-.25 G +(rsal\255ar).15 E(gument)-.18 E(into the)108 108 Q/F1 10/Times-Italic@0 +SF(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 F1 +(univer)2.5 E(sal\255ar)-.1 E(gument)-.37 E F0(.).68 E 1.26(The follo) +108 124.8 R 1.261(wing symbolic character names are recognized:)-.25 F +F1 -.4(RU)3.761 G(BOUT).4 E F0(,)1.27 E F1(DEL)3.761 E F0(,).53 E F1 +(ESC)3.761 E F0(,).72 E F1(LFD)3.761 E F0(,).28 E F1(NEWLINE)3.761 E F0 +(,).73 E F1(RET)3.761 E F0(,)1.27 E F1(RETURN)108 136.8 Q F0(,)1.1 E F1 +(SPC)2.5 E F0(,).72 E F1(SP)2.5 E -.3(AC)-.9 G(E).3 E F0 2.5(,a).73 G +(nd)-2.5 E F1 -.5(TA)2.5 G(B).5 E F0(.).27 E .209 +(In addition to command names, readline allo)108 153.6 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 328.8 Q F2(macr)2.5 E(o)-.45 E F0(\).)A F1 -(Readline K)87 345.6 Q(ey Bindings)-.25 E F0 .366 -(The syntax for controlling k)108 357.6 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 165.6 Q F1(macr)2.5 E(o)-.45 E F0(\).)A/F2 +10/Times-Bold@0 SF(Readline K)87 182.4 Q(ey Bindings)-.25 E F0 .366 +(The syntax for controlling k)108 194.4 R .666 -.15(ey b)-.1 H .366 +(indings in the).15 F F1(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 .382(command or the te)108 369.6 R .383(xt of a macro and a k) +5.366 F .383(command or the te)108 206.4 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 381.6 R 3.353(ow)-.1 G .853 +(\214ed in one of tw)108 218.4 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 F1(Meta\255)3.353 E F0(or)3.353 E F1(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 393.6 Q 1.541(When using the form)108 410.4 R F1 --.1(ke)4.041 G(yname).1 E F0(:)A F2(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 422.4 R(or e)-.15 E(xample:)-.15 E -(Control-u: uni)144 446.4 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 -E(Meta-Rubout: backw)144 458.4 Q(ard-kill-w)-.1 E(ord)-.1 E -(Control-o: "> output")144 470.4 Q .699(In the abo)108 487.2 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 499.2 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 +(ey)-.1 G(sequence.)108 230.4 Q 1.542(When using the form)108 247.2 R F2 +-.1(ke)4.042 G(yname).1 E F0(:)A F1(function\255name).833 E F0(or)4.042 +E F1(macr)4.042 E(o)-.45 E F0(,)A F1 -.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 259.2 R(or e)-.15 E(xample:)-.15 E +(Control-u: uni)144 283.2 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 +E(Meta-Rubout: backw)144 295.2 Q(ard-kill-w)-.1 E(ord)-.1 E +(Control-o: "> output")144 307.2 Q .698(In the abo)108 324 R .998 -.15 +(ve ex)-.15 H(ample,).15 E F1(C\255u)3.038 E F0 .698 +(is bound to the function)3.448 F F2(uni)3.198 E -.1(ve)-.1 G +(rsal\255ar).1 E(gument)-.1 E F0(,)A F1(M\255DEL)3.878 E F0 .698 +(is bound to the func-)3.728 F(tion)108 336 Q F2(backward\255kill\255w) +2.759 E(ord)-.1 E F0 2.759(,a)C(nd)-2.759 E F1(C\255o)2.599 E F0 .258 +(is bound to run the macro e)2.939 F .258 (xpressed on the right hand side \(that is, to)-.15 F(insert the te)108 -511.2 Q(xt)-.15 E/F4 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 528 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 540 R 1.584 -.15(ey s)-.1 H 1.284(equence may\ - be speci\214ed by placing the sequence within double quotes.).15 F -(Some)6.284 E .386(GNU Emacs style k)108 552 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 564 Q("\\C\255u": uni)144 588 Q -.15(ve)-.25 G -(rsal\255ar).15 E(gument)-.18 E -("\\C\255x\\C\255r": re\255read\255init\255\214le)144 600 Q -("\\e[11~": "Function K)144 612 Q .3 -.15(ey 1)-.25 H(").15 E .314 -(In this e)108 628.8 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 -.315(is bound to the func-)3.545 F(tion)108 640.8 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 +348 Q(xt)-.15 E/F3 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 364.8 R F2("k)2.555 +E(eyseq")-.1 E F0(:)A F1(function\255name).833 E F0(or)2.555 E F1(macr) +2.555 E(o)-.45 E F0(,)A F2 -.1(ke)2.555 G(yseq).1 E F0(dif)2.556 E .056 +(fers from)-.25 F F2 -.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 376.8 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 388.8 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 400.8 Q("\\C\255u": uni)144 424.8 Q -.15(ve) +-.25 G(rsal\255ar).15 E(gument)-.18 E +("\\C\255x\\C\255r": re\255read\255init\255\214le)144 436.8 Q +("\\e[11~": "Function K)144 448.8 Q .3 -.15(ey 1)-.25 H(").15 E .315 +(In this e)108 465.6 R(xample,)-.15 E F1(C\255u)2.655 E F0 .315(is ag) +3.065 F .315(ain bound to the function)-.05 F F2(uni)2.815 E -.1(ve)-.1 +G(rsal\255ar).1 E(gument)-.1 E F0(.)A F1 .315(C\255x C\255r)5.155 F F0 +.314(is bound to the func-)3.544 F(tion)108 477.6 Q F2 -.18(re)2.5 G +.18 E(ead\255init\255\214le)-.18 E F0 2.5(,a)C(nd)-2.5 E F1 +(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 657.6 Q F1 -<5c43ad>144 669.6 Q F0(control pre\214x)20.3 E F1<5c4dad>144 681.6 Q F0 -(meta pre\214x)18.08 E F1(\\e)144 693.6 Q F0(an escape character)28.78 E -F1(\\\\)144 705.6 Q F0(backslash)30.44 E F1(\\")144 717.6 Q F0 -(literal ")27.67 E(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 E(32) -190.95 E 0 Cg EP -%%Page: 33 33 +(The full set of GNU Emacs style escape sequences is)108 494.4 Q F2 +<5c43ad>144 506.4 Q F0(control pre\214x)20.3 E F2<5c4dad>144 518.4 Q F0 +(meta pre\214x)18.08 E F2(\\e)144 530.4 Q F0(an escape character)28.78 E +F2(\\\\)144 542.4 Q F0(backslash)30.44 E F2(\\")144 554.4 Q F0 +(literal ")27.67 E F2<5c08>144 566.4 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 583.2 Q -.25(va)-.2 G(ilable:).25 E F2(\\a)144 595.2 Q +F0(alert \(bell\))28.22 E F2(\\b)144 607.2 Q F0(backspace)27.66 E F2 +(\\d)144 619.2 Q F0(delete)27.66 E F2(\\f)144 631.2 Q F0(form feed)29.89 +E F2(\\n)144 643.2 Q F0(ne)27.66 E(wline)-.25 E F2(\\r)144 655.2 Q F0 +(carriage return)28.78 E F2(\\t)144 667.2 Q F0(horizontal tab)29.89 E F2 +(\\v)144 679.2 Q F0 -.15(ve)28.22 G(rtical tab).15 E F2(\\)144 691.2 Q +F1(nnn)A F0(the eight-bit character whose v)18.22 E(alue is the octal v) +-.25 E(alue)-.25 E F1(nnn)2.5 E F0(\(one to three digits\))2.5 E F2(\\x) +144 703.2 Q F1(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 F1(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 720 R 1.141(xt of a macro, single or double q\ +uotes must be used to indicate a macro de\214nition.)-.15 F +(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(32)199.835 E 0 Cg EP +%%Page: 33 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<5c08>144 84 Q F0(literal \010)30.44 E(In a\ -ddition to the GNU Emacs style escape sequences, a second set of backsl\ -ash escapes is a)108 100.8 Q -.25(va)-.2 G(ilable:).25 E F1(\\a)144 -112.8 Q F0(alert \(bell\))28.22 E F1(\\b)144 124.8 Q F0(backspace)27.66 -E F1(\\d)144 136.8 Q F0(delete)27.66 E F1(\\f)144 148.8 Q F0(form feed) -29.89 E F1(\\n)144 160.8 Q F0(ne)27.66 E(wline)-.25 E F1(\\r)144 172.8 Q -F0(carriage return)28.78 E F1(\\t)144 184.8 Q F0(horizontal tab)29.89 E -F1(\\v)144 196.8 Q F0 -.15(ve)28.22 G(rtical tab).15 E F1(\\)144 208.8 Q -/F2 10/Times-Italic@0 SF(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 220.8 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.142(When entering the te)108 -237.6 R 1.141(xt of a macro, single or double quotes must be used to in\ -dicate a macro de\214nition.)-.15 F .089(Unquoted te)108 249.6 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 261.6 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 278.4 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 290.4 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 302.4 Q/F3 9/Times-Bold@0 SF(SHELL B)2.5 E +-.35 E .09(Unquoted te)108 84 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 96 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 10/Times-Bold@0 SF(Bash)108 112.8 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 124.8 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 136.8 Q/F2 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 319.2 Q(ariables)-.92 E F0 .044(Readline has v)108 331.2 +(Readline V)87 153.6 Q(ariables)-.92 E F0 .043(Readline has v)108 165.6 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.553 E(tr)108 343.2 Q(c)-.37 E -F0(\214le with a statement of the form)2.81 E F1(set)144 360 Q F2 -(variable\255name value)2.5 E F0 .79(Except where noted, readline v)108 -376.8 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 .449(nized v)108 388.8 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 400.8 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 .468(he v)-5.468 F .468 -(ariables and their def)-.25 F(ault)-.1 E -.25(va)108 412.8 S(lues are:) -.25 E F1(bell\255style \(audible\))108 429.6 Q F0 .011 -(Controls what happens when readline w)144 441.6 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 453.6 R .94(If set to)5.94 F F1(visible)3.44 E F0 +(riable may be set in the).25 F/F3 10/Times-Italic@0 SF(inpu-)2.554 E +(tr)108 177.6 Q(c)-.37 E F0(\214le with a statement of the form)2.81 E +F1(set)144 194.4 Q F3(variable\255name value)2.5 E F0 .79 +(Except where noted, readline v)108 211.2 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 223.2 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 235.2 Q -.15(ve)-.25 G .468 +(\), 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 +247.2 S(lues are:).25 E F1(bell\255style \(audible\))108 264 Q F0 .01 +(Controls what happens when readline w)144 276 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 288 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 465.6 Q 2.5(sb)-.55 G(ell.) --2.5 E F1(bind\255tty\255special\255chars \(On\))108 477.6 Q F0 .056 -(If set to)144 489.6 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 501.6 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 513.6 Q(`#')-.63 E('\)) --.63 E F0 .884(The string that is inserted when the readline)144 525.6 R -F1(insert\255comment)3.385 E F0 .885(command is e)3.385 F -.15(xe)-.15 G -3.385(cuted. This).15 F(com-)3.385 E(mand is bound to)144 537.6 Q F1 +(readline attempts to ring the terminal')144 300 Q 2.5(sb)-.55 G(ell.) +-2.5 E F1(bind\255tty\255special\255chars \(On\))108 312 Q F0 .055 +(If set to)144 324 R F1(On)2.555 E F0 2.555(,r)C .056(eadline attempts \ +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 336 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 348 Q(`#')-.63 E('\))-.63 E +F0 .885(The string that is inserted when the readline)144 360 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 372 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 549.6 Q -(e\255case \(Off\))-.18 E F0(If set to)144 561.6 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\255query\255items \(100\))108 573.6 Q F0 .53 -(This determines when the user is queried about vie)144 585.6 R .529 -(wing the number of possible completions gen-)-.25 F .56(erated by the) -144 597.6 R F1(possible\255completions)3.06 E F0 3.06(command. It)3.06 F -.561(may be set to an)3.061 F 3.061(yi)-.15 G(nte)-3.061 E .561(ger v) --.15 F .561(alue greater than or)-.25 F .783(equal to zero.)144 609.6 R +(in vi command mode.)2.5 E F1(completion\255ignor)108 384 Q +(e\255case \(Off\))-.18 E F0(If set to)144 396 Q F1(On)2.5 E F0 2.5(,r)C +(eadline performs \214lename matching and completion in a case\255insen\ +siti)-2.5 E .3 -.15(ve f)-.25 H(ashion.).05 E F1 +(completion\255query\255items \(100\))108 408 Q F0 .529 +(This determines when the user is queried about vie)144 420 R .53 +(wing the number of possible completions gen-)-.25 F .561(erated by the) +144 432 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 444 R .783(If the number of possible completions is greater than or equal to \ -the v)5.783 F .782(alue of this)-.25 F -.25(va)144 621.6 S .237 +the v)5.782 F .783(alue of this)-.25 F -.25(va)144 456 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 633.6 Q F1(con)108 -645.6 Q -.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .613(If set to)144 657.6 -R F1(On)3.113 E F0 3.113(,r)C .613(eadline will con)-3.113 F -.15(ve)-.4 -G .613(rt characters with the eighth bit set to an ASCII k).15 F .912 --.15(ey s)-.1 H .612(equence by).15 F .541 +.237(re simply listed)-2.737 F(on the terminal.)144 468 Q F1(con)108 480 +Q -.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .612(If set to)144 492 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 669.6 R .541(fect, using escape as the)-.25 F F2 .542(meta pr)3.042 -F(e-)-.37 E<8c78>144 681.6 Q F0(\).)A F1(disable\255completion \(Off\)) -108 693.6 Q F0 .038(If set to)144 705.6 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 504 R .541(fect, using escape as the)-.25 F F3 .541(meta pr)3.041 F +(e-)-.37 E<8c78>144 516 Q F0(\).)A F1(disable\255completion \(Off\))108 +528 Q F0 .038(If set to)144 540 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 717.6 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F1(self-insert)2.5 E -F0(.)A(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 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/F1 10/Times-Bold@0 SF(editing\255mode \(emacs\))108 84 Q F0 .252 -(Controls whether readline be)144 96 R .253(gins with a set of k)-.15 F -.553 -.15(ey b)-.1 H .253(indings similar to).15 F/F2 10/Times-Italic@0 -SF(emacs)2.753 E F0(or)2.753 E F2(vi)2.753 E F0(.)A F1(editing\255mode) -5.253 E F0(can be set to either)144 108 Q F1(emacs)2.5 E F0(or)2.5 E F1 -(vi)2.5 E F0(.)A F1(enable\255k)108 120 Q(eypad \(Off\))-.1 E F0 .893 -(When set to)144 132 R F1(On)3.393 E F0 3.393(,r)C .893 +144 552 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 564 Q F0 .253 +(Controls whether readline be)144 576 R .253(gins with a set of k)-.15 F +.553 -.15(ey b)-.1 H .253(indings similar to).15 F F3(emacs)2.752 E F0 +(or)2.752 E F3(vi)2.752 E F0(.)A F1(editing\255mode)5.252 E F0 +(can be set to either)144 588 Q F1(emacs)2.5 E F0(or)2.5 E F1(vi)2.5 E +F0(.)A F1(enable\255k)108 600 Q(eypad \(Off\))-.1 E F0 .892(When set to) +144 612 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 144 Q 2.5(wk)-.25 G -.15(ey)-2.6 -G(s.).15 E F1(expand\255tilde \(Off\))108 156 Q F0(If set to)144 168 Q +.893(pad when it is called.).15 F .893(Some sys-)5.893 F +(tems need this to enable the arro)144 624 Q 2.5(wk)-.25 G -.15(ey)-2.6 +G(s.).15 E F1(expand\255tilde \(Off\))108 636 Q F0(If set to)144 648 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 180 Q(eser)-.18 E -.1(ve)-.1 G -(\255point \(Off\)).1 E F0 1.492(If set to)144 192 R F1(on)3.992 E F0 -3.992(,t)C 1.493(he history code attempts to place point at the same lo\ -cation on each history line)-3.992 F(retrie)144 204 Q -.15(ve)-.25 G 2.5 +-.1 E F1(history\255pr)108 660 Q(eser)-.18 E -.1(ve)-.1 G +(\255point \(Off\)).1 E F0 1.493(If set to)144 672 R F1(on)3.993 E F0 +3.993(,t)C 1.493(he history code attempts to place point at the same lo\ +cation on each history line)-3.993 F(retrie)144 684 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(horizontal\255scr)108 216 Q -(oll\255mode \(Off\))-.18 E F0 .449(When set to)144 228 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 +(or)2.5 E F1(next-history)2.5 E F0(.)A F1(horizontal\255scr)108 696 Q +(oll\255mode \(Off\))-.18 E F0 .448(When set to)144 708 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 240 R(w)-.25 E(line.)144 252 Q F1(input\255meta \(Off\))108 264 -Q F0 .228(If set to)144 276 R F1(On)2.728 E F0 2.728(,r)C .227(eadline \ + ne)144 720 R(w)-.25 E(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(33) +199.835 E 0 Cg EP +%%Page: 34 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(line.)144 84 Q/F1 10/Times-Bold@0 SF(input\255meta \(Off\))108 96 +Q F0 .227(If set to)144 108 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 288 R -.05 +rom the char)-2.727 F(-)-.2 E .957(acters it reads\), re)144 120 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 300 Q(ym for this v)-.15 E(ariable.)-.25 E F1(isear)108 312 Q +.956(The name)5.956 F F1(meta\255\215ag)3.456 E F0 .956(is a)3.456 F +(synon)144 132 Q(ym for this v)-.15 E(ariable.)-.25 E F1(isear)108 144 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 324 R -.15(xe)-.15 G(cut-).15 E .934 -(ing the character as a command.)144 336 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 348 Q F2 -(C\255J)2.5 E F0(will terminate an incremental search.)2.5 E F1 -.1(ke) -108 360 S(ymap \(emacs\)).1 E F0 2.021(Set the current readline k)144 -372 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 384 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 396 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 156 R -.15(xe)-.15 G(cut-).15 E .935 +(ing the character as a command.)144 168 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 180 Q F2(C\255J)2.5 E F0(will terminate an incremental search.) +2.5 E F1 -.1(ke)108 192 S(ymap \(emacs\)).1 E F0 2.02 +(Set the current readline k)144 204 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 216 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 228 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 408 Q(fects the def)-.25 -E(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F1(mark\255dir)108 420 Q -(ectories \(On\))-.18 E F0(If set to)144 432 Q F1(On)2.5 E F0 2.5(,c)C +(editing\255mode)4.044 E F0(also)4.044 E(af)144 240 Q(fects the def)-.25 +E(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F1(mark\255dir)108 252 Q +(ectories \(On\))-.18 E F0(If set to)144 264 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 444 Q F0(If set to)144 -456 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 276 Q F0(If set to)144 +288 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 468 Q(ed\255dir)-.1 E -(ectories \(Off\))-.18 E F0 .175(If set to)144 480 R F1(On)2.675 E F0 +(*)A F0(\).)A F1(mark\255symlink)108 300 Q(ed\255dir)-.1 E +(ectories \(Off\))-.18 E F0 .175(If set to)144 312 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 492 +-.15(ve a s)-.2 H .175(lash appended \(sub-).15 F(ject to the v)144 324 Q(alue of)-.25 E F1(mark\255dir)2.5 E(ectories)-.18 E F0(\).)A F1 -(match\255hidden\255\214les \(On\))108 504 Q F0 .193(This v)144 516 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 1.023 +(match\255hidden\255\214les \(On\))108 336 Q F0 .192(This v)144 348 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 1.024 (\214les\) when performing \214lename completion, unless the leading `.) -144 528 R 3.523('i)-.7 G 3.523(ss)-3.523 G 1.024 -(upplied by the user in the)-3.523 F(\214lename to be completed.)144 540 -Q 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 eig\ -hth bit set directly rather than as a meta-)-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 +144 360 R 3.523('i)-.7 G 3.523(ss)-3.523 G 1.023 +(upplied by the user in the)-3.523 F(\214lename to be completed.)144 372 +Q F1(output\255meta \(Off\))108 384 Q F0 .506(If set to)144 396 R F1(On) +3.006 E F0 3.006(,r)C .507(eadline will display characters with the eig\ +hth bit set directly rather than as a meta-)-3.006 F(pre\214x)144 408 Q +(ed escape sequence.)-.15 E F1(page\255completions \(On\))108 420 Q F0 +.809(If set to)144 432 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 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(sho)108 660 Q(w\255all\255if\255ambiguous \(Off\))-.1 E F0 .477 -(This alters the def)144 672 R .477(ault beha)-.1 F .477 -(vior of the completion functions.)-.2 F .478(If set to)5.478 F F1(on) -2.978 E F0 2.978(,w)C .478(ords which ha)-3.078 F .778 -.15(ve m)-.2 H +-3.308 F(tions at a time.)144 444 Q F1 +(print\255completions\255horizontally \(Off\))108 456 Q F0 1.318 +(If set to)144 468 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 480 Q 2.5(,r)-.4 G(ather than do)-2.5 E(wn the screen.)-.25 +E F1(sho)108 492 Q(w\255all\255if\255ambiguous \(Off\))-.1 E F0 .478 +(This alters the def)144 504 R .478(ault beha)-.1 F .478 +(vior of the completion functions.)-.2 F .477(If set to)5.477 F F1(on) +2.977 E F0 2.977(,w)C .477(ords which ha)-3.077 F .777 -.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 684 R(bell.)144 696 Q -(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 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/F1 10/Times-Bold@0 SF(sho)108 84 Q -(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.345 -(This alters the def)144 96 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 108 Q(w\255all\255if\255ambiguous)-.1 E F0 6.923(.I)C -4.423(fs)-6.923 G 1.923(et to)-4.423 F F1(on)4.423 E F0 4.423(,w)C 1.923 -(ords which ha)-4.523 F 2.222 -.15(ve m)-.2 H 1.922 -(ore than one possible completion).15 F 1.039(without an)144 120 R 3.539 +isted immediately instead of ringing the)144 516 R(bell.)144 528 Q F1 +(sho)108 540 Q(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.346 +(This alters the def)144 552 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 564 Q(w\255all\255if\255ambiguous)-.1 E F0 6.922(.I)C +4.422(fs)-6.922 G 1.922(et to)-4.422 F F1(on)4.422 E F0 4.422(,w)C 1.922 +(ords which ha)-4.522 F 2.223 -.15(ve m)-.2 H 1.923 +(ore than one possible completion).15 F 1.04(without an)144 576 R 3.54 (yp)-.15 G 1.039 -(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 132 Q F1 -(visible\255stats \(Off\))108 144 Q F0 .847(If set to)144 156 R F1(On) +(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 588 Q F1 +(visible\255stats \(Off\))108 600 Q F0 .846(If set to)144 612 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 10/Times-Italic@0 SF -(stat)3.346 E F0 .846(\(2\) is appended to the \214lename)B -(when listing possible completions.)144 168 Q F1 -(Readline Conditional Constructs)87 184.8 Q F0 .05 -(Readline implements a f)108 196.8 R .05(acility similar in spirit to t\ -he conditional compilation features of the C preprocessor)-.1 F .097 -(which allo)108 208.8 R .097(ws k)-.25 F .396 -.15(ey b)-.1 H .096 +(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 624 Q F1 +(Readline Conditional Constructs)87 640.8 Q F0 .05 +(Readline implements a f)108 652.8 R .05(acility similar in spirit to t\ +he conditional compilation features of the C preprocessor)-.1 F .096 +(which allo)108 664.8 R .096(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 220.8 Q -.15(ve)-.25 G 2.5 -(su).15 G(sed.)-2.5 E F1($if)108 237.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 249.6 R .477(The te)5.477 F .477 +(ariable settings to be performed as the result of tests.)-.25 F .097 +(There are four parser)5.096 F(directi)108 676.8 Q -.15(ve)-.25 G 2.5 +(su).15 G(sed.)-2.5 E F1($if)108 693.6 Q F0(The)24.89 E F1($if)2.963 E +F0 .463(construct allo)2.963 F .462(ws bindings to be made based on the\ + editing mode, the terminal being used,)-.25 F .477 +(or the application using readline.)144 705.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 261.6 Q F1(mode)144 278.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 +(are required to isolate it.)144 717.6 Q(GNU Bash-3.2)72 768 Q +(2006 Jan 26)149.845 E(34)199.835 E 0 Cg EP +%%Page: 35 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(mode)144 84 Q F0(The)12.67 E F1(mode=)3.712 +E F0 1.212(form of the)3.712 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 290.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 302.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 314.4 -Q F1(term)144 331.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 343.2 R +(mode. This)180 96 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 108 R/F2 10/Times-Italic@0 SF +(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 120 Q F1(term)144 136.8 Q F0(The)15.46 E F1 +(term=)3.196 E F0 .696 +(form may be used to include terminal-speci\214c k)3.196 F .996 -.15 +(ey b)-.1 H .697(indings, perhaps to bind).15 F .654(the k)180 148.8 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 355.2 Q F1(=)3.232 -E F0 .732(is tested ag)3.232 F .732(ainst the both full name of the ter\ +(wo)3.154 G .654(rd on the right side of).1 F(the)180 160.8 Q F1(=)3.231 +E F0 .731(is tested ag)3.231 F .732(ainst the both full name of the ter\ minal and the portion of the terminal)-.05 F(name before the \214rst)180 -367.2 Q F12.5 E F0 5(.T)C(his allo)-5 E(ws)-.25 E F2(sun)2.84 E F0 +172.8 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 384 Q F0(The)180 396 -Q F1(application)3.003 E F0 .503 +2.5(,f).77 G(or instance.)-2.5 E F1(application)144 189.6 Q F0(The)180 +201.6 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 -408 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 -420 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 432 R -.15(Fo)5.397 G 2.896(ri).15 G .396 +213.6 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 .501(particular v) +180 225.6 R 3.001(alue. This)-.25 F .501(could be used to bind k)3.001 F +.801 -.15(ey s)-.1 H .5(equences to functions useful for a spe-).15 F +.396(ci\214c program.)180 237.6 R -.15(Fo)5.396 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 444 Q -(vious w)-.25 E(ord in Bash:)-.1 E F1($if)180 468 Q F0(Bash)2.5 E 2.5 -(#Q)180 480 S(uote the current or pre)-2.5 E(vious w)-.25 E(ord)-.1 E -("\\C\255xq": "\\eb\\"\\ef\\"")180 492 Q F1($endif)180 504 Q($endif)108 -520.8 Q F0(This command, as seen in the pre)9.33 E(vious e)-.25 E +(ey s)-.1 H .397(equence that quotes the).15 F(current or pre)180 249.6 +Q(vious w)-.25 E(ord in Bash:)-.1 E F1($if)180 273.6 Q F0(Bash)2.5 E 2.5 +(#Q)180 285.6 S(uote the current or pre)-2.5 E(vious w)-.25 E(ord)-.1 E +("\\C\255xq": "\\eb\\"\\ef\\"")180 297.6 Q F1($endif)180 309.6 Q($endif) +108 326.4 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 537.6 Q F0(Commands in this branch of the)15.45 E F1($if)2.5 E F0 +108 343.2 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 554.4 Q F0 .356 -(This directi)144 566.4 R .656 -.15(ve t)-.25 H(ak).15 E .356 -(es a single \214lename as an ar)-.1 F .357 +(cuted if the test f).15 E(ails.)-.1 E F1($include)108 360 Q F0 .357 +(This directi)144 372 R .657 -.15(ve t)-.25 H(ak).15 E .357 +(es a single \214lename as an ar)-.1 F .356 (gument and reads commands and bindings from that)-.18 F 2.5(\214le. F) -144 578.4 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)-.25 E .3 +144 384 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 F1 -($include)144 602.4 Q F2(/etc/inputr)5.833 E(c)-.37 E F1(Sear)87 619.2 Q -(ching)-.18 E F0 .835(Readline pro)108 631.2 R .835 +($include)144 408 Q F2(/etc/inputr)5.833 E(c)-.37 E F1(Sear)87 424.8 Q +(ching)-.18 E F0 .834(Readline pro)108 436.8 R .834 (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 643.2 Q +/F3 9/Times-Bold@0 SF(HIST)3.335 E(OR)-.162 E(Y)-.315 E F0(belo)3.085 E +.835(w\) for lines)-.25 F(containing a speci\214ed string.)108 448.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 660 R .697 +E .698(Incremental searches be)108 465.6 R .698 (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 672 R .112 +.697(As each character of the)5.697 F .112 +(search string is typed, readline displays the ne)108 477.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 684 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 696 R .224(alue of the)-.25 F F1(isear)2.724 E(ch-terminators)-.18 E -F0 -.25(va)2.724 G .224 +E 5.113(.A)-.55 G(n)-5.113 E .542 +(incremental search requires only as man)108 489.6 R 3.042(yc)-.15 G +.542(haracters as needed to \214nd the desired history entry)-3.042 F +5.541(.T)-.65 G .541(he char)-5.541 F(-)-.2 E .224 +(acters present in the v)108 501.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 708 R .66(ariable has not been assigned a v)-.25 F .66 +(If that v)108 513.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 720 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(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 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(terminated, the history entry containing the search string becom\ -es the current line.)108 84 Q 2.938 -.8(To \214)108 100.8 T 1.339(nd ot\ -her matching entries in the history list, type Control-S or Control-R a\ -s appropriate.).8 F 1.339(This will)6.339 F .675(search backw)108 112.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 124.8 R .474 -.15(ey s)-.1 +F .096(mental search.)108 525.6 R .096(Control-G will abort an incremen\ +tal search and restore the original line.)5.096 F .097 +(When the search is)5.097 F(terminated, the history entry containing th\ +e search string becomes the current line.)108 537.6 Q 2.939 -.8(To \214) +108 554.4 T 1.339(nd other matching entries in the history list, type C\ +ontrol-S or Control-R as appropriate.).8 F 1.338(This will)6.338 F .674 +(search backw)108 566.4 R .674(ard or forw)-.1 F .674 +(ard in the history for the ne)-.1 F .675 +(xt entry matching the search string typed so f)-.15 F(ar)-.1 E 5.675 +(.A)-.55 G -.15(ny)-5.675 G .175(other k)108 578.4 R .475 -.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 136.8 R/F1 10/Times-Italic@0 SF(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 148.8 Q .653 -(Readline remembers the last incremental search string.)108 165.6 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 177.6 Q 2.5(ws)-.25 G +F -.15(xe)-.15 G .174(cute that command.).15 F -.15(Fo)5.174 G(r).15 E +.54(instance, a)108 590.4 R F2(ne)3.04 E(wline)-.15 E F0 .541 +(will terminate the search and accept the line, thereby e)3.04 F -.15 +(xe)-.15 G .541(cuting the command from the).15 F(history list.)108 +602.4 Q .653(Readline remembers the last incremental search string.)108 +619.2 R .653(If tw)5.653 F 3.153(oC)-.1 G .653 +(ontrol-Rs are typed without an)-3.153 F 3.152(yi)-.15 G(nterv)-3.152 E +(en-)-.15 E(ing characters de\214ning a ne)108 631.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 194.4 R(The searc\ -h string may be typed by the user or be part of the contents of the cur\ -rent line.)108 206.4 Q/F2 10/Times-Bold@0 SF(Readline Command Names)87 -223.2 Q F0 1.391(The follo)108 235.2 R 1.391 +re starting to search for matching history lines.)108 648 R(The search \ +string may be typed by the user or be part of the contents of the curre\ +nt line.)108 660 Q F1(Readline Command Names)87 676.8 Q F0 1.392 +(The follo)108 688.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 247.2 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 259.2 Q F1(point)3.41 E -F0 .91(refers to the current cursor position, and)3.41 F F1(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 F2(set\255mark)108 271.2 Q F0 2.5 +3.891(ya)-.15 G(re)-3.891 E 2.621(bound. Command)108 700.8 R .121 +(names without an accompan)2.621 F .121(ying k)-.15 F .421 -.15(ey s)-.1 +H .122(equence are unbound by def).15 F 2.622(ault. In)-.1 F .122 +(the follo)2.622 F(wing)-.25 E(descriptions,)108 712.8 Q F2(point)3.411 +E F0 .911(refers to the current cursor position, and)3.411 F F2(mark) +3.411 E F0 .91(refers to a cursor position sa)3.411 F -.15(ve)-.2 G 3.41 +(db).15 G 3.41(yt)-3.41 G(he)-3.41 E F1(set\255mark)108 724.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 F1 -.37(re) -2.5 G(gion)-.03 E F0(.)A F2(Commands f)87 288 Q(or Mo)-.25 E(ving)-.1 E -(beginning\255of\255line \(C\255a\))108 300 Q F0(Mo)144 312 Q .3 -.15 -(ve t)-.15 H 2.5(ot).15 G(he start of the current line.)-2.5 E F2 -(end\255of\255line \(C\255e\))108 324 Q F0(Mo)144 336 Q .3 -.15(ve t) --.15 H 2.5(ot).15 G(he end of the line.)-2.5 E F2 -.25(fo)108 348 S -(rward\255char \(C\255f\)).25 E F0(Mo)144 360 Q .3 -.15(ve f)-.15 H(orw) -.15 E(ard a character)-.1 E(.)-.55 E F2(backward\255char \(C\255b\))108 -372 Q F0(Mo)144 384 Q .3 -.15(ve b)-.15 H(ack a character).15 E(.)-.55 E -F2 -.25(fo)108 396 S(rward\255w).25 E(ord \(M\255f\))-.1 E F0(Mo)144 408 -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 +(xt between the point and mark is referred to as the)-.15 E F2 -.37(re) +2.5 G(gion)-.03 E F0(.)A(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(35) +199.835 E 0 Cg EP +%%Page: 36 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(Commands f)87 84 Q(or Mo)-.25 E(ving)-.1 E +(beginning\255of\255line \(C\255a\))108 96 Q F0(Mo)144 108 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 120 Q F0(Mo)144 132 Q .3 -.15(ve t) +-.15 H 2.5(ot).15 G(he end of the line.)-2.5 E F1 -.25(fo)108 144 S +(rward\255char \(C\255f\)).25 E F0(Mo)144 156 Q .3 -.15(ve f)-.15 H(orw) +.15 E(ard a character)-.1 E(.)-.55 E F1(backward\255char \(C\255b\))108 +168 Q F0(Mo)144 180 Q .3 -.15(ve b)-.15 H(ack a character).15 E(.)-.55 E +F1 -.25(fo)108 192 S(rward\255w).25 E(ord \(M\255f\))-.1 E F0(Mo)144 204 +Q .822 -.15(ve f)-.15 H(orw).15 E .522(ard to the end of the ne)-.1 F +.523(xt w)-.15 F 3.023(ord. W)-.1 F .523 (ords are composed of alphanumeric characters \(let-)-.8 F -(ters and digits\).)144 420 Q F2(backward\255w)108 432 Q(ord \(M\255b\)) --.1 E F0(Mo)144 444 Q 1.71 -.15(ve b)-.15 H 1.41 +(ters and digits\).)144 216 Q F1(backward\255w)108 228 Q(ord \(M\255b\)) +-.1 E F0(Mo)144 240 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 456 Q F2(clear\255scr)108 468 Q -(een \(C\255l\))-.18 E F0 .993(Clear the screen lea)144 480 R .993 +(characters \(letters and digits\).)144 252 Q F1(clear\255scr)108 264 Q +(een \(C\255l\))-.18 E F0 .993(Clear the screen lea)144 276 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 492 Q F2 -.18(re)108 504 +(current line without clearing the screen.)144 288 Q F1 -.18(re)108 300 S(draw\255curr).18 E(ent\255line)-.18 E F0(Refresh the current line.)144 -516 Q F2(Commands f)87 532.8 Q(or Manipulating the History)-.25 E -(accept\255line \(Newline, Retur)108 544.8 Q(n\))-.15 E F0 .158 -(Accept the line re)144 556.8 R -.05(ga)-.15 G .158 +312 Q F1(Commands f)87 328.8 Q(or Manipulating the History)-.25 E +(accept\255line \(Newline, Retur)108 340.8 Q(n\))-.15 E F0 .159 +(Accept the line re)144 352.8 R -.05(ga)-.15 G .159 (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 568.8 R/F3 9/Times-Bold@0 SF +5.158 F 2.658(,a)-.65 G .158(dd it to the history list)-2.658 F .699 +(according to the state of the)144 364.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 580.8 Q F2(pr)108 -592.8 Q -.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0 -(Fetch the pre)144 604.8 Q(vious command from the history list, mo)-.25 -E(ving back in the list.)-.15 E F2(next\255history \(C\255n\))108 616.8 -Q F0(Fetch the ne)144 628.8 Q(xt command from the history list, mo)-.15 -E(ving forw)-.15 E(ard in the list.)-.1 E F2 -(beginning\255of\255history \(M\255<\))108 640.8 Q F0(Mo)144 652.8 Q .3 +(restore the history line to its original state.)144 376.8 Q F1(pr)108 +388.8 Q -.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0 +(Fetch the pre)144 400.8 Q(vious command from the history list, mo)-.25 +E(ving back in the list.)-.15 E F1(next\255history \(C\255n\))108 412.8 +Q F0(Fetch the ne)144 424.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 436.8 Q F0(Mo)144 448.8 Q .3 -.15(ve t)-.15 H 2.5(ot).15 G(he \214rst line in the history)-2.5 E(.) --.65 E F2(end\255of\255history \(M\255>\))108 664.8 Q F0(Mo)144 676.8 Q +-.65 E F1(end\255of\255history \(M\255>\))108 460.8 Q F0(Mo)144 472.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 F2 -2.29 -.18 -(re v)108 688.8 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0 -1.47(Search backw)144 700.8 R 1.471 -(ard starting at the current line and mo)-.1 F 1.471 +(,i)-.65 G(.e., the line currently being entered.)-2.5 E F1 -2.29 -.18 +(re v)108 484.8 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0 +1.471(Search backw)144 496.8 R 1.471 +(ard starting at the current line and mo)-.1 F 1.47 (ving `up' through the history as necessary)-.15 F(.)-.65 E -(This is an incremental search.)144 712.8 Q(GNU Bash-3.2)72 768 Q -(2007 January 12)140.96 E(36)190.95 E 0 Cg EP -%%Page: 37 37 +(This is an incremental search.)144 508.8 Q F1 -.25(fo)108 520.8 S +(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.131 +(Search forw)144 532.8 R 1.131(ard starting at the current line and mo) +-.1 F 1.132(ving `do)-.15 F 1.132(wn' through the history as necessary) +-.25 F(.)-.65 E(This is an incremental search.)144 544.8 Q F1 +(non\255incr)108 556.8 Q(emental\255r)-.18 E -2.3 -.15(ev e)-.18 H +(rse\255sear).15 E(ch\255history \(M\255p\))-.18 E F0 .165(Search backw) +144 568.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 580.8 S +(tring supplied by the user)-2.5 E(.)-.55 E F1(non\255incr)108 592.8 Q +(emental\255f)-.18 E(orward\255sear)-.25 E(ch\255history \(M\255n\))-.18 +E F0 1.353(Search forw)144 604.8 R 1.354(ard through the history using \ +a non-incremental search for a string supplied by the)-.1 F(user)144 +616.8 Q(.)-.55 E F1(history\255sear)108 628.8 Q(ch\255f)-.18 E(orward) +-.25 E F0 .249(Search forw)144 640.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 652.8 Q(This is a non-incremental search.)5 E F1 +(history\255sear)108 664.8 Q(ch\255backward)-.18 E F0 .95(Search backw) +144 676.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 688.8 Q +(This is a non-incremental search.)5 E F1(yank\255nth\255ar)108 700.8 Q +2.5(g\()-.1 G<4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144 +712.8 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 .794(at point.)144 724.8 R -.4(Wi)5.794 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 .795 +(ords in the)-.1 F(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(36) +199.835 E 0 Cg EP +%%Page: 37 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 -.25(fo)108 84 S(rward\255sear).25 E -(ch\255history \(C\255s\))-.18 E F0 1.132(Search forw)144 96 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 108 Q F1(non\255incr)108 120 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 132 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 144 S(tring supplied by the user)-2.5 E -(.)-.55 E F1(non\255incr)108 156 Q(emental\255f)-.18 E(orward\255sear) --.25 E(ch\255history \(M\255n\))-.18 E F0 1.354(Search forw)144 168 R -1.354(ard through the history using a non-incremental search for a stri\ -ng supplied by the)-.1 F(user)144 180 Q(.)-.55 E F1(history\255sear)108 -192 Q(ch\255f)-.18 E(orward)-.25 E F0 .248(Search forw)144 204 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 216 Q -(This is a non-incremental search.)5 E F1(history\255sear)108 228 Q -(ch\255backward)-.18 E F0 .951(Search backw)144 240 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 252 Q -(This is a non-incremental search.)5 E F1(yank\255nth\255ar)108 264 Q -2.5(g\()-.1 G<4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144 276 -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 288 R -.4(Wi)5.795 G .794 -(th an ar).4 F(gument)-.18 E/F2 10/Times-Italic@0 SF(n)3.294 E F0 3.294 -(,i).24 G .794(nsert the)-3.294 F F2(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 300 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 F2(n)2.791 E F0 .291(th w)B .292 -(ord from the end of)-.1 F .282(the pre)144 312 R .282(vious command.) --.25 F .282(Once the ar)5.282 F(gument)-.18 E F2(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 F2(n)A F0(")A(history e)144 324 Q -(xpansion had been speci\214ed.)-.15 E F1(yank\255last\255ar)108 336 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 348 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 360 S .736(th an ar).4 F .736 -(gument, beha)-.18 F 1.036 -.15(ve ex)-.2 H .736(actly lik).15 F(e)-.1 E -F1(yank\255nth\255ar)3.235 E(g)-.1 E F0 5.735(.S)C(uccessi)-5.735 E -1.035 -.15(ve c)-.25 H .735(alls to).15 F F1(yank\255last\255ar)3.235 E -(g)-.1 E F0(mo)3.235 E -.15(ve)-.15 G .728 -(back through the history list, inserting the last ar)144 372 R .728 -(gument of each line in turn.)-.18 F .729(The history e)5.728 F(xpan-) --.15 E .14(sion f)144 384 R .14(acilities are used to e)-.1 F .14 -(xtract the last ar)-.15 F .14(gument, as if the "!$" history e)-.18 F -.14(xpansion had been speci-)-.15 F(\214ed.)144 396 Q F1 -(shell\255expand\255line \(M\255C\255e\))108 408 Q F0 .622 -(Expand the line as the shell does.)144 420 R .622 -(This performs alias and history e)5.622 F .623 -(xpansion as well as all of the)-.15 F(shell w)144 432 Q(ord e)-.1 E 2.5 +-.35 E(pre)144 84 Q .292(vious command be)-.25 F .292(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/F1 10 +/Times-Italic@0 SF(n)2.791 E F0 .291(th w)B .291(ord from the end of)-.1 +F .281(the pre)144 96 R .281(vious command.)-.25 F .281(Once the ar) +5.281 F(gument)-.18 E F1(n)2.781 E F0 .281(is computed, the ar)2.781 F +.281(gument is e)-.18 F .282(xtracted as if the "!)-.15 F F1(n)A F0(")A +(history e)144 108 Q(xpansion had been speci\214ed.)-.15 E/F2 10 +/Times-Bold@0 SF(yank\255last\255ar)108 120 Q 2.5(g\()-.1 G -1.667 +(M\255. ,)-2.5 F -1.667(M\255_ \))2.5 F F0 1.308(Insert the last ar)144 +132 R 1.308(gument to the pre)-.18 F 1.307(vious command \(the last w) +-.25 F 1.307(ord of the pre)-.1 F 1.307(vious history entry\).)-.25 F +-.4(Wi)144 144 S .735(th an ar).4 F .735(gument, beha)-.18 F 1.035 -.15 +(ve ex)-.2 H .735(actly lik).15 F(e)-.1 E F2(yank\255nth\255ar)3.235 E +(g)-.1 E F0 5.736(.S)C(uccessi)-5.736 E 1.036 -.15(ve c)-.25 H .736 +(alls to).15 F F2(yank\255last\255ar)3.236 E(g)-.1 E F0(mo)3.236 E -.15 +(ve)-.15 G .728(back through the history list, inserting the last ar)144 +156 R .728(gument of each line in turn.)-.18 F .728(The history e)5.728 +F(xpan-)-.15 E .14(sion f)144 168 R .14(acilities are used to e)-.1 F +.14(xtract the last ar)-.15 F .14(gument, as if the "!$" history e)-.18 +F .14(xpansion had been speci-)-.15 F(\214ed.)144 180 Q F2 +(shell\255expand\255line \(M\255C\255e\))108 192 Q F0 .623 +(Expand the line as the shell does.)144 204 R .622 +(This performs alias and history e)5.622 F .622 +(xpansion as well as all of the)-.15 F(shell w)144 216 Q(ord e)-.1 E 2.5 (xpansions. See)-.15 F/F3 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 -(or a description of history e)-2.5 E(xpansion.)-.15 E F1 -(history\255expand\255line \(M\255^\))108 444 Q F0 .939 -(Perform history e)144 456 R .939(xpansion on the current line.)-.15 F +(or a description of history e)-2.5 E(xpansion.)-.15 E F2 +(history\255expand\255line \(M\255^\))108 228 Q F0 .938 +(Perform history e)144 240 R .939(xpansion on the current line.)-.15 F (See)5.939 E F3(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 468 Q(xpansion.)-.15 E F1(magic\255space) -108 480 Q F0 1.626(Perform history e)144 492 R 1.626 -(xpansion on the current line and insert a space.)-.15 F(See)6.627 E F3 -(HIST)4.127 E(OR)-.162 E 3.877(YE)-.315 G(XP)-3.877 E(ANSION)-.666 E F0 -(belo)144 504 Q 2.5(wf)-.25 G(or a description of history e)-2.5 E -(xpansion.)-.15 E F1(alias\255expand\255line)108 516 Q F0 .395 -(Perform alias e)144 528 R .395(xpansion on the current line.)-.15 F -(See)5.395 E F3(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 540 Q F1 -(history\255and\255alias\255expand\255line)108 552 Q F0 -(Perform history and alias e)144 564 Q(xpansion on the current line.) --.15 E F1(insert\255last\255ar)108 576 Q(gument \(M\255.)-.1 E 2.5(,M) -.833 G -1.667(\255_ \))-2.5 F F0 2.5(As)144 588 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 600 Q F0 .947 -(Accept the current line for e)144 612 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 624 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 636 Q F0(In)144 -648 Q -.2(vo)-.4 G 1.226 -.1(ke a).2 H 3.526(ne).1 G 1.026 +(ANSION)-.666 E F0(belo)3.189 E 3.439(wf)-.25 G .939(or a descrip-) +-3.439 F(tion of history e)144 252 Q(xpansion.)-.15 E F2(magic\255space) +108 264 Q F0 1.627(Perform history e)144 276 R 1.627 +(xpansion on the current line and insert a space.)-.15 F(See)6.626 E F3 +(HIST)4.126 E(OR)-.162 E 3.876(YE)-.315 G(XP)-3.876 E(ANSION)-.666 E F0 +(belo)144 288 Q 2.5(wf)-.25 G(or a description of history e)-2.5 E +(xpansion.)-.15 E F2(alias\255expand\255line)108 300 Q F0 .394 +(Perform alias e)144 312 R .394(xpansion on the current line.)-.15 F +(See)5.395 E F3(ALIASES)2.895 E F0(abo)2.645 E .695 -.15(ve f)-.15 H +.395(or a description of alias e).15 F(xpan-)-.15 E(sion.)144 324 Q F2 +(history\255and\255alias\255expand\255line)108 336 Q F0 +(Perform history and alias e)144 348 Q(xpansion on the current line.) +-.15 E F2(insert\255last\255ar)108 360 Q(gument \(M\255.)-.1 E 2.5(,M) +.833 G -1.667(\255_ \))-2.5 F F0 2.5(As)144 372 S(ynon)-2.5 E(ym for) +-.15 E F2(yank\255last\255ar)2.5 E(g)-.1 E F0(.)A F2 +(operate\255and\255get\255next \(C\255o\))108 384 Q F0 .948 +(Accept the current line for e)144 396 R -.15(xe)-.15 G .948 +(cution and fetch the ne).15 F .948(xt line relati)-.15 F 1.247 -.15 +(ve t)-.25 H 3.447(ot).15 G .947(he current line from the)-3.447 F +(history for editing.)144 408 Q(An)5 E 2.5(ya)-.15 G -.18(rg)-2.5 G +(ument is ignored.).18 E F2 +(edit\255and\255execute\255command \(C\255xC\255e\))108 420 Q F0(In)144 +432 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 660 Q -.2(vo)-.4 G -.1(ke).2 G F3($FCEDIT)2.6 E/F4 9 -/Times-Roman@0 SF(,)A F3($EDIT)2.25 E(OR)-.162 E F4(,)A F0(and)2.25 E F2 +(cute the result as shell commands.).15 F F2(Bash)6.026 E F0 +(attempts to in)144 444 Q -.2(vo)-.4 G -.1(ke).2 G F3($FCEDIT)2.6 E/F4 9 +/Times-Roman@0 SF(,)A F3($EDIT)2.25 E(OR)-.162 E F4(,)A F0(and)2.25 E F1 (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 676.8 Q(or Changing T)-.25 E -(ext)-.92 E(delete\255char \(C\255d\))108 688.8 Q F0 .357 -(Delete the character at point.)144 700.8 R .358(If point is at the be) +(hat order)-2.5 E(.)-.55 E F2(Commands f)87 460.8 Q(or Changing T)-.25 E +(ext)-.92 E(delete\255char \(C\255d\))108 472.8 Q F0 .358 +(Delete the character at point.)144 484.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 712.8 Q(as not bound to)-.1 E -F1(delete\255char)2.5 E F0 2.5(,t)C(hen return)-2.5 E F3(EOF)2.5 E F4(.) -A F0(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 E(37)190.95 E 0 Cg EP -%%Page: 38 38 +(line, and the last character typed w)144 496.8 Q(as not bound to)-.1 E +F2(delete\255char)2.5 E F0 2.5(,t)C(hen return)-2.5 E F3(EOF)2.5 E F4(.) +A F2(backward\255delete\255char \(Rubout\))108 508.8 Q F0 .552 +(Delete the character behind the cursor)144 520.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 +.553(gument, sa)-.18 F .853 -.15(ve t)-.2 H .553(he deleted te).15 F +.553(xt on)-.15 F(the kill ring.)144 532.8 Q F2 -.25(fo)108 544.8 S +(rward\255backward\255delete\255char).25 E F0 .474 +(Delete the character under the cursor)144 556.8 R 2.974(,u)-.4 G .474 +(nless the cursor is at the end of the line, in which case the)-2.974 F +(character behind the cursor is deleted.)144 568.8 Q F2 +(quoted\255insert \(C\255q, C\255v\))108 580.8 Q F0 .778(Add the ne)144 +592.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 F2(C\255q)3.279 E F0 3.279 +(,f)C(or)-3.279 E -.15(ex)144 604.8 S(ample.).15 E F2 +(tab\255insert \(C\255v T)108 616.8 Q(AB\))-.9 E F0 +(Insert a tab character)144 628.8 Q(.)-.55 E F2 +(self\255insert \(a, b, A, 1, !, ...\))108 640.8 Q F0 +(Insert the character typed.)144 652.8 Q F2 +(transpose\255chars \(C\255t\))108 664.8 Q F0 .322 +(Drag the character before point forw)144 676.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 .321 +(ving point forw)-.15 F .321(ard as well.)-.1 F 1.182 +(If point is at the end of the line, then this transposes the tw)144 +688.8 R 3.683(oc)-.1 G 1.183(haracters before point.)-3.683 F(Ne)6.183 E +-.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G(ar)144 700.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(GNU Bash-3.2) +72 768 Q(2006 Jan 26)149.845 E(37)199.835 E 0 Cg EP +%%Page: 38 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(backward\255delete\255char \(Rubout\))108 -84 Q F0 .553(Delete the character behind the cursor)144 96 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 108 Q F1 -.25 -(fo)108 120 S(rward\255backward\255delete\255char).25 E F0 .473 -(Delete the character under the cursor)144 132 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 144 Q F1 -(quoted\255insert \(C\255q, C\255v\))108 156 Q F0 .779(Add the ne)144 -168 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 180 S(ample.).15 E F1(tab\255insert \(C\255v T) -108 192 Q(AB\))-.9 E F0(Insert a tab character)144 204 Q(.)-.55 E F1 -(self\255insert \(a, b, A, 1, !, ...\))108 216 Q F0 -(Insert the character typed.)144 228 Q F1(transpose\255chars \(C\255t\)) -108 240 Q F0 .321(Drag the character before point forw)144 252 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 264 -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 276 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 288 Q(ords \(M\255t\))-.1 E F0 .023(Drag the w)144 -300 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 312 Q 2.5 -(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 324 Q -(ord \(M\255u\))-.1 E F0 1.699(Uppercase the current \(or follo)144 336 +-.35 E/F1 10/Times-Bold@0 SF(transpose\255w)108 84 Q(ords \(M\255t\))-.1 +E F0 .024(Drag the w)144 96 R .024(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.523(rt).15 G .023(hat w)-2.523 F .023(ord as well.)-.1 F .023 +(If point)5.023 F +(is at the end of the line, this transposes the last tw)144 108 Q 2.5 +(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 120 Q +(ord \(M\255u\))-.1 E F0 1.698(Uppercase the current \(or follo)144 132 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 348 S(rd, b).1 E -(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(do)108 360 Q -(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 372 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 384 S(rd, b).1 E(ut do not mo)-.2 E .3 --.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 396 Q -(ord \(M\255c\))-.1 E F0 1.975(Capitalize the current \(or follo)144 408 +-.15 G(ti).05 E 1.999 -.15(ve a)-.25 H -.18(rg).15 G 1.699 +(ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 144 S(rd, b).1 E +(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(do)108 156 Q +(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 168 Q 1.648 +(wercase the current \(or follo)-.25 F 1.648(wing\) w)-.25 F 4.148 +(ord. W)-.1 F 1.647(ith a ne)-.4 F -.05(ga)-.15 G(ti).05 E 1.947 -.15 +(ve a)-.25 H -.18(rg).15 G 1.647(ument, lo).18 F 1.647(wercase the pre) +-.25 F(vious)-.25 E -.1(wo)144 180 S(rd, b).1 E(ut do not mo)-.2 E .3 +-.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 192 Q +(ord \(M\255c\))-.1 E F0 1.974(Capitalize the current \(or follo)144 204 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 420 S(rd, b).1 -E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1 -.1(ove)108 432 -S(rwrite\255mode).1 E F0 -.8(To)144 444 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 456 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 468 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 480 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 492 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 504 Q -(By def)5 E(ault, this command is unbound.)-.1 E F1(Killing and Y)87 -520.8 Q(anking)-.85 E(kill\255line \(C\255k\))108 532.8 Q F0 -(Kill the te)144 544.8 Q(xt from point to the end of the line.)-.15 E F1 -(backward\255kill\255line \(C\255x Rubout\))108 556.8 Q F0(Kill backw) -144 568.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1 -(unix\255line\255discard \(C\255u\))108 580.8 Q F0(Kill backw)144 592.8 +-.15 G(ti).05 E 2.274 -.15(ve a)-.25 H -.18(rg).15 G 1.975 +(ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 216 S(rd, b).1 +E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1 -.1(ove)108 228 +S(rwrite\255mode).1 E F0 -.8(To)144 240 S .438(ggle o).8 F -.15(ve)-.15 +G .438(rwrite mode.).15 F -.4(Wi)5.438 G .438(th an e).4 F .438 +(xplicit positi)-.15 F .737 -.15(ve n)-.25 H .437(umeric ar).15 F .437 +(gument, switches to o)-.18 F -.15(ve)-.15 G .437(rwrite mode.).15 F -.4 +(Wi)144 252 S .78(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 .781(This command af)5.781 F(fects)-.25 E(only)144 264 Q F1 +(emacs)4.395 E F0(mode;)4.395 E F1(vi)4.395 E F0 1.894(mode does o)4.395 +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.394 G +(adline\(\)).37 E F0 1.894(starts in insert)4.394 F 3.968(mode. In)144 +276 R -.15(ove)3.968 G 1.468(rwrite mode, characters bound to).15 F F1 +(self\255insert)3.969 E F0 1.469(replace the te)3.969 F 1.469 +(xt at point rather than)-.15 F .958(pushing the te)144 288 R .958 +(xt to the right.)-.15 F .957(Characters bound to)5.958 F F1 +(backward\255delete\255char)3.457 E F0 .957(replace the character)3.457 +F(before point with a space.)144 300 Q(By def)5 E +(ault, this command is unbound.)-.1 E F1(Killing and Y)87 316.8 Q +(anking)-.85 E(kill\255line \(C\255k\))108 328.8 Q F0(Kill the te)144 +340.8 Q(xt from point to the end of the line.)-.15 E F1 +(backward\255kill\255line \(C\255x Rubout\))108 352.8 Q F0(Kill backw) +144 364.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1 +(unix\255line\255discard \(C\255u\))108 376.8 Q F0(Kill backw)144 388.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 604.8 Q F0 +-2.5 G(he kill-ring.)-2.5 E F1(kill\255whole\255line)108 400.8 Q F0 (Kill all characters on the current line, no matter where point is.)144 -616.8 Q F1(kill\255w)108 628.8 Q(ord \(M\255d\))-.1 E F0 .729 -(Kill from point to the end of the current w)144 640.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 652.8 S +412.8 Q F1(kill\255w)108 424.8 Q(ord \(M\255d\))-.1 E F0 .728 +(Kill from point to the end of the current w)144 436.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 448.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 664.8 Q -(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 676.8 Q(ord behind point.) +(rward\255w).25 E(ord)-.1 E F0(.)A F1(backward\255kill\255w)108 460.8 Q +(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 472.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(unix\255w)108 688.8 Q -(ord\255rubout \(C\255w\))-.1 E F0 .364(Kill the w)144 700.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 -712.8 Q(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 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(unix\255\214lename\255rubout)108 84 Q F0 -.167(Kill the w)144 96 R .166 +(backward\255w)2.5 E(ord)-.1 E F0(.)A F1(unix\255w)108 484.8 Q +(ord\255rubout \(C\255w\))-.1 E F0 .365(Kill the w)144 496.8 R .365 +(ord behind point, using white space as a w)-.1 F .364(ord boundary)-.1 +F 5.364(.T)-.65 G .364(he killed te)-5.364 F .364(xt is sa)-.15 F -.15 +(ve)-.2 G 2.864(do).15 G 2.864(nt)-2.864 G(he)-2.864 E(kill-ring.)144 +508.8 Q F1(unix\255\214lename\255rubout)108 520.8 Q F0 .166(Kill the w) +144 532.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 108 Q +-.1 F .167(ord boundaries.)-.1 F(The)5.167 E(killed te)144 544.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 120 Q F0 -(Delete all spaces and tabs around point.)144 132 Q F1(kill\255r)108 144 -Q(egion)-.18 E F0(Kill the te)144 156 Q(xt in the current re)-.15 E -(gion.)-.15 E F1(copy\255r)108 168 Q(egion\255as\255kill)-.18 E F0(Cop) -144 180 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 556.8 Q F0 +(Delete all spaces and tabs around point.)144 568.8 Q F1(kill\255r)108 +580.8 Q(egion)-.18 E F0(Kill the te)144 592.8 Q(xt in the current re) +-.15 E(gion.)-.15 E F1(copy\255r)108 604.8 Q(egion\255as\255kill)-.18 E +F0(Cop)144 616.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 192 Q(ord)-.1 E F0(Cop)144 204 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 216 -Q(ord)-.1 E F0(.)A F1(copy\255f)108 228 Q(orward\255w)-.25 E(ord)-.1 E -F0(Cop)144 240 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 252 Q(ord)-.1 E F0(.)A F1 -(yank \(C\255y\))108 264 Q F0 -1(Ya)144 276 S +(copy\255backward\255w)108 628.8 Q(ord)-.1 E F0(Cop)144 640.8 Q 4.801 +(yt)-.1 G 2.301(he w)-4.801 F 2.301(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.3 +(ord boundaries are the same as)-.1 F F1(back-)4.8 E(ward\255w)144 652.8 +Q(ord)-.1 E F0(.)A F1(copy\255f)108 664.8 Q(orward\255w)-.25 E(ord)-.1 E +F0(Cop)144 676.8 Q 4.507(yt)-.1 G 2.007(he w)-4.507 F 2.007(ord follo) +-.1 F 2.007(wing point to the kill b)-.25 F(uf)-.2 E(fer)-.25 E 7.008 +(.T)-.55 G 2.008(he w)-7.008 F 2.008(ord boundaries are the same as)-.1 +F F1 -.25(fo)4.508 G -.37(r-).25 G(ward\255w)144 688.8 Q(ord)-.1 E F0(.) +A F1(yank \(C\255y\))108 700.8 Q F0 -1(Ya)144 712.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 288 Q F0 -(Rotate the kill ring, and yank the ne)144 300 Q 2.5(wt)-.25 G 2.5 +E(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(38)199.835 E 0 Cg EP +%%Page: 39 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(yank\255pop \(M\255y\))108 84 Q F0 +(Rotate the kill ring, and yank the ne)144 96 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 F1(Numeric Ar)87 316.8 Q -(guments)-.1 E(digit\255ar)108 328.8 Q -(gument \(M\2550, M\2551, ..., M\255\255\))-.1 E F0 .641 -(Add this digit to the ar)144 340.8 R .641 +F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 112.8 Q +(guments)-.1 E(digit\255ar)108 124.8 Q +(gument \(M\2550, M\2551, ..., M\255\255\))-.1 E F0 .642 +(Add this digit to the ar)144 136.8 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 352.8 Q .3 -.15(ve a)-.25 H -.18(rg).15 G(ument.).18 E F1 -(uni)108 364.8 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0 .779 -(This is another w)144 376.8 R .779(ay to specify an ar)-.1 F 3.279 -(gument. If)-.18 F .779(this command is follo)3.279 F .778 +(rg)-3.141 G 3.141(ument. M\255\255).18 F .641(starts a ne)3.141 F(g-) +-.15 E(ati)144 148.8 Q .3 -.15(ve a)-.25 H -.18(rg).15 G(ument.).18 E F1 +(uni)108 160.8 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0 .778 +(This is another w)144 172.8 R .779(ay to specify an ar)-.1 F 3.279 +(gument. If)-.18 F .779(this command is follo)3.279 F .779 (wed by one or more digits,)-.25 F 1.376 (optionally with a leading minus sign, those digits de\214ne the ar)144 -388.8 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144 -400.8 Q 1.17(wed by digits, e)-.25 F -.15(xe)-.15 G(cuting).15 E F1(uni) +184.8 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144 +196.8 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 412.8 R .898 -(As a special case, if this command is immediately follo)5.898 F .898 +-.2 F(-)-.2 E .899(wise ignored.)144 208.8 R .898 +(As a special case, if this command is immediately follo)5.899 F .898 (wed by a character that is)-.25 F .243 -(neither a digit or minus sign, the ar)144 424.8 R .243 +(neither a digit or minus sign, the ar)144 220.8 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 436.8 Q .378 +-.15 F 5.243(.T)-.55 G(he)-5.243 E(ar)144 232.8 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 448.8 Q 2.5(,as)-.4 G(econd time mak) +.378(gument count)-.18 F(four)144 244.8 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 465.6 Q(complete \(T)108 477.6 Q(AB\))-.9 E F0 1.137 -(Attempt to perform completion on the te)144 489.6 R 1.137 +(Completing)87 261.6 Q(complete \(T)108 273.6 Q(AB\))-.9 E F0 1.137 +(Attempt to perform completion on the te)144 285.6 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 501.6 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 513.6 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 +(attempts completion treating the)3.637 F(te)144 297.6 Q .533(xt as a v) +-.15 F .533(ariable \(if the te)-.25 F .533(xt be)-.15 F .533(gins with) +-.15 F F1($)3.033 E F0 .533(\), username \(if the te)B .532(xt be)-.15 F +.532(gins with)-.15 F F1(~)3.032 E F0 .532(\), hostname \(if the)B(te) +144 309.6 Q .701(xt be)-.15 F .701(gins with)-.15 F F1(@)3.201 E F0 .701 +(\), or command \(including aliases and functions\) in turn.)B .702 (If none of these pro-)5.701 F -(duces a match, \214lename completion is attempted.)144 525.6 Q F1 -(possible\255completions \(M\255?\))108 537.6 Q F0 -(List the possible completions of the te)144 549.6 Q(xt before point.) --.15 E F1(insert\255completions \(M\255*\))108 561.6 Q F0 .783 -(Insert all completions of the te)144 573.6 R .783 +(duces a match, \214lename completion is attempted.)144 321.6 Q F1 +(possible\255completions \(M\255?\))108 333.6 Q F0 +(List the possible completions of the te)144 345.6 Q(xt before point.) +-.15 E F1(insert\255completions \(M\255*\))108 357.6 Q F0 .783 +(Insert all completions of the te)144 369.6 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 -585.6 Q F0(.)A F1(menu\255complete)108 597.6 Q F0 .929(Similar to)144 -609.6 R F1(complete)3.429 E F0 3.429(,b)C .929(ut replaces the w)-3.629 +.783(een generated by).15 F F1(possible\255com-)3.282 E(pletions)144 +381.6 Q F0(.)A F1(menu\255complete)108 393.6 Q F0 .928(Similar to)144 +405.6 R F1(complete)3.428 E F0 3.428(,b)C .929(ut replaces the w)-3.628 F .929(ord to be completed with a single match from the list of)-.1 F -1.193(possible completions.)144 621.6 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 633.6 R .828 +1.194(possible completions.)144 417.6 R 1.194(Repeated e)6.194 F -.15 +(xe)-.15 G 1.194(cution of).15 F F1(menu\255complete)3.694 E F0 1.193 +(steps through the list of possible)3.694 F .828 +(completions, inserting each match in turn.)144 429.6 R .828 (At the end of the list of completions, the bell is rung)5.828 F .727 -(\(subject to the setting of)144 645.6 R F1(bell\255style)3.227 E F0 +(\(subject to the setting of)144 441.6 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 657.6 R 1.73(ard in the list of matches; a ne)-.1 F +E F0(mo)3.227 E -.15(ve)-.15 G(s).15 E F2(n)3.227 E F0 1.73 +(positions forw)144 453.6 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 669.6 Q(This command is intended to be bound to) +E(through the list.)144 465.6 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(delete\255char\255or\255list)108 681.6 Q F0 .234 -(Deletes the character under the cursor if not at the be)144 693.6 R +(ault.)-.1 E F1(delete\255char\255or\255list)108 477.6 Q F0 .234 +(Deletes the character under the cursor if not at the be)144 489.6 R .234(ginning or end of the line \(lik)-.15 F(e)-.1 E F1(delete\255char) -2.735 E F0(\).)A .425(If at the end of the line, beha)144 705.6 R -.15 +2.734 E F0(\).)A .425(If at the end of the line, beha)144 501.6 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 717.6 Q(ault.)-.1 E -(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 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(complete\255\214lename \(M\255/\))108 84 Q -F0(Attempt \214lename completion on the te)144 96 Q(xt before point.) --.15 E F1(possible\255\214lename\255completions \(C\255x /\))108 108 Q -F0(List the possible completions of the te)144 120 Q +(his command is unbound)-5.425 F(by def)144 513.6 Q(ault.)-.1 E F1 +(complete\255\214lename \(M\255/\))108 525.6 Q F0 +(Attempt \214lename completion on the te)144 537.6 Q(xt before point.) +-.15 E F1(possible\255\214lename\255completions \(C\255x /\))108 549.6 Q +F0(List the possible completions of the te)144 561.6 Q (xt before point, treating it as a \214lename.)-.15 E F1 -(complete\255user)108 132 Q(name \(M\255~\))-.15 E F0 -(Attempt completion on the te)144 144 Q +(complete\255user)108 573.6 Q(name \(M\255~\))-.15 E F0 +(Attempt completion on the te)144 585.6 Q (xt before point, treating it as a username.)-.15 E F1(possible\255user) -108 156 Q(name\255completions \(C\255x ~\))-.15 E F0 -(List the possible completions of the te)144 168 Q +108 597.6 Q(name\255completions \(C\255x ~\))-.15 E F0 +(List the possible completions of the te)144 609.6 Q (xt before point, treating it as a username.)-.15 E F1(complete\255v)108 -180 Q(ariable \(M\255$\))-.1 E F0(Attempt completion on the te)144 192 Q -(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E F1 -(possible\255v)108 204 Q(ariable\255completions \(C\255x $\))-.1 E F0 -(List the possible completions of the te)144 216 Q +621.6 Q(ariable \(M\255$\))-.1 E F0(Attempt completion on the te)144 +633.6 Q(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E +F1(possible\255v)108 645.6 Q(ariable\255completions \(C\255x $\))-.1 E +F0(List the possible completions of the te)144 657.6 Q (xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E F1 -(complete\255hostname \(M\255@\))108 228 Q F0 -(Attempt completion on the te)144 240 Q +(complete\255hostname \(M\255@\))108 669.6 Q F0 +(Attempt completion on the te)144 681.6 Q (xt before point, treating it as a hostname.)-.15 E F1 -(possible\255hostname\255completions \(C\255x @\))108 252 Q F0 -(List the possible completions of the te)144 264 Q -(xt before point, treating it as a hostname.)-.15 E F1 -(complete\255command \(M\255!\))108 276 Q F0 .58 -(Attempt completion on the te)144 288 R .581 -(xt before point, treating it as a command name.)-.15 F .581 -(Command comple-)5.581 F .715(tion attempts to match the te)144 300 R +(possible\255hostname\255completions \(C\255x @\))108 693.6 Q F0 +(List the possible completions of the te)144 705.6 Q +(xt before point, treating it as a hostname.)-.15 E(GNU Bash-3.2)72 768 +Q(2006 Jan 26)149.845 E(39)199.835 E 0 Cg EP +%%Page: 40 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(complete\255command \(M\255!\))108 84 Q F0 +.581(Attempt completion on the te)144 96 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 .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 312 Q -.15(xe)-.15 G +(\214nally e)144 120 Q -.15(xe)-.15 G (cutable \214lenames, in that order).15 E(.)-.55 E F1 -(possible\255command\255completions \(C\255x !\))108 324 Q F0 -(List the possible completions of the te)144 336 Q +(possible\255command\255completions \(C\255x !\))108 132 Q F0 +(List the possible completions of the te)144 144 Q (xt before point, treating it as a command name.)-.15 E F1 -(dynamic\255complete\255history \(M\255T)108 348 Q(AB\))-.9 E F0 .424 -(Attempt completion on the te)144 360 R .425 -(xt before point, comparing the te)-.15 F .425(xt ag)-.15 F .425 +(dynamic\255complete\255history \(M\255T)108 156 Q(AB\))-.9 E F0 .425 +(Attempt completion on the te)144 168 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 372 Q F1 -(complete\255into\255braces \(M\255{\))108 384 Q F0 .4(Perform \214lena\ +(for possible completion matches.)144 180 Q F1 +(complete\255into\255braces \(M\255{\))108 192 Q F0 .4(Perform \214lena\ me completion and insert the list of possible completions enclosed with\ -in braces so)144 396 R(the list is a)144 408 Q -.25(va)-.2 G +in braces so)144 204 R(the list is a)144 216 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 424.8 S(yboard Macr).25 E(os)-.18 -E(start\255kbd\255macr)108 436.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)) -.833 E F0(Be)144 448.8 Q(gin sa)-.15 E +-.15(ve)-.15 G(\).).15 E F1 -.25(Ke)87 232.8 S(yboard Macr).25 E(os)-.18 +E(start\255kbd\255macr)108 244.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)) +.833 E F0(Be)144 256.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 460.8 Q 2.5(o\()-.18 G -(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 472.8 Q +(board macro.).15 E F1(end\255kbd\255macr)108 268.8 Q 2.5(o\()-.18 G +(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 280.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 484.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5 -E F0(Re-e)144 496.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 508.8 Q -.15(ey)-.1 G(board.).15 -E F1(Miscellaneous)87 525.6 Q -.18(re)108 537.6 S.18 E -(ead\255init\255\214le \(C\255x C\255r\))-.18 E F0 1.777 -(Read in the contents of the)144 549.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 561.6 Q F1(abort \(C\255g\))108 573.6 Q F0 3.248 -(Abort the current editing command and ring the terminal')144 585.6 R -5.749(sb)-.55 G 3.249(ell \(subject to the setting of)-5.749 F F1 -(bell\255style)144 597.6 Q F0(\).)A F1(do\255upper)108 609.6 Q +(call\255last\255kbd\255macr)108 292.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5 +E F0(Re-e)144 304.8 Q -.15(xe)-.15 G 1(cute the last k).15 F -.15(ey)-.1 +G .999(board macro de\214ned, by making the characters in the macro app\ +ear as if).15 F(typed at the k)144 316.8 Q -.15(ey)-.1 G(board.).15 E F1 +(Miscellaneous)87 333.6 Q -.18(re)108 345.6 S.18 E +(ead\255init\255\214le \(C\255x C\255r\))-.18 E F0 1.776 +(Read in the contents of the)144 357.6 R/F2 10/Times-Italic@0 SF(inputr) +4.276 E(c)-.37 E F0 1.777(\214le, and incorporate an)4.276 F 4.277(yb) +-.15 G 1.777(indings or v)-4.277 F 1.777(ariable assignments)-.25 F +(found there.)144 369.6 Q F1(abort \(C\255g\))108 381.6 Q F0 3.249 +(Abort the current editing command and ring the terminal')144 393.6 R +5.748(sb)-.55 G 3.248(ell \(subject to the setting of)-5.748 F F1 +(bell\255style)144 405.6 Q F0(\).)A F1(do\255upper)108 417.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 621.6 R F2(x) -4.256 E F0 1.755(is lo)4.256 F 1.755 +C(..\))-2.5 E F0 1.755(If the meta\214ed character)144 429.6 R F2(x) +4.255 E F0 1.755(is lo)4.255 F 1.756 (wercase, run the command that is bound to the corresponding)-.25 F -(uppercase character)144 633.6 Q(.)-.55 E F1(pr)108 645.6 Q -(e\214x\255meta \(ESC\))-.18 E F0(Metafy the ne)144 657.6 Q +(uppercase character)144 441.6 Q(.)-.55 E F1(pr)108 453.6 Q +(e\214x\255meta \(ESC\))-.18 E F0(Metafy the ne)144 465.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 669.6 Q F0 -(Incremental undo, separately remembered for each line.)144 681.6 Q F1 --2.29 -.18(re v)108 693.6 T(ert\255line \(M\255r\)).08 E F0 1.095 -(Undo all changes made to this line.)144 705.6 R 1.095(This is lik)6.095 +(undo \(C\255_, C\255x C\255u\))108 477.6 Q F0 +(Incremental undo, separately remembered for each line.)144 489.6 Q F1 +-2.29 -.18(re v)108 501.6 T(ert\255line \(M\255r\)).08 E F0 1.095 +(Undo all changes made to this line.)144 513.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 717.6 Q(GNU Bash-3.2)72 768 Q -(2007 January 12)140.96 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(tilde\255expand \(M\255&\))108 84 Q F0 -(Perform tilde e)144 96 Q(xpansion on the current w)-.15 E(ord.)-.1 E F1 -(set\255mark \(C\255@, M\255\))108 108 Q F0 -(Set the mark to the point.)144 120 Q(If a numeric ar)5 E +(return the line to its initial state.)144 525.6 Q F1 +(tilde\255expand \(M\255&\))108 537.6 Q F0(Perform tilde e)144 549.6 Q +(xpansion on the current w)-.15 E(ord.)-.1 E F1 +(set\255mark \(C\255@, M\255\))108 561.6 Q F0 +(Set the mark to the point.)144 573.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 132 Q F0(Sw)144 -144 Q .283(ap the point with the mark.)-.1 F .283 +(exchange\255point\255and\255mark \(C\255x C\255x\))108 585.6 Q F0(Sw) +144 597.6 Q .282(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 156 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 168 Q(ch \(C\255]\))-.18 E F0 3.035(Ac)144 180 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 192 Q(vious occurrences.)-.25 E F1(character\255sear)108 204 Q -(ch\255backward \(M\255C\255]\))-.18 E F0 3.544(Ac)144 216 S 1.044 -(haracter is read and point is mo)-3.544 F -.15(ve)-.15 G 3.544(dt).15 G +2.783(dp).15 G .283(osition, and the old)-2.783 F(cursor position is sa) +144 609.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 621.6 Q(ch \(C\255]\))-.18 E F0 3.036(Ac)144 +633.6 S .536(haracter is read and point is mo)-3.036 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.535(.A)-.55 G(ne)-2.5 E -.05 +(ga)-.15 G(ti).05 E .835 -.15(ve c)-.25 H(ount).15 E(searches for pre) +144 645.6 Q(vious occurrences.)-.25 E F1(character\255sear)108 657.6 Q +(ch\255backward \(M\255C\255]\))-.18 E F0 3.543(Ac)144 669.6 S 1.043 +(haracter is read and point is mo)-3.543 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 +(vious occurrence of that character)-.25 F 6.044(.A)-.55 G(ne)-2.5 E -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G -(count searches for subsequent occurrences.)144 228 Q F1 -(insert\255comment \(M\255#\))108 240 Q F0 -.4(Wi)144 252 S .48 -(thout a numeric ar).4 F .48(gument, the v)-.18 F .481 +(count searches for subsequent occurrences.)144 681.6 Q F1 +(insert\255comment \(M\255#\))108 693.6 Q F0 -.4(Wi)144 705.6 S .481 +(thout a numeric ar).4 F .481(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 264 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 276 R .321 +2.981 G .48(riable is inserted at the).25 F(be)144 717.6 Q .097 +(ginning of the current line.)-.15 F .098(If a numeric ar)5.097 F .098 +(gument is supplied, this command acts as a toggle:)-.18 F(if)5.098 E +.322(the characters at the be)144 729.6 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 1.014(inserted, otherwise the characters in)144 288 R F1 -(comment-begin)3.514 E F0 1.014(are deleted from the be)3.514 F 1.013 -(ginning of the line.)-.15 F 1.468 -(In either case, the line is accepted as if a ne)144 300 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 312 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 324 Q -.15 +(comment\255begin)2.821 E F0 2.821(,t)C .321(he v)-2.821 F .321(alue is) +-.25 F(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(40)199.835 E 0 Cg EP +%%Page: 41 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 1.013(inserted, otherwise the characters in)144 84 R/F1 10 +/Times-Bold@0 SF(comment-begin)3.514 E F0 1.014(are deleted from the be) +3.514 F 1.014(ginning of the line.)-.15 F 1.469 +(In either case, the line is accepted as if a ne)144 96 R 1.468 +(wline had been typed.)-.25 F 1.468(The def)6.468 F 1.468(ault v)-.1 F +1.468(alue of)-.25 F F1(com-)3.968 E(ment\255begin)144 108 Q F0 .839 +(causes this command to mak)3.339 F 3.339(et)-.1 G .839 +(he current line a shell comment.)-3.339 F .84(If a numeric ar)5.84 F +(gu-)-.18 E(ment causes the comment character to be remo)144 120 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 336 Q -(ord \(M\255g\))-.1 E F0 .791(The w)144 348 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 360 +(cuted by the shell.).15 E F1(glob\255complete\255w)108 132 Q +(ord \(M\255g\))-.1 E F0 .792(The w)144 144 R .791 +(ord before point is treated as a pattern for pathname e)-.1 F .791 +(xpansion, with an asterisk implicitly)-.15 F 2.5(appended. This)144 156 R(pattern is used to generate a list of matching \214le names for possi\ -ble completions.)2.5 E F1(glob\255expand\255w)108 372 Q -(ord \(C\255x *\))-.1 E F0 .372(The w)144 384 R .372 -(ord before point is treated as a pattern for pathname e)-.1 F .371 +ble completions.)2.5 E F1(glob\255expand\255w)108 168 Q +(ord \(C\255x *\))-.1 E F0 .371(The w)144 180 R .372 +(ord before point is treated as a pattern for pathname e)-.1 F .372 (xpansion, and the list of matching \214le)-.15 F .516 -(names is inserted, replacing the w)144 396 R 3.016(ord. If)-.1 F 3.016 +(names is inserted, replacing the w)144 192 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 408 Q(xpansion.)-.15 E F1(glob\255list\255expansions \(C\255x g\)) -108 420 Q F0 .923(The list of e)144 432 R .923(xpansions that w)-.15 F +144 204 Q(xpansion.)-.15 E F1(glob\255list\255expansions \(C\255x g\)) +108 216 Q F0 .923(The list of e)144 228 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 444 R 3.372(wn. If)-.15 F 3.372(an)3.372 G +.872(the line is redra)144 240 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 456 S(pansion.).15 E F1(dump\255functions)108 468 Q F0 .627 -(Print all of the functions and their k)144 480 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 492 Q +(ex)144 252 S(pansion.).15 E F1(dump\255functions)108 264 Q F0 .626 +(Print all of the functions and their k)144 276 R .926 -.15(ey b)-.1 H +.627(indings to the readline output stream.).15 F .627(If a numeric ar) +5.627 F(gu-)-.18 E +(ment is supplied, the output is formatted in such a w)144 288 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 504 Q(ariables)-.1 E F0 -1.799(Print all of the settable readline v)144 516 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 528 R .304 +2.5 E(c)-.37 E F0(\214le.)2.5 E F1(dump\255v)108 300 Q(ariables)-.1 E F0 +1.8(Print all of the settable readline v)144 312 R 1.799 +(ariables and their v)-.25 F 1.799(alues to the readline output stream.) +-.25 F 1.799(If a)6.799 F .304(numeric ar)144 324 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 540 Q(c)-.37 E F0 -(\214le.)2.5 E F1(dump\255macr)108 552 Q(os)-.18 E F0 .592 -(Print all of the readline k)144 564 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 576 Q +(ay that it can be made part of an)-.1 F F2(inputr)144 336 Q(c)-.37 E F0 +(\214le.)2.5 E F1(dump\255macr)108 348 Q(os)-.18 E F0 .593 +(Print all of the readline k)144 360 R .893 -.15(ey s)-.1 H .592 +(equences bound to macros and the strings the).15 F 3.092(yo)-.15 G +3.092(utput. If)-3.092 F 3.092(an)3.092 G(umeric)-3.092 E(ar)144 372 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 588 Q F1(display\255shell\255v)108 600 Q -(ersion \(C\255x C\255v\))-.1 E F0(Display v)144 612 Q +(ay that it can be made part of an)-.1 F F2(inputr)3.028 E(c)-.37 E F0 +(\214le.)144 384 Q F1(display\255shell\255v)108 396 Q +(ersion \(C\255x C\255v\))-.1 E F0(Display v)144 408 Q (ersion information about the current instance of)-.15 E F1(bash)2.5 E -F0(.)A F1(Pr)87 628.8 Q(ogrammable Completion)-.18 E F0 .146(When w)108 -640.8 R .147(ord completion is attempted for an ar)-.1 F .147 +F0(.)A F1(Pr)87 424.8 Q(ogrammable Completion)-.18 E F0 .147(When w)108 +436.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 652.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) +F2(compspec)108 448.8 Q F0 3.828(\)h)C 1.329 +(as been de\214ned using the)-3.828 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 664.8 Q(acilities are in)-.1 E -.2 -(vo)-.4 G -.1(ke).2 G(d.).1 E .333 -(First, the command name is identi\214ed.)108 681.6 R .334 +F(UIL)-.09 E 1.329(TIN COMMANDS)-.828 F F0(belo)3.579 E 1.329(w\), the) +-.25 F(programmable completion f)108 460.8 Q(acilities are in)-.1 E -.2 +(vo)-.4 G -.1(ke).2 G(d.).1 E .334 +(First, the command name is identi\214ed.)108 477.6 R .333 (If a compspec has been de\214ned for that command, the compspec is) -5.333 F .587 -(used to generate the list of possible completions for the w)108 693.6 R -3.087(ord. If)-.1 F .587(the command w)3.087 F .586 -(ord is a full pathname, a)-.1 F 1.18 -(compspec for the full pathname is searched for \214rst.)108 705.6 R -1.181(If no compspec is found for the full pathname, an)6.181 F -(attempt is made to \214nd a compspec for the portion follo)108 717.6 Q -(wing the \214nal slash.)-.25 E(GNU Bash-3.2)72 768 Q(2007 January 12) -140.96 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 .817(Once a compspec has been found, it is used to generate the \ -list of matching w)108 84 R 3.317(ords. If)-.1 F 3.317(ac)3.317 G .817 -(ompspec is not)-3.317 F(found, the def)108 96 Q(ault)-.1 E/F1 10 -/Times-Bold@0 SF(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 .463 -(First, the actions speci\214ed by the compspec are used.)108 112.8 R -.464(Only matches which are pre\214x)5.464 F .464(ed by the w)-.15 F -.464(ord being)-.1 F .596(completed are returned.)108 124.8 R .596 -(When the)5.596 F F13.096 E F0(or)3.095 E F13.095 E F0 .595 +5.334 F .587 +(used to generate the list of possible completions for the w)108 489.6 R +3.087(ord. If)-.1 F .587(the command w)3.087 F .587 +(ord is a full pathname, a)-.1 F 1.181 +(compspec for the full pathname is searched for \214rst.)108 501.6 R +1.18(If no compspec is found for the full pathname, an)6.181 F +(attempt is made to \214nd a compspec for the portion follo)108 513.6 Q +(wing the \214nal slash.)-.25 E .817(Once a compspec has been found, it\ + is used to generate the list of matching w)108 530.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 +542.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 559.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 571.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 -(shell v)108 136.8 Q(ariable)-.25 E/F2 9/Times-Bold@0 SF(FIGNORE)2.5 E -F0(is used to \214lter the matches.)2.25 E(An)108 153.6 Q 2.585(yc)-.15 -G .085(ompletions speci\214ed by a \214lename e)-2.585 F .085 +(shell v)108 583.2 Q(ariable)-.25 E F3(FIGNORE)2.5 E F0 +(is used to \214lter the matches.)2.25 E(An)108 600 Q 2.585(yc)-.15 G +.085(ompletions speci\214ed by a \214lename e)-2.585 F .085 (xpansion pattern to the)-.15 F F12.585 E F0 .085 (option are generated ne)2.585 F 2.585(xt. The)-.15 F -.1(wo)2.585 G -(rds).1 E .844(generated by the pattern need not match the w)108 165.6 R -.844(ord being completed.)-.1 F(The)5.844 E F2(GLOBIGNORE)3.343 E F0 -.843(shell v)3.093 F .843(ariable is)-.25 F -(not used to \214lter the matches, b)108 177.6 Q(ut the)-.2 E F2 -(FIGNORE)2.5 E F0 -.25(va)2.25 G(riable is used.).25 E(Ne)108 194.4 Q -.32(xt, the string speci\214ed as the ar)-.15 F .32(gument to the)-.18 F -F12.82 E F0 .321(option is considered.)2.821 F .321 -(The string is \214rst split using the)5.321 F .413(characters in the) -108 206.4 R F2(IFS)2.913 E F0 .412(special v)2.663 F .412 +(rds).1 E .843(generated by the pattern need not match the w)108 612 R +.844(ord being completed.)-.1 F(The)5.844 E F3(GLOBIGNORE)3.344 E F0 +.844(shell v)3.094 F .844(ariable is)-.25 F +(not used to \214lter the matches, b)108 624 Q(ut the)-.2 E F3(FIGNORE) +2.5 E F0 -.25(va)2.25 G(riable is used.).25 E(Ne)108 640.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 .412(characters in the)108 +652.8 R F3(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 -.412(Each w)5.412 F .412(ord is then e)-.1 F(xpanded)-.15 E .091 -(using brace e)108 218.4 R .091(xpansion, tilde e)-.15 F .092 -(xpansion, parameter and v)-.15 F .092(ariable e)-.25 F .092 -(xpansion, command substitution, and arith-)-.15 F 1.397(metic e)108 -230.4 R 1.396(xpansion, as described abo)-.15 F 1.696 -.15(ve u)-.15 H -(nder).15 E F2(EXP)3.896 E(ANSION)-.666 E/F3 9/Times-Roman@0 SF(.)A F0 +.413(Each w)5.412 F .413(ord is then e)-.1 F(xpanded)-.15 E .092 +(using brace e)108 664.8 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 +676.8 R 1.396(xpansion, as described abo)-.15 F 1.696 -.15(ve u)-.15 H +(nder).15 E F3(EXP)3.896 E(ANSION)-.666 E/F4 9/Times-Roman@0 SF(.)A F0 1.396(The results are split using the rules described)5.896 F(abo)108 -242.4 Q .509 -.15(ve u)-.15 H(nder).15 E F1 -.75(Wo)2.709 G .209 -(rd Splitting).75 F F0 5.209(.T)C .209(he results of the e)-5.209 F .209 -(xpansion are pre\214x-matched ag)-.15 F .21(ainst the w)-.05 F .21 -(ord being com-)-.1 F(pleted, and the matching w)108 254.4 Q -(ords become the possible completions.)-.1 E 1.238 -(After these matches ha)108 271.2 R 1.538 -.15(ve b)-.2 H 1.238 -(een generated, an).15 F 3.738(ys)-.15 G 1.237 -(hell function or command speci\214ed with the)-3.738 F F13.737 E -F0(and)3.737 E F13.737 E F0 3.375(options is in)108 283.2 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 F2(COMP_LINE)5.876 E F3(,)A F2(COMP_POINT)5.626 E F3(,)A F2 -(COMP_KEY)108 295.2 Q F3(,)A F0(and)2.408 E F2(COMP_TYPE)2.658 E F0 -.25 -(va)2.408 G .157(riables are assigned v).25 F .157 -(alues as described abo)-.25 F .457 -.15(ve u)-.15 H(nder).15 E F1 .157 -(Shell V)2.657 F(ariables)-.92 E F0 5.157(.I)C(f)-5.157 E 3.485(as)108 -307.2 S .986(hell function is being in)-3.485 F -.2(vo)-.4 G -.1(ke).2 G -.986(d, the).1 F F2(COMP_W)3.486 E(ORDS)-.09 E F0(and)3.236 E F2 -(COMP_CW)3.486 E(ORD)-.09 E F0 -.25(va)3.236 G .986 -(riables are also set.).25 F(When)5.986 E .609 -(the function or command is in)108 319.2 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 .608(guments are)-.18 F .073(being completed, the second ar)108 -331.2 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 -.073(ord pre-)-.1 F .608(ceding the w)108 343.2 R .607 -(ord being completed on the current command line.)-.1 F .607 -(No \214ltering of the generated completions)5.607 F(ag)108 355.2 Q .093 -(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 -367.2 Q(An)108 384 Q 2.938(yf)-.15 G .437(unction speci\214ed with) --2.938 F F12.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 +688.8 Q .51 -.15(ve u)-.15 H(nder).15 E F1 -.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 700.8 Q +(ords become the possible completions.)-.1 E 1.237 +(After these matches ha)108 717.6 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 F13.738 E +F0(and)3.738 E F13.738 E F0 2.159(options is in)108 729.6 R -.2 +(vo)-.4 G -.1(ke).2 G 4.659(d. When).1 F 2.159 +(the command or function is in)4.659 F -.2(vo)-.4 G -.1(ke).2 G 2.158 +(d, the).1 F F3(COMP_LINE)4.658 E F0(and)4.408 E F3(COMP_POINT)4.658 E +F0(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(41)199.835 E 0 Cg EP +%%Page: 42 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 -.25(va)108 84 S 2.345(riables are assigned v).25 F 2.345 +(alues as described abo)-.25 F 2.645 -.15(ve u)-.15 H(nder).15 E/F1 10 +/Times-Bold@0 SF 2.345(Shell V)4.845 F(ariables)-.92 E F0 7.345(.I)C +4.846(fas)-7.345 G 2.346(hell function is being)-4.846 F(in)108 96 Q -.2 +(vo)-.4 G -.1(ke).2 G .657(d, the).1 F/F2 9/Times-Bold@0 SF(COMP_W)3.157 +E(ORDS)-.09 E F0(and)2.907 E F2(COMP_CW)3.157 E(ORD)-.09 E F0 -.25(va) +2.906 G .656(riables are also set.).25 F .656 +(When the function or command)5.656 F .527(is in)108 108 R -.2(vo)-.4 G +-.1(ke).2 G .527(d, the \214rst ar).1 F .527 +(gument is the name of the command whose ar)-.18 F .527 +(guments are being completed, the sec-)-.18 F .847(ond ar)108 120 R .847 +(gument is the w)-.18 F .847(ord being completed, and the third ar)-.1 F +.846(gument is the w)-.18 F .846(ord preceding the w)-.1 F .846 +(ord being)-.1 F .499(completed on the current command line.)108 132 R +.499(No \214ltering of the generated completions ag)5.499 F .5 +(ainst the w)-.05 F .5(ord being)-.1 F(completed is performed; the func\ +tion or command has complete freedom in generating the matches.)108 144 +Q(An)108 160.8 Q 2.938(yf)-.15 G .437(unction speci\214ed with)-2.938 F +F12.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 .437 -(acilities, including)-.1 F(the)108 396 Q F1(compgen)2.956 E F0 -.2(bu) -2.956 G .456(iltin described belo).2 F 1.756 -.65(w, t)-.25 H 2.956(og) -.65 G .456(enerate the matches.)-2.956 F .457 -(It must put the possible completions in the)5.456 F F2(COMPREPL)108 408 -Q(Y)-.828 E F0(array v)2.25 E(ariable.)-.25 E(Ne)108 424.8 Q .081 +(acilities, including)-.1 F(the)108 172.8 Q F1(compgen)2.956 E F0 -.2 +(bu)2.956 G .456(iltin described belo).2 F 1.756 -.65(w, t)-.25 H 2.956 +(og).65 G .456(enerate the matches.)-2.956 F .457 +(It must put the possible completions in the)5.456 F F2(COMPREPL)108 +184.8 Q(Y)-.828 E F0(array v)2.25 E(ariable.)-.25 E(Ne)108 201.6 Q .081 (xt, an)-.15 F 2.581(yc)-.15 G .081(ommand speci\214ed with the)-2.581 F F12.581 E F0 .081(option is in)2.581 F -.2(vo)-.4 G -.1(ke).2 G 2.581(di).1 G 2.58(na)-2.581 G 2.58(ne)-2.58 G -.4(nv)-2.58 G .08 (ironment equi).4 F -.25(va)-.25 G .08(lent to command sub-).25 F 2.858 -(stitution. It)108 436.8 R .359(should print a list of completions, one\ +(stitution. It)108 213.6 R .359(should print a list of completions, one\ per line, to the standard output.)2.858 F .359(Backslash may be used) -5.359 F(to escape a ne)108 448.8 Q(wline, if necessary)-.25 E(.)-.65 E -.377(After all of the possible completions are generated, an)108 465.6 R +5.359 F(to escape a ne)108 225.6 Q(wline, if necessary)-.25 E(.)-.65 E +.377(After all of the possible completions are generated, an)108 242.4 R 2.877<798c>-.15 G .377(lter speci\214ed with the)-2.877 F F12.876 -E F0 .376(option is applied to the)2.876 F 3.181(list. The)108 477.6 R +E F0 .376(option is applied to the)2.876 F 3.181(list. The)108 254.4 R .681(\214lter is a pattern as used for pathname e)3.181 F .681 (xpansion; a)-.15 F F1(&)3.181 E F0 .682 (in the pattern is replaced with the te)3.182 F .682(xt of)-.15 F .523 -(the w)108 489.6 R .523(ord being completed.)-.1 F 3.023(Al)5.523 G +(the w)108 266.4 R .523(ord being completed.)-.1 F 3.023(Al)5.523 G (iteral)-3.023 E F1(&)3.023 E F0 .522 (may be escaped with a backslash; the backslash is remo)3.022 F -.15(ve) --.15 G 3.022(db).15 G(efore)-3.022 E .849(attempting a match.)108 501.6 +-.15 G 3.022(db).15 G(efore)-3.022 E .849(attempting a match.)108 278.4 R(An)5.849 E 3.349(yc)-.15 G .849 (ompletion that matches the pattern will be remo)-3.349 F -.15(ve)-.15 G 3.35(df).15 G .85(rom the list.)-3.35 F 3.35(Al)5.85 G(eading)-3.35 E F1 -(!)3.35 E F0(ne)108 513.6 Q -.05(ga)-.15 G +(!)3.35 E F0(ne)108 290.4 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 530.4 Q 3.087(,a)-.65 G .887 -.15(ny p)-3.087 H +(d.).15 E(Finally)108 307.2 Q 3.087(,a)-.65 G .887 -.15(ny p)-3.087 H .587(re\214x and suf).15 F .587(\214x speci\214ed with the)-.25 F F1 3.087 E F0(and)3.087 E F13.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 542.4 Q .246(If the pre)108 559.2 R .247 +possible completions.)108 319.2 Q .246(If the pre)108 336 R .247 (viously-applied actions do not generate an)-.25 F 2.747(ym)-.15 G .247 (atches, and the)-2.747 F F1 .247(\255o dir)2.747 F(names)-.15 E F0 .247 -(option w)2.747 F .247(as supplied to)-.1 F F1(complete)108 571.2 Q F0 +(option w)2.747 F .247(as supplied to)-.1 F F1(complete)108 348 Q F0 (when the compspec w)2.5 E (as de\214ned, directory name completion is attempted.)-.1 E .462 -(If the)108 588 R F1 .462(\255o plusdirs)2.962 F F0 .462(option w)2.962 -F .462(as supplied to)-.1 F F1(complete)2.962 E F0 .462 +(If the)108 364.8 R F1 .462(\255o plusdirs)2.962 F F0 .462(option w) +2.962 F .462(as supplied to)-.1 F F1(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 600 Q 2.5(ym)-.15 G +F(pletion is attempted and an)108 376.8 Q 2.5(ym)-.15 G (atches are added to the results of the other actions.)-2.5 E .559 -(By def)108 616.8 R .559(ault, if a compspec is found, whate)-.1 F -.15 +(By def)108 393.6 R .559(ault, if a compspec is found, whate)-.1 F -.15 (ve)-.25 G 3.059(ri).15 G 3.059(tg)-3.059 G .56 (enerates is returned to the completion code as the full set)-3.059 F -.632(of possible completions.)108 628.8 R .632(The def)5.632 F(ault)-.1 +.632(of possible completions.)108 405.6 R .632(The def)5.632 F(ault)-.1 E F1(bash)3.132 E F0 .631 (completions are not attempted, and the readline def)3.131 F .631 -(ault of \214le-)-.1 F .558(name completion is disabled.)108 640.8 R +(ault of \214le-)-.1 F .558(name completion is disabled.)108 417.6 R .558(If the)5.558 F F1 .559(\255o bashdefault)3.059 F F0 .559(option w) 3.059 F .559(as supplied to)-.1 F F1(complete)3.059 E F0 .559 -(when the compspec)3.059 F -.1(wa)108 652.8 S 3.172(sd).1 G .672 +(when the compspec)3.059 F -.1(wa)108 429.6 S 3.172(sd).1 G .672 (e\214ned, the)-3.172 F F1(bash)3.172 E F0(def)3.172 E .671 (ault completions are attempted if the compspec generates no matches.) --.1 F .671(If the)5.671 F F13.171 E(default)108 664.8 Q F0 1.207 +-.1 F .671(If the)5.671 F F13.171 E(default)108 441.6 Q F0 1.207 (option w)3.706 F 1.207(as supplied to)-.1 F F1(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.207(ault completion)-.1 F (will be performed if the compspec \(and, if attempted, the def)108 -676.8 Q(ault)-.1 E F1(bash)2.5 E F0(completions\) generate no matches.) +453.6 Q(ault)-.1 E F1(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 693.6 R .632(tions force\ +desired, the programmable completion func-)108 470.4 R .632(tions force\ readline to append a slash to completed names which are symbolic links\ - to directories, subject)108 705.6 R 2.762(to the v)108 717.6 R 2.762 + to directories, subject)108 482.4 R 2.762(to the v)108 494.4 R 2.762 (alue of the)-.25 F F1(mark\255dir)5.262 E(ectories)-.18 E F0 2.761 (readline v)5.262 F 2.761(ariable, re)-.25 F -.05(ga)-.15 G 2.761 -(rdless of the setting of the).05 F F1(mark-sym-)5.261 E(link)108 729.6 -Q(ed\255dir)-.1 E(ectories)-.18 E F0(readline v)2.5 E(ariable.)-.25 E -(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 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.95/Times-Bold@0 SF(HIST)72 84 Q(OR)-.197 E(Y)-.383 E F0 -.371(When the)108 96 R/F2 10/Times-Bold@0 SF .371(\255o history)2.871 F -F0 .371(option to the)2.871 F F2(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/F3 +(rdless of the setting of the).05 F F1(mark-sym-)5.261 E(link)108 506.4 +Q(ed\255dir)-.1 E(ectories)-.18 E F0(readline v)2.5 E(ariable.)-.25 E/F3 +10.95/Times-Bold@0 SF(HIST)72 523.2 Q(OR)-.197 E(Y)-.383 E F0 .371 +(When the)108 535.2 R F1 .371(\255o history)2.871 F F0 .371 +(option to the)2.871 F F1(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 .032 -(the list of commands pre)108 108 R .031(viously typed.)-.25 F .031 -(The v)5.031 F .031(alue of the)-.25 F F2(HISTSIZE)2.531 E F0 -.25(va) +(the list of commands pre)108 547.2 R .031(viously typed.)-.25 F .031 +(The v)5.031 F .031(alue of the)-.25 F F1(HISTSIZE)2.531 E F0 -.25(va) 2.531 G .031(riable is used as the number of com-).25 F .429 -(mands to sa)108 120 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/F4 -9/Times-Bold@0 SF(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 132 R .287(ariable e)-.25 F .287(xpansion \(see)-.15 F F4(EXP)2.787 -E(ANSION)-.666 E F0(abo)2.537 E -.15(ve)-.15 G(\)).15 E -.2(bu)108 144 S -4.065(ta).2 G 1.565(fter history e)-4.065 F 1.565 +(mands to sa)108 559.2 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 F2 +(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 +571.2 R .287(ariable e)-.25 F .287(xpansion \(see)-.15 F F2(EXP)2.787 E +(ANSION)-.666 E F0(abo)2.537 E -.15(ve)-.15 G(\)).15 E -.2(bu)108 583.2 +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 F4(HISTIGNORE)4.065 E F0 -(and)3.816 E F4(HISTCONTR)108 156 Q(OL)-.27 E/F5 9/Times-Roman@0 SF(.)A -F0 .082 +(alues of the shell v)-.25 F(ariables)-.25 E F2(HISTIGNORE)4.065 E F0 +(and)3.816 E F2(HISTCONTR)108 595.2 Q(OL)-.27 E/F5 9/Times-Roman@0 SF(.) +A F0 .082 (On startup, the history is initialized from the \214le named by the v) -108 172.8 R(ariable)-.25 E F4(HISTFILE)2.582 E F0(\(def)2.332 E(ault)-.1 -E F3(~/.bash_history)2.582 E F0(\).)A .315(The \214le named by the v)108 -184.8 R .315(alue of)-.25 F F4(HISTFILE)2.815 E F0 .315 +108 612 R(ariable)-.25 E F2(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 +624 R .315(alue of)-.25 F F2(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 196.8 R .532(alue of)-.25 F F4 -(HISTFILESIZE)3.032 E F5(.)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 -208.8 R 1.159(wed immediately by a digit are interpreted as timestamps \ -for the preceding)-.25 F .053(history line.)108 220.8 R .053 -(These timestamps are optionally displayed depending on the v)5.053 F -.052(alue of the)-.25 F F4(HISTTIMEFORMA)2.552 E(T)-.855 E F0 -.25(va) -108 232.8 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 F4 -($HISTSIZE)4.387 E F0 1.887(lines are copied from the history list to) -4.137 F F4($HISTFILE)108 244.8 Q F5(.)A F0 .056(If the)4.556 F F2 -(histappend)2.556 E F0 .056 -(shell option is enabled \(see the description of)2.556 F F2(shopt)2.556 -E F0(under)2.556 E F4 .056(SHELL B)2.556 F(UIL)-.09 E(TIN)-.828 E -(COMMANDS)108 256.8 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 F4(HISTFILE)108 268.8 Q F0 1.114(is uns\ -et, or if the history \214le is unwritable, the history is not sa)3.364 -F -.15(ve)-.2 G 3.614(d. If).15 F(the)3.614 E F5 -.225(va)3.613 G 1.113 -(riable is set, time).225 F 1.251 -(stamps are written to the history \214le, mark)108 280.8 R(ed)-.09 E F0 -1.252(with the history comment character)3.502 F 3.752(,s)-.4 G 3.752 -(ot)-3.752 G(he)-3.752 E 3.752(ym)-.15 G 1.252(ay be preserv)-3.752 F -(ed)-.15 E .105(across shell sessions.)108 292.8 R .105(This uses the h\ -istory comment character to distinguish timestamps from other history) -5.105 F 2.604(lines. After)108 304.8 R(sa)2.604 E .104(ving the history) --.2 F 2.604(,t)-.65 G .104 -(he history \214le is truncated to contain no more than)-2.604 F F4 -(HISTFILESIZE)2.605 E F0 2.605(lines. If)2.355 F F4(HISTFILESIZE)108 -316.8 Q F0(is not set, no truncation is performed.)2.25 E 1.294(The b) -108 333.6 R 1.294(uiltin command)-.2 F F2(fc)3.794 E F0(\(see)3.794 E F4 -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 345.6 S .673(cute a portion of the history list.).15 F(The)5.673 E -F2(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 357.6 R .279 +.315(ontain no more than the number of)-2.815 F .953 +(lines speci\214ed by the v)108 636 R .953(alue of)-.25 F F2 +(HISTFILESIZE)3.453 E F5(.)A F0 .953(When an interacti)5.453 F 1.253 +-.15(ve s)-.25 H .953(hell e).15 F .953(xits, the last)-.15 F F2 +($HISTSIZE)3.452 E F0(lines)3.202 E .649 +(are copied from the history list to)108 648 R F2($HISTFILE)3.15 E F5(.) +A F0 .65(If the)5.15 F F1(histappend)3.15 E F0 .65 +(shell option is enabled \(see the descrip-)3.15 F .141(tion of)108 660 +R F1(shopt)2.641 E F0(under)2.641 E F2 .141(SHELL B)2.641 F(UIL)-.09 E +.141(TIN COMMANDS)-.828 F F0(belo)2.391 E .141 +(w\), the lines are appended to the history \214le, other)-.25 F(-)-.2 E +.572(wise the history \214le is o)108 672 R -.15(ve)-.15 G 3.073 +(rwritten. If).15 F F2(HISTFILE)3.073 E F0 .573 +(is unset, or if the history \214le is unwritable, the history is)2.823 +F 1.142(not sa)108 684 R -.15(ve)-.2 G 3.642(d. After).15 F(sa)3.642 E +1.142(ving the history)-.2 F 3.642(,t)-.65 G 1.141 +(he history \214le is truncated to contain no more than)-3.642 F F2 +(HISTFILESIZE)3.641 E F0 2.5(lines. If)108 696 R F2(HISTFILESIZE)2.5 E +F0(is not set, no truncation is performed.)2.25 E 1.293(The b)108 712.8 +R 1.293(uiltin command)-.2 F F1(fc)3.793 E F0(\(see)3.793 E F2 1.293 +(SHELL B)3.793 F(UIL)-.09 E 1.293(TIN COMMANDS)-.828 F F0(belo)3.543 E +1.294(w\) may be used to list or edit and re-)-.25 F -.15(exe)108 724.8 +S .674(cute a portion of the history list.).15 F(The)5.673 E F1(history) +3.173 E F0 -.2(bu)3.173 G .673 +(iltin may be used to display or modify the history list).2 F +(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(42)199.835 E 0 Cg EP +%%Page: 43 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 .279(and manipulate the history \214le.)108 84 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 369.6 Q -(vide access to the history list.)-.15 E 1.485(The shell allo)108 386.4 -R 1.485(ws control o)-.25 F -.15(ve)-.15 G 3.986(rw).15 G 1.486 +-.2 G .28(ilable in each).25 F(editing mode that pro)108 96 Q +(vide access to the history list.)-.15 E 1.486(The shell allo)108 112.8 +R 1.486(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 F4(HISTCONTR)3.986 -E(OL)-.27 E F0(and)3.736 E F4(HISTIGNORE)108 398.4 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 F2 -(cmdhist)108 410.4 Q F0 .75 +-3.986 G 1.486(he history list.)-3.986 F(The)6.485 E/F1 9/Times-Bold@0 +SF(HISTCONTR)3.985 E(OL)-.27 E F0(and)3.735 E F1(HISTIGNORE)108 124.8 Q +F0 -.25(va)2.707 G .457(riables may be set to cause the shell to sa).25 +F .758 -.15(ve o)-.2 H .458(nly a subset of the commands entered.).15 F +(The)5.458 E/F2 10/Times-Bold@0 SF(cmdhist)108 136.8 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 422.4 R 3.577(,a)-.65 G 1.077 +(the same history entry)108 148.8 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 F2(lithist)3.576 E F0 -.373(shell option causes the shell to sa)108 434.4 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 446.4 R F2(shopt)2.819 E F0 -.2(bu)2.819 G .318 -(iltin belo).2 F 2.818(wu)-.25 G(nder)-2.818 E F4 .318(SHELL B)2.818 F -(UIL)-.09 E .318(TIN COMMANDS)-.828 F F0 .318 +1.077(yntactic correctness.)-3.577 F(The)6.077 E F2(lithist)3.577 E F0 +.374(shell option causes the shell to sa)108 160.8 R .674 -.15(ve t)-.2 +H .374(he command with embedded ne).15 F .373 +(wlines instead of semicolons.)-.25 F .373(See the)5.373 F .318 +(description of the)108 172.8 R F2(shopt)2.818 E F0 -.2(bu)2.818 G .318 +(iltin belo).2 F 2.818(wu)-.25 G(nder)-2.818 E F1 .318(SHELL B)2.818 F +(UIL)-.09 E .318(TIN COMMANDS)-.828 F F0 .319 (for information on setting and)2.568 F(unsetting shell options.)108 -458.4 Q F1(HIST)72 475.2 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 487.2 R .611 -(xpansion feature that is similar to the history e)-.15 F .611 -(xpansion in)-.15 F F2(csh.)3.111 E F0 .611(This section)5.611 F .871 -(describes what syntax features are a)108 499.2 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 511.2 R F2(+H)4.514 E F0 2.014 +184.8 Q/F3 10.95/Times-Bold@0 SF(HIST)72 201.6 Q(OR)-.197 E 2.738(YE) +-.383 G(XP)-2.738 E(ANSION)-.81 E F0 .611 +(The shell supports a history e)108 213.6 R .611 +(xpansion feature that is similar to the history e)-.15 F .61 +(xpansion in)-.15 F F2(csh.)3.11 E F0 .61(This section)5.61 F .87 +(describes what syntax features are a)108 225.6 R -.25(va)-.2 G 3.371 +(ilable. This).25 F .871(feature is enabled by def)3.371 F .871 +(ault for interacti)-.1 F 1.171 -.15(ve s)-.25 H .871(hells, and).15 F +2.014(can be disabled using the)108 237.6 R F2(+H)4.514 E F0 2.014 (option to the)4.514 F F2(set)4.514 E F0 -.2(bu)4.514 G 2.014 -(iltin command \(see).2 F F4 2.014(SHELL B)4.514 F(UIL)-.09 E 2.014 -(TIN COMMANDS)-.828 F F0(belo)108 523.2 Q 2.5(w\). Non-interacti)-.25 F +(iltin command \(see).2 F F1 2.013(SHELL B)4.513 F(UIL)-.09 E 2.013 +(TIN COMMANDS)-.828 F F0(belo)108 249.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 540 R 1.306 +(xpansion by def)-.15 E(ault.)-.1 E 1.305(History e)108 266.4 R 1.305 (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 552 R .209(guments to a pre)-.18 F .21 + input stream, making it easy to repeat)-.1 F .21 +(commands, insert the ar)108 278.4 R .21(guments to a pre)-.18 F .209 (vious command into the current input line, or \214x errors in pre)-.25 -F(vious)-.25 E(commands quickly)108 564 Q(.)-.65 E 1.164(History e)108 -580.8 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 592.8 S 3.2 +F(vious)-.25 E(commands quickly)108 290.4 Q(.)-.65 E 1.163(History e)108 +307.2 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 319.2 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 604.8 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 616.8 R F3 --.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 F3(wor) -3.163 E(ds)-.37 E F0 5.663(.V)C(arious)-6.773 E F3(modi\214er)108 628.8 -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 640.8 R -.15 -(ve)-.25 G(ral).15 E F3(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 652.8 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 664.8 Q +3.2 F 4.367(substitution. The)108 331.2 R 1.868(second is to select por\ +tions of that line for inclusion into the current one.)4.367 F 1.868 +(The line)6.868 F .663(selected from the history is the)108 343.2 R/F4 +10/Times-Italic@0 SF -.15(ev)3.163 G(ent).15 E F0 3.163(,a)C .663 +(nd the portions of that line that are acted upon are)-3.163 F F4(wor) +3.162 E(ds)-.37 E F0 5.662(.V)C(arious)-6.772 E F4(modi\214er)108 355.2 +Q(s)-.1 E F0 .226(are a)2.726 F -.25(va)-.2 G .226 +(ilable to manipulate the selected w).25 F 2.726(ords. The)-.1 F .227 +(line is brok)2.726 F .227(en into w)-.1 F .227(ords in the same f)-.1 F +(ashion)-.1 E .352(as when reading input, so that se)108 367.2 R -.15 +(ve)-.25 G(ral).15 E F4(metac)2.852 E(har)-.15 E(acter)-.15 E F0 .351 +(-separated w)B .351(ords surrounded by quotes are considered)-.1 F .624 +(one w)108 379.2 R 3.124(ord. History)-.1 F -.15(ex)3.124 G .624 +(pansions are introduced by the appearance of the history e).15 F .625 +(xpansion character)-.15 F 3.125(,w)-.4 G(hich)-3.125 E(is)108 391.2 Q F2(!)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 681.6 Q -.15(ve)-.25 G +-2.5 E(xpansion character)-.15 E(.)-.55 E(Se)108 408 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 693.6 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 705.6 Q(xpansion.)-.15 E(Se)108 722.4 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(GNU Bash-3.2)72 768 Q -(2007 January 12)140.96 E(43)190.95 E 0 Cg EP -%%Page: 44 44 +F .03(xpansion character)-.15 F(,)-.4 E -2.15 -.25(ev e)108 420 T 3.162 +(ni).25 G 3.162(fi)-3.162 G 3.162(ti)-3.162 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.163 E F0 +(will also inhibit e)108 432 Q(xpansion.)-.15 E(Se)108 448.8 Q -.15(ve) +-.25 G .11(ral shell options settable with the).15 F F2(shopt)2.61 E F0 +-.2(bu)2.61 G .109(iltin may be used to tailor the beha).2 F .109 +(vior of history e)-.2 F(xpansion.)-.15 E 1.258(If the)108 460.8 R F2 +(histv)3.758 E(erify)-.1 E F0 1.259 +(shell option is enabled \(see the description of the)3.758 F F2(shopt) +3.759 E F0 -.2(bu)3.759 G 1.259(iltin\), and).2 F F2 -.18(re)3.759 G +(adline).18 E F0 1.259(is being)3.759 F 1.498(used, history substitutio\ +ns are not immediately passed to the shell parser)108 472.8 R 6.497(.I) +-.55 G 1.497(nstead, the e)-6.497 F 1.497(xpanded line is)-.15 F 2.228 +(reloaded into the)108 484.8 R F2 -.18(re)4.728 G(adline).18 E F0 2.228 +(editing b)4.728 F(uf)-.2 E 2.228(fer for further modi\214cation.)-.25 F +(If)7.228 E F2 -.18(re)4.728 G(adline).18 E F0 2.228 +(is being used, and the)4.728 F F2(histr)108 496.8 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 508.8 S -.25(ff).2 G +1.16(er for correction.).25 F(The)6.16 E F23.66 E F0 1.16 +(option to the)3.66 F F2(history)3.66 E F0 -.2(bu)3.661 G 1.161 +(iltin command may be used to see what a history).2 F -.15(ex)108 520.8 +S .056(pansion will do before using it.).15 F(The)5.056 E F22.556 +E F0 .056(option to the)2.556 F F2(history)2.555 E F0 -.2(bu)2.555 G +.055(iltin may be used to add commands to the).2 F +(end of the history list without actually e)108 532.8 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 549.6 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(description of)108 561.6 +Q F2(histchars)2.5 E F0(abo)2.5 E .3 -.15(ve u)-.15 H(nder).15 E F2 +(Shell V)2.5 E(ariables)-.92 E F0(\).)A F2(Ev)87 578.4 Q +(ent Designators)-.1 E F0(An e)108 590.4 Q -.15(ve)-.25 G(nt designator\ + is a reference to a command line entry in the history list.).15 E F2(!) +108 607.2 Q F0 1.608(Start a history substitution, e)32.67 F 1.608 +(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.607(line, carriage return, = or \().25 F +(\(when the)144 619.2 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 631.2 Q F4(n)A F0(Refer to command line)27.67 E +F4(n)2.5 E F0(.).24 E F2<21ad>108 643.2 Q F4(n)A F0 +(Refer to the current command line minus)21.97 E F4(n)2.5 E F0(.).24 E +F2(!!)108 655.2 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 667.2 Q F4(string) +A F0(Refer to the most recent command starting with)9.33 E F4(string)2.5 +E F0(.).22 E F2(!?)108 679.2 Q F4(string)A F2([?])A F0 1.022 +(Refer to the most recent command containing)144 691.2 R F4(string)3.522 +E F0 6.022(.T).22 G 1.022(he trailing)-6.022 F F2(?)3.522 E F0 1.022 +(may be omitted if)3.522 F F4(string)3.862 E F0(is)3.742 E(follo)144 +703.2 Q(wed immediately by a ne)-.25 E(wline.)-.25 E(GNU Bash-3.2)72 768 +Q(2006 Jan 26)149.845 E(43)199.835 E 0 Cg EP +%%Page: 44 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 1.259(If the)108 84 R/F1 10/Times-Bold@0 SF(histv)3.759 E(erify) --.1 E F0 1.259(shell option is enabled \(see the description of the) -3.759 F F1(shopt)3.759 E F0 -.2(bu)3.759 G 1.259(iltin\), and).2 F F1 --.18(re)3.758 G(adline).18 E F0 1.258(is being)3.758 F 1.497(used, hist\ -ory substitutions are not immediately passed to the shell parser)108 96 -R 6.498(.I)-.55 G 1.498(nstead, the e)-6.498 F 1.498(xpanded line is) --.15 F 2.228(reloaded into the)108 108 R F1 -.18(re)4.728 G(adline).18 E -F0 2.228(editing b)4.728 F(uf)-.2 E 2.228 -(fer for further modi\214cation.)-.25 F(If)7.228 E F1 -.18(re)4.728 G -(adline).18 E F0 2.228(is being used, and the)4.728 F F1(histr)108 120 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 F1 -.18(re) -3.702 G(adline).18 E F0(editing)3.702 E -.2(bu)108 132 S -.25(ff).2 G -1.161(er for correction.).25 F(The)6.161 E F13.661 E F0 1.161 -(option to the)3.661 F F1(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 144 S -.055(pansion will do before using it.).15 F(The)5.055 E F12.555 E -F0 .055(option to the)2.555 F F1(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 156 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 172.8 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 -184.8 R F1(histchars)3.646 E F0(abo)3.646 E 1.446 -.15(ve u)-.15 H(nder) -.15 E F1 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 196.8 Q F1 -(Ev)87 213.6 Q(ent Designators)-.1 E F0(An e)108 225.6 Q -.15(ve)-.25 G -(nt designator is a reference to a command line entry in the history li\ -st.).15 E F1(!)108 242.4 Q F0 1.608(Start a history substitution, e) -32.67 F 1.608(xcept when follo)-.15 F 1.607(wed by a)-.25 F F1(blank) -4.107 E F0 4.107(,n)C -.25(ew)-4.107 G 1.607 -(line, carriage return, = or \().25 F(\(when the)144 254.4 Q F1(extglob) -2.5 E F0(shell option is enabled using the)2.5 E F1(shopt)2.5 E F0 -.2 -(bu)2.5 G(iltin\).).2 E F1(!)108 266.4 Q/F2 10/Times-Italic@0 SF(n)A F0 -(Refer to command line)27.67 E F2(n)2.5 E F0(.).24 E F1<21ad>108 278.4 Q -F2(n)A F0(Refer to the current command line minus)21.97 E F2(n)2.5 E F0 -(.).24 E F1(!!)108 290.4 Q F0(Refer to the pre)29.34 E(vious command.) --.25 E(This is a synon)5 E(ym for `!\2551'.)-.15 E F1(!)108 302.4 Q F2 -(string)A F0(Refer to the most recent command starting with)9.33 E F2 -(string)2.5 E F0(.).22 E F1(!?)108 314.4 Q F2(string)A F1([?])A F0 1.022 -(Refer to the most recent command containing)144 326.4 R F2(string)3.522 -E F0 6.022(.T).22 G 1.022(he trailing)-6.022 F F1(?)3.522 E F0 1.022 -(may be omitted if)3.522 F F2(string)3.862 E F0(is)3.742 E(follo)144 -338.4 Q(wed immediately by a ne)-.25 E(wline.)-.25 E/F3 12/Times-Bold@0 -SF(^)108 355.4 Q F2(string1)-5 I F3(^)5 I F2(string2)-5 I F3(^)5 I F0 -2.63(Quick substitution.)144 362.4 R 2.629 -(Repeat the last command, replacing)7.629 F F2(string1)5.469 E F0(with) -5.129 E F2(string2)5.129 E F0 7.629(.E).02 G(qui)-7.629 E -.25(va)-.25 G -2.629(lent to).25 F -.74(``)144 374.4 S(!!:s/).74 E F2(string1)A F0(/)A -F2(string2)A F0(/')A 2.5('\()-.74 G(see)-2.5 E F1(Modi\214ers)2.5 E F0 -(belo)2.5 E(w\).)-.25 E F1(!#)108 386.4 Q F0 -(The entire command line typed so f)27.67 E(ar)-.1 E(.)-.55 E F1 -.75 -(Wo)87 403.2 S(rd Designators).75 E F0 -.8(Wo)108 415.2 S 1.313 +-.35 E/F1 12/Times-Bold@0 SF(^)108 89 Q/F2 10/Times-Italic@0 SF(string1) +-5 I F1(^)5 I F2(string2)-5 I F1(^)5 I F0 2.63(Quick substitution.)144 +96 R 2.629(Repeat the last command, replacing)7.629 F F2(string1)5.469 E +F0(with)5.129 E F2(string2)5.129 E F0 7.629(.E).02 G(qui)-7.629 E -.25 +(va)-.25 G 2.629(lent to).25 F -.74(``)144 108 S(!!:s/).74 E F2(string1) +A F0(/)A F2(string2)A F0(/')A 2.5('\()-.74 G(see)-2.5 E/F3 10 +/Times-Bold@0 SF(Modi\214ers)2.5 E F0(belo)2.5 E(w\).)-.25 E F3(!#)108 +120 Q F0(The entire command line typed so f)27.67 E(ar)-.1 E(.)-.55 E F3 +-.75(Wo)87 136.8 S(rd Designators).75 E F0 -.8(Wo)108 148.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 F1(:)3.814 E F0 1.314 +-.1 F -.15(ve)-.25 G 3.814(nt. A).15 F F3(:)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 427.2 R .529(ord designator)-.1 F 5.529(.I)-.55 G +.53(from the w)108 160.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 F1(^)3.029 E F0(,)A F1 -($)3.029 E F0(,)A F1(*)3.029 E F0(,)A F13.029 E F0 3.029(,o)C(r) --3.029 E F1(%)3.029 E F0 5.529(.W)C(ords)-6.329 E 1.3 -(are numbered from the be)108 439.2 R 1.3 +(ord designator be)-.1 F .529(gins with a)-.15 F F3(^)3.029 E F0(,)A F3 +($)3.029 E F0(,)A F3(*)3.029 E F0(,)A F33.029 E F0 3.029(,o)C(r) +-3.029 E F3(%)3.029 E F0 5.529(.W)C(ords)-6.329 E 1.3 +(are numbered from the be)108 172.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 451.2 Q -F1 2.5(0\()108 468 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 480 Q 2.5 -(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E F2 -(n)108.36 492 Q F0(The)30.64 E F2(n)2.5 E F0(th w)A(ord.)-.1 E F1(^)108 -504 Q F0(The \214rst ar)32.67 E 2.5(gument. That)-.18 F(is, w)2.5 E -(ord 1.)-.1 E F1($)108 516 Q F0(The last ar)31 E(gument.)-.18 E F1(%)108 -528 Q F0(The w)26 E(ord matched by the most recent `?)-.1 E F2(string)A -F0(?' search.)A F2(x)108.77 540 Q F1A F2(y)A F0 2.5(Ar)20.65 G -(ange of w)-2.5 E(ords; `\255)-.1 E F2(y)A F0 2.5('a)C(bbre)-2.5 E -(viates `0\255)-.25 E F2(y)A F0('.)A F1(*)108 552 Q F0 .316 +F(inserted into the current line separated by single spaces.)108 184.8 Q +F3 2.5(0\()108 201.6 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 213.6 Q +2.5(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E +F2(n)108.36 225.6 Q F0(The)30.64 E F2(n)2.5 E F0(th w)A(ord.)-.1 E F3(^) +108 237.6 Q F0(The \214rst ar)32.67 E 2.5(gument. That)-.18 F(is, w)2.5 +E(ord 1.)-.1 E F3($)108 249.6 Q F0(The last ar)31 E(gument.)-.18 E F3(%) +108 261.6 Q F0(The w)26 E(ord matched by the most recent `?)-.1 E F2 +(string)A F0(?' search.)A F2(x)108.77 273.6 Q F3A F2(y)A F0 2.5(Ar) +20.65 G(ange of w)-2.5 E(ords; `\255)-.1 E F2(y)A F0 2.5('a)C(bbre)-2.5 +E(viates `0\255)-.25 E F2(y)A F0('.)A F3(*)108 285.6 Q F0 .316 (All of the w)31 F .316(ords b)-.1 F .316(ut the zeroth.)-.2 F .315 (This is a synon)5.315 F .315(ym for `)-.15 F F2(1\255$)A F0 2.815 -('. It)B .315(is not an error to use)2.815 F F1(*)2.815 E F0 .315 -(if there is)2.815 F(just one w)144 564 Q(ord in the e)-.1 E -.15(ve) --.25 G(nt; the empty string is returned in that case.).15 E F1(x*)108 -576 Q F0(Abbre)26 E(viates)-.25 E F2(x\255$)2.5 E F0(.)A F1<78ad>108 588 -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 -604.8 Q(ord designator is supplied without an e)-.1 E -.15(ve)-.25 G +('. It)B .315(is not an error to use)2.815 F F3(*)2.815 E F0 .315 +(if there is)2.815 F(just one w)144 297.6 Q(ord in the e)-.1 E -.15(ve) +-.25 G(nt; the empty string is returned in that case.).15 E F3(x*)108 +309.6 Q F0(Abbre)26 E(viates)-.25 E F2(x\255$)2.5 E F0(.)A F3<78ad>108 +321.6 Q F0(Abbre)25.3 E(viates)-.25 E F2(x\255$)2.5 E F0(lik)2.5 E(e)-.1 +E F3(x*)2.5 E F0 2.5(,b)C(ut omits the last w)-2.7 E(ord.)-.1 E(If a w) +108 338.4 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 621.6 Q F0 .183 -(After the optional w)108 633.6 R .183(ord designator)-.1 F 2.683(,t)-.4 +-.15(ve)-.25 G(nt.).15 E F3(Modi\214ers)87 355.2 Q F0 .183 +(After the optional w)108 367.2 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 645.6 Q F1(h) -108 662.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 674.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 686.4 Q F0(Remo)31.56 E .3 -.15(ve a t)-.15 H(railing suf).15 E +.184(wing modi\214ers,)-.25 F(each preceded by a `:'.)108 379.2 Q F3(h) +108 396 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 F3 +(t)108 408 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 F3(r) +108 420 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 698.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 710.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(GNU Bash-3.2)72 768 Q(2007 January 12) -140.96 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/F1 10/Times-Bold@0 SF(q)108 84 Q F0(Quote the substituted w)30.44 -E(ords, escaping further substitutions.)-.1 E F1(x)108 96 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 108 Q/F2 10/Times-Italic@0 SF(old)A F1(/)A F2 -(ne)A(w)-.15 E F1(/)A F0(Substitute)144 120 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 -(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 -132 R .617 +(ving the basename.)-.2 E F3(e)108 432 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 F3(p)108 444 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 F3(q)108 456 Q F0(Quote the substituted w) +30.44 E(ords, escaping further substitutions.)-.1 E F3(x)108 468 Q F0 +(Quote the substituted w)31 E(ords as with)-.1 E F3(q)2.5 E F0 2.5(,b)C +(ut break into w)-2.7 E(ords at)-.1 E F3(blanks)2.5 E F0(and ne)2.5 E +(wlines.)-.25 E F3(s/)108 480 Q F2(old)A F3(/)A F2(ne)A(w)-.15 E F3(/)A +F0(Substitute)144 492 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(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 504 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 144 R F2(old)3.396 E F0(and)3.936 E F2(ne)3.526 +F .666(be quoted in)144 516 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 156 R(If) +F0 5.666(.A).77 G .274(single backslash will quote the &.)144 528 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 168 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 180 Q F0(Repeat the pre)27.67 E(vious substitution.)-.25 E F1(g)108 -192 Q F0 .398(Cause changes to be applied o)31 F -.15(ve)-.15 G 2.898 +(ous history substitutions took place, the last)144 540 Q F2(string)2.84 +E F0(in a)2.72 E F3(!?)2.5 E F2(string)A F3([?])A F0(search.)5 E F3(&) +108 552 Q F0(Repeat the pre)27.67 E(vious substitution.)-.25 E F3(g)108 +564 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 204 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 +.397(This is used in conjunction with `)5.398 F F3(:s)A F0 2.897('\()C +(e.g.,)-2.897 E(`)144 576 Q F3(:gs/)A F2(old)A F3(/)A F2(ne)A(w)-.15 E +F3(/)A F0 1.218('\) or `)B F3(:&)A F0 3.718('. If)B 1.218(used with `) +3.718 F F3(: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 216 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 228 Q F0(.)A -F1(G)108 240 Q F0(Apply the follo)28.22 E(wing `)-.25 E F1(s)A F0 2.5 +(delimiter is optional if it is the last character of the e)144 588 R +-.15(ve)-.25 G .089(nt line.).15 F(An)5.089 E F3(a)2.589 E F0 .089 +(may be used as a synon)2.589 F .089(ym for)-.15 F F3(g)144 600 Q F0(.)A +F3(G)108 612 Q F0(Apply the follo)28.22 E(wing `)-.25 E F3(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 256.8 Q(UIL)-.11 E -(TIN COMMANDS)-1.007 E F0 .062(Unless otherwise noted, each b)108 268.8 +(nt line.).15 E/F4 10.95/Times-Bold@0 SF(SHELL B)72 628.8 Q(UIL)-.11 E +(TIN COMMANDS)-1.007 E F0 .062(Unless otherwise noted, each b)108 640.8 R .062(uiltin command documented in this section as accepting options p\ -receded by)-.2 F F1108 280.8 Q F0(accepts)3.8 E F13.8 E F0 1.3 +receded by)-.2 F F3108 652.8 Q F0(accepts)3.8 E F33.8 E F0 1.3 (to signify the end of the options.)3.8 F -.15(Fo)6.3 G 3.8(re).15 G 1.3 -(xample, the)-3.95 F F1(:)3.8 E F0(,)A F1(true)3.8 E F0(,)A F1(false)3.8 -E F0 3.8(,a)C(nd)-3.8 E F1(test)3.8 E F0 -.2(bu)3.8 G 1.3(iltins do not) -.2 F(accept options.)108 292.8 Q F1(:)108 310.8 Q F0([)2.5 E F2(ar)A -(guments)-.37 E F0(])A .451(No ef)144 322.8 R .451 +(xample, the)-3.95 F F3(:)3.8 E F0(,)A F3(true)3.8 E F0(,)A F3(false)3.8 +E F0 3.8(,a)C(nd)-3.8 E F3(test)3.8 E F0 -.2(bu)3.8 G 1.3(iltins do not) +.2 F(accept options.)108 664.8 Q F3(:)108 682.8 Q F0([)2.5 E F2(ar)A +(guments)-.37 E F0(])A .451(No ef)144 694.8 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 334.8 R -(zero e)2.5 E(xit code is returned.)-.15 E F1(.)110.5 351.6 Q F2 +2.952(ys)-.15 G(peci\214ed)-2.952 E 2.5(redirections. A)144 706.8 R +(zero e)2.5 E(xit code is returned.)-.15 E(GNU Bash-3.2)72 768 Q +(2006 Jan 26)149.845 E(44)199.835 E 0 Cg EP +%%Page: 45 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(.)110.5 84 Q/F2 10/Times-Italic@0 SF (\214lename)6.666 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A F1(sour)108 -363.6 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 375.6 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 387.6 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 399.6 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 .832(need not be e)144 411.6 -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 +96 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 108 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 120 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 132 +R/F3 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 F3 -.666(PA) +3.108 G(TH)-.189 E F0 .832(need not be e)144 144 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 423.6 R F4 -.666(PA)3.481 G(TH)-.189 E/F5 9 +(\214le is found in)144 156 R F3 -.666(PA)3.481 G(TH)-.189 E/F4 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 .981(f, the)-.25 F F4 -.666(PA)144 -435.6 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 447.6 Q F0 .342(is e)2.842 F -.15(xe)-.15 G 2.842 +(iltin command is turned of).2 F .981(f, the)-.25 F F3 -.666(PA)144 168 +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 180 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 459.6 R .716 +(status of the last command e)144 192 R .716 (xited within the script \(0 if no commands are e)-.15 F -.15(xe)-.15 G -.716(cuted\), and f).15 F .716(alse if)-.1 F F2(\214lename)145.91 471.6 -Q F0(is not found or cannot be read.)2.68 E F1(alias)108 488.4 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 500.4 Q F0 2.725(with no ar)5.225 F 2.724 +.716(cuted\), and f).15 F .716(alse if)-.1 F F2(\214lename)145.91 204 Q +F0(is not found or cannot be read.)2.68 E F1(alias)108 220.8 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 232.8 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.224 E -F2(name)144 512.4 Q F0(=)A F2(value)A F0 .58(on standard output.)3.08 F +F2(name)144 244.8 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 524.4 Q F2(value)2.895 E F0 .395(is gi)2.895 F -.15 +3.08 E F0(whose)144 256.8 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 536.4 R 2.554(xpanded. F)-.15 F .054 +(stitution when the alias is e)144 268.8 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 .054(is sup-)2.554 -F 1.314(plied, the name and v)144 548.4 R 1.314 +F 1.314(plied, the name and v)144 280.8 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.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 560.4 Q F1(bg)108 577.2 Q F0([) -2.5 E F2(jobspec)A F0(...])2.5 E .744(Resume each suspended job)144 -589.2 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 601.2 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 613.2 R 2.919(,w)-.4 G .419 +(which no alias has been de\214ned.)144 292.8 Q F1(bg)108 309.6 Q F0([) +2.5 E F2(jobspec)A F0(...])2.5 E .847(Resume each suspended job)144 +321.6 R F2(jobspec)3.347 E F0 .847 +(in the background, as if it had been started with)3.347 F F1(&)3.347 E +F0 5.847(.I)C(f)-5.847 E F2(job-)3.348 E(spec)144 333.6 Q F0 .689 +(is not present, the shell')3.189 F 3.189(sn)-.55 G .689(otion of the) +-3.189 F F2(curr)3.189 E .689(ent job)-.37 F F0 .689(is used.)3.189 F F1 +(bg)5.689 E F2(jobspec)4.929 E F0 .688(returns 0 unless run)3.499 F .418 +(when job control is disabled or)144 345.6 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 625.2 Q(as started without job control.)-.1 -E F1(bind)108 642 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 654 Q F0([)2.5 E F1 +(ot)-2.919 E(found or w)144 357.6 Q(as started without job control.)-.1 +E F1(bind)108 374.4 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 386.4 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 666 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 678 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 690 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 702 Q F2 -.37(re)2.5 G -(adline\255command).37 E F0 .239(Display current)144 714 R F1 -.18(re) +F1-2.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(])A F1(bind)108 398.4 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 410.4 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 422.4 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 434.4 Q F2 -.37(re)2.5 G +(adline\255command).37 E F0 .239(Display current)144 446.4 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 726 R F1 -.18(re)2.975 G(adline).18 E +2.738 F .475(macro, or set a)144 458.4 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 -(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 E(45)190.95 E 0 Cg EP -%%Page: 46 46 +.476(gument is a command as it w)-.18 F .476(ould appear in)-.1 F F2 +(.inputr)144 470.4 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 482.4 R(if supplied, ha)2.5 +E .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 +494.4 Q F2 -.1(ke)2.5 G(ymap)-.2 E F0(Use)180 506.4 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 518.4 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 530.4 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 542.4 Q(d)-.37 E F0(.)A F1144 554.4 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 566.4 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 578.4 +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 590.4 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 602.4 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 614.4 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 626.4 S 2.5(yt).1 G(hat the) +-2.5 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1144 638.4 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 650.4 Q F2(\214lename)2.5 E F0(Read k)180 +662.4 Q .3 -.15(ey b)-.1 H(indings from).15 E F2(\214lename)2.5 E F0(.)A +F1144 674.4 Q F2(function)2.5 E F0(Query about which k)180 686.4 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 698.4 Q F2(function) +2.5 E F0(Unbind all k)180 710.4 Q -.15(ey)-.1 G 2.5(sb).15 G +(ound to the named)-2.5 E F2(function)2.5 E F0(.)A(GNU Bash-3.2)72 768 Q +(2006 Jan 26)149.845 E(45)199.835 E 0 Cg EP +%%Page: 46 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-Italic@0 SF(.inputr)144 84 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 96 R(if supplied, ha)2.5 E -.3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E/F2 10 -/Times-Bold@0 SF144 108 Q F1 -.1(ke)2.5 G(ymap)-.2 E F0(Use)180 -120 Q F1 -.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 F1 -.1(ke)180 132 S(ymap)-.2 E F0 3.193(names are) -5.883 F F1 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 144 Q F0 4.429(,a)C(nd)-4.429 E F1(vi\255insert)4.429 -E F0(.).68 E F1(vi)6.929 E F0 1.929(is equi)4.429 F -.25(va)-.25 G 1.929 -(lent to).25 F F1(vi\255command)4.429 E F0(;)A F1(emacs)4.429 E F0 1.929 -(is equi)4.429 F -.25(va)-.25 G 1.93(lent to).25 F F1(emacs\255standar) -180 156 Q(d)-.37 E F0(.)A F2144 168 Q F0(List the names of all) -27.52 E F2 -.18(re)2.5 G(adline).18 E F0(functions.)2.5 E F2144 -180 Q F0(Display)24.74 E F2 -.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 F2144 192 Q F0(List current)24.19 E -F2 -.18(re)2.5 G(adline).18 E F0(function names and bindings.)2.5 E F2 -144 204 Q F0(Display)26.41 E F2 -.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 216 S 2.5(yt).1 G(hat the)-2.5 -E 2.5(yc)-.15 G(an be re-read.)-2.5 E F2144 228 Q F0(Display)24.74 -E F2 -.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 F2144 240 Q F0(Display)25.3 E F2 -.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 F2144 252 Q F0(List current)23.08 E F2 -.18 -(re)2.5 G(adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E(alues.) --.25 E F2144 264 Q F1(\214lename)2.5 E F0(Read k)180 276 Q .3 -.15 -(ey b)-.1 H(indings from).15 E F1(\214lename)2.5 E F0(.)A F2144 -288 Q F1(function)2.5 E F0(Query about which k)180 300 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 F1 -(function)2.5 E F0(.)A F2144 312 Q F1(function)2.5 E F0 -(Unbind all k)180 324 Q -.15(ey)-.1 G 2.5(sb).15 G(ound to the named) --2.5 E F1(function)2.5 E F0(.)A F2144 336 Q F1 -.1(ke)2.5 G(yseq) --.2 E F0(Remo)180 348 Q .3 -.15(ve a)-.15 H .3 -.15(ny c).15 H -(urrent binding for).15 E F1 -.1(ke)2.5 G(yseq)-.2 E F0(.)A F2144 -360 Q F1 -.1(ke)2.5 G(yseq)-.2 E F2(:)A F1(shell\255command)A F0(Cause) -180 372 Q F1(shell\255command)2.5 E F0(to be e)2.5 E -.15(xe)-.15 G -(cuted whene).15 E -.15(ve)-.25 G(r).15 E F1 -.1(ke)2.5 G(yseq)-.2 E F0 -(is entered.)2.5 E(The return v)144 388.8 Q +-.35 E/F1 10/Times-Bold@0 SF144 84 Q/F2 10/Times-Italic@0 SF -.1 +(ke)2.5 G(yseq)-.2 E F0(Remo)180 96 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 F1 +144 108 Q F2 -.1(ke)2.5 G(yseq)-.2 E F1(:)A F2(shell\255command)A +F0(Cause)180 120 Q F2(shell\255command)2.5 E F0(to be e)2.5 E -.15(xe) +-.15 G(cuted whene).15 E -.15(ve)-.25 G(r).15 E F2 -.1(ke)2.5 G(yseq)-.2 +E F0(is entered.)2.5 E(The return v)144 136.8 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 F2(br)108 -405.6 Q(eak)-.18 E F0([)2.5 E F1(n)A F0(])A .054(Exit from within a)144 -417.6 R F2 -.25(fo)2.554 G(r).25 E F0(,)A F2(while)2.554 E F0(,)A F2 -(until)2.555 E F0 2.555(,o)C(r)-2.555 E F2(select)2.555 E F0 2.555 -(loop. If)2.555 F F1(n)2.555 E F0 .055(is speci\214ed, break)2.555 F F1 -(n)2.555 E F0(le)2.555 E -.15(ve)-.25 G(ls.).15 E F1(n)5.415 E F0 .055 -(must be)2.795 F/F3 10/Symbol SF2.555 E F0(1.)2.555 E(If)144 429.6 Q -F1(n)3.075 E F0 .215(is greater than the number of enclosing loops, all\ +(no).15 G 2.5(ra)-2.5 G 2.5(ne)-2.5 G(rror occurred.)-2.5 E F1(br)108 +153.6 Q(eak)-.18 E F0([)2.5 E F2(n)A F0(])A .054(Exit from within a)144 +165.6 R F1 -.25(fo)2.554 G(r).25 E F0(,)A F1(while)2.554 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.415 E F0 .055 +(must be)2.795 F/F3 10/Symbol SF2.555 E F0(1.)2.555 E(If)144 177.6 Q +F2(n)3.075 E F0 .215(is greater than the number of enclosing loops, all\ enclosing loops are e)2.955 F 2.714(xited. The)-.15 F .214(return v) -2.714 F(alue)-.25 E(is 0 unless the shell is not e)144 441.6 Q -.15(xe) --.15 G(cuting a loop when).15 E F2(br)2.5 E(eak)-.18 E F0(is e)2.5 E --.15(xe)-.15 G(cuted.).15 E F2 -.2(bu)108 458.4 S(iltin).2 E F1 -(shell\255b)2.5 E(uiltin)-.2 E F0([)2.5 E F1(ar)A(guments)-.37 E F0(])A -(Ex)144 470.4 Q .792(ecute the speci\214ed shell b)-.15 F .792 -(uiltin, passing it)-.2 F F1(ar)3.293 E(guments)-.37 E F0 3.293(,a).27 G +2.714 F(alue)-.25 E(is 0 unless the shell is not e)144 189.6 Q -.15(xe) +-.15 G(cuting a loop when).15 E F1(br)2.5 E(eak)-.18 E F0(is e)2.5 E +-.15(xe)-.15 G(cuted.).15 E F1 -.2(bu)108 206.4 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 218.4 Q .792(ecute the speci\214ed shell b)-.15 F .792 +(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 .793(xit status.)-.15 F .793 (This is useful)5.793 F .616 (when de\214ning a function whose name is the same as a shell b)144 -482.4 R .615(uiltin, retaining the functionality of)-.2 F .57(the b)144 -494.4 R .57(uiltin within the function.)-.2 F(The)5.57 E F2(cd)3.07 E F0 +230.4 R .615(uiltin, retaining the functionality of)-.2 F .57(the b)144 +242.4 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(is f)144 506.4 Q(alse if)-.1 -E F1(shell\255b)2.84 E(uiltin)-.2 E F0(is not a shell b)2.74 E -(uiltin command.)-.2 E F2(cd)108 523.2 Q F0([)2.5 E F2(\255L|-P)A F0 2.5 -(][)C F1(dir)-2.5 E F0(])A .21(Change the current directory to)144 535.2 -R F1(dir)2.71 E F0 5.21(.T)C .21(he v)-5.21 F(ariable)-.25 E/F4 9 -/Times-Bold@0 SF(HOME)2.71 E F0 .21(is the def)2.46 F(ault)-.1 E F1(dir) +5.57(.T)-.65 G .57(he return status)-5.57 F(is f)144 254.4 Q(alse if)-.1 +E F2(shell\255b)2.84 E(uiltin)-.2 E F0(is not a shell b)2.74 E +(uiltin command.)-.2 E F1(cd)108 271.2 Q F0([)2.5 E F1(\255L|-P)A F0 2.5 +(][)C F2(dir)-2.5 E F0(])A .21(Change the current directory to)144 283.2 +R F2(dir)2.71 E F0 5.21(.T)C .21(he v)-5.21 F(ariable)-.25 E/F4 9 +/Times-Bold@0 SF(HOME)2.71 E F0 .21(is the def)2.46 F(ault)-.1 E F2(dir) 2.71 E F0 5.21(.T).73 G .21(he v)-5.21 F(ariable)-.25 E F4(CDP)2.71 E -.855(AT)-.666 G(H).855 E F0 .776 -(de\214nes the search path for the directory containing)144 547.2 R F1 +(de\214nes the search path for the directory containing)144 295.2 R F2 (dir)3.276 E F0 5.777(.A).73 G(lternati)-5.777 E 1.077 -.15(ve d)-.25 H .777(irectory names in).15 F F4(CDP)3.277 E -.855(AT)-.666 G(H).855 E F0 -.764(are separated by a colon \(:\).)144 559.2 R 3.264(An)5.764 G .764 +.764(are separated by a colon \(:\).)144 307.2 R 3.264(An)5.764 G .764 (ull directory name in)-3.264 F F4(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 571.2 Q 2.973 -(,i)-.65 G .473(.e., `)-2.973 F(`)-.74 E F2(.)A F0 -.74('')C 5.473(.I) -.74 G(f)-5.473 E F1(dir)3.323 E F0(be)3.703 E .474 +F0 .764(is the same as the current direc-)3.014 F(tory)144 319.2 Q 2.973 +(,i)-.65 G .473(.e., `)-2.973 F(`)-.74 E F1(.)A F0 -.74('')C 5.473(.I) +.74 G(f)-5.473 E F2(dir)3.323 E F0(be)3.703 E .474 (gins with a slash \(/\), then)-.15 F F4(CDP)2.974 E -.855(AT)-.666 G(H) -.855 E F0 .474(is not used. The)2.724 F F22.974 E F0 .474 -(option says to use)2.974 F .58(the ph)144 583.2 R .58 +.855 E F0 .474(is not used. The)2.724 F F12.974 E F0 .474 +(option says to use)2.974 F .58(the ph)144 331.2 R .58 (ysical directory structure instead of follo)-.05 F .579 -(wing symbolic links \(see also the)-.25 F F23.079 E F0 .579 -(option to the)3.079 F F2(set)144 595.2 Q F0 -.2(bu)3.383 G .883 -(iltin command\); the).2 F F23.383 E F0 .884 +(wing symbolic links \(see also the)-.25 F F13.079 E F0 .579 +(option to the)3.079 F F1(set)144 343.2 Q F0 -.2(bu)3.383 G .883 +(iltin command\); the).2 F F13.383 E F0 .884 (option forces symbolic links to be follo)3.384 F 3.384(wed. An)-.25 F -(ar)3.384 E .884(gument of)-.18 F F23.384 E F0(is)3.384 E(equi)144 -607.2 Q -.25(va)-.25 G .063(lent to).25 F F4($OLDPWD)2.563 E/F5 9 +(ar)3.384 E .884(gument of)-.18 F F13.384 E F0(is)3.384 E(equi)144 +355.2 Q -.25(va)-.25 G .063(lent to).25 F F4($OLDPWD)2.563 E/F5 9 /Times-Roman@0 SF(.)A F0 .063(If a non-empty directory name from)4.563 F -F2(CDP)2.562 E -.95(AT)-.74 G(H).95 E F0 .062(is used, or if)2.562 F F2 -2.562 E F0 .062(is the \214rst)2.562 F(ar)144 619.2 Q .116(gument, \ +F1(CDP)2.562 E -.95(AT)-.74 G(H).95 E F0 .062(is used, or if)2.562 F F1 +2.562 E F0 .062(is the \214rst)2.562 F(ar)144 367.2 Q .116(gument, \ and the directory change is successful, the absolute pathname of the ne) -.18 F 2.616(ww)-.25 G .116(orking direc-)-2.716 F 1.165 -(tory is written to the standard output.)144 631.2 R 1.164(The return v) +(tory is written to the standard output.)144 379.2 R 1.164(The return v) 6.164 F 1.164(alue is true if the directory w)-.25 F 1.164 -(as successfully)-.1 F(changed; f)144 643.2 Q(alse otherwise.)-.1 E F2 -(caller)108 660 Q F0([)2.5 E F1 -.2(ex)C(pr).2 E F0(])A .253 -(Returns the conte)144 672 R .254(xt of an)-.15 F 2.754(ya)-.15 G(cti) +(as successfully)-.1 F(changed; f)144 391.2 Q(alse otherwise.)-.1 E F1 +(caller)108 408 Q F0([)2.5 E F2 -.2(ex)C(pr).2 E F0(])A .253 +(Returns the conte)144 420 R .254(xt of an)-.15 F 2.754(ya)-.15 G(cti) -2.754 E .554 -.15(ve s)-.25 H .254 (ubroutine call \(a shell function or a script e).15 F -.15(xe)-.15 G -.254(cuted with the).15 F F2(.)2.754 E F0(or)2.754 E F2(sour)144 684 Q -(ce)-.18 E F0 -.2(bu)3.063 G 3.063(iltins. W).2 F(ithout)-.4 E F1 -.2 -(ex)3.062 G(pr).2 E F0(,)A F2(caller)3.062 E F0 .562 +.254(cuted with the).15 F F1(.)2.754 E F0(or)2.754 E F1(sour)144 432 Q +(ce)-.18 E F0 -.2(bu)3.063 G 3.063(iltins. W).2 F(ithout)-.4 E F2 -.2 +(ex)3.062 G(pr).2 E F0(,)A F1(caller)3.062 E F0 .562 (displays the line number and source \214lename of the current)3.062 F -.253(subroutine call.)144 696 R .253(If a non-ne)5.253 F -.05(ga)-.15 G +.253(subroutine call.)144 444 R .253(If a non-ne)5.253 F -.05(ga)-.15 G (ti).05 E .553 -.15(ve i)-.25 H(nte).15 E .253(ger is supplied as)-.15 F -F1 -.2(ex)2.753 G(pr).2 E F0(,)A F2(caller)2.753 E F0 .254 +F2 -.2(ex)2.753 G(pr).2 E F0(,)A F1(caller)2.753 E F0 .254 (displays the line number)2.754 F 2.754(,s)-.4 G(ub-)-2.754 E 1.327(rou\ tine name, and source \214le corresponding to that position in the curr\ -ent e)144 708 R -.15(xe)-.15 G 1.327(cution call stack.).15 F(This e)144 -720 Q(xtra information may be used, for e)-.15 E .001 +ent e)144 456 R -.15(xe)-.15 G 1.327(cution call stack.).15 F(This e)144 +468 Q(xtra information may be used, for e)-.15 E .001 (xample, to print a stack trace.)-.15 F .001(The current frame is frame) -5.001 F(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 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 3.02(0. The)144 84 R .52(return v)3.02 F .52 +5.001 F 3.02(0. The)144 480 R .52(return v)3.02 F .52 (alue is 0 unless the shell is not e)-.25 F -.15(xe)-.15 G .519 -(cuting a subroutine call or).15 F/F1 10/Times-Italic@0 SF -.2(ex)3.019 -G(pr).2 E F0 .519(does not corre-)3.019 F(spond to a v)144 96 Q -(alid position in the call stack.)-.25 E/F2 10/Times-Bold@0 SF(command) -108 112.8 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 124.8 Q F1(command)2.956 E F0 -(with)3.527 E F1(ar)3.087 E(gs)-.37 E F0 .257 +(cuting a subroutine call or).15 F F2 -.2(ex)3.019 G(pr).2 E F0 .519 +(does not corre-)3.019 F(spond to a v)144 492 Q +(alid position in the call stack.)-.25 E F1(command)108 508.8 Q F0([)2.5 +E F1(\255pVv)A F0(])A F2(command)2.5 E F0([)2.5 E F2(ar)A(g)-.37 E F0 +(...])2.5 E(Run)144 520.8 Q F2(command)2.956 E F0(with)3.527 E F2(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 .502(commands found in the)144 136.8 R/F3 9 -/Times-Bold@0 SF -.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 .501(n, the search for).15 F F1 -(command)3.201 E F0(is)3.771 E .231(performed using a def)144 148.8 R -.231(ault v)-.1 F .231(alue for)-.25 F F2 -.74(PA)2.731 G(TH)-.21 E F0 -.231(that is guaranteed to \214nd all of the standard utilities.)2.731 F -(If)5.232 E .175(either the)144 160.8 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.11(as)144 172.8 S .61(ingle w)-3.11 F +(uiltin commands or)-.2 F .502(commands found in the)144 532.8 R F4 +-.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 F13.002 E F0 .502(option is gi)3.002 +F -.15(ve)-.25 G .501(n, the search for).15 F F2(command)3.201 E F0(is) +3.771 E .231(performed using a def)144 544.8 R .231(ault v)-.1 F .231 +(alue for)-.25 F F1 -.74(PA)2.731 G(TH)-.21 E F0 .231 +(that is guaranteed to \214nd all of the standard utilities.)2.731 F(If) +5.232 E .175(either the)144 556.8 R F12.675 E F0(or)2.675 E F1 +2.675 E F0 .175(option is supplied, a description of)2.675 F F2 +(command)2.875 E F0 .174(is printed.)3.445 F(The)5.174 E F12.674 E +F0 .174(option causes)2.674 F 3.11(as)144 568.8 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 184.8 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 196.8 R F1(command)3.704 E F0 -.1 +-.4 G -.1(ke).2 G F2(command)3.41 E F0 .61(to be displayed; the)3.88 F +F1144 580.8 Q F0 .25(option produces a more v)2.75 F .25 +(erbose description.)-.15 F .249(If the)5.25 F F12.749 E F0(or) +2.749 E F12.749 E F0 .249(option is supplied, the e)2.749 F .249 +(xit status)-.15 F 1.004(is 0 if)144 592.8 R F2(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 208.8 Q F0 1.599(cannot be found, the e)4.869 F 1.599 +(If neither option is supplied and an error occurred or)6.005 F F2 +(command)144.2 604.8 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 220.8 S -(iltin is the e).2 E(xit status of)-.15 E F1(command)2.5 E F0(.).77 E F2 -(compgen)108 237.6 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 249.6 R -F1(wor)2.513 E(d)-.37 E F0 .013(according to the)2.513 F F1(option)2.513 +(xit status of the)-.15 F F1(command)4.098 E F0 -.2(bu)144 616.8 S +(iltin is the e).2 E(xit status of)-.15 E F2(command)2.5 E F0(.).77 E F1 +(compgen)108 633.6 Q F0([)2.5 E F2(option)A F0 2.5(][)C F2(wor)-2.5 E(d) +-.37 E F0(])A .012(Generate possible completion matches for)144 645.6 R +F2(wor)2.513 E(d)-.37 E F0 .013(according to the)2.513 F F2(option)2.513 E F0 .013(s, which may be an)B 2.513(yo)-.15 G(ption)-2.513 E .982 -(accepted by the)144 261.6 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 .981(nd write the matches to the) --3.481 F 1.415(standard output.)144 273.6 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) +(accepted by the)144 657.6 R F1(complete)3.482 E F0 -.2(bu)3.481 G .981 +(iltin with the e).2 F .981(xception of)-.15 F F13.481 E F0(and) +3.481 E F13.481 E F0 3.481(,a)C .981(nd write the matches to the) +-3.481 F 1.415(standard output.)144 669.6 R 1.415(When using the)6.415 F +F13.915 E F0(or)3.915 E F13.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 285.6 Q(acilities, while a)-.1 E -.25(va) +F(grammable completion f)144 681.6 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 309.6 R .352 +-.25 E .352(The matches will be generated in the same w)144 705.6 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 -321.6 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 333.6 Q F1(wor)2.5 E(d)-.37 E F0 -(will be displayed.)2.5 E(The return v)144 357.6 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 374.4 Q F0([)3.265 E F2(\255abcdefgjksuv)A F0 3.265(][)C -F2-3.265 E F1(comp-option)3.265 E F0 3.265(][)C F2-3.265 E -F1(action)3.265 E F0 3.265(][)C F2-3.265 E F1(globpat)3.265 E F0 -3.265(][)C F2-3.265 E F1(wor)3.265 E(dlist)-.37 E F0 3.265(][)C F2 --3.265 E F1(function)3.265 E F0 3.265(][)C F2-3.265 E F1 -(command)108 386.4 Q F0(])A([)144 398.4 Q F2A 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 410.4 Q F0([)2.5 E F1(name)A -F0(...])2.5 E .634(Specify ho)144 422.4 R 3.134(wa)-.25 G -.18(rg)-3.134 -G .634(uments to each).18 F F1(name)3.134 E F0 .634 -(should be completed.)3.134 F .633(If the)5.634 F F23.133 E F0 -.633(option is supplied, or if no)3.133 F .139(options are supplied, e) -144 434.4 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 446.4 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 -(are supplied, all completion speci\214cations.)144 458.4 Q 1.437 +717.6 R(If)5.02 E F2(wor)2.52 E(d)-.37 E F0 .02(is speci\214ed, only) +2.52 F(those completions matching)144 729.6 Q F2(wor)2.5 E(d)-.37 E F0 +(will be displayed.)2.5 E(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E +(46)199.835 E 0 Cg EP +%%Page: 47 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(The return v)144 84 Q(alue is true unless an in)-.25 E -.25(va) +-.4 G(lid option is supplied, or no matches were generated.).25 E/F1 10 +/Times-Bold@0 SF(complete)108 100.8 Q F0([)2.787 E F1(\255abcdefgjksuv)A +F0 2.787(][)C F1-2.787 E/F2 10/Times-Italic@0 SF(comp-option)2.786 +E F0 2.786(][)C F1-2.786 E F2(action)2.786 E F0 2.786(][)C F1 +-2.786 E F2(globpat)2.786 E F0 2.786(][)C F1-2.786 E F2(wor) +2.786 E(dlist)-.37 E F0 2.786(][)C F1-2.786 E F2(pr)2.786 E +(e\214x)-.37 E F0 2.786(][)C F1-2.786 E F2(suf-)2.786 E<8c78>108 +112.8 Q F0(])A([)144 124.8 Q F1A F2(\214lterpat)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(command) +2.5 E F0(])A F2(name)2.5 E F0([)2.5 E F2(name ...)A F0(])A F1 +(complete \255pr)108 136.8 Q F0([)2.5 E F2(name)A F0(...])2.5 E .634 +(Specify ho)144 148.8 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 +160.8 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 172.8 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(are supplied, all completion speci\214cations.)144 +184.8 Q 1.437 (The process of applying these completion speci\214cations when w)144 -482.4 R 1.438(ord completion is attempted is)-.1 F(described abo)144 -494.4 Q .3 -.15(ve u)-.15 H(nder).15 E F2(Pr)2.5 E +208.8 R 1.438(ord completion is attempted is)-.1 F(described abo)144 +220.8 Q .3 -.15(ve u)-.15 H(nder).15 E F1(Pr)2.5 E (ogrammable Completion)-.18 E F0(.)A .556 -(Other options, if speci\214ed, ha)144 518.4 R .856 -.15(ve t)-.2 H .555 +(Other options, if speci\214ed, ha)144 244.8 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 F23.055 E F0(,)A F23.055 E F0 3.055 -(,a)C(nd)-3.055 E F23.055 E F0 .722(options \(and, if necessary) -144 530.4 R 3.222(,t)-.65 G(he)-3.222 E F23.222 E F0(and)3.222 E -F23.222 E F0 .723 +(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 256.8 R 3.222(,t)-.65 G(he)-3.222 E F13.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 542.4 Q F2(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 F2144 554.4 Q -F1(comp-option)2.5 E F0(The)184 566.4 Q F1(comp-option)2.791 E F0 .291 +(sion before the)144 268.8 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 280.8 Q +F2(comp-option)2.5 E F0(The)184 292.8 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 578.4 Q F1 -(comp-option)5 E F0(may be one of:)2.5 E F2(bashdefault)184 590.4 Q F0 -.281(Perform the rest of the def)224 602.4 R(ault)-.1 E F2(bash)2.781 E +(yond the simple)-.15 F(generation of completions.)184 304.8 Q F2 +(comp-option)5 E F0(may be one of:)2.5 E F1(bashdefault)184 316.8 Q F0 +.281(Perform the rest of the def)224 328.8 R(ault)-.1 E F1(bash)2.781 E F0 .281(completions if the compspec generates no)2.781 F(matches.)224 -614.4 Q F2(default)184 626.4 Q F0 2.876(Use readline')10 F 5.376(sd)-.55 +340.8 Q F1(default)184 352.8 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 638.4 Q F2(dir)184 650.4 Q(names)-.15 E F0(Perform directory name c\ -ompletion if the compspec generates no matches.)224 662.4 Q F2 -(\214lenames)184 674.4 Q F0 -.7(Te)224 686.4 S .137(ll readline that th\ +224 364.8 Q F1(dir)184 376.8 Q(names)-.15 E F0(Perform directory name c\ +ompletion if the compspec generates no matches.)224 388.8 Q F1 +(\214lenames)184 400.8 Q F0 -.7(Te)224 412.8 S .137(ll readline that th\ e compspec generates \214lenames, so it can perform an).7 F 2.637<798c> --.15 G(le-)-2.637 E .496(name\255speci\214c processing \(lik)224 698.4 R +-.15 G(le-)-2.637 E .496(name\255speci\214c processing \(lik)224 424.8 R 2.996(ea)-.1 G .496(dding a slash to directory names or suppress-)-2.996 -F(ing trailing spaces\).)224 710.4 Q -(Intended to be used with shell functions.)5 E(GNU Bash-3.2)72 768 Q -(2007 January 12)140.96 E(47)190.95 E 0 Cg EP -%%Page: 48 48 +F(ing trailing spaces\).)224 436.8 Q +(Intended to be used with shell functions.)5 E F1(nospace)184 448.8 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 +460.8 Q F1(plusdirs)184 472.8 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 484.8 R 3.084(ym)-.15 G +.584(atches are added to the results of the other)-3.084 F(actions.)224 +496.8 Q F1144 508.8 Q F2(action)2.5 E F0(The)184 520.8 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 +532.8 Q F0(Alias names.)20.55 E(May also be speci\214ed as)5 E F1 +2.5 E F0(.)A F1(arrayv)184 544.8 Q(ar)-.1 E F0(Array v)224 556.8 Q +(ariable names.)-.25 E F1 4.7(binding Readline)184 568.8 R F0 -.1(ke)2.5 +G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 580.8 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 +592.8 Q F0(Command names.)224 604.8 Q(May also be speci\214ed as)5 E F1 +2.5 E F0(.)A F1(dir)184 616.8 Q(ectory)-.18 E F0(Directory names.) +224 628.8 Q(May also be speci\214ed as)5 E F12.5 E F0(.)A F1 +(disabled)184 640.8 Q F0(Names of disabled shell b)224 652.8 Q(uiltins.) +-.2 E F1(enabled)184 664.8 Q F0(Names of enabled shell b)6.66 E +(uiltins.)-.2 E F1(export)184 676.8 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 688.8 Q F0(File names.)27.22 E +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(function)184 +700.8 Q F0(Names of shell functions.)224 712.8 Q(GNU Bash-3.2)72 768 Q +(2006 Jan 26)149.845 E(47)199.835 E 0 Cg EP +%%Page: 48 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/Times-Bold@0 SF(nospace)184 84 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 96 Q F1(plusdirs) -184 108 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 120 R 3.084(ym)-.15 G .584 -(atches are added to the results of the other)-3.084 F(actions.)224 132 -Q F1144 144 Q/F2 10/Times-Italic@0 SF(action)2.5 E F0(The)184 156 -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 -168 Q F0(Alias names.)20.55 E(May also be speci\214ed as)5 E F12.5 -E F0(.)A F1(arrayv)184 180 Q(ar)-.1 E F0(Array v)224 192 Q -(ariable names.)-.25 E F1 4.7(binding Readline)184 204 R F0 -.1(ke)2.5 G -2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 216 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 228 -Q F0(Command names.)224 240 Q(May also be speci\214ed as)5 E F12.5 -E F0(.)A F1(dir)184 252 Q(ectory)-.18 E F0(Directory names.)224 264 Q -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(disabled)184 276 -Q F0(Names of disabled shell b)224 288 Q(uiltins.)-.2 E F1(enabled)184 -300 Q F0(Names of enabled shell b)6.66 E(uiltins.)-.2 E F1(export)184 -312 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 -324 Q F0(File names.)27.22 E(May also be speci\214ed as)5 E F12.5 -E F0(.)A F1(function)184 336 Q F0(Names of shell functions.)224 348 Q F1 -(gr)184 360 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 -372 Q F0(Help topics as accepted by the)224 384 Q F1(help)2.5 E F0 -.2 -(bu)2.5 G(iltin.).2 E F1(hostname)184 396 Q F0(Hostnames, as tak)224 408 -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 F1(job)184 420 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 432 S -(yw).1 E(ord)-.1 E F0(Shell reserv)224 444 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 -456 Q F0(Names of running jobs, if job control is acti)5.54 E -.15(ve) --.25 G(.).15 E F1(ser)184 468 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 480 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 492 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 504 Q F0 -(Signal names.)14.99 E F1(stopped)184 516 Q F0 +-.35 E/F1 10/Times-Bold@0 SF(gr)184 84 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 96 Q F0(Help topics as accepted by the)224 108 Q F1(help) +2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(hostname)184 120 Q F0 +(Hostnames, as tak)224 132 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 144 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 156 S(yw).1 E(ord)-.1 E F0(Shell reserv)224 168 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 180 Q F0(Names of running jobs, if job control is acti)5.54 +E -.15(ve)-.25 G(.).15 E F1(ser)184 192 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 204 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 216 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 228 Q F0 +(Signal names.)14.99 E F1(stopped)184 240 Q F0 (Names of stopped jobs, if job control is acti)6.66 E -.15(ve)-.25 G(.) -.15 E F1(user)184 528 Q F0(User names.)21.67 E -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1 -.1(va)184 540 S +.15 E F1(user)184 252 Q F0(User names.)21.67 E +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1 -.1(va)184 264 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 552 Q F2 -(globpat)2.5 E F0 1.411(The \214lename e)184 564 R 1.411 -(xpansion pattern)-.15 F F2(globpat)3.911 E F0 1.411(is e)3.911 F 1.411 -(xpanded to generate the possible comple-)-.15 F(tions.)184 576 Q F1 -144 588 Q F2(wor)2.5 E(dlist)-.37 E F0(The)184 600 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 612 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 624 Q(ord being completed.) --.1 E F1144 636 Q F2(command)2.5 E(command)184 648 Q F0 1.055 -(is e)3.555 F -.15(xe)-.15 G 1.055(cuted in a subshell en).15 F 1.056 +(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1144 276 Q/F3 +10/Times-Italic@0 SF(globpat)2.5 E F0 1.411(The \214lename e)184 288 R +1.411(xpansion pattern)-.15 F F3(globpat)3.911 E F0 1.411(is e)3.911 F +1.411(xpanded to generate the possible comple-)-.15 F(tions.)184 300 Q +F1144 312 Q F3(wor)2.5 E(dlist)-.37 E F0(The)184 324 Q F3(wor) +3.639 E(dlist)-.37 E F0 1.14(is split using the characters in the)3.639 +F F2(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 336 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 348 Q(ord being completed.)-.1 E +F1144 360 Q F3(command)2.5 E(command)184 372 Q F0 1.055(is e)3.555 +F -.15(xe)-.15 G 1.055(cuted in a subshell en).15 F 1.056 (vironment, and its output is used as the possible)-.4 F(completions.) -184 660 Q F1144 672 Q F2(function)2.5 E F0 1.181 -(The shell function)184 684 R F2(function)3.681 E F0 1.181(is e)3.681 F +184 384 Q F1144 396 Q F3(function)2.5 E F0 1.181 +(The shell function)184 408 R F3(function)3.681 E F0 1.181(is e)3.681 F -.15(xe)-.15 G 1.181(cuted in the current shell en).15 F 3.68 (vironment. When)-.4 F 1.18(it \214n-)3.68 F .932 -(ishes, the possible completions are retrie)184 696 R -.15(ve)-.25 G -3.432(df).15 G .932(rom the v)-3.432 F .932(alue of the)-.25 F F3 -(COMPREPL)3.432 E(Y)-.828 E F0(array)3.182 E -.25(va)184 708 S(riable.) -.25 E(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 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/Times-Bold@0 SF144 84 Q/F2 10/Times-Italic@0 SF -(\214lterpat)2.5 E(\214lterpat)184 96 Q F0 .733 -(is a pattern as used for \214lename e)3.234 F 3.233(xpansion. It)-.15 F -.733(is applied to the list of possible)3.233 F 1.596 -(completions generated by the preceding options and ar)184 108 R 1.596 -(guments, and each completion)-.18 F(matching)184 120 Q F2(\214lterpat) +(ishes, the possible completions are retrie)184 420 R -.15(ve)-.25 G +3.432(df).15 G .932(rom the v)-3.432 F .932(alue of the)-.25 F F2 +(COMPREPL)3.432 E(Y)-.828 E F0(array)3.182 E -.25(va)184 432 S(riable.) +.25 E F1144 444 Q F3(\214lterpat)2.5 E(\214lterpat)184 456 Q F0 +.733(is a pattern as used for \214lename e)3.234 F 3.233(xpansion. It) +-.15 F .733(is applied to the list of possible)3.233 F 1.596 +(completions generated by the preceding options and ar)184 468 R 1.596 +(guments, and each completion)-.18 F(matching)184 480 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 F2(\214lterpat)3.204 E F0(ne)3.204 E -.05(ga)-.15 G .704 -(tes the pattern;).05 F(in this case, an)184 132 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 F1144 144 Q F2(pr)2.5 E(e\214x)-.37 E(pr) -184 156 Q(e\214x)-.37 E F0 .534(is added at the be)3.034 F .534 +(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 492 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 F1144 504 Q F3(pr)2.5 E(e\214x)-.37 E(pr) +184 516 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 168 Q F1144 180 Q F2(suf)2.5 E +-.15(ve)-.2 G(been applied.)184 528 Q F1144 540 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 .467(The return v)144 196.8 R +E .3 -.15(ve b)-.2 H(een applied.).15 E .467(The return v)144 556.8 R .467(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 208.8 R F2(name)3.861 E F0(ar)3.861 E 1.361 +(plied without a)144 568.8 R F3(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 220.8 Q F0 +1.362(ompletion speci\214cation for a).15 F F3(name)144 580.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(continue)108 237.6 Q F0([)2.5 E F2(n)A F0(])A 1.754(Resume the ne)144 -249.6 R 1.754(xt iteration of the enclosing)-.15 F F1 -.25(fo)4.254 G(r) +F1(continue)108 597.6 Q F0([)2.5 E F3(n)A F0(])A 1.754(Resume the ne)144 +609.6 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.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 261.6 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 +-4.254 E F1(select)4.254 E F0 4.253(loop. If)4.254 F F3(n)4.613 E F0 +1.753(is speci\214ed,)4.493 F 1.208(resume at the)144 621.6 R F3(n)3.709 +E F0 1.209(th enclosing loop.)B F3(n)6.569 E F0 1.209(must be)3.949 F/F4 +10/Symbol SF3.709 E F0 3.709(1. If)3.709 F F3(n)4.069 E F0 1.209 (is greater than the number of enclosing)3.949 F .668 -(loops, the last enclosing loop \(the `)144 273.6 R(`top-le)-.74 E -.15 +(loops, the last enclosing loop \(the `)144 633.6 R(`top-le)-.74 E -.15 (ve)-.25 G(l').15 E 3.168('l)-.74 G .668(oop\) is resumed.)-3.168 F .667 (The return v)5.667 F .667(alue is 0 unless the)-.25 F(shell is not e) -144 285.6 Q -.15(xe)-.15 G(cuting a loop when).15 E F1(continue)2.5 E F0 -(is e)2.5 E -.15(xe)-.15 G(cuted.).15 E F1(declar)108 302.4 Q(e)-.18 E -F0([)2.5 E F1(\255afFirtx)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 -314.4 Q F0([)2.5 E F1(\255afFirtx)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 326.4 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) +144 645.6 Q -.15(xe)-.15 G(cuting a loop when).15 E F1(continue)2.5 E F0 +(is e)2.5 E -.15(xe)-.15 G(cuted.).15 E F1(declar)108 662.4 Q(e)-.18 E +F0([)2.5 E F1(\255afFirtx)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F3 +(name)-2.5 E F0([=)A F3(value)A F0 2.5(].)C(..])-2.5 E F1(typeset)108 +674.4 Q F0([)2.5 E F1(\255afFirtx)A F0 2.5(][)C F1-2.5 E F0 2.5 +(][)C F3(name)-2.5 E F0([=)A F3(value)A F0 2.5(].)C(..])-2.5 E 1.264 +(Declare v)144 686.4 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 F3(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 338.4 +1.265(hen display the v)-3.765 F 1.265(alues of)-.25 F -.25(va)144 698.4 S 3.327(riables. The).25 F F13.327 E F0 .826 (option will display the attrib)3.327 F .826(utes and v)-.2 F .826 -(alues of each)-.25 F F2(name)3.326 E F0 5.826(.W).18 G(hen)-5.826 E F1 +(alues of each)-.25 F F3(name)3.326 E F0 5.826(.W).18 G(hen)-5.826 E F1 3.326 E F0 .826(is used,)3.326 F .22 -(additional options are ignored.)144 350.4 R(The)5.22 E F12.72 E +(additional options are ignored.)144 710.4 R(The)5.22 E F12.72 E F0 .22(option inhibits the display of function de\214nitions; only the) -2.72 F .466(function name and attrib)144 362.4 R .466(utes are printed.) +2.72 F .466(function name and attrib)144 722.4 R .466(utes are printed.) -.2 F .466(If the)5.466 F F1(extdeb)2.966 E(ug)-.2 E F0 .466 (shell option is enabled using)2.966 F F1(shopt)2.966 E F0 2.966(,t)C -(he)-2.966 E 1.308(source \214le name and line number where the functio\ -n is de\214ned are displayed as well.)144 374.4 R(The)6.309 E F1 -3.809 E F0 .191(option implies)144 386.4 R F12.691 E F0 5.191(.T)C -.191(he follo)-5.191 F .191 +(he)-2.966 E(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(48)199.835 E 0 +Cg EP +%%Page: 49 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.308(source \214le name and line number where the function is d\ +e\214ned are displayed as well.)144 84 R(The)6.309 E/F1 10/Times-Bold@0 +SF3.809 E F0 .191(option implies)144 96 R F12.691 E F0 5.191 +(.T)C .191(he follo)-5.191 F .191 (wing options can be used to restrict output to v)-.25 F .19 -(ariables with the speci-)-.25 F(\214ed attrib)144 398.4 Q(ute or to gi) +(ariables with the speci-)-.25 F(\214ed attrib)144 108 Q(ute or to gi) -.2 E .3 -.15(ve v)-.25 H(ariables attrib)-.1 E(utes:)-.2 E F1144 -410.4 Q F0(Each)25.3 E F2(name)2.5 E F0(is an array 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 422.4 Q F0(Use function names only)26.97 E(.)-.65 E F1 -144 434.4 Q F0 .557(The v)27.52 F .558 +120 Q F0(Each)25.3 E/F2 10/Times-Italic@0 SF(name)2.5 E F0 +(is an array 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 132 Q F0(Use function names only) +26.97 E(.)-.65 E F1144 144 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 446.4 Q F0 +(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 156 Q F0 (is performed when the v)2.25 E(ariable is assigned a v)-.25 E(alue.) --.25 E F1144 458.4 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 +-.25 E F1144 168 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 470.4 Q -F1144 482.4 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 494.4 Q(The trace attrib)5 E -(ute has no special meaning for v)-.2 E(ariables.)-.25 E F1144 -506.4 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 523.2 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 1.236 -(to destro)144 535.2 R 3.736(ya)-.1 G 3.737(na)-3.736 G 1.237(rray v) --3.737 F 1.237(ariable and)-.25 F F1 1.237(+r will not r)3.737 F(emo) --.18 E 1.437 -.1(ve t)-.1 H 1.237(he r).1 F 1.237(eadonly attrib)-.18 F -3.737(ute. When)-.2 F 1.237(used in a)3.737 F .312(function, mak)144 -547.2 R .312(es each)-.1 F F2(name)2.812 E F1 .311 -(local, as with the local)2.812 F F0 2.811(command. If)2.811 F 2.811(av) -2.811 G .311(ariable name is follo)-3.061 F .311(wed by)-.25 F(=)144 -559.2 Q F2(value)A F0 3.238(,t)C .738(he v)-3.238 F .738(alue of the v) --.25 F .738(ariable is set to)-.25 F F2(value)3.238 E F0 5.738(.T)C .738 -(he return v)-5.738 F .739(alue is 0 unless an in)-.25 F -.25(va)-.4 G -.739(lid option is).25 F .603 -(encountered, an attempt is made to de\214ne a function using)144 571.2 -R/F5 10/Courier@0 SF .603(\255f foo=bar)3.103 F F0 3.103(,a)C 3.103(na) --3.103 G .603(ttempt is made to)-3.103 F 1.242(assign a v)144 583.2 R -1.242(alue to a readonly v)-.25 F 1.242 -(ariable, an attempt is made to assign a v)-.25 F 1.243 -(alue to an array v)-.25 F(ariable)-.25 E 1.386 -(without using the compound assignment syntax \(see)144 595.2 R F1 -(Arrays)3.886 E F0(abo)3.886 E -.15(ve)-.15 G 1.386(\), one of the).15 F -F2(names)3.886 E F0 1.386(is not a)3.886 F -.25(va)144 607.2 S .171 -(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 .172 -(ariable, an)-.25 F .96(attempt is made to turn of)144 619.2 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 631.2 Q -(xistent function with)-.15 E F12.5 E F0(.)A F1(dirs [+)108 648 Q -F2(n)A F1 2.5(][)C-2.5 E F2(n)A F1 2.5(][)C(\255cplv])-2.5 E F0 -.4 -(Wi)144 660 S .328 +(alues by subsequent)-.25 F(assignment statements or unset.)180 180 Q F1 +144 192 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 204 Q(The trace attrib)5 E(ute has no special meaning for v)-.2 E +(ariables.)-.25 E F1144 216 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 .337(Using `+' instead of `\255' turns of)144 232.8 R +2.837(ft)-.25 G .337(he attrib)-2.837 F .337(ute instead, with the e)-.2 +F .336(xception that)-.15 F F1(+a)2.836 E F0 .336(may not be used)2.836 +F .792(to destro)144 244.8 R 3.293(ya)-.1 G 3.293(na)-3.293 G .793 +(rray v)-3.293 F 3.293(ariable. When)-.25 F .793 +(used in a function, mak)3.293 F .793(es each)-.1 F F2(name)3.293 E F0 +.793(local, as with the)3.293 F F1(local)3.293 E F0 2.843(command. If) +144 256.8 R 2.843(av)2.843 G .342(ariable name is follo)-3.093 F .342 +(wed by =)-.25 F F2(value)A F0 2.842(,t)C .342(he v)-2.842 F .342 +(alue of the v)-.25 F .342(ariable is set to)-.25 F F2(value)2.842 E F0 +5.342(.T)C(he)-5.342 E .8(return v)144 268.8 R .8 +(alue is 0 unless an in)-.25 F -.25(va)-.4 G .801 +(lid option is encountered, an attempt is made to de\214ne a function) +.25 F(using)144 280.8 Q/F4 10/Courier@0 SF 1.039(\255f foo=bar)3.539 F +F0 3.539(,a)C 3.539(na)-3.539 G 1.038(ttempt is made to assign a v) +-3.539 F 1.038(alue to a readonly v)-.25 F 1.038(ariable, an attempt is) +-.25 F .974(made to assign a v)144 292.8 R .974(alue to an array v)-.25 +F .974(ariable without using the compound assignment syntax \(see)-.25 F +F1(Arrays)144 304.8 Q F0(abo)2.86 E -.15(ve)-.15 G .36(\), one of the) +.15 F F2(names)2.86 E F0 .36(is not a v)2.86 F .36(alid shell v)-.25 F +.36(ariable name, an attempt is made to turn of)-.25 F(f)-.25 E .056 +(readonly status for a readonly v)144 316.8 R .057 +(ariable, an attempt is made to turn of)-.25 F 2.557(fa)-.25 G .057 +(rray status for an array v)-2.557 F(ari-)-.25 E +(able, or an attempt is made to display a non-e)144 328.8 Q +(xistent function with)-.15 E F12.5 E F0(.)A F1 +(dirs [\255clpv] [+)108 345.6 Q F2(n)A F1 2.5(][)C-2.5 E F2(n)A F1 +(])A F0 -.4(Wi)144 357.6 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 672 R 1.238 -(Directories are added to the list with the)6.238 F F1(pushd)144 684 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 369.6 R 1.238 +(Directories are added to the list with the)6.238 F F1(pushd)144 381.6 Q F0(command; the)2.5 E F1(popd)2.5 E F0(command remo)2.5 E -.15(ve)-.15 G -2.5(se).15 G(ntries from the list.)-2.5 E F1(+)144 696 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 708 Q(GNU Bash-3.2)72 768 Q -(2007 January 12)140.96 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/F1 10/Times-Bold@0 SF144 84 Q/F2 10/Times-Italic@0 SF(n)A F0 -1.194(Displays the)25.3 F F2(n)3.694 E F0 1.194 +2.5(se).15 G(ntries from the list.)-2.5 E F1(+)144 393.6 Q F2(n)A F0 +1.565(Displays the)25.3 F F2(n)4.065 E F0 1.565 +(th entry counting from the left of the list sho)B 1.564(wn by)-.25 F F1 +(dirs)4.064 E F0 1.564(when in)4.064 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E +(without options, starting with zero.)180 405.6 Q F1144 417.6 Q F2 +(n)A F0 1.194(Displays the)25.3 F F2(n)3.694 E F0 1.194 (th entry counting from the right of the list sho)B 1.194(wn by)-.25 F F1(dirs)3.694 E F0 1.194(when in)3.694 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E -(without options, starting with zero.)180 96 Q F1144 108 Q F0 +(without options, starting with zero.)180 429.6 Q F1144 441.6 Q F0 (Clears the directory stack by deleting all of the entries.)25.86 E F1 -144 120 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 132 Q(.)-.65 E F1144 144 Q F0 +144 453.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 465.6 Q(.)-.65 E F1144 477.6 Q F0 (Print the directory stack with one entry per line.)24.74 E F1144 -156 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 168 Q .257(The return v)144 184.8 R .258 +489.6 Q F0 .272(Print the directory stack with one entry per line, pre\ +\214xing each entry with its inde)25.3 F 2.773(xi)-.15 G 2.773(nt)-2.773 +G(he)-2.773 E(stack.)180 501.6 Q .258(The return v)144 518.4 R .258 (alue is 0 unless an in)-.25 F -.25(va)-.4 G .258 (lid option is supplied or).25 F F2(n)2.758 E F0(inde)2.758 E -.15(xe) -.15 G 2.758(sb).15 G -.15(ey)-2.758 G .258(ond the end of the direc-) -.15 F(tory stack.)144 196.8 Q F1(diso)108 213.6 Q(wn)-.1 E F0([)2.5 E F1 +.15 F(tory stack.)144 530.4 Q F1(diso)108 547.2 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 225.6 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 .243(and neither) -144 237.6 R F1 .243(\255a nor \255r is supplied, the shell')2.743 F -2.743(sn)-.37 G .243(otion of the)-2.743 F F2(curr)2.743 E .243(ent job) --.37 F F1 .243(is used.)2.743 F .244(If the \255h option)5.243 F .334 -(is gi)144 249.6 R -.1(ve)-.1 G .334(n, each).1 F F2(jobspec)4.574 E F0 -.334(is not remo)3.144 F -.15(ve)-.15 G 2.834(df).15 G .334 -(rom the table, b)-2.834 F .334(ut is mark)-.2 F .334(ed so that)-.1 F -/F3 9/Times-Bold@0 SF(SIGHUP)2.834 E F0 .333(is not sent to)2.584 F -1.189(the job if the shell recei)144 261.6 R -.15(ve)-.25 G 3.689(sa).15 -G F3(SIGHUP)A/F4 9/Times-Roman@0 SF(.)A F0 1.189(If no)5.689 F F2 -(jobspec)5.429 E F0 1.189(is present, and neither the)3.999 F F1 -3.689 E F0 1.19(nor the)3.69 F F13.69 E F0 1.57 -(option is supplied, the)144 273.6 R F2(curr)4.07 E 1.57(ent job)-.37 F -F0 1.57(is used.)4.07 F 1.569(If no)6.569 F F2(jobspec)5.809 E F0 1.569 -(is supplied, the)4.379 F F14.069 E F0 1.569(option means to)4.069 -F(remo)144 285.6 Q .903 -.15(ve o)-.15 H 3.103(rm).15 G .603 -(ark all jobs; the)-3.103 F F13.103 E F0 .603(option without a) -3.103 F F2(jobspec)4.843 E F0(ar)3.414 E .604 -(gument restricts operation to running)-.18 F 2.5(jobs. The)144 297.6 R -(return v)2.5 E(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 314.4 Q +(...])2.5 E -.4(Wi)144 559.2 S .33(thout options, each).4 F F2(jobspec) +4.57 E F0 .33(is remo)3.14 F -.15(ve)-.15 G 2.83(df).15 G .331 +(rom the table of acti)-2.83 F .631 -.15(ve j)-.25 H 2.831(obs. If).15 F +(the)2.831 E F12.831 E F0 .331(option is gi)2.831 F -.15(ve)-.25 G +(n,).15 E(each)144 571.2 Q F2(jobspec)4.521 E F0 .281(is not remo)3.091 +F -.15(ve)-.15 G 2.78(df).15 G .28(rom the table, b)-2.78 F .28 +(ut is mark)-.2 F .28(ed so that)-.1 F F3(SIGHUP)2.78 E F0 .28 +(is not sent to the job if)2.53 F .223(the shell recei)144 583.2 R -.15 +(ve)-.25 G 2.724(sa).15 G F3(SIGHUP)A/F5 9/Times-Roman@0 SF(.)A F0 .224 +(If no)4.724 F F2(jobspec)4.464 E F0 .224(is present, and neither the) +3.034 F F12.724 E F0 .224(nor the)2.724 F F12.724 E F0 .224 +(option is sup-)2.724 F .652(plied, the)144 595.2 R F2(curr)3.152 E .652 +(ent job)-.37 F F0 .652(is used.)3.152 F .652(If no)5.652 F F2(jobspec) +4.892 E F0 .652(is supplied, the)3.462 F F13.152 E F0 .651 +(option means to remo)3.151 F .951 -.15(ve o)-.15 H 3.151(rm).15 G(ark) +-3.151 E .434(all jobs; the)144 607.2 R F12.934 E F0 .434 +(option without a)2.934 F F2(jobspec)4.675 E F0(ar)3.245 E .435 +(gument restricts operation to running jobs.)-.18 F .435(The return) +5.435 F -.25(va)144 619.2 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 636 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 326.4 R F2(ar)2.895 E(g)-.37 E F0 .395 +.395(Output the)144 648 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 338.4 R .548(wline is suppressed.) +(is speci\214ed, the trailing ne)144 660 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 350.4 Q +-.15(ve)-.25 G .548(n, interpretation of the fol-).15 F(lo)144 672 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 362.4 R -.15(ve)-.25 G 4.002(no).15 G +F 1.502(escape characters, e)144 684 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 374.4 R -F1(echo)2.509 E F0 -.15(ex)2.509 G .009(pands these escape characters) -.15 F .659(by def)144 386.4 R(ault.)-.1 E F1(echo)5.659 E F0 .659 +(option may be used to dynamically determine whether or not)144 696 R F1 +(echo)2.509 E F0 -.15(ex)2.509 G .009(pands these escape characters).15 +F .659(by def)144 708 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 398.4 Q -F1(\\a)144 410.4 Q F0(alert \(bell\))28.22 E F1(\\b)144 422.4 Q F0 -(backspace)27.66 E F1(\\c)144 434.4 Q F0(suppress trailing ne)28.78 E -(wline)-.25 E F1(\\e)144 446.4 Q F0(an escape character)28.78 E F1(\\f) -144 458.4 Q F0(form feed)29.89 E F1(\\n)144 470.4 Q F0(ne)27.66 E 2.5 -(wl)-.25 G(ine)-2.5 E F1(\\r)144 482.4 Q F0(carriage return)28.78 E F1 -(\\t)144 494.4 Q F0(horizontal tab)29.89 E F1(\\v)144 506.4 Q F0 -.15 -(ve)28.22 G(rtical tab).15 E F1(\\\\)144 518.4 Q F0(backslash)30.44 E F1 -(\\0)144 530.4 Q F2(nnn)A F0(the eight-bit character whose v)13.22 E +(interprets the follo)3.16 F(wing)-.25 E(escape sequences:)144 720 Q +(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(49)199.835 E 0 Cg EP +%%Page: 50 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(\\a)144 84 Q F0(alert \(bell\))28.22 E F1 +(\\b)144 96 Q F0(backspace)27.66 E F1(\\c)144 108 Q F0 +(suppress trailing ne)28.78 E(wline)-.25 E F1(\\e)144 120 Q F0 +(an escape character)28.78 E F1(\\f)144 132 Q F0(form feed)29.89 E F1 +(\\n)144 144 Q F0(ne)27.66 E 2.5(wl)-.25 G(ine)-2.5 E F1(\\r)144 156 Q +F0(carriage return)28.78 E F1(\\t)144 168 Q F0(horizontal tab)29.89 E F1 +(\\v)144 180 Q F0 -.15(ve)28.22 G(rtical tab).15 E F1(\\\\)144 192 Q F0 +(backslash)30.44 E F1(\\0)144 204 Q/F2 10/Times-Italic@0 SF(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(\\) +144 216 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 -(\(zero to three octal digits\))2.5 E F1(\\x)144 542.4 Q F2(HH)A F0 +(\(one to three octal digits\))2.5 E F1(\\x)144 228 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(enable)108 559.2 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 571.2 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 -583.2 R .834(uiltin to be e)-.2 F -.15(xe)-.15 G .834 -(cuted without specifying a full pathname, e).15 F -.15(ve)-.25 G 3.334 -(nt).15 G(hough)-3.334 E .99(the shell normally searches for b)144 595.2 -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 607.2 R F2(names)4.082 E F0 1.582(are enabled.) +-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1(enable)108 244.8 Q F0([)2.5 E +F1(\255adnps)A 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 256.8 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 268.8 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 280.8 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 292.8 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 619.2 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 631.2 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 304.8 +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 316.8 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 643.2 Q F1 +(ystems that support dynamic loading.)-4.024 F(The)144 328.8 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 655.2 R F1 +-.18 F -.15(ve)-.25 G .366(n, or).15 F .398(if the)144 340.8 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 -667.2 R 2.598(uiltins. If)-.2 F F12.598 E F0 .098 +352.8 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 679.2 R 1.916 +(is supplied, the list printed includes all b)144 364.8 R 1.916 (uiltins, with an indication of whether or not each is)-.2 F 2.879 -(enabled. If)144 691.2 R F12.879 E F0 .379 +(enabled. If)144 376.8 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 703.2 R F2(name)3.854 E F0 .994 +(alue)-.25 E .994(is 0 unless a)144 388.8 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 -715.2 Q(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 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 -2.3 -.15(ev a)108 84 T(l).15 E F0([)2.5 E -/F2 10/Times-Italic@0 SF(ar)A(g)-.37 E F0(...])2.5 E(The)144 96 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 108 R -.15(xe)-.15 G -.495(cuted by the shell, and its e).15 F .495 +400.8 Q F1 -2.3 -.15(ev a)108 417.6 T(l).15 E F0([)2.5 E F2(ar)A(g)-.37 +E F0(...])2.5 E(The)144 429.6 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 441.6 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(or only null ar)144 120 Q +-2.995 F F2(ar)2.995 E(gs)-.37 E F0(,).27 E(or only null ar)144 453.6 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 136.8 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1-2.5 E F2 +(exec)108 470.4 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 148.8 Q F2(command)3.006 E F0 .306 +-.37 E F0(]])A(If)144 482.4 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 160.8 R .176 +(guments)-.37 E F0(become)3.075 E .176(the ar)144 494.4 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 172.8 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 184.8 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 196.8 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 208.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 220.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 232.8 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 244.8 Q 2.5(,t)-.4 G -(he return status is 1.)-2.5 E F1(exit)108 261.6 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 273.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 290.4 Q F0([)2.5 +(ginning of)-.15 F .16(the zeroth ar)144 506.4 R 2.66(gp)-.18 G .16 +(assed to)-2.66 F F2(command)2.66 E F0 5.16(.T).77 G .159(his is what) +-5.16 F F2(lo)2.659 E(gin)-.1 E F0 .159(\(1\) does.).24 F(The)5.159 E F1 +2.659 E F0 .159(option causes)2.659 F F2(command)2.859 E F0(to) +3.429 E 1.195(be e)144 518.4 R -.15(xe)-.15 G 1.195 +(cuted with an empty en).15 F 3.695(vironment. If)-.4 F F13.696 E +F0 1.196(is supplied, the shell passes)3.696 F F2(name)4.056 E F0 1.196 +(as the zeroth)3.876 F(ar)144 530.4 Q .02(gument to the e)-.18 F -.15 +(xe)-.15 G .02(cuted command.).15 F(If)5.02 E F2(command)2.72 E F0 .02 +(cannot be e)3.29 F -.15(xe)-.15 G .02 +(cuted for some reason, a non-inter).15 F(-)-.2 E(acti)144 542.4 Q 1.066 +-.15(ve s)-.25 H .766(hell e).15 F .766(xits, unless the shell option) +-.15 F F1(execfail)3.266 E F0 .766 +(is enabled, in which case it returns f)3.266 F 3.267(ailure. An)-.1 F +(interacti)144 554.4 Q 1.519 -.15(ve s)-.25 H 1.219(hell returns f).15 F +1.219(ailure if the \214le cannot be e)-.1 F -.15(xe)-.15 G 3.719 +(cuted. If).15 F F2(command)3.918 E F0 1.218(is not speci\214ed, an) +4.488 F(y)-.15 E .133(redirections tak)144 566.4 R 2.633(ee)-.1 G -.25 +(ff)-2.633 G .134(ect in the current shell, and the return status is 0.) +.25 F .134(If there is a redirection error)5.134 F(,)-.4 E +(the return status is 1.)144 578.4 Q F1(exit)108 595.2 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 607.2 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 624 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 302.4 Q F0 .256(The supplied)144 314.4 R -F2(names)3.117 E F0 .257(are mark)3.027 F .257(ed for automatic e)-.1 F +F0(]] ...)A F1(export \255p)108 636 Q F0 .256(The supplied)144 648 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 326.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 338.4 Q F0 .659 +(xe)-.15 G(cuted).15 E 2.627(commands. If)144 660 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 672 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 350.4 R 1.587 +(option)3.16 E 1.587(causes the e)144 684 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 362.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 +1.586(ariable name is follo)-4.336 F 1.586(wed by)-.25 F(=)144 696 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 374.4 R F2(names)2.793 E F0 .293 +(option is encountered, one of the)144 708 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 -386.4 Q F0(that is not a function.)2.68 E F1(fc)108 403.2 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 -415.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 427.2 R .478 +F F12.793 E F0 .293(is supplied with a)2.793 F F2(name)144.36 720 +Q F0(that is not a function.)2.68 E(GNU Bash-3.2)72 768 Q(2006 Jan 26) +149.845 E(50)199.835 E 0 Cg EP +%%Page: 51 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/F1 10/Times-Bold@0 SF(fc)108 84 Q F0([)2.5 E F1A/F2 10 +/Times-Italic@0 SF(ename)2.5 E F0 2.5(][)C F1(\255nlr)-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 96 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 108 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 439.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 +(is selected from the his-)3.658 F .882(tory list.)144 120 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 -451.2 R 3.297(xi)-.15 G .797(nto the history list, where a ne)-3.297 F +132 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 463.2 Q .277(fset from the current command number\).)-.25 F +.15 F(of)144 144 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 475.2 R/F4 10/Courier@0 SF .092 +(for listing \(so that)144 156 R/F3 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 487.2 Q -(vious command for editing and \25516 for listing.)-.25 E(The)144 511.2 -Q F12.522 E F0 .022 +(speci\214ed it is set to the pre)144 168 Q +(vious command for editing and \25516 for listing.)-.25 E(The)144 192 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 523.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 204 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 535.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 547.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 559.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 571.2 S(cuted.).15 E .039(In the second form,)144 595.2 R -F2(command)2.539 E F0 .039(is re-e)2.539 F -.15(xe)-.15 G .039 +.335(the editor gi)144 216 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 228 R .63(alue of the)-.25 F/F4 9/Times-Bold@0 +SF(FCEDIT)3.13 E F0 -.25(va)2.88 G .631(riable is used, and the v).25 F +.631(alue of)-.25 F F4(EDIT)3.131 E(OR)-.162 E F0(if)2.881 E F4(FCEDIT) +3.131 E F0 .631(is not set.)2.881 F .631(If nei-)5.631 F .951(ther v)144 +240 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 252 S(cuted.).15 E .039(In the second form,)144 276 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 607.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 +(alias to use with this is)144 288 R F3 .406(r='fc \255s')2.906 F F0 +2.906(,s)C 2.906(ot)-2.906 G .406(hat typing)-2.906 F F3 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 619.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 643.2 R .142 +-.15 F F3(cc)144 300 Q F0(and typing)2.5 E F3(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 324 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 655.2 -R .454(If the)5.454 F F12.954 E F0 .454 +E F2(last)2.732 E F0 .455(specify history lines out of range.)144 336 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 667.2 R -.15(xe)-.15 G .787 +(alue of the)-.25 F .787(last command e)144 348 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 -679.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 691.2 Q +360 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 372 Q (alid history line, in which case)-.25 E F1(fc)2.5 E F0(returns f)2.5 E -(ailure.)-.1 E(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 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/F1 10/Times-Bold@0 SF(fg)108 84 Q F0([)2.5 E/F2 10/Times-Italic@0 -SF(jobspec)A F0(])A(Resume)144 96 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 108 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 120 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 132 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 F1(getopts)108 148.8 -Q F2(optstring name)2.5 E F0([)2.5 E F2(ar)A(gs)-.37 E F0(])A F1 -(getopts)144 160.8 Q F0 .793 +(ailure.)-.1 E F1(fg)108 388.8 Q F0([)2.5 E F2(jobspec)A F0(])A(Resume) +144 400.8 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 412.8 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 424.8 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 436.8 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 F1(getopts)108 453.6 Q F2 +(optstring name)2.5 E F0([)2.5 E F2(ar)A(gs)-.37 E F0(])A F1(getopts)144 +465.6 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 172.8 R .149 +(characters to be recognized; if a character is follo)144 477.6 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 184.8 Q .578 +-.15(ve a)-.2 H(n).15 E(ar)144 489.6 Q .578 (gument, which should be separated from it by white space.)-.18 F .579 (The colon and question mark char)5.579 F(-)-.2 E 1.665 -(acters may not be used as option characters.)144 196.8 R 1.665 +(acters may not be used as option characters.)144 501.6 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 208.8 R(ariable)-.25 E F2(name)3.296 E F0 +(option in the shell v)144 513.6 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 220.8 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 232.8 R -.2(vo)-.4 G -.1(ke).2 G 3.345 +3.297(ft)-3.297 G .797(he ne)-3.297 F(xt)-.15 E(ar)144 525.6 Q .085 +(gument to be processed into the v)-.18 F(ariable)-.25 E F4(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 .845 +(or a shell script is in)144 537.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 F1 (getopts)3.346 E F0 .846(places that ar)3.346 F(gument)-.18 E .804 -(into the v)144 244.8 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 +(into the v)144 549.6 R(ariable)-.25 E F4(OPT)3.304 E(ARG)-.81 E F5(.)A +F0 .803(The shell does not reset)5.304 F F4(OPTIND)3.303 E F0 .803 (automatically; it must be manually)3.053 F .293 -(reset between multiple calls to)144 256.8 R F1(getopts)2.793 E F0 .293 +(reset between multiple calls to)144 561.6 R F1(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 268.8 -Q 2.044(When the end of options is encountered,)144 292.8 R F1(getopts) +2.793(ws)-.25 G .294(et of parameters)-2.793 F(is to be used.)144 573.6 +Q 2.044(When the end of options is encountered,)144 597.6 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 F1(OPTIND)144 304.8 Q F0 +(alue greater than zero.)-.25 F F1(OPTIND)144 609.6 Q F0 (is set to the inde)2.5 E 2.5(xo)-.15 G 2.5(ft)-2.5 G (he \214rst non-option ar)-2.5 E(gument, and)-.18 E F1(name)2.5 E F0 -(is set to ?.)2.5 E F1(getopts)144 328.8 Q F0 2.392 +(is set to ?.)2.5 E F1(getopts)144 633.6 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 -340.8 Q F0(parses those instead.)2.5 E F1(getopts)144 364.8 Q F0 1.166 +645.6 Q F0(parses those instead.)2.5 E F1(getopts)144 669.6 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 376.8 R 1.263 +(reporting is used.)144 681.6 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 -388.8 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 400.8 Q +693.6 R .394(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 705.6 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 424.8 R +F2(optstring)2.73 E F0(is not a colon.)2.72 E .666(If an in)144 729.6 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 -436.8 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 448.8 Q 1.241(If a required ar)144 -472.8 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 484.8 -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 496.8 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 520.8 Q F0 .902 +(and, if not silent, prints an error message)3.347 F(GNU Bash-3.2)72 768 +Q(2006 Jan 26)149.845 E(51)199.835 E 0 Cg EP +%%Page: 52 53 +%%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 .4(and unsets)144 84 R/F1 9/Times-Bold@0 SF(OPT)2.9 E(ARG)-.81 E +/F2 9/Times-Roman@0 SF(.)A F0(If)4.899 E/F3 10/Times-Bold@0 SF(getopts) +2.899 E F0 .399(is silent, the option character found is placed in)2.899 +F F1(OPT)2.899 E(ARG)-.81 E F0 .399(and no)2.649 F +(diagnostic message is printed.)144 96 Q 1.241(If a required ar)144 120 +R 1.241(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.742(\)i).833 +G 3.742(sp)-3.742 G 1.242(laced in)-3.742 F/F4 10/Times-Italic@0 SF +(name)144 132 Q F0(,).18 E F1(OPT)2.735 E(ARG)-.81 E F0 .234 +(is unset, and a diagnostic message is printed.)2.485 F(If)5.234 E F3 +(getopts)2.734 E F0 .234(is silent, then a colon \()2.734 F F3(:).833 E +F0(\)).833 E(is placed in)144 144 Q F4(name)2.86 E F0(and)2.68 E F1(OPT) +2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 E F3 +(getopts)144 168 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 532.8 Q F1(hash)108 -549.6 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 --.15(Fo)144 561.6 S 3.555(re).15 G(ach)-3.555 E F2(name)3.555 E F0 3.555 -(,t).18 G 1.054(he full \214le name of the command is determined by sea\ -rching the directories in)-3.555 F F1($P)144 573.6 Q -.95(AT)-.74 G(H) -.95 E F0 .349(and remembered.)2.849 F .349(If the)5.349 F F12.849 -E F0 .349(option is supplied, no path search is performed, and)2.849 F -F2(\214lename)4.76 E F0 .452 -(is used as the full \214le name of the command.)144 585.6 R(The)5.452 E -F12.952 E F0 .452(option causes the shell to for)2.952 F .452 -(get all remem-)-.18 F .592(bered locations.)144 597.6 R(The)5.592 E F1 +(options is encountered or an error occurs.)144 180 Q F3(hash)108 196.8 +Q F0([)2.5 E F3(\255lr)A F0 2.5(][)C F3-2.5 E F4(\214lename)2.5 E +F0 2.5(][)C F3(\255dt)-2.5 E F0 2.5(][)C F4(name)-2.5 E F0(])A -.15(Fo) +144 208.8 S 3.555(re).15 G(ach)-3.555 E F4(name)3.555 E F0 3.555(,t).18 +G 1.054(he full \214le name of the command is determined by searching t\ +he directories in)-3.555 F F3($P)144 220.8 Q -.95(AT)-.74 G(H).95 E F0 +.349(and remembered.)2.849 F .349(If the)5.349 F F32.849 E F0 .349 +(option is supplied, no path search is performed, and)2.849 F F4 +(\214lename)4.76 E F0 .452 +(is used as the full \214le name of the command.)144 232.8 R(The)5.452 E +F32.952 E F0 .452(option causes the shell to for)2.952 F .452 +(get all remem-)-.18 F .592(bered locations.)144 244.8 R(The)5.592 E F3 3.092 E F0 .593(option causes the shell to for)3.092 F .593 -(get the remembered location of each)-.18 F F2(name)3.093 E F0(.)A .021 -(If the)144 609.6 R F12.521 E F0 .021 -(option is supplied, the full pathname to which each)2.521 F F2(name) +(get the remembered location of each)-.18 F F4(name)3.093 E F0(.)A .021 +(If the)144 256.8 R F32.521 E F0 .021 +(option is supplied, the full pathname to which each)2.521 F F4(name) 2.52 E F0 .02(corresponds is printed.)2.52 F .02(If multi-)5.02 F(ple) -144 621.6 Q F2(name)3.703 E F0(ar)3.703 E 1.203 -(guments are supplied with)-.18 F F13.703 E F0 3.703(,t)C(he) --3.703 E F2(name)3.703 E F0 1.204 -(is printed before the hashed full pathname.)3.703 F(The)144 633.6 Q F1 +144 268.8 Q F4(name)3.703 E F0(ar)3.703 E 1.203 +(guments are supplied with)-.18 F F33.703 E F0 3.703(,t)C(he) +-3.703 E F4(name)3.703 E F0 1.204 +(is printed before the hashed full pathname.)3.703 F(The)144 280.8 Q F3 3.216 E F0 .715(option causes output to be displayed in a format \ that may be reused as input.)3.216 F .715(If no ar)5.715 F(gu-)-.18 E -1.183(ments are gi)144 645.6 R -.15(ve)-.25 G 1.183(n, or if only).15 F -F13.683 E F0 1.184 +1.183(ments are gi)144 292.8 R -.15(ve)-.25 G 1.183(n, or if only).15 F +F33.683 E F0 1.184 (is supplied, information about remembered commands is printed.)3.684 F -(The return status is true unless a)144 657.6 Q F2(name)2.86 E F0 +(The return status is true unless a)144 304.8 Q F4(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 674.4 Q F0([)2.5 E F1A F0 2.5(][)C F2(pattern)-2.5 E -F0(])A .867(Display helpful information about b)144 686.4 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 +E F3(help)108 321.6 Q F0([)2.5 E F3A F0 2.5(][)C F4(pattern)-2.5 E +F0(])A .867(Display helpful information about b)144 333.6 R .867 +(uiltin commands.)-.2 F(If)5.867 E F4(pattern)4.617 E F0 .866 +(is speci\214ed,)3.607 F F3(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 -698.4 R F2(pattern)2.806 E F0 2.807(;o).24 G .307 +345.6 R F4(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 .596(tures is printed.)144 710.4 -R(The)5.596 E F13.096 E F0 .596 +(uiltins and shell control struc-)-.2 F .596(tures is printed.)144 357.6 +R(The)5.596 E F33.096 E F0 .596 (option restricts the information displayed to a short usage synopsis.) 3.096 F(The)5.596 E(return status is 0 unless no command matches)144 -722.4 Q F2(pattern)2.5 E F0(.).24 E(GNU Bash-3.2)72 768 Q -(2007 January 12)140.96 E(52)190.95 E 0 Cg EP -%%Page: 53 53 -%%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 +369.6 Q F4(pattern)2.5 E F0(.).24 E F3(history [)108 386.4 Q F4(n)A F3 +(])A(history \255c)108 398.4 Q(history \255d)108 410.4 Q F4(of)2.5 E +(fset)-.18 E F3(history \255anrw)108 422.4 Q F0([)2.5 E F4(\214lename)A +F0(])A F3(history \255p)108 434.4 Q F4(ar)2.5 E(g)-.37 E F0([)2.5 E F4 +(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A F3(history \255s)108 446.4 Q F4(ar) +2.5 E(g)-.37 E F0([)2.5 E F4(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi) +144 458.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 1.231(been modi\214ed.)144 168 R 1.231(An ar)6.231 F 1.231(gument of) --.18 F F2(n)4.091 E F0 1.231(lists only the last)3.971 F F2(n)4.091 E F0 -3.73(lines. If)3.97 F 1.23(the shell v)3.73 F(ariable)-.25 E F1 -(HISTTIME-)3.73 E(FORMA)144 180 Q(T)-.95 E F0 .249 -(is set and not null, it is used as a format string for)2.749 F F2 +.752(Lines listed with a)5.752 F F3(*)3.252 E F0(ha)3.252 E -.15(ve)-.2 +G 1.231(been modi\214ed.)144 470.4 R 1.231(An ar)6.231 F 1.231 +(gument of)-.18 F F4(n)4.091 E F0 1.231(lists only the last)3.971 F F4 +(n)4.091 E F0 3.73(lines. If)3.97 F 1.23(the shell v)3.73 F(ariable)-.25 +E F3(HISTTIME-)3.73 E(FORMA)144 482.4 Q(T)-.95 E F0 .249 +(is set and not null, it is used as a format string for)2.749 F F4 (strftime)2.75 E F0 .25(\(3\) to display the time stamp)B .379 -(associated with each displayed history entry)144 192 R 5.379(.N)-.65 G -2.878(oi)-5.379 G(nterv)-2.878 E .378 +(associated with each displayed history entry)144 494.4 R 5.379(.N)-.65 +G 2.878(oi)-5.379 G(nterv)-2.878 E .378 (ening blank is printed between the format-)-.15 F .814 -(ted time stamp and the history line.)144 204 R(If)5.814 E F2 +(ted time stamp and the history line.)144 506.4 R(If)5.814 E F4 (\214lename)3.314 E F0 .814 (is supplied, it is used as the name of the history)3.314 F -(\214le; if not, the v)144 216 Q(alue of)-.25 E/F3 9/Times-Bold@0 SF -(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 -(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 +(\214le; if not, the v)144 518.4 Q(alue of)-.25 E F1(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 F3144 530.4 Q F0 +(Clear the history list by deleting all the entries.)25.86 E F3144 +542.4 Q F4(of)2.5 E(fset)-.18 E F0(Delete the history entry at position) +180 554.4 Q F4(of)2.5 E(fset)-.18 E F0(.)A F3144 566.4 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 -(Perform history substitution on the follo)24.74 F(wing)-.25 E F2(ar) +(ginning of the current)-.15 F F3(bash)180 578.4 Q F0 +(session\) to the history \214le.)2.5 E F3144 590.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 .773 +(These are lines appended to the history \214le since the be)180 602.4 R +.772(ginning of the current)-.15 F F3(bash)3.272 E F0(ses-)3.272 E +(sion.)180 614.4 Q F3144 626.4 Q F0(Read the contents of the hist\ +ory \214le and use them as the current history)25.86 E(.)-.65 E F3 +144 638.4 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 F3144 650.4 Q F0 .625 +(Perform history substitution on the follo)24.74 F(wing)-.25 E F4(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 -(not store the results in the history list.)2.975 F(Each)5.475 E F2(ar) +2.975(output. Does)180 662.4 R .475 +(not store the results in the history list.)2.975 F(Each)5.475 E F4(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 +(normal history e)180 674.4 Q(xpansion.)-.15 E F3144 686.4 Q F0 +.362(Store the)26.41 F F4(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 .28(If the)144 412.8 R F1(HISTTIMEFORMA)2.78 E(T)-.95 +(he last command in the history list is)-5.363 F(remo)180 698.4 Q -.15 +(ve)-.15 G 2.5(db).15 G(efore the)-2.5 E F4(ar)2.83 E(gs)-.37 E F0 +(are added.)2.77 E .28(If the)144 715.2 R F3(HISTTIMEFORMA)2.78 E(T)-.95 E F0 .28 (is set, the time stamp information associated with each history entry) -2.78 F .539(is written to the history \214le, mark)144 424.8 R .539 -(ed with the history comment character)-.1 F 5.54(.W)-.55 G .54 -(hen the history \214le is)-5.54 F 1.779(read, lines be)144 436.8 R -1.779(ginning with the history comment character follo)-.15 F 1.778 -(wed immediately by a digit are)-.25 F 1.424 -(interpreted as timestamps for the pre)144 448.8 R 1.424 -(vious history line.)-.25 F 1.424(The return v)6.424 F 1.424 -(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 +2.78 F .216(is written to the history \214le.)144 727.2 R .216 +(The return v)5.216 F .216(alue is 0 unless an in)-.25 F -.25(va)-.4 G +.216(lid option is encountered, an error).25 F(GNU Bash-3.2)72 768 Q +(2006 Jan 26)149.845 E(52)199.835 E 0 Cg EP +%%Page: 53 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 .422(occurs while reading or writing the history \214le, an in) +144 84 R -.25(va)-.4 G(lid).25 E/F1 10/Times-Italic@0 SF(of)2.922 E +(fset)-.18 E F0 .422(is supplied as an ar)2.922 F .421(gument to)-.18 F +/F2 10/Times-Bold@0 SF2.921 E F0(,)A(or the history e)144 96 Q +(xpansion supplied as an ar)-.15 E(gument to)-.18 E F22.5 E F0 -.1 +(fa)2.5 G(ils.).1 E F2(jobs)108 112.8 Q F0([)2.5 E F2(\255lnprs)A F0 2.5 +(][)C F1(jobspec)A F0(... ])2.5 E F2(jobs \255x)108 124.8 Q F1(command) +2.5 E F0([)2.5 E F1(ar)2.5 E(gs)-.37 E F0(... ])2.5 E +(The \214rst form lists the acti)144 136.8 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 -(List process IDs in addition to the normal information.)27.52 E F1 -144 537.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 549.6 Q F0 +(wing meanings:)-.25 E F2144 148.8 Q F0 +(List process IDs in addition to the normal information.)27.52 E F2 +144 160.8 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 F2144 172.8 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 561.6 Q 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) +(\214ed of their status.)180 184.8 Q F2144 196.8 Q F0 +(Restrict output to running jobs.)25.86 E F2144 208.8 Q F0 +(Restrict output to stopped jobs.)26.41 E(If)144 225.6 Q F1(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 +-.4 G .313(he return status is 0 unless)-5.313 F(an in)144 237.6 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 -.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 --.15(xe)-.15 G(cutes).15 E F2(command)2.7 E F0(passing it)3.27 E F2(ar) +E F1(jobspec)4.24 E F0(is supplied.)2.81 E .394(If the)144 254.4 R F2 +2.894 E F0 .394(option is supplied,)2.894 F F2(jobs)2.894 E F0 +.394(replaces an)2.894 F(y)-.15 E F1(jobspec)4.634 E F0 .394(found in) +3.204 F F1(command)3.094 E F0(or)3.664 E F1(ar)3.224 E(gs)-.37 E F0 .395 +(with the corre-)3.164 F(sponding process group ID, and e)144 266.4 Q +-.15(xe)-.15 G(cutes).15 E F1(command)2.7 E F0(passing it)3.27 E F1(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 -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 +F2(kill)108 283.2 Q F0([)2.5 E F2A F1(sigspec)2.5 E F0(|)2.5 E F2 +2.5 E F1(signum)2.5 E F0(|)2.5 E F22.5 E F1(sigspec)A F0 2.5 +(][)C F1(pid)-2.5 E F0(|)2.5 E F1(jobspec)2.5 E F0 2.5(].)C(..)-2.5 E F2 +(kill \255l)108 295.2 Q F0([)2.5 E F1(sigspec)A F0(|)2.5 E F1 -.2(ex)2.5 +G(it_status).2 E F0(])A .12(Send the signal named by)144 307.2 R F1 +(sigspec)2.96 E F0(or)2.93 E F1(signum)2.96 E F0 .119 +(to the processes named by)2.939 F F1(pid)3.869 E F0(or)3.389 E F1 +(jobspec)2.619 E F0(.).31 E F1(sigspec)5.459 E F0(is)2.929 E .318 +(either a case-insensiti)144 319.2 R .618 -.15(ve s)-.25 H .318 +(ignal name such as).15 F/F3 9/Times-Bold@0 SF(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) +(pre\214x\) or a signal)2.569 F(number;)144 331.2 Q F1(signum)4.189 E F0 +1.349(is a signal number)4.169 F 6.349(.I)-.55 G(f)-6.349 E F1(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-3.2)72 768 Q(2007 January 12)140.96 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 .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 +1.348(is assumed.)3.599 F(An)6.348 E(ar)144 343.2 Q .522(gument of)-.18 +F F23.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 F23.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 355.2 +R .28(guments are listed, and the return status is 0.)-.18 F(The)5.28 E +F1 -.2(ex)2.78 G(it_status).2 E F0(ar)144 367.2 Q .377(gument to)-.18 F +F22.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 +(xit status of a process termi-)-.15 F .594(nated by a signal.)144 379.2 +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.964 E(g)-.37 E F0 1.134 +(occurs or an in)144 391.2 Q -.25(va)-.4 G(lid option is encountered.) +.25 E F2(let)108 408 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 420 Q F1(ar)3.964 E(g)-.37 E F0 1.134 (is an arithmetic e)3.854 F 1.134(xpression to be e)-.15 F -.25(va)-.25 -G 1.135(luated \(see).25 F/F3 9/Times-Bold@0 SF 1.135(ARITHMETIC EV) -3.635 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E/F4 9/Times-Roman@0 SF -(\).)A F0 1.135(If the)5.635 F(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 +G 1.135(luated \(see).25 F F3 1.135(ARITHMETIC EV)3.635 F(ALU)-1.215 E +-.855(AT)-.54 G(ION).855 E/F4 9/Times-Roman@0 SF(\).)A F0 1.135(If the) +5.635 F(last)144 432 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 448.8 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 460.8 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 472.8 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 +484.8 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 +-.4(Wi)5.86 G .86(th no operands,).4 F F2(local)144 496.8 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 +(within a function.)144 508.8 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(popd)108 283.2 Q F0 +520.8 Q F1(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F2 +(logout)108 537.6 Q F0(Exit a login shell.)9.33 E F2(popd)108 554.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 295.2 Q -.15(ve)-.15 G 2.799(se).15 G .299 +(n)A F0(])A(Remo)144 566.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 -307.2 R F2(cd)3.979 E F0 1.479(to the ne)3.979 F 3.979(wt)-.25 G 1.479 +578.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 319.2 Q F2144 331.2 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 343.2 Q F2(+)144 355.2 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 -.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 -367.2 S 2.5(re).15 G(xample:)-2.65 E/F5 10/Courier@0 SF(popd +0)2.5 E F0 +F(wing)-.25 E(meanings:)144 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 .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/F5 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 F5(popd +1)2.5 E F0(the second.)2.5 E F2144 379.2 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 -391.2 R(or e)-.15 E(xample:)-.15 E F5(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 F5(popd -1)2.5 -E F0(the ne)2.5 E(xt to last.)-.15 E .644(If the)144 408 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 420 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 +-.65 E F5(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.76(st).15 G(he)-3.76 E F1(n)3.76 E F0 +1.259(th entry counting from the right of the list sho)B 1.259(wn by) +-.25 F F2(dirs)3.759 E F0 3.759(,s)C 1.259(tarting with)-3.759 F 2.5 +(zero. F)180 638.4 R(or e)-.15 E(xample:)-.15 E F5(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 F5(popd -1)2.5 E F0(the ne)2.5 E(xt to last.)-.15 E F2144 650.4 +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 662.4 Q .644(If the)144 679.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 691.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 432 Q -(ails.)-.1 E F2(printf)108 448.8 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 .372 -(Write the formatted)144 460.8 R F1(ar)2.872 E(guments)-.37 E F0 .372 -(to the standard output under the control of the)2.872 F F1(format)2.872 -E F0 5.372(.T)C(he)-5.372 E F1(format)2.872 E F0 1.804(is a character s\ -tring which contains three types of objects: plain characters, which ar\ -e simply)144 472.8 R .159 +(tory stack entry is speci\214ed, or the directory change f)144 703.2 Q +(ails.)-.1 E(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(53)199.835 E 0 +Cg EP +%%Page: 54 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(printf)108 84 Q F0([)2.5 E F1A/F2 10 +/Times-Italic@0 SF(var)2.5 E F0(])A F2(format)2.5 E F0([)2.5 E F2(ar)A +(guments)-.37 E F0(])A .372(Write the formatted)144 96 R F2(ar)2.872 E +(guments)-.37 E F0 .372(to the standard output under the control of the) +2.872 F F2(format)2.872 E F0 5.372(.T)C(he)-5.372 E F2(format)2.872 E F0 +1.804(is a character string which contains three types of objects: plai\ +n characters, which are simply)144 108 R .159 (copied to standard output, character escape sequences, which are con) -144 484.8 R -.15(ve)-.4 G .158(rted and copied to the stan-).15 F .499(\ -dard output, and format speci\214cations, each of which causes printing\ - of the ne)144 496.8 R .5(xt successi)-.15 F -.15(ve)-.25 G F1(ar)3.15 E -(gu-)-.37 E(ment)144 508.8 Q F0 5.424(.I)C 2.924(na)-5.424 G .424 -(ddition to the standard)-2.924 F F1(printf)2.924 E F0 .424 -(\(1\) formats,)B F2(%b)2.924 E F0(causes)2.923 E F2(printf)2.923 E F0 +144 120 R -.15(ve)-.4 G .158(rted and copied to the stan-).15 F .499(da\ +rd output, and format speci\214cations, each of which causes printing o\ +f the ne)144 132 R .5(xt successi)-.15 F -.15(ve)-.25 G F2(ar)3.15 E +(gu-)-.37 E(ment)144 144 Q F0 5.424(.I)C 2.924(na)-5.424 G .424 +(ddition to the standard)-2.924 F F2(printf)2.924 E F0 .424 +(\(1\) formats,)B F1(%b)2.924 E F0(causes)2.923 E F1(printf)2.923 E F0 .423(to e)2.923 F .423(xpand backslash escape)-.15 F .976 -(sequences in the corresponding)144 520.8 R F1(ar)3.476 E(gument)-.37 E -F0(\(e)3.476 E .976(xcept that)-.15 F F2(\\c)3.476 E F0 .976 -(terminates output, backslashes in)3.476 F F2<5c08>3.477 E F0(,)A F2 -(\\")3.477 E F0(,)A(and)144 532.8 Q F2(\\?)3.422 E F0 .922(are not remo) +(sequences in the corresponding)144 156 R F2(ar)3.476 E(gument)-.37 E F0 +(\(e)3.476 E .976(xcept that)-.15 F F1(\\c)3.476 E F0 .976 +(terminates output, backslashes in)3.476 F F1<5c08>3.477 E F0(,)A F1 +(\\")3.477 E F0(,)A(and)144 168 Q F1(\\?)3.422 E F0 .922(are not remo) 3.422 F -.15(ve)-.15 G .922(d, and octal escapes be).15 F .922 -(ginning with)-.15 F F2(\\0)3.422 E F0 .921 -(may contain up to four digits\), and)3.422 F F2(%q)144 544.8 Q F0 -(causes)3.63 E F2(printf)3.63 E F0 1.13(to output the corresponding)3.63 -F F1(ar)3.631 E(gument)-.37 E F0 1.131 -(in a format that can be reused as shell)3.631 F(input.)144 556.8 Q(The) -144 580.8 Q F22.904 E F0 .404 +(ginning with)-.15 F F1(\\0)3.422 E F0 .921 +(may contain up to four digits\), and)3.422 F F1(%q)144 180 Q F0(causes) +3.63 E F1(printf)3.63 E F0 1.13(to output the corresponding)3.63 F F2 +(ar)3.631 E(gument)-.37 E F0 1.131 +(in a format that can be reused as shell)3.631 F(input.)144 192 Q(The) +144 216 Q F12.904 E F0 .404 (option causes the output to be assigned to the v)2.904 F(ariable)-.25 E -F1(var)2.904 E F0 .404(rather than being printed to the)2.904 F -(standard output.)144 592.8 Q(The)144 616.8 Q F1(format)3.423 E F0 .923 -(is reused as necessary to consume all of the)3.423 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 .924(requires more)3.424 F F1(ar)144 628.8 Q(guments)-.37 E -F0 .033(than are supplied, the e)2.534 F .033 +F2(var)2.904 E F0 .404(rather than being printed to the)2.904 F +(standard output.)144 228 Q(The)144 252 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 264 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 .033(alue or null string,) --.25 F(as appropriate, had been supplied.)144 640.8 Q(The return v)5 E -(alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E F2(pushd) -108 657.6 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 669.6 Q F0([)2.5 E F2A F0 -2.5(][)C F1(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 681.6 R 3.14(wt) --.25 G .64(op of the)-3.14 F 1.316(stack the current w)144 693.6 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 705.6 R 5.871(.A) +-.25 F(as appropriate, had been supplied.)144 276 Q(The return v)5 E +(alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E F1(pushd) +108 292.8 Q F0([)2.5 E F1A F0 2.5(][)C F2(dir)-2.5 E F0(])A F1 +(pushd)108 304.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 .639(Adds a directory to the top of th\ +e directory stack, or rotates the stack, making the ne)144 316.8 R 3.14 +(wt)-.25 G .64(op of the)-3.14 F 1.316(stack the current w)144 328.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 340.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 717.6 Q -(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 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 SF144 84 Q F0 .902(Suppresses the norma\ -l change of directory when adding directories to the stack, so that) -24.74 F(only the stack is manipulated.)180 96 Q F1(+)144 108 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 120 Q F0 2.5(,s)C(tarting with zero\) is at the top.) --2.5 E F1144 132 Q F2(n)A F0 .92(Rotates the stack so that the)25.3 -F F2(n)3.42 E F0 .92 +(ve t)-.2 H .872(he follo).15 F .872(wing mean-)-.25 F(ings:)144 352.8 Q +F1(+)144 364.8 Q F2(n)A F0 1.268(Rotates the stack so that the)25.3 F F2 +(n)3.768 E F0 1.267 +(th directory \(counting from the left of the list sho)B 1.267(wn by) +-.25 F F1(dirs)180 376.8 Q F0 2.5(,s)C +(tarting with zero\) is at the top.)-2.5 E F1144 388.8 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 F1(dirs)180 144 Q F0 2.5(,s)C(tarting with zero\) is at the top.)-2.5 -E F2(dir)144.35 156 Q F0(Adds)23.98 E F2(dir)2.85 E F0 +F F1(dirs)180 400.8 Q F0 2.5(,s)C(tarting with zero\) is at the top.) +-2.5 E F1144 412.8 Q F0 .902(Suppresses the normal change of dire\ +ctory when adding directories to the stack, so that)24.74 F +(only the stack is manipulated.)180 424.8 Q F2(dir)144.35 436.8 Q F0 +(Adds)23.98 E F2(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 .488(If the)144 172.8 +G(urrent w)-2.5 E(orking directory)-.1 E(.)-.65 E .488(If the)144 453.6 R F1(pushd)2.988 E F0 .488(command is successful, a)2.988 F F1(dirs) 2.988 E F0 .488(is performed as well.)2.988 F .489 (If the \214rst form is used,)5.488 F F1(pushd)2.989 E F0 1.04 -(returns 0 unless the cd to)144 184.8 R F2(dir)3.89 E F0 -.1(fa)4.27 G +(returns 0 unless the cd to)144 465.6 R F2(dir)3.89 E F0 -.1(fa)4.27 G 3.539(ils. W).1 F 1.039(ith the second form,)-.4 F F1(pushd)3.539 E F0 1.039(returns 0 unless the directory)3.539 F .846(stack is empty)144 -196.8 R 3.346(,an)-.65 G(on-e)-3.346 E .847(xistent directory stack ele\ +477.6 R 3.346(,an)-.65 G(on-e)-3.346 E .847(xistent directory stack ele\ ment is speci\214ed, or the directory change to the)-.15 F -(speci\214ed ne)144 208.8 Q 2.5(wc)-.25 G(urrent directory f)-2.5 E -(ails.)-.1 E F1(pwd)108 225.6 Q F0([)2.5 E F1(\255LP)A F0(])A .845 -(Print the absolute pathname of the current w)144 237.6 R .845 +(speci\214ed ne)144 489.6 Q 2.5(wc)-.25 G(urrent directory f)-2.5 E +(ails.)-.1 E F1(pwd)108 506.4 Q F0([)2.5 E F1(\255LP)A F0(])A .845 +(Print the absolute pathname of the current w)144 518.4 R .845 (orking directory)-.1 F 5.844(.T)-.65 G .844 (he pathname printed contains no)-5.844 F .181(symbolic links if the)144 -249.6 R F12.681 E F0 .181(option is supplied or the)2.681 F F1 +530.4 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 .182(iltin command is).2 F 3.264 -(enabled. If)144 261.6 R(the)3.264 E F13.264 E F0 .763 +(enabled. If)144 542.4 R(the)3.264 E F13.264 E F0 .763 (option is used, the pathname printed may contain symbolic links.)3.264 F .763(The return)5.763 F 1.36(status is 0 unless an error occurs while\ - reading the name of the current directory or an in)144 273.6 R -.25(va) --.4 G(lid).25 E(option is supplied.)144 285.6 Q F1 -.18(re)108 302.4 S -(ad).18 E F0([)2.5 E F1(\255ers)A F0 2.5(][)C F1-2.5 E F2(aname) -2.5 E F0 2.5(][)C F1-2.5 E F2(delim)2.5 E F0 2.5(][)C F1-2.5 -E F2(nc)2.5 E(har)-.15 E(s)-.1 E F0 2.5(][)C F1-2.5 E F2(pr)2.5 E -(ompt)-.45 E F0 2.5(][)C F1-2.5 E F2(timeout)2.5 E F0 2.5(][)C F1 --2.5 E F2(fd)2.5 E F0 2.5(][)C F2(name)-2.5 E F0(...])2.5 E .516(\ -One line is read from the standard input, or from the \214le descriptor) -144 314.4 R F2(fd)3.016 E F0 .516(supplied as an ar)3.016 F .516 -(gument to)-.18 F(the)144 326.4 Q F12.538 E F0 .038 + reading the name of the current directory or an in)144 554.4 R -.25(va) +-.4 G(lid).25 E(option is supplied.)144 566.4 Q F1 -.18(re)108 583.2 S +(ad).18 E F0([)2.5 E F1(\255ers)A F0 2.5(][)C F1-2.5 E F2(fd)2.5 E +F0 2.5(][)C F1-2.5 E F2(timeout)2.5 E F0 2.5(][)C F1-2.5 E +F2(aname)2.5 E F0 2.5(][)C F1-2.5 E F2(pr)2.5 E(ompt)-.45 E F0 2.5 +(][)C F1-2.5 E F2(nc)2.5 E(har)-.15 E(s)-.1 E F0 2.5(][)C F1 +-2.5 E F2(delim)2.5 E F0 2.5(][)C F2(name)-2.5 E F0(...])2.5 E .516(One\ + line is read from the standard input, or from the \214le descriptor)144 +595.2 R F2(fd)3.016 E F0 .516(supplied as an ar)3.016 F .516(gument to) +-.18 F(the)144 607.2 Q F12.538 E F0 .038 (option, and the \214rst w)2.538 F .038(ord is assigned to the \214rst) -.1 F F2(name)2.539 E F0 2.539(,t).18 G .039(he second w)-2.539 F .039 (ord to the second)-.1 F F2(name)2.539 E F0(,).18 E .42 -(and so on, with lefto)144 338.4 R -.15(ve)-.15 G 2.92(rw).15 G .42 +(and so on, with lefto)144 619.2 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 F2(name)2.92 E F0 5.42(.I) -.18 G 2.92(ft)-5.42 G(here)-2.92 E .54(are fe)144 350.4 R .54(wer w)-.25 +.18 G 2.92(ft)-5.42 G(here)-2.92 E .54(are fe)144 631.2 R .54(wer w)-.25 F .541(ords read from the input stream than names, the remaining names \ -are assigned empty)-.1 F -.25(va)144 362.4 S 2.511(lues. The).25 F .011 +are assigned empty)-.1 F -.25(va)144 643.2 S 2.511(lues. The).25 F .011 (characters in)2.511 F/F3 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 F1(\\)A F0 2.51(\)m)C(ay)-2.51 E 1.89 -(be used to remo)144 374.4 R 2.19 -.15(ve a)-.15 H 2.19 -.15(ny s).15 H +(be used to remo)144 655.2 R 2.19 -.15(ve a)-.15 H 2.19 -.15(ny s).15 H 1.891(pecial meaning for the ne).15 F 1.891 (xt character read and for line continuation.)-.15 F -(Options, if supplied, ha)144 386.4 Q .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 398.4 Q F2(aname)2.5 E F0 1.05(The w) -180 410.4 R 1.049 +(Options, if supplied, ha)144 667.2 Q .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 679.2 Q F2(aname)2.5 E F0 1.05(The w) +180 691.2 R 1.049 (ords are assigned to sequential indices of the array v)-.1 F(ariable) -.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 422.4 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 +F2(aname)180.33 703.2 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 434.4 Q F2(delim)2.5 E -F0(The \214rst character of)180 446.4 Q F2(delim)2.5 E F0 +(ar)2.5 E(guments are ignored.)-.18 E(GNU Bash-3.2)72 768 Q(2006 Jan 26) +149.845 E(54)199.835 E 0 Cg EP +%%Page: 55 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/F1 10/Times-Bold@0 SF144 84 Q/F2 10/Times-Italic@0 SF +(delim)2.5 E F0(The \214rst character of)180 96 Q F2(delim)2.5 E F0 (is used to terminate the input line, rather than ne)2.5 E(wline.)-.25 E -F1144 458.4 Q F0 .372 +F1144 108 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 -(to obtain the line.)180 470.4 Q F1144 482.4 Q F2(nc)2.5 E(har) --.15 E(s)-.1 E F1 -.18(re)180 494.4 S(ad).18 E F0 1.395 +2.873 G(adline).18 E F0(\(see)2.873 E/F3 9/Times-Bold@0 SF(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(to obtain the line.)180 120 Q F1144 132 Q F2(nc)2.5 +E(har)-.15 E(s)-.1 E F1 -.18(re)180 144 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.)180 506.4 Q F1144 518.4 Q F2(pr)2.5 E(ompt)-.45 E F0 -(Display)180 530.4 Q F2(pr)3.66 E(ompt)-.45 E F0 1.161 -(on standard error)3.66 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 542.4 Q -2.5(yi)-.15 G 2.5(nput. The)-2.5 F +-.1 F(input.)180 156 Q F1144 168 Q F2(pr)2.5 E(ompt)-.45 E F0 +(Display)180 180 Q F2(pr)3.66 E(ompt)-.45 E F0 1.161(on standard error) +3.66 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 192 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 554.4 Q F0 .544(Backslash does not act as an escape character) +144 204 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 566.4 Q(In particular)5 E 2.5(,ab)-.4 G +-5.543 F(the line.)180 216 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 F1144 578.4 Q F0(Silent mode.)26.41 E +-.25 E F1144 228 Q F0(Silent mode.)26.41 E (If input is coming from a terminal, characters are not echoed.)5 E F1 -144 590.4 Q F2(timeout)2.5 E F0(Cause)180 602.4 Q F1 -.18(re)3.548 -G(ad).18 E F0 1.048(to time out and return f)3.548 F 1.048 +144 240 Q F2(timeout)2.5 E F0(Cause)180 252 Q F1 -.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 F2(timeout) -180 614.4 Q F0 2.92(seconds. This)2.92 F .42(option has no ef)2.92 F .42 +180 264 Q F0 2.92(seconds. This)2.92 F .42(option has no ef)2.92 F .42 (fect if)-.25 F F1 -.18(re)2.92 G(ad).18 E F0 .42 -(is not reading input from the terminal)2.92 F(or a pipe.)180 626.4 Q F1 -144 638.4 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 655.2 R F2(names)3.051 E F0 .191 +(is not reading input from the terminal)2.92 F(or a pipe.)180 276 Q F1 +144 288 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 304.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(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.218 -(unless end-of-\214le is encountered,)144 667.2 R F1 -.18(re)3.718 G(ad) +(unless end-of-\214le is encountered,)144 316.8 R F1 -.18(re)3.718 G(ad) .18 E F0 1.217(times out, or an in)3.718 F -.25(va)-.4 G 1.217 -(lid \214le descriptor is supplied as the).25 F(ar)144 679.2 Q -(gument to)-.18 E F12.5 E F0(.)A F1 -.18(re)108 696 S(adonly).18 E -F0([)2.5 E F1(\255apf)A 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 708 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.097(quent assignment.)144 720 R +(lid \214le descriptor is supplied as the).25 F(ar)144 328.8 Q +(gument to)-.18 E F12.5 E F0(.)A F1 -.18(re)108 345.6 S(adonly).18 +E F0([)2.5 E F1(\255apf)A 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 357.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.097(quent assignment.)144 369.6 R 1.097(If the)6.097 F F13.597 E F0 1.097 (option is supplied, the functions corresponding to the)3.597 F F2 -(names)3.596 E F0 1.096(are so)3.596 F(GNU Bash-3.2)72 768 Q -(2007 January 12)140.96 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(mark)144 84 Q 2.872(ed. The)-.1 F/F1 10/Times-Bold@0 SF -2.872 E F0 .372(option restricts the v)2.872 F .372(ariables to arrays.) --.25 F .372(If no)5.372 F/F2 10/Times-Italic@0 SF(name)3.232 E F0(ar) +(names)3.596 E F0 1.096(are so)3.596 F(mark)144 381.6 Q 2.872(ed. The) +-.1 F F12.872 E F0 .372(option restricts the v)2.872 F .372 +(ariables to arrays.)-.25 F .372(If no)5.372 F F2(name)3.232 E F0(ar) 3.053 E .373(guments are gi)-.18 F -.15(ve)-.25 G .373(n, or if the).15 -F F1144 96 Q F0 .796 +F F1144 393.6 Q F0 .796 (option is supplied, a list of all readonly names is printed.)3.297 F (The)5.796 E F13.296 E F0 .796(option causes output to be)3.296 F -.828(displayed in a format that may be reused as input.)144 108 R .828 +.828(displayed in a format that may be reused as input.)144 405.6 R .828 (If a v)5.828 F .828(ariable name is follo)-.25 F .828(wed by =)-.25 F -F2(wor)A(d)-.37 E F0 3.328(,t)C(he)-3.328 E -.25(va)144 120 S .405 +F2(wor)A(d)-.37 E F0 3.328(,t)C(he)-3.328 E -.25(va)144 417.6 S .405 (lue of the v).25 F .405(ariable is set to)-.25 F F2(wor)2.905 E(d)-.37 E F0 5.405(.T)C .404(he return status is 0 unless an in)-5.405 F -.25 -(va)-.4 G .404(lid option is encountered,).25 F 1.069(one of the)144 132 -R F2(names)3.929 E F0 1.069(is not a v)3.839 F 1.069(alid shell v)-.25 F -1.069(ariable name, or)-.25 F F13.569 E F0 1.069 +(va)-.4 G .404(lid option is encountered,).25 F 1.069(one of the)144 +429.6 R F2(names)3.929 E F0 1.069(is not a v)3.839 F 1.069(alid shell v) +-.25 F 1.069(ariable name, or)-.25 F F13.569 E F0 1.069 (is supplied with a)3.569 F F2(name)3.929 E F0 1.069(that is not a)3.749 -F(function.)144 144 Q F1 -.18(re)108 160.8 S(tur).18 E(n)-.15 E F0([)2.5 -E F2(n)A F0(])A .587(Causes a function to e)144 172.8 R .587 +F(function.)144 441.6 Q F1 -.18(re)108 458.4 S(tur).18 E(n)-.15 E F0([) +2.5 E F2(n)A F0(])A .587(Causes a function to e)144 470.4 R .587 (xit with the return v)-.15 F .587(alue speci\214ed by)-.25 F F2(n)3.087 E F0 5.587(.I).24 G(f)-5.587 E F2(n)3.447 E F0 .586 (is omitted, the return status is)3.327 F 1.335 -(that of the last command e)144 184.8 R -.15(xe)-.15 G 1.335 +(that of the last command e)144 482.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 196.8 S .794(cution of a script by the).15 F F1(.)3.294 E F0(\() +144 494.4 S .794(cution of a script by the).15 F F1(.)3.294 E F0(\() 5.794 E F1(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 .794 -(cuting that script).15 F .245(and return either)144 208.8 R F2(n)3.105 +(cuting that script).15 F .245(and return either)144 506.4 R F2(n)3.105 E F0 .246(or the e)2.985 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 .246 -(xit sta-)-.15 F .082(tus of the script.)144 220.8 R .082 +(xit sta-)-.15 F .082(tus of the script.)144 518.4 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 F1(.)2.582 E F0 2.581(,t).833 G .081 -(he return sta-)-2.581 F 2.305(tus is f)144 232.8 R 4.805(alse. An)-.1 F +(he return sta-)-2.581 F 2.305(tus is f)144 530.4 R 4.805(alse. An)-.1 F 4.805(yc)-.15 G 2.305(ommand associated with the)-4.805 F F1(RETURN) 4.805 E F0 2.306(trap is e)4.806 F -.15(xe)-.15 G 2.306(cuted before e) .15 F -.15(xe)-.15 G(cution).15 E(resumes after the function or script.) -144 244.8 Q F1(set)108 261.6 Q F0([)2.5 E F1 -(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1-2.5 E F2(option)2.5 -E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E F0(...])2.5 E F1(set)108 273.6 Q F0 -([)2.5 E F1(+abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1(+o)-2.5 E F2(option) -2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E F0(...])2.5 E -.4(Wi)144 285.6 S -.836(thout options, the name and v).4 F .835(alue of each shell v)-.25 F +144 542.4 Q F1(set)108 559.2 Q F0([)2.5 E F1(\255\255abefhkmnptuvxBCHP)A +F0 2.5(][)C F1-2.5 E F2(option)2.5 E F0 2.5(][)C F2(ar)-2.5 E(g) +-.37 E F0(...])2.5 E -.4(Wi)144 571.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 297.6 +(reused as input for setting or resetting the currently-set v)144 583.2 R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .784 -(riables cannot be).25 F 2.947(reset. In)144 309.6 R F2 .447(posix mode) +(riables cannot be).25 F 2.947(reset. In)144 595.2 R F2 .447(posix mode) 2.947 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.53 -(locale. When)144 321.6 R 1.031(options are speci\214ed, the)3.53 F +(locale. When)144 607.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 .202 -(after the options are processed are treated as v)144 333.6 R .202 +(after the options are processed are treated as v)144 619.2 R .202 (alues for the positional parameters and are assigned,)-.25 F(in order) -144 345.6 Q 2.5(,t)-.4 G(o)-2.5 E F1($1)2.5 E F0(,)A F1($2)2.5 E F0(,)A +144 631.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 357.6 Q +-.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 643.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 369.6 Q(vironment of subsequent commands.) --.4 E F1144 381.6 Q F0 .132 +(xport to)-.15 F(the en)184 655.2 Q(vironment of subsequent commands.) +-.4 E F1144 667.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 393.6 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o) --.25 H(nly when job control is enabled.).15 E F1144 405.6 Q F0 +(primary prompt.)184 679.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 691.2 Q F0 1.693(Exit immediately if a)29.86 F F2 1.693(simple command)4.193 F F0 -(\(see)4.193 E/F3 9/Times-Bold@0 SF 1.693(SHELL GRAMMAR)4.193 F F0(abo) -3.943 E -.15(ve)-.15 G 4.194(\)e).15 G 1.694(xits with a)-4.344 F .012 -(non-zero status.)184 417.6 R .012(The shell does not e)5.012 F .011 +(\(see)4.193 E F3 1.693(SHELL GRAMMAR)4.193 F F0(abo)3.943 E -.15(ve) +-.15 G 4.194(\)e).15 G 1.694(xits with a)-4.344 F .012(non-zero status.) +184 703.2 R .012(The shell does not e)5.012 F .011 (xit if the command that f)-.15 F .011(ails is part of the command)-.1 F -.718(list immediately follo)184 429.6 R .718(wing a)-.25 F F1(while) -3.218 E F0(or)3.218 E F1(until)3.219 E F0 -.1(ke)3.219 G(yw)-.05 E .719 -(ord, part of the test in an)-.1 F F1(if)3.219 E F0(statement,)3.219 E -1.164(part of a)184 441.6 R F1(&&)3.664 E F0(or)3.664 E/F4 10/Symbol SF -3.664 E F0 1.164(list, an)3.664 F 3.664(yc)-.15 G 1.164 -(ommand in a pipeline b)-3.664 F 1.164(ut the last, or if the command') --.2 F(s)-.55 E .699(return v)184 453.6 R .699(alue is being in)-.25 F --.15(ve)-.4 G .699(rted via).15 F F1(!)3.199 E F0 5.699(.A)C .699 -(trap on)-2.5 F F1(ERR)3.199 E F0 3.2(,i)C 3.2(fs)-3.2 G .7(et, is e) --3.2 F -.15(xe)-.15 G .7(cuted before the shell).15 F -.15(ex)184 465.6 -S(its.).15 E F1144 477.6 Q F0(Disable pathname e)30.97 E -(xpansion.)-.15 E F1144 489.6 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 501.6 Q(ault.)-.1 E F1 -144 513.6 Q F0 .513(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 525.6 Q F1 -144 537.6 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 549.6 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 561.6 R .641 -(xit status is printed upon their com-)-.15 F(pletion.)184 573.6 Q F1 -144 585.6 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 -597.6 Q(This is ignored by interacti)5 E .3 -.15(ve s)-.25 H(hells.).15 -E F1144 609.6 Q F2(option\255name)2.5 E F0(The)184 621.6 Q F2 -(option\255name)2.5 E F0(can be one of the follo)2.5 E(wing:)-.25 E F1 -(allexport)184 633.6 Q F0(Same as)224 645.6 Q F12.5 E F0(.)A F1 -(braceexpand)184 657.6 Q F0(Same as)224 669.6 Q F12.5 E F0(.)A F1 -(emacs)184 681.6 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 693.6 R -.15(ve)-.25 G 3.45(,u).15 G -.95(nless the shell is started with the)-3.45 F F1(\255\255noediting) -3.45 E F0(option.)224 705.6 Q F1(errtrace)184 717.6 Q F0(Same as)5.03 E -F12.5 E F0(.)A(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 E(56) -190.95 E 0 Cg EP -%%Page: 57 57 +.624(list immediately follo)184 715.2 R .624(wing a)-.25 F F1(while) +3.124 E F0(or)3.124 E F1(until)3.124 E F0 -.1(ke)3.124 G(yw)-.05 E .624 +(ord, part of the test in an)-.1 F F2(if)3.134 E F0(statement,)5.084 E +.426(part of a)184 727.2 R F1(&&)2.926 E F0(or)2.926 E/F5 10/Symbol SF +2.926 E F0 .426(list, or if the command')2.926 F 2.926(sr)-.55 G +.426(eturn v)-2.926 F .426(alue is being in)-.25 F -.15(ve)-.4 G .425 +(rted via).15 F F1(!)2.925 E F0 5.425(.A)C(trap)-2.5 E(GNU Bash-3.2)72 +768 Q(2006 Jan 26)149.845 E(55)199.835 E 0 Cg EP +%%Page: 56 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(functrace)184 84 Q F0(Same as)224 96 Q F1 -2.5 E F0(.)A F1(err)184 108 Q(exit)-.18 E F0(Same as)11.31 E F1 -2.5 E F0(.)A F1(hashall)184 120 Q F0(Same as)9.43 E F12.5 E -F0(.)A F1(histexpand)184 132 Q F0(Same as)224 144 Q F12.5 E F0(.)A -F1(history)184 156 Q F0 .587(Enable command history)10 F 3.087(,a)-.65 G +-.35 E(on)184 84 Q/F1 10/Times-Bold@0 SF(ERR)2.5 E F0 2.5(,i)C 2.5(fs) +-2.5 G(et, is e)-2.5 E -.15(xe)-.15 G(cuted before the shell e).15 E +(xits.)-.15 E F1144 96 Q F0(Disable pathname e)30.97 E(xpansion.) +-.15 E F1144 108 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 120 Q(ault.)-.1 E F1 +144 132 Q F0 .514(All ar)28.74 F .514 +(guments in the form of assignment statements are placed in the en)-.18 +F .513(vironment for a)-.4 F +(command, not just those that precede the command name.)184 144 Q F1 +144 156 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 .637 +(on systems that support it \(see)184 168 R/F2 9/Times-Bold@0 SF .636 +(JOB CONTR)3.136 F(OL)-.27 E F0(abo)2.886 E -.15(ve)-.15 G 3.136 +(\). Background).15 F .636(processes run in a)3.136 F .641 +(separate process group and a line containing their e)184 180 R .642 +(xit status is printed upon their com-)-.15 F(pletion.)184 192 Q F1 +144 204 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 +216 Q(This is ignored by interacti)5 E .3 -.15(ve s)-.25 H(hells.).15 E +F1144 228 Q/F3 10/Times-Italic@0 SF(option\255name)2.5 E F0(The) +184 240 Q F3(option\255name)2.5 E F0(can be one of the follo)2.5 E +(wing:)-.25 E F1(allexport)184 252 Q F0(Same as)224 264 Q F12.5 E +F0(.)A F1(braceexpand)184 276 Q F0(Same as)224 288 Q F12.5 E F0(.) +A F1(emacs)184 300 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 312 R -.15(ve)-.25 G 3.45(,u).15 G .95 +(nless the shell is started with the)-3.45 F F1(\255\255noediting)3.45 E +F0(option.)224 324 Q F1(errtrace)184 336 Q F0(Same as)5.03 E F12.5 +E F0(.)A F1(functrace)184 348 Q F0(Same as)224 360 Q F12.5 E F0(.) +A F1(err)184 372 Q(exit)-.18 E F0(Same as)11.31 E F12.5 E F0(.)A +F1(hashall)184 384 Q F0(Same as)9.43 E F12.5 E F0(.)A F1 +(histexpand)184 396 Q F0(Same as)224 408 Q F12.5 E F0(.)A F1 +(history)184 420 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/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 168 Q -(ault in interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184 -180 Q(eeof)-.18 E F0 1.656(The ef)224 192 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 -204 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 216 S(yw).1 E(ord)-.1 E F0(Same as)224 228 Q F1 -2.5 E F0(.)A F1(monitor)184 240 Q F0(Same as)5.56 E F12.5 E -F0(.)A F1(noclob)184 252 Q(ber)-.1 E F0(Same as)224 264 Q F12.5 E -F0(.)A F1(noexec)184 276 Q F0(Same as)11.12 E F12.5 E F0(.)A F1 -(noglob)184 288 Q F0(Same as)11.1 E F12.5 E F0(.)A F1(nolog)5 E F0 -(Currently ignored.)2.5 E F1(notify)184 300 Q F0(Same as)15 E F1 -2.5 E F0(.)A F1(nounset)184 312 Q F0(Same as)6.66 E F12.5 E F0(.)A -F1(onecmd)184 324 Q F0(Same as)6.67 E F12.5 E F0(.)A F1(ph)184 336 -Q(ysical)-.15 E F0(Same as)5.14 E F12.5 E F0(.)A F1(pipefail)184 -348 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 360 R -1.136 +.15 E F2(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 432 Q(ault in interacti)-.1 E +.3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184 444 Q(eeof)-.18 E F0 1.657 +(The ef)224 456 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 468 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 480 S(yw).1 E(ord)-.1 +E F0(Same as)224 492 Q F12.5 E F0(.)A F1(monitor)184 504 Q F0 +(Same as)5.56 E F12.5 E F0(.)A F1(noclob)184 516 Q(ber)-.1 E F0 +(Same as)224 528 Q F12.5 E F0(.)A F1(noexec)184 540 Q F0(Same as) +11.12 E F12.5 E F0(.)A F1(noglob)184 552 Q F0(Same as)11.1 E F1 +2.5 E F0(.)A F1(nolog)5 E F0(Currently ignored.)2.5 E F1(notify) +184 564 Q F0(Same as)15 E F12.5 E F0(.)A F1(nounset)184 576 Q F0 +(Same as)6.66 E F12.5 E F0(.)A F1(onecmd)184 588 Q F0(Same as)6.67 +E F12.5 E F0(.)A F1(ph)184 600 Q(ysical)-.15 E F0(Same as)5.14 E +F12.5 E F0(.)A F1(pipefail)184 612 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 624 +R 1.136 (xit with a non-zero status, or zero if all commands in the pipeline) --.15 F -.15(ex)224 372 S(it successfully).15 E 5(.T)-.65 G -(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 384 Q F0 -2.091(Change the beha)17.77 F 2.091(vior of)-.2 F F1(bash)4.591 E F0 +-.15 F -.15(ex)224 636 S(it successfully).15 E 5(.T)-.65 G +(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 648 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(POSIX standard to match the standard \()224 396 Q -/F5 10/Times-Italic@0 SF(posix mode)A F0(\).)A F1(pri)184 408 Q(vileged) --.1 E F0(Same as)224 420 Q F12.5 E F0(.)A F1 -.1(ve)184 432 S -(rbose).1 E F0(Same as)7.33 E F12.5 E F0(.)A F1(vi)184 444 Q F0 -(Use a vi-style command line editing interf)32.22 E(ace.)-.1 E F1 -(xtrace)184 456 Q F0(Same as)13.35 E F12.5 E F0(.)A(If)184 474 Q -F13.052 E F0 .552(is supplied with no)3.052 F F5(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 -486 Q F0 1.072(is supplied with no)3.572 F F5(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 498 Q F1 -144 510 Q F0 -.45(Tu)28.74 G 1.071(rn on).45 F F5(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 -F2($ENV)3.572 E F0(and)3.322 E F2($B)3.572 E(ASH_ENV)-.27 E F0 1.072 -(\214les are not pro-)3.322 F 1.705 -(cessed, shell functions are not inherited from the en)184 522 R 1.705 -(vironment, and the)-.4 F F2(SHELLOPTS)4.205 E F0 -.25(va)184 534 S .018 +(fers from the)-.25 F(POSIX standard to match the standard \()224 660 Q +F3(posix mode)A F0(\).)A F1(pri)184 672 Q(vileged)-.1 E F0(Same as)224 +684 Q F12.5 E F0(.)A F1 -.1(ve)184 696 S(rbose).1 E F0(Same as) +7.33 E F12.5 E F0(.)A F1(vi)184 708 Q F0 +(Use a vi-style command line editing interf)32.22 E(ace.)-.1 E +(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(56)199.835 E 0 Cg EP +%%Page: 57 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(xtrace)184 84 Q F0(Same as)13.35 E F1 +2.5 E F0(.)A(If)184 102 Q F13.053 E F0 .553(is supplied with no) +3.053 F/F2 10/Times-Italic@0 SF(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 114 Q F0 1.071(is supplied with no)3.571 F F2 +(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 126 Q F1 +144 138 Q F0 -.45(Tu)28.74 G 1.072(rn on).45 F F2(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 +/F3 9/Times-Bold@0 SF($ENV)3.572 E F0(and)3.322 E F3($B)3.572 E(ASH_ENV) +-.27 E F0 1.071(\214les are not pro-)3.322 F 1.705 +(cessed, shell functions are not inherited from the en)184 150 R 1.705 +(vironment, and the)-.4 F F3(SHELLOPTS)4.206 E F0 -.25(va)184 162 S .019 (riable, if it appears in the en).25 F .019(vironment, is ignored.)-.4 F -.019(If the shell is started with the ef)5.019 F(fec-)-.25 E(ti)184 546 -Q 1.159 -.15(ve u)-.25 H .859 +.018(If the shell is started with the ef)5.019 F(fec-)-.25 E(ti)184 174 +Q 1.158 -.15(ve u)-.25 H .859 (ser \(group\) id not equal to the real user \(group\) id, and the).15 F -F13.359 E F0 .858(option is not sup-)3.359 F .293 -(plied, these actions are tak)184 558 R .293(en and the ef)-.1 F(fecti) +F13.359 E F0 .859(option is not sup-)3.359 F .294 +(plied, these actions are tak)184 186 R .293(en and the ef)-.1 F(fecti) -.25 E .593 -.15(ve u)-.25 H .293(ser id is set to the real user id.).15 -F .294(If the)5.294 F F12.794 E F0 1.196 -(option is supplied at startup, the ef)184 570 R(fecti)-.25 E 1.495 -.15 -(ve u)-.25 H 1.195(ser id is not reset.).15 F -.45(Tu)6.195 G 1.195 -(rning this option of).45 F(f)-.25 E(causes the ef)184 582 Q(fecti)-.25 +F .293(If the)5.293 F F12.793 E F0 1.195 +(option is supplied at startup, the ef)184 198 R(fecti)-.25 E 1.495 -.15 +(ve u)-.25 H 1.195(ser id is not reset.).15 F -.45(Tu)6.196 G 1.196 +(rning this option of).45 F(f)-.25 E(causes the ef)184 210 Q(fecti)-.25 E .3 -.15(ve u)-.25 H (ser and group ids to be set to the real user and group ids.).15 E F1 -144 594 Q F0(Exit after reading and e)30.97 E -.15(xe)-.15 G -(cuting one command.).15 E F1144 606 Q F0 -.35(Tr)28.74 G .444 +144 222 Q F0(Exit after reading and e)30.97 E -.15(xe)-.15 G +(cuting one command.).15 E F1144 234 Q F0 -.35(Tr)28.74 G .445 (eat unset v).35 F .444 (ariables as an error when performing parameter e)-.25 F 2.944 -(xpansion. If)-.15 F -.15(ex)2.945 G .445(pansion is).15 F .52 -(attempted on an unset v)184 618 R .519 +(xpansion. If)-.15 F -.15(ex)2.944 G .444(pansion is).15 F .519 +(attempted on an unset v)184 246 R .519 (ariable, the shell prints an error message, and, if not interacti)-.25 -F -.15(ve)-.25 G(,).15 E -.15(ex)184 630 S(its with a non-zero status.) -.15 E 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) +F -.15(ve)-.25 G(,).15 E -.15(ex)184 258 S(its with a non-zero status.) +.15 E F1144 270 Q F0(Print shell input lines as the)29.3 E 2.5(ya) +-.15 G(re read.)-2.5 E F1144 282 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.236(or arithmetic)184 666 R F1 +F1(select)2.815 E F0(command,)2.815 E 1.235(or arithmetic)184 294 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 ar)-.15 E(guments or associated w)-.18 E(ord list.)-.1 E F1 -144 690 Q F0 2.578(The shell performs brace e)27.63 F 2.578 +(xpanded v)-.15 F 1.236(alue of)-.25 F F3(PS4)3.736 E/F4 9/Times-Roman@0 +SF(,)A F0(follo)3.486 E 1.236(wed by the com-)-.25 F(mand and its e)184 +306 Q(xpanded ar)-.15 E(guments or associated w)-.18 E(ord list.)-.1 E +F1144 318 Q F0 2.579(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.079(\). This).15 F 2.579(is on by)5.079 F(def)184 702 Q -(ault.)-.1 E F1144 714 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 +-.15(ve)-.15 G 5.078(\). This).15 F 2.578(is on by)5.078 F(def)184 330 Q +(ault.)-.1 E F1144 342 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 (xisting \214le with the)-.15 F F1(>)2.714 E F0(,)A F1(>&)2.714 E F0 -2.713(,a)C(nd)-2.713 E F1(<>)2.713 E F0 .213(redirection opera-)2.713 F -5.435(tors. This)184 726 R 2.936(may be o)5.435 F -.15(ve)-.15 G 2.936 -(rridden when creating output \214les by using the redirection).15 F -(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 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(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 .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 108 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 120 Q F1 -144 132 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 144 Q -.15 -(ve)-.25 G(.).15 E F1144 156 Q F0 1.164 +2.714(,a)C(nd)-2.714 E F1(<>)2.714 E F0 .214(redirection opera-)2.714 F +3.054(tors. This)184 354 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 366 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 +144 378 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 390 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 402 Q F1 +144 414 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 426 Q -.15 +(ve)-.25 G(.).15 E F1144 438 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.165 -(cuting commands such as).15 F F1(cd)3.665 E F0 2.822 -(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.821 -(ysical directory structure)-.05 F 2.685(instead. By)184 180 R(def)2.685 +(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 450 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 462 R(def)2.686 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 474 Q(.)-.65 E F1144 +486 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 498 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 .401(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 510 Q F0 +(traps are normally not inherited in such cases.)2.5 E F1144 522 Q +F0 .4(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.4 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 F12.5 E -F0(.)A F1144 264 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 276 R F1 -3.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 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.401 E(the positional parameters are set to the)184 534 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 +546 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 558 R +F13.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 570 Q .425(The options are of)144 +586.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 .178 -(to be turned of)144 316.8 R 2.678(f. The)-.25 F .178 +(Using + rather than \255 causes these options)5.425 F .177 +(to be turned of)144 598.8 R 2.677(f. The)-.25 F .178 (options can also be speci\214ed as ar)2.678 F .178(guments to an in) --.18 F -.2(vo)-.4 G .177(cation of the shell.).2 F(The)5.177 E .066 -(current set of options may be found in)144 328.8 R F1<24ad>2.566 E F0 +-.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 610.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 .067(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 .429(The positional parameters from)144 369.6 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 381.6 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 393.6 R(If)5.06 E F2(n)2.92 E F0 +(ys true unless an in).1 F -.25(va)-.4 G .066(lid option).25 F +(is encountered.)144 622.8 Q F1(shift)108 639.6 Q F0([)2.5 E F2(n)A F0 +(])A .428(The positional parameters from)144 651.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 663.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 675.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 .143(positional parameters are not changed.)144 405.6 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 417.6 Q F1(shopt)108 434.4 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.828 E F0 .327(option causes output to be displaye\ -d in a form that may be reused as input.)2.828 F .327(Other options) -5.327 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.504 E F0(is)2.504 E .256(set or unset.)180 530.4 R .256 -(If multiple)5.256 F F2(optname)2.756 E F0(ar)2.756 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.755(,t)C .255(he return status is zero if)-2.755 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 .127 -(If either)144 571.2 R F12.627 E F0(or)2.627 E F12.627 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.024 -(are set or unset, respecti)144 583.2 R -.15(ve)-.25 G(ly).15 E 6.024 -(.U)-.65 G 1.024(nless otherwise noted, the)-6.024 F F1(shopt)3.523 E F0 -1.023(options are disabled \(unset\) by)3.523 F(def)144 595.2 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.545(are enabled, non-zero otherwise.) -4.045 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 .695(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 .199 -(If set, a command name that is the name of a directory is e)11.11 F --.15(xe)-.15 G .2(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 -(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 .156(If set, an ar)184 706.8 R .156 -(gument to the)-.18 F F1(cd)2.656 E F0 -.2(bu)2.656 G .155 -(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-3.2)72 768 Q -(2007 January 12)140.96 E(58)190.95 E 0 Cg EP -%%Page: 59 59 +(,t)C(he)-2.56 E .144(positional parameters are not changed.)144 687.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 699.6 Q(GNU Bash-3.2)72 768 Q +(2006 Jan 26)149.845 E(57)199.835 E 0 Cg EP +%%Page: 58 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(cdspell)144 84 Q F0 1.055 +-.35 E/F1 10/Times-Bold@0 SF(shopt)108 84 Q F0([)2.5 E F1(\255pqsu)A F0 +2.5(][)C F1-2.5 E F0 2.5(][)C/F2 10/Times-Italic@0 SF(optname)-2.5 +E F0(...])2.5 E -.8(To)144 96 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 F12.722 +E F0 .721(option, a list of all settable options is displayed, with an \ +indication of whether or not each is set.)144 108 R(The)144 120 Q F1 +2.827 E F0 .327(option causes output to be displayed in a form th\ +at may be reused as input.)2.827 F .328(Other options)5.328 F(ha)144 132 +Q .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 +144 Q F0(Enable \(set\) each)26.41 E F2(optname)2.5 E F0(.)A F1144 +156 Q F0(Disable \(unset\) each)24.74 E F2(optname)2.5 E F0(.)A F1 +144 168 Q F0 .003(Suppresses normal output \(quiet mode\); the return s\ +tatus indicates whether the)24.74 F F2(optname)2.503 E F0(is)2.503 E +.255(set or unset.)180 180 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 192 Q F2(optnames)2.5 E F0 +(are enabled; non-zero otherwise.)2.5 E F1144 204 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 220.8 R F1 +2.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 232.8 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 244.8 Q(ault.) +-.1 E 1.544(The return status when listing options is zero if all)144 +261.6 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 273.6 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .696 +(alid shell)-.25 F(option.)144 285.6 Q(The list of)144 302.4 Q F1(shopt) +2.5 E F0(options is:)2.5 E F1(cdable_v)144 320.4 Q(ars)-.1 E F0 .156 +(If set, an ar)184 332.4 R .156(gument to the)-.18 F F1(cd)2.656 E F0 +-.2(bu)2.656 G .155 +(iltin command that is not a directory is assumed to be the).2 F +(name of a v)184 344.4 Q(ariable whose v)-.25 E +(alue is the directory to change to.)-.25 E F1(cdspell)144 356.4 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.988 -(corrected. The)184 96 R 1.488(errors check)3.988 F 1.487 +(corrected. The)184 368.4 R 1.488(errors check)3.988 F 1.487 (ed for are transposed characters, a missing character)-.1 F 3.987(,a) --.4 G(nd)-3.987 E .552(one character too man)184 108 R 4.352 -.65(y. I) --.15 H 3.052(fac).65 G .552 +-.4 G(nd)-3.987 E .552(one character too man)184 380.4 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.08 -(If set,)184 144 R F1(bash)4.58 E F0 2.079 -(checks that a command found in the hash table e)4.58 F 2.079 -(xists before trying to)-.15 F -.15(exe)184 156 S(cute it.).15 E +(the command proceeds.)184 392.4 Q +(This option is only used by interacti)5 E .3 -.15(ve s)-.25 H(hells.) +.15 E F1(checkhash)144 404.4 Q F0 2.08(If set,)184 416.4 R F1(bash)4.58 +E F0 2.079(checks that a command found in the hash table e)4.58 F 2.079 +(xists before trying to)-.15 F -.15(exe)184 428.4 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 .56(If set, bash lists the status of an)184 180 R 3.061(ys)-.15 G -.561(topped and running jobs before e)-3.061 F .561(xiting an interacti) --.15 F -.15(ve)-.25 G 3.439(shell. If)184 192 R(an)3.439 E 3.439(yj)-.15 -G .938(obs are running, this causes the e)-3.439 F .938 -(xit to be deferred until a second e)-.15 F .938(xit is)-.15 F 1.456 -(attempted without an interv)184 204 R 1.456(ening command \(see)-.15 F -F1 1.456(JOB CONTR)3.956 F(OL)-.3 E F0(abo)3.956 E -.15(ve)-.15 G 3.956 -(\). The).15 F(shell)3.956 E(al)184 216 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 .797(If set,)184 240 R F1(bash)3.297 E F0 -.797(checks the windo)3.297 F 3.297(ws)-.25 G .796 -(ize after each command and, if necessary)-3.297 F 3.296(,u)-.65 G .796 -(pdates the)-3.296 F -.25(va)184 252 S(lues of).25 E/F2 9/Times-Bold@0 -SF(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 +(xists, a normal path search is performed.)-.15 E F1(checkwinsize)144 +440.4 Q F0 .796(If set,)184 452.4 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 464.4 S(lues of).25 E/F3 9/Times-Bold@0 +SF(LINES)2.5 E F0(and)2.25 E F3(COLUMNS)2.5 E/F4 9/Times-Roman@0 SF(.)A +F1(cmdhist)144 476.4 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(dotglob)144 288 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 -300 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 312 Q +488.4 Q 5(.T)-.65 G(his allo)-5 E +(ws easy re-editing of multi-line commands.)-.25 E F1(dotglob)144 500.4 +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 512.4 Q F0 1.387 +(If set, a non-interacti)7.79 F 1.687 -.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.386(cute the \214le speci\214ed as an).15 F(ar)184 524.4 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 324 Q F0 -.717(If set, aliases are e)184 336 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 348 Q(ault for interacti)-.1 -E .3 -.15(ve s)-.25 H(hells.).15 E F1(extdeb)144 360 Q(ug)-.2 E F0 -(If set, beha)184 372 Q(vior intended for use by deb)-.2 E -(uggers is enabled:)-.2 E F1(1.)184 384 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 396 Q -(gument.)-.18 E F1(2.)184 408 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 420 -Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 432 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 444 S .488 +E F1(exec)2.5 E F0 -.1(fa)2.5 G(ils.).1 E F1(expand_aliases)144 536.4 Q +F0 .716(If set, aliases are e)184 548.4 R .717(xpanded as described abo) +-.15 F 1.017 -.15(ve u)-.15 H(nder).15 E F3(ALIASES)3.217 E F4(.)A F0 +.717(This option is enabled)5.217 F(by def)184 560.4 Q +(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(extdeb)144 +572.4 Q(ug)-.2 E F0(If set, beha)184 584.4 Q +(vior intended for use by deb)-.2 E(uggers is enabled:)-.2 E F1(1.)184 +596.4 Q F0(The)28.5 E F14.251 E F0 1.751(option to the)4.251 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 608.4 +Q(gument.)-.18 E F1(2.)184 620.4 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 +632.4 Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 644.4 Q F0 .841 +(If the command run by the)28.5 F F1(DEB)3.341 E(UG)-.1 E F0 .841 +(trap returns a v)3.341 F .84(alue of 2, and the shell is)-.25 F -.15 +(exe)220 656.4 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 456 Q(ce)-.18 E F0 -.2(bu)2.5 G(iltins\), a call to).2 E F1 +(sour)220 668.4 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 26(4. B)184 -468 R(ASH_ARGC)-.3 E F0(and)3.775 E F1 -.3(BA)3.775 G(SH_ARGV).3 E F0 -1.276(are updated as described in their descrip-)3.775 F(tions abo)220 -480 Q -.15(ve)-.15 G(.).15 E F1(5.)184 492 Q F0 1.359 +680.4 R(ASH_ARGC)-.3 E F0(and)3.776 E F1 -.3(BA)3.776 G(SH_ARGV).3 E F0 +1.275(are updated as described in their descrip-)3.776 F(tions abo)220 +692.4 Q -.15(ve)-.15 G(.).15 E F1(5.)184 704.4 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 -504 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E/F4 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 516 Q F0 .804(Error tracing is enabled:)28.5 F .805 -(command substitution, shell functions, and subshells)5.804 F(in)220 528 -Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F4 -(command)2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1(ERR)2.5 E(OR)-.3 E F0 -(trap.)2.5 E F1(extglob)144 540 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 552 Q -F0(are enabled.)2.5 E F1(extquote)144 564 Q F0 2.473(If set,)184 576 R -F1($)4.973 E F0<08>A F4(string)A F0 4.973<0861>C(nd)-4.973 E F1($)4.973 -E F0(")A F4(string)A F0 4.973("q)C 2.473(uoting is performed within) --4.973 F F1(${)4.973 E F4(par)A(ameter)-.15 E F1(})A F0 -.15(ex)4.973 G -(pansions).15 E(enclosed in double quotes.)184 588 Q -(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 600 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 612 S(pansion error).15 E(.) --.55 E F1 -.25(fo)144 624 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 -.585(If set, the suf)184 636 R<8c78>-.25 E .585(es speci\214ed by the) --.15 F F1(FIGNORE)3.085 E F0 .585(shell v)3.085 F .585(ariable cause w) --.25 F .585(ords to be ignored)-.1 F .32(when performing w)184 648 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 3.329 -(pletions. See)184 660 R F2 .829(SHELL V)3.329 F(ARIABLES)-1.215 E F0 -(abo)3.079 E 1.129 -.15(ve f)-.15 H .83(or a description of).15 F F1 -(FIGNORE)3.33 E F0 5.83(.T)C .83(his option)-5.83 F(is enabled by def) -184 672 Q(ault.)-.1 E F1(gnu_errfmt)144 684 Q F0(If set, shell error me\ -ssages are written in the standard GNU error message format.)184 696 Q -(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 E(59)190.95 E 0 Cg EP -%%Page: 60 60 +716.4 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F2 +(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(GNU Bash-3.2)72 768 Q +(2006 Jan 26)149.845 E(58)199.835 E 0 Cg EP +%%Page: 59 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(histappend)144 84 Q F0 .384 +-.35 E/F1 10/Times-Bold@0 SF(6.)184 84 Q F0 .805 +(Error tracing is enabled:)28.5 F .804 +(command substitution, shell functions, and subshells)5.805 F(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 +/Times-Italic@0 SF(command)2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1 +(ERR)2.5 E(OR)-.3 E F0(trap.)2.5 E F1(extglob)144 108 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 120 Q +F0(are enabled.)2.5 E F1(extquote)144 132 Q F0 2.473(If set,)184 144 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 156 Q +(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 168 Q F0 +1.424(If set, patterns which f)7.77 F 1.425 +(ail to match \214lenames during pathname e)-.1 F 1.425 +(xpansion result in an)-.15 F -.15(ex)184 180 S(pansion error).15 E(.) +-.55 E F1 -.25(fo)144 192 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 +.585(If set, the suf)184 204 R<8c78>-.25 E .585(es speci\214ed by the) +-.15 F F1(FIGNORE)3.085 E F0 .585(shell v)3.085 F .585(ariable cause w) +-.25 F .585(ords to be ignored)-.1 F .32(when performing w)184 216 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 3.33 +(pletions. See)184 228 R/F3 9/Times-Bold@0 SF .83(SHELL V)3.33 F +(ARIABLES)-1.215 E F0(abo)3.08 E 1.13 -.15(ve f)-.15 H .829 +(or a description of).15 F F1(FIGNORE)3.329 E F0 5.829(.T)C .829 +(his option)-5.829 F(is enabled by def)184 240 Q(ault.)-.1 E F1 +(gnu_errfmt)144 252 Q F0(If set, shell error messages are written in th\ +e standard GNU error message format.)184 264 Q F1(histappend)144 276 Q +F0 .383 (If set, the history list is appended to the \214le named by the v)184 -96 R .383(alue of the)-.25 F F1(HISTFILE)2.883 E F0 -.25(va)2.883 G(ri-) -.25 E(able when the shell e)184 108 Q(xits, rather than o)-.15 E -.15 -(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 120 Q(eedit)-.18 E F0 -.575(If set, and)184 132 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 144 Q F1(histv)144 156 Q(erify)-.1 E F0 .403 -(If set, and)184 168 R F1 -.18(re)2.903 G(adline).18 E F0 .403 +288 R .384(alue of the)-.25 F F1(HISTFILE)2.884 E F0 -.25(va)2.884 G +(ri-).25 E(able when the shell e)184 300 Q(xits, rather than o)-.15 E +-.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 312 Q(eedit)-.18 +E F0 .576(If set, and)184 324 R F1 -.18(re)3.076 G(adline).18 E F0 .575 +(is being used, a user is gi)3.076 F -.15(ve)-.25 G 3.075(nt).15 G .575 +(he opportunity to re-edit a f)-3.075 F .575(ailed his-)-.1 F +(tory substitution.)184 336 Q F1(histv)144 348 Q(erify)-.1 E F0 .402 +(If set, and)184 360 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 180 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 192 S -.25(ff).2 G(er).25 E +2.903 F .662(passed to the shell parser)184 372 R 5.662(.I)-.55 G .661 +(nstead, the resulting line is loaded into the)-5.662 F F1 -.18(re)3.161 +G(adline).18 E F0(editing)3.161 E -.2(bu)184 384 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 204 Q F0 1.182(If set, and)184 216 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 -228 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 -/F2 9/Times-Bold@0 SF(READLINE)3.881 E F0(abo)184 240 Q -.15(ve)-.15 G -2.5(\). This).15 F(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 -252 Q F0(If set,)184 264 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 276 Q -.1(ve)-.1 G -(_comments).1 E F0 .33(If set, allo)184 288 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 300 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 -312 Q(ault.)-.1 E F1(lithist)144 324 Q F0 .655(If set, and the)15.55 F -F1(cmdhist)3.155 E F0 .654 -(option is enabled, multi-line commands are sa)3.154 F -.15(ve)-.2 G -3.154(dt).15 G 3.154(ot)-3.154 G .654(he history)-3.154 F -(with embedded ne)184 336 Q +(hostcomplete)144 396 Q F0 1.181(If set, and)184 408 R F1 -.18(re)3.681 +G(adline).18 E F0 1.181(is being used,)3.681 F F1(bash)3.682 E F0 1.182 +(will attempt to perform hostname completion)3.682 F 1.381(when a w)184 +420 R 1.381(ord containing a)-.1 F F1(@)3.881 E F0 1.381 +(is being completed \(see)3.881 F F1(Completing)3.88 E F0(under)3.88 E +F3(READLINE)3.88 E F0(abo)184 432 Q -.15(ve)-.15 G 2.5(\). This).15 F +(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 444 Q F0(If set,) +184 456 Q F1(bash)2.5 E F0(will send)2.5 E F3(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 468 Q -.1(ve)-.1 G(_comments).1 E F0 +.33(If set, allo)184 480 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 492 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 .967(option is)3.467 F(enabled by def)184 504 Q +(ault.)-.1 E F1(lithist)144 516 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 528 Q (wlines rather than using semicolon separators where possible.)-.25 E F1 -(login_shell)144 348 Q F0 .486 +(login_shell)144 540 Q F0 .486 (The shell sets this option if it is started as a login shell \(see)184 -360 R F2(INV)2.987 E(OCA)-.405 E(TION)-.855 E F0(abo)2.737 E -.15(ve) --.15 G 2.987(\). The).15 F -.25(va)184 372 S(lue may not be changed.).25 -E F1(mailwar)144 384 Q(n)-.15 E F0 .815(If set, and a \214le that)184 -396 R F1(bash)3.315 E F0 .814 -(is checking for mail has been accessed since the last time it)3.315 F --.1(wa)184 408 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 420 Q F0 .145(If set, and)184 432 R F1 -.18 -(re)2.645 G(adline).18 E F0 .145(is being used,)2.645 F F1(bash)2.646 E -F0 .146(will not attempt to search the)2.646 F F1 -.74(PA)2.646 G(TH) --.21 E F0 .146(for possible)2.646 F -(completions when completion is attempted on an empty line.)184 444 Q F1 -(nocaseglob)144 456 Q F0 .437(If set,)184 468 R F1(bash)2.937 E F0 .436 -(matches \214lenames in a case\255insensiti)2.937 F .736 -.15(ve f)-.25 -H .436(ashion when performing pathname).05 F -.15(ex)184 480 S +552 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 564 S(lue may not be changed.).25 +E F1(mailwar)144 576 Q(n)-.15 E F0 .814(If set, and a \214le that)184 +588 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 600 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 612 +Q F0 .146(If set, and)184 624 R F1 -.18(re)2.646 G(adline).18 E F0 .146 +(is being used,)2.646 F F1(bash)2.646 E F0 .145 +(will not attempt to search the)2.646 F F1 -.74(PA)2.645 G(TH)-.21 E F0 +.145(for possible)2.645 F +(completions when completion is attempted on an empty line.)184 636 Q F1 +(nocaseglob)144 648 Q F0 .436(If set,)184 660 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 672 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 492 Q F0 1.193(If set,)184 -504 R F1(bash)3.693 E F0 1.194(matches patterns in a case\255insensiti) -3.693 F 1.494 -.15(ve f)-.25 H 1.194(ashion when performing matching).05 -F(while e)184 516 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 528 Q F0 -.855(If set,)184 540 R F1(bash)3.355 E F0(allo)3.355 E .855 -(ws patterns which match no \214les \(see)-.25 F F1 -.1(Pa)3.354 G .854 -(thname Expansion).1 F F0(abo)3.354 E -.15(ve)-.15 G 3.354(\)t).15 G(o) --3.354 E -.15(ex)184 552 S(pand to a null string, rather than themselv) -.15 E(es.)-.15 E F1(pr)144 564 Q(ogcomp)-.18 E F0 .676 -(If set, the programmable completion f)184 576 R .677(acilities \(see) --.1 F F1(Pr)3.177 E .677(ogrammable Completion)-.18 F F0(abo)3.177 E --.15(ve)-.15 G(\)).15 E(are enabled.)184 588 Q -(This option is enabled by def)5 E(ault.)-.1 E F1(pr)144 600 Q(omptv) --.18 E(ars)-.1 E F0 1.448(If set, prompt strings under)184 612 R 1.448 -(go parameter e)-.18 F 1.447(xpansion, command substitution, arithmetic) --.15 F -.15(ex)184 624 S .17(pansion, and quote remo).15 F -.25(va)-.15 +-.15(ve)-.15 G(\).).15 E F1(nocasematch)144 684 Q F0 1.194(If set,)184 +696 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 708 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(GNU Bash-3.2)72 768 Q +(2006 Jan 26)149.845 E(59)199.835 E 0 Cg EP +%%Page: 60 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(nullglob)144 84 Q F0 .854(If set,)184 96 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 108 S(pand to a null string, rather than themselv) +.15 E(es.)-.15 E F1(pr)144 120 Q(ogcomp)-.18 E F0 .677 +(If set, the programmable completion f)184 132 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 144 Q +(This option is enabled by def)5 E(ault.)-.1 E F1(pr)144 156 Q(omptv) +-.18 E(ars)-.1 E F0 1.447(If set, prompt strings under)184 168 R 1.448 +(go parameter e)-.18 F 1.448(xpansion, command substitution, arithmetic) +-.15 F -.15(ex)184 180 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(PR)2.671 E(OMPTING)-.27 E F0(abo)2.421 E -.15(ve)-.15 G(.).15 -E(This option is enabled by def)184 636 Q(ault.)-.1 E F1 -.18(re)144 648 -S(stricted_shell).18 E F0 1.069 +-.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 192 Q(ault.)-.1 E +F1 -.18(re)144 204 S(stricted_shell).18 E F0 1.069 (The shell sets this option if it is started in restricted mode \(see) -184 660 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 672 Q 4.178 +184 216 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 228 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 684 S(cuted, allo).15 E(wing the startup \214les to disco)-.25 E +184 240 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 696 Q(erbose)-.1 E F0 .502(If set, the)184 708 R F1 -(shift)3.002 E F0 -.2(bu)3.002 G .501 -(iltin prints an error message when the shift count e).2 F .501 -(xceeds the number)-.15 F(of positional parameters.)184 720 Q -(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 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(sour)144 84 Q(cepath)-.18 E F0 .77 -(If set, the)184 96 R F1(sour)3.27 E(ce)-.18 E F0(\()3.27 E F1(.)A F0 -3.27(\)b)C .77(uiltin uses the v)-3.47 F .771(alue of)-.25 F/F2 9 -/Times-Bold@0 SF -.666(PA)3.271 G(TH)-.189 E F0 .771 -(to \214nd the directory containing the)3.021 F -(\214le supplied as an ar)184 108 Q 2.5(gument. This)-.18 F -(option is enabled by def)2.5 E(ault.)-.1 E F1(xpg_echo)144 120 Q F0 -(If set, the)184 132 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 144 Q F0([)2.5 E F1A F0(])A .493(Suspend the e)144 156 R -.15 -(xe)-.15 G .493(cution of this shell until it recei).15 F -.15(ve)-.25 G -2.992(sa).15 G F2(SIGCONT)A F0 2.992(signal. The)2.742 F F12.992 E -F0 .492(option says not to)2.992 F .758 -(complain if this is a login shell; just suspend an)144 168 R(yw)-.15 E -(ay)-.1 E 5.758(.T)-.65 G .759 +F1(shift_v)144 252 Q(erbose)-.1 E F0 .501(If set, the)184 264 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 276 Q F1(sour) +144 288 Q(cepath)-.18 E F0 .771(If set, the)184 300 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 312 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E(ault.) +-.1 E F1(xpg_echo)144 324 Q F0(If set, the)184 336 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 348 Q F0([)2.5 E F1A F0(])A .492 +(Suspend the e)144 360 R -.15(xe)-.15 G .492 +(cution of this shell until it recei).15 F -.15(ve)-.25 G 2.992(sa).15 G +F2(SIGCONT).001 E F0 2.993(signal. The)2.743 F F12.993 E F0 .493 +(option says not to)2.993 F .759 +(complain if this is a login shell; just suspend an)144 372 R(yw)-.15 E +(ay)-.1 E 5.758(.T)-.65 G .758 (he return status is 0 unless the shell is a)-5.758 F(login shell and) -144 180 Q F12.5 E F0 +144 384 Q F12.5 E F0 (is not supplied, or if job control is not enabled.)2.5 E F1(test)108 -192 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([)108 204 Q F3 -.2 +396 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([)108 408 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.187 -(operator and operand must be a separate ar)144 216 R 3.688 -(gument. Expressions)-.18 F 1.188(are composed of the primaries)3.688 F -1.89(described abo)144 228 R 2.19 -.15(ve u)-.15 H(nder).15 E F2 -(CONDITION)4.39 E 1.89(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(.)A -F1(test)6.39 E F0 1.889(does not accept an)4.389 F 4.389(yo)-.15 G 1.889 -(ptions, nor)-4.389 F(does it accept and ignore an ar)144 240 Q +(pr).2 E F0 6.15(.E).73 G(ach)-6.15 E 1.188 +(operator and operand must be a separate ar)144 420 R 3.688 +(gument. Expressions)-.18 F 1.187(are composed of the primaries)3.688 F +1.889(described abo)144 432 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 444 Q (gument of)-.18 E F12.5 E F0(as signifying the end of options.)2.5 -E .785(Expressions may be combined using the follo)144 258 R .786 +E .786(Expressions may be combined using the follo)144 462 R .785 (wing operators, listed in decreasing order of prece-)-.25 F(dence.)144 -270 Q F1(!)144 282 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 294 Q F3 +474 Q F1(!)144 486 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 498 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 306 Q F3 -.2(ex) -144 318 S(pr1).2 E F02.5 E F1(a)A F3 -.2(ex)2.5 G(pr2).2 E F0 -.35 -(Tr)180 330 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 342 S(pr1).2 E -F02.5 E F1(o)A F3 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 354 S +(rride the normal precedence of opera-).15 F(tors.)180 510 Q F3 -.2(ex) +144 522 S(pr1).2 E F02.5 E F1(a)A F3 -.2(ex)2.5 G(pr2).2 E F0 -.35 +(Tr)180 534 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 546 S(pr1).2 E +F02.5 E F1(o)A F3 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 558 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 370.8 Q F0(and)2.5 E F1([)2.5 E +(pr2).2 E F0(is true.)2.52 E F1(test)144 574.8 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 388.8 S -.18(rg)-2.5 G(uments).18 E(The e) -180 400.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 412.8 S -.18 -(rg)-2.5 G(ument).18 E(The e)180 424.8 Q +(guments.)-.18 E 2.5(0a)144 592.8 S -.18(rg)-2.5 G(uments).18 E(The e) +180 604.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 616.8 S -.18 +(rg)-2.5 G(ument).18 E(The e)180 628.8 Q (xpression is true if and only if the ar)-.15 E(gument is not null.)-.18 -E 2.5(2a)144 436.8 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) -180 448.8 R .37(gument is)-.18 F F1(!)2.87 E F0 2.87(,t)C .37(he e)-2.87 +E 2.5(2a)144 640.8 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) +180 652.8 R .37(gument is)-.18 F F1(!)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 460.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(CONDI-)2.879 E(TION)180 472.8 Q .552 +(gument is null.)-.18 F .379(If the \214rst ar)180 664.8 R .38 +(gument is one of the unary conditional operators listed abo)-.18 F .68 +-.15(ve u)-.15 H(nder).15 E F2(CONDI-)2.88 E(TION)180 676.8 Q .553 (AL EXPRESSIONS)-.18 F F4(,)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 484.8 Q +(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 688.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 496.8 S -.18(rg)-2.5 G -(uments).18 E .024(If the second ar)180 508.8 R .023 +(xpression is f)-.15 E(alse.)-.1 E 2.5(3a)144 700.8 S -.18(rg)-2.5 G +(uments).18 E .023(If the second ar)180 712.8 R .023 (gument is one of the binary conditional operators listed abo)-.18 F -.323 -.15(ve u)-.15 H(nder).15 E F2(CON-)2.523 E(DITION)180 520.8 Q -1.477(AL EXPRESSIONS)-.18 F F4(,)A F0 1.477(the result of the e)3.727 F -1.477(xpression is the result of the binary test)-.15 F .398 -(using the \214rst and third ar)180 532.8 R .398(guments as operands.) --.18 F .398(If the \214rst ar)5.398 F .397(gument is)-.18 F F1(!)2.897 E -F0 2.897(,t)C .397(he v)-2.897 F .397(alue is the)-.25 F(ne)180 544.8 Q --.05(ga)-.15 G .262(tion of the tw).05 F(o-ar)-.1 E .262 -(gument test using the second and third ar)-.18 F 2.762(guments. If)-.18 -F .263(the \214rst ar)2.762 F(gu-)-.18 E .206(ment is e)180 556.8 R -(xactly)-.15 E F1(\()2.706 E F0 .205(and the third ar)2.706 F .205 -(gument is e)-.18 F(xactly)-.15 E F1(\))2.705 E F0 2.705(,t)C .205 -(he result is the one-ar)-2.705 F .205(gument test of)-.18 F 1.17 -(the second ar)180 568.8 R 3.67(gument. Otherwise,)-.18 F 1.171(the e) -3.671 F 1.171(xpression is f)-.15 F 3.671(alse. The)-.1 F F13.671 -E F0(and)3.671 E F13.671 E F0 1.171(operators are)3.671 F -(considered binary operators in this case.)180 580.8 Q 2.5(4a)144 592.8 -S -.18(rg)-2.5 G(uments).18 E .385(If the \214rst ar)180 604.8 R .385 -(gument is)-.18 F F1(!)2.885 E F0 2.885(,t)C .385(he result is the ne) --2.885 F -.05(ga)-.15 G .384(tion of the three-ar).05 F .384(gument e) --.18 F .384(xpression com-)-.15 F 1.647(posed of the remaining ar)180 -616.8 R 4.147(guments. Otherwise,)-.18 F 1.647(the e)4.147 F 1.648 -(xpression is parsed and e)-.15 F -.25(va)-.25 G(luated).25 E -(according to precedence using the rules listed abo)180 628.8 Q -.15(ve) --.15 G(.).15 E 2.5(5o)144 640.8 S 2.5(rm)-2.5 G(ore ar)-2.5 E(guments) --.18 E 1.635(The e)180 652.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 -664.8 Q -.15(ve)-.15 G(.).15 E F1(times)108 681.6 Q F0 1.229(Print the \ -accumulated user and system times for the shell and for processes run f\ -rom the shell.)13.23 F(The return status is 0.)144 693.6 Q(GNU Bash-3.2) -72 768 Q(2007 January 12)140.96 E(61)190.95 E 0 Cg EP -%%Page: 62 62 +.324 -.15(ve u)-.15 H(nder).15 E F2(CON-)2.524 E(DITION)180 724.8 Q +1.478(AL EXPRESSIONS)-.18 F F4(,)A F0 1.477(the result of the e)3.727 F +1.477(xpression is the result of the binary test)-.15 F(GNU Bash-3.2)72 +768 Q(2006 Jan 26)149.845 E(60)199.835 E 0 Cg EP +%%Page: 61 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/F1 10/Times-Bold@0 SF(trap)108 84 Q F0([)2.5 E F1(\255lp)A F0 2.5 -(][)C([)-2.5 E/F2 10/Times-Italic@0 SF(ar)A(g)-.37 E F0(])A F2(sigspec) -2.5 E F0(...])2.5 E .703(The command)144 96 R F2(ar)3.533 E(g)-.37 E F0 -.703(is to be read and e)3.423 F -.15(xe)-.15 G .702 -(cuted when the shell recei).15 F -.15(ve)-.25 G 3.202(ss).15 G -(ignal\(s\))-3.202 E F2(sigspec)3.202 E F0 5.702(.I).31 G(f)-5.702 E F2 -(ar)3.532 E(g)-.37 E F0(is)3.422 E .608(absent \(and there is a single) -144 108 R F2(sigspec)3.108 E F0 3.108(\)o)C(r)-3.108 E F13.108 E F0 -3.108(,e)C .608 +-.35 E .397(using the \214rst and third ar)180 84 R .397 +(guments as operands.)-.18 F .398(If the \214rst ar)5.398 F .398 +(gument is)-.18 F/F1 10/Times-Bold@0 SF(!)2.898 E F0 2.898(,t)C .398 +(he v)-2.898 F .398(alue is the)-.25 F(ne)180 96 Q -.05(ga)-.15 G .263 +(tion of the tw).05 F(o-ar)-.1 E .262 +(gument test using the second and third ar)-.18 F 2.762(guments. If)-.18 +F .262(the \214rst ar)2.762 F(gu-)-.18 E .205(ment is e)180 108 R +(xactly)-.15 E F1(\()2.705 E F0 .205(and the third ar)2.705 F .205 +(gument is e)-.18 F(xactly)-.15 E F1(\))2.705 E F0 2.705(,t)C .206 +(he result is the one-ar)-2.705 F .206(gument test of)-.18 F 1.171 +(the second ar)180 120 R 3.671(gument. Otherwise,)-.18 F 1.171(the e) +3.671 F 1.171(xpression is f)-.15 F 3.671(alse. The)-.1 F F13.671 +E F0(and)3.671 E F13.67 E F0 1.17(operators are)3.67 F +(considered binary operators in this case.)180 132 Q 2.5(4a)144 144 S +-.18(rg)-2.5 G(uments).18 E .384(If the \214rst ar)180 156 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 +168 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 180 Q -.15(ve) +-.15 G(.).15 E 2.5(5o)144 192 S 2.5(rm)-2.5 G(ore ar)-2.5 E(guments)-.18 +E 1.635(The e)180 204 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 216 Q -.15(ve)-.15 G(.).15 E F1(times)108 232.8 Q F0 1.229(Pri\ +nt the accumulated user and system times for the shell and for processe\ +s run from the shell.)13.23 F(The return status is 0.)144 244.8 Q F1 +(trap)108 261.6 Q F0([)2.5 E F1(\255lp)A F0 2.5(][)C([)-2.5 E/F2 10 +/Times-Italic@0 SF(ar)A(g)-.37 E F0(])A F2(sigspec)2.5 E F0(...])2.5 E +.702(The command)144 273.6 R F2(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 F2(sigspec)3.203 E F0 5.703(.I).31 G(f)-5.703 E F2 +(ar)3.533 E(g)-.37 E F0(is)3.423 E .609(absent \(and there is a single) +144 285.6 R F2(sigspec)3.108 E F0 3.108(\)o)C(r)-3.108 E F13.108 E +F0 3.108(,e)C .608 (ach speci\214ed signal is reset to its original disposition)-3.108 F -.659(\(the v)144 120 R .659(alue it had upon entrance to the shell\).) --.25 F(If)5.658 E F2(ar)3.488 E(g)-.37 E F0 .658 +.658(\(the v)144 297.6 R .658(alue it had upon entrance to the shell\).) +-.25 F(If)5.658 E F2(ar)3.488 E(g)-.37 E F0 .659 (is the null string the signal speci\214ed by each)3.378 F F2(sigspec) -144.34 132 Q F0 .58(is ignored by the shell and by the commands it in) -3.39 F -.2(vo)-.4 G -.1(ke).2 G 3.081(s. If).1 F F2(ar)3.411 E(g)-.37 E -F0 .581(is not present and)3.301 F F13.081 E F0(has)3.081 E 1.215 -(been supplied, then the trap commands associated with each)144 144 R F2 -(sigspec)4.054 E F0 1.214(are displayed.)4.024 F 1.214(If no ar)6.214 F -(gu-)-.18 E .86(ments are supplied or if only)144 156 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 +144.34 309.6 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 F2(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 321.6 R +F2(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 333.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 (prints the list of commands associated with each)3.36 F 2.83 -(signal. The)144 168 R F12.83 E F0 .33(option causes the shell to\ - print a list of signal names and their corresponding num-)2.83 F 4.31 -(bers. Each)144 180 R F2(sigspec)4.65 E F0 1.811 -(is either a signal name de\214ned in <)4.62 F F2(signal.h)A F0 1.811 -(>, or a signal number)B 6.811(.S)-.55 G(ignal)-6.811 E .745 -(names are case insensiti)144 192 R 1.045 -.15(ve a)-.25 H .745 +(signal. The)144 345.6 R F12.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 357.6 R F2(sigspec)4.651 E F0 1.811 +(is either a signal name de\214ned in <)4.621 F F2(signal.h)A F0 1.81 +(>, or a signal number)B 6.81(.S)-.55 G(ignal)-6.81 E .745 +(names are case insensiti)144 369.6 R 1.045 -.15(ve a)-.25 H .745 (nd the SIG pre\214x is optional.).15 F .745(If a)5.745 F F2(sigspec) 3.585 E F0(is)3.555 E/F3 9/Times-Bold@0 SF(EXIT)3.245 E F0 .745 -(\(0\) the command)2.995 F F2(ar)144.33 204 Q(g)-.37 E F0 1.629(is e) -4.349 F -.15(xe)-.15 G 1.629(cuted on e).15 F 1.63(xit from the shell.) +(\(0\) the command)2.995 F F2(ar)144.33 381.6 Q(g)-.37 E F0 1.63(is e) +4.35 F -.15(xe)-.15 G 1.63(cuted on e).15 F 1.63(xit from the shell.) -.15 F 1.63(If a)6.63 F F2(sigspec)4.47 E F0(is)4.44 E F3(DEB)4.13 E(UG) --.09 E/F4 9/Times-Roman@0 SF(,)A F0 1.63(the command)3.88 F F2(ar)4.46 E -(g)-.37 E F0 1.63(is e)4.35 F -.15(xe)-.15 G(cuted).15 E 1.207(before e) -144 216 R -.15(ve)-.25 G(ry).15 E F2 1.207(simple command)3.707 F F0(,)A -F2(for)3.707 E F0(command,)3.706 E F2(case)3.706 E F0(command,)3.706 E -F2(select)3.706 E F0 1.206(command, e)3.706 F -.15(ve)-.25 G 1.206 -(ry arithmetic).15 F F2(for)144 228 Q F0 .412 -(command, and before the \214rst command e)2.912 F -.15(xe)-.15 G .412 -(cutes in a shell function \(see).15 F F3 .413(SHELL GRAMMAR)2.912 F F0 -(abo)144 240 Q -.15(ve)-.15 G 2.666(\). Refer).15 F .166 -(to the description of the)2.666 F F1(extdeb)2.666 E(ug)-.2 E F0 .166 +-.09 E/F4 9/Times-Roman@0 SF(,)A F0 1.629(the command)3.88 F F2(ar)4.459 +E(g)-.37 E F0 1.629(is e)4.349 F -.15(xe)-.15 G(cuted).15 E 1.206 +(before e)144 393.6 R -.15(ve)-.25 G(ry).15 E F2 1.206(simple command) +3.706 F F0(,)A F2(for)3.706 E F0(command,)3.706 E F2(case)3.706 E F0 +(command,)3.706 E F2(select)3.707 E F0 1.207(command, e)3.707 F -.15(ve) +-.25 G 1.207(ry arithmetic).15 F F2(for)144 405.6 Q F0 .412 +(command, and before the \214rst command e)2.913 F -.15(xe)-.15 G .412 +(cutes in a shell function \(see).15 F F3 .412(SHELL GRAMMAR)2.912 F F0 +(abo)144 417.6 Q -.15(ve)-.15 G 2.665(\). Refer).15 F .166 +(to the description of the)2.665 F F1(extdeb)2.666 E(ug)-.2 E F0 .166 (option to the)2.666 F F1(shopt)2.666 E F0 -.2(bu)2.666 G .166 -(iltin for details of its ef).2 F(fect)-.25 E .508(on the)144 252 R F1 -(DEB)3.008 E(UG)-.1 E F0 3.008(trap. If)3.008 F(a)3.008 E F2(sigspec) +(iltin for details of its ef).2 F(fect)-.25 E .509(on the)144 429.6 R F1 +(DEB)3.009 E(UG)-.1 E F0 3.009(trap. If)3.009 F(a)3.009 E F2(sigspec) 3.348 E F0(is)3.318 E F3(ERR)3.008 E F4(,)A F0 .508(the command)2.758 F -F2(ar)3.338 E(g)-.37 E F0 .509(is e)3.228 F -.15(xe)-.15 G .509 -(cuted whene).15 F -.15(ve)-.25 G 3.009(ras).15 G .509(imple com-)-3.009 -F 2.506(mand has a non\255zero e)144 264 R 2.506 +F2(ar)3.338 E(g)-.37 E F0 .508(is e)3.228 F -.15(xe)-.15 G .508 +(cuted whene).15 F -.15(ve)-.25 G 3.008(ras).15 G .508(imple com-)-3.008 +F 2.506(mand has a non\255zero e)144 441.6 R 2.506 (xit status, subject to the follo)-.15 F 2.506(wing conditions.)-.25 F (The)7.506 E F3(ERR)5.006 E F0 2.506(trap is not)4.756 F -.15(exe)144 -276 S .105(cuted if the f).15 F .105 +453.6 S .105(cuted if the f).15 F .105 (ailed command is part of the command list immediately follo)-.1 F .105 (wing a)-.25 F F1(while)2.605 E F0(or)2.605 E F1(until)2.605 E F0 -.1 -(ke)144 288 S(yw)-.05 E .936(ord, part of the test in an)-.1 F F2(if) +(ke)144 465.6 S(yw)-.05 E .936(ord, part of the test in an)-.1 F F2(if) 3.446 E F0 .936(statement, part of a)5.396 F F1(&&)3.436 E F0(or)3.436 E /F5 10/Symbol SF3.436 E F0 .936(list, or if the command')3.436 F -3.436(sr)-.55 G(eturn)-3.436 E -.25(va)144 300 S 1.094(lue is being in) -.25 F -.15(ve)-.4 G 1.094(rted via).15 F F1(!)3.594 E F0 6.094(.T)C -1.094(hese are the same conditions obe)-6.094 F 1.094(yed by the)-.15 F -F1(err)3.594 E(exit)-.18 E F0 3.595(option. If)3.594 F(a)3.595 E F2 -(sigspec)144.34 312 Q F0(is)3.349 E F3(RETURN)3.039 E F4(,)A F0 .539 -(the command)2.789 F F2(ar)3.368 E(g)-.37 E F0 .538(is e)3.258 F -.15 -(xe)-.15 G .538(cuted each time a shell function or a script e).15 F --.15(xe)-.15 G(cuted).15 E .505(with the)144 324 R F1(.)3.005 E F0(or) -3.005 E F1(sour)3.005 E(ce)-.18 E F0 -.2(bu)3.005 G .505 -(iltins \214nishes e).2 F -.15(xe)-.15 G 3.006(cuting. Signals).15 F -.506(ignored upon entry to the shell cannot be)3.006 F .704 -(trapped or reset.)144 336 R -.35(Tr)5.704 G .704 -(apped signals that are not being ignored are reset to their original v) -.35 F .703(alues in a)-.25 F .224(child process when it is created.)144 -348 R .224(The return status is f)5.224 F .224(alse if an)-.1 F(y)-.15 E -F2(sigspec)3.064 E F0 .224(is in)3.034 F -.25(va)-.4 G .225 -(lid; otherwise).25 F F1(trap)2.725 E F0(returns true.)144 360 Q F1 -(type)108 376.8 Q F0([)2.5 E F1(\255aftpP)A F0(])A F2(name)2.5 E F0([) -2.5 E F2(name)A F0(...])2.5 E -.4(Wi)144 388.8 S .174 -(th no options, indicate ho).4 F 2.674(we)-.25 G(ach)-2.674 E F2(name) -3.034 E F0 -.1(wo)2.854 G .173 +3.436(sr)-.55 G(eturn)-3.436 E -.25(va)144 477.6 S 1.095 +(lue is being in).25 F -.15(ve)-.4 G 1.094(rted via).15 F F1(!)3.594 E +F0 6.094(.T)C 1.094(hese are the same conditions obe)-6.094 F 1.094 +(yed by the)-.15 F F1(err)3.594 E(exit)-.18 E F0 3.594(option. If)3.594 +F(a)3.594 E F2(sigspec)144.34 489.6 Q F0(is)3.348 E F3(RETURN)3.038 E F4 +(,)A F0 .538(the command)2.788 F F2(ar)3.368 E(g)-.37 E F0 .538(is e) +3.258 F -.15(xe)-.15 G .538 +(cuted each time a shell function or a script e).15 F -.15(xe)-.15 G +(cuted).15 E .506(with the)144 501.6 R F1(.)3.006 E F0(or)3.006 E F1 +(sour)3.006 E(ce)-.18 E F0 -.2(bu)3.006 G .506(iltins \214nishes e).2 F +-.15(xe)-.15 G 3.006(cuting. Signals).15 F .505 +(ignored upon entry to the shell cannot be)3.006 F .155 +(trapped or reset.)144 513.6 R -.35(Tr)5.155 G .155 +(apped signals are reset to their original v).35 F .156 +(alues in a child process when it is cre-)-.25 F 2.5(ated. The)144 525.6 +R(return status is f)2.5 E(alse if an)-.1 E(y)-.15 E F2(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 F1(type)108 542.4 Q F0([)2.5 E F1(\255aftpP)A F0(]) +A F2(name)2.5 E F0([)2.5 E F2(name)A F0(...])2.5 E -.4(Wi)144 554.4 S +.174(th no options, indicate ho).4 F 2.674(we)-.25 G(ach)-2.674 E F2 +(name)3.034 E F0 -.1(wo)2.854 G .173 (uld be interpreted if used as a command name.).1 F .173(If the)5.173 F -F1144 400.8 Q F0 .842(option is used,)3.342 F F1(type)3.342 E F0 +F1144 566.4 Q F0 .842(option is used,)3.342 F F1(type)3.342 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.343 G(iltin).2 E F0 3.343(,o).24 G(r)-3.343 E F2 -(\214le)5.253 E F0(if)3.523 E F2(name)144.36 412.8 Q F0 .087 +(\214le)5.253 E F0(if)3.523 E F2(name)144.36 578.4 Q F0 .087 (is an alias, shell reserv)2.767 F .087(ed w)-.15 F .087 (ord, function, b)-.1 F .086(uiltin, or disk \214le, respecti)-.2 F -.15 (ve)-.25 G(ly).15 E 5.086(.I)-.65 G 2.586(ft)-5.086 G(he)-2.586 E F2 (name)2.946 E F0 .086(is not)2.766 F .118 -(found, then nothing is printed, and an e)144 424.8 R .118 +(found, then nothing is printed, and an e)144 590.4 R .118 (xit status of f)-.15 F .118(alse is returned.)-.1 F .119(If the)5.119 F F12.619 E F0 .119(option is used,)2.619 F F1(type)2.619 E F0 .855 -(either returns the name of the disk \214le that w)144 436.8 R .855 +(either returns the name of the disk \214le that w)144 602.4 R .855 (ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F2(name)3.715 E F0 .855(were speci\214ed as a com-)3.535 F .64(mand name, or nothing if)144 -448.8 R/F6 10/Courier@0 SF .64(type -t name)3.14 F F0 -.1(wo)3.14 G .641 +614.4 R/F6 10/Courier@0 SF .64(type -t name)3.14 F F0 -.1(wo)3.14 G .641 (uld not return).1 F F2(\214le)3.141 E F0 5.641(.T).18 G(he)-5.641 E F1 3.141 E F0 .641(option forces a)3.141 F F3 -.666(PA)3.141 G(TH) --.189 E F0 .113(search for each)144 460.8 R F2(name)2.613 E F0 2.613(,e) +-.189 E F0 .113(search for each)144 626.4 R F2(name)2.613 E F0 2.613(,e) C -.15(ve)-2.863 G 2.613(ni).15 G(f)-2.613 E F6 .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(fa)-5.113 G .112(command is hashed,)-.001 F F1 -2.612 E F0(and)144 472.8 Q F12.944 E F0 .444(print the hashed v) +2.612 E F0(and)144 638.4 Q F12.944 E F0 .444(print the hashed v) 2.944 F .444(alue, not necessarily the \214le that appears \214rst in) -.25 F F3 -.666(PA)2.945 G(TH)-.189 E F4(.)A F0 .445(If the)4.945 F F1 -2.945 E F0(option)2.945 E .265(is used,)144 484.8 R F1(type)2.765 +2.945 E F0(option)2.945 E .265(is used,)144 650.4 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 .426(and functions, if and only if the) -144 496.8 R F12.926 E F0 .426(option is not also used.)2.926 F +144 662.4 R F12.926 E F0 .426(option is not also used.)2.926 F .427(The table of hashed commands is not)5.426 F .549 -(consulted when using)144 508.8 R F13.049 E F0 5.549(.T)C(he) +(consulted when using)144 674.4 R F13.049 E F0 5.549(.T)C(he) -5.549 E F13.049 E F0 .548 (option suppresses shell function lookup, as with the)3.049 F F1 -(command)3.048 E F0 -.2(bu)144 520.8 S(iltin.).2 E F1(type)5 E F0 +(command)3.048 E F0 -.2(bu)144 686.4 S(iltin.).2 E F1(type)5 E F0 (returns true if an)2.5 E 2.5(yo)-.15 G 2.5(ft)-2.5 G(he ar)-2.5 E (guments are found, f)-.18 E(alse if none are found.)-.1 E F1(ulimit)108 -537.6 Q F0([)2.5 E F1(\255SHacde\214lmnpqrstuvx)A F0([)2.5 E F2(limit)A -F0(]])A(Pro)144 549.6 Q .243(vides control o)-.15 F -.15(ve)-.15 G 2.743 +703.2 Q F0([)2.5 E F1(\255SHacde\214lmnpqrstuvx)A F0([)2.5 E F2(limit)A +F0(]])A(Pro)144 715.2 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 -.944(that allo)144 561.6 R 3.444(ws)-.25 G .944(uch control.)-3.444 F +.944(that allo)144 727.2 R 3.444(ws)-.25 G .944(uch control.)-3.444 F (The)5.944 E F13.444 E F0(and)3.444 E F13.444 E F0 .943 -(options specify that the hard or soft limit is set for the)3.444 F(gi) -144 573.6 Q -.15(ve)-.25 G 2.737(nr).15 G 2.737(esource. A)-2.737 F .238 -(hard limit cannot be increased once it is set; a soft limit may be inc\ -reased up to)2.738 F .356(the v)144 585.6 R .356 -(alue of the hard limit.)-.25 F .356(If neither)5.356 F F12.856 E -F0(nor)2.856 E F12.856 E F0 .355 +(options specify that the hard or soft limit is set for the)3.444 F +(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(61)199.835 E 0 Cg EP +%%Page: 62 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(gi)144 84 Q -.15(ve)-.25 G 2.737(nr).15 G 2.737(esource. A)-2.737 +F .238(hard limit cannot be increased once it is set; a soft limit may \ +be increased up to)2.738 F .356(the v)144 96 R .356 +(alue of the hard limit.)-.25 F .356(If neither)5.356 F/F1 10 +/Times-Bold@0 SF2.856 E F0(nor)2.856 E F12.856 E F0 .355 (is speci\214ed, both the soft and hard limits are set.)2.855 F .402 -(The v)144 597.6 R .402(alue of)-.25 F F2(limit)2.992 E F0 .402(can be \ -a number in the unit speci\214ed for the resource or one of the special\ - v)3.582 F(al-)-.25 E(ues)144 609.6 Q F1(hard)3.019 E F0(,)A F1(soft) -3.019 E F0 3.019(,o)C(r)-3.019 E F1(unlimited)3.019 E F0 3.018(,w)C .518 +(The v)144 108 R .402(alue of)-.25 F/F2 10/Times-Italic@0 SF(limit)2.992 +E F0 .402(can be a number in the unit speci\214ed for the resource or o\ +ne of the special v)3.582 F(al-)-.25 E(ues)144 120 Q F1(hard)3.019 E F0 +(,)A F1(soft)3.019 E F0 3.019(,o)C(r)-3.019 E F1(unlimited)3.019 E F0 +3.018(,w)C .518 (hich stand for the current hard limit, the current soft limit, and no) --3.018 F .353(limit, respecti)144 621.6 R -.15(ve)-.25 G(ly).15 E 5.353 +-3.018 F .353(limit, respecti)144 132 R -.15(ve)-.25 G(ly).15 E 5.353 (.I)-.65 G(f)-5.353 E F2(limit)2.943 E F0 .353 (is omitted, the current v)3.533 F .354 (alue of the soft limit of the resource is printed,)-.25 F .37 -(unless the)144 633.6 R F12.87 E F0 .37(option is gi)2.87 F -.15 -(ve)-.25 G 2.87(n. When).15 F .37 +(unless the)144 144 R F12.87 E F0 .37(option is gi)2.87 F -.15(ve) +-.25 G 2.87(n. When).15 F .37 (more than one resource is speci\214ed, the limit name and unit)2.87 F -(are printed before the v)144 645.6 Q 2.5(alue. Other)-.25 F -(options are interpreted as follo)2.5 E(ws:)-.25 E F1144 657.6 Q -F0(All current limits are reported)25.3 E F1144 669.6 Q F0 -(The maximum size of core \214les created)25.86 E F1144 681.6 Q F0 +(are printed before the v)144 156 Q 2.5(alue. Other)-.25 F +(options are interpreted as follo)2.5 E(ws:)-.25 E F1144 168 Q F0 +(All current limits are reported)25.3 E F1144 180 Q F0 +(The maximum size of core \214les created)25.86 E F1144 192 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 693.6 Q F0 -(The maximum scheduling priority \("nice"\))25.86 E F1144 705.6 Q -F0(The maximum size of \214les written by the shell and its children) -26.97 E F1144 717.6 Q F0(The maximum number of pending signals) -27.52 E(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 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 SF144 84 Q F0 -(The maximum size that may be lock)27.52 E(ed into memory)-.1 E F1 -144 96 Q F0(The maximum resident set size)21.97 E F1144 108 Q F0 -.791(The maximum number of open \214le descriptors \(most systems do no\ -t allo)24.74 F 3.291(wt)-.25 G .791(his v)-3.291 F .791(alue to)-.25 F -(be set\))180 120 Q F1144 132 Q F0 +(gment)-.15 E F1144 204 Q F0 +(The maximum scheduling priority \("nice"\))25.86 E F1144 216 Q F0 +(The maximum size of \214les created by the shell)26.97 E F1144 +228 Q F0(The maximum number of pending signals)27.52 E F1144 240 Q +F0(The maximum size that may be lock)27.52 E(ed into memory)-.1 E F1 +144 252 Q F0(The maximum resident set size)21.97 E F1144 264 +Q F0 .791(The maximum number of open \214le descriptors \(most systems \ +do not allo)24.74 F 3.291(wt)-.25 G .791(his v)-3.291 F .791(alue to) +-.25 F(be set\))180 276 Q F1144 288 Q F0 (The pipe size in 512-byte blocks \(this may not be set\))24.74 E F1 -144 144 Q F0(The maximum number of bytes in POSIX message queues) -24.74 E F1144 156 Q F0(The maximum real-time scheduling priority) -25.86 E F1144 168 Q F0(The maximum stack size)26.41 E F1144 -180 Q F0(The maximum amount of cpu time in seconds)26.97 E F1144 -192 Q F0(The maximum number of processes a)24.74 E -.25(va)-.2 G -(ilable to a single user).25 E F1144 204 Q F0 +144 300 Q F0(The maximum number of bytes in POSIX message queues) +24.74 E F1144 312 Q F0(The maximum real-time scheduling priority) +25.86 E F1144 324 Q F0(The maximum stack size)26.41 E F1144 +336 Q F0(The maximum amount of cpu time in seconds)26.97 E F1144 +348 Q F0(The maximum number of processes a)24.74 E -.25(va)-.2 G +(ilable to a single user).25 E F1144 360 Q F0 (The maximum amount of virtual memory a)25.3 E -.25(va)-.2 G -(ilable to the shell).25 E F1144 216 Q F0 -(The maximum number of \214le locks)25.3 E(If)144 232.8 Q/F2 10 -/Times-Italic@0 SF(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 244.8 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 +(ilable to the shell).25 E F1144 372 Q F0 +(The maximum number of \214le locks)25.3 E(If)144 388.8 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 F1 +2.843 E F0 .343(option is display only\).)2.843 F .343(If no)5.343 F +.175(option is gi)144 400.8 R -.15(ve)-.25 G .175(n, then).15 F F1 +2.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 256.8 +2.676 E F0 2.676(,w)C .176(hich is in)-2.676 F(seconds,)144 412.8 Q F12.698 E F0 2.698(,w)C .198 (hich is in units of 512-byte blocks, and)-2.698 F F12.698 E F0 (and)2.698 E F12.697 E F0 2.697(,w)C .197(hich are unscaled v) -2.697 F 2.697(alues. The)-.25 F .404(return status is 0 unless an in) -144 268.8 R -.25(va)-.4 G .404(lid option or ar).25 F .404 +144 424.8 R -.25(va)-.4 G .404(lid option or ar).25 F .404 (gument is supplied, or an error occurs while setting)-.18 F 2.5(an)144 -280.8 S .5 -.25(ew l)-2.5 H(imit.).25 E F1(umask)108 297.6 Q F0([)2.5 E +436.8 S .5 -.25(ew l)-2.5 H(imit.).25 E F1(umask)108 453.6 Q F0([)2.5 E F1A 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 309.6 R F2(mode)2.7 E F0 +.2(The user \214le-creation mask is set to)144 465.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 321.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 -333.6 Q F2(mode)3.263 E F0 .382(is omitted, the current v)3.063 F .382 +pted by)144 477.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 +489.6 Q F2(mode)3.263 E F0 .382(is omitted, the current v)3.063 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 .547 -(printed in symbolic form; the def)144 345.6 R .547 +(printed in symbolic form; the def)144 501.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 F13.047 E F0 .547(option is supplied, and)3.047 F F2 -(mode)144.38 357.6 Q F0 .552 +(mode)144.38 513.6 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 369.6 Q +F .551(The return status is 0 if the)5.551 F(mode w)144 525.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 386.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 398.4 Q 1.955 -.15(ve e)-.15 H(ach).15 E F2(name) +(unalias)108 542.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 554.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 410.4 Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E +F(remo)144 566.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 427.2 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 439.2 S 3.107 +(is not a de\214ned alias.)2.68 E F1(unset)108 583.2 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 595.2 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 451.2 Q F0 .304(option is gi)2.804 F -.15(ve)-.25 G +5.607 F F1144 607.2 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 463.2 Q F0 .46 +(riables may not be unset.).25 F(If)5.305 E F1144 619.2 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 475.2 R .902 +F -.15(ve)-.15 G 2.959(d. Each).15 F .902(unset v)144 631.2 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 487.2 Q 4.285(yo)-.15 G(f)-4.285 E/F3 9/Times-Bold@0 +(If)5.903 E(an)144 643.2 Q 4.285(yo)-.15 G(f)-4.285 E/F3 9/Times-Bold@0 SF(RANDOM)4.285 E/F4 9/Times-Roman@0 SF(,)A F3(SECONDS)4.035 E F4(,)A F3 (LINENO)4.035 E F4(,)A F3(HISTCMD)4.035 E F4(,)A F3(FUNCN)4.035 E(AME) -.18 E F4(,)A F3(GR)4.035 E(OUPS)-.27 E F4(,)A F0(or)4.035 E F3(DIRST) 4.284 E -.495(AC)-.81 G(K).495 E F0(are)4.034 E .328(unset, the)144 -499.2 R 2.828(yl)-.15 G .328(ose their special properties, e)-2.828 F +655.2 R 2.828(yl)-.15 G .328(ose their special properties, e)-2.828 F -.15(ve)-.25 G 2.828(ni).15 G 2.828(ft)-2.828 G(he)-2.828 E 2.828(ya) -.15 G .328(re subsequently reset.)-2.828 F .328(The e)5.328 F .329 -(xit status is true)-.15 F(unless a)144 511.2 Q F2(name)2.86 E F0 -(is readonly)2.68 E(.)-.65 E F1(wait)108 528 Q F0([)2.5 E F2 2.5(n.)C -(..)-2.5 E F0(])A -.8(Wa)144 540 S .288 +(xit status is true)-.15 F(unless a)144 667.2 Q F2(name)2.86 E F0 +(is readonly)2.68 E(.)-.65 E F1(wait)108 684 Q F0([)2.5 E F2 2.5(n.)C +(..)-2.5 E F0(])A -.8(Wa)144 696 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 552 R -.15(ve)-.25 G .722 +(job speci\214cation; if a job spec is gi)144 708 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 564 R -.15(ve)-.25 G 1.266 +(is)3.463 E 1.266(not gi)144 720 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 576 R .457 +(nd the return status is zero.)-3.765 F(If)6.265 E F2(n)4.125 E F0 +(GNU Bash-3.2)72 768 Q(2006 Jan 26)149.845 E(62)199.835 E 0 Cg EP +%%Page: 63 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 .456(speci\214es a non-e)144 84 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 588 S +(Otherwise, the return status is the)5.457 F -.15(ex)144 96 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 604.8 Q F0(If)108 616.8 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 628.8 R .945 -(restricted shell is used to set up an en)3.445 F .946 +/F1 10.95/Times-Bold@0 SF(RESTRICTED SHELL)72 112.8 Q F0(If)108 124.8 Q +/F2 10/Times-Bold@0 SF(bash)4.397 E F0 1.897(is started with the name) +4.397 F F2(rbash)4.397 E F0 4.397(,o)C 4.397(rt)-4.397 G(he)-4.397 E F2 +4.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 136.8 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 640.8 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E F1 +(beha)108 148.8 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E F2 (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 -657.6 S(hanging directories with)-32.5 E F1(cd)2.5 E F0 32.5<8373>108 -674.4 S(etting or unsetting the v)-32.5 E(alues of)-.25 E F1(SHELL)2.5 E -F0(,)A F1 -.74(PA)2.5 G(TH)-.21 E F0(,)A F1(ENV)2.5 E F0 2.5(,o)C(r)-2.5 -E F1 -.3(BA)2.5 G(SH_ENV).3 E F0 32.5<8373>108 691.2 S -(pecifying command names containing)-32.5 E F1(/)2.5 E F0 32.5<8373>108 -708 S(pecifying a \214le name 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(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 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 32.5<8353>108 84 S .351 +165.6 S(hanging directories with)-32.5 E F2(cd)2.5 E F0 32.5<8373>108 +182.4 S(etting or unsetting the v)-32.5 E(alues of)-.25 E F2(SHELL)2.5 E +F0(,)A F2 -.74(PA)2.5 G(TH)-.21 E F0(,)A F2(ENV)2.5 E F0 2.5(,o)C(r)-2.5 +E F2 -.3(BA)2.5 G(SH_ENV).3 E F0 32.5<8373>108 199.2 S +(pecifying command names containing)-32.5 E F2(/)2.5 E F0 32.5<8373>108 +216 S(pecifying a \214le name containing a)-32.5 E F2(/)2.5 E F0 +(as an ar)2.5 E(gument to the)-.18 E F2(.)2.5 E F0 -.2(bu)5 G +(iltin command).2 E 32.5<8353>108 232.8 S .351 (pecifying a \214lename containing a slash as an ar)-32.5 F .351 -(gument to the)-.18 F/F1 10/Times-Bold@0 SF2.851 E F0 .351 -(option to the)2.851 F F1(hash)2.851 E F0 -.2(bu)2.851 G .351 -(iltin com-).2 F(mand)144 96 Q 32.5<8369>108 112.8 S -(mporting function de\214nitions from the shell en)-32.5 E -(vironment at startup)-.4 E 32.5<8370>108 129.6 S(arsing the v)-32.5 E -(alue of)-.25 E F1(SHELLOPTS)2.5 E F0(from the shell en)2.5 E -(vironment at startup)-.4 E 32.5<8372>108 146.4 S(edirecting output usi\ +(gument to the)-.18 F F22.851 E F0 .351(option to the)2.851 F F2 +(hash)2.851 E F0 -.2(bu)2.851 G .351(iltin com-).2 F(mand)144 244.8 Q +32.5<8369>108 261.6 S(mporting function de\214nitions from the shell en) +-32.5 E(vironment at startup)-.4 E 32.5<8370>108 278.4 S(arsing the v) +-32.5 E(alue of)-.25 E F2(SHELLOPTS)2.5 E F0(from the shell en)2.5 E +(vironment at startup)-.4 E 32.5<8372>108 295.2 S(edirecting output usi\ ng the >, >|, <>, >&, &>, and >> redirection operators)-32.5 E 32.5 -<8375>108 163.2 S(sing the)-32.5 E F1(exec)2.5 E F0 -.2(bu)2.5 G +<8375>108 312 S(sing the)-32.5 E F2(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 180 S(dding or deleting b)-32.5 E(uiltin commands with the)-.2 E F1 -2.5 E F0(and)2.5 E F12.5 E F0(options to the)2.5 E F1 -(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E 32.5<8355>108 196.8 S -(sing the)-32.5 E F1(enable)2.5 E F0 -.2(bu)2.5 G +108 328.8 S(dding or deleting b)-32.5 E(uiltin commands with the)-.2 E +F22.5 E F0(and)2.5 E F22.5 E F0(options to the)2.5 E F2 +(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E 32.5<8355>108 345.6 S +(sing the)-32.5 E F2(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 213.6 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 230.4 -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 247.2 Q 2.5(ys)-.15 G +108 362.4 S(pecifying the)-32.5 E F22.5 E F0(option to the)2.5 E +F2(command)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E 32.5<8374>108 379.2 +S(urning of)-32.5 E 2.5(fr)-.25 G(estricted mode with)-2.5 E F2(set +r) +2.5 E F0(or)2.5 E F2(set +o r)2.5 E(estricted)-.18 E F0(.)A +(These restrictions are enforced after an)108 396 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 264 R -.15 -(xe)-.15 G 1.567(cuted \(see).15 F/F2 9/Times-Bold@0 SF 1.567 -(COMMAND EXECUTION)4.067 F F0(abo)3.817 E -.15(ve)-.15 G(\),).15 E F1 -(rbash)108 276 Q F0(turns of)2.5 E 2.5(fa)-.25 G .3 -.15(ny r)-2.5 H +(When a command that is found to be a shell script is e)108 412.8 R -.15 +(xe)-.15 G 1.567(cuted \(see).15 F/F3 9/Times-Bold@0 SF 1.567 +(COMMAND EXECUTION)4.067 F F0(abo)3.817 E -.15(ve)-.15 G(\),).15 E F2 +(rbash)108 424.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 292.8 Q/F4 -10/Times-Italic@0 SF(Bash Refer)108 304.8 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 316.8 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 328.8 Q +(cute the script.).15 E F1(SEE ALSO)72 441.6 Q/F4 10/Times-Italic@0 SF +(Bash Refer)108 453.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 465.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 -.8(Po)108 340.8 S(rtable Oper).8 E +F4(The Gnu History Libr)108 477.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 -.8(Po)108 489.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 F4(sh)108 352.8 Q F0(\(1\),)A F4(ksh)2.5 E -F0(\(1\),)A F4(csh)2.5 E F0(\(1\))A F4(emacs)108 364.8 Q F0(\(1\),)A F4 -(vi)2.5 E F0(\(1\))A F4 -.37(re)108 376.8 S(adline).37 E F0(\(3\))A F3 -(FILES)72 393.6 Q F4(/bin/bash)109.666 405.6 Q F0(The)144 417.6 Q F1 -(bash)2.5 E F0 -.15(exe)2.5 G(cutable).15 E F4(/etc/pr)109.666 429.6 Q -(o\214le)-.45 E F0(The systemwide initialization \214le, e)144 441.6 Q --.15(xe)-.15 G(cuted for login shells).15 E F4(~/.bash_pr)109.666 453.6 -Q(o\214le)-.45 E F0(The personal initialization \214le, e)144 465.6 Q --.15(xe)-.15 G(cuted for login shells).15 E F4(~/.bashr)109.666 477.6 Q -(c)-.37 E F0(The indi)144 489.6 Q(vidual per)-.25 E(-interacti)-.2 E --.15(ve)-.25 G(-shell startup \214le).15 E F4(~/.bash_lo)109.666 501.6 Q -(gout)-.1 E F0(The indi)144 513.6 Q +-.8 E F0 2.5(,I)C(EEE)-2.5 E F4(sh)108 501.6 Q F0(\(1\),)A F4(ksh)2.5 E +F0(\(1\),)A F4(csh)2.5 E F0(\(1\))A F4(emacs)108 513.6 Q F0(\(1\),)A F4 +(vi)2.5 E F0(\(1\))A F4 -.37(re)108 525.6 S(adline).37 E F0(\(3\))A F1 +(FILES)72 542.4 Q F4(/bin/bash)109.666 554.4 Q F0(The)144 566.4 Q F2 +(bash)2.5 E F0 -.15(exe)2.5 G(cutable).15 E F4(/etc/pr)109.666 578.4 Q +(o\214le)-.45 E F0(The systemwide initialization \214le, e)144 590.4 Q +-.15(xe)-.15 G(cuted for login shells).15 E F4(~/.bash_pr)109.666 602.4 +Q(o\214le)-.45 E F0(The personal initialization \214le, e)144 614.4 Q +-.15(xe)-.15 G(cuted for login shells).15 E F4(~/.bashr)109.666 626.4 Q +(c)-.37 E F0(The indi)144 638.4 Q(vidual per)-.25 E(-interacti)-.2 E +-.15(ve)-.25 G(-shell startup \214le).15 E F4(~/.bash_lo)109.666 650.4 Q +(gout)-.1 E F0(The indi)144 662.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 525.6 -Q(c)-.37 E F0(Indi)144 537.6 Q(vidual)-.25 E F4 -.37(re)2.5 G(adline).37 -E F0(initialization \214le)2.5 E F3 -.548(AU)72 554.4 S(THORS).548 E F0 -(Brian F)108 566.4 Q(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 E -(bfox@gnu.or)108 578.4 Q(g)-.18 E(Chet Rame)108 595.2 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@po.cwru.edu)108 607.2 Q F3 -.11(BU)72 624 S -2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .568(If you \214nd a b)108 -636 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 .567(ug, and)-.2 F 5.625 -(that it appears in the latest v)108 648 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.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 F4(ftp://ftp.gnu.or)108 660 Q(g/pub/bash/)-.37 E F0 -(.)A .411(Once you ha)108 676.8 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 F4(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 688.8 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 700.8 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 717.6 Q(ug reports should include:)-.2 E -(GNU Bash-3.2)72 768 Q(2007 January 12)140.96 E(64)190.95 E 0 Cg EP -%%Page: 65 65 +(cuted when a login shell e).15 E(xits)-.15 E F4(~/.inputr)109.666 674.4 +Q(c)-.37 E F0(Indi)144 686.4 Q(vidual)-.25 E F4 -.37(re)2.5 G(adline).37 +E F0(initialization \214le)2.5 E F1 -.548(AU)72 703.2 S(THORS).548 E F0 +(Brian F)108 715.2 Q(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 E +(bfox@gnu.or)108 727.2 Q(g)-.18 E(GNU Bash-3.2)72 768 Q(2006 Jan 26) +149.845 E(63)199.835 E 0 Cg EP +%%Page: 64 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(The v)108 84 Q(ersion number of)-.15 E/F1 10/Times-Bold@0 SF -(bash)2.5 E F0(The hardw)108 96 Q(are and operating system)-.1 E -(The compiler used to compile)108 108 Q 2.5(Ad)108 120 S -(escription of the b)-2.5 E(ug beha)-.2 E(viour)-.2 E 2.5(As)108 132 S -(hort script or `recipe' which e)-2.5 E -.15(xe)-.15 G(rcises the b).15 -E(ug)-.2 E/F2 10/Times-Italic@0 SF(bashb)108.27 148.8 Q(ug)-.2 E F0 +-.35 E(Chet Rame)108 84 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@po.cwru.edu)108 96 Q/F1 10.95/Times-Bold@0 SF -.11(BU)72 112.8 S +2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .568(If you \214nd a b)108 +124.8 R .568(ug in)-.2 F/F2 10/Times-Bold@0 SF(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 136.8 R 5.625(ersion of)-.15 +F F2(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/F3 10/Times-Italic@0 SF(ftp://ftp.gnu.or)108 148.8 Q +(g/pub/bash/)-.37 E F0(.)A .411(Once you ha)108 165.6 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 F3(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 177.6 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 189.6 Q F3 -.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 F2(gnu.bash.b)2.5 E(ug) +-.2 E F0(.)A(ALL b)108 206.4 Q(ug reports should include:)-.2 E(The v) +108 223.2 Q(ersion number of)-.15 E F2(bash)2.5 E F0(The hardw)108 235.2 +Q(are and operating system)-.1 E(The compiler used to compile)108 247.2 +Q 2.5(Ad)108 259.2 S(escription of the b)-2.5 E(ug beha)-.2 E(viour)-.2 +E 2.5(As)108 271.2 S(hort script or `recipe' which e)-2.5 E -.15(xe)-.15 +G(rcises the b).15 E(ug)-.2 E F3(bashb)108.27 288 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 -165.6 Q(ug reports concerning this manual page should be directed to)-.2 -E F2 -.15(ch)2.5 G(et@po.cwru.edu).15 E F0(.).25 E/F3 10.95/Times-Bold@0 -SF -.11(BU)72 182.4 S(GS).11 E F0(It')108 194.4 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 211.2 R 1.869(ferences between)-.25 F F1 -(bash)4.369 E F0 1.869(and traditional v)4.369 F 1.869(ersions of)-.15 F -F1(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 223.2 Q F0(speci\214cation.)2.25 E -(Aliases are confusing in some uses.)108 240 Q(Shell b)108 256.8 Q +304.8 Q(ug reports concerning this manual page should be directed to)-.2 +E F3 -.15(ch)2.5 G(et@po.cwru.edu).15 E F0(.).25 E F1 -.11(BU)72 321.6 S +(GS).11 E F0(It')108 333.6 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 350.4 R 1.869 +(ferences between)-.25 F F2(bash)4.369 E F0 1.869(and traditional v) +4.369 F 1.869(ersions of)-.15 F F2(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 362.4 Q F0 +(speci\214cation.)2.25 E(Aliases are confusing in some uses.)108 379.2 Q +(Shell b)108 396 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 273.6 R .39 -(process suspension is attempted.)108 285.6 R .389 +re not handled gracefully when)108 412.8 R .39 +(process suspension is attempted.)108 424.8 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 297.6 R .192(It suf)5.192 F .192(\214ces to \ +(mand in the sequence.)108 436.8 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 309.6 Q .956 -(Commands inside of)108 326.4 R F1($\()3.456 E F0(...)A F1(\))A F0 .956 +-.25 F(subshell, which may be stopped as a unit.)108 448.8 Q .956 +(Commands inside of)108 465.6 R F2($\()3.456 E F0(...)A F2(\))A F0 .956 (command substitution are not parsed until substitution is attempted.) 3.456 F .955(This will)5.955 F .567 (delay error reporting until some time after the command is entered.)108 -338.4 R -.15(Fo)5.567 G 3.067(re).15 G .568 -(xample, unmatched parentheses,)-3.217 F -2.15 -.25(ev e)108 350.4 T 2.5 +477.6 R -.15(Fo)5.567 G 3.067(re).15 G .568 +(xample, unmatched parentheses,)-3.217 F -2.15 -.25(ev e)108 489.6 T 2.5 (ni).25 G(nside shell comments, will result in error messages while the\ - construct is being read.)-2.5 E(Array v)108 367.2 Q + construct is being read.)-2.5 E(Array v)108 506.4 Q (ariables may not \(yet\) be e)-.25 E(xported.)-.15 E(GNU Bash-3.2)72 -768 Q(2007 January 12)140.96 E(65)190.95 E 0 Cg EP +768 Q(2006 Jan 26)149.845 E(64)199.835 E 0 Cg EP %%Trailer end %%EOF diff --git a/doc/bashref.aux b/doc/bashref.aux index 0313620cf..b04fbcf3e 100644 --- a/doc/bashref.aux +++ b/doc/bashref.aux @@ -98,13 +98,13 @@ @xrdef{Process Substitution-pg}{22} @xrdef{Process Substitution-snt}{Section@tie 3.5.6} @xrdef{Word Splitting-title}{Word Splitting} -@xrdef{Word Splitting-pg}{23} +@xrdef{Word Splitting-pg}{22} @xrdef{Word Splitting-snt}{Section@tie 3.5.7} @xrdef{Filename Expansion-title}{Filename Expansion} @xrdef{Filename Expansion-pg}{23} @xrdef{Filename Expansion-snt}{Section@tie 3.5.8} @xrdef{Pattern Matching-title}{Pattern Matching} -@xrdef{Pattern Matching-pg}{24} +@xrdef{Pattern Matching-pg}{23} @xrdef{Pattern Matching-snt}{Section@tie 3.5.8.1} @xrdef{Quote Removal-title}{Quote Removal} @xrdef{Quote Removal-pg}{25} @@ -122,10 +122,10 @@ @xrdef{Command Search and Execution-pg}{29} @xrdef{Command Search and Execution-snt}{Section@tie 3.7.2} @xrdef{Command Execution Environment-title}{Command Execution Environment} -@xrdef{Command Execution Environment-pg}{30} +@xrdef{Command Execution Environment-pg}{29} @xrdef{Command Execution Environment-snt}{Section@tie 3.7.3} @xrdef{Environment-title}{Environment} -@xrdef{Environment-pg}{31} +@xrdef{Environment-pg}{30} @xrdef{Environment-snt}{Section@tie 3.7.4} @xrdef{Exit Status-title}{Exit Status} @xrdef{Exit Status-pg}{31} @@ -145,234 +145,225 @@ @xrdef{Bash Builtins-title}{Bash Builtin Commands} @xrdef{Bash Builtins-pg}{41} @xrdef{Bash Builtins-snt}{Section@tie 4.2} -@xrdef{Modifying Shell Behavior-title}{Modifying Shell Behavior} -@xrdef{Modifying Shell Behavior-pg}{49} -@xrdef{Modifying Shell Behavior-snt}{Section@tie 4.3} @xrdef{The Set Builtin-title}{The Set Builtin} -@xrdef{The Set Builtin-pg}{49} -@xrdef{The Set Builtin-snt}{Section@tie 4.3.1} -@xrdef{The Shopt Builtin-title}{The Shopt Builtin} -@xrdef{The Shopt Builtin-pg}{52} -@xrdef{The Shopt Builtin-snt}{Section@tie 4.3.2} +@xrdef{The Set Builtin-pg}{53} +@xrdef{The Set Builtin-snt}{Section@tie 4.3} @xrdef{Special Builtins-title}{Special Builtins} -@xrdef{Special Builtins-pg}{57} +@xrdef{Special Builtins-pg}{56} @xrdef{Special Builtins-snt}{Section@tie 4.4} @xrdef{Shell Variables-title}{Shell Variables} -@xrdef{Shell Variables-pg}{59} +@xrdef{Shell Variables-pg}{57} @xrdef{Shell Variables-snt}{Chapter@tie 5} @xrdef{Bourne Shell Variables-title}{Bourne Shell Variables} -@xrdef{Bourne Shell Variables-pg}{59} +@xrdef{Bourne Shell Variables-pg}{57} @xrdef{Bourne Shell Variables-snt}{Section@tie 5.1} @xrdef{Bash Variables-title}{Bash Variables} -@xrdef{Bash Variables-pg}{59} +@xrdef{Bash Variables-pg}{57} @xrdef{Bash Variables-snt}{Section@tie 5.2} @xrdef{Bash Features-title}{Bash Features} -@xrdef{Bash Features-pg}{69} +@xrdef{Bash Features-pg}{67} @xrdef{Bash Features-snt}{Chapter@tie 6} @xrdef{Invoking Bash-title}{Invoking Bash} -@xrdef{Invoking Bash-pg}{69} +@xrdef{Invoking Bash-pg}{67} @xrdef{Invoking Bash-snt}{Section@tie 6.1} @xrdef{Bash Startup Files-title}{Bash Startup Files} -@xrdef{Bash Startup Files-pg}{71} +@xrdef{Bash Startup Files-pg}{69} @xrdef{Bash Startup Files-snt}{Section@tie 6.2} @xrdef{Interactive Shells-title}{Interactive Shells} -@xrdef{Interactive Shells-pg}{73} +@xrdef{Interactive Shells-pg}{71} @xrdef{Interactive Shells-snt}{Section@tie 6.3} @xrdef{What is an Interactive Shell?-title}{What is an Interactive Shell?} -@xrdef{What is an Interactive Shell?-pg}{73} +@xrdef{What is an Interactive Shell?-pg}{71} @xrdef{What is an Interactive Shell?-snt}{Section@tie 6.3.1} @xrdef{Is this Shell Interactive?-title}{Is this Shell Interactive?} -@xrdef{Is this Shell Interactive?-pg}{73} +@xrdef{Is this Shell Interactive?-pg}{71} @xrdef{Is this Shell Interactive?-snt}{Section@tie 6.3.2} @xrdef{Interactive Shell Behavior-title}{Interactive Shell Behavior} -@xrdef{Interactive Shell Behavior-pg}{73} +@xrdef{Interactive Shell Behavior-pg}{71} @xrdef{Interactive Shell Behavior-snt}{Section@tie 6.3.3} @xrdef{Bash Conditional Expressions-title}{Bash Conditional Expressions} -@xrdef{Bash Conditional Expressions-pg}{75} +@xrdef{Bash Conditional Expressions-pg}{73} @xrdef{Bash Conditional Expressions-snt}{Section@tie 6.4} @xrdef{Shell Arithmetic-title}{Shell Arithmetic} -@xrdef{Shell Arithmetic-pg}{76} +@xrdef{Shell Arithmetic-pg}{74} @xrdef{Shell Arithmetic-snt}{Section@tie 6.5} @xrdef{Aliases-title}{Aliases} -@xrdef{Aliases-pg}{77} +@xrdef{Aliases-pg}{75} @xrdef{Aliases-snt}{Section@tie 6.6} @xrdef{Arrays-title}{Arrays} -@xrdef{Arrays-pg}{78} +@xrdef{Arrays-pg}{76} @xrdef{Arrays-snt}{Section@tie 6.7} @xrdef{The Directory Stack-title}{The Directory Stack} -@xrdef{The Directory Stack-pg}{79} +@xrdef{The Directory Stack-pg}{77} @xrdef{The Directory Stack-snt}{Section@tie 6.8} @xrdef{Directory Stack Builtins-title}{Directory Stack Builtins} -@xrdef{Directory Stack Builtins-pg}{79} +@xrdef{Directory Stack Builtins-pg}{77} @xrdef{Directory Stack Builtins-snt}{Section@tie 6.8.1} @xrdef{Printing a Prompt-title}{Controlling the Prompt} -@xrdef{Printing a Prompt-pg}{81} +@xrdef{Printing a Prompt-pg}{79} @xrdef{Printing a Prompt-snt}{Section@tie 6.9} @xrdef{The Restricted Shell-title}{The Restricted Shell} -@xrdef{The Restricted Shell-pg}{82} +@xrdef{The Restricted Shell-pg}{80} @xrdef{The Restricted Shell-snt}{Section@tie 6.10} @xrdef{Bash POSIX Mode-title}{Bash POSIX Mode} -@xrdef{Bash POSIX Mode-pg}{82} +@xrdef{Bash POSIX Mode-pg}{80} @xrdef{Bash POSIX Mode-snt}{Section@tie 6.11} @xrdef{Job Control-title}{Job Control} -@xrdef{Job Control-pg}{87} +@xrdef{Job Control-pg}{85} @xrdef{Job Control-snt}{Chapter@tie 7} @xrdef{Job Control Basics-title}{Job Control Basics} -@xrdef{Job Control Basics-pg}{87} +@xrdef{Job Control Basics-pg}{85} @xrdef{Job Control Basics-snt}{Section@tie 7.1} @xrdef{Job Control Builtins-title}{Job Control Builtins} -@xrdef{Job Control Builtins-pg}{88} +@xrdef{Job Control Builtins-pg}{86} @xrdef{Job Control Builtins-snt}{Section@tie 7.2} @xrdef{Job Control Variables-title}{Job Control Variables} -@xrdef{Job Control Variables-pg}{90} +@xrdef{Job Control Variables-pg}{88} @xrdef{Job Control Variables-snt}{Section@tie 7.3} @xrdef{Command Line Editing-title}{Command Line Editing} -@xrdef{Command Line Editing-pg}{91} +@xrdef{Command Line Editing-pg}{89} @xrdef{Command Line Editing-snt}{Chapter@tie 8} @xrdef{Introduction and Notation-title}{Introduction to Line Editing} -@xrdef{Introduction and Notation-pg}{91} +@xrdef{Introduction and Notation-pg}{89} @xrdef{Introduction and Notation-snt}{Section@tie 8.1} @xrdef{Readline Interaction-title}{Readline Interaction} -@xrdef{Readline Interaction-pg}{91} +@xrdef{Readline Interaction-pg}{89} @xrdef{Readline Interaction-snt}{Section@tie 8.2} @xrdef{Readline Bare Essentials-title}{Readline Bare Essentials} -@xrdef{Readline Bare Essentials-pg}{91} +@xrdef{Readline Bare Essentials-pg}{89} @xrdef{Readline Bare Essentials-snt}{Section@tie 8.2.1} @xrdef{Readline Movement Commands-title}{Readline Movement Commands} -@xrdef{Readline Movement Commands-pg}{92} +@xrdef{Readline Movement Commands-pg}{90} @xrdef{Readline Movement Commands-snt}{Section@tie 8.2.2} @xrdef{Readline Killing Commands-title}{Readline Killing Commands} -@xrdef{Readline Killing Commands-pg}{93} +@xrdef{Readline Killing Commands-pg}{91} @xrdef{Readline Killing Commands-snt}{Section@tie 8.2.3} @xrdef{Readline Arguments-title}{Readline Arguments} -@xrdef{Readline Arguments-pg}{93} +@xrdef{Readline Arguments-pg}{91} @xrdef{Readline Arguments-snt}{Section@tie 8.2.4} @xrdef{Searching-title}{Searching for Commands in the History} -@xrdef{Searching-pg}{94} +@xrdef{Searching-pg}{92} @xrdef{Searching-snt}{Section@tie 8.2.5} @xrdef{Readline Init File-title}{Readline Init File} -@xrdef{Readline Init File-pg}{94} +@xrdef{Readline Init File-pg}{92} @xrdef{Readline Init File-snt}{Section@tie 8.3} @xrdef{Readline Init File Syntax-title}{Readline Init File Syntax} -@xrdef{Readline Init File Syntax-pg}{94} +@xrdef{Readline Init File Syntax-pg}{92} @xrdef{Readline Init File Syntax-snt}{Section@tie 8.3.1} @xrdef{Conditional Init Constructs-title}{Conditional Init Constructs} -@xrdef{Conditional Init Constructs-pg}{99} +@xrdef{Conditional Init Constructs-pg}{97} @xrdef{Conditional Init Constructs-snt}{Section@tie 8.3.2} @xrdef{Sample Init File-title}{Sample Init File} -@xrdef{Sample Init File-pg}{100} +@xrdef{Sample Init File-pg}{98} @xrdef{Sample Init File-snt}{Section@tie 8.3.3} @xrdef{Bindable Readline Commands-title}{Bindable Readline Commands} -@xrdef{Bindable Readline Commands-pg}{103} +@xrdef{Bindable Readline Commands-pg}{101} @xrdef{Bindable Readline Commands-snt}{Section@tie 8.4} @xrdef{Commands For Moving-title}{Commands For Moving} -@xrdef{Commands For Moving-pg}{103} +@xrdef{Commands For Moving-pg}{101} @xrdef{Commands For Moving-snt}{Section@tie 8.4.1} @xrdef{Commands For History-title}{Commands For Manipulating The History} -@xrdef{Commands For History-pg}{103} +@xrdef{Commands For History-pg}{101} @xrdef{Commands For History-snt}{Section@tie 8.4.2} @xrdef{Commands For Text-title}{Commands For Changing Text} -@xrdef{Commands For Text-pg}{105} +@xrdef{Commands For Text-pg}{103} @xrdef{Commands For Text-snt}{Section@tie 8.4.3} @xrdef{Commands For Killing-title}{Killing And Yanking} -@xrdef{Commands For Killing-pg}{106} +@xrdef{Commands For Killing-pg}{104} @xrdef{Commands For Killing-snt}{Section@tie 8.4.4} @xrdef{Numeric Arguments-title}{Specifying Numeric Arguments} -@xrdef{Numeric Arguments-pg}{107} +@xrdef{Numeric Arguments-pg}{105} @xrdef{Numeric Arguments-snt}{Section@tie 8.4.5} @xrdef{Commands For Completion-title}{Letting Readline Type For You} -@xrdef{Commands For Completion-pg}{107} +@xrdef{Commands For Completion-pg}{105} @xrdef{Commands For Completion-snt}{Section@tie 8.4.6} @xrdef{Keyboard Macros-title}{Keyboard Macros} -@xrdef{Keyboard Macros-pg}{108} +@xrdef{Keyboard Macros-pg}{106} @xrdef{Keyboard Macros-snt}{Section@tie 8.4.7} @xrdef{Miscellaneous Commands-title}{Some Miscellaneous Commands} -@xrdef{Miscellaneous Commands-pg}{109} +@xrdef{Miscellaneous Commands-pg}{107} @xrdef{Miscellaneous Commands-snt}{Section@tie 8.4.8} @xrdef{Readline vi Mode-title}{Readline vi Mode} -@xrdef{Readline vi Mode-pg}{111} +@xrdef{Readline vi Mode-pg}{109} @xrdef{Readline vi Mode-snt}{Section@tie 8.5} @xrdef{Programmable Completion-title}{Programmable Completion} -@xrdef{Programmable Completion-pg}{111} +@xrdef{Programmable Completion-pg}{109} @xrdef{Programmable Completion-snt}{Section@tie 8.6} @xrdef{Programmable Completion Builtins-title}{Programmable Completion Builtins} -@xrdef{Programmable Completion Builtins-pg}{113} +@xrdef{Programmable Completion Builtins-pg}{111} @xrdef{Programmable Completion Builtins-snt}{Section@tie 8.7} @xrdef{Using History Interactively-title}{Using History Interactively} -@xrdef{Using History Interactively-pg}{117} +@xrdef{Using History Interactively-pg}{115} @xrdef{Using History Interactively-snt}{Chapter@tie 9} @xrdef{Bash History Facilities-title}{Bash History Facilities} -@xrdef{Bash History Facilities-pg}{117} +@xrdef{Bash History Facilities-pg}{115} @xrdef{Bash History Facilities-snt}{Section@tie 9.1} @xrdef{Bash History Builtins-title}{Bash History Builtins} -@xrdef{Bash History Builtins-pg}{117} +@xrdef{Bash History Builtins-pg}{115} @xrdef{Bash History Builtins-snt}{Section@tie 9.2} @xrdef{History Interaction-title}{History Expansion} -@xrdef{History Interaction-pg}{119} +@xrdef{History Interaction-pg}{117} @xrdef{History Interaction-snt}{Section@tie 9.3} @xrdef{Event Designators-title}{Event Designators} -@xrdef{Event Designators-pg}{120} +@xrdef{Event Designators-pg}{117} @xrdef{Event Designators-snt}{Section@tie 9.3.1} @xrdef{Word Designators-title}{Word Designators} -@xrdef{Word Designators-pg}{120} +@xrdef{Word Designators-pg}{118} @xrdef{Word Designators-snt}{Section@tie 9.3.2} @xrdef{Modifiers-title}{Modifiers} -@xrdef{Modifiers-pg}{121} +@xrdef{Modifiers-pg}{119} @xrdef{Modifiers-snt}{Section@tie 9.3.3} @xrdef{Installing Bash-title}{Installing Bash} -@xrdef{Installing Bash-pg}{123} +@xrdef{Installing Bash-pg}{121} @xrdef{Installing Bash-snt}{Chapter@tie 10} @xrdef{Basic Installation-title}{Basic Installation} -@xrdef{Basic Installation-pg}{123} +@xrdef{Basic Installation-pg}{121} @xrdef{Basic Installation-snt}{Section@tie 10.1} @xrdef{Compilers and Options-title}{Compilers and Options} -@xrdef{Compilers and Options-pg}{124} +@xrdef{Compilers and Options-pg}{122} @xrdef{Compilers and Options-snt}{Section@tie 10.2} @xrdef{Compiling For Multiple Architectures-title}{Compiling For Multiple Architectures} -@xrdef{Compiling For Multiple Architectures-pg}{124} +@xrdef{Compiling For Multiple Architectures-pg}{122} @xrdef{Compiling For Multiple Architectures-snt}{Section@tie 10.3} @xrdef{Installation Names-title}{Installation Names} -@xrdef{Installation Names-pg}{124} +@xrdef{Installation Names-pg}{122} @xrdef{Installation Names-snt}{Section@tie 10.4} @xrdef{Specifying the System Type-title}{Specifying the System Type} -@xrdef{Specifying the System Type-pg}{125} +@xrdef{Specifying the System Type-pg}{123} @xrdef{Specifying the System Type-snt}{Section@tie 10.5} @xrdef{Sharing Defaults-title}{Sharing Defaults} -@xrdef{Sharing Defaults-pg}{125} +@xrdef{Sharing Defaults-pg}{123} @xrdef{Sharing Defaults-snt}{Section@tie 10.6} @xrdef{Operation Controls-title}{Operation Controls} -@xrdef{Operation Controls-pg}{125} +@xrdef{Operation Controls-pg}{123} @xrdef{Operation Controls-snt}{Section@tie 10.7} @xrdef{Optional Features-title}{Optional Features} -@xrdef{Optional Features-pg}{125} +@xrdef{Optional Features-pg}{123} @xrdef{Optional Features-snt}{Section@tie 10.8} @xrdef{Reporting Bugs-title}{Reporting Bugs} -@xrdef{Reporting Bugs-pg}{131} +@xrdef{Reporting Bugs-pg}{129} @xrdef{Reporting Bugs-snt}{Appendix@tie @char65{}} @xrdef{Major Differences From The Bourne Shell-title}{Major Differences From The Bourne Shell} -@xrdef{Major Differences From The Bourne Shell-pg}{133} +@xrdef{Major Differences From The Bourne Shell-pg}{131} @xrdef{Major Differences From The Bourne Shell-snt}{Appendix@tie @char66{}} @xrdef{Copying This Manual-title}{Copying This Manual} -@xrdef{Copying This Manual-pg}{139} +@xrdef{Copying This Manual-pg}{137} @xrdef{Copying This Manual-snt}{Appendix@tie @char67{}} @xrdef{GNU Free Documentation License-title}{GNU Free Documentation License} -@xrdef{GNU Free Documentation License-pg}{139} +@xrdef{GNU Free Documentation License-pg}{137} @xrdef{GNU Free Documentation License-snt}{Section@tie @char67.1} -@xrdef{Indexes-title}{Indexes} -@xrdef{Indexes-pg}{147} -@xrdef{Indexes-snt}{Appendix@tie @char68{}} @xrdef{Builtin Index-title}{Index of Shell Builtin Commands} -@xrdef{Builtin Index-pg}{148} -@xrdef{Builtin Index-snt}{Section@tie @char68.1} +@xrdef{Builtin Index-pg}{145} +@xrdef{Builtin Index-snt}{} @xrdef{Reserved Word Index-title}{Index of Shell Reserved Words} -@xrdef{Reserved Word Index-pg}{149} -@xrdef{Reserved Word Index-snt}{Section@tie @char68.2} +@xrdef{Reserved Word Index-pg}{147} +@xrdef{Reserved Word Index-snt}{} @xrdef{Variable Index-title}{Parameter and Variable Index} @xrdef{Variable Index-pg}{149} -@xrdef{Variable Index-snt}{Section@tie @char68.3} +@xrdef{Variable Index-snt}{} @xrdef{Function Index-title}{Function Index} @xrdef{Function Index-pg}{151} -@xrdef{Function Index-snt}{Section@tie @char68.4} +@xrdef{Function Index-snt}{} @xrdef{Concept Index-title}{Concept Index} @xrdef{Concept Index-pg}{153} -@xrdef{Concept Index-snt}{Section@tie @char68.5} +@xrdef{Concept Index-snt}{} diff --git a/doc/bashref.bt b/doc/bashref.bt index fff3178b4..f551e6f4f 100644 --- a/doc/bashref.bt +++ b/doc/bashref.bt @@ -33,24 +33,24 @@ \entry{logout}{46}{\code {logout}} \entry{printf}{46}{\code {printf}} \entry{read}{46}{\code {read}} -\entry{source}{47}{\code {source}} -\entry{type}{47}{\code {type}} -\entry{typeset}{48}{\code {typeset}} -\entry{ulimit}{48}{\code {ulimit}} -\entry{unalias}{49}{\code {unalias}} -\entry{set}{49}{\code {set}} -\entry{shopt}{52}{\code {shopt}} -\entry{dirs}{79}{\code {dirs}} -\entry{popd}{80}{\code {popd}} -\entry{pushd}{80}{\code {pushd}} -\entry{bg}{88}{\code {bg}} -\entry{fg}{88}{\code {fg}} -\entry{jobs}{88}{\code {jobs}} -\entry{kill}{89}{\code {kill}} -\entry{wait}{89}{\code {wait}} -\entry{disown}{89}{\code {disown}} -\entry{suspend}{89}{\code {suspend}} -\entry{compgen}{113}{\code {compgen}} -\entry{complete}{113}{\code {complete}} -\entry{fc}{118}{\code {fc}} -\entry{history}{118}{\code {history}} +\entry{shopt}{47}{\code {shopt}} +\entry{source}{51}{\code {source}} +\entry{type}{51}{\code {type}} +\entry{typeset}{51}{\code {typeset}} +\entry{ulimit}{52}{\code {ulimit}} +\entry{unalias}{53}{\code {unalias}} +\entry{set}{53}{\code {set}} +\entry{dirs}{77}{\code {dirs}} +\entry{popd}{78}{\code {popd}} +\entry{pushd}{78}{\code {pushd}} +\entry{bg}{86}{\code {bg}} +\entry{fg}{86}{\code {fg}} +\entry{jobs}{86}{\code {jobs}} +\entry{kill}{87}{\code {kill}} +\entry{wait}{87}{\code {wait}} +\entry{disown}{87}{\code {disown}} +\entry{suspend}{87}{\code {suspend}} +\entry{compgen}{111}{\code {compgen}} +\entry{complete}{111}{\code {complete}} +\entry{fc}{115}{\code {fc}} +\entry{history}{116}{\code {history}} diff --git a/doc/bashref.bts b/doc/bashref.bts index 78a534e41..31487e837 100644 --- a/doc/bashref.bts +++ b/doc/bashref.bts @@ -7,7 +7,7 @@ \initial {A} \entry {\code {alias}}{41} \initial {B} -\entry {\code {bg}}{88} +\entry {\code {bg}}{86} \entry {\code {bind}}{41} \entry {\code {break}}{35} \entry {\code {builtin}}{42} @@ -15,13 +15,13 @@ \entry {\code {caller}}{42} \entry {\code {cd}}{36} \entry {\code {command}}{43} -\entry {\code {compgen}}{113} -\entry {\code {complete}}{113} +\entry {\code {compgen}}{111} +\entry {\code {complete}}{111} \entry {\code {continue}}{36} \initial {D} \entry {\code {declare}}{43} -\entry {\code {dirs}}{79} -\entry {\code {disown}}{89} +\entry {\code {dirs}}{77} +\entry {\code {disown}}{87} \initial {E} \entry {\code {echo}}{44} \entry {\code {enable}}{45} @@ -30,47 +30,47 @@ \entry {\code {exit}}{36} \entry {\code {export}}{36} \initial {F} -\entry {\code {fc}}{118} -\entry {\code {fg}}{88} +\entry {\code {fc}}{115} +\entry {\code {fg}}{86} \initial {G} \entry {\code {getopts}}{37} \initial {H} \entry {\code {hash}}{37} \entry {\code {help}}{45} -\entry {\code {history}}{118} +\entry {\code {history}}{116} \initial {J} -\entry {\code {jobs}}{88} +\entry {\code {jobs}}{86} \initial {K} -\entry {\code {kill}}{89} +\entry {\code {kill}}{87} \initial {L} \entry {\code {let}}{45} \entry {\code {local}}{45} \entry {\code {logout}}{46} \initial {P} -\entry {\code {popd}}{80} +\entry {\code {popd}}{78} \entry {\code {printf}}{46} -\entry {\code {pushd}}{80} +\entry {\code {pushd}}{78} \entry {\code {pwd}}{38} \initial {R} \entry {\code {read}}{46} \entry {\code {readonly}}{38} \entry {\code {return}}{38} \initial {S} -\entry {\code {set}}{49} +\entry {\code {set}}{53} \entry {\code {shift}}{38} -\entry {\code {shopt}}{52} -\entry {\code {source}}{47} -\entry {\code {suspend}}{89} +\entry {\code {shopt}}{47} +\entry {\code {source}}{51} +\entry {\code {suspend}}{87} \initial {T} \entry {\code {test}}{39} \entry {\code {times}}{40} \entry {\code {trap}}{40} -\entry {\code {type}}{47} -\entry {\code {typeset}}{48} +\entry {\code {type}}{51} +\entry {\code {typeset}}{51} \initial {U} -\entry {\code {ulimit}}{48} +\entry {\code {ulimit}}{52} \entry {\code {umask}}{40} -\entry {\code {unalias}}{49} +\entry {\code {unalias}}{53} \entry {\code {unset}}{41} \initial {W} -\entry {\code {wait}}{89} +\entry {\code {wait}}{87} diff --git a/doc/bashref.cp b/doc/bashref.cp index be8f9f864..83484e2f1 100644 --- a/doc/bashref.cp +++ b/doc/bashref.cp @@ -54,65 +54,65 @@ \entry{expansion, arithmetic}{22}{expansion, arithmetic} \entry{arithmetic expansion}{22}{arithmetic expansion} \entry{process substitution}{22}{process substitution} -\entry{word splitting}{23}{word splitting} +\entry{word splitting}{22}{word splitting} \entry{expansion, filename}{23}{expansion, filename} \entry{expansion, pathname}{23}{expansion, pathname} \entry{filename expansion}{23}{filename expansion} \entry{pathname expansion}{23}{pathname expansion} -\entry{pattern matching}{24}{pattern matching} -\entry{matching, pattern}{24}{matching, pattern} +\entry{pattern matching}{23}{pattern matching} +\entry{matching, pattern}{23}{matching, pattern} \entry{redirection}{25}{redirection} \entry{command expansion}{28}{command expansion} \entry{command execution}{29}{command execution} \entry{command search}{29}{command search} -\entry{execution environment}{30}{execution environment} -\entry{environment}{31}{environment} +\entry{execution environment}{29}{execution environment} +\entry{environment}{30}{environment} \entry{exit status}{31}{exit status} \entry{signal handling}{31}{signal handling} \entry{shell script}{32}{shell script} -\entry{special builtin}{57}{special builtin} -\entry{login shell}{71}{login shell} +\entry{special builtin}{56}{special builtin} +\entry{login shell}{69}{login shell} +\entry{interactive shell}{69}{interactive shell} +\entry{startup files}{69}{startup files} \entry{interactive shell}{71}{interactive shell} -\entry{startup files}{71}{startup files} -\entry{interactive shell}{73}{interactive shell} -\entry{shell, interactive}{73}{shell, interactive} -\entry{expressions, conditional}{75}{expressions, conditional} -\entry{arithmetic, shell}{76}{arithmetic, shell} -\entry{shell arithmetic}{76}{shell arithmetic} -\entry{expressions, arithmetic}{76}{expressions, arithmetic} -\entry{evaluation, arithmetic}{76}{evaluation, arithmetic} -\entry{arithmetic evaluation}{76}{arithmetic evaluation} -\entry{alias expansion}{77}{alias expansion} -\entry{arrays}{78}{arrays} -\entry{directory stack}{79}{directory stack} -\entry{prompting}{81}{prompting} -\entry{restricted shell}{82}{restricted shell} -\entry{POSIX Mode}{82}{POSIX Mode} -\entry{job control}{87}{job control} -\entry{foreground}{87}{foreground} -\entry{background}{87}{background} -\entry{suspending jobs}{87}{suspending jobs} -\entry{Readline, how to use}{90}{Readline, how to use} -\entry{interaction, readline}{91}{interaction, readline} -\entry{notation, readline}{91}{notation, readline} -\entry{command editing}{91}{command editing} -\entry{editing command lines}{91}{editing command lines} -\entry{killing text}{93}{killing text} -\entry{yanking text}{93}{yanking text} -\entry{kill ring}{93}{kill ring} -\entry{initialization file, readline}{94}{initialization file, readline} -\entry{variables, readline}{95}{variables, readline} -\entry{programmable completion}{111}{programmable completion} -\entry{completion builtins}{113}{completion builtins} -\entry{History, how to use}{116}{History, how to use} -\entry{command history}{117}{command history} -\entry{history list}{117}{history list} -\entry{history builtins}{117}{history builtins} -\entry{history expansion}{119}{history expansion} -\entry{event designators}{120}{event designators} -\entry{history events}{120}{history events} -\entry{installation}{123}{installation} -\entry{configuration}{123}{configuration} -\entry{Bash installation}{123}{Bash installation} -\entry{Bash configuration}{123}{Bash configuration} -\entry{FDL, GNU Free Documentation License}{139}{FDL, GNU Free Documentation License} +\entry{shell, interactive}{71}{shell, interactive} +\entry{expressions, conditional}{73}{expressions, conditional} +\entry{arithmetic, shell}{74}{arithmetic, shell} +\entry{shell arithmetic}{74}{shell arithmetic} +\entry{expressions, arithmetic}{74}{expressions, arithmetic} +\entry{evaluation, arithmetic}{74}{evaluation, arithmetic} +\entry{arithmetic evaluation}{74}{arithmetic evaluation} +\entry{alias expansion}{75}{alias expansion} +\entry{arrays}{76}{arrays} +\entry{directory stack}{77}{directory stack} +\entry{prompting}{79}{prompting} +\entry{restricted shell}{80}{restricted shell} +\entry{POSIX Mode}{80}{POSIX Mode} +\entry{job control}{85}{job control} +\entry{foreground}{85}{foreground} +\entry{background}{85}{background} +\entry{suspending jobs}{85}{suspending jobs} +\entry{Readline, how to use}{88}{Readline, how to use} +\entry{interaction, readline}{89}{interaction, readline} +\entry{notation, readline}{89}{notation, readline} +\entry{command editing}{89}{command editing} +\entry{editing command lines}{89}{editing command lines} +\entry{killing text}{91}{killing text} +\entry{yanking text}{91}{yanking text} +\entry{kill ring}{91}{kill ring} +\entry{initialization file, readline}{92}{initialization file, readline} +\entry{variables, readline}{93}{variables, readline} +\entry{programmable completion}{109}{programmable completion} +\entry{completion builtins}{111}{completion builtins} +\entry{History, how to use}{114}{History, how to use} +\entry{command history}{115}{command history} +\entry{history list}{115}{history list} +\entry{history builtins}{115}{history builtins} +\entry{history expansion}{117}{history expansion} +\entry{event designators}{117}{event designators} +\entry{history events}{117}{history events} +\entry{installation}{121}{installation} +\entry{configuration}{121}{configuration} +\entry{Bash installation}{121}{Bash installation} +\entry{Bash configuration}{121}{Bash configuration} +\entry{FDL, GNU Free Documentation License}{137}{FDL, GNU Free Documentation License} diff --git a/doc/bashref.cps b/doc/bashref.cps index 6d8376442..1a1e0a971 100644 --- a/doc/bashref.cps +++ b/doc/bashref.cps @@ -1,21 +1,21 @@ \initial {A} -\entry {alias expansion}{77} -\entry {arithmetic evaluation}{76} +\entry {alias expansion}{75} +\entry {arithmetic evaluation}{74} \entry {arithmetic expansion}{22} -\entry {arithmetic, shell}{76} -\entry {arrays}{78} +\entry {arithmetic, shell}{74} +\entry {arrays}{76} \initial {B} -\entry {background}{87} -\entry {Bash configuration}{123} -\entry {Bash installation}{123} +\entry {background}{85} +\entry {Bash configuration}{121} +\entry {Bash installation}{121} \entry {Bourne shell}{5} \entry {brace expansion}{17} \entry {builtin}{3} \initial {C} -\entry {command editing}{91} +\entry {command editing}{89} \entry {command execution}{29} \entry {command expansion}{28} -\entry {command history}{117} +\entry {command history}{115} \entry {command search}{29} \entry {command substitution}{21} \entry {command timing}{8} @@ -28,17 +28,17 @@ \entry {commands, shell}{8} \entry {commands, simple}{8} \entry {comments, shell}{7} -\entry {completion builtins}{113} -\entry {configuration}{123} +\entry {completion builtins}{111} +\entry {configuration}{121} \entry {control operator}{3} \initial {D} -\entry {directory stack}{79} +\entry {directory stack}{77} \initial {E} -\entry {editing command lines}{91} -\entry {environment}{31} -\entry {evaluation, arithmetic}{76} -\entry {event designators}{120} -\entry {execution environment}{30} +\entry {editing command lines}{89} +\entry {environment}{30} +\entry {evaluation, arithmetic}{74} +\entry {event designators}{117} +\entry {execution environment}{29} \entry {exit status}{3, 31} \entry {expansion}{17} \entry {expansion, arithmetic}{22} @@ -47,44 +47,44 @@ \entry {expansion, parameter}{19} \entry {expansion, pathname}{23} \entry {expansion, tilde}{18} -\entry {expressions, arithmetic}{76} -\entry {expressions, conditional}{75} +\entry {expressions, arithmetic}{74} +\entry {expressions, conditional}{73} \initial {F} -\entry {FDL, GNU Free Documentation License}{139} +\entry {FDL, GNU Free Documentation License}{137} \entry {field}{3} \entry {filename}{3} \entry {filename expansion}{23} -\entry {foreground}{87} +\entry {foreground}{85} \entry {functions, shell}{14} \initial {H} -\entry {history builtins}{117} -\entry {history events}{120} -\entry {history expansion}{119} -\entry {history list}{117} -\entry {History, how to use}{116} +\entry {history builtins}{115} +\entry {history events}{117} +\entry {history expansion}{117} +\entry {history list}{115} +\entry {History, how to use}{114} \initial {I} \entry {identifier}{3} -\entry {initialization file, readline}{94} -\entry {installation}{123} -\entry {interaction, readline}{91} -\entry {interactive shell}{71, 73} +\entry {initialization file, readline}{92} +\entry {installation}{121} +\entry {interaction, readline}{89} +\entry {interactive shell}{69, 71} \entry {internationalization}{7} \initial {J} \entry {job}{3} -\entry {job control}{3, 87} +\entry {job control}{3, 85} \initial {K} -\entry {kill ring}{93} -\entry {killing text}{93} +\entry {kill ring}{91} +\entry {killing text}{91} \initial {L} \entry {localization}{7} -\entry {login shell}{71} +\entry {login shell}{69} \initial {M} -\entry {matching, pattern}{24} +\entry {matching, pattern}{23} \entry {metacharacter}{3} \initial {N} \entry {name}{3} \entry {native languages}{7} -\entry {notation, readline}{91} +\entry {notation, readline}{89} \initial {O} \entry {operator, shell}{3} \initial {P} @@ -93,44 +93,44 @@ \entry {parameters, positional}{15} \entry {parameters, special}{16} \entry {pathname expansion}{23} -\entry {pattern matching}{24} +\entry {pattern matching}{23} \entry {pipeline}{8} \entry {POSIX}{3} -\entry {POSIX Mode}{82} +\entry {POSIX Mode}{80} \entry {process group}{3} \entry {process group ID}{3} \entry {process substitution}{22} -\entry {programmable completion}{111} -\entry {prompting}{81} +\entry {programmable completion}{109} +\entry {prompting}{79} \initial {Q} \entry {quoting}{6} \entry {quoting, ANSI}{6} \initial {R} -\entry {Readline, how to use}{90} +\entry {Readline, how to use}{88} \entry {redirection}{25} \entry {reserved word}{3} -\entry {restricted shell}{82} +\entry {restricted shell}{80} \entry {return status}{3} \initial {S} -\entry {shell arithmetic}{76} +\entry {shell arithmetic}{74} \entry {shell function}{14} \entry {shell script}{32} \entry {shell variable}{15} -\entry {shell, interactive}{73} +\entry {shell, interactive}{71} \entry {signal}{4} \entry {signal handling}{31} -\entry {special builtin}{4, 57} -\entry {startup files}{71} -\entry {suspending jobs}{87} +\entry {special builtin}{4, 56} +\entry {startup files}{69} +\entry {suspending jobs}{85} \initial {T} \entry {tilde expansion}{18} \entry {token}{4} \entry {translation, native languages}{7} \initial {V} \entry {variable, shell}{15} -\entry {variables, readline}{95} +\entry {variables, readline}{93} \initial {W} \entry {word}{4} -\entry {word splitting}{23} +\entry {word splitting}{22} \initial {Y} -\entry {yanking text}{93} +\entry {yanking text}{91} diff --git a/doc/bashref.dvi b/doc/bashref.dvi index c84fc2e0cc86adce19048c885b3e53905dd1473c..21f808438cc76260655fb16dab20fadbcca44e9d 100644 GIT binary patch delta 150048 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 delta 178313 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

Mg1j+CpB|l1f!w<~r^LBLo~n>bn1rw8 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⋙;ozn)A3 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%0A0r5f@(Fjy^1oM)Q*F4-HG)!dSh(=O&W0S@@; zcs`T~c^FH;I60Y&kV3L@%@IzRQ8;JX^kTz#1<;e0CLSBl?<0ZUu8p1hVdOos)4Z*w z6)m2cKi@b(G+2h%4iaFTeV_D~{H;1huDRK4)A=Vad#aCOljMf zFv_0U&CLS(1Tar*ZVd`dFg`g#3M4fh@Z19jj6TQ6c>J*`;DHZ}@^;)TcoRLc!fZ4N z4*Ry_WPrp-(3dBmZAeC^8k3<$=2s+{*C;!M9cDDQV(*(y!`iaP?|%(lb1L=?03%Sb zgl|bAdqSt3CHtjpBk~*>CCQmkW!`xbAO%559IeSSrsWIbm6c0(d`}L@umHxI3(#k$ zYQ?jSx^|Gr;Ng1Thd*3}hf$e0>`E`@YY7UB7l;1PMKT`=qS;l!r0Fwe<>$|sX#Dsp ziH0L)eZ?sGne>6hw(!LRSI9`o-+E6!_=TK62=Q5=schjz*UQRRR+rTAgAoHe-4eTM zlUcFQ8g}8h>67@BL%iSKS2$tuxWYo?3-TQ$=_O0<2h9u=-c7v1ncLT^=X*DcEW#{wTgfGYtKo;=!2QsP+61CGHN^UdTN{H zliT*%uIb@OSx?-xn{EuyzE_9A8M=46K?AiRQe1ZProQ?k;^@t2Zs{KIFMfVz6y_Dp z&EwORvW(~;Z3?mtmBH}82TV8c-f5y@(d>fhd3@Ud3XQ8FP{WHSZV1(SN#VmRUZ=?W z4f;TscBR`e^SpDkh&vnVMTY)s@~dsNi%yljz{yK0=tfjg`Zust#21+at5JWw)YvV340cq&Cm!gtGVs7 zfWTipXVfNWfJR_p1MZz~ywO*iDTN`_M?LIi9-!V?Bc{JL9)K7?@?Mhw7f;SFG=56d zCQ5MZw-3~Y;{Vf$TCs%ZnhqbN9fG~@I#@dpHmp;Zvw4?i2Wz*=3pKa%n zIZ>s_tid?wtK*U}I7^F1+T9v(-#j`iTWgjw=*evDXjocW^QPDmRdhZcYhR`x4%5DZ z3fpotx0FQ>zk5J;Q>q3GBPH z_b7OoOWzr#eFi-}F~rfRLUPrj!3 z@!zja)$Z{hX1$(JsI3l2OSOI`UUUnCtpPg|vBnxEV|Pdgn6;1+xT?OtKc95&rKUwhR* z&Ezua-3zqW@TcfK??&y3DER3!l*!(q?4#G7_KTyD3$^+FX(n?leK^jyCMp@N63xz-8!wUCv0o%d}|~#t&u!)tF}4J;tr6=m~Tqz zwN~h8leeSp4y~;#a+ua6PdGHUzs2*>yBf6fVYxWxJ)MYA3|-x*xn(%N^caX=3TZJG5g^Z}^>1 zZy4>dN^7HACu$09U!}dnOB?UfJ^(h{(7mGS*QwNV;W9{exhk>G#+ zGr)4%pwr4$Ede*-!DqD#BsYzX!f4u{B}!5neQu-n6O3ZrbHLfy(o^Zvo3w9i8L7qt z|JD{L-I~Q*_=cbTk9JvU4cPH6J^h0Aow6xl$9u*nTeTly8uZwUS|mO8lGX;B))H5| z&npeJ1l{%~eQmqe2n^rQm$faZ?>c5^DLDMDuWM0K52)Yf6?3q@k@bewU6SFD7?a=B zB5`EKlD9M)GL7Xsv}9Z(*G}yZk`E(`>EV0Y^ybM#pjF05=#zPimjq6hx~ApyD(sEC)aWx)h(9$v-va zYhd-Dw)>3MR|;A$Ue3ao2kCp?XqTBfC1B$zW9PS8lMMZj`A!>&s;EDHHk!WIdLpw) zFKACH0E$_cw13DdY6tJBG)}{104}{\code {end-of-history (M->)}} -\entry{reverse-search-history (C-r)}{104}{\code {reverse-search-history (C-r)}} -\entry{forward-search-history (C-s)}{104}{\code {forward-search-history (C-s)}} -\entry{non-incremental-reverse-search-history (M-p)}{104}{\code {non-incremental-reverse-search-history (M-p)}} -\entry{non-incremental-forward-search-history (M-n)}{104}{\code {non-incremental-forward-search-history (M-n)}} -\entry{history-search-forward ()}{104}{\code {history-search-forward ()}} -\entry{history-search-backward ()}{104}{\code {history-search-backward ()}} -\entry{yank-nth-arg (M-C-y)}{104}{\code {yank-nth-arg (M-C-y)}} -\entry{yank-last-arg (M-. or M-_)}{104}{\code {yank-last-arg (M-. or M-_)}} -\entry{delete-char (C-d)}{105}{\code {delete-char (C-d)}} -\entry{backward-delete-char (Rubout)}{105}{\code {backward-delete-char (Rubout)}} -\entry{forward-backward-delete-char ()}{105}{\code {forward-backward-delete-char ()}} -\entry{quoted-insert (C-q or C-v)}{105}{\code {quoted-insert (C-q or C-v)}} -\entry{self-insert (a, b, A, 1, !, ...{})}{105}{\code {self-insert (a, b, A, 1, !, \dots {})}} -\entry{transpose-chars (C-t)}{105}{\code {transpose-chars (C-t)}} -\entry{transpose-words (M-t)}{105}{\code {transpose-words (M-t)}} -\entry{upcase-word (M-u)}{105}{\code {upcase-word (M-u)}} -\entry{downcase-word (M-l)}{105}{\code {downcase-word (M-l)}} -\entry{capitalize-word (M-c)}{105}{\code {capitalize-word (M-c)}} -\entry{overwrite-mode ()}{105}{\code {overwrite-mode ()}} -\entry{kill-line (C-k)}{106}{\code {kill-line (C-k)}} -\entry{backward-kill-line (C-x Rubout)}{106}{\code {backward-kill-line (C-x Rubout)}} -\entry{unix-line-discard (C-u)}{106}{\code {unix-line-discard (C-u)}} -\entry{kill-whole-line ()}{106}{\code {kill-whole-line ()}} -\entry{kill-word (M-d)}{106}{\code {kill-word (M-d)}} -\entry{backward-kill-word (M-DEL)}{106}{\code {backward-kill-word (M-\key {DEL})}} -\entry{unix-word-rubout (C-w)}{106}{\code {unix-word-rubout (C-w)}} -\entry{unix-filename-rubout ()}{106}{\code {unix-filename-rubout ()}} -\entry{delete-horizontal-space ()}{106}{\code {delete-horizontal-space ()}} -\entry{kill-region ()}{106}{\code {kill-region ()}} -\entry{copy-region-as-kill ()}{106}{\code {copy-region-as-kill ()}} -\entry{copy-backward-word ()}{106}{\code {copy-backward-word ()}} -\entry{copy-forward-word ()}{106}{\code {copy-forward-word ()}} -\entry{yank (C-y)}{107}{\code {yank (C-y)}} -\entry{yank-pop (M-y)}{107}{\code {yank-pop (M-y)}} -\entry{digit-argument (M-0, M-1, ...{} M--)}{107}{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}} -\entry{universal-argument ()}{107}{\code {universal-argument ()}} -\entry{complete (TAB)}{107}{\code {complete (\key {TAB})}} -\entry{possible-completions (M-?)}{107}{\code {possible-completions (M-?)}} -\entry{insert-completions (M-*)}{107}{\code {insert-completions (M-*)}} -\entry{menu-complete ()}{107}{\code {menu-complete ()}} -\entry{delete-char-or-list ()}{108}{\code {delete-char-or-list ()}} -\entry{complete-filename (M-/)}{108}{\code {complete-filename (M-/)}} -\entry{possible-filename-completions (C-x /)}{108}{\code {possible-filename-completions (C-x /)}} -\entry{complete-username (M-~)}{108}{\code {complete-username (M-~)}} -\entry{possible-username-completions (C-x ~)}{108}{\code {possible-username-completions (C-x ~)}} -\entry{complete-variable (M-$)}{108}{\code {complete-variable (M-$)}} -\entry{possible-variable-completions (C-x $)}{108}{\code {possible-variable-completions (C-x $)}} -\entry{complete-hostname (M-@)}{108}{\code {complete-hostname (M-@)}} -\entry{possible-hostname-completions (C-x @)}{108}{\code {possible-hostname-completions (C-x @)}} -\entry{complete-command (M-!)}{108}{\code {complete-command (M-!)}} -\entry{possible-command-completions (C-x !)}{108}{\code {possible-command-completions (C-x !)}} -\entry{dynamic-complete-history (M-TAB)}{108}{\code {dynamic-complete-history (M-\key {TAB})}} -\entry{complete-into-braces (M-{\tt \char 123})}{108}{\code {complete-into-braces (M-{\tt \char 123})}} -\entry{start-kbd-macro (C-x ()}{108}{\code {start-kbd-macro (C-x ()}} -\entry{end-kbd-macro (C-x ))}{109}{\code {end-kbd-macro (C-x ))}} -\entry{call-last-kbd-macro (C-x e)}{109}{\code {call-last-kbd-macro (C-x e)}} -\entry{re-read-init-file (C-x C-r)}{109}{\code {re-read-init-file (C-x C-r)}} -\entry{abort (C-g)}{109}{\code {abort (C-g)}} -\entry{do-uppercase-version (M-a, M-b, M-x, ...{})}{109}{\code {do-uppercase-version (M-a, M-b, M-\var {x}, \dots {})}} -\entry{prefix-meta (ESC)}{109}{\code {prefix-meta (\key {ESC})}} -\entry{undo (C-_ or C-x C-u)}{109}{\code {undo (C-_ or C-x C-u)}} -\entry{revert-line (M-r)}{109}{\code {revert-line (M-r)}} -\entry{tilde-expand (M-&)}{109}{\code {tilde-expand (M-&)}} -\entry{set-mark (C-@)}{109}{\code {set-mark (C-@)}} -\entry{exchange-point-and-mark (C-x C-x)}{109}{\code {exchange-point-and-mark (C-x C-x)}} -\entry{character-search (C-])}{109}{\code {character-search (C-])}} -\entry{character-search-backward (M-C-])}{109}{\code {character-search-backward (M-C-])}} -\entry{insert-comment (M-#)}{110}{\code {insert-comment (M-#)}} -\entry{dump-functions ()}{110}{\code {dump-functions ()}} -\entry{dump-variables ()}{110}{\code {dump-variables ()}} -\entry{dump-macros ()}{110}{\code {dump-macros ()}} -\entry{glob-complete-word (M-g)}{110}{\code {glob-complete-word (M-g)}} -\entry{glob-expand-word (C-x *)}{110}{\code {glob-expand-word (C-x *)}} -\entry{glob-list-expansions (C-x g)}{110}{\code {glob-list-expansions (C-x g)}} -\entry{display-shell-version (C-x C-v)}{110}{\code {display-shell-version (C-x C-v)}} -\entry{shell-expand-line (M-C-e)}{110}{\code {shell-expand-line (M-C-e)}} -\entry{history-expand-line (M-^)}{110}{\code {history-expand-line (M-^)}} -\entry{magic-space ()}{111}{\code {magic-space ()}} -\entry{alias-expand-line ()}{111}{\code {alias-expand-line ()}} -\entry{history-and-alias-expand-line ()}{111}{\code {history-and-alias-expand-line ()}} -\entry{insert-last-argument (M-. or M-_)}{111}{\code {insert-last-argument (M-. or M-_)}} -\entry{operate-and-get-next (C-o)}{111}{\code {operate-and-get-next (C-o)}} -\entry{edit-and-execute-command (C-xC-e)}{111}{\code {edit-and-execute-command (C-xC-e)}} +\entry{beginning-of-line (C-a)}{101}{\code {beginning-of-line (C-a)}} +\entry{end-of-line (C-e)}{101}{\code {end-of-line (C-e)}} +\entry{forward-char (C-f)}{101}{\code {forward-char (C-f)}} +\entry{backward-char (C-b)}{101}{\code {backward-char (C-b)}} +\entry{forward-word (M-f)}{101}{\code {forward-word (M-f)}} +\entry{backward-word (M-b)}{101}{\code {backward-word (M-b)}} +\entry{clear-screen (C-l)}{101}{\code {clear-screen (C-l)}} +\entry{redraw-current-line ()}{101}{\code {redraw-current-line ()}} +\entry{accept-line (Newline or Return)}{101}{\code {accept-line (Newline or Return)}} +\entry{previous-history (C-p)}{102}{\code {previous-history (C-p)}} +\entry{next-history (C-n)}{102}{\code {next-history (C-n)}} +\entry{beginning-of-history (M-<)}{102}{\code {beginning-of-history (M-<)}} +\entry{end-of-history (M->)}{102}{\code {end-of-history (M->)}} +\entry{reverse-search-history (C-r)}{102}{\code {reverse-search-history (C-r)}} +\entry{forward-search-history (C-s)}{102}{\code {forward-search-history (C-s)}} +\entry{non-incremental-reverse-search-history (M-p)}{102}{\code {non-incremental-reverse-search-history (M-p)}} +\entry{non-incremental-forward-search-history (M-n)}{102}{\code {non-incremental-forward-search-history (M-n)}} +\entry{history-search-forward ()}{102}{\code {history-search-forward ()}} +\entry{history-search-backward ()}{102}{\code {history-search-backward ()}} +\entry{yank-nth-arg (M-C-y)}{102}{\code {yank-nth-arg (M-C-y)}} +\entry{yank-last-arg (M-. or M-_)}{102}{\code {yank-last-arg (M-. or M-_)}} +\entry{delete-char (C-d)}{103}{\code {delete-char (C-d)}} +\entry{backward-delete-char (Rubout)}{103}{\code {backward-delete-char (Rubout)}} +\entry{forward-backward-delete-char ()}{103}{\code {forward-backward-delete-char ()}} +\entry{quoted-insert (C-q or C-v)}{103}{\code {quoted-insert (C-q or C-v)}} +\entry{self-insert (a, b, A, 1, !, ...{})}{103}{\code {self-insert (a, b, A, 1, !, \dots {})}} +\entry{transpose-chars (C-t)}{103}{\code {transpose-chars (C-t)}} +\entry{transpose-words (M-t)}{103}{\code {transpose-words (M-t)}} +\entry{upcase-word (M-u)}{103}{\code {upcase-word (M-u)}} +\entry{downcase-word (M-l)}{103}{\code {downcase-word (M-l)}} +\entry{capitalize-word (M-c)}{103}{\code {capitalize-word (M-c)}} +\entry{overwrite-mode ()}{103}{\code {overwrite-mode ()}} +\entry{kill-line (C-k)}{104}{\code {kill-line (C-k)}} +\entry{backward-kill-line (C-x Rubout)}{104}{\code {backward-kill-line (C-x Rubout)}} +\entry{unix-line-discard (C-u)}{104}{\code {unix-line-discard (C-u)}} +\entry{kill-whole-line ()}{104}{\code {kill-whole-line ()}} +\entry{kill-word (M-d)}{104}{\code {kill-word (M-d)}} +\entry{backward-kill-word (M-DEL)}{104}{\code {backward-kill-word (M-\key {DEL})}} +\entry{unix-word-rubout (C-w)}{104}{\code {unix-word-rubout (C-w)}} +\entry{unix-filename-rubout ()}{104}{\code {unix-filename-rubout ()}} +\entry{delete-horizontal-space ()}{104}{\code {delete-horizontal-space ()}} +\entry{kill-region ()}{104}{\code {kill-region ()}} +\entry{copy-region-as-kill ()}{104}{\code {copy-region-as-kill ()}} +\entry{copy-backward-word ()}{104}{\code {copy-backward-word ()}} +\entry{copy-forward-word ()}{104}{\code {copy-forward-word ()}} +\entry{yank (C-y)}{105}{\code {yank (C-y)}} +\entry{yank-pop (M-y)}{105}{\code {yank-pop (M-y)}} +\entry{digit-argument (M-0, M-1, ...{} M--)}{105}{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}} +\entry{universal-argument ()}{105}{\code {universal-argument ()}} +\entry{complete (TAB)}{105}{\code {complete (\key {TAB})}} +\entry{possible-completions (M-?)}{105}{\code {possible-completions (M-?)}} +\entry{insert-completions (M-*)}{105}{\code {insert-completions (M-*)}} +\entry{menu-complete ()}{105}{\code {menu-complete ()}} +\entry{delete-char-or-list ()}{106}{\code {delete-char-or-list ()}} +\entry{complete-filename (M-/)}{106}{\code {complete-filename (M-/)}} +\entry{possible-filename-completions (C-x /)}{106}{\code {possible-filename-completions (C-x /)}} +\entry{complete-username (M-~)}{106}{\code {complete-username (M-~)}} +\entry{possible-username-completions (C-x ~)}{106}{\code {possible-username-completions (C-x ~)}} +\entry{complete-variable (M-$)}{106}{\code {complete-variable (M-$)}} +\entry{possible-variable-completions (C-x $)}{106}{\code {possible-variable-completions (C-x $)}} +\entry{complete-hostname (M-@)}{106}{\code {complete-hostname (M-@)}} +\entry{possible-hostname-completions (C-x @)}{106}{\code {possible-hostname-completions (C-x @)}} +\entry{complete-command (M-!)}{106}{\code {complete-command (M-!)}} +\entry{possible-command-completions (C-x !)}{106}{\code {possible-command-completions (C-x !)}} +\entry{dynamic-complete-history (M-TAB)}{106}{\code {dynamic-complete-history (M-\key {TAB})}} +\entry{complete-into-braces (M-{\tt \char 123})}{106}{\code {complete-into-braces (M-{\tt \char 123})}} +\entry{start-kbd-macro (C-x ()}{106}{\code {start-kbd-macro (C-x ()}} +\entry{end-kbd-macro (C-x ))}{107}{\code {end-kbd-macro (C-x ))}} +\entry{call-last-kbd-macro (C-x e)}{107}{\code {call-last-kbd-macro (C-x e)}} +\entry{re-read-init-file (C-x C-r)}{107}{\code {re-read-init-file (C-x C-r)}} +\entry{abort (C-g)}{107}{\code {abort (C-g)}} +\entry{do-uppercase-version (M-a, M-b, M-x, ...{})}{107}{\code {do-uppercase-version (M-a, M-b, M-\var {x}, \dots {})}} +\entry{prefix-meta (ESC)}{107}{\code {prefix-meta (\key {ESC})}} +\entry{undo (C-_ or C-x C-u)}{107}{\code {undo (C-_ or C-x C-u)}} +\entry{revert-line (M-r)}{107}{\code {revert-line (M-r)}} +\entry{tilde-expand (M-&)}{107}{\code {tilde-expand (M-&)}} +\entry{set-mark (C-@)}{107}{\code {set-mark (C-@)}} +\entry{exchange-point-and-mark (C-x C-x)}{107}{\code {exchange-point-and-mark (C-x C-x)}} +\entry{character-search (C-])}{107}{\code {character-search (C-])}} +\entry{character-search-backward (M-C-])}{107}{\code {character-search-backward (M-C-])}} +\entry{insert-comment (M-#)}{108}{\code {insert-comment (M-#)}} +\entry{dump-functions ()}{108}{\code {dump-functions ()}} +\entry{dump-variables ()}{108}{\code {dump-variables ()}} +\entry{dump-macros ()}{108}{\code {dump-macros ()}} +\entry{glob-complete-word (M-g)}{108}{\code {glob-complete-word (M-g)}} +\entry{glob-expand-word (C-x *)}{108}{\code {glob-expand-word (C-x *)}} +\entry{glob-list-expansions (C-x g)}{108}{\code {glob-list-expansions (C-x g)}} +\entry{display-shell-version (C-x C-v)}{108}{\code {display-shell-version (C-x C-v)}} +\entry{shell-expand-line (M-C-e)}{108}{\code {shell-expand-line (M-C-e)}} +\entry{history-expand-line (M-^)}{108}{\code {history-expand-line (M-^)}} +\entry{magic-space ()}{109}{\code {magic-space ()}} +\entry{alias-expand-line ()}{109}{\code {alias-expand-line ()}} +\entry{history-and-alias-expand-line ()}{109}{\code {history-and-alias-expand-line ()}} +\entry{insert-last-argument (M-. or M-_)}{109}{\code {insert-last-argument (M-. or M-_)}} +\entry{operate-and-get-next (C-o)}{109}{\code {operate-and-get-next (C-o)}} +\entry{edit-and-execute-command (C-xC-e)}{109}{\code {edit-and-execute-command (C-xC-e)}} diff --git a/doc/bashref.fns b/doc/bashref.fns index e76ee7f2f..3a98d8d96 100644 --- a/doc/bashref.fns +++ b/doc/bashref.fns @@ -1,116 +1,116 @@ \initial {A} -\entry {\code {abort (C-g)}}{109} -\entry {\code {accept-line (Newline or Return)}}{103} -\entry {\code {alias-expand-line ()}}{111} +\entry {\code {abort (C-g)}}{107} +\entry {\code {accept-line (Newline or Return)}}{101} +\entry {\code {alias-expand-line ()}}{109} \initial {B} -\entry {\code {backward-char (C-b)}}{103} -\entry {\code {backward-delete-char (Rubout)}}{105} -\entry {\code {backward-kill-line (C-x Rubout)}}{106} -\entry {\code {backward-kill-word (M-\key {DEL})}}{106} -\entry {\code {backward-word (M-b)}}{103} -\entry {\code {beginning-of-history (M-<)}}{104} -\entry {\code {beginning-of-line (C-a)}}{103} +\entry {\code {backward-char (C-b)}}{101} +\entry {\code {backward-delete-char (Rubout)}}{103} +\entry {\code {backward-kill-line (C-x Rubout)}}{104} +\entry {\code {backward-kill-word (M-\key {DEL})}}{104} +\entry {\code {backward-word (M-b)}}{101} +\entry {\code {beginning-of-history (M-<)}}{102} +\entry {\code {beginning-of-line (C-a)}}{101} \initial {C} -\entry {\code {call-last-kbd-macro (C-x e)}}{109} -\entry {\code {capitalize-word (M-c)}}{105} -\entry {\code {character-search (C-])}}{109} -\entry {\code {character-search-backward (M-C-])}}{109} -\entry {\code {clear-screen (C-l)}}{103} -\entry {\code {complete (\key {TAB})}}{107} -\entry {\code {complete-command (M-!)}}{108} -\entry {\code {complete-filename (M-/)}}{108} -\entry {\code {complete-hostname (M-@)}}{108} -\entry {\code {complete-into-braces (M-{\tt \char 123})}}{108} -\entry {\code {complete-username (M-~)}}{108} -\entry {\code {complete-variable (M-$)}}{108} -\entry {\code {copy-backward-word ()}}{106} -\entry {\code {copy-forward-word ()}}{106} -\entry {\code {copy-region-as-kill ()}}{106} +\entry {\code {call-last-kbd-macro (C-x e)}}{107} +\entry {\code {capitalize-word (M-c)}}{103} +\entry {\code {character-search (C-])}}{107} +\entry {\code {character-search-backward (M-C-])}}{107} +\entry {\code {clear-screen (C-l)}}{101} +\entry {\code {complete (\key {TAB})}}{105} +\entry {\code {complete-command (M-!)}}{106} +\entry {\code {complete-filename (M-/)}}{106} +\entry {\code {complete-hostname (M-@)}}{106} +\entry {\code {complete-into-braces (M-{\tt \char 123})}}{106} +\entry {\code {complete-username (M-~)}}{106} +\entry {\code {complete-variable (M-$)}}{106} +\entry {\code {copy-backward-word ()}}{104} +\entry {\code {copy-forward-word ()}}{104} +\entry {\code {copy-region-as-kill ()}}{104} \initial {D} -\entry {\code {delete-char (C-d)}}{105} -\entry {\code {delete-char-or-list ()}}{108} -\entry {\code {delete-horizontal-space ()}}{106} -\entry {\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}{107} -\entry {\code {display-shell-version (C-x C-v)}}{110} -\entry {\code {do-uppercase-version (M-a, M-b, M-\var {x}, \dots {})}}{109} -\entry {\code {downcase-word (M-l)}}{105} -\entry {\code {dump-functions ()}}{110} -\entry {\code {dump-macros ()}}{110} -\entry {\code {dump-variables ()}}{110} -\entry {\code {dynamic-complete-history (M-\key {TAB})}}{108} +\entry {\code {delete-char (C-d)}}{103} +\entry {\code {delete-char-or-list ()}}{106} +\entry {\code {delete-horizontal-space ()}}{104} +\entry {\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}{105} +\entry {\code {display-shell-version (C-x C-v)}}{108} +\entry {\code {do-uppercase-version (M-a, M-b, M-\var {x}, \dots {})}}{107} +\entry {\code {downcase-word (M-l)}}{103} +\entry {\code {dump-functions ()}}{108} +\entry {\code {dump-macros ()}}{108} +\entry {\code {dump-variables ()}}{108} +\entry {\code {dynamic-complete-history (M-\key {TAB})}}{106} \initial {E} -\entry {\code {edit-and-execute-command (C-xC-e)}}{111} -\entry {\code {end-kbd-macro (C-x ))}}{109} -\entry {\code {end-of-history (M->)}}{104} -\entry {\code {end-of-line (C-e)}}{103} -\entry {\code {exchange-point-and-mark (C-x C-x)}}{109} +\entry {\code {edit-and-execute-command (C-xC-e)}}{109} +\entry {\code {end-kbd-macro (C-x ))}}{107} +\entry {\code {end-of-history (M->)}}{102} +\entry {\code {end-of-line (C-e)}}{101} +\entry {\code {exchange-point-and-mark (C-x C-x)}}{107} \initial {F} -\entry {\code {forward-backward-delete-char ()}}{105} -\entry {\code {forward-char (C-f)}}{103} -\entry {\code {forward-search-history (C-s)}}{104} -\entry {\code {forward-word (M-f)}}{103} +\entry {\code {forward-backward-delete-char ()}}{103} +\entry {\code {forward-char (C-f)}}{101} +\entry {\code {forward-search-history (C-s)}}{102} +\entry {\code {forward-word (M-f)}}{101} \initial {G} -\entry {\code {glob-complete-word (M-g)}}{110} -\entry {\code {glob-expand-word (C-x *)}}{110} -\entry {\code {glob-list-expansions (C-x g)}}{110} +\entry {\code {glob-complete-word (M-g)}}{108} +\entry {\code {glob-expand-word (C-x *)}}{108} +\entry {\code {glob-list-expansions (C-x g)}}{108} \initial {H} -\entry {\code {history-and-alias-expand-line ()}}{111} -\entry {\code {history-expand-line (M-^)}}{110} -\entry {\code {history-search-backward ()}}{104} -\entry {\code {history-search-forward ()}}{104} +\entry {\code {history-and-alias-expand-line ()}}{109} +\entry {\code {history-expand-line (M-^)}}{108} +\entry {\code {history-search-backward ()}}{102} +\entry {\code {history-search-forward ()}}{102} \initial {I} -\entry {\code {insert-comment (M-#)}}{110} -\entry {\code {insert-completions (M-*)}}{107} -\entry {\code {insert-last-argument (M-. or M-_)}}{111} +\entry {\code {insert-comment (M-#)}}{108} +\entry {\code {insert-completions (M-*)}}{105} +\entry {\code {insert-last-argument (M-. or M-_)}}{109} \initial {K} -\entry {\code {kill-line (C-k)}}{106} -\entry {\code {kill-region ()}}{106} -\entry {\code {kill-whole-line ()}}{106} -\entry {\code {kill-word (M-d)}}{106} +\entry {\code {kill-line (C-k)}}{104} +\entry {\code {kill-region ()}}{104} +\entry {\code {kill-whole-line ()}}{104} +\entry {\code {kill-word (M-d)}}{104} \initial {M} -\entry {\code {magic-space ()}}{111} -\entry {\code {menu-complete ()}}{107} +\entry {\code {magic-space ()}}{109} +\entry {\code {menu-complete ()}}{105} \initial {N} -\entry {\code {next-history (C-n)}}{104} -\entry {\code {non-incremental-forward-search-history (M-n)}}{104} -\entry {\code {non-incremental-reverse-search-history (M-p)}}{104} +\entry {\code {next-history (C-n)}}{102} +\entry {\code {non-incremental-forward-search-history (M-n)}}{102} +\entry {\code {non-incremental-reverse-search-history (M-p)}}{102} \initial {O} -\entry {\code {operate-and-get-next (C-o)}}{111} -\entry {\code {overwrite-mode ()}}{105} +\entry {\code {operate-and-get-next (C-o)}}{109} +\entry {\code {overwrite-mode ()}}{103} \initial {P} -\entry {\code {possible-command-completions (C-x !)}}{108} -\entry {\code {possible-completions (M-?)}}{107} -\entry {\code {possible-filename-completions (C-x /)}}{108} -\entry {\code {possible-hostname-completions (C-x @)}}{108} -\entry {\code {possible-username-completions (C-x ~)}}{108} -\entry {\code {possible-variable-completions (C-x $)}}{108} -\entry {\code {prefix-meta (\key {ESC})}}{109} -\entry {\code {previous-history (C-p)}}{104} +\entry {\code {possible-command-completions (C-x !)}}{106} +\entry {\code {possible-completions (M-?)}}{105} +\entry {\code {possible-filename-completions (C-x /)}}{106} +\entry {\code {possible-hostname-completions (C-x @)}}{106} +\entry {\code {possible-username-completions (C-x ~)}}{106} +\entry {\code {possible-variable-completions (C-x $)}}{106} +\entry {\code {prefix-meta (\key {ESC})}}{107} +\entry {\code {previous-history (C-p)}}{102} \initial {Q} -\entry {\code {quoted-insert (C-q or C-v)}}{105} +\entry {\code {quoted-insert (C-q or C-v)}}{103} \initial {R} -\entry {\code {re-read-init-file (C-x C-r)}}{109} -\entry {\code {redraw-current-line ()}}{103} -\entry {\code {reverse-search-history (C-r)}}{104} -\entry {\code {revert-line (M-r)}}{109} +\entry {\code {re-read-init-file (C-x C-r)}}{107} +\entry {\code {redraw-current-line ()}}{101} +\entry {\code {reverse-search-history (C-r)}}{102} +\entry {\code {revert-line (M-r)}}{107} \initial {S} -\entry {\code {self-insert (a, b, A, 1, !, \dots {})}}{105} -\entry {\code {set-mark (C-@)}}{109} -\entry {\code {shell-expand-line (M-C-e)}}{110} -\entry {\code {start-kbd-macro (C-x ()}}{108} +\entry {\code {self-insert (a, b, A, 1, !, \dots {})}}{103} +\entry {\code {set-mark (C-@)}}{107} +\entry {\code {shell-expand-line (M-C-e)}}{108} +\entry {\code {start-kbd-macro (C-x ()}}{106} \initial {T} -\entry {\code {tilde-expand (M-&)}}{109} -\entry {\code {transpose-chars (C-t)}}{105} -\entry {\code {transpose-words (M-t)}}{105} +\entry {\code {tilde-expand (M-&)}}{107} +\entry {\code {transpose-chars (C-t)}}{103} +\entry {\code {transpose-words (M-t)}}{103} \initial {U} -\entry {\code {undo (C-_ or C-x C-u)}}{109} -\entry {\code {universal-argument ()}}{107} -\entry {\code {unix-filename-rubout ()}}{106} -\entry {\code {unix-line-discard (C-u)}}{106} -\entry {\code {unix-word-rubout (C-w)}}{106} -\entry {\code {upcase-word (M-u)}}{105} +\entry {\code {undo (C-_ or C-x C-u)}}{107} +\entry {\code {universal-argument ()}}{105} +\entry {\code {unix-filename-rubout ()}}{104} +\entry {\code {unix-line-discard (C-u)}}{104} +\entry {\code {unix-word-rubout (C-w)}}{104} +\entry {\code {upcase-word (M-u)}}{103} \initial {Y} -\entry {\code {yank (C-y)}}{107} -\entry {\code {yank-last-arg (M-. or M-_)}}{104} -\entry {\code {yank-nth-arg (M-C-y)}}{104} -\entry {\code {yank-pop (M-y)}}{107} +\entry {\code {yank (C-y)}}{105} +\entry {\code {yank-last-arg (M-. or M-_)}}{102} +\entry {\code {yank-nth-arg (M-C-y)}}{102} +\entry {\code {yank-pop (M-y)}}{105} diff --git a/doc/bashref.html b/doc/bashref.html index 637ae3c2c..c10895659 100644 --- a/doc/bashref.html +++ b/doc/bashref.html @@ -1,6 +1,6 @@ - + - -

- - -
4.3.1 The Set Builtin  Change the values of shell attributes and - positional parameters.
4.3.2 The Shopt Builtin  Modify shell optional behavior.
+

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 z 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

interactive_comments +
Allow a word beginning with `#' +to cause that word and all remaining characters on that +line to be ignored in an interactive shell. +This option is enabled by default.

- -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

4.3.1 The Set Builtin

- +
lithist +
If enabled, and the cmdhist +option is enabled, multi-line commands are saved to the history with +embedded newlines rather than using semicolon separators where possible.

-This builtin is so complicated that it deserves its own section. set -allows you to change the values of shell options and set the positional -parameters, or to display the names and values of shell variables. -

- -

-
set -
-
 
set [--abefhkmnptuvxBCEHPT] [-o option] [argument ...]
-set [+abefhkmnptuvxBCEHPT] [+o option] [argument ...]
-

- -If no options or arguments are supplied, set displays the names -and values of all shell variables and functions, sorted according to the -current locale, in a format that may 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. -

+

login_shell +
The shell sets this option if it is started as a login shell +(see section 6.1 Invoking Bash). +The value may not be changed. +

-When options are supplied, they set or unset shell attributes. -Options, if specified, have the following meanings: -

+

mailwarn +
If set, and a file that Bash is checking for mail has been +accessed since the last time it was checked, the message +"The mail in mailfile has been read" is displayed. +

-

-
-a -
Mark variables and function which are modified or created for export -to the environment of subsequent commands. +
no_empty_cmd_completion +
If set, and Readline is being used, Bash will not attempt to search +the PATH for possible completions when completion is attempted +on an empty line.

-

-b -
Cause the status of terminated background jobs to be reported -immediately, rather than before printing the next primary prompt. +
nocaseglob +
If set, Bash matches filenames in a case-insensitive fashion when +performing filename expansion.

-

-e -
Exit immediately if a simple command (see section 3.2.1 Simple Commands) exits -with a non-zero status, unless the command that fails is part of the -command list immediately following a while or until keyword, -part of the test in an if statement, -part of a && or || list, -any command in a pipeline but the last, -or if the command's return status is being inverted using !. -A trap on ERR, if set, is executed before the shell exits. +
nocasematch +
If set, Bash matches patterns in a case-insensitive fashion when +performing matching while executing case or [[ +conditional commands.

-

-f -
Disable file name generation (globbing). +
nullglob +
If set, Bash allows filename patterns which match no +files to expand to a null string, rather than themselves.

-

-h -
Locate and remember (hash) commands as they are looked up for execution. +
progcomp +
If set, the programmable completion facilities +(see section 8.6 Programmable Completion) are enabled. This option is enabled by default.

-

-k -
All arguments in the form of assignment statements are placed -in the environment for a command, not just those that precede -the command name. +
promptvars +
If set, prompt strings undergo +parameter expansion, command substitution, arithmetic +expansion, and quote removal after being expanded +as described below (see section 6.9 Controlling the Prompt). +This option is enabled by default.

-

-m -
Job control is enabled (see section 7. Job Control). +
restricted_shell +
The shell sets this option if it is started in restricted mode +(see section 6.10 The Restricted Shell). +The value may not be changed. +This is not reset when the startup files are executed, allowing +the startup files to discover whether or not a shell is restricted.

-

-n -
Read commands but do not execute them; this may be used to check a -script for syntax errors. -This option is ignored by interactive shells. +
shift_verbose +
If this is set, the shift +builtin prints an error message when the shift count exceeds the +number of positional parameters.

-

-o option-name -

- -Set the option corresponding to option-name: -

- -

-
allexport -
Same as -a. +
sourcepath +
If set, the source builtin uses the value of PATH +to find the directory containing the file supplied as an argument. +This option is enabled by default.

-

braceexpand -
Same as -B. +
xpg_echo +
If set, the echo builtin expands backslash-escape sequences +by default.

-

emacs -
Use an emacs-style line editing interface (see section 8. Command Line Editing). +

-

errexit -
Same as -e. -

+The return status when listing options is zero if all optnames +are enabled, non-zero otherwise. +When setting or unsetting options, the return status is zero unless an +optname is not a valid shell option. +

-

errtrace -
Same as -E. +
source +
+
 
source filename
+
A synonym for . (see section 4.1 Bourne Shell Builtins).

-

functrace -
Same as -T. +
type +
+
 
type [-afptP] [name ...]
+
For each name, indicate how it would be interpreted if used as a +command name.

-

hashall -
Same as -h. -

+If the `-t' option is used, type prints a single word +which is one of `alias', `function', `builtin', +`file' or `keyword', +if name is an alias, shell function, shell builtin, +disk file, or shell reserved word, respectively. +If the name is not found, then nothing is printed, and +type returns a failure status. +

-

histexpand -
Same as -H. -

+If the `-p' option is used, type either returns the name +of the disk file that would be executed, or nothing if `-t' +would not return `file'. +

-

history -
Enable command history, as described in 9.1 Bash History Facilities. -This option is on by default in interactive shells. -

+The `-P' option forces a path search for each name, even if +`-t' would not return `file'. +

-

ignoreeof -
An interactive shell will not exit upon reading EOF. -

+If a command is hashed, `-p' and `-P' print the hashed value, +not necessarily the file that appears first in $PATH. +

-

keyword -
Same as -k. -

+If the `-a' option is used, type returns all of the places +that contain an executable named file. +This includes aliases and functions, if and only if the `-p' option +is not also used. +

-

monitor -
Same as -m. +If the `-f' option is used, type does not attempt to find +shell functions, as with the command builtin. +

+ +The return status is zero if any of the names are found, non-zero +if none are found. +

+ +

typeset +
+
 
typeset [-afFrxi] [-p] [name[=value] ...]
+
The typeset command is supplied for compatibility with the Korn +shell; however, it has been deprecated in favor of the declare +builtin command.

-

noclobber -
Same as -C. +
ulimit +
+
 
ulimit [-acdefilmnpqrstuvxSH] [limit]
+
ulimit provides control over the resources available to processes +started by the shell, on systems that allow such control. If an +option is given, it is interpreted as follows: +
+
-S +
Change and report the soft limit associated with a resource.

-

noexec -
Same as -n. +
-H +
Change and report the hard limit associated with a resource.

-

noglob -
Same as -f. +
-a +
All current limits are reported.

-

nolog -
Currently ignored. +
-c +
The maximum size of core files created.

-

notify -
Same as -b. +
-d +
The maximum size of a process's data segment.

-

nounset -
Same as -u. +
-e +
The maximum scheduling priority ("nice").

-

onecmd -
Same as -t. +
-f +
The maximum size of files created by the shell.

-

physical -
Same as -P. +
-i +
The maximum number of pending signals.

-

pipefail -
If set, the return value of a pipeline is the value of the last -(rightmost) command to exit with a non-zero status, or zero if all -commands in the pipeline exit successfully. -This option is disabled by default. +
-l +
The maximum size that may be locked into memory.

-

posix -
Change the behavior of Bash where the default operation differs -from the POSIX standard to match the standard -(see section 6.11 Bash POSIX Mode). -This is intended to make Bash behave as a strict superset of that -standard. +
-m +
The maximum resident set size.

-

privileged -
Same as -p. +
-n +
The maximum number of open file descriptors.

-

verbose -
Same as -v. +
-p +
The pipe buffer size.

-

vi -
Use a vi-style line editing interface. +
-q +
The maximum number of bytes in POSIX message queues.

-

xtrace -
Same as -x. -
+
-r +
The maximum real-time scheduling priority.

-

-p -
Turn on privileged mode. -In this mode, the $BASH_ENV and $ENV files are not -processed, shell functions are not inherited from the environment, -and the SHELLOPTS variable, if it appears in the environment, -is ignored. -If the shell is started with the effective user (group) id not equal to the -real user (group) id, and the -p option is not supplied, these actions -are taken and the effective user id is set to the real user id. -If the -p option is supplied at startup, the effective user id is -not reset. -Turning this option off causes the effective user -and group ids to be set to the real user and group ids. +
-s +
The maximum stack size.

-t -
Exit after reading and executing one command. +
The maximum amount of cpu time in seconds.

-u -
Treat unset variables as an error when performing parameter expansion. -An error message will be written to the standard error, and a non-interactive -shell will exit. +
The maximum number of processes available to a single user.

-v -
Print shell input lines as they are read. +
The maximum amount of virtual memory available to the process.

-x -
Print a trace of simple commands, for commands, case -commands, select commands, and arithmetic for commands -and their arguments or associated word lists after they are -expanded and before they are executed. The value of the PS4 -variable is expanded and the resultant value is printed before -the command and its expanded arguments. -

- -

-B -
The shell will perform brace expansion (see section 3.5.1 Brace Expansion). -This option is on by default. -

- -

-C -
Prevent output redirection using `>', `>&', and `<>' -from overwriting existing files. -

- -

-E -
If set, any trap on ERR is inherited by shell functions, command -substitutions, and commands executed in a subshell environment. -The ERR trap is normally not inherited in such cases. -

- -

-H -
Enable `!' style history substitution (see section 9.3 History Expansion). -This option is on by default for interactive shells. -

- -

-P -
If set, do not follow symbolic links when performing commands such as -cd which change the current directory. The physical directory -is used instead. By default, Bash follows -the logical chain of directories when performing commands -which change the current directory. -

- -For example, if `/usr/sys' is a symbolic link to `/usr/local/sys' -then: -
 
$ cd /usr/sys; echo $PWD
-/usr/sys
-$ cd ..; pwd
-/usr
-

- -If set -P is on, then: -
 
$ cd /usr/sys; echo $PWD
-/usr/local/sys
-$ cd ..; pwd
-/usr/local
-

- -

-T -
If set, any trap on DEBUG and RETURN are inherited by -shell functions, command substitutions, and commands executed -in a subshell environment. -The DEBUG and RETURN traps are normally not inherited -in such cases. -

- -

-- -
If no arguments follow this option, then the positional parameters are -unset. Otherwise, the positional parameters are set to the -arguments, even if some of them begin with a `-'. +
The maximum number of file locks.

-

- -
Signal the end of options, cause all remaining arguments -to be assigned to the positional parameters. The `-x' -and `-v' options are turned off. -If there are no arguments, the positional parameters remain unchanged.

-Using `+' rather than `-' causes these options to be -turned off. The options can also be used upon invocation of the -shell. The current set of options may be found in $-. +If limit is given, it is the new value of the specified resource; +the special limit values hard, soft, and +unlimited stand for the current hard limit, the current soft limit, +and no limit, respectively. +Otherwise, the current value of the soft limit for the specified resource +is printed, unless the `-H' option is supplied. +When setting new limits, if neither `-H' nor `-S' is supplied, +both the hard and soft limits are set. +If no option is given, then `-f' is assumed. Values are in 1024-byte +increments, except for `-t', which is in seconds, `-p', +which is in units of 512-byte blocks, and `-n' and `-u', which +are unscaled values.

-The remaining N arguments are positional parameters and are -assigned, in order, to $1, $2, ... $N. -The special parameter # is set to N. +The return status is zero unless an invalid option or argument is supplied, +or an error occurs while setting a new limit. +

+ +

unalias +
+
 
unalias [-a] [name ... ]
+

+ +Remove each name from the list of aliases. If `-a' is +supplied, all aliases are removed. +Aliases are described in 6.6 Aliases.

-The return status is always zero unless an invalid option is supplied.

- +


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]
-

4.3.2 The Shopt Builtin

- +

4.3 The Set Builtin

+

-This builtin allows you to change additional shell optional behavior. +This builtin is so complicated that it deserves its own section.

- -
shopt +
set
-
 
shopt [-pqsu] [-o] [optname ...]
-
Toggle the values of variables controlling optional shell behavior. -With no options, or with the `-p' option, a list of all settable -options is displayed, with an indication of whether or not each is set. -The `-p' option causes output to be displayed in a form that -may be reused as input. -Other options have the following meanings: -

+
 
set [--abefhkmnptuvxBCHP] [-o option] [argument ...]
+

+ +If no options or arguments are supplied, set displays the names +and values of all shell variables and functions, sorted according to the +current locale, in a format that may 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. +

+ +When options are supplied, they set or unset shell attributes. +Options, if specified, have the following meanings: +

-
-s -
Enable (set) each optname. +
-a +
Mark variables and function which are modified or created for export +to the environment of subsequent commands.

-

-u -
Disable (unset) each optname. +
-b +
Cause the status of terminated background jobs to be reported +immediately, rather than before printing the next primary prompt. +

+ +

-e +
Exit immediately if a simple command (see section 3.2.1 Simple Commands) exits +with a non-zero status, unless the command that fails is part of the +command list immediately following a while or until +keyword, part of the test in an if statement, +part of a && or || list, or if the command's return +status is being inverted using !. +A trap on ERR, if set, is executed before the shell exits. +

+ +

-f +
Disable file name generation (globbing). +

+ +

-h +
Locate and remember (hash) commands as they are looked up for execution. +This option is enabled by default.

-

-q -
Suppresses normal output; the return status -indicates whether the optname is set or unset. -If multiple optname arguments are given with `-q', -the return status is zero if all optnames are enabled; -non-zero otherwise. +
-k +
All arguments in the form of assignment statements are placed +in the environment for a command, not just those that precede +the command name.

-

-o -
Restricts the values of -optname to be those defined for the `-o' option to the -set builtin (see section 4.3.1 The Set Builtin). -
+
-m +
Job control is enabled (see section 7. Job Control).

-If either `-s' or `-u' -is used with no optname arguments, the display is limited to -those options which are set or unset, respectively. -

+

-n +
Read commands but do not execute them; this may be used to check a +script for syntax errors. +This option is ignored by interactive shells. +

-Unless otherwise noted, the shopt options are disabled (off) -by default. -

+

-o option-name +

-The return status when listing options is zero if all optnames -are enabled, non-zero otherwise. When setting or unsetting options, -the return status is zero unless an optname is not a valid shell -option. +Set the option corresponding to option-name:

-The list of shopt options is:

- -
autocd -
If set, a command name that is the name of a directory is executed as if -it were the argument to the cd command. -This option is only used by interactive shells. -

- -

cdable_vars -
If this is set, an argument to the cd builtin command that -is not a directory is assumed to be the name of a variable whose -value is the directory to change to. -

- -

cdspell -
If set, minor errors in the spelling of a directory component in a -cd command will be corrected. -The errors checked for are transposed characters, -a missing character, and a character too many. -If a correction is found, the corrected path is printed, -and the command proceeds. -This option is only used by interactive shells. +
allexport +
Same as -a.

-

checkhash -
If this is set, Bash checks that a command found in the hash -table exists before trying to execute it. If a hashed command no -longer exists, a normal path search is performed. +
braceexpand +
Same as -B.

-

checkjobs -
If set, Bash lists the status of any stopped and running jobs before -exiting an interactive shell. If any jobs are running, this causes -the exit to be deferred until a second exit is attempted without an -intervening command (see section 7. Job Control). -The shell always postpones exiting if any jobs are stopped. +
emacs +
Use an emacs-style line editing interface (see section 8. Command Line Editing).

-

checkwinsize -
If set, Bash checks the window size after each command -and, if necessary, updates the values of -LINES and COLUMNS. +
errexit +
Same as -e.

-

cmdhist -
If set, Bash -attempts to save all lines of a multiple-line -command in the same history entry. This allows -easy re-editing of multi-line commands. +
errtrace +
Same as -E.

-

dotglob -
If set, Bash includes filenames beginning with a `.' in -the results of filename expansion. +
functrace +
Same as -T.

-

execfail -
If this is set, a non-interactive shell will not exit if -it cannot execute the file specified as an argument to the exec -builtin command. An interactive shell does not exit if exec -fails. +
hashall +
Same as -h.

-

expand_aliases -
If set, aliases are expanded as described below under Aliases, -6.6 Aliases. -This option is enabled by default for interactive shells. +
histexpand +
Same as -H.

-

extdebug -
If set, behavior intended for use by debuggers is enabled: +
history +
Enable command history, as described in 9.1 Bash History Facilities. +This option is on by default in interactive shells.

-

    -
  1. -The `-F' option to the declare builtin (see section 4.2 Bash Builtin Commands) -displays the source file name and line number corresponding to each function -name supplied as an argument. +
    ignoreeof +
    An interactive shell will not exit upon reading EOF.

    -

  2. -If the command run by the DEBUG trap returns a non-zero value, the -next command is skipped and not executed. +
    keyword +
    Same as -k.

    -

  3. -If the command run by the DEBUG trap returns a value of 2, and the -shell is executing in a subroutine (a shell function or a shell script -executed by the . or source builtins), a call to -return is simulated. +
    monitor +
    Same as -m.

    -

  4. -BASH_ARGC and BASH_ARGV are updated as described in their -descriptions (see section 5.2 Bash Variables). +
    noclobber +
    Same as -C.

    -

  5. -Function tracing is enabled: command substitution, shell functions, and -subshells invoked with ( command ) inherit the -DEBUG and RETURN traps. +
    noexec +
    Same as -n.

    -

  6. -Error tracing is enabled: command substitution, shell functions, and -subshells invoked with ( command ) inherit the -ERROR trap. -
+
noglob +
Same as -f.

-

extglob -
If set, the extended pattern matching features described above -(see section 3.5.8.1 Pattern Matching) are enabled. +
nolog +
Currently ignored.

-

extquote -
If set, $'string' and $"string" quoting is -performed within ${parameter} expansions -enclosed in double quotes. This option is enabled by default. +
notify +
Same as -b.

-

failglob -
If set, patterns which fail to match filenames during pathname expansion -result in an expansion error. +
nounset +
Same as -u.

-

force_fignore -
If set, the suffixes specified by the FIGNORE shell variable -cause words to be ignored when performing word completion even if -the ignored words are the only possible completions. -See section 5.2 Bash Variables, for a description of FIGNORE. -This option is enabled by default. +
onecmd +
Same as -t.

-

gnu_errfmt -
If set, shell error messages are written in the standard GNU error -message format. +
physical +
Same as -P.

-

histappend -
If set, the history list is appended to the file named by the value -of the HISTFILE -variable when the shell exits, rather than overwriting the file. +
pipefail +
If set, the return value of a pipeline is the value of the last +(rightmost) command to exit with a non-zero status, or zero if all +commands in the pipeline exit successfully. +This option is disabled by default.

-

histreedit -
If set, and Readline -is being used, a user is given the opportunity to re-edit a -failed history substitution. +
posix +
Change the behavior of Bash where the default operation differs +from the POSIX standard to match the standard +(see section 6.11 Bash POSIX Mode). +This is intended to make Bash behave as a strict superset of that +standard.

-

histverify -
If set, and Readline -is being used, the results of history substitution are not immediately -passed to the shell parser. Instead, the resulting line is loaded into -the Readline editing buffer, allowing further modification. +
privileged +
Same as -p.

-

hostcomplete -
If set, and Readline is being used, Bash will attempt to perform -hostname completion when a word containing a `@' is being -completed (see section 8.4.6 Letting Readline Type For You). This option is enabled -by default. +
verbose +
Same as -v.

-

huponexit -
If set, Bash will send SIGHUP to all jobs when an interactive -login shell exits (see section 3.7.6 Signals). +
vi +
Use a vi-style line editing interface.

-

interactive_comments -
Allow a word beginning with `#' -to cause that word and all remaining characters on that -line to be ignored in an interactive shell. -This option is enabled by default. +
xtrace +
Same as -x. +

-

lithist -
If enabled, and the cmdhist -option is enabled, multi-line commands are saved to the history with -embedded newlines rather than using semicolon separators where possible. +
-p +
Turn on privileged mode. +In this mode, the $BASH_ENV and $ENV files are not +processed, shell functions are not inherited from the environment, +and the SHELLOPTS variable, if it appears in the environment, +is ignored. +If the shell is started with the effective user (group) id not equal to the +real user (group) id, and the -p option is not supplied, these actions +are taken and the effective user id is set to the real user id. +If the -p option is supplied at startup, the effective user id is +not reset. +Turning this option off causes the effective user +and group ids to be set to the real user and group ids.

-

login_shell -
The shell sets this option if it is started as a login shell -(see section 6.1 Invoking Bash). -The value may not be changed. +
-t +
Exit after reading and executing one command.

-

mailwarn -
If set, and a file that Bash is checking for mail has been -accessed since the last time it was checked, the message -"The mail in mailfile has been read" is displayed. +
-u +
Treat unset variables as an error when performing parameter expansion. +An error message will be written to the standard error, and a non-interactive +shell will exit.

-

no_empty_cmd_completion -
If set, and Readline is being used, Bash will not attempt to search -the PATH for possible completions when completion is attempted -on an empty line. +
-v +
Print shell input lines as they are read.

-

nocaseglob -
If set, Bash matches filenames in a case-insensitive fashion when -performing filename expansion. +
-x +
Print a trace of simple commands, for commands, case +commands, select commands, and arithmetic for commands +and their arguments or associated word lists after they are +expanded and before they are executed. The value of the PS4 +variable is expanded and the resultant value is printed before +the command and its expanded arguments.

-

nocasematch -
If set, Bash matches patterns in a case-insensitive fashion when -performing matching while executing case or [[ -conditional commands. +
-B +
The shell will perform brace expansion (see section 3.5.1 Brace Expansion). +This option is on by default.

-

nullglob -
If set, Bash allows filename patterns which match no -files to expand to a null string, rather than themselves. +
-C +
Prevent output redirection using `>', `>&', and `<>' +from overwriting existing files.

-

progcomp -
If set, the programmable completion facilities -(see section 8.6 Programmable Completion) are enabled. -This option is enabled by default. +
-E +
If set, any trap on ERR is inherited by shell functions, command +substitutions, and commands executed in a subshell environment. +The ERR trap is normally not inherited in such cases.

-

promptvars -
If set, prompt strings undergo -parameter expansion, command substitution, arithmetic -expansion, and quote removal after being expanded -as described below (see section 6.9 Controlling the Prompt). -This option is enabled by default. +
-H +
Enable `!' style history substitution (see section 9.3 History Expansion). +This option is on by default for interactive shells.

-

restricted_shell -
The shell sets this option if it is started in restricted mode -(see section 6.10 The Restricted Shell). -The value may not be changed. -This is not reset when the startup files are executed, allowing -the startup files to discover whether or not a shell is restricted. +
-P +
If set, do not follow symbolic links when performing commands such as +cd which change the current directory. The physical directory +is used instead. By default, Bash follows +the logical chain of directories when performing commands +which change the current directory.

-

shift_verbose -
If this is set, the shift -builtin prints an error message when the shift count exceeds the -number of positional parameters. -

+For example, if `/usr/sys' is a symbolic link to `/usr/local/sys' +then: +
 
$ cd /usr/sys; echo $PWD
+/usr/sys
+$ cd ..; pwd
+/usr
+

-

sourcepath -
If set, the source builtin uses the value of PATH -to find the directory containing the file supplied as an argument. -This option is enabled by default. +If set -P is on, then: +
 
$ cd /usr/sys; echo $PWD
+/usr/local/sys
+$ cd ..; pwd
+/usr/local
+

+ +

-T +
If set, any trap on DEBUG and RETURN are inherited by +shell functions, command substitutions, and commands executed +in a subshell environment. +The DEBUG and RETURN traps are normally not inherited +in such cases.

-

xpg_echo -
If set, the echo builtin expands backslash-escape sequences -by default. +
-- +
If no arguments follow this option, then the positional parameters are +unset. Otherwise, the positional parameters are set to the +arguments, even if some of them begin with a `-'.

+

- +
Signal the end of options, cause all remaining arguments +to be assigned to the positional parameters. The `-x' +and `-v' options are turned off. +If there are no arguments, the positional parameters remain unchanged.

-The return status when listing options is zero if all optnames -are enabled, non-zero otherwise. -When setting or unsetting options, the return status is zero unless an -optname is not a valid shell option. +Using `+' rather than `-' causes these options to be +turned off. The options can also be used upon invocation of the +shell. The current set of options may be found in $-. +

+ +The remaining N arguments are positional parameters and are +assigned, in order, to $1, $2, ... $N. +The special parameter # is set to N.

+The return status is always zero unless an invalid option is supplied.


- + - - + + - + - +
[ < ][ > ]
[ < ][ > ]   [ << ] [ Up ][ >> ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

4.4 Special Builtins

- +

For historical reasons, the POSIX standard has classified @@ -5489,7 +5420,7 @@ environment after the command completes. When Bash is not executing in POSIX mode, these builtins behave no differently than the rest of the Bash builtin commands. -The Bash POSIX mode is described in 6.11 Bash POSIX Mode. +The Bash POSIX mode is described in 6.11 Bash POSIX Mode.

These are the POSIX special builtins: @@ -5499,26 +5430,26 @@ shift trap unset


- + - - - + + + - + - +
[ < ][ > ]   [ << ]
[ < ][ > ]   [ << ] [ Up ][ >> ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

5. Shell Variables

- +

- - +
5.1 Bourne Shell Variables  Variables which Bash uses in the same way +
5.1 Bourne Shell Variables  Variables which Bash uses in the same way as the Bourne Shell.
5.2 Bash Variables  List of variables that exist in Bash.
5.2 Bash Variables  List of variables that exist in Bash.

@@ -5528,20 +5459,20 @@ Bash automatically assigns default values to a number of variables.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

5.1 Bourne Shell Variables

- +

Bash uses certain shell variables in the same way as the Bourne shell. @@ -5620,7 +5551,7 @@ or trailing colon.

PS1
The primary prompt string. The default value is `\s-\v\$ '. -See section 6.9 Controlling the Prompt, for the complete list of escape +See section 6.9 Controlling the Prompt, for the complete list of escape sequences that are expanded before PS1 is displayed.

@@ -5635,20 +5566,20 @@ The secondary prompt string. The default value is `> '.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

5.2 Bash Variables

- +

These variables are set or used by Bash, but other shells @@ -5657,7 +5588,7 @@ do not normally treat them specially. A few variables used by Bash are described in different chapters: variables for controlling the job control facilities -(see section 7.3 Job Control Variables). +(see section 7.3 Job Control Variables).

@@ -5669,16 +5600,8 @@ The full pathname used to execute the current instance of Bash.

-

BASHPID -
-Expands to the process id of the current Bash process. -This differs from $$ under certain circumstances, such as subshells -that do not require Bash to be re-initialized. -

- -

BASH_ARGC -
+
An array variable whose values are the number of parameters in each frame of the current bash execution call stack. The number of parameters to the current subroutine (shell function or script executed @@ -5686,50 +5609,50 @@ with . or source) is at the top of the stack. When a subroutine is executed, the number of parameters passed is pushed onto BASH_ARGC. The shell sets BASH_ARGC only when in extended debugging mode -(see 4.3.2 The Shopt Builtin +(see 4.2 Bash Builtin Commands for a description of the extdebug option to the shopt builtin).

- +

BASH_ARGV -
+
An array variable containing all of the parameters in the current bash execution call stack. The final parameter of the last subroutine call is at the top of the stack; the first parameter of the initial call is at the bottom. When a subroutine is executed, the parameters supplied are pushed onto BASH_ARGV. The shell sets BASH_ARGV only when in extended debugging mode -(see 4.3.2 The Shopt Builtin +(see 4.2 Bash Builtin Commands for a description of the extdebug option to the shopt builtin).

- +

BASH_COMMAND -
+
The command currently being executed or about to be executed, unless the shell is executing a command as the result of a trap, in which case it is the command executing at the time of the trap.

- +

BASH_ENV -
+
If this variable is set when Bash is invoked to execute a shell script, its value is expanded and used as the name of a startup file -to read before executing the script. See section 6.2 Bash Startup Files. +to read before executing the script. See section 6.2 Bash Startup Files.

- +

BASH_EXECUTION_STRING -
+
The command argument to the `-c' invocation option.

- +

BASH_LINENO -
+
An array variable whose members are the line numbers in source files corresponding to each member of FUNCNAME. ${BASH_LINENO[$i]} is the line number in the source file where @@ -5738,9 +5661,9 @@ The corresponding source file name is ${BASH_SOURCE[$i]}. Use LINENO to obtain the current line number.

- +

BASH_REMATCH -
+
An array variable whose members are assigned by the `=~' binary operator to the [[ conditional command (see section 3.2.4.2 Conditional Constructs). @@ -5751,24 +5674,24 @@ string matching the nth parenthesized subexpression. This variable is read-only.

- +

BASH_SOURCE -
+
An array variable whose members are the source filenames corresponding to the elements in the FUNCNAME array variable.

- +

BASH_SUBSHELL -
+
Incremented by one each time a subshell or subshell environment is spawned. The initial value is 0.

- +

BASH_VERSINFO -
-A readonly array variable (see section 6.7 Arrays) +
+A readonly array variable (see section 6.7 Arrays) whose members hold version information for this instance of Bash. The values assigned to the array members are as follows:

@@ -5802,104 +5725,79 @@ The values assigned to the array members are as follows:

- +

BASH_VERSION -
+
The version number of the current instance of Bash.

- +

COLUMNS -
+
Used by the select builtin command to determine the terminal width when printing selection lists. Automatically set upon receipt of a SIGWINCH.

- +

COMP_CWORD -
+
An index into ${COMP_WORDS} of the word containing the current cursor position. This variable is available only in shell functions invoked by the -programmable completion facilities (see section 8.6 Programmable Completion). +programmable completion facilities (see section 8.6 Programmable Completion).

- +

COMP_LINE -
+
The current command line. This variable is available only in shell functions and external commands invoked by the -programmable completion facilities (see section 8.6 Programmable Completion). +programmable completion facilities (see section 8.6 Programmable Completion).

- +

COMP_POINT -
+
The index of the current cursor position relative to the beginning 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 ${#COMP_LINE}. This variable is available only in shell functions and external commands invoked by the -programmable completion facilities (see section 8.6 Programmable Completion). -

- - -

COMP_TYPE -
-Set to an integer value corresponding to the type of completion attempted -that caused a completion function to be called: -TAB, for normal completion, -`?', for listing completions after successive tabs, -`!', for listing alternatives on partial word completion, -`@', 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 -programmable completion facilities (see section 8.6 Programmable Completion). -

- - -

COMP_KEY -
-The key (or final key of a key sequence) used to invoke the current -completion function. +programmable completion facilities (see section 8.6 Programmable Completion).

- +

COMP_WORDBREAKS -
+
The set of characters that the Readline library treats as word separators when performing word completion. If COMP_WORDBREAKS is unset, it loses its special properties, even if it is subsequently reset.

- +

COMP_WORDS -
+
An array variable consisting of the individual words in the current command line. -The words are split on shell metacharacters as the shell parser would -separate them. This variable is available only in shell functions invoked by the -programmable completion facilities (see section 8.6 Programmable Completion). +programmable completion facilities (see section 8.6 Programmable Completion).

- +

COMPREPLY -
+
An array variable from which Bash reads the possible completions generated by a shell function invoked by the programmable completion -facility (see section 8.6 Programmable Completion). +facility (see section 8.6 Programmable Completion).

- +

DIRSTACK -
+
An array variable containing the current contents of the directory stack. Directories appear in the stack in the order they are displayed by the dirs builtin. @@ -5911,31 +5809,31 @@ If DIRSTACK is unset, it loses its special properties, even if it is subsequently reset.

- +

EMACS -
+
If Bash 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.

- +

EUID -
+
The numeric effective user id of the current user. This variable is readonly.

- +

FCEDIT -
+
The editor used as a default by the `-e' option to the fc builtin command.

- +

FIGNORE -
+
A colon-separated list of suffixes to ignore when performing filename completion. A file name whose suffix matches one of the entries in @@ -5944,23 +5842,23 @@ is excluded from the list of matched file names. A sample value is `.o:~'

- +

FUNCNAME -
+
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 bottom-most element is "main". +The bottom-most element is "main". This variable exists only when a shell function is executing. Assignments to FUNCNAME have no effect and return an error status. If FUNCNAME is unset, it loses its special properties, even if it is subsequently reset.

- +

GLOBIGNORE -
+
A colon-separated list of patterns defining the set of filenames to be ignored by filename expansion. If a filename matched by a filename expansion pattern also matches one @@ -5968,9 +5866,9 @@ of the patterns in GLOBIGNORE, it is removed from the list of matches.

- +

GROUPS -
+
An array variable containing the list of groups of which the current user is a member. Assignments to GROUPS have no effect and return an error status. @@ -5978,11 +5876,11 @@ If GROUPS is unset, it loses its special properties, even if it is subsequently reset.

- +

histchars -
+
Up to three characters which control history expansion, quick -substitution, and tokenization (see section 9.3 History Expansion). +substitution, and tokenization (see section 9.3 History Expansion). The first character is the history expansion character, that is, the character which signifies the start of a history expansion, normally `!'. The second character is the @@ -5995,17 +5893,17 @@ remaining words on the line. It does not necessarily cause the shell parser to treat the rest of the line as a comment.

- +

HISTCMD -
+
The history number, or index in the history list, of the current command. If HISTCMD is unset, it loses its special properties, even if it is subsequently reset.

- +

HISTCONTROL -
+
A colon-separated list of values controlling how commands are saved on the history list. If the list of values includes `ignorespace', lines which begin @@ -6026,28 +5924,27 @@ not tested, and are added to the history regardless of the value of HISTCONTROL.

- +

HISTFILE -
+
The name of the file to which the command history is saved. The default value is `~/.bash_history'.

- +

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. +necessary, to contain no more than that number of lines. The history file is also truncated to this size after writing it when an interactive shell exits. The default value is 500.

- +

HISTIGNORE -
+
A colon-separated list of patterns used to decide which command lines should be saved on the history list. Each pattern is anchored at the beginning of the line and must match the complete @@ -6069,28 +5966,26 @@ Combining these two patterns, separating them with a colon, provides the functionality of ignoreboth.

- +

HISTSIZE -
+
The maximum number of commands to remember on the history list. The default value is 500.

- +

HISTTIMEFORMAT -
+
If this variable is set and not null, its value is used as a format string for strftime to print the time stamp associated with each history entry displayed by the history builtin. If this variable is set, time stamps are written to the history file so they may be preserved across shell sessions. -This uses the history comment character to distinguish timestamps from -other history lines.

- +

HOSTFILE -
+
Contains the name of a file in the same format as `/etc/hosts' that should be read when the shell needs to complete a hostname. The list of possible hostname completions may be changed while the shell @@ -6103,21 +5998,21 @@ If HOSTFILE is set, but has no value, Bash attempts to read When HOSTFILE is unset, the hostname list is cleared.

- +

HOSTNAME -
+
The name of the current host.

- +

HOSTTYPE -
+
A string describing the machine Bash is running on.

- +

IGNOREEOF -
+
Controls the action of the shell on receipt of an EOF character as the sole input. If set, the value denotes the number of consecutive EOF characters that can be read as the @@ -6128,30 +6023,30 @@ If the variable does not exist, then EOF signifies the end of input to the shell. This is only in effect for interactive shells.

- +

INPUTRC -
+
The name of the Readline initialization file, overriding the default of `~/.inputrc'.

- +

LANG -
+
Used to determine the locale category for any category not specifically selected with a variable starting with LC_.

- +

LC_ALL -
+
This variable overrides the value of LANG and any other LC_ variable specifying a locale category.

- +

LC_COLLATE -
+
This variable determines the collation order used when sorting the results of filename expansion, and determines the behavior of range expressions, equivalence classes, @@ -6159,51 +6054,51 @@ and collating sequences within filename expansion and pattern matching (see section 3.5.8 Filename Expansion).

- +

LC_CTYPE -
+
This variable determines the interpretation of characters and the behavior of character classes within filename expansion and pattern matching (see section 3.5.8 Filename Expansion).

- +

LC_MESSAGES -
+
This variable determines the locale used to translate double-quoted strings preceded by a `$' (see section 3.1.2.5 Locale-Specific Translation).

- +

LC_NUMERIC -
+
This variable determines the locale category used for number formatting.

- +

LINENO -
+
The line number in the script or shell function currently executing.

- +

LINES -
+
Used by the select builtin command to determine the column length for printing selection lists. Automatically set upon receipt of a SIGWINCH.

- +

MACHTYPE -
+
A string that fully describes the system type on which Bash is executing, in the standard GNU cpu-company-system format.

- +

MAILCHECK -
+
How often (in seconds) that the shell should check for mail in the files specified in the MAILPATH or MAIL variables. The default is 60 seconds. When it is time to check @@ -6212,39 +6107,39 @@ 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.

- +

OLDPWD -
+
The previous working directory as set by the cd builtin.

- +

OPTERR -
+
If set to the value 1, Bash displays error messages generated by the getopts builtin command.

- +

OSTYPE -
+
A string describing the operating system Bash is running on.

- +

PIPESTATUS -
-An array variable (see section 6.7 Arrays) +
+An array variable (see section 6.7 Arrays) containing a list of exit status values from the processes in the most-recently-executed foreground pipeline (which may contain only a single command).

- +

POSIXLY_CORRECT -
+
If this variable is in the environment when bash starts, the shell -enters POSIX mode (see section 6.11 Bash POSIX Mode) before reading the +enters POSIX mode (see section 6.11 Bash POSIX Mode) before reading the startup files, as if the `--posix' invocation option had been supplied. If it is set while the shell is running, bash enables POSIX mode, as if the command @@ -6252,61 +6147,61 @@ as if the command had been executed.

- +

PPID -
+
The process ID of the shell's parent process. This variable is readonly.

- +

PROMPT_COMMAND -
+
If set, the value is interpreted as a command to execute before the printing of each primary prompt ($PS1).

- +

PS3 -
+
The value of this variable is used as the prompt for the select command. If this variable is not set, the select command prompts with `#? '

- +

PS4 -
+
The value is the prompt printed before the command line is echoed -when the `-x' option is set (see section 4.3.1 The Set Builtin). +when the `-x' option is set (see section 4.3 The Set Builtin). The first character of PS4 is replicated multiple times, as necessary, to indicate multiple levels of indirection. The default is `+ '.

- +

PWD -
+
The current working directory as set by the cd builtin.

- +

RANDOM -
+
Each time this parameter is referenced, a random integer between 0 and 32767 is generated. Assigning a value to this variable seeds the random number generator.

- +

REPLY -
+
The default variable for the read builtin.

- +

SECONDS -
+
This variable expands to the number of seconds since the shell was started. Assignment to this variable resets the count to the value assigned, and the expanded value @@ -6314,20 +6209,20 @@ becomes the value assigned plus the number of seconds since the assignment.

- +

SHELL -
+
The full pathname to the shell is kept in this environment variable. If it is not set when the shell starts, Bash assigns to it the full pathname of the current user's login shell.

- +

SHELLOPTS -
+
A colon-separated list of enabled shell options. Each word in the list is a valid argument for the `-o' option to the -set builtin command (see section 4.3.1 The Set Builtin). +set builtin command (see section 4.3 The Set Builtin). The options appearing in SHELLOPTS are those reported as `on' by `set -o'. If this variable is in the environment when Bash @@ -6335,16 +6230,16 @@ starts up, each shell option in the list will be enabled before reading any startup files. This variable is readonly.

- +

SHLVL -
+
Incremented by one each time a new instance of Bash is started. This is intended to be a count of how deeply your Bash shells are nested.

- +

TIMEFORMAT -
+
The value of this parameter is used as a format string specifying how the timing information for pipelines prefixed with the time reserved word should be displayed. @@ -6397,9 +6292,9 @@ If this variable is not set, Bash acts as if it had the value A trailing newline is added when the format string is displayed.

- +

TMOUT -
+
If set to a value greater than zero, TMOUT is treated as the default timeout for the read builtin (see section 4.2 Bash Builtin Commands). The select command (see section 3.2.4.2 Conditional Constructs) terminates @@ -6407,23 +6302,23 @@ if input does not arrive after TMOUT seconds when input is coming from a terminal.

-In an interactive shell, the value is interpreted as +In an interative shell, the value is interpreted as the number of seconds to wait for input after issuing the primary prompt when the shell is interactive. Bash terminates after that number of seconds if input does not arrive.

- +

TMPDIR -
+
If set, Bash uses its value as the name of a directory in which Bash creates temporary files for the shell's use.

- +

UID -
+
The numeric real user id of the current user. This variable is readonly.

@@ -6432,59 +6327,59 @@ The numeric real user id of the current user. This variable is readonly.


- + - - - + + + - + - +
[ < ][ > ]   [ << ]
[ < ][ > ]   [ << ] [ Up ][ >> ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

6. Bash Features

- +

This section describes features unique to Bash.

- - - - + + - - - - - - - + + + + + +
6.1 Invoking Bash  Command line options that you can give +
6.1 Invoking Bash  Command line options that you can give to Bash.
6.2 Bash Startup Files  When and how Bash executes scripts.
6.3 Interactive Shells  What an interactive shell is.
6.4 Bash Conditional Expressions  Primitives used in composing expressions for +
6.2 Bash Startup Files  When and how Bash executes scripts.
6.3 Interactive Shells  What an interactive shell is.
6.4 Bash Conditional Expressions  Primitives used in composing expressions for the test builtin.
6.5 Shell Arithmetic  Arithmetic on shell variables.
6.6 Aliases  Substituting one command for another.
6.7 Arrays  Array Variables.
6.8 The Directory Stack  History of visited directories.
6.9 Controlling the Prompt  Controlling the PS1 string.
6.10 The Restricted Shell  A more controlled mode of shell execution.
6.11 Bash POSIX Mode  Making Bash behave more closely to what +
6.5 Shell Arithmetic  Arithmetic on shell variables.
6.6 Aliases  Substituting one command for another.
6.7 Arrays  Array Variables.
6.8 The Directory Stack  History of visited directories.
6.9 Controlling the Prompt  Controlling the PS1 string.
6.10 The Restricted Shell  A more controlled mode of shell execution.
6.11 Bash POSIX Mode  Making Bash behave more closely to what the POSIX standard specifies.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

6.1 Invoking Bash

- +

 
bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o option] [-O shopt_option] [argument ...]
@@ -6493,7 +6388,7 @@ bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o option] [-O shopt_
 

In addition to the single-character shell command-line options -(see section 4.3.1 The Set Builtin), there are several multi-character +(see section 4.3 The Set Builtin), there are several multi-character options that you can use. These options must appear on the command line before the single-character options to be recognized.

@@ -6501,10 +6396,10 @@ line before the single-character options to be recognized.

--debugger
Arrange for the debugger profile to be executed before the shell -starts. Turns on extended debugging mode (see 4.3.2 The Shopt Builtin +starts. Turns on extended debugging mode (see 4.2 Bash Builtin Commands for a description of the extdebug option to the shopt builtin) and shell function tracing -(see 4.3.1 The Set Builtin for a description of the -o functrace +(see 4.3 The Set Builtin for a description of the -o functrace option).

@@ -6520,7 +6415,7 @@ Equivalent to `-D' except for the output format.

--help -
Display a usage message on standard output and exit successfully. +
Display a usage message on standard output and exit sucessfully.

--init-file filename @@ -6534,7 +6429,7 @@ in an interactive shell.

--noediting -
Do not use the GNU Readline library (see section 8. Command Line Editing) +
Do not use the GNU Readline library (see section 8. Command Line Editing) to read command lines when the shell is interactive.

@@ -6555,12 +6450,12 @@ invoked as sh.

Change the behavior of Bash where the default operation differs from the POSIX standard to match the standard. This is intended to make Bash behave as a strict superset of that -standard. See section 6.11 Bash POSIX Mode, for a description of the Bash +standard. See section 6.11 Bash POSIX Mode, for a description of the Bash POSIX mode.

--restricted -
Make the shell a restricted shell (see section 6.10 The Restricted Shell). +
Make the shell a restricted shell (see section 6.10 The Restricted Shell).

--verbose @@ -6588,7 +6483,7 @@ positional parameters, starting with $0.
-i
Force the shell to run interactively. Interactive shells are -described in 6.3 Interactive Shells. +described in 6.3 Interactive Shells.

-l @@ -6599,12 +6494,12 @@ When the shell is not interactive, the login shell startup files will be executed. `exec bash -l' or `exec bash --login' will replace the current shell with a Bash login shell. -See section 6.2 Bash Startup Files, for a description of the special behavior +See section 6.2 Bash Startup Files, for a description of the special behavior of a login shell.

-r -
Make the shell a restricted shell (see section 6.10 The Restricted Shell). +
Make the shell a restricted shell (see section 6.10 The Restricted Shell).

-s @@ -6625,7 +6520,7 @@ This implies the `-n' option; no commands will be executed.
[-+]O [shopt_option]
shopt_option is one of the shell options accepted by the -shopt builtin (see section 4.3.2 The Shopt Builtin). +shopt builtin (see section 4. Shell Builtin Commands). If shopt_option is present, `-O' sets the value of that option; `+O' unsets it. If shopt_option is not supplied, the names and values of the shell @@ -6643,17 +6538,17 @@ Any arguments after the -- are treated as filenames and arguments.

- + A login shell is one whose first character of argument zero is `-', or one invoked with the `--login' option.

- + An interactive shell is one started without non-option arguments, unless `-s' is specified, without specifying the `-c' option, and whose input and output are both connected to terminals (as determined by isatty(3)), or one -started with the `-i' option. See section 6.3 Interactive Shells, for more +started with the `-i' option. See section 6.3 Interactive Shells, for more information.

@@ -6671,34 +6566,34 @@ in the script. If no commands are executed, the exit status is 0.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

6.2 Bash Startup Files

- +

-This section describes how Bash executes its startup files. +This section describs how Bash executes its startup files. If any of the files exist but cannot be read, Bash reports an error. Tildes are expanded in file names as described above under Tilde Expansion (see section 3.5.2 Tilde Expansion).

-Interactive shells are described in 6.3 Interactive Shells. +Interactive shells are described in 6.3 Interactive Shells.

- +

Invoked as an interactive login shell, or with `--login'

- +

When Bash is invoked as an interactive login shell, or as a @@ -6715,9 +6610,9 @@ When a login shell exits, Bash reads and executes commands from the file `~/.bash_logout', if it exists.

- +

Invoked as an interactive non-login shell

- +

When an interactive shell that is not a login shell is started, Bash @@ -6732,9 +6627,9 @@ So, typically, your `~/.bash_profile' contains the line after (or before) any login-specific initializations.

- +

Invoked non-interactively

- +

When Bash is started non-interactively, to run a shell script, @@ -6752,9 +6647,9 @@ As noted above, if a non-interactive shell is invoked with the login shell startup files.

- +

Invoked with name sh

- +

If Bash is invoked with the name sh, it tries to mimic the @@ -6781,9 +6676,9 @@ When invoked as sh, Bash enters POSIX mode after the startup files are read.

- +

Invoked in POSIX mode

- +

When Bash is started in POSIX mode, as with the @@ -6795,9 +6690,9 @@ expanded value. No other startup files are read.

- +

Invoked by remote shell daemon

- +

Bash attempts to determine when it is being run by the remote shell @@ -6811,9 +6706,9 @@ The `--norc' option may be used to inhibit this behavior, and the allow them to be specified.

- +

Invoked with unequal effective and real UID/GIDs

- +

If Bash is started with the effective user (group) id not equal to the @@ -6827,50 +6722,50 @@ the same, but the effective user id is not reset.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

6.3 Interactive Shells

- +

- - - + + +
6.3.1 What is an Interactive Shell?  What determines whether a shell is Interactive.
6.3.2 Is this Shell Interactive?  How to tell if a shell is interactive.
6.3.3 Interactive Shell Behavior  What changes in a interactive shell?
6.3.1 What is an Interactive Shell?  What determines whether a shell is Interactive.
6.3.2 Is this Shell Interactive?  How to tell if a shell is interactive.
6.3.3 Interactive Shell Behavior  What changes in a interactive shell?


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

6.3.1 What is an Interactive Shell?

- +

An interactive shell is one started without non-option arguments, unless `-s' is -specified, without specifying the `-c' option, and +specified, without specifiying the `-c' option, and whose input and error output are both connected to terminals (as determined by isatty(3)), or one started with the `-i' option. @@ -6886,20 +6781,20 @@ when an interactive shell is started.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

6.3.2 Is this Shell Interactive?

- +

To determine within a startup script whether or not Bash is @@ -6928,20 +6823,20 @@ fi


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

6.3.3 Interactive Shell Behavior

- +

When the shell is running interactively, it changes its behavior in @@ -6950,11 +6845,11 @@ several ways.

  1. -Startup files are read and executed as described in 6.2 Bash Startup Files. +Startup files are read and executed as described in 6.2 Bash Startup Files.

  2. -Job Control (see section 7. Job Control) is enabled by default. When job +Job Control (see section 7. Job Control) is enabled by default. When job control is in effect, Bash ignores the keyboard-generated job control signals SIGTTIN, SIGTTOU, and SIGTSTP.

    @@ -6968,30 +6863,30 @@ second and subsequent lines of a multi-line command.

  3. Bash executes the value of the PROMPT_COMMAND variable as a command before printing the primary prompt, $PS1 -(see section 5.2 Bash Variables). +(see section 5.2 Bash Variables).

  4. -Readline (see section 8. Command Line Editing) is used to read commands from +Readline (see section 8. Command Line Editing) is used to read commands from the user's terminal.

  5. Bash inspects the value of the ignoreeof option to set -o instead of exiting immediately when it receives an EOF on its -standard input when reading a command (see section 4.3.1 The Set Builtin). +standard input when reading a command (see section 4.3 The Set Builtin).

  6. -Command history (see section 9.1 Bash History Facilities) -and history expansion (see section 9.3 History Expansion) +Command history (see section 9.1 Bash History Facilities) +and history expansion (see section 9.3 History Expansion) are enabled by default. Bash will save the command history to the file named by $HISTFILE when an interactive shell exits.

  7. -Alias expansion (see section 6.6 Aliases) is performed by default. +Alias expansion (see section 6.6 Aliases) is performed by default.

  8. @@ -7007,24 +6902,24 @@ In the absence of any traps, SIGINT is caught and handled
  9. An interactive login shell sends a SIGHUP to all jobs on exit -if the huponexit shell option has been enabled (see section 3.7.6 Signals). +if the hupoxexit shell option has been enabled (see section 3.7.6 Signals).

  10. The `-n' invocation option is ignored, and `set -n' has -no effect (see section 4.3.1 The Set Builtin). +no effect (see section 4.3 The Set Builtin).

  11. Bash will check for mail periodically, depending on the values of the MAIL, MAILPATH, and MAILCHECK shell variables -(see section 5.2 Bash Variables). +(see section 5.2 Bash Variables).

  12. Expansion errors due to references to unbound shell variables after `set -u' has been enabled will not cause the shell to exit -(see section 4.3.1 The Set Builtin). +(see section 4.3 The Set Builtin).

  13. @@ -7040,7 +6935,7 @@ shell to exit.
  14. When running in POSIX mode, a special builtin returning an error -status will not cause the shell to exit (see section 6.11 Bash POSIX Mode). +status will not cause the shell to exit (see section 6.11 Bash POSIX Mode).

  15. @@ -7055,13 +6950,13 @@ Parser syntax errors will not cause the shell to exit.
  16. Simple spelling correction for directory arguments to the cd builtin is enabled by default (see the description of the cdspell -option to the shopt builtin in 4.3.2 The Shopt Builtin). +option to the shopt builtin in 4.2 Bash Builtin Commands).

  17. The shell will check the value of the TMOUT variable and exit if a command is not read within the specified number of seconds after -printing $PS1 (see section 5.2 Bash Variables). +printing $PS1 (see section 5.2 Bash Variables).

@@ -7069,20 +6964,20 @@ printing $PS1 (see section 5.2 Bash Va
- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

6.4 Bash Conditional Expressions

- +

Conditional expressions are used by the [[ compound command @@ -7206,7 +7101,7 @@ inode numbers.

-o optname
True if shell option optname is enabled. The list of options appears in the description of the `-o' -option to the set builtin (see section 4.3.1 The Set Builtin). +option to the set builtin (see section 4.3 The Set Builtin).

-z string @@ -7252,20 +7147,20 @@ may be positive or negative integers.
- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

6.5 Shell Arithmetic

- +

The shell allows arithmetic expressions to be evaluated, as one of @@ -7391,20 +7286,20 @@ rules above.


- - - - - - - + +
[ < ][ > ]   [ << ][ Up ][ >> ]
+ + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

6.6 Aliases

- +

Aliases allow a string to be substituted for a word when it is used @@ -7443,7 +7338,7 @@ If arguments are needed, a shell function should be used Aliases are not expanded when the shell is not interactive, unless the expand_aliases shell option is set using -shopt (see section 4.3.2 The Shopt Builtin). +shopt (see section 4.2 Bash Builtin Commands).

The rules concerning the definition and use of aliases are @@ -7471,20 +7366,20 @@ For almost every purpose, shell functions are preferred over aliases.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

6.7 Arrays

- +

Bash provides one-dimensional array variables. Any variable may be used as @@ -7573,24 +7468,24 @@ reused as input.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

6.8 The Directory Stack

- +

-
6.8.1 Directory Stack Builtins  Bash builtin commands to manipulate +
6.8.1 Directory Stack Builtins  Bash builtin commands to manipulate the directory stack.

@@ -7609,26 +7504,26 @@ as the value of the DIRSTACK shell variable.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

6.8.1 Directory Stack Builtins

- +

dirs -
+
 
dirs [+N | -N] [-clpv]
 
Display the list of currently remembered directories. Directories are added to the list with the pushd command; the @@ -7657,7 +7552,7 @@ line, prefixing each entry with its index in the stack.

popd -
+
 
popd [+N | -N] [-n]
 

@@ -7681,9 +7576,9 @@ from the stack, so that only the stack is manipulated.

- +

pushd -
 
pushd [-n] [+N | -N | dir ]
+
 
pushd [dir | +N | -N] [-n]
 

Save the current directory on the top of the directory stack @@ -7692,9 +7587,6 @@ With no arguments, pushd exchanges the top two directories.

-
-n -
Suppresses the normal change of directory when adding directories -to the stack, so that only the stack is manipulated.
+N
Brings the Nth directory (counting from the left of the list printed by dirs, starting with zero) to the top of @@ -7703,6 +7595,9 @@ the list by rotating the stack.
Brings the Nth directory (counting from the right of the list printed by dirs, starting with zero) to the top of the list by rotating the stack. +
-n +
Suppresses the normal change of directory when adding directories +to the stack, so that only the stack is manipulated.
dir
Makes the current working directory be the top of the stack, and then executes the equivalent of `cd dir'. @@ -7715,20 +7610,20 @@ executes the equivalent of `cd dir'.
- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

6.9 Controlling the Prompt

- +

The value of the variable PROMPT_COMMAND is examined just before @@ -7806,7 +7701,7 @@ embed a terminal control sequence into the prompt. The command number and the history number are usually different: the history number of a command is its position in the history list, which may include commands restored from the history file -(see section 9.1 Bash History Facilities), while the command number is +(see section 9.1 Bash History Facilities), while the command number is the position in the sequence of commands executed during the current shell session.

@@ -7819,20 +7714,20 @@ expansion, and quote removal, subject to the value of the


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

6.10 The Restricted Shell

- +

If Bash is started with the name rbash, or the @@ -7891,20 +7786,20 @@ the shell spawned to execute the script.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

6.11 Bash POSIX Mode

- +

Starting Bash with the `--posix' command-line option or executing @@ -8181,25 +8076,25 @@ the echo builtin to be fully conformant. Bash can be configured to be POSIX-conformant by default, by specifying the `--enable-strict-posix-default' to configure when building -(see section 10.8 Optional Features). +(see section 10.8 Optional Features).


- + - - - + + + - + - +
[ < ][ > ]   [ << ]
[ < ][ > ]   [ << ] [ Up ][ >> ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

7. Job Control

- +

This chapter discusses what job control is, how it works, and how @@ -8207,30 +8102,30 @@ Bash allows you to access its facilities.

- - + -
7.1 Job Control Basics  How job control works.
7.2 Job Control Builtins  Bash builtin commands used to interact +
7.1 Job Control Basics  How job control works.
7.2 Job Control Builtins  Bash builtin commands used to interact with job control.
7.3 Job Control Variables  Variables Bash uses to customize job +
7.3 Job Control Variables  Variables Bash uses to customize job control.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

7.1 Job Control Basics

- +

Job control @@ -8320,42 +8215,40 @@ Normally, Bash waits until it is about to print a prompt before reporting changes in a job's status so as to not interrupt any other output. If the `-b' option to the set builtin is enabled, -Bash reports such changes immediately (see section 4.3.1 The Set Builtin). +Bash reports such changes immediately (see section 4.3 The Set Builtin). Any trap on SIGCHLD is executed for each child process that exits.

-If an attempt to exit Bash is made while jobs are stopped, (or running, if -the checkjobs option is enabled -- see 4.3.2 The Shopt Builtin), the -shell prints a warning message, and if the checkjobs option is -enabled, lists the jobs and their statuses. +If an attempt to exit Bash is made while jobs are stopped, the +shell prints a message warning that there are stopped jobs. The jobs command may then be used to inspect their status. If a second attempt to exit is made without an intervening command, -Bash does not print another warning, and any stopped jobs are terminated. +Bash does not print another warning, and the stopped jobs are terminated.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

7.2 Job Control Builtins

- +

bg -
+
 
bg [jobspec ...]
 
Resume each suspended job jobspec in the background, as if it had been started with `&'. @@ -8367,7 +8260,7 @@ that was started without job control.

fg -
+
 
fg [jobspec]
 
Resume the job jobspec in the foreground and make it the current job. If jobspec is not supplied, the current job is used. @@ -8378,7 +8271,7 @@ job control enabled, jobspec does not specify a valid job or

jobs -
+
 
jobs [-lnprs] [jobspec]
 jobs -x command [arguments]
 

@@ -8423,7 +8316,7 @@ passing it arguments, returning its exit status.

kill -
+
 
kill [-s sigspec] [-n signum] [-sigspec] jobspec or pid
 kill -l [exit_status]
 
Send a signal specified by sigspec or signum to the process @@ -8443,7 +8336,7 @@ or non-zero if an error occurs or an invalid option is encountered.

wait -
+
 
wait [jobspec or pid ...]
 
Wait until the child process specified by each process ID pid or job specification jobspec exits and return the exit status of the @@ -8456,7 +8349,7 @@ of the shell, the return status is 127.

disown -
+
 
disown [-ar] [-h] [jobspec ...]
 
Without options, each jobspec is removed from the table of active jobs. @@ -8471,7 +8364,7 @@ argument restricts operation to running jobs.

suspend -
+
 
suspend [-f]
 
Suspend the execution of this shell until it receives a SIGCONT signal. The `-f' option means to suspend @@ -8488,27 +8381,27 @@ supplied process IDs.
- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

7.3 Job Control Variables

- +

- +
auto_resume -
+
This variable controls how the shell interacts with the user and job control. If this variable exists then single word simple commands without redirections are treated as candidates for resumption @@ -8521,7 +8414,7 @@ the string supplied must match the name of a stopped job exactly; if set to `substring', the string supplied needs to match a substring of the name of a stopped job. The `substring' value provides functionality -analogous to the `%?' job ID (see section 7.1 Job Control Basics). +analogous to the `%?' job ID (see section 7.1 Job Control Basics). 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 `%' job ID. @@ -8530,25 +8423,25 @@ analogous to the `%' job ID.

- +


- + - - - + + + - + - +
[ < ][ > ]   [ << ]
[ < ][ > ]   [ << ] [ Up ][ >> ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

8. Command Line Editing

- +

This chapter describes the basic features of the GNU @@ -8558,36 +8451,36 @@ used by several different programs, including Bash.

- - - - + + + - - -
8.1 Introduction to Line Editing  Notation used in this text.
8.2 Readline Interaction  The minimum set of commands for editing a line.
8.3 Readline Init File  Customizing Readline from a user's view.
8.4 Bindable Readline Commands  A description of most of the Readline commands +
8.1 Introduction to Line Editing  Notation used in this text.
8.2 Readline Interaction  The minimum set of commands for editing a line.
8.3 Readline Init File  Customizing Readline from a user's view.
8.4 Bindable Readline Commands  A description of most of the Readline commands available for binding
8.5 Readline vi Mode  A short description of how to make Readline +
8.5 Readline vi Mode  A short description of how to make Readline behave like the vi editor.
8.6 Programmable Completion  How to specify the possible completions for +
8.6 Programmable Completion  How to specify the possible completions for a specific command.
8.7 Programmable Completion Builtins  Builtin commands to specify how to +
8.7 Programmable Completion Builtins  Builtin commands to specify how to complete arguments for a particular command.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

8.1 Introduction to Line Editing

- +

The following paragraphs describe the notation used to represent @@ -8624,7 +8517,7 @@ character produced by metafying C-k. In addition, several keys have their own names. Specifically, DEL, ESC, LFD, SPC, RET, and TAB all stand for themselves when seen in this text, or in an init file -(see section 8.3 Readline Init File). +(see section 8.3 Readline Init File). If your keyboard lacks a LFD key, typing C-j will produce the desired character. The RET key may be labeled Return or Enter on @@ -8633,20 +8526,20 @@ some keyboards.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

8.2 Readline Interaction

- +

Often during an interactive session you type in a long line of text, @@ -8662,30 +8555,30 @@ regardless of the location of the cursor within the line.

- - - - - + + + + +
8.2.1 Readline Bare Essentials  The least you need to know about Readline.
8.2.2 Readline Movement Commands  Moving about the input line.
8.2.3 Readline Killing Commands  How to delete text, and how to get it back!
8.2.4 Readline Arguments  Giving numeric arguments to commands.
8.2.5 Searching for Commands in the History  Searching through previous lines.
8.2.1 Readline Bare Essentials  The least you need to know about Readline.
8.2.2 Readline Movement Commands  Moving about the input line.
8.2.3 Readline Killing Commands  How to delete text, and how to get it back!
8.2.4 Readline Arguments  Giving numeric arguments to commands.
8.2.5 Searching for Commands in the History  Searching through previous lines.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

8.2.1 Readline Bare Essentials

- +

In order to enter characters into the line, simply type them. The typed @@ -8734,20 +8627,20 @@ than the character to the left of the cursor.)


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

8.2.2 Readline Movement Commands

- +

The above table describes the most basic keystrokes that you need @@ -8778,24 +8671,24 @@ operate on characters while meta keystrokes operate on words.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

8.2.3 Readline Killing Commands

- +

- - + +

Killing text means to delete the text from the line, but to save @@ -8815,7 +8708,7 @@ that when you yank it back, you get it all. The kill ring is not line specific; the text that you killed on a previously typed line is available to be yanked back later, when you are typing another line. - +

Here is the list of commands for killing text. @@ -8863,20 +8756,20 @@ the prior command is C-y or M-y.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

8.2.4 Readline Arguments

- +

You can pass numeric arguments to Readline commands. Sometimes the @@ -8898,24 +8791,24 @@ which will delete the next ten characters on the input line.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

8.2.5 Searching for Commands in the History

- +

Readline provides commands for searching through the command history -(see section 9.1 Bash History Facilities) +(see section 9.1 Bash History Facilities) for lines containing a specified string. There are two search modes: incremental and non-incremental.

@@ -8961,20 +8854,20 @@ typed by the user or be part of the contents of the current line.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

8.3 Readline Init File

- +

Although the Readline library comes with a set of Emacs-like @@ -8984,9 +8877,7 @@ Any user can customize programs that use Readline by putting commands in an inputrc file, conventionally in his home directory. The name of this file is taken from the value of the shell variable INPUTRC. If -that variable is unset, the default is `~/.inputrc'. If that -file does not exist or cannot be read, the ultimate default is -`/etc/inputrc'. +that variable is unset, the default is `~/.inputrc'.

When a program which uses the Readline library starts up, the @@ -8998,43 +8889,43 @@ incorporating any changes that you might have made to it.

- +
8.3.1 Readline Init File Syntax  Syntax for the commands in the inputrc file.
8.3.1 Readline Init File Syntax  Syntax for the commands in the inputrc file.

- +
8.3.2 Conditional Init Constructs  Conditional key bindings in the inputrc file.
8.3.2 Conditional Init Constructs  Conditional key bindings in the inputrc file.

- +
8.3.3 Sample Init File  An example inputrc file.
8.3.3 Sample Init File  An example inputrc file.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

8.3.1 Readline Init File Syntax

- +

There are only a few basic constructs allowed in the Readline init file. Blank lines are ignored. Lines beginning with a `#' are comments. Lines beginning with a `$' indicate conditional -constructs (see section 8.3.2 Conditional Init Constructs). Other lines +constructs (see section 8.3.2 Conditional Init Constructs). Other lines denote variable settings and key bindings.

@@ -9074,11 +8965,11 @@ A great deal of run-time behavior is changeable with the following variables.

- +

bell-style -
+
Controls what happens when Readline wants to ring the terminal bell. If set to `none', Readline never rings the bell. If set to `visible', Readline uses a visible bell if one is available. @@ -9087,14 +8978,14 @@ the terminal's bell.

bind-tty-special-chars -
+
If set to `on', Readline attempts to bind the control characters treated specially by the kernel's terminal driver to their Readline equivalents.

comment-begin -
+
The string to insert at the beginning of the line when the insert-comment command is executed. The default value is "#". @@ -9107,7 +8998,7 @@ The default value is `off'.

completion-query-items -
+
The number of possible completions that determines when the user is asked whether the list of possibilities should be displayed. If the number of possible completions is greater than this value, @@ -9119,7 +9010,7 @@ The default limit is 100.

convert-meta -
+
If set to `on', Readline will convert characters with the eighth bit set to an ASCII key sequence by stripping the eighth bit and prefixing an ESC character, converting them to a @@ -9127,14 +9018,14 @@ meta-prefixed key sequence. The default value is `on'.

disable-completion -
+
If set to `On', Readline will inhibit word completion. Completion characters will be inserted into the line as if they had been mapped to self-insert. The default is `off'.

editing-mode -
+
The editing-mode variable controls which default set of key bindings is used. By default, Readline starts up in Emacs editing mode, where the keystrokes are most similar to Emacs. This variable can be @@ -9142,27 +9033,27 @@ set to either `emacs' or `vi'.

enable-keypad -
+
When set to `on', Readline will try to enable the application keypad when it is called. Some systems need this to enable the arrow keys. The default is `off'.

expand-tilde -
+
If set to `on', tilde expansion is performed when Readline attempts word completion. The default is `off'.

history-preserve-point -
+
If set to `on', the history code attempts to place point at the same location on each history line retrieved with previous-history or next-history. The default is `off'.

horizontal-scroll-mode -
+
This variable can be set to either `on' or `off'. Setting it to `on' means that the text of the lines being edited will scroll horizontally on a single screen line when they are longer than the width @@ -9171,8 +9062,8 @@ this variable is set to `off'.

input-meta -
- +
+ If set to `on', Readline will enable eight-bit input (it will not clear the eighth bit in the characters it reads), regardless of what the terminal claims it can support. The @@ -9181,15 +9072,15 @@ synonym for this variable.

isearch-terminators -
+
The string of characters that should terminate an incremental search without -subsequently executing the character as a command (see section 8.2.5 Searching for Commands in the History). +subsequently executing the character as a command (see section 8.2.5 Searching for Commands in the History). If this variable has not been given a value, the characters ESC and C-J will terminate an incremental search.

keymap -
+
Sets Readline's idea of the current keymap for key binding commands. Acceptable keymap names are emacs, @@ -9212,14 +9103,14 @@ appended. The default is `on'.

mark-modified-lines -
+
This variable, when set to `on', causes Readline to display an asterisk (`*') at the start of history lines which have been modified. This variable is `off' by default.

mark-symlinked-directories -
+
If set to `on', completed names which are symbolic links to directories have a slash appended (subject to the value of mark-directories). @@ -9227,7 +9118,7 @@ The default is `off'.

match-hidden-files -
+
This variable, when set to `on', causes Readline to match files whose names begin with a `.' (hidden files) when performing filename completion, unless the leading `.' is @@ -9236,14 +9127,14 @@ This variable is `on' by default.

output-meta -
+
If set to `on', Readline will display characters with the eighth bit set directly rather than as a meta-prefixed escape sequence. The default is `off'.

page-completions -
+
If set to `on', Readline uses an internal more-like pager to display a screenful of possible completions at a time. This variable is `on' by default. @@ -9256,7 +9147,7 @@ The default is `off'.

show-all-if-ambiguous -
+
This alters the default behavior of the completion functions. If set to `on', words which have more than one possible completion cause the @@ -9265,7 +9156,7 @@ The default value is `off'.

show-all-if-unmodified -
+
This alters the default behavior of the completion functions in a fashion similar to show-all-if-ambiguous. If set to `on', @@ -9277,7 +9168,7 @@ The default value is `off'.

visible-stats -
+
If set to `on', a character denoting a file's type is appended to the filename when listing possible completions. The default is `off'. @@ -9297,11 +9188,9 @@ the command does. Once you know the name of the command, simply place on a line in the init file the name of the key you wish to bind the command to, a colon, and then the name of the -command. -There can be no space between the key name and the colon -- that will be -interpreted as part of the key name. -The name of the key can be expressed in different ways, depending on -what you find most comfortable. +command. The name of the key +can be expressed in different ways, depending on what you find most +comfortable.

In addition to command names, readline allows keys to be bound @@ -9434,20 +9323,20 @@ insert a single `\' into the line:


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

8.3.2 Conditional Init Constructs

- +

Readline implements a facility similar in spirit to the conditional @@ -9519,20 +9408,20 @@ For example, the following directive reads from `/etc/inputrc':


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

8.3.3 Sample Init File

- +

Here is an example of an inputrc file. This illustrates key @@ -9642,31 +9531,31 @@ $endif


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

8.4 Bindable Readline Commands

- +

- - - - - - - - + + + + + + + +
8.4.1 Commands For Moving  Moving about the line.
8.4.2 Commands For Manipulating The History  Getting at previous lines.
8.4.3 Commands For Changing Text  Commands for changing text.
8.4.4 Killing And Yanking  Commands for killing and yanking.
8.4.5 Specifying Numeric Arguments  Specifying numeric arguments, repeat counts.
8.4.6 Letting Readline Type For You  Getting Readline to do the typing for you.
8.4.7 Keyboard Macros  Saving and re-executing typed characters
8.4.8 Some Miscellaneous Commands  Other miscellaneous commands.
8.4.1 Commands For Moving  Moving about the line.
8.4.2 Commands For Manipulating The History  Getting at previous lines.
8.4.3 Commands For Changing Text  Commands for changing text.
8.4.4 Killing And Yanking  Commands for killing and yanking.
8.4.5 Specifying Numeric Arguments  Specifying numeric arguments, repeat counts.
8.4.6 Letting Readline Type For You  Getting Readline to do the typing for you.
8.4.7 Keyboard Macros  Saving and re-executing typed characters
8.4.8 Some Miscellaneous Commands  Other miscellaneous commands.

@@ -9686,69 +9575,69 @@ The text between the point and mark is referred to as the region.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

8.4.1 Commands For Moving

- +
- +
beginning-of-line (C-a) -
+
Move to the start of the current line.

- +

end-of-line (C-e) -
+
Move to the end of the line.

- +

forward-char (C-f) -
+
Move forward a character.

- +

backward-char (C-b) -
+
Move back a character.

- +

forward-word (M-f) -
+
Move forward to the end of the next word. Words are composed of letters and digits.

- +

backward-word (M-b) -
+
Move back to the start of the current or previous word. Words are composed of letters and digits.

- +

clear-screen (C-l) -
+
Clear the screen and redraw the current line, leaving the current line at the top of the screen.

- +

redraw-current-line () -
+
Refresh the current line. By default, this is unbound.

@@ -9757,26 +9646,26 @@ Refresh the current line. By default, this is unbound.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

8.4.2 Commands For Manipulating The History

- +

- +
accept-line (Newline or Return) -
+
Accept the line regardless of where the cursor is. If this line is non-empty, add it to the history list according to the setting of @@ -9785,81 +9674,81 @@ If this line is a modified history line, then restore the history line to its original state.

- +

previous-history (C-p) -
+
Move `back' through the history list, fetching the previous command.

- +

next-history (C-n) -
+
Move `forward' through the history list, fetching the next command.

- +

beginning-of-history (M-<) -
+
Move to the first line in the history.

- +

end-of-history (M->) -
+
Move to the end of the input history, i.e., the line currently being entered.

- +

reverse-search-history (C-r) -
+
Search backward starting at the current line and moving `up' through the history as necessary. This is an incremental search.

- +

forward-search-history (C-s) -
+
Search forward starting at the current line and moving `down' through the the history as necessary. This is an incremental search.

- +

non-incremental-reverse-search-history (M-p) -
+
Search backward starting at the current line and moving `up' through the history as necessary using a non-incremental search for a string supplied by the user.

- +

non-incremental-forward-search-history (M-n) -
+
Search forward starting at the current line and moving `down' through the the history as necessary using a non-incremental search for a string supplied by the user.

- +

history-search-forward () -
+
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. By default, this command is unbound.

- +

history-search-backward () -
+
Search backward through the history for the string of characters between the start of the current line and the point. This is a non-incremental search. By default, this command is unbound.

- +

yank-nth-arg (M-C-y) -
+
Insert the first argument to the previous command (usually the second word on the previous line) at point. With an argument n, @@ -9870,9 +9759,9 @@ Once the argument n is computed, the argument is extracted as if the `!n' history expansion had been specified.

- +

yank-last-arg (M-. or M-_) -
+
Insert last argument to the previous command (the last word of the previous history entry). With an argument, behave exactly like yank-nth-arg. @@ -9887,63 +9776,63 @@ as if the `!$' history expansion had been specified.
- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

8.4.3 Commands For Changing Text

- +

- +
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 delete-char, then return EOF.

- +

backward-delete-char (Rubout) -
+
Delete the character behind the cursor. A numeric argument means to kill the characters instead of deleting them.

- +

forward-backward-delete-char () -
+
Delete the character under the cursor, unless the cursor is at the end of the line, in which case the character behind the cursor is deleted. By default, this is not bound to a key.

- +

quoted-insert (C-q or C-v) -
+
Add the next character typed to the line verbatim. This is how to insert key sequences like C-q, for example.

- +

self-insert (a, b, A, 1, !, ...) -
+
Insert yourself.

- +

transpose-chars (C-t) -
+
Drag the character before the cursor forward over the character at the cursor, moving the cursor forward as well. If the insertion point @@ -9952,39 +9841,39 @@ transposes the last two characters of the line. Negative arguments have no effect.

- +

transpose-words (M-t) -
+
Drag the word before point past the word after point, moving point past that word as well. If the insertion point is at the end of the line, this transposes the last two words on the line.

- +

upcase-word (M-u) -
+
Uppercase the current (or following) word. With a negative argument, uppercase the previous word, but do not move the cursor.

- +

downcase-word (M-l) -
+
Lowercase the current (or following) word. With a negative argument, lowercase the previous word, but do not move the cursor.

- +

capitalize-word (M-c) -
+
Capitalize the current (or following) word. With a negative argument, capitalize the previous word, but do not move the cursor.

- +

overwrite-mode () -
+
Toggle overwrite mode. With an explicit positive numeric argument, switches to overwrite mode. With an explicit non-positive numeric argument, switches to insert mode. This command affects only @@ -10006,124 +9895,124 @@ By default, this command is unbound.
- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

8.4.4 Killing And Yanking

- +

- +
kill-line (C-k) -
+
Kill the text from point to the end of the line.

- +

backward-kill-line (C-x Rubout) -
+
Kill backward to the beginning of the line.

- +

unix-line-discard (C-u) -
+
Kill backward from the cursor to the beginning of the current line.

- +

kill-whole-line () -
+
Kill all characters on the current line, no matter where point is. By default, this is unbound.

- +

kill-word (M-d) -
+
Kill from point to the end of the current word, or if between words, to the end of the next word. Word boundaries are the same as forward-word.

- +

backward-kill-word (M-DEL) -
+
Kill the word behind point. Word boundaries are the same as backward-word.

- +

unix-word-rubout (C-w) -
+
Kill the word behind point, using white space as a word boundary. The killed text is saved on the kill-ring.

- +

unix-filename-rubout () -
+
Kill the word behind point, using white space and the slash character as the word boundaries. The killed text is saved on the kill-ring.

- +

delete-horizontal-space () -
+
Delete all spaces and tabs around point. By default, this is unbound.

- +

kill-region () -
+
Kill the text in the current region. By default, this command is unbound.

- +

copy-region-as-kill () -
+
Copy the text in the region to the kill buffer, so it can be yanked right away. By default, this command is unbound.

- +

copy-backward-word () -
+
Copy the word before point to the kill buffer. The word boundaries are the same as backward-word. By default, this command is unbound.

- +

copy-forward-word () -
+
Copy the word following point to the kill buffer. The word boundaries are the same as forward-word. By default, this command is unbound.

- +

yank (C-y) -
+
Yank the top of the kill ring into the buffer at point.

- +

yank-pop (M-y) -
+
Rotate the kill-ring, and yank the new top. You can only do this if the prior command is yank or yank-pop.
@@ -10131,32 +10020,32 @@ the prior command is yank or yank-pop.
- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

8.4.5 Specifying Numeric Arguments

- +
- +
digit-argument (M-0, M-1, ... M--) -
+
Add this digit to the argument already accumulating, or start a new argument. M-- starts a negative argument.

- +

universal-argument () -
+
This is another way to specify an argument. If this command is followed by one or more digits, optionally with a leading minus sign, those digits define the argument. @@ -10174,26 +10063,26 @@ By default, this is not bound to a key.
- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

8.4.6 Letting Readline Type For You

- +

- +
complete (TAB) -
+
Attempt to perform completion on the text before point. The actual completion performed is application-specific. Bash attempts completion treating the text as a variable (if the @@ -10203,22 +10092,22 @@ command (including aliases and functions) in turn. If none of these produces a match, filename completion is attempted.

- +

possible-completions (M-?) -
+
List the possible completions of the text before point.

- +

insert-completions (M-*) -
+
Insert all completions of the text before point that would have been generated by possible-completions.

- +

menu-complete () -
+
Similar to complete, but replaces the word to be completed with a single match from the list of possible completions. Repeated execution of menu-complete steps through the list @@ -10233,9 +10122,9 @@ This command is intended to be bound to TAB, but is unbound by default.

- +

delete-char-or-list () -
+
Deletes the character under the cursor if not at the beginning or end of the line (like delete-char). If at the end of the line, behaves identically to @@ -10243,64 +10132,64 @@ If at the end of the line, behaves identically to This command is unbound by default.

- +

complete-filename (M-/) -
+
Attempt filename completion on the text before point.

- +

possible-filename-completions (C-x /) -
+
List the possible completions of the text before point, treating it as a filename.

- +

complete-username (M-~) -
+
Attempt completion on the text before point, treating it as a username.

- +

possible-username-completions (C-x ~) -
+
List the possible completions of the text before point, treating it as a username.

- +

complete-variable (M-$) -
+
Attempt completion on the text before point, treating it as a shell variable.

- +

possible-variable-completions (C-x $) -
+
List the possible completions of the text before point, treating it as a shell variable.

- +

complete-hostname (M-@) -
+
Attempt completion on the text before point, treating it as a hostname.

- +

possible-hostname-completions (C-x @) -
+
List the possible completions of the text before point, treating it as a hostname.

- +

complete-command (M-!) -
+
Attempt completion on the text before point, treating it as a command name. Command completion attempts to match the text against aliases, reserved words, shell @@ -10308,24 +10197,24 @@ functions, shell builtins, and finally executable filenames, in that order.

- +

possible-command-completions (C-x !) -
+
List the possible completions of the text before point, treating it as a command name.

- +

dynamic-complete-history (M-TAB) -
+
Attempt completion on the text before point, comparing the text against lines from the history list for possible completion matches.

- +

complete-into-braces (M-{) -
+
Perform filename completion and insert the list of possible completions enclosed within braces so the list is available to the shell (see section 3.5.1 Brace Expansion). @@ -10336,38 +10225,38 @@ enclosed within braces so the list is available to the shell
- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

8.4.7 Keyboard Macros

- +
- +
start-kbd-macro (C-x () -
+
Begin saving the characters typed into the current keyboard macro.

- +

end-kbd-macro (C-x )) -
+
Stop saving the characters typed into the current keyboard macro and save the definition.

- +

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.

@@ -10377,103 +10266,103 @@ in the macro appear as if typed at the keyboard.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

8.4.8 Some Miscellaneous Commands

- +
- +
re-read-init-file (C-x C-r) -
+
Read in the contents of the inputrc file, and incorporate any bindings or variable assignments found there.

- +

abort (C-g) -
+
Abort the current editing command and ring the terminal's bell (subject to the setting of bell-style).

- +

do-uppercase-version (M-a, M-b, M-x, ...) -
+
If the metafied character x is lowercase, run the command that is bound to the corresponding uppercase character.

- +

prefix-meta (ESC) -
+
Metafy the next character typed. This is for keyboards without a meta key. Typing `ESC f' is equivalent to typing M-f.

- +

undo (C-_ or C-x C-u) -
+
Incremental undo, separately remembered for each line.

- +

revert-line (M-r) -
+
Undo all changes made to this line. This is like executing the undo command enough times to get back to the beginning.

- +

tilde-expand (M-&) -
+
Perform tilde expansion on the current word.

- +

set-mark (C-@) -
+
Set the mark to the point. If a numeric argument is supplied, the mark is set to that position.

- +

exchange-point-and-mark (C-x C-x) -
+
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.

- +

character-search (C-]) -
+
A character is read and point is moved to the next occurrence of that character. A negative count searches for previous occurrences.

- +

character-search-backward (M-C-]) -
+
A character is read and point is moved to the previous occurrence of that character. A negative count searches for subsequent occurrences.

- +

insert-comment (M-#) -
+
Without a numeric argument, the value of the comment-begin variable is inserted at the beginning of the current line. If a numeric argument is supplied, this command acts as a toggle: if @@ -10488,115 +10377,115 @@ If a numeric argument causes the comment character to be removed, the line will be executed by the shell.

- +

dump-functions () -
+
Print all of the functions and their key bindings 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 of an inputrc file. This command is unbound by default.

- +

dump-variables () -
+
Print all of the settable 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 of an inputrc file. This command is unbound by default.

- +

dump-macros () -
+
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 inputrc file. This command is unbound by default.

- +

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.

- +

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. If a numeric argument is supplied, a `*' is appended before pathname expansion.

- +

glob-list-expansions (C-x g) -
+
The list of expansions that would have been generated by glob-expand-word is displayed, and the line is redrawn. If a numeric argument is supplied, a `*' is appended before pathname expansion.

- +

display-shell-version (C-x C-v) -
+
Display version information about the current instance of Bash.

- +

shell-expand-line (M-C-e) -
+
Expand the line as the shell does. This performs alias and history expansion as well as all of the shell word expansions (see section 3.5 Shell Expansions).

- +

history-expand-line (M-^) -
+
Perform history expansion on the current line.

- +

magic-space () -
+
Perform history expansion on the current line and insert a space -(see section 9.3 History Expansion). +(see section 9.3 History Expansion).

- +

alias-expand-line () -
-Perform alias expansion on the current line (see section 6.6 Aliases). +
+Perform alias expansion on the current line (see section 6.6 Aliases).

- +

history-and-alias-expand-line () -
+
Perform history and alias expansion on the current line.

- +

insert-last-argument (M-. or M-_) -
+
A synonym for yank-last-arg.

- +

operate-and-get-next (C-o) -
+
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.

- +

edit-and-execute-command (C-xC-e) -
+
Invoke an editor on the current command line, and execute the result as shell commands. Bash attempts to invoke @@ -10609,20 +10498,20 @@ as the editor, in that order.
- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

8.5 Readline vi Mode

- +

While the Readline library does not have a full set of vi @@ -10633,7 +10522,7 @@ the POSIX 1003.2 standard. In order to switch interactively between emacs and vi editing modes, use the `set -o emacs' and `set -o vi' -commands (see section 4.3.1 The Set Builtin). +commands (see section 4.3 The Set Builtin). The Readline default is emacs mode.

@@ -10647,25 +10536,25 @@ so forth.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

8.6 Programmable Completion

- +

When word completion is attempted for an argument to a command for which a completion specification (a compspec) has been defined -using the complete builtin (see section 8.7 Programmable Completion Builtins), +using the complete builtin (see section 8.7 Programmable Completion Builtins), the programmable completion facilities are invoked.

@@ -10681,7 +10570,7 @@ find a compspec for the portion following the final slash. Once a compspec has been found, it is used to generate the list of matching words. If a compspec is not found, the default Bash completion -described above (see section 8.4.6 Letting Readline Type For You) is performed. +described above (see section 8.4.6 Letting Readline Type For You) is performed.

First, the actions specified by the compspec are used. @@ -10690,7 +10579,7 @@ returned. When the `-f' or `-d' option is used for filename or directory name completion, the shell variable FIGNORE is used to filter the matches. -See section 5.2 Bash Variables, for a description of FIGNORE. +See section 5.2 Bash Variables, for a description of FIGNORE.

Any completions specified by a filename expansion pattern to the @@ -10717,9 +10606,9 @@ completed, and the matching words become the possible completions. After these matches have been generated, any shell function or command specified with the `-F' and `-C' options is invoked. -When the command or function is invoked, the COMP_LINE, -COMP_POINT, COMP_KEY, and COMP_TYPE variables are -assigned values as described above (see section 5.2 Bash Variables). +When the command or function is invoked, the COMP_LINE and +COMP_POINT variables are assigned values as described above +(see section 5.2 Bash Variables). If a shell function is being invoked, the COMP_WORDS and COMP_CWORD variables are also set. When the function or command is invoked, the first argument is the @@ -10734,7 +10623,7 @@ the matches. Any function specified with `-F' is invoked first. The function may use any of the shell facilities, including the compgen builtin described below -(see section 8.7 Programmable Completion Builtins), to generate the matches. +(see section 8.7 Programmable Completion Builtins), to generate the matches. It must put the possible completions in the COMPREPLY array variable.

@@ -10795,20 +10684,20 @@ of the setting of the mark-symlinked-directories Readline variable.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

8.7 Programmable Completion Builtins

- +

Two builtin commands are available to manipulate the programmable completion @@ -10817,7 +10706,7 @@ facilities.

compgen -
+
 
compgen [option] [word]
 

@@ -10843,10 +10732,10 @@ matches were generated.

complete -
+
 
complete [-abcdefgjksuv] [-o comp-option] [-A action] [-G globpat] [-W wordlist]
-[-F function] [-C command] [-X filterpat]
-[-P prefix] [-S suffix] name [name ...]
+[-P prefix] [-S suffix] [-X filterpat] [-F function]
+[-C command] name [name ...]
 complete -pr [name ...]
 

@@ -10860,7 +10749,7 @@ completion specifications.

The process of applying these completion specifications when word completion -is attempted is described above (see section 8.6 Programmable Completion). +is attempted is described above (see section 8.6 Programmable Completion).

Other options, if specified, have the following meanings. @@ -10929,7 +10818,7 @@ completions:

binding -
Readline key binding names (see section 8.4 Bindable Readline Commands). +
Readline key binding names (see section 8.4 Bindable Readline Commands).

builtin @@ -10974,7 +10863,7 @@ completions:
hostname
Hostnames, as taken from the file specified by the -HOSTFILE shell variable (see section 5.2 Bash Variables). +HOSTFILE shell variable (see section 5.2 Bash Variables).

job @@ -10995,7 +10884,7 @@ completions:
setopt
Valid arguments for the `-o' option to the set builtin -(see section 4.3.1 The Set Builtin). +(see section 4.3 The Set Builtin).

shopt @@ -11073,25 +10962,25 @@ an error occurs adding a completion specification.

- +


- + - - + + - + - +
[ < ][ > ]
[ < ][ > ]   [ << ] [ Up ][ >> ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

9. Using History Interactively

- +

This chapter describes how to use the GNU History Library @@ -11102,34 +10991,34 @@ see the GNU Readline Library Manual.

- - - +
9.1 Bash History Facilities  How Bash lets you manipulate your command +
9.1 Bash History Facilities  How Bash lets you manipulate your command history.
9.2 Bash History Builtins  The Bash builtin commands that manipulate +
9.2 Bash History Builtins  The Bash builtin commands that manipulate the command history.
9.3 History Expansion  What it feels like using History as a user.
9.3 History Expansion  What it feels like using History as a user.


- + - - + + - - + + - +
[ < ][ > ]
[ < ][ > ]   [ << ][ Up ][ >> ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

9.1 Bash History Facilities

- +

When the `-o history' option to the set builtin -is enabled (see section 4.3.1 The Set Builtin), +is enabled (see section 4.3 The Set Builtin), the shell provides access to the command history, the list of commands previously typed. The value of the HISTSIZE shell variable is used as the @@ -11162,11 +11051,7 @@ lines. If HISTFILESIZE is not set, no truncation is performed.

If the HISTTIMEFORMAT is set, the time stamp information -associated with each history entry is written to the history file, -marked with the history comment character. -When the history file is read, lines beginning with the history -comment character followed immediately by a digit are interpreted -as timestamps for the previous history line. +associated with each history entry is written to the history file.

The builtin command fc may be used to list or edit and re-execute @@ -11175,7 +11060,7 @@ The history builtin may be used to display or modify the history list and manipulate the history file. When using command-line editing, search commands are available in each editing mode that provide access to the -history list (see section 8.4.2 Commands For Manipulating The History). +history list (see section 8.4.2 Commands For Manipulating The History).

The shell allows control over which commands are saved on the history @@ -11195,20 +11080,20 @@ See section 4.2 Bash Builtin Commands, for a de


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

9.2 Bash History Builtins

- +

Bash provides two builtin commands which manipulate the @@ -11218,8 +11103,8 @@ history list and history file.

fc -
-
 
fc [-e ename] [-lnr] [first] [last]
+
+
 
fc [-e ename] [-nlr] [first] [last]
 fc -s [pat=rep] [command]
 

@@ -11248,11 +11133,11 @@ of pat in the selected command is replaced by rep. A useful alias to use with the fc command is r='fc -s', so that typing `r cc' runs the last command beginning with cc -and typing `r' re-executes the last command (see section 6.6 Aliases). +and typing `r' re-executes the last command (see section 6.6 Aliases).

history -
+
 
history [n]
 history -c
 history -d offset
@@ -11330,20 +11215,20 @@ the value of the HISTFILE variable is used.
 
 
 
- + - - + + - - + + - +
[ < ][ > ]
[ < ][ > ]   [ << ][ Up ][ >> ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

9.3 History Expansion

- +

The History library provides a history expansion feature that is similar @@ -11392,40 +11277,37 @@ This is most useful in conjunction with Readline.

The shell allows control of the various characters used by the -history expansion mechanism with the histchars variable, -as explained above (see section 5.2 Bash Variables). The shell uses -the history comment character to mark history timestamps when -writing the history file. +history expansion mechanism with the histchars variable.

- - - + + +
9.3.1 Event Designators  How to specify which history line to use.
9.3.2 Word Designators  Specifying which words are of interest.
9.3.3 Modifiers  Modifying the results of substitution.
9.3.1 Event Designators  How to specify which history line to use.
9.3.2 Word Designators  Specifying which words are of interest.
9.3.3 Modifiers  Modifying the results of substitution.


- + - - + + - - + + - +
[ < ][ > ]
[ < ][ > ]   [ << ][ Up ][ >> ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

9.3.1 Event Designators

- +

An event designator is a reference to a command line entry in the history list. - +

@@ -11473,20 +11355,20 @@ with string2. Equivalent to
- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

9.3.2 Word Designators

- +

Word designators are used to select desired words from the event. @@ -11568,20 +11450,20 @@ previous command is used as the event.


- + - - + + - - + + - +
[ < ][ > ]
[ < ][ > ]   [ << ][ Up ][ >> ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

9.3.3 Modifiers

- +

After the optional word designator, you can add a sequence of one or more @@ -11595,7 +11477,7 @@ of the following modifiers, each preceded by a `:'.

t -
Remove all leading pathname components, leaving the tail. +
Remove all leading pathname components, leaving the tail.

r @@ -11650,20 +11532,20 @@ or with `&'.
- + - - + + - + - +
[ < ][ > ]
[ < ][ > ]   [ << ] [ Up ][ >> ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

10. Installing Bash

- +

This chapter provides basic instructions for installing Bash on @@ -11675,38 +11557,38 @@ MS-DOS, OS/2, and Windows platforms.

- - + - - - - + + - - +
10.1 Basic Installation  Installation instructions.
10.2 Compilers and Options  How to set special options for various +
10.1 Basic Installation  Installation instructions.
10.2 Compilers and Options  How to set special options for various systems.
10.3 Compiling For Multiple Architectures  How to compile Bash for more +
10.3 Compiling For Multiple Architectures  How to compile Bash for more than one kind of system from the same source tree.
10.4 Installation Names  How to set the various paths used by the installation.
10.5 Specifying the System Type  How to configure Bash for a particular system.
10.6 Sharing Defaults  How to share default configuration values among GNU +
10.4 Installation Names  How to set the various paths used by the installation.
10.5 Specifying the System Type  How to configure Bash for a particular system.
10.6 Sharing Defaults  How to share default configuration values among GNU programs.
10.7 Operation Controls  Options recognized by the configuration program.
10.8 Optional Features  How to enable and disable optional features when +
10.7 Operation Controls  Options recognized by the configuration program.
10.8 Optional Features  How to enable and disable optional features when building Bash.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

10.1 Basic Installation

- +

These are installation instructions for Bash. @@ -11796,20 +11678,20 @@ a different kind of computer), type `make distclean'.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

10.2 Compilers and Options

- +

Some systems require unusual options for compilation or linking @@ -11834,20 +11716,20 @@ is available.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

10.3 Compiling For Multiple Architectures

- +

You can compile Bash for more than one kind of computer at the @@ -11886,20 +11768,20 @@ directories for other architectures.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

10.4 Installation Names

- +

By default, `make install' will install into @@ -11920,20 +11802,20 @@ Documentation and other data files will still use the regular prefix.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

10.5 Specifying the System Type

- +

There may be some features configure can not figure out @@ -11952,20 +11834,20 @@ values of each field.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

10.6 Sharing Defaults

- +

If you want to set default values for configure scripts to @@ -11981,20 +11863,20 @@ but not all configure scripts do.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

10.7 Operation Controls

- +

configure recognizes the following options to control how it @@ -12037,20 +11919,20 @@ options. `configure --help' prints the complete list.


- + - - - - - + + + + + - +
[ < ][ > ]   [ << ][ Up ][ >> ]
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

10.8 Optional Features

- +

The Bash configure has a number of `--enable-feature' @@ -12157,7 +12039,7 @@ necessary support.

--enable-alias
Allow alias expansion and include the alias and unalias -builtins (see section 6.6 Aliases). +builtins (see section 6.6 Aliases).

--enable-arith-for-command @@ -12168,12 +12050,12 @@ that behaves like the C language for statement
--enable-array-variables
Include support for one-dimensional array shell variables -(see section 6.7 Arrays). +(see section 6.7 Arrays).

--enable-bang-history
Include support for csh-like history substitution -(see section 9.3 History Expansion). +(see section 9.3 History Expansion).

--enable-brace-expansion @@ -12207,7 +12089,7 @@ This allows pipelines as well as shell builtins and functions to be timed.
--enable-directory-stack
Include support for a csh-like directory stack and the pushd, popd, and dirs builtins -(see section 6.8 The Directory Stack). +(see section 6.8 The Directory Stack).

--enable-disabled-builtins @@ -12234,11 +12116,11 @@ variables (see section 4.2 Bash Builtin Commands--enable-history
Include command history and the fc and history -builtin commands (see section 9.1 Bash History Facilities). +builtin commands (see section 9.1 Bash History Facilities).

--enable-job-control -
This enables the job control features (see section 7. Job Control), +
This enables the job control features (see section 7. Job Control), if the operating system supports them.

@@ -12261,26 +12143,26 @@ the operating system provides the necessary support.

--enable-progcomp
Enable the programmable completion facilities -(see section 8.6 Programmable Completion). +(see section 8.6 Programmable Completion). If Readline is not enabled, this option has no effect.

--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 6.9 Controlling the Prompt, for a complete list of prompt +strings. See 6.9 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 -version of the Readline library (see section 8. Command Line Editing). +version of the Readline library (see section 8. Command Line Editing).

--enable-restricted
Include support for a restricted shell. If this is enabled, Bash, when called as rbash, enters a restricted mode. See -6.10 The Restricted Shell, for a description of restricted mode. +6.10 The Restricted Shell, for a description of restricted mode.

--enable-select @@ -12301,7 +12183,7 @@ literals.

--enable-strict-posix-default -
Make Bash POSIX-conformant by default (see section 6.11 Bash POSIX Mode). +
Make Bash POSIX-conformant by default (see section 6.11 Bash POSIX Mode).

--enable-usg-echo-default @@ -12332,20 +12214,20 @@ information about its effect.
- + - - - + + + - + - +
[ < ][ > ]   [ << ]
[ < ][ > ]   [ << ] [ Up ][ >> ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

A. Reporting Bugs

- +

Please report all bugs you find in Bash. @@ -12390,20 +12272,20 @@ Please send all reports concerning this manual to


- + - - - + + + - + - +
[ < ][ > ]   [ << ]
[ < ][ > ]   [ << ] [ Up ][ >> ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

B. Major Differences From The Bourne Shell

- +

Bash implements essentially the same grammar, parameter and @@ -12422,26 +12304,26 @@ last version of the historical Bourne shell) as the baseline reference.

  • Bash is POSIX-conformant, even where the POSIX specification -differs from traditional sh behavior (see section 6.11 Bash POSIX Mode). +differs from traditional sh behavior (see section 6.11 Bash POSIX Mode).

  • -Bash has multi-character invocation options (see section 6.1 Invoking Bash). +Bash has multi-character invocation options (see section 6.1 Invoking Bash).

  • -Bash has command-line editing (see section 8. Command Line Editing) and +Bash has command-line editing (see section 8. Command Line Editing) and the bind builtin.

  • Bash provides a programmable word completion mechanism -(see section 8.6 Programmable Completion), and two builtin commands, +(see section 8.6 Programmable Completion), and two builtin commands, complete and compgen, to manipulate it.

  • -Bash has command history (see section 9.1 Bash History Facilities) and the +Bash has command history (see section 9.1 Bash History Facilities) and the history and fc builtins to manipulate it. The Bash history list maintains timestamp information and uses the value of the HISTTIMEFORMAT variable to display it. @@ -12449,11 +12331,11 @@ value of the HISTTIMEFORMAT variable to display it.
  • Bash implements csh-like history expansion -(see section 9.3 History Expansion). +(see section 9.3 History Expansion).

  • -Bash has one-dimensional array variables (see section 6.7 Arrays), and the +Bash has one-dimensional array variables (see section 6.7 Arrays), and the appropriate variable expansions and assignment syntax to use them. Several of the Bash builtins take options to act on arrays. Bash provides a number of built-in array variables. @@ -12515,13 +12397,13 @@ expansion (see section 3.5.2 Tilde Expansion).
  • Bash implements command aliases and the alias and unalias -builtins (see section 6.6 Aliases). +builtins (see section 6.6 Aliases).

  • Bash provides shell arithmetic, the (( compound command (see section 3.2.4.2 Conditional Constructs), -and arithmetic expansion (see section 6.5 Shell Arithmetic). +and arithmetic expansion (see section 6.5 Shell Arithmetic).

  • @@ -12593,7 +12475,7 @@ Bash automatically assigns variables that provide information about the current user (UID, EUID, and GROUPS), the current host (HOSTTYPE, OSTYPE, MACHTYPE, and HOSTNAME), and the instance of Bash that is running (BASH, -BASH_VERSION, and BASH_VERSINFO). See section 5.2 Bash Variables, +BASH_VERSION, and BASH_VERSINFO). See section 5.2 Bash Variables, for details.

    @@ -12667,7 +12549,7 @@ with the redirection operators (see section 3.6 Red

  • The noclobber option is available to avoid overwriting existing -files with output redirection (see section 4.3.1 The Set Builtin). +files with output redirection (see section 4.3 The Set Builtin). The `>|' redirection operator may be used to override noclobber.

    @@ -12756,19 +12638,19 @@ executed with the . or source builtins

  • Bash includes the shopt builtin, for finer control of shell -optional capabilities (see section 4.3.2 The Shopt Builtin), and allows these options -to be set and unset at shell invocation (see section 6.1 Invoking Bash). +optional capabilities (see section 4.2 Bash Builtin Commands), and allows these options +to be set and unset at shell invocation (see section 6.1 Invoking Bash).

  • Bash has much more optional behavior controllable with the set -builtin (see section 4.3.1 The Set Builtin). +builtin (see section 4.3 The Set Builtin).

  • The `-x' (xtrace) option displays commands other than simple commands when performing an execution trace -(see section 4.3.1 The Set Builtin). +(see section 4.3 The Set Builtin).

  • @@ -12831,24 +12713,24 @@ that may be reused as input (see section 4.1 Bourne
  • Bash implements a csh-like directory stack, and provides the pushd, popd, and dirs builtins to manipulate it -(see section 6.8 The Directory Stack). +(see section 6.8 The Directory Stack). Bash also makes the directory stack visible as the value of the DIRSTACK shell variable.

  • Bash interprets special backslash-escaped characters in the prompt -strings when interactive (see section 6.9 Controlling the Prompt). +strings when interactive (see section 6.9 Controlling the Prompt).

  • -The Bash restricted mode is more useful (see section 6.10 The Restricted Shell); +The Bash restricted mode is more useful (see section 6.10 The Restricted Shell); the SVR4.2 shell restricted mode is too limited.

  • The disown builtin can remove a job from the internal shell -job table (see section 7.2 Job Control Builtins) or suppress the sending +job table (see section 7.2 Job Control Builtins) or suppress the sending of SIGHUP to a job when the shell exits as the result of a SIGHUP.

    @@ -12879,24 +12761,24 @@ The SVR4.2 sh uses a TIMEOUT variable like Bash uses

    -More features unique to Bash may be found in 6. Bash Features. +More features unique to Bash may be found in 6. Bash Features.


    - + - - - - - + + + + + - +
    [ < ][ > ]   [ << ][ Up ][ >> ]
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

    B.1 Implementation Differences From The SVR4.2 Shell

    - +

    Since Bash is a completely new implementation, it does not suffer from @@ -12968,46 +12850,46 @@ The SVR4.2 shell behaves differently when invoked as jsh


    - + - - - + + + - + - +
    [ < ][ > ]   [ << ]
    [ < ][ > ]   [ << ] [ Up ][ >> ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

    C. Copying This Manual

    - +

    - +
    C.1 GNU Free Documentation License  License for copying this manual.
    C.1 GNU Free Documentation License  License for copying this manual.


    - + - - - - - + + + + + - +
    [ < ][ > ]   [ << ][ Up ][ >> ]
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

    C.1 GNU Free Documentation License

    - +

    - +

    Version 1.2, November 2002
    @@ -13477,20 +13359,20 @@ as a draft) by the Free Software Foundation.


    - + - - - - - + + + + + - +
    [ < ][ > ]   [ << ][ Up ][ >> ]
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top] [Contents][Index][Index] [ ? ]

    C.1.1 ADDENDUM: How to use this License for your documents

    - +

    To use this License in a document you have written, include a copy of @@ -13527,51 +13409,22 @@ free software license, such as the GNU General Public License, to permit their use in free software.

    - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    D. Indexes

    - -

    - -

    - - - - - -
    D.1 Index of Shell Builtin Commands  Index of Bash builtin commands.
    D.2 Index of Shell Reserved Words  Index of Bash reserved words.
    D.3 Parameter and Variable Index  Quick reference helps you find the - variable you want.
    D.4 Function Index  Index of bindable Readline functions.
    D.5 Concept Index  General index for concepts described in - this manual.
    -

    -


    - + - - + + - + - +
    [ < ][ > ]
    [ < ][ > ]   [ << ][ Up ][ Up ] [ >> ]         [Top] [Contents][Index][Index] [ ? ]
    -

    D.1 Index of Shell Builtin Commands

    - +

    Index of Shell Builtin Commands

    + - + @@ -13639,14 +13492,14 @@ to permit their use in free software. - - + + - - + + @@ -13657,8 +13510,8 @@ to permit their use in free software. - - + + @@ -13666,13 +13519,13 @@ to permit their use in free software. - + - + - + @@ -13680,9 +13533,9 @@ to permit their use in free software. - + - + @@ -13691,27 +13544,27 @@ to permit their use in free software. - + - - - + + + - - + + - + - + - +
    Jump to:   .   : @@ -13630,7 +13483,7 @@ to permit their use in free software.
    alias4.2 Bash Builtin Commands

    B
    bg7.2 Job Control Builtins
    bg7.2 Job Control Builtins
    bind4.2 Bash Builtin Commands
    break4.1 Bourne Shell Builtins
    builtin4.2 Bash Builtin Commands
    caller4.2 Bash Builtin Commands
    cd4.1 Bourne Shell Builtins
    command4.2 Bash Builtin Commands
    compgen8.7 Programmable Completion Builtins
    complete8.7 Programmable Completion Builtins
    compgen8.7 Programmable Completion Builtins
    complete8.7 Programmable Completion Builtins
    continue4.1 Bourne Shell Builtins

    D
    declare4.2 Bash Builtin Commands
    dirs6.8.1 Directory Stack Builtins
    disown7.2 Job Control Builtins
    dirs6.8.1 Directory Stack Builtins
    disown7.2 Job Control Builtins

    E
    echo4.2 Bash Builtin Commands
    export4.1 Bourne Shell Builtins

    F
    fc9.2 Bash History Builtins
    fg7.2 Job Control Builtins
    fc9.2 Bash History Builtins
    fg7.2 Job Control Builtins

    G
    getopts4.1 Bourne Shell Builtins
    H
    hash4.1 Bourne Shell Builtins
    help4.2 Bash Builtin Commands
    history9.2 Bash History Builtins
    history9.2 Bash History Builtins

    J
    jobs7.2 Job Control Builtins
    jobs7.2 Job Control Builtins

    K
    kill7.2 Job Control Builtins
    kill7.2 Job Control Builtins

    L
    let4.2 Bash Builtin Commands
    logout4.2 Bash Builtin Commands

    P
    popd6.8.1 Directory Stack Builtins
    popd6.8.1 Directory Stack Builtins
    printf4.2 Bash Builtin Commands
    pushd6.8.1 Directory Stack Builtins
    pushd6.8.1 Directory Stack Builtins
    pwd4.1 Bourne Shell Builtins

    R
    return4.1 Bourne Shell Builtins

    S
    set4.3.1 The Set Builtin
    set4.3 The Set Builtin
    shift4.1 Bourne Shell Builtins
    shopt4.3.2 The Shopt Builtin
    source4.2 Bash Builtin Commands
    suspend7.2 Job Control Builtins
    shopt4.2 Bash Builtin Commands
    source4.2 Bash Builtin Commands
    suspend7.2 Job Control Builtins

    T
    test4.1 Bourne Shell Builtins
    times4.1 Bourne Shell Builtins
    trap4.1 Bourne Shell Builtins
    type4.2 Bash Builtin Commands
    typeset4.2 Bash Builtin Commands
    type4.2 Bash Builtin Commands
    typeset4.2 Bash Builtin Commands

    U
    ulimit4.2 Bash Builtin Commands
    ulimit4.2 Bash Builtin Commands
    umask4.1 Bourne Shell Builtins
    unalias4.2 Bash Builtin Commands
    unalias4.2 Bash Builtin Commands
    unset4.1 Bourne Shell Builtins

    W
    wait7.2 Job Control Builtins
    wait7.2 Job Control Builtins

    Jump to:   .   @@ -13758,20 +13611,20 @@ to permit their use in free software.
    - + - - - - + + + + - +
    [ < ][ > ]   [ << ][ Up ]
    [ < ][ > ]   [ << ][ Up ] [ >> ]         [Top] [Contents][Index][Index] [ ? ]
    -

    D.2 Index of Shell Reserved Words

    - +

    Index of Shell Reserved Words

    +
    Jump to:   !   [ @@ -13887,20 +13740,20 @@ to permit their use in free software.
    - + - - - - + + + + - +
    [ < ][ > ]   [ << ][ Up ]
    [ < ][ > ]   [ << ][ Up ] [ >> ]         [Top] [Contents][Index][Index] [ ? ]
    -

    D.3 Parameter and Variable Index

    - +

    Parameter and Variable Index

    + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - + + + - - - - - - - + + + + + + + - - - - - - + + + + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + - + - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - - - - - - - + + + + + + + + + + - - - - - - + + + + + + - - + + - +
    Jump to:   !   # @@ -13999,236 +13852,230 @@ to permit their use in free software.
    _3.4.2 Special Parameters

    A
    auto_resume7.3 Job Control Variables
    auto_resume7.3 Job Control Variables
    auto_resume7.3 Job Control Variables
    auto_resume7.3 Job Control Variables

    B
    BASH5.2 Bash Variables
    BASH5.2 Bash Variables
    BASH_ARGC5.2 Bash Variables
    BASH_ARGC5.2 Bash Variables
    BASH_ARGV5.2 Bash Variables
    BASH_ARGV5.2 Bash Variables
    BASH_COMMAND5.2 Bash Variables
    BASH_COMMAND5.2 Bash Variables
    BASH_ENV5.2 Bash Variables
    BASH_ENV5.2 Bash Variables
    BASH_EXECUTION_STRING5.2 Bash Variables
    BASH_EXECUTION_STRING5.2 Bash Variables
    BASH_LINENO5.2 Bash Variables
    BASH_LINENO5.2 Bash Variables
    BASH_REMATCH5.2 Bash Variables
    BASH_REMATCH5.2 Bash Variables
    BASH_SOURCE5.2 Bash Variables
    BASH_SOURCE5.2 Bash Variables
    BASH_SUBSHELL5.2 Bash Variables
    BASH_SUBSHELL5.2 Bash Variables
    BASH_VERSINFO5.2 Bash Variables
    BASH_VERSINFO5.2 Bash Variables
    BASH_VERSION5.2 Bash Variables
    BASH_VERSION5.2 Bash Variables
    BASHPID5.2 Bash Variables
    BASHPID5.2 Bash Variables
    bell-style8.3.1 Readline Init File Syntax
    bind-tty-special-chars8.3.1 Readline Init File Syntax
    BASH5.2 Bash Variables
    BASH5.2 Bash Variables
    BASH_ARGC5.2 Bash Variables
    BASH_ARGC5.2 Bash Variables
    BASH_ARGV5.2 Bash Variables
    BASH_ARGV5.2 Bash Variables
    BASH_COMMAND5.2 Bash Variables
    BASH_COMMAND5.2 Bash Variables
    BASH_ENV5.2 Bash Variables
    BASH_ENV5.2 Bash Variables
    BASH_EXECUTION_STRING5.2 Bash Variables
    BASH_EXECUTION_STRING5.2 Bash Variables
    BASH_LINENO5.2 Bash Variables
    BASH_LINENO5.2 Bash Variables
    BASH_REMATCH5.2 Bash Variables
    BASH_REMATCH5.2 Bash Variables
    BASH_SOURCE5.2 Bash Variables
    BASH_SOURCE5.2 Bash Variables
    BASH_SUBSHELL5.2 Bash Variables
    BASH_SUBSHELL5.2 Bash Variables
    BASH_VERSINFO5.2 Bash Variables
    BASH_VERSINFO5.2 Bash Variables
    BASH_VERSION5.2 Bash Variables
    BASH_VERSION5.2 Bash Variables
    bell-style8.3.1 Readline Init File Syntax
    bind-tty-special-chars8.3.1 Readline Init File Syntax

    C
    CDPATH5.1 Bourne Shell Variables
    CDPATH5.1 Bourne Shell Variables
    COLUMNS5.2 Bash Variables
    COLUMNS5.2 Bash Variables
    comment-begin8.3.1 Readline Init File Syntax
    COMP_CWORD5.2 Bash Variables
    COMP_CWORD5.2 Bash Variables
    COMP_KEY5.2 Bash Variables
    COMP_KEY5.2 Bash Variables
    COMP_LINE5.2 Bash Variables
    COMP_LINE5.2 Bash Variables
    COMP_POINT5.2 Bash Variables
    COMP_POINT5.2 Bash Variables
    COMP_TYPE5.2 Bash Variables
    COMP_TYPE5.2 Bash Variables
    COMP_WORDBREAKS5.2 Bash Variables
    COMP_WORDBREAKS5.2 Bash Variables
    COMP_WORDS5.2 Bash Variables
    COMP_WORDS5.2 Bash Variables
    completion-query-items8.3.1 Readline Init File Syntax
    COMPREPLY5.2 Bash Variables
    COMPREPLY5.2 Bash Variables
    convert-meta8.3.1 Readline Init File Syntax
    CDPATH5.1 Bourne Shell Variables
    CDPATH5.1 Bourne Shell Variables
    COLUMNS5.2 Bash Variables
    COLUMNS5.2 Bash Variables
    comment-begin8.3.1 Readline Init File Syntax
    COMP_CWORD5.2 Bash Variables
    COMP_CWORD5.2 Bash Variables
    COMP_LINE5.2 Bash Variables
    COMP_LINE5.2 Bash Variables
    COMP_POINT5.2 Bash Variables
    COMP_POINT5.2 Bash Variables
    COMP_WORDBREAKS5.2 Bash Variables
    COMP_WORDBREAKS5.2 Bash Variables
    COMP_WORDS5.2 Bash Variables
    COMP_WORDS5.2 Bash Variables
    completion-query-items8.3.1 Readline Init File Syntax
    COMPREPLY5.2 Bash Variables
    COMPREPLY5.2 Bash Variables
    convert-meta8.3.1 Readline Init File Syntax

    D
    DIRSTACK5.2 Bash Variables
    DIRSTACK5.2 Bash Variables
    disable-completion8.3.1 Readline Init File Syntax
    DIRSTACK5.2 Bash Variables
    DIRSTACK5.2 Bash Variables
    disable-completion8.3.1 Readline Init File Syntax

    E
    editing-mode8.3.1 Readline Init File Syntax
    EMACS5.2 Bash Variables
    EMACS5.2 Bash Variables
    enable-keypad8.3.1 Readline Init File Syntax
    EUID5.2 Bash Variables
    EUID5.2 Bash Variables
    expand-tilde8.3.1 Readline Init File Syntax
    editing-mode8.3.1 Readline Init File Syntax
    EMACS5.2 Bash Variables
    EMACS5.2 Bash Variables
    enable-keypad8.3.1 Readline Init File Syntax
    EUID5.2 Bash Variables
    EUID5.2 Bash Variables
    expand-tilde8.3.1 Readline Init File Syntax

    F
    FCEDIT5.2 Bash Variables
    FCEDIT5.2 Bash Variables
    FIGNORE5.2 Bash Variables
    FIGNORE5.2 Bash Variables
    FUNCNAME5.2 Bash Variables
    FUNCNAME5.2 Bash Variables
    FCEDIT5.2 Bash Variables
    FCEDIT5.2 Bash Variables
    FIGNORE5.2 Bash Variables
    FIGNORE5.2 Bash Variables
    FUNCNAME5.2 Bash Variables
    FUNCNAME5.2 Bash Variables

    G
    GLOBIGNORE5.2 Bash Variables
    GLOBIGNORE5.2 Bash Variables
    GROUPS5.2 Bash Variables
    GROUPS5.2 Bash Variables
    GLOBIGNORE5.2 Bash Variables
    GLOBIGNORE5.2 Bash Variables
    GROUPS5.2 Bash Variables
    GROUPS5.2 Bash Variables

    H
    histchars5.2 Bash Variables
    histchars5.2 Bash Variables
    HISTCMD5.2 Bash Variables
    HISTCMD5.2 Bash Variables
    HISTCONTROL5.2 Bash Variables
    HISTCONTROL5.2 Bash Variables
    HISTFILE5.2 Bash Variables
    HISTFILE5.2 Bash Variables
    HISTFILESIZE5.2 Bash Variables
    HISTFILESIZE5.2 Bash Variables
    HISTIGNORE5.2 Bash Variables
    HISTIGNORE5.2 Bash Variables
    history-preserve-point8.3.1 Readline Init File Syntax
    HISTSIZE5.2 Bash Variables
    HISTSIZE5.2 Bash Variables
    HISTTIMEFORMAT5.2 Bash Variables
    HISTTIMEFORMAT5.2 Bash Variables
    HOME5.1 Bourne Shell Variables
    HOME5.1 Bourne Shell Variables
    horizontal-scroll-mode8.3.1 Readline Init File Syntax
    HOSTFILE5.2 Bash Variables
    HOSTFILE5.2 Bash Variables
    HOSTNAME5.2 Bash Variables
    HOSTNAME5.2 Bash Variables
    HOSTTYPE5.2 Bash Variables
    HOSTTYPE5.2 Bash Variables
    histchars5.2 Bash Variables
    histchars5.2 Bash Variables
    HISTCMD5.2 Bash Variables
    HISTCMD5.2 Bash Variables
    HISTCONTROL5.2 Bash Variables
    HISTCONTROL5.2 Bash Variables
    HISTFILE5.2 Bash Variables
    HISTFILE5.2 Bash Variables
    HISTFILESIZE5.2 Bash Variables
    HISTFILESIZE5.2 Bash Variables
    HISTIGNORE5.2 Bash Variables
    HISTIGNORE5.2 Bash Variables
    history-preserve-point8.3.1 Readline Init File Syntax
    HISTSIZE5.2 Bash Variables
    HISTSIZE5.2 Bash Variables
    HISTTIMEFORMAT5.2 Bash Variables
    HISTTIMEFORMAT5.2 Bash Variables
    HOME5.1 Bourne Shell Variables
    HOME5.1 Bourne Shell Variables
    horizontal-scroll-mode8.3.1 Readline Init File Syntax
    HOSTFILE5.2 Bash Variables
    HOSTFILE5.2 Bash Variables
    HOSTNAME5.2 Bash Variables
    HOSTNAME5.2 Bash Variables
    HOSTTYPE5.2 Bash Variables
    HOSTTYPE5.2 Bash Variables

    I
    IFS5.1 Bourne Shell Variables
    IFS5.1 Bourne Shell Variables
    IGNOREEOF5.2 Bash Variables
    IGNOREEOF5.2 Bash Variables
    input-meta8.3.1 Readline Init File Syntax
    INPUTRC5.2 Bash Variables
    INPUTRC5.2 Bash Variables
    isearch-terminators8.3.1 Readline Init File Syntax
    IFS5.1 Bourne Shell Variables
    IFS5.1 Bourne Shell Variables
    IGNOREEOF5.2 Bash Variables
    IGNOREEOF5.2 Bash Variables
    input-meta8.3.1 Readline Init File Syntax
    INPUTRC5.2 Bash Variables
    INPUTRC5.2 Bash Variables
    isearch-terminators8.3.1 Readline Init File Syntax

    K
    keymap8.3.1 Readline Init File Syntax
    keymap8.3.1 Readline Init File Syntax

    L
    LANG5.2 Bash Variables
    LANG5.2 Bash Variables
    LC_ALL5.2 Bash Variables
    LC_ALL5.2 Bash Variables
    LC_COLLATE5.2 Bash Variables
    LC_COLLATE5.2 Bash Variables
    LC_CTYPE5.2 Bash Variables
    LC_CTYPE5.2 Bash Variables
    LANG5.2 Bash Variables
    LANG5.2 Bash Variables
    LC_ALL5.2 Bash Variables
    LC_ALL5.2 Bash Variables
    LC_COLLATE5.2 Bash Variables
    LC_COLLATE5.2 Bash Variables
    LC_CTYPE5.2 Bash Variables
    LC_CTYPE5.2 Bash Variables
    LC_MESSAGES3.1.2.5 Locale-Specific Translation
    LC_MESSAGES5.2 Bash Variables
    LC_MESSAGES5.2 Bash Variables
    LC_NUMERIC5.2 Bash Variables
    LC_NUMERIC5.2 Bash Variables
    LINENO5.2 Bash Variables
    LINENO5.2 Bash Variables
    LINES5.2 Bash Variables
    LINES5.2 Bash Variables
    LC_MESSAGES5.2 Bash Variables
    LC_MESSAGES5.2 Bash Variables
    LC_NUMERIC5.2 Bash Variables
    LC_NUMERIC5.2 Bash Variables
    LINENO5.2 Bash Variables
    LINENO5.2 Bash Variables
    LINES5.2 Bash Variables
    LINES5.2 Bash Variables

    M
    MACHTYPE5.2 Bash Variables
    MACHTYPE5.2 Bash Variables
    MAIL5.1 Bourne Shell Variables
    MAIL5.1 Bourne Shell Variables
    MAILCHECK5.2 Bash Variables
    MAILCHECK5.2 Bash Variables
    MAILPATH5.1 Bourne Shell Variables
    MAILPATH5.1 Bourne Shell Variables
    mark-modified-lines8.3.1 Readline Init File Syntax
    mark-symlinked-directories8.3.1 Readline Init File Syntax
    match-hidden-files8.3.1 Readline Init File Syntax
    meta-flag8.3.1 Readline Init File Syntax
    MACHTYPE5.2 Bash Variables
    MACHTYPE5.2 Bash Variables
    MAIL5.1 Bourne Shell Variables
    MAIL5.1 Bourne Shell Variables
    MAILCHECK5.2 Bash Variables
    MAILCHECK5.2 Bash Variables
    MAILPATH5.1 Bourne Shell Variables
    MAILPATH5.1 Bourne Shell Variables
    mark-modified-lines8.3.1 Readline Init File Syntax
    mark-symlinked-directories8.3.1 Readline Init File Syntax
    match-hidden-files8.3.1 Readline Init File Syntax
    meta-flag8.3.1 Readline Init File Syntax

    O
    OLDPWD5.2 Bash Variables
    OLDPWD5.2 Bash Variables
    OPTARG5.1 Bourne Shell Variables
    OPTARG5.1 Bourne Shell Variables
    OPTERR5.2 Bash Variables
    OPTERR5.2 Bash Variables
    OPTIND5.1 Bourne Shell Variables
    OPTIND5.1 Bourne Shell Variables
    OSTYPE5.2 Bash Variables
    OSTYPE5.2 Bash Variables
    output-meta8.3.1 Readline Init File Syntax
    OLDPWD5.2 Bash Variables
    OLDPWD5.2 Bash Variables
    OPTARG5.1 Bourne Shell Variables
    OPTARG5.1 Bourne Shell Variables
    OPTERR5.2 Bash Variables
    OPTERR5.2 Bash Variables
    OPTIND5.1 Bourne Shell Variables
    OPTIND5.1 Bourne Shell Variables
    OSTYPE5.2 Bash Variables
    OSTYPE5.2 Bash Variables
    output-meta8.3.1 Readline Init File Syntax

    P
    page-completions8.3.1 Readline Init File Syntax
    PATH5.1 Bourne Shell Variables
    PATH5.1 Bourne Shell Variables
    PIPESTATUS5.2 Bash Variables
    PIPESTATUS5.2 Bash Variables
    POSIXLY_CORRECT5.2 Bash Variables
    POSIXLY_CORRECT5.2 Bash Variables
    PPID5.2 Bash Variables
    PPID5.2 Bash Variables
    PROMPT_COMMAND5.2 Bash Variables
    PROMPT_COMMAND5.2 Bash Variables
    PS15.1 Bourne Shell Variables
    PS15.1 Bourne Shell Variables
    PS25.1 Bourne Shell Variables
    PS25.1 Bourne Shell Variables
    PS35.2 Bash Variables
    PS35.2 Bash Variables
    PS45.2 Bash Variables
    PS45.2 Bash Variables
    PWD5.2 Bash Variables
    PWD5.2 Bash Variables
    page-completions8.3.1 Readline Init File Syntax
    PATH5.1 Bourne Shell Variables
    PATH5.1 Bourne Shell Variables
    PIPESTATUS5.2 Bash Variables
    PIPESTATUS5.2 Bash Variables
    POSIXLY_CORRECT5.2 Bash Variables
    POSIXLY_CORRECT5.2 Bash Variables
    PPID5.2 Bash Variables
    PPID5.2 Bash Variables
    PROMPT_COMMAND5.2 Bash Variables
    PROMPT_COMMAND5.2 Bash Variables
    PS15.1 Bourne Shell Variables
    PS15.1 Bourne Shell Variables
    PS25.1 Bourne Shell Variables
    PS25.1 Bourne Shell Variables
    PS35.2 Bash Variables
    PS35.2 Bash Variables
    PS45.2 Bash Variables
    PS45.2 Bash Variables
    PWD5.2 Bash Variables
    PWD5.2 Bash Variables

    R
    RANDOM5.2 Bash Variables
    RANDOM5.2 Bash Variables
    REPLY5.2 Bash Variables
    REPLY5.2 Bash Variables
    RANDOM5.2 Bash Variables
    RANDOM5.2 Bash Variables
    REPLY5.2 Bash Variables
    REPLY5.2 Bash Variables

    S
    SECONDS5.2 Bash Variables
    SECONDS5.2 Bash Variables
    SHELL5.2 Bash Variables
    SHELL5.2 Bash Variables
    SHELLOPTS5.2 Bash Variables
    SHELLOPTS5.2 Bash Variables
    SHLVL5.2 Bash Variables
    SHLVL5.2 Bash Variables
    show-all-if-ambiguous8.3.1 Readline Init File Syntax
    show-all-if-unmodified8.3.1 Readline Init File Syntax
    SECONDS5.2 Bash Variables
    SECONDS5.2 Bash Variables
    SHELL5.2 Bash Variables
    SHELL5.2 Bash Variables
    SHELLOPTS5.2 Bash Variables
    SHELLOPTS5.2 Bash Variables
    SHLVL5.2 Bash Variables
    SHLVL5.2 Bash Variables
    show-all-if-ambiguous8.3.1 Readline Init File Syntax
    show-all-if-unmodified8.3.1 Readline Init File Syntax

    T
    TEXTDOMAIN3.1.2.5 Locale-Specific Translation
    TEXTDOMAINDIR3.1.2.5 Locale-Specific Translation
    TIMEFORMAT5.2 Bash Variables
    TIMEFORMAT5.2 Bash Variables
    TMOUT5.2 Bash Variables
    TMOUT5.2 Bash Variables
    TMPDIR5.2 Bash Variables
    TMPDIR5.2 Bash Variables
    TIMEFORMAT5.2 Bash Variables
    TIMEFORMAT5.2 Bash Variables
    TMOUT5.2 Bash Variables
    TMOUT5.2 Bash Variables
    TMPDIR5.2 Bash Variables
    TMPDIR5.2 Bash Variables

    U
    UID5.2 Bash Variables
    UID5.2 Bash Variables
    UID5.2 Bash Variables
    UID5.2 Bash Variables

    V
    visible-stats8.3.1 Readline Init File Syntax
    visible-stats8.3.1 Readline Init File Syntax

    Jump to:   !   @@ -14291,20 +14138,20 @@ to permit their use in free software.
    - + - - - - + + + + - +
    [ < ][ > ]   [ << ][ Up ]
    [ < ][ > ]   [ << ][ Up ] [ >> ]         [Top] [Contents][Index][Index] [ ? ]
    -

    D.4 Function Index

    - +

    Function Index

    + - - - - - - + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - + + + + + + - - - - - - - - + + + + + + + + - - - - - - + + + + + + - - - - - - - - + + + + + + + + - - - - + + + + - - - - - - + + + + + + - - - - + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - + + - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - + + + + + + + +
    Jump to:   A   B @@ -14350,236 +14197,236 @@ to permit their use in free software.
    Index Entry Section

    A
    abort (C-g)8.4.8 Some Miscellaneous Commands
    abort (C-g)8.4.8 Some Miscellaneous Commands
    accept-line (Newline or Return)8.4.2 Commands For Manipulating The History
    accept-line (Newline or Return)8.4.2 Commands For Manipulating The History
    alias-expand-line ()8.4.8 Some Miscellaneous Commands
    alias-expand-line ()8.4.8 Some Miscellaneous Commands
    abort (C-g)8.4.8 Some Miscellaneous Commands
    abort (C-g)8.4.8 Some Miscellaneous Commands
    accept-line (Newline or Return)8.4.2 Commands For Manipulating The History
    accept-line (Newline or Return)8.4.2 Commands For Manipulating The History
    alias-expand-line ()8.4.8 Some Miscellaneous Commands
    alias-expand-line ()8.4.8 Some Miscellaneous Commands

    B
    backward-char (C-b)8.4.1 Commands For Moving
    backward-char (C-b)8.4.1 Commands For Moving
    backward-delete-char (Rubout)8.4.3 Commands For Changing Text
    backward-delete-char (Rubout)8.4.3 Commands For Changing Text
    backward-kill-line (C-x Rubout)8.4.4 Killing And Yanking
    backward-kill-line (C-x Rubout)8.4.4 Killing And Yanking
    backward-kill-word (M-DEL)8.4.4 Killing And Yanking
    backward-kill-word (M-DEL)8.4.4 Killing And Yanking
    backward-word (M-b)8.4.1 Commands For Moving
    backward-word (M-b)8.4.1 Commands For Moving
    beginning-of-history (M-&#60;)8.4.2 Commands For Manipulating The History
    beginning-of-history (M-&#60;)8.4.2 Commands For Manipulating The History
    beginning-of-line (C-a)8.4.1 Commands For Moving
    beginning-of-line (C-a)8.4.1 Commands For Moving
    backward-char (C-b)8.4.1 Commands For Moving
    backward-char (C-b)8.4.1 Commands For Moving
    backward-delete-char (Rubout)8.4.3 Commands For Changing Text
    backward-delete-char (Rubout)8.4.3 Commands For Changing Text
    backward-kill-line (C-x Rubout)8.4.4 Killing And Yanking
    backward-kill-line (C-x Rubout)8.4.4 Killing And Yanking
    backward-kill-word (M-DEL)8.4.4 Killing And Yanking
    backward-kill-word (M-DEL)8.4.4 Killing And Yanking
    backward-word (M-b)8.4.1 Commands For Moving
    backward-word (M-b)8.4.1 Commands For Moving
    beginning-of-history (M-&#60;)8.4.2 Commands For Manipulating The History
    beginning-of-history (M-&#60;)8.4.2 Commands For Manipulating The History
    beginning-of-line (C-a)8.4.1 Commands For Moving
    beginning-of-line (C-a)8.4.1 Commands For Moving

    C
    call-last-kbd-macro (C-x e)8.4.7 Keyboard Macros
    call-last-kbd-macro (C-x e)8.4.7 Keyboard Macros
    capitalize-word (M-c)8.4.3 Commands For Changing Text
    capitalize-word (M-c)8.4.3 Commands For Changing Text
    character-search (C-])8.4.8 Some Miscellaneous Commands
    character-search (C-])8.4.8 Some Miscellaneous Commands
    character-search-backward (M-C-])8.4.8 Some Miscellaneous Commands
    character-search-backward (M-C-])8.4.8 Some Miscellaneous Commands
    clear-screen (C-l)8.4.1 Commands For Moving
    clear-screen (C-l)8.4.1 Commands For Moving
    complete (TAB)8.4.6 Letting Readline Type For You
    complete (TAB)8.4.6 Letting Readline Type For You
    complete-command (M-!)8.4.6 Letting Readline Type For You
    complete-command (M-!)8.4.6 Letting Readline Type For You
    complete-filename (M-/)8.4.6 Letting Readline Type For You
    complete-filename (M-/)8.4.6 Letting Readline Type For You
    complete-hostname (M-@)8.4.6 Letting Readline Type For You
    complete-hostname (M-@)8.4.6 Letting Readline Type For You
    complete-into-braces (M-{)8.4.6 Letting Readline Type For You
    complete-into-braces (M-{)8.4.6 Letting Readline Type For You
    complete-username (M-~)8.4.6 Letting Readline Type For You
    complete-username (M-~)8.4.6 Letting Readline Type For You
    complete-variable (M-$)8.4.6 Letting Readline Type For You
    complete-variable (M-$)8.4.6 Letting Readline Type For You
    copy-backward-word ()8.4.4 Killing And Yanking
    copy-backward-word ()8.4.4 Killing And Yanking
    copy-forward-word ()8.4.4 Killing And Yanking
    copy-forward-word ()8.4.4 Killing And Yanking
    copy-region-as-kill ()8.4.4 Killing And Yanking
    copy-region-as-kill ()8.4.4 Killing And Yanking
    call-last-kbd-macro (C-x e)8.4.7 Keyboard Macros
    call-last-kbd-macro (C-x e)8.4.7 Keyboard Macros
    capitalize-word (M-c)8.4.3 Commands For Changing Text
    capitalize-word (M-c)8.4.3 Commands For Changing Text
    character-search (C-])8.4.8 Some Miscellaneous Commands
    character-search (C-])8.4.8 Some Miscellaneous Commands
    character-search-backward (M-C-])8.4.8 Some Miscellaneous Commands
    character-search-backward (M-C-])8.4.8 Some Miscellaneous Commands
    clear-screen (C-l)8.4.1 Commands For Moving
    clear-screen (C-l)8.4.1 Commands For Moving
    complete (TAB)8.4.6 Letting Readline Type For You
    complete (TAB)8.4.6 Letting Readline Type For You
    complete-command (M-!)8.4.6 Letting Readline Type For You
    complete-command (M-!)8.4.6 Letting Readline Type For You
    complete-filename (M-/)8.4.6 Letting Readline Type For You
    complete-filename (M-/)8.4.6 Letting Readline Type For You
    complete-hostname (M-@)8.4.6 Letting Readline Type For You
    complete-hostname (M-@)8.4.6 Letting Readline Type For You
    complete-into-braces (M-{)8.4.6 Letting Readline Type For You
    complete-into-braces (M-{)8.4.6 Letting Readline Type For You
    complete-username (M-~)8.4.6 Letting Readline Type For You
    complete-username (M-~)8.4.6 Letting Readline Type For You
    complete-variable (M-$)8.4.6 Letting Readline Type For You
    complete-variable (M-$)8.4.6 Letting Readline Type For You
    copy-backward-word ()8.4.4 Killing And Yanking
    copy-backward-word ()8.4.4 Killing And Yanking
    copy-forward-word ()8.4.4 Killing And Yanking
    copy-forward-word ()8.4.4 Killing And Yanking
    copy-region-as-kill ()8.4.4 Killing And Yanking
    copy-region-as-kill ()8.4.4 Killing And Yanking

    D
    delete-char (C-d)8.4.3 Commands For Changing Text
    delete-char (C-d)8.4.3 Commands For Changing Text
    delete-char-or-list ()8.4.6 Letting Readline Type For You
    delete-char-or-list ()8.4.6 Letting Readline Type For You
    delete-horizontal-space ()8.4.4 Killing And Yanking
    delete-horizontal-space ()8.4.4 Killing And Yanking
    digit-argument (M-0, M-1, <small>...</small> M--)8.4.5 Specifying Numeric Arguments
    digit-argument (M-0, M-1, <small>...</small> M--)8.4.5 Specifying Numeric Arguments
    display-shell-version (C-x C-v)8.4.8 Some Miscellaneous Commands
    display-shell-version (C-x C-v)8.4.8 Some Miscellaneous Commands
    do-uppercase-version (M-a, M-b, M-x, <small>...</small>)8.4.8 Some Miscellaneous Commands
    do-uppercase-version (M-a, M-b, M-x, <small>...</small>)8.4.8 Some Miscellaneous Commands
    downcase-word (M-l)8.4.3 Commands For Changing Text
    downcase-word (M-l)8.4.3 Commands For Changing Text
    dump-functions ()8.4.8 Some Miscellaneous Commands
    dump-functions ()8.4.8 Some Miscellaneous Commands
    dump-macros ()8.4.8 Some Miscellaneous Commands
    dump-macros ()8.4.8 Some Miscellaneous Commands
    dump-variables ()8.4.8 Some Miscellaneous Commands
    dump-variables ()8.4.8 Some Miscellaneous Commands
    dynamic-complete-history (M-TAB)8.4.6 Letting Readline Type For You
    dynamic-complete-history (M-TAB)8.4.6 Letting Readline Type For You
    delete-char (C-d)8.4.3 Commands For Changing Text
    delete-char (C-d)8.4.3 Commands For Changing Text
    delete-char-or-list ()8.4.6 Letting Readline Type For You
    delete-char-or-list ()8.4.6 Letting Readline Type For You
    delete-horizontal-space ()8.4.4 Killing And Yanking
    delete-horizontal-space ()8.4.4 Killing And Yanking
    digit-argument (M-0, M-1, <small>...</small> M--)8.4.5 Specifying Numeric Arguments
    digit-argument (M-0, M-1, <small>...</small> M--)8.4.5 Specifying Numeric Arguments
    display-shell-version (C-x C-v)8.4.8 Some Miscellaneous Commands
    display-shell-version (C-x C-v)8.4.8 Some Miscellaneous Commands
    do-uppercase-version (M-a, M-b, M-x, <small>...</small>)8.4.8 Some Miscellaneous Commands
    do-uppercase-version (M-a, M-b, M-x, <small>...</small>)8.4.8 Some Miscellaneous Commands
    downcase-word (M-l)8.4.3 Commands For Changing Text
    downcase-word (M-l)8.4.3 Commands For Changing Text
    dump-functions ()8.4.8 Some Miscellaneous Commands
    dump-functions ()8.4.8 Some Miscellaneous Commands
    dump-macros ()8.4.8 Some Miscellaneous Commands
    dump-macros ()8.4.8 Some Miscellaneous Commands
    dump-variables ()8.4.8 Some Miscellaneous Commands
    dump-variables ()8.4.8 Some Miscellaneous Commands
    dynamic-complete-history (M-TAB)8.4.6 Letting Readline Type For You
    dynamic-complete-history (M-TAB)8.4.6 Letting Readline Type For You

    E
    edit-and-execute-command (C-xC-e)8.4.8 Some Miscellaneous Commands
    edit-and-execute-command (C-xC-e)8.4.8 Some Miscellaneous Commands
    end-kbd-macro (C-x ))8.4.7 Keyboard Macros
    end-kbd-macro (C-x ))8.4.7 Keyboard Macros
    end-of-history (M-&#62;)8.4.2 Commands For Manipulating The History
    end-of-history (M-&#62;)8.4.2 Commands For Manipulating The History
    end-of-line (C-e)8.4.1 Commands For Moving
    end-of-line (C-e)8.4.1 Commands For Moving
    exchange-point-and-mark (C-x C-x)8.4.8 Some Miscellaneous Commands
    exchange-point-and-mark (C-x C-x)8.4.8 Some Miscellaneous Commands
    edit-and-execute-command (C-xC-e)8.4.8 Some Miscellaneous Commands
    edit-and-execute-command (C-xC-e)8.4.8 Some Miscellaneous Commands
    end-kbd-macro (C-x ))8.4.7 Keyboard Macros
    end-kbd-macro (C-x ))8.4.7 Keyboard Macros
    end-of-history (M-&#62;)8.4.2 Commands For Manipulating The History
    end-of-history (M-&#62;)8.4.2 Commands For Manipulating The History
    end-of-line (C-e)8.4.1 Commands For Moving
    end-of-line (C-e)8.4.1 Commands For Moving
    exchange-point-and-mark (C-x C-x)8.4.8 Some Miscellaneous Commands
    exchange-point-and-mark (C-x C-x)8.4.8 Some Miscellaneous Commands

    F
    forward-backward-delete-char ()8.4.3 Commands For Changing Text
    forward-backward-delete-char ()8.4.3 Commands For Changing Text
    forward-char (C-f)8.4.1 Commands For Moving
    forward-char (C-f)8.4.1 Commands For Moving
    forward-search-history (C-s)8.4.2 Commands For Manipulating The History
    forward-search-history (C-s)8.4.2 Commands For Manipulating The History
    forward-word (M-f)8.4.1 Commands For Moving
    forward-word (M-f)8.4.1 Commands For Moving
    forward-backward-delete-char ()8.4.3 Commands For Changing Text
    forward-backward-delete-char ()8.4.3 Commands For Changing Text
    forward-char (C-f)8.4.1 Commands For Moving
    forward-char (C-f)8.4.1 Commands For Moving
    forward-search-history (C-s)8.4.2 Commands For Manipulating The History
    forward-search-history (C-s)8.4.2 Commands For Manipulating The History
    forward-word (M-f)8.4.1 Commands For Moving
    forward-word (M-f)8.4.1 Commands For Moving

    G
    glob-complete-word (M-g)8.4.8 Some Miscellaneous Commands
    glob-complete-word (M-g)8.4.8 Some Miscellaneous Commands
    glob-expand-word (C-x *)8.4.8 Some Miscellaneous Commands
    glob-expand-word (C-x *)8.4.8 Some Miscellaneous Commands
    glob-list-expansions (C-x g)8.4.8 Some Miscellaneous Commands
    glob-list-expansions (C-x g)8.4.8 Some Miscellaneous Commands
    glob-complete-word (M-g)8.4.8 Some Miscellaneous Commands
    glob-complete-word (M-g)8.4.8 Some Miscellaneous Commands
    glob-expand-word (C-x *)8.4.8 Some Miscellaneous Commands
    glob-expand-word (C-x *)8.4.8 Some Miscellaneous Commands
    glob-list-expansions (C-x g)8.4.8 Some Miscellaneous Commands
    glob-list-expansions (C-x g)8.4.8 Some Miscellaneous Commands

    H
    history-and-alias-expand-line ()8.4.8 Some Miscellaneous Commands
    history-and-alias-expand-line ()8.4.8 Some Miscellaneous Commands
    history-expand-line (M-^)8.4.8 Some Miscellaneous Commands
    history-expand-line (M-^)8.4.8 Some Miscellaneous Commands
    history-search-backward ()8.4.2 Commands For Manipulating The History
    history-search-backward ()8.4.2 Commands For Manipulating The History
    history-search-forward ()8.4.2 Commands For Manipulating The History
    history-search-forward ()8.4.2 Commands For Manipulating The History
    history-and-alias-expand-line ()8.4.8 Some Miscellaneous Commands
    history-and-alias-expand-line ()8.4.8 Some Miscellaneous Commands
    history-expand-line (M-^)8.4.8 Some Miscellaneous Commands
    history-expand-line (M-^)8.4.8 Some Miscellaneous Commands
    history-search-backward ()8.4.2 Commands For Manipulating The History
    history-search-backward ()8.4.2 Commands For Manipulating The History
    history-search-forward ()8.4.2 Commands For Manipulating The History
    history-search-forward ()8.4.2 Commands For Manipulating The History

    I
    insert-comment (M-#)8.4.8 Some Miscellaneous Commands
    insert-comment (M-#)8.4.8 Some Miscellaneous Commands
    insert-completions (M-*)8.4.6 Letting Readline Type For You
    insert-completions (M-*)8.4.6 Letting Readline Type For You
    insert-last-argument (M-. or M-_)8.4.8 Some Miscellaneous Commands
    insert-last-argument (M-. or M-_)8.4.8 Some Miscellaneous Commands
    insert-comment (M-#)8.4.8 Some Miscellaneous Commands
    insert-comment (M-#)8.4.8 Some Miscellaneous Commands
    insert-completions (M-*)8.4.6 Letting Readline Type For You
    insert-completions (M-*)8.4.6 Letting Readline Type For You
    insert-last-argument (M-. or M-_)8.4.8 Some Miscellaneous Commands
    insert-last-argument (M-. or M-_)8.4.8 Some Miscellaneous Commands

    K
    kill-line (C-k)8.4.4 Killing And Yanking
    kill-line (C-k)8.4.4 Killing And Yanking
    kill-region ()8.4.4 Killing And Yanking
    kill-region ()8.4.4 Killing And Yanking
    kill-whole-line ()8.4.4 Killing And Yanking
    kill-whole-line ()8.4.4 Killing And Yanking
    kill-word (M-d)8.4.4 Killing And Yanking
    kill-word (M-d)8.4.4 Killing And Yanking
    kill-line (C-k)8.4.4 Killing And Yanking
    kill-line (C-k)8.4.4 Killing And Yanking
    kill-region ()8.4.4 Killing And Yanking
    kill-region ()8.4.4 Killing And Yanking
    kill-whole-line ()8.4.4 Killing And Yanking
    kill-whole-line ()8.4.4 Killing And Yanking
    kill-word (M-d)8.4.4 Killing And Yanking
    kill-word (M-d)8.4.4 Killing And Yanking

    M
    magic-space ()8.4.8 Some Miscellaneous Commands
    magic-space ()8.4.8 Some Miscellaneous Commands
    menu-complete ()8.4.6 Letting Readline Type For You
    menu-complete ()8.4.6 Letting Readline Type For You
    magic-space ()8.4.8 Some Miscellaneous Commands
    magic-space ()8.4.8 Some Miscellaneous Commands
    menu-complete ()8.4.6 Letting Readline Type For You
    menu-complete ()8.4.6 Letting Readline Type For You

    N
    next-history (C-n)8.4.2 Commands For Manipulating The History
    next-history (C-n)8.4.2 Commands For Manipulating The History
    non-incremental-forward-search-history (M-n)8.4.2 Commands For Manipulating The History
    non-incremental-forward-search-history (M-n)8.4.2 Commands For Manipulating The History
    non-incremental-reverse-search-history (M-p)8.4.2 Commands For Manipulating The History
    non-incremental-reverse-search-history (M-p)8.4.2 Commands For Manipulating The History
    next-history (C-n)8.4.2 Commands For Manipulating The History
    next-history (C-n)8.4.2 Commands For Manipulating The History
    non-incremental-forward-search-history (M-n)8.4.2 Commands For Manipulating The History
    non-incremental-forward-search-history (M-n)8.4.2 Commands For Manipulating The History
    non-incremental-reverse-search-history (M-p)8.4.2 Commands For Manipulating The History
    non-incremental-reverse-search-history (M-p)8.4.2 Commands For Manipulating The History

    O
    operate-and-get-next (C-o)8.4.8 Some Miscellaneous Commands
    operate-and-get-next (C-o)8.4.8 Some Miscellaneous Commands
    overwrite-mode ()8.4.3 Commands For Changing Text
    overwrite-mode ()8.4.3 Commands For Changing Text
    operate-and-get-next (C-o)8.4.8 Some Miscellaneous Commands
    operate-and-get-next (C-o)8.4.8 Some Miscellaneous Commands
    overwrite-mode ()8.4.3 Commands For Changing Text
    overwrite-mode ()8.4.3 Commands For Changing Text

    P
    possible-command-completions (C-x !)8.4.6 Letting Readline Type For You
    possible-command-completions (C-x !)8.4.6 Letting Readline Type For You
    possible-completions (M-?)8.4.6 Letting Readline Type For You
    possible-completions (M-?)8.4.6 Letting Readline Type For You
    possible-filename-completions (C-x /)8.4.6 Letting Readline Type For You
    possible-filename-completions (C-x /)8.4.6 Letting Readline Type For You
    possible-hostname-completions (C-x @)8.4.6 Letting Readline Type For You
    possible-hostname-completions (C-x @)8.4.6 Letting Readline Type For You
    possible-username-completions (C-x ~)8.4.6 Letting Readline Type For You
    possible-username-completions (C-x ~)8.4.6 Letting Readline Type For You
    possible-variable-completions (C-x $)8.4.6 Letting Readline Type For You
    possible-variable-completions (C-x $)8.4.6 Letting Readline Type For You
    prefix-meta (ESC)8.4.8 Some Miscellaneous Commands
    prefix-meta (ESC)8.4.8 Some Miscellaneous Commands
    previous-history (C-p)8.4.2 Commands For Manipulating The History
    previous-history (C-p)8.4.2 Commands For Manipulating The History
    possible-command-completions (C-x !)8.4.6 Letting Readline Type For You
    possible-command-completions (C-x !)8.4.6 Letting Readline Type For You
    possible-completions (M-?)8.4.6 Letting Readline Type For You
    possible-completions (M-?)8.4.6 Letting Readline Type For You
    possible-filename-completions (C-x /)8.4.6 Letting Readline Type For You
    possible-filename-completions (C-x /)8.4.6 Letting Readline Type For You
    possible-hostname-completions (C-x @)8.4.6 Letting Readline Type For You
    possible-hostname-completions (C-x @)8.4.6 Letting Readline Type For You
    possible-username-completions (C-x ~)8.4.6 Letting Readline Type For You
    possible-username-completions (C-x ~)8.4.6 Letting Readline Type For You
    possible-variable-completions (C-x $)8.4.6 Letting Readline Type For You
    possible-variable-completions (C-x $)8.4.6 Letting Readline Type For You
    prefix-meta (ESC)8.4.8 Some Miscellaneous Commands
    prefix-meta (ESC)8.4.8 Some Miscellaneous Commands
    previous-history (C-p)8.4.2 Commands For Manipulating The History
    previous-history (C-p)8.4.2 Commands For Manipulating The History

    Q
    quoted-insert (C-q or C-v)8.4.3 Commands For Changing Text
    quoted-insert (C-q or C-v)8.4.3 Commands For Changing Text
    quoted-insert (C-q or C-v)8.4.3 Commands For Changing Text
    quoted-insert (C-q or C-v)8.4.3 Commands For Changing Text

    R
    re-read-init-file (C-x C-r)8.4.8 Some Miscellaneous Commands
    re-read-init-file (C-x C-r)8.4.8 Some Miscellaneous Commands
    redraw-current-line ()8.4.1 Commands For Moving
    redraw-current-line ()8.4.1 Commands For Moving
    reverse-search-history (C-r)8.4.2 Commands For Manipulating The History
    reverse-search-history (C-r)8.4.2 Commands For Manipulating The History
    revert-line (M-r)8.4.8 Some Miscellaneous Commands
    revert-line (M-r)8.4.8 Some Miscellaneous Commands
    re-read-init-file (C-x C-r)8.4.8 Some Miscellaneous Commands
    re-read-init-file (C-x C-r)8.4.8 Some Miscellaneous Commands
    redraw-current-line ()8.4.1 Commands For Moving
    redraw-current-line ()8.4.1 Commands For Moving
    reverse-search-history (C-r)8.4.2 Commands For Manipulating The History
    reverse-search-history (C-r)8.4.2 Commands For Manipulating The History
    revert-line (M-r)8.4.8 Some Miscellaneous Commands
    revert-line (M-r)8.4.8 Some Miscellaneous Commands

    S
    self-insert (a, b, A, 1, !, <small>...</small>)8.4.3 Commands For Changing Text
    self-insert (a, b, A, 1, !, <small>...</small>)8.4.3 Commands For Changing Text
    set-mark (C-@)8.4.8 Some Miscellaneous Commands
    set-mark (C-@)8.4.8 Some Miscellaneous Commands
    shell-expand-line (M-C-e)8.4.8 Some Miscellaneous Commands
    shell-expand-line (M-C-e)8.4.8 Some Miscellaneous Commands
    start-kbd-macro (C-x ()8.4.7 Keyboard Macros
    start-kbd-macro (C-x ()8.4.7 Keyboard Macros
    self-insert (a, b, A, 1, !, <small>...</small>)8.4.3 Commands For Changing Text
    self-insert (a, b, A, 1, !, <small>...</small>)8.4.3 Commands For Changing Text
    set-mark (C-@)8.4.8 Some Miscellaneous Commands
    set-mark (C-@)8.4.8 Some Miscellaneous Commands
    shell-expand-line (M-C-e)8.4.8 Some Miscellaneous Commands
    shell-expand-line (M-C-e)8.4.8 Some Miscellaneous Commands
    start-kbd-macro (C-x ()8.4.7 Keyboard Macros
    start-kbd-macro (C-x ()8.4.7 Keyboard Macros

    T
    tilde-expand (M-&#38;)8.4.8 Some Miscellaneous Commands
    tilde-expand (M-&#38;)8.4.8 Some Miscellaneous Commands
    transpose-chars (C-t)8.4.3 Commands For Changing Text
    transpose-chars (C-t)8.4.3 Commands For Changing Text
    transpose-words (M-t)8.4.3 Commands For Changing Text
    transpose-words (M-t)8.4.3 Commands For Changing Text
    tilde-expand (M-&#38;)8.4.8 Some Miscellaneous Commands
    tilde-expand (M-&#38;)8.4.8 Some Miscellaneous Commands
    transpose-chars (C-t)8.4.3 Commands For Changing Text
    transpose-chars (C-t)8.4.3 Commands For Changing Text
    transpose-words (M-t)8.4.3 Commands For Changing Text
    transpose-words (M-t)8.4.3 Commands For Changing Text

    U
    undo (C-_ or C-x C-u)8.4.8 Some Miscellaneous Commands
    undo (C-_ or C-x C-u)8.4.8 Some Miscellaneous Commands
    universal-argument ()8.4.5 Specifying Numeric Arguments
    universal-argument ()8.4.5 Specifying Numeric Arguments
    unix-filename-rubout ()8.4.4 Killing And Yanking
    unix-filename-rubout ()8.4.4 Killing And Yanking
    unix-line-discard (C-u)8.4.4 Killing And Yanking
    unix-line-discard (C-u)8.4.4 Killing And Yanking
    unix-word-rubout (C-w)8.4.4 Killing And Yanking
    unix-word-rubout (C-w)8.4.4 Killing And Yanking
    upcase-word (M-u)8.4.3 Commands For Changing Text
    upcase-word (M-u)8.4.3 Commands For Changing Text
    undo (C-_ or C-x C-u)8.4.8 Some Miscellaneous Commands
    undo (C-_ or C-x C-u)8.4.8 Some Miscellaneous Commands
    universal-argument ()8.4.5 Specifying Numeric Arguments
    universal-argument ()8.4.5 Specifying Numeric Arguments
    unix-filename-rubout ()8.4.4 Killing And Yanking
    unix-filename-rubout ()8.4.4 Killing And Yanking
    unix-line-discard (C-u)8.4.4 Killing And Yanking
    unix-line-discard (C-u)8.4.4 Killing And Yanking
    unix-word-rubout (C-w)8.4.4 Killing And Yanking
    unix-word-rubout (C-w)8.4.4 Killing And Yanking
    upcase-word (M-u)8.4.3 Commands For Changing Text
    upcase-word (M-u)8.4.3 Commands For Changing Text

    Y
    yank (C-y)8.4.4 Killing And Yanking
    yank (C-y)8.4.4 Killing And Yanking
    yank-last-arg (M-. or M-_)8.4.2 Commands For Manipulating The History
    yank-last-arg (M-. or M-_)8.4.2 Commands For Manipulating The History
    yank-nth-arg (M-C-y)8.4.2 Commands For Manipulating The History
    yank-nth-arg (M-C-y)8.4.2 Commands For Manipulating The History
    yank-pop (M-y)8.4.4 Killing And Yanking
    yank-pop (M-y)8.4.4 Killing And Yanking
    yank (C-y)8.4.4 Killing And Yanking
    yank (C-y)8.4.4 Killing And Yanking
    yank-last-arg (M-. or M-_)8.4.2 Commands For Manipulating The History
    yank-last-arg (M-. or M-_)8.4.2 Commands For Manipulating The History
    yank-nth-arg (M-C-y)8.4.2 Commands For Manipulating The History
    yank-nth-arg (M-C-y)8.4.2 Commands For Manipulating The History
    yank-pop (M-y)8.4.4 Killing And Yanking
    yank-pop (M-y)8.4.4 Killing And Yanking

    Jump to:   A   @@ -14625,20 +14472,20 @@ to permit their use in free software.
    - + - + - + - +
    [ < ]
    [ < ] [ > ]   [ << ][ Up ][ Up ] [ >> ]         [Top] [Contents][Index][Index] [ ? ]
    -

    D.5 Concept Index

    - +

    Concept Index

    + - - + + - - + + - - - + + + - + - + @@ -14719,18 +14566,18 @@ to permit their use in free software. - - + + - + - + - - + + @@ -14741,45 +14588,45 @@ to permit their use in free software. - - + + - + - + - - - - - + + + + + - - - - - + + + + + - + - - + + - + @@ -14788,7 +14635,7 @@ to permit their use in free software. - + @@ -14802,36 +14649,36 @@ to permit their use in free software. - + - - + + - + - + - + - + - - - + + + @@ -14840,14 +14687,14 @@ to permit their use in free software. - + - +
    Jump to:   A   B @@ -14688,25 +14535,25 @@ to permit their use in free software.
    Index Entry Section

    A
    alias expansion6.6 Aliases
    arithmetic evaluation6.5 Shell Arithmetic
    alias expansion6.6 Aliases
    arithmetic evaluation6.5 Shell Arithmetic
    arithmetic expansion3.5.5 Arithmetic Expansion
    arithmetic, shell6.5 Shell Arithmetic
    arrays6.7 Arrays
    arithmetic, shell6.5 Shell Arithmetic
    arrays6.7 Arrays

    B
    background7.1 Job Control Basics
    Bash configuration10.1 Basic Installation
    Bash installation10.1 Basic Installation
    background7.1 Job Control Basics
    Bash configuration10.1 Basic Installation
    Bash installation10.1 Basic Installation
    Bourne shell3. Basic Shell Features
    brace expansion3.5.1 Brace Expansion
    builtin2. Definitions

    C
    command editing8.2.1 Readline Bare Essentials
    command editing8.2.1 Readline Bare Essentials
    command execution3.7.2 Command Search and Execution
    command expansion3.7.1 Simple Command Expansion
    command history9.1 Bash History Facilities
    command history9.1 Bash History Facilities
    command search3.7.2 Command Search and Execution
    command substitution3.5.4 Command Substitution
    command timing3.2.2 Pipelines
    commands, shell3.2 Shell Commands
    commands, simple3.2.1 Simple Commands
    comments, shell3.1.3 Comments
    completion builtins8.7 Programmable Completion Builtins
    configuration10.1 Basic Installation
    completion builtins8.7 Programmable Completion Builtins
    configuration10.1 Basic Installation
    control operator2. Definitions

    D
    directory stack6.8 The Directory Stack
    directory stack6.8 The Directory Stack

    E
    editing command lines8.2.1 Readline Bare Essentials
    editing command lines8.2.1 Readline Bare Essentials
    environment3.7.4 Environment
    evaluation, arithmetic6.5 Shell Arithmetic
    event designators9.3.1 Event Designators
    evaluation, arithmetic6.5 Shell Arithmetic
    event designators9.3.1 Event Designators
    execution environment3.7.3 Command Execution Environment
    exit status2. Definitions
    exit status3.7.5 Exit Status
    expansion, parameter3.5.3 Shell Parameter Expansion
    expansion, pathname3.5.8 Filename Expansion
    expansion, tilde3.5.2 Tilde Expansion
    expressions, arithmetic6.5 Shell Arithmetic
    expressions, conditional6.4 Bash Conditional Expressions
    expressions, arithmetic6.5 Shell Arithmetic
    expressions, conditional6.4 Bash Conditional Expressions

    F
    FDL, GNU Free Documentation LicenseC.1 GNU Free Documentation License
    FDL, GNU Free Documentation LicenseC.1 GNU Free Documentation License
    field2. Definitions
    filename2. Definitions
    filename expansion3.5.8 Filename Expansion
    foreground7.1 Job Control Basics
    foreground7.1 Job Control Basics
    functions, shell3.3 Shell Functions

    H
    history builtins9.2 Bash History Builtins
    history events9.3.1 Event Designators
    history expansion9.3 History Expansion
    history list9.1 Bash History Facilities
    History, how to use8.7 Programmable Completion Builtins
    history builtins9.2 Bash History Builtins
    history events9.3.1 Event Designators
    history expansion9.3 History Expansion
    history list9.1 Bash History Facilities
    History, how to use8.7 Programmable Completion Builtins

    I
    identifier2. Definitions
    initialization file, readline8.3 Readline Init File
    installation10.1 Basic Installation
    interaction, readline8.2 Readline Interaction
    interactive shell6.1 Invoking Bash
    interactive shell6.3 Interactive Shells
    initialization file, readline8.3 Readline Init File
    installation10.1 Basic Installation
    interaction, readline8.2 Readline Interaction
    interactive shell6.1 Invoking Bash
    interactive shell6.3 Interactive Shells
    internationalization3.1.2.5 Locale-Specific Translation

    J
    job2. Definitions
    job control2. Definitions
    job control7.1 Job Control Basics
    job control7.1 Job Control Basics

    K
    kill ring8.2.3 Readline Killing Commands
    killing text8.2.3 Readline Killing Commands
    kill ring8.2.3 Readline Killing Commands
    killing text8.2.3 Readline Killing Commands

    L
    localization3.1.2.5 Locale-Specific Translation
    login shell6.1 Invoking Bash
    login shell6.1 Invoking Bash

    M
    matching, pattern3.5.8.1 Pattern Matching
    N
    name2. Definitions
    native languages3.1.2.5 Locale-Specific Translation
    notation, readline8.2.1 Readline Bare Essentials
    notation, readline8.2.1 Readline Bare Essentials

    O
    operator, shell2. Definitions
    pattern matching3.5.8.1 Pattern Matching
    pipeline3.2.2 Pipelines
    POSIX2. Definitions
    POSIX Mode6.11 Bash POSIX Mode
    POSIX Mode6.11 Bash POSIX Mode
    process group2. Definitions
    process group ID2. Definitions
    process substitution3.5.6 Process Substitution
    programmable completion8.6 Programmable Completion
    prompting6.9 Controlling the Prompt
    programmable completion8.6 Programmable Completion
    prompting6.9 Controlling the Prompt

    Q
    quoting3.1.2 Quoting
    quoting, ANSI3.1.2.4 ANSI-C Quoting

    R
    Readline, how to use7.3 Job Control Variables
    Readline, how to use7.3 Job Control Variables
    redirection3.6 Redirections
    reserved word2. Definitions
    restricted shell6.10 The Restricted Shell
    restricted shell6.10 The Restricted Shell
    return status2. Definitions

    S
    shell arithmetic6.5 Shell Arithmetic
    shell arithmetic6.5 Shell Arithmetic
    shell function3.3 Shell Functions
    shell script3.8 Shell Scripts
    shell variable3.4 Shell Parameters
    shell, interactive6.3 Interactive Shells
    shell, interactive6.3 Interactive Shells
    signal2. Definitions
    signal handling3.7.6 Signals
    special builtin2. Definitions
    special builtin4.4 Special Builtins
    startup files6.2 Bash Startup Files
    suspending jobs7.1 Job Control Basics
    special builtin4.4 Special Builtins
    startup files6.2 Bash Startup Files
    suspending jobs7.1 Job Control Basics

    T
    tilde expansion3.5.2 Tilde Expansion

    V
    variable, shell3.4 Shell Parameters
    variables, readline8.3.1 Readline Init File Syntax
    variables, readline8.3.1 Readline Init File Syntax

    W
    word2. Definitions
    word splitting3.5.7 Word Splitting

    Y
    yanking text8.2.3 Readline Killing Commands
    yanking text8.2.3 Readline Killing Commands

    - + @@ -5992,12 +5949,12 @@ to permit their use in free software. - - - - - - + + + + + + @@ -6163,177 +6120,173 @@ to permit their use in free software. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - + + + - - - - - + + + + + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -6597,7 +6550,7 @@ to permit their use in free software.
    Jump to:   A   @@ -14900,7 +14747,7 @@ to permit their use in free software. - +
    [Top] [Contents][Index][Index] [ ? ]

    Table of Contents

    @@ -15044,206 +14891,196 @@ to permit their use in free software.
    4.2 Bash Builtin Commands
    -4.3 Modifying Shell Behavior -
    - -4.4 Special Builtins +4.4 Special Builtins
    -5. Shell Variables +5. Shell Variables
    -6. Bash Features +6. Bash Features
    -7. Job Control +7. Job Control
    -8. Command Line Editing +8. Command Line Editing
    -9. Using History Interactively +9. Using History Interactively
    -10. Installing Bash +10. Installing Bash
    -A. Reporting Bugs +A. Reporting Bugs
    -B. Major Differences From The Bourne Shell +B. Major Differences From The Bourne Shell
    -C. Copying This Manual +C. Copying This Manual
    -D. Indexes -
    - -
    - +
    [Top] [Contents][Index][Index] [ ? ]

    Short Table of Contents

    @@ -15256,25 +15093,33 @@ to permit their use in free software.
    4. Shell Builtin Commands
    -5. Shell Variables +5. Shell Variables +
    +6. Bash Features +
    +7. Job Control +
    +8. Command Line Editing +
    +9. Using History Interactively
    -6. Bash Features +10. Installing Bash
    -7. Job Control +A. Reporting Bugs
    -8. Command Line Editing +B. Major Differences From The Bourne Shell
    -9. Using History Interactively +C. Copying This Manual
    -10. Installing Bash +Index of Shell Builtin Commands
    -A. Reporting Bugs +Index of Shell Reserved Words
    -B. Major Differences From The Bourne Shell +Parameter and Variable Index
    -C. Copying This Manual +Function Index
    -D. Indexes +Concept Index
    @@ -15283,11 +15128,11 @@ to permit their use in free software. - +
    [Top] [Contents][Index][Index] [ ? ]

    About this document

    -This document was generated by Chet Ramey on January, 16 2007 +This document was generated by Chet Ramey on January, 26 2006 using texi2html

    @@ -15449,7 +15294,7 @@ the following structure:
    This document was generated -by Chet Ramey on January, 16 2007 +by Chet Ramey on January, 26 2006 using texi2html diff --git a/doc/bashref.info b/doc/bashref.info index a7d0a672c..63d72e07b 100644 --- a/doc/bashref.info +++ b/doc/bashref.info @@ -1,10 +1,10 @@ -This is bashref.info, produced by makeinfo version 4.8 from +This is bashref.info, produced by makeinfo version 4.7 from /Users/chet/src/bash/src/doc/bashref.texi. This text is a brief description of the features that are present in -the Bash shell (version 3.2, 12 January 2007). +the Bash shell (version 3.2, 26 January 2006). - This is Edition 3.2, last updated 12 January 2007, of `The GNU Bash + This is Edition 3.2, last updated 26 January 2006, of `The GNU Bash Reference Manual', for `Bash', Version 3.2. Copyright (C) 1988-2005 Free Software Foundation, Inc. @@ -15,7 +15,7 @@ preserved on all copies. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, - Version 1.2 or any later version published by the Free Software + Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with the Front-Cover texts being "A GNU Manual," and with the Back-Cover Texts as in (a) below. A copy of the license is included in the section entitled @@ -37,9 +37,9 @@ Bash Features ************* This text is a brief description of the features that are present in -the Bash shell (version 3.2, 12 January 2007). +the Bash shell (version 3.2, 26 January 2006).. - This is Edition 3.2, last updated 12 January 2007, of `The GNU Bash + This is Edition 3.2, last updated 26 January 2006, of `The GNU Bash Reference Manual', for `Bash', Version 3.2. Bash contains features that appear in other popular shells, and some @@ -73,7 +73,13 @@ on shell behavior. between Bash and historical versions of /bin/sh. * Copying This Manual:: Copying this manual. -* Indexes:: Various indexes for this manual. +* Builtin Index:: Index of Bash builtin commands. +* Reserved Word Index:: Index of Bash reserved words. +* Variable Index:: Quick reference helps you find the + variable you want. +* Function Index:: Index of bindable Readline functions. +* Concept Index:: General index for concepts described in + this manual.  File: bashref.info, Node: Introduction, Next: Definitions, Prev: Top, Up: Top @@ -124,7 +130,7 @@ symbols are expanded to create larger expressions. A Unix shell is both a command interpreter and a programming language. As a command interpreter, the shell provides the user interface to the rich set of GNU utilities. The programming language -features allow these utilities to be combined. Files containing +features allow these utilitites to be combined. Files containing commands can be created, and become commands themselves. These new commands have the same status as system commands in directories such as `/bin', allowing users or groups to establish custom environments to @@ -226,7 +232,7 @@ These definitions are used throughout the remainder of this manual. group ID. `process group ID' - A unique identifier that represents a `process group' during its + A unique identifer that represents a `process group' during its lifetime. `reserved word' @@ -502,9 +508,9 @@ File: bashref.info, Node: Comments, Prev: Quoting, Up: Shell Syntax In a non-interactive shell, or an interactive shell in which the `interactive_comments' option to the `shopt' builtin is enabled (*note -The Shopt Builtin::), a word beginning with `#' causes that word and -all remaining characters on that line to be ignored. An interactive -shell without the `interactive_comments' option enabled does not allow +Bash Builtins::), a word beginning with `#' causes that word and all +remaining characters on that line to be ignored. An interactive shell +without the `interactive_comments' option enabled does not allow comments. The `interactive_comments' option is on by default in interactive shells. *Note Interactive Shells::, for a description of what makes a shell interactive. @@ -745,8 +751,8 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre `case' will selectively execute the COMMAND-LIST corresponding to the first PATTERN that matches WORD. If the shell option - `nocasematch' (see the description of `shopt' in *Note The Shopt - Builtin::) is enabled, the match is performed without regard to + `nocasematch' (see the description of `shopt' in *Note Bash + Builtins::) is enabled, the match is performed without regard to the case of alphabetic characters. The `|' is used to separate multiple patterns, and the `)' operator terminates a pattern list. A list of patterns and an associated command-list is known as a @@ -787,7 +793,7 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre items. The set of expanded words is printed on the standard error output stream, each preceded by a number. If the `in WORDS' is omitted, the positional parameters are printed, as if `in "$@"' - had been specified. The `PS3' prompt is then displayed and a line + had been specifed. The `PS3' prompt is then displayed and a line is read from the standard input. If the line consists of a number corresponding to one of the displayed words, then the value of NAME is set to that word. If the line is empty, the words and @@ -835,11 +841,11 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre of the operator is considered a pattern and matched according to the rules described below in *Note Pattern Matching::. If the shell option `nocasematch' (see the description of `shopt' in - *Note The Shopt Builtin::) 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. + *Note Bash Builtins::) 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. An additional binary operator, `=~', is available, with the same precedence as `==' and `!='. When it is used, the string to the @@ -848,7 +854,7 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre the string matches the pattern, and 1 otherwise. If the regular expression is syntactically incorrect, the conditional expression's return value is 2. If the shell option `nocasematch' - (see the description of `shopt' in *Note The Shopt Builtin::) is + (see the description of `shopt' in *Note Bash Builtins::) is enabled, the match is performed without regard to the case of alphabetic characters. Substrings matched by parenthesized subexpressions within the regular expression are saved in the @@ -1195,7 +1201,7 @@ Brace expansion is a mechanism by which arbitrary strings may be generated. This mechanism is similar to FILENAME EXPANSION (*note Filename Expansion::), but the file names generated need not exist. Patterns to be brace expanded take the form of an optional PREAMBLE, -followed by either a series of comma-separated strings or a seqeunce +followed by either a series of comma-separated strings or a sequnce expression between a pair of braces, followed by an optional POSTSCRIPT. The preamble is prefixed to each string contained within the braces, and the postscript is then appended to each resulting string, expanding left @@ -1381,16 +1387,12 @@ if the colon is omitted, the operator tests only for existence. 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, `$@' is - prefixed to the list. + are used, in which case the indexing starts at 1. `${!PREFIX*}' `${!PREFIX@}' Expands to the names of variables whose names begin with PREFIX, separated by the first character of the `IFS' special variable. - When `@' is used and the expansion appears within double quotes, - each variable name expands to a separate word. `${!NAME[@]}' `${!NAME[*]}' @@ -1544,17 +1546,15 @@ quotes for word splitting. The shell treats each character of `$IFS' as a delimiter, and splits the results of the other expansions into words on these characters. If `IFS' 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 `IFS' characters not at the beginning or -end serves to delimit words. If `IFS' has a value other than the -default, then sequences of the whitespace characters `space' and `tab' -are ignored at the beginning and end of the word, as long as the -whitespace character is in the value of `IFS' (an `IFS' whitespace -character). Any character in `IFS' that is not `IFS' whitespace, along -with any adjacent `IFS' whitespace characters, delimits a field. A -sequence of `IFS' whitespace characters is also treated as a delimiter. -If the value of `IFS' is null, no word splitting occurs. +default, then any sequence of `IFS' characters serves to delimit words. +If `IFS' has a value other than the default, then sequences of the +whitespace characters `space' and `tab' are ignored at the beginning +and end of the word, as long as the whitespace character is in the +value of `IFS' (an `IFS' whitespace character). Any character in `IFS' +that is not `IFS' whitespace, along with any adjacent `IFS' whitespace +characters, delimits a field. A sequence of `IFS' whitespace +characters is also treated as a delimiter. If the value of `IFS' is +null, no word splitting occurs. Explicit null arguments (`""' or `''') are retained. Unquoted implicit null arguments, resulting from the expansion of parameters @@ -1591,7 +1591,7 @@ matched explicitly, unless the shell option `dotglob' is set. When matching a file name, the slash character must always be matched explicitly. In other cases, the `.' character is not treated specially. - See the description of `shopt' in *Note The Shopt Builtin::, for a + See the description of `shopt' in *Note Bash Builtins::, for a description of the `nocaseglob', `nullglob', `failglob', and `dotglob' options. @@ -2032,7 +2032,7 @@ The shell has an EXECUTION ENVIRONMENT, which consists of the following: * options enabled at invocation (either by default or with command-line arguments) or by `set' - * options enabled by `shopt' (*note The Shopt Builtin::) + * options enabled by `shopt' * shell aliases defined with `alias' (*note Aliases::) @@ -2171,8 +2171,8 @@ a particular job, it should be removed from the jobs table with the receive `SIGHUP' using `disown -h'. If the `huponexit' shell option has been set with `shopt' (*note -The Shopt Builtin::), Bash sends a `SIGHUP' to all jobs when an -interactive login shell exits. +Bash Builtins::), Bash sends a `SIGHUP' to all jobs when an interactive +login shell exits. If Bash is waiting for a command to complete and receives a signal for which a trap has been set, the trap will not be executed until the @@ -2245,8 +2245,8 @@ File: bashref.info, Node: Shell Builtin Commands, Next: Shell Variables, Prev * Bourne Shell Builtins:: Builtin commands inherited from the Bourne Shell. * Bash Builtins:: Table of builtins specific to Bash. -* Modifying Shell Behavior:: Builtins to modify shell attributes and - optional behavior. +* The Set Builtin:: This builtin is so overloaded it + deserves its own section. * Special Builtins:: Builtin commands classified specially by POSIX. @@ -2348,11 +2348,11 @@ standard. exec [-cl] [-a NAME] [COMMAND [ARGUMENTS]] If COMMAND is supplied, it replaces the shell without creating a new process. If the `-l' option is supplied, the shell places a - dash at the beginning of the zeroth argument passed to COMMAND. - This is what the `login' program does. The `-c' option causes - COMMAND to be executed with an empty environment. If `-a' is - supplied, the shell passes NAME as the zeroth argument to COMMAND. - If no COMMAND is specified, redirections may be used to affect the + dash at the beginning of the zeroth arg passed to COMMAND. This + is what the `login' program does. The `-c' option causes COMMAND + to be executed with an empty environment. If `-a' is supplied, + the shell passes NAME as the zeroth argument to COMMAND. If no + COMMAND is specified, redirections may be used to affect the current shell environment. If there are no redirection errors, the return status is zero; otherwise the return status is non-zero. @@ -2477,10 +2477,10 @@ standard. `shift' shift [N] Shift the positional parameters to the left by N. The positional - parameters from N+1 ... `$#' are renamed to `$1' ... `$#'-N. - Parameters represented by the numbers `$#' to `$#'-N+1 are unset. - N must be a non-negative number less than or equal to `$#'. If N - is zero or greater than `$#', the positional parameters are not + parameters from N+1 ... `$#' are renamed to `$1' ... `$#'-N+1. + Parameters represented by the numbers `$#' to N+1 are unset. N + must be a non-negative number less than or equal to `$#'. If N is + zero or greater than `$#', the positional parameters are not changed. If N is not supplied, it is assumed to be 1. The return status is zero unless N is greater than `$#' or less than zero, non-zero otherwise. @@ -2578,9 +2578,9 @@ standard. `for' command, `case' command, `select' command, every arithmetic `for' command, and before the first command executes in a shell function. Refer to the description of the `extglob' option to the - `shopt' builtin (*note The Shopt Builtin::) for details of its - effect on the `DEBUG' trap. If a SIGSPEC is `ERR', the command ARG - is executed whenever a simple command has a non-zero exit status, + `shopt' builtin (*note Bash Builtins::) for details of its effect + on the `DEBUG' trap. If a SIGSPEC is `ERR', the command ARG is + executed whenever a simple command has a non-zero exit status, subject to the following conditions. The `ERR' trap is not executed if the failed command is part of the command list immediately following an `until' or `while' keyword, part of the @@ -2592,8 +2592,8 @@ standard. finishes executing. Signals ignored upon entry to the shell cannot be trapped or reset. - Trapped signals that are not being ignored are reset to their - original values in a child process when it is created. + Trapped signals are reset to their original values in a child + process when it is created. The return status is zero unless a SIGSPEC does not specify a valid signal. @@ -2625,7 +2625,7 @@ standard. zero unless a NAME is readonly.  -File: bashref.info, Node: Bash Builtins, Next: Modifying Shell Behavior, Prev: Bourne Shell Builtins, Up: Shell Builtin Commands +File: bashref.info, Node: Bash Builtins, Next: The Set Builtin, Prev: Bourne Shell Builtins, Up: Shell Builtin Commands 4.2 Bash Builtin Commands ========================= @@ -2655,7 +2655,7 @@ POSIX standard. Display current Readline (*note Command Line Editing::) key and function bindings, bind a key sequence to a Readline function or macro, or set a Readline variable. Each non-option argument is a - command as it would appear in a Readline initialization file + command as it would appear in a a Readline initialization file (*note Readline Init File::), but each binding or command must be passed as a separate argument; e.g., `"\C-x\C-r":re-read-init-file'. Options, if supplied, have the @@ -2769,7 +2769,7 @@ POSIX standard. NAME. When `-p' is used, additional options are ignored. The `-F' option inhibits the display of function definitions; only the function name and attributes are printed. If the `extdebug' shell - option is enabled using `shopt' (*note The Shopt Builtin::), the + option is enabled using `shopt' (*note Bash Builtins::), the source file name and line number where the function is defined are displayed as well. `-F' implies `-f'. The following options can be used to restrict output to variables with the specified @@ -2799,12 +2799,10 @@ POSIX standard. Mark each NAME for export to subsequent commands via the environment. - Using `+' instead of `-' 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, `declare' makes each NAME local, as with the `local' - command. If a variable name is followed by =VALUE, the value of - the variable is set to VALUE. + Using `+' instead of `-' turns off the attribute instead. When + used in a function, `declare' makes each NAME local, as with the + `local' command. If a variable name is followed by =VALUE, the + value of the variable is set to VALUE. The return status is zero unless an invalid option is encountered, an attempt is made to define a function using `-f foo=bar', an @@ -2864,12 +2862,16 @@ POSIX standard. the eight-bit character whose value is the octal value NNN (zero to three octal digits) + `\NNN' + the eight-bit character whose value is the octal value NNN + (one to three octal digits) + `\xHH' the eight-bit character whose value is the hexadecimal value HH (one or two hex digits) `enable' - enable [-a] [-dnps] [-f FILENAME] [NAME ...] + enable [-n] [-p] [-f FILENAME] [-ads] [NAME ...] 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 @@ -3012,6 +3014,237 @@ POSIX standard. Read input from file descriptor FD. +`shopt' + shopt [-pqsu] [-o] [OPTNAME ...] + Toggle the values of variables controlling optional shell behavior. + With no options, or with the `-p' option, a list of all settable + options is displayed, with an indication of whether or not each is + set. The `-p' option causes output to be displayed in a form that + may be reused as input. Other options have the following meanings: + + `-s' + Enable (set) each OPTNAME. + + `-u' + Disable (unset) each OPTNAME. + + `-q' + Suppresses normal output; the return status indicates whether + the OPTNAME is set or unset. If multiple OPTNAME arguments + are given with `-q', the return status is zero if all + OPTNAMES are enabled; non-zero otherwise. + + `-o' + Restricts the values of OPTNAME to be those defined for the + `-o' option to the `set' builtin (*note The Set Builtin::). + + If either `-s' or `-u' is used with no OPTNAME arguments, the + display is limited to those options which are set or unset, + respectively. + + Unless otherwise noted, the `shopt' options are disabled (off) by + default. + + The return status when listing options is zero if all OPTNAMES are + enabled, non-zero otherwise. When setting or unsetting options, + the return status is zero unless an OPTNAME is not a valid shell + option. + + The list of `shopt' options is: + `cdable_vars' + If this is set, an argument to the `cd' builtin command that + is not a directory is assumed to be the name of a variable + whose value is the directory to change to. + + `cdspell' + If set, minor errors in the spelling of a directory component + in a `cd' command will be corrected. The errors checked for + are transposed characters, a missing character, and a + character too many. If a correction is found, the corrected + path is printed, and the command proceeds. This option is + only used by interactive shells. + + `checkhash' + If this is set, Bash checks that a command found in the hash + table exists before trying to execute it. If a hashed + command no longer exists, a normal path search is performed. + + `checkwinsize' + If set, Bash checks the window size after each command and, + if necessary, updates the values of `LINES' and `COLUMNS'. + + `cmdhist' + If set, Bash attempts to save all lines of a multiple-line + command in the same history entry. This allows easy + re-editing of multi-line commands. + + `dotglob' + If set, Bash includes filenames beginning with a `.' in the + results of filename expansion. + + `execfail' + If this is set, a non-interactive shell will not exit if it + cannot execute the file specified as an argument to the `exec' + builtin command. An interactive shell does not exit if `exec' + fails. + + `expand_aliases' + If set, aliases are expanded as described below under Aliases, + *Note Aliases::. This option is enabled by default for + interactive shells. + + `extdebug' + If set, behavior intended for use by debuggers is enabled: + + 1. The `-F' option to the `declare' builtin (*note Bash + Builtins::) displays the source file name and line + number corresponding to each function name supplied as + an argument. + + 2. If the command run by the `DEBUG' trap returns a + non-zero value, the next command is skipped and not + executed. + + 3. If the command run by the `DEBUG' trap returns a value + of 2, and the shell is executing in a subroutine (a + shell function or a shell script executed by the `.' or + `source' builtins), a call to `return' is simulated. + + 4. `BASH_ARGC' and `BASH_ARGV' are updated as described in + their descriptions (*note Bash Variables::). + + 5. Function tracing is enabled: command substitution, + shell functions, and subshells invoked with `( COMMAND + )' inherit the `DEBUG' and `RETURN' traps. + + 6. Error tracing is enabled: command substitution, shell + functions, and subshells invoked with `( COMMAND )' + inherit the `ERROR' trap. + + `extglob' + If set, the extended pattern matching features described above + (*note Pattern Matching::) are enabled. + + `extquote' + If set, `$'STRING'' and `$"STRING"' quoting is performed + within `${PARAMETER}' expansions enclosed in double quotes. + This option is enabled by default. + + `failglob' + If set, patterns which fail to match filenames during + pathname expansion result in an expansion error. + + `force_fignore' + If set, the suffixes specified by the `FIGNORE' shell variable + cause words to be ignored when performing word completion + even if the ignored words are the only possible completions. + *Note Bash Variables::, for a description of `FIGNORE'. This + option is enabled by default. + + `gnu_errfmt' + If set, shell error messages are written in the standard GNU + error message format. + + `histappend' + If set, the history list is appended to the file named by the + value of the `HISTFILE' variable when the shell exits, rather + than overwriting the file. + + `histreedit' + If set, and Readline is being used, a user is given the + opportunity to re-edit a failed history substitution. + + `histverify' + If set, and Readline is being used, the results of history + substitution are not immediately passed to the shell parser. + Instead, the resulting line is loaded into the Readline + editing buffer, allowing further modification. + + `hostcomplete' + If set, and Readline is being used, Bash will attempt to + perform hostname completion when a word containing a `@' is + being completed (*note Commands For Completion::). This + option is enabled by default. + + `huponexit' + If set, Bash will send `SIGHUP' to all jobs when an + interactive login shell exits (*note Signals::). + + `interactive_comments' + Allow a word beginning with `#' to cause that word and all + remaining characters on that line to be ignored in an + interactive shell. This option is enabled by default. + + `lithist' + If enabled, and the `cmdhist' option is enabled, multi-line + commands are saved to the history with embedded newlines + rather than using semicolon separators where possible. + + `login_shell' + The shell sets this option if it is started as a login shell + (*note Invoking Bash::). The value may not be changed. + + `mailwarn' + If set, and a file that Bash is checking for mail has been + accessed since the last time it was checked, the message + `"The mail in MAILFILE has been read"' is displayed. + + `no_empty_cmd_completion' + If set, and Readline is being used, Bash will not attempt to + search the `PATH' for possible completions when completion is + attempted on an empty line. + + `nocaseglob' + If set, Bash matches filenames in a case-insensitive fashion + when performing filename expansion. + + `nocasematch' + If set, Bash matches patterns in a case-insensitive fashion + when performing matching while executing `case' or `[[' + conditional commands. + + `nullglob' + If set, Bash allows filename patterns which match no files to + expand to a null string, rather than themselves. + + `progcomp' + If set, the programmable completion facilities (*note + Programmable Completion::) are enabled. This option is + enabled by default. + + `promptvars' + If set, prompt strings undergo parameter expansion, command + substitution, arithmetic expansion, and quote removal after + being expanded as described below (*note Printing a Prompt::). + This option is enabled by default. + + `restricted_shell' + The shell sets this option if it is started in restricted mode + (*note The Restricted Shell::). The value may not be changed. + This is not reset when the startup files are executed, + allowing the startup files to discover whether or not a shell + is restricted. + + `shift_verbose' + If this is set, the `shift' builtin prints an error message + when the shift count exceeds the number of positional + parameters. + + `sourcepath' + If set, the `source' builtin uses the value of `PATH' to find + the directory containing the file supplied as an argument. + This option is enabled by default. + + `xpg_echo' + If set, the `echo' builtin expands backslash-escape sequences + by default. + + + The return status when listing options is zero if all OPTNAMES are + enabled, non-zero otherwise. When setting or unsetting options, + the return status is zero unless an OPTNAME is not a valid shell + option. + `source' source FILENAME A synonym for `.' (*note Bourne Shell Builtins::). @@ -3077,8 +3310,7 @@ POSIX standard. The maximum scheduling priority ("nice"). `-f' - The maximum size of files written by the shell and its - children. + The maximum size of files created by the shell. `-i' The maximum number of pending signals. @@ -3139,30 +3371,15 @@ POSIX standard.  -File: bashref.info, Node: Modifying Shell Behavior, Next: Special Builtins, Prev: Bash Builtins, Up: Shell Builtin Commands +File: bashref.info, Node: The Set Builtin, Next: Special Builtins, Prev: Bash Builtins, Up: Shell Builtin Commands -4.3 Modifying Shell Behavior -============================ - -* Menu: - -* The Set Builtin:: Change the values of shell attributes and - positional parameters. -* The Shopt Builtin:: Modify shell optional behavior. - - -File: bashref.info, Node: The Set Builtin, Next: The Shopt Builtin, Up: Modifying Shell Behavior - -4.3.1 The Set Builtin ---------------------- +4.3 The Set Builtin +=================== -This builtin is so complicated that it deserves its own section. `set' -allows you to change the values of shell options and set the positional -parameters, or to display the names and values of shell variables. +This builtin is so complicated that it deserves its own section. `set' - set [--abefhkmnptuvxBCEHPT] [-o OPTION] [ARGUMENT ...] - set [+abefhkmnptuvxBCEHPT] [+o OPTION] [ARGUMENT ...] + set [--abefhkmnptuvxBCHP] [-o OPTION] [ARGUMENT ...] If no options or arguments are supplied, `set' displays the names and values of all shell variables and functions, sorted according @@ -3188,10 +3405,9 @@ parameters, or to display the names and values of shell variables. Commands::) exits with a non-zero status, unless the command that fails is part of the command list immediately following a `while' or `until' keyword, part of the test in an `if' - statement, part of a `&&' or `||' list, any command in a - pipeline but the last, or if the command's return status is - being inverted using `!'. A trap on `ERR', if set, is - executed before the shell exits. + statement, part of a `&&' or `||' list, or if the command's + return status is being inverted using `!'. A trap on `ERR', + if set, is executed before the shell exits. `-f' Disable file name generation (globbing). @@ -3261,403 +3477,150 @@ parameters, or to display the names and values of shell variables. `noexec' Same as `-n'. - `noglob' - Same as `-f'. - - `nolog' - Currently ignored. - - `notify' - Same as `-b'. - - `nounset' - Same as `-u'. - - `onecmd' - Same as `-t'. - - `physical' - Same as `-P'. - - `pipefail' - If set, the return value of a pipeline is the value of - the last (rightmost) command to exit with a non-zero - status, or zero if all commands in the pipeline exit - successfully. This option is disabled by default. - - `posix' - Change the behavior of Bash where the default operation - differs from the POSIX standard to match the standard - (*note Bash POSIX Mode::). This is intended to make - Bash behave as a strict superset of that standard. - - `privileged' - Same as `-p'. - - `verbose' - Same as `-v'. - - `vi' - Use a `vi'-style line editing interface. - - `xtrace' - Same as `-x'. - - `-p' - Turn on privileged mode. In this mode, the `$BASH_ENV' and - `$ENV' files are not processed, shell functions are not - inherited from the environment, and the `SHELLOPTS' variable, - if it appears in the environment, is ignored. If the shell - is started with the effective user (group) id not equal to the - real user (group) id, and the `-p' option is not supplied, - these actions are taken and the effective user id is set to - the real user id. If the `-p' option is supplied at startup, - the effective user id is not reset. Turning this option off - causes the effective user and group ids to be set to the real - user and group ids. - - `-t' - Exit after reading and executing one command. - - `-u' - Treat unset variables as an error when performing parameter - expansion. An error message will be written to the standard - error, and a non-interactive shell will exit. - - `-v' - Print shell input lines as they are read. - - `-x' - Print a trace of simple commands, `for' commands, `case' - commands, `select' commands, and arithmetic `for' commands - and their arguments or associated word lists after they are - expanded and before they are executed. The value of the `PS4' - variable is expanded and the resultant value is printed before - the command and its expanded arguments. - - `-B' - The shell will perform brace expansion (*note Brace - Expansion::). This option is on by default. - - `-C' - Prevent output redirection using `>', `>&', and `<>' from - overwriting existing files. - - `-E' - If set, any trap on `ERR' is inherited by shell functions, - command substitutions, and commands executed in a subshell - environment. The `ERR' trap is normally not inherited in - such cases. - - `-H' - Enable `!' style history substitution (*note History - Interaction::). This option is on by default for interactive - shells. - - `-P' - If set, do not follow symbolic links when performing commands - such as `cd' which change the current directory. The - physical directory is used instead. By default, Bash follows - the logical chain of directories when performing commands - which change the current directory. - - For example, if `/usr/sys' is a symbolic link to - `/usr/local/sys' then: - $ cd /usr/sys; echo $PWD - /usr/sys - $ cd ..; pwd - /usr - - If `set -P' is on, then: - $ cd /usr/sys; echo $PWD - /usr/local/sys - $ cd ..; pwd - /usr/local - - `-T' - If set, any trap on `DEBUG' and `RETURN' are inherited by - shell functions, command substitutions, and commands executed - in a subshell environment. The `DEBUG' and `RETURN' traps - are normally not inherited in such cases. - - `--' - If no arguments follow this option, then the positional - parameters are unset. Otherwise, the positional parameters - are set to the ARGUMENTS, even if some of them begin with a - `-'. - - `-' - Signal the end of options, cause all remaining ARGUMENTS to - be assigned to the positional parameters. The `-x' and `-v' - options are turned off. If there are no arguments, the - positional parameters remain unchanged. - - Using `+' rather than `-' causes these options to be turned off. - The options can also be used upon invocation of the shell. The - current set of options may be found in `$-'. - - The remaining N ARGUMENTS are positional parameters and are - assigned, in order, to `$1', `$2', ... `$N'. The special - parameter `#' is set to N. - - The return status is always zero unless an invalid option is - supplied. - - -File: bashref.info, Node: The Shopt Builtin, Prev: The Set Builtin, Up: Modifying Shell Behavior - -4.3.2 The Shopt Builtin ------------------------ - -This builtin allows you to change additional shell optional behavior. - -`shopt' - shopt [-pqsu] [-o] [OPTNAME ...] - Toggle the values of variables controlling optional shell behavior. - With no options, or with the `-p' option, a list of all settable - options is displayed, with an indication of whether or not each is - set. The `-p' option causes output to be displayed in a form that - may be reused as input. Other options have the following meanings: - - `-s' - Enable (set) each OPTNAME. - - `-u' - Disable (unset) each OPTNAME. - - `-q' - Suppresses normal output; the return status indicates whether - the OPTNAME is set or unset. If multiple OPTNAME arguments - are given with `-q', the return status is zero if all - OPTNAMES are enabled; non-zero otherwise. - - `-o' - Restricts the values of OPTNAME to be those defined for the - `-o' option to the `set' builtin (*note The Set Builtin::). - - If either `-s' or `-u' is used with no OPTNAME arguments, the - display is limited to those options which are set or unset, - respectively. - - Unless otherwise noted, the `shopt' options are disabled (off) by - default. - - The return status when listing options is zero if all OPTNAMES are - enabled, non-zero otherwise. When setting or unsetting options, - the return status is zero unless an OPTNAME is not a valid shell - option. - - The list of `shopt' options is: - `autocd' - If set, a command name that is the name of a directory is - executed as if it were the argument to the `cd' command. - This option is only used by interactive shells. - - `cdable_vars' - If this is set, an argument to the `cd' builtin command that - is not a directory is assumed to be the name of a variable - whose value is the directory to change to. - - `cdspell' - If set, minor errors in the spelling of a directory component - in a `cd' command will be corrected. The errors checked for - are transposed characters, a missing character, and a - character too many. If a correction is found, the corrected - path is printed, and the command proceeds. This option is - only used by interactive shells. - - `checkhash' - If this is set, Bash checks that a command found in the hash - table exists before trying to execute it. If a hashed - command no longer exists, a normal path search is performed. - - `checkjobs' - If set, Bash lists the status of any stopped and running jobs - before exiting an interactive shell. If any jobs are - running, this causes the exit to be deferred until a second - exit is attempted without an intervening command (*note Job - Control::). The shell always postpones exiting if any jobs - are stopped. - - `checkwinsize' - If set, Bash checks the window size after each command and, - if necessary, updates the values of `LINES' and `COLUMNS'. - - `cmdhist' - If set, Bash attempts to save all lines of a multiple-line - command in the same history entry. This allows easy - re-editing of multi-line commands. - - `dotglob' - If set, Bash includes filenames beginning with a `.' in the - results of filename expansion. - - `execfail' - If this is set, a non-interactive shell will not exit if it - cannot execute the file specified as an argument to the `exec' - builtin command. An interactive shell does not exit if `exec' - fails. - - `expand_aliases' - If set, aliases are expanded as described below under Aliases, - *Note Aliases::. This option is enabled by default for - interactive shells. - - `extdebug' - If set, behavior intended for use by debuggers is enabled: - - 1. The `-F' option to the `declare' builtin (*note Bash - Builtins::) displays the source file name and line - number corresponding to each function name supplied as - an argument. - - 2. If the command run by the `DEBUG' trap returns a - non-zero value, the next command is skipped and not - executed. - - 3. If the command run by the `DEBUG' trap returns a value - of 2, and the shell is executing in a subroutine (a - shell function or a shell script executed by the `.' or - `source' builtins), a call to `return' is simulated. - - 4. `BASH_ARGC' and `BASH_ARGV' are updated as described in - their descriptions (*note Bash Variables::). + `noglob' + Same as `-f'. - 5. Function tracing is enabled: command substitution, - shell functions, and subshells invoked with `( COMMAND - )' inherit the `DEBUG' and `RETURN' traps. + `nolog' + Currently ignored. - 6. Error tracing is enabled: command substitution, shell - functions, and subshells invoked with `( COMMAND )' - inherit the `ERROR' trap. + `notify' + Same as `-b'. - `extglob' - If set, the extended pattern matching features described above - (*note Pattern Matching::) are enabled. + `nounset' + Same as `-u'. - `extquote' - If set, `$'STRING'' and `$"STRING"' quoting is performed - within `${PARAMETER}' expansions enclosed in double quotes. - This option is enabled by default. + `onecmd' + Same as `-t'. - `failglob' - If set, patterns which fail to match filenames during - pathname expansion result in an expansion error. + `physical' + Same as `-P'. - `force_fignore' - If set, the suffixes specified by the `FIGNORE' shell variable - cause words to be ignored when performing word completion - even if the ignored words are the only possible completions. - *Note Bash Variables::, for a description of `FIGNORE'. This - option is enabled by default. + `pipefail' + If set, the return value of a pipeline is the value of + the last (rightmost) command to exit with a non-zero + status, or zero if all commands in the pipeline exit + successfully. This option is disabled by default. - `gnu_errfmt' - If set, shell error messages are written in the standard GNU - error message format. + `posix' + Change the behavior of Bash where the default operation + differs from the POSIX standard to match the standard + (*note Bash POSIX Mode::). This is intended to make + Bash behave as a strict superset of that standard. - `histappend' - If set, the history list is appended to the file named by the - value of the `HISTFILE' variable when the shell exits, rather - than overwriting the file. + `privileged' + Same as `-p'. - `histreedit' - If set, and Readline is being used, a user is given the - opportunity to re-edit a failed history substitution. + `verbose' + Same as `-v'. - `histverify' - If set, and Readline is being used, the results of history - substitution are not immediately passed to the shell parser. - Instead, the resulting line is loaded into the Readline - editing buffer, allowing further modification. + `vi' + Use a `vi'-style line editing interface. - `hostcomplete' - If set, and Readline is being used, Bash will attempt to - perform hostname completion when a word containing a `@' is - being completed (*note Commands For Completion::). This - option is enabled by default. + `xtrace' + Same as `-x'. - `huponexit' - If set, Bash will send `SIGHUP' to all jobs when an - interactive login shell exits (*note Signals::). + `-p' + Turn on privileged mode. In this mode, the `$BASH_ENV' and + `$ENV' files are not processed, shell functions are not + inherited from the environment, and the `SHELLOPTS' variable, + if it appears in the environment, is ignored. If the shell + is started with the effective user (group) id not equal to the + real user (group) id, and the `-p' option is not supplied, + these actions are taken and the effective user id is set to + the real user id. If the `-p' option is supplied at startup, + the effective user id is not reset. Turning this option off + causes the effective user and group ids to be set to the real + user and group ids. - `interactive_comments' - Allow a word beginning with `#' to cause that word and all - remaining characters on that line to be ignored in an - interactive shell. This option is enabled by default. + `-t' + Exit after reading and executing one command. - `lithist' - If enabled, and the `cmdhist' option is enabled, multi-line - commands are saved to the history with embedded newlines - rather than using semicolon separators where possible. + `-u' + Treat unset variables as an error when performing parameter + expansion. An error message will be written to the standard + error, and a non-interactive shell will exit. - `login_shell' - The shell sets this option if it is started as a login shell - (*note Invoking Bash::). The value may not be changed. + `-v' + Print shell input lines as they are read. - `mailwarn' - If set, and a file that Bash is checking for mail has been - accessed since the last time it was checked, the message - `"The mail in MAILFILE has been read"' is displayed. + `-x' + Print a trace of simple commands, `for' commands, `case' + commands, `select' commands, and arithmetic `for' commands + and their arguments or associated word lists after they are + expanded and before they are executed. The value of the `PS4' + variable is expanded and the resultant value is printed before + the command and its expanded arguments. - `no_empty_cmd_completion' - If set, and Readline is being used, Bash will not attempt to - search the `PATH' for possible completions when completion is - attempted on an empty line. + `-B' + The shell will perform brace expansion (*note Brace + Expansion::). This option is on by default. - `nocaseglob' - If set, Bash matches filenames in a case-insensitive fashion - when performing filename expansion. + `-C' + Prevent output redirection using `>', `>&', and `<>' from + overwriting existing files. - `nocasematch' - If set, Bash matches patterns in a case-insensitive fashion - when performing matching while executing `case' or `[[' - conditional commands. + `-E' + If set, any trap on `ERR' is inherited by shell functions, + command substitutions, and commands executed in a subshell + environment. The `ERR' trap is normally not inherited in + such cases. - `nullglob' - If set, Bash allows filename patterns which match no files to - expand to a null string, rather than themselves. + `-H' + Enable `!' style history substitution (*note History + Interaction::). This option is on by default for interactive + shells. - `progcomp' - If set, the programmable completion facilities (*note - Programmable Completion::) are enabled. This option is - enabled by default. + `-P' + If set, do not follow symbolic links when performing commands + such as `cd' which change the current directory. The + physical directory is used instead. By default, Bash follows + the logical chain of directories when performing commands + which change the current directory. - `promptvars' - If set, prompt strings undergo parameter expansion, command - substitution, arithmetic expansion, and quote removal after - being expanded as described below (*note Printing a Prompt::). - This option is enabled by default. + For example, if `/usr/sys' is a symbolic link to + `/usr/local/sys' then: + $ cd /usr/sys; echo $PWD + /usr/sys + $ cd ..; pwd + /usr - `restricted_shell' - The shell sets this option if it is started in restricted mode - (*note The Restricted Shell::). The value may not be changed. - This is not reset when the startup files are executed, - allowing the startup files to discover whether or not a shell - is restricted. + If `set -P' is on, then: + $ cd /usr/sys; echo $PWD + /usr/local/sys + $ cd ..; pwd + /usr/local - `shift_verbose' - If this is set, the `shift' builtin prints an error message - when the shift count exceeds the number of positional - parameters. + `-T' + If set, any trap on `DEBUG' and `RETURN' are inherited by + shell functions, command substitutions, and commands executed + in a subshell environment. The `DEBUG' and `RETURN' traps + are normally not inherited in such cases. - `sourcepath' - If set, the `source' builtin uses the value of `PATH' to find - the directory containing the file supplied as an argument. - This option is enabled by default. + `--' + If no arguments follow this option, then the positional + parameters are unset. Otherwise, the positional parameters + are set to the ARGUMENTS, even if some of them begin with a + `-'. - `xpg_echo' - If set, the `echo' builtin expands backslash-escape sequences - by default. + `-' + Signal the end of options, cause all remaining ARGUMENTS to + be assigned to the positional parameters. The `-x' and `-v' + options are turned off. If there are no arguments, the + positional parameters remain unchanged. + Using `+' rather than `-' causes these options to be turned off. + The options can also be used upon invocation of the shell. The + current set of options may be found in `$-'. - The return status when listing options is zero if all OPTNAMES are - enabled, non-zero otherwise. When setting or unsetting options, - the return status is zero unless an OPTNAME is not a valid shell - option. + The remaining N ARGUMENTS are positional parameters and are + assigned, in order, to `$1', `$2', ... `$N'. The special + parameter `#' is set to N. + The return status is always zero unless an invalid option is + supplied.  -File: bashref.info, Node: Special Builtins, Prev: Modifying Shell Behavior, Up: Shell Builtin Commands +File: bashref.info, Node: Special Builtins, Prev: The Set Builtin, Up: Shell Builtin Commands 4.4 Special Builtins ==================== @@ -3772,11 +3735,6 @@ Variables::). `BASH' The full pathname used to execute the current instance of Bash. -`BASHPID' - Expands to the process id of the current Bash process. This - differs from `$$' under certain circumstances, such as subshells - that do not require Bash to be re-initialized. - `BASH_ARGC' An array variable whose values are the number of parameters in each frame of the current bash execution call stack. The number of @@ -3784,7 +3742,7 @@ Variables::). executed with `.' or `source') is at the top of the stack. When a subroutine is executed, the number of parameters passed is pushed onto `BASH_ARGC'. The shell sets `BASH_ARGC' only when in - extended debugging mode (see *Note The Shopt Builtin:: for a + extended debugging mode (see *Note Bash Builtins:: for a description of the `extdebug' option to the `shopt' builtin). `BASH_ARGV' @@ -3794,8 +3752,8 @@ Variables::). the initial call is at the bottom. When a subroutine is executed, the parameters supplied are pushed onto `BASH_ARGV'. The shell sets `BASH_ARGV' only when in extended debugging mode (see *Note - The Shopt Builtin:: for a description of the `extdebug' option to - the `shopt' builtin). + Bash Builtins:: for a description of the `extdebug' option to the + `shopt' builtin). `BASH_COMMAND' The command currently being executed or about to be executed, @@ -3886,20 +3844,6 @@ Variables::). functions and external commands invoked by the programmable completion facilities (*note Programmable Completion::). -`COMP_TYPE' - Set to an integer value corresponding to the type of completion - attempted that caused a completion function to be called: TAB, for - normal completion, `?', for listing completions after successive - tabs, `!', for listing alternatives on partial word completion, - `@', 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 programmable - completion facilities (*note Programmable Completion::). - -`COMP_KEY' - The key (or final key of a key sequence) used to invoke the current - completion function. - `COMP_WORDBREAKS' The set of characters that the Readline library treats as word separators when performing word completion. If `COMP_WORDBREAKS' @@ -3908,10 +3852,9 @@ Variables::). `COMP_WORDS' An array variable consisting of the individual words in the - current command line. The words are split on shell metacharacters - as the shell parser would separate them. This variable is - available only in shell functions invoked by the programmable - completion facilities (*note Programmable Completion::). + current command line. This variable is available only in shell + functions invoked by the programmable completion facilities (*note + Programmable Completion::). `COMPREPLY' An array variable from which Bash reads the possible completions @@ -3951,7 +3894,7 @@ Variables::). 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 - bottom-most element is `"main"'. This variable exists only when a + bottom-most element is "main". This variable exists only when a shell function is executing. Assignments to `FUNCNAME' have no effect and return an error status. If `FUNCNAME' is unset, it loses its special properties, even if it is subsequently reset. @@ -4011,10 +3954,9 @@ Variables::). `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 history file is also truncated to - this size after writing it when an interactive shell exits. The - default value is 500. + if necessary, to contain no more than that number of lines. The + history file is also truncated to this size after writing it when + an interactive shell exits. The default value is 500. `HISTIGNORE' A colon-separated list of patterns used to decide which command @@ -4044,9 +3986,7 @@ Variables::). format string for STRFTIME to print the time stamp associated with each history entry displayed by the `history' builtin. If this variable is set, time stamps are written to the history file so - they may be preserved across shell sessions. This uses the - history comment character to distinguish timestamps from other - history lines. + they may be preserved across shell sessions. `HOSTFILE' Contains the name of a file in the same format as `/etc/hosts' that @@ -4252,7 +4192,7 @@ Variables::). if input does not arrive after `TMOUT' seconds when input is coming from a terminal. - In an interactive shell, the value is interpreted as the number of + In an interative shell, the value is interpreted as the number of seconds to wait for input after issuing the primary prompt when the shell is interactive. Bash terminates after that number of seconds if input does not arrive. @@ -4308,10 +4248,10 @@ the single-character options to be recognized. `--debugger' Arrange for the debugger profile to be executed before the shell - starts. Turns on extended debugging mode (see *Note The Shopt - Builtin:: for a description of the `extdebug' option to the `shopt' - builtin) and shell function tracing (see *Note The Set Builtin:: - for a description of the `-o functrace' option). + starts. Turns on extended debugging mode (see *Note Bash + Builtins:: for a description of the `extdebug' option to the + `shopt' builtin) and shell function tracing (see *Note The Set + Builtin:: for a description of the `-o functrace' option). `--dump-po-strings' A list of all double-quoted strings preceded by `$' is printed on @@ -4322,7 +4262,7 @@ the single-character options to be recognized. Equivalent to `-D'. `--help' - Display a usage message on standard output and exit successfully. + Display a usage message on standard output and exit sucessfully. `--init-file FILENAME' `--rcfile FILENAME' @@ -4402,8 +4342,8 @@ invocation which are not available with the `set' builtin. `[-+]O [SHOPT_OPTION]' SHOPT_OPTION is one of the shell options accepted by the `shopt' - builtin (*note The Shopt Builtin::). If SHOPT_OPTION is present, - `-O' sets the value of that option; `+O' unsets it. If + builtin (*note Shell Builtin Commands::). If SHOPT_OPTION is + present, `-O' sets the value of that option; `+O' unsets it. If SHOPT_OPTION is not supplied, the names and values of the shell options accepted by `shopt' are printed on the standard output. If the invocation option is `+O', the output is displayed in a @@ -4439,7 +4379,7 @@ File: bashref.info, Node: Bash Startup Files, Next: Interactive Shells, Prev: 6.2 Bash Startup Files ====================== -This section describes how Bash executes its startup files. If any of +This section describs how Bash executes its startup files. If any of the files exist but cannot be read, Bash reports an error. Tildes are expanded in file names as described above under Tilde Expansion (*note Tilde Expansion::). @@ -4563,9 +4503,9 @@ File: bashref.info, Node: What is an Interactive Shell?, Next: Is this Shell I ----------------------------------- An interactive shell is one started without non-option arguments, -unless `-s' is specified, without specifying the `-c' option, and whose -input and error output are both connected to terminals (as determined -by `isatty(3)'), or one started with the `-i' option. +unless `-s' is specified, without specifiying the `-c' option, and +whose input and error output are both connected to terminals (as +determined by `isatty(3)'), or one started with the `-i' option. An interactive shell generally reads from and writes to a user's terminal. @@ -4642,7 +4582,7 @@ several ways. ((*note Signals::). `SIGINT' will interrupt some shell builtins. 11. An interactive login shell sends a `SIGHUP' to all jobs on exit if - the `huponexit' shell option has been enabled (*note Signals::). + the `hupoxexit' shell option has been enabled (*note Signals::). 12. The `-n' invocation option is ignored, and `set -n' has no effect (*note The Set Builtin::). @@ -4672,7 +4612,7 @@ several ways. 20. Simple spelling correction for directory arguments to the `cd' builtin is enabled by default (see the description of the `cdspell' - option to the `shopt' builtin in *Note The Shopt Builtin::). + option to the `shopt' builtin in *Note Bash Builtins::). 21. The shell will check the value of the `TMOUT' variable and exit if a command is not read within the specified number of seconds after @@ -4937,8 +4877,8 @@ as in `csh'. If arguments are needed, a shell function should be used (*note Shell Functions::). Aliases are not expanded when the shell is not interactive, unless -the `expand_aliases' shell option is set using `shopt' (*note The Shopt -Builtin::). +the `expand_aliases' shell option is set using `shopt' (*note Bash +Builtins::). The rules concerning the definition and use of aliases are somewhat confusing. Bash always reads at least one complete line of input @@ -5103,17 +5043,12 @@ File: bashref.info, Node: Directory Stack Builtins, Up: The Directory Stack manipulated. `pushd' - pushd [-n] [+N | -N | DIR ] + pushd [DIR | +N | -N] [-n] Save the current directory on the top of the directory stack and then `cd' to DIR. With no arguments, `pushd' exchanges the top two directories. - `-n' - Suppresses the normal change of directory when adding - directories to the stack, so that only the stack is - manipulated. - `+N' Brings the Nth directory (counting from the left of the list printed by `dirs', starting with zero) to the top of the list @@ -5124,6 +5059,11 @@ File: bashref.info, Node: Directory Stack Builtins, Up: The Directory Stack printed by `dirs', starting with zero) to the top of the list by rotating the stack. + `-n' + Suppresses the normal change of directory when adding + directories to the stack, so that only the stack is + manipulated. + `DIR' Makes the current working directory be the top of the stack, and then executes the equivalent of ``cd' DIR'. `cd's to DIR. @@ -5567,13 +5507,11 @@ output. If the `-b' option to the `set' builtin is enabled, Bash reports such changes immediately (*note The Set Builtin::). Any trap on `SIGCHLD' is executed for each child process that exits. - If an attempt to exit Bash is made while jobs are stopped, (or -running, if the `checkjobs' option is enabled - see *Note The Shopt -Builtin::), the shell prints a warning message, and if the `checkjobs' -option is enabled, lists the jobs and their statuses. The `jobs' + If an attempt to exit Bash is made while jobs are stopped, the shell +prints a message warning that there are stopped jobs. The `jobs' command may then be used to inspect their status. If a second attempt to exit is made without an intervening command, Bash does not print -another warning, and any stopped jobs are terminated. +another warning, and the stopped jobs are terminated.  File: bashref.info, Node: Job Control Builtins, Next: Job Control Variables, Prev: Job Control Basics, Up: Job Control @@ -5995,8 +5933,7 @@ of keybindings. Any user can customize programs that use Readline by putting commands in an "inputrc" file, conventionally in his home directory. The name of this file is taken from the value of the shell variable `INPUTRC'. If that variable is unset, the default is -`~/.inputrc'. If that file does not exist or cannot be read, the -ultimate default is `/etc/inputrc'. +`~/.inputrc'. When a program which uses the Readline library starts up, the init file is read, and the key bindings are set. @@ -6208,10 +6145,9 @@ Key Bindings Once you know the name of the command, simply place on a line in the init file the name of the key you wish to bind the command to, - a colon, and then the name of the command. There can be no space - between the key name and the colon - that will be interpreted as - part of the key name. The name of the key can be expressed in - different ways, depending on what you find most comfortable. + a colon, and then the name of the command. The name of the key + can be expressed in different ways, depending on what you find most + comfortable. In addition to command names, readline allows keys to be bound to a string that is inserted when the key is pressed (a MACRO). @@ -7093,16 +7029,16 @@ and the matching words become the possible completions. After these matches have been generated, any shell function or command specified with the `-F' and `-C' options is invoked. When the -command or function is invoked, the `COMP_LINE', `COMP_POINT', -`COMP_KEY', and `COMP_TYPE' variables are assigned values as described -above (*note Bash Variables::). If a shell function is being invoked, -the `COMP_WORDS' and `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. No filtering of the -generated completions against the word being completed is performed; -the function or command has complete freedom in generating the matches. +command or function is invoked, the `COMP_LINE' and `COMP_POINT' +variables are assigned values as described above (*note Bash +Variables::). If a shell function is being invoked, the `COMP_WORDS' +and `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. 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 `-F' is invoked first. The function may use any of the shell facilities, including the `compgen' builtin @@ -7183,8 +7119,8 @@ completion facilities. `complete' `complete [-abcdefgjksuv] [-o COMP-OPTION] [-A ACTION] [-G GLOBPAT] [-W WORDLIST] - [-F FUNCTION] [-C COMMAND] [-X FILTERPAT] - [-P PREFIX] [-S SUFFIX] NAME [NAME ...]' + [-P PREFIX] [-S SUFFIX] [-X FILTERPAT] [-F FUNCTION] + [-C COMMAND] NAME [NAME ...]' `complete -pr [NAME ...]' Specify how arguments to each NAME should be completed. If the @@ -7413,11 +7349,7 @@ history, the history file is truncated to contain no more than performed. If the `HISTTIMEFORMAT' is set, the time stamp information -associated with each history entry is written to the history file, -marked with the history comment character. When the history file is -read, lines beginning with the history comment character followed -immediately by a digit are interpreted as timestamps for the previous -history line. +associated with each history entry is written to the history file. The builtin command `fc' may be used to list or edit and re-execute a portion of the history list. The `history' builtin may be used to @@ -7446,7 +7378,7 @@ Bash provides two builtin commands which manipulate the history list and history file. `fc' - `fc [-e ENAME] [-lnr] [FIRST] [LAST]' + `fc [-e ENAME] [-nlr] [FIRST] [LAST]' `fc -s [PAT=REP] [COMMAND]' Fix Command. In the first form, a range of commands from FIRST to @@ -7574,9 +7506,7 @@ available for subsequent recall. This is most useful in conjunction with Readline. The shell allows control of the various characters used by the -history expansion mechanism with the `histchars' variable, as explained -above (*note Bash Variables::). The shell uses the history comment -character to mark history timestamps when writing the history file. +history expansion mechanism with the `histchars' variable. * Menu: @@ -7698,7 +7628,7 @@ more of the following modifiers, each preceded by a `:'. Remove a trailing pathname component, leaving only the head. `t' - Remove all leading pathname components, leaving the tail. + Remove all leading pathname components, leaving the tail. `r' Remove a trailing suffix of the form `.SUFFIX', leaving the @@ -8456,9 +8386,9 @@ the baseline reference. Builtins::). * Bash includes the `shopt' builtin, for finer control of shell - optional capabilities (*note The Shopt Builtin::), and allows - these options to be set and unset at shell invocation (*note - Invoking Bash::). + optional capabilities (*note Bash Builtins::), and allows these + options to be set and unset at shell invocation (*note Invoking + Bash::). * Bash has much more optional behavior controllable with the `set' builtin (*note The Set Builtin::). @@ -8585,7 +8515,7 @@ many of the limitations of the SVR4.2 shell. For instance: turns on job control).  -File: bashref.info, Node: Copying This Manual, Next: Indexes, Prev: Major Differences From The Bourne Shell, Up: Top +File: bashref.info, Node: Copying This Manual, Next: Builtin Index, Prev: Major Differences From The Bourne Shell, Up: Top Appendix C Copying This Manual ****************************** @@ -9027,26 +8957,10 @@ free software license, such as the GNU General Public License, to permit their use in free software.  -File: bashref.info, Node: Indexes, Prev: Copying This Manual, Up: Top - -Appendix D Indexes -****************** - -* Menu: - -* Builtin Index:: Index of Bash builtin commands. -* Reserved Word Index:: Index of Bash reserved words. -* Variable Index:: Quick reference helps you find the - variable you want. -* Function Index:: Index of bindable Readline functions. -* Concept Index:: General index for concepts described in - this manual. - - -File: bashref.info, Node: Builtin Index, Next: Reserved Word Index, Up: Indexes +File: bashref.info, Node: Builtin Index, Next: Reserved Word Index, Prev: Copying This Manual, Up: Top -D.1 Index of Shell Builtin Commands -=================================== +Index of Shell Builtin Commands +******************************* [index] * Menu: @@ -9079,8 +8993,8 @@ D.1 Index of Shell Builtin Commands (line 7) * disown: Job Control Builtins. (line 83) -* echo: Bash Builtins. (line 193) -* enable: Bash Builtins. (line 245) +* echo: Bash Builtins. (line 191) +* enable: Bash Builtins. (line 247) * eval: Bourne Shell Builtins. (line 63) * exec: Bourne Shell Builtins. @@ -9097,33 +9011,33 @@ D.1 Index of Shell Builtin Commands (line 103) * hash: Bourne Shell Builtins. (line 145) -* help: Bash Builtins. (line 273) +* help: Bash Builtins. (line 275) * history: Bash History Builtins. (line 39) * jobs: Job Control Builtins. (line 25) * kill: Job Control Builtins. (line 57) -* let: Bash Builtins. (line 282) -* local: Bash Builtins. (line 289) -* logout: Bash Builtins. (line 299) +* let: Bash Builtins. (line 284) +* local: Bash Builtins. (line 291) +* logout: Bash Builtins. (line 301) * popd: Directory Stack Builtins. (line 37) -* printf: Bash Builtins. (line 303) +* printf: Bash Builtins. (line 305) * pushd: Directory Stack Builtins. (line 58) * pwd: Bourne Shell Builtins. (line 163) -* read: Bash Builtins. (line 328) +* read: Bash Builtins. (line 330) * readonly: Bourne Shell Builtins. (line 172) * return: Bourne Shell Builtins. (line 187) -* set: The Set Builtin. (line 11) +* set: The Set Builtin. (line 9) * shift: Bourne Shell Builtins. (line 200) -* shopt: The Shopt Builtin. (line 9) -* source: Bash Builtins. (line 389) +* shopt: Bash Builtins. (line 391) +* source: Bash Builtins. (line 622) * suspend: Job Control Builtins. (line 94) * test: Bourne Shell Builtins. @@ -9132,22 +9046,22 @@ D.1 Index of Shell Builtin Commands (line 278) * trap: Bourne Shell Builtins. (line 283) -* type: Bash Builtins. (line 393) -* typeset: Bash Builtins. (line 424) -* ulimit: Bash Builtins. (line 430) +* type: Bash Builtins. (line 626) +* typeset: Bash Builtins. (line 657) +* ulimit: Bash Builtins. (line 663) * umask: Bourne Shell Builtins. (line 324) -* unalias: Bash Builtins. (line 508) +* unalias: Bash Builtins. (line 740) * unset: Bourne Shell Builtins. (line 341) * wait: Job Control Builtins. (line 73)  -File: bashref.info, Node: Reserved Word Index, Next: Variable Index, Prev: Builtin Index, Up: Indexes +File: bashref.info, Node: Reserved Word Index, Next: Variable Index, Prev: Builtin Index, Up: Top -D.2 Index of Shell Reserved Words -================================= +Index of Shell Reserved Words +***************************** [index] * Menu: @@ -9186,10 +9100,10 @@ D.2 Index of Shell Reserved Words * }: Command Grouping. (line 21)  -File: bashref.info, Node: Variable Index, Next: Function Index, Prev: Reserved Word Index, Up: Indexes +File: bashref.info, Node: Variable Index, Next: Function Index, Prev: Reserved Word Index, Up: Top -D.3 Parameter and Variable Index -================================ +Parameter and Variable Index +**************************** [index] * Menu: @@ -9206,95 +9120,92 @@ D.3 Parameter and Variable Index * auto_resume: Job Control Variables. (line 6) * BASH: Bash Variables. (line 13) -* BASH_ARGC: Bash Variables. (line 21) -* BASH_ARGV: Bash Variables. (line 31) -* BASH_COMMAND: Bash Variables. (line 41) -* BASH_ENV: Bash Variables. (line 46) -* BASH_EXECUTION_STRING: Bash Variables. (line 52) -* BASH_LINENO: Bash Variables. (line 55) -* BASH_REMATCH: Bash Variables. (line 63) -* BASH_SOURCE: Bash Variables. (line 71) -* BASH_SUBSHELL: Bash Variables. (line 75) -* BASH_VERSINFO: Bash Variables. (line 79) -* BASH_VERSION: Bash Variables. (line 103) -* BASHPID: Bash Variables. (line 16) +* BASH_ARGC: Bash Variables. (line 16) +* BASH_ARGV: Bash Variables. (line 26) +* BASH_COMMAND: Bash Variables. (line 36) +* BASH_ENV: Bash Variables. (line 41) +* BASH_EXECUTION_STRING: Bash Variables. (line 47) +* BASH_LINENO: Bash Variables. (line 50) +* BASH_REMATCH: Bash Variables. (line 58) +* BASH_SOURCE: Bash Variables. (line 66) +* BASH_SUBSHELL: Bash Variables. (line 70) +* BASH_VERSINFO: Bash Variables. (line 74) +* BASH_VERSION: Bash Variables. (line 98) * bell-style: Readline Init File Syntax. (line 38) * bind-tty-special-chars: Readline Init File Syntax. (line 45) * CDPATH: Bourne Shell Variables. (line 9) -* COLUMNS: Bash Variables. (line 106) +* COLUMNS: Bash Variables. (line 101) * comment-begin: Readline Init File Syntax. (line 50) -* COMP_CWORD: Bash Variables. (line 111) -* COMP_KEY: Bash Variables. (line 140) -* COMP_LINE: Bash Variables. (line 117) -* COMP_POINT: Bash Variables. (line 122) -* COMP_TYPE: Bash Variables. (line 130) -* COMP_WORDBREAKS: Bash Variables. (line 144) -* COMP_WORDS: Bash Variables. (line 150) +* COMP_CWORD: Bash Variables. (line 106) +* COMP_LINE: Bash Variables. (line 112) +* COMP_POINT: Bash Variables. (line 117) +* COMP_WORDBREAKS: Bash Variables. (line 125) +* COMP_WORDS: Bash Variables. (line 131) * completion-query-items: Readline Init File Syntax. (line 60) -* COMPREPLY: Bash Variables. (line 157) +* COMPREPLY: Bash Variables. (line 137) * convert-meta: Readline Init File Syntax. (line 70) -* DIRSTACK: Bash Variables. (line 162) +* DIRSTACK: Bash Variables. (line 142) * disable-completion: Readline Init File Syntax. (line 76) * editing-mode: Readline Init File Syntax. (line 81) -* EMACS: Bash Variables. (line 172) +* EMACS: Bash Variables. (line 152) * enable-keypad: Readline Init File Syntax. (line 87) -* EUID: Bash Variables. (line 177) +* EUID: Bash Variables. (line 157) * expand-tilde: Readline Init File Syntax. (line 92) -* FCEDIT: Bash Variables. (line 181) -* FIGNORE: Bash Variables. (line 185) -* FUNCNAME: Bash Variables. (line 191) -* GLOBIGNORE: Bash Variables. (line 200) -* GROUPS: Bash Variables. (line 206) -* histchars: Bash Variables. (line 212) -* HISTCMD: Bash Variables. (line 227) -* HISTCONTROL: Bash Variables. (line 232) -* HISTFILE: Bash Variables. (line 248) -* HISTFILESIZE: Bash Variables. (line 252) -* HISTIGNORE: Bash Variables. (line 260) +* FCEDIT: Bash Variables. (line 161) +* FIGNORE: Bash Variables. (line 165) +* FUNCNAME: Bash Variables. (line 171) +* GLOBIGNORE: Bash Variables. (line 180) +* GROUPS: Bash Variables. (line 186) +* histchars: Bash Variables. (line 192) +* HISTCMD: Bash Variables. (line 207) +* HISTCONTROL: Bash Variables. (line 212) +* HISTFILE: Bash Variables. (line 228) +* HISTFILESIZE: Bash Variables. (line 232) +* HISTIGNORE: Bash Variables. (line 239) * history-preserve-point: Readline Init File Syntax. (line 96) -* HISTSIZE: Bash Variables. (line 279) -* HISTTIMEFORMAT: Bash Variables. (line 283) +* HISTSIZE: Bash Variables. (line 258) +* HISTTIMEFORMAT: Bash Variables. (line 262) * HOME: Bourne Shell Variables. (line 13) * horizontal-scroll-mode: Readline Init File Syntax. (line 101) -* HOSTFILE: Bash Variables. (line 292) -* HOSTNAME: Bash Variables. (line 303) -* HOSTTYPE: Bash Variables. (line 306) +* HOSTFILE: Bash Variables. (line 269) +* HOSTNAME: Bash Variables. (line 280) +* HOSTTYPE: Bash Variables. (line 283) * IFS: Bourne Shell Variables. (line 18) -* IGNOREEOF: Bash Variables. (line 309) +* IGNOREEOF: Bash Variables. (line 286) * input-meta: Readline Init File Syntax. (line 108) -* INPUTRC: Bash Variables. (line 319) +* INPUTRC: Bash Variables. (line 296) * isearch-terminators: Readline Init File Syntax. (line 115) * keymap: Readline Init File Syntax. (line 122) -* LANG: Bash Variables. (line 323) -* LC_ALL: Bash Variables. (line 327) -* LC_COLLATE: Bash Variables. (line 331) -* LC_CTYPE: Bash Variables. (line 338) +* LANG: Bash Variables. (line 300) +* LC_ALL: Bash Variables. (line 304) +* LC_COLLATE: Bash Variables. (line 308) +* LC_CTYPE: Bash Variables. (line 315) * LC_MESSAGES <1>: Locale Translation. (line 11) -* LC_MESSAGES: Bash Variables. (line 343) -* LC_NUMERIC: Bash Variables. (line 347) -* LINENO: Bash Variables. (line 351) -* LINES: Bash Variables. (line 355) -* MACHTYPE: Bash Variables. (line 360) +* LC_MESSAGES: Bash Variables. (line 320) +* LC_NUMERIC: Bash Variables. (line 324) +* LINENO: Bash Variables. (line 328) +* LINES: Bash Variables. (line 332) +* MACHTYPE: Bash Variables. (line 337) * MAIL: Bourne Shell Variables. (line 22) -* MAILCHECK: Bash Variables. (line 364) +* MAILCHECK: Bash Variables. (line 341) * MAILPATH: Bourne Shell Variables. (line 27) * mark-modified-lines: Readline Init File Syntax. @@ -9305,54 +9216,54 @@ D.3 Parameter and Variable Index (line 145) * meta-flag: Readline Init File Syntax. (line 108) -* OLDPWD: Bash Variables. (line 372) +* OLDPWD: Bash Variables. (line 349) * OPTARG: Bourne Shell Variables. (line 34) -* OPTERR: Bash Variables. (line 375) +* OPTERR: Bash Variables. (line 352) * OPTIND: Bourne Shell Variables. (line 38) -* OSTYPE: Bash Variables. (line 379) +* OSTYPE: Bash Variables. (line 356) * output-meta: Readline Init File Syntax. (line 152) * page-completions: Readline Init File Syntax. (line 157) * PATH: Bourne Shell Variables. (line 42) -* PIPESTATUS: Bash Variables. (line 382) -* POSIXLY_CORRECT: Bash Variables. (line 387) -* PPID: Bash Variables. (line 396) -* PROMPT_COMMAND: Bash Variables. (line 400) +* PIPESTATUS: Bash Variables. (line 359) +* POSIXLY_CORRECT: Bash Variables. (line 364) +* PPID: Bash Variables. (line 373) +* PROMPT_COMMAND: Bash Variables. (line 377) * PS1: Bourne Shell Variables. (line 48) * PS2: Bourne Shell Variables. (line 53) -* PS3: Bash Variables. (line 404) -* PS4: Bash Variables. (line 409) -* PWD: Bash Variables. (line 415) -* RANDOM: Bash Variables. (line 418) -* REPLY: Bash Variables. (line 423) -* SECONDS: Bash Variables. (line 426) -* SHELL: Bash Variables. (line 432) -* SHELLOPTS: Bash Variables. (line 437) -* SHLVL: Bash Variables. (line 446) +* PS3: Bash Variables. (line 381) +* PS4: Bash Variables. (line 386) +* PWD: Bash Variables. (line 392) +* RANDOM: Bash Variables. (line 395) +* REPLY: Bash Variables. (line 400) +* SECONDS: Bash Variables. (line 403) +* SHELL: Bash Variables. (line 409) +* SHELLOPTS: Bash Variables. (line 414) +* SHLVL: Bash Variables. (line 423) * show-all-if-ambiguous: Readline Init File Syntax. (line 167) * show-all-if-unmodified: Readline Init File Syntax. (line 173) * TEXTDOMAIN: Locale Translation. (line 11) * TEXTDOMAINDIR: Locale Translation. (line 11) -* TIMEFORMAT: Bash Variables. (line 451) -* TMOUT: Bash Variables. (line 489) -* TMPDIR: Bash Variables. (line 501) -* UID: Bash Variables. (line 505) +* TIMEFORMAT: Bash Variables. (line 428) +* TMOUT: Bash Variables. (line 466) +* TMPDIR: Bash Variables. (line 478) +* UID: Bash Variables. (line 482) * visible-stats: Readline Init File Syntax. (line 182)  -File: bashref.info, Node: Function Index, Next: Concept Index, Prev: Variable Index, Up: Indexes +File: bashref.info, Node: Function Index, Next: Concept Index, Prev: Variable Index, Up: Top -D.4 Function Index -================== +Function Index +************** [index] * Menu: @@ -9451,10 +9362,10 @@ D.4 Function Index * yank-pop (M-y): Commands For Killing. (line 62)  -File: bashref.info, Node: Concept Index, Prev: Function Index, Up: Indexes +File: bashref.info, Node: Concept Index, Prev: Function Index, Up: Top -D.5 Concept Index -================= +Concept Index +************* [index] * Menu: @@ -9613,131 +9524,128 @@ D.5 Concept Index  Tag Table: Node: Top1355 -Node: Introduction3163 -Node: What is Bash?3391 -Node: What is a shell?4504 -Node: Definitions7044 -Node: Basic Shell Features9812 -Node: Shell Syntax11031 -Node: Shell Operation12061 -Node: Quoting13355 -Node: Escape Character14658 -Node: Single Quotes15143 -Node: Double Quotes15491 -Node: ANSI-C Quoting16616 -Node: Locale Translation17572 -Node: Comments18468 -Node: Shell Commands19086 -Node: Simple Commands19852 -Node: Pipelines20483 -Node: Lists22358 -Node: Compound Commands23989 -Node: Looping Constructs24773 -Node: Conditional Constructs27220 -Node: Command Grouping34692 -Node: Shell Functions36141 -Node: Shell Parameters40550 -Node: Positional Parameters42880 -Node: Special Parameters43780 -Node: Shell Expansions46744 -Node: Brace Expansion48669 -Node: Tilde Expansion50995 -Node: Shell Parameter Expansion53346 -Node: Command Substitution61046 -Node: Arithmetic Expansion62379 -Node: Process Substitution63229 -Node: Word Splitting64279 -Node: Filename Expansion65902 -Node: Pattern Matching68042 -Node: Quote Removal71360 -Node: Redirections71655 -Node: Executing Commands79385 -Node: Simple Command Expansion80055 -Node: Command Search and Execution81985 -Node: Command Execution Environment83991 -Node: Environment86790 -Node: Exit Status88450 -Node: Signals89654 -Node: Shell Scripts91622 -Node: Shell Builtin Commands94140 -Node: Bourne Shell Builtins95817 -Node: Bash Builtins112928 -Node: Modifying Shell Behavior132916 -Node: The Set Builtin133261 -Node: The Shopt Builtin141883 -Node: Special Builtins152113 -Node: Shell Variables153092 -Node: Bourne Shell Variables153532 -Node: Bash Variables155513 -Node: Bash Features176808 -Node: Invoking Bash177691 -Node: Bash Startup Files183500 -Node: Interactive Shells188359 -Node: What is an Interactive Shell?188769 -Node: Is this Shell Interactive?189418 -Node: Interactive Shell Behavior190233 -Node: Bash Conditional Expressions193513 -Node: Shell Arithmetic197092 -Node: Aliases199838 -Node: Arrays202410 -Node: The Directory Stack205759 -Node: Directory Stack Builtins206473 -Node: Printing a Prompt209365 -Node: The Restricted Shell212079 -Node: Bash POSIX Mode213911 -Node: Job Control221670 -Node: Job Control Basics222137 -Node: Job Control Builtins226646 -Node: Job Control Variables230973 -Node: Command Line Editing232131 -Node: Introduction and Notation233130 -Node: Readline Interaction234752 -Node: Readline Bare Essentials235943 -Node: Readline Movement Commands237732 -Node: Readline Killing Commands238697 -Node: Readline Arguments240617 -Node: Searching241661 -Node: Readline Init File243847 -Node: Readline Init File Syntax244994 -Node: Conditional Init Constructs257325 -Node: Sample Init File259858 -Node: Bindable Readline Commands262975 -Node: Commands For Moving264182 -Node: Commands For History265043 -Node: Commands For Text268198 -Node: Commands For Killing270871 -Node: Numeric Arguments273013 -Node: Commands For Completion274152 -Node: Keyboard Macros277745 -Node: Miscellaneous Commands278316 -Node: Readline vi Mode283627 -Node: Programmable Completion284541 -Node: Programmable Completion Builtins290359 -Node: Using History Interactively297955 -Node: Bash History Facilities298635 -Node: Bash History Builtins301549 -Node: History Interaction305406 -Node: Event Designators308111 -Node: Word Designators309126 -Node: Modifiers310765 -Node: Installing Bash312169 -Node: Basic Installation313299 -Node: Compilers and Options315991 -Node: Compiling For Multiple Architectures316732 -Node: Installation Names318396 -Node: Specifying the System Type319214 -Node: Sharing Defaults319930 -Node: Operation Controls320603 -Node: Optional Features321561 -Node: Reporting Bugs330492 -Node: Major Differences From The Bourne Shell331686 -Node: Copying This Manual348355 -Node: GNU Free Documentation License348625 -Node: Indexes371031 -Node: Builtin Index371474 -Node: Reserved Word Index378007 -Node: Variable Index380455 -Node: Function Index391619 -Node: Concept Index398351 +Node: Introduction3435 +Node: What is Bash?3663 +Node: What is a shell?4776 +Node: Definitions7317 +Node: Basic Shell Features10084 +Node: Shell Syntax11303 +Node: Shell Operation12333 +Node: Quoting13627 +Node: Escape Character14930 +Node: Single Quotes15415 +Node: Double Quotes15763 +Node: ANSI-C Quoting16888 +Node: Locale Translation17844 +Node: Comments18740 +Node: Shell Commands19354 +Node: Simple Commands20120 +Node: Pipelines20751 +Node: Lists22626 +Node: Compound Commands24257 +Node: Looping Constructs25041 +Node: Conditional Constructs27488 +Node: Command Grouping34947 +Node: Shell Functions36396 +Node: Shell Parameters40805 +Node: Positional Parameters43135 +Node: Special Parameters44035 +Node: Shell Expansions46999 +Node: Brace Expansion48924 +Node: Tilde Expansion51249 +Node: Shell Parameter Expansion53600 +Node: Command Substitution61070 +Node: Arithmetic Expansion62403 +Node: Process Substitution63253 +Node: Word Splitting64303 +Node: Filename Expansion65764 +Node: Pattern Matching67900 +Node: Quote Removal71218 +Node: Redirections71513 +Node: Executing Commands79243 +Node: Simple Command Expansion79913 +Node: Command Search and Execution81843 +Node: Command Execution Environment83849 +Node: Environment86620 +Node: Exit Status88280 +Node: Signals89484 +Node: Shell Scripts91448 +Node: Shell Builtin Commands93966 +Node: Bourne Shell Builtins95635 +Node: Bash Builtins112710 +Node: The Set Builtin142062 +Node: Special Builtins150437 +Node: Shell Variables151407 +Node: Bourne Shell Variables151847 +Node: Bash Variables153828 +Node: Bash Features174014 +Node: Invoking Bash174897 +Node: Bash Startup Files180706 +Node: Interactive Shells185564 +Node: What is an Interactive Shell?185974 +Node: Is this Shell Interactive?186624 +Node: Interactive Shell Behavior187439 +Node: Bash Conditional Expressions190715 +Node: Shell Arithmetic194294 +Node: Aliases197040 +Node: Arrays199608 +Node: The Directory Stack202957 +Node: Directory Stack Builtins203671 +Node: Printing a Prompt206562 +Node: The Restricted Shell209276 +Node: Bash POSIX Mode211108 +Node: Job Control218867 +Node: Job Control Basics219334 +Node: Job Control Builtins223710 +Node: Job Control Variables228037 +Node: Command Line Editing229195 +Node: Introduction and Notation230194 +Node: Readline Interaction231816 +Node: Readline Bare Essentials233007 +Node: Readline Movement Commands234796 +Node: Readline Killing Commands235761 +Node: Readline Arguments237681 +Node: Searching238725 +Node: Readline Init File240911 +Node: Readline Init File Syntax241970 +Node: Conditional Init Constructs254186 +Node: Sample Init File256719 +Node: Bindable Readline Commands259836 +Node: Commands For Moving261043 +Node: Commands For History261904 +Node: Commands For Text265059 +Node: Commands For Killing267732 +Node: Numeric Arguments269874 +Node: Commands For Completion271013 +Node: Keyboard Macros274606 +Node: Miscellaneous Commands275177 +Node: Readline vi Mode280488 +Node: Programmable Completion281402 +Node: Programmable Completion Builtins287194 +Node: Using History Interactively294790 +Node: Bash History Facilities295470 +Node: Bash History Builtins298165 +Node: History Interaction302022 +Node: Event Designators304578 +Node: Word Designators305593 +Node: Modifiers307232 +Node: Installing Bash308638 +Node: Basic Installation309768 +Node: Compilers and Options312460 +Node: Compiling For Multiple Architectures313201 +Node: Installation Names314865 +Node: Specifying the System Type315683 +Node: Sharing Defaults316399 +Node: Operation Controls317072 +Node: Optional Features318030 +Node: Reporting Bugs326961 +Node: Major Differences From The Bourne Shell328155 +Node: Copying This Manual344820 +Node: GNU Free Documentation License345096 +Node: Builtin Index367502 +Node: Reserved Word Index374051 +Node: Variable Index376487 +Node: Function Index387420 +Node: Concept Index394140  End Tag Table diff --git a/doc/bashref.log b/doc/bashref.log index bb723a949..970b3932c 100644 --- a/doc/bashref.log +++ b/doc/bashref.log @@ -1,4 +1,4 @@ -This is TeX, Version 3.141592 (Web2C 7.5.4) (format=tex 2006.11.28) 16 JAN 2007 11:15 +This is TeX, Version 3.14159 (Web2C 7.4.5) (format=tex 2005.3.22) 26 JAN 2006 11:19 **/Users/chet/src/bash/src/doc/bashref.texi (/Users/chet/src/bash/src/doc/bashref.texi (./texinfo.tex Loading texinfo [version 2003-02-03.16]: Basics, @@ -106,7 +106,7 @@ cross references, \auxfile=\write2 \savesfregister=\count46 \footnoteno=\count47 - (/sw/share/texmf-dist/tex/generic/epsf/epsf.tex + (/sw/share/texmf/tex/generic/misc/epsf.tex \epsffilein=\read0 \epsfframemargin=\dimen39 \epsfframethickness=\dimen40 @@ -119,19 +119,18 @@ cross references, \epsfnoopenhelp=\toks24 ) \noepsfhelp=\toks25 - -localization, + localization, \nolanghelp=\toks26 \defaultparindent=\dimen47 - and turning on texinfo input format.) (./bashref.aux) + +and turning on texinfo input format.) (./bashref.aux) @cpindfile=@write3 @fnindfile=@write4 @vrindfile=@write5 @tpindfile=@write6 @kyindfile=@write7 @pgindfile=@write8 - -(./version.texi) + (./version.texi) @btindfile=@write9 @rwindfile=@write10 [1 @@ -153,12 +152,13 @@ localization, \openout10 = `bashref.rw'. -] [2] (./bashref.toc [-1] [-2] [-3]) [-4] Chapter 1 +] +[2] (./bashref.toc [-1] [-2] [-3]) [-4] Chapter 1 \openout0 = `bashref.toc'. - [1] -Chapter 2 [2] [3] Chapter 3 [4] [5] [6] [7] [8] [9] [10] -Overfull \hbox (43.33539pt too wide) in paragraph at lines 839--839 + [1] Chapter 2 [2] [3] +Chapter 3 [4] [5] [6] [7] [8] [9] [10] +Overfull \hbox (43.33539pt too wide) in paragraph at lines 845--845 []@texttt case @textttsl word @texttt in [ [(] @textttsl pat-tern @texttt [| @ textttsl pat-tern@texttt ][]) @textttsl command-list @texttt ;;][] esac[][] @@ -173,7 +173,7 @@ textttsl pat-tern@texttt ][]) @textttsl command-list @texttt ;;][] esac[][] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] Chapter 4 [33] [34] [35] [36] [37] [38] [39] [40] [41] -Underfull \hbox (badness 5231) in paragraph at lines 3121--3134 +Underfull \hbox (badness 5231) in paragraph at lines 3120--3133 @texttt emacs-meta[]@textrm , @texttt emacs-ctlx[]@textrm , @texttt vi[]@textr m , @texttt vi-move[]@textrm , @texttt vi-command[]@textrm , and @@ -186,7 +186,7 @@ m , @texttt vi-move[]@textrm , @texttt vi-command[]@textrm , and .etc. [42] [43] [44] [45] -Overfull \hbox (43.33536pt too wide) in paragraph at lines 3464--3464 +Overfull \hbox (43.33536pt too wide) in paragraph at lines 3463--3463 []@texttt read [-ers] [-a @textttsl aname@texttt ] [-d @textttsl de-lim@texttt ] [-n @textttsl nchars@texttt ] [-p @textttsl prompt@texttt ] [-t @textttsl ti me- @@ -199,8 +199,8 @@ me- .@texttt a .etc. -[46] [47] [48] [49] [50] [51] [52] [53] -Underfull \hbox (badness 2573) in paragraph at lines 4086--4090 +[46] [47] [48] +Underfull \hbox (badness 2573) in paragraph at lines 3647--3651 [] []@textrm Error trac-ing is en-abled: com-mand sub-sti-tu-tion, shell @hbox(7.60416+2.12917)x433.62, glue set 2.95305 @@ -215,9 +215,9 @@ Underfull \hbox (badness 2573) in paragraph at lines 4086--4090 .@textrm E .etc. -[54] [55] [56] Chapter 5 [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] -Chapter 6 [67] [68] -Overfull \hbox (51.96864pt too wide) in paragraph at lines 4902--4902 +[49] [50] [51] [52] [53] [54] [55] Chapter 5 [56] [57] [58] [59] [60] [61] +[62] [63] [64] Chapter 6 [65] [66] +Overfull \hbox (51.96864pt too wide) in paragraph at lines 4840--4840 []@texttt bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o @textttsl op-tion@t exttt ] [-O @textttsl shopt_option@texttt ] [@textttsl ar- @@ -230,7 +230,7 @@ exttt ] [-O @textttsl shopt_option@texttt ] [@textttsl ar- .etc. -Overfull \hbox (76.23077pt too wide) in paragraph at lines 4903--4903 +Overfull \hbox (76.23077pt too wide) in paragraph at lines 4841--4841 []@texttt bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o @textttsl op-tion@texttt ] [-O @textttsl shopt_option@texttt ] -c @textttsl string @texttt [@textttsl ar - @@ -244,7 +244,7 @@ Overfull \hbox (76.23077pt too wide) in paragraph at lines 4903--4903 .etc. -Overfull \hbox (34.72258pt too wide) in paragraph at lines 4904--4904 +Overfull \hbox (34.72258pt too wide) in paragraph at lines 4842--4842 []@texttt bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o @textttsl op-tion@text tt ] [-O @textttsl shopt_option@texttt ] [@textttsl ar- @@ -256,8 +256,8 @@ tt ] [-O @textttsl shopt_option@texttt ] [@textttsl ar- .@texttt s .etc. -[69] [70] -Underfull \hbox (badness 2245) in paragraph at lines 5078--5080 +[67] [68] +Underfull \hbox (badness 2245) in paragraph at lines 5016--5018 []@textrm When a lo-gin shell ex-its, Bash reads and ex-e-cutes com-mands from the file @@ -269,8 +269,8 @@ the file .@textrm n .etc. -[71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] -Underfull \hbox (badness 2521) in paragraph at lines 6192--6195 +[69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] +Underfull \hbox (badness 2521) in paragraph at lines 6130--6133 @textrm `@texttt --enable-strict-posix-default[]@textrm '[] to @texttt configur e[] @textrm when build-ing (see Sec-tion 10.8 @@ -282,10 +282,10 @@ e[] @textrm when build-ing (see Sec-tion 10.8 .@texttt n .etc. -Chapter 7 [85] [86] [87] [88] [89] -(/Users/chet/src/bash/src/lib/readline/doc/rluser.texi Chapter 8 [90] [91] -[92] [93] [94] [95] -Underfull \hbox (badness 5231) in paragraph at lines 502--518 +Chapter 7 [83] [84] [85] [86] [87] +(/Users/chet/src/bash/src/lib/readline/doc/rluser.texi Chapter 8 [88] [89] +[90] [91] [92] [93] +Underfull \hbox (badness 5231) in paragraph at lines 500--516 @texttt emacs-meta[]@textrm , @texttt emacs-ctlx[]@textrm , @texttt vi[]@textr m , @texttt vi-move[]@textrm , @texttt vi-command[]@textrm , and @@ -297,8 +297,8 @@ m , @texttt vi-move[]@textrm , @texttt vi-command[]@textrm , and .@texttt c .etc. -[96] [97] [98] [99] [100] -Overfull \hbox (26.43913pt too wide) in paragraph at lines 817--817 +[94] [95] [96] [97] [98] +Overfull \hbox (26.43913pt too wide) in paragraph at lines 813--813 []@texttt Meta-Control-h: backward-kill-word Text after the function name is i gnored[] @@ -310,8 +310,8 @@ gnored[] .@texttt t .etc. -[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] -Overfull \hbox (17.80585pt too wide) in paragraph at lines 1666--1666 +[99] [100] [101] [102] [103] [104] [105] [106] [107] [108] [109] [110] +Overfull \hbox (17.80585pt too wide) in paragraph at lines 1662--1662 []@texttt complete [-abcdefgjksuv] [-o @textttsl comp-option@texttt ] [-A @tex tttsl ac-tion@texttt ] [-G @textttsl glob- @@ -323,8 +323,8 @@ tttsl ac-tion@texttt ] [-G @textttsl glob- .@texttt m .etc. -[113] [114] -Underfull \hbox (badness 2753) in paragraph at lines 1768--1771 +[111] [112] +Underfull \hbox (badness 2753) in paragraph at lines 1764--1767 @texttt hostname[]@textrm Hostnames, as taken from the file spec-i-fied by @hbox(7.60416+2.12917)x433.62, glue set 3.02202 @@ -335,9 +335,9 @@ Underfull \hbox (badness 2753) in paragraph at lines 1768--1771 .@texttt o .etc. -[115]) (/Users/chet/src/bash/src/lib/readline/doc/hsuser.texi Chapter 9 -[116] [117] [118] [119] [120]) Chapter 10 [121] [122] [123] [124] [125] -Underfull \hbox (badness 2772) in paragraph at lines 6788--6792 +[113]) (/Users/chet/src/bash/src/lib/readline/doc/hsuser.texi Chapter 9 +[114] [115] [116] [117] [118]) Chapter 10 [119] [120] [121] [122] [123] +Underfull \hbox (badness 2772) in paragraph at lines 6724--6728 []@textrm Enable sup-port for large files (@texttt http://www.sas.com/standard s/large_ @@ -349,35 +349,37 @@ s/large_ .@textrm a .etc. -[126] [127] [128] Appendix A [129] [130] Appendix B [131] [132] [133] [134] -[135] [136] [137] Appendix C [138] (./fdl.texi [139] [140] [141] [142] [143] -[144]) Appendix D [145] [146] (./bashref.bts) [147] -Overfull \vbox (45.46959pt too high) has occurred while \output is active -\vbox(643.19986+2.0)x433.62, glue set - 1.0 -.\glue(\topskip) 26.00002 -.\vbox(9.99998+0.0)x433.62 -..\hbox(9.99998+0.0)x433.62, glue set 163.10767fil +[124] [125] [126] Appendix A [127] [128] Appendix B [129] [130] [131] [132] +[133] [134] [135] Appendix C [136] (./fdl.texi [137] [138] [139] [140] [141] +[142]) (Index of Shell Builtin Commands) [143] [144] (./bashref.bts) +(Index of Shell Reserved Words) +Overfull \vbox (42.26959pt too high) has occurred while \output is active +\vbox(643.19986+0.0)x433.62, glue set - 1.0 +.\glue(\topskip) 24.00002 +.\vbox(11.99998+0.0)x433.62 +..\hbox(11.99998+0.0)x433.62, glue set 148.745fil ...\hbox(0.0+0.0)x0.0 -...\secrm D -...\secrm . -...\secrm 1 -...\kern 8.09999 +...\chaprm I +...\chaprm n +...\chaprm d +...\chaprm e ...etc. .\penalty 10000 -.\kern 13.2 +.\glue 12.0 plus 4.0 minus 4.0 .\penalty 10000 .etc. -[148] (./bashref.rws) (./bashref.vrs [149] [150]) (./bashref.fns [151]) -[152] (./bashref.cps [153]) [154] ) +[145] [146] (./bashref.rws) (Parameter and Variable Index) [147] [148] +(./bashref.vrs [149]) (Function Index) [150] (./bashref.fns [151]) +(Concept Index) [152] (./bashref.cps [153]) [154] ) Here is how much of TeX's memory you used: - 1735 strings out of 97980 - 23708 string characters out of 1221004 - 55365 words of memory out of 1000000 - 2586 multiletter control sequences out of 10000+50000 - 31953 words of font info for 111 fonts, out of 500000 for 2000 + 1726 strings out of 98002 + 23501 string characters out of 1221987 + 52376 words of memory out of 1000001 + 2577 multiletter control sequences out of 10000+50000 + 31953 words of font info for 111 fonts, out of 500000 for 1000 19 hyphenation exceptions out of 1000 - 15i,8n,11p,269b,474s stack positions out of 1500i,500n,5000p,200000b,5000s + 15i,8n,11p,269b,465s stack positions out of 1500i,500n,5000p,200000b,5000s -Output written on bashref.dvi (160 pages, 611796 bytes). +Output written on bashref.dvi (160 pages, 590960 bytes). diff --git a/doc/bashref.pdf b/doc/bashref.pdf index 91b344ccf9d6c0df86588a7d18a631ddd1858a7a..517ce89e41252957f11a4b4424cf4ed9313c35a0 100644 GIT binary patch delta 145792 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≧kr5B0a%f@Rvz?;#Q5qi&@Y$|X-&d#2A7fD*=Z4^ zV=biZpSl<|)ki5{rn*aI@n+v>t3$7#!Cw0NAL-H)Brr1+uWPVEA9{vk{l1cb`}X2u zxO>-O8_9=*-`7x2Ij;079wyWtt+XFgZ$6mqyD0+GpE}!cB4ufe+XHxZ2n)y1UihWq z*dNZoFmOA&>X$6_;7WSc`$ws@tJkR^O_i-0eb(iROdK04M&gd!;;yYL!TNyrCSulR zY*AM?!9w%IMOx`^`Wdd{ed_{1x3HHcNcj>XfR~NQ0DX%YQvS3oDYZS(_pjAN;#}>K z>A>WNOTtUM8G{^Zy#O#2=-M*m{o_@UUHUPgBmqEPQU5zJ!VGu4DYjeAYMErLA8@VK zTl!F|f>GN}{7VOS!WP@Y#e9ILIYK?Yab+8fy$~osJHRogiTNr^e7*r#vkrAv0`nUv z^QWLDwPhffPKkp2c*oL@ZdIUv+v+SSbmap!p;o*;lfK9Z+6Wb-#0$7K$@&2aEp=Ki zcAHuhl@)WbJDZ1=Q$b404uO8uxx~peIAf(9_rdPU4Z-D_a5IjAq`(S&yB1OAjLkH; z9rU&+5b8JBq2YA}q?yxa>O`RLMP^y(RfpbQcM`iX zFu|M`R@o{e8FR5t%?xjvYo^=pm)=lXCZQm6K>4~D*O?;u+l;VDum{!)cBXME3&6JC z2!{vr!)Y#Y>A8|2*kYa{LWe{A=mA_|hR#s1Ood3M*{J_nYYk8zQY2~ZHP8R(V_ye* zh(zVRd8wTx9{g+nG72}>0)8Vp%2V%ntiC#iv6{PHnljiyv{EeRp_`4Igc?#qscwJY zr$F9!+*(6V%zzO7vfqmHN^_5k>Oh)Q4zrOmUcAoHtdx$s+l?~Xs+8DTJR!&ga(K=Q zE|BVjKg3Xq>j6;B7i^-gKv)}1;y}ydW7a-04_$SbcvQ5|27_(SV#8zIbv-!mI^>K$CQ$&M|fsPbNYExrFt&8TiV-m_`cM6SH<^|9s3}w(E`I=ff{6HN#9G^hQ z;*U1j^9ZIx7Xq}u-cU0N(b*(v_l9_5R@iGpH~;MSu#CsDjZOYpc%r#(#1q(w(a?+r z(SBhTV6x-ki9iT z>Bx+CMSa~>CxU^8_wD6b2Zyq)S2y)o-&cxo#dTX|xK-BgEs1&^Sh!lKO z0hqq6s^~C`1i9DjImpebMk}n+c-?am2AG)d63cs8*9i&zMtlNBjIh8=((ERppRCTj zY3XaFuS|3X#(GB6;{dDav-xrU@MPt3KYuNa4|=rYI}yPuN^CnutK*Z<348C^_CZv# z$mS?D)NCG4He%thC^`vTrwh(3kCw$K7|-Y&3bPchitE zKbKDFG~ra&Rzm(ZhE+~$f|nr>%Wt1Puiz)m;bzQGnD^?-^PTZaI(Ls1Q7bX z^YRn05%PgeHG*3^TD9woRZ;97Kn7c3bVw$Ob9GHxjG0IdMi^u{jG6*FnX@O1Rr-}p zcEt9QD;5v-e&}JQo>l#~fZb8>(lfOL<)|bDd78uSPZDy%YkZ4O=>g6(>&`GJfch$p z*Et^eyUd2vT1nn_e`8VIqf_gy5a2s*;EaoYG|fbxZcG1qC1GrLfjLTL{Zk2L93`oT zS~@1>oZ3Rv?Zi7!UPB5BcU_A*f#8JIe^yjv2Yx5OvVFfEgjcB&-C?3Om{BD~hhn|k zyh?IHeuHVqXZA0$rwsaRu$grYJMH$>Nv}I+Eqx=kRMAA4cG^U))L6!}4nUcJE>~*F zD=d!r5(4*TgK|bTSbtJ=xD%A885^pTGRWU4wuFFlyGXwpZITrsBUF?BH*9~5BiSe}enw$ZRwxjrL9 z+EEdL&gekk2HQ@iRO4ybhwf@s*KXp4`k1SMQe+)ZAg^P)>J3qL$nQ==Vl&6gu^VHr z0+X}$ij2p)vUQkb@fB~4McBFQbS-2zupI30BPR~G7gl-#VFZ0#A%Igib^M6?4}chX;2wn==8x_aZ^qt>KKB+Mw3W`GB`P5$ zD#H;JYDTn+Qct}V;{N078a&5eRW5?dstF3sW8)^&r2X18r}PY&q4$FDWt@=RQ#Qr= z75(}%(&Wmwkmdz+r~uFm(EY>iZlE4DH~(K-x@5O>8;}tUoMnC{t-W3WpZPC5`GugV zI_K}rbH{Qv1MJ4RgzL9HT!a`}QYeLkS9t8)>BH)e-mOirb1Kkjz^gBtKy$5bPBu?7 z)t*|n^uN8n5idKB_H*0WL~j}|R|uWjoo_PCt`{X-a5a1&1mHfp61Da6M{7fcnc4yJ zH`Y@i9TH=+GL#Xb<`G)W)e?dcvXOoebG8Fj``>g>qp>QyyP8-iuj7)>t{5pqBX$lF zn$b(nWU*7oWs2b=Z#w>;HtSMd)5zp{;i6kFRh^U~I}}FQr+V7goo{SD0`tx2jmB_WRmCV1a8wR=6Z&HxC?f?2WZSw~Jce%J8vP3x@aDhEVj- za4XONy?*4!%<-Q(aLsf3U`>m8>g8? zfL*2lLg1c^K8jk$;@=ZdMGGMg--LZTaz)!Qz#0zYlaL|#_|^v$@Hg)G{5J8oaQ<

    (|u)`3yR-S6$H=_;=lp&?0M32%P@qbEd0f zK&^r9AcNk<3}iLk(G4OvYDWbP%^?2{uKcHKFIo$XIyeU|W3cvXT$qOR0K|mV0Q&oY zdM2@rFd4Vyk;;7BW-Bvi+4VLZuIyI0pCIz~B)Ccosld) z@)Us@t;}?fI#X-{zk(Sr_8UeU9SE{lC0@Hf-0*(7x;xr9j3Fms!pq>edHV!aai`*B z{ccqJ_?Q@U7Zlgs`+z;rxHC2-FEzv>S6x_tvXWRYfLy||i$Xp@ zkWV<(OlQC=UTAuM?AT90Cu);{z4+@#p)|7ZQhPvUB-7BgxzdxzrBqw1AAzi-ImETx zfy~UsZrq08-H|e5salo@338vwj8Y0XqbyukFDkyc{n98t=7wtjvGsBy8oJqzth^j~P}9x+Ii)1?-tl6C8g#A7kg6Tt+SW~b7M zhLNgii4))Bl}WIly-6d9^+1%$X57RJ`FuTWPTSN$-xDl;x>E`}{xP-xoV-8xaL})& zOlFYlf~%IUY~H5djJ1}l*n~pJ>H?hcW^O6?VPMb^8ltI3tgoPS1!BmlNKQI(=X=-7 zSAgWX%xy=kjLHkWW}Wcyfl3t_RoL9tJ}<{IYSYep|Jpjez0hg@-jDqG@fmoMkWf(j zY<;=KZzA!EyQ1~QvW5r1wA%JXGmA3y$ z?n;K@{E(;V=0?lQi)h)`q5x2Gk`DKM`e-Bsq9rAlG?H85K-hEM451dMkgLg=wjY!W z{;VB>wOzg{?@iy$*TvqPlz9-g;lk#1JFf;T$JWR$4&E%UP5zA@?YHwCKC42tzwKa) zB}V{Z?@_!9oNzm=>-=r2;?{zKHwz|$H8)B7T;_iiUkGhW$H+3l zL^Iz`Ygyq>1eTw}ygAMjTP&bUWXKuKybfxJ3Y*OiXXI|jX~05GUo>oW%@26o1GMsg zZpm!wN&~4;=ah2&NYl}lC$MS^7 z`$E&*y{BUCi!h*p^`2jcuvD)13G*H-`QUq!sRUYcDdwaE-T?)l?>|`u%7@RzWpgTJ zp_4x49o{y~MS#q%DAgE@^vksGSikL92_!fQDO+?z?_Tg0-R1k85pqiQ`U~P0sjAY_ z)wFY7IMX2cwx}Ef_=Tpl2*9d|iT`Kv%Nbh7kgDvlnWhlD)M8Wf%fLkRZU%9kVT#ho zc1<%dwc^@=^Iih}(w>axO@64sdcVlr9dD?iAw!vNj2J`~xHt z`%axFJ2ko~8N6stIKQ;IZ7J1bL=9ivcwT6y(bwubwiY(1O)(mUDj?C*#8V{gh_pp) z?R|<*fMGl0<*wP=zW*Z$=5FN?t1t=*>1+)l7zlu8Vc=?gg&Ku1e7CD^VP9Jgqm!FA@)XWxNY?pPb3RwB zj<-3pOW4yBtBiyNk1=Eg5XQ%%#&xVkd(nsaMETNun6k`+_0JL`dGD}`H|yU_3YJH= z5&S4SM>Qifym@7Wl84!x!9m4fc=REL$(nCj0kF&Iw+_R&|4P2dnRGfDUf;0ql0b5) z3TbVg9|$b(OO-+ZBdcqM0eVSd>p8WZ@ceMEuKweaJ|P=D+>Ix^StX9EO2|4+cV6(f z`Q^5-I)>)b6lSPTy=^n!FV_)gB>C!J_f4-OpVeO;=SeOt-4nR(-Ro1(ku19nb+$XR z9)R4S1NS4b!N~n4szauP17Me

    n&Xn*!S$XnG30vjJrFPt*Q- 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 F$;d;n5Qe@vn_VF+b< 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

    (5Nkdxm+0VRWbmx0e{4? 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 delta 146145 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

    pb6JjWv@`+I%6U!#>tNoLBg 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

    qVVEh4tus&p$QC9;K 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 E0hk4-G5`Po diff --git a/doc/bashref.ps b/doc/bashref.ps index 55f780ed0..0204990d8 100644 --- a/doc/bashref.ps +++ b/doc/bashref.ps @@ -1,18 +1,17 @@ %!PS-Adobe-2.0 -%%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software +%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software %%Title: bashref.dvi %%Pages: 160 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%DocumentFonts: CMBX12 CMR10 CMTT10 CMSL10 CMSY10 CMBXTI10 CMTI10 %%+ CMCSC10 CMSLTT10 CMTT12 CMSY9 CMR8 CMTT9 CMTI9 CMR9 -%%DocumentPaperSizes: Letter %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -D 600 -t letter -o bashref.ps bashref.dvi -%DVIPSParameters: dpi=600 -%DVIPSSource: TeX output 2007.01.16:1115 -%%BeginProcSet: tex.pro 0 0 +%DVIPSParameters: dpi=600, compressed +%DVIPSSource: TeX output 2006.01.26:1119 +%%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 @@ -31,10 +30,22 @@ df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr -1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S -/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy -setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask -restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn +1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 +1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx +0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx +sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ +rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp +gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B +/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ +/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ +A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy +get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} +ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp +fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 +{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add +chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ +1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} +forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A @@ -58,7 +69,202 @@ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet -%%BeginProcSet: texps.pro 0 0 +%%BeginProcSet: f7b6d320.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmb10 cmbx10 cmbx12 cmbx5 cmbx6 cmbx7 cmbx8 cmbx9 cmbxsl10 +% cmdunh10 cmr10 cmr12 cmr17cmr6 cmr7 cmr8 cmr9 cmsl10 cmsl12 cmsl8 +% cmsl9 cmss10cmss12 cmss17 cmss8 cmss9 cmssbx10 cmssdc10 cmssi10 +% cmssi12 cmssi17 cmssi8cmssi9 cmssq8 cmssqi8 cmvtt10 +% +/TeXf7b6d320Encoding [ +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega +/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve +/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash +/suppress /exclam /quotedblright /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 /exclamdown /equal /questiondown /question /at +/A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X +/Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent +/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u +/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef +/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute +/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE +/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: 09fbbfac.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmsltt10 cmtt10 cmtt12 cmtt8 cmtt9 +/TeX09fbbfacEncoding [ +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi +/Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown +/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla +/germandbls /ae /oe /oslash /AE /OE /Oslash /visiblespace /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 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright +/asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l +/m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright +/asciitilde /dieresis /visiblespace /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda /Xi /Pi +/Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup /arrowdown +/quotesingle /exclamdown /questiondown /dotlessi /dotlessj /grave /acute +/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE +/OE /Oslash /visiblespace /dieresis /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: bbad153f.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmsy10 cmsy5 cmsy6 cmsy7 cmsy8 cmsy9 +% +/TeXbbad153fEncoding [ +/minus /periodcentered /multiply /asteriskmath /divide /diamondmath +/plusminus /minusplus /circleplus /circleminus /circlemultiply +/circledivide /circledot /circlecopyrt /openbullet /bullet +/equivasymptotic /equivalence /reflexsubset /reflexsuperset /lessequal +/greaterequal /precedesequal /followsequal /similar /approxequal +/propersubset /propersuperset /lessmuch /greatermuch /precedes /follows +/arrowleft /arrowright /arrowup /arrowdown /arrowboth /arrownortheast +/arrowsoutheast /similarequal /arrowdblleft /arrowdblright /arrowdblup +/arrowdbldown /arrowdblboth /arrownorthwest /arrowsouthwest /proportional +/prime /infinity /element /owner /triangle /triangleinv /negationslash +/mapsto /universal /existential /logicalnot /emptyset /Rfractur /Ifractur +/latticetop /perpendicular /aleph /A /B /C /D /E /F /G /H /I /J /K +/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /union /intersection +/unionmulti /logicaland /logicalor /turnstileleft /turnstileright +/floorleft /floorright /ceilingleft /ceilingright /braceleft /braceright +/angbracketleft /angbracketright /bar /bardbl /arrowbothv /arrowdblbothv +/backslash /wreathproduct /radical /coproduct /nabla /integral +/unionsq /intersectionsq /subsetsqequal /supersetsqequal /section +/dagger /daggerdbl /paragraph /club /diamond /heart /spade /arrowleft +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/minus /periodcentered /multiply /asteriskmath /divide /diamondmath +/plusminus /minusplus /circleplus /circleminus /.notdef /.notdef +/circlemultiply /circledivide /circledot /circlecopyrt /openbullet +/bullet /equivasymptotic /equivalence /reflexsubset /reflexsuperset +/lessequal /greaterequal /precedesequal /followsequal /similar +/approxequal /propersubset /propersuperset /lessmuch /greatermuch +/precedes /follows /arrowleft /spade /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: 74afc74c.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmbxti10 cmff10 cmfi10 cmfib8 cmti10 cmti12 cmti7 cmti8cmti9 cmu10 +% +/TeX74afc74cEncoding [ +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega +/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve +/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash +/suppress /exclam /quotedblright /numbersign /sterling /percent +/ampersand /quoteright /parenleft /parenright /asterisk /plus /comma +/hyphen /period /slash /zero /one /two /three /four /five /six /seven +/eight /nine /colon /semicolon /exclamdown /equal /questiondown /question +/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W +/X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent +/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u +/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef +/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute +/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE +/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: 0ef0afca.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmr5 +% +/TeX0ef0afcaEncoding [ +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega +/arrowup /arrowdown /quotesingle /exclamdown /questiondown /dotlessi +/dotlessj /grave /acute /caron /breve /macron /ring /cedilla /germandbls +/ae /oe /oslash /AE /OE /Oslash /suppress /exclam /quotedblright +/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 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /quotedblleft +/bracketright /circumflex /dotaccent /quoteleft /a /b /c /d /e /f /g /h +/i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /endash /emdash +/hungarumlaut /tilde /dieresis /suppress /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda +/Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup +/arrowdown /quotesingle /exclamdown /questiondown /dotlessi /dotlessj +/grave /acute /caron /breve /macron /ring /cedilla /germandbls /ae /oe +/oslash /AE /OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: texps.pro %! TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll @@ -95,18 +301,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 45 /hyphen put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 108 /l put -dup 110 /n put -dup 111 /o put -dup 115 /s put -dup 123 /braceleft put -dup 125 /braceright put +dup 0 /.notdef put readonly def /FontBBox{-1 -234 524 695}readonly def +/UniqueID 5000833 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -215,62 +413,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 12 /fi put -dup 44 /comma put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 56 /eight put -dup 57 /nine put -dup 65 /A put -dup 66 /B put -dup 68 /D put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 82 /R put -dup 83 /S put -dup 85 /U put -dup 88 /X put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put +dup 0 /.notdef put readonly def /FontBBox{-39 -250 1036 750}readonly def +/UniqueID 5000792 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -611,9 +757,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 46 /period put +dup 0 /.notdef put readonly def /FontBBox{-35 -250 1148 750}readonly def +/UniqueID 5000827 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE @@ -677,58 +824,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 39 /quoteright put -dup 42 /asterisk put -dup 45 /hyphen put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 58 /colon put -dup 65 /A put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 72 /H put -dup 73 /I put -dup 74 /J put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 80 /P put -dup 82 /R put -dup 84 /T put -dup 88 /X put -dup 92 /backslash put -dup 95 /underscore put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put +dup 0 /.notdef put readonly def /FontBBox{-20 -233 617 696}readonly def +/UniqueID 5000800 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0528A405DF15F03DB1C3DA8B850431F8 @@ -1023,89 +1122,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 33 /exclam put -dup 35 /numbersign put -dup 36 /dollar put -dup 38 /ampersand put -dup 39 /quoteright put -dup 40 /parenleft put -dup 41 /parenright put -dup 42 /asterisk put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 47 /slash put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 58 /colon put -dup 59 /semicolon put -dup 60 /less put -dup 62 /greater put -dup 63 /question put -dup 64 /at put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 87 /W put -dup 88 /X put -dup 89 /Y put -dup 90 /Z put -dup 91 /bracketleft put -dup 93 /bracketright put -dup 94 /asciicircum put -dup 95 /underscore put -dup 96 /quoteleft put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put -dup 123 /braceleft put -dup 125 /braceright put -dup 126 /asciitilde put +dup 0 /.notdef put readonly def /FontBBox{-6 -233 542 698}readonly def +/UniqueID 5000831 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -1529,34 +1549,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 39 /quoteright put -dup 45 /hyphen put -dup 49 /one put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 76 /L put -dup 80 /P put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 91 /bracketleft put -dup 97 /a put -dup 99 /c put -dup 101 /e put -dup 106 /j put -dup 107 /k put -dup 110 /n put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put +dup 0 /.notdef put readonly def /FontBBox{-36 -250 1070 750}readonly def +/UniqueID 5000791 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -1738,10 +1734,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 104 /angbracketleft put -dup 105 /angbracketright put +dup 0 /.notdef put readonly def /FontBBox{-30 -958 1146 777}readonly def +/UniqueID 5000819 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 @@ -1798,31 +1794,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 45 /hyphen put -dup 47 /slash put -dup 50 /two put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 120 /x put +dup 0 /.notdef put readonly def /FontBBox{14 -250 1077 750}readonly def +/UniqueID 5000772 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE @@ -1994,84 +1969,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 11 /ff put -dup 12 /fi put -dup 33 /exclam put -dup 35 /numbersign put -dup 36 /dollar put -dup 39 /quoteright put -dup 42 /asterisk put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 56 /eight put -dup 57 /nine put -dup 58 /colon put -dup 63 /question put -dup 64 /at put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 74 /J put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 81 /Q put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 87 /W put -dup 88 /X put -dup 89 /Y put -dup 91 /bracketleft put -dup 93 /bracketright put -dup 96 /quoteleft put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put +dup 0 /.notdef put readonly def /FontBBox{-53 -251 1139 750}readonly def +/UniqueID 5000769 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -2499,26 +2400,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 12 /fi put -dup 46 /period put -dup 97 /a put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 103 /g put -dup 105 /i put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 118 /v put -dup 120 /x put +dup 0 /.notdef put readonly def /FontBBox{-163 -250 1146 969}readonly def +/UniqueID 5000828 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE @@ -2695,9 +2580,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 46 /period put +dup 0 /.notdef put readonly def /FontBBox{-29 -250 1274 754}readonly def +/UniqueID 5000771 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE @@ -2761,13 +2647,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 0 /minus put -dup 13 /circlecopyrt put -dup 15 /bullet put -dup 33 /arrowright put -dup 55 /mapsto put +dup 0 /.notdef put readonly def /FontBBox{-29 -960 1116 775}readonly def +/UniqueID 5000820 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 @@ -2831,62 +2714,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 11 /ff put -dup 12 /fi put -dup 14 /ffi put -dup 42 /asterisk put -dup 45 /hyphen put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 87 /W put -dup 88 /X put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put +dup 0 /.notdef put readonly def /FontBBox{-62 -250 1123 750}readonly def +/UniqueID 5000798 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE @@ -3284,101 +3115,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 33 /exclam put -dup 34 /quotedbl put -dup 35 /numbersign put -dup 36 /dollar put -dup 37 /percent put -dup 38 /ampersand put -dup 39 /quoteright put -dup 40 /parenleft put -dup 41 /parenright put -dup 42 /asterisk put -dup 43 /plus put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 47 /slash put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 56 /eight put -dup 57 /nine put -dup 58 /colon put -dup 59 /semicolon put -dup 60 /less put -dup 61 /equal put -dup 62 /greater put -dup 63 /question put -dup 64 /at put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 81 /Q put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 87 /W put -dup 88 /X put -dup 89 /Y put -dup 90 /Z put -dup 91 /bracketleft put -dup 92 /backslash put -dup 93 /bracketright put -dup 94 /asciicircum put -dup 95 /underscore put -dup 96 /quoteleft put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put -dup 123 /braceleft put -dup 124 /bar put -dup 125 /braceright put -dup 126 /asciitilde put +dup 0 /.notdef put readonly def /FontBBox{-4 -235 731 800}readonly def +/UniqueID 5000832 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -3884,95 +3624,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 11 /ff put -dup 12 /fi put -dup 13 /fl put -dup 14 /ffi put -dup 33 /exclam put -dup 34 /quotedblright put -dup 36 /dollar put -dup 37 /percent put -dup 39 /quoteright put -dup 40 /parenleft put -dup 41 /parenright put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 47 /slash put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 56 /eight put -dup 57 /nine put -dup 58 /colon put -dup 59 /semicolon put -dup 61 /equal put -dup 63 /question put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 74 /J put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 81 /Q put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 87 /W put -dup 88 /X put -dup 89 /Y put -dup 90 /Z put -dup 91 /bracketleft put -dup 92 /quotedblleft put -dup 93 /bracketright put -dup 96 /quoteleft put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put -dup 123 /endash put -dup 124 /emdash put +dup 0 /.notdef put readonly def /FontBBox{-251 -250 1009 969}readonly def +/UniqueID 5000793 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -4041,441 +3696,440 @@ EC4F2E65CE71AAF79106A0468D76D283ADD44D7DB5760AA429D61C1DC2E912C7 246873CE189E03FA291A961E4AD90563A8F7B0E08A67DE4CB3607C6ECA114DD0 DCE97976E208615F3CA13FC44041360086A4A173D5441D9C33A38013099F73E9 0FBC96808F7442FD4D56DF7C4F2D4C9B2301F7CE626B4C6C1617B8F1584DF195 -F92FC6385070EB02BF2541307E4EA34C131815FB9028C118F4B792C5E81D87D9 -39E842ED5DFBBC9A98C5488037F0BECD5F109FFF47225F6DF1D19FDE8CA9CA1D -C92848624AD79ECF4B2CA10EB20FF975B53C530E2F18B36CCB3EFB7D2F4ECD2A -5B9E0B06BC681C6C47DA9305769E3FA19B7DAB49DD5AFDBB99F6E8167FD22ADD -D72AEC3FE48B61A79344903A56D3AB0859EAAAA2C57CBC7FD3E3C764B09FF3A1 -B7B343B90FE87FB519F0B73B1F875C7BBE1A79A2D252ADD544588D87519D231B -0EFD8F40679FC4FEB38F6FE44A465BCD131B3DFFE441BAE1FD4DE8F6E2348367 -35B34E1C7AC6CB1C074FB9C553F6B0315E7BE56858C58B4478376F8F8701D1E6 -7824F4403E97D6B0F31951BC3870BC51B6541B8CC858E33C2936B5F8D9F1830F -079493441FD87755609ABE661AD5458F1D2603709B2B301621365604037B9E65 -BC593479F0C10F290F9338FB78C702BBC548DED7A114C906181920E441C5357E -20215DC55A95077F95BAA4C110315E35CE4651FE41C227BB00BD9D65F0E219C2 -149D7A974B09A4E09D777C4FE67E0D1D2185F754892C4272619AE7B6E0F02BB1 -29E861C2D698844C43D6AC0A9DFD9815E78CC56DA2555A10E828EFD206E4AB25 -C197098AE1452D6B8C47242C04D2BF0437BE5E67CC54FDD5CB6608BFFB5AB410 -105C578884CC694E0C3D7C55007E3C8192B3980F2924BB4357420673364D5B00 -01DAD2BA5663C1344227C0468B6342A352002CEA59B84F1100A725F2405DF490 -899A6C89E04D9F8F441610A8339BDCB4CEA373FB9DEFC80404ACBA788004DE4B -1651F5F6EDBD8A80F35F7557EF8753DD07F1E6717E585863373012F3BB30AB9C -81F557AB952A89F3A40C1E127CE6D92A42BDAFFBF6E563A8103F498F9E023DD3 -57753FA6204A6D4E75DF1D2E12B90825EE4B8A25BAADE05909A3DC123AD5D758 -DFECF546C6FB6ABC379EEC8456EDD1929DC0A2E54C2832367685102A1B551D56 -2597BEDB41DC6ED60EF1037AD230BA8DAC47D00C8028E05671E606DB31400C70 -F904AE27AD72C25667D356EF230C3EBFB7A7FB054B85E7E03EE79B634E99B64B -D150A5A70550B951B0C017BBAC86875A95F81533C480864873DDE91D749A9711 -5706C4B772D183C3AB1365BE2CB6FE7076F8D5CD0947E29E753BF8A5B7E1056F -A3BD8445DC8F6794279D4A2CBCC17C880BD6037EF42FF33145D3430A8BF59AB2 -C274DB67C99E300BF9307470D1985351B9458198CD6D26D73DAA4AC79F493BFD -04DFA3B693184EB767B4A387825BD140C9F25E71A2DB694AFF848C8896670EE7 -2C2072BB9B6F67DA8011C1C19695BF08CAC4E53A9E91795A8BFEDF8E2AAB1F2B -8B0D5D49FB2B451A1CAE0CE5CC553B7D57DB61545E33ECA3919FEF2F6E56F809 -60A643392A38FFC1434C86C2E42477AE0434FFD40A08279A292C6AE79C41E972 -6AD3F2DD0CB187CAD26150ECF73E062F08741E52E202F8377C04845345DE86B3 -51C89220827DE253E71BE4A414B2350948A222BCAA37F881ACFB9DB4E33D5332 -D963375F5C182B624F2A7CDADE56ECCF8308203997AE4275F7AFF69F5768CF3F -E6E96EC1F9073B91A0CC6F3FB34E3CAF07A082E63E3D52175D1CC9301DE10DF8 -5886B5AE99859120122B81078F45016AD121EA32A6C269592514248D5C1B1BCF -D00F8F7FA0E65CC1C381D125BD71F45517CD0F2954AD07163B338B8E3223AD61 -D7FB848B0BE3908E8A3A091E9DC8AB756B4DB9AAA2B9080B9EB3484ACA51CE90 -760DDA3976DE784E5A818F6D253CD618938BEB3EFEF692EFDDBC67DBBDD10CAD -E5844DC3A93241B0915A1CD159B89C688539F73CEFB8B78A42965F6A97113ABA -6AEEC6C40A22C696ACD950B366EF9CC6F8CC1139401FA7807CCF03BD0F26AECB -D17D4565FF7FC7D9C54C52C8CC93400AECC75B9D6C79CD8DD2F85FF06D0F8EDD -857B0122963E348D8AA00E62564E3EF1AA181E46C9FB78C75DE79076F824B770 -FBE6C219DD052BF444557F8DB9BB857AB012404C94464314D1EE9BD7DEBB1A20 -34A09453E728B61B568D2B0BFC1618023C7AB01397BEF08F98AB11F9BF7F7E83 -9232547A51A89F5D9F99DA2F3EDE816ACA350FCC739B951D53FB2015D69525AD -811BABE6134F016EAD9032106B1EDC3F071836D7AEDADF127DC3E93DD7499F8A -2C188EE1B4DAE7BEF5FF76C34DFED2497306E9568F22D3226D5F43E9EE2FB1FF -C1507FC85F46B4488063EA6AFDFB1B665238F9DD585C1834570304A202B3642E -3F446AB17D5B0AB9E72AEBFDC5C24BE5D8256378BEE6801B4E499BFDA01718A8 -3211A2FF431FB61886D0BA683EDE528D43C02301B8BD6CC88565BFC2E7822232 -97260C07B7F9C3FB6F612944C6C904CCB3066EE7319C77EE2075FE360647B808 -F7769BCC25A66F16F2E6B304175A5ED31E307ED75AC63B19BAB7F16292D4DC79 -D9F2650BC99415C3576F446E649B32AB5D34475393D59A4EE020BDA982C8E97B -8ACD4C947AEF3D6059C7A2E0201C1544ED144676E1A61025236360E147D246F0 -5BEF0C386AB72C98BE6C131B6983282334A5307C34A30E755B0C1205C279CCE2 -CF007E0FF9290FAD9E2B8794A09FD1A915DC48CDB4DF940C9482E51C65AC6E8E -2B0A86A2DE91E0AA3E1A4B52DDAA231DC9B8AFEE466EA97EE2C4528F07416D3F -E32794F6688FC9147DF36A3E31C749B46665E334AACAD4B06AFAFB6A648C0497 -9BC64C85E2A46D2DDD04928BB6F06A3E7D36EB6724E5CDEC59C25A3F0D3AA0A4 -955525F02D8DC9AB61A63B07C4324788ED6527E42420FBD41A016BE1F4B8C1BF -4181FA4B896B7E9DF2E723A35C7C709CB97C83988D0BC9F3FA153CC165EF7D87 -8DAA9335D9646B65AA78EBF8D7DBDCA81659D41DEA8A64DB880435622528C74B -FB60A7ABD521E2B43E63792304BE70A52E72A06F23F4A1CC6034B33128E12952 -FBC1BD7741632BB354DD3AFFA3115BE4F2C37D6C18E074B6CCB3AE77FD0163FE -383154C14646C2EA8C0F341E8865AB3E8DA44DA947D267F978912D87F8EB2EAB -D9D9EC2FB624C73EF0B954F5A64B6DF48A8BE53D441AF8F90B6F1D0C2B0EEF1C -2E7789FBD48A2DFAE0FF490E3B97F1673B96082F44D23569628B0ED086CC4E3C -4E975A0230CEEE9F7C157F7960D74CD082C9B51FFC10AC9BEE4A7FF286631DEF -B3C1FA6CA426906277676E81CBFAD4146DF186F42DB0736E9A145107FA1D99A1 -C744D16D31507C59607395B8C6814F1181F75122BB14031C690FCFA42EC96625 -6834576440BAAF9C545DF0AF2FE7A6885733279ABF1E4AF8FC770E72AB8D31CC -01E338F202631597B7B10721BF07AAE87E15ADBC6114175D74FF1690AFC0895E -34F9F41FDA6E8CF1C4AE566864103DD05E7C3A259DAD0DCD5DB5CE42F1FAE46B -D0AD22F61B614FCFE7B7D3BFB1FBEE2192CDE426D8DD00B717125858E9E3AEF0 -3938483E09E3C52B9A2644FD9EC9B958E55AFE9E80CB16A0E2EC5212DA0E2688 -618C2AC16C07204FE17E769413658DB8DCC6A30EE41C2760BB4ACDFCC8F6EC74 -A159A8D12698CF4E584C7DFB8DED5E8335B57BEA2863CC16CB41DDF3E7C14DA8 -ED96E67B36FE099F2A5A03BB3FE2EDDE5FD35B5A3AF0D38FDB717223EB173936 -BA93570378A445663C0321F7D7A364D1D7A4425CB7A440AC7E393F20F24F955F -2D2508AE7FC814CEF69ECB4A10C9CC75A33A9DBB0F1560F9205C385271188C8F -88E006A378C8C5A3893F13CFA9D1983649691E79BE3C9DE927C1D75B65984930 -360BC3A409F05C570D7F5C6D286474DCDE71CB54452AD5ED88DBE99313972E83 -3B07A63DFA335215BF05110FDB22E4A30898E460DAD779E2179D956CE67CD203 -767DFBD873030279F8AFF1038924286000882B3D6561611511B45BF0BE8D44AC -EFA6546D7E03D0A3A8EA6C7738C5626363CADEB76DF443FA0A22BB071EB2A3B8 -AC9E711083D2069DB81D3E9B48D38F4240A315801DE86938FB7CE118A98891BC -DE1189516246649771CF1EC7092E9BECDDD470870F686D0E2B94EF7C6DBE515B -08796F044E9850EAEA5CBBB74DA4F65C1B71F4A28E8560287E0020E45D35FF0B -CD03B41BDFDDE66009C42B92573D99A9D6388BA5BF3C1BE9358CBB3FF12C0560 -47856725CFFBAF426FF7946BC0269A26CE765B51822EFA55FB9EFBABA5009AE7 -A7D8B6AC8B3B5CDE8A77736BD56DCB1DDC56BDD310BBF1E3B5F011C52773B9B0 -2CCE81FA331E7CCD3B32537AEFFBCE8CE6661F47816E2DE080D02A433908E4A1 -593637AC4BC55ABE6AE3137214F017BA34B0E9A0372F3A757474F5A4EBBF6DD4 -7B697C418423258D7964BF7C73544F0A1FCFB00AD5209CB4A74B139777ECCFF3 -8B8F88F2EA3EF58B02FCD2352FE7DF7A07CD5C7527E786945C54E74F22CB406D -BFC1E81557EC68F3F90C8D659636F19B50417AF09E31A0444F9903F1937C08CE -53F8C437778B2D2A9DAE9BEFAAEE650D4631FA93CF90E4C7463EDE6429DBFC98 -128EBC51AE5E15E24F5F5C1EFF658BF48D9B563CB5021903BD30E6AC48B406DA -49CAF07D734862D79EB760C89707B0EB590DAF9DC168DC858D7D9F1341CC54C6 -57FA2E962A7D7E3BDFA52A7C704421A15E8A241ACDBC926EE4EDC928C8FC64EF -BBE40A6C632A87AC4F222465D9033BAB39DE7EA3DA62EFBBE69E6C9ABC6A76AB -9F48AB41CA976AB98D24D68050BB0D940BBF71030D16CAD3B72D680E83104A2F -D223DC5E892357F7B061D46AF3CA3A7DCBA293A90CC944C1D04E7F59C399EDE0 -8D5DCDD1C9F0627A90BD84420336308EB8FB3AFBC436988EEA496A3DD16A9796 -4D884A95889EC70957FBF271293C6E930FBB138307D0A44627F15E61B1802B53 -BA5C3565B120C5E85696AF565B4A37129CD03965E65CF4919488DF467923F28D -3D78CD43B52317B05267AEEA30D67415FFD6C410E45C1719BB18798159449B61 -2BCC2D1D96D5BA1654F9E2A01370382D89E69A5867CDD197E93FF3C3C53E616E -1E468D285F33DB55E8EA96B7F4FD6FB9F4DBFAC80BA2D928C34978192E0BF3D9 -C204F90291A869A63D00993F00DB5AFF0A0B66E7E3520E8C25ADD0C316D99EC9 -3B9C8CFB1FB1138EF8ED87CE9E3E0A2B7A95D2B8AAB5C64A94F447CC53C5C0DB -F6BC9C2F41A52F32FE10247E45E3083A899A89E41FE25CE013F7E3012A8311F1 -E92192697C1D187572AB6E83D060B66BFC823258E7535ED5B481562605D2A272 -5D5F77F24B7E62E085B33EA1BA61DC7B06176248EE719D0B71447238CAA84339 -3F112F6AC99E93C6923356633A5FA6B3FE2C4ABF77652345E3585F8B50843F40 -FE7FBBDD919022B384B7F8426074D45F09976962B14D152F6A39ACE1A5790F18 -CD3209FDC1AE36578895FEEB036C7E4FBD148766F73A330AED55C83025ADDC01 -74B139ED6FF9929939EED736C053E37146DED46D9531C502A250C2259A7B31BE -6C65D5F41C89CB5F1EA7E83CB3AC45E5D63FE71E0C94152E74CCBD954EE51EB1 -8BA9CC4EF80F75FA153C33585D34E0159EBAAC68D1B4929D7DB8B3F32ED0D98D -739089C9567D66F5B1ECFEEA96425FFD66E70C27F838E3FDEDD0C7BC2B55DC9A -1772D5D6406C8A7B0F833C47B85A9C4D015A3C77E58B5564679BF0A318AE3A4D -4C531A1D4799318357F6C645537E083528D994679796C870959A17D509C54FF0 -0B543E3A682DC3527C588C5111CD073D82470F5A6B34EFB35BC64D8F179220B8 -93B9912FE6CBFDF37B5332A6DA64AE63583DF9C33B05953130F30591BFAE2346 -677FB81E405A78C8596177AE4D34D3D5BF50448545F9AD243C59A25708C3E9C8 -729AE758846A9CBE673E1D100294739FD3E39069DBB55D2926F733997FEF54C7 -DE70FB76E9BDB6122A2FE4E6A4D2048E134372C29761DF2F4BE07E1FE74A29E0 -05C3C55AA1F57474257691F49CC2F5C6913541BF2385E627B156A16B241542DC -04917B6880605C1BDB04A67247C7ABA5E4BCF517AAC406CA2ADD25A45CEDDB59 -AEC46D3AAA6248D1E7CF712EA43087149E3BA6DEEF7E65F11DAFC2BB2487B4EC -D2E28974537C601456DD2F8F07D9F7D6E0E9D58D8EEAA1F55EFA919813C90F4C -354FB972518732FDFF0843365450BCE633CA433AFD356092C3CEBE76EC592389 -36CA73BB3758DA97EB205E020B079E6CA53CACD69133ED876D9F79CFB8BADFA2 -296AAD4D8884D1CF88C9069E550A07E7BAB1A897B09B62664112A8BF5D15B5BA -D7B70CAE815A38D20C584CF39D6B7A4F8C545ABD6E2E5A7770F3B129834DAE61 -CC4B72FEB802B869AF5CAAEE1143D351F44F42568232CEFD0215A3913A08093F -215673A0640925283D9EF4A0C247A1B5733EA65AE42C34D15A037B59F785EBF3 -9A9F1518C95ECBB3EEB3FBB9D95EC1C92CFE12903E3EB0DFA2A686E453D15C5C -D8D2E14E3CCDB006226B55C316F8A71BA71C33EA80C336123D330638327EEADC -E0EDF1B5BFE215784CB2E24147C956CDFC1A8E19F04CBF3F3DE21160938854D6 -65D54E269E8DD5AB182E53EF4E901E3D18EA0A759D2953F4D749D84B1345AC6E -7609D075B700E16E6DC5ADBAE448B3638B470FBB994A918AA7A2F893852BF7C6 -A2045D6C6152A0CA26CAAEFBC2ABF520BA8F5F8E02B02F31C8CE48C5AC58997B -9993A4DB61DBF348F390C3431DE057CF78AD293A889D34E3898A2164B024700B -2D363DBC75298A9132C4A7D1EAEED0B8D8CC39486215E37B0C0B2C449CA966C0 -7A1576A9B6E6500DC6FC19AA18D190C1238E8E1426A9D53319FE9DA6EAC47963 -EB29BDF6221F93CD59F4531434ECB3F3A308131BC3CE132384779A0DF4169B29 -F6D2137D4592E1BAE07EAE366222F9FF9D211BA9578BBDBEBF0B3A7C66081661 -9A7838AFC1F02E3741BD1EB11857A3B22C8A1C75E09B465E83265C76FEC52D9B -068522D0430B331A2DB7BD17C5842E8FC59AF72B5D76519918BF4103F010AF89 -481B04229CA964AA4CD0EA1F4CA43E7FDEF816E9007FE8569170849EB20E00BC -ABA510AFC2EB129B8FC8392B6CDBDEF5ABEFDF008C4D2D1DCEE00F08DB217819 -3931A142ABFB8B45849F46F36D23DC20DD91A26C3572278E2F3D6A855D9FEED0 -A003706C47279D54A0D5954138A6728CDD0F5EBD0B91A7A68F77D7CD569F71D5 -30B97D8B539710D2F8808E19A2EB4DE33A9D93246B4DEBBE1E214CD7CA20D50D -A606422E11263A9F8E48BFEFB41E3FBDC046B0DCCD7E09A0D819B51AC93C20D5 -8648078EB45B7D048CE2129939F914440883EDB9040E7C09F7B8226BB2331359 -2B939F4A25279E475C1AB8882C79BCD257B739CD8D67886134737F436B7843FA -3C810FC94E7FFBEC6516CD38CA5030C5D7918B46C8CC7142E6ED67B90E636F98 -790DBB9831A5AA5CB236C7C676F978B8955444FAEBB40F7B5037AA8B5022A362 -687B60BAE867CD376E314BBF92D3D179F5E586E61CFECEED0D282985ABA8349B -1730C8ABA94E968ADB27C810FD6AA0AD6D21715B99E3489D19123E4C7AE1FFA0 -B603EAD675D994928475B386B36A95B803C92D640844CED78BF2820474302B3E -270B024C1177DC6348F6EE8AB15E3A31F704A12D522EE52584A9FC83333D28E0 -E0EFB793CE3A2AB9B3E47390041CBBCAE80126CC979738F86AB71CC326621D46 -955F30C2C8CA525ADD3EFE6F08CD7C5ED92998E632E1BB735C281DD9804C9284 -297091B3F03CB65427EE59D8396DBFF74D5F336980728C4BD47AD7654D6A4170 -719D7B1BECBF07A8C121A76B048212C53D717F6B53C351C747ABA94121277498 -60B5F2325C8713D711DADE62E78B9F609DBE324DEA85C0E0AA4D64DEED24CDD6 -36CC8D07C25B26DB301D77F42FEDE64606289406851B01066BCBAE9E28DCA25C -1B47E0BF99B7C37F6596697F5914DD1C348583C34D0A5F466BC878E799A1959F -DCE22CCF7714F62BDBD9D5B89C146623B72E2954BA834BB8806F2BB5D8B497B0 -3E44CCE42C9650D9D7E8DFA51E226152B49C9078E56399DE9794AE2487A59C05 -4B07A98DF5A070783EC944427691B9569C74960F361412B2ACC6993D23D46EE7 -E5D329816C48AC4F171C077A56798E784E7AE3F5D4D81511B9D4BB12718E85B5 -D4785828049C5B302167FAC29C122A42FFA992325B2C98E0C1D3659C586709E6 -F1239FA7EE27701DA10D641C6BA4FFC41C7DE6F7793CCFA21B43ACF3CD22C8EE -49E8C3D0768FC44A0EF0A42F0036A43723C9AC9790BB0C43B5D709E456046535 -953FC9ED60E171811A8F463541EE0923E3A983C0A5829D76520EE74B4B263919 -35AC18D065B205178259B31F7B1FBFA0B89E5CF3B667131673C2C4F9899AF5E3 -0E0082DB1200E2D362CE2997FAA8BD268AC400F06ED52A103965F7DA16A56AF7 -F6038AD9048E9862C923536313D18049B820E3E6458995D4E4E89DF07C44B601 -9F2AF1056240D9CDBF902BAC35979E898E1ABEC6117DBD7971033FB25C0C0BA0 -0D91412EC5FDBE3FA15626D1EC48351AFB407D2ABB421C6463204C9EEE32D484 -A5A8D4F784CFC8BA2EA6C78C562EF0B37003DC2DC23F0227D9B7A21F374F70F0 -1DC35DC48E2D4607DC13BBE956F2F9944F37CCD34A0381E8EE992EEE87A36F05 -F0B16D265EF73EFE1AF99C3C505EB7ABF83E36197C467B32FE791AD8F66F96FD -5BFE4B0613A2850A55FE9CA88320539C5C31C7DE8CACFBBFB93B06E79909B600 -5BD835028D6AA5D57382910AEBD08C929910F0FDA337D64C9AFE6738A34DB777 -AA99A88A16F676C2EE5EB95D3444A86CC06279623D7516EF9C21E2280AF797E8 -B0C0E71C6DE3B21FA8AE3F4BC29A80FA53F1751862F1432EBE8A1B60FEF61E16 -827B2AE734C4C2483786E44478F0623FC20222FC04D57AC3735FCAF448CE56B3 -5468205A1EF35929340AC330FB861A793C12385322F7604586C6F6FAB32767DE -EC475AFCBE5D579C9C5B15D29732DEAE9C29A85B0CF306DFADDD8A17A8A20D41 -1C58521DBBFA795E1CF501F5950B850A8A794AA166F12968BE1F10A5671D30D9 -9964A02C55C0EAF96343DE356AF06C54F029F7FC03EF6A7E76A9DB5684ED0315 -B51B3FDB6C40C512BFFCDB50100222E7E4D78B831AFD79CF46674A45C530A41F -106FF90A59D4F8BF0C620114AC3D5A0FA34E36B55D7D82EE7BD79498C721C7CA -2C1B79F7266C6F040F3E1DEC13373DB338EC02EDFA2E14D4BD3DBFDF94641756 -44357AAADE9616236BE9CE1B799AB3057E564447CE28038CFAC0EDDC5F1D20E6 -996C3BACB92044DD3332DB7893FB8A22691A7F71A8E10A9046B7E2801B1A0CD1 -C3BDFA06840677BAAC1A98CBA28A57176E8639F20F0BA93420DBDE97F1AC2A78 -CCCEC3D400923F4FDC970AD501E435C9BD246C6396AB8D37EB4A59F24DDD2A91 -4F2071458F9CC55FE63D7A16822ED199FA50DF3C653841537B9CA060D06374B9 -E53B56EAAE5377EAF9ED4751E0D2783E80CF206681E33EA9FF5D8F938FF42C17 -0F5359BB48D40DB82C952A3D850441543CF581CD291D784B9E3876BCFDA51E8A -7CE65E700DD5B6B2A5519E0484003BAA8F1F21950D6030447F12D26D6D0DF5B6 -C1B0D403CD4155C2C8D5D214D86D72B5B78B3B3ED2062A480EAC959C0F7D9F58 -B5EA0F4DD9599C83F1537AFC6B4EE2F5A92EE88C4B708BF9400CE3AA3FF14C20 -4850ECD07AB485F00C1FE75ED659448E252F7773E36B6B59ECD9AC6FAEF06122 -25D3DBFB44F70FA158E4D988B31C88A3D54FC01DB249F949AE1E06FD5FBE4970 -ADCB92CFEFADC41791A17B7DA3C785124CCE543BB24D3540B9F9A76439C49240 -6278B1F414E13B63249B3CC2216A1C5F9E8390865AF3514879F88429ED73725C -6ED2A8F1E22326D33D372A3E4C9523873CD3323DDFA9502F06B495F3FAF5C60D -784C5AD72F6F84F5396F9E3B167CD84C330CD2B777C16903516665EBE04B7AFE -F13B3CC49DDE9734710E221245B1B0242DC3DEA68C2C96E0F51E40212B264648 -562F3A7A2B12E54DFD9C3E4B0B593F8DE6D38BD6A516DB966483FAE1BB9D9858 -A66863EB013BD05588FEA4596962A88F5D7D27D7C0A11DD2626B32DCF117FA5C -5680E532C95A57F074378635A4D4136E73043734E411E47306928A2BC27960A1 -2739FF7C2F9B73F463AFBD28452C5FFC70D0268B91016F2EFA5932FBCE86B5AF -DC6368B80F11DE7715DAB114F28491D6F8B31B6C6C4DD126F812D93C515D34BE -516EC1BD3940F375AB4C1615EDA54F7586DD4EF0A04798A6855F98A302EAA67B -9816DAE0A37230DD5C2CD5E5612F05533565D9802584C92CE40E4F5B1F589AFF -276793334C091D79D77C148AF4FB69715FBE46399E3C6114282C2F61B2D596F6 -A159CC88BBCB01CDA19304D5B99927AC44A867D79F9FE058488B0D0CCE96BEF8 -DE97A68A493150E4B398BABCC2CD541F4D60D586234413D6484B6216518377B4 -899982E1FC8F041A7DB85E53970A7A73A28AB98D0ADBD53980AB0FE0E4777389 -6582B0B8FA0AF694CEB70F098400ED36C91860F70626813BB2D78162FB24C6E6 -75A956BCDE5716C135E4F06E2AF5FBC236A715A5E495BC577FC5787628C5E536 -46EAD10E8488D38655F899DDBB905DA9F93569EC9F8E705A336272F067B8D31F -EC2007F68ACC8E063773F3CB0B4671E89E5D6AA6A41E6B2E9723CADD17394C0B -C22DFFB74D0DA404EEE86F3928793EBBDC6E59FE4F9BB10248FFCF4F5E8960A5 -BF458817ED22FFEADAA6291B50E76659CC7C0C4F87A2841788A9F71289BA7450 -B70E6369E766F1AADF807CDDDF2E0DB49280B252120A7B56F2111A6F2E835CE6 -3EC2AE54D820BAEB19E47DC45F75712B2ADF84AC11DA640BB1B645A7859A68A4 -AA9375942FF5FFCCC6D3484D742E09550A8D3D2E3F451EA4712F1A2754C745DD -EBD5FC7A22A74BC1D550F0BE5C5132A23DC05D7714D9ACFF7141D6ADF958B9B6 -D0265BBF8A6EE985813F543BC897588F119A61A933713AEBE144DA7E0374DA24 -85232F206A8DBE5E5FBBADBD08A328B9912F2106D3E5F37407AB0B1B7E3706DF -C869B47CA793F3EACB0F3867F2BFC4A572BC263A661526F415289E6FE6A98CA1 -365F38A715D82EC626C34DC041E9F3371E6EF1A5A13A598D12E33088AD2D055C -24996E174C9C115094028A082566A9457C4D2A99E035BCD07159585689381D5C -53AC9E8319698424018ECB25690EFD36393D2FDF6F989C1CAFC5D40192147ED6 -FE84C93A1B5BB92E71A59537536857A0361ECC8DC57D07EC027AC1B1ED166B15 -0C1F45555560FD3E2CFF7A19B090456E57D3656E45DD8CE6E81EC3F8C03829A7 -1846E8296DAAC9B4774AFC8E2C5AA2AD2D5D83F28C242D47AB652FFFAA9D7403 -2A04AF87D477D80D7F52DB590A333A990C83B263FE27A7633BE1A9B49A7A9214 -3AF37383EDBDDACE9472829F23F3D6D18588C9072E050FA2B5ABCB7779CC1C49 -30478BD91773BEC9B1222FE293077844BEDACF2519F02E7D8E0E6264EEEEC523 -2A8FB7054E4EF01BF5C1770ABC1E75824EF28907AAF2D79B1CDD31CB29B4B7B5 -1FAB24FF24FB947EAAB5228030C21AF42B16064E533117A7F101019CC85C4873 -3821907608D71609639CDD3D435FF30C82C3954C8B2EC22C95C26B0C15CA0CDE -9AC3B015C9FB5F03370101719851FB22773CDC0008F636E53964C1429461470B -D398251346BCE391000D8C69CD86366FFC84DBC645084191FB35B142A1741AFA -F6E9D1355CAA69F4FBE160B88D8187609D9F426C0C4D7C440D0571FAF0FF988D -8CDE5F66D47B40349463F1DF1E67AD514B88233B6D8A5AA8F94D2E70B4A215B6 -0442C8906A768E87D30F8173292556E278C0E27694547D31A77EB8D0C7098F6C -40573F6F9ACBF67362868B94EBC2F7DC0CB9F66F1EFD4D56E6FAD086F8E10E69 -4CE496936420560DB4493D9E66BB505790D021DAAE167F4F93C0C78F22A0C787 -1C126761C204E5ABE81845A10FD73D0A37CE5C09444D137365E55E08FB7A4D2F -CEE7D970175F44B750887ED52D07EB09AFF64D6FBC8E0220D358181E72DB6EB3 -0A794BE0EA91B9C549FF45815A23ED65E27646A7F5186334CCFD180E4304FDA2 -63530FD22F62A234EFDC7D4A7D691BC1639BD9E28D0A1DC0D7CD975CFCB219BA -311F934F175F5DDBA3027C664A6A0B43137661BE848A6CCF2FAE338584BB16BD -D12846E5A31B5987643D6FD36D88A4580EFC7C2E187258F076CF408377E5D9F6 -E4D72535751317240FACB2C0B316E380C3FBE4A34D4B735B2A0E07F0AFA6BCD4 -5A3696C9C0BA1D44EE8C81C651A2D103063F95F433839EA50F617BE476C98832 -C96D8E130B8666ADBB59DCC94104D777E7AD89C69AF35C768BABB664B9B3F761 -37E581AB3D09415B0A5A04A840F8E9B77E332C595F1C9C68D6E1050379BB9CBF -85B08954F025F0EC42DC8DCA66F35151685766925A661BE20602C716F29771DF -B97AE157947DB24EBFBDDFC162B9D763774D958AC244EB0ED10B67486F924F92 -092ECBDBCCAE2E187FC1C10B272E9DC5049DCB146E72B1C8CEEE027BF4393B37 -9A2D56F971AE8C5AFBC1D155B2FB3A485DC60058F50E41C11FFA783421F009BB -0A56C4B7D38CA448C34F301DF1B21FA8E2B0985F053010A39C359276400581BA -359942B434000B01BD856B78DD2292B95D4A1E8EE01CF515E1F2D74CE2878B9E -83D44C1A3257782D76C283EFF5CA6390BBDFFE3C5E5D62C96B9FC4B3D3F21D50 -4C7F6C1D30AEECDDE1D9A5E9C6E170636026AC2F8C036FE704814547914D115A -ED4EB7E90568279DE9F9EA886D84DD37811116BF085887582037BD2554E6725C -D361D3F2A755E5FCDB0069FA63F08AFEED9A69E6C39DCE99BE85D73FEC078AEC -A498AF621BA68E8A0F6A8EA08E5837F2DAF737AD7AB35D66B8488E9A7A96E5EE -3A8E354FCA750C1727F326BF15D29E488D0755D96252550F78130562884C12CE -EDB3656D1A71FB61A1AEA86ECDDF9C22B3B755E99D651E47FBDFEBBACFA023EB -FE245A88B8B84E55172332FBAD5267354C033DCEAD6B6E9A756A25B5C90A6D54 -CB5406FC7DF8A2116FC73C66EB1296C8BD62C481FC2556A9847F403B219FD110 -8E9F62CD3326C153603B9405986914A33D3998CE44A75622C5F60E94429C6B2E -5FC9D143012E2036FD5D85F6B94BCDAF2A3E04581AAAA03B26A5F502D7064995 -24143B568DC72D8652080D57A374305800A69A57157F4456276EA0278573CDFD -03DF212A15CCBF2BEA4A2484B444E56477AC4D3E098E04FA91AD2F8B3955BA23 -CF267E3822EF6DB589125BA0571F01AE172CB7B3981CA5069DE807C1F4E81546 -C4E225221588D70714CB92404D5614751805CC4482977CD37394EE9D87302781 -BFEF351085C77D55EBCD63968D74F98E2900019A9DED8492022DF9285B4BB82B -411500E9ADB89EFC013BAEF1A50F93F33A88697FD01E0E274A18345B511D325A -BF9F31B5B2D40C6F0F24DEF390DC240D447E2DD478B117308B1B4AAAFE68987A -95B9778FC8ADDAD6C9659B4E227509E2D96C8F9613D1B9756FCAFE634B8F8338 -122AC433D3BB361B8C92370C3D29FBEAD42D1DB08BEE961BEEA935170F6CE431 -DB51DD0E3495DBADA3283753163ED2F33FCEC11DC47E9DD9A9AFA0C8535E39EB -1197F01A6E8E1B659AFD036F05B62E789EF74AE5C75E49EB4E4959AD9ACCA133 -D6F3C4DD031CF7C0906F4C25D561100C9DCDFB3FE775F32411518E933CB23885 -1FBF2A7D90963FBC1E5428DFCD47F1C40E03E73BC5F319FD85D6499C220C3975 -8E2E45F501F38001E8739CA6AF6DBDEA31830F44E0A58435524055DCEFEB13D4 -7C0821962995506A4D91767EC8E848BCAA045F4E17F49C3BCE53634B76DC9631 -38C7644E4A178F68FADF357371EA05B2107CD38FBB65885DF3A1B9A2D789F1D3 -CC448BF8A824DD198EB25ABA590695EBF737E579317EE43BDB461E68CD94F9A6 -EE70ED0223183CC7FE942FC95A909AD18B332933D99868976ED7A4BAB80A0F73 -5D2DF126958885409EE7DA9171DEB5C1DD45EA8C5605B09D5D7030784E809EEF -23671F7E446759C3A7805E4610EF2809B942188C9843C457BABED6E86E596B45 -ECB617325C1AD8DFCF4BC5918C588F17C232F7D6A68A0C34B619DC7B2C312AA6 -C28C5B668F3E5F5AD6E0E703C067CB4A9EAF9C332E8ABD6CCC5C9A9A9170E513 -B30356843C3179918AB79BD8DFD5D1C5EE4BFB490F2A2D5578ABF904DA06797A -18BA6B29B40167A15F30BEFEDE3B883BA2E3F7456B79829EA6401A1D4B24D246 -2F30494780181F6D14E98254B408B9A5F19359AEFE16C0ECAC266457198288FD -9896565A0FA172EC4A1C00E0246590608CF4A0EDCBE3C379DAFD947CC822D857 -002538210C115755346538F9D1513AF7F2F1A8030331D8BDEC178B4D0EB36C1F -6F4D0FB8C372759B5C4AE183BAB4C8CA99BD066C7592A4D29DE2125F8AB91522 -55A4C9A6185433933E53D9CFB6C0F9A084FFCAD64C6A93B03F68A33D0F7E53E3 -04694D65EEE330CF14D8A29950C6C15B3AF83A3C7E2EBAB95B34EF658A98A203 -B5B1AC2E6243FECA9270A9C758B30905F02A687C0B7F9A3735C27852BBE116B2 -88E54702854EAEF3E3660B5F23A7F1259C882EAAE8348F9E75B9BB05CE4FBD39 -A2D151AA4879FB77DF3B8323AA075A42D13361DAE648FDFC4ABBDCC7D959EA55 -48F3E55975DF3B9A80CDCB9346B21D61E3F2903E4BB9D22E9B633544BFCBFAF8 -D5F87DAFECEEE13D8775EB47EB44D7A19A88B80428A036890EDFC600042BC8FE -77EB131364D1BBF8AFB417ACB7C553B73774E3C236EDEF4BFF06A50CC08108C8 -7F93F127B101F476A60B3322A0FE523B03A926F43ADB5900EBC129266054F71B -A894F48EE8BB0E44DF612C92784A49503F529E282D75D260176059615C0D91D0 -392654CB3CB9009F606F3C0D54B7892EF75CBE163CA8B9F6B60E472456F4FEBE -3B3FB3535F173461EDB704CF7DDC9E11D11A45273DB61AFEBD3B1F51CA18FC2C -547699AAAB9F72A89E359C00E71A45CE5B3950331D6E61290BE0F4E3227C8807 -7FD95D8F16ED419EEA012B9FDE77865AF6AB873899C28A55B17AD0B4E525C736 -F1A543174F4592D26E2F4FF193E133390C69775C16DA080EE99949C17224DAE9 -76D150B46EBB6B89A2611CF17BEEF95E26295A3730FB9674ABF84FDBDCC4C82A -86510B30C3EC9565B667822C2BAEA34244103D388BF1FEA474031527C85B7F20 -D7F35DB51D0388BCE4F5B7BCCE5BC825337599425B3B03C9B9927769F9F78FAD -48A5C1C811D68FCB696A558182AC8BED38EB4049CDF644CB285EE86E4DA468D7 -68309CDEFB98DAD41CA0E1E54B48ED6ED1010D1305F94190F7E240937CB71E07 -E20B12CFAB644F4AD60961D12B0B0B3FF8BB24C951FAF5938D05B3D23431DE44 -4D323074DE804F11BA8B647CAD1A9239D4AA19654B7D398E65CA7209B66B51A4 -D29BCF59F6B9A2A7A8599B3BD55A227848CEEA57FA1480D86FBE093B70852A76 -07CCC9C1091F2E271351ED33642F46C9C9C7823B1BF97F82B6A24875E77B9B89 -D2A5D8EBBB583508508B30B43296002D1CFA28962E535C272992B76E0890F12E -73B03B78574FF185DC13B1523C7264638C95902C0FAC2D099629A2B6C47866E1 -C351E6F8E7F92EDBA9AAF8E7CC8248E555137D22FDA47100EFF2760EB03F52D4 -D77F574551E0C12DC99FE8C73809143DAC2EF085B5C4B1F9DD3792A70D634BCF -3CBFB43650FA4E32F88BFDA71FBEBBCE2890E0C3883FD33BC745B517E4B64DF5 -D86FB991298CF808C6769A803A5538C1E666BA226967933B025878D1CCB8F4A0 -AF0957FD2BA6E56439195CCA8E252B10C0AF848DC2E4F70B15C33C9EA7C99303 -D58661AE49F17F056CF8BDA8D690156E5A3F6FE21BE40AAE2C820F142C22ACE5 -ED070363D3FA1004DA3959A6304E5F572F0142BF397DC61E6349DC3E98491493 -D1D2B70C5BDCA541AF6105CB609E7884258806E5891BDBD7613076A8B8E42BCA -E6B84FAC6DD3FD824680F5BA77B1910DFF6B954A8DAE3F6B3D9780A55D7A67F7 -843C14EBA078C1912AEB85CDAF69BB2385C7ADE1F90F01E47989043BE89B5041 -B6B024E26962BF694172E6116EBA7312CD6268B7920FED3ADE0E3E227D7A83F8 -8278620B2D157151AA95BC6D4CA943EA6BC73FBA1ED2D84CE5EBFADD41D99B9C -9A80300D83A88672CFCF7B3F3F0B6EE62F28A8330C95A1D8646225D5C6B1B9B3 -84431BEC2507094BCE297FC0411D4BB4B6181B6A05C8F2C2A24D12E50A178784 -E57937467F1843338A34B52D23BCF961F9863D89A440EB7F05266CA3EBE5A68B -61F2904FA54DDFE56F2D502797E0AF36273DE22C03C3AAD424567FD23CFA632E -BD0F0409B3B52C6093336007E9A7F8EE660CD790CFFB05E36BD1AF81C82778B4 -0465BA6A9D4AB37BB128BE326ECEBDA72A3E25CEBEC61024D4D9F5A24F43C2D2 -9AF358500EDAF56CB0D66CEC0B0123DEC9B8C05F10278E8EC00C8BB7D13316CF -0BE24A5DBB0B31F5FA4DA8AE1DAECADD078A4300BB7DDF6BCF8DB490110F94F0 -869DE91639AAACF9D9CB2CB491B6D39270416AD441DFE95DFDB8CBE0221D236F -2DC9A6A25E7A9735317BA259695EBA983FB2AF9D119A193BC6E02128AFB31A0E -255E04ED690221C0CC651C1AA9C904578B4EB970409FBE0E99917ABB34C0939A -EAE4B0CE6EE177E9EDA5BD3601F45800E74E615DDE96D3ADA9F279E5972E5240 -020BC2ED41EC8924C413051A2AAE855BC63899175917CC8721C1F08EFC33E428 -8FECFFEAC1BAFC8ECA17056DA5CE6180485687DB086CB14C5A349D0EAC073BE2 -305C0F7FEA8A642495E0ED4F46B0640475C5D75935430EE0A01CFF8CB138379E -FA46E77966D46B8DFFC61D80FF9FED124B505386FD1BAFC58E53B29FD438D6CE -23625AD8CBABBAD9A857BC85DBC6051CF69F624979C658A3792F1CD12D22F117 -59ACE97B90B45043C4577747E9ACBA0A2D6097650B7EA939FF865009DC33993E -B35C62C341F0791D8F129791D0D8FE20553DB7F30FED403F364DDC40211047F1 -E3D2519BEBAC8F8330435B60B38C0049DE44DF7ABA93229AFECCBD4C3CDD9B48 -8861EE1D31DA56E240CA5540B367C8065053FAD0E29105BB6C6D485BE059C6AD -9986BB21961824A6152EB3758D8D50B73E783C9E4671392A713B41ED3C4F3713 -7E4C3EA0C1C55DBD7ECB96E3645BB2EFEE56522C5A79B12F672376C801E3BA24 -160DD230F9A0B4DF94A5AD361BFD9A1B83233A0402E93EF14E4B13E7B13F2C2C -46656A2C359D5020C928C5F232AFB484C67C607F4B818DEBA385B1B508AE9078 -E3A15FDB784B24391116483ADD33339845FA6D12F742DF2A2DF85853026DDCCE -F7126C4EBD7F8FF55BF4A37D5032795C76CB3D79EE4BD55B06B9C51F3E8F24A5 -A9DF3636127D413C87C4931F5FD1783F381BE866DE87BFC738BD1B1DAD380EFE -1FBF60C8C7D13352E34B55665095409F9D19ACE1F365BD24F8A7A5DD82D6D41F -3B1CE83C28F95F2B41E54834089C63582C9BFEB052BEE8F82D3DFA7DD9F19DAF -1131F7C9850B29941E672EE78B6A4057D3326B230592394FDD3E19B93B450DB6 -CED6713F8D5BC0267A33329BC29E246074DC152090199FC2DC2F132A0C989CCF -9460630EED38B0BD398607CB8EC039CD4BDEA661F8F50198F4116C40F82F209B -0B5E71659F203864A60920B83097E0F02ED6CFF75BD53659D34F42318707029E -186816165393FDEB184194A329C25877D1C9C383C99BA7E54778703215CDB884 -46AAA8F1B548D15ED0452526D015B4194C95ABA65609DCB9EA418F8361BD9330 -BB4F7AD0B50505E0AEAFBA39017E2C31649CD6E0DB2A2AC5D85D27CD5C4C6837 -A37A75BA69DD080979E3A4428E157722AB00EC9EC0EC2760F7637E7EE226661E -84E8F77EBA9B837CCD22D4286A6CF695F8CA22D157C7C623BBDD074A6162EC85 -8B0EE8BD06EB146AB5204D9084D0842367A38730112CE27D791E781AB81FB69F -EFA5C20D70F0A1B10A1EEAD6B460F3C76CDCFE0D92D45F472600A00C8782232E -0F6858B5B92B4486211FC32C812CB429F54A3787B9B51E16D52B55EC79157905 -643DF8A892FE7AF73E1D51D57ED3899060801E32B53F93FD91686E7F857AAAA8 -55DE0750B64F8C319DC27CA19A7D38E9045A6DF2B444472A790338738D63B6EA -C0786F1926A8194A4F6680A454DA83DE8158C68F596DB8791727813FB96A7E40 -B7EC5F671E5867AA4A189629F8B9E8BA7A607741D41223B6E09484DE58719022 -24F225EDC4C3CD0F18B968E6A743C8E3B8206DED5F00F5E93B2A3FC315A486FA -C57EEDF67C5DA9BD101D98E6F729068B2D3A27A95A1F8C0EA92E5824574C4E1C -3A4FD1688C0AB93BCC4E8315EA4B10F9BC75C490B18C5010F30A393DA18D2041 -E95C675B35C74EC532F2C0EA8E48907A0DBE20CBC3C52BC3D18FA15444AF9F5B -ECDC5C3473ACC1C1605B15A7ED2BFBA556EFD85A2A9E4CC80AB1414316AC9B90 -DD10C24B1085B050DF5FD2F28E1A0694524F2CEF7C5152B76AEA117E51E225C1 -1EC484D1D441D99ED10FFD31715E6F10475AD4647A9A46EF22962D6997F27ACE -10F583F5A02448312DE0F2B32CD484681B70807F43BE286C6B196A06806D0B22 -A3E58C0AB56BB717BC0A8510B5E49211A69EF1E6DA0BA4A41A6B76E7A881EFDA -31CD1F081FD48F7938044B4AC86BADBA466071EF588D8C45D539F74FB0B0E1C3 -79AD2DC87C0F2C3FC264823E22E19C4E3E8078CEA42E071A5E6D5381BCF18829 -EF2893EA32B4108A2F52D7CFEC54A7265A0F4752EBA32BFC821F9A4A020AC999 -BA39EE3139091E66829D26DC1A24A767B0456FE50E3EC915F4E7D53B48D0F54B -919EF87C10D3CF27FAFC925DD511C57B811AB2C40DCB4873A2FC903A954CF044 -1E4D6EB8E89BF9219CC31EF005F963E7D4D33C0434C1E76A83A6511FBFEE37E0 -533353F555E6303791EB82C52117BA073C9BB48B9062A556DF64CEB85EE0DA79 -32F94DF379D63C5E1316E6ACE816F26E207FA06C491AB34C3AD43E758D234827 -5A8509A6452E36DC81A7BA870D3AEBAD3BA821AEBA9B8FDAB7D33F0E4470F891 -58490414EBAC971E215E1A3BD789C1D7774F184CC5320FBF9382FA3291C1E823 -641AFAFE393A04B603EB6EF4C8E11746223A929E18AF414A75AB1A840F52B268 -AF74B03390A16431719523125C0D750984B771E8CA1E3FFBBACEDDE42A875A72 -116CE3F9D605FA6489646ED1D6D98E093C829FAFAB2D21377ABDA3F3642BE95D -DFEAEBE6BA1F65E1DC4AA7B84FF25213D963E4F417024E6D436E1D3F551B3CCA -71F37632B7B10CD4B9D437D6CD22620F003827787EEF30CD18D2320138ECE5A8 -B83C7C9A31391D2321683DD1A4A2969442E1D375138A12B63219AF769DDE5FDC -C5AFFCE6CEA25BBDA9DB06F9655019B4ADE0D8C72C213CEB7CFA448F9E4B0026 -E8A531AA99026848E32BEB52E1815D04C711B3AE4CE048ED2B95A8E8E5AF394A -C0059D62AB26C4F13EB8BE84232329B606F8738697ED0761E12D74731D4B66AA -14C337680BC5F746E17CF94E5759815F5EE644774BC783B1C0069803CA6B859C -FBECB5605CA1C721B604BF48A7A2AD7149333EA8EDA9A9CBF1A1DDD368510AD0 -9D7444BCAE2E5D8A11F5F08BE716A32E389C6DAE4EA62A3511562D70F8F79946 -A4AD033778741EEF0A55CEA96ABD06FAC4A1F2E973E8969566231CD704AD7632 -591B2CDD3FA6FC413AD1C5A5684182BC95A757C44F8FE6D0263188AF5E6A87D7 -92740B707FF88179CBF34065832869F094FF12DEB66BE0D01AB466E236CE +F92FC6385070EB02BF2541307E4EA34C131815FB9028C118F4B792C5E74EAF2B +2FEAAA4F5CE91829ABEEAD9B4DC623A08AE0D8049DC1FB98349FFBABD1D2B5F7 +B2D58CF489C1116C69B0E39BA3E669B3858004BCD4518C3E0718DC4A64B2EB60 +6502E783FA4B6EBD1A7D112670467B74F8A04DA69311381DC4C26044B4696BEF +EFB07B0BFEB7E3F7713B61706F348EF1AC277E6C43A8DAD97241D9A7C0B97D44 +1032D8AE53999D179CF8D749E383D14DFBD6AD57C6808ECD8BC8A3A14ADD112D +77874CA9C03F752F15DC94D2839AA4638F0F842CA5D8D1617BBDD108CA950AF1 +23A235EC6CF12B1D3F4741AC28C4B2906383A1A5492AC1BAB91FC6C7182DA522 +7098CCF89A5D5093AC0BB825E1D135847F5A710DC831D4FC712C41ED765502D1 +BC4B74CA6F65B776BF110862316382644EA5C79A6E0C49BCB44DD88A536E25B4 +BEBB9CB3A583E579E775BC22B1FB3C1848A7E3B6665942E9AAB756B0522005F1 +BCD665F977B85C37FA97B5FF19D2558A874611364B4318FD659D018498E2C994 +ACB091EFDAA211F3AD8F720489753816FCD5097334D12B02F6C5CD060AB925F8 +E61FA171FC57353144D2946B33E8001D3AB8CEE91F02945934BAD0C06B4757B7 +7CDC8EC97B4FF04B3470D1D4AF486589BA1B55ED9DB471877784FC57398AA686 +E7E220D04C06AAB74E7EBF3103ED1248CB7C9F49643CC27E21F3270E096FA915 +486BD1D3B7CE89DBB225AA0F9D75B951817D41472C7B791CACAC2B36BE2005F2 +04AD42AF90A2EC433F70C085DF6589C50744017EB9BEAD58FC26B1B56C285910 +2B2DBA4870802BA859F275815A7AC1032B05028D3044CE118DE5DCF048713250 +BDFEF7B95E8CE4DD75EC4B97CFA5C5ED5B8F9191E7D2D2313357230E0629C41F +474B1B9F5F6FC94266621F0D2A50CAEBC60AAF6F24D7062FF4FA0948E12A74F7 +238663776C8A8031577FC30FE095DA64C90E29F51807DCA8F4F83780624DDB14 +556472128263E12E16736088DBFEC7085D3628FFB8A35DF8DF5E400E5C18086B +352680C7575B4DD9063CD9BD7372DF56D39061F6A5A5B1FC98FF6DF7E00978C7 +26220733B9D40E4A97EE56A8FF28BA37EF3ADA813230C43F33A7A84041757A27 +2156176B2F668CC4D76516E4E3C356A9EF414D51FD0549A70647AC86B6456A43 +84056088E5119AA4594F6487B75946BE84C510200BBD779D70E8B61C700A939E +3217C49E69985AD039CC7BE4C730732FE2FE01CBE34CB774B16CEE0358BBB56F +C8115E3555D2AA629AA2EEFFD19D729A18ADE2F91B3364818670905186B9B029 +D25C642313375FDFA4D6A3BCF349865E7EDDEE435C61FB30B04B8FBB1378D0D2 +694162AD5E4B4A79C234F469DABA61EB15EF3C3D20D8AB5C01BBB4E724FAE144 +E9A8470BB2699F3ED8E6F7DD946A0879123459B44E642452C64620F18C7B04D0 +AC4296DC67D8FB0B13F180FE00E82FEBEDD7319FC6CBA642489FF2ACF91793F6 +6AB7C3ADC0D0F09A02F42099CEB111C097D73FCFC007422F4EAEBEC99EF05732 +09AAF021324F0B190D026CB0A21838C494A00E4DB00E362A29AA54E05F987D51 +F50E98795962DA5A3D7DE59C89E60554AC31E04AC7DE6FB46C5264FF771987AE +12F9E5DCDB3365BB2AE18CEAA43246845CEB68E938AD726BBDDEDB561CF1D260 +AF3B9787B7B491F1169E118850886319D2F8A5600AF06675862367BCD68C6D2D +27C5DCE0D733566DDD430FB83A4900B131475116B6D123374463B22148CBD831 +4C524195BADDEB0105C6911770FB4875E94ABDDA49E4AC41D8BA10FC28CC2807 +706AEFFE3B12D4FDAEBA50B255FE2213FB623ECBE1A2BF57355768F12B022AE7 +3F18DBBFCE10279DE13A0633737C7794073255DE5E424DF633C700324C8C795B +0037E819A252770267E46B2307CF4791CF6CBC4D857A18B9DC2B5C493F389AB7 +5A859765342A8F71088A9BF7C94A26FF5EA240B798AA3888FD0D3AB7E696D693 +551D3E2678A451027C4BC4A2A774A3335CA803D85A1D205225E9DD2E219B0849 +AAD18F56F7FF65DA30B21DEC14047039178652040A5B3BB9514FE1EDF202660A +24546B62117862181469C192D74F2D5E24483BFDB8173EFA1B62CC8E96553B74 +7BA2A2C763A7DC9E78818FDD67B5C4B13E893A99068383D6A5644DAE0177CA5F +BD2B00031ED86DD51E7DF343539233BC6A8B7D75D8A47CB16E1819E8C749EE07 +4053F56BE02CC04A67B73D25365C1BF41AD384749BA989866D54B8A4F69AA1F9 +C9752774E8C0C917318567EC7AF0B847EAADB75FDC46BC48FCC80D9F5AB0D56F +762404B5190A07AA02C3F8278BC3058CB57A51D338754BD152E956D42158208C +AC56715B72570E91D0F0CE72EAD1E3A9C5895513DA0599AE2B6F2DB678E732A3 +4CC0918D27A93EE94CEBD3A2A2D350A6C116DDF6BF5CBADCBBD83FE3A2CE888E +58F1B8EE470EE81F8EB0E87F30E228616190F4847AA95A77E4D1D85CB463D7EF +A33F63AEAAD1822B739AFA770AFBD394B5745ED510C84A9F2B226AC67A9BC0BA +254B6A69F1A3CDD616DD72DEB93677AC1E2FA973B53DA945BAE7FF61B8677A34 +9B53BCD8D20DB78159BF76ABF5708DD847F97A875F1184EDDB3CB7B8086D8568 +36A6557D675CBD5EA77137336E805BC7886CF89651EE2DA8B7FD3D7FD5944361 +42272408AD91353519F895A302A419DB8533730A51BB40BAEB512029B8817E69 +0B8B130DD9E3EF42C32AC8FDB022D55576EA671EE98D484C268953B3D95E8EAF +3524231212ED7116534D26BFC2D69E621FC08EA38C00BA7EEEA53BD71792276D +20630F4F2CE9C444FDB3F0F03C32F419FAD16C05B80CC74FB0187472A78A019F +2E38BBE6E0D62655A4E09F40980217EB56DDF74F42A52459D261B91A240581EC +EBFD52810A1FA41EF65D2785484B80F1D728597D8669C0D5C09D2816AF24F752 +EA846D2B028077EC6D9830B8CA4ECA7DB77AE637750528395754CC531C905FFF +182B160C780C6EA7AE8F8F42FC07E8B0CB5F9B6AF842C728FAF7F7FC8CB5EFCA +2161C8E0BCDA9B3F100F2FEE71F9BA941DFC5C1A4ACBB3177D2D0A60C7BB23B5 +C8304153EC1DC5A4EDE951FBA3CE223B57CAB15E7AEA03104975990DBA44B971 +F7D52112B6309798DB7ABF51383CB091225A7BB1721ED1A03DB2684F3754A706 +750B6BF629136CE3353DB97BAF71D6CCC5E857A2ABFE104A6445E3392045DD66 +ECD4A5479C18038B5375A0DF3586187ADD6A8F61A51EA1E41FB67FD9D728F3F9 +DB8B04772112E69382A34FB7B2DAAF5E7E653B6BB300D8EE284FB49FFEE69A5D +8ADC239268E0612EED7F08E8A9E2995F10856866A7E739FCF376664B92EFDB91 +F2633033398A215918D9DA74A4F0F09692FDEFD1BC7FC1899580E6C08D8AF26D +6F720E25241E76A87205A65DC8871D32F92056B5BE9438F3D1225FBAE577ABD7 +952C75DDF86C433F1AADD9798344C62BD300663662E35DF041F143DCD6A4248D +094D9727DB6389CB05BAAA752323280E10C99A8A1717D811C8030DD97DF3D98B +9759CB26CC003F574BDDDB8FE1FC1C8197F8B071FD1E7F4BC3E2212471AC384C +8770AFF104742B88F8158EBBB3467B4ACF504F4A3C4EED87245F0811D936B2F4 +5904EBCA5C1224736F5DFA8934DFF8F6AE0DA84DF6B43CDB6A491F36525CA7AA +221CE05922DC7C0ADEDA5D7A992EDD52CBC4CF82580CE15D953A9658B2EC71D9 +E8DC5B3FA8C9534451D457F745DD18C44438A70C7FE457745CDED39FB6F7223D +CC4D063B2940B6FA6645E1D68BBB62A440BAF0341B883B1DA34F340B21703E3F +D9DE3965E40EB9E61ED42EA03455F25BC25112B11E81A917F02866013E77E47E +3F6F92BB76F2EFA8F7B4BCC20772A78345BA34A074CB4B7AE7988563E402872F +B1310D0CB7EBFDF05EAD32944BDC70953DACBAD16E6C72590E403FEDE9A8AEC6 +4520334FB4C53202EA19C5825CE0E8784696AC16C23FCB2A7E8C88417A898594 +7B0A4BAC3B46F6174C9821B3B169E49FB340AB07BB3383868CF6C542A384D610 +6DC6E0C10C26F6FFF27BE7D82936A15A3555AD6B19E84D548D9D58D54998E459 +12CC0C89325E7373588449DAB292DBFECF9872F2C4601B731334B86CAC488F2B +D399EBCE0A084B90FF3F41169E124E6777A0DDD635FB31A2572A19C516451978 +717368FD0E14D446AF7382D424F6750E0D61536D574373B42838E4BDAA34FE52 +625EDFDDCAA6E32952115D7FC1B22229AB7BFA0D31E3F19604A79F0EE9529287 +2498C49610A099F76B0A736AA0B887CB0344CB3F32D9654C3607B6373F053233 +02D960850D39EE00007F83ACA09FDBF3E70EE39A24FC57FD0A3AE046DF02A8C4 +8F2432E78BD517E179DFB16AE0FCA608606C8E4F6BD81FE20C168FB3C3625C42 +64CF2BA9CA83298AECD584157576ADF528832AF12415129BF324A3813C324D89 +D13EB101F6ECCCDA77AFB15AF36F7B48B34D57D7DE23328D8A97CAD0C5A2461D +6535407EF0F907BA3274B4A87D8BCDC9838398EC738949532BC511FEDCA9772E +E7423BEAEECB19FFFDBE73F89138157C87D7726EDCAFAFFE237E3CD466CB668F +D2329976D5BA24E298ED057940C2E87A48D65DE79B4F986A4105289776A137F6 +FEE20222F3F5F049C7F14B330D4627B15BD48EBC734C8F568755515127A7A8F1 +471CF2ACFA2DBA613834DD7E0B2DDD59ABB2382C2B3D1905C39719EAF1EC04F2 +7F731D084DF76B6948D8F2A0571D66E84DD9626785929DEF390982B9A324BC3E +D6D1C5D5FB41F147ADA0BD282387B9DBBD1576E6E128405A4AC575F2F2B83954 +B42E52781AE341371167763940506B4EA4A8B243FA32403020498A12D350CDD4 +E05A59605665A337B38D8F3F34FFCEA5C16CEAEB4C34E670852C80FFF4E3C624 +6220F65BEE999AA487A2D24C58C4CE684B74A3C5E49C01C4CE274B9C4A442CA8 +50973A35ECD40B85E048B1C0FACF78964D60C026C2E2DFB8941A36E0B7B28CE0 +DB5F5A58260716DAB92E187A4E518CD9A93AB5F97CE6ECB8E7523D7B932C99E0 +7A40A73ACCF22F0139925B76E388789F252CCA699209D23B8D341C9C5FF81F0F +A2A10C7F159C45896A244B7EFED4CAFE35FDA8C3D4DDD28F336B09DC2CB8F56B +A7378D2F3D13CCBCE823A81FB84D051734AAE8395EEA9F9CC35E10B3770BF2B7 +827CEC011B2B125A21B9D923152983DF7196F6B54588C258372D5EF51827B2A6 +23934358274D7ED265EC913C596E9545B357606A2CE0F644A38052B6B9BFE3F0 +C973035A7F11BFDF17CB5B3547485C8088551F0A8B739C9E798C15853317FF98 +599A65934B447EB6844727F740985FBB16BC77FBB89622F950B9ECA9F4CF215F +4584CB8C3FABD1F45CE7CFA3123BCFEF5D427E37290DD7E8F5FABF2C1FE63BD3 +8FDE1816F9DCAF432789679CCAA4AC856F8E06A63040CA81FB90E37F3804C7DA +C82A0B8C4B9AB803FF5B5494586955608D9B6472583B38203B18BE0943CF6B67 +3EB41329EE7EB0E7B5ABF722F9E855821BB63EA32FA5D4284D3D0F365B2030C4 +5E855F51A64EFD5827BA4AA5865731C1FBFED2F75BDC40D5448A66F1B0EA7CFB +F893034C42386B15E22A255A218926E1C4001F499C7127FB7DE4AD11B6FF8E53 +BDECEDD7E59F13F614C849FE407F653FF6A4D7F3DC6C260D728B36A7EAD4453C +934B3A6CE00C42F3B5093B9A6783C36F989278C3B2BE8A5909589F0F95937F2D +D2AD01B3C289E9BCBC07CFEB2B0668678CCBEF25C2F939CBE4E332870E705946 +35FDFE97E45D356B6C0AA8164A05D6FFBFEAC2990937E9024861DF345B485B83 +21A1B21A779EED3EE73A7ECDC0C464D1653D76B611A8C76CBC9D2C280EE59347 +71331132D76F5E0D2B3277958B49C7E36E9ADE80E7C9654A68413519E4FF29C8 +A05534C8C1E12A228F022C7AB1B5523FFED08986443074CB7C029D2F535A972F +6E9414811636A915F95B7264505C2DC4531C9C6D8B8399FF96D46A358796EF7C +AB643E601824CFC87692AFF952DA1103AC8C396579F6C3D345263B9C09560DA4 +8369CFD7DD502C3116B270BD74219B39B368EDCE1BA32DF8976850ED46480612 +D069C3731337BB9232F2D641A5ED8611C97716597D6C7FFCF6A42D00432935B0 +95A56030C4CDF19EFB5FDBEE9806744332A18873711076E6EC4FABE9588D1D4C +1771FFCF701E6FDC9CB9BE14C7E91D8FFC898C9A4483FB67176B65E4B517131A +6420B2C2B92C6AF4E3DF7C16F1FCD5041FDA0DB071C902204A219064E00D3829 +94BB53E1468F984777F412A8205DD06F7B9F7CCB61963411B69E39A6B0969684 +0F04A5D4CFE09D9448B91033E8E0DF40BFC7A2C26B391982328FE357D811A7F7 +31DCE0991BC63F286C63072503E3BE5A4FA023FD0C90B60AD076D879D5142C60 +33E9A2F6BECA8FA37EAB6F6AD1C007AD8458CFF7062C0D59FBE2F464CC5F819C +0100DC5B1F492C994C21DB335E31F9028A8405BD2C7C9E6B4E6B1664DB0924C6 +C4C3421D5DBD24AB2364A4FF49301E18CEAAE951D58874020EC0FA0CCC8F38CD +28718F2B31F98160BD68187256DA6E01B5D3CD36BE526EB02090DFC6AFD89C4A +D03F115EDC247B41211A4E289CDE67B424CD665B4D2DD457874D160400F0255B +ADF7EF681C6C52DD9FD13D2780CD10D11D1136A72CA8072CF43CCCCFD4E54FFB +B36EBE90605C4E273D7BD418958EB0B170312CC10B1BF7BC0D8F94BC4FD984DB +937891E06C7F3AC2FBD3C4F916A7D7CCF96C38168A9662326C4AC8860F1CC17D +0A02AA42C73D0D974B3B61A0D81B93DE2641D71272B9F2BCA4B5A1F2AF440BD1 +9DC246A79AEEC9CF26DC34572C5F0FD0433E6684859C9D43F06DC15594298A9C +47D3DD335FE4D21B2B26BA0ABBA0A8DAAFC4FBED4E107C2E680DCDCFA0659E53 +66319DF3D69924E79D9B3123A085245208E712A4F86D023CE0A3BFD16C4F5890 +69DFB64E9E48E4F0AA062AA392F0224511DABF7FEC63B94FA3E5B1D74816257A +3A4DA3AA4A8575DEDEE71B854E004FC2784D7BAB4C84A7DEF212AFE275C29A85 +00BD8F311E3687EB95C20E3FD328A904117E71CFEDD68780A1F595B1BF5755D0 +6CC3C174A3D4D9C4BD0ADB763898043607ADFE2F62DCD913433E02C1C1D1363C +CE328B6C1466839E3C22F30D9353EA0611D68EF070235F731EEE2950C6CFE0C1 +09563F9B9C39EA4526E8CE38FFCB9FDCC762B25AD3189ED8FFA914E59D8DF563 +441C51C304D6587D5B543C25AF3673E532AEFE0C1D2BFFA04C9450E55B223CD7 +446F777B5E52154E6F980E1E7380E5DCB12AA7B1905ECB92E3E7DD250D64C7EC +E2A1FE667B328277A33177655C3E453E10CBB5DE3630E633887E39BC92B29B82 +14ADDC605199C950BCD18C28F2CD834BBCC37ADEAA6139C6765ED40C08FCB1D9 +24CB537F0F0F14F9C89FA111CD84E5A417BF282A65C22F1AF43F7A00CFF754D0 +4CD244FEB1B7299FD69BEE63C0E4899EFA527367CFC4C920C20085483EECC059 +2F66C368808DA656B1C092CB53A9B3E5A5250889BAD55E241EAB6004ACE3431E +BEFCB9BE94C25E1CEF0B3632D3D72279CE5E2F05F75A343CB7658BDC2C120C26 +685800504B05A938C56FC91627652B0D8FAB94F4F57DF2702C85AB021E640DC9 +013F7EC636AD0770A6D90F7289946CF03951E6D92F8066F68F23842E70C0008E +BA986F9DF7A78C0EB30350DD52EAF82D32053C3C8182C51BE3171F9094952C13 +628403CABE67EF308B2492419D94F93E7C0453873A7C6141D12ED6B482A70AD0 +33C572EFC7431EC51A388D0A7FFB1122F6DE4DE70BDC8597B7F7FF220275A8C6 +AA05147874727458E624A5338EBE95A99D1529E7FAF981F4E5B7158D2F6DB7D7 +057756D3E0146EEA649108E6EB17B186FD2314ABB0DEF5A02C75542C3EDF11DC +E5660CAEE7A102627B110ECABEF1F0457E619F429EED4B4D4F2ED19D276B50ED +C53A515750A44A139CE3AF0F54EC7E4D2E9A95E7C5560C37AE2CE8C2069C69B9 +49D82C48629D21CB7976CAF638EDEBB48BCF928211909F9FC6F1EC53557C3CDE +B536D5C2397681C2EEC7B1B45AA6330336C5A1A603B117B328FBF1DCE5DD4984 +CF2EA6BE5AE975AC530AD0AEAA68C6854452A8E152B01CE21A3EF3FBBF814808 +041F415F88F4C0D1B138C6794396D6384BB3B1940D8541072D0E0EF3B072C84F +175E90E9BE167D3623BAA68BAE16EB8D3A37B01EFA248C99BC387EC50FC1FCAE +81F2059B29868ED55DFB5EA982942766466C2912A51B9B245E26704767B05377 +EE575D2723260CF9443EE83D48AF5311D19F3AB2E0B9EA99EE33A9DAA08E6884 +4885BA35B092C033C52547F35CC840FBD7ADE26AB8E5791930A80ED7EBC17F96 +40C4E1F142253C8BEAEB88061D486C8BA3776DF2598C6EE4D22A371B02D2FD20 +402A7F2278DC774236E57CC2E43BAD027D695D04AF02A9668E7092E21FB3F268 +1453AD9C2158B231E5CDCDA5A37A4EA0B408C61EBD2AC7A669270999BB7C3D4A +9590E4DDAC50350CC929557EE6B694EE13BCBF3A8889ED59AB36505F238106E4 +908C678110AFF73227B0C1F6C1B622C76C242DFA0213AA7ADD5C98F344AE0530 +C97EB6B4FD044C1752977AE8577E22DBC0B183711E47A410D9DA539121932A36 +313F9B79F48DBFCA5F6700D89DC9469DEF3C5D0E8A36FCD60A3C2B00748F53A2 +C928B80420610C7FFE1C141C226BAD4468C9439954692DC5BCC7F01562C902C8 +6BA19D25BF6993DADDDE6EFCA7564DBBD28B37D8A3262A08EAF397A48BDF547D +E2B3B20B3AA1F105F092A2189AECE726EF0F7F25D497CEEE57CAE48576453CA3 +369222BF23760E85A714E33821B4B08B3C1159B766BBFC8B87BDC64A3FB8096A +695FB27F7625D20A822A731887F119E45255348442BC5F8C08BEE83B37951225 +70C65307C98895BA0FCFA9DAFC464BAD78A182BEA1DE19B34CE77CC4A14B78F6 +E11C085DE14039B61084E9E83E074722DA3D4772C239E51606648B866874D40D +9B445DB50B497725E2373C268ABE838CFA5FF2DFACD643539A6A9F86C25F0CEB +51429E91FE1AC28B04D9E8FD5E440F59B0FF11BCFC1CC834E42E19C202986947 +08A7FE14B616C5C105C400B88151231E0303D22E1426DF7D586598D1378AF870 +6F590BDB68110428D0561C5E1AE7400BEC60AA1FDB9A189A0BFFEB2312414C95 +187F70F0B327F09B83FCBDCBA8CCCC0E41ECB9AEC489ECAB26666BE8A8AB10FE +5A95F2A0EE3EAAF21D40D5CB3B155A2B9CEC7615D6F267121CBEB3D85C283E9B +36D9B0940DE48B5687FF8E5364C8D7B851AF3F8502B288AF7570965E62029803 +153080441CA754CFF0951056ECAC2C1C58D0EA87B93D3B09A0423E3FDFE1E44B +97550E8AF88B65E672E8B309F526590A438E38E48A14E01530BAAB755721AED7 +00BE9A1AD476F61170D4A1FEBC0FCB1486F75F68F5E8809F735F7C7EE0398BAD +6670E1A678A99F2AE33D639FDB6E504AA9F02B3D875DADCDC965993A86112BB1 +4E06541C8D658E64B26A7B4F38C0BD161D25AD0B0E815C4CAA65D85C998D7DFE +DFE69331D0447ADEAE5E24A9896BFEF8493CEA0FDFB81209DD068EBF24D3E9DB +A91FFAB381BA9B169595C1171F986820E9BB9AF52726340C8A256411D89A777B +2B804FE94DA7D9E9FD0832F22BC354D4D31198712BD3D2A3FA433B0C2C8EC0D9 +B8A0A852C2106A040658AFDA6ACF672F02D432FA4CEF0ED148A6F08645D0C73B +268AD4AAC25EF9DACCD53E4FCF07E2DCD9A32210340D7F4295A187365A4A904D +68960C4E644A40B9F4E3C6EB2154B8456A7F8200CAC41F87A5936D1B230E0431 +F4D65028EAD48BA22CF41815D8CFFAEF0BC411E100A401CCF25AA630782D9C0C +4DCC6834877FF4A0330C2C7EE37C58AEE4A53AC28F0AE02ABF2ED7E65D80061F +905E38EACCB58390375DADD554C98CA2B005579F8E724C97B88F6AE8289EF21C +F351267D586922AFDD20892BF3263F5FBAA4A3E7C16024187FBBED81B557196B +D2EACC985930C0E97539EFA52BE652EC950212E156F8DF4B88D1AF2992B79C5F +D25DCD8099CD2AF75FCDEC084AC81B94D4B09488B6A8DB446741774E11AF113D +DE79BCDE46F1D30EAFADA8401EB76FFF0613F54C508076AC8CE62773DC44DC65 +194083F0305D174A25E9CAB354019D1DD787DCBFC00079AF126E5C75CB4CB10B +CCE3BCBFCFF8470658E234CE47CE610A064C90CEEE64BF4E94CBFF0769EDA6CB +3F60B4F4A12236BD273ADC174DA360C7A302B7154D610C2EBD0439EC2A0AC1BF +708F327C709AC551F72F93318C61E227B2C04BA2F5BEC6913A7D14E684831B80 +F625FD2526552FC2A952112EA17BD97C28C4D5C4A985703206EA7599C7CE5543 +9F06D89FAE65483C61CC99C1B479062F514156462B010FB0C130FC44BCC8B1F3 +6437FEFC5682B9619235BDE023C7FCD389848BB255BA164FCC11B298E6FF81F0 +198FBAE98AAE5094380AEF9C9EBDF7D9DC8E063E01D20CFF3318C0BE4539B03D +454FEE6C426FB9B50EFC5A5D90993C2ABE542ABB07540EFD18DEF8BA9C649452 +0BAAAEE1BA0AA0174616980A1FAA41DBF6045F6D71911826BCBBB85A29C50DFE +81D474562C33133AFA8BCE730A347B7225928AC3393FF04080DD74B685D83C71 +C79974FF1BD93EB1483B4115633F8D22F5740EDDF7C0AB00EA0E5C0E33BB9AB2 +6B25E4783B47E129BBF5315249BAADD06EE754442F58F803F50FDFC3B90E33A1 +F15D292ADA6C5A562474E339A0EDE2AE8C5225E182C0AA5986E34AF85CA30185 +73FDA3B97EA7AC64E1834E4B7BAC07C4404B41D7D327E4A6D11E672AF6B0FD5B +B16BC5C05C3A6021030129C7970EA1B6255E57AEB5DFAE77951667C85E9C7912 +D626DD5EBE8080FAF71916E21E3908CF1187C239AE7F99BAFA6AF6FA9BB8F6FA +10548EDF22519AA6C065B6F36B362FF63AB22C28EB9A2C096AB5C3B3ABF9F0E4 +230B111051268A91099FD425298224BBBF3D82773E80661F46A2108E434E950E +0667FFC199BBDF202A02760561FA2C938D633141C2567A71769553DDBB977E62 +487AE5F58F405E2DF065A1082C64230EF6988F371875E7455AE359D413FC19E1 +618E13423380CF7101C1E5786E437697BCD3AFFDFAD0E2F4988B59AFD74CCA7F +C0849B717EC76D1CDADAE754FF3E2888100F6F8AA5A407565CBAE2519FCAC7A3 +6BA7D2804B55277A96785BAA7007840ABA7097BF029A42F09BBABDA7F618B009 +02B20D0C5166170E49F927ECEA486DBF60D4545C406288BEA9185D29419AF9B1 +DC5B2426047444D704D1C8284DB6C8916028CB559A1A1D993C372432A8FEF201 +8B15EBDF1839FBCC99AF4B2CC70184227739FEEA44F71B17C066BC6E8281BE57 +FA43B781CD0B22DCBB4D45FE5D043F7F77FEBBBD6E901021405E21F369075CC1 +A5EFAE8B1223DA341CDBA4422051DAD575D85B8F21D3D0A23AEF706E6C7889E8 +90BD5507B77214FEC20248907D9CC76F06261EDB9C1872B58D5B24EC75A12637 +46B326DA1CB035F5101A0D61423E929D1492857D8D3472CA79CF864B75E8C884 +CBC59B3F398D2AC1E72EDD7712EB9C771E151DA8F345F49CA9184D793531AC0E +6C61BBF5374CC131D7D132CD9DE327A6466ADBA8ED66CAF4C3619CCCF439036A +C79828F7F6CA8FA0E6BF1156589D5FCA0180A8E40B9BD937C20A3759C4A5D2CD +AF6065B9B04660DA644AC7812348F005614E3E68F34FFD9CE2A8D4BD457EF076 +B53F1AD0855916BB95532FA2191B5AFF57E34028A2438363A281D4A8A17C7271 +73C772DC4E1E13214B8C8FDEE2535C68728AB24D9D1A966B745FF6DB0347B907 +92EAFEF9B76EEDF4A9D21D77E48DA53AE70D4B82C2F170D746667AA7560481D9 +953DC48BD52240ABC2CCA770150E0766F6D2CD68D3C6C98A216CFDAC5F7AA074 +439A23338CCBE958C09B80A1114492669E06A8B59F11E09A06D5CA95F5079CE7 +1F05A6C757F2E7E77063BE425D4F9C231774326C5F474662DA165929D06DC06E +5EB521CCD55445C0D8D309CD4E86DCC01BCBED2461536DD64C8EFABAE3113080 +33756075E86C360F5172C2AE9751E166E095C2768C6F78D2F034D7B8AAEB4AF1 +5AF5455B393ABDA883E40430EADF998233BCFF3FEB60BE426FA32BBF703087D5 +162A205F35C5EE5B495C818576E0A0D0185C46B2261D0A3AE5581AFC867F0421 +33EFA2AAD59FF5F4B28B4237BE6EA30F411C480A5419E88FFFF6F71CFBF524B7 +3373C8779F3D38348202046FF56A9AA81DE74452FB2B4D74FF664484128E9773 +3828C9CBC64ED407B4D249DFD88E4C6059E3A0EF0F78C477D9173A8AAAF3C2C0 +4442D24EE56A41796E1F022625F147350D01A2941005D7D76466C09F72B4C6EC +2ABEC87DCB93686A9490D123996F2E0233A4D5789606C1DF88FA1E2346334FBE +8C2F1D0604EFB1480D7D92C60EF352B98D40E529D1FA9BFC08E65ABE99E9A3A7 +ECBD6640D103D25F7CA7C3746DDE20F8872E34CE5CE1A5D705F26505607B534B +D1E2EFF16A88B21785BCF5C0C7C94EF71D7F5B70C1CD648F79A0D62E8DD798AF +78A6BE13AF22426C6A3F84E74AEDF294FBC6CECC7DA03263BA8D3BECEB51E07E +5183C9714D421273EEA1786FCF2136FB35200F39403247204A93D8DD0E061A70 +FD3FAC8DE2941B0790D1286E70BB164B608F663157B36B92D9FBF4806AC5C85C +83D3AADDA9B5ADC8801F54DFACBD443D0671EFCC98638D5AA83640991C468B02 +050576A22700A7D253C080847012A5D12AFE1F64E9CEB0A8BD9D9835BE9DFD73 +C08F415F9FAC16E7335CFAAD30916DA2208A1A1D92D94CC43FFE83536320607A +AE216F2423F1C44F3EEAE597C614DE23A4F5AD0E0EEC702DDB0B681518AC2661 +83D85D58BA9351FDFAEDCEE6A657F3013D10FB108BEC655DDDD2B292A0DBA305 +76E08D8776153981BD805B191643C49FE7F112ECCF33887E05208CFDA3035E7C +53DE8F2DC368F3EFD64A5FF94EB46372FFC5C3600A5EB79F6D55F0F5EE536255 +564E3D4605CD5513812E00C02E68AE770FC74B5D2B474EB11257CE60B2EE5385 +8D79B59B8E57FEA51662D012044EB1E759424B00D6E3C9B60F760629AA6B3C71 +AE02C0D5E8EEF62B316E200F2A65DFEA797673AB9DBDB269675F4EBE0AEE8A56 +938B7ECFB5D0818831CD99DA461145B2A7733400650880C582B5FE0A7F65373B +9F06931E17B0E338C9749913C4416B1A2948672B5920AC7394BD49B512A96788 +EA25AEB8111D7B1010F78A6F0568BCC2A92E3E13569EDEAE5E6AA4BD2DB61687 +C271F6FA05A7374E156C580483B5AB1C352BB2FF2FA68BFA681E8C4FDEE4D8D2 +A794254B3340FA82B3A4D373D2780C7404F3E1C58EBF35C235D47A67094E2982 +2D2CEFC9D4546127FE445ADDBA25BCEE039D86874BE5D3A8B35C8E6DE6D7C751 +F91DD71BA744782C422C2A4410CCDE106C17BE390D58480565FB9C382AD36D2B +674DC1AD7A72D3E61AC694509ACE0D0CD0BD0DDB3E4C54B026A803A82973D875 +13DCD6A5D33A89893C0E1B03EF1BA703753969925B835D1EA598ED1C464CBBDC +DE0048DF3B5597B9A8B69620721016D72F217EFE031C690E78F55AB9F25D50FF +0A9313DBF049CC299B66741668FB6602A8FDA41791BD90D61C039D8181CF9CDF +E0E400EA339267C6DE2B6787385714C53DBFD8A3B11FA8ACDFD1D9E1DCFB9F00 +823AA131B63CBC3CA7838A410BB79A777E7AFF2E94539E6CC4F644558FAF742A +7D96591496EF10E5B4D9197B6B8A1DF530DE579F6198EAAC693E8E4342283898 +D809C1EEC0EAA25D8F9D2483255F3EABC9FB4E9EE501077C2611A4A9C37304D5 +9DA262A5A272E1FAA9A4691C5A2D095042C4A0E81003B4A3D9C3D53A88DEA774 +1880BEE754D33DFAF8058A7919DB3F3EDC3B565F8E86E231557A4D48FF9722B9 +905631EEE5331EB628B68553279CF12D3B124FDA6C82CC741E45456A5152685D +7656D0373F3BE63445DAE733E6271FF786DC1CEB0F76286F8B1BB3E4EF745C7D +D64916DFD010A1754C6BF0F1545E865924F6FC60B8B36901C9984A2123144EF5 +DF3ED789DFE1C2A9C8C4165771BE0475238D78BC3C4B89E1281B842C9484BCED +9C04781D867F142E4CD8870ABED25BD99CACC7E16762CB89D83C32DAE0BB4A43 +BA2CD338F47DAA89524529F276664C563C23EBED3A46A3A1837BE45FA0D92C74 +7D2F624AC5379325AAD79C73AD35C55952BEB47D938E1E069530AD71A19CC017 +6F215945A8299281E8D603884F30D948F583BDF3D0634511D24EF5F81CB639DB +EF876929DBD5882BE184D9FD1DAEDE8CE9BBBF0650B820B94F8FB1DE9C72317D +A3CB6D4018B5DD3F15658121816266243E5576A9593F6CEB97A3DA96EE7A0913 +C67E9C7E67EA60618250E53A4922B087DCEB67A6FD88A38B95F2905878074EC7 +2EEE2E47986F5B4DE3E734CB12C635435D1F3CB9FB73AB976B4B62B50029D650 +BCCB5CB2C16912C7798DBA5A10E05BE321E0D8141760CD4A71A58615503624CA +D18653A8051F18BDA8530020883188513B44ACB06C51761A69A9454264B4353E +3C691FD15BC6490AACD307018B211C444A3BA2DFBE64B4554589C3EE03985ED6 +19964D980CBF18EF329C905B1562D07A476592161431BB9C13DD616C324856B1 +D99367903981A959D6544C668FF56A11A4E6A8F137CCF811C08760C335EACD7A +896DEB339070364757DA87D674AEC3CF2B73A907972111AD235E3E687BEBEFC4 +1B9E0244FE67A10C1F1F483C25A077440357190D8C23086A468DF5F204C4E77D +A99E44D25F84F187759F801DB1E823042391062DC6CDB515AD7468A21E67BD8D +531DDA55A4484C5737393AC599F7142DCF408D39E6F21FEEA1E255ECAB4880CB +BD30235F6A06D8B85BB96C496BB4945B5D869D03AE23CD53592B1CC9E603D198 +9636D1EEF8CC323D05A4D115DF2050D0336EB847FD254C6DD87DB1C16F957637 +1328D89FD3E824277B47F4D184292023F7164FC817402915AD18EA5FDDC0E568 +484B69C1BD707EE0F17E99F841A003ADA952DA003D7E3015F7CD6671C99866C0 +38AA0004C4EC22083FC499B2D54426D73F355FC40CE9FF0F4FF898D3ACF54CE9 +F5C35329EA8C3D8342C375E94D76746321EC3C2C41CBC5C99111D35BDA763A95 +F3E087E544B8FF99442822D00C64519AFF28A4567239251D7F857CB66C411A92 +3EB1A627B5DF96AE5186F2A2C6DC3599EAE470E9D5E4DD51AA51DB6CE0DF132C +C49E2267E3AE73A37974CAF206FAA471502CA50DD99A02D23E0BD2ADA02DB11A +FAA4F1CC935ED0CC09366A347B5C102485247803980B88F87068DADC477EA546 +BED59BAB0DD6C146EE76891DC7AF56D87C5128C6B026ACFDDD40F9311848F1B0 +3745D94A521C53F96169EB060AA88AC19762B7BA18298A7E6783CFCE246A8162 +EFF4A3FF1D589C7B4F24C60E04F073882A3B7AEE9517DB1673E86353F8C7A2DC +C7450175350658583C38546D7171A7D9A2F95961622E5DE16BE57FDC37FCBEF3 +17D5EFFB641A127B76B0E210782DCB7A6D9C8FF97727B7CB885E77DE90BB77B7 +93E59B9B05EFAD7EA49396A590F926F0E3EED3C3D00B3469C45234E48E5A3C70 +95F6B06783446665A1FF599209988DF2E14C8A4EB6B4DDA0C919A73FBC5DD48F +278AADF0F2DC3B1AD4D5177A751B206455B2B8180A7D0A6CA16A2CFD6F042800 +0A51B62EDF48A50FC30534DE393F56298C446FDA0E2688619D25DDA39512E5C3 +07DBD0AFA890DEF8377901E3D083FD5E041DE516800D366760CF2F60EA788F38 +E31229C576DC3C2ACE277621BF3E1945A8AEE7F64F590C6E9BD7B8182F0E7052 +0B04E382A9D021E2959A4A7B7F0B8153D1815FE44491EFEB187C484CFF9470AB +9760044720C74C13499D52860603439FE20AAFBC968A7085BF7903715A103390 +408DF7BF7F5AABD26E640BC4ACC9AD5A5420EAAE93C01C54D4774ECE5AD5DAC0 +A375696AE02782C54006A6C5E7AB2376DD3CF580DC319BD8AF07556B3198F678 +4690576921D1DA4E8CA6E8D2AB24144BE55C0CAAA29FE540DBEDE0FA19CE4915 +F7FDC6F3D415C163159AA840EDDBF61A32DA2282BB6F7BE3C0B25B97D6F33B9D +ADB359E7FE393FD07F66A90F24CBDF65ACA58991D236BF55E70F0F83EEEFFA7B +BD9280C77836ACA05F62087D87FC851BA3FAA9B4828C1C04DF4874B08134AAC0 +D7375DFE924480A118551247A787F46701484F13B78CBF53C4E2505E9BDB4A6D +46EB367B6C592BEF0C4F0435F6AA1AB16EFE3CFFF2E0EF873878EAEFD8F7BC46 +91442950C720410F21132F1CC1072DD9AA0732E7A808A4B4DB0EF4C0FC4075B5 +3E05559438311C575D06FFE434832932457F14A3B344822DB9251781B4AE7130 +C6BD78F20AE92800782012B65AA2F50E5F586481E2B2555F9E220636BD042219 +6D0ED63BC5A1C9745AEAA322848605D0A21BFF7063668D4424603C3B7BBA7E77 +1A487FDBA58C679B6EC246740FDC50E965504B13EE43757B8D7021C6DEFD5D89 +A6F0CCA97767C20D1B8A3AE2603A32DCAB67CDB24563811976850786CE6555A3 +C4E05C5144F6BB540C67C6AAAB1549C698E67953F6C723072D000128F5972331 +FAF75692D9C468365C2D314617C1A9ED01621C246202A838A5C090722A93C946 +39FE88C132E81ADB3057B068E5AAB73388F11281B4464C70FA539E5DB5600431 +46F3B5F9708F0A702C59D022A3E490BD13F1163841408D5FE0296E3787DC7824 +D7DF4D1F51DD1D691B9116EBD597A15E991686B587C34B99D48DE220E4DE678F +70C18D63A8A928EAF6D4020BB86ED766CED705064CA178108F824E69D23948B3 +918D8990A9DA0D5BC6BB6BFAB120C4116C4E3748BAFC59774D2E2B1E54E28356 +1223B92E55DD1C38C7992EAE97499342C34205EA9D78962228312BC8544C4C35 +64A7B9F0995EF130FCDF4A6AC271B238CCF2F14ACFAF2C52CF5E88D94427B59D +3CA2192E072E60AE68635AA43B4CCD84818F8BA3BE6E7C3A12141B051EC066CE +F22B72F32F7DB4C2DE9641473F2E7DD67B3016360293C495AACB39D0D09EE8A5 +829EA662A480655AF4372BC006D9000553BF51BCD2820759776AF30A58A4CD01 +F909C84B66320F657E59932B16CBB4660F30003F8D537358C07F0534C0EA2E9A +93632315A142C322159D6E8C243767FCD9A6AE5E44608F1C546D6F14988C289E +F724AD9706E1AC8B8B69525F1D9A1EF2123C1E226F34D8CD54B0A5831EFFAC4E +824F342E25FDD64C8095CB7E0B077CAB654DD5CD8410B2B776C750F4A03198C3 +60D50F2091D26CA50C3D1EADD19A4474152013C0A7C4395C43A67DE232D21B96 +44F30F6A33B7A6E515705F50730FAE828CB828A83C6245F29BA4BDB0F2DED3D9 +4D1247CC5844DB55A42D11BD6D5D2A36FE316C0287789955B81B32B2C7BC490F +78021F2667D4F0C866F5FE119A416CC10AD5E0E66BA57EDA546299E6FEC3D74B +C1A0144D3759CE48361B442546425E1A5BADCB653F888EA9005B1BCBBE61F117 +F7DB7003CEB38EC717D97CB107E8C36D5C9CBDA7A64CBA9DCA6F4D37C72A754C +54D7E98B45EAEBF36FEA9617EE21BE9302AE83F8D63ACCC2ED2A930A9A506823 +8D402F62664DCFF4A30AD57E7CCD617EE8D65EA164C3A6258937E76BF1CF6F9E +DE29CC5CC415DA1CAC77E47EA11F0581403207A4BA16C060AF0B7EBBAB4CB949 +EB01F91C29151CDC84940BFF14BB524DEB28A0BC04D3435B9BC2ADCB20FDB237 +4719C73156BFD458ED3203A03C7E2672D96D77D3392455E51664AC15EBCA25A0 +700BB1D41AB6787C8B5B8247445B02394EFADBEEAC50950266C8B5D412590C1F +CE473FBC668B9E34BFB993AEC72FFA4C0404D845AB9A7015617E314CF30EA7FE +D55ABB0566CF07BF9EE798FAA2DAC7DB46AF29BAF4336BA55380CA606784ADBC +1557AA647220FF1545D4932A5F1DC343AA1CEBE547EAF0CBFB3073614D0D9529 +499884742FC1564657BF85E7CDF0B4A808CF72E7795628DC27FB352A88E9EEF9 +A1F87518E565B56ACE1B38268E1A145B3D337DC708E43C5531E392BEE0C88675 +29A7A7F0AF6C8463036B9F0BB3F13EE9D80E7FEEC301136C6B9B8127B0796A56 +7A649DF11FA433BACC73C9119055962D0B4B9D8357E7D85F0AD462E498F492B0 +56A39629217CCFBA0A2D64E614E49CF82D2A07264069FC97A9D3CB23AEA7AF41 +276B91EFBC9D29996E78C35F5C5E2D55F8EF74743CBF70B30F99152C4CCF3B89 +7E63CF273D8A7A144DD378E349057DAC564A504C779F2302CAD97D3DDE96F547 +3C825E38DF9D5B8B7AA92992EC0DA0435C45F5B11A25E8AB8EF8686644046B5D +5EE08DCCB9F0C63C2BBD9F86F9EA6A1A75F430393DBD276D89A46632B5F4806F +E2AC2AF6FA72EB3B63CD97E10A41D74C861DF50B269E9ACFF80AB7103E6FDA0D +221D90E26BE737901DD5360000F4C66930DCAA8F564DEEB7D9B33DEB663A3F0D +B19EEB5F2F137DA03DAA25547C56CAF187C3877C1E272D126D7AF5185C7E4590 +108BD19DB3BA70888E7E24DD0AF9723598E5722716BAAAC7CEC44B42FA3EACD6 +7AC8F81A9EE1551AC9D67A8BC2FC07B40B61CFB0375DF2554B69AF994DC56255 +E7288CC7264487DF62510042005EA32B0152DE4B6DDB72C4C5C5FB8D4C6E0B99 +9583A88B94EBE302AC43874B57D903535068B731E18FD1097B43A18097D19373 +C7BEDCC310BBF683C7A7ED3DF6248219AD63E6A064FF9300CDDC6689213415E8 +2B65787B1D62B3194A64F2B9F4BC98C6F1D0090647288965E5A3AD841A88ED68 +1A0A7C27E6A17FF9AF31881F9A6EAD18688A473D74D9382688938BC9806DCB42 +2537E5897E6E3AC020325942FA482C9EFB6C1BA346C8B0FC3A5E8B8A5B66C8BC +4589DA12816201A2BD7FADC77B30B992CFCA4FEBD70834E20A00F557C2EEDC1F +3A66D6B459C763B39E2C6E5858E4DAC6CFF97C5775B5590C621755ABE64EFCC8 +A3C6B093EEA54ADE8943D533000DA3AA06A0CE15AC5EF05E1892E7AE5A0819FF +C01D58C56F99B67588BC1D35181998C99F13D0B931B3A059D42F6501DF04888E +00BDCC4515D4C10986ABF47697808223FD2D5653BCDEEF74179237BE8E90E832 +F98302AE9F1926A90BD6A7BF826FEBFF898CFDDDDDDDCDBEB8366B95780DF205 +42766E31290F09775D684B4F3102C6F17B8798DD03A07893720F8DAC799001BB +E53E6E249420D739B686CC979EADFE335A71517B505E4088640FB2365FEC3A3A +536EBD10C64F6472F46E6789A9022F61FD39E99A34FEF7F8A77AD8B4277C20E9 +21F6ECF7C0272DF3E8EB1282D80CDA9A7ABBF4553787EDA5D87772DF5F17ABAE +BE0F4485121EF3CA4C2E484F56EBDEC8445FB13BEBC70E427428C746E979C8BE +BA1409FD47C8A8CCAECBD762A2A9EC4DBED06320782CE1D516ECF8A4B4C0F515 +68257E14FDA7CFFC8B2EEE670C3F0867A9D0F2AE01DF1B2E99FAFB707D0C7752 +96E05956C8D4E1FB350EEEF51D557ECF9406DF03DAC8F475389B447BAC94AB39 +1AF3F3EC487506CFCEC37945FBC56226E98BF406AFDD02A0713F7B089D3E7EBC +F11E5ADF5C2953873F8DFAA42AF78360B3D9D03238291736006506D31C121145 +DA6CB0AC8C11B02CD04E1A4C01E4C1B5EF7467BD42160DF83515640D6B0D9BA3 +E8C9F9D3A1010C2AC7F50BD2329AD2BE095525964B1FD4B317A747C91674990C +A0FE282E204A58A3C08AE386CAA8 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -4487,66 +4141,78 @@ A4AD033778741EEF0A55CEA96ABD06FAC4A1F2E973E8969566231CD704AD7632 cleartomark %%EndFont TeXDict begin 40258431 52099146 1000 600 600 (bashref.dvi) -@start /Fa 130[62 1[62 123[{}2 119.552 /CMTT12 rf /Fb -133[34 41 41 55 41 43 30 30 30 41 43 38 43 64 21 41 23 -21 43 38 23 34 43 34 43 38 8[58 2[58 1[43 57 1[52 60 -58 70 48 2[28 58 60 50 1[59 1[54 58 7[38 38 38 38 38 -38 38 38 38 38 3[21 31[43 12[{}54 74.7198 /CMR9 rf /Fc -209[24 46[{}1 74.7198 /CMTI9 rf /Fd 134[39 39 2[39 39 -39 39 2[39 39 39 39 2[39 39 2[39 3[39 19[39 27[39 39 -2[39 45[{}18 74.7198 /CMSLTT10 rf /Fe 129[39 39 1[39 +@start /Fa 130[62 1[62 123[{ TeX09fbbfacEncoding ReEncodeFont }2 +119.552 /CMTT12 rf /Fb 133[34 41 41 55 41 43 30 30 30 +41 43 38 43 64 21 41 23 21 43 38 23 34 43 34 43 38 8[58 +2[58 1[43 57 1[52 60 58 70 48 2[28 58 60 50 1[59 1[54 +58 7[38 38 38 38 38 38 38 38 38 38 3[21 31[43 12[{ + TeXf7b6d320Encoding ReEncodeFont }54 74.7198 /CMR9 rf +/Fc 209[24 46[{ TeX74afc74cEncoding ReEncodeFont }1 74.7198 +/CMTI9 rf /Fd 134[39 39 2[39 39 39 39 2[39 39 39 39 2[39 +39 2[39 3[39 19[39 27[39 39 2[39 45[{ TeX09fbbfacEncoding ReEncodeFont } +18 74.7198 /CMSLTT10 rf /Fe 129[39 39 1[39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 -39 39 39 39 39 39 39 39 39 39 39 39 1[39 39 39 39 39 -39 39 39 39 39 1[39 39 39 39 39 39 1[39 39 39 39 39 39 -39 39 39 39 39 39 1[39 39 39 5[39 39 39 39 39 39 39 39 -39 1[39 39 39 39 39 1[39 39 1[39 33[{}81 74.7198 /CMTT9 -rf /Ff 138[39 27 28 28 1[39 1[39 2[37 22 4[31 1[31 1[35 -5[20 6[51 39 52 1[48 3[44 5[46 48 54 51 50 53 15[35 3[24 -5[20 39[{}26 66.4176 /CMR8 rf /Fg 150[30 30 104[{}2 74.7198 -/CMSY9 rf /Fh 135[61 2[61 1[46 2[56 63 5[30 1[64 2[62 -52[55 47[{}9 99.6264 /CMCSC10 rf /Fi 140[56 3[56 56 1[56 -2[56 56 56 57[56 45[{}8 109.091 /CMTT12 rf /Fj 134[48 -48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 -48 48 48 48 48 48 1[48 2[48 3[48 3[48 1[48 1[48 1[48 -48 48 1[48 48 48 1[48 48 48 48 1[48 6[48 6[48 48 48 48 -2[48 2[48 2[48 39[{}50 90.9091 /CMSLTT10 rf /Fk 134[65 -65 89 65 68 48 48 50 65 68 61 68 102 34 65 1[34 68 61 -37 56 68 55 68 60 34 6[93 1[127 1[94 85 68 92 92 84 92 -96 116 74 96 1[46 96 96 77 81 94 89 87 93 1[58 4[34 61 -61 61 61 61 61 61 61 61 2[34 41 34 4[34 26[68 72 11[{}64 -109.091 /CMBX12 rf /Fl 135[56 2[56 54 42 55 1[51 58 56 -68 47 1[39 27 56 58 49 51 57 54 53 56 46[50 2[50 1[34 -45[{}23 90.9091 /CMCSC10 rf /Fm 135[42 1[42 1[30 37 38 -1[46 46 51 74 23 2[28 1[42 1[42 46 42 1[46 50[28 33[51 -12[{}18 90.9091 /CMTI10 rf /Fn 209[43 46[{}1 119.552 -/CMBXTI10 rf /Fo 134[85 85 1[85 90 63 64 66 1[90 81 90 -134 45 1[49 45 90 81 49 74 90 72 90 78 10[122 124 112 -90 120 4[153 97 1[83 60 126 1[101 106 124 117 115 122 -7[81 81 81 81 81 81 81 81 81 81 35[90 94 11[{}50 143.462 -/CMBX12 rf /Fp 200[0 21[91 17[45 1[91 12[71{}5 90.9091 -/CMSY10 rf /Fq 134[48 48 66 48 51 35 36 36 48 51 45 51 -76 25 48 28 25 51 45 28 40 51 40 51 45 8[68 93 1[68 66 -51 67 1[62 71 68 83 57 71 1[33 68 71 59 62 69 66 64 68 -13[45 45 45 3[30 2[45 27[76 1[51 53 11[{}54 90.9091 /CMSL10 +39 39 39 39 39 39 39 39 1[39 39 39 39 39 39 39 39 39 +39 1[39 39 39 39 39 39 1[39 39 39 39 39 39 39 39 39 39 +39 39 1[39 39 39 5[39 39 39 39 39 39 39 39 39 1[39 39 +39 39 39 1[39 39 1[39 33[{ TeX09fbbfacEncoding ReEncodeFont }81 +74.7198 /CMTT9 rf /Ff 138[39 27 28 28 1[39 1[39 2[37 +22 4[31 1[31 1[35 5[20 6[51 39 52 1[48 3[44 5[46 48 54 +51 50 53 15[35 3[24 5[20 39[{ TeXf7b6d320Encoding ReEncodeFont }26 +66.4176 /CMR8 rf /Fg 150[30 30 104[{ TeXbbad153fEncoding ReEncodeFont } +2 74.7198 /CMSY9 rf /Fh 135[61 2[61 1[46 2[56 63 5[30 +1[64 2[62 52[55 47[{ TeX0ef0afcaEncoding ReEncodeFont }9 +99.6264 /CMCSC10 rf /Fi 140[56 3[56 56 1[56 2[56 56 56 +57[56 45[{ TeX09fbbfacEncoding ReEncodeFont }8 109.091 +/CMTT12 rf /Fj 134[48 48 48 48 48 48 48 48 48 48 48 48 +48 48 48 48 48 48 48 48 48 48 48 48 48 1[48 2[48 3[48 +3[48 1[48 1[48 1[48 48 48 1[48 48 48 1[48 48 48 48 1[48 +6[48 6[48 48 48 48 2[48 2[48 2[48 39[{ + TeX09fbbfacEncoding ReEncodeFont }50 90.9091 /CMSLTT10 +rf /Fk 134[65 65 89 65 68 48 48 50 65 68 61 68 102 34 +65 1[34 68 61 37 56 68 55 68 60 34 6[93 1[127 1[94 85 +68 92 92 84 92 96 116 74 96 1[46 96 96 77 81 94 89 87 +93 1[58 4[34 61 61 61 61 61 61 61 61 61 2[34 41 34 4[34 +26[68 72 11[{ TeXf7b6d320Encoding ReEncodeFont }64 109.091 +/CMBX12 rf /Fl 135[56 2[56 54 42 55 1[51 58 56 68 47 +1[39 27 56 58 49 51 57 54 53 56 46[50 2[50 1[34 45[{ + TeX0ef0afcaEncoding ReEncodeFont }23 90.9091 /CMCSC10 +rf /Fm 135[42 1[42 1[30 37 38 1[46 46 51 74 23 2[28 1[42 +1[42 46 42 1[46 50[28 33[51 12[{ TeX74afc74cEncoding ReEncodeFont }18 +90.9091 /CMTI10 rf /Fn 209[43 46[{ TeX74afc74cEncoding ReEncodeFont }1 +119.552 /CMBXTI10 rf /Fo 134[85 85 1[85 90 63 64 66 1[90 +81 90 134 45 1[49 45 90 81 49 74 90 72 90 78 9[167 122 +124 112 90 120 1[110 2[153 97 1[83 60 126 1[101 106 124 +117 115 122 7[81 81 81 81 81 81 81 81 81 81 35[90 94 +11[{ TeXf7b6d320Encoding ReEncodeFont }52 143.462 /CMBX12 +rf /Fp 200[0 21[91 17[45 1[91 12[71{ TeXbbad153fEncoding ReEncodeFont } +5 90.9091 /CMSY10 rf /Fq 134[48 48 66 48 51 35 36 36 +48 51 45 51 76 25 48 28 25 51 45 28 40 51 40 51 45 8[68 +93 1[68 66 51 67 1[62 71 68 83 57 71 1[33 68 71 59 62 +69 66 64 68 13[45 45 45 3[30 2[45 27[76 1[51 53 11[{ + TeXf7b6d320Encoding ReEncodeFont }54 90.9091 /CMSL10 rf /Fr 134[71 71 97 71 75 52 53 55 1[75 67 75 112 37 71 41 37 75 67 41 61 75 60 75 65 3[37 1[37 1[102 102 139 102 103 94 75 100 101 92 101 105 128 81 105 69 50 105 106 85 88 103 97 96 102 105 64 4[37 67 67 67 67 67 67 67 67 67 67 1[37 45 37 1[67 5[67 112 1[41 20[75 78 -11[{}73 119.552 /CMBX12 rf /Fs 129[48 48 48 48 48 48 +11[{ TeXf7b6d320Encoding ReEncodeFont }73 119.552 /CMBX12 +rf /Fs 129[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 -48 48 48 48 48 48 48 48 48 48 1[48 48 48 48 48 48 48 +48 48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 -48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 33[{}93 -90.9091 /CMTT10 rf /Ft 131[91 45 40 48 48 66 48 51 35 +48 48 48 48 48 48 48 48 33[{ TeX09fbbfacEncoding ReEncodeFont }93 +90.9091 /CMTT10 rf /Ft 131[91 1[40 48 48 66 48 51 35 36 36 48 51 45 51 76 25 48 28 25 51 45 28 40 51 40 51 45 25 2[25 45 25 56 68 68 93 68 68 66 51 67 71 62 71 68 83 57 71 47 33 68 71 59 62 69 66 64 68 1[43 1[71 1[25 25 45 45 45 45 45 45 45 45 45 45 45 25 30 25 2[35 35 -25 1[76 45 1[45 25 18[76 51 51 53 11[{}87 90.9091 /CMR10 +25 1[76 45 1[45 25 18[76 51 51 53 11[{ + TeXf7b6d320Encoding ReEncodeFont }86 90.9091 /CMR10 rf /Fu 138[108 1[76 79 3[108 1[54 3[108 1[59 88 1[86 -1[94 14[144 4[184 10[138 66[{}13 172.154 /CMBX12 rf end +1[94 14[144 4[184 10[138 66[{ TeXf7b6d320Encoding ReEncodeFont }13 +172.154 /CMBX12 rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi @@ -4560,7 +4226,7 @@ letter TeXDict begin 1 0 bop 150 1318 a Fu(Bash)64 b(Reference)j(Man)-5 b(ual)p 150 1385 3600 34 v 2361 1481 a Ft(Reference)31 b(Do)s(cumen)m(tation)i(for)d(Bash)2428 1589 y(Edition)h(3.2,)g(for)f -Fs(Bash)g Ft(V)-8 b(ersion)31 b(3.2.)3218 1697 y(Jan)m(uary)f(2007)150 +Fs(Bash)g Ft(V)-8 b(ersion)31 b(3.2.)3218 1697 y(Jan)m(uary)f(2006)150 4935 y Fr(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46 b(Reserv)l(e)g(Univ)l(ersit)l(y)150 5068 y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)-11 @@ -4568,9 +4234,9 @@ b(oundation)p 150 5141 3600 17 v eop end %%Page: 2 2 TeXDict begin 2 1 bop 150 2889 a Ft(This)35 b(text)h(is)g(a)g(brief)f (description)h(of)f(the)h(features)g(that)g(are)g(presen)m(t)g(in)f -(the)h(Bash)f(shell)h(\(v)m(ersion)150 2999 y(3.2,)c(12)f(Jan)m(uary)f -(2007\).)150 3133 y(This)j(is)g(Edition)g(3.2,)j(last)e(up)s(dated)e -(12)i(Jan)m(uary)f(2007,)j(of)e Fq(The)e(GNU)i(Bash)g(Reference)g(Man)m +(the)h(Bash)f(shell)h(\(v)m(ersion)150 2999 y(3.2,)c(26)f(Jan)m(uary)f +(2006\).)150 3133 y(This)j(is)g(Edition)g(3.2,)j(last)e(up)s(dated)e +(26)i(Jan)m(uary)f(2006,)j(of)d Fq(The)g(GNU)h(Bash)g(Reference)g(Man)m (ual)p Ft(,)150 3243 y(for)c Fs(Bash)p Ft(,)g(V)-8 b(ersion)31 b(3.2.)150 3377 y(Cop)m(yrigh)m(t)602 3374 y(c)577 3377 y Fp(\015)f Ft(1988-2005)k(F)-8 b(ree)32 b(Soft)m(w)m(are)f(F)-8 @@ -4582,7 +4248,7 @@ f(mak)m(e)i(and)d(distribute)h(v)m(erbatim)h(copies)g(of)f(this)g(man)m b(,)38 b(distribute)d(and/or)g(mo)s(dify)f(this)h(do)s(cumen)m(t)g (under)390 3866 y(the)j(terms)g(of)g(the)g(GNU)h(F)-8 b(ree)39 b(Do)s(cumen)m(tation)h(License,)g(V)-8 b(ersion)39 -b(1.2)g(or)f(an)m(y)g(later)390 3975 y(v)m(ersion)28 +b(1.1)g(or)f(an)m(y)g(later)390 3975 y(v)m(ersion)28 b(published)d(b)m(y)j(the)f(F)-8 b(ree)29 b(Soft)m(w)m(are)f(F)-8 b(oundation;)30 b(with)d(no)g(In)m(v)-5 b(arian)m(t)28 b(Sections,)390 4085 y(with)i(the)h(F)-8 b(ron)m(t-Co)m(v)m(er)33 @@ -4707,7 +4373,7 @@ Fm(.)d(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)49 b Ft(23)748 4934 y(3.5.9)93 b(Quote)30 b(Remo)m(v)-5 b(al)15 b Fm(.)i(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)44 b Ft(25)449 5044 y(3.6)92 b(Redirections)24 +g(.)g(.)g(.)44 b Ft(24)449 5044 y(3.6)92 b(Redirections)24 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)53 b Ft(25)748 5153 @@ -4772,242 +4438,229 @@ b Fn(.)19 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h g(.)45 b Ft(35)449 2325 y(4.2)92 b(Bash)30 b(Builtin)h(Commands)17 b Fm(.)d(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.) f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)46 -b Ft(41)449 2435 y(4.3)92 b(Mo)s(difying)30 b(Shell)h(Beha)m(vior)23 -b Fm(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)52 -b Ft(49)748 2545 y(4.3.1)93 b(The)29 b(Set)i(Builtin)11 -b Fm(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)40 -b Ft(49)748 2654 y(4.3.2)93 b(The)29 b(Shopt)h(Builtin)23 -b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)52 -b Ft(52)449 2764 y(4.4)92 b(Sp)s(ecial)31 b(Builtins)22 -b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)52 b Ft(56)150 3006 y Fr(5)135 -b(Shell)45 b(V)-11 b(ariables)10 b Fn(.)21 b(.)e(.)h(.)f(.)g(.)h(.)f(.) -h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f -(.)h(.)f(.)55 b Fr(59)449 3143 y Ft(5.1)92 b(Bourne)30 -b(Shell)g(V)-8 b(ariables)11 b Fm(.)17 b(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)40 b Ft(59)449 3253 y(5.2)92 -b(Bash)30 b(V)-8 b(ariables)17 b Fm(.)g(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)46 -b Ft(59)150 3495 y Fr(6)135 b(Bash)44 b(F)-11 b(eatures)31 -b Fn(.)20 b(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f -(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)75 b Fr(69)449 -3632 y Ft(6.1)92 b(In)m(v)m(oking)31 b(Bash)e Fm(.)15 -b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h +b Ft(41)449 2435 y(4.3)92 b(The)30 b(Set)g(Builtin)25 +b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g +(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.) +g(.)g(.)g(.)g(.)g(.)g(.)53 b Ft(53)449 2545 y(4.4)92 +b(Sp)s(ecial)31 b(Builtins)22 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)h (.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)58 b Ft(69)449 3742 y(6.2)92 b(Bash)30 -b(Startup)g(Files)c Fm(.)15 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)55 b Ft(71)449 3851 y(6.3)92 -b(In)m(teractiv)m(e)33 b(Shells)14 b Fm(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)43 -b Ft(73)748 3961 y(6.3.1)93 b(What)31 b(is)f(an)g(In)m(teractiv)m(e)j -(Shell?)20 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)49 b Ft(73)748 4071 y(6.3.2)93 -b(Is)30 b(this)g(Shell)g(In)m(teractiv)m(e?)10 b Fm(.)18 -b(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)40 b Ft(73)748 4180 y(6.3.3)93 -b(In)m(teractiv)m(e)32 b(Shell)f(Beha)m(vior)22 b Fm(.)16 -b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)51 b Ft(73)449 4290 y(6.4)92 b(Bash)30 +g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)52 +b Ft(56)150 2787 y Fr(5)135 b(Shell)45 b(V)-11 b(ariables)10 +b Fn(.)21 b(.)e(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f +(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)55 b Fr(57)449 +2924 y Ft(5.1)92 b(Bourne)30 b(Shell)g(V)-8 b(ariables)11 +b Fm(.)17 b(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g +(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) +40 b Ft(57)449 3034 y(5.2)92 b(Bash)30 b(V)-8 b(ariables)17 +b Fm(.)g(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) +g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g +(.)g(.)g(.)g(.)g(.)g(.)g(.)46 b Ft(57)150 3276 y Fr(6)135 +b(Bash)44 b(F)-11 b(eatures)31 b Fn(.)20 b(.)f(.)g(.)h(.)f(.)h(.)f(.)h +(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.) +g(.)h(.)75 b Fr(67)449 3413 y Ft(6.1)92 b(In)m(v)m(oking)31 +b(Bash)e Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) +g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)58 b Ft(67)449 3523 +y(6.2)92 b(Bash)30 b(Startup)g(Files)c Fm(.)15 b(.)g(.)h(.)f(.)g(.)g(.) +g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g +(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)55 +b Ft(69)449 3632 y(6.3)92 b(In)m(teractiv)m(e)33 b(Shells)14 +b Fm(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) +g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)g(.)43 b Ft(71)748 3742 y(6.3.1)93 b(What)31 +b(is)f(an)g(In)m(teractiv)m(e)j(Shell?)20 b Fm(.)15 b(.)g(.)g(.)g(.)g +(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)49 +b Ft(71)748 3851 y(6.3.2)93 b(Is)30 b(this)g(Shell)g(In)m(teractiv)m +(e?)10 b Fm(.)18 b(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g +(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)40 b Ft(71)748 +3961 y(6.3.3)93 b(In)m(teractiv)m(e)32 b(Shell)f(Beha)m(vior)22 +b Fm(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g +(.)g(.)g(.)g(.)g(.)g(.)51 b Ft(71)449 4071 y(6.4)92 b(Bash)30 b(Conditional)h(Expressions)20 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.) -f(.)49 b Ft(74)449 4399 y(6.5)92 b(Shell)30 b(Arithmetic)f +f(.)49 b Ft(72)449 4180 y(6.5)92 b(Shell)30 b(Arithmetic)f Fm(.)15 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)h(.)f(.)g(.)57 b Ft(76)449 4509 y(6.6)92 b(Aliases)25 +g(.)g(.)h(.)f(.)g(.)57 b Ft(74)449 4290 y(6.6)92 b(Aliases)25 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)53 -b Ft(77)449 4619 y(6.7)92 b(Arra)m(ys)29 b Fm(.)15 b(.)g(.)g(.)g(.)g(.) +b Ft(75)449 4399 y(6.7)92 b(Arra)m(ys)29 b Fm(.)15 b(.)g(.)g(.)g(.)g(.) g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)58 b Ft(78)449 4728 y(6.8)92 +g(.)g(.)g(.)g(.)g(.)g(.)g(.)58 b Ft(76)449 4509 y(6.8)92 b(The)30 b(Directory)i(Stac)m(k)15 b Fm(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.) -f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)44 b Ft(79)748 -4838 y(6.8.1)93 b(Directory)31 b(Stac)m(k)h(Builtins)10 +f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)44 b Ft(77)748 +4619 y(6.8.1)93 b(Directory)31 b(Stac)m(k)h(Builtins)10 b Fm(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)40 b Ft(79)449 4947 y(6.9)92 +(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)40 b Ft(77)449 4728 y(6.9)92 b(Con)m(trolling)31 b(the)g(Prompt)15 b Fm(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)44 b Ft(80)449 5057 y(6.10)92 +g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)44 b Ft(78)449 4838 y(6.10)92 b(The)30 b(Restricted)i(Shell)11 b Fm(.)k(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)40 b Ft(82)449 5166 +g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)40 b Ft(80)449 4947 y(6.11)92 b(Bash)31 b(POSIX)e(Mo)s(de)16 b Fm(.)f(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)45 b -Ft(82)p eop end +Ft(80)p eop end %%Page: -3 5 TeXDict begin -3 4 bop 3674 -116 a Ft(iii)150 83 y Fr(7)135 b(Job)45 b(Con)l(trol)32 b Fn(.)20 b(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.) h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f -(.)h(.)f(.)76 b Fr(87)449 220 y Ft(7.1)92 b(Job)30 b(Con)m(trol)h +(.)h(.)f(.)76 b Fr(85)449 220 y Ft(7.1)92 b(Job)30 b(Con)m(trol)h (Basics)23 b Fm(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)52 b Ft(87)449 330 y(7.2)92 b(Job)30 +g(.)g(.)g(.)g(.)g(.)g(.)52 b Ft(85)449 330 y(7.2)92 b(Job)30 b(Con)m(trol)h(Builtins)12 b Fm(.)j(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)41 b Ft(88)449 439 y(7.3)92 +g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)41 b Ft(86)449 439 y(7.3)92 b(Job)30 b(Con)m(trol)h(V)-8 b(ariables)30 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)58 -b Ft(89)150 682 y Fr(8)135 b(Command)45 b(Line)g(Editing)38 +b Ft(87)150 682 y Fr(8)135 b(Command)45 b(Line)g(Editing)38 b Fn(.)19 b(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h -(.)f(.)h(.)81 b Fr(91)449 819 y Ft(8.1)92 b(In)m(tro)s(duction)30 +(.)f(.)h(.)81 b Fr(89)449 819 y Ft(8.1)92 b(In)m(tro)s(duction)30 b(to)h(Line)f(Editing)24 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.) g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)53 b Ft(91)449 928 y(8.2)92 b(Readline)31 b(In)m(teraction)15 +(.)53 b Ft(89)449 928 y(8.2)92 b(Readline)31 b(In)m(teraction)15 b Fm(.)i(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g -(.)g(.)44 b Ft(91)748 1038 y(8.2.1)93 b(Readline)31 b(Bare)g(Essen)m +(.)g(.)44 b Ft(89)748 1038 y(8.2.1)93 b(Readline)31 b(Bare)g(Essen)m (tials)25 b Fm(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)54 b Ft(91)748 +(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)54 b Ft(89)748 1147 y(8.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)h(Commands)13 b Fm(.)h(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -42 b Ft(92)748 1257 y(8.2.3)93 b(Readline)31 b(Killing)g(Commands)20 +42 b Ft(90)748 1257 y(8.2.3)93 b(Readline)31 b(Killing)g(Commands)20 b Fm(.)14 b(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)50 b Ft(92)748 1367 y(8.2.4)93 b(Readline)31 +(.)g(.)g(.)g(.)50 b Ft(90)748 1367 y(8.2.4)93 b(Readline)31 b(Argumen)m(ts)23 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)53 -b Ft(93)748 1476 y(8.2.5)93 b(Searc)m(hing)30 b(for)h(Commands)e(in)h +b Ft(91)748 1476 y(8.2.5)93 b(Searc)m(hing)30 b(for)h(Commands)e(in)h (the)g(History)c Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)54 -b Ft(93)449 1586 y(8.3)92 b(Readline)31 b(Init)f(File)f +b Ft(91)449 1586 y(8.3)92 b(Readline)31 b(Init)f(File)f Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.) -g(.)g(.)g(.)g(.)56 b Ft(94)748 1695 y(8.3.1)93 b(Readline)31 +g(.)g(.)g(.)g(.)56 b Ft(92)748 1695 y(8.3.1)93 b(Readline)31 b(Init)f(File)h(Syn)m(tax)12 b Fm(.)k(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)41 -b Ft(94)748 1805 y(8.3.2)93 b(Conditional)30 b(Init)h(Constructs)e +b Ft(92)748 1805 y(8.3.2)93 b(Conditional)30 b(Init)h(Constructs)e Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)59 b Ft(99)748 1914 y(8.3.3)93 b(Sample)30 -b(Init)g(File)20 b Fm(.)c(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g +(.)g(.)g(.)g(.)59 b Ft(97)748 1914 y(8.3.3)93 b(Sample)30 +b(Init)g(File)21 b Fm(.)c(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -50 b Ft(100)449 2024 y(8.4)92 b(Bindable)31 b(Readline)g(Commands)11 +g(.)51 b Ft(98)449 2024 y(8.4)92 b(Bindable)31 b(Readline)g(Commands)11 b Fm(.)j(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)41 b Ft(103)748 2134 +g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)41 b Ft(101)748 2134 y(8.4.1)93 b(Commands)29 b(F)-8 b(or)31 b(Mo)m(ving)c Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)55 b Ft(103)748 2243 y(8.4.2)93 +(.)g(.)g(.)g(.)g(.)g(.)g(.)55 b Ft(101)748 2243 y(8.4.2)93 b(Commands)29 b(F)-8 b(or)31 b(Manipulating)g(The)f(History)17 -b Fm(.)e(.)g(.)g(.)h(.)f(.)46 b Ft(103)748 2353 y(8.4.3)93 +b Fm(.)e(.)g(.)g(.)h(.)f(.)46 b Ft(101)748 2353 y(8.4.3)93 b(Commands)29 b(F)-8 b(or)31 b(Changing)f(T)-8 b(ext)29 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -58 b Ft(105)748 2462 y(8.4.4)93 b(Killing)31 b(And)e(Y)-8 +58 b Ft(103)748 2462 y(8.4.4)93 b(Killing)31 b(And)e(Y)-8 b(anking)16 b Fm(.)g(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)46 b -Ft(106)748 2572 y(8.4.5)93 b(Sp)s(ecifying)29 b(Numeric)i(Argumen)m(ts) +Ft(104)748 2572 y(8.4.5)93 b(Sp)s(ecifying)29 b(Numeric)i(Argumen)m(ts) 23 b Fm(.)15 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)53 b Ft(107)748 2682 y(8.4.6)93 b(Letting)31 b(Readline)g(T)m(yp)s +(.)53 b Ft(105)748 2682 y(8.4.6)93 b(Letting)31 b(Readline)g(T)m(yp)s (e)f(F)-8 b(or)31 b(Y)-8 b(ou)18 b Fm(.)e(.)f(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)48 b Ft(107)748 2791 y(8.4.7)93 +(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)48 b Ft(105)748 2791 y(8.4.7)93 b(Keyb)s(oard)29 b(Macros)10 b Fm(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.) f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)40 b Ft(108)748 2901 y(8.4.8)93 b(Some)30 +(.)g(.)g(.)40 b Ft(106)748 2901 y(8.4.8)93 b(Some)30 b(Miscellaneous)i(Commands)12 b Fm(.)i(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)42 b Ft(109)449 3010 y(8.5)92 +(.)g(.)g(.)g(.)g(.)g(.)g(.)42 b Ft(107)449 3010 y(8.5)92 b(Readline)31 b(vi)f(Mo)s(de)c Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)55 b Ft(111)449 +(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)55 b Ft(109)449 3120 y(8.6)92 b(Programmable)31 b(Completion)12 b Fm(.)j(.)g(.)g(.)g(.) g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)41 b Ft(111)449 3230 y(8.7)92 +(.)g(.)g(.)g(.)g(.)g(.)g(.)41 b Ft(109)449 3230 y(8.7)92 b(Programmable)31 b(Completion)g(Builtins)12 b Fm(.)j(.)g(.)g(.)h(.)f (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)42 -b Ft(113)150 3472 y Fr(9)135 b(Using)45 b(History)h(In)l(teractiv)l +b Ft(111)150 3472 y Fr(9)135 b(Using)45 b(History)h(In)l(teractiv)l (ely)14 b Fn(.)22 b(.)d(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f -(.)58 b Fr(117)449 3609 y Ft(9.1)92 b(Bash)30 b(History)h(F)-8 +(.)58 b Fr(115)449 3609 y Ft(9.1)92 b(Bash)30 b(History)h(F)-8 b(acilities)11 b Fm(.)19 b(.)c(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)41 b Ft(117)449 3719 y(9.2)92 b(Bash)30 b(History)h +g(.)g(.)g(.)41 b Ft(115)449 3719 y(9.2)92 b(Bash)30 b(History)h (Builtins)9 b Fm(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)h(.)f(.)38 b Ft(117)449 3828 y(9.3)92 b(History)31 +g(.)h(.)f(.)38 b Ft(115)449 3828 y(9.3)92 b(History)31 b(Expansion)d Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)58 b Ft(119)748 3938 y(9.3.1)93 b(Ev)m(en)m(t)31 +g(.)g(.)g(.)g(.)g(.)58 b Ft(117)748 3938 y(9.3.1)93 b(Ev)m(en)m(t)31 b(Designators)21 b Fm(.)c(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)51 -b Ft(119)748 4047 y(9.3.2)93 b(W)-8 b(ord)30 b(Designators)g +b Ft(117)748 4047 y(9.3.2)93 b(W)-8 b(ord)30 b(Designators)g Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)58 b Ft(120)748 +(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)58 b Ft(118)748 4157 y(9.3.3)93 b(Mo)s(di\014ers)27 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)57 b Ft(121)150 +g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)57 b Ft(119)150 4399 y Fr(10)135 b(Installing)46 b(Bash)30 b Fn(.)20 b(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f -(.)h(.)f(.)g(.)h(.)f(.)h(.)74 b Fr(123)449 4536 y Ft(10.1)92 +(.)h(.)f(.)g(.)h(.)f(.)h(.)74 b Fr(121)449 4536 y Ft(10.1)92 b(Basic)32 b(Installation)d Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)57 b Ft(123)449 4646 +g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)57 b Ft(121)449 4646 y(10.2)92 b(Compilers)30 b(and)g(Options)22 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)51 -b Ft(123)449 4755 y(10.3)92 b(Compiling)31 b(F)-8 b(or)31 +b Ft(121)449 4755 y(10.3)92 b(Compiling)31 b(F)-8 b(or)31 b(Multiple)g(Arc)m(hitectures)12 b Fm(.)k(.)f(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)41 b Ft(124)449 +(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)41 b Ft(122)449 4865 y(10.4)92 b(Installation)32 b(Names)22 b Fm(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)51 -b Ft(124)449 4975 y(10.5)92 b(Sp)s(ecifying)30 b(the)h(System)f(T)m(yp) +b Ft(122)449 4975 y(10.5)92 b(Sp)s(ecifying)30 b(the)h(System)f(T)m(yp) s(e)11 b Fm(.)k(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)41 b Ft(124)449 +(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)41 b Ft(122)449 5084 y(10.6)92 b(Sharing)30 b(Defaults)21 b Fm(.)16 b(.)f(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)51 -b Ft(125)449 5194 y(10.7)92 b(Op)s(eration)30 b(Con)m(trols)12 +b Ft(123)449 5194 y(10.7)92 b(Op)s(eration)30 b(Con)m(trols)12 b Fm(.)k(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g -(.)41 b Ft(125)449 5303 y(10.8)92 b(Optional)31 b(F)-8 +(.)41 b Ft(123)449 5303 y(10.8)92 b(Optional)31 b(F)-8 b(eatures)17 b Fm(.)g(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)47 b Ft(125)p eop end +g(.)g(.)g(.)g(.)g(.)47 b Ft(123)p eop end %%Page: -4 6 TeXDict begin -4 5 bop 150 -116 a Ft(iv)2589 b(Bash)31 b(Reference)g(Man)m(ual)150 83 y Fr(App)t(endix)44 b(A)99 b(Rep)t(orting)46 b(Bugs)12 b Fn(.)20 b(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f -(.)h(.)f(.)g(.)h(.)f(.)h(.)56 b Fr(131)150 353 y(App)t(endix)44 +(.)h(.)f(.)g(.)h(.)f(.)h(.)56 b Fr(129)150 353 y(App)t(endix)44 b(B)105 b(Ma)7 b(jor)46 b(Di\013erences)g(F)-11 b(rom)45 b(The)f(Bourne)419 486 y(Shell)17 b Fn(.)j(.)f(.)h(.)f(.)h(.)f(.)g(.)h (.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.) -h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)61 b Fr(133)449 623 +h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)61 b Fr(131)449 623 y Ft(B.1)92 b(Implemen)m(tation)31 b(Di\013erences)h(F)-8 b(rom)31 b(The)f(SVR4.2)h(Shell)21 b Fm(.)15 b(.)g(.)g(.)g(.)50 -b Ft(137)150 865 y Fr(App)t(endix)44 b(C)104 b(Cop)l(ying)46 +b Ft(135)150 865 y Fr(App)t(endix)44 b(C)104 b(Cop)l(ying)46 b(This)e(Man)l(ual)27 b Fn(.)20 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)71 -b Fr(139)449 1002 y Ft(C.1)91 b(GNU)31 b(F)-8 b(ree)32 +b Fr(137)449 1002 y Ft(C.1)91 b(GNU)31 b(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)27 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)56 -b Ft(139)748 1112 y(C.1.1)92 b(ADDENDUM:)32 b(Ho)m(w)f(to)h(use)e(this) +b Ft(137)748 1112 y(C.1.1)92 b(ADDENDUM:)32 b(Ho)m(w)f(to)h(use)e(this) g(License)h(for)f(y)m(our)930 1221 y(do)s(cumen)m(ts)c Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)56 b Ft(145)150 1464 y Fr(App)t(endix)44 -b(D)98 b(Indexes)36 b Fn(.)20 b(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h -(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)79 b Fr(147)449 -1601 y Ft(D.1)92 b(Index)29 b(of)i(Shell)f(Builtin)h(Commands)21 -b Fm(.)14 b(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)51 b Ft(147)449 1710 y(D.2)92 -b(Index)29 b(of)i(Shell)f(Reserv)m(ed)h(W)-8 b(ords)13 -b Fm(.)j(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)43 b Ft(149)449 1820 -y(D.3)92 b(P)m(arameter)32 b(and)d(V)-8 b(ariable)32 -b(Index)21 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)51 b Ft(149)449 -1929 y(D.4)92 b(F)-8 b(unction)31 b(Index)19 b Fm(.)c(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)49 -b Ft(151)449 2039 y(D.5)92 b(Concept)31 b(Index)9 b Fm(.)k(.)j(.)f(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g -(.)38 b Ft(152)p eop end +g(.)g(.)g(.)56 b Ft(143)150 1464 y Fr(Index)45 b(of)g(Shell)g(Builtin)h +(Commands)27 b Fn(.)19 b(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)71 +b Fr(145)150 1733 y(Index)45 b(of)g(Shell)g(Reserv)l(ed)h(W)-11 +b(ords)41 b Fn(.)20 b(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h +(.)85 b Fr(147)150 2003 y(P)l(arameter)47 b(and)d(V)-11 +b(ariable)46 b(Index)27 b Fn(.)19 b(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h +(.)f(.)h(.)f(.)g(.)71 b Fr(149)150 2273 y(F)-11 b(unction)44 +b(Index)36 b Fn(.)19 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h +(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)80 +b Fr(151)150 2543 y(Concept)45 b(Index)18 b Fn(.)i(.)f(.)h(.)f(.)g(.)h +(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.) +h(.)f(.)g(.)h(.)f(.)h(.)62 b Fr(153)p eop end %%Page: 1 7 TeXDict begin 1 6 bop 150 -116 a Ft(Chapter)30 b(1:)41 b(In)m(tro)s(duction)2592 b(1)150 299 y Fo(1)80 b(In)l(tro)t(duction) @@ -5049,9 +4702,9 @@ b(term)150 2813 y(macro)29 b(pro)s(cessor)f(means)g(functionalit)m(y)i (language.)55 b(As)35 b(a)g(com-)150 3170 y(mand)30 b(in)m(terpreter,)i (the)g(shell)f(pro)m(vides)g(the)h(user)e(in)m(terface)j(to)f(the)f (ric)m(h)h(set)g(of)f Fl(gnu)g Ft(utilities.)44 b(The)150 -3280 y(programming)30 b(language)h(features)f(allo)m(w)h(these)g -(utilities)g(to)g(b)s(e)e(com)m(bined.)41 b(Files)31 -b(con)m(taining)g(com-)150 3390 y(mands)e(can)i(b)s(e)e(created,)j(and) +3280 y(programming)26 b(language)i(features)f(allo)m(w)h(these)f +(utilitites)h(to)f(b)s(e)f(com)m(bined.)40 b(Files)27 +b(con)m(taining)h(com-)150 3390 y(mands)h(can)i(b)s(e)e(created,)j(and) d(b)s(ecome)i(commands)f(themselv)m(es.)42 b(These)30 b(new)f(commands)h(ha)m(v)m(e)i(the)150 3499 y(same)f(status)h(as)f (system)g(commands)g(in)g(directories)h(suc)m(h)f(as)g(`)p @@ -5066,8 +4719,8 @@ b(shells)c(execute)g(commands)150 3967 y(read)30 b(from)g(a)h(\014le.) 275 4105 y(A)41 b(shell)g(allo)m(ws)h(execution)h(of)e Fl(gnu)g Ft(commands,)i(b)s(oth)e(sync)m(hronously)f(and)h(async)m (hronously)-8 b(.)150 4215 y(The)29 b(shell)g(w)m(aits)i(for)e(sync)m -(hronous)f(commands)h(to)h(complete)h(b)s(efore)e(accepting)i(more)e -(input;)g(asyn-)150 4325 y(c)m(hronous)22 b(commands)h(con)m(tin)m(ue)h +(hronous)f(commands)h(to)h(complete)h(b)s(efore)e(accepting)h(more)g +(input;)f(asyn-)150 4325 y(c)m(hronous)22 b(commands)h(con)m(tin)m(ue)h (to)f(execute)h(in)e(parallel)i(with)f(the)f(shell)h(while)g(it)g (reads)g(and)f(executes)150 4434 y(additional)35 b(commands.)50 b(The)33 b Fq(redirection)h Ft(constructs)g(p)s(ermit)f(\014ne-grained) @@ -5160,13 +4813,13 @@ b(operator)p Ft(.)61 b(See)38 b(Section)g(3.6)h([Redirec-)630 (op)s(erators.)150 4321 y Fs(process)d(group)630 4431 y Ft(A)i(collection)k(of)c(related)h(pro)s(cesses)g(eac)m(h)g(ha)m (ving)g(the)g(same)f(pro)s(cess)g(group)g Fl(id)p Ft(.)150 -4588 y Fs(process)e(group)h(ID)630 4697 y Ft(A)h(unique)g(iden)m -(ti\014er)h(that)f(represen)m(ts)h(a)g Fs(process)d(group)h -Ft(during)g(its)i(lifetime.)150 4854 y Fs(reserved)d(word)630 -4964 y Ft(A)h Fs(word)e Ft(that)i(has)f(a)h(sp)s(ecial)g(meaning)f(to)h -(the)g(shell.)40 b(Most)30 b(reserv)m(ed)e(w)m(ords)g(in)m(tro)s(duce) -630 5073 y(shell)j(\015o)m(w)f(con)m(trol)i(constructs,)f(suc)m(h)f(as) -g Fs(for)g Ft(and)g Fs(while)p Ft(.)150 5230 y Fs(return)f(status)630 +4588 y Fs(process)e(group)h(ID)630 4697 y Ft(A)h(unique)g(iden)m(tifer) +h(that)g(represen)m(ts)f(a)h Fs(process)d(group)h Ft(during)g(its)i +(lifetime.)150 4854 y Fs(reserved)d(word)630 4964 y Ft(A)h +Fs(word)e Ft(that)i(has)f(a)h(sp)s(ecial)g(meaning)f(to)h(the)g(shell.) +40 b(Most)30 b(reserv)m(ed)e(w)m(ords)g(in)m(tro)s(duce)630 +5073 y(shell)j(\015o)m(w)f(con)m(trol)i(constructs,)f(suc)m(h)f(as)g +Fs(for)g Ft(and)g Fs(while)p Ft(.)150 5230 y Fs(return)f(status)630 5340 y Ft(A)h(synon)m(ym)g(for)g Fs(exit)g(status)p Ft(.)p eop end %%Page: 4 10 @@ -5228,14 +4881,14 @@ h(follo)m(wing:)199 3513 y(1.)61 b(Reads)42 b(its)h(input)e(from)h(a)g (\014le)h(\(see)g(Section)g(3.8)g([Shell)f(Scripts],)j(page)e(32\),)k (from)41 b(a)i(string)330 3623 y(supplied)26 b(as)i(an)f(argumen)m(t)g (to)h(the)g(`)p Fs(-c)p Ft(')f(in)m(v)m(o)s(cation)i(option)f(\(see)g -(Section)h(6.1)f([In)m(v)m(oking)g(Bash],)330 3732 y(page)j(69\),)h(or) +(Section)h(6.1)f([In)m(v)m(oking)g(Bash],)330 3732 y(page)j(67\),)h(or) e(from)g(the)h(user's)f(terminal.)199 3869 y(2.)61 b(Breaks)43 b(the)g(input)f(in)m(to)h(w)m(ords)f(and)g(op)s(erators,)k(ob)s(eying)d (the)g(quoting)g(rules)f(describ)s(ed)f(in)330 3978 y(Section)27 b(3.1.2)i([Quoting],)f(page)f(6.)40 b(These)26 b(tok)m(ens)i(are)f (separated)g(b)m(y)f Fs(metacharacters)p Ft(.)36 b(Alias)330 4088 y(expansion)30 b(is)h(p)s(erformed)d(b)m(y)j(this)f(step)g(\(see)i -(Section)f(6.6)g([Aliases],)i(page)e(77\).)199 4224 y(3.)61 +(Section)f(6.6)g([Aliases],)i(page)e(75\).)199 4224 y(3.)61 b(P)m(arses)35 b(the)g(tok)m(ens)g(in)m(to)h(simple)e(and)g(comp)s (ound)f(commands)h(\(see)h(Section)h(3.2)f([Shell)g(Com-)330 4334 y(mands],)30 b(page)h(8\).)199 4470 y(4.)61 b(P)m(erforms)40 @@ -5269,11 +4922,11 @@ e(sp)s(ecial)i(meaning)150 995 y(to)40 b(the)g(shell)f(and)g(m)m(ust)g (b)s(e)g(quoted)g(if)h(it)g(is)f(to)h(represen)m(t)g(itself.)68 b(When)39 b(the)h(command)f(history)150 1105 y(expansion)i(facilities)j (are)e(b)s(eing)f(used)g(\(see)h(Section)h(9.3)f([History)h(In)m -(teraction],)j(page)c(119\),)47 b(the)150 1214 y Fq(history)30 +(teraction],)j(page)c(117\),)47 b(the)150 1214 y Fq(history)30 b(expansion)h Ft(c)m(haracter,)h(usually)f(`)p Fs(!)p Ft(',)g(m)m(ust)f(b)s(e)g(quoted)h(to)g(prev)m(en)m(t)g(history)g (expansion.)41 b(See)150 1324 y(Section)22 b(9.1)g([Bash)f(History)h(F) --8 b(acilities],)26 b(page)c(117,)j(for)20 b(more)h(details)h +-8 b(acilities],)26 b(page)c(115,)j(for)20 b(more)h(details)h (concerning)g(history)f(expansion.)275 1453 y(There)37 b(are)h(three)f(quoting)h(mec)m(hanisms:)56 b(the)38 b Fq(escap)s(e)g(c)m(haracter)p Ft(,)j(single)d(quotes,)i(and)d(double) @@ -5334,61 +4987,60 @@ h(are)g(deco)s(ded)f(as)g(follo)m(ws:)p eop end %%Page: 7 13 TeXDict begin 7 12 bop 150 -116 a Ft(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(7)150 299 -y Fs(\\a)384 b Ft(alert)31 b(\(b)s(ell\))150 481 y Fs(\\b)384 -b Ft(bac)m(kspace)150 664 y Fs(\\e)g Ft(an)30 b(escap)s(e)h(c)m -(haracter)h(\(not)f(ANSI)f(C\))150 846 y Fs(\\f)384 b -Ft(form)30 b(feed)150 1029 y Fs(\\n)384 b Ft(newline)150 -1211 y Fs(\\r)g Ft(carriage)32 b(return)150 1394 y Fs(\\t)384 -b Ft(horizon)m(tal)32 b(tab)150 1576 y Fs(\\v)384 b Ft(v)m(ertical)32 -b(tab)150 1759 y Fs(\\\\)384 b Ft(bac)m(kslash)150 1941 -y Fs(\\')g Ft(single)31 b(quote)150 2124 y Fs(\\)p Fj(nnn)288 +y Fs(\\a)384 b Ft(alert)31 b(\(b)s(ell\))150 487 y Fs(\\b)384 +b Ft(bac)m(kspace)150 675 y Fs(\\e)g Ft(an)30 b(escap)s(e)h(c)m +(haracter)h(\(not)f(ANSI)f(C\))150 862 y Fs(\\f)384 b +Ft(form)30 b(feed)150 1050 y Fs(\\n)384 b Ft(newline)150 +1238 y Fs(\\r)g Ft(carriage)32 b(return)150 1426 y Fs(\\t)384 +b Ft(horizon)m(tal)32 b(tab)150 1614 y Fs(\\v)384 b Ft(v)m(ertical)32 +b(tab)150 1802 y Fs(\\\\)384 b Ft(bac)m(kslash)150 1989 +y Fs(\\')g Ft(single)31 b(quote)150 2177 y Fs(\\)p Fj(nnn)288 b Ft(the)31 b(eigh)m(t-bit)h(c)m(haracter)g(whose)e(v)-5 b(alue)31 b(is)f(the)h(o)s(ctal)g(v)-5 b(alue)31 b Fq(nnn)e -Ft(\(one)i(to)g(three)g(digits\))150 2306 y Fs(\\x)p +Ft(\(one)i(to)g(three)g(digits\))150 2365 y Fs(\\x)p Fj(HH)288 b Ft(the)36 b(eigh)m(t-bit)i(c)m(haracter)f(whose)f(v)-5 b(alue)36 b(is)g(the)g(hexadecimal)h(v)-5 b(alue)36 b -Fq(HH)46 b Ft(\(one)37 b(or)f(t)m(w)m(o)630 2416 y(hex)30 -b(digits\))150 2598 y Fs(\\c)p Fj(x)336 b Ft(a)31 b(con)m(trol-)p -Fq(x)38 b Ft(c)m(haracter)150 2792 y(The)30 b(expanded)f(result)i(is)f +Fq(HH)46 b Ft(\(one)37 b(or)f(t)m(w)m(o)630 2475 y(hex)30 +b(digits\))150 2662 y Fs(\\c)p Fj(x)336 b Ft(a)31 b(con)m(trol-)p +Fq(x)38 b Ft(c)m(haracter)150 2865 y(The)30 b(expanded)f(result)i(is)f (single-quoted,)i(as)f(if)f(the)g(dollar)h(sign)g(had)e(not)i(b)s(een)f -(presen)m(t.)150 3063 y Fk(3.1.2.5)63 b(Lo)s(cale-Sp)s(eci\014c)41 -b(T)-10 b(ranslation)275 3330 y Ft(A)30 b(double-quoted)h(string)f +(presen)m(t.)150 3146 y Fk(3.1.2.5)63 b(Lo)s(cale-Sp)s(eci\014c)41 +b(T)-10 b(ranslation)275 3418 y Ft(A)30 b(double-quoted)h(string)f (preceded)g(b)m(y)h(a)g(dollar)g(sign)f(\(`)p Fs($)p Ft('\))i(will)e(cause)i(the)e(string)h(to)g(b)s(e)f(trans-)150 -3439 y(lated)j(according)g(to)g(the)f(curren)m(t)g(lo)s(cale.)47 +3528 y(lated)j(according)g(to)g(the)f(curren)m(t)g(lo)s(cale.)47 b(If)32 b(the)g(curren)m(t)g(lo)s(cale)i(is)e Fs(C)g Ft(or)g Fs(POSIX)p Ft(,)f(the)h(dollar)h(sign)f(is)150 -3549 y(ignored.)41 b(If)30 b(the)g(string)h(is)f(translated)h(and)f +3637 y(ignored.)41 b(If)30 b(the)g(string)h(is)f(translated)h(and)f (replaced,)h(the)g(replacemen)m(t)g(is)g(double-quoted.)275 -3707 y(Some)20 b(systems)h(use)f(the)h(message)h(catalog)h(selected)f +3800 y(Some)20 b(systems)h(use)f(the)h(message)h(catalog)h(selected)f (b)m(y)f(the)g Fs(LC_MESSAGES)c Ft(shell)k(v)-5 b(ariable.)39 -b(Others)150 3816 y(create)g(the)e(name)g(of)g(the)g(message)h(catalog) +b(Others)150 3910 y(create)g(the)e(name)g(of)g(the)g(message)h(catalog) i(from)d(the)g(v)-5 b(alue)37 b(of)g(the)h Fs(TEXTDOMAIN)c -Ft(shell)j(v)-5 b(ariable,)150 3926 y(p)s(ossibly)31 +Ft(shell)j(v)-5 b(ariable,)150 4019 y(p)s(ossibly)31 b(adding)g(a)g(su\016x)g(of)h(`)p Fs(.mo)p Ft('.)43 b(If)31 b(y)m(ou)h(use)f(the)h Fs(TEXTDOMAIN)c Ft(v)-5 b(ariable,)33 -b(y)m(ou)f(ma)m(y)g(need)f(to)h(set)150 4035 y(the)22 +b(y)m(ou)f(ma)m(y)g(need)f(to)h(set)150 4129 y(the)22 b Fs(TEXTDOMAINDIR)d Ft(v)-5 b(ariable)23 b(to)g(the)f(lo)s(cation)i (of)e(the)h(message)g(catalog)i(\014les.)38 b(Still)23 -b(others)f(use)g(b)s(oth)150 4145 y(v)-5 b(ariables)31 +b(others)f(use)g(b)s(oth)150 4238 y(v)-5 b(ariables)31 b(in)f(this)g(fashion:)41 b Fs(TEXTDOMAINDIR)p Ft(/)p -Fs(LC_MESSAGES)p Ft(/LC)p 2528 4145 28 4 v 34 w(MESSA)m(GES/)p -Fs(TEXTDOMAIN)p Ft(.mo.)150 4415 y Fk(3.1.3)63 b(Commen)m(ts)275 -4682 y Ft(In)34 b(a)j(non-in)m(teractiv)m(e)h(shell,)f(or)f(an)f(in)m +Fs(LC_MESSAGES)p Ft(/LC)p 2528 4238 28 4 v 34 w(MESSA)m(GES/)p +Fs(TEXTDOMAIN)p Ft(.mo.)150 4520 y Fk(3.1.3)63 b(Commen)m(ts)275 +4792 y Ft(In)34 b(a)j(non-in)m(teractiv)m(e)h(shell,)f(or)f(an)f(in)m (teractiv)m(e)k(shell)d(in)f(whic)m(h)h(the)f Fs(interactive_comments) -150 4792 y Ft(option)41 b(to)h(the)f Fs(shopt)e Ft(builtin)i(is)g -(enabled)g(\(see)g(Section)h(4.3.2)h([The)d(Shopt)g(Builtin],)45 -b(page)c(52\),)150 4902 y(a)d(w)m(ord)f(b)s(eginning)g(with)h(`)p -Fs(#)p Ft(')g(causes)g(that)g(w)m(ord)g(and)f(all)h(remaining)g(c)m -(haracters)h(on)f(that)g(line)g(to)150 5011 y(b)s(e)33 -b(ignored.)52 b(An)33 b(in)m(teractiv)m(e)k(shell)d(without)g(the)h -Fs(interactive_comments)28 b Ft(option)34 b(enabled)g(do)s(es)150 -5121 y(not)39 b(allo)m(w)i(commen)m(ts.)68 b(The)39 b -Fs(interactive_comments)33 b Ft(option)40 b(is)f(on)g(b)m(y)g(default)g -(in)g(in)m(teractiv)m(e)150 5230 y(shells.)k(See)31 b(Section)h(6.3)g -([In)m(teractiv)m(e)h(Shells],)f(page)f(73,)h(for)f(a)h(description)f -(of)g(what)g(mak)m(es)g(a)h(shell)150 5340 y(in)m(teractiv)m(e.)p -eop end +150 4902 y Ft(option)j(to)g(the)f Fs(shopt)f Ft(builtin)h(is)g(enabled) +g(\(see)h(Section)h(4.2)f([Bash)f(Builtins],)j(page)e(41\),)j(a)c(w)m +(ord)150 5011 y(b)s(eginning)26 b(with)g(`)p Fs(#)p Ft(')g(causes)h +(that)f(w)m(ord)g(and)g(all)h(remaining)g(c)m(haracters)g(on)f(that)h +(line)g(to)g(b)s(e)f(ignored.)150 5121 y(An)43 b(in)m(teractiv)m(e)j +(shell)e(without)f(the)g Fs(interactive_comments)38 b +Ft(option)44 b(enabled)f(do)s(es)g(not)g(allo)m(w)150 +5230 y(commen)m(ts.)56 b(The)34 b Fs(interactive_comments)c +Ft(option)35 b(is)g(on)g(b)m(y)g(default)g(in)g(in)m(teractiv)m(e)j +(shells.)55 b(See)150 5340 y(Section)30 b(6.3)f([In)m(teractiv)m(e)j +(Shells],)d(page)h(71,)g(for)e(a)i(description)e(of)h(what)g(mak)m(es)h +(a)f(shell)g(in)m(teractiv)m(e.)p eop end %%Page: 8 14 TeXDict begin 8 13 bop 150 -116 a Ft(8)2617 b(Bash)31 b(Reference)g(Man)m(ual)150 299 y Fr(3.2)68 b(Shell)45 @@ -5436,7 +5088,7 @@ Fl(posix)p Ft(.)57 b(The)35 b Fs(TIMEFORMAT)e Ft(v)-5 b(ariable)37 b(ma)m(y)g(b)s(e)e(set)h(to)h(a)f(format)g(string)g(that) 150 3845 y(sp)s(eci\014es)29 b(ho)m(w)g(the)g(timing)g(information)h (should)d(b)s(e)i(displa)m(y)m(ed.)41 b(See)29 b(Section)h(5.2)g([Bash) -f(V)-8 b(ariables],)150 3955 y(page)29 b(59,)h(for)e(a)g(description)h +f(V)-8 b(ariables],)150 3955 y(page)29 b(57,)h(for)e(a)g(description)h (of)f(the)g(a)m(v)-5 b(ailable)31 b(formats.)40 b(The)28 b(use)g(of)g Fs(time)f Ft(as)i(a)f(reserv)m(ed)h(w)m(ord)f(p)s(er-)150 4064 y(mits)g(the)g(timing)g(of)g(shell)g(builtins,)g(shell)g @@ -5448,22 +5100,21 @@ m(hronously)f(\(see)h(Section)g(3.2.3)h([Lists],)g(page)e(9\),)i(the)f (eline)g(to)h(complete.)275 4573 y(Eac)m(h)25 b(command)g(in)g(a)g(pip) s(eline)g(is)g(executed)h(in)f(its)g(o)m(wn)h(subshell)e(\(see)i (Section)g(3.7.3)h([Command)150 4682 y(Execution)36 b(En)m(vironmen)m -(t],)i(page)e(30\).)58 b(The)36 b(exit)g(status)g(of)g(a)g(pip)s(eline) -g(is)f(the)h(exit)h(status)f(of)g(the)150 4792 y(last)27 -b(command)f(in)f(the)i(pip)s(eline,)f(unless)g(the)g -Fs(pipefail)e Ft(option)i(is)g(enabled)g(\(see)h(Section)g(4.3.1)h -([The)150 4902 y(Set)34 b(Builtin],)j(page)e(49\).)53 -b(If)34 b Fs(pipefail)e Ft(is)i(enabled,)h(the)g(pip)s(eline's)f -(return)f(status)h(is)h(the)f(v)-5 b(alue)35 b(of)150 -5011 y(the)d(last)h(\(righ)m(tmost\))h(command)e(to)h(exit)g(with)e(a)i -(non-zero)f(status,)h(or)f(zero)h(if)f(all)h(commands)f(exit)150 -5121 y(successfully)-8 b(.)67 b(If)38 b(the)h(reserv)m(ed)g(w)m(ord)g -(`)p Fs(!)p Ft(')g(precedes)g(the)g(pip)s(eline,)h(the)g(exit)f(status) -g(is)g(the)g(logical)150 5230 y(negation)h(of)f(the)f(exit)i(status)f -(as)f(describ)s(ed)g(ab)s(o)m(v)m(e.)66 b(The)38 b(shell)h(w)m(aits)h -(for)e(all)h(commands)g(in)f(the)150 5340 y(pip)s(eline)30 -b(to)h(terminate)g(b)s(efore)f(returning)g(a)h(v)-5 b(alue.)p -eop end +(t],)i(page)e(29\).)58 b(The)36 b(exit)g(status)g(of)g(a)g(pip)s(eline) +g(is)f(the)h(exit)h(status)f(of)g(the)150 4792 y(last)c(command)f(in)g +(the)g(pip)s(eline,)g(unless)g(the)g Fs(pipefail)e Ft(option)j(is)f +(enabled)g(\(see)h(Section)g(4.3)g([The)150 4902 y(Set)i(Builtin],)j +(page)e(53\).)53 b(If)34 b Fs(pipefail)e Ft(is)i(enabled,)h(the)g(pip)s +(eline's)f(return)f(status)h(is)h(the)f(v)-5 b(alue)35 +b(of)150 5011 y(the)d(last)h(\(righ)m(tmost\))h(command)e(to)h(exit)g +(with)e(a)i(non-zero)f(status,)h(or)f(zero)h(if)f(all)h(commands)f +(exit)150 5121 y(successfully)-8 b(.)67 b(If)38 b(the)h(reserv)m(ed)g +(w)m(ord)g(`)p Fs(!)p Ft(')g(precedes)g(the)g(pip)s(eline,)h(the)g +(exit)f(status)g(is)g(the)g(logical)150 5230 y(negation)h(of)f(the)f +(exit)i(status)f(as)f(describ)s(ed)g(ab)s(o)m(v)m(e.)66 +b(The)38 b(shell)h(w)m(aits)h(for)e(all)h(commands)g(in)f(the)150 +5340 y(pip)s(eline)30 b(to)h(terminate)g(b)s(efore)f(returning)g(a)h(v) +-5 b(alue.)p eop end %%Page: 9 15 TeXDict begin 9 14 bop 150 -116 a Ft(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(9)150 299 @@ -5488,7 +5139,7 @@ Fq(bac)m(kground)p Ft(.)150 1511 y(The)f(shell)h(do)s(es)f(not)h(w)m (ait)g(for)f(the)h(command)f(to)i(\014nish,)d(and)h(the)h(return)e (status)i(is)g(0)g(\(true\).)40 b(When)150 1621 y(job)g(con)m(trol)h (is)g(not)f(activ)m(e)i(\(see)f(Chapter)f(7)h([Job)f(Con)m(trol],)j -(page)e(87\),)j(the)d(standard)e(input)g(for)150 1730 +(page)e(85\),)j(the)d(standard)e(input)g(for)150 1730 y(async)m(hronous)k(commands,)k(in)d(the)f(absence)i(of)f(an)m(y)g (explicit)h(redirections,)j(is)43 b(redirected)h(from)150 1840 y Fs(/dev/null)p Ft(.)275 1979 y(Commands)19 b(separated)j(b)m(y)f @@ -5538,7 +5189,7 @@ b Fs(;)44 b(do)j Fj(consequent-commands)11 b Fs(;)42 b(done)630 434 y Ft(Execute)g Fq(consequen)m(t-commands)k Ft(as)41 b(long)h(as)f Fq(test-commands)46 b Ft(has)41 b(an)g(exit)h(status)630 543 y(whic)m(h)c(is)h(not)g(zero.)67 -b(The)38 b(return)g(status)h(is)f(the)h(exit)h(status)f(of)g(the)g +b(The)38 b(return)f(status)j(is)e(the)h(exit)h(status)f(of)g(the)g (last)g(command)630 653 y(executed)31 b(in)f Fq(consequen)m(t-commands) p Ft(,)i(or)e(zero)h(if)g(none)f(w)m(as)h(executed.)150 813 y Fs(while)240 b Ft(The)30 b(syn)m(tax)h(of)f(the)h @@ -5574,7 +5225,7 @@ b(;)g(do)g Fj(commands)57 b Fs(;)47 b(done)630 2795 y Ft(First,)38 b(the)f(arithmetic)h(expression)e Fq(expr1)43 b Ft(is)36 b(ev)-5 b(aluated)38 b(according)f(to)g(the)g(rules)f(de-) 630 2905 y(scrib)s(ed)41 b(b)s(elo)m(w)h(\(see)h(Section)g(6.5)g -([Shell)g(Arithmetic],)j(page)d(76\).)77 b(The)42 b(arithmetic)630 +([Shell)g(Arithmetic],)j(page)d(74\).)77 b(The)42 b(arithmetic)630 3014 y(expression)33 b Fq(expr2)41 b Ft(is)34 b(then)f(ev)-5 b(aluated)35 b(rep)s(eatedly)f(un)m(til)g(it)g(ev)-5 b(aluates)35 b(to)g(zero.)51 b(Eac)m(h)630 3124 y(time)23 @@ -5620,32 +5271,32 @@ b Ft(is)630 518 y(executed.)k(The)34 b(return)g(status)h(is)f(the)h Fs(case)e Ft(command)h(is:)870 923 y Fs(case)47 b Fj(word)57 b Fs(in)47 b([)g([\(])g Fj(pattern)57 b Fs([|)47 b Fj(pattern)11 b Fs(]...)l(\))48 b Fj(command-list)55 b Fs(;;]...)46 -b(esac)630 1058 y(case)20 b Ft(will)i(selectiv)m(ely)j(execute)e(the)e -Fq(command-list)k Ft(corresp)s(onding)20 b(to)i(the)g(\014rst)f -Fq(pattern)630 1167 y Ft(that)42 b(matc)m(hes)g Fq(w)m(ord)p -Ft(.)73 b(If)41 b(the)g(shell)g(option)h Fs(nocasematch)c -Ft(\(see)k(the)g(description)f(of)630 1277 y Fs(shopt)34 -b Ft(in)h(Section)h(4.3.2)h([The)e(Shopt)f(Builtin],)k(page)e(52\))g -(is)g(enabled,)g(the)g(matc)m(h)g(is)630 1386 y(p)s(erformed)29 -b(without)i(regard)g(to)g(the)g(case)h(of)f(alphab)s(etic)g(c)m -(haracters.)44 b(The)30 b(`)p Fs(|)p Ft(')h(is)g(used)630 -1496 y(to)39 b(separate)f(m)m(ultiple)h(patterns,)h(and)d(the)h(`)p -Fs(\))p Ft(')g(op)s(erator)g(terminates)h(a)f(pattern)g(list.)630 -1606 y(A)33 b(list)h(of)f(patterns)g(and)f(an)h(asso)s(ciated)h -(command-list)g(is)f(kno)m(wn)f(as)i(a)f Fq(clause)p -Ft(.)49 b(Eac)m(h)630 1715 y(clause)44 b(m)m(ust)f(b)s(e)f(terminated)i -(with)e(`)p Fs(;;)p Ft('.)79 b(The)43 b Fq(w)m(ord)j -Ft(undergo)s(es)c(tilde)i(expansion,)630 1825 y(parameter)32 -b(expansion,)g(command)f(substitution,)h(arithmetic)h(expansion,)e(and) -g(quote)630 1934 y(remo)m(v)-5 b(al)25 b(b)s(efore)e(matc)m(hing)i(is)f -(attempted.)39 b(Eac)m(h)25 b Fq(pattern)f Ft(undergo)s(es)e(tilde)j -(expansion,)630 2044 y(parameter)31 b(expansion,)f(command)g -(substitution,)h(and)f(arithmetic)h(expansion.)630 2179 -y(There)f(ma)m(y)g(b)s(e)f(an)h(arbitrary)g(n)m(um)m(b)s(er)f(of)h -Fs(case)f Ft(clauses,)i(eac)m(h)g(terminated)g(b)m(y)e(a)i(`)p -Fs(;;)p Ft('.)630 2288 y(The)f(\014rst)f(pattern)i(that)g(matc)m(hes)g -(determines)g(the)f(command-list)i(that)f(is)f(executed.)630 -2423 y(Here)35 b(is)g(an)g(example)h(using)e Fs(case)g +b(esac)630 1058 y(case)34 b Ft(will)h(selectiv)m(ely)i(execute)f(the)f +Fq(command-list)j Ft(corresp)s(onding)33 b(to)j(the)e(\014rst)g +Fq(pat-)630 1167 y(tern)g Ft(that)h(matc)m(hes)h Fq(w)m(ord)p +Ft(.)52 b(If)34 b(the)g(shell)h(option)g Fs(nocasematch)c +Ft(\(see)k(the)g(description)630 1277 y(of)e Fs(shopt)e +Ft(in)h(Section)h(4.2)h([Bash)f(Builtins],)g(page)h(41\))f(is)g +(enabled,)g(the)g(matc)m(h)g(is)g(p)s(er-)630 1386 y(formed)e(without)h +(regard)g(to)h(the)f(case)h(of)f(alphab)s(etic)h(c)m(haracters.)47 +b(The)31 b(`)p Fs(|)p Ft(')h(is)g(used)f(to)630 1496 +y(separate)25 b(m)m(ultiple)h(patterns,)g(and)d(the)i(`)p +Fs(\))p Ft(')g(op)s(erator)f(terminates)i(a)f(pattern)f(list.)40 +b(A)24 b(list)630 1606 y(of)32 b(patterns)g(and)f(an)h(asso)s(ciated)h +(command-list)g(is)f(kno)m(wn)f(as)h(a)h Fq(clause)p +Ft(.)46 b(Eac)m(h)32 b(clause)630 1715 y(m)m(ust)d(b)s(e)f(terminated)h +(with)g(`)p Fs(;;)p Ft('.)40 b(The)28 b Fq(w)m(ord)k +Ft(undergo)s(es)c(tilde)h(expansion,)g(parameter)630 +1825 y(expansion,)c(command)f(substitution,)h(arithmetic)g(expansion,)g +(and)e(quote)h(remo)m(v)-5 b(al)25 b(b)s(e-)630 1934 +y(fore)e(matc)m(hing)i(is)e(attempted.)39 b(Eac)m(h)24 +b Fq(pattern)f Ft(undergo)s(es)g(tilde)h(expansion,)g(parameter)630 +2044 y(expansion,)30 b(command)h(substitution,)f(and)g(arithmetic)h +(expansion.)630 2179 y(There)f(ma)m(y)g(b)s(e)f(an)h(arbitrary)g(n)m +(um)m(b)s(er)f(of)h Fs(case)f Ft(clauses,)i(eac)m(h)g(terminated)g(b)m +(y)e(a)i(`)p Fs(;;)p Ft('.)630 2288 y(The)f(\014rst)f(pattern)i(that)g +(matc)m(hes)g(determines)g(the)f(command-list)i(that)f(is)f(executed.) +630 2423 y(Here)35 b(is)g(an)g(example)h(using)e Fs(case)g Ft(in)g(a)h(script)g(that)h(could)f(b)s(e)f(used)g(to)h(describ)s(e)g (one)630 2533 y(in)m(teresting)d(feature)f(of)f(an)g(animal:)870 2668 y Fs(echo)47 b(-n)g("Enter)f(the)h(name)f(of)i(an)f(animal:)f(") @@ -5669,9 +5320,9 @@ b(The)630 4573 y(set)41 b(of)f(expanded)f(w)m(ords)g(is)i(prin)m(ted)e (on)h(the)g(standard)f(error)h(output)g(stream,)j(eac)m(h)630 4682 y(preceded)30 b(b)m(y)g(a)h(n)m(um)m(b)s(er.)40 b(If)29 b(the)i(`)p Fs(in)f Fj(words)11 b Ft(')29 b(is)h(omitted,)i -(the)e(p)s(ositional)i(parameters)630 4792 y(are)22 b(prin)m(ted,)h(as) -f(if)f(`)p Fs(in)30 b("$@")p Ft(')21 b(had)g(b)s(een)f(sp)s(eci\014ed.) -37 b(The)21 b Fs(PS3)g Ft(prompt)g(is)g(then)g(displa)m(y)m(ed)630 +(the)e(p)s(ositional)i(parameters)630 4792 y(are)24 b(prin)m(ted,)g(as) +g(if)f(`)p Fs(in)30 b("$@")p Ft(')23 b(had)f(b)s(een)h(sp)s(ecifed.)38 +b(The)23 b Fs(PS3)f Ft(prompt)h(is)g(then)g(displa)m(y)m(ed)630 4902 y(and)38 b(a)h(line)g(is)f(read)h(from)f(the)h(standard)e(input.) 65 b(If)38 b(the)h(line)g(consists)g(of)f(a)h(n)m(um)m(b)s(er)630 5011 y(corresp)s(onding)33 b(to)i(one)f(of)g(the)g(displa)m(y)m(ed)h(w) @@ -5700,7 +5351,7 @@ g(\\\($REPLY\\\))870 1113 y(break;)870 1223 y(done)150 b Fs(\)\))630 1645 y Ft(The)33 b(arithmetic)i Fq(expression)f Ft(is)f(ev)-5 b(aluated)35 b(according)g(to)f(the)g(rules)f(describ)s (ed)g(b)s(elo)m(w)630 1755 y(\(see)j(Section)f(6.5)h([Shell)f -(Arithmetic],)i(page)f(76\).)55 b(If)34 b(the)h(v)-5 +(Arithmetic],)i(page)f(74\).)55 b(If)34 b(the)h(v)-5 b(alue)35 b(of)g(the)g(expression)g(is)630 1864 y(non-zero,)27 b(the)f(return)e(status)i(is)g(0;)h(otherwise)f(the)g(return)e(status)i (is)g(1.)39 b(This)25 b(is)g(exactly)630 1974 y(equiv)-5 @@ -5714,7 +5365,7 @@ b(aluation)27 b(of)e(the)h(conditional)h(expres-)630 2772 y(sion)j Fq(expression)p Ft(.)41 b(Expressions)29 b(are)i(comp)s(osed)f(of)g(the)h(primaries)f(describ)s(ed)f(b)s(elo)m (w)h(in)630 2882 y(Section)36 b(6.4)h([Bash)f(Conditional)g -(Expressions],)h(page)f(75.)57 b(W)-8 b(ord)36 b(splitting)h(and)e +(Expressions],)h(page)f(73.)57 b(W)-8 b(ord)36 b(splitting)h(and)e (\014le-)630 2992 y(name)24 b(expansion)h(are)g(not)f(p)s(erformed)f (on)h(the)h(w)m(ords)f(b)s(et)m(w)m(een)h(the)g(`)p Fs([[)p Ft(')f(and)g(`)p Fs(]])p Ft(';)i(tilde)630 3101 y(expansion,)31 @@ -5728,34 +5379,33 @@ Fs(==)p Ft(')f(and)g(`)p Fs(!=)p Ft(')g(op)s(erators)h(are)g(used,)g (the)g(string)f(to)i(the)e(righ)m(t)h(of)g(the)g(op)s(erator)630 3563 y(is)31 b(considered)g(a)h(pattern)f(and)g(matc)m(hed)h(according) g(to)g(the)g(rules)f(describ)s(ed)f(b)s(elo)m(w)h(in)630 -3673 y(Section)37 b(3.5.8.1)i([P)m(attern)e(Matc)m(hing],)j(page)c(24.) +3673 y(Section)37 b(3.5.8.1)i([P)m(attern)e(Matc)m(hing],)j(page)c(23.) 59 b(If)36 b(the)g(shell)g(option)h Fs(nocasematch)630 -3782 y Ft(\(see)42 b(the)f(description)g(of)h Fs(shopt)d -Ft(in)i(Section)h(4.3.2)h([The)e(Shopt)f(Builtin],)45 -b(page)d(52\))630 3892 y(is)e(enabled,)i(the)e(matc)m(h)h(is)e(p)s -(erformed)g(without)g(regard)h(to)h(the)f(case)g(of)g(alphab)s(etic)630 -4001 y(c)m(haracters.)h(The)28 b(return)e(v)-5 b(alue)28 -b(is)g(0)g(if)g(the)g(string)g(matc)m(hes)h(\(`)p Fs(==)p -Ft('\))f(or)g(do)s(es)f(not)h(matc)m(h)630 4111 y(\(`)p -Fs(!=)p Ft('\)the)33 b(pattern,)g(and)f(1)g(otherwise.)47 -b(An)m(y)32 b(part)g(of)h(the)f(pattern)g(ma)m(y)h(b)s(e)f(quoted)g(to) -630 4221 y(force)f(it)g(to)g(b)s(e)f(matc)m(hed)h(as)f(a)h(string.)630 -4354 y(An)i(additional)i(binary)e(op)s(erator,)i(`)p +3782 y Ft(\(see)27 b(the)e(description)h(of)g Fs(shopt)e +Ft(in)h(Section)i(4.2)f([Bash)g(Builtins],)i(page)e(41\))h(is)f +(enabled,)630 3892 y(the)40 b(matc)m(h)h(is)f(p)s(erformed)f(without)h +(regard)g(to)h(the)f(case)h(of)g(alphab)s(etic)f(c)m(haracters.)630 +4001 y(The)34 b(return)g(v)-5 b(alue)35 b(is)g(0)g(if)f(the)h(string)g +(matc)m(hes)g(\(`)p Fs(==)p Ft('\))h(or)e(do)s(es)h(not)g(matc)m(h)g +(\(`)p Fs(!=)p Ft('\)the)630 4111 y(pattern,)30 b(and)e(1)h(otherwise.) +41 b(An)m(y)29 b(part)g(of)g(the)g(pattern)g(ma)m(y)g(b)s(e)g(quoted)g +(to)g(force)h(it)f(to)630 4221 y(b)s(e)h(matc)m(hed)h(as)g(a)f(string.) +630 4354 y(An)j(additional)i(binary)e(op)s(erator,)i(`)p Fs(=~)p Ft(',)g(is)f(a)m(v)-5 b(ailable,)37 b(with)c(the)h(same)g (precedence)h(as)630 4463 y(`)p Fs(==)p Ft(')29 b(and)f(`)p Fs(!=)p Ft('.)40 b(When)29 b(it)g(is)g(used,)f(the)h(string)g(to)h(the) e(righ)m(t)i(of)f(the)g(op)s(erator)g(is)g(consid-)630 4573 y(ered)34 b(an)g(extended)g(regular)g(expression)g(and)f(matc)m (hed)i(accordingly)g(\(as)f(in)g Fm(r)-5 b(e)g(gex)11 -b Ft(3\)\).)630 4682 y(The)29 b(return)f(v)-5 b(alue)30 -b(is)g(0)g(if)f(the)h(string)g(matc)m(hes)g(the)g(pattern,)g(and)f(1)h -(otherwise.)41 b(If)29 b(the)630 4792 y(regular)e(expression)g(is)h -(syn)m(tactically)i(incorrect,)f(the)e(conditional)i(expression's)e -(return)630 4902 y(v)-5 b(alue)40 b(is)g(2.)68 b(If)39 -b(the)h(shell)f(option)h Fs(nocasematch)d Ft(\(see)j(the)g(description) -g(of)f Fs(shopt)f Ft(in)630 5011 y(Section)32 b(4.3.2)g([The)f(Shopt)f -(Builtin],)i(page)g(52\))g(is)f(enabled,)g(the)g(matc)m(h)h(is)e(p)s -(erformed)630 5121 y(without)40 b(regard)g(to)h(the)f(case)h(of)g +b Ft(3\)\).)630 4682 y(The)39 b(return)f(v)-5 b(alue)40 +b(is)f(0)h(if)f(the)g(string)h(matc)m(hes)g(the)f(pattern,)j(and)d(1)h +(otherwise.)67 b(If)630 4792 y(the)26 b(regular)g(expression)g(is)g +(syn)m(tactically)j(incorrect,)f(the)e(conditional)h(expression's)f +(re-)630 4902 y(turn)32 b(v)-5 b(alue)34 b(is)f(2.)49 +b(If)33 b(the)g(shell)g(option)h Fs(nocasematch)c Ft(\(see)k(the)f +(description)g(of)g Fs(shopt)630 5011 y Ft(in)43 b(Section)h(4.2)g +([Bash)f(Builtins],)k(page)d(41\))g(is)f(enabled,)j(the)e(matc)m(h)f +(is)g(p)s(erformed)630 5121 y(without)d(regard)g(to)h(the)f(case)h(of)g (alphab)s(etic)f(c)m(haracters.)72 b(Substrings)38 b(matc)m(hed)j(b)m (y)630 5230 y(paren)m(thesized)j(sub)s(expressions)e(within)i(the)g (regular)g(expression)g(are)g(sa)m(v)m(ed)h(in)f(the)630 @@ -5800,7 +5450,7 @@ b(example,)150 3068 y(the)f(output)f(of)g(all)h(the)g(commands)f(in)g 3545 y Ft(Placing)30 b(a)f(list)g(of)g(commands)f(b)s(et)m(w)m(een)i (paren)m(theses)e(causes)i(a)f(subshell)e(en)m(vironmen)m(t)630 3654 y(to)k(b)s(e)e(created)j(\(see)f(Section)g(3.7.3)h([Command)d -(Execution)i(En)m(vironmen)m(t],)g(page)f(30\),)630 3764 +(Execution)i(En)m(vironmen)m(t],)g(page)f(29\),)630 3764 y(and)d(eac)m(h)i(of)e(the)h(commands)f(in)g Fq(list)j Ft(to)f(b)s(e)e(executed)h(in)f(that)h(subshell.)39 b(Since)28 b(the)f Fq(list)630 3873 y Ft(is)i(executed)g(in)f(a)h(subshell,)g(v)-5 @@ -5986,7 +5636,7 @@ y Fs(readonly)p Ft(,)d(and)i Fs(local)f Ft(builtin)h(commands.)275 3872 y(In)f(the)h(con)m(text)i(where)d(an)h(assignmen)m(t)h(statemen)m (t)h(is)e(assigning)g(a)h(v)-5 b(alue)30 b(to)h(a)f(shell)g(v)-5 b(ariable)31 b(or)150 3981 y(arra)m(y)f(index)g(\(see)h(Section)g(6.7)g -([Arra)m(ys],)g(page)g(78\),)g(the)f(`)p Fs(+=)p Ft(')g(op)s(erator)g +([Arra)m(ys],)g(page)g(76\),)g(the)f(`)p Fs(+=)p Ft(')g(op)s(erator)g (can)h(b)s(e)e(used)g(to)i(app)s(end)d(to)150 4091 y(or)36 b(add)g(to)h(the)f(v)-5 b(ariable's)37 b(previous)f(v)-5 b(alue.)59 b(When)36 b(`)p Fs(+=)p Ft(')g(is)g(applied)g(to)h(a)g(v)-5 @@ -5997,7 +5647,7 @@ b(ev)-5 b(aluated)39 b(as)g(an)f(arithmetic)h(expression)f(and)g(added) b(alue,)37 b(whic)m(h)e(is)g(also)h(ev)-5 b(aluated.)56 b(When)35 b(`)p Fs(+=)p Ft(')g(is)h(applied)f(to)g(an)g(arra)m(y)150 4420 y(v)-5 b(ariable)26 b(using)e(comp)s(ound)f(assignmen)m(t)j(\(see) -f(Section)h(6.7)f([Arra)m(ys],)i(page)f(78\),)h(the)e(v)-5 +f(Section)h(6.7)f([Arra)m(ys],)i(page)f(76\),)h(the)e(v)-5 b(ariable's)25 b(v)-5 b(alue)150 4529 y(is)32 b(not)f(unset)h(\(as)g (it)g(is)f(when)g(using)g(`)p Fs(=)p Ft('\),)i(and)e(new)g(v)-5 b(alues)32 b(are)g(app)s(ended)d(to)k(the)f(arra)m(y)g(b)s(eginning)150 @@ -6086,7 +5736,7 @@ b(command.)150 4529 y Fs(0)432 b Ft(Expands)20 b(to)j(the)f(name)g(of)g Ft(is)g(set)g(to)h(the)f(name)g(of)g(that)h(\014le.)64 b(If)37 b(Bash)i(is)f(started)g(with)g(the)g(`)p Fs(-c)p Ft(')630 4857 y(option)i(\(see)g(Section)h(6.1)f([In)m(v)m(oking)h -(Bash],)h(page)e(69\),)j(then)d Fs($0)e Ft(is)i(set)g(to)g(the)g +(Bash],)h(page)e(67\),)j(then)d Fs($0)e Ft(is)i(set)g(to)g(the)g (\014rst)630 4967 y(argumen)m(t)31 b(after)g(the)g(string)g(to)g(b)s(e) f(executed,)i(if)f(one)g(is)f(presen)m(t.)42 b(Otherwise,)31 b(it)g(is)f(set)630 5077 y(to)h(the)g(\014lename)f(used)g(to)h(in)m(v)m @@ -6136,7 +5786,7 @@ b(The)150 3335 y(only)32 b(exceptions)i(to)f(this)f(are)h(the)f (expansions)g(of)h Fs("$@")e Ft(\(see)i(Section)g(3.4.2)h([Sp)s(ecial)f (P)m(arameters],)150 3444 y(page)e(16\))h(and)d Fs("${)p Fj(name)11 b Fs([@]}")27 b Ft(\(see)k(Section)h(6.7)f([Arra)m(ys],)g -(page)g(78\).)275 3585 y(After)41 b(all)i(expansions,)h +(page)g(76\).)275 3585 y(After)41 b(all)i(expansions,)h Fs(quote)29 b(removal)40 b Ft(\(see)i(Section)h(3.5.9)g([Quote)f(Remo)m (v)-5 b(al],)47 b(page)42 b(25\))h(is)150 3695 y(p)s(erformed.)150 3931 y Fk(3.5.1)63 b(Brace)40 b(Expansion)275 4182 y @@ -6144,12 +5794,12 @@ Ft(Brace)21 b(expansion)g(is)g(a)g(mec)m(hanism)g(b)m(y)g(whic)m(h)f (arbitrary)h(strings)f(ma)m(y)i(b)s(e)e(generated.)38 b(This)20 b(mec)m(h-)150 4291 y(anism)35 b(is)h(similar)f(to)h Fq(\014lename)g(expansion)f Ft(\(see)i(Section)f(3.5.8)h([Filename)g -(Expansion],)f(page)g(23\),)150 4401 y(but)24 b(the)i(\014le)f(names)g -(generated)h(need)f(not)g(exist.)40 b(P)m(atterns)26 -b(to)g(b)s(e)e(brace)i(expanded)e(tak)m(e)j(the)e(form)g(of)150 -4511 y(an)30 b(optional)h Fq(pream)m(ble)p Ft(,)g(follo)m(w)m(ed)g(b)m -(y)f(either)g(a)h(series)f(of)g(comma-separated)i(strings)d(or)h(a)h -(seqeunce)150 4620 y(expression)36 b(b)s(et)m(w)m(een)g(a)h(pair)e(of)i +(Expansion],)f(page)g(23\),)150 4401 y(but)31 b(the)h(\014le)g(names)f +(generated)i(need)f(not)g(exist.)45 b(P)m(atterns)33 +b(to)f(b)s(e)f(brace)h(expanded)f(tak)m(e)i(the)f(form)150 +4511 y(of)26 b(an)f(optional)h Fq(pream)m(ble)p Ft(,)h(follo)m(w)m(ed)g +(b)m(y)f(either)g(a)f(series)h(of)g(comma-separated)h(strings)e(or)g(a) +h(sequnce)150 4620 y(expression)36 b(b)s(et)m(w)m(een)g(a)h(pair)e(of)i (braces,)g(follo)m(w)m(ed)h(b)m(y)e(an)g(optional)h Fq(p)s(ostscript)p Ft(.)57 b(The)36 b(pream)m(ble)g(is)150 4730 y(pre\014xed)28 b(to)h(eac)m(h)h(string)f(con)m(tained)h(within)e(the)h(braces,)g(and)g @@ -6235,7 +5885,7 @@ g(w)m(ould)f(b)s(e)g(displa)m(y)m(ed)h(b)m(y)g(the)f Fs(dirs)g Ft(builtin)g(in)m(v)m(ok)m(ed)i(with)e(the)g(c)m(haracters) 150 4519 y(follo)m(wing)40 b(tilde)f(in)g(the)f(tilde-pre\014x)h(as)g (an)f(argumen)m(t)h(\(see)h(Section)f(6.8)h([The)e(Directory)i(Stac)m -(k],)150 4629 y(page)c(79\).)57 b(If)35 b(the)g(tilde-pre\014x,)i(sans) +(k],)150 4629 y(page)c(77\).)57 b(If)35 b(the)g(tilde-pre\014x,)i(sans) e(the)h(tilde,)h(consists)f(of)g(a)f(n)m(um)m(b)s(er)f(without)i(a)f (leading)h(`)p Fs(+)p Ft(')g(or)150 4739 y(`)p Fs(-)p Ft(',)31 b(`)p Fs(+)p Ft(')f(is)h(assumed.)275 4875 y(If)e(the)i(login) @@ -6334,1003 +5984,993 @@ Fq(w)m(ord)j Ft(is)d(assigned)g(to)h Fq(parameter)p Ft(.)630 518 y(The)c(v)-5 b(alue)32 b(of)f Fq(parameter)38 b Ft(is)31 b(then)g(substituted.)42 b(P)m(ositional)33 b(parameters)e(and)f(sp)s (ecial)630 628 y(parameters)h(ma)m(y)g(not)f(b)s(e)g(assigned)h(to)g -(in)f(this)g(w)m(a)m(y)-8 b(.)150 788 y Fs(${)p Fj(parameter)11 -b Fs(:?)p Fj(word)g Fs(})630 897 y Ft(If)26 b Fq(parameter)33 +(in)f(this)g(w)m(a)m(y)-8 b(.)150 805 y Fs(${)p Fj(parameter)11 +b Fs(:?)p Fj(word)g Fs(})630 914 y Ft(If)26 b Fq(parameter)33 b Ft(is)26 b(n)m(ull)g(or)g(unset,)h(the)f(expansion)g(of)g Fq(w)m(ord)k Ft(\(or)c(a)h(message)g(to)g(that)f(e\013ect)630 -1007 y(if)i Fq(w)m(ord)j Ft(is)d(not)g(presen)m(t\))h(is)f(written)g +1024 y(if)i Fq(w)m(ord)j Ft(is)d(not)g(presen)m(t\))h(is)f(written)g (to)h(the)f(standard)f(error)h(and)f(the)h(shell,)h(if)f(it)h(is)f(not) -630 1117 y(in)m(teractiv)m(e,)33 b(exits.)42 b(Otherwise,)30 +630 1133 y(in)m(teractiv)m(e,)33 b(exits.)42 b(Otherwise,)30 b(the)h(v)-5 b(alue)31 b(of)f Fq(parameter)38 b Ft(is)30 -b(substituted.)150 1277 y Fs(${)p Fj(parameter)11 b Fs(:+)p -Fj(word)g Fs(})630 1386 y Ft(If)35 b Fq(parameter)42 +b(substituted.)150 1310 y Fs(${)p Fj(parameter)11 b Fs(:+)p +Fj(word)g Fs(})630 1420 y Ft(If)35 b Fq(parameter)42 b Ft(is)36 b(n)m(ull)f(or)h(unset,)g(nothing)g(is)f(substituted,)i -(otherwise)e(the)h(expansion)630 1496 y(of)31 b Fq(w)m(ord)i -Ft(is)e(substituted.)150 1656 y Fs(${)p Fj(parameter)11 -b Fs(:)p Fj(offset)g Fs(})150 1766 y(${)p Fj(parameter)g +(otherwise)e(the)h(expansion)630 1530 y(of)31 b Fq(w)m(ord)i +Ft(is)e(substituted.)150 1707 y Fs(${)p Fj(parameter)11 +b Fs(:)p Fj(offset)g Fs(})150 1816 y(${)p Fj(parameter)g Fs(:)p Fj(offset)g Fs(:)p Fj(le)o(ngt)o(h)g Fs(})630 -1875 y Ft(Expands)44 b(to)i(up)e(to)i Fq(length)g Ft(c)m(haracters)h +1926 y Ft(Expands)44 b(to)i(up)e(to)i Fq(length)g Ft(c)m(haracters)h (of)e Fq(parameter)53 b Ft(starting)46 b(at)g(the)f(c)m(haracter)630 -1985 y(sp)s(eci\014ed)30 b(b)m(y)h Fq(o\013set)p Ft(.)42 +2035 y(sp)s(eci\014ed)30 b(b)m(y)h Fq(o\013set)p Ft(.)42 b(If)31 b Fq(length)g Ft(is)g(omitted,)h(expands)e(to)h(the)g -(substring)f(of)g Fq(parameter)630 2094 y Ft(starting)38 +(substring)f(of)g Fq(parameter)630 2145 y Ft(starting)38 b(at)g(the)f(c)m(haracter)i(sp)s(eci\014ed)e(b)m(y)g Fq(o\013set)p Ft(.)62 b Fq(length)38 b Ft(and)f Fq(o\013set)j -Ft(are)e(arithmetic)630 2204 y(expressions)30 b(\(see)i(Section)g(6.5)g -([Shell)f(Arithmetic],)h(page)g(76\).)43 b(This)30 b(is)h(referred)f -(to)i(as)630 2314 y(Substring)d(Expansion.)630 2449 y +Ft(are)e(arithmetic)630 2255 y(expressions)30 b(\(see)i(Section)g(6.5)g +([Shell)f(Arithmetic],)h(page)g(74\).)43 b(This)30 b(is)h(referred)f +(to)i(as)630 2364 y(Substring)d(Expansion.)630 2508 y Fq(length)j Ft(m)m(ust)f(ev)-5 b(aluate)33 b(to)f(a)g(n)m(um)m(b)s(er)e (greater)i(than)f(or)g(equal)h(to)g(zero.)45 b(If)30 -b Fq(o\013set)35 b Ft(ev)-5 b(al-)630 2558 y(uates)36 +b Fq(o\013set)35 b Ft(ev)-5 b(al-)630 2617 y(uates)36 b(to)h(a)f(n)m(um)m(b)s(er)e(less)i(than)f(zero,)j(the)e(v)-5 b(alue)36 b(is)g(used)f(as)g(an)h(o\013set)h(from)e(the)h(end)630 -2668 y(of)i(the)f(v)-5 b(alue)38 b(of)g Fq(parameter)p +2727 y(of)i(the)f(v)-5 b(alue)38 b(of)g Fq(parameter)p Ft(.)62 b(If)37 b Fq(parameter)45 b Ft(is)37 b(`)p Fs(@)p Ft(',)j(the)d(result)h(is)f Fq(length)h Ft(p)s(ositional)630 -2777 y(parameters)d(b)s(eginning)e(at)i Fq(o\013set)p +2836 y(parameters)d(b)s(eginning)e(at)i Fq(o\013set)p Ft(.)54 b(If)34 b Fq(parameter)41 b Ft(is)34 b(an)h(arra)m(y)f(name)h -(indexed)f(b)m(y)g(`)p Fs(@)p Ft(')630 2887 y(or)f(`)p +(indexed)f(b)m(y)g(`)p Fs(@)p Ft(')630 2946 y(or)f(`)p Fs(*)p Ft(',)g(the)g(result)g(is)g(the)g Fq(length)g Ft(mem)m(b)s(ers)f(of)h(the)g(arra)m(y)g(b)s(eginning)f(with)g -Fs(${)p Fj(param-)630 2996 y(eter)11 b Fs([)p Fj(offset)g +Fs(${)p Fj(param-)630 3055 y(eter)11 b Fs([)p Fj(offset)g Fs(]})p Ft(.)65 b(A)40 b(negativ)m(e)j Fq(o\013set)g Ft(is)d(tak)m(en)h(relativ)m(e)h(to)f(one)g(greater)g(than)f(the)630 -3106 y(maxim)m(um)h(index)f(of)i(the)f(sp)s(eci\014ed)f(arra)m(y)-8 -b(.)73 b(Note)43 b(that)e(a)h(negativ)m(e)h(o\013set)f(m)m(ust)f(b)s(e) -630 3216 y(separated)27 b(from)e(the)i(colon)g(b)m(y)f(at)h(least)g -(one)f(space)h(to)g(a)m(v)m(oid)h(b)s(eing)d(confused)h(with)g(the)630 -3325 y(`)p Fs(:-)p Ft(')31 b(expansion.)43 b(Substring)29 -b(indexing)i(is)g(zero-based)h(unless)e(the)i(p)s(ositional)g(parame-) -630 3435 y(ters)j(are)f(used,)h(in)f(whic)m(h)g(case)i(the)e(indexing)h -(starts)f(at)i(1)e(b)m(y)h(default.)53 b(If)33 b Fq(o\013set)38 -b Ft(is)c(0,)630 3544 y(and)c(the)g(p)s(ositional)i(parameters)e(are)h -(used,)f Fs($@)g Ft(is)g(pre\014xed)f(to)i(the)g(list.)150 -3705 y Fs(${!)p Fj(prefix)11 b Fs(*})150 3814 y(${!)p -Fj(prefix)g Fs(@})630 3924 y Ft(Expands)24 b(to)h(the)g(names)g(of)g(v) --5 b(ariables)26 b(whose)f(names)f(b)s(egin)h(with)f -Fq(pre\014x)p Ft(,)i(separated)f(b)m(y)630 4033 y(the)k(\014rst)f(c)m -(haracter)j(of)e(the)g Fs(IFS)f Ft(sp)s(ecial)i(v)-5 -b(ariable.)41 b(When)29 b(`)p Fs(@)p Ft(')g(is)g(used)f(and)h(the)g -(expan-)630 4143 y(sion)35 b(app)s(ears)g(within)f(double)h(quotes,)i -(eac)m(h)f(v)-5 b(ariable)36 b(name)f(expands)g(to)g(a)h(separate)630 -4253 y(w)m(ord.)150 4413 y Fs(${!)p Fj(name)11 b Fs([@]})150 -4522 y(${!)p Fj(name)g Fs([*]})630 4632 y Ft(If)26 b -Fq(name)32 b Ft(is)27 b(an)f(arra)m(y)h(v)-5 b(ariable,)29 -b(expands)d(to)h(the)g(list)g(of)g(arra)m(y)g(indices)g(\(k)m(eys\))h -(assigned)630 4741 y(in)c Fq(name)p Ft(.)39 b(If)24 b -Fq(name)30 b Ft(is)24 b(not)h(an)f(arra)m(y)-8 b(,)27 -b(expands)c(to)j(0)f(if)f Fq(name)30 b Ft(is)24 b(set)h(and)f(n)m(ull)g -(otherwise.)630 4851 y(When)39 b(`)p Fs(@)p Ft(')h(is)f(used)g(and)f -(the)i(expansion)f(app)s(ears)g(within)f(double)h(quotes,)k(eac)m(h)d -(k)m(ey)630 4961 y(expands)30 b(to)h(a)f(separate)i(w)m(ord.)150 -5121 y Fs(${#)p Fj(parameter)11 b Fs(})630 5230 y Ft(The)40 +3165 y(maxim)m(um)27 b(index)g(of)g(the)h(sp)s(eci\014ed)e(arra)m(y)-8 +b(.)41 b(Note)28 b(that)g(a)g(negativ)m(e)h(o\013set)f(m)m(ust)f(b)s(e) +g(sep-)630 3275 y(arated)d(from)e(the)i(colon)g(b)m(y)f(at)h(least)g +(one)g(space)f(to)h(a)m(v)m(oid)h(b)s(eing)d(confused)h(with)g(the)g(`) +p Fs(:-)p Ft(')630 3384 y(expansion.)61 b(Substring)35 +b(indexing)i(is)g(zero-based)h(unless)e(the)i(p)s(ositional)g +(parameters)630 3494 y(are)31 b(used,)f(in)g(whic)m(h)g(case)h(the)g +(indexing)f(starts)h(at)g(1.)150 3671 y Fs(${!)p Fj(prefix)11 +b Fs(*})150 3780 y(${!)p Fj(prefix)g Fs(@})630 3890 y +Ft(Expands)34 b(to)j(the)f(names)g(of)g(v)-5 b(ariables)37 +b(whose)e(names)h(b)s(egin)f(with)h Fq(pre\014x)p Ft(,)g(separated)630 +4000 y(b)m(y)30 b(the)h(\014rst)e(c)m(haracter)j(of)f(the)g +Fs(IFS)e Ft(sp)s(ecial)i(v)-5 b(ariable.)150 4177 y Fs(${!)p +Fj(name)11 b Fs([@]})150 4286 y(${!)p Fj(name)g Fs([*]})630 +4396 y Ft(If)26 b Fq(name)32 b Ft(is)27 b(an)f(arra)m(y)h(v)-5 +b(ariable,)29 b(expands)d(to)h(the)g(list)g(of)g(arra)m(y)g(indices)g +(\(k)m(eys\))h(assigned)630 4505 y(in)c Fq(name)p Ft(.)39 +b(If)24 b Fq(name)30 b Ft(is)24 b(not)h(an)f(arra)m(y)-8 +b(,)27 b(expands)c(to)j(0)f(if)f Fq(name)30 b Ft(is)24 +b(set)h(and)f(n)m(ull)g(otherwise.)630 4615 y(When)39 +b(`)p Fs(@)p Ft(')h(is)f(used)g(and)f(the)i(expansion)f(app)s(ears)g +(within)f(double)h(quotes,)k(eac)m(h)d(k)m(ey)630 4725 +y(expands)30 b(to)h(a)f(separate)i(w)m(ord.)150 4902 +y Fs(${#)p Fj(parameter)11 b Fs(})630 5011 y Ft(The)40 b(length)g(in)g(c)m(haracters)i(of)e(the)h(expanded)e(v)-5 b(alue)41 b(of)f Fq(parameter)47 b Ft(is)40 b(substituted.)630 -5340 y(If)i Fq(parameter)50 b Ft(is)43 b(`)p Fs(*)p Ft(')g(or)g(`)p +5121 y(If)i Fq(parameter)50 b Ft(is)43 b(`)p Fs(*)p Ft(')g(or)g(`)p Fs(@)p Ft(',)k(the)c(v)-5 b(alue)43 b(substituted)f(is)h(the)g(n)m(um)m -(b)s(er)f(of)h(p)s(ositional)p eop end +(b)s(er)f(of)h(p)s(ositional)630 5230 y(parameters.)i(If)32 +b Fq(parameter)38 b Ft(is)32 b(an)g(arra)m(y)g(name)g(subscripted)f(b)m +(y)g(`)p Fs(*)p Ft(')h(or)g(`)p Fs(@)p Ft(',)g(the)g(v)-5 +b(alue)630 5340 y(substituted)30 b(is)g(the)h(n)m(um)m(b)s(er)e(of)h +(elemen)m(ts)i(in)e(the)h(arra)m(y)-8 b(.)p eop end %%Page: 21 27 TeXDict begin 21 26 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(21)630 299 -y(parameters.)45 b(If)32 b Fq(parameter)38 b Ft(is)32 -b(an)g(arra)m(y)g(name)g(subscripted)f(b)m(y)g(`)p Fs(*)p -Ft(')h(or)g(`)p Fs(@)p Ft(',)g(the)g(v)-5 b(alue)630 -408 y(substituted)30 b(is)g(the)h(n)m(um)m(b)s(er)e(of)h(elemen)m(ts)i -(in)e(the)h(arra)m(y)-8 b(.)150 580 y Fs(${)p Fj(parameter)11 -b Fs(#)p Fj(word)g Fs(})150 690 y(${)p Fj(parameter)g -Fs(##)p Fj(word)g Fs(})630 800 y Ft(The)31 b Fq(w)m(ord)k -Ft(is)d(expanded)f(to)i(pro)s(duce)e(a)h(pattern)g(just)f(as)i(in)e -(\014lename)h(expansion)g(\(see)630 909 y(Section)k(3.5.8)h([Filename)g -(Expansion],)g(page)f(23\).)56 b(If)35 b(the)h(pattern)f(matc)m(hes)i -(the)e(b)s(e-)630 1019 y(ginning)28 b(of)g(the)h(expanded)e(v)-5 -b(alue)29 b(of)f Fq(parameter)p Ft(,)h(then)f(the)g(result)g(of)h(the)f -(expansion)g(is)630 1128 y(the)36 b(expanded)f(v)-5 b(alue)36 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(21)150 299 +y Fs(${)p Fj(parameter)11 b Fs(#)p Fj(word)g Fs(})150 +408 y(${)p Fj(parameter)g Fs(##)p Fj(word)g Fs(})630 +518 y Ft(The)31 b Fq(w)m(ord)k Ft(is)d(expanded)f(to)i(pro)s(duce)e(a)h +(pattern)g(just)f(as)i(in)e(\014lename)h(expansion)g(\(see)630 +628 y(Section)k(3.5.8)h([Filename)g(Expansion],)g(page)f(23\).)56 +b(If)35 b(the)h(pattern)f(matc)m(hes)i(the)e(b)s(e-)630 +737 y(ginning)28 b(of)g(the)h(expanded)e(v)-5 b(alue)29 +b(of)f Fq(parameter)p Ft(,)h(then)f(the)g(result)g(of)h(the)f +(expansion)g(is)630 847 y(the)36 b(expanded)f(v)-5 b(alue)36 b(of)g Fq(parameter)43 b Ft(with)35 b(the)h(shortest)g(matc)m(hing)h -(pattern)f(\(the)g(`)p Fs(#)p Ft(')630 1238 y(case\))26 +(pattern)f(\(the)g(`)p Fs(#)p Ft(')630 956 y(case\))26 b(or)f(the)g(longest)g(matc)m(hing)h(pattern)f(\(the)g(`)p Fs(##)p Ft(')g(case\))h(deleted.)39 b(If)24 b Fq(parameter)32 -b Ft(is)25 b(`)p Fs(@)p Ft(')630 1347 y(or)j(`)p Fs(*)p +b Ft(is)25 b(`)p Fs(@)p Ft(')630 1066 y(or)j(`)p Fs(*)p Ft(',)i(the)e(pattern)h(remo)m(v)-5 b(al)29 b(op)s(eration)g(is)f (applied)h(to)g(eac)m(h)g(p)s(ositional)g(parameter)g(in)630 -1457 y(turn,)i(and)g(the)h(expansion)g(is)g(the)g(resultan)m(t)g(list.) +1176 y(turn,)i(and)g(the)h(expansion)g(is)g(the)g(resultan)m(t)g(list.) 45 b(If)32 b Fq(parameter)38 b Ft(is)32 b(an)g(arra)m(y)g(v)-5 -b(ariable)630 1567 y(subscripted)39 b(with)g(`)p Fs(@)p +b(ariable)630 1285 y(subscripted)39 b(with)g(`)p Fs(@)p Ft(')h(or)g(`)p Fs(*)p Ft(',)j(the)d(pattern)h(remo)m(v)-5 b(al)41 b(op)s(eration)f(is)g(applied)g(to)h(eac)m(h)630 -1676 y(mem)m(b)s(er)30 b(of)g(the)h(arra)m(y)g(in)f(turn,)f(and)h(the)h -(expansion)f(is)g(the)h(resultan)m(t)g(list.)150 1848 +1395 y(mem)m(b)s(er)30 b(of)g(the)h(arra)m(y)g(in)f(turn,)f(and)h(the)h +(expansion)f(is)g(the)h(resultan)m(t)g(list.)150 1553 y Fs(${)p Fj(parameter)11 b Fs(\045)p Fj(word)g Fs(})150 -1958 y(${)p Fj(parameter)g Fs(\045\045)p Fj(word)g Fs(})630 -2067 y Ft(The)35 b Fq(w)m(ord)k Ft(is)c(expanded)g(to)h(pro)s(duce)e(a) +1662 y(${)p Fj(parameter)g Fs(\045\045)p Fj(word)g Fs(})630 +1772 y Ft(The)35 b Fq(w)m(ord)k Ft(is)c(expanded)g(to)h(pro)s(duce)e(a) i(pattern)f(just)g(as)h(in)f(\014lename)h(expansion.)55 -b(If)630 2177 y(the)43 b(pattern)g(matc)m(hes)h(a)g(trailing)g(p)s +b(If)630 1881 y(the)43 b(pattern)g(matc)m(hes)h(a)g(trailing)g(p)s (ortion)e(of)h(the)g(expanded)g(v)-5 b(alue)43 b(of)g -Fq(parameter)p Ft(,)630 2286 y(then)c(the)g(result)g(of)h(the)f +Fq(parameter)p Ft(,)630 1991 y(then)c(the)g(result)g(of)h(the)f (expansion)g(is)h(the)f(v)-5 b(alue)40 b(of)f Fq(parameter)46 -b Ft(with)39 b(the)h(shortest)630 2396 y(matc)m(hing)31 +b Ft(with)39 b(the)h(shortest)630 2100 y(matc)m(hing)31 b(pattern)e(\(the)h(`)p Fs(\045)p Ft(')g(case\))h(or)e(the)h(longest)h (matc)m(hing)f(pattern)g(\(the)g(`)p Fs(\045\045)p Ft(')g(case\))630 -2506 y(deleted.)49 b(If)32 b Fq(parameter)40 b Ft(is)33 +2210 y(deleted.)49 b(If)32 b Fq(parameter)40 b Ft(is)33 b(`)p Fs(@)p Ft(')g(or)g(`)p Fs(*)p Ft(',)h(the)f(pattern)g(remo)m(v)-5 -b(al)34 b(op)s(eration)g(is)f(applied)f(to)630 2615 y(eac)m(h)38 +b(al)34 b(op)s(eration)g(is)f(applied)f(to)630 2320 y(eac)m(h)38 b(p)s(ositional)g(parameter)g(in)f(turn,)h(and)e(the)h(expansion)g(is)h -(the)f(resultan)m(t)h(list.)61 b(If)630 2725 y Fq(parameter)38 +(the)f(resultan)m(t)h(list.)61 b(If)630 2429 y Fq(parameter)38 b Ft(is)32 b(an)f(arra)m(y)h(v)-5 b(ariable)32 b(subscripted)e(with)h (`)p Fs(@)p Ft(')g(or)h(`)p Fs(*)p Ft(',)g(the)f(pattern)h(remo)m(v)-5 -b(al)630 2834 y(op)s(eration)30 b(is)g(applied)f(to)i(eac)m(h)g(mem)m +b(al)630 2539 y(op)s(eration)30 b(is)g(applied)f(to)i(eac)m(h)g(mem)m (b)s(er)e(of)h(the)g(arra)m(y)g(in)f(turn,)g(and)g(the)h(expansion)g -(is)630 2944 y(the)h(resultan)m(t)g(list.)150 3116 y +(is)630 2648 y(the)h(resultan)m(t)g(list.)150 2806 y Fs(${)p Fj(parameter)11 b Fs(/)p Fj(pattern)g Fs(/)p -Fj(s)o(tri)o(ng)f Fs(})630 3225 y Ft(The)37 b Fq(pattern)g +Fj(s)o(tri)o(ng)f Fs(})630 2916 y Ft(The)37 b Fq(pattern)g Ft(is)g(expanded)g(to)h(pro)s(duce)e(a)h(pattern)g(just)g(as)h(in)e -(\014lename)i(expansion.)630 3335 y Fq(P)m(arameter)46 +(\014lename)i(expansion.)630 3025 y Fq(P)m(arameter)46 b Ft(is)38 b(expanded)f(and)g(the)i(longest)g(matc)m(h)g(of)f Fq(pattern)g Ft(against)h(its)f(v)-5 b(alue)39 b(is)630 -3445 y(replaced)34 b(with)e Fq(string)p Ft(.)49 b(If)33 +3135 y(replaced)34 b(with)e Fq(string)p Ft(.)49 b(If)33 b Fq(pattern)g Ft(b)s(egins)g(with)f(`)p Fs(/)p Ft(',)j(all)f(matc)m -(hes)g(of)f Fq(pattern)g Ft(are)h(re-)630 3554 y(placed)28 +(hes)g(of)f Fq(pattern)g Ft(are)h(re-)630 3244 y(placed)28 b(with)f Fq(string)p Ft(.)40 b(Normally)28 b(only)f(the)h(\014rst)e (matc)m(h)j(is)e(replaced.)40 b(If)27 b Fq(pattern)g -Ft(b)s(egins)630 3664 y(with)34 b(`)p Fs(#)p Ft(',)h(it)g(m)m(ust)f +Ft(b)s(egins)630 3354 y(with)34 b(`)p Fs(#)p Ft(',)h(it)g(m)m(ust)f (matc)m(h)h(at)f(the)h(b)s(eginning)e(of)h(the)g(expanded)f(v)-5 -b(alue)35 b(of)f Fq(parameter)p Ft(.)630 3773 y(If)g +b(alue)35 b(of)f Fq(parameter)p Ft(.)630 3464 y(If)g Fq(pattern)g Ft(b)s(egins)g(with)g(`)p Fs(\045)p Ft(',)h(it)g(m)m(ust)f (matc)m(h)h(at)g(the)f(end)g(of)g(the)h(expanded)e(v)-5 -b(alue)35 b(of)630 3883 y Fq(parameter)p Ft(.)41 b(If)29 +b(alue)35 b(of)630 3573 y Fq(parameter)p Ft(.)41 b(If)29 b Fq(string)37 b Ft(is)29 b(n)m(ull,)h(matc)m(hes)h(of)e Fq(pattern)h Ft(are)g(deleted)g(and)f(the)g Fs(/)g Ft(follo)m(wing)630 -3993 y Fq(pattern)34 b Ft(ma)m(y)g(b)s(e)f(omitted.)51 +3683 y Fq(pattern)34 b Ft(ma)m(y)g(b)s(e)f(omitted.)51 b(If)33 b Fq(parameter)41 b Ft(is)33 b(`)p Fs(@)p Ft(')h(or)g(`)p Fs(*)p Ft(',)g(the)g(substitution)f(op)s(eration)630 -4102 y(is)38 b(applied)g(to)g(eac)m(h)h(p)s(ositional)g(parameter)f(in) +3792 y(is)38 b(applied)g(to)g(eac)m(h)h(p)s(ositional)g(parameter)f(in) g(turn,)h(and)e(the)h(expansion)g(is)g(the)g(re-)630 -4212 y(sultan)m(t)f(list.)59 b(If)36 b Fq(parameter)43 +3902 y(sultan)m(t)f(list.)59 b(If)36 b Fq(parameter)43 b Ft(is)36 b(an)g(arra)m(y)h(v)-5 b(ariable)37 b(subscripted)e(with)h -(`)p Fs(@)p Ft(')g(or)h(`)p Fs(*)p Ft(',)h(the)630 4321 +(`)p Fs(@)p Ft(')g(or)h(`)p Fs(*)p Ft(',)h(the)630 4012 y(substitution)30 b(op)s(eration)h(is)f(applied)g(to)h(eac)m(h)g(mem)m (b)s(er)f(of)g(the)h(arra)m(y)g(in)f(turn,)f(and)h(the)630 -4431 y(expansion)g(is)h(the)f(resultan)m(t)h(list.)150 -4680 y Fk(3.5.4)63 b(Command)41 b(Substitution)275 4936 +4121 y(expansion)g(is)h(the)f(resultan)m(t)h(list.)150 +4343 y Fk(3.5.4)63 b(Command)41 b(Substitution)275 4586 y Ft(Command)29 b(substitution)i(allo)m(ws)h(the)f(output)g(of)g(a)g (command)g(to)g(replace)h(the)f(command)g(itself.)150 -5046 y(Command)e(substitution)h(o)s(ccurs)h(when)e(a)i(command)f(is)g -(enclosed)h(as)g(follo)m(ws:)390 5193 y Fs($\()p Fj(command)11 -b Fs(\))150 5340 y Ft(or)p eop end +4696 y(Command)e(substitution)h(o)s(ccurs)h(when)e(a)i(command)f(is)g +(enclosed)h(as)g(follo)m(ws:)390 4829 y Fs($\()p Fj(command)11 +b Fs(\))150 4963 y Ft(or)390 5097 y Fs(`)p Fj(command)g +Fs(`)150 5230 y Ft(Bash)45 b(p)s(erforms)f(the)h(expansion)f(b)m(y)h +(executing)i Fq(command)h Ft(and)c(replacing)i(the)f(command)g(sub-)150 +5340 y(stitution)c(with)f(the)g(standard)g(output)g(of)g(the)g +(command,)j(with)d(an)m(y)h(trailing)g(newlines)f(deleted.)p +eop end %%Page: 22 28 TeXDict begin 22 27 bop 150 -116 a Ft(22)2572 b(Bash)31 -b(Reference)g(Man)m(ual)390 299 y Fs(`)p Fj(command)11 -b Fs(`)150 450 y Ft(Bash)45 b(p)s(erforms)f(the)h(expansion)f(b)m(y)h -(executing)i Fq(command)h Ft(and)c(replacing)i(the)f(command)g(sub-)150 -560 y(stitution)c(with)f(the)g(standard)g(output)g(of)g(the)g(command,) -j(with)d(an)m(y)h(trailing)g(newlines)f(deleted.)150 -669 y(Em)m(b)s(edded)30 b(newlines)h(are)h(not)f(deleted,)i(but)e(they) -g(ma)m(y)h(b)s(e)f(remo)m(v)m(ed)i(during)d(w)m(ord)h(splitting.)44 -b(The)150 779 y(command)21 b(substitution)g Fs($\(cat)29 -b Fj(file)11 b Fs(\))20 b Ft(can)i(b)s(e)f(replaced)g(b)m(y)h(the)g -(equiv)-5 b(alen)m(t)22 b(but)f(faster)h Fs($\(<)30 b -Fj(file)11 b Fs(\))p Ft(.)275 930 y(When)33 b(the)i(old-st)m(yle)h(bac) -m(kquote)f(form)f(of)g(substitution)g(is)g(used,)h(bac)m(kslash)f -(retains)h(its)f(literal)150 1039 y(meaning)k(except)h(when)e(follo)m -(w)m(ed)j(b)m(y)e(`)p Fs($)p Ft(',)j(`)p Fs(`)p Ft(',)f(or)e(`)p -Fs(\\)p Ft('.)64 b(The)38 b(\014rst)f(bac)m(kquote)j(not)e(preceded)g -(b)m(y)g(a)150 1149 y(bac)m(kslash)j(terminates)g(the)f(command)g -(substitution.)69 b(When)40 b(using)g(the)g Fs($\()p -Fj(command)11 b Fs(\))37 b Ft(form,)42 b(all)150 1259 -y(c)m(haracters)32 b(b)s(et)m(w)m(een)f(the)f(paren)m(theses)h(mak)m(e) -g(up)f(the)g(command;)h(none)f(are)h(treated)g(sp)s(ecially)-8 -b(.)275 1410 y(Command)22 b(substitutions)g(ma)m(y)i(b)s(e)e(nested.)39 +b(Reference)g(Man)m(ual)150 299 y(Em)m(b)s(edded)f(newlines)h(are)h +(not)f(deleted,)i(but)e(they)g(ma)m(y)h(b)s(e)f(remo)m(v)m(ed)i(during) +d(w)m(ord)h(splitting.)44 b(The)150 408 y(command)21 +b(substitution)g Fs($\(cat)29 b Fj(file)11 b Fs(\))20 +b Ft(can)i(b)s(e)f(replaced)g(b)m(y)h(the)g(equiv)-5 +b(alen)m(t)22 b(but)f(faster)h Fs($\(<)30 b Fj(file)11 +b Fs(\))p Ft(.)275 547 y(When)33 b(the)i(old-st)m(yle)h(bac)m(kquote)f +(form)f(of)g(substitution)g(is)g(used,)h(bac)m(kslash)f(retains)h(its)f +(literal)150 656 y(meaning)k(except)h(when)e(follo)m(w)m(ed)j(b)m(y)e +(`)p Fs($)p Ft(',)j(`)p Fs(`)p Ft(',)f(or)e(`)p Fs(\\)p +Ft('.)64 b(The)38 b(\014rst)f(bac)m(kquote)j(not)e(preceded)g(b)m(y)g +(a)150 766 y(bac)m(kslash)j(terminates)g(the)f(command)g(substitution.) +69 b(When)40 b(using)g(the)g Fs($\()p Fj(command)11 b +Fs(\))37 b Ft(form,)42 b(all)150 875 y(c)m(haracters)32 +b(b)s(et)m(w)m(een)f(the)f(paren)m(theses)h(mak)m(e)g(up)f(the)g +(command;)h(none)f(are)h(treated)g(sp)s(ecially)-8 b(.)275 +1014 y(Command)22 b(substitutions)g(ma)m(y)i(b)s(e)e(nested.)39 b(T)-8 b(o)23 b(nest)g(when)f(using)h(the)g(bac)m(kquoted)h(form,)g -(escap)s(e)150 1519 y(the)31 b(inner)e(bac)m(kquotes)j(with)e(bac)m -(kslashes.)275 1670 y(If)e(the)i(substitution)e(app)s(ears)h(within)g +(escap)s(e)150 1123 y(the)31 b(inner)e(bac)m(kquotes)j(with)e(bac)m +(kslashes.)275 1262 y(If)e(the)i(substitution)e(app)s(ears)h(within)g (double)f(quotes,)i(w)m(ord)f(splitting)h(and)f(\014lename)g(expansion) -150 1780 y(are)i(not)f(p)s(erformed)f(on)h(the)h(results.)150 -2037 y Fk(3.5.5)63 b(Arithmetic)40 b(Expansion)275 2298 +150 1371 y(are)i(not)f(p)s(erformed)f(on)h(the)h(results.)150 +1603 y Fk(3.5.5)63 b(Arithmetic)40 b(Expansion)275 1851 y Ft(Arithmetic)33 b(expansion)f(allo)m(ws)i(the)e(ev)-5 b(aluation)34 b(of)f(an)f(arithmetic)i(expression)e(and)g(the)g -(substi-)150 2408 y(tution)f(of)f(the)h(result.)40 b(The)30 -b(format)h(for)f(arithmetic)i(expansion)e(is:)390 2559 -y Fs($\(\()47 b Fj(expression)55 b Fs(\)\))275 2710 y +(substi-)150 1960 y(tution)f(of)f(the)h(result.)40 b(The)30 +b(format)h(for)f(arithmetic)i(expansion)e(is:)390 2098 +y Fs($\(\()47 b Fj(expression)55 b Fs(\)\))275 2237 y Ft(The)33 b(expression)g(is)h(treated)g(as)g(if)g(it)g(w)m(ere)g (within)f(double)h(quotes,)h(but)e(a)h(double)f(quote)h(inside)150 -2819 y(the)27 b(paren)m(theses)g(is)g(not)g(treated)h(sp)s(ecially)-8 +2346 y(the)27 b(paren)m(theses)g(is)g(not)g(treated)h(sp)s(ecially)-8 b(.)41 b(All)27 b(tok)m(ens)h(in)e(the)h(expression)g(undergo)f -(parameter)h(ex-)150 2929 y(pansion,)h(command)f(substitution,)h(and)f +(parameter)h(ex-)150 2456 y(pansion,)h(command)f(substitution,)h(and)f (quote)i(remo)m(v)-5 b(al.)41 b(Arithmetic)28 b(expansions)g(ma)m(y)g -(b)s(e)f(nested.)275 3080 y(The)34 b(ev)-5 b(aluation)37 +(b)s(e)f(nested.)275 2594 y(The)34 b(ev)-5 b(aluation)37 b(is)f(p)s(erformed)e(according)i(to)g(the)g(rules)f(listed)h(b)s(elo)m -(w)g(\(see)g(Section)g(6.5)h([Shell)150 3190 y(Arithmetic],)32 -b(page)f(76\).)42 b(If)30 b(the)h(expression)f(is)g(in)m(v)-5 +(w)g(\(see)g(Section)g(6.5)h([Shell)150 2704 y(Arithmetic],)32 +b(page)f(74\).)42 b(If)30 b(the)h(expression)f(is)g(in)m(v)-5 b(alid,)32 b(Bash)e(prin)m(ts)g(a)h(message)g(indicating)h(failure)150 -3299 y(to)f(the)g(standard)e(error)h(and)g(no)g(substitution)g(o)s -(ccurs.)150 3557 y Fk(3.5.6)63 b(Pro)s(cess)42 b(Substitution)275 -3817 y Ft(Pro)s(cess)33 b(substitution)h(is)g(supp)s(orted)e(on)h +2813 y(to)f(the)g(standard)e(error)h(and)g(no)g(substitution)g(o)s +(ccurs.)150 3045 y Fk(3.5.6)63 b(Pro)s(cess)42 b(Substitution)275 +3293 y Ft(Pro)s(cess)33 b(substitution)h(is)g(supp)s(orted)e(on)h (systems)h(that)h(supp)s(ort)d(named)h(pip)s(es)g(\()p -Fl(fif)n(o)p Ft(s\))h(or)g(the)150 3927 y(`)p Fs(/dev/fd)p +Fl(fif)n(o)p Ft(s\))h(or)g(the)150 3402 y(`)p Fs(/dev/fd)p Ft(')29 b(metho)s(d)h(of)g(naming)g(op)s(en)g(\014les.)41 -b(It)30 b(tak)m(es)i(the)f(form)f(of)390 4078 y Fs(<\()p -Fj(list)11 b Fs(\))150 4229 y Ft(or)390 4380 y Fs(>\()p -Fj(list)g Fs(\))150 4531 y Ft(The)23 b(pro)s(cess)g Fq(list)j +b(It)30 b(tak)m(es)i(the)f(form)f(of)390 3540 y Fs(<\()p +Fj(list)11 b Fs(\))150 3679 y Ft(or)390 3817 y Fs(>\()p +Fj(list)g Fs(\))150 3955 y Ft(The)23 b(pro)s(cess)g Fq(list)j Ft(is)d(run)f(with)h(its)h(input)f(or)g(output)g(connected)h(to)h(a)e Fl(fif)n(o)g Ft(or)h(some)g(\014le)f(in)g(`)p Fs(/dev/fd)p -Ft('.)150 4641 y(The)28 b(name)h(of)g(this)f(\014le)h(is)g(passed)f(as) +Ft('.)150 4065 y(The)28 b(name)h(of)g(this)f(\014le)h(is)g(passed)f(as) h(an)f(argumen)m(t)h(to)h(the)f(curren)m(t)f(command)h(as)f(the)h -(result)g(of)g(the)150 4751 y(expansion.)40 b(If)28 b(the)h +(result)g(of)g(the)150 4174 y(expansion.)40 b(If)28 b(the)h Fs(>\()p Fj(list)11 b Fs(\))26 b Ft(form)i(is)h(used,)f(writing)h(to)g (the)g(\014le)f(will)h(pro)m(vide)g(input)f(for)g Fq(list)p -Ft(.)41 b(If)28 b(the)150 4860 y Fs(<\()p Fj(list)11 +Ft(.)41 b(If)28 b(the)150 4284 y Fs(<\()p Fj(list)11 b Fs(\))23 b Ft(form)h(is)i(used,)f(the)h(\014le)f(passed)g(as)g(an)g (argumen)m(t)h(should)e(b)s(e)h(read)g(to)h(obtain)g(the)f(output)g(of) -150 4970 y Fq(list)p Ft(.)41 b(Note)31 b(that)f(no)g(space)g(ma)m(y)g +150 4394 y Fq(list)p Ft(.)41 b(Note)31 b(that)f(no)g(space)g(ma)m(y)g (app)s(ear)f(b)s(et)m(w)m(een)h(the)g Fs(<)f Ft(or)h Fs(>)f Ft(and)g(the)h(left)g(paren)m(thesis,)h(otherwise)150 -5079 y(the)g(construct)f(w)m(ould)g(b)s(e)g(in)m(terpreted)h(as)f(a)h -(redirection.)275 5230 y(When)36 b(a)m(v)-5 b(ailable,)40 +4503 y(the)g(construct)f(w)m(ould)g(b)s(e)g(in)m(terpreted)h(as)f(a)h +(redirection.)275 4641 y(When)36 b(a)m(v)-5 b(ailable,)40 b(pro)s(cess)c(substitution)h(is)f(p)s(erformed)f(sim)m(ultaneously)i -(with)g(parameter)g(and)150 5340 y(v)-5 b(ariable)31 +(with)g(parameter)g(and)150 4751 y(v)-5 b(ariable)31 b(expansion,)g(command)f(substitution,)g(and)g(arithmetic)i(expansion.) -p eop end +150 4983 y Fk(3.5.7)63 b(W)-10 b(ord)41 b(Splitting)275 +5230 y Ft(The)35 b(shell)i(scans)f(the)g(results)g(of)g(parameter)h +(expansion,)h(command)d(substitution,)j(and)e(arith-)150 +5340 y(metic)31 b(expansion)g(that)g(did)e(not)i(o)s(ccur)f(within)g +(double)g(quotes)h(for)f(w)m(ord)g(splitting.)p eop end %%Page: 23 29 TeXDict begin 23 28 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(23)150 299 -y Fk(3.5.7)63 b(W)-10 b(ord)41 b(Splitting)275 544 y -Ft(The)35 b(shell)i(scans)f(the)g(results)g(of)g(parameter)h -(expansion,)h(command)d(substitution,)j(and)e(arith-)150 -654 y(metic)31 b(expansion)g(that)g(did)e(not)i(o)s(ccur)f(within)g -(double)g(quotes)h(for)f(w)m(ord)g(splitting.)275 790 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(23)275 299 y(The)43 b(shell)h(treats)h(eac)m(h)h(c)m(haracter)f(of)g Fs($IFS)e Ft(as)h(a)g(delimiter,)49 b(and)43 b(splits)h(the)h(results)e -(of)i(the)150 900 y(other)40 b(expansions)f(in)m(to)i(w)m(ords)e(on)h +(of)i(the)150 408 y(other)40 b(expansions)f(in)m(to)i(w)m(ords)e(on)h (these)g(c)m(haracters.)70 b(If)39 b Fs(IFS)g Ft(is)h(unset,)i(or)d -(its)h(v)-5 b(alue)40 b(is)g(exactly)150 1009 y Fs -()p Ft(,)26 b(the)32 b(default,)g(then)f -(sequences)h(of)62 b Fs()p Ft(,)30 b Fs()p -Ft(,)h(and)f Fs()150 1119 y Ft(at)39 b(the)f(b)s(eginning)g -(and)f(end)h(of)g(the)h(results)f(of)g(the)g(previous)g(expansions)g -(are)g(ignored,)j(and)d(an)m(y)150 1228 y(sequence)31 -b(of)g Fs(IFS)f Ft(c)m(haracters)j(not)e(at)g(the)g(b)s(eginning)g(or)f -(end)h(serv)m(es)g(to)h(delimit)f(w)m(ords.)42 b(If)30 -b Fs(IFS)g Ft(has)150 1338 y(a)g(v)-5 b(alue)30 b(other)g(than)g(the)g -(default,)g(then)f(sequences)h(of)g(the)g(whitespace)g(c)m(haracters)h -Fs(space)e Ft(and)g Fs(tab)150 1448 y Ft(are)36 b(ignored)g(at)g(the)g -(b)s(eginning)f(and)g(end)g(of)h(the)g(w)m(ord,)h(as)f(long)g(as)g(the) -g(whitespace)h(c)m(haracter)g(is)150 1557 y(in)f(the)g(v)-5 -b(alue)36 b(of)g Fs(IFS)f Ft(\(an)h Fs(IFS)f Ft(whitespace)h(c)m -(haracter\).)60 b(An)m(y)35 b(c)m(haracter)j(in)d Fs(IFS)g -Ft(that)i(is)f(not)g Fs(IFS)150 1667 y Ft(whitespace,)27 -b(along)f(with)f(an)m(y)g(adjacen)m(t)h Fs(IFS)e Ft(whitespace)i(c)m -(haracters,)i(delimits)e(a)f(\014eld.)38 b(A)26 b(sequence)150 -1776 y(of)35 b Fs(IFS)f Ft(whitespace)h(c)m(haracters)i(is)d(also)i -(treated)g(as)f(a)g(delimiter.)55 b(If)34 b(the)h(v)-5 -b(alue)35 b(of)g Fs(IFS)f Ft(is)h(n)m(ull,)h(no)150 1886 -y(w)m(ord)30 b(splitting)h(o)s(ccurs.)275 2022 y(Explicit)44 -b(n)m(ull)f(argumen)m(ts)g(\()p Fs("")g Ft(or)h Fs('')p -Ft(\))f(are)g(retained.)80 b(Unquoted)43 b(implicit)h(n)m(ull)f -(argumen)m(ts,)150 2132 y(resulting)24 b(from)f(the)g(expansion)g(of)h -(parameters)g(that)g(ha)m(v)m(e)h(no)e(v)-5 b(alues,)25 -b(are)f(remo)m(v)m(ed.)40 b(If)23 b(a)g(parameter)150 -2241 y(with)30 b(no)g(v)-5 b(alue)31 b(is)g(expanded)e(within)h(double) +(its)h(v)-5 b(alue)40 b(is)g(exactly)150 518 y Fs +()p Ft(,)20 b(the)25 b(default,)h(then)e(an)m(y)g +(sequence)h(of)g Fs(IFS)e Ft(c)m(haracters)j(serv)m(es)f(to)g(delimit) +150 628 y(w)m(ords.)38 b(If)21 b Fs(IFS)h Ft(has)g(a)h(v)-5 +b(alue)23 b(other)f(than)h(the)f(default,)j(then)d(sequences)g(of)h +(the)f(whitespace)h(c)m(haracters)150 737 y Fs(space)j +Ft(and)h Fs(tab)g Ft(are)h(ignored)g(at)h(the)f(b)s(eginning)f(and)g +(end)g(of)h(the)g(w)m(ord,)g(as)g(long)g(as)g(the)g(whitespace)150 +847 y(c)m(haracter)34 b(is)f(in)f(the)h(v)-5 b(alue)33 +b(of)f Fs(IFS)g Ft(\(an)h Fs(IFS)e Ft(whitespace)j(c)m(haracter\).)49 +b(An)m(y)32 b(c)m(haracter)i(in)f Fs(IFS)e Ft(that)150 +956 y(is)f(not)h Fs(IFS)f Ft(whitespace,)h(along)g(with)f(an)m(y)h +(adjacen)m(t)h Fs(IFS)d Ft(whitespace)i(c)m(haracters,)h(delimits)f(a)g +(\014eld.)150 1066 y(A)h(sequence)h(of)f Fs(IFS)f Ft(whitespace)i(c)m +(haracters)h(is)e(also)h(treated)g(as)g(a)f(delimiter.)47 +b(If)32 b(the)g(v)-5 b(alue)33 b(of)f Fs(IFS)150 1176 +y Ft(is)e(n)m(ull,)h(no)f(w)m(ord)g(splitting)h(o)s(ccurs.)275 +1304 y(Explicit)44 b(n)m(ull)f(argumen)m(ts)g(\()p Fs("")g +Ft(or)h Fs('')p Ft(\))f(are)g(retained.)80 b(Unquoted)43 +b(implicit)h(n)m(ull)f(argumen)m(ts,)150 1414 y(resulting)24 +b(from)f(the)g(expansion)g(of)h(parameters)g(that)g(ha)m(v)m(e)h(no)e +(v)-5 b(alues,)25 b(are)f(remo)m(v)m(ed.)40 b(If)23 b(a)g(parameter)150 +1524 y(with)30 b(no)g(v)-5 b(alue)31 b(is)g(expanded)e(within)h(double) g(quotes,)h(a)g(n)m(ull)f(argumen)m(t)h(results)f(and)g(is)g(retained.) -275 2377 y(Note)h(that)g(if)g(no)f(expansion)g(o)s(ccurs,)g(no)h -(splitting)g(is)f(p)s(erformed.)150 2604 y Fk(3.5.8)63 -b(Filename)41 b(Expansion)275 2850 y Ft(After)h(w)m(ord)g(splitting,)k -(unless)c(the)g(`)p Fs(-f)p Ft(')g(option)h(has)f(b)s(een)g(set)g -(\(see)i(Section)f(4.3.1)h([The)e(Set)150 2959 y(Builtin],)48 -b(page)c(49\),)k(Bash)43 b(scans)h(eac)m(h)g(w)m(ord)f(for)g(the)h(c)m -(haracters)h(`)p Fs(*)p Ft(',)i(`)p Fs(?)p Ft(',)g(and)42 -b(`)p Fs([)p Ft('.)80 b(If)43 b(one)h(of)150 3069 y(these)d(c)m -(haracters)g(app)s(ears,)i(then)d(the)g(w)m(ord)g(is)g(regarded)g(as)h -(a)g Fq(pattern)p Ft(,)i(and)c(replaced)i(with)f(an)150 -3179 y(alphab)s(etically)h(sorted)f(list)g(of)g(\014le)g(names)g(matc)m -(hing)h(the)f(pattern.)68 b(If)40 b(no)f(matc)m(hing)i(\014le)f(names) -150 3288 y(are)e(found,)g(and)f(the)h(shell)f(option)h -Fs(nullglob)e Ft(is)h(disabled,)i(the)f(w)m(ord)f(is)h(left)g(unc)m -(hanged.)62 b(If)37 b(the)150 3398 y Fs(nullglob)32 b -Ft(option)i(is)g(set,)h(and)f(no)f(matc)m(hes)i(are)g(found,)e(the)h(w) -m(ord)g(is)g(remo)m(v)m(ed.)52 b(If)33 b(the)h Fs(failglob)150 -3507 y Ft(shell)27 b(option)g(is)g(set,)h(and)e(no)g(matc)m(hes)i(are)f -(found,)f(an)h(error)f(message)i(is)e(prin)m(ted)g(and)g(the)h(command) -150 3617 y(is)h(not)h(executed.)41 b(If)28 b(the)g(shell)h(option)g -Fs(nocaseglob)c Ft(is)k(enabled,)g(the)f(matc)m(h)i(is)e(p)s(erformed)f -(without)150 3727 y(regard)j(to)h(the)g(case)g(of)g(alphab)s(etic)g(c)m -(haracters.)275 3863 y(When)21 b(a)i(pattern)f(is)g(used)g(for)f +275 1652 y(Note)h(that)g(if)g(no)f(expansion)g(o)s(ccurs,)g(no)h +(splitting)g(is)f(p)s(erformed.)150 1859 y Fk(3.5.8)63 +b(Filename)41 b(Expansion)275 2098 y Ft(After)22 b(w)m(ord)g +(splitting,)j(unless)d(the)h(`)p Fs(-f)p Ft(')f(option)h(has)f(b)s(een) +g(set)h(\(see)g(Section)h(4.3)f([The)f(Set)h(Builtin],)150 +2207 y(page)k(53\),)i(Bash)d(scans)h(eac)m(h)h(w)m(ord)e(for)g(the)h(c) +m(haracters)g(`)p Fs(*)p Ft(',)h(`)p Fs(?)p Ft(',)g(and)e(`)p +Fs([)p Ft('.)39 b(If)26 b(one)h(of)g(these)f(c)m(haracters)150 +2317 y(app)s(ears,)h(then)f(the)h(w)m(ord)f(is)h(regarded)g(as)g(a)g +Fq(pattern)p Ft(,)g(and)g(replaced)g(with)f(an)h(alphab)s(etically)h +(sorted)150 2426 y(list)k(of)g(\014le)g(names)g(matc)m(hing)h(the)f +(pattern.)45 b(If)32 b(no)f(matc)m(hing)i(\014le)f(names)g(are)g +(found,)f(and)h(the)g(shell)150 2536 y(option)c Fs(nullglob)e +Ft(is)i(disabled,)h(the)f(w)m(ord)g(is)g(left)g(unc)m(hanged.)40 +b(If)28 b(the)g Fs(nullglob)e Ft(option)i(is)g(set,)i(and)150 +2645 y(no)38 b(matc)m(hes)h(are)f(found,)h(the)f(w)m(ord)f(is)h(remo)m +(v)m(ed.)65 b(If)37 b(the)h Fs(failglob)e Ft(shell)i(option)g(is)g +(set,)j(and)c(no)150 2755 y(matc)m(hes)f(are)g(found,)f(an)g(error)f +(message)j(is)e(prin)m(ted)f(and)h(the)g(command)g(is)g(not)g +(executed.)56 b(If)35 b(the)150 2865 y(shell)e(option)h +Fs(nocaseglob)c Ft(is)j(enabled,)h(the)g(matc)m(h)g(is)f(p)s(erformed)e +(without)i(regard)g(to)h(the)g(case)g(of)150 2974 y(alphab)s(etic)d(c)m +(haracters.)275 3103 y(When)21 b(a)i(pattern)f(is)g(used)g(for)f (\014lename)i(generation,)i(the)d(c)m(haracter)i(`)p Fs(.)p Ft(')e(at)h(the)f(start)h(of)f(a)h(\014lename)150 -3972 y(or)g(immediately)i(follo)m(wing)g(a)f(slash)f(m)m(ust)h(b)s(e)f +3213 y(or)g(immediately)i(follo)m(wing)g(a)f(slash)f(m)m(ust)h(b)s(e)f (matc)m(hed)h(explicitly)-8 b(,)27 b(unless)c(the)g(shell)h(option)g -Fs(dotglob)150 4082 y Ft(is)31 b(set.)45 b(When)31 b(matc)m(hing)h(a)g +Fs(dotglob)150 3322 y Ft(is)31 b(set.)45 b(When)31 b(matc)m(hing)h(a)g (\014le)f(name,)h(the)g(slash)f(c)m(haracter)i(m)m(ust)e(alw)m(a)m(ys)i -(b)s(e)e(matc)m(hed)h(explicitly)-8 b(.)150 4191 y(In)30 +(b)s(e)e(matc)m(hed)h(explicitly)-8 b(.)150 3432 y(In)30 b(other)g(cases,)i(the)e(`)p Fs(.)p Ft(')h(c)m(haracter)h(is)e(not)h -(treated)g(sp)s(ecially)-8 b(.)275 4327 y(See)28 b(the)g(description)g -(of)g Fs(shopt)e Ft(in)i(Section)g(4.3.2)i([The)e(Shopt)f(Builtin],)i -(page)g(52,)g(for)f(a)g(descrip-)150 4437 y(tion)j(of)f(the)h -Fs(nocaseglob)p Ft(,)d Fs(nullglob)p Ft(,)g Fs(failglob)p -Ft(,)h(and)g Fs(dotglob)g Ft(options.)275 4573 y(The)j -Fs(GLOBIGNORE)f Ft(shell)i(v)-5 b(ariable)34 b(ma)m(y)g(b)s(e)f(used)f -(to)i(restrict)g(the)g(set)f(of)h(\014lenames)f(matc)m(hing)i(a)150 -4682 y(pattern.)k(If)25 b Fs(GLOBIGNORE)e Ft(is)j(set,)h(eac)m(h)g -(matc)m(hing)g(\014lename)f(that)g(also)h(matc)m(hes)f(one)g(of)g(the)g -(patterns)150 4792 y(in)33 b Fs(GLOBIGNORE)d Ft(is)j(remo)m(v)m(ed)h +(treated)g(sp)s(ecially)-8 b(.)275 3560 y(See)30 b(the)g(description)f +(of)h Fs(shopt)f Ft(in)g(Section)i(4.2)g([Bash)f(Builtins],)h(page)f +(41,)h(for)f(a)g(description)g(of)150 3670 y(the)h Fs(nocaseglob)p +Ft(,)c Fs(nullglob)p Ft(,)i Fs(failglob)p Ft(,)f(and)i +Fs(dotglob)e Ft(options.)275 3799 y(The)k Fs(GLOBIGNORE)f +Ft(shell)i(v)-5 b(ariable)34 b(ma)m(y)g(b)s(e)f(used)f(to)i(restrict)g +(the)g(set)f(of)h(\014lenames)f(matc)m(hing)i(a)150 3908 +y(pattern.)k(If)25 b Fs(GLOBIGNORE)e Ft(is)j(set,)h(eac)m(h)g(matc)m +(hing)g(\014lename)f(that)g(also)h(matc)m(hes)f(one)g(of)g(the)g +(patterns)150 4018 y(in)33 b Fs(GLOBIGNORE)d Ft(is)j(remo)m(v)m(ed)h (from)e(the)i(list)f(of)g(matc)m(hes.)50 b(The)33 b(\014lenames)g(`)p Fs(.)p Ft(')g(and)f(`)p Fs(..)p Ft(')h(are)g(alw)m(a)m(ys)150 -4902 y(ignored)g(when)e Fs(GLOBIGNORE)f Ft(is)j(set)g(and)f(not)h(n)m +4128 y(ignored)g(when)e Fs(GLOBIGNORE)f Ft(is)j(set)g(and)f(not)h(n)m (ull.)48 b(Ho)m(w)m(ev)m(er,)35 b(setting)f Fs(GLOBIGNORE)c -Ft(to)j(a)g(non-n)m(ull)150 5011 y(v)-5 b(alue)34 b(has)f(the)h +Ft(to)j(a)g(non-n)m(ull)150 4237 y(v)-5 b(alue)34 b(has)f(the)h (e\013ect)h(of)f(enabling)g(the)g Fs(dotglob)e Ft(shell)h(option,)j(so) -e(all)g(other)g(\014lenames)g(b)s(eginning)150 5121 y(with)43 +e(all)g(other)g(\014lenames)g(b)s(eginning)150 4347 y(with)43 b(a)h(`)p Fs(.)p Ft(')f(will)h(matc)m(h.)80 b(T)-8 b(o)44 b(get)h(the)e(old)h(b)s(eha)m(vior)f(of)h(ignoring)f(\014lenames)h(b)s -(eginning)f(with)g(a)150 5230 y(`)p Fs(.)p Ft(',)c(mak)m(e)g(`)p +(eginning)f(with)g(a)150 4456 y(`)p Fs(.)p Ft(',)c(mak)m(e)g(`)p Fs(.*)p Ft(')e(one)g(of)g(the)h(patterns)f(in)g Fs(GLOBIGNORE)p Ft(.)58 b(The)37 b Fs(dotglob)e Ft(option)j(is)f(disabled)g(when)150 -5340 y Fs(GLOBIGNORE)28 b Ft(is)i(unset.)p eop end +4566 y Fs(GLOBIGNORE)28 b Ft(is)i(unset.)150 4773 y Fk(3.5.8.1)63 +b(P)m(attern)40 b(Matc)m(hing)275 5011 y Ft(An)m(y)33 +b(c)m(haracter)i(that)f(app)s(ears)f(in)g(a)h(pattern,)g(other)g(than)f +(the)g(sp)s(ecial)h(pattern)g(c)m(haracters)h(de-)150 +5121 y(scrib)s(ed)30 b(b)s(elo)m(w,)h(matc)m(hes)h(itself.)43 +b(The)31 b Fl(nul)f Ft(c)m(haracter)i(ma)m(y)f(not)h(o)s(ccur)e(in)h(a) +g(pattern.)42 b(A)31 b(bac)m(kslash)150 5230 y(escap)s(es)36 +b(the)f(follo)m(wing)i(c)m(haracter;)j(the)c(escaping)g(bac)m(kslash)g +(is)f(discarded)g(when)g(matc)m(hing.)56 b(The)150 5340 +y(sp)s(ecial)31 b(pattern)f(c)m(haracters)i(m)m(ust)f(b)s(e)e(quoted)i +(if)f(they)h(are)f(to)i(b)s(e)d(matc)m(hed)i(literally)-8 +b(.)p eop end %%Page: 24 30 TeXDict begin 24 29 bop 150 -116 a Ft(24)2572 b(Bash)31 -b(Reference)g(Man)m(ual)150 299 y Fk(3.5.8.1)63 b(P)m(attern)40 -b(Matc)m(hing)275 547 y Ft(An)m(y)33 b(c)m(haracter)i(that)f(app)s -(ears)f(in)g(a)h(pattern,)g(other)g(than)f(the)g(sp)s(ecial)h(pattern)g -(c)m(haracters)h(de-)150 657 y(scrib)s(ed)30 b(b)s(elo)m(w,)h(matc)m -(hes)h(itself.)43 b(The)31 b Fl(nul)f Ft(c)m(haracter)i(ma)m(y)f(not)h -(o)s(ccur)e(in)h(a)g(pattern.)42 b(A)31 b(bac)m(kslash)150 -766 y(escap)s(es)36 b(the)f(follo)m(wing)i(c)m(haracter;)j(the)c -(escaping)g(bac)m(kslash)g(is)f(discarded)g(when)g(matc)m(hing.)56 -b(The)150 876 y(sp)s(ecial)31 b(pattern)f(c)m(haracters)i(m)m(ust)f(b)s -(e)e(quoted)i(if)f(they)h(are)f(to)i(b)s(e)d(matc)m(hed)i(literally)-8 -b(.)275 1014 y(The)29 b(sp)s(ecial)i(pattern)g(c)m(haracters)h(ha)m(v)m -(e)f(the)g(follo)m(wing)h(meanings:)150 1180 y Fs(*)432 -b Ft(Matc)m(hes)32 b(an)m(y)f(string,)f(including)g(the)h(n)m(ull)f -(string.)150 1343 y Fs(?)432 b Ft(Matc)m(hes)32 b(an)m(y)f(single)g(c)m -(haracter.)150 1506 y Fs([...)o(])241 b Ft(Matc)m(hes)27 -b(an)m(y)e(one)g(of)g(the)g(enclosed)g(c)m(haracters.)41 -b(A)25 b(pair)f(of)h(c)m(haracters)i(separated)e(b)m(y)g(a)630 -1616 y(h)m(yphen)i(denotes)h(a)g Fq(range)g(expression)p +b(Reference)g(Man)m(ual)275 299 y(The)e(sp)s(ecial)i(pattern)g(c)m +(haracters)h(ha)m(v)m(e)f(the)g(follo)m(wing)h(meanings:)150 +453 y Fs(*)432 b Ft(Matc)m(hes)32 b(an)m(y)f(string,)f(including)g(the) +h(n)m(ull)f(string.)150 606 y Fs(?)432 b Ft(Matc)m(hes)32 +b(an)m(y)f(single)g(c)m(haracter.)150 760 y Fs([...)o(])241 +b Ft(Matc)m(hes)27 b(an)m(y)e(one)g(of)g(the)g(enclosed)g(c)m +(haracters.)41 b(A)25 b(pair)f(of)h(c)m(haracters)i(separated)e(b)m(y)g +(a)630 870 y(h)m(yphen)i(denotes)h(a)g Fq(range)g(expression)p Ft(;)g(an)m(y)h(c)m(haracter)g(that)f(sorts)g(b)s(et)m(w)m(een)g(those) -h(t)m(w)m(o)630 1726 y(c)m(haracters,)f(inclusiv)m(e,)f(using)d(the)h +h(t)m(w)m(o)630 979 y(c)m(haracters,)f(inclusiv)m(e,)f(using)d(the)h (curren)m(t)f(lo)s(cale's)j(collating)g(sequence)e(and)f(c)m(haracter) -630 1835 y(set,)31 b(is)f(matc)m(hed.)42 b(If)30 b(the)g(\014rst)g(c)m +630 1089 y(set,)31 b(is)f(matc)m(hed.)42 b(If)30 b(the)g(\014rst)g(c)m (haracter)i(follo)m(wing)g(the)e(`)p Fs([)p Ft(')h(is)f(a)h(`)p Fs(!)p Ft(')f(or)g(a)h(`)p Fs(^)p Ft(')g(then)f(an)m(y)630 -1945 y(c)m(haracter)c(not)f(enclosed)g(is)g(matc)m(hed.)40 +1199 y(c)m(haracter)c(not)f(enclosed)g(is)g(matc)m(hed.)40 b(A)25 b(`)p Fp(\000)p Ft(')f(ma)m(y)i(b)s(e)e(matc)m(hed)h(b)m(y)f -(including)h(it)g(as)g(the)630 2054 y(\014rst)32 b(or)h(last)h(c)m +(including)h(it)g(as)g(the)630 1308 y(\014rst)32 b(or)h(last)h(c)m (haracter)h(in)e(the)g(set.)50 b(A)33 b(`)p Fs(])p Ft(')g(ma)m(y)h(b)s (e)e(matc)m(hed)i(b)m(y)f(including)g(it)g(as)h(the)630 -2164 y(\014rst)25 b(c)m(haracter)i(in)e(the)h(set.)40 +1418 y(\014rst)25 b(c)m(haracter)i(in)e(the)h(set.)40 b(The)25 b(sorting)h(order)f(of)h(c)m(haracters)h(in)f(range)g -(expressions)f(is)630 2273 y(determined)e(b)m(y)g(the)g(curren)m(t)f +(expressions)f(is)630 1527 y(determined)e(b)m(y)g(the)g(curren)m(t)f (lo)s(cale)j(and)e(the)g(v)-5 b(alue)23 b(of)g(the)h -Fs(LC_COLLATE)c Ft(shell)j(v)-5 b(ariable,)630 2383 y(if)30 -b(set.)630 2520 y(F)-8 b(or)34 b(example,)g(in)f(the)g(default)g(C)f +Fs(LC_COLLATE)c Ft(shell)j(v)-5 b(ariable,)630 1637 y(if)30 +b(set.)630 1769 y(F)-8 b(or)34 b(example,)g(in)f(the)g(default)g(C)f (lo)s(cale,)k(`)p Fs([a-dx-z])p Ft(')31 b(is)i(equiv)-5 -b(alen)m(t)34 b(to)g(`)p Fs([abcdxyz])p Ft('.)630 2629 +b(alen)m(t)34 b(to)g(`)p Fs([abcdxyz])p Ft('.)630 1878 y(Man)m(y)68 b(lo)s(cales)h(sort)f(c)m(haracters)h(in)e(dictionary)i -(order,)76 b(and)67 b(in)g(these)h(lo)s(cales)630 2739 +(order,)76 b(and)67 b(in)g(these)h(lo)s(cales)630 1988 y(`)p Fs([a-dx-z])p Ft(')36 b(is)i(t)m(ypically)i(not)e(equiv)-5 b(alen)m(t)39 b(to)g(`)p Fs([abcdxyz])p Ft(';)g(it)g(migh)m(t)f(b)s(e)f -(equiv)-5 b(alen)m(t)630 2848 y(to)34 b(`)p Fs([aBbCcDdxXyYz])p +(equiv)-5 b(alen)m(t)630 2097 y(to)34 b(`)p Fs([aBbCcDdxXyYz])p Ft(',)c(for)j(example.)49 b(T)-8 b(o)33 b(obtain)h(the)f(traditional)h -(in)m(terpretation)h(of)630 2958 y(ranges)e(in)f(brac)m(k)m(et)i +(in)m(terpretation)h(of)630 2207 y(ranges)e(in)f(brac)m(k)m(et)i (expressions,)g(y)m(ou)f(can)g(force)g(the)g(use)f(of)h(the)g(C)f(lo)s -(cale)i(b)m(y)f(setting)630 3067 y(the)e Fs(LC_COLLATE)c +(cale)i(b)m(y)f(setting)630 2317 y(the)e Fs(LC_COLLATE)c Ft(or)k Fs(LC_ALL)d Ft(en)m(vironmen)m(t)j(v)-5 b(ariable)31 -b(to)g(the)g(v)-5 b(alue)31 b(`)p Fs(C)p Ft('.)630 3204 +b(to)g(the)g(v)-5 b(alue)31 b(`)p Fs(C)p Ft('.)630 2448 y(Within)23 b(`)p Fs([)p Ft(')h(and)e(`)p Fs(])p Ft(',)j Fq(c)m(haracter)g(classes)j Ft(can)c(b)s(e)e(sp)s(eci\014ed)h(using)f (the)i(syn)m(tax)f Fs([:)p Fq(class)t Fs(:])p Ft(,)630 -3314 y(where)30 b Fq(class)35 b Ft(is)30 b(one)h(of)f(the)h(follo)m +2558 y(where)30 b Fq(class)35 b Ft(is)30 b(one)h(of)f(the)h(follo)m (wing)h(classes)f(de\014ned)e(in)h(the)h Fl(posix)f Ft(standard:)870 -3450 y Fs(alnum)142 b(alpha)g(ascii)f(blank)h(cntrl)g(digit)g(graph)g -(lower)870 3560 y(print)g(punct)g(space)f(upper)h(word)190 -b(xdigit)630 3696 y Ft(A)42 b(c)m(haracter)h(class)f(matc)m(hes)h(an)m +2690 y Fs(alnum)142 b(alpha)g(ascii)f(blank)h(cntrl)g(digit)g(graph)g +(lower)870 2799 y(print)g(punct)g(space)f(upper)h(word)190 +b(xdigit)630 2931 y Ft(A)42 b(c)m(haracter)h(class)f(matc)m(hes)h(an)m (y)f(c)m(haracter)h(b)s(elonging)f(to)g(that)g(class.)75 -b(The)41 b Fs(word)630 3806 y Ft(c)m(haracter)32 b(class)f(matc)m(hes)h +b(The)41 b Fs(word)630 3040 y Ft(c)m(haracter)32 b(class)f(matc)m(hes)h (letters,)f(digits,)h(and)d(the)i(c)m(haracter)h(`)p -Fs(_)p Ft('.)630 3942 y(Within)25 b(`)p Fs([)p Ft(')f(and)g(`)p +Fs(_)p Ft('.)630 3172 y(Within)25 b(`)p Fs([)p Ft(')f(and)g(`)p Fs(])p Ft(',)i(an)e Fq(equiv)-5 b(alence)26 b(class)j Ft(can)24 b(b)s(e)g(sp)s(eci\014ed)g(using)g(the)g(syn)m(tax)h -Fs([=)p Fq(c)6 b Fs(=])p Ft(,)630 4052 y(whic)m(h)29 +Fs([=)p Fq(c)6 b Fs(=])p Ft(,)630 3282 y(whic)m(h)29 b(matc)m(hes)i(all)f(c)m(haracters)h(with)e(the)h(same)g(collation)h(w) -m(eigh)m(t)g(\(as)f(de\014ned)e(b)m(y)i(the)630 4161 +m(eigh)m(t)g(\(as)f(de\014ned)e(b)m(y)i(the)630 3391 y(curren)m(t)g(lo)s(cale\))j(as)d(the)h(c)m(haracter)h -Fq(c)p Ft(.)630 4298 y(Within)22 b(`)p Fs([)p Ft(')f(and)g(`)p +Fq(c)p Ft(.)630 3523 y(Within)22 b(`)p Fs([)p Ft(')f(and)g(`)p Fs(])p Ft(',)j(the)d(syn)m(tax)h Fs([.)p Fq(sym)m(b)s(ol)t Fs(.])e Ft(matc)m(hes)i(the)g(collating)i(sym)m(b)s(ol)d -Fq(sym)m(b)s(ol)p Ft(.)275 4463 y(If)29 b(the)g Fs(extglob)f +Fq(sym)m(b)s(ol)p Ft(.)275 3677 y(If)29 b(the)g Fs(extglob)f Ft(shell)h(option)h(is)g(enabled)f(using)g(the)h Fs(shopt)e -Ft(builtin,)h(sev)m(eral)i(extended)f(pattern)150 4573 +Ft(builtin,)h(sev)m(eral)i(extended)f(pattern)150 3786 y(matc)m(hing)37 b(op)s(erators)e(are)h(recognized.)58 b(In)35 b(the)g(follo)m(wing)i(description,)g(a)f Fq(pattern-list)j -Ft(is)d(a)g(list)g(of)150 4682 y(one)d(or)f(more)h(patterns)f +Ft(is)d(a)g(list)g(of)150 3896 y(one)d(or)f(more)h(patterns)f (separated)h(b)m(y)f(a)h(`)p Fs(|)p Ft('.)47 b(Comp)s(osite)33 b(patterns)f(ma)m(y)i(b)s(e)d(formed)h(using)g(one)h(or)150 -4792 y(more)e(of)f(the)h(follo)m(wing)g(sub-patterns:)150 -4957 y Fs(?\()p Fj(pattern-list)11 b Fs(\))630 5067 y +4005 y(more)e(of)f(the)h(follo)m(wing)g(sub-patterns:)150 +4159 y Fs(?\()p Fj(pattern-list)11 b Fs(\))630 4269 y Ft(Matc)m(hes)32 b(zero)f(or)g(one)f(o)s(ccurrence)h(of)f(the)h(giv)m -(en)g(patterns.)150 5230 y Fs(*\()p Fj(pattern-list)11 -b Fs(\))630 5340 y Ft(Matc)m(hes)32 b(zero)f(or)g(more)f(o)s -(ccurrences)h(of)f(the)h(giv)m(en)g(patterns.)p eop end +(en)g(patterns.)150 4423 y Fs(*\()p Fj(pattern-list)11 +b Fs(\))630 4532 y Ft(Matc)m(hes)32 b(zero)f(or)g(more)f(o)s +(ccurrences)h(of)f(the)h(giv)m(en)g(patterns.)150 4686 +y Fs(+\()p Fj(pattern-list)11 b Fs(\))630 4796 y Ft(Matc)m(hes)32 +b(one)f(or)f(more)h(o)s(ccurrences)f(of)h(the)f(giv)m(en)i(patterns.) +150 4949 y Fs(@\()p Fj(pattern-list)11 b Fs(\))630 5059 +y Ft(Matc)m(hes)32 b(one)f(of)f(the)h(giv)m(en)g(patterns.)150 +5213 y Fs(!\()p Fj(pattern-list)11 b Fs(\))630 5322 y +Ft(Matc)m(hes)32 b(an)m(ything)f(except)g(one)g(of)f(the)h(giv)m(en)g +(patterns.)p eop end %%Page: 25 31 TeXDict begin 25 30 bop 150 -116 a Ft(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(25)150 299 -y Fs(+\()p Fj(pattern-list)11 b Fs(\))630 408 y Ft(Matc)m(hes)32 -b(one)f(or)f(more)h(o)s(ccurrences)f(of)h(the)f(giv)m(en)i(patterns.) -150 568 y Fs(@\()p Fj(pattern-list)11 b Fs(\))630 678 -y Ft(Matc)m(hes)32 b(one)f(of)f(the)h(giv)m(en)g(patterns.)150 -838 y Fs(!\()p Fj(pattern-list)11 b Fs(\))630 947 y Ft(Matc)m(hes)32 -b(an)m(ything)f(except)g(one)g(of)f(the)h(giv)m(en)g(patterns.)150 -1172 y Fk(3.5.9)63 b(Quote)41 b(Remo)m(v)-7 b(al)275 -1416 y Ft(After)32 b(the)h(preceding)f(expansions,)h(all)g(unquoted)f -(o)s(ccurrences)g(of)h(the)f(c)m(haracters)i(`)p Fs(\\)p -Ft(',)f(`)p Fs(')p Ft(',)h(and)150 1526 y(`)p Fs(")p -Ft(')d(that)g(did)e(not)i(result)f(from)g(one)h(of)f(the)h(ab)s(o)m(v)m -(e)g(expansions)f(are)h(remo)m(v)m(ed.)150 1784 y Fr(3.6)68 -b(Redirections)275 2029 y Ft(Before)33 b(a)h(command)e(is)h(executed,)i -(its)e(input)f(and)h(output)f(ma)m(y)i(b)s(e)e Fq(redirected)37 -b Ft(using)32 b(a)h(sp)s(ecial)150 2138 y(notation)g(in)m(terpreted)g -(b)m(y)f(the)g(shell.)46 b(Redirection)33 b(ma)m(y)g(also)g(b)s(e)f -(used)f(to)i(op)s(en)e(and)h(close)h(\014les)f(for)150 -2248 y(the)h(curren)m(t)g(shell)g(execution)h(en)m(vironmen)m(t.)49 -b(The)33 b(follo)m(wing)h(redirection)g(op)s(erators)f(ma)m(y)h -(precede)150 2357 y(or)29 b(app)s(ear)g(an)m(ywhere)g(within)g(a)h -(simple)f(command)g(or)h(ma)m(y)g(follo)m(w)g(a)g(command.)40 -b(Redirections)31 b(are)150 2467 y(pro)s(cessed)f(in)g(the)g(order)g -(they)h(app)s(ear,)f(from)g(left)h(to)g(righ)m(t.)275 -2602 y(In)c(the)i(follo)m(wing)h(descriptions,)g(if)e(the)h(\014le)g -(descriptor)f(n)m(um)m(b)s(er)g(is)g(omitted,)i(and)f(the)f(\014rst)g -(c)m(har-)150 2711 y(acter)42 b(of)f(the)g(redirection)g(op)s(erator)g -(is)g(`)p Fs(<)p Ft(',)i(the)e(redirection)g(refers)g(to)g(the)g -(standard)f(input)f(\(\014le)150 2821 y(descriptor)33 -b(0\).)49 b(If)33 b(the)g(\014rst)f(c)m(haracter)i(of)g(the)f -(redirection)g(op)s(erator)h(is)f(`)p Fs(>)p Ft(',)h(the)f(redirection) -g(refers)150 2931 y(to)e(the)g(standard)e(output)h(\(\014le)h -(descriptor)f(1\).)275 3065 y(The)h(w)m(ord)h(follo)m(wing)i(the)f -(redirection)g(op)s(erator)f(in)g(the)h(follo)m(wing)h(descriptions,)f -(unless)e(other-)150 3175 y(wise)21 b(noted,)i(is)e(sub)5 -b(jected)21 b(to)h(brace)f(expansion,)i(tilde)f(expansion,)h(parameter) -e(expansion,)i(command)150 3285 y(substitution,)31 b(arithmetic)h -(expansion,)f(quote)h(remo)m(v)-5 b(al,)33 b(\014lename)e(expansion,)g -(and)f(w)m(ord)h(splitting.)150 3394 y(If)f(it)h(expands)e(to)i(more)g -(than)f(one)h(w)m(ord,)f(Bash)h(rep)s(orts)e(an)h(error.)275 -3529 y(Note)h(that)g(the)g(order)f(of)g(redirections)h(is)g -(signi\014can)m(t.)41 b(F)-8 b(or)31 b(example,)h(the)e(command)390 -3664 y Fs(ls)47 b(>)h Fj(dirlist)56 b Fs(2>&1)150 3799 -y Ft(directs)28 b(b)s(oth)f(standard)g(output)g(\(\014le)h(descriptor)f -(1\))i(and)e(standard)f(error)i(\(\014le)g(descriptor)f(2\))h(to)h(the) -150 3908 y(\014le)h Fq(dirlist)p Ft(,)h(while)f(the)h(command)390 -4043 y Fs(ls)47 b(2>&1)g(>)g Fj(dirlist)150 4178 y Ft(directs)34 +y Fk(3.5.9)63 b(Quote)41 b(Remo)m(v)-7 b(al)275 550 y +Ft(After)32 b(the)h(preceding)f(expansions,)h(all)g(unquoted)f(o)s +(ccurrences)g(of)h(the)f(c)m(haracters)i(`)p Fs(\\)p +Ft(',)f(`)p Fs(')p Ft(',)h(and)150 659 y(`)p Fs(")p Ft(')d(that)g(did)e +(not)i(result)f(from)g(one)h(of)f(the)h(ab)s(o)m(v)m(e)g(expansions)f +(are)h(remo)m(v)m(ed.)150 933 y Fr(3.6)68 b(Redirections)275 +1184 y Ft(Before)33 b(a)h(command)e(is)h(executed,)i(its)e(input)f(and) +h(output)f(ma)m(y)i(b)s(e)e Fq(redirected)37 b Ft(using)32 +b(a)h(sp)s(ecial)150 1294 y(notation)g(in)m(terpreted)g(b)m(y)f(the)g +(shell.)46 b(Redirection)33 b(ma)m(y)g(also)g(b)s(e)f(used)f(to)i(op)s +(en)e(and)h(close)h(\014les)f(for)150 1403 y(the)h(curren)m(t)g(shell)g +(execution)h(en)m(vironmen)m(t.)49 b(The)33 b(follo)m(wing)h +(redirection)g(op)s(erators)f(ma)m(y)h(precede)150 1513 +y(or)29 b(app)s(ear)g(an)m(ywhere)g(within)g(a)h(simple)f(command)g(or) +h(ma)m(y)g(follo)m(w)g(a)g(command.)40 b(Redirections)31 +b(are)150 1623 y(pro)s(cessed)f(in)g(the)g(order)g(they)h(app)s(ear,)f +(from)g(left)h(to)g(righ)m(t.)275 1764 y(In)c(the)i(follo)m(wing)h +(descriptions,)g(if)e(the)h(\014le)g(descriptor)f(n)m(um)m(b)s(er)g(is) +g(omitted,)i(and)f(the)f(\014rst)g(c)m(har-)150 1873 +y(acter)42 b(of)f(the)g(redirection)g(op)s(erator)g(is)g(`)p +Fs(<)p Ft(',)i(the)e(redirection)g(refers)g(to)g(the)g(standard)f +(input)f(\(\014le)150 1983 y(descriptor)33 b(0\).)49 +b(If)33 b(the)g(\014rst)f(c)m(haracter)i(of)g(the)f(redirection)g(op)s +(erator)h(is)f(`)p Fs(>)p Ft(',)h(the)f(redirection)g(refers)150 +2093 y(to)e(the)g(standard)e(output)h(\(\014le)h(descriptor)f(1\).)275 +2234 y(The)h(w)m(ord)h(follo)m(wing)i(the)f(redirection)g(op)s(erator)f +(in)g(the)h(follo)m(wing)h(descriptions,)f(unless)e(other-)150 +2343 y(wise)21 b(noted,)i(is)e(sub)5 b(jected)21 b(to)h(brace)f +(expansion,)i(tilde)f(expansion,)h(parameter)e(expansion,)i(command)150 +2453 y(substitution,)31 b(arithmetic)h(expansion,)f(quote)h(remo)m(v)-5 +b(al,)33 b(\014lename)e(expansion,)g(and)f(w)m(ord)h(splitting.)150 +2563 y(If)f(it)h(expands)e(to)i(more)g(than)f(one)h(w)m(ord,)f(Bash)h +(rep)s(orts)e(an)h(error.)275 2704 y(Note)h(that)g(the)g(order)f(of)g +(redirections)h(is)g(signi\014can)m(t.)41 b(F)-8 b(or)31 +b(example,)h(the)e(command)390 2845 y Fs(ls)47 b(>)h +Fj(dirlist)56 b Fs(2>&1)150 2986 y Ft(directs)28 b(b)s(oth)f(standard)g +(output)g(\(\014le)h(descriptor)f(1\))i(and)e(standard)f(error)i +(\(\014le)g(descriptor)f(2\))h(to)h(the)150 3096 y(\014le)h +Fq(dirlist)p Ft(,)h(while)f(the)h(command)390 3237 y +Fs(ls)47 b(2>&1)g(>)g Fj(dirlist)150 3378 y Ft(directs)34 b(only)g(the)f(standard)g(output)g(to)h(\014le)g Fq(dirlist)p Ft(,)h(b)s(ecause)e(the)h(standard)f(error)g(w)m(as)h(duplicated)150 -4287 y(as)d(standard)e(output)h(b)s(efore)g(the)h(standard)e(output)h -(w)m(as)h(redirected)g(to)g Fq(dirlist)p Ft(.)275 4422 +3488 y(as)d(standard)e(output)h(b)s(efore)g(the)h(standard)e(output)h +(w)m(as)h(redirected)g(to)g Fq(dirlist)p Ft(.)275 3629 y(Bash)26 b(handles)f(sev)m(eral)j(\014lenames)e(sp)s(ecially)h(when)f (they)g(are)g(used)g(in)g(redirections,)i(as)e(describ)s(ed)150 -4532 y(in)k(the)h(follo)m(wing)g(table:)150 4692 y Fs(/dev/fd/)p -Fj(fd)630 4801 y Ft(If)f Fq(fd)j Ft(is)d(a)h(v)-5 b(alid)31 +3739 y(in)k(the)h(follo)m(wing)g(table:)150 3908 y Fs(/dev/fd/)p +Fj(fd)630 4018 y Ft(If)f Fq(fd)j Ft(is)d(a)h(v)-5 b(alid)31 b(in)m(teger,)h(\014le)e(descriptor)h Fq(fd)i Ft(is)d(duplicated.)150 -4961 y Fs(/dev/stdin)630 5071 y Ft(File)i(descriptor)e(0)h(is)f -(duplicated.)150 5230 y Fs(/dev/stdout)630 5340 y Ft(File)i(descriptor) -e(1)h(is)f(duplicated.)p eop end -%%Page: 26 32 -TeXDict begin 26 31 bop 150 -116 a Ft(26)2572 b(Bash)31 -b(Reference)g(Man)m(ual)150 299 y Fs(/dev/stderr)630 -408 y Ft(File)h(descriptor)e(2)h(is)f(duplicated.)150 -568 y Fs(/dev/tcp/)p Fj(host)11 b Fs(/)p Fj(port)630 -677 y Ft(If)41 b Fq(host)i Ft(is)f(a)g(v)-5 b(alid)41 +4184 y Fs(/dev/stdin)630 4294 y Ft(File)i(descriptor)e(0)h(is)f +(duplicated.)150 4460 y Fs(/dev/stdout)630 4569 y Ft(File)i(descriptor) +e(1)h(is)f(duplicated.)150 4735 y Fs(/dev/stderr)630 +4845 y Ft(File)i(descriptor)e(2)h(is)f(duplicated.)150 +5011 y Fs(/dev/tcp/)p Fj(host)11 b Fs(/)p Fj(port)630 +5121 y Ft(If)41 b Fq(host)i Ft(is)f(a)g(v)-5 b(alid)41 b(hostname)h(or)f(In)m(ternet)h(address,)i(and)c Fq(p)s(ort)j -Ft(is)f(an)f(in)m(teger)i(p)s(ort)630 787 y(n)m(um)m(b)s(er)h(or)h +Ft(is)f(an)f(in)m(teger)i(p)s(ort)630 5230 y(n)m(um)m(b)s(er)h(or)h (service)h(name,)j(Bash)c(attempts)h(to)g(op)s(en)f(a)g(TCP)g -(connection)h(to)g(the)630 897 y(corresp)s(onding)29 -b(so)s(c)m(k)m(et.)150 1056 y Fs(/dev/udp/)p Fj(host)11 -b Fs(/)p Fj(port)630 1166 y Ft(If)41 b Fq(host)i Ft(is)f(a)g(v)-5 +(connection)h(to)g(the)630 5340 y(corresp)s(onding)29 +b(so)s(c)m(k)m(et.)p eop end +%%Page: 26 32 +TeXDict begin 26 31 bop 150 -116 a Ft(26)2572 b(Bash)31 +b(Reference)g(Man)m(ual)150 299 y Fs(/dev/udp/)p Fj(host)11 +b Fs(/)p Fj(port)630 408 y Ft(If)41 b Fq(host)i Ft(is)f(a)g(v)-5 b(alid)41 b(hostname)h(or)f(In)m(ternet)h(address,)i(and)c -Fq(p)s(ort)j Ft(is)f(an)f(in)m(teger)i(p)s(ort)630 1275 +Fq(p)s(ort)j Ft(is)f(an)f(in)m(teger)i(p)s(ort)630 518 y(n)m(um)m(b)s(er)g(or)i(service)g(name,)k(Bash)c(attempts)g(to)h(op)s -(en)e(a)h(UDP)g(connection)g(to)h(the)630 1385 y(corresp)s(onding)29 -b(so)s(c)m(k)m(et.)275 1544 y(A)h(failure)h(to)g(op)s(en)e(or)i(create) -h(a)e(\014le)h(causes)g(the)f(redirection)h(to)g(fail.)275 -1679 y(Redirections)f(using)e(\014le)i(descriptors)f(greater)h(than)f -(9)h(should)e(b)s(e)h(used)f(with)h(care,)h(as)g(they)f(ma)m(y)150 -1788 y(con\015ict)i(with)f(\014le)h(descriptors)f(the)g(shell)h(uses)f -(in)m(ternally)-8 b(.)150 2012 y Fk(3.6.1)63 b(Redirecting)40 -b(Input)275 2257 y Ft(Redirection)35 b(of)f(input)g(causes)g(the)h +(en)e(a)h(UDP)g(connection)g(to)h(the)630 628 y(corresp)s(onding)29 +b(so)s(c)m(k)m(et.)275 782 y(A)h(failure)h(to)g(op)s(en)e(or)i(create)h +(a)e(\014le)h(causes)g(the)f(redirection)h(to)g(fail.)275 +914 y(Redirections)f(using)e(\014le)i(descriptors)f(greater)h(than)f(9) +h(should)e(b)s(e)h(used)f(with)h(care,)h(as)g(they)f(ma)m(y)150 +1024 y(con\015ict)i(with)f(\014le)h(descriptors)f(the)g(shell)h(uses)f +(in)m(ternally)-8 b(.)150 1241 y Fk(3.6.1)63 b(Redirecting)40 +b(Input)275 1483 y Ft(Redirection)35 b(of)f(input)g(causes)g(the)h (\014le)f(whose)g(name)h(results)f(from)g(the)g(expansion)g(of)h -Fq(w)m(ord)i Ft(to)150 2366 y(b)s(e)d(op)s(ened)g(for)g(reading)g(on)h +Fq(w)m(ord)i Ft(to)150 1592 y(b)s(e)d(op)s(ened)g(for)g(reading)g(on)h (\014le)f(descriptor)h Fs(n)p Ft(,)g(or)g(the)f(standard)g(input)g (\(\014le)h(descriptor)f(0\))h(if)g Fs(n)f Ft(is)150 -2476 y(not)d(sp)s(eci\014ed.)275 2610 y(The)e(general)j(format)e(for)h -(redirecting)g(input)e(is:)390 2745 y Fs([)p Fj(n)11 -b Fs(]<)p Fj(word)150 2969 y Fk(3.6.2)63 b(Redirecting)40 -b(Output)275 3213 y Ft(Redirection)31 b(of)f(output)g(causes)h(the)g +1702 y(not)d(sp)s(eci\014ed.)275 1834 y(The)e(general)j(format)e(for)h +(redirecting)g(input)e(is:)390 1966 y Fs([)p Fj(n)11 +b Fs(]<)p Fj(word)150 2183 y Fk(3.6.2)63 b(Redirecting)40 +b(Output)275 2425 y Ft(Redirection)31 b(of)f(output)g(causes)h(the)g (\014le)f(whose)g(name)h(results)f(from)f(the)i(expansion)f(of)h -Fq(w)m(ord)i Ft(to)150 3323 y(b)s(e)e(op)s(ened)g(for)g(writing)h(on)f +Fq(w)m(ord)i Ft(to)150 2534 y(b)s(e)e(op)s(ened)g(for)g(writing)h(on)f (\014le)h(descriptor)f Fq(n)p Ft(,)h(or)f(the)h(standard)f(output)g (\(\014le)h(descriptor)f(1\))h(if)g Fq(n)f Ft(is)150 -3432 y(not)j(sp)s(eci\014ed.)50 b(If)33 b(the)h(\014le)g(do)s(es)f(not) +2644 y(not)j(sp)s(eci\014ed.)50 b(If)33 b(the)h(\014le)g(do)s(es)f(not) h(exist)g(it)g(is)g(created;)j(if)c(it)h(do)s(es)g(exist)g(it)g(is)g -(truncated)g(to)g(zero)150 3542 y(size.)275 3676 y(The)29 +(truncated)g(to)g(zero)150 2753 y(size.)275 2885 y(The)29 b(general)j(format)e(for)h(redirecting)g(output)f(is:)390 -3811 y Fs([)p Fj(n)11 b Fs(]>[|])p Fj(word)275 3945 y +3018 y Fs([)p Fj(n)11 b Fs(]>[|])p Fj(word)275 3150 y Ft(If)30 b(the)h(redirection)g(op)s(erator)g(is)g(`)p Fs(>)p Ft(',)g(and)f(the)h Fs(noclobber)d Ft(option)j(to)g(the)g -Fs(set)f Ft(builtin)g(has)h(b)s(een)150 4055 y(enabled,)i(the)f +Fs(set)f Ft(builtin)g(has)h(b)s(een)150 3259 y(enabled,)i(the)f (redirection)h(will)f(fail)h(if)f(the)g(\014le)g(whose)g(name)g (results)g(from)g(the)g(expansion)g(of)g Fq(w)m(ord)150 -4164 y Ft(exists)f(and)f(is)g(a)h(regular)g(\014le.)41 +3369 y Ft(exists)f(and)f(is)g(a)h(regular)g(\014le.)41 b(If)30 b(the)h(redirection)g(op)s(erator)g(is)f(`)p Fs(>|)p Ft(',)h(or)f(the)h(redirection)g(op)s(erator)g(is)150 -4274 y(`)p Fs(>)p Ft(')36 b(and)f(the)g Fs(noclobber)e +3478 y(`)p Fs(>)p Ft(')36 b(and)f(the)g Fs(noclobber)e Ft(option)j(is)g(not)g(enabled,)h(the)e(redirection)h(is)g(attempted)g -(ev)m(en)h(if)e(the)h(\014le)150 4384 y(named)30 b(b)m(y)g -Fq(w)m(ord)k Ft(exists.)150 4608 y Fk(3.6.3)63 b(App)s(ending)42 -b(Redirected)e(Output)275 4852 y Ft(Redirection)29 b(of)g(output)f(in)g +(ev)m(en)h(if)e(the)h(\014le)150 3588 y(named)30 b(b)m(y)g +Fq(w)m(ord)k Ft(exists.)150 3805 y Fk(3.6.3)63 b(App)s(ending)42 +b(Redirected)e(Output)275 4047 y Ft(Redirection)29 b(of)g(output)f(in)g (this)h(fashion)f(causes)h(the)g(\014le)g(whose)f(name)h(results)f -(from)g(the)h(expan-)150 4961 y(sion)34 b(of)f Fq(w)m(ord)k +(from)g(the)h(expan-)150 4156 y(sion)34 b(of)f Fq(w)m(ord)k Ft(to)e(b)s(e)e(op)s(ened)g(for)g(app)s(ending)f(on)i(\014le)f (descriptor)h Fq(n)p Ft(,)g(or)g(the)f(standard)g(output)g(\(\014le)150 -5071 y(descriptor)d(1\))h(if)g Fq(n)f Ft(is)g(not)h(sp)s(eci\014ed.)40 +4266 y(descriptor)d(1\))h(if)g Fq(n)f Ft(is)g(not)h(sp)s(eci\014ed.)40 b(If)29 b(the)i(\014le)f(do)s(es)h(not)f(exist)h(it)g(is)g(created.)275 -5205 y(The)e(general)j(format)e(for)h(app)s(ending)e(output)h(is:)390 -5340 y Fs([)p Fj(n)11 b Fs(]>>)p Fj(word)p eop end +4398 y(The)e(general)j(format)e(for)h(app)s(ending)e(output)h(is:)390 +4530 y Fs([)p Fj(n)11 b Fs(]>>)p Fj(word)150 4747 y Fk(3.6.4)63 +b(Redirecting)40 b(Standard)h(Output)g(and)g(Standard)g(Error)275 +4989 y Ft(Bash)31 b(allo)m(ws)h(b)s(oth)e(the)h(standard)g(output)f +(\(\014le)i(descriptor)e(1\))i(and)e(the)i(standard)e(error)g(output) +150 5098 y(\(\014le)d(descriptor)g(2\))h(to)f(b)s(e)g(redirected)g(to)h +(the)f(\014le)g(whose)f(name)h(is)g(the)g(expansion)g(of)g +Fq(w)m(ord)j Ft(with)d(this)150 5208 y(construct.)275 +5340 y(There)i(are)i(t)m(w)m(o)h(formats)e(for)h(redirecting)g +(standard)e(output)h(and)g(standard)f(error:)p eop end %%Page: 27 33 TeXDict begin 27 32 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(27)150 299 -y Fk(3.6.4)63 b(Redirecting)40 b(Standard)h(Output)g(and)g(Standard)g -(Error)275 542 y Ft(Bash)31 b(allo)m(ws)h(b)s(oth)e(the)h(standard)g -(output)f(\(\014le)i(descriptor)e(1\))i(and)e(the)i(standard)e(error)g -(output)150 652 y(\(\014le)d(descriptor)g(2\))h(to)f(b)s(e)g -(redirected)g(to)h(the)f(\014le)g(whose)f(name)h(is)g(the)g(expansion)g -(of)g Fq(w)m(ord)j Ft(with)d(this)150 761 y(construct.)275 -895 y(There)i(are)i(t)m(w)m(o)h(formats)e(for)h(redirecting)g(standard) -e(output)h(and)g(standard)f(error:)390 1028 y Fs(&>)p -Fj(word)150 1162 y Ft(and)390 1296 y Fs(>&)p Fj(word)150 -1429 y Ft(Of)h(the)g(t)m(w)m(o)i(forms,)e(the)h(\014rst)e(is)i -(preferred.)39 b(This)30 b(is)g(seman)m(tically)j(equiv)-5 -b(alen)m(t)32 b(to)390 1563 y Fs(>)p Fj(word)57 b Fs(2>&1)150 -1784 y Fk(3.6.5)63 b(Here)41 b(Do)s(cumen)m(ts)275 2027 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(27)390 299 +y Fs(&>)p Fj(word)150 444 y Ft(and)390 590 y Fs(>&)p +Fj(word)150 736 y Ft(Of)30 b(the)g(t)m(w)m(o)i(forms,)e(the)h(\014rst)e +(is)i(preferred.)39 b(This)30 b(is)g(seman)m(tically)j(equiv)-5 +b(alen)m(t)32 b(to)390 881 y Fs(>)p Fj(word)57 b Fs(2>&1)150 +1128 y Fk(3.6.5)63 b(Here)41 b(Do)s(cumen)m(ts)275 1383 y Ft(This)28 b(t)m(yp)s(e)h(of)h(redirection)g(instructs)f(the)g(shell) h(to)g(read)f(input)f(from)h(the)g(curren)m(t)h(source)f(un)m(til)h(a) -150 2137 y(line)h(con)m(taining)g(only)g Fq(w)m(ord)i +150 1492 y(line)h(con)m(taining)g(only)g Fq(w)m(ord)i Ft(\(with)d(no)h(trailing)g(blanks\))f(is)g(seen.)41 b(All)31 b(of)f(the)h(lines)f(read)g(up)f(to)i(that)150 -2246 y(p)s(oin)m(t)f(are)h(then)f(used)g(as)g(the)h(standard)f(input)f -(for)h(a)h(command.)275 2380 y(The)e(format)i(of)g(here-do)s(cumen)m -(ts)f(is:)390 2514 y Fs(<<[)p Fp(\000)p Fs(])p Fj(word)772 -2623 y(here-document)390 2733 y(delimiter)275 2866 y +1602 y(p)s(oin)m(t)f(are)h(then)f(used)g(as)g(the)h(standard)f(input)f +(for)h(a)h(command.)275 1748 y(The)e(format)i(of)g(here-do)s(cumen)m +(ts)f(is:)390 1893 y Fs(<<[)p Fp(\000)p Fs(])p Fj(word)772 +2003 y(here-document)390 2112 y(delimiter)275 2258 y Ft(No)j(parameter)h(expansion,)g(command)f(substitution,)h(arithmetic)h -(expansion,)f(or)f(\014lename)g(ex-)150 2976 y(pansion)i(is)g(p)s +(expansion,)f(or)f(\014lename)g(ex-)150 2367 y(pansion)i(is)g(p)s (erformed)e(on)i Fq(w)m(ord)p Ft(.)55 b(If)34 b(an)m(y)i(c)m(haracters) g(in)f Fq(w)m(ord)j Ft(are)d(quoted,)i(the)e Fq(delimiter)43 -b Ft(is)35 b(the)150 3085 y(result)40 b(of)h(quote)g(remo)m(v)-5 +b Ft(is)35 b(the)150 2477 y(result)40 b(of)h(quote)g(remo)m(v)-5 b(al)42 b(on)e Fq(w)m(ord)p Ft(,)j(and)d(the)g(lines)h(in)f(the)h -(here-do)s(cumen)m(t)f(are)h(not)f(expanded.)150 3195 +(here-do)s(cumen)m(t)f(are)h(not)f(expanded.)150 2587 y(If)32 b Fq(w)m(ord)k Ft(is)d(unquoted,)f(all)i(lines)f(of)f(the)h (here-do)s(cumen)m(t)g(are)g(sub)5 b(jected)32 b(to)i(parameter)f -(expansion,)150 3305 y(command)25 b(substitution,)g(and)g(arithmetic)h +(expansion,)150 2696 y(command)25 b(substitution,)g(and)g(arithmetic)h (expansion.)39 b(In)24 b(the)h(latter)h(case,)h(the)e(c)m(haracter)i -(sequence)150 3414 y Fs(\\newline)h Ft(is)j(ignored,)f(and)g(`)p +(sequence)150 2806 y Fs(\\newline)h Ft(is)j(ignored,)f(and)g(`)p Fs(\\)p Ft(')h(m)m(ust)f(b)s(e)g(used)f(to)i(quote)g(the)g(c)m (haracters)h(`)p Fs(\\)p Ft(',)e(`)p Fs($)p Ft(',)h(and)f(`)p -Fs(`)p Ft('.)275 3548 y(If)21 b(the)i(redirection)g(op)s(erator)g(is)f +Fs(`)p Ft('.)275 2951 y(If)21 b(the)i(redirection)g(op)s(erator)g(is)f (`)p Fs(<<-)p Ft(',)i(then)e(all)h(leading)g(tab)g(c)m(haracters)h(are) -e(stripp)s(ed)f(from)h(input)150 3657 y(lines)33 b(and)f(the)h(line)h +e(stripp)s(ed)f(from)h(input)150 3061 y(lines)33 b(and)f(the)h(line)h (con)m(taining)g Fq(delimiter)p Ft(.)49 b(This)32 b(allo)m(ws)i (here-do)s(cumen)m(ts)f(within)f(shell)i(scripts)e(to)150 -3767 y(b)s(e)e(inden)m(ted)g(in)g(a)h(natural)f(fashion.)150 -3988 y Fk(3.6.6)63 b(Here)41 b(Strings)275 4232 y Ft(A)30 +3171 y(b)s(e)e(inden)m(ted)g(in)g(a)h(natural)f(fashion.)150 +3417 y Fk(3.6.6)63 b(Here)41 b(Strings)275 3672 y Ft(A)30 b(v)-5 b(arian)m(t)31 b(of)g(here)f(do)s(cumen)m(ts,)g(the)h(format)g -(is:)390 4365 y Fs(<<<)47 b Fj(word)275 4499 y Ft(The)29 +(is:)390 3818 y Fs(<<<)47 b Fj(word)275 3963 y Ft(The)29 b Fq(w)m(ord)34 b Ft(is)c(expanded)g(and)g(supplied)f(to)i(the)f -(command)h(on)f(its)h(standard)e(input.)150 4720 y Fk(3.6.7)63 -b(Duplicating)41 b(File)g(Descriptors)275 4963 y Ft(The)29 -b(redirection)i(op)s(erator)390 5097 y Fs([)p Fj(n)11 -b Fs(]<&)p Fj(word)150 5230 y Ft(is)35 b(used)e(to)j(duplicate)f(input) +(command)h(on)f(its)h(standard)e(input.)150 4210 y Fk(3.6.7)63 +b(Duplicating)41 b(File)g(Descriptors)275 4465 y Ft(The)29 +b(redirection)i(op)s(erator)390 4610 y Fs([)p Fj(n)11 +b Fs(]<&)p Fj(word)150 4756 y Ft(is)35 b(used)e(to)j(duplicate)f(input) f(\014le)g(descriptors.)53 b(If)34 b Fq(w)m(ord)k Ft(expands)c(to)h -(one)g(or)g(more)g(digits,)h(the)f(\014le)150 5340 y(descriptor)e +(one)g(or)g(more)g(digits,)h(the)f(\014le)150 4866 y(descriptor)e (denoted)h(b)m(y)g Fq(n)f Ft(is)g(made)h(to)g(b)s(e)f(a)h(cop)m(y)g(of) g(that)g(\014le)g(descriptor.)50 b(If)33 b(the)h(digits)g(in)f -Fq(w)m(ord)p eop end -%%Page: 28 34 -TeXDict begin 28 33 bop 150 -116 a Ft(28)2572 b(Bash)31 -b(Reference)g(Man)m(ual)150 299 y(do)e(not)h(sp)s(ecify)f(a)h(\014le)f +Fq(w)m(ord)150 4975 y Ft(do)c(not)h(sp)s(ecify)f(a)h(\014le)f (descriptor)g(op)s(en)g(for)g(input,)g(a)h(redirection)g(error)f(o)s (ccurs.)40 b(If)29 b Fq(w)m(ord)j Ft(ev)-5 b(aluates)150 -408 y(to)31 b(`)p Fs(-)p Ft(',)g(\014le)g(descriptor)g +5085 y(to)31 b(`)p Fs(-)p Ft(',)g(\014le)g(descriptor)g Fq(n)f Ft(is)g(closed.)43 b(If)30 b Fq(n)g Ft(is)g(not)h(sp)s (eci\014ed,)f(the)h(standard)f(input)g(\(\014le)h(descriptor)f(0\))150 -518 y(is)g(used.)275 653 y(The)f(op)s(erator)390 788 -y Fs([)p Fj(n)11 b Fs(]>&)p Fj(word)150 923 y Ft(is)40 -b(used)g(similarly)h(to)g(duplicate)f(output)g(\014le)h(descriptors.)70 -b(If)40 b Fq(n)f Ft(is)i(not)f(sp)s(eci\014ed,)i(the)f(standard)150 -1033 y(output)30 b(\(\014le)g(descriptor)g(1\))h(is)f(used.)39 -b(If)30 b(the)g(digits)h(in)e Fq(w)m(ord)34 b Ft(do)29 -b(not)i(sp)s(ecify)e(a)i(\014le)f(descriptor)g(op)s(en)150 -1142 y(for)38 b(output,)i(a)e(redirection)h(error)f(o)s(ccurs.)63 -b(As)38 b(a)h(sp)s(ecial)f(case,)k(if)c Fq(n)f Ft(is)h(omitted,)k(and) -37 b Fq(w)m(ord)k Ft(do)s(es)150 1252 y(not)28 b(expand)f(to)i(one)f -(or)f(more)h(digits,)i(the)e(standard)e(output)i(and)f(standard)g -(error)g(are)i(redirected)f(as)150 1361 y(describ)s(ed)h(previously)-8 -b(.)150 1587 y Fk(3.6.8)63 b(Mo)m(ving)41 b(File)h(Descriptors)275 -1831 y Ft(The)29 b(redirection)i(op)s(erator)390 1966 -y Fs([)p Fj(n)11 b Fs(]<&)p Fj(digit)p Fs(-)150 2101 -y Ft(mo)m(v)m(es)33 b(the)f(\014le)g(descriptor)f Fq(digit)k -Ft(to)d(\014le)g(descriptor)g Fq(n)p Ft(,)f(or)h(the)g(standard)f -(input)f(\(\014le)j(descriptor)e(0\))150 2211 y(if)f -Fq(n)g Ft(is)h(not)f(sp)s(eci\014ed.)40 b Fq(digit)33 -b Ft(is)e(closed)g(after)g(b)s(eing)f(duplicated)g(to)h -Fq(n)p Ft(.)275 2346 y(Similarly)-8 b(,)31 b(the)f(redirection)h(op)s -(erator)390 2481 y Fs([)p Fj(n)11 b Fs(]>&)p Fj(digit)p -Fs(-)150 2616 y Ft(mo)m(v)m(es)29 b(the)g(\014le)f(descriptor)f +5194 y(is)g(used.)275 5340 y(The)f(op)s(erator)p eop +end +%%Page: 28 34 +TeXDict begin 28 33 bop 150 -116 a Ft(28)2572 b(Bash)31 +b(Reference)g(Man)m(ual)390 299 y Fs([)p Fj(n)11 b Fs(]>&)p +Fj(word)150 434 y Ft(is)40 b(used)g(similarly)h(to)g(duplicate)f +(output)g(\014le)h(descriptors.)70 b(If)40 b Fq(n)f Ft(is)i(not)f(sp)s +(eci\014ed,)i(the)f(standard)150 543 y(output)30 b(\(\014le)g +(descriptor)g(1\))h(is)f(used.)39 b(If)30 b(the)g(digits)h(in)e +Fq(w)m(ord)34 b Ft(do)29 b(not)i(sp)s(ecify)e(a)i(\014le)f(descriptor)g +(op)s(en)150 653 y(for)38 b(output,)i(a)e(redirection)h(error)f(o)s +(ccurs.)63 b(As)38 b(a)h(sp)s(ecial)f(case,)k(if)c Fq(n)f +Ft(is)h(omitted,)k(and)37 b Fq(w)m(ord)k Ft(do)s(es)150 +763 y(not)28 b(expand)f(to)i(one)f(or)f(more)h(digits,)i(the)e +(standard)e(output)i(and)f(standard)g(error)g(are)i(redirected)f(as)150 +872 y(describ)s(ed)h(previously)-8 b(.)150 1097 y Fk(3.6.8)63 +b(Mo)m(ving)41 b(File)h(Descriptors)275 1342 y Ft(The)29 +b(redirection)i(op)s(erator)390 1477 y Fs([)p Fj(n)11 +b Fs(]<&)p Fj(digit)p Fs(-)150 1612 y Ft(mo)m(v)m(es)33 +b(the)f(\014le)g(descriptor)f Fq(digit)k Ft(to)d(\014le)g(descriptor)g +Fq(n)p Ft(,)f(or)h(the)g(standard)f(input)f(\(\014le)j(descriptor)e +(0\))150 1722 y(if)f Fq(n)g Ft(is)h(not)f(sp)s(eci\014ed.)40 +b Fq(digit)33 b Ft(is)e(closed)g(after)g(b)s(eing)f(duplicated)g(to)h +Fq(n)p Ft(.)275 1857 y(Similarly)-8 b(,)31 b(the)f(redirection)h(op)s +(erator)390 1992 y Fs([)p Fj(n)11 b Fs(]>&)p Fj(digit)p +Fs(-)150 2127 y Ft(mo)m(v)m(es)29 b(the)g(\014le)f(descriptor)f Fq(digit)k Ft(to)e(\014le)f(descriptor)g Fq(n)p Ft(,)g(or)g(the)g (standard)f(output)h(\(\014le)g(descriptor)g(1\))150 -2725 y(if)i Fq(n)g Ft(is)h(not)f(sp)s(eci\014ed.)150 -2951 y Fk(3.6.9)63 b(Op)s(ening)42 b(File)f(Descriptors)h(for)g -(Reading)f(and)g(W)-10 b(riting)275 3195 y Ft(The)29 -b(redirection)i(op)s(erator)390 3330 y Fs([)p Fj(n)11 -b Fs(]<>)p Fj(word)150 3465 y Ft(causes)39 b(the)g(\014le)g(whose)g +2236 y(if)i Fq(n)g Ft(is)h(not)f(sp)s(eci\014ed.)150 +2462 y Fk(3.6.9)63 b(Op)s(ening)42 b(File)f(Descriptors)h(for)g +(Reading)f(and)g(W)-10 b(riting)275 2706 y Ft(The)29 +b(redirection)i(op)s(erator)390 2841 y Fs([)p Fj(n)11 +b Fs(]<>)p Fj(word)150 2976 y Ft(causes)39 b(the)g(\014le)g(whose)g (name)g(is)g(the)g(expansion)g(of)g Fq(w)m(ord)j Ft(to)d(b)s(e)g(op)s -(ened)f(for)g(b)s(oth)h(reading)g(and)150 3575 y(writing)33 +(ened)f(for)g(b)s(oth)h(reading)g(and)150 3086 y(writing)33 b(on)f(\014le)h(descriptor)f Fq(n)p Ft(,)h(or)g(on)f(\014le)h (descriptor)g(0)g(if)f Fq(n)g Ft(is)h(not)g(sp)s(eci\014ed.)47 -b(If)32 b(the)h(\014le)f(do)s(es)h(not)150 3684 y(exist,)e(it)g(is)g -(created.)150 3943 y Fr(3.7)68 b(Executing)46 b(Commands)150 -4278 y Fk(3.7.1)63 b(Simple)41 b(Command)h(Expansion)275 -4522 y Ft(When)35 b(a)h(simple)f(command)h(is)f(executed,)j(the)e +b(If)32 b(the)h(\014le)f(do)s(es)h(not)150 3195 y(exist,)e(it)g(is)g +(created.)150 3454 y Fr(3.7)68 b(Executing)46 b(Commands)150 +3789 y Fk(3.7.1)63 b(Simple)41 b(Command)h(Expansion)275 +4034 y Ft(When)35 b(a)h(simple)f(command)h(is)f(executed,)j(the)e (shell)g(p)s(erforms)e(the)i(follo)m(wing)h(expansions,)f(as-)150 -4632 y(signmen)m(ts,)31 b(and)f(redirections,)h(from)f(left)h(to)g -(righ)m(t.)199 4767 y(1.)61 b(The)38 b(w)m(ords)f(that)i(the)g(parser)e +4143 y(signmen)m(ts,)31 b(and)f(redirections,)h(from)f(left)h(to)g +(righ)m(t.)199 4278 y(1.)61 b(The)38 b(w)m(ords)f(that)i(the)g(parser)e (has)h(mark)m(ed)g(as)h(v)-5 b(ariable)39 b(assignmen)m(ts)g(\(those)g -(preceding)f(the)330 4876 y(command)30 b(name\))h(and)f(redirections)h +(preceding)f(the)330 4388 y(command)30 b(name\))h(and)f(redirections)h (are)f(sa)m(v)m(ed)i(for)e(later)h(pro)s(cessing.)199 -5011 y(2.)61 b(The)39 b(w)m(ords)g(that)i(are)f(not)g(v)-5 +4523 y(2.)61 b(The)39 b(w)m(ords)g(that)i(are)f(not)g(v)-5 b(ariable)40 b(assignmen)m(ts)h(or)e(redirections)i(are)f(expanded)f -(\(see)h(Sec-)330 5121 y(tion)d(3.5)i([Shell)e(Expansions],)h(page)g +(\(see)h(Sec-)330 4632 y(tion)d(3.5)i([Shell)e(Expansions],)h(page)g (17\).)61 b(If)37 b(an)m(y)g(w)m(ords)f(remain)h(after)h(expansion,)h -(the)e(\014rst)330 5230 y(w)m(ord)31 b(is)g(tak)m(en)h(to)g(b)s(e)f +(the)e(\014rst)330 4742 y(w)m(ord)31 b(is)g(tak)m(en)h(to)g(b)s(e)f (the)g(name)h(of)f(the)h(command)f(and)f(the)i(remaining)f(w)m(ords)g -(are)g(the)h(argu-)330 5340 y(men)m(ts.)p eop end +(are)g(the)h(argu-)330 4851 y(men)m(ts.)199 4986 y(3.)61 +b(Redirections)25 b(are)f(p)s(erformed)f(as)h(describ)s(ed)f(ab)s(o)m +(v)m(e)i(\(see)g(Section)g(3.6)g([Redirections],)i(page)d(25\).)199 +5121 y(4.)61 b(The)25 b(text)h(after)f(the)g(`)p Fs(=)p +Ft(')h(in)e(eac)m(h)j(v)-5 b(ariable)25 b(assignmen)m(t)h(undergo)s(es) +e(tilde)i(expansion,)g(parameter)330 5230 y(expansion,)49 +b(command)d(substitution,)j(arithmetic)d(expansion,)k(and)45 +b(quote)h(remo)m(v)-5 b(al)46 b(b)s(efore)330 5340 y(b)s(eing)30 +b(assigned)h(to)g(the)f(v)-5 b(ariable.)p eop end %%Page: 29 35 TeXDict begin 29 34 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(29)199 299 -y(3.)61 b(Redirections)25 b(are)f(p)s(erformed)f(as)h(describ)s(ed)f -(ab)s(o)m(v)m(e)i(\(see)g(Section)g(3.6)g([Redirections],)i(page)d -(25\).)199 444 y(4.)61 b(The)25 b(text)h(after)f(the)g(`)p -Fs(=)p Ft(')h(in)e(eac)m(h)j(v)-5 b(ariable)25 b(assignmen)m(t)h -(undergo)s(es)e(tilde)i(expansion,)g(parameter)330 554 -y(expansion,)49 b(command)d(substitution,)j(arithmetic)d(expansion,)k -(and)45 b(quote)h(remo)m(v)-5 b(al)46 b(b)s(efore)330 -663 y(b)s(eing)30 b(assigned)h(to)g(the)f(v)-5 b(ariable.)275 -855 y(If)32 b(no)i(command)f(name)g(results,)h(the)g(v)-5 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(29)275 299 +y(If)32 b(no)i(command)f(name)g(results,)h(the)g(v)-5 b(ariable)34 b(assignmen)m(ts)g(a\013ect)h(the)f(curren)m(t)f(shell)h -(en)m(viron-)150 965 y(men)m(t.)39 b(Otherwise,)27 b(the)e(v)-5 +(en)m(viron-)150 408 y(men)m(t.)39 b(Otherwise,)27 b(the)e(v)-5 b(ariables)26 b(are)g(added)f(to)h(the)f(en)m(vironmen)m(t)h(of)g(the)f -(executed)h(command)g(and)150 1074 y(do)35 b(not)f(a\013ect)j(the)d +(executed)h(command)g(and)150 518 y(do)35 b(not)f(a\013ect)j(the)d (curren)m(t)h(shell)g(en)m(vironmen)m(t.)54 b(If)34 b(an)m(y)h(of)g -(the)f(assignmen)m(ts)i(attempts)f(to)h(assign)150 1184 +(the)f(assignmen)m(ts)i(attempts)f(to)h(assign)150 628 y(a)j(v)-5 b(alue)39 b(to)g(a)g(readonly)f(v)-5 b(ariable,)42 b(an)c(error)g(o)s(ccurs,)j(and)c(the)i(command)f(exits)h(with)g(a)f -(non-zero)150 1293 y(status.)275 1449 y(If)33 b(no)g(command)g(name)h +(non-zero)150 737 y(status.)275 875 y(If)33 b(no)g(command)g(name)h (results,)g(redirections)g(are)g(p)s(erformed,)f(but)g(do)h(not)f -(a\013ect)i(the)f(curren)m(t)150 1559 y(shell)d(en)m(vironmen)m(t.)41 +(a\013ect)i(the)f(curren)m(t)150 985 y(shell)d(en)m(vironmen)m(t.)41 b(A)30 b(redirection)h(error)f(causes)h(the)g(command)f(to)h(exit)g -(with)f(a)h(non-zero)g(status.)275 1715 y(If)26 b(there)i(is)f(a)h +(with)f(a)h(non-zero)g(status.)275 1123 y(If)26 b(there)i(is)f(a)h (command)f(name)h(left)g(after)g(expansion,)g(execution)h(pro)s(ceeds)e -(as)g(describ)s(ed)f(b)s(elo)m(w.)150 1825 y(Otherwise,)39 +(as)g(describ)s(ed)f(b)s(elo)m(w.)150 1233 y(Otherwise,)39 b(the)e(command)g(exits.)62 b(If)37 b(one)g(of)g(the)h(expansions)f -(con)m(tained)h(a)g(command)f(substitu-)150 1934 y(tion,)i(the)d(exit)h +(con)m(tained)h(a)g(command)f(substitu-)150 1342 y(tion,)i(the)d(exit)h (status)g(of)f(the)h(command)f(is)h(the)f(exit)h(status)g(of)f(the)h -(last)g(command)f(substitution)150 2044 y(p)s(erformed.)55 +(last)g(command)f(substitution)150 1452 y(p)s(erformed.)55 b(If)35 b(there)g(w)m(ere)h(no)g(command)f(substitutions,)i(the)e -(command)h(exits)g(with)f(a)h(status)g(of)150 2153 y(zero.)150 -2421 y Fk(3.7.2)63 b(Command)41 b(Searc)m(h)f(and)h(Execution)275 -2686 y Ft(After)35 b(a)h(command)f(has)h(b)s(een)e(split)i(in)m(to)g(w) +(command)h(exits)g(with)f(a)h(status)g(of)150 1561 y(zero.)150 +1793 y Fk(3.7.2)63 b(Command)41 b(Searc)m(h)f(and)h(Execution)275 +2040 y Ft(After)35 b(a)h(command)f(has)h(b)s(een)e(split)i(in)m(to)g(w) m(ords,)h(if)e(it)h(results)g(in)f(a)h(simple)f(command)g(and)g(an)150 -2796 y(optional)d(list)f(of)f(argumen)m(ts,)h(the)g(follo)m(wing)g -(actions)h(are)f(tak)m(en.)199 2952 y(1.)61 b(If)24 b(the)g(command)g +2150 y(optional)d(list)f(of)f(argumen)m(ts,)h(the)g(follo)m(wing)g +(actions)h(are)f(tak)m(en.)199 2288 y(1.)61 b(If)24 b(the)g(command)g (name)g(con)m(tains)i(no)e(slashes,)i(the)e(shell)h(attempts)g(to)g(lo) -s(cate)h(it.)39 b(If)24 b(there)g(exists)330 3062 y(a)h(shell)g +s(cate)h(it.)39 b(If)24 b(there)g(exists)330 2398 y(a)h(shell)g (function)f(b)m(y)g(that)h(name,)h(that)f(function)f(is)h(in)m(v)m(ok)m (ed)h(as)e(describ)s(ed)g(in)g(Section)h(3.3)h([Shell)330 -3171 y(F)-8 b(unctions],)31 b(page)h(14.)199 3317 y(2.)61 +2507 y(F)-8 b(unctions],)31 b(page)h(14.)199 2643 y(2.)61 b(If)41 b(the)g(name)h(do)s(es)f(not)g(matc)m(h)i(a)e(function,)j(the)e (shell)f(searc)m(hes)i(for)e(it)h(in)f(the)g(list)h(of)g(shell)330 -3426 y(builtins.)e(If)30 b(a)h(matc)m(h)g(is)f(found,)g(that)h(builtin) -f(is)g(in)m(v)m(ok)m(ed.)199 3571 y(3.)61 b(If)40 b(the)g(name)h(is)f +2753 y(builtins.)e(If)30 b(a)h(matc)m(h)g(is)f(found,)g(that)h(builtin) +f(is)g(in)m(v)m(ok)m(ed.)199 2889 y(3.)61 b(If)40 b(the)g(name)h(is)f (neither)h(a)f(shell)h(function)f(nor)g(a)g(builtin,)j(and)d(con)m -(tains)h(no)g(slashes,)i(Bash)330 3681 y(searc)m(hes)c(eac)m(h)g +(tains)h(no)g(slashes,)i(Bash)330 2999 y(searc)m(hes)c(eac)m(h)g (elemen)m(t)g(of)g Fs($PATH)d Ft(for)i(a)g(directory)h(con)m(taining)g -(an)f(executable)h(\014le)f(b)m(y)g(that)330 3791 y(name.)56 +(an)f(executable)h(\014le)f(b)m(y)g(that)330 3109 y(name.)56 b(Bash)36 b(uses)f(a)h(hash)e(table)j(to)f(remem)m(b)s(er)f(the)h(full) -f(pathnames)g(of)h(executable)h(\014les)e(to)330 3900 +f(pathnames)g(of)h(executable)h(\014les)e(to)330 3218 y(a)m(v)m(oid)e(m)m(ultiple)f Fs(PATH)f Ft(searc)m(hes)i(\(see)f(the)g (description)g(of)f Fs(hash)g Ft(in)g(Section)i(4.1)f([Bourne)g(Shell) -330 4010 y(Builtins],)37 b(page)f(35\).)55 b(A)35 b(full)g(searc)m(h)g +330 3328 y(Builtins],)37 b(page)f(35\).)55 b(A)35 b(full)g(searc)m(h)g (of)g(the)g(directories)h(in)f Fs($PATH)e Ft(is)i(p)s(erformed)f(only)h -(if)g(the)330 4119 y(command)c(is)g(not)g(found)f(in)g(the)i(hash)e +(if)g(the)330 3437 y(command)c(is)g(not)g(found)f(in)g(the)i(hash)e (table.)43 b(If)31 b(the)g(searc)m(h)h(is)f(unsuccessful,)f(the)h -(shell)g(prin)m(ts)330 4229 y(an)f(error)g(message)i(and)e(returns)f -(an)h(exit)h(status)g(of)f(127.)199 4374 y(4.)61 b(If)33 +(shell)g(prin)m(ts)330 3547 y(an)f(error)g(message)i(and)e(returns)f +(an)h(exit)h(status)g(of)f(127.)199 3683 y(4.)61 b(If)33 b(the)g(searc)m(h)h(is)g(successful,)g(or)f(if)g(the)h(command)f(name)g -(con)m(tains)i(one)f(or)f(more)g(slashes,)i(the)330 4484 +(con)m(tains)i(one)f(or)f(more)g(slashes,)i(the)330 3793 y(shell)g(executes)h(the)f(named)f(program)g(in)h(a)g(separate)h (execution)f(en)m(vironmen)m(t.)55 b(Argumen)m(t)35 b(0)330 -4593 y(is)30 b(set)h(to)h(the)e(name)h(giv)m(en,)g(and)f(the)h +3902 y(is)30 b(set)h(to)h(the)e(name)h(giv)m(en,)g(and)f(the)h (remaining)f(argumen)m(ts)h(to)g(the)g(command)f(are)h(set)g(to)g(the) -330 4703 y(argumen)m(ts)g(supplied,)e(if)h(an)m(y)-8 -b(.)199 4848 y(5.)61 b(If)35 b(this)h(execution)h(fails)f(b)s(ecause)g +330 4012 y(argumen)m(ts)g(supplied,)e(if)h(an)m(y)-8 +b(.)199 4148 y(5.)61 b(If)35 b(this)h(execution)h(fails)f(b)s(ecause)g (the)f(\014le)h(is)g(not)g(in)f(executable)j(format,)f(and)e(the)h -(\014le)g(is)g(not)330 4958 y(a)d(directory)-8 b(,)34 +(\014le)g(is)g(not)330 4258 y(a)d(directory)-8 b(,)34 b(it)f(is)g(assumed)e(to)j(b)s(e)d(a)i Fq(shell)g(script)h Ft(and)e(the)h(shell)f(executes)i(it)f(as)g(describ)s(ed)e(in)330 -5067 y(Section)g(3.8)h([Shell)e(Scripts],)g(page)i(32.)199 -5213 y(6.)61 b(If)38 b(the)h(command)f(w)m(as)h(not)g(b)s(egun)e(async) +4367 y(Section)g(3.8)h([Shell)e(Scripts],)g(page)i(32.)199 +4504 y(6.)61 b(If)38 b(the)h(command)f(w)m(as)h(not)g(b)s(egun)e(async) m(hronously)-8 b(,)42 b(the)c(shell)h(w)m(aits)h(for)e(the)h(command)f -(to)330 5322 y(complete)32 b(and)e(collects)i(its)f(exit)g(status.)p -eop end +(to)330 4613 y(complete)32 b(and)e(collects)i(its)f(exit)g(status.)150 +4845 y Fk(3.7.3)63 b(Command)41 b(Execution)f(En)m(vironmen)m(t)275 +5092 y Ft(The)29 b(shell)i(has)f(an)g Fq(execution)i(en)m(vironmen)m(t) +p Ft(,)f(whic)m(h)f(consists)h(of)g(the)f(follo)m(wing:)225 +5230 y Fp(\017)60 b Ft(op)s(en)32 b(\014les)g(inherited)g(b)m(y)h(the)f +(shell)h(at)g(in)m(v)m(o)s(cation,)j(as)c(mo)s(di\014ed)g(b)m(y)g +(redirections)h(supplied)e(to)330 5340 y(the)g Fs(exec)e +Ft(builtin)p eop end %%Page: 30 36 TeXDict begin 30 35 bop 150 -116 a Ft(30)2572 b(Bash)31 -b(Reference)g(Man)m(ual)150 299 y Fk(3.7.3)63 b(Command)41 -b(Execution)f(En)m(vironmen)m(t)275 551 y Ft(The)29 b(shell)i(has)f(an) -g Fq(execution)i(en)m(vironmen)m(t)p Ft(,)f(whic)m(h)f(consists)h(of)g -(the)f(follo)m(wing:)225 693 y Fp(\017)60 b Ft(op)s(en)32 -b(\014les)g(inherited)g(b)m(y)h(the)f(shell)h(at)g(in)m(v)m(o)s -(cation,)j(as)c(mo)s(di\014ed)g(b)m(y)g(redirections)h(supplied)e(to) -330 802 y(the)g Fs(exec)e Ft(builtin)225 940 y Fp(\017)60 -b Ft(the)28 b(curren)m(t)g(w)m(orking)h(directory)g(as)f(set)h(b)m(y)f +b(Reference)g(Man)m(ual)225 299 y Fp(\017)60 b Ft(the)28 +b(curren)m(t)g(w)m(orking)h(directory)g(as)f(set)h(b)m(y)f Fs(cd)p Ft(,)g Fs(pushd)p Ft(,)g(or)g Fs(popd)p Ft(,)g(or)g(inherited)g -(b)m(y)g(the)h(shell)f(at)330 1050 y(in)m(v)m(o)s(cation)225 -1188 y Fp(\017)60 b Ft(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)g -(as)h(set)g(b)m(y)f Fs(umask)f Ft(or)h(inherited)g(from)g(the)h -(shell's)f(paren)m(t)225 1327 y Fp(\017)60 b Ft(curren)m(t)30 -b(traps)g(set)h(b)m(y)f Fs(trap)225 1465 y Fp(\017)60 -b Ft(shell)30 b(parameters)f(that)h(are)g(set)g(b)m(y)g(v)-5 -b(ariable)30 b(assignmen)m(t)g(or)g(with)f Fs(set)f Ft(or)i(inherited)f -(from)g(the)330 1574 y(shell's)i(paren)m(t)f(in)g(the)h(en)m(vironmen)m -(t)225 1713 y Fp(\017)60 b Ft(shell)44 b(functions)f(de\014ned)f -(during)h(execution)i(or)e(inherited)h(from)f(the)h(shell's)g(paren)m -(t)f(in)h(the)330 1822 y(en)m(vironmen)m(t)225 1961 y -Fp(\017)60 b Ft(options)33 b(enabled)g(at)h(in)m(v)m(o)s(cation)h -(\(either)f(b)m(y)f(default)g(or)g(with)g(command-line)g(argumen)m -(ts\))h(or)330 2070 y(b)m(y)c Fs(set)225 2208 y Fp(\017)60 -b Ft(options)31 b(enabled)f(b)m(y)g Fs(shopt)f Ft(\(see)j(Section)f -(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g(52\))225 2347 -y Fp(\017)60 b Ft(shell)31 b(aliases)g(de\014ned)f(with)g -Fs(alias)f Ft(\(see)i(Section)g(6.6)h([Aliases],)g(page)f(77\))225 -2485 y Fp(\017)60 b Ft(v)-5 b(arious)50 b(pro)s(cess)f +(b)m(y)g(the)h(shell)f(at)330 408 y(in)m(v)m(o)s(cation)225 +539 y Fp(\017)60 b Ft(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)g(as) +h(set)g(b)m(y)f Fs(umask)f Ft(or)h(inherited)g(from)g(the)h(shell's)f +(paren)m(t)225 670 y Fp(\017)60 b Ft(curren)m(t)30 b(traps)g(set)h(b)m +(y)f Fs(trap)225 801 y Fp(\017)60 b Ft(shell)30 b(parameters)f(that)h +(are)g(set)g(b)m(y)g(v)-5 b(ariable)30 b(assignmen)m(t)g(or)g(with)f +Fs(set)f Ft(or)i(inherited)f(from)g(the)330 910 y(shell's)i(paren)m(t)f +(in)g(the)h(en)m(vironmen)m(t)225 1041 y Fp(\017)60 b +Ft(shell)44 b(functions)f(de\014ned)f(during)h(execution)i(or)e +(inherited)h(from)f(the)h(shell's)g(paren)m(t)f(in)h(the)330 +1151 y(en)m(vironmen)m(t)225 1281 y Fp(\017)60 b Ft(options)33 +b(enabled)g(at)h(in)m(v)m(o)s(cation)h(\(either)f(b)m(y)f(default)g(or) +g(with)g(command-line)g(argumen)m(ts\))h(or)330 1391 +y(b)m(y)c Fs(set)225 1522 y Fp(\017)60 b Ft(options)31 +b(enabled)f(b)m(y)g Fs(shopt)225 1653 y Fp(\017)60 b +Ft(shell)31 b(aliases)g(de\014ned)f(with)g Fs(alias)f +Ft(\(see)i(Section)g(6.6)h([Aliases],)g(page)f(75\))225 +1783 y Fp(\017)60 b Ft(v)-5 b(arious)50 b(pro)s(cess)f Fl(id)p Ft(s,)55 b(including)49 b(those)i(of)e(bac)m(kground)h(jobs)f -(\(see)i(Section)g(3.2.3)g([Lists],)330 2595 y(page)31 +(\(see)i(Section)g(3.2.3)g([Lists],)330 1893 y(page)31 b(9\),)g(the)g(v)-5 b(alue)31 b(of)f Fs($$)p Ft(,)g(and)g(the)h(v)-5 -b(alue)31 b(of)f Fs($PPID)275 2765 y Ft(When)k(a)g(simple)h(command)f +b(alue)31 b(of)f Fs($PPID)275 2045 y Ft(When)k(a)g(simple)h(command)f (other)g(than)g(a)h(builtin)f(or)g(shell)h(function)f(is)g(to)h(b)s(e)f -(executed,)i(it)f(is)150 2875 y(in)m(v)m(ok)m(ed)25 b(in)f(a)g +(executed,)i(it)f(is)150 2154 y(in)m(v)m(ok)m(ed)25 b(in)f(a)g (separate)h(execution)g(en)m(vironmen)m(t)g(that)f(consists)g(of)h(the) -f(follo)m(wing.)40 b(Unless)24 b(otherwise)150 2984 y(noted,)31 +f(follo)m(wing.)40 b(Unless)24 b(otherwise)150 2264 y(noted,)31 b(the)f(v)-5 b(alues)31 b(are)g(inherited)f(from)g(the)g(shell.)225 -3127 y Fp(\017)60 b Ft(the)31 b(shell's)h(op)s(en)e(\014les,)i(plus)e +2395 y Fp(\017)60 b Ft(the)31 b(shell's)h(op)s(en)e(\014les,)i(plus)e (an)m(y)h(mo)s(di\014cations)h(and)e(additions)h(sp)s(eci\014ed)g(b)m -(y)g(redirections)g(to)330 3236 y(the)g(command)225 3374 +(y)g(redirections)g(to)330 2504 y(the)g(command)225 2635 y Fp(\017)60 b Ft(the)31 b(curren)m(t)f(w)m(orking)g(directory)225 -3513 y Fp(\017)60 b Ft(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)225 -3651 y Fp(\017)60 b Ft(shell)32 b(v)-5 b(ariables)33 +2766 y Fp(\017)60 b Ft(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)225 +2897 y Fp(\017)60 b Ft(shell)32 b(v)-5 b(ariables)33 b(and)e(functions)h(mark)m(ed)g(for)g(exp)s(ort,)g(along)h(with)f(v)-5 -b(ariables)32 b(exp)s(orted)g(for)g(the)330 3761 y(command,)e(passed)g +b(ariables)32 b(exp)s(orted)g(for)g(the)330 3006 y(command,)e(passed)g (in)g(the)h(en)m(vironmen)m(t)g(\(see)g(Section)g(3.7.4)i([En)m -(vironmen)m(t],)e(page)g(31\))225 3899 y Fp(\017)60 b +(vironmen)m(t],)e(page)g(30\))225 3137 y Fp(\017)60 b Ft(traps)31 b(caugh)m(t)h(b)m(y)f(the)g(shell)h(are)f(reset)h(to)g(the) f(v)-5 b(alues)32 b(inherited)e(from)h(the)g(shell's)h(paren)m(t,)g -(and)330 4008 y(traps)e(ignored)h(b)m(y)f(the)g(shell)h(are)g(ignored) -275 4179 y(A)41 b(command)g(in)m(v)m(ok)m(ed)i(in)e(this)h(separate)g +(and)330 3247 y(traps)e(ignored)h(b)m(y)f(the)g(shell)h(are)g(ignored) +275 3399 y(A)41 b(command)g(in)m(v)m(ok)m(ed)i(in)e(this)h(separate)g (en)m(vironmen)m(t)g(cannot)g(a\013ect)h(the)f(shell's)g(execution)150 -4289 y(en)m(vironmen)m(t.)275 4431 y(Command)35 b(substitution,)j +3508 y(en)m(vironmen)m(t.)275 3639 y(Command)35 b(substitution,)j (commands)e(group)s(ed)f(with)i(paren)m(theses,)h(and)e(async)m -(hronous)g(com-)150 4540 y(mands)c(are)h(in)m(v)m(ok)m(ed)i(in)d(a)i +(hronous)g(com-)150 3748 y(mands)c(are)h(in)m(v)m(ok)m(ed)i(in)d(a)i (subshell)e(en)m(vironmen)m(t)h(that)h(is)f(a)g(duplicate)h(of)f(the)g -(shell)g(en)m(vironmen)m(t,)150 4650 y(except)i(that)g(traps)f(caugh)m +(shell)g(en)m(vironmen)m(t,)150 3858 y(except)i(that)g(traps)f(caugh)m (t)h(b)m(y)f(the)h(shell)f(are)g(reset)h(to)g(the)f(v)-5 b(alues)35 b(that)g(the)f(shell)h(inherited)e(from)150 -4760 y(its)g(paren)m(t)f(at)h(in)m(v)m(o)s(cation.)49 +3968 y(its)g(paren)m(t)f(at)h(in)m(v)m(o)s(cation.)49 b(Builtin)32 b(commands)g(that)h(are)g(in)m(v)m(ok)m(ed)h(as)e(part)g -(of)h(a)f(pip)s(eline)g(are)h(also)150 4869 y(executed)41 +(of)h(a)f(pip)s(eline)g(are)h(also)150 4077 y(executed)41 b(in)f(a)h(subshell)e(en)m(vironmen)m(t.)72 b(Changes)40 b(made)g(to)h(the)g(subshell)e(en)m(vironmen)m(t)i(cannot)150 -4979 y(a\013ect)32 b(the)f(shell's)f(execution)i(en)m(vironmen)m(t.)275 -5121 y(If)38 b(a)h(command)f(is)g(follo)m(w)m(ed)j(b)m(y)d(a)h(`)p +4187 y(a\013ect)32 b(the)f(shell's)f(execution)i(en)m(vironmen)m(t.)275 +4318 y(If)38 b(a)h(command)f(is)g(follo)m(w)m(ed)j(b)m(y)d(a)h(`)p Fs(&)p Ft(')g(and)f(job)g(con)m(trol)i(is)e(not)h(activ)m(e,)k(the)c -(default)g(standard)150 5230 y(input)e(for)g(the)h(command)f(is)h(the)g +(default)g(standard)150 4427 y(input)e(for)g(the)h(command)f(is)h(the)g (empt)m(y)g(\014le)f(`)p Fs(/dev/null)p Ft('.)61 b(Otherwise,)39 -b(the)f(in)m(v)m(ok)m(ed)h(command)150 5340 y(inherits)30 +b(the)f(in)m(v)m(ok)m(ed)h(command)150 4537 y(inherits)30 b(the)h(\014le)f(descriptors)g(of)h(the)f(calling)i(shell)f(as)f(mo)s -(di\014ed)g(b)m(y)g(redirections.)p eop end +(di\014ed)g(b)m(y)g(redirections.)150 4750 y Fk(3.7.4)63 +b(En)m(vironmen)m(t)275 4990 y Ft(When)31 b(a)g(program)h(is)f(in)m(v)m +(ok)m(ed)i(it)f(is)f(giv)m(en)h(an)g(arra)m(y)g(of)f(strings)g(called)i +(the)e Fq(en)m(vironmen)m(t)p Ft(.)45 b(This)150 5100 +y(is)30 b(a)h(list)g(of)g(name-v)-5 b(alue)31 b(pairs,)f(of)h(the)f +(form)g Fs(name=value)p Ft(.)275 5230 y(Bash)39 b(pro)m(vides)g(sev)m +(eral)i(w)m(a)m(ys)g(to)f(manipulate)f(the)h(en)m(vironmen)m(t.)69 +b(On)38 b(in)m(v)m(o)s(cation,)44 b(the)c(shell)150 5340 +y(scans)g(its)h(o)m(wn)f(en)m(vironmen)m(t)h(and)f(creates)i(a)f +(parameter)f(for)g(eac)m(h)i(name)e(found,)i(automatically)p +eop end %%Page: 31 37 TeXDict begin 31 36 bop 150 -116 a Ft(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(31)150 299 -y Fk(3.7.4)63 b(En)m(vironmen)m(t)275 546 y Ft(When)31 -b(a)g(program)h(is)f(in)m(v)m(ok)m(ed)i(it)f(is)f(giv)m(en)h(an)g(arra) -m(y)g(of)f(strings)g(called)i(the)e Fq(en)m(vironmen)m(t)p -Ft(.)45 b(This)150 656 y(is)30 b(a)h(list)g(of)g(name-v)-5 -b(alue)31 b(pairs,)f(of)h(the)f(form)g Fs(name=value)p -Ft(.)275 793 y(Bash)39 b(pro)m(vides)g(sev)m(eral)i(w)m(a)m(ys)g(to)f -(manipulate)f(the)h(en)m(vironmen)m(t.)69 b(On)38 b(in)m(v)m(o)s -(cation,)44 b(the)c(shell)150 903 y(scans)g(its)h(o)m(wn)f(en)m -(vironmen)m(t)h(and)f(creates)i(a)f(parameter)f(for)g(eac)m(h)i(name)e -(found,)i(automatically)150 1012 y(marking)26 b(it)g(for)g -Fq(exp)s(ort)h Ft(to)g(c)m(hild)f(pro)s(cesses.)39 b(Executed)26 -b(commands)g(inherit)g(the)g(en)m(vironmen)m(t.)39 b(The)150 -1122 y Fs(export)c Ft(and)i(`)p Fs(declare)29 b(-x)p -Ft(')36 b(commands)h(allo)m(w)i(parameters)e(and)g(functions)g(to)h(b)s -(e)e(added)h(to)h(and)150 1231 y(deleted)21 b(from)f(the)h(en)m +y(marking)26 b(it)g(for)g Fq(exp)s(ort)h Ft(to)g(c)m(hild)f(pro)s +(cesses.)39 b(Executed)26 b(commands)g(inherit)g(the)g(en)m(vironmen)m +(t.)39 b(The)150 408 y Fs(export)c Ft(and)i(`)p Fs(declare)29 +b(-x)p Ft(')36 b(commands)h(allo)m(w)i(parameters)e(and)g(functions)g +(to)h(b)s(e)e(added)h(to)h(and)150 518 y(deleted)21 b(from)f(the)h(en)m (vironmen)m(t.)38 b(If)20 b(the)h(v)-5 b(alue)21 b(of)g(a)g(parameter)g (in)f(the)g(en)m(vironmen)m(t)i(is)e(mo)s(di\014ed,)i(the)150 -1341 y(new)31 b(v)-5 b(alue)32 b(b)s(ecomes)f(part)h(of)f(the)h(en)m +628 y(new)31 b(v)-5 b(alue)32 b(b)s(ecomes)f(part)h(of)f(the)h(en)m (vironmen)m(t,)g(replacing)h(the)e(old.)44 b(The)31 b(en)m(vironmen)m -(t)h(inherited)150 1451 y(b)m(y)f(an)m(y)g(executed)h(command)f +(t)h(inherited)150 737 y(b)m(y)f(an)m(y)g(executed)h(command)f (consists)g(of)g(the)g(shell's)h(initial)g(en)m(vironmen)m(t,)g(whose)f -(v)-5 b(alues)31 b(ma)m(y)h(b)s(e)150 1560 y(mo)s(di\014ed)26 +(v)-5 b(alues)31 b(ma)m(y)h(b)s(e)150 847 y(mo)s(di\014ed)26 b(in)g(the)h(shell,)h(less)f(an)m(y)g(pairs)f(remo)m(v)m(ed)i(b)m(y)f (the)g Fs(unset)e Ft(and)h(`)p Fs(export)j(-n)p Ft(')e(commands,)g -(plus)150 1670 y(an)m(y)k(additions)f(via)h(the)g Fs(export)d -Ft(and)i(`)p Fs(declare)f(-x)p Ft(')h(commands.)275 1807 +(plus)150 956 y(an)m(y)k(additions)f(via)h(the)g Fs(export)d +Ft(and)i(`)p Fs(declare)f(-x)p Ft(')h(commands.)275 1096 y(The)j(en)m(vironmen)m(t)i(for)f(an)m(y)g(simple)h(command)f(or)g (function)g(ma)m(y)g(b)s(e)g(augmen)m(ted)h(temp)s(orarily)150 -1917 y(b)m(y)c(pre\014xing)e(it)i(with)g(parameter)g(assignmen)m(ts,)h +1205 y(b)m(y)c(pre\014xing)e(it)i(with)g(parameter)g(assignmen)m(ts,)h (as)e(describ)s(ed)g(in)g(Section)i(3.4)g([Shell)e(P)m(arameters],)150 -2026 y(page)g(15.)41 b(These)29 b(assignmen)m(t)i(statemen)m(ts)g +1315 y(page)g(15.)41 b(These)29 b(assignmen)m(t)i(statemen)m(ts)g (a\013ect)f(only)g(the)f(en)m(vironmen)m(t)h(seen)g(b)m(y)f(that)h -(command.)275 2164 y(If)d(the)h(`)p Fs(-k)p Ft(')g(option)g(is)g(set)g -(\(see)h(Section)f(4.3.1)i([The)e(Set)g(Builtin],)h(page)f(49\),)i -(then)e(all)g(parameter)150 2273 y(assignmen)m(ts)i(are)g(placed)h(in)e -(the)h(en)m(vironmen)m(t)g(for)g(a)g(command,)f(not)h(just)f(those)i -(that)f(precede)g(the)150 2383 y(command)g(name.)275 -2521 y(When)f(Bash)h(in)m(v)m(ok)m(es)i(an)e(external)g(command,)g(the) -g(v)-5 b(ariable)31 b(`)p Fs($_)p Ft(')f(is)g(set)g(to)h(the)f(full)f -(path)h(name)150 2630 y(of)h(the)f(command)g(and)g(passed)g(to)h(that)g -(command)f(in)g(its)h(en)m(vironmen)m(t.)150 2860 y Fk(3.7.5)63 -b(Exit)40 b(Status)275 3107 y Ft(F)-8 b(or)32 b(the)g(shell's)g(purp)s +(command.)275 1455 y(If)h(the)i(`)p Fs(-k)p Ft(')f(option)h(is)f(set)h +(\(see)g(Section)g(4.3)g([The)f(Set)h(Builtin],)g(page)g(53\),)h(then)e +(all)h(parameter)150 1564 y(assignmen)m(ts)d(are)g(placed)h(in)e(the)h +(en)m(vironmen)m(t)g(for)g(a)g(command,)f(not)h(just)f(those)i(that)f +(precede)g(the)150 1674 y(command)g(name.)275 1813 y(When)f(Bash)h(in)m +(v)m(ok)m(es)i(an)e(external)g(command,)g(the)g(v)-5 +b(ariable)31 b(`)p Fs($_)p Ft(')f(is)g(set)g(to)h(the)f(full)f(path)h +(name)150 1923 y(of)h(the)f(command)g(and)g(passed)g(to)h(that)g +(command)f(in)g(its)h(en)m(vironmen)m(t.)150 2157 y Fk(3.7.5)63 +b(Exit)40 b(Status)275 2406 y Ft(F)-8 b(or)32 b(the)g(shell's)g(purp)s (oses,)e(a)j(command)e(whic)m(h)h(exits)g(with)g(a)g(zero)g(exit)h -(status)f(has)f(succeeded.)150 3217 y(A)e(non-zero)h(exit)g(status)g +(status)f(has)f(succeeded.)150 2516 y(A)e(non-zero)h(exit)g(status)g (indicates)g(failure.)40 b(This)28 b(seemingly)i(coun)m(ter-in)m -(tuitiv)m(e)i(sc)m(heme)e(is)f(used)g(so)150 3327 y(there)34 +(tuitiv)m(e)i(sc)m(heme)e(is)f(used)g(so)150 2625 y(there)34 b(is)g(one)g(w)m(ell-de\014ned)g(w)m(a)m(y)g(to)h(indicate)g(success)f (and)f(a)h(v)-5 b(ariet)m(y)35 b(of)f(w)m(a)m(ys)h(to)f(indicate)h(v)-5 -b(arious)150 3436 y(failure)38 b(mo)s(des.)62 b(When)38 +b(arious)150 2735 y(failure)38 b(mo)s(des.)62 b(When)38 b(a)g(command)f(terminates)i(on)e(a)i(fatal)g(signal)f(whose)g(n)m(um)m -(b)s(er)e(is)i Fq(N)p Ft(,)g(Bash)150 3546 y(uses)30 +(b)s(er)e(is)i Fq(N)p Ft(,)g(Bash)150 2844 y(uses)30 b(the)g(v)-5 b(alue)31 b(128)p Fs(+)p Fq(N)42 b Ft(as)30 -b(the)h(exit)g(status.)275 3683 y(If)k(a)h(command)g(is)g(not)g(found,) +b(the)h(exit)g(status.)275 2984 y(If)k(a)h(command)g(is)g(not)g(found,) g(the)g(c)m(hild)h(pro)s(cess)e(created)i(to)g(execute)g(it)g(returns)d -(a)j(status)f(of)150 3793 y(127.)42 b(If)30 b(a)h(command)f(is)g(found) +(a)j(status)f(of)150 3093 y(127.)42 b(If)30 b(a)h(command)f(is)g(found) f(but)h(is)g(not)h(executable,)h(the)f(return)e(status)i(is)f(126.)275 -3930 y(If)i(a)i(command)f(fails)g(b)s(ecause)g(of)h(an)f(error)f +3233 y(If)i(a)i(command)f(fails)g(b)s(ecause)g(of)h(an)f(error)f (during)g(expansion)h(or)g(redirection,)i(the)f(exit)g(status)150 -4040 y(is)c(greater)i(than)e(zero.)275 4177 y(The)38 +3342 y(is)c(greater)i(than)e(zero.)275 3482 y(The)38 b(exit)h(status)g(is)g(used)f(b)m(y)g(the)h(Bash)g(conditional)h -(commands)e(\(see)h(Section)h(3.2.4.2)h([Con-)150 4287 +(commands)e(\(see)h(Section)h(3.2.4.2)h([Con-)150 3592 y(ditional)i(Constructs],)h(page)f(10\))g(and)e(some)i(of)f(the)g(list) g(constructs)g(\(see)h(Section)f(3.2.3)i([Lists],)150 -4397 y(page)31 b(9\).)275 4534 y(All)40 b(of)g(the)h(Bash)f(builtins)f +3701 y(page)31 b(9\).)275 3841 y(All)40 b(of)g(the)h(Bash)f(builtins)f (return)g(an)h(exit)h(status)g(of)f(zero)h(if)f(they)g(succeed)g(and)g -(a)g(non-zero)150 4644 y(status)34 b(on)f(failure,)i(so)f(they)g(ma)m +(a)g(non-zero)150 3950 y(status)34 b(on)f(failure,)i(so)f(they)g(ma)m (y)g(b)s(e)f(used)g(b)m(y)g(the)h(conditional)h(and)e(list)h -(constructs.)50 b(All)35 b(builtins)150 4753 y(return)29 +(constructs.)50 b(All)35 b(builtins)150 4060 y(return)29 b(an)i(exit)g(status)g(of)f(2)h(to)g(indicate)g(incorrect)h(usage.)150 -4983 y Fk(3.7.6)63 b(Signals)275 5230 y Ft(When)27 b(Bash)h(is)h(in)m +4294 y Fk(3.7.6)63 b(Signals)275 4543 y Ft(When)27 b(Bash)h(is)h(in)m (teractiv)m(e,)i(in)d(the)g(absence)h(of)f(an)m(y)g(traps,)h(it)f (ignores)h Fs(SIGTERM)d Ft(\(so)i(that)h(`)p Fs(kill)150 -5340 y(0)p Ft(')k(do)s(es)g(not)g(kill)g(an)g(in)m(teractiv)m(e)j +4653 y(0)p Ft(')k(do)s(es)g(not)g(kill)g(an)g(in)m(teractiv)m(e)j (shell\),)f(and)d Fs(SIGINT)f Ft(is)i(caugh)m(t)h(and)f(handled)f(\(so) -h(that)h(the)f Fs(wait)p eop end -%%Page: 32 38 -TeXDict begin 32 37 bop 150 -116 a Ft(32)2572 b(Bash)31 -b(Reference)g(Man)m(ual)150 299 y(builtin)24 b(is)h(in)m +h(that)h(the)f Fs(wait)150 4762 y Ft(builtin)24 b(is)h(in)m (terruptible\).)39 b(When)24 b(Bash)g(receiv)m(es)j(a)d Fs(SIGINT)p Ft(,)h(it)g(breaks)f(out)h(of)f(an)m(y)h(executing)h(lo)s -(ops.)150 408 y(In)31 b(all)h(cases,)h(Bash)f(ignores)g +(ops.)150 4872 y(In)31 b(all)h(cases,)h(Bash)f(ignores)g Fs(SIGQUIT)p Ft(.)42 b(If)32 b(job)f(con)m(trol)i(is)e(in)h(e\013ect)h -(\(see)f(Chapter)f(7)h([Job)g(Con)m(trol],)150 518 y(page)f(87\),)h +(\(see)f(Chapter)f(7)h([Job)g(Con)m(trol],)150 4981 y(page)f(85\),)h (Bash)e(ignores)h Fs(SIGTTIN)p Ft(,)e Fs(SIGTTOU)p Ft(,)g(and)g -Fs(SIGTSTP)p Ft(.)275 654 y(Non-builtin)i(commands)g(started)g(b)m(y)g +Fs(SIGTSTP)p Ft(.)275 5121 y(Non-builtin)i(commands)g(started)g(b)m(y)g (Bash)h(ha)m(v)m(e)g(signal)g(handlers)e(set)i(to)g(the)g(v)-5 -b(alues)31 b(inherited)150 763 y(b)m(y)37 b(the)h(shell)g(from)f(its)h +b(alues)31 b(inherited)150 5230 y(b)m(y)37 b(the)h(shell)g(from)f(its)h (paren)m(t.)62 b(When)38 b(job)f(con)m(trol)i(is)e(not)h(in)f -(e\013ect,)k(async)m(hronous)c(commands)150 873 y(ignore)f +(e\013ect,)k(async)m(hronous)c(commands)150 5340 y(ignore)f Fs(SIGINT)e Ft(and)h Fs(SIGQUIT)e Ft(in)j(addition)f(to)i(these)f -(inherited)f(handlers.)55 b(Commands)35 b(run)f(as)i(a)150 -983 y(result)27 b(of)h(command)f(substitution)h(ignore)g(the)g(k)m(eyb) -s(oard-generated)g(job)g(con)m(trol)h(signals)f Fs(SIGTTIN)p -Ft(,)150 1092 y Fs(SIGTTOU)p Ft(,)h(and)g Fs(SIGTSTP)p -Ft(.)275 1228 y(The)h(shell)i(exits)g(b)m(y)f(default)g(up)s(on)f -(receipt)i(of)f(a)h Fs(SIGHUP)p Ft(.)42 b(Before)32 b(exiting,)h(an)e -(in)m(teractiv)m(e)j(shell)150 1337 y(resends)41 b(the)i -Fs(SIGHUP)e Ft(to)i(all)g(jobs,)i(running)c(or)h(stopp)s(ed.)76 +(inherited)f(handlers.)55 b(Commands)35 b(run)f(as)i(a)p +eop end +%%Page: 32 38 +TeXDict begin 32 37 bop 150 -116 a Ft(32)2572 b(Bash)31 +b(Reference)g(Man)m(ual)150 299 y(result)c(of)h(command)f(substitution) +h(ignore)g(the)g(k)m(eyb)s(oard-generated)g(job)g(con)m(trol)h(signals) +f Fs(SIGTTIN)p Ft(,)150 408 y Fs(SIGTTOU)p Ft(,)h(and)g +Fs(SIGTSTP)p Ft(.)275 542 y(The)h(shell)i(exits)g(b)m(y)f(default)g(up) +s(on)f(receipt)i(of)f(a)h Fs(SIGHUP)p Ft(.)42 b(Before)32 +b(exiting,)h(an)e(in)m(teractiv)m(e)j(shell)150 652 y(resends)41 +b(the)i Fs(SIGHUP)e Ft(to)i(all)g(jobs,)i(running)c(or)h(stopp)s(ed.)76 b(Stopp)s(ed)41 b(jobs)h(are)h(sen)m(t)g Fs(SIGCONT)d -Ft(to)150 1447 y(ensure)32 b(that)h(they)g(receiv)m(e)i(the)e +Ft(to)150 762 y(ensure)32 b(that)h(they)g(receiv)m(e)i(the)e Fs(SIGHUP)p Ft(.)47 b(T)-8 b(o)33 b(prev)m(en)m(t)g(the)g(shell)g(from) -g(sending)f(the)h Fs(SIGHUP)e Ft(signal)150 1557 y(to)i(a)g(particular) -g(job,)g(it)g(should)f(b)s(e)g(remo)m(v)m(ed)h(from)g(the)f(jobs)g +g(sending)f(the)h Fs(SIGHUP)e Ft(signal)150 871 y(to)i(a)g(particular)g +(job,)g(it)g(should)f(b)s(e)g(remo)m(v)m(ed)h(from)g(the)f(jobs)g (table)i(with)e(the)h Fs(disown)e Ft(builtin)h(\(see)150 -1666 y(Section)f(7.2)g([Job)f(Con)m(trol)h(Builtins],)g(page)g(88\))h +981 y(Section)f(7.2)g([Job)f(Con)m(trol)h(Builtins],)g(page)g(86\))h (or)e(mark)m(ed)g(to)h(not)f(receiv)m(e)i Fs(SIGHUP)d -Ft(using)h Fs(disown)150 1776 y(-h)p Ft(.)275 1912 y(If)38 -b(the)h Fs(huponexit)e Ft(shell)i(option)g(has)g(b)s(een)f(set)i(with)f -Fs(shopt)e Ft(\(see)j(Section)g(4.3.2)h([The)e(Shopt)150 -2021 y(Builtin],)31 b(page)g(52\),)h(Bash)f(sends)e(a)i -Fs(SIGHUP)e Ft(to)i(all)g(jobs)f(when)f(an)i(in)m(teractiv)m(e)i(login) -e(shell)g(exits.)275 2157 y(If)38 b(Bash)h(is)g(w)m(aiting)h(for)f(a)g -(command)f(to)i(complete)g(and)e(receiv)m(es)j(a)e(signal)h(for)e(whic) -m(h)h(a)g(trap)150 2266 y(has)c(b)s(een)f(set,)i(the)f(trap)g(will)g -(not)g(b)s(e)f(executed)i(un)m(til)f(the)g(command)f(completes.)55 -b(When)35 b(Bash)g(is)150 2376 y(w)m(aiting)j(for)f(an)g(async)m +Ft(using)h Fs(disown)150 1090 y(-h)p Ft(.)275 1224 y(If)h(the)h +Fs(huponexit)d Ft(shell)k(option)f(has)g(b)s(een)f(set)h(with)g +Fs(shopt)e Ft(\(see)j(Section)g(4.2)g([Bash)f(Builtins],)150 +1334 y(page)f(41\),)h(Bash)e(sends)g(a)h Fs(SIGHUP)d +Ft(to)j(all)h(jobs)e(when)f(an)h(in)m(teractiv)m(e)j(login)f(shell)e +(exits.)275 1468 y(If)38 b(Bash)h(is)g(w)m(aiting)h(for)f(a)g(command)f +(to)i(complete)g(and)e(receiv)m(es)j(a)e(signal)h(for)e(whic)m(h)h(a)g +(trap)150 1577 y(has)c(b)s(een)f(set,)i(the)f(trap)g(will)g(not)g(b)s +(e)f(executed)i(un)m(til)f(the)g(command)f(completes.)55 +b(When)35 b(Bash)g(is)150 1687 y(w)m(aiting)j(for)f(an)g(async)m (hronous)g(command)g(via)h(the)f Fs(wait)f Ft(builtin,)i(the)g -(reception)g(of)f(a)g(signal)h(for)150 2486 y(whic)m(h)d(a)g(trap)g +(reception)g(of)f(a)g(signal)h(for)150 1797 y(whic)m(h)d(a)g(trap)g (has)g(b)s(een)f(set)h(will)h(cause)f(the)g Fs(wait)f Ft(builtin)h(to)g(return)f(immediately)i(with)f(an)g(exit)150 -2595 y(status)c(greater)g(than)f(128,)i(immediately)g(after)f(whic)m(h) -f(the)h(trap)f(is)g(executed.)150 2856 y Fr(3.8)68 b(Shell)45 -b(Scripts)275 3101 y Ft(A)c(shell)h(script)g(is)g(a)g(text)h(\014le)f +1906 y(status)c(greater)g(than)f(128,)i(immediately)g(after)f(whic)m(h) +f(the)h(trap)f(is)g(executed.)150 2162 y Fr(3.8)68 b(Shell)45 +b(Scripts)275 2405 y Ft(A)c(shell)h(script)g(is)g(a)g(text)h(\014le)f (con)m(taining)h(shell)f(commands.)75 b(When)41 b(suc)m(h)h(a)g(\014le) -g(is)g(used)f(as)150 3211 y(the)33 b(\014rst)f(non-option)h(argumen)m +g(is)g(used)f(as)150 2515 y(the)33 b(\014rst)f(non-option)h(argumen)m (t)h(when)e(in)m(v)m(oking)i(Bash,)g(and)e(neither)h(the)g(`)p Fs(-c)p Ft(')g(nor)g(`)p Fs(-s)p Ft(')f(option)i(is)150 -3320 y(supplied)j(\(see)j(Section)g(6.1)f([In)m(v)m(oking)h(Bash],)h -(page)f(69\),)i(Bash)d(reads)f(and)g(executes)i(commands)150 -3430 y(from)31 b(the)h(\014le,)h(then)e(exits.)46 b(This)31 +2625 y(supplied)j(\(see)j(Section)g(6.1)f([In)m(v)m(oking)h(Bash],)h +(page)f(67\),)i(Bash)d(reads)f(and)g(executes)i(commands)150 +2734 y(from)31 b(the)h(\014le,)h(then)e(exits.)46 b(This)31 b(mo)s(de)g(of)h(op)s(eration)h(creates)g(a)f(non-in)m(teractiv)m(e)i -(shell.)45 b(The)32 b(shell)150 3539 y(\014rst)26 b(searc)m(hes)h(for)f +(shell.)45 b(The)32 b(shell)150 2844 y(\014rst)26 b(searc)m(hes)h(for)f (the)g(\014le)h(in)f(the)g(curren)m(t)h(directory)-8 b(,)28 b(and)e(lo)s(oks)g(in)h(the)f(directories)h(in)f -Fs($PATH)f Ft(if)i(not)150 3649 y(found)i(there.)275 -3785 y(When)34 b(Bash)h(runs)e(a)i(shell)g(script,)g(it)h(sets)f(the)f +Fs($PATH)f Ft(if)i(not)150 2953 y(found)i(there.)275 +3087 y(When)34 b(Bash)h(runs)e(a)i(shell)g(script,)g(it)h(sets)f(the)f (sp)s(ecial)i(parameter)f Fs(0)f Ft(to)h(the)g(name)g(of)g(the)g -(\014le,)150 3894 y(rather)k(than)g(the)h(name)f(of)h(the)f(shell,)j +(\014le,)150 3197 y(rather)k(than)g(the)h(name)f(of)h(the)f(shell,)j (and)d(the)h(p)s(ositional)g(parameters)f(are)h(set)g(to)g(the)g -(remain-)150 4004 y(ing)f(argumen)m(ts,)j(if)d(an)m(y)g(are)g(giv)m +(remain-)150 3306 y(ing)f(argumen)m(ts,)j(if)d(an)m(y)g(are)g(giv)m (en.)67 b(If)39 b(no)g(additional)g(argumen)m(ts)h(are)f(supplied,)h -(the)f(p)s(ositional)150 4113 y(parameters)31 b(are)f(unset.)275 -4249 y(A)39 b(shell)h(script)f(ma)m(y)h(b)s(e)f(made)h(executable)h(b)m +(the)f(p)s(ositional)150 3416 y(parameters)31 b(are)f(unset.)275 +3550 y(A)39 b(shell)h(script)f(ma)m(y)h(b)s(e)f(made)h(executable)h(b)m (y)e(using)g(the)h Fs(chmod)e Ft(command)h(to)h(turn)e(on)i(the)150 -4359 y(execute)j(bit.)73 b(When)41 b(Bash)g(\014nds)e(suc)m(h)i(a)h +3660 y(execute)j(bit.)73 b(When)41 b(Bash)g(\014nds)e(suc)m(h)i(a)h (\014le)f(while)g(searc)m(hing)h(the)f Fs($PATH)f Ft(for)h(a)h -(command,)h(it)150 4468 y(spa)m(wns)30 b(a)g(subshell)g(to)h(execute)h -(it.)41 b(In)30 b(other)g(w)m(ords,)g(executing)390 4604 -y Fs(filename)46 b Fj(arguments)150 4740 y Ft(is)30 b(equiv)-5 -b(alen)m(t)32 b(to)f(executing)390 4875 y Fs(bash)47 -b(filename)e Fj(arguments)150 5011 y Ft(if)30 b Fs(filename)d +(command,)h(it)150 3769 y(spa)m(wns)30 b(a)g(subshell)g(to)h(execute)h +(it.)41 b(In)30 b(other)g(w)m(ords,)g(executing)390 3903 +y Fs(filename)46 b Fj(arguments)150 4037 y Ft(is)30 b(equiv)-5 +b(alen)m(t)32 b(to)f(executing)390 4171 y Fs(bash)47 +b(filename)e Fj(arguments)150 4305 y Ft(if)30 b Fs(filename)d Ft(is)j(an)f(executable)j(shell)e(script.)40 b(This)29 b(subshell)g(reinitializes)i(itself,)g(so)f(that)h(the)e(e\013ect)150 -5121 y(is)36 b(as)h(if)g(a)f(new)g(shell)h(had)f(b)s(een)g(in)m(v)m(ok) +4415 y(is)36 b(as)h(if)g(a)f(new)g(shell)h(had)f(b)s(een)g(in)m(v)m(ok) m(ed)h(to)h(in)m(terpret)e(the)h(script,)h(with)e(the)h(exception)h -(that)f(the)150 5230 y(lo)s(cations)25 b(of)g(commands)e(remem)m(b)s +(that)f(the)150 4524 y(lo)s(cations)25 b(of)g(commands)e(remem)m(b)s (ered)h(b)m(y)g(the)g(paren)m(t)g(\(see)h(the)f(description)g(of)g -Fs(hash)f Ft(in)h(Section)h(4.1)150 5340 y([Bourne)30 +Fs(hash)f Ft(in)h(Section)h(4.1)150 4634 y([Bourne)30 b(Shell)h(Builtins],)g(page)g(35\))h(are)e(retained)h(b)m(y)f(the)h(c)m -(hild.)p eop end -%%Page: 33 39 -TeXDict begin 33 38 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(33)275 299 -y(Most)36 b(v)m(ersions)g(of)g(Unix)f(mak)m(e)h(this)g(a)g(part)f(of)h -(the)g(op)s(erating)g(system's)f(command)h(execution)150 -408 y(mec)m(hanism.)50 b(If)33 b(the)g(\014rst)g(line)h(of)f(a)h +(hild.)275 4768 y(Most)36 b(v)m(ersions)g(of)g(Unix)f(mak)m(e)h(this)g +(a)g(part)f(of)h(the)g(op)s(erating)g(system's)f(command)h(execution) +150 4877 y(mec)m(hanism.)50 b(If)33 b(the)g(\014rst)g(line)h(of)f(a)h (script)f(b)s(egins)g(with)g(the)g(t)m(w)m(o)i(c)m(haracters)g(`)p -Fs(#!)p Ft(',)f(the)g(remainder)150 518 y(of)d(the)g(line)h(sp)s +Fs(#!)p Ft(',)f(the)g(remainder)150 4987 y(of)d(the)g(line)h(sp)s (eci\014es)e(an)h(in)m(terpreter)g(for)g(the)g(program.)43 b(Th)m(us,)30 b(y)m(ou)h(can)h(sp)s(ecify)e(Bash,)i Fs(awk)p -Ft(,)e(P)m(erl,)150 628 y(or)g(some)h(other)g(in)m(terpreter)g(and)e +Ft(,)e(P)m(erl,)150 5096 y(or)g(some)h(other)g(in)m(terpreter)g(and)e (write)i(the)f(rest)h(of)g(the)f(script)g(\014le)h(in)f(that)h -(language.)275 762 y(The)40 b(argumen)m(ts)h(to)g(the)g(in)m(terpreter) -g(consist)g(of)g(a)g(single)h(optional)f(argumen)m(t)h(follo)m(wing)g -(the)150 872 y(in)m(terpreter)33 b(name)h(on)f(the)g(\014rst)f(line)i -(of)f(the)g(script)g(\014le,)h(follo)m(w)m(ed)h(b)m(y)e(the)g(name)g -(of)g(the)h(script)f(\014le,)150 981 y(follo)m(w)m(ed)g(b)m(y)f(the)f -(rest)h(of)g(the)f(argumen)m(ts.)45 b(Bash)31 b(will)h(p)s(erform)e -(this)i(action)h(on)e(op)s(erating)h(systems)150 1091 -y(that)24 b(do)g(not)f(handle)g(it)h(themselv)m(es.)40 +(language.)275 5230 y(The)40 b(argumen)m(ts)h(to)g(the)g(in)m +(terpreter)g(consist)g(of)g(a)g(single)h(optional)f(argumen)m(t)h +(follo)m(wing)g(the)150 5340 y(in)m(terpreter)33 b(name)h(on)f(the)g +(\014rst)f(line)i(of)f(the)g(script)g(\014le,)h(follo)m(w)m(ed)h(b)m(y) +e(the)g(name)g(of)g(the)h(script)f(\014le,)p eop end +%%Page: 33 39 +TeXDict begin 33 38 bop 150 -116 a Ft(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(33)150 299 +y(follo)m(w)m(ed)33 b(b)m(y)f(the)f(rest)h(of)g(the)f(argumen)m(ts.)45 +b(Bash)31 b(will)h(p)s(erform)e(this)i(action)h(on)e(op)s(erating)h +(systems)150 408 y(that)24 b(do)g(not)f(handle)g(it)h(themselv)m(es.)40 b(Note)25 b(that)f(some)g(older)g(v)m(ersions)f(of)h(Unix)f(limit)i -(the)f(in)m(terpreter)150 1200 y(name)30 b(and)g(argumen)m(t)h(to)g(a)g -(maxim)m(um)f(of)h(32)g(c)m(haracters.)275 1335 y(Bash)h(scripts)g +(the)f(in)m(terpreter)150 518 y(name)30 b(and)g(argumen)m(t)h(to)g(a)g +(maxim)m(um)f(of)h(32)g(c)m(haracters.)275 653 y(Bash)h(scripts)g (often)g(b)s(egin)g(with)g Fs(#!)e(/bin/bash)g Ft(\(assuming)i(that)h -(Bash)f(has)g(b)s(een)f(installed)i(in)150 1445 y(`)p +(Bash)f(has)g(b)s(een)f(installed)i(in)150 762 y(`)p Fs(/bin)p Ft('\),)25 b(since)e(this)g(ensures)f(that)i(Bash)f(will)h(b) s(e)e(used)h(to)h(in)m(terpret)f(the)g(script,)i(ev)m(en)f(if)f(it)h -(is)f(executed)150 1554 y(under)29 b(another)h(shell.)p +(is)f(executed)150 872 y(under)29 b(another)h(shell.)p eop end %%Page: 34 40 TeXDict begin 34 39 bop 150 -116 a Ft(34)2572 b(Bash)31 @@ -7356,12 +6996,12 @@ b(Builtin)150 864 y(commands)f(are)h(necessary)g(to)g(implemen)m(t)g (other)g(c)m(hapters:)69 b(builtin)43 b(commands)h(whic)m(h)150 1463 y(pro)m(vide)23 b(the)h(Bash)f(in)m(terface)i(to)f(the)g(job)f (con)m(trol)i(facilities)g(\(see)f(Section)h(7.2)f([Job)f(Con)m(trol)h -(Builtins],)150 1573 y(page)40 b(88\),)j(the)c(directory)h(stac)m(k)g +(Builtins],)150 1573 y(page)40 b(86\),)j(the)c(directory)h(stac)m(k)g (\(see)g(Section)g(6.8.1)h([Directory)g(Stac)m(k)f(Builtins],)i(page)e -(79\),)j(the)150 1682 y(command)23 b(history)h(\(see)g(Section)g(9.2)h -([Bash)f(History)g(Builtins],)h(page)g(117\),)h(and)d(the)h +(77\),)j(the)150 1682 y(command)23 b(history)h(\(see)g(Section)g(9.2)h +([Bash)f(History)g(Builtins],)h(page)g(115\),)h(and)d(the)h (programmable)150 1792 y(completion)32 b(facilities)g(\(see)g(Section)f -(8.7)g([Programmable)g(Completion)g(Builtins],)g(page)h(113\).)275 +(8.7)g([Programmable)g(Completion)g(Builtins],)g(page)h(111\).)275 1927 y(Man)m(y)f(of)f(the)h(builtins)e(ha)m(v)m(e)j(b)s(een)e(extended) g(b)m(y)g Fl(posix)g Ft(or)g(Bash.)275 2062 y(Unless)20 b(otherwise)h(noted,)h(eac)m(h)g(builtin)e(command)g(do)s(cumen)m(ted)g @@ -7452,26 +7092,27 @@ y(read)35 b(and)g(executed,)j(and)d(its)h(exit)g(status)g(returned)e (argumen)m(ts,)g(the)f(return)g(status)g(is)h(zero.)150 3148 y Fs(exec)870 3280 y(exec)47 b([-cl])f([-a)h Fj(name)11 b Fs(])46 b([)p Fj(command)56 b Fs([)p Fj(arguments)11 -b Fs(]])630 3411 y Ft(If)36 b Fq(command)k Ft(is)c(supplied,)h(it)g -(replaces)h(the)e(shell)h(without)f(creating)i(a)f(new)f(pro)s(cess.) -630 3521 y(If)h(the)g(`)p Fs(-l)p Ft(')g(option)h(is)f(supplied,)g(the) -h(shell)f(places)h(a)g(dash)e(at)i(the)f(b)s(eginning)f(of)i(the)630 -3630 y(zeroth)e(argumen)m(t)h(passed)e(to)h Fq(command)p -Ft(.)57 b(This)35 b(is)h(what)f(the)h Fs(login)e Ft(program)i(do)s(es.) -630 3740 y(The)d(`)p Fs(-c)p Ft(')h(option)g(causes)g -Fq(command)j Ft(to)e(b)s(e)e(executed)i(with)e(an)h(empt)m(y)g(en)m -(vironmen)m(t.)630 3850 y(If)d(`)p Fs(-a)p Ft(')h(is)g(supplied,)f(the) -h(shell)g(passes)f Fq(name)37 b Ft(as)32 b(the)g(zeroth)g(argumen)m(t)g -(to)h Fq(command)p Ft(.)630 3959 y(If)45 b(no)g Fq(command)k -Ft(is)c(sp)s(eci\014ed,)k(redirections)d(ma)m(y)g(b)s(e)f(used)f(to)j -(a\013ect)g(the)e(curren)m(t)630 4069 y(shell)33 b(en)m(vironmen)m(t.) -48 b(If)32 b(there)h(are)g(no)f(redirection)h(errors,)g(the)g(return)e -(status)i(is)g(zero;)630 4178 y(otherwise)e(the)f(return)g(status)g(is) -h(non-zero.)150 4332 y Fs(exit)870 4463 y(exit)47 b([)p -Fj(n)11 b Fs(])630 4595 y Ft(Exit)30 b(the)g(shell,)h(returning)d(a)j -(status)f(of)g Fq(n)f Ft(to)h(the)g(shell's)g(paren)m(t.)41 -b(If)30 b Fq(n)f Ft(is)h(omitted,)h(the)630 4704 y(exit)c(status)g(is)g -(that)g(of)g(the)g(last)g(command)f(executed.)41 b(An)m(y)26 +b Fs(]])630 3411 y Ft(If)28 b Fq(command)j Ft(is)e(supplied,)e(it)i +(replaces)g(the)f(shell)h(without)f(creating)i(a)e(new)g(pro)s(cess.)39 +b(If)630 3521 y(the)25 b(`)p Fs(-l)p Ft(')f(option)i(is)e(supplied,)h +(the)g(shell)g(places)g(a)g(dash)f(at)i(the)f(b)s(eginning)f(of)g(the)h +(zeroth)630 3630 y(arg)h(passed)f(to)h Fq(command)p Ft(.)39 +b(This)24 b(is)i(what)f(the)h Fs(login)d Ft(program)j(do)s(es.)38 +b(The)25 b(`)p Fs(-c)p Ft(')g(option)630 3740 y(causes)g +Fq(command)i Ft(to)e(b)s(e)f(executed)h(with)f(an)g(empt)m(y)h(en)m +(vironmen)m(t.)39 b(If)24 b(`)p Fs(-a)p Ft(')g(is)g(supplied,)630 +3850 y(the)32 b(shell)g(passes)g Fq(name)37 b Ft(as)c(the)f(zeroth)h +(argumen)m(t)f(to)h Fq(command)p Ft(.)45 b(If)32 b(no)g +Fq(command)j Ft(is)630 3959 y(sp)s(eci\014ed,)g(redirections)g(ma)m(y)g +(b)s(e)f(used)f(to)i(a\013ect)h(the)f(curren)m(t)f(shell)h(en)m +(vironmen)m(t.)53 b(If)630 4069 y(there)34 b(are)h(no)f(redirection)h +(errors,)g(the)f(return)f(status)i(is)f(zero;)j(otherwise)e(the)f +(return)630 4178 y(status)d(is)f(non-zero.)150 4332 y +Fs(exit)870 4463 y(exit)47 b([)p Fj(n)11 b Fs(])630 4595 +y Ft(Exit)30 b(the)g(shell,)h(returning)d(a)j(status)f(of)g +Fq(n)f Ft(to)h(the)g(shell's)g(paren)m(t.)41 b(If)30 +b Fq(n)f Ft(is)h(omitted,)h(the)630 4704 y(exit)c(status)g(is)g(that)g +(of)g(the)g(last)g(command)f(executed.)41 b(An)m(y)26 b(trap)h(on)f Fs(EXIT)f Ft(is)i(executed)630 4814 y(b)s(efore)j(the)h (shell)f(terminates.)150 4967 y Fs(export)870 5099 y(export)46 b([-fn])g([-p])h([)p Fj(name)11 b Fs([=)p Fj(value)g @@ -7649,14 +7290,14 @@ Ft(.)40 b(If)29 b Fq(n)h Ft(is)g(not)g(supplied,)f(the)630 4737 y Fs(shift)870 4874 y(shift)46 b([)p Fj(n)11 b Fs(])630 5011 y Ft(Shift)41 b(the)g(p)s(ositional)h(parameters)g(to)g(the)f (left)h(b)m(y)g Fq(n)p Ft(.)73 b(The)40 b(p)s(ositional)j(parameters) -630 5121 y(from)34 b Fq(n)p Fs(+)p Ft(1)39 b(.)22 b(.)h(.)45 -b Fs($#)34 b Ft(are)g(renamed)g(to)h Fs($1)k Ft(.)22 -b(.)g(.)46 b Fs($#)p Ft(-)p Fq(n)p Ft(.)51 b(P)m(arameters)36 -b(represen)m(ted)e(b)m(y)g(the)630 5230 y(n)m(um)m(b)s(ers)25 -b Fs($#)i Ft(to)g Fs($#)p Ft(-)p Fq(n)p Fs(+)p Ft(1)g(are)g(unset.)39 -b Fq(n)26 b Ft(m)m(ust)h(b)s(e)f(a)i(non-negativ)m(e)h(n)m(um)m(b)s(er) -c(less)i(than)g(or)630 5340 y(equal)33 b(to)h Fs($#)p -Ft(.)47 b(If)33 b Fq(n)f Ft(is)h(zero)g(or)g(greater)h(than)f +630 5121 y(from)27 b Fq(n)p Fs(+)p Ft(1)33 b(.)22 b(.)g(.)39 +b Fs($#)27 b Ft(are)g(renamed)g(to)i Fs($1)j Ft(.)22 +b(.)h(.)38 b Fs($#)p Ft(-)p Fq(n)p Fs(+)p Ft(1.)h(P)m(arameters)29 +b(represen)m(ted)e(b)m(y)h(the)630 5230 y(n)m(um)m(b)s(ers)34 +b Fs($#)h Ft(to)h Fq(n)p Fs(+)p Ft(1)f(are)g(unset.)55 +b Fq(n)35 b Ft(m)m(ust)g(b)s(e)g(a)h(non-negativ)m(e)h(n)m(um)m(b)s(er) +d(less)i(than)f(or)630 5340 y(equal)e(to)h Fs($#)p Ft(.)47 +b(If)33 b Fq(n)f Ft(is)h(zero)g(or)g(greater)h(than)f Fs($#)p Ft(,)g(the)g(p)s(ositional)g(parameters)g(are)h(not)p eop end %%Page: 39 45 @@ -7672,7 +7313,7 @@ b(op)s(erator)g(and)f(op)s(erand)g(m)m(ust)h(b)s(e)f(a)630 797 y(separate)d(argumen)m(t.)40 b(Expressions)25 b(are)i(comp)s(osed)e (of)i(the)f(primaries)g(describ)s(ed)f(b)s(elo)m(w)630 907 y(in)34 b(Section)g(6.4)h([Bash)g(Conditional)f(Expressions],)h -(page)g(75.)52 b Fs(test)33 b Ft(do)s(es)g(not)h(accept)630 +(page)g(73.)52 b Fs(test)33 b Ft(do)s(es)g(not)h(accept)630 1016 y(an)m(y)27 b(options,)i(nor)d(do)s(es)h(it)g(accept)i(and)d (ignore)i(an)f(argumen)m(t)g(of)g(`)p Fs(--)p Ft(')g(as)h(signifying)f (the)630 1126 y(end)j(of)g(options.)630 1265 y(When)g(the)h @@ -7703,13 +7344,13 @@ b(aluate)39 b(conditional)f(expressions)f(using)g(a)g(set)h(of)f(rules) b(If)33 b(the)h(\014rst)e(argumen)m(t)i(is)g(one)g(of)f(the)h(unary) 1110 3856 y(conditional)42 b(op)s(erators)f(\(see)g(Section)h(6.4)f ([Bash)g(Conditional)g(Expres-)1110 3965 y(sions],)34 -b(page)f(75\),)i(the)e(expression)f(is)h(true)g(if)g(the)g(unary)e +b(page)f(73\),)i(the)e(expression)f(is)h(true)g(if)g(the)g(unary)e (test)j(is)f(true.)47 b(If)1110 4075 y(the)33 b(\014rst)g(argumen)m(t)h (is)f(not)g(a)h(v)-5 b(alid)34 b(unary)e(op)s(erator,)i(the)g (expression)f(is)1110 4184 y(false.)630 4354 y(3)e(argumen)m(ts)1110 4463 y(If)k(the)g(second)g(argumen)m(t)g(is)g(one)h(of)f(the)g(binary)f (conditional)j(op)s(erators)1110 4573 y(\(see)23 b(Section)g(6.4)f -([Bash)h(Conditional)f(Expressions],)h(page)g(75\),)i(the)d(result)1110 +([Bash)h(Conditional)f(Expressions],)h(page)g(73\),)i(the)d(result)1110 4682 y(of)44 b(the)h(expression)f(is)g(the)g(result)g(of)h(the)f (binary)g(test)h(using)e(the)i(\014rst)1110 4792 y(and)33 b(third)g(argumen)m(ts)h(as)g(op)s(erands.)50 b(If)33 @@ -7733,81 +7374,79 @@ Ft(',)h(the)f(result)g(is)g(the)g(negation)h(of)f(the)g(three-)1110 (argumen)m(ts.)50 b(Oth-)1110 628 y(erwise,)34 b(the)f(expression)g(is) g(parsed)g(and)f(ev)-5 b(aluated)34 b(according)h(to)e(prece-)1110 737 y(dence)e(using)e(the)i(rules)f(listed)h(ab)s(o)m(v)m(e.)630 -894 y(5)g(or)f(more)h(argumen)m(ts)1110 1003 y(The)43 +909 y(5)g(or)f(more)h(argumen)m(ts)1110 1019 y(The)43 b(expression)f(is)i(parsed)e(and)g(ev)-5 b(aluated)45 -b(according)f(to)f(precedence)1110 1113 y(using)30 b(the)g(rules)g -(listed)h(ab)s(o)m(v)m(e.)150 1270 y Fs(times)870 1403 -y(times)630 1536 y Ft(Prin)m(t)37 b(out)h(the)g(user)e(and)h(system)g +b(according)f(to)f(precedence)1110 1129 y(using)30 b(the)g(rules)g +(listed)h(ab)s(o)m(v)m(e.)150 1301 y Fs(times)870 1442 +y(times)630 1583 y Ft(Prin)m(t)37 b(out)h(the)g(user)e(and)h(system)g (times)h(used)f(b)m(y)g(the)h(shell)f(and)g(its)h(c)m(hildren.)61 -b(The)630 1645 y(return)29 b(status)i(is)f(zero.)150 -1802 y Fs(trap)870 1935 y(trap)47 b([-lp])f([)p Fj(arg)11 -b Fs(])46 b([)p Fj(sigspec)56 b Fs(...)o(])630 2068 y +b(The)630 1692 y(return)29 b(status)i(is)f(zero.)150 +1864 y Fs(trap)870 2005 y(trap)47 b([-lp])f([)p Fj(arg)11 +b Fs(])46 b([)p Fj(sigspec)56 b Fs(...)o(])630 2146 y Ft(The)43 b(commands)f(in)h Fq(arg)51 b Ft(are)44 b(to)g(b)s(e)e(read)h (and)g(executed)h(when)e(the)h(shell)g(receiv)m(es)630 -2178 y(signal)36 b Fq(sigsp)s(ec)p Ft(.)57 b(If)35 b +2256 y(signal)36 b Fq(sigsp)s(ec)p Ft(.)57 b(If)35 b Fq(arg)44 b Ft(is)36 b(absen)m(t)g(\(and)f(there)h(is)g(a)f(single)i Fq(sigsp)s(ec)6 b Ft(\))35 b(or)h(equal)g(to)h(`)p Fs(-)p -Ft(',)630 2287 y(eac)m(h)28 b(sp)s(eci\014ed)e(signal's)h(disp)s +Ft(',)630 2365 y(eac)m(h)28 b(sp)s(eci\014ed)e(signal's)h(disp)s (osition)f(is)h(reset)g(to)g(the)g(v)-5 b(alue)27 b(it)g(had)f(when)f -(the)i(shell)g(w)m(as)630 2397 y(started.)63 b(If)37 +(the)i(shell)g(w)m(as)630 2475 y(started.)63 b(If)37 b Fq(arg)46 b Ft(is)37 b(the)h(n)m(ull)g(string,)h(then)e(the)h(signal) h(sp)s(eci\014ed)d(b)m(y)i(eac)m(h)h Fq(sigsp)s(ec)k -Ft(is)630 2506 y(ignored)36 b(b)m(y)g(the)g(shell)g(and)g(commands)f +Ft(is)630 2585 y(ignored)36 b(b)m(y)g(the)g(shell)g(and)g(commands)f (it)i(in)m(v)m(ok)m(es.)59 b(If)35 b Fq(arg)45 b Ft(is)36 -b(not)g(presen)m(t)g(and)f(`)p Fs(-p)p Ft(')630 2616 +b(not)g(presen)m(t)g(and)f(`)p Fs(-p)p Ft(')630 2694 y(has)e(b)s(een)g(supplied,)f(the)i(shell)f(displa)m(ys)h(the)f(trap)g -(commands)g(asso)s(ciated)i(with)e(eac)m(h)630 2725 y +(commands)g(asso)s(ciated)i(with)e(eac)m(h)630 2804 y Fq(sigsp)s(ec)p Ft(.)40 b(If)29 b(no)g(argumen)m(ts)g(are)g(supplied,)f (or)h(only)g(`)p Fs(-p)p Ft(')g(is)g(giv)m(en,)h Fs(trap)e -Ft(prin)m(ts)g(the)h(list)630 2835 y(of)f(commands)f(asso)s(ciated)i +Ft(prin)m(ts)g(the)h(list)630 2913 y(of)f(commands)f(asso)s(ciated)i (with)f(eac)m(h)h(signal)f(n)m(um)m(b)s(er)e(in)i(a)g(form)f(that)h(ma) -m(y)h(b)s(e)e(reused)630 2945 y(as)c(shell)g(input.)37 +m(y)h(b)s(e)e(reused)630 3023 y(as)c(shell)g(input.)37 b(The)23 b(`)p Fs(-l)p Ft(')f(option)i(causes)f(the)g(shell)g(to)g (prin)m(t)g(a)g(list)g(of)g(signal)h(names)f(and)630 -3054 y(their)33 b(corresp)s(onding)f(n)m(um)m(b)s(ers.)47 +3133 y(their)33 b(corresp)s(onding)f(n)m(um)m(b)s(ers.)47 b(Eac)m(h)34 b Fq(sigsp)s(ec)39 b Ft(is)33 b(either)g(a)h(signal)g -(name)f(or)g(a)g(signal)630 3164 y(n)m(um)m(b)s(er.)46 +(name)f(or)g(a)g(signal)630 3242 y(n)m(um)m(b)s(er.)46 b(Signal)33 b(names)g(are)g(case)h(insensitiv)m(e)f(and)g(the)f Fs(SIG)g Ft(pre\014x)g(is)h(optional.)48 b(If)33 b(a)630 -3273 y Fq(sigsp)s(ec)h Ft(is)28 b Fs(0)f Ft(or)h Fs(EXIT)p +3352 y Fq(sigsp)s(ec)h Ft(is)28 b Fs(0)f Ft(or)h Fs(EXIT)p Ft(,)f Fq(arg)37 b Ft(is)27 b(executed)i(when)e(the)h(shell)g(exits.)41 b(If)27 b(a)i Fq(sigsp)s(ec)k Ft(is)28 b Fs(DEBUG)p Ft(,)630 -3383 y(the)40 b(command)g Fq(arg)48 b Ft(is)40 b(executed)h(b)s(efore)f +3461 y(the)40 b(command)g Fq(arg)48 b Ft(is)40 b(executed)h(b)s(efore)f (ev)m(ery)g(simple)g(command,)j Fs(for)c Ft(command,)630 -3493 y Fs(case)28 b Ft(command,)i Fs(select)d Ft(command,)j(ev)m(ery)g +3571 y Fs(case)28 b Ft(command,)i Fs(select)d Ft(command,)j(ev)m(ery)g (arithmetic)h Fs(for)d Ft(command,)i(and)e(b)s(efore)630 -3602 y(the)k(\014rst)e(command)h(executes)i(in)e(a)h(shell)f(function.) +3680 y(the)k(\014rst)e(command)h(executes)i(in)e(a)h(shell)f(function.) 44 b(Refer)31 b(to)h(the)g(description)f(of)h(the)630 -3712 y Fs(extglob)40 b Ft(option)i(to)g(the)g Fs(shopt)e -Ft(builtin)h(\(see)i(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)630 -3821 y(page)g(52\))g(for)e(details)i(of)f(its)h(e\013ect)g(on)f(the)g -Fs(DEBUG)f Ft(trap.)69 b(If)39 b(a)i Fq(sigsp)s(ec)k -Ft(is)40 b Fs(ERR)p Ft(,)i(the)630 3931 y(command)h Fq(arg)52 -b Ft(is)44 b(executed)g(whenev)m(er)g(a)g(simple)f(command)h(has)f(a)h -(non-zero)g(exit)630 4041 y(status,)30 b(sub)5 b(ject)30 -b(to)g(the)g(follo)m(wing)h(conditions.)41 b(The)30 b -Fs(ERR)e Ft(trap)i(is)g(not)g(executed)g(if)g(the)630 -4150 y(failed)e(command)g(is)g(part)f(of)h(the)g(command)f(list)i -(immediately)g(follo)m(wing)g(an)f Fs(until)e Ft(or)630 -4260 y Fs(while)31 b Ft(k)m(eyw)m(ord,)i(part)f(of)g(the)g(test)h(in)f -(an)f Fs(if)h Ft(statemen)m(t,)i(part)e(of)g(a)h Fs(&&)e -Ft(or)h Fs(||)g Ft(list,)h(or)630 4369 y(if)h(the)g(command's)f(return) -g(status)h(is)g(b)s(eing)f(in)m(v)m(erted)h(using)g Fs(!)p -Ft(.)50 b(These)34 b(are)g(the)g(same)630 4479 y(conditions)27 -b(ob)s(ey)m(ed)h(b)m(y)e(the)h Fs(errexit)e Ft(option.)40 -b(If)27 b(a)g Fq(sigsp)s(ec)33 b Ft(is)27 b Fs(RETURN)p -Ft(,)f(the)h(command)630 4589 y Fq(arg)45 b Ft(is)37 -b(executed)h(eac)m(h)g(time)f(a)h(shell)f(function)f(or)h(a)g(script)g -(executed)h(with)e(the)h Fs(.)g Ft(or)630 4698 y Fs(source)29 -b Ft(builtins)g(\014nishes)h(executing.)630 4831 y(Signals)37 -b(ignored)f(up)s(on)f(en)m(try)i(to)g(the)f(shell)h(cannot)g(b)s(e)f -(trapp)s(ed)f(or)h(reset.)59 b(T)-8 b(rapp)s(ed)630 4941 -y(signals)37 b(that)f(are)h(not)f(b)s(eing)f(ignored)h(are)h(reset)f -(to)h(their)f(original)h(v)-5 b(alues)37 b(in)e(a)i(c)m(hild)630 -5050 y(pro)s(cess)30 b(when)f(it)i(is)g(created.)630 -5183 y(The)f(return)f(status)i(is)f(zero)h(unless)f(a)h -Fq(sigsp)s(ec)36 b Ft(do)s(es)30 b(not)h(sp)s(ecify)f(a)g(v)-5 -b(alid)31 b(signal.)150 5340 y Fs(umask)p eop end +3790 y Fs(extglob)d Ft(option)j(to)g(the)g Fs(shopt)e +Ft(builtin)h(\(see)h(Section)h(4.2)f([Bash)g(Builtins],)h(page)f(41\)) +630 3900 y(for)c(details)i(of)e(its)h(e\013ect)h(on)f(the)g +Fs(DEBUG)e Ft(trap.)40 b(If)28 b(a)g Fq(sigsp)s(ec)35 +b Ft(is)28 b Fs(ERR)p Ft(,)h(the)f(command)g Fq(arg)630 +4009 y Ft(is)j(executed)g(whenev)m(er)g(a)g(simple)f(command)h(has)f(a) +h(non-zero)g(exit)h(status,)f(sub)5 b(ject)30 b(to)630 +4119 y(the)k(follo)m(wing)i(conditions.)53 b(The)34 b +Fs(ERR)f Ft(trap)h(is)g(not)h(executed)g(if)f(the)g(failed)h(command) +630 4228 y(is)28 b(part)g(of)h(the)f(command)g(list)h(immediately)h +(follo)m(wing)f(an)f Fs(until)f Ft(or)h Fs(while)f Ft(k)m(eyw)m(ord,) +630 4338 y(part)h(of)h(the)g(test)g(in)f(an)h Fs(if)f +Ft(statemen)m(t,)j(part)d(of)h(a)f Fs(&&)g Ft(or)h Fs(||)f +Ft(list,)h(or)g(if)f(the)h(command's)630 4448 y(return)i(status)i(is)f +(b)s(eing)f(in)m(v)m(erted)i(using)f Fs(!)p Ft(.)46 b(These)32 +b(are)g(the)h(same)f(conditions)h(ob)s(ey)m(ed)630 4557 +y(b)m(y)i(the)g Fs(errexit)e Ft(option.)55 b(If)34 b(a)i +Fq(sigsp)s(ec)k Ft(is)35 b Fs(RETURN)p Ft(,)g(the)g(command)g +Fq(arg)43 b Ft(is)35 b(executed)630 4667 y(eac)m(h)j(time)f(a)f(shell)h +(function)f(or)g(a)h(script)f(executed)i(with)e(the)g +Fs(.)g Ft(or)h Fs(source)e Ft(builtins)630 4776 y(\014nishes)29 +b(executing.)630 4917 y(Signals)37 b(ignored)f(up)s(on)f(en)m(try)i(to) +g(the)f(shell)h(cannot)g(b)s(e)f(trapp)s(ed)f(or)h(reset.)59 +b(T)-8 b(rapp)s(ed)630 5027 y(signals)31 b(are)g(reset)g(to)g(their)f +(original)i(v)-5 b(alues)30 b(in)g(a)h(c)m(hild)g(pro)s(cess)f(when)f +(it)i(is)g(created.)630 5168 y(The)f(return)f(status)i(is)f(zero)h +(unless)f(a)h Fq(sigsp)s(ec)36 b Ft(do)s(es)30 b(not)h(sp)s(ecify)f(a)g +(v)-5 b(alid)31 b(signal.)150 5340 y Fs(umask)p eop end %%Page: 41 47 TeXDict begin 41 46 bop 150 -116 a Ft(Chapter)30 b(4:)41 b(Shell)30 b(Builtin)h(Commands)2069 b(41)870 299 y Fs(umask)46 @@ -7863,7 +7502,7 @@ b Ft(is)29 b(giv)m(en.)630 3811 y(If)39 b(no)h Fq(v)-5 b(alue)45 b Ft(is)40 b(giv)m(en,)j(the)d(name)f(and)g(v)-5 b(alue)40 b(of)g(the)g(alias)h(is)f(prin)m(ted.)68 b(Aliases)41 b(are)630 3920 y(describ)s(ed)29 b(in)h(Section)i(6.6)f([Aliases],)h -(page)f(77.)150 4082 y Fs(bind)870 4218 y(bind)47 b([-m)g +(page)f(75.)150 4082 y Fs(bind)870 4218 y(bind)47 b([-m)g Fj(keymap)11 b Fs(])45 b([-lpsvPSV])870 4328 y(bind)i([-m)g Fj(keymap)11 b Fs(])45 b([-q)i Fj(function)11 b Fs(])45 b([-u)h Fj(function)11 b Fs(])45 b([-r)i Fj(keyseq)11 @@ -7873,15 +7512,15 @@ b Fs(])45 b(-x)i Fj(keyseq:shell-command)870 4656 y Fs(bind)g([-m)g Fj(keymap)11 b Fs(])45 b Fj(keyseq:function-name)870 4766 y Fs(bind)i Fj(readline-command)630 4902 y Ft(Displa)m(y)26 b(curren)m(t)f(Readline)h(\(see)g(Chapter)f(8)g([Command)g(Line)g -(Editing],)i(page)f(91\))g(k)m(ey)630 5011 y(and)36 b(function)g +(Editing],)i(page)f(89\))g(k)m(ey)630 5011 y(and)36 b(function)g (bindings,)i(bind)d(a)i(k)m(ey)g(sequence)g(to)h(a)f(Readline)g (function)f(or)h(macro,)630 5121 y(or)44 b(set)h(a)g(Readline)f(v)-5 b(ariable.)83 b(Eac)m(h)45 b(non-option)g(argumen)m(t)f(is)g(a)h -(command)f(as)g(it)630 5230 y(w)m(ould)e(app)s(ear)f(in)h(a)h(Readline) -g(initialization)i(\014le)d(\(see)h(Section)g(8.3)g([Readline)g(Init) -630 5340 y(File],)g(page)c(94\),)k(but)38 b(eac)m(h)i(binding)e(or)h -(command)g(m)m(ust)g(b)s(e)f(passed)g(as)i(a)f(separate)p -eop end +(command)f(as)g(it)630 5230 y(w)m(ould)35 b(app)s(ear)f(in)g(a)i(a)f +(Readline)g(initialization)j(\014le)d(\(see)h(Section)f(8.3)h +([Readline)g(Init)630 5340 y(File],)43 b(page)c(92\),)k(but)38 +b(eac)m(h)i(binding)e(or)h(command)g(m)m(ust)g(b)s(e)f(passed)g(as)i(a) +f(separate)p eop end %%Page: 42 48 TeXDict begin 42 47 bop 150 -116 a Ft(42)2572 b(Bash)31 b(Reference)g(Man)m(ual)630 299 y(argumen)m(t;)36 b(e.g.,)f(`)p @@ -7995,27 +7634,27 @@ b(If)27 b(no)g Fq(name)5 b Ft(s)27 b(are)h(giv)m(en,)h(then)e(displa)m b(instead.)630 3852 y(The)d(`)p Fs(-p)p Ft(')g(option)g(will)h(displa)m (y)f(the)h(attributes)f(and)g(v)-5 b(alues)28 b(of)h(eac)m(h)g Fq(name)p Ft(.)40 b(When)28 b(`)p Fs(-p)p Ft(')630 3961 -y(is)40 b(used,)i(additional)f(options)f(are)h(ignored.)69 -b(The)40 b(`)p Fs(-F)p Ft(')g(option)g(inhibits)g(the)g(displa)m(y)630 -4071 y(of)c(function)h(de\014nitions;)i(only)d(the)h(function)f(name)g -(and)g(attributes)h(are)f(prin)m(ted.)58 b(If)630 4181 -y(the)28 b Fs(extdebug)d Ft(shell)j(option)g(is)g(enabled)f(using)h -Fs(shopt)e Ft(\(see)i(Section)h(4.3.2)g([The)f(Shopt)630 -4290 y(Builtin],)43 b(page)e(52\),)j(the)c(source)g(\014le)g(name)g -(and)g(line)g(n)m(um)m(b)s(er)f(where)g(the)h(function)630 -4400 y(is)d(de\014ned)g(are)h(displa)m(y)m(ed)g(as)f(w)m(ell.)63 -b(`)p Fs(-F)p Ft(')38 b(implies)f(`)p Fs(-f)p Ft('.)62 -b(The)37 b(follo)m(wing)i(options)f(can)630 4509 y(b)s(e)33 -b(used)h(to)h(restrict)f(output)g(to)h(v)-5 b(ariables)35 -b(with)e(the)i(sp)s(eci\014ed)e(attributes)i(or)f(to)g(giv)m(e)630 -4619 y(v)-5 b(ariables)31 b(attributes:)630 4786 y Fs(-a)384 +y(is)k(used,)g(additional)h(options)f(are)h(ignored.)46 +b(The)31 b(`)p Fs(-F)p Ft(')h(option)h(inhibits)e(the)h(displa)m(y)h +(of)630 4071 y(function)f(de\014nitions;)h(only)g(the)f(function)g +(name)h(and)f(attributes)h(are)f(prin)m(ted.)47 b(If)32 +b(the)630 4181 y Fs(extdebug)e Ft(shell)j(option)g(is)g(enabled)f +(using)g Fs(shopt)g Ft(\(see)h(Section)g(4.2)h([Bash)f(Builtins],)630 +4290 y(page)k(41\),)h(the)e(source)g(\014le)g(name)g(and)g(line)g(n)m +(um)m(b)s(er)e(where)i(the)g(function)f(is)h(de\014ned)630 +4400 y(are)f(displa)m(y)m(ed)h(as)f(w)m(ell.)55 b(`)p +Fs(-F)p Ft(')34 b(implies)h(`)p Fs(-f)p Ft('.)54 b(The)35 +b(follo)m(wing)h(options)f(can)g(b)s(e)f(used)g(to)630 +4509 y(restrict)41 b(output)g(to)g(v)-5 b(ariables)42 +b(with)e(the)h(sp)s(eci\014ed)f(attributes)h(or)g(to)g(giv)m(e)h(v)-5 +b(ariables)630 4619 y(attributes:)630 4786 y Fs(-a)384 b Ft(Eac)m(h)30 b Fq(name)k Ft(is)29 b(an)g(arra)m(y)h(v)-5 -b(ariable)30 b(\(see)g(Section)g(6.7)g([Arra)m(ys],)h(page)e(78\).)630 +b(ariable)30 b(\(see)g(Section)g(6.7)g([Arra)m(ys],)h(page)e(76\).)630 4954 y Fs(-f)384 b Ft(Use)31 b(function)f(names)g(only)-8 b(.)630 5121 y Fs(-i)384 b Ft(The)36 b(v)-5 b(ariable)37 b(is)f(to)h(b)s(e)f(treated)h(as)g(an)f(in)m(teger;)41 b(arithmetic)c(ev)-5 b(aluation)1110 5230 y(\(see)29 -b(Section)f(6.5)h([Shell)f(Arithmetic],)i(page)e(76\))h(is)f(p)s +b(Section)f(6.5)h([Shell)f(Arithmetic],)i(page)e(74\))h(is)f(p)s (erformed)e(when)h(the)1110 5340 y(v)-5 b(ariable)31 b(is)g(assigned)f(a)h(v)-5 b(alue.)p eop end %%Page: 44 50 @@ -8024,868 +7663,834 @@ b(Reference)g(Man)m(ual)630 299 y Fs(-r)384 b Ft(Mak)m(e)25 b Fq(name)5 b Ft(s)23 b(readonly)-8 b(.)39 b(These)24 b(names)f(cannot)h(then)f(b)s(e)g(assigned)h(v)-5 b(alues)1110 408 y(b)m(y)30 b(subsequen)m(t)g(assignmen)m(t)h(statemen)m(ts)h(or)f -(unset.)630 569 y Fs(-t)384 b Ft(Giv)m(e)33 b(eac)m(h)h +(unset.)630 573 y Fs(-t)384 b Ft(Giv)m(e)33 b(eac)m(h)h Fq(name)j Ft(the)32 b Fs(trace)f Ft(attribute.)46 b(T)-8 -b(raced)32 b(functions)g(inherit)g(the)1110 679 y Fs(DEBUG)26 +b(raced)32 b(functions)g(inherit)g(the)1110 682 y Fs(DEBUG)26 b Ft(and)h Fs(RETURN)f Ft(traps)h(from)g(the)h(calling)h(shell.)40 -b(The)27 b(trace)i(attribute)1110 788 y(has)h(no)g(sp)s(ecial)h -(meaning)g(for)f(v)-5 b(ariables.)630 949 y Fs(-x)384 +b(The)27 b(trace)i(attribute)1110 792 y(has)h(no)g(sp)s(ecial)h +(meaning)g(for)f(v)-5 b(ariables.)630 956 y Fs(-x)384 b Ft(Mark)30 b(eac)m(h)h Fq(name)k Ft(for)29 b(exp)s(ort)h(to)g (subsequen)m(t)f(commands)h(via)g(the)g(en)m(vi-)1110 -1059 y(ronmen)m(t.)630 1219 y(Using)e(`)p Fs(+)p Ft(')h(instead)f(of)g -(`)p Fs(-)p Ft(')g(turns)f(o\013)i(the)f(attribute)h(instead,)g(with)f -(the)g(exceptions)h(that)630 1329 y(`)p Fs(+a)p Ft(')h(ma)m(y)h(not)f -(b)s(e)f(used)g(to)i(destro)m(y)g(an)f(arra)m(y)g(v)-5 -b(ariable)31 b(and)f(`)p Fs(+r)p Ft(')g(will)g(not)g(remo)m(v)m(e)i -(the)630 1439 y(readonly)e(attribute.)41 b(When)30 b(used)f(in)g(a)h -(function,)g Fs(declare)e Ft(mak)m(es)j(eac)m(h)f Fq(name)35 -b Ft(lo)s(cal,)630 1548 y(as)24 b(with)g(the)g Fs(local)e -Ft(command.)39 b(If)23 b(a)i(v)-5 b(ariable)24 b(name)g(is)g(follo)m(w) -m(ed)i(b)m(y)e(=)p Fq(v)-5 b(alue)p Ft(,)25 b(the)f(v)-5 -b(alue)630 1658 y(of)31 b(the)f(v)-5 b(ariable)31 b(is)g(set)g(to)g -Fq(v)-5 b(alue)p Ft(.)630 1793 y(The)35 b(return)f(status)i(is)g(zero)g -(unless)f(an)g(in)m(v)-5 b(alid)36 b(option)g(is)g(encoun)m(tered,)h -(an)f(attempt)630 1903 y(is)c(made)g(to)g(de\014ne)f(a)h(function)g -(using)f(`)p Fs(-f)f(foo=bar)p Ft(',)h(an)h(attempt)g(is)g(made)g(to)h -(assign)630 2012 y(a)42 b(v)-5 b(alue)43 b(to)g(a)f(readonly)g(v)-5 +1066 y(ronmen)m(t.)630 1230 y(Using)25 b(`)p Fs(+)p Ft(')g(instead)h +(of)f(`)p Fs(-)p Ft(')g(turns)f(o\013)h(the)g(attribute)h(instead.)39 +b(When)25 b(used)f(in)h(a)g(function,)630 1340 y Fs(declare)37 +b Ft(mak)m(es)i(eac)m(h)h Fq(name)k Ft(lo)s(cal,)f(as)38 +b(with)h(the)g Fs(local)e Ft(command.)66 b(If)38 b(a)h(v)-5 +b(ariable)630 1450 y(name)30 b(is)h(follo)m(w)m(ed)h(b)m(y)e(=)p +Fq(v)-5 b(alue)p Ft(,)31 b(the)f(v)-5 b(alue)31 b(of)g(the)f(v)-5 +b(ariable)32 b(is)e(set)h(to)g Fq(v)-5 b(alue)p Ft(.)630 +1587 y(The)35 b(return)f(status)i(is)g(zero)g(unless)f(an)g(in)m(v)-5 +b(alid)36 b(option)g(is)g(encoun)m(tered,)h(an)f(attempt)630 +1696 y(is)c(made)g(to)g(de\014ne)f(a)h(function)g(using)f(`)p +Fs(-f)f(foo=bar)p Ft(',)h(an)h(attempt)g(is)g(made)g(to)h(assign)630 +1806 y(a)42 b(v)-5 b(alue)43 b(to)g(a)f(readonly)g(v)-5 b(ariable,)47 b(an)42 b(attempt)h(is)f(made)g(to)h(assign)f(a)h(v)-5 -b(alue)42 b(to)h(an)630 2122 y(arra)m(y)30 b(v)-5 b(ariable)30 +b(alue)42 b(to)h(an)630 1915 y(arra)m(y)30 b(v)-5 b(ariable)30 b(without)g(using)e(the)i(comp)s(ound)e(assignmen)m(t)i(syn)m(tax)g -(\(see)h(Section)f(6.7)630 2231 y([Arra)m(ys],)47 b(page)c(78\),)48 +(\(see)h(Section)f(6.7)630 2025 y([Arra)m(ys],)47 b(page)c(76\),)48 b(one)43 b(of)g(the)g Fq(names)k Ft(is)c(not)g(a)g(v)-5 b(alid)43 b(shell)g(v)-5 b(ariable)44 b(name,)i(an)630 -2341 y(attempt)28 b(is)f(made)h(to)f(turn)f(o\013)i(readonly)f(status)g +2134 y(attempt)28 b(is)f(made)h(to)f(turn)f(o\013)i(readonly)f(status)g (for)g(a)h(readonly)f(v)-5 b(ariable,)29 b(an)e(attempt)630 -2450 y(is)h(made)h(to)g(turn)e(o\013)i(arra)m(y)f(status)h(for)f(an)g +2244 y(is)h(made)h(to)g(turn)e(o\013)i(arra)m(y)f(status)h(for)f(an)g (arra)m(y)h(v)-5 b(ariable,)30 b(or)e(an)g(attempt)i(is)e(made)g(to)630 -2560 y(displa)m(y)j(a)f(non-existen)m(t)i(function)e(with)g(`)p -Fs(-f)p Ft('.)150 2721 y Fs(echo)870 2856 y(echo)47 b([-neE])f([)p -Fj(arg)57 b Fs(...)o(])630 2991 y Ft(Output)31 b(the)i +2354 y(displa)m(y)j(a)f(non-existen)m(t)i(function)e(with)g(`)p +Fs(-f)p Ft('.)150 2518 y Fs(echo)870 2655 y(echo)47 b([-neE])f([)p +Fj(arg)57 b Fs(...)o(])630 2792 y Ft(Output)31 b(the)i Fq(arg)8 b Ft(s,)33 b(separated)g(b)m(y)g(spaces,)g(terminated)g(with)f -(a)h(newline.)47 b(The)32 b(return)630 3101 y(status)40 +(a)h(newline.)47 b(The)32 b(return)630 2902 y(status)40 b(is)g(alw)m(a)m(ys)h(0.)69 b(If)39 b(`)p Fs(-n)p Ft(')h(is)f(sp)s (eci\014ed,)j(the)e(trailing)h(newline)e(is)h(suppressed.)66 -b(If)630 3210 y(the)29 b(`)p Fs(-e)p Ft(')g(option)g(is)h(giv)m(en,)g +b(If)630 3011 y(the)29 b(`)p Fs(-e)p Ft(')g(option)g(is)h(giv)m(en,)g (in)m(terpretation)g(of)g(the)f(follo)m(wing)h(bac)m(kslash-escap)s(ed) -g(c)m(har-)630 3320 y(acters)38 b(is)f(enabled.)60 b(The)36 +g(c)m(har-)630 3121 y(acters)38 b(is)f(enabled.)60 b(The)36 b(`)p Fs(-E)p Ft(')h(option)g(disables)g(the)g(in)m(terpretation)h(of)f -(these)g(escap)s(e)630 3429 y(c)m(haracters,)h(ev)m(en)d(on)g(systems)g +(these)g(escap)s(e)630 3230 y(c)m(haracters,)h(ev)m(en)d(on)g(systems)g (where)f(they)h(are)g(in)m(terpreted)h(b)m(y)e(default.)55 -b(The)34 b Fs(xpg_)630 3539 y(echo)d Ft(shell)h(option)h(ma)m(y)g(b)s +b(The)34 b Fs(xpg_)630 3340 y(echo)d Ft(shell)h(option)h(ma)m(y)g(b)s (e)e(used)h(to)h(dynamically)g(determine)f(whether)f(or)i(not)f -Fs(echo)630 3649 y Ft(expands)39 b(these)i(escap)s(e)g(c)m(haracters)g +Fs(echo)630 3450 y Ft(expands)39 b(these)i(escap)s(e)g(c)m(haracters)g (b)m(y)g(default.)70 b Fs(echo)39 b Ft(do)s(es)h(not)g(in)m(terpret)h -(`)p Fs(--)p Ft(')f(to)630 3758 y(mean)30 b(the)h(end)f(of)g(options.) -630 3893 y Fs(echo)f Ft(in)m(terprets)i(the)f(follo)m(wing)i(escap)s(e) -f(sequences:)630 4054 y Fs(\\a)384 b Ft(alert)31 b(\(b)s(ell\))630 -4215 y Fs(\\b)384 b Ft(bac)m(kspace)630 4376 y Fs(\\c)g -Ft(suppress)28 b(trailing)k(newline)630 4536 y Fs(\\e)384 -b Ft(escap)s(e)630 4697 y Fs(\\f)g Ft(form)30 b(feed)630 -4858 y Fs(\\n)384 b Ft(new)30 b(line)630 5019 y Fs(\\r)384 -b Ft(carriage)32 b(return)630 5179 y Fs(\\t)384 b Ft(horizon)m(tal)32 -b(tab)630 5340 y Fs(\\v)384 b Ft(v)m(ertical)32 b(tab)p -eop end +(`)p Fs(--)p Ft(')f(to)630 3559 y(mean)30 b(the)h(end)f(of)g(options.) +630 3696 y Fs(echo)f Ft(in)m(terprets)i(the)f(follo)m(wing)i(escap)s(e) +f(sequences:)630 3861 y Fs(\\a)384 b Ft(alert)31 b(\(b)s(ell\))630 +4025 y Fs(\\b)384 b Ft(bac)m(kspace)630 4189 y Fs(\\c)g +Ft(suppress)28 b(trailing)k(newline)630 4354 y Fs(\\e)384 +b Ft(escap)s(e)630 4518 y Fs(\\f)g Ft(form)30 b(feed)630 +4682 y Fs(\\n)384 b Ft(new)30 b(line)630 4847 y Fs(\\r)384 +b Ft(carriage)32 b(return)630 5011 y Fs(\\t)384 b Ft(horizon)m(tal)32 +b(tab)630 5176 y Fs(\\v)384 b Ft(v)m(ertical)32 b(tab)630 +5340 y Fs(\\\\)384 b Ft(bac)m(kslash)p eop end %%Page: 45 51 TeXDict begin 45 50 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(45)630 299 y Fs(\\\\)384 -b Ft(bac)m(kslash)630 454 y Fs(\\0)p Fj(nnn)240 b Ft(the)32 -b(eigh)m(t-bit)i(c)m(haracter)g(whose)e(v)-5 b(alue)33 -b(is)f(the)g(o)s(ctal)i(v)-5 b(alue)32 b Fq(nnn)f Ft(\(zero)i(to)1110 -564 y(three)e(o)s(ctal)g(digits\))630 719 y Fs(\\x)p -Fj(HH)288 b Ft(the)40 b(eigh)m(t-bit)h(c)m(haracter)g(whose)e(v)-5 -b(alue)39 b(is)h(the)f(hexadecimal)i(v)-5 b(alue)40 b -Fq(HH)1110 829 y Ft(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\))150 -984 y Fs(enable)870 1116 y(enable)46 b([-a])h([-dnps])f([-f)g -Fj(filename)11 b Fs(])45 b([)p Fj(name)57 b Fs(...)o(])630 -1249 y Ft(Enable)36 b(and)f(disable)h(builtin)g(shell)g(commands.)56 -b(Disabling)37 b(a)g(builtin)e(allo)m(ws)i(a)f(disk)630 -1358 y(command)e(whic)m(h)g(has)g(the)g(same)h(name)f(as)h(a)f(shell)h -(builtin)e(to)i(b)s(e)f(executed)h(without)630 1468 y(sp)s(ecifying)27 +b(Shell)30 b(Builtin)h(Commands)2069 b(45)630 299 y Fs(\\0)p +Fj(nnn)240 b Ft(the)32 b(eigh)m(t-bit)i(c)m(haracter)g(whose)e(v)-5 +b(alue)33 b(is)f(the)g(o)s(ctal)i(v)-5 b(alue)32 b Fq(nnn)f +Ft(\(zero)i(to)1110 408 y(three)e(o)s(ctal)g(digits\))630 +575 y Fs(\\)p Fj(nnn)288 b Ft(the)35 b(eigh)m(t-bit)h(c)m(haracter)g +(whose)e(v)-5 b(alue)35 b(is)g(the)f(o)s(ctal)i(v)-5 +b(alue)35 b Fq(nnn)e Ft(\(one)i(to)1110 685 y(three)c(o)s(ctal)g +(digits\))630 852 y Fs(\\x)p Fj(HH)288 b Ft(the)40 b(eigh)m(t-bit)h(c)m +(haracter)g(whose)e(v)-5 b(alue)39 b(is)h(the)f(hexadecimal)i(v)-5 +b(alue)40 b Fq(HH)1110 961 y Ft(\(one)31 b(or)f(t)m(w)m(o)i(hex)e +(digits\))150 1128 y Fs(enable)870 1266 y(enable)46 b([-n])h([-p])f +([-f)h Fj(filename)11 b Fs(])45 b([-ads])h([)p Fj(name)57 +b Fs(...)o(])630 1404 y Ft(Enable)36 b(and)f(disable)h(builtin)g(shell) +g(commands.)56 b(Disabling)37 b(a)g(builtin)e(allo)m(ws)i(a)f(disk)630 +1514 y(command)e(whic)m(h)g(has)g(the)g(same)h(name)f(as)h(a)f(shell)h +(builtin)e(to)i(b)s(e)f(executed)h(without)630 1623 y(sp)s(ecifying)27 b(a)g(full)g(pathname,)g(ev)m(en)h(though)f(the)g(shell)g(normally)g -(searc)m(hes)h(for)f(builtins)630 1577 y(b)s(efore)32 +(searc)m(hes)h(for)f(builtins)630 1733 y(b)s(efore)32 b(disk)f(commands.)46 b(If)31 b(`)p Fs(-n)p Ft(')h(is)g(used,)g(the)g Fq(name)5 b Ft(s)32 b(b)s(ecome)h(disabled.)45 b(Otherwise)630 -1687 y Fq(name)5 b Ft(s)44 b(are)h(enabled.)82 b(F)-8 +1843 y Fq(name)5 b Ft(s)44 b(are)h(enabled.)82 b(F)-8 b(or)45 b(example,)k(to)c(use)f(the)g Fs(test)f Ft(binary)h(found)f -(via)h Fs($PATH)630 1797 y Ft(instead)31 b(of)f(the)h(shell)f(builtin)g +(via)h Fs($PATH)630 1952 y Ft(instead)31 b(of)f(the)h(shell)f(builtin)g (v)m(ersion,)h(t)m(yp)s(e)g(`)p Fs(enable)e(-n)h(test)p -Ft('.)630 1929 y(If)42 b(the)h(`)p Fs(-p)p Ft(')f(option)h(is)f +Ft('.)630 2090 y(If)42 b(the)h(`)p Fs(-p)p Ft(')f(option)h(is)f (supplied,)j(or)d(no)h Fq(name)k Ft(argumen)m(ts)c(app)s(ear,)i(a)e -(list)g(of)g(shell)630 2039 y(builtins)37 b(is)h(prin)m(ted.)63 +(list)g(of)g(shell)630 2200 y(builtins)37 b(is)h(prin)m(ted.)63 b(With)38 b(no)f(other)h(argumen)m(ts,)j(the)d(list)g(consists)g(of)g -(all)h(enabled)630 2148 y(shell)33 b(builtins.)46 b(The)32 +(all)h(enabled)630 2310 y(shell)33 b(builtins.)46 b(The)32 b(`)p Fs(-a)p Ft(')h(option)g(means)f(to)i(list)f(eac)m(h)h(builtin)e -(with)g(an)g(indication)i(of)630 2258 y(whether)c(or)g(not)h(it)g(is)f -(enabled.)630 2390 y(The)40 b(`)p Fs(-f)p Ft(')g(option)g(means)g(to)h +(with)g(an)g(indication)i(of)630 2419 y(whether)c(or)g(not)h(it)g(is)f +(enabled.)630 2557 y(The)40 b(`)p Fs(-f)p Ft(')g(option)g(means)g(to)h (load)g(the)f(new)f(builtin)h(command)g Fq(name)45 b -Ft(from)40 b(shared)630 2500 y(ob)5 b(ject)27 b Fq(\014lename)p +Ft(from)40 b(shared)630 2667 y(ob)5 b(ject)27 b Fq(\014lename)p Ft(,)g(on)f(systems)g(that)h(supp)s(ort)d(dynamic)i(loading.)40 -b(The)26 b(`)p Fs(-d)p Ft(')g(option)h(will)630 2609 +b(The)26 b(`)p Fs(-d)p Ft(')g(option)h(will)630 2777 y(delete)32 b(a)e(builtin)g(loaded)h(with)f(`)p Fs(-f)p -Ft('.)630 2742 y(If)h(there)g(are)g(no)g(options,)h(a)f(list)h(of)f +Ft('.)630 2915 y(If)h(there)g(are)g(no)g(options,)h(a)f(list)h(of)f (the)g(shell)g(builtins)g(is)g(displa)m(y)m(ed.)43 b(The)31 -b(`)p Fs(-s)p Ft(')f(option)630 2851 y(restricts)f Fs(enable)e +b(`)p Fs(-s)p Ft(')f(option)630 3024 y(restricts)f Fs(enable)e Ft(to)i(the)f Fl(posix)g Ft(sp)s(ecial)h(builtins.)40 b(If)27 b(`)p Fs(-s)p Ft(')i(is)f(used)g(with)g(`)p Fs(-f)p -Ft(',)h(the)f(new)630 2961 y(builtin)i(b)s(ecomes)h(a)f(sp)s(ecial)h +Ft(',)h(the)f(new)630 3134 y(builtin)i(b)s(ecomes)h(a)f(sp)s(ecial)h (builtin)f(\(see)i(Section)f(4.4)g([Sp)s(ecial)g(Builtins],)g(page)g -(57\).)630 3093 y(The)26 b(return)f(status)h(is)g(zero)h(unless)e(a)i +(56\).)630 3272 y(The)26 b(return)f(status)h(is)g(zero)h(unless)e(a)i Fq(name)k Ft(is)26 b(not)g(a)h(shell)f(builtin)g(or)g(there)g(is)g(an)g -(error)630 3203 y(loading)31 b(a)g(new)f(builtin)g(from)g(a)g(shared)g -(ob)5 b(ject.)150 3358 y Fs(help)870 3491 y(help)47 b([-s])f([)p -Fj(pattern)11 b Fs(])630 3623 y Ft(Displa)m(y)40 b(helpful)e +(error)630 3382 y(loading)31 b(a)g(new)f(builtin)g(from)g(a)g(shared)g +(ob)5 b(ject.)150 3548 y Fs(help)870 3687 y(help)47 b([-s])f([)p +Fj(pattern)11 b Fs(])630 3825 y Ft(Displa)m(y)40 b(helpful)e (information)h(ab)s(out)g(builtin)f(commands.)66 b(If)38 -b Fq(pattern)h Ft(is)g(sp)s(eci\014ed,)630 3733 y Fs(help)28 +b Fq(pattern)h Ft(is)g(sp)s(eci\014ed,)630 3934 y Fs(help)28 b Ft(giv)m(es)i(detailed)g(help)e(on)h(all)h(commands)e(matc)m(hing)i -Fq(pattern)p Ft(,)g(otherwise)f(a)g(list)h(of)630 3842 +Fq(pattern)p Ft(,)g(otherwise)f(a)g(list)h(of)630 4044 y(the)36 b(builtins)f(is)h(prin)m(ted.)56 b(The)35 b(`)p Fs(-s)p Ft(')h(option)g(restricts)g(the)g(information)g(displa)m(y)m -(ed)g(to)630 3952 y(a)c(short)g(usage)h(synopsis.)44 +(ed)g(to)630 4154 y(a)c(short)g(usage)h(synopsis.)44 b(The)32 b(return)f(status)h(is)g(zero)h(unless)e(no)h(command)g(matc)m -(hes)630 4061 y Fq(pattern)p Ft(.)150 4217 y Fs(let)870 -4349 y(let)47 b Fj(expression)55 b Fs([)p Fj(expression)11 -b Fs(])630 4482 y Ft(The)41 b Fs(let)g Ft(builtin)g(allo)m(ws)i +(hes)630 4263 y Fq(pattern)p Ft(.)150 4430 y Fs(let)870 +4568 y(let)47 b Fj(expression)55 b Fs([)p Fj(expression)11 +b Fs(])630 4706 y Ft(The)41 b Fs(let)g Ft(builtin)g(allo)m(ws)i (arithmetic)f(to)h(b)s(e)d(p)s(erformed)g(on)i(shell)g(v)-5 -b(ariables.)74 b(Eac)m(h)630 4591 y Fq(expression)31 +b(ariables.)74 b(Eac)m(h)630 4816 y Fq(expression)31 b Ft(is)g(ev)-5 b(aluated)32 b(according)f(to)h(the)f(rules)g(giv)m(en) -h(b)s(elo)m(w)f(in)f(Section)i(6.5)g([Shell)630 4701 -y(Arithmetic],)51 b(page)46 b(76.)87 b(If)45 b(the)g(last)h +h(b)s(elo)m(w)f(in)f(Section)i(6.5)g([Shell)630 4925 +y(Arithmetic],)51 b(page)46 b(74.)87 b(If)45 b(the)g(last)h Fq(expression)g Ft(ev)-5 b(aluates)47 b(to)f(0,)k Fs(let)44 -b Ft(returns)g(1;)630 4810 y(otherwise)31 b(0)g(is)f(returned.)150 -4966 y Fs(local)870 5098 y(local)46 b([)p Fj(option)11 -b Fs(])45 b Fj(name)11 b Fs([=)p Fj(value)g Fs(])44 b(...)630 -5230 y Ft(F)-8 b(or)27 b(eac)m(h)g(argumen)m(t,)g(a)f(lo)s(cal)h(v)-5 -b(ariable)27 b(named)e Fq(name)31 b Ft(is)26 b(created,)i(and)d -(assigned)h Fq(v)-5 b(alue)p Ft(.)630 5340 y(The)37 b -Fq(option)h Ft(can)f(b)s(e)g(an)m(y)h(of)f(the)h(options)g(accepted)g -(b)m(y)g Fs(declare)p Ft(.)59 b Fs(local)36 b Ft(can)i(only)p +b Ft(returns)g(1;)630 5035 y(otherwise)31 b(0)g(is)f(returned.)150 +5202 y Fs(local)870 5340 y(local)46 b([)p Fj(option)11 +b Fs(])45 b Fj(name)11 b Fs([=)p Fj(value)g Fs(])44 b(...)p eop end %%Page: 46 52 TeXDict begin 46 51 bop 150 -116 a Ft(46)2572 b(Bash)31 -b(Reference)g(Man)m(ual)630 299 y(b)s(e)41 b(used)h(within)f(a)i +b(Reference)g(Man)m(ual)630 299 y(F)-8 b(or)27 b(eac)m(h)g(argumen)m +(t,)g(a)f(lo)s(cal)h(v)-5 b(ariable)27 b(named)e Fq(name)31 +b Ft(is)26 b(created,)i(and)d(assigned)h Fq(v)-5 b(alue)p +Ft(.)630 408 y(The)37 b Fq(option)h Ft(can)f(b)s(e)g(an)m(y)h(of)f(the) +h(options)g(accepted)g(b)m(y)g Fs(declare)p Ft(.)59 b +Fs(local)36 b Ft(can)i(only)630 518 y(b)s(e)j(used)h(within)f(a)i (function;)48 b(it)42 b(mak)m(es)h(the)f(v)-5 b(ariable)43 b Fq(name)48 b Ft(ha)m(v)m(e)43 b(a)f(visible)h(scop)s(e)630 -408 y(restricted)c(to)g(that)g(function)f(and)f(its)i(c)m(hildren.)64 -b(The)38 b(return)f(status)h(is)h(zero)g(unless)630 518 +628 y(restricted)c(to)g(that)g(function)f(and)f(its)i(c)m(hildren.)64 +b(The)38 b(return)f(status)h(is)h(zero)g(unless)630 737 y Fs(local)g Ft(is)h(used)g(outside)g(a)h(function,)h(an)e(in)m(v)-5 b(alid)41 b Fq(name)46 b Ft(is)40 b(supplied,)i(or)e -Fq(name)45 b Ft(is)c(a)630 628 y(readonly)30 b(v)-5 b(ariable.)150 -778 y Fs(logout)870 908 y(logout)46 b([)p Fj(n)11 b Fs(])630 -1039 y Ft(Exit)31 b(a)g(login)g(shell,)g(returning)e(a)i(status)g(of)f -Fq(n)g Ft(to)h(the)g(shell's)f(paren)m(t.)150 1189 y -Fs(printf)870 1319 y(printf)46 b([-v)h Fj(var)11 b Fs(])46 -b Fj(format)57 b Fs([)p Fj(arguments)11 b Fs(])630 1450 -y Ft(W)-8 b(rite)27 b(the)g(formatted)f Fq(argumen)m(ts)k +Fq(name)45 b Ft(is)c(a)630 847 y(readonly)30 b(v)-5 b(ariable.)150 +1019 y Fs(logout)870 1160 y(logout)46 b([)p Fj(n)11 b +Fs(])630 1301 y Ft(Exit)31 b(a)g(login)g(shell,)g(returning)e(a)i +(status)g(of)f Fq(n)g Ft(to)h(the)g(shell's)f(paren)m(t.)150 +1473 y Fs(printf)870 1614 y(printf)46 b([-v)h Fj(var)11 +b Fs(])46 b Fj(format)57 b Fs([)p Fj(arguments)11 b Fs(])630 +1755 y Ft(W)-8 b(rite)27 b(the)g(formatted)f Fq(argumen)m(ts)k Ft(to)d(the)f(standard)f(output)h(under)e(the)i(con)m(trol)i(of)e(the) -630 1559 y Fq(format)p Ft(.)41 b(The)28 b Fq(format)j +630 1864 y Fq(format)p Ft(.)41 b(The)28 b Fq(format)j Ft(is)e(a)g(c)m(haracter)i(string)d(whic)m(h)h(con)m(tains)h(three)f(t) -m(yp)s(es)g(of)g(ob)5 b(jects:)630 1669 y(plain)28 b(c)m(haracters,)j +m(yp)s(es)g(of)g(ob)5 b(jects:)630 1974 y(plain)28 b(c)m(haracters,)j (whic)m(h)d(are)h(simply)f(copied)h(to)h(standard)d(output,)i(c)m -(haracter)h(escap)s(e)630 1778 y(sequences,)g(whic)m(h)f(are)g(con)m(v) +(haracter)h(escap)s(e)630 2084 y(sequences,)g(whic)m(h)f(are)g(con)m(v) m(erted)i(and)d(copied)i(to)f(the)h(standard)e(output,)h(and)g(format) -630 1888 y(sp)s(eci\014cations,)39 b(eac)m(h)e(of)g(whic)m(h)f(causes)g +630 2193 y(sp)s(eci\014cations,)39 b(eac)m(h)e(of)g(whic)m(h)f(causes)g (prin)m(ting)g(of)h(the)f(next)h(successiv)m(e)g Fq(argumen)m(t)p -Ft(.)630 1998 y(In)31 b(addition)h(to)h(the)e(standard)g +Ft(.)630 2303 y(In)31 b(addition)h(to)h(the)e(standard)g Fs(printf\(1\))f Ft(formats,)i(`)p Fs(\045b)p Ft(')g(causes)g -Fs(printf)e Ft(to)j(expand)630 2107 y(bac)m(kslash)39 +Fs(printf)e Ft(to)j(expand)630 2412 y(bac)m(kslash)39 b(escap)s(e)g(sequences)f(in)h(the)f(corresp)s(onding)f Fq(argumen)m(t)p Ft(,)k(\(except)f(that)f(`)p Fs(\\c)p -Ft(')630 2217 y(terminates)44 b(output,)j(bac)m(kslashes)d(in)f(`)p +Ft(')630 2522 y(terminates)44 b(output,)j(bac)m(kslashes)d(in)f(`)p Fs(\\')p Ft(',)k(`)p Fs(\\")p Ft(',)g(and)c(`)p Fs(\\?)p -Ft(')g(are)h(not)g(remo)m(v)m(ed,)k(and)630 2326 y(o)s(ctal)25 +Ft(')g(are)h(not)g(remo)m(v)m(ed,)k(and)630 2632 y(o)s(ctal)25 b(escap)s(es)f(b)s(eginning)f(with)g(`)p Fs(\\0)p Ft(')h(ma)m(y)g(con)m (tain)h(up)e(to)h(four)f(digits\),)j(and)d(`)p Fs(\045q)p -Ft(')h(causes)630 2436 y Fs(printf)31 b Ft(to)i(output)f(the)h(corresp) +Ft(')h(causes)630 2741 y Fs(printf)31 b Ft(to)i(output)f(the)h(corresp) s(onding)f Fq(argumen)m(t)j Ft(in)d(a)h(format)g(that)g(can)g(b)s(e)f -(reused)630 2545 y(as)f(shell)f(input.)630 2676 y(The)24 +(reused)630 2851 y(as)f(shell)f(input.)630 2992 y(The)24 b(`)p Fs(-v)p Ft(')h(option)g(causes)g(the)g(output)g(to)g(b)s(e)f (assigned)h(to)h(the)f(v)-5 b(ariable)25 b Fq(v)-5 b(ar)32 -b Ft(rather)24 b(than)630 2785 y(b)s(eing)30 b(prin)m(ted)g(to)h(the)g -(standard)e(output.)630 2915 y(The)i Fq(format)i Ft(is)f(reused)e(as)i +b Ft(rather)24 b(than)630 3101 y(b)s(eing)30 b(prin)m(ted)g(to)h(the)g +(standard)e(output.)630 3242 y(The)i Fq(format)i Ft(is)f(reused)e(as)i (necessary)f(to)i(consume)e(all)h(of)f(the)h Fq(argumen)m(ts)p -Ft(.)44 b(If)30 b(the)i Fq(for-)630 3025 y(mat)c Ft(requires)e(more)g +Ft(.)44 b(If)30 b(the)i Fq(for-)630 3352 y(mat)c Ft(requires)e(more)g Fq(argumen)m(ts)k Ft(than)25 b(are)i(supplied,)e(the)h(extra)h(format)f -(sp)s(eci\014cations)630 3134 y(b)s(eha)m(v)m(e)j(as)g(if)f(a)h(zero)g +(sp)s(eci\014cations)630 3461 y(b)s(eha)m(v)m(e)j(as)g(if)f(a)h(zero)g (v)-5 b(alue)29 b(or)g(n)m(ull)f(string,)h(as)g(appropriate,)g(had)f(b) -s(een)g(supplied.)38 b(The)630 3244 y(return)29 b(v)-5 +s(een)g(supplied.)38 b(The)630 3571 y(return)29 b(v)-5 b(alue)31 b(is)g(zero)g(on)f(success,)h(non-zero)g(on)f(failure.)150 -3395 y Fs(read)870 3525 y(read)47 b([-ers])f([-a)h Fj(aname)11 +3743 y Fs(read)870 3884 y(read)47 b([-ers])f([-a)h Fj(aname)11 b Fs(])45 b([-d)i Fj(delim)11 b Fs(])46 b([-n)h Fj(nchars)11 b Fs(])45 b([-p)i Fj(prompt)11 b Fs(])45 b([-t)i Fj(time-)870 -3634 y(out)11 b Fs(])46 b([-u)h Fj(fd)11 b Fs(])46 b([)p -Fj(name)57 b Fs(...])630 3765 y Ft(One)26 b(line)h(is)g(read)f(from)h +3994 y(out)11 b Fs(])46 b([-u)h Fj(fd)11 b Fs(])46 b([)p +Fj(name)57 b Fs(...])630 4134 y Ft(One)26 b(line)h(is)g(read)f(from)h (the)f(standard)g(input,)h(or)g(from)f(the)h(\014le)f(descriptor)h -Fq(fd)i Ft(supplied)630 3874 y(as)37 b(an)g(argumen)m(t)h(to)f(the)h(`) +Fq(fd)i Ft(supplied)630 4244 y(as)37 b(an)g(argumen)m(t)h(to)f(the)h(`) p Fs(-u)p Ft(')e(option,)k(and)c(the)i(\014rst)e(w)m(ord)g(is)h -(assigned)h(to)f(the)h(\014rst)630 3984 y Fq(name)p Ft(,)29 +(assigned)h(to)f(the)h(\014rst)630 4354 y Fq(name)p Ft(,)29 b(the)f(second)h(w)m(ord)e(to)i(the)g(second)f Fq(name)p Ft(,)h(and)e(so)i(on,)g(with)f(lefto)m(v)m(er)i(w)m(ords)e(and)630 -4093 y(their)g(in)m(terv)m(ening)h(separators)g(assigned)f(to)h(the)f +4463 y(their)g(in)m(terv)m(ening)h(separators)g(assigned)f(to)h(the)f (last)h Fq(name)p Ft(.)40 b(If)27 b(there)i(are)f(few)m(er)g(w)m(ords) -630 4203 y(read)44 b(from)f(the)g(input)g(stream)h(than)g(names,)j(the) -c(remaining)h(names)g(are)g(assigned)630 4313 y(empt)m(y)31 +630 4573 y(read)44 b(from)f(the)g(input)g(stream)h(than)g(names,)j(the) +c(remaining)h(names)g(are)g(assigned)630 4682 y(empt)m(y)31 b(v)-5 b(alues.)41 b(The)30 b(c)m(haracters)i(in)e(the)h(v)-5 b(alue)31 b(of)g(the)f Fs(IFS)g Ft(v)-5 b(ariable)31 -b(are)g(used)f(to)h(split)630 4422 y(the)37 b(line)h(in)m(to)g(w)m +b(are)g(used)f(to)h(split)630 4792 y(the)37 b(line)h(in)m(to)g(w)m (ords.)61 b(The)36 b(bac)m(kslash)i(c)m(haracter)h(`)p Fs(\\)p Ft(')e(ma)m(y)h(b)s(e)f(used)f(to)i(remo)m(v)m(e)h(an)m(y)630 -4532 y(sp)s(ecial)h(meaning)g(for)f(the)g(next)h(c)m(haracter)h(read)e +4902 y(sp)s(ecial)h(meaning)g(for)f(the)g(next)h(c)m(haracter)h(read)e (and)g(for)g(line)h(con)m(tin)m(uation.)69 b(If)39 b(no)630 -4641 y(names)28 b(are)h(supplied,)f(the)g(line)h(read)g(is)f(assigned)h +5011 y(names)28 b(are)h(supplied,)f(the)g(line)h(read)g(is)f(assigned)h (to)g(the)f(v)-5 b(ariable)29 b Fs(REPLY)p Ft(.)39 b(The)28 -b(return)630 4751 y(co)s(de)i(is)f(zero,)i(unless)e(end-of-\014le)h(is) +b(return)630 5121 y(co)s(de)i(is)f(zero,)i(unless)e(end-of-\014le)h(is) f(encoun)m(tered,)h Fs(read)f Ft(times)h(out,)g(or)f(an)h(in)m(v)-5 -b(alid)30 b(\014le)630 4861 y(descriptor)35 b(is)h(supplied)e(as)i(the) +b(alid)30 b(\014le)630 5230 y(descriptor)35 b(is)h(supplied)e(as)i(the) f(argumen)m(t)h(to)g(`)p Fs(-u)p Ft('.)56 b(Options,)37 -b(if)e(supplied,)h(ha)m(v)m(e)h(the)630 4970 y(follo)m(wing)32 -b(meanings:)630 5121 y Fs(-a)e Fj(aname)114 b Ft(The)34 -b(w)m(ords)f(are)i(assigned)f(to)h(sequen)m(tial)h(indices)e(of)g(the)g -(arra)m(y)h(v)-5 b(ariable)1110 5230 y Fq(aname)p Ft(,)29 -b(starting)h(at)f(0.)40 b(All)29 b(elemen)m(ts)h(are)e(remo)m(v)m(ed)i -(from)d Fq(aname)34 b Ft(b)s(efore)1110 5340 y(the)d(assignmen)m(t.)41 -b(Other)30 b Fq(name)36 b Ft(argumen)m(ts)30 b(are)h(ignored.)p -eop end +b(if)e(supplied,)h(ha)m(v)m(e)h(the)630 5340 y(follo)m(wing)32 +b(meanings:)p eop end %%Page: 47 53 TeXDict begin 47 52 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(47)630 299 y Fs(-d)30 -b Fj(delim)114 b Ft(The)41 b(\014rst)h(c)m(haracter)h(of)f +b(Shell)30 b(Builtin)h(Commands)2069 b(47)630 299 y Fs(-a)30 +b Fj(aname)114 b Ft(The)34 b(w)m(ords)f(are)i(assigned)f(to)h(sequen)m +(tial)h(indices)e(of)g(the)g(arra)m(y)h(v)-5 b(ariable)1110 +408 y Fq(aname)p Ft(,)29 b(starting)h(at)f(0.)40 b(All)29 +b(elemen)m(ts)h(are)e(remo)m(v)m(ed)i(from)d Fq(aname)34 +b Ft(b)s(efore)1110 518 y(the)d(assignmen)m(t.)41 b(Other)30 +b Fq(name)36 b Ft(argumen)m(ts)30 b(are)h(ignored.)630 +690 y Fs(-d)f Fj(delim)114 b Ft(The)41 b(\014rst)h(c)m(haracter)h(of)f Fq(delim)g Ft(is)g(used)g(to)g(terminate)h(the)f(input)f(line,)1110 -408 y(rather)30 b(than)g(newline.)630 567 y Fs(-e)384 +800 y(rather)30 b(than)g(newline.)630 972 y Fs(-e)384 b Ft(Readline)28 b(\(see)h(Chapter)e(8)h([Command)f(Line)g(Editing],)i -(page)f(91\))h(is)f(used)1110 676 y(to)j(obtain)g(the)g(line.)630 -835 y Fs(-n)f Fj(nchars)1110 944 y Fs(read)38 b Ft(returns)f(after)j +(page)f(89\))h(is)f(used)1110 1082 y(to)j(obtain)g(the)g(line.)630 +1254 y Fs(-n)f Fj(nchars)1110 1363 y Fs(read)38 b Ft(returns)f(after)j (reading)f Fq(nc)m(hars)j Ft(c)m(haracters)e(rather)f(than)g(w)m -(aiting)1110 1054 y(for)30 b(a)h(complete)h(line)e(of)h(input.)630 -1212 y Fs(-p)f Fj(prompt)1110 1322 y Ft(Displa)m(y)38 +(aiting)1110 1473 y(for)30 b(a)h(complete)h(line)e(of)h(input.)630 +1645 y Fs(-p)f Fj(prompt)1110 1755 y Ft(Displa)m(y)38 b Fq(prompt)p Ft(,)g(without)e(a)h(trailing)h(newline,)h(b)s(efore)d -(attempting)i(to)1110 1431 y(read)f(an)m(y)h(input.)60 +(attempting)i(to)1110 1864 y(read)f(an)m(y)h(input.)60 b(The)37 b(prompt)g(is)g(displa)m(y)m(ed)h(only)f(if)g(input)g(is)g -(coming)1110 1541 y(from)30 b(a)h(terminal.)630 1699 +(coming)1110 1974 y(from)30 b(a)h(terminal.)630 2146 y Fs(-r)384 b Ft(If)21 b(this)h(option)g(is)f(giv)m(en,)k(bac)m(kslash) d(do)s(es)f(not)h(act)h(as)f(an)f(escap)s(e)h(c)m(haracter.)1110 -1809 y(The)30 b(bac)m(kslash)i(is)f(considered)g(to)h(b)s(e)e(part)h -(of)g(the)g(line.)43 b(In)30 b(particular,)i(a)1110 1918 +2256 y(The)30 b(bac)m(kslash)i(is)f(considered)g(to)h(b)s(e)e(part)h +(of)g(the)g(line.)43 b(In)30 b(particular,)i(a)1110 2365 y(bac)m(kslash-newline)f(pair)f(ma)m(y)h(not)g(b)s(e)f(used)f(as)i(a)g -(line)f(con)m(tin)m(uation.)630 2077 y Fs(-s)384 b Ft(Silen)m(t)28 +(line)f(con)m(tin)m(uation.)630 2538 y Fs(-s)384 b Ft(Silen)m(t)28 b(mo)s(de.)40 b(If)27 b(input)f(is)i(coming)g(from)f(a)h(terminal,)h(c) -m(haracters)g(are)f(not)1110 2186 y(ec)m(ho)s(ed.)630 -2345 y Fs(-t)i Fj(timeout)1110 2454 y Ft(Cause)42 b Fs(read)g +m(haracters)g(are)f(not)1110 2647 y(ec)m(ho)s(ed.)630 +2819 y Fs(-t)i Fj(timeout)1110 2929 y Ft(Cause)42 b Fs(read)g Ft(to)h(time)h(out)f(and)f(return)f(failure)i(if)g(a)g(complete)h(line) -f(of)1110 2564 y(input)26 b(is)h(not)h(read)f(within)f +f(of)1110 3039 y(input)26 b(is)h(not)h(read)f(within)f Fq(timeout)k Ft(seconds.)40 b(This)26 b(option)i(has)e(no)h(e\013ect) -1110 2673 y(if)j Fs(read)g Ft(is)g(not)h(reading)f(input)f(from)h(the)h -(terminal)g(or)f(a)h(pip)s(e.)630 2832 y Fs(-u)f Fj(fd)258 +1110 3148 y(if)j Fs(read)g Ft(is)g(not)h(reading)f(input)f(from)h(the)h +(terminal)g(or)f(a)h(pip)s(e.)630 3320 y Fs(-u)f Fj(fd)258 b Ft(Read)31 b(input)e(from)h(\014le)g(descriptor)h Fq(fd)p -Ft(.)150 2990 y Fs(source)870 3124 y(source)46 b Fj(filename)630 -3258 y Ft(A)30 b(synon)m(ym)g(for)g Fs(.)g Ft(\(see)i(Section)f(4.1)g -([Bourne)g(Shell)f(Builtins],)h(page)g(35\).)150 3416 -y Fs(type)870 3550 y(type)47 b([-afptP])e([)p Fj(name)57 -b Fs(...)o(])630 3684 y Ft(F)-8 b(or)42 b(eac)m(h)g Fq(name)p +Ft(.)150 3493 y Fs(shopt)870 3634 y(shopt)46 b([-pqsu])g([-o])h([)p +Fj(optname)56 b Fs(...)o(])630 3774 y Ft(T)-8 b(oggle)47 +b(the)d(v)-5 b(alues)45 b(of)g(v)-5 b(ariables)45 b(con)m(trolling)i +(optional)f(shell)e(b)s(eha)m(vior.)84 b(With)45 b(no)630 +3884 y(options,)32 b(or)f(with)g(the)g(`)p Fs(-p)p Ft(')g(option,)h(a)g +(list)f(of)h(all)g(settable)g(options)g(is)f(displa)m(y)m(ed,)h(with) +630 3994 y(an)i(indication)i(of)f(whether)f(or)g(not)h(eac)m(h)h(is)e +(set.)54 b(The)34 b(`)p Fs(-p)p Ft(')h(option)g(causes)g(output)f(to) +630 4103 y(b)s(e)i(displa)m(y)m(ed)h(in)e(a)i(form)f(that)h(ma)m(y)g(b) +s(e)e(reused)h(as)g(input.)58 b(Other)36 b(options)g(ha)m(v)m(e)i(the) +630 4213 y(follo)m(wing)32 b(meanings:)630 4385 y Fs(-s)384 +b Ft(Enable)30 b(\(set\))i(eac)m(h)f Fq(optname)p Ft(.)630 +4557 y Fs(-u)384 b Ft(Disable)31 b(\(unset\))g(eac)m(h)h +Fq(optname)p Ft(.)630 4729 y Fs(-q)384 b Ft(Suppresses)28 +b(normal)h(output;)h(the)g(return)e(status)i(indicates)h(whether)e(the) +1110 4839 y Fq(optname)37 b Ft(is)31 b(set)h(or)f(unset.)43 +b(If)31 b(m)m(ultiple)h Fq(optname)37 b Ft(argumen)m(ts)31 +b(are)h(giv)m(en)1110 4949 y(with)43 b(`)p Fs(-q)p Ft(',)j(the)d +(return)f(status)h(is)g(zero)h(if)f(all)g Fq(optnames)k +Ft(are)d(enabled;)1110 5058 y(non-zero)31 b(otherwise.)630 +5230 y Fs(-o)384 b Ft(Restricts)42 b(the)g(v)-5 b(alues)42 +b(of)f Fq(optname)47 b Ft(to)42 b(b)s(e)f(those)h(de\014ned)e(for)h +(the)h(`)p Fs(-o)p Ft(')1110 5340 y(option)21 b(to)h(the)f +Fs(set)f Ft(builtin)g(\(see)i(Section)f(4.3)h([The)e(Set)h(Builtin],)j +(page)d(53\).)p eop end +%%Page: 48 54 +TeXDict begin 48 53 bop 150 -116 a Ft(48)2572 b(Bash)31 +b(Reference)g(Man)m(ual)630 299 y(If)e(either)i(`)p Fs(-s)p +Ft(')f(or)g(`)p Fs(-u)p Ft(')f(is)h(used)g(with)f(no)h +Fq(optname)35 b Ft(argumen)m(ts,)c(the)f(displa)m(y)g(is)g(limited)630 +408 y(to)h(those)g(options)g(whic)m(h)f(are)h(set)f(or)h(unset,)f(resp) +s(ectiv)m(ely)-8 b(.)630 542 y(Unless)30 b(otherwise)h(noted,)g(the)g +Fs(shopt)d Ft(options)j(are)g(disabled)f(\(o\013)7 b(\))32 +b(b)m(y)e(default.)630 675 y(The)d(return)f(status)i(when)f(listing)h +(options)g(is)f(zero)i(if)e(all)i Fq(optnames)i Ft(are)d(enabled,)g +(non-)630 785 y(zero)40 b(otherwise.)66 b(When)39 b(setting)h(or)f +(unsetting)g(options,)i(the)e(return)f(status)h(is)g(zero)630 +894 y(unless)30 b(an)g Fq(optname)36 b Ft(is)30 b(not)h(a)g(v)-5 +b(alid)30 b(shell)h(option.)630 1028 y(The)f(list)h(of)f +Fs(shopt)f Ft(options)i(is:)630 1185 y Fs(cdable_vars)1110 +1295 y Ft(If)j(this)h(is)g(set,)i(an)e(argumen)m(t)g(to)h(the)f +Fs(cd)f Ft(builtin)h(command)f(that)i(is)f(not)1110 1404 +y(a)c(directory)g(is)g(assumed)f(to)h(b)s(e)f(the)h(name)f(of)h(a)g(v) +-5 b(ariable)31 b(whose)g(v)-5 b(alue)31 b(is)1110 1514 +y(the)g(directory)f(to)i(c)m(hange)f(to.)630 1671 y Fs(cdspell)144 +b Ft(If)27 b(set,)h(minor)f(errors)f(in)h(the)g(sp)s(elling)h(of)f(a)g +(directory)h(comp)s(onen)m(t)f(in)g(a)h Fs(cd)1110 1781 +y Ft(command)i(will)h(b)s(e)f(corrected.)43 b(The)30 +b(errors)g(c)m(hec)m(k)m(ed)j(for)d(are)h(transp)s(osed)1110 +1890 y(c)m(haracters,)46 b(a)c(missing)f(c)m(haracter,)47 +b(and)40 b(a)i(c)m(haracter)h(to)s(o)g(man)m(y)-8 b(.)74 +b(If)42 b(a)1110 2000 y(correction)25 b(is)e(found,)g(the)h(corrected)g +(path)f(is)g(prin)m(ted,)h(and)f(the)g(command)1110 2109 +y(pro)s(ceeds.)40 b(This)30 b(option)h(is)f(only)h(used)e(b)m(y)h(in)m +(teractiv)m(e)k(shells.)630 2267 y Fs(checkhash)1110 +2376 y Ft(If)29 b(this)h(is)g(set,)g(Bash)g(c)m(hec)m(ks)h(that)g(a)f +(command)f(found)g(in)g(the)h(hash)f(table)1110 2486 +y(exists)k(b)s(efore)f(trying)h(to)h(execute)g(it.)48 +b(If)32 b(a)h(hashed)e(command)i(no)f(longer)1110 2595 +y(exists,)f(a)g(normal)f(path)g(searc)m(h)h(is)g(p)s(erformed.)630 +2753 y Fs(checkwinsize)1110 2862 y Ft(If)41 b(set,)k(Bash)c(c)m(hec)m +(ks)i(the)f(windo)m(w)e(size)j(after)f(eac)m(h)g(command)f(and,)j(if) +1110 2972 y(necessary)-8 b(,)31 b(up)s(dates)f(the)g(v)-5 +b(alues)31 b(of)g Fs(LINES)e Ft(and)g Fs(COLUMNS)p Ft(.)630 +3129 y Fs(cmdhist)144 b Ft(If)33 b(set,)j(Bash)e(attempts)h(to)g(sa)m +(v)m(e)g(all)g(lines)f(of)g(a)h(m)m(ultiple-line)g(command)1110 +3239 y(in)c(the)g(same)g(history)g(en)m(try)-8 b(.)42 +b(This)30 b(allo)m(ws)i(easy)g(re-editing)g(of)f(m)m(ulti-line)1110 +3348 y(commands.)630 3506 y Fs(dotglob)144 b Ft(If)27 +b(set,)i(Bash)f(includes)g(\014lenames)g(b)s(eginning)f(with)g(a)h(`.') +41 b(in)27 b(the)h(results)g(of)1110 3615 y(\014lename)j(expansion.)630 +3772 y Fs(execfail)96 b Ft(If)24 b(this)h(is)f(set,)j(a)e(non-in)m +(teractiv)m(e)i(shell)e(will)f(not)h(exit)h(if)e(it)h(cannot)h(execute) +1110 3882 y(the)i(\014le)g(sp)s(eci\014ed)g(as)g(an)g(argumen)m(t)g(to) +h(the)f Fs(exec)f Ft(builtin)h(command.)39 b(An)1110 +3992 y(in)m(teractiv)m(e)33 b(shell)e(do)s(es)f(not)g(exit)i(if)e +Fs(exec)f Ft(fails.)630 4149 y Fs(expand_aliases)1110 +4258 y Ft(If)j(set,)h(aliases)g(are)g(expanded)e(as)h(describ)s(ed)f(b) +s(elo)m(w)h(under)f(Aliases,)i(Sec-)1110 4368 y(tion)38 +b(6.6)h([Aliases],)j(page)d(75.)64 b(This)37 b(option)h(is)g(enabled)g +(b)m(y)g(default)g(for)1110 4478 y(in)m(teractiv)m(e)33 +b(shells.)630 4635 y Fs(extdebug)96 b Ft(If)30 b(set,)h(b)s(eha)m(vior) +g(in)m(tended)f(for)g(use)g(b)m(y)g(debuggers)g(is)h(enabled:)1159 +4768 y(1.)61 b(The)32 b(`)p Fs(-F)p Ft(')g(option)h(to)g(the)g +Fs(declare)d Ft(builtin)i(\(see)i(Section)f(4.2)h([Bash)1290 +4878 y(Builtins],)29 b(page)g(41\))g(displa)m(ys)f(the)g(source)h +(\014le)f(name)g(and)f(line)h(n)m(um-)1290 4987 y(b)s(er)h(corresp)s +(onding)g(to)i(eac)m(h)g(function)f(name)g(supplied)f(as)i(an)f(argu-) +1290 5097 y(men)m(t.)1159 5230 y(2.)61 b(If)20 b(the)h(command)g(run)e +(b)m(y)i(the)f Fs(DEBUG)g Ft(trap)g(returns)g(a)h(non-zero)g(v)-5 +b(alue,)1290 5340 y(the)31 b(next)f(command)g(is)h(skipp)s(ed)e(and)g +(not)i(executed.)p eop end +%%Page: 49 55 +TeXDict begin 49 54 bop 150 -116 a Ft(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(49)1159 299 y(3.)61 +b(If)37 b(the)g(command)g(run)f(b)m(y)i(the)f Fs(DEBUG)f +Ft(trap)h(returns)f(a)i(v)-5 b(alue)38 b(of)f(2,)1290 +408 y(and)c(the)g(shell)h(is)f(executing)i(in)e(a)h(subroutine)e(\(a)i +(shell)g(function)f(or)1290 518 y(a)h(shell)h(script)f(executed)h(b)m +(y)f(the)g Fs(.)g Ft(or)g Fs(source)e Ft(builtins\),)j(a)g(call)g(to) +1290 628 y Fs(return)29 b Ft(is)h(sim)m(ulated.)1159 +758 y(4.)61 b Fs(BASH_ARGC)34 b Ft(and)i Fs(BASH_ARGV)e +Ft(are)j(up)s(dated)e(as)h(describ)s(ed)g(in)g(their)1290 +868 y(descriptions)30 b(\(see)i(Section)f(5.2)g([Bash)g(V)-8 +b(ariables],)32 b(page)f(57\).)1159 998 y(5.)61 b(F)-8 +b(unction)57 b(tracing)g(is)g(enabled:)93 b(command)56 +b(substitution,)63 b(shell)1290 1108 y(functions,)30 +b(and)f(subshells)g(in)m(v)m(ok)m(ed)j(with)d Fs(\()h +Fj(command)39 b Fs(\))30 b Ft(inherit)g(the)1290 1217 +y Fs(DEBUG)f Ft(and)h Fs(RETURN)e Ft(traps.)1159 1348 +y(6.)61 b(Error)74 b(tracing)i(is)f(enabled:)131 b(command)74 +b(substitution,)87 b(shell)1290 1457 y(functions,)30 +b(and)f(subshells)g(in)m(v)m(ok)m(ed)j(with)d Fs(\()h +Fj(command)39 b Fs(\))30 b Ft(inherit)g(the)1290 1567 +y Fs(ERROR)f Ft(trap.)630 1718 y Fs(extglob)144 b Ft(If)26 +b(set,)i(the)f(extended)f(pattern)h(matc)m(hing)g(features)g(describ)s +(ed)e(ab)s(o)m(v)m(e)j(\(see)1110 1828 y(Section)j(3.5.8.1)i([P)m +(attern)f(Matc)m(hing],)g(page)f(23\))h(are)f(enabled.)630 +1979 y Fs(extquote)96 b Ft(If)49 b(set,)54 b Fs($')p +Fj(string)11 b Fs(')46 b Ft(and)j Fs($")p Fj(string)11 +b Fs(")46 b Ft(quoting)k(is)f(p)s(erformed)e(within)1110 +2089 y Fs(${)p Fj(parameter)11 b Fs(})30 b Ft(expansions)j(enclosed)h +(in)g(double)f(quotes.)51 b(This)32 b(option)1110 2198 +y(is)e(enabled)h(b)m(y)f(default.)630 2350 y Fs(failglob)96 +b Ft(If)30 b(set,)g(patterns)g(whic)m(h)g(fail)h(to)g(matc)m(h)g +(\014lenames)f(during)e(pathname)i(ex-)1110 2459 y(pansion)g(result)g +(in)g(an)g(expansion)h(error.)630 2611 y Fs(force_fignore)1110 +2720 y Ft(If)43 b(set,)k(the)d(su\016xes)f(sp)s(eci\014ed)f(b)m(y)i +(the)f Fs(FIGNORE)f Ft(shell)h(v)-5 b(ariable)44 b(cause)1110 +2830 y(w)m(ords)31 b(to)h(b)s(e)f(ignored)h(when)f(p)s(erforming)f(w)m +(ord)h(completion)i(ev)m(en)f(if)g(the)1110 2939 y(ignored)37 +b(w)m(ords)g(are)g(the)h(only)f(p)s(ossible)g(completions.)62 +b(See)37 b(Section)h(5.2)1110 3049 y([Bash)24 b(V)-8 +b(ariables],)27 b(page)e(57,)h(for)d(a)h(description)g(of)g +Fs(FIGNORE)p Ft(.)37 b(This)22 b(option)1110 3159 y(is)30 +b(enabled)h(b)m(y)f(default.)630 3310 y Fs(gnu_errfmt)1110 +3420 y Ft(If)35 b(set,)j(shell)e(error)g(messages)g(are)h(written)e(in) +h(the)g(standard)f Fl(gnu)g Ft(error)1110 3529 y(message)c(format.)630 +3680 y Fs(histappend)1110 3790 y Ft(If)c(set,)j(the)e(history)g(list)g +(is)g(app)s(ended)e(to)j(the)f(\014le)g(named)f(b)m(y)h(the)g(v)-5 +b(alue)29 b(of)1110 3900 y(the)d Fs(HISTFILE)d Ft(v)-5 +b(ariable)26 b(when)e(the)h(shell)h(exits,)h(rather)e(than)h(o)m(v)m +(erwriting)1110 4009 y(the)31 b(\014le.)630 4161 y Fs(histreedit)1110 +4270 y Ft(If)i(set,)h(and)f(Readline)h(is)f(b)s(eing)g(used,)g(a)g +(user)g(is)g(giv)m(en)h(the)g(opp)s(ortunit)m(y)1110 +4380 y(to)d(re-edit)g(a)g(failed)g(history)f(substitution.)630 +4531 y Fs(histverify)1110 4641 y Ft(If)35 b(set,)i(and)e(Readline)h(is) +f(b)s(eing)g(used,)h(the)f(results)g(of)g(history)h(substitu-)1110 +4750 y(tion)h(are)g(not)g(immediately)h(passed)e(to)h(the)g(shell)g +(parser.)59 b(Instead,)38 b(the)1110 4860 y(resulting)i(line)f(is)h +(loaded)g(in)m(to)g(the)g(Readline)g(editing)g(bu\013er,)h(allo)m(wing) +1110 4969 y(further)29 b(mo)s(di\014cation.)630 5121 +y Fs(hostcomplete)1110 5230 y Ft(If)38 b(set,)j(and)c(Readline)i(is)f +(b)s(eing)g(used,)h(Bash)g(will)f(attempt)h(to)g(p)s(erform)1110 +5340 y(hostname)d(completion)h(when)e(a)h(w)m(ord)f(con)m(taining)i(a)f +(`)p Fs(@)p Ft(')g(is)g(b)s(eing)f(com-)p eop end +%%Page: 50 56 +TeXDict begin 50 55 bop 150 -116 a Ft(50)2572 b(Bash)31 +b(Reference)g(Man)m(ual)1110 299 y(pleted)k(\(see)h(Section)f(8.4.6)i +([Commands)d(F)-8 b(or)36 b(Completion],)g(page)g(105\).)1110 +408 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.)630 +564 y Fs(huponexit)1110 673 y Ft(If)i(set,)i(Bash)f(will)h(send)d +Fs(SIGHUP)h Ft(to)h(all)h(jobs)e(when)g(an)g(in)m(teractiv)m(e)k(login) +1110 783 y(shell)31 b(exits)g(\(see)g(Section)g(3.7.6)h([Signals],)g +(page)f(31\).)630 938 y Fs(interactive_comments)1110 +1048 y Ft(Allo)m(w)c(a)g(w)m(ord)e(b)s(eginning)g(with)h(`)p +Fs(#)p Ft(')g(to)h(cause)f(that)h(w)m(ord)f(and)f(all)i(remain-)1110 +1157 y(ing)41 b(c)m(haracters)i(on)e(that)h(line)g(to)g(b)s(e)f +(ignored)g(in)g(an)g(in)m(teractiv)m(e)j(shell.)1110 +1267 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.)630 +1422 y Fs(lithist)144 b Ft(If)22 b(enabled,)i(and)d(the)h +Fs(cmdhist)e Ft(option)j(is)f(enabled,)i(m)m(ulti-line)f(commands)1110 +1532 y(are)28 b(sa)m(v)m(ed)h(to)g(the)f(history)g(with)f(em)m(b)s +(edded)g(newlines)h(rather)g(than)f(using)1110 1641 y(semicolon)32 +b(separators)f(where)e(p)s(ossible.)630 1797 y Fs(login_shell)1110 +1906 y Ft(The)35 b(shell)h(sets)g(this)f(option)h(if)g(it)g(is)f +(started)h(as)g(a)g(login)g(shell)g(\(see)g(Sec-)1110 +2016 y(tion)29 b(6.1)g([In)m(v)m(oking)h(Bash],)f(page)g(67\).)41 +b(The)28 b(v)-5 b(alue)29 b(ma)m(y)g(not)f(b)s(e)g(c)m(hanged.)630 +2171 y Fs(mailwarn)96 b Ft(If)34 b(set,)i(and)e(a)h(\014le)g(that)g +(Bash)f(is)h(c)m(hec)m(king)h(for)f(mail)g(has)f(b)s(een)g(accessed) +1110 2281 y(since)24 b(the)h(last)g(time)f(it)h(w)m(as)f(c)m(hec)m(k)m +(ed,)k(the)c(message)h Fs("The)k(mail)h(in)f Fj(mail-)1110 +2390 y(file)40 b Fs(has)29 b(been)g(read")g Ft(is)i(displa)m(y)m(ed.) +630 2545 y Fs(no_empty_cmd_completion)1110 2655 y Ft(If)f(set,)g(and)g +(Readline)g(is)h(b)s(eing)e(used,)h(Bash)g(will)g(not)g(attempt)i(to)e +(searc)m(h)1110 2765 y(the)25 b Fs(PATH)f Ft(for)h(p)s(ossible)f +(completions)j(when)d(completion)i(is)f(attempted)h(on)1110 +2874 y(an)k(empt)m(y)h(line.)630 3029 y Fs(nocaseglob)1110 +3139 y Ft(If)38 b(set,)k(Bash)d(matc)m(hes)g(\014lenames)g(in)f(a)h +(case-insensitiv)m(e)j(fashion)c(when)1110 3249 y(p)s(erforming)29 +b(\014lename)i(expansion.)630 3404 y Fs(nocasematch)1110 +3513 y Ft(If)42 b(set,)k(Bash)d(matc)m(hes)g(patterns)g(in)f(a)h +(case-insensitiv)m(e)i(fashion)d(when)1110 3623 y(p)s(erforming)31 +b(matc)m(hing)i(while)f(executing)i Fs(case)d Ft(or)h +Fs([[)g Ft(conditional)h(com-)1110 3733 y(mands.)630 +3888 y Fs(nullglob)96 b Ft(If)23 b(set,)j(Bash)e(allo)m(ws)g +(\014lename)g(patterns)g(whic)m(h)f(matc)m(h)h(no)g(\014les)f(to)i +(expand)1110 3998 y(to)31 b(a)g(n)m(ull)f(string,)h(rather)f(than)g +(themselv)m(es.)630 4153 y Fs(progcomp)96 b Ft(If)25 +b(set,)i(the)f(programmable)g(completion)g(facilities)i(\(see)f +(Section)f(8.6)h([Pro-)1110 4262 y(grammable)45 b(Completion],)k(page)c +(109\))h(are)f(enabled.)82 b(This)44 b(option)h(is)1110 +4372 y(enabled)30 b(b)m(y)h(default.)630 4527 y Fs(promptvars)1110 +4637 y Ft(If)24 b(set,)i(prompt)d(strings)h(undergo)f(parameter)i +(expansion,)g(command)f(sub-)1110 4746 y(stitution,)34 +b(arithmetic)f(expansion,)g(and)e(quote)i(remo)m(v)-5 +b(al)33 b(after)g(b)s(eing)e(ex-)1110 4856 y(panded)39 +b(as)i(describ)s(ed)e(b)s(elo)m(w)i(\(see)g(Section)g(6.9)g([Prin)m +(ting)g(a)g(Prompt],)1110 4966 y(page)31 b(79\).)42 b(This)30 +b(option)g(is)h(enabled)f(b)m(y)g(default.)630 5121 y +Fs(restricted_shell)1110 5230 y Ft(The)40 b(shell)h(sets)g(this)g +(option)g(if)g(it)h(is)e(started)i(in)e(restricted)i(mo)s(de)e(\(see) +1110 5340 y(Section)c(6.10)g([The)f(Restricted)g(Shell],)i(page)e +(80\).)56 b(The)34 b(v)-5 b(alue)35 b(ma)m(y)h(not)p +eop end +%%Page: 51 57 +TeXDict begin 51 56 bop 150 -116 a Ft(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(51)1110 299 y(b)s(e)32 +b(c)m(hanged.)49 b(This)32 b(is)h(not)h(reset)f(when)f(the)h(startup)g +(\014les)f(are)i(executed,)1110 408 y(allo)m(wing)k(the)e(startup)f +(\014les)h(to)g(disco)m(v)m(er)h(whether)f(or)f(not)i(a)f(shell)g(is)g +(re-)1110 518 y(stricted.)630 689 y Fs(shift_verbose)1110 +799 y Ft(If)g(this)g(is)g(set,)j(the)d Fs(shift)f Ft(builtin)h(prin)m +(ts)f(an)h(error)g(message)i(when)d(the)1110 908 y(shift)30 +b(coun)m(t)h(exceeds)g(the)g(n)m(um)m(b)s(er)e(of)h(p)s(ositional)i +(parameters.)630 1079 y Fs(sourcepath)1110 1189 y Ft(If)22 +b(set,)j(the)e Fs(source)e Ft(builtin)h(uses)g(the)h(v)-5 +b(alue)23 b(of)g Fs(PATH)e Ft(to)j(\014nd)d(the)h(directory)1110 +1298 y(con)m(taining)29 b(the)e(\014le)h(supplied)e(as)h(an)g(argumen)m +(t.)40 b(This)27 b(option)h(is)f(enabled)1110 1408 y(b)m(y)j(default.) +630 1579 y Fs(xpg_echo)96 b Ft(If)31 b(set,)h(the)g Fs(echo)e +Ft(builtin)h(expands)f(bac)m(kslash-escap)s(e)j(sequences)f(b)m(y)f +(de-)1110 1688 y(fault.)630 1859 y(The)c(return)f(status)i(when)f +(listing)h(options)g(is)f(zero)i(if)e(all)i Fq(optnames)i +Ft(are)d(enabled,)g(non-)630 1969 y(zero)40 b(otherwise.)66 +b(When)39 b(setting)h(or)f(unsetting)g(options,)i(the)e(return)f +(status)h(is)g(zero)630 2079 y(unless)30 b(an)g Fq(optname)36 +b Ft(is)30 b(not)h(a)g(v)-5 b(alid)30 b(shell)h(option.)150 +2250 y Fs(source)870 2390 y(source)46 b Fj(filename)630 +2530 y Ft(A)30 b(synon)m(ym)g(for)g Fs(.)g Ft(\(see)i(Section)f(4.1)g +([Bourne)g(Shell)f(Builtins],)h(page)g(35\).)150 2701 +y Fs(type)870 2841 y(type)47 b([-afptP])e([)p Fj(name)57 +b Fs(...)o(])630 2982 y Ft(F)-8 b(or)42 b(eac)m(h)g Fq(name)p Ft(,)i(indicate)e(ho)m(w)g(it)f(w)m(ould)g(b)s(e)g(in)m(terpreted)g(if) -g(used)f(as)i(a)f(command)630 3794 y(name.)630 3927 y(If)d(the)g(`)p +g(used)f(as)i(a)f(command)630 3091 y(name.)630 3231 y(If)d(the)g(`)p Fs(-t)p Ft(')g(option)g(is)g(used,)i Fs(type)d Ft(prin)m(ts)g(a)i (single)f(w)m(ord)g(whic)m(h)g(is)g(one)g(of)h(`)p Fs(alias)p -Ft(',)630 4037 y(`)p Fs(function)p Ft(',)32 b(`)p Fs(builtin)p +Ft(',)630 3341 y(`)p Fs(function)p Ft(',)32 b(`)p Fs(builtin)p Ft(',)g(`)p Fs(file)p Ft(')g(or)h(`)p Fs(keyword)p Ft(',)f(if)h Fq(name)38 b Ft(is)33 b(an)f(alias,)j(shell)e(function,)630 -4147 y(shell)i(builtin,)g(disk)g(\014le,)h(or)e(shell)h(reserv)m(ed)g +3451 y(shell)i(builtin,)g(disk)g(\014le,)h(or)e(shell)h(reserv)m(ed)g (w)m(ord,)h(resp)s(ectiv)m(ely)-8 b(.)55 b(If)34 b(the)h -Fq(name)40 b Ft(is)35 b(not)630 4256 y(found,)29 b(then)h(nothing)h(is) +Fq(name)40 b Ft(is)35 b(not)630 3560 y(found,)29 b(then)h(nothing)h(is) f(prin)m(ted,)g(and)g Fs(type)f Ft(returns)g(a)i(failure)g(status.)630 -4390 y(If)39 b(the)g(`)p Fs(-p)p Ft(')g(option)h(is)f(used,)i +3701 y(If)39 b(the)g(`)p Fs(-p)p Ft(')g(option)h(is)f(used,)i Fs(type)d Ft(either)h(returns)f(the)i(name)f(of)g(the)g(disk)g(\014le)g -(that)630 4500 y(w)m(ould)30 b(b)s(e)g(executed,)h(or)g(nothing)f(if)g +(that)630 3810 y(w)m(ould)30 b(b)s(e)g(executed,)h(or)g(nothing)f(if)g (`)p Fs(-t)p Ft(')h(w)m(ould)f(not)g(return)g(`)p Fs(file)p -Ft('.)630 4634 y(The)23 b(`)p Fs(-P)p Ft(')h(option)g(forces)g(a)g +Ft('.)630 3950 y(The)23 b(`)p Fs(-P)p Ft(')h(option)g(forces)g(a)g (path)g(searc)m(h)g(for)g(eac)m(h)g Fq(name)p Ft(,)i(ev)m(en)e(if)g(`)p -Fs(-t)p Ft(')g(w)m(ould)f(not)h(return)630 4743 y(`)p -Fs(file)p Ft('.)630 4877 y(If)34 b(a)i(command)e(is)h(hashed,)g(`)p +Fs(-t)p Ft(')g(w)m(ould)f(not)h(return)630 4060 y(`)p +Fs(file)p Ft('.)630 4200 y(If)34 b(a)i(command)e(is)h(hashed,)g(`)p Fs(-p)p Ft(')g(and)f(`)p Fs(-P)p Ft(')h(prin)m(t)f(the)h(hashed)f(v)-5 -b(alue,)37 b(not)e(necessarily)630 4987 y(the)c(\014le)f(that)h(app)s -(ears)f(\014rst)f(in)h Fs($PATH)p Ft(.)630 5121 y(If)36 +b(alue,)37 b(not)e(necessarily)630 4310 y(the)c(\014le)f(that)h(app)s +(ears)f(\014rst)f(in)h Fs($PATH)p Ft(.)630 4450 y(If)36 b(the)h(`)p Fs(-a)p Ft(')g(option)g(is)g(used,)g Fs(type)f Ft(returns)f(all)j(of)f(the)g(places)g(that)g(con)m(tain)h(an)f(exe-) -630 5230 y(cutable)d(named)f Fq(\014le)p Ft(.)50 b(This)33 +630 4560 y(cutable)d(named)f Fq(\014le)p Ft(.)50 b(This)33 b(includes)g(aliases)i(and)e(functions,)h(if)f(and)g(only)h(if)f(the)h -(`)p Fs(-p)p Ft(')630 5340 y(option)d(is)f(not)h(also)g(used.)p -eop end -%%Page: 48 54 -TeXDict begin 48 53 bop 150 -116 a Ft(48)2572 b(Bash)31 -b(Reference)g(Man)m(ual)630 299 y(If)26 b(the)h(`)p Fs(-f)p -Ft(')g(option)g(is)g(used,)g Fs(type)e Ft(do)s(es)i(not)g(attempt)g(to) -h(\014nd)d(shell)i(functions,)g(as)g(with)630 408 y(the)k -Fs(command)d Ft(builtin.)630 543 y(The)35 b(return)g(status)h(is)g -(zero)g(if)g(an)m(y)g(of)g(the)g Fq(names)k Ft(are)c(found,)g(non-zero) -g(if)g(none)g(are)630 652 y(found.)150 811 y Fs(typeset)870 -945 y(typeset)46 b([-afFrxi])f([-p])i([)p Fj(name)11 -b Fs([=)p Fj(value)g Fs(])43 b(...)o(])630 1079 y Ft(The)29 -b Fs(typeset)f Ft(command)h(is)g(supplied)g(for)g(compatibilit)m(y)j -(with)d(the)h(Korn)e(shell;)j(ho)m(w-)630 1189 y(ev)m(er,)g(it)g(has)f -(b)s(een)g(deprecated)h(in)f(fa)m(v)m(or)i(of)e(the)h -Fs(declare)d Ft(builtin)i(command.)150 1348 y Fs(ulimit)870 -1482 y(ulimit)46 b([-acdefilmnpqrstuvxSH])c([)p Fj(limit)11 -b Fs(])630 1616 y(ulimit)25 b Ft(pro)m(vides)h(con)m(trol)i(o)m(v)m(er) -g(the)f(resources)f(a)m(v)-5 b(ailable)29 b(to)e(pro)s(cesses)f -(started)h(b)m(y)g(the)630 1726 y(shell,)i(on)f(systems)g(that)h(allo)m -(w)h(suc)m(h)e(con)m(trol.)41 b(If)28 b(an)g(option)h(is)f(giv)m(en,)i -(it)e(is)h(in)m(terpreted)630 1835 y(as)i(follo)m(ws:)630 -1994 y Fs(-S)384 b Ft(Change)30 b(and)g(rep)s(ort)g(the)g(soft)h(limit) -g(asso)s(ciated)h(with)e(a)h(resource.)630 2153 y Fs(-H)384 -b Ft(Change)30 b(and)g(rep)s(ort)g(the)g(hard)g(limit)h(asso)s(ciated)h -(with)e(a)h(resource.)630 2312 y Fs(-a)384 b Ft(All)31 -b(curren)m(t)f(limits)h(are)g(rep)s(orted.)630 2471 y -Fs(-c)384 b Ft(The)30 b(maxim)m(um)g(size)h(of)g(core)g(\014les)f -(created.)630 2629 y Fs(-d)384 b Ft(The)30 b(maxim)m(um)g(size)h(of)g -(a)g(pro)s(cess's)f(data)h(segmen)m(t.)630 2788 y Fs(-e)384 -b Ft(The)30 b(maxim)m(um)g(sc)m(heduling)h(priorit)m(y)f(\()p -Fs(")p Ft(nice)p Fs(")p Ft(\).)630 2947 y Fs(-f)384 b -Ft(The)30 b(maxim)m(um)g(size)h(of)g(\014les)f(written)h(b)m(y)f(the)g -(shell)h(and)f(its)h(c)m(hildren.)630 3106 y Fs(-i)384 -b Ft(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(p)s(ending)e -(signals.)630 3264 y Fs(-l)384 b Ft(The)30 b(maxim)m(um)g(size)h(that)g -(ma)m(y)g(b)s(e)f(lo)s(c)m(k)m(ed)i(in)m(to)f(memory)-8 -b(.)630 3423 y Fs(-m)384 b Ft(The)30 b(maxim)m(um)g(residen)m(t)h(set)g -(size.)630 3582 y Fs(-n)384 b Ft(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er) -f(of)i(op)s(en)e(\014le)i(descriptors.)630 3741 y Fs(-p)384 -b Ft(The)30 b(pip)s(e)f(bu\013er)h(size.)630 3900 y Fs(-q)384 -b Ft(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(b)m(ytes)g(in)f -(POSIX)f(message)j(queues.)630 4058 y Fs(-r)384 b Ft(The)30 -b(maxim)m(um)g(real-time)i(sc)m(heduling)f(priorit)m(y)-8 -b(.)630 4217 y Fs(-s)384 b Ft(The)30 b(maxim)m(um)g(stac)m(k)i(size.) -630 4376 y Fs(-t)384 b Ft(The)30 b(maxim)m(um)g(amoun)m(t)h(of)f(cpu)g -(time)h(in)f(seconds.)630 4535 y Fs(-u)384 b Ft(The)30 -b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(pro)s(cesses)f(a)m(v)-5 -b(ailable)33 b(to)e(a)f(single)i(user.)630 4694 y Fs(-v)384 -b Ft(The)29 b(maxim)m(um)h(amoun)m(t)g(of)g(virtual)g(memory)g(a)m(v)-5 -b(ailable)32 b(to)e(the)g(pro)s(cess.)630 4852 y Fs(-x)384 -b Ft(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(\014le)f(lo)s(c)m -(ks.)630 5011 y(If)j Fq(limit)j Ft(is)e(giv)m(en,)h(it)f(is)g(the)g -(new)f(v)-5 b(alue)34 b(of)f(the)h(sp)s(eci\014ed)f(resource;)i(the)f -(sp)s(ecial)g Fq(limit)630 5121 y Ft(v)-5 b(alues)27 -b Fs(hard)p Ft(,)g Fs(soft)p Ft(,)g(and)g Fs(unlimited)d -Ft(stand)j(for)g(the)g(curren)m(t)g(hard)f(limit,)j(the)e(curren)m(t) -630 5230 y(soft)35 b(limit,)i(and)e(no)f(limit,)j(resp)s(ectiv)m(ely)-8 -b(.)56 b(Otherwise,)36 b(the)f(curren)m(t)g(v)-5 b(alue)35 -b(of)g(the)h(soft)630 5340 y(limit)41 b(for)f(the)h(sp)s(eci\014ed)f -(resource)h(is)f(prin)m(ted,)j(unless)d(the)g(`)p Fs(-H)p -Ft(')h(option)f(is)h(supplied.)p eop end -%%Page: 49 55 -TeXDict begin 49 54 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(49)630 299 y(When)29 +(`)p Fs(-p)p Ft(')630 4669 y(option)d(is)f(not)h(also)g(used.)630 +4810 y(If)26 b(the)h(`)p Fs(-f)p Ft(')g(option)g(is)g(used,)g +Fs(type)e Ft(do)s(es)i(not)g(attempt)g(to)h(\014nd)d(shell)i +(functions,)g(as)g(with)630 4919 y(the)k Fs(command)d +Ft(builtin.)630 5059 y(The)35 b(return)g(status)h(is)g(zero)g(if)g(an)m +(y)g(of)g(the)g Fq(names)k Ft(are)c(found,)g(non-zero)g(if)g(none)g +(are)630 5169 y(found.)150 5340 y Fs(typeset)p eop end +%%Page: 52 58 +TeXDict begin 52 57 bop 150 -116 a Ft(52)2572 b(Bash)31 +b(Reference)g(Man)m(ual)870 299 y Fs(typeset)46 b([-afFrxi])f([-p])i([) +p Fj(name)11 b Fs([=)p Fj(value)g Fs(])43 b(...)o(])630 +432 y Ft(The)29 b Fs(typeset)f Ft(command)h(is)g(supplied)g(for)g +(compatibilit)m(y)j(with)d(the)h(Korn)e(shell;)j(ho)m(w-)630 +542 y(ev)m(er,)g(it)g(has)f(b)s(een)g(deprecated)h(in)f(fa)m(v)m(or)i +(of)e(the)h Fs(declare)d Ft(builtin)i(command.)150 699 +y Fs(ulimit)870 833 y(ulimit)46 b([-acdefilmnpqrstuvxSH])c([)p +Fj(limit)11 b Fs(])630 966 y(ulimit)25 b Ft(pro)m(vides)h(con)m(trol)i +(o)m(v)m(er)g(the)f(resources)f(a)m(v)-5 b(ailable)29 +b(to)e(pro)s(cesses)f(started)h(b)m(y)g(the)630 1076 +y(shell,)i(on)f(systems)g(that)h(allo)m(w)h(suc)m(h)e(con)m(trol.)41 +b(If)28 b(an)g(option)h(is)f(giv)m(en,)i(it)e(is)h(in)m(terpreted)630 +1185 y(as)i(follo)m(ws:)630 1342 y Fs(-S)384 b Ft(Change)30 +b(and)g(rep)s(ort)g(the)g(soft)h(limit)g(asso)s(ciated)h(with)e(a)h +(resource.)630 1500 y Fs(-H)384 b Ft(Change)30 b(and)g(rep)s(ort)g(the) +g(hard)g(limit)h(asso)s(ciated)h(with)e(a)h(resource.)630 +1657 y Fs(-a)384 b Ft(All)31 b(curren)m(t)f(limits)h(are)g(rep)s +(orted.)630 1814 y Fs(-c)384 b Ft(The)30 b(maxim)m(um)g(size)h(of)g +(core)g(\014les)f(created.)630 1971 y Fs(-d)384 b Ft(The)30 +b(maxim)m(um)g(size)h(of)g(a)g(pro)s(cess's)f(data)h(segmen)m(t.)630 +2129 y Fs(-e)384 b Ft(The)30 b(maxim)m(um)g(sc)m(heduling)h(priorit)m +(y)f(\()p Fs(")p Ft(nice)p Fs(")p Ft(\).)630 2286 y Fs(-f)384 +b Ft(The)30 b(maxim)m(um)g(size)h(of)g(\014les)f(created)i(b)m(y)e(the) +g(shell.)630 2443 y Fs(-i)384 b Ft(The)30 b(maxim)m(um)g(n)m(um)m(b)s +(er)f(of)i(p)s(ending)e(signals.)630 2600 y Fs(-l)384 +b Ft(The)30 b(maxim)m(um)g(size)h(that)g(ma)m(y)g(b)s(e)f(lo)s(c)m(k)m +(ed)i(in)m(to)f(memory)-8 b(.)630 2757 y Fs(-m)384 b +Ft(The)30 b(maxim)m(um)g(residen)m(t)h(set)g(size.)630 +2915 y Fs(-n)384 b Ft(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(op)s +(en)e(\014le)i(descriptors.)630 3072 y Fs(-p)384 b Ft(The)30 +b(pip)s(e)f(bu\013er)h(size.)630 3229 y Fs(-q)384 b Ft(The)30 +b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(b)m(ytes)g(in)f(POSIX)f(message)j +(queues.)630 3386 y Fs(-r)384 b Ft(The)30 b(maxim)m(um)g(real-time)i +(sc)m(heduling)f(priorit)m(y)-8 b(.)630 3544 y Fs(-s)384 +b Ft(The)30 b(maxim)m(um)g(stac)m(k)i(size.)630 3701 +y Fs(-t)384 b Ft(The)30 b(maxim)m(um)g(amoun)m(t)h(of)f(cpu)g(time)h +(in)f(seconds.)630 3858 y Fs(-u)384 b Ft(The)30 b(maxim)m(um)g(n)m(um)m +(b)s(er)f(of)i(pro)s(cesses)f(a)m(v)-5 b(ailable)33 b(to)e(a)f(single)i +(user.)630 4015 y Fs(-v)384 b Ft(The)29 b(maxim)m(um)h(amoun)m(t)g(of)g +(virtual)g(memory)g(a)m(v)-5 b(ailable)32 b(to)e(the)g(pro)s(cess.)630 +4173 y Fs(-x)384 b Ft(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i +(\014le)f(lo)s(c)m(ks.)630 4330 y(If)j Fq(limit)j Ft(is)e(giv)m(en,)h +(it)f(is)g(the)g(new)f(v)-5 b(alue)34 b(of)f(the)h(sp)s(eci\014ed)f +(resource;)i(the)f(sp)s(ecial)g Fq(limit)630 4439 y Ft(v)-5 +b(alues)27 b Fs(hard)p Ft(,)g Fs(soft)p Ft(,)g(and)g +Fs(unlimited)d Ft(stand)j(for)g(the)g(curren)m(t)g(hard)f(limit,)j(the) +e(curren)m(t)630 4549 y(soft)35 b(limit,)i(and)e(no)f(limit,)j(resp)s +(ectiv)m(ely)-8 b(.)56 b(Otherwise,)36 b(the)f(curren)m(t)g(v)-5 +b(alue)35 b(of)g(the)h(soft)630 4659 y(limit)41 b(for)f(the)h(sp)s +(eci\014ed)f(resource)h(is)f(prin)m(ted,)j(unless)d(the)g(`)p +Fs(-H)p Ft(')h(option)f(is)h(supplied.)630 4768 y(When)29 b(setting)h(new)e(limits,)i(if)f(neither)g(`)p Fs(-H)p Ft(')f(nor)h(`)p Fs(-S)p Ft(')f(is)h(supplied,)g(b)s(oth)f(the)h(hard)f -(and)630 408 y(soft)37 b(limits)g(are)g(set.)60 b(If)36 +(and)630 4878 y(soft)37 b(limits)g(are)g(set.)60 b(If)36 b(no)g(option)h(is)g(giv)m(en,)i(then)d(`)p Fs(-f)p Ft(')h(is)f -(assumed.)59 b(V)-8 b(alues)37 b(are)g(in)630 518 y(1024-b)m(yte)27 +(assumed.)59 b(V)-8 b(alues)37 b(are)g(in)630 4987 y(1024-b)m(yte)27 b(incremen)m(ts,)g(except)e(for)f(`)p Fs(-t)p Ft(',)i(whic)m(h)e(is)h (in)f(seconds,)i(`)p Fs(-p)p Ft(',)g(whic)m(h)e(is)g(in)h(units)630 -628 y(of)31 b(512-b)m(yte)h(blo)s(c)m(ks,)f(and)f(`)p +5097 y(of)31 b(512-b)m(yte)h(blo)s(c)m(ks,)f(and)f(`)p Fs(-n)p Ft(')g(and)g(`)p Fs(-u)p Ft(',)h(whic)m(h)f(are)g(unscaled)h(v) --5 b(alues.)630 757 y(The)34 b(return)g(status)h(is)f(zero)i(unless)e +-5 b(alues.)630 5230 y(The)34 b(return)g(status)h(is)f(zero)i(unless)e (an)g(in)m(v)-5 b(alid)36 b(option)f(or)f(argumen)m(t)i(is)e(supplied,) -h(or)630 867 y(an)30 b(error)g(o)s(ccurs)g(while)h(setting)g(a)g(new)f -(limit.)150 1017 y Fs(unalias)870 1147 y(unalias)46 b([-a])g([)p -Fj(name)57 b Fs(...)47 b(])630 1276 y Ft(Remo)m(v)m(e)39 -b(eac)m(h)f Fq(name)k Ft(from)36 b(the)h(list)h(of)f(aliases.)61 -b(If)36 b(`)p Fs(-a)p Ft(')h(is)g(supplied,)h(all)f(aliases)i(are)630 -1386 y(remo)m(v)m(ed.)j(Aliases)31 b(are)g(describ)s(ed)e(in)h(Section) -i(6.6)f([Aliases],)h(page)f(77.)150 1629 y Fr(4.3)68 -b(Mo)t(difying)45 b(Shell)g(Beha)l(vior)150 1949 y Fk(4.3.1)63 -b(The)41 b(Set)g(Builtin)275 2188 y Ft(This)27 b(builtin)h(is)h(so)f -(complicated)i(that)f(it)g(deserv)m(es)g(its)g(o)m(wn)f(section.)42 -b Fs(set)27 b Ft(allo)m(ws)j(y)m(ou)f(to)g(c)m(hange)150 -2298 y(the)k(v)-5 b(alues)34 b(of)f(shell)g(options)h(and)e(set)i(the)f -(p)s(ositional)h(parameters,)h(or)e(to)h(displa)m(y)f(the)g(names)h -(and)150 2407 y(v)-5 b(alues)31 b(of)f(shell)h(v)-5 b(ariables.)150 -2557 y Fs(set)870 2687 y(set)47 b([--abefhkmnptuvxBCEHPT])41 -b([-o)47 b Fj(option)11 b Fs(])46 b([)p Fj(argument)55 -b Fs(...])870 2797 y(set)47 b([+abefhkmnptuvxBCEHPT])42 -b([+o)47 b Fj(option)11 b Fs(])45 b([)p Fj(argument)56 -b Fs(...)o(])630 2926 y Ft(If)22 b(no)h(options)g(or)g(argumen)m(ts)g +h(or)630 5340 y(an)30 b(error)g(o)s(ccurs)g(while)h(setting)g(a)g(new)f +(limit.)p eop end +%%Page: 53 59 +TeXDict begin 53 58 bop 150 -116 a Ft(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(53)150 299 y Fs(unalias)870 +436 y(unalias)46 b([-a])g([)p Fj(name)57 b Fs(...)47 +b(])630 573 y Ft(Remo)m(v)m(e)39 b(eac)m(h)f Fq(name)k +Ft(from)36 b(the)h(list)h(of)f(aliases.)61 b(If)36 b(`)p +Fs(-a)p Ft(')h(is)g(supplied,)h(all)f(aliases)i(are)630 +682 y(remo)m(v)m(ed.)j(Aliases)31 b(are)g(describ)s(ed)e(in)h(Section)i +(6.6)f([Aliases],)h(page)f(75.)150 952 y Fr(4.3)68 b(The)45 +b(Set)g(Builtin)275 1201 y Ft(This)29 b(builtin)h(is)g(so)h +(complicated)h(that)f(it)g(deserv)m(es)g(its)g(o)m(wn)f(section.)150 +1368 y Fs(set)870 1505 y(set)47 b([--abefhkmnptuvxBCHP])42 +b([-o)47 b Fj(option)11 b Fs(])45 b([)p Fj(argument)56 +b Fs(...)o(])630 1642 y Ft(If)22 b(no)h(options)g(or)g(argumen)m(ts)g (are)g(supplied,)g Fs(set)f Ft(displa)m(ys)g(the)h(names)g(and)f(v)-5 -b(alues)23 b(of)g(all)630 3036 y(shell)j(v)-5 b(ariables)27 +b(alues)23 b(of)g(all)630 1751 y(shell)j(v)-5 b(ariables)27 b(and)e(functions,)h(sorted)g(according)h(to)g(the)f(curren)m(t)f(lo)s -(cale,)k(in)c(a)i(format)630 3145 y(that)i(ma)m(y)h(b)s(e)e(reused)g +(cale,)k(in)c(a)i(format)630 1861 y(that)i(ma)m(y)h(b)s(e)e(reused)g (as)h(input)f(for)h(setting)h(or)e(resetting)i(the)f(curren)m(tly-set)h -(v)-5 b(ariables.)630 3255 y(Read-only)37 b(v)-5 b(ariables)37 +(v)-5 b(ariables.)630 1971 y(Read-only)37 b(v)-5 b(ariables)37 b(cannot)h(b)s(e)e(reset.)59 b(In)36 b Fl(posix)g Ft(mo)s(de,)i(only)f -(shell)f(v)-5 b(ariables)38 b(are)630 3365 y(listed.)630 -3494 y(When)29 b(options)g(are)g(supplied,)f(they)h(set)h(or)f(unset)f +(shell)f(v)-5 b(ariables)38 b(are)630 2080 y(listed.)630 +2217 y(When)29 b(options)g(are)g(supplied,)f(they)h(set)h(or)f(unset)f (shell)h(attributes.)41 b(Options,)29 b(if)g(sp)s(ec-)630 -3604 y(i\014ed,)h(ha)m(v)m(e)i(the)e(follo)m(wing)i(meanings:)630 -3754 y Fs(-a)384 b Ft(Mark)32 b(v)-5 b(ariables)33 b(and)e(function)h +2327 y(i\014ed,)h(ha)m(v)m(e)i(the)e(follo)m(wing)i(meanings:)630 +2491 y Fs(-a)384 b Ft(Mark)32 b(v)-5 b(ariables)33 b(and)e(function)h (whic)m(h)g(are)g(mo)s(di\014ed)f(or)h(created)h(for)f(ex-)1110 -3864 y(p)s(ort)e(to)h(the)f(en)m(vironmen)m(t)h(of)g(subsequen)m(t)f -(commands.)630 4013 y Fs(-b)384 b Ft(Cause)44 b(the)h(status)g(of)f +2601 y(p)s(ort)e(to)h(the)f(en)m(vironmen)m(t)h(of)g(subsequen)m(t)f +(commands.)630 2765 y Fs(-b)384 b Ft(Cause)44 b(the)h(status)g(of)f (terminated)h(bac)m(kground)g(jobs)f(to)h(b)s(e)f(rep)s(orted)1110 -4123 y(immediately)-8 b(,)30 b(rather)d(than)f(b)s(efore)h(prin)m(ting) -g(the)g(next)g(primary)g(prompt.)630 4273 y Fs(-e)384 +2875 y(immediately)-8 b(,)30 b(rather)d(than)f(b)s(efore)h(prin)m(ting) +g(the)g(next)g(primary)g(prompt.)630 3039 y Fs(-e)384 b Ft(Exit)37 b(immediately)h(if)e(a)h(simple)f(command)g(\(see)i -(Section)f(3.2.1)h([Simple)1110 4383 y(Commands],)31 +(Section)f(3.2.1)h([Simple)1110 3148 y(Commands],)31 b(page)i(8\))f(exits)g(with)g(a)g(non-zero)g(status,)g(unless)f(the)h -(com-)1110 4492 y(mand)24 b(that)h(fails)h(is)f(part)f(of)h(the)g -(command)g(list)g(immediately)h(follo)m(wing)h(a)1110 -4602 y Fs(while)i Ft(or)h Fs(until)f Ft(k)m(eyw)m(ord,)i(part)f(of)h -(the)f(test)i(in)e(an)g Fs(if)g Ft(statemen)m(t,)i(part)1110 -4711 y(of)d(a)f Fs(&&)g Ft(or)h Fs(||)f Ft(list,)h(an)m(y)g(command)f -(in)h(a)f(pip)s(eline)g(but)g(the)h(last,)h(or)e(if)h(the)1110 -4821 y(command's)g(return)f(status)i(is)f(b)s(eing)g(in)m(v)m(erted)h -(using)f Fs(!)p Ft(.)40 b(A)29 b(trap)g(on)h Fs(ERR)p -Ft(,)1110 4931 y(if)g(set,)i(is)e(executed)h(b)s(efore)f(the)h(shell)f -(exits.)630 5080 y Fs(-f)384 b Ft(Disable)31 b(\014le)g(name)f -(generation)i(\(globbing\).)630 5230 y Fs(-h)384 b Ft(Lo)s(cate)33 -b(and)e(remem)m(b)s(er)h(\(hash\))g(commands)f(as)h(they)g(are)g(lo)s -(ok)m(ed)h(up)e(for)1110 5340 y(execution.)42 b(This)29 -b(option)i(is)g(enabled)f(b)m(y)g(default.)p eop end -%%Page: 50 56 -TeXDict begin 50 55 bop 150 -116 a Ft(50)2572 b(Bash)31 -b(Reference)g(Man)m(ual)630 299 y Fs(-k)384 b Ft(All)34 -b(argumen)m(ts)g(in)f(the)h(form)f(of)g(assignmen)m(t)h(statemen)m(ts)i -(are)d(placed)h(in)1110 408 y(the)k(en)m(vironmen)m(t)g(for)g(a)g -(command,)h(not)f(just)f(those)i(that)f(precede)g(the)1110 -518 y(command)30 b(name.)630 677 y Fs(-m)384 b Ft(Job)30 -b(con)m(trol)i(is)e(enabled)h(\(see)g(Chapter)f(7)g([Job)h(Con)m -(trol],)g(page)g(87\).)630 837 y Fs(-n)384 b Ft(Read)21 -b(commands)f(but)g(do)h(not)g(execute)h(them;)i(this)d(ma)m(y)g(b)s(e)f -(used)g(to)h(c)m(hec)m(k)1110 946 y(a)42 b(script)g(for)g(syn)m(tax)g -(errors.)75 b(This)41 b(option)h(is)g(ignored)g(b)m(y)g(in)m(teractiv)m -(e)1110 1056 y(shells.)630 1215 y Fs(-o)30 b Fj(option-name)1110 -1325 y Ft(Set)h(the)f(option)h(corresp)s(onding)e(to)i -Fq(option-name)5 b Ft(:)1110 1484 y Fs(allexport)1590 -1594 y Ft(Same)30 b(as)h Fs(-a)p Ft(.)1110 1753 y Fs(braceexpand)1590 -1863 y Ft(Same)f(as)h Fs(-B)p Ft(.)1110 2022 y Fs(emacs)240 +(com-)1110 3258 y(mand)f(that)h(fails)h(is)f(part)f(of)h(the)g(command) +g(list)g(immediately)h(follo)m(wing)1110 3368 y(a)41 +b Fs(while)d Ft(or)j Fs(until)e Ft(k)m(eyw)m(ord,)k(part)d(of)g(the)h +(test)g(in)f(an)g Fs(if)g Ft(statemen)m(t,)1110 3477 +y(part)33 b(of)h(a)g Fs(&&)f Ft(or)g Fs(||)g Ft(list,)i(or)e(if)h(the)f +(command's)h(return)e(status)i(is)f(b)s(eing)1110 3587 +y(in)m(v)m(erted)e(using)e Fs(!)p Ft(.)40 b(A)30 b(trap)f(on)h +Fs(ERR)p Ft(,)f(if)h(set,)g(is)g(executed)h(b)s(efore)e(the)h(shell) +1110 3696 y(exits.)630 3861 y Fs(-f)384 b Ft(Disable)31 +b(\014le)g(name)f(generation)i(\(globbing\).)630 4025 +y Fs(-h)384 b Ft(Lo)s(cate)33 b(and)e(remem)m(b)s(er)h(\(hash\))g +(commands)f(as)h(they)g(are)g(lo)s(ok)m(ed)h(up)e(for)1110 +4135 y(execution.)42 b(This)29 b(option)i(is)g(enabled)f(b)m(y)g +(default.)630 4299 y Fs(-k)384 b Ft(All)34 b(argumen)m(ts)g(in)f(the)h +(form)f(of)g(assignmen)m(t)h(statemen)m(ts)i(are)d(placed)h(in)1110 +4409 y(the)k(en)m(vironmen)m(t)g(for)g(a)g(command,)h(not)f(just)f +(those)i(that)f(precede)g(the)1110 4518 y(command)30 +b(name.)630 4683 y Fs(-m)384 b Ft(Job)30 b(con)m(trol)i(is)e(enabled)h +(\(see)g(Chapter)f(7)g([Job)h(Con)m(trol],)g(page)g(85\).)630 +4847 y Fs(-n)384 b Ft(Read)21 b(commands)f(but)g(do)h(not)g(execute)h +(them;)i(this)d(ma)m(y)g(b)s(e)f(used)g(to)h(c)m(hec)m(k)1110 +4956 y(a)42 b(script)g(for)g(syn)m(tax)g(errors.)75 b(This)41 +b(option)h(is)g(ignored)g(b)m(y)g(in)m(teractiv)m(e)1110 +5066 y(shells.)630 5230 y Fs(-o)30 b Fj(option-name)1110 +5340 y Ft(Set)h(the)f(option)h(corresp)s(onding)e(to)i +Fq(option-name)5 b Ft(:)p eop end +%%Page: 54 60 +TeXDict begin 54 59 bop 150 -116 a Ft(54)2572 b(Bash)31 +b(Reference)g(Man)m(ual)1110 299 y Fs(allexport)1590 +408 y Ft(Same)f(as)h Fs(-a)p Ft(.)1110 565 y Fs(braceexpand)1590 +675 y Ft(Same)f(as)h Fs(-B)p Ft(.)1110 831 y Fs(emacs)240 b Ft(Use)25 b(an)f Fs(emacs)p Ft(-st)m(yle)h(line)f(editing)h(in)m -(terface)h(\(see)g(Chapter)e(8)1590 2132 y([Command)30 -b(Line)g(Editing],)h(page)g(91\).)1110 2291 y Fs(errexit)144 -b Ft(Same)30 b(as)h Fs(-e)p Ft(.)1110 2451 y Fs(errtrace)96 -b Ft(Same)30 b(as)h Fs(-E)p Ft(.)1110 2610 y Fs(functrace)1590 -2720 y Ft(Same)f(as)h Fs(-T)p Ft(.)1110 2879 y Fs(hashall)144 -b Ft(Same)30 b(as)h Fs(-h)p Ft(.)1110 3039 y Fs(histexpand)1590 -3148 y Ft(Same)f(as)h Fs(-H)p Ft(.)1110 3308 y Fs(history)144 +(terface)h(\(see)g(Chapter)e(8)1590 941 y([Command)30 +b(Line)g(Editing],)h(page)g(89\).)1110 1097 y Fs(errexit)144 +b Ft(Same)30 b(as)h Fs(-e)p Ft(.)1110 1254 y Fs(errtrace)96 +b Ft(Same)30 b(as)h Fs(-E)p Ft(.)1110 1410 y Fs(functrace)1590 +1520 y Ft(Same)f(as)h Fs(-T)p Ft(.)1110 1677 y Fs(hashall)144 +b Ft(Same)30 b(as)h Fs(-h)p Ft(.)1110 1833 y Fs(histexpand)1590 +1943 y Ft(Same)f(as)h Fs(-H)p Ft(.)1110 2099 y Fs(history)144 b Ft(Enable)39 b(command)g(history)-8 b(,)42 b(as)d(describ)s(ed)f(in)h -(Section)h(9.1)1590 3417 y([Bash)d(History)g(F)-8 b(acilities],)41 -b(page)c(117.)60 b(This)36 b(option)h(is)f(on)1590 3527 +(Section)h(9.1)1590 2209 y([Bash)d(History)g(F)-8 b(acilities],)41 +b(page)c(115.)60 b(This)36 b(option)h(is)f(on)1590 2318 y(b)m(y)30 b(default)h(in)f(in)m(teractiv)m(e)j(shells.)1110 -3686 y Fs(ignoreeof)1590 3796 y Ft(An)d(in)m(teractiv)m(e)j(shell)e -(will)g(not)f(exit)h(up)s(on)e(reading)i(EOF.)1110 3955 +2475 y Fs(ignoreeof)1590 2585 y Ft(An)d(in)m(teractiv)m(e)j(shell)e +(will)g(not)f(exit)h(up)s(on)e(reading)i(EOF.)1110 2741 y Fs(keyword)144 b Ft(Same)30 b(as)h Fs(-k)p Ft(.)1110 -4115 y Fs(monitor)144 b Ft(Same)30 b(as)h Fs(-m)p Ft(.)1110 -4274 y Fs(noclobber)1590 4384 y Ft(Same)f(as)h Fs(-C)p -Ft(.)1110 4543 y Fs(noexec)192 b Ft(Same)30 b(as)h Fs(-n)p -Ft(.)1110 4702 y Fs(noglob)192 b Ft(Same)30 b(as)h Fs(-f)p -Ft(.)1110 4862 y Fs(nolog)240 b Ft(Curren)m(tly)30 b(ignored.)1110 -5021 y Fs(notify)192 b Ft(Same)30 b(as)h Fs(-b)p Ft(.)1110 -5181 y Fs(nounset)144 b Ft(Same)30 b(as)h Fs(-u)p Ft(.)1110 -5340 y Fs(onecmd)192 b Ft(Same)30 b(as)h Fs(-t)p Ft(.)p -eop end -%%Page: 51 57 -TeXDict begin 51 56 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(51)1110 299 y -Fs(physical)96 b Ft(Same)30 b(as)h Fs(-P)p Ft(.)1110 -448 y Fs(pipefail)96 b Ft(If)44 b(set,)k(the)d(return)e(v)-5 +2898 y Fs(monitor)144 b Ft(Same)30 b(as)h Fs(-m)p Ft(.)1110 +3054 y Fs(noclobber)1590 3164 y Ft(Same)f(as)h Fs(-C)p +Ft(.)1110 3320 y Fs(noexec)192 b Ft(Same)30 b(as)h Fs(-n)p +Ft(.)1110 3477 y Fs(noglob)192 b Ft(Same)30 b(as)h Fs(-f)p +Ft(.)1110 3634 y Fs(nolog)240 b Ft(Curren)m(tly)30 b(ignored.)1110 +3790 y Fs(notify)192 b Ft(Same)30 b(as)h Fs(-b)p Ft(.)1110 +3947 y Fs(nounset)144 b Ft(Same)30 b(as)h Fs(-u)p Ft(.)1110 +4103 y Fs(onecmd)192 b Ft(Same)30 b(as)h Fs(-t)p Ft(.)1110 +4260 y Fs(physical)96 b Ft(Same)30 b(as)h Fs(-P)p Ft(.)1110 +4416 y Fs(pipefail)96 b Ft(If)44 b(set,)k(the)d(return)e(v)-5 b(alue)45 b(of)f(a)h(pip)s(eline)e(is)i(the)f(v)-5 b(alue)45 -b(of)1590 557 y(the)33 b(last)h(\(righ)m(tmost\))h(command)e(to)h(exit) -g(with)f(a)g(non-zero)1590 667 y(status,)28 b(or)f(zero)g(if)f(all)i -(commands)e(in)g(the)h(pip)s(eline)f(exit)i(suc-)1590 -776 y(cessfully)-8 b(.)41 b(This)30 b(option)h(is)f(disabled)g(b)m(y)h -(default.)1110 925 y Fs(posix)240 b Ft(Change)30 b(the)g(b)s(eha)m +b(of)1590 4526 y(the)33 b(last)h(\(righ)m(tmost\))h(command)e(to)h +(exit)g(with)f(a)g(non-zero)1590 4635 y(status,)28 b(or)f(zero)g(if)f +(all)i(commands)e(in)g(the)h(pip)s(eline)f(exit)i(suc-)1590 +4745 y(cessfully)-8 b(.)41 b(This)30 b(option)h(is)f(disabled)g(b)m(y)h +(default.)1110 4902 y Fs(posix)240 b Ft(Change)30 b(the)g(b)s(eha)m (vior)h(of)f(Bash)g(where)g(the)g(default)h(op)s(era-)1590 -1035 y(tion)25 b(di\013ers)f(from)g(the)h Fl(posix)f -Ft(standard)f(to)i(matc)m(h)h(the)f(stan-)1590 1144 y(dard)32 -b(\(see)i(Section)g(6.11)h([Bash)e(POSIX)f(Mo)s(de],)j(page)e(82\).) -1590 1254 y(This)k(is)g(in)m(tended)g(to)h(mak)m(e)g(Bash)g(b)s(eha)m -(v)m(e)g(as)g(a)f(strict)h(su-)1590 1363 y(p)s(erset)30 -b(of)h(that)f(standard.)1110 1512 y Fs(privileged)1590 -1622 y Ft(Same)g(as)h Fs(-p)p Ft(.)1110 1771 y Fs(verbose)144 -b Ft(Same)30 b(as)h Fs(-v)p Ft(.)1110 1919 y Fs(vi)384 -b Ft(Use)31 b(a)g Fs(vi)p Ft(-st)m(yle)g(line)g(editing)g(in)m -(terface.)1110 2068 y Fs(xtrace)192 b Ft(Same)30 b(as)h -Fs(-x)p Ft(.)630 2217 y Fs(-p)384 b Ft(T)-8 b(urn)33 +5011 y(tion)25 b(di\013ers)f(from)g(the)h Fl(posix)f +Ft(standard)f(to)i(matc)m(h)h(the)f(stan-)1590 5121 y(dard)32 +b(\(see)i(Section)g(6.11)h([Bash)e(POSIX)f(Mo)s(de],)j(page)e(80\).) +1590 5230 y(This)k(is)g(in)m(tended)g(to)h(mak)m(e)g(Bash)g(b)s(eha)m +(v)m(e)g(as)g(a)f(strict)h(su-)1590 5340 y(p)s(erset)30 +b(of)h(that)f(standard.)p eop end +%%Page: 55 61 +TeXDict begin 55 60 bop 150 -116 a Ft(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(55)1110 299 y +Fs(privileged)1590 408 y Ft(Same)30 b(as)h Fs(-p)p Ft(.)1110 +559 y Fs(verbose)144 b Ft(Same)30 b(as)h Fs(-v)p Ft(.)1110 +709 y Fs(vi)384 b Ft(Use)31 b(a)g Fs(vi)p Ft(-st)m(yle)g(line)g +(editing)g(in)m(terface.)1110 859 y Fs(xtrace)192 b Ft(Same)30 +b(as)h Fs(-x)p Ft(.)630 1009 y Fs(-p)384 b Ft(T)-8 b(urn)33 b(on)h(privileged)h(mo)s(de.)51 b(In)34 b(this)g(mo)s(de,)h(the)f -Fs($BASH_ENV)e Ft(and)h Fs($ENV)1110 2326 y Ft(\014les)k(are)h(not)g +Fs($BASH_ENV)e Ft(and)h Fs($ENV)1110 1119 y Ft(\014les)k(are)h(not)g (pro)s(cessed,)h(shell)f(functions)f(are)h(not)f(inherited)h(from)f -(the)1110 2436 y(en)m(vironmen)m(t,)f(and)d(the)h Fs(SHELLOPTS)e +(the)1110 1228 y(en)m(vironmen)m(t,)f(and)d(the)h Fs(SHELLOPTS)e Ft(v)-5 b(ariable,)35 b(if)f(it)h(app)s(ears)e(in)h(the)g(en-)1110 -2545 y(vironmen)m(t,)d(is)f(ignored.)41 b(If)29 b(the)i(shell)f(is)g -(started)h(with)f(the)g(e\013ectiv)m(e)j(user)1110 2655 +1338 y(vironmen)m(t,)d(is)f(ignored.)41 b(If)29 b(the)i(shell)f(is)g +(started)h(with)f(the)g(e\013ectiv)m(e)j(user)1110 1448 y(\(group\))d(id)g(not)g(equal)h(to)f(the)g(real)h(user)e(\(group\))i -(id,)f(and)f(the)h Fs(-p)f Ft(option)1110 2765 y(is)40 +(id,)f(and)f(the)h Fs(-p)f Ft(option)1110 1557 y(is)40 b(not)g(supplied,)i(these)e(actions)i(are)e(tak)m(en)h(and)f(the)g -(e\013ectiv)m(e)j(user)c(id)1110 2874 y(is)d(set)h(to)h(the)e(real)h +(e\013ectiv)m(e)j(user)c(id)1110 1667 y(is)d(set)h(to)h(the)e(real)h (user)f(id.)58 b(If)36 b(the)h Fs(-p)f Ft(option)g(is)h(supplied)e(at)i -(startup,)1110 2984 y(the)29 b(e\013ectiv)m(e)j(user)d(id)g(is)g(not)h +(startup,)1110 1776 y(the)29 b(e\013ectiv)m(e)j(user)d(id)g(is)g(not)h (reset.)40 b(T)-8 b(urning)29 b(this)g(option)g(o\013)h(causes)g(the) -1110 3093 y(e\013ectiv)m(e)e(user)d(and)g(group)g(ids)h(to)g(b)s(e)f +1110 1886 y(e\013ectiv)m(e)e(user)d(and)g(group)g(ids)h(to)g(b)s(e)f (set)h(to)h(the)f(real)g(user)f(and)g(group)g(ids.)630 -3242 y Fs(-t)384 b Ft(Exit)31 b(after)g(reading)f(and)g(executing)h -(one)g(command.)630 3391 y Fs(-u)384 b Ft(T)-8 b(reat)38 +2036 y Fs(-t)384 b Ft(Exit)31 b(after)g(reading)f(and)g(executing)h +(one)g(command.)630 2186 y Fs(-u)384 b Ft(T)-8 b(reat)38 b(unset)e(v)-5 b(ariables)37 b(as)h(an)e(error)h(when)e(p)s(erforming)h -(parameter)h(ex-)1110 3500 y(pansion.)58 b(An)36 b(error)f(message)j +(parameter)h(ex-)1110 2296 y(pansion.)58 b(An)36 b(error)f(message)j (will)e(b)s(e)g(written)g(to)h(the)g(standard)e(error,)1110 -3610 y(and)30 b(a)h(non-in)m(teractiv)m(e)i(shell)d(will)h(exit.)630 -3759 y Fs(-v)384 b Ft(Prin)m(t)30 b(shell)h(input)e(lines)i(as)g(they)f -(are)h(read.)630 3907 y Fs(-x)384 b Ft(Prin)m(t)21 b(a)h(trace)h(of)f +2405 y(and)30 b(a)h(non-in)m(teractiv)m(e)i(shell)d(will)h(exit.)630 +2556 y Fs(-v)384 b Ft(Prin)m(t)30 b(shell)h(input)e(lines)i(as)g(they)f +(are)h(read.)630 2706 y Fs(-x)384 b Ft(Prin)m(t)21 b(a)h(trace)h(of)f (simple)f(commands,)i Fs(for)e Ft(commands,)i Fs(case)d -Ft(commands,)1110 4017 y Fs(select)29 b Ft(commands,)j(and)e +Ft(commands,)1110 2815 y Fs(select)29 b Ft(commands,)j(and)e (arithmetic)j Fs(for)d Ft(commands)h(and)f(their)i(argu-)1110 -4127 y(men)m(ts)h(or)f(asso)s(ciated)i(w)m(ord)e(lists)h(after)g(they)f -(are)h(expanded)f(and)f(b)s(efore)1110 4236 y(they)i(are)g(executed.)49 +2925 y(men)m(ts)h(or)f(asso)s(ciated)i(w)m(ord)e(lists)h(after)g(they)f +(are)h(expanded)f(and)f(b)s(efore)1110 3035 y(they)i(are)g(executed.)49 b(The)32 b(v)-5 b(alue)33 b(of)g(the)g Fs(PS4)f Ft(v)-5 -b(ariable)34 b(is)f(expanded)f(and)1110 4346 y(the)24 +b(ariable)34 b(is)f(expanded)f(and)1110 3144 y(the)24 b(resultan)m(t)h(v)-5 b(alue)24 b(is)g(prin)m(ted)g(b)s(efore)f(the)h -(command)g(and)f(its)i(expanded)1110 4455 y(argumen)m(ts.)630 -4604 y Fs(-B)384 b Ft(The)41 b(shell)g(will)g(p)s(erform)f(brace)h -(expansion)g(\(see)h(Section)g(3.5.1)g([Brace)1110 4714 +(command)g(and)f(its)i(expanded)1110 3254 y(argumen)m(ts.)630 +3404 y Fs(-B)384 b Ft(The)41 b(shell)g(will)g(p)s(erform)f(brace)h +(expansion)g(\(see)h(Section)g(3.5.1)g([Brace)1110 3513 y(Expansion],)30 b(page)h(17\).)42 b(This)30 b(option)h(is)f(on)g(b)m -(y)h(default.)630 4862 y Fs(-C)384 b Ft(Prev)m(en)m(t)25 +(y)h(default.)630 3664 y Fs(-C)384 b Ft(Prev)m(en)m(t)25 b(output)e(redirection)h(using)f(`)p Fs(>)p Ft(',)i(`)p Fs(>&)p Ft(',)g(and)e(`)p Fs(<>)p Ft(')g(from)h(o)m(v)m(erwriting)1110 -4972 y(existing)31 b(\014les.)630 5121 y Fs(-E)384 b +3773 y(existing)31 b(\014les.)630 3923 y Fs(-E)384 b Ft(If)39 b(set,)j(an)m(y)e(trap)f(on)g Fs(ERR)g Ft(is)g(inherited)g(b)m -(y)g(shell)h(functions,)h(command)1110 5230 y(substitutions,)35 +(y)g(shell)h(functions,)h(command)1110 4033 y(substitutions,)35 b(and)e(commands)g(executed)i(in)f(a)g(subshell)f(en)m(vironmen)m(t.) -1110 5340 y(The)d Fs(ERR)f Ft(trap)i(is)f(normally)h(not)f(inherited)g -(in)g(suc)m(h)g(cases.)p eop end -%%Page: 52 58 -TeXDict begin 52 57 bop 150 -116 a Ft(52)2572 b(Bash)31 -b(Reference)g(Man)m(ual)630 299 y Fs(-H)384 b Ft(Enable)38 +1110 4143 y(The)d Fs(ERR)f Ft(trap)i(is)f(normally)h(not)f(inherited)g +(in)g(suc)m(h)g(cases.)630 4293 y Fs(-H)384 b Ft(Enable)38 b(`)p Fs(!)p Ft(')h(st)m(yle)h(history)e(substitution)g(\(see)h -(Section)h(9.3)f([History)g(In-)1110 408 y(teraction],)g(page)d(119\).) -57 b(This)34 b(option)i(is)f(on)g(b)m(y)h(default)f(for)g(in)m -(teractiv)m(e)1110 518 y(shells.)630 681 y Fs(-P)384 +(Section)h(9.3)f([History)g(In-)1110 4402 y(teraction],)g(page)d +(117\).)57 b(This)34 b(option)i(is)f(on)g(b)m(y)h(default)f(for)g(in)m +(teractiv)m(e)1110 4512 y(shells.)630 4662 y Fs(-P)384 b Ft(If)43 b(set,)k(do)c(not)g(follo)m(w)h(sym)m(b)s(olic)g(links)e -(when)g(p)s(erforming)g(commands)1110 790 y(suc)m(h)29 +(when)g(p)s(erforming)g(commands)1110 4772 y(suc)m(h)29 b(as)h Fs(cd)f Ft(whic)m(h)g(c)m(hange)h(the)g(curren)m(t)f(directory) --8 b(.)42 b(The)28 b(ph)m(ysical)j(direc-)1110 900 y(tory)j(is)g(used)f -(instead.)52 b(By)34 b(default,)h(Bash)f(follo)m(ws)h(the)f(logical)i -(c)m(hain)f(of)1110 1010 y(directories)j(when)d(p)s(erforming)h +-8 b(.)42 b(The)28 b(ph)m(ysical)j(direc-)1110 4881 y(tory)j(is)g(used) +f(instead.)52 b(By)34 b(default,)h(Bash)f(follo)m(ws)h(the)f(logical)i +(c)m(hain)f(of)1110 4991 y(directories)j(when)d(p)s(erforming)h (commands)g(whic)m(h)g(c)m(hange)i(the)f(curren)m(t)1110 -1119 y(directory)-8 b(.)1110 1255 y(F)g(or)31 b(example,)g(if)f(`)p +5101 y(directory)-8 b(.)1110 5230 y(F)g(or)31 b(example,)g(if)f(`)p Fs(/usr/sys)p Ft(')e(is)i(a)g(sym)m(b)s(olic)h(link)f(to)g(`)p -Fs(/usr/local/sys)p Ft(')1110 1365 y(then:)1350 1501 -y Fs($)47 b(cd)h(/usr/sys;)d(echo)i($PWD)1350 1611 y(/usr/sys)1350 -1720 y($)g(cd)h(..;)f(pwd)1350 1830 y(/usr)1110 1966 -y Ft(If)30 b Fs(set)f(-P)h Ft(is)h(on,)f(then:)1350 2102 -y Fs($)47 b(cd)h(/usr/sys;)d(echo)i($PWD)1350 2212 y(/usr/local/sys) -1350 2322 y($)g(cd)h(..;)f(pwd)1350 2431 y(/usr/local)630 -2594 y(-T)384 b Ft(If)34 b(set,)j(an)m(y)e(trap)g(on)g -Fs(DEBUG)e Ft(and)i Fs(RETURN)e Ft(are)i(inherited)g(b)m(y)f(shell)i -(func-)1110 2704 y(tions,)k(command)d(substitutions,)h(and)f(commands)g -(executed)h(in)f(a)h(sub-)1110 2813 y(shell)33 b(en)m(vironmen)m(t.)49 -b(The)32 b Fs(DEBUG)g Ft(and)g Fs(RETURN)f Ft(traps)h(are)i(normally)f -(not)1110 2923 y(inherited)d(in)g(suc)m(h)g(cases.)630 -3086 y Fs(--)384 b Ft(If)31 b(no)h(argumen)m(ts)f(follo)m(w)i(this)f -(option,)g(then)f(the)h(p)s(ositional)h(parameters)1110 -3195 y(are)h(unset.)49 b(Otherwise,)34 b(the)g(p)s(ositional)g -(parameters)g(are)g(set)g(to)g(the)g Fq(ar-)1110 3305 -y(gumen)m(ts)p Ft(,)d(ev)m(en)g(if)f(some)h(of)g(them)f(b)s(egin)g -(with)g(a)h(`)p Fs(-)p Ft('.)630 3468 y Fs(-)432 b Ft(Signal)45 -b(the)g(end)f(of)h(options,)k(cause)c(all)h(remaining)e -Fq(argumen)m(ts)49 b Ft(to)d(b)s(e)1110 3577 y(assigned)38 -b(to)h(the)f(p)s(ositional)h(parameters.)65 b(The)37 -b(`)p Fs(-x)p Ft(')h(and)g(`)p Fs(-v)p Ft(')g(options)1110 -3687 y(are)25 b(turned)e(o\013.)40 b(If)24 b(there)h(are)g(no)f +Fs(/usr/local/sys)p Ft(')1110 5340 y(then:)p eop end +%%Page: 56 62 +TeXDict begin 56 61 bop 150 -116 a Ft(56)2572 b(Bash)31 +b(Reference)g(Man)m(ual)1350 299 y Fs($)47 b(cd)h(/usr/sys;)d(echo)i +($PWD)1350 408 y(/usr/sys)1350 518 y($)g(cd)h(..;)f(pwd)1350 +628 y(/usr)1110 762 y Ft(If)30 b Fs(set)f(-P)h Ft(is)h(on,)f(then:)1350 +896 y Fs($)47 b(cd)h(/usr/sys;)d(echo)i($PWD)1350 1005 +y(/usr/local/sys)1350 1115 y($)g(cd)h(..;)f(pwd)1350 +1225 y(/usr/local)630 1383 y(-T)384 b Ft(If)34 b(set,)j(an)m(y)e(trap)g +(on)g Fs(DEBUG)e Ft(and)i Fs(RETURN)e Ft(are)i(inherited)g(b)m(y)f +(shell)i(func-)1110 1493 y(tions,)k(command)d(substitutions,)h(and)f +(commands)g(executed)h(in)f(a)h(sub-)1110 1602 y(shell)33 +b(en)m(vironmen)m(t.)49 b(The)32 b Fs(DEBUG)g Ft(and)g +Fs(RETURN)f Ft(traps)h(are)i(normally)f(not)1110 1712 +y(inherited)d(in)g(suc)m(h)g(cases.)630 1871 y Fs(--)384 +b Ft(If)31 b(no)h(argumen)m(ts)f(follo)m(w)i(this)f(option,)g(then)f +(the)h(p)s(ositional)h(parameters)1110 1980 y(are)h(unset.)49 +b(Otherwise,)34 b(the)g(p)s(ositional)g(parameters)g(are)g(set)g(to)g +(the)g Fq(ar-)1110 2090 y(gumen)m(ts)p Ft(,)d(ev)m(en)g(if)f(some)h(of) +g(them)f(b)s(egin)g(with)g(a)h(`)p Fs(-)p Ft('.)630 2249 +y Fs(-)432 b Ft(Signal)45 b(the)g(end)f(of)h(options,)k(cause)c(all)h +(remaining)e Fq(argumen)m(ts)49 b Ft(to)d(b)s(e)1110 +2358 y(assigned)38 b(to)h(the)f(p)s(ositional)h(parameters.)65 +b(The)37 b(`)p Fs(-x)p Ft(')h(and)g(`)p Fs(-v)p Ft(')g(options)1110 +2468 y(are)25 b(turned)e(o\013.)40 b(If)24 b(there)h(are)g(no)f (argumen)m(ts,)i(the)f(p)s(ositional)h(parameters)1110 -3797 y(remain)k(unc)m(hanged.)630 3959 y(Using)d(`)p +2577 y(remain)k(unc)m(hanged.)630 2736 y(Using)d(`)p Fs(+)p Ft(')h(rather)f(than)g(`)p Fs(-)p Ft(')g(causes)h(these)f (options)h(to)g(b)s(e)e(turned)g(o\013.)40 b(The)27 b(options)h(can)630 -4069 y(also)36 b(b)s(e)f(used)f(up)s(on)g(in)m(v)m(o)s(cation)j(of)e +2846 y(also)36 b(b)s(e)f(used)f(up)s(on)g(in)m(v)m(o)s(cation)j(of)e (the)g(shell.)56 b(The)34 b(curren)m(t)h(set)h(of)f(options)h(ma)m(y)g -(b)s(e)630 4179 y(found)29 b(in)h Fs($-)p Ft(.)630 4315 +(b)s(e)630 2955 y(found)29 b(in)h Fs($-)p Ft(.)630 3089 y(The)43 b(remaining)h(N)f Fq(argumen)m(ts)48 b Ft(are)c(p)s(ositional) -g(parameters)g(and)f(are)h(assigned,)j(in)630 4424 y(order,)30 +g(parameters)g(and)f(are)h(assigned,)j(in)630 3199 y(order,)30 b(to)h Fs($1)p Ft(,)f Fs($2)p Ft(,)36 b(.)22 b(.)g(.)42 b Fs($N)p Ft(.)e(The)30 b(sp)s(ecial)h(parameter)g Fs(#)f -Ft(is)g(set)h(to)g(N.)630 4561 y(The)f(return)f(status)i(is)f(alw)m(a)m +Ft(is)g(set)h(to)g(N.)630 3333 y(The)f(return)f(status)i(is)f(alw)m(a)m (ys)i(zero)f(unless)f(an)g(in)m(v)-5 b(alid)31 b(option)g(is)f -(supplied.)150 4792 y Fk(4.3.2)63 b(The)41 b(Shopt)h(Builtin)275 -5039 y Ft(This)29 b(builtin)h(allo)m(ws)i(y)m(ou)e(to)i(c)m(hange)f -(additional)g(shell)g(optional)g(b)s(eha)m(vior.)150 -5204 y Fs(shopt)870 5340 y(shopt)46 b([-pqsu])g([-o])h([)p -Fj(optname)56 b Fs(...)o(])p eop end -%%Page: 53 59 -TeXDict begin 53 58 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(53)630 299 y(T)-8 -b(oggle)47 b(the)d(v)-5 b(alues)45 b(of)g(v)-5 b(ariables)45 -b(con)m(trolling)i(optional)f(shell)e(b)s(eha)m(vior.)84 -b(With)45 b(no)630 408 y(options,)32 b(or)f(with)g(the)g(`)p -Fs(-p)p Ft(')g(option,)h(a)g(list)f(of)h(all)g(settable)g(options)g(is) -f(displa)m(y)m(ed,)h(with)630 518 y(an)i(indication)i(of)f(whether)f -(or)g(not)h(eac)m(h)h(is)e(set.)54 b(The)34 b(`)p Fs(-p)p -Ft(')h(option)g(causes)g(output)f(to)630 628 y(b)s(e)i(displa)m(y)m(ed) -h(in)e(a)i(form)f(that)h(ma)m(y)g(b)s(e)e(reused)h(as)g(input.)58 -b(Other)36 b(options)g(ha)m(v)m(e)i(the)630 737 y(follo)m(wing)32 -b(meanings:)630 894 y Fs(-s)384 b Ft(Enable)30 b(\(set\))i(eac)m(h)f -Fq(optname)p Ft(.)630 1052 y Fs(-u)384 b Ft(Disable)31 -b(\(unset\))g(eac)m(h)h Fq(optname)p Ft(.)630 1209 y -Fs(-q)384 b Ft(Suppresses)28 b(normal)h(output;)h(the)g(return)e -(status)i(indicates)h(whether)e(the)1110 1319 y Fq(optname)37 -b Ft(is)31 b(set)h(or)f(unset.)43 b(If)31 b(m)m(ultiple)h -Fq(optname)37 b Ft(argumen)m(ts)31 b(are)h(giv)m(en)1110 -1428 y(with)43 b(`)p Fs(-q)p Ft(',)j(the)d(return)f(status)h(is)g(zero) -h(if)f(all)g Fq(optnames)k Ft(are)d(enabled;)1110 1538 -y(non-zero)31 b(otherwise.)630 1695 y Fs(-o)384 b Ft(Restricts)28 -b(the)g(v)-5 b(alues)28 b(of)f Fq(optname)33 b Ft(to)c(b)s(e)d(those)i -(de\014ned)f(for)g(the)g(`)p Fs(-o)p Ft(')h(op-)1110 -1805 y(tion)23 b(to)h(the)f Fs(set)f Ft(builtin)h(\(see)g(Section)h -(4.3.1)h([The)d(Set)i(Builtin],)h(page)e(49\).)630 1962 -y(If)29 b(either)i(`)p Fs(-s)p Ft(')f(or)g(`)p Fs(-u)p -Ft(')f(is)h(used)g(with)f(no)h Fq(optname)35 b Ft(argumen)m(ts,)c(the)f -(displa)m(y)g(is)g(limited)630 2071 y(to)h(those)g(options)g(whic)m(h)f -(are)h(set)f(or)h(unset,)f(resp)s(ectiv)m(ely)-8 b(.)630 -2205 y(Unless)30 b(otherwise)h(noted,)g(the)g Fs(shopt)d -Ft(options)j(are)g(disabled)f(\(o\013)7 b(\))32 b(b)m(y)e(default.)630 -2338 y(The)d(return)f(status)i(when)f(listing)h(options)g(is)f(zero)i -(if)e(all)i Fq(optnames)i Ft(are)d(enabled,)g(non-)630 -2448 y(zero)40 b(otherwise.)66 b(When)39 b(setting)h(or)f(unsetting)g -(options,)i(the)e(return)f(status)h(is)g(zero)630 2557 -y(unless)30 b(an)g Fq(optname)36 b Ft(is)30 b(not)h(a)g(v)-5 -b(alid)30 b(shell)h(option.)630 2691 y(The)f(list)h(of)f -Fs(shopt)f Ft(options)i(is:)630 2848 y Fs(autocd)192 -b Ft(If)27 b(set,)h(a)g(command)f(name)g(that)h(is)f(the)g(name)g(of)h -(a)f(directory)h(is)f(executed)1110 2958 y(as)j(if)f(it)h(w)m(ere)f -(the)h(argumen)m(t)g(to)g(the)f Fs(cd)g Ft(command.)40 -b(This)29 b(option)g(is)h(only)1110 3067 y(used)g(b)m(y)g(in)m -(teractiv)m(e)j(shells.)630 3224 y Fs(cdable_vars)1110 -3334 y Ft(If)h(this)h(is)g(set,)i(an)e(argumen)m(t)g(to)h(the)f -Fs(cd)f Ft(builtin)h(command)f(that)i(is)f(not)1110 3444 -y(a)c(directory)g(is)g(assumed)f(to)h(b)s(e)f(the)h(name)f(of)h(a)g(v) --5 b(ariable)31 b(whose)g(v)-5 b(alue)31 b(is)1110 3553 -y(the)g(directory)f(to)i(c)m(hange)f(to.)630 3710 y Fs(cdspell)144 -b Ft(If)27 b(set,)h(minor)f(errors)f(in)h(the)g(sp)s(elling)h(of)f(a)g -(directory)h(comp)s(onen)m(t)f(in)g(a)h Fs(cd)1110 3820 -y Ft(command)i(will)h(b)s(e)f(corrected.)43 b(The)30 -b(errors)g(c)m(hec)m(k)m(ed)j(for)d(are)h(transp)s(osed)1110 -3930 y(c)m(haracters,)46 b(a)c(missing)f(c)m(haracter,)47 -b(and)40 b(a)i(c)m(haracter)h(to)s(o)g(man)m(y)-8 b(.)74 -b(If)42 b(a)1110 4039 y(correction)25 b(is)e(found,)g(the)h(corrected)g -(path)f(is)g(prin)m(ted,)h(and)f(the)g(command)1110 4149 -y(pro)s(ceeds.)40 b(This)30 b(option)h(is)f(only)h(used)e(b)m(y)h(in)m -(teractiv)m(e)k(shells.)630 4306 y Fs(checkhash)1110 -4416 y Ft(If)29 b(this)h(is)g(set,)g(Bash)g(c)m(hec)m(ks)h(that)g(a)f -(command)f(found)g(in)g(the)h(hash)f(table)1110 4525 -y(exists)k(b)s(efore)f(trying)h(to)h(execute)g(it.)48 -b(If)32 b(a)h(hashed)e(command)i(no)f(longer)1110 4635 -y(exists,)f(a)g(normal)f(path)g(searc)m(h)h(is)g(p)s(erformed.)630 -4792 y Fs(checkjobs)1110 4902 y Ft(If)d(set,)i(Bash)e(lists)h(the)g -(status)g(of)f(an)m(y)h(stopp)s(ed)f(and)g(running)e(jobs)i(b)s(efore) -1110 5011 y(exiting)42 b(an)f(in)m(teractiv)m(e)j(shell.)72 -b(If)41 b(an)m(y)g(jobs)f(are)i(running,)g(this)f(causes)1110 -5121 y(the)30 b(exit)g(to)g(b)s(e)f(deferred)g(un)m(til)h(a)f(second)h -(exit)g(is)g(attempted)h(without)e(an)1110 5230 y(in)m(terv)m(ening)j -(command)e(\(see)h(Chapter)f(7)h([Job)f(Con)m(trol],)i(page)f(87\).)42 -b(The)1110 5340 y(shell)31 b(alw)m(a)m(ys)g(p)s(ostp)s(ones)f(exiting)h -(if)g(an)m(y)f(jobs)g(are)h(stopp)s(ed.)p eop end -%%Page: 54 60 -TeXDict begin 54 59 bop 150 -116 a Ft(54)2572 b(Bash)31 -b(Reference)g(Man)m(ual)630 299 y Fs(checkwinsize)1110 -408 y Ft(If)41 b(set,)k(Bash)c(c)m(hec)m(ks)i(the)f(windo)m(w)e(size)j -(after)f(eac)m(h)g(command)f(and,)j(if)1110 518 y(necessary)-8 -b(,)31 b(up)s(dates)f(the)g(v)-5 b(alues)31 b(of)g Fs(LINES)e -Ft(and)g Fs(COLUMNS)p Ft(.)630 687 y Fs(cmdhist)144 b -Ft(If)33 b(set,)j(Bash)e(attempts)h(to)g(sa)m(v)m(e)g(all)g(lines)f(of) -g(a)h(m)m(ultiple-line)g(command)1110 797 y(in)c(the)g(same)g(history)g -(en)m(try)-8 b(.)42 b(This)30 b(allo)m(ws)i(easy)g(re-editing)g(of)f(m) -m(ulti-line)1110 907 y(commands.)630 1076 y Fs(dotglob)144 -b Ft(If)27 b(set,)i(Bash)f(includes)g(\014lenames)g(b)s(eginning)f -(with)g(a)h(`.')41 b(in)27 b(the)h(results)g(of)1110 -1186 y(\014lename)j(expansion.)630 1355 y Fs(execfail)96 -b Ft(If)24 b(this)h(is)f(set,)j(a)e(non-in)m(teractiv)m(e)i(shell)e -(will)f(not)h(exit)h(if)e(it)h(cannot)h(execute)1110 -1465 y(the)i(\014le)g(sp)s(eci\014ed)g(as)g(an)g(argumen)m(t)g(to)h -(the)f Fs(exec)f Ft(builtin)h(command.)39 b(An)1110 1574 -y(in)m(teractiv)m(e)33 b(shell)e(do)s(es)f(not)g(exit)i(if)e -Fs(exec)f Ft(fails.)630 1743 y Fs(expand_aliases)1110 -1853 y Ft(If)j(set,)h(aliases)g(are)g(expanded)e(as)h(describ)s(ed)f(b) -s(elo)m(w)h(under)f(Aliases,)i(Sec-)1110 1963 y(tion)38 -b(6.6)h([Aliases],)j(page)d(77.)64 b(This)37 b(option)h(is)g(enabled)g -(b)m(y)g(default)g(for)1110 2072 y(in)m(teractiv)m(e)33 -b(shells.)630 2242 y Fs(extdebug)96 b Ft(If)30 b(set,)h(b)s(eha)m(vior) -g(in)m(tended)f(for)g(use)g(b)m(y)g(debuggers)g(is)h(enabled:)1159 -2381 y(1.)61 b(The)32 b(`)p Fs(-F)p Ft(')g(option)h(to)g(the)g -Fs(declare)d Ft(builtin)i(\(see)i(Section)f(4.2)h([Bash)1290 -2491 y(Builtins],)29 b(page)g(41\))g(displa)m(ys)f(the)g(source)h -(\014le)f(name)g(and)f(line)h(n)m(um-)1290 2600 y(b)s(er)h(corresp)s -(onding)g(to)i(eac)m(h)g(function)f(name)g(supplied)f(as)i(an)f(argu-) -1290 2710 y(men)m(t.)1159 2849 y(2.)61 b(If)20 b(the)h(command)g(run)e -(b)m(y)i(the)f Fs(DEBUG)g Ft(trap)g(returns)g(a)h(non-zero)g(v)-5 -b(alue,)1290 2959 y(the)31 b(next)f(command)g(is)h(skipp)s(ed)e(and)g -(not)i(executed.)1159 3098 y(3.)61 b(If)37 b(the)g(command)g(run)f(b)m -(y)i(the)f Fs(DEBUG)f Ft(trap)h(returns)f(a)i(v)-5 b(alue)38 -b(of)f(2,)1290 3208 y(and)c(the)g(shell)h(is)f(executing)i(in)e(a)h -(subroutine)e(\(a)i(shell)g(function)f(or)1290 3318 y(a)h(shell)h -(script)f(executed)h(b)m(y)f(the)g Fs(.)g Ft(or)g Fs(source)e -Ft(builtins\),)j(a)g(call)g(to)1290 3427 y Fs(return)29 -b Ft(is)h(sim)m(ulated.)1159 3567 y(4.)61 b Fs(BASH_ARGC)34 -b Ft(and)i Fs(BASH_ARGV)e Ft(are)j(up)s(dated)e(as)h(describ)s(ed)g(in) -g(their)1290 3676 y(descriptions)30 b(\(see)i(Section)f(5.2)g([Bash)g -(V)-8 b(ariables],)32 b(page)f(59\).)1159 3816 y(5.)61 -b(F)-8 b(unction)57 b(tracing)g(is)g(enabled:)93 b(command)56 -b(substitution,)63 b(shell)1290 3925 y(functions,)30 -b(and)f(subshells)g(in)m(v)m(ok)m(ed)j(with)d Fs(\()h -Fj(command)39 b Fs(\))30 b Ft(inherit)g(the)1290 4035 -y Fs(DEBUG)f Ft(and)h Fs(RETURN)e Ft(traps.)1159 4174 -y(6.)61 b(Error)74 b(tracing)i(is)f(enabled:)131 b(command)74 -b(substitution,)87 b(shell)1290 4284 y(functions,)30 -b(and)f(subshells)g(in)m(v)m(ok)m(ed)j(with)d Fs(\()h -Fj(command)39 b Fs(\))30 b Ft(inherit)g(the)1290 4394 -y Fs(ERROR)f Ft(trap.)630 4563 y Fs(extglob)144 b Ft(If)26 -b(set,)i(the)f(extended)f(pattern)h(matc)m(hing)g(features)g(describ)s -(ed)e(ab)s(o)m(v)m(e)j(\(see)1110 4672 y(Section)j(3.5.8.1)i([P)m -(attern)f(Matc)m(hing],)g(page)f(24\))h(are)f(enabled.)630 -4842 y Fs(extquote)96 b Ft(If)49 b(set,)54 b Fs($')p -Fj(string)11 b Fs(')46 b Ft(and)j Fs($")p Fj(string)11 -b Fs(")46 b Ft(quoting)k(is)f(p)s(erformed)e(within)1110 -4951 y Fs(${)p Fj(parameter)11 b Fs(})30 b Ft(expansions)j(enclosed)h -(in)g(double)f(quotes.)51 b(This)32 b(option)1110 5061 -y(is)e(enabled)h(b)m(y)f(default.)630 5230 y Fs(failglob)96 -b Ft(If)30 b(set,)g(patterns)g(whic)m(h)g(fail)h(to)g(matc)m(h)g -(\014lenames)f(during)e(pathname)i(ex-)1110 5340 y(pansion)g(result)g -(in)g(an)g(expansion)h(error.)p eop end -%%Page: 55 61 -TeXDict begin 55 60 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(55)630 299 y Fs(force_fignore) -1110 408 y Ft(If)43 b(set,)k(the)d(su\016xes)f(sp)s(eci\014ed)f(b)m(y)i -(the)f Fs(FIGNORE)f Ft(shell)h(v)-5 b(ariable)44 b(cause)1110 -518 y(w)m(ords)31 b(to)h(b)s(e)f(ignored)h(when)f(p)s(erforming)f(w)m -(ord)h(completion)i(ev)m(en)f(if)g(the)1110 628 y(ignored)37 -b(w)m(ords)g(are)g(the)h(only)f(p)s(ossible)g(completions.)62 -b(See)37 b(Section)h(5.2)1110 737 y([Bash)24 b(V)-8 b(ariables],)27 -b(page)e(59,)h(for)d(a)h(description)g(of)g Fs(FIGNORE)p -Ft(.)37 b(This)22 b(option)1110 847 y(is)30 b(enabled)h(b)m(y)f -(default.)630 1011 y Fs(gnu_errfmt)1110 1121 y Ft(If)35 -b(set,)j(shell)e(error)g(messages)g(are)h(written)e(in)h(the)g -(standard)f Fl(gnu)g Ft(error)1110 1230 y(message)c(format.)630 -1395 y Fs(histappend)1110 1504 y Ft(If)c(set,)j(the)e(history)g(list)g -(is)g(app)s(ended)e(to)j(the)f(\014le)g(named)f(b)m(y)h(the)g(v)-5 -b(alue)29 b(of)1110 1614 y(the)d Fs(HISTFILE)d Ft(v)-5 -b(ariable)26 b(when)e(the)h(shell)h(exits,)h(rather)e(than)h(o)m(v)m -(erwriting)1110 1724 y(the)31 b(\014le.)630 1888 y Fs(histreedit)1110 -1998 y Ft(If)i(set,)h(and)f(Readline)h(is)f(b)s(eing)g(used,)g(a)g -(user)g(is)g(giv)m(en)h(the)g(opp)s(ortunit)m(y)1110 -2107 y(to)d(re-edit)g(a)g(failed)g(history)f(substitution.)630 -2271 y Fs(histverify)1110 2381 y Ft(If)35 b(set,)i(and)e(Readline)h(is) -f(b)s(eing)g(used,)h(the)f(results)g(of)g(history)h(substitu-)1110 -2491 y(tion)h(are)g(not)g(immediately)h(passed)e(to)h(the)g(shell)g -(parser.)59 b(Instead,)38 b(the)1110 2600 y(resulting)i(line)f(is)h -(loaded)g(in)m(to)g(the)g(Readline)g(editing)g(bu\013er,)h(allo)m(wing) -1110 2710 y(further)29 b(mo)s(di\014cation.)630 2874 -y Fs(hostcomplete)1110 2984 y Ft(If)38 b(set,)j(and)c(Readline)i(is)f -(b)s(eing)g(used,)h(Bash)g(will)f(attempt)h(to)g(p)s(erform)1110 -3093 y(hostname)d(completion)h(when)e(a)h(w)m(ord)f(con)m(taining)i(a)f -(`)p Fs(@)p Ft(')g(is)g(b)s(eing)f(com-)1110 3203 y(pleted)g(\(see)h -(Section)f(8.4.6)i([Commands)d(F)-8 b(or)36 b(Completion],)g(page)g -(107\).)1110 3313 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.) -630 3477 y Fs(huponexit)1110 3587 y Ft(If)i(set,)i(Bash)f(will)h(send)d -Fs(SIGHUP)h Ft(to)h(all)h(jobs)e(when)g(an)g(in)m(teractiv)m(e)k(login) -1110 3696 y(shell)31 b(exits)g(\(see)g(Section)g(3.7.6)h([Signals],)g -(page)f(31\).)630 3861 y Fs(interactive_comments)1110 -3970 y Ft(Allo)m(w)c(a)g(w)m(ord)e(b)s(eginning)g(with)h(`)p -Fs(#)p Ft(')g(to)h(cause)f(that)h(w)m(ord)f(and)f(all)i(remain-)1110 -4080 y(ing)41 b(c)m(haracters)i(on)e(that)h(line)g(to)g(b)s(e)f -(ignored)g(in)g(an)g(in)m(teractiv)m(e)j(shell.)1110 -4189 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.)630 -4354 y Fs(lithist)144 b Ft(If)22 b(enabled,)i(and)d(the)h -Fs(cmdhist)e Ft(option)j(is)f(enabled,)i(m)m(ulti-line)f(commands)1110 -4463 y(are)28 b(sa)m(v)m(ed)h(to)g(the)f(history)g(with)f(em)m(b)s -(edded)g(newlines)h(rather)g(than)f(using)1110 4573 y(semicolon)32 -b(separators)f(where)e(p)s(ossible.)630 4737 y Fs(login_shell)1110 -4847 y Ft(The)35 b(shell)h(sets)g(this)f(option)h(if)g(it)g(is)f -(started)h(as)g(a)g(login)g(shell)g(\(see)g(Sec-)1110 -4956 y(tion)29 b(6.1)g([In)m(v)m(oking)h(Bash],)f(page)g(69\).)41 -b(The)28 b(v)-5 b(alue)29 b(ma)m(y)g(not)f(b)s(e)g(c)m(hanged.)630 -5121 y Fs(mailwarn)96 b Ft(If)34 b(set,)i(and)e(a)h(\014le)g(that)g -(Bash)f(is)h(c)m(hec)m(king)h(for)f(mail)g(has)f(b)s(een)g(accessed) -1110 5230 y(since)24 b(the)h(last)g(time)f(it)h(w)m(as)f(c)m(hec)m(k)m -(ed,)k(the)c(message)h Fs("The)k(mail)h(in)f Fj(mail-)1110 -5340 y(file)40 b Fs(has)29 b(been)g(read")g Ft(is)i(displa)m(y)m(ed.)p -eop end -%%Page: 56 62 -TeXDict begin 56 61 bop 150 -116 a Ft(56)2572 b(Bash)31 -b(Reference)g(Man)m(ual)630 299 y Fs(no_empty_cmd_completion)1110 -408 y Ft(If)f(set,)g(and)g(Readline)g(is)h(b)s(eing)e(used,)h(Bash)g -(will)g(not)g(attempt)i(to)e(searc)m(h)1110 518 y(the)25 -b Fs(PATH)f Ft(for)h(p)s(ossible)f(completions)j(when)d(completion)i -(is)f(attempted)h(on)1110 628 y(an)k(empt)m(y)h(line.)630 -823 y Fs(nocaseglob)1110 933 y Ft(If)38 b(set,)k(Bash)d(matc)m(hes)g -(\014lenames)g(in)f(a)h(case-insensitiv)m(e)j(fashion)c(when)1110 -1042 y(p)s(erforming)29 b(\014lename)i(expansion.)630 -1238 y Fs(nocasematch)1110 1347 y Ft(If)42 b(set,)k(Bash)d(matc)m(hes)g -(patterns)g(in)f(a)h(case-insensitiv)m(e)i(fashion)d(when)1110 -1457 y(p)s(erforming)31 b(matc)m(hing)i(while)f(executing)i -Fs(case)d Ft(or)h Fs([[)g Ft(conditional)h(com-)1110 -1567 y(mands.)630 1762 y Fs(nullglob)96 b Ft(If)23 b(set,)j(Bash)e -(allo)m(ws)g(\014lename)g(patterns)g(whic)m(h)f(matc)m(h)h(no)g -(\014les)f(to)i(expand)1110 1872 y(to)31 b(a)g(n)m(ull)f(string,)h -(rather)f(than)g(themselv)m(es.)630 2067 y Fs(progcomp)96 -b Ft(If)25 b(set,)i(the)f(programmable)g(completion)g(facilities)i -(\(see)f(Section)f(8.6)h([Pro-)1110 2177 y(grammable)45 -b(Completion],)k(page)c(111\))h(are)f(enabled.)82 b(This)44 -b(option)h(is)1110 2286 y(enabled)30 b(b)m(y)h(default.)630 -2482 y Fs(promptvars)1110 2591 y Ft(If)24 b(set,)i(prompt)d(strings)h -(undergo)f(parameter)i(expansion,)g(command)f(sub-)1110 -2701 y(stitution,)34 b(arithmetic)f(expansion,)g(and)e(quote)i(remo)m -(v)-5 b(al)33 b(after)g(b)s(eing)e(ex-)1110 2811 y(panded)39 -b(as)i(describ)s(ed)e(b)s(elo)m(w)i(\(see)g(Section)g(6.9)g([Prin)m -(ting)g(a)g(Prompt],)1110 2920 y(page)31 b(81\).)42 b(This)30 -b(option)g(is)h(enabled)f(b)m(y)g(default.)630 3116 y -Fs(restricted_shell)1110 3225 y Ft(The)40 b(shell)h(sets)g(this)g -(option)g(if)g(it)h(is)e(started)i(in)e(restricted)i(mo)s(de)e(\(see) -1110 3335 y(Section)c(6.10)g([The)f(Restricted)g(Shell],)i(page)e -(82\).)56 b(The)34 b(v)-5 b(alue)35 b(ma)m(y)h(not)1110 -3444 y(b)s(e)c(c)m(hanged.)49 b(This)32 b(is)h(not)h(reset)f(when)f -(the)h(startup)g(\014les)f(are)i(executed,)1110 3554 -y(allo)m(wing)k(the)e(startup)f(\014les)h(to)g(disco)m(v)m(er)h -(whether)f(or)f(not)i(a)f(shell)g(is)g(re-)1110 3664 -y(stricted.)630 3859 y Fs(shift_verbose)1110 3969 y Ft(If)g(this)g(is)g -(set,)j(the)d Fs(shift)f Ft(builtin)h(prin)m(ts)f(an)h(error)g(message) -i(when)d(the)1110 4078 y(shift)30 b(coun)m(t)h(exceeds)g(the)g(n)m(um)m -(b)s(er)e(of)h(p)s(ositional)i(parameters.)630 4274 y -Fs(sourcepath)1110 4383 y Ft(If)22 b(set,)j(the)e Fs(source)e -Ft(builtin)h(uses)g(the)h(v)-5 b(alue)23 b(of)g Fs(PATH)e -Ft(to)j(\014nd)d(the)h(directory)1110 4493 y(con)m(taining)29 -b(the)e(\014le)h(supplied)e(as)h(an)g(argumen)m(t.)40 -b(This)27 b(option)h(is)f(enabled)1110 4603 y(b)m(y)j(default.)630 -4798 y Fs(xpg_echo)96 b Ft(If)31 b(set,)h(the)g Fs(echo)e -Ft(builtin)h(expands)f(bac)m(kslash-escap)s(e)j(sequences)f(b)m(y)f -(de-)1110 4908 y(fault.)630 5103 y(The)c(return)f(status)i(when)f -(listing)h(options)g(is)f(zero)i(if)e(all)i Fq(optnames)i -Ft(are)d(enabled,)g(non-)630 5213 y(zero)40 b(otherwise.)66 -b(When)39 b(setting)h(or)f(unsetting)g(options,)i(the)e(return)f -(status)h(is)g(zero)630 5322 y(unless)30 b(an)g Fq(optname)36 -b Ft(is)30 b(not)h(a)g(v)-5 b(alid)30 b(shell)h(option.)p -eop end -%%Page: 57 63 -TeXDict begin 57 62 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(57)150 299 y Fr(4.4)68 -b(Sp)t(ecial)45 b(Builtins)275 543 y Ft(F)-8 b(or)40 -b(historical)i(reasons,)g(the)f Fl(posix)e Ft(standard)g(has)h -(classi\014ed)g(sev)m(eral)i(builtin)d(commands)h(as)150 -653 y Fm(sp)-5 b(e)g(cial)p Ft(.)84 b(When)44 b(Bash)g(is)g(executing)i -(in)d Fl(posix)h Ft(mo)s(de,)j(the)e(sp)s(ecial)f(builtins)g(di\013er)g -(from)g(other)150 762 y(builtin)30 b(commands)g(in)g(three)h(resp)s -(ects:)199 897 y(1.)61 b(Sp)s(ecial)31 b(builtins)e(are)i(found)e(b)s -(efore)h(shell)h(functions)f(during)f(command)h(lo)s(okup.)199 -1031 y(2.)61 b(If)30 b(a)h(sp)s(ecial)g(builtin)f(returns)f(an)h(error) +(supplied.)150 3589 y Fr(4.4)68 b(Sp)t(ecial)45 b(Builtins)275 +3833 y Ft(F)-8 b(or)40 b(historical)i(reasons,)g(the)f +Fl(posix)e Ft(standard)g(has)h(classi\014ed)g(sev)m(eral)i(builtin)d +(commands)h(as)150 3943 y Fm(sp)-5 b(e)g(cial)p Ft(.)84 +b(When)44 b(Bash)g(is)g(executing)i(in)d Fl(posix)h Ft(mo)s(de,)j(the)e +(sp)s(ecial)f(builtins)g(di\013er)g(from)g(other)150 +4052 y(builtin)30 b(commands)g(in)g(three)h(resp)s(ects:)199 +4186 y(1.)61 b(Sp)s(ecial)31 b(builtins)e(are)i(found)e(b)s(efore)h +(shell)h(functions)f(during)f(command)h(lo)s(okup.)199 +4320 y(2.)61 b(If)30 b(a)h(sp)s(ecial)g(builtin)f(returns)f(an)h(error) g(status,)h(a)g(non-in)m(teractiv)m(e)i(shell)d(exits.)199 -1166 y(3.)61 b(Assignmen)m(t)30 b(statemen)m(ts)h(preceding)f(the)f +4455 y(3.)61 b(Assignmen)m(t)30 b(statemen)m(ts)h(preceding)f(the)f (command)g(sta)m(y)i(in)e(e\013ect)i(in)e(the)h(shell)f(en)m(vironmen)m -(t)330 1275 y(after)i(the)f(command)h(completes.)275 -1435 y(When)36 b(Bash)g(is)h(not)f(executing)i(in)e Fl(posix)f +(t)330 4564 y(after)i(the)f(command)h(completes.)275 +4723 y(When)36 b(Bash)g(is)h(not)f(executing)i(in)e Fl(posix)f Ft(mo)s(de,)j(these)f(builtins)f(b)s(eha)m(v)m(e)h(no)f(di\013eren)m -(tly)h(than)150 1544 y(the)31 b(rest)f(of)h(the)f(Bash)h(builtin)e +(tly)h(than)150 4832 y(the)31 b(rest)f(of)h(the)f(Bash)h(builtin)e (commands.)41 b(The)30 b(Bash)g Fl(posix)g Ft(mo)s(de)g(is)g(describ)s -(ed)f(in)h(Section)h(6.11)150 1654 y([Bash)g(POSIX)e(Mo)s(de],)i(page)g -(82.)275 1788 y(These)f(are)g(the)h Fl(posix)f Ft(sp)s(ecial)h -(builtins:)390 1923 y Fs(break)46 b(:)i(.)f(continue)f(eval)g(exec)h -(exit)g(export)f(readonly)f(return)h(set)390 2032 y(shift)g(trap)h +(ed)f(in)h(Section)h(6.11)150 4942 y([Bash)g(POSIX)e(Mo)s(de],)i(page)g +(80.)275 5076 y(These)f(are)g(the)h Fl(posix)f Ft(sp)s(ecial)h +(builtins:)390 5210 y Fs(break)46 b(:)i(.)f(continue)f(eval)g(exec)h +(exit)g(export)f(readonly)f(return)h(set)390 5320 y(shift)g(trap)h (unset)p eop end -%%Page: 58 64 -TeXDict begin 58 63 bop 150 -116 a Ft(58)2572 b(Bash)31 -b(Reference)g(Man)m(ual)p eop end -%%Page: 59 65 -TeXDict begin 59 64 bop 150 -116 a Ft(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(59)150 299 y Fo(5)80 +%%Page: 57 63 +TeXDict begin 57 62 bop 150 -116 a Ft(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(57)150 299 y Fo(5)80 b(Shell)53 b(V)-13 b(ariables)275 525 y Ft(This)36 b(c)m(hapter)i (describ)s(es)e(the)h(shell)g(v)-5 b(ariables)38 b(that)g(Bash)f(uses.) 61 b(Bash)37 b(automatically)j(assigns)150 635 y(default)31 @@ -8933,7 +8538,7 @@ Ft(builtin.)150 3476 y Fs(PATH)288 b Ft(A)32 b(colon-separated)i(list)f 3961 y Fs(PS1)336 b Ft(The)35 b(primary)f(prompt)h(string.)55 b(The)35 b(default)h(v)-5 b(alue)35 b(is)h(`)p Fs(\\s-\\v\\$)28 b Ft('.)56 b(See)36 b(Section)g(6.9)630 4071 y([Prin)m(ting)28 -b(a)g(Prompt],)g(page)h(81,)g(for)e(the)h(complete)h(list)g(of)e(escap) +b(a)g(Prompt],)g(page)h(79,)g(for)e(the)h(complete)h(list)g(of)e(escap) s(e)h(sequences)g(that)h(are)630 4180 y(expanded)h(b)s(efore)g Fs(PS1)f Ft(is)h(displa)m(y)m(ed.)150 4336 y Fs(PS2)336 b Ft(The)30 b(secondary)g(prompt)g(string.)41 b(The)29 @@ -8946,579 +8551,551 @@ b(ariables)24 b(used)g(b)m(y)f(Bash)i(are)f(describ)s(ed)f(in)h (di\013eren)m(t)g(c)m(hapters:)38 b(v)-5 b(ariables)25 b(for)f(con)m(trolling)150 5184 y(the)31 b(job)f(con)m(trol)h (facilities)i(\(see)e(Section)g(7.3)h([Job)e(Con)m(trol)h(V)-8 -b(ariables],)32 b(page)g(90\).)150 5340 y Fs(BASH)288 +b(ariables],)32 b(page)g(88\).)150 5340 y Fs(BASH)288 b Ft(The)30 b(full)g(pathname)g(used)g(to)h(execute)h(the)e(curren)m(t) g(instance)h(of)g(Bash.)p eop end -%%Page: 60 66 -TeXDict begin 60 65 bop 150 -116 a Ft(60)2572 b(Bash)31 -b(Reference)g(Man)m(ual)150 299 y Fs(BASHPID)144 b Ft(Expands)36 -b(to)j(the)f(pro)s(cess)g(id)f(of)h(the)g(curren)m(t)g(Bash)g(pro)s -(cess.)63 b(This)37 b(di\013ers)g(from)h Fs($$)630 408 -y Ft(under)31 b(certain)j(circumstances,)h(suc)m(h)e(as)g(subshells)f -(that)i(do)f(not)g(require)g(Bash)g(to)h(b)s(e)630 518 -y(re-initialized.)150 682 y Fs(BASH_ARGC)630 792 y Ft(An)c(arra)m(y)h -(v)-5 b(ariable)31 b(whose)f(v)-5 b(alues)31 b(are)g(the)f(n)m(um)m(b)s -(er)g(of)g(parameters)h(in)f(eac)m(h)h(frame)g(of)630 -902 y(the)26 b(curren)m(t)f(bash)g(execution)i(call)g(stac)m(k.)41 -b(The)25 b(n)m(um)m(b)s(er)g(of)h(parameters)g(to)g(the)g(curren)m(t) -630 1011 y(subroutine)i(\(shell)i(function)g(or)f(script)g(executed)i -(with)e Fs(.)g Ft(or)h Fs(source)p Ft(\))e(is)h(at)h(the)g(top)g(of)630 -1121 y(the)37 b(stac)m(k.)63 b(When)37 b(a)h(subroutine)e(is)h -(executed,)j(the)e(n)m(um)m(b)s(er)d(of)j(parameters)f(passed)630 -1230 y(is)g(pushed)f(on)m(to)i Fs(BASH_ARGC)p Ft(.)59 -b(The)37 b(shell)g(sets)h Fs(BASH_ARGC)c Ft(only)k(when)e(in)h -(extended)630 1340 y(debugging)23 b(mo)s(de)f(\(see)h(Section)g(4.3.2)i -([The)d(Shopt)g(Builtin],)j(page)e(52)h(for)e(a)h(description)630 -1450 y(of)31 b(the)f Fs(extdebug)e Ft(option)j(to)g(the)g -Fs(shopt)e Ft(builtin\).)150 1614 y Fs(BASH_ARGV)630 -1724 y Ft(An)24 b(arra)m(y)g(v)-5 b(ariable)25 b(con)m(taining)h(all)f +%%Page: 58 64 +TeXDict begin 58 63 bop 150 -116 a Ft(58)2572 b(Bash)31 +b(Reference)g(Man)m(ual)150 299 y Fs(BASH_ARGC)630 408 +y Ft(An)f(arra)m(y)h(v)-5 b(ariable)31 b(whose)f(v)-5 +b(alues)31 b(are)g(the)f(n)m(um)m(b)s(er)f(of)i(parameters)g(in)f(eac)m +(h)h(frame)g(of)630 518 y(the)26 b(curren)m(t)f(bash)g(execution)i +(call)g(stac)m(k.)41 b(The)25 b(n)m(um)m(b)s(er)g(of)h(parameters)g(to) +g(the)g(curren)m(t)630 628 y(subroutine)i(\(shell)i(function)g(or)f +(script)g(executed)i(with)e Fs(.)g Ft(or)h Fs(source)p +Ft(\))e(is)h(at)h(the)g(top)g(of)630 737 y(the)37 b(stac)m(k.)63 +b(When)37 b(a)h(subroutine)e(is)h(executed,)j(the)e(n)m(um)m(b)s(er)d +(of)j(parameters)f(passed)630 847 y(is)g(pushed)f(on)m(to)i +Fs(BASH_ARGC)p Ft(.)59 b(The)37 b(shell)g(sets)h Fs(BASH_ARGC)c +Ft(only)k(when)e(in)h(extended)630 956 y(debugging)e(mo)s(de)g(\(see)i +(Section)f(4.2)h([Bash)e(Builtins],)j(page)e(41)g(for)f(a)h +(description)g(of)630 1066 y(the)31 b Fs(extdebug)d Ft(option)j(to)g +(the)f Fs(shopt)f Ft(builtin\).)150 1240 y Fs(BASH_ARGV)630 +1350 y Ft(An)24 b(arra)m(y)g(v)-5 b(ariable)25 b(con)m(taining)h(all)f (of)f(the)h(parameters)f(in)g(the)g(curren)m(t)g(bash)g(execution)630 -1833 y(call)35 b(stac)m(k.)53 b(The)34 b(\014nal)g(parameter)g(of)g +1459 y(call)35 b(stac)m(k.)53 b(The)34 b(\014nal)g(parameter)g(of)g (the)g(last)h(subroutine)e(call)i(is)f(at)h(the)f(top)h(of)f(the)630 -1943 y(stac)m(k;)28 b(the)c(\014rst)f(parameter)i(of)f(the)g(initial)i +1569 y(stac)m(k;)28 b(the)c(\014rst)f(parameter)i(of)f(the)g(initial)i (call)f(is)f(at)h(the)f(b)s(ottom.)39 b(When)24 b(a)g(subroutine)630 -2052 y(is)40 b(executed,)j(the)d(parameters)h(supplied)d(are)i(pushed)f +1678 y(is)40 b(executed,)j(the)d(parameters)h(supplied)d(are)i(pushed)f (on)m(to)i Fs(BASH_ARGV)p Ft(.)66 b(The)40 b(shell)630 -2162 y(sets)28 b Fs(BASH_ARGV)e Ft(only)i(when)f(in)h(extended)g -(debugging)g(mo)s(de)g(\(see)h(Section)f(4.3.2)i([The)630 -2271 y(Shopt)i(Builtin],)h(page)g(52)g(for)f(a)h(description)f(of)h -(the)f Fs(extdebug)e Ft(option)j(to)g(the)f Fs(shopt)630 -2381 y Ft(builtin\).)150 2545 y Fs(BASH_COMMAND)630 2655 -y Ft(The)39 b(command)h(curren)m(tly)g(b)s(eing)f(executed)i(or)e(ab)s -(out)h(to)g(b)s(e)f(executed,)44 b(unless)39 b(the)630 -2765 y(shell)g(is)g(executing)g(a)g(command)g(as)g(the)f(result)h(of)g -(a)g(trap,)i(in)d(whic)m(h)g(case)i(it)f(is)g(the)630 -2874 y(command)30 b(executing)i(at)f(the)f(time)h(of)g(the)g(trap.)150 -3039 y Fs(BASH_ENV)96 b Ft(If)28 b(this)g(v)-5 b(ariable)30 +1788 y(sets)31 b Fs(BASH_ARGV)e Ft(only)i(when)e(in)i(extended)g +(debugging)g(mo)s(de)f(\(see)i(Section)g(4.2)g([Bash)630 +1898 y(Builtins],)25 b(page)e(41)g(for)f(a)h(description)g(of)f(the)h +Fs(extdebug)d Ft(option)j(to)g(the)g Fs(shopt)e Ft(builtin\).)150 +2072 y Fs(BASH_COMMAND)630 2181 y Ft(The)39 b(command)h(curren)m(tly)g +(b)s(eing)f(executed)i(or)e(ab)s(out)h(to)g(b)s(e)f(executed,)44 +b(unless)39 b(the)630 2291 y(shell)g(is)g(executing)g(a)g(command)g(as) +g(the)f(result)h(of)g(a)g(trap,)i(in)d(whic)m(h)g(case)i(it)f(is)g(the) +630 2400 y(command)30 b(executing)i(at)f(the)f(time)h(of)g(the)g(trap.) +150 2574 y Fs(BASH_ENV)96 b Ft(If)28 b(this)g(v)-5 b(ariable)30 b(is)e(set)h(when)f(Bash)g(is)h(in)m(v)m(ok)m(ed)h(to)f(execute)h(a)e -(shell)h(script,)g(its)g(v)-5 b(alue)29 b(is)630 3148 +(shell)h(script,)g(its)g(v)-5 b(alue)29 b(is)630 2684 y(expanded)k(and)h(used)g(as)g(the)h(name)f(of)g(a)h(startup)f(\014le)g -(to)h(read)f(b)s(efore)g(executing)i(the)630 3258 y(script.)41 -b(See)30 b(Section)h(6.2)h([Bash)f(Startup)e(Files],)j(page)f(71.)150 -3422 y Fs(BASH_EXECUTION_STRING)630 3532 y Ft(The)f(command)g(argumen)m +(to)h(read)f(b)s(efore)g(executing)i(the)630 2794 y(script.)41 +b(See)30 b(Section)h(6.2)h([Bash)f(Startup)e(Files],)j(page)f(69.)150 +2968 y Fs(BASH_EXECUTION_STRING)630 3077 y Ft(The)f(command)g(argumen)m (t)h(to)g(the)g(`)p Fs(-c)p Ft(')f(in)m(v)m(o)s(cation)i(option.)150 -3696 y Fs(BASH_LINENO)630 3806 y Ft(An)38 b(arra)m(y)h(v)-5 +3251 y Fs(BASH_LINENO)630 3361 y Ft(An)38 b(arra)m(y)h(v)-5 b(ariable)39 b(whose)g(mem)m(b)s(ers)e(are)i(the)g(line)g(n)m(um)m(b)s -(ers)e(in)h(source)h(\014les)f(corre-)630 3915 y(sp)s(onding)h(to)i +(ers)e(in)h(source)h(\014les)f(corre-)630 3471 y(sp)s(onding)h(to)i (eac)m(h)g(mem)m(b)s(er)e(of)i Fq(FUNCNAME)p Ft(.)g Fs -(${BASH_LINENO[$i]})35 b Ft(is)40 b(the)h(line)630 4025 +(${BASH_LINENO[$i]})35 b Ft(is)40 b(the)h(line)630 3580 y(n)m(um)m(b)s(er)26 b(in)i(the)g(source)f(\014le)h(where)f Fs(${FUNCNAME[$i]})d Ft(w)m(as)k(called.)41 b(The)27 -b(corresp)s(ond-)630 4134 y(ing)f(source)h(\014le)f(name)g(is)h +b(corresp)s(ond-)630 3690 y(ing)f(source)h(\014le)f(name)g(is)h Fs(${BASH_SOURCE[$i]})p Ft(.)34 b(Use)27 b Fs(LINENO)d -Ft(to)j(obtain)g(the)f(curren)m(t)630 4244 y(line)31 -b(n)m(um)m(b)s(er.)150 4408 y Fs(BASH_REMATCH)630 4518 +Ft(to)j(obtain)g(the)f(curren)m(t)630 3799 y(line)31 +b(n)m(um)m(b)s(er.)150 3973 y Fs(BASH_REMATCH)630 4083 y Ft(An)43 b(arra)m(y)i(v)-5 b(ariable)44 b(whose)g(mem)m(b)s(ers)f (are)h(assigned)g(b)m(y)f(the)h(`)p Fs(=~)p Ft(')g(binary)f(op)s -(erator)630 4628 y(to)37 b(the)f Fs([[)g Ft(conditional)i(command)e +(erator)630 4193 y(to)37 b(the)f Fs([[)g Ft(conditional)i(command)e (\(see)h(Section)g(3.2.4.2)i([Conditional)e(Constructs],)630 -4737 y(page)e(10\).)52 b(The)33 b(elemen)m(t)j(with)d(index)g(0)i(is)f +4302 y(page)e(10\).)52 b(The)33 b(elemen)m(t)j(with)d(index)g(0)i(is)f (the)g(p)s(ortion)f(of)h(the)g(string)g(matc)m(hing)h(the)630 -4847 y(en)m(tire)29 b(regular)f(expression.)40 b(The)27 +4412 y(en)m(tire)29 b(regular)f(expression.)40 b(The)27 b(elemen)m(t)j(with)d(index)h Fq(n)f Ft(is)h(the)g(p)s(ortion)g(of)g -(the)g(string)630 4956 y(matc)m(hing)j(the)g Fq(n)p Ft(th)f(paren)m +(the)g(string)630 4521 y(matc)m(hing)j(the)g Fq(n)p Ft(th)f(paren)m (thesized)h(sub)s(expression.)39 b(This)29 b(v)-5 b(ariable)31 -b(is)g(read-only)-8 b(.)150 5121 y Fs(BASH_SOURCE)630 -5230 y Ft(An)24 b(arra)m(y)h(v)-5 b(ariable)26 b(whose)e(mem)m(b)s(ers) +b(is)g(read-only)-8 b(.)150 4695 y Fs(BASH_SOURCE)630 +4805 y Ft(An)24 b(arra)m(y)h(v)-5 b(ariable)26 b(whose)e(mem)m(b)s(ers) g(are)h(the)g(source)f(\014lenames)h(corresp)s(onding)e(to)j(the)630 -5340 y(elemen)m(ts)32 b(in)e(the)g Fs(FUNCNAME)e Ft(arra)m(y)j(v)-5 -b(ariable.)p eop end -%%Page: 61 67 -TeXDict begin 61 66 bop 150 -116 a Ft(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(61)150 299 y Fs(BASH_SUBSHELL)630 -408 y Ft(Incremen)m(ted)34 b(b)m(y)h(one)f(eac)m(h)i(time)f(a)f -(subshell)g(or)g(subshell)f(en)m(vironmen)m(t)i(is)f(spa)m(wned.)630 -518 y(The)c(initial)h(v)-5 b(alue)31 b(is)g(0.)150 678 -y Fs(BASH_VERSINFO)630 788 y Ft(A)36 b(readonly)g(arra)m(y)g(v)-5 -b(ariable)37 b(\(see)f(Section)h(6.7)g([Arra)m(ys],)h(page)e(78\))h -(whose)f(mem)m(b)s(ers)630 897 y(hold)c(v)m(ersion)h(information)f(for) -g(this)g(instance)h(of)g(Bash.)46 b(The)32 b(v)-5 b(alues)32 -b(assigned)h(to)g(the)630 1007 y(arra)m(y)e(mem)m(b)s(ers)e(are)i(as)g -(follo)m(ws:)630 1167 y Fs(BASH_VERSINFO[0])1110 1277 -y Ft(The)f(ma)5 b(jor)30 b(v)m(ersion)h(n)m(um)m(b)s(er)e(\(the)i -Fq(release)5 b Ft(\).)630 1437 y Fs(BASH_VERSINFO[1])1110 -1547 y Ft(The)30 b(minor)g(v)m(ersion)h(n)m(um)m(b)s(er)e(\(the)i -Fq(v)m(ersion)p Ft(\).)630 1707 y Fs(BASH_VERSINFO[2])1110 -1816 y Ft(The)f(patc)m(h)h(lev)m(el.)630 1976 y Fs(BASH_VERSINFO[3]) -1110 2086 y Ft(The)f(build)f(v)m(ersion.)630 2246 y Fs -(BASH_VERSINFO[4])1110 2356 y Ft(The)h(release)i(status)e(\(e.g.,)j -Fq(b)s(eta1)7 b Ft(\).)630 2516 y Fs(BASH_VERSINFO[5])1110 -2626 y Ft(The)30 b(v)-5 b(alue)31 b(of)f Fs(MACHTYPE)p -Ft(.)150 2786 y Fs(BASH_VERSION)630 2895 y Ft(The)g(v)m(ersion)h(n)m +4915 y(elemen)m(ts)32 b(in)e(the)g Fs(FUNCNAME)e Ft(arra)m(y)j(v)-5 +b(ariable.)150 5089 y Fs(BASH_SUBSHELL)630 5198 y Ft(Incremen)m(ted)34 +b(b)m(y)h(one)f(eac)m(h)i(time)f(a)f(subshell)g(or)g(subshell)f(en)m +(vironmen)m(t)i(is)f(spa)m(wned.)630 5308 y(The)c(initial)h(v)-5 +b(alue)31 b(is)g(0.)p eop end +%%Page: 59 65 +TeXDict begin 59 64 bop 150 -116 a Ft(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(59)150 299 y Fs(BASH_VERSINFO)630 +408 y Ft(A)36 b(readonly)g(arra)m(y)g(v)-5 b(ariable)37 +b(\(see)f(Section)h(6.7)g([Arra)m(ys],)h(page)e(76\))h(whose)f(mem)m(b) +s(ers)630 518 y(hold)c(v)m(ersion)h(information)f(for)g(this)g +(instance)h(of)g(Bash.)46 b(The)32 b(v)-5 b(alues)32 +b(assigned)h(to)g(the)630 628 y(arra)m(y)e(mem)m(b)s(ers)e(are)i(as)g +(follo)m(ws:)630 779 y Fs(BASH_VERSINFO[0])1110 889 y +Ft(The)f(ma)5 b(jor)30 b(v)m(ersion)h(n)m(um)m(b)s(er)e(\(the)i +Fq(release)5 b Ft(\).)630 1041 y Fs(BASH_VERSINFO[1])1110 +1150 y Ft(The)30 b(minor)g(v)m(ersion)h(n)m(um)m(b)s(er)e(\(the)i +Fq(v)m(ersion)p Ft(\).)630 1302 y Fs(BASH_VERSINFO[2])1110 +1412 y Ft(The)f(patc)m(h)h(lev)m(el.)630 1563 y Fs(BASH_VERSINFO[3]) +1110 1673 y Ft(The)f(build)f(v)m(ersion.)630 1825 y Fs +(BASH_VERSINFO[4])1110 1934 y Ft(The)h(release)i(status)e(\(e.g.,)j +Fq(b)s(eta1)7 b Ft(\).)630 2086 y Fs(BASH_VERSINFO[5])1110 +2196 y Ft(The)30 b(v)-5 b(alue)31 b(of)f Fs(MACHTYPE)p +Ft(.)150 2347 y Fs(BASH_VERSION)630 2457 y Ft(The)g(v)m(ersion)h(n)m (um)m(b)s(er)e(of)h(the)h(curren)m(t)f(instance)h(of)g(Bash.)150 -3055 y Fs(COLUMNS)144 b Ft(Used)36 b(b)m(y)h(the)f Fs(select)f +2609 y Fs(COLUMNS)144 b Ft(Used)36 b(b)m(y)h(the)f Fs(select)f Ft(builtin)h(command)h(to)g(determine)f(the)h(terminal)g(width)f(when) -630 3165 y(prin)m(ting)30 b(selection)i(lists.)42 b(Automatically)33 +630 2718 y(prin)m(ting)30 b(selection)i(lists.)42 b(Automatically)33 b(set)e(up)s(on)d(receipt)k(of)e(a)h Fs(SIGWINCH)p Ft(.)150 -3325 y Fs(COMP_CWORD)630 3435 y Ft(An)38 b(index)g(in)m(to)h +2870 y Fs(COMP_CWORD)630 2980 y Ft(An)38 b(index)g(in)m(to)h Fs(${COMP_WORDS})c Ft(of)k(the)g(w)m(ord)f(con)m(taining)i(the)e -(curren)m(t)g(cursor)g(p)s(o-)630 3544 y(sition.)72 b(This)40 +(curren)m(t)g(cursor)g(p)s(o-)630 3089 y(sition.)72 b(This)40 b(v)-5 b(ariable)41 b(is)f(a)m(v)-5 b(ailable)43 b(only)e(in)f(shell)h (functions)f(in)m(v)m(ok)m(ed)i(b)m(y)e(the)h(pro-)630 -3654 y(grammable)36 b(completion)g(facilities)i(\(see)e(Section)g(8.6)g -([Programmable)g(Completion],)630 3764 y(page)31 b(111\).)150 -3924 y Fs(COMP_LINE)630 4033 y Ft(The)38 b(curren)m(t)h(command)f +3199 y(grammable)36 b(completion)g(facilities)i(\(see)e(Section)g(8.6)g +([Programmable)g(Completion],)630 3308 y(page)31 b(109\).)150 +3460 y Fs(COMP_LINE)630 3570 y Ft(The)38 b(curren)m(t)h(command)f (line.)66 b(This)37 b(v)-5 b(ariable)40 b(is)f(a)m(v)-5 -b(ailable)41 b(only)d(in)h(shell)f(functions)630 4143 +b(ailable)41 b(only)d(in)h(shell)f(functions)630 3679 y(and)25 b(external)h(commands)f(in)m(v)m(ok)m(ed)h(b)m(y)f(the)h -(programmable)f(completion)i(facilities)g(\(see)630 4253 -y(Section)k(8.6)h([Programmable)f(Completion],)g(page)g(111\).)150 -4413 y Fs(COMP_POINT)630 4522 y Ft(The)25 b(index)g(of)h(the)g(curren)m +(programmable)f(completion)i(facilities)g(\(see)630 3789 +y(Section)k(8.6)h([Programmable)f(Completion],)g(page)g(109\).)150 +3941 y Fs(COMP_POINT)630 4050 y Ft(The)25 b(index)g(of)h(the)g(curren)m (t)f(cursor)g(p)s(osition)h(relativ)m(e)i(to)e(the)g(b)s(eginning)f(of) -g(the)h(curren)m(t)630 4632 y(command.)40 b(If)27 b(the)h(curren)m(t)g +g(the)h(curren)m(t)630 4160 y(command.)40 b(If)27 b(the)h(curren)m(t)g (cursor)g(p)s(osition)g(is)g(at)g(the)g(end)g(of)g(the)g(curren)m(t)g -(command,)630 4741 y(the)i(v)-5 b(alue)30 b(of)g(this)g(v)-5 +(command,)630 4269 y(the)i(v)-5 b(alue)30 b(of)g(this)g(v)-5 b(ariable)31 b(is)f(equal)g(to)h Fs(${#COMP_LINE})p Ft(.)37 b(This)29 b(v)-5 b(ariable)31 b(is)f(a)m(v)-5 b(ailable)630 -4851 y(only)36 b(in)f(shell)h(functions)f(and)g(external)h(commands)g -(in)m(v)m(ok)m(ed)h(b)m(y)e(the)h(programmable)630 4961 +4379 y(only)36 b(in)f(shell)h(functions)f(and)g(external)h(commands)g +(in)m(v)m(ok)m(ed)h(b)m(y)e(the)h(programmable)630 4489 y(completion)c(facilities)g(\(see)g(Section)f(8.6)g([Programmable)g -(Completion],)h(page)f(111\).)150 5121 y Fs(COMP_TYPE)630 -5230 y Ft(Set)c(to)h(an)f(in)m(teger)h(v)-5 b(alue)28 -b(corresp)s(onding)e(to)h(the)h(t)m(yp)s(e)f(of)g(completion)h -(attempted)g(that)630 5340 y(caused)e(a)h(completion)h(function)e(to)h -(b)s(e)f(called:)40 b Fq(T)-8 b(AB)p Ft(,)27 b(for)f(normal)h -(completion,)i(`)p Fs(?)p Ft(',)e(for)p eop end -%%Page: 62 68 -TeXDict begin 62 67 bop 150 -116 a Ft(62)2572 b(Bash)31 -b(Reference)g(Man)m(ual)630 299 y(listing)k(completions)h(after)f -(successiv)m(e)g(tabs,)h(`)p Fs(!)p Ft(',)g(for)e(listing)h(alternativ) -m(es)i(on)d(partial)630 408 y(w)m(ord)22 b(completion,)k(`)p -Fs(@)p Ft(',)f(to)e(list)g(completions)h(if)f(the)g(w)m(ord)f(is)h(not) -g(unmo)s(di\014ed,)f(or)h(`)p Fs(\045)p Ft(',)h(for)630 -518 y(men)m(u)i(completion.)41 b(This)25 b(v)-5 b(ariable)27 -b(is)g(a)m(v)-5 b(ailable)28 b(only)f(in)f(shell)g(functions)g(and)g -(external)630 628 y(commands)32 b(in)m(v)m(ok)m(ed)i(b)m(y)e(the)g -(programmable)h(completion)g(facilities)i(\(see)e(Section)g(8.6)630 -737 y([Programmable)e(Completion],)h(page)f(111\).)150 -902 y Fs(COMP_KEY)96 b Ft(The)29 b(k)m(ey)i(\(or)g(\014nal)e(k)m(ey)i -(of)f(a)g(k)m(ey)h(sequence\))g(used)e(to)i(in)m(v)m(ok)m(e)h(the)e -(curren)m(t)g(completion)630 1011 y(function.)150 1176 -y Fs(COMP_WORDBREAKS)630 1285 y Ft(The)f(set)i(of)e(c)m(haracters)j -(that)e(the)g(Readline)g(library)g(treats)g(as)g(w)m(ord)g(separators)g -(when)630 1395 y(p)s(erforming)i(w)m(ord)h(completion.)51 -b(If)33 b Fs(COMP_WORDBREAKS)c Ft(is)34 b(unset,)g(it)f(loses)i(its)e -(sp)s(ecial)630 1504 y(prop)s(erties,)d(ev)m(en)h(if)f(it)h(is)g -(subsequen)m(tly)f(reset.)150 1669 y Fs(COMP_WORDS)630 -1778 y Ft(An)36 b(arra)m(y)g(v)-5 b(ariable)37 b(consisting)g(of)f(the) -g(individual)f(w)m(ords)h(in)f(the)h(curren)m(t)g(command)630 -1888 y(line.)76 b(The)41 b(w)m(ords)h(are)g(split)h(on)e(shell)i(metac) -m(haracters)h(as)e(the)h(shell)f(parser)f(w)m(ould)630 -1998 y(separate)31 b(them.)40 b(This)29 b(v)-5 b(ariable)30 -b(is)g(a)m(v)-5 b(ailable)32 b(only)d(in)g(shell)h(functions)f(in)m(v)m -(ok)m(ed)i(b)m(y)f(the)630 2107 y(programmable)42 b(completion)h -(facilities)h(\(see)e(Section)h(8.6)f([Programmable)h(Comple-)630 -2217 y(tion],)31 b(page)g(111\).)150 2381 y Fs(COMPREPLY)630 -2491 y Ft(An)37 b(arra)m(y)h(v)-5 b(ariable)38 b(from)f(whic)m(h)g -(Bash)g(reads)g(the)h(p)s(ossible)e(completions)j(generated)630 -2600 y(b)m(y)33 b(a)g(shell)h(function)f(in)m(v)m(ok)m(ed)h(b)m(y)f -(the)g(programmable)h(completion)g(facilit)m(y)h(\(see)f(Sec-)630 -2710 y(tion)d(8.6)g([Programmable)g(Completion],)h(page)f(111\).)150 -2874 y Fs(DIRSTACK)96 b Ft(An)26 b(arra)m(y)h(v)-5 b(ariable)28 +(Completion],)h(page)f(109\).)150 4640 y Fs(COMP_WORDBREAKS)630 +4750 y Ft(The)e(set)i(of)e(c)m(haracters)j(that)e(the)g(Readline)g +(library)g(treats)g(as)g(w)m(ord)g(separators)g(when)630 +4859 y(p)s(erforming)i(w)m(ord)h(completion.)51 b(If)33 +b Fs(COMP_WORDBREAKS)c Ft(is)34 b(unset,)g(it)f(loses)i(its)e(sp)s +(ecial)630 4969 y(prop)s(erties,)d(ev)m(en)h(if)f(it)h(is)g(subsequen)m +(tly)f(reset.)150 5121 y Fs(COMP_WORDS)630 5230 y Ft(An)36 +b(arra)m(y)g(v)-5 b(ariable)37 b(consisting)g(of)f(the)g(individual)f +(w)m(ords)h(in)f(the)h(curren)m(t)g(command)630 5340 +y(line.)88 b(This)45 b(v)-5 b(ariable)47 b(is)f(a)m(v)-5 +b(ailable)48 b(only)e(in)g(shell)g(functions)g(in)m(v)m(ok)m(ed)h(b)m +(y)f(the)g(pro-)p eop end +%%Page: 60 66 +TeXDict begin 60 65 bop 150 -116 a Ft(60)2572 b(Bash)31 +b(Reference)g(Man)m(ual)630 299 y(grammable)36 b(completion)g +(facilities)i(\(see)e(Section)g(8.6)g([Programmable)g(Completion],)630 +408 y(page)31 b(109\).)150 573 y Fs(COMPREPLY)630 682 +y Ft(An)37 b(arra)m(y)h(v)-5 b(ariable)38 b(from)f(whic)m(h)g(Bash)g +(reads)g(the)h(p)s(ossible)e(completions)j(generated)630 +792 y(b)m(y)33 b(a)g(shell)h(function)f(in)m(v)m(ok)m(ed)h(b)m(y)f(the) +g(programmable)h(completion)g(facilit)m(y)h(\(see)f(Sec-)630 +902 y(tion)d(8.6)g([Programmable)g(Completion],)h(page)f(109\).)150 +1066 y Fs(DIRSTACK)96 b Ft(An)26 b(arra)m(y)h(v)-5 b(ariable)28 b(con)m(taining)g(the)f(curren)m(t)f(con)m(ten)m(ts)j(of)e(the)f -(directory)i(stac)m(k.)41 b(Direc-)630 2984 y(tories)33 +(directory)i(stac)m(k.)41 b(Direc-)630 1176 y(tories)33 b(app)s(ear)f(in)g(the)h(stac)m(k)h(in)e(the)h(order)f(they)h(are)g (displa)m(y)m(ed)g(b)m(y)f(the)h Fs(dirs)e Ft(builtin.)630 -3093 y(Assigning)f(to)h(mem)m(b)s(ers)f(of)g(this)g(arra)m(y)g(v)-5 +1285 y(Assigning)f(to)h(mem)m(b)s(ers)f(of)g(this)g(arra)m(y)g(v)-5 b(ariable)31 b(ma)m(y)g(b)s(e)e(used)h(to)h(mo)s(dify)e(directories)630 -3203 y(already)41 b(in)f(the)h(stac)m(k,)k(but)40 b(the)h +1395 y(already)41 b(in)f(the)h(stac)m(k,)k(but)40 b(the)h Fs(pushd)e Ft(and)h Fs(popd)f Ft(builtins)h(m)m(ust)h(b)s(e)e(used)h -(to)i(add)630 3313 y(and)37 b(remo)m(v)m(e)h(directories.)63 +(to)i(add)630 1504 y(and)37 b(remo)m(v)m(e)h(directories.)63 b(Assignmen)m(t)37 b(to)h(this)f(v)-5 b(ariable)38 b(will)g(not)f(c)m -(hange)i(the)e(cur-)630 3422 y(ren)m(t)c(directory)-8 +(hange)i(the)e(cur-)630 1614 y(ren)m(t)c(directory)-8 b(.)47 b(If)32 b Fs(DIRSTACK)e Ft(is)i(unset,)g(it)h(loses)g(its)g(sp)s (ecial)g(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)630 -3532 y(subsequen)m(tly)d(reset.)150 3696 y Fs(EMACS)240 +1724 y(subsequen)m(tly)d(reset.)150 1888 y Fs(EMACS)240 b Ft(If)31 b(Bash)h(\014nds)d(this)j(v)-5 b(ariable)32 b(in)f(the)h(en)m(vironmen)m(t)g(when)e(the)i(shell)f(starts)h(with)f -(v)-5 b(alue)630 3806 y(`)p Fs(t)p Ft(',)38 b(it)e(assumes)g(that)g +(v)-5 b(alue)630 1998 y(`)p Fs(t)p Ft(',)38 b(it)e(assumes)g(that)g (the)h(shell)f(is)g(running)e(in)i(an)g(emacs)g(shell)h(bu\013er)e(and) -g(disables)630 3915 y(line)c(editing.)150 4080 y Fs(EUID)288 +g(disables)630 2107 y(line)c(editing.)150 2271 y Fs(EUID)288 b Ft(The)30 b(n)m(umeric)g(e\013ectiv)m(e)j(user)d(id)g(of)g(the)h (curren)m(t)f(user.)40 b(This)30 b(v)-5 b(ariable)31 -b(is)f(readonly)-8 b(.)150 4244 y Fs(FCEDIT)192 b Ft(The)30 +b(is)f(readonly)-8 b(.)150 2436 y Fs(FCEDIT)192 b Ft(The)30 b(editor)h(used)e(as)i(a)g(default)f(b)m(y)h(the)f(`)p Fs(-e)p Ft(')g(option)h(to)g(the)g Fs(fc)f Ft(builtin)g(command.)150 -4408 y Fs(FIGNORE)144 b Ft(A)35 b(colon-separated)i(list)f(of)g +2600 y Fs(FIGNORE)144 b Ft(A)35 b(colon-separated)i(list)f(of)g (su\016xes)e(to)i(ignore)g(when)e(p)s(erforming)g(\014lename)i(comple-) -630 4518 y(tion.)j(A)25 b(\014le)g(name)g(whose)f(su\016x)g(matc)m(hes) +630 2710 y(tion.)j(A)25 b(\014le)g(name)g(whose)f(su\016x)g(matc)m(hes) i(one)f(of)g(the)g(en)m(tries)g(in)g Fs(FIGNORE)d Ft(is)j(excluded)630 -4628 y(from)30 b(the)g(list)h(of)g(matc)m(hed)g(\014le)g(names.)40 +2819 y(from)30 b(the)g(list)h(of)g(matc)m(hed)g(\014le)g(names.)40 b(A)31 b(sample)f(v)-5 b(alue)31 b(is)g(`)p Fs(.o:~)p -Ft(')150 4792 y Fs(FUNCNAME)96 b Ft(An)35 b(arra)m(y)i(v)-5 +Ft(')150 2984 y Fs(FUNCNAME)96 b Ft(An)35 b(arra)m(y)i(v)-5 b(ariable)36 b(con)m(taining)h(the)f(names)g(of)g(all)g(shell)g -(functions)g(curren)m(tly)f(in)h(the)630 4902 y(execution)g(call)h +(functions)g(curren)m(tly)f(in)h(the)630 3093 y(execution)g(call)h (stac)m(k.)57 b(The)34 b(elemen)m(t)j(with)e(index)g(0)h(is)f(the)g -(name)h(of)f(an)m(y)h(curren)m(tly-)630 5011 y(executing)i(shell)f -(function.)61 b(The)36 b(b)s(ottom-most)i(elemen)m(t)h(is)e -Fs("main")p Ft(.)59 b(This)36 b(v)-5 b(ariable)630 5121 -y(exists)33 b(only)g(when)f(a)h(shell)g(function)f(is)h(executing.)49 -b(Assignmen)m(ts)33 b(to)g Fs(FUNCNAME)e Ft(ha)m(v)m(e)630 -5230 y(no)36 b(e\013ect)h(and)e(return)f(an)i(error)f(status.)57 -b(If)36 b Fs(FUNCNAME)d Ft(is)j(unset,)h(it)f(loses)g(its)g(sp)s(ecial) -630 5340 y(prop)s(erties,)30 b(ev)m(en)h(if)f(it)h(is)g(subsequen)m -(tly)f(reset.)p eop end -%%Page: 63 69 -TeXDict begin 63 68 bop 150 -116 a Ft(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(63)150 299 y Fs(GLOBIGNORE)630 -408 y Ft(A)38 b(colon-separated)i(list)f(of)f(patterns)g(de\014ning)f +(name)h(of)f(an)m(y)h(curren)m(tly-)630 3203 y(executing)i(shell)f +(function.)58 b(The)37 b(b)s(ottom-most)g(elemen)m(t)h(is)f +Fs(")p Ft(main)p Fs(")p Ft(.)58 b(This)36 b(v)-5 b(ariable)630 +3313 y(exists)33 b(only)g(when)f(a)h(shell)g(function)f(is)h +(executing.)49 b(Assignmen)m(ts)33 b(to)g Fs(FUNCNAME)e +Ft(ha)m(v)m(e)630 3422 y(no)36 b(e\013ect)h(and)e(return)f(an)i(error)f +(status.)57 b(If)36 b Fs(FUNCNAME)d Ft(is)j(unset,)h(it)f(loses)g(its)g +(sp)s(ecial)630 3532 y(prop)s(erties,)30 b(ev)m(en)h(if)f(it)h(is)g +(subsequen)m(tly)f(reset.)150 3696 y Fs(GLOBIGNORE)630 +3806 y Ft(A)38 b(colon-separated)i(list)f(of)f(patterns)g(de\014ning)f (the)h(set)g(of)h(\014lenames)f(to)g(b)s(e)g(ignored)630 -518 y(b)m(y)31 b(\014lename)g(expansion.)43 b(If)31 b(a)h(\014lename)f -(matc)m(hed)h(b)m(y)f(a)g(\014lename)h(expansion)f(pattern)630 -628 y(also)i(matc)m(hes)g(one)f(of)g(the)g(patterns)g(in)f -Fs(GLOBIGNORE)p Ft(,)f(it)i(is)g(remo)m(v)m(ed)h(from)e(the)h(list)h -(of)630 737 y(matc)m(hes.)150 931 y Fs(GROUPS)192 b Ft(An)36 -b(arra)m(y)g(v)-5 b(ariable)37 b(con)m(taining)g(the)f(list)h(of)f -(groups)g(of)g(whic)m(h)f(the)i(curren)m(t)e(user)h(is)g(a)630 -1041 y(mem)m(b)s(er.)47 b(Assignmen)m(ts)33 b(to)g Fs(GROUPS)e +3915 y(b)m(y)31 b(\014lename)g(expansion.)43 b(If)31 +b(a)h(\014lename)f(matc)m(hed)h(b)m(y)f(a)g(\014lename)h(expansion)f +(pattern)630 4025 y(also)i(matc)m(hes)g(one)f(of)g(the)g(patterns)g(in) +f Fs(GLOBIGNORE)p Ft(,)f(it)i(is)g(remo)m(v)m(ed)h(from)e(the)h(list)h +(of)630 4134 y(matc)m(hes.)150 4299 y Fs(GROUPS)192 b +Ft(An)36 b(arra)m(y)g(v)-5 b(ariable)37 b(con)m(taining)g(the)f(list)h +(of)f(groups)g(of)g(whic)m(h)f(the)i(curren)m(t)e(user)h(is)g(a)630 +4408 y(mem)m(b)s(er.)47 b(Assignmen)m(ts)33 b(to)g Fs(GROUPS)e Ft(ha)m(v)m(e)j(no)f(e\013ect)h(and)e(return)g(an)g(error)g(status.)48 -b(If)630 1150 y Fs(GROUPS)29 b Ft(is)h(unset,)g(it)h(loses)g(its)g(sp)s +b(If)630 4518 y Fs(GROUPS)29 b Ft(is)h(unset,)g(it)h(loses)g(its)g(sp)s (ecial)g(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)g(subsequen)m(tly)f -(reset.)150 1344 y Fs(histchars)630 1454 y Ft(Up)c(to)g(three)g(c)m +(reset.)150 4682 y Fs(histchars)630 4792 y Ft(Up)c(to)g(three)g(c)m (haracters)i(whic)m(h)d(con)m(trol)j(history)d(expansion,)i(quic)m(k)g -(substitution,)g(and)630 1563 y(tok)m(enization)k(\(see)f(Section)f -(9.3)h([History)f(In)m(teraction],)i(page)f(119\).)41 -b(The)29 b(\014rst)e(c)m(harac-)630 1673 y(ter)j(is)f(the)g +(substitution,)g(and)630 4902 y(tok)m(enization)k(\(see)f(Section)f +(9.3)h([History)f(In)m(teraction],)i(page)f(117\).)41 +b(The)29 b(\014rst)e(c)m(harac-)630 5011 y(ter)j(is)f(the)g Fq(history)g(expansion)g Ft(c)m(haracter,)j(that)e(is,)f(the)h(c)m -(haracter)h(whic)m(h)d(signi\014es)i(the)630 1783 y(start)25 +(haracter)h(whic)m(h)d(signi\014es)i(the)630 5121 y(start)25 b(of)f(a)h(history)f(expansion,)i(normally)e(`)p Fs(!)p Ft('.)39 b(The)24 b(second)g(c)m(haracter)i(is)e(the)g(c)m(haracter)630 -1892 y(whic)m(h)36 b(signi\014es)g(`quic)m(k)h(substitution')f(when)f +5230 y(whic)m(h)36 b(signi\014es)g(`quic)m(k)h(substitution')f(when)f (seen)h(as)g(the)g(\014rst)f(c)m(haracter)j(on)e(a)g(line,)630 -2002 y(normally)27 b(`)p Fs(^)p Ft('.)39 b(The)26 b(optional)i(third)d -(c)m(haracter)j(is)e(the)h(c)m(haracter)h(whic)m(h)e(indicates)h(that) -630 2111 y(the)34 b(remainder)f(of)h(the)g(line)g(is)f(a)h(commen)m(t)h -(when)e(found)f(as)i(the)g(\014rst)f(c)m(haracter)i(of)f(a)630 -2221 y(w)m(ord,)i(usually)f(`)p Fs(#)p Ft('.)55 b(The)34 -b(history)h(commen)m(t)h(c)m(haracter)h(causes)e(history)g -(substitution)630 2330 y(to)27 b(b)s(e)f(skipp)s(ed)f(for)i(the)f -(remaining)h(w)m(ords)f(on)h(the)f(line.)40 b(It)27 b(do)s(es)f(not)h -(necessarily)g(cause)630 2440 y(the)k(shell)f(parser)g(to)h(treat)g -(the)g(rest)g(of)f(the)h(line)f(as)h(a)g(commen)m(t.)150 -2634 y Fs(HISTCMD)144 b Ft(The)35 b(history)h(n)m(um)m(b)s(er,)g(or)f -(index)g(in)h(the)g(history)f(list,)j(of)e(the)g(curren)m(t)f(command.) -56 b(If)630 2744 y Fs(HISTCMD)28 b Ft(is)h(unset,)h(it)g(loses)h(its)f -(sp)s(ecial)g(prop)s(erties,)g(ev)m(en)g(if)g(it)g(is)g(subsequen)m -(tly)f(reset.)150 2937 y Fs(HISTCONTROL)630 3047 y Ft(A)40 -b(colon-separated)i(list)f(of)f(v)-5 b(alues)40 b(con)m(trolling)i(ho)m -(w)e(commands)g(are)h(sa)m(v)m(ed)g(on)f(the)630 3157 -y(history)29 b(list.)41 b(If)28 b(the)h(list)h(of)f(v)-5 -b(alues)29 b(includes)f(`)p Fs(ignorespace)p Ft(',)f(lines)i(whic)m(h)g -(b)s(egin)f(with)630 3266 y(a)39 b(space)g(c)m(haracter)i(are)e(not)g -(sa)m(v)m(ed)g(in)g(the)g(history)f(list.)66 b(A)39 b(v)-5 -b(alue)39 b(of)g(`)p Fs(ignoredups)p Ft(')630 3376 y(causes)34 -b(lines)h(whic)m(h)f(matc)m(h)h(the)f(previous)f(history)h(en)m(try)h -(to)g(not)f(b)s(e)f(sa)m(v)m(ed.)53 b(A)34 b(v)-5 b(alue)630 -3485 y(of)32 b(`)p Fs(ignoreboth)p Ft(')d(is)j(shorthand)e(for)i(`)p -Fs(ignorespace)p Ft(')d(and)i(`)p Fs(ignoredups)p Ft('.)42 -b(A)32 b(v)-5 b(alue)32 b(of)630 3595 y(`)p Fs(erasedups)p -Ft(')f(causes)i(all)h(previous)f(lines)g(matc)m(hing)h(the)f(curren)m -(t)g(line)g(to)h(b)s(e)e(remo)m(v)m(ed)630 3705 y(from)42 -b(the)h(history)f(list)i(b)s(efore)e(that)h(line)g(is)g(sa)m(v)m(ed.)78 -b(An)m(y)43 b(v)-5 b(alue)43 b(not)g(in)f(the)h(ab)s(o)m(v)m(e)630 -3814 y(list)35 b(is)g(ignored.)53 b(If)34 b Fs(HISTCONTROL)e -Ft(is)i(unset,)i(or)e(do)s(es)h(not)g(include)f(a)h(v)-5 -b(alid)35 b(v)-5 b(alue,)36 b(all)630 3924 y(lines)30 +5340 y(normally)27 b(`)p Fs(^)p Ft('.)39 b(The)26 b(optional)i(third)d +(c)m(haracter)j(is)e(the)h(c)m(haracter)h(whic)m(h)e(indicates)h(that)p +eop end +%%Page: 61 67 +TeXDict begin 61 66 bop 150 -116 a Ft(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(61)630 299 y(the)34 +b(remainder)f(of)h(the)g(line)g(is)f(a)h(commen)m(t)h(when)e(found)f +(as)i(the)g(\014rst)f(c)m(haracter)i(of)f(a)630 408 y(w)m(ord,)i +(usually)f(`)p Fs(#)p Ft('.)55 b(The)34 b(history)h(commen)m(t)h(c)m +(haracter)h(causes)e(history)g(substitution)630 518 y(to)27 +b(b)s(e)f(skipp)s(ed)f(for)i(the)f(remaining)h(w)m(ords)f(on)h(the)f +(line.)40 b(It)27 b(do)s(es)f(not)h(necessarily)g(cause)630 +628 y(the)k(shell)f(parser)g(to)h(treat)g(the)g(rest)g(of)f(the)h(line) +f(as)h(a)g(commen)m(t.)150 816 y Fs(HISTCMD)144 b Ft(The)35 +b(history)h(n)m(um)m(b)s(er,)g(or)f(index)g(in)h(the)g(history)f(list,) +j(of)e(the)g(curren)m(t)f(command.)56 b(If)630 925 y +Fs(HISTCMD)28 b Ft(is)h(unset,)h(it)g(loses)h(its)f(sp)s(ecial)g(prop)s +(erties,)g(ev)m(en)g(if)g(it)g(is)g(subsequen)m(tly)f(reset.)150 +1113 y Fs(HISTCONTROL)630 1223 y Ft(A)40 b(colon-separated)i(list)f(of) +f(v)-5 b(alues)40 b(con)m(trolling)i(ho)m(w)e(commands)g(are)h(sa)m(v)m +(ed)g(on)f(the)630 1332 y(history)29 b(list.)41 b(If)28 +b(the)h(list)h(of)f(v)-5 b(alues)29 b(includes)f(`)p +Fs(ignorespace)p Ft(',)f(lines)i(whic)m(h)g(b)s(egin)f(with)630 +1442 y(a)39 b(space)g(c)m(haracter)i(are)e(not)g(sa)m(v)m(ed)g(in)g +(the)g(history)f(list.)66 b(A)39 b(v)-5 b(alue)39 b(of)g(`)p +Fs(ignoredups)p Ft(')630 1551 y(causes)34 b(lines)h(whic)m(h)f(matc)m +(h)h(the)f(previous)f(history)h(en)m(try)h(to)g(not)f(b)s(e)f(sa)m(v)m +(ed.)53 b(A)34 b(v)-5 b(alue)630 1661 y(of)32 b(`)p Fs(ignoreboth)p +Ft(')d(is)j(shorthand)e(for)i(`)p Fs(ignorespace)p Ft(')d(and)i(`)p +Fs(ignoredups)p Ft('.)42 b(A)32 b(v)-5 b(alue)32 b(of)630 +1771 y(`)p Fs(erasedups)p Ft(')f(causes)i(all)h(previous)f(lines)g +(matc)m(hing)h(the)f(curren)m(t)g(line)g(to)h(b)s(e)e(remo)m(v)m(ed)630 +1880 y(from)42 b(the)h(history)f(list)i(b)s(efore)e(that)h(line)g(is)g +(sa)m(v)m(ed.)78 b(An)m(y)43 b(v)-5 b(alue)43 b(not)g(in)f(the)h(ab)s +(o)m(v)m(e)630 1990 y(list)35 b(is)g(ignored.)53 b(If)34 +b Fs(HISTCONTROL)e Ft(is)i(unset,)i(or)e(do)s(es)h(not)g(include)f(a)h +(v)-5 b(alid)35 b(v)-5 b(alue,)36 b(all)630 2099 y(lines)30 b(read)g(b)m(y)g(the)g(shell)g(parser)g(are)g(sa)m(v)m(ed)h(on)f(the)g (history)g(list,)h(sub)5 b(ject)30 b(to)g(the)g(v)-5 -b(alue)630 4033 y(of)42 b Fs(HISTIGNORE)p Ft(.)73 b(The)42 +b(alue)630 2209 y(of)42 b Fs(HISTIGNORE)p Ft(.)73 b(The)42 b(second)g(and)g(subsequen)m(t)f(lines)h(of)h(a)f(m)m(ulti-line)h(comp) -s(ound)630 4143 y(command)33 b(are)h(not)g(tested,)i(and)d(are)h(added) +s(ound)630 2318 y(command)33 b(are)h(not)g(tested,)i(and)d(are)h(added) f(to)h(the)g(history)g(regardless)g(of)g(the)f(v)-5 b(alue)630 -4253 y(of)31 b Fs(HISTCONTROL)p Ft(.)150 4446 y Fs(HISTFILE)96 +2428 y(of)31 b Fs(HISTCONTROL)p Ft(.)150 2616 y Fs(HISTFILE)96 b Ft(The)27 b(name)h(of)g(the)g(\014le)g(to)h(whic)m(h)f(the)g(command) f(history)h(is)g(sa)m(v)m(ed.)41 b(The)27 b(default)h(v)-5 -b(alue)630 4556 y(is)30 b(`)p Fs(~/.bash_history)p Ft('.)150 -4750 y Fs(HISTFILESIZE)630 4859 y Ft(The)c(maxim)m(um)f(n)m(um)m(b)s +b(alue)630 2725 y(is)30 b(`)p Fs(~/.bash_history)p Ft('.)150 +2913 y Fs(HISTFILESIZE)630 3023 y Ft(The)c(maxim)m(um)f(n)m(um)m(b)s (er)g(of)h(lines)h(con)m(tained)g(in)f(the)g(history)g(\014le.)39 -b(When)26 b(this)g(v)-5 b(ariable)630 4969 y(is)33 b(assigned)h(a)g(v) --5 b(alue,)35 b(the)f(history)f(\014le)g(is)h(truncated,)g(if)g -(necessary)-8 b(,)35 b(b)m(y)e(remo)m(ving)i(the)630 -5079 y(oldest)29 b(en)m(tries,)g(to)g(con)m(tain)g(no)f(more)g(than)f -(that)i(n)m(um)m(b)s(er)e(of)h(lines.)40 b(The)27 b(history)h(\014le)g -(is)630 5188 y(also)33 b(truncated)e(to)h(this)g(size)g(after)g -(writing)g(it)g(when)f(an)g(in)m(teractiv)m(e)k(shell)c(exits.)45 -b(The)630 5298 y(default)31 b(v)-5 b(alue)30 b(is)h(500.)p -eop end -%%Page: 64 70 -TeXDict begin 64 69 bop 150 -116 a Ft(64)2572 b(Bash)31 -b(Reference)g(Man)m(ual)150 299 y Fs(HISTIGNORE)630 408 -y Ft(A)i(colon-separated)h(list)f(of)g(patterns)f(used)g(to)h(decide)g -(whic)m(h)f(command)g(lines)h(should)630 518 y(b)s(e)f(sa)m(v)m(ed)h -(on)g(the)f(history)h(list.)47 b(Eac)m(h)33 b(pattern)g(is)f(anc)m -(hored)h(at)g(the)f(b)s(eginning)g(of)h(the)630 628 y(line)43 -b(and)e(m)m(ust)h(matc)m(h)h(the)g(complete)h(line)e(\(no)h(implicit)g -(`)p Fs(*)p Ft(')f(is)g(app)s(ended\).)75 b(Eac)m(h)630 -737 y(pattern)42 b(is)g(tested)g(against)h(the)f(line)g(after)g(the)g -(c)m(hec)m(ks)h(sp)s(eci\014ed)e(b)m(y)h Fs(HISTCONTROL)630 -847 y Ft(are)37 b(applied.)59 b(In)36 b(addition)h(to)g(the)g(normal)g -(shell)f(pattern)h(matc)m(hing)h(c)m(haracters,)i(`)p -Fs(&)p Ft(')630 956 y(matc)m(hes)d(the)f(previous)g(history)g(line.)57 +b(When)26 b(this)g(v)-5 b(ariable)630 3133 y(is)25 b(assigned)h(a)g(v) +-5 b(alue,)27 b(the)f(history)f(\014le)h(is)f(truncated,)i(if)e +(necessary)-8 b(,)28 b(to)e(con)m(tain)g(no)g(more)630 +3242 y(than)34 b(that)h(n)m(um)m(b)s(er)d(of)j(lines.)52 +b(The)34 b(history)g(\014le)g(is)g(also)h(truncated)f(to)h(this)f(size) +h(after)630 3352 y(writing)30 b(it)h(when)f(an)g(in)m(teractiv)m(e)j +(shell)e(exits.)41 b(The)30 b(default)h(v)-5 b(alue)31 +b(is)f(500.)150 3540 y Fs(HISTIGNORE)630 3649 y Ft(A)j(colon-separated) +h(list)f(of)g(patterns)f(used)g(to)h(decide)g(whic)m(h)f(command)g +(lines)h(should)630 3759 y(b)s(e)f(sa)m(v)m(ed)h(on)g(the)f(history)h +(list.)47 b(Eac)m(h)33 b(pattern)g(is)f(anc)m(hored)h(at)g(the)f(b)s +(eginning)g(of)h(the)630 3868 y(line)43 b(and)e(m)m(ust)h(matc)m(h)h +(the)g(complete)h(line)e(\(no)h(implicit)g(`)p Fs(*)p +Ft(')f(is)g(app)s(ended\).)75 b(Eac)m(h)630 3978 y(pattern)42 +b(is)g(tested)g(against)h(the)f(line)g(after)g(the)g(c)m(hec)m(ks)h(sp) +s(eci\014ed)e(b)m(y)h Fs(HISTCONTROL)630 4088 y Ft(are)37 +b(applied.)59 b(In)36 b(addition)h(to)g(the)g(normal)g(shell)f(pattern) +h(matc)m(hing)h(c)m(haracters,)i(`)p Fs(&)p Ft(')630 +4197 y(matc)m(hes)d(the)f(previous)g(history)g(line.)57 b(`)p Fs(&)p Ft(')36 b(ma)m(y)h(b)s(e)e(escap)s(ed)h(using)g(a)g(bac)m -(kslash;)k(the)630 1066 y(bac)m(kslash)34 b(is)g(remo)m(v)m(ed)h(b)s +(kslash;)k(the)630 4307 y(bac)m(kslash)34 b(is)g(remo)m(v)m(ed)h(b)s (efore)e(attempting)i(a)g(matc)m(h.)51 b(The)34 b(second)f(and)h -(subsequen)m(t)630 1176 y(lines)e(of)h(a)g(m)m(ulti-line)g(comp)s(ound) +(subsequen)m(t)630 4416 y(lines)e(of)h(a)g(m)m(ulti-line)g(comp)s(ound) e(command)h(are)h(not)f(tested,)i(and)e(are)g(added)g(to)h(the)630 -1285 y(history)d(regardless)h(of)g(the)f(v)-5 b(alue)31 -b(of)g Fs(HISTIGNORE)p Ft(.)630 1424 y Fs(HISTIGNORE)20 +4526 y(history)d(regardless)h(of)g(the)f(v)-5 b(alue)31 +b(of)g Fs(HISTIGNORE)p Ft(.)630 4675 y Fs(HISTIGNORE)20 b Ft(subsumes)g(the)j(function)f(of)h Fs(HISTCONTROL)p Ft(.)35 b(A)23 b(pattern)f(of)h(`)p Fs(&)p Ft(')g(is)f(iden)m(tical)630 -1534 y(to)k Fs(ignoredups)p Ft(,)e(and)h(a)h(pattern)g(of)f(`)p +4784 y(to)k Fs(ignoredups)p Ft(,)e(and)h(a)h(pattern)g(of)f(`)p Fs([)31 b(]*)p Ft(')25 b(is)h(iden)m(tical)h(to)f Fs(ignorespace)p -Ft(.)36 b(Com)m(bining)630 1643 y(these)30 b(t)m(w)m(o)h(patterns,)f +Ft(.)36 b(Com)m(bining)630 4894 y(these)30 b(t)m(w)m(o)h(patterns,)f (separating)g(them)g(with)f(a)h(colon,)h(pro)m(vides)e(the)h -(functionalit)m(y)h(of)630 1753 y Fs(ignoreboth)p Ft(.)150 -1922 y Fs(HISTSIZE)96 b Ft(The)42 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i +(functionalit)m(y)h(of)630 5003 y Fs(ignoreboth)p Ft(.)150 +5191 y Fs(HISTSIZE)96 b Ft(The)42 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i (commands)e(to)j(remem)m(b)s(er)d(on)h(the)h(history)f(list.)77 -b(The)630 2031 y(default)31 b(v)-5 b(alue)30 b(is)h(500.)150 -2200 y Fs(HISTTIMEFORMAT)630 2309 y Ft(If)44 b(this)g(v)-5 -b(ariable)45 b(is)f(set)g(and)g(not)g(n)m(ull,)k(its)d(v)-5 -b(alue)44 b(is)g(used)g(as)g(a)h(format)f(string)g(for)630 -2419 y Fq(strftime)c Ft(to)35 b(prin)m(t)f(the)h(time)g(stamp)f(asso)s -(ciated)i(with)f(eac)m(h)g(history)g(en)m(try)f(displa)m(y)m(ed)630 -2528 y(b)m(y)g(the)f Fs(history)f Ft(builtin.)50 b(If)33 +b(The)630 5301 y(default)31 b(v)-5 b(alue)30 b(is)h(500.)p +eop end +%%Page: 62 68 +TeXDict begin 62 67 bop 150 -116 a Ft(62)2572 b(Bash)31 +b(Reference)g(Man)m(ual)150 299 y Fs(HISTTIMEFORMAT)630 +408 y Ft(If)44 b(this)g(v)-5 b(ariable)45 b(is)f(set)g(and)g(not)g(n)m +(ull,)k(its)d(v)-5 b(alue)44 b(is)g(used)g(as)g(a)h(format)f(string)g +(for)630 518 y Fq(strftime)c Ft(to)35 b(prin)m(t)f(the)h(time)g(stamp)f +(asso)s(ciated)i(with)f(eac)m(h)g(history)g(en)m(try)f(displa)m(y)m(ed) +630 628 y(b)m(y)g(the)f Fs(history)f Ft(builtin.)50 b(If)33 b(this)h(v)-5 b(ariable)34 b(is)g(set,)h(time)f(stamps)g(are)g(written) -f(to)i(the)630 2638 y(history)26 b(\014le)g(so)g(they)g(ma)m(y)h(b)s(e) -e(preserv)m(ed)g(across)i(shell)f(sessions.)39 b(This)25 -b(uses)h(the)g(history)630 2748 y(commen)m(t)31 b(c)m(haracter)h(to)f -(distinguish)f(timestamps)h(from)f(other)g(history)h(lines.)150 -2916 y Fs(HOSTFILE)96 b Ft(Con)m(tains)39 b(the)f(name)g(of)h(a)g -(\014le)f(in)g(the)g(same)h(format)g(as)f(`)p Fs(/etc/hosts)p -Ft(')e(that)j(should)630 3026 y(b)s(e)i(read)h(when)f(the)i(shell)f -(needs)f(to)i(complete)h(a)e(hostname.)76 b(The)42 b(list)g(of)g(p)s -(ossible)630 3135 y(hostname)26 b(completions)g(ma)m(y)h(b)s(e)d(c)m -(hanged)j(while)e(the)h(shell)g(is)f(running;)h(the)g(next)f(time)630 -3245 y(hostname)37 b(completion)i(is)e(attempted)h(after)g(the)f(v)-5 +f(to)i(the)630 737 y(history)30 b(\014le)h(so)f(they)h(ma)m(y)g(b)s(e)f +(preserv)m(ed)g(across)h(shell)f(sessions.)150 902 y +Fs(HOSTFILE)96 b Ft(Con)m(tains)39 b(the)f(name)g(of)h(a)g(\014le)f(in) +g(the)g(same)h(format)g(as)f(`)p Fs(/etc/hosts)p Ft(')e(that)j(should) +630 1011 y(b)s(e)i(read)h(when)f(the)i(shell)f(needs)f(to)i(complete)h +(a)e(hostname.)76 b(The)42 b(list)g(of)g(p)s(ossible)630 +1121 y(hostname)26 b(completions)g(ma)m(y)h(b)s(e)d(c)m(hanged)j(while) +e(the)h(shell)g(is)f(running;)h(the)g(next)f(time)630 +1230 y(hostname)37 b(completion)i(is)e(attempted)h(after)g(the)f(v)-5 b(alue)37 b(is)h(c)m(hanged,)h(Bash)e(adds)g(the)630 -3354 y(con)m(ten)m(ts)27 b(of)f(the)g(new)f(\014le)h(to)h(the)f +1340 y(con)m(ten)m(ts)27 b(of)f(the)g(new)f(\014le)h(to)h(the)f (existing)g(list.)40 b(If)25 b Fs(HOSTFILE)f Ft(is)i(set,)h(but)e(has)h -(no)f(v)-5 b(alue,)630 3464 y(Bash)41 b(attempts)g(to)g(read)f(`)p +(no)f(v)-5 b(alue,)630 1450 y(Bash)41 b(attempts)g(to)g(read)f(`)p Fs(/etc/hosts)p Ft(')f(to)i(obtain)g(the)f(list)h(of)g(p)s(ossible)f -(hostname)630 3574 y(completions.)i(When)30 b Fs(HOSTFILE)e +(hostname)630 1559 y(completions.)i(When)30 b Fs(HOSTFILE)e Ft(is)j(unset,)f(the)g(hostname)h(list)g(is)f(cleared.)150 -3742 y Fs(HOSTNAME)96 b Ft(The)30 b(name)g(of)h(the)f(curren)m(t)h -(host.)150 3911 y Fs(HOSTTYPE)96 b Ft(A)30 b(string)h(describing)f(the) -g(mac)m(hine)h(Bash)g(is)f(running)f(on.)150 4079 y Fs(IGNOREEOF)630 -4189 y Ft(Con)m(trols)e(the)h(action)g(of)f(the)g(shell)g(on)g(receipt) +1724 y Fs(HOSTNAME)96 b Ft(The)30 b(name)g(of)h(the)f(curren)m(t)h +(host.)150 1888 y Fs(HOSTTYPE)96 b Ft(A)30 b(string)h(describing)f(the) +g(mac)m(hine)h(Bash)g(is)f(running)f(on.)150 2052 y Fs(IGNOREEOF)630 +2162 y Ft(Con)m(trols)e(the)h(action)g(of)f(the)g(shell)g(on)g(receipt) h(of)f(an)g Fs(EOF)f Ft(c)m(haracter)i(as)g(the)f(sole)h(input.)630 -4298 y(If)i(set,)i(the)f(v)-5 b(alue)32 b(denotes)f(the)g(n)m(um)m(b)s +2271 y(If)i(set,)i(the)f(v)-5 b(alue)32 b(denotes)f(the)g(n)m(um)m(b)s (er)f(of)h(consecutiv)m(e)i Fs(EOF)d Ft(c)m(haracters)i(that)f(can)h(b) -s(e)630 4408 y(read)40 b(as)f(the)h(\014rst)f(c)m(haracter)i(on)f(an)f +s(e)630 2381 y(read)40 b(as)f(the)h(\014rst)f(c)m(haracter)i(on)f(an)f (input)g(line)h(b)s(efore)f(the)h(shell)g(will)g(exit.)70 -b(If)39 b(the)630 4517 y(v)-5 b(ariable)38 b(exists)f(but)f(do)s(es)g +b(If)39 b(the)630 2491 y(v)-5 b(ariable)38 b(exists)f(but)f(do)s(es)g (not)h(ha)m(v)m(e)h(a)g(n)m(umeric)e(v)-5 b(alue)37 b(\(or)h(has)e(no)h -(v)-5 b(alue\))37 b(then)g(the)630 4627 y(default)31 +(v)-5 b(alue\))37 b(then)g(the)630 2600 y(default)31 b(is)g(10.)43 b(If)30 b(the)h(v)-5 b(ariable)31 b(do)s(es)g(not)g (exist,)h(then)e Fs(EOF)g Ft(signi\014es)h(the)g(end)f(of)h(input)630 -4737 y(to)g(the)g(shell.)41 b(This)29 b(is)i(only)f(in)g(e\013ect)i -(for)e(in)m(teractiv)m(e)j(shells.)150 4905 y Fs(INPUTRC)144 +2710 y(to)g(the)g(shell.)41 b(This)29 b(is)i(only)f(in)g(e\013ect)i +(for)e(in)m(teractiv)m(e)j(shells.)150 2874 y Fs(INPUTRC)144 b Ft(The)68 b(name)h(of)f(the)h(Readline)g(initialization)j(\014le,)78 -b(o)m(v)m(erriding)69 b(the)g(default)g(of)630 5015 y(`)p -Fs(~/.inputrc)p Ft('.)150 5183 y Fs(LANG)288 b Ft(Used)28 +b(o)m(v)m(erriding)69 b(the)g(default)g(of)630 2984 y(`)p +Fs(~/.inputrc)p Ft('.)150 3148 y Fs(LANG)288 b Ft(Used)28 b(to)h(determine)f(the)g(lo)s(cale)h(category)h(for)e(an)m(y)h -(category)h(not)e(sp)s(eci\014cally)g(selected)630 5293 +(category)h(not)e(sp)s(eci\014cally)g(selected)630 3258 y(with)i(a)h(v)-5 b(ariable)31 b(starting)g(with)f Fs(LC_)p -Ft(.)p eop end -%%Page: 65 71 -TeXDict begin 65 70 bop 150 -116 a Ft(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(65)150 299 y Fs(LC_ALL)192 -b Ft(This)28 b(v)-5 b(ariable)29 b(o)m(v)m(errides)h(the)f(v)-5 -b(alue)29 b(of)g Fs(LANG)f Ft(and)g(an)m(y)h(other)g -Fs(LC_)f Ft(v)-5 b(ariable)29 b(sp)s(ecifying)630 408 -y(a)i(lo)s(cale)h(category)-8 b(.)150 565 y Fs(LC_COLLATE)630 -675 y Ft(This)37 b(v)-5 b(ariable)38 b(determines)g(the)g(collation)i -(order)d(used)g(when)f(sorting)i(the)g(results)g(of)630 -784 y(\014lename)e(expansion,)i(and)e(determines)g(the)h(b)s(eha)m -(vior)f(of)g(range)h(expressions,)h(equiv-)630 894 y(alence)e(classes,) -h(and)e(collating)i(sequences)e(within)f(\014lename)h(expansion)g(and)f -(pattern)630 1003 y(matc)m(hing)d(\(see)h(Section)f(3.5.8)h([Filename)g -(Expansion],)e(page)h(23\).)150 1160 y Fs(LC_CTYPE)96 -b Ft(This)36 b(v)-5 b(ariable)37 b(determines)f(the)h(in)m -(terpretation)h(of)f(c)m(haracters)h(and)e(the)g(b)s(eha)m(vior)h(of) -630 1270 y(c)m(haracter)46 b(classes)g(within)e(\014lename)h(expansion) -g(and)f(pattern)h(matc)m(hing)h(\(see)f(Sec-)630 1379 -y(tion)31 b(3.5.8)h([Filename)g(Expansion],)e(page)h(23\).)150 -1536 y Fs(LC_MESSAGES)630 1645 y Ft(This)25 b(v)-5 b(ariable)27 +Ft(.)150 3422 y Fs(LC_ALL)192 b Ft(This)28 b(v)-5 b(ariable)29 +b(o)m(v)m(errides)h(the)f(v)-5 b(alue)29 b(of)g Fs(LANG)f +Ft(and)g(an)m(y)h(other)g Fs(LC_)f Ft(v)-5 b(ariable)29 +b(sp)s(ecifying)630 3532 y(a)i(lo)s(cale)h(category)-8 +b(.)150 3696 y Fs(LC_COLLATE)630 3806 y Ft(This)37 b(v)-5 +b(ariable)38 b(determines)g(the)g(collation)i(order)d(used)g(when)f +(sorting)i(the)g(results)g(of)630 3915 y(\014lename)e(expansion,)i(and) +e(determines)g(the)h(b)s(eha)m(vior)f(of)g(range)h(expressions,)h +(equiv-)630 4025 y(alence)e(classes,)h(and)e(collating)i(sequences)e +(within)f(\014lename)h(expansion)g(and)f(pattern)630 +4134 y(matc)m(hing)d(\(see)h(Section)f(3.5.8)h([Filename)g(Expansion],) +e(page)h(23\).)150 4299 y Fs(LC_CTYPE)96 b Ft(This)36 +b(v)-5 b(ariable)37 b(determines)f(the)h(in)m(terpretation)h(of)f(c)m +(haracters)h(and)e(the)g(b)s(eha)m(vior)h(of)630 4408 +y(c)m(haracter)46 b(classes)g(within)e(\014lename)h(expansion)g(and)f +(pattern)h(matc)m(hing)h(\(see)f(Sec-)630 4518 y(tion)31 +b(3.5.8)h([Filename)g(Expansion],)e(page)h(23\).)150 +4682 y Fs(LC_MESSAGES)630 4792 y Ft(This)25 b(v)-5 b(ariable)27 b(determines)f(the)g(lo)s(cale)i(used)d(to)i(translate)g(double-quoted) -f(strings)g(pre-)630 1755 y(ceded)31 b(b)m(y)f(a)h(`)p +f(strings)g(pre-)630 4902 y(ceded)31 b(b)m(y)f(a)h(`)p Fs($)p Ft(')f(\(see)h(Section)h(3.1.2.5)g([Lo)s(cale)g(T)-8 -b(ranslation],)32 b(page)f(7\).)150 1911 y Fs(LC_NUMERIC)630 -2021 y Ft(This)f(v)-5 b(ariable)31 b(determines)f(the)h(lo)s(cale)h +b(ranslation],)32 b(page)f(7\).)150 5066 y Fs(LC_NUMERIC)630 +5176 y Ft(This)f(v)-5 b(ariable)31 b(determines)f(the)h(lo)s(cale)h (category)g(used)e(for)g(n)m(um)m(b)s(er)f(formatting.)150 -2178 y Fs(LINENO)192 b Ft(The)30 b(line)h(n)m(um)m(b)s(er)e(in)h(the)g -(script)h(or)f(shell)g(function)h(curren)m(tly)f(executing.)150 -2334 y Fs(LINES)240 b Ft(Used)25 b(b)m(y)g(the)g Fs(select)e -Ft(builtin)i(command)g(to)h(determine)f(the)g(column)g(length)g(for)g -(prin)m(t-)630 2444 y(ing)31 b(selection)h(lists.)41 -b(Automatically)33 b(set)e(up)s(on)e(receipt)i(of)f(a)h -Fs(SIGWINCH)p Ft(.)150 2600 y Fs(MACHTYPE)96 b Ft(A)26 -b(string)g(that)h(fully)f(describ)s(es)f(the)h(system)g(t)m(yp)s(e)h -(on)f(whic)m(h)f(Bash)i(is)f(executing,)i(in)e(the)630 -2710 y(standard)k Fl(gnu)g Fq(cpu-compan)m(y-system)h -Ft(format.)150 2866 y Fs(MAILCHECK)630 2976 y Ft(Ho)m(w)d(often)g(\(in) -g(seconds\))g(that)g(the)f(shell)h(should)f(c)m(hec)m(k)i(for)e(mail)h -(in)f(the)h(\014les)g(sp)s(eci\014ed)630 3086 y(in)i(the)h +5340 y Fs(LINENO)192 b Ft(The)30 b(line)h(n)m(um)m(b)s(er)e(in)h(the)g +(script)h(or)f(shell)g(function)h(curren)m(tly)f(executing.)p +eop end +%%Page: 63 69 +TeXDict begin 63 68 bop 150 -116 a Ft(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(63)150 299 y Fs(LINES)240 +b Ft(Used)25 b(b)m(y)g(the)g Fs(select)e Ft(builtin)i(command)g(to)h +(determine)f(the)g(column)g(length)g(for)g(prin)m(t-)630 +408 y(ing)31 b(selection)h(lists.)41 b(Automatically)33 +b(set)e(up)s(on)e(receipt)i(of)f(a)h Fs(SIGWINCH)p Ft(.)150 +569 y Fs(MACHTYPE)96 b Ft(A)26 b(string)g(that)h(fully)f(describ)s(es)f +(the)h(system)g(t)m(yp)s(e)h(on)f(whic)m(h)f(Bash)i(is)f(executing,)i +(in)e(the)630 679 y(standard)k Fl(gnu)g Fq(cpu-compan)m(y-system)h +Ft(format.)150 840 y Fs(MAILCHECK)630 949 y Ft(Ho)m(w)d(often)g(\(in)g +(seconds\))g(that)g(the)f(shell)h(should)f(c)m(hec)m(k)i(for)e(mail)h +(in)f(the)h(\014les)g(sp)s(eci\014ed)630 1059 y(in)i(the)h Fs(MAILPATH)e Ft(or)i Fs(MAIL)e Ft(v)-5 b(ariables.)43 b(The)30 b(default)h(is)f(60)i(seconds.)42 b(When)30 -b(it)h(is)g(time)630 3195 y(to)37 b(c)m(hec)m(k)h(for)e(mail,)j(the)e +b(it)h(is)g(time)630 1168 y(to)37 b(c)m(hec)m(k)h(for)e(mail,)j(the)e (shell)f(do)s(es)g(so)h(b)s(efore)f(displa)m(ying)h(the)f(primary)g -(prompt.)57 b(If)630 3305 y(this)37 b(v)-5 b(ariable)38 +(prompt.)57 b(If)630 1278 y(this)37 b(v)-5 b(ariable)38 b(is)f(unset,)h(or)f(set)h(to)g(a)f(v)-5 b(alue)38 b(that)f(is)g(not)h -(a)f(n)m(um)m(b)s(er)f(greater)i(than)f(or)630 3414 y(equal)31 +(a)f(n)m(um)m(b)s(er)f(greater)i(than)f(or)630 1387 y(equal)31 b(to)g(zero,)g(the)g(shell)g(disables)f(mail)h(c)m(hec)m(king.)150 -3571 y Fs(OLDPWD)192 b Ft(The)30 b(previous)g(w)m(orking)g(directory)h -(as)g(set)g(b)m(y)f(the)h Fs(cd)e Ft(builtin.)150 3727 +1548 y Fs(OLDPWD)192 b Ft(The)30 b(previous)g(w)m(orking)g(directory)h +(as)g(set)g(b)m(y)f(the)h Fs(cd)e Ft(builtin.)150 1709 y Fs(OPTERR)192 b Ft(If)35 b(set)i(to)f(the)h(v)-5 b(alue)36 b(1,)i(Bash)e(displa)m(ys)g(error)f(messages)i(generated)g(b)m(y)f(the) -g Fs(getopts)630 3837 y Ft(builtin)30 b(command.)150 -3994 y Fs(OSTYPE)192 b Ft(A)30 b(string)h(describing)f(the)g(op)s -(erating)h(system)g(Bash)f(is)h(running)d(on.)150 4150 -y Fs(PIPESTATUS)630 4260 y Ft(An)23 b(arra)m(y)h(v)-5 -b(ariable)24 b(\(see)h(Section)f(6.7)h([Arra)m(ys],)g(page)f(78\))h -(con)m(taining)g(a)f(list)g(of)g(exit)g(sta-)630 4369 +g Fs(getopts)630 1819 y Ft(builtin)30 b(command.)150 +1979 y Fs(OSTYPE)192 b Ft(A)30 b(string)h(describing)f(the)g(op)s +(erating)h(system)g(Bash)f(is)h(running)d(on.)150 2140 +y Fs(PIPESTATUS)630 2250 y Ft(An)23 b(arra)m(y)h(v)-5 +b(ariable)24 b(\(see)h(Section)f(6.7)h([Arra)m(ys],)g(page)f(76\))h +(con)m(taining)g(a)f(list)g(of)g(exit)g(sta-)630 2359 y(tus)h(v)-5 b(alues)27 b(from)e(the)h(pro)s(cesses)g(in)f(the)h (most-recen)m(tly-executed)j(foreground)c(pip)s(eline)630 -4479 y(\(whic)m(h)30 b(ma)m(y)h(con)m(tain)h(only)f(a)f(single)h -(command\).)150 4635 y Fs(POSIXLY_CORRECT)630 4745 y +2469 y(\(whic)m(h)30 b(ma)m(y)h(con)m(tain)h(only)f(a)f(single)h +(command\).)150 2629 y Fs(POSIXLY_CORRECT)630 2739 y Ft(If)h(this)h(v)-5 b(ariable)34 b(is)f(in)f(the)h(en)m(vironmen)m(t)h (when)d Fs(bash)h Ft(starts,)i(the)f(shell)g(en)m(ters)h -Fl(posix)630 4855 y Ft(mo)s(de)22 b(\(see)h(Section)g(6.11)h([Bash)e -(POSIX)f(Mo)s(de],)k(page)e(82\))g(b)s(efore)f(reading)g(the)g(startup) -630 4964 y(\014les,)32 b(as)f(if)h(the)f(`)p Fs(--posix)p +Fl(posix)630 2849 y Ft(mo)s(de)22 b(\(see)h(Section)g(6.11)h([Bash)e +(POSIX)f(Mo)s(de],)k(page)e(80\))g(b)s(efore)f(reading)g(the)g(startup) +630 2958 y(\014les,)32 b(as)f(if)h(the)f(`)p Fs(--posix)p Ft(')f(in)m(v)m(o)s(cation)j(option)f(had)f(b)s(een)g(supplied.)42 -b(If)31 b(it)h(is)f(set)h(while)630 5074 y(the)f(shell)f(is)h(running,) +b(If)31 b(it)h(is)f(set)h(while)630 3068 y(the)f(shell)f(is)h(running,) d Fs(bash)i Ft(enables)g Fl(posix)g Ft(mo)s(de,)g(as)h(if)f(the)h -(command)870 5207 y Fs(set)47 b(-o)g(posix)630 5340 y -Ft(had)30 b(b)s(een)f(executed.)p eop end -%%Page: 66 72 -TeXDict begin 66 71 bop 150 -116 a Ft(66)2572 b(Bash)31 -b(Reference)g(Man)m(ual)150 299 y Fs(PPID)288 b Ft(The)30 -b(pro)s(cess)g Fl(id)g Ft(of)h(the)f(shell's)h(paren)m(t)g(pro)s(cess.) -40 b(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8 b(.)150 -463 y Fs(PROMPT_COMMAND)630 573 y Ft(If)32 b(set,)h(the)f(v)-5 -b(alue)33 b(is)f(in)m(terpreted)g(as)g(a)h(command)f(to)h(execute)g(b)s -(efore)f(the)g(prin)m(ting)g(of)630 682 y(eac)m(h)g(primary)d(prompt)g -(\()p Fs($PS1)p Ft(\).)150 847 y Fs(PS3)336 b Ft(The)34 -b(v)-5 b(alue)35 b(of)f(this)g(v)-5 b(ariable)35 b(is)g(used)e(as)i -(the)f(prompt)g(for)g(the)g Fs(select)f Ft(command.)52 -b(If)630 956 y(this)30 b(v)-5 b(ariable)31 b(is)g(not)f(set,)i(the)e -Fs(select)f Ft(command)h(prompts)f(with)h(`)p Fs(#?)g -Ft(')150 1121 y Fs(PS4)336 b Ft(The)20 b(v)-5 b(alue)22 -b(is)e(the)h(prompt)f(prin)m(ted)h(b)s(efore)f(the)h(command)g(line)g -(is)g(ec)m(ho)s(ed)g(when)f(the)h(`)p Fs(-x)p Ft(')630 -1230 y(option)32 b(is)f(set)h(\(see)g(Section)h(4.3.1)g([The)e(Set)g -(Builtin],)i(page)f(49\).)45 b(The)31 b(\014rst)f(c)m(haracter)630 -1340 y(of)k Fs(PS4)g Ft(is)g(replicated)i(m)m(ultiple)f(times,)h(as)e -(necessary)-8 b(,)37 b(to)e(indicate)g(m)m(ultiple)g(lev)m(els)h(of)630 -1450 y(indirection.)41 b(The)30 b(default)h(is)f(`)p -Fs(+)g Ft('.)150 1614 y Fs(PWD)336 b Ft(The)30 b(curren)m(t)g(w)m +(command)870 3203 y Fs(set)47 b(-o)g(posix)630 3338 y +Ft(had)30 b(b)s(een)f(executed.)150 3499 y Fs(PPID)288 +b Ft(The)30 b(pro)s(cess)g Fl(id)g Ft(of)h(the)f(shell's)h(paren)m(t)g +(pro)s(cess.)40 b(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8 +b(.)150 3660 y Fs(PROMPT_COMMAND)630 3769 y Ft(If)32 +b(set,)h(the)f(v)-5 b(alue)33 b(is)f(in)m(terpreted)g(as)g(a)h(command) +f(to)h(execute)g(b)s(efore)f(the)g(prin)m(ting)g(of)630 +3879 y(eac)m(h)g(primary)d(prompt)g(\()p Fs($PS1)p Ft(\).)150 +4040 y Fs(PS3)336 b Ft(The)34 b(v)-5 b(alue)35 b(of)f(this)g(v)-5 +b(ariable)35 b(is)g(used)e(as)i(the)f(prompt)g(for)g(the)g +Fs(select)f Ft(command.)52 b(If)630 4149 y(this)30 b(v)-5 +b(ariable)31 b(is)g(not)f(set,)i(the)e Fs(select)f Ft(command)h +(prompts)f(with)h(`)p Fs(#?)g Ft(')150 4310 y Fs(PS4)336 +b Ft(The)33 b(v)-5 b(alue)34 b(is)g(the)g(prompt)f(prin)m(ted)g(b)s +(efore)g(the)h(command)f(line)h(is)g(ec)m(ho)s(ed)g(when)f(the)630 +4419 y(`)p Fs(-x)p Ft(')23 b(option)h(is)g(set)g(\(see)g(Section)h(4.3) +f([The)f(Set)h(Builtin],)i(page)e(53\).)40 b(The)23 b(\014rst)f(c)m +(haracter)630 4529 y(of)34 b Fs(PS4)g Ft(is)g(replicated)i(m)m(ultiple) +f(times,)h(as)e(necessary)-8 b(,)37 b(to)e(indicate)g(m)m(ultiple)g +(lev)m(els)h(of)630 4639 y(indirection.)41 b(The)30 b(default)h(is)f(`) +p Fs(+)g Ft('.)150 4799 y Fs(PWD)336 b Ft(The)30 b(curren)m(t)g(w)m (orking)h(directory)g(as)f(set)h(b)m(y)f(the)h Fs(cd)f -Ft(builtin.)150 1778 y Fs(RANDOM)192 b Ft(Eac)m(h)30 +Ft(builtin.)150 4960 y Fs(RANDOM)192 b Ft(Eac)m(h)30 b(time)g(this)f(parameter)g(is)g(referenced,)h(a)f(random)g(in)m(teger) -h(b)s(et)m(w)m(een)g(0)f(and)g(32767)630 1888 y(is)i(generated.)43 +h(b)s(et)m(w)m(een)g(0)f(and)g(32767)630 5070 y(is)i(generated.)43 b(Assigning)31 b(a)g(v)-5 b(alue)31 b(to)g(this)g(v)-5 b(ariable)31 b(seeds)g(the)g(random)f(n)m(um)m(b)s(er)f(gen-)630 -1998 y(erator.)150 2162 y Fs(REPLY)240 b Ft(The)30 b(default)g(v)-5 -b(ariable)32 b(for)e(the)g Fs(read)g Ft(builtin.)150 -2326 y Fs(SECONDS)144 b Ft(This)40 b(v)-5 b(ariable)41 -b(expands)f(to)h(the)g(n)m(um)m(b)s(er)e(of)i(seconds)g(since)g(the)f -(shell)h(w)m(as)g(started.)630 2436 y(Assignmen)m(t)i(to)g(this)g(v)-5 -b(ariable)43 b(resets)g(the)g(coun)m(t)g(to)g(the)g(v)-5 -b(alue)43 b(assigned,)j(and)c(the)630 2545 y(expanded)35 -b(v)-5 b(alue)36 b(b)s(ecomes)h(the)f(v)-5 b(alue)36 -b(assigned)g(plus)f(the)h(n)m(um)m(b)s(er)f(of)h(seconds)g(since)630 -2655 y(the)31 b(assignmen)m(t.)150 2819 y Fs(SHELL)240 +5179 y(erator.)150 5340 y Fs(REPLY)240 b Ft(The)30 b(default)g(v)-5 +b(ariable)32 b(for)e(the)g Fs(read)g Ft(builtin.)p eop +end +%%Page: 64 70 +TeXDict begin 64 69 bop 150 -116 a Ft(64)2572 b(Bash)31 +b(Reference)g(Man)m(ual)150 299 y Fs(SECONDS)144 b Ft(This)40 +b(v)-5 b(ariable)41 b(expands)f(to)h(the)g(n)m(um)m(b)s(er)e(of)i +(seconds)g(since)g(the)f(shell)h(w)m(as)g(started.)630 +408 y(Assignmen)m(t)i(to)g(this)g(v)-5 b(ariable)43 b(resets)g(the)g +(coun)m(t)g(to)g(the)g(v)-5 b(alue)43 b(assigned,)j(and)c(the)630 +518 y(expanded)35 b(v)-5 b(alue)36 b(b)s(ecomes)h(the)f(v)-5 +b(alue)36 b(assigned)g(plus)f(the)h(n)m(um)m(b)s(er)f(of)h(seconds)g +(since)630 628 y(the)31 b(assignmen)m(t.)150 779 y Fs(SHELL)240 b Ft(The)29 b(full)h(pathname)g(to)h(the)f(shell)g(is)g(k)m(ept)g(in)g (this)g(en)m(vironmen)m(t)g(v)-5 b(ariable.)42 b(If)29 -b(it)i(is)f(not)630 2929 y(set)36 b(when)f(the)h(shell)g(starts,)i -(Bash)e(assigns)h(to)f(it)h(the)f(full)f(pathname)h(of)g(the)g(curren)m -(t)630 3039 y(user's)30 b(login)h(shell.)150 3203 y Fs(SHELLOPTS)630 -3313 y Ft(A)g(colon-separated)h(list)f(of)g(enabled)f(shell)h(options.) +b(it)i(is)f(not)630 889 y(set)36 b(when)f(the)h(shell)g(starts,)i(Bash) +e(assigns)h(to)f(it)h(the)f(full)f(pathname)h(of)g(the)g(curren)m(t)630 +999 y(user's)30 b(login)h(shell.)150 1150 y Fs(SHELLOPTS)630 +1260 y Ft(A)g(colon-separated)h(list)f(of)g(enabled)f(shell)h(options.) 41 b(Eac)m(h)31 b(w)m(ord)f(in)g(the)h(list)g(is)g(a)g(v)-5 -b(alid)630 3422 y(argumen)m(t)24 b(for)f(the)h(`)p Fs(-o)p -Ft(')f(option)h(to)g(the)g Fs(set)f Ft(builtin)g(command)g(\(see)i -(Section)f(4.3.1)h([The)630 3532 y(Set)k(Builtin],)h(page)f(49\).)42 +b(alid)630 1369 y(argumen)m(t)29 b(for)g(the)g(`)p Fs(-o)p +Ft(')g(option)g(to)h(the)f Fs(set)f Ft(builtin)h(command)g(\(see)g +(Section)h(4.3)g([The)630 1479 y(Set)f(Builtin],)h(page)f(53\).)42 b(The)28 b(options)h(app)s(earing)f(in)g Fs(SHELLOPTS)e -Ft(are)j(those)h(rep)s(orted)630 3641 y(as)g(`)p Fs(on)p +Ft(are)j(those)h(rep)s(orted)630 1589 y(as)g(`)p Fs(on)p Ft(')f(b)m(y)h(`)p Fs(set)g(-o)p Ft('.)40 b(If)29 b(this)h(v)-5 b(ariable)30 b(is)g(in)f(the)h(en)m(vironmen)m(t)g(when)f(Bash)h -(starts)g(up,)630 3751 y(eac)m(h)41 b(shell)e(option)h(in)f(the)h(list) +(starts)g(up,)630 1698 y(eac)m(h)41 b(shell)e(option)h(in)f(the)h(list) g(will)f(b)s(e)g(enabled)h(b)s(efore)f(reading)g(an)m(y)h(startup)f -(\014les.)630 3861 y(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8 -b(.)150 4025 y Fs(SHLVL)240 b Ft(Incremen)m(ted)21 b(b)m(y)g(one)g(eac) +(\014les.)630 1808 y(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8 +b(.)150 1960 y Fs(SHLVL)240 b Ft(Incremen)m(ted)21 b(b)m(y)g(one)g(eac) m(h)h(time)f(a)h(new)e(instance)h(of)g(Bash)g(is)g(started.)38 -b(This)20 b(is)h(in)m(tended)630 4134 y(to)31 b(b)s(e)f(a)h(coun)m(t)g +b(This)20 b(is)h(in)m(tended)630 2069 y(to)31 b(b)s(e)f(a)h(coun)m(t)g (of)f(ho)m(w)h(deeply)f(y)m(our)g(Bash)h(shells)f(are)h(nested.)150 -4299 y Fs(TIMEFORMAT)630 4408 y Ft(The)f(v)-5 b(alue)32 +2221 y Fs(TIMEFORMAT)630 2330 y Ft(The)f(v)-5 b(alue)32 b(of)f(this)g(parameter)g(is)g(used)f(as)h(a)g(format)h(string)f(sp)s -(ecifying)f(ho)m(w)h(the)g(tim-)630 4518 y(ing)37 b(information)f(for)h +(ecifying)f(ho)m(w)h(the)g(tim-)630 2440 y(ing)37 b(information)f(for)h (pip)s(elines)f(pre\014xed)f(with)h(the)h Fs(time)e Ft(reserv)m(ed)i(w) -m(ord)f(should)g(b)s(e)630 4628 y(displa)m(y)m(ed.)k(The)27 +m(ord)f(should)g(b)s(e)630 2550 y(displa)m(y)m(ed.)k(The)27 b(`)p Fs(\045)p Ft(')h(c)m(haracter)h(in)m(tro)s(duces)e(an)h(escap)s -(e)g(sequence)g(that)g(is)f(expanded)g(to)630 4737 y(a)37 +(e)g(sequence)g(that)g(is)f(expanded)g(to)630 2659 y(a)37 b(time)g(v)-5 b(alue)36 b(or)h(other)f(information.)59 b(The)36 b(escap)s(e)g(sequences)h(and)e(their)i(meanings)630 -4847 y(are)31 b(as)f(follo)m(ws;)i(the)f(braces)f(denote)h(optional)h -(p)s(ortions.)630 5011 y Fs(\045\045)384 b Ft(A)30 b(literal)i(`)p -Fs(\045)p Ft('.)630 5176 y Fs(\045[)p Fj(p)11 b Fs(][l]R)85 -b Ft(The)30 b(elapsed)h(time)g(in)f(seconds.)630 5340 +2769 y(are)31 b(as)f(follo)m(ws;)i(the)f(braces)f(denote)h(optional)h +(p)s(ortions.)630 2921 y Fs(\045\045)384 b Ft(A)30 b(literal)i(`)p +Fs(\045)p Ft('.)630 3072 y Fs(\045[)p Fj(p)11 b Fs(][l]R)85 +b Ft(The)30 b(elapsed)h(time)g(in)f(seconds.)630 3224 y Fs(\045[)p Fj(p)11 b Fs(][l]U)85 b Ft(The)30 b(n)m(um)m(b)s(er)f(of)h -(CPU)g(seconds)h(sp)s(en)m(t)f(in)g(user)f(mo)s(de.)p -eop end -%%Page: 67 73 -TeXDict begin 67 72 bop 150 -116 a Ft(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(67)630 299 y Fs(\045[)p -Fj(p)11 b Fs(][l]S)85 b Ft(The)30 b(n)m(um)m(b)s(er)f(of)h(CPU)g -(seconds)h(sp)s(en)m(t)f(in)g(system)g(mo)s(de.)630 458 -y Fs(\045P)384 b Ft(The)30 b(CPU)g(p)s(ercen)m(tage,)i(computed)e(as)h -(\(\045U)f Fs(+)g Ft(\045S\))g(/)h(\045R.)630 618 y(The)23 -b(optional)j Fq(p)g Ft(is)e(a)g(digit)h(sp)s(ecifying)e(the)h +(CPU)g(seconds)h(sp)s(en)m(t)f(in)g(user)f(mo)s(de.)630 +3376 y Fs(\045[)p Fj(p)11 b Fs(][l]S)85 b Ft(The)30 b(n)m(um)m(b)s(er)f +(of)h(CPU)g(seconds)h(sp)s(en)m(t)f(in)g(system)g(mo)s(de.)630 +3528 y Fs(\045P)384 b Ft(The)30 b(CPU)g(p)s(ercen)m(tage,)i(computed)e +(as)h(\(\045U)f Fs(+)g Ft(\045S\))g(/)h(\045R.)630 3679 +y(The)23 b(optional)j Fq(p)g Ft(is)e(a)g(digit)h(sp)s(ecifying)e(the)h (precision,)i(the)e(n)m(um)m(b)s(er)f(of)h(fractional)h(digits)630 -727 y(after)36 b(a)f(decimal)i(p)s(oin)m(t.)55 b(A)35 +3789 y(after)36 b(a)f(decimal)i(p)s(oin)m(t.)55 b(A)35 b(v)-5 b(alue)36 b(of)f(0)h(causes)g(no)f(decimal)h(p)s(oin)m(t)f(or)h -(fraction)g(to)g(b)s(e)630 837 y(output.)48 b(A)m(t)34 +(fraction)g(to)g(b)s(e)630 3898 y(output.)48 b(A)m(t)34 b(most)f(three)g(places)h(after)f(the)g(decimal)h(p)s(oin)m(t)f(ma)m(y) -h(b)s(e)e(sp)s(eci\014ed;)i(v)-5 b(alues)630 946 y(of)31 +h(b)s(e)e(sp)s(eci\014ed;)i(v)-5 b(alues)630 4008 y(of)31 b Fq(p)h Ft(greater)g(than)e(3)h(are)f(c)m(hanged)h(to)g(3.)42 b(If)29 b Fq(p)k Ft(is)d(not)h(sp)s(eci\014ed,)f(the)h(v)-5 -b(alue)30 b(3)h(is)g(used.)630 1081 y(The)54 b(optional)h +b(alue)30 b(3)h(is)g(used.)630 4139 y(The)54 b(optional)h Fs(l)f Ft(sp)s(eci\014es)g(a)h(longer)f(format,)61 b(including)54 -b(min)m(utes,)61 b(of)54 b(the)g(form)630 1191 y Fq(MM)10 +b(min)m(utes,)61 b(of)54 b(the)g(form)630 4248 y Fq(MM)10 b Ft(m)p Fq(SS)p Ft(.)p Fq(FF)d Ft(s.)103 b(The)50 b(v)-5 b(alue)52 b(of)f Fq(p)j Ft(determines)d(whether)f(or)h(not)h(the)f -(fraction)h(is)630 1300 y(included.)630 1435 y(If)30 +(fraction)h(is)630 4358 y(included.)630 4489 y(If)30 b(this)g(v)-5 b(ariable)31 b(is)g(not)f(set,)i(Bash)e(acts)h(as)g(if)f -(it)h(had)f(the)h(v)-5 b(alue)870 1569 y Fs +(it)h(had)f(the)h(v)-5 b(alue)870 4619 y Fs ($'\\nreal\\t\0453lR\\nuser\\t\0453)o(lU\\n)o(sys\\)o(t\0453)o(lS')630 -1704 y Ft(If)37 b(the)g(v)-5 b(alue)38 b(is)f(n)m(ull,)i(no)f(timing)f +4750 y Ft(If)37 b(the)g(v)-5 b(alue)38 b(is)f(n)m(ull,)i(no)f(timing)f (information)h(is)f(displa)m(y)m(ed.)62 b(A)37 b(trailing)i(newline)e -(is)630 1813 y(added)30 b(when)f(the)i(format)f(string)h(is)f(displa)m -(y)m(ed.)150 1973 y Fs(TMOUT)240 b Ft(If)22 b(set)h(to)g(a)g(v)-5 +(is)630 4859 y(added)30 b(when)f(the)i(format)f(string)h(is)f(displa)m +(y)m(ed.)150 5011 y Fs(TMOUT)240 b Ft(If)22 b(set)h(to)g(a)g(v)-5 b(alue)23 b(greater)h(than)e(zero,)j Fs(TMOUT)d Ft(is)g(treated)i(as)e -(the)h(default)g(timeout)g(for)g(the)630 2082 y Fs(read)31 +(the)h(default)g(timeout)g(for)g(the)630 5121 y Fs(read)31 b Ft(builtin)h(\(see)h(Section)f(4.2)i([Bash)e(Builtins],)h(page)g -(41\).)47 b(The)32 b Fs(select)e Ft(command)630 2192 +(41\).)47 b(The)32 b Fs(select)e Ft(command)630 5230 y(\(see)f(Section)h(3.2.4.2)g([Conditional)g(Constructs],)e(page)i -(10\))f(terminates)g(if)g(input)e(do)s(es)630 2301 y(not)k(arriv)m(e)g +(10\))f(terminates)g(if)g(input)e(do)s(es)630 5340 y(not)k(arriv)m(e)g (after)g Fs(TMOUT)e Ft(seconds)h(when)f(input)h(is)g(coming)h(from)f(a) -h(terminal.)630 2436 y(In)25 b(an)h(in)m(teractiv)m(e)i(shell,)g(the)e -(v)-5 b(alue)26 b(is)g(in)m(terpreted)g(as)g(the)g(n)m(um)m(b)s(er)f -(of)h(seconds)f(to)i(w)m(ait)630 2545 y(for)32 b(input)f(after)i -(issuing)f(the)g(primary)g(prompt)f(when)g(the)i(shell)f(is)h(in)m -(teractiv)m(e.)49 b(Bash)630 2655 y(terminates)31 b(after)g(that)g(n)m -(um)m(b)s(er)e(of)i(seconds)f(if)g(input)g(do)s(es)g(not)g(arriv)m(e.) -150 2814 y Fs(TMPDIR)192 b Ft(If)39 b(set,)j(Bash)e(uses)f(its)h(v)-5 +h(terminal.)p eop end +%%Page: 65 71 +TeXDict begin 65 70 bop 150 -116 a Ft(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(65)630 299 y(In)28 +b(an)h(in)m(terativ)m(e)i(shell,)e(the)g(v)-5 b(alue)30 +b(is)e(in)m(terpreted)h(as)g(the)g(n)m(um)m(b)s(er)f(of)h(seconds)f(to) +i(w)m(ait)630 408 y(for)i(input)f(after)i(issuing)f(the)g(primary)g +(prompt)f(when)g(the)i(shell)f(is)h(in)m(teractiv)m(e.)49 +b(Bash)630 518 y(terminates)31 b(after)g(that)g(n)m(um)m(b)s(er)e(of)i +(seconds)f(if)g(input)g(do)s(es)g(not)g(arriv)m(e.)150 +677 y Fs(TMPDIR)192 b Ft(If)39 b(set,)j(Bash)e(uses)f(its)h(v)-5 b(alue)40 b(as)f(the)h(name)f(of)h(a)g(directory)g(in)f(whic)m(h)g -(Bash)h(creates)630 2924 y(temp)s(orary)30 b(\014les)g(for)g(the)h -(shell's)g(use.)150 3083 y Fs(UID)336 b Ft(The)30 b(n)m(umeric)g(real)h +(Bash)h(creates)630 787 y(temp)s(orary)30 b(\014les)g(for)g(the)h +(shell's)g(use.)150 946 y Fs(UID)336 b Ft(The)30 b(n)m(umeric)g(real)h (user)f(id)g(of)g(the)h(curren)m(t)f(user.)40 b(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8 b(.)p eop end -%%Page: 68 74 -TeXDict begin 68 73 bop 150 -116 a Ft(68)2572 b(Bash)31 +%%Page: 66 72 +TeXDict begin 66 71 bop 150 -116 a Ft(66)2572 b(Bash)31 b(Reference)g(Man)m(ual)p eop end -%%Page: 69 75 -TeXDict begin 69 74 bop 150 -116 a Ft(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(69)150 299 y Fo(6)80 +%%Page: 67 73 +TeXDict begin 67 72 bop 150 -116 a Ft(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(67)150 299 y Fo(6)80 b(Bash)54 b(F)-13 b(eatures)275 537 y Ft(This)29 b(section)j(describ)s (es)d(features)i(unique)e(to)j(Bash.)150 798 y Fr(6.1)68 b(In)l(v)l(oking)46 b(Bash)390 1017 y Fs(bash)h([long-opt])e([-ir])h @@ -9531,42 +9108,41 @@ b Fs([)p Fj(ar-)390 1346 y(gument)g Fs(...)o(])390 1455 y(bash)47 b([long-opt])e(-s)i([-abefhkmnptuvxdBCDHP])42 b([-o)k Fj(option)11 b Fs(])46 b([-O)h Fj(shopt_option)11 b Fs(])43 b([)p Fj(ar-)390 1565 y(gument)57 b Fs(...)o(])275 -1701 y Ft(In)22 b(addition)i(to)g(the)g(single-c)m(haracter)i(shell)e -(command-line)g(options)f(\(see)i(Section)f(4.3.1)i([The)d(Set)150 -1810 y(Builtin],)k(page)e(49\),)i(there)e(are)g(sev)m(eral)h(m)m +1701 y Ft(In)28 b(addition)i(to)g(the)f(single-c)m(haracter)j(shell)e +(command-line)g(options)g(\(see)g(Section)g(4.3)h([The)e(Set)150 +1810 y(Builtin],)e(page)e(53\),)i(there)e(are)g(sev)m(eral)h(m)m (ulti-c)m(haracter)h(options)e(that)g(y)m(ou)g(can)g(use.)38 b(These)25 b(options)150 1920 y(m)m(ust)30 b(app)s(ear)g(on)g(the)h (command)f(line)h(b)s(efore)f(the)g(single-c)m(haracter)j(options)e(to) g(b)s(e)f(recognized.)150 2081 y Fs(--debugger)630 2191 y Ft(Arrange)j(for)g(the)g(debugger)g(pro\014le)g(to)h(b)s(e)e (executed)i(b)s(efore)f(the)g(shell)g(starts.)49 b(T)-8 -b(urns)630 2301 y(on)25 b(extended)g(debugging)g(mo)s(de)f(\(see)i -(Section)g(4.3.2)h([The)d(Shopt)h(Builtin],)i(page)e(52)h(for)630 -2410 y(a)35 b(description)f(of)h(the)g Fs(extdebug)d -Ft(option)j(to)g(the)f Fs(shopt)f Ft(builtin\))i(and)f(shell)g -(function)630 2520 y(tracing)d(\(see)g(Section)h(4.3.1)g([The)e(Set)g -(Builtin],)h(page)g(49)h(for)e(a)g(description)h(of)f(the)h -Fs(-o)630 2629 y(functrace)d Ft(option\).)150 2790 y -Fs(--dump-po-strings)630 2900 y Ft(A)37 b(list)g(of)f(all)i -(double-quoted)e(strings)g(preceded)g(b)m(y)h(`)p Fs($)p -Ft(')f(is)h(prin)m(ted)f(on)g(the)h(standard)630 3009 -y(output)24 b(in)h(the)g Fl(gnu)f Fs(gettext)f Ft(PO)i(\(p)s(ortable)g -(ob)5 b(ject\))26 b(\014le)f(format.)39 b(Equiv)-5 b(alen)m(t)26 -b(to)f(`)p Fs(-D)p Ft(')630 3119 y(except)31 b(for)f(the)h(output)f -(format.)150 3280 y Fs(--dump-strings)630 3389 y Ft(Equiv)-5 -b(alen)m(t)31 b(to)g(`)p Fs(-D)p Ft('.)150 3550 y Fs(--help)192 -b Ft(Displa)m(y)32 b(a)e(usage)h(message)h(on)e(standard)g(output)g -(and)f(exit)j(successfully)-8 b(.)150 3711 y Fs(--init-file)27 -b Fj(filename)150 3820 y Fs(--rcfile)h Fj(filename)630 -3930 y Ft(Execute)42 b(commands)f(from)f Fq(\014lename)47 -b Ft(\(instead)42 b(of)f(`)p Fs(~/.bashrc)p Ft('\))e(in)i(an)g(in)m -(teractiv)m(e)630 4039 y(shell.)150 4200 y Fs(--login)144 -b Ft(Equiv)-5 b(alen)m(t)31 b(to)g(`)p Fs(-l)p Ft('.)150 -4361 y Fs(--noediting)630 4471 y Ft(Do)h(not)e(use)h(the)g -Fl(gnu)f Ft(Readline)i(library)e(\(see)h(Chapter)g(8)g([Command)f(Line) -g(Editing],)630 4580 y(page)h(91\))h(to)f(read)f(command)g(lines)h -(when)e(the)i(shell)f(is)h(in)m(teractiv)m(e.)150 4741 -y Fs(--noprofile)630 4850 y Ft(Don't)h(load)f(the)g(system-wide)g +b(urns)630 2301 y(on)40 b(extended)g(debugging)g(mo)s(de)g(\(see)h +(Section)f(4.2)h([Bash)g(Builtins],)i(page)e(41)g(for)f(a)630 +2410 y(description)i(of)g(the)f Fs(extdebug)f Ft(option)i(to)g(the)g +Fs(shopt)f Ft(builtin\))g(and)g(shell)h(function)630 +2520 y(tracing)36 b(\(see)g(Section)g(4.3)h([The)e(Set)g(Builtin],)j +(page)e(53)g(for)f(a)g(description)h(of)f(the)h Fs(-o)630 +2629 y(functrace)28 b Ft(option\).)150 2790 y Fs(--dump-po-strings)630 +2900 y Ft(A)37 b(list)g(of)f(all)i(double-quoted)e(strings)g(preceded)g +(b)m(y)h(`)p Fs($)p Ft(')f(is)h(prin)m(ted)f(on)g(the)h(standard)630 +3009 y(output)24 b(in)h(the)g Fl(gnu)f Fs(gettext)f Ft(PO)i(\(p)s +(ortable)g(ob)5 b(ject\))26 b(\014le)f(format.)39 b(Equiv)-5 +b(alen)m(t)26 b(to)f(`)p Fs(-D)p Ft(')630 3119 y(except)31 +b(for)f(the)h(output)f(format.)150 3280 y Fs(--dump-strings)630 +3389 y Ft(Equiv)-5 b(alen)m(t)31 b(to)g(`)p Fs(-D)p Ft('.)150 +3550 y Fs(--help)192 b Ft(Displa)m(y)32 b(a)e(usage)h(message)h(on)e +(standard)g(output)g(and)f(exit)j(sucessfully)-8 b(.)150 +3711 y Fs(--init-file)27 b Fj(filename)150 3820 y Fs(--rcfile)h +Fj(filename)630 3930 y Ft(Execute)42 b(commands)f(from)f +Fq(\014lename)47 b Ft(\(instead)42 b(of)f(`)p Fs(~/.bashrc)p +Ft('\))e(in)i(an)g(in)m(teractiv)m(e)630 4039 y(shell.)150 +4200 y Fs(--login)144 b Ft(Equiv)-5 b(alen)m(t)31 b(to)g(`)p +Fs(-l)p Ft('.)150 4361 y Fs(--noediting)630 4471 y Ft(Do)h(not)e(use)h +(the)g Fl(gnu)f Ft(Readline)i(library)e(\(see)h(Chapter)g(8)g([Command) +f(Line)g(Editing],)630 4580 y(page)h(89\))h(to)f(read)f(command)g +(lines)h(when)e(the)i(shell)f(is)h(in)m(teractiv)m(e.)150 +4741 y Fs(--noprofile)630 4850 y Ft(Don't)h(load)f(the)g(system-wide)g (startup)f(\014le)g(`)p Fs(/etc/profile)p Ft(')e(or)j(an)m(y)g(of)g (the)f(p)s(ersonal)630 4960 y(initialization)g(\014les)d(`)p Fs(~/.bash_profile)p Ft(',)e(`)p Fs(~/.bash_login)p Ft(',)g(or)i(`)p @@ -9576,19 +9152,19 @@ Ft(Don't)31 b(read)g(the)f(`)p Fs(~/.bashrc)p Ft(')f(initialization)k (\014le)d(in)g(an)h(in)m(teractiv)m(e)i(shell.)41 b(This)30 b(is)g(on)630 5340 y(b)m(y)g(default)h(if)f(the)h(shell)f(is)h(in)m(v)m (ok)m(ed)h(as)e Fs(sh)p Ft(.)p eop end -%%Page: 70 76 -TeXDict begin 70 75 bop 150 -116 a Ft(70)2572 b(Bash)31 +%%Page: 68 74 +TeXDict begin 68 73 bop 150 -116 a Ft(68)2572 b(Bash)31 b(Reference)g(Man)m(ual)150 299 y Fs(--posix)144 b Ft(Change)24 b(the)h(b)s(eha)m(vior)f(of)g(Bash)h(where)e(the)i(default)f(op)s (eration)h(di\013ers)f(from)f(the)i Fl(posix)630 408 y Ft(standard)35 b(to)h(matc)m(h)g(the)g(standard.)55 b(This)35 b(is)h(in)m(tended)f(to)h(mak)m(e)h(Bash)f(b)s(eha)m(v)m(e)g (as)g(a)630 518 y(strict)26 b(sup)s(erset)e(of)h(that)g(standard.)38 -b(See)26 b(Section)f(6.11)i([Bash)e(POSIX)f(Mo)s(de],)j(page)f(82,)630 +b(See)26 b(Section)f(6.11)i([Bash)e(POSIX)f(Mo)s(de],)j(page)f(80,)630 628 y(for)k(a)h(description)f(of)h(the)f(Bash)h Fl(posix)f Ft(mo)s(de.)150 787 y Fs(--restricted)630 897 y Ft(Mak)m(e)54 b(the)e(shell)g(a)h(restricted)g(shell)f(\(see)h(Section)g(6.10)h([The) -d(Restricted)j(Shell],)630 1006 y(page)31 b(82\).)150 +d(Restricted)j(Shell],)630 1006 y(page)31 b(80\).)150 1166 y Fs(--verbose)630 1275 y Ft(Equiv)-5 b(alen)m(t)31 b(to)g(`)p Fs(-v)p Ft('.)41 b(Prin)m(t)30 b(shell)h(input)e(lines)i(as) g(they're)f(read.)150 1435 y Fs(--version)630 1544 y @@ -9606,7 +9182,7 @@ b(ailable)32 b(with)e(the)h Fs(set)e Ft(builtin.)150 y Fs(-i)384 b Ft(F)-8 b(orce)22 b(the)g(shell)f(to)g(run)f(in)m (teractiv)m(ely)-8 b(.)41 b(In)m(teractiv)m(e)23 b(shells)e(are)h (describ)s(ed)d(in)i(Section)h(6.3)630 2680 y([In)m(teractiv)m(e)33 -b(Shells],)e(page)g(73.)150 2839 y Fs(-l)384 b Ft(Mak)m(e)33 +b(Shells],)e(page)g(71.)150 2839 y Fs(-l)384 b Ft(Mak)m(e)33 b(this)e(shell)h(act)g(as)g(if)f(it)h(had)f(b)s(een)f(directly)i(in)m (v)m(ok)m(ed)h(b)m(y)f(login.)44 b(When)31 b(the)h(shell)630 2949 y(is)37 b(in)m(teractiv)m(e,)43 b(this)37 b(is)g(equiv)-5 @@ -9617,11 +9193,11 @@ Fs(exec)30 b(-l)g(bash)p Ft('.)630 3059 y(When)h(the)g(shell)h(is)f Ft(')43 b(or)h(`)p Fs(exec)29 b(bash)g(--login)p Ft(')42 b(will)i(replace)h(the)f(curren)m(t)f(shell)h(with)g(a)630 3278 y(Bash)26 b(login)g(shell.)39 b(See)26 b(Section)g(6.2)h([Bash)e -(Startup)g(Files],)j(page)e(71,)i(for)d(a)h(description)630 +(Startup)g(Files],)j(page)e(69,)i(for)d(a)h(description)630 3387 y(of)31 b(the)f(sp)s(ecial)h(b)s(eha)m(vior)g(of)f(a)h(login)g (shell.)150 3547 y Fs(-r)384 b Ft(Mak)m(e)54 b(the)e(shell)g(a)h (restricted)g(shell)f(\(see)h(Section)g(6.10)h([The)d(Restricted)j -(Shell],)630 3656 y(page)31 b(82\).)150 3816 y Fs(-s)384 +(Shell],)630 3656 y(page)31 b(80\).)150 3816 y Fs(-s)384 b Ft(If)24 b(this)h(option)h(is)f(presen)m(t,)h(or)f(if)g(no)f(argumen) m(ts)i(remain)e(after)i(option)f(pro)s(cessing,)h(then)630 3925 y(commands)i(are)h(read)g(from)f(the)h(standard)f(input.)39 @@ -9639,21 +9215,21 @@ b(implies)i(the)f(`)p Fs(-n)p Ft(')h(option;)g(no)f(commands)g(will)h (b)s(e)e(executed.)150 4682 y Fs([-+]O)g([)p Fj(shopt_option)11 b Fs(])630 4792 y Fq(shopt)p 854 4792 28 4 v 40 w(option)44 b Ft(is)g(one)h(of)f(the)g(shell)h(options)f(accepted)h(b)m(y)f(the)h -Fs(shopt)d Ft(builtin)i(\(see)630 4902 y(Section)28 b(4.3.2)g([The)f -(Shopt)f(Builtin],)i(page)f(52\).)41 b(If)26 b Fq(shopt)p -2690 4902 V 40 w(option)h Ft(is)g(presen)m(t,)h(`)p Fs(-O)p -Ft(')f(sets)630 5011 y(the)40 b(v)-5 b(alue)40 b(of)f(that)h(option;)45 -b(`)p Fs(+O)p Ft(')40 b(unsets)e(it.)69 b(If)39 b Fq(shopt)p -2631 5011 V 40 w(option)h Ft(is)f(not)h(supplied,)h(the)630 -5121 y(names)e(and)g(v)-5 b(alues)40 b(of)g(the)g(shell)f(options)h -(accepted)h(b)m(y)e Fs(shopt)f Ft(are)i(prin)m(ted)f(on)h(the)630 -5230 y(standard)33 b(output.)50 b(If)33 b(the)h(in)m(v)m(o)s(cation)i -(option)e(is)g(`)p Fs(+O)p Ft(',)g(the)g(output)f(is)h(displa)m(y)m(ed) -g(in)g(a)630 5340 y(format)d(that)g(ma)m(y)g(b)s(e)e(reused)h(as)h -(input.)p eop end -%%Page: 71 77 -TeXDict begin 71 76 bop 150 -116 a Ft(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(71)150 299 y Fs(--)384 +Fs(shopt)d Ft(builtin)i(\(see)630 4902 y(Chapter)29 b(4)i([Shell)f +(Builtin)g(Commands],)g(page)g(35\).)42 b(If)30 b Fq(shopt)p +2856 4902 V 39 w(option)h Ft(is)f(presen)m(t,)g(`)p Fs(-O)p +Ft(')630 5011 y(sets)39 b(the)f(v)-5 b(alue)39 b(of)f(that)h(option;)k +(`)p Fs(+O)p Ft(')38 b(unsets)g(it.)65 b(If)38 b Fq(shopt)p +2803 5011 V 39 w(option)h Ft(is)f(not)h(supplied,)630 +5121 y(the)28 b(names)f(and)h(v)-5 b(alues)28 b(of)f(the)h(shell)g +(options)g(accepted)h(b)m(y)f Fs(shopt)e Ft(are)i(prin)m(ted)f(on)h +(the)630 5230 y(standard)33 b(output.)50 b(If)33 b(the)h(in)m(v)m(o)s +(cation)i(option)e(is)g(`)p Fs(+O)p Ft(',)g(the)g(output)f(is)h(displa) +m(y)m(ed)g(in)g(a)630 5340 y(format)d(that)g(ma)m(y)g(b)s(e)e(reused)h +(as)h(input.)p eop end +%%Page: 69 75 +TeXDict begin 69 74 bop 150 -116 a Ft(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(69)150 299 y Fs(--)384 b Ft(A)38 b Fs(--)g Ft(signals)g(the)h(end)e(of)i(options)f(and)g (disables)g(further)f(option)h(pro)s(cessing.)64 b(An)m(y)630 408 y(argumen)m(ts)31 b(after)g(the)f Fs(--)g Ft(are)h(treated)g(as)g @@ -9669,7 +9245,7 @@ b(and)42 b(whose)h(input)f(and)g(output)g(are)h(b)s(oth)g(connected)g (to)150 1044 y(terminals)22 b(\(as)h(determined)f(b)m(y)g Fs(isatty\(3\))p Ft(\),)f(or)i(one)f(started)g(with)g(the)g(`)p Fs(-i)p Ft(')g(option.)39 b(See)22 b(Section)h(6.3)150 -1153 y([In)m(teractiv)m(e)33 b(Shells],)e(page)g(73,)g(for)f(more)h +1153 y([In)m(teractiv)m(e)33 b(Shells],)e(page)g(71,)g(for)f(more)h (information.)275 1293 y(If)38 b(argumen)m(ts)h(remain)g(after)g (option)h(pro)s(cessing,)h(and)d(neither)h(the)g(`)p Fs(-c)p Ft(')f(nor)h(the)g(`)p Fs(-s)p Ft(')f(option)150 @@ -9685,14 +9261,14 @@ b(reads)f(and)g(executes)h(commands)f(from)g(this)g(\014le,)i(then)e (status)e(of)h(the)g(last)g(command)f(executed)h(in)g(the)f(script.)40 b(If)26 b(no)g(commands)g(are)h(executed,)150 1951 y(the)k(exit)g (status)g(is)f(0.)150 2221 y Fr(6.2)68 b(Bash)45 b(Startup)g(Files)275 -2470 y Ft(This)34 b(section)i(describ)s(es)e(ho)m(w)h(Bash)g(executes)i -(its)e(startup)g(\014les.)54 b(If)35 b(an)m(y)g(of)h(the)f(\014les)g -(exist)h(but)150 2579 y(cannot)26 b(b)s(e)e(read,)i(Bash)f(rep)s(orts)g +2470 y Ft(This)36 b(section)j(describs)e(ho)m(w)g(Bash)h(executes)h +(its)f(startup)f(\014les.)62 b(If)37 b(an)m(y)h(of)g(the)g(\014les)f +(exist)i(but)150 2579 y(cannot)26 b(b)s(e)e(read,)i(Bash)f(rep)s(orts)g (an)g(error.)38 b(Tildes)25 b(are)h(expanded)e(in)g(\014le)i(names)f (as)g(describ)s(ed)f(ab)s(o)m(v)m(e)150 2689 y(under)29 b(Tilde)h(Expansion)g(\(see)h(Section)g(3.5.2)i([Tilde)d(Expansion],)g (page)i(18\).)275 2828 y(In)m(teractiv)m(e)g(shells)f(are)g(describ)s -(ed)e(in)h(Section)h(6.3)h([In)m(teractiv)m(e)h(Shells],)d(page)h(73.) +(ed)e(in)h(Section)h(6.3)h([In)m(teractiv)m(e)h(Shells],)d(page)h(71.) 150 3063 y Fk(In)m(v)m(ok)m(ed)40 b(as)h(an)f(in)m(teractiv)m(e)f (login)j(shell,)g(or)g(with)e(`)p Fi(--login)p Fk(')275 3312 y Ft(When)e(Bash)g(is)h(in)m(v)m(ok)m(ed)h(as)e(an)g(in)m @@ -9725,8 +9301,8 @@ b(,)33 b(y)m(our)d(`)p Fs(~/.bash_profile)p Ft(')d(con)m(tains)32 b(the)e(line)390 5200 y Fs(if)47 b([)h(-f)f(~/.bashrc)e(];)i(then)g(.)g (~/.bashrc;)e(fi)150 5340 y Ft(after)31 b(\(or)g(b)s(efore\))f(an)m(y)h (login-sp)s(eci\014c)g(initializations.)p eop end -%%Page: 72 78 -TeXDict begin 72 77 bop 150 -116 a Ft(72)2572 b(Bash)31 +%%Page: 70 76 +TeXDict begin 70 75 bop 150 -116 a Ft(70)2572 b(Bash)31 b(Reference)g(Man)m(ual)150 299 y Fk(In)m(v)m(ok)m(ed)40 b(non-in)m(teractiv)m(ely)275 571 y Ft(When)24 b(Bash)h(is)g(started)g (non-in)m(teractiv)m(ely)-8 b(,)29 b(to)d(run)d(a)i(shell)g(script,)h @@ -9796,9 +9372,9 @@ y(used)25 b(to)h(force)g(another)g(\014le)f(to)i(b)s(e)e(read,)h(but)f Fs(rshd)g Ft(do)s(es)g(not)g(generally)i(in)m(v)m(ok)m(e)h(the)d(shell) h(with)f(those)150 5340 y(options)31 b(or)f(allo)m(w)i(them)e(to)h(b)s (e)f(sp)s(eci\014ed.)p eop end -%%Page: 73 79 -TeXDict begin 73 78 bop 150 -116 a Ft(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(73)150 299 y Fk(In)m(v)m(ok)m(ed)40 +%%Page: 71 77 +TeXDict begin 71 76 bop 150 -116 a Ft(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(71)150 299 y Fk(In)m(v)m(ok)m(ed)40 b(with)g(unequal)h(e\013ectiv)m(e)e(and)i(real)g Fh(uid/gid)p Fk(s)275 538 y Ft(If)26 b(Bash)i(is)f(started)h(with)f(the)g (e\013ectiv)m(e)j(user)d(\(group\))g(id)g(not)h(equal)g(to)g(the)f @@ -9816,10 +9392,10 @@ b(If)27 b(the)h Fs(-p)g Ft(option)g(is)g(supplied)e(at)j(in)m(v)m(o)s 1540 y Fk(6.3.1)63 b(What)40 b(is)h(an)g(In)m(teractiv)m(e)e(Shell?)275 1779 y Ft(An)25 b(in)m(teractiv)m(e)j(shell)d(is)h(one)f(started)h (without)g(non-option)f(argumen)m(ts,)i(unless)e(`)p -Fs(-s)p Ft(')g(is)g(sp)s(eci\014ed,)150 1889 y(without)34 -b(sp)s(ecifying)h(the)f(`)p Fs(-c)p Ft(')g(option,)j(and)c(whose)h -(input)g(and)g(error)g(output)g(are)g(b)s(oth)g(connected)150 -1998 y(to)d(terminals)g(\(as)g(determined)f(b)m(y)g Fs(isatty\(3\))p +Fs(-s)p Ft(')g(is)g(sp)s(eci\014ed,)150 1889 y(without)33 +b(sp)s(eci\014ying)f(the)h(`)p Fs(-c)p Ft(')f(option,)i(and)e(whose)h +(input)e(and)i(error)f(output)g(are)h(b)s(oth)f(connected)150 +1998 y(to)f(terminals)g(\(as)g(determined)f(b)m(y)g Fs(isatty\(3\))p Ft(\),)f(or)h(one)h(started)f(with)g(the)h(`)p Fs(-i)p Ft(')f(option.)275 2128 y(An)g(in)m(teractiv)m(e)j(shell)d(generally)i (reads)e(from)g(and)g(writes)g(to)h(a)g(user's)f(terminal.)275 @@ -9848,15 +9424,15 @@ b(Shell)k(Beha)m(vior)275 4752 y Ft(When)30 b(the)g(shell)h(is)f (eha)m(vior)g(in)f(sev)m(eral)h(w)m(a)m(ys.)199 4881 y(1.)61 b(Startup)37 b(\014les)g(are)h(read)f(and)g(executed)h(as)f (describ)s(ed)g(in)g(Section)h(6.2)g([Bash)g(Startup)e(Files],)330 -4991 y(page)31 b(71.)199 5121 y(2.)61 b(Job)35 b(Con)m(trol)g(\(see)h -(Chapter)f(7)g([Job)g(Con)m(trol],)i(page)f(87\))g(is)f(enabled)g(b)m +4991 y(page)31 b(69.)199 5121 y(2.)61 b(Job)35 b(Con)m(trol)g(\(see)h +(Chapter)f(7)g([Job)g(Con)m(trol],)i(page)f(85\))g(is)f(enabled)g(b)m (y)g(default.)55 b(When)34 b(job)330 5230 y(con)m(trol)h(is)f(in)f (e\013ect,)k(Bash)d(ignores)g(the)g(k)m(eyb)s(oard-generated)h(job)e (con)m(trol)i(signals)g Fs(SIGTTIN)p Ft(,)330 5340 y Fs(SIGTTOU)p Ft(,)29 b(and)g Fs(SIGTSTP)p Ft(.)p eop end -%%Page: 74 80 -TeXDict begin 74 79 bop 150 -116 a Ft(74)2572 b(Bash)31 +%%Page: 72 78 +TeXDict begin 72 77 bop 150 -116 a Ft(72)2572 b(Bash)31 b(Reference)g(Man)m(ual)199 299 y(3.)61 b(Bash)39 b(expands)f(and)g (displa)m(ys)h Fs(PS1)f Ft(b)s(efore)h(reading)g(the)g(\014rst)f(line)h (of)g(a)g(command,)i(and)d(ex-)330 408 y(pands)30 b(and)g(displa)m(ys)h @@ -9866,24 +9442,24 @@ Fs(PS2)e Ft(b)s(efore)i(reading)g(the)g(second)f(and)h(subsequen)m(t)f b(of)f(the)h Fs(PROMPT_COMMAND)22 b Ft(v)-5 b(ariable)27 b(as)g(a)f(command)g(b)s(efore)g(prin)m(ting)330 779 y(the)31 b(primary)e(prompt,)h Fs($PS1)f Ft(\(see)i(Section)g(5.2)h -([Bash)f(V)-8 b(ariables],)32 b(page)f(59\).)199 930 +([Bash)f(V)-8 b(ariables],)32 b(page)f(57\).)199 930 y(5.)61 b(Readline)30 b(\(see)h(Chapter)e(8)h([Command)e(Line)i -(Editing],)g(page)g(91\))h(is)f(used)f(to)h(read)f(commands)330 +(Editing],)g(page)g(89\))h(is)f(used)f(to)h(read)f(commands)330 1039 y(from)h(the)g(user's)g(terminal.)199 1190 y(6.)61 b(Bash)36 b(insp)s(ects)g(the)h(v)-5 b(alue)37 b(of)f(the)g Fs(ignoreeof)e Ft(option)j(to)g Fs(set)29 b(-o)36 b Ft(instead)h(of)f (exiting)i(imme-)330 1300 y(diately)f(when)e(it)i(receiv)m(es)h(an)e Fs(EOF)f Ft(on)h(its)g(standard)f(input)g(when)h(reading)g(a)g(command) -g(\(see)330 1409 y(Section)31 b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g -(49\).)199 1560 y(7.)61 b(Command)43 b(history)h(\(see)h(Section)g(9.1) -g([Bash)f(History)h(F)-8 b(acilities],)51 b(page)45 b(117\))h(and)d +g(\(see)330 1409 y(Section)31 b(4.3)h([The)e(Set)g(Builtin],)i(page)f +(53\).)199 1560 y(7.)61 b(Command)43 b(history)h(\(see)h(Section)g(9.1) +g([Bash)f(History)h(F)-8 b(acilities],)51 b(page)45 b(115\))h(and)d (history)330 1670 y(expansion)23 b(\(see)i(Section)f(9.3)h([History)f -(In)m(teraction],)j(page)d(119\))h(are)f(enabled)g(b)m(y)f(default.)39 +(In)m(teraction],)j(page)d(117\))h(are)f(enabled)g(b)m(y)f(default.)39 b(Bash)330 1779 y(will)23 b(sa)m(v)m(e)i(the)e(command)f(history)h(to)h (the)f(\014le)g(named)f(b)m(y)h Fs($HISTFILE)d Ft(when)i(an)h(in)m (teractiv)m(e)j(shell)330 1889 y(exits.)199 2040 y(8.)61 b(Alias)31 b(expansion)g(\(see)g(Section)g(6.6)g([Aliases],)i(page)e -(77\))h(is)e(p)s(erformed)f(b)m(y)h(default.)199 2191 +(75\))h(is)e(p)s(erformed)f(b)m(y)h(default.)199 2191 y(9.)61 b(In)24 b(the)g(absence)h(of)f(an)m(y)h(traps,)g(Bash)g (ignores)f Fs(SIGTERM)f Ft(\(see)i(Section)g(3.7.6)h([Signals],)g(page) f(31\).)154 2342 y(10.)61 b(In)26 b(the)h(absence)h(of)f(an)m(y)g @@ -9892,52 +9468,51 @@ f(31\).)154 2342 y(10.)61 b(In)26 b(the)h(absence)h(of)f(an)m(y)g b Fs(SIGINT)29 b Ft(will)h(in)m(terrupt)g(some)h(shell)g(builtins.)154 2602 y(11.)61 b(An)40 b(in)m(teractiv)m(e)j(login)e(shell)g(sends)e(a)i Fs(SIGHUP)d Ft(to)j(all)g(jobs)f(on)g(exit)h(if)g(the)f -Fs(huponexit)e Ft(shell)330 2712 y(option)31 b(has)f(b)s(een)g(enabled) +Fs(hupoxexit)e Ft(shell)330 2712 y(option)31 b(has)f(b)s(een)g(enabled) g(\(see)h(Section)g(3.7.6)i([Signals],)e(page)g(31\).)154 -2863 y(12.)61 b(The)26 b(`)p Fs(-n)p Ft(')f(in)m(v)m(o)s(cation)k -(option)d(is)g(ignored,)h(and)f(`)p Fs(set)k(-n)p Ft(')25 -b(has)h(no)g(e\013ect)i(\(see)e(Section)h(4.3.1)h([The)330 -2972 y(Set)j(Builtin],)g(page)g(49\).)154 3123 y(13.)61 -b(Bash)32 b(will)g(c)m(hec)m(k)i(for)e(mail)g(p)s(erio)s(dically)-8 -b(,)34 b(dep)s(ending)c(on)i(the)g(v)-5 b(alues)32 b(of)g(the)h -Fs(MAIL)p Ft(,)e Fs(MAILPATH)p Ft(,)330 3233 y(and)f -Fs(MAILCHECK)e Ft(shell)i(v)-5 b(ariables)31 b(\(see)h(Section)f(5.2)g -([Bash)g(V)-8 b(ariables],)32 b(page)f(59\).)154 3384 -y(14.)61 b(Expansion)32 b(errors)h(due)f(to)i(references)f(to)h(un)m(b) -s(ound)c(shell)j(v)-5 b(ariables)34 b(after)g(`)p Fs(set)29 -b(-u)p Ft(')k(has)g(b)s(een)330 3494 y(enabled)d(will)h(not)g(cause)g -(the)f(shell)h(to)g(exit)g(\(see)g(Section)h(4.3.1)g([The)e(Set)h -(Builtin],)g(page)g(49\).)154 3644 y(15.)61 b(The)48 -b(shell)h(will)f(not)h(exit)g(on)g(expansion)f(errors)g(caused)g(b)m(y) -h Fq(v)-5 b(ar)54 b Ft(b)s(eing)48 b(unset)g(or)h(n)m(ull)f(in)330 -3754 y Fs(${)p Fj(var)11 b Fs(:?)p Fj(word)g Fs(})26 -b Ft(expansions)k(\(see)h(Section)h(3.5.3)g([Shell)e(P)m(arameter)i -(Expansion],)e(page)h(19\).)154 3905 y(16.)61 b(Redirection)31 -b(errors)f(encoun)m(tered)h(b)m(y)f(shell)h(builtins)f(will)g(not)h -(cause)g(the)f(shell)h(to)g(exit.)154 4056 y(17.)61 b(When)26 -b(running)f(in)i Fl(posix)e Ft(mo)s(de,)j(a)f(sp)s(ecial)g(builtin)f -(returning)g(an)g(error)h(status)g(will)g(not)f(cause)330 -4166 y(the)31 b(shell)f(to)h(exit)h(\(see)f(Section)g(6.11)h([Bash)f -(POSIX)e(Mo)s(de],)i(page)g(82\).)154 4316 y(18.)61 b(A)34 -b(failed)g Fs(exec)f Ft(will)h(not)g(cause)g(the)g(shell)g(to)g(exit)h -(\(see)f(Section)h(4.1)g([Bourne)f(Shell)f(Builtins],)330 +2863 y(12.)61 b(The)31 b(`)p Fs(-n)p Ft(')g(in)m(v)m(o)s(cation)i +(option)e(is)h(ignored,)f(and)g(`)p Fs(set)f(-n)p Ft(')g(has)h(no)g +(e\013ect)i(\(see)f(Section)g(4.3)g([The)330 2972 y(Set)f(Builtin],)g +(page)g(53\).)154 3123 y(13.)61 b(Bash)32 b(will)g(c)m(hec)m(k)i(for)e +(mail)g(p)s(erio)s(dically)-8 b(,)34 b(dep)s(ending)c(on)i(the)g(v)-5 +b(alues)32 b(of)g(the)h Fs(MAIL)p Ft(,)e Fs(MAILPATH)p +Ft(,)330 3233 y(and)f Fs(MAILCHECK)e Ft(shell)i(v)-5 +b(ariables)31 b(\(see)h(Section)f(5.2)g([Bash)g(V)-8 +b(ariables],)32 b(page)f(57\).)154 3384 y(14.)61 b(Expansion)32 +b(errors)h(due)f(to)i(references)f(to)h(un)m(b)s(ound)c(shell)j(v)-5 +b(ariables)34 b(after)g(`)p Fs(set)29 b(-u)p Ft(')k(has)g(b)s(een)330 +3494 y(enabled)d(will)h(not)g(cause)g(the)f(shell)h(to)g(exit)g(\(see)g +(Section)h(4.3)f([The)f(Set)h(Builtin],)g(page)g(53\).)154 +3644 y(15.)61 b(The)48 b(shell)h(will)f(not)h(exit)g(on)g(expansion)f +(errors)g(caused)g(b)m(y)h Fq(v)-5 b(ar)54 b Ft(b)s(eing)48 +b(unset)g(or)h(n)m(ull)f(in)330 3754 y Fs(${)p Fj(var)11 +b Fs(:?)p Fj(word)g Fs(})26 b Ft(expansions)k(\(see)h(Section)h(3.5.3)g +([Shell)e(P)m(arameter)i(Expansion],)e(page)h(19\).)154 +3905 y(16.)61 b(Redirection)31 b(errors)f(encoun)m(tered)h(b)m(y)f +(shell)h(builtins)f(will)g(not)h(cause)g(the)f(shell)h(to)g(exit.)154 +4056 y(17.)61 b(When)26 b(running)f(in)i Fl(posix)e Ft(mo)s(de,)j(a)f +(sp)s(ecial)g(builtin)f(returning)g(an)g(error)h(status)g(will)g(not)f +(cause)330 4166 y(the)31 b(shell)f(to)h(exit)h(\(see)f(Section)g(6.11)h +([Bash)f(POSIX)e(Mo)s(de],)i(page)g(80\).)154 4316 y(18.)61 +b(A)34 b(failed)g Fs(exec)f Ft(will)h(not)g(cause)g(the)g(shell)g(to)g +(exit)h(\(see)f(Section)h(4.1)g([Bourne)f(Shell)f(Builtins],)330 4426 y(page)e(35\).)154 4577 y(19.)61 b(P)m(arser)31 b(syn)m(tax)f(errors)g(will)h(not)g(cause)g(the)f(shell)h(to)g(exit.) 154 4728 y(20.)61 b(Simple)21 b(sp)s(elling)h(correction)g(for)g (directory)g(argumen)m(ts)f(to)i(the)e Fs(cd)g Ft(builtin)g(is)h -(enabled)f(b)m(y)h(default)330 4838 y(\(see)35 b(the)g(description)f -(of)h(the)f Fs(cdspell)f Ft(option)h(to)i(the)e Fs(shopt)f -Ft(builtin)h(in)g(Section)h(4.3.2)h([The)330 4947 y(Shopt)30 -b(Builtin],)h(page)g(52\).)154 5098 y(21.)61 b(The)42 -b(shell)h(will)g(c)m(hec)m(k)h(the)f(v)-5 b(alue)43 b(of)f(the)h -Fs(TMOUT)e Ft(v)-5 b(ariable)44 b(and)e(exit)h(if)g(a)g(command)f(is)h -(not)330 5208 y(read)30 b(within)g(the)g(sp)s(eci\014ed)f(n)m(um)m(b)s -(er)g(of)i(seconds)f(after)g(prin)m(ting)g Fs($PS1)f -Ft(\(see)i(Section)g(5.2)h([Bash)330 5317 y(V)-8 b(ariables],)32 -b(page)f(59\).)p eop end -%%Page: 75 81 -TeXDict begin 75 80 bop 150 -116 a Ft(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(75)150 299 y Fr(6.4)68 +(enabled)f(b)m(y)h(default)330 4838 y(\(see)38 b(the)e(description)h +(of)g(the)f Fs(cdspell)f Ft(option)i(to)g(the)g Fs(shopt)e +Ft(builtin)h(in)h(Section)g(4.2)h([Bash)330 4947 y(Builtins],)31 +b(page)g(41\).)154 5098 y(21.)61 b(The)42 b(shell)h(will)g(c)m(hec)m(k) +h(the)f(v)-5 b(alue)43 b(of)f(the)h Fs(TMOUT)e Ft(v)-5 +b(ariable)44 b(and)e(exit)h(if)g(a)g(command)f(is)h(not)330 +5208 y(read)30 b(within)g(the)g(sp)s(eci\014ed)f(n)m(um)m(b)s(er)g(of)i +(seconds)f(after)g(prin)m(ting)g Fs($PS1)f Ft(\(see)i(Section)g(5.2)h +([Bash)330 5317 y(V)-8 b(ariables],)32 b(page)f(57\).)p +eop end +%%Page: 73 79 +TeXDict begin 73 78 bop 150 -116 a Ft(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(73)150 299 y Fr(6.4)68 b(Bash)45 b(Conditional)h(Expressions)275 540 y Ft(Conditional)38 b(expressions)g(are)h(used)f(b)m(y)g(the)g Fs([[)g Ft(comp)s(ound)f (command)h(and)g(the)g Fs(test)g Ft(and)f Fs([)150 650 @@ -10013,30 +9588,30 @@ b(not.)150 5230 y Fj(file1)39 b Fs(-ot)30 b Fj(file2)630 b(older)f(than)g Fq(\014le2)p Ft(,)i(or)e(if)g Fq(\014le2)38 b Ft(exists)31 b(and)f Fq(\014le1)38 b Ft(do)s(es)30 b(not.)p eop end -%%Page: 76 82 -TeXDict begin 76 81 bop 150 -116 a Ft(76)2572 b(Bash)31 +%%Page: 74 80 +TeXDict begin 74 79 bop 150 -116 a Ft(74)2572 b(Bash)31 b(Reference)g(Man)m(ual)150 299 y Fj(file1)39 b Fs(-ef)30 b Fj(file2)630 408 y Ft(T)-8 b(rue)30 b(if)g Fq(\014le1)38 b Ft(and)30 b Fq(\014le2)38 b Ft(refer)30 b(to)i(the)e(same)h(device)g (and)f(ino)s(de)g(n)m(um)m(b)s(ers.)150 570 y Fs(-o)g Fj(optname)630 679 y Ft(T)-8 b(rue)41 b(if)g(shell)g(option)h Fq(optname)47 b Ft(is)41 b(enabled.)73 b(The)41 b(list)h(of)f(options)g -(app)s(ears)g(in)g(the)630 789 y(description)h(of)f(the)h(`)p -Fs(-o)p Ft(')f(option)h(to)h(the)e Fs(set)g Ft(builtin)g(\(see)i -(Section)f(4.3.1)h([The)f(Set)630 898 y(Builtin],)31 -b(page)g(49\).)150 1060 y Fs(-z)f Fj(string)630 1169 -y Ft(T)-8 b(rue)30 b(if)g(the)h(length)g(of)f Fq(string)38 -b Ft(is)31 b(zero.)150 1330 y Fs(-n)f Fj(string)150 1440 -y(string)192 b Ft(T)-8 b(rue)30 b(if)g(the)h(length)g(of)f -Fq(string)38 b Ft(is)31 b(non-zero.)150 1601 y Fj(string1)39 -b Fs(==)30 b Fj(string2)630 1711 y Ft(T)-8 b(rue)33 b(if)h(the)g -(strings)f(are)h(equal.)51 b(`)p Fs(=)p Ft(')34 b(ma)m(y)g(b)s(e)f -(used)g(in)g(place)i(of)e(`)p Fs(==)p Ft(')h(for)f(strict)i -Fl(posix)630 1820 y Ft(compliance.)150 1981 y Fj(string1)k -Fs(!=)30 b Fj(string2)630 2091 y Ft(T)-8 b(rue)30 b(if)g(the)h(strings) -f(are)h(not)f(equal.)150 2252 y Fj(string1)39 b Fs(<)30 -b Fj(string2)630 2362 y Ft(T)-8 b(rue)30 b(if)g Fq(string1)38 -b Ft(sorts)31 b(b)s(efore)f Fq(string2)38 b Ft(lexicographically)33 +(app)s(ears)g(in)g(the)630 789 y(description)20 b(of)h(the)f(`)p +Fs(-o)p Ft(')g(option)h(to)g(the)g Fs(set)e Ft(builtin)h(\(see)h +(Section)g(4.3)g([The)g(Set)f(Builtin],)630 898 y(page)31 +b(53\).)150 1060 y Fs(-z)f Fj(string)630 1169 y Ft(T)-8 +b(rue)30 b(if)g(the)h(length)g(of)f Fq(string)38 b Ft(is)31 +b(zero.)150 1330 y Fs(-n)f Fj(string)150 1440 y(string)192 +b Ft(T)-8 b(rue)30 b(if)g(the)h(length)g(of)f Fq(string)38 +b Ft(is)31 b(non-zero.)150 1601 y Fj(string1)39 b Fs(==)30 +b Fj(string2)630 1711 y Ft(T)-8 b(rue)33 b(if)h(the)g(strings)f(are)h +(equal.)51 b(`)p Fs(=)p Ft(')34 b(ma)m(y)g(b)s(e)f(used)g(in)g(place)i +(of)e(`)p Fs(==)p Ft(')h(for)f(strict)i Fl(posix)630 +1820 y Ft(compliance.)150 1981 y Fj(string1)k Fs(!=)30 +b Fj(string2)630 2091 y Ft(T)-8 b(rue)30 b(if)g(the)h(strings)f(are)h +(not)f(equal.)150 2252 y Fj(string1)39 b Fs(<)30 b Fj(string2)630 +2362 y Ft(T)-8 b(rue)30 b(if)g Fq(string1)38 b Ft(sorts)31 +b(b)s(efore)f Fq(string2)38 b Ft(lexicographically)33 b(in)d(the)h(curren)m(t)f(lo)s(cale.)150 2523 y Fj(string1)39 b Fs(>)30 b Fj(string2)630 2632 y Ft(T)-8 b(rue)30 b(if)g Fq(string1)38 b Ft(sorts)31 b(after)g Fq(string2)38 b @@ -10073,9 +9648,9 @@ y Ft(v)-5 b(ariable)31 b(pre-incremen)m(t)g(and)f(pre-decremen)m(t)150 5018 y Fs(-)g(+)354 b Ft(unary)29 b(min)m(us)h(and)g(plus)150 5179 y Fs(!)g(~)354 b Ft(logical)33 b(and)d(bit)m(wise)h(negation)150 5340 y Fs(**)384 b Ft(exp)s(onen)m(tiation)p eop end -%%Page: 77 83 -TeXDict begin 77 82 bop 150 -116 a Ft(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(77)150 299 y Fs(*)30 +%%Page: 75 81 +TeXDict begin 75 80 bop 150 -116 a Ft(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(75)150 299 y Fs(*)30 b(/)g(\045)276 b Ft(m)m(ultiplication,)33 b(division,)d(remainder)150 464 y Fs(+)g(-)354 b Ft(addition,)31 b(subtraction)150 630 y Fs(<<)f(>>)258 b Ft(left)31 b(and)f(righ)m(t)h(bit)m(wise)g @@ -10135,8 +9710,8 @@ y Fq(Aliases)34 b Ft(allo)m(w)d(a)g(string)e(to)i(b)s(e)e(substituted)g b(shell)i(main)m(tains)f(a)h(list)f(of)g(aliases)i(that)e(ma)m(y)h(b)s (e)e(set)h(and)g(unset)f(with)h(the)150 5340 y Fs(alias)d Ft(and)h Fs(unalias)e Ft(builtin)i(commands.)p eop end -%%Page: 78 84 -TeXDict begin 78 83 bop 150 -116 a Ft(78)2572 b(Bash)31 +%%Page: 76 82 +TeXDict begin 76 81 bop 150 -116 a Ft(76)2572 b(Bash)31 b(Reference)g(Man)m(ual)275 299 y(The)e(\014rst)f(w)m(ord)i(of)f(eac)m (h)i(simple)f(command,)g(if)f(unquoted,)g(is)h(c)m(hec)m(k)m(ed)h(to)g (see)f(if)g(it)g(has)f(an)g(alias.)150 408 y(If)24 b(so,)i(that)g(w)m @@ -10168,9 +9743,9 @@ f(should)g(b)s(e)h(used)f(\(see)i(Section)g(3.3)g([Shell)f(F)-8 b(unctions],)150 1802 y(page)31 b(14\).)275 1951 y(Aliases)i(are)h(not) e(expanded)g(when)g(the)h(shell)g(is)g(not)g(in)m(teractiv)m(e,)j (unless)c(the)h Fs(expand_aliases)150 2061 y Ft(shell)e(option)f(is)h -(set)g(using)f Fs(shopt)f Ft(\(see)i(Section)g(4.3.2)h([The)e(Shopt)g -(Builtin],)h(page)g(52\).)275 2210 y(The)38 b(rules)h(concerning)h(the) -f(de\014nition)g(and)g(use)g(of)g(aliases)i(are)e(somewhat)h +(set)g(using)f Fs(shopt)f Ft(\(see)i(Section)g(4.2)h([Bash)e +(Builtins],)h(page)h(41\).)275 2210 y(The)38 b(rules)h(concerning)h +(the)f(de\014nition)g(and)g(use)g(of)g(aliases)i(are)e(somewhat)h (confusing.)67 b(Bash)150 2320 y(alw)m(a)m(ys)42 b(reads)f(at)h(least)g (one)f(complete)i(line)e(of)g(input)f(b)s(efore)h(executing)h(an)m(y)f (of)g(the)g(commands)150 2429 y(on)h(that)h(line.)77 @@ -10214,9 +9789,9 @@ f(arra)m(y)-8 b(,)32 b(use)390 5042 y Fs(declare)46 b(-a)h Fj(name)150 5191 y Ft(The)30 b(syn)m(tax)390 5340 y Fs(declare)46 b(-a)h Fj(name)11 b Fs([)p Fj(subscript)g Fs(])p eop end -%%Page: 79 85 -TeXDict begin 79 84 bop 150 -116 a Ft(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(79)150 299 y(is)29 +%%Page: 77 83 +TeXDict begin 77 82 bop 150 -116 a Ft(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(77)150 299 y(is)29 b(also)i(accepted;)g(the)f Fq(subscript)g Ft(is)f(ignored.)41 b(A)m(ttributes)30 b(ma)m(y)g(b)s(e)e(sp)s(eci\014ed)h(for)g(an)g(arra) m(y)h(v)-5 b(ariable)150 408 y(using)40 b(the)h Fs(declare)d @@ -10250,7 +9825,7 @@ Fq(name)p Ft(.)40 b(These)29 b(subscripts)f(di\013er)h(only)150 Fs(${name[*]})150 1920 y Ft(expands)20 b(to)h(a)g(single)g(w)m(ord)f (with)h(the)g(v)-5 b(alue)21 b(of)f(eac)m(h)i(arra)m(y)f(mem)m(b)s(er)f (separated)h(b)m(y)g(the)f(\014rst)g(c)m(haracter)150 -2030 y(of)38 b(the)g Fs(IFS)f Ft(v)-5 b(ariable,)41 b(and)c +2029 y(of)38 b(the)g Fs(IFS)f Ft(v)-5 b(ariable,)41 b(and)c Fs(${name[@]})e Ft(expands)i(eac)m(h)i(elemen)m(t)g(of)f Fq(name)43 b Ft(to)c(a)f(separate)h(w)m(ord.)150 2139 y(When)32 b(there)h(are)f(no)g(arra)m(y)h(mem)m(b)s(ers,)f @@ -10306,8 +9881,8 @@ b(,)27 b(and)c(the)h Fs(popd)f Ft(builtin)g(remo)m(v)m(es)j(sp)s Fs(DIRSTACK)e Ft(shell)150 4885 y(v)-5 b(ariable.)150 5099 y Fk(6.8.1)63 b(Directory)40 b(Stac)m(k)g(Builtins)150 5340 y Fs(dirs)p eop end -%%Page: 80 86 -TeXDict begin 80 85 bop 150 -116 a Ft(80)2572 b(Bash)31 +%%Page: 78 84 +TeXDict begin 78 83 bop 150 -116 a Ft(78)2572 b(Bash)31 b(Reference)g(Man)m(ual)870 299 y Fs(dirs)47 b([+)p Fj(N)57 b Fs(|)48 b(-)p Fj(N)11 b Fs(])46 b([-clpv])630 426 y Ft(Displa)m(y)35 b(the)f(list)g(of)g(curren)m(tly)g(remem)m(b)s(ered)f @@ -10355,32 +9930,33 @@ Ft(\),)g(starting)h(with)f(zero.)630 3447 y Fs(-n)384 b Ft(Suppresses)27 b(the)j(normal)g(c)m(hange)g(of)g(directory)g(when)e (remo)m(ving)j(directo-)1110 3557 y(ries)f(from)g(the)h(stac)m(k,)h(so) f(that)g(only)f(the)h(stac)m(k)g(is)g(manipulated.)150 -3720 y Fs(pushd)870 3847 y(pushd)46 b([-n])h([+)p Fj(N)57 -b Fs(|)48 b Fj(-N)58 b Fs(|)47 b Fj(dir)57 b Fs(])630 -3975 y Ft(Sa)m(v)m(e)30 b(the)e(curren)m(t)g(directory)h(on)f(the)h -(top)f(of)h(the)f(directory)h(stac)m(k)h(and)e(then)g +3720 y Fs(pushd)870 3847 y(pushd)46 b([)p Fj(dir)58 b +Fs(|)47 b(+)p Fj(N)58 b Fs(|)47 b Fj(-N)11 b Fs(])47 +b([-n])630 3975 y Ft(Sa)m(v)m(e)30 b(the)e(curren)m(t)g(directory)h(on) +f(the)h(top)f(of)h(the)f(directory)h(stac)m(k)h(and)e(then)g Fs(cd)f Ft(to)i Fq(dir)p Ft(.)630 4084 y(With)i(no)f(argumen)m(ts,)h Fs(pushd)e Ft(exc)m(hanges)j(the)e(top)h(t)m(w)m(o)h(directories.)630 -4229 y Fs(-n)384 b Ft(Suppresses)26 b(the)i(normal)h(c)m(hange)g(of)f -(directory)h(when)e(adding)h(directories)1110 4339 y(to)j(the)g(stac)m -(k,)h(so)e(that)h(only)g(the)f(stac)m(k)i(is)f(manipulated.)630 -4484 y Fs(+)p Fj(N)384 b Ft(Brings)29 b(the)f Fq(N)10 +4229 y Fs(+)p Fj(N)384 b Ft(Brings)29 b(the)f Fq(N)10 b Ft(th)29 b(directory)g(\(coun)m(ting)h(from)e(the)g(left)i(of)e(the)h -(list)g(prin)m(ted)1110 4594 y(b)m(y)34 b Fs(dirs)p Ft(,)g(starting)h +(list)g(prin)m(ted)1110 4339 y(b)m(y)34 b Fs(dirs)p Ft(,)g(starting)h (with)f(zero\))i(to)f(the)f(top)g(of)h(the)f(list)h(b)m(y)f(rotating)i -(the)1110 4703 y(stac)m(k.)630 4848 y Fs(-)p Fj(N)384 +(the)1110 4449 y(stac)m(k.)630 4594 y Fs(-)p Fj(N)384 b Ft(Brings)23 b(the)g Fq(N)10 b Ft(th)23 b(directory)h(\(coun)m(ting)g (from)e(the)i(righ)m(t)f(of)g(the)h(list)f(prin)m(ted)1110 -4958 y(b)m(y)34 b Fs(dirs)p Ft(,)g(starting)h(with)f(zero\))i(to)f(the) +4703 y(b)m(y)34 b Fs(dirs)p Ft(,)g(starting)h(with)f(zero\))i(to)f(the) f(top)g(of)h(the)f(list)h(b)m(y)f(rotating)i(the)1110 -5068 y(stac)m(k.)630 5213 y Fj(dir)336 b Ft(Mak)m(es)36 -b(the)f(curren)m(t)g(w)m(orking)g(directory)g(b)s(e)f(the)h(top)g(of)g -(the)g(stac)m(k,)j(and)1110 5322 y(then)30 b(executes)i(the)e(equiv)-5 -b(alen)m(t)32 b(of)f(`)p Fs(cd)f Fq(dir)7 b Ft('.)39 -b Fs(cd)p Ft(s)30 b(to)h Fq(dir)p Ft(.)p eop end -%%Page: 81 87 -TeXDict begin 81 86 bop 150 -116 a Ft(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(81)150 299 y Fr(6.9)68 +4813 y(stac)m(k.)630 4958 y Fs(-n)384 b Ft(Suppresses)26 +b(the)i(normal)h(c)m(hange)g(of)f(directory)h(when)e(adding)h +(directories)1110 5068 y(to)j(the)g(stac)m(k,)h(so)e(that)h(only)g(the) +f(stac)m(k)i(is)f(manipulated.)630 5213 y Fj(dir)336 +b Ft(Mak)m(es)36 b(the)f(curren)m(t)g(w)m(orking)g(directory)g(b)s(e)f +(the)h(top)g(of)g(the)g(stac)m(k,)j(and)1110 5322 y(then)30 +b(executes)i(the)e(equiv)-5 b(alen)m(t)32 b(of)f(`)p +Fs(cd)f Fq(dir)7 b Ft('.)39 b Fs(cd)p Ft(s)30 b(to)h +Fq(dir)p Ft(.)p eop end +%%Page: 79 85 +TeXDict begin 79 84 bop 150 -116 a Ft(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(79)150 299 y Fr(6.9)68 b(Con)l(trolling)47 b(the)e(Prompt)275 544 y Ft(The)c(v)-5 b(alue)43 b(of)f(the)h(v)-5 b(ariable)43 b Fs(PROMPT_COMMAND)38 b Ft(is)k(examined)g(just)g(b)s(efore)g(Bash)g(prin)m(ts)g(eac)m(h)150 @@ -10433,8 +10009,8 @@ Fs($)p Ft(.)150 5180 y Fs(\\)p Fj(nnn)288 b Ft(The)30 b(c)m(haracter)i(whose)e(ASCI)s(I)f(co)s(de)h(is)h(the)f(o)s(ctal)i(v) -5 b(alue)31 b Fq(nnn)p Ft(.)150 5340 y Fs(\\\\)384 b Ft(A)30 b(bac)m(kslash.)p eop end -%%Page: 82 88 -TeXDict begin 82 87 bop 150 -116 a Ft(82)2572 b(Bash)31 +%%Page: 80 86 +TeXDict begin 80 85 bop 150 -116 a Ft(80)2572 b(Bash)31 b(Reference)g(Man)m(ual)150 299 y Fs(\\[)384 b Ft(Begin)38 b(a)f(sequence)g(of)g(non-prin)m(ting)g(c)m(haracters.)61 b(This)36 b(could)h(b)s(e)g(used)f(to)h(em)m(b)s(ed)g(a)630 @@ -10446,7 +10022,7 @@ b(the)26 b(history)g(n)m(um)m(b)s(er)150 823 y(of)h(a)f(command)h(is)f (its)h(p)s(osition)f(in)g(the)h(history)f(list,)i(whic)m(h)f(ma)m(y)g (include)f(commands)g(restored)g(from)150 932 y(the)39 b(history)h(\014le)f(\(see)h(Section)g(9.1)h([Bash)e(History)h(F)-8 -b(acilities],)45 b(page)40 b(117\),)j(while)d(the)f(command)150 +b(acilities],)45 b(page)40 b(115\),)j(while)d(the)f(command)150 1042 y(n)m(um)m(b)s(er)j(is)h(the)h(p)s(osition)f(in)g(the)g(sequence)h (of)f(commands)g(executed)h(during)e(the)i(curren)m(t)f(shell)150 1152 y(session.)275 1283 y(After)35 b(the)g(string)g(is)g(deco)s(ded,)h @@ -10511,9 +10087,9 @@ Fl(posix)f Ft(standard)g(b)m(y)h(c)m(hanging)150 5340 y(the)31 b(b)s(eha)m(vior)f(to)h(matc)m(h)g(that)g(sp)s(eci\014ed)f(b)m (y)g Fl(posix)g Ft(in)g(areas)h(where)f(the)h(Bash)f(default)h (di\013ers.)p eop end -%%Page: 83 89 -TeXDict begin 83 88 bop 150 -116 a Ft(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(83)275 299 y(When)30 +%%Page: 81 87 +TeXDict begin 81 86 bop 150 -116 a Ft(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(81)275 299 y(When)30 b(in)m(v)m(ok)m(ed)h(as)g Fs(sh)p Ft(,)f(Bash)h(en)m(ters)g Fl(posix)e Ft(mo)s(de)h(after)h(reading)g(the)f(startup)g(\014les.)275 429 y(The)f(follo)m(wing)j(list)f(is)g(what's)f(c)m(hanged)h(when)e(`)p @@ -10602,8 +10178,8 @@ b(no)h(command)g(name)g(follo)m(ws)i(the)e(assignmen)m(t)h(statemen)m 5340 y(error)30 b(o)s(ccurs,)g(for)g(example,)i(when)d(trying)i(to)g (assign)f(a)h(v)-5 b(alue)31 b(to)g(a)g(readonly)f(v)-5 b(ariable.)p eop end -%%Page: 84 90 -TeXDict begin 84 89 bop 150 -116 a Ft(84)2572 b(Bash)31 +%%Page: 82 88 +TeXDict begin 82 87 bop 150 -116 a Ft(82)2572 b(Bash)31 b(Reference)g(Man)m(ual)154 299 y(21.)61 b(A)43 b(non-in)m(teractiv)m (e)i(shell)e(exits)h(with)f(an)f(error)h(status)g(if)g(the)g(iteration) h(v)-5 b(ariable)44 b(in)f(a)g Fs(for)330 408 y Ft(statemen)m(t)32 @@ -10686,9 +10262,9 @@ g(\014le)330 5092 y(found)i(in)h Fs($PATH)p Ft(.)154 Fs(v)p Ft(')f(command)g(is)g(run,)330 5340 y(instead)e(of)f(c)m(hec)m (king)i Fs($FCEDIT)d Ft(and)g Fs($EDITOR)p Ft(.)p eop end -%%Page: 85 91 -TeXDict begin 85 90 bop 150 -116 a Ft(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(85)154 299 y(41.)61 +%%Page: 83 89 +TeXDict begin 83 88 bop 150 -116 a Ft(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(83)154 299 y(41.)61 b(When)41 b(the)g Fs(xpg_echo)e Ft(option)i(is)g(enabled,)j(Bash)d(do)s (es)g(not)g(attempt)h(to)g(in)m(terpret)f(an)m(y)h(ar-)330 408 y(gumen)m(ts)35 b(to)g Fs(echo)e Ft(as)i(options.)54 @@ -10710,13 +10286,13 @@ Fl(posix)p Ft(-conforman)m(t)h(b)m(y)f(default,)77 b(b)m(y)66 b(sp)s(ecifying)h(the)150 1544 y(`)p Fs(--enable-strict-posix-def)o (ault)o Ft(')i(to)76 b Fs(configure)c Ft(when)i(building)g(\(see)i (Section)f(10.8)150 1654 y([Optional)31 b(F)-8 b(eatures],)32 -b(page)f(125\).)p eop end -%%Page: 86 92 -TeXDict begin 86 91 bop 150 -116 a Ft(86)2572 b(Bash)31 +b(page)f(123\).)p eop end +%%Page: 84 90 +TeXDict begin 84 89 bop 150 -116 a Ft(84)2572 b(Bash)31 b(Reference)g(Man)m(ual)p eop end -%%Page: 87 93 -TeXDict begin 87 92 bop 150 -116 a Ft(Chapter)30 b(7:)41 -b(Job)30 b(Con)m(trol)2571 b(87)150 299 y Fo(7)80 b(Job)54 +%%Page: 85 91 +TeXDict begin 85 90 bop 150 -116 a Ft(Chapter)30 b(7:)41 +b(Job)30 b(Con)m(trol)2571 b(85)150 299 y Fo(7)80 b(Job)54 b(Con)l(trol)275 516 y Ft(This)34 b(c)m(hapter)i(discusses)f(what)g (job)g(con)m(trol)i(is,)g(ho)m(w)e(it)h(w)m(orks,)h(and)e(ho)m(w)g (Bash)h(allo)m(ws)g(y)m(ou)g(to)150 625 y(access)c(its)e(facilities.) @@ -10806,162 +10382,157 @@ i(or)e(using)f(a)150 5340 y(substring)29 b(that)i(app)s(ears)f(in)g (its)h(command)f(line.)41 b(F)-8 b(or)31 b(example,)g(`)p Fs(\045ce)p Ft(')f(refers)g(to)h(a)g(stopp)s(ed)e Fs(ce)h Ft(job.)p eop end -%%Page: 88 94 -TeXDict begin 88 93 bop 150 -116 a Ft(88)2572 b(Bash)31 +%%Page: 86 92 +TeXDict begin 86 91 bop 150 -116 a Ft(86)2572 b(Bash)31 b(Reference)g(Man)m(ual)150 299 y(Using)c(`)p Fs(\045?ce)p Ft(',)g(on)f(the)h(other)g(hand,)g(refers)f(to)h(an)m(y)g(job)g(con)m (taining)h(the)f(string)f(`)p Fs(ce)p Ft(')h(in)f(its)h(command)150 408 y(line.)41 b(If)30 b(the)h(pre\014x)e(or)h(substring)f(matc)m(hes)j (more)e(than)h(one)f(job,)h(Bash)f(rep)s(orts)g(an)g(error.)275 -541 y(Simply)g(naming)h(a)g(job)g(can)g(b)s(e)f(used)h(to)g(bring)f(it) +544 y(Simply)g(naming)h(a)g(job)g(can)g(b)s(e)f(used)h(to)g(bring)f(it) i(in)m(to)g(the)f(foreground:)41 b(`)p Fs(\0451)p Ft(')31 -b(is)g(a)h(synon)m(ym)e(for)150 651 y(`)p Fs(fg)g(\0451)p +b(is)g(a)h(synon)m(ym)e(for)150 654 y(`)p Fs(fg)g(\0451)p Ft(',)i(bringing)f(job)g(1)g(from)g(the)h(bac)m(kground)f(in)m(to)i (the)e(foreground.)44 b(Similarly)-8 b(,)32 b(`)p Fs(\0451)e(&)p -Ft(')i(resumes)150 761 y(job)e(1)h(in)f(the)g(bac)m(kground,)h(equiv)-5 -b(alen)m(t)32 b(to)f(`)p Fs(bg)f(\0451)p Ft(')275 894 +Ft(')i(resumes)150 763 y(job)e(1)h(in)f(the)g(bac)m(kground,)h(equiv)-5 +b(alen)m(t)32 b(to)f(`)p Fs(bg)f(\0451)p Ft(')275 899 y(The)g(shell)i(learns)f(immediately)i(whenev)m(er)e(a)h(job)f(c)m (hanges)h(state.)45 b(Normally)-8 b(,)33 b(Bash)e(w)m(aits)i(un)m(til) -150 1003 y(it)25 b(is)g(ab)s(out)f(to)i(prin)m(t)e(a)h(prompt)f(b)s +150 1009 y(it)25 b(is)g(ab)s(out)f(to)i(prin)m(t)e(a)h(prompt)f(b)s (efore)g(rep)s(orting)h(c)m(hanges)g(in)g(a)g(job's)f(status)h(so)g(as) -g(to)g(not)g(in)m(terrupt)150 1113 y(an)m(y)g(other)g(output.)39 +g(to)g(not)g(in)m(terrupt)150 1119 y(an)m(y)g(other)g(output.)39 b(If)24 b(the)i(`)p Fs(-b)p Ft(')e(option)i(to)f(the)g Fs(set)f Ft(builtin)h(is)g(enabled,)h(Bash)f(rep)s(orts)f(suc)m(h)h(c)m -(hanges)150 1222 y(immediately)g(\(see)g(Section)g(4.3.1)g([The)f(Set)g -(Builtin],)i(page)f(49\).)40 b(An)m(y)24 b(trap)f(on)h -Fs(SIGCHLD)e Ft(is)i(executed)150 1332 y(for)30 b(eac)m(h)i(c)m(hild)e -(pro)s(cess)g(that)h(exits.)275 1465 y(If)25 b(an)h(attempt)h(to)g -(exit)g(Bash)f(is)h(made)f(while)g(jobs)f(are)i(stopp)s(ed,)f(\(or)h -(running,)e(if)h(the)g Fs(checkjobs)150 1574 y Ft(option)e(is)f -(enabled)h({)g(see)g(Section)g(4.3.2)h([The)e(Shopt)g(Builtin],)j(page) -e(52\),)i(the)e(shell)f(prin)m(ts)g(a)h(w)m(arning)150 -1684 y(message,)k(and)c(if)i(the)f Fs(checkjobs)e Ft(option)j(is)f -(enabled,)i(lists)e(the)h(jobs)f(and)f(their)i(statuses.)39 -b(The)25 b Fs(jobs)150 1794 y Ft(command)36 b(ma)m(y)h(then)f(b)s(e)f -(used)g(to)i(insp)s(ect)f(their)g(status.)59 b(If)36 -b(a)g(second)g(attempt)i(to)f(exit)g(is)f(made)150 1903 -y(without)e(an)f(in)m(terv)m(ening)i(command,)f(Bash)g(do)s(es)f(not)h -(prin)m(t)g(another)f(w)m(arning,)i(and)e(an)m(y)h(stopp)s(ed)150 -2013 y(jobs)c(are)h(terminated.)150 2266 y Fr(7.2)68 -b(Job)45 b(Con)l(trol)h(Builtins)150 2508 y Fs(bg)870 -2641 y(bg)h([)p Fj(jobspec)56 b Fs(...)o(])630 2774 y -Ft(Resume)24 b(eac)m(h)h(susp)s(ended)d(job)i Fq(jobsp)s(ec)29 -b Ft(in)24 b(the)g(bac)m(kground,)h(as)g(if)f(it)h(had)e(b)s(een)g -(started)630 2884 y(with)32 b(`)p Fs(&)p Ft('.)45 b(If)31 -b Fq(jobsp)s(ec)37 b Ft(is)32 b(not)g(supplied,)f(the)h(curren)m(t)g -(job)f(is)h(used.)45 b(The)31 b(return)g(status)630 2993 -y(is)i(zero)g(unless)f(it)h(is)g(run)e(when)h(job)g(con)m(trol)i(is)f -(not)g(enabled,)h(or,)f(when)f(run)f(with)h(job)630 3103 -y(con)m(trol)h(enabled,)g(an)m(y)f Fq(jobsp)s(ec)37 b -Ft(w)m(as)32 b(not)g(found)f(or)g(sp)s(eci\014es)h(a)g(job)g(that)g(w)m -(as)g(started)630 3212 y(without)e(job)g(con)m(trol.)150 -3369 y Fs(fg)870 3502 y(fg)47 b([)p Fj(jobspec)11 b Fs(])630 -3635 y Ft(Resume)43 b(the)g(job)g Fq(jobsp)s(ec)48 b -Ft(in)43 b(the)g(foreground)g(and)f(mak)m(e)j(it)e(the)h(curren)m(t)f -(job.)78 b(If)630 3744 y Fq(jobsp)s(ec)41 b Ft(is)c(not)f(supplied,)h +(hanges)150 1228 y(immediately)31 b(\(see)f(Section)g(4.3)g([The)f(Set) +h(Builtin],)g(page)g(53\).)42 b(An)m(y)29 b(trap)g(on)g +Fs(SIGCHLD)f Ft(is)h(executed)150 1338 y(for)h(eac)m(h)i(c)m(hild)e +(pro)s(cess)g(that)h(exits.)275 1474 y(If)k(an)h(attempt)h(to)g(exit)g +(Bash)g(is)f(made)g(while)g(jobs)g(are)g(stopp)s(ed,)h(the)f(shell)h +(prin)m(ts)e(a)i(message)150 1583 y(w)m(arning)26 b(that)h(there)f(are) +g(stopp)s(ed)g(jobs.)38 b(The)26 b Fs(jobs)f Ft(command)h(ma)m(y)h +(then)e(b)s(e)h(used)f(to)i(insp)s(ect)f(their)150 1693 +y(status.)57 b(If)35 b(a)h(second)g(attempt)g(to)h(exit)f(is)g(made)g +(without)f(an)h(in)m(terv)m(ening)h(command,)f(Bash)g(do)s(es)150 +1802 y(not)31 b(prin)m(t)f(another)g(w)m(arning,)h(and)e(the)i(stopp)s +(ed)e(jobs)h(are)h(terminated.)150 2063 y Fr(7.2)68 b(Job)45 +b(Con)l(trol)h(Builtins)150 2308 y Fs(bg)870 2443 y(bg)h([)p +Fj(jobspec)56 b Fs(...)o(])630 2578 y Ft(Resume)24 b(eac)m(h)h(susp)s +(ended)d(job)i Fq(jobsp)s(ec)29 b Ft(in)24 b(the)g(bac)m(kground,)h(as) +g(if)f(it)h(had)e(b)s(een)g(started)630 2688 y(with)32 +b(`)p Fs(&)p Ft('.)45 b(If)31 b Fq(jobsp)s(ec)37 b Ft(is)32 +b(not)g(supplied,)f(the)h(curren)m(t)g(job)f(is)h(used.)45 +b(The)31 b(return)g(status)630 2797 y(is)i(zero)g(unless)f(it)h(is)g +(run)e(when)h(job)g(con)m(trol)i(is)f(not)g(enabled,)h(or,)f(when)f +(run)f(with)h(job)630 2907 y(con)m(trol)h(enabled,)g(an)m(y)f +Fq(jobsp)s(ec)37 b Ft(w)m(as)32 b(not)g(found)f(or)g(sp)s(eci\014es)h +(a)g(job)g(that)g(w)m(as)g(started)630 3017 y(without)e(job)g(con)m +(trol.)150 3177 y Fs(fg)870 3312 y(fg)47 b([)p Fj(jobspec)11 +b Fs(])630 3448 y Ft(Resume)43 b(the)g(job)g Fq(jobsp)s(ec)48 +b Ft(in)43 b(the)g(foreground)g(and)f(mak)m(e)j(it)e(the)h(curren)m(t)f +(job.)78 b(If)630 3557 y Fq(jobsp)s(ec)41 b Ft(is)c(not)f(supplied,)h (the)f(curren)m(t)h(job)f(is)g(used.)58 b(The)36 b(return)f(status)h -(is)h(that)g(of)630 3854 y(the)d(command)g(placed)h(in)m(to)g(the)f +(is)h(that)g(of)630 3667 y(the)d(command)g(placed)h(in)m(to)g(the)f (foreground,)g(or)g(non-zero)h(if)f(run)f(when)g(job)g(con)m(trol)630 -3964 y(is)i(disabled)g(or,)i(when)d(run)g(with)h(job)g(con)m(trol)h +3776 y(is)i(disabled)g(or,)i(when)d(run)g(with)h(job)g(con)m(trol)h (enabled,)h Fq(jobsp)s(ec)j Ft(do)s(es)35 b(not)h(sp)s(ecify)f(a)630 -4073 y(v)-5 b(alid)31 b(job)f(or)g Fq(jobsp)s(ec)35 b +3886 y(v)-5 b(alid)31 b(job)f(or)g Fq(jobsp)s(ec)35 b Ft(sp)s(eci\014es)30 b(a)h(job)f(that)h(w)m(as)g(started)g(without)f -(job)g(con)m(trol.)150 4229 y Fs(jobs)870 4362 y(jobs)47 -b([-lnprs])e([)p Fj(jobspec)11 b Fs(])870 4472 y(jobs)47 +(job)g(con)m(trol.)150 4047 y Fs(jobs)870 4182 y(jobs)47 +b([-lnprs])e([)p Fj(jobspec)11 b Fs(])870 4291 y(jobs)47 b(-x)g Fj(command)56 b Fs([)p Fj(arguments)11 b Fs(])630 -4605 y Ft(The)30 b(\014rst)f(form)h(lists)h(the)g(activ)m(e)h(jobs.)41 +4427 y Ft(The)30 b(\014rst)f(form)h(lists)h(the)g(activ)m(e)h(jobs.)41 b(The)30 b(options)g(ha)m(v)m(e)i(the)e(follo)m(wing)i(meanings:)630 -4761 y Fs(-l)384 b Ft(List)31 b(pro)s(cess)f Fl(id)p +4587 y Fs(-l)384 b Ft(List)31 b(pro)s(cess)f Fl(id)p Ft(s)g(in)g(addition)h(to)g(the)f(normal)h(information.)630 -4918 y Fs(-n)384 b Ft(Displa)m(y)26 b(information)f(only)h(ab)s(out)e +4748 y Fs(-n)384 b Ft(Displa)m(y)26 b(information)f(only)h(ab)s(out)e (jobs)h(that)g(ha)m(v)m(e)i(c)m(hanged)e(status)h(since)1110 -5027 y(the)31 b(user)e(w)m(as)i(last)g(noti\014ed)f(of)h(their)f -(status.)630 5184 y Fs(-p)384 b Ft(List)31 b(only)f(the)h(pro)s(cess)f +4858 y(the)31 b(user)e(w)m(as)i(last)g(noti\014ed)f(of)h(their)f +(status.)630 5018 y Fs(-p)384 b Ft(List)31 b(only)f(the)h(pro)s(cess)f Fl(id)g Ft(of)h(the)f(job's)g(pro)s(cess)g(group)g(leader.)630 -5340 y Fs(-r)384 b Ft(Restrict)31 b(output)f(to)i(running)c(jobs.)p +5179 y Fs(-r)384 b Ft(Restrict)31 b(output)f(to)i(running)c(jobs.)630 +5340 y Fs(-s)384 b Ft(Restrict)31 b(output)f(to)i(stopp)s(ed)d(jobs.)p eop end -%%Page: 89 95 -TeXDict begin 89 94 bop 150 -116 a Ft(Chapter)30 b(7:)41 -b(Job)30 b(Con)m(trol)2571 b(89)630 299 y Fs(-s)384 b -Ft(Restrict)31 b(output)f(to)i(stopp)s(ed)d(jobs.)630 -461 y(If)23 b Fq(jobsp)s(ec)28 b Ft(is)c(giv)m(en,)i(output)d(is)h -(restricted)g(to)g(information)g(ab)s(out)f(that)h(job.)39 -b(If)23 b Fq(jobsp)s(ec)630 570 y Ft(is)30 b(not)h(supplied,)e(the)i -(status)g(of)f(all)h(jobs)f(is)h(listed.)630 706 y(If)g(the)g(`)p -Fs(-x)p Ft(')g(option)h(is)f(supplied,)g Fs(jobs)f Ft(replaces)i(an)m -(y)f Fq(jobsp)s(ec)37 b Ft(found)29 b(in)i Fq(command)k -Ft(or)630 815 y Fq(argumen)m(ts)41 b Ft(with)c(the)h(corresp)s(onding)e -(pro)s(cess)h(group)f Fl(id)p Ft(,)k(and)c(executes)j -Fq(command)p Ft(,)630 925 y(passing)30 b(it)h Fq(argumen)m(t)r -Ft(s,)g(returning)f(its)g(exit)i(status.)150 1087 y Fs(kill)870 -1222 y(kill)47 b([-s)g Fj(sigspec)11 b Fs(])45 b([-n)i -Fj(signum)11 b Fs(])45 b([-)p Fj(sigspec)11 b Fs(])44 -b Fj(jobspec)57 b Fs(or)47 b Fj(pid)870 1332 y Fs(kill)g(-l)g([)p -Fj(exit_status)11 b Fs(])630 1467 y Ft(Send)22 b(a)i(signal)g(sp)s -(eci\014ed)f(b)m(y)g Fq(sigsp)s(ec)29 b Ft(or)24 b Fq(sign)m(um)f -Ft(to)h(the)g(pro)s(cess)f(named)g(b)m(y)g(job)g(sp)s(eci\014-)630 -1577 y(cation)k Fq(jobsp)s(ec)j Ft(or)25 b(pro)s(cess)g -Fl(id)h Fq(pid)p Ft(.)38 b Fq(sigsp)s(ec)31 b Ft(is)25 -b(either)h(a)g(case-insensitiv)m(e)i(signal)e(name)630 -1687 y(suc)m(h)k(as)h Fs(SIGINT)d Ft(\(with)j(or)f(without)h(the)f -Fs(SIG)g Ft(pre\014x\))f(or)i(a)f(signal)h(n)m(um)m(b)s(er;)f -Fq(sign)m(um)g Ft(is)630 1796 y(a)i(signal)g(n)m(um)m(b)s(er.)43 -b(If)31 b Fq(sigsp)s(ec)37 b Ft(and)31 b Fq(sign)m(um)g -Ft(are)h(not)f(presen)m(t,)h Fs(SIGTERM)e Ft(is)h(used.)43 -b(The)630 1906 y(`)p Fs(-l)p Ft(')34 b(option)g(lists)h(the)f(signal)h -(names.)51 b(If)33 b(an)m(y)i(argumen)m(ts)f(are)g(supplied)f(when)g(`) -p Fs(-l)p Ft(')h(is)630 2015 y(giv)m(en,)e(the)g(names)e(of)i(the)f +%%Page: 87 93 +TeXDict begin 87 92 bop 150 -116 a Ft(Chapter)30 b(7:)41 +b(Job)30 b(Con)m(trol)2571 b(87)630 299 y(If)23 b Fq(jobsp)s(ec)28 +b Ft(is)c(giv)m(en,)i(output)d(is)h(restricted)g(to)g(information)g(ab) +s(out)f(that)h(job.)39 b(If)23 b Fq(jobsp)s(ec)630 408 +y Ft(is)30 b(not)h(supplied,)e(the)i(status)g(of)f(all)h(jobs)f(is)h +(listed.)630 552 y(If)g(the)g(`)p Fs(-x)p Ft(')g(option)h(is)f +(supplied,)g Fs(jobs)f Ft(replaces)i(an)m(y)f Fq(jobsp)s(ec)37 +b Ft(found)29 b(in)i Fq(command)k Ft(or)630 662 y Fq(argumen)m(ts)41 +b Ft(with)c(the)h(corresp)s(onding)e(pro)s(cess)h(group)f +Fl(id)p Ft(,)k(and)c(executes)j Fq(command)p Ft(,)630 +771 y(passing)30 b(it)h Fq(argumen)m(t)r Ft(s,)g(returning)f(its)g +(exit)i(status.)150 949 y Fs(kill)870 1093 y(kill)47 +b([-s)g Fj(sigspec)11 b Fs(])45 b([-n)i Fj(signum)11 +b Fs(])45 b([-)p Fj(sigspec)11 b Fs(])44 b Fj(jobspec)57 +b Fs(or)47 b Fj(pid)870 1202 y Fs(kill)g(-l)g([)p Fj(exit_status)11 +b Fs(])630 1346 y Ft(Send)22 b(a)i(signal)g(sp)s(eci\014ed)f(b)m(y)g +Fq(sigsp)s(ec)29 b Ft(or)24 b Fq(sign)m(um)f Ft(to)h(the)g(pro)s(cess)f +(named)g(b)m(y)g(job)g(sp)s(eci\014-)630 1456 y(cation)k +Fq(jobsp)s(ec)j Ft(or)25 b(pro)s(cess)g Fl(id)h Fq(pid)p +Ft(.)38 b Fq(sigsp)s(ec)31 b Ft(is)25 b(either)h(a)g(case-insensitiv)m +(e)i(signal)e(name)630 1565 y(suc)m(h)k(as)h Fs(SIGINT)d +Ft(\(with)j(or)f(without)h(the)f Fs(SIG)g Ft(pre\014x\))f(or)i(a)f +(signal)h(n)m(um)m(b)s(er;)f Fq(sign)m(um)g Ft(is)630 +1675 y(a)i(signal)g(n)m(um)m(b)s(er.)43 b(If)31 b Fq(sigsp)s(ec)37 +b Ft(and)31 b Fq(sign)m(um)g Ft(are)h(not)f(presen)m(t,)h +Fs(SIGTERM)e Ft(is)h(used.)43 b(The)630 1785 y(`)p Fs(-l)p +Ft(')34 b(option)g(lists)h(the)f(signal)h(names.)51 b(If)33 +b(an)m(y)i(argumen)m(ts)f(are)g(supplied)f(when)g(`)p +Fs(-l)p Ft(')h(is)630 1894 y(giv)m(en,)e(the)g(names)e(of)i(the)f (signals)g(corresp)s(onding)f(to)i(the)f(argumen)m(ts)g(are)h(listed,)g -(and)630 2125 y(the)c(return)f(status)h(is)g(zero.)41 -b Fq(exit)p 1796 2125 28 4 v 41 w(status)32 b Ft(is)c(a)g(n)m(um)m(b)s +(and)630 2004 y(the)c(return)f(status)h(is)g(zero.)41 +b Fq(exit)p 1796 2004 28 4 v 41 w(status)32 b Ft(is)c(a)g(n)m(um)m(b)s (er)f(sp)s(ecifying)g(a)i(signal)f(n)m(um)m(b)s(er)f(or)630 -2235 y(the)35 b(exit)h(status)f(of)g(a)g(pro)s(cess)g(terminated)g(b)m +2113 y(the)35 b(exit)h(status)f(of)g(a)g(pro)s(cess)g(terminated)g(b)m (y)g(a)g(signal.)55 b(The)34 b(return)g(status)h(is)g(zero)630 -2344 y(if)c(at)h(least)g(one)g(signal)f(w)m(as)h(successfully)f(sen)m +2223 y(if)c(at)h(least)g(one)g(signal)f(w)m(as)h(successfully)f(sen)m (t,)h(or)f(non-zero)h(if)f(an)g(error)f(o)s(ccurs)h(or)g(an)630 -2454 y(in)m(v)-5 b(alid)31 b(option)g(is)f(encoun)m(tered.)150 -2615 y Fs(wait)870 2751 y(wait)47 b([)p Fj(jobspec)56 -b Fs(or)47 b Fj(pid)57 b Fs(...])630 2887 y Ft(W)-8 b(ait)28 +2333 y(in)m(v)-5 b(alid)31 b(option)g(is)f(encoun)m(tered.)150 +2510 y Fs(wait)870 2654 y(wait)47 b([)p Fj(jobspec)56 +b Fs(or)47 b Fj(pid)57 b Fs(...])630 2798 y Ft(W)-8 b(ait)28 b(un)m(til)f(the)f(c)m(hild)h(pro)s(cess)f(sp)s(eci\014ed)g(b)m(y)g (eac)m(h)h(pro)s(cess)f Fl(id)h Fq(pid)i Ft(or)d(job)g(sp)s -(eci\014cation)630 2996 y Fq(jobsp)s(ec)40 b Ft(exits)35 +(eci\014cation)630 2907 y Fq(jobsp)s(ec)40 b Ft(exits)35 b(and)f(return)g(the)g(exit)i(status)f(of)g(the)g(last)g(command)f(w)m -(aited)i(for.)53 b(If)35 b(a)630 3106 y(job)g(sp)s(ec)f(is)h(giv)m(en,) +(aited)i(for.)53 b(If)35 b(a)630 3017 y(job)g(sp)s(ec)f(is)h(giv)m(en,) i(all)f(pro)s(cesses)f(in)f(the)h(job)g(are)g(w)m(aited)h(for.)54 -b(If)35 b(no)f(argumen)m(ts)i(are)630 3215 y(giv)m(en,)d(all)f(curren)m +b(If)35 b(no)f(argumen)m(ts)i(are)630 3127 y(giv)m(en,)d(all)f(curren)m (tly)f(activ)m(e)i(c)m(hild)f(pro)s(cesses)f(are)g(w)m(aited)h(for,)g -(and)e(the)i(return)e(status)630 3325 y(is)h(zero.)44 +(and)e(the)i(return)e(status)630 3236 y(is)h(zero.)44 b(If)30 b(neither)h Fq(jobsp)s(ec)36 b Ft(nor)31 b Fq(pid)i Ft(sp)s(eci\014es)e(an)g(activ)m(e)i(c)m(hild)f(pro)s(cess)e(of)h(the)g -(shell,)630 3435 y(the)g(return)e(status)i(is)f(127.)150 -3596 y Fs(disown)870 3732 y(disown)46 b([-ar])g([-h])h([)p -Fj(jobspec)56 b Fs(...)o(])630 3868 y Ft(Without)32 b(options,)g(eac)m +(shell,)630 3346 y(the)g(return)e(status)i(is)f(127.)150 +3524 y Fs(disown)870 3667 y(disown)46 b([-ar])g([-h])h([)p +Fj(jobspec)56 b Fs(...)o(])630 3811 y Ft(Without)32 b(options,)g(eac)m (h)h Fq(jobsp)s(ec)j Ft(is)c(remo)m(v)m(ed)g(from)f(the)h(table)g(of)g -(activ)m(e)h(jobs.)44 b(If)31 b(the)630 3977 y(`)p Fs(-h)p +(activ)m(e)h(jobs.)44 b(If)31 b(the)630 3921 y(`)p Fs(-h)p Ft(')36 b(option)h(is)g(giv)m(en,)i(the)e(job)f(is)h(not)f(remo)m(v)m (ed)i(from)e(the)h(table,)i(but)d(is)g(mark)m(ed)h(so)630 -4087 y(that)d Fs(SIGHUP)d Ft(is)j(not)f(sen)m(t)h(to)g(the)f(job)g(if)g +4030 y(that)d Fs(SIGHUP)d Ft(is)j(not)f(sen)m(t)h(to)g(the)f(job)g(if)g (the)h(shell)f(receiv)m(es)i(a)f Fs(SIGHUP)p Ft(.)47 -b(If)33 b Fq(jobsp)s(ec)38 b Ft(is)630 4196 y(not)32 +b(If)33 b Fq(jobsp)s(ec)38 b Ft(is)630 4140 y(not)32 b(presen)m(t,)f(and)g(neither)h(the)f(`)p Fs(-a)p Ft(')g(nor)g(`)p Fs(-r)p Ft(')g(option)h(is)g(supplied,)e(the)i(curren)m(t)f(job)g(is) -630 4306 y(used.)58 b(If)36 b(no)g Fq(jobsp)s(ec)41 b +630 4249 y(used.)58 b(If)36 b(no)g Fq(jobsp)s(ec)41 b Ft(is)36 b(supplied,)h(the)g(`)p Fs(-a)p Ft(')f(option)h(means)f(to)h -(remo)m(v)m(e)h(or)e(mark)g(all)630 4415 y(jobs;)28 b(the)f(`)p +(remo)m(v)m(e)h(or)e(mark)g(all)630 4359 y(jobs;)28 b(the)f(`)p Fs(-r)p Ft(')g(option)g(without)g(a)g Fq(jobsp)s(ec)32 b Ft(argumen)m(t)27 b(restricts)h(op)s(eration)f(to)h(running)630 -4525 y(jobs.)150 4687 y Fs(suspend)870 4822 y(suspend)46 -b([-f])630 4958 y Ft(Susp)s(end)28 b(the)i(execution)i(of)f(this)f +4468 y(jobs.)150 4646 y Fs(suspend)870 4790 y(suspend)46 +b([-f])630 4934 y Ft(Susp)s(end)28 b(the)i(execution)i(of)f(this)f (shell)g(un)m(til)h(it)g(receiv)m(es)h(a)f Fs(SIGCONT)e -Ft(signal.)41 b(The)30 b(`)p Fs(-f)p Ft(')630 5068 y(option)h(means)f +Ft(signal.)41 b(The)30 b(`)p Fs(-f)p Ft(')630 5043 y(option)h(means)f (to)h(susp)s(end)d(ev)m(en)j(if)g(the)f(shell)h(is)f(a)h(login)g (shell.)275 5230 y(When)f(job)f(con)m(trol)j(is)e(not)h(activ)m(e,)i (the)d Fs(kill)f Ft(and)h Fs(wait)f Ft(builtins)g(do)h(not)h(accept)h Fq(jobsp)s(ec)j Ft(argu-)150 5340 y(men)m(ts.)41 b(They)30 b(m)m(ust)g(b)s(e)g(supplied)f(pro)s(cess)h Fl(id)p Ft(s.)p eop end -%%Page: 90 96 -TeXDict begin 90 95 bop 150 -116 a Ft(90)2572 b(Bash)31 +%%Page: 88 94 +TeXDict begin 88 93 bop 150 -116 a Ft(88)2572 b(Bash)31 b(Reference)g(Man)m(ual)150 299 y Fr(7.3)68 b(Job)45 b(Con)l(trol)h(V)-11 b(ariables)150 543 y Fs(auto_resume)630 653 y Ft(This)31 b(v)-5 b(ariable)32 b(con)m(trols)g(ho)m(w)g(the)f @@ -10984,15 +10555,15 @@ Ft(',)d(the)i(string)g(supplied)e(needs)i(to)g(matc)m(h)h(a)f 62 b(The)37 b(`)p Fs(substring)p Ft(')e(v)-5 b(alue)38 b(pro)m(vides)f(functionalit)m(y)i(analogous)g(to)630 1639 y(the)f(`)p Fs(\045?)p Ft(')f(job)h Fl(id)f Ft(\(see)i(Section)f -(7.1)h([Job)f(Con)m(trol)g(Basics],)j(page)d(87\).)64 +(7.1)h([Job)f(Con)m(trol)g(Basics],)j(page)d(85\).)64 b(If)37 b(set)h(to)h(an)m(y)630 1748 y(other)32 b(v)-5 b(alue,)32 b(the)g(supplied)e(string)i(m)m(ust)f(b)s(e)g(a)h(pre\014x)f (of)h(a)g(stopp)s(ed)e(job's)i(name;)g(this)630 1858 y(pro)m(vides)e(functionalit)m(y)i(analogous)g(to)f(the)g(`)p Fs(\045)p Ft(')f(job)g Fl(id)p Ft(.)p eop end -%%Page: 91 97 -TeXDict begin 91 96 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2107 b(91)150 299 y Fo(8)80 +%%Page: 89 95 +TeXDict begin 89 94 bop 150 -116 a Ft(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2107 b(89)150 299 y Fo(8)80 b(Command)54 b(Line)f(Editing)275 539 y Ft(This)39 b(c)m(hapter)h (describ)s(es)g(the)g(basic)g(features)g(of)h(the)f Fl(gnu)f Ft(command)h(line)g(editing)h(in)m(terface.)150 648 y(Command)25 @@ -11060,7 +10631,7 @@ a Fg(i)351 3043 y Ft(,)47 b(and)612 3040 y Fg(h)p 637 2987 148 4 v 637 3043 a Ff(T)-6 b(AB)p 637 3059 V 780 3040 a Fg(i)853 3043 y Ft(all)45 b(stand)e(for)g(themselv)m(es)i(when)d (seen)i(in)f(this)g(text,)48 b(or)43 b(in)g(an)h(init)f(\014le)h(\(see) -150 3153 y(Section)37 b(8.3)g([Readline)g(Init)f(File],)j(page)e(94\).) +150 3153 y(Section)37 b(8.3)g([Readline)g(Init)f(File],)j(page)e(92\).) 59 b(If)36 b(y)m(our)g(k)m(eyb)s(oard)g(lac)m(ks)h(a)2897 3150 y Fg(h)p 2921 3097 144 4 v 2921 3153 a Ff(LFD)p 2921 3168 V 3061 3150 a Fg(i)3127 3153 y Ft(k)m(ey)-8 @@ -11105,8 +10676,8 @@ b(If)32 b(y)m(ou)h(mist)m(yp)s(e)g(a)150 5340 y(c)m(haracter,)f(y)m(ou) f(can)g(use)f(y)m(our)g(erase)h(c)m(haracter)h(to)f(bac)m(k)g(up)f(and) f(delete)j(the)f(mist)m(yp)s(ed)e(c)m(haracter.)p eop end -%%Page: 92 98 -TeXDict begin 92 97 bop 150 -116 a Ft(92)2572 b(Bash)31 +%%Page: 90 96 +TeXDict begin 90 95 bop 150 -116 a Ft(90)2572 b(Bash)31 b(Reference)g(Man)m(ual)275 299 y(Sometimes)g(y)m(ou)g(ma)m(y)h(mist)m (yp)s(e)e(a)i(c)m(haracter,)g(and)e(not)i(notice)g(the)f(error)f(un)m (til)h(y)m(ou)g(ha)m(v)m(e)h(t)m(yp)s(ed)150 408 y(sev)m(eral)e(other)f @@ -11171,9 +10742,9 @@ g(w)m(ord.)150 4922 y Fj(C-l)336 b Ft(Clear)31 b(the)f(screen,)h b(that)f(con)m(trol)g(k)m(eystrok)m(es)h(op)s(erate)e(on)g(c)m (haracters)h(while)f(meta)h(k)m(eystrok)m(es)h(op)s(erate)e(on)150 5340 y(w)m(ords.)p eop end -%%Page: 93 99 -TeXDict begin 93 98 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2107 b(93)150 299 y Fk(8.2.3)63 +%%Page: 91 97 +TeXDict begin 91 96 bop 150 -116 a Ft(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2107 b(91)150 299 y Fk(8.2.3)63 b(Readline)40 b(Killing)i(Commands)275 566 y Fq(Killing)j Ft(text)39 b(means)e(to)h(delete)g(the)g(text)g(from)f(the)g(line,)j (but)d(to)h(sa)m(v)m(e)h(it)e(a)m(w)m(a)m(y)j(for)d(later)h(use,)150 @@ -11247,99 +10818,97 @@ b(F)-8 b(or)30 b(example,)g(to)f(giv)m(e)i(the)e Fj(C-d)150 (t)m(yp)s(e)h(`)p Fs(M-1)29 b(0)h(C-d)p Ft(',)39 b(whic)m(h)e(will)h (delete)h(the)e(next)h(ten)150 5340 y(c)m(haracters)32 b(on)e(the)h(input)e(line.)p eop end -%%Page: 94 100 -TeXDict begin 94 99 bop 150 -116 a Ft(94)2572 b(Bash)31 +%%Page: 92 98 +TeXDict begin 92 97 bop 150 -116 a Ft(92)2572 b(Bash)31 b(Reference)g(Man)m(ual)150 299 y Fk(8.2.5)63 b(Searc)m(hing)40 -b(for)i(Commands)g(in)f(the)g(History)275 540 y Ft(Readline)23 +b(for)i(Commands)g(in)f(the)g(History)275 548 y Ft(Readline)23 b(pro)m(vides)g(commands)f(for)h(searc)m(hing)h(through)e(the)h -(command)g(history)f(\(see)i(Section)g(9.1)150 649 y([Bash)37 -b(History)h(F)-8 b(acilities],)42 b(page)37 b(117\))i(for)d(lines)h +(command)g(history)f(\(see)i(Section)g(9.1)150 657 y([Bash)37 +b(History)h(F)-8 b(acilities],)42 b(page)37 b(115\))i(for)d(lines)h (con)m(taining)i(a)e(sp)s(eci\014ed)f(string.)60 b(There)36 -b(are)i(t)m(w)m(o)150 759 y(searc)m(h)31 b(mo)s(des:)40 +b(are)i(t)m(w)m(o)150 767 y(searc)m(h)31 b(mo)s(des:)40 b Fq(incremen)m(tal)35 b Ft(and)30 b Fq(non-incremen)m(tal)p -Ft(.)275 890 y(Incremen)m(tal)c(searc)m(hes)h(b)s(egin)e(b)s(efore)g +Ft(.)275 906 y(Incremen)m(tal)c(searc)m(hes)h(b)s(egin)e(b)s(efore)g (the)h(user)f(has)h(\014nished)e(t)m(yping)i(the)g(searc)m(h)g(string.) -39 b(As)26 b(eac)m(h)150 1000 y(c)m(haracter)37 b(of)e(the)h(searc)m(h) +39 b(As)26 b(eac)m(h)150 1015 y(c)m(haracter)37 b(of)e(the)h(searc)m(h) g(string)f(is)h(t)m(yp)s(ed,)g(Readline)g(displa)m(ys)g(the)f(next)h -(en)m(try)g(from)e(the)i(history)150 1109 y(matc)m(hing)25 +(en)m(try)g(from)e(the)i(history)150 1125 y(matc)m(hing)25 b(the)f(string)g(t)m(yp)s(ed)g(so)g(far.)39 b(An)23 b(incremen)m(tal)j (searc)m(h)e(requires)g(only)g(as)g(man)m(y)g(c)m(haracters)i(as)150 -1219 y(needed)i(to)i(\014nd)d(the)i(desired)f(history)h(en)m(try)-8 +1235 y(needed)i(to)i(\014nd)d(the)i(desired)f(history)h(en)m(try)-8 b(.)41 b(T)-8 b(o)29 b(searc)m(h)h(bac)m(kw)m(ard)f(in)f(the)h(history) -g(for)f(a)i(particular)150 1329 y(string,)g(t)m(yp)s(e)f +g(for)f(a)i(particular)150 1344 y(string,)g(t)m(yp)s(e)f Fj(C-r)p Ft(.)40 b(T)m(yping)29 b Fj(C-s)g Ft(searc)m(hes)h(forw)m(ard) f(through)g(the)g(history)-8 b(.)41 b(The)29 b(c)m(haracters)i(presen)m -(t)150 1438 y(in)38 b(the)g(v)-5 b(alue)38 b(of)g(the)g +(t)150 1454 y(in)38 b(the)g(v)-5 b(alue)38 b(of)g(the)g Fs(isearch-terminators)33 b Ft(v)-5 b(ariable)39 b(are)f(used)f(to)i -(terminate)g(an)f(incremen)m(tal)150 1548 y(searc)m(h.)63 +(terminate)g(an)f(incremen)m(tal)150 1563 y(searc)m(h.)63 b(If)38 b(that)g(v)-5 b(ariable)38 b(has)g(not)g(b)s(een)f(assigned)h -(a)g(v)-5 b(alue,)40 b(the)2578 1545 y Fg(h)p 2602 1492 -139 4 v 2602 1548 a Ff(ESC)p 2602 1563 V 2736 1545 a -Fg(i)2804 1548 y Ft(and)d Fj(C-J)f Ft(c)m(haracters)k(will)150 -1657 y(terminate)j(an)g(incremen)m(tal)g(searc)m(h.)78 +(a)g(v)-5 b(alue,)40 b(the)2578 1560 y Fg(h)p 2602 1507 +139 4 v 2602 1563 a Ff(ESC)p 2602 1579 V 2736 1560 a +Fg(i)2804 1563 y Ft(and)d Fj(C-J)f Ft(c)m(haracters)k(will)150 +1673 y(terminate)j(an)g(incremen)m(tal)g(searc)m(h.)78 b Fj(C-g)41 b Ft(will)i(ab)s(ort)f(an)g(incremen)m(tal)i(searc)m(h)f -(and)f(restore)h(the)150 1767 y(original)30 b(line.)41 +(and)f(restore)h(the)150 1782 y(original)30 b(line.)41 b(When)28 b(the)h(searc)m(h)h(is)f(terminated,)h(the)f(history)g(en)m -(try)g(con)m(taining)h(the)f(searc)m(h)h(string)150 1877 -y(b)s(ecomes)h(the)f(curren)m(t)g(line.)275 2008 y(T)-8 +(try)g(con)m(taining)h(the)f(searc)m(h)h(string)150 1892 +y(b)s(ecomes)h(the)f(curren)m(t)g(line.)275 2031 y(T)-8 b(o)31 b(\014nd)e(other)j(matc)m(hing)g(en)m(tries)g(in)e(the)h (history)g(list,)h(t)m(yp)s(e)g Fj(C-r)e Ft(or)h Fj(C-s)f -Ft(as)h(appropriate.)43 b(This)150 2117 y(will)26 b(searc)m(h)h(bac)m +Ft(as)h(appropriate.)43 b(This)150 2141 y(will)26 b(searc)m(h)h(bac)m (kw)m(ard)g(or)f(forw)m(ard)g(in)f(the)i(history)f(for)g(the)g(next)g (en)m(try)h(matc)m(hing)g(the)f(searc)m(h)h(string)150 -2227 y(t)m(yp)s(ed)37 b(so)h(far.)63 b(An)m(y)38 b(other)f(k)m(ey)i +2250 y(t)m(yp)s(ed)37 b(so)h(far.)63 b(An)m(y)38 b(other)f(k)m(ey)i (sequence)f(b)s(ound)e(to)i(a)g(Readline)h(command)e(will)h(terminate)h -(the)150 2337 y(searc)m(h)22 b(and)e(execute)j(that)e(command.)38 -b(F)-8 b(or)22 b(instance,)h(a)2127 2334 y Fg(h)p 2151 -2281 151 4 v 2151 2337 a Ff(RET)p 2151 2352 V 2298 2334 -a Fg(i)2349 2337 y Ft(will)e(terminate)h(the)f(searc)m(h)h(and)e -(accept)150 2446 y(the)30 b(line,)g(thereb)m(y)f(executing)i(the)e +(the)150 2360 y(searc)m(h)22 b(and)e(execute)j(that)e(command.)38 +b(F)-8 b(or)22 b(instance,)h(a)2127 2357 y Fg(h)p 2151 +2304 151 4 v 2151 2360 a Ff(RET)p 2151 2375 V 2298 2357 +a Fg(i)2349 2360 y Ft(will)e(terminate)h(the)f(searc)m(h)h(and)e +(accept)150 2469 y(the)30 b(line,)g(thereb)m(y)f(executing)i(the)e (command)g(from)g(the)h(history)f(list.)41 b(A)29 b(mo)m(v)m(emen)m(t)j -(command)d(will)150 2556 y(terminate)i(the)g(searc)m(h,)g(mak)m(e)h +(command)d(will)150 2579 y(terminate)i(the)g(searc)m(h,)g(mak)m(e)h (the)e(last)h(line)g(found)e(the)i(curren)m(t)f(line,)h(and)f(b)s(egin) -g(editing.)275 2687 y(Readline)35 b(remem)m(b)s(ers)f(the)h(last)h +g(editing.)275 2718 y(Readline)35 b(remem)m(b)s(ers)f(the)h(last)h (incremen)m(tal)g(searc)m(h)f(string.)54 b(If)34 b(t)m(w)m(o)j -Fj(C-r)p Ft(s)c(are)i(t)m(yp)s(ed)g(without)150 2797 +Fj(C-r)p Ft(s)c(are)i(t)m(yp)s(ed)g(without)150 2828 y(an)m(y)i(in)m(terv)m(ening)g(c)m(haracters)h(de\014ning)e(a)h(new)f (searc)m(h)h(string,)h(an)m(y)f(remem)m(b)s(ered)e(searc)m(h)i(string)g -(is)150 2906 y(used.)275 3037 y(Non-incremen)m(tal)48 +(is)150 2937 y(used.)275 3076 y(Non-incremen)m(tal)48 b(searc)m(hes)g(read)e(the)h(en)m(tire)h(searc)m(h)f(string)g(b)s -(efore)f(starting)h(to)h(searc)m(h)f(for)150 3147 y(matc)m(hing)d +(efore)f(starting)h(to)h(searc)m(h)f(for)150 3186 y(matc)m(hing)d (history)e(lines.)78 b(The)42 b(searc)m(h)h(string)g(ma)m(y)g(b)s(e)f (t)m(yp)s(ed)g(b)m(y)g(the)h(user)f(or)h(b)s(e)f(part)g(of)h(the)150 -3257 y(con)m(ten)m(ts)32 b(of)f(the)f(curren)m(t)g(line.)150 -3504 y Fr(8.3)68 b(Readline)47 b(Init)e(File)275 3745 +3295 y(con)m(ten)m(ts)32 b(of)f(the)f(curren)m(t)g(line.)150 +3564 y Fr(8.3)68 b(Readline)47 b(Init)e(File)275 3813 y Ft(Although)g(the)g(Readline)h(library)e(comes)i(with)f(a)h(set)f(of) -g(Emacs-lik)m(e)i(k)m(eybindings)e(installed)150 3855 +g(Emacs-lik)m(e)i(k)m(eybindings)e(installed)150 3922 y(b)m(y)d(default,)i(it)f(is)e(p)s(ossible)g(to)i(use)e(a)h(di\013eren) m(t)g(set)g(of)g(k)m(eybindings.)74 b(An)m(y)42 b(user)f(can)h -(customize)150 3964 y(programs)32 b(that)h(use)f(Readline)h(b)m(y)g +(customize)150 4032 y(programs)32 b(that)h(use)f(Readline)h(b)m(y)g (putting)f(commands)g(in)g(an)g Fq(inputrc)37 b Ft(\014le,)d(con)m(v)m -(en)m(tionally)h(in)d(his)150 4074 y(home)d(directory)-8 +(en)m(tionally)h(in)d(his)150 4142 y(home)d(directory)-8 b(.)41 b(The)28 b(name)g(of)h(this)g(\014le)f(is)h(tak)m(en)h(from)e (the)h(v)-5 b(alue)29 b(of)g(the)f(shell)h(v)-5 b(ariable)30 -b Fs(INPUTRC)p Ft(.)150 4184 y(If)k(that)g(v)-5 b(ariable)35 -b(is)g(unset,)g(the)f(default)g(is)g(`)p Fs(~/.inputrc)p -Ft('.)50 b(If)34 b(that)h(\014le)f(do)s(es)g(not)g(exist)h(or)f(cannot) -150 4293 y(b)s(e)c(read,)g(the)h(ultimate)g(default)g(is)f(`)p -Fs(/etc/inputrc)p Ft('.)275 4425 y(When)f(a)h(program)f(whic)m(h)h -(uses)f(the)h(Readline)g(library)f(starts)h(up,)f(the)h(init)g(\014le)f -(is)h(read,)g(and)f(the)150 4534 y(k)m(ey)i(bindings)e(are)i(set.)275 -4665 y(In)26 b(addition,)i(the)f Fs(C-x)i(C-r)d Ft(command)h(re-reads)g +b Fs(INPUTRC)p Ft(.)150 4251 y(If)g(that)h(v)-5 b(ariable)31 +b(is)f(unset,)h(the)f(default)h(is)f(`)p Fs(~/.inputrc)p +Ft('.)275 4390 y(When)f(a)h(program)f(whic)m(h)h(uses)f(the)h(Readline) +g(library)f(starts)h(up,)f(the)h(init)g(\014le)f(is)h(read,)g(and)f +(the)150 4500 y(k)m(ey)i(bindings)e(are)i(set.)275 4639 +y(In)26 b(addition,)i(the)f Fs(C-x)i(C-r)d Ft(command)h(re-reads)g (this)f(init)h(\014le,)h(th)m(us)f(incorp)s(orating)g(an)m(y)g(c)m -(hanges)150 4775 y(that)k(y)m(ou)g(migh)m(t)g(ha)m(v)m(e)g(made)g(to)g -(it.)150 4990 y Fk(8.3.1)63 b(Readline)40 b(Init)h(File)g(Syn)m(tax)275 +(hanges)150 4748 y(that)k(y)m(ou)g(migh)m(t)g(ha)m(v)m(e)g(made)g(to)g +(it.)150 4982 y Fk(8.3.1)63 b(Readline)40 b(Init)h(File)g(Syn)m(tax)275 5230 y Ft(There)33 b(are)h(only)g(a)g(few)f(basic)h(constructs)g(allo)m (w)m(ed)h(in)f(the)g(Readline)g(init)g(\014le.)51 b(Blank)34 b(lines)g(are)150 5340 y(ignored.)72 b(Lines)41 b(b)s(eginning)f(with)h (a)g(`)p Fs(#)p Ft(')g(are)h(commen)m(ts.)73 b(Lines)41 b(b)s(eginning)f(with)g(a)i(`)p Fs($)p Ft(')f(indicate)p eop end -%%Page: 95 101 -TeXDict begin 95 100 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2107 b(95)150 299 y(conditional)43 +%%Page: 93 99 +TeXDict begin 93 98 bop 150 -116 a Ft(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2107 b(93)150 299 y(conditional)43 b(constructs)e(\(see)i(Section)f(8.3.2)h([Conditional)f(Init)f -(Constructs],)j(page)f(99\).)74 b(Other)150 408 y(lines)31 +(Constructs],)j(page)f(97\).)74 b(Other)150 408 y(lines)31 b(denote)g(v)-5 b(ariable)31 b(settings)g(and)f(k)m(ey)h(bindings.)150 579 y(V)-8 b(ariable)32 b(Settings)630 689 y(Y)-8 b(ou)41 b(can)g(mo)s(dify)e(the)i(run-time)f(b)s(eha)m(vior)g(of)h(Readline)g @@ -11402,8 +10971,8 @@ b(alue)1110 5230 y(greater)26 b(than)f(or)f(equal)i(to)f(0.)40 b(A)24 b(negativ)m(e)j(v)-5 b(alue)26 b(means)e(Readline)i(should)1110 5340 y(nev)m(er)31 b(ask.)41 b(The)29 b(default)i(limit)g(is)g Fs(100)p Ft(.)p eop end -%%Page: 96 102 -TeXDict begin 96 101 bop 150 -116 a Ft(96)2572 b(Bash)31 +%%Page: 94 100 +TeXDict begin 94 99 bop 150 -116 a Ft(94)2572 b(Bash)31 b(Reference)g(Man)m(ual)630 299 y Fs(convert-meta)1110 408 y Ft(If)22 b(set)g(to)h(`)p Fs(on)p Ft(',)h(Readline)f(will)f(con)m (v)m(ert)i(c)m(haracters)f(with)f(the)g(eigh)m(th)h(bit)f(set)1110 @@ -11463,7 +11032,7 @@ Ft('.)69 b(The)1110 4390 y(name)30 b Fs(meta-flag)e Ft(is)j(a)f(synon)m (terminate)j(an)f(incremen)m(tal)1110 4755 y(searc)m(h)25 b(without)g(subsequen)m(tly)g(executing)h(the)f(c)m(haracter)h(as)f(a)g (command)1110 4865 y(\(see)42 b(Section)f(8.2.5)i([Searc)m(hing],)i -(page)c(94\).)73 b(If)41 b(this)g(v)-5 b(ariable)41 b(has)g(not)1110 +(page)c(92\).)73 b(If)41 b(this)g(v)-5 b(ariable)41 b(has)g(not)1110 4975 y(b)s(een)31 b(giv)m(en)h(a)g(v)-5 b(alue,)32 b(the)g(c)m (haracters)2494 4972 y Fg(h)p 2518 4919 V 2518 4975 a Ff(ESC)p 2518 4990 V 2652 4972 a Fg(i)2713 4975 y Ft(and)f @@ -11472,9 +11041,9 @@ Fj(C-J)g Ft(will)h(terminate)g(an)1110 5084 y(incremen)m(tal)g(searc)m (the)g(curren)m(t)f(k)m(eymap)h(for)g(k)m(ey)g(binding)f(com-)1110 5340 y(mands.)81 b(Acceptable)47 b Fs(keymap)42 b Ft(names)i(are)h Fs(emacs)p Ft(,)i Fs(emacs-standard)p Ft(,)p eop end -%%Page: 97 103 -TeXDict begin 97 102 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2107 b(97)1110 299 y Fs(emacs-meta)p +%%Page: 95 101 +TeXDict begin 95 100 bop 150 -116 a Ft(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2107 b(95)1110 299 y Fs(emacs-meta)p Ft(,)99 b Fs(emacs-ctlx)p Ft(,)f Fs(vi)p Ft(,)j Fs(vi-move)p Ft(,)f Fs(vi-command)p Ft(,)f(and)1110 408 y Fs(vi-insert)p Ft(.)64 b Fs(vi)38 b Ft(is)h(equiv)-5 b(alen)m(t)41 b(to)e @@ -11542,193 +11111,187 @@ b(cause)g(the)h(matc)m(hes)g(to)g(b)s(e)f(listed)g(immediately)i (instead)e(of)h(ring-)1110 5340 y(ing)g(the)f(b)s(ell.)41 b(The)30 b(default)g(v)-5 b(alue)31 b(is)f(`)p Fs(off)p Ft('.)p eop end -%%Page: 98 104 -TeXDict begin 98 103 bop 150 -116 a Ft(98)2572 b(Bash)31 +%%Page: 96 102 +TeXDict begin 96 101 bop 150 -116 a Ft(96)2572 b(Bash)31 b(Reference)g(Man)m(ual)630 299 y Fs(visible-stats)1110 408 y Ft(If)g(set)i(to)f(`)p Fs(on)p Ft(',)h(a)f(c)m(haracter)i (denoting)e(a)g(\014le's)g(t)m(yp)s(e)g(is)g(app)s(ended)e(to)j(the) 1110 518 y(\014lename)e(when)e(listing)i(p)s(ossible)f(completions.)42 -b(The)30 b(default)g(is)h(`)p Fs(off)p Ft('.)150 675 -y(Key)f(Bindings)630 784 y(The)41 b(syn)m(tax)i(for)f(con)m(trolling)h +b(The)30 b(default)g(is)h(`)p Fs(off)p Ft('.)150 669 +y(Key)f(Bindings)630 778 y(The)41 b(syn)m(tax)i(for)f(con)m(trolling)h (k)m(ey)g(bindings)e(in)h(the)g(init)g(\014le)g(is)g(simple.)75 -b(First)43 b(y)m(ou)630 894 y(need)27 b(to)i(\014nd)d(the)i(name)f(of)h +b(First)43 b(y)m(ou)630 888 y(need)27 b(to)i(\014nd)d(the)i(name)f(of)h (the)g(command)f(that)i(y)m(ou)f(w)m(an)m(t)g(to)g(c)m(hange.)41 -b(The)27 b(follo)m(wing)630 1003 y(sections)37 b(con)m(tain)g(tables)g +b(The)27 b(follo)m(wing)630 998 y(sections)37 b(con)m(tain)g(tables)g (of)f(the)g(command)f(name,)j(the)e(default)g(k)m(eybinding,)h(if)f(an) -m(y)-8 b(,)630 1113 y(and)30 b(a)h(short)f(description)g(of)h(what)f -(the)g(command)h(do)s(es.)630 1246 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g +m(y)-8 b(,)630 1107 y(and)30 b(a)h(short)f(description)g(of)h(what)f +(the)g(command)h(do)s(es.)630 1237 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g (name)g(of)g(the)g(command,)h(simply)f(place)h(on)e(a)i(line)f(in)g -(the)g(init)630 1356 y(\014le)e(the)g(name)f(of)h(the)g(k)m(ey)g(y)m +(the)g(init)630 1347 y(\014le)e(the)g(name)f(of)h(the)g(k)m(ey)g(y)m (ou)g(wish)f(to)h(bind)f(the)h(command)f(to,)i(a)f(colon,)i(and)d(then) -630 1465 y(the)f(name)h(of)f(the)g(command.)46 b(There)32 -b(can)g(b)s(e)g(no)g(space)g(b)s(et)m(w)m(een)h(the)f(k)m(ey)h(name)g -(and)630 1575 y(the)41 b(colon)h({)f(that)g(will)g(b)s(e)g(in)m -(terpreted)g(as)g(part)f(of)h(the)g(k)m(ey)h(name.)72 -b(The)40 b(name)h(of)630 1684 y(the)35 b(k)m(ey)g(can)g(b)s(e)f -(expressed)f(in)i(di\013eren)m(t)g(w)m(a)m(ys,)h(dep)s(ending)d(on)h -(what)h(y)m(ou)g(\014nd)e(most)630 1794 y(comfortable.)630 -1927 y(In)i(addition)h(to)h(command)f(names,)i(readline)e(allo)m(ws)h -(k)m(eys)g(to)g(b)s(e)e(b)s(ound)f(to)j(a)f(string)630 -2037 y(that)31 b(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f(pressed)g -(\(a)h Fq(macro)5 b Ft(\).)630 2170 y(The)42 b Fs(bind)30 -b(-p)42 b Ft(command)h(displa)m(ys)g(Readline)g(function)g(names)g(and) -f(bindings)g(in)h(a)630 2279 y(format)37 b(that)h(can)f(put)f(directly) -i(in)m(to)g(an)f(initialization)j(\014le.)60 b(See)38 -b(Section)f(4.2)i([Bash)630 2389 y(Builtins],)31 b(page)g(41.)630 -2545 y Fq(k)m(eyname)5 b Ft(:)42 b Fq(function-name)35 -b Ft(or)c Fq(macro)1110 2655 y(k)m(eyname)k Ft(is)29 -b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s(elled)e(out)h(in)g(English.)39 -b(F)-8 b(or)30 b(example:)1350 2788 y Fs(Control-u:)45 -b(universal-argument)1350 2898 y(Meta-Rubout:)f(backward-kill-word)1350 -3007 y(Control-o:)h(">)i(output")1110 3140 y Ft(In)38 -b(the)h(ab)s(o)m(v)m(e)h(example,)h Fj(C-u)d Ft(is)h(b)s(ound)d(to)k -(the)e(function)h Fs(universal-)1110 3250 y(argument)p -Ft(,)f Fj(M-DEL)e Ft(is)i(b)s(ound)e(to)i(the)g(function)g -Fs(backward-kill-word)p Ft(,)1110 3360 y(and)g Fj(C-o)g -Ft(is)h(b)s(ound)e(to)j(run)d(the)j(macro)f(expressed)g(on)f(the)i -(righ)m(t)f(hand)1110 3469 y(side)30 b(\(that)i(is,)e(to)h(insert)g -(the)f(text)i(`)p Fs(>)e(output)p Ft(')f(in)m(to)i(the)g(line\).)1110 -3602 y(A)37 b(n)m(um)m(b)s(er)f(of)h(sym)m(b)s(olic)g(c)m(haracter)i -(names)e(are)g(recognized)h(while)f(pro-)1110 3712 y(cessing)24 -b(this)g(k)m(ey)g(binding)f(syn)m(tax:)37 b Fq(DEL)p -Ft(,)24 b Fq(ESC)p Ft(,)f Fq(ESCAPE)p Ft(,)g Fq(LFD)p -Ft(,)h Fq(NEW-)1110 3821 y(LINE)p Ft(,)30 b Fq(RET)p -Ft(,)g Fq(RETURN)p Ft(,)h Fq(R)m(UBOUT)p Ft(,)g Fq(SP)-8 -b(A)m(CE)p Ft(,)30 b Fq(SPC)p Ft(,)g(and)f Fq(T)-8 b(AB)p -Ft(.)630 3978 y Fs(")p Fq(k)m(eyseq)r Fs(")p Ft(:)41 -b Fq(function-name)36 b Ft(or)30 b Fq(macro)1110 4088 +630 1456 y(the)f(name)g(of)g(the)g(command.)46 b(The)31 +b(name)h(of)g(the)g(k)m(ey)h(can)f(b)s(e)f(expressed)h(in)f(di\013eren) +m(t)630 1566 y(w)m(a)m(ys,)g(dep)s(ending)e(on)i(what)f(y)m(ou)h +(\014nd)d(most)j(comfortable.)630 1696 y(In)k(addition)h(to)h(command)f +(names,)i(readline)e(allo)m(ws)h(k)m(eys)g(to)g(b)s(e)e(b)s(ound)f(to)j +(a)f(string)630 1806 y(that)31 b(is)f(inserted)h(when)e(the)i(k)m(ey)g +(is)f(pressed)g(\(a)h Fq(macro)5 b Ft(\).)630 1936 y(The)42 +b Fs(bind)30 b(-p)42 b Ft(command)h(displa)m(ys)g(Readline)g(function)g +(names)g(and)f(bindings)g(in)h(a)630 2045 y(format)37 +b(that)h(can)f(put)f(directly)i(in)m(to)g(an)f(initialization)j +(\014le.)60 b(See)38 b(Section)f(4.2)i([Bash)630 2155 +y(Builtins],)31 b(page)g(41.)630 2306 y Fq(k)m(eyname)5 +b Ft(:)42 b Fq(function-name)35 b Ft(or)c Fq(macro)1110 +2415 y(k)m(eyname)k Ft(is)29 b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s +(elled)e(out)h(in)g(English.)39 b(F)-8 b(or)30 b(example:)1350 +2545 y Fs(Control-u:)45 b(universal-argument)1350 2655 +y(Meta-Rubout:)f(backward-kill-word)1350 2765 y(Control-o:)h(">)i +(output")1110 2895 y Ft(In)38 b(the)h(ab)s(o)m(v)m(e)h(example,)h +Fj(C-u)d Ft(is)h(b)s(ound)d(to)k(the)e(function)h Fs(universal-)1110 +3004 y(argument)p Ft(,)f Fj(M-DEL)e Ft(is)i(b)s(ound)e(to)i(the)g +(function)g Fs(backward-kill-word)p Ft(,)1110 3114 y(and)g +Fj(C-o)g Ft(is)h(b)s(ound)e(to)j(run)d(the)j(macro)f(expressed)g(on)f +(the)i(righ)m(t)f(hand)1110 3224 y(side)30 b(\(that)i(is,)e(to)h +(insert)g(the)f(text)i(`)p Fs(>)e(output)p Ft(')f(in)m(to)i(the)g +(line\).)1110 3354 y(A)37 b(n)m(um)m(b)s(er)f(of)h(sym)m(b)s(olic)g(c)m +(haracter)i(names)e(are)g(recognized)h(while)f(pro-)1110 +3463 y(cessing)24 b(this)g(k)m(ey)g(binding)f(syn)m(tax:)37 +b Fq(DEL)p Ft(,)24 b Fq(ESC)p Ft(,)f Fq(ESCAPE)p Ft(,)g +Fq(LFD)p Ft(,)h Fq(NEW-)1110 3573 y(LINE)p Ft(,)30 b +Fq(RET)p Ft(,)g Fq(RETURN)p Ft(,)h Fq(R)m(UBOUT)p Ft(,)g +Fq(SP)-8 b(A)m(CE)p Ft(,)30 b Fq(SPC)p Ft(,)g(and)f Fq(T)-8 +b(AB)p Ft(.)630 3724 y Fs(")p Fq(k)m(eyseq)r Fs(")p Ft(:)41 +b Fq(function-name)36 b Ft(or)30 b Fq(macro)1110 3833 y(k)m(eyseq)k Ft(di\013ers)d(from)f Fq(k)m(eyname)37 b Ft(ab)s(o)m(v)m(e)32 b(in)f(that)h(strings)f(denoting)g(an)g(en-)1110 -4197 y(tire)j(k)m(ey)h(sequence)f(can)g(b)s(e)f(sp)s(eci\014ed,)h(b)m -(y)f(placing)i(the)f(k)m(ey)g(sequence)g(in)1110 4307 +3943 y(tire)j(k)m(ey)h(sequence)f(can)g(b)s(e)f(sp)s(eci\014ed,)h(b)m +(y)f(placing)i(the)f(k)m(ey)g(sequence)g(in)1110 4052 y(double)29 b(quotes.)41 b(Some)29 b Fl(gnu)h Ft(Emacs)f(st)m(yle)i(k)m -(ey)f(escap)s(es)g(can)g(b)s(e)f(used,)g(as)1110 4416 +(ey)f(escap)s(es)g(can)g(b)s(e)f(used,)g(as)1110 4162 y(in)k(the)h(follo)m(wing)i(example,)f(but)e(the)h(sp)s(ecial)h(c)m -(haracter)g(names)f(are)g(not)1110 4526 y(recognized.)1350 -4659 y Fs("\\C-u":)46 b(universal-argument)1350 4769 -y("\\C-x\\C-r":)f(re-read-init-file)1350 4878 y("\\e[11~":)g("Function) -h(Key)g(1")1110 5011 y Ft(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74 +(haracter)g(names)f(are)g(not)1110 4271 y(recognized.)1350 +4402 y Fs("\\C-u":)46 b(universal-argument)1350 4511 +y("\\C-x\\C-r":)f(re-read-init-file)1350 4621 y("\\e[11~":)g("Function) +h(Key)g(1")1110 4751 y Ft(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74 b Fj(C-u)64 b Ft(is)g(again)i(b)s(ound)c(to)k(the)e(function)1110 -5121 y Fs(universal-argument)39 b Ft(\(just)k(as)h(it)g(w)m(as)g(in)g -(the)f(\014rst)g(example\),)49 b(`)p Fj(C-x)1110 5230 +4861 y Fs(universal-argument)39 b Ft(\(just)k(as)h(it)g(w)m(as)g(in)g +(the)f(\014rst)g(example\),)49 b(`)p Fj(C-x)1110 4970 y(C-r)p Ft(')41 b(is)g(b)s(ound)e(to)j(the)f(function)g -Fs(re-read-init-file)p Ft(,)e(and)i(`)3462 5227 y Fg(h)p -3486 5174 139 4 v 3486 5230 a Ff(ESC)p 3486 5246 V 3620 -5227 a Fg(i)31 b(h)p 3705 5174 20 4 v 3705 5230 a Ff([)p -3705 5247 V 3720 5227 a Fg(i)1110 5337 y(h)p 1134 5284 -36 4 v 1134 5340 a Ff(1)p 1134 5355 V 1165 5337 a Fg(i)f(h)p -1250 5284 V 1250 5340 a Ff(1)p 1250 5355 V 1281 5337 -a Fg(i)g(h)p 1365 5284 48 4 v 1365 5340 a Fs(~)p 1365 -5355 V 1409 5337 a Fg(i)1438 5340 y Ft(')h(is)f(b)s(ound)f(to)i(insert) -f(the)h(text)g(`)p Fs(Function)d(Key)i(1)p Ft('.)p eop -end -%%Page: 99 105 -TeXDict begin 99 104 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2107 b(99)630 299 y(The)29 -b(follo)m(wing)i Fl(gnu)f Ft(Emacs)g(st)m(yle)h(escap)s(e)f(sequences)g -(are)g(a)m(v)-5 b(ailable)32 b(when)d(sp)s(ecifying)630 -408 y(k)m(ey)i(sequences:)630 572 y Fj(\\C-)336 b Ft(con)m(trol)32 -b(pre\014x)630 736 y Fj(\\M-)336 b Ft(meta)31 b(pre\014x)630 -899 y Fj(\\e)384 b Ft(an)30 b(escap)s(e)h(c)m(haracter)630 -1063 y Fj(\\\\)384 b Ft(bac)m(kslash)630 1226 y Fj(\\)p -Fs(")1110 1223 y Fg(h)p 1134 1170 48 4 v 1134 1226 a -Fs(")p 1134 1241 V 1178 1223 a Fg(i)1208 1226 y Ft(,)30 -b(a)h(double)f(quotation)h(mark)630 1390 y Fj(\\')1110 -1387 y Fg(h)p 1134 1334 20 4 v 1134 1390 a Ff(')p 1134 -1405 V 1150 1387 a Fg(i)1179 1390 y Ft(,)g(a)g(single)g(quote)g(or)f -(ap)s(ostrophe)630 1553 y(In)d(addition)h(to)g(the)g +Fs(re-read-init-file)p Ft(,)e(and)i(`)3462 4967 y Fg(h)p +3486 4914 139 4 v 3486 4970 a Ff(ESC)p 3486 4985 V 3620 +4967 a Fg(i)31 b(h)p 3705 4914 20 4 v 3705 4970 a Ff([)p +3705 4987 V 3720 4967 a Fg(i)1110 5077 y(h)p 1134 5024 +36 4 v 1134 5080 a Ff(1)p 1134 5095 V 1165 5077 a Fg(i)f(h)p +1250 5024 V 1250 5080 a Ff(1)p 1250 5095 V 1281 5077 +a Fg(i)g(h)p 1365 5024 48 4 v 1365 5080 a Fs(~)p 1365 +5095 V 1409 5077 a Fg(i)1438 5080 y Ft(')h(is)f(b)s(ound)f(to)i(insert) +f(the)h(text)g(`)p Fs(Function)d(Key)i(1)p Ft('.)630 +5230 y(The)f(follo)m(wing)i Fl(gnu)f Ft(Emacs)g(st)m(yle)h(escap)s(e)f +(sequences)g(are)g(a)m(v)-5 b(ailable)32 b(when)d(sp)s(ecifying)630 +5340 y(k)m(ey)i(sequences:)p eop end +%%Page: 97 103 +TeXDict begin 97 102 bop 150 -116 a Ft(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2107 b(97)630 299 y Fj(\\C-)336 +b Ft(con)m(trol)32 b(pre\014x)630 447 y Fj(\\M-)336 b +Ft(meta)31 b(pre\014x)630 596 y Fj(\\e)384 b Ft(an)30 +b(escap)s(e)h(c)m(haracter)630 744 y Fj(\\\\)384 b Ft(bac)m(kslash)630 +893 y Fj(\\)p Fs(")1110 890 y Fg(h)p 1134 837 48 4 v +1134 893 a Fs(")p 1134 908 V 1178 890 a Fg(i)1208 893 +y Ft(,)30 b(a)h(double)f(quotation)h(mark)630 1041 y +Fj(\\')1110 1038 y Fg(h)p 1134 985 20 4 v 1134 1041 a +Ff(')p 1134 1057 V 1150 1038 a Fg(i)1179 1041 y Ft(,)g(a)g(single)g +(quote)g(or)f(ap)s(ostrophe)630 1190 y(In)d(addition)h(to)g(the)g Fl(gnu)f Ft(Emacs)h(st)m(yle)h(escap)s(e)f(sequences,)h(a)f(second)f -(set)h(of)g(bac)m(kslash)630 1663 y(escap)s(es)j(is)f(a)m(v)-5 -b(ailable:)630 1826 y Fs(\\a)384 b Ft(alert)31 b(\(b)s(ell\))630 -1990 y Fs(\\b)384 b Ft(bac)m(kspace)630 2153 y Fs(\\d)g -Ft(delete)630 2317 y Fs(\\f)g Ft(form)30 b(feed)630 2480 -y Fs(\\n)384 b Ft(newline)630 2644 y Fs(\\r)g Ft(carriage)32 -b(return)630 2807 y Fs(\\t)384 b Ft(horizon)m(tal)32 -b(tab)630 2971 y Fs(\\v)384 b Ft(v)m(ertical)32 b(tab)630 -3134 y Fs(\\)p Fj(nnn)288 b Ft(the)35 b(eigh)m(t-bit)h(c)m(haracter)g +(set)h(of)g(bac)m(kslash)630 1300 y(escap)s(es)j(is)f(a)m(v)-5 +b(ailable:)630 1448 y Fs(\\a)384 b Ft(alert)31 b(\(b)s(ell\))630 +1597 y Fs(\\b)384 b Ft(bac)m(kspace)630 1745 y Fs(\\d)g +Ft(delete)630 1894 y Fs(\\f)g Ft(form)30 b(feed)630 2042 +y Fs(\\n)384 b Ft(newline)630 2191 y Fs(\\r)g Ft(carriage)32 +b(return)630 2339 y Fs(\\t)384 b Ft(horizon)m(tal)32 +b(tab)630 2488 y Fs(\\v)384 b Ft(v)m(ertical)32 b(tab)630 +2636 y Fs(\\)p Fj(nnn)288 b Ft(the)35 b(eigh)m(t-bit)h(c)m(haracter)g (whose)e(v)-5 b(alue)35 b(is)g(the)f(o)s(ctal)i(v)-5 -b(alue)35 b Fq(nnn)e Ft(\(one)i(to)1110 3244 y(three)c(digits\))630 -3407 y Fs(\\x)p Fj(HH)288 b Ft(the)40 b(eigh)m(t-bit)h(c)m(haracter)g +b(alue)35 b Fq(nnn)e Ft(\(one)i(to)1110 2746 y(three)c(digits\))630 +2894 y Fs(\\x)p Fj(HH)288 b Ft(the)40 b(eigh)m(t-bit)h(c)m(haracter)g (whose)e(v)-5 b(alue)39 b(is)h(the)f(hexadecimal)i(v)-5 -b(alue)40 b Fq(HH)1110 3517 y Ft(\(one)31 b(or)f(t)m(w)m(o)i(hex)e -(digits\))630 3681 y(When)37 b(en)m(tering)h(the)g(text)g(of)g(a)g +b(alue)40 b Fq(HH)1110 3004 y Ft(\(one)31 b(or)f(t)m(w)m(o)i(hex)e +(digits\))630 3152 y(When)37 b(en)m(tering)h(the)g(text)g(of)g(a)g (macro,)i(single)e(or)f(double)g(quotes)h(m)m(ust)f(b)s(e)g(used)f(to) -630 3790 y(indicate)23 b(a)e(macro)h(de\014nition.)38 +630 3262 y(indicate)23 b(a)e(macro)h(de\014nition.)38 b(Unquoted)21 b(text)i(is)e(assumed)g(to)h(b)s(e)f(a)h(function)f -(name.)38 b(In)630 3900 y(the)22 b(macro)f(b)s(o)s(dy)-8 +(name.)38 b(In)630 3372 y(the)22 b(macro)f(b)s(o)s(dy)-8 b(,)23 b(the)e(bac)m(kslash)h(escap)s(es)g(describ)s(ed)e(ab)s(o)m(v)m -(e)j(are)e(expanded.)37 b(Bac)m(kslash)630 4009 y(will)j(quote)h(an)m +(e)j(are)e(expanded.)37 b(Bac)m(kslash)630 3481 y(will)j(quote)h(an)m (y)f(other)g(c)m(haracter)i(in)d(the)i(macro)f(text,)k(including)39 b(`)p Fs(")p Ft(')h(and)g(`)p Fs(')p Ft('.)69 b(F)-8 -b(or)630 4119 y(example,)28 b(the)e(follo)m(wing)h(binding)d(will)i +b(or)630 3591 y(example,)28 b(the)e(follo)m(wing)h(binding)d(will)i (mak)m(e)h(`)p Fj(C-x)j Fs(\\)p Ft(')c(insert)f(a)h(single)h(`)p -Fs(\\)p Ft(')f(in)m(to)g(the)g(line:)870 4255 y Fs("\\C-x\\\\":)45 -b("\\\\")150 4488 y Fk(8.3.2)63 b(Conditional)41 b(Init)g(Constructs) -275 4736 y Ft(Readline)36 b(implemen)m(ts)f(a)h(facilit)m(y)i(similar)d +Fs(\\)p Ft(')f(in)m(to)g(the)g(line:)870 3720 y Fs("\\C-x\\\\":)45 +b("\\\\")150 3928 y Fk(8.3.2)63 b(Conditional)41 b(Init)g(Constructs) +275 4166 y Ft(Readline)36 b(implemen)m(ts)f(a)h(facilit)m(y)i(similar)d (in)g(spirit)g(to)h(the)g(conditional)h(compilation)g(features)150 -4846 y(of)e(the)f(C)g(prepro)s(cessor)g(whic)m(h)g(allo)m(ws)i(k)m(ey)f +4276 y(of)e(the)f(C)g(prepro)s(cessor)g(whic)m(h)g(allo)m(ws)i(k)m(ey)f (bindings)e(and)h(v)-5 b(ariable)35 b(settings)h(to)f(b)s(e)f(p)s -(erformed)f(as)150 4955 y(the)e(result)f(of)g(tests.)42 +(erformed)f(as)150 4385 y(the)e(result)f(of)g(tests.)42 b(There)30 b(are)h(four)e(parser)h(directiv)m(es)i(used.)150 -5121 y Fs($if)336 b Ft(The)31 b Fs($if)f Ft(construct)i(allo)m(ws)h +4534 y Fs($if)336 b Ft(The)31 b Fs($if)f Ft(construct)i(allo)m(ws)h (bindings)d(to)i(b)s(e)e(made)i(based)f(on)g(the)g(editing)h(mo)s(de,)g -(the)630 5230 y(terminal)39 b(b)s(eing)e(used,)j(or)e(the)g +(the)630 4644 y(terminal)39 b(b)s(eing)e(used,)j(or)e(the)g (application)h(using)f(Readline.)64 b(The)38 b(text)h(of)f(the)g(test) -630 5340 y(extends)30 b(to)h(the)g(end)f(of)g(the)h(line;)g(no)f(c)m -(haracters)i(are)f(required)e(to)i(isolate)i(it.)p eop -end -%%Page: 100 106 -TeXDict begin 100 105 bop 150 -116 a Ft(100)2527 b(Bash)31 -b(Reference)g(Man)m(ual)630 299 y Fs(mode)288 b Ft(The)20 -b Fs(mode=)g Ft(form)g(of)h(the)g Fs($if)f Ft(directiv)m(e)j(is)e(used) -f(to)h(test)h(whether)e(Readline)1110 408 y(is)29 b(in)h -Fs(emacs)e Ft(or)h Fs(vi)g Ft(mo)s(de.)40 b(This)29 b(ma)m(y)h(b)s(e)e -(used)h(in)g(conjunction)h(with)f(the)1110 518 y(`)p -Fs(set)h(keymap)p Ft(')c(command,)i(for)f(instance,)i(to)f(set)g -(bindings)f(in)g(the)h Fs(emacs-)1110 628 y(standard)23 +630 4753 y(extends)30 b(to)h(the)g(end)f(of)g(the)h(line;)g(no)f(c)m +(haracters)i(are)f(required)e(to)i(isolate)i(it.)630 +4902 y Fs(mode)288 b Ft(The)20 b Fs(mode=)g Ft(form)g(of)h(the)g +Fs($if)f Ft(directiv)m(e)j(is)e(used)f(to)h(test)h(whether)e(Readline) +1110 5011 y(is)29 b(in)h Fs(emacs)e Ft(or)h Fs(vi)g Ft(mo)s(de.)40 +b(This)29 b(ma)m(y)h(b)s(e)e(used)h(in)g(conjunction)h(with)f(the)1110 +5121 y(`)p Fs(set)h(keymap)p Ft(')c(command,)i(for)f(instance,)i(to)f +(set)g(bindings)f(in)g(the)h Fs(emacs-)1110 5230 y(standard)23 b Ft(and)h Fs(emacs-ctlx)f Ft(k)m(eymaps)i(only)g(if)g(Readline)h(is)f -(starting)h(out)1110 737 y(in)k Fs(emacs)f Ft(mo)s(de.)630 -897 y Fs(term)288 b Ft(The)26 b Fs(term=)g Ft(form)g(ma)m(y)i(b)s(e)e -(used)g(to)i(include)f(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 -1006 y(ings,)38 b(p)s(erhaps)c(to)j(bind)e(the)h(k)m(ey)h(sequences)f -(output)g(b)m(y)g(the)g(terminal's)1110 1116 y(function)24 -b(k)m(eys.)39 b(The)23 b(w)m(ord)h(on)f(the)i(righ)m(t)f(side)g(of)g -(the)g(`)p Fs(=)p Ft(')g(is)g(tested)h(against)1110 1225 -y(b)s(oth)k(the)h(full)g(name)g(of)g(the)g(terminal)h(and)e(the)i(p)s -(ortion)e(of)h(the)g(terminal)1110 1335 y(name)k(b)s(efore)f(the)g -(\014rst)g(`)p Fs(-)p Ft('.)50 b(This)33 b(allo)m(ws)i -Fs(sun)e Ft(to)h(matc)m(h)g(b)s(oth)f Fs(sun)g Ft(and)1110 -1445 y Fs(sun-cmd)p Ft(,)c(for)h(instance.)630 1604 y -Fs(application)1110 1714 y Ft(The)21 b Fq(application)j +(starting)h(out)1110 5340 y(in)k Fs(emacs)f Ft(mo)s(de.)p +eop end +%%Page: 98 104 +TeXDict begin 98 103 bop 150 -116 a Ft(98)2572 b(Bash)31 +b(Reference)g(Man)m(ual)630 299 y Fs(term)288 b Ft(The)26 +b Fs(term=)g Ft(form)g(ma)m(y)i(b)s(e)e(used)g(to)i(include)f +(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 408 y(ings,)38 +b(p)s(erhaps)c(to)j(bind)e(the)h(k)m(ey)h(sequences)f(output)g(b)m(y)g +(the)g(terminal's)1110 518 y(function)24 b(k)m(eys.)39 +b(The)23 b(w)m(ord)h(on)f(the)i(righ)m(t)f(side)g(of)g(the)g(`)p +Fs(=)p Ft(')g(is)g(tested)h(against)1110 628 y(b)s(oth)k(the)h(full)g +(name)g(of)g(the)g(terminal)h(and)e(the)i(p)s(ortion)e(of)h(the)g +(terminal)1110 737 y(name)k(b)s(efore)f(the)g(\014rst)g(`)p +Fs(-)p Ft('.)50 b(This)33 b(allo)m(ws)i Fs(sun)e Ft(to)h(matc)m(h)g(b)s +(oth)f Fs(sun)g Ft(and)1110 847 y Fs(sun-cmd)p Ft(,)c(for)h(instance.) +630 1006 y Fs(application)1110 1116 y Ft(The)21 b Fq(application)j Ft(construct)e(is)g(used)f(to)i(include)f(application-sp)s(eci\014c)h -(set-)1110 1823 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h +(set-)1110 1225 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h (Readline)g(library)g(sets)g(the)g Fq(application)1110 -1933 y(name)p Ft(,)g(and)e(y)m(ou)g(can)h(test)g(for)f(a)g(particular)h +1335 y(name)p Ft(,)g(and)e(y)m(ou)g(can)h(test)g(for)f(a)g(particular)h (v)-5 b(alue.)39 b(This)22 b(could)h(b)s(e)g(used)f(to)1110 -2042 y(bind)32 b(k)m(ey)h(sequences)g(to)h(functions)e(useful)g(for)h -(a)g(sp)s(eci\014c)f(program.)48 b(F)-8 b(or)1110 2152 +1445 y(bind)32 b(k)m(ey)h(sequences)g(to)h(functions)e(useful)g(for)h +(a)g(sp)s(eci\014c)f(program.)48 b(F)-8 b(or)1110 1554 y(instance,)35 b(the)e(follo)m(wing)h(command)f(adds)f(a)i(k)m(ey)f -(sequence)h(that)f(quotes)1110 2262 y(the)e(curren)m(t)f(or)g(previous) -g(w)m(ord)g(in)g(Bash:)1350 2396 y Fs($if)47 b(Bash)1350 -2506 y(#)g(Quote)g(the)g(current)f(or)h(previous)e(word)1350 -2615 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 2725 y($endif)150 -2884 y($endif)192 b Ft(This)29 b(command,)i(as)f(seen)h(in)f(the)g +(sequence)h(that)f(quotes)1110 1664 y(the)e(curren)m(t)f(or)g(previous) +g(w)m(ord)g(in)g(Bash:)1350 1798 y Fs($if)47 b(Bash)1350 +1908 y(#)g(Quote)g(the)g(current)f(or)h(previous)e(word)1350 +2017 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 2127 y($endif)150 +2286 y($endif)192 b Ft(This)29 b(command,)i(as)f(seen)h(in)f(the)g (previous)g(example,)h(terminates)g(an)g Fs($if)e Ft(command.)150 -3044 y Fs($else)240 b Ft(Commands)29 b(in)h(this)h(branc)m(h)e(of)i +2446 y Fs($else)240 b Ft(Commands)29 b(in)h(this)h(branc)m(h)e(of)i (the)f Fs($if)g Ft(directiv)m(e)i(are)f(executed)g(if)f(the)h(test)g -(fails.)150 3203 y Fs($include)96 b Ft(This)43 b(directiv)m(e)i(tak)m +(fails.)150 2605 y Fs($include)96 b Ft(This)43 b(directiv)m(e)i(tak)m (es)g(a)e(single)i(\014lename)e(as)h(an)f(argumen)m(t)h(and)f(reads)g -(commands)630 3313 y(and)38 b(bindings)f(from)h(that)i(\014le.)65 +(commands)630 2715 y(and)38 b(bindings)f(from)h(that)i(\014le.)65 b(F)-8 b(or)39 b(example,)j(the)d(follo)m(wing)h(directiv)m(e)g(reads)e -(from)630 3422 y(`)p Fs(/etc/inputrc)p Ft(':)870 3557 -y Fs($include)46 b(/etc/inputrc)150 3781 y Fk(8.3.3)63 -b(Sample)41 b(Init)g(File)275 4025 y Ft(Here)31 b(is)f(an)g(example)i +(from)630 2824 y(`)p Fs(/etc/inputrc)p Ft(':)870 2959 +y Fs($include)46 b(/etc/inputrc)150 3183 y Fk(8.3.3)63 +b(Sample)41 b(Init)g(File)275 3427 y Ft(Here)31 b(is)f(an)g(example)i (of)e(an)g Fq(inputrc)35 b Ft(\014le.)42 b(This)29 b(illustrates)j(k)m (ey)f(binding,)f(v)-5 b(ariable)31 b(assignmen)m(t,)150 -4134 y(and)f(conditional)h(syn)m(tax.)p eop end -%%Page: 101 107 -TeXDict begin 101 106 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(101)390 408 y Fs(#)47 +3537 y(and)f(conditional)h(syn)m(tax.)p eop end +%%Page: 99 105 +TeXDict begin 99 104 bop 150 -116 a Ft(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2107 b(99)390 408 y Fs(#)47 b(This)g(file)g(controls)e(the)i(behaviour)e(of)j(line)e(input)h (editing)e(for)390 518 y(#)i(programs)f(that)h(use)g(the)f(GNU)h (Readline)f(library.)93 b(Existing)390 628 y(#)47 b(programs)f(include) @@ -11757,8 +11320,8 @@ y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(keypad)f(mode)390 4902 y(#)390 5011 y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(ANSI)g(mode) 390 5121 y(#)390 5230 y(#"\\M-\\C-[D":)331 b(backward-char)390 5340 y(#"\\M-\\C-[C":)g(forward-char)p eop end -%%Page: 102 108 -TeXDict begin 102 107 bop 150 -116 a Ft(102)2527 b(Bash)31 +%%Page: 100 106 +TeXDict begin 100 105 bop 150 -116 a Ft(100)2527 b(Bash)31 b(Reference)g(Man)m(ual)390 299 y Fs(#"\\M-\\C-[A":)331 b(previous-history)390 408 y(#"\\M-\\C-[B":)g(next-history)390 628 y(C-q:)47 b(quoted-insert)390 847 y($endif)390 1066 @@ -11792,9 +11355,9 @@ y($endif)390 3477 y(#)i(use)g(a)h(visible)e(bell)g(if)h(one)g(is)h (completions)e(for)390 5121 y(#)j(a)h(word,)e(ask)h(the)g(user)g(if)g (he)g(wants)f(to)i(see)f(all)f(of)i(them)390 5230 y(set)f (completion-query-items)42 b(150)p eop end -%%Page: 103 109 -TeXDict begin 103 108 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(103)390 299 y Fs(#)47 +%%Page: 101 107 +TeXDict begin 101 106 bop 150 -116 a Ft(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(101)390 299 y Fs(#)47 b(For)g(FTP)390 408 y($if)g(Ftp)390 518 y("\\C-xg":)f("get)g(\\M-?")390 628 y("\\C-xt":)g("put)g(\\M-?")390 737 y("\\M-.":)g(yank-last-arg)390 847 y($endif)150 1086 y Fr(8.4)68 b(Bindable)45 b(Readline)i(Commands) @@ -11840,8 +11403,8 @@ b(this)g(line)h(is)f(non-empt)m(y)-8 b(,)26 b(add)c(it)630 5340 y(to)27 b(the)f(history)g(list)h(according)g(to)g(the)f(setting)i (of)e(the)g Fs(HISTCONTROL)d Ft(and)j Fs(HISTIGNORE)p eop end -%%Page: 104 110 -TeXDict begin 104 109 bop 150 -116 a Ft(104)2527 b(Bash)31 +%%Page: 102 108 +TeXDict begin 102 107 bop 150 -116 a Ft(102)2527 b(Bash)31 b(Reference)g(Man)m(ual)630 299 y(v)-5 b(ariables.)42 b(If)30 b(this)h(line)g(is)g(a)g(mo)s(di\014ed)e(history)i(line,)g (then)f(restore)i(the)f(history)f(line)h(to)630 408 y(its)g(original)g @@ -11906,9 +11469,9 @@ f(command)h(\(the)h(last)f(w)m(ord)g(of)g(the)g(previous)630 Ft(.)38 b(Succes-)630 5340 y(siv)m(e)d(calls)h(to)f Fs(yank-last-arg)c Ft(mo)m(v)m(e)36 b(bac)m(k)g(through)d(the)i(history)g(list,)h (inserting)f(the)p eop end -%%Page: 105 111 -TeXDict begin 105 110 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(105)630 299 y(last)32 +%%Page: 103 109 +TeXDict begin 103 108 bop 150 -116 a Ft(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(103)630 299 y(last)32 b(argumen)m(t)f(of)g(eac)m(h)h(line)f(in)f(turn.)41 b(The)30 b(history)h(expansion)f(facilities)j(are)e(used)f(to)630 408 y(extract)i(the)e(last)i(argumen)m(t,)f(as)f(if)h(the)f(`)p @@ -11967,8 +11530,8 @@ b(With)33 b(an)g(explicit)h(p)s(ositiv)m(e)g(n)m(umeric)f(argumen)m(t,) h(switc)m(hes)630 5340 y(to)22 b(o)m(v)m(erwrite)i(mo)s(de.)37 b(With)22 b(an)g(explicit)h(non-p)s(ositiv)m(e)f(n)m(umeric)g(argumen)m (t,)i(switc)m(hes)e(to)p eop end -%%Page: 106 112 -TeXDict begin 106 111 bop 150 -116 a Ft(106)2527 b(Bash)31 +%%Page: 104 110 +TeXDict begin 104 109 bop 150 -116 a Ft(104)2527 b(Bash)31 b(Reference)g(Man)m(ual)630 299 y(insert)f(mo)s(de.)41 b(This)30 b(command)h(a\013ects)h(only)e Fs(emacs)f Ft(mo)s(de;)i Fs(vi)f Ft(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 408 @@ -12030,9 +11593,9 @@ b(the)g(w)m(ord)g(follo)m(wing)h(p)s(oin)m(t)f(to)h(the)f(kill)h 5340 y(same)f(as)f Fs(forward-word)p Ft(.)38 b(By)30 b(default,)h(this)g(command)f(is)g(un)m(b)s(ound.)p eop end -%%Page: 107 113 -TeXDict begin 107 112 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(107)150 299 y Fs(yank)29 +%%Page: 105 111 +TeXDict begin 105 110 bop 150 -116 a Ft(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(105)150 299 y Fs(yank)29 b(\(C-y\))630 408 y Ft(Y)-8 b(ank)31 b(the)f(top)h(of)g(the)f(kill)h (ring)f(in)m(to)i(the)e(bu\013er)g(at)h(p)s(oin)m(t.)150 558 y Fs(yank-pop)d(\(M-y\))630 667 y Ft(Rotate)36 b(the)f(kill-ring,)i @@ -12101,8 +11664,8 @@ Fq(n)630 5121 y Ft(p)s(ositions)e(forw)m(ard)f(in)g(the)h(list)h(of)e (ound)e(to)630 5337 y Fg(h)p 654 5284 V 654 5340 a Ff(T)-6 b(AB)p 654 5355 V 798 5337 a Fg(i)828 5340 y Ft(,)30 b(but)g(is)g(un)m(b)s(ound)e(b)m(y)i(default.)p eop end -%%Page: 108 114 -TeXDict begin 108 113 bop 150 -116 a Ft(108)2527 b(Bash)31 +%%Page: 106 112 +TeXDict begin 106 111 bop 150 -116 a Ft(106)2527 b(Bash)31 b(Reference)g(Man)m(ual)150 299 y Fs(delete-char-or-list)25 b(\(\))630 408 y Ft(Deletes)k(the)e(c)m(haracter)h(under)e(the)h (cursor)f(if)h(not)g(at)g(the)g(b)s(eginning)g(or)f(end)h(of)g(the)g @@ -12159,9 +11722,9 @@ y Fk(8.4.7)63 b(Keyb)s(oard)41 b(Macros)150 5230 y Fs(start-kbd-macro) 26 b(\(C-x)j(\(\))630 5340 y Ft(Begin)i(sa)m(ving)h(the)e(c)m (haracters)i(t)m(yp)s(ed)e(in)m(to)h(the)g(curren)m(t)f(k)m(eyb)s(oard) g(macro.)p eop end -%%Page: 109 115 -TeXDict begin 109 114 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(109)150 299 y Fs(end-kbd-macro)27 +%%Page: 107 113 +TeXDict begin 107 112 bop 150 -116 a Ft(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(107)150 299 y Fs(end-kbd-macro)27 b(\(C-x)i(\)\))630 408 y Ft(Stop)e(sa)m(ving)h(the)g(c)m(haracters)g(t) m(yp)s(ed)f(in)m(to)i(the)e(curren)m(t)g(k)m(eyb)s(oard)g(macro)h(and)f (sa)m(v)m(e)i(the)630 518 y(de\014nition.)150 691 y Fs @@ -12215,8 +11778,8 @@ b(\(M-C-]\))630 5230 y Ft(A)45 b(c)m(haracter)h(is)f(read)g(and)f(p)s g(that)630 5340 y(c)m(haracter.)d(A)31 b(negativ)m(e)h(coun)m(t)f (searc)m(hes)h(for)e(subsequen)m(t)f(o)s(ccurrences.)p eop end -%%Page: 110 116 -TeXDict begin 110 115 bop 150 -116 a Ft(110)2527 b(Bash)31 +%%Page: 108 114 +TeXDict begin 108 113 bop 150 -116 a Ft(108)2527 b(Bash)31 b(Reference)g(Man)m(ual)150 299 y Fs(insert-comment)26 b(\(M-#\))630 408 y Ft(Without)36 b(a)g(n)m(umeric)g(argumen)m(t,)h (the)f(v)-5 b(alue)36 b(of)g(the)g Fs(comment-begin)c @@ -12285,15 +11848,15 @@ Fs(*)p Ft(')630 4317 y(is)c(app)s(ended)f(b)s(efore)h(pathname)g 5072 y(page)e(17\).)150 5230 y Fs(history-expand-line)25 b(\(M-^\))630 5340 y Ft(P)m(erform)30 b(history)h(expansion)f(on)g(the) h(curren)m(t)f(line.)p eop end -%%Page: 111 117 -TeXDict begin 111 116 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(111)150 299 y Fs(magic-space)27 +%%Page: 109 115 +TeXDict begin 109 114 bop 150 -116 a Ft(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(109)150 299 y Fs(magic-space)27 b(\(\))630 408 y Ft(P)m(erform)c(history)g(expansion)g(on)g(the)g (curren)m(t)g(line)g(and)g(insert)g(a)g(space)h(\(see)g(Section)g(9.3) -630 518 y([History)31 b(In)m(teraction],)i(page)e(119\).)150 +630 518 y([History)31 b(In)m(teraction],)i(page)e(117\).)150 664 y Fs(alias-expand-line)26 b(\(\))630 774 y Ft(P)m(erform)i(alias)i (expansion)e(on)g(the)h(curren)m(t)f(line)h(\(see)g(Section)g(6.6)h -([Aliases],)g(page)f(77\).)150 920 y Fs(history-and-alias-expand)o +([Aliases],)g(page)f(75\).)150 920 y Fs(history-and-alias-expand)o (-lin)o(e)24 b(\(\))630 1029 y Ft(P)m(erform)30 b(history)h(and)e (alias)j(expansion)e(on)g(the)h(curren)m(t)f(line.)150 1176 y Fs(insert-last-argument)25 b(\(M-.)k(or)h(M-_\))630 @@ -12318,11 +11881,11 @@ y Ft(While)24 b(the)g(Readline)g(library)f(do)s(es)h(not)g(ha)m(v)m(e)g Fl(posix)e Ft(1003.2)k(standard.)275 2947 y(In)i(order)g(to)i(switc)m (h)f(in)m(teractiv)m(ely)j(b)s(et)m(w)m(een)d Fs(emacs)f Ft(and)g Fs(vi)g Ft(editing)h(mo)s(des,)h(use)f(the)g(`)p -Fs(set)30 b(-o)150 3057 y(emacs)p Ft(')43 b(and)h(`)p -Fs(set)30 b(-o)f(vi)p Ft(')44 b(commands)g(\(see)i(Section)f(4.3.1)h -([The)e(Set)h(Builtin],)j(page)e(49\).)83 b(The)150 3166 -y(Readline)31 b(default)g(is)f Fs(emacs)f Ft(mo)s(de.)275 -3294 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f(in)g Fs(vi)f +Fs(set)30 b(-o)150 3057 y(emacs)p Ft(')21 b(and)g(`)p +Fs(set)29 b(-o)h(vi)p Ft(')21 b(commands)h(\(see)g(Section)h(4.3)g +([The)e(Set)h(Builtin],)j(page)d(53\).)39 b(The)21 b(Readline)150 +3166 y(default)31 b(is)f Fs(emacs)f Ft(mo)s(de.)275 3294 +y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f(in)g Fs(vi)f Ft(mo)s(de,)h(y)m(ou)h(are)f(already)h(placed)f(in)g(`insertion')g(mo)s (de,)g(as)h(if)f(y)m(ou)150 3404 y(had)c(t)m(yp)s(ed)g(an)g(`)p Fs(i)p Ft('.)39 b(Pressing)1215 3401 y Fg(h)p 1239 3348 @@ -12339,7 +11902,7 @@ b(w)m(ord)g(completion)i(is)f(attempted)g(for)g(an)f(argumen)m(t)h(to)h y(tion)f(sp)s(eci\014cation)g(\(a)h Fq(compsp)s(ec)6 b Ft(\))24 b(has)g(b)s(een)g(de\014ned)g(using)g(the)g Fs(complete)f Ft(builtin)h(\(see)h(Section)h(8.7)150 -4317 y([Programmable)e(Completion)g(Builtins],)h(page)f(113\),)j(the)c +4317 y([Programmable)e(Completion)g(Builtins],)h(page)f(111\),)j(the)c (programmable)h(completion)g(facilities)i(are)150 4427 y(in)m(v)m(ok)m(ed.)275 4555 y(First,)d(the)e(command)g(name)g(is)h (iden)m(ti\014ed.)37 b(If)21 b(a)g(compsp)s(ec)g(has)g(b)s(een)f @@ -12356,10 +11919,10 @@ b(the)150 4774 y(command)33 b(w)m(ord)f(is)h(a)g(full)g(pathname,)h(a)f (hing)h(w)m(ords.)51 b(If)150 5230 y(a)37 b(compsp)s(ec)f(is)g(not)h (found,)f(the)h(default)f(Bash)h(completion)g(describ)s(ed)e(ab)s(o)m (v)m(e)j(\(see)f(Section)g(8.4.6)150 5340 y([Commands)30 -b(F)-8 b(or)31 b(Completion],)g(page)g(107\))h(is)f(p)s(erformed.)p +b(F)-8 b(or)31 b(Completion],)g(page)g(105\))h(is)f(p)s(erformed.)p eop end -%%Page: 112 118 -TeXDict begin 112 117 bop 150 -116 a Ft(112)2527 b(Bash)31 +%%Page: 110 116 +TeXDict begin 110 115 bop 150 -116 a Ft(110)2527 b(Bash)31 b(Reference)g(Man)m(ual)275 299 y(First,)g(the)g(actions)g(sp)s (eci\014ed)f(b)m(y)h(the)f(compsp)s(ec)h(are)g(used.)40 b(Only)30 b(matc)m(hes)i(whic)m(h)e(are)h(pre\014xed)150 @@ -12369,7 +11932,7 @@ Fs(-d)p Ft(')g(option)h(is)f(used)g(for)g(\014lename)150 518 y(or)30 b(directory)h(name)f(completion,)i(the)e(shell)h(v)-5 b(ariable)31 b Fs(FIGNORE)d Ft(is)i(used)f(to)i(\014lter)g(the)f(matc)m (hes.)42 b(See)150 628 y(Section)31 b(5.2)h([Bash)e(V)-8 -b(ariables],)33 b(page)e(59,)g(for)f(a)h(description)g(of)f +b(ariables],)33 b(page)e(57,)g(for)f(a)h(description)g(of)f Fs(FIGNORE)p Ft(.)275 765 y(An)m(y)f(completions)h(sp)s(eci\014ed)f(b)m (y)g(a)h(\014lename)f(expansion)h(pattern)f(to)h(the)g(`)p Fs(-G)p Ft(')f(option)h(are)f(gener-)150 874 y(ated)h(next.)40 @@ -12390,7 +11953,7 @@ b(substitution,)49 b(and)44 b(arithmetic)i(expansion,)j(as)c(describ)s (ed)150 1669 y(ab)s(o)m(v)m(e)38 b(\(see)f(Section)h(3.5)g([Shell)e (Expansions],)i(page)f(17\).)61 b(The)36 b(results)h(are)g(split)f (using)h(the)f(rules)150 1778 y(describ)s(ed)29 b(ab)s(o)m(v)m(e)i -(\(see)f(Section)h(3.5.7)h([W)-8 b(ord)30 b(Splitting],)h(page)f(23\).) +(\(see)f(Section)h(3.5.7)h([W)-8 b(ord)30 b(Splitting],)h(page)f(22\).) 42 b(The)30 b(results)f(of)h(the)g(expansion)150 1888 y(are)f(pre\014x-matc)m(hed)h(against)g(the)f(w)m(ord)g(b)s(eing)f (completed,)j(and)d(the)i(matc)m(hing)g(w)m(ords)e(b)s(ecome)i(the)150 @@ -12399,30 +11962,29 @@ y(are)f(pre\014x-matc)m(hed)h(against)g(the)f(w)m(ord)g(b)s(eing)f (or)g(command)g(sp)s(eci\014ed)f(with)150 2244 y(the)i(`)p Fs(-F)p Ft(')g(and)f(`)p Fs(-C)p Ft(')h(options)g(is)g(in)m(v)m(ok)m (ed.)41 b(When)30 b(the)g(command)g(or)f(function)h(is)g(in)m(v)m(ok)m -(ed,)h(the)f Fs(COMP_)150 2354 y(LINE)p Ft(,)42 b Fs(COMP_POINT)p -Ft(,)d Fs(COMP_KEY)p Ft(,)i(and)e Fs(COMP_TYPE)f Ft(v)-5 -b(ariables)41 b(are)f(assigned)g(v)-5 b(alues)41 b(as)f(describ)s(ed) -150 2463 y(ab)s(o)m(v)m(e)k(\(see)g(Section)f(5.2)h([Bash)f(V)-8 -b(ariables],)48 b(page)c(59\).)79 b(If)42 b(a)i(shell)f(function)f(is)h -(b)s(eing)f(in)m(v)m(ok)m(ed,)150 2573 y(the)37 b Fs(COMP_WORDS)d -Ft(and)i Fs(COMP_CWORD)e Ft(v)-5 b(ariables)38 b(are)f(also)h(set.)60 -b(When)37 b(the)g(function)f(or)h(command)150 2682 y(is)42 -b(in)m(v)m(ok)m(ed,)k(the)41 b(\014rst)g(argumen)m(t)h(is)g(the)g(name) -f(of)h(the)g(command)f(whose)h(argumen)m(ts)f(are)h(b)s(eing)150 -2792 y(completed,)d(the)d(second)g(argumen)m(t)h(is)f(the)g(w)m(ord)g -(b)s(eing)g(completed,)i(and)e(the)g(third)f(argumen)m(t)i(is)150 -2902 y(the)28 b(w)m(ord)g(preceding)h(the)f(w)m(ord)g(b)s(eing)g -(completed)h(on)f(the)h(curren)m(t)f(command)g(line.)40 -b(No)29 b(\014ltering)g(of)150 3011 y(the)i(generated)h(completions)h -(against)f(the)f(w)m(ord)g(b)s(eing)g(completed)h(is)f(p)s(erformed;)f -(the)h(function)g(or)150 3121 y(command)f(has)g(complete)i(freedom)e -(in)g(generating)i(the)f(matc)m(hes.)275 3258 y(An)m(y)g(function)h(sp) -s(eci\014ed)f(with)g(`)p Fs(-F)p Ft(')h(is)g(in)m(v)m(ok)m(ed)h +(ed,)h(the)f Fs(COMP_)150 2354 y(LINE)21 b Ft(and)h Fs(COMP_POINT)d +Ft(v)-5 b(ariables)23 b(are)g(assigned)g(v)-5 b(alues)22 +b(as)h(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)f(Section)g(5.2)h([Bash) +150 2463 y(V)-8 b(ariables],)33 b(page)f(57\).)44 b(If)30 +b(a)i(shell)f(function)f(is)h(b)s(eing)g(in)m(v)m(ok)m(ed,)i(the)e +Fs(COMP_WORDS)d Ft(and)j Fs(COMP_CWORD)150 2573 y Ft(v)-5 +b(ariables)40 b(are)g(also)h(set.)68 b(When)40 b(the)f(function)h(or)f +(command)g(is)h(in)m(v)m(ok)m(ed,)j(the)d(\014rst)f(argumen)m(t)h(is) +150 2682 y(the)34 b(name)f(of)h(the)g(command)f(whose)g(argumen)m(ts)h +(are)g(b)s(eing)f(completed,)j(the)d(second)h(argumen)m(t)g(is)150 +2792 y(the)h(w)m(ord)g(b)s(eing)g(completed,)i(and)e(the)g(third)f +(argumen)m(t)i(is)f(the)g(w)m(ord)g(preceding)g(the)h(w)m(ord)e(b)s +(eing)150 2902 y(completed)e(on)e(the)h(curren)m(t)g(command)f(line.)42 +b(No)31 b(\014ltering)g(of)g(the)g(generated)h(completions)g(against) +150 3011 y(the)d(w)m(ord)g(b)s(eing)f(completed)i(is)f(p)s(erformed;)f +(the)h(function)g(or)g(command)f(has)h(complete)h(freedom)f(in)150 +3121 y(generating)j(the)e(matc)m(hes.)275 3258 y(An)m(y)h(function)h +(sp)s(eci\014ed)f(with)g(`)p Fs(-F)p Ft(')h(is)g(in)m(v)m(ok)m(ed)h (\014rst.)44 b(The)31 b(function)h(ma)m(y)g(use)g(an)m(y)g(of)g(the)g (shell)150 3367 y(facilities,)44 b(including)c(the)g Fs(compgen)d Ft(builtin)j(describ)s(ed)e(b)s(elo)m(w)i(\(see)h(Section) f(8.7)h([Programmable)150 3477 y(Completion)28 b(Builtins],)g(page)g -(113\),)i(to)e(generate)h(the)e(matc)m(hes.)41 b(It)27 +(111\),)i(to)e(generate)h(the)e(matc)m(hes.)41 b(It)27 b(m)m(ust)g(put)g(the)g(p)s(ossible)g(comple-)150 3587 y(tions)k(in)f(the)g Fs(COMPREPLY)e Ft(arra)m(y)j(v)-5 b(ariable.)275 3724 y(Next,)23 b(an)m(y)e(command)f(sp)s(eci\014ed)g @@ -12458,9 +12020,9 @@ b(dirnames)p Ft(')22 b(op-)150 5230 y(tion)29 b(w)m(as)f(supplied)f(to) i Fs(complete)d Ft(when)h(the)h(compsp)s(ec)g(w)m(as)g(de\014ned,)g (directory)g(name)h(completion)150 5340 y(is)h(attempted.)p eop end -%%Page: 113 119 -TeXDict begin 113 118 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(113)275 299 y(If)30 +%%Page: 111 117 +TeXDict begin 111 116 bop 150 -116 a Ft(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(111)275 299 y(If)30 b(the)i(`)p Fs(-o)e(plusdirs)p Ft(')f(option)j(w)m(as)f(supplied)f(to)i Fs(complete)e Ft(when)g(the)h(compsp)s(ec)g(w)m(as)h(de\014ned,)150 408 y(directory)k(name)f(completion)i(is)e(attempted)h(and)f(an)m(y)h @@ -12518,10 +12080,10 @@ m(v)-5 b(alid)25 b(option)g(is)g(supplied,)f(or)h(no)g(matc)m(hes)g(w)m 4325 y(complete)46 b([-abcdefgjksuv])d([-o)k Fj(comp-option)11 b Fs(])44 b([-A)j Fj(action)11 b Fs(])45 b([-G)i Fj(glob-)870 4435 y(pat)11 b Fs(])46 b([-W)h Fj(wordlist)11 b Fs(])870 -4544 y([-F)47 b Fj(function)11 b Fs(])45 b([-C)i Fj(command)11 -b Fs(])45 b([-X)i Fj(filterpat)11 b Fs(])870 4654 y([-P)47 -b Fj(prefix)11 b Fs(])45 b([-S)i Fj(suffix)11 b Fs(])45 -b Fj(name)58 b Fs([)p Fj(name)f Fs(...)o(])870 4764 y(complete)46 +4544 y([-P)47 b Fj(prefix)11 b Fs(])45 b([-S)i Fj(suffix)11 +b Fs(])45 b([-X)i Fj(filterpat)11 b Fs(])45 b([-F)i Fj(function)11 +b Fs(])870 4654 y([-C)47 b Fj(command)11 b Fs(])45 b +Fj(name)57 b Fs([)p Fj(name)g Fs(...)o(])870 4764 y(complete)46 b(-pr)g([)p Fj(name)57 b Fs(...])630 4902 y Ft(Sp)s(ecify)33 b(ho)m(w)h(argumen)m(ts)h(to)f(eac)m(h)i Fq(name)j Ft(should)33 b(b)s(e)g(completed.)53 b(If)33 b(the)i(`)p Fs(-p)p Ft(')e(option)630 @@ -12533,13 +12095,13 @@ Fs(-r)p Ft(')g(option)630 5230 y(remo)m(v)m(es)29 b(a)f(completion)h (sp)s(eci\014cation)f(for)g(eac)m(h)g Fq(name)p Ft(,)h(or,)f(if)g(no)f Fq(name)5 b Ft(s)28 b(are)g(supplied,)630 5340 y(all)j(completion)h(sp) s(eci\014cations.)p eop end -%%Page: 114 120 -TeXDict begin 114 119 bop 150 -116 a Ft(114)2527 b(Bash)31 +%%Page: 112 118 +TeXDict begin 112 117 bop 150 -116 a Ft(112)2527 b(Bash)31 b(Reference)g(Man)m(ual)630 299 y(The)e(pro)s(cess)g(of)h(applying)g (these)g(completion)g(sp)s(eci\014cations)h(when)d(w)m(ord)i (completion)630 408 y(is)35 b(attempted)h(is)f(describ)s(ed)f(ab)s(o)m (v)m(e)j(\(see)f(Section)g(8.6)g([Programmable)g(Completion],)630 -518 y(page)31 b(111\).)630 650 y(Other)41 b(options,)46 +518 y(page)31 b(109\).)630 650 y(Other)41 b(options,)46 b(if)41 b(sp)s(eci\014ed,)j(ha)m(v)m(e)f(the)f(follo)m(wing)i (meanings.)75 b(The)41 b(argumen)m(ts)h(to)630 760 y(the)e(`)p Fs(-G)p Ft(',)j(`)p Fs(-W)p Ft(',)g(and)d(`)p Fs(-X)p @@ -12583,7 +12145,7 @@ b(names.)41 b(Ma)m(y)31 b(also)h(b)s(e)e(sp)s(eci\014ed)f(as)i(`)p Fs(-a)p Ft('.)1110 4391 y Fs(arrayvar)96 b Ft(Arra)m(y)31 b(v)-5 b(ariable)31 b(names.)1110 4546 y Fs(binding)144 b Ft(Readline)30 b(k)m(ey)f(binding)f(names)h(\(see)h(Section)f(8.4)h -([Bindable)1590 4656 y(Readline)h(Commands],)f(page)h(103\).)1110 +([Bindable)1590 4656 y(Readline)h(Commands],)f(page)h(101\).)1110 4811 y Fs(builtin)144 b Ft(Names)21 b(of)g(shell)f(builtin)h(commands.) 37 b(Ma)m(y)21 b(also)h(b)s(e)e(sp)s(eci\014ed)1590 4921 y(as)31 b(`)p Fs(-b)p Ft('.)1110 5075 y Fs(command)144 @@ -12591,9 +12153,9 @@ b Ft(Command)29 b(names.)41 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s (eci\014ed)f(as)i(`)p Fs(-c)p Ft('.)1110 5230 y Fs(directory)1590 5340 y Ft(Directory)h(names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s (eci\014ed)g(as)g(`)p Fs(-d)p Ft('.)p eop end -%%Page: 115 121 -TeXDict begin 115 120 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(115)1110 299 y Fs(disabled)96 +%%Page: 113 119 +TeXDict begin 113 118 bop 150 -116 a Ft(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(113)1110 299 y Fs(disabled)96 b Ft(Names)31 b(of)g(disabled)f(shell)g(builtins.)1110 458 y Fs(enabled)144 b Ft(Names)31 b(of)g(enabled)f(shell)g(builtins.) 1110 617 y Fs(export)192 b Ft(Names)34 b(of)f(exp)s(orted)f(shell)h(v) @@ -12610,7 +12172,7 @@ b(4.2)g([Bash)g(Builtins],)g(page)g(41\).)1110 1740 y Fs(hostname)96 b Ft(Hostnames,)89 b(as)76 b(tak)m(en)h(from)f(the)g (\014le)h(sp)s(eci\014ed)e(b)m(y)1590 1850 y(the)55 b Fs(HOSTFILE)e Ft(shell)j(v)-5 b(ariable)56 b(\(see)g(Section)g(5.2)h -([Bash)1590 1959 y(V)-8 b(ariables],)32 b(page)f(59\).)1110 +([Bash)1590 1959 y(V)-8 b(ariables],)32 b(page)f(57\).)1110 2118 y Fs(job)336 b Ft(Job)31 b(names,)h(if)g(job)f(con)m(trol)i(is)f (activ)m(e.)46 b(Ma)m(y)33 b(also)g(b)s(e)e(sp)s(eci-)1590 2228 y(\014ed)f(as)g(`)p Fs(-j)p Ft('.)1110 2387 y Fs(keyword)144 @@ -12622,7 +12184,7 @@ b Ft(Service)31 b(names.)41 b(Ma)m(y)31 b(also)g(b)s(e)f(sp)s (eci\014ed)g(as)g(`)p Fs(-s)p Ft('.)1110 2863 y Fs(setopt)192 b Ft(V)-8 b(alid)34 b(argumen)m(ts)f(for)f(the)h(`)p Fs(-o)p Ft(')g(option)g(to)h(the)f Fs(set)e Ft(builtin)1590 -2973 y(\(see)g(Section)h(4.3.1)g([The)e(Set)g(Builtin],)i(page)f(49\).) +2973 y(\(see)g(Section)h(4.3)f([The)f(Set)h(Builtin],)g(page)g(53\).) 1110 3132 y Fs(shopt)240 b Ft(Shell)40 b(option)g(names)g(as)g (accepted)i(b)m(y)e(the)g Fs(shopt)e Ft(builtin)1590 3241 y(\(see)31 b(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(41\).) @@ -12648,8 +12210,8 @@ b(delimiters,)i(and)e(eac)m(h)h(resultan)m(t)g(w)m(ord)e(is)h Ft(is)e(executed)g(in)e(a)i(subshell)e(en)m(vironmen)m(t,)i(and)f(its)g (output)g(is)1110 5340 y(used)e(as)g(the)h(p)s(ossible)f(completions.)p eop end -%%Page: 116 122 -TeXDict begin 116 121 bop 150 -116 a Ft(116)2527 b(Bash)31 +%%Page: 114 120 +TeXDict begin 114 119 bop 150 -116 a Ft(114)2527 b(Bash)31 b(Reference)g(Man)m(ual)630 299 y Fs(-F)f Fj(function)1110 408 y Ft(The)25 b(shell)i(function)e Fq(function)h Ft(is)g(executed)h (in)e(the)i(curren)m(t)e(shell)i(en)m(viron-)1110 518 @@ -12681,378 +12243,369 @@ b(an)f(attempt)h(is)f(made)g(to)630 2471 y(remo)m(v)m(e)h(a)e Ft(for)30 b(whic)m(h)g(no)g(sp)s(eci\014cation)h(exists,)630 2580 y(or)f(an)h(error)f(o)s(ccurs)g(adding)g(a)g(completion)i(sp)s (eci\014cation.)p eop end -%%Page: 117 123 -TeXDict begin 117 122 bop 150 -116 a Ft(Chapter)47 b(9:)i(Using)f -(History)g(In)m(teractiv)m(ely)1865 b(117)150 299 y Fo(9)80 -b(Using)53 b(History)g(In)l(teractiv)l(ely)275 552 y -Ft(This)32 b(c)m(hapter)i(describ)s(es)e(ho)m(w)h(to)h(use)f(the)g -Fl(gnu)g Ft(History)h(Library)e(in)m(teractiv)m(ely)-8 -b(,)37 b(from)c(a)h(user's)150 661 y(standp)s(oin)m(t.)76 +%%Page: 115 121 +TeXDict begin 115 120 bop 150 -116 a Ft(Chapter)30 b(9:)41 +b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(115)150 +299 y Fo(9)80 b(Using)53 b(History)g(In)l(teractiv)l(ely)275 +562 y Ft(This)32 b(c)m(hapter)i(describ)s(es)e(ho)m(w)h(to)h(use)f(the) +g Fl(gnu)g Ft(History)h(Library)e(in)m(teractiv)m(ely)-8 +b(,)37 b(from)c(a)h(user's)150 671 y(standp)s(oin)m(t.)76 b(It)42 b(should)f(b)s(e)h(considered)g(a)g(user's)g(guide.)76 b(F)-8 b(or)43 b(information)f(on)g(using)g(the)g Fl(gnu)150 -771 y Ft(History)31 b(Library)f(in)g(other)g(programs,)g(see)h(the)g -Fl(gnu)f Ft(Readline)h(Library)f(Man)m(ual.)150 1044 +781 y Ft(History)31 b(Library)f(in)g(other)g(programs,)g(see)h(the)g +Fl(gnu)f Ft(Readline)h(Library)f(Man)m(ual.)150 1062 y Fr(9.1)68 b(Bash)45 b(History)h(F)-11 b(acilities)275 -1294 y Ft(When)31 b(the)g(`)p Fs(-o)f(history)p Ft(')g(option)i(to)g -(the)g Fs(set)f Ft(builtin)g(is)g(enabled)h(\(see)g(Section)g(4.3.1)i -([The)d(Set)150 1404 y(Builtin],)h(page)g(49\),)h(the)e(shell)h(pro)m -(vides)f(access)h(to)g(the)f Fq(command)g(history)p Ft(,)h(the)f(list)h -(of)f(commands)150 1514 y(previously)h(t)m(yp)s(ed.)47 -b(The)33 b(v)-5 b(alue)33 b(of)f(the)h Fs(HISTSIZE)e +1316 y Ft(When)36 b(the)h(`)p Fs(-o)30 b(history)p Ft(')k(option)j(to)h +(the)e Fs(set)g Ft(builtin)g(is)h(enabled)f(\(see)i(Section)f(4.3)g +([The)g(Set)150 1425 y(Builtin],)32 b(page)g(53\),)h(the)e(shell)h(pro) +m(vides)f(access)h(to)g(the)f Fq(command)g(history)p +Ft(,)h(the)f(list)h(of)f(commands)150 1535 y(previously)h(t)m(yp)s(ed.) +47 b(The)33 b(v)-5 b(alue)33 b(of)f(the)h Fs(HISTSIZE)e Ft(shell)h(v)-5 b(ariable)34 b(is)f(used)e(as)i(the)g(n)m(um)m(b)s(er)e -(of)i(com-)150 1623 y(mands)i(to)i(sa)m(v)m(e)h(in)e(a)g(history)h +(of)i(com-)150 1644 y(mands)i(to)i(sa)m(v)m(e)h(in)e(a)g(history)h (list.)58 b(The)36 b(text)h(of)g(the)f(last)h Fs($HISTSIZE)d -Ft(commands)i(\(default)g(500\))150 1733 y(is)h(sa)m(v)m(ed.)61 +Ft(commands)i(\(default)g(500\))150 1754 y(is)h(sa)m(v)m(ed.)61 b(The)36 b(shell)h(stores)h(eac)m(h)g(command)e(in)h(the)g(history)g (list)g(prior)f(to)i(parameter)f(and)f(v)-5 b(ari-)150 -1842 y(able)33 b(expansion)g(but)f(after)h(history)f(expansion)h(is)g +1864 y(able)33 b(expansion)g(but)f(after)h(history)f(expansion)h(is)g (p)s(erformed,)e(sub)5 b(ject)33 b(to)g(the)g(v)-5 b(alues)33 -b(of)g(the)g(shell)150 1952 y(v)-5 b(ariables)31 b Fs(HISTIGNORE)d -Ft(and)h Fs(HISTCONTROL)p Ft(.)275 2093 y(When)g(the)g(shell)h(starts)g +b(of)g(the)g(shell)150 1973 y(v)-5 b(ariables)31 b Fs(HISTIGNORE)d +Ft(and)h Fs(HISTCONTROL)p Ft(.)275 2117 y(When)g(the)g(shell)h(starts)g (up,)f(the)h(history)f(is)h(initialized)h(from)e(the)h(\014le)f(named)g -(b)m(y)h(the)f Fs(HISTFILE)150 2202 y Ft(v)-5 b(ariable)21 +(b)m(y)h(the)f Fs(HISTFILE)150 2227 y Ft(v)-5 b(ariable)21 b(\(default)h(`)p Fs(~/.bash_history)p Ft('\).)34 b(The)20 b(\014le)h(named)f(b)m(y)h(the)g(v)-5 b(alue)21 b(of)g -Fs(HISTFILE)d Ft(is)j(truncated,)150 2312 y(if)42 b(necessary)-8 +Fs(HISTFILE)d Ft(is)j(truncated,)150 2336 y(if)42 b(necessary)-8 b(,)45 b(to)e(con)m(tain)g(no)f(more)g(than)f(the)h(n)m(um)m(b)s(er)f (of)h(lines)g(sp)s(eci\014ed)f(b)m(y)h(the)g(v)-5 b(alue)42 -b(of)g(the)150 2422 y Fs(HISTFILESIZE)21 b Ft(v)-5 b(ariable.)40 +b(of)g(the)150 2446 y Fs(HISTFILESIZE)21 b Ft(v)-5 b(ariable.)40 b(When)24 b(an)g(in)m(teractiv)m(e)j(shell)e(exits,)h(the)f(last)g -Fs($HISTSIZE)d Ft(lines)j(are)f(copied)150 2531 y(from)29 +Fs($HISTSIZE)d Ft(lines)j(are)f(copied)150 2556 y(from)29 b(the)i(history)e(list)i(to)g(the)f(\014le)g(named)f(b)m(y)h Fs($HISTFILE)p Ft(.)38 b(If)30 b(the)g Fs(histappend)d -Ft(shell)j(option)g(is)g(set)150 2641 y(\(see)22 b(Section)g(4.2)g +Ft(shell)j(option)g(is)g(set)150 2665 y(\(see)22 b(Section)g(4.2)g ([Bash)g(Builtins],)h(page)f(41\),)j(the)c(lines)g(are)h(app)s(ended)d -(to)j(the)f(history)g(\014le,)j(otherwise)150 2750 y(the)32 +(to)j(the)f(history)g(\014le,)j(otherwise)150 2775 y(the)32 b(history)f(\014le)g(is)h(o)m(v)m(erwritten.)45 b(If)31 b Fs(HISTFILE)e Ft(is)j(unset,)f(or)h(if)f(the)h(history)f(\014le)g(is) -h(un)m(writable,)g(the)150 2860 y(history)37 b(is)h(not)f(sa)m(v)m(ed.) +h(un)m(writable,)g(the)150 2884 y(history)37 b(is)h(not)f(sa)m(v)m(ed.) 63 b(After)38 b(sa)m(ving)g(the)f(history)-8 b(,)40 b(the)e(history)f -(\014le)g(is)h(truncated)f(to)h(con)m(tain)h(no)150 2970 +(\014le)g(is)h(truncated)f(to)h(con)m(tain)h(no)150 2994 y(more)31 b(than)f Fs($HISTFILESIZE)c Ft(lines.)41 b(If)30 b Fs(HISTFILESIZE)d Ft(is)k(not)f(set,)h(no)g(truncation)f(is)h(p)s -(erformed.)275 3110 y(If)g(the)h Fs(HISTTIMEFORMAT)d +(erformed.)275 3138 y(If)g(the)h Fs(HISTTIMEFORMAT)d Ft(is)j(set,)h(the)f(time)h(stamp)f(information)g(asso)s(ciated)i(with) -e(eac)m(h)h(history)150 3220 y(en)m(try)d(is)h(written)f(to)h(the)f -(history)h(\014le,)f(mark)m(ed)h(with)f(the)g(history)g(commen)m(t)h(c) -m(haracter.)43 b(When)30 b(the)150 3329 y(history)22 -b(\014le)h(is)g(read,)h(lines)f(b)s(eginning)e(with)i(the)f(history)h -(commen)m(t)g(c)m(haracter)h(follo)m(w)m(ed)h(immediately)150 -3439 y(b)m(y)30 b(a)h(digit)g(are)g(in)m(terpreted)g(as)f(timestamps)h -(for)f(the)h(previous)f(history)g(line.)275 3580 y(The)19 -b(builtin)h(command)g Fs(fc)g Ft(ma)m(y)h(b)s(e)f(used)f(to)i(list)g -(or)g(edit)g(and)e(re-execute)j(a)f(p)s(ortion)f(of)g(the)h(history)150 -3689 y(list.)41 b(The)27 b Fs(history)f Ft(builtin)i(ma)m(y)h(b)s(e)e +e(eac)m(h)h(history)150 3247 y(en)m(try)e(is)f(written)g(to)i(the)e +(history)g(\014le.)275 3392 y(The)19 b(builtin)h(command)g +Fs(fc)g Ft(ma)m(y)h(b)s(e)f(used)f(to)i(list)g(or)g(edit)g(and)e +(re-execute)j(a)f(p)s(ortion)f(of)g(the)h(history)150 +3501 y(list.)41 b(The)27 b Fs(history)f Ft(builtin)i(ma)m(y)h(b)s(e)e (used)g(to)i(displa)m(y)g(or)f(mo)s(dify)f(the)h(history)g(list)h(and)f -(manipulate)150 3799 y(the)j(history)g(\014le.)42 b(When)31 +(manipulate)150 3611 y(the)j(history)g(\014le.)42 b(When)31 b(using)f(command-line)h(editing,)h(searc)m(h)f(commands)g(are)g(a)m(v) --5 b(ailable)33 b(in)e(eac)m(h)150 3909 y(editing)45 +-5 b(ailable)33 b(in)e(eac)m(h)150 3720 y(editing)45 b(mo)s(de)g(that)g(pro)m(vide)g(access)h(to)f(the)g(history)f(list)i (\(see)f(Section)h(8.4.2)g([Commands)e(F)-8 b(or)150 -4018 y(History],)31 b(page)h(103\).)275 4159 y(The)47 +3830 y(History],)31 b(page)h(101\).)275 3974 y(The)47 b(shell)i(allo)m(ws)h(con)m(trol)f(o)m(v)m(er)h(whic)m(h)e(commands)g (are)h(sa)m(v)m(ed)g(on)f(the)h(history)f(list.)95 b(The)150 -4269 y Fs(HISTCONTROL)25 b Ft(and)j Fs(HISTIGNORE)e Ft(v)-5 +4084 y Fs(HISTCONTROL)25 b Ft(and)j Fs(HISTIGNORE)e Ft(v)-5 b(ariables)29 b(ma)m(y)h(b)s(e)d(set)j(to)f(cause)g(the)g(shell)f(to)i -(sa)m(v)m(e)g(only)f(a)g(subset)150 4378 y(of)e(the)g(commands)f(en)m +(sa)m(v)m(e)g(only)f(a)g(subset)150 4193 y(of)e(the)g(commands)f(en)m (tered.)40 b(The)26 b Fs(cmdhist)f Ft(shell)i(option,)h(if)f(enabled,)g -(causes)h(the)e(shell)h(to)h(attempt)150 4488 y(to)23 +(causes)h(the)e(shell)h(to)h(attempt)150 4303 y(to)23 b(sa)m(v)m(e)h(eac)m(h)f(line)g(of)f(a)h(m)m(ulti-line)g(command)f(in)g (the)h(same)f(history)g(en)m(try)-8 b(,)25 b(adding)d(semicolons)h -(where)150 4597 y(necessary)37 b(to)f(preserv)m(e)h(syn)m(tactic)h +(where)150 4412 y(necessary)37 b(to)f(preserv)m(e)h(syn)m(tactic)h (correctness.)58 b(The)36 b Fs(lithist)e Ft(shell)i(option)h(causes)g -(the)f(shell)g(to)150 4707 y(sa)m(v)m(e)25 b(the)e(command)h(with)f(em) +(the)f(shell)g(to)150 4522 y(sa)m(v)m(e)25 b(the)e(command)h(with)f(em) m(b)s(edded)f(newlines)h(instead)h(of)f(semicolons.)40 -b(The)23 b Fs(shopt)e Ft(builtin)i(is)h(used)150 4817 +b(The)23 b Fs(shopt)e Ft(builtin)i(is)h(used)150 4631 y(to)31 b(set)g(these)g(options.)41 b(See)31 b(Section)g(4.2)g([Bash)g (Builtins],)g(page)g(41,)h(for)e(a)h(description)f(of)h -Fs(shopt)p Ft(.)150 5090 y Fr(9.2)68 b(Bash)45 b(History)h(Builtins)275 -5340 y Ft(Bash)30 b(pro)m(vides)g(t)m(w)m(o)i(builtin)e(commands)g +Fs(shopt)p Ft(.)150 4913 y Fr(9.2)68 b(Bash)45 b(History)h(Builtins)275 +5166 y Ft(Bash)30 b(pro)m(vides)g(t)m(w)m(o)i(builtin)e(commands)g (whic)m(h)g(manipulate)h(the)f(history)h(list)g(and)f(history)g -(\014le.)p eop end -%%Page: 118 124 -TeXDict begin 118 123 bop 150 -116 a Ft(118)2527 b(Bash)31 -b(Reference)g(Man)m(ual)150 299 y Fs(fc)870 445 y(fc)47 -b([-e)g Fj(ename)11 b Fs(])46 b([-lnr])g([)p Fj(first)11 -b Fs(])45 b([)p Fj(last)11 b Fs(])870 555 y(fc)47 b(-s)g([)p -Fj(pat)11 b Fs(=)p Fj(rep)g Fs(])45 b([)p Fj(command)11 -b Fs(])630 701 y Ft(Fix)41 b(Command.)68 b(In)39 b(the)i(\014rst)e -(form,)j(a)e(range)h(of)f(commands)g(from)f Fq(\014rst)i -Ft(to)g Fq(last)i Ft(is)630 810 y(selected)35 b(from)e(the)g(history)g -(list.)50 b(Both)34 b Fq(\014rst)h Ft(and)e Fq(last)j -Ft(ma)m(y)e(b)s(e)e(sp)s(eci\014ed)h(as)g(a)h(string)630 -920 y(\(to)26 b(lo)s(cate)h(the)e(most)h(recen)m(t)g(command)e(b)s -(eginning)h(with)g(that)g(string\))h(or)f(as)g(a)g(n)m(um)m(b)s(er)630 -1029 y(\(an)f(index)f(in)m(to)h(the)g(history)g(list,)h(where)e(a)h -(negativ)m(e)i(n)m(um)m(b)s(er)c(is)i(used)f(as)g(an)h(o\013set)g(from) -630 1139 y(the)j(curren)m(t)f(command)h(n)m(um)m(b)s(er\).)39 -b(If)26 b Fq(last)j Ft(is)e(not)g(sp)s(eci\014ed)f(it)h(is)g(set)g(to)h -Fq(\014rst)p Ft(.)39 b(If)26 b Fq(\014rst)i Ft(is)630 -1249 y(not)j(sp)s(eci\014ed)f(it)h(is)g(set)h(to)f(the)g(previous)f -(command)h(for)f(editing)i(and)e Fp(\000)p Ft(16)h(for)g(listing.)630 -1358 y(If)f(the)g(`)p Fs(-l)p Ft(')g(\015ag)h(is)f(giv)m(en,)h(the)g -(commands)e(are)i(listed)g(on)f(standard)f(output.)40 -b(The)30 b(`)p Fs(-n)p Ft(')630 1468 y(\015ag)i(suppresses)f(the)h -(command)g(n)m(um)m(b)s(ers)e(when)i(listing.)46 b(The)32 -b(`)p Fs(-r)p Ft(')g(\015ag)g(rev)m(erses)h(the)630 1577 -y(order)g(of)g(the)h(listing.)50 b(Otherwise,)34 b(the)f(editor)h(giv)m -(en)g(b)m(y)f Fq(ename)39 b Ft(is)33 b(in)m(v)m(ok)m(ed)i(on)e(a)h -(\014le)630 1687 y(con)m(taining)i(those)f(commands.)52 -b(If)33 b Fq(ename)40 b Ft(is)34 b(not)h(giv)m(en,)h(the)f(v)-5 -b(alue)35 b(of)f(the)g(follo)m(wing)630 1797 y(v)-5 b(ariable)33 -b(expansion)e(is)h(used:)42 b Fs(${FCEDIT:-${EDITOR:-vi}})p -Ft(.)d(This)31 b(sa)m(ys)h(to)g(use)g(the)630 1906 y(v)-5 -b(alue)34 b(of)f(the)h Fs(FCEDIT)e Ft(v)-5 b(ariable)34 +(\014le.)150 5340 y Fs(fc)p eop end +%%Page: 116 122 +TeXDict begin 116 121 bop 150 -116 a Ft(116)2527 b(Bash)31 +b(Reference)g(Man)m(ual)870 299 y Fs(fc)47 b([-e)g Fj(ename)11 +b Fs(])46 b([-nlr])g([)p Fj(first)11 b Fs(])45 b([)p +Fj(last)11 b Fs(])870 408 y(fc)47 b(-s)g([)p Fj(pat)11 +b Fs(=)p Fj(rep)g Fs(])45 b([)p Fj(command)11 b Fs(])630 +539 y Ft(Fix)41 b(Command.)68 b(In)39 b(the)i(\014rst)e(form,)j(a)e +(range)h(of)f(commands)g(from)f Fq(\014rst)i Ft(to)g +Fq(last)i Ft(is)630 648 y(selected)35 b(from)e(the)g(history)g(list.)50 +b(Both)34 b Fq(\014rst)h Ft(and)e Fq(last)j Ft(ma)m(y)e(b)s(e)e(sp)s +(eci\014ed)h(as)g(a)h(string)630 758 y(\(to)26 b(lo)s(cate)h(the)e +(most)h(recen)m(t)g(command)e(b)s(eginning)h(with)g(that)g(string\))h +(or)f(as)g(a)g(n)m(um)m(b)s(er)630 867 y(\(an)f(index)f(in)m(to)h(the)g +(history)g(list,)h(where)e(a)h(negativ)m(e)i(n)m(um)m(b)s(er)c(is)i +(used)f(as)g(an)h(o\013set)g(from)630 977 y(the)j(curren)m(t)f(command) +h(n)m(um)m(b)s(er\).)39 b(If)26 b Fq(last)j Ft(is)e(not)g(sp)s +(eci\014ed)f(it)h(is)g(set)g(to)h Fq(\014rst)p Ft(.)39 +b(If)26 b Fq(\014rst)i Ft(is)630 1087 y(not)j(sp)s(eci\014ed)f(it)h(is) +g(set)h(to)f(the)g(previous)f(command)h(for)f(editing)i(and)e +Fp(\000)p Ft(16)h(for)g(listing.)630 1196 y(If)f(the)g(`)p +Fs(-l)p Ft(')g(\015ag)h(is)f(giv)m(en,)h(the)g(commands)e(are)i(listed) +g(on)f(standard)f(output.)40 b(The)30 b(`)p Fs(-n)p Ft(')630 +1306 y(\015ag)i(suppresses)f(the)h(command)g(n)m(um)m(b)s(ers)e(when)i +(listing.)46 b(The)32 b(`)p Fs(-r)p Ft(')g(\015ag)g(rev)m(erses)h(the) +630 1415 y(order)g(of)g(the)h(listing.)50 b(Otherwise,)34 +b(the)f(editor)h(giv)m(en)g(b)m(y)f Fq(ename)39 b Ft(is)33 +b(in)m(v)m(ok)m(ed)i(on)e(a)h(\014le)630 1525 y(con)m(taining)i(those)f +(commands.)52 b(If)33 b Fq(ename)40 b Ft(is)34 b(not)h(giv)m(en,)h(the) +f(v)-5 b(alue)35 b(of)f(the)g(follo)m(wing)630 1634 y(v)-5 +b(ariable)33 b(expansion)e(is)h(used:)42 b Fs(${FCEDIT:-${EDITOR:-vi}}) +p Ft(.)d(This)31 b(sa)m(ys)h(to)g(use)g(the)630 1744 +y(v)-5 b(alue)34 b(of)f(the)h Fs(FCEDIT)e Ft(v)-5 b(ariable)34 b(if)f(set,)i(or)f(the)f(v)-5 b(alue)34 b(of)g(the)f -Fs(EDITOR)f Ft(v)-5 b(ariable)34 b(if)f(that)630 2016 +Fs(EDITOR)f Ft(v)-5 b(ariable)34 b(if)f(that)630 1854 y(is)g(set,)i(or)e Fs(vi)g Ft(if)g(neither)g(is)g(set.)50 b(When)33 b(editing)h(is)f(complete,)i(the)f(edited)f(commands)630 -2125 y(are)e(ec)m(ho)s(ed)g(and)f(executed.)630 2271 +1963 y(are)e(ec)m(ho)s(ed)g(and)f(executed.)630 2093 y(In)k(the)g(second)g(form,)h Fq(command)j Ft(is)c(re-executed)i(after) f(eac)m(h)g(instance)g(of)f Fq(pat)j Ft(in)d(the)630 -2381 y(selected)e(command)e(is)g(replaced)h(b)m(y)g Fq(rep)p -Ft(.)630 2527 y(A)g(useful)f(alias)i(to)g(use)e(with)h(the)g +2203 y(selected)e(command)e(is)g(replaced)h(b)m(y)g Fq(rep)p +Ft(.)630 2333 y(A)g(useful)f(alias)i(to)g(use)e(with)h(the)g Fs(fc)f Ft(command)h(is)g Fs(r='fc)e(-s')p Ft(,)h(so)h(that)h(t)m -(yping)f(`)p Fs(r)f(cc)p Ft(')630 2637 y(runs)35 b(the)h(last)h +(yping)f(`)p Fs(r)f(cc)p Ft(')630 2443 y(runs)35 b(the)h(last)h (command)f(b)s(eginning)g(with)g Fs(cc)f Ft(and)h(t)m(yping)g(`)p -Fs(r)p Ft(')h(re-executes)h(the)e(last)630 2746 y(command)30 -b(\(see)h(Section)h(6.6)f([Aliases],)h(page)g(77\).)150 -2929 y Fs(history)870 3075 y(history)46 b([)p Fj(n)11 -b Fs(])870 3185 y(history)46 b(-c)870 3294 y(history)g(-d)h -Fj(offset)870 3404 y Fs(history)f([-anrw])g([)p Fj(filename)11 -b Fs(])870 3513 y(history)46 b(-ps)h Fj(arg)630 3660 +Fs(r)p Ft(')h(re-executes)h(the)e(last)630 2552 y(command)30 +b(\(see)h(Section)h(6.6)f([Aliases],)h(page)g(75\).)150 +2703 y Fs(history)870 2833 y(history)46 b([)p Fj(n)11 +b Fs(])870 2943 y(history)46 b(-c)870 3052 y(history)g(-d)h +Fj(offset)870 3162 y Fs(history)f([-anrw])g([)p Fj(filename)11 +b Fs(])870 3271 y(history)46 b(-ps)h Fj(arg)630 3402 y Ft(With)26 b(no)g(options,)h(displa)m(y)f(the)g(history)g(list)g (with)f(line)h(n)m(um)m(b)s(ers.)38 b(Lines)26 b(pre\014xed)e(with)630 -3769 y(a)35 b(`)p Fs(*)p Ft(')g(ha)m(v)m(e)h(b)s(een)e(mo)s(di\014ed.) +3511 y(a)35 b(`)p Fs(*)p Ft(')g(ha)m(v)m(e)h(b)s(een)e(mo)s(di\014ed.) 53 b(An)34 b(argumen)m(t)h(of)g Fq(n)f Ft(lists)i(only)f(the)g(last)g -Fq(n)f Ft(lines.)54 b(If)35 b(the)630 3879 y(shell)30 +Fq(n)f Ft(lines.)54 b(If)35 b(the)630 3621 y(shell)30 b(v)-5 b(ariable)31 b Fs(HISTTIMEFORMAT)26 b Ft(is)k(set)h(and)e(not)i (n)m(ull,)f(it)h(is)f(used)f(as)h(a)h(format)f(string)630 -3988 y(for)36 b Fq(strftime)41 b Ft(to)36 b(displa)m(y)g(the)g(time)h +3730 y(for)36 b Fq(strftime)41 b Ft(to)36 b(displa)m(y)g(the)g(time)h (stamp)f(asso)s(ciated)h(with)f(eac)m(h)h(displa)m(y)m(ed)f(history)630 -4098 y(en)m(try)-8 b(.)47 b(No)33 b(in)m(terv)m(ening)g(blank)f(is)g +3840 y(en)m(try)-8 b(.)47 b(No)33 b(in)m(terv)m(ening)g(blank)f(is)g (prin)m(ted)g(b)s(et)m(w)m(een)h(the)g(formatted)f(time)h(stamp)g(and) -630 4208 y(the)e(history)f(line.)630 4354 y(Options,)g(if)h(supplied,)e -(ha)m(v)m(e)i(the)g(follo)m(wing)h(meanings:)630 4536 +630 3950 y(the)e(history)f(line.)630 4080 y(Options,)g(if)h(supplied,)e +(ha)m(v)m(e)i(the)g(follo)m(wing)h(meanings:)630 4230 y Fs(-c)384 b Ft(Clear)23 b(the)g(history)g(list.)39 b(This)22 b(ma)m(y)i(b)s(e)e(com)m(bined)h(with)f(the)h(other)h -(options)1110 4646 y(to)31 b(replace)g(the)g(history)f(list)h -(completely)-8 b(.)630 4829 y Fs(-d)30 b Fj(offset)1110 -4938 y Ft(Delete)25 b(the)f(history)f(en)m(try)h(at)g(p)s(osition)f +(options)1110 4340 y(to)31 b(replace)g(the)g(history)f(list)h +(completely)-8 b(.)630 4491 y Fs(-d)30 b Fj(offset)1110 +4600 y Ft(Delete)25 b(the)f(history)f(en)m(try)h(at)g(p)s(osition)f Fq(o\013set)p Ft(.)39 b Fq(o\013set)27 b Ft(should)22 -b(b)s(e)h(sp)s(eci\014ed)1110 5048 y(as)31 b(it)g(app)s(ears)e(when)h -(the)g(history)g(is)h(displa)m(y)m(ed.)630 5230 y Fs(-a)384 +b(b)s(e)h(sp)s(eci\014ed)1110 4710 y(as)31 b(it)g(app)s(ears)e(when)h +(the)g(history)g(is)h(displa)m(y)m(ed.)630 4861 y Fs(-a)384 b Ft(App)s(end)35 b(the)i(new)g(history)g(lines)g(\(history)g(lines)g -(en)m(tered)h(since)f(the)g(b)s(e-)1110 5340 y(ginning)30 +(en)m(tered)h(since)f(the)g(b)s(e-)1110 4970 y(ginning)30 b(of)h(the)f(curren)m(t)g(Bash)h(session\))g(to)g(the)g(history)f -(\014le.)p eop end -%%Page: 119 125 -TeXDict begin 119 124 bop 150 -116 a Ft(Chapter)30 b(9:)41 -b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(119)630 -299 y Fs(-n)384 b Ft(App)s(end)32 b(the)i(history)f(lines)h(not)g -(already)g(read)g(from)f(the)h(history)f(\014le)h(to)1110 -408 y(the)26 b(curren)m(t)f(history)g(list.)40 b(These)25 +(\014le.)630 5121 y Fs(-n)384 b Ft(App)s(end)32 b(the)i(history)f +(lines)h(not)g(already)g(read)g(from)f(the)h(history)f(\014le)h(to)1110 +5230 y(the)26 b(curren)m(t)f(history)g(list.)40 b(These)25 b(are)h(lines)g(app)s(ended)e(to)i(the)f(history)h(\014le)1110 -518 y(since)31 b(the)f(b)s(eginning)g(of)g(the)h(curren)m(t)f(Bash)h -(session.)630 668 y Fs(-r)384 b Ft(Read)26 b(the)h(curren)m(t)f -(history)g(\014le)g(and)g(app)s(end)e(its)j(con)m(ten)m(ts)h(to)f(the)f -(history)1110 778 y(list.)630 928 y Fs(-w)384 b Ft(W)-8 -b(rite)32 b(out)e(the)h(curren)m(t)f(history)g(to)i(the)e(history)g -(\014le.)630 1078 y Fs(-p)384 b Ft(P)m(erform)31 b(history)f -(substitution)h(on)f(the)h Fq(arg)8 b Ft(s)31 b(and)f(displa)m(y)h(the) -f(result)h(on)1110 1188 y(the)d(standard)f(output,)i(without)f(storing) -g(the)g(results)g(in)g(the)g(history)g(list.)630 1338 -y Fs(-s)384 b Ft(The)30 b Fq(arg)8 b Ft(s)30 b(are)h(added)f(to)h(the)f -(end)g(of)h(the)f(history)h(list)g(as)f(a)h(single)g(en)m(try)-8 -b(.)630 1488 y(When)24 b(an)m(y)h(of)f(the)h(`)p Fs(-w)p -Ft(',)h(`)p Fs(-r)p Ft(',)f(`)p Fs(-a)p Ft(',)h(or)f(`)p -Fs(-n)p Ft(')f(options)g(is)h(used,)g(if)f Fq(\014lename)30 -b Ft(is)24 b(giv)m(en,)j(then)630 1598 y(it)32 b(is)g(used)f(as)h(the)f +5340 y(since)31 b(the)f(b)s(eginning)g(of)g(the)h(curren)m(t)f(Bash)h +(session.)p eop end +%%Page: 117 123 +TeXDict begin 117 122 bop 150 -116 a Ft(Chapter)30 b(9:)41 +b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(117)630 +299 y Fs(-r)384 b Ft(Read)26 b(the)h(curren)m(t)f(history)g(\014le)g +(and)g(app)s(end)e(its)j(con)m(ten)m(ts)h(to)f(the)f(history)1110 +408 y(list.)630 571 y Fs(-w)384 b Ft(W)-8 b(rite)32 b(out)e(the)h +(curren)m(t)f(history)g(to)i(the)e(history)g(\014le.)630 +734 y Fs(-p)384 b Ft(P)m(erform)31 b(history)f(substitution)h(on)f(the) +h Fq(arg)8 b Ft(s)31 b(and)f(displa)m(y)h(the)f(result)h(on)1110 +843 y(the)d(standard)f(output,)i(without)f(storing)g(the)g(results)g +(in)g(the)g(history)g(list.)630 1006 y Fs(-s)384 b Ft(The)30 +b Fq(arg)8 b Ft(s)30 b(are)h(added)f(to)h(the)f(end)g(of)h(the)f +(history)h(list)g(as)f(a)h(single)g(en)m(try)-8 b(.)630 +1168 y(When)24 b(an)m(y)h(of)f(the)h(`)p Fs(-w)p Ft(',)h(`)p +Fs(-r)p Ft(',)f(`)p Fs(-a)p Ft(',)h(or)f(`)p Fs(-n)p +Ft(')f(options)g(is)h(used,)g(if)f Fq(\014lename)30 b +Ft(is)24 b(giv)m(en,)j(then)630 1278 y(it)32 b(is)g(used)f(as)h(the)f (history)h(\014le.)45 b(If)31 b(not,)h(then)g(the)f(v)-5 b(alue)32 b(of)g(the)g Fs(HISTFILE)d Ft(v)-5 b(ariable)33 -b(is)630 1707 y(used.)150 1951 y Fr(9.3)68 b(History)46 -b(Expansion)275 2190 y Ft(The)35 b(History)h(library)f(pro)m(vides)h(a) +b(is)630 1388 y(used.)150 1653 y Fr(9.3)68 b(History)46 +b(Expansion)275 1900 y Ft(The)35 b(History)h(library)f(pro)m(vides)h(a) g(history)f(expansion)h(feature)g(that)g(is)g(similar)g(to)g(the)g -(history)150 2300 y(expansion)22 b(pro)m(vided)f(b)m(y)h +(history)150 2010 y(expansion)22 b(pro)m(vided)f(b)m(y)h Fs(csh)p Ft(.)37 b(This)22 b(section)h(describ)s(es)e(the)h(syn)m(tax)h -(used)e(to)h(manipulate)h(the)f(history)150 2409 y(information.)275 -2539 y(History)31 b(expansions)f(in)m(tro)s(duce)g(w)m(ords)g(from)g +(used)e(to)h(manipulate)h(the)f(history)150 2120 y(information.)275 +2257 y(History)31 b(expansions)f(in)m(tro)s(duce)g(w)m(ords)g(from)g (the)h(history)f(list)h(in)m(to)g(the)g(input)f(stream,)h(making)150 -2649 y(it)g(easy)g(to)g(rep)s(eat)g(commands,)f(insert)g(the)h(argumen) +2367 y(it)g(easy)g(to)g(rep)s(eat)g(commands,)f(insert)g(the)h(argumen) m(ts)f(to)h(a)g(previous)f(command)g(in)m(to)i(the)e(curren)m(t)150 -2759 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g -(quic)m(kly)-8 b(.)275 2888 y(History)27 b(expansion)f(tak)m(es)i +2476 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g +(quic)m(kly)-8 b(.)275 2614 y(History)27 b(expansion)f(tak)m(es)i (place)f(in)f(t)m(w)m(o)i(parts.)39 b(The)26 b(\014rst)g(is)g(to)h -(determine)g(whic)m(h)f(line)h(from)f(the)150 2998 y(history)i(list)g +(determine)g(whic)m(h)f(line)h(from)f(the)150 2724 y(history)i(list)g (should)f(b)s(e)g(used)g(during)g(substitution.)39 b(The)27 b(second)h(is)g(to)h(select)g(p)s(ortions)e(of)h(that)h(line)150 -3108 y(for)d(inclusion)f(in)m(to)i(the)f(curren)m(t)f(one.)40 +2833 y(for)d(inclusion)f(in)m(to)i(the)f(curren)m(t)f(one.)40 b(The)25 b(line)h(selected)h(from)f(the)g(history)f(is)h(called)h(the)f -Fq(ev)m(en)m(t)p Ft(,)j(and)150 3217 y(the)21 b(p)s(ortions)g(of)g +Fq(ev)m(en)m(t)p Ft(,)j(and)150 2943 y(the)21 b(p)s(ortions)g(of)g (that)h(line)f(that)h(are)g(acted)g(up)s(on)e(are)h(called)h Fq(w)m(ords)p Ft(.)38 b(V)-8 b(arious)21 b Fq(mo)s(di\014ers)j -Ft(are)e(a)m(v)-5 b(ailable)150 3327 y(to)35 b(manipulate)f(the)g +Ft(are)e(a)m(v)-5 b(ailable)150 3052 y(to)35 b(manipulate)f(the)g (selected)i(w)m(ords.)51 b(The)33 b(line)h(is)g(brok)m(en)g(in)m(to)h -(w)m(ords)e(in)h(the)g(same)h(fashion)e(that)150 3436 +(w)m(ords)e(in)h(the)g(same)h(fashion)e(that)150 3162 y(Bash)i(do)s(es,)h(so)f(that)h(sev)m(eral)g(w)m(ords)e(surrounded)f(b) m(y)i(quotes)g(are)g(considered)g(one)g(w)m(ord.)54 b(History)150 -3546 y(expansions)34 b(are)g(in)m(tro)s(duced)f(b)m(y)h(the)g(app)s +3272 y(expansions)34 b(are)g(in)m(tro)s(duced)f(b)m(y)h(the)g(app)s (earance)g(of)g(the)g(history)g(expansion)g(c)m(haracter,)i(whic)m(h)e -(is)150 3656 y(`)p Fs(!)p Ft(')d(b)m(y)f(default.)41 +(is)150 3381 y(`)p Fs(!)p Ft(')d(b)m(y)f(default.)41 b(Only)29 b(`)p Fs(\\)p Ft(')i(and)f(`)p Fs(')p Ft(')g(ma)m(y)h(b)s(e)f (used)g(to)h(escap)s(e)g(the)f(history)g(expansion)h(c)m(haracter.)275 -3785 y(Sev)m(eral)40 b(shell)g(options)g(settable)h(with)e(the)h +3519 y(Sev)m(eral)40 b(shell)g(options)g(settable)h(with)e(the)h Fs(shopt)e Ft(builtin)h(\(see)h(Section)h(4.2)f([Bash)g(Builtins],)150 -3895 y(page)32 b(41\))h(ma)m(y)f(b)s(e)f(used)g(to)i(tailor)g(the)e(b)s +3629 y(page)32 b(41\))h(ma)m(y)f(b)s(e)f(used)g(to)i(tailor)g(the)e(b)s (eha)m(vior)h(of)g(history)g(expansion.)44 b(If)31 b(the)h -Fs(histverify)d Ft(shell)150 4005 y(option)39 b(is)f(enabled,)i(and)e +Fs(histverify)d Ft(shell)150 3738 y(option)39 b(is)f(enabled,)i(and)e (Readline)g(is)h(b)s(eing)e(used,)j(history)e(substitutions)g(are)g -(not)h(immediately)150 4114 y(passed)30 b(to)h(the)g(shell)g(parser.)40 +(not)h(immediately)150 3848 y(passed)30 b(to)h(the)g(shell)g(parser.)40 b(Instead,)30 b(the)h(expanded)f(line)h(is)f(reloaded)h(in)m(to)h(the)e -(Readline)h(editing)150 4224 y(bu\013er)e(for)i(further)e(mo)s +(Readline)h(editing)150 3957 y(bu\013er)e(for)i(further)e(mo)s (di\014cation.)41 b(If)30 b(Readline)h(is)f(b)s(eing)g(used,)g(and)g -(the)g Fs(histreedit)e Ft(shell)i(option)150 4333 y(is)k(enabled,)h(a)g +(the)g Fs(histreedit)e Ft(shell)i(option)150 4067 y(is)k(enabled,)h(a)g (failed)g(history)f(expansion)g(will)g(b)s(e)g(reloaded)g(in)m(to)h -(the)g(Readline)f(editing)h(bu\013er)e(for)150 4443 y(correction.)74 +(the)g(Readline)f(editing)h(bu\013er)e(for)150 4176 y(correction.)74 b(The)41 b(`)p Fs(-p)p Ft(')g(option)g(to)h(the)f Fs(history)f Ft(builtin)g(command)h(ma)m(y)h(b)s(e)e(used)h(to)g(see)h(what)150 -4553 y(a)c(history)g(expansion)f(will)h(do)f(b)s(efore)h(using)f(it.)63 +4286 y(a)c(history)g(expansion)f(will)h(do)f(b)s(efore)h(using)f(it.)63 b(The)37 b(`)p Fs(-s)p Ft(')g(option)h(to)h(the)f Fs(history)d -Ft(builtin)i(ma)m(y)150 4662 y(b)s(e)c(used)h(to)g(add)g(commands)f(to) +Ft(builtin)i(ma)m(y)150 4396 y(b)s(e)c(used)h(to)g(add)g(commands)f(to) i(the)f(end)g(of)g(the)g(history)g(list)h(without)f(actually)i -(executing)f(them,)150 4772 y(so)j(that)h(they)f(are)g(a)m(v)-5 +(executing)f(them,)150 4505 y(so)j(that)h(they)f(are)g(a)m(v)-5 b(ailable)40 b(for)e(subsequen)m(t)f(recall.)65 b(This)37 -b(is)h(most)g(useful)g(in)f(conjunction)h(with)150 4881 -y(Readline.)275 5011 y(The)33 b(shell)h(allo)m(ws)h(con)m(trol)h(of)e -(the)g(v)-5 b(arious)34 b(c)m(haracters)h(used)f(b)m(y)f(the)h(history) -g(expansion)g(mec)m(h-)150 5121 y(anism)h(with)g(the)g -Fs(histchars)d Ft(v)-5 b(ariable,)38 b(as)d(explained)g(ab)s(o)m(v)m(e) -i(\(see)f(Section)f(5.2)i([Bash)e(V)-8 b(ariables],)150 -5230 y(page)32 b(59\).)44 b(The)31 b(shell)g(uses)g(the)g(history)g -(commen)m(t)i(c)m(haracter)f(to)g(mark)f(history)g(timestamps)h(when) -150 5340 y(writing)e(the)h(history)f(\014le.)p eop end -%%Page: 120 126 -TeXDict begin 120 125 bop 150 -116 a Ft(120)2527 b(Bash)31 -b(Reference)g(Man)m(ual)150 299 y Fk(9.3.1)63 b(Ev)m(en)m(t)39 -b(Designators)275 545 y Ft(An)30 b(ev)m(en)m(t)h(designator)h(is)e(a)h -(reference)g(to)g(a)f(command)h(line)f(en)m(try)h(in)f(the)h(history)f -(list.)150 709 y Fs(!)432 b Ft(Start)34 b(a)f(history)h(substitution,)g -(except)g(when)f(follo)m(w)m(ed)i(b)m(y)e(a)h(space,)h(tab,)f(the)g -(end)f(of)630 818 y(the)i(line,)g(`)p Fs(=)p Ft(')g(or)f(`)p -Fs(\()p Ft(')h(\(when)e(the)i Fs(extglob)d Ft(shell)j(option)f(is)h -(enabled)f(using)g(the)g Fs(shopt)630 928 y Ft(builtin\).)150 -1090 y Fs(!)p Fj(n)384 b Ft(Refer)30 b(to)i(command)e(line)g -Fq(n)p Ft(.)150 1252 y Fs(!-)p Fj(n)336 b Ft(Refer)30 -b(to)i(the)e(command)g Fq(n)g Ft(lines)h(bac)m(k.)150 -1413 y Fs(!!)384 b Ft(Refer)30 b(to)i(the)e(previous)g(command.)40 -b(This)30 b(is)g(a)h(synon)m(ym)f(for)g(`)p Fs(!-1)p -Ft('.)150 1575 y Fs(!)p Fj(string)144 b Ft(Refer)30 b(to)i(the)e(most)h -(recen)m(t)g(command)f(starting)i(with)e Fq(string)p -Ft(.)150 1737 y Fs(!?)p Fj(string)11 b Fs([?])630 1847 -y Ft(Refer)34 b(to)g(the)f(most)h(recen)m(t)h(command)e(con)m(taining)i -Fq(string)p Ft(.)50 b(The)33 b(trailing)i(`)p Fs(?)p -Ft(')e(ma)m(y)i(b)s(e)630 1956 y(omitted)c(if)g(the)f -Fq(string)38 b Ft(is)31 b(follo)m(w)m(ed)h(immediately)g(b)m(y)e(a)h -(newline.)150 2118 y Fs(^)p Fj(string1)11 b Fs(^)p Fj(string2)g -Fs(^)630 2228 y Ft(Quic)m(k)32 b(Substitution.)44 b(Rep)s(eat)32 -b(the)g(last)h(command,)f(replacing)g Fq(string1)40 b -Ft(with)31 b Fq(string2)p Ft(.)630 2337 y(Equiv)-5 b(alen)m(t)31 -b(to)g Fs(!!:s/)p Fj(string1)11 b Fs(/)p Fj(string2)g -Fs(/)p Ft(.)150 2499 y Fs(!#)384 b Ft(The)30 b(en)m(tire)h(command)f -(line)h(t)m(yp)s(ed)f(so)h(far.)150 2729 y Fk(9.3.2)63 -b(W)-10 b(ord)41 b(Designators)275 2975 y Ft(W)-8 b(ord)35 -b(designators)g(are)g(used)f(to)h(select)h(desired)e(w)m(ords)h(from)f -(the)h(ev)m(en)m(t.)55 b(A)34 b(`)p Fs(:)p Ft(')h(separates)h(the)150 -3085 y(ev)m(en)m(t)41 b(sp)s(eci\014cation)f(from)g(the)f(w)m(ord)g -(designator.)69 b(It)40 b(ma)m(y)g(b)s(e)f(omitted)i(if)e(the)h(w)m -(ord)f(designator)150 3194 y(b)s(egins)33 b(with)h(a)h(`)p -Fs(^)p Ft(',)g(`)p Fs($)p Ft(',)g(`)p Fs(*)p Ft(',)h(`)p -Fs(-)p Ft(',)f(or)f(`)p Fs(\045)p Ft('.)52 b(W)-8 b(ords)35 -b(are)f(n)m(um)m(b)s(ered)f(from)g(the)i(b)s(eginning)e(of)h(the)g -(line,)150 3304 y(with)39 b(the)h(\014rst)f(w)m(ord)g(b)s(eing)g -(denoted)h(b)m(y)g(0)g(\(zero\).)70 b(W)-8 b(ords)39 -b(are)h(inserted)g(in)m(to)g(the)g(curren)m(t)g(line)150 -3413 y(separated)31 b(b)m(y)f(single)h(spaces.)275 3550 -y(F)-8 b(or)31 b(example,)150 3714 y Fs(!!)384 b Ft(designates)37 -b(the)f(preceding)g(command.)57 b(When)35 b(y)m(ou)i(t)m(yp)s(e)f -(this,)h(the)f(preceding)g(com-)630 3823 y(mand)30 b(is)g(rep)s(eated)g -(in)g(toto.)150 3985 y Fs(!!:$)288 b Ft(designates)23 -b(the)g(last)g(argumen)m(t)g(of)f(the)h(preceding)f(command.)38 -b(This)22 b(ma)m(y)h(b)s(e)e(shortened)630 4095 y(to)31 -b Fs(!$)p Ft(.)150 4257 y Fs(!fi:2)240 b Ft(designates)30 -b(the)g(second)f(argumen)m(t)h(of)f(the)h(most)f(recen)m(t)i(command)e -(starting)h(with)f(the)630 4366 y(letters)j Fs(fi)p Ft(.)275 -4529 y(Here)e(are)h(the)g(w)m(ord)f(designators:)150 -4692 y Fs(0)g(\(zero\))114 b Ft(The)30 b Fs(0)p Ft(th)g(w)m(ord.)40 -b(F)-8 b(or)31 b(man)m(y)g(applications,)h(this)e(is)g(the)h(command)f -(w)m(ord.)150 4854 y Fj(n)432 b Ft(The)30 b Fq(n)p Ft(th)g(w)m(ord.)150 -5016 y Fs(^)432 b Ft(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m -(ord)g(1.)150 5178 y Fs($)432 b Ft(The)30 b(last)h(argumen)m(t.)150 -5340 y Fs(\045)432 b Ft(The)30 b(w)m(ord)g(matc)m(hed)h(b)m(y)f(the)h +b(is)h(most)g(useful)g(in)f(conjunction)h(with)150 4615 +y(Readline.)275 4753 y(The)29 b(shell)i(allo)m(ws)h(con)m(trol)g(of)e +(the)h(v)-5 b(arious)30 b(c)m(haracters)i(used)e(b)m(y)g(the)h(history) +f(expansion)h(mec)m(ha-)150 4862 y(nism)f(with)g(the)g +Fs(histchars)e Ft(v)-5 b(ariable.)150 5093 y Fk(9.3.1)63 +b(Ev)m(en)m(t)39 b(Designators)275 5340 y Ft(An)30 b(ev)m(en)m(t)h +(designator)h(is)e(a)h(reference)g(to)g(a)f(command)h(line)f(en)m(try)h +(in)f(the)h(history)f(list.)p eop end +%%Page: 118 124 +TeXDict begin 118 123 bop 150 -116 a Ft(118)2527 b(Bash)31 +b(Reference)g(Man)m(ual)150 299 y Fs(!)432 b Ft(Start)34 +b(a)f(history)h(substitution,)g(except)g(when)f(follo)m(w)m(ed)i(b)m(y) +e(a)h(space,)h(tab,)f(the)g(end)f(of)630 408 y(the)i(line,)g(`)p +Fs(=)p Ft(')g(or)f(`)p Fs(\()p Ft(')h(\(when)e(the)i +Fs(extglob)d Ft(shell)j(option)f(is)h(enabled)f(using)g(the)g +Fs(shopt)630 518 y Ft(builtin\).)150 674 y Fs(!)p Fj(n)384 +b Ft(Refer)30 b(to)i(command)e(line)g Fq(n)p Ft(.)150 +830 y Fs(!-)p Fj(n)336 b Ft(Refer)30 b(to)i(the)e(command)g +Fq(n)g Ft(lines)h(bac)m(k.)150 985 y Fs(!!)384 b Ft(Refer)30 +b(to)i(the)e(previous)g(command.)40 b(This)30 b(is)g(a)h(synon)m(ym)f +(for)g(`)p Fs(!-1)p Ft('.)150 1141 y Fs(!)p Fj(string)144 +b Ft(Refer)30 b(to)i(the)e(most)h(recen)m(t)g(command)f(starting)i +(with)e Fq(string)p Ft(.)150 1297 y Fs(!?)p Fj(string)11 +b Fs([?])630 1406 y Ft(Refer)34 b(to)g(the)f(most)h(recen)m(t)h +(command)e(con)m(taining)i Fq(string)p Ft(.)50 b(The)33 +b(trailing)i(`)p Fs(?)p Ft(')e(ma)m(y)i(b)s(e)630 1516 +y(omitted)c(if)g(the)f Fq(string)38 b Ft(is)31 b(follo)m(w)m(ed)h +(immediately)g(b)m(y)e(a)h(newline.)150 1672 y Fs(^)p +Fj(string1)11 b Fs(^)p Fj(string2)g Fs(^)630 1781 y Ft(Quic)m(k)32 +b(Substitution.)44 b(Rep)s(eat)32 b(the)g(last)h(command,)f(replacing)g +Fq(string1)40 b Ft(with)31 b Fq(string2)p Ft(.)630 1891 +y(Equiv)-5 b(alen)m(t)31 b(to)g Fs(!!:s/)p Fj(string1)11 +b Fs(/)p Fj(string2)g Fs(/)p Ft(.)150 2047 y Fs(!#)384 +b Ft(The)30 b(en)m(tire)h(command)f(line)h(t)m(yp)s(ed)f(so)h(far.)150 +2265 y Fk(9.3.2)63 b(W)-10 b(ord)41 b(Designators)275 +2508 y Ft(W)-8 b(ord)35 b(designators)g(are)g(used)f(to)h(select)h +(desired)e(w)m(ords)h(from)f(the)h(ev)m(en)m(t.)55 b(A)34 +b(`)p Fs(:)p Ft(')h(separates)h(the)150 2617 y(ev)m(en)m(t)41 +b(sp)s(eci\014cation)f(from)g(the)f(w)m(ord)g(designator.)69 +b(It)40 b(ma)m(y)g(b)s(e)f(omitted)i(if)e(the)h(w)m(ord)f(designator) +150 2727 y(b)s(egins)33 b(with)h(a)h(`)p Fs(^)p Ft(',)g(`)p +Fs($)p Ft(',)g(`)p Fs(*)p Ft(',)h(`)p Fs(-)p Ft(',)f(or)f(`)p +Fs(\045)p Ft('.)52 b(W)-8 b(ords)35 b(are)f(n)m(um)m(b)s(ered)f(from)g +(the)i(b)s(eginning)e(of)h(the)g(line,)150 2836 y(with)39 +b(the)h(\014rst)f(w)m(ord)g(b)s(eing)g(denoted)h(b)m(y)g(0)g(\(zero\).) +70 b(W)-8 b(ords)39 b(are)h(inserted)g(in)m(to)g(the)g(curren)m(t)g +(line)150 2946 y(separated)31 b(b)m(y)f(single)h(spaces.)275 +3079 y(F)-8 b(or)31 b(example,)150 3234 y Fs(!!)384 b +Ft(designates)37 b(the)f(preceding)g(command.)57 b(When)35 +b(y)m(ou)i(t)m(yp)s(e)f(this,)h(the)f(preceding)g(com-)630 +3344 y(mand)30 b(is)g(rep)s(eated)g(in)g(toto.)150 3500 +y Fs(!!:$)288 b Ft(designates)23 b(the)g(last)g(argumen)m(t)g(of)f(the) +h(preceding)f(command.)38 b(This)22 b(ma)m(y)h(b)s(e)e(shortened)630 +3609 y(to)31 b Fs(!$)p Ft(.)150 3765 y Fs(!fi:2)240 b +Ft(designates)30 b(the)g(second)f(argumen)m(t)h(of)f(the)h(most)f +(recen)m(t)i(command)e(starting)h(with)f(the)630 3875 +y(letters)j Fs(fi)p Ft(.)275 4030 y(Here)e(are)h(the)g(w)m(ord)f +(designators:)150 4186 y Fs(0)g(\(zero\))114 b Ft(The)30 +b Fs(0)p Ft(th)g(w)m(ord.)40 b(F)-8 b(or)31 b(man)m(y)g(applications,)h +(this)e(is)g(the)h(command)f(w)m(ord.)150 4342 y Fj(n)432 +b Ft(The)30 b Fq(n)p Ft(th)g(w)m(ord.)150 4498 y Fs(^)432 +b Ft(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m(ord)g(1.)150 +4654 y Fs($)432 b Ft(The)30 b(last)h(argumen)m(t.)150 +4809 y Fs(\045)432 b Ft(The)30 b(w)m(ord)g(matc)m(hed)h(b)m(y)f(the)h (most)g(recen)m(t)g(`)p Fs(?)p Fj(string)11 b Fs(?)p -Ft(')28 b(searc)m(h.)p eop end -%%Page: 121 127 -TeXDict begin 121 126 bop 150 -116 a Ft(Chapter)30 b(9:)41 -b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(121)150 -299 y Fj(x)p Fs(-)p Fj(y)336 b Ft(A)30 b(range)h(of)g(w)m(ords;)f(`)p -Fs(-)p Fj(y)11 b Ft(')30 b(abbreviates)h(`)p Fs(0-)p -Fj(y)11 b Ft('.)150 458 y Fs(*)432 b Ft(All)28 b(of)g(the)g(w)m(ords,)g -(except)h(the)e Fs(0)p Ft(th.)40 b(This)27 b(is)g(a)h(synon)m(ym)f(for) -h(`)p Fs(1-$)p Ft('.)39 b(It)28 b(is)g(not)g(an)f(error)630 -568 y(to)j(use)g(`)p Fs(*)p Ft(')f(if)h(there)g(is)g(just)f(one)h(w)m +Ft(')28 b(searc)m(h.)150 4965 y Fj(x)p Fs(-)p Fj(y)336 +b Ft(A)30 b(range)h(of)g(w)m(ords;)f(`)p Fs(-)p Fj(y)11 +b Ft(')30 b(abbreviates)h(`)p Fs(0-)p Fj(y)11 b Ft('.)150 +5121 y Fs(*)432 b Ft(All)28 b(of)g(the)g(w)m(ords,)g(except)h(the)e +Fs(0)p Ft(th.)40 b(This)27 b(is)g(a)h(synon)m(ym)f(for)h(`)p +Fs(1-$)p Ft('.)39 b(It)28 b(is)g(not)g(an)f(error)630 +5230 y(to)j(use)g(`)p Fs(*)p Ft(')f(if)h(there)g(is)g(just)f(one)h(w)m (ord)f(in)g(the)h(ev)m(en)m(t;)i(the)d(empt)m(y)i(string)e(is)h -(returned)e(in)630 677 y(that)j(case.)150 837 y Fj(x)11 -b Fs(*)373 b Ft(Abbreviates)31 b(`)p Fj(x)p Fs(-$)p Ft(')150 -996 y Fj(x)p Fs(-)384 b Ft(Abbreviates)31 b(`)p Fj(x)p -Fs(-$)p Ft(')f(lik)m(e)h(`)p Fj(x)11 b Fs(*)p Ft(',)31 -b(but)e(omits)i(the)g(last)g(w)m(ord.)275 1156 y(If)i(a)h(w)m(ord)g -(designator)g(is)g(supplied)f(without)h(an)g(ev)m(en)m(t)h(sp)s -(eci\014cation,)h(the)e(previous)f(command)150 1265 y(is)d(used)g(as)h -(the)f(ev)m(en)m(t.)150 1489 y Fk(9.3.3)63 b(Mo)s(di\014ers)275 -1733 y Ft(After)20 b(the)h(optional)h(w)m(ord)f(designator,)i(y)m(ou)e -(can)g(add)f(a)h(sequence)g(of)g(one)g(or)g(more)g(of)g(the)f(follo)m -(wing)150 1843 y(mo)s(di\014ers,)29 b(eac)m(h)j(preceded)e(b)m(y)g(a)h -(`)p Fs(:)p Ft('.)150 2002 y Fs(h)432 b Ft(Remo)m(v)m(e)32 -b(a)f(trailing)g(pathname)g(comp)s(onen)m(t,)g(lea)m(ving)h(only)e(the) -h(head.)150 2162 y Fs(t)432 b Ft(Remo)m(v)m(e)32 b(all)f(leading)h -(pathname)e(comp)s(onen)m(ts,)h(lea)m(ving)h(the)e(tail.)150 -2321 y Fs(r)432 b Ft(Remo)m(v)m(e)32 b(a)f(trailing)g(su\016x)f(of)g -(the)h(form)f(`)p Fs(.)p Fj(suffix)11 b Ft(',)28 b(lea)m(ving)33 -b(the)d(basename.)150 2481 y Fs(e)432 b Ft(Remo)m(v)m(e)32 -b(all)f(but)f(the)h(trailing)g(su\016x.)150 2640 y Fs(p)432 -b Ft(Prin)m(t)30 b(the)h(new)f(command)g(but)g(do)g(not)g(execute)i -(it.)150 2800 y Fs(q)432 b Ft(Quote)31 b(the)f(substituted)g(w)m(ords,) -g(escaping)h(further)e(substitutions.)150 2959 y Fs(x)432 -b Ft(Quote)32 b(the)f(substituted)g(w)m(ords)f(as)i(with)f(`)p -Fs(q)p Ft(',)h(but)e(break)h(in)m(to)i(w)m(ords)d(at)i(spaces,)h(tabs,) -630 3068 y(and)d(newlines.)150 3228 y Fs(s/)p Fj(old)11 -b Fs(/)p Fj(new)g Fs(/)630 3337 y Ft(Substitute)32 b -Fq(new)40 b Ft(for)32 b(the)h(\014rst)f(o)s(ccurrence)h(of)f -Fq(old)37 b Ft(in)32 b(the)h(ev)m(en)m(t)h(line.)48 b(An)m(y)32 -b(delimiter)630 3447 y(ma)m(y)25 b(b)s(e)g(used)f(in)g(place)i(of)f(`)p -Fs(/)p Ft('.)39 b(The)24 b(delimiter)h(ma)m(y)h(b)s(e)e(quoted)h(in)f -Fq(old)29 b Ft(and)24 b Fq(new)32 b Ft(with)25 b(a)630 -3557 y(single)k(bac)m(kslash.)40 b(If)28 b(`)p Fs(&)p -Ft(')g(app)s(ears)g(in)f Fq(new)p Ft(,)i(it)f(is)h(replaced)f(b)m(y)g -Fq(old)p Ft(.)40 b(A)28 b(single)h(bac)m(kslash)630 3666 -y(will)35 b(quote)g(the)g(`)p Fs(&)p Ft('.)54 b(The)34 -b(\014nal)g(delimiter)i(is)e(optional)i(if)f(it)g(is)f(the)h(last)h(c)m -(haracter)g(on)630 3776 y(the)31 b(input)e(line.)150 -3935 y Fs(&)432 b Ft(Rep)s(eat)31 b(the)f(previous)g(substitution.)150 -4095 y Fs(g)150 4204 y(a)432 b Ft(Cause)38 b(c)m(hanges)i(to)f(b)s(e)f -(applied)h(o)m(v)m(er)h(the)f(en)m(tire)g(ev)m(en)m(t)h(line.)66 -b(Used)39 b(in)f(conjunction)630 4314 y(with)30 b(`)p -Fs(s)p Ft(',)h(as)f(in)h Fs(gs/)p Fj(old)11 b Fs(/)p -Fj(new)g Fs(/)p Ft(,)26 b(or)k(with)h(`)p Fs(&)p Ft('.)150 -4473 y Fs(G)432 b Ft(Apply)30 b(the)g(follo)m(wing)i(`)p -Fs(s)p Ft(')f(mo)s(di\014er)e(once)i(to)g(eac)m(h)h(w)m(ord)e(in)g(the) -g(ev)m(en)m(t.)p eop end -%%Page: 122 128 -TeXDict begin 122 127 bop 150 -116 a Ft(122)2527 b(Bash)31 +(returned)e(in)630 5340 y(that)j(case.)p eop end +%%Page: 119 125 +TeXDict begin 119 124 bop 150 -116 a Ft(Chapter)30 b(9:)41 +b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(119)150 +299 y Fj(x)11 b Fs(*)373 b Ft(Abbreviates)31 b(`)p Fj(x)p +Fs(-$)p Ft(')150 458 y Fj(x)p Fs(-)384 b Ft(Abbreviates)31 +b(`)p Fj(x)p Fs(-$)p Ft(')f(lik)m(e)h(`)p Fj(x)11 b Fs(*)p +Ft(',)31 b(but)e(omits)i(the)g(last)g(w)m(ord.)275 618 +y(If)i(a)h(w)m(ord)g(designator)g(is)g(supplied)f(without)h(an)g(ev)m +(en)m(t)h(sp)s(eci\014cation,)h(the)e(previous)f(command)150 +727 y(is)d(used)g(as)h(the)f(ev)m(en)m(t.)150 951 y Fk(9.3.3)63 +b(Mo)s(di\014ers)275 1196 y Ft(After)20 b(the)h(optional)h(w)m(ord)f +(designator,)i(y)m(ou)e(can)g(add)f(a)h(sequence)g(of)g(one)g(or)g +(more)g(of)g(the)f(follo)m(wing)150 1305 y(mo)s(di\014ers,)29 +b(eac)m(h)j(preceded)e(b)m(y)g(a)h(`)p Fs(:)p Ft('.)150 +1465 y Fs(h)432 b Ft(Remo)m(v)m(e)32 b(a)f(trailing)g(pathname)g(comp)s +(onen)m(t,)g(lea)m(ving)h(only)e(the)h(head.)150 1624 +y Fs(t)432 b Ft(Remo)m(v)m(e)32 b(all)f(leading)h(pathname)e(comp)s +(onen)m(ts,)h(lea)m(ving)h(the)e(tail.)150 1783 y Fs(r)432 +b Ft(Remo)m(v)m(e)32 b(a)f(trailing)g(su\016x)f(of)g(the)h(form)f(`)p +Fs(.)p Fj(suffix)11 b Ft(',)28 b(lea)m(ving)33 b(the)d(basename.)150 +1943 y Fs(e)432 b Ft(Remo)m(v)m(e)32 b(all)f(but)f(the)h(trailing)g +(su\016x.)150 2102 y Fs(p)432 b Ft(Prin)m(t)30 b(the)h(new)f(command)g +(but)g(do)g(not)g(execute)i(it.)150 2262 y Fs(q)432 b +Ft(Quote)31 b(the)f(substituted)g(w)m(ords,)g(escaping)h(further)e +(substitutions.)150 2421 y Fs(x)432 b Ft(Quote)32 b(the)f(substituted)g +(w)m(ords)f(as)i(with)f(`)p Fs(q)p Ft(',)h(but)e(break)h(in)m(to)i(w)m +(ords)d(at)i(spaces,)h(tabs,)630 2531 y(and)d(newlines.)150 +2690 y Fs(s/)p Fj(old)11 b Fs(/)p Fj(new)g Fs(/)630 2800 +y Ft(Substitute)32 b Fq(new)40 b Ft(for)32 b(the)h(\014rst)f(o)s +(ccurrence)h(of)f Fq(old)37 b Ft(in)32 b(the)h(ev)m(en)m(t)h(line.)48 +b(An)m(y)32 b(delimiter)630 2909 y(ma)m(y)25 b(b)s(e)g(used)f(in)g +(place)i(of)f(`)p Fs(/)p Ft('.)39 b(The)24 b(delimiter)h(ma)m(y)h(b)s +(e)e(quoted)h(in)f Fq(old)29 b Ft(and)24 b Fq(new)32 +b Ft(with)25 b(a)630 3019 y(single)k(bac)m(kslash.)40 +b(If)28 b(`)p Fs(&)p Ft(')g(app)s(ears)g(in)f Fq(new)p +Ft(,)i(it)f(is)h(replaced)f(b)m(y)g Fq(old)p Ft(.)40 +b(A)28 b(single)h(bac)m(kslash)630 3128 y(will)35 b(quote)g(the)g(`)p +Fs(&)p Ft('.)54 b(The)34 b(\014nal)g(delimiter)i(is)e(optional)i(if)f +(it)g(is)f(the)h(last)h(c)m(haracter)g(on)630 3238 y(the)31 +b(input)e(line.)150 3397 y Fs(&)432 b Ft(Rep)s(eat)31 +b(the)f(previous)g(substitution.)150 3557 y Fs(g)150 +3666 y(a)432 b Ft(Cause)38 b(c)m(hanges)i(to)f(b)s(e)f(applied)h(o)m(v) +m(er)h(the)f(en)m(tire)g(ev)m(en)m(t)h(line.)66 b(Used)39 +b(in)f(conjunction)630 3776 y(with)30 b(`)p Fs(s)p Ft(',)h(as)f(in)h +Fs(gs/)p Fj(old)11 b Fs(/)p Fj(new)g Fs(/)p Ft(,)26 b(or)k(with)h(`)p +Fs(&)p Ft('.)150 3935 y Fs(G)432 b Ft(Apply)30 b(the)g(follo)m(wing)i +(`)p Fs(s)p Ft(')f(mo)s(di\014er)e(once)i(to)g(eac)m(h)h(w)m(ord)e(in)g +(the)g(ev)m(en)m(t.)p eop end +%%Page: 120 126 +TeXDict begin 120 125 bop 150 -116 a Ft(120)2527 b(Bash)31 b(Reference)g(Man)m(ual)p eop end -%%Page: 123 129 -TeXDict begin 123 128 bop 150 -116 a Ft(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(123)150 299 y Fo(10)80 +%%Page: 121 127 +TeXDict begin 121 126 bop 150 -116 a Ft(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(121)150 299 y Fo(10)80 b(Installing)52 b(Bash)275 535 y Ft(This)39 b(c)m(hapter)i(pro)m(vides) f(basic)g(instructions)g(for)g(installing)h(Bash)f(on)g(the)h(v)-5 b(arious)40 b(supp)s(orted)150 645 y(platforms.)58 b(The)36 @@ -13132,8 +12685,8 @@ b(T)-8 b(o)32 b(also)g(remo)m(v)m(e)g(the)g(\014les)f(that)g Fs(configure)e Ft(created)j(\(so)g(y)m(ou)g(can)f(compile)150 5340 y(Bash)g(for)f(a)g(di\013eren)m(t)h(kind)f(of)g(computer\),)h(t)m (yp)s(e)g(`)p Fs(make)e(distclean)p Ft('.)p eop end -%%Page: 124 130 -TeXDict begin 124 129 bop 150 -116 a Ft(124)2527 b(Bash)31 +%%Page: 122 128 +TeXDict begin 122 127 bop 150 -116 a Ft(122)2527 b(Bash)31 b(Reference)g(Man)m(ual)150 299 y Fr(10.2)68 b(Compilers)46 b(and)f(Options)275 560 y Ft(Some)40 b(systems)g(require)f(un)m(usual)g (options)h(for)g(compilation)i(or)e(linking)g(that)g(the)g @@ -13210,9 +12763,9 @@ b(will)h(use)f Fq(P)-8 b(A)g(TH)75 b Ft(as)64 b(the)g(pre\014x)e(for)i (installing)h(programs)e(and)h(libraries.)150 5340 y(Do)s(cumen)m (tation)32 b(and)e(other)h(data)g(\014les)f(will)h(still)g(use)f(the)h (regular)f(pre\014x.)p eop end -%%Page: 125 131 -TeXDict begin 125 130 bop 150 -116 a Ft(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(125)150 299 y Fr(10.5)68 +%%Page: 123 129 +TeXDict begin 123 128 bop 150 -116 a Ft(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(123)150 299 y Fr(10.5)68 b(Sp)t(ecifying)45 b(the)g(System)h(T)l(yp)t(e)275 539 y Ft(There)35 b(ma)m(y)h(b)s(e)f(some)h(features)g Fs(configure)d Ft(can)j(not)g(\014gure)f(out)g(automatically)-8 b(,)41 @@ -13220,7 +12773,7 @@ b(but)35 b(need)g(to)150 649 y(determine)h(b)m(y)g(the)h(t)m(yp)s(e)f (of)g(host)h(Bash)f(will)h(run)d(on.)58 b(Usually)37 b Fs(configure)d Ft(can)i(\014gure)g(that)g(out,)150 758 y(but)c(if)h(it)g(prin)m(ts)g(a)g(message)h(sa)m(ying)g(it)f(can)h -(not)f(guess)g(the)g(host)g(t)m(yp)s(e,)h(giv)m(e)g(it)f(the)h(`)p +(not)f(guess)g(the)g(host)g(t)m(yp)s(e,)h(giv)m(e)g(it)f(the)g(`)p Fs(--host=TYPE)p Ft(')150 868 y(option.)39 b(`)p Fs(TYPE)p Ft(')25 b(can)g(either)g(b)s(e)g(a)g(short)g(name)g(for)g(the)g(system) g(t)m(yp)s(e,)h(suc)m(h)f(as)g(`)p Fs(sun4)p Ft(',)h(or)f(a)g @@ -13280,8 +12833,8 @@ b(T)-8 b(o)29 b(turn)e(o\013)h(the)h(default)f(use)g(of)g(a)h(pac)m(k-) b Ft('.)63 b(T)-8 b(o)40 b(con\014gure)g(Bash)f(without)h(a)g(feature)g (that)g(is)g(enabled)f(b)m(y)150 5340 y(default,)31 b(use)f(`)p Fs(--disable-)p Fj(feature)11 b Ft('.)p eop end -%%Page: 126 132 -TeXDict begin 126 131 bop 150 -116 a Ft(126)2527 b(Bash)31 +%%Page: 124 130 +TeXDict begin 124 129 bop 150 -116 a Ft(124)2527 b(Bash)31 b(Reference)g(Man)m(ual)275 299 y(Here)21 b(is)g(a)g(complete)h(list)g (of)f(the)g(`)p Fs(--enable-)p Ft(')e(and)h(`)p Fs(--with-)p Ft(')g(options)h(that)g(the)g(Bash)g Fs(configure)150 @@ -13349,9 +12902,9 @@ y Ft(This)h(builds)f(a)i(Bash)g(binary)f(that)h(pro)s(duces)e (pro\014ling)h(information)h(to)h(b)s(e)d(pro)s(cessed)630 5340 y(b)m(y)g Fs(gprof)f Ft(eac)m(h)j(time)f(it)g(is)f(executed.)p eop end -%%Page: 127 133 -TeXDict begin 127 132 bop 150 -116 a Ft(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(127)150 299 y Fs(--enable-static-link)630 +%%Page: 125 131 +TeXDict begin 125 130 bop 150 -116 a Ft(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(125)150 299 y Fs(--enable-static-link)630 408 y Ft(This)37 b(causes)h(Bash)f(to)h(b)s(e)f(link)m(ed)h(statically) -8 b(,)43 b(if)37 b Fs(gcc)g Ft(is)g(b)s(eing)g(used.)61 b(This)37 b(could)h(b)s(e)630 518 y(used)30 b(to)h(build)e(a)i(v)m @@ -13367,7 +12920,7 @@ p Ft(')150 1022 y(are)26 b(enabled)g(b)m(y)g(default,)h(unless)f(the)g (supp)s(ort.)150 1176 y Fs(--enable-alias)630 1285 y Ft(Allo)m(w)41 b(alias)g(expansion)f(and)f(include)g(the)h Fs(alias)f Ft(and)g Fs(unalias)e Ft(builtins)j(\(see)g(Sec-)630 -1395 y(tion)31 b(6.6)g([Aliases],)i(page)e(77\).)150 +1395 y(tion)31 b(6.6)g([Aliases],)i(page)e(75\).)150 1548 y Fs(--enable-arith-for-comma)o(nd)630 1658 y Ft(Include)21 b(supp)s(ort)g(for)g(the)i(alternate)g(form)f(of)g(the)g Fs(for)f Ft(command)h(that)h(b)s(eha)m(v)m(es)f(lik)m(e)i(the)630 @@ -13375,11 +12928,11 @@ Fs(for)f Ft(command)h(that)h(b)s(eha)m(v)m(es)f(lik)m(e)i(the)630 (3.2.4.1)i([Lo)s(oping)d(Constructs],)h(page)g(9\).)150 1921 y Fs(--enable-array-variables)630 2030 y Ft(Include)h(supp)s(ort)g (for)h(one-dimensional)h(arra)m(y)f(shell)h(v)-5 b(ariables)33 -b(\(see)h(Section)g(6.7)h([Ar-)630 2140 y(ra)m(ys],)c(page)g(78\).)150 +b(\(see)h(Section)g(6.7)h([Ar-)630 2140 y(ra)m(ys],)c(page)g(76\).)150 2293 y Fs(--enable-bang-history)630 2403 y Ft(Include)36 b(supp)s(ort)f(for)h Fs(csh)p Ft(-lik)m(e)h(history)g(substitution)f (\(see)h(Section)g(9.3)h([History)f(In-)630 2513 y(teraction],)c(page)e -(119\).)150 2666 y Fs(--enable-brace-expansion)630 2776 +(117\).)150 2666 y Fs(--enable-brace-expansion)630 2776 y Ft(Include)40 b Fs(csh)p Ft(-lik)m(e)h(brace)f(expansion)g(\()h Fs(b{a,b}c)2445 2772 y Fp(7!)2576 2776 y Fs(bac)30 b(bbc)39 b Ft(\).)71 b(See)40 b(Section)h(3.5.1)630 2885 y([Brace)32 @@ -13405,7 +12958,7 @@ b(\(see)25 b(Section)h(3.2.4.2)h([Conditional)e(Con-)630 630 4748 y Ft(Include)j(supp)s(ort)g(for)h(a)g Fs(csh)p Ft(-lik)m(e)h(directory)f(stac)m(k)i(and)d(the)i Fs(pushd)p Ft(,)f Fs(popd)p Ft(,)g(and)f Fs(dirs)630 4858 y Ft(builtins)d(\(see)h -(Section)g(6.8)h([The)e(Directory)i(Stac)m(k],)g(page)f(79\).)150 +(Section)g(6.8)h([The)e(Directory)i(Stac)m(k],)g(page)f(77\).)150 5011 y Fs(--enable-disabled-builti)o(ns)630 5121 y Ft(Allo)m(w)40 b(builtin)e(commands)g(to)h(b)s(e)f(in)m(v)m(ok)m(ed)i(via)f(`)p Fs(builtin)29 b(xxx)p Ft(')37 b(ev)m(en)j(after)f Fs(xxx)e @@ -13414,8 +12967,8 @@ Fs(enable)d(-n)i(xxx)p Ft('.)43 b(See)32 b(Section)g(4.2)h([Bash)e (Builtins],)i(page)f(41,)630 5340 y(for)e(details)i(of)e(the)h Fs(builtin)d Ft(and)i Fs(enable)e Ft(builtin)i(commands.)p eop end -%%Page: 128 134 -TeXDict begin 128 133 bop 150 -116 a Ft(128)2527 b(Bash)31 +%%Page: 126 132 +TeXDict begin 126 131 bop 150 -116 a Ft(126)2527 b(Bash)31 b(Reference)g(Man)m(ual)150 299 y Fs(--enable-dparen-arithmet)o(ic)630 408 y Ft(Include)42 b(supp)s(ort)f(for)h(the)h Fs(\(\(...)o(\)\))f Ft(command)g(\(see)i(Section)f(3.2.4.2)i([Conditional)630 @@ -13423,17 +12976,17 @@ Ft(command)g(\(see)i(Section)f(3.2.4.2)i([Conditional)630 (--enable-extended-glob)630 783 y Ft(Include)40 b(supp)s(ort)e(for)i (the)h(extended)f(pattern)h(matc)m(hing)g(features)g(describ)s(ed)e(ab) s(o)m(v)m(e)630 892 y(under)29 b(Section)i(3.5.8.1)i([P)m(attern)e -(Matc)m(hing],)i(page)e(24.)150 1048 y Fs(--enable-help-builtin)630 +(Matc)m(hing],)i(page)e(23.)150 1048 y Fs(--enable-help-builtin)630 1157 y Ft(Include)24 b(the)h Fs(help)f Ft(builtin,)h(whic)m(h)g(displa) m(ys)f(help)h(on)f(shell)h(builtins)f(and)h(v)-5 b(ariables)25 b(\(see)630 1267 y(Section)31 b(4.2)h([Bash)e(Builtins],)i(page)f (41\).)150 1422 y Fs(--enable-history)630 1532 y Ft(Include)e(command)g (history)h(and)f(the)h Fs(fc)f Ft(and)g Fs(history)e Ft(builtin)j(commands)f(\(see)h(Sec-)630 1641 y(tion)h(9.1)g([Bash)g -(History)g(F)-8 b(acilities],)34 b(page)d(117\).)150 +(History)g(F)-8 b(acilities],)34 b(page)d(115\).)150 1797 y Fs(--enable-job-control)630 1906 y Ft(This)e(enables)i(the)f (job)g(con)m(trol)h(features)g(\(see)g(Chapter)f(7)g([Job)g(Con)m -(trol],)h(page)g(87\),)h(if)630 2016 y(the)f(op)s(erating)f(system)h +(trol],)h(page)g(85\),)h(if)630 2016 y(the)f(op)s(erating)f(system)h (supp)s(orts)d(them.)150 2171 y Fs(--enable-multibyte)630 2281 y Ft(This)h(enables)i(supp)s(ort)d(for)i(m)m(ultib)m(yte)h(c)m (haracters)g(if)f(the)g(op)s(erating)h(system)f(pro)m(vides)630 @@ -13450,7 +13003,7 @@ s(cess)e(Substitution],)630 3249 y(page)31 b(22\))h(if)e(the)h(op)s (erating)f(system)h(pro)m(vides)f(the)h(necessary)g(supp)s(ort.)150 3404 y Fs(--enable-progcomp)630 3513 y Ft(Enable)d(the)g(programmable)g (completion)i(facilities)g(\(see)f(Section)g(8.6)g([Programmable)630 -3623 y(Completion],)i(page)h(111\).)42 b(If)30 b(Readline)h(is)f(not)h +3623 y(Completion],)i(page)h(109\).)42 b(If)30 b(Readline)h(is)f(not)h (enabled,)f(this)h(option)g(has)f(no)g(e\013ect.)150 3778 y Fs(--enable-prompt-string-d)o(ecod)o(ing)630 3888 y Ft(T)-8 b(urn)46 b(on)h(the)h(in)m(terpretation)g(of)g(a)g(n)m(um)m @@ -13458,24 +13011,24 @@ y Ft(T)-8 b(urn)46 b(on)h(the)h(in)m(terpretation)g(of)g(a)g(n)m(um)m 3998 y(the)39 b Fs($PS1)p Ft(,)g Fs($PS2)p Ft(,)h Fs($PS3)p Ft(,)f(and)f Fs($PS4)f Ft(prompt)h(strings.)64 b(See)39 b(Section)g(6.9)h([Prin)m(ting)f(a)630 4107 y(Prompt],)30 -b(page)h(81,)h(for)e(a)h(complete)h(list)f(of)f(prompt)g(string)g +b(page)h(79,)h(for)e(a)h(complete)h(list)f(of)f(prompt)g(string)g (escap)s(e)h(sequences.)150 4262 y Fs(--enable-readline)630 4372 y Ft(Include)d(supp)s(ort)f(for)h(command-line)h(editing)g(and)f (history)g(with)g(the)h(Bash)g(v)m(ersion)g(of)630 4482 y(the)i(Readline)g(library)f(\(see)h(Chapter)f(8)g([Command)g(Line)g -(Editing],)h(page)g(91\).)150 4637 y Fs(--enable-restricted)630 +(Editing],)h(page)g(89\).)150 4637 y Fs(--enable-restricted)630 4746 y Ft(Include)41 b(supp)s(ort)f(for)i(a)g Fq(restricted)g(shell)p Ft(.)75 b(If)42 b(this)f(is)h(enabled,)j(Bash,)g(when)c(called)630 4856 y(as)f Fs(rbash)p Ft(,)h(en)m(ters)f(a)g(restricted)h(mo)s(de.)68 b(See)40 b(Section)h(6.10)g([The)f(Restricted)h(Shell],)630 -4966 y(page)31 b(82,)h(for)e(a)g(description)h(of)f(restricted)h(mo)s +4966 y(page)31 b(80,)h(for)e(a)g(description)h(of)f(restricted)h(mo)s (de.)150 5121 y Fs(--enable-select)630 5230 y Ft(Include)k(the)g Fs(select)f Ft(builtin,)i(whic)m(h)f(allo)m(ws)i(the)f(generation)g(of) g(simple)f(men)m(us)g(\(see)630 5340 y(Section)c(3.2.4.2)i ([Conditional)e(Constructs],)g(page)g(10\).)p eop end -%%Page: 129 135 -TeXDict begin 129 134 bop 150 -116 a Ft(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(129)150 299 y Fs +%%Page: 127 133 +TeXDict begin 127 132 bop 150 -116 a Ft(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(127)150 299 y Fs (--enable-separate-helpfi)o(les)630 408 y Ft(Use)32 b(external)h (\014les)f(for)g(the)g(do)s(cumen)m(tation)h(displa)m(y)m(ed)f(b)m(y)g (the)g Fs(help)f Ft(builtin)h(instead)630 518 y(of)f(storing)f(the)h @@ -13489,7 +13042,7 @@ b(ma)m(y)g(need)630 1006 y(to)c(disable)g(this)f(if)g(y)m(our)h 1166 y Fs(--enable-strict-posix-de)o(faul)o(t)630 1275 y Ft(Mak)m(e)c(Bash)f Fl(posix)p Ft(-conforman)m(t)g(b)m(y)f(default)h (\(see)g(Section)h(6.11)g([Bash)f(POSIX)e(Mo)s(de],)630 -1385 y(page)31 b(82\).)150 1544 y Fs(--enable-usg-echo-defaul)o(t)630 +1385 y(page)31 b(80\).)150 1544 y Fs(--enable-usg-echo-defaul)o(t)630 1654 y Ft(A)f(synon)m(ym)g(for)g Fs(--enable-xpg-echo-default)p Ft(.)150 1813 y Fs(--enable-xpg-echo-defaul)o(t)630 1923 y Ft(Mak)m(e)c(the)f Fs(echo)e Ft(builtin)i(expand)f(bac)m @@ -13512,12 +13065,12 @@ y(the)h(consequences)g(if)f(y)m(ou)h(do.)55 b(Read)36 b(the)g(commen)m(ts)g(asso)s(ciated)h(with)e(eac)m(h)i(de\014nition)e (for)g(more)150 2849 y(information)c(ab)s(out)f(its)h(e\013ect.)p eop end -%%Page: 130 136 -TeXDict begin 130 135 bop 150 -116 a Ft(130)2527 b(Bash)31 +%%Page: 128 134 +TeXDict begin 128 133 bop 150 -116 a Ft(128)2527 b(Bash)31 b(Reference)g(Man)m(ual)p eop end -%%Page: 131 137 -TeXDict begin 131 136 bop 150 -116 a Ft(App)s(endix)29 -b(A:)h(Rep)s(orting)h(Bugs)2299 b(131)150 299 y Fo(App)t(endix)52 +%%Page: 129 135 +TeXDict begin 129 134 bop 150 -116 a Ft(App)s(endix)29 +b(A:)h(Rep)s(orting)h(Bugs)2299 b(129)150 299 y Fo(App)t(endix)52 b(A)121 b(Rep)t(orting)52 b(Bugs)275 533 y Ft(Please)35 b(rep)s(ort)e(all)i(bugs)f(y)m(ou)g(\014nd)f(in)h(Bash.)52 b(But)34 b(\014rst,)h(y)m(ou)f(should)f(mak)m(e)i(sure)f(that)g(it)h @@ -13530,8 +13083,8 @@ Ft(.)275 887 y(Once)41 b(y)m(ou)g(ha)m(v)m(e)h(determined)f(that)h(a)f Ft(command)i(to)150 996 y(submit)25 b(a)h(bug)g(rep)s(ort.)38 b(If)26 b(y)m(ou)g(ha)m(v)m(e)h(a)f(\014x,)h(y)m(ou)f(are)g(encouraged) h(to)f(mail)h(that)f(as)g(w)m(ell!)40 b(Suggestions)150 -1106 y(and)20 b(`philosophical')j(bug)d(rep)s(orts)g(ma)m(y)i(b)s(e)e -(mailed)i(to)g Fs(bug-bash@gnu.org)17 b Ft(or)k(p)s(osted)f(to)i(the)f +1106 y(and)20 b(`philosophical')j(bug)d(rep)s(orts)g(ma)m(y)i(b)s(e)f +(mailed)g(to)h Fs(bug-bash@gnu.org)17 b Ft(or)k(p)s(osted)f(to)i(the)f (Usenet)150 1215 y(newsgroup)29 b Fs(gnu.bash.bug)p Ft(.)275 1350 y(All)i(bug)e(rep)s(orts)h(should)f(include:)225 1484 y Fp(\017)60 b Ft(The)30 b(v)m(ersion)h(n)m(um)m(b)s(er)e(of)h @@ -13546,13 +13099,13 @@ s(duce)e(it.)150 2182 y Fs(bashbug)d Ft(inserts)i(the)h(\014rst)f (vides)f(for)g(\014ling)h(a)150 2291 y(bug)h(rep)s(ort.)275 2426 y(Please)h(send)f(all)h(rep)s(orts)f(concerning)g(this)h(man)m (ual)f(to)h Fs(chet@po.CWRU.Edu)p Ft(.)p eop end -%%Page: 132 138 -TeXDict begin 132 137 bop 150 -116 a Ft(132)2527 b(Bash)31 +%%Page: 130 136 +TeXDict begin 130 135 bop 150 -116 a Ft(130)2527 b(Bash)31 b(Reference)g(Man)m(ual)p eop end -%%Page: 133 139 -TeXDict begin 133 138 bop 150 -116 a Ft(App)s(endix)29 +%%Page: 131 137 +TeXDict begin 131 136 bop 150 -116 a Ft(App)s(endix)29 b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31 -b(The)f(Bourne)g(Shell)1258 b(133)150 141 y Fo(App)t(endix)52 +b(The)f(Bourne)g(Shell)1258 b(131)150 141 y Fo(App)t(endix)52 b(B)128 b(Ma)9 b(jor)54 b(Di\013erences)d(F)-13 b(rom)54 b(The)f(Bourne)1135 299 y(Shell)275 530 y Ft(Bash)25 b(implemen)m(ts)g(essen)m(tially)i(the)f(same)f(grammar,)i(parameter)e @@ -13573,20 +13126,20 @@ Fs(sh)f Ft(included)g(in)h(SVR4.2)h(\(the)f(last)h(v)m(ersion)f(of)g Fl(posix)p Ft(-conforman)m(t,)g(ev)m(en)g(where)f(the)g Fl(posix)g Ft(sp)s(eci\014cation)h(di\013ers)f(from)g(traditional)330 1431 y Fs(sh)e Ft(b)s(eha)m(vior)g(\(see)i(Section)f(6.11)h([Bash)e -(POSIX)g(Mo)s(de],)h(page)g(82\).)225 1565 y Fp(\017)60 +(POSIX)g(Mo)s(de],)h(page)g(80\).)225 1565 y Fp(\017)60 b Ft(Bash)26 b(has)g(m)m(ulti-c)m(haracter)i(in)m(v)m(o)s(cation)g (options)f(\(see)f(Section)h(6.1)g([In)m(v)m(oking)g(Bash],)h(page)e -(69\).)225 1699 y Fp(\017)60 b Ft(Bash)28 b(has)g(command-line)h +(67\).)225 1699 y Fp(\017)60 b Ft(Bash)28 b(has)g(command-line)h (editing)f(\(see)h(Chapter)f(8)g([Command)f(Line)h(Editing],)i(page)e -(91\))i(and)330 1809 y(the)h Fs(bind)e Ft(builtin.)225 +(89\))i(and)330 1809 y(the)h Fs(bind)e Ft(builtin.)225 1943 y Fp(\017)60 b Ft(Bash)46 b(pro)m(vides)g(a)g(programmable)g(w)m (ord)f(completion)i(mec)m(hanism)f(\(see)h(Section)g(8.6)g([Pro-)330 -2052 y(grammable)21 b(Completion],)i(page)e(111\),)k(and)19 +2052 y(grammable)21 b(Completion],)i(page)e(109\),)k(and)19 b(t)m(w)m(o)j(builtin)e(commands,)i Fs(complete)c Ft(and)i Fs(compgen)p Ft(,)330 2162 y(to)31 b(manipulate)g(it.)225 2296 y Fp(\017)60 b Ft(Bash)26 b(has)f(command)h(history)f(\(see)i (Section)f(9.1)h([Bash)f(History)h(F)-8 b(acilities],)30 -b(page)c(117\))i(and)d(the)330 2405 y Fs(history)k Ft(and)h +b(page)c(115\))i(and)d(the)330 2405 y Fs(history)k Ft(and)h Fs(fc)g Ft(builtins)g(to)h(manipulate)g(it.)42 b(The)30 b(Bash)h(history)g(list)g(main)m(tains)g(timestamp)330 2515 y(information)g(and)e(uses)h(the)h(v)-5 b(alue)31 @@ -13594,9 +13147,9 @@ b(of)f(the)h Fs(HISTTIMEFORMAT)26 b Ft(v)-5 b(ariable)32 b(to)f(displa)m(y)f(it.)225 2649 y Fp(\017)60 b Ft(Bash)48 b(implemen)m(ts)h Fs(csh)p Ft(-lik)m(e)g(history)f(expansion)g(\(see)h (Section)g(9.3)h([History)f(In)m(teraction],)330 2759 -y(page)31 b(119\).)225 2892 y Fp(\017)60 b Ft(Bash)33 +y(page)31 b(117\).)225 2892 y Fp(\017)60 b Ft(Bash)33 b(has)g(one-dimensional)h(arra)m(y)f(v)-5 b(ariables)34 -b(\(see)g(Section)g(6.7)g([Arra)m(ys],)g(page)g(78\),)h(and)e(the)330 +b(\(see)g(Section)g(6.7)g([Arra)m(ys],)g(page)g(76\),)h(and)e(the)330 3002 y(appropriate)39 b(v)-5 b(ariable)40 b(expansions)f(and)g (assignmen)m(t)h(syn)m(tax)g(to)g(use)f(them.)67 b(Sev)m(eral)40 b(of)g(the)330 3112 y(Bash)32 b(builtins)f(tak)m(e)j(options)e(to)h @@ -13638,8 +13191,8 @@ b Fs(;)30 b Fj(expr3)39 b Fs(\)\))23 b Ft(arithmetic)h(for)e(command,)j Ft(comp)s(ound)g(command,)i(whic)m(h)f(allo)m(ws)i(the)f(generation)g (of)g(simple)330 5340 y(men)m(us)f(\(see)h(Section)g(3.2.4.2)i ([Conditional)e(Constructs],)g(page)g(10\).)p eop end -%%Page: 134 140 -TeXDict begin 134 139 bop 150 -116 a Ft(134)2527 b(Bash)31 +%%Page: 132 138 +TeXDict begin 132 137 bop 150 -116 a Ft(132)2527 b(Bash)31 b(Reference)g(Man)m(ual)225 299 y Fp(\017)60 b Ft(Bash)40 b(includes)g(the)g Fs([[)g Ft(comp)s(ound)e(command,)43 b(whic)m(h)c(mak)m(es)i(conditional)h(testing)f(part)f(of)330 @@ -13654,12 +13207,12 @@ b Ft(Bash)31 b(pro)m(vides)f(optional)h(case-insensitiv)m(e)i(matc)m (page)h(18\).)225 1034 y Fp(\017)60 b Ft(Bash)24 b(implemen)m(ts)h (command)e(aliases)j(and)d(the)i Fs(alias)d Ft(and)i Fs(unalias)e Ft(builtins)h(\(see)i(Section)g(6.6)330 -1143 y([Aliases],)32 b(page)f(77\).)225 1279 y Fp(\017)60 +1143 y([Aliases],)32 b(page)f(75\).)225 1279 y Fp(\017)60 b Ft(Bash)32 b(pro)m(vides)g(shell)g(arithmetic,)i(the)e Fs(\(\()g Ft(comp)s(ound)e(command)i(\(see)h(Section)f(3.2.4.2)j([Con-) 330 1388 y(ditional)d(Constructs],)e(page)i(10\),)g(and)e(arithmetic)i (expansion)e(\(see)i(Section)f(6.5)h([Shell)f(Arith-)330 -1498 y(metic],)h(page)f(76\).)225 1633 y Fp(\017)60 b +1498 y(metic],)h(page)f(74\).)225 1633 y Fp(\017)60 b Ft(V)-8 b(ariables)31 b(presen)m(t)e(in)g(the)g(shell's)h(initial)g(en) m(vironmen)m(t)g(are)g(automatically)i(exp)s(orted)d(to)h(c)m(hild)330 1743 y(pro)s(cesses.)38 b(The)23 b(Bourne)g(shell)g(do)s(es)g(not)g @@ -13721,17 +13274,17 @@ Ft(,)h Fs(OSTYPE)p Ft(,)h Fs(MACHTYPE)p Ft(,)f(and)330 4985 y Fs(HOSTNAME)p Ft(\),)55 b(and)c(the)g(instance)h(of)g(Bash)f (that)h(is)f(running)f(\()p Fs(BASH)p Ft(,)56 b Fs(BASH_VERSION)p Ft(,)e(and)330 5095 y Fs(BASH_VERSINFO)p Ft(\).)37 b(See)31 -b(Section)g(5.2)h([Bash)e(V)-8 b(ariables],)33 b(page)e(59,)g(for)f +b(Section)g(5.2)h([Bash)e(V)-8 b(ariables],)33 b(page)e(57,)g(for)f (details.)225 5230 y Fp(\017)60 b Ft(The)44 b Fs(IFS)f Ft(v)-5 b(ariable)45 b(is)f(used)f(to)i(split)f(only)g(the)g(results)g (of)h(expansion,)i(not)d(all)h(w)m(ords)f(\(see)330 5340 -y(Section)29 b(3.5.7)h([W)-8 b(ord)29 b(Splitting],)h(page)f(23\).)41 +y(Section)29 b(3.5.7)h([W)-8 b(ord)29 b(Splitting],)h(page)f(22\).)41 b(This)28 b(closes)h(a)g(longstanding)g(shell)f(securit)m(y)h(hole.)p eop end -%%Page: 135 141 -TeXDict begin 135 140 bop 150 -116 a Ft(App)s(endix)29 +%%Page: 133 139 +TeXDict begin 133 138 bop 150 -116 a Ft(App)s(endix)29 b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31 -b(The)f(Bourne)g(Shell)1258 b(135)225 299 y Fp(\017)60 +b(The)f(Bourne)g(Shell)1258 b(133)225 299 y Fp(\017)60 b Ft(Bash)38 b(implemen)m(ts)g(the)g(full)g(set)g(of)g Fl(posix)f Ft(\014lename)h(expansion)g(op)s(erators,)i(including)d Fq(c)m(har-)330 408 y(acter)i(classes)p Ft(,)j Fq(equiv)-5 @@ -13740,7 +13293,7 @@ Ft(\(see)e(Section)g(3.5.8)h([Filename)330 518 y(Expansion],)30 b(page)h(23\).)225 660 y Fp(\017)60 b Ft(Bash)35 b(implemen)m(ts)g (extended)g(pattern)g(matc)m(hing)h(features)f(when)f(the)h Fs(extglob)d Ft(shell)j(option)330 769 y(is)30 b(enabled)h(\(see)g -(Section)g(3.5.8.1)i([P)m(attern)f(Matc)m(hing],)g(page)f(24\).)225 +(Section)g(3.5.8.1)i([P)m(attern)f(Matc)m(hing],)g(page)f(23\).)225 911 y Fp(\017)60 b Ft(It)22 b(is)g(p)s(ossible)g(to)h(ha)m(v)m(e)g(a)f (v)-5 b(ariable)23 b(and)f(a)g(function)g(with)g(the)g(same)g(name;)j Fs(sh)d Ft(do)s(es)g(not)g(separate)330 1021 y(the)31 @@ -13753,7 +13306,7 @@ Ft(builtin,)i(and)e(th)m(us)330 1272 y(useful)i(recursiv)m(e)g b(ariable)25 b(assignmen)m(ts)g(preceding)e(commands)h(a\013ect)h(only) f(that)g(command,)h(ev)m(en)f(builtins)g(and)330 1524 y(functions)36 b(\(see)h(Section)g(3.7.4)h([En)m(vironmen)m(t],)h(page) -e(31\).)60 b(In)35 b Fs(sh)p Ft(,)j(all)f(v)-5 b(ariable)37 +e(30\).)60 b(In)35 b Fs(sh)p Ft(,)j(all)f(v)-5 b(ariable)37 b(assignmen)m(ts)330 1633 y(preceding)30 b(commands)g(are)h(global)h (unless)d(the)i(command)f(is)h(executed)g(from)f(the)g(\014le)h (system.)225 1775 y Fp(\017)60 b Ft(Bash)44 b(p)s(erforms)e(\014lename) @@ -13784,41 +13337,40 @@ b Ft(Bash)33 b(can)f(op)s(en)g(net)m(w)m(ork)i(connections)f(to)h ([Redirections],)g(page)f(25\).)225 3393 y Fp(\017)60 b Ft(The)29 b Fs(noclobber)e Ft(option)j(is)g(a)m(v)-5 b(ailable)32 b(to)e(a)m(v)m(oid)h(o)m(v)m(erwriting)g(existing)g -(\014les)e(with)h(output)f(redi-)330 3503 y(rection)39 -b(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)i(page)e(49\).)66 -b(The)38 b(`)p Fs(>|)p Ft(')h(redirection)g(op)s(erator)330 -3612 y(ma)m(y)31 b(b)s(e)f(used)f(to)i(o)m(v)m(erride)h -Fs(noclobber)p Ft(.)225 3754 y Fp(\017)60 b Ft(The)34 -b(Bash)g Fs(cd)g Ft(and)f Fs(pwd)g Ft(builtins)h(\(see)h(Section)g(4.1) -g([Bourne)g(Shell)f(Builtins],)h(page)g(35\))h(eac)m(h)330 -3864 y(tak)m(e)c(`)p Fs(-L)p Ft(')e(and)g(`)p Fs(-P)p -Ft(')g(options)h(to)g(switc)m(h)g(b)s(et)m(w)m(een)g(logical)i(and)c -(ph)m(ysical)i(mo)s(des.)225 4006 y Fp(\017)60 b Ft(Bash)25 -b(allo)m(ws)h(a)g(function)e(to)i(o)m(v)m(erride)g(a)g(builtin)e(with)h -(the)g(same)g(name,)i(and)d(pro)m(vides)h(access)h(to)330 -4115 y(that)34 b(builtin's)f(functionalit)m(y)h(within)f(the)g -(function)g(via)h(the)f Fs(builtin)f Ft(and)g Fs(command)g -Ft(builtins)330 4225 y(\(see)f(Section)h(4.2)f([Bash)g(Builtins],)g -(page)g(41\).)225 4367 y Fp(\017)60 b Ft(The)35 b Fs(command)e -Ft(builtin)i(allo)m(ws)i(selectiv)m(e)h(disabling)e(of)f(functions)g -(when)g(command)g(lo)s(okup)g(is)330 4476 y(p)s(erformed)29 -b(\(see)i(Section)g(4.2)h([Bash)f(Builtins],)g(page)g(41\).)225 -4618 y Fp(\017)60 b Ft(Individual)23 b(builtins)g(ma)m(y)i(b)s(e)e -(enabled)h(or)g(disabled)g(using)f(the)h Fs(enable)f -Ft(builtin)g(\(see)i(Section)g(4.2)330 4728 y([Bash)31 -b(Builtins],)g(page)g(41\).)225 4869 y Fp(\017)60 b Ft(The)26 -b(Bash)h Fs(exec)e Ft(builtin)h(tak)m(es)i(additional)f(options)g(that) -g(allo)m(w)h(users)d(to)j(con)m(trol)g(the)e(con)m(ten)m(ts)330 -4979 y(of)35 b(the)f(en)m(vironmen)m(t)h(passed)f(to)h(the)g(executed)g -(command,)h(and)d(what)i(the)f(zeroth)h(argumen)m(t)330 +(\014les)e(with)h(output)f(redi-)330 3503 y(rection)h(\(see)h(Section)f +(4.3)g([The)g(Set)f(Builtin],)i(page)f(53\).)41 b(The)29 +b(`)p Fs(>|)p Ft(')h(redirection)g(op)s(erator)f(ma)m(y)330 +3612 y(b)s(e)h(used)f(to)i(o)m(v)m(erride)h Fs(noclobber)p +Ft(.)225 3754 y Fp(\017)60 b Ft(The)34 b(Bash)g Fs(cd)g +Ft(and)f Fs(pwd)g Ft(builtins)h(\(see)h(Section)g(4.1)g([Bourne)g +(Shell)f(Builtins],)h(page)g(35\))h(eac)m(h)330 3864 +y(tak)m(e)c(`)p Fs(-L)p Ft(')e(and)g(`)p Fs(-P)p Ft(')g(options)h(to)g +(switc)m(h)g(b)s(et)m(w)m(een)g(logical)i(and)c(ph)m(ysical)i(mo)s +(des.)225 4006 y Fp(\017)60 b Ft(Bash)25 b(allo)m(ws)h(a)g(function)e +(to)i(o)m(v)m(erride)g(a)g(builtin)e(with)h(the)g(same)g(name,)i(and)d +(pro)m(vides)h(access)h(to)330 4115 y(that)34 b(builtin's)f +(functionalit)m(y)h(within)f(the)g(function)g(via)h(the)f +Fs(builtin)f Ft(and)g Fs(command)g Ft(builtins)330 4225 +y(\(see)f(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(41\).)225 +4367 y Fp(\017)60 b Ft(The)35 b Fs(command)e Ft(builtin)i(allo)m(ws)i +(selectiv)m(e)h(disabling)e(of)f(functions)g(when)g(command)g(lo)s +(okup)g(is)330 4476 y(p)s(erformed)29 b(\(see)i(Section)g(4.2)h([Bash)f +(Builtins],)g(page)g(41\).)225 4618 y Fp(\017)60 b Ft(Individual)23 +b(builtins)g(ma)m(y)i(b)s(e)e(enabled)h(or)g(disabled)g(using)f(the)h +Fs(enable)f Ft(builtin)g(\(see)i(Section)g(4.2)330 4728 +y([Bash)31 b(Builtins],)g(page)g(41\).)225 4869 y Fp(\017)60 +b Ft(The)26 b(Bash)h Fs(exec)e Ft(builtin)h(tak)m(es)i(additional)f +(options)g(that)g(allo)m(w)h(users)d(to)j(con)m(trol)g(the)e(con)m(ten) +m(ts)330 4979 y(of)35 b(the)f(en)m(vironmen)m(t)h(passed)f(to)h(the)g +(executed)g(command,)h(and)d(what)i(the)f(zeroth)h(argumen)m(t)330 5089 y(to)c(the)g(command)f(is)g(to)h(b)s(e)f(\(see)h(Section)h(4.1)f ([Bourne)f(Shell)h(Builtins],)g(page)g(35\).)225 5230 y Fp(\017)60 b Ft(Shell)29 b(functions)g(ma)m(y)h(b)s(e)f(exp)s(orted)g (to)h(c)m(hildren)f(via)h(the)g(en)m(vironmen)m(t)g(using)f Fs(export)f(-f)h Ft(\(see)330 5340 y(Section)i(3.3)h([Shell)e(F)-8 b(unctions],)32 b(page)f(14\).)p eop end -%%Page: 136 142 -TeXDict begin 136 141 bop 150 -116 a Ft(136)2527 b(Bash)31 +%%Page: 134 140 +TeXDict begin 134 139 bop 150 -116 a Ft(134)2527 b(Bash)31 b(Reference)g(Man)m(ual)225 299 y Fp(\017)60 b Ft(The)37 b(Bash)g Fs(export)p Ft(,)h Fs(readonly)p Ft(,)f(and)f Fs(declare)g Ft(builtins)h(can)g(tak)m(e)i(a)f(`)p Fs(-f)p @@ -13869,20 +13421,20 @@ f(the)g Fs(.)g Ft(or)330 2737 y Fs(source)c Ft(builtins)g(\(see)j (Section)f(4.1)g([Bourne)g(Shell)f(Builtins],)h(page)g(35\).)225 2874 y Fp(\017)60 b Ft(Bash)43 b(includes)g(the)g Fs(shopt)f Ft(builtin,)k(for)d(\014ner)f(con)m(trol)j(of)e(shell)h(optional)g -(capabilities)h(\(see)330 2984 y(Section)c(4.3.2)g([The)f(Shopt)f -(Builtin],)k(page)d(52\),)k(and)39 b(allo)m(ws)i(these)f(options)h(to)f -(b)s(e)f(set)i(and)330 3093 y(unset)30 b(at)h(shell)g(in)m(v)m(o)s -(cation)h(\(see)f(Section)h(6.1)f([In)m(v)m(oking)g(Bash],)g(page)h -(69\).)225 3230 y Fp(\017)60 b Ft(Bash)45 b(has)f(m)m(uc)m(h)g(more)h -(optional)h(b)s(eha)m(vior)e(con)m(trollable)j(with)e(the)f -Fs(set)g Ft(builtin)g(\(see)h(Sec-)330 3340 y(tion)31 -b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(49\).)225 3477 -y Fp(\017)60 b Ft(The)31 b(`)p Fs(-x)p Ft(')g(\()p Fs(xtrace)p -Ft(\))g(option)h(displa)m(ys)f(commands)h(other)f(than)h(simple)f -(commands)g(when)g(p)s(er-)330 3587 y(forming)f(an)g(execution)i(trace) -f(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(49\).)225 -3724 y Fp(\017)60 b Ft(The)28 b Fs(test)g Ft(builtin)h(\(see)h(Section) -f(4.1)h([Bourne)f(Shell)g(Builtins],)h(page)g(35\))g(is)f(sligh)m(tly)h +(capabilities)h(\(see)330 2984 y(Section)34 b(4.2)g([Bash)f(Builtins],) +i(page)e(41\),)i(and)e(allo)m(ws)h(these)f(options)h(to)f(b)s(e)g(set)g +(and)g(unset)f(at)330 3093 y(shell)f(in)m(v)m(o)s(cation)h(\(see)f +(Section)g(6.1)h([In)m(v)m(oking)f(Bash],)g(page)h(67\).)225 +3230 y Fp(\017)60 b Ft(Bash)23 b(has)f(m)m(uc)m(h)g(more)h(optional)h +(b)s(eha)m(vior)e(con)m(trollable)j(with)d(the)h Fs(set)e +Ft(builtin)h(\(see)i(Section)f(4.3)330 3340 y([The)30 +b(Set)h(Builtin],)g(page)g(53\).)225 3477 y Fp(\017)60 +b Ft(The)31 b(`)p Fs(-x)p Ft(')g(\()p Fs(xtrace)p Ft(\))g(option)h +(displa)m(ys)f(commands)h(other)f(than)h(simple)f(commands)g(when)g(p)s +(er-)330 3587 y(forming)f(an)g(execution)i(trace)f(\(see)h(Section)f +(4.3)g([The)g(Set)f(Builtin],)h(page)h(53\).)225 3724 +y Fp(\017)60 b Ft(The)28 b Fs(test)g Ft(builtin)h(\(see)h(Section)f +(4.1)h([Bourne)f(Shell)g(Builtins],)h(page)g(35\))g(is)f(sligh)m(tly)h (di\013eren)m(t,)330 3833 y(as)23 b(it)g(implemen)m(ts)f(the)h Fl(posix)f Ft(algorithm,)j(whic)m(h)d(sp)s(eci\014es)g(the)h(b)s(eha)m (vior)f(based)g(on)h(the)f(n)m(um)m(b)s(er)330 3943 y(of)31 @@ -13913,10 +13465,10 @@ Ft(builtin)i(\(see)h(Section)g(4.1)g([Bourne)f(Shell)g(Builtins],)j 5340 y(signal)30 b(sp)s(eci\014cation,)h(similar)f(to)g Fs(EXIT)f Ft(and)g Fs(DEBUG)p Ft(.)39 b(Commands)28 b(sp)s(eci\014ed)h (with)g(an)g Fs(ERR)g Ft(trap)p eop end -%%Page: 137 143 -TeXDict begin 137 142 bop 150 -116 a Ft(App)s(endix)29 +%%Page: 135 141 +TeXDict begin 135 140 bop 150 -116 a Ft(App)s(endix)29 b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31 -b(The)f(Bourne)g(Shell)1258 b(137)330 299 y(are)40 b(executed)g(after)g +b(The)f(Bourne)g(Shell)1258 b(135)330 299 y(are)40 b(executed)g(after)g (a)f(simple)h(command)f(fails,)j(with)d(a)h(few)f(exceptions.)68 b(The)39 b Fs(ERR)g Ft(trap)g(is)330 408 y(not)g(inherited)f(b)m(y)h (shell)g(functions)f(unless)g(the)h Fs(-o)29 b(errtrace)37 @@ -13947,20 +13499,20 @@ Ft(command)h(that)g(ma)m(y)h(b)s(e)f(reused)f(as)h(input)g(\(see)h Fs(csh)p Ft(-lik)m(e)g(directory)f(stac)m(k,)j(and)d(pro)m(vides)g(the) g Fs(pushd)p Ft(,)g Fs(popd)p Ft(,)g(and)g Fs(dirs)330 2012 y Ft(builtins)g(to)i(manipulate)f(it)h(\(see)f(Section)h(6.8)g -([The)f(Directory)h(Stac)m(k],)i(page)d(79\).)56 b(Bash)35 +([The)f(Directory)h(Stac)m(k],)i(page)d(77\).)56 b(Bash)35 b(also)330 2122 y(mak)m(es)c(the)g(directory)g(stac)m(k)g(visible)g(as) g(the)f(v)-5 b(alue)31 b(of)g(the)f Fs(DIRSTACK)f Ft(shell)h(v)-5 b(ariable.)225 2249 y Fp(\017)60 b Ft(Bash)28 b(in)m(terprets)h(sp)s (ecial)g(bac)m(kslash-escap)s(ed)g(c)m(haracters)g(in)f(the)h(prompt)e (strings)h(when)f(in)m(ter-)330 2358 y(activ)m(e)33 b(\(see)e(Section)g -(6.9)h([Prin)m(ting)e(a)h(Prompt],)g(page)g(81\).)225 +(6.9)h([Prin)m(ting)e(a)h(Prompt],)g(page)g(79\).)225 2485 y Fp(\017)60 b Ft(The)46 b(Bash)h(restricted)g(mo)s(de)f(is)h (more)f(useful)g(\(see)h(Section)h(6.10)g([The)e(Restricted)i(Shell],) -330 2595 y(page)31 b(82\);)h(the)f(SVR4.2)g(shell)f(restricted)h(mo)s +330 2595 y(page)31 b(80\);)h(the)f(SVR4.2)g(shell)f(restricted)h(mo)s (de)f(is)h(to)s(o)g(limited.)225 2722 y Fp(\017)60 b Ft(The)30 b Fs(disown)f Ft(builtin)h(can)h(remo)m(v)m(e)h(a)f(job)f (from)g(the)h(in)m(ternal)g(shell)g(job)f(table)i(\(see)f(Section)h -(7.2)330 2832 y([Job)h(Con)m(trol)h(Builtins],)g(page)g(88\))h(or)e +(7.2)330 2832 y([Job)h(Con)m(trol)h(Builtins],)g(page)g(86\))h(or)e (suppress)e(the)i(sending)g(of)g Fs(SIGHUP)e Ft(to)j(a)g(job)f(when)f (the)330 2941 y(shell)f(exits)g(as)f(the)h(result)f(of)h(a)f Fs(SIGHUP)p Ft(.)225 3068 y Fp(\017)60 b Ft(Bash)31 b(includes)f(a)g(n) @@ -13977,7 +13529,7 @@ Fp(\017)60 b Ft(The)30 b(SVR4.2)h Fs(sh)f Ft(uses)g(a)g Fs(TIMEOUT)f Ft(v)-5 b(ariable)31 b(lik)m(e)h(Bash)e(uses)g Fs(TMOUT)p Ft(.)150 3830 y(More)h(features)g(unique)e(to)i(Bash)g(ma)m (y)g(b)s(e)f(found)f(in)h(Chapter)f(6)i([Bash)g(F)-8 -b(eatures],)32 b(page)f(69.)150 4065 y Fr(B.1)67 b(Implemen)l(tation)48 +b(eatures],)32 b(page)f(67.)150 4065 y Fr(B.1)67 b(Implemen)l(tation)48 b(Di\013erences)e(F)-11 b(rom)44 b(The)h(SVR4.2)g(Shell)275 4301 y Ft(Since)39 b(Bash)h(is)f(a)h(completely)i(new)d(implemen)m (tation,)k(it)d(do)s(es)g(not)f(su\013er)g(from)g(man)m(y)h(of)g(the) @@ -13988,7 +13540,7 @@ b(do)s(es)f(not)h(fork)f(a)h(subshell)e(when)h(redirecting)h(in)m(to)h 4648 y(suc)m(h)d(as)h(an)f Fs(if)g Ft(or)g Fs(while)f Ft(statemen)m(t.)225 4775 y Fp(\017)60 b Ft(Bash)29 b(do)s(es)f(not)h (allo)m(w)h(un)m(balanced)f(quotes.)41 b(The)28 b(SVR4.2)h(shell)g -(will)g(silen)m(tly)i(insert)d(a)h(needed)330 4884 y(closing)g(quote)g +(will)g(silen)m(tly)h(insert)f(a)g(needed)330 4884 y(closing)g(quote)g (at)f Fs(EOF)f Ft(under)g(certain)h(circumstances.)41 b(This)27 b(can)h(b)s(e)g(the)g(cause)g(of)g(some)h(hard-)330 4994 y(to-\014nd)h(errors.)225 5121 y Fp(\017)60 b Ft(The)45 @@ -13998,8 +13550,8 @@ Ft(.)57 b(If)35 b(the)i(shell)f(is)h(started)g(from)e(a)i(pro)s(cess)f (with)g Fs(SIGSEGV)e Ft(blo)s(c)m(k)m(ed)k(\(e.g.,)h(b)m(y)d(using)330 5340 y(the)31 b Fs(system\(\))d Ft(C)i(library)g(function)g(call\),)i (it)f(misb)s(eha)m(v)m(es)g(badly)-8 b(.)p eop end -%%Page: 138 144 -TeXDict begin 138 143 bop 150 -116 a Ft(138)2527 b(Bash)31 +%%Page: 136 142 +TeXDict begin 136 141 bop 150 -116 a Ft(136)2527 b(Bash)31 b(Reference)g(Man)m(ual)225 299 y Fp(\017)60 b Ft(In)26 b(a)i(questionable)g(attempt)h(at)f(securit)m(y)-8 b(,)29 b(the)e(SVR4.2)h(shell,)g(when)f(in)m(v)m(ok)m(ed)h(without)g(the)f(`)p @@ -14031,9 +13583,9 @@ Fl(posix)330 1738 y Ft(standard.)225 1873 y Fp(\017)60 b Ft(The)30 b(SVR4.2)h(shell)g(b)s(eha)m(v)m(es)f(di\013eren)m(tly)h (when)f(in)m(v)m(ok)m(ed)i(as)e Fs(jsh)g Ft(\(it)h(turns)e(on)h(job)g (con)m(trol\).)p eop end -%%Page: 139 145 -TeXDict begin 139 144 bop 150 -116 a Ft(App)s(endix)29 -b(C:)h(Cop)m(ying)g(This)g(Man)m(ual)2063 b(139)150 299 +%%Page: 137 143 +TeXDict begin 137 142 bop 150 -116 a Ft(App)s(endix)29 +b(C:)h(Cop)m(ying)g(This)g(Man)m(ual)2063 b(137)150 299 y Fo(App)t(endix)52 b(C)126 b(Cop)l(ying)51 b(This)i(Man)l(ual)150 690 y Fr(C.1)68 b(GNU)45 b(F)-11 b(ree)45 b(Do)t(cumen)l(tation)h (License)1396 909 y Ft(V)-8 b(ersion)31 b(1.2,)h(No)m(v)m(em)m(b)s(er)g @@ -14109,8 +13661,8 @@ h(ma)m(y)g(not)g(explain)g(an)m(y)g(mathematics.\))40 b(The)330 5340 y(relationship)28 b(could)f(b)s(e)g(a)g(matter)i(of)e (historical)i(connection)f(with)f(the)h(sub)5 b(ject)27 b(or)g(with)g(related)p eop end -%%Page: 140 146 -TeXDict begin 140 145 bop 150 -116 a Ft(140)2527 b(Bash)31 +%%Page: 138 144 +TeXDict begin 138 143 bop 150 -116 a Ft(138)2527 b(Bash)31 b(Reference)g(Man)m(ual)330 299 y(matters,)38 b(or)d(of)h(legal,)i (commercial,)h(philosophical,)f(ethical)f(or)e(p)s(olitical)i(p)s (osition)f(regarding)330 408 y(them.)330 549 y(The)25 @@ -14177,7 +13729,7 @@ Ft(,)d(P)m(ostScript)i(or)f Fl(pdf)330 3493 y Ft(pro)s(duced)e(b)m(y)h b(.)330 3634 y(The)34 b(\\Title)h(P)m(age")i(means,)e(for)f(a)h(prin)m (ted)f(b)s(o)s(ok,)h(the)f(title)i(page)f(itself,)h(plus)e(suc)m(h)f (follo)m(wing)330 3743 y(pages)28 b(as)g(are)g(needed)g(to)g(hold,)g -(legibly)-8 b(,)30 b(the)e(material)h(this)e(License)i(requires)e(to)h +(legibly)-8 b(,)30 b(the)e(material)h(this)f(License)g(requires)f(to)h (app)s(ear)f(in)h(the)330 3853 y(title)g(page.)40 b(F)-8 b(or)28 b(w)m(orks)e(in)g(formats)h(whic)m(h)g(do)f(not)h(ha)m(v)m(e)h (an)m(y)e(title)j(page)e(as)g(suc)m(h,)g(\\Title)h(P)m(age")330 @@ -14206,9 +13758,9 @@ b(W)-8 b(arran)m(t)m(y)36 b(Disclaimers)f(are)g(considered)e(to)330 b(arran)m(t)m(y)39 b(Disclaimers)f(ma)m(y)g(ha)m(v)m(e)g(is)f(v)m(oid)g (and)f(has)h(no)330 5340 y(e\013ect)32 b(on)e(the)h(meaning)f(of)h (this)f(License.)p eop end -%%Page: 141 147 -TeXDict begin 141 146 bop 150 -116 a Ft(App)s(endix)29 -b(C:)h(Cop)m(ying)g(This)g(Man)m(ual)2063 b(141)199 299 +%%Page: 139 145 +TeXDict begin 139 144 bop 150 -116 a Ft(App)s(endix)29 +b(C:)h(Cop)m(ying)g(This)g(Man)m(ual)2063 b(139)199 299 y(2.)61 b(VERBA)-8 b(TIM)31 b(COPYING)330 445 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h(the)g(Do)s(cumen)m(t)h (in)f(an)m(y)g(medium,)h(either)g(commercially)h(or)330 @@ -14295,8 +13847,8 @@ b(\014lling)f(the)g(role)h(of)f(the)g(Do)s(cumen)m(t,)h(th)m(us)f (ossesses)f(a)i(cop)m(y)g(of)330 5340 y(it.)41 b(In)30 b(addition,)h(y)m(ou)f(m)m(ust)h(do)f(these)h(things)f(in)g(the)h(Mo)s (di\014ed)e(V)-8 b(ersion:)p eop end -%%Page: 142 148 -TeXDict begin 142 147 bop 150 -116 a Ft(142)2527 b(Bash)31 +%%Page: 140 146 +TeXDict begin 140 145 bop 150 -116 a Ft(140)2527 b(Bash)31 b(Reference)g(Man)m(ual)357 299 y(A.)60 b(Use)33 b(in)f(the)h(Title)h (P)m(age)g(\(and)f(on)f(the)h(co)m(v)m(ers,)i(if)e(an)m(y\))g(a)g (title)h(distinct)f(from)g(that)g(of)g(the)510 408 y(Do)s(cumen)m(t,)j @@ -14378,9 +13930,9 @@ b(arran)m(t)m(y)32 b(Disclaimers.)330 5230 y(If)h(the)g(Mo)s(di\014ed)g (app)s(endices)g(that)h(qualify)330 5340 y(as)28 b(Secondary)g (Sections)g(and)f(con)m(tain)j(no)d(material)j(copied)e(from)f(the)h (Do)s(cumen)m(t,)i(y)m(ou)e(ma)m(y)g(at)p eop end -%%Page: 143 149 -TeXDict begin 143 148 bop 150 -116 a Ft(App)s(endix)29 -b(C:)h(Cop)m(ying)g(This)g(Man)m(ual)2063 b(143)330 299 +%%Page: 141 147 +TeXDict begin 141 146 bop 150 -116 a Ft(App)s(endix)29 +b(C:)h(Cop)m(ying)g(This)g(Man)m(ual)2063 b(141)330 299 y(y)m(our)32 b(option)h(designate)h(some)e(or)h(all)g(of)f(these)h (sections)h(as)e(in)m(v)-5 b(arian)m(t.)48 b(T)-8 b(o)33 b(do)f(this,)h(add)f(their)330 408 y(titles)37 b(to)f(the)f(list)h(of)g @@ -14468,8 +14020,8 @@ b(ma)m(y)g(extract)h(a)f(single)g(do)s(cumen)m(t)f(from)g(suc)m(h)g(a)h 5230 y(do)s(cumen)m(t,)d(and)f(follo)m(w)i(this)e(License)h(in)g(all)g (other)g(resp)s(ects)f(regarding)h(v)m(erbatim)g(cop)m(ying)h(of)330 5340 y(that)d(do)s(cumen)m(t.)p eop end -%%Page: 144 150 -TeXDict begin 144 149 bop 150 -116 a Ft(144)2527 b(Bash)31 +%%Page: 142 148 +TeXDict begin 142 147 bop 150 -116 a Ft(142)2527 b(Bash)31 b(Reference)g(Man)m(ual)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h(W)m(ORKS)330 428 y(A)d(compilation)i (of)e(the)g(Do)s(cumen)m(t)h(or)f(its)g(deriv)-5 b(ativ)m(es)30 @@ -14558,9 +14110,9 @@ y(this)i(License,)j(y)m(ou)d(ma)m(y)i(c)m(ho)s(ose)f(an)m(y)g(v)m (ersion)g(ev)m(er)g(published)e(\(not)i(as)g(a)f(draft\))h(b)m(y)f(the) h(F)-8 b(ree)330 5320 y(Soft)m(w)m(are)31 b(F)-8 b(oundation.)p eop end -%%Page: 145 151 -TeXDict begin 145 150 bop 150 -116 a Ft(App)s(endix)29 -b(C:)h(Cop)m(ying)g(This)g(Man)m(ual)2063 b(145)150 299 +%%Page: 143 149 +TeXDict begin 143 148 bop 150 -116 a Ft(App)s(endix)29 +b(C:)h(Cop)m(ying)g(This)g(Man)m(ual)2063 b(143)150 299 y Fk(C.1.1)62 b(ADDENDUM:)41 b(Ho)m(w)f(to)h(use)h(this)f(License)g (for)h(y)m(our)f(do)s(cumen)m(ts)275 543 y Ft(T)-8 b(o)27 b(use)g(this)g(License)h(in)f(a)h(do)s(cumen)m(t)f(y)m(ou)h(ha)m(v)m(e) @@ -14595,1010 +14147,1007 @@ b(exts,)38 b(or)d(some)g(other)h(com)m(bination)g(of)g(the)150 (license,)k(suc)m(h)43 b(as)g(the)g(GNU)150 2392 y(General)31 b(Public)f(License,)i(to)f(p)s(ermit)e(their)i(use)f(in)g(free)g(soft)m (w)m(are.)p eop end -%%Page: 146 152 -TeXDict begin 146 151 bop 150 -116 a Ft(146)2527 b(Bash)31 +%%Page: 144 150 +TeXDict begin 144 149 bop 150 -116 a Ft(144)2527 b(Bash)31 b(Reference)g(Man)m(ual)p eop end -%%Page: 147 153 -TeXDict begin 147 152 bop 150 -116 a Ft(App)s(endix)29 -b(D:)i(Indexes)2623 b(147)150 299 y Fo(App)t(endix)52 -b(D)119 b(Indexes)p eop end -%%Page: 148 154 -TeXDict begin 148 153 bop 150 -116 a Ft(148)2527 b(Bash)31 -b(Reference)g(Man)m(ual)150 299 y Fr(D.1)68 b(Index)45 -b(of)g(Shell)g(Builtin)g(Commands)150 604 y(.)150 730 -y Fe(.)17 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 b -Fb(35)150 988 y Fr(:)150 1114 y Fe(:)17 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)42 b Fb(35)150 1382 y Fr([)150 1508 y Fe([)17 +%%Page: 145 151 +TeXDict begin 145 150 bop 150 -116 a Ft(Index)30 b(of)g(Shell)g +(Builtin)h(Commands)2133 b(145)150 299 y Fo(Index)53 +b(of)h(Shell)e(Builtin)g(Commands)150 560 y Fr(.)150 +686 y Fe(.)17 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 +b Fb(35)150 945 y Fr(:)150 1071 y Fe(:)17 b Fc(.)12 b(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)42 b Fb(35)150 1339 y Fr([)150 1465 y Fe([)17 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 b Fb(39)150 1775 -y Fr(A)150 1901 y Fe(alias)11 b Fc(.)j(.)e(.)g(.)g(.)h(.)f(.)g(.)h(.)f +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 b Fb(39)150 1732 +y Fr(A)150 1858 y Fe(alias)11 b Fc(.)j(.)e(.)g(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)37 b -Fb(41)150 2159 y Fr(B)150 2285 y Fe(bg)15 b Fc(.)e(.)g(.)f(.)g(.)g(.)h +Fb(41)150 2116 y Fr(B)150 2242 y Fe(bg)15 b Fc(.)e(.)g(.)f(.)g(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)41 b Fb(88)150 2377 y Fe(bind)13 b Fc(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.) +(.)41 b Fb(86)150 2334 y Fe(bind)13 b Fc(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)38 -b Fb(41)150 2469 y Fe(break)11 b Fc(.)j(.)e(.)g(.)g(.)h(.)f(.)g(.)h(.)f +b Fb(41)150 2426 y Fe(break)11 b Fc(.)j(.)e(.)g(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)37 b -Fb(35)150 2561 y Fe(builtin)8 b Fc(.)14 b(.)e(.)h(.)f(.)g(.)h(.)f(.)g +Fb(35)150 2518 y Fe(builtin)8 b Fc(.)14 b(.)e(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)34 b Fb(42)150 -2820 y Fr(C)150 2946 y Fe(caller)10 b Fc(.)j(.)g(.)f(.)g(.)h(.)f(.)g(.) +2777 y Fr(C)150 2903 y Fe(caller)10 b Fc(.)j(.)g(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 -b Fb(42)150 3038 y Fe(cd)15 b Fc(.)e(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) +b Fb(42)150 2995 y Fe(cd)15 b Fc(.)e(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)41 -b Fb(36)150 3130 y Fe(command)8 b Fc(.)14 b(.)e(.)h(.)f(.)g(.)h(.)f(.)g +b Fb(36)150 3087 y Fe(command)8 b Fc(.)14 b(.)e(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)34 b Fb(43)150 -3222 y Fe(compgen)7 b Fc(.)14 b(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +3179 y Fe(compgen)7 b Fc(.)14 b(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)33 b Fb(113)150 3314 y Fe(complete)26 +f(.)g(.)h(.)f(.)g(.)h(.)f(.)33 b Fb(111)150 3271 y Fe(complete)26 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -50 b Fb(113)150 3406 y Fe(continue)7 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.) +50 b Fb(111)150 3363 y Fe(continue)7 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)32 b Fb(36)150 -3664 y Fr(D)150 3790 y Fe(declare)8 b Fc(.)14 b(.)e(.)h(.)f(.)g(.)h(.)f +3621 y Fr(D)150 3747 y Fe(declare)8 b Fc(.)14 b(.)e(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)34 b -Fb(43)150 3882 y Fe(dirs)13 b Fc(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +Fb(43)150 3839 y Fe(dirs)13 b Fc(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)38 -b Fb(79)150 3975 y Fe(disown)10 b Fc(.)j(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.) +b Fb(77)150 3931 y Fe(disown)10 b Fc(.)j(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fb(89)150 -4233 y Fr(E)150 4359 y Fe(echo)13 b Fc(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fb(87)150 +4190 y Fr(E)150 4316 y Fe(echo)13 b Fc(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)38 -b Fb(44)150 4451 y Fe(enable)10 b Fc(.)j(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.) +b Fb(44)150 4408 y Fe(enable)10 b Fc(.)j(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fb(45)150 -4543 y Fe(eval)13 b Fc(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +4500 y Fe(eval)13 b Fc(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)38 b Fb(36)150 -4635 y Fe(exec)13 b Fc(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +4592 y Fe(exec)13 b Fc(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)38 b Fb(36)150 -4727 y Fe(exit)13 b Fc(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +4684 y Fe(exit)13 b Fc(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)38 b Fb(36)150 -4819 y Fe(export)10 b Fc(.)j(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +4776 y Fe(export)10 b Fc(.)j(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fb(36)150 5096 -y Fr(F)150 5222 y Fe(fc)14 b Fc(.)f(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fb(36)150 5053 +y Fr(F)150 5179 y Fe(fc)14 b Fc(.)f(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)40 -b Fb(118)150 5314 y Fe(fg)15 b Fc(.)e(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h +b Fb(115)150 5271 y Fe(fg)15 b Fc(.)e(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)41 -b Fb(88)150 5592 y Fr(G)150 5717 y Fe(getopts)8 b Fc(.)14 +b Fb(86)150 5548 y Fr(G)150 5674 y Fe(getopts)8 b Fc(.)14 b(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)34 b Fb(37)2025 604 y Fr(H)2025 720 y Fe(hash)13 +g(.)34 b Fb(37)2025 560 y Fr(H)2025 676 y Fe(hash)13 b Fc(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)38 b Fb(37)2025 807 y Fe(help)13 +(.)g(.)h(.)f(.)g(.)h(.)38 b Fb(37)2025 764 y Fe(help)13 b Fc(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)38 b Fb(45)2025 894 y Fe(history)7 +(.)g(.)h(.)f(.)g(.)h(.)38 b Fb(45)2025 851 y Fe(history)7 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) -g(.)h(.)33 b Fb(118)2025 1146 y Fr(J)2025 1262 y Fe(jobs)13 +g(.)h(.)33 b Fb(116)2025 1103 y Fr(J)2025 1219 y Fe(jobs)13 b Fc(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)38 b Fb(88)2025 1513 y Fr(K)2025 -1630 y Fe(kill)13 b Fc(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)38 b Fb(86)2025 1470 y Fr(K)2025 +1586 y Fe(kill)13 b Fc(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)38 b Fb(89)2025 -1863 y Fr(L)2025 1979 y Fe(let)14 b Fc(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f +f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)38 b Fb(87)2025 +1819 y Fr(L)2025 1935 y Fe(let)14 b Fc(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)40 -b Fb(45)2025 2066 y Fe(local)11 b Fc(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.) +b Fb(45)2025 2023 y Fe(local)11 b Fc(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)37 -b Fb(45)2025 2153 y Fe(logout)10 b Fc(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g +b Fb(45)2025 2110 y Fe(logout)10 b Fc(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 b -Fb(46)2025 2405 y Fr(P)2025 2521 y Fe(popd)13 b Fc(.)g(.)f(.)g(.)g(.)h +Fb(46)2025 2362 y Fr(P)2025 2478 y Fe(popd)13 b Fc(.)g(.)f(.)g(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)38 -b Fb(80)2025 2608 y Fe(printf)10 b Fc(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g +b Fb(78)2025 2565 y Fe(printf)10 b Fc(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 b -Fb(46)2025 2695 y Fe(pushd)11 b Fc(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f +Fb(46)2025 2652 y Fe(pushd)11 b Fc(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)37 b -Fb(80)2025 2782 y Fe(pwd)14 b Fc(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +Fb(78)2025 2739 y Fe(pwd)14 b Fc(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)40 -b Fb(38)2025 3034 y Fr(R)2025 3150 y Fe(read)13 b Fc(.)g(.)f(.)g(.)g(.) +b Fb(38)2025 2991 y Fr(R)2025 3107 y Fe(read)13 b Fc(.)g(.)f(.)g(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) -38 b Fb(46)2025 3237 y Fe(readonly)7 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.) +38 b Fb(46)2025 3194 y Fe(readonly)7 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)32 b Fb(38)2025 -3325 y Fe(return)10 b Fc(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +3281 y Fe(return)10 b Fc(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 b Fb(38)2025 3558 -y Fr(S)2025 3674 y Fe(set)14 b Fc(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 b Fb(38)2025 3514 +y Fr(S)2025 3630 y Fe(set)14 b Fc(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)40 -b Fb(49)2025 3761 y Fe(shift)11 b Fc(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.) +b Fb(53)2025 3718 y Fe(shift)11 b Fc(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)37 -b Fb(38)2025 3848 y Fe(shopt)11 b Fc(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.) +b Fb(38)2025 3805 y Fe(shopt)11 b Fc(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)37 -b Fb(52)2025 3935 y Fe(source)10 b Fc(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g +b Fb(47)2025 3892 y Fe(source)10 b Fc(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 b -Fb(47)2025 4022 y Fe(suspend)8 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f +Fb(51)2025 3979 y Fe(suspend)8 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)34 b Fb(89)2025 -4274 y Fr(T)2025 4390 y Fe(test)13 b Fc(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)34 b Fb(87)2025 +4231 y Fr(T)2025 4347 y Fe(test)13 b Fc(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)38 -b Fb(39)2025 4477 y Fe(times)11 b Fc(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.) +b Fb(39)2025 4434 y Fe(times)11 b Fc(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)37 -b Fb(40)2025 4565 y Fe(trap)13 b Fc(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f +b Fb(40)2025 4521 y Fe(trap)13 b Fc(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)38 -b Fb(40)2025 4652 y Fe(type)13 b Fc(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f +b Fb(40)2025 4609 y Fe(type)13 b Fc(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)38 -b Fb(47)2025 4739 y Fe(typeset)8 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.) +b Fb(51)2025 4696 y Fe(typeset)8 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)34 b Fb(48)2025 -4991 y Fr(U)2025 5107 y Fe(ulimit)10 b Fc(.)j(.)f(.)h(.)f(.)g(.)h(.)f +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)34 b Fb(51)2025 +4948 y Fr(U)2025 5064 y Fe(ulimit)10 b Fc(.)j(.)f(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 -b Fb(48)2025 5194 y Fe(umask)11 b Fc(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.) +b Fb(52)2025 5151 y Fe(umask)11 b Fc(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)37 -b Fb(40)2025 5281 y Fe(unalias)8 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.) +b Fb(40)2025 5238 y Fe(unalias)8 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)34 b Fb(49)2025 -5368 y Fe(unset)11 b Fc(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)34 b Fb(53)2025 +5325 y Fe(unset)11 b Fc(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)37 b Fb(41)2025 5601 -y Fr(W)2025 5717 y Fe(wait)13 b Fc(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f +h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)37 b Fb(41)2025 5558 +y Fr(W)2025 5674 y Fe(wait)13 b Fc(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)38 -b Fb(89)p eop end -%%Page: 149 155 -TeXDict begin 149 154 bop 150 -116 a Ft(App)s(endix)29 -b(D:)i(Indexes)2623 b(149)150 299 y Fr(D.2)68 b(Index)45 -b(of)g(Shell)g(Reserv)l(ed)h(W)-11 b(ords)150 620 y(!)150 -753 y Fe(!)18 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)44 -b Fb(8)150 1039 y Fr([)150 1172 y Fe([[)15 b Fc(.)e(.)g(.)f(.)g(.)g(.)h +b Fb(87)p eop end +%%Page: 146 152 +TeXDict begin 146 151 bop 150 -116 a Ft(146)2527 b(Bash)31 +b(Reference)g(Man)m(ual)p eop end +%%Page: 147 153 +TeXDict begin 147 152 bop 150 -116 a Ft(Index)30 b(of)g(Shell)g(Reserv) +m(ed)h(W)-8 b(ords)2247 b(147)150 299 y Fo(Index)53 b(of)h(Shell)e +(Reserv)l(ed)g(W)-13 b(ords)150 610 y Fr(!)150 743 y +Fe(!)18 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) +g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)44 b +Fb(8)150 1029 y Fr([)150 1162 y Fe([[)15 b Fc(.)e(.)g(.)f(.)g(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)41 b Fb(12)150 1464 y Fr(])150 1597 y Fe(]])15 b Fc(.)e(.)g(.)f(.)g +(.)41 b Fb(12)150 1455 y Fr(])150 1587 y Fe(]])15 b Fc(.)e(.)g(.)f(.)g (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)41 b Fb(12)150 1883 y Fa({)150 2016 y Fe({)17 +(.)h(.)f(.)41 b Fb(12)150 1873 y Fa({)150 2006 y Fe({)17 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 b Fb(13)150 2302 -y Fa(})150 2435 y Fe(})17 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 b Fb(13)150 2292 +y Fa(})150 2425 y Fe(})17 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 -b Fb(13)150 2719 y Fr(C)150 2852 y Fe(case)13 b Fc(.)g(.)f(.)g(.)h(.)f +b Fb(13)150 2709 y Fr(C)150 2842 y Fe(case)13 b Fc(.)g(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)38 -b Fb(11)150 3129 y Fr(D)150 3262 y Fe(do)16 b Fc(.)d(.)g(.)f(.)g(.)h(.) +b Fb(11)150 3119 y Fr(D)150 3252 y Fe(do)16 b Fc(.)d(.)g(.)f(.)g(.)h(.) f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)43 b Fb(9)150 3357 y Fe(done)14 b Fc(.)f(.)f(.)g(.)h(.)f(.)g(.) +f(.)g(.)43 b Fb(9)150 3347 y Fe(done)14 b Fc(.)f(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)40 -b Fb(9)2025 620 y Fr(E)2025 736 y Fe(elif)13 b Fc(.)g(.)f(.)g(.)g(.)h +b Fb(9)2025 610 y Fr(E)2025 726 y Fe(elif)13 b Fc(.)g(.)f(.)g(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)38 -b Fb(10)2025 824 y Fe(else)13 b Fc(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f +b Fb(10)2025 814 y Fe(else)13 b Fc(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)38 -b Fb(10)2025 911 y Fe(esac)13 b Fc(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f +b Fb(10)2025 901 y Fe(esac)13 b Fc(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)38 -b Fb(11)2025 1144 y Fr(F)2025 1260 y Fe(fi)15 b Fc(.)e(.)f(.)h(.)f(.)g +b Fb(11)2025 1134 y Fr(F)2025 1250 y Fe(fi)15 b Fc(.)e(.)f(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)41 b Fb(10)2025 1348 y Fe(for)14 b Fc(.)f(.)f(.)g(.)h(.)f(.)g(.) +(.)f(.)41 b Fb(10)2025 1338 y Fe(for)14 b Fc(.)f(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)40 -b Fb(10)2025 1435 y Fe(function)7 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h +b Fb(10)2025 1425 y Fe(function)7 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)32 b Fb(14)2025 -1668 y Fr(I)2025 1784 y Fe(if)15 b Fc(.)e(.)f(.)h(.)f(.)g(.)h(.)f(.)g +1658 y Fr(I)2025 1775 y Fe(if)15 b Fc(.)e(.)f(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)41 -b Fb(10)2025 1872 y Fe(in)15 b Fc(.)e(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h +b Fb(10)2025 1862 y Fe(in)15 b Fc(.)e(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)41 -b Fb(11)2025 2105 y Fr(S)2025 2221 y Fe(select)10 b Fc(.)j(.)f(.)h(.)f +b Fb(11)2025 2095 y Fr(S)2025 2211 y Fe(select)10 b Fc(.)j(.)f(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 -b Fb(11)2025 2455 y Fr(T)2025 2571 y Fe(then)13 b Fc(.)g(.)f(.)g(.)g(.) +b Fb(11)2025 2445 y Fr(T)2025 2561 y Fe(then)13 b Fc(.)g(.)f(.)g(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) -38 b Fb(10)2025 2658 y Fe(time)14 b Fc(.)f(.)f(.)g(.)h(.)f(.)g(.)g(.)h +38 b Fb(10)2025 2648 y Fe(time)14 b Fc(.)f(.)f(.)g(.)h(.)f(.)g(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)40 -b Fb(8)2025 2891 y Fr(U)2025 3008 y Fe(until)12 b Fc(.)h(.)g(.)f(.)g(.) +b Fb(8)2025 2881 y Fr(U)2025 2998 y Fe(until)12 b Fc(.)h(.)g(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -38 b Fb(9)2025 3241 y Fr(W)2025 3357 y Fe(while)11 b +38 b Fb(9)2025 3231 y Fr(W)2025 3347 y Fe(while)11 b Fc(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)37 b Fb(10)150 3614 y Fr(D.3)68 b(P)l(arameter)47 -b(and)d(V)-11 b(ariable)46 b(Index)150 3936 y(!)150 4070 -y Fe(!)17 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 b -Fb(16)150 4350 y Fr(#)150 4485 y Fe(#)17 b Fc(.)12 b(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)42 b Fb(16)150 4775 y Fr($)150 4909 y Fe($)17 +g(.)h(.)f(.)g(.)37 b Fb(10)p eop end +%%Page: 148 154 +TeXDict begin 148 153 bop 150 -116 a Ft(148)2527 b(Bash)31 +b(Reference)g(Man)m(ual)p eop end +%%Page: 149 155 +TeXDict begin 149 154 bop 150 -116 a Ft(P)m(arameter)32 +b(and)d(V)-8 b(ariable)32 b(Index)2262 b(149)150 299 +y Fo(P)l(arameter)54 b(and)f(V)-13 b(ariable)53 b(Index)150 +610 y Fr(!)150 727 y Fe(!)17 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 +b Fb(16)150 963 y Fr(#)150 1080 y Fe(#)17 b Fc(.)12 b(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)42 b Fb(16)150 1325 y Fr($)150 1442 y Fe($)17 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 b Fb(16)150 5206 -y Fr(*)150 5340 y Fe(*)17 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 b Fb(16)150 1694 +y Fr(*)150 1811 y Fe(*)17 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 -b Fb(16)2025 3936 y Fr(-)2025 4072 y Fe(-)17 b Fc(.)12 -b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)43 b Fb(16)2025 4358 y Fr(?)2025 -4495 y Fe(?)17 b Fc(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)43 -b Fb(16)2025 4781 y Fr(@)2025 4917 y Fe(@)17 b Fc(.)12 -b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)43 b Fb(16)p 2034 5203 41 -6 v 2025 5340 a Fe(_)17 b Fc(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)43 -b Fb(16)p eop end -%%Page: 150 156 -TeXDict begin 150 155 bop 150 -116 a Ft(150)2527 b(Bash)31 -b(Reference)g(Man)m(ual)150 299 y Fr(0)150 428 y Fe(0)17 -b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 b Fb(16)150 693 -y Fr(A)150 822 y Fe(auto_resume)23 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)46 b Fb(90)150 1096 y Fr(B)150 -1225 y Fe(BASH)13 b Fc(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)38 b Fb(59)150 -1319 y Fe(BASH_ARGC)25 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)g(.)h(.)f(.)49 b Fb(60)150 1412 y Fe(BASH_ARGV)25 +b Fb(16)150 2046 y Fr(-)150 2163 y Fe(-)17 b Fc(.)12 +b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 b Fb(16)150 2399 y Fr(?)150 +2516 y Fe(?)17 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 +b Fb(16)150 2751 y Fr(@)150 2868 y Fe(@)17 b Fc(.)12 +b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 b Fb(16)p 159 3104 41 +6 v 150 3221 a Fe(_)17 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 +b Fb(16)150 3456 y Fr(0)150 3573 y Fe(0)17 b Fc(.)12 +b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 b Fb(16)150 3809 y Fr(A)150 +3926 y Fe(auto_resume)23 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) +g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)46 b Fb(88)150 4171 y Fr(B)150 4288 +y Fe(BASH)13 b Fc(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) +g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)38 b Fb(57)150 4375 +y Fe(BASH_ARGC)25 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) +h(.)f(.)g(.)h(.)f(.)49 b Fb(58)150 4463 y Fe(BASH_ARGV)25 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) -49 b Fb(60)150 1505 y Fe(BASH_COMMAND)22 b Fc(.)12 b(.)g(.)h(.)f(.)g(.) +49 b Fb(58)150 4551 y Fe(BASH_COMMAND)22 b Fc(.)12 b(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)45 b Fb(60)150 1599 y +(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)45 b Fb(58)150 4638 y Fe(BASH_ENV)7 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)g(.)h(.)32 b Fb(60)150 1692 y Fe(BASH_EXECUTION_STRING) +g(.)h(.)f(.)g(.)g(.)h(.)32 b Fb(58)150 4726 y Fe(BASH_EXECUTION_STRING) d Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)50 b Fb(60)150 1785 y Fe(BASH_LINENO)23 +(.)g(.)h(.)f(.)g(.)50 b Fb(58)150 4814 y Fe(BASH_LINENO)23 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)46 -b Fb(60)150 1879 y Fe(BASH_REMATCH)22 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h +b Fb(58)150 4901 y Fe(BASH_REMATCH)22 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)g(.)h(.)f(.)g(.)45 b Fb(60)150 1972 y Fe(BASH_SOURCE)23 +h(.)f(.)g(.)g(.)h(.)f(.)g(.)45 b Fb(58)150 4989 y Fe(BASH_SOURCE)23 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)46 -b Fb(60)150 2066 y Fe(BASH_SUBSHELL)18 b Fc(.)d(.)d(.)h(.)f(.)g(.)g(.)h +b Fb(58)150 5077 y Fe(BASH_SUBSHELL)18 b Fc(.)d(.)d(.)h(.)f(.)g(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)43 b Fb(61)150 2159 y Fe(BASH_VERSINFO)18 +h(.)f(.)g(.)h(.)f(.)43 b Fb(58)150 5165 y Fe(BASH_VERSINFO)18 b Fc(.)d(.)d(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43 -b Fb(61)150 2252 y Fe(BASH_VERSION)22 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)g(.)h(.)f(.)g(.)45 b Fb(61)150 2346 y Fe(BASHPID)8 -b Fc(.)14 b(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)34 b Fb(60)150 2439 y Fe(bell-style)24 b -Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 -b Fb(95)150 2533 y Fe(bind-tty-special-chars)28 b Fc(.)12 -b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)48 b Fb(95)150 2817 y Fr(C)150 2945 y Fe(CDPATH)10 -b Fc(.)j(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)35 b Fb(59)150 3039 y Fe(COLUMNS)8 b Fc(.)14 -b(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)34 b Fb(61)150 3132 y Fe(comment-begin)18 b Fc(.)d(.)d(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)43 b Fb(95)150 3226 y Fe(COMP_CWORD)24 -b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 -b Fb(61)150 3319 y Fe(COMP_KEY)7 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)32 b Fb(62)150 -3412 y Fe(COMP_LINE)25 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +b Fb(58)150 5252 y Fe(BASH_VERSION)22 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)g(.)h(.)f(.)49 b Fb(61)150 3506 y Fe(COMP_POINT)24 +h(.)f(.)g(.)g(.)h(.)f(.)g(.)45 b Fb(59)150 5340 y Fe(bell-style)24 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 -b Fb(61)150 3599 y Fe(COMP_TYPE)25 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h +b Fb(93)2025 610 y Fe(bind-tty-special-chars)27 b Fc(.)13 +b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)48 b Fb(93)2025 866 y Fr(C)2025 983 y Fe(CDPATH)10 +b Fc(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) +g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)35 b Fb(57)2025 1071 y Fe(COLUMNS)8 b +Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)49 b Fb(61)150 3693 -y Fe(COMP_WORDBREAKS)15 b Fc(.)g(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)40 -b Fb(62)150 3786 y Fe(COMP_WORDS)24 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 b Fb(62)150 3879 y -Fe(completion-query-items)28 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)48 b Fb(95)150 -3973 y Fe(COMPREPLY)25 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +g(.)h(.)f(.)34 b Fb(59)2025 1159 y Fe(comment-begin)18 +b Fc(.)d(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)43 +b Fb(93)2025 1247 y Fe(COMP_CWORD)24 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.) +g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48 b Fb(59)2025 1335 +y Fe(COMP_LINE)25 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)g(.)h(.)f(.)49 b Fb(62)150 4066 y Fe(convert-meta)22 -b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)45 -b Fb(96)150 4332 y Fr(D)150 4460 y Fe(DIRSTACK)7 b Fc(.)14 -b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -32 b Fb(62)150 4554 y Fe(disable-completion)10 b Fc(.)17 -b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)36 b Fb(96)150 4838 y Fr(E)150 -4966 y Fe(editing-mode)22 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +h(.)f(.)g(.)h(.)f(.)49 b Fb(59)2025 1423 y Fe(COMP_POINT)24 +b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48 +b Fb(59)2025 1510 y Fe(COMP_WORDBREAKS)15 b Fc(.)g(.)e(.)f(.)g(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)g(.)45 b Fb(96)150 5060 y Fe(EMACS)11 b Fc(.)j(.)e(.)g(.)g +h(.)f(.)g(.)h(.)40 b Fb(59)2025 1598 y Fe(COMP_WORDS)24 +b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48 +b Fb(59)2025 1686 y Fe(completion-query-items)27 b Fc(.)13 +b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)48 b Fb(93)2025 1774 y Fe(COMPREPLY)25 b Fc(.)13 +b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)49 +b Fb(60)2025 1862 y Fe(convert-meta)22 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)37 -b Fb(62)150 5153 y Fe(enable-keypad)18 b Fc(.)d(.)d(.)h(.)f(.)g(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)43 b Fb(96)150 5247 y Fe(EUID)13 -b Fc(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)38 b Fb(62)150 5340 y Fe(expand-tilde)22 -b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)45 -b Fb(96)2025 299 y Fr(F)2025 415 y Fe(FCEDIT)10 b Fc(.)j(.)f(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 -b Fb(62)2025 503 y Fe(FIGNORE)8 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f +g(.)h(.)f(.)g(.)h(.)f(.)g(.)45 b Fb(94)2025 2099 y Fr(D)2025 +2216 y Fe(DIRSTACK)7 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)32 b Fb(60)2025 2304 y +Fe(disable-completion)10 b Fc(.)17 b(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)36 +b Fb(94)2025 2559 y Fr(E)2025 2677 y Fe(editing-mode)22 +b Fc(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45 +b Fb(94)2025 2765 y Fe(EMACS)11 b Fc(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)37 +b Fb(60)2025 2853 y Fe(enable-keypad)18 b Fc(.)d(.)d(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)43 b Fb(94)2025 2940 y Fe(EUID)13 +b Fc(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)g(.)h(.)f(.)g(.)h(.)38 b Fb(60)2025 3028 y Fe(expand-tilde)22 +b Fc(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45 +b Fb(94)2025 3284 y Fr(F)2025 3401 y Fe(FCEDIT)10 b Fc(.)j(.)f(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)34 b Fb(62)2025 -590 y Fe(FUNCNAME)7 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)32 b Fb(62)2025 825 y Fr(G)2025 -941 y Fe(GLOBIGNORE)24 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)48 b Fb(63)2025 1029 y Fe(GROUPS)10 -b Fc(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)35 b Fb(63)2025 1263 y Fr(H)2025 1380 -y Fe(histchars)25 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)49 b Fb(63)2025 1467 y Fe(HISTCMD)8 +f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 +b Fb(60)2025 3489 y Fe(FIGNORE)8 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)34 b Fb(60)2025 +3577 y Fe(FUNCNAME)7 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)32 b Fb(60)2025 3814 y +Fr(G)2025 3931 y Fe(GLOBIGNORE)24 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48 b Fb(60)2025 4019 +y Fe(GROUPS)10 b Fc(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 b Fb(60)2025 4256 y Fr(H)2025 +4373 y Fe(histchars)25 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) +g(.)h(.)f(.)g(.)h(.)f(.)49 b Fb(60)2025 4461 y Fe(HISTCMD)8 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)34 b Fb(63)2025 1555 y Fe(HISTCONTROL)23 +g(.)h(.)f(.)34 b Fb(61)2025 4549 y Fe(HISTCONTROL)23 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)46 -b Fb(63)2025 1642 y Fe(HISTFILE)7 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h +b Fb(61)2025 4637 y Fe(HISTFILE)7 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)32 b Fb(63)2025 -1730 y Fe(HISTFILESIZE)22 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g +g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)32 b Fb(61)2025 +4725 y Fe(HISTFILESIZE)22 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)45 b Fb(63)2025 1817 y Fe(HISTIGNORE)24 +g(.)h(.)f(.)g(.)45 b Fb(61)2025 4813 y Fe(HISTIGNORE)24 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48 -b Fb(63)2025 1905 y Fe(history-preserve-point)27 b Fc(.)13 +b Fb(61)2025 4900 y Fe(history-preserve-point)27 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)48 b Fb(96)2025 1992 y Fe(HISTSIZE)7 b Fc(.)14 +(.)h(.)48 b Fb(94)2025 4988 y Fe(HISTSIZE)7 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -32 b Fb(64)2025 2080 y Fe(HISTTIMEFORMAT)16 b Fc(.)f(.)e(.)f(.)g(.)h(.) +32 b Fb(61)2025 5076 y Fe(HISTTIMEFORMAT)16 b Fc(.)f(.)e(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)g(.)h(.)f(.)42 b Fb(64)2025 2167 y Fe(HOME)13 +(.)f(.)g(.)g(.)h(.)f(.)42 b Fb(61)2025 5164 y Fe(HOME)13 b Fc(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)38 b Fb(59)2025 2255 y Fe +(.)g(.)h(.)f(.)g(.)h(.)38 b Fb(57)2025 5252 y Fe (horizontal-scroll-mode)27 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)48 b Fb(96)2025 -2342 y Fe(HOSTFILE)7 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)48 b Fb(94)2025 +5340 y Fe(HOSTFILE)7 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)32 b Fb(64)2025 2430 y -Fe(HOSTNAME)7 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)32 b Fb(64)2025 2517 y Fe(HOSTTYPE)7 -b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)32 b Fb(64)2025 2752 y Fr(I)2025 2868 y Fe(IFS)14 -b Fc(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)40 b Fb(59)2025 2956 y Fe(IGNOREEOF)25 -b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -49 b Fb(64)2025 3043 y Fe(input-meta)24 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48 b Fb(96)2025 3131 -y Fe(INPUTRC)8 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)32 b Fb(62)p eop end +%%Page: 150 156 +TeXDict begin 150 155 bop 150 -116 a Ft(150)2527 b(Bash)31 +b(Reference)g(Man)m(ual)150 299 y Fe(HOSTNAME)7 b Fc(.)14 +b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) +32 b Fb(62)150 387 y Fe(HOSTTYPE)7 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)32 b Fb(62)150 +627 y Fr(I)150 745 y Fe(IFS)14 b Fc(.)f(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) +g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)39 +b Fb(57)150 834 y Fe(IGNOREEOF)25 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)49 b Fb(62)150 922 +y Fe(input-meta)24 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)47 b Fb(94)150 1011 y Fe(INPUTRC)8 b +Fc(.)14 b(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)34 b Fb(62)150 1099 y Fe(isearch-terminators)9 +b Fc(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34 b Fb(94)150 1339 +y Fr(K)150 1457 y Fe(keymap)10 b Fc(.)j(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fb(94)150 +1715 y Fr(L)150 1834 y Fe(LANG)13 b Fc(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)38 +b Fb(62)150 1922 y Fe(LC_ALL)10 b Fc(.)j(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fb(62)150 +2011 y Fe(LC_COLLATE)24 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)g(.)h(.)f(.)34 b Fb(64)2025 3218 y Fe -(isearch-terminators)9 b Fc(.)16 b(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)35 -b Fb(96)2025 3453 y Fr(K)2025 3569 y Fe(keymap)10 b Fc(.)j(.)f(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 -b Fb(96)2025 3822 y Fr(L)2025 3939 y Fe(LANG)13 b Fc(.)g(.)f(.)g(.)g(.) +g(.)h(.)f(.)g(.)h(.)47 b Fb(62)150 2099 y Fe(LC_CTYPE)7 +b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +g(.)h(.)32 b Fb(62)150 2188 y Fe(LC_MESSAGES)14 b Fc(.)h(.)d(.)h(.)f(.) +g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)40 b Fb(7,)26 b(62)150 +2276 y Fe(LC_NUMERIC)e Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) -38 b Fb(64)2025 4027 y Fe(LC_ALL)10 b Fc(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 -b Fb(64)2025 4114 y Fe(LC_COLLATE)24 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48 b Fb(65)2025 4202 -y Fe(LC_CTYPE)7 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)32 b Fb(65)2025 4289 y Fe(LC_MESSAGES)14 -b Fc(.)h(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)40 -b Fb(7,)26 b(65)2025 4377 y Fe(LC_NUMERIC)e Fc(.)12 b(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48 b Fb(65)2025 -4464 y Fe(LINENO)10 b Fc(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 b Fb(65)2025 4552 -y Fe(LINES)11 b Fc(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)37 b Fb(65)2025 4786 -y Fr(M)2025 4903 y Fe(MACHTYPE)7 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)32 b Fb(65)2025 -4990 y Fe(MAIL)13 b Fc(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)38 b Fb(59)2025 -5078 y Fe(MAILCHECK)25 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)47 b Fb(62)150 2364 y Fe(LINENO)10 +b Fc(.)j(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) +g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)35 b Fb(62)150 2453 y Fe(LINES)11 b Fc(.)j(.)e(.)g(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)49 b Fb(65)2025 5165 y Fe(MAILPATH)7 -b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g +g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)37 +b Fb(63)150 2692 y Fr(M)150 2811 y Fe(MACHTYPE)7 b Fc(.)14 +b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) +32 b Fb(63)150 2899 y Fe(MAIL)13 b Fc(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)38 +b Fb(57)150 2988 y Fe(MAILCHECK)25 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)49 b Fb(63)150 3076 +y Fe(MAILPATH)7 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)32 b Fb(59)2025 5252 y Fe(mark-modified-lines)9 -b Fc(.)16 b(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)35 b Fb(97)2025 5340 y -Fe(mark-symlinked-directories)17 b Fc(.)h(.)12 b(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)43 b Fb(97)p eop end -%%Page: 151 157 -TeXDict begin 151 156 bop 150 -116 a Ft(App)s(endix)29 -b(D:)i(Indexes)2623 b(151)150 299 y Fe(match-hidden-files)10 -b Fc(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)36 b Fb(97)150 -394 y Fe(meta-flag)25 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +g(.)h(.)f(.)g(.)g(.)h(.)32 b Fb(57)150 3165 y Fe(mark-modified-lines)9 +b Fc(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34 b Fb(95)150 3253 +y Fe(mark-symlinked-directories)17 b Fc(.)h(.)12 b(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 b Fb(95)150 3342 +y Fe(match-hidden-files)10 b Fc(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)36 +b Fb(95)150 3430 y Fe(meta-flag)25 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)g(.)h(.)f(.)49 b Fb(96)150 690 y Fr(O)150 -823 y Fe(OLDPWD)10 b Fc(.)j(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fb(65)150 919 y -Fe(OPTARG)10 b Fc(.)j(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)49 b Fb(94)150 3688 +y Fr(O)150 3807 y Fe(OLDPWD)10 b Fc(.)j(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fb(63)150 +3895 y Fe(OPTARG)10 b Fc(.)j(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fb(57)150 3984 +y Fe(OPTERR)10 b Fc(.)j(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fb(59)150 1014 y Fe(OPTERR)10 +f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fb(63)150 4072 y Fe(OPTIND)10 b Fc(.)j(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)35 b Fb(65)150 1110 y Fe(OPTIND)10 b Fc(.)j(.)g(.)f(.)g +(.)g(.)h(.)f(.)35 b Fb(57)150 4161 y Fe(OSTYPE)10 b Fc(.)j(.)g(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 -b Fb(59)150 1206 y Fe(OSTYPE)10 b Fc(.)j(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fb(65)150 -1301 y Fe(output-meta)23 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)46 b Fb(97)150 1597 y Fr(P)150 1730 -y Fe(page-completions)13 b Fc(.)j(.)d(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)39 -b Fb(97)150 1826 y Fe(PATH)13 b Fc(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)38 -b Fb(59)150 1921 y Fe(PIPESTATUS)24 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 b Fb(65)150 2017 y -Fe(POSIXLY_CORRECT)15 b Fc(.)g(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)40 -b Fb(65)150 2112 y Fe(PPID)13 b Fc(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)38 -b Fb(66)150 2208 y Fe(PROMPT_COMMAND)16 b Fc(.)g(.)c(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)42 b Fb(66)150 2303 y Fe(PS1)14 b -Fc(.)f(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)39 b Fb(59)150 2399 y Fe(PS2)14 -b Fc(.)f(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)39 b Fb(59)150 2495 y Fe(PS3)14 -b Fc(.)f(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) +b Fb(63)2025 299 y Fe(output-meta)23 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)39 b Fb(66)150 2590 y Fe(PS4)14 -b Fc(.)f(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)39 b Fb(66)150 2686 y Fe(PWD)14 -b Fc(.)f(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)39 b Fb(66)2025 299 y Fr(R)2025 -415 y Fe(RANDOM)10 b Fc(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 b Fb(66)2025 502 y -Fe(REPLY)11 b Fc(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)37 b Fb(66)2025 736 y -Fr(S)2025 852 y Fe(SECONDS)8 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)34 b Fb(66)2025 -939 y Fe(SHELL)11 b Fc(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)46 b Fb(95)2025 551 y +Fr(P)2025 667 y Fe(page-completions)13 b Fc(.)j(.)c(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)39 b Fb(95)2025 754 y Fe(PATH)13 b Fc(.)g(.)f(.)g(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)38 +b Fb(57)2025 842 y Fe(PIPESTATUS)24 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48 b Fb(63)2025 929 y +Fe(POSIXLY_CORRECT)15 b Fc(.)g(.)e(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)40 +b Fb(63)2025 1016 y Fe(PPID)13 b Fc(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)38 +b Fb(63)2025 1104 y Fe(PROMPT_COMMAND)16 b Fc(.)f(.)e(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)g(.)h(.)f(.)42 b Fb(63)2025 1191 y Fe(PS1)14 +b Fc(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)40 b Fb(57)2025 1278 y Fe(PS2)14 +b Fc(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)40 b Fb(57)2025 1365 y Fe(PS3)14 +b Fc(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)40 b Fb(63)2025 1453 y Fe(PS4)14 +b Fc(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)40 b Fb(63)2025 1540 y Fe(PWD)14 +b Fc(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)40 b Fb(63)2025 1773 y Fr(R)2025 +1890 y Fe(RANDOM)10 b Fc(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 b Fb(63)2025 1977 +y Fe(REPLY)11 b Fc(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)37 b Fb(63)2025 2210 +y Fr(S)2025 2326 y Fe(SECONDS)8 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)34 b Fb(64)2025 +2414 y Fe(SHELL)11 b Fc(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)37 b Fb(66)2025 1026 +h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)37 b Fb(64)2025 2501 y Fe(SHELLOPTS)25 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)49 b Fb(66)2025 1114 y Fe(SHLVL)11 +h(.)f(.)g(.)h(.)f(.)49 b Fb(64)2025 2588 y Fe(SHLVL)11 b Fc(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)37 b Fb(66)2025 1201 y Fe(show-all-if-ambiguous)29 +(.)g(.)h(.)f(.)g(.)37 b Fb(64)2025 2675 y Fe(show-all-if-ambiguous)29 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)50 b Fb(97)2025 1288 y Fe(show-all-if-unmodified)27 +(.)g(.)g(.)h(.)f(.)50 b Fb(95)2025 2763 y Fe(show-all-if-unmodified)27 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)48 b Fb(97)2025 1522 y Fr(T)2025 1638 +(.)f(.)g(.)h(.)48 b Fb(95)2025 2996 y Fr(T)2025 3112 y Fe(TEXTDOMAIN)25 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)49 b Fb(7)2025 1725 y Fe(TEXTDOMAINDIR)21 +g(.)h(.)f(.)g(.)h(.)49 b Fb(7)2025 3200 y Fe(TEXTDOMAINDIR)21 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)45 -b Fb(7)2025 1812 y Fe(TIMEFORMAT)24 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g +b Fb(7)2025 3287 y Fe(TIMEFORMAT)24 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48 b Fb(66)2025 1900 +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48 b Fb(64)2025 3374 y Fe(TMOUT)11 b Fc(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)37 b Fb(67)2025 1987 +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)37 b Fb(64)2025 3461 y Fe(TMPDIR)10 b Fc(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 b Fb(67)2025 2220 y Fr(U)2025 -2336 y Fe(UID)14 b Fc(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 b Fb(65)2025 3695 y Fr(U)2025 +3811 y Fe(UID)14 b Fc(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)40 b Fb(67)2025 -2570 y Fr(V)2025 2686 y Fe(visible-stats)18 b Fc(.)d(.)d(.)g(.)h(.)f(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)40 b Fb(65)2025 +4044 y Fr(V)2025 4160 y Fe(visible-stats)18 b Fc(.)d(.)d(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)43 b Fb(98)150 2943 y Fr(D.4)68 -b(F)-11 b(unction)44 b(Index)150 3264 y(A)150 3381 y -Fe(abort)27 b(\(C-g\))8 b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)34 b Fb(109)150 3468 y Fe(accept-line)28 -b(\(Newline)g(or)e(Return\))11 b Fc(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)37 b Fb(103)150 3555 y Fe(alias-expand-line)29 -b(\(\))13 b Fc(.)g(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)39 b Fb(111)150 3808 y -Fr(B)150 3924 y Fe(backward-char)29 b(\(C-b\))15 b Fc(.)e(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) -g(.)41 b Fb(103)150 4011 y Fe(backward-delete-char)30 -b(\(Rubout\))18 b Fc(.)d(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)44 -b Fb(105)150 4098 y Fe(backward-kill-line)30 b(\(C-x)c(Rubout\))e -Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)48 b Fb(106)150 -4186 y Fe(backward-kill-word)30 b(\(M-)999 4183 y Fg(h)p -1024 4130 146 4 v 1024 4186 a Ff(DEL)p 1024 4201 V 1165 -4183 a Fg(i)1195 4186 y Fe(\))20 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)46 b Fb(106)150 4273 y Fe(backward-word)29 +(.)f(.)g(.)h(.)f(.)g(.)h(.)43 b Fb(96)p eop end +%%Page: 151 157 +TeXDict begin 151 156 bop 150 -116 a Ft(F)-8 b(unction)31 +b(Index)2861 b(151)150 299 y Fo(F)-13 b(unction)52 b(Index)150 +610 y Fr(A)150 749 y Fe(abort)27 b(\(C-g\))8 b Fc(.)13 +b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)34 +b Fb(107)150 848 y Fe(accept-line)28 b(\(Newline)g(or)e(Return\))11 +b Fc(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)37 b Fb(101)150 +946 y Fe(alias-expand-line)29 b(\(\))13 b Fc(.)g(.)g(.)f(.)g(.)h(.)f(.) +g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)39 +b Fb(109)150 1257 y Fr(B)150 1397 y Fe(backward-char)29 +b(\(C-b\))15 b Fc(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)41 b Fb(101)150 +1495 y Fe(backward-delete-char)30 b(\(Rubout\))18 b Fc(.)d(.)d(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)44 b Fb(103)150 1594 y +Fe(backward-kill-line)30 b(\(C-x)c(Rubout\))e Fc(.)12 +b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)48 b Fb(104)150 1692 +y Fe(backward-kill-word)30 b(\(M-)999 1689 y Fg(h)p 1024 +1636 146 4 v 1024 1692 a Ff(DEL)p 1024 1708 V 1165 1689 +a Fg(i)1195 1692 y Fe(\))20 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)46 b Fb(104)150 1791 y Fe(backward-word)29 b(\(M-b\))15 b Fc(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)41 b Fb(103)150 -4360 y Fe(beginning-of-history)30 b(\(M-<\))24 b Fc(.)12 +(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)41 b Fb(101)150 +1889 y Fe(beginning-of-history)30 b(\(M-<\))24 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)49 -b Fb(104)150 4448 y Fe(beginning-of-line)29 b(\(C-a\))9 +b Fb(102)150 1988 y Fe(beginning-of-line)29 b(\(C-a\))9 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)35 b Fb(103)150 4700 y Fr(C)150 4816 y Fe +(.)f(.)g(.)35 b Fb(101)150 2299 y Fr(C)150 2438 y Fe (call-last-kbd-macro)30 b(\(C-x)c(e\))10 b Fc(.)j(.)f(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)36 b Fb(109)150 4903 +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)36 b Fb(107)150 2537 y Fe(capitalize-word)29 b(\(M-c\))12 b Fc(.)h(.)g(.)f(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38 -b Fb(105)150 4991 y Fe(character-search)29 b(\(C-]\))10 +b Fb(103)150 2635 y Fe(character-search)29 b(\(C-]\))10 b Fc(.)k(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)g(.)h(.)36 b Fb(109)150 5078 y Fe(character-search-backward)31 +g(.)g(.)h(.)36 b Fb(107)150 2734 y Fe(character-search-backward)31 b(\(M-C-]\))12 b Fc(.)j(.)d(.)g(.)h(.)f(.)g(.)h(.)38 -b Fb(109)150 5165 y Fe(clear-screen)28 b(\(C-l\))16 b +b Fb(107)150 2832 y Fe(clear-screen)28 b(\(C-l\))16 b Fc(.)e(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)42 b Fb(103)150 5253 y Fe(complete)27 -b(\()528 5250 y Fg(h)p 553 5197 148 4 v 553 5253 a Ff(T)-6 -b(AB)p 553 5268 V 697 5250 a Fg(i)726 5253 y Fe(\))18 +(.)g(.)h(.)f(.)g(.)h(.)f(.)42 b Fb(101)150 2931 y Fe(complete)27 +b(\()528 2928 y Fg(h)p 553 2875 148 4 v 553 2931 a Ff(T)-6 +b(AB)p 553 2946 V 697 2928 a Fg(i)726 2931 y Fe(\))18 b Fc(.)13 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)44 b Fb(107)150 -5340 y Fe(complete-command)29 b(\(M-!\))10 b Fc(.)k(.)e(.)h(.)f(.)g(.)h +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)44 b Fb(105)150 +3029 y Fe(complete-command)29 b(\(M-!\))10 b Fc(.)k(.)e(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)36 -b Fb(108)2025 3264 y Fe(complete-filename)29 b(\(M-/\))9 -b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)35 b Fb(108)2025 3357 y Fe(complete-hostname)29 -b(\(M-@\))9 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)35 b Fb(108)2025 3450 y Fe(complete-into-braces) -30 b(\(M-{\))24 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)49 b Fb(108)2025 3543 y Fe(complete-username)29 -b(\(M-~\))9 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)35 b Fb(108)2025 3636 y Fe(complete-variable)29 -b(\(M-$\))9 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)35 b Fb(108)2025 3729 y Fe(copy-backward-word)29 -b(\(\))12 b Fc(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)38 b Fb(106)2025 3822 y Fe -(copy-forward-word)29 b(\(\))13 b Fc(.)g(.)g(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)39 -b Fb(106)2025 3915 y Fe(copy-region-as-kill)30 b(\(\))10 -b Fc(.)j(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)36 b Fb(106)2025 4196 y Fr(D)2025 4324 y -Fe(delete-char)28 b(\(C-d\))18 b Fc(.)13 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)44 -b Fb(105)2025 4417 y Fe(delete-char-or-list)30 b(\(\))10 -b Fc(.)j(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)36 b Fb(108)2025 4510 y Fe(delete-horizontal-space)31 -b(\(\))23 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)49 b Fb(106)2025 4603 y Fe(digit-argument)29 b(\()p -Fd(M-0)p Fe(,)d Fd(M-1)p Fe(,)h(...)f Fd(M--)p Fe(\))13 -b Fc(.)h(.)e(.)g(.)h(.)f(.)g(.)h(.)39 b Fb(107)2025 4695 +b Fb(106)150 3128 y Fe(complete-filename)29 b(\(M-/\))9 +b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)35 b Fb(106)150 3226 y Fe(complete-hostname)29 +b(\(M-@\))9 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)35 b Fb(106)150 3325 y Fe(complete-into-braces) +30 b(\(M-{\))24 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h +(.)f(.)g(.)49 b Fb(106)150 3423 y Fe(complete-username)29 +b(\(M-~\))9 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)35 b Fb(106)150 3522 y Fe(complete-variable)29 +b(\(M-$\))9 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)35 b Fb(106)150 3620 y Fe(copy-backward-word)30 +b(\(\))12 b Fc(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)38 b Fb(104)150 3719 y Fe(copy-forward-word) +29 b(\(\))13 b Fc(.)g(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)39 b Fb(104)150 3817 +y Fe(copy-region-as-kill)30 b(\(\))10 b Fc(.)j(.)f(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)36 +b Fb(104)150 4128 y Fr(D)150 4268 y Fe(delete-char)28 +b(\(C-d\))18 b Fc(.)13 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)43 b +Fb(103)150 4366 y Fe(delete-char-or-list)30 b(\(\))10 +b Fc(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) +g(.)g(.)h(.)36 b Fb(106)150 4465 y Fe(delete-horizontal-space)31 +b(\(\))23 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f +(.)g(.)49 b Fb(104)150 4563 y Fe(digit-argument)29 b(\()p +Fd(M-0)p Fe(,)e Fd(M-1)p Fe(,)f(...)g Fd(M--)p Fe(\))13 +b Fc(.)h(.)e(.)h(.)f(.)g(.)g(.)h(.)39 b Fb(105)150 4662 y Fe(display-shell-version)30 b(\(C-x)d(C-v\))c Fc(.)12 -b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)48 b Fb(110)2025 -4788 y Fe(do-uppercase-version)30 b(\(M-a,)d(M-b,)f(M-)p -Fd(x)p Fe(,)h(...\))2191 4876 y Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f +b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)48 b Fb(108)150 4760 +y Fe(do-uppercase-version)30 b(\(M-a,)d(M-b,)f(M-)p Fd(x)p +Fe(,)h(...)q(\))317 4847 y Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)39 b Fb(107)150 +4946 y Fe(downcase-word)29 b(\(M-l\))15 b Fc(.)e(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)41 +b Fb(103)150 5044 y Fe(dump-functions)29 b(\(\))18 b +Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)43 b Fb(108)150 5143 +y Fe(dump-macros)28 b(\(\))22 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)39 -b Fb(109)2025 4968 y Fe(downcase-word)28 b(\(M-l\))15 -b Fc(.)e(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)41 b Fb(105)2025 5061 y Fe(dump-functions)29 -b(\(\))18 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)44 b Fb(110)2025 -5154 y Fe(dump-macros)28 b(\(\))22 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)48 b Fb(110)2025 5247 y Fe(dump-variables)29 -b(\(\))18 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)44 b Fb(110)2025 -5340 y Fe(dynamic-complete-history)31 b(\(M-)3109 5337 -y Fg(h)p 3134 5284 V 3134 5340 a Ff(T)-6 b(AB)p 3134 -5355 V 3277 5337 a Fg(i)3307 5340 y Fe(\))10 b Fc(.)j(.)f(.)h(.)f(.)g -(.)h(.)36 b Fb(108)p eop end -%%Page: 152 158 -TeXDict begin 152 157 bop 150 -116 a Ft(152)2527 b(Bash)31 -b(Reference)g(Man)m(ual)150 299 y Fr(E)150 420 y Fe -(edit-and-execute-command)g(\(C-xC-e\))12 b Fc(.)j(.)d(.)g(.)h(.)f(.)g -(.)h(.)38 b Fb(111)150 509 y Fe(end-kbd-macro)29 b(\(C-x)d(\)\))19 -b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)44 b Fb(109)150 599 y Fe(end-of-history)29 -b(\(M->\))13 b Fc(.)g(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)39 b Fb(104)150 688 +f(.)g(.)48 b Fb(108)150 5241 y Fe(dump-variables)29 b(\(\))18 +b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)43 b Fb(108)150 5340 +y Fe(dynamic-complete-history)31 b(\(M-)1234 5337 y Fg(h)p +1259 5284 V 1259 5340 a Ff(T)-6 b(AB)p 1259 5355 V 1403 +5337 a Fg(i)1432 5340 y Fe(\))10 b Fc(.)j(.)g(.)f(.)g(.)h(.)f(.)36 +b Fb(106)2025 610 y Fr(E)2025 730 y Fe(edit-and-execute-command)31 +b(\(C-xC-e\))12 b Fc(.)i(.)f(.)f(.)g(.)h(.)f(.)g(.)39 +b Fb(109)2025 819 y Fe(end-kbd-macro)28 b(\(C-x)f(\)\))19 +b Fc(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)45 b Fb(107)2025 909 y Fe(end-of-history)29 +b(\(M->\))13 b Fc(.)g(.)g(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)39 b Fb(102)2025 998 y Fe(end-of-line)28 b(\(C-e\))18 b Fc(.)13 b(.)f(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)43 -b Fb(103)150 778 y Fe(exchange-point-and-mark)31 b(\(C-x)26 -b(C-x\))21 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b -Fb(109)150 1041 y Fr(F)150 1162 y Fe(forward-backward-delete-char)32 -b(\(\))15 b Fc(.)e(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)41 -b Fb(105)150 1252 y Fe(forward-char)28 b(\(C-f\))16 b -Fc(.)e(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)42 b Fb(103)150 1341 y Fe -(forward-search-history)31 b(\(C-s\))20 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)46 b Fb(104)150 1431 y Fe(forward-word)28 -b(\(M-f\))16 b Fc(.)e(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)42 b Fb(103)150 -1684 y Fr(G)150 1805 y Fe(glob-complete-word)30 b(\(M-g\))7 -b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)33 b Fb(110)150 1894 y Fe(glob-expand-word)c(\(C-x)e(*\))14 -b Fc(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)40 b Fb(110)150 1984 y Fe(glob-list-expansions)30 -b(\(C-x)d(g\))8 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)34 b Fb(110)150 2248 y Fr(H)150 2368 y Fe -(history-and-alias-expand-line)e(\(\))14 b Fc(.)f(.)f(.)h(.)f(.)g(.)h -(.)f(.)g(.)40 b Fb(111)150 2458 y Fe(history-expand-line)30 -b(\(M-^\))25 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)50 b Fb(110)150 2547 y Fe(history-search-backward)31 -b(\(\))23 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)49 b Fb(104)150 2637 y Fe(history-search-forward)31 -b(\(\))24 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)50 b Fb(104)150 2901 y Fr(I)150 3021 y Fe(insert-comment)29 -b(\(M-#\))13 b Fc(.)g(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)39 b Fb(110)150 3111 -y Fe(insert-completions)30 b(\(M-*\))7 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)33 b Fb(107)150 -3201 y Fe(insert-last-argument)d(\(M-.)d(or)f(M-_\))8 -b Fc(.)13 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)34 b Fb(111)150 -3464 y Fr(K)150 3585 y Fe(kill-line)28 b(\(C-k\))21 b -Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)46 b Fb(106)150 -3675 y Fe(kill-region)28 b(\(\))22 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)48 b Fb(106)150 3764 y Fe(kill-whole-line)29 -b(\(\))16 b Fc(.)d(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)42 b Fb(106)150 -3854 y Fe(kill-word)28 b(\(M-d\))21 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h +g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)44 +b Fb(101)2025 1087 y Fe(exchange-point-and-mark)31 b(\(C-x)26 +b(C-x\))20 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)45 b +Fb(107)2025 1349 y Fr(F)2025 1469 y Fe(forward-backward-delete-char)32 +b(\(\))15 b Fc(.)e(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)42 +b Fb(103)2025 1558 y Fe(forward-char)28 b(\(C-f\))16 +b Fc(.)e(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)g(.)h(.)f(.)g(.)h(.)42 b Fb(101)2025 1647 y Fe +(forward-search-history)30 b(\(C-s\))21 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)g(.)h(.)f(.)46 b Fb(102)2025 1736 y Fe(forward-word)28 +b(\(M-f\))16 b Fc(.)e(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)42 b Fb(101)2025 +1988 y Fr(G)2025 2108 y Fe(glob-complete-word)29 b(\(M-g\))7 +b Fc(.)14 b(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)g(.)34 b Fb(108)2025 2197 y Fe(glob-expand-word)29 +b(\(C-x)e(*\))14 b Fc(.)f(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)40 b Fb(108)2025 2286 y Fe(glob-list-expansions) +30 b(\(C-x)c(g\))8 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)g(.)35 b Fb(108)2025 2548 y Fr(H)2025 2668 y Fe +(history-and-alias-expand-line)d(\(\))14 b Fc(.)f(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)40 b Fb(109)2025 2757 y Fe(history-expand-line)30 +b(\(M-^\))25 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) +f(.)g(.)h(.)50 b Fb(108)2025 2846 y Fe(history-search-backward)31 +b(\(\))23 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)49 b Fb(102)2025 2935 y Fe(history-search-forward)30 +b(\(\))25 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f +(.)g(.)h(.)50 b Fb(102)2025 3197 y Fr(I)2025 3317 y Fe(insert-comment) +29 b(\(M-#\))13 b Fc(.)g(.)g(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)39 b Fb(108)2025 +3406 y Fe(insert-completions)29 b(\(M-*\))7 b Fc(.)14 +b(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)34 +b Fb(105)2025 3495 y Fe(insert-last-argument)c(\(M-.)c(or)g(M-_\))8 +b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)34 b Fb(109)2025 +3757 y Fr(K)2025 3877 y Fe(kill-line)27 b(\(C-k\))22 +b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)47 b Fb(104)2025 +3966 y Fe(kill-region)28 b(\(\))22 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)46 b Fb(106)150 4107 y Fr(M)150 4228 y Fe(magic-space)28 -b(\(\))22 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48 -b Fb(111)150 4317 y Fe(menu-complete)29 b(\(\))19 b Fc(.)12 -b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)45 b Fb(107)150 4581 y -Fr(N)150 4702 y Fe(next-history)28 b(\(C-n\))16 b Fc(.)e(.)e(.)h(.)f(.) -g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)42 b Fb(104)150 4791 y Fe(non-incremental-forward-searc)q(h-hi)q -(story)32 b(\(M-n\))317 4878 y Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)39 -b Fb(104)150 4968 y Fe(non-incremental-reverse-searc)q(h-hi)q(story)32 -b(\(M-p\))317 5055 y Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +g(.)h(.)f(.)48 b Fb(104)2025 4056 y Fe(kill-whole-line)29 +b(\(\))16 b Fc(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)42 b Fb(104)2025 +4145 y Fe(kill-word)27 b(\(M-d\))22 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)39 b Fb(104)2025 -299 y Fr(O)2025 415 y Fe(operate-and-get-next)30 b(\(C-o\))24 -b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)49 -b Fb(111)2025 502 y Fe(overwrite-mode)29 b(\(\))18 b -Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)44 b Fb(105)2025 744 -y Fr(P)2025 860 y Fe(possible-command-completions)32 -b(\(C-x)26 b(!\))15 b Fc(.)e(.)f(.)h(.)f(.)41 b Fb(108)2025 -947 y Fe(possible-completions)30 b(\(M-?\))24 b Fc(.)12 -b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)49 -b Fb(107)2025 1035 y Fe(possible-filename-completions)32 -b(\(C-x)26 b(/\))14 b Fc(.)f(.)f(.)g(.)40 b Fb(108)2025 -1122 y Fe(possible-hostname-completions)32 b(\(C-x)26 -b(@\))14 b Fc(.)f(.)f(.)g(.)40 b Fb(108)2025 1209 y Fe -(possible-username-completions)32 b(\(C-x)26 b(~\))14 -b Fc(.)f(.)f(.)g(.)40 b Fb(108)2025 1296 y Fe -(possible-variable-completions)32 b(\(C-x)26 b($\))14 -b Fc(.)f(.)f(.)g(.)40 b Fb(108)2025 1384 y Fe(prefix-meta)28 -b(\()2521 1381 y Fg(h)p 2545 1328 139 4 v 2545 1384 a -Ff(ESC)p 2545 1399 V 2679 1381 a Fg(i)2709 1384 y Fe(\))19 -b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)45 b Fb(109)2025 1471 y Fe(previous-history) -29 b(\(C-p\))10 b Fc(.)k(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)36 b Fb(104)2025 1723 y Fr(Q)2025 -1839 y Fe(quoted-insert)28 b(\(C-q)f(or)f(C-v\))18 b -Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)44 -b Fb(105)2025 2091 y Fr(R)2025 2207 y Fe(re-read-init-file)29 -b(\(C-x)e(C-r\))10 b Fc(.)j(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)36 b Fb(109)2025 2294 y Fe(redraw-current-line)30 -b(\(\))10 b Fc(.)j(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)36 b Fb(103)2025 2382 y Fe -(reverse-search-history)30 b(\(C-r\))21 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)46 b Fb(104)2025 2469 y Fe(revert-line)28 -b(\(M-r\))18 b Fc(.)13 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)44 b -Fb(109)2025 2711 y Fr(S)2025 2827 y Fe(self-insert)28 -b(\(a,)e(b,)g(A,)g(1,)g(!,)g(...)q(\))12 b Fc(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)38 b Fb(105)2025 2914 y Fe(set-mark)27 -b(\(C-@\))c Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g +f(.)g(.)47 b Fb(104)2025 4396 y Fr(M)2025 4516 y Fe(magic-space)28 +b(\(\))22 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)48 -b Fb(109)2025 3001 y Fe(shell-expand-line)29 b(\(M-C-e\))d -Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)50 -b Fb(110)2025 3088 y Fe(start-kbd-macro)29 b(\(C-x)d(\(\))16 -b Fc(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)42 b Fb(108)2025 3330 y Fr(T)2025 3446 y Fe(tilde-expand)28 +b Fb(109)2025 4605 y Fe(menu-complete)28 b(\(\))20 b +Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)45 b Fb(105)2025 +4867 y Fr(N)2025 4987 y Fe(next-history)28 b(\(C-n\))16 +b Fc(.)e(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)g(.)h(.)f(.)g(.)h(.)42 b Fb(102)2025 5076 y Fe +(non-incremental-forward-search)q(-hist)q(ory)32 b(\(M-n\))2191 +5164 y Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) +g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)39 b Fb(102)2025 5253 y Fe +(non-incremental-reverse-search)q(-hist)q(ory)32 b(\(M-p\))2191 +5340 y Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) +g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)39 b Fb(102)p eop end +%%Page: 152 158 +TeXDict begin 152 157 bop 150 -116 a Ft(152)2527 b(Bash)31 +b(Reference)g(Man)m(ual)150 299 y Fr(O)150 425 y Fe +(operate-and-get-next)f(\(C-o\))24 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)49 b Fb(109)150 518 y +Fe(overwrite-mode)29 b(\(\))18 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)43 +b Fb(103)150 786 y Fr(P)150 913 y Fe(possible-command-completions)32 +b(\(C-x)26 b(!\))15 b Fc(.)e(.)g(.)f(.)g(.)41 b Fb(106)150 +1005 y Fe(possible-completions)30 b(\(M-?\))24 b Fc(.)12 +b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)49 +b Fb(105)150 1097 y Fe(possible-filename-completions)32 +b(\(C-x)27 b(/\))14 b Fc(.)e(.)g(.)h(.)39 b Fb(106)150 +1190 y Fe(possible-hostname-completions)32 b(\(C-x)27 +b(@\))14 b Fc(.)e(.)g(.)h(.)39 b Fb(106)150 1282 y Fe +(possible-username-completions)32 b(\(C-x)27 b(~\))14 +b Fc(.)e(.)g(.)h(.)39 b Fb(106)150 1374 y Fe +(possible-variable-completions)32 b(\(C-x)27 b($\))14 +b Fc(.)e(.)g(.)h(.)39 b Fb(106)150 1467 y Fe(prefix-meta)28 +b(\()646 1464 y Fg(h)p 671 1411 139 4 v 671 1467 a Ff(ESC)p +671 1482 V 804 1464 a Fg(i)834 1467 y Fe(\))19 b Fc(.)13 +b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)45 b Fb(107)150 1559 y Fe(previous-history)29 +b(\(C-p\))10 b Fc(.)k(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)g(.)h(.)36 b Fb(102)150 1838 y Fr(Q)150 +1964 y Fe(quoted-insert)29 b(\(C-q)d(or)g(C-v\))18 b +Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)44 +b Fb(103)150 2243 y Fr(R)150 2369 y Fe(re-read-init-file)29 +b(\(C-x)e(C-r\))10 b Fc(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)36 b Fb(107)150 2462 y Fe(redraw-current-line)30 +b(\(\))10 b Fc(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)g(.)h(.)36 b Fb(101)150 2554 y Fe +(reverse-search-history)31 b(\(C-r\))20 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)46 b Fb(102)150 2646 y Fe(revert-line)28 +b(\(M-r\))18 b Fc(.)13 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)43 b +Fb(107)2025 299 y Fr(S)2025 415 y Fe(self-insert)28 b(\(a,)e(b,)g(A,)g +(1,)g(!,)g(...)q(\))12 b Fc(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +38 b Fb(103)2025 503 y Fe(set-mark)27 b(\(C-@\))c Fc(.)13 +b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)48 b Fb(107)2025 +590 y Fe(shell-expand-line)29 b(\(M-C-e\))d Fc(.)12 b(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)50 b Fb(108)2025 +677 y Fe(start-kbd-macro)29 b(\(C-x)d(\(\))16 b Fc(.)d(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42 +b Fb(106)2025 919 y Fr(T)2025 1036 y Fe(tilde-expand)28 b(\(M-&\))16 b Fc(.)e(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)42 b Fb(109)2025 -3533 y Fe(transpose-chars)29 b(\(C-t\))12 b Fc(.)h(.)f(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)42 b Fb(107)2025 +1123 y Fe(transpose-chars)29 b(\(C-t\))12 b Fc(.)h(.)f(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)38 -b Fb(105)2025 3621 y Fe(transpose-words)29 b(\(M-t\))12 +b Fb(103)2025 1210 y Fe(transpose-words)29 b(\(M-t\))12 b Fc(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)g(.)h(.)f(.)38 b Fb(105)2025 3873 y Fr(U)2025 3989 +g(.)g(.)h(.)f(.)38 b Fb(103)2025 1463 y Fr(U)2025 1579 y Fe(undo)26 b(\(C-_)h(or)f(C-x)g(C-u\))14 b Fc(.)f(.)g(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)40 -b Fb(109)2025 4076 y Fe(universal-argument)29 b(\(\))12 +b Fb(107)2025 1666 y Fe(universal-argument)29 b(\(\))12 b Fc(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)g(.)h(.)f(.)38 b Fb(107)2025 4163 y Fe(unix-filename-rubout)30 +g(.)g(.)h(.)f(.)38 b Fb(105)2025 1754 y Fe(unix-filename-rubout)30 b(\(\))9 b Fc(.)k(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)35 b Fb(106)2025 4251 y Fe(unix-line-discard)29 +(.)f(.)g(.)h(.)f(.)35 b Fb(104)2025 1841 y Fe(unix-line-discard)29 b(\(C-u\))9 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)35 b Fb(106)2025 4338 y Fe(unix-word-rubout)29 +(.)h(.)f(.)g(.)h(.)f(.)35 b Fb(104)2025 1928 y Fe(unix-word-rubout)29 b(\(C-w\))10 b Fc(.)k(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)36 b Fb(106)2025 4425 y Fe(upcase-word)28 +(.)f(.)g(.)h(.)f(.)g(.)h(.)36 b Fb(104)2025 2016 y Fe(upcase-word)28 b(\(M-u\))18 b Fc(.)13 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)44 b -Fb(105)2025 4677 y Fr(Y)2025 4793 y Fe(yank)26 b(\(C-y\))10 +Fb(103)2025 2268 y Fr(Y)2025 2384 y Fe(yank)26 b(\(C-y\))10 b Fc(.)j(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)36 -b Fb(107)2025 4881 y Fe(yank-last-arg)28 b(\(M-.)f(or)f(M-_\))18 +b Fb(105)2025 2472 y Fe(yank-last-arg)28 b(\(M-.)f(or)f(M-_\))18 b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -44 b Fb(104)2025 4968 y Fe(yank-nth-arg)28 b(\(M-C-y\))13 +44 b Fb(102)2025 2559 y Fe(yank-nth-arg)28 b(\(M-C-y\))13 b Fc(.)h(.)f(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)39 b Fb(104)2025 5055 y Fe(yank-pop)27 +g(.)h(.)f(.)g(.)h(.)39 b Fb(102)2025 2646 y Fe(yank-pop)27 b(\(M-y\))c Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)48 -b Fb(107)p eop end +b Fb(105)p eop end %%Page: 153 159 -TeXDict begin 153 158 bop 150 -116 a Ft(App)s(endix)29 -b(D:)i(Indexes)2623 b(153)150 299 y Fr(D.5)68 b(Concept)45 -b(Index)150 643 y(A)150 762 y Fb(alias)27 b(expansion)20 -b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45 -b Fb(77)150 850 y(arithmetic)26 b(ev)l(aluation)f Fc(.)12 -b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)50 b Fb(76)150 939 y(arithmetic)26 -b(expansion)12 b Fc(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38 b Fb(22)150 -1027 y(arithmetic,)27 b(shell)20 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)45 b Fb(76)150 1116 y(arra)n(ys)6 b Fc(.)13 -b(.)g(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)32 b Fb(78)150 1372 y Fr(B)150 1490 y Fb(bac)n(kground)23 -b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)49 -b Fb(87)150 1579 y(Bash)26 b(con\014guration)11 b Fc(.)i(.)f(.)g(.)h(.) +TeXDict begin 153 158 bop 150 -116 a Ft(Concept)31 b(Index)2882 +b(153)150 299 y Fo(Concept)52 b(Index)150 638 y Fr(A)150 +754 y Fb(alias)27 b(expansion)20 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.) +g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)45 b Fb(75)150 841 y(arithmetic)26 +b(ev)l(aluation)f Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)50 b Fb(74)150 +929 y(arithmetic)26 b(expansion)12 b Fc(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38 +b Fb(22)150 1016 y(arithmetic,)27 b(shell)20 b Fc(.)12 +b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)45 b Fb(74)150 +1103 y(arra)n(ys)6 b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) +g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)32 b Fb(76)150 +1353 y Fr(B)150 1469 y Fb(bac)n(kground)23 b Fc(.)13 +b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)49 +b Fb(85)150 1556 y(Bash)26 b(con\014guration)11 b Fc(.)i(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)36 b Fb(123)150 1667 y(Bash)26 b(installation)6 +(.)f(.)g(.)h(.)36 b Fb(121)150 1643 y(Bash)26 b(installation)6 b Fc(.)15 b(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)32 b Fb(123)150 -1756 y(Bourne)26 b(shell)10 b Fc(.)j(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)32 b Fb(121)150 +1730 y(Bourne)26 b(shell)10 b Fc(.)j(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)36 b Fb(5)150 1844 y(brace)26 +(.)f(.)g(.)h(.)f(.)g(.)h(.)36 b Fb(5)150 1818 y(brace)26 b(expansion)d Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)48 -b Fb(17)150 1933 y(builtin)17 b Fc(.)c(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +b Fb(17)150 1905 y(builtin)17 b Fc(.)c(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)43 b -Fb(3)150 2172 y Fr(C)150 2291 y Fb(command)26 b(editing)19 +Fb(3)150 2138 y Fr(C)150 2254 y Fb(command)26 b(editing)19 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)44 b Fb(91)150 -2379 y(command)26 b(execution)11 b Fc(.)h(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)44 b Fb(89)150 +2341 y(command)26 b(execution)11 b Fc(.)h(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -37 b Fb(29)150 2468 y(command)26 b(expansion)d Fc(.)12 +37 b Fb(29)150 2428 y(command)26 b(expansion)d Fc(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)48 b Fb(28)150 2556 y(command)26 +(.)f(.)g(.)h(.)f(.)g(.)h(.)48 b Fb(28)150 2515 y(command)26 b(history)16 b Fc(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 -b Fb(117)150 2645 y(command)26 b(searc)n(h)12 b Fc(.)h(.)f(.)g(.)h(.)f +b Fb(115)150 2603 y(command)26 b(searc)n(h)12 b Fc(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)g(.)38 b Fb(29)150 2733 y(command)26 +f(.)g(.)h(.)f(.)g(.)g(.)38 b Fb(29)150 2690 y(command)26 b(substitution)e Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)49 b Fb(21)150 -2822 y(command)26 b(timing)8 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) +2777 y(command)26 b(timing)8 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)34 b Fb(8)150 2910 y(commands,)26 b(comp)r(ound)8 +(.)g(.)h(.)f(.)34 b Fb(8)150 2864 y(commands,)26 b(comp)r(ound)8 b Fc(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)34 b Fb(9)150 2998 +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)34 b Fb(9)150 2952 y(commands,)26 b(conditional)13 b Fc(.)h(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)39 -b Fb(10)150 3087 y(commands,)26 b(grouping)15 b Fc(.)f(.)e(.)g(.)h(.)f +b Fb(10)150 3039 y(commands,)26 b(grouping)15 b Fc(.)f(.)e(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)41 b Fb(13)150 3175 y(commands,)26 b(lists)6 +h(.)f(.)41 b Fb(13)150 3126 y(commands,)26 b(lists)6 b Fc(.)14 b(.)f(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)32 -b Fb(9)150 3264 y(commands,)26 b(lo)r(oping)f Fc(.)12 +b Fb(9)150 3213 y(commands,)26 b(lo)r(oping)f Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)49 b Fb(9)150 3352 +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)49 b Fb(9)150 3300 y(commands,)26 b(pip)r(elines)17 b Fc(.)d(.)e(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -43 b Fb(8)150 3441 y(commands,)26 b(shell)16 b Fc(.)e(.)e(.)g(.)h(.)f +43 b Fb(8)150 3388 y(commands,)26 b(shell)16 b Fc(.)e(.)e(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)g(.)h(.)f(.)g(.)h(.)42 b Fb(8)150 3529 y(commands,)26 +f(.)g(.)g(.)h(.)f(.)g(.)h(.)42 b Fb(8)150 3475 y(commands,)26 b(simple)c Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)47 -b Fb(8)150 3618 y(commen)n(ts,)26 b(shell)8 b Fc(.)13 +b Fb(8)150 3562 y(commen)n(ts,)26 b(shell)8 b Fc(.)13 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)34 -b Fb(7)150 3706 y(completion)27 b(builtins)22 b Fc(.)12 +b Fb(7)150 3649 y(completion)27 b(builtins)22 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)48 b Fb(113)150 3795 y(con\014guration)15 +(.)h(.)f(.)g(.)h(.)f(.)g(.)48 b Fb(111)150 3736 y(con\014guration)15 b Fc(.)e(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)41 -b Fb(123)150 3883 y(con)n(trol)26 b(op)r(erator)c Fc(.)12 +b Fb(121)150 3824 y(con)n(trol)26 b(op)r(erator)c Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)47 b Fb(3)150 -4139 y Fr(D)150 4258 y Fb(directory)26 b(stac)n(k)e Fc(.)12 +4073 y Fr(D)150 4189 y Fb(directory)26 b(stac)n(k)e Fc(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)49 b Fb(79)150 -4514 y Fr(E)150 4632 y Fb(editing)26 b(command)g(lines)d +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)49 b Fb(77)150 +4439 y Fr(E)150 4555 y Fb(editing)26 b(command)g(lines)d Fc(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)47 b Fb(91)150 4721 y(en)n(vironmen)n(t)10 +(.)f(.)g(.)h(.)f(.)g(.)h(.)47 b Fb(89)150 4642 y(en)n(vironmen)n(t)10 b Fc(.)i(.)g(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 -b Fb(31)150 4809 y(ev)l(aluation,)26 b(arithmetic)13 +b Fb(30)150 4729 y(ev)l(aluation,)26 b(arithmetic)13 b Fc(.)h(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)39 b Fb(76)150 4898 y(ev)n(en)n(t)25 +f(.)g(.)h(.)f(.)g(.)h(.)f(.)39 b Fb(74)150 4817 y(ev)n(en)n(t)25 b(designators)18 b Fc(.)c(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)44 -b Fb(120)150 4986 y(execution)26 b(en)n(vironmen)n(t)19 +b Fb(117)150 4904 y(execution)26 b(en)n(vironmen)n(t)19 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)45 b Fb(30)150 5075 y(exit)25 +(.)f(.)g(.)h(.)f(.)g(.)h(.)45 b Fb(29)150 4991 y(exit)25 b(status)17 b Fc(.)c(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)43 b Fb(3,)26 b(31)150 5163 y(expansion)16 b Fc(.)d(.)f(.)g(.)h(.)f +(.)43 b Fb(3,)26 b(31)150 5078 y(expansion)16 b Fc(.)d(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42 b -Fb(17)150 5252 y(expansion,)26 b(arithmetic)20 b Fc(.)13 +Fb(17)150 5166 y(expansion,)26 b(arithmetic)20 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)45 b Fb(22)150 5340 y(expansion,)26 +(.)h(.)f(.)g(.)h(.)f(.)45 b Fb(22)150 5253 y(expansion,)26 b(brace)12 b Fc(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)38 -b Fb(17)2025 643 y(expansion,)26 b(\014lename)18 b Fc(.)12 -b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)43 b Fb(23)2025 733 y(expansion,)26 +b Fb(17)150 5340 y(expansion,)26 b(\014lename)18 b Fc(.)12 +b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43 b Fb(23)2025 638 y(expansion,)26 b(parameter)c Fc(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 b Fb(19)2025 -822 y(expansion,)26 b(pathname)8 b Fc(.)k(.)g(.)h(.)f(.)g(.)h(.)f(.)g +729 y(expansion,)26 b(pathname)8 b Fc(.)k(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)34 -b Fb(23)2025 911 y(expansion,)26 b(tilde)9 b Fc(.)j(.)h(.)f(.)g(.)h(.)f +b Fb(23)2025 819 y(expansion,)26 b(tilde)9 b Fc(.)j(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)35 b Fb(18)2025 1000 y(expressions,)27 +h(.)f(.)g(.)h(.)f(.)g(.)35 b Fb(18)2025 910 y(expressions,)27 b(arithmetic)16 b Fc(.)d(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42 b Fb(76)2025 -1089 y(expressions,)27 b(conditional)22 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f +g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42 b Fb(74)2025 +1000 y(expressions,)27 b(conditional)22 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)47 -b Fb(75)2025 1350 y Fr(F)2025 1470 y Fb(FDL,)25 b(GNU)g(F)-6 +b Fb(73)2025 1267 y Fr(F)2025 1390 y Fb(FDL,)25 b(GNU)g(F)-6 b(ree)26 b(Do)r(cumen)n(tation)g(License)10 b Fc(.)j(.)g(.)f(.)g(.)h(.) -36 b Fb(139)2025 1559 y(\014eld)21 b Fc(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g +36 b Fb(137)2025 1480 y(\014eld)21 b Fc(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)48 -b Fb(3)2025 1648 y(\014lename)8 b Fc(.)k(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +b Fb(3)2025 1571 y(\014lename)8 b Fc(.)k(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)34 b Fb(3)2025 -1737 y(\014lename)26 b(expansion)10 b Fc(.)i(.)h(.)f(.)g(.)g(.)h(.)f(.) +1661 y(\014lename)26 b(expansion)10 b Fc(.)i(.)h(.)f(.)g(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)36 b Fb(23)2025 1826 y(foreground)20 b Fc(.)12 +(.)g(.)36 b Fb(23)2025 1752 y(foreground)20 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)45 -b Fb(87)2025 1916 y(functions,)26 b(shell)c Fc(.)13 b(.)f(.)g(.)h(.)f +b Fb(85)2025 1842 y(functions,)26 b(shell)c Fc(.)13 b(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)g(.)h(.)f(.)g(.)h(.)47 b Fb(14)2025 2176 y Fr(H)2025 -2296 y Fb(history)25 b(builtins)16 b Fc(.)d(.)f(.)h(.)f(.)g(.)h(.)f(.)g +f(.)g(.)g(.)h(.)f(.)g(.)h(.)47 b Fb(14)2025 2109 y Fr(H)2025 +2232 y Fb(history)25 b(builtins)16 b Fc(.)d(.)f(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)h(.)42 b Fb(117)2025 2385 y(history)25 b(ev)n(en)n(ts)20 +f(.)g(.)h(.)42 b Fb(115)2025 2322 y(history)25 b(ev)n(en)n(ts)20 b Fc(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)46 -b Fb(120)2025 2474 y(history)25 b(expansion)13 b Fc(.)g(.)f(.)h(.)f(.)g +b Fb(117)2025 2413 y(history)25 b(expansion)13 b Fc(.)g(.)f(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)39 b Fb(119)2025 2564 y(history)25 b(list)18 +f(.)g(.)h(.)f(.)39 b Fb(117)2025 2503 y(history)25 b(list)18 b Fc(.)c(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)44 -b Fb(117)2025 2653 y(History)-6 b(,)25 b(ho)n(w)h(to)g(use)20 +b Fb(115)2025 2594 y(History)-6 b(,)25 b(ho)n(w)h(to)g(use)20 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)46 b Fb(116)2025 2913 -y Fr(I)2025 3033 y Fb(iden)n(ti\014er)16 b Fc(.)c(.)g(.)h(.)f(.)g(.)h +(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)46 b Fb(114)2025 2861 +y Fr(I)2025 2984 y Fb(iden)n(ti\014er)16 b Fc(.)c(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)43 -b Fb(3)2025 3122 y(initialization)28 b(\014le,)e(readline)7 +b Fb(3)2025 3074 y(initialization)28 b(\014le,)e(readline)7 b Fc(.)13 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)33 b Fb(94)2025 3211 y(installation)11 +(.)g(.)h(.)f(.)g(.)33 b Fb(92)2025 3165 y(installation)11 b Fc(.)j(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)37 -b Fb(123)2025 3301 y(in)n(teraction,)26 b(readline)9 +b Fb(121)2025 3255 y(in)n(teraction,)26 b(readline)9 b Fc(.)14 b(.)e(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)35 b Fb(91)2025 -3390 y(in)n(teractiv)n(e)26 b(shell)20 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)35 b Fb(89)2025 +3346 y(in)n(teractiv)n(e)26 b(shell)20 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)45 b Fb(71,)27 b(73)2025 3479 y(in)n(ternationalization)21 +h(.)f(.)45 b Fb(69,)27 b(71)2025 3436 y(in)n(ternationalization)21 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)45 b Fb(7)2025 -3722 y Fr(J)2025 3843 y Fb(job)22 b Fc(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f +3686 y Fr(J)2025 3809 y Fb(job)22 b Fc(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)48 -b Fb(3)2025 3932 y(job)26 b(con)n(trol)12 b Fc(.)h(.)f(.)h(.)f(.)g(.)h +b Fb(3)2025 3900 y(job)26 b(con)n(trol)12 b Fc(.)h(.)f(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)38 b Fb(3,)26 b(87)2025 -4192 y Fr(K)2025 4312 y Fb(kill)g(ring)14 b Fc(.)f(.)f(.)g(.)h(.)f(.)g +h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)38 b Fb(3,)26 b(85)2025 +4166 y Fr(K)2025 4289 y Fb(kill)g(ring)14 b Fc(.)f(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)40 -b Fb(93)2025 4401 y(killing)26 b(text)16 b Fc(.)c(.)h(.)f(.)g(.)h(.)f +b Fb(91)2025 4380 y(killing)26 b(text)16 b Fc(.)c(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)42 b Fb(93)2025 -4661 y Fr(L)2025 4781 y Fb(lo)r(calization)10 b Fc(.)15 +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)42 b Fb(91)2025 +4647 y Fr(L)2025 4769 y Fb(lo)r(calization)10 b Fc(.)15 b(.)d(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)36 -b Fb(7)2025 4871 y(login)26 b(shell)13 b Fc(.)h(.)e(.)g(.)h(.)f(.)g(.)h +b Fb(7)2025 4860 y(login)26 b(shell)13 b Fc(.)h(.)e(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)39 b Fb(71)2025 -5131 y Fr(M)2025 5251 y Fb(matc)n(hing,)26 b(pattern)7 +g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)39 b Fb(69)2025 +5127 y Fr(M)2025 5249 y Fb(matc)n(hing,)26 b(pattern)7 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)33 b Fb(24)2025 +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)33 b Fb(23)2025 5340 y(metac)n(haracter)17 b Fc(.)d(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)44 b Fb(3)p eop end @@ -15612,7 +15161,7 @@ b(languages)14 b Fc(.)h(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)40 b Fb(7)150 594 y(notation,)27 b(readline)12 b Fc(.)h(.)f(.)h(.)f(.)g(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)38 b Fb(91)150 851 y Fr(O)150 969 +(.)g(.)h(.)f(.)g(.)38 b Fb(89)150 851 y Fr(O)150 969 y Fb(op)r(erator,)27 b(shell)15 b Fc(.)e(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)41 b Fb(3)150 1225 y Fr(P)150 @@ -15630,7 +15179,7 @@ b(expansion)19 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)44 b Fb(23)150 1786 y(pattern)25 b(matc)n(hing)18 b Fc(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43 b Fb(24)150 +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43 b Fb(23)150 1875 y(pip)r(eline)15 b Fc(.)e(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)41 b Fb(8)150 1963 @@ -15639,7 +15188,7 @@ y(POSIX)8 b Fc(.)k(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f h(.)f(.)g(.)h(.)f(.)g(.)h(.)34 b Fb(3)150 2052 y(POSIX)25 b(Mo)r(de)10 b Fc(.)i(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)35 b Fb(82)150 2140 y(pro)r(cess)27 b(group)7 b Fc(.)13 +f(.)35 b Fb(80)150 2140 y(pro)r(cess)27 b(group)7 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)33 b Fb(3)150 2229 y(pro)r(cess)27 b(group)e(ID)f Fc(.)12 @@ -15649,10 +15198,10 @@ b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) f(.)36 b Fb(22)150 2406 y(programmable)27 b(completion)16 b Fc(.)d(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)g(.)42 b Fb(111)150 2494 y(prompting)7 b Fc(.)12 +g(.)g(.)42 b Fb(109)150 2494 y(prompting)7 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)32 -b Fb(81)150 2750 y Fr(Q)150 2869 y Fb(quoting)19 b Fc(.)13 +b Fb(79)150 2750 y Fr(Q)150 2869 y Fb(quoting)19 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)46 b Fb(6)150 2957 y(quoting,)26 b(ANSI)12 b @@ -15660,7 +15209,7 @@ Fc(.)f(.)h(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)38 b Fb(6)150 3213 y Fr(R)150 3332 y Fb(Readline,)26 b(ho)n(w)g(to)g(use) 14 b Fc(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)39 b Fb(90)150 3421 +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)39 b Fb(88)150 3421 y(redirection)21 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)46 b Fb(25)2025 299 y(reserv)n(ed)25 @@ -15669,12 +15218,12 @@ b(w)n(ord)f Fc(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g g(.)50 b Fb(3)2025 386 y(restricted)26 b(shell)8 b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)34 -b Fb(82)2025 473 y(return)25 b(status)19 b Fc(.)13 b(.)f(.)g(.)h(.)f(.) +b Fb(80)2025 473 y(return)25 b(status)19 b Fc(.)13 b(.)f(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)45 b Fb(3)2025 707 y Fr(S)2025 823 y Fb(shell)26 b(arithmetic)12 b Fc(.)h(.)g(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38 b Fb(76)2025 910 y(shell)26 +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38 b Fb(74)2025 910 y(shell)26 b(function)11 b Fc(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)37 b Fb(14)2025 997 y(shell)26 b(script)18 b Fc(.)13 @@ -15685,7 +15234,7 @@ b Fb(32)2025 1084 y(shell)26 b(v)l(ariable)17 b Fc(.)c(.)g(.)f(.)g(.)h g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43 b Fb(15)2025 1172 y(shell,)26 b(in)n(teractiv)n(e)16 b Fc(.)d(.)g(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)42 b Fb(73)2025 1259 y(signal)14 b Fc(.)f(.)g(.)f(.)g(.)h +g(.)h(.)f(.)42 b Fb(71)2025 1259 y(signal)14 b Fc(.)f(.)g(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)40 b Fb(4)2025 1346 y(signal)27 b(handling)18 b Fc(.)13 @@ -15693,12 +15242,12 @@ b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)44 b Fb(31)2025 1433 y(sp)r(ecial)27 b(builtin)12 b Fc(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)g(.)h(.)38 b Fb(4,)26 b(57)2025 1521 y(startup)f(\014les)20 +g(.)g(.)h(.)38 b Fb(4,)26 b(56)2025 1521 y(startup)f(\014les)20 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)45 -b Fb(71)2025 1608 y(susp)r(ending)25 b(jobs)7 b Fc(.)14 +b Fb(69)2025 1608 y(susp)r(ending)25 b(jobs)7 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)33 b Fb(87)2025 +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)33 b Fb(85)2025 1858 y Fr(T)2025 1974 y Fb(tilde)26 b(expansion)19 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)45 @@ -15712,17 +15261,17 @@ b(shell)7 b Fc(.)13 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)32 b Fb(15)2025 2601 y(v)l(ariables,)27 b(readline)7 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)32 b Fb(95)2025 +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)32 b Fb(93)2025 2851 y Fr(W)2025 2967 y Fb(w)n(ord)10 b Fc(.)i(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)36 b Fb(4)2025 3055 y(w)n(ord)26 b(splitting)21 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)46 -b Fb(23)2025 3304 y Fr(Y)2025 3421 y Fb(y)n(anking)25 +b Fb(22)2025 3304 y Fr(Y)2025 3421 y Fb(y)n(anking)25 b(text)7 b Fc(.)k(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)33 b Fb(93)p eop end +g(.)33 b Fb(91)p eop end %%Trailer userdict /end-hook known{end-hook}if diff --git a/doc/bashref.texi b/doc/bashref.texi index 78f9c4cb2..56b7170c8 100644 --- a/doc/bashref.texi +++ b/doc/bashref.texi @@ -24,7 +24,7 @@ are preserved on all copies. @quotation Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.2 or +under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with the Front-Cover texts being ``A GNU Manual,'' and with the Back-Cover Texts as in (a) below. A copy of the license is @@ -111,7 +111,13 @@ reference on shell behavior. between Bash and historical versions of /bin/sh. * Copying This Manual:: Copying this manual. -* Indexes:: Various indexes for this manual. +* Builtin Index:: Index of Bash builtin commands. +* Reserved Word Index:: Index of Bash reserved words. +* Variable Index:: Quick reference helps you find the + variable you want. +* Function Index:: Index of bindable Readline functions. +* Concept Index:: General index for concepts described in + this manual. @end menu @end ifnottex @@ -158,7 +164,7 @@ and symbols are expanded to create larger expressions. A Unix shell is both a command interpreter and a programming language. As a command interpreter, the shell provides the user interface to the rich set of @sc{gnu} utilities. The programming -language features allow these utilities to be combined. +language features allow these utilitites to be combined. Files containing commands can be created, and become commands themselves. These new commands have the same status as system commands in directories such as @file{/bin}, allowing users @@ -282,7 +288,7 @@ group @sc{id}. @item process group ID @cindex process group ID -A unique identifier that represents a @code{process group} +A unique identifer that represents a @code{process group} during its lifetime. @item reserved word @@ -556,7 +562,7 @@ fashion: In a non-interactive shell, or an interactive shell in which the @code{interactive_comments} option to the @code{shopt} -builtin is enabled (@pxref{The Shopt Builtin}), +builtin is enabled (@pxref{Bash Builtins}), a word beginning with @samp{#} causes that word and all remaining characters on that line to be ignored. An interactive shell without the @code{interactive_comments} @@ -842,7 +848,7 @@ The syntax of the @code{case} command is: @code{case} will selectively execute the @var{command-list} corresponding to the first @var{pattern} that matches @var{word}. If the shell option @code{nocasematch} -(see the description of @code{shopt} in @ref{The Shopt Builtin}) +(see the description of @code{shopt} in @ref{Bash Builtins}) is enabled, the match is performed without regard to the case of alphabetic characters. The @samp{|} is used to separate multiple patterns, and the @samp{)} @@ -891,7 +897,7 @@ The list of words following @code{in} is expanded, generating a list of items. The set of expanded words is printed on the standard error output stream, each preceded by a number. If the @samp{in @var{words}} is omitted, the positional parameters are printed, -as if @samp{in "$@@"} had been specified. +as if @samp{in "$@@"} had been specifed. The @env{PS3} prompt is then displayed and a line is read from the standard input. If the line consists of a number corresponding to one of the displayed @@ -954,7 +960,7 @@ When the @samp{==} and @samp{!=} operators are used, the string to the right of the operator is considered a pattern and matched according to the rules described below in @ref{Pattern Matching}. If the shell option @code{nocasematch} -(see the description of @code{shopt} in @ref{The Shopt Builtin}) +(see the description of @code{shopt} in @ref{Bash Builtins}) is enabled, the match is performed without regard to the case of alphabetic characters. The return value is 0 if the string matches (@samp{==}) or does not @@ -971,7 +977,7 @@ the pattern, and 1 otherwise. If the regular expression is syntactically incorrect, the conditional expression's return value is 2. If the shell option @code{nocasematch} -(see the description of @code{shopt} in @ref{The Shopt Builtin}) +(see the description of @code{shopt} in @ref{Bash Builtins}) is enabled, the match is performed without regard to the case of alphabetic characters. Substrings matched by parenthesized subexpressions within the regular @@ -1371,7 +1377,7 @@ This mechanism is similar to @var{filename expansion} (@pxref{Filename Expansion}), but the file names generated need not exist. Patterns to be brace expanded take the form of an optional @var{preamble}, -followed by either a series of comma-separated strings or a seqeunce expression +followed by either a series of comma-separated strings or a sequnce expression between a pair of braces, followed by an optional @var{postscript}. The preamble is prefixed to each string contained within the braces, and @@ -1593,16 +1599,12 @@ index of the specified array. Note that a negative offset must be separated from the colon by at least one space to avoid being confused with the @samp{:-} expansion. Substring indexing is zero-based unless the positional parameters -are used, in which case the indexing starts at 1 by default. -If @var{offset} is 0, and the positional parameters are used, @code{$@@} is -prefixed to the list. +are used, in which case the indexing starts at 1. @item $@{!@var{prefix}*@} @itemx $@{!@var{prefix}@@@} Expands to the names of variables whose names begin with @var{prefix}, separated by the first character of the @env{IFS} special variable. -When @samp{@@} is used and the expansion appears within double quotes, each -variable name expands to a separate word. @item $@{!@var{name}[@@]@} @itemx $@{!@var{name}[*]@} @@ -1779,15 +1781,13 @@ The shell scans the results of parameter expansion, command substitution, and arithmetic expansion that did not occur within double quotes for word splitting. -The shell treats each character of @env{$IFS} as a delimiter, and splits -the results of the other expansions into words on these characters. -If @env{IFS} is unset, or its value is exactly @code{}, -the default, then sequences of -@code{ }, @code{}, and @code{} -at the beginning and end of the results of the previous -expansions are ignored, and any sequence of @env{IFS} -characters not at the beginning or end serves to delimit words. -If @env{IFS} has a value other than the default, then sequences of +The shell treats each character of @env{$IFS} +as a delimiter, and splits the results of the other +expansions into words on these characters. If +@env{IFS} is unset, or its value is exactly @code{}, +the default, then any sequence of @env{IFS} +characters serves to delimit words. If @env{IFS} +has a value other than the default, then sequences of the whitespace characters @code{space} and @code{tab} are ignored at the beginning and end of the word, as long as the whitespace character is in the @@ -1840,7 +1840,7 @@ When matching a file name, the slash character must always be matched explicitly. In other cases, the @samp{.} character is not treated specially. -See the description of @code{shopt} in @ref{The Shopt Builtin}, +See the description of @code{shopt} in @ref{Bash Builtins}, for a description of the @code{nocaseglob}, @code{nullglob}, @code{failglob}, and @code{dotglob} options. @@ -2351,7 +2351,7 @@ options enabled at invocation (either by default or with command-line arguments) or by @code{set} @item -options enabled by @code{shopt} (@pxref{The Shopt Builtin}) +options enabled by @code{shopt} @item shell aliases defined with @code{alias} (@pxref{Aliases}) @@ -2508,7 +2508,7 @@ builtin (@pxref{Job Control Builtins}) or marked to not receive @code{SIGHUP} using @code{disown -h}. If the @code{huponexit} shell option has been set with @code{shopt} -(@pxref{The Shopt Builtin}), Bash sends a @code{SIGHUP} to all jobs when +(@pxref{Bash Builtins}), Bash sends a @code{SIGHUP} to all jobs when an interactive login shell exits. If Bash is waiting for a command to complete and receives a signal @@ -2588,8 +2588,8 @@ under another shell. * Bourne Shell Builtins:: Builtin commands inherited from the Bourne Shell. * Bash Builtins:: Table of builtins specific to Bash. -* Modifying Shell Behavior:: Builtins to modify shell attributes and - optional behavior. +* The Set Builtin:: This builtin is so overloaded it + deserves its own section. * Special Builtins:: Builtin commands classified specially by POSIX. @end menu @@ -2717,7 +2717,7 @@ exec [-cl] [-a @var{name}] [@var{command} [@var{arguments}]] If @var{command} is supplied, it replaces the shell without creating a new process. If the @option{-l} option is supplied, the shell places a dash at the -beginning of the zeroth argument passed to @var{command}. +beginning of the zeroth arg passed to @var{command}. This is what the @code{login} program does. The @option{-c} option causes @var{command} to be executed with an empty environment. @@ -2892,9 +2892,8 @@ shift [@var{n}] @end example Shift the positional parameters to the left by @var{n}. The positional parameters from @var{n}+1 @dots{} @code{$#} are -renamed to @code{$1} @dots{} @code{$#}-@var{n}. -Parameters represented by the numbers @code{$#} to @code{$#}-@var{n}+1 -are unset. +renamed to @code{$1} @dots{} @code{$#}-@var{n}+1. +Parameters represented by the numbers @code{$#} to @var{n}+1 are unset. @var{n} must be a non-negative number less than or equal to @code{$#}. If @var{n} is zero or greater than @code{$#}, the positional parameters are not changed. @@ -3015,7 +3014,7 @@ before every simple command, @code{for} command, @code{case} command, @code{select} command, every arithmetic @code{for} command, and before the first command executes in a shell function. Refer to the description of the @code{extglob} option to the -@code{shopt} builtin (@pxref{The Shopt Builtin}) for details of its +@code{shopt} builtin (@pxref{Bash Builtins}) for details of its effect on the @code{DEBUG} trap. If a @var{sigspec} is @code{ERR}, the command @var{arg} is executed whenever a simple command has a non-zero exit status, @@ -3031,8 +3030,8 @@ each time a shell function or a script executed with the @code{.} or @code{source} builtins finishes executing. Signals ignored upon entry to the shell cannot be trapped or reset. -Trapped signals that are not being ignored are reset to their original -values in a child process when it is created. +Trapped signals are reset to their original values in a child +process when it is created. The return status is zero unless a @var{sigspec} does not specify a valid signal. @@ -3111,7 +3110,7 @@ key and function bindings, bind a key sequence to a Readline function or macro, or set a Readline variable. Each non-option argument is a command as it would appear in a -Readline initialization file (@pxref{Readline Init File}), +a Readline initialization file (@pxref{Readline Init File}), but each binding or command must be passed as a separate argument; e.g., @samp{"\C-x\C-r":re-read-init-file}. Options, if supplied, have the following meanings: @@ -3251,7 +3250,7 @@ When @option{-p} is used, additional options are ignored. The @option{-F} option inhibits the display of function definitions; only the function name and attributes are printed. If the @code{extdebug} shell option is enabled using @code{shopt} -(@pxref{The Shopt Builtin}), the source file name and line number where +(@pxref{Bash Builtins}), the source file name and line number where the function is defined are displayed as well. @option{-F} implies @option{-f}. The following options can be used to restrict output to variables with @@ -3284,10 +3283,7 @@ Mark each @var{name} for export to subsequent commands via the environment. @end table -Using @samp{+} instead of @samp{-} turns off the attribute instead, -with the exceptions that @samp{+a} -may not be used to destroy an array variable and @samp{+r} will not -remove the readonly attribute. +Using @samp{+} instead of @samp{-} turns off the attribute instead. When used in a function, @code{declare} makes each @var{name} local, as with the @code{local} command. If a variable name is followed by =@var{value}, the value of the variable is set to @var{value}. @@ -3345,6 +3341,9 @@ backslash @item \0@var{nnn} the eight-bit character whose value is the octal value @var{nnn} (zero to three octal digits) +@item \@var{nnn} +the eight-bit character whose value is the octal value @var{nnn} +(one to three octal digits) @item \x@var{HH} the eight-bit character whose value is the hexadecimal value @var{HH} (one or two hex digits) @@ -3353,7 +3352,7 @@ the eight-bit character whose value is the hexadecimal value @var{HH} @item enable @btindex enable @example -enable [-a] [-dnps] [-f @var{filename}] [@var{name} @dots{}] +enable [-n] [-p] [-f @var{filename}] [-ads] [@var{name} @dots{}] @end example Enable and disable builtin shell commands. Disabling a builtin allows a disk command which has the same name @@ -3525,177 +3524,421 @@ Read input from file descriptor @var{fd}. @end table -@item source -@btindex source -@example -source @var{filename} -@end example -A synonym for @code{.} (@pxref{Bourne Shell Builtins}). - -@item type -@btindex type +@item shopt +@btindex shopt @example -type [-afptP] [@var{name} @dots{}] +shopt [-pqsu] [-o] [@var{optname} @dots{}] @end example -For each @var{name}, indicate how it would be interpreted if used as a -command name. - -If the @option{-t} option is used, @code{type} prints a single word -which is one of @samp{alias}, @samp{function}, @samp{builtin}, -@samp{file} or @samp{keyword}, -if @var{name} is an alias, shell function, shell builtin, -disk file, or shell reserved word, respectively. -If the @var{name} is not found, then nothing is printed, and -@code{type} returns a failure status. +Toggle the values of variables controlling optional shell behavior. +With no options, or with the @option{-p} option, a list of all settable +options is displayed, with an indication of whether or not each is set. +The @option{-p} option causes output to be displayed in a form that +may be reused as input. +Other options have the following meanings: -If the @option{-p} option is used, @code{type} either returns the name -of the disk file that would be executed, or nothing if @option{-t} -would not return @samp{file}. +@table @code +@item -s +Enable (set) each @var{optname}. -The @option{-P} option forces a path search for each @var{name}, even if -@option{-t} would not return @samp{file}. +@item -u +Disable (unset) each @var{optname}. -If a command is hashed, @option{-p} and @option{-P} print the hashed value, -not necessarily the file that appears first in @code{$PATH}. +@item -q +Suppresses normal output; the return status +indicates whether the @var{optname} is set or unset. +If multiple @var{optname} arguments are given with @option{-q}, +the return status is zero if all @var{optnames} are enabled; +non-zero otherwise. -If the @option{-a} option is used, @code{type} returns all of the places -that contain an executable named @var{file}. -This includes aliases and functions, if and only if the @option{-p} option -is not also used. +@item -o +Restricts the values of +@var{optname} to be those defined for the @option{-o} option to the +@code{set} builtin (@pxref{The Set Builtin}). +@end table -If the @option{-f} option is used, @code{type} does not attempt to find -shell functions, as with the @code{command} builtin. +If either @option{-s} or @option{-u} +is used with no @var{optname} arguments, the display is limited to +those options which are set or unset, respectively. -The return status is zero if any of the @var{names} are found, non-zero -if none are found. +Unless otherwise noted, the @code{shopt} options are disabled (off) +by default. -@item typeset -@btindex typeset -@example -typeset [-afFrxi] [-p] [@var{name}[=@var{value}] @dots{}] -@end example -The @code{typeset} command is supplied for compatibility with the Korn -shell; however, it has been deprecated in favor of the @code{declare} -builtin command. +The return status when listing options is zero if all @var{optnames} +are enabled, non-zero otherwise. When setting or unsetting options, +the return status is zero unless an @var{optname} is not a valid shell +option. -@item ulimit -@btindex ulimit -@example -ulimit [-acdefilmnpqrstuvxSH] [@var{limit}] -@end example -@code{ulimit} provides control over the resources available to processes -started by the shell, on systems that allow such control. If an -option is given, it is interpreted as follows: +The list of @code{shopt} options is: @table @code -@item -S -Change and report the soft limit associated with a resource. - -@item -H -Change and report the hard limit associated with a resource. - -@item -a -All current limits are reported. +@item cdable_vars +If this is set, an argument to the @code{cd} +builtin command that +is not a directory is assumed to be the name of a variable whose +value is the directory to change to. -@item -c -The maximum size of core files created. +@item cdspell +If set, minor errors in the spelling of a directory component in a +@code{cd} command will be corrected. +The errors checked for are transposed characters, +a missing character, and a character too many. +If a correction is found, the corrected path is printed, +and the command proceeds. +This option is only used by interactive shells. -@item -d -The maximum size of a process's data segment. +@item checkhash +If this is set, Bash checks that a command found in the hash +table exists before trying to execute it. If a hashed command no +longer exists, a normal path search is performed. -@item -e -The maximum scheduling priority ("nice"). +@item checkwinsize +If set, Bash checks the window size after each command +and, if necessary, updates the values of +@env{LINES} and @env{COLUMNS}. -@item -f -The maximum size of files written by the shell and its children. +@item cmdhist +If set, Bash +attempts to save all lines of a multiple-line +command in the same history entry. This allows +easy re-editing of multi-line commands. -@item -i -The maximum number of pending signals. +@item dotglob +If set, Bash includes filenames beginning with a `.' in +the results of filename expansion. -@item -l -The maximum size that may be locked into memory. +@item execfail +If this is set, a non-interactive shell will not exit if +it cannot execute the file specified as an argument to the @code{exec} +builtin command. An interactive shell does not exit if @code{exec} +fails. -@item -m -The maximum resident set size. +@item expand_aliases +If set, aliases are expanded as described below under Aliases, +@ref{Aliases}. +This option is enabled by default for interactive shells. -@item -n -The maximum number of open file descriptors. +@item extdebug +If set, behavior intended for use by debuggers is enabled: -@item -p -The pipe buffer size. +@enumerate +@item +The @option{-F} option to the @code{declare} builtin (@pxref{Bash Builtins}) +displays the source file name and line number corresponding to each function +name supplied as an argument. -@item -q -The maximum number of bytes in POSIX message queues. +@item +If the command run by the @code{DEBUG} trap returns a non-zero value, the +next command is skipped and not executed. -@item -r -The maximum real-time scheduling priority. +@item +If the command run by the @code{DEBUG} trap returns a value of 2, and the +shell is executing in a subroutine (a shell function or a shell script +executed by the @code{.} or @code{source} builtins), a call to +@code{return} is simulated. -@item -s -The maximum stack size. +@item +@code{BASH_ARGC} and @code{BASH_ARGV} are updated as described in their +descriptions (@pxref{Bash Variables}). -@item -t -The maximum amount of cpu time in seconds. +@item +Function tracing is enabled: command substitution, shell functions, and +subshells invoked with @code{( @var{command} )} inherit the +@code{DEBUG} and @code{RETURN} traps. -@item -u -The maximum number of processes available to a single user. +@item +Error tracing is enabled: command substitution, shell functions, and +subshells invoked with @code{( @var{command} )} inherit the +@code{ERROR} trap. +@end enumerate -@item -v -The maximum amount of virtual memory available to the process. +@item extglob +If set, the extended pattern matching features described above +(@pxref{Pattern Matching}) are enabled. -@item -x -The maximum number of file locks. +@item extquote +If set, @code{$'@var{string}'} and @code{$"@var{string}"} quoting is +performed within @code{$@{@var{parameter}@}} expansions +enclosed in double quotes. This option is enabled by default. -@end table +@item failglob +If set, patterns which fail to match filenames during pathname expansion +result in an expansion error. -If @var{limit} is given, it is the new value of the specified resource; -the special @var{limit} values @code{hard}, @code{soft}, and -@code{unlimited} stand for the current hard limit, the current soft limit, -and no limit, respectively. -Otherwise, the current value of the soft limit for the specified resource -is printed, unless the @option{-H} option is supplied. -When setting new limits, if neither @option{-H} nor @option{-S} is supplied, -both the hard and soft limits are set. -If no option is given, then @option{-f} is assumed. Values are in 1024-byte -increments, except for @option{-t}, which is in seconds, @option{-p}, -which is in units of 512-byte blocks, and @option{-n} and @option{-u}, which -are unscaled values. +@item force_fignore +If set, the suffixes specified by the @env{FIGNORE} shell variable +cause words to be ignored when performing word completion even if +the ignored words are the only possible completions. +@xref{Bash Variables}, for a description of @env{FIGNORE}. +This option is enabled by default. -The return status is zero unless an invalid option or argument is supplied, -or an error occurs while setting a new limit. +@item gnu_errfmt +If set, shell error messages are written in the standard @sc{gnu} error +message format. -@item unalias -@btindex unalias -@example -unalias [-a] [@var{name} @dots{} ] -@end example +@item histappend +If set, the history list is appended to the file named by the value +of the @env{HISTFILE} +variable when the shell exits, rather than overwriting the file. -Remove each @var{name} from the list of aliases. If @option{-a} is -supplied, all aliases are removed. -Aliases are described in @ref{Aliases}. +@item histreedit +If set, and Readline +is being used, a user is given the opportunity to re-edit a +failed history substitution. -@end table +@item histverify +If set, and Readline +is being used, the results of history substitution are not immediately +passed to the shell parser. Instead, the resulting line is loaded into +the Readline editing buffer, allowing further modification. -@node Modifying Shell Behavior -@section Modifying Shell Behavior - -@menu -* The Set Builtin:: Change the values of shell attributes and - positional parameters. -* The Shopt Builtin:: Modify shell optional behavior. -@end menu +@item hostcomplete +If set, and Readline is being used, Bash will attempt to perform +hostname completion when a word containing a @samp{@@} is being +completed (@pxref{Commands For Completion}). This option is enabled +by default. + +@item huponexit +If set, Bash will send @code{SIGHUP} to all jobs when an interactive +login shell exits (@pxref{Signals}). + +@item interactive_comments +Allow a word beginning with @samp{#} +to cause that word and all remaining characters on that +line to be ignored in an interactive shell. +This option is enabled by default. + +@item lithist +If enabled, and the @code{cmdhist} +option is enabled, multi-line commands are saved to the history with +embedded newlines rather than using semicolon separators where possible. + +@item login_shell +The shell sets this option if it is started as a login shell +(@pxref{Invoking Bash}). +The value may not be changed. + +@item mailwarn +If set, and a file that Bash is checking for mail has been +accessed since the last time it was checked, the message +@code{"The mail in @var{mailfile} has been read"} is displayed. + +@item no_empty_cmd_completion +If set, and Readline is being used, Bash will not attempt to search +the @env{PATH} for possible completions when completion is attempted +on an empty line. + +@item nocaseglob +If set, Bash matches filenames in a case-insensitive fashion when +performing filename expansion. + +@item nocasematch +If set, Bash matches patterns in a case-insensitive fashion when +performing matching while executing @code{case} or @code{[[} +conditional commands. + +@item nullglob +If set, Bash allows filename patterns which match no +files to expand to a null string, rather than themselves. + +@item progcomp +If set, the programmable completion facilities +(@pxref{Programmable Completion}) are enabled. +This option is enabled by default. + +@item promptvars +If set, prompt strings undergo +parameter expansion, command substitution, arithmetic +expansion, and quote removal after being expanded +as described below (@pxref{Printing a Prompt}). +This option is enabled by default. + +@item restricted_shell +The shell sets this option if it is started in restricted mode +(@pxref{The Restricted Shell}). +The value may not be changed. +This is not reset when the startup files are executed, allowing +the startup files to discover whether or not a shell is restricted. + +@item shift_verbose +If this is set, the @code{shift} +builtin prints an error message when the shift count exceeds the +number of positional parameters. + +@item sourcepath +If set, the @code{source} builtin uses the value of @env{PATH} +to find the directory containing the file supplied as an argument. +This option is enabled by default. + +@item xpg_echo +If set, the @code{echo} builtin expands backslash-escape sequences +by default. + +@end table + +@noindent +The return status when listing options is zero if all @var{optnames} +are enabled, non-zero otherwise. +When setting or unsetting options, the return status is zero unless an +@var{optname} is not a valid shell option. + +@item source +@btindex source +@example +source @var{filename} +@end example +A synonym for @code{.} (@pxref{Bourne Shell Builtins}). + +@item type +@btindex type +@example +type [-afptP] [@var{name} @dots{}] +@end example +For each @var{name}, indicate how it would be interpreted if used as a +command name. + +If the @option{-t} option is used, @code{type} prints a single word +which is one of @samp{alias}, @samp{function}, @samp{builtin}, +@samp{file} or @samp{keyword}, +if @var{name} is an alias, shell function, shell builtin, +disk file, or shell reserved word, respectively. +If the @var{name} is not found, then nothing is printed, and +@code{type} returns a failure status. + +If the @option{-p} option is used, @code{type} either returns the name +of the disk file that would be executed, or nothing if @option{-t} +would not return @samp{file}. + +The @option{-P} option forces a path search for each @var{name}, even if +@option{-t} would not return @samp{file}. + +If a command is hashed, @option{-p} and @option{-P} print the hashed value, +not necessarily the file that appears first in @code{$PATH}. + +If the @option{-a} option is used, @code{type} returns all of the places +that contain an executable named @var{file}. +This includes aliases and functions, if and only if the @option{-p} option +is not also used. + +If the @option{-f} option is used, @code{type} does not attempt to find +shell functions, as with the @code{command} builtin. + +The return status is zero if any of the @var{names} are found, non-zero +if none are found. + +@item typeset +@btindex typeset +@example +typeset [-afFrxi] [-p] [@var{name}[=@var{value}] @dots{}] +@end example +The @code{typeset} command is supplied for compatibility with the Korn +shell; however, it has been deprecated in favor of the @code{declare} +builtin command. + +@item ulimit +@btindex ulimit +@example +ulimit [-acdefilmnpqrstuvxSH] [@var{limit}] +@end example +@code{ulimit} provides control over the resources available to processes +started by the shell, on systems that allow such control. If an +option is given, it is interpreted as follows: +@table @code +@item -S +Change and report the soft limit associated with a resource. + +@item -H +Change and report the hard limit associated with a resource. + +@item -a +All current limits are reported. + +@item -c +The maximum size of core files created. + +@item -d +The maximum size of a process's data segment. + +@item -e +The maximum scheduling priority ("nice"). + +@item -f +The maximum size of files created by the shell. + +@item -i +The maximum number of pending signals. + +@item -l +The maximum size that may be locked into memory. + +@item -m +The maximum resident set size. + +@item -n +The maximum number of open file descriptors. + +@item -p +The pipe buffer size. + +@item -q +The maximum number of bytes in POSIX message queues. + +@item -r +The maximum real-time scheduling priority. + +@item -s +The maximum stack size. + +@item -t +The maximum amount of cpu time in seconds. + +@item -u +The maximum number of processes available to a single user. + +@item -v +The maximum amount of virtual memory available to the process. + +@item -x +The maximum number of file locks. + +@end table + +If @var{limit} is given, it is the new value of the specified resource; +the special @var{limit} values @code{hard}, @code{soft}, and +@code{unlimited} stand for the current hard limit, the current soft limit, +and no limit, respectively. +Otherwise, the current value of the soft limit for the specified resource +is printed, unless the @option{-H} option is supplied. +When setting new limits, if neither @option{-H} nor @option{-S} is supplied, +both the hard and soft limits are set. +If no option is given, then @option{-f} is assumed. Values are in 1024-byte +increments, except for @option{-t}, which is in seconds, @option{-p}, +which is in units of 512-byte blocks, and @option{-n} and @option{-u}, which +are unscaled values. + +The return status is zero unless an invalid option or argument is supplied, +or an error occurs while setting a new limit. + +@item unalias +@btindex unalias +@example +unalias [-a] [@var{name} @dots{} ] +@end example + +Remove each @var{name} from the list of aliases. If @option{-a} is +supplied, all aliases are removed. +Aliases are described in @ref{Aliases}. + +@end table @node The Set Builtin -@subsection The Set Builtin +@section The Set Builtin -This builtin is so complicated that it deserves its own section. @code{set} -allows you to change the values of shell options and set the positional -parameters, or to display the names and values of shell variables. +This builtin is so complicated that it deserves its own section. @table @code @item set @btindex set @example -set [--abefhkmnptuvxBCEHPT] [-o @var{option}] [@var{argument} @dots{}] -set [+abefhkmnptuvxBCEHPT] [+o @var{option}] [@var{argument} @dots{}] +set [--abefhkmnptuvxBCHP] [-o @var{option}] [@var{argument} @dots{}] @end example If no options or arguments are supplied, @code{set} displays the names @@ -3720,11 +3963,10 @@ immediately, rather than before printing the next primary prompt. @item -e Exit immediately if a simple command (@pxref{Simple Commands}) exits with a non-zero status, unless the command that fails is part of the -command list immediately following a @code{while} or @code{until} keyword, -part of the test in an @code{if} statement, -part of a @code{&&} or @code{||} list, -any command in a pipeline but the last, -or if the command's return status is being inverted using @code{!}. +command list immediately following a @code{while} or @code{until} +keyword, part of the test in an @code{if} statement, +part of a @code{&&} or @code{||} list, or if the command's return +status is being inverted using @code{!}. A trap on @code{ERR}, if set, is executed before the shell exits. @item -f @@ -3792,433 +4034,156 @@ Same as @code{-m}. @item noclobber Same as @code{-C}. -@item noexec -Same as @code{-n}. - -@item noglob -Same as @code{-f}. - -@item nolog -Currently ignored. - -@item notify -Same as @code{-b}. - -@item nounset -Same as @code{-u}. - -@item onecmd -Same as @code{-t}. - -@item physical -Same as @code{-P}. - -@item pipefail -If set, the return value of a pipeline is the value of the last -(rightmost) command to exit with a non-zero status, or zero if all -commands in the pipeline exit successfully. -This option is disabled by default. - -@item posix -Change the behavior of Bash where the default operation differs -from the @sc{posix} standard to match the standard -(@pxref{Bash POSIX Mode}). -This is intended to make Bash behave as a strict superset of that -standard. - -@item privileged -Same as @code{-p}. - -@item verbose -Same as @code{-v}. - -@item vi -Use a @code{vi}-style line editing interface. - -@item xtrace -Same as @code{-x}. -@end table - -@item -p -Turn on privileged mode. -In this mode, the @env{$BASH_ENV} and @env{$ENV} files are not -processed, shell functions are not inherited from the environment, -and the @env{SHELLOPTS} variable, if it appears in the environment, -is ignored. -If the shell is started with the effective user (group) id not equal to the -real user (group) id, and the @code{-p} option is not supplied, these actions -are taken and the effective user id is set to the real user id. -If the @code{-p} option is supplied at startup, the effective user id is -not reset. -Turning this option off causes the effective user -and group ids to be set to the real user and group ids. - -@item -t -Exit after reading and executing one command. - -@item -u -Treat unset variables as an error when performing parameter expansion. -An error message will be written to the standard error, and a non-interactive -shell will exit. - -@item -v -Print shell input lines as they are read. - -@item -x -Print a trace of simple commands, @code{for} commands, @code{case} -commands, @code{select} commands, and arithmetic @code{for} commands -and their arguments or associated word lists after they are -expanded and before they are executed. The value of the @env{PS4} -variable is expanded and the resultant value is printed before -the command and its expanded arguments. - -@item -B -The shell will perform brace expansion (@pxref{Brace Expansion}). -This option is on by default. - -@item -C -Prevent output redirection using @samp{>}, @samp{>&}, and @samp{<>} -from overwriting existing files. - -@item -E -If set, any trap on @code{ERR} is inherited by shell functions, command -substitutions, and commands executed in a subshell environment. -The @code{ERR} trap is normally not inherited in such cases. - -@item -H -Enable @samp{!} style history substitution (@pxref{History Interaction}). -This option is on by default for interactive shells. - -@item -P -If set, do not follow symbolic links when performing commands such as -@code{cd} which change the current directory. The physical directory -is used instead. By default, Bash follows -the logical chain of directories when performing commands -which change the current directory. - -For example, if @file{/usr/sys} is a symbolic link to @file{/usr/local/sys} -then: -@example -$ cd /usr/sys; echo $PWD -/usr/sys -$ cd ..; pwd -/usr -@end example - -@noindent -If @code{set -P} is on, then: -@example -$ cd /usr/sys; echo $PWD -/usr/local/sys -$ cd ..; pwd -/usr/local -@end example - -@item -T -If set, any trap on @code{DEBUG} and @code{RETURN} are inherited by -shell functions, command substitutions, and commands executed -in a subshell environment. -The @code{DEBUG} and @code{RETURN} traps are normally not inherited -in such cases. - -@item -- -If no arguments follow this option, then the positional parameters are -unset. Otherwise, the positional parameters are set to the -@var{arguments}, even if some of them begin with a @samp{-}. - -@item - -Signal the end of options, cause all remaining @var{arguments} -to be assigned to the positional parameters. The @option{-x} -and @option{-v} options are turned off. -If there are no arguments, the positional parameters remain unchanged. -@end table - -Using @samp{+} rather than @samp{-} causes these options to be -turned off. The options can also be used upon invocation of the -shell. The current set of options may be found in @code{$-}. - -The remaining N @var{arguments} are positional parameters and are -assigned, in order, to @code{$1}, @code{$2}, @dots{} @code{$N}. -The special parameter @code{#} is set to N. - -The return status is always zero unless an invalid option is supplied. -@end table - -@node The Shopt Builtin -@subsection The Shopt Builtin - -This builtin allows you to change additional shell optional behavior. - -@table @code - -@item shopt -@btindex shopt -@example -shopt [-pqsu] [-o] [@var{optname} @dots{}] -@end example -Toggle the values of variables controlling optional shell behavior. -With no options, or with the @option{-p} option, a list of all settable -options is displayed, with an indication of whether or not each is set. -The @option{-p} option causes output to be displayed in a form that -may be reused as input. -Other options have the following meanings: - -@table @code -@item -s -Enable (set) each @var{optname}. - -@item -u -Disable (unset) each @var{optname}. - -@item -q -Suppresses normal output; the return status -indicates whether the @var{optname} is set or unset. -If multiple @var{optname} arguments are given with @option{-q}, -the return status is zero if all @var{optnames} are enabled; -non-zero otherwise. - -@item -o -Restricts the values of -@var{optname} to be those defined for the @option{-o} option to the -@code{set} builtin (@pxref{The Set Builtin}). -@end table - -If either @option{-s} or @option{-u} -is used with no @var{optname} arguments, the display is limited to -those options which are set or unset, respectively. - -Unless otherwise noted, the @code{shopt} options are disabled (off) -by default. - -The return status when listing options is zero if all @var{optnames} -are enabled, non-zero otherwise. When setting or unsetting options, -the return status is zero unless an @var{optname} is not a valid shell -option. - -The list of @code{shopt} options is: -@table @code - -@item autocd -If set, a command name that is the name of a directory is executed as if -it were the argument to the @code{cd} command. -This option is only used by interactive shells. - -@item cdable_vars -If this is set, an argument to the @code{cd} builtin command that -is not a directory is assumed to be the name of a variable whose -value is the directory to change to. - -@item cdspell -If set, minor errors in the spelling of a directory component in a -@code{cd} command will be corrected. -The errors checked for are transposed characters, -a missing character, and a character too many. -If a correction is found, the corrected path is printed, -and the command proceeds. -This option is only used by interactive shells. - -@item checkhash -If this is set, Bash checks that a command found in the hash -table exists before trying to execute it. If a hashed command no -longer exists, a normal path search is performed. - -@item checkjobs -If set, Bash lists the status of any stopped and running jobs before -exiting an interactive shell. If any jobs are running, this causes -the exit to be deferred until a second exit is attempted without an -intervening command (@pxref{Job Control}). -The shell always postpones exiting if any jobs are stopped. - -@item checkwinsize -If set, Bash checks the window size after each command -and, if necessary, updates the values of -@env{LINES} and @env{COLUMNS}. - -@item cmdhist -If set, Bash -attempts to save all lines of a multiple-line -command in the same history entry. This allows -easy re-editing of multi-line commands. - -@item dotglob -If set, Bash includes filenames beginning with a `.' in -the results of filename expansion. - -@item execfail -If this is set, a non-interactive shell will not exit if -it cannot execute the file specified as an argument to the @code{exec} -builtin command. An interactive shell does not exit if @code{exec} -fails. - -@item expand_aliases -If set, aliases are expanded as described below under Aliases, -@ref{Aliases}. -This option is enabled by default for interactive shells. - -@item extdebug -If set, behavior intended for use by debuggers is enabled: - -@enumerate -@item -The @option{-F} option to the @code{declare} builtin (@pxref{Bash Builtins}) -displays the source file name and line number corresponding to each function -name supplied as an argument. - -@item -If the command run by the @code{DEBUG} trap returns a non-zero value, the -next command is skipped and not executed. - -@item -If the command run by the @code{DEBUG} trap returns a value of 2, and the -shell is executing in a subroutine (a shell function or a shell script -executed by the @code{.} or @code{source} builtins), a call to -@code{return} is simulated. - -@item -@code{BASH_ARGC} and @code{BASH_ARGV} are updated as described in their -descriptions (@pxref{Bash Variables}). +@item noexec +Same as @code{-n}. -@item -Function tracing is enabled: command substitution, shell functions, and -subshells invoked with @code{( @var{command} )} inherit the -@code{DEBUG} and @code{RETURN} traps. +@item noglob +Same as @code{-f}. -@item -Error tracing is enabled: command substitution, shell functions, and -subshells invoked with @code{( @var{command} )} inherit the -@code{ERROR} trap. -@end enumerate +@item nolog +Currently ignored. -@item extglob -If set, the extended pattern matching features described above -(@pxref{Pattern Matching}) are enabled. +@item notify +Same as @code{-b}. -@item extquote -If set, @code{$'@var{string}'} and @code{$"@var{string}"} quoting is -performed within @code{$@{@var{parameter}@}} expansions -enclosed in double quotes. This option is enabled by default. +@item nounset +Same as @code{-u}. -@item failglob -If set, patterns which fail to match filenames during pathname expansion -result in an expansion error. +@item onecmd +Same as @code{-t}. -@item force_fignore -If set, the suffixes specified by the @env{FIGNORE} shell variable -cause words to be ignored when performing word completion even if -the ignored words are the only possible completions. -@xref{Bash Variables}, for a description of @env{FIGNORE}. -This option is enabled by default. +@item physical +Same as @code{-P}. -@item gnu_errfmt -If set, shell error messages are written in the standard @sc{gnu} error -message format. +@item pipefail +If set, the return value of a pipeline is the value of the last +(rightmost) command to exit with a non-zero status, or zero if all +commands in the pipeline exit successfully. +This option is disabled by default. -@item histappend -If set, the history list is appended to the file named by the value -of the @env{HISTFILE} -variable when the shell exits, rather than overwriting the file. +@item posix +Change the behavior of Bash where the default operation differs +from the @sc{posix} standard to match the standard +(@pxref{Bash POSIX Mode}). +This is intended to make Bash behave as a strict superset of that +standard. -@item histreedit -If set, and Readline -is being used, a user is given the opportunity to re-edit a -failed history substitution. +@item privileged +Same as @code{-p}. -@item histverify -If set, and Readline -is being used, the results of history substitution are not immediately -passed to the shell parser. Instead, the resulting line is loaded into -the Readline editing buffer, allowing further modification. +@item verbose +Same as @code{-v}. -@item hostcomplete -If set, and Readline is being used, Bash will attempt to perform -hostname completion when a word containing a @samp{@@} is being -completed (@pxref{Commands For Completion}). This option is enabled -by default. +@item vi +Use a @code{vi}-style line editing interface. -@item huponexit -If set, Bash will send @code{SIGHUP} to all jobs when an interactive -login shell exits (@pxref{Signals}). +@item xtrace +Same as @code{-x}. +@end table -@item interactive_comments -Allow a word beginning with @samp{#} -to cause that word and all remaining characters on that -line to be ignored in an interactive shell. -This option is enabled by default. +@item -p +Turn on privileged mode. +In this mode, the @env{$BASH_ENV} and @env{$ENV} files are not +processed, shell functions are not inherited from the environment, +and the @env{SHELLOPTS} variable, if it appears in the environment, +is ignored. +If the shell is started with the effective user (group) id not equal to the +real user (group) id, and the @code{-p} option is not supplied, these actions +are taken and the effective user id is set to the real user id. +If the @code{-p} option is supplied at startup, the effective user id is +not reset. +Turning this option off causes the effective user +and group ids to be set to the real user and group ids. -@item lithist -If enabled, and the @code{cmdhist} -option is enabled, multi-line commands are saved to the history with -embedded newlines rather than using semicolon separators where possible. +@item -t +Exit after reading and executing one command. -@item login_shell -The shell sets this option if it is started as a login shell -(@pxref{Invoking Bash}). -The value may not be changed. +@item -u +Treat unset variables as an error when performing parameter expansion. +An error message will be written to the standard error, and a non-interactive +shell will exit. -@item mailwarn -If set, and a file that Bash is checking for mail has been -accessed since the last time it was checked, the message -@code{"The mail in @var{mailfile} has been read"} is displayed. +@item -v +Print shell input lines as they are read. -@item no_empty_cmd_completion -If set, and Readline is being used, Bash will not attempt to search -the @env{PATH} for possible completions when completion is attempted -on an empty line. +@item -x +Print a trace of simple commands, @code{for} commands, @code{case} +commands, @code{select} commands, and arithmetic @code{for} commands +and their arguments or associated word lists after they are +expanded and before they are executed. The value of the @env{PS4} +variable is expanded and the resultant value is printed before +the command and its expanded arguments. -@item nocaseglob -If set, Bash matches filenames in a case-insensitive fashion when -performing filename expansion. +@item -B +The shell will perform brace expansion (@pxref{Brace Expansion}). +This option is on by default. -@item nocasematch -If set, Bash matches patterns in a case-insensitive fashion when -performing matching while executing @code{case} or @code{[[} -conditional commands. +@item -C +Prevent output redirection using @samp{>}, @samp{>&}, and @samp{<>} +from overwriting existing files. -@item nullglob -If set, Bash allows filename patterns which match no -files to expand to a null string, rather than themselves. +@item -E +If set, any trap on @code{ERR} is inherited by shell functions, command +substitutions, and commands executed in a subshell environment. +The @code{ERR} trap is normally not inherited in such cases. -@item progcomp -If set, the programmable completion facilities -(@pxref{Programmable Completion}) are enabled. -This option is enabled by default. +@item -H +Enable @samp{!} style history substitution (@pxref{History Interaction}). +This option is on by default for interactive shells. -@item promptvars -If set, prompt strings undergo -parameter expansion, command substitution, arithmetic -expansion, and quote removal after being expanded -as described below (@pxref{Printing a Prompt}). -This option is enabled by default. +@item -P +If set, do not follow symbolic links when performing commands such as +@code{cd} which change the current directory. The physical directory +is used instead. By default, Bash follows +the logical chain of directories when performing commands +which change the current directory. -@item restricted_shell -The shell sets this option if it is started in restricted mode -(@pxref{The Restricted Shell}). -The value may not be changed. -This is not reset when the startup files are executed, allowing -the startup files to discover whether or not a shell is restricted. +For example, if @file{/usr/sys} is a symbolic link to @file{/usr/local/sys} +then: +@example +$ cd /usr/sys; echo $PWD +/usr/sys +$ cd ..; pwd +/usr +@end example -@item shift_verbose -If this is set, the @code{shift} -builtin prints an error message when the shift count exceeds the -number of positional parameters. +@noindent +If @code{set -P} is on, then: +@example +$ cd /usr/sys; echo $PWD +/usr/local/sys +$ cd ..; pwd +/usr/local +@end example -@item sourcepath -If set, the @code{source} builtin uses the value of @env{PATH} -to find the directory containing the file supplied as an argument. -This option is enabled by default. +@item -T +If set, any trap on @code{DEBUG} and @code{RETURN} are inherited by +shell functions, command substitutions, and commands executed +in a subshell environment. +The @code{DEBUG} and @code{RETURN} traps are normally not inherited +in such cases. -@item xpg_echo -If set, the @code{echo} builtin expands backslash-escape sequences -by default. +@item -- +If no arguments follow this option, then the positional parameters are +unset. Otherwise, the positional parameters are set to the +@var{arguments}, even if some of them begin with a @samp{-}. +@item - +Signal the end of options, cause all remaining @var{arguments} +to be assigned to the positional parameters. The @option{-x} +and @option{-v} options are turned off. +If there are no arguments, the positional parameters remain unchanged. @end table -@noindent -The return status when listing options is zero if all @var{optnames} -are enabled, non-zero otherwise. -When setting or unsetting options, the return status is zero unless an -@var{optname} is not a valid shell option. +Using @samp{+} rather than @samp{-} causes these options to be +turned off. The options can also be used upon invocation of the +shell. The current set of options may be found in @code{$-}. + +The remaining N @var{arguments} are positional parameters and are +assigned, in order, to @code{$1}, @code{$2}, @dots{} @code{$N}. +The special parameter @code{#} is set to N. +The return status is always zero unless an invalid option is supplied. @end table @node Special Builtins @@ -4340,11 +4305,6 @@ variables for controlling the job control facilities @item BASH The full pathname used to execute the current instance of Bash. -@item BASHPID -Expands to the process id of the current Bash process. -This differs from @code{$$} under certain circumstances, such as subshells -that do not require Bash to be re-initialized. - @item BASH_ARGC An array variable whose values are the number of parameters in each frame of the current bash execution call stack. The number of @@ -4353,7 +4313,7 @@ with @code{.} or @code{source}) is at the top of the stack. When a subroutine is executed, the number of parameters passed is pushed onto @code{BASH_ARGC}. The shell sets @code{BASH_ARGC} only when in extended debugging mode -(see @ref{The Shopt Builtin} +(see @ref{Bash Builtins} for a description of the @code{extdebug} option to the @code{shopt} builtin). @@ -4364,7 +4324,7 @@ is at the top of the stack; the first parameter of the initial call is at the bottom. When a subroutine is executed, the parameters supplied are pushed onto @code{BASH_ARGV}. The shell sets @code{BASH_ARGV} only when in extended debugging mode -(see @ref{The Shopt Builtin} +(see @ref{Bash Builtins} for a description of the @code{extdebug} option to the @code{shopt} builtin). @@ -4463,23 +4423,6 @@ This variable is available only in shell functions and external commands invoked by the programmable completion facilities (@pxref{Programmable Completion}). -@item COMP_TYPE -Set to an integer value corresponding to the type of completion attempted -that caused a completion function to be called: -@var{TAB}, for normal completion, -@samp{?}, for listing completions after successive tabs, -@samp{!}, for listing alternatives on partial word completion, -@samp{@@}, to list completions if the word is not unmodified, -or -@samp{%}, for menu completion. -This variable is available only in shell functions and external -commands invoked by the -programmable completion facilities (@pxref{Programmable Completion}). - -@item COMP_KEY -The key (or final key of a key sequence) used to invoke the current -completion function. - @item COMP_WORDBREAKS The set of characters that the Readline library treats as word separators when performing word completion. @@ -4489,8 +4432,6 @@ even if it is subsequently reset. @item COMP_WORDS An array variable consisting of the individual words in the current command line. -The words are split on shell metacharacters as the shell parser would -separate them. This variable is available only in shell functions invoked by the programmable completion facilities (@pxref{Programmable Completion}). @@ -4536,7 +4477,7 @@ 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 bottom-most element is @code{"main"}. +The bottom-most element is "main". This variable exists only when a shell function is executing. Assignments to @env{FUNCNAME} have no effect and return an error status. If @env{FUNCNAME} is unset, it loses its special properties, even if @@ -4602,8 +4543,7 @@ default value is @file{~/.bash_history}. @item 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. +necessary, to contain no more than that number of lines. The history file is also truncated to this size after writing it when an interactive shell exits. The default value is 500. @@ -4638,8 +4578,6 @@ for @var{strftime} to print the time stamp associated with each history entry displayed by the @code{history} builtin. If this variable is set, time stamps are written to the history file so they may be preserved across shell sessions. -This uses the history comment character to distinguish timestamps from -other history lines. @item HOSTFILE Contains the name of a file in the same format as @file{/etc/hosts} that @@ -4858,7 +4796,7 @@ The @code{select} command (@pxref{Conditional Constructs}) terminates if input does not arrive after @code{TMOUT} seconds when input is coming from a terminal. -In an interactive shell, the value is interpreted as +In an interative shell, the value is interpreted as the number of seconds to wait for input after issuing the primary prompt when the shell is interactive. Bash terminates after that number of seconds if input does @@ -4912,7 +4850,7 @@ line before the single-character options to be recognized. @table @code @item --debugger Arrange for the debugger profile to be executed before the shell -starts. Turns on extended debugging mode (see @ref{The Shopt Builtin} +starts. Turns on extended debugging mode (see @ref{Bash Builtins} for a description of the @code{extdebug} option to the @code{shopt} builtin) and shell function tracing (see @ref{The Set Builtin} for a description of the @code{-o functrace} @@ -4928,7 +4866,7 @@ Equivalent to @option{-D} except for the output format. Equivalent to @option{-D}. @item --help -Display a usage message on standard output and exit successfully. +Display a usage message on standard output and exit sucessfully. @item --init-file @var{filename} @itemx --rcfile @var{filename} @@ -5015,7 +4953,7 @@ This implies the @option{-n} option; no commands will be executed. @item [-+]O [@var{shopt_option}] @var{shopt_option} is one of the shell options accepted by the -@code{shopt} builtin (@pxref{The Shopt Builtin}). +@code{shopt} builtin (@pxref{Shell Builtin Commands}). If @var{shopt_option} is present, @option{-O} sets the value of that option; @option{+O} unsets it. If @var{shopt_option} is not supplied, the names and values of the shell @@ -5057,7 +4995,7 @@ in the script. If no commands are executed, the exit status is 0. @section Bash Startup Files @cindex startup files -This section describes how Bash executes its startup files. +This section describs how Bash executes its startup files. If any of the files exist but cannot be read, Bash reports an error. Tildes are expanded in file names as described above under Tilde Expansion (@pxref{Tilde Expansion}). @@ -5182,7 +5120,7 @@ the same, but the effective user id is not reset. An interactive shell is one started without non-option arguments, unless @option{-s} is -specified, without specifying the @option{-c} option, and +specified, without specifiying the @option{-c} option, and whose input and error output are both connected to terminals (as determined by @code{isatty(3)}), or one started with the @option{-i} option. @@ -5275,7 +5213,7 @@ In the absence of any traps, @code{SIGINT} is caught and handled @item An interactive login shell sends a @code{SIGHUP} to all jobs on exit -if the @code{huponexit} shell option has been enabled (@pxref{Signals}). +if the @code{hupoxexit} shell option has been enabled (@pxref{Signals}). @item The @option{-n} invocation option is ignored, and @samp{set -n} has @@ -5314,7 +5252,7 @@ Parser syntax errors will not cause the shell to exit. @item Simple spelling correction for directory arguments to the @code{cd} builtin is enabled by default (see the description of the @code{cdspell} -option to the @code{shopt} builtin in @ref{The Shopt Builtin}). +option to the @code{shopt} builtin in @ref{Bash Builtins}). @item The shell will check the value of the @env{TMOUT} variable and exit @@ -5598,7 +5536,7 @@ If arguments are needed, a shell function should be used Aliases are not expanded when the shell is not interactive, unless the @code{expand_aliases} shell option is set using -@code{shopt} (@pxref{The Shopt Builtin}). +@code{shopt} (@pxref{Bash Builtins}). The rules concerning the definition and use of aliases are somewhat confusing. Bash @@ -5796,7 +5734,7 @@ from the stack, so that only the stack is manipulated. @btindex pushd @item pushd @example -pushd [-n] [@var{+N} | @var{-N} | @var{dir} ] +pushd [@var{dir} | @var{+N} | @var{-N}] [-n] @end example Save the current directory on the top of the directory stack @@ -5804,9 +5742,6 @@ and then @code{cd} to @var{dir}. With no arguments, @code{pushd} exchanges the top two directories. @table @code -@item -n -Suppresses the normal change of directory when adding directories -to the stack, so that only the stack is manipulated. @item +@var{N} Brings the @var{N}th directory (counting from the left of the list printed by @code{dirs}, starting with zero) to the top of @@ -5815,6 +5750,9 @@ the list by rotating the stack. Brings the @var{N}th directory (counting from the right of the list printed by @code{dirs}, starting with zero) to the top of the list by rotating the stack. +@item -n +Suppresses the normal change of directory when adding directories +to the stack, so that only the stack is manipulated. @item @var{dir} Makes the current working directory be the top of the stack, and then executes the equivalent of `@code{cd} @var{dir}'. @@ -6300,13 +6238,11 @@ Bash reports such changes immediately (@pxref{The Set Builtin}). Any trap on @code{SIGCHLD} is executed for each child process that exits. -If an attempt to exit Bash is made while jobs are stopped, (or running, if -the @code{checkjobs} option is enabled -- see @ref{The Shopt Builtin}), the -shell prints a warning message, and if the @code{checkjobs} option is -enabled, lists the jobs and their statuses. +If an attempt to exit Bash is made while jobs are stopped, the +shell prints a message warning that there are stopped jobs. The @code{jobs} command may then be used to inspect their status. If a second attempt to exit is made without an intervening command, -Bash does not print another warning, and any stopped jobs are terminated. +Bash does not print another warning, and the stopped jobs are terminated. @node Job Control Builtins @section Job Control Builtins @@ -7289,7 +7225,7 @@ executed with the @code{.} or @code{source} builtins @item Bash includes the @code{shopt} builtin, for finer control of shell -optional capabilities (@pxref{The Shopt Builtin}), and allows these options +optional capabilities (@pxref{Bash Builtins}), and allows these options to be set and unset at shell invocation (@pxref{Invoking Bash}). @item @@ -7463,37 +7399,24 @@ The SVR4.2 shell behaves differently when invoked as @code{jsh} @include fdl.texi -@node Indexes -@appendix Indexes - -@menu -* Builtin Index:: Index of Bash builtin commands. -* Reserved Word Index:: Index of Bash reserved words. -* Variable Index:: Quick reference helps you find the - variable you want. -* Function Index:: Index of bindable Readline functions. -* Concept Index:: General index for concepts described in - this manual. -@end menu - @node Builtin Index -@appendixsec Index of Shell Builtin Commands +@unnumbered Index of Shell Builtin Commands @printindex bt @node Reserved Word Index -@appendixsec Index of Shell Reserved Words +@unnumbered Index of Shell Reserved Words @printindex rw @node Variable Index -@appendixsec Parameter and Variable Index +@unnumbered Parameter and Variable Index @printindex vr @node Function Index -@appendixsec Function Index +@unnumbered Function Index @printindex fn @node Concept Index -@appendixsec Concept Index +@unnumbered Concept Index @printindex cp @bye diff --git a/doc/bashref.toc b/doc/bashref.toc index 3ed87bc1e..a1d1327bb 100644 --- a/doc/bashref.toc +++ b/doc/bashref.toc @@ -34,7 +34,7 @@ \subsecentry{Word Splitting}{3}{5}{7}{22} \subsecentry{Filename Expansion}{3}{5}{8}{23} \subsubsecentry{Pattern Matching}{3}{5}{8}{1}{23} -\subsecentry{Quote Removal}{3}{5}{9}{25} +\subsecentry{Quote Removal}{3}{5}{9}{24} \secentry{Redirections}{3}{6}{25} \subsecentry{Redirecting Input}{3}{6}{1}{26} \subsecentry{Redirecting Output}{3}{6}{2}{26} @@ -56,82 +56,79 @@ \chapentry{Shell Builtin Commands}{4}{35} \secentry{Bourne Shell Builtins}{4}{1}{35} \secentry{Bash Builtin Commands}{4}{2}{41} -\secentry{Modifying Shell Behavior}{4}{3}{49} -\subsecentry{The Set Builtin}{4}{3}{1}{49} -\subsecentry{The Shopt Builtin}{4}{3}{2}{52} +\secentry{The Set Builtin}{4}{3}{53} \secentry{Special Builtins}{4}{4}{56} -\chapentry{Shell Variables}{5}{59} -\secentry{Bourne Shell Variables}{5}{1}{59} -\secentry{Bash Variables}{5}{2}{59} -\chapentry{Bash Features}{6}{69} -\secentry{Invoking Bash}{6}{1}{69} -\secentry{Bash Startup Files}{6}{2}{71} -\secentry{Interactive Shells}{6}{3}{73} -\subsecentry{What is an Interactive Shell?}{6}{3}{1}{73} -\subsecentry{Is this Shell Interactive?}{6}{3}{2}{73} -\subsecentry{Interactive Shell Behavior}{6}{3}{3}{73} -\secentry{Bash Conditional Expressions}{6}{4}{74} -\secentry{Shell Arithmetic}{6}{5}{76} -\secentry{Aliases}{6}{6}{77} -\secentry{Arrays}{6}{7}{78} -\secentry{The Directory Stack}{6}{8}{79} -\subsecentry{Directory Stack Builtins}{6}{8}{1}{79} -\secentry{Controlling the Prompt}{6}{9}{80} -\secentry{The Restricted Shell}{6}{10}{82} -\secentry{Bash POSIX Mode}{6}{11}{82} -\chapentry{Job Control}{7}{87} -\secentry{Job Control Basics}{7}{1}{87} -\secentry{Job Control Builtins}{7}{2}{88} -\secentry{Job Control Variables}{7}{3}{89} -\chapentry{Command Line Editing}{8}{91} -\secentry{Introduction to Line Editing}{8}{1}{91} -\secentry{Readline Interaction}{8}{2}{91} -\subsecentry{Readline Bare Essentials}{8}{2}{1}{91} -\subsecentry{Readline Movement Commands}{8}{2}{2}{92} -\subsecentry{Readline Killing Commands}{8}{2}{3}{92} -\subsecentry{Readline Arguments}{8}{2}{4}{93} -\subsecentry{Searching for Commands in the History}{8}{2}{5}{93} -\secentry{Readline Init File}{8}{3}{94} -\subsecentry{Readline Init File Syntax}{8}{3}{1}{94} -\subsecentry{Conditional Init Constructs}{8}{3}{2}{99} -\subsecentry{Sample Init File}{8}{3}{3}{100} -\secentry{Bindable Readline Commands}{8}{4}{103} -\subsecentry{Commands For Moving}{8}{4}{1}{103} -\subsecentry{Commands For Manipulating The History}{8}{4}{2}{103} -\subsecentry{Commands For Changing Text}{8}{4}{3}{105} -\subsecentry{Killing And Yanking}{8}{4}{4}{106} -\subsecentry{Specifying Numeric Arguments}{8}{4}{5}{107} -\subsecentry{Letting Readline Type For You}{8}{4}{6}{107} -\subsecentry{Keyboard Macros}{8}{4}{7}{108} -\subsecentry{Some Miscellaneous Commands}{8}{4}{8}{109} -\secentry{Readline vi Mode}{8}{5}{111} -\secentry{Programmable Completion}{8}{6}{111} -\secentry{Programmable Completion Builtins}{8}{7}{113} -\chapentry{Using History Interactively}{9}{117} -\secentry{Bash History Facilities}{9}{1}{117} -\secentry{Bash History Builtins}{9}{2}{117} -\secentry{History Expansion}{9}{3}{119} -\subsecentry{Event Designators}{9}{3}{1}{119} -\subsecentry{Word Designators}{9}{3}{2}{120} -\subsecentry{Modifiers}{9}{3}{3}{121} -\chapentry{Installing Bash}{10}{123} -\secentry{Basic Installation}{10}{1}{123} -\secentry{Compilers and Options}{10}{2}{123} -\secentry{Compiling For Multiple Architectures}{10}{3}{124} -\secentry{Installation Names}{10}{4}{124} -\secentry{Specifying the System Type}{10}{5}{124} -\secentry{Sharing Defaults}{10}{6}{125} -\secentry{Operation Controls}{10}{7}{125} -\secentry{Optional Features}{10}{8}{125} -\appendixentry{Reporting Bugs}{A}{131} -\appendixentry{Major Differences From The Bourne Shell}{B}{133} -\secentry{Implementation Differences From The SVR4.2 Shell}{B}{1}{137} -\appendixentry{Copying This Manual}{C}{139} -\secentry{GNU Free Documentation License}{C}{1}{139} -\subsecentry{ADDENDUM: How to use this License for your documents}{C}{1}{1}{145} -\appendixentry{Indexes}{D}{147} -\secentry{Index of Shell Builtin Commands}{D}{1}{147} -\secentry{Index of Shell Reserved Words}{D}{2}{149} -\secentry{Parameter and Variable Index}{D}{3}{149} -\secentry{Function Index}{D}{4}{151} -\secentry{Concept Index}{D}{5}{152} +\chapentry{Shell Variables}{5}{57} +\secentry{Bourne Shell Variables}{5}{1}{57} +\secentry{Bash Variables}{5}{2}{57} +\chapentry{Bash Features}{6}{67} +\secentry{Invoking Bash}{6}{1}{67} +\secentry{Bash Startup Files}{6}{2}{69} +\secentry{Interactive Shells}{6}{3}{71} +\subsecentry{What is an Interactive Shell?}{6}{3}{1}{71} +\subsecentry{Is this Shell Interactive?}{6}{3}{2}{71} +\subsecentry{Interactive Shell Behavior}{6}{3}{3}{71} +\secentry{Bash Conditional Expressions}{6}{4}{72} +\secentry{Shell Arithmetic}{6}{5}{74} +\secentry{Aliases}{6}{6}{75} +\secentry{Arrays}{6}{7}{76} +\secentry{The Directory Stack}{6}{8}{77} +\subsecentry{Directory Stack Builtins}{6}{8}{1}{77} +\secentry{Controlling the Prompt}{6}{9}{78} +\secentry{The Restricted Shell}{6}{10}{80} +\secentry{Bash POSIX Mode}{6}{11}{80} +\chapentry{Job Control}{7}{85} +\secentry{Job Control Basics}{7}{1}{85} +\secentry{Job Control Builtins}{7}{2}{86} +\secentry{Job Control Variables}{7}{3}{87} +\chapentry{Command Line Editing}{8}{89} +\secentry{Introduction to Line Editing}{8}{1}{89} +\secentry{Readline Interaction}{8}{2}{89} +\subsecentry{Readline Bare Essentials}{8}{2}{1}{89} +\subsecentry{Readline Movement Commands}{8}{2}{2}{90} +\subsecentry{Readline Killing Commands}{8}{2}{3}{90} +\subsecentry{Readline Arguments}{8}{2}{4}{91} +\subsecentry{Searching for Commands in the History}{8}{2}{5}{91} +\secentry{Readline Init File}{8}{3}{92} +\subsecentry{Readline Init File Syntax}{8}{3}{1}{92} +\subsecentry{Conditional Init Constructs}{8}{3}{2}{97} +\subsecentry{Sample Init File}{8}{3}{3}{98} +\secentry{Bindable Readline Commands}{8}{4}{101} +\subsecentry{Commands For Moving}{8}{4}{1}{101} +\subsecentry{Commands For Manipulating The History}{8}{4}{2}{101} +\subsecentry{Commands For Changing Text}{8}{4}{3}{103} +\subsecentry{Killing And Yanking}{8}{4}{4}{104} +\subsecentry{Specifying Numeric Arguments}{8}{4}{5}{105} +\subsecentry{Letting Readline Type For You}{8}{4}{6}{105} +\subsecentry{Keyboard Macros}{8}{4}{7}{106} +\subsecentry{Some Miscellaneous Commands}{8}{4}{8}{107} +\secentry{Readline vi Mode}{8}{5}{109} +\secentry{Programmable Completion}{8}{6}{109} +\secentry{Programmable Completion Builtins}{8}{7}{111} +\chapentry{Using History Interactively}{9}{115} +\secentry{Bash History Facilities}{9}{1}{115} +\secentry{Bash History Builtins}{9}{2}{115} +\secentry{History Expansion}{9}{3}{117} +\subsecentry{Event Designators}{9}{3}{1}{117} +\subsecentry{Word Designators}{9}{3}{2}{118} +\subsecentry{Modifiers}{9}{3}{3}{119} +\chapentry{Installing Bash}{10}{121} +\secentry{Basic Installation}{10}{1}{121} +\secentry{Compilers and Options}{10}{2}{121} +\secentry{Compiling For Multiple Architectures}{10}{3}{122} +\secentry{Installation Names}{10}{4}{122} +\secentry{Specifying the System Type}{10}{5}{122} +\secentry{Sharing Defaults}{10}{6}{123} +\secentry{Operation Controls}{10}{7}{123} +\secentry{Optional Features}{10}{8}{123} +\appendixentry{Reporting Bugs}{A}{129} +\appendixentry{Major Differences From The Bourne Shell}{B}{131} +\secentry{Implementation Differences From The SVR4.2 Shell}{B}{1}{135} +\appendixentry{Copying This Manual}{C}{137} +\secentry{GNU Free Documentation License}{C}{1}{137} +\subsecentry{ADDENDUM: How to use this License for your documents}{C}{1}{1}{143} +\unnumbchapentry{Index of Shell Builtin Commands}{10}{145} +\unnumbchapentry{Index of Shell Reserved Words}{10}{147} +\unnumbchapentry{Parameter and Variable Index}{10}{149} +\unnumbchapentry{Function Index}{10}{151} +\unnumbchapentry{Concept Index}{10}{153} diff --git a/doc/bashref.vr b/doc/bashref.vr index 17bddf908..daf952d3f 100644 --- a/doc/bashref.vr +++ b/doc/bashref.vr @@ -10,110 +10,107 @@ \entry{!}{16}{\code {!}} \entry{0}{16}{\code {0}} \entry{_}{16}{\code {_}} -\entry{CDPATH}{59}{\code {CDPATH}} -\entry{HOME}{59}{\code {HOME}} -\entry{IFS}{59}{\code {IFS}} -\entry{MAIL}{59}{\code {MAIL}} -\entry{MAILPATH}{59}{\code {MAILPATH}} -\entry{OPTARG}{59}{\code {OPTARG}} -\entry{OPTIND}{59}{\code {OPTIND}} -\entry{PATH}{59}{\code {PATH}} -\entry{PS1}{59}{\code {PS1}} -\entry{PS2}{59}{\code {PS2}} -\entry{BASH}{59}{\code {BASH}} -\entry{BASHPID}{60}{\code {BASHPID}} -\entry{BASH_ARGC}{60}{\code {BASH_ARGC}} -\entry{BASH_ARGV}{60}{\code {BASH_ARGV}} -\entry{BASH_COMMAND}{60}{\code {BASH_COMMAND}} -\entry{BASH_ENV}{60}{\code {BASH_ENV}} -\entry{BASH_EXECUTION_STRING}{60}{\code {BASH_EXECUTION_STRING}} -\entry{BASH_LINENO}{60}{\code {BASH_LINENO}} -\entry{BASH_REMATCH}{60}{\code {BASH_REMATCH}} -\entry{BASH_SOURCE}{60}{\code {BASH_SOURCE}} -\entry{BASH_SUBSHELL}{61}{\code {BASH_SUBSHELL}} -\entry{BASH_VERSINFO}{61}{\code {BASH_VERSINFO}} -\entry{BASH_VERSION}{61}{\code {BASH_VERSION}} -\entry{COLUMNS}{61}{\code {COLUMNS}} -\entry{COMP_CWORD}{61}{\code {COMP_CWORD}} -\entry{COMP_LINE}{61}{\code {COMP_LINE}} -\entry{COMP_POINT}{61}{\code {COMP_POINT}} -\entry{COMP_TYPE}{61}{\code {COMP_TYPE}} -\entry{COMP_KEY}{62}{\code {COMP_KEY}} -\entry{COMP_WORDBREAKS}{62}{\code {COMP_WORDBREAKS}} -\entry{COMP_WORDS}{62}{\code {COMP_WORDS}} -\entry{COMPREPLY}{62}{\code {COMPREPLY}} -\entry{DIRSTACK}{62}{\code {DIRSTACK}} -\entry{EMACS}{62}{\code {EMACS}} -\entry{EUID}{62}{\code {EUID}} -\entry{FCEDIT}{62}{\code {FCEDIT}} -\entry{FIGNORE}{62}{\code {FIGNORE}} -\entry{FUNCNAME}{62}{\code {FUNCNAME}} -\entry{GLOBIGNORE}{63}{\code {GLOBIGNORE}} -\entry{GROUPS}{63}{\code {GROUPS}} -\entry{histchars}{63}{\code {histchars}} -\entry{HISTCMD}{63}{\code {HISTCMD}} -\entry{HISTCONTROL}{63}{\code {HISTCONTROL}} -\entry{HISTFILE}{63}{\code {HISTFILE}} -\entry{HISTFILESIZE}{63}{\code {HISTFILESIZE}} -\entry{HISTIGNORE}{63}{\code {HISTIGNORE}} -\entry{HISTSIZE}{64}{\code {HISTSIZE}} -\entry{HISTTIMEFORMAT}{64}{\code {HISTTIMEFORMAT}} -\entry{HOSTFILE}{64}{\code {HOSTFILE}} -\entry{HOSTNAME}{64}{\code {HOSTNAME}} -\entry{HOSTTYPE}{64}{\code {HOSTTYPE}} -\entry{IGNOREEOF}{64}{\code {IGNOREEOF}} -\entry{INPUTRC}{64}{\code {INPUTRC}} -\entry{LANG}{64}{\code {LANG}} -\entry{LC_ALL}{64}{\code {LC_ALL}} -\entry{LC_COLLATE}{65}{\code {LC_COLLATE}} -\entry{LC_CTYPE}{65}{\code {LC_CTYPE}} -\entry{LC_MESSAGES}{65}{\code {LC_MESSAGES}} -\entry{LC_NUMERIC}{65}{\code {LC_NUMERIC}} -\entry{LINENO}{65}{\code {LINENO}} -\entry{LINES}{65}{\code {LINES}} -\entry{MACHTYPE}{65}{\code {MACHTYPE}} -\entry{MAILCHECK}{65}{\code {MAILCHECK}} -\entry{OLDPWD}{65}{\code {OLDPWD}} -\entry{OPTERR}{65}{\code {OPTERR}} -\entry{OSTYPE}{65}{\code {OSTYPE}} -\entry{PIPESTATUS}{65}{\code {PIPESTATUS}} -\entry{POSIXLY_CORRECT}{65}{\code {POSIXLY_CORRECT}} -\entry{PPID}{66}{\code {PPID}} -\entry{PROMPT_COMMAND}{66}{\code {PROMPT_COMMAND}} -\entry{PS3}{66}{\code {PS3}} -\entry{PS4}{66}{\code {PS4}} -\entry{PWD}{66}{\code {PWD}} -\entry{RANDOM}{66}{\code {RANDOM}} -\entry{REPLY}{66}{\code {REPLY}} -\entry{SECONDS}{66}{\code {SECONDS}} -\entry{SHELL}{66}{\code {SHELL}} -\entry{SHELLOPTS}{66}{\code {SHELLOPTS}} -\entry{SHLVL}{66}{\code {SHLVL}} -\entry{TIMEFORMAT}{66}{\code {TIMEFORMAT}} -\entry{TMOUT}{67}{\code {TMOUT}} -\entry{TMPDIR}{67}{\code {TMPDIR}} -\entry{UID}{67}{\code {UID}} -\entry{auto_resume}{90}{\code {auto_resume}} -\entry{bell-style}{95}{\code {bell-style}} -\entry{bind-tty-special-chars}{95}{\code {bind-tty-special-chars}} -\entry{comment-begin}{95}{\code {comment-begin}} -\entry{completion-query-items}{95}{\code {completion-query-items}} -\entry{convert-meta}{96}{\code {convert-meta}} -\entry{disable-completion}{96}{\code {disable-completion}} -\entry{editing-mode}{96}{\code {editing-mode}} -\entry{enable-keypad}{96}{\code {enable-keypad}} -\entry{expand-tilde}{96}{\code {expand-tilde}} -\entry{history-preserve-point}{96}{\code {history-preserve-point}} -\entry{horizontal-scroll-mode}{96}{\code {horizontal-scroll-mode}} -\entry{input-meta}{96}{\code {input-meta}} -\entry{meta-flag}{96}{\code {meta-flag}} -\entry{isearch-terminators}{96}{\code {isearch-terminators}} -\entry{keymap}{96}{\code {keymap}} -\entry{mark-modified-lines}{97}{\code {mark-modified-lines}} -\entry{mark-symlinked-directories}{97}{\code {mark-symlinked-directories}} -\entry{match-hidden-files}{97}{\code {match-hidden-files}} -\entry{output-meta}{97}{\code {output-meta}} -\entry{page-completions}{97}{\code {page-completions}} -\entry{show-all-if-ambiguous}{97}{\code {show-all-if-ambiguous}} -\entry{show-all-if-unmodified}{97}{\code {show-all-if-unmodified}} -\entry{visible-stats}{98}{\code {visible-stats}} +\entry{CDPATH}{57}{\code {CDPATH}} +\entry{HOME}{57}{\code {HOME}} +\entry{IFS}{57}{\code {IFS}} +\entry{MAIL}{57}{\code {MAIL}} +\entry{MAILPATH}{57}{\code {MAILPATH}} +\entry{OPTARG}{57}{\code {OPTARG}} +\entry{OPTIND}{57}{\code {OPTIND}} +\entry{PATH}{57}{\code {PATH}} +\entry{PS1}{57}{\code {PS1}} +\entry{PS2}{57}{\code {PS2}} +\entry{BASH}{57}{\code {BASH}} +\entry{BASH_ARGC}{58}{\code {BASH_ARGC}} +\entry{BASH_ARGV}{58}{\code {BASH_ARGV}} +\entry{BASH_COMMAND}{58}{\code {BASH_COMMAND}} +\entry{BASH_ENV}{58}{\code {BASH_ENV}} +\entry{BASH_EXECUTION_STRING}{58}{\code {BASH_EXECUTION_STRING}} +\entry{BASH_LINENO}{58}{\code {BASH_LINENO}} +\entry{BASH_REMATCH}{58}{\code {BASH_REMATCH}} +\entry{BASH_SOURCE}{58}{\code {BASH_SOURCE}} +\entry{BASH_SUBSHELL}{58}{\code {BASH_SUBSHELL}} +\entry{BASH_VERSINFO}{58}{\code {BASH_VERSINFO}} +\entry{BASH_VERSION}{59}{\code {BASH_VERSION}} +\entry{COLUMNS}{59}{\code {COLUMNS}} +\entry{COMP_CWORD}{59}{\code {COMP_CWORD}} +\entry{COMP_LINE}{59}{\code {COMP_LINE}} +\entry{COMP_POINT}{59}{\code {COMP_POINT}} +\entry{COMP_WORDBREAKS}{59}{\code {COMP_WORDBREAKS}} +\entry{COMP_WORDS}{59}{\code {COMP_WORDS}} +\entry{COMPREPLY}{60}{\code {COMPREPLY}} +\entry{DIRSTACK}{60}{\code {DIRSTACK}} +\entry{EMACS}{60}{\code {EMACS}} +\entry{EUID}{60}{\code {EUID}} +\entry{FCEDIT}{60}{\code {FCEDIT}} +\entry{FIGNORE}{60}{\code {FIGNORE}} +\entry{FUNCNAME}{60}{\code {FUNCNAME}} +\entry{GLOBIGNORE}{60}{\code {GLOBIGNORE}} +\entry{GROUPS}{60}{\code {GROUPS}} +\entry{histchars}{60}{\code {histchars}} +\entry{HISTCMD}{61}{\code {HISTCMD}} +\entry{HISTCONTROL}{61}{\code {HISTCONTROL}} +\entry{HISTFILE}{61}{\code {HISTFILE}} +\entry{HISTFILESIZE}{61}{\code {HISTFILESIZE}} +\entry{HISTIGNORE}{61}{\code {HISTIGNORE}} +\entry{HISTSIZE}{61}{\code {HISTSIZE}} +\entry{HISTTIMEFORMAT}{61}{\code {HISTTIMEFORMAT}} +\entry{HOSTFILE}{62}{\code {HOSTFILE}} +\entry{HOSTNAME}{62}{\code {HOSTNAME}} +\entry{HOSTTYPE}{62}{\code {HOSTTYPE}} +\entry{IGNOREEOF}{62}{\code {IGNOREEOF}} +\entry{INPUTRC}{62}{\code {INPUTRC}} +\entry{LANG}{62}{\code {LANG}} +\entry{LC_ALL}{62}{\code {LC_ALL}} +\entry{LC_COLLATE}{62}{\code {LC_COLLATE}} +\entry{LC_CTYPE}{62}{\code {LC_CTYPE}} +\entry{LC_MESSAGES}{62}{\code {LC_MESSAGES}} +\entry{LC_NUMERIC}{62}{\code {LC_NUMERIC}} +\entry{LINENO}{62}{\code {LINENO}} +\entry{LINES}{63}{\code {LINES}} +\entry{MACHTYPE}{63}{\code {MACHTYPE}} +\entry{MAILCHECK}{63}{\code {MAILCHECK}} +\entry{OLDPWD}{63}{\code {OLDPWD}} +\entry{OPTERR}{63}{\code {OPTERR}} +\entry{OSTYPE}{63}{\code {OSTYPE}} +\entry{PIPESTATUS}{63}{\code {PIPESTATUS}} +\entry{POSIXLY_CORRECT}{63}{\code {POSIXLY_CORRECT}} +\entry{PPID}{63}{\code {PPID}} +\entry{PROMPT_COMMAND}{63}{\code {PROMPT_COMMAND}} +\entry{PS3}{63}{\code {PS3}} +\entry{PS4}{63}{\code {PS4}} +\entry{PWD}{63}{\code {PWD}} +\entry{RANDOM}{63}{\code {RANDOM}} +\entry{REPLY}{63}{\code {REPLY}} +\entry{SECONDS}{64}{\code {SECONDS}} +\entry{SHELL}{64}{\code {SHELL}} +\entry{SHELLOPTS}{64}{\code {SHELLOPTS}} +\entry{SHLVL}{64}{\code {SHLVL}} +\entry{TIMEFORMAT}{64}{\code {TIMEFORMAT}} +\entry{TMOUT}{64}{\code {TMOUT}} +\entry{TMPDIR}{65}{\code {TMPDIR}} +\entry{UID}{65}{\code {UID}} +\entry{auto_resume}{88}{\code {auto_resume}} +\entry{bell-style}{93}{\code {bell-style}} +\entry{bind-tty-special-chars}{93}{\code {bind-tty-special-chars}} +\entry{comment-begin}{93}{\code {comment-begin}} +\entry{completion-query-items}{93}{\code {completion-query-items}} +\entry{convert-meta}{94}{\code {convert-meta}} +\entry{disable-completion}{94}{\code {disable-completion}} +\entry{editing-mode}{94}{\code {editing-mode}} +\entry{enable-keypad}{94}{\code {enable-keypad}} +\entry{expand-tilde}{94}{\code {expand-tilde}} +\entry{history-preserve-point}{94}{\code {history-preserve-point}} +\entry{horizontal-scroll-mode}{94}{\code {horizontal-scroll-mode}} +\entry{input-meta}{94}{\code {input-meta}} +\entry{meta-flag}{94}{\code {meta-flag}} +\entry{isearch-terminators}{94}{\code {isearch-terminators}} +\entry{keymap}{94}{\code {keymap}} +\entry{mark-modified-lines}{95}{\code {mark-modified-lines}} +\entry{mark-symlinked-directories}{95}{\code {mark-symlinked-directories}} +\entry{match-hidden-files}{95}{\code {match-hidden-files}} +\entry{output-meta}{95}{\code {output-meta}} +\entry{page-completions}{95}{\code {page-completions}} +\entry{show-all-if-ambiguous}{95}{\code {show-all-if-ambiguous}} +\entry{show-all-if-unmodified}{95}{\code {show-all-if-unmodified}} +\entry{visible-stats}{96}{\code {visible-stats}} diff --git a/doc/bashref.vrs b/doc/bashref.vrs index 245001220..f913e9082 100644 --- a/doc/bashref.vrs +++ b/doc/bashref.vrs @@ -17,130 +17,127 @@ \initial {0} \entry {\code {0}}{16} \initial {A} -\entry {\code {auto_resume}}{90} +\entry {\code {auto_resume}}{88} \initial {B} -\entry {\code {BASH}}{59} -\entry {\code {BASH_ARGC}}{60} -\entry {\code {BASH_ARGV}}{60} -\entry {\code {BASH_COMMAND}}{60} -\entry {\code {BASH_ENV}}{60} -\entry {\code {BASH_EXECUTION_STRING}}{60} -\entry {\code {BASH_LINENO}}{60} -\entry {\code {BASH_REMATCH}}{60} -\entry {\code {BASH_SOURCE}}{60} -\entry {\code {BASH_SUBSHELL}}{61} -\entry {\code {BASH_VERSINFO}}{61} -\entry {\code {BASH_VERSION}}{61} -\entry {\code {BASHPID}}{60} -\entry {\code {bell-style}}{95} -\entry {\code {bind-tty-special-chars}}{95} +\entry {\code {BASH}}{57} +\entry {\code {BASH_ARGC}}{58} +\entry {\code {BASH_ARGV}}{58} +\entry {\code {BASH_COMMAND}}{58} +\entry {\code {BASH_ENV}}{58} +\entry {\code {BASH_EXECUTION_STRING}}{58} +\entry {\code {BASH_LINENO}}{58} +\entry {\code {BASH_REMATCH}}{58} +\entry {\code {BASH_SOURCE}}{58} +\entry {\code {BASH_SUBSHELL}}{58} +\entry {\code {BASH_VERSINFO}}{58} +\entry {\code {BASH_VERSION}}{59} +\entry {\code {bell-style}}{93} +\entry {\code {bind-tty-special-chars}}{93} \initial {C} -\entry {\code {CDPATH}}{59} -\entry {\code {COLUMNS}}{61} -\entry {\code {comment-begin}}{95} -\entry {\code {COMP_CWORD}}{61} -\entry {\code {COMP_KEY}}{62} -\entry {\code {COMP_LINE}}{61} -\entry {\code {COMP_POINT}}{61} -\entry {\code {COMP_TYPE}}{61} -\entry {\code {COMP_WORDBREAKS}}{62} -\entry {\code {COMP_WORDS}}{62} -\entry {\code {completion-query-items}}{95} -\entry {\code {COMPREPLY}}{62} -\entry {\code {convert-meta}}{96} +\entry {\code {CDPATH}}{57} +\entry {\code {COLUMNS}}{59} +\entry {\code {comment-begin}}{93} +\entry {\code {COMP_CWORD}}{59} +\entry {\code {COMP_LINE}}{59} +\entry {\code {COMP_POINT}}{59} +\entry {\code {COMP_WORDBREAKS}}{59} +\entry {\code {COMP_WORDS}}{59} +\entry {\code {completion-query-items}}{93} +\entry {\code {COMPREPLY}}{60} +\entry {\code {convert-meta}}{94} \initial {D} -\entry {\code {DIRSTACK}}{62} -\entry {\code {disable-completion}}{96} +\entry {\code {DIRSTACK}}{60} +\entry {\code {disable-completion}}{94} \initial {E} -\entry {\code {editing-mode}}{96} -\entry {\code {EMACS}}{62} -\entry {\code {enable-keypad}}{96} -\entry {\code {EUID}}{62} -\entry {\code {expand-tilde}}{96} +\entry {\code {editing-mode}}{94} +\entry {\code {EMACS}}{60} +\entry {\code {enable-keypad}}{94} +\entry {\code {EUID}}{60} +\entry {\code {expand-tilde}}{94} \initial {F} -\entry {\code {FCEDIT}}{62} -\entry {\code {FIGNORE}}{62} -\entry {\code {FUNCNAME}}{62} +\entry {\code {FCEDIT}}{60} +\entry {\code {FIGNORE}}{60} +\entry {\code {FUNCNAME}}{60} \initial {G} -\entry {\code {GLOBIGNORE}}{63} -\entry {\code {GROUPS}}{63} +\entry {\code {GLOBIGNORE}}{60} +\entry {\code {GROUPS}}{60} \initial {H} -\entry {\code {histchars}}{63} -\entry {\code {HISTCMD}}{63} -\entry {\code {HISTCONTROL}}{63} -\entry {\code {HISTFILE}}{63} -\entry {\code {HISTFILESIZE}}{63} -\entry {\code {HISTIGNORE}}{63} -\entry {\code {history-preserve-point}}{96} -\entry {\code {HISTSIZE}}{64} -\entry {\code {HISTTIMEFORMAT}}{64} -\entry {\code {HOME}}{59} -\entry {\code {horizontal-scroll-mode}}{96} -\entry {\code {HOSTFILE}}{64} -\entry {\code {HOSTNAME}}{64} -\entry {\code {HOSTTYPE}}{64} +\entry {\code {histchars}}{60} +\entry {\code {HISTCMD}}{61} +\entry {\code {HISTCONTROL}}{61} +\entry {\code {HISTFILE}}{61} +\entry {\code {HISTFILESIZE}}{61} +\entry {\code {HISTIGNORE}}{61} +\entry {\code {history-preserve-point}}{94} +\entry {\code {HISTSIZE}}{61} +\entry {\code {HISTTIMEFORMAT}}{61} +\entry {\code {HOME}}{57} +\entry {\code {horizontal-scroll-mode}}{94} +\entry {\code {HOSTFILE}}{62} +\entry {\code {HOSTNAME}}{62} +\entry {\code {HOSTTYPE}}{62} \initial {I} -\entry {\code {IFS}}{59} -\entry {\code {IGNOREEOF}}{64} -\entry {\code {input-meta}}{96} -\entry {\code {INPUTRC}}{64} -\entry {\code {isearch-terminators}}{96} +\entry {\code {IFS}}{57} +\entry {\code {IGNOREEOF}}{62} +\entry {\code {input-meta}}{94} +\entry {\code {INPUTRC}}{62} +\entry {\code {isearch-terminators}}{94} \initial {K} -\entry {\code {keymap}}{96} +\entry {\code {keymap}}{94} \initial {L} -\entry {\code {LANG}}{64} -\entry {\code {LC_ALL}}{64} -\entry {\code {LC_COLLATE}}{65} -\entry {\code {LC_CTYPE}}{65} -\entry {\code {LC_MESSAGES}}{7, 65} -\entry {\code {LC_NUMERIC}}{65} -\entry {\code {LINENO}}{65} -\entry {\code {LINES}}{65} +\entry {\code {LANG}}{62} +\entry {\code {LC_ALL}}{62} +\entry {\code {LC_COLLATE}}{62} +\entry {\code {LC_CTYPE}}{62} +\entry {\code {LC_MESSAGES}}{7, 62} +\entry {\code {LC_NUMERIC}}{62} +\entry {\code {LINENO}}{62} +\entry {\code {LINES}}{63} \initial {M} -\entry {\code {MACHTYPE}}{65} -\entry {\code {MAIL}}{59} -\entry {\code {MAILCHECK}}{65} -\entry {\code {MAILPATH}}{59} -\entry {\code {mark-modified-lines}}{97} -\entry {\code {mark-symlinked-directories}}{97} -\entry {\code {match-hidden-files}}{97} -\entry {\code {meta-flag}}{96} +\entry {\code {MACHTYPE}}{63} +\entry {\code {MAIL}}{57} +\entry {\code {MAILCHECK}}{63} +\entry {\code {MAILPATH}}{57} +\entry {\code {mark-modified-lines}}{95} +\entry {\code {mark-symlinked-directories}}{95} +\entry {\code {match-hidden-files}}{95} +\entry {\code {meta-flag}}{94} \initial {O} -\entry {\code {OLDPWD}}{65} -\entry {\code {OPTARG}}{59} -\entry {\code {OPTERR}}{65} -\entry {\code {OPTIND}}{59} -\entry {\code {OSTYPE}}{65} -\entry {\code {output-meta}}{97} +\entry {\code {OLDPWD}}{63} +\entry {\code {OPTARG}}{57} +\entry {\code {OPTERR}}{63} +\entry {\code {OPTIND}}{57} +\entry {\code {OSTYPE}}{63} +\entry {\code {output-meta}}{95} \initial {P} -\entry {\code {page-completions}}{97} -\entry {\code {PATH}}{59} -\entry {\code {PIPESTATUS}}{65} -\entry {\code {POSIXLY_CORRECT}}{65} -\entry {\code {PPID}}{66} -\entry {\code {PROMPT_COMMAND}}{66} -\entry {\code {PS1}}{59} -\entry {\code {PS2}}{59} -\entry {\code {PS3}}{66} -\entry {\code {PS4}}{66} -\entry {\code {PWD}}{66} +\entry {\code {page-completions}}{95} +\entry {\code {PATH}}{57} +\entry {\code {PIPESTATUS}}{63} +\entry {\code {POSIXLY_CORRECT}}{63} +\entry {\code {PPID}}{63} +\entry {\code {PROMPT_COMMAND}}{63} +\entry {\code {PS1}}{57} +\entry {\code {PS2}}{57} +\entry {\code {PS3}}{63} +\entry {\code {PS4}}{63} +\entry {\code {PWD}}{63} \initial {R} -\entry {\code {RANDOM}}{66} -\entry {\code {REPLY}}{66} +\entry {\code {RANDOM}}{63} +\entry {\code {REPLY}}{63} \initial {S} -\entry {\code {SECONDS}}{66} -\entry {\code {SHELL}}{66} -\entry {\code {SHELLOPTS}}{66} -\entry {\code {SHLVL}}{66} -\entry {\code {show-all-if-ambiguous}}{97} -\entry {\code {show-all-if-unmodified}}{97} +\entry {\code {SECONDS}}{64} +\entry {\code {SHELL}}{64} +\entry {\code {SHELLOPTS}}{64} +\entry {\code {SHLVL}}{64} +\entry {\code {show-all-if-ambiguous}}{95} +\entry {\code {show-all-if-unmodified}}{95} \initial {T} \entry {\code {TEXTDOMAIN}}{7} \entry {\code {TEXTDOMAINDIR}}{7} -\entry {\code {TIMEFORMAT}}{66} -\entry {\code {TMOUT}}{67} -\entry {\code {TMPDIR}}{67} +\entry {\code {TIMEFORMAT}}{64} +\entry {\code {TMOUT}}{64} +\entry {\code {TMPDIR}}{65} \initial {U} -\entry {\code {UID}}{67} +\entry {\code {UID}}{65} \initial {V} -\entry {\code {visible-stats}}{98} +\entry {\code {visible-stats}}{96} diff --git a/doc/builtins.0 b/doc/builtins.0 index 0e0a3e83c..651938896 100644 --- a/doc/builtins.0 +++ b/doc/builtins.0 @@ -79,14 +79,14 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS --pp Display rreeaaddlliinnee function names and bindings in such a way that they can be re-read. --PP List current rreeaaddlliinnee function names and bindings. - --ss Display rreeaaddlliinnee key sequences bound to macros and the - strings they output in such a way that they can be re- - read. - --SS Display rreeaaddlliinnee key sequences bound to macros and the - strings they output. - --vv Display rreeaaddlliinnee variable names and values in such a way + --vv Display rreeaaddlliinnee variable names and values in such a way that they can be re-read. --VV List current rreeaaddlliinnee variable names and values. + --ss Display rreeaaddlliinnee key sequences bound to macros and the + strings they output in such a way that they can be re- + read. + --SS Display rreeaaddlliinnee key sequences bound to macros and the + strings they output. --ff _f_i_l_e_n_a_m_e Read key bindings from _f_i_l_e_n_a_m_e. --qq _f_u_n_c_t_i_o_n @@ -179,8 +179,8 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS or no matches were generated. ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--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 _._._.] + _w_o_r_d_l_i_s_t] [--PP _p_r_e_f_i_x] [--SS _s_u_f_f_i_x] + [--XX _f_i_l_t_e_r_p_a_t] [--FF _f_u_n_c_t_i_o_n] [--CC _c_o_m_m_a_n_d] _n_a_m_e [_n_a_m_e _._._.] ccoommpplleettee --pprr [_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 @@ -338,67 +338,64 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS environment. 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 wwiillll nnoott rreemmoovvee tthhee rreeaaddoonnllyy aattttrriibbuuttee.. WWhheenn uusseedd - iinn aa ffuunnccttiioonn,, mmaakkeess eeaacchh _n_a_m_e llooccaall,, aass wwiitthh tthhee llooccaall command. - If a variable name is followed by =_v_a_l_u_e, the value of the vari- - able is set to _v_a_l_u_e. The return value is 0 unless an invalid - option is encountered, an attempt is made to define a function - using ``-f foo=bar'', an attempt is made to assign a value to a - readonly variable, an attempt is made to assign a value to an - array 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 readonly status for a read- - only variable, an attempt is made to turn off array status for - an array variable, or an attempt is made to display a non-exis- - tent function with --ff. - - ddiirrss [[++_n]] [[--_n]] [[--ccppllvv]] - 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 + the exception that ++aa may not be used to destroy an array vari- + able. When used in a function, makes each _n_a_m_e local, as with + the llooccaall command. If a variable name is followed by =_v_a_l_u_e, + the value of the variable is set to _v_a_l_u_e. The return value is + 0 unless an invalid option is encountered, an attempt is made to + define a function using ``-f foo=bar'', an attempt is made to + assign a value to a readonly variable, an attempt is made to + assign a value to an array 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 + --_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 + --ll Produces a longer listing; 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- + --vv Print the directory stack with one entry per line, pre- fixing each entry with its index in the stack. - The return value is 0 unless an invalid option is supplied or _n + 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 nnoorr --rr - iiss ssuupppplliieedd,, tthhee sshheellll''ss nnoottiioonn ooff tthhee _c_u_r_r_e_n_t _j_o_b iiss uusseedd.. IIff - tthhee --hh ooppttiioonn iiss ggiivveenn,, eeaacchh _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, each _j_o_b_s_p_e_c is removed from the table of + active jobs. 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 + 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. eecchhoo [--nneeEE] [_a_r_g ...] - Output the _a_r_gs, separated by spaces, followed by a newline. + 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 + 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: \\aa alert (bell) \\bb backspace @@ -410,12 +407,14 @@ BBAASSHH 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) + \\_n_n_n the eight-bit character whose value is the octal value + _n_n_n (one to three octal digits) \\xx_H_H the eight-bit character whose value is the hexadecimal value _H_H (one or two hex digits) - eennaabbllee [--aa] [--ddnnppss] [--ff _f_i_l_e_n_a_m_e] [_n_a_m_e ...] + eennaabbllee [--aaddnnppss] [--ff _f_i_l_e_n_a_m_e] [_n_a_m_e ...] 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 @@ -446,150 +445,150 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS 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 - _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 - 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 - 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. + ning of the zeroth arg 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 as the + zeroth argument to the executed command. If _c_o_m_m_a_n_d cannot 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 file can- + not be executed. If _c_o_m_m_a_n_d is not specified, any redirections + take effect in the current shell, and the return status 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 + 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. - ffcc [--ee _e_n_a_m_e] [--llnnrr] [_f_i_r_s_t] [_l_a_s_t] + ffcc [--ee _e_n_a_m_e] [--nnllrr] [_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 + 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 + 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 + ified it is set to the previous command 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 - is given, the commands are listed on standard output. Other- - wise, the editor given by _e_n_a_m_e is invoked on a file containing - those commands. If _e_n_a_m_e is not given, the value of the FFCCEEDDIITT - variable is used, and the value of EEDDIITTOORR if FFCCEEDDIITT is not set. - If neither variable is set, is used. When editing is complete, + The --nn option suppresses the command numbers when listing. The + --rr option reverses the order of the commands. If the --ll option + is given, the commands are listed on standard output. Other- + wise, the editor given by _e_n_a_m_e is invoked on a file containing + those commands. If _e_n_a_m_e is not given, the value of the FFCCEEDDIITT + variable is used, and the value of EEDDIITTOORR if FFCCEEDDIITT is not set. + If neither variable is set, is used. When editing is complete, 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 + 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. - 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 - lines out of range. If the --ee option is supplied, the return + 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 + lines out of range. If the --ee option is supplied, the return value is the value of the last command executed or failure if an error occurs with the temporary file of commands. If the second - form is used, the return status is that of the command re-exe- - cuted, unless _c_m_d does not specify a valid history line, in + form is used, the return status is that of the command re-exe- + cuted, unless _c_m_d does not specify a valid history line, in which case ffcc returns failure. ffgg [_j_o_b_s_p_e_c] - Resume _j_o_b_s_p_e_c in the foreground, and make it the current job. + Resume _j_o_b_s_p_e_c in the foreground, and make it the current job. If _j_o_b_s_p_e_c is not present, the shell's notion of the _c_u_r_r_e_n_t _j_o_b - is used. The return value is that of the command placed into - the foreground, or failure if run when job control is disabled + is used. The return value is that of the command placed into + the foreground, or failure if run when job control is disabled or, when run with job control enabled, if _j_o_b_s_p_e_c does not spec- - ify a valid job or _j_o_b_s_p_e_c specifies a job that was started + ify a valid job or _j_o_b_s_p_e_c specifies a job that was started without job control. ggeettooppttss _o_p_t_s_t_r_i_n_g _n_a_m_e [_a_r_g_s] - ggeettooppttss is used by shell procedures to parse positional parame- - ters. _o_p_t_s_t_r_i_n_g contains the option characters to be recog- - nized; if a character is followed by a colon, the option is - expected to have an argument, which should be separated from it - by white space. The colon and question mark characters may not - be used as option characters. Each time it is invoked, ggeettooppttss - places the next option in the shell variable _n_a_m_e, initializing + ggeettooppttss is used by shell procedures to parse positional parame- + ters. _o_p_t_s_t_r_i_n_g contains the option characters to be recog- + nized; if a character is followed by a colon, the option is + expected to have an argument, which should be separated from it + by white space. The colon and question mark characters may not + be used as option characters. Each time it is invoked, ggeettooppttss + places the next option in the shell variable _n_a_m_e, initializing _n_a_m_e if it does not exist, and the index of the next argument to be processed into the variable OOPPTTIINNDD. OOPPTTIINNDD is initialized to - 1 each time the shell or a shell script is invoked. When an - option requires an argument, ggeettooppttss places that argument into - the variable OOPPTTAARRGG. The shell does not reset OOPPTTIINNDD automati- - cally; it must be manually reset between multiple calls to + 1 each time the shell or a shell script is invoked. When an + option requires an argument, ggeettooppttss places that argument into + the variable OOPPTTAARRGG. The shell does not reset OOPPTTIINNDD automati- + cally; it must be manually reset between multiple calls to ggeettooppttss within the same shell invocation if a new set of parame- ters is to be used. - When the end of options is encountered, ggeettooppttss exits with a - return value greater than zero. OOPPTTIINNDD is set to the index of + When the end of options is encountered, ggeettooppttss exits with a + return value greater than zero. OOPPTTIINNDD is set to the index of the first non-option argument, and nnaammee is set to ?. - ggeettooppttss normally parses the positional parameters, but if more + ggeettooppttss normally parses the positional parameters, but if more arguments are given in _a_r_g_s, ggeettooppttss parses those instead. - 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 - options or missing option arguments are encountered. If the - variable OOPPTTEERRRR is set to 0, no error messages will be dis- + 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 + 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. If an invalid option is seen, ggeettooppttss places ? into _n_a_m_e and, if - not silent, prints an error message and unsets OOPPTTAARRGG. If - ggeettooppttss is silent, the option character found is placed in + not silent, prints an error message and unsets OOPPTTAARRGG. If + ggeettooppttss is silent, the option character found is placed in OOPPTTAARRGG and no diagnostic message is printed. - If a required argument is not found, and ggeettooppttss is not silent, - a question mark (??) is placed in _n_a_m_e, OOPPTTAARRGG is unset, and a - diagnostic message is printed. If ggeettooppttss is silent, then a - colon (::) is placed in _n_a_m_e and OOPPTTAARRGG is set to the option + If a required argument is not found, and ggeettooppttss is not silent, + a question mark (??) is placed in _n_a_m_e, OOPPTTAARRGG is unset, and a + diagnostic message is printed. If ggeettooppttss is silent, then a + colon (::) is placed in _n_a_m_e and OOPPTTAARRGG is set to the option character found. - ggeettooppttss returns true if an option, specified or unspecified, is + ggeettooppttss returns true if an option, specified or unspecified, is found. It returns false if the end of options is encountered or an error occurs. hhaasshh [--llrr] [--pp _f_i_l_e_n_a_m_e] [--ddtt] [_n_a_m_e] - For each _n_a_m_e, the full file name of the command is determined + For each _n_a_m_e, the full file name of the command is determined by searching the directories in $$PPAATTHH and remembered. 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 causes - the shell to forget all remembered locations. The --dd option + 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 which each - _n_a_m_e corresponds is printed. If multiple _n_a_m_e arguments are - supplied with --tt, the _n_a_m_e is printed before the hashed full + If the --tt option is supplied, the full pathname to which each + _n_a_m_e corresponds is printed. If multiple _n_a_m_e arguments are + supplied with --tt, the _n_a_m_e is printed before the hashed full pathname. The --ll option causes output to be displayed in a for- - mat that may be reused as input. If no arguments are given, or + mat that may be reused as input. If no arguments are given, or if only --ll is supplied, information about remembered commands is - printed. The return status is true unless a _n_a_m_e is not found + printed. The return status is true unless a _n_a_m_e is not found or an invalid option is supplied. hheellpp [--ss] [_p_a_t_t_e_r_n] - Display helpful information about builtin commands. If _p_a_t_t_e_r_n - is specified, hheellpp gives detailed help on all commands matching - _p_a_t_t_e_r_n; otherwise help for all the builtins and shell control - structures is printed. The --ss option restricts the information - displayed to a short usage synopsis. The return status is 0 + Display helpful information about builtin commands. If _p_a_t_t_e_r_n + is specified, hheellpp gives detailed help on all commands matching + _p_a_t_t_e_r_n; otherwise help for all the builtins and shell control + structures is printed. The --ss option restricts the information + displayed to a short usage synopsis. The return status is 0 unless no command matches _p_a_t_t_e_r_n. hhiissttoorryy [[_n]] @@ -600,193 +599,189 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS hhiissttoorryy --ss _a_r_g [_a_r_g _._._.] With no options, display the command history list with line num- bers. Lines listed with a ** have been modified. An argument of - _n lists only the last _n lines. If the shell variable HHIISSTTTTIIMMEE-- - FFOORRMMAATT is set and not null, it is used as a format string for - _s_t_r_f_t_i_m_e(3) to display the time stamp associated with each dis- - played history entry. No intervening blank is printed between - the formatted time stamp and the history line. If _f_i_l_e_n_a_m_e is - supplied, it is used as the name of the history file; if not, - the value of HHIISSTTFFIILLEE is used. Options, if supplied, have the + _n lists only the last _n lines. If the shell variable HHIISSTTTTIIMMEE-- + FFOORRMMAATT is set and not null, it is used as a format string for + _s_t_r_f_t_i_m_e(3) to display the time stamp associated with each dis- + played history entry. No intervening blank is printed between + the formatted time stamp and the history line. If _f_i_l_e_n_a_m_e is + supplied, it is used as the name of the history file; if not, + the value of HHIISSTTFFIILLEE is used. Options, if supplied, have the following meanings: --cc Clear the history list by deleting all the entries. --dd _o_f_f_s_e_t Delete the history entry at position _o_f_f_s_e_t. - --aa Append the ``new'' history lines (history lines entered - since the beginning of the current bbaasshh session) to the + --aa Append the ``new'' history lines (history lines entered + since the beginning of the current bbaasshh session) to the history file. - --nn Read the history lines not already read from the history - file into the current history list. These are lines - appended to the history file since the beginning of the + --nn Read the history lines not already read from the history + 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- + --ww Write the current history to the history file, overwrit- ing 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 + --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 quoted to disable normal history expansion. - --ss Store the _a_r_g_s in the history list as a single entry. - The last command in the history list is removed before + --ss Store the _a_r_g_s in the history list as a single entry. + The last command in the history list is removed before the _a_r_g_s are added. If the HHIISSTTTTIIMMEEFFOORRMMAATT is set, the time stamp information associ- - ated with each history entry is written to the history file, - marked with the history comment character. When the history - file is read, lines beginning with the history comment character - followed immediately by a digit are interpreted as timestamps - for the previous history line. The return value is 0 unless an - invalid option is encountered, an error occurs while reading or - writing the history file, an invalid _o_f_f_s_e_t is supplied as an - argument to --dd, or the history expansion supplied as an argument - to --pp fails. + ated with each history entry is written to the history file. + The return value is 0 unless an invalid option is encountered, + an error occurs while reading or writing the history file, an + invalid _o_f_f_s_e_t is supplied as an argument to --dd, or the history + expansion supplied as an argument to --pp fails. jjoobbss [--llnnpprrss] [ _j_o_b_s_p_e_c ... ] jjoobbss --xx _c_o_m_m_a_n_d [ _a_r_g_s ... ] The first form lists the active jobs. The options have the fol- lowing meanings: --ll List process IDs in addition to the normal information. - --pp List only the process ID of the job's process group + --pp List only the process ID of the job's process group leader. - --nn Display information only about jobs that have changed - status since the user was last notified of their status. + --nn Display information only about jobs that have changed + status since the user was last notified of their status. --rr Restrict output to running jobs. --ss Restrict output to 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 + 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 encountered or an invalid _j_o_b_s_p_e_c is supplied. If the --xx option is supplied, jjoobbss replaces any _j_o_b_s_p_e_c found in - _c_o_m_m_a_n_d or _a_r_g_s with the corresponding process group ID, and + _c_o_m_m_a_n_d or _a_r_g_s with the corresponding process group ID, and executes _c_o_m_m_a_n_d passing it _a_r_g_s, returning its exit status. kkiillll [--ss _s_i_g_s_p_e_c | --nn _s_i_g_n_u_m | --_s_i_g_s_p_e_c] [_p_i_d | _j_o_b_s_p_e_c] ... kkiillll --ll [_s_i_g_s_p_e_c | _e_x_i_t___s_t_a_t_u_s] - Send the signal named by _s_i_g_s_p_e_c or _s_i_g_n_u_m to the processes - named by _p_i_d or _j_o_b_s_p_e_c. _s_i_g_s_p_e_c is either a case-insensitive - signal name such as SSIIGGKKIILLLL (with or without the SSIIGG prefix) or - a signal number; _s_i_g_n_u_m is a signal number. If _s_i_g_s_p_e_c is not - present, then SSIIGGTTEERRMM is assumed. An argument of --ll lists the - signal names. If any arguments are supplied when --ll is given, - the names of the signals corresponding to the arguments are + Send the signal named by _s_i_g_s_p_e_c or _s_i_g_n_u_m to the processes + named by _p_i_d or _j_o_b_s_p_e_c. _s_i_g_s_p_e_c is either a case-insensitive + signal name such as SSIIGGKKIILLLL (with or without the SSIIGG prefix) or + a signal number; _s_i_g_n_u_m is a signal number. If _s_i_g_s_p_e_c is not + present, then SSIIGGTTEERRMM is assumed. An argument of --ll lists the + signal names. If any arguments are supplied when --ll is given, + the names of the signals corresponding to the arguments are listed, and the return status is 0. The _e_x_i_t___s_t_a_t_u_s argument to - --ll is a number specifying either a signal number or the exit - status of a process terminated by a signal. kkiillll returns true - if at least one signal was successfully sent, or false if an + --ll is a number specifying either a signal number or the exit + status of a process terminated by a signal. kkiillll returns true + if at least one signal was successfully sent, or false if an error occurs or an invalid option is encountered. lleett _a_r_g [_a_r_g ...] Each _a_r_g is an arithmetic expression to be evaluated (see AARRIITTHH-- - MMEETTIICC EEVVAALLUUAATTIIOONN). If the last _a_r_g evaluates to 0, lleett returns + MMEETTIICC EEVVAALLUUAATTIIOONN). If the last _a_r_g evaluates to 0, lleett returns 1; 0 is returned otherwise. llooccaall [_o_p_t_i_o_n] [_n_a_m_e[=_v_a_l_u_e] ...] - For each argument, a local variable named _n_a_m_e is created, and - assigned _v_a_l_u_e. The _o_p_t_i_o_n can be any of the options accepted + For each argument, a local variable named _n_a_m_e is created, and + assigned _v_a_l_u_e. The _o_p_t_i_o_n can be any of the options accepted by ddeeccllaarree. When llooccaall is used within a function, it causes the - variable _n_a_m_e to have a visible scope restricted to that func- + variable _n_a_m_e to have a visible scope restricted to that func- tion and its children. With no operands, llooccaall writes a list of - local variables to the standard output. It is an error to use + local variables to the standard output. It is an error to use llooccaall when not within a function. The return status is 0 unless - llooccaall is used outside a function, an invalid _n_a_m_e is supplied, + llooccaall is used outside a function, an invalid _n_a_m_e is supplied, or _n_a_m_e is a readonly variable. llooggoouutt Exit a login shell. ppooppdd [-nn] [+_n] [-_n] - Removes entries from the directory stack. With no arguments, - removes the top directory from the stack, and performs a ccdd to + Removes entries from the directory stack. With no arguments, + removes the top directory from the stack, and performs a ccdd to the new top directory. Arguments, if supplied, have the follow- ing meanings: - --nn Suppresses the normal change of directory when removing - directories from the stack, so that only the stack is - manipulated. - ++_n Removes the _nth entry counting from the left of the list - shown by ddiirrss, starting with zero. For example: ``popd + ++_n Removes the _nth entry counting from the left of the list + shown by ddiirrss, starting with zero. For example: ``popd +0'' removes the first directory, ``popd +1'' the second. --_n Removes the _nth entry counting from the right of the list - shown by ddiirrss, starting with zero. For example: ``popd - -0'' removes the last directory, ``popd -1'' the next to + shown by ddiirrss, starting with zero. For example: ``popd + -0'' removes the last directory, ``popd -1'' the next to last. + --nn Suppresses the normal change of directory when removing + directories from the stack, so that only the stack is + manipulated. - If the ppooppdd command is successful, a ddiirrss is performed as well, - and the return status is 0. ppooppdd returns false if an invalid + If the ppooppdd command is successful, a ddiirrss is performed as well, + and the return status is 0. ppooppdd returns false if an invalid option is encountered, the directory stack is empty, a non-exis- tent directory stack entry is specified, or the directory change fails. pprriinnttff [--vv _v_a_r] _f_o_r_m_a_t [_a_r_g_u_m_e_n_t_s] - Write the formatted _a_r_g_u_m_e_n_t_s to the standard output under the - control of the _f_o_r_m_a_t. The _f_o_r_m_a_t is a character string which - contains three types of objects: plain characters, which are - simply copied to standard output, character escape sequences, - which are converted and copied to the standard output, and for- - mat specifications, each of which causes printing of the next + Write the formatted _a_r_g_u_m_e_n_t_s to the standard output under the + control of the _f_o_r_m_a_t. The _f_o_r_m_a_t is a character string which + contains three types of objects: plain characters, which are + simply copied to standard output, character escape sequences, + which are converted and copied to the standard output, and for- + mat specifications, each of which causes printing of the next successive _a_r_g_u_m_e_n_t. In addition to the standard _p_r_i_n_t_f(1) for- - mats, %%bb causes pprriinnttff to expand backslash escape sequences in - the corresponding _a_r_g_u_m_e_n_t (except that \\cc terminates output, + mats, %%bb causes pprriinnttff to expand backslash escape sequences in + the corresponding _a_r_g_u_m_e_n_t (except that \\cc terminates output, backslashes in \\'', \\"", and \\?? are not removed, and octal escapes - beginning with \\00 may contain up to four digits), and %%qq causes + beginning with \\00 may contain up to four digits), and %%qq causes pprriinnttff to output the corresponding _a_r_g_u_m_e_n_t in a format that can be reused as shell input. - The --vv option causes the output to be assigned to the variable + The --vv option causes the output to be assigned to the variable _v_a_r rather than being printed to the standard output. - 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 + ppuusshhdd [--nn] [+_n] [-_n] + 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 - 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. + --nn Suppresses the normal change of directory when adding + directories to the stack, so that only the stack is + manipulated. _d_i_r Adds _d_i_r to the directory stack at the top, making it the new current working directory. 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 - fails. With the second form, ppuusshhdd returns 0 unless the direc- - tory stack is empty, a non-existent directory stack element is - specified, or the directory change to the specified new current + If the first form is used, ppuusshhdd returns 0 unless the cd to _d_i_r + fails. With the second form, ppuusshhdd returns 0 unless the direc- + tory stack is empty, a non-existent directory stack element is + specified, or the directory change to the specified new current directory fails. ppwwdd [--LLPP] - Print the absolute pathname of the current working directory. + Print the absolute pathname of the current working directory. The pathname printed contains no symbolic links if the --PP option is supplied or the --oo pphhyyssiiccaall option to the sseett builtin command - is enabled. If the --LL option is used, the pathname printed may - contain symbolic links. The return status is 0 unless an error - occurs while reading the name of the current directory or an + is enabled. If the --LL option is used, the pathname printed may + contain symbolic links. The return status is 0 unless an error + occurs while reading the name of the current directory or an invalid option is supplied. - rreeaadd [--eerrss] [--aa _a_n_a_m_e] [--dd _d_e_l_i_m] [--nn _n_c_h_a_r_s] [--pp _p_r_o_m_p_t] [--tt _t_i_m_e_o_u_t] - [--uu _f_d] [_n_a_m_e ...] - One line is read from the standard input, or from the file - descriptor _f_d supplied as an argument to the --uu option, and the + rreeaadd [--eerrss] [--uu _f_d] [--tt _t_i_m_e_o_u_t] [--aa _a_n_a_m_e] [--pp _p_r_o_m_p_t] [--nn _n_c_h_a_r_s] [--dd + _d_e_l_i_m] [_n_a_m_e ...] + One line is read from the standard input, or from the file + descriptor _f_d supplied as an argument to the --uu option, and the first word is assigned to the first _n_a_m_e, the second word to the - second _n_a_m_e, and so on, with leftover words and their interven- - ing separators assigned to the last _n_a_m_e. If there are fewer + second _n_a_m_e, and so on, with leftover words and their interven- + 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- + 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: --aa _a_n_a_m_e The words are assigned to sequential indices of the array @@ -794,101 +789,100 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS 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. --nn _n_c_h_a_r_s - rreeaadd returns after reading _n_c_h_a_r_s characters rather than + rreeaadd returns after reading _n_c_h_a_r_s characters rather than waiting for a complete line of input. --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. This - option has no effect if rreeaadd is not reading input from + 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. This + option has no effect if rreeaadd is not reading input from the terminal or a pipe. --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, or an invalid file descriptor is + able RREEPPLLYY. The return code is zero, unless end-of-file is + encountered, rreeaadd times out, or an invalid file descriptor is supplied as the argument to --uu. rreeaaddoonnllyy [--aappff] [_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 + 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 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 vari- - able 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 + _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 vari- + able 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 func- tion. 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 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 + _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. + executed before execution resumes after the function or script. - sseett [----aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [--oo _o_p_t_i_o_n] [_a_r_g ...] - sseett [++aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [++oo _o_p_t_i_o_n] [_a_r_g ...] - Without options, the name and value of each shell variable are + sseett [----aabbeeffhhkkmmnnppttuuvvxxBBCCHHPP] [--oo _o_p_t_i_o_n] [_a_r_g ...] + 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 the options are processed are treated - as values for the positional parameters and are assigned, in + 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 the options are processed are treated + as values for the positional parameters and are assigned, in order, to $$11, $$22, ...... $$_n. Options, if specified, have the fol- lowing 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 _s_i_m_p_l_e _c_o_m_m_a_n_d (see SSHHEELLLL GGRRAAMMMMAARR + --ee Exit immediately if a _s_i_m_p_l_e _c_o_m_m_a_n_d (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 in an iiff statement, part of a &&&& or |||| - list, any command in a pipeline but the last, or if the - command's return value is being inverted via !!. A trap - on EERRRR, if set, is executed before the shell exits. + exit if the command that fails 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 &&&& or |||| + list, or if the command's return value is being inverted + via !!. A trap on EERRRR, if set, is executed before the + shell exits. --ff Disable pathname expansion. - --hh Remember the location of commands as they are looked up + --hh Remember the location of commands as they are looked up for execution. This is enabled by default. - --kk All arguments in the form of assignment statements are - placed in the environment for a command, not just those + --kk All arguments in the form of assignment statements are + placed in the environment for a command, not just those 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- + --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. --nn Read commands but do not execute them. This may be used - to check a shell script for syntax errors. This is + to check a shell script for syntax errors. This is ignored by interactive shells. --oo _o_p_t_i_o_n_-_n_a_m_e The _o_p_t_i_o_n_-_n_a_m_e can be one of the following: @@ -896,7 +890,7 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS Same as --aa. bbrraacceeeexxppaanndd Same as --BB. - eemmaaccss Use an emacs-style command line editing inter- + eemmaaccss Use an emacs-style command line editing inter- face. This is enabled by default when the shell is interactive, unless the shell is started with the ----nnooeeddiittiinngg option. @@ -912,8 +906,8 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS HHIISSTTOORRYY. This option is on by default in inter- active shells. iiggnnoorreeeeooff - The effect is as if the shell command - ``IGNOREEOF=10'' had been executed (see SShheellll + The effect is as if the shell command + ``IGNOREEOF=10'' had been executed (see SShheellll VVaarriiaabblleess above). kkeeyywwoorrdd Same as --kk. mmoonniittoorr Same as --mm. @@ -927,13 +921,13 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS pphhyyssiiccaall Same as --PP. ppiippeeffaaiill - If set, the return value of a pipeline is the - value of the last (rightmost) command to exit - with a non-zero status, or zero if all commands - in the pipeline exit successfully. This option + If set, the return value of a pipeline is the + value of the last (rightmost) command to exit + with a non-zero status, or zero if all commands + in the pipeline exit successfully. This option is disabled by default. - ppoossiixx Change the behavior of bbaasshh where the default - operation differs from the POSIX standard to + 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). pprriivviilleeggeedd Same as --pp. @@ -941,134 +935,124 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS vvii Use a vi-style command line editing interface. xxttrraaccee Same as --xx. If --oo is supplied with no _o_p_t_i_o_n_-_n_a_m_e, the values of the - current options are printed. If ++oo is supplied with no - _o_p_t_i_o_n_-_n_a_m_e, a series of sseett commands to recreate the - current option settings is displayed on the standard + current options are printed. If ++oo is supplied with no + _o_p_t_i_o_n_-_n_a_m_e, a series of sseett commands to recreate the + current option settings is displayed on the standard output. - --pp Turn on _p_r_i_v_i_l_e_g_e_d mode. In this mode, the $$EENNVV and - $$BBAASSHH__EENNVV files are not processed, shell functions are - not inherited from the environment, and the SSHHEELLLLOOPPTTSS - variable, if it appears in the environment, is ignored. - 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, these actions are taken and the + --pp Turn on _p_r_i_v_i_l_e_g_e_d mode. In this mode, the $$EENNVV and + $$BBAASSHH__EENNVV files are not processed, shell functions are + not inherited from the environment, and the SSHHEELLLLOOPPTTSS + variable, if it appears in the environment, is ignored. + 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, these actions are taken and the effective user id is set to the real user id. If the --pp - option is supplied at startup, the effective user id is + option is supplied at startup, the effective user id is not reset. Turning this option off causes the effective - user and group ids to be set to the real user and group + user and group ids to be set to the real user and group ids. --tt Exit after reading and executing one command. --uu Treat unset variables as an error when performing param- - eter expansion. If expansion is attempted on an unset + eter expansion. If expansion is attempted on an unset variable, the shell prints an error message, and, if not interactive, exits with a non-zero status. --vv Print shell input lines as they are read. - --xx After expanding each _s_i_m_p_l_e _c_o_m_m_a_n_d, ffoorr command, ccaassee + --xx After expanding each _s_i_m_p_l_e _c_o_m_m_a_n_d, ffoorr command, ccaassee command, sseelleecctt command, or arithmetic ffoorr command, dis- - play the expanded value of PPSS44, followed by the command + play the expanded value of PPSS44, followed by the command and its expanded arguments or associated word list. - --BB The shell performs brace expansion (see BBrraaccee EExxppaannssiioonn + --BB The shell performs brace expansion (see BBrraaccee EExxppaannssiioonn above). This is on by default. - --CC If set, bbaasshh does not overwrite an existing file with - the >>, >>&&, and <<>> redirection operators. This may be + --CC If set, bbaasshh does not overwrite an existing file with + the >>, >>&&, and <<>> redirection operators. This may be overridden when creating output files by using the redi- rection operator >>|| instead of >>. --EE If set, any trap on EERRRR is inherited by shell functions, - command substitutions, and commands executed in a sub- - shell environment. The EERRRR trap is normally not inher- + command substitutions, and commands executed in a sub- + shell environment. The EERRRR trap is normally not inher- 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 - executing commands such as ccdd that change the current + --PP If set, the shell does not follow 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 - chain of directories when performing commands which + chain of directories when performing commands which change the current directory. - --TT If set, any traps on DDEEBBUUGG and RREETTUURRNN are inherited by - shell functions, command substitutions, and commands - executed in a subshell environment. The DDEEBBUUGG and + --TT If set, any traps on DDEEBBUUGG and RREETTUURRNN are inherited by + shell functions, command substitutions, and commands + executed in a subshell environment. The DDEEBBUUGG and RREETTUURRNN traps are normally not inherited in such cases. - ---- If no arguments follow this option, then the positional + ---- If no arguments follow this option, then the positional parameters are unset. Otherwise, the positional parame- - ters are set to the _a_r_gs, even if some of them begin + ters are set to the _a_r_gs, even if some of them begin with a --. - -- Signal the end of options, cause all remaining _a_r_gs to + -- Signal the end of options, cause all remaining _a_r_gs to be assigned to the positional parameters. The --xx and --vv options are turned off. If there are no _a_r_gs, the posi- tional parameters remain unchanged. - The options are off by default unless otherwise noted. Using + - rather than - causes these options to be turned off. The - options can also be specified as arguments to an invocation of - the shell. The current set of options may be found in $$--. The + The options are off by default unless otherwise noted. Using + + rather than - causes these options to be turned off. The + options can also be specified as arguments to an invocation of + the shell. The current set of options may be found in $$--. The return status is always true unless an invalid option is encoun- tered. sshhiifftt [_n] - The positional parameters from _n+1 ... are renamed to $$11 ........ - Parameters represented by the numbers $$## down to $$##-_n+1 are - unset. _n must be a non-negative number less than or equal to - $$##. If _n is 0, no parameters are changed. If _n is not given, - it is assumed to be 1. If _n is greater than $$##, the positional - parameters are not changed. The return status is greater than + The positional parameters from _n+1 ... are renamed to $$11 ........ + Parameters represented by the numbers $$## down to $$##-_n+1 are + unset. _n must be a non-negative number less than or equal to + $$##. If _n is 0, no parameters are changed. If _n is not given, + it is assumed to be 1. If _n is greater than $$##, the positional + parameters are not changed. The return status is greater than 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- + 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: --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 + --qq Suppresses normal output (quiet mode); the return status indicates whether the _o_p_t_n_a_m_e is set or unset. If multi- - ple _o_p_t_n_a_m_e arguments are given with --qq, the return sta- - tus is zero if all _o_p_t_n_a_m_e_s are enabled; non-zero other- + ple _o_p_t_n_a_m_e arguments are given with --qq, the return sta- + tus is zero if all _o_p_t_n_a_m_e_s are enabled; non-zero other- wise. - --oo Restricts the values of _o_p_t_n_a_m_e to be those defined for + --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- + 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 + tively. 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 - options, the return status is zero unless an _o_p_t_n_a_m_e is not a + 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 + options, the return status is zero unless an _o_p_t_n_a_m_e is not a valid shell option. The list of sshhoopptt options is: - aauuttooccdd If set, a command name that is the name of a directory - is executed as if it were the argument to the ccdd com- - mand. This option is only used by interactive shells. ccddaabbllee__vvaarrss - If set, an argument to the ccdd builtin command that is - not a directory is assumed to be the name of a variable + If set, an argument to the ccdd builtin command that is + not a directory is assumed to be the name of a variable whose value is the directory to change to. ccddssppeellll If set, minor errors in the spelling of a directory com- - ponent in a ccdd command will be corrected. The errors + 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- - mand proceeds. This option is only used by interactive + ter, and one character too many. If a correction is + found, the corrected file name is printed, and the com- + mand proceeds. This option is only used by interactive shells. cchheecckkhhaasshh If set, bbaasshh checks that a command found in the hash ta- - ble exists before trying to execute it. If a hashed - command no longer exists, a normal path search is per- + ble exists before trying to execute it. If a hashed + command no longer exists, a normal path search is per- formed. - cchheecckkjjoobbss - If set, bash lists the status of any stopped and running - jobs before exiting an interactive shell. If any jobs - are running, this causes the exit to be deferred until a - second exit is attempted without an intervening command - (see JJOOBB CCOONNTTRROOLL above). The shell always postpones - exiting if any jobs are stopped. cchheecckkwwiinnssiizzee If set, bbaasshh checks the window size after each command and, if necessary, updates the values of LLIINNEESS and CCOOLL-- @@ -1307,10 +1291,10 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS _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. Signals ignored upon entry to the shell cannot - be trapped or reset. Trapped signals that are not being ignored - are reset to their original values in a child process when it is - created. The return status is false if any _s_i_g_s_p_e_c is invalid; - otherwise ttrraapp returns true. + be trapped or reset. Trapped signals are reset to their origi- + nal values in a child process when it is created. The return + status is false if any _s_i_g_s_p_e_c is invalid; otherwise ttrraapp + returns true. ttyyppee [--aaffttppPP] _n_a_m_e [_n_a_m_e ...] With no options, indicate how each _n_a_m_e would be interpreted if @@ -1353,8 +1337,7 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS --cc The maximum size of core files created --dd The maximum size of a process's data segment --ee The maximum scheduling priority ("nice") - --ff The maximum size of files written by the shell and its - children + --ff The maximum size of files created by the shell --ii The maximum number of pending signals --ll The maximum size that may be locked into memory --mm The maximum resident set size @@ -1365,57 +1348,57 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS --rr The maximum real-time scheduling priority --ss The maximum stack size --tt The maximum amount of cpu time in seconds - --uu The maximum number of processes available to a single + --uu The maximum number of processes available to a single user - --vv The maximum amount of virtual memory available to the + --vv The maximum amount of virtual memory available to the shell --xx The maximum number of file locks 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 --nn and --uu, which are unscaled values. The return status is - 0 unless an invalid option or argument is supplied, or an error + 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 --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. 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 - a digit, it is interpreted as an octal number; otherwise it is - interpreted as a symbolic mode mask similar to that accepted by - _c_h_m_o_d(1). If _m_o_d_e is omitted, the current value of the mask is - printed. The --SS option causes the mask to be printed in sym- - bolic form; the default output is an octal number. If the --pp + a digit, it is interpreted as an octal number; otherwise it is + interpreted as a symbolic mode mask similar to that accepted by + _c_h_m_o_d(1). If _m_o_d_e is omitted, the current value of the mask is + printed. The --SS option causes the mask to be printed in sym- + bolic form; the default output is an octal number. If the --pp option is supplied, and _m_o_d_e is omitted, the output is in a form that may be reused as input. The return status is 0 if the mode - was successfully changed or if no _m_o_d_e argument was supplied, + was successfully changed or if no _m_o_d_e argument was supplied, and false otherwise. uunnaalliiaass [-aa] [_n_a_m_e ...] - Remove each _n_a_m_e from the list of defined aliases. If --aa is - supplied, all alias definitions are removed. The return value + Remove each _n_a_m_e from the list of defined aliases. If --aa is + 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 ...] - For each _n_a_m_e, remove the corresponding variable or function. + 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 - 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 RRAANNDDOOMM, SSEECCOONNDDSS, LLIINNEENNOO, HHIISSTTCCMMDD, + refers to a shell variable. 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 RRAANNDDOOMM, SSEECCOONNDDSS, LLIINNEENNOO, HHIISSTTCCMMDD, FFUUNNCCNNAAMMEE, GGRROOUUPPSS, or DDIIRRSSTTAACCKK are unset, they lose their special - properties, even if they are subsequently reset. The exit sta- + properties, even if they are subsequently reset. The exit sta- tus 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 - 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 + Wait for each specified process and return its termination sta- + tus. 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. SSEEEE AALLSSOO diff --git a/doc/builtins.ps b/doc/builtins.ps index 5e90635e7..d555a0d74 100644 --- a/doc/builtins.ps +++ b/doc/builtins.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.19.1 -%%CreationDate: Tue Jan 16 11:15:09 2007 +%%CreationDate: Thu Jan 26 11:18:52 2006 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic @@ -309,13 +309,13 @@ F 1.314(plied, the name and v)144 440.4 R 1.314 (returns true unless a)3.814 F F3(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 452.4 Q F2(bg)108 469.2 Q F0([) -2.5 E F3(jobspec)A F0(...])2.5 E .744(Resume each suspended job)144 -481.2 R F3(jobspec)3.244 E F0 .745 -(in the background, as if it had been started with)3.244 F F2(&)3.245 E -F0 5.745(.I)C(f)-5.745 E F3(job-)4.985 E(spec)144 493.2 Q F0 .672 -(is not present, the shell')3.482 F 3.172(sn)-.55 G .672(otion of the) --3.172 F F3(curr)3.172 E .672(ent job)-.37 F F0 .672(is used.)3.172 F F2 -(bg)5.671 E F3(jobspec)4.911 E F0 .671(returns 0 unless run)3.481 F .418 +2.5 E F3(jobspec)A F0(...])2.5 E .847(Resume each suspended job)144 +481.2 R F3(jobspec)3.347 E F0 .847 +(in the background, as if it had been started with)3.347 F F2(&)3.347 E +F0 5.847(.I)C(f)-5.847 E F3(job-)3.348 E(spec)144 493.2 Q F0 .689 +(is not present, the shell')3.189 F 3.189(sn)-.55 G .689(otion of the) +-3.189 F F3(curr)3.189 E .689(ent job)-.37 F F0 .689(is used.)3.189 F F2 +(bg)5.689 E F3(jobspec)4.929 E F0 .688(returns 0 unless run)3.499 F .418 (when job control is disabled or)144 505.2 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 F3(jobspec)2.919 E F0 -.1(wa)2.919 G 2.919(sn).1 G @@ -366,31 +366,31 @@ BP (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 96 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 108 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 +(function names and bindings.)2.5 E F1144 108 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 120 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 132 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 120 S 2.5(yt).1 G(hat the)-2.5 -E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1144 132 Q F0(Display)24.74 +1.155(utput in such a)-3.655 F -.1(wa)180 144 S 2.5(yt).1 G(hat the)-2.5 +E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1144 156 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 144 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 156 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 168 Q/F2 10/Times-Italic@0 SF(\214lename)2.5 E F0 -(Read k)180 180 Q .3 -.15(ey b)-.1 H(indings from).15 E F2(\214lename) -2.5 E F0(.)A F1144 192 Q F2(function)2.5 E F0(Query about which k) -180 204 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 216 Q F2(function) -2.5 E F0(Unbind all k)180 228 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 240 Q F2 --.1(ke)2.5 G(yseq)-.2 E F0(Remo)180 252 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 264 Q F2 -.1(ke)2.5 G(yseq)-.2 E F1(:)A F2(shell\255command) -A F0(Cause)180 276 Q F2(shell\255command)2.5 E F0(to be e)2.5 E -.15(xe) --.15 G(cuted whene).15 E -.15(ve)-.25 G(r).15 E F2 -.1(ke)2.5 G(yseq)-.2 -E F0(is entered.)2.5 E(The return v)144 292.8 Q +(utput.)-2.5 E F1144 168 Q/F2 10/Times-Italic@0 SF(\214lename)2.5 +E F0(Read k)180 180 Q .3 -.15(ey b)-.1 H(indings from).15 E F2 +(\214lename)2.5 E F0(.)A F1144 192 Q F2(function)2.5 E F0 +(Query about which k)180 204 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 F1 +144 216 Q F2(function)2.5 E F0(Unbind all k)180 228 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 +240 Q F2 -.1(ke)2.5 G(yseq)-.2 E F0(Remo)180 252 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 264 Q F2 -.1(ke)2.5 G(yseq)-.2 E F1(:)A F2 +(shell\255command)A F0(Cause)180 276 Q F2(shell\255command)2.5 E F0 +(to be e)2.5 E -.15(xe)-.15 G(cuted whene).15 E -.15(ve)-.25 G(r).15 E +F2 -.1(ke)2.5 G(yseq)-.2 E F0(is entered.)2.5 E(The return v)144 292.8 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 309.6 Q(eak)-.18 E F0([)2.5 E F2(n)A F0(])A .054(Exit from within a)144 @@ -523,14 +523,14 @@ em directly from a completion speci\214cation with the same \215ags.)144 (will be displayed.)2.5 E(The return v)144 256.8 Q (alue is true unless an in)-.25 E -.25(va)-.4 G (lid option is supplied, or no matches were generated.).25 E F1 -(complete)108 273.6 Q F0([)3.265 E F1(\255abcdefgjksuv)A F0 3.265(][)C -F1-3.265 E F2(comp-option)3.265 E F0 3.265(][)C F1-3.265 E -F2(action)3.265 E F0 3.265(][)C F1-3.265 E F2(globpat)3.265 E F0 -3.265(][)C F1-3.265 E F2(wor)3.265 E(dlist)-.37 E F0 3.265(][)C F1 --3.265 E F2(function)3.265 E F0 3.265(][)C F1-3.265 E F2 -(command)108 285.6 Q F0(])A([)144 297.6 Q F1A F2(\214lterpat)2.5 E -F0 2.5(][)C F1-2.5 E F2(pr)2.5 E(e\214x)-.37 E F0 2.5(][)C F1 --2.5 E F2(suf)2.5 E<8c78>-.18 E F0(])A F2(name)2.5 E F0([)2.5 E F2 +(complete)108 273.6 Q F0([)2.787 E F1(\255abcdefgjksuv)A F0 2.787(][)C +F1-2.787 E F2(comp-option)2.786 E F0 2.786(][)C F1-2.786 E +F2(action)2.786 E F0 2.786(][)C F1-2.786 E F2(globpat)2.786 E F0 +2.786(][)C F1-2.786 E F2(wor)2.786 E(dlist)-.37 E F0 2.786(][)C F1 +-2.786 E F2(pr)2.786 E(e\214x)-.37 E F0 2.786(][)C F1-2.786 +E F2(suf-)2.786 E<8c78>108 285.6 Q F0(])A([)144 297.6 Q F1A F2 +(\214lterpat)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(command)2.5 E F0(])A F2(name)2.5 E F0([)2.5 E F2 (name ...)A F0(])A F1(complete \255pr)108 309.6 Q F0([)2.5 E F2(name)A F0(...])2.5 E .634(Specify ho)144 321.6 R 3.134(wa)-.25 G -.18(rg)-3.134 G .634(uments to each).18 F F2(name)3.134 E F0 .634 @@ -738,1021 +738,1020 @@ E(UG)-.1 E F0(and)2.93 E F1(RETURN)2.93 E F0 (traps from the calling shell.)180 398.4 Q(The trace attrib)5 E (ute has no special meaning for v)-.2 E(ariables.)-.25 E F1144 410.4 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 427.2 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 1.236 -(to destro)144 439.2 R 3.736(ya)-.1 G 3.737(na)-3.736 G 1.237(rray v) --3.737 F 1.237(ariable and)-.25 F F1 1.237(+r will not r)3.737 F(emo) --.18 E 1.437 -.1(ve t)-.1 H 1.237(he r).1 F 1.237(eadonly attrib)-.18 F -3.737(ute. When)-.2 F 1.237(used in a)3.737 F .312(function, mak)144 -451.2 R .312(es each)-.1 F F2(name)2.812 E F1 .311 -(local, as with the local)2.812 F F0 2.811(command. If)2.811 F 2.811(av) -2.811 G .311(ariable name is follo)-3.061 F .311(wed by)-.25 F(=)144 -463.2 Q F2(value)A F0 3.238(,t)C .738(he v)-3.238 F .738(alue of the v) --.25 F .738(ariable is set to)-.25 F F2(value)3.238 E F0 5.738(.T)C .738 -(he return v)-5.738 F .739(alue is 0 unless an in)-.25 F -.25(va)-.4 G -.739(lid option is).25 F .603 -(encountered, an attempt is made to de\214ne a function using)144 475.2 -R/F5 10/Courier@0 SF .603(\255f foo=bar)3.103 F F0 3.103(,a)C 3.103(na) --3.103 G .603(ttempt is made to)-3.103 F 1.242(assign a v)144 487.2 R -1.242(alue to a readonly v)-.25 F 1.242 -(ariable, an attempt is made to assign a v)-.25 F 1.243 -(alue to an array v)-.25 F(ariable)-.25 E 1.386 -(without using the compound assignment syntax \(see)144 499.2 R F1 -(Arrays)3.886 E F0(abo)3.886 E -.15(ve)-.15 G 1.386(\), one of the).15 F -F2(names)3.886 E F0 1.386(is not a)3.886 F -.25(va)144 511.2 S .171 -(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 .172 -(ariable, an)-.25 F .96(attempt is made to turn of)144 523.2 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 535.2 Q -(xistent function with)-.15 E F12.5 E F0(.)A F1(dirs [+)108 552 Q -F2(n)A F1 2.5(][)C-2.5 E F2(n)A F1 2.5(][)C(\255cplv])-2.5 E F0 -.4 -(Wi)144 564 S .328 +(xport to subsequent commands via the en)-.15 E(vironment.)-.4 E .337 +(Using `+' instead of `\255' turns of)144 427.2 R 2.837(ft)-.25 G .337 +(he attrib)-2.837 F .337(ute instead, with the e)-.2 F .336 +(xception that)-.15 F F1(+a)2.836 E F0 .336(may not be used)2.836 F .792 +(to destro)144 439.2 R 3.293(ya)-.1 G 3.293(na)-3.293 G .793(rray v) +-3.293 F 3.293(ariable. When)-.25 F .793(used in a function, mak)3.293 F +.793(es each)-.1 F F2(name)3.293 E F0 .793(local, as with the)3.293 F F1 +(local)3.293 E F0 2.843(command. If)144 451.2 R 2.843(av)2.843 G .342 +(ariable name is follo)-3.093 F .342(wed by =)-.25 F F2(value)A F0 2.842 +(,t)C .342(he v)-2.842 F .342(alue of the v)-.25 F .342 +(ariable is set to)-.25 F F2(value)2.842 E F0 5.342(.T)C(he)-5.342 E .8 +(return v)144 463.2 R .8(alue is 0 unless an in)-.25 F -.25(va)-.4 G +.801 +(lid option is encountered, an attempt is made to de\214ne a function) +.25 F(using)144 475.2 Q/F5 10/Courier@0 SF 1.039(\255f foo=bar)3.539 F +F0 3.539(,a)C 3.539(na)-3.539 G 1.038(ttempt is made to assign a v) +-3.539 F 1.038(alue to a readonly v)-.25 F 1.038(ariable, an attempt is) +-.25 F .974(made to assign a v)144 487.2 R .974(alue to an array v)-.25 +F .974(ariable without using the compound assignment syntax \(see)-.25 F +F1(Arrays)144 499.2 Q F0(abo)2.86 E -.15(ve)-.15 G .36(\), one of the) +.15 F F2(names)2.86 E F0 .36(is not a v)2.86 F .36(alid shell v)-.25 F +.36(ariable name, an attempt is made to turn of)-.25 F(f)-.25 E .056 +(readonly status for a readonly v)144 511.2 R .057 +(ariable, an attempt is made to turn of)-.25 F 2.557(fa)-.25 G .057 +(rray status for an array v)-2.557 F(ari-)-.25 E +(able, or an attempt is made to display a non-e)144 523.2 Q +(xistent function with)-.15 E F12.5 E F0(.)A F1 +(dirs [\255clpv] [+)108 540 Q F2(n)A F1 2.5(][)C-2.5 E F2(n)A F1(])A +F0 -.4(Wi)144 552 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 576 R 1.238 -(Directories are added to the list with the)6.238 F F1(pushd)144 588 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 564 R 1.238 +(Directories are added to the list with the)6.238 F F1(pushd)144 576 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 600 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 612 Q F1144 624 Q F2(n)A +2.5(se).15 G(ntries from the list.)-2.5 E F1(+)144 588 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 600 Q F1144 612 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 636 Q F1144 648 Q F0 +(without options, starting with zero.)180 624 Q F1144 636 Q F0 (Clears the directory stack by deleting all of the entries.)25.86 E F1 -144 660 Q F0 .324(Produces a longer listing; the def)27.52 F .324 +144 648 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 672 Q(.)-.65 E F1144 684 Q F0 +180 660 Q(.)-.65 E F1144 672 Q F0 (Print the directory stack with one entry per line.)24.74 E F1144 -696 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 708 Q 1.706(The return v)144 724.8 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-3.0)72 768 Q(2004 Apr 20)148.735 E(5)203.725 E 0 Cg EP +684 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 696 Q .258(The return v)144 712.8 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 724.8 Q(GNU Bash-3.0)72 768 Q(2004 Apr 20)148.735 +E(5)203.725 E 0 Cg EP %%Page: 6 6 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 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 .243(and neither)144 124.8 R F1 .243 -(\255a nor \255r is supplied, the shell')2.743 F 2.743(sn)-.37 G .243 -(otion of the)-2.743 F F2(curr)2.743 E .243(ent job)-.37 F F1 .243 -(is used.)2.743 F .244(If the \255h option)5.243 F .334(is gi)144 136.8 -R -.1(ve)-.1 G .334(n, each).1 F F2(jobspec)4.574 E F0 .334(is not remo) -3.144 F -.15(ve)-.15 G 2.834(df).15 G .334(rom the table, b)-2.834 F -.334(ut is mark)-.2 F .334(ed so that)-.1 F/F3 9/Times-Bold@0 SF(SIGHUP) -2.834 E F0 .333(is not sent to)2.584 F 1.189(the job if the shell recei) -144 148.8 R -.15(ve)-.25 G 3.689(sa).15 G F3(SIGHUP)A/F4 9/Times-Roman@0 -SF(.)A F0 1.189(If no)5.689 F F2(jobspec)5.429 E F0 1.189 -(is present, and neither the)3.999 F F13.689 E F0 1.19(nor the) -3.69 F F13.69 E F0 1.57(option is supplied, the)144 160.8 R F2 -(curr)4.07 E 1.57(ent job)-.37 F F0 1.57(is used.)4.07 F 1.569(If no) -6.569 F F2(jobspec)5.809 E F0 1.569(is supplied, the)4.379 F F1 -4.069 E F0 1.569(option means to)4.069 F(remo)144 172.8 Q .903 -.15 -(ve o)-.15 H 3.103(rm).15 G .603(ark all jobs; the)-3.103 F F1 -3.103 E F0 .603(option without a)3.103 F F2(jobspec)4.843 E F0(ar)3.414 -E .604(gument restricts operation to running)-.18 F 2.5(jobs. The)144 -184.8 R(return v)2.5 E(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 +(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10 +/Times-Bold@0 SF(diso)108 84 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 96 S .33(thout options, each).4 F F2(jobspec) +4.57 E F0 .33(is remo)3.14 F -.15(ve)-.15 G 2.83(df).15 G .331 +(rom the table of acti)-2.83 F .631 -.15(ve j)-.25 H 2.831(obs. If).15 F +(the)2.831 E F12.831 E F0 .331(option is gi)2.831 F -.15(ve)-.25 G +(n,).15 E(each)144 108 Q F2(jobspec)4.521 E F0 .281(is not remo)3.091 F +-.15(ve)-.15 G 2.78(df).15 G .28(rom the table, b)-2.78 F .28 +(ut is mark)-.2 F .28(ed so that)-.1 F/F3 9/Times-Bold@0 SF(SIGHUP)2.78 +E F0 .28(is not sent to the job if)2.53 F .223(the shell recei)144 120 R +-.15(ve)-.25 G 2.724(sa).15 G F3(SIGHUP)A/F4 9/Times-Roman@0 SF(.)A F0 +.224(If no)4.724 F F2(jobspec)4.464 E F0 .224 +(is present, and neither the)3.034 F F12.724 E F0 .224(nor the) +2.724 F F12.724 E F0 .224(option is sup-)2.724 F .652(plied, the) +144 132 R F2(curr)3.152 E .652(ent job)-.37 F F0 .652(is used.)3.152 F +.652(If no)5.652 F F2(jobspec)4.892 E F0 .652(is supplied, the)3.462 F +F13.152 E F0 .651(option means to remo)3.151 F .951 -.15(ve o)-.15 +H 3.151(rm).15 G(ark)-3.151 E .434(all jobs; the)144 144 R F12.934 +E F0 .434(option without a)2.934 F F2(jobspec)4.675 E F0(ar)3.245 E .435 +(gument restricts operation to running jobs.)-.18 F .435(The return) +5.435 F -.25(va)144 156 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 172.8 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 +.395(Output the)144 184.8 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.) +(is speci\214ed, the trailing ne)144 196.8 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 +-.15(ve)-.25 G .548(n, interpretation of the fol-).15 F(lo)144 208.8 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 +F 1.502(escape characters, e)144 220.8 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 +(option may be used to dynamically determine whether or not)144 232.8 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 +.15 F .659(by def)144 244.8 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 trailing ne)28.78 E -(wline)-.25 E F1(\\e)144 333.6 Q F0(an escape character)28.78 E F1(\\f) -144 345.6 Q F0(form feed)29.89 E F1(\\n)144 357.6 Q F0(ne)27.66 E 2.5 -(wl)-.25 G(ine)-2.5 E F1(\\r)144 369.6 Q F0(carriage return)28.78 E F1 -(\\t)144 381.6 Q F0(horizontal tab)29.89 E F1(\\v)144 393.6 Q F0 -.15 -(ve)28.22 G(rtical tab).15 E F1(\\\\)144 405.6 Q F0(backslash)30.44 E F1 -(\\0)144 417.6 Q F2(nnn)A F0(the eight-bit character whose v)13.22 E +(interprets the follo)3.16 F(wing)-.25 E(escape sequences:)144 256.8 Q +F1(\\a)144 268.8 Q F0(alert \(bell\))28.22 E F1(\\b)144 280.8 Q F0 +(backspace)27.66 E F1(\\c)144 292.8 Q F0(suppress trailing ne)28.78 E +(wline)-.25 E F1(\\e)144 304.8 Q F0(an escape character)28.78 E F1(\\f) +144 316.8 Q F0(form feed)29.89 E F1(\\n)144 328.8 Q F0(ne)27.66 E 2.5 +(wl)-.25 G(ine)-2.5 E F1(\\r)144 340.8 Q F0(carriage return)28.78 E F1 +(\\t)144 352.8 Q F0(horizontal tab)29.89 E F1(\\v)144 364.8 Q F0 -.15 +(ve)28.22 G(rtical tab).15 E F1(\\\\)144 376.8 Q F0(backslash)30.44 E F1 +(\\0)144 388.8 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 429.6 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(enable)108 446.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 458.4 R .278(uiltin shell commands.)-.2 F .278 +(\(zero to three octal digits\))2.5 E F1(\\)144 400.8 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 octal digits\))2.5 E F1(\\x) +144 412.8 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 +(enable)108 429.6 Q F0([)2.5 E F1(\255adnps)A 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 441.6 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 -470.4 R .834(uiltin to be e)-.2 F -.15(xe)-.15 G .834 +453.6 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 482.4 +(nt).15 G(hough)-3.334 E .99(the shell normally searches for b)144 465.6 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 494.4 R F2(names)4.082 E F0 1.582(are enabled.) +(abled; otherwise,)144 477.6 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 506.4 R .081(uiltin v) +G(TH)-.189 E F0 .081(instead of the shell b)144 489.6 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 518.4 S 1.524 +(option means to load the ne)2.58 F(w)-.25 E -.2(bu)144 501.6 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 530.4 Q F1 +(ystems that support dynamic loading.)-4.024 F(The)144 513.6 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 542.4 R F1 +-.18 F -.15(ve)-.25 G .366(n, or).15 F .398(if the)144 525.6 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 -554.4 R 2.598(uiltins. If)-.2 F F12.598 E F0 .098 +537.6 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 566.4 R 1.916 +(is supplied, the list printed includes all b)144 549.6 R 1.916 (uiltins, with an indication of whether or not each is)-.2 F 2.879 -(enabled. If)144 578.4 R F12.879 E F0 .379 +(enabled. If)144 561.6 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 590.4 R F2(name)3.854 E F0 .994 +(alue)-.25 E .994(is 0 unless a)144 573.6 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 -602.4 Q F1 -2.3 -.15(ev a)108 619.2 T(l).15 E F0([)2.5 E F2(ar)A(g)-.37 -E F0(...])2.5 E(The)144 631.2 Q F2(ar)3.171 E(g)-.37 E F0 3.171(sa)C +585.6 Q F1 -2.3 -.15(ev a)108 602.4 T(l).15 E F0([)2.5 E F2(ar)A(g)-.37 +E F0(...])2.5 E(The)144 614.4 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 643.2 R -.15(xe)-.15 +.67(This command is then read)5.67 F .495(and e)144 626.4 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(or only null ar)144 655.2 Q +-2.995 F F2(ar)2.995 E(gs)-.37 E F0(,).27 E(or only null ar)144 638.4 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 672 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1-2.5 E F2 +(exec)108 655.2 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 684 Q F2(command)3.006 E F0 .306 +-.37 E F0(]])A(If)144 667.2 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 696 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 F1 -2.676 E F0 .176 +(guments)-.37 E F0(become)3.075 E .176(the ar)144 679.2 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 708 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 720 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(GNU Bash-3.0)72 768 Q(2004 Apr 20)148.735 E(6)203.725 E 0 Cg EP +(ginning of)-.15 F .16(the zeroth ar)144 691.2 R 2.66(gp)-.18 G .16 +(assed to)-2.66 F F2(command)2.66 E F0 5.16(.T).77 G .159(his is what) +-5.16 F F2(lo)2.659 E(gin)-.1 E F0 .159(\(1\) does.).24 F(The)5.159 E F1 +2.659 E F0 .159(option causes)2.659 F F2(command)2.859 E F0(to) +3.429 E 1.195(be e)144 703.2 R -.15(xe)-.15 G 1.195 +(cuted with an empty en).15 F 3.695(vironment. If)-.4 F F13.696 E +F0 1.196(is supplied, the shell passes)3.696 F F2(name)4.056 E F0 1.196 +(as the zeroth)3.876 F(ar)144 715.2 Q .02(gument to the e)-.18 F -.15 +(xe)-.15 G .02(cuted command.).15 F(If)5.02 E F2(command)2.72 E F0 .02 +(cannot be e)3.29 F -.15(xe)-.15 G .02 +(cuted for some reason, a non-inter).15 F(-)-.2 E(acti)144 727.2 Q 1.066 +-.15(ve s)-.25 H .766(hell e).15 F .766(xits, unless the shell option) +-.15 F F1(execfail)3.266 E F0 .766 +(is enabled, in which case it returns f)3.266 F 3.267(ailure. An)-.1 F +(GNU Bash-3.0)72 768 Q(2004 Apr 20)148.735 E(6)203.725 E 0 Cg EP %%Page: 7 7 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E 1.078 -(zeroth ar)144 84 R 1.077(gument to the e)-.18 F -.15(xe)-.15 G 1.077 -(cuted command.).15 F(If)6.077 E/F1 10/Times-Italic@0 SF(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 96 Q .617 -.15(ve s) --.25 H .317(hell e).15 F .317(xits, unless the shell option)-.15 F/F2 10 -/Times-Bold@0 SF(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 108 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 F1(command)2.705 E F0 .005 -(is not speci\214ed,)3.275 F(an)144 120 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 132 Q 2.5(,t)-.4 G -(he return status is 1.)-2.5 E F2(exit)108 148.8 Q F0([)2.5 E F1(n)A F0 -6.29(]C)C .096(ause the shell to e)-6.29 F .096(xit with a status of) --.15 F F1(n)2.596 E F0 5.096(.I)C(f)-5.096 E F1(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 160.8 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 F2(export)108 177.6 Q F0([)2.5 -E F2(\255fn)A F0 2.5(][).833 G F1(name)-2.5 E F0([=)A F1(wor)A(d)-.37 E -F0(]] ...)A F2(export \255p)108 189.6 Q F0 .256(The supplied)144 201.6 R -F1(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 213.6 R(the)2.627 E F2 -2.627 E F0 .127(option is gi)2.627 F -.15(ve)-.25 G .127(n, the) -.15 F F1(names)2.987 E F0 .127(refer to functions.)2.897 F .127(If no) -5.127 F F1(names)2.987 E F0 .127(are gi)2.897 F -.15(ve)-.25 G .126 -(n, or if the).15 F F2144 225.6 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 F23.16 E F0 -(option)3.16 E 1.587(causes the e)144 237.6 R 1.587 +(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E(interacti) +144 84 Q 1.519 -.15(ve s)-.25 H 1.219(hell returns f).15 F 1.219 +(ailure if the \214le cannot be e)-.1 F -.15(xe)-.15 G 3.719(cuted. If) +.15 F/F1 10/Times-Italic@0 SF(command)3.918 E F0 1.218 +(is not speci\214ed, an)4.488 F(y)-.15 E .133(redirections tak)144 96 R +2.633(ee)-.1 G -.25(ff)-2.633 G .134 +(ect in the current shell, and the return status is 0.).25 F .134 +(If there is a redirection error)5.134 F(,)-.4 E +(the return status is 1.)144 108 Q/F2 10/Times-Bold@0 SF(exit)108 124.8 +Q F0([)2.5 E F1(n)A F0 6.29(]C)C .096(ause the shell to e)-6.29 F .096 +(xit with a status of)-.15 F F1(n)2.596 E F0 5.096(.I)C(f)-5.096 E F1(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 136.8 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 F2 +(export)108 153.6 Q F0([)2.5 E F2(\255fn)A F0 2.5(][).833 G F1(name)-2.5 +E F0([=)A F1(wor)A(d)-.37 E F0(]] ...)A F2(export \255p)108 165.6 Q F0 +.256(The supplied)144 177.6 R F1(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 189.6 R(the)2.627 E F22.627 E F0 .127 +(option is gi)2.627 F -.15(ve)-.25 G .127(n, the).15 F F1(names)2.987 E +F0 .127(refer to functions.)2.897 F .127(If no)5.127 F F1(names)2.987 E +F0 .127(are gi)2.897 F -.15(ve)-.25 G .126(n, or if the).15 F F2 +144 201.6 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 F2 +3.16 E F0(option)3.16 E 1.587(causes the e)144 213.6 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 F1(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 249.6 Q +1.586(ariable name is follo)-4.336 F 1.586(wed by)-.25 F(=)144 225.6 Q F1(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 F1(wor)2.804 E(d)-.37 E F0(.)A F2 (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 261.6 R F1(names)2.793 E F0 .293 +(option is encountered, one of the)144 237.6 R F1(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 F22.793 E F0 .293(is supplied with a)2.793 F F1(name)144.36 -273.6 Q F0(that is not a function.)2.68 E F2(fc)108 290.4 Q F0([)2.5 E -F2A F1(ename)2.5 E F0 2.5(][)C F2(\255lnr)-2.5 E F0 2.5(][)C F1 +249.6 Q F0(that is not a function.)2.68 E F2(fc)108 266.4 Q F0([)2.5 E +F2A F1(ename)2.5 E F0 2.5(][)C F2(\255nlr)-2.5 E F0 2.5(][)C F1 <8c72>-2.5 E(st)-.1 E F0 2.5(][)C F1(last)-2.5 E F0(])A F2(fc \255s)108 -302.4 Q F0([)2.5 E F1(pat)A F0(=)A F1 -.37(re)C(p).37 E F0 2.5(][)C F1 -(cmd)-2.5 E F0(])A .477(Fix Command.)144 314.4 R .478 +278.4 Q F0([)2.5 E F1(pat)A F0(=)A F1 -.37(re)C(p).37 E F0 2.5(][)C F1 +(cmd)-2.5 E F0(])A .477(Fix Command.)144 290.4 R .478 (In the \214rst form, a range of commands from)5.477 F F1<8c72>4.888 E (st)-.1 E F0(to)3.658 E F1(last)3.068 E F0 .478 -(is selected from the his-)3.658 F .882(tory list.)144 326.4 R F1 -.45 +(is selected from the his-)3.658 F .882(tory list.)144 302.4 R F1 -.45 (Fi)5.882 G -.1(rs).45 G(t).1 E F0(and)4.062 E F1(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 -338.4 R 3.297(xi)-.15 G .797(nto the history list, where a ne)-3.297 F +314.4 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 350.4 Q .277(fset from the current command number\).)-.25 F +.15 F(of)144 326.4 Q .277(fset from the current command number\).)-.25 F (If)5.277 E F1(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 362.4 R/F4 10/Courier@0 SF .092 +(for listing \(so that)144 338.4 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 F1<8c72>4.502 E(st)-.1 E F0 2.592(otherwise. If)3.272 F F1<8c72> 4.502 E(st)-.1 E F0 .093(is not)3.273 F -(speci\214ed it is set to the pre)144 374.4 Q -(vious command for editing and \25516 for listing.)-.25 E(The)144 398.4 +(speci\214ed it is set to the pre)144 350.4 Q +(vious command for editing and \25516 for listing.)-.25 E(The)144 374.4 Q F22.522 E F0 .022 (option suppresses the command numbers when listing.)2.522 F(The)5.022 E F22.522 E F0 .022(option re)2.522 F -.15(ve)-.25 G .022 -(rses the order of).15 F .438(the commands.)144 410.4 R .438(If the) +(rses the order of).15 F .438(the commands.)144 386.4 R .438(If the) 5.438 F F22.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 422.4 R -.15(ve)-.25 G 2.835(nb).15 G(y)-2.835 E +.335(the editor gi)144 398.4 R -.15(ve)-.25 G 2.835(nb).15 G(y)-2.835 E F1(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 F1(ename)3.024 E F0 .334(is not gi)3.014 F -.15(ve)-.25 G -(n,).15 E .63(the v)144 434.4 R .63(alue of the)-.25 F F3(FCEDIT)3.13 E +(n,).15 E .63(the v)144 410.4 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 1.884(ther v)144 446.4 R 1.884 +(is not set.)2.881 F .631(If nei-)5.631 F 1.884(ther v)144 422.4 R 1.884 (ariable is set, is used.)-.25 F 1.884 (When editing is complete, the edited commands are echoed and)6.884 F --.15(exe)144 458.4 S(cuted.).15 E .039(In the second form,)144 482.4 R +-.15(exe)144 434.4 S(cuted.).15 E .039(In the second form,)144 458.4 R F1(command)2.539 E F0 .039(is re-e)2.539 F -.15(xe)-.15 G .039 (cuted after each instance of).15 F F1(pat)2.54 E F0 .04(is replaced by) 2.54 F F1 -.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 494.4 R F4 .406(r='fc \255s')2.906 F F0 +(alias to use with this is)144 470.4 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 506.4 Q F0(and typing)2.5 E F4(r)2.5 E F0(re-e)2.5 E +-.15 F F4(cc)144 482.4 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 530.4 R .142 +(If the \214rst form is used, the return v)144 506.4 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 .455(specify history lines out of range.)144 542.4 +E F1(last)2.732 E F0 .455(specify history lines out of range.)144 518.4 R .454(If the)5.454 F F22.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 554.4 R -.15(xe)-.15 G .787 +(alue of the)-.25 F .787(last command e)144 530.4 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 -566.4 R -.15(xe)-.15 G 1.135(cuted, unless).15 F F1(cmd)3.835 E F0 1.135 -(does not)4.405 F(specify a v)144 578.4 Q +542.4 R -.15(xe)-.15 G 1.135(cuted, unless).15 F F1(cmd)3.835 E F0 1.135 +(does not)4.405 F(specify a v)144 554.4 Q (alid history line, in which case)-.25 E F2(fc)2.5 E F0(returns f)2.5 E -(ailure.)-.1 E F2(fg)108 595.2 Q F0([)2.5 E F1(jobspec)A F0(])A(Resume) -144 607.2 Q F1(jobspec)5.653 E F0 1.413(in the fore)4.223 F 1.413 +(ailure.)-.1 E F2(fg)108 571.2 Q F0([)2.5 E F1(jobspec)A F0(])A(Resume) +144 583.2 Q F1(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 F1(jobspec)5.653 E F0 -1.414(is not present, the)4.223 F(shell')144 619.2 Q 3.117(sn)-.55 G +1.414(is not present, the)4.223 F(shell')144 595.2 Q 3.117(sn)-.55 G .617(otion of the)-3.117 F F1(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 631.2 Q +(alue is that of the command placed into the)-.25 F(fore)144 607.2 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 F1(jobspec)145.74 643.2 Q +(hen run with job control enabled, if)-2.862 F F1(jobspec)145.74 619.2 Q F0 .004(does not specify a v)2.815 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 F2(getopts)108 660 Q F1 +(as started without job control.)-.1 F F2(getopts)108 636 Q F1 (optstring name)2.5 E F0([)2.5 E F1(ar)A(gs)-.37 E F0(])A F2(getopts)144 -672 Q F0 .793 +648 Q F0 .793 (is used by shell procedures to parse positional parameters.)3.293 F F1 (optstring)6.023 E F0 .793(contains the option)3.513 F .15 -(characters to be recognized; if a character is follo)144 684 R .149 +(characters to be recognized; if a character is follo)144 660 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 696 Q .578 +-.15(ve a)-.2 H(n).15 E(ar)144 672 Q .578 (gument, which should be separated from it by white space.)-.18 F .579 (The colon and question mark char)5.579 F(-)-.2 E 1.665 -(acters may not be used as option characters.)144 708 R 1.665 +(acters may not be used as option characters.)144 684 R 1.665 (Each time it is in)6.665 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F2(getopts) 4.165 E F0 1.665(places the ne)4.165 F(xt)-.15 E .796 -(option in the shell v)144 720 R(ariable)-.25 E F1(name)3.296 E F0 3.296 +(option in the shell v)144 696 R(ariable)-.25 E F1(name)3.296 E F0 3.296 (,i).18 G(nitializing)-3.296 E F1(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(GNU Bash-3.0)72 768 Q(2004 Apr 20)148.735 -E(7)203.725 E 0 Cg EP +.797(he ne)-3.297 F(xt)-.15 E(ar)144 708 Q .085 +(gument to be processed into the v)-.18 F(ariable)-.25 E F3(OPTIND)2.585 +E/F5 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 720 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 F2 +(getopts)3.346 E F0 .846(places that ar)3.346 F(gument)-.18 E +(GNU Bash-3.0)72 768 Q(2004 Apr 20)148.735 E(7)203.725 E 0 Cg EP %%Page: 8 8 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E(ar)144 84 Q -.085(gument to be processed into the v)-.18 F(ariable)-.25 E/F1 9 -/Times-Bold@0 SF(OPTIND)2.585 E/F2 9/Times-Roman@0 SF(.)A F1(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 96 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 10 -/Times-Bold@0 SF(getopts)3.346 E F0 .846(places that ar)3.346 F(gument) --.18 E .804(into the v)144 108 R(ariable)-.25 E F1(OPT)3.304 E(ARG)-.81 -E F2(.)A F0 .803(The shell does not reset)5.304 F F1(OPTIND)3.303 E F0 -.803(automatically; it must be manually)3.053 F .293 -(reset between multiple calls to)144 120 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 132 Q -2.044(When the end of options is encountered,)144 156 R F3(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 168 Q F0 -(is set to the inde)2.5 E 2.5(xo)-.15 G 2.5(ft)-2.5 G -(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F3(name)2.5 E F0 -(is set to ?.)2.5 E F3(getopts)144 192 Q F0 2.392 +(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E .804 +(into the v)144 84 R(ariable)-.25 E/F1 9/Times-Bold@0 SF(OPT)3.304 E +(ARG)-.81 E/F2 9/Times-Roman@0 SF(.)A F0 .803(The shell does not reset) +5.304 F F1(OPTIND)3.303 E F0 .803(automatically; it must be manually) +3.053 F .293(reset between multiple calls to)144 96 R/F3 10/Times-Bold@0 +SF(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 108 Q 2.044(When the end of options is encountered,) +144 132 R F3(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 144 Q F0(is set to the inde)2.5 E 2.5(xo)-.15 G 2.5(ft)-2.5 +G(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F3(name)2.5 E F0 +(is set to ?.)2.5 E F3(getopts)144 168 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/F4 10/Times-Italic@0 SF(ar)4.893 E(gs)-.37 E F0(,) -.27 E F3(getopts)144 204 Q F0(parses those instead.)2.5 E F3(getopts)144 -228 Q F0 1.166(can report errors in tw)3.666 F 3.665(ow)-.1 G 3.665 +.27 E F3(getopts)144 180 Q F0(parses those instead.)2.5 E F3(getopts)144 +204 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 F4(optstring) 3.895 E F0 1.165(is a colon,)3.885 F F4(silent)4.005 E F0(error)4.345 E -1.263(reporting is used.)144 240 R 1.263 +1.263(reporting is used.)144 216 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 252 +-.25(va)-.4 G 1.263(lid options or).25 F .394(missing option ar)144 228 R .394(guments are encountered.)-.18 F .394(If the v)5.394 F(ariable) -.25 E F1(OPTERR)2.894 E F0 .394(is set to 0, no error messages)2.644 F -(will be displayed, e)144 264 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 +(will be displayed, e)144 240 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214rst character of)-2.5 E F4(optstring)2.73 E F0(is not a colon.) -2.72 E .666(If an in)144 288 R -.25(va)-.4 G .666(lid option is seen,) +2.72 E .666(If an in)144 264 R -.25(va)-.4 G .666(lid option is seen,) .25 F F3(getopts)3.166 E F0 .667(places ? into)3.167 F F4(name)3.527 E F0 .667(and, if not silent, prints an error message)3.347 F .4 -(and unsets)144 300 R F1(OPT)2.9 E(ARG)-.81 E F2(.)A F0(If)4.899 E F3 +(and unsets)144 276 R F1(OPT)2.9 E(ARG)-.81 E F2(.)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 F1(OPT)2.899 E(ARG)-.81 E F0 .399(and no)2.649 F(diagnostic message is printed.)144 -312 Q 1.241(If a required ar)144 336 R 1.241(gument is not found, and) +288 Q 1.241(If a required ar)144 312 R 1.241(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.742(\)i).833 G 3.742(sp)-3.742 G 1.242 -(laced in)-3.742 F F4(name)144 348 Q F0(,).18 E F1(OPT)2.735 E(ARG)-.81 +(laced in)-3.742 F F4(name)144 324 Q F0(,).18 E F1(OPT)2.735 E(ARG)-.81 E F0 .234(is unset, and a diagnostic message is printed.)2.485 F(If) 5.234 E F3(getopts)2.734 E F0 .234(is silent, then a colon \()2.734 F F3 -(:).833 E F0(\)).833 E(is placed in)144 360 Q F4(name)2.86 E F0(and)2.68 +(:).833 E F0(\)).833 E(is placed in)144 336 Q F4(name)2.86 E F0(and)2.68 E F1(OPT)2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 -E F3(getopts)144 384 Q F0 .902 +E F3(getopts)144 360 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 396 Q F3(hash)108 412.8 +(options is encountered or an error occurs.)144 372 Q F3(hash)108 388.8 Q F0([)2.5 E F3(\255lr)A F0 2.5(][)C F3-2.5 E F4(\214lename)2.5 E F0 2.5(][)C F3(\255dt)-2.5 E F0 2.5(][)C F4(name)-2.5 E F0(])A -.15(Fo) -144 424.8 S 3.555(re).15 G(ach)-3.555 E F4(name)3.555 E F0 3.555(,t).18 +144 400.8 S 3.555(re).15 G(ach)-3.555 E F4(name)3.555 E F0 3.555(,t).18 G 1.054(he full \214le name of the command is determined by searching t\ -he directories in)-3.555 F F3($P)144 436.8 Q -.95(AT)-.74 G(H).95 E F0 +he directories in)-3.555 F F3($P)144 412.8 Q -.95(AT)-.74 G(H).95 E F0 .349(and remembered.)2.849 F .349(If the)5.349 F F32.849 E F0 .349 (option is supplied, no path search is performed, and)2.849 F F4 (\214lename)4.76 E F0 .452 -(is used as the full \214le name of the command.)144 448.8 R(The)5.452 E +(is used as the full \214le name of the command.)144 424.8 R(The)5.452 E F32.952 E F0 .452(option causes the shell to for)2.952 F .452 -(get all remem-)-.18 F .592(bered locations.)144 460.8 R(The)5.592 E F3 +(get all remem-)-.18 F .592(bered locations.)144 436.8 R(The)5.592 E F3 3.092 E F0 .593(option causes the shell to for)3.092 F .593 (get the remembered location of each)-.18 F F4(name)3.093 E F0(.)A .021 -(If the)144 472.8 R F32.521 E F0 .021 +(If the)144 448.8 R F32.521 E F0 .021 (option is supplied, the full pathname to which each)2.521 F F4(name) 2.52 E F0 .02(corresponds is printed.)2.52 F .02(If multi-)5.02 F(ple) -144 484.8 Q F4(name)3.703 E F0(ar)3.703 E 1.203 +144 460.8 Q F4(name)3.703 E F0(ar)3.703 E 1.203 (guments are supplied with)-.18 F F33.703 E F0 3.703(,t)C(he) -3.703 E F4(name)3.703 E F0 1.204 -(is printed before the hashed full pathname.)3.703 F(The)144 496.8 Q F3 +(is printed before the hashed full pathname.)3.703 F(The)144 472.8 Q F3 3.216 E F0 .715(option causes output to be displayed in a format \ that may be reused as input.)3.216 F .715(If no ar)5.715 F(gu-)-.18 E -1.183(ments are gi)144 508.8 R -.15(ve)-.25 G 1.183(n, or if only).15 F +1.183(ments are gi)144 484.8 R -.15(ve)-.25 G 1.183(n, or if only).15 F F33.683 E F0 1.184 (is supplied, information about remembered commands is printed.)3.684 F -(The return status is true unless a)144 520.8 Q F4(name)2.86 E F0 +(The return status is true unless a)144 496.8 Q F4(name)2.86 E F0 (is not found or an in)2.68 E -.25(va)-.4 G(lid option is supplied.).25 -E F3(help)108 537.6 Q F0([)2.5 E F3A F0 2.5(][)C F4(pattern)-2.5 E -F0(])A .867(Display helpful information about b)144 549.6 R .867 +E F3(help)108 513.6 Q F0([)2.5 E F3A F0 2.5(][)C F4(pattern)-2.5 E +F0(])A .867(Display helpful information about b)144 525.6 R .867 (uiltin commands.)-.2 F(If)5.867 E F4(pattern)4.617 E F0 .866 (is speci\214ed,)3.607 F F3(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 -561.6 R F4(pattern)2.806 E F0 2.807(;o).24 G .307 +537.6 R F4(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 .596(tures is printed.)144 573.6 +(uiltins and shell control struc-)-.2 F .596(tures is printed.)144 549.6 R(The)5.596 E F33.096 E F0 .596 (option restricts the information displayed to a short usage synopsis.) 3.096 F(The)5.596 E(return status is 0 unless no command matches)144 -585.6 Q F4(pattern)2.5 E F0(.).24 E F3(history [)108 602.4 Q F4(n)A F3 -(])A(history \255c)108 614.4 Q(history \255d)108 626.4 Q F4(of)2.5 E -(fset)-.18 E F3(history \255anrw)108 638.4 Q F0([)2.5 E F4(\214lename)A -F0(])A F3(history \255p)108 650.4 Q F4(ar)2.5 E(g)-.37 E F0([)2.5 E F4 -(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A F3(history \255s)108 662.4 Q F4(ar) +561.6 Q F4(pattern)2.5 E F0(.).24 E F3(history [)108 578.4 Q F4(n)A F3 +(])A(history \255c)108 590.4 Q(history \255d)108 602.4 Q F4(of)2.5 E +(fset)-.18 E F3(history \255anrw)108 614.4 Q F0([)2.5 E F4(\214lename)A +F0(])A F3(history \255p)108 626.4 Q F4(ar)2.5 E(g)-.37 E F0([)2.5 E F4 +(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A F3(history \255s)108 638.4 Q F4(ar) 2.5 E(g)-.37 E F0([)2.5 E F4(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi) -144 674.4 S .752 +144 650.4 S .752 (th no options, display the command history list with line numbers.).4 F .752(Lines listed with a)5.752 F F3(*)3.252 E F0(ha)3.252 E -.15(ve)-.2 -G 1.231(been modi\214ed.)144 686.4 R 1.231(An ar)6.231 F 1.231 +G 1.231(been modi\214ed.)144 662.4 R 1.231(An ar)6.231 F 1.231 (gument of)-.18 F F4(n)4.091 E F0 1.231(lists only the last)3.971 F F4 (n)4.091 E F0 3.73(lines. If)3.97 F 1.23(the shell v)3.73 F(ariable)-.25 -E F3(HISTTIME-)3.73 E(FORMA)144 698.4 Q(T)-.95 E F0 .249 +E F3(HISTTIME-)3.73 E(FORMA)144 674.4 Q(T)-.95 E F0 .249 (is set and not null, it is used as a format string for)2.749 F F4 (strftime)2.75 E F0 .25(\(3\) to display the time stamp)B .379 -(associated with each displayed history entry)144 710.4 R 5.379(.N)-.65 +(associated with each displayed history entry)144 686.4 R 5.379(.N)-.65 G 2.878(oi)-5.379 G(nterv)-2.878 E .378 (ening blank is printed between the format-)-.15 F .814 -(ted time stamp and the history line.)144 722.4 R(If)5.814 E F4 +(ted time stamp and the history line.)144 698.4 R(If)5.814 E F4 (\214lename)3.314 E F0 .814 (is supplied, it is used as the name of the history)3.314 F -(GNU Bash-3.0)72 768 Q(2004 Apr 20)148.735 E(8)203.725 E 0 Cg EP +(\214le; if not, the v)144 710.4 Q(alue of)-.25 E F1(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(GNU Bash-3.0)72 768 Q(2004 Apr 20) +148.735 E(8)203.725 E 0 Cg EP %%Page: 9 9 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E -(\214le; if not, the v)144 84 Q(alue of)-.25 E/F1 9/Times-Bold@0 SF -(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/F2 10/Times-Bold@0 SF -144 96 Q F0(Clear the history list by deleting all the entries.) -25.86 E F2144 108 Q/F3 10/Times-Italic@0 SF(of)2.5 E(fset)-.18 E -F0(Delete the history entry at position)180 120 Q F3(of)2.5 E(fset)-.18 -E F0(.)A F2144 132 Q F0 .599(Append the `)25.3 F(`ne)-.74 E(w') --.25 E 3.099('h)-.74 G .598 +(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10 +/Times-Bold@0 SF144 84 Q F0 +(Clear the history list by deleting all the entries.)25.86 E F1144 +96 Q/F2 10/Times-Italic@0 SF(of)2.5 E(fset)-.18 E F0 +(Delete the history entry at position)180 108 Q F2(of)2.5 E(fset)-.18 E +F0(.)A F1144 120 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 F2(bash)180 144 Q F0 -(session\) to the history \214le.)2.5 E F2144 156 Q F0 .854(Read \ +(ginning of the current)-.15 F F1(bash)180 132 Q F0 +(session\) to the history \214le.)2.5 E F1144 144 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 168 R -.772(ginning of the current)-.15 F F2(bash)3.272 E F0(ses-)3.272 E -(sion.)180 180 Q F2144 192 Q F0(Read the contents of the history \ -\214le and use them as the current history)25.86 E(.)-.65 E F2144 -204 Q F0(Write the current history to the history \214le, o)23.08 E -.15 +(These are lines appended to the history \214le since the be)180 156 R +.772(ginning of the current)-.15 F F1(bash)3.272 E F0(ses-)3.272 E +(sion.)180 168 Q F1144 180 Q F0(Read the contents of the history \ +\214le and use them as the current history)25.86 E(.)-.65 E F1144 +192 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 F2144 216 Q F0 .625 -(Perform history substitution on the follo)24.74 F(wing)-.25 E F3(ar) +-2.5 E F1144 204 Q F0 .625 +(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 228 R .475 -(not store the results in the history list.)2.975 F(Each)5.475 E F3(ar) +2.975(output. Does)180 216 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 240 Q(xpansion.)-.15 E F2144 252 Q F0 .362 -(Store the)26.41 F F3(ar)3.192 E(gs)-.37 E F0 .363 +(normal history e)180 228 Q(xpansion.)-.15 E F1144 240 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 264 Q -.15(ve) --.15 G 2.5(db).15 G(efore the)-2.5 E F3(ar)2.83 E(gs)-.37 E F0 -(are added.)2.77 E .28(If the)144 280.8 R F2(HISTTIMEFORMA)2.78 E(T)-.95 +(he last command in the history list is)-5.363 F(remo)180 252 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 .28(If the)144 268.8 R F1(HISTTIMEFORMA)2.78 E(T)-.95 E F0 .28 (is set, the time stamp information associated with each history entry) -2.78 F .539(is written to the history \214le, mark)144 292.8 R .539 -(ed with the history comment character)-.1 F 5.54(.W)-.55 G .54 -(hen the history \214le is)-5.54 F 1.779(read, lines be)144 304.8 R -1.779(ginning with the history comment character follo)-.15 F 1.778 -(wed immediately by a digit are)-.25 F 1.424 -(interpreted as timestamps for the pre)144 316.8 R 1.424 -(vious history line.)-.25 F 1.424(The return v)6.424 F 1.424 -(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 328.8 R -.25(va)-.4 G(lid).25 E F3(of)2.999 E(fset)-.18 E F0 -(is)2.999 E(supplied as an ar)144 340.8 Q(gument to)-.18 E F22.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 F22.5 E F0 -.1 -(fa)2.5 G(ils.).1 E F2(jobs)108 357.6 Q F0([)2.5 E F2(\255lnprs)A F0 2.5 -(][)C F3(jobspec)A F0(... ])2.5 E F2(jobs \255x)108 369.6 Q F3(command) -2.5 E F0([)2.5 E F3(ar)2.5 E(gs)-.37 E F0(... ])2.5 E -(The \214rst form lists the acti)144 381.6 Q .3 -.15(ve j)-.25 H 2.5 -(obs. The).15 F(options ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F2144 393.6 Q F0 -(List process IDs in addition to the normal information.)27.52 E F2 -144 405.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 F2144 417.6 Q F0 +2.78 F .216(is written to the history \214le.)144 280.8 R .216 +(The return v)5.216 F .216(alue is 0 unless an in)-.25 F -.25(va)-.4 G +.216(lid option is encountered, an error).25 F .422 +(occurs while reading or writing the history \214le, an in)144 292.8 R +-.25(va)-.4 G(lid).25 E F2(of)2.922 E(fset)-.18 E F0 .422 +(is supplied as an ar)2.922 F .421(gument to)-.18 F F12.921 E F0 +(,)A(or the history e)144 304.8 Q(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 +321.6 Q F0([)2.5 E F1(\255lnprs)A F0 2.5(][)C F2(jobspec)A F0(... ])2.5 +E F1(jobs \255x)108 333.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 345.6 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 357.6 Q F0 +(List process IDs in addition to the normal information.)27.52 E F1 +144 369.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 381.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 429.6 Q F2144 441.6 Q F0 -(Restrict output to running jobs.)25.86 E F2144 453.6 Q F0 -(Restrict output to stopped jobs.)26.41 E(If)144 470.4 Q F3(jobspec) +(\214ed of their status.)180 393.6 Q F1144 405.6 Q F0 +(Restrict output to running jobs.)25.86 E F1144 417.6 Q F0 +(Restrict output to stopped jobs.)26.41 E(If)144 434.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 482.4 Q -.25 +-.4 G .313(he return status is 0 unless)-5.313 F(an in)144 446.4 Q -.25 (va)-.4 G(lid option is encountered or an in).25 E -.25(va)-.4 G(lid).25 -E F3(jobspec)4.24 E F0(is supplied.)2.81 E .394(If the)144 499.2 R F2 -2.894 E F0 .394(option is supplied,)2.894 F F2(jobs)2.894 E F0 -.394(replaces an)2.894 F(y)-.15 E F3(jobspec)4.634 E F0 .394(found in) -3.204 F F3(command)3.094 E F0(or)3.664 E F3(ar)3.224 E(gs)-.37 E F0 .395 -(with the corre-)3.164 F(sponding process group ID, and e)144 511.2 Q --.15(xe)-.15 G(cutes).15 E F3(command)2.7 E F0(passing it)3.27 E F3(ar) +E F2(jobspec)4.24 E F0(is supplied.)2.81 E .394(If the)144 463.2 R F1 +2.894 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 475.2 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 -F2(kill)108 528 Q F0([)2.5 E F2A F3(sigspec)2.5 E F0(|)2.5 E F2 -2.5 E F3(signum)2.5 E F0(|)2.5 E F22.5 E F3(sigspec)A F0 2.5 -(][)C F3(pid)-2.5 E F0(|)2.5 E F3(jobspec)2.5 E F0 2.5(].)C(..)-2.5 E F2 -(kill \255l)108 540 Q F0([)2.5 E F3(sigspec)A F0(|)2.5 E F3 -.2(ex)2.5 G -(it_status).2 E F0(])A .12(Send the signal named by)144 552 R F3 -(sigspec)2.96 E F0(or)2.93 E F3(signum)2.96 E F0 .119 -(to the processes named by)2.939 F F3(pid)3.869 E F0(or)3.389 E F3 -(jobspec)2.619 E F0(.).31 E F3(sigspec)5.459 E F0(is)2.929 E .318 -(either a case-insensiti)144 564 R .618 -.15(ve s)-.25 H .318 -(ignal name such as).15 F F1(SIGKILL)2.818 E F0 .319 -(\(with or without the)2.569 F F1(SIG)2.819 E F0 .319 -(pre\214x\) or a signal)2.569 F(number;)144 576 Q F3(signum)4.189 E F0 -1.349(is a signal number)4.169 F 6.349(.I)-.55 G(f)-6.349 E F3(sigspec) -4.189 E F0 1.349(is not present, then)4.159 F F1(SIGTERM)3.849 E F0 -1.348(is assumed.)3.599 F(An)6.348 E(ar)144 588 Q .522(gument of)-.18 F -F23.023 E F0 .523(lists the signal names.)3.023 F .523(If an)5.523 +F1(kill)108 492 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 504 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 516 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 528 R .618 -.15(ve s)-.25 H .318 +(ignal name such as).15 F/F3 9/Times-Bold@0 SF(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 540 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) +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 552 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 -F23.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 600 R .28 -(guments are listed, and the return status is 0.)-.18 F(The)5.28 E F3 --.2(ex)2.78 G(it_status).2 E F0(ar)144 612 Q .377(gument to)-.18 F F2 +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 564 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 576 Q .377(gument to)-.18 F F1 2.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 624 R -F2(kill)5.593 E F0 .593(returns true if at least one signal w)3.093 F +(xit status of a process termi-)-.15 F .594(nated by a signal.)144 588 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 .593(alse if an error)-.1 F -(occurs or an in)144 636 Q -.25(va)-.4 G(lid option is encountered.).25 -E F2(let)108 652.8 Q F3(ar)2.5 E(g)-.37 E F0([)2.5 E F3(ar)A(g)-.37 E F0 -(...])2.5 E(Each)144 664.8 Q F3(ar)3.964 E(g)-.37 E F0 1.134 +(occurs or an in)144 600 Q -.25(va)-.4 G(lid option is encountered.).25 +E F1(let)108 616.8 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 628.8 Q F2(ar)3.964 E(g)-.37 E F0 1.134 (is an arithmetic e)3.854 F 1.134(xpression to be e)-.15 F -.25(va)-.25 -G 1.135(luated \(see).25 F F1 1.135(ARITHMETIC EV)3.635 F(ALU)-1.215 E +G 1.135(luated \(see).25 F F3 1.135(ARITHMETIC EV)3.635 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E/F4 9/Times-Roman@0 SF(\).)A F0 1.135(If the) -5.635 F(last)144 676.8 Q F3(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 693.6 Q F0([)2.5 E F3(option)A F0 2.5(][)C F3(name) --2.5 E F0([=)A F3(value)A F0 2.5(].)C(..])-2.5 E -.15(Fo)144 705.6 S +5.635 F(last)144 640.8 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 657.6 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 669.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 F3(name)2.92 E F0 .06(is created, and assigned) -2.74 F F3(value)2.56 E F0 5.06(.T).18 G(he)-5.06 E F3(option)2.56 E F0 -.06(can be)2.56 F(an)144 717.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 +(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 681.6 Q 3.152(yo)-.15 G 3.152(ft)-3.152 G .652 +(he options accepted by)-3.152 F F1(declar)3.152 E(e)-.18 E F0 5.652(.W) +C(hen)-5.652 E F1(local)3.152 E F0 .653 (is used within a function, it causes the v)3.152 F(ari-)-.25 E(able)144 -729.6 Q F3(name)3.721 E F0 .861(to ha)3.541 F 1.161 -.15(ve a v)-.2 H +693.6 Q F2(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(GNU Bash-3.0)72 768 Q -(2004 Apr 20)148.735 E(9)203.725 E 0 Cg EP +-.4(Wi)5.86 G .86(th no operands,).4 F F1(local)144 705.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 F1(local)3.665 E F0 1.165(when not)3.665 F .233 +(within a function.)144 717.6 R .233(The return status is 0 unless)5.233 +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.092 E F0(is)2.912 E(supplied, or)144 +729.6 Q F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E +(GNU Bash-3.0)72 768 Q(2004 Apr 20)148.735 E(9)203.725 E 0 Cg EP %%Page: 10 10 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 (TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10 -/Times-Bold@0 SF(local)144 84 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 F1(local)3.665 E F0 1.165(when not)3.665 -F .233(within a function.)144 96 R .233(The return status is 0 unless) -5.233 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 10/Times-Italic@0 SF(name)3.092 E F0(is) -2.912 E(supplied, or)144 108 Q F2(name)2.5 E F0(is a readonly v)2.5 E -(ariable.)-.25 E F1(logout)108 124.8 Q F0(Exit a login shell.)9.33 E F1 -(popd)108 141.6 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 153.6 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 -165.6 R F1(cd)3.979 E F0 1.479(to the ne)3.979 F 3.979(wt)-.25 G 1.479 +/Times-Bold@0 SF(logout)108 84 Q F0(Exit a login shell.)9.33 E F1(popd) +108 100.8 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E/F2 10 +/Times-Italic@0 SF(n)A F0 2.5(][)C-2.5 E F2(n)A F0(])A(Remo)144 +112.8 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 +124.8 R F1(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 177.6 Q F1144 189.6 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 201.6 Q F1(+)144 213.6 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 -F1(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero.)-2.64 F -.15(Fo)180 -225.6 S 2.5(re).15 G(xample:)-2.65 E/F3 10/Courier@0 SF(popd +0)2.5 E F0 +F(wing)-.25 E(meanings:)144 136.8 Q F1(+)144 148.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 F1 +(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero.)-2.64 F -.15(Fo)180 +160.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 F3(popd +1)2.5 E F0(the second.)2.5 E F1144 237.6 Q F2(n)A F0 -(Remo)25.3 E -.15(ve)-.15 G 3.759(st).15 G(he)-3.759 E F2(n)3.759 E F0 -1.259(th entry counting from the right of the list sho)B 1.26(wn by)-.25 -F F1(dirs)3.76 E F0 3.76(,s)C 1.26(tarting with)-3.76 F 2.5(zero. F)180 -249.6 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 .644(If the)144 266.4 R F1(popd) -3.144 E F0 .644(command is successful, a)3.144 F F1(dirs)3.143 E F0 .643 -(is performed as well, and the return status is 0.)3.143 F F1(popd)5.643 -E F0 .415(returns f)144 278.4 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 +-.65 E F3(popd +1)2.5 E F0(the second.)2.5 E F1144 172.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 184.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 F1144 196.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 208.8 Q .644(If the)144 225.6 R +F1(popd)3.144 E F0 .644(command is successful, a)3.144 F F1(dirs)3.143 E +F0 .643(is performed as well, and the return status is 0.)3.143 F F1 +(popd)5.643 E F0 .415(returns f)144 237.6 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 290.4 Q -(ails.)-.1 E F1(printf)108 307.2 Q F0([)2.5 E F1A F2(var)2.5 E F0 +(tory stack entry is speci\214ed, or the directory change f)144 249.6 Q +(ails.)-.1 E F1(printf)108 266.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 .372 -(Write the formatted)144 319.2 R F2(ar)2.872 E(guments)-.37 E F0 .372 +(Write the formatted)144 278.4 R F2(ar)2.872 E(guments)-.37 E F0 .372 (to the standard output under the control of the)2.872 F F2(format)2.872 E F0 5.372(.T)C(he)-5.372 E F2(format)2.872 E F0 1.804(is a character s\ tring which contains three types of objects: plain characters, which ar\ -e simply)144 331.2 R .159 +e simply)144 290.4 R .159 (copied to standard output, character escape sequences, which are con) -144 343.2 R -.15(ve)-.4 G .158(rted and copied to the stan-).15 F .499(\ +144 302.4 R -.15(ve)-.4 G .158(rted and copied to the stan-).15 F .499(\ dard output, and format speci\214cations, each of which causes printing\ - of the ne)144 355.2 R .5(xt successi)-.15 F -.15(ve)-.25 G F2(ar)3.15 E -(gu-)-.37 E(ment)144 367.2 Q F0 5.424(.I)C 2.924(na)-5.424 G .424 + of the ne)144 314.4 R .5(xt successi)-.15 F -.15(ve)-.25 G F2(ar)3.15 E +(gu-)-.37 E(ment)144 326.4 Q F0 5.424(.I)C 2.924(na)-5.424 G .424 (ddition to the standard)-2.924 F F2(printf)2.924 E F0 .424 (\(1\) formats,)B F1(%b)2.924 E F0(causes)2.923 E F1(printf)2.923 E F0 .423(to e)2.923 F .423(xpand backslash escape)-.15 F .976 -(sequences in the corresponding)144 379.2 R F2(ar)3.476 E(gument)-.37 E +(sequences in the corresponding)144 338.4 R F2(ar)3.476 E(gument)-.37 E F0(\(e)3.476 E .976(xcept that)-.15 F F1(\\c)3.476 E F0 .976 (terminates output, backslashes in)3.476 F F1<5c08>3.477 E F0(,)A F1 -(\\")3.477 E F0(,)A(and)144 391.2 Q F1(\\?)3.422 E F0 .922(are not remo) +(\\")3.477 E F0(,)A(and)144 350.4 Q F1(\\?)3.422 E F0 .922(are not remo) 3.422 F -.15(ve)-.15 G .922(d, and octal escapes be).15 F .922 (ginning with)-.15 F F1(\\0)3.422 E F0 .921 -(may contain up to four digits\), and)3.422 F F1(%q)144 403.2 Q F0 +(may contain up to four digits\), and)3.422 F F1(%q)144 362.4 Q F0 (causes)3.63 E F1(printf)3.63 E F0 1.13(to output the corresponding)3.63 F F2(ar)3.631 E(gument)-.37 E F0 1.131 -(in a format that can be reused as shell)3.631 F(input.)144 415.2 Q(The) -144 439.2 Q F12.904 E F0 .404 +(in a format that can be reused as shell)3.631 F(input.)144 374.4 Q(The) +144 398.4 Q F12.904 E F0 .404 (option causes the output to be assigned to the v)2.904 F(ariable)-.25 E F2(var)2.904 E F0 .404(rather than being printed to the)2.904 F -(standard output.)144 451.2 Q(The)144 475.2 Q F2(format)3.423 E F0 .923 +(standard output.)144 410.4 Q(The)144 434.4 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 487.2 Q(guments)-.37 E +3.423 E F0 .924(requires more)3.424 F F2(ar)144 446.4 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 .033(alue or null string,) --.25 F(as appropriate, had been supplied.)144 499.2 Q(The return v)5 E +-.25 F(as appropriate, had been supplied.)144 458.4 Q(The return v)5 E (alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E F1(pushd) -108 516 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 528 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 dire\ -ctory stack, or rotates the stack, making the ne)144 540 R 3.14(wt)-.25 -G .64(op of the)-3.14 F 1.316(stack the current w)144 552 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 564 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 576 Q F1 -144 588 Q F0 .902(Suppresses the normal change of directory when \ -adding directories to the stack, so that)24.74 F -(only the stack is manipulated.)180 600 Q F1(+)144 612 Q F2(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 624 Q F0 2.5(,s)C(tarting with zero\) is at the top.) --2.5 E F1144 636 Q F2(n)A F0 .92(Rotates the stack so that the)25.3 -F F2(n)3.42 E F0 .92 +108 475.2 Q F0([)2.5 E F1A F0 2.5(][)C F2(dir)-2.5 E F0(])A F1 +(pushd)108 487.2 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 .639(Adds a directory to the top of th\ +e directory stack, or rotates the stack, making the ne)144 499.2 R 3.14 +(wt)-.25 G .64(op of the)-3.14 F 1.316(stack the current w)144 511.2 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 523.2 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 535.2 Q +F1(+)144 547.2 Q F2(n)A F0 1.268(Rotates the stack so that the)25.3 F F2 +(n)3.768 E F0 1.267 +(th directory \(counting from the left of the list sho)B 1.267(wn by) +-.25 F F1(dirs)180 559.2 Q F0 2.5(,s)C +(tarting with zero\) is at the top.)-2.5 E F1144 571.2 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 F1(dirs)180 648 Q F0 2.5(,s)C(tarting with zero\) is at the top.)-2.5 -E F2(dir)144.35 660 Q F0(Adds)23.98 E F2(dir)2.85 E F0 +F F1(dirs)180 583.2 Q F0 2.5(,s)C(tarting with zero\) is at the top.) +-2.5 E F1144 595.2 Q F0 .902(Suppresses the normal change of dire\ +ctory when adding directories to the stack, so that)24.74 F +(only the stack is manipulated.)180 607.2 Q F2(dir)144.35 619.2 Q F0 +(Adds)23.98 E F2(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 .488(If the)144 676.8 -R F1(pushd)2.988 E F0 .488(command is successful, a)2.988 F F1(dirs) -2.988 E F0 .488(is performed as well.)2.988 F .489 +G(urrent w)-2.5 E(orking directory)-.1 E(.)-.65 E .488(If the)144 636 R +F1(pushd)2.988 E F0 .488(command is successful, a)2.988 F F1(dirs)2.988 +E F0 .488(is performed as well.)2.988 F .489 (If the \214rst form is used,)5.488 F F1(pushd)2.989 E F0 1.04 -(returns 0 unless the cd to)144 688.8 R F2(dir)3.89 E F0 -.1(fa)4.27 G +(returns 0 unless the cd to)144 648 R F2(dir)3.89 E F0 -.1(fa)4.27 G 3.539(ils. W).1 F 1.039(ith the second form,)-.4 F F1(pushd)3.539 E F0 -1.039(returns 0 unless the directory)3.539 F .846(stack is empty)144 -700.8 R 3.346(,an)-.65 G(on-e)-3.346 E .847(xistent directory stack ele\ -ment is speci\214ed, or the directory change to the)-.15 F -(speci\214ed ne)144 712.8 Q 2.5(wc)-.25 G(urrent directory f)-2.5 E -(ails.)-.1 E(GNU Bash-3.0)72 768 Q(2004 Apr 20)148.735 E(10)198.725 E 0 -Cg EP +1.039(returns 0 unless the directory)3.539 F .846(stack is empty)144 660 +R 3.346(,an)-.65 G(on-e)-3.346 E .847(xistent directory stack element i\ +s speci\214ed, or the directory change to the)-.15 F(speci\214ed ne)144 +672 Q 2.5(wc)-.25 G(urrent directory f)-2.5 E(ails.)-.1 E F1(pwd)108 +688.8 Q F0([)2.5 E F1(\255LP)A F0(])A .845 +(Print the absolute pathname of the current w)144 700.8 R .845 +(orking directory)-.1 F 5.844(.T)-.65 G .844 +(he pathname printed contains no)-5.844 F .181(symbolic links if the)144 +712.8 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 .182(iltin command is).2 F 3.264 +(enabled. If)144 724.8 R(the)3.264 E F13.264 E F0 .763 +(option is used, the pathname printed may contain symbolic links.)3.264 +F .763(The return)5.763 F(GNU Bash-3.0)72 768 Q(2004 Apr 20)148.735 E +(10)198.725 E 0 Cg EP %%Page: 11 11 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10 -/Times-Bold@0 SF(pwd)108 84 Q F0([)2.5 E F1(\255LP)A F0(])A .845 -(Print the absolute pathname of the current w)144 96 R .845 -(orking directory)-.1 F 5.844(.T)-.65 G .844 -(he pathname printed contains no)-5.844 F .181(symbolic links if the)144 -108 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 .182(iltin command is).2 F 3.264(enabled. If) -144 120 R(the)3.264 E F13.264 E F0 .763 -(option is used, the pathname printed may contain symbolic links.)3.264 -F .763(The return)5.763 F 1.36(status is 0 unless an error occurs while\ - reading the name of the current directory or an in)144 132 R -.25(va) --.4 G(lid).25 E(option is supplied.)144 144 Q F1 -.18(re)108 160.8 S(ad) -.18 E F0([)2.5 E F1(\255ers)A F0 2.5(][)C F1-2.5 E/F2 10 -/Times-Italic@0 SF(aname)2.5 E F0 2.5(][)C F1-2.5 E F2(delim)2.5 E -F0 2.5(][)C F1-2.5 E F2(nc)2.5 E(har)-.15 E(s)-.1 E F0 2.5(][)C F1 --2.5 E F2(pr)2.5 E(ompt)-.45 E F0 2.5(][)C F1-2.5 E F2 -(timeout)2.5 E F0 2.5(][)C F1-2.5 E F2(fd)2.5 E F0 2.5(][)C F2 -(name)-2.5 E F0(...])2.5 E .516(One line is read from the standard inpu\ -t, or from the \214le descriptor)144 172.8 R F2(fd)3.016 E F0 .516 -(supplied as an ar)3.016 F .516(gument to)-.18 F(the)144 184.8 Q F1 -2.538 E F0 .038(option, and the \214rst w)2.538 F .038 -(ord is assigned to the \214rst)-.1 F F2(name)2.539 E F0 2.539(,t).18 G -.039(he second w)-2.539 F .039(ord to the second)-.1 F F2(name)2.539 E -F0(,).18 E .42(and so on, with lefto)144 196.8 R -.15(ve)-.15 G 2.92(rw) -.15 G .42(ords and their interv)-3.02 F .42 +(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E 1.36(status\ + is 0 unless an error occurs while reading the name of the current dire\ +ctory or an in)144 84 R -.25(va)-.4 G(lid).25 E(option is supplied.)144 +96 Q/F1 10/Times-Bold@0 SF -.18(re)108 112.8 S(ad).18 E F0([)2.5 E F1 +(\255ers)A F0 2.5(][)C F1-2.5 E/F2 10/Times-Italic@0 SF(fd)2.5 E +F0 2.5(][)C F1-2.5 E F2(timeout)2.5 E F0 2.5(][)C F1-2.5 E +F2(aname)2.5 E F0 2.5(][)C F1-2.5 E F2(pr)2.5 E(ompt)-.45 E F0 2.5 +(][)C F1-2.5 E F2(nc)2.5 E(har)-.15 E(s)-.1 E F0 2.5(][)C F1 +-2.5 E F2(delim)2.5 E F0 2.5(][)C F2(name)-2.5 E F0(...])2.5 E .516(One\ + line is read from the standard input, or from the \214le descriptor)144 +124.8 R F2(fd)3.016 E F0 .516(supplied as an ar)3.016 F .516(gument to) +-.18 F(the)144 136.8 Q F12.538 E F0 .038 +(option, and the \214rst w)2.538 F .038(ord is assigned to the \214rst) +-.1 F F2(name)2.539 E F0 2.539(,t).18 G .039(he second w)-2.539 F .039 +(ord to the second)-.1 F F2(name)2.539 E F0(,).18 E .42 +(and so on, with lefto)144 148.8 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 F2(name)2.92 E F0 5.42(.I) -.18 G 2.92(ft)-5.42 G(here)-2.92 E .54(are fe)144 208.8 R .54(wer w)-.25 +.18 G 2.92(ft)-5.42 G(here)-2.92 E .54(are fe)144 160.8 R .54(wer w)-.25 F .541(ords read from the input stream than names, the remaining names \ -are assigned empty)-.1 F -.25(va)144 220.8 S 2.511(lues. The).25 F .011 +are assigned empty)-.1 F -.25(va)144 172.8 S 2.511(lues. The).25 F .011 (characters in)2.511 F/F3 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 F1(\\)A F0 2.51(\)m)C(ay)-2.51 E 1.89 -(be used to remo)144 232.8 R 2.19 -.15(ve a)-.15 H 2.19 -.15(ny s).15 H +(be used to remo)144 184.8 R 2.19 -.15(ve a)-.15 H 2.19 -.15(ny s).15 H 1.891(pecial meaning for the ne).15 F 1.891 (xt character read and for line continuation.)-.15 F -(Options, if supplied, ha)144 244.8 Q .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 256.8 Q F2(aname)2.5 E F0 1.05(The w) -180 268.8 R 1.049 +(Options, if supplied, ha)144 196.8 Q .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 208.8 Q F2(aname)2.5 E F0 1.05(The w) +180 220.8 R 1.049 (ords are assigned to sequential indices of the array v)-.1 F(ariable) -.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 280.8 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 +F2(aname)180.33 232.8 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 292.8 Q F2(delim)2.5 E -F0(The \214rst character of)180 304.8 Q F2(delim)2.5 E F0 +(ar)2.5 E(guments are ignored.)-.18 E F1144 244.8 Q F2(delim)2.5 E +F0(The \214rst character of)180 256.8 Q F2(delim)2.5 E F0 (is used to terminate the input line, rather than ne)2.5 E(wline.)-.25 E -F1144 316.8 Q F0 .372 +F1144 268.8 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 -(to obtain the line.)180 328.8 Q F1144 340.8 Q F2(nc)2.5 E(har) --.15 E(s)-.1 E F1 -.18(re)180 352.8 S(ad).18 E F0 1.395 +(to obtain the line.)180 280.8 Q F1144 292.8 Q F2(nc)2.5 E(har) +-.15 E(s)-.1 E F1 -.18(re)180 304.8 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.)180 364.8 Q F1144 376.8 Q F2(pr)2.5 E(ompt)-.45 E F0 -(Display)180 388.8 Q F2(pr)3.66 E(ompt)-.45 E F0 1.161 +-.1 F(input.)180 316.8 Q F1144 328.8 Q F2(pr)2.5 E(ompt)-.45 E F0 +(Display)180 340.8 Q F2(pr)3.66 E(ompt)-.45 E F0 1.161 (on standard error)3.66 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 400.8 Q +-3.661 F 1.161(wline, before attempting to read)-.25 F(an)180 352.8 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 412.8 Q F0 .544(Backslash does not act as an escape character) +144 364.8 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 424.8 Q(In particular)5 E 2.5(,ab)-.4 G +-5.543 F(the line.)180 376.8 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 F1144 436.8 Q F0(Silent mode.)26.41 E +-.25 E F1144 388.8 Q F0(Silent mode.)26.41 E (If input is coming from a terminal, characters are not echoed.)5 E F1 -144 448.8 Q F2(timeout)2.5 E F0(Cause)180 460.8 Q F1 -.18(re)3.548 +144 400.8 Q F2(timeout)2.5 E F0(Cause)180 412.8 Q F1 -.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 F2(timeout) -180 472.8 Q F0 2.92(seconds. This)2.92 F .42(option has no ef)2.92 F .42 +180 424.8 Q F0 2.92(seconds. This)2.92 F .42(option has no ef)2.92 F .42 (fect if)-.25 F F1 -.18(re)2.92 G(ad).18 E F0 .42 -(is not reading input from the terminal)2.92 F(or a pipe.)180 484.8 Q F1 -144 496.8 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 513.6 R F2(names)3.051 E F0 .191 +(is not reading input from the terminal)2.92 F(or a pipe.)180 436.8 Q F1 +144 448.8 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 465.6 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(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.218 -(unless end-of-\214le is encountered,)144 525.6 R F1 -.18(re)3.718 G(ad) +(unless end-of-\214le is encountered,)144 477.6 R F1 -.18(re)3.718 G(ad) .18 E F0 1.217(times out, or an in)3.718 F -.25(va)-.4 G 1.217 -(lid \214le descriptor is supplied as the).25 F(ar)144 537.6 Q -(gument to)-.18 E F12.5 E F0(.)A F1 -.18(re)108 554.4 S(adonly).18 +(lid \214le descriptor is supplied as the).25 F(ar)144 489.6 Q +(gument to)-.18 E F12.5 E F0(.)A F1 -.18(re)108 506.4 S(adonly).18 E F0([)2.5 E F1(\255apf)A 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 566.4 R -.15(ve)-.25 G(n) +-.37 E F0 2.5(].)C(..])-2.5 E .77(The gi)144 518.4 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.097(quent assignment.)144 578.4 R +(may not be changed by subse-)3.54 F 1.097(quent assignment.)144 530.4 R 1.097(If the)6.097 F F13.597 E F0 1.097 (option is supplied, the functions corresponding to the)3.597 F F2 -(names)3.596 E F0 1.096(are so)3.596 F(mark)144 590.4 Q 2.872(ed. The) +(names)3.596 E F0 1.096(are so)3.596 F(mark)144 542.4 Q 2.872(ed. The) -.1 F F12.872 E F0 .372(option restricts the v)2.872 F .372 (ariables to arrays.)-.25 F .372(If no)5.372 F F2(name)3.232 E F0(ar) 3.053 E .373(guments are gi)-.18 F -.15(ve)-.25 G .373(n, or if the).15 -F F1144 602.4 Q F0 .796 +F F1144 554.4 Q F0 .796 (option is supplied, a list of all readonly names is printed.)3.297 F (The)5.796 E F13.296 E F0 .796(option causes output to be)3.296 F -.828(displayed in a format that may be reused as input.)144 614.4 R .828 +.828(displayed in a format that may be reused as input.)144 566.4 R .828 (If a v)5.828 F .828(ariable name is follo)-.25 F .828(wed by =)-.25 F -F2(wor)A(d)-.37 E F0 3.328(,t)C(he)-3.328 E -.25(va)144 626.4 S .405 +F2(wor)A(d)-.37 E F0 3.328(,t)C(he)-3.328 E -.25(va)144 578.4 S .405 (lue of the v).25 F .405(ariable is set to)-.25 F F2(wor)2.905 E(d)-.37 E F0 5.405(.T)C .404(he return status is 0 unless an in)-5.405 F -.25 (va)-.4 G .404(lid option is encountered,).25 F 1.069(one of the)144 -638.4 R F2(names)3.929 E F0 1.069(is not a v)3.839 F 1.069(alid shell v) +590.4 R F2(names)3.929 E F0 1.069(is not a v)3.839 F 1.069(alid shell v) -.25 F 1.069(ariable name, or)-.25 F F13.569 E F0 1.069 (is supplied with a)3.569 F F2(name)3.929 E F0 1.069(that is not a)3.749 -F(function.)144 650.4 Q F1 -.18(re)108 667.2 S(tur).18 E(n)-.15 E F0([) -2.5 E F2(n)A F0(])A .587(Causes a function to e)144 679.2 R .587 +F(function.)144 602.4 Q F1 -.18(re)108 619.2 S(tur).18 E(n)-.15 E F0([) +2.5 E F2(n)A F0(])A .587(Causes a function to e)144 631.2 R .587 (xit with the return v)-.15 F .587(alue speci\214ed by)-.25 F F2(n)3.087 E F0 5.587(.I).24 G(f)-5.587 E F2(n)3.447 E F0 .586 (is omitted, the return status is)3.327 F 1.335 -(that of the last command e)144 691.2 R -.15(xe)-.15 G 1.335 +(that of the last command e)144 643.2 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 703.2 S .794(cution of a script by the).15 F F1(.)3.294 E F0(\() +144 655.2 S .794(cution of a script by the).15 F F1(.)3.294 E F0(\() 5.794 E F1(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 .794 -(cuting that script).15 F .245(and return either)144 715.2 R F2(n)3.105 +(cuting that script).15 F .245(and return either)144 667.2 R F2(n)3.105 E F0 .246(or the e)2.985 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 .246 -(xit sta-)-.15 F .978(tus of the script.)144 727.2 R .978 -(If used outside a function and not during e)5.978 F -.15(xe)-.15 G .978 -(cution of a script by).15 F F1(.)3.477 E F0 3.477(,t).833 G .977 -(he return)-3.477 F(GNU Bash-3.0)72 768 Q(2004 Apr 20)148.735 E(11) -198.725 E 0 Cg EP +(xit sta-)-.15 F .082(tus of the script.)144 679.2 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 F1(.)2.582 E F0 2.581(,t).833 G .081 +(he return sta-)-2.581 F 2.305(tus is f)144 691.2 R 4.805(alse. An)-.1 F +4.805(yc)-.15 G 2.305(ommand associated with the)-4.805 F F1(RETURN) +4.805 E F0 2.306(trap is e)4.806 F -.15(xe)-.15 G 2.306(cuted before e) +.15 F -.15(xe)-.15 G(cution).15 E(resumes after the function or script.) +144 703.2 Q(GNU Bash-3.0)72 768 Q(2004 Apr 20)148.735 E(11)198.725 E 0 +Cg EP %%Page: 12 12 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E 1.45 -(status is f)144 84 R 3.95(alse. An)-.1 F 3.951(yc)-.15 G 1.451 -(ommand associated with the)-3.951 F/F1 10/Times-Bold@0 SF(RETURN)3.951 -E F0 1.451(trap is e)3.951 F -.15(xe)-.15 G 1.451(cuted before e).15 F --.15(xe)-.15 G(cution).15 E(resumes after the function or script.)144 96 -Q F1(set)108 112.8 Q F0([)2.5 E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5 -(][)C F1-2.5 E/F2 10/Times-Italic@0 SF(option)2.5 E F0 2.5(][)C F2 -(ar)-2.5 E(g)-.37 E F0(...])2.5 E F1(set)108 124.8 Q F0([)2.5 E F1 -(+abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1(+o)-2.5 E F2(option)2.5 E F0 2.5 -(][)C F2(ar)-2.5 E(g)-.37 E F0(...])2.5 E -.4(Wi)144 136.8 S .836 +(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10 +/Times-Bold@0 SF(set)108 84 Q F0([)2.5 E F1(\255\255abefhkmnptuvxBCHP)A +F0 2.5(][)C F1-2.5 E/F2 10/Times-Italic@0 SF(option)2.5 E F0 2.5 +(][)C F2(ar)-2.5 E(g)-.37 E F0(...])2.5 E -.4(Wi)144 96 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 148.8 -R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .784 -(riables cannot be).25 F 2.947(reset. In)144 160.8 R F2 .447(posix mode) -2.947 F F0 2.947(,o)C .447(nly shell v)-2.947 F .447 -(ariables are listed.)-.25 F .447 +(reused as input for setting or resetting the currently-set v)144 108 R +3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .784(riables cannot be) +.25 F 2.947(reset. In)144 120 R F2 .447(posix mode)2.947 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.53 -(locale. When)144 172.8 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 .202 -(after the options are processed are treated as v)144 184.8 R .202 +(locale. When)144 132 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 .202 +(after the options are processed are treated as v)144 144 R .202 (alues for the positional parameters and are assigned,)-.25 F(in order) -144 196.8 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 208.8 Q -F0 .539(Automatically mark v)29.3 F .539 +144 156 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 168 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 220.8 Q(vironment of subsequent commands.) --.4 E F1144 232.8 Q F0 .132 +(xport to)-.15 F(the en)184 180 Q(vironment of subsequent commands.)-.4 +E F1144 192 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 244.8 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o) --.25 H(nly when job control is enabled.).15 E F1144 256.8 Q F0 -1.693(Exit immediately if a)29.86 F F2 1.693(simple command)4.193 F F0 -(\(see)4.193 E/F3 9/Times-Bold@0 SF 1.693(SHELL GRAMMAR)4.193 F F0(abo) -3.943 E -.15(ve)-.15 G 4.194(\)e).15 G 1.694(xits with a)-4.344 F .012 -(non-zero status.)184 268.8 R .012(The shell does not e)5.012 F .011 +(primary prompt.)184 204 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o)-.25 +H(nly when job control is enabled.).15 E F1144 216 Q F0 1.693 +(Exit immediately if a)29.86 F F2 1.693(simple command)4.193 F F0(\(see) +4.193 E/F3 9/Times-Bold@0 SF 1.693(SHELL GRAMMAR)4.193 F F0(abo)3.943 E +-.15(ve)-.15 G 4.194(\)e).15 G 1.694(xits with a)-4.344 F .012 +(non-zero status.)184 228 R .012(The shell does not e)5.012 F .011 (xit if the command that f)-.15 F .011(ails is part of the command)-.1 F -.718(list immediately follo)184 280.8 R .718(wing a)-.25 F F1(while) -3.218 E F0(or)3.218 E F1(until)3.219 E F0 -.1(ke)3.219 G(yw)-.05 E .719 -(ord, part of the test in an)-.1 F F1(if)3.219 E F0(statement,)3.219 E -1.164(part of a)184 292.8 R F1(&&)3.664 E F0(or)3.664 E/F4 10/Symbol SF -3.664 E F0 1.164(list, an)3.664 F 3.664(yc)-.15 G 1.164 -(ommand in a pipeline b)-3.664 F 1.164(ut the last, or if the command') --.2 F(s)-.55 E .699(return v)184 304.8 R .699(alue is being in)-.25 F --.15(ve)-.4 G .699(rted via).15 F F1(!)3.199 E F0 5.699(.A)C .699 -(trap on)-2.5 F F1(ERR)3.199 E F0 3.2(,i)C 3.2(fs)-3.2 G .7(et, is e) --3.2 F -.15(xe)-.15 G .7(cuted before the shell).15 F -.15(ex)184 316.8 -S(its.).15 E F1144 328.8 Q F0(Disable pathname e)30.97 E -(xpansion.)-.15 E F1144 340.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 352.8 Q(ault.)-.1 E F1 -144 364.8 Q F0 .513(All ar)28.74 F .514 +.624(list immediately follo)184 240 R .624(wing a)-.25 F F1(while)3.124 +E F0(or)3.124 E F1(until)3.124 E F0 -.1(ke)3.124 G(yw)-.05 E .624 +(ord, part of the test in an)-.1 F F2(if)3.134 E F0(statement,)5.084 E +.426(part of a)184 252 R F1(&&)2.926 E F0(or)2.926 E/F4 10/Symbol SF +2.926 E F0 .426(list, or if the command')2.926 F 2.926(sr)-.55 G +.426(eturn v)-2.926 F .426(alue is being in)-.25 F -.15(ve)-.4 G .425 +(rted via).15 F F1(!)2.925 E F0 5.425(.A)C(trap)-2.5 E(on)184 264 Q F1 +(ERR)2.5 E F0 2.5(,i)C 2.5(fs)-2.5 G(et, is e)-2.5 E -.15(xe)-.15 G +(cuted before the shell e).15 E(xits.)-.15 E F1144 276 Q F0 +(Disable pathname e)30.97 E(xpansion.)-.15 E F1144 288 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 300 Q(ault.)-.1 E F1 +144 312 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 376.8 Q F1 -144 388.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 400.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 412.8 R .641 -(xit status is printed upon their com-)-.15 F(pletion.)184 424.8 Q F1 -144 436.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 -448.8 Q(This is ignored by interacti)5 E .3 -.15(ve s)-.25 H(hells.).15 -E F1144 460.8 Q F2(option\255name)2.5 E F0(The)184 472.8 Q F2 +F .513(vironment for a)-.4 F +(command, not just those that precede the command name.)184 324 Q F1 +144 336 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 .637 +(on systems that support it \(see)184 348 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 .636 +(processes run in a)3.136 F .641 +(separate process group and a line containing their e)184 360 R .642 +(xit status is printed upon their com-)-.15 F(pletion.)184 372 Q F1 +144 384 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 +396 Q(This is ignored by interacti)5 E .3 -.15(ve s)-.25 H(hells.).15 E +F1144 408 Q F2(option\255name)2.5 E F0(The)184 420 Q F2 (option\255name)2.5 E F0(can be one of the follo)2.5 E(wing:)-.25 E F1 -(allexport)184 484.8 Q F0(Same as)224 496.8 Q F12.5 E F0(.)A F1 -(braceexpand)184 508.8 Q F0(Same as)224 520.8 Q F12.5 E F0(.)A F1 -(emacs)184 532.8 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 544.8 R -.15(ve)-.25 G 3.45(,u).15 G +(allexport)184 432 Q F0(Same as)224 444 Q F12.5 E F0(.)A F1 +(braceexpand)184 456 Q F0(Same as)224 468 Q F12.5 E F0(.)A F1 +(emacs)184 480 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 492 R -.15(ve)-.25 G 3.45(,u).15 G .95(nless the shell is started with the)-3.45 F F1(\255\255noediting) -3.45 E F0(option.)224 556.8 Q F1(errtrace)184 568.8 Q F0(Same as)5.03 E -F12.5 E F0(.)A F1(functrace)184 580.8 Q F0(Same as)224 592.8 Q F1 -2.5 E F0(.)A F1(err)184 604.8 Q(exit)-.18 E F0(Same as)11.31 E F1 -2.5 E F0(.)A F1(hashall)184 616.8 Q F0(Same as)9.43 E F12.5 -E F0(.)A F1(histexpand)184 628.8 Q F0(Same as)224 640.8 Q F12.5 E -F0(.)A F1(history)184 652.8 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 F3(HIST)3.087 E(OR)-.162 E(Y)-.315 E/F5 9 -/Times-Roman@0 SF(.)A F0 .587(This option is)5.087 F(on by def)224 664.8 -Q(ault in interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184 -676.8 Q(eeof)-.18 E F0 1.656(The ef)224 688.8 R 1.656 -(fect is as if the shell command)-.25 F/F6 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 -700.8 Q F1(Shell V)2.5 E(ariables)-.92 E F0(abo)2.5 E -.15(ve)-.15 G -(\).).15 E(GNU Bash-3.0)72 768 Q(2004 Apr 20)148.735 E(12)198.725 E 0 Cg -EP +3.45 E F0(option.)224 504 Q F1(errtrace)184 516 Q F0(Same as)5.03 E F1 +2.5 E F0(.)A F1(functrace)184 528 Q F0(Same as)224 540 Q F1 +2.5 E F0(.)A F1(err)184 552 Q(exit)-.18 E F0(Same as)11.31 E F12.5 +E F0(.)A F1(hashall)184 564 Q F0(Same as)9.43 E F12.5 E F0(.)A F1 +(histexpand)184 576 Q F0(Same as)224 588 Q F12.5 E F0(.)A F1 +(history)184 600 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 F3(HIST)3.087 E(OR)-.162 E(Y)-.315 E/F5 9/Times-Roman@0 SF(.)A F0 +.587(This option is)5.087 F(on by def)224 612 Q(ault in interacti)-.1 E +.3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184 624 Q(eeof)-.18 E F0 1.657 +(The ef)224 636 R 1.657(fect is as if the shell command)-.25 F/F6 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 648 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 660 S(yw).1 E(ord)-.1 +E F0(Same as)224 672 Q F12.5 E F0(.)A F1(monitor)184 684 Q F0 +(Same as)5.56 E F12.5 E F0(.)A F1(noclob)184 696 Q(ber)-.1 E F0 +(Same as)224 708 Q F12.5 E F0(.)A(GNU Bash-3.0)72 768 Q +(2004 Apr 20)148.735 E(12)198.725 E 0 Cg EP %%Page: 13 13 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 (TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10 -/Times-Bold@0 SF -.1(ke)184 84 S(yw).1 E(ord)-.1 E F0(Same as)224 96 Q -F12.5 E F0(.)A F1(monitor)184 108 Q F0(Same as)5.56 E F12.5 -E F0(.)A F1(noclob)184 120 Q(ber)-.1 E F0(Same as)224 132 Q F12.5 -E F0(.)A F1(noexec)184 144 Q F0(Same as)11.12 E F12.5 E F0(.)A F1 -(noglob)184 156 Q F0(Same as)11.1 E F12.5 E F0(.)A F1(nolog)5 E F0 -(Currently ignored.)2.5 E F1(notify)184 168 Q F0(Same as)15 E F1 -2.5 E F0(.)A F1(nounset)184 180 Q F0(Same as)6.66 E F12.5 E F0(.)A -F1(onecmd)184 192 Q F0(Same as)6.67 E F12.5 E F0(.)A F1(ph)184 204 +/Times-Bold@0 SF(noexec)184 84 Q F0(Same as)11.12 E F12.5 E F0(.)A +F1(noglob)184 96 Q F0(Same as)11.1 E F12.5 E F0(.)A F1(nolog)5 E +F0(Currently ignored.)2.5 E F1(notify)184 108 Q F0(Same as)15 E F1 +2.5 E F0(.)A F1(nounset)184 120 Q F0(Same as)6.66 E F12.5 E F0(.)A +F1(onecmd)184 132 Q F0(Same as)6.67 E F12.5 E F0(.)A F1(ph)184 144 Q(ysical)-.15 E F0(Same as)5.14 E F12.5 E F0(.)A F1(pipefail)184 -216 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 228 R +156 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 168 R 1.136 (xit with a non-zero status, or zero if all commands in the pipeline) --.15 F -.15(ex)224 240 S(it successfully).15 E 5(.T)-.65 G -(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 252 Q F0 -2.091(Change the beha)17.77 F 2.091(vior of)-.2 F F1(bash)4.591 E F0 +-.15 F -.15(ex)224 180 S(it successfully).15 E 5(.T)-.65 G +(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 192 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(POSIX standard to match the standard \()224 264 Q -/F2 10/Times-Italic@0 SF(posix mode)A F0(\).)A F1(pri)184 276 Q(vileged) --.1 E F0(Same as)224 288 Q F12.5 E F0(.)A F1 -.1(ve)184 300 S -(rbose).1 E F0(Same as)7.33 E F12.5 E F0(.)A F1(vi)184 312 Q F0 +(fers from the)-.25 F(POSIX standard to match the standard \()224 204 Q +/F2 10/Times-Italic@0 SF(posix mode)A F0(\).)A F1(pri)184 216 Q(vileged) +-.1 E F0(Same as)224 228 Q F12.5 E F0(.)A F1 -.1(ve)184 240 S +(rbose).1 E F0(Same as)7.33 E F12.5 E F0(.)A F1(vi)184 252 Q F0 (Use a vi-style command line editing interf)32.22 E(ace.)-.1 E F1 -(xtrace)184 324 Q F0(Same as)13.35 E F12.5 E F0(.)A(If)184 342 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 -354 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 366 Q F1 -144 378 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 +(xtrace)184 264 Q F0(Same as)13.35 E F12.5 E F0(.)A(If)184 282 Q +F13.053 E F0 .553(is supplied with no)3.053 F F2(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 +294 Q F0 1.071(is supplied with no)3.571 F F2(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 306 Q F1 +144 318 Q F0 -.45(Tu)28.74 G 1.072(rn on).45 F F2(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 /F3 9/Times-Bold@0 SF($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.705 -(cessed, shell functions are not inherited from the en)184 390 R 1.705 -(vironment, and the)-.4 F F3(SHELLOPTS)4.205 E F0 -.25(va)184 402 S .018 +-.27 E F0 1.071(\214les are not pro-)3.322 F 1.705 +(cessed, shell functions are not inherited from the en)184 330 R 1.705 +(vironment, and the)-.4 F F3(SHELLOPTS)4.206 E F0 -.25(va)184 342 S .019 (riable, if it appears in the en).25 F .019(vironment, is ignored.)-.4 F -.019(If the shell is started with the ef)5.019 F(fec-)-.25 E(ti)184 414 -Q 1.159 -.15(ve u)-.25 H .859 +.018(If the shell is started with the ef)5.019 F(fec-)-.25 E(ti)184 354 +Q 1.158 -.15(ve u)-.25 H .859 (ser \(group\) id not equal to the real user \(group\) id, and the).15 F -F13.359 E F0 .858(option is not sup-)3.359 F .293 -(plied, these actions are tak)184 426 R .293(en and the ef)-.1 F(fecti) +F13.359 E F0 .859(option is not sup-)3.359 F .294 +(plied, these actions are tak)184 366 R .293(en and the ef)-.1 F(fecti) -.25 E .593 -.15(ve u)-.25 H .293(ser id is set to the real user id.).15 -F .294(If the)5.294 F F12.794 E F0 1.196 -(option is supplied at startup, the ef)184 438 R(fecti)-.25 E 1.495 -.15 -(ve u)-.25 H 1.195(ser id is not reset.).15 F -.45(Tu)6.195 G 1.195 -(rning this option of).45 F(f)-.25 E(causes the ef)184 450 Q(fecti)-.25 +F .293(If the)5.293 F F12.793 E F0 1.195 +(option is supplied at startup, the ef)184 378 R(fecti)-.25 E 1.495 -.15 +(ve u)-.25 H 1.195(ser id is not reset.).15 F -.45(Tu)6.196 G 1.196 +(rning this option of).45 F(f)-.25 E(causes the ef)184 390 Q(fecti)-.25 E .3 -.15(ve u)-.25 H (ser and group ids to be set to the real user and group ids.).15 E F1 -144 462 Q F0(Exit after reading and e)30.97 E -.15(xe)-.15 G -(cuting one command.).15 E F1144 474 Q F0 -.35(Tr)28.74 G .444 +144 402 Q F0(Exit after reading and e)30.97 E -.15(xe)-.15 G +(cuting one command.).15 E F1144 414 Q F0 -.35(Tr)28.74 G .445 (eat unset v).35 F .444 (ariables as an error when performing parameter e)-.25 F 2.944 -(xpansion. If)-.15 F -.15(ex)2.945 G .445(pansion is).15 F .52 -(attempted on an unset v)184 486 R .519 +(xpansion. If)-.15 F -.15(ex)2.944 G .444(pansion is).15 F .519 +(attempted on an unset v)184 426 R .519 (ariable, the shell prints an error message, and, if not interacti)-.25 -F -.15(ve)-.25 G(,).15 E -.15(ex)184 498 S(its with a non-zero status.) -.15 E F1144 510 Q F0(Print shell input lines as the)29.3 E 2.5(ya) --.15 G(re read.)-2.5 E F1144 522 Q F0 .315(After e)29.3 F .315 +F -.15(ve)-.25 G(,).15 E -.15(ex)184 438 S(its with a non-zero status.) +.15 E F1144 450 Q F0(Print shell input lines as the)29.3 E 2.5(ya) +-.15 G(re read.)-2.5 E F1144 462 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.236(or arithmetic)184 534 R F1 +F1(select)2.815 E F0(command,)2.815 E 1.235(or arithmetic)184 474 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 F3(PS4)3.736 E/F4 9/Times-Roman@0 SF(,)A F0(follo)3.486 E 1.236(wed by the com-)-.25 F(mand and its e)184 -546 Q(xpanded ar)-.15 E(guments or associated w)-.18 E(ord list.)-.1 E -F1144 558 Q F0 2.578(The shell performs brace e)27.63 F 2.578 +486 Q(xpanded ar)-.15 E(guments or associated w)-.18 E(ord list.)-.1 E +F1144 498 Q F0 2.579(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.079(\). This).15 F 2.579(is on by)5.079 F(def)184 570 Q -(ault.)-.1 E F1144 582 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 +-.15(ve)-.15 G 5.078(\). This).15 F 2.578(is on by)5.078 F(def)184 510 Q +(ault.)-.1 E F1144 522 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 (xisting \214le with the)-.15 F F1(>)2.714 E F0(,)A F1(>&)2.714 E F0 -2.713(,a)C(nd)-2.713 E F1(<>)2.713 E F0 .213(redirection opera-)2.713 F -3.053(tors. This)184 594 R .553(may be o)3.053 F -.15(ve)-.15 G .553 +2.714(,a)C(nd)-2.714 E F1(<>)2.714 E F0 .214(redirection opera-)2.714 F +3.054(tors. This)184 534 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 606 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 -144 618 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 630 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 642 Q F1 -144 654 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 666 Q -.15 -(ve)-.25 G(.).15 E F1144 678 Q F0 1.164 +.15 F(tor)184 546 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 +144 558 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 570 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 582 Q F1 +144 594 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 606 Q -.15 +(ve)-.25 G(.).15 E F1144 618 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.165 -(cuting commands such as).15 F F1(cd)3.665 E F0 2.822 -(that change the current w)184 690 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 702 R(def)2.685 +(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 630 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 642 R(def)2.686 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 714 Q(.)-.65 E +(mands which change the current directory)184 654 Q(.)-.65 E F1144 +666 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 678 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 690 Q F0 +(traps are normally not inherited in such cases.)2.5 E F1144 702 Q +F0 .4(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 714 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 (GNU Bash-3.0)72 768 Q(2004 Apr 20)148.735 E(13)198.725 E 0 Cg EP %%Page: 14 14 %%BeginPageSetup @@ -1760,652 +1759,625 @@ BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 (TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10 -/Times-Bold@0 SF144 84 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 96 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 108 Q F0 -(traps are normally not inherited in such cases.)2.5 E F1144 120 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.4 E(the positional parameters are set to the)184 132 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 F12.5 E -F0(.)A F1144 144 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 156 R F1 -3.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 168 Q .425(The options are of)144 -184.8 R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425 +/Times-Bold@0 SF144 84 Q F0 1.945 +(Signal the end of options, cause all remaining)34.3 F/F2 10 +/Times-Italic@0 SF(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 96 R F13.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 108 Q .425(The options are of)144 +124.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 .178 -(to be turned of)144 196.8 R 2.678(f. The)-.25 F .178 +(Using + rather than \255 causes these options)5.425 F .177 +(to be turned of)144 136.8 R 2.677(f. The)-.25 F .178 (options can also be speci\214ed as ar)2.678 F .178(guments to an in) --.18 F -.2(vo)-.4 G .177(cation of the shell.).2 F(The)5.177 E .066 -(current set of options may be found in)144 208.8 R F1<24ad>2.566 E F0 +-.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 148.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 .067(lid option).25 F -(is encountered.)144 220.8 Q F1(shift)108 237.6 Q F0([)2.5 E F2(n)A F0 -(])A .429(The positional parameters from)144 249.6 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 261.6 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 273.6 R(If)5.06 E F2(n)2.92 E F0 +(ys true unless an in).1 F -.25(va)-.4 G .066(lid option).25 F +(is encountered.)144 160.8 Q F1(shift)108 177.6 Q F0([)2.5 E F2(n)A F0 +(])A .428(The positional parameters from)144 189.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 201.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 213.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 .143(positional parameters are not changed.)144 285.6 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 297.6 Q F1(shopt)108 314.4 Q F0([) +(,t)C(he)-2.56 E .144(positional parameters are not changed.)144 225.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 237.6 Q F1(shopt)108 254.4 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 326.4 S .222(ggle the v).8 F .222 +-2.5 E F0(...])2.5 E -.8(To)144 266.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 338.4 R(The) -144 350.4 Q F12.828 E F0 .327(option causes output to be displaye\ -d in a form that may be reused as input.)2.828 F .327(Other options) -5.327 F(ha)144 362.4 Q .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:) --.25 E F1144 374.4 Q F0(Enable \(set\) each)26.41 E F2(optname)2.5 -E F0(.)A F1144 386.4 Q F0(Disable \(unset\) each)24.74 E F2 -(optname)2.5 E F0(.)A F1144 398.4 Q F0 .003(Suppresses normal out\ +ed, with an indication of whether or not each is set.)144 278.4 R(The) +144 290.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 302.4 Q .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:) +-.25 E F1144 314.4 Q F0(Enable \(set\) each)26.41 E F2(optname)2.5 +E F0(.)A F1144 326.4 Q F0(Disable \(unset\) each)24.74 E F2 +(optname)2.5 E F0(.)A F1144 338.4 Q F0 .003(Suppresses normal out\ put \(quiet mode\); the return status indicates whether the)24.74 F F2 -(optname)2.504 E F0(is)2.504 E .256(set or unset.)180 410.4 R .256 -(If multiple)5.256 F F2(optname)2.756 E F0(ar)2.756 E .256 +(optname)2.503 E F0(is)2.503 E .255(set or unset.)180 350.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.755(,t)C .255(he return status is zero if)-2.755 F -(all)180 422.4 Q F2(optnames)2.5 E F0(are enabled; non-zero otherwise.) -2.5 E F1144 434.4 Q F0(Restricts the v)25.3 E(alues of)-.25 E F2 +2.756 E F0 2.756(,t)C .256(he return status is zero if)-2.756 F +(all)180 362.4 Q F2(optnames)2.5 E F0(are enabled; non-zero otherwise.) +2.5 E F1144 374.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 .127 -(If either)144 451.2 R F12.627 E F0(or)2.627 E F12.627 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 391.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.024 -(are set or unset, respecti)144 463.2 R -.15(ve)-.25 G(ly).15 E 6.024 -(.U)-.65 G 1.024(nless otherwise noted, the)-6.024 F F1(shopt)3.523 E F0 -1.023(options are disabled \(unset\) by)3.523 F(def)144 475.2 Q(ault.) +(guments, the display is limited to those options which)-.18 F 1.023 +(are set or unset, respecti)144 403.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 415.2 Q(ault.) -.1 E 1.544(The return status when listing options is zero if all)144 -492 R F2(optnames)4.044 E F0 1.545(are enabled, non-zero otherwise.) -4.045 F .696 +432 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 504 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .695(alid shell) --.25 F(option.)144 516 Q(The list of)144 532.8 Q F1(shopt)2.5 E F0 -(options is:)2.5 E F1(autocd)144 550.8 Q F0 .199 -(If set, a command name that is the name of a directory is e)11.11 F --.15(xe)-.15 G .2(cuted as if it were the ar).15 F(gu-)-.18 E -(ment to the)184 562.8 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 574.8 Q(ars)-.1 E F0 .156(If set, an ar)184 586.8 R .156 -(gument to the)-.18 F F1(cd)2.656 E F0 -.2(bu)2.656 G .155 +144 444 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .696(alid shell) +-.25 F(option.)144 456 Q(The list of)144 472.8 Q F1(shopt)2.5 E F0 +(options is:)2.5 E F1(cdable_v)144 490.8 Q(ars)-.1 E F0 .156 +(If set, an ar)184 502.8 R .156(gument to the)-.18 F F1(cd)2.656 E F0 +-.2(bu)2.656 G .155 (iltin command that is not a directory is assumed to be the).2 F -(name of a v)184 598.8 Q(ariable whose v)-.25 E -(alue is the directory to change to.)-.25 E F1(cdspell)144 610.8 Q F0 +(name of a v)184 514.8 Q(ariable whose v)-.25 E +(alue is the directory to change to.)-.25 E F1(cdspell)144 526.8 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.988 -(corrected. The)184 622.8 R 1.488(errors check)3.988 F 1.487 +(corrected. The)184 538.8 R 1.488(errors check)3.988 F 1.487 (ed for are transposed characters, a missing character)-.1 F 3.987(,a) --.4 G(nd)-3.987 E .552(one character too man)184 634.8 R 4.352 -.65 +-.4 G(nd)-3.987 E .552(one character too man)184 550.8 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 646.8 Q +(the command proceeds.)184 562.8 Q (This option is only used by interacti)5 E .3 -.15(ve s)-.25 H(hells.) -.15 E F1(checkhash)144 658.8 Q F0 2.08(If set,)184 670.8 R F1(bash)4.58 +.15 E F1(checkhash)144 574.8 Q F0 2.08(If set,)184 586.8 R F1(bash)4.58 E F0 2.079(checks that a command found in the hash table e)4.58 F 2.079 -(xists before trying to)-.15 F -.15(exe)184 682.8 S(cute it.).15 E +(xists before trying to)-.15 F -.15(exe)184 598.8 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 694.8 -Q F0 .56(If set, bash lists the status of an)184 706.8 R 3.061(ys)-.15 G -.561(topped and running jobs before e)-3.061 F .561(xiting an interacti) --.15 F -.15(ve)-.25 G 3.439(shell. If)184 718.8 R(an)3.439 E 3.439(yj) --.15 G .938(obs are running, this causes the e)-3.439 F .938 -(xit to be deferred until a second e)-.15 F .938(xit is)-.15 F 1.456 -(attempted without an interv)184 730.8 R 1.456(ening command \(see)-.15 -F F1 1.456(JOB CONTR)3.956 F(OL)-.3 E F0(abo)3.956 E -.15(ve)-.15 G -3.956(\). The).15 F(shell)3.956 E(GNU Bash-3.0)72 768 Q(2004 Apr 20) -148.735 E(14)198.725 E 0 Cg EP +(xists, a normal path search is performed.)-.15 E F1(checkwinsize)144 +610.8 Q F0 .796(If set,)184 622.8 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 634.8 S(lues of).25 E/F3 9/Times-Bold@0 +SF(LINES)2.5 E F0(and)2.25 E F3(COLUMNS)2.5 E/F4 9/Times-Roman@0 SF(.)A +F1(cmdhist)144 646.8 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 +658.8 Q 5(.T)-.65 G(his allo)-5 E +(ws easy re-editing of multi-line commands.)-.25 E F1(dotglob)144 670.8 +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 682.8 Q F0 1.387 +(If set, a non-interacti)7.79 F 1.687 -.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.386(cute the \214le speci\214ed as an).15 F(ar)184 694.8 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 706.8 Q +F0 .716(If set, aliases are e)184 718.8 R .717(xpanded as described abo) +-.15 F 1.017 -.15(ve u)-.15 H(nder).15 E F3(ALIASES)3.217 E F4(.)A F0 +.717(This option is enabled)5.217 F(by def)184 730.8 Q +(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E(GNU Bash-3.0) +72 768 Q(2004 Apr 20)148.735 E(14)198.725 E 0 Cg EP %%Page: 15 15 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E(al)184 84 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 10/Times-Bold@0 SF(checkwinsize)144 96 Q F0 -.797(If set,)184 108 R F1(bash)3.297 E F0 .797(checks the windo)3.297 F -3.297(ws)-.25 G .796(ize after each command and, if necessary)-3.297 F -3.296(,u)-.65 G .796(pdates the)-3.296 F -.25(va)184 120 S(lues of).25 E -/F2 9/Times-Bold@0 SF(LINES)2.5 E F0(and)2.25 E F2(COLUMNS)2.5 E/F3 9 -/Times-Roman@0 SF(.)A F1(cmdhist)144 132 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 144 Q 5(.T)-.65 G(his allo)-5 E -(ws easy re-editing of multi-line commands.)-.25 E F1(dotglob)144 156 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 -168 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 180 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 192 Q F0 -.717(If set, aliases are e)184 204 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 216 Q(ault for interacti)-.1 -E .3 -.15(ve s)-.25 H(hells.).15 E F1(extdeb)144 228 Q(ug)-.2 E F0 -(If set, beha)184 240 Q(vior intended for use by deb)-.2 E -(uggers is enabled:)-.2 E F1(1.)184 252 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 264 Q -(gument.)-.18 E F1(2.)184 276 Q F0 1.667(If the command run by the)28.5 +(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10 +/Times-Bold@0 SF(extdeb)144 84 Q(ug)-.2 E F0(If set, beha)184 96 Q +(vior intended for use by deb)-.2 E(uggers is enabled:)-.2 E F1(1.)184 +108 Q F0(The)28.5 E F14.251 E F0 1.751(option to the)4.251 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 120 Q +(gument.)-.18 E F1(2.)184 132 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 288 -Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 300 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 312 S .488 +1.667(alue, the ne)-.25 F(xt)-.15 E(command is skipped and not e)220 144 +Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 156 Q F0 .841 +(If the command run by the)28.5 F F1(DEB)3.341 E(UG)-.1 E F0 .841 +(trap returns a v)3.341 F .84(alue of 2, and the shell is)-.25 F -.15 +(exe)220 168 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 324 Q(ce)-.18 E F0 -.2(bu)2.5 G(iltins\), a call to).2 E F1 +(sour)220 180 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 26(4. B)184 -336 R(ASH_ARGC)-.3 E F0(and)3.775 E F1 -.3(BA)3.775 G(SH_ARGV).3 E F0 -1.276(are updated as described in their descrip-)3.775 F(tions abo)220 -348 Q -.15(ve)-.15 G(.).15 E F1(5.)184 360 Q F0 1.359 +192 R(ASH_ARGC)-.3 E F0(and)3.776 E F1 -.3(BA)3.776 G(SH_ARGV).3 E F0 +1.275(are updated as described in their descrip-)3.776 F(tions abo)220 +204 Q -.15(ve)-.15 G(.).15 E F1(5.)184 216 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 -372 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E/F4 10 +228 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E/F2 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 384 Q F0 .804(Error tracing is enabled:)28.5 F .805 -(command substitution, shell functions, and subshells)5.804 F(in)220 396 -Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F4 +184 240 Q F0 .805(Error tracing is enabled:)28.5 F .804 +(command substitution, shell functions, and subshells)5.805 F(in)220 252 +Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F2 (command)2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1(ERR)2.5 E(OR)-.3 E F0 -(trap.)2.5 E F1(extglob)144 408 Q F0 .4(If set, the e)8.89 F .4 +(trap.)2.5 E F1(extglob)144 264 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 420 Q -F0(are enabled.)2.5 E F1(extquote)144 432 Q F0 2.473(If set,)184 444 R -F1($)4.973 E F0<08>A F4(string)A F0 4.973<0861>C(nd)-4.973 E F1($)4.973 -E F0(")A F4(string)A F0 4.973("q)C 2.473(uoting is performed within) --4.973 F F1(${)4.973 E F4(par)A(ameter)-.15 E F1(})A F0 -.15(ex)4.973 G -(pansions).15 E(enclosed in double quotes.)184 456 Q -(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 468 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 480 S(pansion error).15 E(.) --.55 E F1 -.25(fo)144 492 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 -.585(If set, the suf)184 504 R<8c78>-.25 E .585(es speci\214ed by the) +-.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 276 Q +F0(are enabled.)2.5 E F1(extquote)144 288 Q F0 2.473(If set,)184 300 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 312 Q +(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 324 Q F0 +1.424(If set, patterns which f)7.77 F 1.425 +(ail to match \214lenames during pathname e)-.1 F 1.425 +(xpansion result in an)-.15 F -.15(ex)184 336 S(pansion error).15 E(.) +-.55 E F1 -.25(fo)144 348 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 +.585(If set, the suf)184 360 R<8c78>-.25 E .585(es speci\214ed by the) -.15 F F1(FIGNORE)3.085 E F0 .585(shell v)3.085 F .585(ariable cause w) --.25 F .585(ords to be ignored)-.1 F .32(when performing w)184 516 R .32 +-.25 F .585(ords to be ignored)-.1 F .32(when performing w)184 372 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 3.329 -(pletions. See)184 528 R F2 .829(SHELL V)3.329 F(ARIABLES)-1.215 E F0 -(abo)3.079 E 1.129 -.15(ve f)-.15 H .83(or a description of).15 F F1 -(FIGNORE)3.33 E F0 5.83(.T)C .83(his option)-5.83 F(is enabled by def) -184 540 Q(ault.)-.1 E F1(gnu_errfmt)144 552 Q F0(If set, shell error me\ -ssages are written in the standard GNU error message format.)184 564 Q -F1(histappend)144 576 Q F0 .384 +(he ignored w)-2.82 F .32(ords are the only possible com-)-.1 F 3.33 +(pletions. See)184 384 R/F3 9/Times-Bold@0 SF .83(SHELL V)3.33 F +(ARIABLES)-1.215 E F0(abo)3.08 E 1.13 -.15(ve f)-.15 H .829 +(or a description of).15 F F1(FIGNORE)3.329 E F0 5.829(.T)C .829 +(his option)-5.829 F(is enabled by def)184 396 Q(ault.)-.1 E F1 +(gnu_errfmt)144 408 Q F0(If set, shell error messages are written in th\ +e standard GNU error message format.)184 420 Q F1(histappend)144 432 Q +F0 .383 (If set, the history list is appended to the \214le named by the v)184 -588 R .383(alue of the)-.25 F F1(HISTFILE)2.883 E F0 -.25(va)2.883 G -(ri-).25 E(able when the shell e)184 600 Q(xits, rather than o)-.15 E --.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 612 Q(eedit)-.18 -E F0 .575(If set, and)184 624 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 636 Q F1(histv)144 648 Q(erify)-.1 E F0 .403 -(If set, and)184 660 R F1 -.18(re)2.903 G(adline).18 E F0 .403 +444 R .384(alue of the)-.25 F F1(HISTFILE)2.884 E F0 -.25(va)2.884 G +(ri-).25 E(able when the shell e)184 456 Q(xits, rather than o)-.15 E +-.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 468 Q(eedit)-.18 +E F0 .576(If set, and)184 480 R F1 -.18(re)3.076 G(adline).18 E F0 .575 +(is being used, a user is gi)3.076 F -.15(ve)-.25 G 3.075(nt).15 G .575 +(he opportunity to re-edit a f)-3.075 F .575(ailed his-)-.1 F +(tory substitution.)184 492 Q F1(histv)144 504 Q(erify)-.1 E F0 .402 +(If set, and)184 516 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 672 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 684 S -.25(ff).2 G(er).25 E +2.903 F .662(passed to the shell parser)184 528 R 5.662(.I)-.55 G .661 +(nstead, the resulting line is loaded into the)-5.662 F F1 -.18(re)3.161 +G(adline).18 E F0(editing)3.161 E -.2(bu)184 540 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 696 Q F0 1.182(If set, and)184 708 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 -720 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 -F2(READLINE)3.881 E F0(GNU Bash-3.0)72 768 Q(2004 Apr 20)148.735 E(15) -198.725 E 0 Cg EP -%%Page: 16 16 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E(abo)184 84 Q --.15(ve)-.15 G 2.5(\). This).15 F(is enabled by def)2.5 E(ault.)-.1 E/F1 -10/Times-Bold@0 SF(huponexit)144 96 Q F0(If set,)184 108 Q F1(bash)2.5 E -F0(will send)2.5 E/F2 9/Times-Bold@0 SF(SIGHUP)2.5 E F0 +(hostcomplete)144 552 Q F0 1.181(If set, and)184 564 R F1 -.18(re)3.681 +G(adline).18 E F0 1.181(is being used,)3.681 F F1(bash)3.682 E F0 1.182 +(will attempt to perform hostname completion)3.682 F 1.381(when a w)184 +576 R 1.381(ord containing a)-.1 F F1(@)3.881 E F0 1.381 +(is being completed \(see)3.881 F F1(Completing)3.88 E F0(under)3.88 E +F3(READLINE)3.88 E F0(abo)184 588 Q -.15(ve)-.15 G 2.5(\). This).15 F +(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 600 Q F0(If set,) +184 612 Q F1(bash)2.5 E F0(will send)2.5 E F3(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 120 Q -.1(ve)-.1 G(_comments).1 E F0 -.33(If set, allo)184 132 R 2.83(waw)-.25 G .33(ord be)-2.93 F .33 +.15 E(xits.)-.15 E F1(interacti)144 624 Q -.1(ve)-.1 G(_comments).1 E F0 +.33(If set, allo)184 636 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 144 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 156 Q -(ault.)-.1 E F1(lithist)144 168 Q F0 .655(If set, and the)15.55 F F1 -(cmdhist)3.155 E F0 .654(option is enabled, multi-line commands are sa) -3.154 F -.15(ve)-.2 G 3.154(dt).15 G 3.154(ot)-3.154 G .654(he history) --3.154 F(with embedded ne)184 180 Q +(that line to be ignored in an interacti)184 648 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 .967(option is)3.467 F(enabled by def)184 660 Q +(ault.)-.1 E F1(lithist)144 672 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 684 Q (wlines rather than using semicolon separators where possible.)-.25 E F1 -(login_shell)144 192 Q F0 .486 +(login_shell)144 696 Q F0 .486 (The shell sets this option if it is started as a login shell \(see)184 -204 R F2(INV)2.987 E(OCA)-.405 E(TION)-.855 E F0(abo)2.737 E -.15(ve) --.15 G 2.987(\). The).15 F -.25(va)184 216 S(lue may not be changed.).25 -E F1(mailwar)144 228 Q(n)-.15 E F0 .815(If set, and a \214le that)184 -240 R F1(bash)3.315 E F0 .814 -(is checking for mail has been accessed since the last time it)3.315 F --.1(wa)184 252 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 +708 R F3(INV)2.986 E(OCA)-.405 E(TION)-.855 E F0(abo)2.736 E -.15(ve) +-.15 G 2.986(\). The).15 F -.25(va)184 720 S(lue may not be changed.).25 +E(GNU Bash-3.0)72 768 Q(2004 Apr 20)148.735 E(15)198.725 E 0 Cg EP +%%Page: 16 16 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 +(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10 +/Times-Bold@0 SF(mailwar)144 84 Q(n)-.15 E F0 .814 +(If set, and a \214le that)184 96 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 108 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E +(`The mail in)-.74 E/F2 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 264 Q F0 .145(If set, and)184 276 R F1 -.18 -(re)2.645 G(adline).18 E F0 .145(is being used,)2.645 F F1(bash)2.646 E -F0 .146(will not attempt to search the)2.646 F F1 -.74(PA)2.646 G(TH) --.21 E F0 .146(for possible)2.646 F -(completions when completion is attempted on an empty line.)184 288 Q F1 -(nocaseglob)144 300 Q F0 .437(If set,)184 312 R F1(bash)2.937 E F0 .436 -(matches \214lenames in a case\255insensiti)2.937 F .736 -.15(ve f)-.25 -H .436(ashion when performing pathname).05 F -.15(ex)184 324 S +(no_empty_cmd_completion)144 120 Q F0 .146(If set, and)184 132 R F1 -.18 +(re)2.646 G(adline).18 E F0 .146(is being used,)2.646 F F1(bash)2.646 E +F0 .145(will not attempt to search the)2.646 F F1 -.74(PA)2.645 G(TH) +-.21 E F0 .145(for possible)2.645 F +(completions when completion is attempted on an empty line.)184 144 Q F1 +(nocaseglob)144 156 Q F0 .436(If set,)184 168 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 180 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 336 Q F0 1.193(If set,)184 -348 R F1(bash)3.693 E F0 1.194(matches patterns in a case\255insensiti) -3.693 F 1.494 -.15(ve f)-.25 H 1.194(ashion when performing matching).05 -F(while e)184 360 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 372 Q F0 -.855(If set,)184 384 R F1(bash)3.355 E F0(allo)3.355 E .855 -(ws patterns which match no \214les \(see)-.25 F F1 -.1(Pa)3.354 G .854 -(thname Expansion).1 F F0(abo)3.354 E -.15(ve)-.15 G 3.354(\)t).15 G(o) --3.354 E -.15(ex)184 396 S(pand to a null string, rather than themselv) -.15 E(es.)-.15 E F1(pr)144 408 Q(ogcomp)-.18 E F0 .676 -(If set, the programmable completion f)184 420 R .677(acilities \(see) --.1 F F1(Pr)3.177 E .677(ogrammable Completion)-.18 F F0(abo)3.177 E --.15(ve)-.15 G(\)).15 E(are enabled.)184 432 Q -(This option is enabled by def)5 E(ault.)-.1 E F1(pr)144 444 Q(omptv) --.18 E(ars)-.1 E F0 1.448(If set, prompt strings under)184 456 R 1.448 -(go parameter e)-.18 F 1.447(xpansion, command substitution, arithmetic) --.15 F -.15(ex)184 468 S .17(pansion, and quote remo).15 F -.25(va)-.15 +-.15(ve)-.15 G(\).).15 E F1(nocasematch)144 192 Q F0 1.194(If set,)184 +204 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 216 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 228 Q F0 +.854(If set,)184 240 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 252 S(pand to a null string, rather than themselv) +.15 E(es.)-.15 E F1(pr)144 264 Q(ogcomp)-.18 E F0 .677 +(If set, the programmable completion f)184 276 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 288 Q +(This option is enabled by def)5 E(ault.)-.1 E F1(pr)144 300 Q(omptv) +-.18 E(ars)-.1 E F0 1.447(If set, prompt strings under)184 312 R 1.448 +(go parameter e)-.18 F 1.448(xpansion, command substitution, arithmetic) +-.15 F -.15(ex)184 324 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(PR)2.671 E(OMPTING)-.27 E F0(abo)2.421 E -.15(ve)-.15 G(.).15 -E(This option is enabled by def)184 480 Q(ault.)-.1 E F1 -.18(re)144 492 -S(stricted_shell).18 E F0 1.069 +-.15 F/F3 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 336 Q(ault.)-.1 E +F1 -.18(re)144 348 S(stricted_shell).18 E F0 1.069 (The shell sets this option if it is started in restricted mode \(see) -184 504 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 516 Q 4.178 +184 360 R F3 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 372 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 528 S(cuted, allo).15 E(wing the startup \214les to disco)-.25 E +184 384 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 540 Q(erbose)-.1 E F0 .502(If set, the)184 552 R F1 -(shift)3.002 E F0 -.2(bu)3.002 G .501 -(iltin prints an error message when the shift count e).2 F .501 -(xceeds the number)-.15 F(of positional parameters.)184 564 Q F1(sour) -144 576 Q(cepath)-.18 E F0 .77(If set, the)184 588 R F1(sour)3.27 E(ce) --.18 E F0(\()3.27 E F1(.)A F0 3.27(\)b)C .77(uiltin uses the v)-3.47 F -.771(alue of)-.25 F F2 -.666(PA)3.271 G(TH)-.189 E F0 .771 -(to \214nd the directory containing the)3.021 F -(\214le supplied as an ar)184 600 Q 2.5(gument. This)-.18 F -(option is enabled by def)2.5 E(ault.)-.1 E F1(xpg_echo)144 612 Q F0 -(If set, the)184 624 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 636 Q F0([)2.5 E F1A F0(])A .493(Suspend the e)144 648 R -.15 -(xe)-.15 G .493(cution of this shell until it recei).15 F -.15(ve)-.25 G -2.992(sa).15 G F2(SIGCONT)A F0 2.992(signal. The)2.742 F F12.992 E -F0 .492(option says not to)2.992 F .758 -(complain if this is a login shell; just suspend an)144 660 R(yw)-.15 E -(ay)-.1 E 5.758(.T)-.65 G .759 +F1(shift_v)144 396 Q(erbose)-.1 E F0 .501(If set, the)184 408 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 420 Q F1(sour) +144 432 Q(cepath)-.18 E F0 .771(If set, the)184 444 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 F3 -.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 456 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E(ault.) +-.1 E F1(xpg_echo)144 468 Q F0(If set, the)184 480 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 492 Q F0([)2.5 E F1A F0(])A .492 +(Suspend the e)144 504 R -.15(xe)-.15 G .492 +(cution of this shell until it recei).15 F -.15(ve)-.25 G 2.992(sa).15 G +F3(SIGCONT).001 E F0 2.993(signal. The)2.743 F F12.993 E F0 .493 +(option says not to)2.993 F .759 +(complain if this is a login shell; just suspend an)144 516 R(yw)-.15 E +(ay)-.1 E 5.758(.T)-.65 G .758 (he return status is 0 unless the shell is a)-5.758 F(login shell and) -144 672 Q F12.5 E F0 +144 528 Q F12.5 E F0 (is not supplied, or if job control is not enabled.)2.5 E F1(test)108 -684 Q F3 -.2(ex)2.5 G(pr).2 E F1([)108 696 Q F3 -.2(ex)2.5 G(pr).2 E F1 +540 Q F2 -.2(ex)2.5 G(pr).2 E F1([)108 552 Q F2 -.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.187 -(operator and operand must be a separate ar)144 708 R 3.688 -(gument. Expressions)-.18 F 1.188(are composed of the primaries)3.688 F -1.89(described abo)144 720 R 2.19 -.15(ve u)-.15 H(nder).15 E F2 -(CONDITION)4.39 E 1.89(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(.)A -F1(test)6.39 E F0 1.889(does not accept an)4.389 F 4.389(yo)-.15 G 1.889 -(ptions, nor)-4.389 F(GNU Bash-3.0)72 768 Q(2004 Apr 20)148.735 E(16) -198.725 E 0 Cg EP +F2 -.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 564 R 3.688 +(gument. Expressions)-.18 F 1.187(are composed of the primaries)3.688 F +1.889(described abo)144 576 R 2.189 -.15(ve u)-.15 H(nder).15 E F3 +(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 588 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 606 R .785 +(wing operators, listed in decreasing order of prece-)-.25 F(dence.)144 +618 Q F1(!)144 630 Q F2 -.2(ex)2.5 G(pr).2 E F0 -.35(Tr)12.6 G(ue if).35 +E F2 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 E(alse.)-.1 E F1(\()144 642 Q F2 +-.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 F2 -.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 654 Q F2 -.2(ex) +144 666 S(pr1).2 E F02.5 E F1(a)A F2 -.2(ex)2.5 G(pr2).2 E F0 -.35 +(Tr)180 678 S(ue if both).35 E F2 -.2(ex)2.5 G(pr1).2 E F0(and)2.5 E F2 +-.2(ex)2.5 G(pr2).2 E F0(are true.)2.52 E F2 -.2(ex)144 690 S(pr1).2 E +F02.5 E F1(o)A F2 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 702 S +(ue if either).35 E F2 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F2 -.2(ex)2.5 G +(pr2).2 E F0(is true.)2.52 E F1(test)144 718.8 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(GNU Bash-3.0)72 768 Q(2004 Apr 20)148.735 E(16)198.725 +E 0 Cg EP %%Page: 17 17 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E -(does it accept and ignore an ar)144 84 Q(gument of)-.18 E/F1 10 -/Times-Bold@0 SF2.5 E F0(as signifying the end of options.)2.5 E -.785(Expressions may be combined using the follo)144 102 R .786 -(wing operators, listed in decreasing order of prece-)-.25 F(dence.)144 -114 Q F1(!)144 126 Q/F2 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F0 --.35(Tr)12.6 G(ue if).35 E F2 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 E(alse.) --.1 E F1(\()144 138 Q F2 -.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 F2 -.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 150 Q F2 -.2(ex) -144 162 S(pr1).2 E F02.5 E F1(a)A F2 -.2(ex)2.5 G(pr2).2 E F0 -.35 -(Tr)180 174 S(ue if both).35 E F2 -.2(ex)2.5 G(pr1).2 E F0(and)2.5 E F2 --.2(ex)2.5 G(pr2).2 E F0(are true.)2.52 E F2 -.2(ex)144 186 S(pr1).2 E -F02.5 E F1(o)A F2 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 198 S -(ue if either).35 E F2 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F2 -.2(ex)2.5 G -(pr2).2 E F0(is true.)2.52 E F1(test)144 214.8 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 232.8 S -.18(rg)-2.5 G(uments).18 E(The e) -180 244.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 256.8 S -.18 -(rg)-2.5 G(ument).18 E(The e)180 268.8 Q +(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E 2.5(0a)144 +84 S -.18(rg)-2.5 G(uments).18 E(The e)180 96 Q(xpression is f)-.15 E +(alse.)-.1 E 2.5(1a)144 108 S -.18(rg)-2.5 G(ument).18 E(The e)180 120 Q (xpression is true if and only if the ar)-.15 E(gument is not null.)-.18 -E 2.5(2a)144 280.8 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) -180 292.8 R .37(gument is)-.18 F F1(!)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 304.8 R .38 -(gument is one of the unary conditional operators listed abo)-.18 F .679 --.15(ve u)-.15 H(nder).15 E/F3 9/Times-Bold@0 SF(CONDI-)2.879 E(TION)180 -316.8 Q .552(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(,)A F0 .552 +E 2.5(2a)144 132 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar)180 +144 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 .379(If the \214rst ar)180 156 R .38 +(gument is one of the unary conditional operators listed abo)-.18 F .68 +-.15(ve u)-.15 H(nder).15 E/F2 9/Times-Bold@0 SF(CONDI-)2.88 E(TION)180 +168 Q .553(AL EXPRESSIONS)-.18 F/F3 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 328.8 Q +.552(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 180 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 340.8 S -.18(rg)-2.5 G -(uments).18 E .024(If the second ar)180 352.8 R .023 +(xpression is f)-.15 E(alse.)-.1 E 2.5(3a)144 192 S -.18(rg)-2.5 G +(uments).18 E .023(If the second ar)180 204 R .023 (gument is one of the binary conditional operators listed abo)-.18 F -.323 -.15(ve u)-.15 H(nder).15 E F3(CON-)2.523 E(DITION)180 364.8 Q -1.477(AL EXPRESSIONS)-.18 F F4(,)A F0 1.477(the result of the e)3.727 F -1.477(xpression is the result of the binary test)-.15 F .398 -(using the \214rst and third ar)180 376.8 R .398(guments as operands.) --.18 F .398(If the \214rst ar)5.398 F .397(gument is)-.18 F F1(!)2.897 E -F0 2.897(,t)C .397(he v)-2.897 F .397(alue is the)-.25 F(ne)180 388.8 Q --.05(ga)-.15 G .262(tion of the tw).05 F(o-ar)-.1 E .262 +.324 -.15(ve u)-.15 H(nder).15 E F2(CON-)2.524 E(DITION)180 216 Q 1.478 +(AL EXPRESSIONS)-.18 F F3(,)A F0 1.477(the result of the e)3.727 F 1.477 +(xpression is the result of the binary test)-.15 F .397 +(using the \214rst and third ar)180 228 R .397(guments as operands.)-.18 +F .398(If the \214rst ar)5.398 F .398(gument is)-.18 F F1(!)2.898 E F0 +2.898(,t)C .398(he v)-2.898 F .398(alue is the)-.25 F(ne)180 240 Q -.05 +(ga)-.15 G .263(tion of the tw).05 F(o-ar)-.1 E .262 (gument test using the second and third ar)-.18 F 2.762(guments. If)-.18 -F .263(the \214rst ar)2.762 F(gu-)-.18 E .206(ment is e)180 400.8 R -(xactly)-.15 E F1(\()2.706 E F0 .205(and the third ar)2.706 F .205 -(gument is e)-.18 F(xactly)-.15 E F1(\))2.705 E F0 2.705(,t)C .205 -(he result is the one-ar)-2.705 F .205(gument test of)-.18 F 1.17 -(the second ar)180 412.8 R 3.67(gument. Otherwise,)-.18 F 1.171(the e) +F .262(the \214rst ar)2.762 F(gu-)-.18 E .205(ment is e)180 252 R +(xactly)-.15 E F1(\()2.705 E F0 .205(and the third ar)2.705 F .205 +(gument is e)-.18 F(xactly)-.15 E F1(\))2.705 E F0 2.705(,t)C .206 +(he result is the one-ar)-2.705 F .206(gument test of)-.18 F 1.171 +(the second ar)180 264 R 3.671(gument. Otherwise,)-.18 F 1.171(the e) 3.671 F 1.171(xpression is f)-.15 F 3.671(alse. The)-.1 F F13.671 -E F0(and)3.671 E F13.671 E F0 1.171(operators are)3.671 F -(considered binary operators in this case.)180 424.8 Q 2.5(4a)144 436.8 -S -.18(rg)-2.5 G(uments).18 E .385(If the \214rst ar)180 448.8 R .385 -(gument is)-.18 F F1(!)2.885 E F0 2.885(,t)C .385(he result is the ne) --2.885 F -.05(ga)-.15 G .384(tion of the three-ar).05 F .384(gument e) --.18 F .384(xpression com-)-.15 F 1.647(posed of the remaining ar)180 -460.8 R 4.147(guments. Otherwise,)-.18 F 1.647(the e)4.147 F 1.648 +E F0(and)3.671 E F13.67 E F0 1.17(operators are)3.67 F +(considered binary operators in this case.)180 276 Q 2.5(4a)144 288 S +-.18(rg)-2.5 G(uments).18 E .384(If the \214rst ar)180 300 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 +312 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 472.8 Q -.15(ve) --.15 G(.).15 E 2.5(5o)144 484.8 S 2.5(rm)-2.5 G(ore ar)-2.5 E(guments) --.18 E 1.635(The e)180 496.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 -508.8 Q -.15(ve)-.15 G(.).15 E F1(times)108 525.6 Q F0 1.229(Print the \ -accumulated user and system times for the shell and for processes run f\ -rom the shell.)13.23 F(The return status is 0.)144 537.6 Q F1(trap)108 -554.4 Q F0([)2.5 E F1(\255lp)A F0 2.5(][)C([)-2.5 E F2(ar)A(g)-.37 E F0 -(])A F2(sigspec)2.5 E F0(...])2.5 E .703(The command)144 566.4 R F2(ar) -3.533 E(g)-.37 E F0 .703(is to be read and e)3.423 F -.15(xe)-.15 G .702 -(cuted when the shell recei).15 F -.15(ve)-.25 G 3.202(ss).15 G -(ignal\(s\))-3.202 E F2(sigspec)3.202 E F0 5.702(.I).31 G(f)-5.702 E F2 -(ar)3.532 E(g)-.37 E F0(is)3.422 E .608(absent \(and there is a single) -144 578.4 R F2(sigspec)3.108 E F0 3.108(\)o)C(r)-3.108 E F13.108 E +(according to precedence using the rules listed abo)180 324 Q -.15(ve) +-.15 G(.).15 E 2.5(5o)144 336 S 2.5(rm)-2.5 G(ore ar)-2.5 E(guments)-.18 +E 1.635(The e)180 348 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 360 Q -.15(ve)-.15 G(.).15 E F1(times)108 376.8 Q F0 1.229(Pri\ +nt the accumulated user and system times for the shell and for processe\ +s run from the shell.)13.23 F(The return status is 0.)144 388.8 Q F1 +(trap)108 405.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 417.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 429.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 (ach speci\214ed signal is reset to its original disposition)-3.108 F -.659(\(the v)144 590.4 R .659(alue it had upon entrance to the shell\).) --.25 F(If)5.658 E F2(ar)3.488 E(g)-.37 E F0 .658 -(is the null string the signal speci\214ed by each)3.378 F F2(sigspec) -144.34 602.4 Q F0 .58(is ignored by the shell and by the commands it in) -3.39 F -.2(vo)-.4 G -.1(ke).2 G 3.081(s. If).1 F F2(ar)3.411 E(g)-.37 E -F0 .581(is not present and)3.301 F F13.081 E F0(has)3.081 E 1.215 -(been supplied, then the trap commands associated with each)144 614.4 R -F2(sigspec)4.054 E F0 1.214(are displayed.)4.024 F 1.214(If no ar)6.214 -F(gu-)-.18 E .86(ments are supplied or if only)144 626.4 R F13.36 +.658(\(the v)144 441.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 453.6 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 465.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 477.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 (prints the list of commands associated with each)3.36 F 2.83 -(signal. The)144 638.4 R F12.83 E F0 .33(option causes the shell \ -to print a list of signal names and their corresponding num-)2.83 F 4.31 -(bers. Each)144 650.4 R F2(sigspec)4.65 E F0 1.811 -(is either a signal name de\214ned in <)4.62 F F2(signal.h)A F0 1.811 -(>, or a signal number)B 6.811(.S)-.55 G(ignal)-6.811 E .745 -(names are case insensiti)144 662.4 R 1.045 -.15(ve a)-.25 H .745 -(nd the SIG pre\214x is optional.).15 F .745(If a)5.745 F F2(sigspec) -3.585 E F0(is)3.555 E F3(EXIT)3.245 E F0 .745(\(0\) the command)2.995 F -F2(ar)144.33 674.4 Q(g)-.37 E F0 1.629(is e)4.349 F -.15(xe)-.15 G 1.629 -(cuted on e).15 F 1.63(xit from the shell.)-.15 F 1.63(If a)6.63 F F2 -(sigspec)4.47 E F0(is)4.44 E F3(DEB)4.13 E(UG)-.09 E F4(,)A F0 1.63 -(the command)3.88 F F2(ar)4.46 E(g)-.37 E F0 1.63(is e)4.35 F -.15(xe) --.15 G(cuted).15 E 1.207(before e)144 686.4 R -.15(ve)-.25 G(ry).15 E F2 -1.207(simple command)3.707 F F0(,)A F2(for)3.707 E F0(command,)3.706 E -F2(case)3.706 E F0(command,)3.706 E F2(select)3.706 E F0 1.206 -(command, e)3.706 F -.15(ve)-.25 G 1.206(ry arithmetic).15 F F2(for)144 -698.4 Q F0 .412(command, and before the \214rst command e)2.912 F -.15 -(xe)-.15 G .412(cutes in a shell function \(see).15 F F3 .413 -(SHELL GRAMMAR)2.912 F F0(abo)144 710.4 Q -.15(ve)-.15 G 2.666 -(\). Refer).15 F .166(to the description of the)2.666 F F1(extdeb)2.666 +(signal. The)144 489.6 R F12.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 501.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 +(>, or a signal number)B 6.81(.S)-.55 G(ignal)-6.81 E .745 +(names are case insensiti)144 513.6 R 1.045 -.15(ve a)-.25 H .745 +(nd the SIG pre\214x is optional.).15 F .745(If a)5.745 F F4(sigspec) +3.585 E F0(is)3.555 E F2(EXIT)3.245 E F0 .745(\(0\) the command)2.995 F +F4(ar)144.33 525.6 Q(g)-.37 E F0 1.63(is e)4.35 F -.15(xe)-.15 G 1.63 +(cuted on e).15 F 1.63(xit from the shell.)-.15 F 1.63(If a)6.63 F F4 +(sigspec)4.47 E F0(is)4.44 E F2(DEB)4.13 E(UG)-.09 E F3(,)A F0 1.629 +(the command)3.88 F F4(ar)4.459 E(g)-.37 E F0 1.629(is e)4.349 F -.15 +(xe)-.15 G(cuted).15 E 1.206(before e)144 537.6 R -.15(ve)-.25 G(ry).15 +E F4 1.206(simple command)3.706 F F0(,)A F4(for)3.706 E F0(command,) +3.706 E F4(case)3.706 E F0(command,)3.706 E F4(select)3.707 E F0 1.207 +(command, e)3.707 F -.15(ve)-.25 G 1.207(ry arithmetic).15 F F4(for)144 +549.6 Q F0 .412(command, and before the \214rst command e)2.913 F -.15 +(xe)-.15 G .412(cutes in a shell function \(see).15 F F2 .412 +(SHELL GRAMMAR)2.912 F F0(abo)144 561.6 Q -.15(ve)-.15 G 2.665 +(\). Refer).15 F .166(to the description of the)2.665 F F1(extdeb)2.666 E(ug)-.2 E F0 .166(option to the)2.666 F F1(shopt)2.666 E F0 -.2(bu) -2.666 G .166(iltin for details of its ef).2 F(fect)-.25 E 1.98(on the) -144 722.4 R F1(DEB)4.48 E(UG)-.1 E F0 4.48(trap. If)4.48 F(a)4.48 E F2 -(sigspec)4.821 E F0(is)4.791 E F3(ERR)4.481 E F4(,)A F0 1.981 -(the command)4.231 F F2(ar)4.811 E(g)-.37 E F0 1.981(is e)4.701 F -.15 -(xe)-.15 G 1.981(cuted whene).15 F -.15(ve)-.25 G 4.481(ras).15 G(imple) --4.481 E(GNU Bash-3.0)72 768 Q(2004 Apr 20)148.735 E(17)198.725 E 0 Cg -EP -%%Page: 18 18 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E 1.358 -(command has a non\255zero e)144 84 R 1.358 -(xit status, subject to the follo)-.15 F 1.358(wing conditions.)-.25 F -(The)6.358 E/F1 9/Times-Bold@0 SF(ERR)3.858 E F0 1.358(trap is not)3.608 -F -.15(exe)144 96 S .105(cuted if the f).15 F .105 +2.666 G .166(iltin for details of its ef).2 F(fect)-.25 E .509(on the) +144 573.6 R F1(DEB)3.009 E(UG)-.1 E F0 3.009(trap. If)3.009 F(a)3.009 E +F4(sigspec)3.348 E F0(is)3.318 E F2(ERR)3.008 E F3(,)A F0 .508 +(the command)2.758 F F4(ar)3.338 E(g)-.37 E F0 .508(is e)3.228 F -.15 +(xe)-.15 G .508(cuted whene).15 F -.15(ve)-.25 G 3.008(ras).15 G .508 +(imple com-)-3.008 F 2.506(mand has a non\255zero e)144 585.6 R 2.506 +(xit status, subject to the follo)-.15 F 2.506(wing conditions.)-.25 F +(The)7.506 E F2(ERR)5.006 E F0 2.506(trap is not)4.756 F -.15(exe)144 +597.6 S .105(cuted if the f).15 F .105 (ailed command is part of the command list immediately follo)-.1 F .105 -(wing a)-.25 F/F2 10/Times-Bold@0 SF(while)2.605 E F0(or)2.605 E F2 -(until)2.605 E F0 -.1(ke)144 108 S(yw)-.05 E .936 -(ord, part of the test in an)-.1 F/F3 10/Times-Italic@0 SF(if)3.446 E F0 -.936(statement, part of a)5.396 F F2(&&)3.436 E F0(or)3.436 E/F4 10 -/Symbol SF3.436 E F0 .936(list, or if the command')3.436 F 3.436 -(sr)-.55 G(eturn)-3.436 E -.25(va)144 120 S 1.094(lue is being in).25 F --.15(ve)-.4 G 1.094(rted via).15 F F2(!)3.594 E F0 6.094(.T)C 1.094 -(hese are the same conditions obe)-6.094 F 1.094(yed by the)-.15 F F2 -(err)3.594 E(exit)-.18 E F0 3.595(option. If)3.594 F(a)3.595 E F3 -(sigspec)144.34 132 Q F0(is)3.349 E F1(RETURN)3.039 E/F5 9/Times-Roman@0 -SF(,)A F0 .539(the command)2.789 F F3(ar)3.368 E(g)-.37 E F0 .538(is e) +(wing a)-.25 F F1(while)2.605 E F0(or)2.605 E F1(until)2.605 E F0 -.1 +(ke)144 609.6 S(yw)-.05 E .936(ord, part of the test in an)-.1 F F4(if) +3.446 E F0 .936(statement, part of a)5.396 F F1(&&)3.436 E F0(or)3.436 E +/F5 10/Symbol SF3.436 E F0 .936(list, or if the command')3.436 F +3.436(sr)-.55 G(eturn)-3.436 E -.25(va)144 621.6 S 1.095 +(lue is being in).25 F -.15(ve)-.4 G 1.094(rted via).15 F F1(!)3.594 E +F0 6.094(.T)C 1.094(hese are the same conditions obe)-6.094 F 1.094 +(yed by the)-.15 F F1(err)3.594 E(exit)-.18 E F0 3.594(option. If)3.594 +F(a)3.594 E F4(sigspec)144.34 633.6 Q F0(is)3.348 E F2(RETURN)3.038 E F3 +(,)A F0 .538(the command)2.788 F F4(ar)3.368 E(g)-.37 E F0 .538(is e) 3.258 F -.15(xe)-.15 G .538 (cuted each time a shell function or a script e).15 F -.15(xe)-.15 G -(cuted).15 E .505(with the)144 144 R F2(.)3.005 E F0(or)3.005 E F2(sour) -3.005 E(ce)-.18 E F0 -.2(bu)3.005 G .505(iltins \214nishes e).2 F -.15 -(xe)-.15 G 3.006(cuting. Signals).15 F .506 -(ignored upon entry to the shell cannot be)3.006 F .704 -(trapped or reset.)144 156 R -.35(Tr)5.704 G .704 -(apped signals that are not being ignored are reset to their original v) -.35 F .703(alues in a)-.25 F .224(child process when it is created.)144 -168 R .224(The return status is f)5.224 F .224(alse if an)-.1 F(y)-.15 E -F3(sigspec)3.064 E F0 .224(is in)3.034 F -.25(va)-.4 G .225 -(lid; otherwise).25 F F2(trap)2.725 E F0(returns true.)144 180 Q F2 -(type)108 196.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 208.8 S .174 -(th no options, indicate ho).4 F 2.674(we)-.25 G(ach)-2.674 E F3(name) -3.034 E F0 -.1(wo)2.854 G .173 +(cuted).15 E .506(with the)144 645.6 R F1(.)3.006 E F0(or)3.006 E F1 +(sour)3.006 E(ce)-.18 E F0 -.2(bu)3.006 G .506(iltins \214nishes e).2 F +-.15(xe)-.15 G 3.006(cuting. Signals).15 F .505 +(ignored upon entry to the shell cannot be)3.006 F .155 +(trapped or reset.)144 657.6 R -.35(Tr)5.155 G .155 +(apped signals are reset to their original v).35 F .156 +(alues in a child process when it is cre-)-.25 F 2.5(ated. The)144 669.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 F1(type)108 686.4 Q F0([)2.5 E F1(\255aftpP)A F0(]) +A F4(name)2.5 E F0([)2.5 E F4(name)A F0(...])2.5 E -.4(Wi)144 698.4 S +.174(th no options, indicate ho).4 F 2.674(we)-.25 G(ach)-2.674 E F4 +(name)3.034 E F0 -.1(wo)2.854 G .173 (uld be interpreted if used as a command name.).1 F .173(If the)5.173 F -F2144 220.8 Q F0 .842(option is used,)3.342 F F2(type)3.342 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.343 G(iltin).2 E F0 3.343(,o).24 G(r)-3.343 E F3 -(\214le)5.253 E F0(if)3.523 E F3(name)144.36 232.8 Q F0 .087 +F1144 710.4 Q F0 .842(option is used,)3.342 F F1(type)3.342 E F0 +.843(prints a string which is one of)3.343 F F4(alias)3.343 E F0(,).27 E +F4 -.1(ke)3.343 G(ywor)-.2 E(d)-.37 E F0(,).77 E F4(function)3.343 E F0 +(,).24 E F4 -.2(bu)3.343 G(iltin).2 E F0 3.343(,o).24 G(r)-3.343 E F4 +(\214le)5.253 E F0(if)3.523 E F4(name)144.36 722.4 Q F0 .087 (is an alias, shell reserv)2.767 F .087(ed w)-.15 F .087 (ord, function, b)-.1 F .086(uiltin, or disk \214le, respecti)-.2 F -.15 -(ve)-.25 G(ly).15 E 5.086(.I)-.65 G 2.586(ft)-5.086 G(he)-2.586 E F3 -(name)2.946 E F0 .086(is not)2.766 F .118 -(found, then nothing is printed, and an e)144 244.8 R .118 -(xit status of f)-.15 F .118(alse is returned.)-.1 F .119(If the)5.119 F -F22.619 E F0 .119(option is used,)2.619 F F2(type)2.619 E F0 .855 -(either returns the name of the disk \214le that w)144 256.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 .64(mand name, or nothing if)144 -268.8 R/F6 10/Courier@0 SF .64(type -t name)3.14 F F0 -.1(wo)3.14 G .641 -(uld not return).1 F F3(\214le)3.141 E F0 5.641(.T).18 G(he)-5.641 E F2 -3.141 E F0 .641(option forces a)3.141 F F1 -.666(PA)3.141 G(TH) --.189 E F0 .113(search for each)144 280.8 R F3(name)2.613 E F0 2.613(,e) -C -.15(ve)-2.863 G 2.613(ni).15 G(f)-2.613 E F6 .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(fa)-5.113 G .112(command is hashed,)-.001 F F2 -2.612 E F0(and)144 292.8 Q F22.944 E F0 .444(print the hashed v) -2.944 F .444(alue, not necessarily the \214le that appears \214rst in) --.25 F F1 -.666(PA)2.945 G(TH)-.189 E F5(.)A F0 .445(If the)4.945 F F2 -2.945 E F0(option)2.945 E .265(is used,)144 304.8 R F2(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 F3(name)2.765 E F0 5.265(.T).18 G .265 -(his includes aliases)-5.265 F .426(and functions, if and only if the) -144 316.8 R F22.926 E F0 .426(option is not also used.)2.926 F -.427(The table of hashed commands is not)5.426 F .549 -(consulted when using)144 328.8 R F23.049 E F0 5.549(.T)C(he) --5.549 E F23.049 E F0 .548 -(option suppresses shell function lookup, as with the)3.049 F F2 -(command)3.048 E F0 -.2(bu)144 340.8 S(iltin.).2 E F2(type)5 E F0 +(ve)-.25 G(ly).15 E 5.086(.I)-.65 G 2.586(ft)-5.086 G(he)-2.586 E F4 +(name)2.946 E F0 .086(is not)2.766 F(GNU Bash-3.0)72 768 Q(2004 Apr 20) +148.735 E(17)198.725 E 0 Cg EP +%%Page: 18 18 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 +(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E .118 +(found, then nothing is printed, and an e)144 84 R .118(xit status of f) +-.15 F .118(alse is returned.)-.1 F .119(If the)5.119 F/F1 10 +/Times-Bold@0 SF2.619 E F0 .119(option is used,)2.619 F F1(type) +2.619 E F0 .855(either returns the name of the disk \214le that w)144 96 +R .855(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F/F2 10 +/Times-Italic@0 SF(name)3.715 E F0 .855(were speci\214ed as a com-)3.535 +F .64(mand name, or nothing if)144 108 R/F3 10/Courier@0 SF .64 +(type -t name)3.14 F F0 -.1(wo)3.14 G .641(uld not return).1 F F2 +(\214le)3.141 E F0 5.641(.T).18 G(he)-5.641 E F13.141 E F0 .641 +(option forces a)3.141 F/F4 9/Times-Bold@0 SF -.666(PA)3.141 G(TH)-.189 +E F0 .113(search for each)144 120 R F2(name)2.613 E F0 2.613(,e)C -.15 +(ve)-2.863 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(fa)-5.113 G .112(command is hashed,)-.001 F F12.612 E +F0(and)144 132 Q F12.944 E F0 .444(print the hashed v)2.944 F .444 +(alue, not necessarily the \214le that appears \214rst in)-.25 F F4 +-.666(PA)2.945 G(TH)-.189 E/F5 9/Times-Roman@0 SF(.)A F0 .445(If the) +4.945 F F12.945 E F0(option)2.945 E .265(is used,)144 144 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 .426 +(and functions, if and only if the)144 156 R F12.926 E F0 .426 +(option is not also used.)2.926 F .427 +(The table of hashed commands is not)5.426 F .549(consulted when using) +144 168 R F13.049 E F0 5.549(.T)C(he)-5.549 E F13.049 E F0 +.548(option suppresses shell function lookup, as with the)3.049 F F1 +(command)3.048 E F0 -.2(bu)144 180 S(iltin.).2 E F1(type)5 E F0 (returns true if an)2.5 E 2.5(yo)-.15 G 2.5(ft)-2.5 G(he ar)-2.5 E -(guments are found, f)-.18 E(alse if none are found.)-.1 E F2(ulimit)108 -357.6 Q F0([)2.5 E F2(\255SHacde\214lmnpqrstuvx)A F0([)2.5 E F3(limit)A -F0(]])A(Pro)144 369.6 Q .243(vides control o)-.15 F -.15(ve)-.15 G 2.743 +(guments are found, f)-.18 E(alse if none are found.)-.1 E F1(ulimit)108 +196.8 Q F0([)2.5 E F1(\255SHacde\214lmnpqrstuvx)A F0([)2.5 E F2(limit)A +F0(]])A(Pro)144 208.8 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 -.944(that allo)144 381.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 +.944(that allo)144 220.8 R 3.444(ws)-.25 G .944(uch control.)-3.444 F +(The)5.944 E F13.444 E F0(and)3.444 E F13.444 E F0 .943 (options specify that the hard or soft limit is set for the)3.444 F(gi) -144 393.6 Q -.15(ve)-.25 G 2.737(nr).15 G 2.737(esource. A)-2.737 F .238 +144 232.8 Q -.15(ve)-.25 G 2.737(nr).15 G 2.737(esource. A)-2.737 F .238 (hard limit cannot be increased once it is set; a soft limit may be inc\ -reased up to)2.738 F .356(the v)144 405.6 R .356 -(alue of the hard limit.)-.25 F .356(If neither)5.356 F F22.856 E -F0(nor)2.856 E F22.856 E F0 .355 +reased up to)2.738 F .356(the v)144 244.8 R .356 +(alue of the hard limit.)-.25 F .356(If neither)5.356 F F12.856 E +F0(nor)2.856 E F12.856 E F0 .355 (is speci\214ed, both the soft and hard limits are set.)2.855 F .402 -(The v)144 417.6 R .402(alue of)-.25 F F3(limit)2.992 E F0 .402(can be \ +(The v)144 256.8 R .402(alue of)-.25 F F2(limit)2.992 E F0 .402(can be \ a number in the unit speci\214ed for the resource or one of the special\ - v)3.582 F(al-)-.25 E(ues)144 429.6 Q F2(hard)3.019 E F0(,)A F2(soft) -3.019 E F0 3.019(,o)C(r)-3.019 E F2(unlimited)3.019 E F0 3.018(,w)C .518 + v)3.582 F(al-)-.25 E(ues)144 268.8 Q F1(hard)3.019 E F0(,)A F1(soft) +3.019 E F0 3.019(,o)C(r)-3.019 E F1(unlimited)3.019 E F0 3.018(,w)C .518 (hich stand for the current hard limit, the current soft limit, and no) --3.018 F .353(limit, respecti)144 441.6 R -.15(ve)-.25 G(ly).15 E 5.353 -(.I)-.65 G(f)-5.353 E F3(limit)2.943 E F0 .353 +-3.018 F .353(limit, respecti)144 280.8 R -.15(ve)-.25 G(ly).15 E 5.353 +(.I)-.65 G(f)-5.353 E F2(limit)2.943 E F0 .353 (is omitted, the current v)3.533 F .354 (alue of the soft limit of the resource is printed,)-.25 F .37 -(unless the)144 453.6 R F22.87 E F0 .37(option is gi)2.87 F -.15 +(unless the)144 292.8 R F12.87 E F0 .37(option is gi)2.87 F -.15 (ve)-.25 G 2.87(n. When).15 F .37 (more than one resource is speci\214ed, the limit name and unit)2.87 F -(are printed before the v)144 465.6 Q 2.5(alue. Other)-.25 F -(options are interpreted as follo)2.5 E(ws:)-.25 E F2144 477.6 Q -F0(All current limits are reported)25.3 E F2144 489.6 Q F0 -(The maximum size of core \214les created)25.86 E F2144 501.6 Q F0 +(are printed before the v)144 304.8 Q 2.5(alue. Other)-.25 F +(options are interpreted as follo)2.5 E(ws:)-.25 E F1144 316.8 Q +F0(All current limits are reported)25.3 E F1144 328.8 Q F0 +(The maximum size of core \214les created)25.86 E F1144 340.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 F2144 513.6 Q F0 -(The maximum scheduling priority \("nice"\))25.86 E F2144 525.6 Q -F0(The maximum size of \214les written by the shell and its children) -26.97 E F2144 537.6 Q F0(The maximum number of pending signals) -27.52 E F2144 549.6 Q F0(The maximum size that may be lock)27.52 E -(ed into memory)-.1 E F2144 561.6 Q F0 -(The maximum resident set size)21.97 E F2144 573.6 Q F0 .791(The \ -maximum number of open \214le descriptors \(most systems do not allo) -24.74 F 3.291(wt)-.25 G .791(his v)-3.291 F .791(alue to)-.25 F -(be set\))180 585.6 Q F2144 597.6 Q F0 -(The pipe size in 512-byte blocks \(this may not be set\))24.74 E F2 -144 609.6 Q F0 -(The maximum number of bytes in POSIX message queues)24.74 E F2144 -621.6 Q F0(The maximum real-time scheduling priority)25.86 E F2144 -633.6 Q F0(The maximum stack size)26.41 E F2144 645.6 Q F0 -(The maximum amount of cpu time in seconds)26.97 E F2144 657.6 Q +(gment)-.15 E F1144 352.8 Q F0 +(The maximum scheduling priority \("nice"\))25.86 E F1144 364.8 Q +F0(The maximum size of \214les created by the shell)26.97 E F1144 +376.8 Q F0(The maximum number of pending signals)27.52 E F1144 +388.8 Q F0(The maximum size that may be lock)27.52 E(ed into memory)-.1 +E F1144 400.8 Q F0(The maximum resident set size)21.97 E F1 +144 412.8 Q F0 .791(The maximum number of open \214le descriptors \(mos\ +t systems do not allo)24.74 F 3.291(wt)-.25 G .791(his v)-3.291 F .791 +(alue to)-.25 F(be set\))180 424.8 Q F1144 436.8 Q F0 +(The pipe size in 512-byte blocks \(this may not be set\))24.74 E F1 +144 448.8 Q F0 +(The maximum number of bytes in POSIX message queues)24.74 E F1144 +460.8 Q F0(The maximum real-time scheduling priority)25.86 E F1144 +472.8 Q F0(The maximum stack size)26.41 E F1144 484.8 Q F0 +(The maximum amount of cpu time in seconds)26.97 E F1144 496.8 Q F0(The maximum number of processes a)24.74 E -.25(va)-.2 G -(ilable to a single user).25 E F2144 669.6 Q F0 +(ilable to a single user).25 E F1144 508.8 Q F0 (The maximum amount of virtual memory a)25.3 E -.25(va)-.2 G -(ilable to the shell).25 E F2144 681.6 Q F0 -(The maximum number of \214le locks)25.3 E(If)144 698.4 Q F3(limit)2.933 +(ilable to the shell).25 E F1144 520.8 Q F0 +(The maximum number of \214le locks)25.3 E(If)144 537.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 F2 +(wv)-.25 G .343(alue of the speci\214ed resource \(the)-3.093 F F1 2.843 E F0 .343(option is display only\).)2.843 F .343(If no)5.343 F -.175(option is gi)144 710.4 R -.15(ve)-.25 G .175(n, then).15 F F2 +.175(option is gi)144 549.6 R -.15(ve)-.25 G .175(n, then).15 F F1 2.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 F2 -2.676 E F0 2.676(,w)C .176(hich is in)-2.676 F(seconds,)144 722.4 -Q F22.698 E F0 2.698(,w)C .198 -(hich is in units of 512-byte blocks, and)-2.698 F F22.698 E F0 -(and)2.698 E F22.697 E F0 2.697(,w)C .197(hich are unscaled v) --2.697 F 2.697(alues. The)-.25 F(GNU Bash-3.0)72 768 Q(2004 Apr 20) -148.735 E(18)198.725 E 0 Cg EP -%%Page: 19 19 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E .404 -(return status is 0 unless an in)144 84 R -.25(va)-.4 G .404 -(lid option or ar).25 F .404 +(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 561.6 +Q F12.698 E F0 2.698(,w)C .198 +(hich is in units of 512-byte blocks, and)-2.698 F F12.698 E F0 +(and)2.698 E F12.697 E F0 2.697(,w)C .197(hich are unscaled v) +-2.697 F 2.697(alues. The)-.25 F .404(return status is 0 unless an in) +144 573.6 R -.25(va)-.4 G .404(lid option or ar).25 F .404 (gument is supplied, or an error occurs while setting)-.18 F 2.5(an)144 -96 S .5 -.25(ew l)-2.5 H(imit.).25 E/F1 10/Times-Bold@0 SF(umask)108 -112.8 Q F0([)2.5 E F1A F0 2.5(][)C F1-2.5 E F0 2.5(][)C/F2 -10/Times-Italic@0 SF(mode)-2.5 E F0(])A .2 -(The user \214le-creation mask is set to)144 124.8 R F2(mode)2.7 E F0 +585.6 S .5 -.25(ew l)-2.5 H(imit.).25 E F1(umask)108 602.4 Q F0([)2.5 E +F1A 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 614.4 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 136.8 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 -148.8 Q F2(mode)3.263 E F0 .382(is omitted, the current v)3.063 F .382 +pted by)144 626.4 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 +638.4 Q F2(mode)3.263 E F0 .382(is omitted, the current v)3.063 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 .547 -(printed in symbolic form; the def)144 160.8 R .547 +(printed in symbolic form; the def)144 650.4 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 F13.047 E F0 .547(option is supplied, and)3.047 F F2 -(mode)144.38 172.8 Q F0 .552 +(mode)144.38 662.4 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 184.8 Q +F .551(The return status is 0 if the)5.551 F(mode w)144 674.4 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 201.6 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0 -(...])2.5 E(Remo)144 213.6 Q 1.955 -.15(ve e)-.15 H(ach).15 E F2(name) +(unalias)108 691.2 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0 +(...])2.5 E(Remo)144 703.2 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 225.6 Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E +F(remo)144 715.2 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 242.4 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 254.4 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 +(is not a de\214ned alias.)2.68 E(GNU Bash-3.0)72 768 Q(2004 Apr 20) +148.735 E(18)198.725 E 0 Cg EP +%%Page: 19 19 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 +(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10 +/Times-Bold@0 SF(unset)108 84 Q F0<5bad>2.5 E F1(fv)A F0 2.5(][)C/F2 10 +/Times-Italic@0 SF(name)-2.5 E F0(...])2.5 E -.15(Fo)144 96 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 266.4 Q F0 .304(option is gi)2.804 F -.15(ve)-.25 G +5.607 F F1144 108 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 278.4 Q F0 .46 +(riables may not be unset.).25 F(If)5.305 E F1144 120 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 290.4 R .902 +F -.15(ve)-.15 G 2.959(d. Each).15 F .902(unset v)144 132 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 302.4 Q 4.285(yo)-.15 G(f)-4.285 E/F3 9/Times-Bold@0 -SF(RANDOM)4.285 E/F4 9/Times-Roman@0 SF(,)A F3(SECONDS)4.035 E F4(,)A F3 +(If)5.903 E(an)144 144 Q 4.285(yo)-.15 G(f)-4.285 E/F3 9/Times-Bold@0 SF +(RANDOM)4.285 E/F4 9/Times-Roman@0 SF(,)A F3(SECONDS)4.035 E F4(,)A F3 (LINENO)4.035 E F4(,)A F3(HISTCMD)4.035 E F4(,)A F3(FUNCN)4.035 E(AME) -.18 E F4(,)A F3(GR)4.035 E(OUPS)-.27 E F4(,)A F0(or)4.035 E F3(DIRST) -4.284 E -.495(AC)-.81 G(K).495 E F0(are)4.034 E .328(unset, the)144 -314.4 R 2.828(yl)-.15 G .328(ose their special properties, e)-2.828 F --.15(ve)-.25 G 2.828(ni).15 G 2.828(ft)-2.828 G(he)-2.828 E 2.828(ya) --.15 G .328(re subsequently reset.)-2.828 F .328(The e)5.328 F .329 -(xit status is true)-.15 F(unless a)144 326.4 Q F2(name)2.86 E F0 -(is readonly)2.68 E(.)-.65 E F1(wait)108 343.2 Q F0([)2.5 E F2 2.5(n.)C -(..)-2.5 E F0(])A -.8(Wa)144 355.2 S .288 +4.284 E -.495(AC)-.81 G(K).495 E F0(are)4.034 E .328(unset, the)144 156 +R 2.828(yl)-.15 G .328(ose their special properties, e)-2.828 F -.15(ve) +-.25 G 2.828(ni).15 G 2.828(ft)-2.828 G(he)-2.828 E 2.828(ya)-.15 G .328 +(re subsequently reset.)-2.828 F .328(The e)5.328 F .329 +(xit status is true)-.15 F(unless a)144 168 Q F2(name)2.86 E F0 +(is readonly)2.68 E(.)-.65 E F1(wait)108 184.8 Q F0([)2.5 E F2 2.5(n.)C +(..)-2.5 E F0(])A -.8(Wa)144 196.8 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 367.2 R -.15(ve)-.25 G +(job speci\214cation; if a job spec is gi)144 208.8 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 379.2 R -.15(ve)-.25 G 1.266 +F2(n)3.583 E F0(is)3.463 E 1.266(not gi)144 220.8 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 391.2 R .457 +(speci\214es a non-e)144 232.8 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 403.2 S +(Otherwise, the return status is the)5.457 F -.15(ex)144 244.8 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(SEE ALSO)72 420 Q F0(bash\(1\), sh\(1\))108 -432 Q(GNU Bash-3.0)72 768 Q(2004 Apr 20)148.735 E(19)198.725 E 0 Cg EP +/F5 10.95/Times-Bold@0 SF(SEE ALSO)72 261.6 Q F0(bash\(1\), sh\(1\))108 +273.6 Q(GNU Bash-3.0)72 768 Q(2004 Apr 20)148.735 E(19)198.725 E 0 Cg EP %%Trailer end %%EOF diff --git a/doc/faq.headers.mail b/doc/faq.headers.mail index a0ed5db06..fc54092c4 100644 --- a/doc/faq.headers.mail +++ b/doc/faq.headers.mail @@ -1,5 +1,5 @@ -From: chet.ramey@case.edu (Chet Ramey) +From: chet@po.cwru.edu (Chet Ramey) To: bug-bash@gnu.org -Subject: BASH Frequently-Asked Questions (FAQ version 3.35) -Cc: chet.ramey@case.edu -Reply-To: chet.ramey@case.edu +Subject: BASH Frequently-Asked Questions (FAQ version 3.30) +Reply-To: chet@po.cwru.edu + diff --git a/doc/faq.headers.news b/doc/faq.headers.news index 097c7a0ac..048588fe0 100644 --- a/doc/faq.headers.news +++ b/doc/faq.headers.news @@ -1,7 +1,7 @@ Newsgroups: comp.unix.shell,comp.unix.questions Distribution: world From: chet@po.cwru.edu (Chet Ramey) -Subject: BASH Frequently-Asked Questions (FAQ version 3.35) +Subject: BASH Frequently-Asked Questions (FAQ version 3.30) Organization: Case Western Reserve University Summary: A's to Q's about BASH, the Bourne-Again SHell Reply-To: chet@po.cwru.edu diff --git a/doc/faq.headers.news2 b/doc/faq.headers.news2 index 0d238229d..260a6c52a 100644 --- a/doc/faq.headers.news2 +++ b/doc/faq.headers.news2 @@ -1,6 +1,6 @@ Newsgroups: comp.unix.shell,comp.unix.questions,comp.answers,news.answers From: chet@po.cwru.edu (Chet Ramey) -Subject: [gnu.bash.bug] BASH Frequently-Asked Questions (FAQ version 3.35) +Subject: [gnu.bash.bug] BASH Frequently-Asked Questions (FAQ version 3.30) Organization: Case Western Reserve University Summary: A's to Q's about BASH, the Bourne-Again SHell Reply-To: chet@po.cwru.edu diff --git a/doc/faq.mail b/doc/faq.mail index e42603a3c..9fb875086 100644 --- a/doc/faq.mail +++ b/doc/faq.mail @@ -1,18 +1,18 @@ -From: chet.ramey@case.edu (Chet Ramey) +From: chet@po.cwru.edu (Chet Ramey) To: bug-bash@gnu.org -Subject: BASH Frequently-Asked Questions (FAQ version 3.35) -Cc: chet.ramey@case.edu -Reply-To: chet.ramey@case.edu +Subject: BASH Frequently-Asked Questions (FAQ version 3.30) +Reply-To: chet@po.cwru.edu + Archive-name: unix-faq/shell/bash Posting-Frequency: monthly Submitted-By: chet@po.cwru.edu (Chet Ramey) -Last-Modified: Thu Dec 14 11:34:54 EST 2006 -FAQ-Version: 3.35 -Bash-Version: 3.2 +Last-Modified: Mon Feb 14 11:57:02 EST 2005 +FAQ-Version: 3.30 +Bash-Version: 3.0 URL: ftp://ftp.cwru.edu/pub/bash/FAQ Maintainer: chet@po.cwru.edu (Chet Ramey) -This is the Bash FAQ, version 3.35, for Bash version 3.2. +This is the Bash FAQ, version 3.30, for Bash version 3.0. This document contains a set of frequently-asked questions concerning Bash, the GNU Bourne-Again Shell. Bash is a freely-available command @@ -23,7 +23,7 @@ Another good source of basic information about shells is the collection of FAQ articles periodically posted to comp.unix.shell. Questions and comments concerning this document should be sent to -chet.ramey@case.edu. +chet@po.cwru.edu. This document is available for anonymous FTP with the URL @@ -50,9 +50,9 @@ A10) What is the bash `posix mode'? Section B: The latest version -B1) What's new in version 3.2? -B2) Are there any user-visible incompatibilities between bash-3.2 and - bash-2.05b? +B1) What's new in version 3.0? +B2) Are there any user-visible incompatibilities between bash-3.0 and + bash-1.14.7? Section C: Differences from other Unix shells @@ -92,7 +92,6 @@ E10) Why does `cd //' leave $PWD as `//'? E11) If I resize my xterm while another program is running, why doesn't bash notice the change? E12) Why don't negative offsets in substring expansion work like I expect? -E13) Why does filename completion misbehave if a colon appears in the filename? Section F: Things to watch out for on certain Unix versions @@ -155,26 +154,26 @@ of Case Western Reserve University. A2) What's the latest version? -The latest version is 3.2, first made available on 12 October, 2006. +The latest version is 3.0, first made available on 27 July, 2004. 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 3.2: +The following URLs tell how to get version 3.0: -ftp://ftp.gnu.org/pub/gnu/bash/bash-3.2.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-3.2.tar.gz +ftp://ftp.gnu.org/pub/gnu/bash/bash-3.0.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-3.0.tar.gz Formatted versions of the documentation are available with the URLs: -ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-3.2.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-doc-3.2.tar.gz +ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-3.0.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-doc-3.0.tar.gz Any patches for the current version are available with the URL: -ftp://ftp.cwru.edu/pub/bash/bash-3.2-patches/ +ftp://ftp.cwru.edu/pub/bash/bash-3.0-patches/ A4) On what machines will bash run? @@ -205,10 +204,10 @@ of their CYGWIN project. For more information about the project, see http://www.cygwin.com/. Cygnus originally ported bash-1.14.7, and that port was part of their -early GNU-Win32 (the original name) releases. Cygnus has also done -ports of bash-2.05b and bash-3.0 to the CYGWIN environment, and both -are available as part of their current release. Bash-3.2 is currently -being tested and should be available soon. +early GNU-Win32 (the original name) releases. Cygnus has also done a +port of bash-2.05b to the CYGWIN environment, and it is available as +part of their current release. Bash-3.0 is currently being tested and +should be available soon. Bash-2.05b and later versions should require no local Cygnus changes to build and run under CYGWIN. @@ -230,8 +229,7 @@ ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source 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-3.1 or bash-3.2. +for Unix (SFU), once known as Interix. A6) How can I build bash with gcc? @@ -400,33 +398,15 @@ They are also listed in a section in the Bash Reference Manual Section B: The latest version -B1) What's new in version 3.2? - -Bash-3.2 is the second maintenance release of the third major release of -bash. It contains the following significant new features (see the manual -page for complete descriptions and the CHANGES and NEWS files in the -bash-3.2 distribution). - -o Bash-3.2 now checks shell scripts for NUL characters rather than non-printing - characters when deciding whether or not a script is a binary file. - -o Quoting the string argument to the [[ command's =~ (regexp) operator now - forces string matching, as with the other pattern-matching operators. - -A short feature history dating from Bash-2.0: +B1) What's new in version 3.0? -Bash-3.1 contained the following new features: +Bash-3.0 is the third major release of bash. The features introduced +in the intermediate releases following bash-2.05 have been completed. +Support for the bash debugger (a separate project) has been integrated. -o Bash-3.1 may now be configured and built in a mode that enforces strict - POSIX compliance. - -o The `+=' assignment operator, which appends to the value of a string or - array variable, has been implemented. - -o It is now possible to ignore case when matching in contexts other than - filename generation using the new `nocasematch' shell option. - -Bash-3.0 contained the following new features: +Bash-3.0 contains the following new features (see the manual page for +complete descriptions and the CHANGES and NEWS files in the bash-3.0 +distribution): o Features to support the bash debugger have been implemented, and there is a new `extdebug' option to turn the non-default options on @@ -456,6 +436,8 @@ o The `jobs', `kill', and `wait' builtins now accept job control notation o The `gettext' package and libintl have been integrated, and the shell messages may be translated into other languages +A short feature history dating from Bash-2.0: + Bash-2.05b introduced the following new features: o support for multibyte characters has been added to both bash and readline @@ -663,10 +645,10 @@ grammar tighter and smaller (66 reduce-reduce conflicts gone) lots of code now smaller and faster test suite greatly expanded -B2) Are there any user-visible incompatibilities between bash-3.2 and - bash-2.05b? +B2) Are there any user-visible incompatibilities between bash-3.0 and + bash-1.14.7? -There are a few incompatibilities between version 2.05b and version 3.2. +There are a few incompatibilities between version 1.14.7 and version 3.0. They are detailed in the file COMPAT in the bash distribution. That file is not meant to be all-encompassing; send mail to bash-maintainers@gnu.org if if you find something that's not mentioned there. @@ -720,7 +702,7 @@ Things bash has that sh does not: read -e/-p/-a/-t/-n/-d/-s/-u, readonly -a/-f/name=value, trap -l, set +o, set -b/-m/-o option/-h/-p/-B/-C/-H/-P, - unset -f/-v, ulimit -i/-m/-p/-q/-u/-x, + unset -f/-v, ulimit -m/-p/-u, type -a/-p/-t/-f/-P, suspend -f, kill -n, test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S bash reads ~/.bashrc for interactive shells, $ENV for non-interactive @@ -749,12 +731,11 @@ Things bash has that sh does not: case-insensitive pattern matching and globbing variable assignments preceding commands affect only that command, even for builtins and functions - posix mode and strict posix conformance + posix mode redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr, /dev/tcp/host/port, /dev/udp/host/port debugger support, including `caller' builtin and new variables RETURN trap - the `+=' assignment operator Things sh has that bash does not: @@ -816,8 +797,8 @@ Things bash has or uses that ksh88 does not: set -o braceexpand/-o histexpand/-o interactive-comments/ -o notify/-o physical/-o posix/-o hashall/-o onecmd/ -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type, - typeset -a/-F/-p, ulimit -i/-q/-u/-x, umask -S, alias -p, - shopt, disown, printf, complete, compgen + typeset -a/-F/-p, ulimit -u, umask -S, alias -p, shopt, + disown, printf, complete, compgen `!' csh-style history expansion POSIX.2-style globbing character classes POSIX.2-style globbing equivalence classes @@ -832,7 +813,6 @@ Things bash has or uses that ksh88 does not: RETURN trap Timestamps in history entries {x..y} brace expansion - The `+=' assignment operator Things ksh88 has or uses that bash does not: tracked aliases (alias -t) @@ -860,7 +840,7 @@ Implementation differences: C3) Which new features in ksh-93 are not in bash, and which are? -New things in ksh-93 not in bash-3.2: +New things in ksh-93 not in bash-3.0: associative arrays floating point arithmetic and variables math library functions @@ -879,6 +859,7 @@ New things in ksh-93 not in bash-3.2: `fc' has been renamed to `hist' `.' can execute shell functions exit statuses between 0 and 255 + `+=' variable assignment operator FPATH and PATH mixing getopts -a -I invocation option @@ -886,7 +867,7 @@ New things in ksh-93 not in bash-3.2: lexical scoping for local variables in `ksh' functions no scoping for local variables in `POSIX' functions -New things in ksh-93 present in bash-3.2: +New things in ksh-93 present in bash-3.0: [n]<&word- and [n]>&word- redirections (combination dup and close) for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command ?:, ++, --, `expr1 , expr2' arithmetic operators @@ -912,7 +893,6 @@ New things in ksh-93 present in bash-3.2: command name completion ENV processed only for interactive shells set -o pipefail - The `+=' assignment operator Section D: Why does bash do some things differently than other Unix shells? @@ -1136,8 +1116,9 @@ will try to write on a pipe without a reader. In that case, bash will print `Broken pipe' to stderr when ps is killed by a SIGPIPE. -As of bash-3.1, bash does not report SIGPIPE errors by default. You -can build a version of bash that will report such errors. +You can build a version of bash that will not report SIGPIPE errors +by uncommenting the definition of DONT_REPORT_SIGPIPE in the file +config-top.h. E3) When I have terminal escape sequences in my prompt, why does bash wrap lines at the wrong column? @@ -1164,12 +1145,12 @@ simple calls to `read'. For example, piping a command's output into a `while' loop that repeatedly calls `read' will result in the same behavior. -Each element of a pipeline, even a builtin or shell function, -runs in a separate process, a child of the shell running the -pipeline. A subprocess cannot affect its parent's environment. -When the `read' command sets the variable to the input, that -variable is set only in the subshell, not the parent shell. When -the subshell exits, the value of the variable is lost. +Each element of a pipeline runs in a separate process, a child of +the shell running the pipeline. A subprocess cannot affect its +parent's environment. When the `read' command sets the variable +to the input, that variable is set only in the subshell, not the +parent shell. When the subshell exits, the value of the variable +is lost. Many pipelines that end with `read variable' can be converted into command substitutions, which will capture the output of @@ -1413,32 +1394,6 @@ expanded value of param is unset or null, and $param otherwise. To use negative offsets that begin with a minus sign, separate the minus sign and the colon with a space. -E13) Why does filename completion misbehave if a colon appears in the filename? - -Filename completion (and word completion in general) may appear to behave -improperly if there is a colon in the word to be completed. - -The colon is special to readline's word completion code: it is one of the -characters that breaks words for the completer. Readline uses these characters -in sort of the same way that bash uses $IFS: they break or separate the words -the completion code hands to the application-specific or default word -completion functions. The original intent was to make it easy to edit -colon-separated lists (such as $PATH in bash) in various applications using -readline for input. - -This is complicated by the fact that some versions of the popular -`bash-completion' programmable completion package have problems with the -default completion behavior in the presence of colons. - -The current set of completion word break characters is available in bash as -the value of the COMP_WORDBREAKS variable. Removing `:' from that value is -enough to make the colon not special to completion: - -COMP_WORDBREAKS=${COMP_WORDBREAKS//:} - -You can also quote the colon with a backslash to achieve the same result -temporarily. - Section F: Things to watch out for on certain Unix versions F1) Why can't I use command line editing in my `cmdtool'? @@ -1624,9 +1579,6 @@ this. These variables can be set in your .inputrc or using the bash The `set' commands between the single quotes may also be placed in ~/.inputrc. -The script examples/scripts.noah/meta.bash encapsulates the bind -commands in a shell function. - G2) How do I write a function `x' to replace builtin command `x', but still invoke the command from within the function? @@ -1800,26 +1752,20 @@ ftp.cwru.edu in the `pub/bash' directory. Cameron Newham and Bill Rosenblatt have written a book on bash, published by O'Reilly and Associates. The book is based on Bill Rosenblatt's Korn Shell book. The title is ``Learning the Bash Shell'', and the ISBN number -of the third edition, published in March, 2005, is 0-596-00965-8. Look for -it in fine bookstores near you. This edition of the book has been updated -to cover bash-3.0. +is 1-56592-147-X. Look for it in fine bookstores near you. This book +covers bash-1.14, but has an appendix describing some of the new features +in bash-2.0. + +A second edition of this book is available, published in January, 1998. +The ISBN number is 1-56592-347-2. Look for it in the same fine bookstores +or on the web. The GNU Bash Reference Manual has been published as a printed book by -Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Nov. 2006). It covers -bash-3.2 and is available from most online bookstores (see +Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Feb 2003). It covers +bash-2.0 and is available from most online bookstores (see http://www.network-theory.co.uk/bash/manual/ for details). The publisher will donate $1 to the Free Software Foundation for each copy sold. -Arnold Robbins and Nelson Beebe have written ``Classic Shell Scripting'', -published by O'Reilly. The first edition, with ISBN number 0-596-00595-4, -was published in May, 2005. - -Chris F. A. Johnson, a frequent contributor to comp.unix.shell and -gnu.bash.bug, has written ``Shell Scripting Recipes: A Problem-Solution -Approach,'' a new book on shell scripting, concentrating on features of -the POSIX standard helpful to shell script writers. The first edition from -Apress, with ISBN number 1-59059-471-1, was published in May, 2005. - H3) What's coming in future versions? These are features I hope to include in a future version of bash. @@ -1838,15 +1784,16 @@ a bash programmer's guide with a chapter on creating loadable builtins a better loadable interface to perl with access to the shell builtins and variables (contributions gratefully accepted) ksh93-like `nameref' variables +ksh93-like `+=' variable assignment operator ksh93-like `xx.yy' variables (including some of the .sh.* variables) and associated disipline functions Some of the new ksh93 pattern matching operators, like backreferencing H5) When will the next release appear? -The next version will appear sometime in 2007. Never make predictions. +The next version will appear sometime in 2005. Never make predictions. -This document is Copyright 1995-2006 by Chester Ramey. +This document is Copyright 1995-2004 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/faq.news b/doc/faq.news index 2454e686e..661272519 100644 --- a/doc/faq.news +++ b/doc/faq.news @@ -1,7 +1,7 @@ Newsgroups: comp.unix.shell,comp.unix.questions Distribution: world From: chet@po.cwru.edu (Chet Ramey) -Subject: BASH Frequently-Asked Questions (FAQ version 3.35) +Subject: BASH Frequently-Asked Questions (FAQ version 3.30) Organization: Case Western Reserve University Summary: A's to Q's about BASH, the Bourne-Again SHell Reply-To: chet@po.cwru.edu @@ -10,13 +10,13 @@ Followup-To: poster Archive-name: unix-faq/shell/bash Posting-Frequency: monthly Submitted-By: chet@po.cwru.edu (Chet Ramey) -Last-Modified: Thu Dec 14 11:34:54 EST 2006 -FAQ-Version: 3.35 -Bash-Version: 3.2 +Last-Modified: Mon Feb 14 11:57:02 EST 2005 +FAQ-Version: 3.30 +Bash-Version: 3.0 URL: ftp://ftp.cwru.edu/pub/bash/FAQ Maintainer: chet@po.cwru.edu (Chet Ramey) -This is the Bash FAQ, version 3.35, for Bash version 3.2. +This is the Bash FAQ, version 3.30, for Bash version 3.0. This document contains a set of frequently-asked questions concerning Bash, the GNU Bourne-Again Shell. Bash is a freely-available command @@ -27,7 +27,7 @@ Another good source of basic information about shells is the collection of FAQ articles periodically posted to comp.unix.shell. Questions and comments concerning this document should be sent to -chet.ramey@case.edu. +chet@po.cwru.edu. This document is available for anonymous FTP with the URL @@ -54,9 +54,9 @@ A10) What is the bash `posix mode'? Section B: The latest version -B1) What's new in version 3.2? -B2) Are there any user-visible incompatibilities between bash-3.2 and - bash-2.05b? +B1) What's new in version 3.0? +B2) Are there any user-visible incompatibilities between bash-3.0 and + bash-1.14.7? Section C: Differences from other Unix shells @@ -96,7 +96,6 @@ E10) Why does `cd //' leave $PWD as `//'? E11) If I resize my xterm while another program is running, why doesn't bash notice the change? E12) Why don't negative offsets in substring expansion work like I expect? -E13) Why does filename completion misbehave if a colon appears in the filename? Section F: Things to watch out for on certain Unix versions @@ -159,26 +158,26 @@ of Case Western Reserve University. A2) What's the latest version? -The latest version is 3.2, first made available on 12 October, 2006. +The latest version is 3.0, first made available on 27 July, 2004. 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 3.2: +The following URLs tell how to get version 3.0: -ftp://ftp.gnu.org/pub/gnu/bash/bash-3.2.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-3.2.tar.gz +ftp://ftp.gnu.org/pub/gnu/bash/bash-3.0.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-3.0.tar.gz Formatted versions of the documentation are available with the URLs: -ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-3.2.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-doc-3.2.tar.gz +ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-3.0.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-doc-3.0.tar.gz Any patches for the current version are available with the URL: -ftp://ftp.cwru.edu/pub/bash/bash-3.2-patches/ +ftp://ftp.cwru.edu/pub/bash/bash-3.0-patches/ A4) On what machines will bash run? @@ -209,10 +208,10 @@ of their CYGWIN project. For more information about the project, see http://www.cygwin.com/. Cygnus originally ported bash-1.14.7, and that port was part of their -early GNU-Win32 (the original name) releases. Cygnus has also done -ports of bash-2.05b and bash-3.0 to the CYGWIN environment, and both -are available as part of their current release. Bash-3.2 is currently -being tested and should be available soon. +early GNU-Win32 (the original name) releases. Cygnus has also done a +port of bash-2.05b to the CYGWIN environment, and it is available as +part of their current release. Bash-3.0 is currently being tested and +should be available soon. Bash-2.05b and later versions should require no local Cygnus changes to build and run under CYGWIN. @@ -234,8 +233,7 @@ ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source 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-3.1 or bash-3.2. +for Unix (SFU), once known as Interix. A6) How can I build bash with gcc? @@ -404,33 +402,15 @@ They are also listed in a section in the Bash Reference Manual Section B: The latest version -B1) What's new in version 3.2? +B1) What's new in version 3.0? -Bash-3.2 is the second maintenance release of the third major release of -bash. It contains the following significant new features (see the manual -page for complete descriptions and the CHANGES and NEWS files in the -bash-3.2 distribution). +Bash-3.0 is the third major release of bash. The features introduced +in the intermediate releases following bash-2.05 have been completed. +Support for the bash debugger (a separate project) has been integrated. -o Bash-3.2 now checks shell scripts for NUL characters rather than non-printing - characters when deciding whether or not a script is a binary file. - -o Quoting the string argument to the [[ command's =~ (regexp) operator now - forces string matching, as with the other pattern-matching operators. - -A short feature history dating from Bash-2.0: - -Bash-3.1 contained the following new features: - -o Bash-3.1 may now be configured and built in a mode that enforces strict - POSIX compliance. - -o The `+=' assignment operator, which appends to the value of a string or - array variable, has been implemented. - -o It is now possible to ignore case when matching in contexts other than - filename generation using the new `nocasematch' shell option. - -Bash-3.0 contained the following new features: +Bash-3.0 contains the following new features (see the manual page for +complete descriptions and the CHANGES and NEWS files in the bash-3.0 +distribution): o Features to support the bash debugger have been implemented, and there is a new `extdebug' option to turn the non-default options on @@ -460,6 +440,8 @@ o The `jobs', `kill', and `wait' builtins now accept job control notation o The `gettext' package and libintl have been integrated, and the shell messages may be translated into other languages +A short feature history dating from Bash-2.0: + Bash-2.05b introduced the following new features: o support for multibyte characters has been added to both bash and readline @@ -667,10 +649,10 @@ grammar tighter and smaller (66 reduce-reduce conflicts gone) lots of code now smaller and faster test suite greatly expanded -B2) Are there any user-visible incompatibilities between bash-3.2 and - bash-2.05b? +B2) Are there any user-visible incompatibilities between bash-3.0 and + bash-1.14.7? -There are a few incompatibilities between version 2.05b and version 3.2. +There are a few incompatibilities between version 1.14.7 and version 3.0. They are detailed in the file COMPAT in the bash distribution. That file is not meant to be all-encompassing; send mail to bash-maintainers@gnu.org if if you find something that's not mentioned there. @@ -724,7 +706,7 @@ Things bash has that sh does not: read -e/-p/-a/-t/-n/-d/-s/-u, readonly -a/-f/name=value, trap -l, set +o, set -b/-m/-o option/-h/-p/-B/-C/-H/-P, - unset -f/-v, ulimit -i/-m/-p/-q/-u/-x, + unset -f/-v, ulimit -m/-p/-u, type -a/-p/-t/-f/-P, suspend -f, kill -n, test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S bash reads ~/.bashrc for interactive shells, $ENV for non-interactive @@ -753,12 +735,11 @@ Things bash has that sh does not: case-insensitive pattern matching and globbing variable assignments preceding commands affect only that command, even for builtins and functions - posix mode and strict posix conformance + posix mode redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr, /dev/tcp/host/port, /dev/udp/host/port debugger support, including `caller' builtin and new variables RETURN trap - the `+=' assignment operator Things sh has that bash does not: @@ -820,8 +801,8 @@ Things bash has or uses that ksh88 does not: set -o braceexpand/-o histexpand/-o interactive-comments/ -o notify/-o physical/-o posix/-o hashall/-o onecmd/ -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type, - typeset -a/-F/-p, ulimit -i/-q/-u/-x, umask -S, alias -p, - shopt, disown, printf, complete, compgen + typeset -a/-F/-p, ulimit -u, umask -S, alias -p, shopt, + disown, printf, complete, compgen `!' csh-style history expansion POSIX.2-style globbing character classes POSIX.2-style globbing equivalence classes @@ -836,7 +817,6 @@ Things bash has or uses that ksh88 does not: RETURN trap Timestamps in history entries {x..y} brace expansion - The `+=' assignment operator Things ksh88 has or uses that bash does not: tracked aliases (alias -t) @@ -864,7 +844,7 @@ Implementation differences: C3) Which new features in ksh-93 are not in bash, and which are? -New things in ksh-93 not in bash-3.2: +New things in ksh-93 not in bash-3.0: associative arrays floating point arithmetic and variables math library functions @@ -883,6 +863,7 @@ New things in ksh-93 not in bash-3.2: `fc' has been renamed to `hist' `.' can execute shell functions exit statuses between 0 and 255 + `+=' variable assignment operator FPATH and PATH mixing getopts -a -I invocation option @@ -890,7 +871,7 @@ New things in ksh-93 not in bash-3.2: lexical scoping for local variables in `ksh' functions no scoping for local variables in `POSIX' functions -New things in ksh-93 present in bash-3.2: +New things in ksh-93 present in bash-3.0: [n]<&word- and [n]>&word- redirections (combination dup and close) for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command ?:, ++, --, `expr1 , expr2' arithmetic operators @@ -916,7 +897,6 @@ New things in ksh-93 present in bash-3.2: command name completion ENV processed only for interactive shells set -o pipefail - The `+=' assignment operator Section D: Why does bash do some things differently than other Unix shells? @@ -1140,8 +1120,9 @@ will try to write on a pipe without a reader. In that case, bash will print `Broken pipe' to stderr when ps is killed by a SIGPIPE. -As of bash-3.1, bash does not report SIGPIPE errors by default. You -can build a version of bash that will report such errors. +You can build a version of bash that will not report SIGPIPE errors +by uncommenting the definition of DONT_REPORT_SIGPIPE in the file +config-top.h. E3) When I have terminal escape sequences in my prompt, why does bash wrap lines at the wrong column? @@ -1168,12 +1149,12 @@ simple calls to `read'. For example, piping a command's output into a `while' loop that repeatedly calls `read' will result in the same behavior. -Each element of a pipeline, even a builtin or shell function, -runs in a separate process, a child of the shell running the -pipeline. A subprocess cannot affect its parent's environment. -When the `read' command sets the variable to the input, that -variable is set only in the subshell, not the parent shell. When -the subshell exits, the value of the variable is lost. +Each element of a pipeline runs in a separate process, a child of +the shell running the pipeline. A subprocess cannot affect its +parent's environment. When the `read' command sets the variable +to the input, that variable is set only in the subshell, not the +parent shell. When the subshell exits, the value of the variable +is lost. Many pipelines that end with `read variable' can be converted into command substitutions, which will capture the output of @@ -1417,32 +1398,6 @@ expanded value of param is unset or null, and $param otherwise. To use negative offsets that begin with a minus sign, separate the minus sign and the colon with a space. -E13) Why does filename completion misbehave if a colon appears in the filename? - -Filename completion (and word completion in general) may appear to behave -improperly if there is a colon in the word to be completed. - -The colon is special to readline's word completion code: it is one of the -characters that breaks words for the completer. Readline uses these characters -in sort of the same way that bash uses $IFS: they break or separate the words -the completion code hands to the application-specific or default word -completion functions. The original intent was to make it easy to edit -colon-separated lists (such as $PATH in bash) in various applications using -readline for input. - -This is complicated by the fact that some versions of the popular -`bash-completion' programmable completion package have problems with the -default completion behavior in the presence of colons. - -The current set of completion word break characters is available in bash as -the value of the COMP_WORDBREAKS variable. Removing `:' from that value is -enough to make the colon not special to completion: - -COMP_WORDBREAKS=${COMP_WORDBREAKS//:} - -You can also quote the colon with a backslash to achieve the same result -temporarily. - Section F: Things to watch out for on certain Unix versions F1) Why can't I use command line editing in my `cmdtool'? @@ -1628,9 +1583,6 @@ this. These variables can be set in your .inputrc or using the bash The `set' commands between the single quotes may also be placed in ~/.inputrc. -The script examples/scripts.noah/meta.bash encapsulates the bind -commands in a shell function. - G2) How do I write a function `x' to replace builtin command `x', but still invoke the command from within the function? @@ -1804,26 +1756,20 @@ ftp.cwru.edu in the `pub/bash' directory. Cameron Newham and Bill Rosenblatt have written a book on bash, published by O'Reilly and Associates. The book is based on Bill Rosenblatt's Korn Shell book. The title is ``Learning the Bash Shell'', and the ISBN number -of the third edition, published in March, 2005, is 0-596-00965-8. Look for -it in fine bookstores near you. This edition of the book has been updated -to cover bash-3.0. +is 1-56592-147-X. Look for it in fine bookstores near you. This book +covers bash-1.14, but has an appendix describing some of the new features +in bash-2.0. + +A second edition of this book is available, published in January, 1998. +The ISBN number is 1-56592-347-2. Look for it in the same fine bookstores +or on the web. The GNU Bash Reference Manual has been published as a printed book by -Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Nov. 2006). It covers -bash-3.2 and is available from most online bookstores (see +Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Feb 2003). It covers +bash-2.0 and is available from most online bookstores (see http://www.network-theory.co.uk/bash/manual/ for details). The publisher will donate $1 to the Free Software Foundation for each copy sold. -Arnold Robbins and Nelson Beebe have written ``Classic Shell Scripting'', -published by O'Reilly. The first edition, with ISBN number 0-596-00595-4, -was published in May, 2005. - -Chris F. A. Johnson, a frequent contributor to comp.unix.shell and -gnu.bash.bug, has written ``Shell Scripting Recipes: A Problem-Solution -Approach,'' a new book on shell scripting, concentrating on features of -the POSIX standard helpful to shell script writers. The first edition from -Apress, with ISBN number 1-59059-471-1, was published in May, 2005. - H3) What's coming in future versions? These are features I hope to include in a future version of bash. @@ -1842,15 +1788,16 @@ a bash programmer's guide with a chapter on creating loadable builtins a better loadable interface to perl with access to the shell builtins and variables (contributions gratefully accepted) ksh93-like `nameref' variables +ksh93-like `+=' variable assignment operator ksh93-like `xx.yy' variables (including some of the .sh.* variables) and associated disipline functions Some of the new ksh93 pattern matching operators, like backreferencing H5) When will the next release appear? -The next version will appear sometime in 2007. Never make predictions. +The next version will appear sometime in 2005. Never make predictions. -This document is Copyright 1995-2006 by Chester Ramey. +This document is Copyright 1995-2004 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/faq.news2 b/doc/faq.news2 index 0d646ff52..7debd37f5 100644 --- a/doc/faq.news2 +++ b/doc/faq.news2 @@ -1,6 +1,6 @@ Newsgroups: comp.unix.shell,comp.unix.questions,comp.answers,news.answers From: chet@po.cwru.edu (Chet Ramey) -Subject: [gnu.bash.bug] BASH Frequently-Asked Questions (FAQ version 3.35) +Subject: [gnu.bash.bug] BASH Frequently-Asked Questions (FAQ version 3.30) Organization: Case Western Reserve University Summary: A's to Q's about BASH, the Bourne-Again SHell Reply-To: chet@po.cwru.edu @@ -10,13 +10,13 @@ Approved: news-answers-request@MIT.EDU Archive-name: unix-faq/shell/bash Posting-Frequency: monthly Submitted-By: chet@po.cwru.edu (Chet Ramey) -Last-Modified: Thu Dec 14 11:34:54 EST 2006 -FAQ-Version: 3.35 -Bash-Version: 3.2 +Last-Modified: Mon Feb 14 11:57:02 EST 2005 +FAQ-Version: 3.30 +Bash-Version: 3.0 URL: ftp://ftp.cwru.edu/pub/bash/FAQ Maintainer: chet@po.cwru.edu (Chet Ramey) -This is the Bash FAQ, version 3.35, for Bash version 3.2. +This is the Bash FAQ, version 3.30, for Bash version 3.0. This document contains a set of frequently-asked questions concerning Bash, the GNU Bourne-Again Shell. Bash is a freely-available command @@ -27,7 +27,7 @@ Another good source of basic information about shells is the collection of FAQ articles periodically posted to comp.unix.shell. Questions and comments concerning this document should be sent to -chet.ramey@case.edu. +chet@po.cwru.edu. This document is available for anonymous FTP with the URL @@ -54,9 +54,9 @@ A10) What is the bash `posix mode'? Section B: The latest version -B1) What's new in version 3.2? -B2) Are there any user-visible incompatibilities between bash-3.2 and - bash-2.05b? +B1) What's new in version 3.0? +B2) Are there any user-visible incompatibilities between bash-3.0 and + bash-1.14.7? Section C: Differences from other Unix shells @@ -96,7 +96,6 @@ E10) Why does `cd //' leave $PWD as `//'? E11) If I resize my xterm while another program is running, why doesn't bash notice the change? E12) Why don't negative offsets in substring expansion work like I expect? -E13) Why does filename completion misbehave if a colon appears in the filename? Section F: Things to watch out for on certain Unix versions @@ -159,26 +158,26 @@ of Case Western Reserve University. A2) What's the latest version? -The latest version is 3.2, first made available on 12 October, 2006. +The latest version is 3.0, first made available on 27 July, 2004. 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 3.2: +The following URLs tell how to get version 3.0: -ftp://ftp.gnu.org/pub/gnu/bash/bash-3.2.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-3.2.tar.gz +ftp://ftp.gnu.org/pub/gnu/bash/bash-3.0.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-3.0.tar.gz Formatted versions of the documentation are available with the URLs: -ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-3.2.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-doc-3.2.tar.gz +ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-3.0.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-doc-3.0.tar.gz Any patches for the current version are available with the URL: -ftp://ftp.cwru.edu/pub/bash/bash-3.2-patches/ +ftp://ftp.cwru.edu/pub/bash/bash-3.0-patches/ A4) On what machines will bash run? @@ -209,10 +208,10 @@ of their CYGWIN project. For more information about the project, see http://www.cygwin.com/. Cygnus originally ported bash-1.14.7, and that port was part of their -early GNU-Win32 (the original name) releases. Cygnus has also done -ports of bash-2.05b and bash-3.0 to the CYGWIN environment, and both -are available as part of their current release. Bash-3.2 is currently -being tested and should be available soon. +early GNU-Win32 (the original name) releases. Cygnus has also done a +port of bash-2.05b to the CYGWIN environment, and it is available as +part of their current release. Bash-3.0 is currently being tested and +should be available soon. Bash-2.05b and later versions should require no local Cygnus changes to build and run under CYGWIN. @@ -234,8 +233,7 @@ ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source 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-3.1 or bash-3.2. +for Unix (SFU), once known as Interix. A6) How can I build bash with gcc? @@ -404,33 +402,15 @@ They are also listed in a section in the Bash Reference Manual Section B: The latest version -B1) What's new in version 3.2? +B1) What's new in version 3.0? -Bash-3.2 is the second maintenance release of the third major release of -bash. It contains the following significant new features (see the manual -page for complete descriptions and the CHANGES and NEWS files in the -bash-3.2 distribution). +Bash-3.0 is the third major release of bash. The features introduced +in the intermediate releases following bash-2.05 have been completed. +Support for the bash debugger (a separate project) has been integrated. -o Bash-3.2 now checks shell scripts for NUL characters rather than non-printing - characters when deciding whether or not a script is a binary file. - -o Quoting the string argument to the [[ command's =~ (regexp) operator now - forces string matching, as with the other pattern-matching operators. - -A short feature history dating from Bash-2.0: - -Bash-3.1 contained the following new features: - -o Bash-3.1 may now be configured and built in a mode that enforces strict - POSIX compliance. - -o The `+=' assignment operator, which appends to the value of a string or - array variable, has been implemented. - -o It is now possible to ignore case when matching in contexts other than - filename generation using the new `nocasematch' shell option. - -Bash-3.0 contained the following new features: +Bash-3.0 contains the following new features (see the manual page for +complete descriptions and the CHANGES and NEWS files in the bash-3.0 +distribution): o Features to support the bash debugger have been implemented, and there is a new `extdebug' option to turn the non-default options on @@ -460,6 +440,8 @@ o The `jobs', `kill', and `wait' builtins now accept job control notation o The `gettext' package and libintl have been integrated, and the shell messages may be translated into other languages +A short feature history dating from Bash-2.0: + Bash-2.05b introduced the following new features: o support for multibyte characters has been added to both bash and readline @@ -667,10 +649,10 @@ grammar tighter and smaller (66 reduce-reduce conflicts gone) lots of code now smaller and faster test suite greatly expanded -B2) Are there any user-visible incompatibilities between bash-3.2 and - bash-2.05b? +B2) Are there any user-visible incompatibilities between bash-3.0 and + bash-1.14.7? -There are a few incompatibilities between version 2.05b and version 3.2. +There are a few incompatibilities between version 1.14.7 and version 3.0. They are detailed in the file COMPAT in the bash distribution. That file is not meant to be all-encompassing; send mail to bash-maintainers@gnu.org if if you find something that's not mentioned there. @@ -724,7 +706,7 @@ Things bash has that sh does not: read -e/-p/-a/-t/-n/-d/-s/-u, readonly -a/-f/name=value, trap -l, set +o, set -b/-m/-o option/-h/-p/-B/-C/-H/-P, - unset -f/-v, ulimit -i/-m/-p/-q/-u/-x, + unset -f/-v, ulimit -m/-p/-u, type -a/-p/-t/-f/-P, suspend -f, kill -n, test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S bash reads ~/.bashrc for interactive shells, $ENV for non-interactive @@ -753,12 +735,11 @@ Things bash has that sh does not: case-insensitive pattern matching and globbing variable assignments preceding commands affect only that command, even for builtins and functions - posix mode and strict posix conformance + posix mode redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr, /dev/tcp/host/port, /dev/udp/host/port debugger support, including `caller' builtin and new variables RETURN trap - the `+=' assignment operator Things sh has that bash does not: @@ -820,8 +801,8 @@ Things bash has or uses that ksh88 does not: set -o braceexpand/-o histexpand/-o interactive-comments/ -o notify/-o physical/-o posix/-o hashall/-o onecmd/ -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type, - typeset -a/-F/-p, ulimit -i/-q/-u/-x, umask -S, alias -p, - shopt, disown, printf, complete, compgen + typeset -a/-F/-p, ulimit -u, umask -S, alias -p, shopt, + disown, printf, complete, compgen `!' csh-style history expansion POSIX.2-style globbing character classes POSIX.2-style globbing equivalence classes @@ -836,7 +817,6 @@ Things bash has or uses that ksh88 does not: RETURN trap Timestamps in history entries {x..y} brace expansion - The `+=' assignment operator Things ksh88 has or uses that bash does not: tracked aliases (alias -t) @@ -864,7 +844,7 @@ Implementation differences: C3) Which new features in ksh-93 are not in bash, and which are? -New things in ksh-93 not in bash-3.2: +New things in ksh-93 not in bash-3.0: associative arrays floating point arithmetic and variables math library functions @@ -883,6 +863,7 @@ New things in ksh-93 not in bash-3.2: `fc' has been renamed to `hist' `.' can execute shell functions exit statuses between 0 and 255 + `+=' variable assignment operator FPATH and PATH mixing getopts -a -I invocation option @@ -890,7 +871,7 @@ New things in ksh-93 not in bash-3.2: lexical scoping for local variables in `ksh' functions no scoping for local variables in `POSIX' functions -New things in ksh-93 present in bash-3.2: +New things in ksh-93 present in bash-3.0: [n]<&word- and [n]>&word- redirections (combination dup and close) for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command ?:, ++, --, `expr1 , expr2' arithmetic operators @@ -916,7 +897,6 @@ New things in ksh-93 present in bash-3.2: command name completion ENV processed only for interactive shells set -o pipefail - The `+=' assignment operator Section D: Why does bash do some things differently than other Unix shells? @@ -1140,8 +1120,9 @@ will try to write on a pipe without a reader. In that case, bash will print `Broken pipe' to stderr when ps is killed by a SIGPIPE. -As of bash-3.1, bash does not report SIGPIPE errors by default. You -can build a version of bash that will report such errors. +You can build a version of bash that will not report SIGPIPE errors +by uncommenting the definition of DONT_REPORT_SIGPIPE in the file +config-top.h. E3) When I have terminal escape sequences in my prompt, why does bash wrap lines at the wrong column? @@ -1168,12 +1149,12 @@ simple calls to `read'. For example, piping a command's output into a `while' loop that repeatedly calls `read' will result in the same behavior. -Each element of a pipeline, even a builtin or shell function, -runs in a separate process, a child of the shell running the -pipeline. A subprocess cannot affect its parent's environment. -When the `read' command sets the variable to the input, that -variable is set only in the subshell, not the parent shell. When -the subshell exits, the value of the variable is lost. +Each element of a pipeline runs in a separate process, a child of +the shell running the pipeline. A subprocess cannot affect its +parent's environment. When the `read' command sets the variable +to the input, that variable is set only in the subshell, not the +parent shell. When the subshell exits, the value of the variable +is lost. Many pipelines that end with `read variable' can be converted into command substitutions, which will capture the output of @@ -1417,32 +1398,6 @@ expanded value of param is unset or null, and $param otherwise. To use negative offsets that begin with a minus sign, separate the minus sign and the colon with a space. -E13) Why does filename completion misbehave if a colon appears in the filename? - -Filename completion (and word completion in general) may appear to behave -improperly if there is a colon in the word to be completed. - -The colon is special to readline's word completion code: it is one of the -characters that breaks words for the completer. Readline uses these characters -in sort of the same way that bash uses $IFS: they break or separate the words -the completion code hands to the application-specific or default word -completion functions. The original intent was to make it easy to edit -colon-separated lists (such as $PATH in bash) in various applications using -readline for input. - -This is complicated by the fact that some versions of the popular -`bash-completion' programmable completion package have problems with the -default completion behavior in the presence of colons. - -The current set of completion word break characters is available in bash as -the value of the COMP_WORDBREAKS variable. Removing `:' from that value is -enough to make the colon not special to completion: - -COMP_WORDBREAKS=${COMP_WORDBREAKS//:} - -You can also quote the colon with a backslash to achieve the same result -temporarily. - Section F: Things to watch out for on certain Unix versions F1) Why can't I use command line editing in my `cmdtool'? @@ -1628,9 +1583,6 @@ this. These variables can be set in your .inputrc or using the bash The `set' commands between the single quotes may also be placed in ~/.inputrc. -The script examples/scripts.noah/meta.bash encapsulates the bind -commands in a shell function. - G2) How do I write a function `x' to replace builtin command `x', but still invoke the command from within the function? @@ -1804,26 +1756,20 @@ ftp.cwru.edu in the `pub/bash' directory. Cameron Newham and Bill Rosenblatt have written a book on bash, published by O'Reilly and Associates. The book is based on Bill Rosenblatt's Korn Shell book. The title is ``Learning the Bash Shell'', and the ISBN number -of the third edition, published in March, 2005, is 0-596-00965-8. Look for -it in fine bookstores near you. This edition of the book has been updated -to cover bash-3.0. +is 1-56592-147-X. Look for it in fine bookstores near you. This book +covers bash-1.14, but has an appendix describing some of the new features +in bash-2.0. + +A second edition of this book is available, published in January, 1998. +The ISBN number is 1-56592-347-2. Look for it in the same fine bookstores +or on the web. The GNU Bash Reference Manual has been published as a printed book by -Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Nov. 2006). It covers -bash-3.2 and is available from most online bookstores (see +Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Feb 2003). It covers +bash-2.0 and is available from most online bookstores (see http://www.network-theory.co.uk/bash/manual/ for details). The publisher will donate $1 to the Free Software Foundation for each copy sold. -Arnold Robbins and Nelson Beebe have written ``Classic Shell Scripting'', -published by O'Reilly. The first edition, with ISBN number 0-596-00595-4, -was published in May, 2005. - -Chris F. A. Johnson, a frequent contributor to comp.unix.shell and -gnu.bash.bug, has written ``Shell Scripting Recipes: A Problem-Solution -Approach,'' a new book on shell scripting, concentrating on features of -the POSIX standard helpful to shell script writers. The first edition from -Apress, with ISBN number 1-59059-471-1, was published in May, 2005. - H3) What's coming in future versions? These are features I hope to include in a future version of bash. @@ -1842,15 +1788,16 @@ a bash programmer's guide with a chapter on creating loadable builtins a better loadable interface to perl with access to the shell builtins and variables (contributions gratefully accepted) ksh93-like `nameref' variables +ksh93-like `+=' variable assignment operator ksh93-like `xx.yy' variables (including some of the .sh.* variables) and associated disipline functions Some of the new ksh93 pattern matching operators, like backreferencing H5) When will the next release appear? -The next version will appear sometime in 2007. Never make predictions. +The next version will appear sometime in 2005. Never make predictions. -This document is Copyright 1995-2006 by Chester Ramey. +This document is Copyright 1995-2004 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/faq.version b/doc/faq.version index 79861feb9..741753960 100644 --- a/doc/faq.version +++ b/doc/faq.version @@ -1,9 +1,9 @@ Archive-name: unix-faq/shell/bash Posting-Frequency: monthly Submitted-By: chet@po.cwru.edu (Chet Ramey) -Last-Modified: Thu Dec 14 11:34:54 EST 2006 -FAQ-Version: 3.35 -Bash-Version: 3.2 +Last-Modified: Mon Feb 14 11:57:02 EST 2005 +FAQ-Version: 3.30 +Bash-Version: 3.0 URL: ftp://ftp.cwru.edu/pub/bash/FAQ Maintainer: chet@po.cwru.edu (Chet Ramey) diff --git a/doc/rbash.ps b/doc/rbash.ps index fbbc5d964..167462edb 100644 --- a/doc/rbash.ps +++ b/doc/rbash.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.19.1 -%%CreationDate: Tue Jan 16 11:15:09 2007 +%%CreationDate: Thu Jan 26 11:18:52 2006 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%DocumentSuppliedResources: procset grops 1.19 1 diff --git a/doc/version.texi b/doc/version.texi index 79525961d..84cdd8190 100644 --- a/doc/version.texi +++ b/doc/version.texi @@ -1,10 +1,10 @@ @ignore -Copyright (C) 1988-2007 Free Software Foundation, Inc. +Copyright (C) 1988-2006 Free Software Foundation, Inc. @end ignore -@set LASTCHANGE Fri Jan 12 16:29:58 EST 2007 +@set LASTCHANGE Thu Jan 26 09:05:01 EST 2006 @set EDITION 3.2 @set VERSION 3.2 -@set UPDATED 12 January 2007 -@set UPDATED-MONTH January 2007 +@set UPDATED 26 January 2006 +@set UPDATED-MONTH January 2006 diff --git a/error.c b/error.c index c83a98611..edb0e2e9a 100644 --- a/error.c +++ b/error.c @@ -1,5 +1,5 @@ /* error.c -- Functions for handling errors. */ -/* Copyright (C) 1993-2006 Free Software Foundation, Inc. +/* Copyright (C) 1993-2003 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -52,6 +52,8 @@ extern int errno; extern int executing_line_number __P((void)); +extern int interactive_shell, interactive, startup_state; +extern char *dollar_vars[]; extern char *shell_name; #if defined (JOB_CONTROL) extern pid_t shell_pgrp; @@ -59,7 +61,7 @@ extern int give_terminal_to __P((pid_t, int)); #endif /* JOB_CONTROL */ #if defined (ARRAY_VARS) -extern const char * const bash_badsub_errmsg; +extern char *bash_badsub_errmsg; #endif static void error_prolog __P((int)); @@ -70,7 +72,7 @@ static void error_prolog __P((int)); #define MAINTAINER "bash-maintainers@gnu.org" #endif -const char * const the_current_maintainer = MAINTAINER; +char *the_current_maintainer = MAINTAINER; int gnu_error_format = 0; @@ -85,7 +87,7 @@ error_prolog (print_lineno) line = (print_lineno && interactive_shell == 0) ? executing_line_number () : -1; if (line > 0) - fprintf (stderr, "%s:%s%d: ", ename, gnu_error_format ? "" : _(" line "), line); + fprintf (stderr, "%s:%s%d: ", ename, gnu_error_format ? "" : " line ", line); else fprintf (stderr, "%s: ", ename); } @@ -315,11 +317,11 @@ parser_error (lineno, format, va_alist) if (interactive) fprintf (stderr, "%s: ", ename); else if (interactive_shell) - fprintf (stderr, "%s: %s:%s%d: ", ename, iname, gnu_error_format ? "" : _(" line "), lineno); + fprintf (stderr, "%s: %s:%s%d: ", ename, iname, gnu_error_format ? "" : " line ", lineno); else if (STREQ (ename, iname)) - fprintf (stderr, "%s:%s%d: ", ename, gnu_error_format ? "" : _(" line "), lineno); + fprintf (stderr, "%s:%s%d: ", ename, gnu_error_format ? "" : " line ", lineno); else - fprintf (stderr, "%s: %s:%s%d: ", ename, iname, gnu_error_format ? "" : _(" line "), lineno); + fprintf (stderr, "%s: %s:%s%d: ", ename, iname, gnu_error_format ? "" : " line ", lineno); SH_VA_START (args, format); @@ -399,7 +401,7 @@ trace (format, va_alist) /* **************************************************************** */ -static const char * const cmd_error_table[] = { +static char *cmd_error_table[] = { N_("unknown command error"), /* CMDERR_DEFAULT */ N_("bad command type"), /* CMDERR_BADTYPE */ N_("bad connector"), /* CMDERR_BADCONN */ diff --git a/eval.c b/eval.c index bae6c5b6c..34a088ce0 100644 --- a/eval.c +++ b/eval.c @@ -212,7 +212,7 @@ parse_command () { command_to_execute = get_string_value ("PROMPT_COMMAND"); if (command_to_execute) - execute_variable_command (command_to_execute, "PROMPT_COMMAND"); + execute_prompt_command (command_to_execute); if (running_under_emacs == 2) send_pwd_to_eterm (); /* Yuck */ diff --git a/examples/loadables/Makefile.in b/examples/loadables/Makefile.in index 8092d20df..f6208f5cc 100644 --- a/examples/loadables/Makefile.in +++ b/examples/loadables/Makefile.in @@ -26,8 +26,6 @@ libdir = @libdir@ infodir = @infodir@ includedir = @includedir@ -datarootdir = @datarootdir@ - topdir = @top_srcdir@ BUILD_DIR = @BUILD_DIR@ srcdir = @srcdir@ @@ -85,7 +83,7 @@ INC = -I. -I.. -I$(topdir) -I$(topdir)/lib -I$(topdir)/builtins \ ALLPROG = print truefalse sleep pushd finfo logname basename dirname \ tty pathchk tee head mkdir rmdir printenv id whoami \ - uname sync push ln unlink cut realpath getconf strftime mypid + uname sync push ln unlink cut realpath getconf strftime OTHERPROG = necho hello cat all: $(SHOBJ_STATUS) @@ -188,9 +186,6 @@ realpath: realpath.o strftime: strftime.o $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ strftime.o $(SHOBJ_LIBS) -mypid: mypid.o - $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ mypid.o $(SHOBJ_LIBS) - # pushd is a special case. We use the same source that the builtin version # uses, with special compilation options. # @@ -241,4 +236,3 @@ push.o: push.c mkdir.o: mkdir.c realpath.o: realpath.c strftime.o: strftime.c -mypid.o: mypid.c diff --git a/examples/loadables/perl/Makefile.in b/examples/loadables/perl/Makefile.in index 18b30f5e1..3af9b8543 100644 --- a/examples/loadables/perl/Makefile.in +++ b/examples/loadables/perl/Makefile.in @@ -20,15 +20,13 @@ # Include some boilerplate Gnu makefile definitions. prefix = @prefix@ -exec_prefix = @exec_prefix@ +exec_prefix = @exec_prefix@ bindir = @bindir@ libdir = @libdir@ infodir = @infodir@ includedir = @includedir@ -datarootdir = @datarootdir@ - topdir = @top_srcdir@ BUILD_DIR = @BUILD_DIR@ srcdir = @srcdir@ diff --git a/execute_cmd.c b/execute_cmd.c index 1f19991e2..57e9d1136 100644 --- a/execute_cmd.c +++ b/execute_cmd.c @@ -1,6 +1,6 @@ /* execute_cmd.c -- Execute a COMMAND structure. */ -/* Copyright (C) 1987-2007 Free Software Foundation, Inc. +/* Copyright (C) 1987-2005 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -96,9 +96,8 @@ extern int errno; #endif extern int posixly_correct; -extern int expand_aliases; -extern int autocd; extern int breaking, continuing, loop_level; +extern int expand_aliases; extern int parse_and_execute_level, running_trap; extern int command_string_index, line_number; extern int dot_found_in_search; @@ -215,8 +214,6 @@ static int special_builtin_failed; report the correct line number. Kind of a hack. */ static int showing_function_line; -static int line_number_for_err_trap; - /* For catching RETURN in a function. */ int return_catch_flag; int return_catch_value; @@ -668,7 +665,7 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, if (command->flags & CMD_STDIN_REDIR) command->value.Simple->flags |= CMD_STDIN_REDIR; - line_number_for_err_trap = line_number = command->value.Simple->line; + line_number = command->value.Simple->line; exec_result = execute_simple_command (command->value.Simple, pipe_in, pipe_out, asynchronous, fds_to_close); @@ -908,7 +905,7 @@ extern int timeval_to_cpu __P((struct timeval *, struct timeval *, struct timeva #define POSIX_TIMEFORMAT "real %2R\nuser %2U\nsys %2S" #define BASH_TIMEFORMAT "\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS" -static const int precs[] = { 0, 100, 10, 1 }; +static int precs[] = { 0, 100, 10, 1 }; /* Expand one `%'-prefixed escape sequence from a time format string. */ static int @@ -1210,10 +1207,6 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) the special case of an asynchronous GROUP command where the the subshell bit is turned on down in case cm_group: below), turn off `asynchronous', so that two subshells aren't spawned. - XXX - asynchronous used to be set to 0 in this block, but that - means that setup_async_signals was never run. Now it's set to - 0 after subshell_environment is set appropriately and setup_async_signals - is run. This seems semantically correct to me. For example, ( foo ) & seems to say ``do the command `foo' in a subshell @@ -1241,35 +1234,19 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) aliases. */ if (ois != interactive_shell) expand_aliases = 0; + asynchronous = 0; } /* Subshells are neither login nor interactive. */ login_shell = interactive = 0; - if (user_subshell) - subshell_environment = SUBSHELL_PAREN; - else - { - subshell_environment = 0; /* XXX */ - if (asynchronous) - subshell_environment |= SUBSHELL_ASYNC; - if (pipe_in != NO_PIPE || pipe_out != NO_PIPE) - subshell_environment |= SUBSHELL_PIPE; - } + subshell_environment = user_subshell ? SUBSHELL_PAREN : SUBSHELL_ASYNC; reset_terminating_signals (); /* in sig.c */ /* Cancel traps, in trap.c. */ restore_original_signals (); - - /* Make sure restore_original_signals doesn't undo the work done by - make_child to ensure that asynchronous children are immune to SIGINT - and SIGQUIT. Turn off asynchronous to make sure more subshells are - not spawned. */ if (asynchronous) - { - setup_async_signals (); - asynchronous = 0; - } + setup_async_signals (); #if defined (JOB_CONTROL) set_sigchld_handler (); @@ -1351,7 +1328,8 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) if (function_value) return_code = return_catch_value; else - return_code = execute_command_internal (tcom, asynchronous, NO_PIPE, NO_PIPE, fds_to_close); + return_code = execute_command_internal + (tcom, asynchronous, NO_PIPE, NO_PIPE, fds_to_close); /* If we are asked to, invert the return value. */ if (invert) @@ -1397,7 +1375,7 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close) /* Make a pipeline between the two commands. */ if (pipe (fildes) < 0) { - sys_error (_("pipe error")); + sys_error ("pipe error"); #if defined (JOB_CONTROL) terminate_current_pipeline (); kill_current_pipeline (); @@ -1671,11 +1649,7 @@ execute_for_command (for_command) /* Save this command unless it's a trap command and we're not running a debug trap. */ -#if 0 if (signal_in_progress (DEBUG_TRAP) == 0 && (this_command_name == 0 || (STREQ (this_command_name, "trap") == 0))) -#else - if (signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0) -#endif { FREE (the_printed_command_except_trap); the_printed_command_except_trap = savestring (the_printed_command); @@ -2094,11 +2068,7 @@ execute_select_command (select_command) if (echo_command_at_execute) xtrace_print_select_command_head (select_command); -#if 0 if (signal_in_progress (DEBUG_TRAP) == 0 && (this_command_name == 0 || (STREQ (this_command_name, "trap") == 0))) -#else - if (signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0) -#endif { FREE (the_printed_command_except_trap); the_printed_command_except_trap = savestring (the_printed_command); @@ -2230,11 +2200,7 @@ execute_case_command (case_command) if (echo_command_at_execute) xtrace_print_case_command_head (case_command); -#if 0 if (signal_in_progress (DEBUG_TRAP) == 0 && (this_command_name == 0 || (STREQ (this_command_name, "trap") == 0))) -#else - if (signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0) -#endif { FREE (the_printed_command_except_trap); the_printed_command_except_trap = savestring (the_printed_command); @@ -2497,7 +2463,7 @@ execute_arith_command (arith_command) #if defined (COND_COMMAND) -static char * const nullstr = ""; +static char *nullstr = ""; static int execute_cond_node (cond) @@ -2535,7 +2501,6 @@ execute_cond_node (cond) } else if (cond->type == COND_BINARY) { - rmatch = 0; patmatch = ((cond->op->word[1] == '=') && (cond->op->word[2] == '\0') && (cond->op->word[0] == '!' || cond->op->word[0] == '=') || (cond->op->word[0] == '=' && cond->op->word[1] == '\0')); @@ -2547,7 +2512,7 @@ execute_cond_node (cond) arg1 = cond_expand_word (cond->left->op, 0); if (arg1 == 0) arg1 = nullstr; - arg2 = cond_expand_word (cond->right->op, rmatch ? 2 : (patmatch ? 1 : 0)); + arg2 = cond_expand_word (cond->right->op, patmatch); if (arg2 == 0) arg2 = nullstr; @@ -2673,11 +2638,7 @@ execute_null_command (redirects, pipe_in, pipe_out, async) do_piping (pipe_in, pipe_out); - subshell_environment = 0; - if (async) - subshell_environment |= SUBSHELL_ASYNC; - if (pipe_in != NO_PIPE || pipe_out != NO_PIPE) - subshell_environment |= SUBSHELL_PIPE; + subshell_environment = SUBSHELL_ASYNC; if (do_redirections (redirects, RX_ACTIVE) == 0) exit (EXECUTION_SUCCESS); @@ -2744,17 +2705,6 @@ fix_assignment_words (words) } } -/* Return 1 if the file found by searching $PATH for PATHNAME, defaulting - to PATHNAME, is a directory. Used by the autocd code below. */ -static int -is_dirname (pathname) - char *pathname; -{ - char *temp; - temp = search_for_command (pathname); - return (temp ? file_isdir (temp) : file_isdir (pathname)); -} - /* The meaty part of all the executions. We have to start hacking the real execution of commands here. Fork a process, set things up, execute the command. */ @@ -2783,11 +2733,7 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) command_string_index = 0; print_simple_command (simple_command); -#if 0 if (signal_in_progress (DEBUG_TRAP) == 0 && (this_command_name == 0 || (STREQ (this_command_name, "trap") == 0))) -#else - if (signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0) -#endif { FREE (the_printed_command_except_trap); the_printed_command_except_trap = the_printed_command ? savestring (the_printed_command) : (char *)0; @@ -2804,7 +2750,7 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) #endif first_word_quoted = - simple_command->words ? (simple_command->words->word->flags & W_QUOTED) : 0; + simple_command->words ? (simple_command->words->word->flags & W_QUOTED): 0; last_command_subst_pid = NO_PID; old_last_async_pid = last_asynchronous_pid; @@ -2987,7 +2933,6 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) } #endif /* JOB_CONTROL */ -run_builtin: /* Remember the name of this command globally. */ this_command_name = words->word->word; @@ -3061,20 +3006,8 @@ run_builtin: } } - if (autocd && interactive && words->word && is_dirname (words->word->word)) - { - words = make_word_list (make_word ("cd"), words); - xtrace_print_word_list (words, 0); - goto run_builtin; - } - if (command_line == 0) - command_line = savestring (the_printed_command_except_trap); - -#if defined (PROCESS_SUBSTITUTION) - if ((subshell_environment & SUBSHELL_COMSUB) && (simple_command->flags & CMD_NO_FORK) && fifos_pending() > 0) - simple_command->flags &= ~CMD_NO_FORK; -#endif + command_line = savestring (the_printed_command); execute_disk_command (words, simple_command->redirects, command_line, pipe_in, pipe_out, async, fds_to_close, @@ -3433,7 +3366,7 @@ execute_subshell_builtin_or_function (words, redirects, builtin, var, struct fd_bitmap *fds_to_close; int flags; { - int result, r, funcvalue; + int result, r; #if defined (JOB_CONTROL) int jobs_hack; @@ -3444,10 +3377,7 @@ execute_subshell_builtin_or_function (words, redirects, builtin, var, /* A subshell is neither a login shell nor interactive. */ login_shell = interactive = 0; - if (async) - subshell_environment |= SUBSHELL_ASYNC; - if (pipe_in != NO_PIPE || pipe_out != NO_PIPE) - subshell_environment |= SUBSHELL_PIPE; + subshell_environment = SUBSHELL_ASYNC; maybe_make_export_env (); /* XXX - is this needed? */ @@ -3481,18 +3411,10 @@ execute_subshell_builtin_or_function (words, redirects, builtin, var, so we don't go back up to main(). */ result = setjmp (top_level); - /* Give the return builtin a place to jump to when executed in a subshell - or pipeline */ - funcvalue = 0; - if (return_catch_flag && builtin == return_builtin) - funcvalue = setjmp (return_catch); - if (result == EXITPROG) exit (last_command_exit_value); else if (result) exit (EXECUTION_FAILURE); - else if (funcvalue) - exit (return_catch_value); else { r = execute_builtin (builtin, words, flags, 1); diff --git a/expr.c b/expr.c index 3ec64c010..418f48d0e 100644 --- a/expr.c +++ b/expr.c @@ -1,6 +1,6 @@ /* expr.c -- arithmetic expression evaluation. */ -/* Copyright (C) 1990-2006 Free Software Foundation, Inc. +/* Copyright (C) 1990-2004 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -153,7 +153,7 @@ static void readtok __P((void)); /* lexical analyzer */ static intmax_t expr_streval __P((char *, int)); static intmax_t strlong __P((char *)); -static void evalerror __P((const char *)); +static void evalerror __P((char *)); static void pushexp __P((void)); static void popexp __P((void)); @@ -205,7 +205,7 @@ extern char *this_command_name; extern int unbound_vars_is_error; #if defined (ARRAY_VARS) -extern const char * const bash_badsub_errmsg; +extern char *bash_badsub_errmsg; #endif #define SAVETOK(X) \ @@ -1187,14 +1187,14 @@ readtok () static void evalerror (msg) - const char *msg; + char *msg; { char *name, *t; name = this_command_name; for (t = expression; whitespace (*t); t++) ; - internal_error (_("%s%s%s: %s (error token is \"%s\")"), + internal_error ("%s%s%s: %s (error token is \"%s\")", name ? name : "", name ? ": " : "", t, msg, (lasttp && *lasttp) ? lasttp : ""); longjmp (evalbuf, 1); @@ -1321,7 +1321,7 @@ main (argc, argv) { v = evalexp (argv[i], &expok); if (expok == 0) - fprintf (stderr, _("%s: expression error\n"), argv[i]); + fprintf (stderr, "%s: expression error\n", argv[i]); else printf ("'%s' -> %ld\n", argv[i], v); } diff --git a/externs.h b/externs.h index 834b767b6..6c05ba306 100644 --- a/externs.h +++ b/externs.h @@ -112,7 +112,6 @@ extern void set_default_locale __P((void)); extern void set_default_locale_vars __P((void)); extern int set_locale_var __P((char *, char *)); extern int set_lang __P((char *, char *)); -extern void set_default_lang __P((void)); extern char *get_locale_var __P((char *)); extern char *localetrans __P((char *, int, int *)); extern char *mk_msgstr __P((char *, int *)); @@ -255,7 +254,7 @@ extern int strcasecmp __P((const char *, const char *)); #endif /* HAVE_STRCASECMP */ /* declarations for functions defined in lib/sh/strerror.c */ -#if !defined (HAVE_STRERROR) && !defined (strerror) +#if !defined (strerror) extern char *strerror __P((int)); #endif @@ -383,9 +382,6 @@ extern char *xstrchr __P((const char *, int)); /* declarations for functions defined in lib/sh/zcatfd.c */ extern int zcatfd __P((int, int, char *)); -/* declarations for functions defined in lib/sh/zmapfd.c */ -extern int zmapfd __P((int, char **, char *)); - /* declarations for functions defined in lib/sh/zread.c */ extern ssize_t zread __P((int, char *, size_t)); extern ssize_t zreadintr __P((int, char *, size_t)); diff --git a/findcmd.c b/findcmd.c index 27720f8aa..6f5ff8584 100644 --- a/findcmd.c +++ b/findcmd.c @@ -308,7 +308,7 @@ search_for_command (pathname) if (hashed_file && (posixly_correct || check_hashed_filenames)) { st = file_status (hashed_file); - if ((st & (FS_EXISTS|FS_EXECABLE)) != (FS_EXISTS|FS_EXECABLE)) + if ((st ^ (FS_EXISTS | FS_EXECABLE)) != 0) { phash_remove (pathname); free (hashed_file); diff --git a/flags.c b/flags.c index c80aa03f3..0c0868bcf 100644 --- a/flags.c +++ b/flags.c @@ -170,7 +170,7 @@ int pipefail_opt = 0; /* */ /* **************************************************************** */ -const struct flags_alist shell_flags[] = { +struct flags_alist shell_flags[] = { /* Standard sh flags. */ { 'a', &mark_modified_vars }, #if defined (JOB_CONTROL) diff --git a/flags.h b/flags.h index 9656d9398..f16e60483 100644 --- a/flags.h +++ b/flags.h @@ -37,7 +37,7 @@ struct flags_alist { int *value; }; -extern const struct flags_alist shell_flags[]; +extern struct flags_alist shell_flags[]; extern char optflags[]; extern int diff --git a/general.c b/general.c index 944b482ed..20dbd4443 100644 --- a/general.c +++ b/general.c @@ -48,6 +48,7 @@ extern int errno; #endif /* !errno */ extern int expand_aliases; +extern int interrupt_immediately; extern int interactive_comments; extern int check_hashed_filenames; extern int source_uses_path; @@ -58,7 +59,7 @@ static int unquoted_tilde_word __P((const char *)); static void initialize_group_array __P((void)); /* A standard error message to use when getcwd() returns NULL. */ -const char * const bash_getcwd_errstr = N_("getcwd: cannot access parent directories"); +char *bash_getcwd_errstr = N_("getcwd: cannot access parent directories"); /* Do whatever is necessary to initialize `Posix mode'. */ void @@ -161,7 +162,7 @@ all_digits (string) not null. */ int legal_number (string, result) - const char *string; + char *string; intmax_t *result; { intmax_t value; diff --git a/general.h b/general.h index 5fc46cc69..e1d01f565 100644 --- a/general.h +++ b/general.h @@ -281,7 +281,7 @@ extern void print_rlimtype __P((RLIMTYPE, int)); #endif extern int all_digits __P((char *)); -extern int legal_number __P((const char *, intmax_t *)); +extern int legal_number __P((char *, intmax_t *)); extern int legal_identifier __P((char *)); extern int check_identifier __P((WORD_DESC *, int)); extern int legal_alias_name __P((char *, int)); diff --git a/include/typemax.h b/include/typemax.h index ff63d3b90..42ae517dc 100644 --- a/include/typemax.h +++ b/include/typemax.h @@ -77,8 +77,4 @@ static const unsigned long long int maxquad = ULLONG_MAX; # define ULLONG_MAX maxquad #endif -#ifndef SSIZE_MAX -# define SSIZE_MAX 32767 /* POSIX minimum max */ -#endif - #endif /* _SH_TYPEMAX_H */ diff --git a/input.c b/input.c index 7933da2f2..f6af14c27 100644 --- a/input.c +++ b/input.c @@ -47,8 +47,6 @@ extern int errno; #endif /* !errno */ -extern void termsig_handler __P((int)); - /* Functions to handle reading input on systems that don't restart read(2) if a signal is received. */ diff --git a/input.h b/input.h index aa841020c..b024abc6b 100644 --- a/input.h +++ b/input.h @@ -100,7 +100,7 @@ extern int stream_on_stack __P((enum stream_type)); extern char *read_secondary_line __P((int)); extern int find_reserved_word __P((char *)); extern void gather_here_documents __P((void)); -extern void execute_variable_command __P((char *, char *)); +extern void execute_prompt_command __P((char *)); extern int *save_token_state __P((void)); extern void restore_token_state __P((int *)); diff --git a/jobs.c b/jobs.c index 88ac90536..37cb85f4f 100644 --- a/jobs.c +++ b/jobs.c @@ -3,7 +3,7 @@ /* This file works with both POSIX and BSD systems. It implements job control. */ -/* Copyright (C) 1989-2007 Free Software Foundation, Inc. +/* Copyright (C) 1989-2006 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -142,10 +142,10 @@ typedef int sh_job_map_func_t __P((JOB *, int, int, int)); /* Variables used here but defined in other files. */ extern int subshell_environment, line_number; extern int posixly_correct, shell_level; +extern int interrupt_immediately; extern int last_command_exit_value, last_command_exit_signal; extern int loop_level, breaking; extern int sourcelevel; -extern int running_trap; extern sh_builtin_func_t *this_shell_builtin; extern char *shell_name, *this_command_name; extern sigset_t top_level_mask; @@ -462,7 +462,7 @@ start_pipeline () if (job_control) { if (pipe (pgrp_pipe) == -1) - sys_error (_("start_pipeline: pgrp pipe")); + sys_error ("start_pipeline: pgrp pipe"); } #endif } @@ -760,7 +760,7 @@ bgp_search (pid) static void bgp_prune () { - struct pidstat *ps; + struct pidstat *ps, *p; while (bgpids.npid > js.c_childmax) { @@ -963,7 +963,7 @@ compact_jobs_list (flags) reap_dead_jobs (); realloc_jobs_list (); - return (js.j_lastj ? js.j_lastj + 1 : 0); + return (js.j_lastj); } /* Delete the job at INDEX from the job list. Must be called @@ -974,7 +974,8 @@ delete_job (job_index, dflags) { register JOB *temp; PROCESS *proc; - int ndel; + int ndel, status; + pid_t pid; if (js.j_jobslots == 0 || jobs_list_frozen) return; @@ -984,6 +985,8 @@ delete_job (job_index, dflags) temp = jobs[job_index]; if (temp == 0) return; + if (job_index == js.j_current || job_index == js.j_previous) + reset_current (); if ((dflags & DEL_NOBGPID) == 0) { @@ -1026,9 +1029,6 @@ delete_job (job_index, dflags) js.j_firstj = js.j_lastj = 0; else if (jobs[js.j_firstj] == 0 || jobs[js.j_lastj] == 0) reset_job_indices (); - - if (job_index == js.j_current || job_index == js.j_previous) - reset_current (); } /* Must be called with SIGCHLD blocked. */ @@ -1085,7 +1085,7 @@ add_process (name, pid) { # ifdef DEBUG if (j == NO_JOB) - internal_warning (_("add_process: process %5ld (%s) in the_pipeline"), (long)p->pid, p->command); + internal_warning ("add_process: process %5ld (%s) in the_pipeline", (long)p->pid, p->command); # endif if (PALIVE (p)) internal_warning ("add_process: pid %5ld (%s) marked as still alive", (long)p->pid, p->command); @@ -1391,7 +1391,7 @@ j_strsignal (s) if (x == 0) { x = retcode_name_buffer; - sprintf (x, _("Signal %d"), s); + sprintf (x, "Signal %d", s); } return x; } @@ -1405,20 +1405,20 @@ printable_job_status (j, p, format) static char *temp; int es; - temp = _("Done"); + temp = "Done"; if (STOPPED (j) && format == 0) { if (posixly_correct == 0 || p == 0 || (WIFSTOPPED (p->status) == 0)) - temp = _("Stopped"); + temp = "Stopped"; else { temp = retcode_name_buffer; - sprintf (temp, _("Stopped(%s)"), signal_name (WSTOPSIG (p->status))); + sprintf (temp, "Stopped(%s)", signal_name (WSTOPSIG (p->status))); } } else if (RUNNING (j)) - temp = _("Running"); + temp = "Running"; else { if (WIFSTOPPED (p->status)) @@ -1430,14 +1430,14 @@ printable_job_status (j, p, format) temp = retcode_name_buffer; es = WEXITSTATUS (p->status); if (es == 0) - strcpy (temp, _("Done")); + strcpy (temp, "Done"); else if (posixly_correct) - sprintf (temp, _("Done(%d)"), es); + sprintf (temp, "Done(%d)", es); else - sprintf (temp, _("Exit %d"), es); + sprintf (temp, "Exit %d", es); } else - temp = _("Unknown status"); + temp = "Unknown status"; } return temp; @@ -1524,7 +1524,7 @@ print_pipeline (p, job_index, format, stream) if ((WIFSTOPPED (show->status) == 0) && (WIFCONTINUED (show->status) == 0) && WIFCORED (show->status)) - fprintf (stream, _("(core dumped) ")); + fprintf (stream, "(core dumped) "); } } @@ -1543,7 +1543,7 @@ print_pipeline (p, job_index, format, stream) if (strcmp (temp, jobs[job_index]->wd) != 0) fprintf (stream, - _(" (wd: %s)"), polite_directory_format (jobs[job_index]->wd)); + " (wd: %s)", polite_directory_format (jobs[job_index]->wd)); } if (format || (p == last)) @@ -1735,7 +1735,7 @@ make_child (command, async_p) B.4.3.3, p. 237 also covers this, in the context of job control shells. */ if (setpgid (mypid, pipeline_pgrp) < 0) - sys_error (_("child setpgid (%ld to %ld)"), (long)mypid, (long)pipeline_pgrp); + sys_error ("child setpgid (%ld to %ld)", (long)mypid, (long)pipeline_pgrp); /* By convention (and assumption above), if pipeline_pgrp == shell_pgrp, we are making a child for @@ -1772,10 +1772,8 @@ make_child (command, async_p) pipe_close (pgrp_pipe); #endif /* PGRP_PIPE */ -#if 0 if (async_p) - last_asynchronous_pid = mypid; /* XXX */ -#endif + last_asynchronous_pid = mypid; #if defined (RECYCLES_PIDS) else if (last_asynchronous_pid == mypid) /* Avoid pid aliasing. 1 seems like a safe, unusual pid value. */ @@ -2228,7 +2226,7 @@ raw_job_exit_status (job) p = jobs[job]->pipe; do { - if (WSTATUS (p->status) != EXECUTION_SUCCESS) fail = WSTATUS(p->status); + if (p->status != EXECUTION_SUCCESS) fail = p->status; p = p->next; } while (p != jobs[job]->pipe); @@ -2370,7 +2368,7 @@ wait_for (pid) if (r == -1 && errno == ECHILD) { child->running = PS_DONE; - WSTATUS (child->status) = 0; /* XXX -- can't find true status */ + child->status = 0; /* XXX -- can't find true status */ js.c_living = 0; /* no living child processes */ if (job != NO_JOB) { @@ -2828,14 +2826,14 @@ start_job (job, foreground) if (foreground) { pid_t pid; - int st; + int s; pid = find_last_pid (job, 0); UNBLOCK_CHILD (oset); - st = wait_for (pid); + s = wait_for (pid); shell_tty_info = save_stty; set_tty_state (); - return (st); + return (s); } else { @@ -3399,7 +3397,7 @@ notify_of_job_status () signal_is_trapped (termsig) == 0) { /* Don't print `0' for a line number. */ - fprintf (stderr, _("%s: line %d: "), get_name_for_error (), (line_number == 0) ? 1 : line_number); + fprintf (stderr, "%s: line %d: ", get_name_for_error (), (line_number == 0) ? 1 : line_number); pretty_print_job (job, JLIST_NONINTERACTIVE, stderr); } else if (IS_FOREGROUND (job)) @@ -3413,7 +3411,7 @@ notify_of_job_status () fprintf (stderr, "%s", j_strsignal (termsig)); if (WIFCORED (s)) - fprintf (stderr, _(" (core dumped)")); + fprintf (stderr, " (core dumped)"); fprintf (stderr, "\n"); } @@ -3425,7 +3423,7 @@ notify_of_job_status () pretty_print_job (job, JLIST_STANDARD, stderr); if (dir && strcmp (dir, jobs[job]->wd) != 0) fprintf (stderr, - _("(wd now: %s)\n"), polite_directory_format (dir)); + "(wd now: %s)\n", polite_directory_format (dir)); } jobs[job]->flags |= J_NOTIFIED; @@ -3438,7 +3436,7 @@ notify_of_job_status () pretty_print_job (job, JLIST_STANDARD, stderr); if (dir && (strcmp (dir, jobs[job]->wd) != 0)) fprintf (stderr, - _("(wd now: %s)\n"), polite_directory_format (dir)); + "(wd now: %s)\n", polite_directory_format (dir)); jobs[job]->flags |= J_NOTIFIED; break; @@ -3466,7 +3464,7 @@ initialize_job_control (force) if (shell_pgrp == -1) { - sys_error (_("initialize_job_control: getpgrp failed")); + sys_error ("initialize_job_control: getpgrp failed"); exit (1); } @@ -3512,7 +3510,7 @@ initialize_job_control (force) /* Make sure that we are using the new line discipline. */ if (set_new_line_discipline (shell_tty) < 0) { - sys_error (_("initialize_job_control: line discipline")); + sys_error ("initialize_job_control: line discipline"); job_control = 0; } else @@ -3522,7 +3520,7 @@ initialize_job_control (force) if ((original_pgrp != shell_pgrp) && (setpgid (0, shell_pgrp) < 0)) { - sys_error (_("initialize_job_control: setpgid")); + sys_error ("initialize_job_control: setpgid"); shell_pgrp = original_pgrp; } diff --git a/jobs.c.diff b/jobs.c.diff new file mode 100644 index 000000000..f1ea4e0cd --- /dev/null +++ b/jobs.c.diff @@ -0,0 +1,521 @@ +*** ../bash-3.1/jobs.c Fri Nov 11 23:13:27 2005 +--- jobs.c Wed Feb 1 13:55:38 2006 +*************** +*** 4,8 **** + control. */ + +! /* Copyright (C) 1989-2005 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +--- 4,8 ---- + control. */ + +! /* Copyright (C) 1989-2006 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +*************** +*** 78,82 **** + + #define DEFAULT_CHILD_MAX 32 +! #define MAX_JOBS_IN_ARRAY 4096 /* testing */ + + /* Take care of system dependencies that must be handled when waiting for +--- 78,90 ---- + + #define DEFAULT_CHILD_MAX 32 +! #if !defined (DEBUG) +! #define MAX_JOBS_IN_ARRAY 4096 /* production */ +! #else +! #define MAX_JOBS_IN_ARRAY 128 /* testing */ +! #endif +! +! /* Flag values for second argument to delete_job */ +! #define DEL_WARNSTOPPED 1 /* warn about deleting stopped jobs */ +! #define DEL_NOBGPID 2 /* don't add pgrp leader to bgpids */ + + /* Take care of system dependencies that must be handled when waiting for +*************** +*** 308,311 **** +--- 316,323 ---- + static char retcode_name_buffer[64]; + ++ /* flags to detect pid wraparound */ ++ static pid_t first_pid = NO_PID; ++ static int pid_wrap = -1; ++ + #if !defined (_POSIX_VERSION) + +*************** +*** 329,337 **** + #endif /* !_POSIX_VERSION */ + +! /* Initialize the global job stats structure. */ + void + init_job_stats () + { + js = zerojs; + } + +--- 341,351 ---- + #endif /* !_POSIX_VERSION */ + +! /* Initialize the global job stats structure and other bookkeeping variables */ + void + init_job_stats () + { + js = zerojs; ++ first_pid = NO_PID; ++ pid_wrap = -1; + } + +*************** +*** 620,625 **** + * the parent gives it away. + * + */ +! if (job_control && newjob->pgrp) + give_terminal_to (newjob->pgrp, 0); + } +--- 634,642 ---- + * the parent gives it away. + * ++ * Don't give the terminal away if this shell is an asynchronous ++ * subshell. ++ * + */ +! if (job_control && newjob->pgrp && (subshell_environment&SUBSHELL_ASYNC) == 0) + give_terminal_to (newjob->pgrp, 0); + } +*************** +*** 806,810 **** + QUEUE_SIGCHLD(os); + +! /* XXX could use js.j_firstj here */ + for (i = 0; i < js.j_jobslots; i++) + { +--- 823,827 ---- + QUEUE_SIGCHLD(os); + +! /* XXX could use js.j_firstj and js.j_lastj here */ + for (i = 0; i < js.j_jobslots; i++) + { +*************** +*** 812,815 **** +--- 829,834 ---- + if (i < js.j_firstj && jobs[i]) + itrace("cleanup_dead_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); ++ if (i > js.j_lastj && jobs[i]) ++ itrace("cleanup_dead_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); + #endif + +*************** +*** 838,841 **** +--- 857,884 ---- + } + ++ static void ++ delete_old_job (pid) ++ pid_t pid; ++ { ++ PROCESS *p; ++ int job; ++ ++ job = find_job (pid, 0, &p); ++ if (job != NO_JOB) ++ { ++ #ifdef DEBUG ++ itrace ("delete_old_job: found pid %d in job %d with state %d", pid, job, jobs[job]->state); ++ #endif ++ if (JOBSTATE (job) == JDEAD) ++ delete_job (job, DEL_NOBGPID); ++ else ++ { ++ internal_warning (_("forked pid %d appears in running job %d"), pid, job); ++ if (p) ++ p->pid = 0; ++ } ++ } ++ } ++ + /* Reallocate and compress the jobs list. This returns with a jobs array + whose size is a multiple of JOB_SLOTS and can hold the current number of +*************** +*** 845,851 **** + { + sigset_t set, oset; +! int nsize, i, j; + JOB **nlist; + + nsize = ((js.j_njobs + JOB_SLOTS - 1) / JOB_SLOTS); + nsize *= JOB_SLOTS; +--- 888,895 ---- + { + sigset_t set, oset; +! int nsize, i, j, ncur, nprev; + JOB **nlist; + ++ ncur = nprev = NO_JOB; + nsize = ((js.j_njobs + JOB_SLOTS - 1) / JOB_SLOTS); + nsize *= JOB_SLOTS; +*************** +*** 855,869 **** + + BLOCK_CHILD (set, oset); +! nlist = (JOB **) xmalloc (nsize * sizeof (JOB *)); + for (i = j = 0; i < js.j_jobslots; i++) + if (jobs[i]) +! nlist[j++] = jobs[i]; + + js.j_firstj = 0; +! js.j_lastj = (j > 0) ? j - 1: 0; + js.j_jobslots = nsize; + +! free (jobs); +! jobs = nlist; + + UNBLOCK_CHILD (oset); +--- 899,947 ---- + + BLOCK_CHILD (set, oset); +! nlist = (js.j_jobslots == nsize) ? jobs : (JOB **) xmalloc (nsize * sizeof (JOB *)); +! + for (i = j = 0; i < js.j_jobslots; i++) + if (jobs[i]) +! { +! if (i == js.j_current) +! ncur = j; +! if (i == js.j_previous) +! nprev = j; +! nlist[j++] = jobs[i]; +! } +! +! #if defined (DEBUG) +! itrace ("realloc_jobs_list: resize jobs list from %d to %d", js.j_jobslots, nsize); +! itrace ("realloc_jobs_list: j_lastj changed from %d to %d", js.j_lastj, (j > 0) ? j - 1 : 0); +! itrace ("realloc_jobs_list: j_njobs changed from %d to %d", js.j_njobs, (j > 0) ? j - 1 : 0); +! #endif + + js.j_firstj = 0; +! js.j_lastj = (j > 0) ? j - 1 : 0; +! js.j_njobs = j; + js.j_jobslots = nsize; + +! /* Zero out remaining slots in new jobs list */ +! for ( ; j < nsize; j++) +! nlist[j] = (JOB *)NULL; +! +! if (jobs != nlist) +! { +! free (jobs); +! jobs = nlist; +! } +! +! if (ncur != NO_JOB) +! js.j_current = ncur; +! if (nprev != NO_JOB) +! js.j_previous = nprev; +! +! /* Need to reset these */ +! if (js.j_current == NO_JOB || js.j_previous == NO_JOB || js.j_current > js.j_lastj || js.j_previous > js.j_lastj) +! reset_current (); +! +! #ifdef DEBUG +! itrace ("realloc_jobs_list: reset js.j_current (%d) and js.j_previous (%d)", js.j_current, js.j_previous); +! #endif + + UNBLOCK_CHILD (oset); +*************** +*** 874,878 **** + the foreground process (subshell_environment != 0). Returns the first + available slot in the compacted list. If that value is js.j_jobslots, then +! the list needs to be reallocated. The jobs array is in new memory if + this returns > 0 and < js.j_jobslots. FLAGS is reserved for future use. */ + static int +--- 952,956 ---- + the foreground process (subshell_environment != 0). Returns the first + available slot in the compacted list. If that value is js.j_jobslots, then +! the list needs to be reallocated. The jobs array may be in new memory if + this returns > 0 and < js.j_jobslots. FLAGS is reserved for future use. */ + static int +*************** +*** 892,897 **** + with SIGCHLD blocked. */ + void +! delete_job (job_index, warn_stopped) +! int job_index, warn_stopped; + { + register JOB *temp; +--- 970,975 ---- + with SIGCHLD blocked. */ + void +! delete_job (job_index, dflags) +! int job_index, dflags; + { + register JOB *temp; +*************** +*** 903,918 **** + return; + +! if (warn_stopped && subshell_environment == 0 && STOPPED (job_index)) + internal_warning (_("deleting stopped job %d with process group %ld"), job_index+1, (long)jobs[job_index]->pgrp); + temp = jobs[job_index]; + if (job_index == js.j_current || job_index == js.j_previous) + reset_current (); + +! proc = find_last_proc (job_index, 0); +! /* Could do this just for J_ASYNC jobs, but we save all. */ +! bgp_add (proc->pid, process_exit_status (proc->status)); + + jobs[job_index] = (JOB *)NULL; +- + if (temp == js.j_lastmade) + js.j_lastmade = 0; +--- 981,1001 ---- + return; + +! if ((dflags & DEL_WARNSTOPPED) && subshell_environment == 0 && STOPPED (job_index)) + internal_warning (_("deleting stopped job %d with process group %ld"), job_index+1, (long)jobs[job_index]->pgrp); + temp = jobs[job_index]; ++ if (temp == 0) ++ return; + if (job_index == js.j_current || job_index == js.j_previous) + reset_current (); + +! if ((dflags & DEL_NOBGPID) == 0) +! { +! proc = find_last_proc (job_index, 0); +! /* Could do this just for J_ASYNC jobs, but we save all. */ +! if (proc) +! bgp_add (proc->pid, process_exit_status (proc->status)); +! } + + jobs[job_index] = (JOB *)NULL; + if (temp == js.j_lastmade) + js.j_lastmade = 0; +*************** +*** 1092,1095 **** +--- 1175,1180 ---- + if (i < js.j_firstj && jobs[i]) + itrace("map_over_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); ++ if (i > js.j_lastj && jobs[i]) ++ itrace("map_over_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); + #endif + if (jobs[i]) +*************** +*** 1224,1228 **** + PROCESS *p; + +! /* XXX could use js.j_firstj here */ + for (i = 0; i < js.j_jobslots; i++) + { +--- 1309,1313 ---- + PROCESS *p; + +! /* XXX could use js.j_firstj here, and should check js.j_lastj */ + for (i = 0; i < js.j_jobslots; i++) + { +*************** +*** 1230,1233 **** +--- 1315,1320 ---- + if (i < js.j_firstj && jobs[i]) + itrace("find_job: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); ++ if (i > js.j_lastj && jobs[i]) ++ itrace("find_job: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); + #endif + if (jobs[i]) +*************** +*** 1656,1660 **** + shell's process group (we could be in the middle of a + pipeline, for example). */ +! if (async_p == 0 && pipeline_pgrp != shell_pgrp) + give_terminal_to (pipeline_pgrp, 0); + +--- 1743,1747 ---- + shell's process group (we could be in the middle of a + pipeline, for example). */ +! if (async_p == 0 && pipeline_pgrp != shell_pgrp && ((subshell_environment&SUBSHELL_ASYNC) == 0)) + give_terminal_to (pipeline_pgrp, 0); + +*************** +*** 1698,1701 **** +--- 1785,1795 ---- + as the proper pgrp if this is the first child. */ + ++ if (first_pid == NO_PID) ++ first_pid = pid; ++ else if (pid_wrap == -1 && pid < first_pid) ++ pid_wrap = 0; ++ else if (pid_wrap == 0 && pid >= first_pid) ++ pid_wrap = 1; ++ + if (job_control) + { +*************** +*** 1731,1734 **** +--- 1825,1831 ---- + #endif + ++ if (pid_wrap > 0) ++ delete_old_job (pid); ++ + #if !defined (RECYCLES_PIDS) + /* Only check for saved status if we've saved more than CHILD_MAX +*************** +*** 1915,1919 **** + + p = jobs[job]->pipe; +! while (p->next != jobs[job]->pipe) + p = p->next; + +--- 2012,2016 ---- + + p = jobs[job]->pipe; +! while (p && p->next != jobs[job]->pipe) + p = p->next; + +*************** +*** 1999,2003 **** + + /* find first running job; if none running in foreground, break */ +! /* XXX could use js.j_firstj here */ + for (i = 0; i < js.j_jobslots; i++) + { +--- 2096,2100 ---- + + /* find first running job; if none running in foreground, break */ +! /* XXX could use js.j_firstj and js.j_lastj here */ + for (i = 0; i < js.j_jobslots; i++) + { +*************** +*** 2005,2008 **** +--- 2102,2107 ---- + if (i < js.j_firstj && jobs[i]) + itrace("wait_for_background_pids: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); ++ if (i > js.j_lastj && jobs[i]) ++ itrace("wait_for_background_pids: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); + #endif + if (jobs[i] && RUNNING (i) && IS_FOREGROUND (i) == 0) +*************** +*** 2199,2203 **** + wait_sigint_received = 0; + if (job_control == 0) +! old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler); + + termination_state = last_command_exit_value; +--- 2298,2306 ---- + wait_sigint_received = 0; + if (job_control == 0) +! { +! old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler); +! if (old_sigint_handler == SIG_IGN) +! set_signal_handler (SIGINT, old_sigint_handler); +! } + + termination_state = last_command_exit_value; +*************** +*** 2266,2269 **** +--- 2369,2373 ---- + child->running = PS_DONE; + child->status = 0; /* XXX -- can't find true status */ ++ js.c_living = 0; /* no living child processes */ + if (job != NO_JOB) + { +*************** +*** 2317,2321 **** + itrace("wait_for: job == NO_JOB, giving the terminal to shell_pgrp (%ld)", (long)shell_pgrp); + #endif +- + give_terminal_to (shell_pgrp, 0); + } +--- 2421,2424 ---- +*************** +*** 2866,2869 **** +--- 2969,2973 ---- + if (sigchld || block == 0) + waitpid_flags |= WNOHANG; ++ CHECK_TERMSIG; + pid = WAITPID (-1, &status, waitpid_flags); + +*************** +*** 2892,2895 **** +--- 2996,3000 ---- + /* If waitpid returns 0, there are running children. If it returns -1, + the only other error POSIX says it can return is EINTR. */ ++ CHECK_TERMSIG; + if (pid <= 0) + continue; /* jumps right to the test */ +*************** +*** 2898,2902 **** + run the trap if a process is just being continued. */ + if (WIFCONTINUED(status) == 0) +! children_exited++; + + /* Locate our PROCESS for this pid. */ +--- 3003,3010 ---- + run the trap if a process is just being continued. */ + if (WIFCONTINUED(status) == 0) +! { +! children_exited++; +! js.c_living--; +! } + + /* Locate our PROCESS for this pid. */ +*************** +*** 3123,3127 **** + restore_sigint_handler (); + if (temp_handler == SIG_DFL) +! termination_unwind_protect (SIGINT); + else if (temp_handler != SIG_IGN) + (*temp_handler) (SIGINT); +--- 3231,3235 ---- + restore_sigint_handler (); + if (temp_handler == SIG_DFL) +! termsig_handler (SIGINT); + else if (temp_handler != SIG_IGN) + (*temp_handler) (SIGINT); +*************** +*** 3638,3644 **** + if (i < js.j_firstj && jobs[i]) + itrace("delete_all_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); + #endif + if (jobs[i] && (running_only == 0 || (running_only && RUNNING(i)))) +! delete_job (i, 1); + } + if (running_only == 0) +--- 3746,3754 ---- + if (i < js.j_firstj && jobs[i]) + itrace("delete_all_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); ++ if (i > js.j_lastj && jobs[i]) ++ itrace("delete_all_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); + #endif + if (jobs[i] && (running_only == 0 || (running_only && RUNNING(i)))) +! delete_job (i, DEL_WARNSTOPPED); + } + if (running_only == 0) +*************** +*** 3692,3695 **** +--- 3802,3807 ---- + if (i < js.j_firstj && jobs[i]) + itrace("count_all_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); ++ if (i > js.j_lastj && jobs[i]) ++ itrace("count_all_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); + #endif + if (jobs[i] && DEADJOB(i) == 0) +*************** +*** 3765,3768 **** +--- 3877,3882 ---- + if (i < js.j_firstj && jobs[i]) + itrace("mark_dead_jobs_as_notified: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); ++ if (i > js.j_lastj && jobs[i]) ++ itrace("mark_dead_jobs_as_notified: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); + #endif + if (jobs[i] && DEADJOB (i)) +*************** +*** 3816,3819 **** +--- 3930,3935 ---- + if (i < js.j_firstj && jobs[i]) + itrace("mark_dead_jobs_as_notified: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); ++ if (i > js.j_lastj && jobs[i]) ++ itrace("mark_dead_jobs_as_notified: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); + #endif + /* If marking this job as notified would drop us down below diff --git a/jobs.h b/jobs.h index 17f038798..93a42fb2a 100644 --- a/jobs.h +++ b/jobs.h @@ -74,7 +74,7 @@ typedef struct process { #define get_job_by_jid(ind) (jobs[(ind)]) /* A description of a pipeline's state. */ -typedef enum { JRUNNING = 1, JSTOPPED = 2, JDEAD = 4, JMIXED = 8 } JOB_STATE; +typedef enum { JRUNNING, JSTOPPED, JDEAD, JMIXED } JOB_STATE; #define JOBSTATE(job) (jobs[(job)]->state) #define J_JOBSTATE(j) ((j)->state) diff --git a/lib/glob/glob.c b/lib/glob/glob.c index 08a7da853..5c564f660 100644 --- a/lib/glob/glob.c +++ b/lib/glob/glob.c @@ -184,7 +184,7 @@ mbskipname (pat, dname) { int ret; wchar_t *pat_wc, *dn_wc; - size_t pat_n, dn_n; + size_t pat_n, dn_n, n; pat_n = xdupmbstowcs (&pat_wc, NULL, pat); dn_n = xdupmbstowcs (&dn_wc, NULL, dname); diff --git a/lib/glob/glob.h b/lib/glob/glob.h index 6372a08f7..95108a44d 100644 --- a/lib/glob/glob.h +++ b/lib/glob/glob.h @@ -20,11 +20,9 @@ #include "stdc.h" -#define GX_MARKDIRS 0x001 /* mark directory names with trailing `/' */ -#define GX_NOCASE 0x002 /* ignore case */ -#define GX_MATCHDOT 0x004 /* match `.' literally */ -#define GX_ALLDIRS 0x008 /* match all directories */ -#define GX_MATCHDIRS 0x010 /* return only matching directory names */ +#define GX_MARKDIRS 0x01 /* mark directory names with trailing `/' */ +#define GX_NOCASE 0x02 /* ignore case */ +#define GX_MATCHDOT 0x04 /* match `.' literally */ extern int glob_pattern_p __P((const char *)); extern char **glob_vector __P((char *, char *, int)); diff --git a/lib/glob/smatch.c b/lib/glob/smatch.c index be4f927c7..12fde3d0f 100644 --- a/lib/glob/smatch.c +++ b/lib/glob/smatch.c @@ -247,6 +247,7 @@ rangecmp_wc (c1, c2) { static wchar_t s1[2] = { L' ', L'\0' }; static wchar_t s2[2] = { L' ', L'\0' }; + int ret; if (c1 == c2) return 0; diff --git a/lib/glob/xmbsrtowcs.c b/lib/glob/xmbsrtowcs.c index 83b67b407..f8c29b915 100644 --- a/lib/glob/xmbsrtowcs.c +++ b/lib/glob/xmbsrtowcs.c @@ -145,8 +145,7 @@ xdupmbstowcs (destp, indicesp, src) /* In case SRC or DESP is NULL, conversion doesn't take place. */ if (src == NULL || destp == NULL) { - if (destp) - *destp = NULL; + *destp = NULL; return (size_t)-1; } diff --git a/lib/intl/Makefile.in b/lib/intl/Makefile.in index b7eee8c3b..8520ed2e3 100644 --- a/lib/intl/Makefile.in +++ b/lib/intl/Makefile.in @@ -29,14 +29,10 @@ VPATH = $(srcdir) prefix = @prefix@ exec_prefix = @exec_prefix@ transform = @program_transform_name@ - -datarootdir = @datarootdir@ - libdir = @libdir@ includedir = @includedir@ datadir = @datadir@ -localedir = @localedir@ - +localedir = $(datadir)/locale gettextsrcdir = $(datadir)/gettext/intl aliaspath = $(localedir) subdir = intl @@ -62,7 +58,7 @@ DEFS = -DLOCALEDIR=\"$(localedir)\" -DLOCALE_ALIAS_PATH=\"$(aliaspath)\" \ -DENABLE_RELOCATABLE=1 -DIN_LIBRARY -DINSTALLDIR=\"$(libdir)\" -DNO_XMALLOC \ -Dset_relocation_prefix=libintl_set_relocation_prefix \ -Drelocate=libintl_relocate \ --DDEPENDS_ON_LIBICONV=1 @DEFS@ ${LOCAL_DEFS} +-DDEPENDS_ON_LIBICONV=1 @DEFS@ @LOCAL_DEFS@ CPPFLAGS = @CPPFLAGS@ CFLAGS = @CFLAGS@ LDFLAGS = @LDFLAGS@ @@ -233,7 +229,7 @@ libgnuintl.h: $(srcdir)/libgnuintl.h.in cp $(srcdir)/libgnuintl.h.in libgnuintl.h libintl.h: libgnuintl.h - cmp libgnuintl.h libintl.h || cp libgnuintl.h libintl.h + cp libgnuintl.h libintl.h charset.alias: $(srcdir)/config.charset $(SHELL) $(srcdir)/config.charset '@host@' > t-$@ diff --git a/lib/malloc/malloc.c b/lib/malloc/malloc.c index 75d911fde..f9a08da11 100644 --- a/lib/malloc/malloc.c +++ b/lib/malloc/malloc.c @@ -231,7 +231,7 @@ static int maxbuck; /* highest bucket receiving allocation request. */ static char *memtop; /* top of heap */ -static const unsigned long binsizes[NBUCKETS] = { +static unsigned long binsizes[NBUCKETS] = { 8UL, 16UL, 32UL, 64UL, 128UL, 256UL, 512UL, 1024UL, 2048UL, 4096UL, 8192UL, 16384UL, 32768UL, 65536UL, 131072UL, 262144UL, 524288UL, 1048576UL, 2097152UL, 4194304UL, 8388608UL, 16777216UL, 33554432UL, @@ -312,7 +312,7 @@ xbotch (mem, e, s, file, line) int line; { fprintf (stderr, _("\r\nmalloc: %s:%d: assertion botched\r\n"), - file ? file : _("unknown"), line); + file ? file : "unknown", line); #ifdef MALLOC_REGISTER if (mem != NULL && malloc_register) mregister_describe_mem (mem, stderr); diff --git a/lib/malloc/stats.c b/lib/malloc/stats.c index 0d119fab5..18c3cef59 100644 --- a/lib/malloc/stats.c +++ b/lib/malloc/stats.c @@ -28,7 +28,6 @@ #ifdef HAVE_UNISTD_H # include #endif -#include #include "mstats.h" diff --git a/lib/malloc/table.c b/lib/malloc/table.c index b9310a6a0..ee37b3a71 100644 --- a/lib/malloc/table.c +++ b/lib/malloc/table.c @@ -22,7 +22,6 @@ #endif #include -#include #include "imalloc.h" #include "table.h" diff --git a/lib/malloc/watch.c b/lib/malloc/watch.c index bcbf431cc..11ab744d4 100644 --- a/lib/malloc/watch.c +++ b/lib/malloc/watch.c @@ -43,17 +43,17 @@ watch_warn (addr, file, line, type, data) char *tag; if (type == W_ALLOC) - tag = "allocated"; + tag = _("allocated"); else if (type == W_FREE) - tag = "freed"; + tag = _("freed"); else if (type == W_REALLOC) - tag = "requesting resize"; + tag = _("requesting resize"); else if (type == W_RESIZED) - tag = "just resized"; + tag = _("just resized"); else - tag = "bug: unknown operation"; + tag = _("bug: unknown operation"); - fprintf (stderr, "malloc: watch alert: %p %s ", addr, tag); + fprintf (stderr, _("malloc: watch alert: %p %s "), addr, tag); if (data != (unsigned long)-1) fprintf (stderr, "(size %lu) ", data); fprintf (stderr, "from '%s:%d'\n", file ? file : "unknown", line); diff --git a/lib/malloc/xleaktrace b/lib/malloc/xleaktrace index d7e3cd555..573437c29 100755 --- a/lib/malloc/xleaktrace +++ b/lib/malloc/xleaktrace @@ -5,10 +5,6 @@ # # NOTE: we ignore `realloc' tags because they're just extra information # -# Copyright (c) 2001 Chester Ramey -# Permission is hereby granted to deal in this Software without restriction. -# THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND. -# # Chet Ramey # chet@po.cwru.edu # diff --git a/lib/readline/Makefile.in b/lib/readline/Makefile.in index b6d8d5251..98169e411 100644 --- a/lib/readline/Makefile.in +++ b/lib/readline/Makefile.in @@ -33,8 +33,6 @@ VPATH = .:@srcdir@ topdir = @top_srcdir@ BUILD_DIR = @BUILD_DIR@ -datarootdir = @datarootdir@ - INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ diff --git a/lib/readline/bind.c b/lib/readline/bind.c index ecec8b1b2..6a3e48c41 100644 --- a/lib/readline/bind.c +++ b/lib/readline/bind.c @@ -80,7 +80,7 @@ static int glean_key_from_name PARAMS((char *)); static int find_boolean_var PARAMS((const char *)); static char *_rl_get_string_variable_value PARAMS((const char *)); -static int substring_member_of_array PARAMS((const char *, const char * const *)); +static int substring_member_of_array PARAMS((char *, const char **)); static int currently_reading_init_file; @@ -370,10 +370,7 @@ rl_generic_bind (type, keyseq, data, map) ic = uc; if (ic < 0 || ic >= KEYMAP_SIZE) - { - free (keys); - return -1; - } + return -1; if (META_CHAR (ic) && _rl_convert_meta_chars_to_ascii) { @@ -921,10 +918,10 @@ _rl_init_file_error (msg) const char *msg; { if (currently_reading_init_file) - _rl_errmsg ("%s: line %d: %s\n", current_readline_init_file, + fprintf (stderr, "readline: %s: line %d: %s\n", current_readline_init_file, current_readline_init_lineno, msg); else - _rl_errmsg ("%s", msg); + fprintf (stderr, "readline: %s\n", msg); } /* **************************************************************** */ @@ -936,11 +933,11 @@ _rl_init_file_error (msg) typedef int _rl_parser_func_t PARAMS((char *)); /* Things that mean `Control'. */ -const char * const _rl_possible_control_prefixes[] = { +const char *_rl_possible_control_prefixes[] = { "Control-", "C-", "CTRL-", (const char *)NULL }; -const char * const _rl_possible_meta_prefixes[] = { +const char *_rl_possible_meta_prefixes[] = { "Meta", "M-", (const char *)NULL }; @@ -1099,8 +1096,8 @@ parser_include (args) } /* Associate textual names with actual functions. */ -static const struct { - const char * const name; +static struct { + const char *name; _rl_parser_func_t *function; } parser_directives [] = { { "if", parser_if }, @@ -1406,8 +1403,8 @@ rl_parse_and_bind (string) #define V_SPECIAL 0x1 -static const struct { - const char * const name; +static struct { + const char *name; int *value; int flags; } boolean_varlist [] = { @@ -1494,8 +1491,8 @@ static int sv_editmode PARAMS((const char *)); static int sv_isrchterm PARAMS((const char *)); static int sv_keymap PARAMS((const char *)); -static const struct { - const char * const name; +static struct { + const char *name; int flags; _rl_sv_func_t *set_func; } string_varlist[] = { @@ -1537,6 +1534,7 @@ rl_variable_value (name) const char *name; { register int i; + int v; /* Check for simple variables first. */ i = find_boolean_var (name); @@ -1701,11 +1699,11 @@ sv_isrchterm (value) For example, `Space' returns ' '. */ typedef struct { - const char * const name; + const char *name; int value; } assoc_list; -static const assoc_list name_key_alist[] = { +static assoc_list name_key_alist[] = { { "DEL", 0x7f }, { "ESC", '\033' }, { "Escape", '\033' }, @@ -1734,8 +1732,8 @@ glean_key_from_name (name) } /* Auxiliary functions to manage keymaps. */ -static const struct { - const char * const name; +static struct { + const char *name; Keymap map; } keymap_names[] = { { "emacs", emacs_standard_keymap }, @@ -2298,8 +2296,8 @@ rl_dump_variables (count, key) /* Return non-zero if any members of ARRAY are a substring in STRING. */ static int substring_member_of_array (string, array) - const char *string; - const char * const *array; + char *string; + const char **array; { while (*array) { diff --git a/lib/readline/callback.c b/lib/readline/callback.c index 88a107b95..697066e03 100644 --- a/lib/readline/callback.c +++ b/lib/readline/callback.c @@ -111,7 +111,7 @@ rl_callback_read_char () if (rl_linefunc == NULL) { - _rl_errmsg ("readline_callback_read_char() called with no handler!"); + fprintf (stderr, "readline: readline_callback_read_char() called with no handler!\r\n"); abort (); } @@ -125,73 +125,73 @@ rl_callback_read_char () return; } - do + if (RL_ISSTATE (RL_STATE_ISEARCH)) { - if (RL_ISSTATE (RL_STATE_ISEARCH)) - { - eof = _rl_isearch_callback (_rl_iscxt); - if (eof == 0 && (RL_ISSTATE (RL_STATE_ISEARCH) == 0) && RL_ISSTATE (RL_STATE_INPUTPENDING)) - rl_callback_read_char (); + eof = _rl_isearch_callback (_rl_iscxt); + if (eof == 0 && (RL_ISSTATE (RL_STATE_ISEARCH) == 0) && RL_ISSTATE (RL_STATE_INPUTPENDING)) + rl_callback_read_char (); - return; - } - else if (RL_ISSTATE (RL_STATE_NSEARCH)) - { - eof = _rl_nsearch_callback (_rl_nscxt); - return; - } - else if (RL_ISSTATE (RL_STATE_NUMERICARG)) - { - eof = _rl_arg_callback (_rl_argcxt); - if (eof == 0 && (RL_ISSTATE (RL_STATE_NUMERICARG) == 0) && RL_ISSTATE (RL_STATE_INPUTPENDING)) - rl_callback_read_char (); - /* XXX - this should handle _rl_last_command_was_kill better */ - else if (RL_ISSTATE (RL_STATE_NUMERICARG) == 0) - _rl_internal_char_cleanup (); - - return; - } - else if (RL_ISSTATE (RL_STATE_MULTIKEY)) + return; + } + else if (RL_ISSTATE (RL_STATE_NSEARCH)) + { + eof = _rl_nsearch_callback (_rl_nscxt); + return; + } + else if (RL_ISSTATE (RL_STATE_NUMERICARG)) + { + eof = _rl_arg_callback (_rl_argcxt); + if (eof == 0 && (RL_ISSTATE (RL_STATE_NUMERICARG) == 0) && RL_ISSTATE (RL_STATE_INPUTPENDING)) + rl_callback_read_char (); + /* XXX - this should handle _rl_last_command_was_kill better */ + else if (RL_ISSTATE (RL_STATE_NUMERICARG) == 0) + _rl_internal_char_cleanup (); + + return; + } + else if (RL_ISSTATE (RL_STATE_MULTIKEY)) + { + eof = _rl_dispatch_callback (_rl_kscxt); /* For now */ + while ((eof == -1 || eof == -2) && RL_ISSTATE (RL_STATE_MULTIKEY) && _rl_kscxt && (_rl_kscxt->flags & KSEQ_DISPATCHED)) + eof = _rl_dispatch_callback (_rl_kscxt); + if (RL_ISSTATE (RL_STATE_MULTIKEY) == 0) { - eof = _rl_dispatch_callback (_rl_kscxt); /* For now */ - while ((eof == -1 || eof == -2) && RL_ISSTATE (RL_STATE_MULTIKEY) && _rl_kscxt && (_rl_kscxt->flags & KSEQ_DISPATCHED)) - eof = _rl_dispatch_callback (_rl_kscxt); - if (RL_ISSTATE (RL_STATE_MULTIKEY) == 0) - { - _rl_internal_char_cleanup (); - _rl_want_redisplay = 1; - } + _rl_internal_char_cleanup (); + _rl_want_redisplay = 1; } - else if (_rl_callback_func) + } + else if (_rl_callback_func) + { + /* This allows functions that simply need to read an additional character + (like quoted-insert) to register a function to be called when input is + available. _rl_callback_data is simply a pointer to a struct that has + the argument count originally passed to the registering function and + space for any additional parameters. */ + eof = (*_rl_callback_func) (_rl_callback_data); + /* If the function `deregisters' itself, make sure the data is cleaned + up. */ + if (_rl_callback_func == 0) { - /* This allows functions that simply need to read an additional - character (like quoted-insert) to register a function to be - called when input is available. _rl_callback_data is simply a - pointer to a struct that has the argument count originally - passed to the registering function and space for any additional - parameters. */ - eof = (*_rl_callback_func) (_rl_callback_data); - /* If the function `deregisters' itself, make sure the data is - cleaned up. */ - if (_rl_callback_func == 0) + if (_rl_callback_data) { - if (_rl_callback_data) - { - _rl_callback_data_dispose (_rl_callback_data); - _rl_callback_data = 0; - } - _rl_internal_char_cleanup (); + _rl_callback_data_dispose (_rl_callback_data); + _rl_callback_data = 0; } + _rl_internal_char_cleanup (); } - else - eof = readline_internal_char (); + } + else + eof = readline_internal_char (); - if (rl_done == 0 && _rl_want_redisplay) - { - (*rl_redisplay_function) (); - _rl_want_redisplay = 0; - } + if (rl_done == 0 && _rl_want_redisplay) + { + (*rl_redisplay_function) (); + _rl_want_redisplay = 0; + } + /* We loop in case some function has pushed input back with rl_execute_next. */ + for (;;) + { if (rl_done) { line = readline_internal_teardown (eof); @@ -213,8 +213,11 @@ rl_callback_read_char () if (in_handler == 0 && rl_linefunc) _rl_callback_newline (); } + if (rl_pending_input || _rl_pushed_input_available () || RL_ISSTATE (RL_STATE_MACROINPUT)) + eof = readline_internal_char (); + else + break; } - while (rl_pending_input || _rl_pushed_input_available () || RL_ISSTATE (RL_STATE_MACROINPUT)); } /* Remove the handler, and make sure the terminal is in its normal state. */ @@ -251,7 +254,8 @@ _rl_callback_data_alloc (count) void _rl_callback_data_dispose (arg) _rl_callback_generic_arg *arg; { - xfree (arg); + if (arg) + free (arg); } #endif diff --git a/lib/readline/complete.c b/lib/readline/complete.c index 64e4a235d..e7f6af108 100644 --- a/lib/readline/complete.c +++ b/lib/readline/complete.c @@ -1,6 +1,6 @@ /* complete.c -- filename completion for readline. */ -/* Copyright (C) 1987-2006 Free Software Foundation, Inc. +/* Copyright (C) 1987-2005 Free Software Foundation, Inc. This file is part of the GNU Readline Library, a library for reading lines of text with interactive input and history editing. @@ -325,12 +325,6 @@ int rl_completion_mark_symlink_dirs; /* If non-zero, inhibit completion (temporarily). */ int rl_inhibit_completion; -/* Set to the last key used to invoke one of the completion functions */ -int rl_completion_invoking_key; - -/* If non-zero, sort the completion matches. On by default. */ -int rl_sort_completion_matches = 1; - /* Variables local to this file. */ /* Local variable states what happened during the last completion attempt. */ @@ -349,8 +343,6 @@ int rl_complete (ignore, invoking_key) int ignore, invoking_key; { - rl_completion_invoking_key = invoking_key; - if (rl_inhibit_completion) return (_rl_insert_char (ignore, invoking_key)); else if (rl_last_func == rl_complete && !completion_changed_buffer) @@ -368,7 +360,6 @@ int rl_possible_completions (ignore, invoking_key) int ignore, invoking_key; { - rl_completion_invoking_key = invoking_key; return (rl_complete_internal ('?')); } @@ -376,7 +367,6 @@ int rl_insert_completions (ignore, invoking_key) int ignore, invoking_key; { - rl_completion_invoking_key = invoking_key; return (rl_complete_internal ('*')); } @@ -416,7 +406,6 @@ set_completion_defaults (what_to_do) rl_filename_quoting_desired = 1; rl_completion_type = what_to_do; rl_completion_suppress_append = rl_completion_suppress_quote = 0; - rl_completion_append_character = ' '; /* The completion entry function may optionally change this. */ rl_completion_mark_symlink_dirs = _rl_complete_mark_symlink_dirs; @@ -439,7 +428,7 @@ get_y_or_n (for_pager) return (1); if (c == 'n' || c == 'N' || c == RUBOUT) return (0); - if (c == ABORT_CHAR || c < 0) + if (c == ABORT_CHAR) _rl_abort_internal (); if (for_pager && (c == NEWLINE || c == RETURN)) return (2); @@ -492,13 +481,6 @@ stat_char (filename) struct stat finfo; int character, r; - /* Short-circuit a //server on cygwin, since that will always behave as - a directory. */ -#if __CYGWIN__ - if (filename[0] == '/' && filename[1] == '/' && strchr (filename+2, '/') == 0) - return '/'; -#endif - #if defined (HAVE_LSTAT) && defined (S_ISLNK) r = lstat (filename, &finfo); #else @@ -1010,7 +992,7 @@ remove_duplicate_matches (matches) /* Sort the array without matches[0], since we need it to stay in place no matter what. */ - if (i && rl_sort_completion_matches) + if (i) qsort (matches+1, i-1, sizeof (char *), (QSFUNC *)_rl_qsort_string_compare); /* Remember the lowest common denominator for it may be unique. */ @@ -1122,8 +1104,7 @@ compute_lcd_of_matches (match_list, matches, text) #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { - mbstate_t ps_back; - ps_back = ps1; + mbstate_t ps_back = ps1; if (!_rl_compare_chars (match_list[i], si, &ps1, match_list[i+1], si, &ps2)) break; else if ((v = _rl_get_char_len (&match_list[i][si], &ps_back)) > 1) @@ -1178,8 +1159,7 @@ compute_lcd_of_matches (match_list, matches, text) } /* sort the list to get consistent answers. */ - if (rl_sort_completion_matches) - qsort (match_list+1, matches, sizeof(char *), (QSFUNC *)_rl_qsort_string_compare); + qsort (match_list+1, matches, sizeof(char *), (QSFUNC *)_rl_qsort_string_compare); si = strlen (text); if (si <= low) @@ -1297,7 +1277,7 @@ rl_display_match_list (matches, len, max) 0 < len <= limit implies count = 1. */ /* Sort the items if they are not already sorted. */ - if (rl_ignore_completion_duplicates == 0 && rl_sort_completion_matches) + if (rl_ignore_completion_duplicates == 0) qsort (matches + 1, len, sizeof (char *), (QSFUNC *)_rl_qsort_string_compare); rl_crlf (); @@ -1761,7 +1741,7 @@ rl_complete_internal (what_to_do) break; default: - _rl_ttymsg ("bad value %d for what_to_do in rl_complete", what_to_do); + fprintf (stderr, "\r\nreadline: bad value %d for what_to_do in rl_complete\n", what_to_do); rl_ding (); FREE (saved_line_buffer); RL_UNSETSTATE(RL_STATE_COMPLETING); @@ -1916,6 +1896,7 @@ rl_filename_completion_function (text, state) static char *filename = (char *)NULL; static char *dirname = (char *)NULL; static char *users_dirname = (char *)NULL; + static char *orig_filename = (char *)NULL; static int filename_len; char *temp; int dirlen; @@ -2128,8 +2109,8 @@ rl_filename_completion_function (text, state) hit the end of the match list, we restore the original unmatched text, ring the bell, and reset the counter to zero. */ int -rl_menu_complete (count, invoking_key) - int count, invoking_key; +rl_menu_complete (count, ignore) + int count, ignore; { rl_compentry_func_t *our_func; int matching_filenames, found_quote; @@ -2154,8 +2135,6 @@ rl_menu_complete (count, invoking_key) match_list_index = match_list_size = 0; matches = (char **)NULL; - rl_completion_invoking_key = invoking_key; - /* Only the completion entry function can change these. */ set_completion_defaults ('%'); diff --git a/lib/readline/display.c b/lib/readline/display.c index b48477776..34005739f 100644 --- a/lib/readline/display.c +++ b/lib/readline/display.c @@ -1,6 +1,6 @@ /* display.c -- readline redisplay facility. */ -/* Copyright (C) 1987-2007 Free Software Foundation, Inc. +/* Copyright (C) 1987-2005 Free Software Foundation, Inc. This file is part of the GNU Readline Library, a library for reading lines of text with interactive input and history editing. @@ -59,54 +59,34 @@ extern char *strchr (), *strrchr (); #endif /* !strchr && !__STDC__ */ +#if defined (HACK_TERMCAP_MOTION) +extern char *_rl_term_forward_char; +#endif + static void update_line PARAMS((char *, char *, int, int, int, int)); static void space_to_eol PARAMS((int)); static void delete_chars PARAMS((int)); static void insert_some_chars PARAMS((char *, int, int)); static void cr PARAMS((void)); -/* State of visible and invisible lines. */ -struct line_state - { - char *line; - int *lbreaks; - int lbsize; -#if defined (HANDLE_MULTIBYTE) - int *wrapped_line; - int wbsize; -#endif - }; - -/* The line display buffers. One is the line currently displayed on - the screen. The other is the line about to be displayed. */ -static struct line_state line_state_array[2]; -static struct line_state *line_state_visible = &line_state_array[0]; -static struct line_state *line_state_invisible = &line_state_array[1]; - -/* Backwards-compatible names. */ -#define inv_lbreaks (line_state_invisible->lbreaks) -#define inv_lbsize (line_state_invisible->lbsize) -#define vis_lbreaks (line_state_visible->lbreaks) -#define vis_lbsize (line_state_visible->lbsize) - -#define visible_line (line_state_visible->line) -#define invisible_line (line_state_invisible->line) - #if defined (HANDLE_MULTIBYTE) static int _rl_col_width PARAMS((const char *, int, int)); +static int *_rl_wrapped_line; #else # define _rl_col_width(l, s, e) (((e) <= (s)) ? 0 : (e) - (s)) #endif +static int *inv_lbreaks, *vis_lbreaks; +static int inv_lbsize, vis_lbsize; + /* Heuristic used to decide whether it is faster to move from CUR to NEW - by backing up or outputting a carriage return and moving forward. CUR - and NEW are either both buffer positions or absolute screen positions. */ + by backing up or outputting a carriage return and moving forward. */ #define CR_FASTER(new, cur) (((new) + 1) < ((cur) - (new))) /* _rl_last_c_pos is an absolute cursor position in multibyte locales and a buffer index in others. This macro is used when deciding whether the current cursor position is in the middle of a prompt string containing - invisible characters. XXX - might need to take `modmark' into account. */ + invisible characters. */ #define PROMPT_ENDING_INDEX \ ((MB_CUR_MAX > 1 && rl_byte_oriented == 0) ? prompt_physical_chars : prompt_last_invisible+1) @@ -163,8 +143,6 @@ int _rl_last_c_pos = 0; int _rl_last_v_pos = 0; static int cpos_adjusted; -static int cpos_buffer_position; -static int prompt_multibyte_chars; /* Number of lines currently on screen minus 1. */ int _rl_vis_botlin = 0; @@ -174,6 +152,11 @@ int _rl_vis_botlin = 0; doing horizontal scrolling. It shifts in thirds of a screenwidth. */ static int last_lmargin; +/* The line display buffers. One is the line currently displayed on + the screen. The other is the line about to be displayed. */ +static char *visible_line = (char *)NULL; +static char *invisible_line = (char *)NULL; + /* A buffer for `modeline' messages. */ static char msg_buf[128]; @@ -187,7 +170,6 @@ static int line_size = 1024; include invisible characters. */ static char *local_prompt, *local_prompt_prefix; -static int local_prompt_len; static int prompt_visible_length, prompt_prefix_length; /* The number of invisible characters in the line currently being @@ -214,10 +196,6 @@ static int prompt_last_screen_line; static int prompt_physical_chars; -/* set to a non-zero value by rl_redisplay if we are marking modified history - lines and the current line is so marked. */ -static int modmark; - /* Variables to save and restore prompt and display information. */ /* These are getting numerous enough that it's time to create a struct. */ @@ -227,7 +205,6 @@ static char *saved_local_prefix; static int saved_last_invisible; static int saved_visible_length; static int saved_prefix_length; -static int saved_local_length; static int saved_invis_chars_first_line; static int saved_physical_chars; @@ -305,11 +282,6 @@ expand_prompt (pmt, lp, lip, niflp, vlp) *r++ = *p++; if (!ignoring) { - /* rl ends up being assigned to prompt_visible_length, - which is the number of characters in the buffer that - contribute to characters on the screen, which might - not be the same as the number of physical characters - on the screen in the presence of multibyte characters */ rl += ind - pind; physchars += _rl_col_width (pmt, pind, ind); } @@ -394,7 +366,6 @@ rl_expand_prompt (prompt) FREE (local_prompt_prefix); local_prompt = local_prompt_prefix = (char *)0; - local_prompt_len = 0; prompt_last_invisible = prompt_invis_chars_first_line = 0; prompt_visible_length = prompt_physical_chars = 0; @@ -410,7 +381,6 @@ rl_expand_prompt (prompt) &prompt_invis_chars_first_line, &prompt_physical_chars); local_prompt_prefix = (char *)0; - local_prompt_len = local_prompt ? strlen (local_prompt) : 0; return (prompt_visible_length); } else @@ -429,7 +399,6 @@ rl_expand_prompt (prompt) &prompt_invis_chars_first_line, (int *)NULL); *t = c; - local_prompt_len = local_prompt ? strlen (local_prompt) : 0; return (prompt_prefix_length); } } @@ -474,11 +443,7 @@ init_line_structures (minsize) inv_lbreaks = (int *)xmalloc (inv_lbsize * sizeof (int)); vis_lbreaks = (int *)xmalloc (vis_lbsize * sizeof (int)); #if defined (HANDLE_MULTIBYTE) - line_state_visible->wbsize = vis_lbsize; - line_state_visible->wrapped_line = (int *)xmalloc (line_state_visible->wbsize * sizeof (int)); - - line_state_invisible->wbsize = inv_lbsize; - line_state_invisible->wrapped_line = (int *)xmalloc (line_state_invisible->wbsize * sizeof (int)); + _rl_wrapped_line = (int *)xmalloc (vis_lbsize * sizeof (int)); #endif inv_lbreaks[0] = vis_lbreaks[0] = 0; } @@ -490,8 +455,8 @@ rl_redisplay () { register int in, out, c, linenum, cursor_linenum; register char *line; - int inv_botlin, lb_botlin, lb_linenum, o_cpos; - int newlines, lpos, temp, n0, num; + int c_pos, inv_botlin, lb_botlin, lb_linenum, o_cpos; + int newlines, lpos, temp, modmark, n0, num; char *prompt_this_line; #if defined (HANDLE_MULTIBYTE) wchar_t wc; @@ -514,9 +479,7 @@ rl_redisplay () } /* Draw the line into the buffer. */ - cpos_buffer_position = -1; - - prompt_multibyte_chars = prompt_visible_length - prompt_physical_chars; + c_pos = -1; line = invisible_line; out = inv_botlin = 0; @@ -543,23 +506,24 @@ rl_redisplay () number of non-visible characters in the prompt string. */ if (rl_display_prompt == rl_prompt || local_prompt) { + int local_len = local_prompt ? strlen (local_prompt) : 0; if (local_prompt_prefix && forced_display) _rl_output_some_chars (local_prompt_prefix, strlen (local_prompt_prefix)); - if (local_prompt_len > 0) + if (local_len > 0) { - temp = local_prompt_len + out + 2; + temp = local_len + out + 2; if (temp >= line_size) { line_size = (temp + 1024) - (temp % 1024); visible_line = (char *)xrealloc (visible_line, line_size); line = invisible_line = (char *)xrealloc (invisible_line, line_size); } - strncpy (line + out, local_prompt, local_prompt_len); - out += local_prompt_len; + strncpy (line + out, local_prompt, local_len); + out += local_len; } line[out] = '\0'; - wrap_offset = local_prompt_len - prompt_visible_length; + wrap_offset = local_len - prompt_visible_length; } else { @@ -614,14 +578,10 @@ rl_redisplay () { \ inv_lbsize *= 2; \ inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \ + _rl_wrapped_line = (int *)xrealloc (_rl_wrapped_line, inv_lbsize * sizeof (int)); \ } \ inv_lbreaks[++newlines] = out; \ - if (newlines >= (line_state_invisible->wbsize - 1)) \ - { \ - line_state_invisible->wbsize *= 2; \ - line_state_invisible->wrapped_line = (int *)xrealloc (line_state_invisible->wrapped_line, line_state_invisible->wbsize * sizeof(int)); \ - } \ - line_state_invisible->wrapped_line[newlines] = _rl_wrapped_multicolumn; \ + _rl_wrapped_line[newlines] = _rl_wrapped_multicolumn; \ lpos = 0; \ } \ } while (0) @@ -651,7 +611,7 @@ rl_redisplay () #endif #if defined (HANDLE_MULTIBYTE) - memset (line_state_invisible->wrapped_line, 0, line_state_invisible->wbsize * sizeof (int)); + memset (_rl_wrapped_line, 0, vis_lbsize); num = 0; #endif @@ -664,7 +624,6 @@ rl_redisplay () contents of the command line? */ while (lpos >= _rl_screenwidth) { - int z; /* fix from Darin Johnson for prompt string with invisible characters that is longer than the screen width. The prompt_invis_chars_first_line variable could be made into an array @@ -673,48 +632,37 @@ rl_redisplay () prompts that exceed two physical lines? Additional logic fix from Edward Catmur */ #if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + n0 = num; + temp = local_prompt ? strlen (local_prompt) : 0; + while (num < temp) { - n0 = num; - temp = local_prompt_len; - while (num < temp) + if (_rl_col_width (local_prompt, n0, num) > _rl_screenwidth) { - z = _rl_col_width (local_prompt, n0, num); - if (z > _rl_screenwidth) - { - num = _rl_find_prev_mbchar (local_prompt, num, MB_FIND_ANY); - break; - } - else if (z == _rl_screenwidth) - break; - num++; + num = _rl_find_prev_mbchar (local_prompt, num, MB_FIND_ANY); + break; } - temp = num; + num++; } - else + temp = num + +#else + temp = ((newlines + 1) * _rl_screenwidth) + #endif /* !HANDLE_MULTIBYTE */ - temp = ((newlines + 1) * _rl_screenwidth); - - /* Now account for invisible characters in the current line. */ - /* XXX - this assumes that all of the invisible characters are before - the line wrap. */ - temp += ((local_prompt_prefix == 0) ? ((newlines == 0) ? prompt_invis_chars_first_line - : ((newlines == 1) ? wrap_offset : 0)) - : ((newlines == 0) ? wrap_offset :0)); + ((local_prompt_prefix == 0) ? ((newlines == 0) ? prompt_invis_chars_first_line + : ((newlines == 1) ? wrap_offset : 0)) + : ((newlines == 0) ? wrap_offset :0)); inv_lbreaks[++newlines] = temp; #if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - lpos -= _rl_col_width (local_prompt, n0, num); - else + lpos -= _rl_col_width (local_prompt, n0, num); +#else + lpos -= _rl_screenwidth; #endif - lpos -= _rl_screenwidth; } prompt_last_screen_line = newlines; /* Draw the rest of the line (after the prompt) into invisible_line, keeping - track of where the cursor is (cpos_buffer_position), the number of the line containing + track of where the cursor is (c_pos), the number of the line containing the cursor (lb_linenum), the last line number (lb_botlin and inv_botlin). It maintains an array of line breaks for display (inv_lbreaks). This handles expanding tabs for display and displaying meta characters. */ @@ -767,7 +715,7 @@ rl_redisplay () if (in == rl_point) { - cpos_buffer_position = out; + c_pos = out; lb_linenum = newlines; } @@ -861,7 +809,7 @@ rl_redisplay () } if (in == rl_point) { - cpos_buffer_position = out; + c_pos = out; lb_linenum = newlines; } for (i = in; i < in+wc_bytes; i++) @@ -892,9 +840,9 @@ rl_redisplay () } line[out] = '\0'; - if (cpos_buffer_position < 0) + if (c_pos < 0) { - cpos_buffer_position = out; + c_pos = out; lb_linenum = newlines; } @@ -903,7 +851,7 @@ rl_redisplay () inv_lbreaks[newlines+1] = out; cursor_linenum = lb_linenum; - /* CPOS_BUFFER_POSITION == position in buffer where cursor should be placed. + /* C_POS == position in buffer where cursor should be placed. CURSOR_LINENUM == line number where the cursor should be placed. */ /* PWP: now is when things get a bit hairy. The visible and invisible @@ -948,8 +896,6 @@ rl_redisplay () /* For each line in the buffer, do the updating display. */ for (linenum = 0; linenum <= inv_botlin; linenum++) { - /* This can lead us astray if we execute a program that changes - the locale from a non-multibyte to a multibyte one. */ o_cpos = _rl_last_c_pos; cpos_adjusted = 0; update_line (VIS_LINE(linenum), INV_LINE(linenum), linenum, @@ -962,11 +908,7 @@ rl_redisplay () change update_line itself. There is one case in which update_line adjusts _rl_last_c_pos itself (so it can pass _rl_move_cursor_relative accurate values); it communicates - this back by setting cpos_adjusted. If we assume that - _rl_last_c_pos is correct (an absolute cursor position) each - time update_line is called, then we can assume in our - calculations that o_cpos does not need to be adjusted by - wrap_offset. */ + this back by setting cpos_adjusted */ if (linenum == 0 && (MB_CUR_MAX > 1 && rl_byte_oriented == 0) && cpos_adjusted == 0 && _rl_last_c_pos != o_cpos && @@ -1047,22 +989,19 @@ rl_redisplay () if (_rl_term_cr) tputs (_rl_term_cr, 1, _rl_output_character_function); #endif - if (modmark) - _rl_output_some_chars ("*", 1); - _rl_output_some_chars (local_prompt, nleft); if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - _rl_last_c_pos = _rl_col_width (local_prompt, 0, nleft) - wrap_offset + modmark; + _rl_last_c_pos = _rl_col_width (local_prompt, 0, nleft) - wrap_offset; else - _rl_last_c_pos = nleft + modmark; + _rl_last_c_pos = nleft; } /* Where on that line? And where does that line start in the buffer? */ pos = inv_lbreaks[cursor_linenum]; /* nleft == number of characters in the line buffer between the - start of the line and the desired cursor position. */ - nleft = cpos_buffer_position - pos; + start of the line and the cursor position. */ + nleft = c_pos - pos; /* NLEFT is now a number of characters in a buffer. When in a multibyte locale, however, _rl_last_c_pos is an absolute cursor @@ -1074,7 +1013,6 @@ rl_redisplay () those characters here and call _rl_backspace() directly. */ if (wrap_offset && cursor_linenum == 0 && nleft < _rl_last_c_pos) { - /* TX == new physical cursor position in multibyte locale. */ if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) tx = _rl_col_width (&visible_line[pos], 0, nleft) - visible_wrap_offset; else @@ -1108,11 +1046,11 @@ rl_redisplay () will be LMARGIN. */ /* The number of characters that will be displayed before the cursor. */ - ndisp = cpos_buffer_position - wrap_offset; + ndisp = c_pos - wrap_offset; nleft = prompt_visible_length + wrap_offset; /* Where the new cursor position will be on the screen. This can be longer than SCREENWIDTH; if it is, lmargin will be adjusted. */ - phys_c_pos = cpos_buffer_position - (last_lmargin ? last_lmargin : wrap_offset); + phys_c_pos = c_pos - (last_lmargin ? last_lmargin : wrap_offset); t = _rl_screenwidth / 3; /* If the number of characters had already exceeded the screenwidth, @@ -1123,7 +1061,7 @@ rl_redisplay () two-thirds of the way across the screen. */ if (phys_c_pos > _rl_screenwidth - 2) { - lmargin = cpos_buffer_position - (2 * t); + lmargin = c_pos - (2 * t); if (lmargin < 0) lmargin = 0; /* If the left margin would be in the middle of a prompt with @@ -1137,7 +1075,7 @@ rl_redisplay () { /* If we are moving back towards the beginning of the line and the last margin is no longer correct, compute a new one. */ - lmargin = ((cpos_buffer_position - 1) / t) * t; /* XXX */ + lmargin = ((c_pos - 1) / t) * t; /* XXX */ if (wrap_offset && lmargin > 0 && lmargin < nleft) lmargin = nleft; } @@ -1182,7 +1120,7 @@ rl_redisplay () if (visible_first_line_len > _rl_screenwidth) visible_first_line_len = _rl_screenwidth; - _rl_move_cursor_relative (cpos_buffer_position - lmargin, &invisible_line[lmargin]); + _rl_move_cursor_relative (c_pos - lmargin, &invisible_line[lmargin]); last_lmargin = lmargin; } } @@ -1190,10 +1128,17 @@ rl_redisplay () /* Swap visible and non-visible lines. */ { - struct line_state *vtemp = line_state_visible; + char *vtemp = visible_line; + int *itemp = vis_lbreaks, ntemp = vis_lbsize; + + visible_line = invisible_line; + invisible_line = vtemp; - line_state_visible = line_state_invisible; - line_state_invisible = vtemp; + vis_lbreaks = inv_lbreaks; + inv_lbreaks = itemp; + + vis_lbsize = inv_lbsize; + inv_lbsize = ntemp; rl_display_fixed = 0; /* If we are displaying on a single line, and last_lmargin is > 0, we @@ -1228,7 +1173,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) int current_line, omax, nmax, inv_botlin; { register char *ofd, *ols, *oe, *nfd, *nls, *ne; - int temp, lendiff, wsatend, od, nd, twidth; + int temp, lendiff, wsatend, od, nd; int current_invis_chars; int col_lendiff, col_temp; #if defined (HANDLE_MULTIBYTE) @@ -1259,8 +1204,8 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) /* This fixes only double-column characters, but if the wrapped character comsumes more than three columns, spaces will be inserted in the string buffer. */ - if (current_line < line_state_visible->wbsize && line_state_visible->wrapped_line[current_line] > 0) - _rl_clear_to_eol (line_state_visible->wrapped_line[current_line]); + if (_rl_wrapped_line[current_line] > 0) + _rl_clear_to_eol (_rl_wrapped_line[current_line]); memset (&ps, 0, sizeof (mbstate_t)); ret = mbrtowc (&wc, new, MB_CUR_MAX, &ps); @@ -1324,7 +1269,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) /* See if the old line is a subset of the new line, so that the only change is adding characters. */ temp = (omax < nmax) ? omax : nmax; - if (memcmp (old, new, temp) == 0) /* adding at the end */ + if (memcmp (old, new, temp) == 0) { ofd = old + temp; nfd = new + temp; @@ -1466,44 +1411,30 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) sequences (like drawing the `unbold' sequence without a corresponding `bold') that manifests itself on certain terminals. */ - lendiff = local_prompt_len; + lendiff = local_prompt ? strlen (local_prompt) : 0; od = ofd - old; /* index of first difference in visible line */ if (current_line == 0 && !_rl_horizontal_scroll_mode && _rl_term_cr && lendiff > prompt_visible_length && _rl_last_c_pos > 0 && - od >= lendiff && _rl_last_c_pos < PROMPT_ENDING_INDEX) + od >= lendiff && _rl_last_c_pos <= PROMPT_ENDING_INDEX) { #if defined (__MSDOS__) putc ('\r', rl_outstream); #else tputs (_rl_term_cr, 1, _rl_output_character_function); #endif - if (modmark) - _rl_output_some_chars ("*", 1); _rl_output_some_chars (local_prompt, lendiff); if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { /* We take wrap_offset into account here so we can pass correct information to _rl_move_cursor_relative. */ - _rl_last_c_pos = _rl_col_width (local_prompt, 0, lendiff) - wrap_offset + modmark; + _rl_last_c_pos = _rl_col_width (local_prompt, 0, lendiff) - wrap_offset; cpos_adjusted = 1; } else - _rl_last_c_pos = lendiff + modmark; + _rl_last_c_pos = lendiff; } - /* When this function returns, _rl_last_c_pos is correct, and an absolute - cursor postion in multibyte mode, but a buffer index when not in a - multibyte locale. */ _rl_move_cursor_relative (od, old); -#if 1 -#if defined (HANDLE_MULTIBYTE) - /* We need to indicate that the cursor position is correct in the presence of - invisible characters in the prompt string. Let's see if setting this when - we make sure we're at the end of the drawn prompt string works. */ - if (current_line == 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0 && _rl_last_c_pos == prompt_physical_chars) - cpos_adjusted = 1; -#endif -#endif /* if (len (new) > len (old)) lendiff == difference in buffer @@ -1583,15 +1514,15 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) if ((temp - lendiff) > 0) { _rl_output_some_chars (nfd + lendiff, temp - lendiff); +#if 1 /* XXX -- this bears closer inspection. Fixes a redisplay bug reported against bash-3.0-alpha by Andreas Schwab involving multibyte characters and prompt strings with invisible characters, but was previously disabled. */ - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - twidth = _rl_col_width (nfd+lendiff, 0, temp-col_lendiff); - else - twidth = temp - lendiff; - _rl_last_c_pos += twidth; + _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-col_lendiff); +#else + _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-lendiff); +#endif } } else @@ -1624,22 +1555,8 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) temp = nls - nfd; if (temp > 0) { - /* If nfd begins at the prompt, or before the invisible - characters in the prompt, we need to adjust _rl_last_c_pos - in a multibyte locale to account for the wrap offset and - set cpos_adjusted accordingly. */ _rl_output_some_chars (nfd, temp); - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - { - _rl_last_c_pos += _rl_col_width (nfd, 0, temp); - if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) - { - _rl_last_c_pos -= wrap_offset; - cpos_adjusted = 1; - } - } - else - _rl_last_c_pos += temp; + _rl_last_c_pos += _rl_col_width (nfd, 0, temp);; } } /* Otherwise, print over the existing material. */ @@ -1647,20 +1564,8 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) { if (temp > 0) { - /* If nfd begins at the prompt, or before the invisible - characters in the prompt, we need to adjust _rl_last_c_pos - in a multibyte locale to account for the wrap offset and - set cpos_adjusted accordingly. */ _rl_output_some_chars (nfd, temp); _rl_last_c_pos += col_temp; /* XXX */ - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - { - if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) - { - _rl_last_c_pos -= wrap_offset; - cpos_adjusted = 1; - } - } } lendiff = (oe - old) - (ne - new); if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) @@ -1796,17 +1701,8 @@ _rl_move_cursor_relative (new, data) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { dpos = _rl_col_width (data, 0, new); - /* Use NEW when comparing against the last invisible character in the - prompt string, since they're both buffer indices and DPOS is a - desired display position. */ - if (new > prompt_last_invisible) /* XXX - don't use woff here */ - { - dpos -= woff; - /* Since this will be assigned to _rl_last_c_pos at the end (more - precisely, _rl_last_c_pos == dpos when this function returns), - let the caller know. */ - cpos_adjusted = 1; - } + if (dpos > woff) + dpos -= woff; } else #endif @@ -1825,7 +1721,7 @@ _rl_move_cursor_relative (new, data) else #endif i = _rl_last_c_pos - woff; - if (dpos == 0 || CR_FASTER (dpos, _rl_last_c_pos) || + if (new == 0 || CR_FASTER (new, _rl_last_c_pos) || (_rl_term_autowrap && i == _rl_screenwidth)) { #if defined (__MSDOS__) @@ -1847,27 +1743,19 @@ _rl_move_cursor_relative (new, data) sequence telling the terminal to move forward one character. That kind of control is for people who don't know what the data is underneath the cursor. */ - - /* However, we need a handle on where the current display position is - in the buffer for the immediately preceding comment to be true. - In multibyte locales, we don't currently have that info available. - Without it, we don't know where the data we have to display begins - in the buffer and we have to go back to the beginning of the screen - line. In this case, we can use the terminal sequence to move forward - if it's available. */ +#if defined (HACK_TERMCAP_MOTION) + if (_rl_term_forward_char) + { + for (i = cpos; i < dpos; i++) + tputs (_rl_term_forward_char, 1, _rl_output_character_function); + } + else +#endif /* HACK_TERMCAP_MOTION */ if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { - if (_rl_term_forward_char) - { - for (i = cpos; i < dpos; i++) - tputs (_rl_term_forward_char, 1, _rl_output_character_function); - } - else - { - tputs (_rl_term_cr, 1, _rl_output_character_function); - for (i = 0; i < new; i++) - putc (data[i], rl_outstream); - } + tputs (_rl_term_cr, 1, _rl_output_character_function); + for (i = 0; i < new; i++) + putc (data[i], rl_outstream); } else for (i = cpos; i < new; i++) @@ -2016,7 +1904,6 @@ rl_message (va_alist) &prompt_invis_chars_first_line, &prompt_physical_chars); local_prompt_prefix = (char *)NULL; - local_prompt_len = local_prompt ? strlen (local_prompt) : 0; (*rl_redisplay_function) (); return 0; @@ -2040,7 +1927,6 @@ rl_message (format, arg1, arg2) &prompt_invis_chars_first_line, &prompt_physical_chars); local_prompt_prefix = (char *)NULL; - local_prompt_len = local_prompt ? strlen (local_prompt) : 0; (*rl_redisplay_function) (); return 0; @@ -2077,14 +1963,12 @@ rl_save_prompt () saved_local_prompt = local_prompt; saved_local_prefix = local_prompt_prefix; saved_prefix_length = prompt_prefix_length; - saved_local_length = local_prompt_len; saved_last_invisible = prompt_last_invisible; saved_visible_length = prompt_visible_length; saved_invis_chars_first_line = prompt_invis_chars_first_line; saved_physical_chars = prompt_physical_chars; local_prompt = local_prompt_prefix = (char *)0; - local_prompt_len = 0; prompt_last_invisible = prompt_visible_length = prompt_prefix_length = 0; prompt_invis_chars_first_line = prompt_physical_chars = 0; } @@ -2097,7 +1981,6 @@ rl_restore_prompt () local_prompt = saved_local_prompt; local_prompt_prefix = saved_local_prefix; - local_prompt_len = saved_local_length; prompt_prefix_length = saved_prefix_length; prompt_last_invisible = saved_last_invisible; prompt_visible_length = saved_visible_length; @@ -2106,7 +1989,6 @@ rl_restore_prompt () /* can test saved_local_prompt to see if prompt info has been saved. */ saved_local_prompt = saved_local_prefix = (char *)0; - saved_local_length = 0; saved_last_invisible = saved_visible_length = saved_prefix_length = 0; saved_invis_chars_first_line = saved_physical_chars = 0; } @@ -2212,7 +2094,7 @@ insert_some_chars (string, count, col) /* DEBUGGING */ if (MB_CUR_MAX == 1 || rl_byte_oriented) if (count != col) - _rl_ttymsg ("debug: insert_some_chars: count (%d) != col (%d)", count, col); + fprintf(stderr, "readline: debug: insert_some_chars: count (%d) != col (%d)\n", count, col); /* If IC is defined, then we do not have to "enter" insert mode. */ if (_rl_term_IC) @@ -2295,8 +2177,7 @@ _rl_update_final () char *last_line; last_line = &visible_line[vis_lbreaks[_rl_vis_botlin]]; - cpos_buffer_position = -1; /* don't know where we are in buffer */ - _rl_move_cursor_relative (_rl_screenwidth - 1, last_line); /* XXX */ + _rl_move_cursor_relative (_rl_screenwidth - 1, last_line); _rl_clear_to_eol (0); putc (last_line[_rl_screenwidth - 1], rl_outstream); } @@ -2339,7 +2220,6 @@ redraw_prompt (t) &prompt_invis_chars_first_line, &prompt_physical_chars); local_prompt_prefix = (char *)NULL; - local_prompt_len = local_prompt ? strlen (local_prompt) : 0; rl_forced_update_display (); @@ -2353,14 +2233,10 @@ _rl_redisplay_after_sigwinch () { char *t; - /* Clear the last line (assuming that the screen size change will result in - either more or fewer characters on that line only) and put the cursor at - column 0. Make sure the right thing happens if we have wrapped to a new - screen line. */ + /* Clear the current line and put the cursor at column 0. Make sure + the right thing happens if we have wrapped to a new screen line. */ if (_rl_term_cr) { - _rl_move_vert (_rl_vis_botlin); - #if defined (__MSDOS__) putc ('\r', rl_outstream); #else @@ -2446,18 +2322,11 @@ _rl_col_width (str, start, end) int start, end; { wchar_t wc; - mbstate_t ps; + mbstate_t ps = {0}; int tmp, point, width, max; if (end <= start) return 0; - if (MB_CUR_MAX == 1 || rl_byte_oriented) -{ -_rl_ttymsg ("_rl_col_width: called with MB_CUR_MAX == 1"); - return (end - start); -} - - memset (&ps, 0, sizeof (mbstate_t)); point = 0; max = end; diff --git a/lib/readline/doc/history.dvi b/lib/readline/doc/history.dvi index dc24884318a9160d1661891ab7ae4e2c03ae9c4a..dac5f5b1dbcbad862007e473ae36b73e325d6840 100644 GIT binary patch delta 16492 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 byymUrq%ud@>pR=VNiR$1j?8y_&j0-%l6p@` delta 18811 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 - + q~b zH7piD_v;xO;S3X?QW=~^1BSo_Xf*g|hBr&s#JTX4?3gHG6 z+Sr>{&2m^MMm#>$%+Tglft5}xup*BACVW@p@!FZM#8@Wp6~zT`N&JPX6`g1(fb2-W z*_FkVzPc(HSl%<@7?*F@iVKL5eu&C)X9hqiu|H(74ED**412=MA-WwfY3OT`s4_TZw4h zX*H;=RX-pO)e~g{X8FzL2ibOLaXBwiR+*tt0_CYdS~tIxtq^dAX&4iskTOR@vr!~l zN5jbJ7ihoc)eWKUzqMA&b5+8m2X|5QU3El1JsL*LEaewR2H;+#`U;wBZhuIgiU3(5 zTqxJ<4X7|IVGWTW<3ZpWHu+k)oAhnPFk3{G$UVid3Av|v3{WoYnlX?+PVYnKDL~HL zMx>pvMH%G8-sHJ-wJ0LT#lbaad5pp*rUVGcXJ`qKm%F+I2rv7$_^FI<8lK}?ui}Q; z4CwCBs8^H=P^${!Rj>BidYmhAOrXx!RRY;5YxG>RLKIE~a_m@0PsY^P@G}-IG}=1_hd+%I#HaF0`WVs)cdPmucF5;-^tkt|{PTGDpFZL0oWmy_6Cgdt zXLSN+cVYVk$R2k=xYYLxww5iT^E!HcxltkYQPn2dNCHVSZXzp(B@-bt_d*}?vOlWm zI7LFfdW8gM=oRG3iR_E`^F*M6|={HtZ`zvQ(b#q?H}P5K5r6?&iSme(MAb!aEU(B zm!$z-0MWX05)8}vPfuav$dcg{DW42!K#wYz3>je_!lt7kwG^iI5USC+J1h3ona$2~ETA!tI4$}H*XMc7I%$@Hy&pW1)^UOp2^W1gHuje2HDLfIN z3J6DdBDLj{M0*2Q_R0;U?~)-JGEgnYZ$mjyV)>?Wpv1t}%GsfJv>cWBdt_<_^GIn0 zOvA~!uL8cf(hoC^xa!D%h9rPX)r27&r|^ zUE_yinZG<#IuRNwa?{hXm6o~LO%#UYo)-(~w*i&qqA4TjzwLxEePH?iRVD2eH;G`Qt7*O2a8Ju<#{$&&g zFLywS`lfCnB+)l_)IblT&-#qw8@bl*>uXBeHwRbO!f?arlrK6#hMy~I-z=SV@HL*A zw+PnB|5^+Q!5)jDO7v7nMX&oF*q<2m-V9FsdGO;UP)%(S^BSRpKELROYv`D=6s`q4 zHaA0mfyb50U^8APi(27l{5axPSV@-!Z-Z>Q?7$uHIemWRPDl|r#shc3Ao?EefigNy zU5Ta(KIXUg!Y8KO(GE$z%MSGl-tz#gGVyfkgJ^u=vEw1=qR+p37^>;=gXxl$#))Mzj4f_DSiUpr-Aj}4iAHTJ<^O0KK&GorKf-QG*p2o94ljX!a#ZBbFd9R z1o6X4gT6iZJS58Pe}R+o(DRTackP0QjePnxnf~r2fBihv82Lf`!Xu0^a_b8)An1M( zuBUl;^Cj47;ML1tfwQQ6EqfK-#Ba<04&Ml)P!{ZlHO6QZQ zOIGj2=U)F7w8%Mo@mUQsMbF^zx8QMu&Ljt)dIvtj8QBXN!N=c)I2zl|_aVygrZ(l4T<(tQ#7GJaPF{HI=-=T^o-`Ni_a=I0*Sj8lI$Q&probhB4}~j`Lt3N&o&=KOFjA#u?`ENd4h;`Ql?DL*@vxwimLIzCsGq zVT@Y6%FGwPaT6$O0z?M`!^|#R3i&{e`Mz{znNh)p zTvOstWkkODBfi7wd=qD`D0ryQ>}|;CR3zY2Mdll#hhlTNx7gg;vt11;*fz$DH_VMu zcika%E|>=jnL7m%VN|KPmT0lujF-=qnor8Y zad6|j)UL;pdGZTVOSD5=m><4OszrJQ}`<9r0X3MqH&GmSn@s;K~5R)|1Iy(<# zR@y9_jF_uuS>IiW-$hrOt7+mMnQLwoVdt*Gb5~tuf{00svc8*--_>7Z7SVgIn{OTv b0EZ)G+XAy#Oh^a@7nnzls0l6Nfcp0@2Phj@ delta 60050 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�P(x6NjrW<6(i)t+_$WA!g!URysR zne6fpqyank5wNjOSfh(%RA*i8`(gc`QnY?%z)W1xnEN8>&;$i`pB_DVyAnn(lJ#uo zSEL^%O+>T&OJrpBo8gd^u8eaq2LP}&dnX7P7m;o7&=oR;&HV!C z=E?;2z!!$QA$XOnh!3X}pwtK|o)Cw)=Mqz|a&z_Rs|0)S!;KHF5}ydyaA})(70li( zpOR%j3GWVMai5Vf?R4dZL-i2=)6w%cu*IK|gjQBhKYo`dqi*|*v=`wXZW1+np0s5h zZzc*sGtDAzgN3`jz2K(l~EDyQ5xUo3o^}FThf* zj(_F^d+`gBBX|7mx3Df>iMG8ORk8V#^x7pJryZLib}Mz1ev)D4{Ec>Sx1I1v0F7{W zyY%2jcnR|nB7B=z7zq#X2X5d*vC2WI{2H&o9M!;V!H4GWK5jOC_pv>Ut#Mxm|CHli zZ7I%Jz@D!qorEu_=QT2ZTxixrIHP8YO2JnszfF;Fn}X#DSgu zl9a-^Z0o}YeMQ~_3FYp`ntx5&0pg^8O%mI1#~HT;BlO$bz9yeqV+d|lv+Nt-d`ePH7j_-S!C-yTi^lm5xL-SDrrUu+rK2S=4Jwqh@SkC7F)s=4+(X-Zhi&p@vK z?Tcb=y6_H${!7x?;Qx}|Le?$*FPWn3iEY;op_t4r|CijaRL8c9v;NFryM6@C<&_^u zPMj`XSc*U2DSC-uryfA*3l;3yZ%F(0aKutT_*spn(jen~D2mzOAIYA^?;*9>+^W3v z3_Ek3v`Y=bRV10?FY|sI9spi^=kb)E2vMrrU;UJA|C#iX6Xwl}ki{SV3Ut0~J88n! z{|;v{{1=kK(l(LSl_P;e1f|#CMw*shKmE_BMO{g_rEsHTAs%kDJm&l>O>}~-YawnpHDWq*>`SnYrQ z1{FK|J4ueldEcGMPW?$fnj+c+lvQyKT(-_C+^tuAWc)yY1&|1DR~R-t!u-h%(qry` zh@8w`9@Ci`RN@BmemI7E8^gFt+yK)Au!$bwpg0ZSE|q%SfvmEBjTQa{`ad3T4QMfa zrP-;jX@j1TbDtj4cgSq%2t?9_Ci0 z0W6kCV97}L9A*89G^v**a*bcv3M#!vU~mtn(UsoAMWqz}NPyMCLt}@D)D?K@1tN`; zJIud_rAkt^oUmyR%af!b_}c|9vW=4DkyZH)Mr5f=C0uAm9i@gp8)>BDh#&AR3(7Mc z==qpgSSy$t=E$R;#5g$YT+zh(HRUqD2Ma-z7kcJ#x0+@v09DLmI-Yn&Cg$M)g4=Hr zNYKK~dvI%L6mmpl`(&vj@VApg*=w?tmafBhpQBq1rGYOiSZI&a@nLQUJWdgRJ9>BhglCahy zCR)N|p7dzREvd)FMDImQ9}Gbr7nC;NjvBWvZJx^`h~f4?kv;OPPKOqLv&%73hbC%N zo4AQ!)IJC>sVatp@#OdZviw z$B;w0h5wi?Dy>^6GWP^@Aa+-b)P`+qEMeb(U6i~_$Yg#C1^wj53 ztWy&y71L9jNO{uyHB4_J-CVh8kBG|R52OW^gU?}d_ra49#Vl6$X(KTS1p2|}!rkl~ zT4YZ@cqG6GOe`RNvx~okKe^;IR$}~i9QSLtif=iNdziO1ihNyFwl!qano7wTuX6ud zguewJm181AL~nooI&CVYRqAs3OXa)|fD6>s^q0+KD&C+A{>1f~9pV1nz0rtwZ4y18 zj^4e%Cs6%&()3-p3xd zc(DhTLGEfH^&-1!LM^0CvfZ6)la{K|ZGdt0e{{QuS0cLzpQW&b4mzjN-rZwmVT@dtVH z>aC}r&(XDzId)&hpFMn^6b2r?A2-E7b3-1z5Cf^|=olT9f2}B*Ke*NI5$)bBEVIju z0#mfx%V=cwGG$hG2Uk0?piaHos;C?74vBfTQodBYGj^)5B@kJxj)gwdhTM3ui{_M~+#pr%oIF`WgbEW>s4(`HY6-X=P1xHnpKfu0P8+QYQM&=GX?N&@V zQKH$;_%pXFt8iu<3^tyOny?$gAadSM}P893lZ2T=Al54%1cqk)?ByR2y`vQpvRi$%ks*5!ikySd-D%dR3-D$%N zTwO|oFmR1ju7j+$K_*W3Nxqw?nm?p&O1orDPgzlrtyK+DB@(@hmGB`cBEFmeW2p~i z6EQpyx+j=MOj?jXrH#{i0ZvVXv}V*7f8vftAy}ITS$#}VG}21qQ zJIfTmbu6^d=nIRhxUP`35T*1-L{!&NDOdFX>1e52u~z@clMHjB>rfe|Ra&lUk5)^I z5`L2kx8|Bg$@&m}Wg(ULi(lw^mkMZCgv% zY6;mXB8e}HeaCRvA;f)7dK@{ z4!>m&zLNnfHL-82h<&TaRk-#&nJ^qzwSoccyowlPG}{`8acuU4^z8+0MrrfXK}3FH zV5N(fDxhf2;pUVr%xVqo`|r(zhEgT`;s#FcHJAju4CxjSg8-6wT`g7j^C(FSrzInUmsWL;@? z`#clcV#MpV1{m8GI5c{}3plJTENiyaA3E~N3w9d&S6;-X84%aSD;I=+dL`73LT8j8 zoji2ZfFYa_Xlqz%d5Kjwm z3E~m6k4kq$p`*-6rzc@$77U_&-s3p>vVfD5j%UFLI$_&|w`N1DRIk4Q?vr{tX(Pqg zDg03{mS#g`P#b2iu-Y)R1F2J{cytJ^>Hs-SWrCTEBD1d;+@Hgu0sQ2_@8t#9o9=7g3H&bHc52~wvEj#Epoe?R=k+kH zGqh~9qnnN@T!+Iu(<@AIeF!e-46WM`1J!vJ9&vpzhg_CA?OY>tPU+kl3EHFNn5R2K za=mbpGncNzL!F^{hH3Oqvq%pONomt+CTXRrvMx&sM6w_kGMc!=eQ$FdC$0MX_F%_c zh+#avgfQL+WT#yqYg3Lj~DL3#YP3{vVb2INs)kVCemz`#AEeJH$o0 z!pc(>(rejLPgr?NOzR;9tMXJF)&r8FRTD_fFJ%bcx+fziCE=nTkQ#0p4OUy^77tB? zght+z(hkBXLT~l}#!fli17fF}#=@~g_>F~Q6uw1uvD>oG-i!|$C=kdIppBTh$_`sN zGAdErA9P857}1mT^AarW37p>ZOkeER5270qgJx4VUEkT0cK=p9(h~;Iu6n&b4{ic> zybU61RnJK3zH~&{h)r?nur6O})n9z0<%E#j^lE=flJ1M6DhPdqNb4D1F)pLS5$StB zBZ>P-`679xPJNU^V{zAQkZl`>U)}~iXsBBDVtyAkI2Q|gK|!IqkJ+?GEZ?mC2yqZEB}?p4(Y7N7)$}@O}AXOu#wk*W}0$e*^gietlMtB)o5pVa z4Q$;T^613W-b~$%Z8LE5P>91PdPAZ$SZu|NoUdQPc+)KOxHhx(3mq8VmsGipvAd5cw?xih=z?`a zp+0*0LPRrDJma(o5{(91nx5|q9eeZn;Ji8&CS}P@x-JUoty;ME7(YCu@Ig)EhlepS zA5z1-Y=q@ame`p1e1lgPPvEDpFrQ|Q+Vekj<-;n>vD@n7&LXJSV&5<}Wb7MicmD~> z2_yPIY?v~H(Ozhg(O~p_DvC!pBdAXK@e8Dg!tsmPYX~Ic&VFFDQz`jw_5oIeREO6X zeSrbTI|q^eJ)pS~)xH@7QFx{w3=CV|uflzX>ompA4Wugvh?WOde&CnlVC6pPSqSoM z%W`m5<~>KiI+?YqspLH$c+;%nit4JROawOfhZ!Pyd@kAsKu3|X?iS1)0Mm^p<5!j_ zC)J@^n#98cpc}3Jh65p)R)5JY`0u{Z0{ahy9vw+KzlFs_k5OWiusZ(r#x7^eOQyfu z!G+rfLIG{&%=7sDKuGMd`KCS+J-D^a>{IPdw(*GFcgcWMQ|zv_s;m*`vJC390pl~& z-DxM=xaF-Op==UNhq_o(0Btf|M&D1ApAM+Wl!|h7O)w2%?zv<1&L869m%3Z{=RxfNrUOjqo8XC)5tg_v;7nstXite znR)%$7a>9X38UeOrcu-PDbJZQb{`%CE#`#HbI4+*yUXmRv3r4kUo#ez0!m?SOYA?) zC=WuA<5JMO%T96BjP%13OKs5ld*;o5s*r?z$3RvpX_v)8XK!sZnS#!P~27(WwhCqZw|2ex>; zaDy>278BE~91s1K7xwg6XkGhkAY&_fC-ZN;2!nQ-6`P?!z`Sg&C8oLKsuC&0m}gJw zfPX3b@-nsvk5!tI9hn|*AM9^;&NIP%z)8|6uMcM`J*VKm6zh`#a?Ao)l4WW6@GFem zuzCe8w*BK^r150)cS~hF7)}`v%WL!eRNWM1T}mVZCuex7B#!r&=q5gyce2n?p-V3Z zx7E6vqqGW(i>#txy7?r6J@s-G%{CW(ed?7E)3mH>g<~c_RA-&dF9UY{z_I>@v9SAe zgc7)1#*jC8u+TjL2E&Ffcwz$4{iN?Ru<1nD+|Xr&t!IHW44d|$soFOYR$!ANXpNsv zf@1t^Dm1J$vQ~toe|U_nZER`J+R8;Zbb4#4jP1p@`sKP zM?_Hf=c`;F&qT8>Cr{8LAE3lHvLn>o8TK$ zAT7~*GJwl+lker)6zDM66!VVzRe)eoU(~eq2l9nv=!7O#DMI7LdACEWW+pt-KHw!Q zrhcG#J6lOZaPOtWbKrIuMue`}|1e=H48-TB+0tTr+C^#c7Ze;WEm{ zS~F;DY=o~*hxl64I9$!;6SydcJl~k{w2ksHXXNMCx^CIi=l)x6S@PU1V#u|+K*^5c zs*{Xo@rY!4bhpw$wvX|nHI|RH+HHmJ>4{bKZ#%deW=@zeFRa)MYrdA7(mBf$*1Yc2 z_@Sc)k0_Wmvfl({r>Ts!qzj3i#fC`EyTQa6q&JMm(KDptzvpxO+YD*MsQnTjp8>r( zMo1x!fBTCuNMV%E&?qj|c|Ba%OgcD{vYCnZeo2OK>M2HUnLTc z#qinClVrJOi*fL57^sfc%%&MP#fiT7U%F~rhc-JTH1RJEmUDcq?Icbb#5ZT*j5*Ne zR%zgt>qw&O7i*h#sk7V)p=UI9OfDsHd zNN&jvKKS*3%EeN`yyQJ8h0wgnyR%rqXoa1N;DKf?WA{9X@5yjEv`BZC;-Mm#INCH~UXn-v^8%Zj zd#Xm*LWZ+)GCW4iE{hg0z;^qiYPc;>I4_nJL+idS@!ajYsEbz;(=cP#1Pge8@%Qb9azmO~>o&O|*1eGU1O1PzSp}lx& zXf>|u2F>xQxe(4(Ikw}jxzIbFHE9~{?a4$EOk+{|a<=Rli?Xo(JQbQS4?5Z2#i{ck zljiyF^W*}(`vZJ!9wZEx-wqFnaR}glx&I7Rc=!8O5e%*3Xm*=Lvi>8bBsXrx#`A&e zCH|a^t><&_3Lg!g50e>sJsdaAhxY2|gZa>uqMwG z*^#oq1P6p!Z*qxE>n-@cU{<7S3t@u_qIc`DcLk(1H^s6=f!tF?i_lR4ol`9YKsQl^ zxuh*xK&1}$V=>RHfM*$s?rE%Yz$mq--gLk_;jXaJ6?XR=k|Y*zZMJB9tdiA9W6^Zq z`AX<&^WQo^DXuw-pc&p-1#`n)^$*?^{G{)XDrjx%X^Oqy{QvOfLP79@i$~+sYRI5Z zr#yytRYUtme54pLj+w%KZNBnOHO$A??jTvX#=!6HfF9VX24Z6+G$~vgQRudCZ#{5r zBu=h@cJVYeGP9TF?D1nmgD94#21XObx$nNv{*CMx6pc@cZTJl3lk^zjGXv#YtZLAb ztFhy`W=^1pEACnZ*|aBa-GN^&0-2V&7<#odjqcMzAkfuhD{Oe?9P<{-z^ZkNVJoSE z;fqN6GQt-ZuEV}dAhsiYR;MY$Qxja@jJN8 zZAe(O0%9Rf%UYi-$R}qtD3yhSsk+apspiLV-BM^yt$boB?K=~GdW>z+am~yzy2ghL zACN^{eq9P#%}lZ4&4Be=3Q1k=fR%x=sOw>hNwL*_gsl?V;Tj`~HX9#XiGoCLCdE+`I4V~9P;uJd zU>W{>B5C6Cr8&zuf=yh11uK?8>u8gXZmMsHk1vCnw!;W_!EoZx&TBa8E|x&}sOByx zr*(SY79Nslym}Wj9lcJKH}Dw${Y9E4{`>26&h6sR3S|JX2HmN$%Shn~417A@&jD^# zMSAdj!)s}qO%0kqm$5hTq=Mw|h(9iAX^_Lr6a>7Vq3F6GbV*BOEZmQNSg#sYh-LIc z_}1MlV)D`Ncf$&`fR-S`<_lgArt!?#KP?H%46fxF^{R9Cz>V8X@!5bNr?A)GcLtmdk_(hX z9lYqh7{3DAb~oX}L3Z5}uU~(`yM|gQggk^fLGDZ|$3+U`eeZ)tIBFzB;Fc9|f-7GA zhRg4T6x@3cG>!5GAof&u@RfTx>JV1##*gW!1s|zGwL#1oanN(j>Vg>gl_mp9rPi&dhAf_ z{QzXfx<9j*Ew(Rpx{PjfPWpR+cRm2g#Cyj!(5+CITPb+*dz0c6F$*?4PfES1gxU^z8{nH$5{P+8)X`_r-M`}S}X8*m8DP-f( z$@s@bhFXPi4VU+`o29f^F&4 z-a;r00!6nz*(u8u@BGiQ(Rjq`v({(~ieL;wWoFwm7<3S+^Iup`R@mpL0Wotto!whMZcfDyb>i7h@$<9!DF6nC7&-_vQ>1m7WlU zzr;2cewSj}_>UEk7~%97%WHL9D9tesWE>}6)OTd^2=;`nCFocIx8nDALBq%Z=pSRb z6GxKU{;Lg;OZ2VCj*fJihP($Miiq5x2W41X<%6(}c-F$Z(B^^YM4I$+8ma0ky9H{* zVx1JLJ9s2Lc=%g4S3A3byt@^`VUUo3!O2ipRIv7ige0o2$xWAdsR`H z2DJ~a28;s^!C+f|Tzv=@8a%{!{Sb%L82fr-zr$<_;-hJYAu-KEM_h}$raa3P7W2HK zQfy3Ti!0sM2iF~jc;YPAQv#(1^juiQ*{`S0bChvlxzp}uBo7ar(IIHMqK|(i7U}c_ z{QfYEwKc)MN1!0v40F7wjQ6T{`W{_BM#VWhRp@1r7yo?(5@jOydq;qQUgv&~za8QE z;-fYn!WXK?;YXo$n#*YXrnck^bP!)F*JUQ;is6em;wU5<@@OtSFx)imnd>N#`^9)^ zo(|oj?lSbODy=q$h-$gK${so1P?mgd0qfAt=qLj=j>5Qprbv3zuF;$Qf^X>(-i3Bf zGLrIMw#?6pg)Ctm8&x`CJT)Z zJANFTI!M3yEtPIr5{PZXLq8^&+9RT!c<;xM+QLd7X5@4Zh^a2EE-O~)T=@FOkkDLH zNss6}PzG6>qVoXk*I2~hA0IJ8 zR#I@lceoO_?J|F_?zjxJ-Fci9RPkXQeso;gZRjZG6Btc&^hygX{scPL@=>)vosaa1 zVvFEQss9NPQN_NP!LYhElI``45qwqP>ndD{m8QA9*t5SoUcIUU9 zshAaxkl$^0dS!JL+8@~HQ|O%O61J=fUVbN$zVz;;6&_*B4vdM?3Fsc2`6&kk@zLKt zg~E7KB)S%J+6zC|^&c_;fX=PQOP|65+V=wv;*1l-vE3r_DN{dRTHenkdgN-6L8jDt@u^eLwXgSMaSGBob9Z3^WSyftG z&9KGBt0Uy%@dlUZWNK!6=d5!szn3P8Kfrg&D!-PY`_&Q5C(jmD7r9Sb{9ya%kkQ-} zFV5ud>b1r5xeiZ#4zZ2B$`>bn7S}(Q3+%<2m~j>ylT9P#(=nXzFt<2e@h%$uUcZz` zCc;SY+Gt==OnFs`_9-VMv7vP~m!&|q;>(MbWi>Q&XU@V5`pmeuukfXj6+u%19wyvE1+Z3ozh9D=f(h z=+jAIxcn#9ZK^-4MQ_;)B~52* z-=Xu6TFW9*A@QnmUZzr%X4j^h^U{0PS>e12=c{6!^mmv>g-cpQv;jtTRh2TG%v(vm zfX9bsXrO+%L@BCR$KFVqMz_SWu2@HnXhPa+X%W9$VuCLC8Vcc}ht;09Y$@pe28JiN z!jg?(=~V)?@JYP%4U=3xiue{%hHE%C(-__)MB0@G0V|E~Ph-mrz$%4XR8yz{f}P(& z2O8o|nfTbZ(98B7o~AEM;rXjzw(Aj>c~aO(K`Y?$21YPsCsIveHPcZosZ=>sgp1Cx z^vdAnDoe7{%~fzb-$@PP@?La&$Fe0KZT?Q0oat!ycaShcE)!FnN)6Jk?Cvsq)m-)q zaHX3+VSahUsT3(fI^F)d-!;x^J}vX<<+^2BPfO|=#9+_wAu3~I)I$%;Y1bi_9$5CB zl5E`kkO|Aa#d+UDPKH6{~|Q4HAU^!Id)D3U*Hn8S9CKu*uF`B+C2VtTN6=xg~wDP zT2?X6I}IR7gQat*(_H3{cM+2W9#k)*mDgU8B{(ecTW?SnBU7{J%4{c5-qiMLG&{KJ z4e7{H5G?Gg2z&K)^>MFN5r>~p_F%RRGf7op%WNvvp}2v-&}~0Jn_8E6Zt0>@=>qHE z3JZ(&gQPNa23@lk>7wB*zten>B;&9UVYIa7^oZw{umM|VlXlQu8K4wAxs7kn<94`= z+jFg~dav}g3@IjpaeJ=b&Vg4Ff4TQ7yOXc6_uQ*W1}^mm855K#QudLz-LgwCf~$wc zt>iA}NCcV5|OZRjb&Zb~4@=S8k z(zX(Dl?7gzFcWAYHPHBl=U5g!qu$rha=RRX$1g+osd|6+z0=w%EQ$rT`shkKNi}+- zgy?B<5zF}vDl;heK;OTWOZ>>fAEm54JrDo!BXpn1M{Kvl!16%P zG;LZ~qZnH$u{IaJaRn06m0cxNgw%Vjl5R4v46j@PM%v#r5Rxt=x4&{RNxb7+>Cd-R+If6;b^;IMxmX=A{$G5zB75XK(j6p**IyqfmSi?zJ z)Wbo8G5%+mKHeo9dvqSQ;YQw-a$d5EdWZPiIgyrEPK3r1`WlmUl4RRw)xYz6~BhPbLAH<#4ATC(} z%EP@6OFBoof3bv>y7ys8aw@__EN#PU*Pt`)%R5i=iMXV2RpnN)S4UZKsO4h%FEEtE zqWG5_C3xv~NQhQdBOTsiWlG^oc=#81R0wzg7yb(8X{|)A!l}Q(7@C&1e#Vi0de`Ans`et!Nh^ShAnS^ zD@6`md8y1$@W90n7y$O-`?@-{1ql zsAdr8((2-JId-_!CL)@eVpe0`Im#Z4Z`ed^y4PBuZkdxeEByah22DZ4r_iKL_OBxM z7%wd&V(;Ca8(P9wun!1k{d*>BqmX7k*?Ri4agWH(=nNI!?lQ8ArBf=qh#83G5vo=_ zGDf#rN*t&v%R>(YHhC3?1-*YLYs&o2IR$6 zVPcETfm!uLQe#te9495!j$?65JrUPiR{XY*Idw@;D~4W%urY;JfN`8@N&DW)Qe{!+ zv3g>>q8L}}iB#gxeLv&}hX$~^>=L)E?}yfk|Fe*>PR(yg$C?V6+)!*)D=Mv0Sp0Ss zpG2#Hla0olke58hn3KxzND}GEeEE93zrKj-;bkl6n3K}U6byaDGU=F;te7!F3-aJt z;ih<`z8FcarY2spTI`K}qwzc496%z0( z`fdb zT9W^O^__A4@XdxIeU2%nH1rR2sBxRPxYsW?YY%`Q05(+OBf2p6dC4?c-ExU34eZt0 zE!x|C#@kwm<~giO_r#5jMC=?@uEQhFE>J>{DbAL0%Jy8Y#iC4o3aLU*z0<$YWK}KY zZT7DgHDvn0yW)hV_reqKb6%xP^GVv4~SgG2x<}I?4|h zNvtg~t#idPO0_FaG7xVN@0%p8x~h`)9PXwoE(l*vW%(C7{}zh)^59e{w5mXOFTNBm zl2ct`U{lLsrYe%iijWLi&6n_ExLiwg6x~D&uT@UXl5AFI>|Sj?=Aq%@BMxu4B=7FU zURIFgeVl?i$W+#2?o{>wrEqyfiLxP6yPRPhnay`w25F|mHI4;aDeVZRaFiy2Kt?ktxvs$HP*?m^z0TF2LA>paG& z_Pi9?_e6-OuVUrhyLMU8q3ziKK5W|&6wdv=!*z1Oeycoi~t z^j@AJ$#aHBh~!L8&t=mgzb1OGT*XWeqW3bQmJYDz>B9#i#6%*VJ@?|d2$5%ajM#RV z7%4j2+&D5)42v;E(-|R7;Y?>+<%~-6D$}7K=`F}Aq-0$DG*YxqH^r6(Dgi+<3#nF= zRx2E5I>9#7)F_eML}m_hOtdr;7etA1Q%z&*yXDe`>oT@dpUb&Wk4y~k278-4bW!SD zN-r)7p{Y(w<|W;RMH_9O`#MUb#gigZt!oZ5o{%O~dDNh0!~}gfg8tN+qG7xa2a?bo z6?R>4)!NBK=Wp7(9?>wt?;YYUDYQs#x5bifZe^BUqcs)&z(9_h8IggE!xT?%_yKLj_v_KYD?6M8}MT;G_7`zZIW;3Hdfuoy? z;jyOZx>qti&Ww~YE*Fczr<;qGwbnIde5Q{S+Z8aMET-WSUEkG1=)pchBQh*s37Tkf)Et~5~R zipDPOX;u%)7$?iEn&J&H;&q@!MA4i!4zEw$49Pogv_t$JPplmjlTk{b4fm41fC z!w}_HDEv9QSEyOhUM&Dyt}MQg6)W1zHjS(4(sO$?gXZSJz>3Opg$;{R{KhS{W_g2J z@obUj6Ml|Spg&*ap|gG|R~GKv9xF0Bnc~DJH?J_4_+|;4|5fx_u{R(wGe7<%R;186 zIPr-uK2D@C_|}ofv0J=&zSb3%G{Ej=yFi)NpG`WW4CYRYF&9}0T!oIZvSN*S8MgEl zg;v9n-bKpBu1xZJT>VB;k5RorGW_ZXt7^(DBaEad1&X9FtyuJ+-&e0}0BozECzUwH z9vXQpF%fPe0_aT;)wa&qB#}fv)5r@8v3k3V$raSn2d$R!GdKMgjTbpjYIylJf z4-V3mv2aDA$ez$&J1acm>wcjzL=_5BK+-3zr7~Q+S4Dg9jQnNa=skEnQH+9CALGat z;t86S8OQO*79w38#U_cI0h-0%AR*r+Zj?&dnfFf2le994ymIdQjZ(XJk=s#51LC0{ zG)Od~v}PoWBno_Yl1LV(bYnAEpbG6;6|WmIj$$LOw@>F41~P5-2T{{x%ZL|M9!0 zrFbODH1_Qbh}`VC+}=_oM|v%2BZGd}&=j{2ixK;;O!>=D# z`18D;{=^~t+O{if!XG#~jm5FBMbDu#O{C?RbQBu@6Sn9-D*lH(qu=adE}&{eFZvHj zC-_F1Xk(c0!+boSM#JRAgmg)a|C=Ofw@dst`TuSK$+o?3(S~ilQ~ERX8t~9>ySJJR zerkz%Zwkocn72k!Usw8>CM8U7aaX!%T5B4Ye+yNk{StlHpj4~K6W#S|z@_HC$)P51 zt>ge}rUx#1qtrKf1T4p0nbYAh4&I`hZ5jt|DDKo(Gx!3cmn1QHl~v5CB7oeX&NE$i z$IsHF)U+r=bg`Yo9T_5CrX0GAgyyOS3`5>>-ey8H{x3tc?O+-`H-x-CR0@;&vc-RB zlecRnT7;=@3~41&Q+XR%3YVxnAMl;Bgi!gl@9tKjzAfEHsH7h&UM?}I2lj6x zT8}r4(ssPx{SGOu;Fh-6tkmfZs%`0Xc-ar39n(@1*SZSPRL0Vlo7^y0(2Gg&ti$IqfSQ>3b+U6~?D9UaRQoox4F{kGDG(efO&Zz~2X3g>JqzRDrd zjG?>4mt$nO=hYFKRw%F*4`1aKq%lsu9D~c-iMT|Qj0OGsurZ52fKl?b)bgw0acxw-;{c`cI`(KawR@(*O-Rj+xmaM;`fZ&lWDA>3n~m z^0>N;_xCG@w|8iTJDAeYJ^L+ULz5SM&Wby7`!zGKUzMZR>|?4x3Ypulj(O;${||n(yQ=oYS4f-(g547UhbWFnYajPp$~F**g2)&l3<1qc7uu ze7Z3GckIwl)Y&%rUh5~)Z1uX;J=ti-@4hek3*aAH8twSa_w@k!Ve97mZlFl8iEedU zeGLYQI6l*Iu&8H?+LGFJmPFtEc1pjxjZMe*_vH-{?QFKKIBTfDrknM({_+|c!^F1+ zzZZWPCLXnI_0Ul94VI5L%y2PVk{W)J@1YcE`CqW1QF|Vj2Hd+`hO;fse=AC znIf9=bLmsXR&_tVH(mTvf2;i7duTIkF}_nXLO=lJ)uB9Q>p>zWeL zQW#G*THDL#DHZ+smg8ljkIi_pX|oQ#_zLlJzgKj#ZT78OK{w%oRiY!znC^RI zl~`hV;G)3a%hi$vcSkBb>RF#WfQ?KZmS`+te+wmkgy zNwJ^KzO-F@2ew@7_iqt{uRJa8ZP>NWnu1w1knUUXZ}FLp?jNyJyh*8Dgx~RuLA9_=qt|t@bm*U;cjI-G2 zbJ5hd_$`rSv*r3Wye$Ut+W2&j7|Jhcy;lJJ#i)Ivxv$p;;(b0@|DY(LrH|_lQ+F>M z6pgX&kSG&*H1^jI5&Ok&Ul2|3k;C-gh$CV>J#qSosI>W>eM#im@WO67Km4fpLUf`B zIv*2X(w4-8kHj&$@#059@DBa)W8SHq@XV(o79&0pH|Sc#r{XOUv32eGTYfzA!+TX_ zv*s387pj-qx@?R2OxPOMX&YmKvN1k>iFbAvoPSm{j`(`xqiff0y6(&FA!i1Y&WKA5 zw={YzR{d=LxmeMlo5s+_&7TW+&S^R8m(%KxE7g>-6pFsjTisE;n>`592gM8n-+cTr#v9o{59j_10Xw V#h5 - +

    - +

    Function: void rl_redisplay (void)
    Change what's displayed on the screen to reflect the current contents @@ -3317,7 +3304,7 @@ of rl_line_buffer.

    - +

    Function: int rl_forced_update_display (void)
    Force the line to be updated and redisplayed, whether or not @@ -3325,7 +3312,7 @@ Readline thinks the screen display is correct.

    - +

    Function: int rl_on_new_line (void)
    Tell the update functions that we have moved onto a new (empty) line, @@ -3333,7 +3320,7 @@ usually after ouputting a newline.

    - +

    Function: int rl_on_new_line_with_prompt (void)
    Tell the update functions that we have moved onto a new line, with @@ -3345,7 +3332,7 @@ It should be used after setting rl_already_prompted.

    - +

    Function: int rl_reset_line_state (void)
    Reset the display state to a clean state and redisplay the current line @@ -3353,14 +3340,14 @@ starting on a new line.

    - +

    Function: int rl_crlf (void)
    Move the cursor to the start of the next screen line.

    - +

    Function: int rl_show_char (int c)
    Display character c on rl_outstream. @@ -3371,7 +3358,7 @@ redisplay.

    - +

    Function: int rl_message (const char *, ...)
    The arguments are a format string as would be supplied to printf, @@ -3384,7 +3371,7 @@ before calling this function.

    - +

    Function: int rl_clear_message (void)
    Clear the message in the echo area. If the prompt was saved with a call to @@ -3393,7 +3380,7 @@ call rl_restore_prompt before calling this function.

    - +

    Function: void rl_save_prompt (void)
    Save the local Readline prompt display state in preparation for @@ -3401,7 +3388,7 @@ displaying a new message in the message area with rl_message().

    - +

    Function: void rl_restore_prompt (void)
    Restore the local Readline prompt display state saved by the most @@ -3412,7 +3399,7 @@ corresponding call to rl_clear_message.

    - +

    Function: int rl_expand_prompt (char *prompt)
    Expand any special character sequences in prompt and set up the @@ -3430,7 +3417,7 @@ be used to embed terminal-specific escape sequences in prompts.

    - +

    Function: int rl_set_prompt (const char *prompt)
    Make Readline use prompt for subsequent redisplay. This calls @@ -3457,7 +3444,7 @@ to the result.

    - +

    Function: int rl_insert_text (const char *text)
    Insert text into the line at the current cursor position. @@ -3465,7 +3452,7 @@ Returns the number of characters inserted.

    - +

    Function: int rl_delete_text (int start, int end)
    Delete the text between start and end in the current line. @@ -3473,7 +3460,7 @@ Returns the number of characters deleted.

    - +

    Function: char * rl_copy_text (int start, int end)
    Return a copy of the text between start and end in @@ -3481,7 +3468,7 @@ the current line.

    - +

    Function: int rl_kill_text (int start, int end)
    Copy the text between start and end in the current line @@ -3493,7 +3480,7 @@ not a kill, a new kill ring slot is used.

    - +

    Function: int rl_push_macro_input (char *macro)
    Cause macro to be inserted into the line, as if it had been invoked @@ -3520,7 +3507,7 @@ by a key bound to a macro. Not especially useful; use

    - +

    Function: int rl_read_key (void)
    Return the next character available from Readline's current input stream. @@ -3532,7 +3519,7 @@ the rl_event_hook variable.

    - +

    Function: int rl_getc (FILE *stream)
    Return the next character available from stream, which is assumed to @@ -3540,7 +3527,7 @@ be the keyboard.

    - +

    Function: int rl_stuff_char (int c)
    Insert c into the Readline input stream. It will be "read" @@ -3551,7 +3538,7 @@ before Readline attempts to read characters from the terminal with

    - +

    Function: int rl_execute_next (int c)
    Make c be the next command to be executed when rl_read_key() @@ -3559,7 +3546,7 @@ is called. This sets rl_pending_input.

    - +

    Function: int rl_clear_pending_input (void)
    Unset rl_pending_input, effectively negating the effect of any @@ -3568,7 +3555,7 @@ pending input has not already been read with rl_read_key().

    - +

    Function: int rl_set_keyboard_input_timeout (int u)
    While waiting for keyboard input in rl_read_key(), Readline will @@ -3598,7 +3585,7 @@ Returns the old timeout value.

    - +

    Function: void rl_prep_terminal (int meta_flag)
    Modify the terminal settings for Readline's use, so readline() @@ -3608,7 +3595,7 @@ read eight-bit input.

    - +

    Function: void rl_deprep_terminal (void)
    Undo the effects of rl_prep_terminal(), leaving the terminal in @@ -3617,7 +3604,7 @@ the state in which it was before the most recent call to

    - +

    Function: void rl_tty_set_default_bindings (Keymap kmap)
    Read the operating system's terminal editing characters (as would be @@ -3626,7 +3613,7 @@ The bindings are performed in kmap.

    - +

    Function: void rl_tty_unset_default_bindings (Keymap kmap)
    Reset the bindings manipulated by rl_tty_set_default_bindings so @@ -3635,7 +3622,7 @@ The bindings are performed in kmap.

    - +

    Function: int rl_reset_terminal (const char *terminal_name)
    Reinitialize Readline's idea of the terminal settings using @@ -3663,15 +3650,7 @@ environment variable is used.

    - -

    -
    Function: void rl_free (void *mem) -
    Deallocate the memory pointed to by mem. mem must have been -allocated by malloc. -
    -

    - - +

    Function: void rl_replace_line (const char *text, int clear_undo)
    Replace the contents of rl_line_buffer with text. @@ -3681,7 +3660,7 @@ current line is cleared.

    - +

    Function: int rl_extend_line_buffer (int len)
    Ensure that rl_line_buffer has enough space to hold len @@ -3689,7 +3668,7 @@ characters, possibly reallocating it if necessary.

    - +

    Function: int rl_initialize (void)
    Initialize or re-initialize Readline's internal state. @@ -3698,21 +3677,21 @@ reading any input.

    - +

    Function: int rl_ding (void)
    Ring the terminal bell, obeying the setting of bell-style.

    - +

    Function: int rl_alphabetic (int c)
    Return 1 if c is an alphabetic character.

    - +

    Function: void rl_display_match_list (char **matches, int len, int max)
    A convenience function for displaying a list of strings in @@ -3729,28 +3708,28 @@ The following are implemented as macros, defined in chardefs.h. Applications should refrain from using them.

    - +

    Function: int _rl_uppercase_p (int c)
    Return 1 if c is an uppercase alphabetic character.

    - +

    Function: int _rl_lowercase_p (int c)
    Return 1 if c is a lowercase alphabetic character.

    - +

    Function: int _rl_digit_p (int c)
    Return 1 if c is a numeric character.

    - +

    Function: int _rl_to_upper (int c)
    If c is a lowercase alphabetic character, return the corresponding @@ -3758,7 +3737,7 @@ uppercase character.

    - +

    Function: int _rl_to_lower (int c)
    If c is an uppercase alphabetic character, return the corresponding @@ -3766,7 +3745,7 @@ lowercase character.

    - +

    Function: int _rl_digit_value (int c)
    If c is a number, return the value it represents. @@ -3791,7 +3770,7 @@ lowercase character.

    - +

    Function: int rl_macro_bind (const char *keyseq, const char *macro, Keymap map)
    Bind the key sequence keyseq to invoke the macro macro. @@ -3801,7 +3780,7 @@ use rl_generic_bind() instead.

    - +

    Function: void rl_macro_dumper (int readable)
    Print the key sequences bound to macros and their values, using @@ -3811,7 +3790,7 @@ that it can be made part of an inputrc file and re-read.

    - +

    Function: int rl_variable_bind (const char *variable, const char *value)
    Make the Readline variable variable have value. @@ -3821,7 +3800,7 @@ file (see section 1.3.1 Readline Init File Syntax<

    - +

    Function: char * rl_variable_value (const char *variable)
    Return a string representing the value of the Readline variable variable. @@ -3829,7 +3808,7 @@ For boolean variables, this string is either `on' or `off'

    - +

    Function: void rl_variable_dumper (int readable)
    Print the readline variable names and their current values @@ -3839,7 +3818,7 @@ that it can be made part of an inputrc file and re-read.

    - +

    Function: int rl_set_paren_blink_timeout (int u)
    Set the time interval (in microseconds) that Readline waits when showing @@ -3847,7 +3826,7 @@ a balancing character when blink-matching-paren has been enabled.

    - +

    Function: char * rl_get_termcap (const char *cap)
    Retrieve the string value of the termcap capability cap. @@ -3885,7 +3864,7 @@ also be invoked as a `callback' function from an event loop. There are functions available to make this easy.

    - +

    Function: void rl_callback_handler_install (const char *prompt, rl_vcpfunc_t *lhandler)
    Set up the terminal for readline I/O and display the initial @@ -3895,7 +3874,7 @@ The function takes the text of the line as an argument.

    - +

    Function: void rl_callback_read_char (void)
    Whenever an application determines that keyboard input is available, it @@ -3914,7 +3893,7 @@ the terminal settings are modified for Readline's use again.

    - +

    Function: void rl_callback_handler_remove (void)
    Restore the terminal to its initial state and remove the line handler. @@ -4072,7 +4051,7 @@ values of these variables only when calling readline(), not in a signal handler, so Readline's internal signal state is not corrupted.

    - +

    Variable: int rl_catch_signals
    If this variable is non-zero, Readline will install signal handlers for @@ -4084,7 +4063,7 @@ The default value of rl_catch_signals is 1.

    - +

    Variable: int rl_catch_sigwinch
    If this variable is non-zero, Readline will install a signal handler for @@ -4102,7 +4081,7 @@ Readline provides convenience functions to do the necessary terminal and internal state cleanup upon receipt of a signal.

    - +

    Function: void rl_cleanup_after_signal (void)
    This function will reset the state of the terminal to what it was before @@ -4112,7 +4091,7 @@ all signals, depending on the values of rl_catch_signals and

    - +

    Function: void rl_free_line_state (void)
    This will free any partial state associated with the current input line @@ -4124,7 +4103,7 @@ current input line.

    - +

    Function: void rl_reset_after_signal (void)
    This will reinitialize the terminal and reinstall any Readline signal @@ -4139,14 +4118,14 @@ Readline to update its idea of the terminal size when a SIGWINCH is received.

    - +

    Function: void rl_resize_terminal (void)
    Update Readline's internal screen size by reading values from the kernel.

    - +

    Function: void rl_set_screen_size (int rows, int cols)
    Set Readline's idea of the terminal size to rows rows and @@ -4160,7 +4139,7 @@ is still interested in the screen dimensions, Readline's idea of the screen size may be queried.

    - +

    Function: void rl_get_screen_size (int *rows, int *cols)
    Return Readline's idea of the terminal's size in the @@ -4168,7 +4147,7 @@ variables pointed to by the arguments.

    - +

    Function: void rl_reset_screen_size (void)
    Cause Readline to reobtain the screen size and recalculate its dimensions. @@ -4178,7 +4157,7 @@ variables pointed to by the arguments. The following functions install and remove Readline's signal handlers.

    - +

    Function: int rl_set_signals (void)
    Install Readline's signal handler for SIGINT, SIGQUIT, @@ -4188,7 +4167,7 @@ The following functions install and remove Readline's signal handlers.

    - +

    Function: int rl_clear_signals (void)
    Remove all of the Readline signal handlers installed by @@ -4301,7 +4280,7 @@ Such a generator function is referred to as an

    - +

    Function: int rl_complete (int ignore, int invoking_key)
    Complete the word at or before point. You have supplied the function @@ -4310,7 +4289,7 @@ that does the initial simple matching selection algorithm (see

    - +

    Variable: rl_compentry_func_t * rl_completion_entry_function
    This is a pointer to the generator function for @@ -4346,7 +4325,7 @@ Here is the complete list of callable completion functions present in Readline.

    - +

    Function: int rl_complete_internal (int what_to_do)
    Complete the word at or before point. what_to_do says what to do @@ -4360,7 +4339,7 @@ a common prefix.

    - +

    Function: int rl_complete (int ignore, int invoking_key)
    Complete the word at or before point. You have supplied the function @@ -4372,7 +4351,7 @@ argument depending on invoking_key.

    - +

    Function: int rl_possible_completions (int count, int invoking_key)
    List the possible completions. See description of rl_complete @@ -4381,7 +4360,7 @@ argument depending on invoking_key.

    - +

    Function: int rl_insert_completions (int count, int invoking_key)
    Insert the list of possible completions into the line, deleting the @@ -4390,7 +4369,7 @@ This calls rl_complete_internal() with an argument of `*'

    - +

    Function: int rl_completion_mode (rl_command_func_t *cfunc)
    Returns the apppriate value to pass to rl_complete_internal() @@ -4402,7 +4381,7 @@ the same interface as rl_complete().

    - +

    Function: char ** rl_completion_matches (const char *text, rl_compentry_func_t *entry_func)
    Returns an array of strings which is a list of completions for @@ -4420,7 +4399,7 @@ when there are no more matches.

    - +

    Function: char * rl_filename_completion_function (const char *text, int state)
    A generator function for filename completion in the general case. @@ -4431,7 +4410,7 @@ Readline functions).

    - +

    Function: char * rl_username_completion_function (const char *text, int state)
    A completion generator for usernames. text contains a partial @@ -4459,7 +4438,7 @@ for subsequent calls.

    - +

    Variable: rl_compentry_func_t * rl_completion_entry_function
    A pointer to the generator function for rl_completion_matches(). @@ -4468,7 +4447,7 @@ the default filename completer.

    - +

    Variable: rl_completion_func_t * rl_attempted_completion_function
    A pointer to an alternative function to create matches. @@ -4485,7 +4464,7 @@ completion even if this function returns no matches.

    - +

    Variable: rl_quote_func_t * rl_filename_quoting_function
    A pointer to a function that will quote a filename in an @@ -4502,7 +4481,7 @@ to reset this character.

    - +

    Variable: rl_dequote_func_t * rl_filename_dequoting_function
    A pointer to a function that will remove application-specific quoting @@ -4515,7 +4494,7 @@ that delimits the filename (usually `'' or `"'). If

    - +

    Variable: rl_linebuf_func_t * rl_char_is_quoted_p
    A pointer to a function to call that determines whether or not a specific @@ -4528,7 +4507,7 @@ used to break words for the completer.

    - +

    Variable: rl_compignore_func_t * rl_ignore_some_completions_function
    This function, if defined, is called by the completer when real filename @@ -4541,7 +4520,7 @@ from the array must be freed.

    - +

    Variable: rl_icppfunc_t * rl_directory_completion_hook
    This function, if defined, is allowed to modify the directory portion @@ -4560,7 +4539,7 @@ be passed directly to opendir().

    - +

    Variable: rl_compdisp_func_t * rl_completion_display_matches_hook
    If non-zero, then this is the address of a function to call when @@ -4577,7 +4556,7 @@ function may be called from this hook.

    - +

    Variable: const char * rl_basic_word_break_characters
    The basic list of characters that signal a break between words for the @@ -4587,14 +4566,14 @@ which break words for completion in Bash:

    - +

    Variable: const char * rl_basic_quote_characters
    A list of quote characters which can cause a word break.

    - +

    Variable: const char * rl_completer_word_break_characters
    The list of characters that signal a break between words for @@ -4603,7 +4582,7 @@ which break words for completion in Bash:

    - +

    Variable: rl_cpvfunc_t * rl_completion_word_break_hook
    If non-zero, this is the address of a function to call when Readline is @@ -4615,7 +4594,7 @@ returns NULL, rl_completer_word_break_characters is us

    - +

    Variable: const char * rl_completer_quote_characters
    A list of characters which can be used to quote a substring of the line. @@ -4625,7 +4604,7 @@ unless they also appear within this list.

    - +

    Variable: const char * rl_filename_quote_characters
    A list of characters that cause a filename to be quoted by the completer @@ -4633,7 +4612,7 @@ when they appear in a completed filename. The default is the null string.

    - +

    Variable: const char * rl_special_prefixes
    The list of characters that are word break characters, but should be @@ -4644,7 +4623,7 @@ shell variables and hostnames.

    - +

    Variable: int rl_completion_query_items
    Up to this many items will be displayed in response to a @@ -4654,7 +4633,7 @@ indicates that Readline should never ask the user.

    - +

    Variable: int rl_completion_append_character
    When a single completion alternative matches at the end of the command @@ -4667,7 +4646,7 @@ an application-specific command line syntax specification.

    - +

    Variable: int rl_completion_suppress_append
    If non-zero, rl_completion_append_character is not appended to @@ -4677,7 +4656,7 @@ is called, and may only be changed within such a function.

    - +

    Variable: int rl_completion_quote_character
    When Readline is completing quoted text, as delimited by one of the @@ -4687,7 +4666,7 @@ This is set before any application-specific completion function is called.

    - +

    Variable: int rl_completion_suppress_quote
    If non-zero, Readline does not append a matching quote character when @@ -4697,7 +4676,7 @@ is called, and may only be changed within such a function.

    - +

    Variable: int rl_completion_found_quote
    When Readline is completing quoted text, it sets this variable @@ -4707,7 +4686,7 @@ This is set before any application-specific completion function is called.

    - +

    Variable: int rl_completion_mark_symlink_dirs
    If non-zero, a slash will be appended to completed filenames that are @@ -4722,7 +4701,7 @@ function modifies the value, the user's preferences are honored.

    - +

    Variable: int rl_ignore_completion_duplicates
    If non-zero, then duplicates in the matches are removed. @@ -4730,7 +4709,7 @@ The default is 1.

    - +

    Variable: int rl_filename_completion_desired
    Non-zero means that the results of the matches are to be treated as @@ -4744,7 +4723,7 @@ characters in rl_filename_quote_characters and

    - +

    Variable: int rl_filename_quoting_desired
    Non-zero means that the results of the matches are to be quoted using @@ -4758,7 +4737,7 @@ by rl_filename_quoting_function.

    - +

    Variable: int rl_attempted_completion_over
    If an application-specific completion function assigned to @@ -4769,19 +4748,7 @@ It should be set only by an application's completion function.

    - -

    -
    Variable: int rl_sort_completion_matches -
    If an application sets this variable to 0, Readline will not sort the -list of completions (which implies that it cannot remove any duplicate -completions). The default value is 1, which means that Readline will -sort the completions and, depending on the value of -rl_ignore_completion_duplicates, will attempt to remove duplicate -matches. -
    -

    - - +

    Variable: int rl_completion_type
    Set to a character describing the type of completion Readline is currently @@ -4793,17 +4760,7 @@ the same interface as rl_complete().

    - -

    -
    Variable: int rl_completion_invoking_key -
    Set to the final character in the key sequence that invoked one of the -completion functions that call rl_complete_internal(). This is -set to the appropriate value before any application-specific completion -function is called. -
    -

    - - +

    Variable: int rl_inhibit_completion
    If this variable is non-zero, completion is inhibited. The completion @@ -5314,7 +5271,7 @@ valid_argument (caller, arg)

    - +

    Version 1.2, November 2002
    @@ -5884,7 +5841,7 @@ to permit their use in free software.
    editing command lines1.2.1 Readline Bare Essentials

    F
    FDL, GNU Free Documentation LicenseA.1 GNU Free Documentation License
    FDL, GNU Free Documentation LicenseA.1 GNU Free Documentation License

    I
    initialization file, readline1.3 Readline Init File
    Index Entry Section

    _
    _rl_digit_p2.4.10 Utility Functions
    _rl_digit_value2.4.10 Utility Functions
    _rl_lowercase_p2.4.10 Utility Functions
    _rl_to_lower2.4.10 Utility Functions
    _rl_to_upper2.4.10 Utility Functions
    _rl_uppercase_p2.4.10 Utility Functions
    _rl_digit_p2.4.10 Utility Functions
    _rl_digit_value2.4.10 Utility Functions
    _rl_lowercase_p2.4.10 Utility Functions
    _rl_to_lower2.4.10 Utility Functions
    _rl_to_upper2.4.10 Utility Functions
    _rl_uppercase_p2.4.10 Utility Functions

    A
    abort (C-g)1.4.8 Some Miscellaneous Commands
    reverse-search-history (C-r)1.4.2 Commands For Manipulating The History
    revert-line (M-r)1.4.8 Some Miscellaneous Commands
    revert-line (M-r)1.4.8 Some Miscellaneous Commands
    rl_add_defun2.4.1 Naming a Function
    rl_add_funmap_entry2.4.4 Associating Function Names and Bindings
    rl_add_undo2.4.5 Allowing Undoing
    rl_alphabetic2.4.10 Utility Functions
    rl_already_prompted2.3 Readline Variables
    rl_attempted_completion_function2.6.3 Completion Variables
    rl_attempted_completion_over2.6.3 Completion Variables
    rl_basic_quote_characters2.6.3 Completion Variables
    rl_basic_word_break_characters2.6.3 Completion Variables
    rl_begin_undo_group2.4.5 Allowing Undoing
    rl_bind_key2.4.3 Binding Keys
    rl_bind_key_if_unbound2.4.3 Binding Keys
    rl_bind_key_if_unbound_in_map2.4.3 Binding Keys
    rl_bind_key_in_map2.4.3 Binding Keys
    rl_bind_keyseq2.4.3 Binding Keys
    rl_bind_keyseq_if_unbound2.4.3 Binding Keys
    rl_bind_keyseq_if_unbound_in_map2.4.3 Binding Keys
    rl_bind_keyseq_in_map2.4.3 Binding Keys
    rl_binding_keymap2.3 Readline Variables
    rl_callback_handler_install2.4.12 Alternate Interface
    rl_callback_handler_remove2.4.12 Alternate Interface
    rl_callback_read_char2.4.12 Alternate Interface
    rl_catch_signals2.5 Readline Signal Handling
    rl_catch_sigwinch2.5 Readline Signal Handling
    rl_char_is_quoted_p2.6.3 Completion Variables
    rl_cleanup_after_signal2.5 Readline Signal Handling
    rl_clear_message2.4.6 Redisplay
    rl_clear_pending_input2.4.8 Character Input
    rl_clear_signals2.5 Readline Signal Handling
    rl_complete2.6.1 How Completing Works
    rl_complete2.6.2 Completion Functions
    rl_complete_internal2.6.2 Completion Functions
    rl_completer_quote_characters2.6.3 Completion Variables
    rl_completer_word_break_characters2.6.3 Completion Variables
    rl_completion_append_character2.6.3 Completion Variables
    rl_completion_display_matches_hook2.6.3 Completion Variables
    rl_completion_entry_function2.6.1 How Completing Works
    rl_completion_entry_function2.6.3 Completion Variables
    rl_completion_found_quote2.6.3 Completion Variables
    rl_completion_invoking_key2.6.3 Completion Variables
    rl_completion_mark_symlink_dirs2.6.3 Completion Variables
    rl_completion_matches2.6.2 Completion Functions
    rl_completion_mode2.6.2 Completion Functions
    rl_completion_query_items2.6.3 Completion Variables
    rl_completion_quote_character2.6.3 Completion Variables
    rl_completion_suppress_append2.6.3 Completion Variables
    rl_completion_suppress_quote2.6.3 Completion Variables
    rl_completion_type2.6.3 Completion Variables
    rl_completion_word_break_hook2.6.3 Completion Variables
    rl_copy_keymap2.4.2 Selecting a Keymap
    rl_copy_text2.4.7 Modifying Text
    rl_crlf2.4.6 Redisplay
    rl_delete_text2.4.7 Modifying Text
    rl_deprep_term_function2.3 Readline Variables
    rl_deprep_terminal2.4.9 Terminal Management
    rl_ding2.4.10 Utility Functions
    rl_directory_completion_hook2.6.3 Completion Variables
    rl_discard_keymap2.4.2 Selecting a Keymap
    rl_add_defun2.4.1 Naming a Function
    rl_add_funmap_entry2.4.4 Associating Function Names and Bindings
    rl_add_undo2.4.5 Allowing Undoing
    rl_alphabetic2.4.10 Utility Functions
    rl_already_prompted2.3 Readline Variables
    rl_attempted_completion_function2.6.3 Completion Variables
    rl_attempted_completion_over2.6.3 Completion Variables
    rl_basic_quote_characters2.6.3 Completion Variables
    rl_basic_word_break_characters2.6.3 Completion Variables
    rl_begin_undo_group2.4.5 Allowing Undoing
    rl_bind_key2.4.3 Binding Keys
    rl_bind_key_if_unbound2.4.3 Binding Keys
    rl_bind_key_if_unbound_in_map2.4.3 Binding Keys
    rl_bind_key_in_map2.4.3 Binding Keys
    rl_bind_keyseq2.4.3 Binding Keys
    rl_bind_keyseq_if_unbound2.4.3 Binding Keys
    rl_bind_keyseq_if_unbound_in_map2.4.3 Binding Keys
    rl_bind_keyseq_in_map2.4.3 Binding Keys
    rl_binding_keymap2.3 Readline Variables
    rl_callback_handler_install2.4.12 Alternate Interface
    rl_callback_handler_remove2.4.12 Alternate Interface
    rl_callback_read_char2.4.12 Alternate Interface
    rl_catch_signals2.5 Readline Signal Handling
    rl_catch_sigwinch2.5 Readline Signal Handling
    rl_char_is_quoted_p2.6.3 Completion Variables
    rl_cleanup_after_signal2.5 Readline Signal Handling
    rl_clear_message2.4.6 Redisplay
    rl_clear_pending_input2.4.8 Character Input
    rl_clear_signals2.5 Readline Signal Handling
    rl_complete2.6.1 How Completing Works
    rl_complete2.6.2 Completion Functions
    rl_complete_internal2.6.2 Completion Functions
    rl_completer_quote_characters2.6.3 Completion Variables
    rl_completer_word_break_characters2.6.3 Completion Variables
    rl_completion_append_character2.6.3 Completion Variables
    rl_completion_display_matches_hook2.6.3 Completion Variables
    rl_completion_entry_function2.6.1 How Completing Works
    rl_completion_entry_function2.6.3 Completion Variables
    rl_completion_found_quote2.6.3 Completion Variables
    rl_completion_mark_symlink_dirs2.6.3 Completion Variables
    rl_completion_matches2.6.2 Completion Functions
    rl_completion_mode2.6.2 Completion Functions
    rl_completion_query_items2.6.3 Completion Variables
    rl_completion_quote_character2.6.3 Completion Variables
    rl_completion_suppress_append2.6.3 Completion Variables
    rl_completion_suppress_quote2.6.3 Completion Variables
    rl_completion_type2.6.3 Completion Variables
    rl_completion_word_break_hook2.6.3 Completion Variables
    rl_copy_keymap2.4.2 Selecting a Keymap
    rl_copy_text2.4.7 Modifying Text
    rl_crlf2.4.6 Redisplay
    rl_delete_text2.4.7 Modifying Text
    rl_deprep_term_function2.3 Readline Variables
    rl_deprep_terminal2.4.9 Terminal Management
    rl_ding2.4.10 Utility Functions
    rl_directory_completion_hook2.6.3 Completion Variables
    rl_discard_keymap2.4.2 Selecting a Keymap
    rl_dispatching2.3 Readline Variables
    rl_display_match_list2.4.10 Utility Functions
    rl_display_prompt2.3 Readline Variables
    rl_do_undo2.4.5 Allowing Undoing
    rl_display_match_list2.4.10 Utility Functions
    rl_do_undo2.4.5 Allowing Undoing
    rl_done2.3 Readline Variables
    rl_editing_mode2.3 Readline Variables
    rl_editing_mode2.3 Readline Variables
    rl_end2.3 Readline Variables
    rl_end_undo_group2.4.5 Allowing Undoing
    rl_end_undo_group2.4.5 Allowing Undoing
    rl_erase_empty_line2.3 Readline Variables
    rl_event_hook2.3 Readline Variables
    rl_execute_next2.4.8 Character Input
    rl_executing_keymap2.3 Readline Variables
    rl_executing_macro2.3 Readline Variables
    rl_expand_prompt2.4.6 Redisplay
    rl_explicit_arg2.3 Readline Variables
    rl_extend_line_buffer2.4.10 Utility Functions
    rl_filename_completion_desired2.6.3 Completion Variables
    rl_filename_completion_function2.6.2 Completion Functions
    rl_filename_dequoting_function2.6.3 Completion Variables
    rl_filename_quote_characters2.6.3 Completion Variables
    rl_filename_quoting_desired2.6.3 Completion Variables
    rl_filename_quoting_function2.6.3 Completion Variables
    rl_forced_update_display2.4.6 Redisplay
    rl_free2.4.10 Utility Functions
    rl_free_line_state2.5 Readline Signal Handling
    rl_free_undo_list2.4.5 Allowing Undoing
    rl_function_dumper2.4.4 Associating Function Names and Bindings
    rl_function_of_keyseq2.4.4 Associating Function Names and Bindings
    rl_funmap_names2.4.4 Associating Function Names and Bindings
    rl_generic_bind2.4.3 Binding Keys
    rl_get_keymap2.4.2 Selecting a Keymap
    rl_get_keymap_by_name2.4.2 Selecting a Keymap
    rl_get_keymap_name2.4.2 Selecting a Keymap
    rl_get_screen_size2.5 Readline Signal Handling
    rl_get_termcap2.4.11 Miscellaneous Functions
    rl_getc2.4.8 Character Input
    rl_getc_function2.3 Readline Variables
    rl_gnu_readline_p2.3 Readline Variables
    rl_ignore_completion_duplicates2.6.3 Completion Variables
    rl_ignore_some_completions_function2.6.3 Completion Variables
    rl_inhibit_completion2.6.3 Completion Variables
    rl_initialize2.4.10 Utility Functions
    rl_insert_completions2.6.2 Completion Functions
    rl_insert_text2.4.7 Modifying Text
    rl_instream2.3 Readline Variables
    rl_invoking_keyseqs2.4.4 Associating Function Names and Bindings
    rl_invoking_keyseqs_in_map2.4.4 Associating Function Names and Bindings
    rl_kill_text2.4.7 Modifying Text
    rl_last_func2.3 Readline Variables
    rl_library_version2.3 Readline Variables
    rl_event_hook2.3 Readline Variables
    rl_execute_next2.4.8 Character Input
    rl_executing_keymap2.3 Readline Variables
    rl_executing_macro2.3 Readline Variables
    rl_expand_prompt2.4.6 Redisplay
    rl_explicit_arg2.3 Readline Variables
    rl_extend_line_buffer2.4.10 Utility Functions
    rl_filename_completion_desired2.6.3 Completion Variables
    rl_filename_completion_function2.6.2 Completion Functions
    rl_filename_dequoting_function2.6.3 Completion Variables
    rl_filename_quote_characters2.6.3 Completion Variables
    rl_filename_quoting_desired2.6.3 Completion Variables
    rl_filename_quoting_function2.6.3 Completion Variables
    rl_forced_update_display2.4.6 Redisplay
    rl_free_line_state2.5 Readline Signal Handling
    rl_free_undo_list2.4.5 Allowing Undoing
    rl_function_dumper2.4.4 Associating Function Names and Bindings
    rl_function_of_keyseq2.4.4 Associating Function Names and Bindings
    rl_funmap_names2.4.4 Associating Function Names and Bindings
    rl_generic_bind2.4.3 Binding Keys
    rl_get_keymap2.4.2 Selecting a Keymap
    rl_get_keymap_by_name2.4.2 Selecting a Keymap
    rl_get_keymap_name2.4.2 Selecting a Keymap
    rl_get_screen_size2.5 Readline Signal Handling
    rl_get_termcap2.4.11 Miscellaneous Functions
    rl_getc2.4.8 Character Input
    rl_getc_function2.3 Readline Variables
    rl_gnu_readline_p2.3 Readline Variables
    rl_ignore_completion_duplicates2.6.3 Completion Variables
    rl_ignore_some_completions_function2.6.3 Completion Variables
    rl_inhibit_completion2.6.3 Completion Variables
    rl_initialize2.4.10 Utility Functions
    rl_insert_completions2.6.2 Completion Functions
    rl_insert_text2.4.7 Modifying Text
    rl_instream2.3 Readline Variables
    rl_invoking_keyseqs2.4.4 Associating Function Names and Bindings
    rl_invoking_keyseqs_in_map2.4.4 Associating Function Names and Bindings
    rl_kill_text2.4.7 Modifying Text
    rl_last_func2.3 Readline Variables
    rl_library_version2.3 Readline Variables
    rl_line_buffer2.3 Readline Variables
    rl_list_funmap_names2.4.4 Associating Function Names and Bindings
    rl_macro_bind2.4.11 Miscellaneous Functions
    rl_macro_dumper2.4.11 Miscellaneous Functions
    rl_make_bare_keymap2.4.2 Selecting a Keymap
    rl_make_keymap2.4.2 Selecting a Keymap
    rl_list_funmap_names2.4.4 Associating Function Names and Bindings
    rl_macro_bind2.4.11 Miscellaneous Functions
    rl_macro_dumper2.4.11 Miscellaneous Functions
    rl_make_bare_keymap2.4.2 Selecting a Keymap
    rl_make_keymap2.4.2 Selecting a Keymap
    rl_mark2.3 Readline Variables
    rl_message2.4.6 Redisplay
    rl_modifying2.4.5 Allowing Undoing
    rl_named_function2.4.4 Associating Function Names and Bindings
    rl_message2.4.6 Redisplay
    rl_modifying2.4.5 Allowing Undoing
    rl_named_function2.4.4 Associating Function Names and Bindings
    rl_num_chars_to_read2.3 Readline Variables
    rl_numeric_arg2.3 Readline Variables
    rl_on_new_line2.4.6 Redisplay
    rl_on_new_line_with_prompt2.4.6 Redisplay
    rl_outstream2.3 Readline Variables
    rl_parse_and_bind2.4.3 Binding Keys
    rl_numeric_arg2.3 Readline Variables
    rl_on_new_line2.4.6 Redisplay
    rl_on_new_line_with_prompt2.4.6 Redisplay
    rl_outstream2.3 Readline Variables
    rl_parse_and_bind2.4.3 Binding Keys
    rl_pending_input2.3 Readline Variables
    rl_point2.3 Readline Variables
    rl_possible_completions2.6.2 Completion Functions
    rl_pre_input_hook2.3 Readline Variables
    rl_prefer_env_winsize2.3 Readline Variables
    rl_prep_term_function2.3 Readline Variables
    rl_prep_terminal2.4.9 Terminal Management
    rl_possible_completions2.6.2 Completion Functions
    rl_pre_input_hook2.3 Readline Variables
    rl_prefer_env_winsize2.3 Readline Variables
    rl_prep_term_function2.3 Readline Variables
    rl_prep_terminal2.4.9 Terminal Management
    rl_prompt2.3 Readline Variables
    rl_push_macro_input2.4.7 Modifying Text
    rl_read_init_file2.4.3 Binding Keys
    rl_read_key2.4.8 Character Input
    rl_readline_name2.3 Readline Variables
    rl_readline_state2.3 Readline Variables
    rl_readline_version2.3 Readline Variables
    rl_redisplay2.4.6 Redisplay
    rl_redisplay_function2.3 Readline Variables
    rl_replace_line2.4.10 Utility Functions
    rl_reset_after_signal2.5 Readline Signal Handling
    rl_reset_line_state2.4.6 Redisplay
    rl_reset_screen_size2.5 Readline Signal Handling
    rl_reset_terminal2.4.9 Terminal Management
    rl_resize_terminal2.5 Readline Signal Handling
    rl_restore_prompt2.4.6 Redisplay
    rl_save_prompt2.4.6 Redisplay
    rl_set_key2.4.3 Binding Keys
    rl_set_keyboard_input_timeout2.4.8 Character Input
    rl_set_keymap2.4.2 Selecting a Keymap
    rl_set_paren_blink_timeout2.4.11 Miscellaneous Functions
    rl_set_prompt2.4.6 Redisplay
    rl_set_screen_size2.5 Readline Signal Handling
    rl_set_signals2.5 Readline Signal Handling
    rl_show_char2.4.6 Redisplay
    rl_sort_completion_matches2.6.3 Completion Variables
    rl_special_prefixes2.6.3 Completion Variables
    rl_startup_hook2.3 Readline Variables
    rl_stuff_char2.4.8 Character Input
    rl_terminal_name2.3 Readline Variables
    rl_tty_set_default_bindings2.4.9 Terminal Management
    rl_tty_unset_default_bindings2.4.9 Terminal Management
    rl_unbind_command_in_map2.4.3 Binding Keys
    rl_unbind_function_in_map2.4.3 Binding Keys
    rl_unbind_key2.4.3 Binding Keys
    rl_unbind_key_in_map2.4.3 Binding Keys
    rl_username_completion_function2.6.2 Completion Functions
    rl_variable_bind2.4.11 Miscellaneous Functions
    rl_variable_dumper2.4.11 Miscellaneous Functions
    rl_variable_value2.4.11 Miscellaneous Functions
    rl_push_macro_input2.4.7 Modifying Text
    rl_read_init_file2.4.3 Binding Keys
    rl_read_key2.4.8 Character Input
    rl_readline_name2.3 Readline Variables
    rl_readline_state2.3 Readline Variables
    rl_readline_version2.3 Readline Variables
    rl_redisplay2.4.6 Redisplay
    rl_redisplay_function2.3 Readline Variables
    rl_replace_line2.4.10 Utility Functions
    rl_reset_after_signal2.5 Readline Signal Handling
    rl_reset_line_state2.4.6 Redisplay
    rl_reset_screen_size2.5 Readline Signal Handling
    rl_reset_terminal2.4.9 Terminal Management
    rl_resize_terminal2.5 Readline Signal Handling
    rl_restore_prompt2.4.6 Redisplay
    rl_save_prompt2.4.6 Redisplay
    rl_set_key2.4.3 Binding Keys
    rl_set_keyboard_input_timeout2.4.8 Character Input
    rl_set_keymap2.4.2 Selecting a Keymap
    rl_set_paren_blink_timeout2.4.11 Miscellaneous Functions
    rl_set_prompt2.4.6 Redisplay
    rl_set_screen_size2.5 Readline Signal Handling
    rl_set_signals2.5 Readline Signal Handling
    rl_show_char2.4.6 Redisplay
    rl_special_prefixes2.6.3 Completion Variables
    rl_startup_hook2.3 Readline Variables
    rl_stuff_char2.4.8 Character Input
    rl_terminal_name2.3 Readline Variables
    rl_tty_set_default_bindings2.4.9 Terminal Management
    rl_tty_unset_default_bindings2.4.9 Terminal Management
    rl_unbind_command_in_map2.4.3 Binding Keys
    rl_unbind_function_in_map2.4.3 Binding Keys
    rl_unbind_key2.4.3 Binding Keys
    rl_unbind_key_in_map2.4.3 Binding Keys
    rl_username_completion_function2.6.2 Completion Functions
    rl_variable_bind2.4.11 Miscellaneous Functions
    rl_variable_dumper2.4.11 Miscellaneous Functions
    rl_variable_value2.4.11 Miscellaneous Functions

    S
    self-insert (a, b, A, 1, !, <small>...</small>)1.4.3 Commands For Changing Text
    [ ? ]

    About this document

    -This document was generated by Chet Ramey on February, 27 2007 +This document was generated by Chet Ramey on February, 9 2006 using texi2html

    @@ -6759,7 +6712,7 @@ the following structure:
    This document was generated -by Chet Ramey on February, 27 2007 +by Chet Ramey on February, 9 2006 using texi2html diff --git a/lib/readline/doc/readline.info b/lib/readline/doc/readline.info index 522ff17cf..ddcd2c914 100644 --- a/lib/readline/doc/readline.info +++ b/lib/readline/doc/readline.info @@ -1,12 +1,12 @@ -This is readline.info, produced by makeinfo version 4.8 from +This is readline.info, produced by makeinfo version 4.7 from ./rlman.texi. - This manual describes the GNU Readline Library (version 5.2, 27 -February 2007), a library which aids in the consistency of user + This manual describes the GNU Readline Library (version 5.2, 9 +February 2006), a library which aids in the consistency of user interface across discrete programs which provide a command line interface. - Copyright (C) 1988-2006 Free Software Foundation, Inc. + Copyright (C) 1988-2004 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are @@ -14,7 +14,7 @@ preserved on all copies. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, - Version 1.2 or any later version published by the Free Software + Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with the Front-Cover texts being "A GNU Manual," and with the Back-Cover Texts as in (a) below. A copy of the license is included in the section entitled @@ -444,10 +444,9 @@ Variable Settings attempts word completion. The default is `off'. `history-preserve-point' - If set to `on', the history code attempts to place the point - (the current cursor position) at the same location on each - history line retrieved with `previous-history' or - `next-history'. The default is `off'. + If set to `on', the history code attempts to place point at + the same location on each history line retrieved with + `previous-history' or `next-history'. The default is `off'. `horizontal-scroll-mode' This variable can be set to either `on' or `off'. Setting it @@ -545,10 +544,9 @@ Key Bindings Once you know the name of the command, simply place on a line in the init file the name of the key you wish to bind the command to, - a colon, and then the name of the command. There can be no space - between the key name and the colon - that will be interpreted as - part of the key name. The name of the key can be expressed in - different ways, depending on what you find most comfortable. + a colon, and then the name of the command. The name of the key + can be expressed in different ways, depending on what you find most + comfortable. In addition to command names, readline allows keys to be bound to a string that is inserted when the key is pressed (a MACRO). @@ -1283,7 +1281,7 @@ the standard `vi' movement keys, move to previous history lines with aiding in the consistency of user interface across discrete programs that need to provide a command line interface. - Copyright (C) 1988-2006 Free Software Foundation, Inc. + Copyright (C) 1988-2005 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice pare @@ -1602,11 +1600,6 @@ These variables are available to function writers. `rl_set_prompt()' function (*note Redisplay::) may be used to modify the prompt string after calling `readline()'. - -- Variable: char * rl_display_prompt - The string displayed as the prompt. This is usually identical to - RL_PROMPT, but may be changed temporarily by functions that use - the prompt string as a message area, such as incremental search. - -- Variable: int rl_already_prompted If an application wishes to display the prompt itself, rather than have Readline do it the first time `readline()' is called, it @@ -2041,8 +2034,8 @@ associate a new function name with an arbitrary function. -- Function: const char ** rl_funmap_names (void) Return a NULL terminated array of known function names. The array is sorted. The array itself is allocated, but not the strings - inside. You should free the array, but not the pointers, using - `free' or `rl_free' when you are done. + inside. You should `free()' the array when you are done, but not + the pointers. -- Function: int rl_add_funmap_entry (const char *name, rl_command_func_t *function) @@ -2303,10 +2296,6 @@ File: readline.info, Node: Utility Functions, Next: Miscellaneous Functions, 2.4.10 Utility Functions ------------------------ - -- Function: void rl_free (void *mem) - Deallocate the memory pointed to by MEM. MEM must have been - allocated by `malloc'. - -- Function: void rl_replace_line (const char *text, int clear_undo) Replace the contents of `rl_line_buffer' with TEXT. The point and mark are preserved, if possible. If CLEAR_UNDO is non-zero, the @@ -3009,14 +2998,6 @@ File: readline.info, Node: Completion Variables, Next: A Short Completion Exam even if the application's completion function returns no matches. It should be set only by an application's completion function. - -- Variable: int rl_sort_completion_matches - If an application sets this variable to 0, Readline will not sort - the list of completions (which implies that it cannot remove any - duplicate completions). The default value is 1, which means that - Readline will sort the completions and, depending on the value of - `rl_ignore_completion_duplicates', will attempt to remove duplicate - matches. - -- Variable: int rl_completion_type Set to a character describing the type of completion Readline is currently attempting; see the description of @@ -3025,12 +3006,6 @@ File: readline.info, Node: Completion Variables, Next: A Short Completion Exam any application-specific completion function is called, allowing such functions to present the same interface as `rl_complete()'. - -- Variable: int rl_completion_invoking_key - Set to the final character in the key sequence that invoked one of - the completion functions that call `rl_complete_internal()'. This - is set to the appropriate value before any application-specific - completion function is called. - -- Variable: int rl_inhibit_completion If this variable is non-zero, completion is inhibited. The completion character will be inserted as any other bound to @@ -3965,12 +3940,12 @@ Function and Variable Index [index] * Menu: -* _rl_digit_p: Utility Functions. (line 50) -* _rl_digit_value: Utility Functions. (line 61) -* _rl_lowercase_p: Utility Functions. (line 47) -* _rl_to_lower: Utility Functions. (line 57) -* _rl_to_upper: Utility Functions. (line 53) -* _rl_uppercase_p: Utility Functions. (line 44) +* _rl_digit_p: Utility Functions. (line 46) +* _rl_digit_value: Utility Functions. (line 57) +* _rl_lowercase_p: Utility Functions. (line 43) +* _rl_to_lower: Utility Functions. (line 53) +* _rl_to_upper: Utility Functions. (line 49) +* _rl_uppercase_p: Utility Functions. (line 40) * abort (C-g): Miscellaneous Commands. (line 10) * accept-line (Newline or Return): Commands For History. @@ -4051,17 +4026,17 @@ Function and Variable Index * history-search-forward (): Commands For History. (line 45) * horizontal-scroll-mode: Readline Init File Syntax. - (line 99) + (line 98) * input-meta: Readline Init File Syntax. - (line 106) + (line 105) * insert-comment (M-#): Miscellaneous Commands. (line 51) * insert-completions (M-*): Commands For Completion. (line 14) * isearch-terminators: Readline Init File Syntax. - (line 113) + (line 112) * keymap: Readline Init File Syntax. - (line 120) + (line 119) * kill-line (C-k): Commands For Killing. (line 6) * kill-region (): Commands For Killing. @@ -4071,15 +4046,15 @@ Function and Variable Index * kill-word (M-d): Commands For Killing. (line 19) * mark-modified-lines: Readline Init File Syntax. - (line 133) + (line 132) * mark-symlinked-directories: Readline Init File Syntax. - (line 138) + (line 137) * match-hidden-files: Readline Init File Syntax. - (line 143) + (line 142) * menu-complete (): Commands For Completion. (line 18) * meta-flag: Readline Init File Syntax. - (line 106) + (line 105) * next-history (C-n): Commands For History. (line 16) * non-incremental-forward-search-history (M-n): Commands For History. @@ -4087,10 +4062,10 @@ Function and Variable Index * non-incremental-reverse-search-history (M-p): Commands For History. (line 35) * output-meta: Readline Init File Syntax. - (line 150) + (line 149) * overwrite-mode (): Commands For Text. (line 53) * page-completions: Readline Init File Syntax. - (line 155) + (line 154) * possible-completions (M-?): Commands For Completion. (line 11) * prefix-meta (): Miscellaneous Commands. @@ -4110,8 +4085,8 @@ Function and Variable Index * rl_add_funmap_entry: Associating Function Names and Bindings. (line 47) * rl_add_undo: Allowing Undoing. (line 41) -* rl_alphabetic: Utility Functions. (line 28) -* rl_already_prompted: Readline Variables. (line 64) +* rl_alphabetic: Utility Functions. (line 24) +* rl_already_prompted: Readline Variables. (line 59) * rl_attempted_completion_function: Completion Variables. (line 12) * rl_attempted_completion_over: Completion Variables. @@ -4129,7 +4104,7 @@ Function and Variable Index * rl_bind_keyseq_if_unbound: Binding Keys. (line 77) * rl_bind_keyseq_if_unbound_in_map: Binding Keys. (line 83) * rl_bind_keyseq_in_map: Binding Keys. (line 66) -* rl_binding_keymap: Readline Variables. (line 159) +* rl_binding_keymap: Readline Variables. (line 154) * rl_callback_handler_install: Alternate Interface. (line 15) * rl_callback_handler_remove: Alternate Interface. (line 33) * rl_callback_read_char: Alternate Interface. (line 21) @@ -4165,8 +4140,6 @@ Function and Variable Index (line 55) * rl_completion_found_quote: Completion Variables. (line 168) -* rl_completion_invoking_key: Completion Variables. - (line 233) * rl_completion_mark_symlink_dirs: Completion Variables. (line 175) * rl_completion_matches: Completion Functions. @@ -4182,35 +4155,34 @@ Function and Variable Index * rl_completion_suppress_quote: Completion Variables. (line 162) * rl_completion_type: Completion Variables. - (line 225) + (line 217) * rl_completion_word_break_hook: Completion Variables. (line 107) * rl_copy_keymap: Keymaps. (line 17) * rl_copy_text: Modifying Text. (line 15) * rl_crlf: Redisplay. (line 30) * rl_delete_text: Modifying Text. (line 11) -* rl_deprep_term_function: Readline Variables. (line 149) +* rl_deprep_term_function: Readline Variables. (line 144) * rl_deprep_terminal: Terminal Management. (line 13) -* rl_ding: Utility Functions. (line 25) +* rl_ding: Utility Functions. (line 21) * rl_directory_completion_hook: Completion Variables. (line 64) * rl_discard_keymap: Keymaps. (line 26) * rl_dispatching: Readline Variables. (line 41) -* rl_display_match_list: Utility Functions. (line 32) -* rl_display_prompt: Readline Variables. (line 59) +* rl_display_match_list: Utility Functions. (line 28) * rl_do_undo: Allowing Undoing. (line 48) * rl_done: Readline Variables. (line 28) -* rl_editing_mode: Readline Variables. (line 247) +* rl_editing_mode: Readline Variables. (line 242) * rl_end: Readline Variables. (line 19) * rl_end_undo_group: Allowing Undoing. (line 35) * rl_erase_empty_line: Readline Variables. (line 47) -* rl_event_hook: Readline Variables. (line 124) +* rl_event_hook: Readline Variables. (line 119) * rl_execute_next: Character Input. (line 26) -* rl_executing_keymap: Readline Variables. (line 155) -* rl_executing_macro: Readline Variables. (line 163) +* rl_executing_keymap: Readline Variables. (line 150) +* rl_executing_macro: Readline Variables. (line 158) * rl_expand_prompt: Redisplay. (line 64) -* rl_explicit_arg: Readline Variables. (line 238) -* rl_extend_line_buffer: Utility Functions. (line 16) +* rl_explicit_arg: Readline Variables. (line 233) +* rl_extend_line_buffer: Utility Functions. (line 12) * rl_filename_completion_desired: Completion Variables. (line 190) * rl_filename_completion_function: Completion Functions. @@ -4224,7 +4196,6 @@ Function and Variable Index * rl_filename_quoting_function: Completion Variables. (line 24) * rl_forced_update_display: Redisplay. (line 11) -* rl_free: Utility Functions. (line 7) * rl_free_line_state: Readline Signal Handling. (line 72) * rl_free_undo_list: Allowing Undoing. (line 45) @@ -4243,26 +4214,26 @@ Function and Variable Index * rl_get_termcap: Miscellaneous Functions. (line 42) * rl_getc: Character Input. (line 15) -* rl_getc_function: Readline Variables. (line 130) -* rl_gnu_readline_p: Readline Variables. (line 83) +* rl_getc_function: Readline Variables. (line 125) +* rl_gnu_readline_p: Readline Variables. (line 78) * rl_ignore_completion_duplicates: Completion Variables. (line 186) * rl_ignore_some_completions_function: Completion Variables. (line 56) * rl_inhibit_completion: Completion Variables. - (line 239) -* rl_initialize: Utility Functions. (line 20) + (line 225) +* rl_initialize: Utility Functions. (line 16) * rl_insert_completions: Completion Functions. (line 32) * rl_insert_text: Modifying Text. (line 7) -* rl_instream: Readline Variables. (line 97) +* rl_instream: Readline Variables. (line 92) * rl_invoking_keyseqs: Associating Function Names and Bindings. (line 21) * rl_invoking_keyseqs_in_map: Associating Function Names and Bindings. (line 26) * rl_kill_text: Modifying Text. (line 19) -* rl_last_func: Readline Variables. (line 110) -* rl_library_version: Readline Variables. (line 73) +* rl_last_func: Readline Variables. (line 105) +* rl_library_version: Readline Variables. (line 68) * rl_line_buffer: Readline Variables. (line 9) * rl_list_funmap_names: Associating Function Names and Bindings. (line 36) @@ -4278,29 +4249,29 @@ Function and Variable Index * rl_named_function: Associating Function Names and Bindings. (line 11) * rl_num_chars_to_read: Readline Variables. (line 32) -* rl_numeric_arg: Readline Variables. (line 242) +* rl_numeric_arg: Readline Variables. (line 237) * rl_on_new_line: Redisplay. (line 15) * rl_on_new_line_with_prompt: Redisplay. (line 19) -* rl_outstream: Readline Variables. (line 101) +* rl_outstream: Readline Variables. (line 96) * rl_parse_and_bind: Binding Keys. (line 96) * rl_pending_input: Readline Variables. (line 37) * rl_point: Readline Variables. (line 15) * rl_possible_completions: Completion Functions. (line 28) -* rl_pre_input_hook: Readline Variables. (line 119) -* rl_prefer_env_winsize: Readline Variables. (line 105) -* rl_prep_term_function: Readline Variables. (line 142) +* rl_pre_input_hook: Readline Variables. (line 114) +* rl_prefer_env_winsize: Readline Variables. (line 100) +* rl_prep_term_function: Readline Variables. (line 137) * rl_prep_terminal: Terminal Management. (line 7) * rl_prompt: Readline Variables. (line 53) * rl_push_macro_input: Modifying Text. (line 26) * rl_read_init_file: Binding Keys. (line 101) * rl_read_key: Character Input. (line 7) -* rl_readline_name: Readline Variables. (line 92) -* rl_readline_state: Readline Variables. (line 166) -* rl_readline_version: Readline Variables. (line 76) +* rl_readline_name: Readline Variables. (line 87) +* rl_readline_state: Readline Variables. (line 161) +* rl_readline_version: Readline Variables. (line 71) * rl_redisplay: Redisplay. (line 7) -* rl_redisplay_function: Readline Variables. (line 136) -* rl_replace_line: Utility Functions. (line 11) +* rl_redisplay_function: Readline Variables. (line 131) +* rl_replace_line: Utility Functions. (line 7) * rl_reset_after_signal: Readline Signal Handling. (line 80) * rl_reset_line_state: Redisplay. (line 26) @@ -4322,13 +4293,11 @@ Function and Variable Index * rl_set_signals: Readline Signal Handling. (line 113) * rl_show_char: Redisplay. (line 33) -* rl_sort_completion_matches: Completion Variables. - (line 217) * rl_special_prefixes: Completion Variables. (line 127) -* rl_startup_hook: Readline Variables. (line 115) +* rl_startup_hook: Readline Variables. (line 110) * rl_stuff_char: Character Input. (line 19) -* rl_terminal_name: Readline Variables. (line 87) +* rl_terminal_name: Readline Variables. (line 82) * rl_tty_set_default_bindings: Terminal Management. (line 18) * rl_tty_unset_default_bindings: Terminal Management. (line 23) * rl_unbind_command_in_map: Binding Keys. (line 55) @@ -4347,9 +4316,9 @@ Function and Variable Index * set-mark (C-@): Miscellaneous Commands. (line 32) * show-all-if-ambiguous: Readline Init File Syntax. - (line 165) + (line 164) * show-all-if-unmodified: Readline Init File Syntax. - (line 171) + (line 170) * start-kbd-macro (C-x (): Keyboard Macros. (line 6) * transpose-chars (C-t): Commands For Text. (line 30) * transpose-words (M-t): Commands For Text. (line 36) @@ -4364,7 +4333,7 @@ Function and Variable Index (line 28) * upcase-word (M-u): Commands For Text. (line 41) * visible-stats: Readline Init File Syntax. - (line 180) + (line 179) * yank (C-y): Commands For Killing. (line 59) * yank-last-arg (M-. or M-_): Commands For History. @@ -4377,58 +4346,58 @@ Function and Variable Index  Tag Table: -Node: Top1297 -Node: Command Line Editing1935 -Node: Introduction and Notation2587 -Node: Readline Interaction4210 -Node: Readline Bare Essentials5402 -Node: Readline Movement Commands7192 -Node: Readline Killing Commands8158 -Node: Readline Arguments10079 -Node: Searching11124 -Node: Readline Init File13276 -Node: Readline Init File Syntax14430 -Node: Conditional Init Constructs26524 -Node: Sample Init File29058 -Node: Bindable Readline Commands32176 -Node: Commands For Moving33234 -Node: Commands For History34096 -Node: Commands For Text37221 -Node: Commands For Killing39948 -Node: Numeric Arguments42091 -Node: Commands For Completion43231 -Node: Keyboard Macros44776 -Node: Miscellaneous Commands45348 -Node: Readline vi Mode48710 -Node: Programming with GNU Readline50534 -Node: Basic Behavior51509 -Node: Custom Functions54926 -Node: Readline Typedefs56410 -Node: Function Writing58049 -Node: Readline Variables59356 -Node: Readline Convenience Functions69308 -Node: Function Naming70298 -Node: Keymaps71560 -Node: Binding Keys73332 -Node: Associating Function Names and Bindings77879 -Node: Allowing Undoing80164 -Node: Redisplay82714 -Node: Modifying Text86614 -Node: Character Input87860 -Node: Terminal Management89758 -Node: Utility Functions91194 -Node: Miscellaneous Functions93693 -Node: Alternate Interface95990 -Node: A Readline Example98149 -Node: Readline Signal Handling100052 -Node: Custom Completers105920 -Node: How Completing Works106640 -Node: Completion Functions109954 -Node: Completion Variables113526 -Node: A Short Completion Example126631 -Node: Copying This Manual138804 -Node: GNU Free Documentation License139066 -Node: Concept Index161473 -Node: Function and Variable Index163129 +Node: Top1296 +Node: Command Line Editing1934 +Node: Introduction and Notation2586 +Node: Readline Interaction4209 +Node: Readline Bare Essentials5401 +Node: Readline Movement Commands7191 +Node: Readline Killing Commands8157 +Node: Readline Arguments10078 +Node: Searching11123 +Node: Readline Init File13275 +Node: Readline Init File Syntax14429 +Node: Conditional Init Constructs26364 +Node: Sample Init File28898 +Node: Bindable Readline Commands32016 +Node: Commands For Moving33074 +Node: Commands For History33936 +Node: Commands For Text37061 +Node: Commands For Killing39788 +Node: Numeric Arguments41931 +Node: Commands For Completion43071 +Node: Keyboard Macros44616 +Node: Miscellaneous Commands45188 +Node: Readline vi Mode48550 +Node: Programming with GNU Readline50374 +Node: Basic Behavior51349 +Node: Custom Functions54766 +Node: Readline Typedefs56250 +Node: Function Writing57889 +Node: Readline Variables59196 +Node: Readline Convenience Functions68898 +Node: Function Naming69888 +Node: Keymaps71150 +Node: Binding Keys72922 +Node: Associating Function Names and Bindings77469 +Node: Allowing Undoing79731 +Node: Redisplay82281 +Node: Modifying Text86181 +Node: Character Input87427 +Node: Terminal Management89325 +Node: Utility Functions90761 +Node: Miscellaneous Functions93126 +Node: Alternate Interface95423 +Node: A Readline Example97582 +Node: Readline Signal Handling99485 +Node: Custom Completers105353 +Node: How Completing Works106073 +Node: Completion Functions109387 +Node: Completion Variables112959 +Node: A Short Completion Example125353 +Node: Copying This Manual137526 +Node: GNU Free Documentation License137788 +Node: Concept Index160195 +Node: Function and Variable Index161851  End Tag Table diff --git a/lib/readline/doc/readline.ps b/lib/readline/doc/readline.ps index 9e9c7bf02..ad2b13968 100644 --- a/lib/readline/doc/readline.ps +++ b/lib/readline/doc/readline.ps @@ -1,18 +1,17 @@ %!PS-Adobe-2.0 -%%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software +%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software %%Title: readline.dvi %%Pages: 74 %%PageOrder: Ascend -%%BoundingBox: 0 0 595 842 +%%BoundingBox: 0 0 596 842 %%DocumentFonts: CMBX12 CMR10 CMTT10 CMSY10 CMBXTI10 CMTI10 CMCSC10 %%+ CMSLTT10 CMSY9 CMR8 CMSL10 CMBX10 CMSS10 CMTT9 CMR9 CMTI9 -%%DocumentPaperSizes: a4 %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -D 300 -o readline.ps readline.dvi -%DVIPSParameters: dpi=300 -%DVIPSSource: TeX output 2007.02.27:0916 -%%BeginProcSet: tex.pro 0 0 +%DVIPSParameters: dpi=300, compressed +%DVIPSSource: TeX output 2006.02.09:0950 +%%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 @@ -31,10 +30,22 @@ df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr -1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S -/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy -setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask -restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn +1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 +1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx +0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx +sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ +rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp +gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B +/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ +/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ +A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy +get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} +ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp +fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 +{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add +chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ +1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} +forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A @@ -58,7 +69,202 @@ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet -%%BeginProcSet: texps.pro 0 0 +%%BeginProcSet: f7b6d320.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmb10 cmbx10 cmbx12 cmbx5 cmbx6 cmbx7 cmbx8 cmbx9 cmbxsl10 +% cmdunh10 cmr10 cmr12 cmr17cmr6 cmr7 cmr8 cmr9 cmsl10 cmsl12 cmsl8 +% cmsl9 cmss10cmss12 cmss17 cmss8 cmss9 cmssbx10 cmssdc10 cmssi10 +% cmssi12 cmssi17 cmssi8cmssi9 cmssq8 cmssqi8 cmvtt10 +% +/TeXf7b6d320Encoding [ +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega +/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve +/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash +/suppress /exclam /quotedblright /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 /exclamdown /equal /questiondown /question /at +/A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X +/Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent +/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u +/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef +/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute +/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE +/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: 09fbbfac.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmsltt10 cmtt10 cmtt12 cmtt8 cmtt9 +/TeX09fbbfacEncoding [ +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi +/Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown +/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla +/germandbls /ae /oe /oslash /AE /OE /Oslash /visiblespace /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 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright +/asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l +/m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright +/asciitilde /dieresis /visiblespace /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda /Xi /Pi +/Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup /arrowdown +/quotesingle /exclamdown /questiondown /dotlessi /dotlessj /grave /acute +/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE +/OE /Oslash /visiblespace /dieresis /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: bbad153f.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmsy10 cmsy5 cmsy6 cmsy7 cmsy8 cmsy9 +% +/TeXbbad153fEncoding [ +/minus /periodcentered /multiply /asteriskmath /divide /diamondmath +/plusminus /minusplus /circleplus /circleminus /circlemultiply +/circledivide /circledot /circlecopyrt /openbullet /bullet +/equivasymptotic /equivalence /reflexsubset /reflexsuperset /lessequal +/greaterequal /precedesequal /followsequal /similar /approxequal +/propersubset /propersuperset /lessmuch /greatermuch /precedes /follows +/arrowleft /arrowright /arrowup /arrowdown /arrowboth /arrownortheast +/arrowsoutheast /similarequal /arrowdblleft /arrowdblright /arrowdblup +/arrowdbldown /arrowdblboth /arrownorthwest /arrowsouthwest /proportional +/prime /infinity /element /owner /triangle /triangleinv /negationslash +/mapsto /universal /existential /logicalnot /emptyset /Rfractur /Ifractur +/latticetop /perpendicular /aleph /A /B /C /D /E /F /G /H /I /J /K +/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /union /intersection +/unionmulti /logicaland /logicalor /turnstileleft /turnstileright +/floorleft /floorright /ceilingleft /ceilingright /braceleft /braceright +/angbracketleft /angbracketright /bar /bardbl /arrowbothv /arrowdblbothv +/backslash /wreathproduct /radical /coproduct /nabla /integral +/unionsq /intersectionsq /subsetsqequal /supersetsqequal /section +/dagger /daggerdbl /paragraph /club /diamond /heart /spade /arrowleft +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/minus /periodcentered /multiply /asteriskmath /divide /diamondmath +/plusminus /minusplus /circleplus /circleminus /.notdef /.notdef +/circlemultiply /circledivide /circledot /circlecopyrt /openbullet +/bullet /equivasymptotic /equivalence /reflexsubset /reflexsuperset +/lessequal /greaterequal /precedesequal /followsequal /similar +/approxequal /propersubset /propersuperset /lessmuch /greatermuch +/precedes /follows /arrowleft /spade /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: 74afc74c.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmbxti10 cmff10 cmfi10 cmfib8 cmti10 cmti12 cmti7 cmti8cmti9 cmu10 +% +/TeX74afc74cEncoding [ +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega +/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve +/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash +/suppress /exclam /quotedblright /numbersign /sterling /percent +/ampersand /quoteright /parenleft /parenright /asterisk /plus /comma +/hyphen /period /slash /zero /one /two /three /four /five /six /seven +/eight /nine /colon /semicolon /exclamdown /equal /questiondown /question +/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W +/X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent +/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u +/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef +/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute +/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE +/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: 0ef0afca.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmr5 +% +/TeX0ef0afcaEncoding [ +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega +/arrowup /arrowdown /quotesingle /exclamdown /questiondown /dotlessi +/dotlessj /grave /acute /caron /breve /macron /ring /cedilla /germandbls +/ae /oe /oslash /AE /OE /Oslash /suppress /exclam /quotedblright +/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 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /quotedblleft +/bracketright /circumflex /dotaccent /quoteleft /a /b /c /d /e /f /g /h +/i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /endash /emdash +/hungarumlaut /tilde /dieresis /suppress /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda +/Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup +/arrowdown /quotesingle /exclamdown /questiondown /dotlessi /dotlessj +/grave /acute /caron /breve /macron /ring /cedilla /germandbls /ae /oe +/oslash /AE /OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: texps.pro %! TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll @@ -95,9 +301,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 46 /period put +dup 0 /.notdef put readonly def /FontBBox{-35 -250 1148 750}readonly def +/UniqueID 5000827 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE @@ -161,53 +368,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 12 /fi put -dup 13 /fl put -dup 44 /comma put -dup 45 /hyphen put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 56 /eight put -dup 57 /nine put -dup 68 /D put -dup 70 /F put -dup 71 /G put -dup 76 /L put -dup 78 /N put -dup 85 /U put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put +dup 0 /.notdef put readonly def /FontBBox{-39 -250 1036 750}readonly def +/UniqueID 5000792 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -494,46 +658,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 39 /quoteright put -dup 45 /hyphen put -dup 48 /zero put -dup 49 /one put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 72 /H put -dup 74 /J put -dup 76 /L put -dup 77 /M put -dup 92 /backslash put -dup 95 /underscore put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put +dup 0 /.notdef put readonly def /FontBBox{-20 -233 617 696}readonly def +/UniqueID 5000800 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0528A405DF15F03DB1C3DA8B850431F8 @@ -769,91 +897,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 33 /exclam put -dup 34 /quotedbl put -dup 35 /numbersign put -dup 37 /percent put -dup 38 /ampersand put -dup 39 /quoteright put -dup 40 /parenleft put -dup 41 /parenright put -dup 42 /asterisk put -dup 43 /plus put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 47 /slash put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 52 /four put -dup 54 /six put -dup 58 /colon put -dup 59 /semicolon put -dup 60 /less put -dup 61 /equal put -dup 62 /greater put -dup 63 /question put -dup 64 /at put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 73 /I put -dup 74 /J put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 81 /Q put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 87 /W put -dup 88 /X put -dup 91 /bracketleft put -dup 92 /backslash put -dup 93 /bracketright put -dup 95 /underscore put -dup 96 /quoteleft put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put -dup 123 /braceleft put -dup 124 /bar put -dup 125 /braceright put -dup 126 /asciitilde put +dup 0 /.notdef put readonly def /FontBBox{-6 -233 542 698}readonly def +/UniqueID 5000831 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -1277,10 +1324,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 40 /parenleft put -dup 41 /parenright put +dup 0 /.notdef put readonly def /FontBBox{-61 -250 999 759}readonly def +/UniqueID 5000803 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -1350,35 +1397,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 11 /ff put -dup 12 /fi put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put +dup 0 /.notdef put readonly def /FontBBox{-301 -250 1164 946}readonly def +/UniqueID 5000768 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -1608,97 +1630,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 33 /exclam put -dup 34 /quotedbl put -dup 35 /numbersign put -dup 36 /dollar put -dup 37 /percent put -dup 38 /ampersand put -dup 39 /quoteright put -dup 40 /parenleft put -dup 41 /parenright put -dup 42 /asterisk put -dup 43 /plus put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 47 /slash put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 52 /four put -dup 53 /five put -dup 55 /seven put -dup 56 /eight put -dup 58 /colon put -dup 59 /semicolon put -dup 60 /less put -dup 61 /equal put -dup 62 /greater put -dup 63 /question put -dup 64 /at put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 81 /Q put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 87 /W put -dup 88 /X put -dup 89 /Y put -dup 90 /Z put -dup 91 /bracketleft put -dup 92 /backslash put -dup 93 /bracketright put -dup 95 /underscore put -dup 96 /quoteleft put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put -dup 123 /braceleft put -dup 124 /bar put -dup 125 /braceright put -dup 126 /asciitilde put +dup 0 /.notdef put readonly def /FontBBox{-4 -235 731 800}readonly def +/UniqueID 5000832 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -2182,67 +2117,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 44 /comma put -dup 46 /period put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 56 /eight put -dup 57 /nine put -dup 58 /colon put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 81 /Q put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 87 /W put -dup 89 /Y put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put +dup 0 /.notdef put readonly def /FontBBox{-53 -251 1139 750}readonly def +/UniqueID 5000769 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -2587,56 +2465,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 12 /fi put -dup 13 /fl put -dup 45 /hyphen put -dup 48 /zero put -dup 49 /one put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 72 /H put -dup 73 /I put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 87 /W put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put +dup 0 /.notdef put readonly def /FontBBox{-62 -250 1123 750}readonly def +/UniqueID 5000798 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE @@ -2987,37 +2819,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 39 /quoteright put -dup 45 /hyphen put -dup 49 /one put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 76 /L put -dup 77 /M put -dup 80 /P put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 91 /bracketleft put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 101 /e put -dup 106 /j put -dup 107 /k put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put +dup 0 /.notdef put readonly def /FontBBox{-36 -250 1070 750}readonly def +/UniqueID 5000791 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -3214,10 +3019,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 104 /angbracketleft put -dup 105 /angbracketright put +dup 0 /.notdef put readonly def /FontBBox{-30 -958 1146 777}readonly def +/UniqueID 5000819 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 @@ -3274,26 +3079,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 97 /a put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 120 /x put +dup 0 /.notdef put readonly def /FontBBox{14 -250 1077 750}readonly def +/UniqueID 5000772 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE @@ -3442,28 +3231,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 12 /fi put -dup 46 /period put -dup 97 /a put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 103 /g put -dup 105 /i put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 121 /y put +dup 0 /.notdef put readonly def /FontBBox{-163 -250 1146 969}readonly def +/UniqueID 5000828 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE @@ -3656,9 +3427,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 46 /period put +dup 0 /.notdef put readonly def /FontBBox{-29 -250 1274 754}readonly def +/UniqueID 5000771 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE @@ -3722,9 +3494,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 13 /circlecopyrt put +dup 0 /.notdef put readonly def /FontBBox{-29 -960 1116 775}readonly def +/UniqueID 5000820 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 @@ -3778,91 +3551,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 11 /ff put -dup 12 /fi put -dup 13 /fl put -dup 14 /ffi put -dup 34 /quotedblright put -dup 36 /dollar put -dup 39 /quoteright put -dup 40 /parenleft put -dup 41 /parenright put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 47 /slash put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 56 /eight put -dup 57 /nine put -dup 58 /colon put -dup 59 /semicolon put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 74 /J put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 81 /Q put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 87 /W put -dup 88 /X put -dup 89 /Y put -dup 90 /Z put -dup 91 /bracketleft put -dup 92 /quotedblleft put -dup 93 /bracketright put -dup 96 /quoteleft put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put -dup 123 /endash put -dup 124 /emdash put +dup 0 /.notdef put readonly def /FontBBox{-251 -250 1009 969}readonly def +/UniqueID 5000793 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -3930,420 +3622,419 @@ B00DEA3A9B747FEEBC4A11E5B9B8B05CA2709B8AA935A42159D3DE399544F5AF AC1CC00F6CB94AB69856078C9A2EB2046BB9055CDD6A0622112F7D3710143F1C 20CD8DAB4109CD47BC00EBCB88314081C1D6C43132412F261CE0262FA28DB7A3 C7D8534BCBE1A60488EA230DC558B73C72AE87539A9D7E28C2BE05FC05F58DDD -87117C0B5235B1486088B8368C80ECE70DC07A0493C32B571F6D6E5F3C7556B8 -79DD18A0C09C644C1B0A57E09CBF8247A97FBDA9442DF87C99CB00F959FE4925 -8FE8B3EA62A6C99396CEECAFDB091CBFAA0EA6F25BE1F34B1B8EF507D2347A7B -866CE28452F7ADBB56F4696567032BD289B3439D6CB90A602223E00B43CD2585 -4D598BE43C0161BEAD813870FCA3E377A588C3D24667846301D1BEB056315636 -1304E2CB595B5297018C0ECD1BA4F8F1EA81B4FF88126295CD676D96756FB9FA -C97CD2A8574EAEBB0A869C527E0828940C613B9D45894E4667172D841C94410B -FCC5083CF850AEB2EF92BDBA8DBA361AE95B267FB5F90D5EF8B16B2A83568D5F -50BD20AC88DE25DDFDAAB7B2F7662DB99E20989C7D12DE04057FCD2DEEC770D6 -535680D13ACB557EE7AF8DEBABC3088908943E6E3655C3C00ED022B276FFA5FA -E6E4ABB96A214908EA899EC925E67E86413840A67B3FF86957586B5E06909036 -B9987C5BA21E46DE7919B382CFC4740ECC794A6577BE33CCB94E2E4BB3F28BBF -AAC6E68DD9B01A59A7F3B964F53F41CB9BE94CD44027868F079324B44C595200 -0E375B069FC085DAD5B678ACBBFCCE8916C4266B572D89C0A7B6A26F1D329EA7 -63CDD44F37932CDC9C89C724AD52BF91CA68209471F26C10AA18CBCD1288460F -9EA9BA85084A5F34451044B81559DBA03F03292638C28A704C553CB25312C568 -A06C9F5A764BA025FD48883244E88F1A31ACAE83432C2B837D034CC960EDE3C4 -2234FFFB8132473C8A750A41770EC46F9B2CA7FDD937A2C8CBF5DDD6162EEE0B -36C53BDC0D2D7F6D38DC2F502755B0D25B0BD1858A9B16BA69549B5CA4673F0C -32C5F1BA97E1C124374037E0B8EE94706B3B2AEB9CEBFF69E4F107BABED996B2 -EA92B4D94AA267E626953550633A74099022786C172A323DF9D903A0DF6CE486 -38AB2B0CA07D5EEF34BDE2DB5F539BEDB569F60005A3317EA6B1560C22606B8E -AED6F84526090E626FBF48846E49714EA80C90FF66F82F36F3151B580DAFFFA2 -668B4952CAA66C6F10A341118E0D58B8CE34367BDAEA79645E27059FF2A43D2A -435ED248345B6305316D1DAC5F75787D8E72D0D8C3145C0A1E45B201382EB716 -D06C5E8BA78B6F32B13F80E7EB6909D2B7ECD1420BA2B2A88C0C3154F3091065 -16A79C898C1682A98FC2A11A2B8D4536D74E6E228E5474090D42CBFE3BAA8029 -4564F468EE59B2E2BF8B2429634898F21C31812394AE3EC0CA8CFD5D5E818F4F -344FF40488F06A48E9879E42F131DE378A8A733C6016BBDCA24B10B385BA73D3 -DF4770685FC7B9720D196A9FFF978C10977D37D98F11A3255486C8F8C3F67225 -4AA8884C88A3194EC1AFD2DA57258E30B057490A10AEA001017F06C83255C0AB -13AE04B86FEEECC7F04A593282501423D319CC3FFAC3691DE723F71A6138EDBA -F1373C651464A05906A2F370B0862F5E5CAA5C9570B7D5F9DB24FFE4A6C6B98C -539FFD61F24487B2AF446467B1A3CA16E9BB2384972372C90DD930B8DAEC0FEA -7C2692F029EA687E29EADEA6AE95F030A8DC599C8727F5CC41FFF86EC7E2D04E -E1498E0AB0D2719E08956A68FE7E92EBC6945771DDC13689CB68D39EAF73CB2B -DC8BAECFD1F721BC66D89342D650699C3364A2D0B35F58E4CDF2209512224472 -8920B0079AA5355990733CBCB8A372E1EA02B9DA4107F619968075F33BD123CB -870D0DF6B22E6DB70F1328532A05BD7A624CB7488034E94F3622F97636CB1330 -FE3336665F27AF77FBCF01A786143F0AA892E1B2CDDAEF2E0F33E56F179CBC8A -72973C643CF217828D892C818CECE72D0E89329C6A9159BF17D10BD3BB4A1154 -997ABD8127118AA79BD792292B6B9689D989258CA9F57A75C4C9CEADC338DF07 -13081B667C8D86DEEE5BDCC47FF96E2AA5B37C365585747EB3B664F08CC7ADAD -B42D1B54096C60AD15596D7DC585316A36598A349E89242274B5171A1DE841CC -30A5BE43B0ADB71C3DDA25650BFF704B452831FB06A7DB0D60D24436BFE23CC5 -AA68BFEE0897140B248E4A9BE7AAE37B98A54CC1D3F81164943B66250D55E554 -55A688BB9E3077FF8D11D1BE1C3FF99DA01EB206AC5AB1D394854DF5CD417084 -82BF6D1DAF88698A69DC196FA9A3285AAFFC3441CB4297A48DFC86B29490F2F4 -B514AE8F3D4C0EF920791371BBDD1B6369C38A90A2D2AC06B25781630847D6D0 -87B469CAC111778CEF26FA3233A85044965F3862C83F63CA2565B9644EC15B77 -BD2BA08CD8AC3DF1E5CC53CCE496172A18627384CD54595E3BE1E7D1B9751C86 -D6AD3EDCC725EA4B09BF3B92ED658356A3424F1B0D07B6E11B8E1D4823F5B0C8 -F3EA4BFA3DF77AED89D464D29BB2326ED2DEB73E327AC8B2C99B73DB70ACEB0B -D0FD854CEFBC72FB9C906B4DB9EA35BA8018C623987C834B63E8C800A30BD551 -011F6E05EE76C26ED2F335E32BD4C866A57BA7AE89ACEB1066E795F122E1BBCD -5768F2DEC922EFF8B1778F4FFB7BF1B6253F632F8D98648B81018D2FD4876974 -8C818E01ABFB557C8553B98A512241000B9DF64C1F5784343314B7B3CA04E506 -BBC612628AEE13DA23B3242AAC3B05244D3711121D5C9AFA8EBABD2074DD3658 -0F46D501A2CB11A370EA7E38E3682A31F5C47836E9CECAFB1BEC80DE889E99BD -8F4DB78DBA5AC5D764EA99237738FEAAF199DDA7236D22B07D22A8F6ED023E44 -1828588397D723FB557CD35C7C5C87BB64E4A7F88B03FAF135ED0F185F7AFA4A -F498B226D6D843EFECFD9029122B15065A4D04B509A8B633E46AD3D15D4F9EB1 -AA41E4694AC4DE0613B027E35C32935B5F0A9C21F5F60B9DFB5FAD619A35AF19 -20C0A1B2490E8E3BDACF27F37680BB32489D21F91603D4BC5FE69862A1A05F10 -4C11FE5744676C4794CC0B7F1AC1DC9861A247234FB986A0A4BC5F8F6A3183FE -3A6FF5ED1D32A711906031CFF6802B5455CF208787AE3A35B1D437C64E5A3283 -A1B87F31D6B6AC634579FC3145035BC5F0B454CD9280BA3509B890D45AC7EC54 -F8FCDA7E5F8AB9F8201621417E17FFD8CB7BF55A6D9B21F95C403AC0112A94D4 -B7BAD823A1E9A5FEA956B08ABF303A917B69C8BAD87E685DEBA72E62AB132F46 -521CBA0C7A96A833AFDB396E0FEB85D3EC605A4EF6026C0A6CCADA56A26A8FDE -18C61D26C93DC6E15F1B5E789567E833E79CB85580CB50A68AC93D9C2454861B -487A833774E205A73A2932D0043759D5978921BB5B499BBEC5AC6F505EDE86C2 -8B8DAB630F36128B53BDA72CD82A3810E94C6947C9FB148574FD25E8629CBEF1 -2AAA7DD33D1A83C0235AF9F8FA00822AEF0A6E9DC7FA79B3872CAC39957D746E -3F05C8EA69F0BBD0D96DA2ACA93E73FDECCA8B35D6CD52C464C1A51EDFAA83A0 -54C236F0064B7268C7DF4BC1F97606D48D6C8739AA2CE28CFF1B4986B4CE8A60 -D8DA6C67A6887CCC3A0A2790FF5FA00120D15C26E8D938D524F355FF8212A689 -D34269669DF03F1BACCFE834425972EEAB399EE578407F9550B93D65E63E3707 -CDA159B5AF4B68ED52D389CC6915CF7B0C737514EAB05C947AF32D67CC36D782 -C9F73B32CDF11D2CE33E8C3DAC12AD070D0CE9EB3C209D0830C0665DB9F61C35 -FF976057485A32A5A41E7205BCED4E2B9D2011AE3FA90ADFF6E3C58144293A55 -E25C6A98BA2113DAFB861F0C3544A15F5CC20496FBC58F1FA2088BC67334006E -2AE3755CF0791FE82E8620A5BF3B487F37DBA3ABE1709DF21745CA7D7CDC0AF4 -F33FCF3672EF5ACB540CD7931FD18F815422B2A193C9AE34E626020F9AC0C36D -4D5AC1137C75F10B42E2499DE914703C682806C9E1D158217C68329CE401234B -462F92A35F20858F5FAFAE3062C57ECEB930B762880A982A8DCB7D010383A156 -547310C8BDEEDF6313650A2FD71856131E24F1299C8033CF49DA9BFD013F64D7 -2B571F6C2E0A84FE62F060298C654E068F0B8BA453D5F94BC89D3B5053721731 -AF5CCFED84B7F6CEC60FA31F84644CEFA02DC2323CADB246E64DE08D9BE4FAEA -59D1652DFE1A09C41479C3CDB577942334F8C57545BD883E0AD172CEFE546C21 -5B9F63E32980B1E57B0EDD66674C9D919F6E323DA0A0CB8788F031BD533615B1 -D27320ABD6A1147E3200322DB2D8700B3F1F8B19E3C5B67842E84469D997B702 -0D8DE8894F5422DF2B9244C20186597587D3852F34ECB21E5244EA9C8596F0D8 -6E4D7353C7F6ABCAC499D7E34CA7E7789A54D712AE69DE15F767F045E637DDDB -CAEFE413AF652D849D58D52DE084956D177AB7E3A9146B8A56BA23CB3F734298 -88C66B7C2B084EF219FA08BC87443FD9D86BBA351427631D368F514C7DAD7329 -DDCDCE8311971D746FE79322097E7F676740389F17B11587086942024918CCBE -80A60A78D96F3CBB59CB81BF5D8028475316D96E12248867A3F23A859F8AB547 -B1F06C1ACFED4AB83378932A253B8FF8AD5F44BB4EC7A7F025BBAA179C81DBA2 -049053EDA32AC126C4F222B5FBB1119C7BE3F4BE0E9A3161CBC5F4842E6BD743 -11903130004FF705BDDC0EE6C1D97396904B295596A226FECFD665AE0A6F7EE3 -FD51F370008D1697035CCE907243038E0B0487A6DD63F1ECDABCE1A71193FFBC -6DFBF1726156A4E9710C0D272A7A351F8FA0C2785BCFD0BDCF1B4250675B512F -997677E512B29D85313FAB6F7FD26B402E1C4B2E270E264422D1375B93EA138C -171557C70A07C8B330E0C0602949C60B9D921B33E906ED3858966A640367C505 -2E3D254C1C0C63B3F831C9D2AF2B2FA6FE8B663F94B72A7FFD63712A2C4422B6 -6E3524B5AA8D2EB9C7733BBF2662B64B3428EBFE956CBD500DC71A4F4CDE8896 -2EAA65771273D823E8687E2FED6A26D7DB98DDBFB57670278897D2AD553D6AAF -6F1117C4F894AAD44F53348A763289BFEB2E9DF66DB921E402279FE17634E0DA -576F0323E1F849DBB1E7E56D0303DD2C81EBBC192B5F8C13A5F5028D64DF153D -C7E4C2A59A3E369D44F346BBD79A4AE4930E3249C1FD5CC8B4FC6C753ECA9326 -797F25BEE6BC66E125AFD247A2CC2F61A47F03DB682F67382B2E83312D1D239F -39D8BD6C3256FDD8D424046A289D17984ADAE316FA39B743B12419DCC3C8582C -EF6BE8C6E7A091F1EF76C6090C15A7742C5F66F66A69DE863256574491B422DA -93F4B0B13E69B03D1A92840D80B39C96A535C2AEAFB579B9051CCC67E32103F6 -21EADDFEF9CEE1980D3F86DB452B61200C9805EDBD219E812F22AD612B436E28 -D86956797AE0FBBE0A0DEDE4340B51D2CEB5127FF7C14C85AC55C55A1A9412B0 -1471CDF9FE7D52A5A069669A9C500FABD920863628E541893B2692B9D40CF391 -69C797742BEB239A6FF37CBEECF5ACC960011BE1CD35241BF35431F902EE41FB -5E89FD3C7FD3E7CE970CEF9A3BA9DB4F10945568813D4566F5939A7CF94CF2B0 -97E9D335CAAB09BBDED1D462EA787E5FD11A63B17D75882E379B490C5B2B4440 -FCCE6CD6EC2F4C21D5443E6269734EAF0A61520285791FAB0B421D5CEB2CB165 -286278D3F21045ABFCA81CD9E50A733CE516E1F4C494FF072C50FFCE2D746CD0 -0D28F9EB6CB77425D0F4188760F61C46101F21215BB89FE5FB9684F2E9BADF1D -8078D29B3160EF63A74A19E17202270928654B95413DA00FF89548F30C8A2146 -8082CFAF97B44733C420572188F01731535A0F5609CE44AB565563B15212E835 -10E5EBA20E3B1635B8E08D85E8D282D51AF0C5D8B4526EB0D43325370644445E -087E067A1EBE6E9C5A69D8F2D32E2960FA2B26B582A4D2D9AA1CC49408E88CCC -19C63FEC3256F43F55CE38B3F2D7902A4978918AA2D9D23EE839BF2A901F0649 -856041B1F62612DD6FBBFBD1D3645ECEBCA6587080C6DE11DA4CC9F8E08758B4 -37D559BA464A49A3AEA6373DAD44C615496C71C41080F4357FF2ED23608BB448 -FF983C196501096A58EC0C0FFC9BFE36C735118DFA981C69365EC6E543BABAEF -0515AAA6E8E34711747D586A6CAAE1D3D0F2EE85DAE124D93A6EDB408D9FC825 -7943607554B3CBF71A9843A76A69D7533865BE78F7BA15316360CEC333F0326E -EDF8B884A60A0E02401A2A1E3C18C89580C030AAB8B94438214A96EFBA9554F8 -2AAAA5C653E94FE70BC18F998BCD6713AE8A087E37097C36E06C1E929278F668 -4E6B169E30196E373D89CDB6BDA65989AC54ABA2678ECC7EDE24AD6263BB0301 -012E31B2361D62F8E08528558CBE40A37939F09069F82095379C56C31EF2984E -78BBA233E706B9575A245E527CCD6EC11075A3FD2623B49E2A68EEB68030AE43 -1D7AE54192A39C52BBA92FAEC3899FF0ED859B0051537F998743B6C5F2DC99AD -FDBC65E51D3E82B70CEC3EF1C3645ADF893C3C5F3D25D51CE54CEAA463F8BF8D -EDC3CDD0422C12FB34C87305CD11F0005B4AEA3E9AAA000546E4383C7B8629A2 -3372E0E857C5A9F564E6FBCE49407740873A109A2B8FC581171B6965DD349786 -E547781395D8F3E42E99BC556A41773DB2BA8AA0918081E4983B9F8B43A15544 -8D15BCF336E93F8CFCE6E79940A52F9B7067C2C8688F20F842B2D0BC02DB70A5 -3074D0CA85BBD01D6D91B2722CC15C866448C91ADAF9EB2D2A52F08B39808E43 -2A492AEFD45480EBB07C4182CD6DAA9C26A561B83E381594A1AA0364C4464AA6 -20621994D2B64D09B7F460C2D6A7C264D89E4415A9E54A53CC8331A3D358BD14 -4894EBA4DD7AE1B836E2C9246DBB0800805683A11DBE420BA989837D86A1A600 -8B669C7A7283BB9313F045A08602B7F98F78A059CB086B5991F761CADE8AEB86 -5039C35C2FD564C0D8CF404A5F32D7C532716169EEB6D08C8CE5BB357E4CDCB1 -5FCEC35440433719FC19DEA55B1662309EC85EB47B323CE2EBA56D17E0A88175 -B2FD7B59B37F7D48FACD52A7DA80BC296E62D60D6C5F251554138DDC4975E308 -2F9673033F0A255FE037F16CE58A3EF652D3DDE2AE7FD39AA20E88FB0A7B4598 -02E993D6550EE854A5D9ABB3B15BE396E3FC2DEE919D354166BC1A2519E0F2C0 -228998A7243FFDAE507841771E4A88B610F1D390F7898CCAE418C8CC15A4B3A0 -9B74E01AC32BCBAA020C99B6856952158F866E0AC66F171C3A3265E713094F71 -BED491A2ABFA737A0EC17DB262A73EBAB9F8F9E96DC7C5764B92D15F5C967CB3 -C846C147DF1568A68BE099D8E38B5A9FEDFC66CE2AD3BBAAFD72AA51D6C08A32 -AD54AE75530267728A9EA3244E8C8CF67C5A28F67068CB4CF90FB76F280930F1 -893C952DC2A7ADE38C692BD19FFF63383308FC2873CF241C1C3D1ECEF6B98CC7 -287D9F5F0C61033CAFA9739D9941AC833A194E67CD1B9CA1FB4A02F0A53A814B -565CFDD9CDA06303ADB599D6CE17A7F6A81C13040FB7D6E98AEC4BE9F88F3B29 -FFA880E8CF8CB6F4FA009C4354337A43DD077D40C993A9AF66D2B524CEE5FC0A -BDF03740A45C0CAD814E869D435C61A964D0644E93C6F228B205ECDE4EE59D67 -C35647FAE9617877DB23272A9D777262A1DDCBB7CDCFD2D6136FF69C000F9B29 -DA30B2A654C27C564F113FFB52CE2F6618EA1C8102FF9D93B0AA2C936CAED8CB -1A9F2FA71930351D74240F88DE47423EAD67D66C20C8DE2ED00C94642C25630D -4A60B8DA5362D00F3399C6796EE25BB88325E11045FB6E00B72706257BDDA2E2 -76C77F6E0030906D646D759447343EE6CDCF9A61CF30C1392BE54A0F5951AA69 -461E856C4A2921C859E03E13AAA1D6F563D5F62A66065F36ADA9A08A697F53E0 -249DB7965E9312F46A18F6016684708F397989B1C291F63C491B48A8B1A51E8A -2C1DB13DB081B75784ECFFA1735A0DA6D443D7BBBF38B16874B57891E3C28A04 -C21978532D806CAD99C9CB00777FC2B9582CA68D285D0488B5724B9EF603D4A5 -4DC01291C0AAE941219EB99398C6051357DF7138324625A4C244A3B127BA85E3 -08C8272EC75E848D984E38F151E9C0D46D1BAE4648F7391B59BA76038391F306 -3E8E72B0B557913A38CD6042D2ECFA192A5124B9F58C887726C72C5518D3CD90 -B24196C04E0D05A6B590E067B17103BB36AC830CA181BAA072B137A344B7570C -7EAA3272A774A58E049F71DC9DF45CD22B1452A26BE34A5179221A01FC5536DF -BBB94E93BA9EC169BE596336768AA8C9A72C258B8A8CE7C511DD923193D886E7 -F6C33E5FD68032A5A4459955FFE76A8D5726AFDECF42818BE43F03D2B4B8958A -38D94568751E5468A1322EBF924C7B587D732486DF8E309CB7FE20F64C6A371D -D62BF5A33B49DD267AE4C3F638A76BE6DF49B693D40D8AE1E9F0C0B0606C84E2 -A6868B4F700A6DA1ECD097C96704B17DB76621FF4876149E6B2FFA89D38D8F3C -1026401F2CB949DE9313115E6626B26082B1AD94D0C1F8E7B907B3676FFEC9E2 -E31FAC5504207CA741486734336521C2F9BC91AF257472E4762966AC19A6E89A -87644A22CBC9FECECD919E513209FF439E2E7F24AA80B4D3C940021C23D7A921 -1B6E544E43FA00C4540C73EB0F3B8F352BAAE6CAA924C1F09C6EF7DCBF4BB88D -0BFEC67C79B6334A4A0E6099A460B57FBB845831ABD0E83BF0F92491ADDE5526 -E036C58BDF78FE25C55B9580F6D02F2C2F7D77399DB7CB4B8B8E037538D2BA64 -BE2BE4697B87366CFAB5A92932465689775FBD9F87AED9B53303DBC13C0C13CD -B549FF2D8C8C6C9082CCBB9B6DABFEBE53A85297555389E5A08E47F27F62EA1F -11915A06C9A1E82C37E4AC72B009B0CBEF25FE046FF9FF20D50DFFA97AD9856B -B51EEFB3DE0472EAB91CB0B51ECF29EA2025422B31C811C3E449416B8916C2B8 -63E9E4A80F9EC738B81A2A32BF196875BF8F52010B1DEEA25BC2719EFFEEA0D3 -A3AB794058EE49333468A3CF5D13336431ED14CEFB1A2D067AB3D2DE942D9DC9 -C0B5CFCBE9D9A4B53D9B2B19E28F5416F5DE29E73156516683F169BEC75C5344 -D953C9640552267E6CE554C418773F06BC8CD88084C60F8D7F37523922B4D49B -ADCC93A64D0C92973527A810F6B0239E5525A6BC6AEFABBC8FDF0B7E1B368A52 -3620DEEC31E00D6CD5F02E1625A571A6129DC18333B395D4680CF6F69CC6D359 -4C444307FB45B09509E36E0905C7B2CED23D9B48FF65F31EDFBD2073F718FC34 -99FB4A68B4225D12A42FBB14D7A3FE9D2CE7DC8925E6BBCC4EB53632EA3432D7 -BBB17498259DC19AF7E6CA3F124A7B39BE4C9768FB49748F5CCAA3D1940E0A49 -136B3F49025B2C3D09AC6598844D9D113297A68027AFBB1D8341FEC07FF6CE10 -28358FDBA753264E7865B5B311532DC8D16E6E1747E53D96E996B9F27D9CFE93 -460158DDB6708485029D6F31729805DA1F445C629D5A7048F06D8BBBC6BB69D6 -FB7BE6BF7FC02EC0B33462CF5C756F35AA56886688B05F6A417B8BCA35886256 -8EE314686DB5BD49E631AC220C299A8C5D6ABB974C45643CBC589EB2D0DF48D7 -F59EEF1FEC4CCBEBA797DF168D1D08EC7467E7C35F421BB6BEA0E9C4846A84C1 -70FEBABA787CC46391393A0B99EF0CFC33730140696B0DE9C57E90231310FAD9 -D67462F55A56D9666EC08AC424E940CAEAD58503911C4D80FD59CDD5182ED504 -656628B1851818197DEACC842E943D5A2B75B5934E8AED3E67529FB51E625A14 -4D91B077A53FD8C69C930C677497A36A6A578A639EFBDE481EBCB80536C9CB96 -0A2E54A15F6940F4FECC203A440AB47439C9FDA12A9D78B74325ADF44010BF40 -6A5FB9C012E07A557A60326983A0802424CEA244DDBF66CDDF918B30618F348A -8C5086F7A7BB1A86C7B4826323802701A584D17C6E19AB720CD13D02E8EBCE16 -4A87BEA7C6B76D05D49CDBE8549640FFE6124D2852A00A46768FEFDD2DD5B60C -3AA80C3839A86B4EFB035B65E1236F6DA58BBE2A9445311E8714C82310E6A0D2 -E926A3D18AC3E7A8F8A61AAE5ADE10E43116C105653E3A03E895BB2F7477A0AA -F1E481B4F1B3BC9DB099E60681EF3B0476D6E84DF5ADDA588E8320B4899D2D40 -F8CEA36C2039AE832C87644E2A3EC19AC8FECDD575364238524BF5F76ACB02EF -094278DAC561F700ACE728478FBB8E0C192795AF982216E2A4A3488D6A4BF06B -AFB8F4EE78DA4FD96437A45C1E1F49E83D6E85390F8FF9B8E487AFA6184FA430 -2A3E13C59C88E3FC8ED9102D485FCCA463197A32821988D1C0A7A86620655DC3 -DFEEDD33B3A1F55CD5599A58D0F4A390B69137D947897DC448A8255A2521EFCE -2CA896955E05BEA3480166F9FF82F1B145DCB56B6872449335275533C38336F5 -4C49F40D0FB04222D14E0AC8057580118B1EB1DD43A8BF334763BBA198D851AD -47F4499A2922816D2F0AC1956B4410E617201C82FDD7761C1A0C8AD025FCB1DA -9A0722266E22C438C10275CC2BFFDBE726084F9CBAD1CA9ECFA072EB5A317EA5 -2A8E39F8794209B978DDF404FAFD22831F3F53356401FFB85334D339426CCFFE -0F869606955F20FA055EE560B4744730EEA18CBBDC134644F124B714FD43653B -C0879B820871B8809020301A71D37A44252491555D9B6278A9070C088C0A80D2 -BC753160E83AF282F3DC077CDF610A18A1A83D4920EB6E2A2B73E40BA112F78C -A18A26ACD11A5D4E12C67A631D4928EFB809640F64571E5605AD4BFD3D00FFCF -FFE4FF9FFF1A63002175D401D4BBD218F40B4C56766A4FBB93741F9D2B746F78 -B062CF36E60973FD3D52810750C06C73CC376F5291442A4EEF4B2842B6317CB7 -E1AE735793AA5CD2F927E4DAD0470D0A6612E8C0557245213B0DC87DF4B9CD12 -60A6FB3955E007041838B667417524FED98D5EE035C212C8377A6E2393D86DCA -BD5092520A83CBFB978D2EEC4847BE9D4365714A5F36B343F87F1DBB1E2759ED -78EAA5491A4EEFB8FE1FBD10112294959C42FA664442335E521CA7D7E7BDA468 -AE36FFEDA896738CDB3054025485FA28A071C96A003DF5A940261ECCE471616C -A5B0223E7F435A096B90FF8ED7D88FADF050BC4C4C1FA51D4D389BC36E9D5D70 -9C38800E0CA38D1A045586E46563D855E4E6A8482BDEC35617411F8E046FB838 -1F745325CEF7AF2EF0D7F912A34BA6CE8676944A3B12212CE7AD55539FD9179C -D8BE8CA39C9EEC948BCCCF2ECCC8F10DD4C8E99A5922BD9A56191C4900063DCC -C3BED41EF16BD2BC1891D87E5DD05AF7C25D7E92B1BB87D53817643B621BB21B -EA839B295433042A7E0CE294C031A4C460F05D16B46430445717EAC72766909F -9008EF1F3F8404DD56B1B1F90A06D99859A1C45F7510B9E7C6929BF9E54053BF -95B4911454183A5F2734C2CC7622ECFD0664B77640C416A1DA10F13BA0238C25 -DF6752C9B793F8FFA012C6E8E2AC81DDD9E402F42DC4CD6F290BFF4B9C633E1E -52397F385B895FA3DC7471F3EB97244EFEAFB11BA92C994CFB511D7532304836 -151A4087F1CEE38AB690E1DE2354FA2A7059F42982D0CFD01BE3A320FB078F2D -7947E9A5C973DFE340D0A742170386831314BDE9D67134451FDE80E093C53F37 -F0FD8CEF42FA08555757888839D9DAF23A735243EBB372A5C3230B1CC2F3B5C1 -C8C19CB3C3E9B1A42D0B314E778F7B3F24C8D61375FA725B40F561C6619D025E -899BAFD602833506BBC5B6EC86A932F46338E7E26EDA743CC51D8E4B3944D186 -7EFEF666F9AE87E395FB9DDE9A936AB87B90771BE94B784B7584D71827874DEE -03B55096CDD953D93FC0FCD7E878A11EB46A10CCCE040A90B375995C5FCBBB27 -5D0745BF763C61DCBF193651A3E36A4112F823B5607F418AC8C41B51221F9E6F -0E9DC72ABCAC248BD8D83949A24D33DFEAA363508C263FF9B222347DA08B99F0 -2173065BB9240A61135E38D461736B04BE918BA150DC90043306056B657D6CA7 -FC27151322B0F132D91C0BD0B9483A6A26D84882095E20127541BC1D93B72AE0 -8A68A5DEFB35E50B37ACB926DD8DB96B910BB6F315FDBAE48531574B9ACBB438 -D1ADA41812A752E9876AB76B31CDE8EFDDB0DE7AF97238A9DA0846EAD39DB2AB -30EB7D7F61DB0876FD294E5E09916F0C79417108B30597932BF1C81DCF5CE0BD -2D65C84441D6354A9C8647D740C1B450E5DD3237EF9BBC793F1148155C0F950A -405BFE9BE30D9EF9F8812279F71B30949F8640E9D0E5B6CD133153B2866E7F35 -78795EDF42FAC47913A9083E7069C4D4E6B0642F55FB481E7004DEA3C3C86177 -A103AFC8FF966BB958BC5EAE139870EC202D1BAC713AF4E3F2FB9594D60E83F0 -8638980BDB2FD061C867E748420E45AFE685D27A2767D31E272B43EC2DDA5424 -AC17EB9D1C7CE94DA05F741F0F635361325F227EC2DEEB5A3EF3AF4FF03F5FFF -349A9571CA07A944C3974706C1E1A2A433F76149A1E33322E05335787A99C9A3 -98EBC8894218611339E7F065F13C02CF110ECED530FF12350140A7BC7BC810C8 -F17E870225D6DA162362C5587A4A13F52E9F92E31D0DC959DA76A3095661D000 -25A9EB458084039E445529C5A08E3C66FE115D2FE1CAD9CF27315D440FD45C76 -464970D0438E3C1E5F9CE9A9ADA95C5584532C7998063FC7E4E4DD3248148EAC -10DD976E786084D5CD51D263AA0B7B5F0C31C1A127E03CA8AAA424C6D31106D9 -5788B85D5B2D4557615AF4B1CE34CB66F61AB005C5968756539C44690C3B93E9 -0629165F9377A1B449E2D07356E10DA88338F5B16EC8DAEA544ADED4B3EDD716 -550D9103F3F97E86181B8379D37E53FDA0557BA5EA231B90655957080E0E6DC6 -114D07BA1C9D1BACD0EF6F7997BF73482B194824A1EE1A39A6050213FDB4C820 -FE4BDE84724041C6F51287B7AF2E7A19558AB32EE2DABA726577787D5A136434 -427EF025B3D99F7B916F17AC1382994BD9DF6FD023D2AA72437FD509F55D5EA9 -189108B7934E0B0CEA9E956A000C5E23732E45BD1762961EFF36F7389BA1BF85 -312959449D0751E198C9C34E1081CD049759573217FB73F6A7B0348533F2D942 -9CF18688587980A65F512906C42593767D8A08F81C62E42CF85B92366E0DDE12 -0B04CD253800423151CCF040354A70EBF850C23013A48ACAFC816C4C002D0BAA -0BCD2869368C497129DFA21813D2689F3EDBDA0956F822751B125CA6ACED9525 -51F85272D896B6A12EB9FB8579DF5FCE686804E3D4BCE113B5FD83478861553D -75E11E30471EC3A76C5DA24F5BDA4C5A8B72E93DFA470B7E49CE1F960FD3F10F -3E0E32BEBBB09244F091ACFD721B806D00593A925F97DAFC22C86BB5B0D4648B -1BD0C32F5EEB7A3CD106C00015CC89B0D2677C7B4F2D3D818B40336B24D3B7B6 -77D03EAE4775C93326F7EE747CBD71FB65A2A2EAC5F1D03A5999C5689B099127 -61A2F058BD984FA3D2785622909A03EDE1A209ED6BB56237887479A782C75A54 -BC20ED5EB4E2BEAD28641E95237D2FE51C70AC77BE31246C92D4A3175EE3FE6C -02612C7134DA79EAC6522DC1B52AD97132FF53EAE224C2DE9BB37E79464F08E1 -7340C8A79B87B439A484AAC56037E30DD391961E99B1BD4034BF50D00C1657E9 -8FCF4C2DD03612021175360A582CEFC4A7D12642EB33567A389EFBE03712DEF1 -00E971320F62E803F0775767620F37B34692C313FB9C0958E00597E1953F79F0 -F32186D202AF03829D2062335B64DE098D4ECBDED19516A3F4DC88D1799D0FFD -F24B2C0E899D45756733EE27A1FCC99BEF10C462E9F9B062E9BFC16E75459B76 -06D84FE9C552AF42B0B3EC237785B3CB5075ECB9DE28817B55C85AAEC0C94C4B -DA282188747A4CF8D63A50B9923CD27DB14D3BC523F41728A2D90ACF46355944 -991DACE13425D8DC18BA74B9F61923E45C978DC8B2D50939947CB4B33596D6D8 -5AB3DD0BD8E4CC3CB8D14590F900354CC46858D09C4BFA8142CDE33F8B75F349 -F535CF80B6DB8E64E6DADDF520D9E29D957BF1E298027BD5D0C4171DB575EA96 -1AECF1C3DEA0950BE26E739FBFB2BE59B86E188816CD44B7ECA980C1E44AA079 -AC2E7BD3C6FF65D9779B60ED34BCB38CCF793BFCF59B84A89A8C719C40EB0A23 -A91CCF0C21CE3DF3985E13C2EB9F89D6B7CE6923077D5E27260B55BC9FAE73B7 -C7EDE7676F922A8366154FAC92C7455863A45C4F4BF140776935BA4583CB1EC7 -1486197EDDFA9E46DCE6A28C992B10DA89C4FB8CF80CD39AC536C1D41C6753E3 -692F8E76928B5D4F2E86D30F7B3954BD6301ABB58CED13884C284C53D7A734BC -46A9502745970B12A16058695801EDDFF1E65F7242CC61F6C4163A67DB236F17 -704CF79727413904319002AA4D81BFDDF64EFAD2DC47FB896BCBC5FF19FCA3ED -B2321FF9F8504241CC25C1922DBB23CD6AFA25DDCFD473AC617F1333CFB469F1 -A343455681B59829DFFBCE8406D374059A724C7124FEBEE05F9BF3206254A931 -0D276555A890E38C69BB578DC8D7511E5F82A15E8E4BECD06D47F6E3AFD854C0 -B968F0923B0D7A3672BF7CDA1DA9CD9FEE74D70A2CCAD4055062E3AD8685FFC0 -B5BDDB530C857C3C826981C0F2F91574DE71274A4E404A1D73020F4B50376EFC -748EEA93D6E1E2DB1144347180ED372D2727E2DBB8E9334778AB1C4E67993D28 -5EA56E402DC2A8B87D017778ACB9585D9C73780CAD7CE94B6BB727BB93366612 -8DC1B3830E7E95EC7EC2D539FE7E73E55633CADBC630F6B7DC36D77ED47B2958 -0B263DB67F07E16A040DC602CA362233C947B95F63F16239F0CA977F1A99F9A6 -B36F831B7D8AA5BD29DC4E26DB4DDB04508C53EA8041AF99D33899327C353C96 -A765BBFE74CFDD198E2FD0D9B9F3F76F2A8178A530919CB701F51DE0BECF3BFA -B6A10EA4DB04DA17C04B2A932E937CCB268F5F427485C217D284CF602C9091E3 -6977BB4ECD4CA46905E79C6E847C0B7FE0A84F0DD43F7EECD10CC502F95293FC -078348DBDAC9DAF6338E1F9D7DD289F52E1021E27851CC45AA0047F2FE07B5C7 -A6F0F8BB5E26BA7FFFB21082351804662F9C476E9D721E8A5BC81F2E5CA81F45 -4FC091EC171438E64ECE1899865F483D6015792450AE1186640D1E3C328B915E -2893621345A8EAEF8A017CCA2D2608C5823A23FC7575397C3646476E8D26BDD2 -8C51C4CEF109EDB677017739A53CFA6A509AC5152077EA5ECD7A176578B6BFC4 -ABABBD0C484F31B293EE6FE8E68A281EECA6198A8BC6CAD2EA4EE2C49390AF4C -6A710275742AFCA4E2A1DBE04123C080FAC65EB8C6AC86388FBFFAC8EEC49BAC -464C4E1AA0DCB37AA6503E364FC954BEC84C9552300DC9495DDDEC35795EF8AF -50D2C0CA0F238B3FA1CBBA9F9CBE1F621C710F73B7D456073082BCB28170407C -FC3007F52CB71E08A85621B22B4DF750D011175E0A29B4FEBC1D8625E713D050 -31325515679F4A0D6EF17529A37C0BBC3F8F2F7AA0A6F57977941AB4133DA64D -1AEBE4C7FABCDC25854BA5583678FFB54956AAE6D94F3E06D5C0F27B1DCF2421 -1C74FD8D4F0A5824DABE0346804CDD2D96BED494EE8B9D99F133F325D8CDF0EF -431AB25D5025BA7A7E8B329AD2F89A53C3855AF9CD54275E030C3051632E5CC0 -994AFBD2A15772BAAFAF46FA10543A2B0AAC06163802D7F748C0EA0DA9072E54 -19E4BE682E9CDBA0B0D7E9F60A90C6C8491A6F30A5D310050DBCF613CC297D4B -66974DACBFAB4377A753A16FE6394542A275D14197D422CF91FF360E8A63E8B0 -2E746082582E2448F6CAD56E488DBC0F40FCBCBB993A787E70BC9D8E24176B61 -FF2984A3855F02787C6C3DB41752B63FE0B7B090FC6D21763E96F2AC80B8994C -FC3DD8AD32562184A3FA34CB6C0C73CB587529E35E72337A1AD22970995051DE -2D10E84A14340589B08FA907F5A3570F98713316F633228AC0BBEC6789BED276 -6E2E1597D0C8C22705A729622749A30BDD267F7BF3CC116F7F888A4F4AFCD688 -63AE5A71F1E2F5EEFA3B100B19D6A893BE519DC5DAA215B143F807296187E4A2 -F52FC1F4448B0F4529E2156CE980293422994E484EA3F21C9FF7A56BB005A4C2 -F073DF6552D40E5DCB7A419C620C9127C451EBC2E341CB0649A503FA0E1B38D6 -2BAD504BEEEC35C13F6CB0659E719FF18C523B882EBD74D43D769E1F8A30354F -8B790EAA99668110FE86806BDB239796E9F55A75D110D000C72AB2A430241713 -FD770F84793CD7BC488B8BBD59DA1BE3AAABC83F5E699F2A9D4870C2130502A1 -7CC2368B92CF0D52CB70446A3F634582E2E3D320CFC4353A748C1F1D91C7E4B5 -5ACA209EA88800AB7293FD1E8064B10C1A5829535E26D3C55AF6AD9B4ACE497B -FAB377677F34D002BCDF35C0BBB7DA7833638683788748A16D075E344CE8FF95 -C09C6DCFCCBDB48EC084126BCF94EBDB1856940C67BBB69B8825E91A98F699EF -2E378557776C9788E2A80ABAFE3E7E3BB6C0F32FA770597E37F271C50C10A9B2 -F90C8D80F4BD9F4C1098A306CE886C127946D3DB39C82F31F1CB1B1451FF6D9D -A519AA74E1C7C4797F5E3EB440105C51ACFF85734924C0576E826B210C501232 -456601B688A3EA9494A8F391E1A0BFB7668BF6D0E1B82A47E91BC893E13EA0BC -F8B7BA17D586DEFE3F7C2C72909106A651908325E055DE4F4E5B266D71716474 -56D5010FDC4012A2D659234BA355366C4E737FDFC04B7BECE1C1E16A7158FB27 -21AB8752DBCF8EF4AD11D185D7CE3BD84CD520553F0EE3FFA0AB3D773978A425 -F6C1B4EEE27F127C469005AFE5E07ACF2E438CCA628A77D90C9EAF7072733357 -CCF508A46C831FB96D0033FECE34E85023015A3AAA5E373A790DEB5D743EADBD -7D249F543389FB089F4ECCAEDC4B75034AAF5DF41AB2DB047BE7C9500D34C60D -7F38EC93219FA9C8A96523B981103196DB4D45031BAA1CF5018F3ABA08A547AD -02E77C769762C162C7931A91CED9B33EE6C3BF4E59FF8EFE17A952FF3EAD46A9 -FDB74FFB0FB988DCEFA31ADB3F2A78E7C51BB09504DBBF1D53D96676E5843D8E -DB50E2C89E2FA58295694AC71D7DC610756278F387A7809C8CD27152672314BE -E287E774C2949A13B03BCEBA7A9A1A0B927AC46D8FF136C5B305EC65609F6162 -39908934CA61A225513E658F6B42F15A3621A45191F5437EBECAC64914548C8A -6750FA2C9CC0E3BC40E01A21E3C4BA1707915D34CB78C96F0BCB7E2B10892E71 -174268D0234CFFCD5E60BD7955A151226F4987B67A69D9313CDB1ED0F9F34958 -33F7D16834BB40A6EEC4A5E24F57067FB59FB8D8C9AADFDBD3A897D8C91770CD -D4820C1AE39A2D1AEC8B457DD856F81B3E698CF1FC5191CF60B1A80CC3230B63 -59C1384BD01EA86208DE000C9D3857B3243C95D6B6BA5BC693C539F7F6423205 -1F0FC68EB360DA674569C20FB993449096394328BB9229F93F45ECF5E11371B9 -63C233E1661C8451A3D1E076D243F6E887C82E49E00E2847CC33858370D560A4 -6742B1F48C2EE6D561A6D43BE796A09976E0D69A4A6C346AB895264C96092511 -7527320E9EA8A73250607B09BBE48D3952998435F36FE4D1CF667BC28ABCCD69 -FEE40049B09F1F39B64F3BE92C1EAC9C4661EBC403A69A9180FA83D1D5E590E0 -647AD00FE509B0E9FEB752F85726783978CE98B4AFAD649D9623F41419F9923A -A11729723270E0847AA464AEF74FBC743D8D805322360364E7751743552A0AFF -CCEB847942D9689E9659D15A3D795AEC8782C6EBCE6760E687F87095FCDDEA8B -C4D8FCE65634148638A8DE5797BF21266AD94E363F58DB84561B74CDD8D5FAB3 -59A521598B34720C54C0AFC5B1A415B7E929D6EDCEE9205DAAB716379C29289F -2C1AA7EE0776B1C6B6AFCDED4C6ED7EDFF1AA20523EC52F8332C2C0ABBAC1A2B -DE91AE501079F2A4ECAE93FB93082B1A241AA79C1F7907F8EB3BD528A2353FBE -749B89A4FD00C8C9472446EE4B6F04F5073EA7C2854835FFBA548920108192AC -8CC658B87F249321015CA481B2A5F19156F63C5F7C285E18456D0CF0E1ECABCA -C9702A3DC3911A3B179C837D4849DFEF463B9648AA2CEE8C7B7304B551296AA5 -4E73AFFD0D86AFBBAAEB71082E250627D70CAF3D246867A3676ED1BBBE99F6FD -32BCA350821E0925E99235BE60C72D8270769DBE50CA12BE348D5145598EB0F6 -2EFC2EAFB348EC74C1F9025DEF33772AB3A41D6F8DDE6CC6746701CF75C86B43 -3F9224B633E510BAB613F6EC46A685D32C1C474F3509FC63268C4DF841B9B38E -9CB08A26518FFD1A402D43C079C5603589D578DE2E8225A160625B6A484460CE -5C445FDC1D3A58A982D205C370D86195D988E277F92937BBC9FF72851B0694B4 -D484FE0755962D2C4D81DA0F1F36973CD69765482A7DF0F5E701A3C5045C97FC -09B5DEC1E35BDF033C02B7155B72851ED7A6BFDE12196DB43AFEDADACD52B93D -E6F247F438A11DBF4A6D6CD59834865EF349F87DBB7EBBC5503492F5BAEA9615 -32AB4D318C6D1BB372FB14CFCB4268EF69128DE3FA99379609DF7099E459B557 -E7CFA0A293121A700CCC679D815F0883CFAF64B603C9E588488904267AD3EE3B -9A8F6BED8EF48582F4A420AAE9CC3E0A61EB8D10C816C3091074E3B6345FF4DC -37E1C1597DA71581A9920E9858DAB295178521766178F2141851EF5E455CE390 -4CD16782A04606397A6B4D13303918255700FFC68D83420E3F37437C073DBE9F -C80EC3F7D915376410FC4961F37D73D13268B7E93C8B4F29880B535D14DE1205 -615CCB9BCDB0164F2D9C3E9515BF00C5D4E164A6B495E6A80EA01D3D6226BABE -762982E7B5B74799A15819EDEDFB01B444BA30899AF2498DF31B1198C9115C88 -720C6BFFE2E0F33944274AB36CDEC08D18D00AD8AAB0037680DA8525AD9EBA6D -8847EEEF0F689C466DB5CA6382B52F56FCF8490F2A931B3A71 +87117B7DEC7977BAB45D4A945708705F0172351337540995AE30014D72EC74BF +9FE719C2DB7219EA5E6A3CA53D7C27EA091E4DE12F3F810F3EC4838B5B3A872A +1B0DFE67C25B2ACABEF6D82C45EC9B15012FA9D0EF69265097E91F969C8E22E4 +825160B96EE9181005BCA35E04547BB8CBAB3B30F2528D7079582C527E1B8CA6 +C1529ED70029C8B457101889C37DE12541A2E6341F99E181DEAB84953F0733CC +7173AF3A2D4999A6F798AB596B87D44F6B57672D6E475A1EFABD76698CDA887A +86201143CB6EC8DD7A64AF229C605287F51AA88BA1C990396DFEFDD49DC6CA32 +C04D614930E769EAC512FF6641FBE41DC7A17B1D97B3FBD502CEEE62B4025AD4 +CDB70EAC958BF00377ED2DE47F196DA9DF0AA00C4E7D8A0578CDC6FEBD6C2DF7 +1D106B4F96B691EFC625F778172E9A9B2C9A584BE29A1A287FE111BBF534C83C +B27B599AF047F721A0CCFA87D1C00B143C462875E23622D3A779FF507C99F3BC +BB4CAF154F6778FC3FAD419FE52CBB00BC410138425272C2FAAD9DDC4F890C5C +A31BD41CE648AB1F381FA44F06882480358894A6AAC407A6B70E571A0CF30B88 +9EF5E9A44738359B3E5A9704F8827ECDD5074ED2282366CE985AAFADA0E45B21 +26023C1971DE56B6FB238242559F7D045FF616ADF1944810ED556631057C7D7E +105F841A51C6BB76AB499A1E36DEDBCA0E9AB0186F59603F20B56523B19E811B +D8CFDF1025D599542B34AC0484E44656800FD656D07030C7FA5A6A2FD92E2E65 +D92F87A8B9FE63746372D2C48675C2E786BF8B83ABFAEE2B47F36C0D6F7C8C1E +D13BDF31873139BBA84A9083D29C46AB1AB9DA0DFFA2616A4942B9590C690405 +811F77C3920FF661BA03A1A50BA1028E968FA65306A60A8E400A9414841167C0 +B486063FE9D4E76C5147485E05A5D9EF4809CA0C41DA2123458A39F503393ACC +C9149FE8231D20E669D67F3D9C19547BAD194150C13C23FBF9244CD77F898337 +D48E576659113F5F5B9DFCE2AD35EA9CB8EB0FE36BF2761CE4130A74D320C419 +B33AEF7611D00554920D6484F1C2EB22F9037A9F7002BF270C104E2D7E46E651 +53EA393C90A7A70DC8F72C2733832758C18398AEB8807F392A12EC9468848E08 +3749E6477D7589D6CC7AD63ECD52397C33372AD8B13BA754BBDA5F8F92206235 +ACB6F489B306720C36F5A3F0902EA7B4C69968C4362C7CE69DF0A31F90287083 +C7C004934F23A70386C9F0DE0FF5684623F8F723A7B5DD5EA6981FA2130078B3 +7EA4E68FD012555D2A74BA5109F1D679834C1B4A8DD8F223C809699F68E9F452 +3E7FC7E7F9E30A19C5212A06A862FC4ABE835B0B17A9A7788C5EDC7B33DD4080 +F3EE40A8804B7AD8674BC414ECBEB5DE743BD7963254A3A1693F281FCC93C518 +E54550AE2F236B42B1AEDF3774E603ED850DDCF09A6EC4A92D31C29BA867B3E5 +CA7E7D37B9985C6887A1402C56F574D8EFBEC2353E4A37294401A267FB79FCFB +49C5A6DA374E11EF1C2F015574B9A863DC7ADE154174789E5C0CAA8F0E648986 +16433040F58C804FD5A55450B9B11676D923C2B0C736CE71DE810FF93B29EB25 +B7F7FC77020345B09006F502D7F83B472B807424C4B02102B242C07AD309D63C +24FDEAA9ED39D7D5A3B01ED5DF589703F10149EC39ED63A5C337F25C0BFC3621 +B119AA613027CB5069C5D6854BFE89BD19441E91A48DD928839CBFE3317AF4A1 +4FD6F452D9344801CBB3DE084DB20DDC7F5111CA90375543CB763F236B29949E +ADDE2DC1223515BC76F812683604756A157173F8CE30F9FC794F8C7BB07C5252 +3185EDE84CE45E99681DD14A6BC9DE1E942FCBA2CD2B7A94AB7E5E451FA24CED +6D008FEE900D5D8322154DE40D893A6BA762DEEE301DBC40099C2CC940098708 +8703C1455D53900E0CF9E84963A0B525919F0CC2B64B8C835DA217F7245432A9 +1DB5F10A9D4F5E63C28C40C4799D63B8167C8E655B0FD33487CDACE323F30452 +53856B3EA67DEAD78E79800F6C0BEEC94E9F1DEE63DDA1F873C72A3A7444E501 +B6B8FBC2661FDA22D4B4D1F6C62226899EF7A53F7DF6E9E0BE0F3E94715D786B +D80ACCFE3CFCD44D2C448C9D6D6F653E4A2A67A3E7FA3BC5A96217224772AF14 +F6ED81F68D5057A80FF9AC1C486F38C7F1C77AC6405BDE96A836A0A44E7905AF +2DF79F86D4BCCE65BFBC77F2D328D8807BDFE4558A3EF98BCE198C75DBA06144 +C62BE0EF71E2FB24F882A01770EDCB7E9E8E301284AD5CF2E0C52BC215FD6D30 +BD65A26C8ACDBBAE2CDA9A44F1DE42B87C1823280DAE64B66996048DE1967489 +7D2BEB683C93C909F1B09166075DF1720E8BAB3CEDAC1DA6C942D71F59D74D98 +D7D524CE9C5F30FABE9925BB30E2D35E274A052FF6324C767AC44EA28D091D8F +57B6C156EA89C0889161EE4F8C7DA5F8337B3771C6E0E93ECD69E7DC5258A9F2 +289CC11FDAA6E3517B7375762E6FCBC1BBC88192AD19299FDAD5CD22E504209C +1BE6CDC2EFEECB8860720189983485E10BEE73E6B4872C8B419F86E001925E28 +B483C99322E6DAA27C2937C8907E713C31DB7EB0BC8725AF870E3744168B97C6 +BCF3483EBA58CD5E9F9191C5DF2220E24B5A0739172E6D86EB41EB11276B0500 +69ED1186F05525572CDBDF3BAAFCC05E372D5C0CE4F8ECF7889C200E194A1FF3 +DFF0D042E7D3AC3A51A827A986E6A3DB8F8BCC5B66E509F9DCA18489A296A1C9 +C1F76BF8B6A79E72C1E0E9C0A9F49954092C414DFB77BE1D13214369E86D2608 +52E141A5722ACB31FFFD2CBBEB9CAEE98D09601D988E98FCD0835D574064CB29 +D192A8410690CEC6FED676E5292D87C8EE0354B5E1A2186BBE3D9BBFC1C0ADA9 +65A9B760BB36F52E3923624957D593F8FF6FC6B6BD6A9DAD2B511AC78FC52A64 +BB64B0BD0235689F014D92647BC1ACCDE52332FEC0A7428D7216FE2F841AA42E +A2DE24564A6A693E0E3291075A1D18337DA5DEDAEA6FDAB77B3ABF2711E546EE +616EEC27D4D0D8BD5FC8D2DA1DBFFECEF0640D7159DCBCEF0BF8DA0B6CAC1AEE +BC67DD2482470346CF8EFDD8CFE22427E02669044C78EC9947204F9651AB39FE +4B66AF0DA9A966FE5BA4360DB057F1F14D13B3DE6F94CC0BB83AA0F09671C0A5 +708A0B59172593C93D85F048704BA2579DC324B3AEF58089AAE163462C2E0332 +D4985B7B50B1F37048C0E79E7B85A8092B89E6077108FE644CFD0F58B43E9923 +8221503464DFF94AF49FC1121ABEDF250371C9349DCF779C3D488CC43A250C0C +B47604660F86F93B3CC16044E230E48A97606857283DFE219220EB1CCA98377A +B7C54440AFF35AAA326466485AFAA3F5AC8E3D9DBEAE6107AA9F8E97818C5BC8 +852B21ADDF3CAF7CA759CE1443474D76DCAC593A96D757AC642B6B8CBCF89ED3 +4FD40AB998FD245A5B4DF4D501132BAAD6AA70B272A3788E0AE7093B6A338199 +FF7CEFE7EF6AD49AFAF45AC84FF67F6C890B0274F75B65461A8685FA4407AC27 +17DD00EB2B7A5C0771FD25B8C41450E91D2EDBC708B8E07481183387BFD652FC +BF1F05F160FBA53D33C11959F3F2299ED40A81392333E7D106EF5B40F0D38663 +DEE095DAF5B72D00BB4F9F8F26356B3A6456017B94946A3517CF712950E9FF4B +EB8988AE17432EC9AA2048D7E2809DAF6BAD894DD2637923E3D75767988DE43D +AB22D37C6C0420C658BEE5CA676128DBEE15CB2450DA40204279F061ACAFD15D +94B65148434362381CD614900159F7AC2EE5EF7C0531C73E1571BA7689078727 +E865CD8563A36AACF35E6A1E162A9C98C99574E813B9100BCA53A8D71E697AC6 +615CF0A599238D369243C20D1B4E8BF02F727EA5A2FF673F0AC76C84B5D70847 +1DDE277EE5EF41C2083185C5E11C1A4CF77A8A2C3ADFC0FC8F2711AC9B38F92A +B51AC94073673A67D1AB54B9356E108233B2E88AE004BE9B6254CE5198AF99E3 +7D4995BBAE32DEB738FEB65A13D3F22065F83E48A30F0BD948AAA1C93E7C0B84 +CF3398C2B86B33759F8018239FC2CE615DB3B37B2C35E446A6FC8C24B85FF6C6 +10742456817381CD070DB115E25F15D85BC8BB3EDEECA6F21B580913221EC80C +64FEBEBF64A82046322F289D32FEDC03313407EB63FA4533705C01AA85D12836 +E190848B461390A60E4B0816C5090E8CBAF315BF4E267B0D3875C06818A9CEDA +6A16BBDC9E0701276CF6E7B9CF6882FD5DFD28E9C3E3C2AC9036EA3F24A4EA71 +F65088DA619A62AD63433DF16A4DCD7084FA3B6D4C20A76B3A5B437437C02A20 +452A79B7A778C8A245D3B2386F8F80D6303C8297C9E49C71791B2A940B704044 +EC687C7F706479D3B02353BDA6E78870436FCBBF1E4BDD0CAD173A707AB15941 +D9532F8C552DAF7E3DA6B02498C9E13912F071E3F117085C4ECD21CB3F6E1CAC +641ACE00E92693775C29AA496D85F21F9A7D0E3E96B957208CE8D1F7540C2B7F +40A71255551234D917C23977B787D4B97D8CFA28D1B3C6B02793278B0ECC2F2C +7E7DD001E1585A66B1A3019910C1669BE8AD6705571AF79E1A586B166E3315FD +BA3CB4C426DE470C8FE28E303576F34394D531359284AA34963965804A90272E +9896F666F2B0B1CA29E49800E19C5286FB5156525C955EE830E3E4888D07ACA8 +63102C9460695B44EF7D422EC1A819F1E80AE3A98342AB0E0B775547641250C5 +47F024223E37ED8970976022B478F9C5C3F8831FDB4DDCB2C81B6D1C2A7FE134 +D24384D9680372DA0B4CE881ED6D3C6C334A0F5DF3DEF9D262052B1047951FE4 +42DD5270F367E94D33A58E9CFA94CC736F9A5FAA47D905CD28AB4E42D34F4085 +8C04D8BC65BBF069FC0342492A6929A211B0347995B5386A05A63A78F6D1EAC5 +72D925336C862CC10A5EF3F3C726079EFE3DDEC28618380920C7D9F3C73FFCEB +137BAF5DD9DEA609FA95AB7F1770A8A82F98627289565D87AEF6FDB0FFB364DD +18203D138240BF6A02636FDEC85A5996695C6A6C8E2E41B295819A48BE7CF094 +8B127B26AFECAE31E10E659AFC05A015C2DBD2678717935705723EC91291983B +FB48D71769AF5CC34CB3844B68827C2E817A8F93AF30A0670AA8E601F71443BC +FA420735CC19C90299187EB1183B49641DBBD6F87F115EB90D2E504F297B04C0 +FB5CCFADFA826180F6D3814ADFC7902AACDD197F167520CC528C824E6471327C +B50C4C1371635038FB331982C7DC2DF48FEC3F4048D11AF5BBA9158B0B86BA28 +4BC1AB2607A3ECC2C944CD3BCBE8C5479C4CCC4F15BAF0AD9AF9296C68778AC6 +ED52033F9B0425F21F83ED2A452E81994F36E293948DDB1F27554EE3D1922A5E +1B9F13FFFE79EDF68CB418FC8F67A17856F8E442201AD68F45095306AB6E0391 +C32F98C7B460241253897B6453D9F17B92234643C800BE71544985AA22D23881 +7E7601C90E655D5C9DC4C70F55B8617ED78FAD85AAFA391FF751BF0C93F03F79 +BEA299271C7B6FED8BD42D345366FDC0D44E061FC516F3514837285B5DE60D8F +EB1E6424D840F466A936C9FDAB88C342EB887152C5A0EB20749916800830D3F5 +21D29BD7D1147B0F99148E407BAE52F1E124977E8C05E46D54108065366DAAB2 +94278CC4BE910A68A0644DB6F88423F9233A203D89CC3DC88A0F84AFE4E998E4 +C4F082F51F8693F95A6F08A96B5627A8C10004CFF35E1127CC4299BC159B2711 +27B895371A65D8DA94BD9E1BB56C5AE84C8BBC23A526E6133E89BBEADD2E25F8 +318EF4BB5541DF68AEA712940A9B50C1AFAA09F19F57BA4E29986DBAC02368E0 +2415C7DF37150E196CDD74337CB26454EA6F0AC14F1F598810D431C075C8B939 +A205688E86987C8A9C6E56042D2627C5E6730445D8A394DC6CE6DC6F3056373F +DD8CC18EA19EF4F3F4B5F2055AC85F241C9E9E970687FC6B22385AF3BDA70A6F +A6FE8C36FAE02F38180DBFEE65C6737EA9738B49D774035CA60EB228D8CCA709 +30FBAF6BDB58802708071E543B6A565BB775F8ABF0BE3E13D4F7B97542DC4F46 +CF3AE241496A29A295B807D367D0237C1F397B942A65E60A1313F78210F7E082 +4D355195B993BEC149C905B8D1AFB89C37A377D08AB853C1A0E56B42423F5308 +6824021E43157F85E1A5DAB38E1147C9C4B50E3B765B410E56999B33D9D66488 +26E8780DB2A1B7A8936F67452935F271E262823441124657F6B283ADE79E05F4 +9FAA4D2734CB7B7B8EECD155C9FFED48A47BADE32D1CA56CA5801C6D4B5BC900 +C3779C078FCF5670F74DE65556E8A6545269D157D54EE8D555F0B4DE4315486C +FBC6C534DF83E527082051128187115A68A8B2F2AD7224C0CF054C2A6FA7B7C3 +BAC811A5C717A33FA95F27E2EF005C07B62A810A4EF62C1DEB5BDC8117F395DA +0D4EE7D555A2C9FBF0214600B6A6CC0129EDD4ED15269631AC66E133D42257A2 +8C7426DEA9D01118A93BB083849BB26AD61F0FC29BC233A09E7FAB87F1F70616 +3C23EB70ACE221E3BBD29370532EF0CC134984065EA1D8692BD8CC0858BD61FF +96418CB9653EFC45730FB9B4463B2D63245E3720E95E7C1A000B903B102E7511 +418AC726633373A4F0BE6B3F37A197D0B75ACB722597FF179AB1AF95ADF841B9 +97B35A48FE7E3EC594B291A202B7855640E143309CCAB41F25C3C35EA6BB0F11 +9617F4DC575DE1553C432E2C48E1E77AB04D85A0BC185C88BAFD0E0D5D4E90BB +89DFC7D18824ED125E195AF2341B3017E8282ACBDA90F96EF19B8FA223141F17 +CB38018CCA5D9BDDB5BC5BA2C6E848768331C9D73EBE7F176CE969E419A7B865 +A12E853F314E3071F58F0E8A07AEDADB951A7015FBA6F47B5981AA089035E349 +40406D0334BBB1F6F21C604269B207E8432B5C48D6089CBA115D05FCD30DF213 +CFDF4AC7A3351C5A89CED39F9267D4F6124B9350C9FFCE34E81219CC604E9F3B +B4ED7426D57C8C688622CE186AEFA427880F22EB177395B0716D6D7367BEE76D +899D640F017EEDE48D3C7E6B5CEB92E9C3FF6D708AA5A871B6B09922255ADDA1 +0F8CF7AAB52906D4F323FAB9C46D8F43961AEB6EC72C8EAA0B1FABD4D805C27F +2D6C89B414D1AEFBB3176A67269FECB72B2F3AD803A75B8AD1590075B5B41253 +BC3118224B8CCAD3EC204C38BE7EAE07BB189398A31837E1D5FA81EE3F5A4D4D +81455EF890151AC4318E6D3763ED40531CA75F7252267386BEC4DB8AC1A3D8CF +7CBFFBDDDDE80A0728CB04FB05AF5A39AE08D95E0136E01AC4E6EFDE88471480 +018E63626C002620946876136C8F3CDAE4D1BD7DFF1F674FF2232E46D84FB20E +7088FF5E3EC783155C6B8FA1E1DB66C83F37E94134E0729D20E74DA1A53F9F00 +13F42839774CE3E1BE225CF969286B0719CE0399A1D83D51278F7514B7F02A21 +351F006E7A15FDB650A5C9E3877D5490AACDB33541CC15ACE8E1C9E548303E90 +1D23A2FF71473CC83DBEC78A32E2D51F41535B776B42083CD02E4E18EE91B331 +347A7FB5D570252FA5107A5CB471D1F6FDB05951CCEFFD9FDB8129FBE475FFB0 +B01D91A8013852D554C47E48F4B9F8E966302E473379CC68E8A2E0CA17FEB016 +15FA71FFF852984B768CB67CEAD942C8DBA98C06EF114AE99274190873BA1ADC +65181E9EA880959E4FE7DB97D799D4D87A3DFEE680FA2E430C66255B5AE986B5 +14631B2F10AC0C25E1AB148651EF26AC1665234C5046F065A71B95730A1736D2 +DB23390470100510483BDE1BA0855E1D77D9B2A0E0106A3212EEEA11CCB353C3 +2D1E8DE4704FCB5CAA22DCA5B195180CFAF9D1B9CA0ADE3877004035A82EFA7C +2C37AC1B2A02447A7B7886BC31AABD4D9C6491E8EBAE284ED208BA821C01282B +4BA140CBDD58DD9F50C90CAFA1A99C4F951F90734DADB2D5C0A59E0BEE4609CA +D8210E3D55A985800EF05869A37C3F4BFE46CEB765673BF7D63E72CB03958025 +C5085D838EE5140DEF23735A94AADB59208CAF1A7D2529A8D6535EF38958B6B8 +C307C93E983087F3CD83274E102AA0F8842E63739AD08C55B89101A604A9F3C5 +14620B7F95078539B49EE523699A0494A091119D48E51FF3C0945909131C2756 +6A66DF6C5AEF12CFB63CB8C9AFC3BFA4CF89C92BD86285FA4EA6451FF2C85E24 +BF4C061D16928179EB26879F7A84514088421449A17123CA53976E0FCF10DDB7 +2212D5C4A1D7AD89B27FADB303E951C0CBBE84B5963CD116061FF2767A6176FC +7405F6B56F9682E3458FEDBE301ABBCD2EA90C576F4459D56FED140634F32401 +80D33A4B1411691FCB2C03F43628E5972D53381C8B082EAFB42CB0A3C4F64633 +4453390B82C2C2E1C9EE6FFD39F82AE666BEE38CB68812BB08C2C7F8F22C5BAC +0F900A03FEF6981278F32425B0B9C248B18D8E368F9932CD2BE59A3375932A97 +E3C73C024302DCE592EF84B141501F99D9CA0CFF8F256B168FADDD7093EF9132 +1275171A6C7154EA117E27791D155C4D8B0508A96EB8B5292F9081135BE0D59A +5857AAC2484F4A7E7C8156C72BE7CB7B31A9B94C1DC1E36540A64B8EAB85698F +A6F3A369ACD6EBA7D2FD86388B097595260A7F276A7C5EF5298F3B46448B36F3 +A304CBB6416096FAA45A1531C1DBC678C6143D0FEF494EB2D5ADDF28681C15EB +8CAFCAAA4AD3B912683C52594477A8086270839BE2B7EF043B02068C0376F86A +66E353DC4CD100DDC4BFEDAD47F656D2B4786F386F61A9157AF0F1A116C51474 +D07BB877FFA1BA04BE68D07C3D606CA4B22D24CF761F89DFD054B5711867441F +4BA3D541B4205EDB2EBB7DA406A9D7D5F9EBDA1C5FC6B5E80C2FD61C128AB5CB +1E76B896A76B3C0AF5D5EC0FC416FA9910193EE8C8DB3ED356ABD4FB38A5B20E +971AA199BCB54B73B47361A0DC7A7617B2CC1248843743E95F71164A524277E2 +196546C146BA4F4EF03117C49AECBB48308F820A793549790A7233825505013A +FFF9EB0BBBA29A54EB6637E11DF9F1704B0F2F115D7583A0C205AF7CE7ECA43F +F273FF876977E0B5467781962F3126468E5F837BC92DB7EEFDFF17246C266AE2 +7BB3D2646D0DEA519EFFC60DB1267D6EE9435DFF69C1380BB98E47B491AFB12A +5D6DA1EE989CBD084E38D2B15DBAB23B2C23389CE75219F295207B5C78C79E27 +2223621E0229C67A668C27427861A4E44461B55EE8F0F34C091669424140F0AA +61EBFD9BFE5C40F5AB85ACC8AEACA6C19C98D28AEA2E7B727196316BB8B897E9 +6FA7D58EA4FFC9C9C48BE4D733376056AA5CA8CDFE34CB1B99AFD8E25FF19DCD +2B58EEEE1A90BB33FB718ECFEB1957B500B618388A83B32FEC2FCF58C5A3B3C7 +68290CBFFA515C6B3BE8E249364CB1DF2583E0677E070A6A110334823860A266 +E6176464C675C657BC555910066F705860A7E982388E166D8D89B84E02FAEA52 +D7EAB66BD9E8B7ECC9FFCF2E60ABC1E94BB682E48F54F76119B5816ECFD499BA +4CDA98409F99D0D705CE2209311E844A03A8E92C488529F5C8F67DD652103382 +176B20C5A29C1850BCEBE6398491B2EDB841DF4ECC30B7A7BF7D1127C3A41359 +2A0B3A6F078FAE1FEA13D12E120CFA72F400C83A85BED5D13934111E9753763F +DACF0707DD8A796EC4B5989231AE7A6726220A2F6BCF601C9A83C19401C7881C +7A94273C08F2AF3E7792D51C300FAF63F9BA92A15B4CF269B013BD5F52F0FC20 +1883318C46656E1D7A491BA564634AAA7CEFF389EDA4D52BC1C3A6D8652B4AC0 +0D7372316B23C6A7678D89B4B3F7DFDF9188894693CFEF7E4C9D9D62A5179449 +7257E4B7C3561FB6136B12FC7CE972A434CBBB9D8F59C832097EF8FD163E477C +332977DA990F9D371FC0EE469B1C4A73D2CC107CFC46D3EC42BE05E46799A567 +DD33993EB2B31A19FD3463CD8A8B3C14DF6AA2E4DDC95B8F9068106C19408AD5 +CA4E09C975BB7A161F7A44D650FCF5FF096F399DC953987C2B96294E736802F2 +E443268A5A8367AC8DBDBE581D9A391FEFB114B96A5DD9A66E6CF0C52A46227F +6D4DCE9165447C0DC2DF3BBDB206FBEA6AFD3A87C07345CED78843F60BB3A03A +3481E4C90CACA5A68CA5ABB22D15282CB3B10492FE821ED1141DF6E7A8B36204 +788C853591C31BDBF86F1DBE08ABC1F44C394ABFEDFB23A99AB18DD9D6599606 +AFB2A9B3CE068D24D2154C2DEE7459395DCBDB8088975BC1D2339029C4F629C5 +C518CDB270A952763E7B13A93A89960332E7A9C64D0107099FAF59FCF9C2F6EB +92810C690E04A6DBA109C8298E680D7955D7608611B0D145B48AD141A270A870 +7DC3F99EA89532269C21F2309E0D6A5F7F7A28D5CD27C1FF2A23E22C86A0CFC7 +20ED6B0BA44DC0D1528974C4BCF7C0169EFB17A69AE505F9448258463CFF8935 +CFBDF89B85E3E3A376FCB73B205A74DA37CCC0144343B25F1DD760DBD7F95FC2 +3F8E49F9FC4EEE1B6064598D3CE0A2B3CC9F87BBFC7CCA69A9C3350C02DAF480 +019EB4B31EFFE7BE576A5B2DE88737D59A8F62223E6F3CDE4737F13352C7399A +A3D3A98134AA3FBDBF176B4A933E7B06FCADB941D8E96888D7F11E83EEDC54E2 +EB8E0C966254850B9DCE8C9849A9EACC704FC68C8DC330FE2B8BB23242C476D1 +C94913EA378341C8F03C94E0DC83F600F413A85C2C605F3E63DA3A082003AF79 +4B650A01B3138B493B614751C7A44708916D75E458997B5C1F8C2359DACC61F7 +C9D58A98898E8C37CEBE7475AF0C1FDDA0F30D1B27E4570AC0B74553D22D588D +C32233F717EEC7BAEF56733D0616C44D966A4C96D7A37C3F511A1187399F6E09 +E9D28BBFFA9D627A288559710F9CA3109DDD920B89D66038090309FDD02546C1 +6F15AADCCB2C378C770FC33E48911F4EF573B4E6231AEABE1BF8411F81DC7F16 +036A2EE6A54A0CA35C21EE9526E38578D8B976EBBEB9EFD7FCBA630F8454BA7B +33A10CF6234A10E962F1BE898AD3A7785E9F1470689726E03DFC9DF58E814DDA +1E9F428037FCEFEA7E428622F0E9361A0F641CD89C974ACB3BF8DABBD2EF2669 +7C6D33499EF5539FB0B4B990C508957C56B6ECDE3692628F22B6A67D591B783C +E6199B10F2460BC8CD8D08A31C848322BC5A66142263FDB95E0C3E1B3B009F47 +56D3C2DD344821AE1B375937AD71BA0B1BD8EEA6B423C6F0A3D065C0DE876EE5 +6E6F1EEE955A67E1C7A65213575BD53A3C32BAFEAA468F5B0B0D523A0ED45984 +CF8D8E9043AC0AB2CE3BE392A508FB092A855CF4E4D5BED3FBC27D6B1AC32FAA +E905ADF483949123E98A6F2F65F561822837C57C6D5D5BAF860D935DB2A4CE75 +BFECC86F0210424F07FE5A8F318B1FF818B5F44247D6F0B975EC02145E47F1F9 +C579FC02511F9CF19D65B10338A100DEAC861D6569FAFE847CBF72531CD54864 +60A7368E8DDA70CC8332A85893E3E270FC7876DEE2E4205E592B8D431438B29D +324136007F1BD802503B2259AC71DA890786B731E0C34A73179D8522DFBAC5AE +CDC1FC0852A01EFDF6D50BBE47A4FF69936A8CDFE6102A5B25443F2B684E450E +58C8CB9068EEB127634CC9AD740E01951F8EB724F2E42EC9DED4434629BEB810 +88D2C013ADE23A15D61087CC1DED68AB4924FDDEF0E30B2CE5C17DD4BAA88B77 +06837AE8245B88239B6AE7953DC1D95975356BEF1529DE7582455F43ED83A488 +01C1AE46834F1BDD9704E85A151CEEF4F0D9E08C85ADF68A497A81064C093007 +08F9DEC44AF753D586BC2D2F1D40ECE2B3B4E57A8F0404AA2955D6AC2DBB37EE +074D03E51FB58FD573893B88E8ECC7E68198CD18F5DAEB0BC84915EEEC4BA918 +86F7E64A575AB09EC19BAE2C33D8EDAE05A9C90B90F0861410CC0FCCD6BBF11D +78EC64F8C453ABC7FEABD5C49E70CCD23B7A4F435F09E0AB33DCD24A76D5112D +BB0536872A2F39B0E540C8961FB71A2950FA5A3880216D296B9B764B7A955BD7 +38072CCBCDE6B5FC862FD23C95460BF14BB431A383BE8F6DCD902B4A808BC64C +515E7BD3A8A90786B64149AC65059E5E6A86708D951054B488A1587CB1BC0000 +A80F17F4E72E2CB4F0D18DA55633CD9BD04490E3C04B11D2FA488A98F31E743D +7AFAF0DF30ED6A371FEAC0C9DCF3342898DD8A3C4560AFD03D52282767C83467 +38C397D8732F17F6DE02A722F2C28461A129F427B4824C9E12D9A16480EB81D4 +BE4A062834149676D31821CD3B68905CF120C58013615D6B89665D05A72DD127 +78DEE15D9B612336BB81A6C13FCCC5299769D0CE6F1ABA7616953A72F80306B3 +95DD1F24AB2E5D75BCEAF1DF190A54BEF673280150990250232F1637CA7F5FB2 +736C3D71C1F93F12550AABD90B7CA0FAC0B8D4E99488E270CDDD675FA1C6AF1C +F855309CB2417D4094F83F7F9D2DBF4CCD2CAF17926591DE077ADFE86FAA4452 +B1D613A54A1614D85FD6A1F9ADE41B04EE0FDCC96A5ED01611C16CCCCF983FEF +E0576A8C5C60E05DFAB842B4C1A1E230F7FBE6591DD57C034326876E8FE75217 +B036F5E70D4487D8FCC1ACEC8709CB9AE028A735D82425035D5A27EC608F1EEC +86E11A204B76BC2BC8D3FF9A192BF8E6F8FBE05A4E1876D77F89A02E098F3E52 +0EA2C6112AA71A624A8FC28261D74C78F0CC401B267092A5C6BCA5DAFF38B0B8 +FD59C53DC36B464CC7E22921EDEA286F3EC5D2D385FE91639DEBD92743E9516B +ADF0845FEDB936EBA1005ED4B49983EFBED369535C10A9E8E446032A25167A81 +90DBD6C9FA1C1BAAB475B3F0E7CE0227033E013AC2E6193E5ACE6383C6EBD697 +029381EAEE77197BC1E986E303E7C60463B732311DE1193E4176F2C599542B4E +3D188BCECF1AB6F2C5527D041BD5CFB6D46F19A08AC8B26268D81FA31E28D196 +AB251C9CAED22478A8A7441FCB4A9A9D91A88EC924FEE72F956F55880B0AD537 +97F14DF2973A7A6C3D66AA6EAEEC226913331AAEEC6402977B1C7DD2033F776B +763D49079C83AD203E346377FF069FEA724CC3F73A114AE50990AA03009EC319 +EC7BB856368072DB00FE2EE872CA9D430DF33AA7FB95082BD33C0670E778D897 +E53935569FFC6F1BE605E8D8C1D4B92DA3A106E9D16E4E6B9FBAABCA917A0ED2 +C3B874B08E542C8851EE1F868C675A60D33B746053A419721C7BAD2EA12F27F1 +A58546B2C288C8C761F15258DEA75BC627A639FFDDE3A16DB0D9309DAEB869C1 +D1ABE233069A0912DDF81193605886E14282980C1F347902389BB9DB17580899 +88E4C5F502E16E3D1AE4881FD62797483BDA5AC3DE293AC29058D79673FCD6F2 +CA5A5854F0F951532F242B23CAD3AEEE9F4226B04DBBB087DA71D6A21D555847 +FF863004F08486A84EBFD234334E5FC241866E1803A0637DE492B4AE0F98D4BD +AC0D2B92549D28715B9E7BA68D22A1FCEBEB77341361B541F9CC13421459AFA4 +B0FDA93D290E443FE70AB54A2AAE30AABA70F57BC0870ED87EA2EF54648FCDA9 +60D129F44C09AD4D9ADD8BEFC78F90E7DF3AE7A5D67747EC6FF6DF3C51CFC1E1 +A79CBBF74B50BE7C2868AC933A9A3003984081795D1E2CB5CD52573FA8B2C9E6 +579010E221DB06DDBDEA111AF0E72789A316F461B0FC5325BD6CDCCF9D872F8C +157E22F2B16F7176A52AC31D05E2C49A661A278882768F100ADA658E3ADB514E +71BAF05606F462A04652AF29105079D01DDD8B85AD86606D74BBFDC44157CC5B +AA7F168D8FCD3F41B171A3A2B1B87B5DD3C36BAEA7D75DF35E258540360A3F94 +31DACF11C2168149649FE610396168291A229A18BFAD956F839AA7040660BD56 +DDF70CC06DA6021B95196EB700A84E1CA59A8F8065895C2D408700B613FCE6BB +687B4654EAF8C7F8E1C2B0244D36A583675A93C70F941D80C1245E8352D0F3C5 +C1BE27C22D430BC68CB5A19D0C1AE9AAAFC03D65DC29BE3F5AB7155B0FEAAF46 +0DE7804B243D635B4CE91BBF0A9BCCFB7974C6A03A9F64C45AA993DB70374C91 +E37471193DC6334CB181CFE40A9BFEFF41DFDBF10477A2D1D82C33529225BD49 +F760032CF9BD374CC680EECE471CD73B1290D4CE657057DF4E23E3A52122BA6A +E1727163933848E9AF7E290526A3DAF79DE65B7BFE6BC6E33288FB847ED9F9B3 +39E0132D14C244D1E7B830AB519E304C9ACDD4A12D85D4CFDE1A4FDCCB451D8A +277ABA30BF92625B593C05B655276966239AE696C279A0789F9FC9A620FBC224 +886CDFE2D307D723DE22A0C0C50E9AFFA2D33E9AC198E9405A3B607CD5AE6EC6 +A616B21444D58029A44A9389ACFCCD497F4FE29CC4B181699534E1B83AD85F61 +8911499DA69867AA9B5255DFDB864FC37A6987E6CB661436CE3A9E01B8B5BF96 +73437C9366A8941B952C298FC4AB93EE364C54F119C5F2A60FD5BC933A44FF40 +D87D7842B1384B7F2D83875D57CC245F2D1C3B7BD0EE2E88D62693F2C8229ABE +CDC5E438DB2CF70693AF163238E48FF87A47AD107ACEFF6BA319663DB8F8172C +1CC91EB19063BB3B742E607EB7020C55345AC6CE9446CFCEEC3CACBE6FDB69FD +BC13FF64457FF001ADACED90E0CF1C61FABE58B6720E0615456D4084D4981515 +63CBB7142D8973D481F0B3FE9B54A0F276668CEB1B1441F08E9B41B2754F8145 +0C7BF4734015B90E2D61AEDB7189DCC18E7C60519387B2E0BF177F497083E8A1 +052D1D494AB2528CDE37BFB459682066C49545EE2BC04C31D9FD70E092B4CFB7 +FC8FB9B6DE0EB48F24DAC9BB80D1DF95C4248D5C28CAEAFA0BE9C3445D8C9CE3 +ABE0FA0AF4AD425851E7588A9C4A9CDA54CA4A075ACFA5D88DA0F5176CED8527 +083B08C61DC18311668973AECD50DBA7E94625B36FA3B19EF34B1B4424CB404E +DF52989F313676A19629C28FF62A15E10328D526AF0AB24E3D758F2C0F84F52E +BFAD5F980D7498DF12D19CEA56177CE1424869CC9342126404AF9E56D0B56E5E +4A9FC9DCB519B1255BE2B3656B25E6834839782987F2587B3B6BD92CF5B060A5 +46154B723629C6AF9F3F9D75AA8332AF64ADA632B6F038794BF9E2936DC9B4F5 +43C29B7EE4AE984154F6F4554706E72361CCB4512D8F3320DB1921CE7F7ACFE3 +1B7F0A72D20A2912540E17DEBBC8CC2B2E236DA28F308117B76D2550200A2B66 +94CA669A909B2AE2FABFE76B641BF3ED9F236E29722F74CFAC337C69B51B4458 +7EB870315A0A136B0D183B5C9E25D2FD57C75BCC0C7406AB30AE3E3FE1D60B2A +C8050242C14A712EE6C867AAA701CAF8B33276150D90C60B5ED62958FFCF4E67 +558B518020959040A3B990B412F74987A94B09C4ACE894EC57E52F434DA49604 +F33262B59D73B7F70BF696D7BBD8F7F4AC8120B5949DED09D8993CEB6AA61E7E +586D50B652A7B7D80BF1F19F84D092ED2D448A9BBADFCC8739CB6F6BD0B37297 +A3CF815325145E174D3BF6A07CDB2834943B02FC4FEDFF98618C8F7E81143F3D +6BF377FF9B9193C2DD24F3A3FCECCC610C4D2159E16FC5131206F7A96D8E7FD8 +AB1B67684B14BACC5E760073BCE327AADEE16436D4304FF7E1D5E40B739015F3 +80DF204E2AD0EFACE7B11F87DB74DACDCB2FA973D9880426290FE865E9D214CB +783B4CC2990E7C66759269C4829AF519FB6647166107B7FBF3EC1691BC75E78A +78D9C13CCA8934E475DB1EAC5F638E8E348D5C3F0E78596AD150CD6CE07E687D +5B19E531A6B2780FEC840C5F5AA34FB3D0F9F7D08032547882005A8B37B9E7C8 +9162664F84FDC45E488B379108DF22DFAE3C94FFF02DAB30943F4FAAADF13AA5 +85CA5937903E961990629D2B0B58C6BE3CB35F53338C53309E64ABA4B3E2C619 +E842F69D946C945359BEFBCBA43550B3BA9BA169833AC32B7C89EC9C0F7D5636 +89E310BD1FD121EA02B31E1A56C5738AE2EB4B27883766691AA61D4A5D03844E +6D655C71E499AB9BEA78A4EE71D7725AD310B23BF925CEFC7E0C61D060027E10 +AF3F5A57CF69919E02794D159A206D331B62A2900699C8CB652052674F408E57 +8ED7F6A79718CFD58E39D990F11827746E8CC41191A4B214C0D582F72F8C9FF5 +11A9D1D35C7A669C63297D8BA473EAE51E08EF60004743878CBDB21562A7077B +ED300666FECF938675907DA0C7ACC29C21046DD98E741D6AEF51120D975E1590 +E493CD5AD6739DA83900B109B1DB865812B3B821C4AEDC089719C81441C2C80D +181B640E0C57C53BB1BE99594BFC6D5FEE646FE75E03B759A5AB12EC591E9A67 +1C1D04CC207C300F79D2ED9A05A1F285D87F903F80820B1E7847C61A04CC59C5 +1CF0845F401190139D51A04539498906B94F6169EC038849D6981CF3DB34000F +10DEB817BB9FC3D94B7C1E0A96E4F8B3118E302CC7669012DD9C4EB9E1A13C67 +658F61688440A7A9F9E26BC63A87AC3ED2201B8CE895292728FBB1E6E4C3D185 +FF8C1B4D9C0574A868E81E273AC96838E37F7258D5FF5A39F90FC2F94156F71F +F9C3E576B29EAB74A1375A3042B5D46FC4F839C26B3FB2EE5C67EA9E77DDECE7 +134A75420C99771B95F28D30B766CF4B553E90BD06DFD63B3924E9409D8841F8 +85024406E9F6E38F4476371F368ADCB44C0C6D7D576AA1ECA6A0C0AD1F4BA2A8 +674341670678014E974F12E5E64FE3AB80BFABF5C27E9B27B83A9AFB9D16629C +A2DC2FDC7E2DF71818BA334F043733632A20AD495FF469F05ED88E9379378B3E +1E8B75ADDC3E59A3D7B48F7FF8A61A85B96E87528D56A6950AF5960C36D231A9 +D83C9FE642EC5201BB798954A900B402070B524E29A5932304607159A4F494EC +4CE0E1FDA8E49A34F33B2C96C9D463A66098BCB8833C5D7E1B368454E48CDB25 +4B3CFD7EBC09EE03BB95D48C40C7FEFB4F11A191032427962754916877D6E6B4 +C172A7D64FA392117ED53420C0CF60B5AABA717DB9CBAE089DCDAAB90FDFAB6A +9F02058D98F2F1F82AEE7FF621A191DB861C95EE2615179716343CD44EEFAF1F +831AE745FBF43A3878492C2606026ADA1B8E61F8AD0E8C8323888C91AC3AB359 +9F4F1B0ED460684C3BB8BFED81552376F76EE9B568DFB2519B032FF782F82EBD +3EA52064AF6A0C04E2B9761167D1C8F93D8ABFAD75A1CFED2F5F4D1AFC17E9FC +7B06752E17CCFB3EF0FC5EB1832F6C7DBA1D590A804DAC83FC9AF8C919014C32 +F1D0E9A667456A2364791405BA58C67A9AB002F4882DF6DD954486B1518A9C91 +1BBBBCFCD883714B0A888CACC8CDB3B8982FD8AB7D512A5BD7145C245FA6E3D4 +66C6E829A0A8640744F781EE6A59B490F783A251D223D9270C8BC5B04DC11D43 +404E161310290FE252A78D7A766FF0B767AAB702D3664F756F7E013BB84EAA32 +A9902F73F9EEA56C7D258068EADDCB9089DE2EDA54350AC7312D50AA877387A1 +4D338442564AED435127C83DA956BEC6A9F4F0C876D1507F5749A6D04AFFD17A +E116A337C59AF9B8A550511F9811B75CD45E53984B26115B0859515654AE5749 +17A893DF4C3613103F2388AEB730A72C6F191188E1F456FAB502C01567AF75A6 +C74373BA2C33046A9821122514CA96C81EE22021BFE73625609252A4931ABFC3 +79A81D23143B3959AF5E546AB2ADF6CBD4EB78D8731B68315CBD5D95230C0BDB +C4D743B2888F5C09A3C38F821614BF4C47AAEC9503D50B8B0AC60AA9C843DEFD +6C60D331D947E2FE40366647D7944AC2C149A27E2C72AD4019B0492B8CCBF411 +74CA332569C815F53F237FCACB38C90748B688E1C3DD96A2173A747B1EC3D03F +6BD8B4CCE08472BDBB40636484A4A80904522C774653F572FBC2E0C6CBA78809 +E53C64EB02223DE6324AFB142ACDBD29CA079A50107EAC129E7F7D6835E4E71F +1237D94521FD4AD135DF6E03C6886E1B55F3E3E0F466AA0F36E69382A34FBF6B +0963C27950969538A9829D199780C3676130F82B664054B306AA13FB36986CA5 +442E2FDBD946C13F82DA2C4369246A00168566CA66F869C6BADAEDA8291CEFEF +B07BE181DF9566C981727AB62B5A8F2703B87217DE8E46F7B4B39FCCB4710F4F +08C70F336AF7ED4DE8C6856614CA228681028847237FFA2D72BF167AF1BF99A9 +EAF4790537A4E51BB9E31E9D6D6142DAFCFAF0EFE31FA502F8F4540638FCA94B +29ECE4CC50D1F0DB08CD6C39C8E87D65FBF696D0E9D85C97038E8A0D63DAD193 +2A702EFDE85FA1E41A97137EA457653BFC568E60DD6C1D19977FC852FE3E3287 +DD604314EB01C9746911E4DB1A1AC4E098238EAD17377AA14B2CC15B3369402F +C4E0C331412B798A5F329C344E49EE944D1B01EA168BD0CBE4F5897C3AE5E8FA +C6576353EFEE66393D34EDD3E6FF2DA38CD660366DC33DAAFA023A9DE3191397 +C0AFB7E5B5B163DE7500A7B43F322BA20B7D95C8E1BC5E8D1D77196D0AF27D89 +476E0F01E23EA043CCE711E3A8E27C0419F7DC320212F86A3D44E40FF184C7AB +7DF013AF9DF45A5DA9285C549F6C132488BBD51B43576A92F8297FBADDD58FD8 +9C1CD7A4142BA668B5E01858D01C3456288B52B8CF8152C8A1C7855A777E5DCD +31DCB340B297FEE2596DA1EC6A3A3A0907F38F620D4E0B54AB95E30FF3A4440D +73C69635C398AA777CF973D7B355AE60BDD84B880AB3D732C63C64FDE3AFB4A6 +57E90F51438C39BA3948D2F66EA8D9089C02D58F0B83B33CF3C8630BE1F48257 +2B16C6FAB4BA84F306C89B6242A0E2EEE82AE157167E537363A83421D30E157B +D6DAE4E95B43B3A90499FF48898D53D9FB6B33026878E5D5ECD26FFABD866AFD +70FE30B4183C65871D4094E54EA693B397495F991F13653A15250C011AD816FC +DE7D139637750461C7A6A60DAFA68B7F8C639FCF5504B68EFEDE8497C9DD8537 +F88EFDBEEAC0A20372EA1B154CB20C0B054A092E60397371F50169BC87863AC5 +C4974F2EE1E3746BB8 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -4354,64 +4045,77 @@ C80EC3F7D915376410FC4961F37D73D13268B7E93C8B4F29880B535D14DE1205 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont -TeXDict begin 39139632 55387786 1000 300 300 (readline.dvi) -@start /Fa 209[12 46[{}1 37.3599 /CMTI9 rf /Fb 133[17 -20 20 28 20 21 15 15 15 20 21 19 21 32 11 20 1[11 21 -19 12 17 21 17 21 19 11[29 6[29 1[24 4[30 25 1[29 10[19 -19 19 19 19 19 19 19 19 19 2[13 11 30[21 21 12[{}45 37.3599 -/CMR9 rf /Fc 134[20 20 2[20 20 20 20 2[20 20 20 20 2[20 -20 2[20 3[20 19[20 27[20 20 2[20 45[{}18 37.3599 /CMSLTT10 +TeXDict begin 39158280 55380996 1000 300 300 (readline.dvi) +@start /Fa 209[12 46[{ TeX74afc74cEncoding ReEncodeFont }1 +37.3599 /CMTI9 rf /Fb 133[17 20 20 28 20 21 15 15 15 +20 21 19 21 32 11 20 1[11 21 19 12 17 21 17 21 19 11[29 +6[29 1[24 4[30 25 1[29 10[19 19 19 19 19 19 19 19 19 +19 2[13 11 30[21 21 12[{ TeXf7b6d320Encoding ReEncodeFont }45 +37.3599 /CMR9 rf /Fc 134[20 20 2[20 20 20 20 2[20 20 +20 20 2[20 20 2[20 3[20 19[20 27[20 20 2[20 45[{ + TeX09fbbfacEncoding ReEncodeFont }18 37.3599 /CMSLTT10 rf /Fd 129[20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 1[20 20 20 2[20 20 20 20 20 20 20 20 20 20 20 20 20 1[20 20 1[20 20 20 20 20 20 20 20 20 20 20 20 20 20 3[20 1[20 1[20 20 20 20 20 20 20 20 20 20 20 20 20 20 1[20 20 20 -33[{}83 37.3599 /CMTT9 rf /Fe 214[18 18 40[{}2 45.4545 -/CMSS10 rf /Ff 133[25 30 30 41 30 32 22 23 24 30 32 29 -32 48 16 30 1[16 32 29 18 26 32 25 32 28 84[32 33 11[{}27 -49.8132 /CMBX10 rf /Fg 134[26 2[26 26 26 26 26 26 26 -26 26 26 26 26 1[26 26 26 26 26 26 26 26 26 1[26 18[26 -26 1[26 2[26 26 26[26 42[{}29 49.8132 /CMTT10 rf /Fh -134[32 32 44 32 34 24 24 25 1[34 31 34 51 17 32 1[17 -34 31 19 28 34 27 34 30 7[46 1[63 46 47 43 34 46 3[48 -58 37 48 1[23 48 1[39 40 47 44 44 46 6[17 31 31 31 31 -31 31 31 31 31 31 1[17 46[{}54 54.5455 /CMBX12 rf /Fi -134[24 24 33 24 25 18 18 18 24 25 23 25 38 13 24 1[13 -25 23 14 20 25 20 25 23 9[47 1[34 33 25 33 1[31 35 34 -42 28 35 1[16 34 1[30 31 35 33 32 34 15[23 23 2[15 31[25 -25 12[{}48 45.4545 /CMSL10 rf /Fj 138[20 14 14 14 1[20 -18 20 2[19 11 4[16 1[16 20 18 5[10 6[25 20 26 1[24 2[32 -22 5[23 24 27 25 25 26 15[18 3[12 5[10 39[{}29 33.2088 -/CMR8 rf /Fk 150[15 15 104[{}2 37.3599 /CMSY9 rf /Fl -134[24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 -1[24 24 24 24 24 24 24 1[24 2[24 14[24 24 1[24 1[24 2[24 -24 24 17[24 24 2[24 5[24 39[{}37 45.4545 /CMSLTT10 rf -/Fm 135[28 2[28 27 21 2[25 29 28 34 23 1[19 14 28 29 -24 25 28 27 1[28 97[{}18 45.4545 /CMCSC10 rf /Fn 134[22 -1[30 21 24 15 19 19 1[23 23 26 37 12 2[14 1[21 1[21 23 -21 1[23 50[14 33[26 12[{}20 45.4545 /CMTI10 rf /Fo 209[21 -46[{}1 59.7758 /CMBXTI10 rf /Fp 134[43 43 58 1[45 31 -32 33 1[45 40 45 67 22 2[22 45 40 25 37 45 36 45 39 10[61 -62 56 1[60 1[55 1[63 77 48 2[30 1[63 51 53 1[58 1[61 -14[40 40 49[{}37 71.731 /CMBX12 rf /Fq 242[45 13[{}1 +33[{ TeX09fbbfacEncoding ReEncodeFont }83 37.3599 /CMTT9 +rf /Fe 214[18 18 40[{ TeXf7b6d320Encoding ReEncodeFont }2 +45.4545 /CMSS10 rf /Ff 133[25 30 30 41 30 32 22 23 24 +30 32 29 32 48 16 30 1[16 32 29 18 26 32 25 32 28 84[32 +33 11[{ TeXf7b6d320Encoding ReEncodeFont }27 49.8132 +/CMBX10 rf /Fg 134[26 2[26 26 26 26 26 26 26 26 26 26 +26 26 1[26 26 26 26 26 26 26 26 26 1[26 18[26 26 1[26 +2[26 26 26[26 42[{ TeX09fbbfacEncoding ReEncodeFont }29 +49.8132 /CMTT10 rf /Fh 134[32 32 44 32 34 24 24 25 1[34 +31 34 51 17 32 1[17 34 31 19 28 34 27 34 30 7[46 1[63 +46 47 43 34 46 3[48 58 37 48 1[23 48 1[39 40 47 44 44 +46 6[17 31 31 31 31 31 31 31 31 31 31 1[17 46[{ + TeXf7b6d320Encoding ReEncodeFont }54 54.5455 /CMBX12 +rf /Fi 134[24 24 33 24 25 18 18 18 24 25 23 25 38 13 +24 1[13 25 23 14 20 25 20 25 23 9[47 1[34 33 25 33 1[31 +35 34 42 28 35 1[16 34 1[30 31 35 33 32 34 15[23 23 2[15 +31[25 25 12[{ TeXf7b6d320Encoding ReEncodeFont }48 45.4545 +/CMSL10 rf /Fj 138[20 14 14 14 1[20 18 20 2[19 11 4[16 +1[16 20 18 5[10 6[25 20 26 1[24 2[32 22 5[23 24 27 25 +25 26 15[18 3[12 5[10 39[{ TeXf7b6d320Encoding ReEncodeFont }29 +33.2088 /CMR8 rf /Fk 150[15 15 104[{ TeXbbad153fEncoding ReEncodeFont } +2 37.3599 /CMSY9 rf /Fl 134[24 24 24 24 24 24 24 24 24 +24 24 24 24 24 24 24 24 1[24 24 24 24 24 24 24 1[24 2[24 +14[24 24 1[24 1[24 2[24 24 24 17[24 24 2[24 5[24 39[{ + TeX09fbbfacEncoding ReEncodeFont }37 45.4545 /CMSLTT10 +rf /Fm 135[28 2[28 27 21 2[25 29 28 34 23 1[19 14 28 +29 24 25 28 27 1[28 97[{ TeX0ef0afcaEncoding ReEncodeFont }18 +45.4545 /CMCSC10 rf /Fn 134[22 1[30 21 24 15 19 19 1[23 +23 26 37 12 2[14 1[21 1[21 23 21 1[23 50[14 33[26 12[{ + TeX74afc74cEncoding ReEncodeFont }20 45.4545 /CMTI10 +rf /Fo 209[21 46[{ TeX74afc74cEncoding ReEncodeFont }1 +59.7758 /CMBXTI10 rf /Fp 134[43 43 58 1[45 31 32 33 1[45 +40 45 67 22 2[22 45 40 25 37 45 36 45 39 10[61 62 56 +1[60 1[55 1[63 77 48 2[30 1[63 51 53 1[58 1[61 14[40 +40 49[{ TeXf7b6d320Encoding ReEncodeFont }37 71.731 /CMBX12 +rf /Fq 242[45 13[{ TeXbbad153fEncoding ReEncodeFont }1 45.4545 /CMSY10 rf /Fr 134[35 35 49 35 37 26 27 27 1[37 34 37 56 19 2[19 37 34 21 31 37 30 37 33 7[51 1[69 51 52 47 37 50 51 46 51 53 64 40 53 1[25 53 53 42 44 52 -49 48 51 9[34 34 34 34 34 34 34 2[19 1[19 44[{}54 59.7758 -/CMBX12 rf /Fs 129[24 24 24 24 24 24 24 24 24 24 24 24 +49 48 51 9[34 34 34 34 34 34 34 2[19 1[19 44[{ + TeXf7b6d320Encoding ReEncodeFont }54 59.7758 /CMBX12 +rf /Fs 129[24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 +1[24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 1[24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 -24 24 24 24 1[24 24 24 24 24 24 24 24 24 24 24 24 24 -24 24 24 1[24 24 1[24 24 1[24 24 24 24 24 24 24 24 24 -24 24 24 24 24 24 24 24 24 33[{}89 45.4545 /CMTT10 rf -/Ft 131[45 23 20 24 24 33 24 25 18 18 18 24 25 23 25 -38 13 24 14 13 25 23 14 20 25 20 25 23 13 2[13 23 13 -28 34 34 47 34 34 33 25 33 35 31 35 34 42 28 35 23 16 -34 36 30 31 35 33 32 34 5[13 13 23 23 23 23 23 23 23 -23 23 23 23 13 15 13 2[18 18 13 2[23 1[23 19[38 25 25 -27 11[{}83 45.4545 /CMR10 rf /Fu 134[51 6[40 3[54 1[27 -2[27 3[44 54 1[54 47 11[74 2[72 3[76 1[58 4[76 71[{}14 -86.0772 /CMBX12 rf end +24 1[24 24 1[24 24 1[24 24 24 24 24 24 24 24 24 24 24 +24 24 24 24 24 24 24 33[{ TeX09fbbfacEncoding ReEncodeFont }89 +45.4545 /CMTT10 rf /Ft 131[45 1[20 24 24 33 24 25 18 +18 18 24 25 23 25 38 13 24 14 13 25 23 14 20 25 20 25 +23 13 2[13 23 13 28 34 34 47 34 34 33 25 33 35 31 35 +34 42 28 35 23 16 34 36 30 31 35 33 32 34 5[13 13 23 +23 23 23 23 23 23 23 23 23 23 13 15 13 2[18 18 13 2[23 +1[23 19[38 25 25 27 11[{ TeXf7b6d320Encoding ReEncodeFont }82 +45.4545 /CMR10 rf /Fu 134[51 6[40 3[54 1[27 2[27 3[44 +54 1[54 47 11[74 2[72 3[76 1[58 4[76 71[{ + TeXf7b6d320Encoding ReEncodeFont }14 86.0772 /CMBX12 +rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 300dpi @@ -4423,18 +4127,18 @@ TeXDict begin TeXDict begin 1 0 bop 75 659 a Fu(GNU)33 b(Readline)f(Library)p 75 709 1800 17 v 936 757 a Ft(Edition)15 b(5.2,)e(for)i Fs(Readline)f(Library)g Ft(V)l(ersion)h(5.2.)1590 811 -y(F)l(ebruary)g(2007)75 2467 y Fr(Chet)22 b(Ramey)-6 +y(F)l(ebruary)g(2006)75 2467 y Fr(Chet)22 b(Ramey)-6 b(,)23 b(Case)e(W)-6 b(estern)23 b(Reserv)n(e)f(Univ)n(ersit)n(y)75 2534 y(Brian)g(F)-6 b(o)n(x,)23 b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)-6 b(oundation)p 75 2570 1800 9 v eop end %%Page: 2 2 -TeXDict begin 2 1 bop 75 1512 a Ft(This)13 b(man)o(ual)f(describ)q(es)i -(the)f(GNU)g(Readline)g(Library)g(\(v)o(ersion)f(5.2,)g(27)h(F)l -(ebruary)g(2007\),)e(a)i(library)75 1567 y(whic)o(h)19 +TeXDict begin 2 1 bop 75 1512 a Ft(This)15 b(man)o(ual)f(describ)q(es)h +(the)g(GNU)g(Readline)g(Library)g(\(v)o(ersion)e(5.2,)h(9)h(F)l +(ebruary)f(2006\),)g(a)g(library)75 1567 y(whic)o(h)19 b(aids)h(in)f(the)h(consistency)f(of)g(user)h(in)o(terface)f(across)g (discrete)g(programs)g(whic)o(h)g(pro)o(vide)g(a)75 1621 y(command)c(line)g(in)o(terface.)75 1689 y(Cop)o(yrigh)o(t)301 -1688 y(c)289 1689 y Fq(\015)g Ft(1988-2006)e(F)l(ree)i(Soft)o(w)o(are)f +1688 y(c)289 1689 y Fq(\015)g Ft(1988-2004)e(F)l(ree)i(Soft)o(w)o(are)f (F)l(oundation,)g(Inc.)75 1756 y(P)o(ermission)h(is)g(gran)o(ted)h(to)f (mak)o(e)h(and)g(distribute)g(v)o(erbatim)e(copies)i(of)g(this)g(man)o (ual)f(pro)o(vided)h(the)75 1811 y(cop)o(yrigh)o(t)e(notice)h(and)g @@ -4442,7 +4146,7 @@ y(command)c(line)g(in)o(terface.)75 1689 y(Cop)o(yrigh)o(t)301 (copies.)195 1878 y(P)o(ermission)i(is)h(gran)o(ted)g(to)g(cop)o(y)l(,) h(distribute)f(and/or)g(mo)q(dify)g(this)g(do)q(cumen)o(t)h(under)195 1933 y(the)h(terms)f(of)h(the)g(GNU)g(F)l(ree)g(Do)q(cumen)o(tation)f -(License,)i(V)l(ersion)f(1.2)f(or)g(an)o(y)h(later)195 +(License,)i(V)l(ersion)f(1.1)f(or)g(an)o(y)h(later)195 1988 y(v)o(ersion)13 b(published)h(b)o(y)g(the)g(F)l(ree)f(Soft)o(w)o (are)g(F)l(oundation;)g(with)g(no)g(In)o(v)m(arian)o(t)h(Sections,)195 2042 y(with)h(the)g(F)l(ron)o(t-Co)o(v)o(er)e(texts)i(b)q(eing)h(\\A)f @@ -4550,26 +4254,26 @@ b(F)l(unction)h(Names)g(and)g(Bindings)8 b Fn(.)f(.)h(.)f(.)h(.)f(.)h (.)23 b Ft(31)374 2222 y(2.4.5)44 b(Allo)o(wing)13 b(Undoing)h Fn(.)8 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)29 b -Ft(32)374 2277 y(2.4.6)44 b(Redispla)o(y)10 b Fn(.)d(.)h(.)g(.)f(.)h(.) +Ft(31)374 2277 y(2.4.6)44 b(Redispla)o(y)10 b Fn(.)d(.)h(.)g(.)f(.)h(.) f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h (.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)26 -b Ft(33)374 2332 y(2.4.7)44 b(Mo)q(difying)14 b(T)l(ext)7 +b Ft(32)374 2332 y(2.4.7)44 b(Mo)q(difying)14 b(T)l(ext)7 b Fn(.)g(.)g(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.) f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)22 b Ft(34)374 2387 y(2.4.8)44 b(Character)14 b(Input)c Fn(.)f(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)25 -b Ft(35)374 2442 y(2.4.9)44 b(T)l(erminal)14 b(Managemen)o(t)d +b Ft(34)374 2442 y(2.4.9)44 b(T)l(erminal)14 b(Managemen)o(t)d Fn(.)c(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)27 b Ft(35)374 2496 y(2.4.10)43 b(Utilit)o(y)14 b(F)l(unctions)e Fn(.)7 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.) -f(.)h(.)f(.)28 b Ft(36)374 2551 y(2.4.11)43 b(Miscellaneous)15 +f(.)h(.)f(.)28 b Ft(35)374 2551 y(2.4.11)43 b(Miscellaneous)15 b(F)l(unctions)6 b Fn(.)h(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h -(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)21 b Ft(37)374 +(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)21 b Ft(36)374 2606 y(2.4.12)43 b(Alternate)15 b(In)o(terface)g Fn(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f -(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)30 b Ft(38)374 2661 +(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)30 b Ft(37)374 2661 y(2.4.13)43 b(A)16 b(Readline)f(Example)9 b Fn(.)e(.)g(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.) h(.)f(.)24 b Ft(38)p eop end @@ -4578,20 +4282,20 @@ TeXDict begin -2 3 bop 75 -58 a Ft(ii)1319 b(GNU)15 b(Readline)g (Library)224 42 y(2.5)45 b(Readline)15 b(Signal)g(Handling)d Fn(.)6 b(.)i(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.) h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)27 -b Ft(40)224 96 y(2.6)45 b(Custom)14 b(Completers)e Fn(.)c(.)f(.)h(.)f +b Ft(39)224 96 y(2.6)45 b(Custom)14 b(Completers)e Fn(.)c(.)f(.)h(.)f (.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)28 b Ft(41)374 151 y(2.6.1)44 b(Ho)o(w)14 b(Completing)g(W)l(orks)c Fn(.)d(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f -(.)h(.)f(.)h(.)f(.)h(.)f(.)25 b Ft(42)374 206 y(2.6.2)44 +(.)h(.)f(.)h(.)f(.)h(.)f(.)25 b Ft(41)374 206 y(2.6.2)44 b(Completion)14 b(F)l(unctions)6 b Fn(.)h(.)h(.)f(.)h(.)f(.)h(.)f(.)h (.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.) -21 b Ft(43)374 261 y(2.6.3)44 b(Completion)14 b(V)l(ariables)e +21 b Ft(42)374 261 y(2.6.3)44 b(Completion)14 b(V)l(ariables)e Fn(.)6 b(.)h(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.) -f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)27 b Ft(44)374 315 +f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)27 b Ft(43)374 315 y(2.6.4)44 b(A)15 b(Short)g(Completion)f(Example)5 b Fn(.)i(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h -(.)f(.)20 b Ft(48)75 437 y Fr(App)r(endix)j(A)50 b(Cop)n(ying)22 +(.)f(.)20 b Ft(47)75 437 y Fr(App)r(endix)j(A)50 b(Cop)n(ying)22 b(This)g(Man)n(ual)15 b Fo(.)10 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h (.)37 b Fr(57)224 505 y Ft(A.1)45 b(GNU)15 b(F)l(ree)h(Do)q(cumen)o (tation)e(License)g Fn(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.) @@ -5016,61 +4720,60 @@ TeXDict begin 6 9 bop 75 -58 a Ft(6)1322 b(GNU)15 b(Readline)g(Library) 555 149 y(where)g(the)f(k)o(eystrok)o(es)g(are)g(most)g(similar)f(to)g (Emacs.)20 b(This)14 b(v)m(ariable)g(can)555 204 y(b)q(e)i(set)f(to)f (either)h(`)p Fs(emacs)p Ft(')f(or)h(`)p Fs(vi)p Ft('.)315 -277 y Fs(enable-keypad)555 332 y Ft(When)d(set)f(to)h(`)p +283 y Fs(enable-keypad)555 338 y Ft(When)d(set)f(to)h(`)p Fs(on)p Ft(',)e(Readline)i(will)f(try)g(to)g(enable)h(the)g -(application)e(k)o(eypad)555 387 y(when)k(it)e(is)h(called.)19 +(application)e(k)o(eypad)555 393 y(when)k(it)e(is)h(called.)19 b(Some)13 b(systems)g(need)h(this)f(to)g(enable)g(the)h(arro)o(w)e(k)o -(eys.)555 442 y(The)j(default)g(is)g(`)p Fs(off)p Ft('.)315 -515 y Fs(expand-tilde)555 570 y Ft(If)f(set)g(to)f(`)p +(eys.)555 448 y(The)j(default)g(is)g(`)p Fs(off)p Ft('.)315 +527 y Fs(expand-tilde)555 582 y Ft(If)f(set)g(to)f(`)p Fs(on)p Ft(',)f(tilde)i(expansion)f(is)h(p)q(erformed)g(when)g -(Readline)g(attempts)555 624 y(w)o(ord)h(completion.)k(The)c(default)g -(is)f(`)p Fs(off)p Ft('.)315 697 y Fs(history-preserve-point)555 -752 y Ft(If)21 b(set)g(to)f(`)p Fs(on)p Ft(',)h(the)g(history)f(co)q -(de)h(attempts)f(to)g(place)h(the)g(p)q(oin)o(t)f(\(the)555 -807 y(curren)o(t)d(cursor)h(p)q(osition\))e(at)h(the)h(same)f(lo)q -(cation)f(on)i(eac)o(h)g(history)e(line)555 862 y(retriev)o(ed)i(with)f -Fs(previous-history)f Ft(or)i Fs(next-history)p Ft(.)27 -b(The)18 b(default)555 917 y(is)d(`)p Fs(off)p Ft('.)315 -990 y Fs(horizontal-scroll-mode)555 1044 y Ft(This)j(v)m(ariable)f(can) -h(b)q(e)g(set)g(to)f(either)h(`)p Fs(on)p Ft(')f(or)g(`)p +(Readline)g(attempts)555 637 y(w)o(ord)h(completion.)k(The)c(default)g +(is)f(`)p Fs(off)p Ft('.)315 716 y Fs(history-preserve-point)555 +770 y Ft(If)h(set)g(to)f(`)p Fs(on)p Ft(',)g(the)g(history)g(co)q(de)i +(attempts)e(to)g(place)h(p)q(oin)o(t)f(at)g(the)h(same)555 +825 y(lo)q(cation)g(on)i(eac)o(h)g(history)f(line)g(retriev)o(ed)g +(with)g Fs(previous-history)e Ft(or)555 880 y Fs(next-history)p +Ft(.)k(The)e(default)e(is)h(`)p Fs(off)p Ft('.)315 959 +y Fs(horizontal-scroll-mode)555 1014 y Ft(This)j(v)m(ariable)f(can)h(b) +q(e)g(set)g(to)f(either)h(`)p Fs(on)p Ft(')f(or)g(`)p Fs(off)p Ft('.)27 b(Setting)18 b(it)f(to)g(`)p Fs(on)p -Ft(')555 1099 y(means)c(that)f(the)i(text)e(of)h(the)g(lines)g(b)q +Ft(')555 1069 y(means)c(that)f(the)i(text)e(of)h(the)g(lines)g(b)q (eing)g(edited)g(will)f(scroll)g(horizon)o(tally)555 -1154 y(on)k(a)f(single)g(screen)i(line)e(when)i(they)f(are)f(longer)g -(than)h(the)g(width)f(of)h(the)555 1209 y(screen,)e(instead)e(of)h +1124 y(on)k(a)f(single)g(screen)i(line)e(when)i(they)f(are)f(longer)g +(than)h(the)g(width)f(of)h(the)555 1178 y(screen,)e(instead)e(of)h (wrapping)f(on)o(to)g(a)h(new)g(screen)h(line.)19 b(By)13 -b(default,)g(this)555 1264 y(v)m(ariable)i(is)f(set)h(to)g(`)p -Fs(off)p Ft('.)315 1337 y Fs(input-meta)555 1391 y Ft(If)h(set)f(to)g +b(default,)g(this)555 1233 y(v)m(ariable)i(is)f(set)h(to)g(`)p +Fs(off)p Ft('.)315 1312 y Fs(input-meta)555 1367 y Ft(If)h(set)f(to)g (`)p Fs(on)p Ft(',)f(Readline)i(will)f(enable)g(eigh)o(t-bit)g(input)g -(\(it)g(will)f(not)h(clear)555 1446 y(the)20 b(eigh)o(th)f(bit)g(in)h +(\(it)g(will)f(not)h(clear)555 1422 y(the)20 b(eigh)o(th)f(bit)g(in)h (the)g(c)o(haracters)f(it)g(reads\),)h(regardless)f(of)h(what)f(the)555 -1501 y(terminal)g(claims)g(it)g(can)h(supp)q(ort.)34 +1477 y(terminal)g(claims)g(it)g(can)h(supp)q(ort.)34 b(The)20 b(default)g(v)m(alue)g(is)g(`)p Fs(off)p Ft('.)33 -b(The)555 1556 y(name)15 b Fs(meta-flag)f Ft(is)h(a)g(synon)o(ym)g(for) -f(this)h(v)m(ariable.)315 1629 y Fs(isearch-terminators)555 -1684 y Ft(The)26 b(string)f(of)g(c)o(haracters)g(that)g(should)h -(terminate)f(an)h(incremen)o(tal)555 1738 y(searc)o(h)12 +b(The)555 1531 y(name)15 b Fs(meta-flag)f Ft(is)h(a)g(synon)o(ym)g(for) +f(this)h(v)m(ariable.)315 1611 y Fs(isearch-terminators)555 +1665 y Ft(The)26 b(string)f(of)g(c)o(haracters)g(that)g(should)h +(terminate)f(an)h(incremen)o(tal)555 1720 y(searc)o(h)12 b(without)g(subsequen)o(tly)g(executing)h(the)f(c)o(haracter)g(as)g(a)g -(command)555 1793 y(\(see)22 b(Section)g(1.2.5)f([Searc)o(hing],)i +(command)555 1775 y(\(see)22 b(Section)g(1.2.5)f([Searc)o(hing],)i (page)f(3\).)40 b(If)23 b(this)f(v)m(ariable)f(has)h(not)555 -1848 y(b)q(een)17 b(giv)o(en)e(a)h(v)m(alue,)f(the)h(c)o(haracters)1247 -1846 y Fk(h)p 1259 1820 70 2 v 1259 1848 a Fj(ESC)p 1259 -1856 V 1326 1846 a Fk(i)1357 1848 y Ft(and)g Fl(C-J)f -Ft(will)f(terminate)h(an)555 1903 y(incremen)o(tal)f(searc)o(h.)315 -1976 y Fs(keymap)96 b Ft(Sets)19 b(Readline's)h(idea)f(of)g(the)g +1830 y(b)q(een)17 b(giv)o(en)e(a)h(v)m(alue,)f(the)h(c)o(haracters)1247 +1828 y Fk(h)p 1259 1802 70 2 v 1259 1830 a Fj(ESC)p 1259 +1837 V 1326 1828 a Fk(i)1357 1830 y Ft(and)g Fl(C-J)f +Ft(will)f(terminate)h(an)555 1885 y(incremen)o(tal)f(searc)o(h.)315 +1964 y Fs(keymap)96 b Ft(Sets)19 b(Readline's)h(idea)f(of)g(the)g (curren)o(t)h(k)o(eymap)f(for)f(k)o(ey)i(binding)f(com-)555 -2031 y(mands.)41 b(Acceptable)22 b Fs(keymap)g Ft(names)g(are)f -Fs(emacs)p Ft(,)i Fs(emacs-standard)p Ft(,)555 2086 y +2019 y(mands.)41 b(Acceptable)22 b Fs(keymap)g Ft(names)g(are)f +Fs(emacs)p Ft(,)i Fs(emacs-standard)p Ft(,)555 2073 y Fs(emacs-meta)p Ft(,)49 b Fs(emacs-ctlx)p Ft(,)g Fs(vi)p Ft(,)h Fs(vi-move)p Ft(,)f Fs(vi-command)p Ft(,)g(and)555 -2140 y Fs(vi-insert)p Ft(.)31 b Fs(vi)20 b Ft(is)f(equiv)m(alen)o(t)g +2128 y Fs(vi-insert)p Ft(.)31 b Fs(vi)20 b Ft(is)f(equiv)m(alen)o(t)g (to)g Fs(vi-command)p Ft(;)g Fs(emacs)g Ft(is)g(equiv)m(alen)o(t)555 -2195 y(to)c Fs(emacs-standard)p Ft(.)20 b(The)d(default)e(v)m(alue)h +2183 y(to)c Fs(emacs-standard)p Ft(.)20 b(The)d(default)e(v)m(alue)h (is)g Fs(emacs)p Ft(.)21 b(The)16 b(v)m(alue)g(of)g(the)555 -2250 y Fs(editing-mode)e Ft(v)m(ariable)g(also)g(a\013ects)h(the)g -(default)g(k)o(eymap.)315 2323 y Fs(mark-directories)555 -2378 y Ft(If)k(set)g(to)g(`)p Fs(on)p Ft(',)f(completed)h(directory)g -(names)g(ha)o(v)o(e)f(a)h(slash)g(app)q(ended.)555 2433 +2238 y Fs(editing-mode)e Ft(v)m(ariable)g(also)g(a\013ects)h(the)g +(default)g(k)o(eymap.)315 2317 y Fs(mark-directories)555 +2372 y Ft(If)k(set)g(to)g(`)p Fs(on)p Ft(',)f(completed)h(directory)g +(names)g(ha)o(v)o(e)f(a)h(slash)g(app)q(ended.)555 2426 y(The)c(default)g(is)g(`)p Fs(on)p Ft('.)315 2506 y Fs (mark-modified-lines)555 2560 y Ft(This)j(v)m(ariable,)f(when)i(set)e (to)h(`)p Fs(on)p Ft(',)f(causes)h(Readline)g(to)f(displa)o(y)g(an)h @@ -5147,157 +4850,154 @@ eop end %%Page: 8 12 TeXDict begin 8 11 bop 75 -58 a Ft(8)1322 b(GNU)15 b(Readline)g (Library)315 149 y(the)h(name)g(of)g(the)g(command.)22 -b(There)17 b(can)f(b)q(e)h(no)f(space)g(b)q(et)o(w)o(een)h(the)f(k)o -(ey)g(name)g(and)315 204 y(the)k(colon)g({)g(that)g(will)f(b)q(e)i(in)o -(terpreted)f(as)g(part)g(of)g(the)h(k)o(ey)f(name.)35 -b(The)21 b(name)f(of)315 259 y(the)d(k)o(ey)g(can)h(b)q(e)g(expressed)g -(in)f(di\013eren)o(t)f(w)o(a)o(ys,)h(dep)q(ending)h(on)f(what)g(y)o(ou) -g(\014nd)h(most)315 314 y(comfortable.)315 381 y(In)h(addition)e(to)g +b(The)16 b(name)g(of)g(the)g(k)o(ey)f(can)i(b)q(e)f(expressed)h(in)f +(di\013eren)o(t)315 204 y(w)o(a)o(ys,)e(dep)q(ending)i(on)f(what)g(y)o +(ou)g(\014nd)h(most)e(comfortable.)315 273 y(In)19 b(addition)e(to)g (command)h(names,)g(readline)g(allo)o(ws)e(k)o(eys)i(to)f(b)q(e)i(b)q -(ound)g(to)e(a)h(string)315 436 y(that)c(is)h(inserted)g(when)h(the)f +(ound)g(to)e(a)h(string)315 328 y(that)c(is)h(inserted)g(when)h(the)f (k)o(ey)g(is)g(pressed)h(\(a)e Fi(macro)r Ft(\).)315 -516 y Fi(k)o(eyname)s Ft(:)19 b Fi(function-name)f Ft(or)d -Fi(macro)555 571 y(k)o(eyname)i Ft(is)d(the)g(name)h(of)f(a)g(k)o(ey)g +410 y Fi(k)o(eyname)s Ft(:)19 b Fi(function-name)f Ft(or)d +Fi(macro)555 465 y(k)o(eyname)i Ft(is)d(the)g(name)h(of)f(a)g(k)o(ey)g (sp)q(elled)h(out)f(in)g(English.)19 b(F)l(or)13 b(example:)675 -638 y Fs(Control-u:)22 b(universal-argument)675 693 y(Meta-Rubout:)g -(backward-kill-word)675 748 y(Control-o:)g(">)i(output")555 -815 y Ft(In)c(the)f(ab)q(o)o(v)o(e)g(example,)h Fl(C-u)f +533 y Fs(Control-u:)22 b(universal-argument)675 588 y(Meta-Rubout:)g +(backward-kill-word)675 643 y(Control-o:)g(">)i(output")555 +711 y Ft(In)c(the)f(ab)q(o)o(v)o(e)g(example,)h Fl(C-u)f Ft(is)g(b)q(ound)h(to)f(the)g(function)g Fs(universal-)555 -870 y(argument)p Ft(,)f Fl(M-DEL)h Ft(is)f(b)q(ound)i(to)e(the)h -(function)g Fs(backward-kill-word)p Ft(,)555 925 y(and)h +766 y(argument)p Ft(,)f Fl(M-DEL)h Ft(is)f(b)q(ound)i(to)e(the)h +(function)g Fs(backward-kill-word)p Ft(,)555 821 y(and)h Fl(C-o)f Ft(is)g(b)q(ound)h(to)f(run)h(the)f(macro)g(expressed)h(on)g -(the)f(righ)o(t)g(hand)555 980 y(side)c(\(that)f(is,)h(to)f(insert)h +(the)f(righ)o(t)g(hand)555 875 y(side)c(\(that)f(is,)h(to)f(insert)h (the)g(text)g(`)p Fs(>)f(output)p Ft(')g(in)o(to)h(the)g(line\).)555 -1047 y(A)k(n)o(um)o(b)q(er)f(of)g(sym)o(b)q(olic)g(c)o(haracter)g -(names)g(are)g(recognized)h(while)f(pro-)555 1102 y(cessing)12 +944 y(A)k(n)o(um)o(b)q(er)f(of)g(sym)o(b)q(olic)g(c)o(haracter)g(names) +g(are)g(recognized)h(while)f(pro-)555 999 y(cessing)12 b(this)f(k)o(ey)h(binding)f(syn)o(tax:)18 b Fi(DEL)p Ft(,)11 b Fi(ESC)p Ft(,)h Fi(ESCAPE)p Ft(,)f Fi(LFD)p -Ft(,)g Fi(NEW-)555 1157 y(LINE)p Ft(,)16 b Fi(RET)p Ft(,)f +Ft(,)g Fi(NEW-)555 1054 y(LINE)p Ft(,)16 b Fi(RET)p Ft(,)f Fi(RETURN)p Ft(,)g Fi(R)o(UBOUT)p Ft(,)h Fi(SP)l(A)o(CE)p -Ft(,)f Fi(SPC)p Ft(,)f(and)i Fi(T)l(AB)p Ft(.)315 1237 +Ft(,)f Fi(SPC)p Ft(,)f(and)i Fi(T)l(AB)p Ft(.)315 1136 y Fs(")p Fi(k)o(eyseq)q Fs(")p Ft(:)k Fi(function-name)d -Ft(or)e Fi(macro)555 1292 y(k)o(eyseq)i Ft(di\013ers)d(from)h +Ft(or)e Fi(macro)555 1191 y(k)o(eyseq)i Ft(di\013ers)d(from)h Fi(k)o(eyname)j Ft(ab)q(o)o(v)o(e)d(in)h(that)e(strings)h(denoting)g -(an)g(en-)555 1346 y(tire)h(k)o(ey)h(sequence)h(can)f(b)q(e)g(sp)q +(an)g(en-)555 1245 y(tire)h(k)o(ey)h(sequence)h(can)f(b)q(e)g(sp)q (eci\014ed,)h(b)o(y)f(placing)f(the)h(k)o(ey)g(sequence)h(in)555 -1401 y(double)d(quotes.)k(Some)c Fm(gnu)g Ft(Emacs)f(st)o(yle)g(k)o(ey) -h(escap)q(es)g(can)g(b)q(e)g(used,)g(as)555 1456 y(in)i(the)g(follo)o +1300 y(double)d(quotes.)k(Some)c Fm(gnu)g Ft(Emacs)f(st)o(yle)g(k)o(ey) +h(escap)q(es)g(can)g(b)q(e)g(used,)g(as)555 1355 y(in)i(the)g(follo)o (wing)d(example,)j(but)g(the)g(sp)q(ecial)g(c)o(haracter)f(names)h(are) -f(not)555 1511 y(recognized.)675 1578 y Fs("\\C-u":)23 -b(universal-argument)675 1633 y("\\C-x\\C-r":)f(re-read-init-file)675 -1688 y("\\e[11~":)h("Function)f(Key)i(1")555 1755 y Ft(In)33 +f(not)555 1410 y(recognized.)675 1478 y Fs("\\C-u":)23 +b(universal-argument)675 1533 y("\\C-x\\C-r":)f(re-read-init-file)675 +1588 y("\\e[11~":)h("Function)f(Key)i(1")555 1656 y Ft(In)33 b(the)f(ab)q(o)o(v)o(e)g(example,)k Fl(C-u)c Ft(is)g(again)f(b)q(ound)i -(to)f(the)g(function)555 1810 y Fs(universal-argument)19 +(to)f(the)g(function)555 1711 y Fs(universal-argument)19 b Ft(\(just)j(as)f(it)g(w)o(as)g(in)h(the)g(\014rst)f(example\),)i(`)p -Fl(C-x)555 1865 y(C-r)p Ft(')d(is)g(b)q(ound)h(to)f(the)h(function)f -Fs(re-read-init-file)p Ft(,)g(and)g(`)1731 1863 y Fk(h)p -1743 1837 70 2 v 1743 1865 a Fj(ESC)p 1743 1873 V 1810 -1863 a Fk(i)15 b(h)p 1852 1837 10 2 v 1852 1865 a Fj([)p -1852 1873 V 1860 1863 a Fk(i)555 1918 y(h)p 567 1892 -18 2 v 567 1920 a Fj(1)p 567 1927 V 583 1918 a Fk(i)g(h)p -625 1892 V 625 1920 a Fj(1)p 625 1927 V 640 1918 a Fk(i)g(h)p -683 1892 24 2 v 683 1920 a Fs(~)p 683 1927 V 704 1918 -a Fk(i)719 1920 y Ft(')g(is)g(b)q(ound)h(to)e(insert)h(the)g(text)g(`)p -Fs(Function)f(Key)g(1)p Ft('.)315 2000 y(The)h(follo)o(wing)e +Fl(C-x)555 1766 y(C-r)p Ft(')d(is)g(b)q(ound)h(to)f(the)h(function)f +Fs(re-read-init-file)p Ft(,)g(and)g(`)1731 1764 y Fk(h)p +1743 1738 70 2 v 1743 1766 a Fj(ESC)p 1743 1774 V 1810 +1764 a Fk(i)15 b(h)p 1852 1738 10 2 v 1852 1766 a Fj([)p +1852 1774 V 1860 1764 a Fk(i)555 1819 y(h)p 567 1793 +18 2 v 567 1821 a Fj(1)p 567 1828 V 583 1819 a Fk(i)g(h)p +625 1793 V 625 1821 a Fj(1)p 625 1828 V 640 1819 a Fk(i)g(h)p +683 1793 24 2 v 683 1821 a Fs(~)p 683 1828 V 704 1819 +a Fk(i)719 1821 y Ft(')g(is)g(b)q(ound)h(to)e(insert)h(the)g(text)g(`)p +Fs(Function)f(Key)g(1)p Ft('.)315 1903 y(The)h(follo)o(wing)e Fm(gnu)h Ft(Emacs)h(st)o(yle)f(escap)q(e)i(sequences)g(are)e(a)o(v)m -(ailable)g(when)h(sp)q(ecifying)315 2055 y(k)o(ey)g(sequences:)315 -2135 y Fl(\\C-)168 b Ft(con)o(trol)14 b(pre\014x)315 -2215 y Fl(\\M-)168 b Ft(meta)15 b(pre\014x)315 2295 y +(ailable)g(when)h(sp)q(ecifying)315 1958 y(k)o(ey)g(sequences:)315 +2040 y Fl(\\C-)168 b Ft(con)o(trol)14 b(pre\014x)315 +2122 y Fl(\\M-)168 b Ft(meta)15 b(pre\014x)315 2204 y Fl(\\e)192 b Ft(an)15 b(escap)q(e)h(c)o(haracter)315 -2375 y Fl(\\\\)192 b Ft(bac)o(kslash)315 2455 y Fl(\\)p -Fs(")555 2453 y Fk(h)p 567 2427 V 567 2455 a Fs(")p 567 -2463 V 589 2453 a Fk(i)604 2455 y Ft(,)15 b(a)f(double)i(quotation)e -(mark)315 2535 y Fl(\\')555 2533 y Fk(h)p 567 2507 10 -2 v 567 2535 a Fj(')p 567 2543 V 575 2533 a Fk(i)590 -2535 y Ft(,)h(a)f(single)h(quote)g(or)g(ap)q(ostrophe)315 -2615 y(In)f(addition)f(to)h(the)f Fm(gnu)h Ft(Emacs)g(st)o(yle)e(escap) +2286 y Fl(\\\\)192 b Ft(bac)o(kslash)315 2369 y Fl(\\)p +Fs(")555 2367 y Fk(h)p 567 2341 V 567 2369 a Fs(")p 567 +2376 V 589 2367 a Fk(i)604 2369 y Ft(,)15 b(a)f(double)i(quotation)e +(mark)315 2451 y Fl(\\')555 2449 y Fk(h)p 567 2423 10 +2 v 567 2451 a Fj(')p 567 2458 V 575 2449 a Fk(i)590 +2451 y Ft(,)h(a)f(single)h(quote)g(or)g(ap)q(ostrophe)315 +2533 y(In)f(addition)f(to)h(the)f Fm(gnu)h Ft(Emacs)g(st)o(yle)e(escap) q(e)j(sequences,)g(a)e(second)i(set)e(of)h(bac)o(kslash)315 -2670 y(escap)q(es)i(is)f(a)o(v)m(ailable:)p eop end +2588 y(escap)q(es)i(is)f(a)o(v)m(ailable:)315 2670 y +Fs(\\a)192 b Ft(alert)14 b(\(b)q(ell\))p eop end %%Page: 9 13 TeXDict begin 9 12 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h -(Editing)1075 b(9)315 149 y Fs(\\a)192 b Ft(alert)14 -b(\(b)q(ell\))315 226 y Fs(\\b)192 b Ft(bac)o(kspace)315 -303 y Fs(\\d)g Ft(delete)315 380 y Fs(\\f)g Ft(form)14 -b(feed)315 457 y Fs(\\n)192 b Ft(newline)315 534 y Fs(\\r)g -Ft(carriage)14 b(return)315 610 y Fs(\\t)192 b Ft(horizon)o(tal)14 -b(tab)315 687 y Fs(\\v)192 b Ft(v)o(ertical)14 b(tab)315 -764 y Fs(\\)p Fl(nnn)144 b Ft(the)17 b(eigh)o(t-bit)f(c)o(haracter)h +(Editing)1075 b(9)315 149 y Fs(\\b)192 b Ft(bac)o(kspace)315 +228 y Fs(\\d)g Ft(delete)315 306 y Fs(\\f)g Ft(form)14 +b(feed)315 384 y Fs(\\n)192 b Ft(newline)315 462 y Fs(\\r)g +Ft(carriage)14 b(return)315 541 y Fs(\\t)192 b Ft(horizon)o(tal)14 +b(tab)315 619 y Fs(\\v)192 b Ft(v)o(ertical)14 b(tab)315 +697 y Fs(\\)p Fl(nnn)144 b Ft(the)17 b(eigh)o(t-bit)f(c)o(haracter)h (whose)g(v)m(alue)h(is)e(the)i(o)q(ctal)e(v)m(alue)i -Fi(nnn)g Ft(\(one)f(to)555 819 y(three)e(digits\))315 -896 y Fs(\\x)p Fl(HH)144 b Ft(the)20 b(eigh)o(t-bit)e(c)o(haracter)h +Fi(nnn)g Ft(\(one)f(to)555 752 y(three)e(digits\))315 +830 y Fs(\\x)p Fl(HH)144 b Ft(the)20 b(eigh)o(t-bit)e(c)o(haracter)h (whose)h(v)m(alue)g(is)f(the)h(hexadecimal)f(v)m(alue)h -Fi(HH)555 951 y Ft(\(one)15 b(or)g(t)o(w)o(o)f(hex)h(digits\))315 -1027 y(When)k(en)o(tering)f(the)h(text)f(of)g(a)h(macro,)f(single)g(or) -g(double)h(quotes)g(m)o(ust)f(b)q(e)h(used)h(to)315 1082 +Fi(HH)555 885 y Ft(\(one)15 b(or)g(t)o(w)o(o)f(hex)h(digits\))315 +963 y(When)k(en)o(tering)f(the)h(text)f(of)g(a)h(macro,)f(single)g(or)g +(double)h(quotes)g(m)o(ust)f(b)q(e)h(used)h(to)315 1018 y(indicate)10 b(a)h(macro)f(de\014nition.)18 b(Unquoted)11 b(text)f(is)h(assumed)f(to)h(b)q(e)g(a)f(function)h(name.)18 -b(In)315 1137 y(the)11 b(macro)f(b)q(o)q(dy)l(,)i(the)f(bac)o(kslash)f +b(In)315 1073 y(the)11 b(macro)f(b)q(o)q(dy)l(,)i(the)f(bac)o(kslash)f (escap)q(es)h(describ)q(ed)h(ab)q(o)o(v)o(e)e(are)g(expanded.)20 -b(Bac)o(kslash)315 1192 y(will)f(quote)g(an)o(y)h(other)g(c)o(haracter) +b(Bac)o(kslash)315 1128 y(will)f(quote)g(an)o(y)h(other)g(c)o(haracter) f(in)h(the)g(macro)f(text,)h(including)g(`)p Fs(")p Ft(')f(and)h(`)p -Fs(')p Ft('.)34 b(F)l(or)315 1247 y(example,)13 b(the)g(follo)o(wing)d +Fs(')p Ft('.)34 b(F)l(or)315 1183 y(example,)13 b(the)g(follo)o(wing)d (binding)j(will)f(mak)o(e)g(`)p Fl(C-x)i Fs(\\)p Ft(')f(insert)f(a)h (single)f(`)p Fs(\\)p Ft(')g(in)o(to)g(the)h(line:)435 -1312 y Fs("\\C-x\\\\":)23 b("\\\\")75 1420 y Fh(1.3.2)30 -b(Conditional)20 b(Init)g(Constructs)137 1541 y Ft(Readline)e(implemen) +1249 y Fs("\\C-x\\\\":)23 b("\\\\")75 1359 y Fh(1.3.2)30 +b(Conditional)20 b(Init)g(Constructs)137 1480 y Ft(Readline)e(implemen) o(ts)f(a)h(facilit)o(y)d(similar)h(in)i(spirit)e(to)h(the)h -(conditional)e(compilation)g(features)75 1596 y(of)h(the)g(C)g(prepro)q +(conditional)e(compilation)g(features)75 1535 y(of)h(the)g(C)g(prepro)q (cessor)g(whic)o(h)h(allo)o(ws)d(k)o(ey)i(bindings)g(and)h(v)m(ariable) -e(settings)g(to)h(b)q(e)h(p)q(erformed)f(as)75 1650 y(the)e(result)g +e(settings)g(to)h(b)q(e)h(p)q(erformed)f(as)75 1590 y(the)e(result)g (of)g(tests.)k(There)c(are)g(four)g(parser)g(directiv)o(es)f(used.)75 -1727 y Fs($if)168 b Ft(The)16 b Fs($if)f Ft(construct)g(allo)o(ws)f +1668 y Fs($if)168 b Ft(The)16 b Fs($if)f Ft(construct)g(allo)o(ws)f (bindings)i(to)f(b)q(e)h(made)g(based)g(on)f(the)h(editing)f(mo)q(de,)h -(the)315 1782 y(terminal)i(b)q(eing)h(used,)h(or)f(the)g(application)f +(the)315 1723 y(terminal)i(b)q(eing)h(used,)h(or)f(the)g(application)f (using)g(Readline.)32 b(The)19 b(text)g(of)f(the)i(test)315 -1837 y(extends)c(to)e(the)h(end)h(of)f(the)g(line;)g(no)g(c)o +1778 y(extends)c(to)e(the)h(end)h(of)f(the)g(line;)g(no)g(c)o (haracters)f(are)h(required)h(to)e(isolate)g(it.)315 -1914 y Fs(mode)144 b Ft(The)11 b Fs(mode=)e Ft(form)h(of)g(the)h +1856 y Fs(mode)144 b Ft(The)11 b Fs(mode=)e Ft(form)h(of)g(the)h Fs($if)f Ft(directiv)o(e)f(is)h(used)h(to)f(test)g(whether)h(Readline) -555 1968 y(is)j(in)h Fs(emacs)f Ft(or)g Fs(vi)g Ft(mo)q(de.)20 +555 1911 y(is)j(in)h Fs(emacs)f Ft(or)g Fs(vi)g Ft(mo)q(de.)20 b(This)15 b(ma)o(y)f(b)q(e)h(used)g(in)g(conjunction)g(with)f(the)555 -2023 y(`)p Fs(set)g(keymap)p Ft(')f(command,)g(for)h(instance,)f(to)g -(set)h(bindings)f(in)h(the)g Fs(emacs-)555 2078 y(standard)d +1966 y(`)p Fs(set)g(keymap)p Ft(')f(command,)g(for)h(instance,)f(to)g +(set)h(bindings)f(in)h(the)g Fs(emacs-)555 2020 y(standard)d Ft(and)i Fs(emacs-ctlx)e Ft(k)o(eymaps)h(only)h(if)f(Readline)g(is)g -(starting)f(out)555 2133 y(in)k Fs(emacs)g Ft(mo)q(de.)315 -2210 y Fs(term)144 b Ft(The)14 b Fs(term=)e Ft(form)h(ma)o(y)g(b)q(e)h +(starting)f(out)555 2075 y(in)k Fs(emacs)g Ft(mo)q(de.)315 +2153 y Fs(term)144 b Ft(The)14 b Fs(term=)e Ft(form)h(ma)o(y)g(b)q(e)h (used)g(to)f(include)h(terminal-sp)q(eci\014c)f(k)o(ey)g(bind-)555 -2264 y(ings,)18 b(p)q(erhaps)h(to)e(bind)h(the)h(k)o(ey)e(sequences)j -(output)e(b)o(y)g(the)g(terminal's)555 2319 y(function)12 +2208 y(ings,)18 b(p)q(erhaps)h(to)e(bind)h(the)h(k)o(ey)e(sequences)j +(output)e(b)o(y)g(the)g(terminal's)555 2263 y(function)12 b(k)o(eys.)18 b(The)13 b(w)o(ord)e(on)h(the)g(righ)o(t)f(side)g(of)h -(the)g(`)p Fs(=)p Ft(')f(is)g(tested)h(against)555 2374 +(the)g(`)p Fs(=)p Ft(')f(is)g(tested)h(against)555 2318 y(b)q(oth)j(the)g(full)g(name)g(of)f(the)h(terminal)f(and)h(the)g(p)q -(ortion)g(of)f(the)h(terminal)555 2429 y(name)i(b)q(efore)g(the)g +(ortion)g(of)f(the)h(terminal)555 2373 y(name)i(b)q(efore)g(the)g (\014rst)f(`)p Fs(-)p Ft('.)24 b(This)16 b(allo)o(ws)f Fs(sun)h Ft(to)g(matc)o(h)h(b)q(oth)f Fs(sun)h Ft(and)555 -2484 y Fs(sun-cmd)p Ft(,)d(for)g(instance.)315 2560 y -Fs(application)555 2615 y Ft(The)d Fi(application)f Ft(construct)h(is)f +2427 y Fs(sun-cmd)p Ft(,)d(for)g(instance.)315 2506 y +Fs(application)555 2560 y Ft(The)d Fi(application)f Ft(construct)h(is)f (used)i(to)e(include)h(application-sp)q(eci\014c)g(set-)555 -2670 y(tings.)18 b(Eac)o(h)12 b(program)f(using)i(the)f(Readline)h -(library)e(sets)h(the)g Fi(application)p eop end +2615 y(tings.)18 b(Eac)o(h)12 b(program)f(using)i(the)f(Readline)h +(library)e(sets)h(the)g Fi(application)555 2670 y(name)p +Ft(,)g(and)g(y)o(ou)f(can)h(test)f(for)g(a)g(particular)f(v)m(alue.)19 +b(This)11 b(could)h(b)q(e)g(used)h(to)p eop end %%Page: 10 14 TeXDict begin 10 13 bop 75 -58 a Ft(10)1299 b(GNU)15 -b(Readline)g(Library)555 149 y Fi(name)p Ft(,)d(and)g(y)o(ou)f(can)h -(test)f(for)g(a)g(particular)f(v)m(alue.)19 b(This)11 -b(could)h(b)q(e)g(used)h(to)555 204 y(bind)k(k)o(ey)f(sequences)i(to)d +b(Readline)g(Library)555 149 y(bind)i(k)o(ey)f(sequences)i(to)d (functions)i(useful)f(for)g(a)g(sp)q(eci\014c)h(program.)23 -b(F)l(or)555 259 y(instance,)16 b(the)h(follo)o(wing)d(command)j(adds)f -(a)g(k)o(ey)h(sequence)g(that)f(quotes)555 314 y(the)f(curren)o(t)g(or) -g(previous)g(w)o(ord)f(in)i(Bash:)675 381 y Fs($if)23 -b(Bash)675 436 y(#)h(Quote)f(the)g(current)g(or)h(previous)f(word)675 -491 y("\\C-xq":)g("\\eb\\"\\ef\\"")675 545 y($endif)75 -625 y($endif)96 b Ft(This)15 b(command,)f(as)h(seen)h(in)f(the)g +b(F)l(or)555 204 y(instance,)16 b(the)h(follo)o(wing)d(command)j(adds)f +(a)g(k)o(ey)h(sequence)g(that)f(quotes)555 259 y(the)f(curren)o(t)g(or) +g(previous)g(w)o(ord)f(in)i(Bash:)675 326 y Fs($if)23 +b(Bash)675 381 y(#)h(Quote)f(the)g(current)g(or)h(previous)f(word)675 +436 y("\\C-xq":)g("\\eb\\"\\ef\\"")675 491 y($endif)75 +570 y($endif)96 b Ft(This)15 b(command,)f(as)h(seen)h(in)f(the)g (previous)g(example,)g(terminates)f(an)h Fs($if)f Ft(command.)75 -705 y Fs($else)120 b Ft(Commands)15 b(in)g(this)f(branc)o(h)i(of)e(the) +650 y Fs($else)120 b Ft(Commands)15 b(in)g(this)f(branc)o(h)i(of)e(the) i Fs($if)e Ft(directiv)o(e)h(are)g(executed)h(if)f(the)g(test)g(fails.) -75 785 y Fs($include)48 b Ft(This)21 b(directiv)o(e)g(tak)o(es)g(a)h +75 730 y Fs($include)48 b Ft(This)21 b(directiv)o(e)g(tak)o(es)g(a)h (single)f(\014lename)h(as)f(an)h(argumen)o(t)f(and)h(reads)f(commands) -315 839 y(and)e(bindings)h(from)e(that)h(\014le.)32 b(F)l(or)19 +315 785 y(and)e(bindings)h(from)e(that)h(\014le.)32 b(F)l(or)19 b(example,)h(the)f(follo)o(wing)e(directiv)o(e)i(reads)g(from)315 -894 y(`)p Fs(/etc/inputrc)p Ft(':)435 961 y Fs($include)k(/etc/inputrc) -75 1073 y Fh(1.3.3)30 b(Sample)20 b(Init)h(File)137 1196 +839 y(`)p Fs(/etc/inputrc)p Ft(':)435 907 y Fs($include)k(/etc/inputrc) +75 1019 y Fh(1.3.3)30 b(Sample)20 b(Init)h(File)137 1141 y Ft(Here)16 b(is)f(an)g(example)g(of)g(an)g Fi(inputrc)j Ft(\014le.)i(This)15 b(illustrates)e(k)o(ey)i(binding,)g(v)m(ariable)f -(assignmen)o(t,)75 1250 y(and)h(conditional)f(syn)o(tax.)p +(assignmen)o(t,)75 1196 y(and)h(conditional)f(syn)o(tax.)p eop end %%Page: 11 15 TeXDict begin 11 14 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)h @@ -5887,7 +5587,7 @@ h(func-)75 1583 y(tion)j(called)g Fs(initialize_readline\(\))d Ft(whic)o(h)j(p)q(erforms)g(this)g(and)h(other)f(desired)g (initializations,)75 1638 y(suc)o(h)g(as)e(installing)g(custom)g (completers)h(\(see)g(Section)g(2.6)g([Custom)f(Completers],)f(page)i -(42\).)75 1761 y Fr(2.2)33 b(Custom)21 b(F)-6 b(unctions)137 +(41\).)75 1761 y Fr(2.2)33 b(Custom)21 b(F)-6 b(unctions)137 1882 y Ft(Readline)13 b(pro)o(vides)f(man)o(y)f(functions)h(for)g (manipulating)f(the)h(text)g(of)g(the)g(line,)g(but)g(it)g(isn't)f(p)q (ossi-)75 1936 y(ble)i(to)g(an)o(ticipate)f(the)h(needs)h(of)f(all)f @@ -6053,1824 +5753,1783 @@ b Fg(char)20 b(*)f Ff(rl)p 288 149 18 3 v 25 w(prompt)195 b(is)h(set)g(from)f(the)h(argumen)o(t)g(to)f Fs(readline\(\))p Ft(,)g(and)h(should)195 259 y(not)g(b)q(e)h(assigned)f(to)g(directly)l (.)19 b(The)14 b Fs(rl_set_prompt\(\))d Ft(function)i(\(see)h(Section)f -(2.4.6)f([Redis-)195 314 y(pla)o(y],)i(page)h(33\))f(ma)o(y)h(b)q(e)g +(2.4.6)f([Redis-)195 314 y(pla)o(y],)i(page)h(32\))f(ma)o(y)h(b)q(e)g (used)h(to)f(mo)q(dify)g(the)g(prompt)g(string)f(after)g(calling)g -Fs(readline\(\))p Ft(.)1685 407 y([V)l(ariable])-1801 -b Fg(char)20 b(*)f Ff(rl)p 288 407 V 25 w(displa)n(y)p -488 407 V 24 w(prompt)195 462 y Ft(The)d(string)f(displa)o(y)o(ed)g(as) -h(the)g(prompt.)21 b(This)15 b(is)h(usually)f(iden)o(tical)g(to)g -Fi(rl)p 1516 462 14 2 v 19 w(prompt)p Ft(,)h(but)g(ma)o(y)195 -517 y(b)q(e)i(c)o(hanged)f(temp)q(orarily)f(b)o(y)h(functions)g(that)f -(use)i(the)f(prompt)g(string)f(as)g(a)h(message)g(area,)195 -571 y(suc)o(h)f(as)e(incremen)o(tal)h(searc)o(h.)1685 -665 y([V)l(ariable])-1801 b Fg(int)20 b Ff(rl)p 217 665 -18 3 v 24 w(already)p 425 665 V 25 w(prompted)195 719 -y Ft(If)e(an)g(application)f(wishes)h(to)g(displa)o(y)f(the)h(prompt)g -(itself,)f(rather)h(than)g(ha)o(v)o(e)g(Readline)g(do)195 -774 y(it)e(the)g(\014rst)g(time)g Fs(readline\(\))f Ft(is)h(called,)g -(it)f(should)i(set)f(this)g(v)m(ariable)f(to)h(a)g(non-zero)h(v)m(alue) -195 829 y(after)h(displa)o(ying)g(the)h(prompt.)31 b(The)19 -b(prompt)g(m)o(ust)f(also)g(b)q(e)i(passed)f(as)f(the)h(argumen)o(t)g -(to)195 884 y Fs(readline\(\))c Ft(so)h(the)h(redispla)o(y)e(functions) -i(can)f(up)q(date)h(the)g(displa)o(y)f(prop)q(erly)l(.)23 -b(The)17 b(calling)195 938 y(application)d(is)h(resp)q(onsible)g(for)f -(managing)g(the)i(v)m(alue;)f(Readline)g(nev)o(er)h(sets)e(it.)1685 -1032 y([V)l(ariable])-1801 b Fg(const)20 b(char)g(*)f -Ff(rl)p 438 1032 V 25 w(library)p 633 1032 V 24 w(v)n(ersion)195 -1086 y Ft(The)c(v)o(ersion)g(n)o(um)o(b)q(er)g(of)g(this)g(revision)f -(of)h(the)g(library)l(.)1685 1180 y([V)l(ariable])-1801 -b Fg(int)20 b Ff(rl)p 217 1180 V 24 w(readline)p 441 -1180 V 25 w(v)n(ersion)195 1234 y Ft(An)d(in)o(teger)g(enco)q(ding)g -(the)g(curren)o(t)g(v)o(ersion)f(of)h(the)g(library)l(.)25 -b(The)17 b(enco)q(ding)g(is)g(of)g(the)g(form)195 1289 -y(0x)p Fi(MMmm)p Ft(,)g(where)i Fi(MM)j Ft(is)c(the)g(t)o(w)o(o-digit)e -(ma)s(jor)h(v)o(ersion)h(n)o(um)o(b)q(er,)h(and)f Fi(mm)g -Ft(is)g(the)g(t)o(w)o(o-)195 1344 y(digit)g(minor)f(v)o(ersion)h(n)o -(um)o(b)q(er.)31 b(F)l(or)18 b(example,)h(for)f(Readline-4.2,)h -Fs(rl_readline_version)195 1399 y Ft(w)o(ould)c(ha)o(v)o(e)f(the)i(v)m -(alue)f(0x0402.)1685 1492 y([V)l(ariable])-1801 b Fg(int)20 -b Ff(rl)p 217 1492 V 24 w(gn)n(u)p 332 1492 V 25 w(readline)p -557 1492 V 25 w(p)195 1547 y Ft(Alw)o(a)o(ys)14 b(set)h(to)f(1,)h +Fs(readline\(\))p Ft(.)1685 412 y([V)l(ariable])-1801 +b Fg(int)20 b Ff(rl)p 217 412 V 24 w(already)p 425 412 +V 25 w(prompted)195 467 y Ft(If)e(an)g(application)f(wishes)h(to)g +(displa)o(y)f(the)h(prompt)g(itself,)f(rather)h(than)g(ha)o(v)o(e)g +(Readline)g(do)195 522 y(it)e(the)g(\014rst)g(time)g +Fs(readline\(\))f Ft(is)h(called,)g(it)f(should)i(set)f(this)g(v)m +(ariable)f(to)h(a)g(non-zero)h(v)m(alue)195 577 y(after)h(displa)o +(ying)g(the)h(prompt.)31 b(The)19 b(prompt)g(m)o(ust)f(also)g(b)q(e)i +(passed)f(as)f(the)h(argumen)o(t)g(to)195 632 y Fs(readline\(\))c +Ft(so)h(the)h(redispla)o(y)e(functions)i(can)f(up)q(date)h(the)g +(displa)o(y)f(prop)q(erly)l(.)23 b(The)17 b(calling)195 +686 y(application)d(is)h(resp)q(onsible)g(for)f(managing)g(the)i(v)m +(alue;)f(Readline)g(nev)o(er)h(sets)e(it.)1685 785 y([V)l(ariable]) +-1801 b Fg(const)20 b(char)g(*)f Ff(rl)p 438 785 V 25 +w(library)p 633 785 V 24 w(v)n(ersion)195 840 y Ft(The)c(v)o(ersion)g +(n)o(um)o(b)q(er)g(of)g(this)g(revision)f(of)h(the)g(library)l(.)1685 +938 y([V)l(ariable])-1801 b Fg(int)20 b Ff(rl)p 217 938 +V 24 w(readline)p 441 938 V 25 w(v)n(ersion)195 993 y +Ft(An)d(in)o(teger)g(enco)q(ding)g(the)g(curren)o(t)g(v)o(ersion)f(of)h +(the)g(library)l(.)25 b(The)17 b(enco)q(ding)g(is)g(of)g(the)g(form)195 +1048 y(0x)p Fi(MMmm)p Ft(,)g(where)i Fi(MM)j Ft(is)c(the)g(t)o(w)o +(o-digit)e(ma)s(jor)h(v)o(ersion)h(n)o(um)o(b)q(er,)h(and)f +Fi(mm)g Ft(is)g(the)g(t)o(w)o(o-)195 1103 y(digit)g(minor)f(v)o(ersion) +h(n)o(um)o(b)q(er.)31 b(F)l(or)18 b(example,)h(for)f(Readline-4.2,)h +Fs(rl_readline_version)195 1158 y Ft(w)o(ould)c(ha)o(v)o(e)f(the)i(v)m +(alue)f(0x0402.)1685 1256 y([V)l(ariable])-1801 b Fg(int)20 +b Ff(rl)p 217 1256 V 24 w(gn)n(u)p 332 1256 V 25 w(readline)p +557 1256 V 25 w(p)195 1311 y Ft(Alw)o(a)o(ys)14 b(set)h(to)f(1,)h (denoting)g(that)f(this)h(is)g Fm(gnu)g Ft(readline)f(rather)h(than)g -(some)g(em)o(ulation.)1685 1640 y([V)l(ariable])-1801 -b Fg(const)20 b(char)g(*)f Ff(rl)p 438 1640 V 25 w(terminal)p -675 1640 V 24 w(name)195 1695 y Ft(The)14 b(terminal)f(t)o(yp)q(e,)h +(some)g(em)o(ulation.)1685 1410 y([V)l(ariable])-1801 +b Fg(const)20 b(char)g(*)f Ff(rl)p 438 1410 V 25 w(terminal)p +675 1410 V 24 w(name)195 1465 y Ft(The)14 b(terminal)f(t)o(yp)q(e,)h (used)h(for)e(initialization.)k(If)d(not)f(set)h(b)o(y)g(the)g -(application,)f(Readline)h(sets)195 1749 y(this)h(to)f(the)h(v)m(alue)h +(application,)f(Readline)h(sets)195 1519 y(this)h(to)f(the)h(v)m(alue)h (of)f(the)g Fs(TERM)g Ft(en)o(vironmen)o(t)f(v)m(ariable)h(the)g -(\014rst)g(time)f(it)h(is)f(called.)1685 1843 y([V)l(ariable])-1801 -b Fg(const)20 b(char)g(*)f Ff(rl)p 438 1843 V 25 w(readline)p -663 1843 V 24 w(name)195 1897 y Ft(This)c(v)m(ariable)g(is)g(set)h(to)f +(\014rst)g(time)f(it)h(is)f(called.)1685 1618 y([V)l(ariable])-1801 +b Fg(const)20 b(char)g(*)f Ff(rl)p 438 1618 V 25 w(readline)p +663 1618 V 24 w(name)195 1673 y Ft(This)c(v)m(ariable)g(is)g(set)h(to)f (a)g(unique)h(name)g(b)o(y)f(eac)o(h)h(application)e(using)h(Readline.) -22 b(The)16 b(v)m(alue)195 1952 y(allo)o(ws)c(conditional)h(parsing)g +22 b(The)16 b(v)m(alue)195 1728 y(allo)o(ws)c(conditional)h(parsing)g (of)h(the)g(inputrc)g(\014le)g(\(see)g(Section)g(1.3.2)e([Conditional)g -(Init)i(Con-)195 2007 y(structs],)g(page)h(9\).)1685 -2100 y([V)l(ariable])-1801 b Fg(FILE)20 b(*)f Ff(rl)p -288 2100 V 25 w(instream)195 2155 y Ft(The)i(stdio)e(stream)h(from)g +(Init)i(Con-)195 1782 y(structs],)g(page)h(9\).)1685 +1881 y([V)l(ariable])-1801 b Fg(FILE)20 b(*)f Ff(rl)p +288 1881 V 25 w(instream)195 1936 y Ft(The)i(stdio)e(stream)h(from)g (whic)o(h)g(Readline)h(reads)f(input.)36 b(If)21 b Fs(NULL)p -Ft(,)g(Readline)g(defaults)f(to)195 2210 y Fi(stdin)p -Ft(.)1685 2303 y([V)l(ariable])-1801 b Fg(FILE)20 b(*)f -Ff(rl)p 288 2303 V 25 w(outstream)195 2358 y Ft(The)e(stdio)g(stream)f +Ft(,)g(Readline)g(defaults)f(to)195 1991 y Fi(stdin)p +Ft(.)1685 2089 y([V)l(ariable])-1801 b Fg(FILE)20 b(*)f +Ff(rl)p 288 2089 V 25 w(outstream)195 2144 y Ft(The)e(stdio)g(stream)f (to)h(whic)o(h)g(Readline)g(p)q(erforms)g(output.)26 b(If)18 b Fs(NULL)p Ft(,)e(Readline)i(defaults)f(to)195 -2412 y Fi(stdout)p Ft(.)1685 2506 y([V)l(ariable])-1801 -b Fg(int)20 b Ff(rl)p 217 2506 V 24 w(prefer)p 391 2506 -V 24 w(en)n(v)p 501 2506 V 26 w(winsize)195 2560 y Ft(If)14 +2199 y Fi(stdout)p Ft(.)1685 2297 y([V)l(ariable])-1801 +b Fg(int)20 b Ff(rl)p 217 2297 V 24 w(prefer)p 391 2297 +V 24 w(en)n(v)p 501 2297 V 26 w(winsize)195 2352 y Ft(If)14 b(non-zero,)h(Readline)f(giv)o(es)g(v)m(alues)g(found)g(in)g(the)h Fs(LINES)e Ft(and)i Fs(COLUMNS)e Ft(en)o(vironmen)o(t)g(v)m(ari-)195 -2615 y(ables)20 b(greater)g(precedence)i(than)e(v)m(alues)h(fetc)o(hed) +2407 y(ables)20 b(greater)g(precedence)i(than)e(v)m(alues)h(fetc)o(hed) g(from)e(the)i(k)o(ernel)f(when)h(computing)f(the)195 -2670 y(screen)c(dimensions.)p eop end +2462 y(screen)c(dimensions.)1685 2560 y([V)l(ariable])-1801 +b Fg(rl_command_func_t)22 b(*)d Ff(rl)p 628 2560 V 25 +w(last)p 742 2560 V 24 w(func)195 2615 y Ft(The)f(address)f(of)g(the)g +(last)g(command)g(function)g(Readline)h(executed.)27 +b(Ma)o(y)17 b(b)q(e)h(used)g(to)f(test)195 2670 y(whether)e(or)g(not)g +(a)g(function)g(is)f(b)q(eing)i(executed)g(t)o(wice)f(in)g(succession,) +g(for)f(example.)p eop end %%Page: 26 30 TeXDict begin 26 29 bop 75 -58 a Ft(26)1299 b(GNU)15 b(Readline)g(Library)1685 149 y([V)l(ariable])-1801 b -Fg(rl_command_func_t)22 b(*)d Ff(rl)p 628 149 18 3 v -25 w(last)p 742 149 V 24 w(func)195 204 y Ft(The)f(address)f(of)g(the)g -(last)g(command)g(function)g(Readline)h(executed.)27 -b(Ma)o(y)17 b(b)q(e)h(used)g(to)f(test)195 259 y(whether)e(or)g(not)g -(a)g(function)g(is)f(b)q(eing)i(executed)g(t)o(wice)f(in)g(succession,) -g(for)f(example.)1685 363 y([V)l(ariable])-1801 b Fg(rl_hook_func_t)21 -b(*)e Ff(rl)p 549 363 V 25 w(startup)p 757 363 V 25 w(ho)r(ok)195 -418 y Ft(If)e(non-zero,)h(this)f(is)f(the)i(address)f(of)f(a)h -(function)g(to)g(call)f(just)h(b)q(efore)g Fs(readline)f -Ft(prin)o(ts)h(the)195 473 y(\014rst)e(prompt.)1685 577 -y([V)l(ariable])-1801 b Fg(rl_hook_func_t)21 b(*)e Ff(rl)p -549 577 V 25 w(pre)p 656 577 V 25 w(input)p 815 577 V -25 w(ho)r(ok)195 632 y Ft(If)f(non-zero,)g(this)f(is)h(the)g(address)f -(of)h(a)f(function)h(to)f(call)g(after)g(the)h(\014rst)f(prompt)g(has)h -(b)q(een)195 686 y(prin)o(ted)d(and)g(just)g(b)q(efore)h +Fg(rl_hook_func_t)21 b(*)e Ff(rl)p 549 149 18 3 v 25 +w(startup)p 757 149 V 25 w(ho)r(ok)195 204 y Ft(If)e(non-zero,)h(this)f +(is)f(the)i(address)f(of)f(a)h(function)g(to)g(call)f(just)h(b)q(efore) +g Fs(readline)f Ft(prin)o(ts)h(the)195 259 y(\014rst)e(prompt.)1685 +352 y([V)l(ariable])-1801 b Fg(rl_hook_func_t)21 b(*)e +Ff(rl)p 549 352 V 25 w(pre)p 656 352 V 25 w(input)p 815 +352 V 25 w(ho)r(ok)195 407 y Ft(If)f(non-zero,)g(this)f(is)h(the)g +(address)f(of)h(a)f(function)h(to)f(call)g(after)g(the)h(\014rst)f +(prompt)g(has)h(b)q(een)195 462 y(prin)o(ted)d(and)g(just)g(b)q(efore)h Fs(readline)e Ft(starts)g(reading)g(input)i(c)o(haracters.)1685 -791 y([V)l(ariable])-1801 b Fg(rl_hook_func_t)21 b(*)e -Ff(rl)p 549 791 V 25 w(ev)n(en)n(t)p 706 791 V 27 w(ho)r(ok)195 -845 y Ft(If)i(non-zero,)g(this)f(is)g(the)g(address)g(of)g(a)g +555 y([V)l(ariable])-1801 b Fg(rl_hook_func_t)21 b(*)e +Ff(rl)p 549 555 V 25 w(ev)n(en)n(t)p 706 555 V 27 w(ho)r(ok)195 +610 y Ft(If)i(non-zero,)g(this)f(is)g(the)g(address)g(of)g(a)g (function)g(to)g(call)g(p)q(erio)q(dically)f(when)i(Readline)f(is)195 -900 y(w)o(aiting)13 b(for)h(terminal)f(input.)20 b(By)14 +665 y(w)o(aiting)13 b(for)h(terminal)f(input.)20 b(By)14 b(default,)g(this)g(will)g(b)q(e)h(called)f(at)g(most)g(ten)g(times)g -(a)g(second)195 955 y(if)h(there)g(is)g(no)g(k)o(eyb)q(oard)g(input.) -1685 1059 y([V)l(ariable])-1801 b Fg(rl_getc_func_t)21 -b(*)e Ff(rl)p 549 1059 V 25 w(getc)p 676 1059 V 26 w(function)195 -1114 y Ft(If)c(non-zero,)h(Readline)f(will)f(call)g(indirectly)h +(a)g(second)195 719 y(if)h(there)g(is)g(no)g(k)o(eyb)q(oard)g(input.) +1685 812 y([V)l(ariable])-1801 b Fg(rl_getc_func_t)21 +b(*)e Ff(rl)p 549 812 V 25 w(getc)p 676 812 V 26 w(function)195 +867 y Ft(If)c(non-zero,)h(Readline)f(will)f(call)g(indirectly)h (through)g(this)f(p)q(oin)o(ter)h(to)g(get)f(a)h(c)o(haracter)g(from) -195 1169 y(the)k(input)h(stream.)31 b(By)19 b(default,)g(it)g(is)g(set) -g(to)f Fs(rl_getc)p Ft(,)h(the)g(default)g(Readline)h(c)o(haracter)195 -1223 y(input)15 b(function)g(\(see)g(Section)g(2.4.8)f([Character)g -(Input],)h(page)g(35\).)1685 1328 y([V)l(ariable])-1801 -b Fg(rl_voidfunc_t)21 b(*)e Ff(rl)p 523 1328 V 25 w(redispla)n(y)p -773 1328 V 25 w(function)195 1382 y Ft(If)f(non-zero,)h(Readline)f +195 922 y(the)k(input)h(stream.)31 b(By)19 b(default,)g(it)g(is)g(set)g +(to)f Fs(rl_getc)p Ft(,)h(the)g(default)g(Readline)h(c)o(haracter)195 +977 y(input)15 b(function)g(\(see)g(Section)g(2.4.8)f([Character)g +(Input],)h(page)g(34\).)1685 1070 y([V)l(ariable])-1801 +b Fg(rl_voidfunc_t)21 b(*)e Ff(rl)p 523 1070 V 25 w(redispla)n(y)p +773 1070 V 25 w(function)195 1125 y Ft(If)f(non-zero,)h(Readline)f (will)f(call)g(indirectly)g(through)h(this)f(p)q(oin)o(ter)h(to)f(up)q -(date)i(the)f(displa)o(y)195 1437 y(with)13 b(the)g(curren)o(t)h(con)o +(date)i(the)f(displa)o(y)195 1180 y(with)13 b(the)g(curren)o(t)h(con)o (ten)o(ts)f(of)g(the)g(editing)g(bu\013er.)19 b(By)14 b(default,)f(it)g(is)g(set)g(to)g Fs(rl_redisplay)p Ft(,)195 -1492 y(the)i(default)g(Readline)h(redispla)o(y)e(function)h(\(see)g -(Section)g(2.4.6)f([Redispla)o(y],)g(page)h(33\).)1685 -1596 y([V)l(ariable])-1801 b Fg(rl_vintfunc_t)21 b(*)e -Ff(rl)p 523 1596 V 25 w(prep)p 662 1596 V 25 w(term)p -807 1596 V 25 w(function)195 1651 y Ft(If)12 b(non-zero,)h(Readline)f +1234 y(the)i(default)g(Readline)h(redispla)o(y)e(function)h(\(see)g +(Section)g(2.4.6)f([Redispla)o(y],)g(page)h(32\).)1685 +1328 y([V)l(ariable])-1801 b Fg(rl_vintfunc_t)21 b(*)e +Ff(rl)p 523 1328 V 25 w(prep)p 662 1328 V 25 w(term)p +807 1328 V 25 w(function)195 1382 y Ft(If)12 b(non-zero,)h(Readline)f (will)f(call)g(indirectly)g(through)h(this)f(p)q(oin)o(ter)h(to)f -(initialize)f(the)j(terminal.)195 1706 y(The)19 b(function)f(tak)o(es)g +(initialize)f(the)j(terminal.)195 1437 y(The)19 b(function)f(tak)o(es)g (a)g(single)g(argumen)o(t,)g(an)h Fs(int)f Ft(\015ag)g(that)g(sa)o(ys)g -(whether)g(or)h(not)f(to)g(use)195 1760 y(eigh)o(t-bit)e(c)o +(whether)g(or)h(not)f(to)g(use)195 1492 y(eigh)o(t-bit)e(c)o (haracters.)25 b(By)17 b(default,)g(this)f(is)h(set)f(to)h Fs(rl_prep_terminal)e Ft(\(see)i(Section)g(2.4.9)195 -1815 y([T)l(erminal)d(Managemen)o(t],)f(page)i(35\).)1685 -1919 y([V)l(ariable])-1801 b Fg(rl_voidfunc_t)21 b(*)e -Ff(rl)p 523 1919 V 25 w(deprep)p 720 1919 V 25 w(term)p -865 1919 V 25 w(function)195 1974 y Ft(If)g(non-zero,)g(Readline)f +1547 y([T)l(erminal)d(Managemen)o(t],)f(page)i(35\).)1685 +1640 y([V)l(ariable])-1801 b Fg(rl_voidfunc_t)21 b(*)e +Ff(rl)p 523 1640 V 25 w(deprep)p 720 1640 V 25 w(term)p +865 1640 V 25 w(function)195 1695 y Ft(If)g(non-zero,)g(Readline)f (will)f(call)h(indirectly)f(through)h(this)g(p)q(oin)o(ter)f(to)h -(reset)g(the)h(terminal.)195 2029 y(This)e(function)g(should)h(undo)g +(reset)g(the)h(terminal.)195 1749 y(This)e(function)g(should)h(undo)g (the)f(e\013ects)h(of)f Fs(rl_prep_term_function)p Ft(.)24 -b(By)17 b(default,)h(this)195 2084 y(is)d(set)g(to)f +b(By)17 b(default,)h(this)195 1804 y(is)d(set)g(to)f Fs(rl_deprep_terminal)f Ft(\(see)i(Section)g(2.4.9)f([T)l(erminal)g -(Managemen)o(t],)f(page)i(35\).)1685 2188 y([V)l(ariable])-1801 -b Fg(Keymap)20 b Ff(rl)p 295 2188 V 25 w(executing)p -558 2188 V 26 w(k)n(eymap)195 2243 y Ft(This)e(v)m(ariable)f(is)g(set)h +(Managemen)o(t],)f(page)i(35\).)1685 1897 y([V)l(ariable])-1801 +b Fg(Keymap)20 b Ff(rl)p 295 1897 V 25 w(executing)p +558 1897 V 26 w(k)n(eymap)195 1952 y Ft(This)e(v)m(ariable)f(is)g(set)h (to)g(the)g(k)o(eymap)f(\(see)h(Section)g(2.4.2)f([Keymaps],)g(page)h -(29\))f(in)h(whic)o(h)195 2297 y(the)d(curren)o(tly)g(executing)g -(readline)g(function)g(w)o(as)g(found.)1685 2401 y([V)l(ariable])-1801 -b Fg(Keymap)20 b Ff(rl)p 295 2401 V 25 w(binding)p 509 -2401 V 24 w(k)n(eymap)195 2456 y Ft(This)e(v)m(ariable)f(is)g(set)h(to) -g(the)g(k)o(eymap)f(\(see)h(Section)g(2.4.2)f([Keymaps],)g(page)h(29\)) -f(in)h(whic)o(h)195 2511 y(the)d(last)f(k)o(ey)h(binding)h(o)q -(ccurred.)1685 2615 y([V)l(ariable])-1801 b Fg(char)20 -b(*)f Ff(rl)p 288 2615 V 25 w(executing)p 551 2615 V -26 w(macro)195 2670 y Ft(This)c(v)m(ariable)f(is)h(set)g(to)g(the)g -(text)g(of)f(an)o(y)h(curren)o(tly-executing)g(macro.)p -eop end +(28\))f(in)h(whic)o(h)195 2007 y(the)d(curren)o(tly)g(executing)g +(readline)g(function)g(w)o(as)g(found.)1685 2100 y([V)l(ariable])-1801 +b Fg(Keymap)20 b Ff(rl)p 295 2100 V 25 w(binding)p 509 +2100 V 24 w(k)n(eymap)195 2155 y Ft(This)e(v)m(ariable)f(is)g(set)h(to) +g(the)g(k)o(eymap)f(\(see)h(Section)g(2.4.2)f([Keymaps],)g(page)h(28\)) +f(in)h(whic)o(h)195 2210 y(the)d(last)f(k)o(ey)h(binding)h(o)q +(ccurred.)1685 2303 y([V)l(ariable])-1801 b Fg(char)20 +b(*)f Ff(rl)p 288 2303 V 25 w(executing)p 551 2303 V +26 w(macro)195 2358 y Ft(This)c(v)m(ariable)f(is)h(set)g(to)g(the)g +(text)g(of)f(an)o(y)h(curren)o(tly-executing)g(macro.)1685 +2451 y([V)l(ariable])-1801 b Fg(int)20 b Ff(rl)p 217 +2451 V 24 w(readline)p 441 2451 V 25 w(state)195 2506 +y Ft(A)d(v)m(ariable)g(with)f(bit)h(v)m(alues)h(that)e(encapsulate)h +(the)h(curren)o(t)f(Readline)g(state.)25 b(A)18 b(bit)e(is)h(set)195 +2560 y(with)h(the)h Fs(RL_SETSTATE)f Ft(macro,)h(and)g(unset)g(with)f +(the)h Fs(RL_UNSETSTATE)e Ft(macro.)31 b(Use)19 b(the)195 +2615 y Fs(RL_ISSTATE)e Ft(macro)h(to)g(test)g(whether)h(a)f(particular) +g(state)f(bit)i(is)f(set.)30 b(Curren)o(t)18 b(state)g(bits)195 +2670 y(include:)p eop end %%Page: 27 31 TeXDict begin 27 30 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14 -b(with)g(GNU)h(Readline)842 b(27)1685 149 y([V)l(ariable])-1801 -b Fg(int)20 b Ff(rl)p 217 149 18 3 v 24 w(readline)p -441 149 V 25 w(state)195 204 y Ft(A)d(v)m(ariable)g(with)f(bit)h(v)m -(alues)h(that)e(encapsulate)h(the)h(curren)o(t)f(Readline)g(state.)25 -b(A)18 b(bit)e(is)h(set)195 259 y(with)h(the)h Fs(RL_SETSTATE)f -Ft(macro,)h(and)g(unset)g(with)f(the)h Fs(RL_UNSETSTATE)e -Ft(macro.)31 b(Use)19 b(the)195 314 y Fs(RL_ISSTATE)e -Ft(macro)h(to)g(test)g(whether)h(a)f(particular)g(state)f(bit)i(is)f -(set.)30 b(Curren)o(t)18 b(state)g(bits)195 369 y(include:)195 -452 y Fs(RL_STATE_NONE)435 507 y Ft(Readline)d(has)h(not)e(y)o(et)h(b)q -(een)h(called,)f(nor)g(has)g(it)f(b)q(egun)i(to)f(in)o(tialize.)195 -589 y Fs(RL_STATE_INITIALIZING)435 644 y Ft(Readline)g(is)g -(initializing)e(its)h(in)o(ternal)g(data)h(structures.)195 -726 y Fs(RL_STATE_INITIALIZED)435 781 y Ft(Readline)g(has)h(completed)f -(its)f(initialization.)195 863 y Fs(RL_STATE_TERMPREPPED)435 -917 y Ft(Readline)h(has)f(mo)q(di\014ed)h(the)f(terminal)f(mo)q(des)i -(to)e(do)i(its)e(o)o(wn)h(input)g(and)h(redis-)435 972 -y(pla)o(y)l(.)195 1054 y Fs(RL_STATE_READCMD)435 1109 -y Ft(Readline)g(is)g(reading)g(a)g(command)g(from)f(the)i(k)o(eyb)q -(oard.)195 1191 y Fs(RL_STATE_METANEXT)435 1246 y Ft(Readline)f(is)g +b(with)g(GNU)h(Readline)842 b(27)195 149 y Fs(RL_STATE_NONE)435 +204 y Ft(Readline)15 b(has)h(not)e(y)o(et)h(b)q(een)h(called,)f(nor)g +(has)g(it)f(b)q(egun)i(to)f(in)o(tialize.)195 277 y Fs +(RL_STATE_INITIALIZING)435 332 y Ft(Readline)g(is)g(initializing)e(its) +h(in)o(ternal)g(data)h(structures.)195 405 y Fs(RL_STATE_INITIALIZED) +435 460 y Ft(Readline)g(has)h(completed)f(its)f(initialization.)195 +533 y Fs(RL_STATE_TERMPREPPED)435 588 y Ft(Readline)h(has)f(mo)q +(di\014ed)h(the)f(terminal)f(mo)q(des)i(to)e(do)i(its)e(o)o(wn)h(input) +g(and)h(redis-)435 643 y(pla)o(y)l(.)195 716 y Fs(RL_STATE_READCMD)435 +770 y Ft(Readline)g(is)g(reading)g(a)g(command)g(from)f(the)i(k)o(eyb)q +(oard.)195 844 y Fs(RL_STATE_METANEXT)435 898 y Ft(Readline)f(is)g (reading)g(more)g(input)g(after)f(reading)h(the)g(meta-pre\014x)h(c)o -(haracter.)195 1328 y Fs(RL_STATE_DISPATCHING)435 1383 +(haracter.)195 971 y Fs(RL_STATE_DISPATCHING)435 1026 y Ft(Readline)f(is)g(dispatc)o(hing)g(to)f(a)h(command.)195 -1465 y Fs(RL_STATE_MOREINPUT)435 1520 y Ft(Readline)g(is)g(reading)g +1099 y Fs(RL_STATE_MOREINPUT)435 1154 y Ft(Readline)g(is)g(reading)g (more)g(input)g(while)g(executing)g(an)g(editing)g(command.)195 -1602 y Fs(RL_STATE_ISEARCH)435 1657 y Ft(Readline)g(is)g(p)q(erforming) -g(an)g(incremen)o(tal)f(history)g(searc)o(h.)195 1739 -y Fs(RL_STATE_NSEARCH)435 1794 y Ft(Readline)h(is)g(p)q(erforming)g(a)g -(non-incremen)o(tal)f(history)h(searc)o(h.)195 1876 y -Fs(RL_STATE_SEARCH)435 1931 y Ft(Readline)10 b(is)g(searc)o(hing)g(bac) +1227 y Fs(RL_STATE_ISEARCH)435 1282 y Ft(Readline)g(is)g(p)q(erforming) +g(an)g(incremen)o(tal)f(history)g(searc)o(h.)195 1355 +y Fs(RL_STATE_NSEARCH)435 1410 y Ft(Readline)h(is)g(p)q(erforming)g(a)g +(non-incremen)o(tal)f(history)h(searc)o(h.)195 1483 y +Fs(RL_STATE_SEARCH)435 1538 y Ft(Readline)10 b(is)g(searc)o(hing)g(bac) o(kw)o(ard)f(or)h(forw)o(ard)f(through)h(the)g(history)f(for)g(a)h -(string.)195 2013 y Fs(RL_STATE_NUMERICARG)435 2068 y +(string.)195 1611 y Fs(RL_STATE_NUMERICARG)435 1665 y Ft(Readline)15 b(is)g(reading)g(a)g(n)o(umeric)g(argumen)o(t.)195 -2150 y Fs(RL_STATE_MACROINPUT)435 2204 y Ft(Readline)d(is)g(curren)o +1738 y Fs(RL_STATE_MACROINPUT)435 1793 y Ft(Readline)d(is)g(curren)o (tly)g(getting)f(its)g(input)h(from)f(a)h(previously-de\014ned)h(k)o -(eyb)q(oard)435 2259 y(macro.)195 2341 y Fs(RL_STATE_MACRODEF)435 -2396 y Ft(Readline)i(is)g(curren)o(tly)g(reading)g(c)o(haracters)f -(de\014ning)i(a)f(k)o(eyb)q(oard)g(macro.)195 2478 y -Fs(RL_STATE_OVERWRITE)435 2533 y Ft(Readline)g(is)g(in)g(o)o(v)o -(erwrite)f(mo)q(de.)195 2615 y Fs(RL_STATE_COMPLETING)435 -2670 y Ft(Readline)h(is)g(p)q(erforming)g(w)o(ord)f(completion.)p -eop end +(eyb)q(oard)435 1848 y(macro.)195 1921 y Fs(RL_STATE_MACRODEF)435 +1976 y Ft(Readline)i(is)g(curren)o(tly)g(reading)g(c)o(haracters)f +(de\014ning)i(a)f(k)o(eyb)q(oard)g(macro.)195 2049 y +Fs(RL_STATE_OVERWRITE)435 2104 y Ft(Readline)g(is)g(in)g(o)o(v)o +(erwrite)f(mo)q(de.)195 2177 y Fs(RL_STATE_COMPLETING)435 +2232 y Ft(Readline)h(is)g(p)q(erforming)g(w)o(ord)f(completion.)195 +2305 y Fs(RL_STATE_SIGHANDLER)435 2359 y Ft(Readline)h(is)g(curren)o +(tly)g(executing)g(the)g(readline)g(signal)f(handler.)195 +2433 y Fs(RL_STATE_UNDOING)435 2487 y Ft(Readline)h(is)g(p)q(erforming) +g(an)g(undo.)195 2560 y Fs(RL_STATE_DONE)435 2615 y Ft(Readline)f(has)g +(read)g(a)f(k)o(ey)h(sequence)h(b)q(ound)g(to)e Fs(accept-line)f +Ft(and)i(is)g(ab)q(out)g(to)435 2670 y(return)h(the)g(line)g(to)g(the)g +(caller.)p eop end %%Page: 28 32 TeXDict begin 28 31 bop 75 -58 a Ft(28)1299 b(GNU)15 -b(Readline)g(Library)195 149 y Fs(RL_STATE_SIGHANDLER)435 -204 y Ft(Readline)g(is)g(curren)o(tly)g(executing)g(the)g(readline)g -(signal)f(handler.)195 297 y Fs(RL_STATE_UNDOING)435 -352 y Ft(Readline)h(is)g(p)q(erforming)g(an)g(undo.)195 -444 y Fs(RL_STATE_DONE)435 499 y Ft(Readline)f(has)g(read)g(a)f(k)o(ey) -h(sequence)h(b)q(ound)g(to)e Fs(accept-line)f Ft(and)i(is)g(ab)q(out)g -(to)435 554 y(return)h(the)g(line)g(to)g(the)g(caller.)1685 -672 y([V)l(ariable])-1801 b Fg(int)20 b Ff(rl)p 217 672 -18 3 v 24 w(explicit)p 424 672 V 26 w(arg)195 727 y Ft(Set)f(to)g(a)g -(non-zero)h(v)m(alue)g(if)e(an)i(explicit)e(n)o(umeric)i(argumen)o(t)e -(w)o(as)h(sp)q(eci\014ed)h(b)o(y)g(the)f(user.)195 782 -y(Only)c(v)m(alid)g(in)g(a)g(bindable)g(command)h(function.)1685 -900 y([V)l(ariable])-1801 b Fg(int)20 b Ff(rl)p 217 900 -V 24 w(n)n(umeric)p 442 900 V 25 w(arg)195 954 y Ft(Set)j(to)f(the)g(v) -m(alue)h(of)g(an)o(y)f(n)o(umeric)g(argumen)o(t)g(explicitly)g(sp)q -(eci\014ed)i(b)o(y)e(the)h(user)g(b)q(efore)195 1009 -y(executing)13 b(the)g(curren)o(t)g(Readline)g(function.)19 -b(Only)13 b(v)m(alid)g(in)g(a)g(bindable)g(command)f(function.)1685 -1127 y([V)l(ariable])-1801 b Fg(int)20 b Ff(rl)p 217 -1127 V 24 w(editing)p 414 1127 V 25 w(mo)r(de)195 1182 -y Ft(Set)13 b(to)f(a)g(v)m(alue)h(denoting)f(Readline's)g(curren)o(t)h -(editing)f(mo)q(de.)19 b(A)12 b(v)m(alue)h(of)f Fi(1)k -Ft(means)d(Readline)195 1237 y(is)i(curren)o(tly)f(in)h(emacs)h(mo)q +b(Readline)g(Library)1685 149 y([V)l(ariable])-1801 b +Fg(int)20 b Ff(rl)p 217 149 18 3 v 24 w(explicit)p 424 +149 V 26 w(arg)195 204 y Ft(Set)f(to)g(a)g(non-zero)h(v)m(alue)g(if)e +(an)i(explicit)e(n)o(umeric)i(argumen)o(t)e(w)o(as)h(sp)q(eci\014ed)h +(b)o(y)g(the)f(user.)195 259 y(Only)c(v)m(alid)g(in)g(a)g(bindable)g +(command)h(function.)1685 354 y([V)l(ariable])-1801 b +Fg(int)20 b Ff(rl)p 217 354 V 24 w(n)n(umeric)p 442 354 +V 25 w(arg)195 409 y Ft(Set)j(to)f(the)g(v)m(alue)h(of)g(an)o(y)f(n)o +(umeric)g(argumen)o(t)g(explicitly)g(sp)q(eci\014ed)i(b)o(y)e(the)h +(user)g(b)q(efore)195 464 y(executing)13 b(the)g(curren)o(t)g(Readline) +g(function.)19 b(Only)13 b(v)m(alid)g(in)g(a)g(bindable)g(command)f +(function.)1685 558 y([V)l(ariable])-1801 b Fg(int)20 +b Ff(rl)p 217 558 V 24 w(editing)p 414 558 V 25 w(mo)r(de)195 +613 y Ft(Set)13 b(to)f(a)g(v)m(alue)h(denoting)f(Readline's)g(curren)o +(t)h(editing)f(mo)q(de.)19 b(A)12 b(v)m(alue)h(of)f Fi(1)k +Ft(means)d(Readline)195 668 y(is)i(curren)o(tly)f(in)h(emacs)h(mo)q (de;)f Fi(0)j Ft(means)d(that)g(vi)g(mo)q(de)g(is)g(activ)o(e.)75 -1398 y Fr(2.4)33 b(Readline)21 b(Con)n(v)n(enience)h(F)-6 -b(unctions)75 1591 y Fh(2.4.1)30 b(Naming)20 b(a)g(F)-5 -b(unction)137 1726 y Ft(The)20 b(user)g(can)g(dynamically)f(c)o(hange)h +800 y Fr(2.4)33 b(Readline)21 b(Con)n(v)n(enience)h(F)-6 +b(unctions)75 970 y Fh(2.4.1)30 b(Naming)20 b(a)g(F)-5 +b(unction)137 1093 y Ft(The)20 b(user)g(can)g(dynamically)f(c)o(hange)h (the)g(bindings)g(of)f(k)o(eys)h(while)f(using)h(Readline.)34 -b(This)19 b(is)75 1780 y(done)g(b)o(y)f(represen)o(ting)g(the)h +b(This)19 b(is)75 1148 y(done)g(b)o(y)f(represen)o(ting)g(the)h (function)f(with)g(a)g(descriptiv)o(e)g(name.)29 b(The)19 -b(user)f(is)g(able)h(to)e(t)o(yp)q(e)i(the)75 1835 y(descriptiv)o(e)c +b(user)f(is)g(able)h(to)e(t)o(yp)q(e)i(the)75 1203 y(descriptiv)o(e)c (name)g(when)h(referring)e(to)h(the)g(function.)20 b(Th)o(us,)14 b(in)h(an)g(init)g(\014le,)g(one)g(migh)o(t)f(\014nd)195 -1915 y Fs(Meta-Rubout:)46 b(backward-kill-word)137 1996 -y Ft(This)20 b(binds)g(the)g(k)o(eystrok)o(e)661 1994 -y Fk(h)p 673 1968 209 2 v 673 1996 a Fj(Meta-Rub)q(out)p -673 2003 V 879 1994 a Fk(i)914 1996 y Ft(to)g(the)g(function)f -Fn(descriptively)24 b Ft(named)c Fs(backward-)75 2050 +1271 y Fs(Meta-Rubout:)46 b(backward-kill-word)137 1340 +y Ft(This)20 b(binds)g(the)g(k)o(eystrok)o(e)661 1338 +y Fk(h)p 673 1312 209 2 v 673 1340 a Fj(Meta-Rub)q(out)p +673 1348 V 879 1338 a Fk(i)914 1340 y Ft(to)g(the)g(function)f +Fn(descriptively)24 b Ft(named)c Fs(backward-)75 1395 y(kill-word)p Ft(.)29 b(Y)l(ou,)19 b(as)f(the)h(programmer,)f(should)h (bind)f(the)h(functions)g(y)o(ou)f(write)g(to)f(descriptiv)o(e)75 -2105 y(names)e(as)g(w)o(ell.)k(Readline)c(pro)o(vides)g(a)g(function)g -(for)f(doing)h(that:)1675 2223 y([F)l(unction])-1801 -b Fg(int)20 b Ff(rl)p 217 2223 18 3 v 24 w(add)p 333 -2223 V 25 w(defun)i Fe(\()p Fs(const)14 b(char)h(*name,)f -(rl_command_func_t)f(*function,)283 2278 y(int)h(key)p -Fe(\))195 2333 y Ft(Add)k Fi(name)i Ft(to)d(the)h(list)f(of)g(named)h +1449 y(names)e(as)g(w)o(ell.)k(Readline)c(pro)o(vides)g(a)g(function)g +(for)f(doing)h(that:)1675 1544 y([F)l(unction])-1801 +b Fg(int)20 b Ff(rl)p 217 1544 18 3 v 24 w(add)p 333 +1544 V 25 w(defun)i Fe(\()p Fs(const)14 b(char)h(*name,)f +(rl_command_func_t)f(*function,)283 1599 y(int)h(key)p +Fe(\))195 1654 y Ft(Add)k Fi(name)i Ft(to)d(the)h(list)f(of)g(named)h (functions.)27 b(Mak)o(e)17 b Fi(function)g Ft(b)q(e)h(the)g(function)g -(that)e(gets)195 2388 y(called.)j(If)d Fi(k)o(ey)j Ft(is)c(not)f(-1,)h +(that)e(gets)195 1709 y(called.)j(If)d Fi(k)o(ey)j Ft(is)c(not)f(-1,)h (then)h(bind)f(it)g(to)f Fi(function)h Ft(using)g Fs(rl_bind_key\(\))p -Ft(.)137 2506 y(Using)g(this)f(function)h(alone)g(is)f(su\016cien)o(t)h +Ft(.)137 1804 y(Using)g(this)f(function)h(alone)g(is)f(su\016cien)o(t)h (for)g(most)f(applications.)k(It)d(is)g(the)g(recommended)h(w)o(a)o(y) -75 2560 y(to)d(add)h(a)f(few)g(functions)g(to)g(the)h(default)f +75 1858 y(to)d(add)h(a)f(few)g(functions)g(to)g(the)h(default)f (functions)g(that)g(Readline)h(has)f(built)g(in.)19 b(If)14 -b(y)o(ou)f(need)h(to)f(do)75 2615 y(something)j(other)h(than)f(adding)h +b(y)o(ou)f(need)h(to)f(do)75 1913 y(something)j(other)h(than)f(adding)h (a)f(function)h(to)f(Readline,)h(y)o(ou)g(ma)o(y)f(need)i(to)e(use)h -(the)g(underlying)75 2670 y(functions)e(describ)q(ed)h(b)q(elo)o(w.)p -eop end +(the)g(underlying)75 1968 y(functions)e(describ)q(ed)h(b)q(elo)o(w.)75 +2083 y Fh(2.4.2)30 b(Selecting)20 b(a)h(Keymap)137 2206 +y Ft(Key)16 b(bindings)g(tak)o(e)e(place)i(on)f(a)g Fi(k)o(eymap)p +Ft(.)21 b(The)15 b(k)o(eymap)h(is)e(the)i(asso)q(ciation)e(b)q(et)o(w)o +(een)i(the)f(k)o(eys)75 2261 y(that)f(the)g(user)g(t)o(yp)q(es)g(and)h +(the)f(functions)g(that)g(get)g(run.)19 b(Y)l(ou)c(can)f(mak)o(e)g(y)o +(our)g(o)o(wn)f(k)o(eymaps,)h(cop)o(y)75 2316 y(existing)g(k)o(eymaps,) +h(and)g(tell)f(Readline)i(whic)o(h)f(k)o(eymap)g(to)f(use.)1675 +2411 y([F)l(unction])-1801 b Fg(Keymap)20 b Ff(rl)p 295 +2411 V 25 w(mak)n(e)p 450 2411 V 25 w(bare)p 585 2411 +V 25 w(k)n(eymap)j Fe(\()p Fs(void)p Fe(\))195 2466 y +Ft(Returns)13 b(a)e(new,)i(empt)o(y)f(k)o(eymap.)18 b(The)13 +b(space)f(for)f(the)i(k)o(eymap)e(is)h(allo)q(cated)f(with)g +Fs(malloc\(\))p Ft(;)195 2520 y(the)k(caller)g(should)g(free)g(it)g(b)o +(y)g(calling)f Fs(rl_discard_keymap\(\))e Ft(when)k(done.)1675 +2615 y([F)l(unction])-1801 b Fg(Keymap)20 b Ff(rl)p 295 +2615 V 25 w(cop)n(y)p 434 2615 V 25 w(k)n(eymap)k Fe(\()p +Fs(Keymap)14 b(map)p Fe(\))195 2670 y Ft(Return)i(a)f(new)g(k)o(eymap)g +(whic)o(h)g(is)g(a)g(cop)o(y)g(of)g Fi(map)p Ft(.)p eop +end %%Page: 29 33 TeXDict begin 29 32 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14 -b(with)g(GNU)h(Readline)842 b(29)75 149 y Fh(2.4.2)30 -b(Selecting)20 b(a)h(Keymap)137 270 y Ft(Key)16 b(bindings)g(tak)o(e)e -(place)i(on)f(a)g Fi(k)o(eymap)p Ft(.)21 b(The)15 b(k)o(eymap)h(is)e -(the)i(asso)q(ciation)e(b)q(et)o(w)o(een)i(the)f(k)o(eys)75 -325 y(that)f(the)g(user)g(t)o(yp)q(es)g(and)h(the)f(functions)g(that)g -(get)g(run.)19 b(Y)l(ou)c(can)f(mak)o(e)g(y)o(our)g(o)o(wn)f(k)o -(eymaps,)h(cop)o(y)75 379 y(existing)g(k)o(eymaps,)h(and)g(tell)f -(Readline)i(whic)o(h)f(k)o(eymap)g(to)f(use.)1675 466 -y([F)l(unction])-1801 b Fg(Keymap)20 b Ff(rl)p 295 466 -18 3 v 25 w(mak)n(e)p 450 466 V 25 w(bare)p 585 466 V -25 w(k)n(eymap)j Fe(\()p Fs(void)p Fe(\))195 521 y Ft(Returns)13 -b(a)e(new,)i(empt)o(y)f(k)o(eymap.)18 b(The)13 b(space)f(for)f(the)i(k) -o(eymap)e(is)h(allo)q(cated)f(with)g Fs(malloc\(\))p -Ft(;)195 576 y(the)k(caller)g(should)g(free)g(it)g(b)o(y)g(calling)f -Fs(rl_discard_keymap\(\))e Ft(when)k(done.)1675 663 y([F)l(unction]) --1801 b Fg(Keymap)20 b Ff(rl)p 295 663 V 25 w(cop)n(y)p -434 663 V 25 w(k)n(eymap)k Fe(\()p Fs(Keymap)14 b(map)p -Fe(\))195 717 y Ft(Return)i(a)f(new)g(k)o(eymap)g(whic)o(h)g(is)g(a)g -(cop)o(y)g(of)g Fi(map)p Ft(.)1675 804 y([F)l(unction])-1801 -b Fg(Keymap)20 b Ff(rl)p 295 804 V 25 w(mak)n(e)p 450 -804 V 25 w(k)n(eymap)k Fe(\()p Fs(void)p Fe(\))195 859 -y Ft(Return)16 b(a)g(new)g(k)o(eymap)f(with)g(the)h(prin)o(ting)f(c)o -(haracters)f(b)q(ound)j(to)e(rl)p 1455 859 14 2 v 20 -w(insert,)f(the)i(lo)o(w)o(ercase)195 914 y(Meta)11 b(c)o(haracters)f -(b)q(ound)i(to)f(run)h(their)e(equiv)m(alen)o(ts,)i(and)f(the)h(Meta)e -(digits)g(b)q(ound)i(to)f(pro)q(duce)195 969 y(n)o(umeric)k(argumen)o -(ts.)1675 1056 y([F)l(unction])-1801 b Fg(void)20 b Ff(rl)p -243 1056 18 3 v 24 w(discard)p 447 1056 V 25 w(k)n(eymap)j -Fe(\()p Fs(Keymap)14 b(keymap)p Fe(\))195 1110 y Ft(F)l(ree)h(the)h -(storage)d(asso)q(ciated)i(with)f Fi(k)o(eymap)p Ft(.)137 -1197 y(Readline)23 b(has)g(sev)o(eral)f(in)o(ternal)f(k)o(eymaps.)42 -b(These)23 b(functions)f(allo)o(w)f(y)o(ou)h(to)g(c)o(hange)h(whic)o(h) -75 1252 y(k)o(eymap)15 b(is)g(activ)o(e.)1675 1339 y([F)l(unction]) --1801 b Fg(Keymap)20 b Ff(rl)p 295 1339 V 25 w(get)p -397 1339 V 25 w(k)n(eymap)j Fe(\()p Fs(void)p Fe(\))195 -1394 y Ft(Returns)16 b(the)f(curren)o(tly)g(activ)o(e)f(k)o(eymap.)1675 -1481 y([F)l(unction])-1801 b Fg(void)20 b Ff(rl)p 243 -1481 V 24 w(set)p 338 1481 V 26 w(k)n(eymap)j Fe(\()p -Fs(Keymap)14 b(keymap)p Fe(\))195 1535 y Ft(Mak)o(es)g +b(with)g(GNU)h(Readline)842 b(29)1675 149 y([F)l(unction])-1801 +b Fg(Keymap)20 b Ff(rl)p 295 149 18 3 v 25 w(mak)n(e)p +450 149 V 25 w(k)n(eymap)k Fe(\()p Fs(void)p Fe(\))195 +204 y Ft(Return)16 b(a)g(new)g(k)o(eymap)f(with)g(the)h(prin)o(ting)f +(c)o(haracters)f(b)q(ound)j(to)e(rl)p 1455 204 14 2 v +20 w(insert,)f(the)i(lo)o(w)o(ercase)195 259 y(Meta)11 +b(c)o(haracters)f(b)q(ound)i(to)f(run)h(their)e(equiv)m(alen)o(ts,)i +(and)f(the)h(Meta)e(digits)g(b)q(ound)i(to)f(pro)q(duce)195 +314 y(n)o(umeric)k(argumen)o(ts.)1675 402 y([F)l(unction])-1801 +b Fg(void)20 b Ff(rl)p 243 402 18 3 v 24 w(discard)p +447 402 V 25 w(k)n(eymap)j Fe(\()p Fs(Keymap)14 b(keymap)p +Fe(\))195 456 y Ft(F)l(ree)h(the)h(storage)d(asso)q(ciated)i(with)f +Fi(k)o(eymap)p Ft(.)137 544 y(Readline)23 b(has)g(sev)o(eral)f(in)o +(ternal)f(k)o(eymaps.)42 b(These)23 b(functions)f(allo)o(w)f(y)o(ou)h +(to)g(c)o(hange)h(whic)o(h)75 599 y(k)o(eymap)15 b(is)g(activ)o(e.)1675 +687 y([F)l(unction])-1801 b Fg(Keymap)20 b Ff(rl)p 295 +687 V 25 w(get)p 397 687 V 25 w(k)n(eymap)j Fe(\()p Fs(void)p +Fe(\))195 742 y Ft(Returns)16 b(the)f(curren)o(tly)g(activ)o(e)f(k)o +(eymap.)1675 830 y([F)l(unction])-1801 b Fg(void)20 b +Ff(rl)p 243 830 V 24 w(set)p 338 830 V 26 w(k)n(eymap)j +Fe(\()p Fs(Keymap)14 b(keymap)p Fe(\))195 884 y Ft(Mak)o(es)g Fi(k)o(eymap)j Ft(the)e(curren)o(tly)g(activ)o(e)f(k)o(eymap.)1675 -1622 y([F)l(unction])-1801 b Fg(Keymap)20 b Ff(rl)p 295 -1622 V 25 w(get)p 397 1622 V 25 w(k)n(eymap)p 614 1622 -V 26 w(b)n(y)p 700 1622 V 26 w(name)i Fe(\()p Fs(const)14 -b(char)h(*name)p Fe(\))195 1677 y Ft(Return)i(the)g(k)o(eymap)f(matc)o +972 y([F)l(unction])-1801 b Fg(Keymap)20 b Ff(rl)p 295 +972 V 25 w(get)p 397 972 V 25 w(k)n(eymap)p 614 972 V +26 w(b)n(y)p 700 972 V 26 w(name)i Fe(\()p Fs(const)14 +b(char)h(*name)p Fe(\))195 1027 y Ft(Return)i(the)g(k)o(eymap)f(matc)o (hing)g Fi(name)p Ft(.)24 b Fi(name)19 b Ft(is)d(one)h(whic)o(h)f(w)o -(ould)g(b)q(e)i(supplied)f(in)f(a)g Fs(set)195 1732 y(keymap)e +(ould)g(b)q(e)i(supplied)f(in)f(a)g Fs(set)195 1082 y(keymap)e Ft(inputrc)i(line)e(\(see)i(Section)f(1.3)f([Readline)h(Init)g(File],)f -(page)h(4\).)1675 1819 y([F)l(unction])-1801 b Fg(char)20 -b(*)f Ff(rl)p 288 1819 V 25 w(get)p 390 1819 V 25 w(k)n(eymap)p -607 1819 V 26 w(name)j Fe(\()p Fs(Keymap)14 b(keymap)p -Fe(\))195 1874 y Ft(Return)j(the)g(name)g(matc)o(hing)e +(page)h(4\).)1675 1170 y([F)l(unction])-1801 b Fg(char)20 +b(*)f Ff(rl)p 288 1170 V 25 w(get)p 390 1170 V 25 w(k)n(eymap)p +607 1170 V 26 w(name)j Fe(\()p Fs(Keymap)14 b(keymap)p +Fe(\))195 1224 y Ft(Return)j(the)g(name)g(matc)o(hing)e Fi(k)o(eymap)p Ft(.)24 b Fi(name)19 b Ft(is)d(one)h(whic)o(h)f(w)o -(ould)g(b)q(e)i(supplied)f(in)f(a)g Fs(set)195 1928 y(keymap)e +(ould)g(b)q(e)i(supplied)f(in)f(a)g Fs(set)195 1279 y(keymap)e Ft(inputrc)i(line)e(\(see)i(Section)f(1.3)f([Readline)h(Init)g(File],)f -(page)h(4\).)75 2035 y Fh(2.4.3)30 b(Binding)20 b(Keys)137 -2155 y Ft(Key)13 b(sequences)g(are)e(asso)q(ciate)g(with)h(functions)f +(page)h(4\).)75 1387 y Fh(2.4.3)30 b(Binding)20 b(Keys)137 +1508 y Ft(Key)13 b(sequences)g(are)e(asso)q(ciate)g(with)h(functions)f (through)h(the)g(k)o(eymap.)19 b(Readline)12 b(has)g(sev)o(eral)f(in-) -75 2210 y(ternal)j(k)o(eymaps:)19 b Fs(emacs_standard_keymap)p +75 1562 y(ternal)j(k)o(eymaps:)19 b Fs(emacs_standard_keymap)p Ft(,)11 b Fs(emacs_meta_keymap)p Ft(,)h Fs(emacs_ctlx_keymap)p -Ft(,)g Fs(vi_)75 2265 y(movement_keymap)p Ft(,)20 b(and)i +Ft(,)g Fs(vi_)75 1617 y(movement_keymap)p Ft(,)20 b(and)i Fs(vi_insertion_keymap)p Ft(.)35 b Fs(emacs_standard_keymap)18 -b Ft(is)j(the)g(default,)75 2320 y(and)15 b(the)h(examples)f(in)g(this) -f(man)o(ual)h(assume)g(that.)137 2385 y(Since)g Fs(readline\(\))d +b Ft(is)j(the)g(default,)75 1672 y(and)15 b(the)h(examples)f(in)g(this) +f(man)o(ual)h(assume)g(that.)137 1738 y(Since)g Fs(readline\(\))d Ft(installs)g(a)i(set)f(of)h(default)f(k)o(ey)h(bindings)f(the)h -(\014rst)g(time)f(it)g(is)g(called,)h(there)f(is)75 2440 +(\014rst)g(time)f(it)g(is)g(called,)h(there)f(is)75 1793 y(alw)o(a)o(ys)i(the)h(danger)g(that)g(a)g(custom)g(binding)g (installed)f(b)q(efore)i(the)f(\014rst)g(call)g(to)f -Fs(readline\(\))g Ft(will)75 2495 y(b)q(e)f(o)o(v)o(erridden.)k(An)13 +Fs(readline\(\))g Ft(will)75 1847 y(b)q(e)f(o)o(v)o(erridden.)k(An)13 b(alternate)f(mec)o(hanism)h(is)f(to)g(install)f(custom)i(k)o(ey)g -(bindings)f(in)h(an)g(initialization)75 2550 y(function)18 +(bindings)f(in)h(an)g(initialization)75 1902 y(function)18 b(assigned)h(to)e(the)i Fs(rl_startup_hook)e Ft(v)m(ariable)h(\(see)g -(Section)g(2.3)g([Readline)h(V)l(ariables],)75 2604 y(page)c(24\).)137 -2670 y(These)h(functions)f(manage)f(k)o(ey)i(bindings.)p -eop end +(Section)g(2.3)g([Readline)h(V)l(ariables],)75 1957 y(page)c(24\).)137 +2023 y(These)h(functions)f(manage)f(k)o(ey)i(bindings.)1675 +2111 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p 217 +2111 V 24 w(bind)p 353 2111 V 25 w(k)n(ey)k Fe(\()p Fs(int)14 +b(key,)h(rl_command_func_t)e(*function)p Fe(\))195 2166 +y Ft(Binds)k Fi(k)o(ey)j Ft(to)c Fi(function)g Ft(in)h(the)f(curren)o +(tly)g(activ)o(e)g(k)o(eymap.)23 b(Returns)17 b(non-zero)g(in)f(the)h +(case)195 2220 y(of)e(an)g(in)o(v)m(alid)f Fi(k)o(ey)p +Ft(.)1675 2308 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p +217 2308 V 24 w(bind)p 353 2308 V 25 w(k)n(ey)p 462 2308 +V 26 w(in)p 536 2308 V 25 w(map)i Fe(\()p Fs(int)15 b(key,)f +(rl_command_func_t)f(*function,)283 2363 y(Keymap)h(map)p +Fe(\))195 2418 y Ft(Bind)h Fi(k)o(ey)k Ft(to)c Fi(function)g +Ft(in)g Fi(map)p Ft(.)20 b(Returns)15 b(non-zero)h(in)f(the)g(case)g +(of)g(an)g(in)o(v)m(alid)g Fi(k)o(ey)p Ft(.)1675 2506 +y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p 217 2506 +V 24 w(bind)p 353 2506 V 25 w(k)n(ey)p 462 2506 V 26 +w(if)p 522 2506 V 25 w(un)n(b)r(ound)h Fe(\()p Fs(int)15 +b(key,)f(rl_command_func_t)283 2560 y(*function)p Fe(\))195 +2615 y Ft(Binds)22 b Fi(k)o(ey)k Ft(to)21 b Fi(function)h +Ft(if)g(it)f(is)g(not)h(already)f(b)q(ound)i(in)f(the)g(curren)o(tly)f +(activ)o(e)h(k)o(eymap.)195 2670 y(Returns)16 b(non-zero)f(in)g(the)h +(case)f(of)f(an)i(in)o(v)m(alid)e Fi(k)o(ey)19 b Ft(or)c(if)f +Fi(k)o(ey)19 b Ft(is)c(already)g(b)q(ound.)p eop end %%Page: 30 34 TeXDict begin 30 33 bop 75 -58 a Ft(30)1299 b(GNU)15 b(Readline)g(Library)1675 149 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p 217 149 18 3 v 24 w(bind)p 353 149 -V 25 w(k)n(ey)k Fe(\()p Fs(int)14 b(key,)h(rl_command_func_t)e -(*function)p Fe(\))195 204 y Ft(Binds)k Fi(k)o(ey)j Ft(to)c -Fi(function)g Ft(in)h(the)f(curren)o(tly)g(activ)o(e)g(k)o(eymap.)23 -b(Returns)17 b(non-zero)g(in)f(the)h(case)195 259 y(of)e(an)g(in)o(v)m -(alid)f Fi(k)o(ey)p Ft(.)1675 363 y([F)l(unction])-1801 -b Fg(int)20 b Ff(rl)p 217 363 V 24 w(bind)p 353 363 V -25 w(k)n(ey)p 462 363 V 26 w(in)p 536 363 V 25 w(map)i -Fe(\()p Fs(int)15 b(key,)f(rl_command_func_t)f(*function,)283 -418 y(Keymap)h(map)p Fe(\))195 473 y Ft(Bind)h Fi(k)o(ey)k -Ft(to)c Fi(function)g Ft(in)g Fi(map)p Ft(.)20 b(Returns)15 -b(non-zero)h(in)f(the)g(case)g(of)g(an)g(in)o(v)m(alid)g -Fi(k)o(ey)p Ft(.)1675 577 y([F)l(unction])-1801 b Fg(int)20 -b Ff(rl)p 217 577 V 24 w(bind)p 353 577 V 25 w(k)n(ey)p -462 577 V 26 w(if)p 522 577 V 25 w(un)n(b)r(ound)h Fe(\()p -Fs(int)15 b(key,)f(rl_command_func_t)283 632 y(*function)p -Fe(\))195 686 y Ft(Binds)22 b Fi(k)o(ey)k Ft(to)21 b -Fi(function)h Ft(if)g(it)f(is)g(not)h(already)f(b)q(ound)i(in)f(the)g -(curren)o(tly)f(activ)o(e)h(k)o(eymap.)195 741 y(Returns)16 -b(non-zero)f(in)g(the)h(case)f(of)f(an)i(in)o(v)m(alid)e -Fi(k)o(ey)19 b Ft(or)c(if)f Fi(k)o(ey)19 b Ft(is)c(already)g(b)q(ound.) -1675 845 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p -217 845 V 24 w(bind)p 353 845 V 25 w(k)n(ey)p 462 845 -V 26 w(if)p 522 845 V 25 w(un)n(b)r(ound)p 768 845 V -24 w(in)p 840 845 V 25 w(map)i Fe(\()p Fs(int)14 b(key,)283 -900 y(rl_command_func_t)e(*function,)i(Keymap)h(map)p -Fe(\))195 955 y Ft(Binds)f Fi(k)o(ey)j Ft(to)c Fi(function)h +V 25 w(k)n(ey)p 462 149 V 26 w(if)p 522 149 V 25 w(un)n(b)r(ound)p +768 149 V 24 w(in)p 840 149 V 25 w(map)i Fe(\()p Fs(int)14 +b(key,)283 204 y(rl_command_func_t)e(*function,)i(Keymap)h(map)p +Fe(\))195 259 y Ft(Binds)f Fi(k)o(ey)j Ft(to)c Fi(function)h Ft(if)f(it)g(is)g(not)g(already)g(b)q(ound)i(in)e Fi(map)p Ft(.)20 b(Returns)14 b(non-zero)g(in)f(the)h(case)195 -1010 y(of)h(an)g(in)o(v)m(alid)f Fi(k)o(ey)19 b Ft(or)c(if)g -Fi(k)o(ey)k Ft(is)14 b(already)h(b)q(ound.)1675 1114 -y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p 217 1114 -V 24 w(un)n(bind)p 415 1114 V 25 w(k)n(ey)k Fe(\()p Fs(int)14 -b(key)p Fe(\))195 1169 y Ft(Bind)k Fi(k)o(ey)k Ft(to)c(the)g(n)o(ull)g -(function)g(in)g(the)g(curren)o(tly)f(activ)o(e)h(k)o(eymap.)28 -b(Returns)19 b(non-zero)f(in)195 1223 y(case)d(of)g(error.)1675 -1328 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p 217 -1328 V 24 w(un)n(bind)p 415 1328 V 25 w(k)n(ey)p 524 -1328 V 26 w(in)p 598 1328 V 25 w(map)i Fe(\()p Fs(int)15 -b(key,)f(Keymap)h(map)p Fe(\))195 1382 y Ft(Bind)g Fi(k)o(ey)k -Ft(to)c(the)g(n)o(ull)g(function)g(in)g Fi(map)p Ft(.)20 -b(Returns)15 b(non-zero)h(in)f(case)g(of)g(error.)1675 -1486 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p 217 -1486 V 24 w(un)n(bind)p 415 1486 V 25 w(function)p 646 -1486 V 24 w(in)p 718 1486 V 25 w(map)i Fe(\()p Fs(rl_command_func_t)13 -b(*function,)283 1541 y(Keymap)h(map)p Fe(\))195 1596 +314 y(of)h(an)g(in)o(v)m(alid)f Fi(k)o(ey)19 b Ft(or)c(if)g +Fi(k)o(ey)k Ft(is)14 b(already)h(b)q(ound.)1675 396 y([F)l(unction]) +-1801 b Fg(int)20 b Ff(rl)p 217 396 V 24 w(un)n(bind)p +415 396 V 25 w(k)n(ey)k Fe(\()p Fs(int)14 b(key)p Fe(\))195 +451 y Ft(Bind)k Fi(k)o(ey)k Ft(to)c(the)g(n)o(ull)g(function)g(in)g +(the)g(curren)o(tly)f(activ)o(e)h(k)o(eymap.)28 b(Returns)19 +b(non-zero)f(in)195 506 y(case)d(of)g(error.)1675 588 +y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p 217 588 V +24 w(un)n(bind)p 415 588 V 25 w(k)n(ey)p 524 588 V 26 +w(in)p 598 588 V 25 w(map)i Fe(\()p Fs(int)15 b(key,)f(Keymap)h(map)p +Fe(\))195 643 y Ft(Bind)g Fi(k)o(ey)k Ft(to)c(the)g(n)o(ull)g(function) +g(in)g Fi(map)p Ft(.)20 b(Returns)15 b(non-zero)h(in)f(case)g(of)g +(error.)1675 725 y([F)l(unction])-1801 b Fg(int)20 b +Ff(rl)p 217 725 V 24 w(un)n(bind)p 415 725 V 25 w(function)p +646 725 V 24 w(in)p 718 725 V 25 w(map)i Fe(\()p Fs(rl_command_func_t) +13 b(*function,)283 780 y(Keymap)h(map)p Fe(\))195 834 y Ft(Un)o(bind)i(all)e(k)o(eys)h(that)f(execute)i Fi(function)f -Ft(in)g Fi(map)p Ft(.)1675 1700 y([F)l(unction])-1801 -b Fg(int)20 b Ff(rl)p 217 1700 V 24 w(un)n(bind)p 415 -1700 V 25 w(command)p 682 1700 V 24 w(in)p 754 1700 V -25 w(map)i Fe(\()p Fs(const)14 b(char)h(*command,)f(Keymap)283 -1755 y(map)p Fe(\))195 1810 y Ft(Un)o(bind)i(all)e(k)o(eys)h(that)f -(are)h(b)q(ound)h(to)f Fi(command)i Ft(in)e Fi(map)p -Ft(.)1675 1914 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p -217 1914 V 24 w(bind)p 353 1914 V 25 w(k)n(eyseq)k Fe(\()p +Ft(in)g Fi(map)p Ft(.)1675 917 y([F)l(unction])-1801 +b Fg(int)20 b Ff(rl)p 217 917 V 24 w(un)n(bind)p 415 +917 V 25 w(command)p 682 917 V 24 w(in)p 754 917 V 25 +w(map)i Fe(\()p Fs(const)14 b(char)h(*command,)f(Keymap)283 +971 y(map)p Fe(\))195 1026 y Ft(Un)o(bind)i(all)e(k)o(eys)h(that)f(are) +h(b)q(ound)h(to)f Fi(command)i Ft(in)e Fi(map)p Ft(.)1675 +1108 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p 217 +1108 V 24 w(bind)p 353 1108 V 25 w(k)n(eyseq)k Fe(\()p Fs(const)14 b(char)h(*keyseq,)f(rl_command_func_t)283 -1969 y(*function)p Fe(\))195 2023 y Ft(Bind)22 b(the)f(k)o(ey)h +1163 y(*function)p Fe(\))195 1218 y Ft(Bind)22 b(the)f(k)o(ey)h (sequence)h(represen)o(ted)f(b)o(y)f(the)h(string)e Fi(k)o(eyseq)j -Ft(to)e(the)g(function)g Fi(function)p Ft(,)195 2078 +Ft(to)e(the)g(function)g Fi(function)p Ft(,)195 1273 y(b)q(eginning)14 b(in)g(the)g(curren)o(t)g(k)o(eymap.)20 b(This)13 b(mak)o(es)h(new)g(k)o(eymaps)g(as)g(necessary)l(.)20 -b(The)14 b(return)195 2133 y(v)m(alue)h(is)g(non-zero)h(if)e -Fi(k)o(eyseq)j Ft(is)d(in)o(v)m(alid.)1675 2237 y([F)l(unction])-1801 -b Fg(int)20 b Ff(rl)p 217 2237 V 24 w(bind)p 353 2237 -V 25 w(k)n(eyseq)p 541 2237 V 26 w(in)p 615 2237 V 25 -w(map)i Fe(\()p Fs(const)15 b(char)f(*keyseq,)283 2292 +b(The)14 b(return)195 1328 y(v)m(alue)h(is)g(non-zero)h(if)e +Fi(k)o(eyseq)j Ft(is)d(in)o(v)m(alid.)1675 1410 y([F)l(unction])-1801 +b Fg(int)20 b Ff(rl)p 217 1410 V 24 w(bind)p 353 1410 +V 25 w(k)n(eyseq)p 541 1410 V 26 w(in)p 615 1410 V 25 +w(map)i Fe(\()p Fs(const)15 b(char)f(*keyseq,)283 1465 y(rl_command_func_t)e(*function,)i(Keymap)h(map)p Fe(\))195 -2347 y Ft(Bind)e(the)f(k)o(ey)h(sequence)h(represen)o(ted)f(b)o(y)f +1519 y Ft(Bind)e(the)f(k)o(ey)h(sequence)h(represen)o(ted)f(b)o(y)f (the)h(string)e Fi(k)o(eyseq)j Ft(to)e(the)g(function)h -Fi(function)p Ft(.)18 b(This)195 2401 y(mak)o(es)c(new)h(k)o(eymaps)f +Fi(function)p Ft(.)18 b(This)195 1574 y(mak)o(es)c(new)h(k)o(eymaps)f (as)g(necessary)l(.)20 b(Initial)14 b(bindings)g(are)h(p)q(erformed)f -(in)h Fi(map)p Ft(.)k(The)c(return)195 2456 y(v)m(alue)g(is)g(non-zero) -h(if)e Fi(k)o(eyseq)j Ft(is)d(in)o(v)m(alid.)1675 2560 -y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p 217 2560 -V 24 w(set)p 312 2560 V 26 w(k)n(ey)j Fe(\()p Fs(const)15 +(in)h Fi(map)p Ft(.)k(The)c(return)195 1629 y(v)m(alue)g(is)g(non-zero) +h(if)e Fi(k)o(eyseq)j Ft(is)d(in)o(v)m(alid.)1675 1711 +y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p 217 1711 +V 24 w(set)p 312 1711 V 26 w(k)n(ey)j Fe(\()p Fs(const)15 b(char)f(*keyseq,)g(rl_command_func_t)f(*function,)283 -2615 y(Keymap)h(map)p Fe(\))195 2670 y Ft(Equiv)m(alen)o(t)h(to)f -Fs(rl_bind_keyseq_in_map)p Ft(.)p eop end +1766 y(Keymap)h(map)p Fe(\))195 1821 y Ft(Equiv)m(alen)o(t)h(to)f +Fs(rl_bind_keyseq_in_map)p Ft(.)1675 1903 y([F)l(unction])-1801 +b Fg(int)20 b Ff(rl)p 217 1903 V 24 w(bind)p 353 1903 +V 25 w(k)n(eyseq)p 541 1903 V 26 w(if)p 601 1903 V 25 +w(un)n(b)r(ound)h Fe(\()p Fs(const)14 b(char)h(*keyseq,)283 +1958 y(rl_command_func_t)d(*function)p Fe(\))195 2012 +y Ft(Binds)18 b Fi(k)o(eyseq)h Ft(to)e Fi(function)g +Ft(if)h(it)f(is)g(not)g(already)g(b)q(ound)i(in)f(the)f(curren)o(tly)h +(activ)o(e)f(k)o(eymap.)195 2067 y(Returns)f(non-zero)f(in)g(the)h +(case)f(of)f(an)i(in)o(v)m(alid)e Fi(k)o(eyseq)i Ft(or)f(if)g +Fi(k)o(eyseq)h Ft(is)f(already)f(b)q(ound.)1675 2149 +y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p 217 2149 +V 24 w(bind)p 353 2149 V 25 w(k)n(eyseq)p 541 2149 V +26 w(if)p 601 2149 V 25 w(un)n(b)r(ound)p 847 2149 V +24 w(in)p 919 2149 V 25 w(map)i Fe(\()p Fs(const)14 b(char)h(*keyseq,) +283 2204 y(rl_command_func_t)d(*function,)i(Keymap)h(map)p +Fe(\))195 2259 y Ft(Binds)h Fi(k)o(eyseq)h Ft(to)f Fi(function)f +Ft(if)h(it)f(is)h(not)f(already)g(b)q(ound)i(in)f Fi(map)p +Ft(.)22 b(Returns)17 b(non-zero)f(in)g(the)195 2314 y(case)f(of)g(an)g +(in)o(v)m(alid)g Fi(k)o(eyseq)h Ft(or)f(if)f Fi(k)o(eyseq)i +Ft(is)f(already)g(b)q(ound.)1675 2396 y([F)l(unction])-1801 +b Fg(int)20 b Ff(rl)p 217 2396 V 24 w(generic)p 419 2396 +V 25 w(bind)j Fe(\()p Fs(int)14 b(type,)g(const)h(char)f(*keyseq,)h +(char)f(*data,)283 2451 y(Keymap)g(map)p Fe(\))195 2506 +y Ft(Bind)g(the)f(k)o(ey)h(sequence)h(represen)o(ted)e(b)o(y)h(the)g +(string)e Fi(k)o(eyseq)j Ft(to)d(the)i(arbitrary)e(p)q(oin)o(ter)h +Fi(data)p Ft(.)195 2560 y Fi(t)o(yp)q(e)k Ft(sa)o(ys)c(what)h(kind)g +(of)g(data)g(is)f(p)q(oin)o(ted)i(to)e(b)o(y)h Fi(data)p +Ft(;)g(this)g(can)g(b)q(e)h(a)f(function)g(\()p Fs(ISFUNC)p +Ft(\),)e(a)195 2615 y(macro)i(\()p Fs(ISMACR)p Ft(\),)f(or)h(a)h(k)o +(eymap)f(\()p Fs(ISKMAP)p Ft(\).)k(This)d(mak)o(es)f(new)h(k)o(eymaps)f +(as)h(necessary)l(.)20 b(The)195 2670 y(initial)13 b(k)o(eymap)i(in)g +(whic)o(h)g(to)g(do)g(bindings)g(is)g Fi(map)p Ft(.)p +eop end %%Page: 31 35 TeXDict begin 31 34 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14 b(with)g(GNU)h(Readline)842 b(31)1675 149 y([F)l(unction])-1801 -b Fg(int)20 b Ff(rl)p 217 149 18 3 v 24 w(bind)p 353 -149 V 25 w(k)n(eyseq)p 541 149 V 26 w(if)p 601 149 V -25 w(un)n(b)r(ound)h Fe(\()p Fs(const)14 b(char)h(*keyseq,)283 -204 y(rl_command_func_t)d(*function)p Fe(\))195 259 y -Ft(Binds)18 b Fi(k)o(eyseq)h Ft(to)e Fi(function)g Ft(if)h(it)f(is)g -(not)g(already)g(b)q(ound)i(in)f(the)f(curren)o(tly)h(activ)o(e)f(k)o -(eymap.)195 314 y(Returns)f(non-zero)f(in)g(the)h(case)f(of)f(an)i(in)o -(v)m(alid)e Fi(k)o(eyseq)i Ft(or)f(if)g Fi(k)o(eyseq)h -Ft(is)f(already)f(b)q(ound.)1675 413 y([F)l(unction])-1801 -b Fg(int)20 b Ff(rl)p 217 413 V 24 w(bind)p 353 413 V -25 w(k)n(eyseq)p 541 413 V 26 w(if)p 601 413 V 25 w(un)n(b)r(ound)p -847 413 V 24 w(in)p 919 413 V 25 w(map)i Fe(\()p Fs(const)14 -b(char)h(*keyseq,)283 468 y(rl_command_func_t)d(*function,)i(Keymap)h -(map)p Fe(\))195 523 y Ft(Binds)h Fi(k)o(eyseq)h Ft(to)f -Fi(function)f Ft(if)h(it)f(is)h(not)f(already)g(b)q(ound)i(in)f -Fi(map)p Ft(.)22 b(Returns)17 b(non-zero)f(in)g(the)195 -578 y(case)f(of)g(an)g(in)o(v)m(alid)g Fi(k)o(eyseq)h -Ft(or)f(if)f Fi(k)o(eyseq)i Ft(is)f(already)g(b)q(ound.)1675 -677 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p 217 677 -V 24 w(generic)p 419 677 V 25 w(bind)j Fe(\()p Fs(int)14 -b(type,)g(const)h(char)f(*keyseq,)h(char)f(*data,)283 -732 y(Keymap)g(map)p Fe(\))195 787 y Ft(Bind)g(the)f(k)o(ey)h(sequence) -h(represen)o(ted)e(b)o(y)h(the)g(string)e Fi(k)o(eyseq)j -Ft(to)d(the)i(arbitrary)e(p)q(oin)o(ter)h Fi(data)p Ft(.)195 -842 y Fi(t)o(yp)q(e)k Ft(sa)o(ys)c(what)h(kind)g(of)g(data)g(is)f(p)q -(oin)o(ted)i(to)e(b)o(y)h Fi(data)p Ft(;)g(this)g(can)g(b)q(e)h(a)f -(function)g(\()p Fs(ISFUNC)p Ft(\),)e(a)195 896 y(macro)i(\()p -Fs(ISMACR)p Ft(\),)f(or)h(a)h(k)o(eymap)f(\()p Fs(ISKMAP)p -Ft(\).)k(This)d(mak)o(es)f(new)h(k)o(eymaps)f(as)h(necessary)l(.)20 -b(The)195 951 y(initial)13 b(k)o(eymap)i(in)g(whic)o(h)g(to)g(do)g -(bindings)g(is)g Fi(map)p Ft(.)1675 1051 y([F)l(unction])-1801 -b Fg(int)20 b Ff(rl)p 217 1051 V 24 w(parse)p 374 1051 -V 25 w(and)p 491 1051 V 24 w(bind)i Fe(\()p Fs(char)15 -b(*line)p Fe(\))195 1105 y Ft(P)o(arse)f Fi(line)j Ft(as)d(if)g(it)g +b Fg(int)20 b Ff(rl)p 217 149 18 3 v 24 w(parse)p 374 +149 V 25 w(and)p 491 149 V 24 w(bind)i Fe(\()p Fs(char)15 +b(*line)p Fe(\))195 204 y Ft(P)o(arse)f Fi(line)j Ft(as)d(if)g(it)g (had)h(b)q(een)h(read)f(from)f(the)g Fs(inputrc)g Ft(\014le)h(and)g(p)q -(erform)f(an)o(y)h(k)o(ey)f(bindings)195 1160 y(and)h(v)m(ariable)g +(erform)f(an)o(y)h(k)o(ey)f(bindings)195 259 y(and)h(v)m(ariable)g (assignmen)o(ts)f(found)i(\(see)f(Section)g(1.3)f([Readline)h(Init)g -(File],)f(page)h(4\).)1675 1260 y([F)l(unction])-1801 -b Fg(int)20 b Ff(rl)p 217 1260 V 24 w(read)p 351 1260 -V 25 w(init)p 462 1260 V 25 w(\014le)j Fe(\()p Fs(const)14 -b(char)h(*filename)p Fe(\))195 1315 y Ft(Read)h(k)o(eybindings)g(and)g +(File],)f(page)h(4\).)1675 354 y([F)l(unction])-1801 +b Fg(int)20 b Ff(rl)p 217 354 V 24 w(read)p 351 354 V +25 w(init)p 462 354 V 25 w(\014le)j Fe(\()p Fs(const)14 +b(char)h(*filename)p Fe(\))195 409 y Ft(Read)h(k)o(eybindings)g(and)g (v)m(ariable)f(assignmen)o(ts)g(from)g Fi(\014lename)j -Ft(\(see)e(Section)f(1.3)g([Readline)195 1369 y(Init)g(File],)f(page)h -(4\).)75 1489 y Fh(2.4.4)30 b(Asso)r(ciating)20 b(F)-5 -b(unction)20 b(Names)h(and)f(Bindings)137 1614 y Ft(These)11 +Ft(\(see)e(Section)f(1.3)g([Readline)195 464 y(Init)g(File],)f(page)h +(4\).)75 579 y Fh(2.4.4)30 b(Asso)r(ciating)20 b(F)-5 +b(unction)20 b(Names)h(and)f(Bindings)137 703 y Ft(These)11 b(functions)g(allo)o(w)d(y)o(ou)j(to)f(\014nd)h(out)f(what)g(k)o(eys)h (in)o(v)o(ok)o(e)e(named)i(functions)g(and)f(the)h(functions)75 -1669 y(in)o(v)o(ok)o(ed)i(b)o(y)h(a)f(particular)f(k)o(ey)i(sequence.) -21 b(Y)l(ou)14 b(ma)o(y)f(also)f(asso)q(ciate)h(a)h(new)g(function)f -(name)h(with)f(an)75 1724 y(arbitrary)h(function.)1675 -1824 y([F)l(unction])-1801 b Fg(rl_command_func_t)22 -b(*)d Ff(rl)p 628 1824 V 25 w(named)p 819 1824 V 24 w(function)j -Fe(\()p Fs(const)14 b(char)h(*name)p Fe(\))195 1878 y -Ft(Return)h(the)f(function)g(with)g(name)g Fi(name)p -Ft(.)1675 1978 y([F)l(unction])-1801 b Fg(rl_command_func_t)22 -b(*)d Ff(rl)p 628 1978 V 25 w(function)p 859 1978 V 24 -w(of)p 930 1978 V 24 w(k)n(eyseq)24 b Fe(\()p Fs(const)15 -b(char)f(*keyseq,)283 2033 y(Keymap)g(map,)g(int)h(*type)p -Fe(\))195 2087 y Ft(Return)i(the)f(function)g(in)o(v)o(ok)o(ed)g(b)o(y) -g Fi(k)o(eyseq)h Ft(in)f(k)o(eymap)g Fi(map)p Ft(.)23 -b(If)17 b Fi(map)g Ft(is)f Fs(NULL)p Ft(,)g(the)g(curren)o(t)195 -2142 y(k)o(eymap)i(is)g(used.)31 b(If)18 b Fi(t)o(yp)q(e)j +757 y(in)o(v)o(ok)o(ed)i(b)o(y)h(a)f(particular)f(k)o(ey)i(sequence.)21 +b(Y)l(ou)14 b(ma)o(y)f(also)f(asso)q(ciate)h(a)h(new)g(function)f(name) +h(with)f(an)75 812 y(arbitrary)h(function.)1675 907 y([F)l(unction]) +-1801 b Fg(rl_command_func_t)22 b(*)d Ff(rl)p 628 907 +V 25 w(named)p 819 907 V 24 w(function)j Fe(\()p Fs(const)14 +b(char)h(*name)p Fe(\))195 962 y Ft(Return)h(the)f(function)g(with)g +(name)g Fi(name)p Ft(.)1675 1057 y([F)l(unction])-1801 +b Fg(rl_command_func_t)22 b(*)d Ff(rl)p 628 1057 V 25 +w(function)p 859 1057 V 24 w(of)p 930 1057 V 24 w(k)n(eyseq)24 +b Fe(\()p Fs(const)15 b(char)f(*keyseq,)283 1112 y(Keymap)g(map,)g(int) +h(*type)p Fe(\))195 1167 y Ft(Return)i(the)f(function)g(in)o(v)o(ok)o +(ed)g(b)o(y)g Fi(k)o(eyseq)h Ft(in)f(k)o(eymap)g Fi(map)p +Ft(.)23 b(If)17 b Fi(map)g Ft(is)f Fs(NULL)p Ft(,)g(the)g(curren)o(t) +195 1222 y(k)o(eymap)i(is)g(used.)31 b(If)18 b Fi(t)o(yp)q(e)j Ft(is)d(not)h Fs(NULL)p Ft(,)f(the)g(t)o(yp)q(e)h(of)f(the)h(ob)s(ject) -f(is)g(returned)h(in)f(the)g Fs(int)195 2197 y Ft(v)m(ariable)d(it)f(p) +f(is)g(returned)h(in)f(the)g Fs(int)195 1277 y Ft(v)m(ariable)d(it)f(p) q(oin)o(ts)h(to)f(\(one)h(of)g Fs(ISFUNC)p Ft(,)f Fs(ISKMAP)p -Ft(,)g(or)h Fs(ISMACR)p Ft(\).)1675 2297 y([F)l(unction])-1801 -b Fg(char)20 b(**)f Ff(rl)p 314 2297 V 25 w(in)n(v)n(oking)p -549 2297 V 25 w(k)n(eyseqs)24 b Fe(\()p Fs(rl_command_func_t)12 -b(*function)p Fe(\))195 2351 y Ft(Return)k(an)g(arra)o(y)e(of)h +Ft(,)g(or)h Fs(ISMACR)p Ft(\).)1675 1372 y([F)l(unction])-1801 +b Fg(char)20 b(**)f Ff(rl)p 314 1372 V 25 w(in)n(v)n(oking)p +549 1372 V 25 w(k)n(eyseqs)24 b Fe(\()p Fs(rl_command_func_t)12 +b(*function)p Fe(\))195 1427 y Ft(Return)k(an)g(arra)o(y)e(of)h (strings)g(represen)o(ting)g(the)h(k)o(ey)f(sequences)i(used)f(to)f(in) -o(v)o(ok)o(e)g Fi(function)g Ft(in)195 2406 y(the)g(curren)o(t)g(k)o -(eymap.)1675 2506 y([F)l(unction])-1801 b Fg(char)20 -b(**)f Ff(rl)p 314 2506 V 25 w(in)n(v)n(oking)p 549 2506 -V 25 w(k)n(eyseqs)p 760 2506 V 26 w(in)p 834 2506 V 25 -w(map)j Fe(\()p Fs(rl_command_func_t)283 2560 y(*function,)13 -b(Keymap)i(map)p Fe(\))195 2615 y Ft(Return)h(an)g(arra)o(y)e(of)h +o(v)o(ok)o(e)g Fi(function)g Ft(in)195 1481 y(the)g(curren)o(t)g(k)o +(eymap.)1675 1577 y([F)l(unction])-1801 b Fg(char)20 +b(**)f Ff(rl)p 314 1577 V 25 w(in)n(v)n(oking)p 549 1577 +V 25 w(k)n(eyseqs)p 760 1577 V 26 w(in)p 834 1577 V 25 +w(map)j Fe(\()p Fs(rl_command_func_t)283 1632 y(*function,)13 +b(Keymap)i(map)p Fe(\))195 1686 y Ft(Return)h(an)g(arra)o(y)e(of)h (strings)g(represen)o(ting)g(the)h(k)o(ey)f(sequences)i(used)f(to)f(in) -o(v)o(ok)o(e)g Fi(function)g Ft(in)195 2670 y(the)g(k)o(eymap)g -Fi(map)p Ft(.)p eop end +o(v)o(ok)o(e)g Fi(function)g Ft(in)195 1741 y(the)g(k)o(eymap)g +Fi(map)p Ft(.)1675 1836 y([F)l(unction])-1801 b Fg(void)20 +b Ff(rl)p 243 1836 V 24 w(function)p 473 1836 V 25 w(dump)r(er)h +Fe(\()p Fs(int)15 b(readable)p Fe(\))195 1891 y Ft(Prin)o(t)f(the)g +(readline)h(function)f(names)h(and)f(the)h(k)o(ey)g(sequences)g(curren) +o(tly)f(b)q(ound)i(to)e(them)h(to)195 1946 y Fs(rl_outstream)p +Ft(.)j(If)c Fi(readable)i Ft(is)d(non-zero,)h(the)g(list)e(is)i +(formatted)e(in)i(suc)o(h)g(a)f(w)o(a)o(y)g(that)g(it)g(can)195 +2001 y(b)q(e)j(made)f(part)g(of)f(an)i Fs(inputrc)e Ft(\014le)h(and)g +(re-read.)1675 2096 y([F)l(unction])-1801 b Fg(void)20 +b Ff(rl)p 243 2096 V 24 w(list)p 344 2096 V 25 w(funmap)p +559 2096 V 24 w(names)i Fe(\()p Fs(void)p Fe(\))195 2151 +y Ft(Prin)o(t)14 b(the)h(names)h(of)e(all)h(bindable)g(Readline)g +(functions)g(to)g Fs(rl_outstream)p Ft(.)1675 2246 y([F)l(unction]) +-1801 b Fg(const)20 b(char)g(**)f Ff(rl)p 464 2246 V +25 w(funmap)p 679 2246 V 23 w(names)j Fe(\()p Fs(void)p +Fe(\))195 2301 y Ft(Return)14 b(a)e(NULL)i(terminated)f(arra)o(y)e(of)i +(kno)o(wn)g(function)f(names.)20 b(The)13 b(arra)o(y)f(is)g(sorted.)19 +b(The)195 2356 y(arra)o(y)11 b(itself)h(is)g(allo)q(cated,)g(but)h(not) +f(the)h(strings)e(inside.)19 b(Y)l(ou)13 b(should)g Fs(free\(\))e +Ft(the)i(arra)o(y)e(when)195 2410 y(y)o(ou)k(are)g(done,)g(but)g(not)g +(the)g(p)q(oin)o(ters.)1675 2506 y([F)l(unction])-1801 +b Fg(int)20 b Ff(rl)p 217 2506 V 24 w(add)p 333 2506 +V 25 w(funmap)p 548 2506 V 24 w(en)n(try)j Fe(\()p Fs(const)14 +b(char)h(*name,)f(rl_command_func_t)283 2560 y(*function)p +Fe(\))195 2615 y Ft(Add)j Fi(name)i Ft(to)d(the)g(list)f(of)h(bindable) +h(Readline)g(command)f(names,)g(and)h(mak)o(e)f Fi(function)g +Ft(the)195 2670 y(function)f(to)g(b)q(e)g(called)g(when)h +Fi(name)i Ft(is)c(in)o(v)o(ok)o(ed.)p eop end %%Page: 32 36 TeXDict begin 32 35 bop 75 -58 a Ft(32)1299 b(GNU)15 -b(Readline)g(Library)1675 149 y([F)l(unction])-1801 b -Fg(void)20 b Ff(rl)p 243 149 18 3 v 24 w(function)p 473 -149 V 25 w(dump)r(er)h Fe(\()p Fs(int)15 b(readable)p -Fe(\))195 204 y Ft(Prin)o(t)f(the)g(readline)h(function)f(names)h(and)f -(the)h(k)o(ey)g(sequences)g(curren)o(tly)f(b)q(ound)i(to)e(them)h(to) -195 259 y Fs(rl_outstream)p Ft(.)j(If)c Fi(readable)i -Ft(is)d(non-zero,)h(the)g(list)e(is)i(formatted)e(in)i(suc)o(h)g(a)f(w) -o(a)o(y)g(that)g(it)g(can)195 314 y(b)q(e)j(made)f(part)g(of)f(an)i -Fs(inputrc)e Ft(\014le)h(and)g(re-read.)1675 401 y([F)l(unction])-1801 -b Fg(void)20 b Ff(rl)p 243 401 V 24 w(list)p 344 401 -V 25 w(funmap)p 559 401 V 24 w(names)i Fe(\()p Fs(void)p -Fe(\))195 455 y Ft(Prin)o(t)14 b(the)h(names)h(of)e(all)h(bindable)g -(Readline)g(functions)g(to)g Fs(rl_outstream)p Ft(.)1675 -542 y([F)l(unction])-1801 b Fg(const)20 b(char)g(**)f -Ff(rl)p 464 542 V 25 w(funmap)p 679 542 V 23 w(names)j -Fe(\()p Fs(void)p Fe(\))195 597 y Ft(Return)14 b(a)e(NULL)i(terminated) -f(arra)o(y)e(of)i(kno)o(wn)g(function)f(names.)20 b(The)13 -b(arra)o(y)f(is)g(sorted.)19 b(The)195 652 y(arra)o(y)13 -b(itself)g(is)g(allo)q(cated,)g(but)h(not)g(the)g(strings)f(inside.)19 -b(Y)l(ou)14 b(should)g(free)g(the)g(arra)o(y)l(,)f(but)h(not)195 -707 y(the)h(p)q(oin)o(ters,)g(using)f Fs(free)h Ft(or)g -Fs(rl_free)f Ft(when)i(y)o(ou)e(are)h(done.)1675 793 -y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p 217 793 V -24 w(add)p 333 793 V 25 w(funmap)p 548 793 V 24 w(en)n(try)j -Fe(\()p Fs(const)14 b(char)h(*name,)f(rl_command_func_t)283 -848 y(*function)p Fe(\))195 903 y Ft(Add)j Fi(name)i -Ft(to)d(the)g(list)f(of)h(bindable)h(Readline)g(command)f(names,)g(and) -h(mak)o(e)f Fi(function)g Ft(the)195 958 y(function)f(to)g(b)q(e)g -(called)g(when)h Fi(name)i Ft(is)c(in)o(v)o(ok)o(ed.)75 -1065 y Fh(2.4.5)30 b(Allo)n(wing)21 b(Undoing)137 1185 -y Ft(Supp)q(orting)13 b(the)h(undo)f(command)g(is)g(a)g(painless)f -(thing,)h(and)g(mak)o(es)g(y)o(our)f(functions)h(m)o(uc)o(h)g(more)75 -1240 y(useful.)20 b(It)15 b(is)g(certainly)f(easy)h(to)g(try)f -(something)h(if)f(y)o(ou)h(kno)o(w)g(y)o(ou)g(can)g(undo)h(it.)137 -1305 y(If)21 b(y)o(our)f(function)g(simply)g(inserts)g(text)f(once,)j -(or)e(deletes)g(text)g(once,)i(and)f(uses)f Fs(rl_insert_)75 -1360 y(text\(\))13 b Ft(or)h Fs(rl_delete_text\(\))d -Ft(to)j(do)f(it,)g(then)i(undoing)f(is)f(already)g(done)i(for)e(y)o(ou) -h(automatically)l(.)137 1425 y(If)d(y)o(ou)f(do)g(m)o(ultiple)f -(insertions)g(or)h(m)o(ultiple)f(deletions,)h(or)g(an)o(y)g(com)o -(bination)f(of)h(these)g(op)q(erations,)75 1480 y(y)o(ou)19 -b(should)g(group)f(them)h(together)g(in)o(to)f(one)h(op)q(eration.)30 -b(This)19 b(is)f(done)i(with)e Fs(rl_begin_undo_)75 1535 -y(group\(\))c Ft(and)i Fs(rl_end_undo_group\(\))p Ft(.)137 -1600 y(The)g(t)o(yp)q(es)f(of)g(ev)o(en)o(ts)g(that)f(can)h(b)q(e)h -(undone)g(are:)195 1655 y Fd(enum)i(undo_code)e({)j(UNDO_DELETE)o(,)d -(UNDO_INSERT)o(,)g(UNDO_BEGIN,)g(UNDO_END)g(};)137 1720 -y Ft(Notice)f(that)f Fs(UNDO_DELETE)g Ft(means)h(to)g(insert)f(some)h -(text,)f(and)i Fs(UNDO_INSERT)d Ft(means)i(to)g(delete)75 -1775 y(some)e(text.)19 b(That)14 b(is,)f(the)h(undo)g(co)q(de)g(tells)f -(what)g(to)h(undo,)g(not)f(ho)o(w)g(to)g(undo)i(it.)j -Fs(UNDO_BEGIN)13 b Ft(and)75 1830 y Fs(UNDO_END)h Ft(are)h(tags)f -(added)i(b)o(y)f Fs(rl_begin_undo_group\(\))d Ft(and)k -Fs(rl_end_undo_group\(\))p Ft(.)1675 1916 y([F)l(unction])-1801 -b Fg(int)20 b Ff(rl)p 217 1916 V 24 w(b)r(egin)p 378 -1916 V 25 w(undo)p 528 1916 V 24 w(group)h Fe(\()p Fs(void)p -Fe(\))195 1971 y Ft(Begins)15 b(sa)o(ving)g(undo)h(information)d(in)j -(a)f(group)g(construct.)20 b(The)c(undo)g(information)e(usually)195 -2026 y(comes)21 b(from)f(calls)g(to)g Fs(rl_insert_text\(\))e +b(Readline)g(Library)75 149 y Fh(2.4.5)30 b(Allo)n(wing)21 +b(Undoing)137 269 y Ft(Supp)q(orting)13 b(the)h(undo)f(command)g(is)g +(a)g(painless)f(thing,)h(and)g(mak)o(es)g(y)o(our)f(functions)h(m)o(uc) +o(h)g(more)75 324 y(useful.)20 b(It)15 b(is)g(certainly)f(easy)h(to)g +(try)f(something)h(if)f(y)o(ou)h(kno)o(w)g(y)o(ou)g(can)g(undo)h(it.) +137 389 y(If)21 b(y)o(our)f(function)g(simply)g(inserts)g(text)f(once,) +j(or)e(deletes)g(text)g(once,)i(and)f(uses)f Fs(rl_insert_)75 +444 y(text\(\))13 b Ft(or)h Fs(rl_delete_text\(\))d Ft(to)j(do)f(it,)g +(then)i(undoing)f(is)f(already)g(done)i(for)e(y)o(ou)h(automatically)l +(.)137 509 y(If)d(y)o(ou)f(do)g(m)o(ultiple)f(insertions)g(or)h(m)o +(ultiple)f(deletions,)h(or)g(an)o(y)g(com)o(bination)f(of)h(these)g(op) +q(erations,)75 564 y(y)o(ou)19 b(should)g(group)f(them)h(together)g(in) +o(to)f(one)h(op)q(eration.)30 b(This)19 b(is)f(done)i(with)e +Fs(rl_begin_undo_)75 619 y(group\(\))c Ft(and)i Fs +(rl_end_undo_group\(\))p Ft(.)137 684 y(The)g(t)o(yp)q(es)f(of)g(ev)o +(en)o(ts)g(that)f(can)h(b)q(e)h(undone)g(are:)195 738 +y Fd(enum)i(undo_code)e({)j(UNDO_DELETE)o(,)d(UNDO_INSERT)o(,)g +(UNDO_BEGIN,)g(UNDO_END)g(};)137 803 y Ft(Notice)f(that)f +Fs(UNDO_DELETE)g Ft(means)h(to)g(insert)f(some)h(text,)f(and)i +Fs(UNDO_INSERT)d Ft(means)i(to)g(delete)75 858 y(some)e(text.)19 +b(That)14 b(is,)f(the)h(undo)g(co)q(de)g(tells)f(what)g(to)h(undo,)g +(not)f(ho)o(w)g(to)g(undo)i(it.)j Fs(UNDO_BEGIN)13 b +Ft(and)75 913 y Fs(UNDO_END)h Ft(are)h(tags)f(added)i(b)o(y)f +Fs(rl_begin_undo_group\(\))d Ft(and)k Fs(rl_end_undo_group\(\))p +Ft(.)1675 998 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p +217 998 18 3 v 24 w(b)r(egin)p 378 998 V 25 w(undo)p +528 998 V 24 w(group)h Fe(\()p Fs(void)p Fe(\))195 1053 +y Ft(Begins)15 b(sa)o(ving)g(undo)h(information)d(in)j(a)f(group)g +(construct.)20 b(The)c(undo)g(information)e(usually)195 +1108 y(comes)21 b(from)f(calls)g(to)g Fs(rl_insert_text\(\))e Ft(and)j Fs(rl_delete_text\(\))p Ft(,)f(but)h(could)f(b)q(e)i(the)195 -2081 y(result)15 b(of)f(calls)h(to)f Fs(rl_add_undo\(\))p -Ft(.)1675 2168 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p -217 2168 V 24 w(end)p 331 2168 V 25 w(undo)p 481 2168 -V 25 w(group)h Fe(\()p Fs(void)p Fe(\))195 2222 y Ft(Closes)14 +1163 y(result)15 b(of)f(calls)h(to)f Fs(rl_add_undo\(\))p +Ft(.)1675 1248 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p +217 1248 V 24 w(end)p 331 1248 V 25 w(undo)p 481 1248 +V 25 w(group)h Fe(\()p Fs(void)p Fe(\))195 1303 y Ft(Closes)14 b(the)g(curren)o(t)h(undo)g(group)f(started)g(with)f Fs(rl_begin_undo_group)g(\(\))p Ft(.)19 b(There)c(should)195 -2277 y(b)q(e)h(one)f(call)g(to)f Fs(rl_end_undo_group\(\))f +1358 y(b)q(e)h(one)f(call)g(to)f Fs(rl_end_undo_group\(\))f Ft(for)h(eac)o(h)h(call)g(to)f Fs(rl_begin_undo_group\(\))p -Ft(.)1675 2364 y([F)l(unction])-1801 b Fg(void)20 b Ff(rl)p -243 2364 V 24 w(add)p 359 2364 V 25 w(undo)i Fe(\()p +Ft(.)1675 1444 y([F)l(unction])-1801 b Fg(void)20 b Ff(rl)p +243 1444 V 24 w(add)p 359 1444 V 25 w(undo)i Fe(\()p Fs(enum)14 b(undo_code)g(what,)h(int)f(start,)h(int)f(end,)h(char)283 -2419 y(*text)p Fe(\))195 2474 y Ft(Remem)o(b)q(er)j(ho)o(w)e(to)h(undo) +1499 y(*text)p Fe(\))195 1553 y Ft(Remem)o(b)q(er)j(ho)o(w)e(to)h(undo) g(an)g(ev)o(en)o(t)g(\(according)f(to)h Fi(what)q Ft(\).)24 -b(The)17 b(a\013ected)g(text)f(runs)i(from)195 2528 y +b(The)17 b(a\013ected)g(text)f(runs)i(from)195 1608 y Fi(start)d Ft(to)g Fi(end)p Ft(,)g(and)g(encompasses)h -Fi(text)p Ft(.)1675 2615 y([F)l(unction])-1801 b Fg(void)20 -b Ff(rl)p 243 2615 V 24 w(free)p 361 2615 V 25 w(undo)p -511 2615 V 25 w(list)i Fe(\()p Fs(void)p Fe(\))195 2670 -y Ft(F)l(ree)15 b(the)h(existing)e(undo)h(list.)p eop -end -%%Page: 33 37 -TeXDict begin 33 36 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14 -b(with)g(GNU)h(Readline)842 b(33)1675 149 y([F)l(unction])-1801 -b Fg(int)20 b Ff(rl)p 217 149 18 3 v 24 w(do)p 302 149 -V 25 w(undo)i Fe(\()p Fs(void)p Fe(\))195 204 y Ft(Undo)12 -b(the)f(\014rst)g(thing)g(on)h(the)f(undo)h(list.)17 -b(Returns)12 b Fs(0)g Ft(if)f(there)g(w)o(as)g(nothing)g(to)f(undo,)j -(non-zero)195 259 y(if)i(something)f(w)o(as)g(undone.)137 -344 y(Finally)l(,)g(if)h(y)o(ou)g(neither)h(insert)f(nor)g(delete)h +Fi(text)p Ft(.)1675 1694 y([F)l(unction])-1801 b Fg(void)20 +b Ff(rl)p 243 1694 V 24 w(free)p 361 1694 V 25 w(undo)p +511 1694 V 25 w(list)i Fe(\()p Fs(void)p Fe(\))195 1749 +y Ft(F)l(ree)15 b(the)h(existing)e(undo)h(list.)1675 +1834 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p 217 +1834 V 24 w(do)p 302 1834 V 25 w(undo)i Fe(\()p Fs(void)p +Fe(\))195 1889 y Ft(Undo)12 b(the)f(\014rst)g(thing)g(on)h(the)f(undo)h +(list.)17 b(Returns)12 b Fs(0)g Ft(if)f(there)g(w)o(as)g(nothing)g(to)f +(undo,)j(non-zero)195 1944 y(if)i(something)f(w)o(as)g(undone.)137 +2030 y(Finally)l(,)g(if)h(y)o(ou)g(neither)h(insert)f(nor)g(delete)h (text,)f(but)g(directly)g(mo)q(dify)g(the)h(existing)e(text)i(\(e.g.,) -75 399 y(c)o(hange)j(its)g(case\),)h(call)e Fs(rl_modifying\(\))g +75 2085 y(c)o(hange)j(its)g(case\),)h(call)e Fs(rl_modifying\(\))g Ft(once,)i(just)f(b)q(efore)h(y)o(ou)f(mo)q(dify)g(the)g(text.)32 -b(Y)l(ou)20 b(m)o(ust)75 453 y(supply)15 b(the)h(indices)f(of)g(the)g +b(Y)l(ou)20 b(m)o(ust)75 2139 y(supply)15 b(the)h(indices)f(of)g(the)g (text)g(range)g(that)f(y)o(ou)h(are)g(going)f(to)h(mo)q(dify)l(.)1675 -538 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p 217 538 -V 24 w(mo)r(difying)h Fe(\()p Fs(int)14 b(start,)h(int)f(end)p -Fe(\))195 593 y Ft(T)l(ell)20 b(Readline)g(to)f(sa)o(v)o(e)h(the)g +2225 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p 217 +2225 V 24 w(mo)r(difying)h Fe(\()p Fs(int)14 b(start,)h(int)f(end)p +Fe(\))195 2280 y Ft(T)l(ell)20 b(Readline)g(to)f(sa)o(v)o(e)h(the)g (text)g(b)q(et)o(w)o(een)g Fi(start)g Ft(and)g Fi(end)j Ft(as)c(a)h(single)f(undo)i(unit.)34 b(It)20 b(is)195 -648 y(assumed)15 b(that)g(y)o(ou)g(will)f(subsequen)o(tly)h(mo)q(dify)g -(that)f(text.)75 752 y Fh(2.4.6)30 b(Redispla)n(y)1675 -872 y Ft([F)l(unction])-1801 b Fg(void)20 b Ff(rl)p 243 -872 V 24 w(redispla)n(y)j Fe(\()p Fs(void)p Fe(\))195 -927 y Ft(Change)c(what's)f(displa)o(y)o(ed)g(on)h(the)g(screen)g(to)f +2335 y(assumed)15 b(that)g(y)o(ou)g(will)f(subsequen)o(tly)h(mo)q(dify) +g(that)f(text.)75 2440 y Fh(2.4.6)30 b(Redispla)n(y)1675 +2560 y Ft([F)l(unction])-1801 b Fg(void)20 b Ff(rl)p +243 2560 V 24 w(redispla)n(y)j Fe(\()p Fs(void)p Fe(\))195 +2615 y Ft(Change)c(what's)f(displa)o(y)o(ed)g(on)h(the)g(screen)g(to)f (re\015ect)i(the)f(curren)o(t)f(con)o(ten)o(ts)h(of)f -Fs(rl_line_)195 981 y(buffer)p Ft(.)1675 1066 y([F)l(unction])-1801 -b Fg(int)20 b Ff(rl)p 217 1066 V 24 w(forced)p 395 1066 -V 25 w(up)r(date)p 594 1066 V 24 w(displa)n(y)j Fe(\()p -Fs(void)p Fe(\))195 1121 y Ft(F)l(orce)d(the)g(line)f(to)g(b)q(e)i(up)q +Fs(rl_line_)195 2670 y(buffer)p Ft(.)p eop end +%%Page: 33 37 +TeXDict begin 33 36 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14 +b(with)g(GNU)h(Readline)842 b(33)1675 149 y([F)l(unction])-1801 +b Fg(int)20 b Ff(rl)p 217 149 18 3 v 24 w(forced)p 395 +149 V 25 w(up)r(date)p 594 149 V 24 w(displa)n(y)j Fe(\()p +Fs(void)p Fe(\))195 204 y Ft(F)l(orce)d(the)g(line)f(to)g(b)q(e)i(up)q (dated)f(and)g(redispla)o(y)o(ed,)g(whether)g(or)g(not)f(Readline)h -(thinks)g(the)195 1176 y(screen)c(displa)o(y)e(is)h(correct.)1675 -1260 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p 217 -1260 V 24 w(on)p 302 1260 V 25 w(new)p 426 1260 V 26 -w(line)i Fe(\()p Fs(void)p Fe(\))195 1315 y Ft(T)l(ell)14 -b(the)h(up)q(date)h(functions)f(that)f(w)o(e)g(ha)o(v)o(e)h(mo)o(v)o -(ed)f(on)o(to)g(a)h(new)g(\(empt)o(y\))f(line,)g(usually)h(after)195 -1370 y(ouputting)g(a)f(newline.)1675 1455 y([F)l(unction])-1801 -b Fg(int)20 b Ff(rl)p 217 1455 V 24 w(on)p 302 1455 V -25 w(new)p 426 1455 V 26 w(line)p 542 1455 V 25 w(with)p -678 1455 V 25 w(prompt)i Fe(\()p Fs(void)p Fe(\))195 -1509 y Ft(T)l(ell)11 b(the)i(up)q(date)f(functions)g(that)f(w)o(e)h(ha) -o(v)o(e)g(mo)o(v)o(ed)f(on)o(to)g(a)h(new)g(line,)g(with)g -Fi(rl)p 1554 1509 14 2 v 19 w(prompt)h Ft(already)195 -1564 y(displa)o(y)o(ed.)19 b(This)14 b(could)g(b)q(e)h(used)g(b)o(y)f +(thinks)g(the)195 259 y(screen)c(displa)o(y)e(is)h(correct.)1675 +363 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p 217 363 +V 24 w(on)p 302 363 V 25 w(new)p 426 363 V 26 w(line)i +Fe(\()p Fs(void)p Fe(\))195 417 y Ft(T)l(ell)14 b(the)h(up)q(date)h +(functions)f(that)f(w)o(e)g(ha)o(v)o(e)h(mo)o(v)o(ed)f(on)o(to)g(a)h +(new)g(\(empt)o(y\))f(line,)g(usually)h(after)195 472 +y(ouputting)g(a)f(newline.)1675 576 y([F)l(unction])-1801 +b Fg(int)20 b Ff(rl)p 217 576 V 24 w(on)p 302 576 V 25 +w(new)p 426 576 V 26 w(line)p 542 576 V 25 w(with)p 678 +576 V 25 w(prompt)i Fe(\()p Fs(void)p Fe(\))195 630 y +Ft(T)l(ell)11 b(the)i(up)q(date)f(functions)g(that)f(w)o(e)h(ha)o(v)o +(e)g(mo)o(v)o(ed)f(on)o(to)g(a)h(new)g(line,)g(with)g +Fi(rl)p 1554 630 14 2 v 19 w(prompt)h Ft(already)195 +685 y(displa)o(y)o(ed.)19 b(This)14 b(could)g(b)q(e)h(used)g(b)o(y)f (applications)f(that)h(w)o(an)o(t)f(to)h(output)g(the)g(prompt)g -(string)195 1619 y(themselv)o(es,)f(but)h(still)e(need)j(Readline)f(to) -f(kno)o(w)g(the)h(prompt)f(string)g(length)g(for)g(redispla)o(y)l(.)19 -b(It)195 1674 y(should)c(b)q(e)h(used)g(after)e(setting)h -Fi(rl)p 796 1674 V 19 w(already)p 961 1674 V 19 w(prompted)p -Ft(.)1675 1758 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p -217 1758 18 3 v 24 w(reset)p 362 1758 V 25 w(line)p 477 -1758 V 26 w(state)j Fe(\()p Fs(void)p Fe(\))195 1813 -y Ft(Reset)18 b(the)f(displa)o(y)g(state)f(to)h(a)g(clean)g(state)g -(and)g(redispla)o(y)g(the)g(curren)o(t)g(line)g(starting)f(on)h(a)195 -1868 y(new)e(line.)1675 1953 y([F)l(unction])-1801 b -Fg(int)20 b Ff(rl)p 217 1953 V 24 w(crlf)i Fe(\()p Fs(void)p -Fe(\))195 2007 y Ft(Mo)o(v)o(e)14 b(the)h(cursor)g(to)g(the)g(start)f -(of)h(the)g(next)g(screen)h(line.)1675 2092 y([F)l(unction])-1801 -b Fg(int)20 b Ff(rl)p 217 2092 V 24 w(sho)n(w)p 364 2092 -V 25 w(c)n(har)j Fe(\()p Fs(int)15 b(c)p Fe(\))195 2147 +(string)195 740 y(themselv)o(es,)f(but)h(still)e(need)j(Readline)f(to)f +(kno)o(w)g(the)h(prompt)f(string)g(length)g(for)g(redispla)o(y)l(.)19 +b(It)195 795 y(should)c(b)q(e)h(used)g(after)e(setting)h +Fi(rl)p 796 795 V 19 w(already)p 961 795 V 19 w(prompted)p +Ft(.)1675 898 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p +217 898 18 3 v 24 w(reset)p 362 898 V 25 w(line)p 477 +898 V 26 w(state)j Fe(\()p Fs(void)p Fe(\))195 953 y +Ft(Reset)18 b(the)f(displa)o(y)g(state)f(to)h(a)g(clean)g(state)g(and)g +(redispla)o(y)g(the)g(curren)o(t)g(line)g(starting)f(on)h(a)195 +1008 y(new)e(line.)1675 1111 y([F)l(unction])-1801 b +Fg(int)20 b Ff(rl)p 217 1111 V 24 w(crlf)i Fe(\()p Fs(void)p +Fe(\))195 1166 y Ft(Mo)o(v)o(e)14 b(the)h(cursor)g(to)g(the)g(start)f +(of)h(the)g(next)g(screen)h(line.)1675 1270 y([F)l(unction])-1801 +b Fg(int)20 b Ff(rl)p 217 1270 V 24 w(sho)n(w)p 364 1270 +V 25 w(c)n(har)j Fe(\()p Fs(int)15 b(c)p Fe(\))195 1324 y Ft(Displa)o(y)g(c)o(haracter)g Fi(c)20 b Ft(on)c Fs(rl_outstream)p Ft(.)21 b(If)c(Readline)f(has)g(not)g(b)q(een)i(set)e(to)f(displa)o(y)h -(meta)195 2202 y(c)o(haracters)c(directly)l(,)h(this)f(will)g(con)o(v)o +(meta)195 1379 y(c)o(haracters)c(directly)l(,)h(this)f(will)g(con)o(v)o (ert)g(meta)h(c)o(haracters)f(to)g(a)h(meta-pre\014xed)g(k)o(ey)g -(sequence.)195 2257 y(This)i(is)f(in)o(tended)i(for)f(use)g(b)o(y)g +(sequence.)195 1434 y(This)i(is)f(in)o(tended)i(for)f(use)g(b)o(y)g (applications)f(whic)o(h)h(wish)g(to)g(do)g(their)f(o)o(wn)h(redispla)o -(y)l(.)1675 2341 y([F)l(unction])-1801 b Fg(int)20 b -Ff(rl)p 217 2341 V 24 w(message)i Fe(\()p Fs(const)14 -b(char)h(*,)g(...)o Fe(\))195 2396 y Ft(The)c(argumen)o(ts)e(are)h(a)g +(y)l(.)1675 1538 y([F)l(unction])-1801 b Fg(int)20 b +Ff(rl)p 217 1538 V 24 w(message)i Fe(\()p Fs(const)14 +b(char)h(*,)g(...)o Fe(\))195 1592 y Ft(The)c(argumen)o(ts)e(are)h(a)g (format)f(string)g(as)h(w)o(ould)g(b)q(e)h(supplied)g(to)e -Fs(printf)p Ft(,)h(p)q(ossibly)g(con)o(taining)195 2451 +Fs(printf)p Ft(,)h(p)q(ossibly)g(con)o(taining)195 1647 y(con)o(v)o(ersion)21 b(sp)q(eci\014cations)h(suc)o(h)h(as)e(`)p Fs(\045d)p Ft(',)i(and)f(an)o(y)g(additional)e(argumen)o(ts)h -(necessary)i(to)195 2506 y(satisfy)c(the)i(con)o(v)o(ersion)f(sp)q +(necessary)i(to)195 1702 y(satisfy)c(the)i(con)o(v)o(ersion)f(sp)q (eci\014cations.)36 b(The)21 b(resulting)f(string)f(is)i(displa)o(y)o -(ed)f(in)g(the)h Fi(ec)o(ho)195 2560 y(area)p Ft(.)30 +(ed)f(in)g(the)h Fi(ec)o(ho)195 1757 y(area)p Ft(.)30 b(The)19 b(ec)o(ho)g(area)f(is)g(also)g(used)h(to)f(displa)o(y)g(n)o (umeric)h(argumen)o(ts)f(and)h(searc)o(h)f(strings.)195 -2615 y(Y)l(ou)f(should)g(call)e Fs(rl_save_prompt)g Ft(to)h(sa)o(v)o(e) +1812 y(Y)l(ou)f(should)g(call)e Fs(rl_save_prompt)g Ft(to)h(sa)o(v)o(e) g(the)h(prompt)f(information)f(b)q(efore)i(calling)f(this)195 -2670 y(function.)p eop end +1866 y(function.)1675 1970 y([F)l(unction])-1801 b Fg(int)20 +b Ff(rl)p 217 1970 V 24 w(clear)p 360 1970 V 26 w(message)h +Fe(\()p Fs(void)p Fe(\))195 2025 y Ft(Clear)14 b(the)g(message)g(in)h +(the)f(ec)o(ho)h(area.)k(If)14 b(the)h(prompt)f(w)o(as)g(sa)o(v)o(ed)g +(with)f(a)i(call)e(to)h Fs(rl_save_)195 2079 y(prompt)19 +b Ft(b)q(efore)h(the)g(last)e(call)h(to)g Fs(rl_message)p +Ft(,)g(call)g Fs(rl_restore_prompt)e Ft(b)q(efore)j(calling)195 +2134 y(this)15 b(function.)1675 2238 y([F)l(unction])-1801 +b Fg(void)20 b Ff(rl)p 243 2238 V 24 w(sa)n(v)n(e)p 370 +2238 V 26 w(prompt)i Fe(\()p Fs(void)p Fe(\))195 2293 +y Ft(Sa)o(v)o(e)f(the)h(lo)q(cal)e(Readline)i(prompt)f(displa)o(y)g +(state)g(in)g(preparation)f(for)h(displa)o(ying)g(a)g(new)195 +2347 y(message)15 b(in)g(the)g(message)g(area)f(with)h +Fs(rl_message\(\))p Ft(.)1675 2451 y([F)l(unction])-1801 +b Fg(void)20 b Ff(rl)p 243 2451 V 24 w(restore)p 441 +2451 V 25 w(prompt)h Fe(\()p Fs(void)p Fe(\))195 2506 +y Ft(Restore)g(the)h(lo)q(cal)e(Readline)i(prompt)f(displa)o(y)f(state) +h(sa)o(v)o(ed)g(b)o(y)g(the)g(most)g(recen)o(t)g(call)g(to)195 +2560 y Fs(rl_save_prompt)p Ft(.)34 b(if)20 b Fs(rl_save_prompt)f +Ft(w)o(as)h(called)g(to)g(sa)o(v)o(e)g(the)g(prompt)h(b)q(efore)g(a)f +(call)195 2615 y(to)e Fs(rl_message)p Ft(,)f(this)h(function)g(should)h +(b)q(e)g(called)f(b)q(efore)g(the)h(corresp)q(onding)f(call)g(to)f +Fs(rl_)195 2670 y(clear_message)p Ft(.)p eop end %%Page: 34 38 TeXDict begin 34 37 bop 75 -58 a Ft(34)1299 b(GNU)15 b(Readline)g(Library)1675 149 y([F)l(unction])-1801 b -Fg(int)20 b Ff(rl)p 217 149 18 3 v 24 w(clear)p 360 149 -V 26 w(message)h Fe(\()p Fs(void)p Fe(\))195 204 y Ft(Clear)14 -b(the)g(message)g(in)h(the)f(ec)o(ho)h(area.)k(If)14 -b(the)h(prompt)f(w)o(as)g(sa)o(v)o(ed)g(with)f(a)i(call)e(to)h -Fs(rl_save_)195 259 y(prompt)19 b Ft(b)q(efore)h(the)g(last)e(call)h -(to)g Fs(rl_message)p Ft(,)g(call)g Fs(rl_restore_prompt)e -Ft(b)q(efore)j(calling)195 314 y(this)15 b(function.)1675 -412 y([F)l(unction])-1801 b Fg(void)20 b Ff(rl)p 243 -412 V 24 w(sa)n(v)n(e)p 370 412 V 26 w(prompt)i Fe(\()p -Fs(void)p Fe(\))195 467 y Ft(Sa)o(v)o(e)f(the)h(lo)q(cal)e(Readline)i -(prompt)f(displa)o(y)g(state)g(in)g(preparation)f(for)h(displa)o(ying)g -(a)g(new)195 522 y(message)15 b(in)g(the)g(message)g(area)f(with)h -Fs(rl_message\(\))p Ft(.)1675 620 y([F)l(unction])-1801 -b Fg(void)20 b Ff(rl)p 243 620 V 24 w(restore)p 441 620 -V 25 w(prompt)h Fe(\()p Fs(void)p Fe(\))195 675 y Ft(Restore)g(the)h -(lo)q(cal)e(Readline)i(prompt)f(displa)o(y)f(state)h(sa)o(v)o(ed)g(b)o -(y)g(the)g(most)g(recen)o(t)g(call)g(to)195 730 y Fs(rl_save_prompt)p -Ft(.)34 b(if)20 b Fs(rl_save_prompt)f Ft(w)o(as)h(called)g(to)g(sa)o(v) -o(e)g(the)g(prompt)h(b)q(efore)g(a)f(call)195 784 y(to)e -Fs(rl_message)p Ft(,)f(this)h(function)g(should)h(b)q(e)g(called)f(b)q -(efore)g(the)h(corresp)q(onding)f(call)g(to)f Fs(rl_)195 -839 y(clear_message)p Ft(.)1675 938 y([F)l(unction])-1801 -b Fg(int)20 b Ff(rl)p 217 938 V 24 w(expand)p 421 938 -V 25 w(prompt)i Fe(\()p Fs(char)14 b(*prompt)p Fe(\))195 -992 y Ft(Expand)22 b(an)o(y)f(sp)q(ecial)g(c)o(haracter)g(sequences)h +Fg(int)20 b Ff(rl)p 217 149 18 3 v 24 w(expand)p 421 +149 V 25 w(prompt)i Fe(\()p Fs(char)14 b(*prompt)p Fe(\))195 +204 y Ft(Expand)22 b(an)o(y)f(sp)q(ecial)g(c)o(haracter)g(sequences)h (in)f Fi(prompt)h Ft(and)g(set)f(up)h(the)f(lo)q(cal)g(Readline)195 -1047 y(prompt)c(redispla)o(y)g(v)m(ariables.)28 b(This)17 +259 y(prompt)c(redispla)o(y)g(v)m(ariables.)28 b(This)17 b(function)h(is)f(called)h(b)o(y)g Fs(readline\(\))p -Ft(.)26 b(It)18 b(ma)o(y)f(also)g(b)q(e)195 1102 y(called)10 +Ft(.)26 b(It)18 b(ma)o(y)f(also)g(b)q(e)195 314 y(called)10 b(to)g(expand)h(the)g(primary)f(prompt)g(if)g(the)g Fs -(rl_on_new_line_with_prompt\(\))d Ft(function)195 1157 +(rl_on_new_line_with_prompt\(\))d Ft(function)195 369 y(or)12 b Fs(rl_already_prompted)e Ft(v)m(ariable)i(is)h(used.)19 b(It)13 b(returns)g(the)f(n)o(um)o(b)q(er)i(of)e(visible)g(c)o -(haracters)195 1211 y(on)17 b(the)g(last)f(line)g(of)h(the)g(\(p)q +(haracters)195 423 y(on)17 b(the)g(last)f(line)g(of)h(the)g(\(p)q (ossibly)f(m)o(ulti-line\))f(prompt.)24 b(Applications)16 -b(ma)o(y)g(indicate)h(that)195 1266 y(the)d(prompt)f(con)o(tains)h(c)o +b(ma)o(y)g(indicate)h(that)195 478 y(the)d(prompt)f(con)o(tains)h(c)o (haracters)f(that)g(tak)o(e)g(up)h(no)g(ph)o(ysical)g(screen)g(space)g -(when)h(displa)o(y)o(ed)195 1321 y(b)o(y)20 b(brac)o(k)o(eting)g(a)g +(when)h(displa)o(y)o(ed)195 533 y(b)o(y)20 b(brac)o(k)o(eting)g(a)g (sequence)i(of)e(suc)o(h)g(c)o(haracters)g(with)g(the)h(sp)q(ecial)f -(mark)o(ers)f Fs(RL_PROMPT_)195 1376 y(START_IGNORE)14 +(mark)o(ers)f Fs(RL_PROMPT_)195 588 y(START_IGNORE)14 b Ft(and)h Fs(RL_PROMPT_END_IGNORE)e Ft(\(declared)i(in)g(`)p -Fs(readline.h)p Ft('.)k(This)c(ma)o(y)f(b)q(e)195 1431 +Fs(readline.h)p Ft('.)k(This)c(ma)o(y)f(b)q(e)195 643 y(used)i(to)e(em)o(b)q(ed)i(terminal-sp)q(eci\014c)f(escap)q(e)h -(sequences)h(in)e(prompts.)1675 1529 y([F)l(unction])-1801 -b Fg(int)20 b Ff(rl)p 217 1529 V 24 w(set)p 312 1529 -V 26 w(prompt)h Fe(\()p Fs(const)14 b(char)h(*prompt)p -Fe(\))195 1584 y Ft(Mak)o(e)e(Readline)h(use)f Fi(prompt)h +(sequences)h(in)e(prompts.)1675 731 y([F)l(unction])-1801 +b Fg(int)20 b Ff(rl)p 217 731 V 24 w(set)p 312 731 V +26 w(prompt)h Fe(\()p Fs(const)14 b(char)h(*prompt)p +Fe(\))195 786 y Ft(Mak)o(e)e(Readline)h(use)f Fi(prompt)h Ft(for)f(subsequen)o(t)h(redispla)o(y)l(.)19 b(This)13 -b(calls)f Fs(rl_expand_prompt\(\))195 1639 y Ft(to)j(expand)g(the)h +b(calls)f Fs(rl_expand_prompt\(\))195 840 y Ft(to)j(expand)g(the)h (prompt)e(and)i(sets)f Fs(rl_prompt)f Ft(to)g(the)h(result.)75 -1757 y Fh(2.4.7)30 b(Mo)r(difying)20 b(T)-5 b(ext)1675 -1882 y Ft([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p 217 -1882 V 24 w(insert)p 384 1882 V 25 w(text)k Fe(\()p Fs(const)14 -b(char)g(*text)p Fe(\))195 1937 y Ft(Insert)i Fi(text)g +948 y Fh(2.4.7)30 b(Mo)r(difying)20 b(T)-5 b(ext)1675 +1069 y Ft([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p 217 +1069 V 24 w(insert)p 384 1069 V 25 w(text)k Fe(\()p Fs(const)14 +b(char)g(*text)p Fe(\))195 1124 y Ft(Insert)i Fi(text)g Ft(in)o(to)f(the)h(line)f(at)h(the)g(curren)o(t)f(cursor)h(p)q (osition.)k(Returns)d(the)f(n)o(um)o(b)q(er)g(of)f(c)o(har-)195 -1992 y(acters)g(inserted.)1675 2090 y([F)l(unction])-1801 -b Fg(int)20 b Ff(rl)p 217 2090 V 24 w(delete)p 389 2090 +1179 y(acters)g(inserted.)1675 1267 y([F)l(unction])-1801 +b Fg(int)20 b Ff(rl)p 217 1267 V 24 w(delete)p 389 1267 V 26 w(text)k Fe(\()p Fs(int)14 b(start,)h(int)g(end)p -Fe(\))195 2145 y Ft(Delete)j(the)h(text)g(b)q(et)o(w)o(een)g +Fe(\))195 1322 y Ft(Delete)j(the)h(text)g(b)q(et)o(w)o(een)g Fi(start)g Ft(and)g Fi(end)i Ft(in)e(the)g(curren)o(t)f(line.)31 -b(Returns)19 b(the)g(n)o(um)o(b)q(er)g(of)195 2199 y(c)o(haracters)14 -b(deleted.)1675 2298 y([F)l(unction])-1801 b Fg(char)20 -b(*)f Ff(rl)p 288 2298 V 25 w(cop)n(y)p 427 2298 V 25 +b(Returns)19 b(the)g(n)o(um)o(b)q(er)g(of)195 1376 y(c)o(haracters)14 +b(deleted.)1675 1465 y([F)l(unction])-1801 b Fg(char)20 +b(*)f Ff(rl)p 288 1465 V 25 w(cop)n(y)p 427 1465 V 25 w(text)24 b Fe(\()p Fs(int)15 b(start,)f(int)h(end)p -Fe(\))195 2353 y Ft(Return)h(a)f(cop)o(y)g(of)g(the)g(text)f(b)q(et)o +Fe(\))195 1519 y Ft(Return)h(a)f(cop)o(y)g(of)g(the)g(text)f(b)q(et)o (w)o(een)i Fi(start)f Ft(and)g Fi(end)j Ft(in)d(the)g(curren)o(t)g -(line.)1675 2451 y([F)l(unction])-1801 b Fg(int)20 b -Ff(rl)p 217 2451 V 24 w(kill)p 319 2451 V 25 w(text)k -Fe(\()p Fs(int)15 b(start,)f(int)h(end)p Fe(\))195 2506 +(line.)1675 1607 y([F)l(unction])-1801 b Fg(int)20 b +Ff(rl)p 217 1607 V 24 w(kill)p 319 1607 V 25 w(text)k +Fe(\()p Fs(int)15 b(start,)f(int)h(end)p Fe(\))195 1662 y Ft(Cop)o(y)i(the)g(text)f(b)q(et)o(w)o(een)i Fi(start)f Ft(and)g Fi(end)i Ft(in)e(the)g(curren)o(t)g(line)g(to)g(the)g(kill)f -(ring,)g(app)q(ending)195 2560 y(or)g(prep)q(ending)j(to)d(the)h(last)f +(ring,)g(app)q(ending)195 1717 y(or)g(prep)q(ending)j(to)d(the)h(last)f (kill)g(if)g(the)h(last)f(command)h(w)o(as)f(a)h(kill)f(command.)25 -b(The)17 b(text)f(is)195 2615 y(deleted.)25 b(If)17 b +b(The)17 b(text)f(is)195 1772 y(deleted.)25 b(If)17 b Fi(start)g Ft(is)f(less)g(than)h Fi(end)p Ft(,)g(the)g(text)g(is)f(app) q(ended,)i(otherwise)e(prep)q(ended.)27 b(If)17 b(the)195 -2670 y(last)d(command)h(w)o(as)g(not)f(a)h(kill,)f(a)h(new)g(kill)f -(ring)h(slot)f(is)h(used.)p eop end -%%Page: 35 39 -TeXDict begin 35 38 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14 -b(with)g(GNU)h(Readline)842 b(35)1675 149 y([F)l(unction])-1801 -b Fg(int)20 b Ff(rl)p 217 149 18 3 v 24 w(push)p 360 -149 V 25 w(macro)p 539 149 V 24 w(input)i Fe(\()p Fs(char)15 -b(*macro)p Fe(\))195 204 y Ft(Cause)f Fi(macro)i Ft(to)d(b)q(e)i +1827 y(last)d(command)h(w)o(as)g(not)f(a)h(kill,)f(a)h(new)g(kill)f +(ring)h(slot)f(is)h(used.)1675 1915 y([F)l(unction])-1801 +b Fg(int)20 b Ff(rl)p 217 1915 V 24 w(push)p 360 1915 +V 25 w(macro)p 539 1915 V 24 w(input)i Fe(\()p Fs(char)15 +b(*macro)p Fe(\))195 1970 y Ft(Cause)f Fi(macro)i Ft(to)d(b)q(e)i (inserted)f(in)o(to)f(the)h(line,)g(as)g(if)f(it)h(had)g(b)q(een)h(in)o (v)o(ok)o(ed)f(b)o(y)g(a)g(k)o(ey)g(b)q(ound)h(to)195 -259 y(a)g(macro.)k(Not)c(esp)q(ecially)f(useful;)h(use)h -Fs(rl_insert_text\(\))d Ft(instead.)75 379 y Fh(2.4.8)30 -b(Character)21 b(Input)1675 506 y Ft([F)l(unction])-1801 -b Fg(int)20 b Ff(rl)p 217 506 V 24 w(read)p 351 506 V -25 w(k)n(ey)k Fe(\()p Fs(void)p Fe(\))195 560 y Ft(Return)15 +2024 y(a)g(macro.)k(Not)c(esp)q(ecially)f(useful;)h(use)h +Fs(rl_insert_text\(\))d Ft(instead.)75 2132 y Fh(2.4.8)30 +b(Character)21 b(Input)1675 2253 y Ft([F)l(unction])-1801 +b Fg(int)20 b Ff(rl)p 217 2253 V 24 w(read)p 351 2253 +V 25 w(k)n(ey)k Fe(\()p Fs(void)p Fe(\))195 2308 y Ft(Return)15 b(the)g(next)g(c)o(haracter)f(a)o(v)m(ailable)f(from)h(Readline's)h -(curren)o(t)g(input)f(stream.)19 b(This)c(han-)195 615 +(curren)o(t)g(input)f(stream.)19 b(This)c(han-)195 2363 y(dles)e(input)g(inserted)h(in)o(to)e(the)h(input)g(stream)g(via)f -Fi(rl)p 1113 615 14 2 v 20 w(p)q(ending)p 1290 615 V -21 w(input)i Ft(\(see)f(Section)g(2.3)g([Read-)195 670 -y(line)19 b(V)l(ariables],)g(page)h(24\))f(and)h Fs(rl_stuff_char\(\))p -Ft(,)e(macros,)h(and)h(c)o(haracters)f(read)h(from)195 -725 y(the)d(k)o(eyb)q(oard.)25 b(While)17 b(w)o(aiting)e(for)h(input,)i -(this)e(function)h(will)f(call)g(an)o(y)g(function)h(assigned)195 -780 y(to)e(the)g Fs(rl_event_hook)e Ft(v)m(ariable.)1675 -880 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p 217 880 -18 3 v 24 w(getc)k Fe(\()p Fs(FILE)14 b(*stream)p Fe(\))195 -935 y Ft(Return)d(the)g(next)g(c)o(haracter)f(a)o(v)m(ailable)f(from)h -Fi(stream)p Ft(,)g(whic)o(h)h(is)f(assumed)g(to)g(b)q(e)i(the)e(k)o -(eyb)q(oard.)1675 1035 y([F)l(unction])-1801 b Fg(int)20 -b Ff(rl)p 217 1035 V 24 w(stu\013)p 351 1035 V 26 w(c)n(har)i -Fe(\()p Fs(int)15 b(c)p Fe(\))195 1090 y Ft(Insert)i -Fi(c)i Ft(in)o(to)c(the)i(Readline)g(input)f(stream.)23 -b(It)16 b(will)f(b)q(e)i Fs(")p Ft(read)p Fs(")g Ft(b)q(efore)f -(Readline)h(attempts)195 1145 y(to)c(read)g(c)o(haracters)g(from)f(the) -i(terminal)e(with)h Fs(rl_read_key\(\))p Ft(.)k(Up)d(to)f(512)f(c)o -(haracters)h(ma)o(y)195 1200 y(b)q(e)j(pushed)g(bac)o(k.)k +Fi(rl)p 1113 2363 14 2 v 20 w(p)q(ending)p 1290 2363 +V 21 w(input)i Ft(\(see)f(Section)g(2.3)g([Read-)195 +2417 y(line)19 b(V)l(ariables],)g(page)h(24\))f(and)h +Fs(rl_stuff_char\(\))p Ft(,)e(macros,)h(and)h(c)o(haracters)f(read)h +(from)195 2472 y(the)d(k)o(eyb)q(oard.)25 b(While)17 +b(w)o(aiting)e(for)h(input,)i(this)e(function)h(will)f(call)g(an)o(y)g +(function)h(assigned)195 2527 y(to)e(the)g Fs(rl_event_hook)e +Ft(v)m(ariable.)1675 2615 y([F)l(unction])-1801 b Fg(int)20 +b Ff(rl)p 217 2615 18 3 v 24 w(getc)k Fe(\()p Fs(FILE)14 +b(*stream)p Fe(\))195 2670 y Ft(Return)d(the)g(next)g(c)o(haracter)f(a) +o(v)m(ailable)f(from)h Fi(stream)p Ft(,)g(whic)o(h)h(is)f(assumed)g(to) +g(b)q(e)i(the)e(k)o(eyb)q(oard.)p eop end +%%Page: 35 39 +TeXDict begin 35 38 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14 +b(with)g(GNU)h(Readline)842 b(35)1675 149 y([F)l(unction])-1801 +b Fg(int)20 b Ff(rl)p 217 149 18 3 v 24 w(stu\013)p 351 +149 V 26 w(c)n(har)i Fe(\()p Fs(int)15 b(c)p Fe(\))195 +204 y Ft(Insert)i Fi(c)i Ft(in)o(to)c(the)i(Readline)g(input)f(stream.) +23 b(It)16 b(will)f(b)q(e)i Fs(")p Ft(read)p Fs(")g Ft(b)q(efore)f +(Readline)h(attempts)195 259 y(to)c(read)g(c)o(haracters)g(from)f(the)i +(terminal)e(with)h Fs(rl_read_key\(\))p Ft(.)k(Up)d(to)f(512)f(c)o +(haracters)h(ma)o(y)195 314 y(b)q(e)j(pushed)g(bac)o(k.)k Fs(rl_stuff_char)14 b Ft(returns)h(1)g(if)g(the)g(c)o(haracter)g(w)o -(as)f(successfully)h(inserted;)195 1254 y(0)g(otherwise.)1675 -1355 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p 217 -1355 V 24 w(execute)p 428 1355 V 27 w(next)j Fe(\()p -Fs(int)15 b(c)p Fe(\))195 1410 y Ft(Mak)o(e)i Fi(c)k -Ft(b)q(e)d(the)g(next)g(command)g(to)f(b)q(e)i(executed)f(when)h -Fs(rl_read_key\(\))d Ft(is)h(called.)27 b(This)195 1465 -y(sets)15 b Fi(rl)p 318 1465 14 2 v 19 w(p)q(ending)p -494 1465 V 21 w(input)p Ft(.)1675 1565 y([F)l(unction])-1801 -b Fg(int)20 b Ff(rl)p 217 1565 18 3 v 24 w(clear)p 360 -1565 V 26 w(p)r(ending)p 587 1565 V 23 w(input)j Fe(\()p -Fs(void)p Fe(\))195 1620 y Ft(Unset)e Fi(rl)p 365 1620 -14 2 v 19 w(p)q(ending)p 541 1620 V 21 w(input)p Ft(,)h(e\013ectiv)o -(ely)e(negating)g(the)h(e\013ect)g(of)f(an)o(y)h(previous)f(call)g(to)g -Fs(rl_)195 1675 y(execute_next\(\))p Ft(.)29 b(This)18 -b(w)o(orks)g(only)g(if)h(the)f(p)q(ending)i(input)f(has)g(not)f -(already)g(b)q(een)i(read)195 1729 y(with)15 b Fs(rl_read_key\(\))p -Ft(.)1675 1830 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p -217 1830 18 3 v 24 w(set)p 312 1830 V 26 w(k)n(eyb)r(oard)p -569 1830 V 24 w(input)p 727 1830 V 25 w(timeout)j Fe(\()p -Fs(int)14 b(u)p Fe(\))195 1885 y Ft(While)19 b(w)o(aiting)g(for)g(k)o -(eyb)q(oard)h(input)g(in)g Fs(rl_read_key\(\))p Ft(,)f(Readline)h(will) -f(w)o(ait)g(for)g Fi(u)h Ft(mi-)195 1939 y(croseconds)c(for)e(input)i -(b)q(efore)g(calling)e(an)o(y)h(function)g(assigned)g(to)g -Fs(rl_event_hook)p Ft(.)k Fi(u)d Ft(m)o(ust)195 1994 -y(b)q(e)h(greater)e(than)g(or)h(equal)g(to)f(zero)h(\(a)f(zero-length)h -(timeout)f(is)g(equiv)m(alen)o(t)h(to)f(a)h(p)q(oll\).)21 -b(The)195 2049 y(default)15 b(w)o(aiting)e(p)q(erio)q(d)j(is)e(one-ten) -o(th)i(of)e(a)h(second.)21 b(Returns)15 b(the)h(old)e(timeout)h(v)m -(alue.)75 2169 y Fh(2.4.9)30 b(T)-5 b(erminal)20 b(Managemen)n(t)1675 -2296 y Ft([F)l(unction])-1801 b Fg(void)20 b Ff(rl)p -243 2296 V 24 w(prep)p 381 2296 V 25 w(terminal)i Fe(\()p -Fs(int)15 b(meta_flag)p Fe(\))195 2350 y Ft(Mo)q(dify)21 +(as)f(successfully)h(inserted;)195 369 y(0)g(otherwise.)1675 +486 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p 217 486 +V 24 w(execute)p 428 486 V 27 w(next)j Fe(\()p Fs(int)15 +b(c)p Fe(\))195 541 y Ft(Mak)o(e)i Fi(c)k Ft(b)q(e)d(the)g(next)g +(command)g(to)f(b)q(e)i(executed)f(when)h Fs(rl_read_key\(\))d +Ft(is)h(called.)27 b(This)195 596 y(sets)15 b Fi(rl)p +318 596 14 2 v 19 w(p)q(ending)p 494 596 V 21 w(input)p +Ft(.)1675 714 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p +217 714 18 3 v 24 w(clear)p 360 714 V 26 w(p)r(ending)p +587 714 V 23 w(input)j Fe(\()p Fs(void)p Fe(\))195 768 +y Ft(Unset)e Fi(rl)p 365 768 14 2 v 19 w(p)q(ending)p +541 768 V 21 w(input)p Ft(,)h(e\013ectiv)o(ely)e(negating)g(the)h +(e\013ect)g(of)f(an)o(y)h(previous)f(call)g(to)g Fs(rl_)195 +823 y(execute_next\(\))p Ft(.)29 b(This)18 b(w)o(orks)g(only)g(if)h +(the)f(p)q(ending)i(input)f(has)g(not)f(already)g(b)q(een)i(read)195 +878 y(with)15 b Fs(rl_read_key\(\))p Ft(.)1675 996 y([F)l(unction]) +-1801 b Fg(int)20 b Ff(rl)p 217 996 18 3 v 24 w(set)p +312 996 V 26 w(k)n(eyb)r(oard)p 569 996 V 24 w(input)p +727 996 V 25 w(timeout)j Fe(\()p Fs(int)14 b(u)p Fe(\))195 +1050 y Ft(While)19 b(w)o(aiting)g(for)g(k)o(eyb)q(oard)h(input)g(in)g +Fs(rl_read_key\(\))p Ft(,)f(Readline)h(will)f(w)o(ait)g(for)g +Fi(u)h Ft(mi-)195 1105 y(croseconds)c(for)e(input)i(b)q(efore)g +(calling)e(an)o(y)h(function)g(assigned)g(to)g Fs(rl_event_hook)p +Ft(.)k Fi(u)d Ft(m)o(ust)195 1160 y(b)q(e)h(greater)e(than)g(or)h +(equal)g(to)f(zero)h(\(a)f(zero-length)h(timeout)f(is)g(equiv)m(alen)o +(t)h(to)f(a)h(p)q(oll\).)21 b(The)195 1215 y(default)15 +b(w)o(aiting)e(p)q(erio)q(d)j(is)e(one-ten)o(th)i(of)e(a)h(second.)21 +b(Returns)15 b(the)h(old)e(timeout)h(v)m(alue.)75 1352 +y Fh(2.4.9)30 b(T)-5 b(erminal)20 b(Managemen)n(t)1675 +1487 y Ft([F)l(unction])-1801 b Fg(void)20 b Ff(rl)p +243 1487 V 24 w(prep)p 381 1487 V 25 w(terminal)i Fe(\()p +Fs(int)15 b(meta_flag)p Fe(\))195 1542 y Ft(Mo)q(dify)21 b(the)g(terminal)f(settings)g(for)h(Readline's)g(use,)i(so)d -Fs(readline\(\))g Ft(can)i(read)f(a)g(single)195 2405 +Fs(readline\(\))g Ft(can)i(read)f(a)g(single)195 1597 y(c)o(haracter)15 b(at)g(a)g(time)f(from)h(the)h(k)o(eyb)q(oard.)k(The) -c Fi(meta)p 1189 2405 14 2 v 19 w(\015ag)j Ft(argumen)o(t)c(should)h(b) -q(e)g(non-zero)195 2460 y(if)f(Readline)g(should)g(read)g(eigh)o(t-bit) -g(input.)1675 2560 y([F)l(unction])-1801 b Fg(void)20 -b Ff(rl)p 243 2560 18 3 v 24 w(deprep)p 439 2560 V 25 -w(terminal)i Fe(\()p Fs(void)p Fe(\))195 2615 y Ft(Undo)16 +c Fi(meta)p 1189 1597 14 2 v 19 w(\015ag)j Ft(argumen)o(t)c(should)h(b) +q(e)g(non-zero)195 1651 y(if)f(Readline)g(should)g(read)g(eigh)o(t-bit) +g(input.)1675 1769 y([F)l(unction])-1801 b Fg(void)20 +b Ff(rl)p 243 1769 18 3 v 24 w(deprep)p 439 1769 V 25 +w(terminal)i Fe(\()p Fs(void)p Fe(\))195 1824 y Ft(Undo)16 b(the)g(e\013ects)f(of)h Fs(rl_prep_terminal\(\))p Ft(,)d(lea)o(ving)i (the)g(terminal)g(in)h(the)f(state)g(in)h(whic)o(h)195 -2670 y(it)e(w)o(as)h(b)q(efore)g(the)h(most)e(recen)o(t)h(call)g(to)f -Fs(rl_prep_terminal\(\))p Ft(.)p eop end -%%Page: 36 40 -TeXDict begin 36 39 bop 75 -58 a Ft(36)1299 b(GNU)15 -b(Readline)g(Library)1675 149 y([F)l(unction])-1801 b -Fg(void)20 b Ff(rl)p 243 149 18 3 v 24 w(tt)n(y)p 339 -149 V 27 w(set)p 437 149 V 25 w(default)p 636 149 V 25 +1879 y(it)e(w)o(as)h(b)q(efore)g(the)h(most)e(recen)o(t)h(call)g(to)f +Fs(rl_prep_terminal\(\))p Ft(.)1675 1996 y([F)l(unction])-1801 +b Fg(void)20 b Ff(rl)p 243 1996 V 24 w(tt)n(y)p 339 1996 +V 27 w(set)p 437 1996 V 25 w(default)p 636 1996 V 25 w(bindings)h Fe(\()p Fs(Keymap)14 b(kmap)p Fe(\))195 -204 y Ft(Read)19 b(the)g(op)q(erating)e(system's)h(terminal)f(editing)h -(c)o(haracters)g(\(as)f(w)o(ould)h(b)q(e)h(displa)o(y)o(ed)f(b)o(y)195 -259 y Fs(stty)p Ft(\))c(to)h(their)g(Readline)g(equiv)m(alen)o(ts.)20 +2051 y Ft(Read)19 b(the)g(op)q(erating)e(system's)h(terminal)f(editing) +h(c)o(haracters)g(\(as)f(w)o(ould)h(b)q(e)h(displa)o(y)o(ed)f(b)o(y)195 +2106 y Fs(stty)p Ft(\))c(to)h(their)g(Readline)g(equiv)m(alen)o(ts.)20 b(The)15 b(bindings)g(are)g(p)q(erformed)g(in)g Fi(kmap)p -Ft(.)1675 346 y([F)l(unction])-1801 b Fg(void)20 b Ff(rl)p -243 346 V 24 w(tt)n(y)p 339 346 V 27 w(unset)p 501 346 -V 25 w(default)p 700 346 V 24 w(bindings)i Fe(\()p Fs(Keymap)14 -b(kmap)p Fe(\))195 401 y Ft(Reset)i(the)g(bindings)g(manipulated)f(b)o -(y)h Fs(rl_tty_set_default_bindings)c Ft(so)k(that)f(the)h(ter-)195 -455 y(minal)j(editing)g(c)o(haracters)g(are)h(b)q(ound)g(to)f -Fs(rl_insert)p Ft(.)33 b(The)20 b(bindings)g(are)f(p)q(erformed)h(in) -195 510 y Fi(kmap)p Ft(.)1675 597 y([F)l(unction])-1801 -b Fg(int)20 b Ff(rl)p 217 597 V 24 w(reset)p 362 597 -V 25 w(terminal)j Fe(\()p Fs(const)14 b(char)g(*terminal_name)p -Fe(\))195 652 y Ft(Reinitialize)d(Readline's)g(idea)h(of)g(the)g -(terminal)e(settings)h(using)h Fi(terminal)p 1490 652 -14 2 v 19 w(name)i Ft(as)e(the)g(termi-)195 707 y(nal)j(t)o(yp)q(e)h -(\(e.g.,)f Fs(vt100)p Ft(\).)21 b(If)16 b Fi(terminal)p -878 707 V 19 w(name)i Ft(is)e Fs(NULL)p Ft(,)f(the)h(v)m(alue)g(of)f -(the)h Fs(TERM)g Ft(en)o(vironmen)o(t)195 762 y(v)m(ariable)f(is)f -(used.)75 868 y Fh(2.4.10)29 b(Utilit)n(y)22 b(F)-5 b(unctions)1675 -989 y Ft([F)l(unction])-1801 b Fg(void)20 b Ff(rl)p 243 -989 18 3 v 24 w(free)j Fe(\()p Fs(void)14 b(*mem)p Fe(\))195 -1043 y Ft(Deallo)q(cate)9 b(the)i(memory)f(p)q(oin)o(ted)h(to)f(b)o(y)g -Fi(mem)p Ft(.)18 b Fi(mem)11 b Ft(m)o(ust)f(ha)o(v)o(e)g(b)q(een)i -(allo)q(cated)e(b)o(y)g Fs(malloc)p Ft(.)1675 1130 y([F)l(unction]) --1801 b Fg(void)20 b Ff(rl)p 243 1130 V 24 w(replace)p -444 1130 V 26 w(line)i Fe(\()p Fs(const)15 b(char)f(*text,)g(int)h -(clear_undo)p Fe(\))195 1185 y Ft(Replace)20 b(the)g(con)o(ten)o(ts)f +Ft(.)1675 2224 y([F)l(unction])-1801 b Fg(void)20 b Ff(rl)p +243 2224 V 24 w(tt)n(y)p 339 2224 V 27 w(unset)p 501 +2224 V 25 w(default)p 700 2224 V 24 w(bindings)i Fe(\()p +Fs(Keymap)14 b(kmap)p Fe(\))195 2278 y Ft(Reset)i(the)g(bindings)g +(manipulated)f(b)o(y)h Fs(rl_tty_set_default_bindings)c +Ft(so)k(that)f(the)h(ter-)195 2333 y(minal)j(editing)g(c)o(haracters)g +(are)h(b)q(ound)g(to)f Fs(rl_insert)p Ft(.)33 b(The)20 +b(bindings)g(are)f(p)q(erformed)h(in)195 2388 y Fi(kmap)p +Ft(.)1675 2506 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p +217 2506 V 24 w(reset)p 362 2506 V 25 w(terminal)j Fe(\()p +Fs(const)14 b(char)g(*terminal_name)p Fe(\))195 2560 +y Ft(Reinitialize)d(Readline's)g(idea)h(of)g(the)g(terminal)e(settings) +h(using)h Fi(terminal)p 1490 2560 14 2 v 19 w(name)i +Ft(as)e(the)g(termi-)195 2615 y(nal)j(t)o(yp)q(e)h(\(e.g.,)f +Fs(vt100)p Ft(\).)21 b(If)16 b Fi(terminal)p 878 2615 +V 19 w(name)i Ft(is)e Fs(NULL)p Ft(,)f(the)h(v)m(alue)g(of)f(the)h +Fs(TERM)g Ft(en)o(vironmen)o(t)195 2670 y(v)m(ariable)f(is)f(used.)p +eop end +%%Page: 36 40 +TeXDict begin 36 39 bop 75 -58 a Ft(36)1299 b(GNU)15 +b(Readline)g(Library)75 149 y Fh(2.4.10)29 b(Utilit)n(y)22 +b(F)-5 b(unctions)1675 272 y Ft([F)l(unction])-1801 b +Fg(void)20 b Ff(rl)p 243 272 18 3 v 24 w(replace)p 444 +272 V 26 w(line)i Fe(\()p Fs(const)15 b(char)f(*text,)g(int)h +(clear_undo)p Fe(\))195 327 y Ft(Replace)20 b(the)g(con)o(ten)o(ts)f (of)g Fs(rl_line_buffer)f Ft(with)h Fi(text)p Ft(.)33 b(The)20 b(p)q(oin)o(t)f(and)h(mark)f(are)h(pre-)195 -1240 y(serv)o(ed,)13 b(if)f(p)q(ossible.)19 b(If)13 b -Fi(clear)p 712 1240 14 2 v 20 w(undo)i Ft(is)d(non-zero,)i(the)e(undo)i -(list)d(asso)q(ciated)h(with)g(the)h(curren)o(t)195 1295 -y(line)i(is)g(cleared.)1675 1382 y([F)l(unction])-1801 -b Fg(int)20 b Ff(rl)p 217 1382 18 3 v 24 w(extend)p 409 -1382 V 26 w(line)p 525 1382 V 25 w(bu\013er)j Fe(\()p -Fs(int)14 b(len)p Fe(\))195 1436 y Ft(Ensure)h(that)g -Fs(rl_line_buffer)e Ft(has)i(enough)g(space)h(to)e(hold)h -Fi(len)g Ft(c)o(haracters,)f(p)q(ossibly)g(real-)195 -1491 y(lo)q(cating)g(it)g(if)h(necessary)l(.)1675 1578 -y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p 217 1578 -V 24 w(initialize)j Fe(\()p Fs(void)p Fe(\))195 1633 -y Ft(Initialize)17 b(or)h(re-initialize)f(Readline's)h(in)o(ternal)g +382 y(serv)o(ed,)13 b(if)f(p)q(ossible.)19 b(If)13 b +Fi(clear)p 712 382 14 2 v 20 w(undo)i Ft(is)d(non-zero,)i(the)e(undo)i +(list)d(asso)q(ciated)h(with)g(the)h(curren)o(t)195 437 +y(line)i(is)g(cleared.)1675 531 y([F)l(unction])-1801 +b Fg(int)20 b Ff(rl)p 217 531 18 3 v 24 w(extend)p 409 +531 V 26 w(line)p 525 531 V 25 w(bu\013er)j Fe(\()p Fs(int)14 +b(len)p Fe(\))195 586 y Ft(Ensure)h(that)g Fs(rl_line_buffer)e +Ft(has)i(enough)g(space)h(to)e(hold)h Fi(len)g Ft(c)o(haracters,)f(p)q +(ossibly)g(real-)195 640 y(lo)q(cating)g(it)g(if)h(necessary)l(.)1675 +734 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p 217 734 +V 24 w(initialize)j Fe(\()p Fs(void)p Fe(\))195 789 y +Ft(Initialize)17 b(or)h(re-initialize)f(Readline's)h(in)o(ternal)g (state.)28 b(It's)18 b(not)g(strictly)f(necessary)i(to)f(call)195 -1688 y(this;)c Fs(readline\(\))g Ft(calls)g(it)h(b)q(efore)g(reading)g -(an)o(y)g(input.)1675 1775 y([F)l(unction])-1801 b Fg(int)20 -b Ff(rl)p 217 1775 V 24 w(ding)i Fe(\()p Fs(void)p Fe(\))195 -1829 y Ft(Ring)15 b(the)g(terminal)f(b)q(ell,)h(ob)q(eying)g(the)h -(setting)e(of)h Fs(bell-style)p Ft(.)1675 1916 y([F)l(unction])-1801 -b Fg(int)20 b Ff(rl)p 217 1916 V 24 w(alphab)r(etic)j -Fe(\()p Fs(int)14 b(c)p Fe(\))195 1971 y Ft(Return)i(1)f(if)f +844 y(this;)c Fs(readline\(\))g Ft(calls)g(it)h(b)q(efore)g(reading)g +(an)o(y)g(input.)1675 938 y([F)l(unction])-1801 b Fg(int)20 +b Ff(rl)p 217 938 V 24 w(ding)i Fe(\()p Fs(void)p Fe(\))195 +993 y Ft(Ring)15 b(the)g(terminal)f(b)q(ell,)h(ob)q(eying)g(the)h +(setting)e(of)h Fs(bell-style)p Ft(.)1675 1087 y([F)l(unction])-1801 +b Fg(int)20 b Ff(rl)p 217 1087 V 24 w(alphab)r(etic)j +Fe(\()p Fs(int)14 b(c)p Fe(\))195 1142 y Ft(Return)i(1)f(if)f Fi(c)k Ft(is)d(an)g(alphab)q(etic)g(c)o(haracter.)1675 -2058 y([F)l(unction])-1801 b Fg(void)20 b Ff(rl)p 243 -2058 V 24 w(displa)n(y)p 442 2058 V 25 w(matc)n(h)p 620 -2058 V 26 w(list)i Fe(\()p Fs(char)15 b(**matches,)e(int)i(len,)g(int)g -(max)p Fe(\))195 2113 y Ft(A)i(con)o(v)o(enience)h(function)f(for)g +1236 y([F)l(unction])-1801 b Fg(void)20 b Ff(rl)p 243 +1236 V 24 w(displa)n(y)p 442 1236 V 25 w(matc)n(h)p 620 +1236 V 26 w(list)i Fe(\()p Fs(char)15 b(**matches,)e(int)i(len,)g(int)g +(max)p Fe(\))195 1291 y Ft(A)i(con)o(v)o(enience)h(function)f(for)g (displa)o(ying)f(a)h(list)f(of)g(strings)g(in)i(columnar)e(format)g(on) -h(Read-)195 2167 y(line's)f(output)h(stream.)23 b Fs(matches)16 +h(Read-)195 1345 y(line's)f(output)h(stream.)23 b Fs(matches)16 b Ft(is)g(the)h(list)f(of)g(strings,)g(in)g(argv)g(format,)g(suc)o(h)h -(as)f(a)h(list)e(of)195 2222 y(completion)c(matc)o(hes.)19 +(as)f(a)h(list)e(of)195 1400 y(completion)c(matc)o(hes.)19 b Fs(len)11 b Ft(is)h(the)g(n)o(um)o(b)q(er)h(of)e(strings)g(in)h Fs(matches)p Ft(,)g(and)g Fs(max)g Ft(is)f(the)i(length)e(of)195 -2277 y(the)i(longest)f(string)g(in)h Fs(matches)p Ft(.)19 +1455 y(the)i(longest)f(string)g(in)h Fs(matches)p Ft(.)19 b(This)12 b(function)h(uses)g(the)h(setting)e(of)g Fs -(print-completions-)195 2332 y(horizontally)k Ft(to)i(select)g(ho)o(w)f +(print-completions-)195 1510 y(horizontally)k Ft(to)i(select)g(ho)o(w)f (the)i(matc)o(hes)e(are)h(displa)o(y)o(ed)f(\(see)i(Section)f(1.3.1)e -([Readline)195 2387 y(Init)f(File)f(Syn)o(tax],)g(page)h(4\).)137 -2474 y(The)i(follo)o(wing)c(are)j(implemen)o(ted)g(as)g(macros,)f +([Readline)195 1565 y(Init)f(File)f(Syn)o(tax],)g(page)h(4\).)137 +1659 y(The)i(follo)o(wing)c(are)j(implemen)o(ted)g(as)g(macros,)f (de\014ned)i(in)f Fs(chardefs.h)p Ft(.)21 b(Applications)15 -b(should)75 2528 y(refrain)f(from)h(using)g(them.)1675 -2615 y([F)l(unction])-1801 b Fg(int)p 177 2615 V 45 w -Ff(rl)p 242 2615 V 24 w(upp)r(ercase)p 516 2615 V 25 -w(p)22 b Fe(\()p Fs(int)15 b(c)p Fe(\))195 2670 y Ft(Return)h(1)f(if)f -Fi(c)k Ft(is)d(an)g(upp)q(ercase)i(alphab)q(etic)d(c)o(haracter.)p -eop end -%%Page: 37 41 -TeXDict begin 37 40 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14 -b(with)g(GNU)h(Readline)842 b(37)1675 149 y([F)l(unction])-1801 -b Fg(int)p 177 149 18 3 v 45 w Ff(rl)p 242 149 V 24 w(lo)n(w)n(ercase)p -500 149 V 26 w(p)23 b Fe(\()p Fs(int)14 b(c)p Fe(\))195 -204 y Ft(Return)i(1)f(if)f Fi(c)k Ft(is)d(a)g(lo)o(w)o(ercase)f(alphab) -q(etic)h(c)o(haracter.)1675 296 y([F)l(unction])-1801 -b Fg(int)p 177 296 V 45 w Ff(rl)p 242 296 V 24 w(digit)p -381 296 V 25 w(p)23 b Fe(\()p Fs(int)14 b(c)p Fe(\))195 -351 y Ft(Return)i(1)f(if)f Fi(c)k Ft(is)d(a)g(n)o(umeric)g(c)o -(haracter.)1675 442 y([F)l(unction])-1801 b Fg(int)p -177 442 V 45 w Ff(rl)p 242 442 V 24 w(to)p 317 442 V -26 w(upp)r(er)21 b Fe(\()p Fs(int)15 b(c)p Fe(\))195 -497 y Ft(If)d Fi(c)j Ft(is)c(a)h(lo)o(w)o(ercase)e(alphab)q(etic)i(c)o +b(should)75 1713 y(refrain)f(from)h(using)g(them.)1675 +1807 y([F)l(unction])-1801 b Fg(int)p 177 1807 V 45 w +Ff(rl)p 242 1807 V 24 w(upp)r(ercase)p 516 1807 V 25 +w(p)22 b Fe(\()p Fs(int)15 b(c)p Fe(\))195 1862 y Ft(Return)h(1)f(if)f +Fi(c)k Ft(is)d(an)g(upp)q(ercase)i(alphab)q(etic)d(c)o(haracter.)1675 +1956 y([F)l(unction])-1801 b Fg(int)p 177 1956 V 45 w +Ff(rl)p 242 1956 V 24 w(lo)n(w)n(ercase)p 500 1956 V +26 w(p)23 b Fe(\()p Fs(int)14 b(c)p Fe(\))195 2011 y +Ft(Return)i(1)f(if)f Fi(c)k Ft(is)d(a)g(lo)o(w)o(ercase)f(alphab)q +(etic)h(c)o(haracter.)1675 2105 y([F)l(unction])-1801 +b Fg(int)p 177 2105 V 45 w Ff(rl)p 242 2105 V 24 w(digit)p +381 2105 V 25 w(p)23 b Fe(\()p Fs(int)14 b(c)p Fe(\))195 +2160 y Ft(Return)i(1)f(if)f Fi(c)k Ft(is)d(a)g(n)o(umeric)g(c)o +(haracter.)1675 2254 y([F)l(unction])-1801 b Fg(int)p +177 2254 V 45 w Ff(rl)p 242 2254 V 24 w(to)p 317 2254 +V 26 w(upp)r(er)21 b Fe(\()p Fs(int)15 b(c)p Fe(\))195 +2309 y Ft(If)d Fi(c)j Ft(is)c(a)h(lo)o(w)o(ercase)e(alphab)q(etic)i(c)o (haracter,)f(return)h(the)g(corresp)q(onding)g(upp)q(ercase)h(c)o -(haracter.)1675 589 y([F)l(unction])-1801 b Fg(int)p -177 589 V 45 w Ff(rl)p 242 589 V 24 w(to)p 317 589 V -26 w(lo)n(w)n(er)23 b Fe(\()p Fs(int)14 b(c)p Fe(\))195 -644 y Ft(If)h Fi(c)i Ft(is)d(an)g(upp)q(ercase)i(alphab)q(etic)e(c)o +(haracter.)1675 2403 y([F)l(unction])-1801 b Fg(int)p +177 2403 V 45 w Ff(rl)p 242 2403 V 24 w(to)p 317 2403 +V 26 w(lo)n(w)n(er)23 b Fe(\()p Fs(int)14 b(c)p Fe(\))195 +2458 y Ft(If)h Fi(c)i Ft(is)d(an)g(upp)q(ercase)i(alphab)q(etic)e(c)o (haracter,)g(return)g(the)h(corresp)q(onding)f(lo)o(w)o(ercase)f(c)o -(harac-)195 699 y(ter.)1675 790 y([F)l(unction])-1801 -b Fg(int)p 177 790 V 45 w Ff(rl)p 242 790 V 24 w(digit)p -381 790 V 25 w(v)m(alue)23 b Fe(\()p Fs(int)14 b(c)p -Fe(\))195 845 y Ft(If)h Fi(c)k Ft(is)14 b(a)h(n)o(um)o(b)q(er,)g -(return)g(the)h(v)m(alue)f(it)g(represen)o(ts.)75 957 -y Fh(2.4.11)29 b(Miscellaneous)22 b(F)-5 b(unctions)1675 -1079 y Ft([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p 217 -1079 V 24 w(macro)p 395 1079 V 25 w(bind)i Fe(\()p Fs(const)14 -b(char)h(*keyseq,)f(const)g(char)h(*macro,)f(Keymap)283 -1133 y(map)p Fe(\))195 1188 y Ft(Bind)e(the)g(k)o(ey)f(sequence)i -Fi(k)o(eyseq)g Ft(to)e(in)o(v)o(ok)o(e)f(the)i(macro)f +(harac-)195 2512 y(ter.)1675 2606 y([F)l(unction])-1801 +b Fg(int)p 177 2606 V 45 w Ff(rl)p 242 2606 V 24 w(digit)p +381 2606 V 25 w(v)m(alue)23 b Fe(\()p Fs(int)14 b(c)p +Fe(\))195 2661 y Ft(If)h Fi(c)k Ft(is)14 b(a)h(n)o(um)o(b)q(er,)g +(return)g(the)h(v)m(alue)f(it)g(represen)o(ts.)p eop +end +%%Page: 37 41 +TeXDict begin 37 40 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14 +b(with)g(GNU)h(Readline)842 b(37)75 149 y Fh(2.4.11)29 +b(Miscellaneous)22 b(F)-5 b(unctions)1675 280 y Ft([F)l(unction])-1801 +b Fg(int)20 b Ff(rl)p 217 280 18 3 v 24 w(macro)p 395 +280 V 25 w(bind)i Fe(\()p Fs(const)14 b(char)h(*keyseq,)f(const)g(char) +h(*macro,)f(Keymap)283 335 y(map)p Fe(\))195 390 y Ft(Bind)e(the)g(k)o +(ey)f(sequence)i Fi(k)o(eyseq)g Ft(to)e(in)o(v)o(ok)o(e)f(the)i(macro)f Fi(macro)p Ft(.)18 b(The)12 b(binding)f(is)g(p)q(erformed)h(in)195 -1243 y Fi(map)p Ft(.)19 b(When)14 b Fi(k)o(eyseq)h Ft(is)e(in)o(v)o(ok) -o(ed,)g(the)h Fi(macro)i Ft(will)c(b)q(e)i(inserted)g(in)o(to)f(the)h -(line.)19 b(This)13 b(function)195 1298 y(is)i(deprecated;)g(use)h -Fs(rl_generic_bind\(\))d Ft(instead.)1675 1389 y([F)l(unction])-1801 -b Fg(void)20 b Ff(rl)p 243 1389 V 24 w(macro)p 421 1389 +445 y Fi(map)p Ft(.)19 b(When)14 b Fi(k)o(eyseq)h Ft(is)e(in)o(v)o(ok)o +(ed,)g(the)h Fi(macro)i Ft(will)c(b)q(e)i(inserted)g(in)o(to)f(the)h +(line.)19 b(This)13 b(function)195 500 y(is)i(deprecated;)g(use)h +Fs(rl_generic_bind\(\))d Ft(instead.)1675 610 y([F)l(unction])-1801 +b Fg(void)20 b Ff(rl)p 243 610 V 24 w(macro)p 421 610 V 25 w(dump)r(er)h Fe(\()p Fs(int)15 b(readable)p Fe(\))195 -1444 y Ft(Prin)o(t)e(the)g(k)o(ey)h(sequences)g(b)q(ound)h(to)e(macros) -g(and)g(their)g(v)m(alues,)h(using)f(the)h(curren)o(t)g(k)o(eymap,)195 -1499 y(to)h Fs(rl_outstream)p Ft(.)k(If)d Fi(readable)i +665 y Ft(Prin)o(t)e(the)g(k)o(ey)h(sequences)g(b)q(ound)h(to)e(macros)g +(and)g(their)g(v)m(alues,)h(using)f(the)h(curren)o(t)g(k)o(eymap,)195 +719 y(to)h Fs(rl_outstream)p Ft(.)k(If)d Fi(readable)i Ft(is)d(non-zero,)h(the)g(list)e(is)h(formatted)g(in)g(suc)o(h)h(a)f(w) -o(a)o(y)g(that)g(it)195 1554 y(can)g(b)q(e)h(made)f(part)g(of)g(an)g -Fs(inputrc)f Ft(\014le)h(and)h(re-read.)1675 1646 y([F)l(unction])-1801 -b Fg(int)20 b Ff(rl)p 217 1646 V 24 w(v)m(ariable)p 438 -1646 V 25 w(bind)i Fe(\()p Fs(const)14 b(char)h(*variable,)e(const)i -(char)f(*value)p Fe(\))195 1700 y Ft(Mak)o(e)g(the)g(Readline)h(v)m +o(a)o(y)g(that)g(it)195 774 y(can)g(b)q(e)h(made)f(part)g(of)g(an)g +Fs(inputrc)f Ft(\014le)h(and)h(re-read.)1675 884 y([F)l(unction])-1801 +b Fg(int)20 b Ff(rl)p 217 884 V 24 w(v)m(ariable)p 438 +884 V 25 w(bind)i Fe(\()p Fs(const)14 b(char)h(*variable,)e(const)i +(char)f(*value)p Fe(\))195 939 y Ft(Mak)o(e)g(the)g(Readline)h(v)m (ariable)f Fi(v)m(ariable)i Ft(ha)o(v)o(e)f Fi(v)m(alue)p Ft(.)k(This)c(b)q(eha)o(v)o(es)f(as)g(if)g(the)h(readline)f(com-)195 -1755 y(mand)g(`)p Fs(set)h Fl(variable)k(value)5 b Ft(')14 +994 y(mand)g(`)p Fs(set)h Fl(variable)k(value)5 b Ft(')14 b(had)g(b)q(een)i(executed)f(in)g(an)f Fs(inputrc)f Ft(\014le)i(\(see)f -(Section)h(1.3.1)195 1810 y([Readline)g(Init)g(File)g(Syn)o(tax],)f -(page)h(4\).)1675 1902 y([F)l(unction])-1801 b Fg(char)20 -b(*)f Ff(rl)p 288 1902 V 25 w(v)m(ariable)p 510 1902 +(Section)h(1.3.1)195 1049 y([Readline)g(Init)g(File)g(Syn)o(tax],)f +(page)h(4\).)1675 1159 y([F)l(unction])-1801 b Fg(char)20 +b(*)f Ff(rl)p 288 1159 V 25 w(v)m(ariable)p 510 1159 V 24 w(v)m(alue)k Fe(\()p Fs(const)14 b(char)g(*variable)p -Fe(\))195 1956 y Ft(Return)h(a)g(string)e(represen)o(ting)h(the)h(v)m +Fe(\))195 1214 y Ft(Return)h(a)g(string)e(represen)o(ting)h(the)h(v)m (alue)g(of)f(the)h(Readline)g(v)m(ariable)f Fi(v)m(ariable)p -Ft(.)19 b(F)l(or)14 b(b)q(o)q(olean)195 2011 y(v)m(ariables,)g(this)h +Ft(.)19 b(F)l(or)14 b(b)q(o)q(olean)195 1269 y(v)m(ariables,)g(this)h (string)f(is)h(either)g(`)p Fs(on)p Ft(')f(or)g(`)p Fs(off)p -Ft('.)1675 2103 y([F)l(unction])-1801 b Fg(void)20 b -Ff(rl)p 243 2103 V 24 w(v)m(ariable)p 464 2103 V 25 w(dump)r(er)h -Fe(\()p Fs(int)15 b(readable)p Fe(\))195 2158 y Ft(Prin)o(t)e(the)i +Ft('.)1675 1379 y([F)l(unction])-1801 b Fg(void)20 b +Ff(rl)p 243 1379 V 24 w(v)m(ariable)p 464 1379 V 25 w(dump)r(er)h +Fe(\()p Fs(int)15 b(readable)p Fe(\))195 1433 y Ft(Prin)o(t)e(the)i (readline)f(v)m(ariable)f(names)i(and)f(their)g(curren)o(t)g(v)m(alues) h(to)e Fs(rl_outstream)p Ft(.)18 b(If)d Fi(read-)195 -2213 y(able)k Ft(is)e(non-zero,)g(the)g(list)f(is)h(formatted)f(in)g +1488 y(able)k Ft(is)e(non-zero,)g(the)g(list)f(is)h(formatted)f(in)g (suc)o(h)i(a)e(w)o(a)o(y)g(that)h(it)f(can)h(b)q(e)h(made)f(part)f(of)h -(an)195 2267 y Fs(inputrc)d Ft(\014le)h(and)h(re-read.)1675 -2359 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p 217 -2359 V 24 w(set)p 312 2359 V 26 w(paren)p 480 2359 V -24 w(blink)p 630 2359 V 25 w(timeout)j Fe(\()p Fs(int)14 -b(u)p Fe(\))195 2414 y Ft(Set)f(the)f(time)g(in)o(terv)m(al)g(\(in)g +(an)195 1543 y Fs(inputrc)d Ft(\014le)h(and)h(re-read.)1675 +1653 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p 217 +1653 V 24 w(set)p 312 1653 V 26 w(paren)p 480 1653 V +24 w(blink)p 630 1653 V 25 w(timeout)j Fe(\()p Fs(int)14 +b(u)p Fe(\))195 1708 y Ft(Set)f(the)f(time)g(in)o(terv)m(al)g(\(in)g (microseconds\))g(that)g(Readline)h(w)o(aits)e(when)i(sho)o(wing)e(a)i -(balancing)195 2469 y(c)o(haracter)h(when)i Fs(blink-matching-paren)d -Ft(has)i(b)q(een)h(enabled.)1675 2560 y([F)l(unction])-1801 -b Fg(char)20 b(*)f Ff(rl)p 288 2560 V 25 w(get)p 390 -2560 V 25 w(termcap)k Fe(\()p Fs(const)14 b(char)h(*cap)p -Fe(\))195 2615 y Ft(Retriev)o(e)e(the)h(string)e(v)m(alue)i(of)f(the)h +(balancing)195 1763 y(c)o(haracter)h(when)i Fs(blink-matching-paren)d +Ft(has)i(b)q(een)h(enabled.)1675 1873 y([F)l(unction])-1801 +b Fg(char)20 b(*)f Ff(rl)p 288 1873 V 25 w(get)p 390 +1873 V 25 w(termcap)k Fe(\()p Fs(const)14 b(char)h(*cap)p +Fe(\))195 1928 y Ft(Retriev)o(e)e(the)h(string)e(v)m(alue)i(of)f(the)h (termcap)f(capabilit)o(y)f Fi(cap)p Ft(.)19 b(Readline)14 -b(fetc)o(hes)g(the)f(termcap)195 2670 y(en)o(try)j(for)h(the)f(curren)o +b(fetc)o(hes)g(the)f(termcap)195 1983 y(en)o(try)j(for)h(the)f(curren)o (t)h(terminal)f(name)g(and)h(uses)g(those)g(capabilities)e(to)h(mo)o(v) -o(e)g(around)h(the)p eop end -%%Page: 38 42 -TeXDict begin 38 41 bop 75 -58 a Ft(38)1299 b(GNU)15 -b(Readline)g(Library)195 149 y(screen)c(line)f(and)h(p)q(erform)f +o(e)g(around)h(the)195 2037 y(screen)11 b(line)f(and)h(p)q(erform)f (other)g(terminal-sp)q(eci\014c)h(op)q(erations,)f(lik)o(e)g(erasing)f -(a)i(line.)18 b(Readline)195 204 y(do)q(es)g(not)f(use)h(all)e(of)h(a)g -(terminal's)f(capabilities,)g(and)i(this)f(function)g(will)f(return)i -(v)m(alues)g(for)195 259 y(only)d(those)g(capabilities)e(Readline)j -(uses.)75 373 y Fh(2.4.12)29 b(Alternate)21 b(In)n(terface)137 -495 y Ft(An)i(alternate)e(in)o(terface)h(is)g(a)o(v)m(ailable)f(to)g +(a)i(line.)18 b(Readline)195 2092 y(do)q(es)g(not)f(use)h(all)e(of)h(a) +g(terminal's)f(capabilities,)g(and)i(this)f(function)g(will)f(return)i +(v)m(alues)g(for)195 2147 y(only)d(those)g(capabilities)e(Readline)j +(uses.)75 2277 y Fh(2.4.12)29 b(Alternate)21 b(In)n(terface)137 +2408 y Ft(An)i(alternate)e(in)o(terface)h(is)g(a)o(v)m(ailable)f(to)g (plain)h Fs(readline\(\))p Ft(.)40 b(Some)22 b(applications)f(need)j -(to)75 550 y(in)o(terlea)o(v)o(e)13 b(k)o(eyb)q(oard)h(I/O)h(with)f +(to)75 2463 y(in)o(terlea)o(v)o(e)13 b(k)o(eyb)q(oard)h(I/O)h(with)f (\014le,)h(device,)f(or)g(windo)o(w)g(system)g(I/O,)h(t)o(ypically)e(b) -o(y)h(using)g(a)h(main)75 605 y(lo)q(op)e(to)h Fs(select\(\))e +o(y)h(using)g(a)h(main)75 2518 y(lo)q(op)e(to)h Fs(select\(\))e Ft(on)i(v)m(arious)f(\014le)h(descriptors.)19 b(T)l(o)14 b(accomo)q(date)f(this)g(need,)i(readline)e(can)h(also)f(b)q(e)75 -660 y(in)o(v)o(ok)o(ed)i(as)g(a)g(`callbac)o(k')f(function)i(from)e(an) -i(ev)o(en)o(t)f(lo)q(op.)21 b(There)16 b(are)f(functions)g(a)o(v)m -(ailable)g(to)f(mak)o(e)75 715 y(this)h(easy)l(.)1675 -808 y([F)l(unction])-1801 b Fg(void)20 b Ff(rl)p 243 -808 18 3 v 24 w(callbac)n(k)p 465 808 V 27 w(handler)p -682 808 V 24 w(install)i Fe(\()p Fs(const)14 b(char)h(*prompt,)283 -863 y(rl_vcpfunc_t)e(*lhandler)p Fe(\))195 918 y Ft(Set)f(up)h(the)g -(terminal)e(for)h(readline)g(I/O)h(and)f(displa)o(y)g(the)g(initial)f -(expanded)i(v)m(alue)g(of)f Fi(prompt)p Ft(.)195 973 -y(Sa)o(v)o(e)j(the)h(v)m(alue)g(of)g Fi(lhandler)j Ft(to)c(use)h(as)f -(a)h(function)g(to)f(call)g(when)h(a)g(complete)f(line)h(of)f(input)195 -1027 y(has)g(b)q(een)h(en)o(tered.)21 b(The)15 b(function)g(tak)o(es)f -(the)i(text)e(of)h(the)g(line)g(as)g(an)g(argumen)o(t.)1675 -1121 y([F)l(unction])-1801 b Fg(void)20 b Ff(rl)p 243 -1121 V 24 w(callbac)n(k)p 465 1121 V 27 w(read)p 602 -1121 V 24 w(c)n(har)j Fe(\()p Fs(void)p Fe(\))195 1176 -y Ft(Whenev)o(er)17 b(an)g(application)e(determines)i(that)f(k)o(eyb)q -(oard)h(input)g(is)f(a)o(v)m(ailable,)g(it)g(should)h(call)195 -1231 y Fs(rl_callback_read_char\(\))p Ft(,)8 b(whic)o(h)j(will)e(read)i +2572 y(in)o(v)o(ok)o(ed)i(as)g(a)g(`callbac)o(k')f(function)i(from)e +(an)i(ev)o(en)o(t)f(lo)q(op.)21 b(There)16 b(are)f(functions)g(a)o(v)m +(ailable)g(to)f(mak)o(e)75 2627 y(this)h(easy)l(.)p eop +end +%%Page: 38 42 +TeXDict begin 38 41 bop 75 -58 a Ft(38)1299 b(GNU)15 +b(Readline)g(Library)1675 149 y([F)l(unction])-1801 b +Fg(void)20 b Ff(rl)p 243 149 18 3 v 24 w(callbac)n(k)p +465 149 V 27 w(handler)p 682 149 V 24 w(install)i Fe(\()p +Fs(const)14 b(char)h(*prompt,)283 204 y(rl_vcpfunc_t)e(*lhandler)p +Fe(\))195 259 y Ft(Set)f(up)h(the)g(terminal)e(for)h(readline)g(I/O)h +(and)f(displa)o(y)g(the)g(initial)f(expanded)i(v)m(alue)g(of)f +Fi(prompt)p Ft(.)195 314 y(Sa)o(v)o(e)j(the)h(v)m(alue)g(of)g +Fi(lhandler)j Ft(to)c(use)h(as)f(a)h(function)g(to)f(call)g(when)h(a)g +(complete)f(line)h(of)f(input)195 369 y(has)g(b)q(een)h(en)o(tered.)21 +b(The)15 b(function)g(tak)o(es)f(the)i(text)e(of)h(the)g(line)g(as)g +(an)g(argumen)o(t.)1675 463 y([F)l(unction])-1801 b Fg(void)20 +b Ff(rl)p 243 463 V 24 w(callbac)n(k)p 465 463 V 27 w(read)p +602 463 V 24 w(c)n(har)j Fe(\()p Fs(void)p Fe(\))195 +517 y Ft(Whenev)o(er)17 b(an)g(application)e(determines)i(that)f(k)o +(eyb)q(oard)h(input)g(is)f(a)o(v)m(ailable,)g(it)g(should)h(call)195 +572 y Fs(rl_callback_read_char\(\))p Ft(,)8 b(whic)o(h)j(will)e(read)i (the)g(next)g(c)o(haracter)f(from)g(the)h(curren)o(t)g(input)195 -1286 y(source.)38 b(If)21 b(that)g(c)o(haracter)f(completes)h(the)g +627 y(source.)38 b(If)21 b(that)g(c)o(haracter)f(completes)h(the)g (line,)h Fs(rl_callback_read_char)c Ft(will)i(in)o(v)o(ok)o(e)195 -1340 y(the)e Fi(lhandler)i Ft(function)e(sa)o(v)o(ed)f(b)o(y)h +682 y(the)e Fi(lhandler)i Ft(function)e(sa)o(v)o(ed)f(b)o(y)h Fs(rl_callback_handler_insta)o(ll)d Ft(to)i(pro)q(cess)h(the)g(line.) -195 1395 y(Before)13 b(calling)f(the)i Fi(lhandler)i -Ft(function,)d(the)h(terminal)e(settings)g(are)h(reset)g(to)g(the)g(v)m -(alues)h(they)195 1450 y(had)h(b)q(efore)g(calling)f -Fs(rl_callback_handler_insta)o(ll)p Ft(.)j(If)e(the)g -Fi(lhandler)j Ft(function)c(returns,)195 1505 y(the)e(terminal)g -(settings)f(are)h(mo)q(di\014ed)h(for)e(Readline's)h(use)h(again.)18 -b Fs(EOF)12 b Ft(is)g(indicated)g(b)o(y)g(calling)195 -1560 y Fi(lhandler)18 b Ft(with)d(a)g Fs(NULL)f Ft(line.)1675 -1653 y([F)l(unction])-1801 b Fg(void)20 b Ff(rl)p 243 -1653 V 24 w(callbac)n(k)p 465 1653 V 27 w(handler)p 682 -1653 V 24 w(remo)n(v)n(e)j Fe(\()p Fs(void)p Fe(\))195 -1708 y Ft(Restore)c(the)f(terminal)g(to)f(its)h(initial)f(state)h(and)g +195 737 y(Before)13 b(calling)f(the)i Fi(lhandler)i Ft(function,)d(the) +h(terminal)e(settings)g(are)h(reset)g(to)g(the)g(v)m(alues)h(they)195 +791 y(had)h(b)q(efore)g(calling)f Fs(rl_callback_handler_insta)o(ll)p +Ft(.)j(If)e(the)g Fi(lhandler)j Ft(function)c(returns,)195 +846 y(the)e(terminal)g(settings)f(are)h(mo)q(di\014ed)h(for)e +(Readline's)h(use)h(again.)18 b Fs(EOF)12 b Ft(is)g(indicated)g(b)o(y)g +(calling)195 901 y Fi(lhandler)18 b Ft(with)d(a)g Fs(NULL)f +Ft(line.)1675 995 y([F)l(unction])-1801 b Fg(void)20 +b Ff(rl)p 243 995 V 24 w(callbac)n(k)p 465 995 V 27 w(handler)p +682 995 V 24 w(remo)n(v)n(e)j Fe(\()p Fs(void)p Fe(\))195 +1050 y Ft(Restore)c(the)f(terminal)g(to)f(its)h(initial)f(state)h(and)g (remo)o(v)o(e)g(the)h(line)f(handler.)30 b(This)18 b(ma)o(y)g(b)q(e)195 -1763 y(called)g(from)f(within)h(a)f(callbac)o(k)h(as)f(w)o(ell)g(as)h +1105 y(called)g(from)f(within)h(a)f(callbac)o(k)h(as)f(w)o(ell)g(as)h (indep)q(enden)o(tly)l(.)30 b(If)19 b(the)f Fi(lhandler)j -Ft(installed)c(b)o(y)195 1818 y Fs(rl_callback_handler_instal)o(l)g +Ft(installed)c(b)o(y)195 1159 y Fs(rl_callback_handler_instal)o(l)g Ft(do)q(es)i(not)g(exit)g(the)h(program,)e(either)h(this)g(function)g -(or)195 1872 y(the)d(function)f(referred)h(to)f(b)o(y)h(the)g(v)m(alue) +(or)195 1214 y(the)d(function)f(referred)h(to)f(b)o(y)h(the)g(v)m(alue) g(of)f Fs(rl_deprep_term_function)d Ft(should)k(b)q(e)g(called)195 -1927 y(b)q(efore)f(the)h(program)e(exits)g(to)h(reset)g(the)g(terminal) -f(settings.)75 2041 y Fh(2.4.13)29 b(A)21 b(Readline)g(Example)137 -2164 y Ft(Here)f(is)f(a)g(function)h(whic)o(h)f(c)o(hanges)g(lo)o(w)o +1269 y(b)q(efore)f(the)h(program)e(exits)g(to)h(reset)g(the)g(terminal) +f(settings.)75 1383 y Fh(2.4.13)29 b(A)21 b(Readline)g(Example)137 +1506 y Ft(Here)f(is)f(a)g(function)h(whic)o(h)f(c)o(hanges)g(lo)o(w)o (ercase)g(c)o(haracters)f(to)h(their)g(upp)q(ercase)i(equiv)m(alen)o -(ts,)75 2218 y(and)e(upp)q(ercase)i(c)o(haracters)d(to)h(lo)o(w)o +(ts,)75 1561 y(and)e(upp)q(ercase)i(c)o(haracters)d(to)h(lo)o(w)o (ercase.)30 b(If)20 b(this)e(function)h(w)o(as)g(b)q(ound)h(to)f(`)p -Fs(M-c)p Ft(',)f(then)i(t)o(yping)75 2273 y(`)p Fs(M-c)p +Fs(M-c)p Ft(',)f(then)i(t)o(yping)75 1616 y(`)p Fs(M-c)p Ft(')12 b(w)o(ould)g(c)o(hange)i(the)f(case)g(of)g(the)g(c)o(haracter)g (under)g(p)q(oin)o(t.)19 b(T)o(yping)13 b(`)p Fs(M-1)h(0)h(M-c)p -Ft(')d(w)o(ould)h(c)o(hange)75 2328 y(the)i(case)g(of)g(the)h(follo)o +Ft(')d(w)o(ould)h(c)o(hange)75 1670 y(the)i(case)g(of)g(the)h(follo)o (wing)c(10)j(c)o(haracters,)f(lea)o(ving)g(the)h(cursor)g(on)g(the)h -(last)e(c)o(haracter)g(c)o(hanged.)195 2396 y Fs(/*)24 +(last)e(c)o(haracter)g(c)o(hanged.)195 1738 y Fs(/*)24 b(Invert)f(the)g(case)g(of)h(the)f(COUNT)h(following)e(characters.)h -(*/)195 2451 y(int)195 2506 y(invert_case_line)f(\(count,)h(key\))314 -2560 y(int)h(count,)f(key;)195 2615 y({)243 2670 y(register)f(int)i -(start,)f(end,)g(i;)p eop end +(*/)195 1793 y(int)195 1848 y(invert_case_line)f(\(count,)h(key\))314 +1903 y(int)h(count,)f(key;)195 1958 y({)243 2012 y(register)f(int)i +(start,)f(end,)g(i;)243 2122 y(start)g(=)h(rl_point;)243 +2232 y(if)f(\(rl_point)g(>=)h(rl_end\))290 2286 y(return)f(\(0\);)243 +2396 y(if)g(\(count)g(<)h(0\))290 2451 y({)338 2506 y(direction)f(=)h +(-1;)338 2560 y(count)f(=)h(-count;)290 2615 y(})243 +2670 y(else)p eop end %%Page: 39 43 TeXDict begin 39 42 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14 -b(with)g(GNU)h(Readline)842 b(39)243 204 y Fs(start)23 -b(=)h(rl_point;)243 314 y(if)f(\(rl_point)g(>=)h(rl_end\))290 -369 y(return)f(\(0\);)243 478 y(if)g(\(count)g(<)h(0\))290 -533 y({)338 588 y(direction)f(=)h(-1;)338 643 y(count)f(=)h(-count;)290 -697 y(})243 752 y(else)290 807 y(direction)f(=)h(1;)243 -917 y(/*)f(Find)h(the)f(end)h(of)f(the)h(range)f(to)g(modify.)g(*/)243 -971 y(end)g(=)h(start)f(+)h(\(count)f(*)h(direction\);)243 -1081 y(/*)f(Force)g(it)h(to)g(be)f(within)g(range.)g(*/)243 -1136 y(if)g(\(end)h(>)f(rl_end\))290 1191 y(end)h(=)g(rl_end;)243 -1245 y(else)f(if)h(\(end)f(<)h(0\))290 1300 y(end)g(=)g(0;)243 -1410 y(if)f(\(start)g(==)h(end\))290 1465 y(return)f(\(0\);)243 -1574 y(if)g(\(start)g(>)h(end\))290 1629 y({)338 1684 -y(int)g(temp)f(=)h(start;)338 1738 y(start)f(=)h(end;)338 -1793 y(end)g(=)f(temp;)290 1848 y(})243 1958 y(/*)g(Tell)h(readline)e -(that)i(we)f(are)h(modifying)e(the)i(line,)314 2012 y(so)g(it)f(will)h -(save)f(the)h(undo)f(information.)f(*/)243 2067 y(rl_modifying)g -(\(start,)h(end\);)243 2177 y(for)g(\(i)h(=)f(start;)h(i)f(!=)h(end;)f -(i++\))290 2232 y({)338 2286 y(if)h(\(_rl_uppercase_p)d -(\(rl_line_buffer[i]\)\))386 2341 y(rl_line_buffer[i])g(=)j -(_rl_to_lower)e(\(rl_line_buffer[i]\);)338 2396 y(else)h(if)h -(\(_rl_lowercase_p)e(\(rl_line_buffer[i]\)\))386 2451 -y(rl_line_buffer[i])f(=)j(_rl_to_upper)e(\(rl_line_buffer[i]\);)290 -2506 y(})243 2560 y(/*)h(Move)h(point)f(to)g(on)h(top)f(of)h(the)f -(last)h(character)e(changed.)h(*/)243 2615 y(rl_point)f(=)i -(\(direction)f(==)g(1\))h(?)g(end)f(-)h(1)g(:)f(start;)243 -2670 y(return)g(\(0\);)p eop end +b(with)g(GNU)h(Readline)842 b(39)290 149 y Fs(direction)23 +b(=)h(1;)243 259 y(/*)f(Find)h(the)f(end)h(of)f(the)h(range)f(to)g +(modify.)g(*/)243 314 y(end)g(=)h(start)f(+)h(\(count)f(*)h +(direction\);)243 423 y(/*)f(Force)g(it)h(to)g(be)f(within)g(range.)g +(*/)243 478 y(if)g(\(end)h(>)f(rl_end\))290 533 y(end)h(=)g(rl_end;)243 +588 y(else)f(if)h(\(end)f(<)h(0\))290 643 y(end)g(=)g(0;)243 +752 y(if)f(\(start)g(==)h(end\))290 807 y(return)f(\(0\);)243 +917 y(if)g(\(start)g(>)h(end\))290 971 y({)338 1026 y(int)g(temp)f(=)h +(start;)338 1081 y(start)f(=)h(end;)338 1136 y(end)g(=)f(temp;)290 +1191 y(})243 1300 y(/*)g(Tell)h(readline)e(that)i(we)f(are)h(modifying) +e(the)i(line,)314 1355 y(so)g(it)f(will)h(save)f(the)h(undo)f +(information.)f(*/)243 1410 y(rl_modifying)g(\(start,)h(end\);)243 +1519 y(for)g(\(i)h(=)f(start;)h(i)f(!=)h(end;)f(i++\))290 +1574 y({)338 1629 y(if)h(\(_rl_uppercase_p)d(\(rl_line_buffer[i]\)\)) +386 1684 y(rl_line_buffer[i])g(=)j(_rl_to_lower)e +(\(rl_line_buffer[i]\);)338 1738 y(else)h(if)h(\(_rl_lowercase_p)e +(\(rl_line_buffer[i]\)\))386 1793 y(rl_line_buffer[i])f(=)j +(_rl_to_upper)e(\(rl_line_buffer[i]\);)290 1848 y(})243 +1903 y(/*)h(Move)h(point)f(to)g(on)h(top)f(of)h(the)f(last)h(character) +e(changed.)h(*/)243 1958 y(rl_point)f(=)i(\(direction)f(==)g(1\))h(?)g +(end)f(-)h(1)g(:)f(start;)243 2012 y(return)g(\(0\);)195 +2067 y(})75 2213 y Fr(2.5)33 b(Readline)21 b(Signal)h(Handling)137 +2341 y Ft(Signals)e(are)h(async)o(hronous)f(ev)o(en)o(ts)h(sen)o(t)f +(to)h(a)f(pro)q(cess)h(b)o(y)g(the)g(Unix)g(k)o(ernel,)g(sometimes)f +(on)75 2396 y(b)q(ehalf)g(of)f(another)h(pro)q(cess.)34 +b(They)20 b(are)g(in)o(tended)g(to)f(indicate)h(exceptional)f(ev)o(en)o +(ts,)h(lik)o(e)f(a)h(user)75 2451 y(pressing)15 b(the)g(in)o(terrupt)f +(k)o(ey)h(on)g(his)g(terminal,)e(or)i(a)f(net)o(w)o(ork)g(connection)h +(b)q(eing)g(brok)o(en.)20 b(There)15 b(is)75 2506 y(a)e(class)f(of)h +(signals)f(that)h(can)g(b)q(e)h(sen)o(t)f(to)f(the)i(pro)q(cess)f +(curren)o(tly)g(reading)f(input)i(from)e(the)h(k)o(eyb)q(oard.)75 +2560 y(Since)h(Readline)f(c)o(hanges)h(the)f(terminal)f(attributes)g +(when)i(it)f(is)g(called,)g(it)f(needs)i(to)f(p)q(erform)g(sp)q(ecial) +75 2615 y(pro)q(cessing)h(when)g(suc)o(h)g(a)g(signal)e(is)h(receiv)o +(ed)h(in)g(order)g(to)f(restore)g(the)h(terminal)e(to)h(a)h(sane)g +(state,)e(or)75 2670 y(pro)o(vide)j(application)f(writers)g(with)g +(functions)h(to)g(do)g(so)g(man)o(ually)l(.)p eop end %%Page: 40 44 TeXDict begin 40 43 bop 75 -58 a Ft(40)1299 b(GNU)15 -b(Readline)g(Library)195 149 y Fs(})75 290 y Fr(2.5)33 -b(Readline)21 b(Signal)h(Handling)137 417 y Ft(Signals)e(are)h(async)o -(hronous)f(ev)o(en)o(ts)h(sen)o(t)f(to)h(a)f(pro)q(cess)h(b)o(y)g(the)g -(Unix)g(k)o(ernel,)g(sometimes)f(on)75 471 y(b)q(ehalf)g(of)f(another)h -(pro)q(cess.)34 b(They)20 b(are)g(in)o(tended)g(to)f(indicate)h -(exceptional)f(ev)o(en)o(ts,)h(lik)o(e)f(a)h(user)75 -526 y(pressing)15 b(the)g(in)o(terrupt)f(k)o(ey)h(on)g(his)g(terminal,) -e(or)i(a)f(net)o(w)o(ork)g(connection)h(b)q(eing)g(brok)o(en.)20 -b(There)15 b(is)75 581 y(a)e(class)f(of)h(signals)f(that)h(can)g(b)q(e) -h(sen)o(t)f(to)f(the)i(pro)q(cess)f(curren)o(tly)g(reading)f(input)i -(from)e(the)h(k)o(eyb)q(oard.)75 636 y(Since)h(Readline)f(c)o(hanges)h -(the)f(terminal)f(attributes)g(when)i(it)f(is)g(called,)g(it)f(needs)i -(to)f(p)q(erform)g(sp)q(ecial)75 691 y(pro)q(cessing)h(when)g(suc)o(h)g -(a)g(signal)e(is)h(receiv)o(ed)h(in)g(order)g(to)f(restore)g(the)h -(terminal)e(to)h(a)h(sane)g(state,)e(or)75 745 y(pro)o(vide)j -(application)f(writers)g(with)g(functions)h(to)g(do)g(so)g(man)o(ually) -l(.)137 817 y(Readline)21 b(con)o(tains)e(an)h(in)o(ternal)f(signal)g -(handler)h(that)g(is)g(installed)f(for)g(a)h(n)o(um)o(b)q(er)g(of)g -(signals)75 872 y(\()p Fs(SIGINT)p Ft(,)h Fs(SIGQUIT)p -Ft(,)g Fs(SIGTERM)p Ft(,)g Fs(SIGALRM)p Ft(,)g Fs(SIGTSTP)p -Ft(,)g Fs(SIGTTIN)p Ft(,)h(and)f Fs(SIGTTOU)p Ft(\).)36 -b(When)21 b(one)g(of)75 927 y(these)16 b(signals)f(is)g(receiv)o(ed,)h -(the)g(signal)f(handler)g(will)g(reset)h(the)g(terminal)e(attributes)h -(to)g(those)h(that)75 982 y(w)o(ere)d(in)h(e\013ect)f(b)q(efore)h -Fs(readline\(\))e Ft(w)o(as)h(called,)g(reset)h(the)f(signal)g -(handling)g(to)g(what)g(it)g(w)o(as)g(b)q(efore)75 1036 -y Fs(readline\(\))21 b Ft(w)o(as)h(called,)h(and)g(resend)g(the)g -(signal)e(to)h(the)h(calling)e(application.)41 b(If)23 -b(and)f(when)75 1091 y(the)17 b(calling)f(application's)f(signal)h -(handler)h(returns,)g(Readline)g(will)f(reinitialize)f(the)i(terminal)f -(and)75 1146 y(con)o(tin)o(ue)e(to)f(accept)i(input.)k(When)c(a)e -Fs(SIGINT)h Ft(is)f(receiv)o(ed,)h(the)h(Readline)f(signal)f(handler)h -(p)q(erforms)75 1201 y(some)19 b(additional)f(w)o(ork,)h(whic)o(h)g -(will)f(cause)i(an)o(y)f(partially-en)o(tered)f(line)h(to)f(b)q(e)i(ab) -q(orted)g(\(see)f(the)75 1256 y(description)c(of)f Fs -(rl_free_line_state\(\))f Ft(b)q(elo)o(w\).)137 1328 +b(Readline)g(Library)137 149 y(Readline)21 b(con)o(tains)e(an)h(in)o +(ternal)f(signal)g(handler)h(that)g(is)g(installed)f(for)g(a)h(n)o(um)o +(b)q(er)g(of)g(signals)75 204 y(\()p Fs(SIGINT)p Ft(,)h +Fs(SIGQUIT)p Ft(,)g Fs(SIGTERM)p Ft(,)g Fs(SIGALRM)p +Ft(,)g Fs(SIGTSTP)p Ft(,)g Fs(SIGTTIN)p Ft(,)h(and)f +Fs(SIGTTOU)p Ft(\).)36 b(When)21 b(one)g(of)75 259 y(these)16 +b(signals)f(is)g(receiv)o(ed,)h(the)g(signal)f(handler)g(will)g(reset)h +(the)g(terminal)e(attributes)h(to)g(those)h(that)75 314 +y(w)o(ere)d(in)h(e\013ect)f(b)q(efore)h Fs(readline\(\))e +Ft(w)o(as)h(called,)g(reset)h(the)f(signal)g(handling)g(to)g(what)g(it) +g(w)o(as)g(b)q(efore)75 369 y Fs(readline\(\))21 b Ft(w)o(as)h(called,) +h(and)g(resend)g(the)g(signal)e(to)h(the)h(calling)e(application.)41 +b(If)23 b(and)f(when)75 423 y(the)17 b(calling)f(application's)f +(signal)h(handler)h(returns,)g(Readline)g(will)f(reinitialize)f(the)i +(terminal)f(and)75 478 y(con)o(tin)o(ue)e(to)f(accept)i(input.)k(When)c +(a)e Fs(SIGINT)h Ft(is)f(receiv)o(ed,)h(the)h(Readline)f(signal)f +(handler)h(p)q(erforms)75 533 y(some)19 b(additional)f(w)o(ork,)h(whic) +o(h)g(will)f(cause)i(an)o(y)f(partially-en)o(tered)f(line)h(to)f(b)q(e) +i(ab)q(orted)g(\(see)f(the)75 588 y(description)c(of)f +Fs(rl_free_line_state\(\))f Ft(b)q(elo)o(w\).)137 662 y(There)g(is)e(an)h(additional)f(Readline)i(signal)e(handler,)h(for)g Fs(SIGWINCH)p Ft(,)f(whic)o(h)h(the)g(k)o(ernel)g(sends)h(to)e(a)75 -1382 y(pro)q(cess)k(whenev)o(er)g(the)f(terminal's)f(size)h(c)o(hanges) -g(\(for)g(example,)g(if)g(a)g(user)h(resizes)f(an)g Fs(xterm)p -Ft(\).)19 b(The)75 1437 y(Readline)f Fs(SIGWINCH)f Ft(handler)h(up)q +716 y(pro)q(cess)k(whenev)o(er)g(the)f(terminal's)f(size)h(c)o(hanges)g +(\(for)g(example,)g(if)g(a)g(user)h(resizes)f(an)g Fs(xterm)p +Ft(\).)19 b(The)75 771 y(Readline)f Fs(SIGWINCH)f Ft(handler)h(up)q (dates)g(Readline's)g(in)o(ternal)e(screen)j(size)e(information,)g(and) -h(then)75 1492 y(calls)e(an)o(y)h Fs(SIGWINCH)e Ft(signal)h(handler)h +h(then)75 826 y(calls)e(an)o(y)h Fs(SIGWINCH)e Ft(signal)h(handler)h (the)g(calling)f(application)f(has)i(installed.)24 b(Readline)17 -b(calls)f(the)75 1547 y(application's)g Fs(SIGWINCH)g +b(calls)f(the)75 881 y(application's)g Fs(SIGWINCH)g Ft(signal)h(handler)g(without)g(resetting)g(the)g(terminal)g(to)g(its)f -(original)g(state.)75 1602 y(If)g(the)g(application's)e(signal)h +(original)g(state.)75 936 y(If)g(the)g(application's)e(signal)h (handler)h(do)q(es)h(more)e(than)h(up)q(date)h(its)e(idea)h(of)f(the)h -(terminal)f(size)h(and)75 1656 y(return)f(\(for)f(example,)g(a)g +(terminal)f(size)h(and)75 990 y(return)f(\(for)f(example,)g(a)g Fs(longjmp)g Ft(bac)o(k)h(to)f(a)h(main)f(pro)q(cessing)g(lo)q(op\),)g -(it)g Fn(must)20 b Ft(call)14 b Fs(rl_cleanup_)75 1711 +(it)g Fn(must)20 b Ft(call)14 b Fs(rl_cleanup_)75 1045 y(after_signal\(\))f Ft(\(describ)q(ed)j(b)q(elo)o(w\),)e(to)h(restore) -f(the)h(terminal)f(state.)137 1783 y(Readline)h(pro)o(vides)f(t)o(w)o +f(the)h(terminal)f(state.)137 1119 y(Readline)h(pro)o(vides)f(t)o(w)o (o)f(v)m(ariables)g(that)h(allo)o(w)e(application)h(writers)g(to)h(con) -o(trol)f(whether)i(or)e(not)75 1838 y(it)j(will)f(catc)o(h)h(certain)g +o(trol)f(whether)i(or)e(not)75 1174 y(it)j(will)f(catc)o(h)h(certain)g (signals)g(and)h(act)f(on)g(them)h(when)g(they)f(are)h(receiv)o(ed.)24 -b(It)16 b(is)h(imp)q(ortan)o(t)e(that)75 1893 y(applications)i(c)o +b(It)16 b(is)h(imp)q(ortan)o(t)e(that)75 1229 y(applications)i(c)o (hange)h(the)h(v)m(alues)f(of)g(these)h(v)m(ariables)e(only)h(when)h -(calling)e Fs(readline\(\))p Ft(,)g(not)h(in)g(a)75 1947 +(calling)e Fs(readline\(\))p Ft(,)g(not)h(in)g(a)75 1283 y(signal)c(handler,)h(so)g(Readline's)g(in)o(ternal)f(signal)g(state)g -(is)h(not)g(corrupted.)1685 2049 y([V)l(ariable])-1801 -b Fg(int)20 b Ff(rl)p 217 2049 18 3 v 24 w(catc)n(h)p -371 2049 V 27 w(signals)195 2104 y Ft(If)15 b(this)f(v)m(ariable)f(is)h +(is)h(not)g(corrupted.)1685 1389 y([V)l(ariable])-1801 +b Fg(int)20 b Ff(rl)p 217 1389 18 3 v 24 w(catc)n(h)p +371 1389 V 27 w(signals)195 1444 y Ft(If)15 b(this)f(v)m(ariable)f(is)h (non-zero,)h(Readline)g(will)e(install)f(signal)i(handlers)g(for)g -Fs(SIGINT)p Ft(,)f Fs(SIGQUIT)p Ft(,)195 2159 y Fs(SIGTERM)p +Fs(SIGINT)p Ft(,)f Fs(SIGQUIT)p Ft(,)195 1498 y Fs(SIGTERM)p Ft(,)h Fs(SIGALRM)p Ft(,)g Fs(SIGTSTP)p Ft(,)f Fs(SIGTTIN)p -Ft(,)h(and)i Fs(SIGTTOU)p Ft(.)195 2231 y(The)f(default)g(v)m(alue)h -(of)e Fs(rl_catch_signals)f Ft(is)i(1.)1685 2332 y([V)l(ariable])-1801 -b Fg(int)20 b Ff(rl)p 217 2332 V 24 w(catc)n(h)p 371 -2332 V 27 w(sigwinc)n(h)195 2387 y Ft(If)15 b(this)g(v)m(ariable)g(is)f +Ft(,)h(and)i Fs(SIGTTOU)p Ft(.)195 1572 y(The)f(default)g(v)m(alue)h +(of)e Fs(rl_catch_signals)f Ft(is)i(1.)1685 1677 y([V)l(ariable])-1801 +b Fg(int)20 b Ff(rl)p 217 1677 V 24 w(catc)n(h)p 371 +1677 V 27 w(sigwinc)n(h)195 1732 y Ft(If)15 b(this)g(v)m(ariable)g(is)f (non-zero,)h(Readline)h(will)e(install)f(a)i(signal)f(handler)i(for)e -Fs(SIGWINCH)p Ft(.)195 2459 y(The)h(default)g(v)m(alue)h(of)e -Fs(rl_catch_sigwinch)f Ft(is)i(1.)137 2560 y(If)h(an)f(application)g +Fs(SIGWINCH)p Ft(.)195 1806 y(The)h(default)g(v)m(alue)h(of)e +Fs(rl_catch_sigwinch)f Ft(is)i(1.)137 1911 y(If)h(an)f(application)g (do)q(es)g(not)g(wish)h(to)e(ha)o(v)o(e)h(Readline)h(catc)o(h)g(an)o(y) -f(signals,)f(or)h(to)f(handle)i(signals)75 2615 y(other)j(than)g(those) +f(signals,)f(or)h(to)f(handle)i(signals)75 1966 y(other)j(than)g(those) g(Readline)h(catc)o(hes)f(\()p Fs(SIGHUP)p Ft(,)g(for)g(example\),)g -(Readline)h(pro)o(vides)e(con)o(v)o(enience)75 2670 y(functions)d(to)g +(Readline)h(pro)o(vides)e(con)o(v)o(enience)75 2021 y(functions)d(to)g (do)g(the)g(necessary)g(terminal)f(and)i(in)o(ternal)e(state)g(clean)o -(up)h(up)q(on)h(receipt)f(of)g(a)g(signal.)p eop end +(up)h(up)q(on)h(receipt)f(of)g(a)g(signal.)1675 2126 +y([F)l(unction])-1801 b Fg(void)20 b Ff(rl)p 243 2126 +V 24 w(clean)n(up)p 456 2126 V 26 w(after)p 600 2126 +V 25 w(signal)h Fe(\()p Fs(void)p Fe(\))195 2181 y Ft(This)c(function)f +(will)g(reset)h(the)g(state)f(of)g(the)h(terminal)f(to)g(what)h(it)f(w) +o(as)g(b)q(efore)h Fs(readline\(\))195 2236 y Ft(w)o(as)d(called,)g +(and)h(remo)o(v)o(e)f(the)g(Readline)h(signal)f(handlers)h(for)f(all)f +(signals,)g(dep)q(ending)j(on)f(the)195 2291 y(v)m(alues)g(of)g +Fs(rl_catch_signals)e Ft(and)i Fs(rl_catch_sigwinch)p +Ft(.)1675 2396 y([F)l(unction])-1801 b Fg(void)20 b Ff(rl)p +243 2396 V 24 w(free)p 361 2396 V 25 w(line)p 476 2396 +V 25 w(state)j Fe(\()p Fs(void)p Fe(\))195 2451 y Ft(This)c(will)f +(free)i(an)o(y)f(partial)f(state)h(asso)q(ciated)g(with)g(the)h(curren) +o(t)f(input)h(line)f(\(undo)h(infor-)195 2506 y(mation,)h(an)o(y)g +(partial)f(history)g(en)o(try)l(,)i(an)o(y)f(partially-en)o(tered)f(k)o +(eyb)q(oard)h(macro,)h(and)f(an)o(y)195 2560 y(partially-en)o(tered)h +(n)o(umeric)i(argumen)o(t\).)45 b(This)23 b(should)h(b)q(e)h(called)e +(b)q(efore)i Fs(rl_cleanup_)195 2615 y(after_signal\(\))p +Ft(.)36 b(The)22 b(Readline)g(signal)e(handler)h(for)g +Fs(SIGINT)f Ft(calls)h(this)f(to)h(ab)q(ort)g(the)195 +2670 y(curren)o(t)15 b(input)g(line.)p eop end %%Page: 41 45 TeXDict begin 41 44 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14 b(with)g(GNU)h(Readline)842 b(41)1675 149 y([F)l(unction])-1801 -b Fg(void)20 b Ff(rl)p 243 149 18 3 v 24 w(clean)n(up)p -456 149 V 26 w(after)p 600 149 V 25 w(signal)h Fe(\()p -Fs(void)p Fe(\))195 204 y Ft(This)c(function)f(will)g(reset)h(the)g -(state)f(of)g(the)h(terminal)f(to)g(what)h(it)f(w)o(as)g(b)q(efore)h -Fs(readline\(\))195 259 y Ft(w)o(as)d(called,)g(and)h(remo)o(v)o(e)f -(the)g(Readline)h(signal)f(handlers)h(for)f(all)f(signals,)g(dep)q -(ending)j(on)f(the)195 314 y(v)m(alues)g(of)g Fs(rl_catch_signals)e -Ft(and)i Fs(rl_catch_sigwinch)p Ft(.)1675 422 y([F)l(unction])-1801 -b Fg(void)20 b Ff(rl)p 243 422 V 24 w(free)p 361 422 -V 25 w(line)p 476 422 V 25 w(state)j Fe(\()p Fs(void)p -Fe(\))195 477 y Ft(This)c(will)f(free)i(an)o(y)f(partial)f(state)h -(asso)q(ciated)g(with)g(the)h(curren)o(t)f(input)h(line)f(\(undo)h -(infor-)195 532 y(mation,)h(an)o(y)g(partial)f(history)g(en)o(try)l(,)i -(an)o(y)f(partially-en)o(tered)f(k)o(eyb)q(oard)h(macro,)h(and)f(an)o -(y)195 587 y(partially-en)o(tered)h(n)o(umeric)i(argumen)o(t\).)45 -b(This)23 b(should)h(b)q(e)h(called)e(b)q(efore)i Fs(rl_cleanup_)195 -642 y(after_signal\(\))p Ft(.)36 b(The)22 b(Readline)g(signal)e -(handler)h(for)g Fs(SIGINT)f Ft(calls)h(this)f(to)h(ab)q(ort)g(the)195 -696 y(curren)o(t)15 b(input)g(line.)1675 805 y([F)l(unction])-1801 -b Fg(void)20 b Ff(rl)p 243 805 V 24 w(reset)p 388 805 -V 26 w(after)p 532 805 V 24 w(signal)i Fe(\()p Fs(void)p -Fe(\))195 860 y Ft(This)14 b(will)f(reinitialize)f(the)i(terminal)f +b Fg(void)20 b Ff(rl)p 243 149 18 3 v 24 w(reset)p 388 +149 V 26 w(after)p 532 149 V 24 w(signal)i Fe(\()p Fs(void)p +Fe(\))195 204 y Ft(This)14 b(will)f(reinitialize)f(the)i(terminal)f (and)i(reinstall)e(an)o(y)g(Readline)i(signal)e(handlers,)h(dep)q(end-) -195 915 y(ing)h(on)g(the)g(v)m(alues)h(of)e Fs(rl_catch_signals)f -Ft(and)j Fs(rl_catch_sigwinch)p Ft(.)137 1023 y(If)k(an)g(application)e +195 259 y(ing)h(on)g(the)g(v)m(alues)h(of)e Fs(rl_catch_signals)f +Ft(and)j Fs(rl_catch_sigwinch)p Ft(.)137 351 y(If)k(an)g(application)e (do)q(es)i(not)g(wish)f(Readline)h(to)f(catc)o(h)g Fs(SIGWINCH)p -Ft(,)h(it)f(ma)o(y)g(call)f Fs(rl_resize_)75 1078 y(terminal\(\))12 +Ft(,)h(it)f(ma)o(y)g(call)f Fs(rl_resize_)75 406 y(terminal\(\))12 b Ft(or)h Fs(rl_set_screen_size\(\))e Ft(to)i(force)g(Readline)h(to)f -(up)q(date)h(its)f(idea)g(of)h(the)f(terminal)75 1133 +(up)q(date)h(its)f(idea)g(of)h(the)f(terminal)75 461 y(size)i(when)h(a)f Fs(SIGWINCH)f Ft(is)g(receiv)o(ed.)1675 -1242 y([F)l(unction])-1801 b Fg(void)20 b Ff(rl)p 243 -1242 V 24 w(resize)p 407 1242 V 26 w(terminal)i Fe(\()p -Fs(void)p Fe(\))195 1296 y Ft(Up)q(date)16 b(Readline's)f(in)o(ternal)f +553 y([F)l(unction])-1801 b Fg(void)20 b Ff(rl)p 243 +553 V 24 w(resize)p 407 553 V 26 w(terminal)i Fe(\()p +Fs(void)p Fe(\))195 608 y Ft(Up)q(date)16 b(Readline's)f(in)o(ternal)f (screen)h(size)h(b)o(y)f(reading)f(v)m(alues)i(from)e(the)i(k)o(ernel.) -1675 1405 y([F)l(unction])-1801 b Fg(void)20 b Ff(rl)p -243 1405 V 24 w(set)p 338 1405 V 26 w(screen)p 520 1405 +1675 700 y([F)l(unction])-1801 b Fg(void)20 b Ff(rl)p +243 700 V 24 w(set)p 338 700 V 26 w(screen)p 520 700 V 25 w(size)j Fe(\()p Fs(int)14 b(rows,)h(int)g(cols)p -Fe(\))195 1460 y Ft(Set)f(Readline's)g(idea)g(of)g(the)g(terminal)f +Fe(\))195 755 y Ft(Set)f(Readline's)g(idea)g(of)g(the)g(terminal)f (size)h(to)f Fi(ro)o(ws)i Ft(ro)o(ws)e(and)h Fi(cols)i -Ft(columns.)j(If)14 b(either)g Fi(ro)o(ws)195 1515 y -Ft(or)j Fi(columns)i Ft(is)e(less)h(than)f(or)g(equal)h(to)e(0,)i -(Readline's)f(idea)h(of)f(that)g(terminal)f(dimension)h(is)195 -1570 y(unc)o(hanged.)137 1678 y(If)g(an)g(application)e(do)q(es)i(not)f -(w)o(an)o(t)g(to)g(install)f(a)i Fs(SIGWINCH)e Ft(handler,)i(but)g(is)f -(still)f(in)o(terested)h(in)75 1733 y(the)f(screen)h(dimensions,)e +Ft(columns.)j(If)14 b(either)g Fi(ro)o(ws)195 810 y Ft(or)j +Fi(columns)i Ft(is)e(less)h(than)f(or)g(equal)h(to)e(0,)i(Readline's)f +(idea)h(of)f(that)g(terminal)f(dimension)h(is)195 864 +y(unc)o(hanged.)137 957 y(If)g(an)g(application)e(do)q(es)i(not)f(w)o +(an)o(t)g(to)g(install)f(a)i Fs(SIGWINCH)e Ft(handler,)i(but)g(is)f +(still)f(in)o(terested)h(in)75 1011 y(the)f(screen)h(dimensions,)e (Readline's)i(idea)e(of)h(the)h(screen)f(size)g(ma)o(y)g(b)q(e)h -(queried.)1675 1842 y([F)l(unction])-1801 b Fg(void)20 -b Ff(rl)p 243 1842 V 24 w(get)p 344 1842 V 26 w(screen)p -526 1842 V 25 w(size)j Fe(\()p Fs(int)14 b(*rows,)h(int)f(*cols)p -Fe(\))195 1896 y Ft(Return)i(Readline's)f(idea)f(of)h(the)g(terminal's) +(queried.)1675 1104 y([F)l(unction])-1801 b Fg(void)20 +b Ff(rl)p 243 1104 V 24 w(get)p 344 1104 V 26 w(screen)p +526 1104 V 25 w(size)j Fe(\()p Fs(int)14 b(*rows,)h(int)f(*cols)p +Fe(\))195 1158 y Ft(Return)i(Readline's)f(idea)f(of)h(the)g(terminal's) e(size)i(in)g(the)g(v)m(ariables)g(p)q(oin)o(ted)g(to)f(b)o(y)h(the)g -(argu-)195 1951 y(men)o(ts.)1675 2060 y([F)l(unction])-1801 -b Fg(void)20 b Ff(rl)p 243 2060 V 24 w(reset)p 388 2060 -V 26 w(screen)p 570 2060 V 25 w(size)j Fe(\()p Fs(void)p -Fe(\))195 2115 y Ft(Cause)15 b(Readline)h(to)e(reobtain)h(the)g(screen) -h(size)f(and)g(recalculate)f(its)h(dimensions.)137 2223 +(argu-)195 1213 y(men)o(ts.)1675 1306 y([F)l(unction])-1801 +b Fg(void)20 b Ff(rl)p 243 1306 V 24 w(reset)p 388 1306 +V 26 w(screen)p 570 1306 V 25 w(size)j Fe(\()p Fs(void)p +Fe(\))195 1360 y Ft(Cause)15 b(Readline)h(to)e(reobtain)h(the)g(screen) +h(size)f(and)g(recalculate)f(its)h(dimensions.)137 1453 y(The)h(follo)o(wing)d(functions)i(install)e(and)j(remo)o(v)o(e)e -(Readline's)h(signal)f(handlers.)1675 2332 y([F)l(unction])-1801 -b Fg(int)20 b Ff(rl)p 217 2332 V 24 w(set)p 312 2332 -V 26 w(signals)h Fe(\()p Fs(void)p Fe(\))195 2387 y Ft(Install)c +(Readline's)h(signal)f(handlers.)1675 1545 y([F)l(unction])-1801 +b Fg(int)20 b Ff(rl)p 217 1545 V 24 w(set)p 312 1545 +V 26 w(signals)h Fe(\()p Fs(void)p Fe(\))195 1600 y Ft(Install)c (Readline's)g(signal)g(handler)g(for)g Fs(SIGINT)p Ft(,)g Fs(SIGQUIT)p Ft(,)g Fs(SIGTERM)p Ft(,)g Fs(SIGALRM)p -Ft(,)f Fs(SIGTSTP)p Ft(,)195 2442 y Fs(SIGTTIN)p Ft(,)11 +Ft(,)f Fs(SIGTSTP)p Ft(,)195 1654 y Fs(SIGTTIN)p Ft(,)11 b Fs(SIGTTOU)p Ft(,)g(and)h Fs(SIGWINCH)p Ft(,)e(dep)q(ending)j(on)f (the)f(v)m(alues)h(of)f Fs(rl_catch_signals)f Ft(and)195 -2496 y Fs(rl_catch_sigwinch)p Ft(.)1675 2605 y([F)l(unction])-1801 -b Fg(int)20 b Ff(rl)p 217 2605 V 24 w(clear)p 360 2605 -V 26 w(signals)h Fe(\()p Fs(void)p Fe(\))195 2660 y Ft(Remo)o(v)o(e)15 +1709 y Fs(rl_catch_sigwinch)p Ft(.)1675 1801 y([F)l(unction])-1801 +b Fg(int)20 b Ff(rl)p 217 1801 V 24 w(clear)p 360 1801 +V 26 w(signals)h Fe(\()p Fs(void)p Fe(\))195 1856 y Ft(Remo)o(v)o(e)15 b(all)f(of)h(the)g(Readline)h(signal)e(handlers)h(installed)f(b)o(y)h -Fs(rl_set_signals\(\))p Ft(.)p eop end +Fs(rl_set_signals\(\))p Ft(.)75 1985 y Fr(2.6)33 b(Custom)21 +b(Completers)137 2107 y Ft(T)o(ypically)l(,)16 b(a)g(program)f(that)h +(reads)h(commands)f(from)g(the)h(user)f(has)h(a)f(w)o(a)o(y)g(of)g +(disam)o(biguating)75 2162 y(commands)i(and)f(data.)27 +b(If)18 b(y)o(our)f(program)g(is)g(one)h(of)f(these,)i(then)f(it)f(can) +g(pro)o(vide)h(completion)f(for)75 2217 y(commands,)d(data,)g(or)g(b)q +(oth.)20 b(The)15 b(follo)o(wing)d(sections)i(describ)q(e)h(ho)o(w)f(y) +o(our)g(program)g(and)h(Readline)75 2271 y(co)q(op)q(erate)g(to)g(pro)o +(vide)f(this)h(service.)75 2384 y Fh(2.6.1)30 b(Ho)n(w)21 +b(Completing)f(W)-5 b(orks)137 2506 y Ft(In)18 b(order)f(to)f(complete) +h(some)g(text,)g(the)g(full)g(list)e(of)i(p)q(ossible)g(completions)f +(m)o(ust)h(b)q(e)h(a)o(v)m(ailable.)75 2560 y(That)e(is,)h(it)f(is)h +(not)g(p)q(ossible)f(to)h(accurately)f(expand)i(a)e(partial)g(w)o(ord)g +(without)g(kno)o(wing)g(all)g(of)h(the)75 2615 y(p)q(ossible)g(w)o +(ords)g(whic)o(h)g(mak)o(e)g(sense)h(in)g(that)e(con)o(text.)26 +b(The)18 b(Readline)g(library)e(pro)o(vides)h(the)h(user)75 +2670 y(in)o(terface)e(to)g(completion,)g(and)g(t)o(w)o(o)g(of)g(the)h +(most)f(common)g(completion)g(functions:)22 b(\014lename)17 +b(and)p eop end %%Page: 42 46 TeXDict begin 42 45 bop 75 -58 a Ft(42)1299 b(GNU)15 -b(Readline)g(Library)75 149 y Fr(2.6)33 b(Custom)21 b(Completers)137 -273 y Ft(T)o(ypically)l(,)16 b(a)g(program)f(that)h(reads)h(commands)f -(from)g(the)h(user)f(has)h(a)f(w)o(a)o(y)g(of)g(disam)o(biguating)75 -327 y(commands)i(and)f(data.)27 b(If)18 b(y)o(our)f(program)g(is)g(one) -h(of)f(these,)i(then)f(it)f(can)g(pro)o(vide)h(completion)f(for)75 -382 y(commands,)d(data,)g(or)g(b)q(oth.)20 b(The)15 b(follo)o(wing)d -(sections)i(describ)q(e)h(ho)o(w)f(y)o(our)g(program)g(and)h(Readline) -75 437 y(co)q(op)q(erate)g(to)g(pro)o(vide)f(this)h(service.)75 -551 y Fh(2.6.1)30 b(Ho)n(w)21 b(Completing)f(W)-5 b(orks)137 -675 y Ft(In)18 b(order)f(to)f(complete)h(some)g(text,)g(the)g(full)g -(list)e(of)i(p)q(ossible)g(completions)f(m)o(ust)h(b)q(e)h(a)o(v)m -(ailable.)75 729 y(That)e(is,)h(it)f(is)h(not)g(p)q(ossible)f(to)h -(accurately)f(expand)i(a)e(partial)g(w)o(ord)g(without)g(kno)o(wing)g -(all)g(of)h(the)75 784 y(p)q(ossible)g(w)o(ords)g(whic)o(h)g(mak)o(e)g -(sense)h(in)g(that)e(con)o(text.)26 b(The)18 b(Readline)g(library)e -(pro)o(vides)h(the)h(user)75 839 y(in)o(terface)e(to)g(completion,)g -(and)g(t)o(w)o(o)g(of)g(the)h(most)f(common)g(completion)g(functions:) -22 b(\014lename)17 b(and)75 894 y(username.)i(F)l(or)10 -b(completing)g(other)g(t)o(yp)q(es)h(of)f(text,)h(y)o(ou)g(m)o(ust)f -(write)g(y)o(our)g(o)o(wn)h(completion)e(function.)75 -948 y(This)15 b(section)g(describ)q(es)g(exactly)g(what)g(suc)o(h)g -(functions)g(m)o(ust)g(do,)f(and)i(pro)o(vides)e(an)i(example.)137 -1017 y(There)g(are)f(three)g(ma)s(jor)f(functions)h(used)g(to)g(p)q -(erform)g(completion:)100 1085 y(1.)29 b(The)22 b(user-in)o(terface)f -(function)h Fs(rl_complete\(\))p Ft(.)37 b(This)22 b(function)f(is)g -(called)g(with)g(the)h(same)165 1140 y(argumen)o(ts)17 -b(as)g(other)h(bindable)g(Readline)g(functions:)25 b -Fi(coun)o(t)18 b Ft(and)g Fi(in)o(v)o(oking)p 1555 1140 -14 2 v 19 w(k)o(ey)p Ft(.)28 b(It)18 b(isolates)165 1195 -y(the)h(w)o(ord)f(to)g(b)q(e)i(completed)e(and)h(calls)f -Fs(rl_completion_matches\(\))e Ft(to)i(generate)g(a)h(list)e(of)165 -1250 y(p)q(ossible)e(completions.)20 b(It)c(then)g(either)f(lists)f -(the)i(p)q(ossible)f(completions,)g(inserts)g(the)g(p)q(ossible)165 -1304 y(completions,)23 b(or)f(actually)g(p)q(erforms)g(the)g -(completion,)i(dep)q(ending)f(on)g(whic)o(h)f(b)q(eha)o(vior)g(is)165 -1359 y(desired.)100 1427 y(2.)29 b(The)17 b(in)o(ternal)f(function)g -Fs(rl_completion_matches\(\))e Ft(uses)j(an)g(application-supplied)f -Fi(gener-)165 1482 y(ator)21 b Ft(function)d(to)g(generate)g(the)h -(list)e(of)h(p)q(ossible)g(matc)o(hes,)h(and)f(then)h(returns)g(the)f -(arra)o(y)f(of)165 1537 y(these)j(matc)o(hes.)32 b(The)20 -b(caller)e(should)i(place)f(the)h(address)f(of)h(its)e(generator)h -(function)g(in)g Fs(rl_)165 1591 y(completion_entry_function)p -Ft(.)100 1659 y(3.)29 b(The)12 b(generator)e(function)h(is)g(called)g -(rep)q(eatedly)h(from)f Fs(rl_completion_matches\(\))p -Ft(,)d(returning)165 1714 y(a)16 b(string)f(eac)o(h)i(time.)23 -b(The)17 b(argumen)o(ts)e(to)h(the)g(generator)g(function)g(are)g -Fi(text)h Ft(and)g Fi(state)p Ft(.)22 b Fi(text)165 1769 -y Ft(is)16 b(the)g(partial)e(w)o(ord)h(to)h(b)q(e)h(completed.)22 -b Fi(state)c Ft(is)d(zero)h(the)g(\014rst)g(time)f(the)h(function)g(is) -g(called,)165 1824 y(allo)o(wing)k(the)i(generator)f(to)g(p)q(erform)h -(an)o(y)g(necessary)g(initializatio)o(n,)f(and)h(a)g(p)q(ositiv)o(e)f -(non-)165 1878 y(zero)14 b(in)o(teger)g(for)g(eac)o(h)h(subsequen)o(t)g -(call.)k(The)c(generator)e(function)i(returns)f Fs(\(char)h(*\)NULL)f -Ft(to)165 1933 y(inform)k Fs(rl_completion_matches\(\))e +b(Readline)g(Library)75 149 y(username.)k(F)l(or)10 b(completing)g +(other)g(t)o(yp)q(es)h(of)f(text,)h(y)o(ou)g(m)o(ust)f(write)g(y)o(our) +g(o)o(wn)h(completion)e(function.)75 204 y(This)15 b(section)g(describ) +q(es)g(exactly)g(what)g(suc)o(h)g(functions)g(m)o(ust)g(do,)f(and)i +(pro)o(vides)e(an)i(example.)137 268 y(There)g(are)f(three)g(ma)s(jor)f +(functions)h(used)g(to)g(p)q(erform)g(completion:)100 +331 y(1.)29 b(The)22 b(user-in)o(terface)f(function)h +Fs(rl_complete\(\))p Ft(.)37 b(This)21 b(function)h(is)f(called)g(with) +g(the)h(same)165 386 y(argumen)o(ts)17 b(as)g(other)h(bindable)g +(Readline)g(functions:)25 b Fi(coun)o(t)18 b Ft(and)g +Fi(in)o(v)o(oking)p 1555 386 14 2 v 19 w(k)o(ey)p Ft(.)28 +b(It)18 b(isolates)165 440 y(the)h(w)o(ord)f(to)g(b)q(e)i(completed)e +(and)h(calls)f Fs(rl_completion_matches\(\))e Ft(to)i(generate)g(a)h +(list)e(of)165 495 y(p)q(ossible)e(completions.)20 b(It)c(then)g +(either)f(lists)f(the)i(p)q(ossible)f(completions,)g(inserts)g(the)g(p) +q(ossible)165 550 y(completions,)23 b(or)f(actually)g(p)q(erforms)g +(the)g(completion,)i(dep)q(ending)f(on)g(whic)o(h)f(b)q(eha)o(vior)g +(is)165 605 y(desired.)100 668 y(2.)29 b(The)17 b(in)o(ternal)f +(function)g Fs(rl_completion_matches\(\))e Ft(uses)j(an)g +(application-supplied)f Fi(gener-)165 723 y(ator)21 b +Ft(function)d(to)g(generate)g(the)h(list)e(of)h(p)q(ossible)g(matc)o +(hes,)h(and)f(then)h(returns)g(the)f(arra)o(y)f(of)165 +778 y(these)j(matc)o(hes.)32 b(The)20 b(caller)e(should)i(place)f(the)h +(address)f(of)h(its)e(generator)h(function)g(in)g Fs(rl_)165 +832 y(completion_entry_function)p Ft(.)100 896 y(3.)29 +b(The)12 b(generator)e(function)h(is)g(called)g(rep)q(eatedly)h(from)f +Fs(rl_completion_matches\(\))p Ft(,)d(returning)165 951 +y(a)16 b(string)f(eac)o(h)i(time.)23 b(The)17 b(argumen)o(ts)e(to)h +(the)g(generator)g(function)g(are)g Fi(text)h Ft(and)g +Fi(state)p Ft(.)22 b Fi(text)165 1005 y Ft(is)16 b(the)g(partial)e(w)o +(ord)h(to)h(b)q(e)h(completed.)22 b Fi(state)c Ft(is)d(zero)h(the)g +(\014rst)g(time)f(the)h(function)g(is)g(called,)165 1060 +y(allo)o(wing)k(the)i(generator)f(to)g(p)q(erform)h(an)o(y)g(necessary) +g(initializatio)o(n,)f(and)h(a)g(p)q(ositiv)o(e)f(non-)165 +1115 y(zero)14 b(in)o(teger)g(for)g(eac)o(h)h(subsequen)o(t)g(call.)k +(The)c(generator)e(function)i(returns)f Fs(\(char)h(*\)NULL)f +Ft(to)165 1170 y(inform)k Fs(rl_completion_matches\(\))e Ft(that)i(there)h(are)g(no)g(more)g(p)q(ossibilities)e(left.)31 -b(Usually)165 1988 y(the)19 b(generator)g(function)g(computes)h(the)f +b(Usually)165 1225 y(the)19 b(generator)g(function)g(computes)h(the)f (list)f(of)h(p)q(ossible)g(completions)g(when)g Fi(state)j -Ft(is)c(zero,)165 2043 y(and)13 b(returns)g(them)f(one)h(at)f(a)h(time) +Ft(is)c(zero,)165 1279 y(and)13 b(returns)g(them)f(one)h(at)f(a)h(time) f(on)h(subsequen)o(t)g(calls.)18 b(Eac)o(h)13 b(string)e(the)i -(generator)f(function)165 2098 y(returns)k(as)f(a)h(matc)o(h)f(m)o(ust) +(generator)f(function)165 1334 y(returns)k(as)f(a)h(matc)o(h)f(m)o(ust) h(b)q(e)g(allo)q(cated)f(with)h Fs(malloc\(\))p Ft(;)e(Readline)j -(frees)f(the)g(strings)e(when)165 2152 y(it)i(has)h(\014nished)h(with)e +(frees)f(the)g(strings)e(when)165 1389 y(it)i(has)h(\014nished)h(with)e (them.)25 b(Suc)o(h)18 b(a)e(generator)g(function)h(is)f(referred)h(to) -g(as)f(an)h Fi(application-)165 2207 y(sp)q(eci\014c)f(completion)e -(function)p Ft(.)1675 2302 y([F)l(unction])-1801 b Fg(int)20 -b Ff(rl)p 217 2302 18 3 v 24 w(complete)j Fe(\()p Fs(int)15 -b(ignore,)f(int)h(invoking_key)p Fe(\))195 2356 y Ft(Complete)g(the)g +g(as)f(an)h Fi(application-)165 1444 y(sp)q(eci\014c)f(completion)e +(function)p Ft(.)1675 1524 y([F)l(unction])-1801 b Fg(int)20 +b Ff(rl)p 217 1524 18 3 v 24 w(complete)j Fe(\()p Fs(int)15 +b(ignore,)f(int)h(invoking_key)p Fe(\))195 1579 y Ft(Complete)g(the)g (w)o(ord)g(at)f(or)h(b)q(efore)h(p)q(oin)o(t.)k(Y)l(ou)15 b(ha)o(v)o(e)g(supplied)h(the)f(function)h(that)e(do)q(es)i(the)195 -2411 y(initial)j(simple)h(matc)o(hing)f(selection)h(algorithm)f(\(see)h -Fs(rl_completion_matches\(\))p Ft(\).)33 b(The)195 2466 +1634 y(initial)j(simple)h(matc)o(hing)f(selection)h(algorithm)f(\(see)h +Fs(rl_completion_matches\(\))p Ft(\).)33 b(The)195 1688 y(default)15 b(is)f(to)h(do)g(\014lename)g(completion.)1685 -2560 y([V)l(ariable])-1801 b Fg(rl_compentry_func_t)22 -b(*)d Ff(rl)p 680 2560 V 25 w(completion)p 980 2560 V -25 w(en)n(try)p 1137 2560 V 25 w(function)195 2615 y +1769 y([V)l(ariable])-1801 b Fg(rl_compentry_func_t)22 +b(*)d Ff(rl)p 680 1769 V 25 w(completion)p 980 1769 V +25 w(en)n(try)p 1137 1769 V 25 w(function)195 1823 y Ft(This)h(is)f(a)h(p)q(oin)o(ter)f(to)g(the)h(generator)g(function)f (for)h Fs(rl_completion_matches\(\))p Ft(.)31 b(If)20 -b(the)195 2670 y(v)m(alue)12 b(of)g Fs(rl_completion_entry_fun)o(ction) -d Ft(is)i Fs(NULL)g Ft(then)h(the)g(default)g(\014lename)g(generator)p -eop end -%%Page: 43 47 -TeXDict begin 43 46 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14 -b(with)g(GNU)h(Readline)842 b(43)195 149 y(function,)24 -b Fs(rl_filename_completion_f)o(unction\()o(\))p Ft(,)d(is)h(used.)42 -b(An)23 b Fi(application-sp)q(eci\014c)195 204 y(completion)10 -b(function)g Ft(is)g(a)g(function)h(whose)f(address)h(is)f(assigned)g -(to)g Fs(rl_completion_entry_)195 259 y(function)k Ft(and)h(whose)h -(return)f(v)m(alues)g(are)g(used)h(to)e(generate)h(p)q(ossible)g -(completions.)75 381 y Fh(2.6.2)30 b(Completion)20 b(F)-5 -b(unctions)137 508 y Ft(Here)16 b(is)e(the)i(complete)f(list)f(of)g -(callable)h(completion)f(functions)h(presen)o(t)g(in)g(Readline.)1675 -609 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p 217 609 -18 3 v 24 w(complete)p 465 609 V 26 w(in)n(ternal)i Fe(\()p -Fs(int)15 b(what_to_do)p Fe(\))195 664 y Ft(Complete)j(the)g(w)o(ord)g -(at)f(or)h(b)q(efore)h(p)q(oin)o(t.)28 b Fi(what)p 1104 -664 14 2 v 20 w(to)p 1165 664 V 19 w(do)21 b Ft(sa)o(ys)c(what)h(to)g -(do)g(with)g(the)g(com-)195 719 y(pletion.)i(A)c(v)m(alue)g(of)f(`)p -Fs(?)p Ft(')g(means)g(list)g(the)g(p)q(ossible)h(completions.)k(`)p -Fs(TAB)p Ft(')14 b(means)i(do)f(standard)195 774 y(completion.)20 +b(the)195 1878 y(v)m(alue)12 b(of)g Fs(rl_completion_entry_fun)o(ction) +d Ft(is)i Fs(NULL)g Ft(then)h(the)g(default)g(\014lename)g(generator) +195 1933 y(function,)24 b Fs(rl_filename_completion_f)o(unction\()o(\)) +p Ft(,)d(is)h(used.)42 b(An)23 b Fi(application-sp)q(eci\014c)195 +1988 y(completion)10 b(function)g Ft(is)g(a)g(function)h(whose)f +(address)h(is)f(assigned)g(to)g Fs(rl_completion_entry_)195 +2043 y(function)k Ft(and)h(whose)h(return)f(v)m(alues)g(are)g(used)h +(to)e(generate)h(p)q(ossible)g(completions.)75 2143 y +Fh(2.6.2)30 b(Completion)20 b(F)-5 b(unctions)137 2261 +y Ft(Here)16 b(is)e(the)i(complete)f(list)f(of)g(callable)h(completion) +f(functions)h(presen)o(t)g(in)g(Readline.)1675 2341 y([F)l(unction]) +-1801 b Fg(int)20 b Ff(rl)p 217 2341 V 24 w(complete)p +465 2341 V 26 w(in)n(ternal)i Fe(\()p Fs(int)15 b(what_to_do)p +Fe(\))195 2396 y Ft(Complete)j(the)g(w)o(ord)g(at)f(or)h(b)q(efore)h(p) +q(oin)o(t.)28 b Fi(what)p 1104 2396 14 2 v 20 w(to)p +1165 2396 V 19 w(do)21 b Ft(sa)o(ys)c(what)h(to)g(do)g(with)g(the)g +(com-)195 2451 y(pletion.)i(A)c(v)m(alue)g(of)f(`)p Fs(?)p +Ft(')g(means)g(list)g(the)g(p)q(ossible)h(completions.)k(`)p +Fs(TAB)p Ft(')14 b(means)i(do)f(standard)195 2506 y(completion.)20 b(`)p Fs(*)p Ft(')15 b(means)g(insert)g(all)g(of)g(the)h(p)q(ossible)f (completions.)20 b(`)p Fs(!)p Ft(')15 b(means)g(to)g(displa)o(y)g(all) -195 829 y(of)i(the)g(p)q(ossible)g(completions,)f(if)h(there)g(is)g +195 2560 y(of)i(the)g(p)q(ossible)g(completions,)f(if)h(there)g(is)g (more)g(than)g(one,)g(as)g(w)o(ell)f(as)h(p)q(erforming)g(partial)195 -883 y(completion.)h(`)p Fs(@)p Ft(')13 b(is)g(similar)f(to)h(`)p +2615 y(completion.)h(`)p Fs(@)p Ft(')13 b(is)g(similar)f(to)h(`)p Fs(!)p Ft(',)g(but)h(p)q(ossible)f(completions)g(are)g(not)g(listed)g -(if)g(the)h(p)q(ossible)195 938 y(completions)g(share)h(a)g(common)g -(pre\014x.)1675 1040 y([F)l(unction])-1801 b Fg(int)20 -b Ff(rl)p 217 1040 18 3 v 24 w(complete)j Fe(\()p Fs(int)15 -b(ignore,)f(int)h(invoking_key)p Fe(\))195 1095 y Ft(Complete)20 -b(the)h(w)o(ord)e(at)h(or)g(b)q(efore)h(p)q(oin)o(t.)36 -b(Y)l(ou)21 b(ha)o(v)o(e)f(supplied)h(the)f(function)h(that)f(do)q(es) -195 1150 y(the)d(initial)d(simple)i(matc)o(hing)g(selection)g +(if)g(the)h(p)q(ossible)195 2670 y(completions)g(share)h(a)g(common)g +(pre\014x.)p eop end +%%Page: 43 47 +TeXDict begin 43 46 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14 +b(with)g(GNU)h(Readline)842 b(43)1675 149 y([F)l(unction])-1801 +b Fg(int)20 b Ff(rl)p 217 149 18 3 v 24 w(complete)j +Fe(\()p Fs(int)15 b(ignore,)f(int)h(invoking_key)p Fe(\))195 +204 y Ft(Complete)20 b(the)h(w)o(ord)e(at)h(or)g(b)q(efore)h(p)q(oin)o +(t.)36 b(Y)l(ou)21 b(ha)o(v)o(e)f(supplied)h(the)f(function)h(that)f +(do)q(es)195 259 y(the)d(initial)d(simple)i(matc)o(hing)g(selection)g (algorithm)e(\(see)i Fs(rl_completion_matches\(\))e Ft(and)195 -1204 y Fs(rl_completion_entry_functi)o(on)p Ft(\).)25 +314 y Fs(rl_completion_entry_functi)o(on)p Ft(\).)25 b(The)18 b(default)g(is)f(to)g(do)h(\014lename)g(completion.)27 -b(This)195 1259 y(calls)14 b Fs(rl_complete_internal\(\))e +b(This)195 369 y(calls)14 b Fs(rl_complete_internal\(\))e Ft(with)j(an)g(argumen)o(t)f(dep)q(ending)j(on)e Fi(in)o(v)o(oking)p -1659 1259 14 2 v 19 w(k)o(ey)p Ft(.)1675 1361 y([F)l(unction])-1801 -b Fg(int)20 b Ff(rl)p 217 1361 18 3 v 24 w(p)r(ossible)p -440 1361 V 24 w(completions)h Fe(\()p Fs(int)15 b(count,)f(int)h -(invoking_key)p Fe(\))195 1416 y Ft(List)20 b(the)g(p)q(ossible)g +1659 369 14 2 v 19 w(k)o(ey)p Ft(.)1675 457 y([F)l(unction])-1801 +b Fg(int)20 b Ff(rl)p 217 457 18 3 v 24 w(p)r(ossible)p +440 457 V 24 w(completions)h Fe(\()p Fs(int)15 b(count,)f(int)h +(invoking_key)p Fe(\))195 511 y Ft(List)20 b(the)g(p)q(ossible)g (completions.)34 b(See)21 b(description)f(of)g Fs(rl_complete)13 -b(\(\))p Ft(.)35 b(This)20 b(calls)f Fs(rl_)195 1471 -y(complete_internal\(\))13 b Ft(with)h(an)h(argumen)o(t)g(of)f(`)p -Fs(?)p Ft('.)1675 1572 y([F)l(unction])-1801 b Fg(int)20 -b Ff(rl)p 217 1572 V 24 w(insert)p 384 1572 V 25 w(completions)i +b(\(\))p Ft(.)35 b(This)20 b(calls)f Fs(rl_)195 566 y +(complete_internal\(\))13 b Ft(with)h(an)h(argumen)o(t)g(of)f(`)p +Fs(?)p Ft('.)1675 654 y([F)l(unction])-1801 b Fg(int)20 +b Ff(rl)p 217 654 V 24 w(insert)p 384 654 V 25 w(completions)i Fe(\()p Fs(int)14 b(count,)g(int)h(invoking_key)p Fe(\))195 -1627 y Ft(Insert)i(the)g(list)f(of)g(p)q(ossible)h(completions)e(in)o +709 y Ft(Insert)i(the)g(list)f(of)g(p)q(ossible)h(completions)e(in)o (to)h(the)h(line,)g(deleting)f(the)h(partially-completed)195 -1682 y(w)o(ord.)k(See)c(description)e(of)g Fs(rl_complete\(\))p +764 y(w)o(ord.)k(See)c(description)e(of)g Fs(rl_complete\(\))p Ft(.)20 b(This)c(calls)f Fs(rl_complete_internal\(\))e -Ft(with)195 1737 y(an)i(argumen)o(t)g(of)f(`)p Fs(*)p -Ft('.)1675 1839 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p -217 1839 V 24 w(completion)p 516 1839 V 25 w(mo)r(de)i +Ft(with)195 818 y(an)i(argumen)o(t)g(of)f(`)p Fs(*)p +Ft('.)1675 906 y([F)l(unction])-1801 b Fg(int)20 b Ff(rl)p +217 906 V 24 w(completion)p 516 906 V 25 w(mo)r(de)i Fe(\()p Fs(rl_command_func_t)12 b(*cfunc)p Fe(\))195 -1893 y Ft(Returns)26 b(the)f(apppriate)g(v)m(alue)g(to)g(pass)g(to)f +961 y Ft(Returns)26 b(the)f(apppriate)g(v)m(alue)g(to)g(pass)g(to)f Fs(rl_complete_internal\(\))f Ft(dep)q(ending)j(on)195 -1948 y(whether)21 b Fi(cfunc)i Ft(w)o(as)d(called)g(t)o(wice)g(in)g +1016 y(whether)21 b Fi(cfunc)i Ft(w)o(as)d(called)g(t)o(wice)g(in)g (succession)h(and)f(the)h(v)m(alues)f(of)g(the)h Fs(show-all-if-)195 -2003 y(ambiguous)13 b Ft(and)g Fs(show-all-if-unmodified)e +1071 y(ambiguous)13 b Ft(and)g Fs(show-all-if-unmodified)e Ft(v)m(ariables.)19 b(Application-sp)q(eci\014c)14 b(completion)195 -2058 y(functions)h(ma)o(y)f(use)i(this)f(function)g(to)f(presen)o(t)h +1126 y(functions)h(ma)o(y)f(use)i(this)f(function)g(to)f(presen)o(t)h (the)h(same)f(in)o(terface)f(as)h Fs(rl_complete\(\))p -Ft(.)1675 2160 y([F)l(unction])-1801 b Fg(char)20 b(**)f -Ff(rl)p 314 2160 V 25 w(completion)p 614 2160 V 25 w(matc)n(hes)k -Fe(\()p Fs(const)14 b(char)g(*text,)283 2214 y(rl_compentry_func_t)e -(*entry_func)p Fe(\))195 2269 y Ft(Returns)19 b(an)g(arra)o(y)f(of)g +Ft(.)1675 1213 y([F)l(unction])-1801 b Fg(char)20 b(**)f +Ff(rl)p 314 1213 V 25 w(completion)p 614 1213 V 25 w(matc)n(hes)k +Fe(\()p Fs(const)14 b(char)g(*text,)283 1268 y(rl_compentry_func_t)e +(*entry_func)p Fe(\))195 1323 y Ft(Returns)19 b(an)g(arra)o(y)f(of)g (strings)g(whic)o(h)h(is)g(a)f(list)g(of)g(completions)g(for)h -Fi(text)p Ft(.)30 b(If)19 b(there)g(are)g(no)195 2324 +Fi(text)p Ft(.)30 b(If)19 b(there)g(are)g(no)195 1378 y(completions,)d(returns)i Fs(NULL)p Ft(.)25 b(The)17 b(\014rst)g(en)o(try)g(in)g(the)g(returned)h(arra)o(y)e(is)h(the)g -(substitution)195 2379 y(for)c Fi(text)p Ft(.)18 b(The)c(remaining)e +(substitution)195 1433 y(for)c Fi(text)p Ft(.)18 b(The)c(remaining)e (en)o(tries)g(are)h(the)h(p)q(ossible)e(completions.)19 -b(The)13 b(arra)o(y)f(is)h(terminated)195 2434 y(with)i(a)f -Fs(NULL)h Ft(p)q(oin)o(ter.)195 2506 y Fi(en)o(try)p -302 2506 14 2 v 20 w(func)23 b Ft(is)c(a)g(function)h(of)f(t)o(w)o(o)g +b(The)13 b(arra)o(y)f(is)h(terminated)195 1487 y(with)i(a)f +Fs(NULL)h Ft(p)q(oin)o(ter.)195 1553 y Fi(en)o(try)p +302 1553 14 2 v 20 w(func)23 b Ft(is)c(a)g(function)h(of)f(t)o(w)o(o)g (args,)g(and)h(returns)g(a)f Fs(char)c(*)p Ft(.)33 b(The)20 -b(\014rst)f(argumen)o(t)g(is)195 2560 y Fi(text)p Ft(.)32 +b(\014rst)f(argumen)o(t)g(is)195 1608 y Fi(text)p Ft(.)32 b(The)19 b(second)h(is)f(a)g(state)f(argumen)o(t;)j(it)d(is)h(zero)g (on)g(the)h(\014rst)f(call,)g(and)g(non-zero)h(on)195 -2615 y(subsequen)o(t)e(calls.)24 b Fi(en)o(try)p 661 -2615 V 19 w(func)d Ft(returns)16 b(a)h Fs(NULL)f Ft(p)q(oin)o(ter)h(to) -f(the)h(caller)f(when)h(there)g(are)g(no)195 2670 y(more)e(matc)o(hes.) -p eop end -%%Page: 44 48 -TeXDict begin 44 47 bop 75 -58 a Ft(44)1299 b(GNU)15 -b(Readline)g(Library)1675 149 y([F)l(unction])-1801 b -Fg(char)20 b(*)f Ff(rl)p 288 149 18 3 v 25 w(\014lename)p -521 149 V 25 w(completion)p 821 149 V 24 w(function)j -Fe(\()p Fs(const)14 b(char)h(*text,)f(int)283 204 y(state)p -Fe(\))195 259 y Ft(A)f(generator)f(function)g(for)h(\014lename)g -(completion)e(in)i(the)g(general)f(case.)19 b Fi(text)14 -b Ft(is)e(a)h(partial)e(\014le-)195 314 y(name.)18 b(The)11 -b(Bash)g(source)g(is)f(a)h(useful)g(reference)g(for)f(writing)f -(application-sp)q(eci\014c)i(completion)195 369 y(functions)k(\(the)g -(Bash)g(completion)f(functions)h(call)g(this)f(and)i(other)f(Readline)g -(functions\).)1675 455 y([F)l(unction])-1801 b Fg(char)20 -b(*)f Ff(rl)p 288 455 V 25 w(username)p 552 455 V 24 -w(completion)p 851 455 V 24 w(function)j Fe(\()p Fs(const)15 -b(char)f(*text,)h(int)283 510 y(state)p Fe(\))195 564 -y Ft(A)f(completion)g(generator)f(for)h(usernames.)19 +1663 y(subsequen)o(t)e(calls.)24 b Fi(en)o(try)p 661 +1663 V 19 w(func)d Ft(returns)16 b(a)h Fs(NULL)f Ft(p)q(oin)o(ter)h(to) +f(the)h(caller)f(when)h(there)g(are)g(no)195 1718 y(more)e(matc)o(hes.) +1675 1806 y([F)l(unction])-1801 b Fg(char)20 b(*)f Ff(rl)p +288 1806 18 3 v 25 w(\014lename)p 521 1806 V 25 w(completion)p +821 1806 V 24 w(function)j Fe(\()p Fs(const)14 b(char)h(*text,)f(int) +283 1860 y(state)p Fe(\))195 1915 y Ft(A)f(generator)f(function)g(for)h +(\014lename)g(completion)e(in)i(the)g(general)f(case.)19 +b Fi(text)14 b Ft(is)e(a)h(partial)e(\014le-)195 1970 +y(name.)18 b(The)11 b(Bash)g(source)g(is)f(a)h(useful)g(reference)g +(for)f(writing)f(application-sp)q(eci\014c)i(completion)195 +2025 y(functions)k(\(the)g(Bash)g(completion)f(functions)h(call)g(this) +f(and)i(other)f(Readline)g(functions\).)1675 2113 y([F)l(unction])-1801 +b Fg(char)20 b(*)f Ff(rl)p 288 2113 V 25 w(username)p +552 2113 V 24 w(completion)p 851 2113 V 24 w(function)j +Fe(\()p Fs(const)15 b(char)f(*text,)h(int)283 2168 y(state)p +Fe(\))195 2222 y Ft(A)f(completion)g(generator)f(for)h(usernames.)19 b Fi(text)c Ft(con)o(tains)e(a)h(partial)f(username)h(preceded)i(b)o(y) -195 619 y(a)f(random)g(c)o(haracter)f(\(usually)h(`)p +195 2277 y(a)f(random)g(c)o(haracter)f(\(usually)h(`)p Fs(~)p Ft('\).)k(As)c(with)f(all)h(completion)f(generators,)g -Fi(state)j Ft(is)e(zero)g(on)195 674 y(the)g(\014rst)g(call)f(and)i -(non-zero)f(for)g(subsequen)o(t)h(calls.)75 780 y Fh(2.6.3)30 -b(Completion)20 b(V)-5 b(ariables)1685 900 y Ft([V)l(ariable])-1801 -b Fg(rl_compentry_func_t)22 b(*)d Ff(rl)p 680 900 V 25 -w(completion)p 980 900 V 25 w(en)n(try)p 1137 900 V 25 -w(function)195 955 y Ft(A)e(p)q(oin)o(ter)f(to)g(the)h(generator)f -(function)g(for)g Fs(rl_completion_matches\(\))p Ft(.)22 -b Fs(NULL)16 b Ft(means)h(to)195 1010 y(use)f Fs +Fi(state)j Ft(is)e(zero)g(on)195 2332 y(the)g(\014rst)g(call)f(and)i +(non-zero)f(for)g(subsequen)o(t)h(calls.)75 2440 y Fh(2.6.3)30 +b(Completion)20 b(V)-5 b(ariables)1685 2560 y Ft([V)l(ariable])-1801 +b Fg(rl_compentry_func_t)22 b(*)d Ff(rl)p 680 2560 V +25 w(completion)p 980 2560 V 25 w(en)n(try)p 1137 2560 +V 25 w(function)195 2615 y Ft(A)e(p)q(oin)o(ter)f(to)g(the)h(generator) +f(function)g(for)g Fs(rl_completion_matches\(\))p Ft(.)22 +b Fs(NULL)16 b Ft(means)h(to)195 2670 y(use)f Fs (rl_filename_completion_)o(functio)o(n\(\))p Ft(,)c(the)j(default)g -(\014lename)g(completer.)1685 1096 y([V)l(ariable])-1801 -b Fg(rl_completion_func_t)22 b(*)d Ff(rl)p 706 1096 V -25 w(attempted)p 989 1096 V 26 w(completion)p 1290 1096 -V 25 w(function)195 1151 y Ft(A)e(p)q(oin)o(ter)g(to)g(an)g(alternativ) -o(e)f(function)h(to)g(create)g(matc)o(hes.)26 b(The)18 -b(function)f(is)g(called)g(with)195 1206 y Fi(text)p -Ft(,)11 b Fi(start)p Ft(,)g(and)h Fi(end)p Ft(.)19 b -Fi(start)11 b Ft(and)h Fi(end)i Ft(are)d(indices)g(in)h -Fs(rl_line_buffer)d Ft(de\014ning)j(the)g(b)q(ound-)195 -1261 y(aries)g(of)h Fi(text)p Ft(,)f(whic)o(h)h(is)g(a)f(c)o(haracter)h -(string.)18 b(If)13 b(this)f(function)h(exists)g(and)g(returns)g -Fs(NULL)p Ft(,)f(or)g(if)195 1315 y(this)e(v)m(ariable)h(is)f(set)h(to) -f Fs(NULL)p Ft(,)h(then)g Fs(rl_complete\(\))e Ft(will)h(call)g(the)h -(v)m(alue)g(of)g Fs(rl_completion_)195 1370 y(entry_function)h +(\014lename)g(completer.)p eop end +%%Page: 44 48 +TeXDict begin 44 47 bop 75 -58 a Ft(44)1299 b(GNU)15 +b(Readline)g(Library)1685 149 y([V)l(ariable])-1801 b +Fg(rl_completion_func_t)22 b(*)d Ff(rl)p 706 149 18 3 +v 25 w(attempted)p 989 149 V 26 w(completion)p 1290 149 +V 25 w(function)195 204 y Ft(A)e(p)q(oin)o(ter)g(to)g(an)g(alternativ)o +(e)f(function)h(to)g(create)g(matc)o(hes.)26 b(The)18 +b(function)f(is)g(called)g(with)195 259 y Fi(text)p Ft(,)11 +b Fi(start)p Ft(,)g(and)h Fi(end)p Ft(.)19 b Fi(start)11 +b Ft(and)h Fi(end)i Ft(are)d(indices)g(in)h Fs(rl_line_buffer)d +Ft(de\014ning)j(the)g(b)q(ound-)195 314 y(aries)g(of)h +Fi(text)p Ft(,)f(whic)o(h)h(is)g(a)f(c)o(haracter)h(string.)18 +b(If)13 b(this)f(function)h(exists)g(and)g(returns)g +Fs(NULL)p Ft(,)f(or)g(if)195 369 y(this)e(v)m(ariable)h(is)f(set)h(to)f +Fs(NULL)p Ft(,)h(then)g Fs(rl_complete\(\))e Ft(will)h(call)g(the)h(v)m +(alue)g(of)g Fs(rl_completion_)195 423 y(entry_function)h Ft(to)i(generate)g(matc)o(hes,)f(otherwise)h(the)g(arra)o(y)f(of)h -(strings)f(returned)h(will)f(b)q(e)195 1425 y(used.)19 +(strings)f(returned)h(will)f(b)q(e)195 478 y(used.)19 b(If)12 b(this)e(function)h(sets)g(the)g Fs (rl_attempted_completion_over)d Ft(v)m(ariable)i(to)h(a)g(non-zero)195 -1480 y(v)m(alue,)17 b(Readline)h(will)d(not)i(p)q(erform)f(its)h +533 y(v)m(alue,)17 b(Readline)h(will)d(not)i(p)q(erform)f(its)h (default)f(completion)g(ev)o(en)h(if)g(this)f(function)h(returns)195 -1535 y(no)e(matc)o(hes.)1685 1621 y([V)l(ariable])-1801 -b Fg(rl_quote_func_t)21 b(*)f Ff(rl)p 576 1621 V 24 w(\014lename)p -808 1621 V 25 w(quoting)p 1023 1621 V 25 w(function)195 -1676 y Ft(A)c(p)q(oin)o(ter)g(to)g(a)g(function)g(that)f(will)g(quote)h +588 y(no)e(matc)o(hes.)1685 675 y([V)l(ariable])-1801 +b Fg(rl_quote_func_t)21 b(*)f Ff(rl)p 576 675 V 24 w(\014lename)p +808 675 V 25 w(quoting)p 1023 675 V 25 w(function)195 +730 y Ft(A)c(p)q(oin)o(ter)g(to)g(a)g(function)g(that)f(will)g(quote)h (a)g(\014lename)h(in)f(an)g(application-sp)q(eci\014c)g(fashion.)195 -1730 y(This)j(is)g(called)h(if)f(\014lename)g(completion)g(is)g(b)q +785 y(This)j(is)g(called)h(if)f(\014lename)g(completion)g(is)g(b)q (eing)h(attempted)f(and)h(one)g(of)f(the)h(c)o(haracters)195 -1785 y(in)c Fs(rl_filename_quote_characters)d Ft(app)q(ears)k(in)f(a)h -(completed)f(\014lename.)24 b(The)17 b(function)195 1840 +840 y(in)c Fs(rl_filename_quote_characters)d Ft(app)q(ears)k(in)f(a)h +(completed)f(\014lename.)24 b(The)17 b(function)195 895 y(is)h(called)g(with)g Fi(text)p Ft(,)g Fi(matc)o(h)p -720 1840 14 2 v 20 w(t)o(yp)q(e)p Ft(,)g(and)h Fi(quote)p -1060 1840 V 20 w(p)q(oin)o(ter)p Ft(.)29 b(The)19 b Fi(text)g -Ft(is)e(the)i(\014lename)g(to)e(b)q(e)195 1895 y(quoted.)38 -b(The)21 b Fi(matc)o(h)p 606 1895 V 20 w(t)o(yp)q(e)i +720 895 14 2 v 20 w(t)o(yp)q(e)p Ft(,)g(and)h Fi(quote)p +1060 895 V 20 w(p)q(oin)o(ter)p Ft(.)29 b(The)19 b Fi(text)g +Ft(is)e(the)i(\014lename)g(to)e(b)q(e)195 949 y(quoted.)38 +b(The)21 b Fi(matc)o(h)p 606 949 V 20 w(t)o(yp)q(e)i Ft(is)e(either)g Fs(SINGLE_MATCH)p Ft(,)f(if)h(there)g(is)g(only)g(one) -g(completion)195 1950 y(matc)o(h,)15 b(or)g Fs(MULT_MATCH)p +g(completion)195 1004 y(matc)o(h,)15 b(or)g Fs(MULT_MATCH)p Ft(.)20 b(Some)c(functions)f(use)h(this)f(to)g(decide)i(whether)f(or)f -(not)g(to)g(insert)g(a)195 2004 y(closing)9 b(quote)i(c)o(haracter.)17 -b(The)11 b Fi(quote)p 876 2004 V 20 w(p)q(oin)o(ter)i +(not)g(to)g(insert)g(a)195 1059 y(closing)9 b(quote)i(c)o(haracter.)17 +b(The)11 b Fi(quote)p 876 1059 V 20 w(p)q(oin)o(ter)i Ft(is)d(a)g(p)q(oin)o(ter)g(to)g(an)o(y)g(op)q(ening)g(quote)h(c)o -(haracter)195 2059 y(the)k(user)h(t)o(yp)q(ed.)k(Some)15 +(haracter)195 1114 y(the)k(user)h(t)o(yp)q(ed.)k(Some)15 b(functions)g(c)o(ho)q(ose)g(to)g(reset)g(this)f(c)o(haracter.)1685 -2145 y([V)l(ariable])-1801 b Fg(rl_dequote_func_t)22 -b(*)d Ff(rl)p 628 2145 18 3 v 25 w(\014lename)p 861 2145 -V 24 w(dequoting)p 1133 2145 V 25 w(function)195 2200 +1201 y([V)l(ariable])-1801 b Fg(rl_dequote_func_t)22 +b(*)d Ff(rl)p 628 1201 18 3 v 25 w(\014lename)p 861 1201 +V 24 w(dequoting)p 1133 1201 V 25 w(function)195 1256 y Ft(A)c(p)q(oin)o(ter)f(to)g(a)h(function)f(that)h(will)e(remo)o(v)o (e)h(application-sp)q(eci\014c)h(quoting)f(c)o(haracters)g(from)195 -2255 y(a)i(\014lename)g(b)q(efore)h(completion)e(is)h(attempted,)g(so)f +1311 y(a)i(\014lename)g(b)q(efore)h(completion)e(is)h(attempted,)g(so)f (those)h(c)o(haracters)g(do)g(not)g(in)o(terfere)g(with)195 -2310 y(matc)o(hing)i(the)h(text)g(against)e(names)i(in)g(the)g +1366 y(matc)o(hing)i(the)h(text)g(against)e(names)i(in)g(the)g (\014lesystem.)32 b(It)19 b(is)f(called)h(with)f Fi(text)p -Ft(,)h(the)g(text)195 2365 y(of)i(the)g(w)o(ord)f(to)h(b)q(e)g -(dequoted,)i(and)e Fi(quote)p 1007 2365 14 2 v 20 w(c)o(har)p +Ft(,)h(the)g(text)195 1421 y(of)i(the)g(w)o(ord)f(to)h(b)q(e)g +(dequoted,)i(and)e Fi(quote)p 1007 1421 14 2 v 20 w(c)o(har)p Ft(,)h(whic)o(h)f(is)g(the)g(quoting)f(c)o(haracter)h(that)195 -2419 y(delimits)15 b(the)h(\014lename)g(\(usually)f(`)p +1475 y(delimits)15 b(the)h(\014lename)g(\(usually)f(`)p Fs(')p Ft(')g(or)h(`)p Fs(")p Ft('\).)21 b(If)c Fi(quote)p -1185 2419 V 19 w(c)o(har)i Ft(is)d(zero,)g(the)g(\014lename)g(w)o(as)f -(not)195 2474 y(in)g(an)g(em)o(b)q(edded)i(string.)1685 -2560 y([V)l(ariable])-1801 b Fg(rl_linebuf_func_t)22 -b(*)d Ff(rl)p 628 2560 18 3 v 25 w(c)n(har)p 760 2560 -V 25 w(is)p 824 2560 V 25 w(quoted)p 1020 2560 V 25 w(p)195 -2615 y Ft(A)f(p)q(oin)o(ter)g(to)g(a)g(function)g(to)g(call)g(that)f +1185 1475 V 19 w(c)o(har)i Ft(is)d(zero,)g(the)g(\014lename)g(w)o(as)f +(not)195 1530 y(in)g(an)g(em)o(b)q(edded)i(string.)1685 +1618 y([V)l(ariable])-1801 b Fg(rl_linebuf_func_t)22 +b(*)d Ff(rl)p 628 1618 18 3 v 25 w(c)n(har)p 760 1618 +V 25 w(is)p 824 1618 V 25 w(quoted)p 1020 1618 V 25 w(p)195 +1673 y Ft(A)f(p)q(oin)o(ter)g(to)g(a)g(function)g(to)g(call)g(that)f (determines)i(whether)f(or)g(not)g(a)g(sp)q(eci\014c)i(c)o(haracter)195 -2670 y(in)d(the)g(line)g(bu\013er)g(is)g(quoted,)h(according)e(to)h -(whatev)o(er)f(quoting)h(mec)o(hanism)g(the)g(program)p -eop end +1728 y(in)d(the)g(line)g(bu\013er)g(is)g(quoted,)h(according)e(to)h +(whatev)o(er)f(quoting)h(mec)o(hanism)g(the)g(program)195 +1782 y(calling)11 b(Readline)i(uses.)19 b(The)13 b(function)f(is)g +(called)g(with)g(t)o(w)o(o)f(argumen)o(ts:)17 b Fi(text)p +Ft(,)12 b(the)h(text)f(of)g(the)195 1837 y(line,)j(and)g +Fi(index)p Ft(,)h(the)f(index)h(of)f(the)g(c)o(haracter)g(in)g(the)h +(line.)k(It)15 b(is)g(used)h(to)f(decide)h(whether)f(a)195 +1892 y(c)o(haracter)f(found)i(in)f Fs(rl_completer_word_break_)o +(charact)o(ers)d Ft(should)j(b)q(e)h(used)g(to)e(break)195 +1947 y(w)o(ords)g(for)h(the)g(completer.)1685 2034 y([V)l(ariable]) +-1801 b Fg(rl_compignore_func_t)22 b(*)d Ff(rl)p 706 +2034 V 25 w(ignore)p 887 2034 V 24 w(some)p 1037 2034 +V 25 w(completions)p 1360 2034 V 24 w(function)195 2089 +y Ft(This)f(function,)i(if)e(de\014ned,)j(is)d(called)g(b)o(y)h(the)g +(completer)f(when)i(real)e(\014lename)h(completion)195 +2144 y(is)e(done,)g(after)f(all)g(the)h(matc)o(hing)f(names)h(ha)o(v)o +(e)g(b)q(een)h(generated.)25 b(It)17 b(is)g(passed)g(a)g +Fs(NULL)f Ft(ter-)195 2199 y(minated)f(arra)o(y)f(of)h(matc)o(hes.)20 +b(The)c(\014rst)f(elemen)o(t)g(\()p Fs(matches[0])p Ft(\))e(is)i(the)h +(maximal)e(substring)195 2254 y(common)g(to)g(all)f(matc)o(hes.)19 +b(This)14 b(function)g(can)h(re-arrange)f(the)g(list)f(of)h(matc)o(hes) +g(as)g(required,)195 2308 y(but)h(eac)o(h)h(elemen)o(t)f(deleted)g +(from)g(the)g(arra)o(y)f(m)o(ust)g(b)q(e)i(freed.)1685 +2396 y([V)l(ariable])-1801 b Fg(rl_icppfunc_t)21 b(*)e +Ff(rl)p 523 2396 V 25 w(directory)p 776 2396 V 25 w(completion)p +1076 2396 V 25 w(ho)r(ok)195 2451 y Ft(This)j(function,)i(if)e +(de\014ned,)k(is)c(allo)o(w)o(ed)f(to)h(mo)q(dify)g(the)h(directory)f +(p)q(ortion)g(of)g(\014lenames)195 2506 y(Readline)d(completes.)28 +b(It)19 b(is)e(called)h(with)g(the)g(address)h(of)e(a)h(string)g(\(the) +g(curren)o(t)g(directory)195 2560 y(name\))g(as)g(an)h(argumen)o(t,)f +(and)h(ma)o(y)f(mo)q(dify)g(that)g(string.)29 b(If)19 +b(the)f(string)g(is)g(replaced)h(with)195 2615 y(a)h(new)g(string,)g +(the)g(old)f(v)m(alue)h(should)g(b)q(e)h(freed.)34 b(An)o(y)20 +b(mo)q(di\014ed)h(directory)e(name)h(should)195 2670 +y(ha)o(v)o(e)14 b(a)g(trailing)f(slash.)19 b(The)c(mo)q(di\014ed)g(v)m +(alue)g(will)e(b)q(e)i(displa)o(y)o(ed)f(as)g(part)g(of)h(the)f +(completion,)p eop end %%Page: 45 49 TeXDict begin 45 48 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14 -b(with)g(GNU)h(Readline)842 b(45)195 149 y(calling)11 -b(Readline)i(uses.)19 b(The)13 b(function)f(is)g(called)g(with)g(t)o(w) -o(o)f(argumen)o(ts:)17 b Fi(text)p Ft(,)12 b(the)h(text)f(of)g(the)195 -204 y(line,)j(and)g Fi(index)p Ft(,)h(the)f(index)h(of)f(the)g(c)o -(haracter)g(in)g(the)h(line.)k(It)15 b(is)g(used)h(to)f(decide)h -(whether)f(a)195 259 y(c)o(haracter)f(found)i(in)f Fs -(rl_completer_word_break_)o(charact)o(ers)d Ft(should)j(b)q(e)h(used)g -(to)e(break)195 314 y(w)o(ords)g(for)h(the)g(completer.)1685 -400 y([V)l(ariable])-1801 b Fg(rl_compignore_func_t)22 -b(*)d Ff(rl)p 706 400 18 3 v 25 w(ignore)p 887 400 V -24 w(some)p 1037 400 V 25 w(completions)p 1360 400 V -24 w(function)195 455 y Ft(This)f(function,)i(if)e(de\014ned,)j(is)d -(called)g(b)o(y)h(the)g(completer)f(when)i(real)e(\014lename)h -(completion)195 510 y(is)e(done,)g(after)f(all)g(the)h(matc)o(hing)f -(names)h(ha)o(v)o(e)g(b)q(een)h(generated.)25 b(It)17 -b(is)g(passed)g(a)g Fs(NULL)f Ft(ter-)195 564 y(minated)f(arra)o(y)f -(of)h(matc)o(hes.)20 b(The)c(\014rst)f(elemen)o(t)g(\()p -Fs(matches[0])p Ft(\))e(is)i(the)h(maximal)e(substring)195 -619 y(common)g(to)g(all)f(matc)o(hes.)19 b(This)14 b(function)g(can)h -(re-arrange)f(the)g(list)f(of)h(matc)o(hes)g(as)g(required,)195 -674 y(but)h(eac)o(h)h(elemen)o(t)f(deleted)g(from)g(the)g(arra)o(y)f(m) -o(ust)g(b)q(e)i(freed.)1685 760 y([V)l(ariable])-1801 -b Fg(rl_icppfunc_t)21 b(*)e Ff(rl)p 523 760 V 25 w(directory)p -776 760 V 25 w(completion)p 1076 760 V 25 w(ho)r(ok)195 -815 y Ft(This)j(function,)i(if)e(de\014ned,)k(is)c(allo)o(w)o(ed)f(to)h -(mo)q(dify)g(the)h(directory)f(p)q(ortion)g(of)g(\014lenames)195 -870 y(Readline)d(completes.)28 b(It)19 b(is)e(called)h(with)g(the)g -(address)h(of)e(a)h(string)g(\(the)g(curren)o(t)g(directory)195 -924 y(name\))g(as)g(an)h(argumen)o(t,)f(and)h(ma)o(y)f(mo)q(dify)g -(that)g(string.)29 b(If)19 b(the)f(string)g(is)g(replaced)h(with)195 -979 y(a)h(new)g(string,)g(the)g(old)f(v)m(alue)h(should)g(b)q(e)h -(freed.)34 b(An)o(y)20 b(mo)q(di\014ed)h(directory)e(name)h(should)195 -1034 y(ha)o(v)o(e)14 b(a)g(trailing)f(slash.)19 b(The)c(mo)q(di\014ed)g -(v)m(alue)g(will)e(b)q(e)i(displa)o(y)o(ed)f(as)g(part)g(of)h(the)f -(completion,)195 1089 y(replacing)f(the)i(directory)e(p)q(ortion)g(of)h -(the)g(pathname)g(the)h(user)f(t)o(yp)q(ed.)20 b(It)14 -b(returns)g(an)g(in)o(teger)195 1144 y(that)i(should)g(b)q(e)h -(non-zero)g(if)f(the)h(function)f(mo)q(di\014es)h(its)e(directory)h -(argumen)o(t.)23 b(It)17 b(could)f(b)q(e)195 1198 y(used)h(to)f(expand) -i(sym)o(b)q(olic)e(links)g(or)g(shell)g(v)m(ariables)h(in)f(pathnames.) -24 b(A)o(t)17 b(the)g(least,)e(ev)o(en)i(if)195 1253 -y(no)h(other)g(expansion)g(is)f(p)q(erformed,)i(this)f(function)g -(should)g(remo)o(v)o(e)f(an)o(y)h(quote)g(c)o(haracters)195 -1308 y(from)c(the)i(directory)e(name,)h(b)q(ecause)h(its)f(result)f -(will)g(b)q(e)i(passed)f(directly)g(to)f Fs(opendir\(\))p -Ft(.)1685 1394 y([V)l(ariable])-1801 b Fg(rl_compdisp_func_t)22 -b(*)d Ff(rl)p 654 1394 V 25 w(completion)p 954 1394 V -24 w(displa)n(y)p 1153 1394 V 25 w(matc)n(hes)p 1380 -1394 V 26 w(ho)r(ok)195 1449 y Ft(If)11 b(non-zero,)h(then)f(this)g(is) -f(the)h(address)g(of)g(a)g(function)f(to)h(call)f(when)h(completing)g -(a)f(w)o(ord)h(w)o(ould)195 1504 y(normally)f(displa)o(y)g(the)h(list)f -(of)h(p)q(ossible)f(matc)o(hes.)18 b(This)11 b(function)g(is)g(called)f -(in)h(lieu)g(of)g(Readline)195 1558 y(displa)o(ying)17 -b(the)i(list.)28 b(It)19 b(tak)o(es)f(three)g(argumen)o(ts:)26 -b(\()p Fs(char)14 b(**)p Fi(matc)o(hes)p Ft(,)19 b Fs(int)f -Fi(n)o(um)p 1685 1558 14 2 v 20 w(matc)o(hes)p Ft(,)195 -1613 y Fs(int)13 b Fi(max)p 368 1613 V 19 w(length)p -Ft(\))g(where)g Fi(matc)o(hes)i Ft(is)e(the)g(arra)o(y)f(of)h(matc)o -(hing)f(strings,)g Fi(n)o(um)p 1575 1613 V 20 w(matc)o(hes)j -Ft(is)e(the)195 1668 y(n)o(um)o(b)q(er)i(of)f(strings)f(in)i(that)f -(arra)o(y)l(,)f(and)i Fi(max)p 1011 1668 V 19 w(length)f -Ft(is)g(the)h(length)f(of)g(the)h(longest)f(string)f(in)195 -1723 y(that)g(arra)o(y)l(.)19 b(Readline)14 b(pro)o(vides)g(a)f(con)o -(v)o(enience)i(function,)f Fs(rl_display_match_list)p -Ft(,)d(that)195 1778 y(tak)o(es)17 b(care)g(of)g(doing)g(the)g(displa)o -(y)g(to)f(Readline's)i(output)f(stream.)26 b(That)16 -b(function)i(ma)o(y)e(b)q(e)195 1832 y(called)f(from)f(this)h(ho)q(ok.) -1685 1919 y([V)l(ariable])-1801 b Fg(const)20 b(char)g(*)f -Ff(rl)p 438 1919 18 3 v 25 w(basic)p 587 1919 V 24 w(w)n(ord)p -735 1919 V 25 w(break)p 900 1919 V 25 w(c)n(haracters)195 -1973 y Ft(The)j(basic)g(list)f(of)h(c)o(haracters)f(that)g(signal)g(a)h -(break)g(b)q(et)o(w)o(een)g(w)o(ords)g(for)f(the)h(completer)195 -2028 y(routine.)29 b(The)19 b(default)f(v)m(alue)h(of)f(this)g(v)m -(ariable)g(is)g(the)h(c)o(haracters)f(whic)o(h)g(break)h(w)o(ords)f -(for)195 2083 y(completion)c(in)h(Bash:)20 b Fs(")15 -b(\\t\\n\\"\\\\'`@$><=;|&{\(")p Ft(.)1685 2169 y([V)l(ariable])-1801 -b Fg(const)20 b(char)g(*)f Ff(rl)p 438 2169 V 25 w(basic)p -587 2169 V 24 w(quote)p 750 2169 V 26 w(c)n(haracters)195 -2224 y Ft(A)c(list)f(of)h(quote)g(c)o(haracters)f(whic)o(h)h(can)h -(cause)f(a)g(w)o(ord)g(break.)1685 2310 y([V)l(ariable])-1801 -b Fg(const)20 b(char)g(*)f Ff(rl)p 438 2310 V 25 w(completer)p -711 2310 V 25 w(w)n(ord)p 860 2310 V 25 w(break)p 1025 -2310 V 25 w(c)n(haracters)195 2365 y Ft(The)33 b(list)e(of)h(c)o -(haracters)g(that)f(signal)h(a)g(break)g(b)q(et)o(w)o(een)h(w)o(ords)f -(for)g Fs(rl_complete_)195 2419 y(internal\(\))p Ft(.)18 -b(The)e(default)f(list)f(is)g(the)i(v)m(alue)f(of)g Fs -(rl_basic_word_break_chara)o(cters)p Ft(.)1685 2506 y([V)l(ariable]) --1801 b Fg(rl_cpvfunc_t)21 b(*)e Ff(rl)p 497 2506 V 25 -w(completion)p 797 2506 V 25 w(w)n(ord)p 946 2506 V 25 -w(break)p 1111 2506 V 25 w(ho)r(ok)195 2560 y Ft(If)d(non-zero,)g(this) -f(is)g(the)h(address)g(of)f(a)h(function)f(to)g(call)g(when)i(Readline) -f(is)f(deciding)h(where)195 2615 y(to)h(separate)f(w)o(ords)h(for)f(w)o -(ord)g(completion.)25 b(It)18 b(should)f(return)g(a)g(c)o(haracter)f -(string)g(lik)o(e)g Fs(rl_)195 2670 y(completer_word_break_chara)o -(cters)d Ft(to)j(b)q(e)h(used)g(to)f(p)q(erform)g(the)h(curren)o(t)f -(completion.)p eop end -%%Page: 46 50 -TeXDict begin 46 49 bop 75 -58 a Ft(46)1299 b(GNU)15 -b(Readline)g(Library)195 149 y(The)e(function)f(ma)o(y)f(c)o(ho)q(ose)i -(to)f(set)g Fs(rl_completer_word_break_)o(charact)o(ers)d -Ft(itself.)18 b(If)13 b(the)195 204 y(function)i(returns)g +b(with)g(GNU)h(Readline)842 b(45)195 149 y(replacing)13 +b(the)i(directory)e(p)q(ortion)g(of)h(the)g(pathname)g(the)h(user)f(t)o +(yp)q(ed.)20 b(It)14 b(returns)g(an)g(in)o(teger)195 +204 y(that)i(should)g(b)q(e)h(non-zero)g(if)f(the)h(function)f(mo)q +(di\014es)h(its)e(directory)h(argumen)o(t.)23 b(It)17 +b(could)f(b)q(e)195 259 y(used)h(to)f(expand)i(sym)o(b)q(olic)e(links)g +(or)g(shell)g(v)m(ariables)h(in)f(pathnames.)24 b(A)o(t)17 +b(the)g(least,)e(ev)o(en)i(if)195 314 y(no)h(other)g(expansion)g(is)f +(p)q(erformed,)i(this)f(function)g(should)g(remo)o(v)o(e)f(an)o(y)h +(quote)g(c)o(haracters)195 369 y(from)c(the)i(directory)e(name,)h(b)q +(ecause)h(its)f(result)f(will)g(b)q(e)i(passed)f(directly)g(to)f +Fs(opendir\(\))p Ft(.)1685 458 y([V)l(ariable])-1801 +b Fg(rl_compdisp_func_t)22 b(*)d Ff(rl)p 654 458 18 3 +v 25 w(completion)p 954 458 V 24 w(displa)n(y)p 1153 +458 V 25 w(matc)n(hes)p 1380 458 V 26 w(ho)r(ok)195 512 +y Ft(If)11 b(non-zero,)h(then)f(this)g(is)f(the)h(address)g(of)g(a)g +(function)f(to)h(call)f(when)h(completing)g(a)f(w)o(ord)h(w)o(ould)195 +567 y(normally)f(displa)o(y)g(the)h(list)f(of)h(p)q(ossible)f(matc)o +(hes.)18 b(This)11 b(function)g(is)g(called)f(in)h(lieu)g(of)g +(Readline)195 622 y(displa)o(ying)17 b(the)i(list.)28 +b(It)19 b(tak)o(es)f(three)g(argumen)o(ts:)26 b(\()p +Fs(char)14 b(**)p Fi(matc)o(hes)p Ft(,)19 b Fs(int)f +Fi(n)o(um)p 1685 622 14 2 v 20 w(matc)o(hes)p Ft(,)195 +677 y Fs(int)13 b Fi(max)p 368 677 V 19 w(length)p Ft(\))g(where)g +Fi(matc)o(hes)i Ft(is)e(the)g(arra)o(y)f(of)h(matc)o(hing)f(strings,)g +Fi(n)o(um)p 1575 677 V 20 w(matc)o(hes)j Ft(is)e(the)195 +732 y(n)o(um)o(b)q(er)i(of)f(strings)f(in)i(that)f(arra)o(y)l(,)f(and)i +Fi(max)p 1011 732 V 19 w(length)f Ft(is)g(the)h(length)f(of)g(the)h +(longest)f(string)f(in)195 786 y(that)g(arra)o(y)l(.)19 +b(Readline)14 b(pro)o(vides)g(a)f(con)o(v)o(enience)i(function,)f +Fs(rl_display_match_list)p Ft(,)d(that)195 841 y(tak)o(es)17 +b(care)g(of)g(doing)g(the)g(displa)o(y)g(to)f(Readline's)i(output)f +(stream.)26 b(That)16 b(function)i(ma)o(y)e(b)q(e)195 +896 y(called)f(from)f(this)h(ho)q(ok.)1685 985 y([V)l(ariable])-1801 +b Fg(const)20 b(char)g(*)f Ff(rl)p 438 985 18 3 v 25 +w(basic)p 587 985 V 24 w(w)n(ord)p 735 985 V 25 w(break)p +900 985 V 25 w(c)n(haracters)195 1040 y Ft(The)j(basic)g(list)f(of)h(c) +o(haracters)f(that)g(signal)g(a)h(break)g(b)q(et)o(w)o(een)g(w)o(ords)g +(for)f(the)h(completer)195 1095 y(routine.)29 b(The)19 +b(default)f(v)m(alue)h(of)f(this)g(v)m(ariable)g(is)g(the)h(c)o +(haracters)f(whic)o(h)g(break)h(w)o(ords)f(for)195 1149 +y(completion)c(in)h(Bash:)20 b Fs(")15 b(\\t\\n\\"\\\\'`@$><=;|&{\(")p +Ft(.)1685 1238 y([V)l(ariable])-1801 b Fg(const)20 b(char)g(*)f +Ff(rl)p 438 1238 V 25 w(basic)p 587 1238 V 24 w(quote)p +750 1238 V 26 w(c)n(haracters)195 1293 y Ft(A)c(list)f(of)h(quote)g(c)o +(haracters)f(whic)o(h)h(can)h(cause)f(a)g(w)o(ord)g(break.)1685 +1382 y([V)l(ariable])-1801 b Fg(const)20 b(char)g(*)f +Ff(rl)p 438 1382 V 25 w(completer)p 711 1382 V 25 w(w)n(ord)p +860 1382 V 25 w(break)p 1025 1382 V 25 w(c)n(haracters)195 +1437 y Ft(The)33 b(list)e(of)h(c)o(haracters)g(that)f(signal)h(a)g +(break)g(b)q(et)o(w)o(een)h(w)o(ords)f(for)g Fs(rl_complete_)195 +1492 y(internal\(\))p Ft(.)18 b(The)e(default)f(list)f(is)g(the)i(v)m +(alue)f(of)g Fs(rl_basic_word_break_chara)o(cters)p Ft(.)1685 +1581 y([V)l(ariable])-1801 b Fg(rl_cpvfunc_t)21 b(*)e +Ff(rl)p 497 1581 V 25 w(completion)p 797 1581 V 25 w(w)n(ord)p +946 1581 V 25 w(break)p 1111 1581 V 25 w(ho)r(ok)195 +1636 y Ft(If)d(non-zero,)g(this)f(is)g(the)h(address)g(of)f(a)h +(function)f(to)g(call)g(when)i(Readline)f(is)f(deciding)h(where)195 +1691 y(to)h(separate)f(w)o(ords)h(for)f(w)o(ord)g(completion.)25 +b(It)18 b(should)f(return)g(a)g(c)o(haracter)f(string)g(lik)o(e)g +Fs(rl_)195 1745 y(completer_word_break_chara)o(cters)d +Ft(to)j(b)q(e)h(used)g(to)f(p)q(erform)g(the)h(curren)o(t)f +(completion.)195 1800 y(The)d(function)f(ma)o(y)f(c)o(ho)q(ose)i(to)f +(set)g Fs(rl_completer_word_break_)o(charact)o(ers)d +Ft(itself.)18 b(If)13 b(the)195 1855 y(function)i(returns)g Fs(NULL)p Ft(,)f Fs(rl_completer_word_break_chara)o(cters)e -Ft(is)j(used.)1685 289 y([V)l(ariable])-1801 b Fg(const)20 -b(char)g(*)f Ff(rl)p 438 289 18 3 v 25 w(completer)p -711 289 V 25 w(quote)p 875 289 V 25 w(c)n(haracters)195 -344 y Ft(A)e(list)f(of)g(c)o(haracters)g(whic)o(h)h(can)g(b)q(e)g(used) -h(to)e(quote)h(a)f(substring)g(of)h(the)g(line.)24 b(Completion)195 -399 y(o)q(ccurs)13 b(on)h(the)f(en)o(tire)f(substring,)h(and)g(within)g -(the)g(substring)f Fs(rl_completer_word_break_)195 454 -y(characters)k Ft(are)h(treated)g(as)h(an)o(y)f(other)g(c)o(haracter,)g -(unless)h(they)f(also)g(app)q(ear)h(within)f(this)195 -509 y(list.)1685 594 y([V)l(ariable])-1801 b Fg(const)20 -b(char)g(*)f Ff(rl)p 438 594 V 25 w(\014lename)p 671 -594 V 24 w(quote)p 834 594 V 26 w(c)n(haracters)195 649 -y Ft(A)e(list)f(of)g(c)o(haracters)g(that)g(cause)h(a)g(\014lename)g -(to)f(b)q(e)i(quoted)e(b)o(y)h(the)g(completer)g(when)g(they)195 -703 y(app)q(ear)e(in)g(a)g(completed)g(\014lename.)20 -b(The)c(default)f(is)f(the)i(n)o(ull)e(string.)1685 789 +Ft(is)j(used.)1685 1944 y([V)l(ariable])-1801 b Fg(const)20 +b(char)g(*)f Ff(rl)p 438 1944 V 25 w(completer)p 711 +1944 V 25 w(quote)p 875 1944 V 25 w(c)n(haracters)195 +1999 y Ft(A)e(list)f(of)g(c)o(haracters)g(whic)o(h)h(can)g(b)q(e)g +(used)h(to)e(quote)h(a)f(substring)g(of)h(the)g(line.)24 +b(Completion)195 2054 y(o)q(ccurs)13 b(on)h(the)f(en)o(tire)f +(substring,)h(and)g(within)g(the)g(substring)f Fs +(rl_completer_word_break_)195 2108 y(characters)k Ft(are)h(treated)g +(as)h(an)o(y)f(other)g(c)o(haracter,)g(unless)h(they)f(also)g(app)q +(ear)h(within)f(this)195 2163 y(list.)1685 2252 y([V)l(ariable])-1801 +b Fg(const)20 b(char)g(*)f Ff(rl)p 438 2252 V 25 w(\014lename)p +671 2252 V 24 w(quote)p 834 2252 V 26 w(c)n(haracters)195 +2307 y Ft(A)e(list)f(of)g(c)o(haracters)g(that)g(cause)h(a)g +(\014lename)g(to)f(b)q(e)i(quoted)e(b)o(y)h(the)g(completer)g(when)g +(they)195 2362 y(app)q(ear)e(in)g(a)g(completed)g(\014lename.)20 +b(The)c(default)f(is)f(the)i(n)o(ull)e(string.)1685 2451 y([V)l(ariable])-1801 b Fg(const)20 b(char)g(*)f Ff(rl)p -438 789 V 25 w(sp)r(ecial)p 631 789 V 24 w(pre\014xes)195 -844 y Ft(The)14 b(list)f(of)g(c)o(haracters)g(that)g(are)h(w)o(ord)f +438 2451 V 25 w(sp)r(ecial)p 631 2451 V 24 w(pre\014xes)195 +2506 y Ft(The)14 b(list)f(of)g(c)o(haracters)g(that)g(are)h(w)o(ord)f (break)h(c)o(haracters,)f(but)h(should)g(b)q(e)g(left)f(in)h -Fi(text)g Ft(when)195 898 y(it)e(is)f(passed)i(to)f(the)g(completion)f +Fi(text)g Ft(when)195 2560 y(it)e(is)f(passed)i(to)f(the)g(completion)f (function.)19 b(Programs)11 b(can)h(use)h(this)f(to)g(help)g(determine) -h(what)195 953 y(kind)i(of)f(completing)g(to)g(do.)19 +h(what)195 2615 y(kind)i(of)f(completing)g(to)g(do.)19 b(F)l(or)14 b(instance,)h(Bash)f(sets)h(this)f(v)m(ariable)g(to)g -Fs(")p Ft($)p Fs(@")g Ft(so)g(that)g(it)g(can)195 1008 -y(complete)h(shell)g(v)m(ariables)f(and)i(hostnames.)1685 -1093 y([V)l(ariable])-1801 b Fg(int)20 b Ff(rl)p 217 -1093 V 24 w(completion)p 516 1093 V 25 w(query)p 683 -1093 V 25 w(items)195 1148 y Ft(Up)e(to)g(this)f(man)o(y)h(items)f -(will)g(b)q(e)i(displa)o(y)o(ed)e(in)h(resp)q(onse)h(to)e(a)h(p)q -(ossible-completions)f(call.)195 1203 y(After)d(that,)f(readline)g -(asks)h(the)g(user)g(if)f(she)h(is)g(sure)g(she)g(w)o(an)o(ts)f(to)g -(see)h(them)g(all.)k(The)c(default)195 1258 y(v)m(alue)h(is)g(100.)k(A) -c(negativ)o(e)g(v)m(alue)g(indicates)g(that)f(Readline)i(should)f(nev)o -(er)g(ask)g(the)g(user.)1685 1343 y([V)l(ariable])-1801 -b Fg(int)20 b Ff(rl)p 217 1343 V 24 w(completion)p 516 -1343 V 25 w(app)r(end)p 725 1343 V 24 w(c)n(haracter)195 -1398 y Ft(When)d(a)f(single)g(completion)g(alternativ)o(e)f(matc)o(hes) -h(at)g(the)h(end)g(of)f(the)h(command)f(line,)h(this)195 -1452 y(c)o(haracter)10 b(is)g(app)q(ended)j(to)d(the)g(inserted)h -(completion)f(text.)18 b(The)11 b(default)f(is)g(a)h(space)g(c)o -(haracter)195 1507 y(\(`)j('\).)42 b(Setting)22 b(this)g(to)g(the)h(n)o -(ull)f(c)o(haracter)g(\(`)p Fs(\\0)p Ft('\))f(prev)o(en)o(ts)i(an)o -(ything)e(b)q(eing)i(app)q(ended)195 1562 y(automatically)l(.)29 +Fs(")p Ft($)p Fs(@")g Ft(so)g(that)g(it)g(can)195 2670 +y(complete)h(shell)g(v)m(ariables)f(and)i(hostnames.)p +eop end +%%Page: 46 50 +TeXDict begin 46 49 bop 75 -58 a Ft(46)1299 b(GNU)15 +b(Readline)g(Library)1685 149 y([V)l(ariable])-1801 b +Fg(int)20 b Ff(rl)p 217 149 18 3 v 24 w(completion)p +516 149 V 25 w(query)p 683 149 V 25 w(items)195 204 y +Ft(Up)e(to)g(this)f(man)o(y)h(items)f(will)g(b)q(e)i(displa)o(y)o(ed)e +(in)h(resp)q(onse)h(to)e(a)h(p)q(ossible-completions)f(call.)195 +259 y(After)d(that,)f(readline)g(asks)h(the)g(user)g(if)f(she)h(is)g +(sure)g(she)g(w)o(an)o(ts)f(to)g(see)h(them)g(all.)k(The)c(default)195 +314 y(v)m(alue)h(is)g(100.)k(A)c(negativ)o(e)g(v)m(alue)g(indicates)g +(that)f(Readline)i(should)f(nev)o(er)g(ask)g(the)g(user.)1685 +410 y([V)l(ariable])-1801 b Fg(int)20 b Ff(rl)p 217 410 +V 24 w(completion)p 516 410 V 25 w(app)r(end)p 725 410 +V 24 w(c)n(haracter)195 465 y Ft(When)d(a)f(single)g(completion)g +(alternativ)o(e)f(matc)o(hes)h(at)g(the)h(end)g(of)f(the)h(command)f +(line,)h(this)195 519 y(c)o(haracter)10 b(is)g(app)q(ended)j(to)d(the)g +(inserted)h(completion)f(text.)18 b(The)11 b(default)f(is)g(a)h(space)g +(c)o(haracter)195 574 y(\(`)j('\).)42 b(Setting)22 b(this)g(to)g(the)h +(n)o(ull)f(c)o(haracter)g(\(`)p Fs(\\0)p Ft('\))f(prev)o(en)o(ts)i(an)o +(ything)e(b)q(eing)i(app)q(ended)195 629 y(automatically)l(.)29 b(This)18 b(can)h(b)q(e)h(c)o(hanged)f(in)f(application-sp)q(eci\014c)h -(completion)f(functions)h(to)195 1617 y(pro)o(vide)g(the)h(\\most)f +(completion)f(functions)h(to)195 684 y(pro)o(vide)g(the)h(\\most)f (sensible)h(w)o(ord)f(separator)g(c)o(haracter")g(according)g(to)g(an)h -(application-)195 1672 y(sp)q(eci\014c)c(command)f(line)g(syn)o(tax)f -(sp)q(eci\014cation.)1685 1757 y([V)l(ariable])-1801 -b Fg(int)20 b Ff(rl)p 217 1757 V 24 w(completion)p 516 -1757 V 25 w(suppress)p 756 1757 V 23 w(app)r(end)195 -1812 y Ft(If)d(non-zero,)g Fi(rl)p 475 1812 14 2 v 19 -w(completion)p 712 1812 V 19 w(app)q(end)p 875 1812 V -22 w(c)o(haracter)i Ft(is)d(not)g(app)q(ended)i(to)e(matc)o(hes)h(at)f -(the)g(end)195 1866 y(of)d(the)h(command)g(line,)f(as)h(describ)q(ed)g -(ab)q(o)o(v)o(e.)19 b(It)14 b(is)g(set)f(to)g(0)h(b)q(efore)g(an)o(y)f -(application-sp)q(eci\014c)195 1921 y(completion)h(function)h(is)g -(called,)f(and)i(ma)o(y)e(only)h(b)q(e)h(c)o(hanged)f(within)g(suc)o(h) -g(a)g(function.)1685 2006 y([V)l(ariable])-1801 b Fg(int)20 -b Ff(rl)p 217 2006 18 3 v 24 w(completion)p 516 2006 -V 25 w(quote)p 680 2006 V 25 w(c)n(haracter)195 2061 -y Ft(When)e(Readline)h(is)e(completing)h(quoted)g(text,)g(as)f -(delimited)h(b)o(y)g(one)g(of)g(the)g(c)o(haracters)f(in)195 -2116 y Fi(rl)p 229 2116 14 2 v 19 w(completer)p 443 2116 -V 20 w(quote)p 573 2116 V 20 w(c)o(haracters)p Ft(,)i(it)g(sets)g(this) -g(v)m(ariable)g(to)g(the)h(quoting)e(c)o(haracter)h(found.)195 -2171 y(This)c(is)f(set)h(b)q(efore)h(an)o(y)f(application-sp)q -(eci\014c)g(completion)f(function)h(is)g(called.)1685 -2256 y([V)l(ariable])-1801 b Fg(int)20 b Ff(rl)p 217 -2256 18 3 v 24 w(completion)p 516 2256 V 25 w(suppress)p -756 2256 V 23 w(quote)195 2311 y Ft(If)c(non-zero,)h(Readline)f(do)q -(es)h(not)e(app)q(end)j(a)d(matc)o(hing)h(quote)g(c)o(haracter)f(when)i -(p)q(erforming)195 2366 y(completion)11 b(on)h(a)f(quoted)h(string.)18 -b(It)11 b(is)h(set)f(to)g(0)h(b)q(efore)g(an)o(y)f(application-sp)q -(eci\014c)h(completion)195 2420 y(function)j(is)g(called,)f(and)i(ma)o +(application-)195 738 y(sp)q(eci\014c)c(command)f(line)g(syn)o(tax)f +(sp)q(eci\014cation.)1685 834 y([V)l(ariable])-1801 b +Fg(int)20 b Ff(rl)p 217 834 V 24 w(completion)p 516 834 +V 25 w(suppress)p 756 834 V 23 w(app)r(end)195 889 y +Ft(If)d(non-zero,)g Fi(rl)p 475 889 14 2 v 19 w(completion)p +712 889 V 19 w(app)q(end)p 875 889 V 22 w(c)o(haracter)i +Ft(is)d(not)g(app)q(ended)i(to)e(matc)o(hes)h(at)f(the)g(end)195 +944 y(of)d(the)h(command)g(line,)f(as)h(describ)q(ed)g(ab)q(o)o(v)o(e.) +19 b(It)14 b(is)g(set)f(to)g(0)h(b)q(efore)g(an)o(y)f(application-sp)q +(eci\014c)195 999 y(completion)h(function)h(is)g(called,)f(and)i(ma)o (y)e(only)h(b)q(e)h(c)o(hanged)f(within)g(suc)o(h)g(a)g(function.)1685 -2506 y([V)l(ariable])-1801 b Fg(int)20 b Ff(rl)p 217 -2506 V 24 w(completion)p 516 2506 V 25 w(found)p 684 -2506 V 24 w(quote)195 2560 y Ft(When)c(Readline)g(is)g(completing)f -(quoted)g(text,)h(it)f(sets)g(this)g(v)m(ariable)h(to)f(a)g(non-zero)h -(v)m(alue)g(if)195 2615 y(the)11 b(w)o(ord)e(b)q(eing)i(completed)g -(con)o(tains)e(or)i(is)f(delimited)f(b)o(y)i(an)o(y)f(quoting)g(c)o -(haracters,)g(including)195 2670 y(bac)o(kslashes.)19 -b(This)c(is)g(set)g(b)q(efore)g(an)o(y)g(application-sp)q(eci\014c)g -(completion)f(function)h(is)g(called.)p eop end -%%Page: 47 51 -TeXDict begin 47 50 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14 -b(with)g(GNU)h(Readline)842 b(47)1685 149 y([V)l(ariable])-1801 -b Fg(int)20 b Ff(rl)p 217 149 18 3 v 24 w(completion)p -516 149 V 25 w(mark)p 671 149 V 25 w(symlink)p 891 149 -V 24 w(dirs)195 204 y Ft(If)c(non-zero,)g(a)g(slash)f(will)g(b)q(e)h -(app)q(ended)i(to)d(completed)h(\014lenames)g(that)f(are)g(sym)o(b)q -(olic)h(links)195 259 y(to)11 b(directory)h(names,)g(sub)s(ject)g(to)f -(the)i(v)m(alue)f(of)g(the)g(user-settable)f Fi(mark-directories)i -Ft(v)m(ariable.)195 314 y(This)g(v)m(ariable)g(exists)g(so)h(that)f -(application-sp)q(eci\014c)g(completion)g(functions)g(can)h(o)o(v)o -(erride)f(the)195 369 y(user's)21 b(global)f(preference)i(\(set)e(via)h -(the)g Fi(mark-symlink)o(ed-directories)g Ft(Readline)h(v)m(ariable\)) -195 423 y(if)c(appropriate.)30 b(This)18 b(v)m(ariable)g(is)h(set)f(to) -g(the)h(user's)g(preference)h(b)q(efore)f(an)o(y)f(application-)195 -478 y(sp)q(eci\014c)f(completion)e(function)g(is)h(called,)f(so)g +1095 y([V)l(ariable])-1801 b Fg(int)20 b Ff(rl)p 217 +1095 18 3 v 24 w(completion)p 516 1095 V 25 w(quote)p +680 1095 V 25 w(c)n(haracter)195 1149 y Ft(When)e(Readline)h(is)e +(completing)h(quoted)g(text,)g(as)f(delimited)h(b)o(y)g(one)g(of)g(the) +g(c)o(haracters)f(in)195 1204 y Fi(rl)p 229 1204 14 2 +v 19 w(completer)p 443 1204 V 20 w(quote)p 573 1204 V +20 w(c)o(haracters)p Ft(,)i(it)g(sets)g(this)g(v)m(ariable)g(to)g(the)h +(quoting)e(c)o(haracter)h(found.)195 1259 y(This)c(is)f(set)h(b)q +(efore)h(an)o(y)f(application-sp)q(eci\014c)g(completion)f(function)h +(is)g(called.)1685 1355 y([V)l(ariable])-1801 b Fg(int)20 +b Ff(rl)p 217 1355 18 3 v 24 w(completion)p 516 1355 +V 25 w(suppress)p 756 1355 V 23 w(quote)195 1410 y Ft(If)c(non-zero,)h +(Readline)f(do)q(es)h(not)e(app)q(end)j(a)d(matc)o(hing)h(quote)g(c)o +(haracter)f(when)i(p)q(erforming)195 1465 y(completion)11 +b(on)h(a)f(quoted)h(string.)18 b(It)11 b(is)h(set)f(to)g(0)h(b)q(efore) +g(an)o(y)f(application-sp)q(eci\014c)h(completion)195 +1519 y(function)j(is)g(called,)f(and)i(ma)o(y)e(only)h(b)q(e)h(c)o +(hanged)f(within)g(suc)o(h)g(a)g(function.)1685 1615 +y([V)l(ariable])-1801 b Fg(int)20 b Ff(rl)p 217 1615 +V 24 w(completion)p 516 1615 V 25 w(found)p 684 1615 +V 24 w(quote)195 1670 y Ft(When)c(Readline)g(is)g(completing)f(quoted)g +(text,)h(it)f(sets)g(this)g(v)m(ariable)h(to)f(a)g(non-zero)h(v)m(alue) +g(if)195 1725 y(the)11 b(w)o(ord)e(b)q(eing)i(completed)g(con)o(tains)e +(or)i(is)f(delimited)f(b)o(y)i(an)o(y)f(quoting)g(c)o(haracters,)g +(including)195 1780 y(bac)o(kslashes.)19 b(This)c(is)g(set)g(b)q(efore) +g(an)o(y)g(application-sp)q(eci\014c)g(completion)f(function)h(is)g +(called.)1685 1875 y([V)l(ariable])-1801 b Fg(int)20 +b Ff(rl)p 217 1875 V 24 w(completion)p 516 1875 V 25 +w(mark)p 671 1875 V 25 w(symlink)p 891 1875 V 24 w(dirs)195 +1930 y Ft(If)c(non-zero,)g(a)g(slash)f(will)g(b)q(e)h(app)q(ended)i(to) +d(completed)h(\014lenames)g(that)f(are)g(sym)o(b)q(olic)h(links)195 +1985 y(to)11 b(directory)h(names,)g(sub)s(ject)g(to)f(the)i(v)m(alue)f +(of)g(the)g(user-settable)f Fi(mark-directories)i Ft(v)m(ariable.)195 +2040 y(This)g(v)m(ariable)g(exists)g(so)h(that)f(application-sp)q +(eci\014c)g(completion)g(functions)g(can)h(o)o(v)o(erride)f(the)195 +2095 y(user's)21 b(global)f(preference)i(\(set)e(via)h(the)g +Fi(mark-symlink)o(ed-directories)g Ft(Readline)h(v)m(ariable\))195 +2149 y(if)c(appropriate.)30 b(This)18 b(v)m(ariable)g(is)h(set)f(to)g +(the)h(user's)g(preference)h(b)q(efore)f(an)o(y)f(application-)195 +2204 y(sp)q(eci\014c)f(completion)e(function)g(is)h(called,)f(so)g (unless)h(that)f(function)h(mo)q(di\014es)g(the)g(v)m(alue,)g(the)195 -533 y(user's)f(preferences)h(are)f(honored.)1685 644 -y([V)l(ariable])-1801 b Fg(int)20 b Ff(rl)p 217 644 V -24 w(ignore)p 397 644 V 24 w(completion)p 696 644 V 25 -w(duplicates)195 699 y Ft(If)15 b(non-zero,)h(then)f(duplicates)g(in)g -(the)g(matc)o(hes)g(are)g(remo)o(v)o(ed.)k(The)d(default)f(is)f(1.)1685 -810 y([V)l(ariable])-1801 b Fg(int)20 b Ff(rl)p 217 810 -V 24 w(\014lename)p 449 810 V 25 w(completion)p 749 810 -V 25 w(desired)195 865 y Ft(Non-zero)c(means)g(that)f(the)h(results)f -(of)h(the)g(matc)o(hes)f(are)h(to)f(b)q(e)i(treated)e(as)g -(\014lenames.)22 b(This)195 920 y(is)d Fn(always)24 b -Ft(zero)c(when)g(completion)f(is)h(attempted,)g(and)g(can)g(only)g(b)q -(e)h(c)o(hanged)f(within)f(an)195 975 y(application-sp)q(eci\014c)g +2259 y(user's)f(preferences)h(are)f(honored.)1685 2355 +y([V)l(ariable])-1801 b Fg(int)20 b Ff(rl)p 217 2355 +V 24 w(ignore)p 397 2355 V 24 w(completion)p 696 2355 +V 25 w(duplicates)195 2410 y Ft(If)15 b(non-zero,)h(then)f(duplicates)g +(in)g(the)g(matc)o(hes)g(are)g(remo)o(v)o(ed.)k(The)d(default)f(is)f +(1.)1685 2506 y([V)l(ariable])-1801 b Fg(int)20 b Ff(rl)p +217 2506 V 24 w(\014lename)p 449 2506 V 25 w(completion)p +749 2506 V 25 w(desired)195 2560 y Ft(Non-zero)c(means)g(that)f(the)h +(results)f(of)h(the)g(matc)o(hes)f(are)h(to)f(b)q(e)i(treated)e(as)g +(\014lenames.)22 b(This)195 2615 y(is)d Fn(always)24 +b Ft(zero)c(when)g(completion)f(is)h(attempted,)g(and)g(can)g(only)g(b) +q(e)h(c)o(hanged)f(within)f(an)195 2670 y(application-sp)q(eci\014c)g (completion)g(function.)34 b(If)20 b(it)e(is)i(set)f(to)g(a)h(non-zero) -g(v)m(alue)g(b)o(y)f(suc)o(h)h(a)195 1030 y(function,)11 +g(v)m(alue)g(b)o(y)f(suc)o(h)h(a)p eop end +%%Page: 47 51 +TeXDict begin 47 50 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14 +b(with)g(GNU)h(Readline)842 b(47)195 149 y(function,)11 b(directory)g(names)g(ha)o(v)o(e)g(a)f(slash)h(app)q(ended)i(and)e -(Readline)g(attempts)g(to)f(quote)h(com-)195 1084 y(pleted)18 +(Readline)g(attempts)g(to)f(quote)h(com-)195 204 y(pleted)18 b(\014lenames)f(if)g(they)h(con)o(tain)f(an)o(y)g(c)o(haracters)f(in)i -Fs(rl_filename_quote_charact)o(ers)195 1139 y Ft(and)d +Fs(rl_filename_quote_charact)o(ers)195 259 y Ft(and)d Fs(rl_filename_quoting_desired)d Ft(is)j(set)g(to)f(a)h(non-zero)g(v)m -(alue.)1685 1250 y([V)l(ariable])-1801 b Fg(int)20 b -Ff(rl)p 217 1250 V 24 w(\014lename)p 449 1250 V 25 w(quoting)p -664 1250 V 25 w(desired)195 1305 y Ft(Non-zero)14 b(means)g(that)f(the) -i(results)e(of)h(the)g(matc)o(hes)f(are)h(to)f(b)q(e)i(quoted)f(using)g -(double)g(quotes)195 1360 y(\(or)20 b(an)i(application-sp)q(eci\014c)e +(alue.)1685 351 y([V)l(ariable])-1801 b Fg(int)20 b Ff(rl)p +217 351 18 3 v 24 w(\014lename)p 449 351 V 25 w(quoting)p +664 351 V 25 w(desired)195 406 y Ft(Non-zero)14 b(means)g(that)f(the)i +(results)e(of)h(the)g(matc)o(hes)f(are)h(to)f(b)q(e)i(quoted)f(using)g +(double)g(quotes)195 461 y(\(or)20 b(an)i(application-sp)q(eci\014c)e (quoting)h(mec)o(hanism\))f(if)h(the)g(completed)h(\014lename)f(con)o -(tains)195 1415 y(an)o(y)13 b(c)o(haracters)h(in)f Fs +(tains)195 516 y(an)o(y)13 b(c)o(haracters)h(in)f Fs (rl_filename_quote_chars)p Ft(.)j(This)e(is)f Fn(always)18 -b Ft(non-zero)c(when)g(comple-)195 1470 y(tion)f(is)g(attempted,)h(and) -g(can)g(only)f(b)q(e)h(c)o(hanged)h(within)e(an)g(application-sp)q -(eci\014c)h(completion)195 1524 y(function.)k(The)11 -b(quoting)f(is)g(e\013ected)g(via)g(a)g(call)g(to)g(the)h(function)f(p) -q(oin)o(ted)g(to)g(b)o(y)h Fs(rl_filename_)195 1579 y(quoting_function) -p Ft(.)1685 1690 y([V)l(ariable])-1801 b Fg(int)20 b -Ff(rl)p 217 1690 V 24 w(attempted)p 499 1690 V 26 w(completion)p -800 1690 V 25 w(o)n(v)n(er)195 1745 y Ft(If)47 b(an)g(application-sp)q +b Ft(non-zero)c(when)g(comple-)195 570 y(tion)f(is)g(attempted,)h(and)g +(can)g(only)f(b)q(e)h(c)o(hanged)h(within)e(an)g(application-sp)q +(eci\014c)h(completion)195 625 y(function.)k(The)11 b(quoting)f(is)g +(e\013ected)g(via)g(a)g(call)g(to)g(the)h(function)f(p)q(oin)o(ted)g +(to)g(b)o(y)h Fs(rl_filename_)195 680 y(quoting_function)p +Ft(.)1685 772 y([V)l(ariable])-1801 b Fg(int)20 b Ff(rl)p +217 772 V 24 w(attempted)p 499 772 V 26 w(completion)p +800 772 V 25 w(o)n(v)n(er)195 827 y Ft(If)47 b(an)g(application-sp)q (eci\014c)g(completion)f(function)h(assigned)f(to)h Fs(rl_attempted_) -195 1800 y(completion_function)24 b Ft(sets)i(this)g(v)m(ariable)g(to)g +195 882 y(completion_function)24 b Ft(sets)i(this)g(v)m(ariable)g(to)g (a)g(non-zero)h(v)m(alue,)i(Readline)e(will)e(not)195 -1855 y(p)q(erform)15 b(its)f(default)g(\014lename)h(completion)f(ev)o +936 y(p)q(erform)15 b(its)f(default)g(\014lename)h(completion)f(ev)o (en)h(if)f(the)h(application's)e(completion)h(function)195 -1910 y(returns)h(no)g(matc)o(hes.)20 b(It)15 b(should)g(b)q(e)h(set)f +991 y(returns)h(no)g(matc)o(hes.)20 b(It)15 b(should)g(b)q(e)h(set)f (only)g(b)o(y)g(an)g(application's)e(completion)i(function.)1685 -2021 y([V)l(ariable])-1801 b Fg(int)20 b Ff(rl)p 217 -2021 V 24 w(sort)p 339 2021 V 25 w(completion)p 639 2021 -V 24 w(matc)n(hes)195 2076 y Ft(If)15 b(an)g(application)f(sets)g(this) -h(v)m(ariable)f(to)g(0,)g(Readline)i(will)d(not)i(sort)f(the)h(list)e -(of)i(completions)195 2131 y(\(whic)o(h)d(implies)f(that)h(it)f(cannot) -h(remo)o(v)o(e)g(an)o(y)g(duplicate)g(completions\).)18 -b(The)12 b(default)g(v)m(alue)g(is)195 2185 y(1,)j(whic)o(h)g(means)h -(that)f(Readline)h(will)e(sort)h(the)g(completions)g(and,)h(dep)q -(ending)g(on)g(the)g(v)m(alue)195 2240 y(of)f Fs -(rl_ignore_completion_dup)o(licates)p Ft(,)c(will)j(attempt)g(to)h -(remo)o(v)o(e)f(duplicate)h(matc)o(hes.)1685 2351 y([V)l(ariable])-1801 -b Fg(int)20 b Ff(rl)p 217 2351 V 24 w(completion)p 516 -2351 V 25 w(t)n(yp)r(e)195 2406 y Ft(Set)e(to)e(a)i(c)o(haracter)f -(describing)g(the)g(t)o(yp)q(e)h(of)f(completion)g(Readline)h(is)f -(curren)o(tly)g(attempt-)195 2461 y(ing;)g(see)g(the)f(description)g -(of)h Fs(rl_complete_internal\(\))c Ft(\(see)k(Section)g(2.6.2)e -([Completion)195 2516 y(F)l(unctions],)j(page)g(43\))g(for)f(the)i -(list)e(of)h(c)o(haracters.)28 b(This)18 b(is)g(set)g(to)g(the)g -(appropriate)g(v)m(alue)195 2571 y(b)q(efore)e(an)o(y)g(application-sp) -q(eci\014c)f(completion)g(function)h(is)f(called,)g(allo)o(wing)f(suc)o -(h)i(functions)195 2625 y(to)f(presen)o(t)g(the)g(same)g(in)o(terface)f -(as)h Fs(rl_complete\(\))p Ft(.)p eop end -%%Page: 48 52 -TeXDict begin 48 51 bop 75 -58 a Ft(48)1299 b(GNU)15 -b(Readline)g(Library)1685 149 y([V)l(ariable])-1801 b -Fg(int)20 b Ff(rl)p 217 149 18 3 v 24 w(completion)p -516 149 V 25 w(in)n(v)n(oking)p 751 149 V 25 w(k)n(ey)195 -204 y Ft(Set)g(to)g(the)h(\014nal)f(c)o(haracter)f(in)i(the)f(k)o(ey)g -(sequence)i(that)d(in)o(v)o(ok)o(ed)h(one)g(of)g(the)h(completion)195 -259 y(functions)e(that)f(call)f Fs(rl_complete_internal\(\))p -Ft(.)28 b(This)18 b(is)h(set)f(to)g(the)h(appropriate)f(v)m(alue)195 -314 y(b)q(efore)d(an)o(y)g(application-sp)q(eci\014c)g(completion)g -(function)g(is)f(called.)1685 406 y([V)l(ariable])-1801 -b Fg(int)20 b Ff(rl)p 217 406 V 24 w(inhibit)p 407 406 -V 25 w(completion)195 461 y Ft(If)14 b(this)g(v)m(ariable)f(is)h +1083 y([V)l(ariable])-1801 b Fg(int)20 b Ff(rl)p 217 +1083 V 24 w(completion)p 516 1083 V 25 w(t)n(yp)r(e)195 +1138 y Ft(Set)e(to)e(a)i(c)o(haracter)f(describing)g(the)g(t)o(yp)q(e)h +(of)f(completion)g(Readline)h(is)f(curren)o(tly)g(attempt-)195 +1193 y(ing;)g(see)g(the)f(description)g(of)h Fs +(rl_complete_internal\(\))c Ft(\(see)k(Section)g(2.6.2)e([Completion) +195 1248 y(F)l(unctions],)j(page)g(42\))g(for)f(the)i(list)e(of)h(c)o +(haracters.)28 b(This)18 b(is)g(set)g(to)g(the)g(appropriate)g(v)m +(alue)195 1303 y(b)q(efore)e(an)o(y)g(application-sp)q(eci\014c)f +(completion)g(function)h(is)f(called,)g(allo)o(wing)f(suc)o(h)i +(functions)195 1357 y(to)f(presen)o(t)g(the)g(same)g(in)o(terface)f(as) +h Fs(rl_complete\(\))p Ft(.)1685 1450 y([V)l(ariable])-1801 +b Fg(int)20 b Ff(rl)p 217 1450 V 24 w(inhibit)p 407 1450 +V 25 w(completion)195 1504 y Ft(If)14 b(this)g(v)m(ariable)f(is)h (non-zero,)g(completion)g(is)f(inhibited.)19 b(The)c(completion)e(c)o -(haracter)g(will)g(b)q(e)195 516 y(inserted)i(as)g(an)o(y)g(other)g(b)q -(ound)h(to)e Fs(self-insert)p Ft(.)75 628 y Fh(2.6.4)30 -b(A)21 b(Short)f(Completion)g(Example)137 750 y Ft(Here)11 +(haracter)g(will)g(b)q(e)195 1559 y(inserted)i(as)g(an)o(y)g(other)g(b) +q(ound)h(to)e Fs(self-insert)p Ft(.)75 1671 y Fh(2.6.4)30 +b(A)21 b(Short)f(Completion)g(Example)137 1793 y Ft(Here)11 b(is)e(a)h(small)f(application)g(demonstrating)g(the)h(use)h(of)e(the)i (GNU)f(Readline)g(library)l(.)17 b(It)11 b(is)e(called)75 -804 y Fs(fileman)p Ft(,)17 b(and)h(the)g(source)g(co)q(de)g(resides)g +1848 y Fs(fileman)p Ft(,)17 b(and)h(the)g(source)g(co)q(de)g(resides)g (in)f(`)p Fs(examples/fileman.c)p Ft('.)25 b(This)17 -b(sample)g(application)75 859 y(pro)o(vides)c(completion)f(of)g +b(sample)g(application)75 1903 y(pro)o(vides)c(completion)f(of)g (command)h(names,)g(line)g(editing)g(features,)f(and)i(access)f(to)f (the)h(history)g(list.)p eop end -%%Page: 49 53 -TeXDict begin 49 52 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14 -b(with)g(GNU)h(Readline)842 b(49)195 149 y Fd(/*)19 b(fileman.c)d(--)j -(A)g(tiny)f(applicatio)o(n)e(which)i(demonstrat)o(es)e(how)j(to)f(use)h -(the)254 193 y(GNU)f(Readline)f(library.)36 b(This)18 -b(applicatio)o(n)e(interactive)o(ly)g(allows)h(users)254 -237 y(to)i(manipulat)o(e)d(files)i(and)h(their)e(modes.)h(*/)195 -324 y(#include)f()195 367 y(#include)g() -195 411 y(#include)g()195 455 y(#include)g()195 498 y(#include)g()195 -585 y(#include)g()195 -629 y(#include)g()195 -716 y(extern)g(char)h(*xmalloc)f(\(\);)195 803 y(/*)i(The)f(names)g(of) -h(functions)d(that)i(actually)f(do)h(the)h(manipulat)o(ion)o(.)d(*/)195 -847 y(int)i(com_list)f(__P\(\(char)f(*\)\);)195 890 y(int)i(com_view)f -(__P\(\(char)f(*\)\);)195 934 y(int)i(com_rename)e(__P\(\(char)g -(*\)\);)195 978 y(int)i(com_stat)f(__P\(\(char)f(*\)\);)195 -1021 y(int)i(com_pwd)f(__P\(\(char)f(*\)\);)195 1065 -y(int)i(com_delete)e(__P\(\(char)g(*\)\);)195 1108 y(int)i(com_help)f -(__P\(\(char)f(*\)\);)195 1152 y(int)i(com_cd)g(__P\(\(char)e(*\)\);) -195 1196 y(int)i(com_quit)f(__P\(\(char)f(*\)\);)195 -1283 y(/*)j(A)g(structure)d(which)i(contains)e(information)g(on)j(the)f -(commands)f(this)h(program)254 1326 y(can)g(understand)o(.)f(*/)195 -1413 y(typedef)g(struct)g({)234 1457 y(char)h(*name;)g(/*)g(User)g -(printable)f(name)h(of)h(the)f(function.)e(*/)234 1501 -y(rl_icpfunc)o(_t)g(*func;)h(/*)i(Function)e(to)i(call)f(to)h(do)f(the) -h(job.)f(*/)234 1544 y(char)g(*doc;)g(/*)h(Documenta)o(tio)o(n)d(for)j -(this)f(function.)36 b(*/)195 1588 y(})19 b(COMMAND;)195 -1675 y(COMMAND)e(commands[)o(])g(=)i({)234 1719 y({)g("cd",)f(com_cd,)f -("Change)g(to)i(directory)d(DIR")i(},)234 1762 y({)h("delete",)e -(com_dele)o(te,)f("Delete)h(FILE")h(},)234 1806 y({)h("help",)e -(com_help,)f("Display)h(this)h(text")g(},)234 1849 y({)h("?",)g -(com_help)o(,)e("Synonym)f(for)j(`help'")e(},)234 1893 -y({)i("list",)e(com_list,)f("List)i(files)g(in)h(DIR")f(},)234 +%%Page: 48 52 +TeXDict begin 48 51 bop 75 -58 a Ft(48)1299 b(GNU)15 +b(Readline)g(Library)195 149 y Fd(/*)k(fileman.c)d(--)j(A)g(tiny)f +(applicatio)o(n)e(which)i(demonstrat)o(es)e(how)j(to)f(use)h(the)254 +193 y(GNU)f(Readline)f(library.)36 b(This)18 b(applicatio)o(n)e +(interactive)o(ly)g(allows)h(users)254 237 y(to)i(manipulat)o(e)d +(files)i(and)h(their)e(modes.)h(*/)195 324 y(#include)f() +195 367 y(#include)g()195 411 y(#include)g()195 455 y(#include)g()195 +498 y(#include)g()195 585 y(#include)g()195 629 y(#include)g()195 716 y(extern)g(char)h(*xmalloc)f(\(\);)195 +803 y(/*)i(The)f(names)g(of)h(functions)d(that)i(actually)f(do)h(the)h +(manipulat)o(ion)o(.)d(*/)195 847 y(int)i(com_list)f(__P\(\(char)f +(*\)\);)195 890 y(int)i(com_view)f(__P\(\(char)f(*\)\);)195 +934 y(int)i(com_rename)e(__P\(\(char)g(*\)\);)195 978 +y(int)i(com_stat)f(__P\(\(char)f(*\)\);)195 1021 y(int)i(com_pwd)f +(__P\(\(char)f(*\)\);)195 1065 y(int)i(com_delete)e(__P\(\(char)g +(*\)\);)195 1108 y(int)i(com_help)f(__P\(\(char)f(*\)\);)195 +1152 y(int)i(com_cd)g(__P\(\(char)e(*\)\);)195 1196 y(int)i(com_quit)f +(__P\(\(char)f(*\)\);)195 1283 y(/*)j(A)g(structure)d(which)i(contains) +e(information)g(on)j(the)f(commands)f(this)h(program)254 +1326 y(can)g(understand)o(.)f(*/)195 1413 y(typedef)g(struct)g({)234 +1457 y(char)h(*name;)g(/*)g(User)g(printable)f(name)h(of)h(the)f +(function.)e(*/)234 1501 y(rl_icpfunc)o(_t)g(*func;)h(/*)i(Function)e +(to)i(call)f(to)h(do)f(the)h(job.)f(*/)234 1544 y(char)g(*doc;)g(/*)h +(Documenta)o(tio)o(n)d(for)j(this)f(function.)36 b(*/)195 +1588 y(})19 b(COMMAND;)195 1675 y(COMMAND)e(commands[)o(])g(=)i({)234 +1719 y({)g("cd",)f(com_cd,)f("Change)g(to)i(directory)d(DIR")i(},)234 +1762 y({)h("delete",)e(com_dele)o(te,)f("Delete)h(FILE")h(},)234 +1806 y({)h("help",)e(com_help,)f("Display)h(this)h(text")g(},)234 +1849 y({)h("?",)g(com_help)o(,)e("Synonym)f(for)j(`help'")e(},)234 +1893 y({)i("list",)e(com_list,)f("List)i(files)g(in)h(DIR")f(},)234 1936 y({)h("ls",)f(com_list,)e("Synonym)h(for)h(`list'")f(},)234 1980 y({)i("pwd",)f(com_pwd,)e("Print)i(the)g(current)f(working)g (directory)o(")g(},)234 2024 y({)i("quit",)e(com_quit,)f("Quit)i(using) @@ -7886,42 +7545,41 @@ y(/*)j(The)f(name)g(of)h(this)f(program,)f(as)i(taken)e(from)h (argv[0].)f(*/)195 2547 y(char)h(*progname;)195 2634 y(/*)h(When)f(non-zero,)e(this)i(means)g(the)g(user)g(is)h(done)f (using)g(this)g(program.)f(*/)p eop end +%%Page: 49 53 +TeXDict begin 49 52 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14 +b(with)g(GNU)h(Readline)842 b(49)195 149 y Fd(int)18 +b(done;)195 237 y(char)g(*)195 280 y(dupstr)f(\(s\))293 +324 y(int)i(s;)195 367 y({)234 411 y(char)f(*r;)234 498 +y(r)h(=)h(xmalloc)d(\(strlen)f(\(s\))j(+)g(1\);)234 542 +y(strcpy)f(\(r,)g(s\);)234 585 y(return)g(\(r\);)195 +629 y(})195 716 y(main)g(\(argc,)f(argv\))293 760 y(int)i(argc;)293 +803 y(char)f(**argv;)195 847 y({)234 890 y(char)g(*line,)g(*s;)234 +978 y(progname)f(=)i(argv[0];)234 1065 y(initialize)o(_re)o(ad)o(lin)o +(e)d(\(\);)j(/*)g(Bind)f(our)g(completer.)e(*/)234 1152 +y(/*)j(Loop)f(reading)f(and)h(executing)f(lines)g(until)h(the)g(user)h +(quits.)e(*/)234 1196 y(for)i(\()g(;)g(done)f(==)h(0;)g(\))273 +1239 y({)313 1283 y(line)f(=)h(readline)d(\("FileMan:)g("\);)313 +1370 y(if)j(\(!line\))352 1413 y(break;)313 1501 y(/*)g(Remove)e +(leading)g(and)h(trailing)f(whitespac)o(e)f(from)j(the)f(line.)372 +1544 y(Then,)f(if)i(there)f(is)h(anything)d(left,)i(add)g(it)h(to)g +(the)f(history)f(list)372 1588 y(and)h(execute)f(it.)h(*/)313 +1631 y(s)h(=)g(stripwhite)d(\(line\);)313 1719 y(if)j(\(*s\))352 +1762 y({)391 1806 y(add_histor)o(y)d(\(s\);)391 1849 +y(execute_li)o(ne)g(\(s\);)352 1893 y(})313 1980 y(free)i(\(line\);)273 +2024 y(})234 2067 y(exit)g(\(0\);)195 2111 y(})195 2198 +y(/*)h(Execute)e(a)i(command)e(line.)h(*/)195 2242 y(int)195 +2285 y(execute_li)o(ne)e(\(line\))293 2329 y(char)i(*line;)195 +2372 y({)234 2416 y(register)f(int)h(i;)234 2460 y(COMMAND)f(*command;) +234 2503 y(char)h(*word;)234 2590 y(/*)h(Isolate)e(the)h(command)f +(word.)h(*/)234 2634 y(i)h(=)h(0;)p eop end %%Page: 50 54 TeXDict begin 50 53 bop 75 -58 a Ft(50)1299 b(GNU)15 -b(Readline)g(Library)195 149 y Fd(int)j(done;)195 237 -y(char)g(*)195 280 y(dupstr)f(\(s\))293 324 y(int)i(s;)195 -367 y({)234 411 y(char)f(*r;)234 498 y(r)h(=)h(xmalloc)d(\(strlen)f -(\(s\))j(+)g(1\);)234 542 y(strcpy)f(\(r,)g(s\);)234 -585 y(return)g(\(r\);)195 629 y(})195 716 y(main)g(\(argc,)f(argv\))293 -760 y(int)i(argc;)293 803 y(char)f(**argv;)195 847 y({)234 -890 y(char)g(*line,)g(*s;)234 978 y(progname)f(=)i(argv[0];)234 -1065 y(initialize)o(_re)o(ad)o(lin)o(e)d(\(\);)j(/*)g(Bind)f(our)g -(completer.)e(*/)234 1152 y(/*)j(Loop)f(reading)f(and)h(executing)f -(lines)g(until)h(the)g(user)h(quits.)e(*/)234 1196 y(for)i(\()g(;)g -(done)f(==)h(0;)g(\))273 1239 y({)313 1283 y(line)f(=)h(readline)d -(\("FileMan:)g("\);)313 1370 y(if)j(\(!line\))352 1413 -y(break;)313 1501 y(/*)g(Remove)e(leading)g(and)h(trailing)f(whitespac) -o(e)f(from)j(the)f(line.)372 1544 y(Then,)f(if)i(there)f(is)h(anything) -d(left,)i(add)g(it)h(to)g(the)f(history)f(list)372 1588 -y(and)h(execute)f(it.)h(*/)313 1631 y(s)h(=)g(stripwhite)d(\(line\);) -313 1719 y(if)j(\(*s\))352 1762 y({)391 1806 y(add_histor)o(y)d(\(s\);) -391 1849 y(execute_li)o(ne)g(\(s\);)352 1893 y(})313 -1980 y(free)i(\(line\);)273 2024 y(})234 2067 y(exit)g(\(0\);)195 -2111 y(})195 2198 y(/*)h(Execute)e(a)i(command)e(line.)h(*/)195 -2242 y(int)195 2285 y(execute_li)o(ne)e(\(line\))293 -2329 y(char)i(*line;)195 2372 y({)234 2416 y(register)f(int)h(i;)234 -2460 y(COMMAND)f(*command;)234 2503 y(char)h(*word;)234 -2590 y(/*)h(Isolate)e(the)h(command)f(word.)h(*/)234 -2634 y(i)h(=)h(0;)p eop end -%%Page: 51 55 -TeXDict begin 51 54 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14 -b(with)g(GNU)h(Readline)842 b(51)234 149 y Fd(while)18 -b(\(line[i])e(&&)j(whitespace)d(\(line[i]\)\))273 193 -y(i++;)234 237 y(word)i(=)i(line)e(+)h(i;)234 324 y(while)f(\(line[i])e -(&&)j(!whitespac)o(e)e(\(line[i]\))o(\))273 367 y(i++;)234 -455 y(if)i(\(line[i]\))273 498 y(line[i++])e(=)i('\\0';)234 -585 y(command)e(=)i(find_comma)o(nd)d(\(word\);)234 672 -y(if)j(\(!command\))273 716 y({)313 760 y(fprintf)e(\(stderr,)f +b(Readline)g(Library)234 149 y Fd(while)j(\(line[i])e(&&)j(whitespace)d +(\(line[i]\)\))273 193 y(i++;)234 237 y(word)i(=)i(line)e(+)h(i;)234 +324 y(while)f(\(line[i])e(&&)j(!whitespac)o(e)e(\(line[i]\))o(\))273 +367 y(i++;)234 455 y(if)i(\(line[i]\))273 498 y(line[i++])e(=)i('\\0';) +234 585 y(command)e(=)i(find_comma)o(nd)d(\(word\);)234 +672 y(if)j(\(!command\))273 716 y({)313 760 y(fprintf)e(\(stderr,)f ("\045s:)i(No)h(such)f(command)f(for)h(FileMan.\\n")o(,)e(word\);)313 803 y(return)h(\(-1\);)273 847 y(})234 934 y(/*)i(Get)g(argument)d(to)j (command,)d(if)j(any.)f(*/)234 978 y(while)g(\(whitespa)o(ce)e @@ -7946,44 +7604,44 @@ y(char)i(*string;)195 2242 y({)234 2285 y(register)f(char)h(*s,)g(*t;) 273 2416 y(;)234 2503 y(if)h(\(*s)g(==)f(0\))273 2547 y(return)g(\(s\);)234 2634 y(t)h(=)h(s)f(+)g(strlen)e(\(s\))i(-)g(1;)p eop end -%%Page: 52 56 -TeXDict begin 52 55 bop 75 -58 a Ft(52)1299 b(GNU)15 -b(Readline)g(Library)234 149 y Fd(while)j(\(t)h(>)g(s)g(&&)g -(whitespace)d(\(*t\)\))273 193 y(t--;)234 237 y(*++t)i(=)i('\\0';)234 -324 y(return)e(s;)195 367 y(})195 455 y(/*)h(*********)o(***)o(**)o +%%Page: 51 55 +TeXDict begin 51 54 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14 +b(with)g(GNU)h(Readline)842 b(51)234 149 y Fd(while)18 +b(\(t)h(>)g(s)g(&&)g(whitespace)d(\(*t\)\))273 193 y(t--;)234 +237 y(*++t)i(=)i('\\0';)234 324 y(return)e(s;)195 367 +y(})195 455 y(/*)h(*********)o(***)o(**)o(***)o(**)o(***)o(***)o(**)o (***)o(**)o(***)o(***)o(**)o(***)o(**)o(***)o(***)o(**)o(***)o(**)o -(***)o(***)o(**)o(***)o(**)o(***)o(***)d(*/)195 498 y(/*)1294 -b(*/)195 542 y(/*)352 b(Interface)16 b(to)j(Readline)e(Completio)o(n) -311 b(*/)195 585 y(/*)1294 b(*/)195 629 y(/*)19 b(*********)o(***)o(**) -o(***)o(**)o(***)o(***)o(**)o(***)o(**)o(***)o(***)o(**)o(***)o(**)o -(***)o(***)o(**)o(***)o(**)o(***)o(***)d(*/)195 716 y(char)i -(*command_g)o(en)o(era)o(to)o(r)f(__P\(\(cons)o(t)f(char)j(*,)f -(int\)\);)195 760 y(char)g(**fileman_)o(co)o(mpl)o(et)o(ion)e -(__P\(\(cons)o(t)h(char)h(*,)h(int,)f(int\)\);)195 847 -y(/*)h(Tell)f(the)g(GNU)h(Readline)d(library)h(how)i(to)g(complete)o(.) -36 b(We)19 b(want)f(to)h(try)g(to)254 890 y(complete)d(on)j(command)e -(names)h(if)h(this)f(is)h(the)f(first)g(word)g(in)h(the)f(line,)g(or) -254 934 y(on)h(filenames)d(if)j(not.)f(*/)195 978 y(initialize)o(_r)o -(ead)o(li)o(ne)e(\(\))195 1021 y({)234 1065 y(/*)j(Allow)f(condition)o -(al)e(parsing)h(of)i(the)f(~/.inputrc)e(file.)i(*/)234 -1108 y(rl_readlin)o(e_n)o(am)o(e)f(=)i("FileMan")o(;)234 -1196 y(/*)g(Tell)f(the)h(complete)o(r)e(that)h(we)h(want)f(a)h(crack)f -(first.)f(*/)234 1239 y(rl_attempt)o(ed_)o(co)o(mpl)o(et)o(ion)o(_fu)o -(nc)o(tio)o(n)f(=)k(fileman_c)o(om)o(ple)o(tio)o(n;)195 -1283 y(})195 1370 y(/*)f(Attempt)e(to)i(complete)d(on)j(the)f(contents) -f(of)i(TEXT.)37 b(START)18 b(and)g(END)254 1413 y(bound)g(the)g(region) -f(of)i(rl_line_bu)o(ff)o(er)d(that)i(contains)f(the)h(word)g(to)254 -1457 y(complete.)36 b(TEXT)18 b(is)g(the)h(word)f(to)h(complete.)36 -b(We)18 b(can)h(use)f(the)h(entire)254 1501 y(contents)d(of)j -(rl_line_bu)o(ffe)o(r)d(in)j(case)f(we)h(want)f(to)h(do)g(some)f -(simple)254 1544 y(parsing.)36 b(Returnthe)16 b(array)i(of)h(matches,)d -(or)j(NULL)f(if)h(there)f(aren't)f(any.)h(*/)195 1588 -y(char)g(**)195 1631 y(fileman_co)o(mp)o(let)o(io)o(n)f(\(text,)g -(start,)g(end\))293 1675 y(const)h(char)g(*text;)293 -1719 y(int)h(start,)e(end;)195 1762 y({)234 1806 y(char)h(**matches;) -234 1893 y(matches)f(=)i(\(char)f(**\)NULL;)234 1980 -y(/*)h(If)g(this)f(word)g(is)h(at)g(the)f(start)g(of)h(the)f(line,)g -(then)g(it)h(is)g(a)g(command)293 2024 y(to)g(complete.)36 +(***)o(***)d(*/)195 498 y(/*)1294 b(*/)195 542 y(/*)352 +b(Interface)16 b(to)j(Readline)e(Completio)o(n)311 b(*/)195 +585 y(/*)1294 b(*/)195 629 y(/*)19 b(*********)o(***)o(**)o(***)o(**)o +(***)o(***)o(**)o(***)o(**)o(***)o(***)o(**)o(***)o(**)o(***)o(***)o +(**)o(***)o(**)o(***)o(***)d(*/)195 716 y(char)i(*command_g)o(en)o(era) +o(to)o(r)f(__P\(\(cons)o(t)f(char)j(*,)f(int\)\);)195 +760 y(char)g(**fileman_)o(co)o(mpl)o(et)o(ion)e(__P\(\(cons)o(t)h(char) +h(*,)h(int,)f(int\)\);)195 847 y(/*)h(Tell)f(the)g(GNU)h(Readline)d +(library)h(how)i(to)g(complete)o(.)36 b(We)19 b(want)f(to)h(try)g(to) +254 890 y(complete)d(on)j(command)e(names)h(if)h(this)f(is)h(the)f +(first)g(word)g(in)h(the)f(line,)g(or)254 934 y(on)h(filenames)d(if)j +(not.)f(*/)195 978 y(initialize)o(_r)o(ead)o(li)o(ne)e(\(\))195 +1021 y({)234 1065 y(/*)j(Allow)f(condition)o(al)e(parsing)h(of)i(the)f +(~/.inputrc)e(file.)i(*/)234 1108 y(rl_readlin)o(e_n)o(am)o(e)f(=)i +("FileMan")o(;)234 1196 y(/*)g(Tell)f(the)h(complete)o(r)e(that)h(we)h +(want)f(a)h(crack)f(first.)f(*/)234 1239 y(rl_attempt)o(ed_)o(co)o(mpl) +o(et)o(ion)o(_fu)o(nc)o(tio)o(n)f(=)k(fileman_c)o(om)o(ple)o(tio)o(n;) +195 1283 y(})195 1370 y(/*)f(Attempt)e(to)i(complete)d(on)j(the)f +(contents)f(of)i(TEXT.)37 b(START)18 b(and)g(END)254 +1413 y(bound)g(the)g(region)f(of)i(rl_line_bu)o(ff)o(er)d(that)i +(contains)f(the)h(word)g(to)254 1457 y(complete.)36 b(TEXT)18 +b(is)g(the)h(word)f(to)h(complete.)36 b(We)18 b(can)h(use)f(the)h +(entire)254 1501 y(contents)d(of)j(rl_line_bu)o(ffe)o(r)d(in)j(case)f +(we)h(want)f(to)h(do)g(some)f(simple)254 1544 y(parsing.)36 +b(Returnthe)16 b(array)i(of)h(matches,)d(or)j(NULL)f(if)h(there)f +(aren't)f(any.)h(*/)195 1588 y(char)g(**)195 1631 y(fileman_co)o(mp)o +(let)o(io)o(n)f(\(text,)g(start,)g(end\))293 1675 y(const)h(char)g +(*text;)293 1719 y(int)h(start,)e(end;)195 1762 y({)234 +1806 y(char)h(**matches;)234 1893 y(matches)f(=)i(\(char)f(**\)NULL;) +234 1980 y(/*)h(If)g(this)f(word)g(is)h(at)g(the)f(start)g(of)h(the)f +(line,)g(then)g(it)h(is)g(a)g(command)293 2024 y(to)g(complete.)36 b(Otherwise)16 b(it)j(is)f(the)h(name)f(of)h(a)g(file)f(in)h(the)f (current)293 2067 y(directory.)e(*/)234 2111 y(if)j(\(start)e(==)i(0\)) 273 2154 y(matches)e(=)j(rl_compl)o(eti)o(on_)o(ma)o(tch)o(es)c @@ -7996,14 +7654,14 @@ b(lets)g(us)254 2416 y(know)g(whether)f(to)i(start)e(from)h(scratch;)f 2503 y(char)g(*)195 2547 y(command_ge)o(ne)o(rat)o(or)e(\(text,)h (state\))293 2590 y(const)h(char)g(*text;)293 2634 y(int)h(state;)p eop end -%%Page: 53 57 -TeXDict begin 53 56 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14 -b(with)g(GNU)h(Readline)842 b(53)195 149 y Fd({)234 193 -y(static)18 b(int)g(list_inde)o(x,)e(len;)234 237 y(char)i(*name;)234 -324 y(/*)h(If)g(this)f(is)h(a)g(new)f(word)h(to)f(complete,)f(initiali) -o(ze)f(now.)38 b(This)293 367 y(includes)17 b(saving)g(the)h(length)g -(of)g(TEXT)h(for)f(efficiency)o(,)e(and)293 411 y(initializi)o(ng)g -(the)i(index)g(variable)f(to)i(0.)f(*/)234 455 y(if)h(\(!state\))273 +%%Page: 52 56 +TeXDict begin 52 55 bop 75 -58 a Ft(52)1299 b(GNU)15 +b(Readline)g(Library)195 149 y Fd({)234 193 y(static)j(int)g(list_inde) +o(x,)e(len;)234 237 y(char)i(*name;)234 324 y(/*)h(If)g(this)f(is)h(a)g +(new)f(word)h(to)f(complete,)f(initiali)o(ze)f(now.)38 +b(This)293 367 y(includes)17 b(saving)g(the)h(length)g(of)g(TEXT)h(for) +f(efficiency)o(,)e(and)293 411 y(initializi)o(ng)g(the)i(index)g +(variable)f(to)i(0.)f(*/)234 455 y(if)h(\(!state\))273 498 y({)313 542 y(list_inde)o(x)d(=)k(0;)313 585 y(len)e(=)h(strlen)f (\(text\);)273 629 y(})234 716 y(/*)h(Return)e(the)i(next)f(name)g (which)g(partially)e(matches)h(from)h(the)293 760 y(command)f(list.)h @@ -8032,21 +7690,22 @@ b(This)18 b(is)h(for)g(the)f(LIST,)g(VIEW)g(and)g(RENAME)254 (arg\)\))273 2416 y(return)h(1;)234 2503 y(sprintf)f(\(syscom,)g("more) g(\045s",)h(arg\);)234 2547 y(return)g(\(system)e(\(syscom\)\);)195 2590 y(})p eop end -%%Page: 54 58 -TeXDict begin 54 57 bop 75 -58 a Ft(54)1299 b(GNU)15 -b(Readline)g(Library)195 149 y Fd(com_rename)h(\(arg\))293 -193 y(char)i(*arg;)195 237 y({)234 280 y(too_danger)o(ous)e(\("rename") -o(\);)234 324 y(return)i(\(1\);)195 367 y(})195 455 y(com_stat)f -(\(arg\))293 498 y(char)h(*arg;)195 542 y({)234 585 y(struct)g(stat)g -(finfo;)234 672 y(if)h(\(!valid_ar)o(gu)o(men)o(t)d(\("stat",)h -(arg\)\))273 716 y(return)h(\(1\);)234 803 y(if)h(\(stat)f(\(arg,)f -(&finfo\))g(==)i(-1\))273 847 y({)313 890 y(perror)e(\(arg\);)313 -934 y(return)g(\(1\);)273 978 y(})234 1065 y(printf)h(\("Statis)o(tic)o -(s)e(for)j(`\045s':\\n",)d(arg\);)234 1152 y(printf)i(\("\045s)g(has)g -(\045d)h(link\045s,)e(and)h(is)h(\045d)g(byte\045s)e(in)i(length.\\n")o -(,)d(arg,)391 1196 y(finfo.st_n)o(li)o(nk,)391 1239 y(\(finfo.st_)o(nl) -o(ink)g(==)j(1\))g(?)g("")g(:)g("s",)391 1283 y(finfo.st_s)o(iz)o(e,) -391 1326 y(\(finfo.st_)o(si)o(ze)d(==)j(1\))g(?)g("")g(:)g("s"\);)234 +%%Page: 53 57 +TeXDict begin 53 56 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14 +b(with)g(GNU)h(Readline)842 b(53)195 149 y Fd(com_rename)16 +b(\(arg\))293 193 y(char)i(*arg;)195 237 y({)234 280 +y(too_danger)o(ous)e(\("rename")o(\);)234 324 y(return)i(\(1\);)195 +367 y(})195 455 y(com_stat)f(\(arg\))293 498 y(char)h(*arg;)195 +542 y({)234 585 y(struct)g(stat)g(finfo;)234 672 y(if)h(\(!valid_ar)o +(gu)o(men)o(t)d(\("stat",)h(arg\)\))273 716 y(return)h(\(1\);)234 +803 y(if)h(\(stat)f(\(arg,)f(&finfo\))g(==)i(-1\))273 +847 y({)313 890 y(perror)e(\(arg\);)313 934 y(return)g(\(1\);)273 +978 y(})234 1065 y(printf)h(\("Statis)o(tic)o(s)e(for)j(`\045s':\\n",)d +(arg\);)234 1152 y(printf)i(\("\045s)g(has)g(\045d)h(link\045s,)e(and)h +(is)h(\045d)g(byte\045s)e(in)i(length.\\n")o(,)d(arg,)391 +1196 y(finfo.st_n)o(li)o(nk,)391 1239 y(\(finfo.st_)o(nl)o(ink)g(==)j +(1\))g(?)g("")g(:)g("s",)391 1283 y(finfo.st_s)o(iz)o(e,)391 +1326 y(\(finfo.st_)o(si)o(ze)d(==)j(1\))g(?)g("")g(:)g("s"\);)234 1370 y(printf)f(\("Inode)e(Last)i(Change)g(at:)g(\045s",)g(ctime)g (\(&finfo.st)o(_c)o(tim)o(e\))o(\);)234 1413 y(printf)g(\(")116 b(Last)18 b(access)g(at:)g(\045s",)g(ctime)g(\(&finfo.st)o(_a)o(tim)o @@ -8065,9 +7724,9 @@ y(})195 1936 y(/*)h(Print)f(out)g(help)g(for)g(ARG,)h(or)f(for)h(all)f 2460 y(printf)e(\("\045s\\t\\t\045s.)o(\\n)o(",)f(commands[i)o(].n)o (am)o(e,)g(commands[i)o(].d)o(oc\))o(;)391 2503 y(printed++;)352 2547 y(})273 2590 y(})p eop end -%%Page: 55 59 -TeXDict begin 55 58 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14 -b(with)g(GNU)h(Readline)842 b(55)234 149 y Fd(if)19 b(\(!printed\))273 +%%Page: 54 58 +TeXDict begin 54 57 bop 75 -58 a Ft(54)1299 b(GNU)15 +b(Readline)g(Library)234 149 y Fd(if)k(\(!printed\))273 193 y({)313 237 y(printf)e(\("No)h(commands)f(match)g(`\045s'.)38 b(Possibil)o(tie)o(s)17 b(are:\\n",)f(arg\);)313 324 y(for)i(\(i)h(=)g(0;)g(commands[i)o(].)o(nam)o(e;)d(i++\))352 @@ -8094,17 +7753,17 @@ y(})195 2503 y(/*)h(The)f(user)g(wishes)g(to)g(quit)h(using)e(this)h (program.)36 b(Just)19 b(set)f(DONE)254 2547 y(non-zero.)e(*/)195 2590 y(com_quit)h(\(arg\))293 2634 y(char)h(*arg;)p eop end -%%Page: 56 60 -TeXDict begin 56 59 bop 75 -58 a Ft(56)1299 b(GNU)15 -b(Readline)g(Library)195 149 y Fd({)234 193 y(done)j(=)i(1;)234 -237 y(return)e(\(0\);)195 280 y(})195 367 y(/*)h(Function)d(which)i -(tells)g(you)g(that)g(you)h(can't)e(do)i(this.)f(*/)195 -411 y(too_danger)o(ou)o(s)f(\(caller\))293 455 y(char)h(*caller;)195 -498 y({)234 542 y(fprintf)f(\(stderr,)411 585 y("\045s:)h(Too)g -(dangerous)e(for)j(me)g(to)g(distribu)o(te.)o(\\n")o(,)411 -629 y(caller\);)234 672 y(fprintf)e(\(stderr,)g("Write)g(it)i -(yourself.)o(\\n")o(\);)195 716 y(})195 803 y(/*)g(Return)e(non-zero)g -(if)h(ARG)h(is)g(a)g(valid)f(argument)e(for)j(CALLER,)254 +%%Page: 55 59 +TeXDict begin 55 58 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)14 +b(with)g(GNU)h(Readline)842 b(55)195 149 y Fd({)234 193 +y(done)18 b(=)i(1;)234 237 y(return)e(\(0\);)195 280 +y(})195 367 y(/*)h(Function)d(which)i(tells)g(you)g(that)g(you)h(can't) +e(do)i(this.)f(*/)195 411 y(too_danger)o(ou)o(s)f(\(caller\))293 +455 y(char)h(*caller;)195 498 y({)234 542 y(fprintf)f(\(stderr,)411 +585 y("\045s:)h(Too)g(dangerous)e(for)j(me)g(to)g(distribu)o(te.)o +(\\n")o(,)411 629 y(caller\);)234 672 y(fprintf)e(\(stderr,)g("Write)g +(it)i(yourself.)o(\\n")o(\);)195 716 y(})195 803 y(/*)g(Return)e +(non-zero)g(if)h(ARG)h(is)g(a)g(valid)f(argument)e(for)j(CALLER,)254 847 y(else)f(print)g(an)g(error)g(message)f(and)h(return)g(zero.)f(*/) 195 890 y(int)195 934 y(valid_argu)o(me)o(nt)f(\(caller,)h(arg\))293 978 y(char)h(*caller,)f(*arg;)195 1021 y({)234 1065 y(if)i(\(!arg)f(||) @@ -8112,6 +7771,9 @@ h(!*arg\))273 1108 y({)313 1152 y(fprintf)e(\(stderr,)f("\045s:)i (Argument)f(required.)o(\\n)o(",)f(caller\);)313 1196 y(return)h(\(0\);)273 1239 y(})234 1326 y(return)h(\(1\);)195 1370 y(})p eop end +%%Page: 56 60 +TeXDict begin 56 59 bop 75 -58 a Ft(56)1299 b(GNU)15 +b(Readline)g(Library)p eop end %%Page: 57 61 TeXDict begin 57 60 bop 75 -58 a Ft(App)q(endix)16 b(A:)f(Cop)o(ying)f (This)h(Man)o(ual)1052 b(57)75 149 y Fp(App)r(endix)26 @@ -8504,8 +8166,8 @@ y(publisher)d(of)f(that)g(section)g(if)g(kno)o(wn,)g(or)g(else)g(a)h (v)m(arian)o(t)f(Sections)h(in)g(the)h(license)f(notice)g(of)g(the)g (com)o(bined)165 1859 y(w)o(ork.)165 1925 y(In)21 b(the)g(com)o (bination,)f(y)o(ou)h(m)o(ust)f(com)o(bine)g(an)o(y)g(sections)h(En)o -(titled)e(\\History")g(in)i(the)f(v)m(ari-)165 1980 y(ous)c(original)e -(do)q(cumen)o(ts,)i(forming)f(one)i(section)e(En)o(titled)g +(titled)e(\\History")g(in)h(the)h(v)m(ari-)165 1980 y(ous)16 +b(original)e(do)q(cumen)o(ts,)i(forming)f(one)i(section)e(En)o(titled)g (\\History";)g(lik)o(ewise)f(com)o(bine)i(an)o(y)165 2034 y(sections)f(En)o(titled)g(\\Ac)o(kno)o(wledgemen)o(ts",)g(and)h (an)o(y)f(sections)h(En)o(titled)e(\\Dedications".)21 @@ -8596,7 +8258,7 @@ b(Ho)o(w)o(ev)o(er,)12 b(parties)h(who)h(ha)o(v)o(e)g(receiv)o(ed)g b(License)i(from)e(time)g(to)h(time.)21 b(Suc)o(h)c(new)f(v)o(ersions)g (will)e(b)q(e)j(similar)d(in)i(spirit)165 2212 y(to)h(the)g(presen)o(t) g(v)o(ersion,)g(but)g(ma)o(y)f(di\013er)h(in)g(detail)f(to)h(address)g -(new)g(problems)g(or)g(concerns.)165 2267 y(See)f Fs +(new)g(problems)g(or)g(concerns.)165 2266 y(See)f Fs (http://www.gnu.org/copyle)o(ft/)p Ft(.)165 2331 y(Eac)o(h)f(v)o (ersion)e(of)i(the)g(License)g(is)f(giv)o(en)g(a)h(distinguishing)e(v)o (ersion)h(n)o(um)o(b)q(er.)20 b(If)15 b(the)g(Do)q(cumen)o(t)165 @@ -8655,7 +8317,7 @@ b(Readline)g(Library)p eop end TeXDict begin 65 68 bop 75 -58 a Ft(Concept)15 b(Index)1466 b(65)75 149 y Fp(Concept)27 b(Index)75 319 y Fr(A)75 380 y Fb(application-sp)q(eci\014c)14 b(completion)f(functions)5 -b Fa(.)i(.)f(.)g(.)g(.)g(.)h(.)17 b Fb(42)75 511 y Fr(C)75 +b Fa(.)i(.)f(.)g(.)g(.)g(.)h(.)17 b Fb(41)75 511 y Fr(C)75 571 y Fb(command)d(editing)c Fa(.)c(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h (.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) h(.)22 b Fb(1)75 703 y Fr(E)75 763 y Fb(editing)13 b(command)h(lines)d @@ -8696,17 +8358,17 @@ g(Index)1187 b(67)75 149 y Fp(F)-7 b(unction)27 b(and)g(V)-7 b(ariable)28 b(Index)p 80 305 21 3 v 75 365 a Fd(_rl_digit_)o(p)7 b Fa(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 -b Fb(37)75 409 y Fd(_rl_digit_)o(va)o(lue)6 b Fa(.)t(.)g(.)g(.)g(.)g(.) +b Fb(36)75 409 y Fd(_rl_digit_)o(va)o(lue)6 b Fa(.)t(.)g(.)g(.)g(.)g(.) h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g -(.)g(.)h(.)f(.)g(.)20 b Fb(37)75 453 y Fd(_rl_lowerc)o(as)o(e_p)6 +(.)g(.)h(.)f(.)g(.)20 b Fb(36)75 453 y Fd(_rl_lowerc)o(as)o(e_p)6 b Fa(.)t(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) -g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)20 b Fb(37)75 +g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)20 b Fb(36)75 498 y Fd(_rl_to_low)o(er)6 b Fa(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h (.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) -g(.)h(.)f(.)22 b Fb(37)75 542 y Fd(_rl_to_upp)o(er)6 +g(.)h(.)f(.)22 b Fb(36)75 542 y Fd(_rl_to_upp)o(er)6 b Fa(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.) h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)22 -b Fb(37)75 586 y Fd(_rl_upperc)o(as)o(e_p)6 b Fa(.)t(.)g(.)g(.)g(.)g(.) +b Fb(36)75 586 y Fd(_rl_upperc)o(as)o(e_p)6 b Fa(.)t(.)g(.)g(.)g(.)g(.) h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g (.)g(.)h(.)f(.)g(.)20 b Fb(36)75 716 y Fr(A)75 775 y Fd(abort)11 b(\(C-g\))5 b Fa(.)t(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) @@ -8917,7 +8579,7 @@ b Fa(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.) h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)22 b Fb(28)75 1211 y Fd(rl_add_fun)o(ma)o(p_e)o(nt)o(ry)t Fa(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) -g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Fb(32)75 1255 y Fd(rl_add_und)o(o)7 +g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Fb(31)75 1255 y Fd(rl_add_und)o(o)7 b Fa(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 b Fb(32)75 1299 y Fd(rl_alphabe)o(ti)o(c)9 b Fa(.)s(.)d(.)g(.)g(.)h(.)f @@ -8938,27 +8600,27 @@ Fa(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Fb(32)75 1609 y Fd(rl_bind_ke)o(y)7 b Fa(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 -b Fb(30)75 1653 y Fd(rl_bind_ke)o(y_)o(if_)o(un)o(bou)o(nd)8 +b Fb(29)75 1653 y Fd(rl_bind_ke)o(y_)o(if_)o(un)o(bou)o(nd)8 b Fa(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) -h(.)f(.)g(.)24 b Fb(30)75 1697 y Fd(rl_bind_ke)o(y_)o(if_)o(un)o(bou)o +h(.)f(.)g(.)24 b Fb(29)75 1697 y Fd(rl_bind_ke)o(y_)o(if_)o(un)o(bou)o (nd_)o(in)o(_ma)o(p)6 b Fa(.)s(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g (.)g(.)19 b Fb(30)75 1741 y Fd(rl_bind_ke)o(y_)o(in_)o(ma)o(p)5 b Fa(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.) -g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)18 b Fb(30)75 1786 y +g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)18 b Fb(29)75 1786 y Fd(rl_bind_ke)o(ys)o(eq)8 b Fa(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g (.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) g(.)21 b Fb(30)75 1830 y Fd(rl_bind_ke)o(ys)o(eq_)o(if)o(_un)o(bou)o (nd)8 b Fa(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g -(.)g(.)22 b Fb(31)75 1874 y Fd(rl_bind_ke)o(ys)o(eq_)o(if)o(_un)o(bou)o +(.)g(.)22 b Fb(30)75 1874 y Fd(rl_bind_ke)o(ys)o(eq_)o(if)o(_un)o(bou)o (nd)o(_in)o(_m)o(ap)t Fa(.)s(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)17 -b Fb(31)75 1918 y Fd(rl_bind_ke)o(ys)o(eq_)o(in)o(_ma)o(p)9 +b Fb(30)75 1918 y Fd(rl_bind_ke)o(ys)o(eq_)o(in)o(_ma)o(p)9 b Fa(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) f(.)g(.)g(.)g(.)25 b Fb(30)75 1962 y Fd(rl_binding)o(_k)o(eym)o(ap)5 b Fa(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19 b Fb(26)75 2007 y Fd(rl_callbac)o(k_)o(han)o(dl)o(er_)o(ins)o(ta)o(ll)7 b Fa(.)s(.)g(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)20 -b Fb(38)75 2051 y Fd(rl_callbac)o(k_)o(han)o(dl)o(er_)o(rem)o(ov)o(e)8 +b Fb(37)75 2051 y Fd(rl_callbac)o(k_)o(han)o(dl)o(er_)o(rem)o(ov)o(e)8 b Fa(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)21 b Fb(38)75 2095 y Fd(rl_callbac)o(k_)o(rea)o(d_)o(cha)o(r)9 b Fa(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) @@ -8971,10 +8633,10 @@ g(.)19 b Fb(40)75 2228 y Fd(rl_char_is)o(_q)o(uot)o(ed)o(_p)t Fa(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Fb(44)75 2272 y Fd(rl_cleanup)o(_a)o (fte)o(r_)o(sig)o(nal)7 b Fa(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) -h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)23 b Fb(41)75 2316 y +h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)23 b Fb(40)75 2316 y Fd(rl_clear_m)o(es)o(sag)o(e)6 b Fa(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.) -19 b Fb(34)75 2360 y Fd(rl_clear_p)o(en)o(din)o(g_)o(inp)o(ut)8 +19 b Fb(33)75 2360 y Fd(rl_clear_p)o(en)o(din)o(g_)o(inp)o(ut)8 b Fa(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) h(.)f(.)g(.)24 b Fb(35)75 2405 y Fd(rl_clear_s)o(ig)o(nal)o(s)6 b Fa(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) @@ -8983,384 +8645,376 @@ g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)19 b Fb(41)75 (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) g(.)19 b Fb(42,)13 b(43)75 2493 y Fd(rl_complet)o(e_)o(int)o(er)o(nal)s Fa(.)s(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) -f(.)g(.)g(.)g(.)g(.)h(.)16 b Fb(43)75 2537 y Fd(rl_complet)o(er)o(_qu)o +f(.)g(.)g(.)g(.)g(.)h(.)16 b Fb(42)75 2537 y Fd(rl_complet)o(er)o(_qu)o (ot)o(e_c)o(har)o(ac)o(ter)o(s)6 b Fa(.)s(.)g(.)h(.)f(.)g(.)g(.)g(.)g -(.)h(.)f(.)g(.)g(.)19 b Fb(46)75 2582 y Fd(rl_complet)o(er)o(_wo)o(rd)o +(.)h(.)f(.)g(.)g(.)19 b Fb(45)75 2582 y Fd(rl_complet)o(er)o(_wo)o(rd)o (_br)o(eak)o(_c)o(har)o(ac)o(ter)o(s)9 b Fa(.)d(.)g(.)g(.)g(.)g(.)h(.) 24 b Fb(45)75 2626 y Fd(rl_complet)o(io)o(n_a)o(pp)o(end)o(_ch)o(ar)o (act)o(er)5 b Fa(.)s(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)18 b Fb(46)75 2670 y Fd(rl_complet)o(io)o(n_d)o(is)o(pla)o(y_m)o(at)o(che) o(s_)o(hoo)o(k)9 b Fa(.)d(.)g(.)g(.)g(.)g(.)h(.)24 b Fb(45)1012 149 y Fd(rl_completi)o(on)o(_en)o(tr)o(y_f)o(un)o(cti)o(on)s -Fa(.)s(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)17 b Fb(42,)c(44)1012 +Fa(.)s(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)17 b Fb(42,)c(43)1012 194 y Fd(rl_completi)o(on)o(_fo)o(un)o(d_q)o(uo)o(te)c Fa(.)s(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)23 -b Fb(46)1012 238 y Fd(rl_completi)o(on)o(_in)o(vo)o(kin)o(g_)o(key)7 -b Fa(.)t(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)22 -b Fb(47)1012 282 y Fd(rl_completi)o(on)o(_ma)o(rk)o(_sy)o(ml)o(ink)o +b Fb(46)1012 238 y Fd(rl_completi)o(on)o(_ma)o(rk)o(_sy)o(ml)o(ink)o (_di)o(rs)t Fa(.)s(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)18 -b Fb(47)1012 326 y Fd(rl_completi)o(on)o(_ma)o(tc)o(hes)8 +b Fb(46)1012 282 y Fd(rl_completi)o(on)o(_ma)o(tc)o(hes)8 b Fa(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) -g(.)g(.)g(.)h(.)25 b Fb(43)1012 371 y Fd(rl_completi)o(on)o(_mo)o(de)t +g(.)g(.)g(.)h(.)25 b Fb(43)1012 326 y Fd(rl_completi)o(on)o(_mo)o(de)t Fa(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) -g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Fb(43)1012 415 y +g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Fb(43)1012 371 y Fd(rl_completi)o(on)o(_qu)o(er)o(y_i)o(te)o(ms)9 b Fa(.)s(.)d(.)g(.)h (.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)23 -b Fb(46)1012 459 y Fd(rl_completi)o(on)o(_qu)o(ot)o(e_c)o(ha)o(rac)o +b Fb(46)1012 415 y Fd(rl_completi)o(on)o(_qu)o(ot)o(e_c)o(ha)o(rac)o (ter)5 b Fa(.)t(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)20 -b Fb(46)1012 503 y Fd(rl_completi)o(on)o(_su)o(pp)o(res)o(s_)o(app)o +b Fb(46)1012 459 y Fd(rl_completi)o(on)o(_su)o(pp)o(res)o(s_)o(app)o (end)5 b Fa(.)t(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)20 -b Fb(46)1012 547 y Fd(rl_completi)o(on)o(_su)o(pp)o(res)o(s_)o(quo)o +b Fb(46)1012 503 y Fd(rl_completi)o(on)o(_su)o(pp)o(res)o(s_)o(quo)o (te)7 b Fa(.)s(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)20 -b Fb(46)1012 592 y Fd(rl_completi)o(on)o(_ty)o(pe)t Fa(.)t(.)6 +b Fb(46)1012 547 y Fd(rl_completi)o(on)o(_ty)o(pe)t Fa(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f -(.)g(.)g(.)g(.)g(.)g(.)19 b Fb(47)1012 636 y Fd(rl_completi)o(on)o(_wo) +(.)g(.)g(.)g(.)g(.)g(.)19 b Fb(47)1012 592 y Fd(rl_completi)o(on)o(_wo) o(rd)o(_br)o(ea)o(k_h)o(ook)5 b Fa(.)t(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g -(.)g(.)g(.)g(.)20 b Fb(45)1012 680 y Fd(rl_copy_key)o(ma)o(p)8 +(.)g(.)g(.)g(.)20 b Fb(45)1012 636 y Fd(rl_copy_key)o(ma)o(p)8 b Fa(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.) f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)21 b -Fb(29)1012 724 y Fd(rl_copy_tex)o(t)6 b Fa(.)g(.)h(.)f(.)g(.)g(.)g(.)g +Fb(28)1012 680 y Fd(rl_copy_tex)o(t)6 b Fa(.)g(.)h(.)f(.)g(.)g(.)g(.)g (.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) -g(.)g(.)h(.)f(.)g(.)g(.)23 b Fb(34)1012 769 y Fd(rl_crlf)t +g(.)g(.)h(.)f(.)g(.)g(.)23 b Fb(34)1012 724 y Fd(rl_crlf)t Fa(.)t(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g -(.)g(.)h(.)17 b Fb(33)1012 813 y Fd(rl_delete_t)o(ex)o(t)8 +(.)g(.)h(.)17 b Fb(33)1012 769 y Fd(rl_delete_t)o(ex)o(t)8 b Fa(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.) f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)21 b -Fb(34)1012 857 y Fd(rl_deprep_t)o(er)o(m_f)o(un)o(cti)o(on)7 +Fb(34)1012 813 y Fd(rl_deprep_t)o(er)o(m_f)o(un)o(cti)o(on)7 b Fa(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) -g(.)g(.)24 b Fb(26)1012 901 y Fd(rl_deprep_t)o(er)o(min)o(al)t +g(.)g(.)24 b Fb(26)1012 857 y Fd(rl_deprep_t)o(er)o(min)o(al)t Fa(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) -g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Fb(35)1012 945 y +g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Fb(35)1012 901 y Fd(rl_ding)t Fa(.)t(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g (.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) -f(.)g(.)g(.)g(.)g(.)h(.)17 b Fb(36)1012 990 y Fd(rl_director)o(y_)o +f(.)g(.)g(.)g(.)g(.)h(.)17 b Fb(36)1012 945 y Fd(rl_director)o(y_)o (com)o(pl)o(eti)o(on)o(_ho)o(ok)7 b Fa(.)s(.)f(.)g(.)g(.)g(.)h(.)f(.)g -(.)g(.)g(.)g(.)g(.)h(.)20 b Fb(45)1012 1034 y Fd(rl_discard_)o(ke)o -(yma)o(p)6 b Fa(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g -(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)19 b Fb(29)1012 -1078 y Fd(rl_dispatch)o(in)o(g)8 b Fa(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g +(.)g(.)g(.)g(.)g(.)h(.)20 b Fb(44)1012 990 y Fd(rl_discard_)o(ke)o(yma) +o(p)6 b Fa(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)19 b Fb(29)1012 +1034 y Fd(rl_dispatch)o(in)o(g)8 b Fa(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g (.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) -g(.)g(.)h(.)21 b Fb(24)1012 1122 y Fd(rl_display_)o(ma)o(tch)o(_l)o +g(.)g(.)h(.)21 b Fb(24)1012 1078 y Fd(rl_display_)o(ma)o(tch)o(_l)o (ist)8 b Fa(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f -(.)g(.)g(.)g(.)g(.)h(.)25 b Fb(36)1012 1167 y Fd(rl_display_)o(pr)o -(omp)o(t)6 b Fa(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g -(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)19 b Fb(25)1012 -1211 y Fd(rl_do_undo)8 b Fa(.)e(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g -(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) -g(.)g(.)g(.)h(.)24 b Fb(33)1012 1255 y Fd(rl_done)t Fa(.)t(.)6 -b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f +(.)g(.)g(.)g(.)g(.)h(.)25 b Fb(36)1012 1122 y Fd(rl_do_undo)8 +b Fa(.)e(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) +g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)24 +b Fb(32)1012 1167 y Fd(rl_done)t Fa(.)t(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) +g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)17 b Fb(24)1012 +1211 y Fd(rl_editing_)o(mo)o(de)7 b Fa(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g +(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) +g(.)g(.)21 b Fb(28)1012 1255 y Fd(rl_end)5 b Fa(.)t(.)h(.)g(.)h(.)f(.)g (.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) -17 b Fb(24)1012 1299 y Fd(rl_editing_)o(mo)o(de)7 b Fa(.)s(.)f(.)g(.)h -(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) -g(.)h(.)f(.)g(.)g(.)g(.)21 b Fb(28)1012 1343 y Fd(rl_end)5 -b Fa(.)t(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) -h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g -(.)h(.)f(.)g(.)18 b Fb(24)1012 1388 y Fd(rl_end_undo)o(_g)o(rou)o(p)6 -b Fa(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) -g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)19 b Fb(32)1012 1432 +f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)18 +b Fb(24)1012 1299 y Fd(rl_end_undo)o(_g)o(rou)o(p)6 b +Fa(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g +(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)19 b Fb(32)1012 1343 y Fd(rl_erase_em)o(pt)o(y_l)o(in)o(e)t Fa(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h (.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)18 -b Fb(24)1012 1476 y Fd(rl_event_ho)o(ok)8 b Fa(.)s(.)e(.)h(.)f(.)g(.)g +b Fb(24)1012 1388 y Fd(rl_event_ho)o(ok)8 b Fa(.)s(.)e(.)h(.)f(.)g(.)g (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) -g(.)g(.)g(.)h(.)f(.)g(.)22 b Fb(26)1012 1520 y Fd(rl_execute_)o(ne)o +g(.)g(.)g(.)h(.)f(.)g(.)22 b Fb(26)1012 1432 y Fd(rl_execute_)o(ne)o (xt)7 b Fa(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g (.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 -b Fb(35)1012 1564 y Fd(rl_executin)o(g_)o(key)o(ma)o(p)t +b Fb(35)1012 1476 y Fd(rl_executin)o(g_)o(key)o(ma)o(p)t Fa(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) -g(.)g(.)h(.)f(.)g(.)g(.)g(.)18 b Fb(26)1012 1609 y Fd(rl_executin)o(g_) +g(.)g(.)h(.)f(.)g(.)g(.)g(.)18 b Fb(26)1012 1520 y Fd(rl_executin)o(g_) o(mac)o(ro)t Fa(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f (.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Fb(26)1012 -1653 y Fd(rl_expand_p)o(ro)o(mpt)6 b Fa(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g +1564 y Fd(rl_expand_p)o(ro)o(mpt)6 b Fa(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) -g(.)20 b Fb(34)1012 1697 y Fd(rl_explicit)o(_a)o(rg)7 +g(.)20 b Fb(34)1012 1609 y Fd(rl_explicit)o(_a)o(rg)7 b Fa(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 b Fb(28)1012 -1741 y Fd(rl_extend_l)o(in)o(e_b)o(uf)o(fer)8 b Fa(.)f(.)f(.)g(.)g(.)g +1653 y Fd(rl_extend_l)o(in)o(e_b)o(uf)o(fer)8 b Fa(.)f(.)f(.)g(.)g(.)g (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)25 -b Fb(36)1012 1786 y Fd(rl_filename)o(_c)o(omp)o(le)o(tio)o(n_)o(des)o +b Fb(36)1012 1697 y Fd(rl_filename)o(_c)o(omp)o(le)o(tio)o(n_)o(des)o (ire)o(d)5 b Fa(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)19 -b Fb(47)1012 1830 y Fd(rl_filename)o(_c)o(omp)o(le)o(tio)o(n_)o(fun)o +b Fb(46)1012 1741 y Fd(rl_filename)o(_c)o(omp)o(le)o(tio)o(n_)o(fun)o (cti)o(on)t Fa(.)s(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)18 -b Fb(44)1012 1874 y Fd(rl_filename)o(_d)o(equ)o(ot)o(ing)o(_f)o(unc)o +b Fb(43)1012 1786 y Fd(rl_filename)o(_d)o(equ)o(ot)o(ing)o(_f)o(unc)o (tio)o(n)5 b Fa(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)19 -b Fb(44)1012 1918 y Fd(rl_filename)o(_q)o(uot)o(e_)o(cha)o(ra)o(cte)o +b Fb(44)1012 1830 y Fd(rl_filename)o(_q)o(uot)o(e_)o(cha)o(ra)o(cte)o (rs)7 b Fa(.)s(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)20 -b Fb(46)1012 1962 y Fd(rl_filename)o(_q)o(uot)o(in)o(g_d)o(es)o(ire)o +b Fb(45)1012 1874 y Fd(rl_filename)o(_q)o(uot)o(in)o(g_d)o(es)o(ire)o (d)8 b Fa(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)21 -b Fb(47)1012 2007 y Fd(rl_filename)o(_q)o(uot)o(in)o(g_f)o(un)o(cti)o +b Fb(47)1012 1918 y Fd(rl_filename)o(_q)o(uot)o(in)o(g_f)o(un)o(cti)o (on)7 b Fa(.)s(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)20 -b Fb(44)1012 2051 y Fd(rl_forced_u)o(pd)o(ate)o(_d)o(isp)o(la)o(y)7 +b Fb(44)1012 1962 y Fd(rl_forced_u)o(pd)o(ate)o(_d)o(isp)o(la)o(y)7 b Fa(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) -f(.)23 b Fb(33)1012 2095 y Fd(rl_free)t Fa(.)t(.)6 b(.)g(.)g(.)h(.)f(.) -g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h -(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)17 -b Fb(36)1012 2139 y Fd(rl_free_lin)o(e_)o(sta)o(te)t +f(.)23 b Fb(33)1012 2007 y Fd(rl_free_lin)o(e_)o(sta)o(te)t Fa(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) -g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Fb(41)1012 2184 +g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Fb(40)1012 2051 y Fd(rl_free_und)o(o_)o(lis)o(t)6 b Fa(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) -19 b Fb(32)1012 2228 y Fd(rl_function)o(_d)o(ump)o(er)t +19 b Fb(32)1012 2095 y Fd(rl_function)o(_d)o(ump)o(er)t Fa(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) -g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Fb(32)1012 2272 +g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Fb(31)1012 2139 y Fd(rl_function)o(_o)o(f_k)o(ey)o(seq)8 b Fa(.)f(.)f(.)g(.)g(.)g(.)g (.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)25 -b Fb(31)1012 2316 y Fd(rl_funmap_n)o(am)o(es)7 b Fa(.)s(.)f(.)g(.)h(.)f +b Fb(31)1012 2184 y Fd(rl_funmap_n)o(am)o(es)7 b Fa(.)s(.)f(.)g(.)h(.)f (.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.) -h(.)f(.)g(.)g(.)g(.)21 b Fb(32)1012 2360 y Fd(rl_generic_)o(bi)o(nd)7 +h(.)f(.)g(.)g(.)g(.)21 b Fb(31)1012 2228 y Fd(rl_generic_)o(bi)o(nd)7 b Fa(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) -f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 b Fb(31)1012 -2405 y Fd(rl_get_keym)o(ap)8 b Fa(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h +f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 b Fb(30)1012 +2272 y Fd(rl_get_keym)o(ap)8 b Fa(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h (.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) -h(.)f(.)g(.)22 b Fb(29)1012 2449 y Fd(rl_get_keym)o(ap)o(_by)o(_n)o +h(.)f(.)g(.)22 b Fb(29)1012 2316 y Fd(rl_get_keym)o(ap)o(_by)o(_n)o (ame)8 b Fa(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f -(.)g(.)g(.)g(.)g(.)h(.)25 b Fb(29)1012 2493 y Fd(rl_get_keym)o(ap)o +(.)g(.)g(.)g(.)g(.)h(.)25 b Fb(29)1012 2360 y Fd(rl_get_keym)o(ap)o (_na)o(me)t Fa(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Fb(29)1012 -2537 y Fd(rl_get_scre)o(en)o(_si)o(ze)t Fa(.)t(.)6 b(.)g(.)g(.)g(.)h(.) +2405 y Fd(rl_get_scre)o(en)o(_si)o(ze)t Fa(.)t(.)6 b(.)g(.)g(.)g(.)h(.) f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g -(.)19 b Fb(41)1012 2582 y Fd(rl_get_term)o(ca)o(p)8 b +(.)19 b Fb(41)1012 2449 y Fd(rl_get_term)o(ca)o(p)8 b Fa(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f (.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)21 b Fb(37)1012 -2626 y Fd(rl_getc)t Fa(.)t(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) +2493 y Fd(rl_getc)t Fa(.)t(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g -(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)17 b Fb(35)1012 2670 y +(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)17 b Fb(34)1012 2537 y Fd(rl_getc_fun)o(ct)o(ion)6 b Fa(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)20 -b Fb(26)p eop end +b Fb(26)1012 2582 y Fd(rl_gnu_read)o(li)o(ne_)o(p)6 b +Fa(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g +(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)19 b Fb(25)1012 2626 +y Fd(rl_ignore_c)o(om)o(ple)o(ti)o(on_)o(du)o(pli)o(cat)o(es)t +Fa(.)s(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)18 b Fb(46)1012 +2670 y Fd(rl_ignore_s)o(om)o(e_c)o(om)o(ple)o(ti)o(ons)o(_fu)o(nc)o +(tio)o(n)8 b Fa(.)e(.)g(.)g(.)g(.)h(.)24 b Fb(44)p eop +end %%Page: 69 73 TeXDict begin 69 72 bop 75 -58 a Ft(F)l(unction)15 b(and)g(V)l(ariable) -g(Index)1187 b(69)75 149 y Fd(rl_gnu_rea)o(dl)o(ine)o(_p)5 -b Fa(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) -g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19 b Fb(25)75 194 -y Fd(rl_ignore_)o(co)o(mpl)o(et)o(ion)o(_du)o(pl)o(ica)o(te)o(s)5 -b Fa(.)s(.)h(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)18 b Fb(47)75 -238 y Fd(rl_ignore_)o(so)o(me_)o(co)o(mpl)o(eti)o(on)o(s_f)o(un)o(cti)o -(on)7 b Fa(.)g(.)f(.)g(.)g(.)g(.)24 b Fb(45)75 282 y -Fd(rl_inhibit)o(_c)o(omp)o(le)o(tio)o(n)9 b Fa(.)d(.)g(.)g(.)h(.)f(.)g -(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25 -b Fb(48)75 326 y Fd(rl_initial)o(iz)o(e)9 b Fa(.)s(.)d(.)g(.)g(.)h(.)f -(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.) -h(.)f(.)g(.)g(.)g(.)g(.)22 b Fb(36)75 370 y Fd(rl_insert_)o(co)o(mpl)o -(et)o(ion)o(s)9 b Fa(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) -g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25 b Fb(43)75 414 y Fd(rl_insert_)o(te) -o(xt)8 b Fa(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g -(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 -b Fb(34)75 458 y Fd(rl_instrea)o(m)7 b Fa(.)f(.)g(.)g(.)h(.)f(.)g(.)g -(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) -g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 b Fb(25)75 503 y Fd(rl_invokin)o(g_)o -(key)o(se)o(qs)t Fa(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g -(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Fb(31)75 -547 y Fd(rl_invokin)o(g_)o(key)o(se)o(qs_)o(in_)o(ma)o(p)8 +g(Index)1187 b(69)75 149 y Fd(rl_inhibit)o(_c)o(omp)o(le)o(tio)o(n)9 +b Fa(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)25 b Fb(47)75 194 y Fd(rl_initial)o(iz)o(e)9 +b Fa(.)s(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)22 +b Fb(36)75 238 y Fd(rl_insert_)o(co)o(mpl)o(et)o(ion)o(s)9 +b Fa(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)25 b Fb(43)75 282 y Fd(rl_insert_)o(te)o(xt)8 +b Fa(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) +g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 b +Fb(34)75 326 y Fd(rl_instrea)o(m)7 b Fa(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g +(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) +g(.)g(.)h(.)f(.)g(.)g(.)23 b Fb(25)75 370 y Fd(rl_invokin)o(g_)o(key)o +(se)o(qs)t Fa(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g +(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Fb(31)75 +414 y Fd(rl_invokin)o(g_)o(key)o(se)o(qs_)o(in_)o(ma)o(p)8 b Fa(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)21 -b Fb(31)75 591 y Fd(rl_kill_te)o(xt)6 b Fa(.)g(.)g(.)g(.)h(.)f(.)g(.)g +b Fb(31)75 459 y Fd(rl_kill_te)o(xt)6 b Fa(.)g(.)g(.)g(.)h(.)f(.)g(.)g (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) -g(.)g(.)g(.)g(.)h(.)f(.)22 b Fb(34)75 635 y Fd(rl_last_fu)o(nc)6 +g(.)g(.)g(.)g(.)h(.)f(.)22 b Fb(34)75 503 y Fd(rl_last_fu)o(nc)6 b Fa(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.) h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)22 -b Fb(26)75 679 y Fd(rl_library)o(_v)o(ers)o(io)o(n)5 +b Fb(25)75 547 y Fd(rl_library)o(_v)o(ers)o(io)o(n)5 b Fa(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.) -g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)18 b Fb(25)75 723 y Fd(rl_line_bu)o(ff) +g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)18 b Fb(25)75 591 y Fd(rl_line_bu)o(ff) o(er)8 b Fa(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 -b Fb(24)75 767 y Fd(rl_list_fu)o(nm)o(ap_)o(na)o(mes)s +b Fb(24)75 635 y Fd(rl_list_fu)o(nm)o(ap_)o(na)o(mes)s Fa(.)s(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) -f(.)g(.)g(.)g(.)g(.)h(.)16 b Fb(32)75 812 y Fd(rl_macro_b)o(in)o(d)9 +f(.)g(.)g(.)g(.)g(.)h(.)16 b Fb(31)75 679 y Fd(rl_macro_b)o(in)o(d)9 b Fa(.)s(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)22 -b Fb(37)75 856 y Fd(rl_macro_d)o(um)o(per)6 b Fa(.)t(.)g(.)g(.)g(.)g(.) +b Fb(37)75 724 y Fd(rl_macro_d)o(um)o(per)6 b Fa(.)t(.)g(.)g(.)g(.)g(.) h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g -(.)g(.)h(.)f(.)g(.)20 b Fb(37)75 900 y Fd(rl_make_ba)o(re)o(_ke)o(ym)o +(.)g(.)h(.)f(.)g(.)20 b Fb(37)75 768 y Fd(rl_make_ba)o(re)o(_ke)o(ym)o (ap)t Fa(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h -(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Fb(29)75 944 +(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Fb(28)75 812 y Fd(rl_make_ke)o(ym)o(ap)8 b Fa(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g -(.)g(.)21 b Fb(29)75 988 y Fd(rl_mark)t Fa(.)t(.)6 b(.)g(.)g(.)g(.)g(.) +(.)g(.)21 b Fb(29)75 856 y Fd(rl_mark)t Fa(.)t(.)6 b(.)g(.)g(.)g(.)g(.) h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g (.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)17 -b Fb(24)75 1032 y Fd(rl_message)7 b Fa(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g +b Fb(24)75 900 y Fd(rl_message)7 b Fa(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g (.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) -g(.)g(.)h(.)f(.)g(.)g(.)g(.)24 b Fb(33)75 1076 y Fd(rl_modifyi)o(ng)6 +g(.)g(.)h(.)f(.)g(.)g(.)g(.)24 b Fb(33)75 944 y Fd(rl_modifyi)o(ng)6 b Fa(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.) h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)22 -b Fb(33)75 1121 y Fd(rl_named_f)o(un)o(cti)o(on)5 b Fa(.)s(.)i(.)f(.)g +b Fb(32)75 988 y Fd(rl_named_f)o(un)o(cti)o(on)5 b Fa(.)s(.)i(.)f(.)g (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) -g(.)g(.)g(.)g(.)19 b Fb(31)75 1165 y Fd(rl_num_cha)o(rs)o(_to)o(_r)o +g(.)g(.)g(.)g(.)19 b Fb(31)75 1033 y Fd(rl_num_cha)o(rs)o(_to)o(_r)o (ead)s Fa(.)s(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g -(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)16 b Fb(24)75 1209 y Fd(rl_numeric)o(_a) +(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)16 b Fb(24)75 1077 y Fd(rl_numeric)o(_a) o(rg)8 b Fa(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 -b Fb(28)75 1253 y Fd(rl_on_new_)o(li)o(ne)8 b Fa(.)s(.)e(.)g(.)g(.)g(.) +b Fb(28)75 1121 y Fd(rl_on_new_)o(li)o(ne)8 b Fa(.)s(.)e(.)g(.)g(.)g(.) h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g -(.)h(.)f(.)g(.)g(.)g(.)21 b Fb(33)75 1297 y Fd(rl_on_new_)o(li)o(ne_)o +(.)h(.)f(.)g(.)g(.)g(.)21 b Fb(33)75 1165 y Fd(rl_on_new_)o(li)o(ne_)o (wi)o(th_)o(pro)o(mp)o(t)8 b Fa(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g -(.)g(.)g(.)g(.)h(.)f(.)21 b Fb(33)75 1341 y Fd(rl_outstre)o(am)6 +(.)g(.)g(.)g(.)h(.)f(.)21 b Fb(33)75 1209 y Fd(rl_outstre)o(am)6 b Fa(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.) h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)22 -b Fb(25)75 1385 y Fd(rl_parse_a)o(nd)o(_bi)o(nd)5 b Fa(.)s(.)i(.)f(.)g +b Fb(25)75 1253 y Fd(rl_parse_a)o(nd)o(_bi)o(nd)5 b Fa(.)s(.)i(.)f(.)g (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) -g(.)g(.)g(.)g(.)19 b Fb(31)75 1429 y Fd(rl_pending)o(_i)o(npu)o(t)6 +g(.)g(.)g(.)g(.)19 b Fb(31)75 1298 y Fd(rl_pending)o(_i)o(npu)o(t)6 b Fa(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)19 b Fb(24)75 -1474 y Fd(rl_point)s Fa(.)s(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g +1342 y Fd(rl_point)s Fa(.)s(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) -g(.)g(.)g(.)g(.)h(.)f(.)g(.)16 b Fb(24)75 1518 y Fd(rl_possibl)o(e_)o +g(.)g(.)g(.)g(.)h(.)f(.)g(.)16 b Fb(24)75 1386 y Fd(rl_possibl)o(e_)o (com)o(pl)o(eti)o(ons)7 b Fa(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) -h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)23 b Fb(43)75 1562 y +h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)23 b Fb(43)75 1430 y Fd(rl_pre_inp)o(ut)o(_ho)o(ok)5 b Fa(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.) f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19 -b Fb(26)75 1606 y Fd(rl_prefer_)o(en)o(v_w)o(in)o(siz)o(e)9 +b Fb(26)75 1474 y Fd(rl_prefer_)o(en)o(v_w)o(in)o(siz)o(e)9 b Fa(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) -f(.)g(.)g(.)g(.)25 b Fb(25)75 1650 y Fd(rl_prep_te)o(rm)o(_fu)o(nc)o +f(.)g(.)g(.)g(.)25 b Fb(25)75 1518 y Fd(rl_prep_te)o(rm)o(_fu)o(nc)o (tio)o(n)9 b Fa(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g -(.)g(.)h(.)f(.)g(.)g(.)g(.)25 b Fb(26)75 1694 y Fd(rl_prep_te)o(rm)o +(.)g(.)h(.)f(.)g(.)g(.)g(.)25 b Fb(26)75 1563 y Fd(rl_prep_te)o(rm)o (ina)o(l)6 b Fa(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f (.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)19 -b Fb(35)75 1738 y Fd(rl_prompt)8 b Fa(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h +b Fb(35)75 1607 y Fd(rl_prompt)8 b Fa(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h (.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) -g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)24 b Fb(25)75 1783 y +g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)24 b Fb(25)75 1651 y Fd(rl_push_ma)o(cr)o(o_i)o(np)o(ut)t Fa(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g (.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 -b Fb(35)75 1827 y Fd(rl_read_in)o(it)o(_fi)o(le)5 b Fa(.)s(.)i(.)f(.)g +b Fb(34)75 1695 y Fd(rl_read_in)o(it)o(_fi)o(le)5 b Fa(.)s(.)i(.)f(.)g (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) -g(.)g(.)g(.)g(.)19 b Fb(31)75 1871 y Fd(rl_read_ke)o(y)7 +g(.)g(.)g(.)g(.)19 b Fb(31)75 1739 y Fd(rl_read_ke)o(y)7 b Fa(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 -b Fb(35)75 1915 y Fd(rl_readlin)o(e_)o(nam)o(e)6 b Fa(.)t(.)g(.)g(.)g +b Fb(34)75 1783 y Fd(rl_readlin)o(e_)o(nam)o(e)6 b Fa(.)t(.)g(.)g(.)g (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) -g(.)g(.)g(.)g(.)h(.)19 b Fb(25)75 1959 y Fd(rl_readlin)o(e_)o(sta)o(te) +g(.)g(.)g(.)g(.)h(.)19 b Fb(25)75 1828 y Fd(rl_readlin)o(e_)o(sta)o(te) 5 b Fa(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g -(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19 b Fb(27)75 -2003 y Fd(rl_readlin)o(e_)o(ver)o(si)o(on)t Fa(.)s(.)6 +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19 b Fb(26)75 +1872 y Fd(rl_readlin)o(e_)o(ver)o(si)o(on)t Fa(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g -(.)g(.)g(.)h(.)f(.)17 b Fb(25)75 2047 y Fd(rl_redispl)o(ay)6 +(.)g(.)g(.)h(.)f(.)17 b Fb(25)75 1916 y Fd(rl_redispl)o(ay)6 b Fa(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.) h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)22 -b Fb(33)75 2092 y Fd(rl_redispl)o(ay)o(_fu)o(nc)o(tio)o(n)9 +b Fb(32)75 1960 y Fd(rl_redispl)o(ay)o(_fu)o(nc)o(tio)o(n)9 b Fa(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) -f(.)g(.)g(.)g(.)25 b Fb(26)75 2136 y Fd(rl_replace)o(_l)o(ine)6 +f(.)g(.)g(.)g(.)25 b Fb(26)75 2004 y Fd(rl_replace)o(_l)o(ine)6 b Fa(.)t(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)20 b Fb(36)75 -2180 y Fd(rl_reset_a)o(ft)o(er_)o(si)o(gna)o(l)9 b Fa(.)d(.)g(.)g(.)h +2048 y Fd(rl_reset_a)o(ft)o(er_)o(si)o(gna)o(l)9 b Fa(.)d(.)g(.)g(.)h (.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25 -b Fb(41)75 2224 y Fd(rl_reset_l)o(in)o(e_s)o(ta)o(te)t +b Fb(41)75 2092 y Fd(rl_reset_l)o(in)o(e_s)o(ta)o(te)t Fa(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) -g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Fb(33)75 2268 y Fd(rl_reset_s)o(cr)o +g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Fb(33)75 2137 y Fd(rl_reset_s)o(cr)o (een)o(_s)o(ize)s Fa(.)s(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)16 b Fb(41)75 -2312 y Fd(rl_reset_t)o(er)o(min)o(al)5 b Fa(.)s(.)i(.)f(.)g(.)g(.)g(.)g +2181 y Fd(rl_reset_t)o(er)o(min)o(al)5 b Fa(.)s(.)i(.)f(.)g(.)g(.)g(.)g (.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) -g(.)19 b Fb(36)75 2356 y Fd(rl_resize_)o(te)o(rmi)o(na)o(l)5 +g(.)19 b Fb(35)75 2225 y Fd(rl_resize_)o(te)o(rmi)o(na)o(l)5 b Fa(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.) -g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)18 b Fb(41)75 2401 y +g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)18 b Fb(41)75 2269 y Fd(rl_restore)o(_p)o(rom)o(pt)5 b Fa(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.) f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19 -b Fb(34)75 2445 y Fd(rl_save_pr)o(om)o(pt)8 b Fa(.)s(.)e(.)g(.)g(.)g(.) +b Fb(33)75 2313 y Fd(rl_save_pr)o(om)o(pt)8 b Fa(.)s(.)e(.)g(.)g(.)g(.) h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g -(.)h(.)f(.)g(.)g(.)g(.)21 b Fb(34)75 2489 y Fd(rl_set_key)7 +(.)h(.)f(.)g(.)g(.)g(.)21 b Fb(33)75 2357 y Fd(rl_set_key)7 b Fa(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)24 -b Fb(30)75 2533 y Fd(rl_set_key)o(bo)o(ard)o(_i)o(npu)o(t_t)o(im)o(eou) +b Fb(30)75 2402 y Fd(rl_set_key)o(bo)o(ard)o(_i)o(npu)o(t_t)o(im)o(eou) o(t)6 b Fa(.)s(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)19 -b Fb(35)75 2577 y Fd(rl_set_key)o(ma)o(p)9 b Fa(.)s(.)d(.)g(.)g(.)h(.)f +b Fb(35)75 2446 y Fd(rl_set_key)o(ma)o(p)9 b Fa(.)s(.)d(.)g(.)g(.)h(.)f (.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.) -h(.)f(.)g(.)g(.)g(.)g(.)22 b Fb(29)1012 149 y Fd(rl_set_pare)o(n_)o -(bli)o(nk)o(_ti)o(me)o(out)7 b Fa(.)t(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g -(.)g(.)h(.)f(.)g(.)g(.)g(.)22 b Fb(37)1012 193 y Fd(rl_set_prom)o(pt)8 +h(.)f(.)g(.)g(.)g(.)g(.)22 b Fb(29)75 2490 y Fd(rl_set_par)o(en)o(_bl)o +(in)o(k_t)o(ime)o(ou)o(t)8 b Fa(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)g(.)h(.)f(.)21 b Fb(37)1012 149 y Fd(rl_set_prom)o(pt)8 b Fa(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)22 -b Fb(34)1012 237 y Fd(rl_set_scre)o(en)o(_si)o(ze)t Fa(.)t(.)6 +b Fb(34)1012 193 y Fd(rl_set_scre)o(en)o(_si)o(ze)t Fa(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f -(.)g(.)g(.)g(.)g(.)g(.)19 b Fb(41)1012 280 y Fd(rl_set_sign)o(al)o(s)8 +(.)g(.)g(.)g(.)g(.)g(.)19 b Fb(41)1012 237 y Fd(rl_set_sign)o(al)o(s)8 b Fa(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.) f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)21 b -Fb(41)1012 324 y Fd(rl_show_cha)o(r)6 b Fa(.)g(.)h(.)f(.)g(.)g(.)g(.)g +Fb(41)1012 280 y Fd(rl_show_cha)o(r)6 b Fa(.)g(.)h(.)f(.)g(.)g(.)g(.)g (.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) -g(.)g(.)h(.)f(.)g(.)g(.)23 b Fb(33)1012 368 y Fd(rl_sort_com)o(pl)o -(eti)o(on)o(_ma)o(tc)o(hes)7 b Fa(.)t(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g -(.)g(.)h(.)f(.)g(.)g(.)g(.)22 b Fb(47)1012 411 y Fd(rl_special_)o(pr)o +g(.)g(.)h(.)f(.)g(.)g(.)23 b Fb(33)1012 324 y Fd(rl_special_)o(pr)o (efi)o(xe)o(s)t Fa(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) -h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)18 b Fb(46)1012 -455 y Fd(rl_startup_)o(ho)o(ok)7 b Fa(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g +h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)18 b Fb(45)1012 +368 y Fd(rl_startup_)o(ho)o(ok)7 b Fa(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g (.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) -g(.)g(.)21 b Fb(26)1012 498 y Fd(rl_stuff_ch)o(ar)8 b +g(.)g(.)21 b Fb(26)1012 411 y Fd(rl_stuff_ch)o(ar)8 b Fa(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)22 -b Fb(35)1012 542 y Fd(rl_terminal)o(_n)o(ame)6 b Fa(.)s(.)g(.)g(.)g(.)h +b Fb(35)1012 455 y Fd(rl_terminal)o(_n)o(ame)6 b Fa(.)s(.)g(.)g(.)g(.)h (.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) -h(.)f(.)g(.)g(.)20 b Fb(25)1012 586 y Fd(rl_tty_set_)o(de)o(fau)o(lt)o +h(.)f(.)g(.)g(.)20 b Fb(25)1012 498 y Fd(rl_tty_set_)o(de)o(fau)o(lt)o (_bi)o(nd)o(ing)o(s)8 b Fa(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g -(.)h(.)f(.)g(.)21 b Fb(36)1012 629 y Fd(rl_tty_unse)o(t_)o(def)o(au)o +(.)h(.)f(.)g(.)21 b Fb(35)1012 542 y Fd(rl_tty_unse)o(t_)o(def)o(au)o (lt_)o(bi)o(ndi)o(ngs)5 b Fa(.)t(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) -g(.)g(.)20 b Fb(36)1012 673 y Fd(rl_unbind_c)o(om)o(man)o(d_)o(in_)o +g(.)g(.)20 b Fb(35)1012 586 y Fd(rl_unbind_c)o(om)o(man)o(d_)o(in_)o (ma)o(p)7 b Fa(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g -(.)g(.)h(.)f(.)23 b Fb(30)1012 717 y Fd(rl_unbind_f)o(un)o(cti)o(on)o +(.)g(.)h(.)f(.)23 b Fb(30)1012 629 y Fd(rl_unbind_f)o(un)o(cti)o(on)o (_in)o(_m)o(ap)9 b Fa(.)s(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g -(.)g(.)g(.)g(.)g(.)23 b Fb(30)1012 760 y Fd(rl_unbind_k)o(ey)8 +(.)g(.)g(.)g(.)g(.)23 b Fb(30)1012 673 y Fd(rl_unbind_k)o(ey)8 b Fa(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)22 -b Fb(30)1012 804 y Fd(rl_unbind_k)o(ey)o(_in)o(_m)o(ap)s +b Fb(30)1012 717 y Fd(rl_unbind_k)o(ey)o(_in)o(_m)o(ap)s Fa(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) -g(.)g(.)g(.)h(.)f(.)g(.)17 b Fb(30)1012 847 y Fd(rl_username)o(_c)o +g(.)g(.)g(.)h(.)f(.)g(.)17 b Fb(30)1012 760 y Fd(rl_username)o(_c)o (omp)o(le)o(tio)o(n_)o(fun)o(cti)o(on)t Fa(.)s(.)7 b(.)f(.)g(.)g(.)g(.) -g(.)h(.)f(.)g(.)18 b Fb(44)1012 891 y Fd(rl_variable)o(_b)o(ind)6 +g(.)h(.)f(.)g(.)18 b Fb(43)1012 804 y Fd(rl_variable)o(_b)o(ind)6 b Fa(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)20 b Fb(37)1012 -935 y Fd(rl_variable)o(_d)o(ump)o(er)t Fa(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f +847 y Fd(rl_variable)o(_d)o(ump)o(er)t Fa(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f (.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.) -19 b Fb(37)1012 978 y Fd(rl_variable)o(_v)o(alu)o(e)6 +19 b Fb(37)1012 891 y Fd(rl_variable)o(_v)o(alu)o(e)6 b Fa(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) -g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)19 b Fb(37)1012 1100 -y Fr(S)1012 1158 y Fd(self-insert)9 b(\(a,)j(b,)g(A,)g(1,)g(!,)g(...)o +g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)19 b Fb(37)1012 1012 +y Fr(S)1012 1070 y Fd(self-insert)9 b(\(a,)j(b,)g(A,)g(1,)g(!,)g(...)o (\))6 b Fa(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20 -b Fb(15)1012 1201 y Fd(set-mark)10 b(\(C-@\))g Fa(.)c(.)g(.)g(.)g(.)g +b Fb(15)1012 1114 y Fd(set-mark)10 b(\(C-@\))g Fa(.)c(.)g(.)g(.)g(.)g (.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) -g(.)h(.)f(.)g(.)g(.)g(.)25 b Fb(18)1012 1245 y(sho)o(w-all-if-am)o +g(.)h(.)f(.)g(.)g(.)g(.)25 b Fb(18)1012 1158 y(sho)o(w-all-if-am)o (biguous)11 b Fa(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f (.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)23 b Fb(7)1012 -1289 y(sho)o(w-all-if-unmo)q(di\014ed)6 b Fa(.)h(.)f(.)g(.)g(.)h(.)f(.) +1201 y(sho)o(w-all-if-unmo)q(di\014ed)6 b Fa(.)h(.)f(.)g(.)g(.)h(.)f(.) g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f -(.)19 b Fb(7)1012 1332 y Fd(start-kbd-m)o(ac)o(ro)9 b(\(C-x)j(\(\))c +(.)19 b Fb(7)1012 1245 y Fd(start-kbd-m)o(ac)o(ro)9 b(\(C-x)j(\(\))c Fa(.)d(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g -(.)g(.)g(.)22 b Fb(18)1012 1453 y Fr(T)1012 1511 y Fd(tab-insert)9 -b(\(M-)1281 1509 y Fk(h)p 1292 1483 74 2 v 1292 1511 -a Fj(T)m(AB)p 1292 1519 V 1364 1509 a Fk(i)1379 1511 +(.)g(.)g(.)22 b Fb(18)1012 1366 y Fr(T)1012 1424 y Fd(tab-insert)9 +b(\(M-)1281 1422 y Fk(h)p 1292 1396 74 2 v 1292 1424 +a Fj(T)m(AB)p 1292 1431 V 1364 1422 a Fk(i)1379 1424 y Fd(\))e Fa(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) -f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)20 b Fb(15)1012 1555 +f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)20 b Fb(15)1012 1467 y Fd(tilde-expan)o(d)10 b(\(M-~\))f Fa(.)s(.)e(.)f(.)g(.)g(.)g(.)g(.)g (.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22 -b Fb(18)1012 1598 y Fd(transpose-c)o(ha)o(rs)9 b(\(C-t\))d +b Fb(18)1012 1511 y Fd(transpose-c)o(ha)o(rs)9 b(\(C-t\))d Fa(.)f(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h -(.)f(.)g(.)g(.)g(.)20 b Fb(15)1012 1642 y Fd(transpose-w)o(or)o(ds)9 +(.)f(.)g(.)g(.)g(.)20 b Fb(15)1012 1555 y Fd(transpose-w)o(or)o(ds)9 b(\(M-t\))d Fa(.)f(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g -(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20 b Fb(15)1012 1768 y -Fr(U)1012 1826 y Fd(undo)12 b(\(C-_)f(or)h(C-x)g(C-u\))c +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20 b Fb(15)1012 1681 y +Fr(U)1012 1739 y Fd(undo)12 b(\(C-_)f(or)h(C-x)g(C-u\))c Fa(.)t(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g -(.)g(.)h(.)f(.)g(.)g(.)21 b Fb(18)1012 1869 y Fd(universal-a)o(rg)o +(.)g(.)h(.)f(.)g(.)g(.)21 b Fb(18)1012 1782 y Fd(universal-a)o(rg)o (ume)o(nt)9 b(\(\))d Fa(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f (.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20 b Fb(17)1012 -1913 y Fd(unix-filena)o(me)o(-ru)o(bo)o(ut)9 b(\(\))c +1826 y Fd(unix-filena)o(me)o(-ru)o(bo)o(ut)9 b(\(\))c Fa(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g -(.)h(.)f(.)18 b Fb(16)1012 1957 y Fd(unix-line-d)o(is)o(car)o(d)10 +(.)h(.)f(.)18 b Fb(16)1012 1870 y Fd(unix-line-d)o(is)o(car)o(d)10 b(\(C-u\))5 b Fa(.)t(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) -g(.)g(.)g(.)g(.)h(.)f(.)18 b Fb(16)1012 2000 y Fd(unix-word-r)o(ub)o +g(.)g(.)g(.)g(.)h(.)f(.)18 b Fb(16)1012 1913 y Fd(unix-word-r)o(ub)o (out)9 b(\(C-w\))d Fa(.)t(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f -(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)19 b Fb(16)1012 2044 +(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)19 b Fb(16)1012 1957 y Fd(upcase-word)9 b(\(M-u\))e Fa(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f (.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)23 -b Fb(15)1012 2170 y Fr(V)1012 2228 y Fd(vi-editing-)o(mo)o(de)9 +b Fb(15)1012 2083 y Fr(V)1012 2141 y Fd(vi-editing-)o(mo)o(de)9 b(\(M-C-j\))c Fa(.)t(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) -g(.)g(.)g(.)g(.)h(.)f(.)18 b Fb(19)1012 2272 y(visible-stats)11 +g(.)g(.)g(.)g(.)h(.)f(.)18 b Fb(19)1012 2184 y(visible-stats)11 b Fa(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h (.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) -24 b Fb(7)1012 2388 y Fr(Y)1012 2446 y Fd(yank)12 b(\(C-y\))5 +24 b Fb(7)1012 2301 y Fr(Y)1012 2359 y Fd(yank)12 b(\(C-y\))5 b Fa(.)t(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19 -b Fb(17)1012 2490 y Fd(yank-last-a)o(rg)9 b(\(M-.)i(or)h(M-_\))c +b Fb(17)1012 2403 y Fd(yank-last-a)o(rg)9 b(\(M-.)i(or)h(M-_\))c Fa(.)f(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 -b Fb(14)1012 2533 y Fd(yank-nth-ar)o(g)10 b(\(M-C-y\))d +b Fb(14)1012 2446 y Fd(yank-nth-ar)o(g)10 b(\(M-C-y\))d Fa(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f -(.)g(.)g(.)g(.)g(.)h(.)20 b Fb(14)1012 2577 y Fd(yank-pop)10 +(.)g(.)g(.)g(.)g(.)h(.)20 b Fb(14)1012 2490 y Fd(yank-pop)10 b(\(M-y\))g Fa(.)c(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25 b Fb(17)p eop end diff --git a/lib/readline/doc/rlman.aux b/lib/readline/doc/rlman.aux index a1b707d08..284b3d852 100644 --- a/lib/readline/doc/rlman.aux +++ b/lib/readline/doc/rlman.aux @@ -89,7 +89,7 @@ @xrdef{Function Naming-pg}{28} @xrdef{Function Naming-snt}{Section@tie 2.4.1} @xrdef{Keymaps-title}{Selecting a Keymap} -@xrdef{Keymaps-pg}{29} +@xrdef{Keymaps-pg}{28} @xrdef{Keymaps-snt}{Section@tie 2.4.2} @xrdef{Binding Keys-title}{Binding Keys} @xrdef{Binding Keys-pg}{29} @@ -101,13 +101,13 @@ @xrdef{Allowing Undoing-pg}{32} @xrdef{Allowing Undoing-snt}{Section@tie 2.4.5} @xrdef{Redisplay-title}{Redisplay} -@xrdef{Redisplay-pg}{33} +@xrdef{Redisplay-pg}{32} @xrdef{Redisplay-snt}{Section@tie 2.4.6} @xrdef{Modifying Text-title}{Modifying Text} @xrdef{Modifying Text-pg}{34} @xrdef{Modifying Text-snt}{Section@tie 2.4.7} @xrdef{Character Input-title}{Character Input} -@xrdef{Character Input-pg}{35} +@xrdef{Character Input-pg}{34} @xrdef{Character Input-snt}{Section@tie 2.4.8} @xrdef{Terminal Management-title}{Terminal Management} @xrdef{Terminal Management-pg}{35} @@ -119,28 +119,28 @@ @xrdef{Miscellaneous Functions-pg}{37} @xrdef{Miscellaneous Functions-snt}{Section@tie 2.4.11} @xrdef{Alternate Interface-title}{Alternate Interface} -@xrdef{Alternate Interface-pg}{38} +@xrdef{Alternate Interface-pg}{37} @xrdef{Alternate Interface-snt}{Section@tie 2.4.12} @xrdef{A Readline Example-title}{A Readline Example} @xrdef{A Readline Example-pg}{38} @xrdef{A Readline Example-snt}{Section@tie 2.4.13} @xrdef{Readline Signal Handling-title}{Readline Signal Handling} -@xrdef{Readline Signal Handling-pg}{40} +@xrdef{Readline Signal Handling-pg}{39} @xrdef{Readline Signal Handling-snt}{Section@tie 2.5} @xrdef{Custom Completers-title}{Custom Completers} -@xrdef{Custom Completers-pg}{42} +@xrdef{Custom Completers-pg}{41} @xrdef{Custom Completers-snt}{Section@tie 2.6} @xrdef{How Completing Works-title}{How Completing Works} -@xrdef{How Completing Works-pg}{42} +@xrdef{How Completing Works-pg}{41} @xrdef{How Completing Works-snt}{Section@tie 2.6.1} @xrdef{Completion Functions-title}{Completion Functions} -@xrdef{Completion Functions-pg}{43} +@xrdef{Completion Functions-pg}{42} @xrdef{Completion Functions-snt}{Section@tie 2.6.2} @xrdef{Completion Variables-title}{Completion Variables} -@xrdef{Completion Variables-pg}{44} +@xrdef{Completion Variables-pg}{43} @xrdef{Completion Variables-snt}{Section@tie 2.6.3} @xrdef{A Short Completion Example-title}{A Short Completion Example} -@xrdef{A Short Completion Example-pg}{48} +@xrdef{A Short Completion Example-pg}{47} @xrdef{A Short Completion Example-snt}{Section@tie 2.6.4} @xrdef{Copying This Manual-title}{Copying This Manual} @xrdef{Copying This Manual-pg}{57} diff --git a/lib/readline/doc/rlman.cp b/lib/readline/doc/rlman.cp index fa1f81563..30f7d9064 100644 --- a/lib/readline/doc/rlman.cp +++ b/lib/readline/doc/rlman.cp @@ -8,5 +8,5 @@ \entry{initialization file, readline}{4}{initialization file, readline} \entry{variables, readline}{5}{variables, readline} \entry{readline, function}{21}{readline, function} -\entry{application-specific completion functions}{42}{application-specific completion functions} +\entry{application-specific completion functions}{41}{application-specific completion functions} \entry{FDL, GNU Free Documentation License}{57}{FDL, GNU Free Documentation License} diff --git a/lib/readline/doc/rlman.cps b/lib/readline/doc/rlman.cps index 9e91a5703..380e3345b 100644 --- a/lib/readline/doc/rlman.cps +++ b/lib/readline/doc/rlman.cps @@ -1,5 +1,5 @@ \initial {A} -\entry {application-specific completion functions}{42} +\entry {application-specific completion functions}{41} \initial {C} \entry {command editing}{1} \initial {E} diff --git a/lib/readline/doc/rlman.fn b/lib/readline/doc/rlman.fn index e28bb7dc2..55b85a64d 100644 --- a/lib/readline/doc/rlman.fn +++ b/lib/readline/doc/rlman.fn @@ -107,7 +107,6 @@ \entry{rl_dispatching}{24}{\code {rl_dispatching}} \entry{rl_erase_empty_line}{24}{\code {rl_erase_empty_line}} \entry{rl_prompt}{25}{\code {rl_prompt}} -\entry{rl_display_prompt}{25}{\code {rl_display_prompt}} \entry{rl_already_prompted}{25}{\code {rl_already_prompted}} \entry{rl_library_version}{25}{\code {rl_library_version}} \entry{rl_readline_version}{25}{\code {rl_readline_version}} @@ -117,7 +116,7 @@ \entry{rl_instream}{25}{\code {rl_instream}} \entry{rl_outstream}{25}{\code {rl_outstream}} \entry{rl_prefer_env_winsize}{25}{\code {rl_prefer_env_winsize}} -\entry{rl_last_func}{26}{\code {rl_last_func}} +\entry{rl_last_func}{25}{\code {rl_last_func}} \entry{rl_startup_hook}{26}{\code {rl_startup_hook}} \entry{rl_pre_input_hook}{26}{\code {rl_pre_input_hook}} \entry{rl_event_hook}{26}{\code {rl_event_hook}} @@ -128,22 +127,22 @@ \entry{rl_executing_keymap}{26}{\code {rl_executing_keymap}} \entry{rl_binding_keymap}{26}{\code {rl_binding_keymap}} \entry{rl_executing_macro}{26}{\code {rl_executing_macro}} -\entry{rl_readline_state}{27}{\code {rl_readline_state}} +\entry{rl_readline_state}{26}{\code {rl_readline_state}} \entry{rl_explicit_arg}{28}{\code {rl_explicit_arg}} \entry{rl_numeric_arg}{28}{\code {rl_numeric_arg}} \entry{rl_editing_mode}{28}{\code {rl_editing_mode}} \entry{rl_add_defun}{28}{\code {rl_add_defun}} -\entry{rl_make_bare_keymap}{29}{\code {rl_make_bare_keymap}} -\entry{rl_copy_keymap}{29}{\code {rl_copy_keymap}} +\entry{rl_make_bare_keymap}{28}{\code {rl_make_bare_keymap}} +\entry{rl_copy_keymap}{28}{\code {rl_copy_keymap}} \entry{rl_make_keymap}{29}{\code {rl_make_keymap}} \entry{rl_discard_keymap}{29}{\code {rl_discard_keymap}} \entry{rl_get_keymap}{29}{\code {rl_get_keymap}} \entry{rl_set_keymap}{29}{\code {rl_set_keymap}} \entry{rl_get_keymap_by_name}{29}{\code {rl_get_keymap_by_name}} \entry{rl_get_keymap_name}{29}{\code {rl_get_keymap_name}} -\entry{rl_bind_key}{30}{\code {rl_bind_key}} -\entry{rl_bind_key_in_map}{30}{\code {rl_bind_key_in_map}} -\entry{rl_bind_key_if_unbound}{30}{\code {rl_bind_key_if_unbound}} +\entry{rl_bind_key}{29}{\code {rl_bind_key}} +\entry{rl_bind_key_in_map}{29}{\code {rl_bind_key_in_map}} +\entry{rl_bind_key_if_unbound}{29}{\code {rl_bind_key_if_unbound}} \entry{rl_bind_key_if_unbound_in_map}{30}{\code {rl_bind_key_if_unbound_in_map}} \entry{rl_unbind_key}{30}{\code {rl_unbind_key}} \entry{rl_unbind_key_in_map}{30}{\code {rl_unbind_key_in_map}} @@ -152,26 +151,26 @@ \entry{rl_bind_keyseq}{30}{\code {rl_bind_keyseq}} \entry{rl_bind_keyseq_in_map}{30}{\code {rl_bind_keyseq_in_map}} \entry{rl_set_key}{30}{\code {rl_set_key}} -\entry{rl_bind_keyseq_if_unbound}{31}{\code {rl_bind_keyseq_if_unbound}} -\entry{rl_bind_keyseq_if_unbound_in_map}{31}{\code {rl_bind_keyseq_if_unbound_in_map}} -\entry{rl_generic_bind}{31}{\code {rl_generic_bind}} +\entry{rl_bind_keyseq_if_unbound}{30}{\code {rl_bind_keyseq_if_unbound}} +\entry{rl_bind_keyseq_if_unbound_in_map}{30}{\code {rl_bind_keyseq_if_unbound_in_map}} +\entry{rl_generic_bind}{30}{\code {rl_generic_bind}} \entry{rl_parse_and_bind}{31}{\code {rl_parse_and_bind}} \entry{rl_read_init_file}{31}{\code {rl_read_init_file}} \entry{rl_named_function}{31}{\code {rl_named_function}} \entry{rl_function_of_keyseq}{31}{\code {rl_function_of_keyseq}} \entry{rl_invoking_keyseqs}{31}{\code {rl_invoking_keyseqs}} \entry{rl_invoking_keyseqs_in_map}{31}{\code {rl_invoking_keyseqs_in_map}} -\entry{rl_function_dumper}{32}{\code {rl_function_dumper}} -\entry{rl_list_funmap_names}{32}{\code {rl_list_funmap_names}} -\entry{rl_funmap_names}{32}{\code {rl_funmap_names}} -\entry{rl_add_funmap_entry}{32}{\code {rl_add_funmap_entry}} +\entry{rl_function_dumper}{31}{\code {rl_function_dumper}} +\entry{rl_list_funmap_names}{31}{\code {rl_list_funmap_names}} +\entry{rl_funmap_names}{31}{\code {rl_funmap_names}} +\entry{rl_add_funmap_entry}{31}{\code {rl_add_funmap_entry}} \entry{rl_begin_undo_group}{32}{\code {rl_begin_undo_group}} \entry{rl_end_undo_group}{32}{\code {rl_end_undo_group}} \entry{rl_add_undo}{32}{\code {rl_add_undo}} \entry{rl_free_undo_list}{32}{\code {rl_free_undo_list}} -\entry{rl_do_undo}{33}{\code {rl_do_undo}} -\entry{rl_modifying}{33}{\code {rl_modifying}} -\entry{rl_redisplay}{33}{\code {rl_redisplay}} +\entry{rl_do_undo}{32}{\code {rl_do_undo}} +\entry{rl_modifying}{32}{\code {rl_modifying}} +\entry{rl_redisplay}{32}{\code {rl_redisplay}} \entry{rl_forced_update_display}{33}{\code {rl_forced_update_display}} \entry{rl_on_new_line}{33}{\code {rl_on_new_line}} \entry{rl_on_new_line_with_prompt}{33}{\code {rl_on_new_line_with_prompt}} @@ -179,28 +178,27 @@ \entry{rl_crlf}{33}{\code {rl_crlf}} \entry{rl_show_char}{33}{\code {rl_show_char}} \entry{rl_message}{33}{\code {rl_message}} -\entry{rl_clear_message}{34}{\code {rl_clear_message}} -\entry{rl_save_prompt}{34}{\code {rl_save_prompt}} -\entry{rl_restore_prompt}{34}{\code {rl_restore_prompt}} +\entry{rl_clear_message}{33}{\code {rl_clear_message}} +\entry{rl_save_prompt}{33}{\code {rl_save_prompt}} +\entry{rl_restore_prompt}{33}{\code {rl_restore_prompt}} \entry{rl_expand_prompt}{34}{\code {rl_expand_prompt}} \entry{rl_set_prompt}{34}{\code {rl_set_prompt}} \entry{rl_insert_text}{34}{\code {rl_insert_text}} \entry{rl_delete_text}{34}{\code {rl_delete_text}} \entry{rl_copy_text}{34}{\code {rl_copy_text}} \entry{rl_kill_text}{34}{\code {rl_kill_text}} -\entry{rl_push_macro_input}{35}{\code {rl_push_macro_input}} -\entry{rl_read_key}{35}{\code {rl_read_key}} -\entry{rl_getc}{35}{\code {rl_getc}} +\entry{rl_push_macro_input}{34}{\code {rl_push_macro_input}} +\entry{rl_read_key}{34}{\code {rl_read_key}} +\entry{rl_getc}{34}{\code {rl_getc}} \entry{rl_stuff_char}{35}{\code {rl_stuff_char}} \entry{rl_execute_next}{35}{\code {rl_execute_next}} \entry{rl_clear_pending_input}{35}{\code {rl_clear_pending_input}} \entry{rl_set_keyboard_input_timeout}{35}{\code {rl_set_keyboard_input_timeout}} \entry{rl_prep_terminal}{35}{\code {rl_prep_terminal}} \entry{rl_deprep_terminal}{35}{\code {rl_deprep_terminal}} -\entry{rl_tty_set_default_bindings}{36}{\code {rl_tty_set_default_bindings}} -\entry{rl_tty_unset_default_bindings}{36}{\code {rl_tty_unset_default_bindings}} -\entry{rl_reset_terminal}{36}{\code {rl_reset_terminal}} -\entry{rl_free}{36}{\code {rl_free}} +\entry{rl_tty_set_default_bindings}{35}{\code {rl_tty_set_default_bindings}} +\entry{rl_tty_unset_default_bindings}{35}{\code {rl_tty_unset_default_bindings}} +\entry{rl_reset_terminal}{35}{\code {rl_reset_terminal}} \entry{rl_replace_line}{36}{\code {rl_replace_line}} \entry{rl_extend_line_buffer}{36}{\code {rl_extend_line_buffer}} \entry{rl_initialize}{36}{\code {rl_initialize}} @@ -208,11 +206,11 @@ \entry{rl_alphabetic}{36}{\code {rl_alphabetic}} \entry{rl_display_match_list}{36}{\code {rl_display_match_list}} \entry{_rl_uppercase_p}{36}{\code {_rl_uppercase_p}} -\entry{_rl_lowercase_p}{37}{\code {_rl_lowercase_p}} -\entry{_rl_digit_p}{37}{\code {_rl_digit_p}} -\entry{_rl_to_upper}{37}{\code {_rl_to_upper}} -\entry{_rl_to_lower}{37}{\code {_rl_to_lower}} -\entry{_rl_digit_value}{37}{\code {_rl_digit_value}} +\entry{_rl_lowercase_p}{36}{\code {_rl_lowercase_p}} +\entry{_rl_digit_p}{36}{\code {_rl_digit_p}} +\entry{_rl_to_upper}{36}{\code {_rl_to_upper}} +\entry{_rl_to_lower}{36}{\code {_rl_to_lower}} +\entry{_rl_digit_value}{36}{\code {_rl_digit_value}} \entry{rl_macro_bind}{37}{\code {rl_macro_bind}} \entry{rl_macro_dumper}{37}{\code {rl_macro_dumper}} \entry{rl_variable_bind}{37}{\code {rl_variable_bind}} @@ -220,13 +218,13 @@ \entry{rl_variable_dumper}{37}{\code {rl_variable_dumper}} \entry{rl_set_paren_blink_timeout}{37}{\code {rl_set_paren_blink_timeout}} \entry{rl_get_termcap}{37}{\code {rl_get_termcap}} -\entry{rl_callback_handler_install}{38}{\code {rl_callback_handler_install}} +\entry{rl_callback_handler_install}{37}{\code {rl_callback_handler_install}} \entry{rl_callback_read_char}{38}{\code {rl_callback_read_char}} \entry{rl_callback_handler_remove}{38}{\code {rl_callback_handler_remove}} \entry{rl_catch_signals}{40}{\code {rl_catch_signals}} \entry{rl_catch_sigwinch}{40}{\code {rl_catch_sigwinch}} -\entry{rl_cleanup_after_signal}{41}{\code {rl_cleanup_after_signal}} -\entry{rl_free_line_state}{41}{\code {rl_free_line_state}} +\entry{rl_cleanup_after_signal}{40}{\code {rl_cleanup_after_signal}} +\entry{rl_free_line_state}{40}{\code {rl_free_line_state}} \entry{rl_reset_after_signal}{41}{\code {rl_reset_after_signal}} \entry{rl_resize_terminal}{41}{\code {rl_resize_terminal}} \entry{rl_set_screen_size}{41}{\code {rl_set_screen_size}} @@ -236,41 +234,39 @@ \entry{rl_clear_signals}{41}{\code {rl_clear_signals}} \entry{rl_complete}{42}{\code {rl_complete}} \entry{rl_completion_entry_function}{42}{\code {rl_completion_entry_function}} -\entry{rl_complete_internal}{43}{\code {rl_complete_internal}} +\entry{rl_complete_internal}{42}{\code {rl_complete_internal}} \entry{rl_complete}{43}{\code {rl_complete}} \entry{rl_possible_completions}{43}{\code {rl_possible_completions}} \entry{rl_insert_completions}{43}{\code {rl_insert_completions}} \entry{rl_completion_mode}{43}{\code {rl_completion_mode}} \entry{rl_completion_matches}{43}{\code {rl_completion_matches}} -\entry{rl_filename_completion_function}{44}{\code {rl_filename_completion_function}} -\entry{rl_username_completion_function}{44}{\code {rl_username_completion_function}} -\entry{rl_completion_entry_function}{44}{\code {rl_completion_entry_function}} +\entry{rl_filename_completion_function}{43}{\code {rl_filename_completion_function}} +\entry{rl_username_completion_function}{43}{\code {rl_username_completion_function}} +\entry{rl_completion_entry_function}{43}{\code {rl_completion_entry_function}} \entry{rl_attempted_completion_function}{44}{\code {rl_attempted_completion_function}} \entry{rl_filename_quoting_function}{44}{\code {rl_filename_quoting_function}} \entry{rl_filename_dequoting_function}{44}{\code {rl_filename_dequoting_function}} \entry{rl_char_is_quoted_p}{44}{\code {rl_char_is_quoted_p}} -\entry{rl_ignore_some_completions_function}{45}{\code {rl_ignore_some_completions_function}} -\entry{rl_directory_completion_hook}{45}{\code {rl_directory_completion_hook}} +\entry{rl_ignore_some_completions_function}{44}{\code {rl_ignore_some_completions_function}} +\entry{rl_directory_completion_hook}{44}{\code {rl_directory_completion_hook}} \entry{rl_completion_display_matches_hook}{45}{\code {rl_completion_display_matches_hook}} \entry{rl_basic_word_break_characters}{45}{\code {rl_basic_word_break_characters}} \entry{rl_basic_quote_characters}{45}{\code {rl_basic_quote_characters}} \entry{rl_completer_word_break_characters}{45}{\code {rl_completer_word_break_characters}} \entry{rl_completion_word_break_hook}{45}{\code {rl_completion_word_break_hook}} -\entry{rl_completer_quote_characters}{46}{\code {rl_completer_quote_characters}} -\entry{rl_filename_quote_characters}{46}{\code {rl_filename_quote_characters}} -\entry{rl_special_prefixes}{46}{\code {rl_special_prefixes}} +\entry{rl_completer_quote_characters}{45}{\code {rl_completer_quote_characters}} +\entry{rl_filename_quote_characters}{45}{\code {rl_filename_quote_characters}} +\entry{rl_special_prefixes}{45}{\code {rl_special_prefixes}} \entry{rl_completion_query_items}{46}{\code {rl_completion_query_items}} \entry{rl_completion_append_character}{46}{\code {rl_completion_append_character}} \entry{rl_completion_suppress_append}{46}{\code {rl_completion_suppress_append}} \entry{rl_completion_quote_character}{46}{\code {rl_completion_quote_character}} \entry{rl_completion_suppress_quote}{46}{\code {rl_completion_suppress_quote}} \entry{rl_completion_found_quote}{46}{\code {rl_completion_found_quote}} -\entry{rl_completion_mark_symlink_dirs}{47}{\code {rl_completion_mark_symlink_dirs}} -\entry{rl_ignore_completion_duplicates}{47}{\code {rl_ignore_completion_duplicates}} -\entry{rl_filename_completion_desired}{47}{\code {rl_filename_completion_desired}} +\entry{rl_completion_mark_symlink_dirs}{46}{\code {rl_completion_mark_symlink_dirs}} +\entry{rl_ignore_completion_duplicates}{46}{\code {rl_ignore_completion_duplicates}} +\entry{rl_filename_completion_desired}{46}{\code {rl_filename_completion_desired}} \entry{rl_filename_quoting_desired}{47}{\code {rl_filename_quoting_desired}} \entry{rl_attempted_completion_over}{47}{\code {rl_attempted_completion_over}} -\entry{rl_sort_completion_matches}{47}{\code {rl_sort_completion_matches}} \entry{rl_completion_type}{47}{\code {rl_completion_type}} -\entry{rl_completion_invoking_key}{47}{\code {rl_completion_invoking_key}} -\entry{rl_inhibit_completion}{48}{\code {rl_inhibit_completion}} +\entry{rl_inhibit_completion}{47}{\code {rl_inhibit_completion}} diff --git a/lib/readline/doc/rlman.fns b/lib/readline/doc/rlman.fns index 7db490212..f48c5ce4c 100644 --- a/lib/readline/doc/rlman.fns +++ b/lib/readline/doc/rlman.fns @@ -1,9 +1,9 @@ \initial {_} -\entry {\code {_rl_digit_p}}{37} -\entry {\code {_rl_digit_value}}{37} -\entry {\code {_rl_lowercase_p}}{37} -\entry {\code {_rl_to_lower}}{37} -\entry {\code {_rl_to_upper}}{37} +\entry {\code {_rl_digit_p}}{36} +\entry {\code {_rl_digit_value}}{36} +\entry {\code {_rl_lowercase_p}}{36} +\entry {\code {_rl_to_lower}}{36} +\entry {\code {_rl_to_upper}}{36} \entry {\code {_rl_uppercase_p}}{36} \initial {A} \entry {\code {abort (C-g)}}{18} @@ -99,7 +99,7 @@ \entry {\code {reverse-search-history (C-r)}}{14} \entry {\code {revert-line (M-r)}}{18} \entry {\code {rl_add_defun}}{28} -\entry {\code {rl_add_funmap_entry}}{32} +\entry {\code {rl_add_funmap_entry}}{31} \entry {\code {rl_add_undo}}{32} \entry {\code {rl_alphabetic}}{36} \entry {\code {rl_already_prompted}}{25} @@ -108,35 +108,34 @@ \entry {\code {rl_basic_quote_characters}}{45} \entry {\code {rl_basic_word_break_characters}}{45} \entry {\code {rl_begin_undo_group}}{32} -\entry {\code {rl_bind_key}}{30} -\entry {\code {rl_bind_key_if_unbound}}{30} +\entry {\code {rl_bind_key}}{29} +\entry {\code {rl_bind_key_if_unbound}}{29} \entry {\code {rl_bind_key_if_unbound_in_map}}{30} -\entry {\code {rl_bind_key_in_map}}{30} +\entry {\code {rl_bind_key_in_map}}{29} \entry {\code {rl_bind_keyseq}}{30} -\entry {\code {rl_bind_keyseq_if_unbound}}{31} -\entry {\code {rl_bind_keyseq_if_unbound_in_map}}{31} +\entry {\code {rl_bind_keyseq_if_unbound}}{30} +\entry {\code {rl_bind_keyseq_if_unbound_in_map}}{30} \entry {\code {rl_bind_keyseq_in_map}}{30} \entry {\code {rl_binding_keymap}}{26} -\entry {\code {rl_callback_handler_install}}{38} +\entry {\code {rl_callback_handler_install}}{37} \entry {\code {rl_callback_handler_remove}}{38} \entry {\code {rl_callback_read_char}}{38} \entry {\code {rl_catch_signals}}{40} \entry {\code {rl_catch_sigwinch}}{40} \entry {\code {rl_char_is_quoted_p}}{44} -\entry {\code {rl_cleanup_after_signal}}{41} -\entry {\code {rl_clear_message}}{34} +\entry {\code {rl_cleanup_after_signal}}{40} +\entry {\code {rl_clear_message}}{33} \entry {\code {rl_clear_pending_input}}{35} \entry {\code {rl_clear_signals}}{41} \entry {\code {rl_complete}}{42, 43} -\entry {\code {rl_complete_internal}}{43} -\entry {\code {rl_completer_quote_characters}}{46} +\entry {\code {rl_complete_internal}}{42} +\entry {\code {rl_completer_quote_characters}}{45} \entry {\code {rl_completer_word_break_characters}}{45} \entry {\code {rl_completion_append_character}}{46} \entry {\code {rl_completion_display_matches_hook}}{45} -\entry {\code {rl_completion_entry_function}}{42, 44} +\entry {\code {rl_completion_entry_function}}{42, 43} \entry {\code {rl_completion_found_quote}}{46} -\entry {\code {rl_completion_invoking_key}}{47} -\entry {\code {rl_completion_mark_symlink_dirs}}{47} +\entry {\code {rl_completion_mark_symlink_dirs}}{46} \entry {\code {rl_completion_matches}}{43} \entry {\code {rl_completion_mode}}{43} \entry {\code {rl_completion_query_items}}{46} @@ -145,19 +144,18 @@ \entry {\code {rl_completion_suppress_quote}}{46} \entry {\code {rl_completion_type}}{47} \entry {\code {rl_completion_word_break_hook}}{45} -\entry {\code {rl_copy_keymap}}{29} +\entry {\code {rl_copy_keymap}}{28} \entry {\code {rl_copy_text}}{34} \entry {\code {rl_crlf}}{33} \entry {\code {rl_delete_text}}{34} \entry {\code {rl_deprep_term_function}}{26} \entry {\code {rl_deprep_terminal}}{35} \entry {\code {rl_ding}}{36} -\entry {\code {rl_directory_completion_hook}}{45} +\entry {\code {rl_directory_completion_hook}}{44} \entry {\code {rl_discard_keymap}}{29} \entry {\code {rl_dispatching}}{24} \entry {\code {rl_display_match_list}}{36} -\entry {\code {rl_display_prompt}}{25} -\entry {\code {rl_do_undo}}{33} +\entry {\code {rl_do_undo}}{32} \entry {\code {rl_done}}{24} \entry {\code {rl_editing_mode}}{28} \entry {\code {rl_end}}{24} @@ -170,31 +168,30 @@ \entry {\code {rl_expand_prompt}}{34} \entry {\code {rl_explicit_arg}}{28} \entry {\code {rl_extend_line_buffer}}{36} -\entry {\code {rl_filename_completion_desired}}{47} -\entry {\code {rl_filename_completion_function}}{44} +\entry {\code {rl_filename_completion_desired}}{46} +\entry {\code {rl_filename_completion_function}}{43} \entry {\code {rl_filename_dequoting_function}}{44} -\entry {\code {rl_filename_quote_characters}}{46} +\entry {\code {rl_filename_quote_characters}}{45} \entry {\code {rl_filename_quoting_desired}}{47} \entry {\code {rl_filename_quoting_function}}{44} \entry {\code {rl_forced_update_display}}{33} -\entry {\code {rl_free}}{36} -\entry {\code {rl_free_line_state}}{41} +\entry {\code {rl_free_line_state}}{40} \entry {\code {rl_free_undo_list}}{32} -\entry {\code {rl_function_dumper}}{32} +\entry {\code {rl_function_dumper}}{31} \entry {\code {rl_function_of_keyseq}}{31} -\entry {\code {rl_funmap_names}}{32} -\entry {\code {rl_generic_bind}}{31} +\entry {\code {rl_funmap_names}}{31} +\entry {\code {rl_generic_bind}}{30} \entry {\code {rl_get_keymap}}{29} \entry {\code {rl_get_keymap_by_name}}{29} \entry {\code {rl_get_keymap_name}}{29} \entry {\code {rl_get_screen_size}}{41} \entry {\code {rl_get_termcap}}{37} -\entry {\code {rl_getc}}{35} +\entry {\code {rl_getc}}{34} \entry {\code {rl_getc_function}}{26} \entry {\code {rl_gnu_readline_p}}{25} -\entry {\code {rl_ignore_completion_duplicates}}{47} -\entry {\code {rl_ignore_some_completions_function}}{45} -\entry {\code {rl_inhibit_completion}}{48} +\entry {\code {rl_ignore_completion_duplicates}}{46} +\entry {\code {rl_ignore_some_completions_function}}{44} +\entry {\code {rl_inhibit_completion}}{47} \entry {\code {rl_initialize}}{36} \entry {\code {rl_insert_completions}}{43} \entry {\code {rl_insert_text}}{34} @@ -202,17 +199,17 @@ \entry {\code {rl_invoking_keyseqs}}{31} \entry {\code {rl_invoking_keyseqs_in_map}}{31} \entry {\code {rl_kill_text}}{34} -\entry {\code {rl_last_func}}{26} +\entry {\code {rl_last_func}}{25} \entry {\code {rl_library_version}}{25} \entry {\code {rl_line_buffer}}{24} -\entry {\code {rl_list_funmap_names}}{32} +\entry {\code {rl_list_funmap_names}}{31} \entry {\code {rl_macro_bind}}{37} \entry {\code {rl_macro_dumper}}{37} -\entry {\code {rl_make_bare_keymap}}{29} +\entry {\code {rl_make_bare_keymap}}{28} \entry {\code {rl_make_keymap}}{29} \entry {\code {rl_mark}}{24} \entry {\code {rl_message}}{33} -\entry {\code {rl_modifying}}{33} +\entry {\code {rl_modifying}}{32} \entry {\code {rl_named_function}}{31} \entry {\code {rl_num_chars_to_read}}{24} \entry {\code {rl_numeric_arg}}{28} @@ -228,22 +225,22 @@ \entry {\code {rl_prep_term_function}}{26} \entry {\code {rl_prep_terminal}}{35} \entry {\code {rl_prompt}}{25} -\entry {\code {rl_push_macro_input}}{35} +\entry {\code {rl_push_macro_input}}{34} \entry {\code {rl_read_init_file}}{31} -\entry {\code {rl_read_key}}{35} +\entry {\code {rl_read_key}}{34} \entry {\code {rl_readline_name}}{25} -\entry {\code {rl_readline_state}}{27} +\entry {\code {rl_readline_state}}{26} \entry {\code {rl_readline_version}}{25} -\entry {\code {rl_redisplay}}{33} +\entry {\code {rl_redisplay}}{32} \entry {\code {rl_redisplay_function}}{26} \entry {\code {rl_replace_line}}{36} \entry {\code {rl_reset_after_signal}}{41} \entry {\code {rl_reset_line_state}}{33} \entry {\code {rl_reset_screen_size}}{41} -\entry {\code {rl_reset_terminal}}{36} +\entry {\code {rl_reset_terminal}}{35} \entry {\code {rl_resize_terminal}}{41} -\entry {\code {rl_restore_prompt}}{34} -\entry {\code {rl_save_prompt}}{34} +\entry {\code {rl_restore_prompt}}{33} +\entry {\code {rl_save_prompt}}{33} \entry {\code {rl_set_key}}{30} \entry {\code {rl_set_keyboard_input_timeout}}{35} \entry {\code {rl_set_keymap}}{29} @@ -252,18 +249,17 @@ \entry {\code {rl_set_screen_size}}{41} \entry {\code {rl_set_signals}}{41} \entry {\code {rl_show_char}}{33} -\entry {\code {rl_sort_completion_matches}}{47} -\entry {\code {rl_special_prefixes}}{46} +\entry {\code {rl_special_prefixes}}{45} \entry {\code {rl_startup_hook}}{26} \entry {\code {rl_stuff_char}}{35} \entry {\code {rl_terminal_name}}{25} -\entry {\code {rl_tty_set_default_bindings}}{36} -\entry {\code {rl_tty_unset_default_bindings}}{36} +\entry {\code {rl_tty_set_default_bindings}}{35} +\entry {\code {rl_tty_unset_default_bindings}}{35} \entry {\code {rl_unbind_command_in_map}}{30} \entry {\code {rl_unbind_function_in_map}}{30} \entry {\code {rl_unbind_key}}{30} \entry {\code {rl_unbind_key_in_map}}{30} -\entry {\code {rl_username_completion_function}}{44} +\entry {\code {rl_username_completion_function}}{43} \entry {\code {rl_variable_bind}}{37} \entry {\code {rl_variable_dumper}}{37} \entry {\code {rl_variable_value}}{37} diff --git a/lib/readline/doc/rlman.log b/lib/readline/doc/rlman.log index 99852cdc4..4a3c6290a 100644 --- a/lib/readline/doc/rlman.log +++ b/lib/readline/doc/rlman.log @@ -1,4 +1,4 @@ -This is TeX, Version 3.141592 (Web2C 7.5.4) (format=tex 2006.11.28) 27 FEB 2007 09:16 +This is TeX, Version 3.14159 (Web2C 7.4.5) (format=tex 2005.3.22) 9 FEB 2006 09:50 **/usr/homes/chet/src/bash/src/lib/readline/doc/rlman.texi (/usr/homes/chet/src/bash/src/lib/readline/doc/rlman.texi (./texinfo.tex Loading texinfo [version 2003-02-03.16]: Basics, @@ -106,7 +106,7 @@ cross references, \auxfile=\write2 \savesfregister=\count46 \footnoteno=\count47 - (/sw/share/texmf-dist/tex/generic/epsf/epsf.tex + (/sw/share/texmf/tex/generic/misc/epsf.tex \epsffilein=\read0 \epsfframemargin=\dimen39 \epsfframethickness=\dimen40 @@ -119,19 +119,18 @@ cross references, \epsfnoopenhelp=\toks24 ) \noepsfhelp=\toks25 - -localization, + localization, \nolanghelp=\toks26 \defaultparindent=\dimen47 - and turning on texinfo input format.) (./rlman.aux) + +and turning on texinfo input format.) (./rlman.aux) @cpindfile=@write3 @fnindfile=@write4 @vrindfile=@write5 @tpindfile=@write6 @kyindfile=@write7 @pgindfile=@write8 - -(./version.texi) [1 + (./version.texi) [1 \openout2 = `rlman.aux'. \openout3 = `rlman.cp'. @@ -146,17 +145,17 @@ localization, \openout8 = `rlman.pg'. -] [2] (./rlman.toc [-1]) [-2] (./rluser.texi +] +[2] (./rlman.toc [-1]) [-2] (./rluser.texi @btindfile=@write9 Chapter 1 \openout0 = `rlman.toc'. - -[1 + [1 \openout9 = `rlman.bt'. ] [2] [3] [4] [5] -Underfull \hbox (badness 5231) in paragraph at lines 503--519 +Underfull \hbox (badness 5231) in paragraph at lines 502--518 @texttt emacs-meta[]@textrm , @texttt emacs-ctlx[]@textrm , @texttt vi[]@textr m , @texttt vi-move[]@textrm , @texttt vi-command[]@textrm , and @@ -169,7 +168,7 @@ m , @texttt vi-move[]@textrm , @texttt vi-command[]@textrm , and .etc. [6] [7] [8] [9] [10] -Overfull \hbox (26.43913pt too wide) in paragraph at lines 818--818 +Overfull \hbox (26.43913pt too wide) in paragraph at lines 815--815 []@texttt Meta-Control-h: backward-kill-word Text after the function name is i gnored[] | @@ -184,7 +183,7 @@ gnored[] | [11] [12] [13] [14] [15] [16] [17] [18]) (./rltech.texi Chapter 2 [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] -Underfull \hbox (badness 7379) in paragraph at lines 1835--1840 +Underfull \hbox (badness 7379) in paragraph at lines 1823--1828 []@textrm If an application-specific com-ple-tion func-tion as-signed to @text tt rl_attempted_ @@ -196,16 +195,16 @@ tt rl_attempted_ .@glue 3.65 plus 1.825 minus 1.21666 .etc. -[47] [48] [49] [50] [51] [52] [53] [54] [55]) Appendix A [56] (./fdl.texi +[47] [48] [49] [50] [51] [52] [53] [54]) Appendix A [55] [56] (./fdl.texi [57] [58] [59] [60] [61] [62]) (Concept Index) [63] [64] (./rlman.cps) (Function and Variable Index) [65] [66] (./rlman.fns [67] [68]) [69] [70] ) Here is how much of TeX's memory you used: - 1499 strings out of 97980 - 18501 string characters out of 1221004 - 60795 words of memory out of 1000000 + 1499 strings out of 98002 + 18486 string characters out of 1221987 + 59430 words of memory out of 1000001 2361 multiletter control sequences out of 10000+50000 - 31953 words of font info for 111 fonts, out of 500000 for 2000 + 31953 words of font info for 111 fonts, out of 500000 for 1000 19 hyphenation exceptions out of 1000 15i,8n,17p,281b,695s stack positions out of 1500i,500n,5000p,200000b,5000s -Output written on rlman.dvi (74 pages, 286376 bytes). +Output written on rlman.dvi (74 pages, 278124 bytes). diff --git a/lib/readline/doc/rlman.texi b/lib/readline/doc/rlman.texi index e14c655f7..f834b5826 100644 --- a/lib/readline/doc/rlman.texi +++ b/lib/readline/doc/rlman.texi @@ -14,7 +14,7 @@ This manual describes the GNU Readline Library consistency of user interface across discrete programs which provide a command line interface. -Copyright @copyright{} 1988-2006 Free Software Foundation, Inc. +Copyright @copyright{} 1988-2004 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -22,7 +22,7 @@ are preserved on all copies. @quotation Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.2 or +under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with the Front-Cover texts being ``A GNU Manual,'' and with the Back-Cover Texts as in (a) below. A copy of the license is diff --git a/lib/readline/doc/rlman.toc b/lib/readline/doc/rlman.toc index 9d31074a6..0dc63018c 100644 --- a/lib/readline/doc/rlman.toc +++ b/lib/readline/doc/rlman.toc @@ -31,21 +31,21 @@ \subsecentry{Selecting a Keymap}{2}{4}{2}{28} \subsecentry{Binding Keys}{2}{4}{3}{29} \subsecentry{Associating Function Names and Bindings}{2}{4}{4}{31} -\subsecentry{Allowing Undoing}{2}{4}{5}{32} -\subsecentry{Redisplay}{2}{4}{6}{33} +\subsecentry{Allowing Undoing}{2}{4}{5}{31} +\subsecentry{Redisplay}{2}{4}{6}{32} \subsecentry{Modifying Text}{2}{4}{7}{34} -\subsecentry{Character Input}{2}{4}{8}{35} +\subsecentry{Character Input}{2}{4}{8}{34} \subsecentry{Terminal Management}{2}{4}{9}{35} -\subsecentry{Utility Functions}{2}{4}{10}{36} -\subsecentry{Miscellaneous Functions}{2}{4}{11}{37} -\subsecentry{Alternate Interface}{2}{4}{12}{38} +\subsecentry{Utility Functions}{2}{4}{10}{35} +\subsecentry{Miscellaneous Functions}{2}{4}{11}{36} +\subsecentry{Alternate Interface}{2}{4}{12}{37} \subsecentry{A Readline Example}{2}{4}{13}{38} -\secentry{Readline Signal Handling}{2}{5}{40} +\secentry{Readline Signal Handling}{2}{5}{39} \secentry{Custom Completers}{2}{6}{41} -\subsecentry{How Completing Works}{2}{6}{1}{42} -\subsecentry{Completion Functions}{2}{6}{2}{43} -\subsecentry{Completion Variables}{2}{6}{3}{44} -\subsecentry{A Short Completion Example}{2}{6}{4}{48} +\subsecentry{How Completing Works}{2}{6}{1}{41} +\subsecentry{Completion Functions}{2}{6}{2}{42} +\subsecentry{Completion Variables}{2}{6}{3}{43} +\subsecentry{A Short Completion Example}{2}{6}{4}{47} \appendixentry{Copying This Manual}{A}{57} \secentry{GNU Free Documentation License}{A}{1}{57} \subsecentry{ADDENDUM: How to use this License for your documents}{A}{1}{1}{63} diff --git a/lib/readline/doc/rltech.texi b/lib/readline/doc/rltech.texi index 0dce841c7..1e96b1138 100644 --- a/lib/readline/doc/rltech.texi +++ b/lib/readline/doc/rltech.texi @@ -8,7 +8,7 @@ This document describes the GNU Readline Library, a utility for aiding in the consistency of user interface across discrete programs that need to provide a command line interface. -Copyright (C) 1988-2006 Free Software Foundation, Inc. +Copyright (C) 1988-2005 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -351,12 +351,6 @@ The @code{rl_set_prompt()} function (@pxref{Redisplay}) may be used to modify the prompt string after calling @code{readline()}. @end deftypevar -@deftypevar {char *} rl_display_prompt -The string displayed as the prompt. This is usually identical to -@var{rl_prompt}, but may be changed temporarily by functions that -use the prompt string as a message area, such as incremental search. -@end deftypevar - @deftypevar int rl_already_prompted If an application wishes to display the prompt itself, rather than have Readline do it the first time @code{readline()} is called, it should set @@ -799,8 +793,7 @@ Print the names of all bindable Readline functions to @code{rl_outstream}. @deftypefun {const char **} rl_funmap_names (void) Return a NULL terminated array of known function names. The array is sorted. The array itself is allocated, but not the strings inside. You -should free the array, but not the pointers, using @code{free} or -@code{rl_free} when you are done. +should @code{free()} the array when you are done, but not the pointers. @end deftypefun @deftypefun int rl_add_funmap_entry (const char *name, rl_command_func_t *function) @@ -1084,11 +1077,6 @@ environment variable is used. @node Utility Functions @subsection Utility Functions -@deftypefun void rl_free (void *mem) -Deallocate the memory pointed to by @var{mem}. @var{mem} must have been -allocated by @code{malloc}. -@end deftypefun - @deftypefun void rl_replace_line (const char *text, int clear_undo) Replace the contents of @code{rl_line_buffer} with @var{text}. The point and mark are preserved, if possible. @@ -1839,15 +1827,6 @@ if the application's completion function returns no matches. It should be set only by an application's completion function. @end deftypevar -@deftypevar int rl_sort_completion_matches -If an application sets this variable to 0, Readline will not sort the -list of completions (which implies that it cannot remove any duplicate -completions). The default value is 1, which means that Readline will -sort the completions and, depending on the value of -@code{rl_ignore_completion_duplicates}, will attempt to remove duplicate -matches. -@end deftypevar - @deftypevar int rl_completion_type Set to a character describing the type of completion Readline is currently attempting; see the description of @code{rl_complete_internal()} @@ -1857,13 +1836,6 @@ completion function is called, allowing such functions to present the same interface as @code{rl_complete()}. @end deftypevar -@deftypevar int rl_completion_invoking_key -Set to the final character in the key sequence that invoked one of the -completion functions that call @code{rl_complete_internal()}. This is -set to the appropriate value before any application-specific completion -function is called. -@end deftypevar - @deftypevar int rl_inhibit_completion If this variable is non-zero, completion is inhibited. The completion character will be inserted as any other bound to @code{self-insert}. diff --git a/lib/readline/doc/rluser.texi b/lib/readline/doc/rluser.texi index 0175fa740..2a180b9ad 100644 --- a/lib/readline/doc/rluser.texi +++ b/lib/readline/doc/rluser.texi @@ -471,8 +471,7 @@ attempts word completion. The default is @samp{off}. @item history-preserve-point @vindex history-preserve-point -If set to @samp{on}, the history code attempts to place the point (the -current cursor position) at the +If set to @samp{on}, the history code attempts to place point at the same location on each history line retrieved with @code{previous-history} or @code{next-history}. The default is @samp{off}. @@ -596,11 +595,9 @@ the command does. Once you know the name of the command, simply place on a line in the init file the name of the key you wish to bind the command to, a colon, and then the name of the -command. -There can be no space between the key name and the colon -- that will be -interpreted as part of the key name. -The name of the key can be expressed in different ways, depending on -what you find most comfortable. +command. The name of the key +can be expressed in different ways, depending on what you find most +comfortable. In addition to command names, readline allows keys to be bound to a string that is inserted when the key is pressed (a @var{macro}). @@ -1560,9 +1557,9 @@ completed, and the matching words become the possible completions. After these matches have been generated, any shell function or command specified with the @option{-F} and @option{-C} options is invoked. -When the command or function is invoked, the @env{COMP_LINE}, -@env{COMP_POINT}, @env{COMP_KEY}, and @env{COMP_TYPE} variables are -assigned values as described above (@pxref{Bash Variables}). +When the command or function is invoked, the @env{COMP_LINE} and +@env{COMP_POINT} variables are assigned values as described above +(@pxref{Bash Variables}). If a shell function is being invoked, the @env{COMP_WORDS} and @env{COMP_CWORD} variables are also set. When the function or command is invoked, the first argument is the @@ -1663,8 +1660,8 @@ matches were generated. @btindex complete @example @code{complete [-abcdefgjksuv] [-o @var{comp-option}] [-A @var{action}] [-G @var{globpat}] [-W @var{wordlist}] -[-F @var{function}] [-C @var{command}] [-X @var{filterpat}] -[-P @var{prefix}] [-S @var{suffix}] @var{name} [@var{name} @dots{}]} +[-P @var{prefix}] [-S @var{suffix}] [-X @var{filterpat}] [-F @var{function}] +[-C @var{command}] @var{name} [@var{name} @dots{}]} @code{complete -pr [@var{name} @dots{}]} @end example diff --git a/lib/readline/doc/rluserman.dvi b/lib/readline/doc/rluserman.dvi index 1fd47736eaf66c5a069f75d870323856fc068613..15fb3ba4c5912000d9bfc9fdf25d22e74b425a5a 100644 GIT binary patch delta 25200 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 Shb~vyMXckdO4o - +

  • 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 z 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